Puncte:2

Cum se utilizează Argon2 pentru derivarea cheii?

drapel us

După înțelegerea mea, o derivare a cheii este atunci când luați niște date, să spunem o parolă, și utilizați o funcție pentru a o converti într-un număr care poate fi folosit ca o cheie secretă în criptografia cu curbe eliptice, de exemplu. Argon2 folosește o sare aleatorie la hash, ceea ce necesită ca hash-ul să fie diferit de fiecare dată, în ciuda utilizării aceleiași parole. Dacă hash-ul este diferit, cum poate fi folosit pentru a reprezenta aceeași cheie secretă?

kelalaka avatar
drapel in
Răspunde asta la întrebarea ta? [Criptați un fișier cu AES folosind o cheie secretă derivată cu Argon2](https://crypto.stackexchange.com/questions/75021/encrypt-a-file-with-aes-using-a-secret-key-derived-with -argon2) și stocați informațiile suplimentare.
DannyNiu avatar
drapel vu
Ceea ce descrieți în întrebare este de fapt comun cu toate KDF-urile care acceptă o sare.@kelalaka Deși sunt de acord că întrebarea legată are unele în suprapunere cu aceasta, setarea și contextul sunt destul de diferite din perspectiva înțelegerii.
kelalaka avatar
drapel in
@DannyNiu Am menționat deja că _păstrați aceste informații cu..._, dacă OP întreabă de ce ne amintim sarea, răspunsul este evident, PBKDF-urile și KDF-urile sunt toate deterministe, deci dacă introduceți aceleași valori veti obtine acelasi rezultat. Aceasta este ceea ce vrem de la Random Oracles, odată ce obținem o valoare pentru o intrare, vrem aceeași valoare când am întrebat cu aceeași intrare. iar ultima parte `folosește întotdeauna o sare aleatorie pentru hashing`... Cred că am acoperit totul.
kelalaka avatar
drapel in
@DannyNiu a scris unul pentru a acoperi totul, poate că am ratat o parte, deși unele trebuie să fie copiate și lipite...
Manglemix avatar
drapel us
@kelalaka acea întrebare răspunde de fapt la întrebările mele, mulțumesc
Puncte:2
drapel in

După înțelegerea mea, derivarea cheii este atunci când luați niște date, să spunem o parolă, și utilizați o funcție pentru a o converti într-un număr care poate fi folosit ca o cheie secretă în criptografia cu curbe eliptice, de exemplu.

Da, acest lucru este corect, totuși, rețineți că parola dvs. ar trebui să aibă suficient de puternică pentru a fi protejată de forțarea brută. O modalitate obișnuită este utilizarea zaruri sau Bip39 precum mecanismele de parole, vezi în xkc936.

Odată ce ați obținut cheia $k$, atunci aceasta este cheia dvs. privată și $[k]G$ este cheia dvs. publică în ECC cu punctul de bază $G$ a curbei. Ștergeți $k$ după utilizare, nici măcar nu-l stocați în memorie și păstrați-vă parola în siguranță!

Argon2 folosește o sare aleatorie la hashing, ceea ce necesită ca hash-ul să fie diferit de fiecare dată, în ciuda utilizării aceleiași parole.

Da, și asta este corect. Puteți considera acest lucru așa cum, cu toți parametrii lui Argon2, rulați o funcție deterministă. Aceeași intrare va rezulta din aceeași ieșire. Aceasta este ceea ce ne dorim de la funcțiile hash, funcțiile hash de parolă și Random Oracles; fi determinist; aceeași intrare trebuie să rezulte în aceeași ieșire.

Utilizarea de sare diferită este folosită pentru a obține mai mult de o cheie dintr-o parolă. Sarea în același timp este o bună contramăsură împotriva meselor curcubeu, acolo unde este cazul.

Dacă hash-ul este diferit, cum poate fi folosit pentru a reprezenta aceeași cheie secretă?

Pentru a obține aceeași cheie, trebuie să utilizați aceiași parametri; aceeași parolă, aceeași sare, aceeași iterație, aceeași utilizare a memoriei și aceeași paralelizare. Parametrii în afară de parola nu trebuie să fie neapărat secreti, pot fi stocați în mod deschis. De exemplu, acest tip de informații sunt stocate în Antet LUKS, partea importantă este să vă păstrați parola secretă tot timpul.

Trebuie să stocați acești parametri atunci când obțineți cheia din parolă.

Cum se utilizează Argon2 pentru derivarea cheii?

În primul rând, decideți securitatea țintă; adicăcat de mult vrei ca viata atacatorului sa fie grea. Ajustați numărul de iterații, gradul de paralelizare și utilizarea memoriei în funcție de securitatea țintă. Odată ce te-ai hotărât, generează o sare uniformă aleatorie. Determinați dimensiunea dorită a cheii, cum ar fi 256 de biți (sau 32 de biți). Acum sunteți gata să utilizați Argon2 cu aceste informații.

Furnizați informațiile dvs. către Argon și decideți securitatea țintă;

Utilizare: ./argon2 [-h] sare [-i|-d|-id] [-t iterații] [-m memorie] [-p paralelism] [-l lungime hash] [-e|-r] [- v (10|13)]
        Parola este citită din stdin
Parametri:
        sare Sarea de folosit, minim 8 caractere
        -i Folosește Argon2i (acesta este implicit)
        -d Utilizați Argon2d în loc de Argon2i
        -id Utilizați Argon2id în loc de Argon2i
        -t N Setează numărul de iterații la N (implicit = 3)
        -m N Setează utilizarea memoriei de 2^N KiB (implicit 12)
        -p N Setează paralelismul la N fire (implicit 1)
        -l N Setează lungimea ieșirii hash la N octeți (implicit 32)
        -e Ieșire numai hash codificat
        -r Afișează numai octeții bruti ai hashului
        -v (10|13) Versiunea Argon2 (implicit la cea mai recentă versiune, în prezent 13)
        -h Tipăriți utilizarea argon2

Rețineți că Argon2 are trei tipuri;

  • Argon2d este mai rapid și folosește acces la memorie în funcție de date. Dependența de date activează imediat canalul lateral. Acest lucru este potrivit pentru criptomonede și aplicații fără amenințări din partea atacurilor pe canale laterale.

  • Argon2i folosește acces la memorie independent de date și acest lucru este preferat pentru hashingul parolei și derivarea cheilor bazate pe parole.

  • Argon2id În prima jumătate a primei iterații funcționează ca Argon2i și pentru restul funcționează ca Argon2d. Acest lucru permite atât protecția canalului lateral, cât și compromisul timp-memorie.

și formă draft-irtf-cfrg-argon2-03;

Dacă nu cunoașteți diferența dintre ele sau considerați atacurile pe canalul lateral drept o amenințare viabilă, alegeți Argon2id.

Puncte:2
drapel cn

Este adevărat, folosești o sare generată aleatoriu cu argon2i/argon2d/argon2id. Cu toate acestea, acea sare aleatorie trebuie să fie generată doar o singură dată. Trebuie să cunoașteți sarea și parametrii utilizați în generarea de hash argon2 pentru a valida ulterior acel hash.

Unele biblioteci oferă ieșire hash codificată pentru argon2. Ieșirea codificată stochează hash-ul/parametrii/sarea într-un singur șir.Acest șir codificat poate fi apoi împărțit în hash/params/salt în momentul în care verificați hash-ul.

Această discuție Defcon este oarecum recentă și explică o parte din implementarea tehnică cu privire la argon2: https://youtu.be/4Tn71-1GN20?t=1271

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.