Los accidentes no son aleatorios: quiénes son las familias de funciones pseudoaleatorias (PRF)

En 1984, Goldreich, Goldwasser y Micali formalizaron el concepto de funciones pseudoaleatorias y propusieron una implementación de PRF basada en un generador pseudoaleatorio de duplicación de longitud (PRG). Desde entonces, las funciones pseudoaleatorias han demostrado ser una abstracción extremadamente importante que ha encontrado aplicaciones en varios campos, como la autenticación de mensajes y la demostración de teoremas. En este artículo cubriré:





  • ¿Qué son las funciones aleatorias (RF)?





  • ¿Qué son las funciones pseudoaleatorias (PRF)?





  • ¿Quiénes son estas familias tuyas?





  • PRF vs. PRG





  • ¿Qué tienen que ver los cifrados de bloque con esto?





Aleatoriedad

Ya a partir del nombre queda claro que una función pseudoaleatoria es algo que "parece" una función aleatoria. Bueno, ¿qué es una función aleatoria en nuestro caso? Para empezar, limitaremos nuestro alcance de consideración a las funciones que muestran una cadena de ceros y unos de longitud norteen una cadena de ceros y unos de la misma longitud norte, es decir





\ underbrace {1110 ... 0010} _ {n} \ rightarrow \ underbrace {0100 ... 0011} _ {n} \ Leftrightarrow \ {0,1 \} ^ n \ rightarrow \ {0,1 \} ^ n

En términos generales, esto puede omitirse y podemos considerar mapeos de cadenas de una longitud a cadenas de otra longitud, pero en este caso habrá que prestar atención a las diferencias de dimensiones. A continuación, introducimos el conjunto de todas las funciones que realizan el mapeo \ {0,1 \} ^ n \ rightarrow \ {0,1 \} ^ ny lo denotamos \ text {Func} _n.





Considere la cardinalidad de este conjunto. Es obvio eso | {\ text {Func} _n} |  = 2 ^ {n2 ^ n}.





-
\ text {Total de cadenas distintas de longitud} n \ espacio - \ espacio 2 ^ n. \ text {Para almacenar} 2 ^ n \ text {líneas que necesita} n2 ^ n \ text {bits.}\ text {Estos} n2 ^ {n} \ text {bits establecerán la asignación deseada} 2 ^ n \ text {líneas.}\ text {Y habrá un total de tales asignaciones} 2 ^ {n2 ^ n}.





. – \ text {Func} _n. , 2 ^ n - 2 ^ n. ,





P (f (x) = y_0) = 2 ^ {- n}

F\ text {Func} _n, y_0 – .





, – - , . , .





, :





P (f (x) \ in \ {\ forall y: primer \ bit de espacio = 1 \}) = \ frac {1} {2}

, :





P (f (x) \ in \ {\ forall y: último \ espacio bit = 1 \}) = \ frac {1} {2}

norte :





P (f (x) \ in \ {\ forall y: number \ space zeros = number \ space ones \}) = \ frac {1} {2 ^ n} \ begin {pmatrix} n \\ n / 2 \ end {pmatrix}

\ begin {pmatrix} n \\ n / 2 \ end {pmatrix}norte n / 2 ( n / 2 norte ).





. , , 20 . :





P (A_i (f (x)) = 1)

, , \ varepsilon:





| P (A_i (f (x)) = 1) -P (A_i (F (x)) = 1) |  <\ varepsilon

f (x) – , F (x) – , .





. -, , , ? , . .





F(t, \ varepsilon)-, UNA , t





| P (A (f (x)) = 1) -P (A (F (x)) = 1) |  <\ varepsilon

, , , , . , , , F_k :





F_k (x) = F (k, x), , \ {0,1 \} ^ m \ veces \ {0,1 \} ^ n \ rightarrow \ {0,1 \} ^ l, F_k . k .





m = l = n.





, k .





\ {0,1 \} ^ n \ rightarrow \ {0,1 \} ^ n \ text {Func} _n. , F_k \ text {Func} _n.





, , , :





F_k , k re F_k f \ in \ text {Func} _n.





, , . , - . , . , . , - x_0 y_0, , , x_0, y_1 \ neq y_0. , , - , . , . . , , F_k, , k ( ).





PRF vs. PRG

PRG – . , . , PRG – PRF, PRF – PRG. , PRG, . , PRG (), norte (seed) m> n. , PRG , PRF , . .





G (k) = F_k (0 ... 0) | F_k (0 ... 1)

| – , PRG PRF. , . , PRF , PRG.





PRF F_k , . , , F_k k. F ^ {- 1} (y) .





, . , : , norte, F_k, k , , () .





, , AES.





. , .





P.S. . , . , c:





P.P.S. – .





Cómo construir funciones aleatorias - tyk





Funciones pseudoaleatorias : tres décadas después - tyk





Introducción a la criptografía moderna - tyk





Funciones pseudoaleatorias y cifrados en bloque - tyk












All Articles