Puncte:2

Atacul pre-imagine asupra funcțiilor hash non-criptografice

drapel us

Nu sunt bun la criptografie, așa că vă rog :)

După ce ai citit asta discuţie acum îmi este clar că xxHash nu este rezistent la atacurile de coliziune și nu este sigur pentru MAC utilizare. Dar după ce l-am citit, încă nu înțeleg cât de rezistent este XXH3 (unul din familia xxHash) la atacurile preimagine.

Da, ieșirea XXH3 este $64$/$128$ biți, ceea ce înseamnă că probabilitatea de a găsi o imagine este $2^{64}$/$2^{128}$ corespunzător. Dar și eu citit că hashe-urile care nu sunt rezistente la atacul de coliziune sunt mai ușor de inversat. Luați în considerare acest lucru, pentru a anula această funcție hash ($128$ versiunea bit) folosind brute-force will around $2^{64}$ are calcule care este o cantitate mare de timp. Conform cu aceasta întrebare chiar dacă XXH3 este de 1000 de ori mai rapid decât SHA-512/64 pentru a reveni, va dura cel puțin $\frac{2^{64}}{1000 * 2^{20}}$ secunde sau 557 de ani.

Ceea ce mă duce la prima mea întrebare. Este concluzia mea adevărată și XXH3 este aproape la fel de rezistent la atacurile pre-imagine ca SHA-512/64? Am pierdut ceva? Poate că există un fel de atac care nu este forța brută?

Și a doua întrebare care mă deranjează mult. Nu este un secret faptul că hashe-urile (în special XXH3) produc coliziuni. Pentru hashurile criptografice este greu să le găsești, dar ele există. Când am executat cu succes atacul preimagine, cum putem fi siguri că valoarea pe care o găsim este valoarea inițială? Dacă un atacator reușește să obțină o imagine, cât de probabil este ca aceasta să fie imaginea originală și nu una dintre multele ciocniri?

Multumesc anticipat.

Puncte:3
drapel my

Dar după ce l-am citit, încă nu înțeleg cât de rezistent este XXH3 (unul din familia xxHash) la atacurile preimagine.

Deloc - este ușor să creezi o imagine care are o valoare arbitrară.

Da, ieșirea XXH3 este de 64/128 de biți, ceea ce înseamnă că probabilitatea de a găsi o imagine este $2^{64}/2^{128}$ corespunzător.

Probabilitățile sunt valabile dacă strategia pe care o utilizați este „alegeți o imagine, tăiați-o și vedeți care este rezultatul”. Există strategii mult mai eficiente.

Poate că există un fel de atac care nu este forța brută?

Sigur este.

xxhash constă din pași care:

  • Transformă starea curentă într-un mod inversabil; sau

  • Adăugați un cuvânt care depinde (din nou, într-un mod inversabil) de următorul cuvânt al imaginii (și nicio altă operațiune din xxhash nu depinde de acel cuvânt de intrare).

Prin urmare, pentru a genera o imagine care are o anumită valoare, tot ce trebuie să faceți este să selectați un șablon care constă din valori, cu excepția unui cuvânt; apoi, evaluați xxhash-ul înainte până ajungeți la acel cuvânt, venind cu o valoare de stare internă A. Apoi, luați valoarea hash țintă și calculați xxhash-ul înapoi până ajungeți la acel cuvânt, venind cu o valoare de stare internă B. Apoi, tot ce trebuie să faceți este să selectați singurul cuvânt necunoscut pentru a fi ceva care convertește valoarea de stare A în valoarea de stare B - asta este ușor; introduceți acel cuvânt în șablon și ați terminat.

Și, pentru a răspunde la ultima ta întrebare:

Pentru hashurile criptografice este greu să le găsești, dar ele există. Când am executat cu succes atacul preimagine, cum putem fi siguri că valoarea pe care o găsim este valoarea inițială?

Evident, coliziunile sunt inevitabile pentru orice funcție care convertește un șir potențial lung într-un șir de lungime fixă ​​mai scurt. Acum, dacă găsim o imagine care are aceeași valoare, cum ne asigurăm că este aceeași imagine care a fost hashing inițial? Răspuns: în general, nu putem, cu excepția cazului în care știm multe despre imaginea originală (de exemplu, în atacul de mai sus asupra xxhash, știam toate cuvintele de intrare, cu excepția unuia). Pe de altă parte, pentru majoritatea atacurilor împotriva hashurilor criptografice, nu ne pasă - atacatorul câștigă de obicei dacă poate găsi orice preimagine.

Eugene Sirkiza avatar
drapel us
Mulțumesc mult @poncho pentru răspuns. Există vreo modalitate de a estima cât este nevoie pentru a găsi hash-ul „potrivit”? Adică, este cu siguranță un alt tip de întrebare, dar având în vedere răspunsul tău acum, sunt interesat de următoarele. Care este complexitatea de a găsi toate imaginile posibile care au o valoare specificată? Și putem estima câte dintre aceste preimagini există?

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.