Syntymäpäivähyökkäykset ja törmäyshyökkäykset
Soveltakaa syntymäpäiväparadoksia tiivistetörmäyksiin ja tiivisteen pituuden jatkamiseen.
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.
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
- Differentiaalisen kryptanalyysin perusteet
- Lineaarinen kryptanalyysi ja approksimaatiotaulukot
- Syntymäpäivähyökkäykset ja törmäyshyökkäykset
- Meet-in-the-Middle ja aika–muisti-kompromissit