Salaushajautusfunktio on algoritmi, jota voidaan ajaa tiedoilla, kuten yksittäisellä tiedostolla tai salasanalla, arvon, jota kutsutaan tarkistussummaksi, tuottamiseksi. Salaushajautustoiminnon pääasiallinen käyttötarkoitus on varmistaa tiedon aitous. Kahden tiedoston voidaan olettaa olevan identtisiä vain, jos kustakin tiedostosta luodut tarkistussummat, käyttämällä samaa kryptografista hajautusfunktiota, ovat identtisiä. Jotkut yleisesti käytetyt kryptografiset hajautusfunktiot ovat MD5 ja SHA-1, vaikka monia muitakin on olemassa. Kryptografisia hajautusfunktioita kutsutaan usein «tiivistefunktioiksi», mutta se ei ole teknisesti oikein. Hajautusfunktio on yleinen termi, joka sisältää kryptografiset hajautusfunktiot sekä muun tyyppiset algoritmit, kuten sykliset redundanssitarkistukset.
Kryptografiset hajautusfunktiot: käyttötapaus
Oletetaan, että lataat Firefox-selaimen uusimman version. Jostain syystä sinun piti ladata se muualta kuin Mozillan sivustolta. Koska sitä ei ylläpidetä sivustolla, johon olet oppinut luottamaan, sinun kannattaa varmistaa, että juuri lataamasi asennustiedosto on täsmälleen sama kuin Mozillan tarjoama tiedosto. Lasket tarkistussumman käyttämällä tarkistussummalaskinta tietyllä kryptografisella hajautusfunktiolla, kuten SHA-2:lla, ja vertaat sitä Mozilla-sivustolla julkaistuun funktioon. Jos ne ovat samat, voit olla melko varma, että saamasi lataus on se, jonka Mozilla aikoi sinun ladata.
Voidaanko kryptografisia hash-funktioita peruuttaa?
Kryptografiset hash-funktiot on suunniteltu estämään niiden luomien tarkistussummien palauttaminen alkuperäisiin teksteihin. Vaikka niitä on käytännössä mahdotonta kumota, ne eivät ole 100-prosenttisesti taattuja tietojen suojaamisesta. Hakkerit voivat käyttää sateenkaaritaulukkoa selvittääkseen tarkistussumman tekstin. Rainbow-taulukot ovat sanakirjoja, jotka sisältävät tuhansia, miljoonia tai jopa miljardeja tarkistussummia vastaavan tekstiarvon vieressä. Vaikka tämä ei teknisesti käännä kryptografista hajautusalgoritmia, se voisi yhtä hyvin, koska se on niin helppo tehdä. Todellisuudessa, koska mikään sateenkaaritaulukko ei voi luetella kaikkia mahdollisia tarkistussummia, ne ovat yleensä hyödyllisiä vain yksinkertaisissa lauseissa, kuten heikkoissa salasanoissa. Tässä on yksinkertaistettu versio sateenkaaritaulukosta, joka näyttää, kuinka se toimisi käytettäessä SHA-1 kryptografista hajautustoimintoa:
Esimerkki sateenkaaripöytä | |
---|---|
Tasaista tekstiä | SHA-1 tarkistussumma |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
salasana 1 | e38ad214943daad1d64c102faec29de4afe9da3d |
rakastan koiraani | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
Dallas 1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Hakkerin on tiedettävä, mitä kryptografista hajautusalgoritmia käytettiin tarkistussummien luomiseen saadakseen arvojen selville. Suojauksen lisäämiseksi jotkin käyttäjien salasanoja tallentavat verkkosivustot suorittavat lisätoimintoja kryptografisessa hajautusalgoritmissa arvon luomisen jälkeen, mutta ennen sen tallentamista. Tämä prosessi tuottaa uuden arvon, jonka vain verkkopalvelin ymmärtää ja joka ei vastaa alkuperäistä tarkistussummaa. Esimerkiksi salasanan syöttämisen ja tarkistussumman luomisen jälkeen se voidaan jakaa useisiin osiin ja järjestää uudelleen ennen kuin se tallennetaan salasanatietokantaan, tai tietyt merkit voidaan vaihtaa toisiin. Kun käyttäjä seuraavan kerran kirjautuu sisään, verkkopalvelin kääntää tämän lisätoiminnon todennusyrityksessä ja luo alkuperäisen tarkistussumman uudelleen varmistaakseen, että käyttäjän salasana on kelvollinen. Näiden vaiheiden suorittaminen rajoittaa hakkeroinnin hyödyllisyyttä, kun kaikki tarkistussummat varastetaan. Ajatuksena on suorittaa tuntematon toiminto, joten jos hakkeri tuntee kryptografisen hajautusalgoritmin mutta ei mukautettua, salasanan tarkistussummien tiedosta ei ole apua.
Salasanat ja kryptografiset hajautustoiminnot
Tietokanta tallentaa käyttäjien salasanat sateenkaaritaulukon tapaan. Kun salasana syötetään, tarkistussumma luodaan ja sitä verrataan käyttäjätunnuksellasi rekisteröityyn summaan. Sinulle myönnetään sitten käyttöoikeus, jos nämä kaksi ovat identtisiä. Koska kryptografinen hash-funktio tuottaa ei-palauttavan tarkistussumman, voit tehdä salasanastasi niin yksinkertaisen kuin 12345sijasta 12@34 $5, koska itse tarkistussummia ei voida ymmärtää? Ei, ja siksi. Näitä kahta salasanaa on mahdotonta tulkita vain tarkastelemalla tarkistussummia:
MD5 mallille 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 hintaan 12@34$5: a4d3cc004f487b18b2ccd4853053818b
Ensi silmäyksellä saatat ajatella, että on hyvä käyttää jotakin näistä salasanoista. Tämä pätee, jos hyökkääjä yrittää selvittää salasanasi arvaamalla MD5-tarkistussumman, mitä kukaan ei tee, mutta ei, jos suoritetaan raa’an voiman tai sanakirjahyökkäys, mikä on yleinen taktiikka. Raaka voimahyökkäys tapahtuu, kun salasanan arvaamiseksi tehdään useita satunnaisia puukotuksia. Tässä tapauksessa se olisi helppo arvata 12345, mutta melko vaikea keksiä satunnaisesti muita. Sanakirjahyökkäys on samanlainen siinä mielessä, että hyökkääjä voi kokeilla mitä tahansa sanaa, numeroa tai lausetta yleisten (ja ei niin yleisten) salasanojen luettelosta, ja 12345 on yksi yleisimmistä salasanoista. Vaikka kryptografiset hajautustoiminnot tarjoavat vaikeasti mahdottomia tarkistussummia, sinun on silti käytettävä monimutkaista salasanaa kaikille online- ja paikallisille käyttäjätileillesi.
Lue lisää kryptografisista hajautusfunktioista
Saattaa tuntua siltä, että kryptografiset hajautustoiminnot liittyvät salaukseen, mutta nämä kaksi toimivat eri tavoin. Salaus on kaksisuuntainen prosessi, jossa jokin salataan lukukelvottomaksi ja puretaan myöhemmin käytettäväksi normaalisti. Voit salata tallentamasi tiedostot, jotta kukaan, jolla on pääsy niihin, ei voi käyttää niitä, tai voit käyttää tiedostonsiirtosalausta verkon yli liikkuvien tiedostojen, kuten verkossa lataamiesi tai lataamiesi tiedostojen, salaamiseen. Kryptografiset hajautusfunktiot toimivat eri tavalla, koska tarkistussummia ei ole tarkoitus palauttaa erityisellä dehash-salasanalla. Salaustoimintojen ainoa tarkoitus on vertailla kahta dataa, kuten tiedostoja ladattaessa, salasanoja tallennettaessa ja tietoja haettaessa tietokannasta. On mahdollista, että kryptografinen hajautusfunktio tuottaa saman tarkistussumman eri tiedoille. Kun näin tapahtuu, sitä kutsutaan törmäykseksi, mikä on valtava ongelma, koska kryptografisen hajautusfunktion tarkoitus on luoda ainutlaatuiset tarkistussummat jokaiselle siihen syötetylle datalle. Törmäyksiä voi tapahtua, koska jokainen kryptografinen hajautusfunktio tuottaa kiinteän pituisen arvon riippumatta syöttötiedoista. Esimerkiksi MD5:n kryptografinen hajautusfunktio luo 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 ja e10adc3949ba057f3f3f56b05983 täysin eri dataa. Ensimmäinen tarkistussumma on peräisin 12345† Toinen on luotu yli 700 kirjaimesta ja numerosta, ja kolmas on peräisin 123456† Kaikki kolme merkintää ovat eripituisia, mutta tulokset ovat aina vain 32 merkkiä pitkät MD5-tarkistussumman käytön jälkeen. Luotavien tarkistussummien määrää ei ole rajoitettu, koska minkä tahansa syötteen pienen muutoksen pitäisi johtaa täysin erilaiseen tarkistussummaan. Koska yhden kryptografisen hajautusfunktion tuottamien tarkistussummien määrä on rajoitettu, on aina mahdollisuus törmäykseen. Siksi on luotu muita kryptografisia hajautusfunktioita. Kun MD5 luo 32 merkin arvon, SHA-1 luo 40 merkkiä ja SHA-2 (512) 128. Mitä enemmän merkkejä tarkistussummassa on, sitä vähemmän todennäköistä on törmäys.