Kaj je SHAttered? SHA-1 Napadi trčenja, pojasnjeno
Prvi dan leta 2016 je Mozilla prekinila podporo za oslabljeno varnostno tehnologijo, imenovano SHA-1, v spletnem brskalniku Firefox. Skoraj takoj so spremenili svojo odločitev, saj bi zmanjšali dostop do nekaterih starejših spletnih strani. Toda februarja 2017 so se končno uresničili njihovi strahovi: raziskovalci so razbili SHA-1 tako, da so ustvarili prvi napad v resničnem svetu. Vse to pomeni.
Kaj je SHA-1?
SHA v SHA-1 pomeni Secure Hash algoritem, in preprosto rečeno, lahko o njem razmišljate kot o nekakšnem matematičnem problemu ali metodi izbriše podatke, ki so v njej. Razvila ga je ameriška NSA, je ključna sestavina mnogih tehnologij, ki se uporabljajo za šifriranje pomembnih prenosov na internetu. Skupni načini šifriranja SSL in TLS, za katere ste morda slišali, lahko uporabijo funkcijo razpršitve, kot je SHA-1, da ustvarite podpisana potrdila, ki jih vidite v orodni vrstici brskalnika.
Ne bomo globoko vstopili v matematiko in računalništvo katere koli funkcije SHA, toda tukaj je osnovna ideja. »Hašiš« je edinstvena koda, ki temelji na vnosu vseh podatkov. Celo majhni, naključni niz črk, ki se vnašajo v razpršeno funkcijo, kot je SHA-1, bo vrnil dolgo, določeno število znakov, zaradi česar je (potencialno) nemogoče vrniti niz znakov nazaj na izvirne podatke. Tako običajno deluje shranjevanje gesel. Ko ustvarite geslo, strežnik zgošči in shrani vnos gesla. Ko se vrnete, se pri vnosu gesla znova zgosti. Če se ujema z izvirno razpršitvijo, se lahko predpostavi, da je vnos enak, zato boste imeli dostop do vaših podatkov.
Hash funkcije so koristne predvsem zato, ker omogočajo enostavno ugotavljanje, ali se je vnos, na primer datoteka ali geslo, spremenil. Ko so vhodni podatki tajni, kot je geslo, je razpršitev skoraj nemogoče obrniti in obnoviti izvirne podatke (znane tudi kot »ključ«). To je nekoliko drugačno od »šifriranja«, katerega namen je šifriranje podatkov z namenom kasnejšega dekodiranja, z uporabo šifri in tajnih ključev. Haše so preprosto namenjene zagotavljanju celovitosti podatkov - da se prepričate, da je vse enako. Git, programska oprema za nadzor in distribucijo različic za odprto kodo, uporablja zgornje meje SHA-1.
To je veliko tehničnih informacij, ampak preprosto rečeno: hash ni isto kot šifriranje, saj uporablja se za ugotavljanje, ali se je datoteka spremenila.
Kako ta tehnologija vpliva na mene?
Recimo, da morate spletno mesto zasebno obiskati. Vaša banka, e-pošta, celo vaš račun Facebook - vsi uporabljajo šifriranje, da bodo podatki, ki jih pošljete, zasebni. Strokovna spletna stran bo zagotovila šifriranje s pridobitvijo potrdila od zaupanja vrednega organa - tretje osebe, ki mu bo zaupala, da bo šifriranje na ravni, zasebni med spletnim mestom in uporabnikom, in da ga ne bo opazovala nobena druga stranka. Ta odnos s tretjo osebo se je poklical Organi za izdajo potrdil, ali CA, je ključnega pomena, saj lahko vsak uporabnik ustvari samopodpisani certifikat, kar lahko storite tudi sami na računalniku z operacijskim sistemom Linux z Open SSL. Symantec in Digicert sta na primer splošno znani CA podjetji.
Preglejmo teoretični scenarij: How-To Geek želi, da ostane prijavljen v sejah uporabnikov z zasebnim šifriranjem, zato prosi CA kot Symantec Zahteva za podpisovanje potrdila, ali CSR. Ustvarjajo javni ključ in zasebni ključ za šifriranje in dešifriranje podatkov, poslanih prek interneta. Zahteva za CSR pošlje javni ključ Symantecu skupaj z informacijami o spletnem mestu. Symantec preveri ključ v primerjavi z njegovim zapisom, da preveri, ali so podatki nespremenjeni za vse stranke, saj vsaka majhna sprememba podatkov bistveno razlikuje od hašiša.
Ti javni ključi in digitalna potrdila so podpisani z razpršilnimi funkcijami, ker je izhod teh funkcij lahko videti. Javni ključ in potrdilo s preverjenim razpršilom Symantec (v našem primeru), organu, uporabniku Geek zagotavlja, da je ključ nespremenjen in ni poslan od nekoga zlonamernega..
Ker je haše enostavno spremljati in je nemogoče (nekateri bi rekli »težko«) obrniti, pravilen, preverjen podpis pomeni, da lahko potrdilo in povezavo zaupate, podatke pa lahko sprejmete šifrirane od konca do konca. . Kaj pa, če hašiš ni bilo edinstveno?
Kaj je napad trčenja in je to mogoče v realnem svetu?
Morda ste že slišali za "problem rojstnega dne" v matematiki, čeprav morda niste vedeli, kako se imenuje. Osnovna zamisel je, da če zberete dovolj veliko skupino ljudi, je velika verjetnost, da bosta dva ali več ljudi imela isti rojstni dan. Višje, kot bi pričakovali, v resnici - dovolj, da se zdi kot čudno naključje. V skupini, ki ima le 23 ljudi, obstaja 50% možnosti, da bosta dva delila rojstni dan.
To je inherentna šibkost v vseh haših, vključno s SHA-1. Teoretično bi morala funkcija SHA ustvariti edinstveno razpršitev za vse podatke, ki so v njej vneseni, toda s povečevanjem števila hashov postane bolj verjetno, da lahko različni pari podatkov ustvarijo isto razpršitev. Tako bi lahko ustvarili nezaupni certifikat z identično razpršitvijo certifikata, ki mu zaupate. Če vas bodo namestili, da boste potrdili, da ste nezaupni, ga lahko maskirate kot zaupanja vrednega in distribuirate zlonamerne podatke.
Iskanje ustreznih hashov v dveh datotekah se imenuje a napad trčenja. Znano je, da se je vsaj en obsežen napad trčenja že zgodil za hash MD5. Toda 27. februarja 2017 je Google objavil, da je SHAttered, ki je prvič izdelal trk za SHA-1. Google je lahko ustvaril datoteko PDF, ki ima isto SHA-1 hash kot drugo datoteko PDF, čeprav ima drugačno vsebino.
SHAttered je bil izveden na datoteki PDF. Datoteke PDF so relativno ohlapne datoteke; veliko majhnih sprememb na ravni bitov je mogoče narediti, ne da bi bralcem preprečili, da bi jih odprli ali povzročili vidne razlike. PDF-ji se pogosto uporabljajo tudi za dostavo zlonamerne programske opreme. Medtem ko bi lahko deloval na drugih vrstah datotek, kot so ISO, so certifikati strogo določeni, zaradi česar je takšen napad malo verjeten.
Torej, kako preprost je ta napad? SHAttered je temeljil na metodi, ki jo je odkril Marc Stevens leta 2012, ki zahteva več kot 2 ^ 60,3 (9,223 kvintilijonov) SHA-1 operacij - osupljivo število. Vendar pa je ta metoda še vedno 100.000-krat manj operacij, kot bi bilo potrebno za dosego istega rezultata s surovo silo. Google je ugotovil, da bi s 110 vzporedno delujočimi grafičnimi karticami za izdelavo trka potrebovali približno eno leto. Najem tega računskega časa od Amazon AWS bi stalo približno 110.000 $. Ne pozabite, da se cene, ki se zmanjšajo za računalniške dele in da lahko dobite več moči za manj, postanejo napadi, kot je SHAttered, lažji..
110.000 dolarjev se morda zdi veliko, vendar je to v dosegu cenovne dostopnosti za nekatere organizacije - kar pomeni, da lahko cyberviljanke v resničnem življenju ustvarijo digitalne podpisne dokumente, vplivajo na varnostne in nadzorne sisteme, kot sta Git in SVN, ali pa zlonamerni Linux postanejo legitimni.
Na srečo obstajajo olajševalni dejavniki, ki preprečujejo takšne napade. SHA-1 se redko uporablja za digitalne podpise. Organi za potrdila ne zagotavljajo več potrdil, podpisanih s shemo SHA-1, in Chrome in Firefox sta zanje prekinila podporo. Distribucije Linuxa se običajno izdajajo pogosteje kot enkrat na leto, zato je napadalcu nepraktično, da ustvari zlonamerno različico in nato ustvari eno oblazinjeno, da ima isto razpršitev SHA-1..
Po drugi strani pa se nekateri napadi na podlagi SHAttered že dogajajo v resničnem svetu. Sistem za nadzor različic SVN uporablja SHA-1 za razlikovanje datotek. Prenos dveh dokumentov PDF z enakimi hešami SHA-1 v skladišče SVN bo povzročil okvaro.
Kako se lahko zaščitim pred napadi SHA-1?
Za tipičnega uporabnika ni veliko dela. Če uporabljate kontrolne vsote za primerjavo datotek, morate uporabiti SHA-2 (SHA-256) ali SHA-3 namesto SHA-1 ali MD5. Če ste razvijalec, uporabite tudi bolj sodobne algoritme za razprševanje, kot so SHA-2, SHA-3 ali bcrypt. Če vas skrbi, da je bil SHAttered uporabljen za podajanje dveh različnih datotek istega razpršila, je Google na spletnem mestu SHAttered izdal orodje, ki ga lahko preveri.
Image krediti: Lego Firefox, veliko Hash, prosim ne poškodujte avtorja, ki ni znan, Google.