Hoy en día, muchas aplicaciones requieren la capacidad de generar números aleatorios. Obviamente, dependiendo del problema específico que se esté resolviendo, se impondrán diferentes requisitos al generador de números aleatorios: por ejemplo, a veces el generador de números aleatorios puede necesitar solo la unicidad del número obtenido, mientras que a menudo, especialmente en el campo de la criptografía, los requisitos para tal el dispositivo / algoritmo es mucho más rígido.
Vale la pena aclarar de inmediato que los números obtenidos a la salida de un determinado algoritmo determinista y que poseen la propiedad de aleatoriedad se denominan pseudoaleatorios, y los generadores correspondientes se denominan generadores de números pseudoaleatorios (PRNG).
El propósito de este artículo es familiarizarse con PRNG basado en registros de desplazamiento con retroalimentación lineal, varias de sus modificaciones, así como varios PRNG criptográficamente fuertes que se utilizan en la práctica.
Estructura generadora de números pseudoaleatorios
Comencemos desde una pequeña distancia observando la estructura general del PRNG. Se toma como base la estructura, que es recomendada y considerada con más detalle por los autores en [2].
Echemos un vistazo rápido a cada bloque:
- , , , ( ), .
( ) . (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. Generadores de números pseudoaleatorios: un 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. Criptografía aplicada. Protocolos, algoritmos, textos fuente en lenguaje C. - Triumph, 2013.- 816 s
https://csrc.nist.gov/publications/detail/sp/800-22/rev-1a/final