Hoje, muitos aplicativos requerem a capacidade de gerar números aleatórios. Obviamente, dependendo de qual problema específico está sendo resolvido, diferentes requisitos serão impostos ao gerador de números aleatórios: por exemplo, às vezes o gerador de números aleatórios pode precisar apenas da unicidade do número obtido, enquanto muitas vezes, especialmente no campo da criptografia, os requisitos para tal o dispositivo / algoritmo é muito mais rígido.
Cabe esclarecer de imediato que os números obtidos na saída de um determinado algoritmo determinístico e possuindo a propriedade de aleatoriedade são chamados de pseudo-aleatórios, e os geradores correspondentes são chamados de geradores de números pseudo-aleatórios (PRNG).
O objetivo deste artigo é familiarizar-se com o PRNG baseado em registradores de deslocamento com feedback linear, várias de suas modificações, bem como vários PRNGs criptograficamente fortes que são usados na prática.
Estrutura geradora de número pseudoaleatório
Vamos começar um pouco mais, examinando a estrutura geral do PRNG. A estrutura é tomada como base, o que é recomendado e considerado mais detalhadamente pelos autores em [2].
Vamos dar uma olhada rápida em cada bloco:
- , , , ( ), .
( ) . (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. Geradores de números pseudo-aleatórios: um 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. Applied Cryptography. Protocolos, algoritmos, textos-fonte na linguagem C. - Triumph, 2013 .-- 816 s
https://csrc.nist.gov/publications/detail/sp/800-22/rev-1a/final