Puncte:0

Algo-ul meu SHA-256 TableSalt cedează sarea de semințe?

drapel cn

Pregatirea

Am un tabel de valori pentru care trebuie să calculez a hash sarat pentru fiecare masă -celulă valoare. În plus, am nevoie de sare pentru fiecare celulă de masă unic și imprevizibile. (Pot explica mai târziu ce motivează această nevoie, dar deocamdată nu vreau să distrag atenția de la enunțul problemei.)

Acum nu vreau să adaug o coloană suplimentară pe coloană existentă într-un tabel doar pentru a stoca această sare unică, per celulă. Așadar, o strategie simplă pe care o am în minte este să generez mai întâi o secvență aleatorie secretă și sigură de 32 de octeți pentru întregul tabel, numiți-o R_32, iar apoi pentru orice celulă dată calculează-i sarea ca SHA-256 al R_32 concatenat cu coordonatele rândului/coloanei celulei. În pseudocod, așa arată

tableSalt(rând, col) = SHA_256( R_32 + rând + col )

Unde + aici înseamnă concatenare șir de octeți, nu adăugare. (Coordonatele rândului/coloanelor sunt reprezentate ca valori de 8 octeți fiecare.)

Întrebare

În aplicația mea, este esențial ca hashul secret de semințe R_32 de mai sus să nu fie reverse-inginerie, indiferent câte săruri celulare diferite din același tabel sunt cunoscute. Este sare de masă procedura de mai sus sigură în acest sens?

bk2204 avatar
drapel fr
Aș folosi HMAC în acest caz pentru a calcula sarea și apoi aș folosi sarea ca cheie pentru un al doilea HMAC pentru a calcula hashul sărat. Acest lucru va fi cu siguranță sigur și folosește mai multe tehnici standard care vor fi mai ușor de auditat.
Babak Farhang avatar
drapel cn
Preocuparea mea constă de fapt cu orice slăbiciuni cunoscute în SHA-256 (abateri de la o funcție hash criptografică * ideală *) atunci când sunt utilizate cu acele anexe de 16 octeți cu lățime fixă, entropie scăzută, la semințele de mai sus. Asta mă îngrijorează.
Meir Maor avatar
drapel in
Probabil că este în regulă așa cum este, dar HMAC este mai bun, va asigura o amestecare suficientă după adăugarea corelatelor, ceea ce face probabil că diferitele săruri vor fi legate într-o manieră problematică. De asemenea, SHA3 este mai bun în acest sens.
Puncte:0
drapel in

Este sigur? Da, deoarece în această configurație de bază este folosită în altă parte și nu sunt conștient de niciun atac practic. Cu toate acestea, SHA256 nu este cea mai bună alegere. Structura sa de bază nu se amestecă în sufix atât de bine cum ne-am dori. O structură HMAC sau pur și simplu utilizarea SHA3 cu o structură de burete ar fi mai bună, dar chiar și așa cum este scris, nu cred că sărurile vor fi legate într-un mod exploatabil.

Babak Farhang avatar
drapel cn
Multumesc pentru raspuns. Nu am suficiente puncte de karma pentru a marca răspunsul tău. (Cam ciudat, având în vedere că este întrebarea *mea* și mi s-a permis să o postez :) Care este această „structură-burete” pe care o menționezi? De asemenea, în scopul „amestecării”, există un mare avantaj în imbricarea calculului, ca în Hash(Hash(conținut + rând) + coloană))?
Meir Maor avatar
drapel in
Puteți marca ca aprobat. cu un cec chiar dacă nu poți vota pozitiv. Imbricarea ar însemna aplicarea unui hash complet după adăugarea hash-ului părții cu entropie scăzută (hash (sămânță principală + rând + coloană)). acest lucru este util în special pentru construcțiile Merkel Damgard. Dar SHA3 probabil că nu este necesar, este: https://en.m.wikipedia.org/wiki/Sponge_function
Babak Farhang avatar
drapel cn
Mulțumesc foarte mult pentru link și indicatorul despre capacitatea de a marca un răspuns final. Re *hash(hash(master seed+rând+coloană))* în loc de *hash(hash(master_seed + row) + coloana)* A fost o greșeală de tipar? Pentru că întotdeauna am crezut că hash-ul unui hash nu este mai sigur decât hash-ul original.
Meir Maor avatar
drapel in
Nu este echivalent pentru că se amestecă mai bine sămânța cu entropie ridicată. dar ceea ce am scris de fapt nu este „corect”/mai bine ar trebui să fie ca hmac. hash(seed + hash(seed+location)). Dar într-adevăr, din moment ce nu pot ataca nici măcar formula ta originală, aceste îmbunătățiri ar putea să nu fie necesare.

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.