今日、多くのアプリケーションはランダムな数値を生成する機能を必要とします。明らかに、解決されている特定の問題に応じて、ランダム番号ジェネレーターに異なる要件が課せられます。たとえば、ランダム番号ジェネレーターは、取得した番号の一意性のみを必要とする場合がありますが、特に暗号化の分野では、そのような要件が必要になることがよくあります。デバイス/アルゴリズムははるかに厳格です。
特定の決定論的アルゴリズムの出力で得られ、ランダム性の特性を持つ数は疑似ランダムと呼ばれ、対応するジェネレーターは疑似ランダム数ジェネレーター(PRNG)と呼ばれることをすぐに明らかにする価値があります。
この記事の目的は、線形フィードバックを備えたシフトレジスタに基づくPRNG、それらの変更のいくつか、および実際に使用される暗号的に強力なPRNGのいくつかに精通することです。
疑似乱数発生器の構造
PRNGの一般的な構造を見て、少し離れたところから始めましょう。構造は基礎として採用されており、[2]の著者によって推奨され、より詳細に検討されています。
各ブロックを簡単に見てみましょう。
- , , , ( ), .
( ) . (nonce). , , , .. .
- , , ;
nonce , , ;
, . , ;
, ;
( ) ;
.
(), .. .
n b1, b2, . . . , bn C1 = 1, C2, C3 , . . . , Cn ∈ {0, 1}. ( [8]). GF(2), . 2:
C(x) = 1xn + C2xn-1 + . . . + Cnx + 1,
.
2 , , .. Ci 1;
;
, 1.
b1 . 2n-1, , .
, , .. , , n . , 2n , , .
, : . , , , ( ).
:
, , ;
;
2 ;
.
, , , , .
, , .
, - , , (). , [9, . 2.8], .. , , , , .
, , , . [1], [10] . , , , .
, , "" , .
, , , . : :
.. 2 , . , - . , . .
L1 . . . LM , , .
i- Li , , - , .. (Li, Lj) = 1 i≠j. f , .. f = . . . + xi + . . . , . 2L, L - , .
"-"
"-" ( -1 -2). -2 , -1 1. -2 , .. , -1 -2.
, , , , -1.
, "-", 3 . -2 1 -1, -3 0. -2 -3. [4] , .
"-": , , , . :
-1 1, -2. -2 1 - -3 .. .
: . [9] . 15 .
5/1
, , , , GSM. 5, 1987 5/1, .. 5/2 5/3.
: , 19, 22 23 . . 5 , .. .
.
: , ( C1 , C2, C3- ). m = majotiry (C1, C2, C3) , .. 0 1. , .
, , . . , [10].
:
.. ( 2. )
nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-90Ar1.pdf
. ., . ., . . : — .: , 2019
C.G. Gunter, “Alternating Step Generators Contolled by de Bruijn Sequenc-es”, Advances in Cryptology EUROCRYPT ’87 Proceedings, Springer-Verlag, 1988
. . – .: . — 1989
Slepovichev I.I. 疑似ランダム番号ジェネレータ:チュートリアル、2017
https://software.intel.com/sites/default/files/m/d/4/1/d//441IntelR_DRNGSoftwareImplementationGuidefinalAug7.pdf
https://www.xilinx.com/support/documentation/application_notes/xapp052.pdf
Schneier B. AppliedCryptography。C言語のプロトコル、アルゴリズム、ソーステキスト。-トライアンフ、2013 .-- 816秒
https://csrc.nist.gov/publications/detail/sp/800-22/rev-1a/final