TTKK / Tietoliikenne / J.Koskinen : Tietoturvallisuuden perusteet

4. viikko, ma 20.9.1999

Julkisen avaimen varmennestruktuuri, X.509

Avainten hallinasta yleisesti

Kertauksena: Avaintenhallinta (key management) on toimintaa, jonka tarkoituksena on mahdollistaa avaimia edellyttävä kommunikaatiosuhde sellaiseen oikeutettujen osapuolten välillä. Avaimilla tarkoitetaan paitsi julkisia ja symmetrisiä avaimia, myös alustusarvoja ja muita kryptoalgoritmien parametreja.

Täydennyksenä: Avaintenhallintaan liittyviä toimia ovat

Nämä ovat samalla myös yhden avaimen elinkaaressa mahdollisesti esiintyviä vaiheita. Avaimen käyttöön liittyy yleensä voimassaoloaika ('cryptoperiod'), jonka jälkeen tapahtuu päivitys ja mahdollisesti hävittäminen. Kaiken lisäksi avain voidaan tietysti hukata tai se voi paljastua.

Symmetrisen avaimen "elämä" on yleensä melko yksinkertaista, varsinkin jos se on lyhytikäinen, ns. istuntoavain. Avainta voidaan myös pitää yllä kauan, jolloin sitä yleensä käytetään istuntoavainten salaamiseen. Tätä periaatetta voidaan soveltaa useammallakin kuin kahdella tasolla.

Osa edellä mainituista toimista liittyy lähinnä tai yksinomaan julkisen avaimen hallintaan. Näitä toimia ovat rekisteröinti, julkaiseminen, varmentaminen, peruuttaminen ja poisrekisteröinti.

PKI

Julkisen avaimen infrastruktuurilla (PKI) tarkoitetaan sellaista järjestelmää, joka hallinnoi julkisia avaimia ja niiden varmenteita.

Harjoitus: Kehen luotat, jos ulkomaalaisen esittämän passin perusteella päättelet, mikä hänen nimensä on?

Yleinen varmennestruktuurin idea on seuraava: A vakuuttuu B:n avaimen aitoudesta käyttäen polkua A - X1-X2-...- Xn -B, jossa A luottaa X1:n avaimen aitouteen sekä jokaiseen olioon Xi, ja A:lla on käytettävissään kunkin Xi:n allekirjoittama varmenne Xi+1:n avaimesta ja vielä Xn:n varmenne B:n avaimesta. Tästä polusta käytetään myös nimitystä luottamusketju. Kuten havaitaan A:lla pitää olla tiettyä luottamusta kaikkia olioita Xi kohtaan. Tämä pitää sisällään kaksi asiaa: ensinnäkin A:n pitää (tuntea ja) hyväksyä politiikat, joiden perusteella Xi:t väittävät myöntävänsä varmenteita ja toiseksi A:n pitää luottaa siihen, etteivät ne tingi politiikojensa asettamista vaatimuksista. (Tässä on oikeastaan vastaus eo. harjoituksen kysymykseen.)

Nyt näyttäisi siltä, että ketju voitaisiin kutistaa muotoon A - Xn - B, koska A:lla pitää olla mainitunlaista luottamusta Xn:ään asti. Tämä ei onnistu (ainakaan ensimmäisellä kerralla), koska A:lla ei ole varmuutta Xn:n julkisesta avaimesta, jolla hän voisi todentaa B:n avaimen varmenteen. Ketju tarvitaan varmenteiden katkeamatonta verifiointia varten.

Mallia voidaan sitten toteuttaa niin, että varmentajista muodostuu verkko, kuten PGP:ssä, tai hierarkkisesti, jolloin varmentajista muodostuu puurakenne. Tällaisessa mallissa varmentajilla on julkaistut politiikat ja niitä kutsutaan varmenneviranomaisiksi. Englannin termi certificate authority (CA) kuvaa niiden roolia vielä paremmin. Puurakenteessa saadaan kohtuullisen läheisillä (ja siis luotettavissa olevilla) ja kohtuullisen kokoisilla (lapsisolmujen määrä) varmennepalvelimilla ja kohtuullisella vaivalla (polun pituus) katetuksi laaja käyttäjäjoukko.

Puurakenteesta(kin) esiintyy useita variaatioita. Ääritapauksessa hierarkkia on tiukasti top-down-tyyppinen eli varmenteita myönnetään vain hierarkkian seuraavaksi alemman tason olioille. Tässä tapauksessa em. olion X1 pitää olla juurena sellaisessa alipuussa, joka sisältää sekä A:n että B:n. Jos taas kukin Xi sertifioi myös sen ylemmän tahon, jolta on saanut sertifikaatin, A:n riittää tuntea varmuudella vain oman lähimmän varmenneviranomaisensa julkinen avain; polku nousee puussa A:sta alkaen ylöspäin yhteiseen esi-isään ja laskeutuu siitä kohti B:tä.

Toisenlainen topologia on sellainen, jossa on useita top-down-hierarkkioita ja näiden juurivarmentajat ovat varmentaneet toisiansa ristiin verkkomaisesti.

X.509

Julkisen avaimen infrastruktuureja kehitellään monissa paikoissa ja monenlaisiin tarkoituksiin. Keskeinen tausta näille hankkeille on X.500-hakemistostandardeihin kuuluva standardi X.509, joka määrittelee varmenteen ja varmenteita käyttäviä autentikointiprotokollia. Laajojen infrastruktuurien on toteutettava tehokas hakemistojärjestelmä, josta löytyvät avaimet, niiden varmenteet sekä sulkulistat. X.500-hakemiston ohella tähän tarkoitukseen on käytetty uudempaa Internet-standardia LDAP (Ligth Weigth Directory Access Protocol).

Katsotaan X.509-varmenteen sisältöä hetken päästä suomalaisen HST-hankkeen yhteydessä. Muina X.509-varmenteita käyttävinä sovelluksina tulee esille seuraavassa S/MIME, ja ensi kerralla SET ja SSL.

LUE TIVEKEn sivulla oleva teksti otsikkoon Key Escrow/Recovery asti (noin 5 sivua, suomeksi, jatko tulee esille myöhemmin).

Varmennesysteemeistä ja erityisesti X.509:stä löytyy myös varsin kriittinen esittely.

S/MIME

MIME eli Multimedia Internet Mail Extensions nimensä mukaisesti laajentaa sähköpostia käsittelemään erityyppisiä sisältöjä - dokumentti varustetaan tiedolla datan tyypistä. S/MIME on 'Secure'-laajennus tälle: uusia tyyppejä, jotka kerrostavat salauksia ja allekirjoituksia. Toiminnaltaan se on hyvin samantapainen kuin PGP. S/MIMEn taustalla on RSA Data Security Inc., määrittely kuitenkin IETF:n standardeissa, kuten MIMElläkin.

Mikä erottaa S/MIMEn PGP:stä, on luottamusrakenne eli miten avaimet sertifioidaan. S/MIME käyttää X.509-sertifikaatteja, mutta avaintenhallinnassa on myös PGP-tyyppisiä piirteitä: jokaisen asiakkaan (tai hänen paikallisen edustajansa) on nimittäin itse pidettävä yllä luotettujen avainten listaa sekä sulkulistaa. Avaimet kuitenkin on rekisteröitävä siten, että ne saavat sertifikaatin varmenneviranomaiselta.

Henkilön sähköinen tunnistaminen, HST

Harjoitus: Keskustellaan siitä, miten kansalaisen identiteetti voitaisiin kytkeä toimikorttiin - tai paremminkin, miten kortti saataisiin edustamaan yksilöä siten, että muut tahot voivat luottaa kortin avulla tehtyihin toimiin ikäänkuin ne tuntisivat henkilön ja tämä olisi läsnä operaatiota tehdessään. Tutustutaan tällaisen kortin luomiseen väestörekisterikeskuksen luotsaaman HST-hankkeen mukaisesti. Pitäydytään nyt kuitenkin vain (avain)hallinnollisessa näkökulmassa ja palataan toimikortin turvatekniikkaan laitteistoturvallisuuden yhteydessä.

HST-varmenne sisältää mm. seuraavia tietoja:

Tähdellä merkityt ovat tietorakenteen muodolliselta kannalta laajennuksia, mutta pakollisia. Muita pakollisia laajennuskenttiä ovat yksikäsitteiset tunnisteet sekä haltijan että varmentajan avaimelle. Vapaaehtoinen laajennuskenttä on sulkulistan julkaisupaikka esim. URL-osoittena.

HST-kortin muodostamisen vaiheet:

  1. Kansalainen täyttää korttihakemuksen.
  2. Hakijan henkilöllisyys tarkastetaan (kasvokkain rekisteröijän luona, siis poliisilaitoksella tms.), tehdään tarkistus väestötietojärjestelmästä (VTJ) ja luodaan sähköinen asiointitunnus.
  3. Hakemuksen tiedot toimitetaan kortin valmistajalle ja yksilöijälle
  4. Valmistajalla on jo yksilöimättömiä korttiaihioita, joilla on myös avainparit ja PIN-koodi. Nyt "manuaalitiedot" liitetään korttiin: lähinnä kuva, nimi ja numero.
  5. Valmistaja ottaa suojatun yhteyden varmenneviranomaiseen (omaansa sekä uutta korttia käyttäen) ja pyytää uudelle kortille varmennetta:
  6. Varmenteet luodaan, lähetetään ja talletetaan sekä kortille että avoimeen hakemistopalveluun (X.500).
  7. Valmis kortti lähetetään rekisteröijälle ja asiakkalle lähtee PIN-kuori. Siinä on myös PUK-koodi, joka on tarkoitettu lukkiutuneen PIN-koodin avaamisen rekisteröijän luona.
  8. Rekisteröijä luovuttaa kortin asiakkaalle: jälleen tunnistus ja tarkistus VTJ:stä.
LUE ainakin edellä mainitun HST-pääsivun teksti. Kannattanee tutustua myös tuoreimman dokumentaation liitteessä 1 oleva 9 kalvon sarjaan, joka esittää kortin muodostamisen edellä mainittujen vaiheiden mukaan.

Vertaa hanketta VeriSign-yhtiön markkinoimaan digitaaliseen identiteettiin toimikortilla.

Elektronisesta kaupankäynnistä yleisesti

Ensinnä tulee ehkä mieleen www- eli seittikauppa, ja siihen puututaankin yksityiskohtaisemmin ensi kerralla. Sähköinen kaupankäynti on kuitenkin laajempi ja vanhempi ilmiö. Ideana on yksinkertaisesti korvata kaupankäynnissä perinteisesti käytetty paperi biteillä. Sittemmin mukaan on tullut myös kauppatavara, joka on välitettävissä bitteinä, siis ohjelmistot, dokumentit ja monenlaiset palvelut. Lentoyhtiöiden paikanvarausjärjestelmätkään eivät ole pelkästään tietokantoja vaan nekin edustavat monenvälistä sähköistä kaupankäyntiä.

Paperittoman kaupankäynnin standardoitua perusteknologiaa 80-luvulta lähtien on ollut EDI (electronic data interchange), jonka mukaisesti kaupankäynnin (tai muun toiminnan) osapuolet sopivat määrämuodon tilauksille, vahvistuksille, laskuille ym. dokumenteille, joita ne toimittavat toisilleen, tietokoneelta tietokoneelle. Tämä on yritysten tai yritysten ja viranomaisten välistä tiedonsiirtoa, EDI onkin suomeksi OVT eli organisaatioiden välinen tiedonsiirto.

Varsinaisesti tietoa siirtävää tekniikkaa voi EDIssä olla monenlaista, magneettinauhasta ja levykkeestä alkaen FTP:n kautta Internetin sähköpostiin vaikkapa PGP:llä tai S/MIME:llä suojattuna. EDIssä on kuitenkin myös oma tietoturvarakenne, joka on riippumaton tietoliikenteeseen käytetyistä verkoista ja protokollista. EDIn oma tietoturva käyttää normaaleja mekanismeja: salausta, tiivistämistä, allekirjoitusta, sertifikaatteja. Nämä ja näillä muunnetut sanoman osat paketoidaan EDI:lle tyypilliseen kuorirakenteeseen asianmukaisine aloitus- ja lopetusotsikoineen. Tällä tarkkuudella esiteltynä kryptoprimitiiveistä rakennettava kerrostus on EDIssä varsin samantapainen kuin edellä S/MIMEssä ja toisaalta se muistuttaa myös myöhemmin esille tulevaa IPSec-protokollaa.

EDIä vastaavaan formatointiin voitaisiin nykyään muuten tähdätä esim. XML:n kautta, jolloin sähköisiin dokumentteihin voitaisiin muodon ohella määritellä merkitys. Tiivistä lisäperustietoa OVT:stä ja EDI/OVT:n tietoturvasta. Jälkimmäisessä vain luku 4.2 on oleellinen tässä yhteydessä.

Elektroninen maksaminen

Maksamisen voi perinteisesti hoitaa
  1. käteisellä;
  2. etukäteen maksetulla "pelimerkillä": lipulla, lahjakortilla, puhelinkortilla, matkakortilla jne.;
  3. tilisiirrolla: pankissa --> maksupalvelussa (siis off-line) --> on-line puhelimitse, päätteitse tai seititse;
  4. pankkikortilla: ideana on,että asiakas antaa allekirjoituksellaan luvan siirtää rahaa omalta tililtään sovitun summan. Sekillä maksamisessa on sama periaate.
  5. luottokortilla, jolloin edelliseen verrattuna kortin numero oleellisesti ottaa allekirjoituksen aseman. Rahan tilalla on tosin tilivelka ja prosessissa on vielä jälkivaiheita.
Elektronisimmaksi näistä näyttäisivät tulevan seittitilisiirto ja se, että luottokortin numero voidaan välittää verkoitse. Jälkimmäiseen erityistarkoitukseen on kehitetty SET-protokolla, josta lisää ensi kerralla. Tilisiirto voidaan nykyään toteuttaa osana samaa istuntoa, jolla kauppapaikassa asioidaan. Tällöin ostettava informaatio tai palvelu, esim. lehden tilaus, voidaan saada saman tien. Tällainen tilisiirto elektronisoi oikeastaan kohdan 2 tyyppisen maksamisen. Palataan myös tähän ja tilisiirtoon ensi kerralla. Katsotaan seuraavaksi miten käteinen voidaan elektronisoida.

Sähköinen käteinen

Tässä on kaksi päälinjaa. Ensimmäinen ja käytännössä pitemmällä oleva on käteisen lataaminen mikroprosessoriin, joka on istutettu muovikorttiin. Tämä muistuttaa hieman eo. luokittelun kohtaa 2, mutta lataaminen ei merkitse vielä maksamista millekään kauppiaalle. Toisaalta raha ei ole enää pankissakaan, joten kyseessä ei ole kohdan 4 mukainen tilanne. Korttirahan tekniikkaan palataan siinä yhteydessä kun puhutaan turvallisista laitteistoista, mutta yleiskatsauksen aiheeseen voi hankkia jo nyt Avant-sivuilta.

Toinen mahdollisuus on, että käteinen on bitteinä, jotka periaatteessa voisi maksettaessa vaikka näppäillä koneeseen. Korttirahassahan kortin turvamoduuli pitää käyttäjän näpit irti biteistä, ja keskustelee vain toisen vastaavan moduulin kanssa.

Bittikäteisen perusidea on varsin samanlainen kuin paperirahassakin, joka ei alunperin edes ollut "oikeaa rahaa": Sähköseteleissäkin pankki allekirjoittaa tiettyjä bittejä ja sitä kautta lupaa maksaa niiden esittäjälle bittien (tai allekirjoitustyypin) mukaisen summan todellista rahaa. Biteissä on tärkeää olla mukana ainutkertainen sarjanumero, jotta kopioilla ei pääsisi rikastumaan (nehän eivät edes olisi "väärää" rahaa). Tavanomaisesta setelistä tällainen bittiseteli eroaa sikäli, että pankki tietää, kuka nosti minkäkin setelin. Tämä ei ole kovin suotavaa ja asiaan saadaan korjaus viime kerralla esitetyn sokean allekirjoituksen avulla. Periaatetta käytetään Digicashin eCash-järjestelmässä ja se on peräisin David Chaumilta (1982).

Anonyymi sähköinen käteinen toteutuu seuraavasti: Asiakkaan halutessa nostaa sähköistä käteistä pankista hänen lompakko-ohjelmansa luo satunnaisen sarjanumeron, varustaa sen tietynlaisella redundanssilla ja lähettää nämä "setelit" sokaistuina pankille allekirjoitettavaksi. Saatuaan vastauksen asiakas jakaa sokaisutekijän pois ja käyttää setelin maksuna kauppiaalle. Kauppias tarkistaa pankin julkisella avaimella, että seteli on aito, ts. pankin allekirjoituksen purkaminen tuo näkyviin sarjanumeron, jossa on vaaditunlainen redundanssi (esim. että bittijono on palindromi). Kauppias lähettää setelin pankkiin, joka tekee vastaavat tarkastukset ja lisäksi tarkastaa, ettei seteliä ole jo käytettyjen listalla. Jos asiat ovat kunnossa, pankki hyvittää kauppiaan tiliä, jos eivät, kauppias ei hyväksy maksua.

Koska pankki ei tiedä sokeutustekijää, se ei pysty yhdistämään asiakkaan nostamia seteleitä kauppiaan tallettamiin seteleihin. Kauppias ei voi tässä auttaa. Vaikka hän yleensä tietääkin kuka hänelle maksoi, hän ei pysty todistamaan tätä.

Tästä perusmallista on lukuisia muunnelmia. Voidaan tavoitella esimerkiksi sitä, ettei maksun saajaa voida yksilöidä (sovelluksena sosiaaliavustus) tai että yritys käyttää samaa seteliä toistamiseen paljastaa asiakkaan.