Prvi dan 2016. godine, Mozilla je ukinuo podršku za slabljenu sigurnosnu tehnologiju zvanu SHA-1 u Firefox web pregledniku. Gotovo odmah su preokrenuli svoju odluku, jer bi smanjili pristup nekim starijim web stranicama. No, u veljači 2017., njihovi strahovi konačno su se ostvarili: istraživači su prekršili SHA-1 stvaranjem prvog napada na sudar u stvarnom svijetu. Evo što sve to znači.
Znači SHA u SHA-1 Sigurni algoritam algoritma, i, jednostavno rečeno, možete ga zamisliti kao neku vrstu matematičkog problema ili metode raspršuje podatke koji se stavljaju u nju, Razvijen od strane Sjedinjenih Država NSA, to je ključna komponenta mnogih tehnologija koje se koriste za šifriranje važnih prijenosa na internetu. Uobičajene metode šifriranja SSL i TLS, za koje ste možda čuli, mogu koristiti hash funkciju poput SHA-1 za stvaranje potpisanih potvrda koje vidite na alatnoj traci preglednika.
Nećemo ići duboko u matematiku i računalnu znanost bilo kojeg SHA funkcija, ali ovdje je osnovna ideja. "Hash" je jedinstveni kôd koji se temelji na unosu podataka. Čak i mali, slučajni niz slova koji se unose u hash funkciju poput SHA-1 vratit će dugi, postavljeni broj znakova, što bi (potencijalno) nemoguće vratiti niz znakova natrag na izvorne podatke. Ovako funkcionira pohrana zaporke. Kada stvorite lozinku, poslužitelj šalje vašu lozinku i unosi ga. Po povratku, kada upišete lozinku, ponovno je iskrivljen. Ako se podudara s izvornim raspršivačem, može se pretpostaviti da je unos jednak, i bit će vam dopušteno pristupiti vašim podacima.
Hash funkcije korisne su prvenstveno zato što olakšavaju otkrivanje je li se ulaz, na primjer, datoteka ili lozinka, promijenio. Kada su ulazni podaci tajni, kao lozinka, hash je gotovo nemoguće preokrenuti i oporaviti izvorne podatke (također poznat kao "ključ"). To je malo drugačije od "enkripcije", čija je svrha kodiranje podataka radi kasnije dekodiranja, koristeći šifre i tajne ključeve. Pukotine jednostavno trebaju osigurati integritet podataka - kako bi bili sigurni da je sve isto. Git, softver za nadzor i distribuciju verzije za kod otvorenog koda, iz tog razloga koristi SHA-1 hashe.
To je puno tehničkih informacija, ali jednostavno rečeno: hash nije isto od šifriranja koristi se za identifikaciju je li datoteka promijenjena.
Recimo da morate posjećivati web stranicu privatno. Vaša banka, vaša e-pošta, čak i vaš Facebook račun - svi koriste šifriranje kako bi zadržali podatke koji ih šaljete privatnim. Profesionalna web stranica omogućit će šifriranje dobivanjem certifikata od pouzdane ovlasti - treće strane, s povjerenjem kako bi se osigurala šifriranje na razini, privatna između web stranice i korisnika, a koju ne spominje niti jedna druga strana. Taj odnos s trećom stranom, nazvanom Tijela za izdavanje certifikata, ili CA, od presudne je važnosti, jer svaki korisnik može stvoriti "self-signed" certifikat - čak možete to učiniti sami na računalu sa sustavom Open SSL. Na primjer, Symantec i Digicert su dvije široko poznate CA tvrtke.
Proučavajmo teorijski scenarij: How-To Geek želi zadržati privatno zapisano u enkripciji korisnika, stoga poziva CA kao što je Symantec s Zahtjev za potpisivanje certifikata, ili DOP, Oni stvaraju a javni ključ i privatni ključ za šifriranje i dešifriranje podataka poslanih preko interneta. CSR zahtjev šalje javni ključ Symantec zajedno s informacijama o web stranici. Symantec provjerava ključ protiv svojeg zapisa kako bi provjerio da podaci nisu nepromijenjeni od strane svih stranaka, jer svaka mala promjena podataka čini kalup radikalno različitim.
Ti javni ključevi i digitalni certifikati potpisani su s hash funkcijama, jer se izlaz tih funkcija lako vidi. Javni ključ i potvrda s provjerenim hashom iz Symanteca (u našem primjeru), ovlaštenom tijelu, osiguravaju korisniku Kako-To Geek da je ključ nepromijenjen, a ne poslan od nekog zlonamjernog.
Budući da je hash lako nadgledati i nemoguće (neki bi rekli "teško") da se preokreću, točan, ovjereni hash potpis znači da se potvrda i veza mogu pouzdati, a podaci se mogu dogovoriti da se šalju šifrirani od kraja do kraja , Ali što ako je hash nije zapravo bio jedinstven?
Možda ste čuli za "Problem rođenja" u matematici, iako možda niste znali što se zove. Osnovna ideja je da ako okupite dovoljno veliku grupu ljudi, prilike su prilično visoke da će dvije ili više ljudi imati isti rođendan. Više nego što biste očekivali, zapravo - dovoljno da izgleda kao čudna slučajnost. U skupini od čak 23 osobe postoji 50% šanse da će dva imati zajednički rođendan.
To je inherentna slabost svih haseva, uključujući SHA-1. Teoretski, SHA funkcija bi trebala stvoriti jedinstveni raspršivač za sve podatke koji se stavljaju u nju, no kako se broj haseva povećava, vjerojatnije je da različiti parovi podataka mogu stvoriti isti hash. Tako se može stvoriti nepouzdana potvrda s identičnim hashom na pouzdani certifikat. Ako su vas dobili da instalirate tu nepouzdanu potvrdu, mogla bi se prikriti kao pouzdana i distribuirati zlonamjerne podatke.
Pronalaženje odgovarajućih hashova unutar dvije datoteke naziva se a napad sudara, Poznato je da se barem jedan veliki sudar napadaja dogodio za MD5 hashe. No 27. veljače 2017. godine Google je najavio SHAttered, prvi ikada napravljeni sudar za SHA-1.Google je uspio stvoriti PDF datoteku koja ima isti SHA-1 hash kao drugi PDF datoteka, iako ima drugačiji sadržaj.
SHAttered je izveden u PDF formatu. PDF-ovi su relativno loose format datoteke; mnoštvo malih, bitnih promjena može se napraviti bez sprečavanja čitatelja da ga otvore ili uzrokuju vidljive razlike. PDF se također često koristi za isporuku zlonamjernog softvera. Dok je SHAttered mogao raditi na drugim vrstama datoteka, poput ISO-a, certifikati su strogo određeni, zbog čega je takav napad malo vjerojatno.
Pa kako je lako taj napad izvršiti? SHAttered se temelji na metodi koju je otkrio Marc Stevens u 2012., koji je zahtijevao operacije SHA-1 od 2 ^ 60.3 (9.223 kvintila) - nevjerojatan broj. Međutim, ova metoda je i dalje 100,000 puta manja od operacija nego što bi se trebalo postići istim rezultatom s velikim silama. Google je otkrio da s 110 naprednih grafičkih kartica koje rade paralelno, trebalo bi oko godinu dana da bi došlo do sudara. Iznajmljivanje tog računalnog vremena od Amazon AWS koštao bi oko 110.000 dolara. Imajte na umu da, kako cijene padaju za dijelove računala, a vi možete dobiti više energije za manje, napadi poput SHAttered postaju lakše skinuti.
110.000 dolara može se činiti jako puno, ali je u okviru dostupnosti određenih organizacija - što znači da bi virtualni životni partneri mogli krivotvoriti digitalne potpise dokumenata, ometati sigurnosne sustave za nadzor i kontrolu verzije poput Git i SVN ili zlonamjerni Linux ISO pojaviti se legitimnim.
Srećom, postoje olakotni čimbenici koji sprečavaju takve napade. SHA-1 se rijetko koristi za digitalne potpise. Tijela certifikata više ne daju certifikate potpisane s SHA-1, a Chrome i Firefox su također odustali od podrške za njih. Linux distribucije obično se oslobađaju češće nego jednom godišnje, što čini nepraktičnim za napadača da stvori zlonamjernu verziju, a zatim generira jedan podstavljen da ima isti SHA-1 hash.
S druge strane, neki napadi na temelju SHAttered već se događa u stvarnom svijetu. Sustav upravljanja SVN verzijom koristi SHA-1 za razlikovanje datoteka. Prijenos dva PDF datoteka s istim SHE-1 hashom u SVN spremište uzrokovat će njegovo oštećenje.
Nema puno za tipičan korisnik to učiniti. Ako koristite checksumove za usporedbu datoteka, trebate koristiti SHA-2 (SHA-256) ili SHA-3 umjesto SHA-1 ili MD5. Isto tako, ako ste razvojni programer, svakako upotrijebite moderne algoritme raspršivanja poput SHA-2, SHA-3 ili bcrypt. Ako ste zabrinuti da je SHAttered korišten za davanje dvije različite datoteke isti hash, Google je objavio alat na SHAttered web stranice koje mogu provjeriti za vas.
Image Credits: Lego Firefox, Puno Hash, molimo vas Nemojte naštetiti web autora nepoznata, Google.