Puncte:1

Este sigur să stocați hash-ul unui text simplu?

drapel us

Când criptez datele, vreau să verific dacă cheia corectă a fost introdusă fără să o trimit. Este sigur să decriptezi textul cifrat și să compari hash-ul acestuia cu cel stocat sau textul simplu (care ar putea fi foarte lung) poate fi citit din hash?

kelalaka avatar
drapel in
Bine ați venit la Cryptography.SE Parolele nu sunt hashing cu hash-uri standard rezistente la coliziuni, cum ar fi SHA256 sau SHA3-512, ci sunt hashing cu algoritmi speciali de hashing pentru parole precum PBKDF2, Scrypt sau mai bine Argon2. Deși există [manager de parole open-source](https://www.wizcase.com/blog/most-secure-open-source-password-managers/) foarte bune precum Keepass, această întrebare este lipsa cercetării de bază a trebuie să facă un dezvoltator de manager de parole; **căutând ceea ce fac alții**!
kelalaka avatar
drapel in
De asemenea, parolele nu sunt stocate sub forma hash in managerul de parole, ele sunt stocate criptate astfel incat managerul de parole sa le poata decripta atunci cand este nevoie. hashingul este un proces unidirecțional care distruge datele originale. Hashing != criptare. trebuie să creați o cheie de criptare din parola utilizatorului, astfel încât această cheie să poată decripta cheia reală care criptează parolele.
kelalaka avatar
drapel in
Cum introduc utilizatorii cheile programului dvs.? Cum o memorează? Ei trebuie să introducă o parolă, de obicei generată cu una bună, cum ar fi dicewire.
Luqus avatar
drapel us
Parolele sunt stocate criptat. Dar când folosesc funcția mea de criptare, nu pot spune dacă este decriptată în textul simplu corect. Dacă apelez funcția cu o **cheie principală** greșită, tot va da o ieșire. Am hashing textul simplu, astfel încât să pot spune dacă a fost introdusă cheia corectă. După aceea, voi afișa interfața de utilizare cu text simplu, altfel aș spune utilizatorului că a introdus cheia principală greșită.
Luqus avatar
drapel us
Nu încerc să reproduc cel mai bun manager de parole, vreau să găsesc o modalitate pentru mine care să nu aibă mari defecte de securitate. Apropo, nu trimit parola, ci textul simplu, așa cum este menționat în întrebarea mea.
Puncte:1
drapel in

După cum au indicat alții, aceasta nu ar fi o schemă care ar fi conformă celor mai bune practici. Având în vedere că pui această întrebare, aș sugera cu tărie să folosești codul doar pentru practică.

În principiu, puteți hash datele și apoi le puteți cripta. Deoarece hash-ul rămâne confidențial până când cheia este găsită, acest lucru este luat în considerare atunci când vine vorba de protejarea hash-ului și a mesajului text simplu. Cu toate acestea, vă rugăm să rețineți că hash-then-encrypt în sine poate să nu fie sigur; noi in general preferați metode precum encrypt-then-MAC. Personal, aș încerca să folosesc o funcție de derivare a cheii bazată pe parolă și un mod de criptare autentificat, cum ar fi EAX / encrypt-then-HMAC (având grijă și de IV).

De asemenea, este o idee bună să stocați o valoare de verificare a cheii (de exemplu, un MAC peste unele date cunoscute) lângă ea. În acest fel, nu aveți problema că trebuie să încercați să decriptați toată baza de date înainte de a putea verifica dacă parola este corectă. Rețineți că un adversar poate valida dacă parola principală este corectă prin simpla decriptare a câtorva blocuri de date, astfel încât acest lucru nu va oferi niciun avantaj unui posibil atacator, adăugând în același timp experienței utilizatorului.

Luqus avatar
drapel us
Nu încerc să-mi trimit datele și să le criptez atunci, încerc să spun dacă o decriptare este corectă. Acesta este singurul motiv pentru care calculez hash-ul; pentru a spune dacă utilizatorul a introdus cheia principală corectă.
Luqus avatar
drapel us
Am adăugat un grafic la întrebarea mea care arată ce aș dori să obțin.
Maarten Bodewes avatar
drapel in
Este încă schema pe care o descriu. Dacă nu doriți să verificați integritatea datelor, atunci nu trebuie să le faceți hash în primul rând. Sincer să fiu, aș dori să știu dacă cineva a dat greș cu baza de date.
Puncte:1
drapel in

Un text simplu lung nu înseamnă că nu poate fi ghicit. Dacă hash-ul textului simplu este disponibil unui atacator, un astfel de atacator poate verifica eficient orice presupunere pe care o poate avea cu privire la textul simplu.

În multe scenarii din lumea reală, criptăm textul simplu cu entropie limitată, textul poate fi mare, dar totuși conține puține informații necunoscute atacatorului. Și cu un simplu hash eficient, chiar și încercarea de milioane de ghiciri pentru textul simplu poate fi foarte practic.

Există modalități mai bune de autentificare a criptării. Putem cripta apoi mac, putem folosi metode combinate precum GCM. Ambele sunt mai bune decât un hash text simplu.

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.