811168P 5 op 5. Oulun yliopisto Tietojenkäsittelytieteiden laitos
Oppimisavoitteet tunnistaa kryptografian asema tietoturvassa: missä käytetään; mitä salaus pystyy takamaan määritellä kryptografian peruskäsitteistöä analysoida kryptografian keskeisiä periaatteita soveltaa yksinkertaisia salausmenetelmiä luokitella menetelmiä, joilla salausta vastaan hyökätään selittää yleisellä tasolla tekniikoita, joilla nykyai-kaisen salausmenetelmän turvallisuus pyritään takaamaan 2
A. Salaus Salausta (kuten tietoturvaa yleensäkin) voidaan tarkastella useasta näkökulmasta; esim. verkon rakenne: sovellus- (käyttäjä), kuljetus- (istunto), verkko- (isäntäkone yli verkon), yhteyskerros (solmujen välinen ) toteutustaso: ohjelmistot, turvaprotokollat, turva-algo-ritmit, kryptografiset menetelmät, matemaattinen teoria organisaatio: johto, IT asiantuntija, tietoturva-ammattilainen, ylläpitäjä, loppukäyttäjä on myös ketju; se muodostuu useasta toisiinsa liittyvästä osasta; kokonaisuuden turvallisuus = heikoimman lenkin turvallisuus 3
Kommunikointi salausta käyttäen avainpalvelu turvallinen kanava Alice salaus E k e (m)=c turvaton kanava avaus D k d (c)=m Bob vastapuoli Eve 4
Taustaa n ymmärtämiseksi täytyy ymmärtää kryptografiaa; mitä sillä voidaan taata ja mitä ei. ei yksin ratkaise tietoturvaongelmaa, mutta se voi olla tärkeä osa ratkaisua. Kryptografisia menetelmiä sovelletaan verkon eri kerroksissa SET (turvallinen sähköisen kaupan maksujärjestelmä), S/MIME ja PGP (sähköposti) sovelluskeroksesa SSL/TLS, SSL, VPN ja SSH kuljetuskerroksessa IPSec, VPN verkkokerroksessa L2TP yhteyskerroksessa 5
Mitä se on? - piilotettu, salainen - kirjoitus Terminologiaa kryptografia salakirjoitustiede kryptata salata dekryptata avata selkoteksti selväkielinen (salaamaton) teksti kryptoteksti kryptattu (salattu) teksti kryptologia: kryptografia ja kryptoanalyysi 6
Käsitteitä aakkosto A : äärellinen joukko (abstrakteja) symboleja (selko)viestiavaruus M : aakkoston A jokin sanajoukko kryptoviestiavaruus C : aakkoston A jokin sanajoukko avainavaruus K : parametrijoukko, josta avaimet valitaan salausfunktioiden (kryptausfunktioiden) joukko { E k k K } ; jokaista k K kohti on olemassa yksikäsitteinen bijektio E k : M C 7
Käsitteitä (2) avausfunktioiden (dekryptausfunktioiden) joukko { D k k K } ; jokaista k K kohti on olemassa yksikäsitteinen bijektio D k : C M ; aina, kun k K voidaan löytää sellainen yksikäsitteinen k K, että jokaisella m M on voimassa D k (E k (m)) = m salausjärjestelmä (kryptausjärjestelmä) on viisikko ( M, C, K, { E k k K }, { D k k K } ) 8
Käsitteitä (3) salausjärjestelmä on symmetrinen mikäli aina, kun k K, on avausfunktion D k määrittäminen salausfunktiosta E k (ja vastaavasti E k :n mää-rittäminen D k :sta) algoritmisesti helppoa salausjärjestelmä on epäsymmetrinen mikäli aina, kun k K, on avausfunktion D k määrittä-minen salausfunktiosta E k (ja vastaavasti E k :n määritäminen D k :sta) algoritmisesti vaikeaa 9
Salausjärjestelmän varmuus Salausjärjestelmä on ehdottomasti varma, jos vastapuoli ei saa (viestin pituuden lisäksi) mitään tietoa selkotekstistä huolimatta siitä kuinka paljon hänellä on käy-tettävissä kryptotekstiä ja laskentaresursseja laskennallisesti varma, jos sen murtaminen ei ole laskennallisesti toimeenpantavissa tietyllä ennaltamäärätyllä laskentakapasiteetilla ja laadulla todistettavasti varma, jos sen murtaminen on yhtä vaikeaa kuin jonkin vaikeana pidetyn matemaattisen ongelman ratkaiseminen 10
Salauksen murtaminen Neljä vaihtoehtoa murtamisen suorittamiseksi pelkästään kryptoteksti tunnettu selkoteksti valittu selkoteksti valittu kryptoteksti Pelkästään kryptoteksti Hyökkääjällä käytössään vain kryptotekstiä. Miten erottaa kryptoteksti selkotekstistä? Kryptotekstiä oltava riittävästi. Tunnettu selkoteksti Hyökkääjällä käytössään kryptoteksti ja sitä vastaava selkoteksti. 11
Murtaminen (2) Valittu selkoteksti Hyökkääjällä käytössään valitsemansa selkoteksti ja sitä vastaava kryptoteksti. Valittu kryptoteksti Hyökkääjällä käytössä valit-semansa kryptoteksti ja sitä vastaava selkoteksti. Muita murtamisen menetelmiä raaka voima tilastolliset menetelmät salasanan kaappaaminen sosiaaliseen manipuloini kiristys ja lahjonta 12
B. Salaisen avaimen kryptografia Salaisen avaimen kryptografia klassinen kryptografia symmetrinen kryptografia SKC yhtä vanha kuin kirjoitustaito Kiina 3000 vuotta e.a.a: ainoastaan yläluokka osasi lukea ja kirjoittaa Egypti 1900 vuotta e.a.a. Mesopotamia 1500 vuotta e.a.a. Palestiina (Juudea) 500 vuotta e.a.a. Kreikka 500 vuotta e.a.a. 13
Salaisen avaimen kryptografia (2) osapuolet jakavat yhteisen salaisuuden, taval-lisesti salaisen avaimen k avaimen k avulla voidaan määrittää sekä salausfunktio E k että vastaava avausfunktio D k usein samaa avainta k käytetään sekä avaa-miseen että salaamiseen; tällöin k = k ja tietysti D k = D k Huom! Olet. seur., että k = k eli, että salaus- ja vastaava avausavain ovat aina samat 14
Salaus symmetrisellä menetelmällä salainen avain k salainen avain k selkoteksti selkoteksti kryptausalgoritmi kryptoteksti dekryptausalgoritmi 15
Kerckhoffsin salausjärjestelmiä koskevat periaatteet Auguste Kerckhoffs, 1883 järjestelmän tulee olla käytännössä, ellei matemaattisesti, murtamaton järjestelmä ei saa olla salainen, sen on voitava joutua vihollisen käsiin avaimen tulee olla välitettävissä ja säilytettävissä ilman muistiinpanovälineitä ja vaihdettavissa tai muutettavissa aina tarvittaessa salattu viesti tulee voida lähettää sähkösanomana salaukseen käytetyn teknillisen välineistön tulee olla helposti kuljetettavissa, sen käyttö ei saa vaatia useaa henkilöä 16
Kerckhoffsin salausjärjestelmiä koskevat periaatteet (2) Auguste Kerckhoffs, 1883 (jatkoa...) salausjärjestelmän tulee olla helppokäyttöinen; sen käyttö ei saa vaatia henkistä ponnistusta tai vaikeasti muistettavia ohjeita 17
Lohkosalaajat salaaminen ja avaaminen lohkoina standardimenetelmää käyttäen; identtiset selkokielen lohkot kuvautuvat identtisiksi kryptolohkoiksi jos lohkokoko on liian pieni ja vastapuolella on käytössä useita pareja <selkoteksti,kryptoteksti>, voidaan laatia taulukko, ja yrittää murtamista liian suuri lohkokoko on hankala käyttää ja voi aiheuttaa implementointiongelmia DES ja AES ovat lohkosalaajia selkotekstilohko on samanpituinen kuin kryptotekstilohko 18
Jonosalaajat salaaminen selkotekstivirrassa, mikä tahansa määrä dataa voidaan salata välittömästi; gene-roidaan avainvirta; selkotekstivirta ja avainvirta yhdistetään; symbolijonon salaus riippuu sen paikasta selkotekstissä; avaaminen vastaavasti eivät välttämättä yhtä joustavia käyttää kuin lohkosalaajat; useimmat verkkopohjaiset klas-siset salaussovellukset käyttävät lohkosalaajia Vigenère ja Vernam voidaan katsoa esimerkeiksi jonosalaajista 19
Symmetrisen salaajan suunnittelu salaajan tulee olla tarpeeksi kompleksinen, jotta sitä ei ole helppo murtaa riittävän yksinkertainen, jotta sen implementointi ei käy ylivoimaiseksi ja salaus/avaus on nopeaa nykyiset symmetriset salaajat käyttävät yksinktaisia sekoitus- ja hajautusfunktioita; näitä sovelletaan usealla kierroksella, jotta salaamisen kompleksisuus lisääntyisi, mutta laskemisen vaatimat resurssit pysyisivät kohtuullisina 20
Sekottaminen (confusion) vaikeuttaa selkotekstin, avaimen ja kryptotekstin yhteyden havaitsemista suoritetaan esim. korvaamalla selkotekstilohko kryptotekstilohkolla korvauksen mekanismi ei ole bittikohtainen tilastollinen analyysi ja säännöllisyyksien etsiminen vaikeutuu jokainen avaimen bitti vaikuttaa jokaiseen kryptotekstin bittiin. 21
Hajauttaminen (diffusion) levittää selkotekstin rakenteen kryptotekstiin siten, että kryptotekstibitti riippuu useasta selkotekstibitistä suoritetaan esim. järjestämällä uudelleen selkotekstin kirjaimet (siirrolla tai permutoimalla muuten) jokainen selkotekstin bitti vaikuttaa jokaiseen kryptotekstin bittiin 22
Lumivyöryominaisuus (avalanche) liittyy sekottamiseen ja hajauttamiseen olkoon f : {0,1} n {0,1} n bijektiivinen funktio; siten f on joukon {0,1} n permutaatio funktiolla f on hyvä lumivyöryominaisuus jos yhden symbolin (bitin) muutos syöttösanassa (argumenttien arvot x 1 ja x 2 poikkeavat toisistaan yhdessä bitissä) aiheuttaa mahdollisimman monen (> 50 %) bitin muuttumisen tulostussanassa (funktioarvot f(x 1 ) ja f(x 2 ) poikkeavat toisistaan yli 50 % bittejä) 23
Täydellisyysominaisuus (completeness) bijektiolla f : {0,1} n {0,1} n on hyvä täydellisyysominaisuus, jos jokaista i {1,2,,n } ja jokaista j {1,2,,n } kohti voidaan löytää syöttösanat m 1 ja m 2, jotka poikkeavat toisistaan vain i. symbolissa (bitissä), mutta f(m 1 ) ja f(m 2 ) poikkeavat toisistaan j. symbolissa (bitissä) 24
Esimerkkejä salaajista Caesar - salaaja a b c d e f g h i j k l m n o p q r s t u v w x y z d e f g h i j k l m n o p q r s t u v w x y z a b c Yksiaakkostosalaaja a b c d e f g h i j k l m n o p q r s t u v w x y z k l p d e f g h i j x a b t u v c q r s m n o y z w 25
Yksiaakkostosalaajan murtaminen (1) Caesar on siirtosalaaja, yksiaakkostosalaajan erikoistapaus aakkosto {a 0, a 1,, a n-1 } a i a (i+k) mod n, k = 0,1,, n-1 Avain k voidaan valita n eri tavalla, joten Caesar on helppo murtaa. Siirtosalaajat ovat täysin turvattomia valittu selkoteksti hyökkäystä vastaan. 26
Yksiaakkostosalaajan murtaminen (2) Yleinen yksiaakkostosalaaja aakkosto {a 0, a 2,, a n-1 } a i a r(i) missä r : {a 0, a 1,, a n-1 } {a 0, a 1,, a n-1 } on bijektiivinen funktio. On n! mahdollisuutta valita avain r, joten salaaja on turvallinen raa'an voiman murtoa vastaan jopa jos aakkosto ei ole kovin suuri. Yksiaakkostosalaaja voidaan murtaa frekvenssianalyysia käytttäen, jos lähdetekstin ominaisuuksia tunnetaan. 27
Esimerkkejä salaajista: Vigenère aakkoston symbolit a 0,a 1,, a n -1 samaistetaan lukujen 0,1,, n -1 kanssa avain k = k 0 k 1 k m -1 valitaan; kukin k i kuuluu joukkoon A = {a 0,a 1,, a n -1 } kirjoitetaan avain peräkkäin niin monta kertaa, että muodostuu selkoviestin m pituinen merkkijono k salaaminen: asetetaan m ja k allekkain; laske-taan jokainen selkoviestin symboli yhteen (mod n) avainjonon k vastaavan symbolin kanssa; saa-daan kryptoviesti c 28
Esimerkkejä salaajista: Vigenère (2) avaaminen: asetetaan c ja k allekkain; vähennetään jokaisesta kryptoviestin symbolista (mod n) avainjonon k vastaava symboli; saa-daan m salaa Vigenère menetelmällä teksti 'alussa oli suo, kuokka ja jussi', kun avain on 'akseli' kun Vigenère salaajassa avaimen k pituus on yksi (eli k A), saadaan Caesar salaaja a l u s s a o l i s u o k u o k k a j a j u s s i A K S E L I A K S E L I A K S E L I A K S E L I A A V K X B I O V Ä X D X K O E O V I J K Ö Z B Ä I 29
Vigenère - taulukko a b c d e f g h i j k l m n o p q r s t u v x y z å ä ö A B C D E F G H I J K L M N O P Q R S T U V X Y Z Å Ä Ö B C D E F G H I J K L M N O P Q R S T U V X Y Z Å Ä Ö A C D E F G H I J K L M N O P Q R S T U V X Y Z Å Ä Ö A B D E F G H I J K L M N O P Q R S T U V X Y Z Å Ä Ö A B C E F G H I J K L M N O P Q R S T U V X Y Z Å Ä Ö A B C D F G H I J K L M N O P Q R S T U V X Y Z Å Ä Ö A B C D E G H I J K L M N O P Q R S T U V X Y Z Å Ä Ö A B C D E F H I J K L M N O P Q R S T U V X Y Z Å Ä Ö A B C D E F G I J K L M N O P Q R S T U V X Y Z Å Ä Ö A B C D E F G H J K L M N O P Q R S T U V X Y Z Å Ä Ö A B C D E F G H I K L M N O P Q R S T U V X Y Z Å Ä Ö A B C D E F G H I J L M N O P Q R S T U V X Y Z Å Ä Ö A B C D E F G H I J K M N O P Q R S T U V X Y Z Å Ä Ö A B C D E F G H I J K L N O P Q R S T U V X Y Z Å Ä Ö A B C D E F G H I J K L M O P Q R S T U V X Y Z Å Ä Ö A B C D E F G H I J K L M N P Q R S T U V X Y Z Å Ä Ö A B C D E F G H I J K L M N O Q R S T U V X Y Z Å Ä Ö A B C D E F G H I J K L M N O P R S T U V X Y Z Å Ä Ö A B C D E F G H I J K L M N O P Q S T U V X Y Z Å Ä Ö A B C D E F G H I J K L M N O P Q R T U V X Y Z Å Ä Ö A B C D E F G H I J K L M N O P Q R S U V X Y Z Å Ä Ö A B C D E F G H I J K L M N O P Q R S T V X Y Z Å Ä Ö A B C D E F G H I J K L M N O P Q R S T U X Y Z Å Ä Ö A B C D E F G H I J K L M N O P Q R S T U V Y Z Å Ä Ö A B C D E F G H I J K L M N O P Q R S T U V X Z Å Ä Ö A B C D E F G H I J K L M N O P Q R S T U V X Y Å Ä Ö A B C D E F G H I J K L M N O P Q R S T U V X Y Z Ä Ö A B C D E F G H I J K L M N O P Q R S T U V X Y Z Å Ö A B C D E F G H I J K L M N O P Q R S T U V X Y Z Å Ä 30
Kasiskin testi: Vigenère murtuu oletetaan, että englanninkielistä selkotekstiä kryptataan Vigenère salaajalla ja avaimen pituus on m Kasiski huomasi vuonna 1863 että kaksi identtistä selkokielistä tekstisegmenttiä salautuu samaksi kryptotekstiksi, jos niiden sijainti selkotekstissä on x aakkoston symbolia erillään ja m jakaa tasan luvun x kääntäen: jos löydetään kaksi identtistä, vähin-tään kolmen symbolin pituista kryptotestiseg-menttiä, on kohtalaisen suuri mahdollisuus, että ne vastaavat samaa selkokielitekstiä 31
Kasiskin testi: Vigenère murtuu (2) siispä etsitään kryptotekstistä identtisiä vähintään kolmen pituisia merkkijonoja ja kirjataan niiden etäisyydet toisistaan. On todennäköistä, että m jakaa etäisyyksien suurimman yhteisen tekijän sovelletaan frekvenssianalyysia pituuden m määrittämiseksi kokeilemalla kaikkia mahdollisia arvoja luvuksi m 32
Esimerkkejä salaajista: Vernam aakkoston {0,1} viesteille m 1 ja m 2 määritetään bittikohtainen yhteenlasku (yhteenlasku (mod 2)) yhtälöillä 0 0 = 1 1 = 0, 0 1 = 1 0 = 1 esim. m 1 = 1100 ja m 2 =1010; m 1 m 2 = 1100 1010 = 0110. Vernam salaaja on jonosalaaja, jonka aakkosto on A = {0,1}; avaimet ovat aakkoston A sanoja viesti m salataan samanpituisella avaimella yksinkertaisesti: E k (m) = m k. 33
Esimerkkejä salaajista: Vernam (2) kryptoviestin c = m k avaaminen: D k (c) = c k = ( m k) k = m ( k k) = m jos Vernam salaajassa avaimen bitit saadaan riippumattomilla Bernoulli kokeilla, missä molempien bittien todennäköisyys on ½ (esim. harhatonta rahaa heittämällä) ja kutakin kokees-sa saatua bittiä käytetään salaaamiseen vain kerran, on kyseessä one-time pad salaaja, joka on (ainoa tunnettu) ehdottoman varma salausmenetelmä 34
Playfair - salaaja Charles Wheatstone, 1854 symmetrinen salausmenetelmä käsikäyttöinen monikirjainsalaaja käsittelee selkotekstin kahden kirjaimen lohkoja (eli digrammeja) yksikköinä ja muuntaa nämä yksiköt (kirjain kerrallaan) kryptotekstin digrammeiksi digrammeja on 25 25 = 625 kpl, joten frekvenssianalyysi vaikeutuu Playfair - algoritmi perustuu 5 5 - kirjainmatriisiin, joka konstruoidaan avainsanan avulla 35
Playfair kirjainmatriisi; avainsana 'kryptaus' k/q r y p t a u s/z b c d e f g h i j l m n o/å v x ä ö 36
Kirjainmatriisin konstruointi Playfair kirjainmatriisi konstruoidaan sijoittamalla avainsana (jossa sama kirjain voi esiin-tyä korkeintaan kerran) symboli kerralaan matriisiin paikkoihin vasemmalta oikealle ja ylhäältä alas; ja täyttämällä jäljelle jääneet vapaat matriisin paikat lopuilla (avainsanaan kuulumattomilla) kirjaimilla aakkosjärjestyksessä suomalaisessa aakkostossa 28 kirjainta kolme kirjainta jakaa matriisin paikan jonkin muun kirjaimen kanssa (parit {k,q}, {s,z} ja {o,å} muodostavat kukin yhden kirjaimen) 37
Playfair - salausalgoritmi 1. Jos selkokielisessä tekstissä kaksi samaa kirjainta on joutumassa samaan digrammiin, käytetään täyttösymbolina kirjainta x; esim. halla salataan merkkijonona ha lx la. 2. Jos selkokielidigrammin kirjaimet sijaitsevat matriisissa samalla rivillä, kumpikin kirjain kryptataan matriisissa kirjaimen oikealla puolella olevaksi symboliksi; rivin viimeinen kirjain koodataan saman rivin ensimmäiseksi symboliksi. 38
Playfair - salausalgoritmi (2) 3. Jos selkokielidigrammin kirjaimet sijaitsevat matriisissa samalla sarakkeella, ne kryptataan matriisissa kirjaimen alapuolella olevaksi symboliksi; sarakkeen viimeinen (alin) kirjain koodataan saman sarakkeen ensimmäiseksi (ylimmäksi) symboliksi. 4. Muussa tapauksessa (eli kirjaimet sijaitsevat eri rivillä ja eri sarakkeilla) digrammin kirjain kryp-tataan symboliksi, joka sijaitsee kirjaimen (sijainti)rivin ja digrammin toisen kirjaimen (sijainti)sarakkeen leikkauksessa. 39
Playfair - avausalgoritmi jos digrammin kirjaimet sijaitsevat matriisin samalla rivillä (vast. sarakkeella), ne säilyvät salauksessa samalla rivillä (vast. sarakkeella) jos digrammin kirjaimet sijaitsevat matriisin eri rivillä ja eri sarakkeella, ne säilyvät salauksessa eri rivillä ja eri sarakkeella avausalgoritmin operaatiot saadaan salausal-goritmin operaatioista käänteisillä toimenpiteillä kryptataan seuraavaksi symboliksi - dekryptataan edelliseksi symboliksi (kohdat 2 ja 3) kryptataan siirtymällä samalla rivillä, dekryptataan siirtymällä takaisin (kohta 4) 40
Playfair - salaaja: esimerkki Teht. salaa teksti 'alussa oli suo, kuokka ja jussi', kun avaisana on 'akseli' Ratk. Selkotekstidiagrammit {al}{us}{sa}{ol}{is}{uo}{ku}{ok}{ka}{ja}{ju}{sx}{si} Kryptotekstidiagrammit {ka}{rl}{ek}{ua}{ca}{op}{lp}{pa}{sk}{gs}{nr}{qy}{ac} 41
Playfair kirjainmatriisi; avainsana akseli a k/q s/z e l i b c d f g h j m n o/å p r t u v x y ä ö 42
Kirjainfrekvenssit englannin kielessä 43
Kirjainten esiintymisfrekvenssi 44
Figure 2.7:n selityksiä käyrä plaintext kuvaa Encyclopedia Britannica sanakirjan kryptologiaa kuvaavan artikkelin (jos-sa on yli 70 000 kirjainta) kirjainten suhteellisia frekvenssejä siten, että jokaisen kirjaimen esiintymislukumäärä ko artikkelissa jaettiin kirjaimen e esiintymislukumäärällä kyseisessä artikkelissa saatu desimaaliluku kerrottiin sadalla Encyclopedia Britannica artikkeli salattiin sitten sekä Playfair- että Vigenère-salaajalla 45
Figure 2.7:n selityksiä (2) salaamisen jälkeen kunkin kirjaimen esiintymislukumäärä kryptotekstissä jaettiin kirjaimen e lukumäärällä selkotekstissä; ja saatu desimaaliluku kerrottiin sadalla tulos: Playfair cipher käyrä ja Vigenère käyrä Random polyalphabetic cipher käyrä kuvaa tilannetta, jossa teksti on salattu satunnaisella moniaakkostosalaajalla, jossa kukin selkotekstin symboli korvataan täysin satunnaisesti valitulla latinalaisen aakkoston symbolilla 46
Feistelin tikapuut: salaaminen m=m 0 m 1 m 0 m 1 f k 1 m 1 m 2 =m 0 f k 1(m 1 ) f k 2 m r m r+1 c=m r +1 m r 47
Feistelin tikapuut: avaaminen Bob (vastaanottaja) tuntee osa avaimet k 1,k 2,...,k r sekä kryptoviestin c = m r+1 m r Bob asettaa y r = m r m r+1 ; tietysti m r -1 = m r Bob laskee arvon f k r (m r -1) nyt m r+1 = m r-1 f k r (m r), joten m r+1 f k r (m r-1) = m r-1 f k r (m r) f k r (m r -1) = m r -1 Bobilla on nyt tiedossa y r-1 = m r -1 m r osa avaimen k r -1 avulla Bob saa määritettyä luvun y r -1 = m r -1 m r -2 näin jatkamalla (ylöspäin) Bob saa lopulta lasketuksi luvun m = y 0 = m 0 m 1 48
49
Yksi DES kierros 50
Lohkosalaajamoodi: Electronic Code Book (ECB) olkoon salainen avain k ja oletetaan, että selkokielinen viesti on jaettu lohkoihin m 0, m 1, m 2, m 3,... tällöin salaaminen ECB-moodissa tapahtuu seuraavasti: c i = E k (m i ), kun i = 0,1,2,... salattu viesti muodostuu lohkoista c 0, c 1, c 2, c 3,... avaaminen ECB-moodissa: m i = D k (c i ), kun i = 0,1,2,... edellä tietysti E k on lohkosalaajan salausfunktio avaimella k ja D k on vastaava avausfunktio 51
Alice ja DES:n ECB-moodi 52
Lohkosalaajamoodi: Cipher Block Chaining (CBC) olkoon salainen avain k, selkokielilohkojen jono m 0, m 1, m 2, m 3,... ja IV etukäteen annettu aloitusvektori alotusvektori on lohkonpituinen symbolijono tällöin salaaminen CBC-moodissa tapahtuu seuraavasti: c 0 = E k (m 0 IV) ja c i = E k (m i c i -1 ), kun i = 1,2,3,... salattu viesti muodostuu lohkoista c 0, c 1, c 2, c 3,... avaaminen CBC-moodissa m 0 = D k (c 0 ) IV ja m i = D k (c i ) c i -1, kun i = 1,2,3,... 53
Alice ja DES:n CBC-moodi 54
C. Julkisen avaimen kryptografia Julkisen avaimen kryptografia epäsymmetrinen kryptografia PKC salausjärjestelmä on epäsymmetrinen mikäli aina, kun k K, on avausfunktion D k määrittäminen salausfunktiosta E k (ja vastaavasti E k :n määritäminen D k :sta) algoritmisesti vaikeaa kaksi avainta, julkinen ja yksityinen; merkitään X:n julkista avainta ku x ja yksityistä avainta kr x julkisella avaimella salataan ja varmennetaan digitaalinen allekirjoitus; c = E ku x (m), y = D kux (z) 55
Julkisen avaimen kryptografia (2) yksityisellä avaimella avataan ja suoritetaan digitaalinen allekirjoitus; m = D kr x (c), z = E krx (y) tietysti m = D kr x (E kux (m)) ; yleensä myös c = E kux (D krx (c)) usein salaus- ja avausalgoritmit ovat samat, vain avain vaihtuu; tällöin E k = D k aina, kun k {ku x,kr x } 56
PKC: luottamuksellisuus A B m E E (m) ku D m b ku b kr b 57
PKC: autentikointi ja digitaalinen allekirjoitus A B m E E (m) kr D m a kr a ku a 58
PKC: luottamuksellisuus, autentikointi ja digitaalinen allekirjoitus A m E E E kra (m) E (E ku b kra (m)) kr a ku b D E kr a (m) D m B kr b ku a 59
Jaollisuudesta Merkintöjä Z = {..., -2, -1, 0, 1, 2, 3,... } kokonaisluvut N = { 0, 1, 2,... } luonnolliset luvut N + = Z + = { 1, 2, 3,... } positiiviset kokonaisluvut Olkoon m Z ja n N +. On olemassa yksikäsitteiset q Z and r {0, 1, 2,..., n -1}, joille m = q n + r 60
Jaollisuudesta (2) Edellä r on jakojäännös kun m jaetaan luvulla n. Jakojäännöstä, joka saadaan, kun m jaetaan n:llä, merkitään m mod n. Jos m mod n = 0 sanomme, että n jakaa tasan luvun m, merkitään n m. Jos n m, niin m on jaollinen luvulla n ja n on luvun m tekijä. Nollasta poikkeavien kokonaislukujen a ja b suurin yhteinen tekijä syt(a,b) on suurin sellainen positiivinen luku, joka jakaa sekä a:n että b:n (siis c a ja c b). 61
Jaollisuudesta (3) Kokonaislukujen ominaisuuksien nojalla voidaan osoittaa, että kahden luvun suurin yhteinen tekijä on olemassa ja yksikäsitteinen. Lukujen suurin yhteinen tekijä voidaan määrittää Eukliden algoritmin avulla. 62
Eukliden algoritmi Olkoot a,b Z \ {0}. Koska syt(a,b) = syt( a, b ), voimme rajoituksetta olettaa, että a b > 0 Jos b jakaa tasan a:n, niin syt(a,b) = b. Oletetaan, että b ei jaa tasan lukua a. Tällöin voidaan löytää sellaiset, q 0 q 1,..., q k+1, r 0, r 1,..., r k N +, missä k N, että a = q 0 b + r 0 0 < r 0 < b b = q 1 r 0 + r 1 0 < r 1 < r 0 r 0 = q 2 r 1 + r 2 0 < r 2 < r 1... r k-2 = q k r k-1 + r k 0 < r k < r k-1 r k-1 = q k+1 r k 63
Eukliden algoritmi (2) Väitämme, että syt(a,b) = r k. Miksi? Jos c a ja c b niin c r 0. Tästä seuraa, että c r 1 c r 2... c r k. Toisaalta r k r k-1 r k r k-2... r k b r k a. Siispä syt(a,b) = r k. Ilmeisesti voidaan löytää sellaiset kokonaisluvut x ja y, että syt(a,b) = x a + y b. Jos syt(a,b) = 1, sanomme, että a ja b ovat keskenään jaottomia tai suhteellisia alkulukuja. Asetaetaan syt(a,0) = syt(0,a) = a aina, kun a on nollasta poikkeava kokonaisluku. 64
Luvun alkulukuesitys Kokonaisluku p > 1 on alkuluku, jos 1 and p ovat p:n ainoat positiiviset tekijät. Olkoon m > 1 kokonaisluku. On olemassa yksikäsitteinen n N +, yksikäsitteiset alkuluvut p 1 < p 2 <... < p n ja yksikäsitteiset i 1, i 2,..., i n N +, joille m = p 1 i 1 p 2 i 2... p n i n. Edellä luvun m esitys muodossa m = p i 1 1 p i 2 2... on m:n tekijöihinjako. p n i n 65
Jakojäännöksistä Olkoon n > 1 kokonaisluku. Tarkastellaan kokonailukujen a ja b jakojäännöksiä luvulla n jaettaessa. Selvästi ehto a mod n = b mod n (eli jakojäännökset ovat samat) on yhtäpitävä ehdon kanssa. n b a (eli n jakaa tasan luvun b a) Aina, kun a, b, c, d ovat sellaisia kokonaislukuja, että a mod n = b mod n ja c mod n d mod n, on (a + c) mod n = (b + d ) mod n (a c) mod n = (b d ) mod n (a c) mod n = (b d ) mod n 66
Jakojäännöksistä (2) Edelleen, jos ja c ovat sellaisia kokonaislukuja, että on voimassa (a c) mod n = (b c) mod n, a mod [ n / syt (n, c )] = b mod [ n / syt (n, c )]. Edellisen kalvon tulosten nojalla (a + b) mod n = (a mod n + b mod n) mod n (a b) mod n = (a mod n b mod n) mod n (a b) mod n = (a mod n b mod n) mod n 67
Jäännösluokkalaskentaa Olkoon n {2,3,4,... } ja Z n = {0,1,2,..., n -1}. Määritellään joukossa Z n operaatiot + n (yhteenlasku modulo n), - n (vähennyslasku modulo n), n (kertolasku modulo n), ja n potenssiinkorotus modulo n), yhtälöillä x + n y = (x + y) mod n x n y = (x y) mod n x - n y = (x y) mod n x n y = x y mod n Edellä yhtälöiden oikealla puolella olevat operaatiot ovat tavallisia kokonaislukujen laskutoimituksia. Operaatiot + n ja n vastaavat jäännösluokkien yhteen- ja kertolaskua. 68
Jäännösluokkalaskentaa modulo 10: yhteenlasku + 10 0 1 2 3 4 5 6 7 8 9 0 0 1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 0 2 2 3 4 5 6 7 8 9 0 1 3 3 4 5 6 7 8 9 0 1 2 4 4 5 6 7 8 9 0 1 2 3 5 5 6 7 8 9 0 1 2 3 4 6 6 7 8 9 0 1 2 3 4 5 7 7 8 9 0 1 2 3 4 5 6 8 8 9 0 1 2 3 4 5 6 7 9 9 0 1 2 3 4 5 6 7 8 69
Jäännösluokkalaskentaa modulo 10: kertolasku 10 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 6 7 8 9 2 0 2 4 6 8 0 2 4 6 8 3 0 3 6 9 2 5 8 1 4 7 4 0 4 8 2 6 0 4 8 2 6 5 0 5 0 5 0 5 0 5 0 5 6 0 6 2 8 4 0 6 8 2 4 7 0 7 4 1 8 5 2 9 6 3 8 0 8 6 4 2 0 8 6 4 2 9 0 9 8 7 6 5 4 3 2 1 70
Jäännösluokkalaskentaa (2) Joukon Z n = {0,1,2,..., n -1} alkioita voidaan ajatella tavanomaisina kokonaislukuina, kuitenkin yo laskutoimituksilla varustettuna. Alkion a Z n vasta-alkio (käänteisalkio yhteenlaskun suhteen) on se yksikäsitteinen y Z n, jolle a + n y = 0. Merkitään y = a. Esim. Alkion 7 Z 14 vasta-alkio on 7, koska 7 + 14 7 = 0. Alkion a Z n käänteisalkio (kertolaskun suhteen), jos se on olemassa, on se yksikäsitteinen z Z n, jolle a n z = 1. 71
Jäännösluokkalaskentaa (3) Esim. Alkion 3 Z 14 käänteisalkio on 5, koska 3 14 5 = 1. Alkiolla 7 Z 14 ei ole käänteisalkiota. Väite: Alkiolla a Z n, a 0, on käänteisalkio (kertolaskun suhteen) jos ja vain jos syt(a,n) = 1. Miksi? Oletetaan aluksi, että syt(a,n) = 1. Tällöin (yleistettyä Eukleideen algoritmia käyttäen) voidaan löytää sellaiset kokonaisluvut x ja y että x a + y n = 1. Rajoituksetta voidaan olettaa, että x Z n (miksi?) Nyt selvästi x n a = 1. Oletetaan sitten, että x n a = 1, missä x Z n. 72
Jäännösluokkalaskentaa (4) Määritelmän nojalla x a = 1 + k n jollak k Z. Näemme, että x a k n = 1, josta seuraa, että syt(a,n) = 1. mot Eulerin (totient-) funktio. Jokaisella n N +, olkoon (n) niiden alkioiden j {1,2,,n} lukumäärä, joille n ja j ovat jaottomia. On selvää, että (p) = p 1 jos p on alkuluku. Jos sekä p että q ovat alkulukuja, saadaan (p q) = (p 1)(q 1). 73
Jäännösluokkalaskentaa (5) Olkoon Z n kaikkien sellaisten alkioiden x Z n että x ja n ovat keskenään jaottomia. Ilmeisesti joukossa Z n on (n) alkiota. Se on myös suljettu kertolaskun n suhteen: kahden n:n kanssa jaottoman luvun tulo on jaoton n:n kanssa. Jokaisella alkiolla x Z n käänteisalkio kertolaskun suhteen. Siten ( Z n, n ) on ryhmä. Eulerin lause. Olkoot a, n N + sellaisia, että syt(a, n) = 1. Tällöin a (n) mod n = 1. Fermat'n pieni lause. Olkoon a N + ja p alkuluku, joka ei jaa tasan lukua a. Tällöin a p-1 mod n = 1. 74
Jäännösluokkalaskentaa (6) Voidaan osoittaa, että jokaista alkulukua p kohti on olemassa sellainen a Z p että Z p = {a i i = 0, 1, 2,, p 1} Sanomme tällöin, että a virittää (eli generoi) ryhmän Z p. 75
RSA Ron Rivest, Adi Shamir ja Len Adleman keksivät RSA:n vuonna 1977 suosituin PKC-algoritmi, ainoa laajalle levinnyt ja yleisesti hyväksytty julkisen avaimen monikäyttötekniikka salaa, avaa, tuottaa digitaalisen allekirjoituksen ja todentaa sen muuttuvanpituinen avain (1024 bittiä ja 2048 bittiä tällä hetkellä suosituimmat) lohkokoko vaihtelee, selkotekstiblokki lyhempi kuin avain kryptotekstiblokki avaimen pituinen 76
RSA (2) salaaminen ja avaaminen perustuvat jäännösluokkaeksponenttien määrittämiseen (myös Euklideen algoritmiin) murtamisen vaikeus perustuu oletukseen kokonaislukujen tekijöihinjaon vaikeudesta 77
RSA algoritmi 1. Avaimen generointi valitaan kaksi suurta alkulukua p ja q (molemmat ainakin 256-bittisiä) lasketaan n = p q lasketaan ( p q ) = ( p - 1 ) ( q - 1 ) valitaan salauseksponentti, sellainen kokonaisluku e joukosta {2,3,, (n) 1}, että syt(e, (n) ) = 1 määritetään (Euklideen algoritmi) se luku d {2,3,, (n)-1}, jolle (d e ) mod (n) = 1 julkinen avain on ku = {e, n} yksityinen avain on kr = {d, n} 78
RSA algoritmi (2) 2. Salaaminen selkoteksti m Z n kryptoteksti c = m e mod n 3. Avaaminen kryptoteksti c Z n selkoteksti m = c d mod n Luvun n pituuden tulisi nykyään olla välillä (1024, 2048). 79
RSA: esimerkki alkulukuja p = 53 ja q = 59 käyttäen generoi itsellesi RSA avainpari kryptaa teksti 'olipaker'omalla julkisella avaimellasi avaa kryptoteksti yksityisellä avaimellasi ratkaisu kotona 80
Diffie-Hellman algoritmi 1. Julkiset parametrit valitaan suuri alkuluku p (ainakin 1024 bittiä) ja (jokin) kertolaskuryhmän Z p * generaattori 2. Alice generoi omat parametrinsa avaimeen Alice valitsee yksityisen luvun x a Alice laskee y a = x a mod p ( = p x a ) 3. Alice lähettää luvun y a Bobille Alice valitsee yksityisen luvun x a Alice laskee y a = x a mod p ( = p x a ) 4. Bob generoi omat parametrinsa avaimeen Bob valitsee yksityisen luvun x b Bob laskee y b = x b mod p ( = p x b ) 5. Bob lähettää luvun y b Alicelle 81
Diffie-Hellman algoritmi (2) 6. Alice generoi salaisen avaimen Alice laskee k = y b xa mod p (= y b p x a ) 7. Bob generoi salaisen avaimen Bob laskee k = y a xb mod p (= y a p x b ) 82
Diffie-Hellman -avaimenvaihto Vaikka vastapuoli Eve tuntisi parameetrit p,, y a ja y b, hänen on (todennäköisesti) vaikeaa määrittää salainen avain k ; Even pitäisi kyetä ratkaisemaan niin kutsuttu Diffie-Hellman ongelma Diffie-Hellman ongelma (DHP) Olkoon annettu alkuluku p, kertolaskuryhmän Z p * generaattori ja parametrit x mod p ( = p x ) ja y mod p ( = p y ). Määritä luku x y mod p ( = p xy ). DHP on ainakin yhtä vaikea kuin diskreetin logaritmin ongelma (DLP). 83
Diffie-Hellman avaimenvaihto (2) Diffie-Hellman algoritmissa on heikkouksia: authentikointia ei suoriteta se on haavoittuva välimieshyökkäykselle se on haavoittuvs clogging -hyökkäykselle Välimieshyökkäys (Man-in-the-Middle attack, MiM): 1. Alice lähettää Bobille viestin, joka sisältää parametrit p, y a ja. 2. Eve keskeyttää viestin, valitsee oman lukunsa x e ja laskee arvon y e sekä salasen avaimen k ae = y a p x e. 3. Eve naamioituu Alicen suuntaan Bobiksi ja lähettää Alicelle parametrin y e. 4. Alice laskee salaisen avaimen k ae = y e p x a. 84
Diffie-Hellman avaimenvaihto (3) Välimieshyökkäys (jatkuu... ): 5. Eve naamioituu Bobin suuntaan Aliceksi ja lähettää Bobille parametrit p, y e and. 6. Bob valitsee oman lukunsa x b ja laskeee aron y b sekä salaisen avaimen k be = y e p x b. 7. Uskoen, että Eve on Alice, Bob lähettää parametrin y b to Eve. 8. Eve laskee salasien avaimen k be = y b p x e. Eve kykenee nyt välitttämään viestejä Alicen ja Bobin välillä ja sopivasti salausta vaihtamalla huijaamaan kumpaakin osapuolta. Alice ja Bob eivät tiedä, että he jakavat viestinsä Even kanssa. 85
Diffie-Hellman avaimenvaihto (4) Diffie-Hellman algoritmi on laskennallisesti intensiivinen (se vaatii paljon laskentaa). Se on haavoittuva clogging hyökkäystä vastaan, jossa vastapuoli hyökkää pyytämällä suurta määrää avaimia. Uhri kuluttaa huomattavan määrän laskentaresursseja hyödyttömään modulaarilaskentaan. 86
Mittayksiköiden kerrannaisia osoittavat etuliitteet, lyhenteet ja koot eksa E 10 18 peta P 10 15 tera T 10 12 giga G 10 9 mega M 10 6 kilo k 10 3 hehto h 10 2 deka da 10 desi d 10-1 sentti c 10-2 milli m 10-3 mikro 10-6 nano n 10-9 piko p 10-12 femto f 10-15 alto a 10-18 87