Kryptografia ja digitaalinen luottamus

Lähes kaikki, mihin verkossa luotamme, nojaa kryptografiaan. Kun lähetät viestin, kirjaudut palveluun tai lataat ohjelmiston, taustalla toimii joukko matemaattisia työkaluja, jotka varmistavat että tieto pysyy muuttumattomana ja että se on peräisin oikealta lähettäjältä. Yksi näiden työkalujen tärkeimmistä rakennuspalikoista on kryptografinen tiivistefunktio.

Tämä osio käsittelee tiivistefunktioita, SHA-perhettä ja sitä, miten tiivisteet liittyvät digitaalisiin allekirjoituksiin. Käymme läpi sekä perusperiaatteet että käytännön esimerkit, mukaan lukien vuoden 2017 SHAttered-tutkimus, joka osoitti ensimmäisen kerran käytännössä, miten vanhentunut SHA-1-algoritmi voidaan murtaa.

Mikä on kryptografinen tiiviste

Kryptografinen tiivistefunktio ottaa syötteekseen minkä tahansa pituisen datan, esimerkiksi yksittäisen sanan, kokonaisen kirjan tai usean gigatavun tiedoston, ja tuottaa siitä kiinteänmittaisen merkkijonon. Tätä merkkijonoa kutsutaan tiivisteeksi tai hash-arvoksi. Esimerkiksi SHA-256 tuottaa aina 256 bittiä pitkän tuloksen riippumatta siitä, kuinka suuri syöte oli.

Hyvällä kryptografisella tiivistefunktiolla on muutamia olennaisia ominaisuuksia:

  • Deterministisyys. Sama syöte tuottaa aina saman tiivisteen. Jos lasket saman tiedoston tiivisteen tänään ja vuoden päästä, tulos on identtinen.
  • Nopea laskenta. Tiivisteen laskeminen on tehokasta jopa suurille tiedostoille.
  • Esikuvan vastustus. Tiivisteestä ei voi käytännössä laskea takaisin alkuperäistä syötettä. Funktio toimii vain yhteen suuntaan.
  • Törmäysvastus. On laskennallisesti epäkäytännöllistä löytää kaksi eri syötettä, jotka tuottavat saman tiivisteen.
  • Lumivyöryvaikutus. Pienikin muutos syötteessä, vaikka vain yksi merkki, muuttaa tiivisteen täysin tunnistamattomaksi.

Nämä ominaisuudet tekevät tiivisteistä eräänlaisen digitaalisen sormenjäljen. Voit verrata kahta tiivistettä ja päätellä luotettavasti, ovatko niiden takana olevat tiedostot identtisiä, ilman että sinun tarvitsee verrata itse tiedostoja bitti bitiltä.

SHA-perhe lyhyesti

SHA on lyhenne sanoista Secure Hash Algorithm. Kyseessä on Yhdysvaltain standardointiviranomaisen NIST:n julkaisema tiivistealgoritmien sarja, joka on ajan myötä kehittynyt useaksi sukupolveksi.

SHA-1 julkaistiin vuonna 1995, ja se tuottaa 160-bittisen tiivisteen. Sitä käytettiin pitkään laajasti TLS-varmenteissa, versiohallinnassa ja allekirjoituksissa. Tutkijat epäilivät sen turvallisuutta jo vuosia, mutta vasta vuoden 2017 SHAttered-tutkimus osoitti käytännön törmäyksen. Sen jälkeen SHA-1:n käytöstä luovuttiin nopeasti turvallisuuskriittisissä yhteyksissä.

SHA-2 on perhe, johon kuuluvat muun muassa SHA-256 ja SHA-512. Nämä numerot kertovat tiivisteen pituuden bitteinä. SHA-256 on tällä hetkellä yksi maailman käytetyimmistä tiivistealgoritmeista. Sitä hyödynnetään TLS-varmenteissa, ohjelmistojen allekirjoituksissa, tiedostojen eheystarkistuksissa ja esimerkiksi Bitcoinin louhinnassa.

SHA-3 on uudempi standardi, joka perustuu täysin erilaiseen sisäiseen rakenteeseen kuin SHA-2. Se ei korvaa SHA-2:ta vaan tarjoaa vaihtoehdon, joka nojaa eri matemaattisiin oletuksiin. Näin yhden perheen mahdollinen heikkous ei automaattisesti vaaranna toista.

Miksi tiivisteet ovat luottamuksen perusta

Tiivistefunktiot eivät yksinään salaa mitään, mutta ne tuottavat luottamusta monella tavalla, jota nykyinen verkko ei tulisi toimeen ilman.

Eheys. Kun lataat ohjelmiston, sen julkaisija ilmoittaa usein tiedoston tiivisteen. Laskemalla ladatun tiedoston tiivisteen ja vertaamalla sitä ilmoitettuun arvoon voit varmistaa, ettei tiedosto ole vaurioitunut tai joutunut muokatuksi matkalla.

Salasanojen suojaus. Vastuulliset palvelut eivät tallenna salasanoja sellaisenaan. Sen sijaan ne tallentavat salasanan tiivisteen, johon on lisätty satunnainen suola-arvo. Vaikka tietokanta vuotaisi, alkuperäisiä salasanoja ei saada suoraan selville.

Digitaaliset allekirjoitukset. Allekirjoitusta ei lasketa koko viestin yli vaan viestin tiivisteen yli. Tämä tekee allekirjoittamisesta tehokasta ja sitoo allekirjoituksen tiukasti viestin sisältöön.

Lohkoketjut. Bitcoinin ja muiden lohkoketjujen toiminta perustuu siihen, että lohkot linkitetään toisiinsa tiivisteiden avulla. Yhden lohkon muuttaminen rikkoisi koko ketjun, mikä tekee historian peukaloinnista käytännössä mahdotonta.

Juuri tästä syystä tiivistefunktion turvallisuus on niin kriittinen. Jos hyökkääjä pystyy tuottamaan kaksi eri sisältöä samalla tiivisteellä, hän voi pahimmillaan korvata luotetun tiedoston haitallisella versiolla niin, että allekirjoitus tai eheystarkistus näyttää yhä päteviltä. Tämä on tarkalleen se ongelma, jonka SHAttered teki näkyväksi SHA-1:n kohdalla.

Mitä tässä osiossa käsitellään

Tämä osio jakautuu neljään syventävään artikkeliin, joista jokainen tarkastelee aihetta omasta näkökulmastaan.

  • SHA-1-törmäys ja SHAttered-tutkimus. Vuoden 2017 ensimmäinen käytännön SHA-1-törmäys yksityiskohtaisesti: mitä tehtiin, kuinka suuri laskentaponnistus vaati ja miksi se merkitsi SHA-1:n loppua turvallisuuskäytössä.
  • SHA-256 selitettynä. Miten SHA-256 sijoittuu SHA-2-perheeseen, miten se käyttäytyy ja missä sitä käytetään käytännössä.
  • Kryptografiset tiivistefunktiot. Tiivistefunktioiden perusominaisuudet, ero tavallisiin tiivisteisiin ja yleisimmät käyttötarkoitukset.
  • Digitaaliset allekirjoitukset. Miten tiivistefunktio ja epäsymmetriset avaimet yhdessä mahdollistavat allekirjoituksen, ja miksi törmäys uhkaa tätä järjestelmää.

Kun olet lukenut nämä artikkelit, ymmärrät miksi tiivistefunktioita kutsutaan modernin tietoturvan kivijalaksi ja miksi vanhentuneen algoritmin korvaaminen ajoissa on niin tärkeää.