专业的社区

随机测试如何工作

  • 最近更新时间:2022年4月6日

  • 阅读时间:8分钟

Burp Sequencer采用标准统计测试进行随机性。这些是基于对证据样本检验假设的原理,并计算出观察到的数据的概率,假设该假设是正确的:

  • 假设要测试的是:代币是随机生成的。
  • 每个测试观察样品的特定特性,如果代币是随机生成的,则可能具有某些特征。
  • 可能性计算出观察到的特征的假设是真实的。
  • 如果此概率低于一定级别(“显着性水平”)然后,假设被拒绝,代币被认为是非随机的。

显着性水平是该方法中的关键参数。使用较低的显着性水平意味着需要更强有力的证据来拒绝代币是随机生成的假设,因此增加了将非随机数据视为随机的机会。对于任何特定目的,都没有普遍的“正确”显着性水平:科学实验通常在1%至5%的区域中使用显着性水平;标准FIPS测试的随机性(在Burp Sequencer中实现)在0.002%至0.03%的区域中使用显着性水平。Burp Sequencer让您选择要用来解释其发现的重要性水平:

  • 假设该假设是正确的,每个单独的测试都报告了观察到的数据的计算概率。这种概率代表了仅基于该测试而拒绝假设的边界意义水平。
  • 以各种显着性水平的有效熵的数量表示,来自多个测试的汇总结果范围从0.001%到10%。该摘要使您能够查看您对显着性水平的选择如何影响样本中被认为存在的随机性的“数量”。在典型情况下,该摘要表明,显着性水平的选择是一个有争议的点,因为对于您可以合理选择的任何显着性水平,代币具有明显令人满意或明显不满意的随机性。

任何基于统计的随机性测试都会出现一些重要的警告。由于以下原因,结果可能包含虚假负面因素和积极因素:

  • 通过统计检验,以完全确定性的方式生成的数据可以被视为随机。例如,设计良好的线性一致伪随机数生成器或计算顺序数字哈希的算法,即使知道发电机内部状态的攻击者可以用完整的输出来推断其输出,也可能会产生看似随机的输出向前和反向的可靠性。
  • 在实际情况下,通过基于统计的测试被认为是非随机的数据可能无法预测测试。

由于这些注意事项,使用Burp Sequencer的结果应仅作为对采样数据随机性的指示指南。

Burp Sequencer进行的测试分为两个分析级别:角色级别位级

角色级分析

字符级测试在令牌的每个角色位置上以其原始形式进行。首先,计数每个位置的字符集的大小 - 这是示例数据中每个位置出现的不同字符的数量。然后,使用以下信息进行以下测试:

  • 角色计数分析。该测试分析了令牌内每个位置使用的字符的分布。如果样品是随机生成的,则使用的字符的分布可能大致均匀。在每个位置上,测试计算如果令牌是随机的,则将观察到的分布的概率。
  • 角色转换分析。该测试分析了样品中连续令牌之间的过渡。如果样本是随机生成的,则在下一步的标记中同样可能会在该位置使用的任何一个字符中遵循在给定位置出现的字符。在每个位置,测试计算如果代币是随机的,则观察到的过渡的概率。

基于上述测试,字符级分析计算每个字符位置的总分 - 这是每个字符级测试在每个位置计算的最低概率。然后,该分析计算各种显着性水平的有效熵位数。根据其字符集的大小,每个位置都分配了许多熵的位(如果有4个字符,则有2个位,如果有8个字符等),以及每个位置的总数计算显着性水平。

比特分析

比特级测试比角色级测试更强大。为了启用比特级分析,每个令牌都会转换为一组位,其中位数由每个字符位置的字符集的大小确定。如果任何位置采用一个字符集的大小不是两个圆形功率,则该位置的样本数据被翻译成一个字符集,其大小是最接近两个的较小圆形功率。该位置的部分数据有效地合并为从该位置得出的整个位。此翻译的完成方式旨在保留原始样本的随机性特征,而无需引入或消除任何偏见。但是,这种类型的过程都不是完美的,并且很可能是分析具有非圆形字符集大小的样本的过程会引入一些不准确性,并将其引入分析结果中。

当每个令牌已转换为一系列位时,在每个位置进行以下测试:

  • FIPS MONOBIT测试。该测试分析了每个位位置的分布和零。如果样品是随机生成的,则零的数量可能大致相等。在每个位置上,测试计算如果令牌是随机的,则将观察到的分布的概率。对于进行的每个FIP测试,除了报告观察到的数据的概率外,Burp Sequencer还记录了每个位通过还是失败了FIPS测试。请注意,FIPS通过标准在Burp Sequencer中经过重新校准以使用任意样本量,而FIPS测试的正式规范则假定为20,000个令牌的样本。因此,如果您希望获得严格符合FIPS规范的结果,则应确保使用20,000个令牌样本。
  • FIPS扑克测试。该测试将每个位置的位序列划分为四个的连续非重叠组,并从每个组中得出四位数。然后,它计算16个可能数字中每个数字的发生数量,并执行卡方计算以评估该分布。如果样品是随机生成的,则四位数的分布可能大致均匀。在每个位置上,测试计算如果令牌是随机的,则将观察到的分布的概率。
  • FIPS运行测试。该测试将每个位置的位序列划分为具有相同值的连续位运行。然后,它计算运行次数,长度为1、2、3、4、5和6及以上。如果样品是随机生成的,则每一个长度的运行次数可能在样本集的大小确定的范围内。在每个位置,测试计算如果令牌是随机的,则观察到的运行的概率。
  • FIPS长期测试。该测试测量最长的位运行,每个位位置都具有相同的值。如果样品是随机生成的,则最长的运行可能在样本集的大小确定的范围内。在每个位置,测试计算如果令牌是随机的,则观察到的最长运行的概率。请注意,此测试的FIPS规范仅记录了最长的位运行太长时失败。但是,最短的位运行也表明样品不是随机的。因此,有些位可能会记录一个显着性水平,即使它们并不严格未能使FIPS测试未能通过。
  • 光谱测试。该测试对每个位置处的位序列进行了复杂的分析,并且能够在某些通过其他统计检验的样本中识别非随机性的证据。该测试通过位序列起作用,并将每个连续的数字视为多维空间中的坐标。它在由这些坐标确定的每个位置上绘制一个空间中的点。如果样品是随机生成的,则该空间内的点的分布可能大致均匀;空间内簇的出现表明数据可能是非随机的。在每个位置,测试计算如果令牌是随机的,则观察到的分布的概率。重复多个数字(1至8位)和多个尺寸(2至6之间)的测试。
  • 相关测试。每个其他位级测试都在采样令牌内的个体位置上进行,因此每个位置位置的随机性均可隔离计算。仅执行这种类型的测试将防止对整个令牌中的随机性进行任何有意义的评估:与包含不同值的较短标记样本相比,在每个位置上包含相同位值的代币样本似乎包含更多的熵在每个位置。因此,有必要测试令牌内不同位位置的值之间的任何统计学上显着的关系。如果样品是随机生成的,则在给定位位置处的值同样有可能在任何其他位位置伴有一个或零。在每个位置,此测试都计算出在令牌是随机的情况下,在其他位置上观察到的关系的概率。为了防止任意结果,当两个位之间观察到一定程度的相关性时,该测试根据所有其他位级测试的显着性水平的显着性水平较低。
  • 压缩测试。该测试不使用其他测试所采用的统计方法,而是提供了一个简单的直观指示,表明每个位位置的熵量。该测试尝试使用标准ZLIB压缩来压缩每个位置的位序列。结果表明被压缩时位序列的大小的比例减小。较高的压缩程度表明数据不太可能随机生成。

基于上述测试,位级分析计算每个位位置的总分 - 这是每个位级测试在每个位置计算的最低概率。然后,该分析计算各种显着性水平的有效熵位数。