TIETOTURVA, OSA III: AVAINTENHALLINTA Timo Karvi 30.8.2006 Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 1 / 123
Avaintenhallintaa ja todennusta Tässä luvussa tarkastellaan protokollia, joiden avulla osapuolet voivat sopia salaisesta avaimesta ja todentaa toisensa. Tällainen toimenpide liittyy useimpiin tietoturvaprotokolliin ensimmäisenä vaiheena, ennen kuin varsinainen toiminta, esimerkiksi tiedoston siirto, alkaa. Kirjallisuudessa on jonkin verran käsitelty tilannetta, jossa osapuolet tyytyvät vain todentamaan toisensa, eivätkä vaihda avaimia ollenkaan. Valtaosa protokollista vaihtaa myös avaimia. Yleensä tarkastellaan kahden osapuolen tilannetta, mutta viime aikoina ovat myös ryhmäprotokollat ja monen osapuolen tilanteet saaneet paljon huomiota. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 2 / 123
Avaintenhallintaa ja todennusta Jatkossa tarvitaan käsittettä istuntoavain. Istuntoavain on tarkoitettu varsinaisen datan vaihtoon. Istuntoavain voidaan vaihtaa joka kerran, kun uusi istunto aloitetaan. Istuntoavaimen lisäksi käytännön protokollissa tarvitaan muita avaimia. Esimerkiksi pääavain, ryhmäavain tms. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 3 / 123
Hyökkäyksiä Kuvaamme ensin yleisesti hyökkäystapoja, joita voidaan soveltaa monenlaisiin protokolliin, erityisesti myös avaimenvaihto- ja todennusprotokolliin. Seuraava lista ei ole täydellinen, sillä erilaisia hyökkäystapoja on itse asiassa ääretön määrä. Voidaan itse asiassa väittää, ettei tyyppivirhelistoista ole paljon hyötyä, kun protokollan oikeellisuudesta yritetään vakuuttautua. Sen sijaan tarvittaisiin tietoa, että protokolla täyttää turvaehdot, jotka sille on asetettu. Ei kuitenkaan pidä täysin hylätä virhelistoja, sillä niiden avulla voidaan karsia tavanomaiset ja ennalta esiintyneet virheet. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 4 / 123
Hyökkäyksiä On huomattava, että eri protokollilla on erilaiset tavoitteet. Jos kysymyksessä on avainten vaihto, toinen protokolla voi sisältää luottamuksellisuuden todentamisen ohella ja toinen tyytyy vain todentamaan. Kolmannella voi lisäksi olla tavoitteena vielä varmistaa, että istuntoavain on oikein vastaanotettu käyttäjien puolella. Tietoturvaprotokollan yhteydessä tulisi aina selkeästi määritellä turvatavoitteet, jottei synny kiistaa siitä, toimiiko protokolla oikein vai ei. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 5 / 123
Salakuuntelu Salakuuntelu on ehkä perustavanlaatuisin protokollahyökkäys. Se torjutaan käyttämällä salakirjoitusta. Salauksen avulla turvataan istuntoavain. Sen lisäksi voidaan salata muuta sensitiivistä tietoa. Kiintoisa esimerkki on avainvaihto mobiiliverkoissa. Siellä tavallisesti vaaditaan, että mobiilin aseman tunnistetiedot jäävät luottamuksellisiksi. Salakuuntelua luonnehditaan yleensä passiiviseksi hyökkäykseksi, koska se ei sinänsä häiritse osapuolia istunnon aikana. Muut jatkossa tarkasteltavat hyökkäykset ovat aktiivisia hyökkäyksiä. On selvää, että aktiivisessa hyökkäyksessäkin voidaan salakuunnella tiedonvälitystä. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 6 / 123
Muuntelu Jos protokollasanoman kenttä ei sisällä redundanttia tietoa, niin silloin muuntelu on potentiaalinen uhka. Tämän uhkan torjumiseksi tarvitaan eheyden turvaavia menetelmiä. Koko sanoma samoin kuin yksittäiset kentät ovat haavoittuvia muuntelulle. Monet hyökkäykset eivät muuta mitään kenttää, mutta pilkkovat ja uudelleen yhdistävät kenttiä, kenties useista eri sanomista. Täten eheystarkastelujen täytyy ulottua koskemaan kaikkia sanomia, jotka muodostavat kokonaisuuden. Pelkkä salaus ei riitä. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 7 / 123
Toisto Toistohyökkäys tarkoittaa mitä tahansa hyökkäystä, jossa vastustaja ujuttaa protokollaliikenteeseen sellaisen sanoman tai sen osan, joka on jo lähetetty aikaisemmin. Toisto on eräs perushyökkäys, jota käytetään usein osana muita hyökkäyselementtejä. Lähes kaikki turvaprotokollat joutuvat ottamaan tämän hyökkäyksen huomioon. Sitä torjutaan tavallisesti järjestysnumeroilla, satunnaisluvuilla eli nonsseilla tai aikaleimoilla. Toistohyökkäys voi käyttää hyväkseen saman protokollan aikaisemman istunnon sanomia tai saman istunnon sanomia. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 8 / 123
Alustus Alustusta voidaan pitää toiston laajennuksena, vaikkakaan sitä ei juurikaan voi käyttää yksinään hyökkäykseen. Hyökkäys sujuu seuraavaan tapaan: 1 Vastustaja C salakuuntelee istuntoa A:n ja B:n välillä. 2 C aloittaa erilliset istunnot A:n ja B:n kanssa, joissa C käyttää askeleessa 1 saamaansa tietoa hyväksi. 3 C taivuttaa seuraavaksi A:n ja B:n paljastamaan keskenään käyttämänsä istuntoavaimen. Jos A ja B uskovat, että tämän istuntoavaimen tulisi olla C:n tuntema, askel on mahdollinen tietyissä tilanteissa. 4 C käyttää nyt saamaansa tietoa paljastamaan askeleessa 1 käytetyn istuntoavaimen. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 9 / 123
Heijastus Heijastus on toiston tärkeä erikoistapaus. Tyypillisessä tilanteessa kaksi osapuolta neuvottelee jaetusta avaimesta ja toinen osapuoli yksinkertaisesti palauttaa viestin, joka on tarkoitettu sille itselleen. Tämä hyökkäys saattaa olla mahdollinen vain, jos samaa protokollaa voidaan ajaa rinnakkain. Toisaalta rinnakkainen ajo on usein todellisuutta käytännön protokollissa. Esimerkiksi jos toinen osapuoli on Internet-palvelin, se voi hyväksyä istuntoja useilta asiakkailta käyttäen samaa identiteettiä ja samaa kryptograsten avainten joukkoa. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 10 / 123
Seuraava esimerkki valaisee heijastusta. Oletetaan, etta A ja B jakavat saman salaisen avaimen K. Olkoon N A ja N B kaksi satunnaislukua, nonssia, jotka A ja B ovat etukäteen valinneet. Protokollan tarkoituksena on todentaa molemmat osapuolet näyttämällä, että kumpikin tuntee K :n: 1. A B: {N A } K 2. B A: {N B } K, N A 3. A B: N B Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 11 / 123
Saadessaan sanoman 2 A päättelee, että sen täytyy tulla B:ltä, sillä vain B:llä on K. Jos kuitenkin A on sallii, että protokollasta ajetaan useita versioita rinnan, on mahdollisuus, että sanoma 2 olikin alunperin A:n muodostama. Vastustaja C voi käyttää tätä hyväkseen: 1. A C : {N A } K 1'. C A: {N A } K 2'. A C : {N } A K, N A 2. C A: {N } A K, N A 3. A C : 3'. C A: N A N A Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 12 / 123
Heti saatuaan 1. sanoman C aloittaa toisen istunnon A:n kanssa heijastaen takaisin nonssisanoman, jonka sai A:lta. A:n vastaus antaa C:lle mahdollisuuden vastata A:n 1. sanomaan ilman, että tuntee salaista avainta K. Näin C voi teeskennellä olevansa B ilman, että A huomaa mitään. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 13 / 123
Palvelunesto Palvelunestohyökkäyksessä vastapuoli estää laillisia käyttäjiä käyttämästä protokollaa täydellisesti. Käytännössä palvelunestohyökkäyksiä tehdään sellaisia palvelimia vastaan, joiden on tarkoitus palvella asiakkaita verkon yli. Nämä hyökkäykset voidaan jakaa hyökkäyksiin, jotka pyrkivät kuluttamaan palvelimen laskentaresurssit ( resource depletion attacks), ja hyökkäyksiin, joiden tavoitteena on ylittää sallittu yhteyksien määrä ( connection depletion attacks). Periaatteellisella tasolla näyttää siltä, ettei palvelunestohyökkäyksiä voida täysin estää. Jokainen yhteysyritys aiheuttaa sen, että joko yhteys hyväksytään tai se hylätään tietyn laskentamäärän jälkeen. On kuitenkin joitakin menetelmiä, joista on hyötyä pienennettäessä estohyökkäysten vaikutuksia. Toiset protokollat ovat haavoittuvaisempia estohyökkäyksille kuin toiset, joten hyökkäys ja sen torjuntamenetelmiä on aiheellista tuntea. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 14 / 123
Auran ja Nikanderin ehdotus Aura ja Nikander ovat ehdottaneet tilattomia yhteyksiä suojaamaan yhteyksien ylittymiseltä. Ideana on vaatia asiakasta tallentamaan kaikki tilatieto palvelimen sijasta ja palauttamaan tieto palvelimelle sanomien yhteydessä. Tällä tavoin palvelin säästyy tietojen varastoinnilta. On selvää, että palvelimelle palaavan tilatiedon tulee olla tarkistettavissa ja sen täytyy olla todennettavissa. Sen tulisi olla myös luottamuksellista. Tämä lisää prosessesointia kummassakin päässä. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 15 / 123
Evästeet Käytännöllisempi tapa on käyttää evästeitä. Tätä tapaa ovat ensin ehdottaneet Karn ja Simpson Photuris-protokollassaan (1. versio 1995, viimeisin 1999). Kun asiakas yrittää solmia yhteyttä, palvelin lähettää takaisin evästeen. Menetelmä on samanlainen kuin www-palvelimissa käytetty, mutta nyt evästeillä on erityinen muoto: ne on muodostettu vain palvelimen tuntemasta salaisuudesta ja yhteystiedoista. Tässä vaiheessa palvelin ei talleta mitään yhteystietoja itselleen. Asiakkaan täytyy lähettää eväste seuraavassa sanomassa ja palvelin tarkistaa evästeen oikeellisuuden lähetetystä datasta ja evästeen sisältämästä salaisuudesta. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 16 / 123
Menetelmän tavoitteena on varmistaa, että asiakas todella aikoo solmia aidon yhteyden. Menetelmä estää sellaiset palvelunestohyökkäykset, joissa yhteyspyyntöjä lähetetään satunnaisesti suuri määrä. Jos palvelimen salaisuutta vaihdetaan aika ajoin (joka 60. sekunti), ei edes sama asiakas voi tehdä rajoittamatonta määrää yhteyspyyntöjä. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 17 / 123
Meadowsin ehdotus Meadows ehdottaa yhteyksiin kohdistuvan hyökkäyksen torjumiseksi, että jokainen sanoma tulisi todentaa. Jotta turhaa laskentaa ei tulisi liikaa, todennuksen tulisi olla kevyttä protokollan alussa ja vahvistua myöhempien sanomien myötä. Evästeet, jotka palvelin lähettää ja jotka täytyy palauttaa, voivat alussa toimia todennuksena. Meadows on kehittänyt jopa formaalin kehyksen, joka perustuu Gongin ja Syversonin fail-stop -protokollille. Tällaiset protokollat lopettavat suorituksensa heti, kun epäaito sanoma on havaittu. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 18 / 123
Juelin ja Brainardin ehdotus Juel ja Brainard ehdottavat mekanismia, jota he kutsuvat nimellä "client puzzles". Mekanismi muodostaa vahvemman todennuksen kuin evästeet. Ideana on, että kun palvelimen kuormitus kasvaa suureksi, kenties estohyökkäyksen johdosta, palvelin lähettää asiakkaille jonkin verran laskentaa vaativan probleeman, joka asiakkaan täytyy ratkaista ennen kuin uusi yhteys tehdään. Todellisille asiakkaille tästä aiheutuu vain vähän vaivaa, mutta estohyökkäyksen tekijä joutuu ratkomaan monia probleemoja. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 19 / 123
Tyypityshyökkäykset Kun sanoma saapuu vastaanottajalle, vastaanottaja näkee vain bittijonon, jota sen täytyy alkaa tulkita. Tyypityshyökkäys käyttää tätä hyväkseen yrittämällä saada vastaanottaja tulkitsemaan väärin saapunut sanoma tai hyväksymään yksi protokolla-alkio toisen sijasta. Tyyppiesimerkki on hyökkäys Otwayn ja Reesin protokollaa vastaan. Protokollassa osapuolet A ja B jakavat pitkän aikavälin salausavaimet K AS ja K BS palvelimen S kanssa. S generoi uuden istuntoavaimen K AB ja lähettää sen sekä A:lle että B:lle. Symbolit M ja N A ovat A:n valitsemia nonsseja ja N B on B:n valitsema nonssi. Protokolla on seuraava: Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 20 / 123
Otwayn ja Reesin protokolla 1. A B: M, A, B, {N A, M, A, B} KAS 2. B S: M, A, B, {N A, M, A, B} K AS, {N B, M, A, B} KBS 3. S B: M, {N A, K AB } K AS, {N B, K AB} KBS 4. B A: M, {N A, K AB } KAS Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 22 / 123
Tyypityshyökkäys puree nyt, koska ensimmäisen ja viimeisen sanoman salatussa osassa on samankaltaisuuksia: ne alkavat samalla kentällä ja ne on salattu samalla avaimella. Kuten on tavallista tämän kaltaiselle hyökkäykselle, protokollasta joudutaan tekemään lisäoletuksia ennen kuin hyökkäys onnistuu. Nyt hyökkäys riippuu yhdistetyn kentän M, A, B pituudesta, jonka pituuden on oltava sama kuin avaimen K AB oletettu pituus. Tällainen oletus on täysin realistinen, sillä M voi olla 64 bittiä, A ja B kumpikin 32 bittiä ja avain voi olla 128 bittinen, mikä on suosittua nykyään. Näillä oletuksilla vastapuoli C voi tehdä seuraavan hyökkäyksen. Hyökkäyksessä merkintä C B tarkoittaa, että C tekeytyy B:ksi: Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 23 / 123
1. A C B : M, A, B, {N A, M, A, B} KAS 4. C B A: {N A, M, A, B} KAS C tekeytyy B:ksi ja sieppaa A:n lähettämän sanoman B:lle. Sitten C palauttaa salakirjoitetun sanoman osan A:lle, jonka A tulkitsee protokollan sanomaksi 4. Jos nyt edellä mainittu oletus pitää paikkansa, A hyväksyy yhdistetun kentän M, A, B jaetuksi avaimeksi K AB. C tietenkin tuntee arvot M, A ja B 1. sanomasta ja voi siten jatkossakin tekeytyä B:ksi saaden A:lta luottamuksellista, B:lle tarkoitettua tietoa. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 24 / 123
Tyypityshyökkäyksiä vastaan voidaan suojautua eri tavoilla. Ad hoc -varotoimiin kuuluu muuttaa sanoman kenttien järjestystä joka kerran kun kenttiä käytetään. Salausavainta käytetään vain kertaalleen. Systemaattisemmat menetelmät todentavat sanoman numeron jokaisessa sanomassa tai kentän tyypin jokaisen kentän yhteydessä. Tietenkin nämä toimenpiteet kasvattavat resurssien käyttöä. Aura on käsitellyt systemaattisia menetelmiä torjua tyypityshyökkäyksiä. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 25 / 123
Kryptoanalyysi Yleensä tietoturvaprotokollia analysoitaessa salaus- ym. kryptograset perusalgoritmit oletetaan murtamattomiksi. Poikkeuksia kuitenkin on. Tärkein niistä on sellainen, että tiedetään jokin avain heikoksi ja sellaiseksi, että se voidaan arvata kun tarpeeksi tietoa on käsillä. Tämä tieto koostuu tavallisimmin selväteksti-salateksti -parista tai selväteksti-mac -parista. Tyyppiesimerkki on tilanne, jossa avain muodostetaan salasanasta, jonka ihmisen täytyy muistaa. Tällaisessa tilanteessa avaimen arvojoukko on selvästi pienempi kuin jos avain generoitaisiin kunnolla ilman salasanaa. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 26 / 123
Varmennemanipulointi Julkisen avaimen protokollissa varmenne on kolmannen, luotetun osapuolen (varmenneviranomaisen) vakuutus, että julkinen avain kuuluu todella sille, jolle sen väitetään kuuluvan. Varmenneviranomaisen ei kuitenkaan oleteta takaavan, että vastaava yksityinen avain on julkisen avaimen haltijan hallussa. Tämä seikka johtaa potentiaalisiin hyökkäyksiin, joissa vastapuoli hankkii varmenteen julkiselle avaimelle, vaikka ei omistakaan vastaavaa salaista avainta. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 27 / 123
Tarkastellaan hyökkäystä Matsumoton et al. avaintenvaihtoprotokollan yhteydessä. Osapuolet A ja B omistavat julkiset avaimet g a ja g b sekä vastaavat yksityiset avaimet a ja b. Tässä g on luku, joka generoi sellaisen ryhmän Z n, että diskreetin logaritmin ongelma on tuossa ryhmässä hankala. Jokainen julkinen avain on varmennettu, joten A:lla ja B:llä on varmenteet Cert(A) ja Cert(B). Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 28 / 123
1. A B: g x, Cert(A) 2. B A: g y, Cert(B) Jaettu avain on K AB = g ay+bx, jonka A laskee kaavalla (g y ) a (g b ) x ja B kaavalla (g a ) y (g x ) b. Vastapuoli C aloittaa hyökkäyksen valitsemalla satunnaisen arvon c, väittämällä, että g ac on sen julkinen avain, ja hankkimalla varmenteen tälle julkiselle avaimelle. C ei siis tiedä vastaavaa yksityistä avainta ac. Sitten C tekeytyy B:ksi ja suorittaa protokollan kahdesti, A:n ja B:n kanssa: Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 30 / 123
1. A C B : g x, Cert(A) 1'. C B: g x, Cert(C) 2'. B C : g y, Cert(B) 2. C B A: g yc, Cert(B) Nyt A laskee avaimen K AB = (g yc ) a (g b ) x = g acy+bx ja B avaimen K CB = (g ac ) y (g x ) b = g acy+bx. Siten A:lla ja B:llä on sama avain, mutta A uskoo avaimen olevan vain A:lla ja B:llä, kun taas B uskoo avaimen olevan B:llä ja C:llä. Tämä voi aiheuttaa hämminkiä jatkossa. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 32 / 123
Tämän tyyppiset hyökkäykset voidaan välttää vaatimalla, että jokainen osapuoli osoittaa omaavansa yksityisen avaimen ennen kuin varmenne myönnetään julkiselle avaimelle. Tällainen osoitus saavutetaan parhaiten käyttämällä nollatietotodistuksia, jolloin salaisesta avaimesta ei paljastu mitään. Toinen, ehkä käytännöllisempi menetelmä on allekirjoittaa tietty sanoma tai haaste. Nämä asiat kuuluvat siten julkisen avaimen infrastruktuuriin. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 33 / 123
Protokollien vuorovaikutus Useimpia pitkän ajan avaimia käytetään vain yhden protokollan yhteydessä. On kuitenkin mahdollista, että avaimia käytetään monissa protokollissa yhtäaikaa. Tämä voi johtua huolimattomattomasta suunnittelusta, mutta se saattaa olla myös harkittua, erityisesti silloin kun pieniä muisteja sisältäviä laitteita käytetään moniin sovelluksiin. On helppo nähdä, että toisistaan riippumattomasti suunnitellut protokollat voivat toimia virheellisesti tai uhkiin altistavasti yhdessä. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 34 / 123
Jos esimerkiksi protokolla käyttää salauksen purkua todennukseen, niin vastustaja voi käyttää samaa protokollaa salasanoman purkamiseen, jos kummankin yhteydessä on käytetty samaa avainta. Kelsey et al. antaa useita esimerkkejä virhemahdollisuuksista. On myös mahdollista, että vastapuoli suunnittelee uuden protokollan tarkoituksenaan hyökätä vanhaa protokollaa vastaan (chosen protocol attack). Tällaisia tilanteita vastaan suojaudutaan käyttämällä avaimia vain yhdessä protokollassa ja sisällyttämällä yksityiskohtia protokollasta (yksikäsitteinen tunnus, version numero) sanomien todennusosaan. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 35 / 123
Kryptograsten protokollien suunnitteluperiaatteita Seuraava luettelo on syntynyt käytännön kokemusten kautta. Seuraamalla listan suosituksia vältytään ehkä vanhojen virheiden toistolta, mutta tämä ei vielä takaa, että saavutetaan hyvä protokolla. On myös esimerkkejä protokollista, jotka ovat jättäneet jonkin kohdan pois, mutta joita silti pidetään luotettavina. 1. Jokaisen sanoman tulisi sanoa, mitä se tarkoittaa: sanoman tulkinnan pitäisi riippua vain sen sisällöstä. 2. Pitäisi sanoa suoraan, millä ehdoilla sanomaan reagoidaan. Tämä helpottaa analysoijan työtä. 3. Jos osapuolen identiteetti on oleellista sanoman tulkitsemiseksi, on järkevää sanoa osapuolen nimi suoraan sanomassa. 4. Tee selväksi, miksi salausta käytetään. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 36 / 123
5. Jos osapuoli allekirjoittaa sanoman, joka on jo salattu, niin tästä ei voida vetää johtopäätöstä, että allekirjoittaja tietää sanoman sisällön. 6. Tee selväksi, mitä ominaisuuksia odotat nonsseilta. 7. Jotta ennustettava ominaisuus olisi tehokas, sitä täytyy suojella niin, ettei tunkeutuja voi simuloida haastetta ja toistaa vastausta myöhemmin. 8. Jos aikaleimoja käytetään takaamaan tuoreutta, niin lokaalien kellojen erotuksen eri koneissa täytyy olla paljon vähemmän kuin sanoman sallittu elinaika. 9. Avainta on voitu käyttää äskettäin esimerkiksi salaamaan nonssia, mutta se saattaa silti olla vanha ja mahdollisesti vuotanut ulkopuolisille. 10. Tulisi olla mahdollista päätellä, mihinkä protokollaan ja mihinkä tuon protokollan ajoon sanoma liittyy ja mikä on sanoman numero tuossa protokollassa. 11. Luottamussuhteet, joihin protokolla nojaa, tulisi mainita eksplisiittisesti. Tulisi olla hyvät perusteet näille suhteille. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 37 / 123
Todennusprotokollia symmetrisen salauksen avulla Seuraavissa kappaleissa käytetään seuraavia merkintöjä: A ja B: kaksi osapuolta, jotka haluavat jakaa yhteisen istuntoavaimen. S luotettu palvelin {M} K avaimella K salattu sanoma M. Tavoitteena on toteuttaa luottamuksellisuus ja eheys. [[M]] K avaimella K salattu sanoma M. Tavoitteena vain luottamuksellisuus. [M] K Avaimella K tuotettu sanoman M eheystarkiste. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 38 / 123
Birdin, Gopalin, Herzbergin, Jansonin, Kuttenin, Molvan ja Yungin protokolla Ensimmäisenä esitellään Birdin, Gopalin, Herzbergin, Jansonin, Kuttenin, Molvan ja Yungin protokolla, jota tekijätkään eivät pitäneet turvallisena, vaan ainoastaan lähtökohtana. Protokollassa u ja v ovat kaksi funktiota, joiden laskemisessa tarvitaan K AB :tä, eikä lopputulos paljasta K AB :tä. 1. A B: N A 2. B A: N B, u(k AB, N A, ) 3. A B: v(k AB, N B, ) Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 39 / 123
Oletetaan aluksi, että u ja v ovat samoja. Tällä oletuksella protokolla ei toteuta vaadittua todennusta, kuten seuraava hyökkäysskenaario osoittaa: 1. I A B: N I 2. B I A : N B, u(k AB, N I, ) 1'. I B A: N B 2'. A I B : N A, u(k AB, N B, ) 3. I A B: u(k AB, N B, ) Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 40 / 123
Hyökkäys rikkoo selvästi tavoitteita, sillä B hyväksyy I:n A:ksi. Tekijät päättelevät, että funktioiden u ja v tulee olla erillisiä niin, ettei vastustaja voi käyttää A:n vastausta toisessa istunnossa. Vaikkakin tällaisella u:n ja v:n valinnalla päästään oikeaan lopputulokseen, se ei silti ole välttämätöntä. Jos oletuksena olevat osapuolet sisällytetään u:n ja v:n laskemiseen, todennus saavutetaan, vaikka funktiot olisivatkin samoja. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 41 / 123
Bellaren ja Rogawayn MAP1protokolla Bellaren ja Rogawayn MAP1-protokolla (mutual authentication) oli uraauurtava. He antoivat formaalin määritelmän, milloin osapuolten sanomanvaihto on protokollan mukaista ja osoittivat, että MAP1 on todistettavasti turvallinen. Protokolla on seuraava: 1. A B: N A 2. B A: N B, [B,A,N A, N B ] KAB 3. A B: [A, N B ] KAB Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 42 / 123
Bellawaren ja Rogawayn turvallisuusmallissa vastapuoli voi vain vaikuttaa saman protokollan istuntoihin. Tällaisessa tapauksessa protokolla on turvallinen. Jos kuitenkin oletetaan, että toiminnassa on useita protokollia, tilanne muuttuu. Tarkastellaan seuraavaa, lähes identtistä protokollaa (EVE1): 1. A B: N A 2. B A: N B, [A,B,N A, N B ] KAB 3. A B: [A, N B ] KAB Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 43 / 123
Hyökkäyksessä I tekeytyy B:ksi ja suorittaa A:n aloittamaa MAP1-protokollaa. Rinnakkaisesti I aloittaa A:n kanssa EVE1-protokollan tekeytyen B:ksi. 1. A I B : N A 1'. I B A: N A 2'. A I B : N, [B,A,N A A, N ] A K AB 2. I B A: N, [B,A,N A A, N ] A K AB 3. A I B : [A, N ] A K AB Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 44 / 123
Onko siis hyökkäys oikea, sillä protokollahan oli osoitettu turvalliseksi? Hyökkäys ei ole sallittu alkuperäisessä turvallisuusmallissa. Toisaalta se on muuten kelvollinen. Tämä osoittaa, etteivät turvallisuustodistukset aina takaa oikeellisuutta kaikissa tilanteissa, jos turvallisuusmalli ei ole riittävän kattava. Turvallisuustodistusten ongelmiin kiinnittää huomiota myös tuore artikkeli Kim-Kwang Raymond Choo, Colin Boyd, and Yvonne Hitchcock: Errors in Computational Complexity Proofs for Protocols, ASIACRYPT 2005, LNCS 3788, pp. 624-643. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 45 / 123
ISO/IEC 9798 -standardit Kansainvälinen standardi ISO/IEC 9798, osa 2, määrittelee kuusi protokollaa käyttäen symmetristä salausta. Neljä näistä protokollista toteuttaa pelkästään todennuksen. Tässä esitellään kolmas todennusprotokolla, joka toteuttaa keskinäisen todennuksen aikaleimojen avulla. Tälle protokollalle ei ole esitelty hyökkäystä (2003): 1. A B: {T A, B} KAB 2. B A: {T B, A} KAB Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 46 / 123
Avaimista sopiminen ilman kolmatta osapuolta Tässä kohdassa kuvatuista protokollista oletetaan, että ne jakavat keskenään pitkäkestoisen avaimen, jonka avulla niiden tulisi sopia uudesta istuntoavaimesta. Käytetään seuraavia merkintöjä: K AB K AB on pitkäkestoinen avain, jonka A ja B jakavat; on uusi istuntoavain. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 47 / 123
Andrewin RCP-protokolla Kuvataan aluksi Andrewin turvallinen RCP-protokolla. Se on jo yli 10 vuotta vanha, mutta sitä käytetään jatkuvasti kirjallisuudessa esimerkkinä. Protokollalla on kaksi riippumatonta komponenttia. Ensimäisessä kolmessa sanomassa A ja B kättelevät käyttäen jakamaansa avainta. Kättelyllä varmistetaan identiteetit ja yhteyden tuoreus. Viimeisessä sanomassa B lähettää uuden istuntoavaimen A:lle. Käytössä on myös nonssit kumallakin puolella: Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 48 / 123
1. A B: {N A } KAB 2. B A: {N A + 1, N B } KAB 3. A B: {N B + 1} KAB 4. B A: {K, AB N } B K AB Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 50 / 123
Burrows et al. on osoittanut, että protokollalla on kuitenkin heikkous. Ei nimittäin ole takeita siitä, että K on tuore. AB Vastustaja kykenee ujuttamaan sanomanvaihtoon vanhan sanoman 4 A:n huomaamatta mitään. Täten A hyväksyy vanhan istuntoavaimen, joka on jo kenties murrettu. Clark ja Jacob osoittivat toisen ongelman, joka perustuu tyypityshyökkäykseen: Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 51 / 123
1. A B: {N A } KAB 2. B A: {N A + 1, N B } KAB 3. A B: {N B + 1} KAB 4. I B A: {N A + 1, N B } KAB Hyökkäyksen tuloksena A hyväksyy arvon N a + 1 istuntoavaimeksi. Hyökkäyksen aiheuttama vahinko riippuu siitä, mitä ominaisuuksia nonssilla N A on. Jos nonssi on ennustettavissa, kuten esimerkiksi laskurin arvo, niin hyökkääjä saa purettua sanoman melko helposti. Jos sen sijaan N A on satunnainen, mahdollinen vahinko ei ole heti ilmeinen. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 53 / 123
Burrowsin modikaatio Burrows et al. on ehdottanut Andrewin protokollan modikaatiota, jossa muutetaan nonssien käsittelyä. Nonssin N A ei tarvitse olla salainen; jos A lähettää sen selväkielisenä, se muodostaa normaalin haaste-vaste -mekanismin. Nonssin N B voi unohtaa kokonaan: 1. A B: A, N A 2. B A: {N A, K } AB K AB 3. A B: {N A } K 4. B A: N B AB Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 54 / 123
Lowe on kuitenkin esittänyt hyökkäyksen modioitua protokollaa vastaan. Tällaisia hyökkäyksiä löydettiin 1990-luvulla automatisoitujen, formaalien menetelmien avulla. Vastustaja I (intruder) aloittaa kaksi protokollan suoritusta A:n kanssa tekeytyen B:ksi. Toisessa suorituksessa I aloittaa, toisessa I huijaa A:n aloittamaan. 1. A I B : A, N A 1'. I B A: B, N A 2'. A I B : {N A, K } AB K AB 2. I B A: {N A, K } AB K AB 3. A I B : {N A } K 3'. I B A: AB {N A } K 4. I B A: N I AB 4'. A I B : N A Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 55 / 123
Boydin protokolla Seuraavaksi esitetään hämmästyttävän yksinkertainen Boydin kahden askeleen protokolla, jolla kaksi osapuolta saadaan sopimaan yhteisestä avaimesta. Protokollassa oletetaan, että kummallakin osapuolella on yksisuuntainen funktio f. Protokolla on seuraava: 1. A B: N A 2. B A: N B Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 56 / 123
Uusi avain on nyt K AB = f (N A, N B, K AB ). Funktion f täytyy siis olla sellainen, ettei sen arvoa pysty laskemaan, ellei tiedä avainta K AB. Sen täytyy olla myös yksisuuntainen kahden ensimmäisen argumentin osalta, jotta uuden avaimen tuoreus voitaisiin taata. Tyypillinen valinta f :ksi voisi olla MAC-funktio. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 57 / 123
ISO:n protokollat ISO on julkaissut kuusi protokollaa avaimesta sopimiseen ilman kolmatta osapuolta. Seuraava protokolla ISO/IEC 11770-2 on oikeastaan yhtä yksinkertainen kuin Boydin protokolla, koska siinä ei käytetä yksisuuntaista funktiota f : 1. B A: N B 2. A B: {N B, B, K } AB K AB Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 58 / 123
Avaimesta sopiminen luotettavan kolmannen osapuolen avulla Tämän kaltaisia protokollia on esitetty useita. Tässä esityksessä käytetään seuraavia lisämerkintöjä: A ja B ovat osapuolia kuten aikaisemminkin ja ne haluavat sopia yhteisestä avaimesta. S on palvelin, luotettava kolmas osapuoli. K AS ja K BS ovat pitkäkestoisia avaimia A:n ja S:n sekä B:n ja S:n välillä. K AB tulee olemaan istuntoavain A:n ja B:n välillä. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 59 / 123
Needhamin ja Schroederin protokolla Aloitetaan tämän kappaleen protokollien kuvailu kuuluisasta Needhamin ja Schroederin protokollasta: 1. A S: A, B, N A } 2 S A: {N A, B, K AB, {K AB, A} KBS 3. A B: {K AB, A} KBS 4. B A: {N B } KAB 5. A B: {N B 1} KAB K AS Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 60 / 123
Needhamin ja Schroederin protokolla olettaa, että kaikki salausavaimet ovat varmoja. Käytännössä istuntoavaimet generoidaan pseudosatunnaislukugeneraattoreilla. Ne saattavat olla paljastettavissa, jos generaattori on ollut huono. Denning ja Sacco olettavat artikkelissaan Timestamps in Key Distribution Protocols,Communication of the CACM 24 (8), pp. 533-536, Aug. 1981, että vihollinen V pääsee purkamaan istuntoavaimella salatut sanomat. Tällöin V pääsee suorittamaan hyökkäyksen keskeltä. Oletetaan, että protokolla on jo suoritettu ja V jatkaa sen päätyttyä lähettämällä vanhan paketin uudelleen: Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 61 / 123
3. V A B: {K AB, A} KBS 4. B V A : {N B } KAB 5. V A B: {N B 1} KAB Nyt B luulee, että hän on yhteydessä A:n kanssa, vaikka onkin yhteydessä V:n kanssa. B voi kuitenkin havaita tällaisen hyökkäyksen, jos käytetään aikaleimoja kuten Denning ja Sacco ehdottavat. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 63 / 123
1. A S: A, B 2. S A: {B, K AB, T S, {A, K AB, T S } KBS } KAS 3. A B: {A, K AB, T S } KBS Tässä T on aikaleima. Kun B saa askeleen 3 sanoman, hän hylkää sen, mikäli aikaleima on liian vanha (riippuu systeemistä). Tämä muutos edellyttää kuitenkin kellojen synkronointia, mikä ei ole yksinkertaista hajautetuissa järjestelmissä. On olemassa lukuisia muita avaintenvaihtoprotokollia, joissa ei käytetä aikaleimoja. Ehkä tunnetuin näistä on Otwayn ja Reesin protokolla, johon on tosin löydetty hyökkäys. Emme kuitenkaan perehdy näihin protokolliin ajanpuutteen vuoksi. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 65 / 123
Kerberos Kerberos-ohjelmisto kehitettiin MIT:ssa Athena-projektissa suojelemaan verkkopalveluita. Se on yksi de facto -standardeista todennukseen tietokoneverkoissa. Se sisältyy esimerkiksi Windows 2000 -käyttöjärjestelmään. Kerberos käyttää keskeisenä osana Needhamin ja Schroederin avaintenvaihtoprotokollaa kuitenkin niin, että aikaleimoja käytetään nonssien asemesta. Hyvä yleiskatsaus Kerberoksen nykyversiosta 5 on Neumannin ja Ts'o:n artikkeli. Versio 5 on kehitetty versiosta 4, joka sisälsi monia puutteita. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 66 / 123
Kerberos Yksi version 4 puute oli, ettei se taannut salasanomien eheyttä, vaikka tämä oli eräs alkuperäisistä suunnittelutavoitteista. Versio 4 käyttää DES:iä lohkosalausmoodissa PCBC (plaintext cipher-block chaining), jolla on sellainen ominaisuus, että salalohkon virhe leviää kaikkiin myöhempiin selväteksteihin. Lisäksi PCBC on altis lohkonvaihtohyökkäykselle, joka saa aikaan, että sotkettu sanoma hyväksytään aitona. Versio 5 käyttää standardia CBC-ketjutusta ja upottaa tarkistussumman sanomaan ennen salausta eheystarkistusta varten. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 67 / 123
Kerberos Perus-Kerberoksessa on kolme osapuolta: asiakas (A), joka haluaa käyttää jotain palvelua, sovelluspalvelin (B), joka tuottaa palvelun, ja todennuspalvelin (S), johon asiakas ottaa yhteyden ennenkuin pyytää palvelua sovelluspalvelimelta. Asiakas ja sovelluspalvelin eivät jaa etukäteen salaista avainta, mutta kumpikin jakaa salaisen avaimen S:n kanssa. Kerberoksen todellinen toiminta on aika monimutkaista todennuksen ja palvelun pyynnön yhteydessä. Seuraavassa on esitetty protokolla vain niiltä osin, jotka ovat oleellisia turvallisuudelle: Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 68 / 123
Kerberos 1. A S: A, B, N A 2. S A: {K AB, B, L, N A, } KAS, {K AB, A, L, } KBS 3. A B: {A, T A } KAB, {K AB, A, L, } KBS Kentät, jotka on salattu avaimella K BS muodostavat lipun. Avaimella salattuja kenttiä kutsutaan todentajaksi. K AB Lippu sisältää istuntoavaimen K AB, asiakkaan identiteetin ja voimassaoloajan L, jonka jälkeen istuntoavain ei enää ole voimassa. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 70 / 123
Suunnitteluperiaatteita julkisen avaimen salausta käyttäville protokollille I Andersson ja Needham ovat kuvanneet pääpiirteitä, joiden varaan julkisen avaimen protokollat tulisi rakentaa: 1. Allekirjoita ennen salausta. Jos allekirjoitus liitetään sanomaan salauksen jälkeen, niin vastaanottaja ei voi olettaa, että allekirjoittaja tuntee salatun tiedon. 2. Ole huolellinen siinä, miten oliot erotellaan toisistaan. Jos mahdollista vältä käyttämästä samaa avainta kahteen eri tarkoitukseen (esim. salaukseen ja allekirjoitukseen). Huolehdi siitä, että saman protokollan eri ajot ovat selkeästi erotettavissa toisistaan. 3. Ole varovainen kun allekirjoitat tai purat sanomaa, ettei vastustaja käytä sinua oraakkelinaan. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 71 / 123
Suunnitteluperiaatteita julkisen avaimen salausta käyttäville protokollille II 4. Pidä kirjaa kaikista biteistä kuinka montaa tarvitaan saamaan aikaan monimielisyyttä (equivocation), redundanssia, laskennallista vaativuutta jne. 5. Älä tee oletuksia toisten salaisuuksien turvallisuudesta lukuunottamatta ehkä luotettavaa kolmatta osapuolta (varmenneviranomainen). 6. Älä oleta, että saamallasi sanomalla on erityinen muoto, vaan testaa asia. 7. Ilmaise selvästi kryptograsten primitiivien turvaparametrit ja niiden ominaisuudet. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 72 / 123
Suunnitteluperiaatteita julkisen avaimen salausta käyttäville protokollille III Syverson on kyseenalaistanut joidenkin yllä mainittujen periaatteiden soveltuvuutta antamalla esimerkkejä, joissa ne eivät ole asianmukaisia. Siten sääntöjä ei pidä soveltaa sokeasti, vaan säännöt toimivat muistilistana, jota täytyy osata käyttää luovasti. Tulemme näkemään toimivia protokollia, joissa erityisesti ei ole noudatettu kohtaa 1. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 73 / 123
ISO/IEC 11770-3 -protokollat ISO:n standardi 11770-3, osa 3, määrittelee kuusi avaintenvaihtoprotokollaa yleisellä tasolla. Käsittelemme tässä kolme versiota. Ensimmäinen, avaintenvaihtomekanismi 1, on hyvin yksinkertainen ja näyttää julkisen avaimen salauksen hyvät puolet: 1. A B: E B (A, K AB, T A ) missä E B on salaus B:n julkisella salausavaimella. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 74 / 123
B avaa sanoman ja saa haltuunsa salaisen istuntoavaimen K AB. Sanomassa on lisäksi A:n identitetti ja aikaleima. Protokollassa täytyy olettaa, että käytettävä julkinen salausmenetelmä on taipumaton (non-malleable) eli että vastustaja ei voi vaihtaa sanoman osien järjestystä ilman tietoa selvätekstistä. Jos protokolla ei olisi taipumaton, vastustaja voisi vaihtaa parametrit A ja T A, mikä aiheuttaisi sekaannusta. Standardissa ei ole kuitenkaan mainittu tällaista vaatimusta salaukselle. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 75 / 123
A:n kannalta protokolla toimii hyvin, sillä A voi valita tuoreen avaimen ja salaus takaa, että se tulee vain B:n tietoon A:n lisäksi. Toisaalta A ei saa mitään tietoa, onko B todella saanut avaimen tai onko B edes yhteistyöhaluinen. Koska sanomassa ei ole mitään todennusta, B ei voi varmuudella tietää, että sanoma tuli A:lta. Jos B voi luottaa siihen, että T A on tuore, on sanomakin tuore, mutta todennuksen puuttuessa avaimen K AB tuoreudesta ei voi päätellä mitään. Itse asiassa aikalema ei olekaan pakollinen standardissa. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 76 / 123
Mekanismissa 2 lisätään todennus sanomaan: 1. A B: B, T A, E B (A, K AB ), Sig A (B, T A, E B (A, K AB )) Tämä mekanismi rikkoo Andersonin ja Needhamin sääntöä 1 vastaan. Vastustaja voisikin yrittää irrottaa allekirjoituksen sanomasta ja korvata sen omalla allekirjoituksellaan. Tämä kuitenkin paljastuisi B:lle, sillä salattu sanoma sisältää A:n identiteetin. Siten hyökkäys ei johda tulokseen. Olisi kuitenkin varmempaa siirtää allekirjoitus salauksen sisään. Näin tekeekin mekanismi 3. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 77 / 123
Katsotaan vielä mekanismia 6. Siinä sovitaan kahdesta istuntoavaimesta K AB ja K BA. Näistä avaimista on mahdollista generoida vielä yksi yhteinen avain käyttäen tiivistefunktiota, jolloin protokolla on enemmänkin avaintengenerointiprotokolla kuin avaintenvaihtoprotokolla. 1. A B: E B (A, K AB, N A ) 2. B A: E A (B, K BA, N A, N B ) 3. A B: N B Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 78 / 123
Protokollalle ei tunnneta hyökkäyksiä. Sen aikaisempi versio standardiluonnoksessa oli seuraava protokolla, joka tunnetaan nimellä Helsinki-protokolla: 1. A B: E B (A, K AB, N A ) 2. B A: E A (K BA, N A, N B ) 3. A B: N B Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 79 / 123
Tälle kuitenkin löytyi hyökkäys, jonka löysivät Horng ja Hsu. Hyökkäyksessä vastustaja C houkuttelee A:n aloittamaan istunnon kanssaan. Samaan aikaa C aloittaa istunnon B:n kanssa tekeytyen A:ksi: 1. A C : E C (A, K AB, N A ) 1'. C A B: E B (A, K, N AB A) 2'. B C A : E A (K BA, N A, N B ) 2. C A: E A (K BA, N A, N B ) 3. A C : N B 3'. C A B: N B Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 80 / 123
Sekä A että B ovat suorittaneet omasta mielestään protokollan täysin sääntöjen mukaan. Jos kuitenkin istuntoavain saadaan kaavasta f (K AB, K BA ) jollakin yksisuuntaisella funktiolla f, niin A uskoo jakavansa avaimen C:n kanssa, kun taas B uskoo jakavansa avaimen f (K AB, K BA) A:n kanssa. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 81 / 123
Julkisen avaimen infrastruktuurit On tärkeää kyetä sitomaan julkinen avain ja sen todellinen haltija luotettavasti toisiinsa. Kohnfelder on 1978 ensimmäisenä ehdottanut varmenteita, joissa on julkinen avain, sen haltija, aikaleima ja luotetun varmenteista huolehtivan organisaation allekirjoitus. Seuraavassa kyseistä luotettua organisaatiota kutsutaan varmenneviranomaiseksi, vaikka se saattaa hyvinkin olla yksityinen organisaatio. Varmenneviranomaisesta käytetään merkintää CA. Varmenne olisi seuraavaa muotoa C A = KS CA (KP A A T ). Tässäkin on pieni ongelma: B:n täytyy tuntea CA:n julkinen avain voidakseen todentaa varmenteen. Tähän on tarjottu kahta ratkaisua. Merklen menetelmässä luovutaan CA:n allekirjoituksesta. Toisessa vaihtoehdossa varmenteet ja allekirjoitukset ketjutetaan. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 82 / 123
Merklen puuskeema todennukseen Merklen havainto oli, että varmenteet pidetään normaalina tietona tiedostossa. Jos varmennetta muutetaan, myös tiedosto muuttuu. Näin varmenteiden oikeellisuus palautuu tiedostojen eheysongelmaan. Tiivistefunktiota voidaan käyttää luomaan tarkistussummia, jotka paljastavat tiedostojen muutosyritykset. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 83 / 123
Merklen puuskeema todennukseen Olkoon Y i, i = 1,, n, varmenteita, jotka on talletettu tiedostoon. Olkoon f : {0, 1} {0, 1} {0, 1} kahden argumentin funktio, joka laskee yhteisen tiivisteen argumenteistaan. Määritellään funktio h : N N {0, 1} seuraavasti: { i+j i+j f (h(i, ), h( + 1, j)) jos i < j h(i, j) = 2 2 f (Y i, Y j ) muuten Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 84 / 123
Merklen puuskeema todennukseen Käytetään nyt arvoa h(1, n) koko tiedoston tiivistearvona. Oletetaan, että se on tunnettu kaikille tiedoston käyttäjille. Jos nyt käyttäjä hakee tiedostosta varmenteen, esimerkiksi Y 3, hän joutuu laskemaan tiedoston tiivistearvon uudestaan käyttäen hyväkseen hakemaansa varmennetta ja aikaisemmin laskettuja muita tiivistearvoja. Esimerkiksi arvoa n = 4 vastaa seuraavan kuvan laskentapuu. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 85 / 123
Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 87 / 123
Oletetaan, että tiivistearvot on valmiiksi laskettu. Varmenteen Y 3 hakija joutuu laskemaan uudestaan arvot h(3, 3), h(3, 4) ja h(1, 4) eli arvot polulla kyseisestä varmenteesta juureen, joka edustaa koko tiedoston tiivistettä. Merklen menetelmä edellyttää ainoastaan, että juuriarvo on tiedossa. Jos mitä tahansa varmennetta on muutettu, tämä huomataan varmennetta todennettaessa. Menetelmä on kuitenkin hankala perustuessaan yhteen tiedostoon. Suurissa verkoissa tarvitaan hajautettua ratkaisua kuten esimerkiksi X509:ää. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 88 / 123
X.509 X.509 on yksi osa X.500-suositussarjassa, joka määrittelee hakemistopalvelun. X.509 määrittelee hakemiston todennuspalvelut. X.509 on tärkeä standardi, koska X.509:n julkisiin avaimiin liittyvät varmenteet ja todennusprotokollat ovat käytössä ainakin ohjelmistoissa S/MIME, IP:n turvapalvelu, SSL/TLS ja SET. X.509 julkaistiin 1988. Myöhemmin standardia muokattiin vastaamaan paremmin turvallisuusvaatimuksia. Uudistettu versio julkistettiin 1993 ja kolmas versio 1995. X.509 perustuu julkisen avaimen salaukseen ja digitaalisiin allekirjoituksiin. Standardi suosittelee RSA:ta, muttei vaadi sitä. Digitaalinen allekirjoitus perustuu tiivistefunktion käyttöön. Sitäkään ei ole kiinnitetty. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 89 / 123
Varmenteet X.509:n perustana on julkisen avaimen varmenne, joka liittyy jokaiseen käyttäjään. Oletuksena on, että varmenteet on luonut jokin luotettava osapuoli (CA, Certication Authority, varmenneviranomainen). Joko CA tai käyttäjä on pannut varmenteet hakemistoon. Hakemistopalvelin itse ei ole vastuussa julkisten avainten luonnista eikä varmenneperiaatteesta. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 90 / 123
Varmenne sisältää seuraavat osat: Versio: Oletusarvo on 1. Jos Initiator Unique Identier tai Subject Unique Identier ovat läsnä, version pitää olla 2. Jos yksi tai useampi laajennus on läsnä, versio on 3. Sarjanumero: Kokonaisluku, yksikäsitteinen CA:n alueella. Allekirjoitusalgoritmin tunnus: Tämä tieto toistetaan Signature-kentässä varmenteen lopussa, joten sillä ei ole merkitystä tässä kohdassa. Julkaisijan nimi: Sen CA:n X.500-nimi, joka loi ja allekirjoitti tämän varmenteen. Voimassaoloaika: Alku- ja loppuajankohta. Subjektin nimi: Käyttäjän nimi, johon tämä varmenne viittaa. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 91 / 123
Subjektin julkisen avaimen informaatio: Subjektin julkinen avain, algoritmin tunnus ja parametrit. Julkaisijan yksikäsitteinen tunnus: Valinnainen bittijono, joka määrittelee yksikäsitteisesti CA:n siinä tapauksessa, että samaa X.500-nimeä on käytetty eri olioille. Subjektin yksikäsitteinen tunnus: Kuten edellä. Laajennukset: Yksi tai useampi laajennuskenttä. Laajennukset lisättiin versioon 3. Ne selitetään myöhemmin. Allekirjoitus: Kattaa varmenteen kaikki muut kentät. Sisältää toisten kenttien tiivistekoodin salattuna CA:n yksityisellä avaimella. Kenttä sisältää allekirjoitusalgoritmin tunnuksen. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 92 / 123
Standardi käyttää seuraavaa merkintää varmenteen määrittämiseksi: CA << A >>= CA{V, SN, AI, CA, T A, A, A P }, missä Y << X >> on käyttäjän X varmenne, jonka on julkaissut varmenneviranomainen Y, ja Y {I } on Y :n muodostama I :n allekirjoitus. Se koostuu I :stä, johon on lisätty salakirjoitettu tiivistekoodi. CA allekirjoittaa varmenteen salaisella avaimellaan. Jos vastaava julkinen avain on käyttäjälle tuttu, niin käyttäjä voi varmistua, että varmenne on todella CA:n vahvistama. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 93 / 123
Käyttäjän varmenteen hankkiminen Kuka tahansa käyttäjä, joka voi käyttää CA:n julkista avainta, voi ottaa toisen käyttäjän varmennetun julkisen avaimen itselleen. Ainoastaan varmenneviranomainen voi muokata varmennetta ilman, että tämä paljastuisi. Koska varmenteet ovat väärentämättömiä, ne voidaan asettaa hakemistoon ilman sen kummempia suojauksia. Jos kaikki käyttäjät käyttävät samaa CA:ta, kaikki varmenteet voidaan asettaa hakemistoon kaikkien käyttäjien saataville. Lisäksi käyttäjä voi lähettää varmenteensa suoraan muille käyttäjille. Kummassakin tapauksessa B:n omistaessa A:n varmenteen B voi luottaa siihen, että salaus A:n julkisella avaimella on turvallista ja A:n allekirjoitukset väärentämättömiä. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 94 / 123
Käyttäjän varmenteen hankkiminen Jos käyttäjiä on paljon, yhteen CA:han turvautuminen ei ole käytännöllistä. Koska CA allekirjoittaa varmenteet, jokaisella käyttäjällä täytyy olla kopio CA:n julkisesta avaimesta. Tämä julkinen avain täytyy toimittaa jokaiselle käyttäjälle absoluuttisen turvallisesti. Siten jos käyttäjiä on monia, on edullisempaa, jos varmenneviranomaisia on useampia, joista jokainen toimittaa oman julkisen avaimensa osalle käyttäjiä. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 95 / 123
Käyttäjän varmenteen hankkiminen Oletetaan, että A on saanut varmenteen CA 1 :ltä ja B CA 2 :lta. Jos A ei varmasti tunne CA 2 :n julkista avainta, niin CA 2 :n julkaisema B:n varmenne on hyödytön A:lle. A voi lukea B:n varmenteen, muttei voi verioida allekirjoitusta. Jos kuitenkin CA 1 ja CA 2 ovat turvallisesti vaihtaneet omia julkisia avaimia, niin A voi saada B:n julkisen avaimen seuraavasti: Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 96 / 123
Käyttäjän varmenteen hankkiminen 1 A hankkii hakemistosta CA 1 :n allekirjoittaman CA 2 :n varmenteen. Koska A turvallisesti tuntee CA 1 :n, A saa CA 2 :n julkisen avaimen kyseisestä varmenteesta, joka on CA 1 :n vahvistama. 2 A palaa hakemistoon ja hankkii CA 2 :n allekirjoittaman B:n varmenteen. Koska A tuntee nyt varmasti CA 2 :n julkisen avaimen, A voi verioida allekirjoituksen ja turvallisesti hankkia B:n julkisen avaimen. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 97 / 123
Käyttäjän varmenteen hankkiminen Edellä kuvatussa menetelmässä A on käyttänyt varmenteiden ketjua hankkiessaan B:n julkisen avaimen. X.509:n merkinnöin tämä ketju ilmaistaan kaavalla CA 1 << CA 2 >> CA 2 << B >>. Samalla tavalla B voi hankkia A:n julkisen avaimen käänteisellä ketjulla CA 2 << CA 1 >> CA 1 << A >>. Menetelmä ei rajoitu kahteen varmenteeseen. Ketju voi olla mielivaltaisen pitkä CA 1 << CA 2 >> CA 2 << CA 3 >> CA n << B >>. Jokaisen parin (CA i, CA i+1) yllä olevassa ketjussa tulee luoda varmenteet toisilleen. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 98 / 123
Kaikkien näiden varmenteiden tulee olla hakemistossa ja käyttäjän pitää tietää, kuinka ne on linkitetty seuratakseen polkua toisen käyttäjän julkisen avaimen varmenteeseen. X.509 ehdottaa, että CA:t järjestetään hierarkkisesti siten, että navigointi on suoraviivaista. Seuraavassa kuvassa on esimerkki hierarkiasta. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 99 / 123
Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 101 / 123
Kuvassa U, V, W jne ovat varmenneviranomaisia. Laatikot osoittavat varmenteita, joita kyseinen CA ylläpitää hakemistossaan. CA:n hakemistoalkio sisältää kahden tyyppisiä varmenteita: Etuvarmenteet (forward): Muiden varmenneviranomaisten generoimat X :n varmenteet. Käänteisvarmenteet (reverse): X :n generoimat varmenteet, jotka ovat muiden varmenneviranomaisten varmenteita. Esimerkissä A voi hankkia seuraavat varmenteet hakemistosta saadakseen B:n varmenteen: X << W >> W << V >> V << Y >> Y << Z >> Z << B >>. Kun A on saanut nämä varmenteet, se voi purkaa ja todentaa B:n varmenteen. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 102 / 123
Varmenteiden peruuttaminen Varmenteella on päättymisajankohta. Uusi varmenne julkistetaan juuri ennen kuin edellinen vanhenee. Seuraavissa tilanteissa varmenne on aiheellista peruuttaa jo ennen sen vanhenemista. 1 Käyttäjän salainen avain on luultavasti joutunut väärii käsiin. 2 CA ei enää varmenna kyseistä käyttäjää. 3 CA:n varmenne ei ole enää luotettava. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 103 / 123
Jokainen CA ylläpitää listaa kaikista peruutetuista varmenteista, jotka eivät vielä ole vanhentuneita. Nämä varmenteet käsittävät sekä CA:n käyttäjille myönnetyt että toisille varmenneviranomaisille vahvistetut varmenteet. Jokainen peruutettujen varmenteiden lista (CRL, certication revocation list) sijoitetaan hakemistoon. Sen allekirjoittaa julkaisija ja se sisältää julkaisijan nimen, listan luontipäivämäärän, seuraavan CRL:n ilmestymisajankohdan ja alkion jokaista peruutettua varmennetta kohti. Alkio sisältää sarjanumeron ja peruutuspäivämäärän. Kun käyttäjä saa varmenteen sanomassa, käyttäjän täytyy ratkaista, onko varmenne peruutettu vai ei. Käyttäjä voi tarkistaa asian hakemistosta joka kerran. Viiveitä välttääkseen käyttäjä voi myös ylläpitää paikallista käteismuistia varmenteita, listoja ja peruutettuja varmenteita varten. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 104 / 123
Todennusmenetelmät X.509 sisältää kolme vaihtoehtoista todennusmenetelmää, joita voidaan käyttää eri sovelluksissa. Kaikki perustuvat julkisen avaimen salakirjoitukseen. Lisäksi oletetaan, että kaksi sanomia vaihtavaa osapuolta tuntevat toistensa julkiset avaimet. Kysymyksessä on siis avaintenvaihtoprotokollat, joita tarkasteltiin jo aikaisemmin. Tässä esitetään vielä kuitenkin X.509:n versiot. Timo Karvi () TIETOTURVA, OSA III: AVAINTENHALLINTA 30.8.2006 105 / 123