DATILI4, tietoturvatekniikat, 1 ov |
Salaus ja salausavaimet1. YleistäSalauksen tarkoitus on muuttaa viesti siten, että vain salaisuuteen vihitty vastaanottaja voi sen saattaa selkokieliseen muotoon. Mikäli salauksessa käytettävä sala-avain joutuu jonkun ulkopuolisen tahon haltuun, ei salaus ole enää turvallinen. Tätä voidaan välttää käyttämällä vaihtuvaa avainta (esim. pankkien palveluavaimet Internet-pankin käyttöön tms). Toisaalta sala-avaimen on oltava riittävän vaikeasti arvattava, jottei sivistyneellä arvauksella voida saada selville jonkun henkilön asettamaa salasanaa (kuten esimerkiksi Maija-nimisen henkilön salasana voisi olla "Mari13", mikäli on yleisesti tunnettua, että hänellä on Mari-niminen 13-vuotias tytär). Ammoin Caesarin aikana salaukseksi riitti ns. Caesarin salaus, jossa meneteltiin siten, että jokaista aakkosten kirjainta siirrettiin kolme pykälää eteenpäin (a=d, b=e, c=f). Viesti purettiin luonnollisesti ajamalla salausalgoritmi toiseen suuntaan (eli siirtämällä aakkosta kolme askelta taaksepäin). Caesarin salaus on yksinkertainen korvaussalaus jossa selkokielistä merkkiä vastaa aina sama salausmerkki. Nykymaailmassa on käytettävä oleellisesti tehokkaampia salausmenetelmiä jotta salaisuus säilyy. Caesarin salauksessa on kielestä riippuen 25-30 avainvaihtoehtoa, mikä ei riitä pitämään paperilla ja kynälläkään aseistautunutta kryptologia kovin kauaa aisoissa. 2. Avainpituus ja sen merkitys salauksessaKerckhoffsin periaatteen mukaan salausavaimen pituudella aikaansaatava riittävä turvallisuus vapauttaa julkistamaan salausalgoritmin. Tämä tarkoittaa sitä, että tapa, jolla jotain on salattu, voidaan vaikka paljastaa viestin alussa selkokielisenä, mikäli itse salattava viesti on salattu niin pitkällä avaimella, ettei sitä saa auki edes kokeilemalla kaikkia mahdollisia avaimia kohtuullisessa ajassa. Avainpituudella on sinänsä suuri merkitys salaisuuden säilymiselle, koska jos salataan jotain esimerkiksi 10-bittisellä salausavaimella, on täten olemassa 1024 erilaista vaihtoehtoa avaimelle (0000000000 - 1111111111, binääriluvut väliltä 0-1023, toisin sanoen 2^10 vaihtoehtoa). Mikäli salausavain on taas nykyisin jo varsin kehnona pidetty 48-bittinen, on vaihtoehtoja 2^48 eli 281474976710656. Jatkaen samaa kokeilua, esimerkiksi 128-bittisessä salauksessa on siis 2^128 eri vaihtoehtoa, joka on jo 38-numeroinen luku. Mikäli ryhdytään murtamaan salausta ns. raa´an voiman periaatteella (Brute Force) käyttäen tietokonetta, joka kokeilee 1 000 000 avainta sekunnissa, palaa aikaa 10-bit salauksen varmaan selvittämiseen tarkalleen 0,001024 sekuntia, missä ajassa edes prosessin käynnistämiseksi painettu enter ei ehdi nousta takaisin yläasentoon. Todennäköisyyslakien perusteella avain löytyy keskimäärin tarkalleen puolesta välistä tätä koetta (0,000512 sekuntia). 48-bittinen salausavain (joka vastaa tarkalleen viittä ASCII-merkkiä) taas ottaa jo hieman enemmän aikaa. Mikäli ryhdytään taas kokeilemaan, kauanko 1 000 000 avainta sekunnissa kokeilevalla koneella kestää avata salaisuus, voidaan helposti todeta, että 2^48=281474976710656 kpl avaimia, joten homma kestää kaikki avaimet kokeillen 281474976710656/1000000/86400 = 3257 ja rapiat vuorokautta, koska vastaus on avaimien määrä jaettuna kokeiluja per sekunti jaettuna sekunteja per vuorokausi. Tästä voidaan helposti päätellä, millainen vaikutus avainpituuden kasvattamisella 128-bittiseksi on: avainpituuden kasvattaminen vaikuttaa vaihtehtojen määrään kiihtyvästi. Todellisuudessa ihmisten salasanoja aletaan yleensä arvailemaan erilaisten salasanakirjastojen avulla, jossa salasanan paikalle kokeillaan sanakirjan sisältöä automaattisesta kannasta ja katsotaan avautuuko salattu viesti millään järkevällä tavalla. Entä sitten salasana itse? Ongelmaksi muodostuu se, että salasana olisi saatava toisen osapuolen tietoon tavalla tai toisella. Mikäli salasana lähetetään ensin selkokielisenä, on ongelmana se, ettei paraskaan salasana auta mitään, jos joku onnistuu saamaan haltuunsa salasanan jolla kohta lähetettävä salainen viesti avataan. Tämän ongelma ratkeaa tyylikkäästi Diffie-Hellman -menetelmällä. 3. AntiikkisalaimiaVigenéren salaus (kalvosarjan s. 8) oli yksi kuuluisimmista salauksista. Sitä pidettiin murtamattomana, ennenkuin ns. Kasiski-menetelmä (kalvosarjan s. 11) esiteltiin. Vigenéren salauksessa oli kyse samanlaisesta ratkaisusta kuin Caesarin tapauksessa, mutta Vigenére käytti salasanaa ja kaksiulotteistas taulukkoa salauksessaan. 4. XOR-salausXOR-salaus (kalvosarja s. 12) on yksi nopeimmista tietokoneilla tehtävistä salauksista, jossa salaus muodostuu perin yksinkertaisella periaatteella, mutta tuottaa kohtuullisen vaikeasti avattavan viestin. XOR-salauksessa sekä selkoteksti että sala-avain ovat binäärilukuja jotka asetetaan allekain ja salattu viesti muodostuu XOR-operaation periaatteella. Salataan sana "aasi" salasanalla joo. Tällöin sana "aasi kirjataan ASCII-koodiston bitteinä merkki merkiltä siten, että yksi tavu (kirjain) tuottaa aina kahdeksanbittisen jonon. Sitten kopioidaan sala-avainta "joo" sanan "aasi" alle bitteinä peräkkäin niin kauan että hallussamme on yhtä pitkä selkokielinen viesti ja sala-avain. Koska sana "joo" loppuu kesken, otamme vielä seuraavasta sanasta "joo" ensimmäisen j-kirjaimen.
Kuvassa oleviin kirjaviin kenttiin on siis kirjoitettu ASCII-koodein binäärilukuja käyttäen sana "aasi". Sinisen sävyjä sisältävällä rivillä ovat kirjaimet j, o, o, j tässä järjestyksessä. Punaisella rivillä on salattu viesti. XOR-operaation tuloksena kahdesta samanlaisesta bitistä tuloksena on 0 ja kahdesta eristä tuloksena on 1 kuten voimme kuvasta päätellä (selkokielinen bitti ylimmällä rivillä XOR sala-avaimen bitti keskirivillä samalla kohtaa = salattu bitti alimmalla punaisella rivillä. Kuten näemme helposti ASCII-taulukosta vertaamalla, salattu viesti ei muistuta edes etäisesti sanaa "aasi".
|