Puncte:3

Aplicații în care ar trebui/nu ar trebui să folosiți o sare cu HKDF

drapel in

rfc5869 are următoarele de spus despre utilizarea sau lipsa acestora a sărurilor cu HKDF:

HKDF este definit pentru a funcționa cu și fără sare aleatorie. Acest lucru se face pentru a se adapta aplicațiilor în care nu este disponibilă o valoare de sare.Subliniem, totuși, că utilizarea sării se adaugă semnificativ la puterea HKDF, asigurând independența între diferitele utilizări ale funcției hash, susținând extracția „independentă de sursă” și întărind rezultatele analitice care susțin designul HKDF.

Toate cele de mai sus ar avea sens în contextul hashing-ului parolei, dar din câte știu, aceasta nu este o utilizare adecvată a funcției HKDF. Se pare că sugerează că se folosește o sare pentru a se asigura că două cazuri ale funcției nu returnează același material de cheie de ieșire atunci când este utilizat cu același material de cheie de intrare; singurul scenariu (de care sunt conștient în prezent) în care acest lucru s-ar putea întâmpla este atunci când IKM este o parolă generată de utilizator. Deci intrebarile mele sunt:

  • ce înseamnă ca două utilizări ale unei funcții hash să fie independente?

  • care este sensul „extracției independente de sursă”?

  • ce este a exemplu practic de caz de utilizare în care o sare ar trebui să fie absolut folosit cu HKDF?

kelalaka avatar
drapel in
[Câteva răspunsuri aici](https://crypto.stackexchange.com/q/76588/18298) și [Domain Separation](https://crypto.stackexchange.com/q/83306/18298) pentru funcții hash. Mi s-a părut o întrebare largă, totuși.
kelalaka avatar
drapel in
ce înseamnă ca două utilizări ale unei funcții hash să fie independente? „Separarea domeniilor”
knaccc avatar
drapel es
Deoarece sarea este pentru separarea domeniilor și pentru extracția aleatorie, am pus această întrebare mai specifică doar despre partea de extracție aleatorie... https://crypto.stackexchange.com/questions/97980/hdkf-randomness-extraction-salt -sau-fara-sare
Puncte:2
drapel es

Utilizarea unei sări are două scopuri: separarea domeniilor și extracție aleatorie.

Dacă sunteți sigur că IKM (materialul de introducere a cheii) este utilizat doar într-un „domeniu”, nu aveți nevoie de o sare în scopul separării domeniilor. În același domeniu, utilizați în schimb parametrul info pentru a genera mai multe chei din același IKM pentru diferite contexte din domeniu.

Dacă IKM-ul dvs. este deja uniform aleatoriu (cum ar fi atunci când este o cheie privată uniform aleatorie utilizată pentru a obține sub-chei prin HKDF), atunci nu aveți nevoie de o sare în scopul extragerii aleatorii dacă IKM-ul are o lungime suficientă de biți pentru scopurile dumneavoastră.

Separarea domeniilor

Pagina 26 din "Extracția criptografică și derivarea cheilor: Schema HKDF„Hârtia (denumită [HKDF-paper] în rfc5869) oferă următorul exemplu de necesitate a separării domeniilor:

Importanța unei astfel de independențe poate fi ilustrată de urmând exemplul din „viața reală”... A Schimbul Diffie-Hellman este autentificat prin semnarea cheii $g^{xy}$. În realitate, ceea ce este semnat este $H(g^{xy})$ pentru unele funcții hash $H$, Spune SHA-1. Dacă semnătura permite recuperarea mesajului (de exemplu, RSA), atunci atacatorul nu învață $g^{xy}$ ci mai degrabă $H(g^{xy})$; astfel dacă unul se gândește la $H$ ca un oracol aleatoriu atunci nimic nu se învață $g^{xy}$. Acum, să presupunem că protocolul de mai sus derivă chei printr-un protocol tradițional KDF, și anume, cheile sunt calculate ca $H(g^{xy} \mathbin\| v)$ pentru unii valorile publice $v$. În acest caz, dacă urmărim $H$ = exemplu SHA-1 și presupune $g^{xy}$ are lungimea 1024, obținem acel calcul $H(g^{xy}\mathbin\|v)$ este la fel ca si informatica $H$ pe $v$ cu IV al $H$ setat la $H(g^{xy})$ (pentru simplitatea presupune că calculul de $H$ pe $g^{xy}$ nu foloseste lungime anexată). Cu toate acestea, aceasta înseamnă că atacatorul învață totul cheile de când știe $H(g^{xy})$! Eșecul protocolului nu este datorita unei slabiciuni specifice a $H$ ci mai degrabă la folosirea aceloraşi (deterministă) funcție pentru două funcționalități diferite: hash funcţie aplicată la $g^{xy}$ și KDF. Spre deosebire de aceasta, dacă unul este cu cheie $H$ prin intermediul o valoare de sare în utilizarea sa de către KDF ar impune independența între cele două funcţionalităţi.

HDKF constă din două etape:

  1. HKDF-Extract: PRK = HMAC-Hash(sare, IKM)
  2. HKDF-Expand(PRK, info, L) -> OKM

(Acolo unde IKM este „material de introducere a tastei”, PRK este „o cheie pseudoaleatorie”, OKM este „material de codare de ieșire”, L este lungimea rezultatului dorit).

Prin urmare, dacă nu s-a folosit sare și valoarea HMAC-Hash(NULL, IKM) s-a scurs cumva (de exemplu, în scenariul „recuperare mesaj” de mai sus), atunci toate utilizările HKDF ulterioare, folosind același IKM și fără sare ar fi fi de asemenea compromis.

Dacă nu aveți nevoie de o sare pentru separarea domeniului, atunci ar trebui să vă gândiți dacă aveți nevoie de o sare în scopul extracției aleatorie. Acea întrebare este postat aici.

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.