Kas yra SHAttered? SHA-1 susidūrimo atakos, paaiškinta
2016 m. Pirmąją dieną „Mozilla“ nutraukė „Firefox“ žiniatinklio naršyklėje susilpnėjusios saugumo technologijos SHA-1 palaikymą. Beveik iš karto jie pakeitė savo sprendimą, nes sumažintų prieigą prie kai kurių senesnių svetainių. Tačiau 2017 m. Vasario mėn. Įvyko jų baimė: mokslininkai nutraukė SHA-1 sukurdami pirmąjį realaus pasaulio susidūrimo ataką. Štai ką reiškia visa tai.
Kas yra SHA-1?
SHA-1 SHA reiškia Saugus Hash algoritmas, ir paprasčiausiai, jūs galite galvoti apie tai kaip matematikos problemą ar metodą suskirsto į jį įdėtus duomenis. Jungtinių Amerikos Valstijų NSA sukurta daugelio technologijų, naudojamų šifruoti svarbius transliavimus internete, sudėtinė dalis. Paprastieji SSL ir TLS šifravimo metodai, kuriuos galbūt girdėjote, gali naudoti „hash“ funkciją, pvz., SHA-1, kad sukurtumėte pasirašytus sertifikatus, kuriuos matote naršyklės įrankių juostoje.
Mes nesileidžiame į bet kurios SHA funkcijos matematikos ir kompiuterijos mokslą, bet čia yra pagrindinė idėja. „Hash“ yra unikalus kodas, pagrįstas bet kokių duomenų įvedimu. Net maža, atsitiktinė eilutė, įvedama į maišymo funkciją, pvz., SHA-1, grįš ilgą, nustatytą simbolių skaičių, todėl (galbūt) neįmanoma grąžinti simbolių eilutės atgal į pradinius duomenis. Taip paprastai veikia slaptažodžių saugojimas. Kai kuriate slaptažodį, jūsų slaptažodis įvedamas ir saugomas serveryje. Grįžę, įvesdami slaptažodį, jis vėl išnyks. Jei jis atitinka originalų maišą, galima manyti, kad įvestis yra tokia pati, ir jums bus suteikta prieiga prie jūsų duomenų.
Hash funkcijos yra naudingos pirmiausia todėl, kad jos leidžia lengvai pasakyti, ar pasikeitė įvestis, pvz., Failas ar slaptažodis. Kai įvesties duomenys yra slapti, kaip ir slaptažodis, „hash“ beveik neįmanoma pakeisti ir atkurti originalių duomenų (dar vadinamų „raktu“). Tai šiek tiek skiriasi nuo „šifravimo“, kurio paskirtis - šifruoti duomenis, kad vėliau juos būtų galima užblokuoti, naudojant šifrus ir slaptus raktus. Hashes yra tiesiog skirtos užtikrinti duomenų vientisumą, kad būtų užtikrinta, jog viskas yra vienoda. „Git“, versijos valdymo ir platinimo programinė įranga, skirta atviro kodo programinei įrangai, šiam tikslui naudoja SHA-1 maišus.
Tai yra daug techninės informacijos, bet paprasčiausiai tai, kad maišas nėra tas pats, kas šifravimas jis naudojamas nustatyti, ar failas pasikeitė.
Kaip ši technologija veikia mane?
Tarkime, jūs turite apsilankyti svetainėje privačiai. Jūsų bankas, jūsų el. Paštas, net ir „Facebook“ paskyra naudoja visus šifravimo duomenis, kad galėtumėte saugoti duomenis, kuriuos siunčiate privatiems. Profesionali svetainė suteiks šifravimą, gaudama patikimos institucijos sertifikatą - trečiąją šalį, kuri pasitiki, kad šifravimas yra lygus, privatus tarp svetainės ir naudotojo, o jokia kita šalis to nepadarė. Šis ryšys su trečiąja šalimi, vadinamas Sertifikato institucijos, arba CA, yra labai svarbus, nes bet kuris vartotojas gali sukurti „savarankiškai pasirašytą“ sertifikatą - netgi galite tai padaryti patys įrenginyje, kuriame veikia „Linux“ su „Open SSL“. „Symantec“ ir „Digicert“ yra dvi plačiai žinomos CA įmonės.
Vykdykime teorinį scenarijų: „How-To Geek“ nori išsaugoti prisijungimus naudotojų sesijose su šifravimu, taigi ji, kaip „Symantec“, pateikia peticijas su Sertifikato pasirašymo užklausa, arba ĮSA. Jie sukuria a viešasis raktas ir privatus raktas internetu perduodamų duomenų šifravimui ir iššifravimui. CSR prašymas siunčia „Symantec“ viešąjį raktą kartu su informacija apie svetainę. „Symantec“ patikrina raktą prieš savo įrašą, kad patikrintų, ar visos šalys nepasikeitė duomenimis, nes bet koks nedidelis duomenų keitimas verčia radikaliai skirtis.
Šiuos viešuosius raktus ir skaitmeninius sertifikatus pasirašo maišos funkcijos, nes šių funkcijų išėjimas yra lengvai matomas. Viešasis raktas ir sertifikatas su patvirtintu „Symantec“ maišos (mūsų pavyzdyje), kuris yra institucija, užtikrina „How-To Geek“ naudotojui, kad raktas nekeičiamas ir nėra siunčiamas iš kenkėjiško.
Kadangi maišos yra lengva stebėti ir neįmanoma (kai kurie sako „sunku“) pakeisti, teisingas, patvirtintas maišos parašas reiškia, kad sertifikatas ir ryšys gali būti patikimi, o duomenys gali būti suderinti, kad būtų siunčiami šifruoti nuo pabaigos iki galo . Bet kas, jei maišos iš tikrųjų nebuvo unikalus?
Kas yra susidūrimo ataka ir ar tai įmanoma realiame pasaulyje?
Galbūt jūs girdėjote apie matematikos „gimtadienio problemą“, nors galbūt nežinojote, kas buvo vadinama. Pagrindinė idėja yra ta, kad jei surinksite pakankamai didelę žmonių grupę, tikimybė yra gana didelė, kad du ar daugiau žmonių turės tą patį gimtadienį. Didesnis, nei jūs tikitės, iš tikrųjų pakankamai, kad atrodo kaip keistas sutapimas. Ne mažiau kaip 23 žmonių grupėje yra 50% tikimybė, kad du turės gimtadienį.
Tai yra būdingas silpnumas visose maišose, įskaitant SHA-1. Teoriškai SHA funkcija turėtų sukurti unikalų maišą bet kokiems į jį įterptiems duomenims, bet, augant hashes, vis labiau tikėtina, kad skirtingos duomenų poros gali sukurti tą patį maišą. Taigi, galima sukurti nepatikimą sertifikatą, turintį identišką maišą su patikimu sertifikatu. Jei jie jums padės įdiegti šį nepatikimą sertifikatą, jis gali tapti patikimas ir platinti kenkėjiškus duomenis.
Rasti suderinamus dujas dviejose rinkmenose vadinama a susidūrimas. Yra žinoma, kad MD5 maišytuvams jau įvyko bent vienas didelio masto susidūrimas. Tačiau 2017 m. Vasario 27 d. „Google“ paskelbė SHAttered, pirmą kartą sukurtą susidūrimą su SHA-1. „Google“ sugebėjo sukurti PDF failą, turintį tą patį SHA-1 maišą, kaip ir kitą PDF failą, nors turinys yra skirtingas.
SHAttered buvo atliktas PDF faile. PDF failai yra palyginti laisvi; gali būti padaryta daug mažų, bitų lygio pakeitimų, neleidžiant skaitytojams jį atverti ar atsirasti jokių pastebimų skirtumų. PDF failai taip pat dažnai naudojami kenkėjiškų programų pristatymui. Nors „SHAttered“ gali dirbti su kitų tipų failais, pvz., ISO, sertifikatai yra griežtai apibrėžti, todėl toks išpuolis yra mažai tikėtinas.
Taigi, kaip lengva tai atlikti? SHAttered buvo pagrįstas Marc Stevens 2012 m. Nustatytu metodu, kuriam reikėjo daugiau nei 2 ^ 60,3 (9,223 kvintiljono) SHA-1 operacijų - stulbinantis skaičius. Tačiau šis metodas vis dar yra 100 000 kartų mažiau operacijų, nei būtų reikalaujama pasiekti tą patį rezultatą su brutalia jėga. „Google“ nustatė, kad su 110 aukštos kokybės grafikos plokštėmis, veikiančiomis lygiagrečiai, susidaro susidūrimas su maždaug vienu metų. Šio skaičiavimo laiko išperkavimas iš „Amazon AWS“ kainuotų apie 110 000 JAV dolerių. Turėkite omenyje, kad dėl kompiuterių dalių kainų sumažėjimo ir mažiau galios galite gauti mažiau, atakos, pvz..
110 000 JAV dolerių gali atrodyti daug, tačiau kai kurioms organizacijoms tai yra prieinamumo srityje, o tai reiškia, kad realiame gyvenime cybervillianai gali sukurti skaitmeninius dokumentų parašus, trukdyti atsarginėms kopijų ir versijų valdymo sistemoms, pvz., „Git“ ir „SVN“, arba kenkėjišką „Linux“ ISO gali būti teisėta.
Laimei, tokie išpuoliai yra sušvelninantys veiksniai. SHA-1 retai naudojamas skaitmeniniams parašams. Sertifikato institucijos nebesuteikia su SHA-1 pasirašytų sertifikatų, o „Chrome“ ir „Firefox“ atsisakė palaikyti juos. „Linux“ platinimai paprastai išleidžiami dažniau nei kartą per metus, todėl užkariautojui neįmanoma sukurti kenksmingos versijos ir tada sukurti vieną paminkštintą tą patį SHA-1 maišą.
Kita vertus, kai kurie atakos pagal SHAttered jau vyksta realiame pasaulyje. SVN versijos valdymo sistema naudoja SHA-1, kad diferencijuotų failus. Dviejų PDF rinkmenų, turinčių identiškus SHA-1 skanus, įkėlimas į SVN saugyklą sukels ją sugadinti.
Kaip galiu apsaugoti save nuo SHA-1 atakų?
Tipiniam vartotojui nėra daug. Jei naudojate kontrolines sumas failams palyginti, turėtumėte naudoti SHA-2 (SHA-256) arba SHA-3, o ne SHA-1 arba MD5. Taip pat, jei esate kūrėjas, būtinai naudokite modernesnius maišymo algoritmus, tokius kaip SHA-2, SHA-3 arba bcrypt. Jei nerimaujate, kad „SHAttered“ buvo panaudota du skirtingus failus pateikti tame pačiame maiše, „Google“ išleido įrankį „SHAttered“ svetainėje, kuri gali jums patikrinti.
Vaizdo kreditai: „Lego Firefox“, „Hash“ daug, prašome nepažeisti žiniatinklio autoriaus, „Google“.