乱数テストの方法

Burp Sequencerは、標準的な統計的テストによりランダム性を確認します。証拠のサンプルに対して仮説をテストする原則に基づき、仮説が正しいと仮定した上で観測データの発生確率を計算します:

有意水準は、この方法の鍵となるパラメータです。有意水準を低くすると、トークンがランダムに生成されたという仮説を否定するためにはより強力な証拠が必要となり、ランダムではないデータがランダムとして扱われる可能性が高まります。あらゆる目的に使用できる"正しい"有意水準は存在しません: 科学実験では、1%から5%の範囲の有意水準がよく使用されます; ランダム性についての標準的FIPSテスト(これはBurp Sequencer内で実装されている)では、0.002%から0.03%の範囲の有意水準を使用します。Burp Sequencerでは、その結果の解釈に使用する有意水準を選択できます:

ランダム性に対する統計的テストでは、いつかの重要な警告が発生します。この結果には次の理由により、検知漏れや過剰検知が含まれる可能性があります:

これらの注意点があるので、Burp Sequencerを使用して得られた結果は、サンプルデータのランダム性の参考情報としてのみ扱うことを推奨します。

Burp Sequencerによって実行されたテストは文字レベルビットレベルに分けられます。

文字レベル分析

文字レベル分析はトークンに書かれた文字をそのままの形式でテストを行います。まず、各位置での文字集合のサイズが計測されます。文字集合のサイズとは、サンプルデータ内の各位置に現れる異なる文字種数です。以降のテストは、この情報を使用して行われます:

文字レベル分析では、上記のテストに基づき、それぞれの文字位置について総合スコアを計算します - これはそれぞれの文字レベルテストで、各位置で計算された最小の確率です。それからこの分析は、さまざまな有意水準における、有効エントロピーのビット数をカウントします。トークン内の文字集合の大きさに基づき、各位置にエントロピーのビット数を割り当てます (もし4文字ならば2bit、8文字ならば3bit)。そして、各有意水準以上になった総ビット数が計算されます。

ビットレベル分析

ビットレベルテストは文字レベルテストよりも強力です。ビットレベル分析を有効にするために、それぞれのトークンをビット集合に変換する必要があります。各文字位置の文字集合のサイズから総ビット数が求められます。いずれかの位置で、2のべき乗ちょうどではないサイズの文字集合が使用されていた場合は、その位置でのサンプルデータは、もとの集合のサイズよりも小さく元の値に最も近い2のべき乗ちょうどに変換されます。その位置でのデータの部分的なビットは、その位置から派生した全ビットに効率的にマージされます。この変換は、もともとの標本のランダム性についての特徴を保存し、どのような偏りの追加、削除も行われないように設計された方法で行われます。しかし、この方式での変換は完璧ではなく、もしかしたら不完全な文字集合サイズの標本を分析する過程で、分析結果にある種の不正確さをもたらすかもしれません。

それぞれのトークンがビット列に変換されると、各ビット位置で、次のテストが行われます:

ビットレベル分析では、上記のテストに基づき、それぞれのビット位置について総合スコアを計算します - これはそれぞれのビットレベルテストで、各位置で計算された最小の確率です。それからこの分析は、さまざまな有意水準における、有効エントロピーのビット数をカウントします。