Puncte:1

Generați valori aleatorii unice pentru valorile de intrare unqiue

drapel pk
VSB

Am de gând să generez unic valori aleatorii bazate pe un interval de valori unice de intrare.

Cu alte cuvinte, am un interval de valori de intrare în care aceste numere fac parte dintr-o serie (cum ar fi un interval de numere de serie care cresc unul câte unul) și nu există valori duplicate între ele. Vreau să generez valori aleatorii bazate pe fiecare dintre valorile de intrare, care nu ar trebui să existe valori duplicate în valorile de ieșire.

Primul lucru care mi-a venit în minte a fost să folosesc cifruri bloc standard, cum ar fi AES, de când sunt injectiv iar dacă intrarea acestei funcții nu are valori duplicate, este garantat că și ieșirile sale nu sunt duplicate.

Deci, preocuparea mea este că această metodă de a genera valori (pseudo-)aleatoare poate fi suficient de sigură?

De exemplu. dacă cineva are 1000 de valori de intrare consecutive (text simplu) și 1000 de valori de ieșire (texte cifrate) pentru aceste valori de intrare, poate el/ea să prezică valoarea aleatoare de ieșire pentru 1001th valoarea de intrare? Cu alte cuvinte, este posibil ca un atacator să modeleze matematic acest generator pseudo-aleatoriu pentru a genera noi valori aleatoare fără ca cheia să fie folosită în cifrul bloc AES?

Știu că există niște standarde pentru „KDF”, cum ar fi cele definite în NIST SP-800 cu toate acestea, unicitatea pentru valori aleatoare nu este o preocupare acolo (dacă nu mă înșel), dar aceasta este o preocupare în aplicația mea țintă.

Puncte:1
drapel cn

Desigur, este suficient de sigur. Stai înapoi și gândește-te la consecințele dacă nu ar fi: uitându-se la 1000 de criptări, dacă ai putea prezice a 1001-a fără să cunoști cheia, ai fi rupt AES.

Construcția dvs. este, de fapt, o metodă recunoscută în mod obișnuit de a transforma un cifr de bloc într-un cifr de flux ca: -

prng

În timp ce există probleme legate de efectul Ziua de naștere pentru spațiile de ieșire care se apropie $2^{64}$ biți, doar 1000 dintre ei vor fi imposibil de distins de aleatoriu. Și unic.

fgrieu avatar
drapel ng
Da. În ultimul paragraf: deoarece AES este o bijecție, AES repetată _nu_ este supusă efectului de naștere, așa cum ar fi repetarea unui hash. Probabilitatea de a fi căzut într-un ciclu care începe dintr-un punct aleatoriu după $2^{64}$ iterații este de aproximativ $2^{-64}$.
Paul Uszak avatar
drapel cn
@fgrieu Opusul efectului aniversar? Lipsa efectului de ziua de nastere? Nenaștere? Am căutat formularea că ar trebui să existe coliziuni într-o ieșire (pseudo) aleatorie corectă. Motivul pentru care AES PRNG se distinge...
fgrieu avatar
drapel ng
Criptarea AES pentru o cheie fixă ​​este o permutare a unui set de $k=2^{128}$ elemente. Există $k!$ permutări ale unor astfel de $k$ elemente. Pentru orice punct de plecare fix, pentru orice $\ell$ în $[1,k]$, exact $(k-1)!=k!/k$ din aceste permutări au un ciclu de lungime $\ell$ când pornesc de la punct spus. Astfel, pentru o permutare aleatoare și pornind de la un punct aleator, lungimea ciclului $\ell$ este distribuită uniform pe $[1,k]$. Și lungimea ciclului (medie) așteptată este $(k+1)/2$. Acesta este util pentru DES în [modul OFB](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Output_feedback_(OFB)).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.