Atacul Shattered găsește un fișier/mesaj B diferit care are același hash SHA-1 ca un fișier/mesaj A, dar numai dacă o secțiune a datelor din A are o caracteristică care nu se va întâmpla întâmplător. Pentru majoritatea formatelor de fișiere/semantice de date, aceasta permite încă atacul adversarilor care nu pot modifica semnificația/aspectul/efectul lui A, dar pot influența ușor conținutul binar al lui A.
Am o sursă de date A și un hash H(A) al acestui A. Este posibil, prin documentele sparte de la Google, să creez o nouă date B care scoate acest H(A)?
Răspunsul depinde de datele A, care în sine depind de modul în care a fost obținut sau produs A, pe care întrebarea nu le precizează sau nu permite să le ghicească.
- da, fără efort de calcul, dacă A începe cu una dintre cele două valori particulare de 320 de octeți pe care le-a dat atacul Shattered. Putem înlocui doar unul cu celălalt pentru a forma B cu același hash SHA-1. Acest lucru poate fi folosit (printre altele) pentru a crea fără efort două fișiere PDF valide diferite, cu conținut de octeți ușor diferit și aspect vizual complet diferit.
- Nu, dacă A este mai mic de aproximativ 125 de octeți, atunci când rămâneți la metoda din lucrarea Shattered, chiar și cu efortul lor de calcul. Dar trebuie să coborâm această limită la aproximativ 19 octeți dacă schimbăm metoda și acceptăm o creștere a efortului de calcul cu un factor modest (aproximativ 250 de mii) la aproximativ $2^{81}$ Hash-uri SHA-1.
- da, cu efortul de calcul al lui Shattered, dacă un adversar poate alege primii 128 de octeți ai lui A. Acesta este încă atacul Shattered, dar necesită o muncă considerabilă. Putem reduce această limită la 64 de octeți dacă acceptăm creșterea efortului de calcul din punctul anterior.
- da, ca prelungire a lui 3, dacă adversarul îl cunoaște pe primul $n$ octeți de A și poate alege următorul $128+(-n\bmod 64)$ octeți. Și trebuie să coborâm asta la $64+(-n\bmod 64)$ octeți cu efortul de calcul crescut. Acest lucru poate fi extins și mai mult la adversarul care alege aproximativ 20 de octeți de informații în primul $64\,f$ octeți de A cu cunoașterea acelei secțiuni a lui A și o creștere suplimentară a muncii cu un factor nu mai mare de $f$.
- da, ca o consecință a lui 4, dacă A este pregătit într-un mod sub controlul unui adversar, de ex. dacă A este un document PDF, imagine PNG, imagine „ISO” CD/DVD, poate un fișier executabil pregătit folosind instrumente create de un adversar. Pentru certificate digitale, vezi această întrebare.
- Nu, dacă A trece testul oferit de autorii Shattered și rămânem la metoda lor de atac. Dar testul lor nu poate proteja împotriva altor atacuri cu costuri comparabile și niciun test nu poate proteja împotriva atacurilor cu costuri modeste crescute.
- Nu, dacă există cel puțin 64 de biți de entropie în primii 64 de octeți ai lui A care sunt necunoscute unui adversar într-un moment în care adversarul îl poate influența pe A, pentru orice efort de calcul fezabil. Acestea includ certificate aleatorii A și digitale emise de autoritățile de certificare care iau simpla precauție de a utiliza numere de serie aleatorii la începutul certificatului.
Vreau să mă asigur că formatul fișierului nu este limitat la PDF.
Atacul și extensia Shattered nu se limitează la PDF, vezi 3/4/5. Poate fi transportat (cu ceva lucru) cu orice format de fișier fără vreo verificare internă a redundanței; adică majoritatea. Mai mult, analogii de prefixe la 1 (care este specializat pentru falsificarea ieftină a PDF-ului) pot fi concepute pentru multe formate, inclusiv JPEG, PNG, GIF, MP4, JPEG2000, formatul Portable Excutable și multe altele, cu o muncă considerabilă, dar fezabilă, care trebuie făcută numai o singura data. Prefixele lui 1 funcționează chiar și cu unele formate de fișiere existente, de ex. audio și video pentru jucătorii care sărit peste ceea ce nu recunosc (din moment ce întrebarea nu cere că diferiții A și B se comportă diferit; asta ar fi greu de realizat cu prefixele de 1 pentru ceva care nu este PDF și un player standard nu concepute în acest scop).
Dacă aveți îndoieli: mai bine să vă protejați decât să vă pare rău, presupuneți că da, atacul este posibil și utilizați un hash neîntrerupt și semnificativ mai larg decât SHA-1
(principiul) lucrării este de a completa două blocuri de mesaje
Nu chiar. Este completat câteva bucăți înăuntru Două consecutiv blocuri de mesaje (64 octeți fiecare), care conținut este ales (cu o muncă considerabilă, dar fezabilă) în funcție de starea hash înainte de procesarea acestor două blocuri de mesaje. Prin urmare, conținutul acestor două blocuri de mesaje din A nu este arbitrar, trebuie să se potrivească cu acești 128 de octeți calculați cu durere. O astfel de potrivire nu se va întâmpla accidental (de exemplu, pentru A aleatoriu), necesită un anumit control asupra lui A și cunoașterea stării hash-ului înainte de hashing aceste două blocuri. O astfel de cunoaștere poate fi obținută prin cunoașterea părții mesajului A dinaintea acestor două blocuri de A trebuie să aleagă pentru ca atacul să funcționeze.
Un atac care funcționează pentru A arbitrar ar fi un (al doilea) atac preimagine. Un astfel de atac nu este cunoscut pentru SHA-1.