Les accidents ne sont pas aléatoires: qui sont les familles de fonctions pseudo-aléatoires (PRF)

En 1984, Goldreich, Goldwasser et Micali ont formalisĂ© le concept de fonctions pseudo-alĂ©atoires et proposĂ© une implĂ©mentation PRF basĂ©e sur un gĂ©nĂ©rateur pseudo-alĂ©atoire (PRG) doublant la longueur. Depuis lors, les fonctions pseudo-alĂ©atoires se sont avĂ©rĂ©es ĂȘtre une abstraction extrĂȘmement importante qui a trouvĂ© des applications dans divers domaines, tels que l'authentification de message et la dĂ©monstration de thĂ©orĂšmes. Dans cet article, je couvrirai:





  • Que sont les fonctions alĂ©atoires (RF)





  • Que sont les fonctions pseudo-alĂ©atoires (PRF)





  • Qui sont ces familles?





  • PRF vs. PRG





  • Qu'est-ce que les chiffrements par blocs ont Ă  voir avec cela?





Aléatoire

DĂ©jĂ  Ă  partir du nom, il devient clair qu'une fonction pseudo-alĂ©atoire est quelque chose qui "ressemble" Ă  une fonction alĂ©atoire. Eh bien, qu'est-ce qu'une fonction alĂ©atoire dans notre cas? Pour commencer, nous limiterons notre champ de considĂ©ration aux fonctions affichant une chaĂźne de zĂ©ros et de uns avec une longueur d' nune chaĂźne de zĂ©ros et de uns de mĂȘme longueur n, c'est-Ă -dire





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

Ceci, d'une maniĂšre gĂ©nĂ©rale, peut ĂȘtre omis, et nous pouvons envisager des mappages de chaĂźnes d'une longueur Ă  des chaĂźnes d'une autre longueur, mais dans ce cas, il faudra faire attention aux diffĂ©rences de dimensions. Ensuite, nous introduisons l'ensemble de toutes les fonctions qui effectuent le mappage \ {0,1 \} ^ n \ rightarrow \ {0,1 \} ^ net le dĂ©notons \ text {Func} _n.





Considérez la cardinalité de cet ensemble. C'est évident que | {\ text {Func} _n} |  = 2 ^ {n2 ^ n}.





-
\ text {Nombre total de chaßnes distinctes de longueur} n \ espace - \ espace 2 ^ n. \ text {Pour stocker} 2 ^ n \ text {lignes dont vous avez besoin} n2 ^ n \ text {bits.}\ text {Ces} n2 ^ {n} \ text {bits et définiront le mappage souhaité} 2 ^ n \ text {lignes.}\ text {Et il y aura un total de ces mappages} 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: first \ space bit = 1 \}) = \ frac {1} {2}

, :





P (f (x) \ in \ {\ forall y: last \ space bit = 1 \}) = \ frac {1} {2}

n :





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} – n n / 2 ( n / 2 n ).





. , , 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)-, UNE , t





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

, , , , . , , , F_k :





– F_k (x) = F (k, x), , \ {0,1 \} ^ m \ times \ {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 ré 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 (), n (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) .





, . , : , n, F_k, k , , () .





, , AES.





. , .





P.S. . , . , c:





P.P.S. – .





Comment construire des fonctions aléatoires - TYK





Fonctions pseudo - aléatoires : trois décennies plus tard - Tyk





Introduction Ă  la cryptographie moderne - TYK





Fonctions pseudo - aléatoires et chiffrements par blocs - Tyk












All Articles