Ce este SHAttered? SHA-1 atacurile de coliziune, explicate
În prima zi a anului 2016, Mozilla a încetat să susțină o tehnologie de securitate slabă numită SHA-1 în browserul web Firefox. Aproape imediat, ei și-au inversat decizia, deoarece ar reduce accesul la unele site-uri mai vechi. Dar în februarie 2017, temerile lor s-au dovedit a fi adevărate: cercetătorii au rupt SHA-1 prin crearea primului atac de coliziune în lumea reală. Iată ce înseamnă asta.
Ce este SHA-1?
SHA-ul din SHA-1 este valabil Secure Algorithm Hash, și, pur și simplu, ați putea să vă gândiți la ea ca pe un fel de problemă sau metodă de matematică scramblează datele introduse în el. Dezvoltat de NSA al Statelor Unite, este o componentă esențială a numeroaselor tehnologii utilizate pentru criptarea transmisiilor importante pe internet. Metodele obișnuite de criptare SSL și TLS, despre care ați auzit, pot utiliza o funcție hash ca SHA-1 pentru a crea certificatele semnate pe care le vedeți în bara de instrumente a browserului.
Nu vom intra adânc în matematica și informatică a vreuneia dintre funcțiile SHA, dar aici este ideea de bază. Un "hash" este un cod unic bazat pe intrarea oricăror date. Chiar și un șir de litere mici, aleatorii introduse într-o funcție hash, cum ar fi SHA-1, va întoarce un număr lung de seturi de caractere, făcând posibilă returnarea șirului de caractere înapoi la datele originale. Acesta este modul în care funcționează de obicei stocarea parolelor. Când creați o parolă, introducerea parolei este șterse și stocată de server. La întoarcere, când introduceți parola, este reluată din nou. Dacă se potrivește cu hash-ul original, se poate presupune că intrarea este aceeași și veți avea acces la datele dvs..
Funcțiile de ștergere sunt utile în primul rând pentru că ele ușurează să se determine dacă intrarea, de exemplu, un fișier sau o parolă, sa schimbat. Atunci când datele de intrare sunt secrete, ca o parolă, hash-ul este aproape imposibil de inversat și recuperarea datelor originale (cunoscută și sub numele de "cheie"). Acesta este un pic diferit de "criptarea", al cărui scop este codarea datelor cu scopul de a le decodifica mai târziu, folosind chei și chei secrete. Hashes are pur și simplu menirea de a asigura integritatea datelor - pentru a vă asigura că totul este același. Git, software-ul de control al versiunilor și distribuție pentru codul sursă open source, utilizează SHA-1 hash-uri din acest motiv.
Este o mulțime de informații tehnice, dar să o spun simplu: un hash nu este același lucru ca și criptarea, de atunci este folosit pentru a identifica dacă un fișier a fost modificat.
Cum mă afectează această tehnologie??
Să presupunem că trebuie să vizitați un site privat. Banca dvs., adresa dvs. de e-mail, chiar și contul dvs. Facebook - toate utilizează criptarea pentru a păstra datele private pe care le trimiteți. Un site web profesional va oferi criptarea prin obținerea unui certificat de la o autoritate de încredere - o terță parte, care are încredere că va asigura că criptarea este la nivel, este privată între site și utilizator și că nu este spionată de nicio altă parte. Această relație cu terțul, numită Autoritățile de certificare, sau CA, este crucială, deoarece orice utilizator poate crea un certificat "auto-semnat" - îl puteți face chiar și pe o mașină care rulează Linux cu Open SSL. Symantec și Digicert sunt, de exemplu, două companii cunoscute de CA.
Să trecem printr-un scenariu teoretic: Cum-Pentru a Geek vrea să păstreze autentificat în sesiunile utilizatorilor private cu criptare, așa că petiții un CA ca Symantec cu un Solicitarea semnării certificatului, sau CSR. Ei creează o cheia publică și cheia privată pentru criptarea și decriptarea datelor trimise prin internet. Solicitarea CSR trimite cheia publică către Symantec împreună cu informații despre site-ul Web. Symantec verifică cheia împotriva înregistrării sale pentru a verifica dacă datele sunt neschimbate de către toate părțile, deoarece orice schimbare redusă a datelor face radacina radicală diferită.
Cheile publice și certificatele digitale sunt semnate de funcțiile hash, deoarece rezultatele acestor funcții sunt ușor de văzut. O cheie publică și un certificat cu un hash verificat de la Symantec (în exemplul nostru), o autoritate, asigură unui utilizator de How-To Geek că cheia este neschimbată și nu este trimisă de cineva rău intenționat.
Deoarece hash-ul este ușor de monitorizat și imposibil (unele ar spune "greu") pentru a inversa, semnătura hash verificată și corectă înseamnă că certificatul și conexiunea pot fi de încredere și că datele pot fi convenite să fie trimise criptate de la capăt la capăt . Dar dacă hașhelul nu era de fapt unică?
Ce este un atac de coliziune și este posibil în lumea reală?
S-ar putea să fi auzit despre "Problema zilei de naștere" în matematică, deși este posibil să nu fi știut ce a fost numit. Ideea de bază este că, dacă aduni un grup suficient de mare de oameni, șansele sunt destul de mari ca două sau mai multe persoane să aibă aceeași zi de naștere. Mai mult decât v-ați aștepta, de fapt - suficient ca să pară o coincidență ciudată. Într-un grup cât mai mic de 23 de persoane, există o șansă de 50% ca doi să împartă o zi de naștere.
Aceasta este slăbiciunea inerentă a tuturor hash-urilor, inclusiv SHA-1. Teoretic, funcția SHA ar trebui să creeze un hash unic pentru toate datele introduse în el, dar pe măsură ce numărul de hashes crește, devine mai probabil ca perechi diferite de date să poată crea același hash. Așadar, s-ar putea crea un certificat nesatisfăcător cu un hash identic unui certificat de încredere. Dacă te-au făcut să instalezi acel certificat care nu are încredere, s-ar putea să se tâlcuiească și să distribuie date rău-intenționate.
Găsirea corespondenței potrivite în două fișiere se numește a atac de coliziune. Cel puțin un atac de coliziune pe scară largă se știe că sa întâmplat deja pentru hashesul MD5. Dar, pe 27 februarie 2017, Google a anunțat SHAttered, prima ciocnire produsă pentru SHA-1. Google a reușit să creeze un fișier PDF care avea același hash SHA-1 ca un alt fișier PDF, în ciuda faptului că are conținut diferit.
SHAttered a fost realizat pe un fișier PDF. Fișierele PDF sunt un format de fișier relativ slab; o mulțime de mici modificări la nivel de biți se pot face fără a împiedica cititorii să o deschidă sau să producă diferențe vizibile. De asemenea, PDF-urile sunt adesea folosite pentru a furniza programe malware. În timp ce SHAttered ar putea funcționa pe alte tipuri de fișiere, cum ar fi ISO, certificatele sunt specificate rigid, făcând un astfel de atac improbabil.
Deci, cât de ușor este acest atac să se facă? SHAttered se bazează pe o metodă descoperită de Marc Stevens în 2012, care necesită operațiuni SHA-1 de peste 2 60,3 (9,223 quintillion) - un număr uluitor. Totuși, această metodă are încă 100.000 de ori mai puține operațiuni decât ar fi necesară pentru a obține același rezultat cu forța bruta. Google a constatat că, cu 110 carduri grafice de ultimă generație care funcționează în paralel, ar fi nevoie de aproximativ un an pentru a produce o coliziune. Închirierea acestui timp de calcul de la Amazon AWS ar costa aproximativ 110.000 $. Rețineți că, pe măsură ce scăderea prețurilor pentru componentele calculatorului și puteți obține mai multă putere pentru mai puțin, atacurile ca SHAttered devin mai ușor de tras.
110.000 dolari ar putea părea mult, dar este în domeniul accesibilității pentru unele organizații - ceea ce înseamnă că cybervillians viața reală ar putea să creeze semnături digitale de documente, să interfereze cu sistemele de backup și de control al versiunilor precum Git și SVN sau să facă un ISO Linux malware să pară legitim.
Din fericire, există factori atenuanți care împiedică astfel de atacuri. SHA-1 este rar folosit pentru semnăturile digitale. Autoritățile de certificare nu mai oferă certificate semnate cu SHA-1, iar Chrome și Firefox au renunțat la asistență pentru acestea. Distribuțiile de tip Linux diferă de obicei mai des decât o dată pe an, făcându-l imposibil pentru un atacator să creeze o versiune rău-intenționată și apoi să genereze o căptușeală pentru a avea același hash SHA-1.
Pe de altă parte, unele atacuri bazate pe SHAttered se întâmplă deja în lumea reală. Sistemul de control al versiunii SVN utilizează SHA-1 pentru a diferenția fișierele. Încărcarea celor două fișiere PDF cu aceleași șacheturi SHA-1 într-un depozit SVN va provoca o corupere.
Cum mă pot proteja de atacurile SHA-1??
Nu există multe pentru utilizatorul tipic de a face. Dacă utilizați sumele de control pentru a compara fișierele, ar trebui să utilizați SHA-2 (SHA-256) sau SHA-3 mai degrabă decât SHA-1 sau MD5. De asemenea, dacă sunteți un dezvoltator, asigurați-vă că utilizați algoritmi de hash mai moderni, cum ar fi SHA-2, SHA-3 sau bcrypt. Dacă sunteți îngrijorat de faptul că SHAttered a fost folosit pentru a da două fișiere distincte același hash, Google a lansat un instrument pe site-ul SHAttered care vă poate verifica.
Credite de imagine: Lego Firefox, O mulțime de Hash, vă rugăm să nu rănit autorul Web necunoscut, Google.