Puncte:1

cât de mare este posibilitatea de a obține o coliziune hash în fișierele text?

drapel in

Doar de exemplu, să presupunem că am descărcat „aventurile lui Tom Sawyer” de la gutenberg în format de fișier .txt și l-am salvat pe unitatea mea USB.

Și după cum puteți vedea, unitatea USB nu este un dispozitiv ideal pentru păstrarea datelor pe termen lung. Dar dacă insist să-l folosesc, există posibilitatea ca orice fișiere din stocarea mea să fie în sfârșit corupte după mult timp fără să-l pornesc.

Deci, ceea ce voi face acum este să salvez hash al fișierului atunci când îl salvez prima dată și mai târziu pot compara cu ușurință valoarea hash curentă cu cea când l-am salvat inițial. dacă cele două sunt diferite, este foarte probabil corupt (cum ar fi cuvintele prostii adăugate sau lipsește o parte din document). Plănuiesc să fac acest lucru pentru toate fișierele importante pe care le salvez în stocare.

Dar problema este că uneori hash-ul va fi identic, chiar dacă există unele modificări minore, deoarece numărul de ieșiri hash va fi întotdeauna mai mic decât intrările de date. Ar trebui să fiu îngrijorat de coliziunea pentru cazul meu de utilizare? Și cum rămâne cu alte tipuri de fișiere, inclusiv pdf, jpg, exe, zip etc.? Sunt și acestea vulnerabile pentru coliziunea hash?

Și, în sfârșit, știu că există o mulțime de algoritmi hash pentru un singur fișier de la crc32 la md5 la sha1 etc, și pentru scopul meu (doar verificarea validității datelor), ce ați recomanda și de ce?

Multumesc anticipat!

Puncte:2
drapel ng

Când utilizați a $n$-bit hash, probabilitatea ca an accidental schimbarea rămâne nedetectată este despre $2^{-n}$ (pentru hashe-uri care își îndeplinesc chiar și ușor obiectivele de proiectare).

Dacă cineva folosește această tehnică o dată pe secundă timp de 100 de ani, cu un hash de 128 de biți precum MD5, probabilitatea este $36524\times86400\times2^{-128}\approx2^{31.6-128}=2^{-96.4}$.

Știm de 44 cratere pe pământ, cauzată de coliziunea cu un corp ceresc suficient de mare pentru a fi o lovitură majoră pentru civilizația noastră actuală, care a avut loc în ultimii 2,3 G de ani. Astfel, probabilitatea unui eveniment de perturbare a civilizației în acest interval de timp de 100 de ani este cel puțin $44\times100/(2,3\times10^9)\approx2^{-19}$ (și sunt optimist aici: distrugerea nucleară provocată de om este probabil mai probabilă). Prin urmare, nu are rost să ne batem cu o probabilitate de numai $2^{-96.4}$.


Dar în criptografie, luăm în considerare adversarii care încearcă activ să ne învingă. Dacă folosim un hash de 128 de biți (cum ar fi MD5) și facem multe fișiere (de exemplu $2^{31.6}$ ca mai sus, care hashuri se potrivesc unui stick USB de 64 GB) și au adversari puternici cu genul de resurse irosite în mineritul bitcoin¹, atunci posibilitatea ca ei să găsească un fișier cu același hash ca și unul dintre noi devine considerabilă (deși nu este ideea). m-ar deranja).

Pericolul real și imediat vine dacă presupunem că adversarii reușesc să pătrundă în software-ul pe care îl folosim pentru a ne salva fișierele (să zicem PDF) și suntem suficient de proști să folosim MD5 sau SHA-1, care rezistență la coliziune cu prefixul ales este rupt. Acum adversarii pot produce fără efort fișiere cu același MD5 sau SHA-1 ca oricare al nostru, care arată exact așa cum le consideră potrivite adversarii atunci când sunt vizualizate.


În scopul meu (doar verificarea validității datelor), ce ați recomanda?

Ignorarea posibilității de modificări adverse este în afara subiectului într-un grup cripto. Dacă facem asta, un CRC este suficient. 64 de biți este bine. Singurul lucru de care trebuie să vă temeți este că mass-media ar putea folosi intern un CRC și ei intervin. Din lipsă de informații, alegerea unui CRC primitiv pe 64 de biți are sens.

Înapoi la criptografie și modelul său advers: ar trebui să fie folosite hashuri neîntrerupte precum cele ale familiei SHA-2 sau SHA-3. În afara unei descoperiri la care puțini se așteaptă, SHA-256 este sigur în mod adecvat pentru cel puțin un deceniu, SHA-512 pentru totdeauna (la scară umană), chiar dacă presupunem că vom primi vreodată Calculatoare cuantice relevante din punct de vedere criptografic.


¹ Vorbesc despre puterea electrică totală și circuitele integrate irosite. Cu toate acestea, cea mai mare parte nu ar fi pentru hashing masiv paralel cu ASIC-uri ca în mineritul bitcoin. Ar fi pentru memorie rapidă organizată pentru căutare, deoarece calcularea hashurilor MD5 are un cost scăzut în comparație cu potrivirea lor cu $2^{\approx31.6}$ hashuri țintă.

drapel in
Vă mulțumesc mult pentru răspunsul dumneavoastră detaliat! Btw nu m-ar deranja prea mult în privința securității, deoarece majoritatea fișierelor mele sunt conținut pentru referință sau în scopuri de divertisment. Deci, pentru exemplul de mai sus, dacă oricare dintre cuvinte este adăugat, eliminat sau înlocuit cu altul din romanul broșat de 300 de pagini din cauza coruperii fișierului, șansa ca acesta să aibă o valoare hash identică cu cea originală este neglijabilă în măsura în care câștigă Powerball. De 3 ori la rând sau chiar mai jos, nu-i așa? Vă mulțumesc încă o dată pentru liniștea sufletească :) Răspuns acceptat.
fgrieu avatar
drapel ng
@tadkov: da, cu un hash de 128 de biți, șansele ca orice fișier hash la 1 pe secundă timp de 100 de ani să fie corupt _accidental_ fără detectare sunt mai mici (cu un factor de 4000) decât câștigarea powerball-ului de trei ori în trei pariuri.

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.