Puncte:3

Adăugarea unui text cunoscut la o intrare scade securitatea hash?

drapel cn

Imaginați-vă că vreau să trimit o cheie privată K (adică haș (K)), dar dacă am aplicat hash o concatenare a cheii K și a numelui de utilizator, să spunem următorul hash: hash("john cena" + K )

Să presupunem că toată lumea (chiar și hackerul) știe că „john cena” este folosit pentru a face hash: poate ajuta hackerii să inverseze hash-ul?

Cu alte cuvinte, există o diferență în ceea ce privește siguranța de a face haș (K) sau hash("john cena" + K ) (unde „john cena” este cunoscut de toată lumea)?
Pentru că se simte că oferirea intuitivă a informațiilor despre intrare ar trebui să ofere ajutor pentru un atac de orice fel.

kelalaka avatar
drapel in
O înșelăciune similară a [Cunoașterea SHA256 (secret – constantă cunoscută) în plus față de SHA256 (secret) oferă informații despre secret?](https://crypto.stackexchange.com/q/66743/18298)
Puncte:3
drapel fr

O funcție hash criptografică sigură oferă rezistența preimagine, care Wikipedia definește astfel:

[P]sau, în esență, toate ieșirile prespecificate, este imposibil din punct de vedere computațional să găsești orice intrare care trimite hash la acea ieșire; adică, dat fiind y, este dificil să găsim un x astfel încât h(x) = y.

Aceasta înseamnă că pentru o funcție hash criptografică sigură, cea mai eficientă modalitate de a determina intrarea este prin forța brută. Cât de ușor este forța brută depinde de entropia din intrare. Dacă cheia dvs. criptografică este de 128 de biți și utilizați SHA-256, care oferă securitate pe 256 de biți împotriva atacurilor preimagine, atunci cel mai bun atac de forță brută este să ghiciți intrarea pe 128 de biți.

Când utilizați un șir fix, acesta nu adaugă nicio entropie la hash, așa că nu îngreunează situația. Dar, de asemenea, nu ușurează ghicirea intrării, deoarece ghicirea intrării (efectuarea unui atac preimagine) se presupune că este imposibil din punct de vedere computațional, indiferent.

Un lucru care trebuie remarcat este că SHA-256 este vulnerabil la atacurile cu extensie de lungime, în care un atacator care cunoaște o ieșire poate produce hash-uri valide care încep cu același prefix fără a cunoaște acel prefix. Dacă acest lucru contează în situația dvs., utilizați un hash care nu este vulnerabil la acest lucru, cum ar fi unul dintre hashurile SHA-3 sau BLAKE2.

poncho avatar
drapel my
Doar bate-ma la asta...
Loris Foe avatar
drapel cn
Multumesc pentru raspuns! Dar: „ dat fiind y, este dificil să găsești un x astfel încât h(x) = y” Oare partea „este dificil să găsești un x” rămâne adevărată chiar dacă știm **o parte din x** ( șir "john cena") ?
bk2204 avatar
drapel fr
Da, rămâne adevărat. Practic, se poate demonstra că, dacă cunoașterea unei părți din input a slăbit hash-ul, atunci acesta nu și-ar mai îndeplini garanțiile de securitate.
drapel za
nimic în neregulă cu BLAKE2, dar există o [alternativă mai bună](https://github.com/BLAKE3-team/BLAKE3/blob/master/README.md) acolo ^^
bk2204 avatar
drapel fr
BLAKE3 este mai rapid, dar personal îl găsesc insuficient de conservator după bunul meu plac și nu am găsit o cantitate suficientă de criptoanaliza pentru a mă răzgândi în această privință. Drept urmare, am ales să nu-l recomand aici.
Puncte:2
drapel cn

se simte că oferirea intuitivă a informațiilor despre intrare ar trebui să ofere ajutor pentru un atac de orice fel.

Ei bine, da, dar de fapt nu. Daca stii asta h = hash("john cena" + K), atunci aveți câteva informații despre preimaginea lui h. Dar această informație este că începe cu "John Cena". Asta nu ajută la găsirea K.

(Mai precis, h probabil are mai multe preimagini și știți că una dintre preimagini începe cu K. Acest lucru nu este cu adevărat important, deoarece pentru o funcție hash, nu puteți găsi o coliziune.)

Funcțiile hash de uz obișnuit sunt calculate în flux de la stânga la dreapta: calculul hash (P + K) constă în prelucrare P, apoi procesare K, și aplicarea unei funcții de finalizare. Cu acest design, calculând hash (P + Ki) pentru multe valori ale Ki este exact la fel de scump ca calculul hash(Ki), plus un singur calcul de procesat P care nu trebuie repetat pentru fiecare Ki. Pe de altă parte, calculând hash (Ki + S) pentru multe valori ale Ki necesită prelucrare S din nou de fiecare dată, așa că este ceva mai scump decât calculul Ki.

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.