7.2.3. DSS Pseudo-random Number Generation (DSS擬似乱数生成)
7.2.3. DSS Pseudo-random Number Generation (DSS擬似乱数生成)
NIST Digital Signature Standard (デジタル署名標準) [DSS]の付録3は, 秘密鍵などとして使用するための擬似ランダム160ビット数量のシーケンスを生成する方法を提供しています。これはChange Notice 1 [DSS_CN1]によって修正され, 汎用擬似乱数を生成するための以下のアルゴリズムが生成されました:
t = 0x 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0
XKEY = initial seed
0
For j = 0 to ...
XVAL = ( XKEY + optional user input ) (Mod 2^512)
j
X = G( t, XVAL )
j
XKEY = ( 1 + XKEY + X ) (Mod 2^512)
j+1 j j
このように生成されたX数量は, 160ビット値の擬似ランダムシーケンスです。上記の "G" には2つの関数を使用できます。それぞれ160ビット値を生成し, 160ビット値と512ビット値の2つの引数を取ります。
最初のものはSHA-1に基づいており, SHA-1仕様でHに添字を付けて表される5つのリンク変数を, 5分の1に分割された最初の引数に設定することによって機能します。次に, NIST SHA-1仕様のセクション7のステップ (a) から (e) が, それが512ビットデータブロックであるかのように2番目の引数に対して実行されます。これらのステップの後のリンク変数の値は, 次にGの出力を生成するために連結されます [SHA*]。
代替方法として, NISTはDES暗号化関数の複数のアプリケーションに基づく代替G関数も定義しました [DSS]。