Puncte:1

Derivarea numerelor aleatoare din numere aleatorii

drapel ua

Dacă am un „număr cu adevărat aleatoriu” $K$ de $L$ biți (indiferent ce înseamnă „adevărat aleatoriu”... este o valoare dintr-o distribuție normală un număr cu adevărat aleatoriu, sau numai distribuțiile uniforme sunt considerate „cu adevărat aleatoare”?) și un „număr cu adevărat aleatoriu” $T$ de $M \le L$ biți,

dintre care algoritmi aritmetici/bit-bit $K$ și $T$ poate genera noi numere cu adevărat aleatorii? Dacă $M=L$, este $K + T$ sau $K\ xor\ T$ un număr cu adevărat aleatoriu? sau daca $M\lt L$, faceți metode ca HKDF-extinde-etichetă, HKDF-extract, sau doar sha256 peste $K$ și $T$ genera numere cu adevărat aleatorii? (de exemplu, împărțirea $K$ în $L/M$ blocuri de $M$ biți, aplicați unele dintre aceste metode și conectați-le ieșirile).

Aș dori să știu mai multe despre ce proprietăți sunt necesare pentru ca un algoritm determinist să producă numere cu adevărat aleatorii, cu condiția ca intrările sale să fie numere cu adevărat aleatorii.

Câteva presupuneri (presupunând $M=L$ pentru simplitate), $K + T$ este un număr cu adevărat aleatoriu, dar $K\ pe biți\_și\ T$ nu este.

NOTĂ: Întrebarea mea se referă la contextul cifrurilor unice pad. Vreau să stochez textul cifrat și $K$ separat și transferați-l pe un canal securizat numai atunci când este necesară decriptarea, dar în loc de transfer $K$ în sine, care ar putea fi foarte lung, deoarece trebuie să se potrivească cu lungimea textului simplu (care poate fi foarte lungă), mă gândesc la calcul $K$ prin derivare din $J$ (de dimensiune $L$) și $T$ de mărime $M$, ambele fiind numere aleatorii. $J$ este stocat pe partea clientului, $T$ este stocat pe partea de server și preluat printr-un canal securizat și $K$ este în sfârșit derivat din partea clientului și eliminat din memorie imediat după decriptare. Întrebarea mea de mai sus este, în sfârșit, despre ce funcție de derivare să folosiți astfel încât $K$ nu se poate distinge de un număr cu adevărat aleatoriu presupunând $J$ și $T$ sunt numere cu adevărat aleatorii.

Maarten Bodewes avatar
drapel in
Se pare că confundați $M$ (numărul de biți de $T$) și $T$ în întrebarea dvs.
sanscrit avatar
drapel ua
@MaartenBodewes Da, ai avut dreptate. Mulțumesc. Fix acum.
Maarten Bodewes avatar
drapel in
Cred că ați uitat de 4 dintre ele, ați încercat să le remediați, vă rugăm să revizuiți.
Puncte:3
drapel cn

Ați pus o mulțime de întrebări la această întrebare, dar trei ies în evidență:-

orice înseamnă „adevărat aleatoriu”... este o valoare dintr-o distribuție normală un număr cu adevărat aleatoriu, sau numai distribuțiile uniforme sunt considerate „cu adevărat aleatoare”?

Nu. Un număr (distribuție) cu adevărat aleatoriu este pur și simplu nealgebric, încă imprevizibil ergodic. Nu are sămânță și nici formulă generatoare. Poate fi clasificat doar după statistici de grup foarte simple. O viata reala exemplu este această distribuție de la un dispozitiv bazat pe diode Zener:

histogramă

Există Nu nume acceptat în mod obișnuit pentru această distribuție. Are o medie și o abatere standard, dar nu are cuantilă algebrică, asimetrie sau entropie. Doar există empiric (cu $H_\infty \aproximativ 6$ biți/octet).

Aș dori să știu mai multe despre ce proprietăți sunt necesare pentru ca un algoritm determinist să producă numere cu adevărat aleatorii, cu condiția ca intrările sale să fie numere cu adevărat aleatorii.

Singura proprietate majoră este aceea $ \operatorname{X}: \{0,1\}^n \to \ \{0,1\}^m $ cu $ m \lt n $. $X$ pot fi o mulțime de lucruri precum extractoare von Neumann, funcții CRC, matrici, LFSR și funcții hash generale (universale). Un punct important este însă că $X$ nu are nicio formă de funcție criptografică. Este o eroare să crezi așa, dar securitatea apare din biții de intrare cu adevărat aleatori $n$.

Mă gândesc la stocarea la nivelul clientului a unui număr aleator J de lungime L, transferând în schimb un „token cu adevărat aleatoriu” T pre-generat (legat în mod unic de acel text simplu specific) și generând K partea clientului...

Ești de fapt imbunatatirea pad-ul unic :-( Cu excepția cazului în care vorbiți de distribuția cheii cuantice, asta nu este posibil, totuși o încercare comună pe acest forum. Nu sunt tocmai clar cu privire la propunerea dvs., dar oferta este expresia generatoare. Padurile unice nu sunt generate pe partea clientului, ci mai degrabă central într-o arhitectură unu la unu sau unu la mai multe. Orice altceva este un proces pseudo-aleatoriu sau o construcție de criptare de flux.

sanscrit avatar
drapel ua
Mi-am îmbunătățit ultima notă a întrebării. Sper să fie mai clar acum.
Puncte:2
drapel ru

În ceea ce privește aritmetica pe biți/operatorii pe biți pe numere aleatoare independente distribuite uniform (criptografia folosește de obicei aleatoriu uniform, dar există excepții, de exemplu, în criptografia prin rețea), XOR oferă o distribuție uniformă, + dă o distribuție triunghiulară și oferă o distribuție în care $P(N)=0,25^{w(N)}0,75^{L-w(N)}$ Unde $w$ este greutatea Hamming, produsul este complicat, diferența este triunghiulară, OR dă o distribuție ca AND, dar cu rolurile lui $w(N)$ și $L-w(N)$ inversat, NOR are aceeași distribuție ca AND, NAND are aceeași distribuție ca OR.

Efectul funcțiilor hash criptografice asupra intrării uniforme nu este de obicei cunoscut ca fiind uniform, dar este adesea modelat ca atare.

Pentru un pad unic, veți dori o distribuție uniformă pe toate tastele de aceeași lungime ca și textul simplu. O funcție hash universală ar trebui să realizeze acest lucru, dar asigurați-vă că intrările sunt secrete, distribuite corespunzător și utilizate o singură dată.

sanscrit avatar
drapel ua
Deci, pe baza răspunsului dvs. presupun că dacă am două chei A și B având L biți de entropie fiecare, A xor B va avea în continuare L biți de entropie, nu?
Daniel S avatar
drapel ru
Da, așa este, presupunând că generația lor este independentă. (Un contra exemplu evident este A=B).
Puncte:1
drapel fr

Toți algoritmii pe care i-ați menționat (HKDF și SHA-256) sunt pseudoaleatorii. În general, orice abordare pe care o veți folosi aici pentru a extinde unele numere cu adevărat aleatorii în alte secvențe este, de asemenea, pseudoaleatoare. Asta pentru că acești algoritmi sunt determiniști: dacă introduceți aceleași date (entropie), atunci veți obține aceleași rezultate.

Numerele aleatoare adevărate provin dintr-o sursă fizică și nu sunt deterministe. Acestea pot fi dezintegrare radioactivă, zgomot termic, oscilatoare care rulează liber sau alte tipuri de surse. Deoarece acestea nu produc neapărat un număr egal de unu și zero și eșecul nu este necunoscut, de obicei există un fel de filtrare și procesare, care poate fi un algoritm criptografic precum AES-CBC-MAC sau SHA-256 sau un fel de eliminarea sau reducerea părtinirii, cum ar fi XORing sau debiasarea Von Neumann, sau ambele.

Dacă ați folosit un TRNG și ați produs biți aleatori, ați putea să-i XOR cu mai mulți biți dintr-un TRNG și să obțineți aceeași securitate, dar ar fi o prostie pentru că folosiți de două ori mai mulți biți dintr-un TRNG pentru a nu câștiga securitate. În mod similar, puteți efectua adăugarea modulară pe octeți cu două valori TRNG, dar din nou aceasta are aceeași limitare. ȘI pe biți influențează ieșirea, astfel încât ar slăbi securitatea.

Deoarece orice algoritm de extindere a ieșirii unui TRNG va fi pseudoaleator în loc de cu adevărat aleatoriu, ceea ce propui, în esență, sună ca un cifr de flux cu o cheie pre-partajată bazată pe un TRNG. Cu toate acestea, asta e perfect ca design! Atâta timp cât alegeți un cifr de flux securizat, acesta este un design legitim și sigur. Cu toate acestea, cifrurile de flux nu sunt pad-uri unice și nu sunt sigure, dar sunt mult mai convenabile de utilizat în viața reală.

Dacă alegeți să urmați această abordare, vă recomand cu căldură să alegeți o bibliotecă existentă, bine concepută pentru a construi aceasta. TLS are suport pentru cheile pre-partajate și, desigur, există și alte biblioteci care pot face acest lucru și pentru mesaje.

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.