Što je SHAttered? SHA-1 napadi sudara, objašnjeno
Prvog dana 2016. Mozilla je ukinula podršku za slabiju sigurnosnu tehnologiju zvanu SHA-1 u pregledniku Firefox. Gotovo odmah su preokrenuli svoju odluku, jer bi smanjili pristup nekim starijim web stranicama. No, u veljači 2017., njihovi strahovi su se konačno ostvarili: istraživači su razbili SHA-1 stvaranjem prvog napada u stvarnom svijetu. Evo što sve to znači.
Što je SHA-1?
SHA u SHA-1 znači Sigurni algoritam hašenja, i, jednostavno rečeno, o tome možete misliti kao o nekoj vrsti matematičkog problema ili metode šifrira podatke koji se unose u njega. Razvijen od strane NSA Sjedinjenih Američkih Država, to je ključna komponenta mnogih tehnologija koje se koriste za šifriranje važnih prijenosa na internetu. Uobičajeni načini šifriranja SSL i TLS, za koje ste možda čuli, mogu koristiti hash funkciju kao što je SHA-1 za izradu potpisanih certifikata koje vidite na alatnoj traci preglednika.
Nećemo ulaziti duboko u matematiku i računalne znanosti bilo koje SHA funkcije, ali ovdje je osnovna ideja. "Hašiš" je jedinstveni kod koji se temelji na unosu bilo kojih podataka. Čak i mali, slučajni niz slova unesenih u hash-funkciju kao što je SHA-1, vratit će dugi, postavljeni broj znakova, što će (potencijalno) onemogućiti vraćanje niza znakova natrag na izvorne podatke. Ovako se obično pohranjuje lozinka. Kada stvorite lozinku, unos zaporke poslužitelj se hashed i pohranjuje. Po povratku, kada upišete zaporku, ponovno se raspršuje. Ako se podudara s izvornim hashom, može se pretpostaviti da je unos isti i da ćete dobiti pristup vašim podacima.
Hash funkcije su korisne prvenstveno zato što olakšavaju utvrđivanje je li se ulaz, primjerice, datoteka ili lozinka, promijenio. Kada su ulazni podaci tajni, poput lozinke, hash je gotovo nemoguće preokrenuti i vratiti izvorne podatke (također poznat kao "ključ"). To je malo drugačije od "šifriranja", čija je svrha kodiranje podataka u svrhu kasnijeg dekodiranja, koristeći šifre i tajne ključeve. Hashi su jednostavno namijenjeni osiguravanju integriteta podataka - kako bi bili sigurni da je sve isto. Git, softver za kontrolu verzija i distribuciju otvorenog koda, koristi SHA-1 hasheve upravo iz tog razloga.
To je puno tehničkih informacija, ali jednostavno rečeno: hash nije isto što i enkripcija koristi se za utvrđivanje je li se datoteka promijenila.
Kako ova tehnologija utječe na mene?
Recimo da morate posjetiti web-lokaciju privatno. Vaša banka, e-pošta, čak i vaš Facebook račun - svi koriste šifriranje kako bi zadržali podatke koje ste poslali privatno. Profesionalna web-lokacija osigurat će šifriranje dobivanjem potvrde od pouzdanog autoriteta - treće strane, koja se pouzdaje kako bi osigurala da je šifriranje na privatnoj razini između web-mjesta i korisnika, a da ga druga strana nije špijunirala. Ovaj odnos s trećom osobom, nazvan Tijela za izdavanje certifikata, ili CA, je ključan, budući da svaki korisnik može izraditi "samo-potpisan" certifikat - možete ga i sami napraviti na stroju koji radi pod Linuxom s Open SSL-om. Symantec i Digicert su, primjerice, dvije poznate CA tvrtke.
Prođimo kroz teoretski scenarij: Kako da Geek želi zadržati prijavu u korisničkim sesijama privatno s enkripcijom, tako da traži CA kao što je Symantec Zahtjev za potpisivanje certifikata, ili DOP. Oni stvaraju javni ključ i privatni ključ za šifriranje i dešifriranje podataka poslanih putem interneta. CSR zahtjev šalje javni ključ Symantecu zajedno s informacijama o web-mjestu. Symantec provjerava ključ protiv svog zapisa kako bi provjerio jesu li podaci nepromijenjeni od svih sudionika, jer svaka mala promjena podataka čini radikalno različit hash.
Ti javni ključevi i digitalni certifikati potpisani su hash funkcijama, jer je izlaz tih funkcija lako vidljiv. Javni ključ i potvrda s potvrđenim hashom iz Symanteca (u našem primjeru), autoritet, jamči korisniku How-To Geeka da je ključ nepromijenjen, a nije poslan od nekog zlonamjernog korisnika.
Budući da je hash lako pratiti i nemoguće (neki bi rekli "teško") za obrnuti, točan, provjereni hash potpis znači da se certifikat i veza mogu pouzdati, a podaci se mogu dogovoriti da se šifriraju od kraja do kraja , Ali što ako hash zapravo nije bio jedinstven?
Što je napad sudara i je li to moguće u stvarnom svijetu?
Možda ste čuli za "problem rođendana" u matematici, iako možda niste znali kako se zove. Osnovna ideja je da ako okupite dovoljno veliku grupu ljudi, prilike su prilično visoke da će dva 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 samo 23 osobe postoji 50% vjerojatnosti da će dvije dijeliti rođendan.
To je inherentna slabost u svim hashovima, uključujući SHA-1. Teoretski, SHA funkcija bi trebala stvoriti jedinstveni hash za sve podatke koji se unose u njega, ali kako broj hashova raste, postaje vjerojatnije da različiti parovi podataka mogu stvoriti isti hash. Tako bi se moglo stvoriti nepovjerljivi certifikat s identičnim hashom u pouzdani certifikat. Ako su vas naveli da instalirate taj nepouzdani certifikat, mogao bi se maskirati kao pouzdani i distribuirati zlonamjerne podatke.
Pronalaženje odgovarajućih hashova unutar dvije datoteke naziva se a napad sudara. Poznato je da se barem jedan napad velikih sudara već dogodio za MD5 hasheve. No, 27. veljače 2017., Google je najavio SHAttered, prvi ikada napravljen sudar za SHA-1. Google je uspio stvoriti PDF datoteku koja je imala isti SHA-1 hash kao i drugu PDF datoteku, unatoč tome što je imala drugačiji sadržaj.
SHAttered je izveden na PDF datoteci. PDF-ovi su relativno labav format datoteke; puno sitnih, bit-level promjena može biti učinjeno bez sprečavanja čitatelja da ga otvori ili uzrokuje bilo kakve vidljive razlike. PDF-ovi se također često koriste za isporuku zlonamjernog softvera. Iako bi SHAttered mogao raditi na drugim vrstama datoteka, kao što su ISO, certifikati su strogo specificirani, što takav napad čini malo vjerojatnim.
Koliko je lako izvršiti ovaj napad? SHAttered se temeljio na metodi koju je otkrio Marc Stevens 2012. godine, a koja je zahtijevala više od 2 ^ 60,3 (9,223 kvintilijuna) SHA-1 operacija - zapanjujući broj. Međutim, ova metoda je još uvijek 100.000 puta manje operacija nego što bi bilo potrebno za postizanje istog rezultata s brutalnom silom. Google je otkrio da će uz 110 paralelnih high-end grafičkih kartica trebati otprilike godinu dana da se napravi sudar. Iznajmljivanje ovog računskog vremena od Amazon AWS koštalo bi oko 110.000 USD. Imajte na umu da kako cijene padaju za dijelove računala, a možete dobiti više energije za manje, napade poput SHAttered postaju lakše skinuti.
110.000 dolara može izgledati kao puno, ali to je u području pristupačnosti za neke organizacije - što znači da cybervilijanci iz stvarnog života mogu krivotvoriti digitalne potpise dokumenata, ometati sustave za sigurnosno kopiranje i kontrolu verzija kao što su Git i SVN, ili učiniti zlonamjerni Linux ISO legitimnim.
Srećom, postoje olakšavajući čimbenici koji sprečavaju takve napade. SHA-1 se rijetko više koristi za digitalne potpise. Tijela za izdavanje certifikata više ne pružaju certifikate potpisane s SHA-1, a Chrome i Firefox su odbacili podršku za njih. Distribucije Linuxa obično se izdaju češće nego jednom godišnje, što za napadača nije praktično stvoriti zlonamjernu verziju, a zatim generirati jedan podložen da ima isti SHA-1 hash.
S druge strane, neki se napadi temeljeni na SHAttered već događaju u stvarnom svijetu. SVN sustav kontrole verzija koristi SHA-1 za razlikovanje datoteka. Prijenos dva PDF-a s identičnim SHA-1 hashes-om na SVN spremište uzrokovat će oštećenje.
Kako se mogu zaštititi od napada SHA-1?
Tipičnom korisniku nema puno toga za napraviti. Ako za usporedbu datoteka koristite kontrolni zbroj, trebali biste koristiti SHA-2 (SHA-256) ili SHA-3 umjesto SHA-1 ili MD5. Isto tako, ako ste programer, svakako koristite modernije algoritme za raspršivanje kao što su SHA-2, SHA-3 ili bcrypt. Ako ste zabrinuti da je SHAttered korišten da bi dao dvije različite datoteke na isti hash, Google je objavio alat na web-lokaciji SHAttered koji može provjeriti.
Image Krediti: Lego Firefox, puno Hasha, nemojte povrijediti nepoznatog autora weba, Google.