Tarkistussumma ja yksisuuntainen tiivistefunktio

Tarkistussumma (checksum) on erikoistapaus tiivistefunktiosta ('hash* function), joka puolestaan on aivan eri asia kuin "kompressio"-tiivistäminen, jossa alkuperäinen tieto voidaan palauttaa joko täysin (ZIP, GIF ym.) tai likimääräisesti (JPEG ym.)

Tutuin esimerkki tarkistussummasta on henkilötunnuksen viimeinen merkki, joka on laskettu muista merkeistä. Vastaava merkitys on pankkisiirron viitenumeron viimeisellä numeromerkillä. Tällaisten tarkistussummien tarkoituksena on näppäily- ym. virheiden havaitseminen (vrt. myös eheys tietokannoissa). Kansainvälisessä pankkitilin numerossa IBAN:ssa on kolme tarkistusmerkkiä: yksi varsinaisessa (suomalaisessa) tilinnumerossa ja kaksi kokonaisuudessa, heti kaksimerkkisen maakoodin jälkeen.

Yksinumeroinen tarkistussumma voitaisiin periaatteessa laskea vaikkapa summaamalla kaikki numeromerkit ja ottamalla tulokseksi summan viimeinen numero. Näin lasketaan esim. pariteettibitti. Yleensä tarkistussumman algoritmi on monimutkaisempi, eikä kyse enää ole pelkästä summaamisesta. Esimerkiksi CRC:n (eli Cyclic Redundancy Check-menetelmän) ideana on lisätä bittilohkon perään tietty määrä (16 tai 32) bittejä siten, että tulos on jaollinen annetulla kiinteällä luvulla. Jos vastaanottaja ei saa jakoa tasan, lohkossa tai tarkistussummassa (eli FCS:ssä, Frame Check -Sekvenssissä) on tapahtunut muutos. Tämäkin menetelmä mainitaan T. Vuoren laajassa tarkistusmerkkien esittelyssä, josta ilmenee myös miten moninaisissa yhteyksissä tarkistuksia käytetään.

Aktiivisia uhkia vastaan yksisuuntaiselta tiivistämiseltä vaaditaan lisäksi kryptografista kätkemistä. Se tarkoittaa esim. sitä, että virus ei voi viilata saastuttamaansa tiedostoa sellaiseksi, että se tuottaisi saman tarkistussumman kuin alkuperäinenkin. Kryptografisesti vahvat tiivistefunktiot ovat sellaisia, että saman esim. 128-bittisen tiivisteen tuottaminen kahdesta eri tiedostosta on mahdollista vain raa'alla voimalla eli kokeilemalla luokkaa 264 olevaa määrä vaihtoehtoja. Tunnetut algoritmit MD5 (message digest) ja SHA (secure hash algorithm) ovat 128-bittisiä, ja niistä on kummastakin löydetty heikkouksia. Vahvempia algoritmeja ovat näitä pidemmän tiivisteen tuottavat SHA-1 ja SHA-256 (160 ja 256 bittiä).

Tiedostojen eheystarkistuksen lisäksi kryptografiset tiivisteet ovat erittäin keskeisiä digitaalisten allekirjoitusten yhteydessä. Tämän lisäksi kryptotiivisteitä käytetään monissa protokollissa, joko kertaalleen tai iteroituina. Yksi esimerkki jälkimmäisestä on kertakäyttöinen salasana. Erityinen käyttökohde on vielä se, että kiinteitä salasanoja ei talleteta palvelimelle sellaisinaan vaan tiivistettyinä.

Kryptografisen tiivistefunktion syötteenä voi tekstin lisäksi olla avain. Jos se on kahden osapuolen yhteinen salaisuus, avaimellisen tiivisteen avulla vastaanottaja voi todeta, että teksti on säilynyt eheänä turvattoman yhteyden yli kulkiessaan. Tällainen tiivisteen sovellustapa on hyvin tavallinen protokollissa, esimerkkinä IPSec. Avaimellisesta tiivisteestä käytetään nimitystä MAC, 'message authentication code'. Avaimen mukanaolosta huolimatta yleisesti käytetyt tiiviste*algoritmit* sinänsä eivät käytä avainta, vaan avain syötetään niille osana tekstiä (esim. tekstin alussa ja/tai sen lopussa). Avaimettomia tiivisteitä kutsutaan toisinaan nimellä MDC, 'modification detection code'.

Avaimettomiin tiivisteisiin törmää helpoimmin SSL:n tai SSH:n yhteydessä, kun selain tai SSH-ohjelma näyttää (itselleen) tuntemattoman kohdekoneen julkisen avaimen (SSH) tai sen varmenteen (SSL) tiivistettä käyttäjän tarkasteltavaksi. (Juuri niin: avaimesta lasketaan avaimeton tiiviste) Ihmistä varten bittijonot esitetään tavallisesti heksadesimaalinumeroina, esim. 80 bittiä voivat erottimien kera näyttää tältä 5a:08:c6:21:3c:45:e9:0d:f8:bb.

-- JukkaKoskinen?

SivuTiedotLaajennettu edit

Vaativuus Perus
Valmius Valmis
Tyyppi Ydin
Luokitus Krypto
Mitä Luottamuksellisuus
Miltä Tahallinen uhka
Missä Organisaatio
Kuka Tite-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Print version |  PDF  | History: r3 < r2 < r1 | 
Topic revision: r3 - 22 Apr 2010 - 12:47:51 - MaijuLehtonen?
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback