Mikä on SHAttered? SHA-1 törmäyskohtaukset, selitetty
Vuoden 2016 ensimmäisenä päivänä Mozilla lopetti tuen heikentävälle suojausteknologialle SHA-1 Firefoxin selaimessa. Lähes välittömästi he kääntivät päätöksen, koska se olisi vähentänyt pääsyä joihinkin vanhempiin verkkosivustoihin. Mutta helmikuussa 2017 heidän pelkonsa lopulta toteutuivat: tutkijat rikkoi SHA-1: n luomalla ensimmäisen reaalimaailman törmäyshyökkäyksen. Tässä on mitä kaikki tämä tarkoittaa.
Mikä on SHA-1?
SHA SHA-1: ssä tarkoittaa Turvallinen Hash-algoritmi, ja yksinkertaisesti sanottuna voit ajatella sitä eräänlaisena matemaattisena ongelmana tai menetelmänä sekoittaa siihen asetetut tiedot. Yhdysvaltain NSA: n kehittämä keskeinen osa monia tekniikoita, joita käytetään tärkeiden lähetysten salaamiseen Internetissä. Yleiset salausmenetelmät, joita olet ehkä kuullut, voivat käyttää hajautusfunktiota, kuten SHA-1, luomaan selaimen työkalurivillä näkyvät allekirjoitetut varmenteet.
Emme mene syvälle minkään SHA-toiminnon matematiikka- ja tietotekniikkaan, mutta tässä on perusajatus. ”Hajautus” on ainutlaatuinen koodi, joka perustuu tietojen syöttöön. Jopa pieni, satunnainen merkkijono, joka syötetään hajautusfunktioon, kuten SHA-1, palauttaa pitkän, määritetyn määrän merkkejä, mikä tekee (mahdollisesti) mahdottomaksi palauttaa merkkijonon takaisin alkuperäisiin tietoihin. Näin salasanan tallennus toimii yleensä. Kun luot salasanan, palvelimen salasana syötetään ja tallennetaan. Palattuasi, kun kirjoitat salasanasi, se haudataan uudelleen. Jos se vastaa alkuperäistä hajautusta, syötteen voidaan olettaa olevan sama, ja sinut saa pääsyn tietoihin.
Hash-toiminnot ovat hyödyllisiä ensisijaisesti siksi, että niiden avulla on helppo kertoa, onko syöttö, esimerkiksi tiedosto tai salasana, muuttunut. Kun syöttötiedot ovat salaisia, kuten salasana, hajautus on lähes mahdotonta peruuttaa ja palauttaa alkuperäiset tiedot (tunnetaan myös nimellä "avain"). Tämä on hieman erilainen kuin "salaus", jonka tarkoitus on salauksen tietojen salaaminen myöhempää salausta ja salaisia avaimia käyttäen. Hashes on yksinkertaisesti tarkoitettu varmistamaan tietojen eheys - sen varmistamiseksi, että kaikki on sama. Git, avoimen lähdekoodin versionhallinta- ja jakeluohjelmisto, käyttää SHA-1-hajautuksia juuri tästä syystä.
Se on paljon teknistä tietoa, mutta yksinkertaisesti: hash ei ole sama asia kuin salaus sitä käytetään tunnistamaan, onko tiedosto muuttunut.
Miten tämä tekniikka vaikuttaa minuun?
Oletetaan, että sinun täytyy käydä verkkosivustolla yksityisesti. Pankki, sähköpostiosoitteesi, jopa Facebook-tilisi kaikki käyttävät salausta pitämään tiedot, jotka ne lähettävät yksityiseksi. Ammattimainen sivusto tarjoaa salauksen hankkimalla luotettavan viranomaisen antaman varmenteen, kolmannen osapuolen, joka luottaa varmistamaan, että salaus on tasossa, yksityinen verkkosivuston ja käyttäjän välillä, eikä mikään muu osapuoli näytä sitä. Tämä suhde kolmanteen osapuoleen, jota kutsutaan Todistuksen myöntäjät, tai CA, on ratkaisevan tärkeää, koska jokainen käyttäjä voi luoda ”itse allekirjoitetun” sertifikaatin - voit jopa tehdä sen itse koneessa, jossa on Linux, jossa on Open SSL. Symantec ja Digicert ovat kaksi laajalti tunnettua CA-yritystä.
Käy läpi teoreettinen skenaario: How-To Geek haluaa pitää kirjautuneena käyttäjien istuntoihin yksityisesti salauksella, joten se vetoaa Symantecin kaltaiseen CA: han Varmenteen allekirjoituspyyntö, tai CSR. Ne luovat a julkinen avain ja yksityinen avain Internetin kautta lähetettyjen tietojen salausta ja salausta varten. CSR-pyyntö lähettää julkisen avaimen Symantecille sekä verkkosivustoa koskevat tiedot. Symantec tarkistaa avainta sen tietueesta varmistaakseen, että kaikki osapuolet eivät muuta tietoja, koska kaikki pienet muutokset datassa tekevät hajautuksesta radikaalin erilaisen.
Nämä julkiset avaimet ja digitaaliset varmenteet allekirjoitetaan hash-toiminnoilla, koska näiden toimintojen ulostulo on helppo nähdä. Julkinen avain ja varmenne, jossa on vahvistettu hash Symantecista (esimerkissä), viranomainen, vakuuttaa käyttäjälle How-To Geek -toiminnon, että avain on muuttumaton eikä lähetetä kenellekään haittaohjelmalta.
Koska hajautus on helppo seurata ja mahdotonta (jotkut sanovat "vaikeaksi") kääntää, oikea, vahvistettu hash-allekirjoitus tarkoittaa, että varmenne ja yhteys voidaan luottaa, ja tiedot voidaan sopia lähettämisestä salattuna loppupäästä . Mutta entä jos hash ei oikeastaan ollut ainutlaatuinen?
Mikä on törmäyskohta, ja onko se mahdollista todellisessa maailmassa?
Olet ehkä kuullut matematiikan "syntymäpäiväongelmasta", vaikka et ehkä ole tiennyt, mitä sitä kutsuttiin. Perusajatuksena on, että jos keräät riittävän suuren joukon ihmisiä, mahdollisuudet ovat melko korkeat, että kahdella tai useammalla ihmisellä on sama syntymäpäivä. Korkeampi kuin odottaisi, itse asiassa tarpeeksi, että se tuntuu oudolta sattumalta. Ryhmässä, joka on niin pieni kuin 23 henkeä, on 50% mahdollisuus, että kaksi jakaa syntymäpäivän.
Tämä on luontainen heikkous kaikissa hajauksissa, mukaan lukien SHA-1. Teoreettisesti SHA-funktion pitäisi luoda ainutlaatuinen hajautus sille asetettuihin tietoihin, mutta kun hashien määrä kasvaa, on todennäköisempää, että eri dataparit voivat luoda saman hash-arvon. Joten voitaisiin luoda epäluotettava varmenne, jolla on sama hajaus luotettavaan sertifikaattiin. Jos he pääsevät asentamaan tämän epäluotettavan sertifikaatin, se voi naamioida luotettavaksi ja jakaa haittaohjelmia.
Kaksi tiedostoa vastaavien hashien löytämistä kutsutaan nimellä a törmäyshyökkäys. Tiedetään, että MD5-hajallaan on jo tapahtunut ainakin yksi suurikokoinen törmäyshyökkäys. Mutta helmikuun 27. päivänä 2017 Google ilmoitti SHAtteredistä, joka oli ensimmäinen muotoiltu törmäys SHA-1: lle. Google pystyi luomaan PDF-tiedoston, jolla oli sama SHA-1-hajautus kuin toisessa PDF-tiedostossa, vaikka sillä on eri sisältöä.
SHAttered suoritettiin PDF-tiedostossa. PDF-tiedostot ovat suhteellisen löysät tiedostomuodot; paljon pieniä, bittitason muutoksia voidaan tehdä estämättä lukijoita avaamasta sitä tai aiheuttamasta näkyviä eroja. PDF-tiedostoja käytetään usein myös haittaohjelmien toimittamiseen. Vaikka SHAttered voisi työskennellä muilla tiedostotyypeillä, kuten ISO, sertifikaatit on määritetty tiukasti, mikä tekee tällaisesta hyökkäyksestä epätodennäköisen.
Kuinka helppoa tämä hyökkäys on? SHAttered perustui Marc Stevensin vuonna 2012 havaittuun menetelmään, jossa vaadittiin yli 2 ^ 60,3 (9,223 kvintillionia) SHA-1-toimintaa - huikea määrä. Tämä menetelmä on kuitenkin edelleen 100 000 kertaa vähemmän operaatioita kuin mitä tarvittaisiin saman tuloksen aikaansaamiseksi brutaalivoimalla. Google totesi, että 110 huippuluokan grafiikkakorttia, jotka toimivat rinnakkain, törmääminen kestää noin vuoden. Tämän laskenta-ajan vuokraus Amazon AWS: stä maksaisi noin 110 000 dollaria. Muista, että kun tietokoneen osien hinnat laskevat ja voit saada enemmän tehoa vähemmän, SHAtteredin kaltaiset hyökkäykset ovat helpompia vetää pois.
110 000 dollaria saattaa tuntua paljon, mutta se on joidenkin organisaatioiden kohtuuhintaisuusalueella, mikä tarkoittaa, että todellinen elämä cybervillians voi muodostaa digitaalisia asiakirjojen allekirjoituksia, häiritä varmuuskopiointi- ja versionhallintajärjestelmiä, kuten Git ja SVN, tai tehdä haitallista Linux ISO -tekniikkaa oikeutetuksi.
Onneksi on olemassa lieventäviä tekijöitä, jotka estävät tällaisia hyökkäyksiä. SHA-1: ää käytetään harvoin digitaalisten allekirjoitusten yhteydessä. Sertifikaattiviranomaiset eivät enää anna SHA-1: n kanssa allekirjoitettuja varmenteita, ja sekä Chrome että Firefox ovat jättäneet tukensa niille. Linux-jakelut julkaisevat tyypillisesti useammin kuin kerran vuodessa, joten hyökkääjän on epäkäytännöllistä luoda haittaohjelmia ja luoda sitten yksi pehmustettu sama SHA-1-hajautus.
Toisaalta jotkut SHAtterediin perustuvat hyökkäykset tapahtuvat jo reaalimaailmassa. SVN-versionhallintajärjestelmä käyttää SHA-1: ää erottamaan tiedostot. Kahden samanlaisen SHA-1-hajautuksen sisältävän PDF-tiedoston lataaminen SVN-arkistoon aiheuttaa sen vioittumisen.
Miten voin suojata itseäni SHA-1-hyökkäyksiltä?
Tyypilliselle käyttäjälle ei ole paljon. Jos käytät tarkistussummat tiedostojen vertailuun, sinun pitäisi käyttää SHA-2: ta (SHA-256) tai SHA-3: ta SHA-1: n tai MD5: n sijaan. Samoin, jos olet kehittäjä, muista käyttää nykyaikaisempia hajautusalgoritmeja, kuten SHA-2, SHA-3 tai bcrypt. Jos olet huolissasi siitä, että SHAtterediä on käytetty antamaan kaksi erillistä tiedostoa samaan hajautukseen, Google on julkaissut työkalun SHAttered-sivustolla, joka voi tarkistaa sinulle.
Image Credits: Lego Firefox, paljon Hashia, älä vahingoita Web-tekijää tuntemattomaksi, Google.