Puncte:0

Folosind bcrypt pentru a produce întotdeauna același hash ca SHA, MD

drapel tr

Vreau să profit de proprietatea lentă a bcrypt pentru a hash o intrare, dar vreau și să obțin aceeași valoare hash pentru aceeași intrare de fiecare dată, la fel ca SHA, MD etc.

Deci, pentru a face asta, în loc să folosesc o sare statică, care cred că este mai puțin sigură, mă gândesc să folosesc intrarea și ca sare? Ieșirea va fi valoarea hash minus bitul de sare din față (evident intrarea în sine).

Pe scurt Având în vedere o intrare m, bcrypt(cost, m, m) -> ctext, fără concatenare la sfârșit.

Deci, întrebarea este dacă utilizarea intrării atât ca sare, cât și ca parolă face ca pasul de derivare a cheii să fie mai puțin sigur pe baza proprietății bcrypt?

drapel et
De ce o sare statică nu va produce același hash?
drapel tr
@user93353 nu spune că nu va, este doar mai puțin sigur dacă îl pierdeți, poate fi necesar să reînnoiți fiecare hash din sistemul dvs.
drapel et
Sărurile sunt pe parolă. adică 1 sare per parolă. Este static pentru acea instanță a acelei parole. Nu este obișnuit între parole.
drapel tr
@user93353 poate că nu sunt clar sau ați ratat sensul acestei întrebări. Dacă generați o sare pe parolă, obțineți hash diferit de fiecare dată. Dacă aveți o sare statică pentru o anumită parolă, adică aveți un `f(m)->s` pentru un mesaj dat, care este același cu întrebarea mea, doar că `f(m)->m` meu este o functie identica.
drapel et
`Dacă generați o sare pe parolă, obțineți hash diferit de fiecare dată`. Nu, pentru o singură parolă, generați doar 1 sare. adică atunci când user1 creează pwd1, utilizați salt1 în timp ce creați contul. Și apoi, în timp ce îi verifici parola, folosești același salt1, așa că vei obține același hash. De fiecare dată când utilizați aceeași combinație pwd1 și salt1, veți obține același hash (dacă utilizați același număr de runde de fiecare dată, ceea ce ar trebui).
drapel tr
@user93353 încă ratezi sensul întrebării. Nu există nicio mențiune despre verificarea parolei aici. Scenariul este că ai o valoare pe care vrei să o trimiți (folosind această variantă bcrypt), o faci hash, obții valoarea hash, zile fericite. A doua zi, ai aceeași valoare pe care vrei să o faci hash, o faci hash și te aștepți să se obțină aceeași valoare hash.
SAI Peregrinus avatar
drapel si
bcrypt este o funcție de hashing a parolei. NU este o funcție hash criptografică obișnuită și adesea este nesigur să o folosiți ca una (posibile atacuri DoS).
SAI Peregrinus avatar
drapel si
De asemenea, sărurile sunt pe pereche (utilizator,parolă): atâta timp cât utilizatorul păstrează aceeași parolă, păstrează aceeași sare. Dacă parola se schimbă, sarea ar trebui să se schimbe. Dacă utilizatorul este diferit, TREBUIE să aibă o sare diferită.
Puncte:1
drapel cn

După cum sa menționat în comentarii, bcrypt este un hash de parolă și are limitări semnificative în comparație cu o funcție de hash criptografică generală.

Folosirea lui așa cum este intenționat, pentru introducerea parolei, dar cu sare la fel ca și introducerea, este la fel de sigură ca și fără sare deloc. Scopul sării este de a preveni atacurile cu mai multe ținte și de a preveni utilizarea meselor curcubeu. Dacă sarea este aceeași cu cea de intrare, acest lucru permite aceste atacuri, deoarece un atacator știe acum ce sare va fi pentru o anumită parolă țintă.

Folosind-o ca funcție hash generală, se confruntă cu un set complet diferit de probleme, cele mai grave fiind coliziunile. bcrypt are o limită de introducere de 72 de octeți pentru textul de intrare, dacă indexați bucăți mari de date va avea același hash ca și prefixul său de 72 de octeți. bcrypt repetă, de asemenea, intrări scurte până când umple matricea de stare de 72 de octeți, astfel încât o parolă de 18 caractere va avea aceeași ieșire ca parola repetată de 4 ori. Implementările pot pre-hash intrarea cu ceva de genul SHA-512 înainte de a ajunge la bcrypt, ceea ce previne aceste probleme. Deși în acest caz, deși este lentă, ieșirea sa este încă de numai 192 de biți în lungime, ceea ce limitează substanțial rezistența la coliziuni pentru utilizarea în lucruri precum semnăturile digitale.

Cu toate aceste limitări, există în mod clar opțiuni mai bune dacă doriți să încetiniți o funcție hash, cel mai evident este să rulați din nou în mod repetat ieșirea funcției hash. Acest lucru este, de asemenea, mai puțin complex decât bcrypt și vă poate permite să reutilizați funcțiile deja existente atât în ​​software, cât și în hardware. Dacă sunteți îngrijorat să rămâneți blocat într-un lanț hash dintr-un anumit motiv, puteți oricând să adăugați un cuvânt simplu de contor de iterație la intrare.Pentru unele funcții hash parametrizate, puteți crește și numărul de runde interne. Keccak, de exemplu, poate fi extins cu ușurință pentru a folosi mai multe runde, unele implementări care generează chei rotunde algoritmic pot necesita doar schimbarea unei singure linii de cod.

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.