5. Diffien ja Hellmanin avaintenvaihto Miten on mahdollista välittää salatun viestin avaamiseen tarkoitettu avain Internetin kaltaisen avoimen liikennöintiväylän kautta? Kuka tahansahan voi (ainakin periaatteessa) lukea kaikkea, mitä Internet-verkon kautta välitetään. Eräs varhaisimmista tällaiseen tarkoitukseen sopivista menetelmistä on peräisin W. Diffieltä ja M. E. Hellmanilta. Tämän Diffien ja Hellmanin avaintenvaihtomenetelmän turvallisuus perustuu ns. diskreettilogaritmiongelmaan. Laskettavat suureet ovat eksponenttifunktion diskreettejä sukulaisia, mutta ongelma on käänteisfunktion, diskreetin logaritmin, määrääminen. Diskreetin logaritmin käsittelyyn kaivataan kuitenkin lisätietoja kunnista Z p (p alkuluku). 5.1. Primitiivinen alkio. Tarkastellaan äärellistä kuntaa K, siis kommutatiivista rengasta, jossa jokaisella nollasta eroavalla alkiolla on käänteisalkio, ja jossa on äärellisen monta alkiota. Tällaisia ovat esimerkiksi jäännösluokkarenkaat Z p, kun p on alkuluku, mutta muitakin on (Z n ei ole kunta, jos n ei ole alkuluku). Se tarkemmin yksityiskohtiin puuttumatta mainittakoon, että jos K on äärellinen kunta, sen alkioiden lukumäärä q on muotoa q = p n, missä p on alkuluku ja n Z +. Kääntäen, jos q = p n, missä p on alkuluku ja n Z +, niin on olemassa oleellisesti yksi ja vain yksi kunta, jossa on q alkiota. ( Oleellisesti tarkoittaa, että mitkä tahansa kaksi äärellistä kuntaa, joissa on yhtä monta alkiota, ovat rengasisomorfiset.) Olkoon nyt äärellinen K kunta, jossa on q alkiota. Tällöin sen kääntyvien alkioiden joukko K = K \ {0} on kertolaskun suhteen Abelin ryhmä. (Vastaava tapahtuu jäännösluokkarenkaille Z n, mutta kääntyvien alkioiden joukko Z n on vaikeampi karakterisoida.) Ryhmän (K, ) kertaluku on q 1. Palautetaan mieleen, että (multiplikatiivinen) ryhmä on G syklinen, jos on olemassa alkio g G siten, että G = g = {g k k Z}. Osoitetaan seuraavaksi, että äärellisen kunnan multiplikatiivinen ryhmä K on syklinen. Tämän todistamiseksi riittää osoittaa, että on olemassa ainakin yksi alkio g K, jonka kertaluku on q 1. Väitteen todistus tulee antamaan hieman enemmän: jokaista luvun q 1 tekijää d kohti on olemassa alkioita, joiden kertaluku on d. Lisäksi tällaisten alkioiden lukumäärä pystytään laskemaan. Väitteen todistamiseksi tarvitaan Eulerin ϕ-funktioon liittyvä kaunis kaava: Lause 5.1. Olkoon n positiivinen kokonaisluku. Tällöin ϕ(d) = n, d Z + d n missä summa lasketaan kaikille sellaisille luvuille d Z +, jotka jakavat luvun n. Ennen lauseen todistamista yleisesti tarkastellaan yksinkertaista numeerista esimerkkiä, josta todistuksen idea selviää. Luvun n = 6 jakajat ovat d {1, 2, 3, 6} =: D. Osamäärät j, missä j {1,..., 6}, voidaan esittää supistetussa muodossa ja sen jälkeen ne voidaan ryhmitellä nimittäjän mukaan 6 seuraavasti: T := { j 6 j {1,..., 6}} = { 1 6, 1 3, 1 2, 2 3, 5 6, 1 1 } = S 1 S 2 S 3 S 6, missä S 1 = { 1}, S 1 2 = { 1}, S 2 3 = { 1, 2} ja S 3 3 6 = { 1, 5 }, t.s. yleisesti jokaiselle d D 6 6 on S d := { t t {1,..., d} ja syt(t, d) = 1}. Tässä esimerkkitilanteessa joukko d 17 Viimeksi muutettu 11.10.2012. 36
T jakautuu pistevieraisiin osiin S d, joten joukkojen alkioiden lukumääriä on helppo verrrata. Vastaava voidaan tehdä yleisesti. Todistus. Olkoot D := {d Z + d n}, T := { j j {1,..., n}} ja n S d := { t t {1,..., d} ja syt(t, d) = 1}, kun d D. d Tällöin joukon T alkioiden lukumäärä on n ja joukon S d vastaavasti ϕ(d). Osoitetaan, että T = d D S d, ja että joukot S d ovat pistevieraita. Kun tämä osoitettu, väite seuraa välittömsti. T d D S d: Joukon T jokainen luku on muotoa j jollekin j {1,..., n}. Olkoon n s := syt(j, n). Tällöin on olemassa kokonaisluvut t ja d siten, että j = t s ja n = d s. Luvuille t ja d on syt(t, d) = 1, t {1,..., d}, d {1,..., n} ja d n, joten d D ja j = t S n d d. T d D S d: Olkoot d D, jolloin tyypillinen joukon S d luku on muotoa t, missä d t {1,..., d}. Olkoot s := n ja j := t s. Tällöin s Z d +, j {1,..., n} ja t = j, d n joten t T. d S d S d =, kun d d : Tehdään antiteesi: on olemassa d, d D siten, että d d, mutta S d S d. Olkoon r S d S d. Tällöin on olemassa t {1,..., d} ja t {1,..., d } siten, että r = t = t ja syt(t, d) = 1 ja syt(t, d ) = 1. Tällöin d d t d = t d. Koska syt(t, d) = 1 ja d t d = t d, on d d, joten on olemassa k Z + siten, että d = k d. Siis t d = t d = t k d, joten t = t d = t k. Mutta tällöin luvuilla t ja d on yhteinen tekijä k, mikä on vastoin oletusta lukuunottamatta sitä tilannetta, että k = 1. Mutta jos k = 1, olisi d = d, mikä on vastoin oletusta. Siis antiteesi on väärä, ja S d S d =. Lause 5.2. Olkoon K äärellinen kunta, jossa on q alkiota. Tällöin jokaiselle luvun q 1 jakajalle d ryhmässä K on täsmälleen ϕ(d) alkiota, jonka kertaluku on d. Erityisesti ryhmässä K on ϕ(q 1) alkiota, jonka kertaluku on q 1. Todistus. Koska ryhmässä K on q 1 alkiota, on sen jokaisen alkion kertaluku luvun q 1 tekijä (lause 3.2). Olkoon d luvun q 1 tekijä. Olkoon ψ(d) kaikkien niiden ryhmän K alkioiden lukumäärä, joiden kertaluku on d. Väite seuraa, kun osoitetaan, että ψ(d) = ϕ(d). Oletetaan aluksi, että ψ(d) > 0, ja osoitetaan tämän avulla, että ψ(d) = ϕ(d). Ehto ψ(d) > 0 merkitsee, että ryhmässä K on ainakin yksi alkio, jonka kertaluku on d. Olkoon a K, jonka kertaluku on d. Alkion potenssit a e, 0 e < d, ovat keskenään erisuuria, koska alkion a kertaluku on d. Toisaalta, jokainen potenssi a e on polynomin x d 1 nollakohta, koska (a e ) d 1 = (a d ) e 1 = 0. Koska polynomin x d 1 aste on d, on sillä enintään d nollakohtaa. (Tämä kaipaa hieman lisäperusteluja; Rabinin salaimen yhteydessä nähtiin, että alkiolla [c] n Z n voi olla neljä neliöjuurta, t.s. polynomilla voi olla astelukuaan enemmän nollakohtia.) Siis tässä tilanteessa polynomilla x d 1 on täsmälleen d nollakohtaa, ja ne ovat potenssit a e, 0 e < d. Se, että alkion kertaluku on d tarkoittaa, että se on polynomin x d 1 nollakohta, joten jokainen kertalukua d oleva alkio on jokin alkion a potenssi a e. Aiemmin todistetun nojalla alkion a potenssin a e kertaluku on d, jos ja vain jos syt(e, d) = 1. Kertalukua 37
d olevia alkioita on siis yhtä monta kuin lukuja e, joille 0 e < d ja syt(e, d) = 1. Tällaisia lukuja on ϕ(d) kappaletta. Siis kertalukua d olevia alkioita on ϕ(d) kappaletta, jos sellaisia ylipäätään on olemassa. Osoitetaan lopuksi, että ψ(d) > 0 jokaiselle luvun q 1 tekijälle. Tehdään antiteesi: Luvulla q 1 on tekijä d siten, että ψ(d) = 0. Todistuksen alkuosassa osoitettiin, että jos ψ(d) > 0, niin ψ(d) = ϕ(d). Jos taas ψ(d) = 0, niin 0 = ψ(d) < ϕ(d). Koska ryhmän K jokaisen alkion kertaluku on luvun q 1 tekijä, antaa summa d Z +, d q 1 ψ(d) ryhmän K alkioiden lukumäärään. Siis edellisessä lauseessa Eulerin ϕ-funktiolle todistetun kaavan nojalla saadaan q 1 = ψ(d) < ϕ(d) = q 1. d Z +, d q 1 d Z +, d q 1 38 Päädytään ristiriitaan, jos oletetaan, että ψ(d) = 0 jollekin luvun q 1 tekijälle d. Määritelmä 5.3. Olkoon K äärellinen kunta. Alkiota g K, jonka virittämä ryhmä g = {g k k Z} on K, kutsutaan kunnan K primitiiviseksi alkioksi. Edellisen lauseen nojalla äärellisellä kunnalla, jossa on q alkiota, on ϕ(q 1) primitiivistä alkiota. Huomautus 5.4. Edellisesta lauseesta 5.2 tarvitaan ennenkaikkea tieto, että jokaisella äärellisellä kunnalla on primitiivinen alkio. Tämä voitaisiin todistaa yksinkertaisemminkin. Nimittäin, äärellisen kunnan jokaisella nollasta eroavalla alkiolla on äärellinen kertaluku. Koska näitä kertalukuja on äärellisen monta, voidaan niistä valita suurin. Olkoon se d, ja olkoon a K jokin alkio, jonka kertaluku on d. Tällöin potenssit a, a 2,..., a d = 1 ovat keskenään erisuuret. Ne ovat polynomin x d 1 nollakohtia, ja koska niitä on asteluvun mukaiset d kappaletta, muita nollakohtia polynomilla x d 1 ei ole. Jos d < q 1, on olemassa b K, joka ei ole mikään alkion a potenssi. Suurimmalla kertaluvulla d on kuitenkin se ominaisuus, että minkä tahansa muun alkion kertaluku jakaa kertaluvun d. Erityisesti alkion b kertaluvun pitäisi jakaa d. Mutta jos alkion b kertaluku jakaa luvun b, toteuttaa b yhtälön b d 1 = 0. Tällöin b olisi polynomin x d 1 nollakohtia, joten se olisi jokin potensseista a, a 2,..., a d = 1. Päädytään ristiriitaan. Katso tarkemmin [10, luku VIII, 3] tai [4, 1.7]. Edellä esitetyn todistuksen etuna tähän päättelyyn nähden on, että se kertoo jotain erilaisten alkioiden lukumääristä Eulerin ϕ-funktion avulla. Haittapuolelle jää se, että lauseelle 5.2 esitetty todistus ei ole sen konstruktiivisempi kuin tässä esitetty todistushahmotelma. RSA-menetelmän yhteydessä käytettiin tulosta (lemma 3.13), jonka todistamiseksi olisi tarvittu kunnan primitiivista alkiota: Lukuja a Z +, joille syt(a, n) = 1 ja jäännösluokkien [a k ] p ja [a k ] q kertaluvut ovat keskenään erisuuret, on ainakin (p 1)(q 1)/2 kappaletta. Kerrataan merkintöjä: Luvut p ja q ovat keskenään erisuuria parittomia alkulukuja, n = p q, e (1, ϕ(n)) on kääntyvä modulo ϕ(n) ja d (1, ϕ(n)) on luvun e käänteisalkio modulo ϕ(n). Luku s valittiin niin, että se on suurin positiivinen kokonaisluku, jolle 2 s d e 1; tällöin d e 1 = 2 s k, missä k on pariton. Tälle luvun k valinnalle alkion [a k ] n kertaluku ryhmässä Z n on muotoa 2 j jollekin j {0, 1,..., s}.
Lemman 3.11 jälkeisen tarkastelun nojalla alkion [a k ] p kertaluku ryhmässä Z p on muotoa 2 t jollekin t j. Vastaava pätee myös alkion [a k ] q kertaluvulle. Lauseen 3.6 nojalla: jos alkion g kertaluku on d, alkion g j kertaluku on d/ syt(d, j). Lemman 3.13 todistus. Edellisen lauseen nojalla äärellisellä kunnalla Z p on primitiivinen alkio [g p ] p. Vastaavasti kunnalla Z q on primitiivinen alkio [g q ] q. Kiinalaisen jäännöslauseen nojalla on olemassa kokonaisluku g siten, että g g p mod p ja g g q mod q. Tällöin [g] p on kunnan Z p primitiivinen alkio ja [g] q on kunnan Z q primitiivinen alkio. Kaikille luvun g potensseille g x on syt(g x, n) = 1. Nimittäin muuten olisi syt(g x, p) > 1 tai syt(g x, q) > 1. Jos syt(g x, p) > 1, olisi p g, jolloin g 0 mod p, eikä [g] p voisi olla kunnan kunnan Z p primitiivinen alkio. Lemman 3.11 nojalla alkioiden [g k ] p ja [g k ] q kertaluvut kunnissa Z p ja Z q ovat muotoa 2 j, missä j s. Koska g antaa primitiiviset alkiot kuntiin Z p ja Z q, on luonnollista, että luvut a etsitään luvun g potensseina. Oletetaan aluksi, että jäännösluokan [g k ] p kertaluku d on suurempi kuin jäännösluokan [g k ] q, jonka kertaluku olkoon d. Olkoot x {1, 2,..., p 1} pariton ja y {0, 1,..., q 2}. Olkoon a pienin ei-negatiivinen kokonaisluku, joka ratkaisee kongruenssiparin (5.1) a g x mod p, a g y mod q. Tällöin a {1, 2,..., n 1}. Koska [a k ] p = [a] k p = [g x ] k p = [(g x ) k ] p = [(g k ) x ] p = [g k ] x p, alkion [g k ] p kertaluku d on muotoa 2 j ja x on pariton, on alkion [a k ] p kertaluku d/ syt(d, x) = d. Vastaavasti, koska [a k ] q = [g y ] k q = [g k ] y q ja alkion [g k ] q kertaluku on d, on alkion [a k ] q kertaluku d / syt(d, y) d. Koska oletettiin, että d > d, on siis alkion [g k ] p kertaluku suurempi kuin alkion [a k ] q kertaluku. Kahta eri paria (x, y) vastaavat kongruenssiparin (5.1) ratkaisut ovat keskenään erisuuret. Jos nimittäin myös pari (x, y ) toteuttaa kongruenssiparin (5.1), niin g x g x mod p ja g y g y mod q. Koska [g] p on kunnan Z p primitiivinen alkio ja x, x {1, 2,..., p 1}, on x = x. Vastaavasti y = y. Tästä seuraa, että tällä tavalla löytyviä lukuja a on (p 1)(q 1)/2 kappaletta. Oletetaan nyt, että jäännösluokkien [g k ] p ja [g k ] q kertaluvut ovat yhtä suuret. Koska ainoa alkio, jonka kertaluku on yksi, on neutraalialkio [1], on jäännösluokkien [g k ] p ja [g k ] q yhteinen kertaluku d 2. Olkoot x {1, 2,..., p 1} pariton ja y {0, 1,..., q 2} parillinen. Kuten edellä olkoon a pienin ei-negatiivinen kokonaisluku, joka ratkaisee kongruenssiparin (5.1). Koska alkion [g k ] p kertaluku d on muotoa 2 j ja x on pariton, on alkion [a k ] p = [g k ] x p kertaluku d/ syt(d, x) = d. Koska alkion [g k ] q kertaluku d on muotoa 2 j, d 2 ja y on parillinen, on alkion [a k ] q = [g k ] y q kertaluku d/ syt(d, y) d/2 < d. On helppo todeta, että kahta eri paria (x, y) vastaavat kongruenssiparin (5.1) ratkaisut ovat keskenään erisuuret. Tällä tavalla löytyviä lukuja a on (p 1)(q 1)/4 kappaletta. Loput ratkaisut a löydetään kongruenssiparin (5.1) ratkaisuina, missä nyt x {0, 1,..., p 1} on parillinen ja y {0, 1,..., q 2} pariton. 39
5.2. Polynomien nollakohdista. Lauseen 5.2 todistus käytti vahvasti apunaan sitä tuttua tietoa, että d-asteisella polynomilla on enintään d nollakohtaa. Rabinin salaimen yhteydessä kuitenkin nähtiin, että toisen asteen yhtälöllä x 2 = c voi olla neljä ratkaisua renkaassa Z n. Tilanne kuitenkin normalisoituu, kun polynomin kertoimet ovat jonkin kunnan alkioita, eivät mielivaltaisen (kommutatiivisen) renkaan alkioita. Muistetaan, että kun K on kunta, niin K-kertoimiset polynomit f(x) ovat äärellisiä summia f(x) = a 0 + a 1 x + + a d x d, missä a 0, a 1,..., a d K. Nollasta eroavan polynomin aste on suurin luku d Z siten, että a d 0. Mekitään deg f(x) = d. Nollapolynomin asteeksi sovitaan. Polynomeista tarkemmin (todistuksineen) löytyy Algebran kurssista tai vaikka kirjoista [10, luku V, 1], [1, 2.18, 2.19] ja [2, 2.4]. Oleellinen apuväline polynomien käsittelyssä on jakoyhtälö, jonka todistus on lähinnä (induktiomuotoon kirjoitettu variantti) polynomien jakolaskusta jakokulmassa. Oleellista tässä jakolaskussa on, että nollasta eroavalla johtavalla kertoimella voidaan jakaa; tämä onnistuu, kun kertoimien joukkona on kunta. Seuraavissa päättelyissä käytetään myös tietoa deg(f(x) g(x)) = deg f(x) + deg g(x). Tämäkin pitää paikkansa, kun polynomit ovat kuntakertoimisia, mutta ei enää yleisemmin. Lause 5.5 (Polynomien jakoyhtälö). Olkoot K kunta sekä f(x) ja g(x) muuttujan x K-kertoimisia polynomeja. Oletetaan, että g(x) ei ole nollapolynomi. Tällöin on olemassa yksikäsitteisesti määrätyt K-kertoimiset polynomit q(x) ja r(x) siten, että f(x) = q(x) g(x) + r(x) ja deg r(x) < deg g(x). Alkio a K on K-kertoimisen polynomin f(x) = a 0 + a 1 x + + a d x d nollakohta (tai yhtälön f(x) = 0 juuri), jos a 0 + a 1 a + + a d a d = 0. Seuraus 5.6. Olkoot K kunta, f(x) muuttujan x K-kertoiminen polynomi ja a K. Tällöin a on polynomin f(x) nollakohta, jos ja vain jos f(x) = q(x) (x a) jollekin K-kertoimiselle polynomille q(x) (t.s. jos ja vain jos polynomi x a jakaa polynomin f(x)). Todistus. Jos f(x) = q(x) (x a), niin a on polynomin f(x) nollakohta. Kääntäen, sovelletaan polynomien jakoyhtälöä jakajaan g(x) := x a. Tällöin f(x) = q(x) (x a)+r(x), missä jakojäännökselle on deg r(x) < deg(x a) = 1, joten r(x) on vakio =: b. Koska a on polynomin f(x) nollakohta, saadaan 0 = q(a) (a a) + b = b. Siis f(x) = q(x) (x a). Seuraus 5.7. Olkoot K kunta ja f(x) nollasta eroava muuttujan x K-kertoiminen polynomi. Tällöin polynomilla f(x) on enintään deg f(x) nollakohtaa. Todistus. Olkoon d := deg f(x). Jos d = 0, on f(x) = a 0 0, joten polynomilla f(x) on nolla nollakohtaa. Olkoon d > 0. Jos polynomilla f(x) ei ole nollakohtia, on väite tosi. Oletetaan nyt, että polynomilla f(x) on nollakohta a 1 K. Edellisen seurauksen nojalla on olemassa polynomi f 1 (x) siten, että f(x) = f 1 (x) (x a 1 ). Tällöin d = deg f(x) = deg f 1 (x) + deg(x a 1 ) = deg f 1 (x) + 1, joten deg f 1 (x) = d 1. Toistamalla tätä päättelyä löydetään a 2,..., a k K ja polynomit f 2 (x),..., f k (x) siten, että f(x) = f k (x) (x a 1 ) (x a k ). Tässä alkiot a j ovat polynomin f(x) nollakohtia ja deg f k (x) = d k, joten pitää olla k d. 40
5.3. Gaussin algoritmi primitiivisen alkion määräämiseksi. Seuraavassa alkion a kertalukua ryhmässä G merkitään ord G (a) tai lyhyesti ord(a). Lauseen 3.6 nojalla ryhmästä G valitun alkion a potenssien a k kertaluvut ovat enintään alkion a kertaluvun suuruisia. Etsittäessä äärelliselle kunnalla K primitiivistä alkiota, tarvitaan jokin menetelmä, jolla jo valitun alkion kertalukua voidaan nostaa. Seuraava lemma antaa idean siihen, miten kertaluku saadaan kasvamaan nopeimmin. Ryhmän laskutoimitus olkoon kertolasku, vaikka ryhmä oletetaankin kommutatiiviseksi (tulosta on tarkoitus soveltaa ryhmään (K, )). Lemma 5.8. Olkoot G äärellinen Abelin ryhmä ja a, b G siten, että niiden kertaluvut ovat keskenään jaottomat, syt(ord(a), ord(b)) = 1. Tällöin ord(a b) = ord(a) ord(b). Todistus. Olkoot n := ord(a), m := ord(b) ja k := ord(a b). Tällöin (a b) n m = a n m b n m = (a n ) m (b m ) n = e m e n = e, joten k n m. Toisaalta e = e n = (a b) n k = (a n ) k b n k = e k b n k = b n k, joten m n k. Koska syt(n, m) = 1, on m k. Vastaavalla tavalla todetaan, että n k. Koska syt(n, m) = 1, on n m k. Siis k = n m. Gaussin algoritmi antaa menetelmän, jolla löydetään jono alkioita a j K siten, että ord(a 1 ) < ord(a 2 ) <.... Koska alkioiden kertaluvut ovat kokonaislukuja ja kunnassa K on vain äärellisen monta alkiota, näin saatu jono päättyy alkioon, jonka pitää olla kunnan primitiivinen alkio. 1 Valitaan a 1 K, a 1 0. Olkoon t 1 := ord(a 1 ). 2 Jos t 1 = q 1, niin a 1 on kunnan K primitiivinen alkio. 3 Jos t 1 < q 1, valitaan b K \ a 1. Olkoon s := ord(b). Jos s = q 1, niin b on kunnan K primitiivinen alkio. 4 Jos s < q 1, määrätään luvut d ja e Z + siten, että d t 1, e s, syt(d, e) = 1 ja d e = pyj(t 1, s). Asetetaan a 2 := a t 1/d 1 b s/e ja t 2 := pyj(t 1, s). Vaihdetaan edellä alion a 1 tilalle a 2 ja luvun t 1 tilalle t 2, ja toistetaan kohdasta 2. Todistuksen sijasta tyydytään muutamaan selittävään kommentiin: (i) Alkion b kertaluku s ei voi olla luvun t 1 tekijä; muutoin olisi b t 1 = 1, jolloin b olisi yhtälön x t 1 1 = 0 juuri. Mutta tällä yhtälöllä on jo t 1 eri juurta a j 1, 1 j t 1, ja b siis kuuluisi joukkoon a 1. Tästä seuraa myös, että pyj(t 1, s) > t 1. (ii) Kohdan 4 väite luvuille d ja e on yleinen: Kun m Z + ja n Z +, niin on olemassa luvut d ja e siten, että d m, e n, syt(d, e) = 1 ja d e = pyj(m, n). Väite on helppo todistaa esimerkiksi aritmetiikan peruslauseen avulla (ja jätetään lukijan tehtäväksi). (iii) Kohdassa 4 alkion a t 1/d 1 kertaluku on d ja alkion b s/e kertaluku on e. Edellisen lemman nojalla näiden tulon kertaluku on d e = pyj(t 1, s) > t 1. 41
42 900 800 700 600 500 400 300 200 100 0 0 100 200 300 400 500 600 700 800 900 Kuva 5.1. Diskreetti eksponettifunktio kunnalle Z p, kun p = 997 ja g = 7. Kuvasta käy hyvin ilmi, että kun [A] p Z p on annettu (yakselilta), ei diskreetin logaritmin a (x-akselilta), jolle [A] p = [g] a p, löytäminen ole lainkaan ilmeistä. Kuvaan on merkitty pisteet (a, A), joille 445 A 455. 5.4. Diskreetti logaritmi. Olkoon p alkuluku. Edellä todistetun nojalla kunnalla Z p on primitiivinen alkio, t.s. on olemassa kokonaisluku g {1, 2,..., p 1} siten, että {[g] k p k Z} = Z p. Koska primitiivisen alkion kertaluku on p 1, on Z p = {[g] k p k {0, 1,..., p 2}}. Jokaiselle kokonaisluvulle A {1, 2,..., p 1} on olemassa yksi ja vain yksi a {0, 1,..., p 2} siten, että [A] p = [g] a p t.s. A g a mod p. Lukua a kutsutaan luvun A g-kantaiseksi diskreetiksi logaritmiksi; merkitään a =: dlog g A. (Yhtä hyvin, tai paremminkin voitaisiin sanoa, että luku a on alkion [A] p [g] p - kantainen diskreetti logaritmi, jolloin diskreettiä logaritmia olisi luonnollista merkitä a = dlog [g]p [A] p.) Kuvausta Z Z p, a [g] a p, on vastaavasti luonnollista kutsua diskreetiksi [g] p -kantaiseksi eksponenttifunktioksi. Huomaa, että tämä kuvaus on jaksollinen, jakson pituutena alkion [g] p kertaluku. Huomautus 5.9. Diskreetti eksponenttifunktio ja diskreetti logaritmifunktio ovat luonnollisia käsitteitä minkä tahansa sykliselle ryhmälle G = g. Jos virittävän alkion g kertaluku on d, on kuvaus Z G, a g a, d-jaksoinen diskreetti g-kantainen eksponenttifunktio, ja kuvaus G {1, 2,..., d}, A dlog g A = a, kun A = g a ja a {1, 2,..., d}, on g-kantainen diskreetti logaritmi. Eräs varsin tärkeä ryhmä saadaan
ns. elliptisistä käyristä, kun ne varustetaan näihin käyriin liittyvällä yhteenlaskulla. Katso [1, 12.2], [8, luku VI], [9, luku 6] tai [16]. Jos ryhmäksi valitaan additiivinen ryhmä (Z n, +), jolla on virittäjä g = [1] n, on diskreetti eksponenttifunktio kuvaus Z Z n, a a [1] n = [a] n. Alkion A Z n diskreetti logaritmi on a {1, 2,..., n}, jolle A = a [1] n. Ryhmän (Z n, +) muut virittäjät ovat g = [c] n, missä syt(c, n) = 1. Tälle kanta-alkiolle alkion A Z n diskreetin logaritmin määrääminen palautuu Eukleideen algoritmiin: pitää määrätä a {1, 2,..., n}, jolle A = a [c] n = [a] n [c] n, t.s. [a] n = [c] 1 n A. Se, että diskreetilla eksponenttifunktiolla ja diskreetillä logaritmifunktiolla on merkitystä salausmenetelmissä, perustuu siihen, että kunnan Z p tapauksessa diskreetin eksponenttifunktion laskeminen on helppoa (muista toistettu neliöinti), mutta diskreetin logaritmin määräämiseen ei tunneta nopeita menetelmiä. 5.5. Diffien ja Hellmanin avaintenvaihto. Kun Liisa ja Pentti haluavat sopia yhteisestä salausavaimesta, he voivat menetellä seuraavasti: Aluksi valitaan (suuri) alkuluku p ja kunnan Z p primitiivinen alkio γ := [g] p. Luku p ja alkio γ ovat julkisia suureita. Luvulta g voidaan olettaa, että 2 g p 2. Muistettekoon, että primitiiviselle alkiolle γ on voimassa {γ k k {0, 1,..., p 2}} = Z p = Z p \ {0}. Liisa valitsee satunnaisesti luvun a {0, 1,..., p 2} ja laskee A := γ a. Liisa pitää luvun a salaisena avaimenaan ja lähettää Pentille alkion A. Pentti valitsee satunnaisesti luvun b {0, 1,..., p 2} ja laskee B := γ b. Pentti pitää luvun b salaisena avaimenaan ja lähettää Liisalle alkion B. Liisa ja Pentti pystyvät nyt määräämään yhteisen salausavaimen: Liisa pystyy laskemaan B a = (γ b ) a = γ a b. Vastaavasti Pentti voi laskea A b = (γ a ) b = γ a b. Yhteinen salausavain on siis K = γ a b. On selvää, että Erkki pystyy saamaan selville Liisan ja Pentin yhteisen salausavaimen K, jos Erkki pystyy ratkaisemaan ns. diskreettilogaritmiongelman: Kun on annettuna kunnan Z p primitiivinen alkio γ ja C Z p, on määrättävä c {0, 1,..., p 2} siten, että γ c = C. Diskreettilogaritmiongelman ratkaiseminen ei ole välttämätöntä sille, että Erkki saisi selville Liisan ja Pentin yhteisen salausavaimen. Riittää, että Erkki pystyy ratkaisemaan Diffien ja Hellmanin ongelman: Kun on annettuna kunnan Z p primitiivinen alkio γ sekä alkiot A = γ a ja B = γ b, on määrättävä K = γ a b suureiden γ, A ja B avulla. On helppo todeta, että jos Erkki pystyy ratkaisemaan diskreettilogaritmiongelman, pystyy hän ratkaisemaan Diffien ja Hellmanin ongelman. Ei kuitenkaan tiedetä, voidaanko Diffien ja Hellmanin ongelma ratkaista muuten kuin ratkaisemalla diskreettilogaritmiongelma, t.s. laskemalla diskreettejä logaritmeja. 43
5.6. ElGamalin salain. W. Diffien ja E. M. Hellmanin avaintenvaihtomenetelmä on (kirjoittajan käsityksen mukaan) peräisin vuodelta 1976 ja on ensimmäinen julkisavaimen vaihtoon esitetty menetelmä. Siihen läheisesti liittyvä T. ElGamalin salausmenetelmä on vuodelta 1985. ElGamalin menetelmän hyvänä puolena on mm. se, että se soveltuu yhtä hyvin elliptisten käyrien avulla tapahtuvaan salaukseen kuin tässä esiteltävään kunnan Z p tilanteeseen. ElGamalin menetelmässä Liisa valitsee satunnaisesti luvun a {0, 1,..., p 2} ja laskee A := γ a. Liisan julkisavain on pari (γ, A) ja salainen avain luku a. Selväkielisten ja salattujen viestien joukko on Z p = {0, 1,..., p 1} (tässä [x] p Z p ja x Z samaistetaan). Kun Pentti haluaa lähettää Liisalle viestin m Z p, hän valitsee satunnaisesti luvun b {0, 1,..., p 2} ja laskee B := γ b. Penti salaa viestin m laskemalla c := A b m. Pentti lähettää Liisalle parin (B, c). Liisa avaa vastaanottamansa viestin (B, c) laskemalla m := (B a ) 1 c. Tässä esiintyvän käänteisalkion laskemiseen sijasta Liisa voi laskea m = B p 1 a c. Nimittäin B p 1 = (γ b ) p 1 = (γ p 1 ) b = 1 b = 1, joten B p 1 a = B p 1 B a = B a. Liisan laskema suure m alkuperäinen viesti m, sillä m = (B a ) 1 c = (γ b ) a A b m = (γ a ) b (γ a ) b m = m. Huomautus 5.10. Vaikka Diffien ja Hellmanin avaintenvaihtomenetelmä tuleekin tässä yhteydessä esiin lähinnä ElGamalin salausmenetelmän apuvälineenä, voidaan sitä käyttää yleisemminkin. Diffien ja Hellmanin avaintenvaihto mahdollistaa yhteisen salausavaimen K määräämisen. Kun avain K Z p tulkitaan bittijonoksi (b 1,..., b k ) Z k 2 (tietokoneelle se on valmiiksi sitä), voidaan bittijono (m 1,..., m k ) Z k 2 salata yksinkertaisesti komponenteittaisella Z 2 -yhteenlaskulla, (m 1,..., m k ) (m 1,..., m k ) (b 1,..., b k ) = (m 1 + b 1,..., m k + b k ). Tämän menetelmän etuihin kuuluu laskennallinen tehokkuus; käytetty komponenteittainen Z 2 -yhteenlasku (tietokoneelle bittikohtainen XOR), on tietokoneelle lähes ilmainen laskutoimistus. 44