Cryptology Academy · Oppitunti

Syntymäpäivähyökkäykset ja törmäyshyökkäykset

Soveltakaa syntymäpäiväparadoksia tiivistetörmäyksiin ja tiivisteen pituuden jatkamiseen.

Oppitunti 3/413 vaihetta

Syntymäpäivähyökkäykset ja törmäyshyökkäykset on ilmainen Cryptology Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cryptology Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cryptology Academy-kurssilla on yhteensä 4 oppituntia.

Syntymäpäiväparadoksi

Kun ryhmässä on 23 henkilöä, todennäköisyys sille, että kahdella on sama syntymäpäivä, ylittää 50 %. Kun henkilöitä on 70, todennäköisyys ylittää 99,9 %. Matemaattisesti: N:n kokoisessa joukossa törmäyksen todennäköisyys ylittää 50 % noin √N näytteen jälkeen. Tätä kutsutaan syntymäpäivärajaksi.

Syntymäpäiväraja hash-funktioille

n-bittiselle hash-funktiolle törmäys (H(m1) = H(m2), m1 ≠ m2) voidaan löytää noin 2^{n/2} satunnaiskokeella. SHA-256:lla (256-bittinen) törmäyksen löytämiseen tarvitaan noin 2^{128} työtä — laskennallisesti mahdotonta. MD5:llä (128-bittinen) tarvitaan noin 2^{64} työtä — juuri ja juuri mahdollista.

Törmäyshyökkäyksen algoritmi

Yleinen törmäysten etsintä: luo 2^{n/2} satunnaista viestiä, laske tiivisteet, lajittele tiivistearvon mukaan ja etsi kaksoiskappaleet. Muistin vaativuus on O(2^{n/2}). Rho-algoritmi (Floyd'n syklinetsintä) pienentää muistin vaativuuteen O(1) samalla aikavaativuudella. van Oorschot–Wienerin rinnakkainen törmäyshaku lyhentää aikaa laitteiston avulla.

MD5-törmäykset

Wang et al. (2004) löysivät MD5:n käytännön törmäykset differentiaalista kryptanalyysiä käyttäen — eivät syntymäpäivähyökkäystä. Kaksi erilaista 1024-bittistä viestiä, joilla on sama MD5-tiiviste, voidaan tuottaa sekunneissa. Hertzbleed-/valitun etuliitteen törmäykset mahdollistavat sertifikaattitörmäykset. MD5 on törmäyskestävyyden kannalta täysin murrettu.

Valitun etuliitteen törmäykset

Tehokkaampaa on, että annettuna kaksi mielivaltaista etuliitettä P1, P2 etsitään jälkiliitteet S1, S2 siten, että H(P1||S1) = H(P2||S2). Stevens et al. (2017) löysivät valitun etuliitteen MD5-törmäyksiä. Menetelmää käytettiin luomaan haitallinen varmenteenmyöntäjän sertifikaatti, jolla oli kelvollinen MD5-allekirjoitus. MD5 poistettiin sertifikaattien käytöstä.

SHA-1-törmäykset

Googlen SHAttered (2017): ensimmäinen käytännön SHA-1-törmäys. Kaksi erilaista PDF-tiedostoa, joilla on sama SHA-1-tiiviste. Se vaati 2^{63.1} SHA-1-pakkausfunktion suoritusta — vastaa 6 500 CPU-vuotta ja 110 GPU-vuotta. Kustannus oli noin 110 000 dollaria. Selaimet poistivat SHA-1-sertifikaatit käytöstä vuonna 2017.

Pituuden laajennushyökkäykset

Merkle-Damgard-hajautusfunktioissa (MD5, SHA-1, SHA-2) voidaan laskea H(m||padding||m') tuntematta m:ää, jos H(m) tunnetaan. Tämä rikkoo MAC-rakenteet, kuten H(secret||message). Korjaus: käyttäkää HMACia, joka käyttää sisempää ja ulompaa täytettä, tai SHA-3:a, jonka sienirakenne kestää pituuden laajennushyökkäykset.

Törmäyskestävyys vs. esikuvankestävyys

Törmäyskestävyys: etsitään mitkä tahansa kaksi toisistaan poikkeavaa viestiä, joilla on sama hajautusarvo (vaatii työn 2^{n/2}). Toisen esikuvan kestävyys: kun m tunnetaan, etsitään m' ≠ m, jolla on sama hajautusarvo (vaatii työn 2^n). Esikuvankestävyys: etsitään annetulle hajautusarvolle mikä tahansa viesti (vaatii työn 2^n). Törmäyskestävyys on aina heikoin.

MAC-törmäyshyökkäykset

Jos MAC käyttää törmäyksille altista hajautusfunktiota, törmäyksiä löytävä hyökkääjä saattaa pystyä väärentämään MAC-arvoja. HMAC-MD5:tä pidetään turvallisena MD5-törmäyksistä huolimatta, koska HMAC-rakenne edellyttää esikuvahyökkäyksiä eikä pelkkiä törmäyksiä. Uusissa järjestelmissä HMAC-MD5:stä kannattaa silti siirtyä pois.

Monitörmäykset

Joux (2004): Merkle-Damgard-hajautuksissa 2^k-suuntaisten törmäysten (2^k viestiä, joilla on sama hajautusarvo) löytäminen vaatii vain k kertaa yhden törmäyksen löytämiseen tarvittavan työn, ei 2^k-kertaista työmäärää. Tämä voimistaa yhdistettyjen hajautusten haavoittuvuuksia: H1(m)||H2(m) ei ole niin vahva kuin voisi ajatella.

Törmäysten välttäminen

Käyttäkää törmäyskestävään hajautukseen SHA-256:ta tai SHA-3:a. Älkää käyttäkö MD5:tä tai SHA-1:tä mihinkään tietoturvatarkoitukseen. MAC-arvoihin sopivat HMAC-SHA-256 tai HMAC-SHA-3. Salasanojen hajautukseen käytetään Argon2:ta, ei suoraan SHA-2:ta. Käyttäkää aina SHA-3:a, kun tarvitaan suojaa pituuden laajennushyökkäyksiä vastaan.

Pikatarkistus

Kuinka monta hajautusarvon laskentaa tarvitaan likimäärin n-bittisen hajautusfunktion törmäyksen löytämiseen?

Kertaus

Birthday-hyökkäys löytää hajautusarvojen törmäyksiä työmäärällä 2^{n/2}. MD5:lle on käytännöllisiä valitun etuliitteen törmäyksiä, ja SHA-1 murrettiin vuonna 2017. Pituuden laajennushyökkäykset rikkovat naiivit H(key||msg)-MACit. Käyttäkää SHA-256:ta tai SHA-3:a ja viestien todentamiseen HMACia. Seuraavaksi: keskikohtaushyökkäykset.

Aloita maksutta

Opi Cryptology Academy tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
67
Oppitunnit
261

Usein kysytyt kysymykset

Onko oppitunti ”Syntymäpäivähyökkäykset ja törmäyshyökkäykset” ilmainen?

Kyllä – oppitunnin ”Syntymäpäivähyökkäykset ja törmäyshyökkäykset” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cryptology Academy-kurssin, päivitä CoddyKit PROhon. Cryptology Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Syntymäpäivähyökkäykset ja törmäyshyökkäykset”?

Soveltakaa syntymäpäiväparadoksia tiivistetörmäyksiin ja tiivisteen pituuden jatkamiseen. Harjoittelet Cryptology Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cryptology Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cryptology Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Syntymäpäivähyökkäykset ja törmäyshyökkäykset”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Cryptology Academy-oppitunnilla?

Kyllä. Jokainen Cryptology Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Differentiaalisen kryptanalyysin perusteet
  2. Lineaarinen kryptanalyysi ja approksimaatiotaulukot
  3. Syntymäpäivähyökkäykset ja törmäyshyökkäykset
  4. Meet-in-the-Middle ja aika–muisti-kompromissit
← Takaisin: Cryptology Academy