Saat ini, banyak aplikasi membutuhkan kemampuan untuk menghasilkan angka acak. Jelas, tergantung pada masalah spesifik apa yang sedang dipecahkan, persyaratan yang berbeda akan diberlakukan pada generator bilangan acak: misalnya, terkadang hanya keunikan dari bilangan yang diperoleh yang mungkin diperlukan dari pembuat bilangan acak, sementara seringkali, terutama di bidang kriptografi, persyaratan untuk itu perangkat / algoritme jauh lebih kaku.
Perlu diklarifikasi segera bahwa bilangan yang diperoleh pada keluaran dari algoritme deterministik tertentu dan memiliki sifat keacakan disebut pseudo-random, dan generator yang sesuai disebut pseudo-random number generator (PRNG).
Tujuan artikel ini adalah untuk membiasakan dengan PRNG berdasarkan register geser dengan umpan balik linier, beberapa modifikasinya, serta beberapa PRNG yang kuat secara kriptografik yang digunakan dalam praktik.
Struktur pembangkit bilangan acak semu
Mari kita mulai sedikit lebih jauh, dengan melihat struktur umum PRNG. Struktur tersebut diambil sebagai dasar, yang direkomendasikan dan dipertimbangkan secara lebih rinci oleh penulis di [2].
Mari kita lihat sekilas setiap blok:
- , , , ( ), .
( ) . (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. Generator Nomor Pseudo-Acak: Tutorial, 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. Kriptografi Terapan. Protokol, algoritma, teks sumber dalam bahasa C. - Kemenangan, 2013. - 816 d
https://csrc.nist.gov/publications/detail/sp/800-22/rev-1a/final