In conformitate cu Hartie HKDF, utilizarea unei sări servește la două scopuri: separarea domeniului și extracția aleatorie.
Această întrebare se referă numai la necesitatea unei sări în scopul extracției aleatorie.
The Hartie HKDF afirmă:
A valoarea de sare (adică, o cheie aleatorie, dar nesecretă)...
este esențial pentru a obține extractoare generice și KDF-uri care pot extrage aleatoriu din surse arbitrare cu suficient de mare
entropie.
The Extragerea aleatoriei și derivarea cheilor hârtie (legată de documentul HKDF) afirmă:
În plus, ipoteza aleatorie „monolitică” pe un singur
Funcția (nekeyed) cum ar fi SHA-1 este inadecvată pentru setarea
extragerea aleatoriei ca nicio funcție unică (chiar dacă este complet aleatorie)
poate extrage o distribuție aproape uniformă din arbitrar
distribuții de intrare cu entropie mare. Așa este, de când odată
funcția este fixă (chiar dacă la valori pur aleatoare) atunci Sunt
distribuții de intrare cu entropie mare care vor fi mapate la subseturi mici
de ieșiri. Prin urmare, abordarea viabilă pentru extracția aleatorie
este a lua în considerare o familie (sau o colecție) de funcții indexate de o mulțime
de chei. Când o aplicație necesită hashingul unei intrări pentru
scopul de a extrage aleatoriu, apoi un element aleatoriu (adică, a
funcția) din această familie se alege și se aplică funcția
intrarea dată. Deși pot exista distribuții specifice de intrare care
interactioneaza prost cu functii specifice din familie, un bine
aleatorie-extracție familia va face acest „eveniment rău” să se întâmple cu
probabilitate foarte mică.
Ultima întrebare este cum se generează cheile cunoscute aleatoare utilizate de
extractor. Din punct de vedere tehnic, acest lucru nu este greu, așa cum pot genera părțile
aleatoriu adecvat, dar detaliile exacte depind de
aplicarea.De exemplu, în schimbul de chei DH discutat mai devreme,
părțile schimbă în valorile clare alese aleatoriu, care sunt
apoi combinate pentru a genera o singură cheie [sare] pentru familia extractoare
(de exemplu, HMAC-SHA1).
The Hartie HKDF afirmă:
familia Merkle-Damgard [utilizat în proiectarea multor algoritmi hash populari, cum ar fi MD5, SHA-1 și SHA-2] construit pe aleatoriu
funcțiile de compresie este nu este un bun extractor de statistici... producția unei astfel de familii pe orice distribuție pentru care
ultimul bloc de intrare este fix este departe de a fi uniform din punct de vedere statistic)
Apoi ecou ideea făcută în Extragerea aleatoriei și derivarea cheilor hârtie:
După cum am subliniat deja în secțiunile anterioare extractoare generice,
adică cei care lucrează pe surse arbitrare de min-entropie ridicată, trebuie sa fie
randomizat printr-o cheie aleatorie, dar nu neapărat secretă (sau âsareâ).
În special, exemplul care urmează Lemei 2 arată că pentru fiecare
extractor determinist există o sursă cu entropie mare pentru care
ieșirea este departe de a fi uniformă.
Contrazicând aceste afirmații, știu despre o implementare ECDH care utilizează hash-ul Keccak-256 pe elementul de grup EC secret partajat fără sare, dar poate că acest lucru este justificat fie A) pe motiv că alegerea unui hash de construcție cu burete atenuează preocupările. care afectează hashurile familiei Merkle-Damgard sau B) pe motiv că o reprezentare a punctului comprimat EC este suficient de uniform aleatorie (comparativ cu uniformitatea aleatoriei unui secret partajat în DH non-EC).
În ce circumstanțe este necesară o sare? (pentru ce tipuri de material cheie de intrare și pentru ce tipuri de funcție HMAC-Hash).
Sunt aceste documente depășite și au fost atenuate într-o anumită măsură preocupările ridicate de aceste lucrări cu privire la utilizarea unei sări prin cercetări mai aprofundate asupra naturii funcțiilor hash moderne?