135
MATEMAATTINEN KRYPTOLOGIA Keijo Ruohonen 2012

MATEMAATTINEN KRYPTOLOGIA - TUNImath.tut.fi/~ruohonen/MK.pdf · 2018-11-16 · 101 13.4 Syntymäpäivähyökkäys allekirjoitusta vastaan 102 XIV SALAISEN TIEDON SIIRTO 102 14.1 Arpominen

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

MATEMAATTINEN KRYPTOLOGIA

Keijo Ruohonen

2012

Sisältö

1 I JOHDANTO

3 II LUKUTEORIA: OSA 13 2.1Jaollisuus, tekijät, alkuluvut5 2.2Kokonaisluvun esitys eri kannoissa6 2.3Suurin yhteinen tekijä ja pienin yhteinen jaettava10 2.4Kongruenssilaskenta eli modulaarilaskenta12 2.5Jäännösluokkarenkaat ja alkukunnat13 2.6Suurten kokonaislukujen algoritmeja13 – Yhteen- ja vähennyslasku13 – Kertolasku15 – Jakolasku17 – Potenssiin korotus18 – Kokonaisjuuri20 – Satunnaisluvun generointi

23 III JOITAIN KLASSISIA KRYPTOSYSTEEMEJÄKRYPTANALYYSEINEEN

23 3.1AFFINE. CAESAR24 3.2HILL. PERMUTATION. AFFINE-HILL. VIGENÈRE24 3.3ONE-TIME-PAD25 3.4Kryptanalyysi

27 IV ALGEBRA: RENKAAT JA KUNNAT27 4.1Renkaat ja kunnat28 4.2Polynomirenkaat32 4.3Äärelliset kunnat

34 V AES34 5.1Yleistä34 5.2RIJNDAEL35 5.2.1Kierrokset36 5.2.2Tavun muuntaminen (SubBytes)37 5.2.3Rivinsiirto (ShiftRows)37 5.2.4Sarakkeiden sekoitus (MixColumns)38 5.2.5Kierrosavaimen lisäys (AddRoundKey)38 5.2.6Avaimen laajentaminen39 5.2.7Dekryptauksen muunnelma40 5.3RIJNDAELin kryptanalyysiä41 5.4AESin toimintamoodeja

i

ii

42 VI JULKISEN AVAIMEN KRYPTAUS42 6.1Algoritmien vaativuusteoriaa44 6.2Julkisen avaimen kryptosysteemi46 6.3Reppusysteemin nousu ja tuho47 6.4Julkisen avaimen kryptaukseen sopivia tehtäviä

48 VII LUKUTEORIA: OSA 248 7.1Eulerin funktio ja Eulerin lause49 7.2Kertaluku ja diskreetti logaritmi52 7.3Kiinalainen jäännöslause53 7.4Alkulukujen testaus ja generointi58 7.5Lukujen tekijöihinjako59 7.6Modulaarinen neliöjuuri62 7.7Vahvat satunnaisluvut63 7.8Hilat. LLL-algoritmi

65 VIII RSA65 8.1RSAn määrittely66 8.2Hyökkäyksiä ja puolustuksia69 8.3Kryptanalyysi ja tekijöihinjako70 8.4Osittaisen tiedon saaminen viestin biteistä72 8.5Hyökkäys LLL-algoritmilla

74 IX ALGEBRA: RYHMÄT74 9.1Ryhmät77 9.2Diskreetti logaritmi78 9.3Elliptiset käyrät

85 X ELGAMAL. DIFFIE–HELLMAN85 10.1Elgamalin kryptosysteemi86 10.2Diffie–Hellman-avainjakosysteemi87 10.3Elliptisiin käyriin perustuvat kryptosysteemit88 10.4XTR

89 XI NTRU89 11.1Määrittely90 11.1Kryptaus ja dekryptaus91 11.3Systeemin pystytys92 11.4Hyökkäys LLL-algoritmilla

93 XII TIIVISTEFUNKTIOT JA TIIVISTEET93 12.1Määritelmiä95 12.2Syntymäpäivähyökkäys97 12.3Chaum–van Heijst–Pfitzmann -tiiviste

iii

99 XIII ALLEKIRJOITUS99 13.1Allekirjoitussysteemi100 13.2RSA-allekirjoitus100 13.3Elgamalin allekirjoitus101 13.4Syntymäpäivähyökkäys allekirjoitusta vastaan

102 XIV SALAISEN TIEDON SIIRTO102 14.1Arpominen104 14.2Salaisuuksien jakaminen105 14.3Tietymätön tiedonsiirto106 14.4Nollatietotodistukset

110 XV KVANTTIKRYPTOLOGIA110 15.1Kvanttibitti111 15.2Kvanttirekisterit ja kvanttialgoritmit113 15.3Shorin algoritmit115 15.4Avainjako kvanttimenetelmällä

119 Liite: DES119 Liite.1 Yleistä119 Liite.2 DESin määrittely122 Liite.3 DESin kryptanalyysiä

124 Kirjallisuus

127 Hakemisto

Esipuhe

Tämä moniste on tarkoitettu TTY:n kurssin ”MAT-52600 Matemaattinen kryptologia” perus-materiaaliksi. Monisteessa käydään läpi tärkeimmät nykyisen tiedonsalauksen tarvitsemat ma-temaattiset taustat sekä esitellään niiden soveltamista kryptauksessa sekä erilaisissa protokollis-sa.

Matematiikan ja kryptologian liitto on vanha, mutta tuli vahvemmin esille oikeastaan vas-ta toisen maailmansodan tehokkaiden kryptausmenetelmienja niiden murtamisen yhteydessä,sitten kun nämä tulivat julkisiksi. Asian yleinenkin kiinnostavuus ilmenee vaikkapa siitä kirjoi-tettujen suurelle yleisölle tarkoitettujen (osin) fiktiivisten kirjojen runsaudesta.1

Kokonaan uuden vauhdin koko ala sai 1970-luvulla, jolloin otettiin käyttöön täysin avoin,nopea ja tehokas tietokoneille tarkoitettu kryptausmenetelmä DES sekä esiteltiin vallankumouk-sellinen julkisen avaimen kryptauksen idea.2 Sen jälkeen kryptologian sekä myös sen tarvitse-man matematiikan—lähinnä eräiden lukuteorian ja algebranalojen—kehitys on ollut tavatto-man nopeaa. Voidaankin sanoa, että lukuteorian ja algebranviimeaikainen suosio johtuu ni-menomaan kryptologiasta. Usein tähän liitetään myös teoreettiseen tietojenkäsittelytieteeseenkuuluva laskennallisen vaativuuden teoria, mutta totuuden nimessä pitänee todeta, ettei sillä oleollut kryptologiassa kovinkaan suurta merkitystä. Otollisia kryptauksessa käyttökelpoisia mate-

1Esimerkkinä vaikkapa Neal Stephensonin mainioCryptonomicon.2Steven Levyn kirjaCrypto. Secrecy and Privacy in the New Code War antaa hieman romantisoidun kuvauksen

näistä julkisen avaimen kryptauksen alkuajoista.

iv

maattisia probleemoja kun ovat sellaiset, joita huippumatemaatikot ovat tutkineet jo niin kauan,että vain todella vaikeasti löydettävät teorian tulokset ovat avoinna. Kryptauksen murtaminenedellyttää silloin myös huomattavaa teoreettista läpimurtoa. Tällaisia probleemoja löytyy run-saasti nimenomaan lukuteorian ja diskreetin algebran aloilta.

Lukuteorian ja algebran tulokset ja algoritmit esitetään tässä monisteessa omissa luvuissaan,useassa osassa. Keskeistä on lukuteorian ja algebrallisten struktuurien probleemojen lajittelulaskennallisesti ”helppoihin” ja ”vaikeisiin”. Edellisiä tarvitaan kryptauksessa ja dekryptauk-sessa sekä myös kryptosysteemien pystytyksessä, jälkimmäiset taas takaavat kryptosysteeminvarmuuden. Myös aloitteleva kvanttikryptaus esitellään lyhyesti taustoineen.

Klassisia kryptosysteemejä—joihin myös DES ja myöhempi AES on tyypiltään luettava—esitellään monisteessa vain muutamia, lisätietoa niistä löytyy vaikkapa viitteistä BAUER, MOL-LIN ja SALOMAA , ja pääpaino on moderneissa julkisen avaimen menetelmissä. Tämä ei suin-kaan ole osoitus siitä, että niillä ei olisi käyttöä. Vaikkavanhojen klassisten menetelmien mer-kitys on kadonnut nopeasti3, uudempia klassistyyppisiä menetelmiä käytetään paljon ja niillä onhyvin tärkeä rooli nopeassa massakryptauksessa. Monisteessa jätetään vähälle huomiolle myösmonissa sovelluksissa niin tärkeä vuokryptaus. Yhden kurssin puitteissa aika on rajallinen. Ko-konaan oma lukunsa on vielä kryptosysteemien oikea implementointi ja käyttö, johon tällai-sessa matemaattisessa kurssissa ei voi kovinkaan paljon puuttua. Hyväkin kryptosysteemi kunvoidaan helposti tehdä tehottomaksi huonolla implementoinnilla ja huolettomalla käytöllä.4

Keijo Ruohonen

3Esimerkkinä mainittakoon vaikkapa se, että Yhdysvaltain maavoimien kenttämanuaali FM 34-40-2:BasicCryptanalysis on nykyään julkisesti saatavana verkossa. Viite BAUER sisältää myös aikaisemmin salaiseksi luoki-teltua materiaalia.

4Erinomainen tähän liittyvä teos on Bruce SchneierinSecrets and Lies. Digital Security in a Networked World.

Luku 1

JOHDANTO

Viestin kryptauksellatarkoitetaan sen salaamista siten, että satunnainen lukija tai salakuunteli-ja ei saa selville mitään viestin sisällöstä eli hän ei pystymurtamaankryptausta. Alkuperäis-tä selväkielistä viestiä kutsutaanselvätekstiksija kryptattua taaskryptotekstiksi.Kryptauksessatarvitaan ns.avain,ts. eräänlainen yleensä varsin mutkikas parametri, jolla kryptausta voidaanmuuttaa. Jos kryptausmenettely pysyy pitkään tarkalleen samana, lisääntyvät murtomahdolli-suudet käytännössä tuntuvasti. Eri käyttäjät tarvitsevatluonnollisesti vielä omat avaimensa.

Viestin vastaanottajadekryptaaviestin, mitä varten hän tarvitsee oman avaimensa. Sala-kuuntelijalle sekä kryptausavain että dekryptausavain ovat arvokkaita, edellistä käyttäen hänpystyy lähettämään kryptattuja valeviestejä, jälkimmäisellä taas purkamaan eli dekryptaamaanviestit. Symmetrisissä kryptosysteemeissä avaimet ovat lisäksi usein samat.

Kryptausmenettely voi kryptata symbolivirtaa jatkuvasti(vuokryptaus) tai lohkoihin jaet-tuna (lohkokryptaus). Lohkokryptauksessa lohkot voivat joissain tapauksissaolla eripituisia,kuitenkaan tiettyä lohkon maksimipituutta ei saa ylittää.Yleensä kuitenkin lohkot ovat saman-pituisia. Jatkossa tarkastellaan vain lohkokryptausta. Tällöin riittää selvittää mielivaltaisen vies-tilohkon kryptaaminen/dekryptaaminen ja selvätekstinä voidaan pitää yhtä mielivaltaista viesti-lohkoa ja kryptotekstinä mielivaltaista viestilohkon kryptattua versiota.

Kryptausmenettely onsymmetrinen,jos kryptaus- ja dekryptausavaimet ovat samat tai aina-kin helposti saatavissa toinen toisistaan.Epäsymmetrisessäkryptauksessa kryptausavaimesta eivoi millään pienellä työmäärällä saada dekryptausavainta. Niinpä kryptausavain voidaan tällöinpitää jopa julkisena dekryptausavaimen pysyessä salaisena; tästä nimijulkisen avaimen kryp-taus,vastaavasti symmetristä kryptausta kutsutaansalaisen avaimen kryptaukseksi. Symmet-risessä kryptauksessa pulmana on avaimien välitys salassakaikille osapuolille, avaimia pitäävielä uusiakin aika ajoin.

Symmetrinen kryptaus käyttäen samaa avainta voidaan karakterisoida ns.kryptosysteeminäeli viisikkona(P,C,K,E,D), missä

• P on äärellinenviestiavaruus(selvätekstit).

• C on äärellinenkryptotekstiavaruus.

• K on äärellinenavainavaruus.

• kutakin avaintak ∈ K kohti on kryptausfunktioek ∈ E ja dekryptausfunktiodk ∈ D.E on mahdollistenkryptausfunktioiden avaruusjaD mahdollistendekryptausfunktioidenavaruus.

• jokaiselle viestille (lohkolle)w ja avaimellek ondk(ek(w)) = w.

1

LUKU 1. JOHDANTO 2

Ilmeisesti kryptausfunktion pitää ollainjektiivinen,ts. se ei kryptaa kahta eri selvätekstiä sa-maksi kryptotekstiksi. Kryptauksessa voi kuitenkin olla mukana satunnaisuutta, jolloin kryp-tausfunktio voi eri kerroilla kryptata saman selvätekstineri kryptotekstiksi, kyseessä ei siis täl-löin ole varsinaisesti matemaattinen funktio. Injektiivisyydestäkin voidaan toisinaan tinkiä, joskryptotekstiä vastaavia selvätekstejä on rajallinen määrä ja niistä löytyy se oikea pienellä vai-valla.

l het- t j

selv - teksti

ekkrypto- teksti

kana- va

vastaan- ottaja

salakuun- telija

avain- jako k

krypto- teksti

selv - teksti

avain- jako

dk

Kutakuinkin kaikki laajemmin käytetyt kryptausmenetelmät perustuvat lukuteorian tai al-gebran (ryhmäteoria, äärelliset kunnat, kommutatiivinenalgebra) tuloksiin. Näihin perehdytäänsitä mukaa kuin ne tulevat esille, tarvittavassa määrin.

Luku 2

LUKUTEORIA. OSA 1

”So in order to remove the contingent and subjective elements fromcryptography there have been concerted efforts in recent years to

transform the field into a branch of mathematics, or at least abranchof the exact sciences. In my view, this hope is misguided, because in

its essence cryptography is as much an art as a science.”

(N. KOBLITZ , 2010)

2.1 Jaollisuus, tekijät, alkuluvut

Tietyt lukuteorian1 käsitteet ja tulokset tulevat hyvin usein esille kryptologiassa, vaikka menet-tely sinänsä ei liittyisikään lukuteoriaan. Kaikkien kokonaislukujen joukkoa merkitäänZ:lla.Ei-negatiivisten kokonaislukujen eli ns.luonnollisten lukujenjoukkoa{0, 1, 2, . . .} merkitäänN:llä.

Kokonaislukujen yhteen- ja kertolasku ovat tuttuja vaihdannaisia ja liitännäisiä laskuope-raatioita, joiden identiteettialkiot ovat0 ja 1. Muista myös liitäntälakix(y + z) = xy + xzsekä vastaluvun ja vähennyslaskun määrittelyt−x = (−1)x ja x − y = x+ (−1)y. Kokonais-lukujen jakolaskutarkoittaa seuraavanlaista operaatiota: Jaettaessa kokonaislukux (jaettava)kokonaisluvullay 6= 0 (jakaja) x saatetaan muotoon

x = qy + r,

missä kokonaislukur on jakojäännös,joka toteuttaa ehdon0 ≤ r < |y|. Kokonaislukuq onosamäärä.Lisäämälläx:ään toistuvasti−y:tä taiy:tä nähdään, ettäx on mahdollista kirjoittaako. muotoon. Jos voidaan kirjoittaa

x = qy,

missäq on kokonaisluku, sanotaan, ettäx on jaollineny:llä tai ettäy jakaax:n tai ettäy onx:ntekijä, merkitääny | x. Kokonaisluvunx ns.triviaalit tekijät ovat±1 ja±x. Mahdolliset muuttekijät ovatei-triviaaleja.

Seuraavat jaollisuuden ominaisuudet ovat melko ilmeisiä:

(1) 0 on jaollinen millä tahansa kokonaisluvulla, mutta jakaa vain itsensä.

(2) 1 ja−1 jakavat kaikki kokonaisluvut, mutta ovat jaollisia vain itsellään ja toinen toisillaan.

(3) Josy | x ja x 6= 0, niin |y| ≤ |x|.

(4) Josx | y ja y | z, niin myösx | z (ts. jaollisuus on transitiivinen).

(5) Josx | y ja x | z, niin myösx | y ± z.

1Lukuteoriaon nimenomaan kokonaislukujen teoriaa. Tosin lukuteoriasta on eri suuntiin laajenevia versioi-ta. Mukaan voidaan ottaa algebralliset luvut—eli kokonaiskertoimisten polynomien juuret— jolloin päästäänal-gebralliseen lukuteoriaan,jolla on muuten paljonkin käyttöä kryptologiassa, ks. esimerkiksi KOBLITZ. Toisaaltalukuteoriaa voidaan tutkia käyttämällä muita matematiikan formalismeja. Esimerkiksianalyyttinen lukuteoriatut-kii kokonaislukuja käyttäen matemaattisen analyysin menetelmiä—integraaleja, sarjoja jne.—ja silläkin on käyttöäkryptologiassa, ks. SHPARLINSKI.

3

LUKU 2. LUKUTEORIA. OSA 1 4

(6) Josx | y ja z on kokonaisluku, niinx | yz.

Jakolaskun tulos on yksikäsitteinen. Jos nimittäin

x = q1y + r1 = q2y + r2,

missäq1, q2, r1, r2 ovat kokonaislukuja ja0 ≤ r1, r2 < |y|, niin y jakaar1 − r2:n. Koska|r1 − r2| < |y|, tästä seuraa ettär1 = r2 ja edelleen ettäq1 = q2.

Kokonaislukua, jolla on vain triviaalit tekijät, kutsutaan jaottomaksi.Jaoton kokonaislukuon alkuluku2, jos se on≥ 2. Ensimmäiset alkuluvut ovat

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, . . .

2 on ainoa parillinen alkuluku. Eräs perustehtävä on testataonko luonnollinen luku alkulukuvai ei. Kokonaisluku, joka on≥ 2 eikä ole alkuluku, onyhdistetty luku.

Lause 2.1.Jos kokonaislukux on itseisarvoltaan≥ 2, niin sillä on alkulukutekijä eli ns.alku-tekijä.

Todistus.Jos|x| ≥ 2, alkutekijäp löytyy seuraavalla algoritmilla:

1. Asetetaanz ← x.

2. Josz on jaoton, tulostetaanp = |z| ja lopetetaan.

3. Josz ei ole jaoton, etsitään sen ei-triviaali tekijäu. Asetetaanz ← u ja mennään kohtaan2.

Menettely pysähtyy, sillä kohdan 3. kautta mentäessä aina|z| pienenee ja on lopulta alkuluku,jolloin tullaan ulos kohdasta 2.

Seuraus.Alkulukuja on äärettömän monta.

Todistus.Ääretön jono alkulukuja voidaan saada aikaan seuraavalla jo muinaisten kreikkalais-ten tuntemalla menettelyllä (jonka ei kuitenkaan arvella tuottavan kaikkia alkulukuja):

1. AsetetaanP ← 2. TässäP on jonomuuttuja.

2. JosP = p1, . . . , pn, niin lasketaanx = p1 · · · pn + 1. Huomaa, ettei mikään jononPalkuluvuista jaax:ää (jakolaskun yksikäsitteisyys).

3. Lauseen 2.1 mukaisestix:llä on alkutekijäp, joka ei siis kuitenkaan ole mikään jononPalkuluvuista. Etsitään jokinp, asetetaanP ← P, p ja palataan kohtaan 2.

Alkulukuihin liittyviä perustehtäviä ovat mm. seuraavat:

(1) Laske suuruusjärjestyksessän:s alkuluku.

(2) Laske suuruusjärjestyksessän ensimmäistä alkulukua.

(3) Laske suurin (vast. pienin) alkuluku, joka on≤ x (vast.≥ x).

(4) Laske alkuluvut, jotka ovat≤ x.

2Alkulukujen joukkoa merkitään toisinaanP:llä.

LUKU 2. LUKUTEORIA. OSA 1 5

Lause 2.2.Kokonaislukux 6= 0 voidaan etumerkkiä vaille kirjoittaa alkulukujen tuloksi, ns.tekijöihinjako.Erityisesti sovitaan, että luku1 on ns. tyhjä tulo eli tulo, jossa ei ole tekijöitä.

Todistus.Seuraava menettely tuottaa jonon alkulukuja, joiden tulo on= ±x:

1. AsetetaanT ← NULL (tyhjä jono).

2. Josx = ±1, tulostetaanT ja lopetetaan. Muista, että tyhjä tulo on= 1.

3. Etsitään jokinx:n alkutekijäp (Lause 2.1), jolloinx = py. AsetetaanT ← T , p sekäx← y ja mennään kohtaan 2.

Menettely pysähtyy, koska aina kohdan 3. kautta mentäessä|x| pienenee ja on lopulta= 1,jolloin tullaan ulos kohdasta 2. Erityisesti tulostus on tyhjä jono, josx = ±1.

Myöhemmin todetaan vielä, että ko. tekijöihinjako on tekijöiden järjestystä lukuunottamattayksikäsitteinen, ks. Pykälä 2.3. Luonnollisesti eräs perustehtävä on kokonaisluvun tekijöihin-jaon etsiminen. Laskennallisesti tämä on varsin vaativaa,ks. Pykälä 7.5.

2.2 Kokonaisluvun esitys eri kannoissa

Tavallisin tapa esittää kokonaisluku on käyttää tuttuadesimaaliesitystäeli 10-kantaista esitystä.Myös2-kantainen elibinääriesityson usein esillä, samoin8-kantainenoktaaliesitysja 16-kan-tainenheksadesimaaliesitys.Yleisen kannan esityksen antaa

Lause 2.3.Josk ≥ 2, niin jokainen positiivinen kokonaislukux voidaan esittää yksikäsitteisestimuodossa

x = ankn + an−1k

n−1 + · · ·+ a1k + a0,

missä0 ≤ a0, a1, . . . , an ≤ k−1 ja an > 0. Kyseessä onx:n k-kantainen esitys,k onkantalukueli radix ja n+ 1 on esityksenpituus.

Todistus.Esityksen eli jononan, an−1, . . . , a0 antaa seuraava algoritmi:

1. AsetetaanK ← NULL (tyhjä jono).

2. Jaetaanx kantaluvullak:

x = qk + r (osamääräq, jakojäännösr).

AsetetaanK ← r,K ja x← q.

3. Josx = 0, tulostetaanK ja lopetetaan. Muussa tapauksessa mennään kohtaan 2.

Koska kohdassa 2. ainax pienenee, menettely pysähtyy lopulta kohtaan 3.k-kantainen esitys on yksikäsitteinen. Jos nimittäin

x = ankn + an−1k

n−1 + · · ·+ a1k + a0 = bmkm + bm−1k

m−1 + · · ·+ b1k + b0,

missä0 ≤ a0, a1, . . . , an, b0, b1, . . . , bm ≤ k − 1 ja an, bm > 0 ja n ≥ m, niin ensinnäkinvoidaan päätellä, ettän = m eli että esityksen pituus on yksikäsitteinen. Jos olisin > m, niinolisi myös

LUKU 2. LUKUTEORIA. OSA 1 6

bmkm + bm−1k

m−1 + · · ·+ b1k + b0 ≤ (k − 1)km + (k − 1)km−1 + · · ·+ (k − 1)k + k − 1

= km+1 − 1

< km+1 ≤ kn ≤ ankn + an−1k

n−1 + · · ·+ a1k + a0,

mikä on ristiriita. Siispän = m. Samalla tavoin voidaan todeta, ettäan = bn. Jos nimittäinvaikkapaan > bn, niin

bnkn + bn−1k

n−1 + · · ·+ b1k + b0 ≤ (an − 1)kn + (k − 1)kn−1 + · · ·+ (k − 1)k + k − 1

= ankn − 1

< ankn + an−1k

n−1 + · · ·+ a1k + a0,

mikä on taas ristiriita. Edelleen voidaan samalla tavoin näyttää, ettäan−1 = bn−1 jne.

Luvun0 esitys on periaatteessa tyhjä jono missä tahansa kannassa.Koska tämä ei tietenkäänkäy, sovitaan, että0:n esitys on0. Konversio eri kantaesitysten välillä, ns.kantamuunnoseliradix-muunnos,on tietysti kokonaislukujen perustehtäviä.

Lause 2.4.Positiivisen kokonaisluvunx k-kantaisen esityksen pituus on

⌊logk x⌋ + 1 = ⌈logk(x+ 1)⌉,

missälogk onk-kantainen logaritmi3.

Todistus.Josx:n k-kantainen esitys onx = ankn + an−1k

n−1 + · · ·+ a1k+ a0, niin sen pituuson s = n+ 1. Ilmeisestix ≥ kn ja toisaalta

x ≤ (k − 1)kn + (k − 1)kn−1 + · · ·+ (k − 1)k + k − 1 = kn+1 − 1 < kn+1.

Koska siisks−1 ≤ x < ks, niin s− 1 ≤ logk x < s eli

s = ⌊logk x⌋ + 1.

Toisaalta myösks−1 < x+ 1 ≤ ks, jotens− 1 < logk(x+ 1) ≤ s eli

s = ⌈logk(x+ 1)⌉.

2.3 Suurin yhteinen tekijä ja pienin yhteinen jaettava

Kokonaislukujenx ja y suurin yhteinen tekijä(s.y.t.) on suurin kokonaislukud, joka jakaa mo-lemmat luvut, merkitään

d = syt(x, y).

S.y.t. on olemassa, jos ainakin toinen luvuistax ja y on 6= 0. Huomaa, että s.y.t. on positiivinen.(Usein määritellään kuitenkinsyt(0, 0) = 0.) Jossyt(x, y) = 1, sanotaan että luvuillax ja y eiole yhteisiä tekijöitätai että ne ovatkeskenään jaottomia.

3Muistathan, että logaritmien kannan vaihto sujuu kaavallalogk x = lnx/ ln k. Tässä⌊x⌋ tarkoittaax:n ns.pohjaa,ts. suurinta kokonaislukua, joka on≤ x. Vastaavasti⌈x⌉ tarkoittaax:n ns.kattoaeli pienintä kokonaislu-kua, joka on≥ x.

LUKU 2. LUKUTEORIA. OSA 1 7

Lause 2.5. (Bézout’n lause)Kokonaislukujenx ja y, joista ainakin toinen on6= 0, s.y.t.dvoidaan kirjoittaa muotoon

d = c1x+ c2y (ns.Bézout’n muoto),

missäc1 ja c2 ovat kokonaislukuja, ns.Bézout’n kertoimet. Lisäksi, josx, y 6= 0, voidaanolettaa, että|c1| ≤ |y| ja |c2| ≤ |x|.

Todistus.Bézout’n muodon samoin kuin s.y.t.:nkin antaa seuraava ns.(Yleistetty) Eukleideenalgoritmi. Tässä oletetaan, että0 ≤ x ≤ y, mikä ilmeisesti ei mitenkään rajoita tilannetta.MerkitäänSYT(x, y) = (d, c1, c2).

(Yleistetty) Eukleideen algoritmi:

1. Josx = 0, niin tulostetaanSYT(x, y) = (y, 0, 1) ja lopetetaan.

2. Josx > 0, niin jaetaany ensinx:llä: y = qx+ r, missä0 ≤ r < x. EtsitäänSYT(r, x) =(d, e1, e2). Silloin

d = e1r + e2x = e1(y − qx) + e2x = (e2 − e1q)x+ e1y.

TulostetaanSYT(x, y) = (d, e2 − e1q, e1) ja lopetetaan.

Koskar = y − qx, syt(x, y) jakaar:n ja näin ollensyt(x, y) ≤ syt(x, r). Vastaavastisyt(x, r)jakaay:n ja siissyt(x, r) ≤ syt(x, y), jotensyt(x, r) = syt(x, y). Kohta 2. tuottaa siis oikeantuloksen. Rekursio on päättyvä, koskamin(r, x) < min(x, y), ts. aina kutsuttaessaSYT ko.minimiarvo pienenee ja on lopulta= 0.

Josx, y 6= 0, niin ilmeisesti juuri ennen kuin rekursiossa tullaan kohtaan 1. ony = qxja r = 0 ja d = x, jolloin c1 = 1 ≤ y ja c2 = 0 ≤ x. Toisaalta, aina kun kohdassa 2.y = qx + r ja d = e1r + e2x, missä|e1| ≤ x ja |e2| ≤ r, niin e1 ja e2 ovat erimerkkiset ja|e2− e1q| = |e2|+ |e1|q ≤ r+ xq = y. Uudetkin kertoimetc1 = e2− e2q ja c2 = e1 toteuttavatsiis esitetyn ehdon.

Suoraan Bézout’n lauseesta näkee seuraavan tuloksen:

Seuraus.Jos kokonaislukuz jakaa kokonaisluvutx ja y, joista ainakin toinen on6= 0, niin sejakaa myössyt(x, y):n.

Huomautus. Tästä johtuensyt(x, y) määritelläänkin usein siten, että se onx:n ja y:n yhteinentekijä, joka on jaollinen kaikilla näiden lukujen yhteisillä tekijöillä. Tämä johtaa samaan s.y.t.:nkäsitteeseen. Vm. määritelmä soveltuu kuitenkin myös tilanteeseenx = y = 0 ja antaa em.kaavansyt(0, 0) = 0.

Toinen seuraus Bézout’n lauseesta on lukujen tekijöihinjaon yksikäsitteisyys, ks. Lause 2.2.

Lause 2.6.Kokonaisluvunx 6= 0 tekijöihinjako on yksikäsitteinen.

Todistus.Asetetaan vastaoletus: On kokonaislukux, jolla on (ainakin) kaksi eri tekijöihinjakoa.Voidaan olettaa, ettäx on positiivinen ja pienin sellainen positiivinen kokonaisluku, jolla onvastaoletuksessa mainittu ominaisuus. Ilmeisestix ≥ 2, sillä ykkösen ainoa tekijöihinjako ontyhjä tulo. Nytx voidaan oletettuja eri tekijöihinjakoja vastaten kirjoittaa tulomuotoihin

x = pi11 pi22 · · · p

inn = qj11 qj22 · · · q

jmm ,

LUKU 2. LUKUTEORIA. OSA 1 8

missäp1, . . . , pn ovat eri alkulukuja ja samoinq1, . . . , qm ovat eri alkulukuja jai1, . . . , in sekäj1, . . . , jm ovat positiivisia kokonaislukuja. Itse asiassa edelleen tiedetään, että silloin myösalkuluvut p1, . . . , pn eroavat alkuluvuistaq1, . . . , qm. Jos nimittäin esimerkiksip1 = q1, niinkokonaisluvullax/p1 olisi myös kaksi eri tekijöihinjakoa ja se on pienempi kuinx. Ilmeisestisyt(p1, q1) = 1, joten Bézout’n muodossa

1 = c1p1 + c2q1.

Mutta tästä seuraa, että

qj1−11 qj22 · · · q

jmm = (c1p1 + c2q1)q

j1−11 qj22 · · · q

jmm = c1p1q

j1−11 qj22 · · · q

jmm + c2x,

josta havaitaan, ettäp1 jakaa tulonqj1−11 qj22 · · · q

jmm , ts.

qj1−11 qj22 · · · q

jmm = p1z.

Koskaz:lla ja qj1−11 qj22 · · · q

jmm :llä on yksikäsitteiset tekijöihinjaot (ne ovat pienempiäkuin x),

seuraa tästä, ettäp1 on jokin alkuluvuistaq1, . . . , qm, mikä on ristiriita. Vastaoletus on siis vääräja tekijöihinjako on yksikäsitteinen.

Esitettäessä rationaaliluku muodossax/y, on tapana ettäsyt(x, y) = 1, ts. luku onsupiste-tussa muodossa.Tämä on erityisen tärkeää suurilla luvuilla laskettaessa,jottax ja y eivät pää-sisi kasvamaan suuriksi. Supistettu muoto saadaan luonnollisesti jakamallax ja y syt(x, y):llä,joten pitkissä laskuissa s.y.t. joudutaan etsimään toistuvasti.

On tärkeää huomata, että Bézout’n lauseessa mainittu kertoimia koskevat rajat|c1| ≤ |y|ja |c2| ≤ |x| ovat voimassa eo. Eukleideen algoritmin joka vaiheessa. Välitulokset eivät näinkasva suuriksi. Toisaalta Eukleideen algoritmi ei ota kovin monta askeltakaan:

Lause 2.7.Laskettaessasyt(x, y), missä0 ≤ x ≤ y, Eukleideen algoritmi tarvitsee enintään⌊2 log2 y + 1⌋ jakolaskua.

Todistus.Asia on selvä, josx = 0 (ei jakolaskuja) taix = y (yksi jakolasku), joten voidaansiirtyä tapaukseen0 < x < y. Todistus perustuu seuraavaan jakolaskua koskevaan havaintoon:Aina jaettaessa kokonaisluvuta ja b, missä0 < a < b, muodossab = qa + r (osamääräq,jakojäännösr), on

b = qa+ r ≥ a+ r > 2r.

Laskettaessasyt(x, y):tä Eukleideen algoritmin jakoketjussa

y = q1x+ r1 (0 < r1 < x),

x = q2r1 + r2 (0 < r2 < r1),

r1 = q3r2 + r3 (0 < r3 < r2),...

rl−2 = qlrl−1 + rl (0 < rl < rl−1),

rl−1 = ql+1rl

on l + 1 jakolaskua. Josl = 2k + 1 on pariton, on mainitun havainnon mukaan

1 ≤ rl < 2−1rl−2 < 2−2rl−4 < · · · < 2−irl−2i < · · · < 2−kr1 < 2−k−1y = 2−l+1

2 y < 2−l2y,

ja josl = 2k on parillinen,

1 ≤ rl < 2−1rl−2 < 2−2rl−4 < · · · < 2−k+1r2 < 2−kx < 2−l2y.

Siisy > 2l2 eli (otetaan2-kantaiset logaritmit)2 log2 y > l, mistä tulos jo seuraakin.

LUKU 2. LUKUTEORIA. OSA 1 9

Eukleideen algoritmin soveltaminen ei näin ole kovin työlästä,⌊2 log2 y+1⌋ on verrannollineny:n binääriesityksen pituuteen (Lause 2.4). Tarkemmin Eukleideen algoritmin laskennallistavaativuutta käsittelee esimerkiksi KNUTH.

Useamman kuin kahden kokonaisluvunx1, x2, . . . , xN suurin yhteinen tekijä

d = syt(x1, x2, . . . , xN)

määritellään samoin kuin kahdenkin, eli se on suurin kokonaisluku, joka jakaa kaikki luvutx1, x2, . . . , xN . Jälleen vaaditaan, että ainakin yksi luvuista on6= 0, voidaan sopia, ettäxN 6= 0.Tällainen s.y.t. voidaan laskea soveltamallaN − 1 kertaa Eukleideen algoritmia, sillä

Lause 2.8. syt(x1, x2, . . . , xN ) = syt(x1, syt(x2, . . . , xN))

= syt(x1, syt(x2, syt(x3, . . . , syt(xN−1, xN) · · · )))

ja lisäksi s.y.t. voidaan kirjoittaa Bézout’n muodossa

syt(x1, x2, . . . , xN) = c1x1 + c2x2 + · · ·+ cNxN .

Todistus.Merkitään lyhyyden vuoksi

d = syt(x1, x2, . . . , xN) ja d′ = syt(x1, syt(x2, syt(x3, . . . , syt(xN−1, xN ) · · · ))).

Bézout’n lauseen nojallasyt(xN−1, xN) = e1xN−1 + e2xN

ja edelleen

syt(xN−2, syt(xN−1, xN )) = e3xN−2 + e4syt(xN−1, xN) = e3xN−2 + e4e1xN−1 + e4e2xN

jne., eli lopulta nähdään, että joillekin kokonaisluvuillec1, . . . , cN

d′ = c1x1 + c2x2 + · · ·+ cNxN .

Tästä seuraa, ettäd | d′ ja siisd ≤ d′. Toisaaltad′ jakaax1:n ja s.y.t.:n

syt(x2, syt(x3, . . . , syt(xN−1, xN) · · · )).

Viimemainittu s.y.t. jakaax2:n ja s.y.t.:nsyt(x3, . . . , syt(xN−1, xN) · · · ). Jne. Siispäd′ jakaakaikki luvut x1, x2, . . . , xN ja näin ollend′ ≤ d. Kaiken kaikkiaan päätellään, ettäd = d′.

Jos luvutx1, x2, . . . , xN ovat 6= 0 ja niiden tekijöihinjaot ovat

xi = ±pji11 pji22 · · · p

jiMM (i = 1, 2, . . . , N),

missä sovitaan, ettäjik = 0, mikäli alkulukupk ei olexi:n tekijä, niin ilmeisesti

syt(x1, x2, . . . , xN ) = pmin(j11,...,jN1)1 p

min(j12,...,jN2)2 · · · pmin(j1M ,...,jNM )

M .

Vaikeus tämän tuloksen käytössä on se, ettei tekijöihinjakoja yleisesti tunneta ja niiden etsimi-nen taas on työlästä.

Kokonaislukujenx1, x2, . . . , xN pienin yhteinen jaettava(p.y.j.) on pienin positiivinen ko-konaisluku, jonka kaikki luvutx1, x2, . . . , xN jakavat, merkitäänpyj(x1, x2, . . . , xN). Jotta p.y.j.olisi olemassa, pitää ollax1, x2, . . . , xN 6= 0. Ajatellen edellä olleita tekijöihinjakoja on ilmei-sesti

pyj(x1, x2, . . . , xN) = pmax(j11,...,jN1)1 p

max(j12,...,jN2)2 · · · pmax(j1M ,...,jNM )

M .

Myös p.y.j. saadaan rekursiivisesti Eukleideen algoritmilla ilman tietoa tekijöistä, sillä

LUKU 2. LUKUTEORIA. OSA 1 10

Lause 2.9. pyj(x1, x2, . . . , xN) = pyj(x1, pyj(x2, . . . , xN ))

= pyj(x1, pyj(x2, pyj(x3, . . . , pyj(xN−1, xN ) · · · )))

ja

pyj(x1, x2) =|x1x2|

syt(x1, x2).

Todistus.Lauseen ensimmäinen kaava seuraa tekijöihinjakokaavasta, sillä pk:n eksponenttipyj(x1, pyj(x2, . . . , xN)):ssä onmax(j1k,max(j2k, . . . , jNk)) ja toisaalta

max(j1k,max(j2k, . . . , jNk)) = max(j1k, j2k, . . . , jNk) (k = 1, 2, . . . ,M).

Samoin toinen kaava seuraa tekijöihinjakokaavasta, silläalkutekijänpk eksponenttix1x2:ssa onj1k + j2k ja toisaalta

max(j1k, j2k) = j1k + j2k −min(j1k, j2k).

Huomautus. Tekijöihinjakokaavasta näkee, että myös useamman luvun s.y.t. on se näiden lu-kujen (positiivinen) yhteinen tekijä, jonka kaikki muut yhteiset tekijät jakavat, ja tätä käytetäänusein määritelmänä. Vastaavasti näkee, että lukujen p.y.j. on se näiden lukujen (positiivinen)yhteinen jaettava, joka jakaa kaikki muut yhteiset jaettavat, ja tätäkin käytetään usein määri-telmänä. Näiden vaihtoehtoisten määritelmien nojalla kirjoitetaan useinsyt(0, 0, . . . , 0) = 0 jamyöspyj(0, x2, . . . , xn) = 0.

2.4 Kongruenssilaskenta eli modulaarilaskenta

Kongruenssilaskennanidea on, että lasketaan vain kokonaislukujen jakojäännöksillä käyttäen(yhtä tai useampaa) kiinteää jakajaa, ns.moduliam ≥ 1. Kongruenssilaskentaa kutsutaan useinmyösmodulaarilaskennaksi.

Sanotaan, että kokonaisluvutx ja y ovatkongruentit modulom, merkitään

x ≡ y mod m (ns.kongruenssi),

josx−y on jaollinenm:llä. Tämä luetaan myös ”x on kongruenttiy:n kanssa modulom” tai vain”x ony modulom”. Jos taasx−y ei ole jaollinenm:llä, sanotaan, ettäx jay ovatepäkongruentitmodulom ja merkitäänx 6≡ y mod m. Huomaa erityisesti, ettäx ≡ 0 mod m tarkalleensilloin, kunx on jaollinenm:llä, ja että kaikki luvut ovat keskenään kongruentteja modulo 1.

Kongruenssix ≡ y mod m sanoo, että jaettaessax ja y modulilla m saadaan sama (ja-ko)jäännös, ts.x ja y kuuluvat samaan (jako)jäännösluokkaanmodulom. Jokainen kokonaislu-ku kuuluu aina johonkin jäännösluokkaan modulom ja vain yhteen sellaiseen. Jäännösluokkiamodulom on yhtä paljon kuin eri jakojäännöksiä elim kpl.

Ilmeisesti ainax ≡ x mod m, ja jos x ≡ y mod m, niin myös y ≡ x mod m ja−x ≡ −y mod m. Edelleen, josx ≡ y mod m ja y ≡ z mod m, niin myösx ≡ z mod m,tällöin kirjoitetaan

x ≡ y ≡ z mod m.

Peruslaskutoimitusten osalta nähdään, että

Lause 2.10.(i) Josx ≡ y mod m ja u ≡ v mod m, niin x+ u ≡ y + v mod m.

(ii) Josc on kokonaisluku jax ≡ y mod m, niin cx ≡ cy mod m.

LUKU 2. LUKUTEORIA. OSA 1 11

(iii) Josx ≡ y mod m ja u ≡ v mod m, niin xu ≡ yv mod m.

(iv) Josx ≡ y mod m ja n on positiivinen kokonaisluku, niinxn ≡ yn mod m.

Todistus.(i) Josx− y = km ja u− v = lm, niin (x+ u)− (y + v) = (k + l)m.(ii) Josx− y = km, niin cx− cy = ckm.(iii) Tämä seuraa (ii):sta, silläxu ≡ yu ≡ yv mod m.(iv) Tämä seuraa (iii):sta.

Kongruensseilla voidaan siis laskea paljolti kuten yhtälöillä, jakolasku ja supistus puolittaineivät kuitenkaan yleisesti ole sallittuja (asiaan palataan kohta).

Jos ajatellaan jakojäännöksiä, voidaan laskea millä tahansa kokonaisluvuilla, joilla modulil-la jaettaessa on kyseiset jakojäännökset, ja tulokset ovatsamat, ts. edustajien valinnasta riippu-mattomat. Tietyt edustajajoukot, ns.jäännössysteemit,ovat kuitenkin usein esillä:

• positiivinen jäännössysteemi0, 1, . . . , m− 1 (ts. tavalliset jakojäännökset);

• symmetrinen jäännössysteemi−(m− 1)/2, . . . , 0, 1, . . . , (m− 1)/2 parittomallem:lle;

• symmetrinen jäännössysteemi−(m− 2)/2, . . . , 0, 1, . . . , m/2 parillisellem:lle;

• negatiivinen jäännössysteemi−(m− 1), . . . ,−1, 0.

Tavallisin on positiivinen jäännössysteemi. Yleisesti mitkä tahansam kokonaislukua, joista mit-kään eivät ole keskenään kongruentteja modulom, muodostavat jäännössysteemin modulom.Luvunx jäännöstä modulom nimenomaan positiivisessa jäännössysteemissä—eli jakojäännös-tä jaettaessax modulillam—merkitään jatkossa(x,mod m):llä.

Jakolasku eli supistus puolittain ei yleisesti ole sallittua kongruensseissa, vaan vain seuraa-vassa mielessä:

Lause 2.11.xu ≡ yu mod m on sama kuin kuinx ≡ y mod m/syt(u,m), eli kongruens-sista saa supistaa pois kokonaisluvun, mikäli samalla jakaa modulin sen ja supistettavan luvuns.y.t.:llä. (Huomaa erityisesti, että josm onu:n tekijä, niinm/syt(u,m) = 1.)

Todistus.Lähdetään ensin liikkeelle siitä, ettäxu ≡ yu mod m eli että (x − y)u = km.Merkitäänd = syt(u,m) ja u = du′ sekäm = dm′. Silloin ilmeisestisyt(u′, m′) = 1 jam′ = m/syt(u,m) ja vielä(x− y)u′ = km′. Bézout’n lauseen mukaan1 = c1u

′ + c2m′, josta

seuraa ettäx− y = c1u

′(x− y) + c2m′(x− y) = (c1k + c2(x− y))m′,

ts. ettäx ≡ y mod m/syt(u,m).Lähdetään sitten liikkeelle siitä, ettäx ≡ y mod m/d eli ettäx− y = km/d. Tästä seuraa,

että(x− y)d = km ja edelleen että(x− y)u = u′km. Siispäxu ≡ yu mod m.

Erityisesti kokonaisluvun, jolla ei ole yhteisiä tekijöitä modulin kanssa, saa supistaa poiskongruenssista moduliin koskematta.

Seuraus.Jossyt(x,m) = 1, niin luvuty + kx (k = 0, 1, . . . , m− 1) muodostavat jäännössys-teemin modulom, olipa y mikä tahansa kokonaisluku.

Todistus.Lukuja onm kpl. Josy+ ix ≡ y+ jx mod m, missä0 ≤ i, j ≤ m−1, niin ix ≡ jxmod m ja Lauseen 2.11 nojallai ≡ j mod m. Siisi− j = km, mutta koska0 ≤ i, j ≤ m−1,tämä on mahdollista vain kunk = 0 eli i = j. Luvut eivät siis ole kongruentteja keskenään.

LUKU 2. LUKUTEORIA. OSA 1 12

Samantapaisella tekniikalla nähdään välittömästi, että jos syt(x,m) = 1, niin x:llä on in-verssi modulom, ts. on sellainen kokonaislukuy, että

xy ≡ 1 mod m.

Tällöin kirjoitetaan myösx−1 ≡ y mod m tai 1/x ≡ y mod m.4 Tällainen inverssi saadaanEukleideen algoritmilla, sillä Bézout’n lauseen nojalla1 = c1x+c2m ja näinx−1 ≡ c1 mod m.Toisaalta, jossyt(x,m) 6= 1, ei x:llä voi olla inverssiä modulom, kuten helposti voi havaita.Huomaa vielä, että josx−1 ≡ y mod m, niin y−1 ≡ x mod m eli (x−1)−1 ≡ x mod m.Inverssit modulom (jos olemassa) tottelevat tavallisia potenssilaskusääntöjä. Esimerkiksi

(xy)−1 ≡ x−1y−1 mod m ja x−n ≡ (x−1)n ≡ (xn)−1 mod m (n = 1, 2 . . . ).

Sellaiset jäännössysteemin luvutx, joille syt(x,m) = 1, muodostavat ns.supistetun jään-nössysteemin.Vastaavia jäännösluokkia kutsutaanalkuluokiksimodulom. Helposti voidaantodeta, että josx ≡ y mod m, niin syt(x,m) = syt(y,m). Supistetuissa jäännössysteemeis-sä on näin aina yhtä monta lukua ja kahden supistetun jäännössysteemin luvut ovat jossainjärjestyksessä pareittain kongruentit modulom. Supistetun jäännössysteemin modulom lu-kujen lukumäärää kutsutaanEulerin (totientti)funktioksi,merkitäänφ(m). Se tarvitaan mm.RSA-kryptauksessa. Tavallisin on jälleen positiivisestajäännössysteemistä muodostettu supis-tettu jäännössysteemi. Huomaa erityisesti, että josp on alkuluku, niin1, 2, . . . , p−1 muodostaasupistetun jäännössysteemin modulop ja φ(p) = p− 1.

2.5 Jäännösluokkarenkaat ja alkukunnat

Kokonaisluvut jakautuvatm jäännösluokkaan sen mukaan minkä luvuni = 0, . . . , m− 1 kans-sa ne ovat kongruentteja modulom. Luokkaa, johon kokonaislukux kuuluu merkitäänx:lla.Huomaa, että silloinx = x+ km, olipak mikä tahansa kokonaisluku. Jäännösluokille voidaanmääritellä peruslaskutoimitukset ”edustajien välityksellä”, ts.

x± y = x± y , x · y = x · y ja xn = xn (n = 0, 1, . . . ).

Laskutoimituksen tulos ei riipu edustajan valinnasta, kuten on helppo todeta. Kokonaislukujenlaskujen ominaisuudet siirtyvät jäännösluokille:

(1) + ja · ovat liitännäiset sekä vaihdannaiset.

(2) Osittelulait pätevät.

(3) Jokaisella luokallaa on vastaluokka−a, ts. sellainen luokka−a, ettäa + (−a) = 0. Josa = x, niin tietysti−a = −x.

(5) 0 ja 1 ”käyttäytyvät” kuten pitää, ts.a+0 = a ja a ·1 = a. Lisäksi vielä0 6= 1, josm > 1.

4Tätä inverssiä ei saa sekoittaa rationaalilukuun1/x.

LUKU 2. LUKUTEORIA. OSA 1 13

Algebrallisesti jäännösluokat modulom muodostavat ns.renkaan,ks. Luku 4 ja kurssi Al-gebra 1 tai Symbolinen laskenta, ns.jäännösluokkarenkaan modulom, merkitäänZm. NäistäZ1 on harvinaisen mielenkiinnoton (eivätkä sitä kaikki pidä renkaanakaan).

Jossyt(x,m) = 1, niin jäännösluokallax, on myöskäänteisluokkax−1, jolle x · x−1 = 1.Luonnollisesti, josx−1 ≡ y mod m, niin x−1 = y. Jos taassyt(x,m) 6= 1, niin tällaista kään-teisluokkaa ei ole. Näin ollen kaikilla muilla jäännösluokilla kuin 0:lla on käänteisluokka tar-kalleen siinä tapauksessa, että modulim on alkuluku. Tällöin jäännösluokkarengasta kutsutaanalkukunnaksi.Alkukunnissa on näin ollen käytössä myös jakolasku, ts. kertominen käänteis-luokalla. Pienin ja usein esiintyvä alkukunta onbinäärikuntaZ2, jonka alkiot ovat bitit0 ja 1(kirjoitetaan useimmiten ilman yläviivoja:0 ja 1).

Jäännösluokkarenkaiden matriisien ja vektoreiden laskutoimitukset voidaan siirtää luonnol-lisella tavalla jäännösluokista muodostettujen vektorien ja matriisien laskutoimituksiksi. Käyt-töön tulevat näin peruskursseilta tutut matriisien yhteenlasku-, vähennyslasku-, kertomis- japotenssiinkorotusoperaatiot sekä transponointi. Samoinneliömatriisien determinantit noudatta-vat tuttuja laskusääntöjä. Aivan samoin kuin peruskursseilla todetaan se, että neliömatriisillaon käänteismatriisi, jos sen determinantilla (joka onZm:n jäännösluokka) on käänteisluokka.Huomaa, ettei riitä, että determinantti on6= 0, sillä Cramerin sääntöä käyttäen käänteismatriisiamuodostettaessa tarvitaan jakolasku determinantilla modulom. Alkukunnissa sen sijaan tietystiriittää, että determinantti on6= 0.

2.6 Suurten kokonaislukujen peruslaskutoimitukset

Moderneissa kryptosysteemeissä toiminta perustuu paljolti suurille kokonaisluvuille tehtävil-le laskutoimituksille. Niiden on oltava suoritettavissa nopeasti ja tehokkaasti. Algoritmien te-hokkuutta verrataan usein niihin tarvittavien perusaskelten lukumäärällä verrattuna syötelu-kujen maksimipituuteenN . Perusaskel voisi olla esimerkiksi numeraalien0, 1, . . . , 9 yhteen-,vähennys- tai kertolasku. Yleisin tällainen vertailunotaatio on ns.O-notaatio.Silloin O(f(N))tarkoittaa kollektiivisesti sellaista funktiotag(N), että jostain rajastaN ≥ N0 lähtien|g(N)| ≤Cf(N), missäC on jokin vakio. Varsinaista laskennallista vaativuutta käsitellään laajemminPykälässä 6.1.

Tarvittaessa pyöristykseen käytetään tavanomaisia funktioita ⌊x⌋ (x:n pohja eli suurin ko-konaisluku, joka on≤ x) ja ⌈x⌉ (x:n katto eli pienin kokonaisluku, joka on≥ x).

Yhteen- ja vähennyslasku

Tavallinen koulussa opittu yhteen- ja vähennyslasku ovat sellaisenaankin sopivia myös ohjel-moitaviksi.N- jaM-pituisten lukujen yhteen- ja vähennyslasku vaativatO(max(N,M)) askel-ta, kuten on helppo todeta.

Kertolasku

Tavallinen koulussa opittu kertolasku on sopiva tietokoneellekin, mutta se ei ole likellekäännopein mahdollinen.N- ja M-pituisten lukujen kertolasku vaatii tällä tavoin noinO(NM)askelta, mikä voi olla paljon.

Karatsuban algoritmion nopeampi kuin perinteinen algoritmi. Algoritmi on eräänlainen”hajoita ja hallitse” -menetelmä. Positiivisten lukujenn jam kertomiseksi desimaaliesityksessäkirjoitetaan ne ensin muotoon

n = a10k + b ja m = c10k + d,

LUKU 2. LUKUTEORIA. OSA 1 14

missäa, b, c, d < 10k ja lukujen maksimipituus on2k tai 2k − 1. Toinen luvuistaa ja c voi ollanolla, mutta eivät molemmat. Ts. kirjoitetaan ainakin toinen luvuista10k-kantaisessa esitykses-sä. Silloin

nm = (a10k + b)(c10k + d) = y102k + (x− y − z)10k + z,

missäx = (a+ b)(c + d) , y = ac ja z = bd,

ts. tarvitaankin vain kolme erillistä ”pitkää” kokonaislukujen kertolaskua (eikä neljä kuten äk-kinäisempi luulisi). Kun nämä kolme kertolaskua

(a+ b)(c+ d) , ac ja bd

edelleen suoritetaan samalla tavoin jakamalla kertolaskut kolmeen lyhyempään kertolaskuunjne., jolloin lopulta päädytään kertotaulun käyttöön, saadaan varsinainen Karatsuban algoritmi(merkitäänTULO(n,m) = nm):

Karatsuban kertoalgoritmi:

1. Josn = 0 tai m = 0, tulostetaan0 ja lopetetaan.

2. Palautetaan tilanne sellaiseen, jossa kertoja ja kerrottava ovat positiivisia:

(2.1) Josn < 0 ja m > 0 tai n > 0 ja m < 0, lasketaant = TULO(|n|, |m|), tulostetaan−t ja lopetetaan.

(2.2) Josn < 0 jam < 0, lasketaant = TULO(−n,−m), tulostetaan se ja lopetetaan.

3. Josn,m < 10, katsotaanTULO(n,m) taulukosta ja lopetetaan.

4. Josn ≥ 10 tai m ≥ 10, kirjoitetaann ja m muotoonn = a10k + b ja m = c10k + d,missäa, b, c, d < 10k, kuten yllä. Desimaaliesityksessä tämä on helppoa.

5. LasketaanTULO(a+b, c+d),TULO(a, c) jaTULO(b, d), tulostetaan (helposti saatava)

TULO(n,m) = 102kTULO(a, c) + 10k(TULO(a+ b, c + d)

− TULO(a, c)− TULO(b, d)) + TULO(b, d)

ja lopetetaan.

Menettely pysähtyy, sillä kerrottavien lukujen maksimipituus pienenee noin puoleen joka kier-roksella.

Jos kerrotaan Karatsuban algoritmilla kaksiN-pituista lukua ja merkitäänK(N):llä tar-vittavien numeraaleja0, 1, . . . , 9 koskevien peruslaskutoimitusten yläarviota, niin ilmeisestikineräsK(N) saadaan seuraavasta rekursiokaavasta

K(N) =

{

αN + 3K(N/2), josN on parillinen

αN + 3K((N + 1)/2), josN on pariton, K(1) = 1,

missä kerroinα saadaan tarvittavien yhteen- ja vähennyslaskujen määrästä, käytetystä algorit-mista riippuen. Tietyn arvion tarvittavien perusoperaatioiden määrästä antaa

Lause 2.12.JosN = 2l, niin K(N) = (2α+ 1)3l − α2l+1 = (2α + 1)N log2 3 − 2αN .

LUKU 2. LUKUTEORIA. OSA 1 15

Todistus.Ilmeisesti arvo on oikea, kunN = 1. Jos arvo pätee, kunN = 2l, se pätee myös kunN = 2l+1, sillä

K(2l+1) = α2l+1 + 3K(2l) = α2l+1 + 3(2α+ 1)3l − 3α2l+1 = (2α+ 1)3l+1 − α2l+2.

Luonnollisesti lauseesta suurelle pituudelleN saatava perusoperaatioiden enimmäismäärä

(2α + 1)N log2 3 − 2αN = O(N log2 3) = O(N1.585)

on tuntuvasti pienempi kuinO(N2). Esimerkiksi josN = 212 = 4 096, niin N2/N log2 3 ∼= 32.Karatsuban menetelmästä on vieläkin nopeampia versioita,joissa kertolasku jaetaan useampaankuin kahteen osaan, ks. esimerkiksi MIGNOTTE.

Nopeimmat kertolaskualgoritmit perustuvat ns. nopean Fourier’n muunnoksen (FFT) käyt-töön, ks. esimerkiksi LIPSON tai CRANDALL & POMERANCE. Tällöin perusoperaatioiden lu-kumäärä onO(N lnN ln(lnN)). Ks. myös kurssi Fourier’n menetelmät.

Jakolasku

Tavanomainen koulussa opetettu ns. ”pitkäjako” on siirrettävissä tietokoneelle, tosin siinä olevaarvausvaihe on jonkin verran hankala toteuttaa tehokkaasti, jos kantaluku on iso, ks. KNUTH.Perusoperaatioiden lukumäärä onO(N2), missä onN on jaettavan pituus. Myös Karatsubanalgoritmin tapainen jakolaskualgoritmi on mahdollinen jahyvin nopea.5

Peruskursseilta tuttuun Newtonin menetelmään pohjautuvajakolasku on varsin tehokas.Oletetaan aluksi, että sekä jakajam että jaettavan ovat positiivisia ja merkitään jaettavan pi-tuuttaN :llä ja jakajan pituuttaM :llä. Koska tapauksetN < M ja N = M ovat helppoja,oletetaan, ettäN > M . Merkitään jakolaskunn = qm+r (osamääräq ja jakojäännösr) tulostaseuraavasti:JAKO(n,m) = (q, r). Huomaa, että silloinq = ⌊n/m⌋.

Lähdetään liikkeelle etsimällä ensin jakajan inverssi. Funktionf(x) = m−1/x nollakohdaneli 1/m:n etsimiseksi saadaan Newtonin iteraatio

xi+1 = xi −f(xi)

f ′(xi)= 2xi −mx2

i .

Käytännössä, jotta voitaisiin käyttää pelkästään kokonaislukujen kertolaskua, lasketaan kuiten-kin l = 10N/m, eli funktiong(x) = m − 10N/x nollakohta, jolle saataisiin vastaavasti tarkkaNewtonin iteraatio

xi+1 = 2xi −mx2

i

10N= 2xi −

x2i

l.

Jotta pysyttäisiin puhtaasti kokonaisluvuissa, otetaan käyttöön tämän kokonaisluvuiksi pyöris-tetty versio

yi+1 = 2yi −

⌊m

10M

⌊y2i

10N−M

⌋⌋

.

Esiintyvät10:n potensseilla jaot ovat desimaalijärjestelmässä triviaaleja. Tarkoitus on saada tätäkäyttäen lasketuksi⌊l⌋, jolloin ottamalla pohja⌊n10−N⌊l⌋⌋ saadaan kokeilemalla osamäärä jasiitä sitten jakojäännös.

Seuraavat ominaisuudet on helppo todeta:

• 2y−⌊m10−M⌊y210M−N⌋⌋ ≥ 2y− y2/l, ts. kokonaisluvuksi pyöristys ei vähennä iteraa-tioarvoja.

5Tällaisia on kuvattu esimerkiksi kirjassa MIGNOTTE ja monisteessa RUOHONEN, K.: Kryptologiasekä hyvinanalysoituna raportissa BURNIKEL , C. & ZIEGLER, J.: Fast Recursive Division.Max Planck Institut für Informa-tik. ForschungsberichtMPI-I-98-1-022 (1998).

LUKU 2. LUKUTEORIA. OSA 1 16

• Josx 6= l, niin 2x − x2/l < l. Tarkka iteraatio siis lähestyyl:ää ”alapuolelta”. Koskam/10M < 1, pyöristetylle iteraatiolle saadaan vastaavasti

2y −

⌊m

10M

⌊y2

10N−M

⌋⌋

≤ 2y −

⌊m

10M

(y2

10N−M− 1

)⌋

≤ 2y −

⌊1

ly2 − 1

< 2y −

(1

ly2 − 2

)

≤ l + 2.

• Josx < l, niin 2x − x2/l > x. Tarkka iteraatio on siis aidosti kasvava niin kauan kunarvot ovat< l. Sama pätee myös pyöristetylle iteraatiolle.

Merkitäänl = yi + ǫi,

missäǫi on virhe. Newtonin menetelmät ovatkvadraattisia,ts. ne kaksinkertaistavat oikeidennumeroiden määrän joka askeleella, niin tässäkin: Josyi < l, niin

|ǫi| = l − yi ≤ l − 2yi−1 +1

ly2i−1 =

1

lǫ2i−1.

Toistamalla tätä ja huomaamalla, ettäl > 10N−M , saadaan (jälleen olettaen, ettäyi < l)

|ǫi| ≤1

lǫ2i−1 ≤

1

l

(1

lǫ2i−2

)2

≤ · · · ≤ l−(1+2+22+···+2i−1)ǫ2i

0 = l1−2iǫ2i

0 < 10(1−2i)(N−M)ǫ2i

0 .

Nyt vaaditaan, että10(1−2i)(N−M)ǫ2i

0 ≤ 1. Olettaen, että|ǫ0| < 10N−M , tämä on sama kuin

i ≥

log2N −M

N −M − log10 |ǫ0|

(totea!). Valitaan

y0 = 10N−M

⌊10M

m

tai y0 = 10N−M

⌈10M

m

,

kumpi pohja vaiko katto nyt sitten on lähempänä lukua10M/m, jolloin |ǫ0| ≤ 10N−M/2. Näinollen riittää valita iteraatioiden lukumääräksi

I =

log2N −M

log10 2

= ⌈log2(N −M)− log2(log10 2)⌉.

Kokonaisluvuiksi pyöristetty iteraatio tuottaa aidosti kasvavan jonon kokonaislukuja, kun-nes saadaan välillä[l, l + 2) oleva arvo. Silloin voidaan pysähtyä ja tarkistaa onko saatu ar-vo vaiko jokin edeltävä arvo oikea⌊l⌋. Menettely kokonaisuudessaan on seuraava (tulostus onJAKO(n,m)):

Jakolasku Newtonin menetelmällä:

1. Josn = 0, tulostetaan(0, 0) ja lopetetaan.

2. Josm = 1, tulostetaan(n, 0) ja lopetetaan.

3. Josm < 0, lasketaanJAKO(n,−m) = (q, r), tulostetaan(−q, r) ja lopetetaan.

LUKU 2. LUKUTEORIA. OSA 1 17

4. Josn < 0, lasketaanJAKO(−n,m) = (q, r), tulostetaan(−q − 1, m− r), josr > 0, tai(−q, 0), josr = 0, ja lopetetaan.

5. AsetetaanN ← jaettavann pituus jaM ← jakajanm pituus.

6. JosN < M tulostetaan(0, n) lopetetaan.

7. JosN = M , lasketaan osamääräq. Tämä on helppoa, sillä nyt0 ≤ q ≤ 9. (Vaikkakokeilemalla, ellei muuten.) Tulostetaan(q, n−mq) ja lopetetaan.

8. JosN > M , lasketaan⌊10M/m⌋. Jälleen tämä on helppoa, sillä1 ≤ ⌊10M/m⌋ ≤ 10.(Kokeilemalla tai muuten.)

9. Jos10M/m − ⌊10M/m⌋ ≤ 1/2 eli 2 · 10M − 2m⌊10M/m⌋ ≤ m, asetetaany0 ←10N−M⌊10M/m⌋. Muuten asetetaany0 ← 10N−M(⌊10M/m⌋ + 1). Huomaa, että jäl-kimmäisessä tapauksessay0 > l ja iteraatioita on suoritettava vähintään yksi.

10. Toistetaan rekursiokaavaa

yi+1 = 2yi −

⌊m

10M

⌊y2i

10N−M

⌋⌋

lähtien arvostay0 kunnesi ≥ 1 ja yi+1 ≤ yi.

11. Testataan kertolaskulla mikä luvuistayi, yi − 1, . . . on oikea⌊l⌋ ja asetetaank ← ⌊l⌋.

12. Asetetaant ← ⌊nk/10N⌋ (oleellisesti kertolasku) ja testataan lisäkertolaskulla kumpiluvuistat vai t + 1 on oikea osamääräq jakolaskussaJAKO(n,m) = (q, r). Tulostetaan(q, n−mq) ja lopetetaan.

Kohdan 11. menettely tuottaa oikean osamäärän. Ensinnäkinr < m ja

q =n− r

m≤

n

m<

10N

m.

Edelleen, josJAKO(10N , m) = (k, r′), niin r′ < m ja

nk

10N=

(qm+ r)(10N − r′)

m10N= q −

qr′

10N+

r(10N − r′)

m10N.

Keskimmäinen termi on välillä(−1, 0] ja viimeinen välillä[0, 1). Näin ollenq on jokot tai t+1.Koska maksimi-iteraatiomääräI on hyvin pieni—luokkaa jaettavan pituudenN ja jakajan

pituudenM erotuksen logaritmi—ja iteraation aikana suoritetaan aina kolme kertolaskua ja yksivähennyslasku enintään2M-pituisille kokonaisluvuille, joista vielä osa on vakioita, jakolasku eiole oleellisesti sen työläämpi kuin kertolasku. Kohtien 7.ja 8. kokeilukaan ei vie monta askelta.

Huomautus. Tämäntapaisesta jakolaskusta on monia hieman erilaisia versioita. CRANDALL

& POMERANCE käsittelee asiaa laajemmin ja antaa myös lisäviitteitä.

Potenssiin korotus

Luvuna potenssiin korotusan peräkkäisillä kertomisilla on liian aikaaviepää, sillä siihen tarvi-taan|n| − 1 kertolaskua, kun itse asiassa enintään2⌊log2 |n|⌋ kertolaskuakin riittää:

LUKU 2. LUKUTEORIA. OSA 1 18

Venäläisten talonpoikien menetelmä:

1. Josn = 0, tulostetaan potenssi1 ja lopetetaan.

2. Josn < 0, asetetaana← a−1 sekän← −n.

3. Josn ≥ 1, muodostetaann:n binääriesitysbjbj−1 · · · b0, missäj = ⌊log2 n⌋ (n:n pituusbinäärilukuna miinus yksi, ks. Lause 2.4).

4. Asetetaani← 0 sekäx← 1 ja y ← a.

5. Josi = j, niin tulostetaan potenssixy ja lopetetaan.

6. Josi < j ja

6.1 bi = 0, niin asetetaany ← y2 sekäi← i+ 1 ja mennään kohtaan 5.

6.2 bi = 1, niin asetetaanx← xy ja y ← y2 sekäi← i+ 1 ja mennään kohtaan 5.

Algoritmin toimivuus seuraa välittömästi binääriesityksestä:

|n| = bj2j + bj−12

j−1 + · · ·+ b12 + b0

jaa|n| = abj2

j

abj−12j−1

· · · ab12ab0 .

Käytännössä lienee mukavaa laskean:n binääriesitystä sitä mukaa, kun sitä tarvitaan, eikä ker-ralla alussa.

Itse asiassa tämä menettely toimii kaikenlaisille potensseille ja myös silloin, kun kertolaskuei ole vaihdannainen, siis esimerkiksi polynomien tai matriisien potenssiinkorotuksessa. Las-kettaessa potensseja modulom pitää tulot tietysti redusoida koko ajan (positiiviseen) jäännös-systeemiin modulom, jotteivat välitulokset kasvaisi suuriksi. Näin voidaan laskea nopeasti hy-vinkin korkeita modulaarisiä potensseja.

Nimi muuten tulee siitä, että venäläiset talonpojat käyttivät helmitaululla laskiessaan tätämenetelmää kertolaskuun, onhana · n tulkittavissaa:n n:nneksi ”potenssiksi” yhteenlaskunsuhteen. Algoritmi on ilmeisesti hyvin vanha.

Kokonaisjuuri

Ei-negatiivisen kokonaisluvunn l:s kokonaisjuuri6 on⌊n1/l⌋. Tavallisin näistä on tietystikoko-naisneliöjuuri(l = 2). MerkitäänN :llä n:n pituutta binääriesityksessä.

Kokonaisjuuren laskemiseen käy samantapainenNewtonin menetelmäkuin jakolaskulle.7

Funktionxl − n nollakohdan elin1/l:n laskemiseksi saadaan Newtonin iteraatio

xi+1 =l − 1

lxi +

n

lxl−1i

.

Mutta koska halutaan laskea kokonaisluvuilla, otetaankinkäyttöön kokonaisluvuiksi pyöristettyiteraatio

yi+1 =

⌊1

l

(

(l − 1)yi +

⌊n

yl−1i

⌋)⌋

ja käytetään kokonaislukujen yhteen-, kerto- ja jakolaskua.Seuraavat ominaisuudet on helppo todeta (tarvittaessa ääriarvotarkasteluin):

6Joissain teksteissä se on⌈n1/l⌉, joissain taasn1/l kokonaisluvuksi pyöristettynä.7Myös aikoinaan koulussakin opittu menetelmä neliöjuuren laskemiseksi kynällä ja paperilla on samantapainen

kuin pitkäjako.

LUKU 2. LUKUTEORIA. OSA 1 19

⌊1

l

(

(l − 1)y +

⌊n

yl−1

⌋)⌋

≤l − 1

ly +

n

lyl−1, kokonaisluvuksi pyöristys ei siis kasvata

iteraatioarvoja.

• Josx 6= n1/l ja x > 0, niinl − 1

lx+

n

lxl−1> n1/l.

Tarkka iteraatio siis lähestyy juurta ”yläpuolelta”. Pyöristetylle versiolle saadaan vastaa-vasti

⌊1

l

(

(l − 1)y +

⌊n

yl−1

⌋)⌋

⌊1

l

(

(l − 1)y +n

yl−1− 1

)⌋

>l − 1

ly +

n

lyl−1− 2 ≥ n1/l − 2.

• Josx > n1/l, niinl − 1

lx+

n

lxl−1< x.

Tarkka iteraatio on siis aidosti vähenevä. Sama pätee myös pyöristetylle versiolle.

Merkitäänn1/l = yi − ǫi

ja valitaan lähtöarvoksiy0 = 2⌈N/l⌉. Tämä voidaan laskea nopeasti venäläisten talonpoikienalgoritmilla. Koskan < 2N , ony0 > n1/l. Arvioidaan ensin tästä saatuǫ0:

ǫ0 = y0 − n1/l = 2⌈N/l⌉ − n1/l ≤ 2N/l+1−1/l − n1/l = 2 · 2(N−1)/l − n1/l ≤ n1/l.

Tämäkin Newtonin menetelmä on kvadraattinen. Todetaan asia vain, kunl = 2. (Yleinen tapauson mutkikkaampi, mutta samantapainen.) Josyi−1, yi > n1/l, niin

0 < ǫi = yi − n1/l ≤l − 1

lyi−1 +

n

lyl−1i−1

− n1/l =1

lyi−1

(

y2i−1 +n

yl−2i−1

− ln1/lyi−1

)

<1

ln1/l

(

y2i−1 +n

n(l−2)/l− 2n1/lyi−1

)

=1

ln1/l(yi−1 − n1/l)2 =

1

ln1/lǫ2i−1.

Tätä arviota toistamalla saadaan (kun merkitään lyhyyden vuoksia =1

ln1/l)

ǫi < aǫ2i−1 < a · a2ǫ22

i−2 < · · · < a1+2+22+···+2i−1

ǫ2i

0

= a2i−1ǫ2

i

0 = a−1(aǫ0)2i = ln1/l

( ǫ0ln1/l

)2i

≤ n1/ll1−2i .

Jos nyt halutaan, ettäǫi < 1, niin riittää ottaan1/ll1−2i ≤ 1 eli (totea!) iteraatioita tarvitaanenintään

I =

log2

(

1 +log2 n

l log2 l

)⌉

.

Näin ollenlog2N :ään verrannollinen määrä iteraatioaskelia riittää, mikäon hyvin vähän. Ko-konaisjuuren laskeminen on näin ollen oleellisesti yhtä vaativaa kuin jakolasku.

Huomautus. Koska jon1/ log2 n = 2, vain enintäänn:n pituuden suuruusluokkaa olevatl:narvot ovat kiinnostavia, muista selvitään pienellä kokeilulla.

LUKU 2. LUKUTEORIA. OSA 1 20

Kokonaisluvuiksi pyöristetty iteraatio tuottaa aidosti vähenevän jonon kokonaislukuja, kun-nes saadaan välillä(n1/l − 2, n1/l] oleva arvo.

Newtonin menetelmäl:nnen kokonaisjuuren laskemiseksi:

1. Josn = 0 tai n = 1, tulostetaann ja lopetetaan.

2. Asetetaany0 ← 2⌈N/l⌉, missäN onn:n pituus binääriesityksessä.

3. Toistetaan iteraatiota

yi+1 =

⌊1

l

(

(l − 1)yi +

⌊n

yl−1i

⌋)⌋

lähtien arvostay0 kunnesyi+1 ≥ yi.

4. Testataan mikä luvuistayi, yi + 1, . . . on oikea kokonaisjuuri⌊n1/l⌋, tulostetaan se jalopetetaan.

Satunnaisluvun generointi

Satunnaisbittijonoja generoidaan yleisesti käyttäenp:nnen kertaluvunsiirtorekisteriä8 modulo2:

ri ≡ a1ri−1 + a2ri−2 + · · ·+ apri−p mod 2,

missäa1, a2, . . . , ap ovat vakiobittejä (0 tai 1, ap = 1). Aluksi tarvitaan tietysti siemenbititr0, r1, . . . , rp−1. Tässä lasketaan koko ajan positiivisessa jäännössysteemissä modulo2 eli bi-teillä. Saatava jonorp, rp+1, . . . ei tietenkään oikeasti ole mitenkään satunnainen, saadaanhanse täysin deterministisellä menettelyllä ja on periodinen(periodin pituus enintään2p). Kun vali-taan kertoimeta1, a2, . . . , ap−1 sopivasti, saadaan jono kuitenkin käyttäytymään monessa mie-lessä satunnaisesti, periodi on pitkä jne., ks. esimerkiksi K NUTH. Yksinkertaisimmillaan mel-kein kaikki kertoimet ovat nollia.

Tyyppiäri ≡ ri−q + ri−p mod 2

olevat siirtorekisterit, missäp on alkuluku jaq valitaan sopivasti, tuottavat usein varsin hyviäsatunnaisia bittejä. Seuraavassa taulussa on listattuna eräitä valintoja, missä lukuq voidaankorvata myös luvullap− q:

p q (myösp− q käy) p q (myösp− q käy)2 1 1279 216, 4183 1 2281 715, 915, 10295 2 3217 67, 5767 1, 3 4423 271, 369, 370, 649, 1393, 1419, 209817 3, 5, 6 9689 84, 471, 1836, 2444, 418731 3, 6, 7, 13 19937 881, 7083, 984289 38 23209 1530, 6619, 9739127 1, 7, 15, 30, 63 44497 8575, 21034521 32, 48, 158, 168 110503 25230, 53719607 105, 147, 273 132049 7000, 33912, 41469, 52549, 54454

8Klassinen viite on GOLOMB, S.W.:Shift Register Sequences.Aegean Park Press (1982)

LUKU 2. LUKUTEORIA. OSA 1 21

Nämä arvot on löydetty tietokone-etsinnällä.9 Pienetp:n arvot eivät tietenkään ole kovin käyt-tökelpoisia.

Matriisimuodossa binäärikunnassaZ2, ks. edellinen pykälä, siirtorekisteri on seuraavanlai-nen. Merkitään

ri =

ri+p−1

ri+p−2...ri

ja A =

a1 a2 · · · ap−1 ap1 0 · · · 0 00 1 · · · 0 0...

.... . .

......

0 0 · · · 1 0

.

A on ns. siirtorekisterinoheismatriisi.Silloin

ri+1 ≡ Ari mod 2

ja näin ollenri ≡ Air0 mod 2 (i = 0, 1, . . . ).

MatriisipotenssiAi voidaan laskea nopeasti modulo2 käyttäen venäläisten talonpoikien algo-ritmia. Niinpä, ehkä vähän yllättäen, voidaan varsin nopeasti laskea jonoarp, rp+1, . . . ”etu-käteen” hyvinkin pitkälle tarvitsematta laskea välissä olevia arvoja kovinkaan monta. Huomaamyös, että jotta saatu bittivirta olisi ”satunnainen”, jossain vaiheessap:stä peräkkäisestä vek-toristari saatu matriisiRi = (ri, . . . , ri+p−1) on kääntyvä elidet(Ri) 6≡ 0 mod 2. Silloinvoidaan yhtälöstäARi ≡ Ri+1 mod 2 ratkaista matriisiA. Suurillap:n arvoilla kaikki nämälaskut muodostuvat luonnollisesti hankaliksi.

Satunnaisbittijonosta saadaan binääriesityksen kauttasatunnaislukuja.Binääriesityksessäänenintäänn-pituisia satunnaislukujas0, s1, . . . saadaan jakamalla jono peräkkäisiinn bitin loh-koihin ja tulkitsemalla lohkot binääriluvuiksi.

Huomautus. Kryptauksessa tarvittava satunnaisbittien ja -lukujen generointi on varsin vaa-tivaa. Huonosti generoidut satunnaisbitit kun edesauttavat kryptauksen purkamista tuntuvasti.Voidaankin sanoa, että satunnaislukujen generointi on viime aikoina edistynyt merkittävästi ni-menomaan kryptauksen tarpeiden vuoksi. Yllä oleva siirtorekisterigeneraattori on ihan riittävä”tavallisiin” tarkoituksiin, jopa kevyeen kryptaukseen,varsinkin suuremmillap:n arvoilla. Ol-lakseen kryptologisesti vahva se ei saisi olla liian helposti ennustettavissa ja tällöinp:n pitääolla käytäntöä ajatellen aivan liian iso. Parempiakin menetelmiä on, mm. ns. Blum–Blum–Shub-generaattori, jota käsitellään Pykälässä 7.7. Ks. myösGOLDREICH.

Toinen tavallinen satunnaislukugeneraattorityyppi on ns. lineaarinen kongruenssigeneraat-tori. Se generoi jononx0, x1, . . . satunnaislukuja väliltä0, 1, . . . , m käyttäen rekursiokongruens-sia

xi+1 ≡ axi + b mod m,

missäa ja b ovat annettuja lukuja—lisäksi annetaan myös siemenx0. Sopivalla lukujena jab valinnalla saadaan monta tarkoitusta varten hyviä ja nopeita satunnaislukugeneraattoreita.(Ks. esimerkiksi KNUTH.) Aikanaan Maple-ohjelmistonrand-operaatiokin perustui lineaari-seen kongruenssigeneraattoriin, jossam = 999 999 999 989 (alkuluku),a = 427 419 669 081 jab = 0.

9Artikkeliviitteet ovat ZIERLER, N.: On Primitive Trinomials Whose Degree is a Mersenne Exponent.Infor-mation and Control15 (1969), 67–69 ja HERINGA, J.R. & BLÖTE, H.W.J. & COMPAGNER, A.: New PrimitiveTrinomials of Mersenne-Exponent Degrees for Random NumberGeneration.International Journal of ModernPhysicsC3 (1992), 561–564.

LUKU 2. LUKUTEORIA. OSA 1 22

Koska (xi

1

)

(a b0 1

)(xi−1

1

)

≡ · · · ≡

(a b0 1

)i(x0

1

)

mod m,

on jonox0, x1, . . . tässäkin laskettavissa ”etukäteen” hyvin nopeasti venäläisten talonpoikienalgoritmilla suurillekin luvuillem jaa. Toisaalta, jossyt(xi−xi−1, m) = 1, kuten se ennemmintai myöhemmin on, saadaan kongruenssistaxi+1 − xi ≡ a(xi − xi−1) mod m ratkaistuksia,ja edelleenb ≡ xi+1 − axi mod m. Paljolti samoista syistä kuin siirtorekisterigeneraattorikinlineaarinen kongruenssigeneraattori on näin kryptologisesti kovin heikko.

Luku 3

JOITAIN KLASSISIAKRYPTOSYSTEEMEJÄKRYPTANALYYSEINEEN

3.1 AFFINE. CAESAR

Jotta päästäisiin käyttämään edellisen luvun lukuteoriantuloksia, pitää selvätekstin symbolit en-sin koodata luvuiksi tai jäännösluokiksi. Jos symboleja onM kpl, voidaan käyttää jäännösluok-kia moduloM . Itse asiassa voidaan ajatella viesti kirjoitetuksi käyttäen näitä jäännösluokkia taipositiivisen jäännössysteemin lukuja.

Affiinissa kryptosysteemissäAFFINE kukin viestisymbolii (jäännösluokka moduloM esi-tettynä positiivisessa jäännössysteemissä) kryptataan seuraavasti:

ek1(i) = (ai+ b, mod M).

Tässäa ja b ovat kokonaislukuja jaa:lla on käänteisluokkac moduloM , ts. syt(a,M) = 1.Kryptausavaink1 muodostuu parista(a, b) ja dekryptausavaink2 parista(c, b) (yleensä esitet-tyinä positiivisessa jäännössysteemissä). Dekryptausfunktio on

dk2(j) = (c(j − b), mod M).

Viestilohko on siis yhden pituinen. Affiini kryptaus sopii näin ollen myös vuokryptaukseen. Va-littaessaa ja b positiivisesta jäännössysteemistä mahdollistena:n arvojen lukumäärä onφ(M),ks. Pykälä 2.4, ja kaikkiaan kryptausavaimia onφ(M)M kpl. Avaimia on näin varsin vähän.Eräitä arvoja:

φ(10) = 4 , φ(26) = 12 , φ(29) = 28 , φ(40) = 16.

Erikoistapaus, jossaa = 1, tunnetaanCaesar-kryptosysteeminäCAESAR. Yleisempi kryp-tosysteemi, jossa

ek1(i) = (p(i), mod M)

ja p on kokonaiskertoiminen polynomi, ei ole juurikaan käyttökelpoisempi, avaimia on edelleenaika vähän (miksi?).

Huomautus. AFFINE muistuttaa edellä ollutta lineaarista kongruenssigeneraattoria. Seuraa-vaksi esiteltävä HILL taas muistuttaa siirtorekisterigeneraattoria. Tämä ei ole aivan sattumaa,satunnaislukugeneraattoreilla ja kryptosysteemeillä onyhteys: vahvoista kryptosysteemeistä ontavalla tai toisella yleensä saatavissa vahva satunnaislukugeneraattori, ei tosin ehkä kovin käyt-tökelpoinen.

23

LUKU 3. JOITAIN KLASSISIA KRYPTOSYSTEEMEJÄ KRYPTANALYYSEINEEN 24

3.2 HILL. PERMUTATION. AFFINE-HILL. VIGENÈRE

Hillin 1 kryptosysteemissäHILL käytetään samaa symbolien koodausta jäännösluokiksimoduloM kuin AFFINEssa. Lohko kuitenkin muodostuu nytd:stä jäännösluokasta ajateltunad-vaa-kavektoriksi. Alkuperäinend muuten oli2. Kryptausavain ond × d-matriisiH, jolla on kään-teismatriisi moduloM , ks. Pykälä 2.5. Mainittu käänteismatriisiH−1 = K moduloM taas ondekryptausavain.

Viestilohkoi = (i1, . . . , id)

kryptataan nyt seuraavasti:eH(i) = (iH, mod M).

Dekryptaus on vastaavastieK(j) = (jK, mod M)

Tässä lasketaan koko ajan moduloM positiivisessa jäännössysteemissä.Kryptausavaimia on yhtä paljon kuin on kääntyviäd× d-matriiseja moduloM . Tämä luku-

määrä on vaikea laskea, yleensä avaimia kuitenkin on suhteellisen paljon, josd on iso.Erikoistapaus HILListä on PERMUTATION eli ns.permutaatiokryptaus.SiinäH on per-

mutaatiomatriisi,ts. matriisi jonka jokaisella rivillä ja jokaisessa sarakkeessa on tarkalleen yksiykkönen ja muut alkiot ovat nollia. Huomaa, että tällöinH−1 = HT, ts.H on ortogonaalimatrii-si. Permutaatiokryptauksessa viestilohkon symbolit permutoidaan tietyllä vakiopermutaatiolla,joka saadaanH:sta.

Yleisempi kryptosysteemi on AFFINE-HILL eliaffiini Hillin kryptosysteemi.Se eroaaHILListä siten, että kryptausavaink1 on pari(H,b), missäb on vakiod-vaakavektori moduloM , ja dekryptausavaink2 on vastaavasti pari(K,b). Tällöin

ek1(i) = (iH+ b, mod M)

jaek2(j) = ((j− b)K, mod M).

Tästä puolestaan saadaan erikoistapauksena ns.Vigenèren2 kryptausVIGENÈRE valitsemal-la H = Id (d × d-identiteettimatriisi). (TällainenH:n valinta ei tietystikään käy HILLissä!)Vigenèren kryptauksessa viestilohkoon lisätään symboleittaind-pituinen avainsana moduloM .

HILLin yleistyksiä olivat ns.rotaatiokryptosysteemit,jotka toteutettiin mekaanisin tai säh-kömekaanisin laittein. Tunnettu esimerkki on saksalaisten toisen maailmansodan aikana käyt-tämä ENIGMA. Ks. SALOMAA tai BAUER.

3.3 ONE-TIME-PAD

Usein viestisymbolit koodataan enintään tietyn pituisiksi binääriluvuiksi, esimerkiksi ASCII-koodaus tai UNICODE-koodaus. Näin voidaan olettaa viestinolevanM-pituinen bittivektori.Jos viestin maksimipituus tunnetaan ennalta ja kryptaustatarvitaan vain kerran, voidaan avai-meksi valita satunnainenM-pituinen bittivektorib eli vektori modulo2, ns.kerta-avain,jokakryptattaessa lisätään viestiin modulo2. Tuloksena saatu kryptattu viestivektori on myös satun-nainen (miksi?) eikä siitä mahdollinen salakuuntelija näin ollen saa ilman avainta mitään irti.Dekryptattaessa lisätään vastaavasti kryptattuun viestiin samab, sillä 2b ≡ 0 mod 2. Näinsaadaan ns.kerta-avainkryptausONE-TIME-PAD.

1Lester S. Hill (1929)2Blaise de Vigenère (1523–1596)

LUKU 3. JOITAIN KLASSISIA KRYPTOSYSTEEMEJÄ KRYPTANALYYSEINEEN 25

3.4 Kryptanalyysi

Kryptanalyysintarkoitus on murtaa kryptosysteemi, ts. löytää dekryptausavain tai kryptausavaintai ainakin kehittää menetelmä, jolla saadaan jotain tietoa ulos joistain kryptatuista viesteistä.Tällöin yleensä oletetaan, että kryptanalysoija on salakuuntelija tai muuten vihamielinen tahoja että kryptanalysoija tietää käytetyn kryptosysteemin,muttei sen avainta.

Kryptanalysoijan käytössä voi olla erilaista tietoa:

(CO) vain jokin ehkä satunnainen kryptoteksti (vain kryptoteksti,cryptotext only),

(KP) jokin ehkä satunnainen selväteksti ja vastaava kryptoteksti (tunnettu selväteksti,knownplaintext),

(CP) hänen valitsemansa selväteksti ja vastaava kryptoteksti (valittu selväteksti,chosen plain-text),

(CC) hänen valitsemansa kryptoteksti ja vastaava selväteksti (valittu kryptoteksti,chosen cryp-totext).

Klassiset hyökkäysmenettelyt perustuvat useinfrekvenssianalyysiin,ts. tietoon siitä että pit-kissä kryptoteksteissä tietyt symbolit, symboliparit, symbolikolmikot jne. esiintyvät tietyillätoisistaan eroavilla frekvensseillä. Frekvenssitaulujaon tehty esimerkiksi tavallisesta englan-ninkielestä, amerikanenglannista jne.

Huomautus. Jos viesti pakataan ennen kryptausta, katoaa siitä frekvenssitietoa, ks. kurssi In-formaatioteoria.

Katsotaan esimerkkeinä eo. kryptosysteemien kryptanalyysejä.

AFFINE

Affiinissa kryptauksessa mahdollisia avaimia on yleensä vähän, joten CO-hyökkäyksessä nevoidaan käydä läpi yksi kerrallaan ja yrittää löytää todennäköinen selväteksti. Tämä ei tieten-kään onnistu, jos viestissä ei ole mitään rakennetta, joka voidaan tunnistaa. Toisaalta pitkistäkryptoteksteistä voidaan etsiä frekvenssitaulujen mukaista rakennetta ja näin löytää KP-dataa,esimerkiksi yleisin yleensä esiintyvä symboli voitaisiintunnistaa.

KP-hyökkäyksessä riittää löytää sellaiset kaksi viestisymboli-kryptosymboli-paria(i1, j1)ja (i2, j2), ettäsyt(i1 − i2,M) = 1. Tällaiset parit löytyvät yleensä pitkästä kryptotekstistä.Silloin matriisi (

i1 1i2 1

)

on kääntyvä moduloM ja avain löytyy helposti:(j1j2

)

(i1 1i2 1

)(ab

)

mod M

eli (ab

)

≡ (i1 − i2)−1

(1 −1−i2 i1

)(j1j2

)

mod M.

CP-hyökkäyksessä symboliparit(i1, j1) ja (i2, j2) voidaan suorastaan valita. CC-hyökkäyksessäriittää valita pitkä kryptoteksti.

AFFINEn helpon murrettavuuden takia se soveltuu vain kevyeen tiedon peittoon satunnai-silta lukijoilta.

LUKU 3. JOITAIN KLASSISIA KRYPTOSYSTEEMEJÄ KRYPTANALYYSEINEEN 26

HILL ja AFFINE-HILL

HILL-kryptosysteemissä avaimia on yleensä paljon, varsinkin jos d on iso. CO-hyökkäys einäin ollen sellaisenaan onnistu helposti. Frekvenssianalyysiä soveltaen voidaan kuitenkin peri-aatteessa löytää KP-dataa, varsinkin josd on pienehkö. KP-hyökkäyksessä riittää löytää sellai-set viestilohko-kryptolohko-parit(i1, j1), . . . , (id, jd), että matriisit

S =

i1...id

ja R =

j1...jd

ovat kääntyviä moduloM . Huomaa, että itse asiassa riittää tietää toinen matriiseista kääntyväk-si, toinen on sen jälkeen myös kääntyvä. Tietysti CP-hyökkäyksessäS on valittavissa suoraanja CC-hyökkäyksessä taasR. JosS jaR tunnetaan, saadaan avainH helposti:

R ≡ SH mod M eli H ≡ S−1R mod M.

HILL on vaikea murtaa, ellei vähintään KP-dataa ole saatavilla, varsinkin josd on iso ja/taikryptanalysoija ei tiedäd:n arvoa. Toisaalta KP-hyökkäys ja varsinkin CP- tai CC-hyökkäys onhelppo tehdä—dataa tarvitaan hyvin vähän—joten HILL ei käyvaativaan salaukseen.

AFFINE-HILL on HILLiä hieman vaikeampi murtaa. KP-hyökkäyksessä tarvitaan sellaisetviestilohko-kryptolohko-parit(i1, j1), . . . , (id+1, jd+1), että matriisit

S =

i1 − id+1...

id − id+1

ja R =

j1 − jd+1...

jd − jd+1

ovat kääntyviä moduloM . Huomaa jälleen, että itse asiassa riittää tietää toinen matriiseistakääntyväksi. CP-hyökkäyksessäS on valittavissa suoraan, CC-hyökkäyksessäR. JosS ja R

tunnetaan, saadaanH helposti samoin kuin yllä. KunH tunnetaan, saadaanb helposti.

VIGENÈRE

VIGENÈRE on ollut aikanaan niin paljon käytetty kryptosysteemi, että sen murtamista on mie-titty paljon. Ensimmäinen toimenpide on etsiäd. Siihen on omia menetelmiään jad on VI-GENÈREssä yleensä varsin iso. Sen jälkeen voidaan soveltaafrekvenssianalyysiä. Ks. STIN-SON tai SALOMAA tai BAUER.

ONE-TIME-PAD

Jollei avain ole kryptanalysoijan käytettävissä, on ONE-TIME-PAD mahdoton murtaa CO-hyökkäyksessä. Jos samaa avainta kuitenkin käytetään useita kertoja tullaan oleellisesti VIGE-NÈRE-salaukseen.

Luku 4

ALGEBRA: RENKAAT JA KUNNAT

4.1 Renkaat ja kunnat

Algebrallinen struktuurikoostuu joukostaA, jonka alkioille on määritelty yksi tai useampi las-kuoperaatio ja näille laskusäännöt. Lisäksi yleensä jo(i)llekin A:n alkio(i)lle on varattu erikois-rooli.

Rengas(engl. ring) on struktuuriR = (A,⊕,⊙, 0, 1), jossa⊕ on renkaanyhteenlaskuope-raatio,⊙ on renkaankertolaskuoperaatio,0 on renkaannolla-alkio ja 1 on renkaanykkösalkio(ja 0 6= 1). Jos⊕,⊙, 0 ja 1 ovat asiayhteydestä selvät, merkitään rengasta usein vainA:lla.Lisäksi vaaditaan, että seuraavat ehdot ovat voimassa:

(1) ⊕ ja⊙ ovatvaihdannaisiaoperaatioita, ts. aina

a⊕ b = b⊕ a ja a⊙ b = b⊙ a.

(2) ⊕ ja⊙ ovat liitännäisiäoperaatioita, ts. aina

(a⊕ b)⊕ c = a⊕ (b⊕ c) ja (a⊙ b)⊙ c = a⊙ (b⊙ c).

Liitännäisyydestä seuraa, että pitkät summa- ja tulolausekkeet voidaan suluttaa mitentahansa tuloksen muuttumatta. Usein ne kirjoitetaan täysin ilman sulkeita, esimerkiksia1 ⊕ a2 ⊕ · · · ⊕ ak tai a1 ⊙ a2 ⊙ · · · ⊙ ak. Erityisesti otetaan käyttöönmonikerta-japotenssimerkinnät

ka = a⊕ · · · ⊕ a︸ ︷︷ ︸

k kpl

ja ak = a⊙ · · · ⊙ a︸ ︷︷ ︸

k kpl

sekä erikoistapauksina0a = 0, 1a = a, a0 = 1 ja a1 = a.

(3) 0⊕ a = a ja 1⊙ a = a (huomaa, miten nämä sopivat yhteen eo. monikerta- ja potenssi-merkintöjen kanssa).

(4) a⊙ (b⊕ c) = (a⊙ b)⊕ (a⊙ c) (osittuvuus).

(5) Jokaiselle alkiollea on vasta-alkio−a, jolle (−a) ⊕ a = 0. Vasta-alkiota käyttäen saa-daanvähennyslaskua⊖ b = a⊕ (−b) ja negatiivinen monikerta(−k)a = k(−a).

Huomautus. Tarkemmin sanoen tällainenR on ns.vaihdannainen 1-rengas,varsinainen ren-gas on algebrallisesti vieläkin yleisempi käsite. Ks. kurssi Algebra 1. Jatkossa renkaasta puhut-taessa kyseessä on siis aina juuri tällainen vaihdannainen1-rengas.

27

LUKU 4. ALGEBRA: RENKAAT JA KUNNAT 28

Jos lisäksi vielä seuraava ehto (6) pätee, on kyseessäkunta(engl. field):

(6) Jokaiselle alkiollea 6= 0 onkäänteisalkioeli inverssia−1, jolle a⊙ a−1 = 1. Käänteisal-kiota käyttäen saadaanjakolaskua/b = a⊙ b−1 ja negatiivinen potenssia−k = (a−1)k.

Tavallisesti sovitaan, että kerto- ja jakolaskut tehdään aina ennen yhteen- ja vähennyslaskuja,jolloin sulkuja voidaan jättää pois. Näistä ehdoista voidaan johtaa monet ”tutut” laskusäännöt,esimerkiksi

−(a⊙ b) = (−a)⊙ b jaa⊙ b

c⊙ d=

a

c⊙

b

d.

Jokainen kunta on siis myös rengas. Tuttuja renkaita, jotkaeivät ole kuntia, ovat mm. koko-naislukujen rengasZ sekä erilaisetpolynomirenkaat,esimerkiksi rationaali-, reaali-, kompleksi-ja kokonaiskertoimisten polynomien renkaatQ[x], R[x], C[x] ja Z[x]. Näissä laskuoperaatiotovat tutut+ ja ·, nolla-alkio on0 ja ykkösalkio on1. Myös Zm (jäännösluokat modulom)muodostavat renkaan, eli jäännösluokkarengas on rengas, ks. Pykälä 2.5.

Tuttuja kuntia ovatlukukunnatreaalilukujen kunta(R,+, ·, 0, 1), rationaalilukujen kunta(Q,+, ·, 0, 1) ja kompleksilukujen kunta(C,+, ·, 0, 1) sekä reaalikertoimisten rationaalifunk-tioiden kunta(R(x),+, ·, 0, 1) ja alkukunnat(Zp,+, ·, 0, 1) (ks. Pykälä 2.5). Näitä merkitäänyleensä vain lyhyesti:R, Q, C, R(x) jaZp.

4.2 Polynomirenkaat

Polynomit, jotka muodostetaan formaalisesti käyttäen kunnanF alkioita kertoimina, muodos-tavat ns.F :n polynomirenkaanF [x]. Polynomi kirjoitetaan tuttuun summamuotoon käyttäenapumuuttujaa (tässäx):

p(x) = a0 ⊕ a1x⊕ a2x2 ⊕ · · · ⊕ anx

n , missäa0, a1, . . . , an ∈ F ja an 6= 0.

Erikoisestinollapolynomion tyhjä summa. Tavalliseen tapaanF [x]:n nollapolynomi samais-tetaanF :n nolla-alkioon0 ja vakiopolynomit vastaaviinF :n alkioihin. Polynominp(x) astedeg(p(x)) määritellään edelleen tavalliseen tapaan korkeimman esiintyvänx:n potenssin eks-ponentiksi (yllä aste onn). Nollapolynomin asteeksi sovitaan−1. Korkeimman esiintyvänx:npotenssin kerrointa kutsutaanjohtavaksi kertoimeksi(yllä an). Jos johtava kerroin on= 1, ky-seessä on ns.pääpolynomi.Tavan mukaan termi1xi voidaan korvataxi:llä, termi (−1)xi voi-daan korvata⊖xi:llä ja termi0xi voidaan jättää pois.

Polynomienyhteen-, vähennys-ja kertolaskumääritellään tavalliseen tapaan käyttäen ker-toimia ja kunnan vastaavia laskuoperaatioita. Tarkastellaan operaatioita polynomeille

p1(x) = a0 ⊕ a1x⊕ a2x2 ⊕ · · · ⊕ anx

n ja p2(x) = b0 ⊕ b1x⊕ b2x2 ⊕ · · · ⊕ bmx

m,

missäan, bm 6= 0. (Tässä siis oletetaan, ettäp1(x), p2(x) 6= 0.) Silloin

p1(x)⊕ p2(x) = c0 ⊕ c1x⊕ c2x2 ⊕ · · · ⊕ ckx

k,

missäk = max(n,m) ja

ci =

ai ⊕ bi, jos i ≤ n,m

ai, josm < i ≤ n

bi, josn < i ≤ m.

LUKU 4. ALGEBRA: RENKAAT JA KUNNAT 29

Huomaa, että josn = m, niin ck voi olla = 0, ts. summan aste voi olla< k. Edelleenp2(x):nvastapolynomion

−p2(x) = p2(x) = (−b0)⊕ (−b1)x⊕ (−b2)x2 ⊕ · · · ⊕ (−bm)x

m

ja vähennyslasku saadaan muodossa

p1(x)⊖ p2(x) = p1(x)⊕ (−p2(x)).

Tulo saadaan muodossa

p1(x)⊙ p2(x) = c0 ⊕ c1x⊕ c2x2 ⊕ · · · ⊕ cn+mx

n+m,

missäci =

t+s=i

at ⊙ bs.

Näin ollendeg(p1(x)⊙ p2(x)) = deg(p1(x)) + deg(p2(x)).

Helposti vaikkakin työläästi on todettavissa, että näin saatu(F [x],⊕,⊙, 0, 1) on todellakin ren-gas.

Polynomeillea(x) jam(x) 6= 0 on edelleen määriteltyjakolaskumuodossa

a(x) = q(x)⊙m(x)⊕ r(x) , deg(r(x)) < deg(m(x))

(osamääräq(x) ja jakojäännösr(x)). Muista, että nollapolynomin asteeksi sovittiin−1. Jako-laskun tulos on yksikäsitteinen. Jos nimittäin

a(x) = q1(x)⊙m(x)⊕ r1(x) = q2(x)⊙m(x)⊕ r2(x),

missädeg(r1(x)), deg(r2(x)) < deg(m(x)), niin

r1(x)⊖ r2(x) = (q2(x)⊖ q1(x))⊙m(x).

Mutta deg(r1(x) ⊖ r2(x)) < deg(m(x)), joten ainoa mahdollisuus on, ettäq2(x) ⊖ q1(x) onnollapolynomi eli ettäq1(x) = q2(x) ja edelleen ettär1(x) = r2(x).

Jakolasku voidaan suorittaa seuraavalla algoritmilla, joka samalla näyttää, että se on mah-dollinen (tulostetaanJAKO(a(x), m(x)) = (q(x), r(x))):

Polynomien jakolasku:

1. Asetetaanq(x) ← 0 sekän ← deg(a(x)) ja k ← deg(m(x)). Merkitään vieläm(x):njohtavaa kerrointamk:lla.

2. Josn < k, tulostetaan(q(x), a(x)) ja lopetetaan.

3. Etsitääna(x):n johtava kerroinan.

4. Asetetaana(x)← a(x)⊖ (an ⊙m−1

k )⊙ xn−k ⊙m(x)

jaq(x)← q(x)⊕ (an ⊙m−1

k )⊙ xn−k

sekän← deg(a(x)) ja mennään kohtaan 2.

LUKU 4. ALGEBRA: RENKAAT JA KUNNAT 30

Aina mentäessä kohdan 4. kauttan pienenee ja lopulta tullaan ulos kohdasta 2.Edelleen voidaan määritellä tekijä ja jaollisuus kuten Pykälässä 2.1. Josa(x) = q(x)⊙m(x),

sanotaan ettäa(x) on jaollinenm(x):llä tai ettäm(x) on a(x):n tekijä.Polynomia, jolla ei olemuita alempiasteisia tekijöitä kuin vakiopolynomit, kutsutaanjaottomaksi.

Jaettaessaa(x) m(x):llä jakojäännöksenr(x):n sanotaan olevana(x):n jäännös modulom(x), vrt. vastaava käsite kokonaisluvuille Pykälässä 2.4.m(x) on ns.moduli.Tässä oletetaanmodulin olevan vähintään astetta1. Myös käytetään samanlaista merkintää ja sanontaa kuinkokonaisluvuille: Josa(x):n ja b(x):n jäännökset modulom(x) ovat samat, merkitään

a(x) ≡ b(x) mod m(x)

ja sanotaana(x):n olevankongruenttib(x):n kanssa modulom(x). Tällaisia kongruensseja kos-kevat aivan samat laskusäännöt kuin kokonaisluvuillekin.

Jakojäännöstär(x) vastaavanjäännösluokana(x) = r(x) muodostavat kaikki ne polyno-mit a(x), joiden jäännös modulom(x) onr(x). Kaikki jäännösluokat modulom(x) muodosta-vat ns.jäännösluokkarenkaaneli tekijärenkaanF [x]/m(x).1 On helppo nähdä, samaan tapaankuin kokonaisluvuille, että jäännösluokat modulom(x) voidaan antaa ja niillä voidaan laskea”edustajan välityksellä”, ts.

a1(x)⊕ a2(x) = a1(x)⊕ a2(x) , −a(x) = −a(x) ,

a1(x)⊖ a2(x) = a1(x)⊖ a2(x) , ka(x) = ka(x) ,

a1(x)⊙ a2(x) = a1(x)⊙ a2(x) ja a(x)k= a(x)k

eikä tulos riipu edustajan valinnasta. Tavallisin edustajasysteemi on kaikkien mahdollisten ja-kojäännösten muodostama joukko eli enintään astettadeg(m(x)) − 1 olevat polynomit. NäinollenF [x]/m(x) on todellakin rengas.

Edelleen aivan samalla tavoin kuin tehtiin osoitettaessa,että jokaisella muullaZp:n alkiollakuin nolla-alkiolla0 on käänteisalkio, voidaan näyttää, että jokaisella muullaF [x]/p(x):n al-kiolla kuin nolla-alkiolla0 on käänteisalkio olettaen, että modulip(x) on jaoton polynomi. Tätävarten tarvitaanF [x]:n polynomien suurin yhteinen tekijä sekä Eukleideen algoritmi.

F [x]:n polynomiena(x) ja b(x) (eivät molemmat nollapolynomeja)suurin yhteinen tekijä(s.y.t.) on korkeinta astetta oleva oleva polynomid(x), joka jakaa tasan sekäa(x):n ettäb(x):n,merkitäänd(x) = syt(a(x), b(x)). Huomaa, että tällainen suurin yhteinen tekijä ei ole yksikä-sitteinen, sillä josd(x) = syt(a(x), b(x)), niin myösc ⊙ d(x), missäc on vakiopolynomi ja6= 0, onsyt(a(x), b(x)). Usein vaaditaankin lisäksi, ettäd(x) on pääpolynomi.

Lause 4.1. (Bézout’n lause)Jos ainakin toinen polynomeistaa(x) ja b(x) ei ole nollapolynomi,niin niiden (mikä tahansa) s.y.t.d(x) voidaan kirjoittaa muotoon

d(x) = c1(x)⊙ a(x)⊕ c2(x)⊙ b(x) (Bézout’n muoto).

Lisäksi, josa(x), b(x) 6= 0, voidaan olettaa, ettädeg(c1(x)) ≤ deg(b(x)) ja deg(c2(x)) ≤deg(a(x)).

Todistus.Todistus on hyvin samantapainen kuin Lauseen 2.5. Merkitään SYT(a(x), b(x)) =(d(x), c1(x), c2(x)) ja oletetaan, ettädeg(a(x)) ≤ deg(b(x)). Todistuksessa tarvittava(yleistet-ty) Eukleideen algoritmion seuraava rekursio:

1Samantapaista merkintää käytetään kokonaisluvuillekin:Zm = Z/m.

LUKU 4. ALGEBRA: RENKAAT JA KUNNAT 31

(Yleistetty) Eukleideen algoritmi polynomeille:

1. Josa(x) = 0, niin tulostetaanSYT(a(x), b(x)) = (b(x), 0, 1) ja lopetetaan.

2. Josa(x) 6= 0 on vakiopolynomi, tulostetaanSYT(a(x), b(x)) = (a(x), 1, 0) ja lopete-taan.

3. Josdeg(a(x)) ≥ 1, niin etsitäänb(x):n jäännösr(x) moduloa(x), ts. kirjoitetaanb(x) =q(x) ⊙ a(x) ⊕ r(x), missädeg(r(x)) < deg(a(x)). Etsitään sittenSYT(r(x), a(x)) =(d(x), e1(x), e2(x)). Koskad(x) = e1(x) ⊙ r(x) ⊕ e2(x) ⊙ a(x), on silloin d(x) =syt(a(x), b(x)) ja

d(x) = (e2(x)⊖ e1(x)⊙ q(x))⊙ a(x)⊕ e1(x)⊙ b(x).

TulostetaanSYT(a(x), b(x)) = (d(x), e2(x)⊖ e1(x)⊙ q(x), e1(x)) ja lopetetaan.

Rekursio on päättyvä, koskamin(deg(r(x)), deg(a(x))) < min(deg(a(x), deg(b(x))), ts. ainakutsuttaessaSYT ko. minimiarvo pienenee.

Jossyt(a(x), m(x)) on vakiof 6= 0, niin Bézout’n muodosta saadaan kertomalla puolittainf−1:llä

1 = e1(x)⊙ a(x)⊕ e2(x)⊙m(x).

Näin ollena(x):llä on tällöin inverssie1(x) modulom(x) eli a(x):llä onF [x]/m(x):ssä kään-teisalkioe1(x). (Olettaen, ettädeg(m(x)) ≥ 1.) Samalla tuli esitetyksi menetelmä, jolla kään-teisalkion voi löytää.

Erityisesti, josp(x) on jaoton vähintään astetta1 olevaF [x]:n polynomi, niinF [x]/p(x) onkunta. Ko. kunnan alkiot on tapana kirjoittaa jäännösmuotoon

c0 ⊕ c1x⊕ c2x2 ⊕ · · · ⊕ cn−1x

n−1,

missän = deg(p(x)) ja kertoimetc0, c1, . . . , cn−1 ovatF :n alkioita, eli oleellisestin-vektoreik-si, joiden komponentit ovatF :ssä. Huomaa, että tässäcn−1 voi olla= 0. Erityisesti huomataan,että josp(x) on ensimmäistä astetta, niinF [x]/p(x) = F , ts. palataan takaisin alkuperäiseenkuntaan.

Esimerkki. R[x]:n jaottomat polynomit vakioita lukuunottamatta ovat tunnetusti joko ensim-mäistä tai toista astetta. Edellisistä saadaanR ja jälkimmäisistäC. Siis esimerkiksiC =R[x]/(x2+1).C[x]:n jaottomat polynomit ovatkin sitten vakioita tai ensimmäistä astetta, jotensiitä ei päästä sen pidemmälle.

PolynomirengasR[x] voidaan myös muodostaa käyttäen kertoimina renkaanR alkioita,näin saadaan esimerkiksi kokonaiskertoimisten polynomien rengasZ[x]. Tällaisissa renkaissayhteen- ja kertolasku määritellään tavalliseen tapaan, mutta jakolasku ei kuitenkaan ole enääyleisesti mahdollista. Jakolaskualgoritmia tutkimalla on kuitenkin selvää, ettäjakolasku onmääritelty, jos jakajapolynomin johtavalla kertoimella on inverssiR:ssä.Erityisesti,jos jakajaon pääpolynomi, jakolasku on määritelty kaikissa polynomirenkaissa.Näin ollen myös jään-nösluokkarengasR[x]/m(x) on määritelty, jos vainm(x):n johtavalla kertoimella on inverssiR:ssä, ja aina josm(x) on pääpolynomi.

Tällainen jakolasku tulee esille mm. NTRU-systeemin yhteydessä, ks. Luku 11.

LUKU 4. ALGEBRA: RENKAAT JA KUNNAT 32

4.3 Äärelliset kunnat

Alkukunnat saatiin Pykälässä 2.5 muodossaZp eli jäännösluokkina modulo jokin alkulukup.Alkukunta on esimerkkiäärellisestä kunnasta,mutta niitä on muitakin. Näiden saamiseksi vali-taan jonkin alkukunnanZp polynomirenkaanZp[x] polynomiP (x), joka on jaoton. JäännöksetmoduloP (x) muodostavat kunnanZp[x]/P (x), jonka alkiot esitetään tavallisesti muodossa

c0 + c1x+ c2x2 + · · ·+ cn−1x

n−1,

missän = deg(P (x)) ja c0, . . . , cn−1 ∈ Zp, eli oleellisesti vektorina(c0, c1, . . . , cn−1). Tämäkunta on äärellinen, siinä on alkioita yhtä monta kuin on jäännöksiä moduloP (x) eli pn kpl.

Voidaan näyttää (sivuutetaan tässä), että kaikki mahdolliset äärelliset kunnat saadaan tällätavoin—tietysti myös alkukuntaZp itse. Äärellisen kunnan alkioiden lukumäärä on siis aina al-kuluvun potenssi. Äärellisiä kuntia voidaan konstruoida monella tavalla, samaa astetta oleviajaottomiaZp[x]:n polynomejakin löytyy yleensä useampia, mutta aina äärellinen kunta, jossaonpn alkiota, on rakenteeltaan samanlainen eli isomorfinen jokaisen kunnanZp[x]/P (x) kans-sa, missädeg(P (x)) = n. Näin ollen äärellisiä kuntia, joissa onpn alkiota, on olennaisesti vainyksi, ja sitä merkitäänFpn:llä taiGF(pn):llä.2 Jokaista mahdollista alkuluvun potenssiapn koh-ti on edelleen olemassaFpn, ts. jokaisesta polynomirenkaastaZp[x] löytyy kaikkia astelukujan ≥ 1 olevia jaottomia polynomeja.

Huomautus. Jos otetaankin äärellisen kunnanFpn polynomirenkaanFpn[x] astettam olevajaoton polynomiP (x), niin edellä olevan mukaisesti tekijärengasFpn/P (x) (jäännökset modu-lo P (x)) on kunta, jossa on(pn)m = pnm alkiota. Tämä kunta on siisFpnm ja se on (isomorfi-sesti) sama kuinZp[x]/Q(x), missäQ(x) on astettanm olevaZp[x]:n jaoton polynomi.

Käytännössä äärellisessä kunnassaFpn lasketaan muodostamalla sen esitys jäännösluokki-na modulo jokin astettan oleva jaoton polynomiP (x) ∈ Zp[x]. Laskutoimitukset tapahtuvatenintään astettan− 1 olevien edustajien eli jakojäännösten välityksellä, jollaisiksi myös tulok-set redusoidaan moduloP (x) jakolaskulla. Josp ja/tain on iso, ovat tällaiset operaatiot tietystikäsipelissä työläitä. Äärellisillä kunnilla on muitakin esityksiä. Esitys primitiivisten alkioidenpotensseina on hyvin käyttökelpoinen eräissä kryptosysteemeissä (ks. Luku 10).

Esimerkki. F28 :n konstruoimiseksi voidaan valitaZ2[x]:n astetta8 oleva jaoton polynomiP (x) = 1 + x + x3 + x4 + x8. Tarkistetaan Maple-ohjelmistolla, ettäP (x) todella on jao-ton:

> Irreduc(1+x+x^3+x^4+x^8) mod 2;

true

F28 :n alkiot ovat esitettävissä jäännösmuodossa

b0 + b1x+ b2x2 + b3x

3 + b4x4 + b5x

5 + b6x6 + b7x

7,

missäb0, . . . , b7 ovat bittejä eli oleellisesti bittivektorina(b0, b1, b2, b3, b4, b5, b6, b7). MaplenGF-paketilla voidaan laskea äärellisissä kunnissa, tosin vähän kankeasti. Kokeillaan pakettiaF28 :ssa:

> GF256:=GF(2,8,1+x+x^3+x^4+x^8):> a:=GF256[ConvertIn](x);

2”GF” = ”Galois field” (Galois’n kunta). TietystiZp = Fp = GF(p).

LUKU 4. ALGEBRA: RENKAAT JA KUNNAT 33

a := x mod 2

> GF256[‘^‘](a,1200);

(x7 + x6 + x5 + x3 + x2 + x+ 1) mod 2

> c:=GF256[inverse](a);

c := (x7 + x3 + x2 + 1) mod 2

> GF256[‘+‘](a,GF256[‘^‘](c,39));

(x7 + x5 + x3 + 1) mod 2

Tässä siis laskettiin ko. esityksessäx1 200, x−1 ja x+x39. KäskyConvertInmuuntaa polyno-min Maplen sisäiseen esitykseen.

Ellei tiedä yhtään sopivaa jaotontaZp[x]:n polynomia, etsii Maple kyllä jonkin sellaisen:

> GF81:=GF(3,4):> GF81[extension];

(T 4 + T 3 + 2T + 1) mod 3

Valinnan saa selvilleextension-käskyllä. Tässä siis saatiin tuloksenaZ3[x]:n jaoton poly-nomi1 + 2x+ x3 + x4.

Äärellisten kuntien matriisien ja vektoreiden laskutoimitukset määritellään luonnollisella ta-valla alkioidensa laskutoimitusten avulla. Käyttöön tulevat näin peruskursseilta tutut matriisienyhteen-, vähennys-, kertomis- ja potenssiinkorotusoperaatiot sekä transponointi. Samoin neliö-matriisien determinantit noudattavat tuttuja laskusääntöjä. Aivan samoin kuin peruskursseillatodetaan sekin, että neliömatriisilla on käänteismatriisi, jos sen determinantti ei ole kunnannolla-alkio.

Paitsi kryptologiassa, äärelliset kunnat ovat tavattomantärkeitä virheitä korjaavassa koo-dauksessa. Niitä käsitelläänkin enemmän kursseissa Äärelliset kunnat ja Koodausteoria. Hyviäviitteitä ovat MCELIECE ja LIDL & N IEDERREITER ja myös GARRETT. Nykyisin yleisessäkäytössä oleva massakryptaussysteemi AES perustuu äärelliseen kuntaanF28 , ks. seuraava lu-ku.

Luku 5

AES

5.1 Yleistä

AES (Advanced Encryption Standard)on kilpailutuksen kautta kehitetty nopea massakryp-taukseen tarkoitettu symmetrinen kryptosysteemi. Se perustuu belgialaisten Joan Daemenin jaVincent Rijmenin vuonna 1999 julkaisemaanRIJNDAEL-systeemiin,ks. DAEMEN & R IJMEN.AES korvasi vanhan vuonna 1975 julkaistun DES-systeemin (Data Encryption Standard, ks.Liite).

AES toimii bittisymboleilla, joten selväteksti- ja kryptotekstisymboleiksi voidaan ajatellaZ2:n jäännösluokat (bitit)0 ja 1. RIJNDAELin toiminta on paljolti kuvattavissa käyttäen kuntaaF28 ja sen polynomirengastaF28 [z]. Sekaannusten välttämiseksi käytetään mainitun polynomi-renkaan apumuuttujanaz:aa jaF28 :n määrittelyssä ja esityksessä tarvittavienZ2:n polynomienapumuuttujanax:ää, kuten edellä. EdelleenF28 :n yhteen- ja kertolaskun merkkeinä käytetään⊕:aa ja⊙:ttä, ykkösalkion merkkinä1:tä ja nolla-alkion merkkinä0:aa. Huomaa, että koskaZ2:ssa on1 = −1, niin Z2[x]:ssa,F28 :ssa jaF28 [z]:ssa alkion vasta-alkio on se itse. Vähennys-lasku⊖ on siis näissä sama kuin yhteenlasku⊕.

5.2 RIJNDAEL

RIJNDAEL-systeemissä selvätekstilohkon pituuslB ja avaimen pituuslK ovat toisistaan riippu-matta joko128, 192 tai 256 bittiä. Jakamalla32:lla saadaan luvut

NB =lB32

ja NK =lK32

.

Bittejä käsitellään8-bittisinä tavuina.8-bittistä tavuab7b6 · · · b0 taas voidaan pitää äärellisenkunnanF28 alkiona, jonka esitys jäännöksenä onb0+b1x+b2x

2+b3x3+b4x

4+b5x5+b6x

6+b7x7,

ks. Pykälän 4.3 Esimerkki ja huomaa järjestys.Avain on tapana esittää4×NK-matriisina, jonka alkiot ovat tavuja. Jos avain on tavuittain

k = k00k10k20k30k01k11k21 · · · k3,NK−1,

niin vastaava matriisi on

K =

k00 k01 k02 · · · k0,NK−1

k10 k11 k12 · · · k1,NK−1

k20 k21 k22 · · · k2,NK−1

k30 k31 k32 · · · k3,NK−1

.

34

LUKU 5. AES 35

Huomaa miten matriisin alkiot indeksoidaan nollasta alkaen. Vastaavasti, jos syötelohko (sel-vätekstilohko) on tavuittain

a = a00a10a20a30a01a11a21 · · · a3,NB−1,

niin vastaava matriisi on

A =

a00 a01 a02 · · · a0,NB−1

a10 a11 a12 · · · a1,NB−1

a20 a21 a22 · · · a2,NB−1

a30 a31 a32 · · · a3,NB−1

.

Kryptauksen aikana käsiteltävänä on joka vaiheessa jokinlB-pituinen bittijono, ns.tila. Lohkontapaan se esitetään tavuittain4×NB-matriisin muodossa:

S =

s00 s01 s02 · · · s0,NB−1

s10 s11 s12 · · · s1,NB−1

s20 s21 s22 · · · s2,NB−1

s30 s31 s32 · · · s3,NB−1

.

MatriisienK,A ja S alkiot ovat8 bitin tavuja, jotka ovat tulkittavissa kunnanF28 alkioik-si. Näin matriisit ovat ko. kunnan matriiseja. Toinen tapa tulkita matriiseja on ajatella näidensarakkeet4-pituisiksi kunnanF28 alkioiden jonoiksi. Nämä taas voidaan tulkita polynomiren-kaanF28 [z] enintään astetta3 olevien polynomien kertoimiksi ylhäältä alas lukien, ts. tällaisiksipolynomeiksi. Em. tilaS vastaisi siis polynomijonoa

s00 ⊕ s10z ⊕ s20z2 ⊕ s30z

3 , s01 ⊕ s11z ⊕ s21z2 ⊕ s31z

3 , . . . ,

s0,NB−1⊕ s1,NB−1

z ⊕ s2,NB−1z2 ⊕ s3,NB−1

z3.

Jotta esitys olisi yksikäsitteinen, pitääF28 :n konstruktiossa käyttää sovittua kiinteää jaotontaastetta8 olevaaZ2[x]:n polynomia. RIJNDAELissa se on ns.RIJNDAEL-polynomi

p(x) = 1 + x+ x3 + x4 + x8,

sama muuten kuin Pykälän 4.3 esimerkissä.

5.2.1 Kierrokset

RIJNDAELissa on tietty määräNR ns.kierroksia.Kierrosten lukumäärän antaa seuraava taulu:

NR NB = 4 NB = 6 NB = 8NK = 4 10 12 14NK = 6 12 12 14NK = 8 14 14 14

i:s kierros saa syötteekseen kulloisenkin tilanS ja oman ns.kierrosavaimensaRi. Erityisestitarvitaan lähtökierrosavainR0. Kullakin kierroksella, viimeistä lukuunottamatta, käydään läpiseuraavat operaatiot:

S← SubBytes(S)

S← ShiftRows(S)

S← MixColumns(S)

S← AddRoundKey(S,Ri)

LUKU 5. AES 36

Viimeinen kierros on muuten sama, mutta jätetään poisMixColumns.Salausavainlaajennetaanensin ja siitä jaetaan sitten eri kierroksille kierrosavaimet. Tämä

ja kierroksen eri operaatiot käydään läpi yksitellen seuraavissa pykälissä. Itse kryptaus koostuusitten seuraavista vaiheista:

• Alustetaan tila:S← AddRoundKey(A,R0).

• NR − 1 ”tavallista” kierrosta.

• Viimeinen kierros.

Dekryptattaessa käydään vaiheet läpi käänteisinä käänteisessä järjestyksessä.

5.2.2 Tavun muuntaminen (SubBytes)

Tässä operaatiossa kukin tilan tavusij muunnetaan seuraavasti:

1. Tulkitaansij kunnanF28 alkioksi ja lasketaan sen käänteisalkios−1ij . Nolla-alkion kään-

teisalkioksi sovitaan tässä se itse.

2. Avataans−1ij kahdeksaksi bitiksib7b6b5b4b3b2b1b0, merkitään

b(x) = b0 + b1x+ b2x2 + b3x

3 + b4x4 + b5x

5 + b6x6 + b7x

7 (Z2[x]:n polynomi)

ja lasketaan

b′(x) ≡ b(x)(1 + x+ x2 + x3 + x4) + (1 + x+ x5 + x6) mod 1 + x8.

Tulosb′(x) = b′0 + b′1x+ b′2x

2 + b′3x3 + b′4x

4 + b′5x5 + b′6x

6 + b′7x7

tulkitaan tavuksib′7b′6b

′5b

′4b

′3b

′2b

′1b

′0 tai F28 :n alkioksi. JakaminenZ2[x]:ssä1 + x8:lla on

muuten helppoa, silläxk ≡ x(k,mod 8) mod 1 + x8.

Kohdan 2. operaatio voidaan ajatella myös matriisien avulla. Silloin tehdäänZ2:ssa affiinimuunnos

b′0b′1b′2b′3b′4b′5b′6b′7

=

1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 1 00 0 0 1 1 1 1 1

b0b1b2b3b4b5b6b7

+

11000110

.

Dekryptauksessa operaatio tehdään käänteisessä järjestyksessä,Z2[x]:ssä on nimittäin

1 = syt(1 + x+ x2 + x3 + x4, 1 + x8)

(helppo todeta Eukleideen algoritmilla), joten polynomilla 1 + x + x2 + x3 + x4 on inverssimodulo1 + x8 ja esiintyvä8× 8-matriisi on kääntyvä modulo2. Ko. inverssi onx+ x3 + x6.

Tavun muuntaminen on kokonaisuutena epälineaarinen tavumuunnos, joka voidaan antaayhtenä taulukkona, ns.RIJNDAELin S-laatikkona.Tällainen taulukko löytyy mm. MOLLIN istaja STINSONista.

LUKU 5. AES 37

5.2.3 Rivinsiirto (ShiftRows)

Tässä operaatiossa tilan matriisiesityksen rivien alkiotsiirretään syklisesti vasemmalle seuraa-vasti:

siirto 0. rivi 1. rivi 2. rivi 3. riviNB = 4 ei siirtoa 1 alkio 2 alkiota 3 alkiotaNB = 6 ei siirtoa 1 alkio 2 alkiota 3 alkiotaNB = 8 ei siirtoa 1 alkio 3 alkiota 4 alkiota

Dekryptattaessa siirretään rivejä samat määrät syklisesti oikealle.

5.2.4 Sarakkeiden sekoitus (MixColumns)

Tässä muunnoksessa tilamatriisin sarakkeet tulkitaan enintään astetta3 oleviksi polynomiren-kaanF28 [z] polynomeiksi. Kukin sarake (polynomi) kerrotaan kiinteälläF28 [z]:n polynomilla

c(z) = c0 ⊕ c1z ⊕ c2z2 ⊕ c3z

3

modulo1⊕ z4, missä

c0 = x , c1 = c2 = 1 ja c3 = 1 + x.

JakaminenF28 [z]:ssa polynomilla1⊕ z4 on erityisen helppoa, sillä

zk ≡ z(k,mod 4) mod 1⊕ z4.

Vaihtoehtoisesti operaatio voidaan ajatellaF28 :n lineaarimuunnoksena:

s′0is′1is′2is′3i

=

c0 c3 c2 c1c1 c0 c3 c2c2 c1 c0 c3c3 c2 c1 c0

s0is1is2is3i

Dekryptattaessa jaetaan polynomillac(z) modulo1⊕ z4. Vaikkakaan1⊕ z4 ei oleF28 [z]:njaoton polynomi1, c(z):llä on inverssi modulo1⊕ z4, sillä

1 = syt(c(z), 1⊕ z4).

Inverssi saadaan Eukleideen algoritmilla (työläs laskettava) ja se on

d(z) = d0 ⊕ d1z ⊕ d2z2 ⊕ d3z

3,

missä

d0 = x+ x2 + x3 , d1 = 1 + x3 , d2 = 1 + x2 + x3 ja d3 = 1 + x+ x3.

Dekryptattaessa siis sarake (polynomi) kerrotaand(z):lla modulo1⊕ z4 eikä operaatio ole senkummempi kuin kryptattaessakaan. MatriisimuodossaF28 :ssa

s0is1is2is3i

=

d0 d3 d2 d1d1 d0 d3 d2d2 d1 d0 d3d3 d2 d1 d0

s′0is′1is′2is′3i

.

1Se on nimittäin= (1⊕ z)4.

LUKU 5. AES 38

5.2.5 Kierrosavaimen lisäys (AddRoundKey)

Kierrosavain on yhtä pitkä kuin tilakin. Tässä operaatiossa kierrosavain lisätään biteittäin tilaanmodulo2. Käänteinen operaatio on sama.

5.2.6 Avaimen laajentaminen

KierrosavaimetR0,R1, . . . ,RNRsaadaan salausavaimesta laajentamalla se ja valitsemallasit-

ten laajennetusta avaimesta eri kierroksille tietty osa. Laajennetun avaimen pituus bitteinä onlB(NR + 1). Tavuihin jaettuna se voidaan esittää4 × NB(NR + 1)-matriisina, jolla on siisNB(NR + 1) kpl 4-pituista saraketta

w0,w1, . . . ,wNB(NR+1)−1.

Merkitään vastaavalla tavalla avaimen (matriisinK) sarakkeita:

k0,k1, . . . ,kNK−1.

Laajennettu avain lasketaan seuraavalla tavalla:

1. Asetetetaanwi ← ki (i = 0, . . . , NK − 1).

2. Määritellään loputwi:t rekursiivisesti seuraavilla säännöillä, missäF28 :n vektorien yh-teenlasku suoritetaan tavan mukaan alkioittain: :

2.1 Josi ≡ 0 mod NK, lasketaanu = xi/NK kunnassaF28 ja asetetaan

wi ← wi−NK⊕ SubByte(RotByte(wi−1))⊕

u000

.

Tässä operaatioSubByte soveltaa tavun muuntamista kuhunkin sarakkeen alkioon(tavuun). OperaatioRotByte puolestaan tekee sarakkeessa yhden alkion syklisensiirron ylöspäin.

2.2 JosNB = 8 ja i ≡ 4 mod NK, asetetaan

wi ← wi−NK⊕ SubByte(wi−1),

missä operaatioSubByte on sama kuin kohdassa 2.1.

2.3 Muutoin asetetaan yksinkertaisesti

wi ← wi−NK⊕wi−1.

Nyt i:nnen kierroksen kierrosavainRi saadaan sarakkeistawiNB, . . . ,w(i+1)NB−1 (i = 0, 1,

. . . , NR). ErityisestiNB ensimmäisestä sarakkeesta saadaan aluksi tarvittava lähtökierrosavainR0.

Huomautus. Avaimen laajennus voidaan tehdä ”etukäteen”, kunhan vain salausavain tiede-tään. Etukäteen voidaan aina laskea ainakinxi/NK :t kunnassaF28 .

LUKU 5. AES 39

5.2.7 Dekryptauksen muunnelma

Suoraan menetellen dekryptaus menee seuraavaa operaatioketjua—kryptausoperaatioiden kään-teisoperaatiot esitettiin edellä:

S← AddRoundKey(S,RNR)

S← ShiftRows−1(S)

S← SubBytes−1(S)

S← AddRoundKey(S,RNR−1)

S← MixColumns−1(S)

S← ShiftRows−1(S)

S← SubBytes−1(S)

...

S← AddRoundKey(S,R1)

S← MixColumns−1(S)

S← ShiftRows−1(S)

S← SubBytes−1(S)

S← AddRoundKey(S,R0)

Operaatioiden järjestys voidaan kuitenkin myös kääntää. Ensinnäkin rivinsiirron ja tavun muun-tamisen järjestyksellä ei ole väliä, edellinen operoi riveihin ja jälkimmäinen tavuihin. Sama kos-kee käänteisiä operaatioita. Toiseksi, operoinnit

S← AddRoundKey(S,Ri)

S← MixColumns−1(S)

voidaan korvata operoinneilla

S← MixColumns−1(S)

S← AddRoundKey(S,MixColumns−1(Ri))

Näin dekryptauksessa voidaan myös edetä ketjua

S← AddRoundKey(S,RNR)

S← SubBytes−1(S)

S← ShiftRows−1(S)

S← MixColumns−1(S)

S← AddRoundKey(S,MixColumns−1(RNR−1))

LUKU 5. AES 40

S← SubBytes−1(S)

S← ShiftRows−1(S)

S← MixColumns−1(S)

S← AddRoundKey(S,MixColumns−1(RNR−2))

...

S← SubBytes−1(S)

S← ShiftRows−1(S)

S← MixColumns−1(S)

S← AddRoundKey(S,MixColumns−1(R1))

S← SubBytes−1(S)

S← ShiftRows−1(S)

S← AddRoundKey(S,R0)

joka muistuttaa kovasti kryptausta. RIJNDAELin kryptaus ja dekryptaus ovat näin hyvin sa-manlaisia operaatioita.

5.3 RIJNDAELin kryptanalyysiä

RIJNDAEL on jo suunnitteluvaiheessa rakennettu kestämäänlikipitäen kaikkia tunnettuja hyök-käyksiä tämäntapaisille kryptosysteemeille.2 Suunnittelijat Joan Daemen ja Vincent Rijmen se-lostivat laajasti RIJNDAELin konstruktioperiaatteita julkisessa dokumentissa DAEMEN, J. &RIJMEN, V.: AES Proposal: Rijndael(1999), jonka he myöhemmin laajensivat kirjaksi DAE-MEN & R IJMEN. Mainittakoon vain lyhyesti, että erityisesti DESin yhteydessä paljon tutkitutlineaarinen kryptanalyysi ja differentiaalinen kryptanalyysi on RIJNDAELissa tehokkaasti es-tetty eri muodoissaan. Näitä kryptanalyysejä esittelee mm. STINSON (ks. myös Liite).

Toisaalta RIJNDAEL on oikeastaan ainoa ”parempi” kryptosysteemi lajiaan, jonka (ainoa)S-laatikko on kirjoitettavissa suhteellisen yksinkertaiseen algebralliseen muotoonF28 :ssa:

S(b) = s0 ⊕8⊕

i=1

(si ⊙ b255−2i−1

)

sopivilleF28 :n alkioilles0, s1, s2, s3, s4, s5, s6, s7, s8. Tästä jatkaen on suhteellisen helppo saadakoko kryptaukselle suora algebrallinen kaava! Onkin herännyt kysymys voiko tällaisia kaavo-ja laskennallisesti kääntää tehokkaasti. Myönteisessä tapauksessa RIJNDAEL olisi ilmeisestimurrettavissa. Asiaa tutkitaan vilkkaasti, toistaiseksimitään heikkouksia ei ole löytynyt.3

2Tässä on käytetty mm. suomalaismatemaatikon Kaisa Nybergin esittämiä ideoita. Ks. NYBERG, K.: Diffe-rentially Uniform Mappings for Cryptography.Proceedings of EuroCrypt ’93. Lecture Notes in Computer Science765. Springer–Verlag (1994), 55–64.

3Ks. esimerkiksi FERGUSON, N. & SCHROEPPEL, R. & WHITING , D.: A Simple Algebraic Representationof Rijndael.Proceedings of SAC ’01. Lecture Notes in Computer Science2259. Springer–Verlag (2001), 103–111ja MURPHY, S. & ROBSHAW, M.J.B.: Essential Algebraic Structure Within the AES.Proceedings of Crypto ’02.Lecture Notes in Computer Science2442. Springer–Verlag (2002), 1–16 sekä COURTOIS, N. & PIEPRZYK, J.:Cryptanalysis of Block Ciphers with Overdefined Systems of Equations.Proceedings of AsiaCrypt ’02. LectureNotes in Computer Science2501. Springer–Verlag (2002), 267–287.

LUKU 5. AES 41

5.4 AESin toimintamoodeja

Tavallinen AESin käyttötapa on kryptata pitkä viesti lohkokerrallaan samalla avaimella, ns.ECB-moodi(electronic codebook).

Toinen tapa, ns.CBC-moodi(cipher block chaining), on muodostaa aina viestilohkonwi jaedellisen kryptolohkonci−1 biteittäinen summa modulo2 eli wi ⊕ ci−1 ja kryptata se, käyttäenkoko ajan samaa avaintak. Aivan alussa tarvitaan tietty aloituslohkoc0 edellisen kryptolohkontilalla. Kaavamaisesti CBC-moodi on seuraavanlainen:

AES

c1

AES

c2

w2

k

w1

k

c0

cn 1

AES cn

wn

k

CBC-moodissa muutos jossain viestilohkossa aiheuttaa muutoksia sitä seuraavissa kryptoloh-koissa. CBC-moodia voidaan näin käyttääautentikointiineli ns.MACiin (message authentica-tion code) seuraavasti. Aloituslohko voisi olla vaikka pelkästään0-biteistä koostuva. Lähettä-jällä on viestilohkoistaw1, . . . , wn koostuva viesti ja hän laskee CBC-moodilla vastaavat kryp-tolohkotc1, . . . , cn käyttäen tiettyä salaista avaintak. Lähettäjä lähettää viestilohkot sekäcn:nvastaanottajalle. Vastaanottajalla on myös avaink ja hän pystyy sitä käyttäen tarkistamaan onkocn oikea.

Ns. OFB-moodissa(output feedback) käytetään AESia avaimen muuntamiseen jakryp-taukseen ONE-TIME-PADin tapaista menettelyä. Lähtien tietystä ”alkuavaimesta”κ0 saadaanavainvuoκ1, . . . , κn kryptaamalla AESilla toistuvasti tätä avainta,κ1 saadaan kryptaamallaκ0.Kryptatessa käytetään jälleen koko ajan samaa salaista avaintak. Kaavamaisesti:

AES

c2

w2

kκ2

c1

w1

κ1

κ0 AES

k

AES

cn

wn

kκn

cn 1

wn 1

κn 1

OFB-moodista saadaan variantti, ns.CFB-moodi(cipher feedback), kun avainvuon avainκi

muodostetaan kryptaamalla edeltävä kryptolohko. Jälleenκ1 saadaan kryptaamalla aloituslohkoc0.

AES

c1

w1

AES

kk

c0

cn 1

wn

AES cn

k

Tätä varianttia voidaan käyttää autentikointiin kuten CBC-moodiakin, jota se muutenkin myösmuistuttaa.

Lisäksi on muita moodeja, mm. ns.CTR-moodi(counter mode).

Luku 6

JULKISEN AVAIMEN KRYPTAUS

6.1 Algoritmien vaativuusteoriaa

Laskennallinen vaativuuseli kompleksisuusliittyy tehtävien laskennalliseen ratkaisemiseen tar-vittaviin resursseihin verrattuna tehtävän kokoon. Tehtävän kokoa mitataan syötteenpituudellaN , resurssit taas ovat yleensäaika eli laskenta-askelten lukumäärä taitila eli laskennan käyttä-mä maksimaalinen muistitila sopivasti mitattuna. Usein tehtävät ovat ns.tunnistustehtäviä,jois-sa ratkaisu on kyllä-vastaus. Hyvä viite klassisen kompleksisuusteorian osalta on HOPCROFT

& U LLMAN ja uudempia tuloksia on esimerkiksi kirjassa DU & K O.Jotta kompleksisuus saadaan yhteismitalliseksi, pitää sopia tietty algoritmin matemaattinen

malli, esimerkiksi Turingin koneilla laskeminen, ks. kurssi Automaattiteoria, Formaalit kielettai Matemaattinen logiikka. Algoritmimalleista on käytettävissädeterministinenversio, mis-sä algoritmilla ei ole valinnanmahdollisuuksia, jaepädeterministinenversio, missä algoritminseuraava askel saattaa olla valittavissa useista mahdollisista askelista. Jotta epädeterministisenalgoritmin voitaisiin sanoa ratkaisevan tehtävän, pitää tehdä seuraavat oletukset:

• Algoritmi pysähtyy, valitaanpa askelet miten tahansa.

• Algoritmi voi pysähtyä tilaan, jossa se ei ole ratkaissut tehtävää.

• Kun algoritmi pysähtyy tilaan, jossa se antaa ratkaisun, niin ratkaisun pitää olla oikea.Ratkaisuja voi tällöin olla useitakin.

• Tunnistustehtävissä tapaus, missä algoritmi ei anna yhtään kyllä-vastausta, tulkitaan ei-vastaukseksi.

• Muissa kuin tunnistustehtävissä epädeterministisen algoritmin on jokaisella syötteellätuotettava ratkaisu (tulostus) joillain askelvalinnoilla.

Epädeterministinen algoritmi onkin useimmiten parhaitenajateltavissa ratkaisun todennusme-netelmäksi, ei sen tuottamismenetelmäksi.

Kompleksisuutta tarkastellaan pääosin asymptoottisena,ts. suurten tehtävien osalta, eikävakiokertoimella eroavia aika-/tilakompleksisuuksia eroteta toisistaan, lineaarinen kiihdytys jatilan pakkaus kun ovat helppoja saada aikaan missä tahansa algoritmimallissa. Vaikka algoritmi-mallin valinnalla on selvä vaikutus kompleksisuuteen, sillä ei ole oleellista merkitystä, ts. se eimuuta kompleksisuusluokkia, joihin tehtävät vaativuutensa perusteella jaetaan. Usein komplek-sisuus annetaanO-notaatiomuodossaO(f(N)), ks. Pykälä 2.6. Menemättä sen tarkemmin al-goritmimalleihin, määritellään muutama keskeinen kompleksisuusluokka.

42

LUKU 6. JULKISEN AVAIMEN KRYPTAUS 43

AikakompleksisuusluokkaP (deterministisesti polynomiaikaiset tehtävät) muodostuu niistätehtävistä, joissaN-pituisen probleeman (syötteen) ratkaisemiseen deterministisellä algoritmil-la kuluu enintäänp(N) askelta, missäp on jokin tehtävästä riippuvaN :n polynomi. Esimerkiksikokonaislukujen peruslaskutoimitukset ja s.y.t.:n laskuovatP:ssä, ks. Luku 2.

AikakompleksisuusluokkaNP (epädeterministisesti polynomiaikaiset tehtävät) taas muo-dostuu niistä tehtävistä, joissaN-pituisen probleeman ratkaisemiseen epädeterministisellä al-goritmilla kuluu enintäänp(N) askelta, missäp on jokin jälleen tehtävästä riippuvaN :n poly-nomi. Esimerkiksi kokonaislukujen yhdisteisyys onNP:ssä: Arvataan (epädeterministisyys!)vain kaksi tekijää (6= 1) ja tarkistetaan kertolaskulla onko arvaus oikea.

Aikakompleksisuusluokkaco–NP (komplementäärisesti epädeterministisesti polynomiai-kaiset tehtävät) taas muodostuu niistä tunnistustehtävistä, joiden komplementti onNP:ssä.Probleemankomplementtisaadaan, kun kyllä- ja ei-vastaukset vaihdetaan keskenään. Esimer-kiksi alkuluvun tunnistus onco–NP:ssä, sillä sen komplementti on yhdisteisyystestaus, jokaonNP:ssä. Ei ole kovin vaikea näyttää, että alkuluvun tunnistusonNP:ssä, mutta huomattavastivaikeampi, että se onP:ssä, ks. Pykälä 7.4.

IlmeisestiP ⊆ NP ja tunnistustehtävien osaltaP ⊆ co–NP. Onko kumpikaan näistäsisältymisistä aito, on avoin probleema, ja hyvin kuuluisasellainen! Yleisesti uskotaan, ettäkumpikin on aito. Myöskään ei tiedetä, onko tunnistustehtävien osalta kumpikaan yhtälöistäNP = co–NP taiP = NP ∩ co–NP voimassa, yleisesti kuitenkin uskotaan, ettei ole.

TilakompleksisuusluokkaPSPACE (deterministisesti polynomitilaiset tehtävät) muodos-tuu niistä tehtävistä, joissaN-pituisen probleeman (syötteen) ratkaisemiseen deterministisel-lä algoritmilla tarvitaan enintäänp(N) muistiyksikköä, missäp on jokin tehtävästä riippuvaN :n polynomi. Esimerkiksi kokonaislukujen peruslaskutoimitukset ja s.y.t.:n lasku ovat tietystiPSPACE :ssä.

TilakompleksisuusluokkaNPSPACE (epädeterministisesti polynomitilaiset tehtävät) taasmuodostuu niistä tehtävistä, joissaN-pituisen probleeman ratkaisemiseen epädeterministiselläalgoritmilla kuluu enintäänp(N) muistiyksikköä, missäp on jokin jälleen tehtävästä riippuvaN :n polynomi. Ei ole kovin vaikea päätellä, että

NP ⊆ PSPACE = NPSPACE ,

mutta sitä ei tiedetä onko sisältyminen aito.Algoritmissa saattaa olla mukana ideaalisen satunnaisluvun generointi, jolloin algoritmi on

probabilistineneli stokastinen.Stokastinen algoritmi saattaa satunnaisesti epäonnistua, ts. se eituota lainkaan tulosta ja luopuu tehtävän ratkaisemisesta. Tällaisia algoritmeja kutsutaanLasVegas -algoritmeiksi.Stokastinen algoritmi saattaa toisaalta satunnaisesti tulostaa väärän rat-kaisun, tällaisia algoritmeja kutsutaan puolestaanMonte Carlo -algoritmeiksi.Huomaa, ettäjokainen Las Vegas -algoritmi voidaan helposti muuntaa Monte Carlo -algoritmiksi (miten?).

Monte Carlo -algoritmeja vastaava polynomiaikainen kompleksisuusluokka onBPP (rajoi-tetun todennäköisyyden polynomiaikaiset tehtävät). Algoritmin pitää tällöin tuottaa oikea tulosvähintään todennäköisyydelläp, missäp > 1/2 on ennalta valittu syötteestä riippumaton luku.LuokkienBPP jaNP suhde on pitkälti avoin—ei esimerkiksi tiedetä sisältyyköjompikumpitoiseen.

Tulevaisuuden kvanttitietokoneita ajatellen voidaan edelleen määritellä polynomiaikainenkompleksisuusluokkaBQP (rajoitetun virheen kvanttipolynomiaikaiset tehtävät). Kryptauk-seen liittyen on mielenkiintoista todeta, että tähän luokkaan kuuluvat lukujen tekijöihinjako jadiskreetti logaritmi (ns.Shorin algoritmit,ks. Pykälä 15.3).

Algoritmin tehtävä saattaa olla yhden tehtävän probleemankonvertoiminen toisen tehtävänprobleemaksi, tällöin puhutaanreduktiosta.Jos tehtäväA saadaan redusoiduksi toiseksi tehtä-väksiB käyttäen deterministisessä polynomiajassa toimivaa reduktiota, saadaanB:n determi-

LUKU 6. JULKISEN AVAIMEN KRYPTAUS 44

nistisestä polynomiaikaisesta algoritmistaA:lle deterministinen polynomiaikainen algoritmi.1

Tehtävän sanotaan olevanNP-kova,jos jokainenNP:n tehtävä voidaan redusoida siihen de-terministisellä polynomiaikaisella algoritmilla.NP-kova tehtävä onNP-täydellinen,jos se onitseNP:ssä.NP-täydellinen tehtävä on siinä mielessä ”pahin mahdollinen”, että jos se voi-taisiin näyttää deterministisesti polynomiaikaiseksi, niin kaikki NP:n tehtävät olisivatP:ssäjaNP = P.NP-täydellisiä tehtäviä tunnetaan nykyään toistatuhatta, laskentatavasta riippuenenemmänkin.

Lause 6.1.Jos jokinNP-täydellinen tunnistustehtävä onNP ∩ co–NP:ssä, niin tunnistus-tehtävien osaltaNP = co–NP.

Todistus.Oletetaan, että jokinNP-täydellinen tunnistustehtäväC onNP ∩ co–NP:ssä. Tar-kastellaan mielivaltaistaNP:ssä olevaa tunnistustehtävääA. KoskaC onNP-täydellinen, onA redusoitavissa deterministisessä polynomiajassaC:hen. Näin ollenA:n komplementti onredusoitavissa deterministisessä polynomiajassaC:n komplementtiin, joka on myösNP:ssä.SiispäA on co–NP:ssä.A oli mielivaltaisesti valittu, jotenNP ⊆ co–NP ja välittömänäseurauksena myösco–NP ⊆ NP, ja edelleenNP = co–NP.

Koska yleisesti uskotaan, ettäNP 6= co–NP, ei mikäänNP-täydellinen tunnistustehtävä näinolisiNP ∩ co–NP:ssä.

Vanha tehtävien jako laskenta-ajan puolesta käytännössä mahdollisiin eli selviäviin (trac-table) ja liian aikaaviepiin eliselviämättömiin(intractable) on se, ettäP:n tehtävät ovat selviä-viä ja muut selviämättömiä. Koska yleisesti uskotaan, ettäNP 6= P, olisivatNP-täydellisettehtävät selviämättömiä. Käytännössä luokanBPP :kin tehtävät ovat mahdollisia ratkaista: so-velletaan algoritmia vain tehtävään niin monta kertaa, että todennäköisyys sille, että puolet näis-tä tuottaisi väärän tuloksen, on häviävän pieni. Kryptologiassa on näin ollen luonnollista vaatia,että kryptaus- ja dekryptausfunktiot ovatP:ssä. On kuitenkin muistettava, että kryptaus saattaasisältää stokastisia elementtejä.

6.2 Julkisen avaimen kryptosysteemi

Julkisen avaimen kryptosysteemissä eli epäsymmetrisessäkryptosysteemissä on ainakin kaksiavainta: julkinen avain ja salainen avain tai useampia sellaisia. Jotta salaisuus pysyisi, pitää ollalaskennallisesti hyvin vaativaa laskea salainen avain julkisesta avaimesta lähtien. Julkinen avainvoidaan jättää ”paikkaan”, josta kuka tahansa halukas voi sen ottaa käyttöön ja lähettää kryp-tatun viestin jollekin salaisen avaimen haltijalle. Tämänsinänsä yksinkertaisen idean esittivätWhitfield Diffie ja Martin Hellman sekä heistä riippumatta Ralph Merkle vuonna 1976.2

Äkkiseltään tuntuisi olevan hyvä idea järjestää avaimet siten, että kryptanalyysi CO-datan jajulkisen avaimen avulla olisi laskennallisesti hyvin vaativa, esimerkiksiNP-täydellinen. Mel-ko ilmeisesti kyseinen kryptanalyysitehtävä on nimittäinNP:ssä: Arvataan vain selväteksti jakryptataan se julkisella avaimella. Vaikka kryptauksessaolisi mukana stokastisiakin elementtejä(satunnaisuutta), tämä menettely toimii, sillä satunnaiset valinnat voidaan myös arvata.

1Huomaa, että vaikka polynomiaikaisen reduktion tuloste voi olla pidempi kuin sen syöte, tulosteen pituus onkuitenkin polynomiaalinen syötteen pituuteen verrattuna, ja kahden polynomin yhdistetty funktio on polynomi.Vastaavaa ominaisuutta ei juuri ole muilla funktioluokilla. Esimerkiksi kahden eksponenttifunktion yhdiste ei oleeksponenttifunktio.

2Alkuperäisviite on DIFFIE, W. & HELLMAN , M.: New Directions in Cryptography.IEEE Transactions onInformation TheoryIT–22 (1976), 644–654. Tiettävästi jo hieman aikaisemmin englantilaiset James Ellis, CliffordCocks ja Malcolm Williamson keksivät saman idean, mutta he työskentelivät tiedusteluorganisaatiossa GCHQ(Government Communications Headquarters) ja työ jäi salaiseksi ja julkistettiin vasta vuonna 1997.

LUKU 6. JULKISEN AVAIMEN KRYPTAUS 45

Mainittu kryptanalyysitehtävä voidaan myös pukea tunnistustehtäväksi, ns.kryptotunnis-tukseksi:”Onko kolmikossa(w, k, c), missäk on julkinen avain,w kryptotekstiäc vastaavaselväteksti?” Kryptotunnistus onP:ssä, mikäli kryptaus on determinististä, joten sen saami-nen kompleksisemmaksi edellyttää stokastistista kryptausta. Kovin pitkälle tällä tavoinkaan eiluultavasti päästä, sillä

Lause 6.2. Jos jollekin kryptosysteemille kryptotunnistus onNP-täydellinen, niinNP =co–NP.

Todistus.Kryptotunnistustehtävä on ilmeisestiNP:ssä, stokastiset osat voidaan arvata. Se ontoisaalta myösco–NP:ssä. Jos nimittäinc on kryptoteksti, niin sitä vastaa tarkalleen yksi selvä-teksti, muutoinhan dekryptaus ei onnistu. Arvataan nyt jokin selvätekstiw′ ja kryptataan se jul-kisella avaimellak. Jos tuloksena onc, verrataanw:tä jaw′:a ja hyväksytään kolmikko(w, k, c),mikäli w 6= w′. Josw′:n kryptaus ei annac:tä taiw = w′, menettely pysähtyy antamatta tulosta.Kryptotunnistus on siisNP ∩ co–NP:ssä ja tulos seuraa Lauseesta 6.1.

Näin ollen kryptotunnistus ei luultavastikaan voi käytännössä ollaNP-täydellinen. Tulososoittaa myös sen, etteivät stokastiset kryptosysteemit liene huomattavasti parempia kuin deter-ministiset.

Julkisen avaimen systeemien yhteydessä on tapana puhua ns.yksisuuntaisista funktioista:funktio y = f(x) on yksisuuntainen, josy:n laskeminenx:stä on selviävä, muttax:n laske-mineny:stä on selviämätön, ehkä jopaNP-täydellinen. Jos julkisen avaimen systeemin kryp-tausfunktio onek, niin funktio (c, k) = (ek(w), k) = f(w, k) on ideaalisesti yksisuuntainen.Huomaa, että koska julkinen avaink on aina saatavilla, se on mukana funktion arvossa. Kiin-teälle julkiselle avaimellek vastaava salainen avain antaa toisaalta ns.salaluukun,jolla w voi-daan laskeac:stä nopeasti. Salaluukun olemassaolo tietysti merkitseesitä, ettei kryptausfunktiotodellisuudessa ole yksisuuntainen, josk on kiinteä.

Huomautus. Salaluukun liittäminenNP-täydelliseen tehtävään on osoittautunut pulmallisek-si. Käytännössä salaluukun mukaan ottaminen rajaa muutenNP-täydellisestä tehtäväpiiris-tä osan, joka ei oleNP-täydellinen eikä usein edes kovin vaativa. Itse asiassa yhdestäkäänkryptosysteemeihin liittyvästä funktiosta, jonka pitäisi ideaalisesti olla yksisuuntainen, ei olevoitu todistaa, että se sitä olisi. Taustalla kummittelee tietystiP = NP -probleema. Otolli-sia probleemoja, joiden varaan voi rakentaa hyvän kryptosysteemin, ovatkin sellaiset, joidenkompleksisuus on avoin. Tällöin systeemin murtaminen merkitsisi samalla teoreettista läpimur-toa kompleksisuusteoriassa ja algoritmikehityksessä. Kaikki tämä, ja myös Lause 6.2, tietääsitä, ettei kompleksuusteorialla ole aivan sellaista merkittävää roolia kryptologiassa kuin useintodetaan. Kryptografia nimittäin mainitaan usein kompleksisuusteorian käytännön sovellukse-na ’par excellence’.

Julkisen avaimen kryptosysteemeillä voidaan toteuttaa protokollia, joihin ei salaisen avai-men systeemeillä pystytä. Otetaan esimerkkinäaidonnusja allekirjoitus.Jos B haluaa varmen-taa, että viesti tulee A:lta, pitää viestissä olla mukana tietoa, joka riittävän yksiselitteisesti spe-sifioi A:n sen lähettäjäksi. Seuraavat vaatimukset ovat tällöin luonnollisia:

(i) Sekä A:n että B:n tulee pystyä suojautumaan valeviestejä vastaan. Ulkopuolinen taho Cei saa voida tekeytyä A:ksi.

(ii) A:n tulee pystyä suojautumaan B:n tekemiä väärennöksiä vastaan, joiden hän väittää al-lekirjoitettuina tulleen A:lta.

(iii) A ei saa voida kieltää lähettäneensä viestiä, jonka hän tosiasiallisesti lähetti.

LUKU 6. JULKISEN AVAIMEN KRYPTAUS 46

MerkitääneA:lla ja eB:llä A:n ja B:n julkisia kryptausfunktioita jadA:lla sekädB:llä vastaaviasalaisia dekryptausfunktioita. Tässä oletetaan, että kryptaus on deterministinen. Menettely onnyt seuraava:

1. A lähettää viestinw B:lle muodossac = eB(dA(w)).

2. B laskee:eA(dB(c)) = eA(dA(w)) = w. Huomaa, ettäeA ja dA ovat käänteisfunktioita.

Ehdot (i) ja (iii) toteutuvat, sillä vain A tietäädA:n. Viestissä tulee silloin olla tunnistettavaoikeantyyppinen sisältö, muutoinhan viestillä ei ole välttämättä mitään merkitystäkään. Myösehto (ii) toteutuu, sillä B:n olisi mahdotonta itse generoida oikeannäköistä viestiä, koska hänei tiedädA:ta. Jos vain allekirjoitus on tärkeä, mutta ei viestin salaaminen, riittää, että A lä-hettää B:lle parin(w, dA(w)). Tämä yksinkertaisin versio aidonnuksesta/allekirjoituksesta onhaavoittuva, ja parempiakin protokollia on, ks. Luku 13.

6.3 Reppusysteemin nousu ja tuho

Esimerkkinä edellisen pykälän kompleksisuuspäättelyjenvaikutuksista on tunnettu julkisenavaimen systeemi KNAPSACK3 eli reppusysteemi.

Reppusysteemin pohjalla on ns.reppuprobleema.Sen syötteenä on(a, m), missäa =(a1, a2, . . . , an) on positiivisten kokonaislukujen vektori jam on positiivinen kokonaisluku jos-sain lukujärjestelmässä esitettyinä. Tehtävänä on kirjoittaam joidenkina:n komponenttien sum-maksi tai ilmoittaa, ettei tällainen kirjoitelma ole mahdollinen. Ts. tehtävänä on valita0–1-luvutc1, c2, . . . , cn siten, että

n∑

i=1

ciai = m

tai sitten ilmoittaa, ettei se ole lainkaan mahdollista. Tunnistustehtävässä pitää vain ilmoittaaonko valinta mahdollinen. Reppuprobleema on selvästiNP:ssä: Arvataan vainc1, c2, . . . , cn jatestataan onko arvaus oikea. Itse asiassa sen tiedetään olevanNP-täydellinen.

KNAPSACKin kryptaus tapahtuu seuraavasti. Viestisymbolit ovat bittejä ja viestilohkonpituus onn. Viestilohkow = b1b2 · · · bn (bittijono) kryptataan luvuksi

c = ek(w) =

n∑

i=1

biai.

Julkinen avaink ona. Ilmeisesti tällainen kryptaus onP:ssä. Kryptanalyysi lähtienc:stä jaa:staon näinNP-täydellinen.

Ilman mitään apuneuvoja KNAPSACKin dekryptaus olisi sekinNP-täydellinen. Salaluuk-ku otetaan käyttöön lähtemällä liikkeelle yksinkertaisista reppuprobleemoista, jotka voidaanratkaistaP:ssä, ja muuntamalla nämä sitten tavallisen mielivaltaisen reppuprobleeman valepu-kuun. Tämän vm. reppuprobleemana julkaistaan julkisena avaimena. Salaluukkutietoa käyt-täen voidaan reppuprobleema(a, c) palauttaa alkuperäiseen helposti ratkaistavaan muotoonsaja näin dekryptata salattu viesti. Mutta tämä ei johda vahvaan kryptosysteemiin, ts. salaluukkuakäyttäen ei voida saada valepukuista reppusysteemiä, jonka kryptanalyysi olisiNP-täydelli-nen. Itse asiassa KNAPSACKin eri variantit onkin todettu vaarallisen heikoiksi eikä niitä juuri-kaan enää käytetä. Sangen tunnettu on ns.Shamirin hyökkäysperusKNAPSACKiä vastaan, ks.esimerkiksi SALOMAA .

3KNAPSACK on yhtenä ensimmäisistä julkisen avaimen kryptosysteemeistä ”historiallisesti” merkittävä, alku-peräisviite on MERKLE, R. & HELLMAN , M.: Hiding Information and Signatures in Trapdoor Knapsacks. IEEETransactions in Information TheoryIT–24 (1978), 525–530.

LUKU 6. JULKISEN AVAIMEN KRYPTAUS 47

6.4 Julkisen avaimen kryptaukseen sopivia tehtäviä

Reppuprobleeman tavoin ne tehtävätyypit, joille on löydetty käyttöä julkisen avaimen kryp-tauksessa, ovat yleensä lukuteorian tai algebran tehtäviä, usein alunperin hyvinkin abstraktejaja vain teoreettisesti kiinnostavia. Tämä on tuonut monet aikaisemmin täysin puhtaan matema-tiikan piiriin kuuluviksi katsotut probleemat ja tuloksetkäytännön kryptosysteemien pohjaksi.Erityisesti algebrallisen lukuteorian sekä siihen liittyvän algebrallisten käyrien teorian sangenesoteerisiksi katsotut tulokset ja tehtävät ovat näin tulleet konkreettiseen ja laajaan käyttöön.

Eräitä esimerkkejä:

Kryptosysteemi TehtävätyyppiRSA, RABIN Kahden suuren alkuluvun aukikerrotun

tulon tekijöihinjakoELGAMAL, DIFFIE–HELLMAN, XTR Diskreetin logaritmin laskeminen

syklisessä ryhmässäMENEZES–VANSTONE, CRANDALL Logaritmin laskeminen elliptisen käyrän

määrittämässä syklisessä ryhmässäARITHMETICA Konjugaattiprobleema ryhmässäNTRU Lukuhilan pienimmän vektorin etsiminenMCELIECE, NIEDERREITER Algebrallis-geometrisen lineaarisen koodin

(Goppan koodin) dekoodaus

Näistä neljän ensimmäisen tarkkaa kompleksisuutta ei tiedetä, tehtävät ovat kuitenkinNP:ssä.Lukuhilan pienimmän vektorin etsiminen ja lineaarisen koodin dekoodaus (ks. kurssi Koodaus-teoria) taas ovat tunnetustiNP-täydellisiä tehtäviä, joten NTRUn, MCELIECEn ja NIEDER-REITERin osalta tilanteen pitäisi olla samantapainen kuinKNAPSACKin, jota ne muutenkinkaukaisesti muistuttavat. Näistä onkin löydetty heikkouksia.4 MCELIECEn tarvitsemien avain-ten suuri koko on vakavasti rajoittanut sen käyttöä. Sen sijaan NTRU on jossain määrin käytös-sä. ARITHMETICAn haittapuolena on sopivan ryhmän löytäminen—tähänastiset valinnat ovatosoittautuneet huonoiksi.

Jatkossa käsitellään systeemejä RSA, ELGAMAL, DIFFIE–HELLMAN, XTR, MENEZES–VANSTONE ja NTRU. Hyvä yleisesitys on esimerkiksi kirjassaGARRETT.

4Ks. esimerkiksi CANTEAUT, A. & SENDRIER, N.: Cryptanalysis of the Original McEliece Cryptosystem.Proceedings of AsiaCrypt ’98. Lecture Notes in Computer Science1514. Springer–Verlag (2000).

Luku 7

LUKUTEORIA. OSA 2

7.1 Eulerin funktio ja Eulerin lause

Palataan aluksi Pykälässä 2.4 jo mainittuun Eulerin funktioonφ(m), joka ilmoitti kokonaislu-vulle m ≥ 2 niiden kokonaislukujenx lukumäärän välillä1 ≤ x < m, joille syt(x,m) = 1, jasamalla alkuluokkien lukumäärän modulom. Tavallisesti määritellään myösφ(1) = 1.

Lause 7.1.(i) Josp on alkuluku jak ≥ 1, niin

φ(pk) = pk−1(p− 1).

Erikoisestiφ(p) = p− 1.

(ii) Jossyt(m,n) = 1, niinφ(mn) = φ(m)φ(n)

(φ:n multiplikatiivisuus).

Todistus.(i) Luvuista1, 2, . . . , pk, jokap:s onp:llä jaollinen. Näin ollenp:llä jaottomia lukujaonpk − pk/p = pk−1(p− 1) kpl.

(ii) Kirjoitetaan luvut1, 2, . . . , mn taulukoksi

1 2 3 · · · nn+ 1 n+ 2 n+ 3 · · · 2n2n+ 1 2n+ 2 2n + 3 · · · 3n

......

......

(m− 1)n+ 1 (m− 1)n+ 2 (m− 1)n+ 3 · · · mn

Tapauksetn = 1 ja m = 1 ovat selviä, joten voidaan olettaa, ettän,m ≥ 2. Jokaisessa sarak-keessa olevat luvut ovat keskenään kongruentteja modulon. Lauseen 2.11 Seurauksen nojal-la kunkin sarakkeen luvut taas muodostavat jäännössysteemin modulom. Sellaisia sarakkeita,joissa olevien lukujen s.y.t.n:n kanssa on= 1, onφ(n) kpl. (Muista, että josx ≡ y mod n,niin syt(x, n) = syt(y, n).) Kussakin tällaisessa sarakkeessa onφ(m) sellaista lukua, joidens.y.t.m:n kanssa on= 1. Nämä luvut ovat ne, joiden s.y.t.mn:n kanssa on= 1, ja niitä onφ(m)φ(n) kpl.

Käyttäen luvunx alkutekijöihinjakoa

x = pi11 pi22 · · · p

iNN

48

LUKU 7. LUKUTEORIA. OSA 2 49

(ks. Lauseet 2.2 ja 2.6) saadaan lausetta käyttäen

φ(x) = φ(pi11 )φ(pi22 ) · · ·φ(p

iNN ) = pi1−1

1 pi2−12 · · · piN−1

N (p1 − 1)(p2 − 1) · · · (pN − 1).

Koska tekijöihinjako kuitenkin on vaativa operaatio, eiφ(x) ole tätä kautta laskettavissa käytän-nössä, ellei jakoa ole valmiina saatavilla. Tästä joka tapauksessa nähdään melko suoraan, ettäjosx on yhdistetty luku, niinφ(x) < x− 1, ja ettäφ(x) ≥

√x, kunx > 6.

Keskeinen tulos mm. RSA-kryptosysteemin määrittelyssä on

Lause 7.2. (Eulerin lause)Jossyt(x,m) = 1, niin

xφ(m) ≡ 1 mod m.

Todistus.Valitaan positiivisesta jäännössysteemistä modulom alkuluokkien edustajatj1, j2,. . . , jφ(m) eli supistettu jäännössysteemi. Silloin luvutxj1, xj2, . . . , xjφ(m) muodostavat myössupistetun jäännössysteemin, sillä Lauseen 2.11 Seurauksen mukaisesti ne eivät ole keskenäänkongruentteja ja niiden s.y.t.m:n kanssa on= 1. Niinpä voidaan luvutxj1, xj2, . . . , xjφ(m) jaj1, j2, . . . , jφ(m) asettaa jossakin järjestyksessä pareittain kongruenssiin:

xjk ≡ jik mod m (k = 1, 2, . . . , φ(m)).

Kertomalla nämä kongruenssit puolittain keskenään saadaan

xφ(m)j1j2 · · · jφ(m) ≡ j1j2 · · · jφ(m) mod m

ja, koskasyt(j1j2 · · · jφ(m), m) = 1, supistamalla edelleenxφ(m) ≡ 1 mod m.

Välittömänä seurauksena saadaan

Lause 7.3. (Fermat’n pieni lause)Josp on alkuluku jax ei olep:llä jaollinen, niin

xp−1 ≡ 1 mod p.

Eulerin lause on usein avuksi laskettaessa kongruenssipotensseja modulom. Paitsi että käy-tetään venäläisten talonpoikien algoritmia, redusoidaanensin eksponentti moduloφ(m). Josk = qφ(m) + r (jakolasku), niin

xk = xqφ(m)+r = (xφ(m))qxr ≡ 1q · xr = xr mod m.

Edelleen huomataan välittömästi, että

x−1 ≡ xφ(m)−1 mod m

ja että josk ≡ l mod φ(m), niin xk ≡ xl mod m. (Koko ajan olettaen, ettäsyt(x,m) = 1.)Erityisesti Fermat’n pieni lause on käyttökelpoinen laskettaessa kongruenssipotensseja moduloalkuluku. Josp on alkuluku, niin esimerkiksi aina

xp ≡ x mod p.

7.2 Kertaluku ja diskreetti logaritmi

Pienintä sellaista lukuai ≥ 1 (jos olemassa), ettäxi ≡ 1 mod m, kutsutaanx:n kertaluvuksimodulom. Seuraavassa muutama kertaluvun perusominaisuus:

LUKU 7. LUKUTEORIA. OSA 2 50

Lause 7.4.(i) Kertaluku on olemassa täsmälleen silloin, kunsyt(x,m) = 1.

(ii) Josxj ≡ 1 mod m ja x:n kertaluku modulom on i, niin i jakaaj:n. Erityisesti Eulerinlauseen seurauksenai jakaaφ(m):n.

(iii) Josx:n kertaluku modulom on i, niin xj :n kertaluku modulom on

pyj(i, j)

j=

i

syt(i, j)

(ks. Lause 2.9).

(iv) Josx:n kertaluku modulom on i ja y:n kertaluku modulom on j ja syt(i, j) = 1, niinxy:n kertaluku modulom on ij.

Todistus.(i) Kun syt(x,m) = 1, niin ainakinxφ(m) ≡ 1 mod m (Eulerin lause). Toisaalta,jos syt(x,m) 6= 1, on ilmeisesti myössyt(xi, m) 6= 1 ja näin ollenxi 6≡ 1 mod m, ainakun i ≥ 1.

(ii) Josxj ≡ 1 mod m, muttax:n kertalukui ei jakaisij:tä, niinj = qi+r, missä1 ≤ r < i,(jakolasku) ja

xr = xr · 1q ≡ xr(xi)q = xqi+r = xj ≡ 1 mod m

ja i ei olisikaan pienin mahdollinen.

(iii) Josx:n kertaluku modulom on i ja xj :n kertaluku modulom on l, niin ensinnäkini | jl(kohta (ii)) jaj | jl, jotenpyj(i, j) | jl eli pyj(i, j)/j on l:n tekijä. Toiseksi(xj)pyj(i,j)/j ≡1 mod m, jotenl jakaapyj(i, j)/j:n (kohta (ii) jälleen). Siispäl = pyj(i, j)/j.

(iv) Josx:n kertaluku modulom on i ja y:n kertaluku modulom on j ja syt(i, j) = 1, niinensinnäkin

(xy)i = xiyi ≡ yi mod m,

joten (xy)i:n kertaluku modulom on sama kuinyi:n eli j (kohta (iii)). Mutta, josxy:nkertaluku modulom onk, niin (xy)i:n kertaluku modulom onk/syt(i, k) (jälleen kohta(iii)). Näin ollen j | k. Vastaavasti todetaan, ettäi | k. Koskasyt(i, j) = 1, on näin ollenoltavaij | k. Toisaalta

(xy)ij = (xi)j(yj)i ≡ 1 mod m,

josta seuraa, ettäk | ij (kohta (ii)). Siispäk = ij.

Josg:n kertaluku modulom on suurin mahdollinen eliφ(m) ja1 ≤ g < m, niin g on ns.m:nprimitiivinen juuri eli primitiivinen juuri modulom. Tietysti tällöin pitää ollasyt(g,m) = 1.Koskag:n potenssit

1, g, g2, . . . , gφ(m)−1

eivät tällöin ole keskenään kongruentteja—muutoin voitaisiin pienempi potenssi supistaa poiskongruenssista ja saadag:lle φ(m):ää pienempi kertaluku—ja niitä onφ(m) kpl, ne muodosta-vat itse asiassa supistetun jäännössysteemin. Seuraava primitiivisten juurten ominaisuus otetaankäyttöön todistuksetta1.

1Todistus ei ole kovin vaikea, mutta aika pitkä—tapauksetm = 2 ja m = 4 ovat tietysti triviaaleja. Se löytyykutakuinkin mistä tahansa lukuteorian kirjasta, ks. esimerkiksi SIERPINSKI. Myös kryptologian kirjoista saattaalöytyä tämä todistus, ks. esimerkiksi KRANAKIS tai GARRETT.

LUKU 7. LUKUTEORIA. OSA 2 51

Lause 7.5.Luvullam ≥ 2 on primitiivisiä juuria tarkalleen siinä tapauksessa, että se on joko2 tai 4 tai muotoapk tai 2pk, missäp on pariton alkuluku. Alkuluvulla on siis aina primitiivisiäjuuria.

Helppo sen sijaan on todistaa primitiivisten juurten lukumäärä, mikäli sellaisia on:

Lause 7.6.Jos on primitiivisia juuria modulom, niin niitä onφ(φ(m)) kpl.2 Erityisesti alkulu-vulla p on primitiivisiä juuriaφ(p− 1) kpl.

Todistus.Josg onm:n primitiivinen juuri, niin luvuista

(gi, mod m) (i = 1, 2, . . . , φ(m)− 1)

ne, joissasyt(i, φ(m)) = 1, ovat myösm:n primitiivisiä juuria ja itse asiassa tarkalleen kaikkim:n primitiiviset juuret (Lause 7.4 (iii)). Näin ollen, jos luvulla m yleensä on primitiivisiäjuuria, niin niitä onφ(φ(m)) kpl.

Yllä olevasta saadaan välittömänä seurauksena seuraava tunnettu alkulukujen karakterisoin-ti.

Lause 7.7. (Lucas’n kriteeri alkuluvuille) Lukup ≥ 2 on alkuluku täsmälleen silloin, kun onolemassa kertalukuap− 1 modulop oleva luku.

Todistus.Josp on alkuluku, sillä on primitiivinen juuri ja se on kertalukuap− 1.Jos taas on lukux, joka on kertalukuap− 1 modulop, niin p:n on oltava alkuluku. Muutoin

nimittäin φ(p) < p − 1 eikäx:n kertaluku voi näin ollap − 1, sillä p − 1 | φ(p) (Lause 7.4(ii)).

Mainittakoon, ettei tunneta kovin tehokkaita yleisiä algoritmeja primitiivisten juurten löytä-miseksi, edes alkuluvuille. Jos toisaalta tunnetaanφ(m):n tekijät, niin seuraava tulos antaam:nprimitiiviselle juurelle käyttökelpoisen testin, jota tarvitaan pystytettäessä tiettyjä kryptosystee-mejä, ks. Pykälä 10.1. Yleisessä tapauksessa joφ(m):n laskeminen on vaativa tehtävä suurillem:n arvoille, tekijöihinjaosta puhumattakaan.

Lause 7.8. (Lucas’n kriteeri primitiiviselle juurelle) Luku1 ≤ g < m onm:n primitiivinenjuuri täsmälleen silloin, kunsyt(g,m) = 1 ja jokaiselleφ(m):n alkutekijälleq on gφ(m)/q 6≡ 1mod m.

Todistus.Josg on m:n primitiivinen juuri, niin ilmeisestisyt(g,m) = 1 ja gφ(m)/q 6≡ 1 mod mjokaiselleφ(m):n alkutekijälleq, koskag:n kertaluku onφ(m).

Jos taassyt(g,m) = 1 ja gφ(m)/q 6≡ 1 mod m jokaiselleφ(m):n alkutekijälleq, niin g:nkertalukui jakaaφ(m):n (Lause 7.4 (ii)), ts.φ(m) = il. Josl = 1, niin i = φ(m) ja g onprimitiivinen juuri. Muu ei toisaalta tule kysymykseen, sillä jos olisi l > 1, niin l:llä olisialkutekijäq′ ja l = q′t ja

gφ(m)/q′ = gil/q′

= git = (gi)t ≡ 1t = 1 mod m.

Yhdistämällä nämä kaksi Lucas’n kriteeriä saadaan vielä

Lause 7.9. (Lucas–Lehmer-kriteeri alkuluvulle)Lukup ≥ 2 on alkuluku täsmälleen silloin,kun on olemassa sellainen lukug, ettägp−1 ≡ 1 mod p ja jokaisellep− 1:n alkutekijälleq ong(p−1)/q 6≡ 1 mod p.

2Tämä on syy, miksi kummallisen näköinen lausekeφ(φ(m)) esiintyy toisinaan esimerkiksi kryptografiassa.

LUKU 7. LUKUTEORIA. OSA 2 52

Todistus.Josp on alkuluku, valitaang:ksi jokin primitiivinen juuri modulop.Oletetaan sitten, että luvulleg ongp−1 ≡ 1 mod p ja g(p−1)/q 6≡ 1 mod p jokaisellep−1:n

alkutekijälleq. Silloin p | gp−1−1, jotensyt(g, p) = 1. Edelleen, josj ong:n kertaluku modulop, niin j | p−1 (Lause 7.4. (ii)). Päätellään, aivan kuten edellisessä todistuksessa, ettäj = p−1,ja Lucas’n kriteerin nojalla edelleen, ettäp on alkuluku.

Koskam:n primitiiviselle juurelleg luvut 1, g, g2, . . . , gφ(m)−1 muodostavat supistetun jään-nössysteemin modulom, niin jokaiselle luvullex, jolla ei ole yhteisiä tekijöitäm:n kanssa, ontäsmälleen yksi sellainen eksponenttiy väliltä 0 ≤ y < φ(m), ettägy ≡ x mod m. Tä-tä eksponenttia kutsutaanx:n diskreetiksi logaritmiksieli indeksiksimodulom kannassag. Eitunneta tehokkaita algoritmeja diskreetin logaritmin laskemiseksi ja tähän perustuu mm. kryp-tosysteemi ELGAMAL. Asiaan palataan myöhemmin. Epädeterministinen polynomiaikainenalgoritmi lähtien syötteestä(m, g, x) tietysti on: Arvataan vain indeksiy ja testataan onko seoikea. Potenssiinkorotus venäläisten talonpoikien algoritmilla redusoiden tulosta modulom onpolynomiaikainen.

7.3 Kiinalainen jäännöslause

Jos modulinm tekijöitä tunnetaan, ts. voidaan kirjoittaa

m = m1m2 · · ·mk,

seuraa kongruenssistax ≡ y mod m luonnollisesti kongruenssitx ≡ y mod mi (i = 1, 2,. . . , k). Jos moduli on suuri luku, voi usein olla helpompaa laskea käyttäen näitä pienempiämoduleja. Näin voidaan tehdä aivan yleisestikin, jos tekijätm1, m2, . . . , mk ovat pareittain kes-kenään jaottomia, ts.syt(mi, mj) = 1, kun i 6= j:

Lause 7.10. (Kiinalainen jäännöslause3) Jos luvuty1, y2, . . . , yk ovat annettuja ja modulitm1, m2, . . . , mk ovat pareittain keskenään jaottomia, on täsmälleen yksi kokonaislukux modulom1m2 · · ·mk, joka toteuttaa kaikkik kongruenssia

x ≡ yi mod mi (i = 1, 2, . . . , k).

Todistus.MerkitäänM = m1m2 · · ·mk ja Mi = M/mi (i = 1, 2, . . . , k). Koskami:t ovatpareittain keskenään jaottomia,syt(M1, M2, . . . ,Mk) = 1 ja syt(mi,Mi) = 1 (i = 1, 2, . . . , k).Seuraava menetelmä tuottaa ratkaisunx (jos sellainen on!) ja näyttää myös, että ratkaisu onyksikäsitteinen moduloM :

1. CRT-algoritmi:

1. Kirjoitetaan Eukleideen algoritmia käyttäensyt(M1,M2, . . . ,Mk) = 1 Bezout’n muo-toon (ks. Lause 2.8)

1 = c1M1 + c2M2 + · · ·+ ckMk.

2. Tulostetaanx ≡ c1M1y1 + c2M2y2 + · · · + ckMkyk mod M , vaikkapa positiivisessajäännössysteemissä.

3Nimi ”Kiinalainen jäännöslause” (engl. Chinese RemainderTheorem eli CRT) tulee siitä, että kiinalaismate-maatikot tunsivat tämän jo kauan sitten, ainakin tapauksessak = 2.

LUKU 7. LUKUTEORIA. OSA 2 53

Menettely toimii, jos ratkaisu on, sillä kongruensseistax ≡ yi mod mi seuraa suoraan, ettäciMix ≡ ciMiyi mod M (i = 1, 2, . . . , k) ja puolittain yhteenlaskien edelleen että

x = 1 · x = (c1M1 + c2M2 + · · ·+ ckMk)x ≡ c1M1y1 + c2M2y2 + · · ·+ ckMkyk mod M.

Vielä pitää vielä osoittaa, että ratkaisu on olemassa. Koska ilmeisestikinMi ≡ 0 mod mj ,jos i 6= j, ja toisaalta1 = c1M1+c2M2+ · · ·+ckMk, niin ciMi ≡ 1 mod mi (i = 1, 2, . . . , k).Siispä

x ≡ c1M1y1 + c2M2y2 + · · ·+ ckMkyk ≡ yi mod mi (i = 1, 2, . . . , k),

kuten pitääkin. Koska nytci ≡M−1i mod mi, voidaan edelleen päätellä, että ratkaisu saadaan

myös toisella tavalla:

2. CRT-algoritmi:

1. Lasketaan Eukleideen algoritmillaNi ≡M−1i mod mi (i = 1, 2, . . . , k).

2. Tulostetaanx ≡ y1M1N1 + y2M2N2 + · · ·+ ykMkNk mod M (positiivisessa jäännös-systeemissä).

Todistus antaa algoritmin (kaksikin) lauseessa mainitun luvunx etsimiseksi. Ilmeisesti tämäalgoritmi on polynomiaikainen, kun syötteenä ovat luvuty1, y2, . . . , yk jam1, m2, . . . , mk. Mui-takin algoritmeja tunnetaan, mm. ns.Garnerin algoritmi,joka on vielä jonkin verran nopeampi,ks. esimerkiksi CRANDALL & POMERANCE.

Huomautus. Tietyssä mielessä Kiinalainen jäännöslause antaa muotoa

y = fx(m) = (x, mod m)

olevien funktioiden sovituksen (interpolaation) ”pisteiden” (mi, yi) kautta, seikka, jota voidaankäyttää eräissä protokollissa. Kiinalainen jäännöslauseon erittäin käyttökelpoinen muutenkinmonissa yhteyksissä. Hyvä viite onDING & PEI & SALOMAA .

7.4 Alkulukujen testaus ja generointi

Kesti kauan ennenkuin ensimmäinen epädeterministinenkään polynomiaikainen algoritmi alku-lukutestaukseen löytyi. Se oli ns.Prattin algoritmi4. Algoritmi perustuu Lucas’n kriteereille.Syöte on lukun ≥ 2, jonka pituus binääriesityksessä onN . Merkitään algoritmin testiaskelei-den (ks. alla) lukumäärääT (n):llä ja

PRATT(n) =

{

YES, josn on alkuluku

FAIL, jos testi ei tehdyillä valinnoilla tuota tulosta.

Pykälästä 6.1 muistettaneen, että mikäli algoritmi toimii, niin syöten on yhdistetty luku tarkal-leen silloin, kunPRATT(n) = FAIL kaikilla valintamahdollisuuksilla.

4Alkuperäisviite on PRATT, V.R.: Every Prime has a Succint Certificate.SIAM Journal on Computing4 (1976),198–221.

LUKU 7. LUKUTEORIA. OSA 2 54

Prattin algoritmi:

1. Josn = 2 tai n = 3, tulostetaanYES ja lopetetaan (0 testiaskelta).

2. Josn on> 3 ja parillinen (jako2:lla), algoritmi luopuu tehtävästä jaPRATT(n) = FAIL(0 testiaskelta).

3. Arvataan (epädeterministisyys) kokonaislukux väliltä 1 ≤ x ≤ n− 1.

4. Tarkistetaan, onkoxn−1 ≡ 1 mod n venäläisten talonpoikien algoritmilla redusoidenjakolaskuilla (1 testiaskel). Ellei ole, niin algoritmi luopuu tehtävästä ja PRATT(n) =FAIL.

5. Arvataan (epädeterministisyys)n− 1:n alkutekijätp1, . . . , pk, missä kukin oletettu alku-tekijä esiintyy kertalukunsa osoittaman määrän kertoja (0 testiaskelta). Näiden lukujenpituudet binäärijärjestelmässä ovatP1, . . . , Pk. Huomaa, ettäP1 + · · ·+ Pk ≤ N + k− 1ja että2 ≤ k ≤ N .

6. Tarkistetaan kertomalla, että todellap1 · · · pk = n − 1 (1 testiaskel). Ellei näin ole, algo-ritmi luopuu tehtävästä jaPRATT(n) = FAIL.

7. Tarkistetaan, kutsuen Prattin algorimia rekursiivisesti, että luvutp1, . . . , pk ovat todellaalkulukuja (enintäänT (p1) + · · · + T (pk) testiaskelta). Jos jokinPRATT(pi) = FAIL,algoritmi luopuu tehtävästä jaPRATT(n) = FAIL.

8. Tarkistetaan, ettäx(n−1)/pi 6≡ 1 mod n (i = 1, . . . , k) venäläisten talonpoikien algorit-milla ja jakolaskuilla (enintäänk testiaskelta). Jos tämä pitää paikkansa, tulostetaanYES,muutoin algoritmi luopuu tehtävästä jaPRATT(n) = FAIL.

T (n):lle saadaan nyt seuraava rekursioepäyhtälö:

T (n) ≤ 2 + k +k∑

i=1

T (pi) , T (2) = 0 , T (3) = 0.

Tämän avulla voidaan löytää nytT (n):lle yläraja. Helposti nimittäin nähdään rekursiivisesti,että esimerkiksiL(n) = 4 log2 n− 4 on tällainen yläraja, silläL(2) = 0 jaL(3) > 0 ja

T (n) ≤ 2 + k +k∑

i=1

L(pi) = 2 + k +k∑

i=1

(4 log2 pi − 4)

= 2 + k + 4 log2(p1 · · ·pk)− 4k = 2− 3k + 4 log2(n− 1)

< −4 + 4 log2 n = L(n).

Toisaalta kunkin testiaskeleen suorittamiseen kuluuO(N3) askelta (parempiakin arvioita olisi)jaL(n) on verrannollinenN :ään (Lause 2.4). Siispä kokonaisaika onO(N4).

Alkulukutestien ”vanhaa aatelia” ovatAdleman–Pomerance–Rumely-testi5 ja sen seuran-naiset. Testi pohjautuu varsin pitkälle menevään algebralliseen lukuteoriaan, on deterministinenja nopea, luvunn alkulukutestaus vie sillä enintään

O((lnn)c ln(ln(lnn)))

5Alkuperäisviite on ADLEMAN , L. & POMERANCE, C. & RUMELY, R.: On Distinguishing Prime Numbersfrom Composite Numbers.Annals of Mathematics117(1983), 173–206.

LUKU 7. LUKUTEORIA. OSA 2 55

askelta, missäc on (pieni) vakio, eikä näin ollen ole aivanP:ssä—mutta melkein, sillä kyllä tuoln(ln(lnn)) kasvaa todella hitaasti. Toisaalta, sekä teoreettisesti että implementointia ajatellen,se on vaikea käsiteltävä. Ks. esimerkiksi KRANAKIS.

Viime aikojen suuria lukuteorian tuloksia on se, että alkulukujen tunnistus onP:ssä. Tämäntodistivat intialaiset Manindra Agrawal, Neeraj Kayal ja Nitin Saxena vuonna 2002.6 Algorit-min todistettu kompleksisuus onO((lnn)8), mutta heuristisesti sille saadaan kompleksisuusO((lnn)6). Kovin nopeita implementointeja ei kuitenkaan toistaiseksi ole, vaikka algoritmi onvarsin lyhyt esittää (syöte onn ≥ 2):

Agrawal–Kayal–Saxena-algoritmi:

1. Selvitetään, onkon jonkin kokonaisluvunr korkeampi potenssi, ts. muotoan = rl, missäl ≥ 2. (Koska silloinl = log2 n/ log2 r ≤ log2 n, on kokeiltavia mahdollisial:n arvojan:n pituuteen verrannollinen määrä. Sen jälkeen lasketaan jokaiselle ehdokkaallen:n l:skokonaisjuuri Pykälän 2.6 Newtonin algoritmilla ja katsotaan onko senl:s potenssi= n.)Josn on tällainen potenssi, tulostetaan ”EI” ja lopetetaan.

2. Etsitään sellainen kokonaislukum, ettän:n kertaluku modulom on> (log2 n)2. (Tämä

voidaan tehdä kokeilemalla. Hankalampi asia on todeta, ettei tällainenm ole liian iso.)

3. Tutkitaan onkon:llä alkutekijä välillä2, 3, . . . , m (vaikkapa kokeilemalla ja Eukleideenalgoritmilla). Jos on, niin tulostetaan ”EI” ja lopetetaan.

4. Tutkitaan pätevätkö polynomirenkaassaZn[x] kongruenssit

(x+ i )n ≡ xn + i mod xm − 1 (i = 1, 2, . . . , ⌊√m log2 n⌋).

(Tähän tarvitaan venäläisten talonpoikien algoritmi ja jakolaskuja. Huomaa, ettän:stäriippumattaZn[x]:ssä on määritelty jakaminen pääpolynomillaxm − 1. Ks. Pykälä 4.2.)Elleivät ne kaikki päde, niin tulostetaan ”EI” ja lopetetaan.

5. Tulostetaan ”KYLLÄ” ja lopetetaan.

Hyvä esitys algoritmista ja sen toiminnasta on artikkelissa GRANVILLE , A.: It Is Easy to De-termine Whether a Given Integer Is Prime.Bulletin of the American Mathematical Society42(New Series) (2004), 3–38.

Eräät sangen käyttökelpoiset alkulukutestit ovat probabilistisia, ts. ne tuottavat oikean tulok-sen vain tietyllä suurella todennäköisyydellä. Tällainentesti on esimerkiksi ns.Miller–Rabin-testi7. Testi perustuu Fermat’n pieneen lauseeseen. Sen mukaisesti, jos n on alkuluku jax onsellainen kokonaisluku, ettäsyt(x, n) = 1, niin xn−1 ≡ 1 mod n. Kirjoitetaann muotoon

n = 1 + 2lm,

missäm on pariton. Josn on pariton, niinl ≥ 1 ja

0 ≡ xn−1 − 1 = x2lm − 1 = (x2l−1m − 1)(x2l−1m + 1) mod n

6Artikkeliviite on AGRAWAL , M. & K AYAL , N. & SAXENA , N.: PRIMES is in P.Annals of Mathematics160(2004), 781–793.

7Alkuperäisviitteet ovat MILLER , G.L.: Riemann’s Hypothesis and Tests for Primality.Journal of Computerand System Sciences13 (1976), 300–317 sekä RABIN , M.O.: Probability Algorithms.Algorithms and Complexity(J.F. Traub, toim.). Academic Press (1976), 35–36. Algoritmi tunnetaan toisinaan myös nimelläSelfridgen testi.

LUKU 7. LUKUTEORIA. OSA 2 56

ja koskan on alkuluku se jakaa jokox2l−1m− 1:n taix2l−1m+1:n, mutta ei molempia (miksi?).Josn jakaax2l−1m − 1:n, niin sama operaatio voidaan toistaa. Jne. Tästä päätellään, että jokojollekin luvulle i = 0, 1, . . . , l − 1

x2im ≡ −1 mod n

tai sitten, ellei näin ole, lopultaxm ≡ 1 mod n.

Jos nyt jollekin sellaiselle kokonaisluvullex, ettäsyt(x, n) = 1 ja xm 6≡ ±1 mod n, onkinkaikille luvuille i = 1, 2, . . . , l − 1

x2im ≡ 1 mod n,

niin voidaan vain päätellä, ettän ei olekaan alkuluku. Samoin, kun kohdataan sellaineni > 0,ettäx2im 6≡ ±1 mod n. Toisaalta, kun kokeillaan useita lukuja, esimerkiksi tiettyjä ”pieniä”alkulukujax = 2, 3, 5, 7, 11, . . . , saadaan eräänlainen ”todiste” sille, ettän on alkuluku. Itseasiassa tämä todiste voidaan saada erittäin varmaksi käyttämällä kyllin monta hyvin valittualukuax. Myös todennäköisyysmielessä, ajatellen luvunx satunnaista valintaa väliltä1 < x <n− 1.

Seuraavassa oletetaan, että käytössä ovat annetut tai satunnaiset testiluvutx1, x2, . . . , xk.

Miller–Rabin-alkulukutesti:

1. Josn on parillinen, on asia helppo, tulostetaan tulos ja lopetetaan.

2. Josn on pariton, asetetaanl ← 0 jam← n− 1.

3. Asetetaanl ← l + 1 jam← m/2.

4. Josm on parillinen, mennään kohtaan 3. (Näitä kierroksia tarvitaan enintään⌊log2 n⌋kpl.)

5. Asetetaanj ← 0.

6. Josj < k, asetetaanj ← j + 1 ja x ← xj . Muutoin tulostetaan ”ALKULUKU” (arveltutieto) ja lopetetaan.

7. Josxm ≡ 1 mod n tai syt(x, n) = n, niin mennään kohtaan 6. Jos taas1 < syt(x, n)< n, tulostetaan ”YHDISTETTY LUKU” (varma tieto) ja lopetetaan. (Potenssilasku ve-näläisten talonpoikien algorimilla, s.y.t. Eukleideen algoritmilla.)

8. Asetetaani← 0.

9. Josx2im ≡ 1 mod n, tulostetaan ”YHDISTETTY LUKU” (varma tieto) ja lopetetaan.(Potenssilasku lähtien kohdan 7. potenssista peräkkäisillä neliöönkorotuksilla, välitulok-set pitää säilyttää!)

10. Josx2im ≡ −1 mod n, mennään kohtaan 6.

11. Josi = l − 1, tulostetaan ”YHDISTETTY LUKU” (varma tieto) ja lopetetaan. Muutoinasetetaani← i+ 1 ja mennään kohtaan 9.

Huomautus. Tämä on ”bottom-up”-versio testistä. Siitä on myös ”top-down”-versio, jossaivähenee, ks. esimerkiksi monisteRUOHONEN, K.: Symbolinen analyysi.Näillä ei liene suurtaeroa nopeudessa.

LUKU 7. LUKUTEORIA. OSA 2 57

Testi ei siis ole ”vuorenvarma”. Sellaisia yhdistettyjä lukuja, joita testi arvelee alkuluvuiksi,kutsutaanvahvoiksi valealkuluvuiksitestilukujenx1, x2, . . . , xk suhteen. Esimerkiksi25 326 001= 2 251·11 251on vahva valealkuluku testilukujen3 ja5 suhteen. Kiinteällek:n arvolle testin ai-kakompleksisuus onO(N3), kuten on helppo todeta (jälleenN onn:n pituus). Probabilistisenatesti on Monte Carlo -tyyppiä. Voidaan osoittaa, että yhdelle satunnaisesti väliltä1 < x < n−1valitulle x:lle testi tuottaa väärän tuloksen enintään todennäköisyydellä1/4, ks. alkuperäisviiteRABIN tai esimerkiksi CRANDALL & POMERANCE tai KRANAKIS tai GARRETT. Toistamallasaadaan varmuus miten tahansa hyväksi.8

Paitsi alkulukutestaus, on myös tietynpituisten alkulukujen generointi keskeinen tehtävä.N-pituinen alkuluku voidaan valita satunnaisesti valitsemalla ensin satunnainenN-pituinen ko-konaisluku, ks. Pykälä 2.6, ja sitten testaamalla Miller–Rabin-testillä, onko se alkuluku. Tällai-nen alkulukujen generointitapa on tehokas. Jos nimittäin merkitäänπ(x):llä niiden alkulukujenlukumäärää, jotka ovat≤ x, niin saadaan kuuluisa asymptoottinen arvio:

Lause 7.11. (Alkulukulause) limx→∞

π(x)

x/ ln x= 1

Todistus on hankala! Näin ollen suuruusluokkaan olevista luvuista suurinpiirtein jokalnn:son alkuluku. Tämä on riittävän paljon, jotta alkulukujen satunnainen etsiminen sujuisi nopeas-ti. Tähän tarkoitukseen Pykälän 2.6 satunnaislukugeneraattorit sopivat mainiosti. Varhaisempitulos

Lause 7.12. (Tshebyshevin lause)7

8<

π(x)

x/ ln x<

9

8, kunx ≥ 5.

antaa karkeita kvantitatiivisia rajoja. Se takaa, että luvuista1, 2, . . . , n alkulukuja on ainakin⌈

7n

8 lnn

kpl

ja että välillä(m,n] on alkulukuja ainakin⌈

7n

8 lnn

⌊9m

8 lnm

kpl.

Esimerkiksi välillä(10150, 10151] on näin ainakin noin

7 · 10151

1 208 ln 10−

9 · 10150

1 200 ln 10∼= 2.19 · 10148

alkulukua, itse asiassa paljon enemmänkin. Alkuluvut esiintyvät myös kohtuullisen tasaisesti:

Lause 7.13. (Bertrandin postulaatti9) Kunn ≥ 2, on olemassa ainakin yksi sellainen alkulu-kup, ettän < p < 2n.

Lause 7.14. (Dirichlet–de la Vallée-Poussin -lause)Josm ≥ 2, niin alkuluvut ovat jakautu-neet asymptoottisesti tasan alkuluokkiin modulom.

Alkulukuja ja niiden testausta käsittelee monipuolisestiCRANDALL & POMERANCE.

8Muitakin Monte Carlo -tyyppisiä alkulukutestejä on olemassa, esimerkiksi ns.Solovay–Strassen-algoritmi,ks. esimerkiksi SALOMAA tai KRANAKIS .

9Postulaatin todisti Tshebyshev.

LUKU 7. LUKUTEORIA. OSA 2 58

7.5 Lukujen tekijöihinjako

Siitä, että alkulukutestaus onP:ssä, seuraa varsin välittömästi, että lukujen tekijöihinjako onNP:ssä: arvataan vain alkutekijät ja testataan ovatko ne alkulukuja. Vaikka alkulukutestausonP:ssä ja käytännössäkin varsin nopeaa, tekijöihinjako näyttää olevan hyvin vaativa tehtävä.Riittää esittää menetelmä, joka etsii luvullen ≥ 2 jonkin ei-triviaalin tekijänd, 1 < d < n,tai sitten ilmoittaan:n olevan alkuluvun. Sen jälkeen voidaan rekursiivisesti jatkaa luvuistadja n/d. Tietysti kannattaa aloittaa alkulukutestillä, jonka jälkeen voidaan olettaa, ettein olealkuluku.

Seuraava tunnettu algoritmi löytää usein parittoman yhdistetyn luvunn tekijän, jos jollekinn:n alkutekijällep luvulla p − 1 ei ole tekijänäänb:tä ylittäviä alkuluvun potensseja. Tästäehdosta seuraa, ettäp− 1 on b!:n tekijä (eikö vain?).

Pollardin p − 1-algoritmi 10:

1. Asetetaana← 2.

2. Iteroidaanj:n arvoillej = 2, . . . , b asetustaa← (aj,mod n).

3. Lasketaand = syt(a− 1, n).

4. Jos1 < d < n, tulostetaan tekijäd, muutoin luovutaan tehtävästä.

Oletetaan, ettäp onn:n alkutekijä, joka toteuttaa mainitun ehdon. Kohdan 2. suorituksen jälkeenon ilmeisestia ≡ 2b! mod n ja siis myösa ≡ 2b! mod p. Fermat’n pienen lauseen nojalla2p−1 ≡ 1 mod p. Kuten todettiin,p− 1 | b!, joten myösa ≡ 1 mod p. Näin ollenp | a− 1 jaedelleenp | d. On mahdollista, ettäa = 1, jolloin tekijää ei löydy.

Algoritmin aikakompleksisuus on

O(bBN2 +N3),

missäN ja B ovat lukujenn ja b pituudet binäärijärjestelmässä, vastaavasti. Tästä nähdään,ettäb tulisi pitää varsin pienenän:ään nähden, jotta algoritmi olisi nopea. Liian pienib toisaaltakarsii pois paljon alkutekijöitä ja algoritmi ei tuota tulosta.

Pollardin p − 1-algoritmin ja monien muidenkin algoritmien tarkempi esitys ja analyysilöytyy mm. viitteistä RIESEL ja CRANDALL & POMERANCE. Pollardinp − 1-algoritmia onyleistetty monin tavoin, mm. ns.elliptisten käyrien menetelmäksija ns.Williamsinp + 1-algo-ritmiksi.

Hyvin perinteinen tekijän etsimisalgoritmi on ns.testijakoalgoritmi.Siinä kokeillaan ensintekijöitä2 ja 3 ja sen jälkeen järjestyksessä muotoa6k ± 1 olevia tekijöitä aina⌊

√n⌋:ään asti.

Kokonaisneliöjuuri on nopea laskea, kuten todettiin. Tällainen menetelmä on tietysti aikaavie-pä. Testijako on tyypiltään ns.seulamenetelmä.Seulamenetelmiä on hyvin paljon tehokkaam-pia, mm. ns.neliöllinen seulaja lukukuntaseula.Tällä hetkellä nopeimmille algoritmeille onarvioitu alla olevan taulukon antamat aikakompleksisuudet. Mukana ei ole Shorin algoritmia,ks. Pykälä 15.3, sillä kvanttitietokoneita ei vielä varsinaisesti ole.

10Alkuperäisviite on POLLARD , J.M.: Theorems on Factorization and Primality Testing.Proceedings of theCambridge Philosophical Society76 (1975), 521–528. Algoritmia voidaan vähän varioida monin tavoin sen tehos-tamiseksi, tämä on aivan perusversio.

LUKU 7. LUKUTEORIA. OSA 2 59

Algoritmi Aikakompleksisuus*

Neliöllinen seula O(

e(1+o(1))√

lnn ln(lnn))

Elliptisten käyrien menetelmäO(

e(1+o(1))√

2 ln p ln(ln p))

(p onn:n pienin alkutekijä)

Lukukuntaseula O(

e(1.92+o(1))(ln n)1/3(ln(lnn))2/3)

* Merkintä o(1) tarkoittaa seuraavaa:f(n) = o(1), jos limn→∞

f(n) = 0. Yleisemmin merkintäo(g(n)) tarkoittaa,ettäf(n) = o(g(n)), jos lim

n→∞

f(n)/g(n) = 0.

7.6 Modulaarinen neliöjuuri

Luvunx sanotaan olevan luvuny neliöjuuri modulom eli ns.modulaarinen neliöjuuri,jos

x2 ≡ y mod m.

Yleensä ko. neliöjuuri esitetään positiviisessa jäännössysteemissä. Välittömästi nähdään, ettäjos x on y:n neliöjuuri modulom, niin samoin on(−x,mod m). Neliöjuuria on siis yleensäainakin kaksi, mutta usein paljon enemmänkin.

Kaikilla luvuilla y ei välttämättä ole neliöjuuria modulom. Lukuay, jolla on neliöjuuri(a)modulom, sanotaanneliönjäännökseksimodulom, ja lukuay, jolla ei ole neliöjuurta modulom taasepäneliönjäännökseksimodulom. Ilmeisesti ainakin0 ja 1 ovat neliönjäännöksiä. Ylei-sessä tapauksessa sen selvittäminen, onko jokin luku neliön- vaiko epäneliönjäännös modulom, on työlästä.

Josy on neliönjäännös modulom ja tunnetaanm:n tekijöihinjako

m = pi11 pi22 · · · p

iMM

sekä jokiny:n neliöjuurixj modulopijj (j = 1, 2, . . . ,M), niin lisääy:n neliöjuuria modulom saadaan Kiinalaisen jäännöslauseen avulla. Huomaa, että josy on neliönjäännös modulom,niin se on myös neliönjäännös modulopijj , sillä jokaineny:n neliöjuurix modulom on myössen neliöjuuri modulopijj . Ratkaistaan kongruenssiryhmästä

x ≡ ±x1 mod pi11x ≡ ±x2 mod pi22

...

x ≡ ±xM mod piMM

x modulom CRT-algoritmilla, tulos on yksikäsitteinen modulom = pi11 pi22 · · · p

iMM . Mikä tahan-

sa2M :stä±-merkkivalinnasta on mahdollinen. Silloin

x2 ≡ (±xj)2 ≡ y mod p

ijj

ja siispijj | x2− y (j = 1, 2, . . . ,M). Koskapijj :t ovat keskenään jaottomia, on myösm | x2− y

eli x2 ≡ y mod m. Käymällä läpi kaikki neliöjuurienxj valinnat—niitä voi olla useitakin—sekä kaikki±-merkkiyhdelmät saadaan itse asiassa kaikkiy:n neliöjuuret modulom.

Tilanne palautuu siis neliöjuurten laskemiseen modulo alkuluku tai sellaisen potenssi. Ne-liöjuurten laskeminen modulo alkuluvun korkeampi potenssi on vähän vaikeampaa, eikä sitä

LUKU 7. LUKUTEORIA. OSA 2 60

tässä käsitellä.11 Sen sijaan neliöjuuret modulo alkulukup ovat nopeasti laskettavissa ns.Shank-sin algoritmilla.y:n neliöjuuria modulop on aina tarkalleen kaksi, paitsi josy ≡ 0 mod p, silläjosx on jokin neliöjuuri jax′ toinen, niin

x2 ≡ y ≡ x′2 mod p eli (x− x′)(x+ x′) ≡ 0 mod p

ja joko p | x − x′ eli x ≡ x′ mod p tai sittenp | x + x′ eli x′ ≡ −x mod p. Jos taasy ≡ 0mod p, niin ainoa neliöjuuri on0, kuten on helppo nähdä.

Josp > 2, niin ilmeisesti kaikki neliönjäännökset modulop saadaan, kun otetaan lukujen0, 1, . . . , (p − 1)/2 neliöt modulop. Nämä neliöt eivät ole keskenään kongruentteja modulop(miksi?), joten neliönjäännöksiä on yhtä enemmän kuin epäneliönjäännöksiä, ja se yksi on0. Seonkoy neliön- vaiko epäneliönjäännös modulop, voidaan selvittää nopeasti, tapauksetp = 2 jay ≡ 0 mod p ovat tietysti triviaaleja.

Lause 7.15. (Eulerin kriteeri) Josp on pariton alkuluku jay 6≡ 0 mod p, niin y on neliön-jäännös modulop täsmälleen silloin, kun

yp−1

2 ≡ 1 mod p.

(Modulaarinen potenssi lasketaan käytännössä nopeasti venäläisten talonpoikien algoritmilla.)

Todistus.Josy on neliönjäännös eli jollekinx:lle y ≡ x2 mod p, niin Fermat’n pienen lauseennojallaxp−1 ≡ 1 mod p (koskay 6≡ 0 mod p, niin syt(x, p) = 1). Siispä

yp−1

2 ≡ xp−1 ≡ 1 mod p.

Jos taasy(p−1)/2 ≡ 1 mod p, niin otetaan jokin primitiivinen juurig modulop. Silloinjollekin i:lle y ≡ gi mod p, koskasyt(y, p) = 1, ja

gp−1

2i ≡ y

p−1

2 ≡ 1 mod p.

Mutta koskag:n kertaluku onp− 1, on (p− 1)i/2:n oltava jaollinenp− 1:llä. Näin olleni onparillinen jay:llä on neliöjuuret(±gi/2,mod p) modulop.

Josp on muotoap = 4l − 1 eli p ≡ 3 mod 4, niin Eulerin kriteerillä saadaan itse asiassamyös ne kaksiy:n neliöjuurta—olettaen, ettäy 6≡ 0 mod p. Ne ovat(±y(p+1)/4,mod p), sillä

(

±yp+1

4

)2

= yp+1

2 = yp−1

2 y ≡ y mod p.

Näistä kahdesta modulaarisesta neliöjuuresta toinen on itse neliönjäännös, sitä kutsutaan sil-loin pääneliöjuureksi,ja toinen epäneliönjäännös. Ensinnäkin josx on sekäy:n neliöjuuri ettäneliönjäännös modulop, niin −x ei voi olla neliönjäännös. Muutoinx ≡ z21 ≡ −z

22 mod p

joillekin luvuille z1 ja z2 ja−1 ≡ (z1z−12 )2 mod p eli −1 on neliönjäännös modulop. Tämä ei

ole kuitenkaan Eulerin kriteerin nojalla mahdollista, sillä (−1)(p−1)/2 = (−1)2l−1 = −1. Toi-saalta ko. modulaariset juuret eivät voi molemmat olla epäneliönjäännöksiä, muutoinhan niitäon liikaa.

Tapausp = 4l + 1 onkin sitten, outoa kyllä, paljon mutkikkaampi ja siihen nimenomaantarvitaan Shanksin algoritmia.

Ennenkuin mennään Shanksin algoritmiin, voidaan nyt todeta, että josm:ssä ei ole tekijöinäalkuluvun potensseja—elim onneliötön—jam:n tekijöihinjako

m = p1p2 · · · pM

tunnetaan, niin tilanne neliönjäännöksiä ja neliöjuuria modulom ajatellen on helppo:

11Siihen tarvitaan mm. ns. Henselin nosto Pykälän 11.3 tapaan, ks. esimerkiksi GARRETT.

LUKU 7. LUKUTEORIA. OSA 2 61

• y on neliönjäännös modulom täsmälleen silloin, kun se neliönjäännös modulo kukinpi(i = 1, 2, . . . ,M), ja tämä voidaan selvittää nopeasti Eulerin kriteerillä.

• Laskemalla Shanksin algoritmillay:n neliöjuuretxi modulopi, saadaan näistä eo. tavallaCRT-algoritmilla kaikki enintään2M kpl y:n neliöjuurta modulom.

Vielä saadaan

Lause 7.16.Josm on pariton ja neliötön,syt(y,m) = 1 eli y ei ole jaollinen millään alkulu-vuistapj ja y on neliönjäännös modulom, niin y:n neliöjuuria modulom on tarkalleen2M kpl,missäM onm:n alkutekijöiden lukumäärä.

Todistus.Muutoinhan jollekinpj:lle olisi xj ≡ −xj mod pj eli 2xj ≡ 0 mod pj . Koskapjon pariton, olisi silloin myösxj ≡ 0 mod pj ja edelleeny ≡ x2

j ≡ 0 mod pj .

Mikäli kaikki alkuluvut pi ovat≡ 3 mod 4, tarkalleen yksi näistä lauseessa mainituistay:n2M neliöjuuresta modulom saadaan CRT-algoritmilla ottamallay:stä pääneliöjuuret modulojokainenpi. Ko. neliöjuuri ony:n pääneliöjuurimodulom.

Seuraus. Josm on pariton ja neliötön,y on neliönjäännös modulom ja x on jokin y:n ne-liöjuuri modulom, niin y:n neliöjuuret modulom ovat tarkalleen(xωi,mod m) (i = 1, 2, . . . ,2M ), missäM onm:n alkutekijöiden lukumäärä jaω1, ω2 . . . , ω2M ovat1:n neliöjuuret modulom.

Huomautus. Tämä kaikki on hyvin paljon siitä riippuvaa, ettäm:n tekijöihinjako tunnetaan.Jo siinä tapauksessa, ettäM = 2 eikä tekijöitä tunneta, sen selvittäminen onkoy neliönjään-nös modulom vai ei ja mitkä positiivisessa tapauksessa ovat sen neliöjuuret modulom onhyvin työlästä. Edes se ei auta, että tunnetaan yksi neliöjuuripareista. Itse asiassa, jos tunne-taany:n sellaiset neliöjuuretx1 ja x2 modulom = p1p2, ettäx1 6≡ ±x2 mod m, niin luvutsyt(m, x1±x2) ovat alkuluvutp1 ja p2. Näiden havaintojen varassa ovat monet kryptosysteemitja protokollat, mm. RSA.

Ja sitten se Shanksin algoritmi:

Shanksin algoritmi:

1. Josp = 2, tulostetaan(y,mod 2) ja lopetetaan. Josy ≡ 0 mod p, tulostetaan0 ja lope-tetaan.

2. Josy(p−1)/2 6≡ 1 mod p, ei y:llä Eulerin kriteerin nojalla ole neliöjuuria modulop. Tu-lostetaan tämä tieto ja lopetetaan.

3. Josp ≡ 3 mod 4, tulostetaan(±y(p+1)/4,mod p) ja lopetetaan.

4. Jos taasp ≡ 1 mod 4, kirjoitetaanp − 1 = 2st, missät on pariton jas ≥ 2. Tämäsaadaan aikaan peräkkäisillä2:lla jakamisilla, joita tarvitaan enintään⌊log2(p− 1)⌋ kpl.

5. Valitaan satunnaisesti lukuu väliltä 1 ≤ u < p. Jos nytu(p−1)/2 ≡ 1 mod p, luovutaantehtävästä ja lopetetaan. Eulerin kriteerin mukaanu on tällöin neliönjäännös modulopja jatkoa ajatellenu:ksi haluttaisiinkin epäneliönjäännös.u:n valinta onnistuu näin ollen50% todennäköisyydellä.

6. Asetetaanv ← (ut,mod p). Silloin v:n kertaluku modulop on2s. Jos nimittäini on mai-nittu kertaluku, niinit | 2st eli i | 2s. Toisaaltaut2k 6≡ 1 mod p, josk < s, muutoinhanolisi myösu(p−1)/2 ≡ 1 mod p.

LUKU 7. LUKUTEORIA. OSA 2 62

7. Asetetaanz ← (y(t+1)/2,mod p). Silloin z2 ≡ yty mod p. z on tietyssä mielessä ”li-kimääräinen”y:n neliöjuuri modulop ja sitä käyttäen voidaan löytää oikea neliöjuurimuodossax = (zv−l,mod p).

8. Etsitään mainittu oikea neliöjuuri, ts. sellainen lukul, että

x2 ≡ (zv−l)2 ≡ y mod p eli v2l ≡ z2y−1 ≡ yt mod p.

Tällainen luku on olemassa, sillä modulaariyhtälölläw2s−1

≡ 1 mod p onw:n suhteen2s−1 juurta12 ja ne ovat(v2j,mod p) (j = 0, 1, . . . , 2s−1− 1) ja (yt,mod p) on yksi niistä.Luku l voidaan etsiä vaikkapa rekursiivisesti binäärimuodossa

l = bs−22s−2 + bs−32

s−3 + · · ·+ b12 + b0

seuraavasti:

8.1 Bitti b0 löytyy, kun kongruenssiv2l ≡ yt mod p korotetaan puolittain potenssiin2s−2, sillä

b0 =

{

0, jos(yt2s−2

, mod p) = 1

1 muuten.

8.2 Bitti b1 löytyy, kun kongruenssiv2l ≡ yt mod p korotetaan puolittain potenssiin2s−3, sillä

b1 =

{

0, jos(yt2s−3

v−b02s−2

, mod p) = 1

1 muuten.

Huomaa, miten tässä tarvitaan jo saatub0.

8.3 Saatujen bittienb0 ja b1 avulla etsitään vastaavasti seuraava bittib2 jne.

9. Tulostetaan(±zv−l,mod p) ja lopetetaan.

Varsin helposti voi todeta algoritmin polynomiaikaiseksija se tuottaa tuloksen noin50% toden-näköisyydellä. Kyseessä on siis Las Vegas -tyyppinen stokastinen algoritmi.

7.7 Vahvat satunnaisluvut

Kryptologisesti vahvoja satunnaislukuja tarvitaan mm. probabilistisissa kryptosysteemeissä,joissa kryptauksessa käytetään satunnaislukuja. Yhden jasaman viestin kryptaus voi näin ol-len tuottaa eri kerroilla eri tuloksen. Myös monet protokollat käyttävät satunnaislukuja.

Monet muutoin hyviksi havaitut perinteiset satunnaislukugeneraattorit, kuten Pykälässä 2.6esitetty siirtorekisterigeneraattori, ovat osoittautuneet kryptografian kannalta vaarallisiksi. Kryp-tologian tarpeet käynnistivätkin laajan pseudosatunnaislukujen tutkimuksen, niin teorian kuinkäytännönkin tasolla.

12Tässä tarvitaan polynomialgebrasta se tieto, että kunnand-asteisella algebrallisella yhtälöllä on enintäänd erijuurta. Ks. esimerkiksi kurssi Algebra 1 tai Symbolinen laskenta tai jokin algebran kirja.

LUKU 7. LUKUTEORIA. OSA 2 63

Blum–Blum–Shub-generaattori13 on yksinkertainen satunnaislukugeneraattori, jonka vah-vuus on kytköksissä neliönjäännöstestiin. Koska tällä hetkellä ei tunneta nopeaa probabilistis-takaan algoritmia neliönjäännöstestiin, saati sitten determinististä, BBS-generaattoria pidetäänvahvana kryptologisessa mielessä, ks. esimerkiksi GARRETT tai STINSON.

Neliönjäännöksenx korottaminen neliöön modulon tuottaa uuden neliönjäännökseny. Josnyt y:llä on pääneliöjuuri, sen on oltavax, ja kyseessä on itse asiassa neliönjäännösten permu-taatio. Tämä permutaatio on niin tehokkaasti satunnaistava, että sitä voidaan käyttää satunnais-lukugeneraattorina.

BBS-generaattori tuottaa jonon satunnaisbittejä. Generaattori tarvitsee kaksi jotakuinkin sa-manpituista alkulukuap ja q, joita ei paljasteta. Lisäksi vaaditaan ehtop ≡ q ≡ 3 mod 4,jotta pääneliöjuuret ovat olemassa. Merkitäänn = pq. Jos on tarkoitus tuottaal satunnaisbittiä,menetellään seuraavasti:

Blum–Blum–Shub-generaattori:

1. Valitaan satunnainen lukus0 modulon väliltä 1 ≤ s0 < n. Satunnaisuus on tässä tärkeääja siihen riittävät Pykälän 2.6 satunnaisgeneraatoritkin. Jotkut valinnat nimittäin johtavatvarsin lyhyeen jaksoon, ts. generaattori alkaa toistaa itseään varsin pian, mikä tietenkinon vakava puute. Asiaa käsittelee mm. alkuperäisartikkeli.

2. Toistetaanl kertaa rekursiotasi = (s2i−1, mod n)

ja lasketaan bititbi = (si, mod 2) (i = 1, 2, . . . , l).

3. Tulostetaan(b1, b2, . . . , bl) ja lopetetaan.

Huomautus. Kryptologisesti vahvoilla satunnaislukugeneraattoreilla ja hyvillä kryptosystee-meillä on paljon yhteistä, itse asiassa monet kryptosysteemit voidaan muuntaa kryptologisestivahvoiksi satunnaislukugeneraattoreiksi, ks. esimerkiksi GOLDREICH ja SHPARLINSKI ja asi-aan liittyvä artikkeliviiteA IELLO , W. & RAJAGOPALAN, S.R. & VENKATESAN, R.: Designof Practical and Provably Good Random Number Generators.Journal of Algorithms29 (1998),358–389.

7.8 Hilat. LLL-algoritmi

Josv1, . . . ,vk ovat lineaarisesti riippumattomatRk:n vektorit, niin niiden generoimahila14 onRk:n pistejoukko

〈v1, . . . ,vk〉 = {c1v1 + · · ·+ ckvk | c1, . . . , ck ∈ Z}.

Vektoreitav1, . . . ,vk kutsutaan hilankantavektoreiksija k on hilandimensio.Yhdellä ja samal-la hilalla on äärettömän monta kantaa, josk > 1. Keskeinen hiloja koskeva probleema onkinlöytää ”hyvä” kanta, jossa on mukana jokin lyhyt vektori ja jonka vektorit eivät muodosta kovinteräviä kulmia keskenään.Tällainen kanta muistuttaaRk:n luonnollista kantaa.

13Alkuperäisviite on BLUM , L. & B LUM , M. & SHUB, M.: A Simple Unpredictable Random Number Gene-rator.SIAM Journal on Computing15 (1986), 364–383.

14Hilojen tutkiminen kuuluu ns.lukugeometriaaneli Minkowskin geometriaan.

LUKU 7. LUKUTEORIA. OSA 2 64

HilandiskriminanttionD = | det(V)|, missäV on matriisi, jonka sarakkeet ovatv1, . . . ,vk.Se on kantavektoreiden virittämänk-ulotteisen suuntaissärmiön tilavuus. Tämä ei riipu hi-lan kannan valinnasta. KantamuunnosmatriisinC ja sen käänteismatriisinC−1 pitää nimit-täin olla kokonaislukualkioisia, jolloindet(C) ja det(C−1) = det(C)−1 ovat myös kokonais-lukualkioisia, ja näin ollendet(C) = ±1. Kannan vaihdon jälkeen diskriminantti on silloin| det(CV| = | det(C) det(V)| = D. Diskriminantti tarjoaa jonkinlaisen mitan, johon voi ver-rata hilan muita suureita.

KuuluisaLenstra–Lenstra–Lovász-algoritmi15 (LLL-algoritmi) antaa menetelmän, jolla hi-lalle voidaan jostain annetusta kannasta lähtien konstruoida ym. mielessä hyvä kanta, ns.LLL-redusoitu kanta. Saatuaan syötteenä vektoritv1, . . . ,vk algoritmi tuottaa hilalle〈v1, . . . , vk〉uuden kannanu1, . . . ,uk, jolle

1. ‖u1‖ ≤ 2k−1

4 D1

k ,

2. ‖u1‖ ≤ 2k−1

2 λ, missäλ on hilan lyhimmän nollavektorista eroavan vektorin pituus, ja

3. ‖u1‖ · · · ‖uk‖ ≤ 2k(k−1)

4 D.

Kohdat 1. ja 2. takaavat, että uusi kantavektoriu1 on lyhyt, sekä verrattuna hilan diskriminant-tiin että sen lyhimpään vektoriin. Kohta 3. puolestaan takaa, että uusien kantavektorien välisetkulmat eivät ole kovin pieniä. Kannanu1, . . . ,uk approksimatiivisen ortogonaalisuuden mit-ta on se miten lähellä‖u1‖ · · · ‖uk‖ onD:tä, ortogonaalisille vektoreilleu1, . . . ,uk nimittäin‖u1‖ · · · ‖uk‖ = D.

LLL-algoritmin aikavaativuudelle tunnetaan arvio

O(k6(lnmax(‖v1‖, . . . , ‖vk‖))3),

käytännössä se on huomattavastikin nopeampi. Joka tapauksessa aika on polynomiaalinen vainvektorien koon suhteen, ei dimension koon suhteen. Algoritmin suoritukseen vaikuttaa luonnol-lisesti myös se miten vektoritv1, . . . ,vk on annettu ja miten niillä lasketaan. Helppo tapaus onluonnollisesti se, missä vektorit ovat kokonaislukualkioisia.

LLL-algoritmia ei tässä sen tarkemmin esitetä, sitä käsittelee lähemmin mm. COHEN. Se onhyödyllinen hyvinkin monissa yhteyksissä.

15Alkuperäisviite on LENSTRA, A.K. & L ENSTRA JR., H.W. & LOVÁSZ, L: Factoring Polynomials withRational Coefficients.Mathematische Annalen261(1982), 515–534.

Luku 8

RSA

8.1 RSAn määrittely

RSAn1 salainen avaink2 muodostuu kahdesta suuresta likimain samaa pituutta olevasta eri al-kuluvustap ja q sekä luvustab (ns.dekryptauseksponentti), jolle

syt(b, φ(pq)) = syt(b, (p− 1)(q − 1)) = 1.

Julkinen avaink1 puolestaan muodostuu luvustan = pq (auki kerrottuna) sekä luvustaa (ns.kryptauseksponentti), jolle

ab ≡ 1 mod φ(n).

Huomaa, ettäb:llä on käänteisluku moduloφ(n). Kryptausfunktio on

ek1(w) = (wa, mod n)

ja dekryptausfunktio onek2(c) = (cb, mod n).

Jotta kryptaus toimisi, on viestilohkon oltava valmiiksi koodattu välillä0 ≤ w ≤ n−1 olevaksikokonaisluvuksi. Sekä kryptaus että dekryptaus tapahtuvat venäläisten talonpoikien algoritmiatms. käyttäen nopeasti. Seuraava Kiinalaisen jäännöslauseen pieni erikoistapaus on hyvin käyt-tökelpoinen:

Apulause. x ≡ y mod n tarkalleen silloin, kun sekäx ≡ y mod p ettäx ≡ y mod q.

Pystytettäessä RSA-kryptausta, käydään läpi seuraavat askeleet:

1. Generoidaan satunnaiset halutun pituiset alkuluvutp ja q, ks. Pykälä 7.4.

2. Kerrotaanp ja q luvuksin = pq ja lasketaan kertomallaφ(n) = (p− 1)(q − 1).

3. Etsitään sellainen satunnainen lukub väliltä 1 ≤ b ≤ φ(n) − 1, että syt(b, φ(n))= 1, generoimalla satunnaisesti lukuja ko. väliltä ja testaamalla s.y.t.

4. Lasketaanb:n käänteislukua moduloφ(n) Eukleideen algoritmilla.

5. Julkistetaan parik1 = (n, a).

1Alkuperäisviite on RIVEST, R.L. & SHAMIR , A. & A DLEMAN , L.: A Method for Obtaining Digital Signa-tures and Public Key Cryptosystems.Communications of the ACM21 (1978), 120–126.

65

LUKU 8. RSA 66

Todennetaan, että dekryptaus toimii. Ensinnäkin, jossyt(w, n) = 1, niin Eulerin lauseenmukaan jollekin luvullel

cb ≡ (wa)b = wab = w1+lφ(n) = w(wφ(n))l ≡ w · 1 = w mod n.

Jos taassyt(w, n) 6= 1, niin on kolme vaihtoehtoa:

• w = 0. Nyt ilmeisesticb ≡ (wa)b = 0b = 0 mod n.

• p | w, muttaw 6= 0. Nyt w = pt, missäsyt(q, t) = 1. Selvästi

cb ≡ wab ≡ w mod p.

Toisaalta Fermat’n pienen lauseen mukaan myös jollekin luvulle l

wab = w1+lφ(n) = w(wφ(n))l = w(w(p−1)(q−1))l = w(wq−1)l(p−1) ≡ w · 1 = w mod q.

Apulauseen nojallacb ≡ wab ≡ w mod n.

• q | w, muttaw 6= 0. Käsitellään aivan vastaavasti kuin edellinen kohta.

Huomautus. Mainittu ehtosyt(w, n) 6= 1 ei tiedä hyvää: Joko viesti on suoraan luettavissa(w = c = 0) tai sitten se sisältää tekijänäänp:n tai q:n, jolloin Eukleideen algoritmilla saadaansyt(w, n) ja sitä kautta koko systeemi murretuksi. Samoin tietysti käy, jossyt(c, n) 6= 1, muttakoskan:llä ei ole tekijänään alkuluvun korkeampia potensseja jac ≡ wa mod n, on itseasiassa

syt(c, n) = syt(wa, n) = syt(w, n).

8.2 Hyökkäyksiä ja puolustuksia

RSA on saatavissa hyvin varmaksi, mutta edellytyksenä on, että tiettyjä vaarallisia valintojavältetään. Huomaa, että julkisen avaimen systeemissä on KP-dataa aina saatavilla. Yo. Huo-mautuksessa jo oli eräs vältettävä tapaus, tosin varsin harvinainen. Muita huomioon otettaviaasioita ovat seuraavat:

(A) Erotusp−q ei saa olla itseisarvoltaan pieni! Jos nimittäinp−q > 0 on pieni, niin(p−q)/2on pieni ja(p+ q)/2 on vain vähän suurempi kuin

√pq =

√n (totea!). Toisaalta

n =

(p+ q

2

)2

(p− q

2

)2

.

n:n jakamiseksi tekijöihinp ja q testataan yksi kerrallaan kokonaislukujax lähtien⌈√n ⌉:stä kunnes löytyy sellainen lukux, että x2 − n = y2 on neliö. Kun tämäx

löytyy, saadaan välittömästip = x + y ja q = x − y. Koskan ei itse ole neliö, on⌈√n ⌉ = ⌊

√n⌋+ 1. Kokonaisneliöjuuren laskeminen on nopeaa, ks. Pykälä 2.6.

(B) Valittaessa alkulukujap ja q pitää myösφ(n):n tekijärakennetta pitää silmällä. Jossyt(p− 1, q − 1) on suuri, niin

u = pyj(p− 1, q − 1) =(p− 1)(q − 1)

syt(p− 1, q − 1)

LUKU 8. RSA 67

(ks. Lause 2.9) on pieni. Toisaaltasyt(a, u) = 1 (miksi?) ja a:lla on käänteisalkiob′

modulou. Tämäb′ toimii myös dekryptauseksponenttina. Tällöin nimittäin voidaan kir-joittaaab′ = 1 + lu sekäu = t(p − 1) = s(q − 1) joillekin luvuille l, t ja s ja Fermat’npienen lauseen mukaan

cb′

≡ wab′ = w1+lu = w(wu)l = w(wp−1)lt ≡ w · 1 = w mod p.

(Tässä tietystic ≡ wa mod p.) Vastaavasticb′

≡ w mod q ja Apulauseen nojalla myöscb

≡ w mod n. Josu on paljon pienempi kuinφ(n), voidaanb′ löytää kokeilemalla.Johtopäätöksenä on, ettäp− 1:llä ja q − 1:llä ei saisi olla suurta yhteistä tekijää.

(C) Myös pitää välttää tilannetta, jossaφ(n):llä on vain pieniä alkutekijöitä. Paitsi että tässätilanteessa Pollardinp − 1-algoritmilla ja muilla vastaavilla voidaan silloin yrittää jakaan:ää tekijöihin, saattaa myös olla mahdollista käydä läpi kaikki φ(n)-ehdokkaatf , joillesyt(f, a) = 1, laskeaa:n käänteisluku modulof , dekryptata jokin kryptoteksti ja näinlöytää kokeilemallaφ(n). Huomaa, että josφ(n) = (p−1)(q−1) jan tunnetaan, saadaanniistä helpostip ja q toisen asteen yhtälön

(x− p)(x− q) = x2 + (φ(n)− n− 1)x+ n = 0

juurina. Juuret

x1,2 =−φ(n) + n + 1±

(φ(n)− n− 1)2 − 4n

2

voidaan nimittäin löytää kokonaisneliöjuurta käyttäen varsin nopeasti.

(D) Iteroidulla kryptauksellavoidaan toisinaan joko jakaan tekijöihin tai löytää selvätekstiw, kun vastaava kryptotekstic tunnetaan. Lasketaan rekursiivisesti jonoa

ci = (cai−1, mod n) = (cai

, mod n) = (wai+1

, mod n) , c0 = c,

kunnessyt(ci − c, n) 6= 1. Onnistumistilanteessa on kaksi mahdollisuutta:

• syt(ci − c, n) = p tai syt(ci − c, n) = q: Tällöin p ja q löytyvät ja systeemi murtuu.

• syt(ci − c, n) = n: Tällöin pitää ollaw = ci−1 ja selväteksti löytyy. Josw ontunnistettavissa, se löytyy jo edellisellä kierroksella!

Onnistuuko menettely aina? Eulerin lauseen mukaan

aφ(φ(n)) ≡ 1 mod φ(n)

eli voidaan kirjoittaaaφ(φ(n)) − 1 = lφ(n), ja edelleen

cφ(φ(n))−1 ≡ waφ(φ(n))

= w1+lφ(n) = w(wφ(n))l ≡ w · 1 = w mod n,

joten ainakini = φ(φ(n)) riittää. Toisaaltaφ(φ(n)) ≥ 4√n, joten tämä yläraja iteraatiolu-

vulle ei ole kovin kiinnostava.

(E) Ilmeisesti pitää välttää kovin pientä dekryptauseksponenttia, koska se voidaan silloin löy-tää kokeilemalla. Itse asiassa tietyillä menetelmillä voidaan löytää melko isojakin dekryp-tauseksponentteja, esimerkiksi josb < n0.292, se voidaan löytää LLL-algoritmia apunakäyttäen.2

2Ks. BONEH, D. & DURFEE, G.: Cryptanalysis of RSA with Private Keyd Less Thann0.292. Proceedings ofEuroCrypt ’99. Lecture Notes in Computer Science1592. Springer–Verlag (1999), 1–11.

LUKU 8. RSA 68

Myös pienestä kryptauseksponentista voi olla haittaa, vaikka dekryptauseksponentti olisiisokin. Jos esimerkiksiwa < n, voidaanw saada helpostic:stä ottamalla siitäa:s koko-naisjuuri. Ks. myös Pykälä 8.5.

(F) Ilman muuta on selvää, että jos mahdollisia viestejä on niin pieni määrä, että ne voidaankokeilla läpi, niin kryptaus voidaan purkaa. Jos kaikki viestit ovat ”pieniä”, niin tämävoidaan tehdä kätevästi ns.keskikohtaamismenetelmällä.Siinä oletetaan, ettäw < 2l, ts.että viestin pituus binääriesityksessä on≤ l. Koska Alkulukulauseen nojalla mahdollisiaw:n suuria alkutekijöitä on vähän, onw tällöin kohtuullisen todennäköisesti muotoa

w = w1w2 , missäw1, w2 ≤ ⌈2l/2⌉,

(ainakin kyllin suurellel:lle), jolloin vastaava kryptattu viesti on

c ≡ wa1w

a2 mod n.

⌈2l/2⌉ saadaan venäläisten talonpoikien algoritmilla ja tarvittaessa kokonaisneliöjuurella.Menettely on seuraava:

1. Lajitellaan luvut(ia,mod n) (i = 1, 2, 3, . . . ⌈2l/2⌉) suuruusjärjestykseen listaksiLtallentaen mukaani:t. Lukujen(ia,mod n) generointi vie venäläisten talonpoikienalgoritmilla aikaaO(2l/2N3) askelta, missäN onn:n pituus, ja lajittelu pikalajitte-lulla (quicksort)O(l2l/2) askelta.

2. Käydään läpi lukuja(cj−a,mod n) (j = 1, 2, 3, . . . , ⌈2l/2⌉) katsoen ovatko ne lis-tassaL—helppoa, koska lista on suuruusjärjestyksessä. Jos löytyy sellainenj, että

cj−a ≡ ia mod n

niin on löytynyt w = ij (keskikohtaaminen). Binäärietsinnällä laskien potenssitvenäläisten talonpoikien algoritmilla etsintä vieO(2l/2(l+N3)) askelta. Jos sattuu,ettäj−1 mod n ei ole olemassa, niinsyt(j, n) 6= 1 ja n:lle löytyy tekijä.

Kokonaisaika onO(2l/2(l+N3)), reippaasti vähemmän kuin2l, olettaen tietysti, että listaL voidaan tallentaa nopeaan muotoon.

Pienten viestien probleema voidaan ratkaista käyttämällätoppausta(padding), ts. lisää-mällä viestin desimaaliesityksen (tai binääriesityksen)alkuun satunnaisia desimaaleja(bittejä), niin että viestistä tulee pitkä. Toppaus valitaan tietysti joka kerralla uudestaan.Näin voidaan kryptata viesteinä jopa yksittäisiä bittejä turvallisesti.

Huomautus. (B)- ja (C)-kohdissa voidaan turvallisuutta lisätä rajoittumalla ns.turvallisiinalkulukuihineli Germainin lukuihinp ja q, ts. sellaisiin, että myös(p− 1)/2 ja (q − 1)/2 ovatalkulukuja. Valitettavasti vain tällaisten löytäminen onvaikeaa—eikä edes tiedetä onko niitääärettömän monta. Jotkut ovat sitä mieltä, että Germainin lukuja on niin vähän, että niidenkäyttö itse asiassa vähentää turvallisuutta!

LUKU 8. RSA 69

Erityisen ikävä mahdollisuus (D)-kohdassa on, että iterointi onnistuu heti. Silloin jokop | ctai q | c tai kyseessä on ns.kiintopisteviesti,ts. sellainen viestiw, että

c = ek1(w) = w.

Ilmeisesti0, 1 ja n− 1 ovat tällaisia viestejä. Mutta niitä on yleensä enemmänkin!

Lause 8.1.Kiintopisteviestejä on tarkalleen

(1 + syt(a− 1, p− 1))(1 + syt(a− 1, q − 1)) kpl.

Todistus.Merkitäänl = syt(a−1, p−1) jak = syt(a−1, q−1) sekä valitaan jotkin primitiivisetjuuretg1 ja g2 modulop ja q, vastaavasti. Silloinga−1

1 :n kertaluku modulop on(p−1)/l jaga−12 :n

kertaluku moduloq on (q − 1)/k, ks. Lause 7.4(iii). Näin ollen ainoat sellaiset luvuti väliltä0 ≤ i < p− 1, että

(ga−11 )i ≡ 1 mod p eli (gi1)

a ≡ gi1 mod p,

ovat luvut

ij = jp− 1

l(j = 0, 1, . . . , l − 1).

Vastaavasti ainoat luvuti väliltä 0 ≤ i < q − 1, joille (gi2)a ≡ gi2 mod q, ovat luvut

hm = mq − 1

k(m = 0, 1, . . . , k − 1).

Ilmeisesti jokainen kiintopisteviestiw toteuttaa kongruenssitwa ≡ w mod p, q, ja kääntäen.Näin ollen tarkalleen kaikki kiintopisteviestit saadaan Kiinalaisen jäännöslauseen avulla(l + 1)(k + 1) kongruenssiparista

{

x ≡ 0 mod p

x ≡ 0 mod q,

{

x ≡ 0 mod p

x ≡ ghm

2 mod q,

{

x ≡ gij1 mod p

x ≡ 0 mod q,

{

x ≡ gij1 mod p

x ≡ ghm

2 mod q

(j = 0, 1, . . . , l − 1 jam = 0, 1, . . . , k − 1).

Kiintopisteviestejä ei tietenkään saisi olla paljon. Koska sekäa ettäp ja q ovat käytännössäparittomia, on kiintopisteitä yleisesti ainakin(1+2)(1+2) = 9 kpl. Erityisen hankala on tilanne,jossap−1 | a−1 ja q−1 | a−1. Silloin nimittäin kiintopisteviestejä on(1+p−1)(1+q−1) = nkpl eli kaikki viestitovat kiintopisteviestejä. Mikälig1 ja g2 ovat tiedossa ja kiintopisteviestienmäärä on suhteellisen pieni, voidaan ne etsiä etukäteenkinja välttää niitä.

RSAn murtamiseen on keksitty edellisiä huomattavasti mutkikkaampiakin ideoita. Näitäesittelee mm. MOLLIN . Mikään näistä ei toistaiseksi ole mitenkään vaaraksi.

8.3 Kryptanalyysi ja tekijöihinjako

Vaikeus RSAn murtamisessa piilee siinä, ettei auki kerrotunn:n tekijöitä saada millään helpollatavalla lasketuksi. Julkisessa avaimessa on myös kryptauseksponenttia. Seuraava tulos osoittaa,etteia:stakaan saada millään helpolla tavalla lisätietoa. Ts. algoritmiA, jokan:stä jaa:sta laskeeb:n, voidaan muuntaa probabilistiseksi algoritmiksi, millä voi jakaa nopeastin:n tekijöihinsä.

Jos jotain kautta tunnetaan1:n neliöjuuriω modulon jaω 6≡ ±1 mod n, niin tästä saadaannopeasti lasketuksin:n tekijät. Silloin nimittäin(ω − 1)(ω + 1) ≡ 0 mod n ja jompikumpiluvuistasyt(ω ± 1, n) on p. Seuraava algoritmi käyttää tätä ideaa ja oletettua algoritmiaA jayrittää jakaan:n tekijöihin. Algoritmi muistuttaa jonkin verran Miller–Rabin-algoritmia.

LUKU 8. RSA 70

Eksponenttialgoritmi:

1. Valitaan satunnaisesti viestiw, 1 ≤ w < n.

2. Lasketaand = syt(w, n) Eukleideen algoritmilla.

3. Jos1 < d < n, tulostetaand ja n/d ja lopetetaan.

4. Lasketaanb käyttäen algoritmiaA ja asetetaany ← ab− 1.

5. Josy on pariton, mennään kohtaan 7.

6. Josy on parillinen, asetetaany ← y/2 ja mennään kohtaan 5. Josab − 1 = 2sr, missäron pariton, kierretään tätä silmukkaas kertaa. Huomaa, että tällöins ≤ log2(ab − 1) <2 log2 n eli s on suuruusluokkaan:n pituus.

7. Lasketaanω = (wy,mod n) venäläisten talonpoikien algoritmilla.

8. Josω ≡ 1 mod n, luovutaan tehtävästä ja lopetetaan.

9. Josω 6≡ 1 mod n, asetetaanω′ ← ω ja ω ← (ω2,mod n) ja mennään kohtaan 9. Tätäsilmukkaa joudutaan kiertämään enintääns kertaa, silläab−1 = 2sr on jaollinenφ(n):lläja toisaalta Eulerin lauseen mukaanwφ(n) ≡ 1 mod n.

10. Lopulta saadaan sellainen1:n neliöjuuriω′ modulon, ettäω′ 6≡ 1 mod n. Jos nytω′ ≡−1 mod n, luovutaan tehtävästä ja lopetetaan. Muutoin lasketaant = syt(ω′ − 1, n),tulostetaant ja n/t, ja lopetetaan.

Menettely on probabilistinen Las Vegas -tyyppinen algoritmi, missä kohta 1. on satunnainen.Voidaan osoittaa, että se tuottaa tuloksen ainakin todennäköisyydellä1/2, ks. esimerkiksi STIN-SON tai SALOMAA .

Kaikesta yllä olevasta huolimatta ei ole pystytty näyttämään, että RSAn murtaminen välttä-mättä johtaisin:n tekijöihinjakoon. Toisaalta tämä tekisi RSAn alttiiksihyökkäyksille CC-dataakäyttäen, edustaahan CC-data nimenomaan mielivaltaisia murrettuja kryptotekstejä.

8.4 Osittaisen tiedon saaminen viestin biteistä

Vaikka itse viestin saaminen selville tuntuukin olevan vaikeaa, olisiko mahdollista saada selvilleosittaista tietoa viestistä, esimerkiksi onko viesti parillinen tai kummalla väleistä0 ≤ w < n/2vai n/2 < w < n viesti on? Tässä tietysti oletetaan, ettän on pariton. Jos vaikkapa kryp-tataan yksittäisiä bittejä lisäämällä binääriesityksessä satunnaisia toppauksia, viestin pariteettiilmoittaa suoraan vastaavan bitin.

Näin saadaan kaksi tehtävää:

(1) Lähtien kryptotekstistäc = ek1(w) laskew:n pariteetti

par(c) = (w, mod 2).

(2) Lähtien kryptotekstistäc = ek1(w) laskew:n puolisko

half(c) =

⌊2w

n

.

LUKU 8. RSA 71

Nämä kaksi tehtävää eivät ole riippumattomat:

Apulause. Funktiotpar ja half liittyvät toisiinsa yhtälöillä

half(c) = par((2ac, mod n)) ja par(c) = half((2−ac, mod n)).

Todistus.Merkitään ensin

c′ = (2ac, mod n) = ((2w)a, mod n).

Jos nythalf(c) = 0, niin 0 ≤ 2w < n eli 2w on c′:a vastaava selväteksti japar(c′) = 0. Jostaashalf(c) = 1, niin n/2 < w < n eli 0 < 2w − n < n. Tällöin siis2w − n on c′:a vastaavaselväteksti ja se on pariton, jotenpar(c′) = 1.

Jälkimmäinen yhtälö seuraa edellisestä. Jos merkitäänc′′ = (2−ac,mod n), niin edellisennojalla

half(c′′) = par((2ac′′, mod n)) = par((2a2−awa, mod n)) = par(c).

Näin ollen riittää tarkastella vain funktiotahalf. Lasketaan nyt luvut

ci = half(((2iw)a, mod n)) (0 ≤ i ≤ ⌊log2 n⌋).

Tässä tietysti2iw voidaan tarvittaessa korvata ”oikealla” viestillä(2iw,mod n). Näin ollenci = 0 tarkalleen silloin, kun jaettaessa2iw luvulla n jakojäännös on välillä[0, n/2), ts. tar-kalleen silloin, kunw on jollain väleistä

jn

2i≤ w <

jn

2i+

n

2i+1(j = 0, 1, . . . , 2i − 1).

Koskan on pariton, seuraavat loogiset ekvivalenssit pätevät:

c0 = 0⇐⇒ 0 ≤ w <n

2

c1 = 0⇐⇒ 0 ≤ w <n

4tai

n

2< w <

3n

4

c2 = 0⇐⇒ 0 ≤ w <n

8tai

n

4< w <

3n

8tai

n

2< w <

5n

8tai

3n

4< w <

7n

8...

w voidaan näin löytää binäärisellä etsinnällä⌊log2 n⌋+ 1:llä askeleella.Kaiken kaikkiaan voidaan päätellä, että algoritmi, joka laskee jommankumman funktioista

par tai half, voidaan muuntaa algoritmiksi, jolla voidaan polynomiajassa dekryptata mielival-tainen kryptoteksti. Ko. funktioiden sisältämää tietoa viestistä ei siis saa mitenkään helpostiselville.

Huomautus. Jos toisaalta tunnetaan jokin määrä dekryptausavaimen tailukujenp tai q desi-maaleja/bittejä, voidaan loput laskea nopeasti, ks.COPPERSMITH, D.: Small Solutions to Po-lynomial Equations, and Low Exponent RSA Vulnerabilities.Journal of Cryptology10 (1997),233–260.

LUKU 8. RSA 72

8.5 Hyökkäys LLL-algoritmilla

Usein selvätekstin alkupää on sama ja jatko on lyhyt. Tällaisessa tilanteessa ei ole syytä käyttääkovin pientä kryptauseksponenttiaa. Selväteksti on tällöin muotoa

w = x+ y,

missäx on aina sama jay on pieni. Sovitaan, että|y| ≤ Y . Y :n valinta esitetään myöhemmin,tietysti Y on kokonaisluku. Negatiivinenkiny on tässä mahdollinen, mitä se sitten tarkoittaa-kaan! Vastaava kryptoteksti on

c = ((x+ y)a, mod n).

Vihamielinen ulkopuolinen taho tietää nyt julkisen avaimen (n, a), c:n,x:n jaY :n ja haluaalöytääy:n. Muodostetaan tätä vartenZn[t]:n polynomi

P (t) = (x+ t)a − c =

a∑

i=0

diti,

missä kertoimetdi esitetään positiivisessa jäännössysteemissä jada = 1. Etsittävänä on siissellainen lukuy, että|y| ≤ Y ja P (y) ≡ 0 mod n.

Määritellääna+ 1-ulotteinen hila〈v1, . . . ,va+1〉, missä

v1 = (n, 0, . . . , 0) , v2 = (0, nY, 0, . . . , 0) , v3 = (0, 0, nY 2, 0, . . . , 0) , . . . ,

va = (0, . . . , 0, nY a−1, 0) , va+1 = (d0, d1Y, d2Y2, . . . , da−1Y

a−1, Y a).

Ks. Pykälä 7.8. Kun tähän sovelletaan LLL-algoritmia, saadaan uusi kantau1, . . . ,ua+1, jostatarvitaan vainu1. Nyt hilan diskriminantti on

D =

∣∣∣∣∣∣∣∣∣∣∣∣∣

n 0 0 · · · 0 00 nY 0 · · · 0 00 0 nY 2 · · · 0 0...

......

. . ....

...0 0 0 · · · nY a−1 0d0 d1Y d2Y

2 · · · da−1Ya−1 Y a

∣∣∣∣∣∣∣∣∣∣∣∣∣

= naY 1+2+···+a = naYa(a+1)

2 ,

joten‖u1‖ ≤ 2

a4D

1

a+1 = 2a4n

aa+1Y

a2 .

u1 voidaan luonnollisesti kirjoittaa kokonaislukukertoimin myös alkuperäisen kannan vek-torien lineaariyhdelmänä:

u1 = e1v1 + · · ·+ ea+1va+1 = (f0, f1Y, f2Y2, . . . , faY

a),

missäfi = ei+1n+ ea+1di (i = 0, 1, . . . , a− 1) ja fa = ea+1.

Siispäfi ≡ ea+1di mod n (i = 0, 1, . . . , a).

Muodostetaan polynomi

Q(t) =a∑

i=0

fiti.

LUKU 8. RSA 73

KoskaP (y) ≡ 0 mod n, on myös

Q(y) =

a∑

i=0

fiyi ≡

a∑

i=0

ea+1diyi = ea+1

a∑

i=0

diyi = ea+1P (y) ≡ 0 mod n.

Edelleen, kolmioepäyhtälön, arvion|y| ≤ Y ja Cauchy–Schwarz-epäyhtälön nojalla

|Q(y)| ≤a∑

i=0

|fiyi| ≤

a∑

i=0

|fi|Yi =

a∑

i=0

1 · |fi|Yi ≤ (a+ 1)

1

2‖u1‖.

Tässä vaiheessa voidaan esittää arvioY :lle: ValitaanY siten, että

(a+ 1)1

22a4n

aa+1Y

a2 < n eli (totea!) Y < 2−

1

2 (a+ 1)−1

an2

a(a+1) .

Silloin |Q(y)| < n. Koska toisaaltaQ(y) ≡ 0 mod n, on oltavaQ(y) = 0. Haluttuy voi-daan siis löytää numeerisella juurten etsintäalgoritmilla kokonaiskertoimisesta polynomiyhtä-löstäQ(y) = 0. Vaihtoehtoja voi olla useita, niistä toivon mukaan sittenlöytyy se oikea.

Menettely on nopea, josa on kyllin pieni. Vektorienv1, . . . ,va+1 maksimipituus on ver-rannollinenY a:n pituuteen ja LLL-algoritmi on sen suhteen polynomiaikainen. Suurillea:narvoille toisaalta LLL-algoritmi on hidas—sehän ei ollut polynomiaikainen dimension koonsuhteen—ja numeerinen juurten etsintäkin on silloin työlästä.

Toisaalta suurillea:n arvoilleY ja siisy on valittava melko pieneksi, mikä edelleen rajoittaakäyttökelpoisuutta. Josn on suuruusluokkaa10300, saadaany:n pituudelle desimaaleissa jaa:lleyo. valinnasta seuraavanlainen yhteys:

10

20

30

40

50

y:n

mak

sim

ipitu

us

10 20 30 40 50a

Luku 9

ALGEBRA: RYHMÄT

9.1 Ryhmät

Ryhmäon algebrallinen struktuuriG = (A,⊙, 1), jossa⊙ on laskuoperaatio, ns.ryhmäoperaa-tio, ja 1 on ns. ryhmänidentiteettialkio.Lisäksi vaaditaan, että seuraavat ehdot ovat voimassa:

(1) (a⊙ b)⊙ c = a⊙ (b⊙ c) (⊙ on liitännäinen).

(2) a⊙ 1 = 1⊙ a = a.

(3) Jokaiselle alkiollea on olemassa yksikäsitteinen alkioa−1, ns.a:n käänteisalkioeli in-verssi,jolle a⊙ a−1 = a−1 ⊙ a = 1.

Edelleen vaaditaan luonnollisesti, että laskuoperaatioa⊙ b on määritelty kaikille alkioillea ja bja että tulos on yksikäsitteinen. Ryhmäoperaatio luetaan usein ”kertaa” ja sitä kutsutaantuloksi.Jos lisäksi vielä

(4) a⊙ b = b⊙ a (⊙ on vaihdannainen),

niin sanotaan, ettäG onvaihdannainen ryhmä1.Liitännäisyydestä johtuen voidaan kirjoittaa

a1 ⊙ a2 ⊙ · · · ⊙ an

ilman sulkuja, tulos ei riipu sulutuksesta. Edelleen merkitään, kuten Pykälässä 4.1,

an = a⊙ · · · ⊙ a︸ ︷︷ ︸

n kpl

, a−n = a−1 ⊙ · · · ⊙ a−1

︸ ︷︷ ︸

n kpl

ja a0 = 1

ja tavanomaiset potenssilaskusäännöt pätevät. Potenssitvoidaan myös laskea venäläisten talon-poikien menetelmällä.

Huomautus. Vaihdannaisia ryhmiä kutsutaan usein myösadditiivisiksi ryhmiksi.Tällöin käy-tetään tavallisesti myös seuraavia additiivisia merkintöjä ja nimityksiä: Ryhmäoperaatiota mer-kitään⊕:lla tai +:lla tms. ja kutsutaansummaksi.Usein se luetaan ”plus”. Identiteettialkiotataas kutsutaannolla-alkioksi ja merkitään0:lla tai 0:lla tms. Käänteisalkiotaa−1 kutsutaanvasta-alkioksija merkitään−a:lla. Potenssiaan kutsutaanmonikerraksija merkitäänna:lla.Vrt. myös merkinnät Pykälässä 4.1.

1Vaihdannaista ryhmää kutsutaan myöskommutatiiviseksi ryhmäksitai Abelin ryhmäksi.

74

LUKU 9. ALGEBRA: RYHMÄT 75

Yksinkertaisin ryhmä on tietystitriviaali ryhmä, jossa on pelkkä ykkösalkio. Muita esi-merkkejä ryhmistä ovat:

• Tuttu ryhmä on(Z,+, 0) (kokonaisluvut ja yhteenlasku), merkitään lyhyesti vainZ:lla.Käänteisalkiot ovat vastalukuja ja ryhmä on vaihdannainen.

• (Zm,+, 0) (jäännösluokat modulom ja yhteenlasku) on myös vaihdannainen ryhmä,käänteisalkiot ovat vastaluokkia. Tätä kutsutaanjäännösluokkaryhmäksija merkitään ly-hyesti vainZm:llä.

• Ei-singulaariset reaalialkioisetn × n-matriisit muodostavat matriisikertolaskun suhteenryhmän(Rn×n, ·, In), joka ei ole vaihdannainen (ellein = 1). Identiteettialkio onn× n-identiteettimatriisiIn ja käänteisalkiot ovat käänteismatriiseja.

• Jos merkitäänZ∗m:llä alkuluokkia modulom, ks. Pykälä 2.4, niin(Z∗

m, ·, 1) on vaihdan-nainen ryhmä, käänteisalkiot ovat käänteisluokkia. Huomaa, että kahden alkuluokan tuloon aina myös alkuluokka. Tätä kutsutaanZm:n yksiköiden ryhmäksi,merkitään lyhyestivainZ∗

m, ja siinä onφ(m) alkiota (alkuluokkaa).

• Jokaisesta renkaastaR = (A,⊕,⊙, 0, 1), ks. Pykälä 4.1, voidaan erottaa senadditiivinenryhmäR+ = (A,⊕, 0). Jokaisesta kunnastaF = (A,⊕,⊙, 0, 1) voidaan lisäksi erottaasenmultiplikatiivinen ryhmäF ∗ = (A− {0},⊙, 1).

Ryhmän(A,⊙, 1) alkiolle a pienintä sellaista lukuai ≥ 1 (jos olemassa), ettäai = 1,kutsutaana:n kertaluvuksi.Kertaluvun perusominaisuudet ovat samat kuin luvun kertaluvunmodulom Pykälässä 7.2 ja todistuksetkin ovat samat, itse asiassa kertaluku modulom on samakuin kertaluku ryhmässäZ∗

m:

• Josaj = 1, niin a:n kertalukui jakaaj:n.

• Josa:n kertaluku oni, niin aj :n kertaluku on

i

syt(i, j)=

pyj(i, j)

j.

• Josa:n kertaluku oni, niin a−1 = ai−1.

• Jos vaihdannaisessa ryhmässäa:n kertaluku oni ja b:n kertaluku onj ja syt(i, j) = 1,niin a⊙ b:n kertaluku onij.

• Äärellisen ryhmän alkioilla on aina kertaluku.

Jos äärellisen ryhmänG = (A,⊙, 1) koko onN ja jollekin alkiolleg

A = {1, g, g2, . . . , gN−1},

ts. kaikki ryhmän alkiot ovatg:n potensseja, niin ryhmää kutsutaansykliseksi ryhmäksija g:täsengeneraattoriksi.Usein tällöin merkitäänG = 〈g〉. Huomaa, ettäg:n kertaluvun on pakkosilloin ollaN (miksi?). Myös ääretön ryhmä voi olla syklinen, silloin vaaditaan, että

A = {1, g±1, g±2, . . . }.

Syklinen ryhmä on luonnollisesti aina vaihdannainen.Ilmeisesti esimerkiksiZ ja Zm ovat syklisiä, generaattoreina1 ja 1. Jos on olemassa primi-

tiivinen juuri modulom, niin Z∗m on syklinen, generaattorina mainittu primitiivinen juuri.

LUKU 9. ALGEBRA: RYHMÄT 76

Huomautus. Äärellinen syklinen ryhmä〈g〉, jossa onN alkiota, on rakenteeltaan siis aivansamanlainen eli isomorfinen kuinZN :

gi ⊙ gj = g(i+j,mod N) ja (gi)−1 = g(−i,mod N).

LaskeminenZN :ssä on hyvin helppoa. Toisaalta laskeminen〈g〉:ssä ei ole välttämättä ole ol-lenkaan helppoa, josgi:n ja i:n yhteyttä ei ole helppo laskea. Tätä käytetään lukuisissakrypto-systeemeissä, ks. seuraava luku. Asiaan palataan ns. diskreetin logaritmin yhteydessä.

Äärellisen kunnanFpn multiplikatiivinen ryhmäF∗pn on aina syklinen. Sen generaattoreita

kutsutaanprimitiivisiksi alkioiksi. Tämähän tuli jo todetuksi Lauseessa 6.4 alkukunnilleZp,joille generaattoreita kutsutaan myös primitiivisiksi juuriksi modulop.

JosG = (A,⊙, 1) on ryhmä ja myösH = (B,⊙, 1), missäB onA:n osajoukko, on ryh-mä, niinH onG:n aliryhmä.Esimerkiksi(2Z,+, 0), missä2Z on parillisten kokonaislukujenjoukko, onZ:n aliryhmä. Tärkeitä aliryhmiä ovatsykliset aliryhmäteli alkioiden generoimataliryhmät:Josa:n kertaluku oni, niin a:n generoimassa aliryhmässä〈a〉 on

B = {1, a, a2, . . . , ai−1}.

Jos taasa:lla ei ole kertalukua, niin

B = {1, a±1, a±2, . . . }.

On helppo todeta, että kyseessä on aliryhmä. Äärellisten ryhmien aliryhmien perusominaisuuson seuraava jaollisuustulos. Merkitään äärellisen joukonC mahtavuutta|C|:llä.

Lause 9.1. (Lagrangen lause)JosG = (A,⊙, 1) on äärellinen ryhmä jaH = (B,⊙, 1) senaliryhmä, niin|B| jakaa|A|:n. ErityisestiG:n jokaisen alkion kertaluku jakaa|A|:n.

Todistus.Tarkastellaan joukkoja

a⊙H = {a⊙ b | b ∈ B},

ns. vasempia sivuluokkia.Jos c on vasemmassa sivuluokassaa ⊙ H, niin c = a ⊙ b jaa = c ⊙ b−1, missäb ∈ B. Näin ollenc ⊙ H ⊆ a ⊙ H ja a ⊙ H ⊆ c ⊙ H, jotena ⊙ H= c ⊙ H. Kaksi vasenta sivuluokkaa ovat siis aina joko samat tai täysin erilliset.A jakautuunäin tiettyyn määrään erillisiä vasempia sivuluokkia, joissa kussakin on|B| alkiota. Huomaa,ettäB itsekin on vasen sivuluokka, nimittäin1⊙H.

JosG1 = (A1,⊙1, 11) jaG2 = (A2,⊙2, 12) ovat ryhmiä, niin niidensuora tuloon ryhmä

G1 ×G2 = (C,⊗, (11, 12)),

missä alkiojoukko on karteesinen tulo

C = A1 × A2 = {(a1, a2) | a1 ∈ A1 ja a2 ∈ A2}

ja operaatio⊗ sekä käänteisalkion otto määritellään kaavoilla

(a1, a2)⊗ (b1, b2) = (a1 ⊙1 b1, a2 ⊙2 b2) ja (a1, a2)−1 = (a−1

1 , a−12 ).

On helppo todeta, että näin määriteltyG1 × G2 on tosiaan ryhmä. Ideaa voidaan jatkaa, muo-dostaa kolmen ryhmän suoria tulojaG1 × G2 × G3 jne. Todistamatta esitetään seuraava klas-sinen tulos, joka osoittaa, että ryhmilläZm voidaan oleellisesti karakterisoida kaikki äärellisetvaihdannaiset ryhmät suoraa tuloa käyttäen:

LUKU 9. ALGEBRA: RYHMÄT 77

Lause 9.2. (Kroneckerin dekompositio)Jokainen äärellinen vaihdannainen ryhmä on raken-teeltaan identtinen eli isomorfinen jonkin suoran tulon

Zpi11

× Zpi22

× · · · × Zpikk

kanssa, missäp1, . . . , pk ovat eri alkulukuja jai1, . . . , ik ≥ 1. Tässä pitää sopia, että tyhjäsuora tulo vastaa triviaalia ryhmää{1}, niin saadaan sekin mukaan.

9.2 Diskreetti logaritmi

Sykliselle ryhmälle〈g〉 voidaan määritellä (diskreetti) logaritmi kannan (generaattorin)g suh-teen:

logg a = j tarkalleen silloin, kun a = gj.

Äärellisessä syklisessä ryhmässä, jossa onN alkiota, sovitaan vielä, että0 ≤ logg a ≤ N − 1.EsimerkiksiZ:ssa logaritmi on triviaali: Kanta on±1 ja log±1 a = ±a. RyhmässäZm:kin

se on helppo: Kanta on jokini, missäsyt(i,m) = 1, ja logi j = (ji−1,mod m). Mutta joZ∗p:n

logaritmi on kaikkea muuta kuin triviaali suurille alkuluvuille p ja on osoittautunut erittäin työ-lääksi laskea. Myös eräiden muiden ryhmien diskreetit logaritmit ovat vaikeita laskea. Vaikkaitse ryhmäG ei olisikaan syklinen, eikä diskreetti logaritmi siis olisi määritelty itseG:ssä, ovatsen syklisissä aliryhmissä logaritmit joka tapauksessa määriteltyjä.

Tarkastellaan lähemminZ∗p:n logaritmia, jota usein kutsutaan myösindeksiksi.Tehtävänä

on siis etsiä sellainen lukuj väliltä 0 ≤ j ≤ p − 2, ettägj ≡ b mod p, kun generaattori(primitiivinen juuri) g ja b on annettu, vaikkapa positiivisessa jäännössysteemissä desimaalilu-kuina. Selvästi tehtävä onNP:ssä: Arvataan vainj ja testataan potenssiinkorotuksella venä-läisten talonpoikien algoritmilla, että se on oikea. Deterministisestij voidaan edelleen laskeayksinkertaisella etsinnällä ja venäläisten talonpoikienalgoritmilla noin ajassaO(p(ln p)3) japolynomitilassa. Laskemalla etukäteen esiprosessointina ns.indeksitaulu,ts. parit

(i, (gi, mod p)) (i = 0, 1, . . . , p− 2)

lajiteltuna toisen komponentin mukaan, voidaan tehtävä ratkaista polynomiajassa ja -tilassa in-deksitaulu poislukien, mutta esiprosessointi vie nyt ylipolynomiaalisen ajan ja tilan. Eräänlaisenvälimuodon tarjoaa

Shanksin pikkuaskel-jättiaskel-algoritmi:

1. Asetetaanm← ⌈√p− 1 ⌉. Kokonaisneliöjuuri⌊

√p− 1⌋ on nopeasti laskettavissa ja

⌈√p− 1 ⌉ =

⌊√p− 1⌋, josp− 1 on neliö elip− 1 = ⌊

√p− 1⌋2

⌊√p− 1⌋+ 1 muuten.

2. Lasketaan parit

(i, (gmi, mod p)) (i = 0, 1, . . . , m− 1) (jättiaskeleet)

ja lajitellaan ne toisen komponentin mukaan. Tuloksena on listaL1. Tähän tarvitaan venä-läisten talonpoikien menetelmä ja jokin nopea lajittelualgoritmi, esimerkiksi pikalajittelu(quicksort).

LUKU 9. ALGEBRA: RYHMÄT 78

3. Lasketaan parit

(k, (bg−k, mod p)) (k = 0, 1, . . . , m− 1) (pikkuaskeleet)

ja lajitellaan nekin toisen komponentin mukaan. Näin saadaan listaL2.

4. Etsitään listastaL1 pari (i, y) ja listastaL2 pari (k, z), joissay = z.

5. Tulostetaan(mi+ k,mod p− 1) ja lopetetaan.

Jos mainitut parit löytyvät, niin saatu tulostusj = (mi+ k,mod p− 1) on oikea logaritmi, silläsilloin voidaan kirjoittaami+ k = t(p− 1) + j ja

gmi ≡ bg−k mod p eli b ≡ gmi+k = (gp−1)tgj ≡ 1 · gj ≡ gj mod p.

Toisaalta algoritmi johtaa aina tulokseen, sillä josb ≡ gj mod p ja 0 ≤ j ≤ p − 2, niin jvoidaan kirjoittaa jakolaskulla muotoonj = mi+ k, missä0 ≤ k < m, jolloin myös

i =j − k

m≤

j

m<

p− 1

m≤

p− 1√p− 1

=√

p− 1 ≤ m.

Pikkuaskel-jättiaskel-algoritmi voidaan implementoidaaikaanO(m) ja tilaanO(m).Muitakin algoritmeja diskreetin logaritmin laskemiseksiZ∗

p:ssä on, mm. Pollardin kengu-rualgoritmi, ks. Pykälä 12.2,Pohlig–Hellman-algoritmija ns.indeksilaskumenetelmä,ks. esi-merkiksi STINSON tai SALOMAA . Pohlig–Hellman-algoritmi on kohtuullisen nopea, mikälip− 1:llä on vain pieniä alkutekijöita. Kaikki nämä algoritmit voidaan myös yleistääF∗

pn:n dis-kreetin logaritmin laskuun, joka myös on hyvin työlästä.

9.3 Elliptiset käyrät

Geometrisestielliptisellä2 käyrällä tarkoitetaan3. asteen käyrää, jonka yhtälö on

y2 + a1xy + a3y = x3 + a2x2 + a4x+ a6.

Huomaa erikoinen kerrointen indeksointi, joka on perinteinen. Lisäehtona on, että käyrä onsileä, ts. että puolittain osittaisderivoimalla saadut yhtälöt

a1y = 3x2 + 2a2x+ a4

2y + a1x+ a3 = 0

eivät toteudu käyrällä yhtaikaa. Geometrisesti tämä takaa, että käyrällä on tangentti jokaisessapisteessä. Peruskursseilta tutun implisiittisen derivoinnin tuloksena nimittäin

dy

dx=

3x2 + 2a2x+ a4 − a1y

2y + a1x+ a3ja

dx

dy=

2y + a1x+ a33x2 + 2a2x+ a4 − a1y

.

Kun sallitaan vaaka- ja pystysuuntaiset tangentit, niin ainoa tilanne, jossa tangenttia ei välttä-mättä ole, on se, että osoittaja ja nimittäjä ovat yhtaikaa nollia.

Alunperin elliptinen käyrä on tietysti reaalinen eliR2:ssa. Käyrää voidaan ajatella missätahansa kunnassaF (ns. kerroinkunta), josta myös kertoimet silloin tulevat. Käyrä on silloin

2Nimi tulee siitä, että eräät algebralliset funtioty = f(x), jotka liittyvät ellipsin kaarenpituuksien laskuunintegroimalla, toteuttavat tällaisen3. asteen yhtälön.

LUKU 9. ALGEBRA: RYHMÄT 79

kaikkien niiden alkioparien(x, y) joukko, jotka toteuttavat yhtälön. Vaikka sileysehdolla ei oletällöin välttämättä yhtään mitään ”geometrista” merkitystä, osoittautuu, että se on kuitenkintärkeä.

Varsin yleisesti voidaan rajoittua hieman yksinkertaisempiin elliptisiin käyriin, nimittäinmuotoa

y2 = x3 ⊕ ax⊕ b

(ns.lyhyt Weierstraßin muoto) oleviin käyriin, missä yhtälöt

0 = 3x2 ⊕ a

2y = 0

eivät toteudu käyrällä yhtaikaa (sileysehto). Tässä on merkitty 2 = 21 sekä3 = 31. Olettaen,että2 6= 0 ja 3 6= 0, eliminoimalla yhtälöistä

y2 = x3 ⊕ ax⊕ b

0 = 3x2 ⊕ a

2y = 0

x ja y (ei ole kovin vaikeaa, kokeile) nähdään, että tämä vastaa ehtoa

4a3 ⊕ 27b2 6= 0.

Tällaisen käyrän erikoisuus on se, että se on symmetrinenx-akselin suhteen, ts. jos piste(x, y)on käyrällä, niin samoin on(x,−y).

Poikkeuksia ovat siis kunnat, joissa2 = 0 (esimerkiksi kunnatF2n) tai 3 = 0 (esimerkiksiF3n). Edellisissä muodot ovat

y2 ⊕ ay = x3 ⊕ bx⊕ c (ylisingulaarinentapaus)

jay2 ⊕ xy = x3 ⊕ ax2 ⊕ b (ei-ylisingulaarinentapaus)

ja jälkimmäisessä taasy2 = x3 ⊕ ax2 ⊕ bx⊕ c.

Lisäksi tarvitaan vastaavat sileysehdot. Vaikkakin esimerkiksi kunnatF2n ovat hyvin tärkeitäkryptografiassa, jatkossa rajoitutaan yksinkertaisuudenvuoksi vain kuntiin, joissa em. muotoy2 = x3 ⊕ ax ⊕ b, missä4a3 ⊕ 27b2 6= 0, on mahdollinen. Muita muotoja käsittelevät mm.WASHINGTON sekä BLAKE & SEROUSSI& SMART.

Kauan on geometrisin perustein tiedetty, että reaaliselleelliptiselle käyrälle eli sen pisteillevoidaan määritellä laskuoperaatio, joka tekee siitä vaihdannaisen ryhmän. Vastaava määritel-mä voidaan tehdä myös muissa kunnissa, jolloin myös saadaanvaihdannainen ryhmä. Näitäryhmiä kutsutaan yksinkertaisesti vainelliptisiksi käyriksi.Koska elliptisiä käyriä on hyvin pal-jon, saadaan tätä kautta runsaasti otollisia syklisiä aliryhmiä diskreettiin logaritmiin pohjautuviakryptosysteemejä ajatellen.

Tarkastellaan ryhmäoperaatiota ensin havainnollisuudenvuoksiR2:ssa. Ryhmän identiteet-tialkio on jossain määrin keinotekoinen, se ony-akselin suunnassa äärettömyydessä oleva ”pis-te” O. Positiivinen ja negatiivinen äärettömyys samaistetaan.Kaikkien y-akselin suuntaistensuorien sovitaan leikkaavan tässä pisteessäO. Geometrisesti pisteidenP ja Q ryhmäoperaatio⊞ tuottaa pisteenR = P ⊞Q sekä vastapisteen−P seuraavan säännön mukaan:

LUKU 9. ALGEBRA: RYHMÄT 80

1. Piirretään suora pisteidenP jaQ kautta. JosP = Q, tämä suora on tangentti pisteessäP .Sileys takaa, että tangentti on olemassa.

2. Mikäli piirretty suora ony-akselin suuntainen, onR = O.

3. MuutoinR on suoran ja käyrän leikkauspisteen peilikuvax-akselin suhteen. On mahdol-lista, että suora sivuaa käyrääP :ssä (eli leikkauspiste yhtyyP :hen), jolloinR on P :npeilikuva, taiQ:ssa (leikkauspiste yhtyyQ:hun), jolloinR onQ:n peilikuva.

4. −P onP :n peilikuvax-akselin suhteen. Erityisesti−O = O.

Ilmeisesti operaatio⊞ on vaihdannainen. Sääntöä sopivasti tulkiten nähdään välittömästi vielä,ettäP ⊞ O = O ⊞ P = P (erityisestiO ⊞ O = O) ja ettäP ⊞ −P = −P ⊞ P = O, kutenpitääkin.

Esimerkki. Ohessa on Maple-ohjelmiston piirtämä kuva elliptisestäkäyrästä

y2 = x3 − 5x+ 1

R2:ssa. Kuvassa on myös laskettu käyrän pisteiden

P = ((1−√29)/2, (3−

√29)/2) ja Q = (0, 1)

ryhmäoperaatio. Tulos on

R = ((1 +√29/2,−(3 +

√29)/2).

Huomaa, miten käyrä on kahdessa osassa, joista toinen on suljettuja toinen ääretön. Kaikki elliptiset käyrät eivät ole tällätavoin kak-siosaisia.

–8

–6

–4

–2

0

2

4

6

8

–4 –2 2 4

x

Lasketaan operaationP ⊞ Q = R tulos yleisesti. TapauksetP = O ja/tai Q = O ovathelpot. Jos pisteet ovatP = (x1, y1) sekäQ = (x2, y2), P 6= Q ja x1 = x2, niin ilmeisestiy1 = −y2, jotenR = O eli P = −Q. Näinpä voidaan edelleen rajoittua tapauksiin, joissa jokox1 6= x2 taiP = Q. Katsotaan ensin edellinen tapaus. SilloinP :n jaQ:n kautta kulkevan suoranparametriesitys on

{

x = x1 + (x2 − x1)t

y = y1 + (y2 − y1)t.

Sijoitetaan tämä elliptisen käyrän yhtälööny2 − x3 − ax− b = 0:

(y1 + (y2 − y1)t)2 − (x1 + (x2 − x1)t)

3 − a(x1 + (x2 − x1)t)− b = 0.

Vasen puoli ont:n 3. asteen polynomip(t). Koska pisteP on käyrällä (vastaa arvoat = 0)ja samoin pisteQ (vastaa arvoat = 1), polynomip(t) on jaollinen polynomillat(t − 1), ts.p(t) = q(t)t(t − 1) jollekin 1. asteen polynomilleq(t). Edelleen yhtälöstäq(t) = 0 saadaankolmatta leikkauspistettä(x3, y3) vastaava parametrin arvot3. Jakolaskutoimitus osoittaa, että

q(t) = (y2 − y1)2 − 3x1(x2 − x1)

2 − (x2 − x1)3(t + 1)

ja näin

t3 =(y2 − y1)

2

(x2 − x1)3−

2x1 + x2

x2 − x1.

LUKU 9. ALGEBRA: RYHMÄT 81

Sijoittamalla tämä suoran parametriesitykseen saadaan{

x3 = λ2 − x1 − x2

y3 = λ(x3 − x1) + y1,

missäλ =

y2 − y1x2 − x1

(piirretyn suoran kulmakerroin), ja lopulta

P ⊞Q = R = (x3,−y3).

Tässä voi olla, että(x3, y3) = P tai (x3, y3) = Q. Huomaa, että(x3, y3) on aina määritelty.Katsotaan vielä tapaus, jossaP = Q = (x1, y1), ja lasketaan

P ⊞ P = 2P = R.

Josy1 = 0, on käyrän tangentti ilmeisestiy-akselin suuntainen jaR = O eli −P = P . Näinvoidaan siirtyä tapaukseeny1 6= 0. Tangentin kulmakerroin on

dy

dx=

3x2 + a

2y.

PisteeseenP piirretyn tangenttisuoran parametriesitys on näin ollen{

x = x1 + 2y1t

y = y1 + (3x21 + a)t.

Sijoittamalla tämä käyrän yhtälöön kuten edellä saadaan polynomi

p(x) = (y1 + (3x21 + a)t)2 − (x1 + 2y1t)

3 − a(x1 + 2y1t)− b.

Koska pisteP on käyrällä (vastaa arvoat = 0), p(t) on jaollinen polynomillat:llä, ts.p(t) =q(t)t. Jakolaskulla saadaan

q(t) = ((3x21 + a)2 − 12x1y

21)t− 8y31t

2.

Yhtälönq(t) = 0 yksi juuri ont = 0 ja toinen on

t2 =(3x2

1 + a)2

8y31−

3x1

2y1.

Leikkauspiste(x2, y2) saadaan sijoittamalla tämä parametriesitykseen:{

x2 = λ2 − 2x1

y2 = λ(x2 − x1) + y1,

missä

λ =3x2

1 + a

2y1

(piirretyn suoran kulmakerroin). Lopulta saadaan

2P = R = (x2,−y2).

LUKU 9. ALGEBRA: RYHMÄT 82

Jälleen voi olla, ettäP = (x2, y2). Myös nyt(x2, y2) on aina määritelty.Nämä laskukaavat voidaan ottaa käyttöön missä tahansa kunnassa, jossa elliptinen käyrä

voidaan kirjoittaa muotoony2 = x3⊕ ax⊕ b, missä4a3⊕ 27b2 6= 0. Muissa kunnissa tarvitaanhieman erilaiset kaavat, ks. KOBLITZ tai WASHINGTON tai BLAKE & SEROUSSI& SMART.

Kaiken kaikkiaan todetaan, että vasta-alkion muodostaminen on helppoa (peilaus), ryhmä-operaatio⊞ on vaihdannainen ja varsin helposti laskettavissa. Operaation liitännäisyys on kui-tenkin vähän vaikea todistaa yo. kaavoista lähtien. Oikea maailma elliptisten käyrien ominai-suuksia ajatellen on ns.projektiivinen geometria,jossa myös itse ryhmäoperaatio luonnostaantulee esille. LiitännäisyysR2:ssa seuraakin melko suoraan klassisista kolmannen asteenkäy-rien projektiivisen geometrian tuloksista. Seuraavassa vanhasta alan suomalaisesta klassikosta3

tulos, josta liitännäisyys seuraa helposti:

”Jos kaksi suoraaa ja b leikkaa kolmannen asteen käyrän vastaavasti pisteissäA1, A2, A3;B1, B2, B3, ovat suorienA1B1, A2B2, A3B3 ja käyrän kolmannet leikkaus-pisteetC1, C2, C3 keskenään samalla suoralla.”

Muissa kunnissa liitännäisyys pitää todistaa erikseen ja se on varsin työläs tehtävä, ks. esimer-kiksi WASHINGTON. Huomaa, että muissa kunnissa myös vaihdannaisuus pitää todistaa erik-seen, mutta tämä on aika helppoa. Molemmat ovat symbolisia identiteettejä, joten ne voidaantodentaa symbolisesti. Tehdään se Maple-ohjelmistolla. Ilmeisesti tapaukset, joissa ainakin yksialkioista onO, ovat triviaaleja, joten ne voidaan jättää pois.

Aloitetaan vaihdannaisuudesta. Ensin määritellään ryhmäoperaatio

> eco:=proc(u,v)local lambda,xx,yy;lambda:=(v[2]-u[2])/(v[1]-u[1]);xx:=lambda^2-u[1]-v[1];yy:=lambda*(xx-u[1])+u[2];[xx,-yy];end:

ja sitten testataan

> A:=eco([x[1],y[1]],[x[2],y[2]]);

[(y2 − y1)

2

(x2 − x1)2− x1 − x2,− (y2 − y1)

(

(y2 − y1)2

(x2 − x1)2− 2x1 − x2

)

(x2 − x1)−1 − y1]

> B:=eco([x[2],y[2]],[x[1],y[1]]);

[(y1 − y2)

2

(x1 − x2)2− x2 − x1,− (y1 − y2)

(

(y1 − y2)2

(x1 − x2)2− 2x2 − x1

)

(x1 − x2)−1 − y2]

> normal(A-B);

[0, 0]

Todennetaan edelleen liitännäisyys tapauksessa, jossa eiole mukana kahdentamisia.

> A:=eco([x[1],y[1]],eco([x[2],y[2]],[x[3],y[3]])):> B:=eco(eco([x[1],y[1]],[x[2],y[2]]),[x[3],y[3]]):> C:=numer(normal(A-B)):> max(degree(C[1],y[1]),degree(C[1],y[2]),degree(C[1],y[3]),

degree(C[2],y[1]),degree(C[2],y[2]),degree(C[2],y[3]));

11

Sijoitetaan käyrän määrittelevät yhtälöt:

3NYSTRÖM, E.J.:Korkeamman geometrian alkeet sovellutuksineen.Otava (1948).

LUKU 9. ALGEBRA: RYHMÄT 83

> yhtalot:={seq(y[1]^(2*i)=(x[1]^3+a*x[1]+b)^i,i=1..5),seq(y[2]^(2*i)=(x[2]^3+a*x[2]+b)^i,i=1..5),seq(y[3]^(2*i)=(x[3]^3+a*x[3]+b)^i,i=1..5),seq(y[1]^(2*i+1)=y[1]*(x[1]^3+a*x[1]+b)^i,i=1..5),seq(y[2]^(2*i+1)=y[2]*(x[2]^3+a*x[2]+b)^i,i=1..5),seq(y[3]^(2*i+1)=y[3]*(x[3]^3+a*x[3]+b)^i,i=1..5)}:

> normal(subs(yhtalot,C));

[0, 0]

Termien lukumäärät kasvavat varsin suuriksi:

> nops(C[1]),nops(C[2]);

1082, 6448

Tarkistus käsipelissä olisi siis melkoinen työ, liitännäisyys voidaan tosin todistaa matemaatti-sesti. Katsotaan vielä liitännäisyys tapauksessa, jossa on mukana yksi kahdennus:

P ⊞ (Q⊞Q) = (P ⊞Q)⊞Q.

(Muut tapaukset käsitellään vastaavasti.) Määritellään ensin ko. kahdennus.

> ecs:=proc(u)local lambda,xx,yy;lambda:=(3*u[1]^2+a)/2/u[2];xx:=lambda^2-2*u[1];yy:=lambda*(xx-u[1])+u[2];[xx,-yy];end:

> A:=eco([x[1],y[1]],ecs([x[2],y[2]])):> B:=eco(eco([x[1],y[1]],[x[2],y[2]]),[x[2],y[2]]):> C:=numer(normal(A-B)):> max(degree(C[1],y[1]),degree(C[1],y[2]),

degree(C[2],y[1]),degree(C[2],y[2]));

15

Sijoitetaan käyrän määrittelevät yhtälöt:

> yhtalot:={seq(y[1]^(2*i)=(x[1]^3+a*x[1]+b)^i,i=1..7),seq(y[2]^(2*i)=(x[2]^3+a*x[2]+b)^i,i=1..7),seq(y[1]^(2*i+1)=y[1]*(x[1]^3+a*x[1]+b)^i,i=1..7),seq(y[2]^(2*i+1)=y[2]*(x[2]^3+a*x[2]+b)^i,i=1..7)}:

> normal(subs(yhtalot,C));

[0, 0]

Elliptiset käyrät ovat ryhminä hyvin vaihtelevia. Kroneckerin dekompositio kertoo kuiten-kin, että äärelliset elliptiset käyrät ovat jäännösluokkaryhmien suoria tuloja. Tarkempikin tulostunnetaan:

Lause 9.3. (Casselsin lause)Elliptinen käyrä yli äärellisen kunnanFq on joko syklinen tairakenteeltaan identtinen eli isomorfinen sellaisen kahdenjäännösluokkaryhmän suoran tulonZn1× Zn2

kanssa, ettän1 | n2, q − 1.

Ryhmän kokoa ajatellen tiedetään, että

Lause 9.4. (Hassen lause)Jos elliptisessä käyrässä yli äärellisen kunnanFq onN alkiota, niin

q + 1− 2√q ≤ N ≤ q + 1 + 2

√q.

LUKU 9. ALGEBRA: RYHMÄT 84

Ällistyttävää kyllä, mikäli elliptisen käyrän kertoimet ovat jossakin alikunnassa, riittää tietääpaljonko siinä on ko. alikunnassa alkioita:

Lause 9.5.Oletetaan, ettäE on elliptinen käyrä kunnassaFq ja siinä onq+1− a alkiota (vrt.Hassen lause) ja että yhtälönx2 − ax + q = 0 juuret ovatα sekäβ. SilloinE:ssä ajateltunaelliptiseksi käyräksi kunnassaFqm on tarkalleenqm+1−αm−βm alkiota. KoskaFq onFqm :nalikunta,E on tulkittavissa myös elliptiseksi käyräksiFqm:ssä. Ks. Pykälä 4.3.

Näiden lauseiden todistukset ovat jo varsin vaativaa algebrallista lukuteoriaa!4 Näin ollen el-liptisessä käyrässä yliFq:n on suurin piirtein yhtä monta alkiota kuinFq:ssä. Tarkankin alkio-määrän laskemiseksi tunnetaan melko tehokkaita algoritmeja, ns.Schoofin algoritmi5 ja senseurannaiset, ks. WASHINGTON tai BLAKE & SEROUSSI& SMART.

Ei ole helppoa löytää edes yhtä näistä monista alkioista. Itse asiassa ei tunneta polynomiai-kaista determinististä algoritmia elliptisen käyrän alkioiden generoimiseksi äärellisissä kunnis-sa. Josq = pk, eräs (hidas) tapa on tietysti muodostaa satunnaisia pareja (x, y), missäx, y ∈ Fq

käyttäen kunnanFq esitystäZp[x]:n polynomien jäännösluokkina modulo jokin astettak ole-va Zp[x]:n jaoton polynomi—ks. Pykälä 4.3—ja testata laskemalla toteuttaako pari elliptisenkäyrän yhtälön. Hassen lauseen nojalla alkio löytyy silloin kerta-arvauksella noin todennäköi-syydellä1/q. Seuraava Las Vegas -tyyppinen algoritmi tuottaa käyrän alkion positiivisessa jään-nössysteemissä esitettynä alkukunnassaZp, missäp > 3:

1. Valitaan satunnainen lukux väliltä 0 ≤ x < p ja asetetaan

z ← (x3 + ax+ b, mod p).

Hassen lauseen nojalla tämä tuottaa neliönjäännöksenz noin 50% todennäköisyydellä,sillä kustakinz:sta saadaan kaksiy:n arvoa, elleiz = 0.

2. Josz = 0, tulostetaan(x, 0) ja lopetetaan.

3. Josz(p−1)/2 6≡ 1 mod p, luovutaan tehtävästä ja lopetetaan. Eulerin kriteerin nojalla zon tällöin epäneliönjäännös modulop.

4. Lasketaan Shanksin algoritmia käyttäenz:n neliöjuurety1 ja y2 modulop, tulostetaan(x, y1) ja (x, y2) ja lopetetaan.

Algoritmi on ilmeisesti polynomiaikainen ja se tuottaa tuloksen noin25% todennäköisyydellä.Muista, että Shanksin algoritmi tuottaa tuloksen noin50% todennäköisyydellä.

Huomautus. Satunnaisesti etsimällä voidaan nyt löytää esimerkiksi sellainen elliptisen käyränalkioP 6= O ja (suuri) alkulukur, ettärP = O, jolloin P :n kertaluku onr. P :n kertaluvunhanon joka tapauksessa jaettavar. Syklinen aliryhmä〈P 〉 on silloin otollinen kryptografiaa aja-tellen. Toinen (hidas) tapa on valita satunnainen alkioP ja testata sen kertaluku, jonka pitäisitietysti olla suuri. Tähän käy eräs Shanksin pikkuaskel-jättiaskel-algoritmin versio. Toistamallaja käyttämällä kertaluvun ominaisuuksia—ks. Pykälä 9.1— voidaan kertalukua vielä kasvattaa.

Asia on kuitenkin varsin monimutkainen eikä elliptisten käyrien käyttö kryptografiassa olekovinkaan suoraviivaista. Ks. esimerkiksiROSING tai BLAKE & SEROUSSI& SMART tai ar-tikkeliviiteKONSTATINOU, E. & STAMATIOU , Y.C. & ZAROLIAGIS, C.: Efficient Generationof Secure Elliptic Curves.International Journal of Information Security6 (2007), 47–63.

Hyviä yleisiä viitteitä ovat KOBLITZ ja WASHINGTON ja mm. SILVERMAN & TATE taiCOHEN tai CRANDALL & POMERANCE.

4Ks. vaikkapa WASHINGTON tai CRANDALL & POMERANCE.5Alkuperäisviite on SCHOOF, R.: Elliptic Curves over Finite Fields and the Computationof Square Roots

mod p. Mathematics of Computation44 (1985), 483–494. Algoritmi on hankala ja myös vaikea implementoidanopeaksi.

Luku 10

ELGAMAL. DIFFIE–HELLMAN

10.1 Elgamalin kryptosysteemi

Elgamalin kryptosysteemi1 ELGAMAL voidaan pohjata mihin tahansa äärelliseen ryhmäänG = (A,⊙, 1), jonka suurille syklisille aliryhmille〈a〉 diskreetti logaritmiloga on vaikea las-kea. Tällaisia ryhmiä ovat esimerkiksiZ∗

p ja yleisemminF∗pn, erityisestiF∗

2n , sekä elliptiset käy-rät yli äärellisten kuntien.

Julkinen avain on kolmikkok1 = (G, a, b),

missäb = ay. Salainen avain onk2 = y. Huomaa, että julkinen avain sisältää tiedon salaisestaavaimesta, silläy = loga b, mutta sitä ei ole helppo laskea julkisesta avaimesta. Kryptaus onepädeterminististä, sitä varten valitaan satunnaisesti luku x väliltä 0 ≤ x < l, missäl on a:nkertaluku. Josl:ää ei haluta julkistaa tai sitä ei tiedetä, voidaan vaihtoehtoisesti antaa suurempi-kin yläraja, esimerkiksiG:n alkioluku, jonka tekijäl on, ks. Lagrangen lause. Kryptausfunktioon

ek1(w, x) = (ax, w ⊙ bx) = (c1, c2).

Viestilohko on siis tulkittavaG:n alkioksi. Dekryptausfunktio on

dk2(c1, c2) = c2 ⊙ c−y1 .

Dekryptaus toimii, sillä

dk2(ax, w ⊙ bx) = w ⊙ bx ⊙ (ax)−y = w ⊙ axy ⊙ a−xy = w.

Ideana on ”peittää”w kertomalla sebx:llä, x taas välitetäänax:n kautta.Jotta ELGAMAL voitaisiin pystyttää alkukunnan multiplikatiivisessa ryhmässäZ∗

p, valitaanyhtaikaa sekäp että primitiivinen juuria modulop. Lisäksi on muistettava, ettäp− 1:llä tulisiolla suuria alkutekijöitä, jotta esimerkiksi Pohlig–Hellman-algoritmilla ei saataisi diskreettiälogaritmia lasketuksi nopeasti. (Ks. Pykälä 7.2.) Tämä käyseuraavasti:

1. Valitaan satunnainen suuri alkulukuq sekä pienempi satunnainen lukur, joka voidaanjakaa tekijöihin.

2. Jos2qr + 1 on alkuluku, asetetaanp ← 2qr + 1. Huomaa, ettäp − 1:llä on silloin suurialkutekijäq. Muutoin mennään kohtaan 1.

1Systeemin kehitti Taher Elgamal vuonna 1984. Alkuperäisviite on ELGAMAL , T.: A Public Key Cryptosystemand a Signature Scheme Based on Discrete Logarithms.IEEE Transactions on Information TheoryIT–31 (1985),469–472. Tässä systeemissä tarkasteltiinZ∗

p:n logaritmeja.

85

LUKU 10. ELGAMAL. DIFFIE–HELLMAN 86

3. Valitaan satunnaisesti lukua väliltä 1 ≤ a < p.

4. Testataan Lucas’n kriteerillä onkoa primitiivinen juuri modulop vai ei. Tähän tarvittavatp− 1:n alkutekijät, eli2 ja q sekär:n alkutekijät, ovat nyt helposti saatavilla.

5. Josa on primitiivinen juuri modulop, tulostetaanp ja a ja lopetetaan. Muutoin mennäänkohtaan 3.

Huomautus. RyhmässäZ∗p on varottava käyttämästä sellaisia alkioitab, joiden kertalukur on

paljon pienempi kuinp. Muutoin onr:ää helppo kokeilla ja laskea

cr2 ≡ (wbx)r ≡ wr(br)x ≡ wr · 1 = wr mod p.

Jos tällainen kertaluku on oikea, on koko kryptosysteemi muutettu deterministiseksi RSAta muis-tuttavaksi systeemiksi, joka voi murtua helposti esimerkiksi keskikohtaamisella, ks. Pykälä 8.2.Poikkeuksena tapaus, jossaw ≡ bi mod p jollekin i:lle ja cr2 ≡ 1 mod p, mutta näitä valin-toja on vähän, josr on pieni.

10.2 Diffie–Hellman-avainjakosysteemi

ELGAMAL sallii useiden osapuolien julkaista julkisen avaimensa saman systeemin puitteis-sa: Kukin valitsee vain omany:nsä ja julkaisee vastaavanay:n. ELGAMAL onkin itse asiassamyöhempi modifikaatio eräästä vanhimmista julkisen avaimen systeemeistä,Diffie–Hellman-avainjakosysteemistäDIFFIE–HELLMAN.

Alkuasetelma on tässä sama kuin ELGAMALissa. Kukin osapuoli i valitsee jälleen satun-naisen luvunxi väliltä 0 ≤ xi < l tai joltain laajemmalta väliltä ja julkaiseeaxi:n. Osapuolteni ja j välinen yhteinen avain on silloinaxixj , jonka kumpikin voi laskea nopeasti julkaistustatiedosta ja omasta salaisesta luvustaan.

DIFFIE–HELLMANin murtaminen muodostuu seuraavista kahdesta operaatiosta. (1) Las-ketaanaxi:stäxi. (2) Lasketaan(axj )xi = axixj . Näin ollen se on ekvivalentti seuraavan tehtävänratkaisemisen kanssa:

DHP: Kun annetaan(G, a, b, c), laskebloga c.

Tämä tehtävä on ns.Diffie–Hellman-probleema.Diffie–Hellman-probleeman kompleksisuuttaei tiedetä, diskreetin logaritmin laskeminen luonnollisesti ratkaisee myös sen. Huomaa, ettäb:nja c:n järjestyksellä ei itse asiassa ole väliä, sillä

bloga c = (aloga b)loga c = (aloga c)loga b = cloga b.

Myös ELGAMALin dekryptaus on ekvivalentti Diffie–Hellman-probleeman kanssa. Jos ni-mittäin DHP voidaan ratkaista nopeasti, saadaan ensin lasketuksi nopeasti

bx = bloga ax = bloga c1

ja sittenc2 ⊙ b−x = w

ja ELGAMAL murtuu. Toisaalta, jos ELGAMAL murtuu, saadaan kryptotekstistä(c1, c2) jajulkisesta tiedosta nopeasti lasketuksiw = c2 ⊙ b−x, jolloin saadaan myös lasketuksi

bloga c1 = bx = (c−12 ⊙ w)−1.

Koskac1 on satunnainen〈a〉:n alkio, tietää tämä sitä, että DHP ratkeaa.

LUKU 10. ELGAMAL. DIFFIE–HELLMAN 87

10.3 Elliptisiin käyriin perustuvat kryptosysteemit

Elliptisen käyrän syklistä aliryhmää käyttäen voidaan pystyttää Elgamalin kryptosysteemi. Täl-löin luonnollisesti ko. syklisessä aliryhmässä diskreetin logaritmin tai Diffie–Hellman-problee-man pitää olla vaikeasti ratkaistavissa. Valitettavasti vain eräissä elliptisissä käyrissä (ylisin-gulaariset elliptiset käyrät) yli äärellisten kuntien nämä probleemat ovat suhteellisen nopeastiratkaistavissa ns.Menezes–Okamoto–Vanstone-algoritmilla,ja näitä pitää välttää, ks. KOBLITZ

tai WASHINGTON tai BLAKE & SEROUSSI& SMART.2 Todettakoon, että Shanksin pikkuaskel-jättiaskel-algoritmi sopii diskreetin logaritmin laskemiseksi elliptisissä käyrissä, ja samoin Poh-lig–Hellman-algoritmi, mutta ne eivät aina ole nopeita.

Yksi vaikeus on luonnollisesti se, että elliptisten käyrien syklisten aliryhmien konstruktioon työlästä. Toinen vaikeus on, että kun ELGAMAL äärellisille kunnille noin kaksinkertais-taa viestin pituuden (parikonstruktio), niin ELGAMAL elliptisille käyrille yli äärellisten kun-tien noin nelinkertaistaa sen. Elliptisessä käyrässähän on Hassen lauseen nojalla pisteitä suurinpiirtein yhtä monta kuin kunnassa alkioita. Tämä vältetäänkäyttämällä tehokkaampaa ELGA-MALin varianttia, ns.Menezes–Vanstone-systeemiäMENEZES–VANSTONE. Julkinen avainon kolmikkok1 = (E, α, β), missäE on elliptinen käyrä yli alkukunnanZp, missäp > 3, α ongeneroiva alkioE:n syklisessä aliryhmässä jaβ = aα. Salainen avain onk2 = a. ViestilohkoonZp:n alkioiden pari(w1, w2) positiivisessa jäännössysteemissä esitettynä.

Kryptausfunktio määritellään seuraavasti:

ek1((w1, w2), x) = (y0, y1, y2),

missä,y0 = xα , y1 = (c1w1, mod p) , y2 = (c2w2, mod p),

x on satunnaisluku—vrt. ELGAMAL—ja luvutc1 sekäc2 saadaan, kun esitetään elliptisenkäyrän pistexβ = (c1, c2) positiivisessa jäännössysteemissä.x pitää valita siten, ettäc1, c2 6≡ 0mod p. Dekryptausfunktio on puolestaan

dk2(y0, y1, y2) = ((y1c−12 , mod p), (y2c

−12 , mod p)).

Huomaa, ettäc1 ja c2 saadaana:n avullay0:sta, sillä

ay0 = a(xα) = (ax)α = x(aα) = xβ = (c1, c2).

Ideana on ELGAMALin tapaan käyttää elliptistä käyrää viestin ”peittämiseen”. ELGAMALintapaan MENEZES–VANSTONE myös vain noin kaksinkertaistaa viestin pituuden, kaksiZp:nalkiota kryptautuu neljäksi.

Huomautus. Tilaa voidaan säästää myös ”pakkaamalla” elliptisen käyrän alkio pienempääntilaan. Pakkaus ja sen purkaminen vievät sitten tosin lisääaikaa. Esimerkiksi alkukunnassaZp elliptisen käyrän alkio (piste)(x, y) voidaan pakata muotoon(x, i), missäi = (y,mod 2).y:hän voidaan laskeax3 + ax + b:stä Shanksin algoritmilla ja merkkivalinta määräytyyi:stä.(Jos(x, y) on käyrän piste, niin samoin on(x, p− y) ja p− y ≡ 1− y ≡ 1− i mod 2.)

2Ikävä piirre on sekin, että juuri käytännön kannalta mukavat ”bitteihin perustuvat” äärelliset kunnatF2n näyt-täisivät olevan huonompia kuin muut. Ks. esimerkiksi GAUDRY, P. & HESS, F. & SMART, N.P.: Constructiveand Destructive Facets of Weil Descent on Elliptic Curves.Journal of Cryptology15 (2002), 19–46. Mitä pidem-mälle matemaattisesti sangen vaativassa elliptisten käyrien teoriassa edetään sitä enemmän tällaisia heikkouksialuultavasti paljastuu.

LUKU 10. ELGAMAL. DIFFIE–HELLMAN 88

Kolmas vaikeus elliptisten käyrien käytössä on viestin koodaaminen käyrän pisteiksi. Erästapa tämän suorittamiseksi on seuraava. Rajoitutaan tässäelliptisiin käyriin alkukunnassaZp,menettely yleistyy toki muihinkin äärellisiin kuntiin.

1. Koodataan viestilohko luvuksim, jolle m+ 1 ≤ p/100.

2. Testataan samaan samaan tapaan kuin Pykälän 9.3 algoritmissa onko elliptisellä käyrälläsellaista pistettä(x, y), että100m ≤ x ≤ 100m+ 99.

3. Jos tällainen piste(x, y) löytyy, valitaan se viestinm vastineeksi. Muutoin luovutaantehtävästä. Luopuminen on toisaalta harvinaista, sillä ontodettu, että algoritmi luopuunoin todennäköisyydellä2−100 ∼= 10−30.

Tällainen menettely tietysti hidastaa kryptausprosessiajonkin verran. Huomaa, että dekoodauson nopeaa:m = ⌊x/100⌋.

Huomautus. Elliptisiin käyriin pohjautuvien kryptosysteemien etu esimerkiksi RSAhan verrat-tuna on se, että nykykäsityksen mukaan tarvittava avaimen koko on huomattavasti pienempi.Mainittakoon vielä Richard Crandallin patentoima ”nopea”elliptisten käyrien kryptosysteemiCRANDALL, joka perustuu erikoisten alkulukujen, ns.Mersennen alkulukujen,käyttöön.

10.4 XTR

Uudempi, hyvin nopea variantti DIFFIE–HELLMAN- tai ELGAMAL-tyyppisestä kryptosys-teemistä saadaan eräiden äärellisten kuntien yksikköryhmissä, ns.XTR-systeemi.3 XTRssä toi-mitaan ryhmänF∗

p6 suurta kertalukuar olevassa syklisessä aliryhmässä, missäp on suuri alku-luku ja r | p2 − p + 1. Tällaisessa aliryhmässä alkioiden esitys voidaan tehdä pienessä tilas-sa ja laskuoperaatiot ovat implementoitavissa nopeina. Kysymys on siis lähinnä ryhmän sopi-vasta valinnasta implementoinnin kannalta. Vastaavanlaisia menettelyjä on muitakin, mm. ns.CEILIDH-systeemi.

3Alkuperäisviite on LENSTRA, A.K. & V ERHEUL, E.R.: The XTR Public Key System.Proceedings of Crypto’00. Lecture Notes in Computer Science1880, Springer–Verlag (2000), 1–19. Nimi muuten tulee sanoista”EfficientCompact Subgroup Trace Representation”.

Luku 11

NTRU

11.1 Määrittely

NTRU-kryptosysteemi1 on polynomirenkaisiin ja niiden jäännösluokkarenkaisiinperustuvakryptosysteemi, joka jossain määrin muistuttaa RIJNDAELia. Kuten RIJNDAELkin se on saa-nut paljolti inspiraationsa ns. syklisten koodien konstruktiosta koodausteoriassa, ks. kurssi Koo-dausteoria. NTRU on konstruktioltaan jonkin verran mutkikkaampi kuin RSA tai ELGAMAL.

NTRUssa valitaan ensin positiiviset kokonaisluvutn, p ja q, missäp on paljon pienempikuin q ja syt(p, q) = 1. Eräs esimerkkivalinta onn = 107, p = 3, q = 64. Systeemi pohjau-tuu polynomirenkaisiinZp[x] ja Zq[x], ja erityisesti jäännösluokkarenkaisiinZp[x]/(x

n − 1) jaZq[x]/(x

n − 1). Ks. Pykälä 4.2 ja huomaa, ettäxn − 1 on pääpolynomi kummassakin polyno-mirenkaassa, joten sillä voi jakaa.

Tärkeitä ovat siis jakojäännökset jaettaessaxn−1:llä eli enintään astettan−1 olevatZp[x]:nja Zq[x]:n polynomit. Laskeminen näilläZp[x]/(x

n − 1):ssä jaZq[x]/(xn − 1):ssä on helppoa,

sillä yhteenlasku on tavallinen polynomien yhteenlasku jakertolaskussa

xk ≡ x(k,mod n) mod xn − 1.

Jatkossa käytetään seuraavaa merkintää. JosP (x) on kokonaiskertoiminen polynomi, niinZm[x]:n polynomiP(m)(x) saadaanP (x):stä ottamalla sen kertoimet modulom. Lisäksi jatkos-sa tällainenP(m)(x)—eli sen kertoimet—esitetään symmetrisessä jäännössysteemissä,ks. Py-kälä 2.4. Ajatellen polynomien yhteen- ja kertolaskua todetaan hyvin helposti, että josZ[x]:ssäR(x) = P (x) + Q(x) ja S(x) = P (x)Q(x), niin Zm[x]:ssäR(m)(x) = P(m)(x) + Q(m)(x) jaS(m)(x) = P(m)(x)Q(m)(x). Edelleen voidaan todeta, että josP (x) ∈ Z[x] on enintään astet-ta n − 1, niin samoin onP(m)(x) ∈ Zm[x]. Tällöin polynomiP(m)(x) voidaan ajatella myösjäännösluokkarenkaanZm[x]/(x

n − 1) polynomiksi.Systeemin pystytystä varten valitaan kaksi salaista enintään astettan− 1 olevaaZ[x]:n po-

lynomiaf(x) ja g(x). Näistä saadaan edelleenZp[x]:n polynomitf(p)(x) ja g(p)(x) sekäZq[x]:npolynomit f(q)(x) ja g(q)(x). Kuten edellä todettiin,f(p)(x) ja g(p)(x) voidaan tulkita myösjäännösluokkarenkaanZp[x]/(x

n − 1) polynomeiksi. Samoinf(q)(x) ja g(q)(x) voidaan tul-kita jäännösluokkarenkaanZq[x]/(x

n − 1) polynomeiksi. Näin tulkittuina polynomeiltaf(p)(x)ja f(q)(x)—tai alkuperäiseltä polynomiltaf(x)—vaaditaan lisäksi, että on olemassa sellaisetenintään astettan− 1 olevat polynomitFp(x) ∈ Zp[x] ja Fq(x) ∈ Zq[x], että

Fp(x)f(p)(x) ≡ 1 mod xn − 1 ja Fq(x)f(q)(x) ≡ 1 mod xn − 1.

1Nimen alkuperästä ei ole selvyyttä, alkuperäisviite on HOFFSTEIN, J. & PIPHER, J. & SILVERMAN , J.H.:NTRU: A Ring-Based Public Key Cryptosystem.Proceedings of ANTS III. Lecture Notes in Computer Science1423. Springer–Verlag (1998), 267–288. Idea on pari vuotta vanhempi.

89

LUKU 11. NTRU 90

Ts.Fp(x) onf(p)(x):n käänteisalkioZp[x]/(xn − 1):ssä jaFq(x) vastaavastif(q)(x):n käänteis-

alkioZq[x]/(xn − 1):ssä. Vielä lasketaanZq[x]:ssä

h(x) ≡ Fq(x)g(q)(x) mod xn − 1.

Ilmeisesti voidaan olettaa, ettäh(x):n aste enintäänn − 1, joten se voidaan myös tulkita jään-nösluokkarenkaanZq[x]/(x

n − 1) polynomiksi.Julkinen avain on nyt(n, p, q, h(x)) ja salainen avain on(f(p)(x), Fp(x)). Viesti koodataan

Zp[x]/(xn − 1):n alkioksi, ts. viesti on enintään astettan − 1 olevaZp[x]:n polynomiw(x).

Erikoisesti myösw(x) esitetään käyttäen symmetristä jäännössysteemiämodulop. Josp = 3,niin mahdollisetw(x):n kertoimet ovat siis−1, 0 ja 1. Näin esitettyw(x) on siirrettävissä myösZq[x]:n polynomiksiw(q)(x), otetaan vain kertoimet moduloq. Huomaa, että tämä nimenomaanvaatii tietyn kerrointen esityksen!

11.2 Kryptaus ja dekryptaus

Kryptausta varten valitaan satunnaisesti enintään astetta n − 1 oleva polynomiφ(x). Tästäedelleen saadaan polynomirenkaanZp[x] polynomi φ(p)(x) sekä polynomirenkaanZq[x] po-lynomi φ(q)(x), jotka edelleen ovat tulkittavissa jäännösluokkarenkaiden Zp[x]/(x

n − 1) jaZq[x]/(x

n− 1) polynomeiksi, vastaavasti. Kryptaus suoritetaanZq[x]/(xn− 1):ssä seuraavasti:

c(x) ≡ pφ(q)(x)h(x) + w(q)(x) mod xn − 1.

Dekryptauksessa lasketaan ensinZq[x]/(xn − 1):ssä

a(x) ≡ f(q)(x)c(x) mod xn − 1

ja esitetääna(x):n kertoimet symmetrisessä jäännössysteemissä moduloq. Jälleen tässä esi-tyksessäa(x) on siirrettävissäZp[x]:n polynomiksia(p)(x), otetaan kertoimet modulop. Senjälkeen itse viesti saadaan ideaalisesti laskemallaZp[x]/(x

n − 1):ssä

w′(x) ≡ Fp(x)a(p)(x) mod xn − 1

ja esittämälläw′(x) käyttäen kertoimille symmetristä jäännössysteemiä modulo p.Mutta välttämättä ei olew′(x) = w(x)! Vain valitsemalla käytetyt polynomit sopivas-

ti dekryptaus onnistuu—ainakin suurella todennäköisyydellä. Ensinnäkin voidaan todeta, ettäZq[x]/(x

n − 1):ssä

a(x) ≡ f(q)(x)c(x) ≡ f(q)(x)(pφ(q)(x)h(x) + w(q)(x))

≡ pf(q)(x)Fq(x)φ(q)(x)g(q)(x) + f(q)(x)w(q)(x)

≡ pφ(q)(x)g(q)(x) + f(q)(x)w(q)(x) mod xn − 1.

Jos nytp on paljon pienempi kuinq ja polynomienφ(x), g(x), f(x) sekäw(x) kertoimet ovatitseisarvoiltaan pieniä, on todennäköistä, ettei laskettaessapφ(q)(x)g(q)(x) + f(q)(x)w(q)(x)mod xn − 1 kertoimia tarvitse redusoida lainkaan moduloq esitettäessä kertoimet symmet-risessä jäännössysteemissä moduloq. (Muista edellä ollut ”helppo” kertolasku!) Tästä on seseuraus, että polynomitφ(p)(x), g(p)(x) ja f(p)(x) saadaan myös polynomeistaφ(q)(x), g(q)(x)ja f(q)(x) ottamalla vain niiden kertoimet modulop—kaikki kertoimet esitettyinä symmetrises-sä jäännössysteemissä—ja ettäZp[x]/(x

n − 1):ssä

a(p)(x) ≡ pφ(p)(x)g(p)(x) + f(p)(x)w(x) ≡ f(p)(x)w(x) mod xn − 1.

Näin ollen (edelleenZp[x]/(xn − 1):ssä) todennäköisesti

w′(x) ≡ Fp(x)a(p)(x) ≡ Fp(x)f(p)(x)w(x) ≡ w(x) mod xn − 1

eli dekryptaus onnistuu.

LUKU 11. NTRU 91

11.3 Systeemin pystytys

Virheetön dekryptaus ei siis ole automaattinen, vaan edellyttää, että käytetyt parametrit ja po-lynomit valitaan sopivasti, ja silloinkin vain suurella todennäköisyydellä. MerkitäänPn,i,j:lläniiden enintään astettan − 1 olevien polynomien joukkoa, joiden kertoimistai kpl on = 1,j kpl on= −1 ja loput ovat= 0. Seuraavia valintoja on suositeltu:

n p q f(x) g(x) φ(x)107 3 64 ∈ P107,15,14 ∈ P107,12,12 ∈ P107,5,5

167 3 128 ∈ P167,61,60 ∈ P167,20,20 ∈ P167,18,18

503 3 256 ∈ P503,216,215 ∈ P503,72,72 ∈ P503,55,55

Mikäli—kuten yllä— p = ri11 ja q = ri22 , missär1 ja r2 ovat eri alkulukuja, polynomif(x)sekä sen inverssitFp(x) ja Fq(x) voidaan etsiä seuraavalla menettelyllä. Muussa tapauksessatarvitaan vielä Kiinalainen jäännöslause polynomeille.

1. Otetaan satunnainen kokonaiskertoiminen polynomif(x), jonka aste on enintäänn − 1(ehkäpä yo. taulukon mukaisesti).

2. Eukleideen algoritmia käyttäen tarkistetaan, ettäZr1 [x]:ssäsyt(f(r1)(x), xn − 1) = 1 ja

Zr2 [x]:ssäsyt(f(r2)(x), xn − 1) = 1, ks. Pykälä 4.2. Jos näin ei ole, luovutetaan.

3. Bézout’n lauseen nojalla silloin saadaan Eukleideen algoritmilla sellaiset kokonaiskertoi-miset polynomith1(x), k1(x), l1(x) ja h2(x), k2(x), l2(x), että

1 = h1(x)f(x)+k1(x)(xn−1)+r1l1(x) ja 1 = h2(x)f(x)+k2(x)(x

n−1)+r2l2(x),

missäh1(x) ja h2(x) ovat enintään astettan, k1(x) ja k2(x) enintään astettan − 1 sekäl1(x) ja l2(x) enintään astetta2n− 1. Lisäksi voidaan ilmeisesti olettaa, että polynomienh1(x), k1(x) ja h2(x), k2(x) kertoimet ovat symmetrisessä jäännössysteemissä modulor1ja r2, vastaavasti.

4. Merkitäänj1 = ⌈log2 i1⌉ ja j2 = ⌈log2 i2⌉, jolloin 2j1 ≥ i1 ja 2j2 ≥ i2.

5. Lasketaan2

Fp(x) ≡ h1(x)

j1−1∏

m=0

(1 + r2m

1 l1(x)2m) mod xn − 1 Zp[x]/(x

n − 1):ssä

sekä

Fq(x) ≡ h2(x)

j2−1∏

m=0

(1 + r2m

2 l2(x)2m) mod xn − 1 Zq[x]/(x

n − 1):ssä,

tulostetaan ne jaf(x) ja lopetetaan.

Menettely tuottaa tuloksen yleensä heti. Tulos on oikea, sillä (totea!)

Fp(x)f(p)(x) ≡ 1− r2j1

1 l1(x)2j1 ≡ 1 mod xn − 1 Zp[x]/(x

n − 1):ssä

jaFq(x)f(q)(x) ≡ 1− r2

j2

2 l1(x)2j2 ≡ 1 mod xn − 1 Zq[x]/(x

n − 1):ssä.

Polynomig(x) valitaan satunnaisesti (taulukon sallimissa rajoissa).

2Tämä operaatio on ns.Henselin nosto.Tapauksissaj1 = 0 ja j2 = 0 esiintyvät tyhjät tulot ovat≡ 1.

LUKU 11. NTRU 92

11.4 Hyökkäys LLL-algoritmilla

NTRU käyttää enintään astettan − 1 olevia polynomeja, jotka voidaan tulkitan-vektoreiksi(tässä vaakavektoreiksi). Eo. polynomeille

f(x) = f0 + f1x+ · · ·+ fn−1xn−1 ,

g(x) = g0 + g1x+ · · ·+ gn−1xn−1 ja

h(x) = h0 + h1x+ · · ·+ hn−1xn−1

nämä vektorit ovat

f = (f0, f1, . . . , fn−1) , g = (g0, g1, . . . , gn−1) ja h = (h0, h1, . . . , hn−1).

Edellä olevan mukaisestiZq[x]/(xn − 1):ssä

h(x) ≡ Fq(x)g(q)(x) mod xn − 1 eli f(q)(x)h(x) ≡ g(q)(x) mod xn − 1.

Muista, ettäFq(x) onf(q)(x):n inverssiZq[x]/(xn − 1):ssä. Jos otetaan käyttöön matriisi

H =

h0 h1 · · · hn−1

hn−1 h0 · · · hn−2...

.... . .

...h1 h2 · · · h0

,

niin vm. yhtälö voidaan kirjoittaa muotoon

fH ≡ g mod q.

Huomaa, miten matriisinH rakenne hoitaa näppärästi redusoinnin moduloxn − 1.Yo. vektorit tuovat mieleen hilat. Sopiva hilan dimensio onkuitenkin2n. Otetaan käyttöön

2n× 2n-matriisi

M =

(δIn H

On −qIn

)

(lohkomuodossa), missäIn on n × n-identiteettimatriisi,On on n × n-nollamatriisi jaδ 6= 0on reaaliluku. SelvästiM on ei-singulaarinen, merkitään〈M〉:llä sen rivien generoimaa hilaa.Huomaa, ettäM saadaan julkisesta avaimesta.

Koskaf(q)(x)h(x) ≡ g(q)(x) mod xn − 1, niin Z[x]/(xn − 1):ssä

f(x)h(x) ≡ g(x) + qk(x) mod xn − 1

jollekin kokonaiskertoimiselle enintään astettan − 1 olevalle polynomillek(x). Kun k(x) esi-tetään yo. tavallan− 1-vaakavektorinak, tämä yhtälö voidaan kirjoittaa myös muotoon

fH = g + qk.

Matriisimuodossa saadaan edelleen yhtälö(f k

)M =

(δf g

).

Tämä osoittaa, että2n-vektori(δf g

)on hilassa〈M〉. Koskaf(x):n ja g(x):n kertoimet ovat

pieniä, kyseessä on lyhyt hilan vektori. Sopivalla luvunδ valinnalla voidaan pituutta vielä pie-nentää. Jos

(δf g

)on kyllin lyhyt, se voidaan usein löytää LLL-algoritmilla ja murtaa systee-

mi.

Huomautus. Yllä esitetyt suositeltavat NTRUn parametrit on valittu juuri estämään tämän-tapaiset hyökkäykset LLL-algoritmilla. Toistaiseksi NTRUsta ei ole löydetty vakavia heikkouk-sia, eräistä päinvastaisista väitteistä huolimatta. Todettakoon, että toisin kuin RSAlle ja ELGA-MALille, NTRUta ei nykytiedon mukaan voi murtaa kvanttilaskennallakaan, ks. Luku 15.

Luku 12

TIIVISTEFUNKTIOT JA TIIVISTEET

12.1 Määritelmiä

Tiiviste on vakiopituinen viestiä ”kyllin tarkasti” kuvaava sana. Viesti saa tällöin olla hyvin-kin pitkä. Menetelmä, joka antaa tiivisteen, ontiivistefunktio.Koska mahdollisia tiivisteitä onvähemmän kuin viestejä, tiivistefunktio ei ole injektiivinen, ts. se antaa tietyissä tilanteissa eriviesteille saman tiivisteen. Tätä kutsutaantörmäykseksi.Jotta tiivistefunktio olisi käyttökelpoi-nen, pitää sen luonnollisesti olla nopeasti laskettavissaviestistä, mutta myös sellainen, etteivastapuoli voi käyttää törmäyksiä mitenkään tehokkaasti hyväkseen. Tätä silmälläpitäen määri-tellään erilaisia käsitteitä:

• Tiivistefunktioh onviestillew heikosti törmäyksetön,jos on laskennallisesti vaikeaa löy-tää toinen viestiw′, jolle h(w) = h(w′).

• Tiivistefunktio h on heikosti törmäyksetön,jos annetulle viestillew on laskennallisestivaikeaa löytää toinen viestiw′, jolle h(w) = h(w′).

• Tiivistefunktioh onvahvasti törmäyksetön,jos on laskennallisesti vaikeaa löytää eri vies-tit w jaw′, joille h(w) = h(w′). Ts. jos on laskennallisesti vaikeaa löytää viestiw, jolle hei ole heikosti ei-törmäävä.

• Tiivistefunktioh on yksisuuntainen,jos annetulle tiivistelmället on laskennallisesti vaa-tivaa löytää viestiw, jolle h(w) = t.

Nämä eivät ole aivan tarkkoja määritelmiä, ts. tässä ei ajatella laskennallista vaativuutta. Josviestiavaruus on äärellinen—kuten se yleensä on—ei vaativuutta asymptoottisena käsitteenävoi oikeastaan määritelläkään.

Huomautus. Muunkinlaisia nimityksiä käytetään. Heikosti törmäyksetöntä tiivistefunktiota kut-sutaan myöstoisen alkukuvan estäväksi,vahvasti törmäyksetöntä myös vaintörmäyksettömäksija yksisuuntaista myösalkukuvan estäväksi.

Yksisuuntaisuuden ja vahvan törmäyksettömyyden välillä on yhteys:

Lause 12.1.Jos viestiavaruusW on äärellinen ja tiivisteavaruus onT ja |W | ≥ 2|T |, missä| · |tarkoittaa joukon mahtavuutta, niin vahvasti törmäyksetön tiivistefunktioh on yksisuuntainen.Tarkemmin sanoen, algoritmiA, joka kääntääh:n, voidaan muuntaa Las Vegas -tyyppiseksiprobabilistiseksi algoritmiksi, joka löytää törmäyksen ainakin todennäköisyydellä1/2.

93

LUKU 12. TIIVISTEFUNKTIOT JA TIIVISTEET 94

Todistus.MerkitäänMw:llä niiden viestien joukkoa, joilla on sama tiiviste kuinw:llä, jaD:lläkaikkien näiden joukkojen muodostamaa luokkaa. Silloin

|D| = |T | ja∑

D∈D

|D| = |W |.

Seuraava Las Vegas -algoritmi löytää törmäyksen tai luopuukoko jutusta.

1. Valitaan satunnainen viestiw ∈ W .

2. Lasketaan tiivistet = h(w).

3. Etsitään algoritmiaA käyttäen sellainen viestiw′, ettäh(w′) = t.

4. Josw′ 6= w, tulostetaanw jaw′ ja lopetetaan. Muutoin luovutetaan ja lopetetaan.

Pitää vain näyttää, että algoritmi antaa tuloksen ainakin todennäköisyydellä1/2:

P(törmäys löytyy) =∑

w∈W

|Mw| − 1

|Mw|

1

|W |=

1

|W |

D∈D

w∈D

|D| − 1

|D|

=1

|W |

D∈D

(|D| − 1) =1

|W |

(∑

D∈D

|D| −∑

D∈D

1

)

=|W | − |T |

|W |

≥|W | − |W |/2

|W |=

1

2.

On selvää, että jatkuvasti käytössä olevissa tiivistefunktioissa ei vahvoja törmäyksiä saisiesiintyä oikeastaan ollenkaan. Sen vuoksi olikin melkoinen yllätys, kun vuonna 2004 kiinalai-set Xiaoyun Wang, Dengguo Feng, Xuejia Lai ja Hongbo Yu löysivät sellaisia useista paljonkäytetyistä tiivistefunktioista. Lisäksi Wang, Yiqun Lisa Yin ja Yu totesivat, että niitä voidaanlöytää suhteellisen nopeasti myös tiivistefunktioiden ”lippulaivasta” SHA-1:stä.1 Hyvän tiivis-tefunktion kehittäminen on aiemmin luultuakin vaikeampaa.

12.2 Syntymäpäivähyökkäys

Jos mahdollisia tiivisteitä on vähän, voidaan kokeilemalla löytää törmäyksiä: Valitaan vainkkpl satunnaisia viestejäw1, . . . , wk, lasketaan tiivisteetti = h(wi) ja testataan löytyiko tör-mäyksiä. Tätä yksinkertaista menetelmää kutsutaansyntymäpäivähyökkäykseksi2. Arvioidaantodennäköisyyksiä sille, että syntymäpäivähyökkäys onnistuu. Tällöin voidaan olettaa, että eritiivisteet esiintyvät ainakin suurin piirtein yhtä monta kertaa. Muussa tapauksessa törmäyksienlöytymisen todennäköisyys vain kasvaa. Todennäköisyys sille, ettei törmäyksiä löydy, on ilmei-sesti

1Tätä ”kiinalaisten hyökkäystä” käsitellään useissa esitelmissä viitteissäProceedings of Crypto ’05. LectureNotes in Computer Science3621. Springer–Verlag (2005) jaProceedings of EuroCrypt ’05. Lecture Notes in Com-puter Science3494. Springer–Verlag (2005).

2Nimi johtuu siitä, että jos joukossa on riittävästi ihmisiä, todennäköisyys sille, että ainakin kahdella on samasyntymäpäivä (vuoden päivä), on suuri. Käyttäen arviointia, koska1.177

√365 ∼= 22.49, riittää, että joukossa on

ainakin 23 ihmistä, jotta ainakin todennäköisyydellä1/2 löytyy samoja syntymäpäiviä. Tarkasti laskienkin tällöin

P =

(

1−1

365

)(

1−2

365

)

· · ·

(

1−23− 1

365

)

∼= 0.493.

LUKU 12. TIIVISTEFUNKTIOT JA TIIVISTEET 95

Pn,k =n(n− 1)(n− 2) · · · (n− k + 1)

nk=

(

1−1

n

)(

1−2

n

)

· · ·

(

1−k − 1

n

)

,

missän on tiivisteiden lukumäärä. Koska tunnetustilimn→∞

(

1 +a

n

)n

= ea, saadaan edelleenarvio

P1n

n,k∼= e−1−2−···−(k−1) = e−

k(k−1)2 .

(Tässä luonnollisestin on iso ja paljon isompi kuink.) Näin ollen todennäköisyys sille, ettälöytyy ainakin yksi törmäys, on

Qn,k = 1− Pn,k∼= 1− e−

k(k−1)2n .

Näin saadaan arviok:lle, josQn,k = Q on annettu:

−k(k − 1)

2n∼= ln(1−Q)

elik2 − k + 2n ln(1−Q) ∼= 0

eli

k ∼=1

2

(

1 +√

1− 8n ln(1−Q))

.

ValitsemallaQ = 1/2 todetaan, että törmäys löytyy todennäköisyydellä1/2, jos

k ∼=1

2

(

1 +√1 + 8n ln 2

)∼=√2n ln 2 ∼= 1.177

√n.

Näin esimerkiksi40-bittiselle tiivisteelle syntymäpäivähyökkäys onnistuutodennäköisyydellä1/2, josk on vähän yli220 = 1 048 576. Tiivisteen pituuden pitäisi siis olla merkittävästi enem-män, esimerkiksi SHA-1:ssä se on160 bittiä jak:n pitäisi silloin olla vähän yli280 ∼= 1.2 · 1024.Tosin kiinalaisten hyökkäys osoittaa yllättäen, että jo noin 269 ∼= 5.9 · 1020 ehkä riittää.

Syntymäpäivähyökkäys tulee vastaan toisinaan hieman toisenlaisena. Silloin valitaan ensinsatunnaisestik1 viestiäw1, . . . , wk1 ja sitten näistä riippumattomasti satunnaisestik2 muutaviestiäw′

1, . . . , w′k2

ja etsitään muotoah(wi) = h(w′j) olevia törmäyksiä, ns.ristitörmäyksiä.

Merkitään esiintyviä tapauksia symbolein

T1 = ”viesteissäw1, . . . , wk1 on törmäys”

T2 = ”viesteissäw′1, . . . , w

′k2

on törmäys”

T12 = ”ristitörmäys”

ja komplementtitapauksia tavalliseen tapaan yläviivoilla. Ilmeisesti esimerkiksi

P(T1) = Qn,k1 , P(T 2) = Pn,k2 , P(T 1 ja T 2) = Pn,k1Pn,k2 jne.

Edelleen ilmeisestiP(T 1 ja T 2 ja T 12) = Pn,k1+k2.

Todennäköisyyksien laskusääntöjen mukaan tästä saadaan ehdollinen todennäköisyys

P(T 12 | T 1 ja T 2) =Pn,k1+k2

Pn,k1Pn,k2

∼=e−

(k1+k2)(k1+k2+1)2n

e−k1(k1+1)+k2(k2+1)

2n

= e−k1k2n .

LUKU 12. TIIVISTEFUNKTIOT JA TIIVISTEET 96

Toisaalta kovin monien törmäyksien sattuminen on hyvin epätodennäköistä ja muutamien tör-mäyksien sattuminen taas ei juurikaan muuta ristitörmäyksen todennäköisyyttä verrattuna tilan-teeseen, jossa niitä ei ole. (Muista, ettän on iso jak1 sekäk2 siihen verrattuna pieniä.) Näinollen myös

P(T 12 | T1 tai/jaT2) ∼= e−k1k2n ja siis P(T 12) ∼= e−

k1k2n .

Jos siis halutaan ristitörmäyksen todennäköisyydeksi1/2 pitää valita (totea!)

k1k2 ∼= n ln 2.

Näin ollen riittää valitak1, k2 ∼=

√n ln 2 ∼= 0.833

√n.

Tämä vm. syntymäpäivähyökkäys muistuttaa jonkin verran Shanksin pikkuaskel-jättiaskel-algoritmia, ks. Pykälä 9.2. Itse asiassa siitä onkin helposti tehtävissä hyvin samantapainenprobabilistinen algoritmi diskreetin logaritmin laskemiseksi. Pikkuaskel-jättiaskel-algoritmi onkuitenkin deterministinen ja vähän nopeampikin. Toisaalta modulaarinen potenssiin korotta-minen on satunnaistava operaatio, joten sitä voidaan käyttää satunnaisessa valinnassa, jolloinsaadaan tehokas ja hyvin vähän tilaa vievä probabilistinenalgoritmi diskreetin logaritminb =logg a laskemiseksi modulop (alkuluku):

Pollardin kengurualgoritmi:

1. MerkitäänJ = ⌊log2 p⌋ ja N = ⌊√p⌋ ja valitaan luvutc ja c′ satunnaisesti väliltä

0, 1, . . . , p− 1.

2. Lasketaan rekursiolla

ti = (ti−1g2(ti−1,mod J)

, mod p) , t0 = (gc, mod p)

luku tN . (Koskac tunnetaan, nämä rekursioaskeleet ovat ns. kesyn kengurun loikat.) Josmerkitään

d =N∑

i=0

2(ti,mod J),

niin tN = (gc+d,mod p).

3. Lasketaan rekursiolla yksi kerrallaan lukuja

wj = (wj−1g2(wj−1,mod J)

, mod p) , w0 = (gb+c′, mod p) = (agc′

, mod p).

(Koskab ei ole tunnettu, nämä ovat ns. villin kengurun loikat.) Samalla lasketaan rekur-siivisesti lukuja

Dj = Dj−1 + 2(wj ,mod J) , D0 = 0,

jolloin wj = (gb+c′+Dj ,mod p).

4. Jos löytyy sellainen arvol ≤ N , ettäwl = tN (törmäys), niin

gc+d ≡ gb+c′+Dl mod p eli gc+d−c′−Dl ≡ a mod p.

Tällöin tulostetaanb = (c + d − c′ − Dl,mod p − 1) ja lopetetaan. Jos taas on laskettukaikki luvutw0, w1, . . . , wN ilman että törmäystä löytyy, luovutetaan ja lopetetaan.

LUKU 12. TIIVISTEFUNKTIOT JA TIIVISTEET 97

Syntymäpäivähyökkäysperiaatteen mukaisesti ristitörmäys löytyy tällaisessa tilanteessa ainakintodennäköisyydellä1/2. Huomaa, että jos ristitörmäys löytyy jo jollekinti:lle ja wl:lle, missäl ≤ i < N , niin se löytyy myöstN :lle, koska rekursiot ovat samat. Toistamalla algoritmia montakertaa valiten aina uusi satunnainenc′, mutta eic:tä, saadaan melko todennäköisesti lasketuksib. Koska askelia kuitenkin tarvitaanO(

√p), tämä ei ole polynomiaikainen algoritmi, vaikka

onkin nopea. Toisaalta mitään listoja ei talleteta—vrt. pikkuaskel-jättiaskel-algoritmi—jotentilaa tarvitaan hyvin vähän.

12.3 Chaum–van Heijst–Pfitzmann -tiiviste

Esimerkkinä yksinkertaisesta tiivistefunktiosta otetaan Chaum–van Heijst–Pfitzmann -tiiviste-funktiohCHP. Tätä varten tarvitaan sellainen alkulukup, että myösq = (p− 1)/2 on alkuluku,eli Germainin luku, ks. Pykälä 8.2. Edelleen tarvitaan kaksi erisuurta primitiivistä juurtaα jaβ modulop. Lisäksi oletetaan, että diskreetti logaritmia = logα β ei ole helposti laskettavissa.Viesti (w1, w2) muodostuu kahdesta välillä0, 1, . . . , q − 1 olevasta luvustaw1 jaw2 ja

hCHP(w1, w2) = (αw1βw2, mod p).

YhdenkinhCHP:n törmäyksen löytäminen mahdollistaa diskreetin logaritmin logα β laske-misen nopeasti:

Lause 12.2.Jos tunnetaan eri viestit(w1, w2) ja (w′1, w

′2), joille hCHP(w1, w2) = hCHP(w

′1, w

′2),

niin diskreetti logaritmia voidaan laskea nopeasti.

Todistus.Tiivisteet ovat samat, ts.

αw1βw2 ≡ αw′

1βw′

2 mod p.

Koskaβ ≡ αa mod p, tämä on sama kuin

αa(w2−w′

2)−(w′

1−w1) ≡ 1 mod p.

α on primitiivinen juuri modulop, jotena(w2 − w′2)− (w′

1 − w1) on jaollinen sen kertaluvullamodulop eli p− 1:llä, ks. Lause 7.4 kohta (ii). Siispä

a(w2 − w′2) ≡ w′

1 − w1 mod p− 1.

Merkitään nytd = syt(w2 − w′2, p− 1). Silloin yo. kongruenssin nojallad on myösw1 − w′

1:ntekijä. Tästä seuraa, ettäw2 6= w′

2. Jos nimittäinw2 = w′2, onw1 6= w′

1 ja d = p− 1. Tämä onkuitenkin mahdotonta, koska|w1 − w′

1| < q < p− 1.Merkitään edelleen

u =w2 − w′

2

d, v =

w′1 − w1

dsekä r =

p− 1

d.

Silloin syt(u, r) = 1 ja Lauseen 2.11 nojalla

au ≡ v mod r eli a ≡ u−1v mod r.

Kysymykseen tulevata:n arvot positiivisessä jäännössysteemissä modulop− 1 ovat siis

a = (u−1v, mod r) + ir (i = 0, 1, . . . , d− 1).

Toisaalta mahdollisetd:n arvot ovat1, 2, q ja p− 1. Koskaw2 6= w′2 ja |w2 − w′

2| < q < p− 1,on jokod = 1 tai d = 2. Diskreetti logaritmia on siis helppo löytää, se on joko(u−1v,mod r)tai (u−1v,mod r) + r.

LUKU 12. TIIVISTEFUNKTIOT JA TIIVISTEET 98

hCHP on näin vahvasti törmäyksetön ja Lauseen 12.1 mukaan myös yksisuuntainen.

Huomautus. CHP-tiivistefunktio on liian hidas ollakseen kovin käyttökelpoinen, monet muuttiivistefunktiot ovat paljon nopeampia laskea. Pulmana onmyös Germainin lukujen vaikea löy-dettävyys. Nopeista tiivistefunktioista on toisaalta alettu löytää heikkouksia, kuten kiinalaistenhyökkäys osoittaa.

Luku 13

ALLEKIRJOITUS

13.1 Allekirjoitussysteemi

Allekirjoitussysteemillätarkoitetaan viisikkoa(P,A,K, S, V ), missä

• P on äärellinenviestiavaruus.

• A on äärellinenallekirjoitusavaruus.

• K on äärellinenavainavaruus.Kukin avainmuodostuu parista(ka, kt), missäka on sa-lainenallekirjoitusavainja kt on julkinentodennusavain.

• Kutakin allekirjoitusavaintaka kohti onallekirjoitusfunktioska ∈ S. Viestillew onska(w)= (w, u), missäu on viestinw allekirjoitus.S on kaikkien mahdollisten allekirjoitusfunk-tioiden avaruus.

• Kutakin todennusavaintakt kohti taas ontodennusfunktiovkt ∈ V . V on kaikkien mah-dollisten todennusfunktioiden avaruus.

• Jokaiselle viestillew ja avaimelle(ka, kt) on

vkt(w, u) =

{

OIKEA, jos ska(w) = (w, u)

VÄÄRÄ muuten.

Julkinen todennusavain jätetään kaikkien halukkaiden saataville, salainen allekirjoitusavain onhenkilökohtainen ja vain allekirjoittajalla. Allekirjoitettu viesti onska(w) = (w, u). Vastaanot-taja voi halutessaan todennusfunktiota käyttäen tarkistaa allekirjoituksen oikeellisuuden. Useinallekirjoituksessa käytetään sopivaa viestinw tiivistettäh(w). Tästä on se etu, että viesti voiolla pitkäkin.

Allekirjoituksen pitää toteuttaa seuraavat perusehdot:

• Ulkopuolinen taho, joka ei tiedä allekirjoitusavainta, eivoi lähettää oikean allekirjoitta-jan nimissä viestiä todentuvalla allekirjoituksella varustettuna, ainakaan tällainen viesti eisaa sisältää mitään mielekästä tietoa. Erityisesti ulkopuolinen taho ei voi irrottaa allekir-joitusta oikeasta allekirjoitetusta viestistä ja käyttääsitä toisen viestin allekirjoituksena.

• Allekirjoittaja ei voi myöhemmin kieltää allekirjoittaneensa oikein allekirjoitettua viesti-ään.

Useat kryptosysteemit ovat välittömästi muunnettavissa allekirjoitussysteemeiksi, ja itseasiassa ovat alunperin olleet allekirjoitussysteemejä.

99

LUKU 13. ALLEKIRJOITUS 100

13.2 RSA-allekirjoitus

RSAsta saadaan allekirjoitussysteemi määrittelemällä

ka = (n, b) ja kt = (n, a)

sekä

ska(w) = (w, (wb, mod n)) ja vkt(w, u) =

{

OIKEA, josw ≡ ua mod n

VÄÄRÄ muuten.

Ilmeisestikin tämän allekirjoituksen väärentäminen tavalla tai toisella on ekvivalentti RSAnmurtamisen kanssa. Ulkopuolinen taho voi kuitenkin valitaallekirjoituksenu ottamalla viestiksiw = (ua,mod n). Tällainen viesti ei kuitenkaan sisällä mitään tietoa. Tämäkään ei onnistu, joskäytetään yksisuuntaista tiivistefunktiotah. Silloin kt = (n, a, h) ja

ska(w) = (w, (h(w)b, mod n)) ja vkt(w, u) =

{

OIKEA, josh(w) ≡ ua mod n

VÄÄRÄ muuten.

RSAta voidaan myös käyttää ns.sokeaan allekirjoitukseen.Jos on tarkoitus, että osapuoli Aallekirjoittaa osapuolen B viestinw tietämättä sen sisältöä, menetellään seuraavasti:

1. B valitsee satunnaisen luvunl, jolle syt(l, n) = 1, laskee luvunt = (law,mod n) jalähettää sen A:lle.

2. A laskee allekirjoituksenu′ = (tb,mod n) ikäänkuin viesti olisit, ja lähettää sen B:lle.

3. B laskee luvunu = (l−1u′,mod n).

Koska A ei tiedä lukual, hän ei saa tietoa viestistäw. Toisaaltau on oikea viestinw allekirjoitus,sillä

l−1u′ ≡ l−1tb ≡ l−1labwb ≡ l−1lwb ≡ wb mod n.

13.3 Elgamalin allekirjoitus

Elgamalin kryptosysteemistä saadaan allekirjoitussysteemi valitsemalla ryhmäksiG = Z∗p,

missäp on suuri alkuluku,a:ksi primitiivinen juuri modulop ja b = (ay,mod p). Toden-nusavain on nytkt = (p, a, b) ja allekirjoitussavainka = (p, a, y). Allekirjoitusfunktio onska(w) = (w, c, d), missä

c = (ax, mod p) ja d = ((w − yc)x−1, mod p− 1)

ja x on sellainen väliltä1 ≤ x < p − 1 valittu satunnaisluku, ettäsyt(x, p − 1) = 1. Tällöinxd = w − yc+ k(p− 1) jollekin luvulle k. Todennusfunktio puolestaan on

vkt(w, c, d) =

{

OIKEA, jos bccd ≡ aw mod p

VÄÄRÄ muuten.

Oikean allekirjoituksen todennus onnistuu, sillä Fermat’n pienen lauseen nojalla

bccd ≡ aycaxd = ayc+w−yc+k(p−1) = aw(ap−1)k ≡ aw · 1 = aw mod p.

Allekirjoituksen väärentämiseksi pitäisi pystyä laskemaanc ja d ilman y:tä jax:ää. Tällöinvoidaan todeta seuraavaa:

LUKU 13. ALLEKIRJOITUS 101

• Jos väärentäjä valitsee ensin jonkinc:n ja yrittää sitten saada vastaavand:n, niin hänenpitää laskealogc(a

wb−c) modulop. Tämä on oleellisesti diskreetin logaritmin laskeminenG:ssä. Huomaa, että koskasyt(x, p−1) = 1, myösc on primitiivinen juuri modulop, ks.Lause 7.4(iii).

• Jos väärentäjä taas valitseekin ensin jonkind:n ja yrittää sitten löytää vastaavanc:n, niinhänen pitää ratkaista yhtälö

bccd ≡ aw mod p.

Tällaisten yhtälöiden ratkaisemiseksi ei tunneta nopeitaalgoritmeja.

• Jos väärentäjä yrittää saada lähetetyksi jonkin allekirjoitetun viestin, vaikkapa vain sa-tunnaisen, niin hän voisi yrittää valita ensinc:n ja d:n ja sitten etsiä jonkin sopivanw:n.Mutta tällöin hänen pitäisi laskealoga(b

ccd) modulop.1

Huomautus. Elgamalin allekirjoituksen modifikaatio DSS (Digital Signature Standard) onyleisemmin käytössä, ks. esimerkiksiSTINSON tai MENEZES & VAN OORSCHOT & VAN-STONE.

13.4 Syntymäpäivähyökkäys allekirjoitusta vastaan

Jos allekirjoituksessa käytetään tiivistettä ja viestiä on mahdollista muuttaa monista kohdistavähän ilman, että sen merkitys oleellisesti muuttuu, on myös mahdollista soveltaa syntymäpäi-vähyökkäystä ristitörmäyksien aikaansaamiseksi seuraavalla tavalla, ks. Pykälä 12.2:

1. Jos allekirjoituksessa käytettävän tiivisteen pituus on B bittiä, väärentäjä etsii vaikkapaB/2 + 2 paikkaa, missä allekirjoitettavaa viestiä voidaan vähän muuntaa ilman, että sevarsinaisesti muuttuu—esimerkiksi lisäämällä tai poistamalla pilkkuja ja sanavälejä, te-kemällä pieniä viattomia painovirheitä tms. Näin saadaan kaikkiaan2B/2+2 oikean viestineri versiota, joiden tiivisteet väärentäjä laskee.

2. Vastaavasti väärentäjä etsii haluamastaan väärästä viestistäB/2 + 2 paikkaa, joissa sitävoidaan muutella merkityksen muuttumatta, ja laskee näin saatujen2B/2+2 väärän viestinversion tiivisteet.

3. Väärentäjä etsii näistä kahdesta tiivistejoukosta mahdollisen ristitörmäyksen lajittelemal-la samaan tapaan kuin pikkuaskel-jättiaskel-algoritmissa. Sellainen löytyy hyvinkin var-masti, mikäli viestien tiivisteiden voidaan katsoa syntyneen satunnaisesti, sillä todennä-köisyys on silloin noin

1− e−2B/2+22B/2+2

2B = 1− e−16 =∼= 0.999 999 887.

Satunnaisuutta koskeva ehto ei ole kovin vaativa, sillä hyvä tiivistefunktio on jo satun-naistava ja pieni ero viesteissä aiheuttaa ison eron tiivisteissä.

4. Väärentäjä jättää oikean viestin ristitörmäyksessä esiintyneen version allekirjoitettavaksi.Jos allekirjoittaja ei huomaa eroja tai ei välitä niistä, väärentäjällä on nyt haluamansaväärä viesti, jolla on sama tiiviste, ja hän saa allekirjoittajalta allekirjoituksen myös sille!

1Muita tapoja saada aikaan satunnainen allekirjoitettu viesti kuitenkin on! Samoin on mahdollista yhden saadunallekirjoituksen turvin allekirjoittaa joitain muita satunnaisia viestejä. Ks. STINSON.

Luku 14

SALAISEN TIEDON SIIRTO

14.1 Arpominen

Satunnaisbitin arpominen on helppoa, jos on luotettu osapuoli, joka suorittaa arpomisen. Joställaista osapuolta ei ole, on arpominen silti mahdollistasopivaa menetelmää käyttäen. Seuraa-vassa arvontamenetelmässä1 A arpoo B:lle satunnaisbitin. Aluksi vain B tietää tuloksen, muttahän voi kertoa sen A:lle. Vaikka B ei kertoisi tulosta A:lle,hän ei silti voi muuttaa saamaansabittiä tai ilmoittaa A:lle väärää bittiä ilman, että se jossain vaiheessa paljastuu A:lle. Näin Bsitoutuu bittiin,jonka hän sai.

Menetelmä toimii seuraavasti, ks. Pykälä 7.6:

1. A valitsee kaksi erisuurta isoa alkulukuap ja q ja lähettää B:lle niiden tulonn = pq.

2. B valitsee satunnaisen luvunu väliltä 1 < u < n/2 ja lähettää A:lle neliön

z = (u2, mod n).

3. A laskee ne neljäz:n neliöjuurta modulon:

(±x, mod n) ja (±y, mod n).

Tämä on mahdollista, koska A tietään:n tekijät. Valitaanx′:ksi pienempi luvuista(±x,mod n), ja vastaavastiy′:ksi pienempi luvuista(±y,mod n). Silloin u on jompi-kumpi luvuistax′ tai y′.

4. A ei voi tietää kumpi luvuistax′ tai y′ on u, joten hän arvaa. A:n ei kannata lähettääarvaamansa lukua B:lle, sillä jos se ei olekaanu, niin B voi jakaan:n tekijöihinsä. Sensijaan A etsii oikealta lukien ensimmäisen bitin, jossax′:n jay′:n binääriesitykset eroavat,ja lähettää tämän bitin B:lle muodossa ”lukusij:s bitti on . . . ”.

5. B kertoo A:lle oliko arvaus oikea (arvottu bitti on1) vaiko väärä (arvottu bitti on0).Vaikka B ei kertoisikaan arvonnan tulosta A:lle, hän on silti sitoutunut siihen eikä voi sitämuuttaa.

6. Lopuksi B paljastaa A:lleu:n ja A paljastaan:n tekijöihinjaon. B ei voi huijata A:ta, sillähän tietää vain toisen neliöjuuristax′ ja y′, muutenhan B voisi jakaan:n tekijöihin.

1Alkuperäisviite on BLUM , M.: Coin Flipping by Telephone. A Protocol for Solving Impossible Problems.SIGACT News(1981), 23–27.

102

LUKU 14. SALAISEN TIEDON SIIRTO 103

Huomautus. Tässä kuten yleensäkin oletetaan, että valittaessa satunnaisesti lukuu tms. eisaada sellaista lukua, ettäsyt(u, n) 6= 1. Tämä tapaushan on hyvin epätodennäköinen, josnon suuri.

Yleistäen voidaan arpoa kokonaisluku annetulta väliltä arpomalla sen binääriesityksen bitityksi kerrallaan, tarvittaessa lisätään esitykseen alkunollia.

Toinen arpomistilanne on se, että arvotaan luvuista1, 2, . . . , N A:lle ja B:lle kummallekink lukua siten, että kumpikin tietää omat lukunsa, mutta ei toisen lukuja. Lisäksi vaaditaan, ettäA ja B eivät voi saada yhtään samaa lukua. Jos edellistä bitinarvontaa voidaan kutsua ”lantinheitoksi”, niin tätä voitaisiin kutsua ”korttien jakamiseksi”. Menettely on seuraava:

1. A ja B valitsevat suuren alkuluvunp.

2. A valitsee sellaisen salaisen luvuna väliltä 1 ≤ a < p−1, ettäsyt(a, p−1) = 1 ja laskeeluvuna′ = (a−1,mod p− 1).

3. B valitsee sellaisen salaisen luvunb väliltä 1 ≤ b < p− 1, ettäsyt(b, p− 1) = 1 ja laskeeluvun b′ = (b−1,mod p− 1).

4. Luvut i koodataan luvuiksici = (g2i+1,mod p) (i = 1, 2, . . . , N), missäg on jokin pri-mitiivinen juuri modulop. g ja p voidaan löytää samaan tapaan kuin ELGAMALin pys-tytyksessä, ks. Pykälä 10.1. Luvutci ovat kaikki epäneliönjäännöksiä modulop, silläneliönjäännösten eksponentit ovat parillisia.

5. B laskee luvutβi = (cbi ,mod p) (i = 1, 2, . . . , N), permutoi ne satunnaisesti ja lähettääne A:lle. Huomaa, että koskab on pariton, tieto siitä onko jokin lukuci neliönjäännös mo-dulop vai ei menee tämän koodausprosessin läpi Eulerin kriteerinnojalla, sillä Fermat’npienen lauseen mukaancp−1

i ≡ 1 mod p ja edelleenc(p−1)/2i ≡ ±1 mod p. Tästä syys-

tä valittiin kaikki ci:t valmiiksi epäneliönjäännöksiksi modulop. Toisaaltaci:n saaminenβi:stä vaatisi diskreetin logaritmin laskemistaZp:ssä.

6. A valitsee näistä luvuista2k kpl, sanotaanβi1, . . . , βi2k , laskee luvut

αj = (βaij, mod p) = (cabij , mod p) (j = 1, 2, . . . , k)

ja lähettää ne ja luvutβik+1, . . . , βi2k B:lle. Jälleenβij :n saaminenαj:stä vaati diskreetin

logaritmin laskemisen.

7. B laskee luvut

γj = (αb′

j , mod p) = (caij , mod p) (j = 1, 2, . . . , k)

ja lähettää ne A:lle. Vrt. RSAn dekryptauksen toiminta.

8. A laskee lukunsacij = (γa′

j ,mod p) (j = 1, 2, . . . , k).

9. B laskee lukunsacij = (βb′

ij,mod p) (j = k + 1, . . . , 2k).

LUKU 14. SALAISEN TIEDON SIIRTO 104

14.2 Salaisuuksien jakaminen

Jost ja v ovat positiivisia lukuja jat ≤ v, niin (t, v)-kynnyskaavioon menettely, jolla salaisuusS jaetaanv:n osapuolen kesken siten, että mitkäänt−1 osapuolta eivät saa salaisuudesta mitäänselville, mutta mitkä tahansat osapuolta saavat tietää sen kokonaan (kynnys).

Kynnyskaaviot toteutetaan usein käyttäen eräänlaista interpolointia. Tietty funktiofp1,...,pt,ns. interpolantti,määräytyy täysin, kun sen parametritp1, . . . , pt tunnetaan. Parametrit puoles-taan saadaan, jos tunnetaan funktion arvot ainakint:ssä eri pisteessä:

fp1,...,pt(xi) = yi (i = 1, 2, . . . , v, missäv ≥ t).

Arvot missäänt−1 pisteessä toisaalta eivät määrää parametrejä yksikäsitteisesti. SalaisuusS onfunktio fp1,...,pt tai sen parametritp1, . . . , pt tai vain osa niistä. Kullekin osapuolelle annetaantiedoksi oma funktion arvo, ns.osuus.Tämän tekee salaa ulkopuolinen luotettu osapuoli, ns.jakajaJ.

Eräs tapa valita interpolantti on käyttää polynomi-interpolanttia

p(x) = S ⊕t−1⊕

j=1

pj+1xj .

Tätä kutsutaanShamirin kynnyskaavioksi2. Se voidaan toteuttaa missä tahansa kunnassaF , jos-sa on enemmän kuinv alkiota. Tavallisin valinta on alkukuntaZq, missäq > v on alkuluku.Salaisuus onp(x):n vakiotermiS = p1. Tunnetusti enintään astettat − 1 oleva polynomi mää-räytyy, kun sen arvot tunnetaant:ssä eri pisteessä. Toisaalta polynomi ei määräydy yksikäsittei-sesti, jos asteluku ont−1 ja pisteitä on vähemmän kuint kpl. Erityisesti polynomin vakiotermiei tällöin määräydy, ellei anneta arvoa nimenomaan pisteessäx = 0. Jos nimittäin vakiotermiSmääräytyisi yksikäsitteisestit−1:stä arvostayi = p(xi) eri pisteissäxi 6= 0 (i = 1, 2, . . . , t−1),niin saadaan yhtälöt

x−1i ⊙ (yi ⊖ S) =

t−1⊕

j=1

pj+1xj−1i (i = 1, 2, . . . , t− 1),

joista määräytyvät myös loput parametritp2, . . . , pt. Kuten näkyy,S voi olla mitä vaan eli mi-tään tietoaS:stä ei tällöin välity.

Itse interpolointi voidaan toteuttaa käyttäen lineaarista yhtälöryhmää—jonka matriisi on ns.Vandermonden matriisi—tai esimerkiksi Lagrangen interpolaatiota (ks. peruskurssit)

p(x) =

t⊕

j=1

yj ⊙t⊙

k=1k 6=j

(xj ⊖ xk)−1 ⊙ (x⊖ xk).

Tällöin

S = p(0) =t⊕

j=1

yj ⊙t⊙

k=1k 6=j

(xk ⊖ xj)−1 ⊙ xk.

Pisteet, joissap(x):n arvot lasketaan, voidaan pitää julkisinakin, jolloin osuus olisikin vain ko.arvo. TällöinS:n laskeminen on vain lineaariyhdelmän lasku osuuksista tunnetuin ja ehkä etu-käteen lasketuin kertoimin.

Itse kaavio on seuraava:2Alkuperäisviite on SHAMIR , A.: How to Share a Secret.Communications of the ACM22 (1979), 612–613.

LUKU 14. SALAISEN TIEDON SIIRTO 105

Shamirin kynnyskaavio:

1. J valitsee kunnanF ja senv eri alkiotau1, u2, . . . , uv 6= 0 ja antaa alkionui tiedoksii:nnelle osapuolelle (i = 1, 2, . . . , v).

2. Jos tarkoitus on jakaa salaisuusS, jokin F :n alkio, niin J valitsee salaa satunnaisestit−1kunnanF :n alkiotap2, . . . , pt.

3. J laskee osuudet

wi = S ⊕t−1⊕

j=1

pj+1 ⊙ uji (i = 1, 2, . . . , v)

ja jakaa kullekin osapuolelle muilta salaa hänen osuutensa.

4. Kun osapuoleti1, i2, . . . , it haluavat tietää salaisuuden, he interpoloivat ja laskevatS:n.Esimerkiksi Lagrangen interpolaatiolla

S =t⊕

j=1

wij ⊙t⊙

k=1k 6=j

(uik ⊖ uij)−1 ⊙ uik .

Huomautus. Salaisuuksien jakamista ei pidä sekoittaa hyvin samantapaiseen menettelyyn, ns.tiedon hajautukseen,missä hajautetaan tiedostov osaan, joista mitkä tahansat riittävät sen re-konstruoimiseen nopeasti. Erona on se, ettät− 1 osaa voi hyvinkin antaa paljon tietoa tiedos-tosta, ei ehkä kuitenkaan aina kaikkea tietoa. Tiedon hajautus liittyy paljolti virheitä korjaaviinkoodeihin (ks. kurssi Koodausteoria) ja hajautetut osat ovat paljon pienempiä kuin yo. osuu-det. Alkuperäisviite onRABIN , M.O.: Efficient Dispersal of Information for Security, LoadBalancing, and Fault Tolerance.Journal of the ACM36 (1989), 335–348.

Muitakin ideoita salaisuuksien jakoon on käytössä. Koodausteoriaan perustuvia salaisuuk-sien jakoprotokollia on useita, interpoloinnissa voitaisiin käyttää Kiinalaista jäännöslausetta, ns.Mignotten kynnyskaavio,jne. Ks. esimerkiksi DING & PEI & SALOMAA .

14.3 Tietymätön tiedonsiirto

Osapuoli A haluaa siirtää salaisuuden osapuolelle B, kuitenkin niin, että salaisuus ei välttämättäsiirry. B tietää tietenkin siirtyikö salaisuus vai ei, mutta A ei sitä tiedä. Itse asiassa A:n kannaltasalaisuus siirtyy todennäköisyydellä1/2. Yksinkertainen menetelmä tätä varten olisi seuraava.Tässä, kuten tavallista,n on kahden ison erisuuren alkuluvunp ja q aukikerrottu tulo. Salaisuusvoidaan ajatella juuri näiksi alkuluvuiksip ja q, varsinainen salaisuus olisi tällöin vaikkapakryptattu RSAlla käyttäenn:ää. A siis tietää alunperinp:n ja q:n, B ei.

1. B valitsee luvunx väliltä 1 ≤ x < n ja lähettää A:lle(x2,mod n):n.

2. A laskee(x2,mod n):n neljä neliöjuurta

(±x, mod n) ja (±y, mod n)

modulon ja lähettää yhden näistä B:lle. Koska A tietään:n tekijät, hän voi tämän tehdänopeasti. A ei voi kuitenkaan tietää mikä neliöjuuristax on. Ks. Pykälä 7.6.

3. B tarkistaa onko hänen A:lta saamansa neliöjuuri≡ ±x mod n. Myönteisessä tapauk-sessa B ei saa salaisuutta. Muutoin B saa tietoonsa sellaiset luvut x ja y, ettäx2 ≡ y2

mod n ja x 6≡ ±y mod n, ja pystyy jakamaann:n tekijöihin ja sitä kautta edelleen saa-maan selville salaisuuden. A ei voi tietää saiko B salaisuuden vai, ellei B sitä kerro.

LUKU 14. SALAISEN TIEDON SIIRTO 106

14.4 Nollatietotodistukset

Interaktiivisessa todistussysteemissäkaksi osapuolta,todistajaP ja todentajaV, lähettävät toi-silleen viestejä ja suorittavat laskuja saamiensa viestien perusteella, mukana voi olla satunnais-lukujen generointia. P:n tavoite on saada V vakuuttuneeksisiitä, että hän tietää jonkin kohteenjonkin ominaisuuden. Kohde voisi olla vaikkapa matemaattinen tulos ja ominaisuus sen totuus,mutta tietysti muunkinlainen. P:n tavoite toisaalta on olla välittämättä V:lle mitään muuta infor-maatiota kuin sen, että hän tietää ko. ominaisuuden. Tätä kutsutaannollatietotodistukseksi.

Nollatietotodistuksen perusvaatimukset ovat

(I) Todennäköisyys, että P voisi petkuttaa V:tä, on hyvin pieni.

Jos P ei esimerkiksi itse asiassa tiedä matemaattisen tuloksen todistusta, vaikka niin väit-tää, niin hänen mahdollisuutensa petkuttaa V:tä ovat minimaaliset.

(II) Jos P tietää ko. ominaisuuden, hän voi kiistatta todistaa sen V:lle.

(III) V ei saa P:ltä mitään informaatiota, mitä hän ei voisi hankkia itse ilman P:tä, tarvittaessalaskien polynomiajassa.

Tällöin V voisi itse asiassa simuloida protokollaa polynomiajassa ikäänkuin P:kin osal-listuisi siihen, mutta ilman P:tä. Huomaa, että P:n laskujen kompleksisuudelle ei asetetamitään rajaa. Simuloinnin on oltava niin tarkka, ettei sitävoida erottaa ”oikeasta” poly-nomiajassa laskien.

Ehdosta (III) huolimatta V voisi tietenkin saada pitkään laskien esiin lisää informaatiota, ehkäkoko ominaisuuden.Täydellisessä nollatietotodistuksessavaaditaankin (III):n sijasta vahvempiehto

(III ′) V ei saa P:ltä mitään informaatiota, mitä hän ei voisi hankkia itse ilman P:tä.

V laskee tässäkin polynomiajassa, mutta simuloinnin on nytoltava identtinen ”oikean”kanssa.

Toisinaan yllä ehdoin (I) – (III) määriteltyä nollatietotodistusta kutsutaanlaskennallisek-si nollatietotodistukseksi,erotukseksi täydellisestä nollatietotodistuksesta. Huomattakoon, ettäyo. ehdot eivät oikeastaan muodosta tarkkoja määritelmiä.Nämä määritelmät ovatkin huomat-tavasti mutkikkaampia, ks. esimerkiksi STINSON tai GOLDREICH. Ero laskennallisen ja täy-dellisen nollatietotodistuksen välillä on stokastisuudesta johtuvien jakaumien vertailussa: Täy-dellisessä nollatietotodistuksessa ”oikeiden” ja simuloitujen jakaumien on oltava identtiset, las-kennallisessa nollatietotodistuksessa taas vaaditaan vain, ettei jakaumia voi havaita erilaisiksipolynomiaikaisilla laskuilla.

Seuraava protokolla3 antaa täydellisen nollatietotodistuksen sille, ettäx on neliönjäännösmodulon, missän = pq ja p sekäq ovat erisuuria isoja alkulukuja, olettaen, ettäsyt(x, n) = 1.Tämä probleema on QUADRATICRESIDUES, todistus on jokinx:n neliöjuuri modulon.

1. Toistetaan seuraavak kertaa.

1.1 P valitsee väliltä1 ≤ v < n satunnaisluvunv, jolle syt(v, n) = 1, ja lähettää V:lleluvuny = (v2,mod n).

1.2 V valitsee satunnaisesti bitinb (0 tai 1) ja lähettää sen P:lle.

3Alkuperäisviite on GOLDWASSER, S. & MICALI , S. & RACKOFF, C.: The Knowledge Complexity of Inte-ractive Proof Systems.SIAM Journal on Computing18 (1989), 186–208.

LUKU 14. SALAISEN TIEDON SIIRTO 107

1.3 P laskee luvunz = (ubv,mod n), missäu on x:n neliöjuuri modulon, ja lähettääsen V:lle.

1.4 V tarkistaa, ettäz2 ≡ xby mod n.

2. Jos tarkistus menee aina läpi kullakink:lla kierroksella, V päättelee, että P todella tietää,ettäx on neliönjäännös modulon.

Lause 14.1.Yo. protokolla antaa täydellisen nollatietotodistuksen probleemalleQUADRATIC-RESIDUES.

Todistus.Jos P ei tiedäx:n neliöjuurta, hän joutuu petkuttamaan ja lähettämään V:lle luvunz = v ja joko luvuny = (z2,mod n) (paljastuu, josb = 1) tai luvun y = (z2x−1,mod n)(paljastuu, josb = 0). Todennäköisyys, että P voisi paljastumatta petkuttaa koko ajan, on siis1/2k, joka saadaan miten tahansa pieneksi. Jos taas P tietää neliöjuurenu, hän tietysti selviäätestistä joka kerta.

V voi simuloida P:n osuutta protokollassa täydellisesti. Idea on, että V generoi kolmikoita(y, b, z), missä

y ≡ z2x−b mod n.

Näytetään, että jos V valitsee bitinb ja z:n aivan satunnaisesti, näillä kolmikoilla on identtinenjakauma verrattunaan ”oikeaan”, jossa P on mukana ja valitsee satunnaisenv:n.

Sanotaan, että kolmikko(y, b, z) onkäypä,jos

• 1 ≤ y < n ja syt(y, n) = 1,

• b on0 tai 1 ja

• 1 ≤ z < n ja z2 ≡ xby mod n.

Käypiä kolmikoita on2φ(n) kpl, sillä mahdollisiaz:n valintoja onφ(n) kpl ja b voidaan va-lita kahdella tavalla ja nämä valinnat määrittäväty:n. Huomaa, että koskasyt(x, n) = 1 jasyt(y, n) = 1, niin myössyt(z, n) = 1.

Käyvät kolmikot esiintyvät protokollassa yhtä todennäköisinä, kun P on mukana. P:hänvalitseev:n satunnaisestiφ(n) eri vaihtoehdosta ja yhtäy:tä vastaa neljä mahdollista neliöjuurtav. Edelleen V valitseeb:n arvot samalla todennäköisyydellä. Kuny ja b on valittu, mahdollisiaz:n valintoja on neljä. Myöskin V:n suorittamassa simuloinnissa käyvät kolmikot ovat yhtätodennäköisiä, kun V valitseez:n satunnaisesti väliltä1 ≤ z < n ja syt(z, n) = 1 ja b valitaansatunnaisesti.

Esitetään esimerkki myös (laskennallisesta) nollatietotodistuksesta. Probleemana on todis-taa, että graafissa on ns. Hamiltonin piiri.Graafi muodostuupisteistäja niitä yhdistävistävii-voista.Kaikkien pisteiden välillä ei (yleensä) ole viivoja.Hamiltonin piiri on reitti, joka kiertääpiirin graafin kaikkien pisteiden kautta, käyden kussakin pisteessä kerran ja palaten lähtöpistee-seen. Reitti kulkee viivoja pitkin. (Ks. kurssi Graafiteoria.) Sen selvittäminen, onko annetussasopivasti koodatussa graafissa Hamiltonin piiri vai ei, on tunnettuNP-täydellinen tunnistus-tehtävä HAMILTON CIRCUIT. Seuraava protokolla4 antaa nollatietotodistuksen tälle tehtävälle.

1. Toistetaan seuraavak kertaa. Syöte on tässä graafiG, jossa on pisteet1, 2, . . . , n.

4Alkuperäisviite lienee BLUM , M: How to Prove a Theorem So No One Else Can Claim It.Proceedings of theInternational Congress of Mathematicians 1986.American Mathematical Society (1988), 1444–1451.

LUKU 14. SALAISEN TIEDON SIIRTO 108

1.1 P järjestää pisteet satunnaiseen järjestykseen ja lähettää näin saadun listanv1, v2, . . . ,vn kryptattunaV:lle, tarvittaessa koodattuna bittijonoksi. P lähettää V:lle myösal-kioittain kryptattunan × n-matriisinD = (dij) (ns.vieruspistematriisi), missä lä-vistäjäalkiot ovat nollia ja

dij =

{

1, jos pisteidenvi ja vj välillä on viiva

0 muuten,

kun i 6= j. Symmetriasta johtuen riittää lähettää vain yläkolmio. Kukin matriisinalkio on kryptattu omalla avaimellaan. Kryptauksen on oltava sitova, ts. P ei voimuuttaa graafia avaimia muuttamalla, vrt. arpominen. Luonnollisesti kryptauksenoletetaan olevan tehokas, ts. polynomiajassa ei kryptatusta bitistä saa irti mitään.

1.2 V valitsee satunnaisesti bitinb ja lähettää sen P:lle.

1.3 Josb = 0, P dekryptaa V:lle listanv1, v2, . . . , vn ja koko matriisinD lähettämäl-lä V:lle dekryptausavaimet. Jos taasb = 1, P dekryptaa V:lle matriisistaD vain nalkiotadi1i2, di2i3 , . . . , dini1 , missä pisteetvi1 , vi2 , . . . , vin tässä järjestyksessä muo-dostavat Hamiltonin piirin (jolloin ko. alkiot ovat= 1).

1.4 Josb = 0, V tarkistaa, että hän sai oikean graafin. Dekryptattuna listav1, v2, . . . , vnilmoittaa pisteiden järjestyksen jaD antaa viivat. Jos taasb = 1, V tarkistaa, ettäsaadut matriisin alkiot ovat= 1.

2. Jos tarkistus menee aina läpi kullakink:lla kierroksella, V päättelee, että P todella tietääG:n Hamiltonin piirin.

Protokollassa kohdassa 1.1 mainitun kaltainen sitova kryptaus saadaan aikaan vaikkapa seuraa-vasti. Tässä suuri alkulukup ja primitiivinen juuri g modulop ovat julkisia.

1. Alussa V valitsee ja välittää sitten P:lle satunnaisen luvun r väliltä 1 < r < p. P ei voinopeasti laskea diskreettiä logaritmialogg r modulop.

2. P valitsee satunnaisesti luvuny väliltä 0 ≤ y < p − 1 (salainen avain) ja lähettää V:lleluvunc = (rbgy,mod p), missäb on kryptattava bitti. JokainenZ∗

p:n alkio on positiivises-sa jäännössysteemissä sekä muotoa(gy,mod p) että muotoa(rgy,mod p), jotenc ei siispaljasta mitään bitistäb. Olipa b kumpi tahansa,c:n jakauma on sama. Toisaalta P ei voivaihtaa bittiäb toiseksi vaihtamallay:n joksikiny′:ksi, muuten on

gy ≡ rgy′

mod p tai rgy ≡ gy′

mod p

elir ≡ g±(y−y′) mod p

ja P saisi tästä välittömästilogg r:n modulop.

Lause 14.2.Yo. protokolla antaa nollatietotodistuksen probleemalleHAMILTON CIRCUIT.

Todistus.Jos P ei tiedäG:n Hamiltonin piiriä, hän voi petkuttaa silloin, kun hän saabitin b = 0,mutta ei jos hän saa bitinb = 1. Jos taas P tietää jonkin toisenn-pisteisen graafinG′ Hamiltoninpiirin, hän voi petkuttaa, kun hän saa bitinb = 1, mutta ei jos hän saa bitinb = 0. Todennä-köisyys, että P voisi petkuttaa koko ajan, on siis1/2k, joka saadaan miten tahansa pieneksi. Jostaas P tietääG:n Hamiltonin piirin, hän tietysti selviää testistä joka kerta.

V voi simuloida protokollaa polynomiajassa myös ilman P:tä. V menettelee tällöin seuraa-vasti. V valitsee satunnaisen bitinb. Josb = 0, V järjestää pisteet satunnaiseen järjestykseen ja

LUKU 14. SALAISEN TIEDON SIIRTO 109

kryptaa näin saamansa listan. Vielä V muodostaa vieruspistematriisinD ja kryptaa sen. Jos taasb = 1, V kryptaakin vain jotkut satunnaiset alkiotdi1i2 , di2i3 , . . . , dini1 , missä indeksit kulkevatsyklisesti, kukin indeksi esiintyy tarkalleen kaksi kertaa ja kukin alkio on= 1. Täydellisyy-den vuoksi V voi kryptata vielä muutakin, jotta saadaan oikea määrä kryptattua dataa. Koskakäytetty kryptaus on tehokas, ovat kryptatut alkiojonot hyvin ”samannäköisiä” riippumatta siitämuodostavatko ne oikean vieruspistematriisin vai ei. Ts. polynomiajassa laskien ei eroa saadanäkyviin eikä esiintyviä jakaumia voida myöskään erottaa polynomiajassa laskien. Jakaumienei silti tarvitse olla tarkalleen samat!

HAMILTON CIRCUIT onNP-täydellinen tehtävä, johon muutNP:ssä olevat tunnistusteh-tävät voidaan polynomiajassa redusoida, ks. Pykälä 6.1. V voi näin ollen tehdä tämän reduktion.Näin ollen pätee

Lause 14.3.JokaisenNP:ssä olevan tunnistustehtävän positiiviselle ratkaisulle voidaan antaanollatietotodistus.

Arvellaan, ettei millekäänNP-täydelliselle tunnistustehtävälle voida antaa täydellistä nollatie-totodistusta, ts. lause ei pidä paikkaansa, jos vaaditaan,että nollatietotodistus on täydellinen.Itse asiassa tiedetään Lausetta 14.3 yleisempikin tulos:

Lause 14.4. (Shamirin lause5) Tunnistustehtävät, joiden positiivisille ratkaisuille on nollatie-totodistus, ovat tarkalleen kaikki luokanPSPACE tunnistustehtävät.

5Alkuperäisviite on SHAMIR , A.: IP = PSPACE. Journal of the ACM39 (1992), 869–877.

Luku 15

KVANTTIKRYPTOLOGIA

15.1 Kvanttibitti

Klassisen bitin arvoja0 ja 1 vastaavat kvanttifysiikassa kompleksialkioiset ortonormaalit kanta-vektorit, merkitään perinteisesti|0〉 ja |1〉. Tällöin voidaan ajatella toimittavanC2:ssa tulkittunaHilbertin avaruudeksi.Kvanttibitti eli kubitti on muotoa

b = α0|0〉+ α1|1〉

oleva lineaariyhdelmä (ns.superpositio), missäα0 ja α1 ovat kompleksilukuja ja

‖b‖2 = |α0|2 + |α1|

2 = 1.

Erikoisesti|0〉 ja |1〉 ovat itse kvanttibittejä, ns.puhtaita kvanttibittejä.Tärkeää on, että fysikaa-lisesti kvanttibitti voidaan alustaa jommaksikummaksi näistä.

Kvanttifysikaalinenb:n mittausantaa tulokseksi joko|0〉:n tai |1〉:n—lyhyesti vain0:n tai1:n. Mittaus liittyy siis aina käytettyyn kantaan. Kvanttifysiikan todennäköisyystulkinnan mu-kaisesti tulos0 saadaan todennäköisuudellä|α0|2 ja tulos1 todennäköisyydellä|α1|2.

Kvanttibitti on kvanttifysikaalinentila ja se voidaan aika-askeleessa muuttaa toiseksi, mikälimuunnos on lineaarinen ja sen matriisiU on unitäärinen, ts.U−1 onU:n konjugaattitranspoosiU†. Tällöin siis myös

Ub = β0|0〉+ β1|1〉 , missä

(β0

β1

)

= U

(α0

α1

)

,

on kvanttibitti (tila). Huomaa erikoisesti, että

|β0|2 + |β1|

2 =(β∗0 β∗

1

)(β0

β1

)

=(α∗0 α∗

1

)U†U

(α0

α1

)

=(α∗0 α∗

1

)(α0

α1

)

= 1.

(Tähdellä merkitään tässä kompleksista liittolukua.) Palautetaan mieleen pari unitääristen mat-riisien ominaisuutta:

1. IdentiteettimatriisiI2 on unitäärinen. Aika-askeleessa ei tarvitse välttämättä tehdä mitään.

2. JosU1 ja U2 ovat unitäärisiä, niin samoin onU1U2. Tämä tietää sitä, että kvanttibit-tiin voidaan operoida peräkkäisillä aika-askelilla useampia kertoja, mahdollisesti eri ope-raatioin, ja tulos on aina laillinen kvanttibitti. Juuri tällä tavoin kvanttietokone käsitteleekvanttibittejä.

110

LUKU 15. KVANTTIKRYPTOLOGIA 111

3. JosU on unitäärinen, niin samoin onU†. Kun kvanttibittiin operoidaan ja saadaan kvant-tibitti, niin käänteinen operaatio on aina myös laillinen.Kvanttitietokone ei hävitä in-formaatiota eli se onreversiibeli.Jo kauan on tiedetty, että jokainen algoritmi voidaankorvata reversiibelillä algoritmilla. Ensimmäisenä tämän totesi ranskalainen Yves Lecerfvuonna 1962. Myöhemmin on vielä todettu, että tämä ei edes lisää kompleksisuutta kovinpaljoa.1 Näin ollen reversiibelisyys ei ole mikään todellinen rajoite laskennan kannalta,kvanttialgoritmien suunnittelua se tietysti mutkistaa.

15.2 Kvanttirekisterit ja kvanttialgoritmit

Kvanttibittejä voidaan yhdistää tietyn pituisiksi kvanttirekistereiksi. Matemaattinen operaatio,jolla tämä tehdään on ns.Kroneckerin tuloeli tensoritulo.MatriisienA = (aij) (n1 × m1-matriisi) jaB = (bij) (n2 ×m2-matriisi) Kroneckerin tulo onn1n2 ×m1m2-matriisi

A⊗B =

a11B a12B · · · a1m1B

a21B a22B · · · a2m1B...

.... . .

...an11B an12B · · · an1m2B

(lohkomuodossa). Erikoistapauksena saadaan kahden vektorin Kroneckerin tulo (m1 = m2 =1). Seuraavat Kroneckerin tulon perusominaisuudet ovat varsin helppoja todistaa. Tässä olete-taan, että esiintyvät matriisioperaatiot ovat määriteltyjä.

1. Osittuvuus: (A1 +A2)⊗B = A1 ⊗B+A2 ⊗B

A⊗ (B1 +B2) = A⊗B1 +A⊗B2

2. Liitännäisyys: (A⊗B)⊗C = A⊗ (B⊗C)

Tämän seurauksena useammat peräkkäiset Kroneckerin tulotvoidaan kirjoittaa ilman sul-keita.

3. Skalaarilla kertominen: (cA)⊗B = A⊗ (cB) = c(A⊗B)

4. Kroneckerin tulojen kertolasku (seuraa jokseenkin suoraan lohkomatriisien kertolaskus-ta):

(A1 ⊗B1)(A2 ⊗B2) = (A1A2)⊗ (B1B2)

5. Kroneckerin tulon inverssi (seuraa kertolaskulaista):

(A⊗B)−1 = A−1 ⊗B−1

6. Kroneckerin tulon konjugaattitranspoosi (seuraa suoraan lohkomatriisien konjugaattitrans-ponoinnista):

(A⊗B)† = A† ⊗B†

1Alkuperäisviitteet ovat LECERF, M.Y.: Machines de Turing réversibles. Récursive insolubilité enn ∈ N del’équationu = θnu, où θ est un ”isomorphisme de codes”.Comptes Rendus257 (1963), 2597–2600 ja LEVIN ,R.Y. & SHERMAN, A.T.: A Note on Bennett’s Time-Space Tradeoff for Reversible Computation.SIAM Journalon Computing19 (1990), 673–677.

LUKU 15. KVANTTIKRYPTOLOGIA 112

7. Unitääristen matriisien Kroneckerin tulot ovat unitäärisiä. (Seuraa edellisistä.)

Jos kaksi kvanttibittiäb1 = α0|0〉+α1|1〉 jab2 = β0|0〉+ β1|1〉 halutaan yhdistää kaksiku-bittiseksirekisteriksi, se tapahtuu ottamalla Kroneckerin tulo:

b1 ⊗ b2 = α0β0(|0〉 ⊗ |0〉) + α0β1(|0〉 ⊗ |1〉) + α1β0(|1〉 ⊗ |0〉) + α1β1(|1〉 ⊗ |1〉).

(Oikeastaan kysymys on tässä rekisterin sisällöstä.) Perinteisesti merkitään

|0〉 ⊗ |0〉 = |00〉 , |0〉 ⊗ |1〉 = |01〉 jne.

On helppo todeta, että|00〉, |01〉, |10〉, |11〉 on ortonormaali kanta, ts. rekisterin dimensio onneljä. Jos nyt halutaan operoida rekisterin ensimmäiseen kvanttibittiinU1:llä ja toiseenU2:lla(molemmat unitäärisiä matriiseja), niin se tapahtuu unitäärisellä matriisillaU1 ⊗U2, sillä ker-tolaskulain mukaisesti

(U1 ⊗U2)(b1 ⊗ b2) = (U1b1)⊗ (U2b2).

Erityisesti jos halutaan operoida vain ensimmäiseen kvanttibittiin matriisilla U, se tapahtuu va-litsemallaU1 = U ja U2 = I2. Samoin voidaan operoida vain toiseen kvanttibittiin. Muttakaksikubittiseen rekisteriin voidaan operoida myös yleisellä unitäärisellä4× 4-matriisilla, silläse on laillinen kvanttifysikaalinen tila. Tällaisella operoinnilla voi kytkeä rekisterin kvanttibitittoisiinsa. Kvanttifysikaalinenkytkentä(engl. entanglement) on nimenomaan kvanttitietokoneil-le ominainen laskentaresurssi, jota ei klassisessa laskennassa ole.

Vastaavalla tavalla voidaan muodostaa kolmen ja useamman kvanttibitin rekistereitä, ope-roida sen kvanttibitteihin, joko kaikkiin tai yksittäisiin jne. Yleisestim kvanttibitin rekisterindimensio on2m. Tällöin kantavektorien voidaan ajatella vastaavan binääriesityksen kautta ko-konaislukuja välillä0, . . . , 2m − 1 ja voidaan ottaa käyttöön merkintä

|k〉 = |bm−1bm−2 · · · b1b0〉,

kun k:n binääriesitys onbm−1bm−2 · · · b1b0, mahdollisesti alkunollia lisäten. Useampia rekis-tereitä voidaan edelleen yhdistää pidemmiksi rekistereiksi Kroneckerin tuloja käyttäen, näihinvoidaan operoida yhdessä tai erikseen jne.

Huolimatta rekisterin mahdollisesti hyvinkin korkeasta dimensiosta2m, monet operaatiotovat fysikaalisesti suoritettavissa sille kvanttibiteittäin, mahdollisesti useassa askeleessa, eikävaltavia unitäärisiä matriiseja käytännössä tarvita. Askelketjuja kutsutaan tällöinkvanttialgorit-meiksi.Tärkeää on, että kvanttialgoritmeilla saadaan myös aikaankytkentöjä.

Jatkossa seuraavat operaatiot ovat keskeisiä. Sen osoittaminen, että ne voidaan suorittaakvanttialgoritmeilla, on jonkin verran hankalaa.2 Tässäk on kuten yllä.

• Syötteestä|k〉 ⊗ |0 · · ·0〉 lasketaan|k〉 ⊗ |(wk,mod n)〉, missäw jan ≤ 2m ovat kiinteitäannettuja lukuja.

• Syötteestäk lasketaan sen ns.kvantti-Fourier-muunnos

FQ(|k〉) =1

2m/2

2m−1∑

j=0

e2πijk

2m |j〉,

missäi on imaginääriyksikkö. Kvantti-Fourier-muunnos toimii kuten ”tavallinenkin” disk-reetti Fourier’n muunnos, ts. se poimii syötejonosta periodisia osia, ks. kurssi Fourier’nmenetelmät.

2Ks. esimerkiksi SHOR, P.W.: Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithmson a Quantum Computer.SIAM Journal on Computing26 (1997), 1484–1509 tai NIELSEN & CHUANG.

LUKU 15. KVANTTIKRYPTOLOGIA 113

15.3 Shorin algoritmit

Nykyiset kvanttitietokoneet ovat kovin pieniä eikä niilläole käytännön merkitystä. Isompienkvanttirekisterien hallinta kvanttitietokoneilla tietäisi kuitenkin sitä, että mm. RSAn ja ELGA-MALin turvallisuuden kannalta keskeisessä asemassa olevat tehtävät, tekijöihinjako sekä dis-kreetti logaritmi modulo alkuluku, voitaisiin ratkaista kvanttipolynomiajassa eli ne ovat luokas-saBQP . Tämän näytti Peter Shor vuonna 1994. Katsotaan tässä Shorin tekijöihinjakoalgorit-mi. Diskreetin logaritmin laskeminen on vähän hankalampaa. Ks. Alaviitteessä 2 mainittu viiteSHOR.

Shorin tekijöihinjakoalgoritmi on hyvin samanlainen kuinRSAn kryptanalyysiin liittyväeksponenttialgoritmi Pykälässä 8.3. Siellä esiintyvä salaperäinen algoritmi A vain suoritetaankvanttitietokoneella. Lisäksi tietysti tekijöihinsä jaettava lukun voi sisältää paljonkin alkuteki-jöitä. Algoritmin ”klassinen osa” on seuraavanlainen, kunsyöte on lukun ≥ 2:

Shorin tekijöihinjakoalgoritmi:

1. Testataan onkon alkuluku. Jos on, niin tulostetaann ja lopetetaan.

2. Selvitetään onkon jonkin kokonaisluvun korkeampi potenssi, vrt. Agrawal–Kayal–Sa-xena-algoritmi Pykälässä 7.4. Josn = ut, missät ≥ 2, jatketaan etsimälläu:n alkutekijät,joista sitten saadaan helpostin:n tekijät. Tämä kohta, kuten edellinenkin, ovat mukanavain sen takia, että ”helpot” tilanteet hoidetaan pois nopeasti.

3. Valitaan satunnaisesti lukuw, 1 ≤ w < n.

4. Lasketaand = syt(w, n) Eukleideen algoritmilla.

5. Jos1 < d < n, jatketaand:stä jan/d:stä.

6. Josd = 1, lasketaan kvanttitietokoneella sellainen lukur > 0, ettäwr ≡ 1 mod n.

7. Josr on pariton, mennään kohtaan 9.

8. Josr on parillinen, asetetaanr ← r/2 ja mennään kohtaan 7.

9. Lasketaanω = (wr,mod n) venäläisten talonpoikien algoritmilla.

10. Josω ≡ 1 mod n, luovutaan tehtävästä ja lopetetaan.

11. Josω 6≡ 1 mod n, asetetaanω′ ← ω jaω ← (ω2,mod n) ja mennään kohtaan 11.

12. Lopulta saadaan sellainen1:n neliöjuuriω′ modulon, ettäω′ 6≡ 1 mod n. Mikäli nytω′ ≡ −1 mod n, luovutetaan ja lopetetaan. Muutoin lasketaant = syt(ω′ − 1, n) jajatketaant:stä jan/t:stä. Huomaa, että koskaω′ + 1 6≡ 0 mod n ja toisaaltaω′2 − 1 =(ω′ + 1)(ω′ − 1) ≡ 0 mod n, niin n:n jokin alkutekijä onω′ − 1:n tekijä.

Kuten Pykälässä 8.3, voidaan osoittaa, että josn ei ole alkuluku, algoritmi onnistuu löytämäänsille tekijän ainakin todennäköisyydellä1/2.

Kvanttitietokoneella suoritettavaksi jää siis kohta 6. Tämä perustuu siihen, että(wj,mod n)on periodinenj:n suhteen ja jokin periodir voidaan tällöin löytää kvantti-Fourier-muunnoksella.Itse menettely on seuraava:

LUKU 15. KVANTTIKRYPTOLOGIA 114

6.1 Valitaan sellainen luku2m, ettän2 ≤ 2m < 2n2.

6.2 Alustetaan kaksim-pituista rekisteriä nolliksi:|0 · · ·0〉 ⊗ |0 · · ·0〉.

6.3 Sovelletaan ensimmäiseen rekisteriin kvantti-Fourier-muunnosta:

FQ(|0 · · ·0〉)⊗ |0 · · ·0〉 =

(

1

2m/2

2m−1∑

j=0

e2πij·02m |j〉

)

⊗ |0 · · ·0〉

=1

2m/2

2m−1∑

j=0

|j〉 ⊗ |0 · · ·0〉.

Ensimmäiseen rekisteriin on näin saatu kokonaislukujen0, . . . , 2m − 1 tasainen superpo-sitio. Kvanttitietokone on valmis käsittelemään niitä yhtaikaa!

6.4 Lasketaan sopivalla operaatiolla (ks. edellinen pykälä) kerralla

1

2m/2

2m−1∑

j=0

|j〉 ⊗ |(wj, mod n)〉.

Rekisterit ovat nyt kytkeytyneet kvanttifysikaalisessa mielessä toisiinsa.

6.5 Mitataan toinen rekisteri, jolloin saadaan kokonaisluku v ja rekisterit ovat

γ2m−1∑

j=0

wj≡v mod n

|j〉 ⊗ |v〉,

missäγ on skaalausvakio ja indeksitj esiintyvät periodisesti. Skaalausvakio tarvitaan,koska kyseessä on oltava mittauksen jälkeenkin kvanttifysikaalinen tila.

6.6 Sovelletaan ensimmäiseen rekisteriin kvantti-Fourier-muunnosta:

γ

2m/2

2m−1∑

j=0

wj≡v mod n

2m−1∑

l=0

e2πilj

2m |l〉 ⊗ |v〉.

6.7 Mitataan ensimmäinenkin rekisteri. Tulosl saadaan silloin todennäköisyydellä|g(l)|2,missä

g(l) =γ

2m/2

2m−1∑

j=0

wj≡v mod n

e2πilj

2m .

Muttag(l) on kerrointa vaille sellaisen jonon diskreetti Fourier’n muunnos, jossa esiintyy1 samalla periodilla kuinj kohdassa 6.5 muiden alkioiden ollessa nollia.

Alla olevassa kuvassa on esitetty mainittu todennäköisyys, kunm = 8 ja r = 10. Nämäarvot ovat tietysti aivan liian pienet ollakseen käytännössä kovin mielenkiintoisia.r vas-taa taajuutta28/10 = 25.6, joka näkyy monikertoineen kuvassa hyvin selvästi. Sangentodennäköisesti mitattul on lähellä jotain näistä.

LUKU 15. KVANTTIKRYPTOLOGIA 115

0 50 100 150 200 2500

0.02

0.04

0.06

0.08

0.1

0.12

6.8 Näin saadaan arvol, joka on likimain jokin taajuuden2m/r monikerta, ts. onj jolle

j

r∼=

l

2m.

Koska r ≤ φ(n) < n − 1, voidaanr ehkä löytää kokeillen lähtien rationaaliluvustal/2m. Joka tapauksessa, käyttäen hyväksi kohdan 1. ehtoam:lle voidaan ns. Diofantoksenapproksimaatiolla löytää hyvin todennäköisesti oikear, ks. Alaviitteen 2 viite SHOR.

Kaikkineen kyseessä on eräänlainen probabilistinen polynomiaikainen algoritmi, jolla pit-kistäkin jonoista voidaan löytää periodi. Tällaisella algoritmilla olisi paljon sovelluksia muu-tenkin, mm. ryhmäteoriassa, jos vain isoja kvanttitietokoneita olisi käytössä.

15.4 Avainjako kvanttimenetelmällä

Kvanttibitti voidaan esittää monessa ortonormaalissa kannassa. Koska mittaus aina liittyy tiet-tyyn ortonormaaliin kantaan ja antaa tulokseksi jommankumman kantavektoreista, voidaan yh-den kannan suhteen puhdas kvanttibitti mitata toisessa kannassa ja saada tulokseksi kumpi ta-hansa sen kantavektoreista. Toinen avainjaon kannalta tärkeä ominaisuus on se, että kvanttibittiä(tai tilaa yleensäkään) ei voi monistaa (ns.Kloonaamattomuuslause,ks. esimerkiksi NIELSEN

& CHUANG).Otetaan ensin käyttöön yksi ortonormaali kanta|0〉, |1〉, merkitäänB1, ja sitten toinen kanta

|+〉, |−〉, merkitäänB2, missä

|+〉 =1√2(|0〉+ |1〉) ja |−〉 =

1√2(|0〉 − |1〉).

B2 on silloin myös ortonormaali. Mittaaja voi päättää, minkä kannan suhteen hän mittaa. Esi-merkiksi mitatessaan kannanB2 suhteen kvanttibitin

|0〉 =1√2|+〉+

1√2|−〉

LUKU 15. KVANTTIKRYPTOLOGIA 116

mittaaja saa todennäköisyydellä1/2 tulokseksi|+〉:n.Kvanttiavainjako voidaan suorittaa monellakin tavalla. Eräs tapa saada salainen avain kah-

delle osapuolelle A ja B on seuraava:

1. A lähettää B:lle jonon bittejä tulkiten ne puhtaiksi kvanttibiteiksi valiten kunkin bitinkohdalla kumpaa kantaaB1 vaikoB2 hän käyttää, samaistaenB2:ta käyttäessään vaikkapa0:n |−〉:een ja1:n |+〉:aan. A myös säilyttää kantavalintansa.

2. Saatuaan A:n lähettämät kvanttibitit B mittaa ne valitenkunkin kvanttibitin kohdalla sa-tunnaisesti kannanB1 tai B2, ja säilyttää kantavalintansa ja mittaustulokset.

3. B lähettää A:lle klassista kanavaa käyttäen valitsemansa kantojen jonon.

4. A lähettää B:lle klassista kanavaa käyttäen tiedon siitämitkä B:n kantavalinnat olivatsamat kuin hänen.

5. A ja B käyttävät avaimenaan vain ne bitit, jotka saadaan näistä yhteisistä kantavalinnois-ta, niissähän B:n mittaus antaa puhtaan kvanttibitin, jokaon sama kuin A:n lähettämä.Tällaisia bittejä on noin puolet lähetetyistä.

Jos ulkopuolinen taho C pyrkii sekaantumaan avainjakoon joko yrittäen saada avaimen tie-toonsa mittaamalla A:n lähettämät kvanttibitit tai pyrkien lähettämään B:lle aivan omat kvant-tibittinsä, tämä paljastuu hyvin todennäköisesti. (Kloonaamattomuuslauseesta johtuen C:llä eiole mahdollisuutta kopioda itselleen kvanttibittejä myöhempää käyttöä varten.) Ensinnäkin mi-tatessaan A:n lähettämät kvanttibitit C joutuu valitsemaan kannanB1 tai B2. Tämä valinta onnoin puolessa tapauksista sama kuin A:n. C lähettää nämä kvanttibitit B:lle, joka luulee niidentulevan A:lta. Tällöin A:n ja B:n kohdassa 5. avaimeen valitsemista biteistä monet ovat eri bit-tejä. Tämä paljastuu luonnollisesti myöhemmin, ensimmäiset avainta käyttäen esimerkiksi AE-Silla lähetetyt viestit voisivat olla varustettuja pariteetintarkastuksilla tms. testiosioilla. Samointietysti käy, jos C yrittää lähettää B:lle A:n kvanttibittien sijasta aivan omat kvanttibittinsä.

Toinen hieman eri periaatteeseen perustuva avainjakomenettely on seuraava:

1. A ja B alustavat joukon kahden pituisia rekistereitä kunkin tilaan

1√2(|00〉+ |11〉) (ns.Bellin tila).

Tämä voidaan tehdä (totea!) alustamalla ensin rekisterit tilaan |00〉 = |0〉 ⊗ |0〉 ja sovel-tamalla sitten unitäärimatriisia

1√2

1 0 0 10 1 1 00 1 −1 01 0 0 −1

.

Kaikissa rekistereissä käytetään kantaaB1, mutta kyseessä on Bellin tila myöskin kantaaB2 käyttäen, sillä laskien Kroneckerin tuloja käyttäen on helppo todeta, että

1√2(|00〉+ |11〉) =

1√2(| −−〉+ |++〉).

Bellin tilassa molemmat positiot sisältävät saman puhtaankvanttibitin, ts. kvanttibitit ovatkytketyt. Fysikaalisesti kvanttibitit voidaan erottaa javiedä hyvinkin kauas toisistaan kyt-kennän muuttumatta. A ottaa itselleen ensimmäiset kvanttibitit muistaen niiden järjestyk-sen ja B toiset. Eräs mahdollisuus on sekin, että jokin kolmas luotettu osapuoli alustaa

LUKU 15. KVANTTIKRYPTOLOGIA 117

Bellin tilat ja jakaa niiden kvanttibitit sitten A:lle ja B:lle. Kaikki tämä tapahtuu ideaali-sesti ulkopuolisten tietämättä. Bellin tilojen ”puoliskot” odottavat käyttöönottoaan A:llaja B:llä.

Jos A ja B voivat olla varmat, että he ovat saaneet Bellin tilojen ”puoliskonsa” ilman ul-kopuolista häirintää, he suorittavat avainjaon yksinkertaisesti mittaamalla kvanttibittinsäsovitussa samassa kannassa. Kytkennästä johtuen he saavatsamat tulokset, mutta saatuavain on satunnainen. Näin käy, vaikka A ja B tekisivät mittauksensa ajallisesti niin lä-hellä toisiaan, että tieto tuloksista ei ehtisi siirtyä valon nopeudella!3 Muutoin menettelyon samantapainen kuin edellä ja etenee seuraavasti.

2. Kun A ja B tarvitsevat avainta, A mittaa kvanttibittinsä (ensimmäiset kvanttibitit) valitenkullekin kvanttibitille satunnaisesti kannanB1 tai B2. B puolestaan mittaa omansa tämänjälkeen valiten hänkin kannan kullekin kvanttibitille satunnaisesti. Koska kvanttibitit ovatkytketyt, he saavat samat tulokset, mikäli käyttävät samaakantaa.

3. A ilmoittaa B:lle klassista kanavaa käyttäen kantavalintansa, ilmoittaen samalla avain-jaon alkaneen. Varsinainen avainjako ei näin voi edetä valoa nopeammin. B lähettää senjälkeen A:lle klassista kanavaa käyttäen tiedon siitä mitkä A:n kantavalinnat olivat samatkuin hänen. Ulkopuolinen taho ei voi käyttää tätä tietoa hyväkseen, koska mitatut kvantti-bitit eivät ole hänen tiedossaan. Ulkopuolinen taho voi kuitenkin yrittää sotkea tilannettaesimerkiksi lähettämällä B:lle A:n nimissä tekaistut kantavalinnat. Tämä paljastuu ennenpitkää kuten edelläkin. Samoin käy, jos ulkopuolinen taho on päässyt vaikuttamaan A:ntai B:n kvanttibitteihin.

4. A ja B valitsevat avaimekseen ne mittaamansa kvanttibitit, jotka he mittasivat samassakannassa. Näin he saavat samat bitit. Avaimeen tulee noin puolet mitatuista kvanttibiteis-tä.

Huomautus. Kvanttiavainjako on tätä nykyä käytössä melko pitkillekinmatkoille ja sitä pi-detään ehdottoman varmana. Erilaisia protokollia on muitakin, ks. esimerkiksiNIELSEN &CHUANG.

Mielenkiintoista kyllä, edellä esitetyn ensimmäisen avainjaon tapainen menettely voidaantoteuttaa myös ”klassista sähköfysiikkaa” käyttäen, allaolevan kuvan mukaisesti.

AUA,1 BR1

R2 R2

R1

C

UB,2

UB,1

UA,2

Osapuolilla A ja B on silloin kummallakin käytössään kaksi resistoria, joiden resistanssitR1 jaR2 ovat eri suuret (ja kummallakin tarkalleen samat). ResistanssiRi on kytketty sarjaan omankohinajännitteensäUA,i taiUB,i kanssa. Kohinoiden intensiteetit (tehospektrit) ovat samaa muo-toa kuin resistorien lämpökohinoiden4, ts. yhdistettynä muotoaERi, missäE on vakio. A ja B

3Tämä on ns. Einstein–Podolsky–Rosen-paradoksi. Varsinaista klassista tietoa ei kuitenkaan välity yli valonnopeudella, sillä A ei voi valita mittaustuloksiaan eikä näin välittää B:lle mitään ennalta haluamaansa viestiä.Lisäksi A:n kvanttibitit kiinnittyvät jo ensimmäisellä mittauskerralla, joten hän ei voi yrittää uudestaankaan.

4Ns. Johnson–Nyquist-kaavan mukaisesti resistanssiaR lämpötilassaT vastaa lämpökohina, jonka intensiteettion4kTR, missäk on Boltzmannin vakio.

LUKU 15. KVANTTIKRYPTOLOGIA 118

voivat kytkimellä ottaa käyttöön satunnaisesti kumman tahansa näistä resistori-kohinageneraat-toripareista. Kun molemmat tekevät näin, muodostuu piiri,jossa Ohmin lain mukaan kulkeevirta, jonka intensiteetti onI = E/(RA + RB), missäRA on A:n jaRB B:n valitsema resis-tanssi. A ja B mittaavat virran, joten he tietävät toistensavalitsemat resistanssit. Mikäli A ja Bvalitsevat saman resistanssin,R1 tai R2, mitään bittiä ei välity. Näin käy noin puolessa tapauk-sista. Joka kerta kun he valitsevat eri resistanssit, määräytyy avaimen bitti (vaikkapa niin, ettäbitti on 0, jos A valitseeR1:n). Jos ulkopuolinen taho C silloin mittaa virran, hän ei voi senperusteella tietää määräytynyttä bittiä. Ei myöskään mittaamalla maata vasten jännitteen, jonkaintensiteetti onERARB/(RA +RB). Paljoa muuta C ei voi tehdäkään.

Menettely toimii ideaalisessa tilanteessa ja jos A ja B voivat tehdä aina kytkentänsä täs-mälleen samaan aikaan. Jos taas on vaikkapa sovittu, että A kytkee ensin ja sitten B, pääsee Ckukaties mittaamaan nopeasti A:n valitseman resistanssinhänen huomaamattaan. Sen jälkeenC voi toimia ”välimiehenä” B:lle päin A:na ja A:lle päin B:näja saada selville valitun avaimen.Tätä ”välimieshyökkäystä” ja muitakin hyökkäyksiä voidaan huomattavasti vaikeuttaa erinäisinjärjestelyin.5

5Ks. alkuperäisviite KISH, L.B.: Totally Secure Classical Communication Utilizing Johnson(-like) Noise andKirchhoff’s Law. Physics Letters A352 (2006), 178–182. Menettelyä on kylläkin kritisoitu kovasti erilaisin fysi-kaalisin perustein, toisaalta se on myös implementoitu.

Liite

DES

Liite.1 Yleistä

DES (Data Encryption Standard)on IBM:n 70-luvun alkupuolella kehittämä symmetrinenkryptosysteemi. Se perustuu IBM:n aikaisemmin tekemään LUCIFER-systeemiin. DES julkais-tiin vuonna 1975 ja otettiin USA:ssa ”unclassified”-dokumenttien kryptausstandardiksi vuonna1977. Sen jälkeen sitä on käytetty hyvin paljon eri yhteyksissä, myös kolminkertaisena 3-DES-systeeminä. DESin tapaisia kryptosysteemejä tunnetaan paljon: FEAL, IDEA, SAFER, RC5,BLOWFISH jne.

Lähinnä aivan liian pienen avaimensa takia DES on jäänyt paljolti pois käytöstä ja korvau-tunut AESilla.

Liite.2 DESin määrittely

DES toimii bittisymboleilla, joten selväteksti- ja kryptotekstisymboleiksi voidaan ajatellaZ2:njäännösluokat (bitit)0 ja 1. Selvätekstilohkon pituus on64. Avaink on56-bittinen. Se on yhtei-nen kryptauksessa ja dekryptauksessa. Pääpiirteissään DES toimii seuraavasti:

1. Selvätekstistäx muodostetaan bittijonox0 permutoimallax:n bitit tietyn kiinteän permu-taation (ns.alkupermutaation) πini mukaan. Kirjoitetaan

x0 = πini(x) = L0R0,

missäL0:ssa onx0:n 32 ensimmäistä bittiä jaR0:ssa loput.

2. Lasketaan jonoL1R1, L2R2, . . . , L16R16 iteroiden16 kertaa seuraavaa menettelyä:{

Li = Ri−1

Ri = Li−1 ⊕ f(Ri−1, ki),

missä⊕ on bittikohtainen yhteenlasku modulo2 (tunne-taan myös nimelläXOR-operaatio),f on funktio, jokaannetaan myöhemmin, jaki on i:nnen iteraation avain,joka saadaank:sta permutoimalla sen tietyt48 bittiä tiet-tyyn järjestykseen. Havainnollisesti yksi iteraatioaskelon kuvattu ohessa.

Li–1 Ri–1

f ki

Li Ri

3. Sovelletaan alkupermutaationπini käänteispermutaatiotaπ−1

ini(ns.loppupermutaatio) bit-

tijonoonR16L16.

119

Liite. DES 120

Vielä pitää antaa permutaatioπini, määritellä funktiof ja antaa avainjonok1, k2, . . . , k16 , jottakryptaus olisi määrätty.

Katsotaan ensin funktionf määrittely.f :n ensimmäinen argumenttiR on 32-pituinen bitti-jono ja toinen argumenttiK on48-pituinen bittijono.f :n laskemiseksi menetellään seuraavasti:

1. Ensimmäinen argumenttiR laajennetaan laajennusfunk-tiolla E. E(R):ään otetaanR:n 32 bittiä, toistetaan niis-tä puolet ja permutoidaan. Bitit otetaan oheisen taulukonmukaisesti, jota luetaan vasemmalta oikealle ja ylhäältäalas.

2. LasketaanE(R) ⊕ K = B ja kirjoitetaan tulos kahdek-san6-bittisen bittijonon katenaatioksi:

B = B1B2B3B4B5B6B7B8.

32 1 2 3 4 5

4 5 6 7 8 9

8 9 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 1

3. Seuraavaksi käytetään kahdeksaa ns.S-laatik-koa S1, . . . , S8. Kukin Si on kiinteä 4 × 16-taulukko, jossa esiintyy lukuja0, 1, . . . , 15. Kunsaadaan6-pituinen bittijono

Bi = b1b2b3b4b5b6,

lasketaanSi(Bi) = Ci seuraavasti. Bititb1b6

antavat erään rivin indeksinr binääriesityksen(r = 0, 1, 2, 3). Loput bitit b2b3b4b5 puolestaanantavat erään sarakkeens indeksin binääriesi-tyksen (s = 0, 1, . . . , 15). (Si:n rivit ja sarak-keet siis indeksoidaan nollasta lähtien.) SilloinSi(Bi) onSi:n r:nnen rivin jas:nnen sarakkeenristeyskohdassa olevan luvun binääriesitys, jon-ka alkuun lisätään tarvittaessa nollia, niin ettäsaadaan neljä bittiä. BittijonotCi katenoidaanbittijonoksi

C = C1C2C3C4C5C6C7C8.

4. 32-pituinen bittijonoC permutoidaan käyttäenkiinteää permutaatiotaπ. Näin saatu bittijonoπ(C) onf(R, K).

R K

E

E(R)

B1 B2 B3 B4 B5 B6 B7 B8

f(R,K)

π

S1 S2 S3 S4 S5 S6 S7 S8

C1 C2 C3 C4 C5 C6 C7 C8

Havainnollisesti operaatio on kuvattu yllä olevassa kuvassa. Tässä voidaan huomata, ettäEja π ovat lineaarisia operaatioita, ts. ne voitaisiin korvata bittivektorin kertomisella matriisilla.Toisaalta S-laatikot eivätole lineaarisia, vaan epä-lineaarisia. S-laatikoidenmäärittelyt löytyvät kir-jallisuudesta (esimerkik-si STINSON). Ohessa an-

15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10

3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5

0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15

13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9

netaan esimerkkinäS2 ja alla permutaatiotπini ja π (samaan tapaan kuinE):

Liite. DES 121

πini :

58 50 42 34 26 18 10 2

60 52 44 36 28 20 12 4

62 54 46 38 30 22 14 6

64 56 48 40 32 24 16 8

57 49 41 33 25 17 9 1

59 51 43 35 27 19 11 3

61 53 45 37 29 21 13 5

63 55 47 39 31 23 15 7

π :

16 7 20 21

29 12 28 17

1 15 23 26

5 18 31 10

2 8 24 14

32 27 3 9

19 13 30 6

22 11 4 25

Avainjonok1, k2, . . . , k16 lasketaan iteratiivisesti seuraavasti:

1. Avain k annetaan muodossa, missä aina7 bitin perään on lisätty pariteetintarkistusbit-ti. Tavussa on näin aina pariton määrä1:siä ja avaimen pituus64 bittiä. Mikäli paritee-tintarkistus osoittaa, että avaimessa on virheitä, sitä eioteta käyttöön. Jos taas virheitä eiole, poistetaan pariteetintarkistusbitit, jolloin tullaan alkuperäiseen56-bittiseen avaimeen.Avaimeen sovelletaan ensin kiinteää bittien permutaatiotaπK1. Kirjoitetaan

πK1(k) = C0D0,

missäC0 ja D0 ovat28-pituisia bittijonoja.

2. Lasketaan jonoC1D1, C2D2, . . . , D16D16 iteroiden16 kertaa seuraavaa menettelyä:{

Ci = σi(Ci−1)

Di = σi(Di−1),

missäσi on bittijonon syklinen siirto1 tai 2 bittiä vasemmalle. Josi = 1, 2, 9, 16, niinsiirto on1 bitti, muuten2 bittiä.

3. SovelletaanCiDi:hin kiinteää48 bitin variaatiotaπK2. Näin saadaanki = πK2(CiDi).

Vielä pitää antaa permutaatioπK1 ja variaatioπK2:

πK1 :

57 49 41 33 25 17 9

1 58 50 42 34 26 18

10 2 59 51 43 35 27

19 11 3 60 52 44 36

63 55 47 39 31 23 15

7 62 54 46 38 30 22

14 6 61 53 45 37 29

21 13 5 28 20 12 4

πK2 :

14 17 11 24 1 5

3 28 15 6 21 10

23 19 12 4 26 8

16 7 27 20 13 2

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

k

C0 D0

σ1

k1

πK1

πK2

σ1

C1 D1

σ2 σ2

σ16 σ16

C16 D16 πK2 k16

Liite. DES 122

Havainnollisesti avainten generointi on kuvattu yllä olevassa kuvassa.Dekryptaus sujuu oleellisesti samalla systeemillä, muttakäyttäen avainjonoak1, k2, . . . , k16

päinvastaisessa järjestyksessä ja kääntäen permutaatiot. Tällöin{

Li−1 = Ri ⊕ f(Li, ki)

Ri−1 = Li.

DESin toimintamoodit ovat samat kuin AESilla, ks. Pykälä 5.4.

Liite.3 DESin kryptanalyysiä

DESin rakenteessa kaikki muu on lineaarista, eli toteutettavissa matriisikertolaskulla, paitsiS-laatikot. Jos S-laatikot olisivat affiinisia, eli toteutettavissa matriisikertolaskuilla ja vektorienyhteenlaskuilla, olisi DES oleellisesti sama kuin jokin AFFINE-HILL ja näin helpohkosti mur-rettavissa. S-laatikot eivät kuitenkaan ole affiinisia. Julkisuudessa esitetyt DESin S-laatikoidensuunnitteluperiaatteet ovat seuraavat:

(1) S-laatikon kukin rivi on lukujen0, 1, . . . , 15 permutaatio.

(2) S-laatikko ei ole syötteidensä affiininen funktio (eikäsiis myöskään lineaarinen funktio).Itse asiassa vaaditaan, että mikään S-laatikon tulostusbitti ei ole ”lähellä” lineaarista syö-tebittien funktiota.

(3) Yhden bitin muuttaminen S-laatikon syötteessä aiheuttaa tulostuksessa ainakin kahdenbitin muutoksen.

(4) S-laatikon tulostukset syötteilläx ja x⊕001100 eroavat ainakin kahden bitin osalta, olipax mikä tahansa6-pituinen bittijono.

(5) S-laatikon tulostukset syötteilläx jax⊕11b1b200 eroavat, olipax mikä tahansa6-pituinenbittijono ja b1 sekäb2 mitä tahansa bittejä.

(6) Jokaista kuuden bitin jonoaB = b1b2b3b4b5b6 6= 000000 kohti on32 (= 26/2) eri syöte-pariax1, x2, joille x1 ⊕ x2 = B. Vastaavista32 tulosteparistay1, y2 enintään kahdeksallasaa olla sama summay1 ⊕ y2.

DESin avaimia on256 = 72 057 594 037 927 936

eli nykykäsityksen mukaan varsin vähän. Tämä antaa mahdollisuuden seuraavaan yksinkertai-seen KP-hyökkäykseen. Jos tunnetaan selvätekstiw ja vastaava kryptotekstic, kokeillaan läpiavaimia, kunnes löytyy avain, jolla saadaan aikaan tämä kryptaus. Tällaisia avaimia voi kui-tenkin olla useita. Menettely ei vaadi muuta kuin aikaa ja nopeita prosessoreja ja on helpostirinnakkaistettavissa, muistia se vaatii minimaalisen määrän. DES on toteutettavissa tavattomannopeina piireinä, joten vartavasten sen murtamiseen yo. tekniikalla suunnitellut prosessorit ovatmahdollisia.

CP-hyökkäys saadaan seuraavasti. Valitaan selvätekstiw ja kryptataan se kaikilla mahdol-lisilla avainavaruuden avaimilla. Taulukoidaan tulokset. Jos nyt murrettavalla DESillä voidaankryptataw ja saada vastaava kryptoteksti, niin taulukkoetsinnällä löytyy avain. Tämä metodi ontietysti edullinen vain, jos sitä käytetään useiden avainten etsimiseen, jolloin taulukkoa voidaankäyttää toistuvasti. Menettely ei vaadi lisäaikaa (taulukon laatimisen jälkeen) juuri lainkaan,mutta paljon muistia.

Liite. DES 123

On myös menettelyjä, joissa aikaa voidaan vaihtaa muistiin, eräänlaisia yo. menettelyjenvälimuotoja. AESissa avaimia on ainakin

2128 = 340 282 366 920 938 463 463 374 607 431 768 211 456,

minkä katsotaan riittävän estämään yllä olevien tapaiset hyökkäykset.Pykälässä 3.4 esitetty AFFINE-HILLin—ja itse asiassa myösAFFINEn—KP-hyökkäys

käytti murtamiseen selvätekstien erotuksia ja vastaavienkryptotekstien erotuksia moduloM ,joilla saatiin hävitetyksi affiinisuuden aiheuttama epälineaarisuus. Tällaista menettelyä kutsu-taandifferentiaaliseksi kryptanalyysiksi.Vastaavantapaista menettelyä voidaan soveltaa DESinKP- ja CP-hyökkäyksissä ja tietyssä määrin poistaa S-laatikoiden epälineaarisuuden vaikutuk-sia. Haittapuolena on suuri tarvittavien selväteksti-kryptoteksti-parien lukumäärä.Lineaarinenkryptanalyysitaas pyrkii käyttämään hyväksi joidenkin syöte- ja tulostusbittien välisiä lineaari-sia riippuvuuksia, jotka pitävät paikkansa vain osalle syötteistä. Tällaisia on DESissä eikä niitäilmeisesti osattu alun perin välttää. AES puolestaan on rakennettu kestämään nämä kryptana-lyysit.

KIRJALLISUUS

1. BAUER, F.L.: Decrypted Secrets. Methods and Maxims of Cryptography.Springer–Verlag(2006)

2. BLAKE , I. & SEROUSSI, G. & SMART, N.: Elliptic Curves in Cryptography.CambridgeUniversity Press (2000)

3. BUCHMANN , J.: Introduction to Cryptography.Springer–Verlag (2004)

4. COHEN, H.: A Course in Computational Algebraic Number Theory.Springer–Verlag(2000)

5. CRANDALL , R. & POMERANCE, C.: Prime Numbers. A Computational Perspective.Springer–Verlag (2005)

6. DAEMEN, J. & RIJMEN, V.: Design of Rijndael. AES—The Advanced Encryption Stan-dard.Springer–Verlag (2002)

7. DING, C. & PEI, D. & SALOMAA , A: Chinese Remainder Theorem. Applications inComputing, Coding, Cryptography.World Scientific (1999)

8. DU, D.-Z. & KO, K.-I: Theory of Computational Complexity.Wiley (2000)

9. GARRETT, P.: Making, Breaking Codes. An Introduction to Cryptology.Prentice–Hall(2007)

10. GOLDREICH, O.: Modern Cryptography, Probabilistic Proofs, and Pseudorandomness.Springer–Verlag (2001)

11. GOLDREICH, O.:Foundations of Cryptography. Basic Tools.Cambridge University Press(2007)

12. GOLDREICH, O.: Foundations of Cryptography. Basic Applications.Cambridge Univer-sity Press (2009)

13. HOFFSTEIN, J. & PIPHER, J. & SILVERMAN , J.H.: An Introduction to MathematicalCryptography.Springer–Verlag (2008)

14. HOPCROFT, J.E. & ULLMAN , J.D.: Introduction to Automata Theory, Languages, andComputation.Addison–Wesley (1979)

15. KATZ , J. & LINDELL , Y.: Introduction to Modern Cryptography.Chapman & Hall /CRC (2008)

16. KNUTH, D.E.: The Art of Computer Programming Vol. 2: Seminumerical Algorithms.Addison–Wesley (1998)

124

KIRJALLISUUS 125

17. KOBLITZ , N.: A Course in Number Theory and Cryptography.Springer–Verlag (2001)

18. KOBLITZ , N.: Algebraic Aspects of Cryptography.Springer–Verlag (2004)

19. KONHEIM, A.G.: Cryptography. A Primer.Wiley (1981)

20. KRANAKIS, E.: Primality and Cryptography.Wiley (1991)

21. LIDL , R. & NIEDERREITER, H.: Finite Fields.Cambridge University Press (2008)

22. LIPSON, J.D.:Elements of Algebra and Algebraic Computing.Addison–Wesley (1981)

23. MAO, W.: Modern Cryptography. Theory and Practice.Pearson Education (2004)

24. MCELIECE, R.J.:Finite Fields for Computer Scientists and Engineers.Kluwer (1987)

25. MENEZES, A. & VAN OORSCHOT, P. & VANSTONE, S.: Handbook of Applied Crypto-graphy.CRC Press (2001)

26. MIGNOTTE, M.: Mathematics for Computer Algebra.Springer–Verlag (1991)

27. MOLLIN , R.A.: An Introduction to Cryptography.Chapman & Hall / CRC (2006)

28. MOLLIN , R.A.: RSA and Public-Key Cryptography.Chapman & Hall / CRC (2003)

29. MOLLIN , R.A.: Codes. The Guide to Secrecy from Ancient to Modern Times.Chapman& Hall / CRC (2005)

30. NIELSEN, M.A. & CHUANG, I.L.: Quantum Computation and Quantum Information.Cambridge University Press (2000)

31. PAAR, C. & PELZL , J.:Understanding Cryptography. A Textbook for Students and Prac-titioners.Springer–Verlag (2009)

32. RIESEL, H.: Prime Numbers and Computer Methods for Factorization.Birkhäuser (1994)

33. ROSEN, K.H..: Elementary Number Theory.Longman (2010)

34. ROSING, M.: Implementing Elliptic Curve Cryptography.Manning Publications (1998)

35. SALOMAA , A.: Public-Key Cryptography.Springer–Verlag (1998)

36. SCHNEIER, B.: Applied Cryptography. Protocols, Algorithms, and Source Code in C.Wiley (1996)

37. SHOUP, V.: A Computational Introduction to Number Theory and Algebra.CambridgeUniversity Press (2005)

38. SHPARLINSKI, I.: Cryptographic Applications of Analytic Number Theory. ComplexityLower Bounds and Pseurandomness.Birkhäuser (2003)

39. SIERPINSKI, W.: Elementary Theory of Numbers.Elsevier (1988)

40. SILVERMAN , J.H. & TATE, J.: Rational Points on Elliptic Curves.Springer–Verlag(1992)

41. STINSON, D.R.: Cryptography. Theory and Practice.Chapman & Hall / CRC (2006)

KIRJALLISUUS 126

42. TRAPPE, W. & WASHINGTON, L.C.: Introduction to Cryptography with Coding Theory.Pearson Education (2006)

43. WAGSTAFF, S.S.:Cryptanalysis of Number Theoretic Ciphers.Chapman & Hall / CRC(2003)

44. WASHINGTON, L.C.: Elliptic Curves. Number Theory and Cryptography.Chapman &Hall / CRC (2008)

Hakemisto 127

Hakemisto

additiivinen ryhmä 74,75Adleman–Pomerance–Rumely-testi 54AES 34,119,123affiini kryptosysteemi 23,25affiini Hillin kryptosysteemi 24,26,123AFFINE 23,25,123AFFINE-HILL 24,26,123Agrawal–Kayak–Saxena-algoritmi 55aidonnus 45algebrallinen struktuuri 27algoritmi 42aliryhmä 76alkukunta 13,28,32alkuluku 4,53Alkulukulause 57alkuluokka 12allekirjoitus 45,99allekirjoitusavain 99allekirjoitusavaruus 99allekirjoitusfunktio 99allekirjoitussysteemi 99ARITHMETICA 47arpominen 102aste 28autentikointi 41avaimen laajentaminen 38avain 1,99avainavaruus 1,99Bellin tila 116Bertrandin postulaatti 57Bézout’n kertoimet 7Bézout’n lause 7,30Bézout’n muoto 7,9,30binäärikunta 13Blum–Blum–Shub-generaattori 63BPP 43BQP 43,113CAESAR 23Caesar-kryptosysteemi 23Casselsin lause 83CBC-moodi 41CC-data 25CELIDH 88CFB-moodi 41Chaum–van Heijst–Pfitzmann-tiiviste 97CO-data 25,44co–NP 43CP-data 25CRANDALL 47,88CRT-algoritmi 52

CTR-moodi 41dekryptaus 1dekryptauseksponentti 65dekryptausfunktio 1dekryptausfunktioiden avaruus 1DES 119desimaaliesitys 5differentiaalinen kryptanalyysi 123DIFFIE–HELLMAN 86Diffie–Hellman-avainjakosysteemi 86Diffie–Hellman-probleema 86DIFFIE-HELLMAN 47Dirichlet–De la Vallée-Poussin-lause 57diskreetti logaritmi 47,50,52,77,85,113EBC-moodi 41ei-triviaali tekijä 3ei-ylisingulaarinen 79eksponenttialgoritmi 70ELGAMAL 47,52,85,100,113Elgamalin allekirjoitus 100Elgamalin kryptosysteemi 85,100,113elliptinen käyrä 47,78,87elliptisten käyrien menetelmä 58ENIGMA 24epäneliönjäännös 59epäsymmetrinen kryptaus 1Eukleideen algoritmi 7,30Eulerin funktio 12,48Eulerin kriteeri 60Eulerin lause 49Fermat’n pieni lause 49Garnerin algoritmi 53generaattori 75Germainin luku 68,97Hassen lause 83heikosti törmäyksetön 93heksadesimaaliesitys 5Henselin nosto 91hila 47,63HILL 23,24,26Hillin kryptosysteemi 24,26identiteettialkio 74indeksi 52indeksilaskumenetelmä 78indeksitaulu 77injektiivinen kryptaus 2interaktiivinen todistussysteemi 106inverssi 12,28,74iteroitu kryptaus 67jaettava 3

Hakemisto 128

jakaja 3jakojäännös 3,10,29jakolasku 3,15,28,29jaollisuus 3,30jaoton luku 4jaoton polynomi 30johtava kerroin 28julkisen avaimen kryptaus 1,44jäännösluokka 10,12,30,75jäännösluokkarengas 12,28,30jäännösluokkaryhmä 75jäännössysteemi 11kanta 5kantaesitys 5kantaluku 5kantamuunnos 6Karatsuban algoritmi 13katto 13kerta-avain 24kerta-avainkryptaus 24,26kertaluku 49,75keskenään jaottomat luvut 6keskikohtaaminen 68,86kierros 35kierrosavain 38Kiinalainen jäännöslause 52kiintopisteviesti 69KNAPSACK 46kokonaisjuuri 18kokonaisneliöjuuri 18kompleksisuus 42kongruenssi 10,30kongruenssilaskenta 10KP-data 25Kroneckerin dekompositio 77,83Kroneckerin tulo 111kryptanalyysi 25,40,44,69,122kryptaus 1kryptauseksponentti 65kryptausfunktio 1kryptausfunktioiden avaruus 1kryptosysteemi 1kryptoteksti 1kryptotekstiavaruus 1kryptotunnistus 45kubitti 110kunta 28kvantti-Fourier-muunnos 112kvanttialgoritmi 112kvanttibitti 110kvanttikryptologia 110kvanttirekisteri 111

kynnyskaavio 104kytkentä 112käänteisalkio 28,74Lagrangen interpolaatio 104Lagrangen lause 76,85Las Vegas -algoritmi 43laskennallinen nollatietotodistus 106Lenstra–Lenstra–Lovász-algoritmi 64,68,72,92liitännäinen operaatio 27,74lineaarinen kongruenssigeneraattori 21,23lineaarinen kryptanalyysi 123LLL-algoritmi 64,68,72,92lohkokryptaus 1Lucas’n kriteeri 51,86Lucas–Lehmer-kriteeri 51LUCIFER 118lukukunta 28lukukuntaseula 58lyhyt Weierstraßin muoto 79MCELIECE 47MENEZES–VANSTONE 47,87Menezes–Vanstone–Okamoto-algoritmi 87Menezes–Vanstonesysteemi 87Mignotten kynnyskaavio 105Miller–Rabin-testi 55mittaus 110modulaarilaskenta 10modulaarinen neliöjuuri 59moduli 10,30monikertamerkintä 27,74Monte Carlo -algoritmi 43multiplikatiivinen ryhmä 75murto 1negatiivinen jäännössysteemi 11neliöllinen seula 58neliönjäännös 59Newtonin menetelmä 15,18NIEDERREITER 47nolla-alkio 27,74nollapolynomi 28nollatietotodistus 106NP 43NP-kova 44NP-täydellinen 44NPSPACE 43NTRU 47,89O-notaatio 13,42OFB-moodi 41oheismatriisi 21oktaaliesitys 5ONE-TIME-PAD 24,26osamäärä 3,29

Hakemisto 129

osittuvuus 27P 43pariteetti 70permutaatiokryptaus 24PERMUTATION 24pienin yhteinen jaettava 9pohja 13Pohlig–Hellman-algoritmi 78,85Pollardin kengurualgoritmi 96Pollardin p-1-algoritmi 58polynomi 28polynomirengas 28positiivinen jäännössysteemi 11potenssimerkintä 27,74Prattin algoritmi 53primitiivinen alkio 76primitiivinen juuri 50,75probabilistinen algoritmi 43PSPACE 43puhdas kvanttibitti 110puolisko 70pääneliöjuuri 60pääpolynomi 28RABIN 47radix 5radix-muunnos 6reduktio 43rengas 13,27reppuprobleema 46reppusysteemi 46RIJNDAEL 34RIJNDAEL-polynomi 35ristitörmäys 95rivinsiirto 37rotaatiokryptosysteemi 24RSA 47,65,100,113RSA-allekirjoitus 100ryhmä 74S-laatikko 36,120salaisen avaimen kryptaus 1salaisuuksien jakaminen 104salaluukku 45sarakkeiden sekoitus 37satunnaisluku 21,62Schoofin algoritmi 84selviämätön tehtävä 44selviävä tehtävä 44selväteksti 1seulamenetelmä 58Shamirin hyökkäys 46Shamirin kynnyskaavio 104Shamirin lause 109

Shanksin algoritmi 61,84Shanksin pikkuaskel-jättiaskel-algoritmi 77,84,96Shorin algoritmit 43,113siirtorekisteri 20siirtorekisterigeneraattori 20,23sokea allekirjoitus 100stokastinen algoritmi 43suora tulo 76supistettu jäännössysteemi 12supistettu muoto 8suurin yhteinen tekijä 6,30syklinen ryhmä 75symmetrinen jäännössysteemi 11symmetrinen kryptaus 1syntymäpäivähyökkäys 94,101tavun muuntaminen 36tekijä 3,30tekijöihinjako 5,7,47,58,69,113tensoritulo 111testijakoalgoritmi 58tiedon hajautus 105tietymätön tiedonsiirto 105tiiviste 93tiivistefunktio 93todennusavain 99todennusfunktio 99toppaus 68triviaali ryhmä 75triviaali tekijä 3Tshebyshevin lause 57tunnistustehtävä 42turvallinen alkuluku 68täydellinen nollatietotodistus 106törmäys 93vaativuus 42vahva satunnaisluku 62vahva valealkuluku 57vahvasti törmäyksetön 93vaihdannainen operaatio 27,74vaihdannainen ryhmä 74venäläisten talonpoikien menetelmä 18viestiavaruus 1,99VIGENÈRE 24,26Vigenèren kryptaus 24,26vuokryptaus 1,41välimieshyökkäys 118Williamsin p+1-algoritmi 58XTR 47,88yhdistetty luku 4ykkösalkio 27,74yksiköiden ryhmä 75yksisuuntainen funktio 45,93

Hakemisto 130

ylisingulaarinen 79,87äärellinen kunta 32