Čo je SHAttered? SHA-1 nárazové útoky, vysvetlené

Obsah:

Čo je SHAttered? SHA-1 nárazové útoky, vysvetlené
Čo je SHAttered? SHA-1 nárazové útoky, vysvetlené

Video: Čo je SHAttered? SHA-1 nárazové útoky, vysvetlené

Video: Čo je SHAttered? SHA-1 nárazové útoky, vysvetlené
Video: Cloud Computing Explained - YouTube 2024, Apríl
Anonim
Prvý deň v roku 2016 spoločnosť Mozilla ukončila podporu pre oslabenie bezpečnostnej technológie s názvom SHA-1 vo webovom prehliadači Firefox. Takmer okamžite zrušili svoje rozhodnutie, pretože by obmedzili prístup k niektorým starším webovým stránkam. Ale vo februári 2017 sa ich obavy nakoniec stali skutočnosťou: výskumníci zlomili SHA-1 tým, že vytvorili prvý kolízny útok v reálnom svete. Tu je to všetko.
Prvý deň v roku 2016 spoločnosť Mozilla ukončila podporu pre oslabenie bezpečnostnej technológie s názvom SHA-1 vo webovom prehliadači Firefox. Takmer okamžite zrušili svoje rozhodnutie, pretože by obmedzili prístup k niektorým starším webovým stránkam. Ale vo februári 2017 sa ich obavy nakoniec stali skutočnosťou: výskumníci zlomili SHA-1 tým, že vytvorili prvý kolízny útok v reálnom svete. Tu je to všetko.

Čo je SHA-1?

Image
Image

SHA v SHA-1 znamená Secure Hash Algoritmus, a jednoducho povedané, môžete to myslieť ako na druh matematického problému alebo metódy skompiluje údaje, ktoré sú do neho vložené, Vyvinutý NSA Spojených štátov je základnou súčasťou mnohých technológií používaných na šifrovanie dôležitých prenosov na internete. Bežné metódy šifrovania SSL a TLS, o ktorých ste mohli počuť, môžu použiť funkciu hash ako SHA-1 na vytvorenie podpísaných certifikátov, ktoré sa zobrazia na paneli s nástrojmi prehliadača.

Nebudeme ísť hlboko do matematiky a informatiky o žiadnej z funkcií SHA, ale tu je základná myšlienka. "Hash" je jedinečný kód založený na vstupe akýchkoľvek údajov. Dokonca aj malé náhodné reťazce písmen, ktoré vstupujú do funkcie typu hash, ako SHA-1, vrátia dlhý, nastavený počet znakov, čo spôsobí, že je (potenciálne) nemožné vrátiť reťazec znakov späť na pôvodné údaje. Takto funguje úložisko hesla. Keď vytvoríte heslo, zadanie hesla je šachované a uložené serverom. Po návrate, keď zadáte svoje heslo, bude znova zamietnutý. Ak sa zhoduje s pôvodným hash, môže sa predpokladať, že vstup je rovnaký a dostanete prístup k vašim údajom.
Nebudeme ísť hlboko do matematiky a informatiky o žiadnej z funkcií SHA, ale tu je základná myšlienka. "Hash" je jedinečný kód založený na vstupe akýchkoľvek údajov. Dokonca aj malé náhodné reťazce písmen, ktoré vstupujú do funkcie typu hash, ako SHA-1, vrátia dlhý, nastavený počet znakov, čo spôsobí, že je (potenciálne) nemožné vrátiť reťazec znakov späť na pôvodné údaje. Takto funguje úložisko hesla. Keď vytvoríte heslo, zadanie hesla je šachované a uložené serverom. Po návrate, keď zadáte svoje heslo, bude znova zamietnutý. Ak sa zhoduje s pôvodným hash, môže sa predpokladať, že vstup je rovnaký a dostanete prístup k vašim údajom.
Funkcie Hash sú užitočné predovšetkým preto, lebo umožňujú ľahko zistiť, či sa vstup, napríklad súbor alebo heslo, zmenili. Keď sú vstupné dáta tajné, ako je heslo, takmer nie je možné prepísať a obnoviť pôvodné údaje (známe tiež ako "kľúč"). Je to trochu odlišné od "šifrovania", ktorého účelom je skramblovanie údajov za účelom neskoršieho dekódovania pomocou šifier a tajných kľúčov. Hashes sú jednoducho určené na zabezpečenie integrity údajov - aby sa zabezpečilo, že všetko je rovnaké. Git, verzia riadiaca a distribučná softvér pre open source kód, používa SHA-1 hashes práve z tohto dôvodu.
Funkcie Hash sú užitočné predovšetkým preto, lebo umožňujú ľahko zistiť, či sa vstup, napríklad súbor alebo heslo, zmenili. Keď sú vstupné dáta tajné, ako je heslo, takmer nie je možné prepísať a obnoviť pôvodné údaje (známe tiež ako "kľúč"). Je to trochu odlišné od "šifrovania", ktorého účelom je skramblovanie údajov za účelom neskoršieho dekódovania pomocou šifier a tajných kľúčov. Hashes sú jednoducho určené na zabezpečenie integrity údajov - aby sa zabezpečilo, že všetko je rovnaké. Git, verzia riadiaca a distribučná softvér pre open source kód, používa SHA-1 hashes práve z tohto dôvodu.

To je veľa technických informácií, ale jednoducho povedané: hash nie je to isté ako šifrovanie, pretože slúži na zistenie, či sa súbor zmenil.

Ako ma táto technológia ovplyvňuje?

Image
Image

Povedzme, že musíte súkromne navštíviť webovú stránku. Vaša banka, váš e-mail, aj váš účet na Facebooku - všetci používajú šifrovanie, aby uchovali údaje, ktoré im posielate, súkromné. Profesionálna webová lokalita poskytne šifrovanie získaním certifikátu od dôveryhodného orgánu - tretej strany, ktorá má dôveru, že šifrovanie bude na úrovni, súkromné medzi webovou stránkou a používateľom a nebude skontrolované žiadnou inou stranou. Tento vzťah s treťou stranou, nazvaný Certifikačné orgány, alebo CA, je rozhodujúce, pretože každý používateľ môže vytvoriť certifikát s vlastným podpisom - dokonca to môžete urobiť sami na počítači so systémom Linux s Open SSL. Symantec a Digicert sú napríklad dve známe spoločnosti CA.

Image
Image

Prejdime cez teoretický scenár: How-To Geek chce udržiavať prihlásené v reláciách užívateľov súkromné so šifrovaním, a preto predkladá CA CA ako Symantec s Žiadosť o podpis certifikátu, alebo CSR, Vytvárajú verejný kľúč a súkromný kľúč na šifrovanie a dešifrovanie údajov odosielaných cez internet. Žiadosť o CSR posiela verejný kľúč spoločnosti Symantec spolu s informáciami o webových stránkach. Spoločnosť Symantec skontroluje kľúč proti svojmu záznamu a overí, či všetky údaje nezmenili, pretože každá malá zmena údajov spôsobuje, že sa hash radikálne líši.

Tieto verejné kľúče a digitálne certifikáty sú podpísané hashovými funkciami, pretože výstup týchto funkcií je ľahko viditeľný. Verejný kľúč a certifikát s overeným hashom od spoločnosti Symantec (v našom príklade), autorita, uisťuje používateľovi How-To Geek, že kľúč je nezmenený a nie je odoslaný od niekoho škodlivého.
Tieto verejné kľúče a digitálne certifikáty sú podpísané hashovými funkciami, pretože výstup týchto funkcií je ľahko viditeľný. Verejný kľúč a certifikát s overeným hashom od spoločnosti Symantec (v našom príklade), autorita, uisťuje používateľovi How-To Geek, že kľúč je nezmenený a nie je odoslaný od niekoho škodlivého.
Image
Image

Vzhľadom na to, že hash je ľahko monitorovateľný a nemožný (niektorí by povedali, že je to "ťažké"), obrátiť sa, správny overený hash podpis znamená, že certifikát a spojenie môžu byť dôveryhodné a dá sa dohodnúť, že budú posielané zašifrované od konca do konca, Ale čo keď má haš nebolo v skutočnosti jedinečné?

Čo je kolízny útok a je to možné v skutočnom svete?

Možno ste počuli o "Narodeninovom probléme" v matematike, hoci ste možno nevedeli, čo sa nazýva. Základná myšlienka je, že ak sa stretnete s dostatočne veľkou skupinou ľudí, je pravdepodobné, že dva alebo viac ľudí bude mať rovnaké narodeniny. Vyššia, než by ste očakávali, v skutočnosti - toľko, že to vyzerá ako zvláštna náhoda. V skupine až 23 ľudí je 50% pravdepodobnosť, že dvaja budú mať narodeniny.

Toto je vlastná slabosť vo všetkých hashoch, vrátane SHA-1. Teoreticky by mala funkcia SHA vytvoriť jedinečný hash pre ľubovoľné údaje, ktoré sú do nej vložené, ale keď počet hešok rastie, je pravdepodobnejšie, že rôzne páry údajov môžu vytvoriť rovnaký hash.Takže by sa mohol vytvoriť nedôveryhodný certifikát s rovnakým hash na dôveryhodný certifikát. Ak by vás mohli nainštalovať tento nedôveryhodný certifikát, mohol by to byť dôveryhodný a distribuovať škodlivé údaje.
Toto je vlastná slabosť vo všetkých hashoch, vrátane SHA-1. Teoreticky by mala funkcia SHA vytvoriť jedinečný hash pre ľubovoľné údaje, ktoré sú do nej vložené, ale keď počet hešok rastie, je pravdepodobnejšie, že rôzne páry údajov môžu vytvoriť rovnaký hash.Takže by sa mohol vytvoriť nedôveryhodný certifikát s rovnakým hash na dôveryhodný certifikát. Ak by vás mohli nainštalovať tento nedôveryhodný certifikát, mohol by to byť dôveryhodný a distribuovať škodlivé údaje.
Image
Image

Vyhľadanie vyrovnávacieho hashovania v rámci dvoch súborov sa nazýva a kolízny útok, Je známe, že aspoň jeden veľký kolízny útok sa už stalo pre hash MD5. Ale 27. februára 2017 spoločnosť Google oznámila SHAttered, prvá crafted collision pre SHA-1. Spoločnosť Google dokázala vytvoriť súbor PDF, ktorý mal rovnaký SHA-1 hash ako iný súbor PDF, napriek tomu, že má iný obsah.

SHAttered bol vykonaný na súbore PDF. PDF sú pomerne voľné formáty súborov; môžu sa urobiť veľa malých, bitových úrovní bez toho, aby sa zabránilo otvoreniu alebo vzniku viditeľných rozdielov. Súbory PDF sa často používajú aj na prenos škodlivého softvéru. Zatiaľ čo SHAttered by mohol pracovať na iných typoch súborov, ako sú ISO, certifikáty sú pevne špecifikované, takže takýto útok je nepravdepodobný.

Takže ako ľahko je tento útok vykonávaný? SHAttered bol založený na metóde, ktorú objavil Marc Stevens v roku 2012, ktorý vyžadoval operácie SHA-1 v porovnaní s 2 603 (9 323 quintillionov) - prekvapujúce číslo. Avšak táto metóda je stále 100 000krát menej operácií, ako by bolo potrebné na dosiahnutie rovnakého výsledku s hrubou silou. Spoločnosť Google zistila, že 110 paralelne pracujúcich grafických kariet trvalo približne jeden rok na to, aby spôsobilo kolíziu. Prenájom tohto výpočtového času od spoločnosti Amazon AWS by stálo približne 110 000 dolárov. Majte na pamäti, že keď ceny klesnú na časti počítača a môžete získať viac energie za menej, útoky ako SHAttered sa stávajú jednoduchšie.

110 000 dolárov sa môže zdať ako veľa, ale je to v oblasti dostupnosti pre niektoré organizácie - čo znamená, že cybervillians v reálnom živote môžu vytvoriť digitálne podpisy dokumentov, zasahovať do systémov zálohovania a riadenia verzie ako Git a SVN alebo robiť škodlivý Linuxový systém ISO.

Našťastie existujú zmierňujúce faktory, ktoré takéto útoky zabraňujú. SHA-1 sa už zriedka používa na digitálne podpisy. Certifikačné autority už neposkytujú certifikáty podpísané v systéme SHA-1 a prehliadač Chrome a Firefox k nim neposkytli podporu. Distribúcie systému Linux sa zvyčajne uvoľňujú častejšie ako raz za rok, čo znemožňuje útočníkovi vytvoriť škodlivú verziu a potom generovať jeden polstrovaný tak, aby mal rovnaký SHA-1 hash.

Na druhej strane, niektoré útoky založené na SHAttered sa už dejú v reálnom svete. Riadiaci systém verzií SVN používa SHA-1 na odlíšenie súborov. Odovzdanie dvoch PDF súborov s rovnakým SHA-1 hash do úložiska SVN spôsobí poškodenie.

Ako sa môžem chrániť pred SHA-1 útokmi?

Pre typického používateľa nie je veľa čo robiť. Ak používate kontrolné súčty na porovnávanie súborov, mali by ste používať SHA-2 (SHA-256) alebo SHA-3 skôr ako SHA-1 alebo MD5. Podobne, ak ste vývojár, uistite sa, že používate modernejšie algoritmy likvidácie ako SHA-2, SHA-3 alebo bcrypt. Ak sa obávate, že služba SHAttered bola použitá na to, aby dva odlišné súbory obsahovali rovnaký hash, spoločnosť Google uverejnila na webe SHAttered nástroj, ktorý vám môže skontrolovať.

Kredity obrázkov: Lego Firefox, veľa Hash, prosím, neubližujte autorovi web neznámy, Google.

Odporúča: