Oppikerta 4, 2.2.1999

Harjoitus: (kertausta) Oletetaan, että A ja B ovat saaneet jollain ehkä kalliilla tavalla saaneet sovituksi taatusti luotettavan avaimen. Heidän ei varmaan kannata käyttää sitä uuden avaimen sopimiseen sitten, kun se jo alkaa tuntua suuren käyttömäärän vuoksi turvattomalta - eli kun mahdollisella hyökkääjällä on jo runsaasti sillä salattua tekstiä hallussaan. Keksi jokin keino, jolla he voivat mahdollisimman pitkään välttää kallista avaintenvaihtoprotokollaa.

Allekirjoitus

Allekirjoituksen perusominaisuus (ja -vaatimus) on aitous: allekirjoittaja eikä kukaan muu on tarkoituksellisesti laatinut kyseisen allekirjoituksen juuri kyseisen dokumenttiin. Jos tämä toteutuu, saavutetaan myös kiistämättömyys. Digitaalisessa maailmassa pitää kiinnittää erityishuomio eheyteen: allekirjoitettua tietoa ei saa voida muuttaa ilman että allekirjoitus mitätöityy. Tästä voidaan johtaa seuraavia vaatimuksia digitaaliselle allekirjoitukselle (DA): Keskeinen sovellus on varmenteen eli sertifikaatin muodostaminen: varmenneviranomaisen (tyypillisen ns. luotetun kolmannen osapuolen) allekirjoitus kytkee tietyn osapuolen johonkin tietoon, yleensä tämän julkiseen avaimeen - siten että muut osapuolet voivat myöhemmin varmenteen perusteella todeta ko. tiedon aidoksi.

Harjoitus: 1) Missä määrin symmetrisen avaimen kryptauksella voidaan toteuttaa allekirjoituksen vaatimuksia?

2) RSA:lla on ominaisuus (ns. kommutatiivisuus), että yksityisellä eksponentilla salatun viestin voi purkaa julkisella eksponentilla. Miten tämä soveltuu viestin allekirjoittamiseen?

Ratkaisuna voidaan todeta, että 1) symmetrisyys on ristiriidassa kiistämättömyyden kanssa (Schneier esittää (s. 39) epäkäytännöllisen ratkaisun joka käyttää kolmatta osapuolta), ja 2) RSA on keskeisesti allekirjoitusalgoritmi:

Alkuperäisen RSA-artikkelin nimi (vuodelta 1978) oli "A method for obtaining digital signatures and public key cryptosystems". RSA:ta käytetään allekirjoitukseen siis toisinpäin kuin salaukseen, joka tapahtuu julkisella avaimella ja purku salaisella avaimella. Allekirjoitus muodostetaan salaisella ja se todennetaan julkisella avaimella: Vain se, joka tuntee salaisen eksponentin d, voi tuottaa viestistä m potenssin s=md mod n. Kun m ja s lähetetään yhdessä, kuka tahansa joka tuntee vastaavan julkisen avaimen e, voi tarkistaa että m = se mod n. Jos siis d on osapuolen A salainen avain, niin A ei voi kiistää allekirjoittaneensa ja lähettäneensä viestiä m - paitsi väittämällä että hänen avaimensa on paljastunut ... (tässä yhteydessä tarvitaan avaintenhallintaa, aiheeseen palataan myöhemmin).

RSA:n eksponenttilasku on hidas operaatio, minkä vuoksi yleensä vain viestin tiivistelmä allekirjoitetaan: lähetys on siis m, (H(m))d mod n.

Harjoitus: Sovella RSA-allekirjoitusta Diffie-Hellman-avaimen vaihtoon. Oleta, että A ja B ovat kumpikin luoneet oman RSA-systeeminsä julkisilla parametreilla (eA, nA) ja (eB, nB). Vastaavat salaiset parametrin olkoot dA ja dB. Käytä DH-algoritmille aiemmin esitettyjä merkintöjä (n,g,x ja y).

Mahdollinen ratkaisu DH:n autentisointiin allekirjoituksilla: A:n viesti B:lle koostuu kolmesta osasta: nimet A ja B sekä luku (A,B,gx)dA mod nA. Osapuolen B viesti A:lle vastaava. (Lieneekö näissä jotain tarpeetonta?)

Viestien merkitys selviää, kun katsotaan, miten esim. B ratkaisee yhteisen avaimen gxy saamastaan viestistä. Hän toteaa väitetyn lähettäjän olevan A ja siis korottaa viestin kolmannen osan potenssiin eA modulo nA. Tuloksena on luku, jonka binääriesityksestä B voi lukea (ja tarkistaa) nimet A ja B ja niiden jälkeen on bittijono X (=gx mod n). Korottamalla X:n potenssiin y modulo n, B saa luvun gxy mod n, joka on sama kuin se, jonka A saa vastaavalla algoritmilla. Olisiko joku muu voinut lähettää B:lle kyseisen viestin?

Kuten sanottua, vain se joka tuntee dA:n on voinut alunperin tuottaa kyseisen viestin. Vastustaja C, joka on siepannut A:n lähettämän viestin joskus aiemmin, voi lähettää sen nyt uudestaan. Entäpä sitten: Jos C nyt sieppaa myös B:n viestin, mitä hän saa siitä irti? Ei mitään muuta kuin sen, että B:n tarkoitus on sopia avaimesta A:n kanssa. Tämä ei siis ole huolestuttavaa. Sen sijaan edelleen jää auki, onko B:n saaman viestin takana todella A kuten viesti väittää: Jospa C onkin sijoittanut oman julkisen avaimensa paikkaan josta B hakee A:n julkisen avaimen. Tällöin C voi näytellä A:ta allekirjoittamalla viestejä omalla salaisella avaimellaan. Autenttisuutta ei saavuteta, ellei julkisia avaimia hallinnoida jollain luotettavalla tavalla.

Jotta pääsisimme eteenpäin, meidän täytyy keksiä menetelmä, jolla julkiset avaimet voidaan sitoa omistajiinsa (ilmeisesti siis jonkinlainen allekirjoitus tässäkin). Lisäksi täytyy luoda mekanismi, jolla tällainen sidonta voidaan purkaa. Näitä tehtäviä kutsutaan avaintenhallinnaksi. Ennen kuin voidaan ajatella tiedon sitomista johonkuhun yksilöön, pitäisi oikeastaan pohtia yksilöinnin ongelmaa. Palataan tähän hetken kuluttua.

Otetaan nyt esille yksi monista tunnetuista DH-variaatioista, ns. Station-to-Station-protokolla. Siinä käytetään paitsi allekirjoituksia myös sopimisen kohteena olevaa symmetristä avainta heti kun se on mahdollista. A:n ensimmäinen viesti B:lle on kuten perus-DH:ssa (siis gx) ja samoin on B:n viesti A:lle alkuosaltaan (siis gy), mutta sen perään B liittää allekirjoituksen SB (gy, gx) salattuna avaimella k = (gx)y. Kolmannessa viestissä A lähettää B:lle vastaavan allekirjoituksen SA (gx,gy), salattuna k:lla.

Tässä SX on osapuolen X allekirjoitusfunktio. Kumpikin osapuoli soveltaa sitä peräkkäin asetettuihin (katenoituihin) lukuihin. Kunhan kummankin osapuolen julkinen avain (allekirjoituksen todentamiseen) on autenttinen, STS-protokollalla saavutetaan molemminpuolinen yksilöinti ja lisäksi eksplisiittinen avaimen aitous (ts. kumpikin osapuoli tietää että toisella on sama avain k).

Harjoitus: RSA-algoritmin syötteen M pitää olla modulia n pienempi luku. Käänteisoperaatio näet tuottaa luvun M-k*n, missä k on sellainen, että tämä luku on 0:n ja n:n välissä. Mitä ongelmia tämä aiheuttaa tilanteessa, jossa halutaan ensin allekirjoittaa viesti omalla RSA-avaimella ja sitten salata se vastaanottajan avaimella?

Olion autentisointi, tunnistaminen

Jotta olio voitaisiin yksilöidä, sillä täytyy olla jokin todettavissa oleva ominaisuus, jota muilla olioilla ei ole: