MATEMAATTINEN KRYPTOLOGIA. Keijo Ruohonen

Koko: px
Aloita esitys sivulta:

Download "MATEMAATTINEN KRYPTOLOGIA. Keijo Ruohonen"

Transkriptio

1 MATEMAATTINEN KRYPTOLOGIA Keijo Ruohonen 2012

2 Sisältö 1 I JOHDANTO 3 II LUKUTEORIA: OSA Jaollisuus, tekijät, alkuluvut Kokonaisluvun esitys eri kannoissa Suurin yhteinen tekijä ja pienin yhteinen jaettava Kongruenssilaskenta eli modulaarilaskenta Jäännösluokkarenkaat ja alkukunnat Suurten kokonaislukujen algoritmeja 13 Yhteen- ja vähennyslasku 13 Kertolasku 15 Jakolasku 17 Potenssiin korotus 18 Kokonaisjuuri 20 Satunnaisluvun generointi 23 III JOITAIN KLASSISIA KRYPTOSYSTEEMEJÄ KRYPTANALYYSEINEEN AFFINE. CAESAR HILL. PERMUTATION. AFFINE-HILL. VIGENÈRE ONE-TIME-PAD Kryptanalyysi 27 IV ALGEBRA: RENKAAT JA KUNNAT Renkaat ja kunnat Polynomirenkaat Äärelliset kunnat 34 V AES Yleistä RIJNDAEL Kierrokset Tavun muuntaminen (SubBytes) Rivinsiirto (ShiftRows) Sarakkeiden sekoitus (MixColumns) Kierrosavaimen lisäys (AddRoundKey) Avaimen laajentaminen Dekryptauksen muunnelma RIJNDAELin kryptanalyysiä AESin toimintamoodeja i

3 ii 42 VI JULKISEN AVAIMEN KRYPTAUS Algoritmien vaativuusteoriaa Julkisen avaimen kryptosysteemi Reppusysteemin nousu ja tuho Julkisen avaimen kryptaukseen sopivia tehtäviä 48 VII LUKUTEORIA: OSA Eulerin funktio ja Eulerin lause Kertaluku ja diskreetti logaritmi Kiinalainen jäännöslause Alkulukujen testaus ja generointi Lukujen tekijöihinjako Modulaarinen neliöjuuri Vahvat satunnaisluvut Hilat. LLL-algoritmi 65 VIII RSA RSAn määrittely Hyökkäyksiä ja puolustuksia Kryptanalyysi ja tekijöihinjako Osittaisen tiedon saaminen viestin biteistä Hyökkäys LLL-algoritmilla 74 IX ALGEBRA: RYHMÄT Ryhmät Diskreetti logaritmi Elliptiset käyrät 85 X ELGAMAL. DIFFIE HELLMAN Elgamalin kryptosysteemi Diffie Hellman-avainjakosysteemi Elliptisiin käyriin perustuvat kryptosysteemit XTR 89 XI NTRU Määrittely Kryptaus ja dekryptaus Systeemin pystytys Hyökkäys LLL-algoritmilla 93 XII TIIVISTEFUNKTIOT JA TIIVISTEET Määritelmiä Syntymäpäivähyökkäys Chaum van Heijst Pfitzmann -tiiviste

4 iii 99 XIII ALLEKIRJOITUS Allekirjoitussysteemi RSA-allekirjoitus Elgamalin allekirjoitus Syntymäpäivähyökkäys allekirjoitusta vastaan 102 XIV SALAISEN TIEDON SIIRTO Arpominen Salaisuuksien jakaminen Tietymätön tiedonsiirto Nollatietotodistukset 110 XV KVANTTIKRYPTOLOGIA Kvanttibitti Kvanttirekisterit ja kvanttialgoritmit Shorin algoritmit Avainjako kvanttimenetelmällä 119 Liite: DES 119 Liite.1 Yleistä 119 Liite.2 DESin määrittely 122 Liite.3 DESin kryptanalyysiä 124 Kirjallisuus 127 Hakemisto Esipuhe Tämä moniste on tarkoitettu TTY:n kurssin MAT Matemaattinen kryptologia perusmateriaaliksi. Monisteessa käydään läpi tärkeimmät nykyisen tiedonsalauksen tarvitsemat matemaattiset taustat sekä esitellään niiden soveltamista kryptauksessa sekä erilaisissa protokollissa. Matematiikan ja kryptologian liitto on vanha, mutta tuli vahvemmin esille oikeastaan vasta toisen maailmansodan tehokkaiden kryptausmenetelmien ja niiden murtamisen yhteydessä, sitten kun nämä tulivat julkisiksi. Asian yleinenkin kiinnostavuus ilmenee vaikkapa siitä kirjoitettujen 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 vallankumouksellinen julkisen avaimen kryptauksen idea. 2 Sen jälkeen kryptologian sekä myös sen tarvitseman matematiikan lähinnä eräiden lukuteorian ja algebran alojen kehitys on ollut tavattoman nopeaa. Voidaankin sanoa, että lukuteorian ja algebran viimeaikainen suosio johtuu nimenomaan kryptologiasta. Usein tähän liitetään myös teoreettiseen tietojenkäsittelytieteeseen kuuluva laskennallisen vaativuuden teoria, mutta totuuden nimessä pitänee todeta, ettei sillä ole ollut kryptologiassa kovinkaan suurta merkitystä. Otollisia kryptauksessa käyttökelpoisia mate- 1 Esimerkkinä vaikkapa Neal Stephensonin mainio Cryptonomicon. 2 Steven Levyn kirja Crypto. Secrecy and Privacy in the New Code War antaa hieman romantisoidun kuvauksen näistä julkisen avaimen kryptauksen alkuajoista.

5 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 murtaminen edellyttää silloin myös huomattavaa teoreettista läpimurtoa. Tällaisia probleemoja löytyy runsaasti 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 lajittelu laskennallisesti helppoihin ja vaikeisiin. Edellisiä tarvitaan kryptauksessa ja dekryptauksessa sekä myös kryptosysteemien pystytyksessä, jälkimmäiset taas takaavat kryptosysteemin varmuuden. 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 suinkaan ole osoitus siitä, että niillä ei olisi käyttöä. Vaikka vanhojen klassisten menetelmien merkitys on kadonnut nopeasti 3, uudempia klassistyyppisiä menetelmiä käytetään paljon ja niillä on hyvin tärkeä rooli nopeassa massakryptauksessa. Monisteessa jätetään vähälle huomiolle myös monissa sovelluksissa niin tärkeä vuokryptaus. Yhden kurssin puitteissa aika on rajallinen. Kokonaan oma lukunsa on vielä kryptosysteemien oikea implementointi ja käyttö, johon tällaisessa matemaattisessa kurssissa ei voi kovinkaan paljon puuttua. Hyväkin kryptosysteemi kun voidaan helposti tehdä tehottomaksi huonolla implementoinnilla ja huolettomalla käytöllä. 4 iv Keijo Ruohonen 3 Esimerkkinä mainittakoon vaikkapa se, että Yhdysvaltain maavoimien kenttämanuaali FM : Basic Cryptanalysis on nykyään julkisesti saatavana verkossa. Viite BAUER sisältää myös aikaisemmin salaiseksi luokiteltua materiaalia. 4 Erinomainen tähän liittyvä teos on Bruce Schneierin Secrets and Lies. Digital Security in a Networked World.

6 Luku 1 JOHDANTO Viestin kryptauksella tarkoitetaan sen salaamista siten, että satunnainen lukija tai salakuuntelija ei saa selville mitään viestin sisällöstä eli hän ei pysty murtamaan kryptausta. Alkuperäistä selväkielistä viestiä kutsutaan selvätekstiksi ja kryptattua taas kryptotekstiksi. Kryptauksessa tarvitaan ns. avain, ts. eräänlainen yleensä varsin mutkikas parametri, jolla kryptausta voidaan muuttaa. Jos kryptausmenettely pysyy pitkään tarkalleen samana, lisääntyvät murtomahdollisuudet käytännössä tuntuvasti. Eri käyttäjät tarvitsevat luonnollisesti vielä omat avaimensa. Viestin vastaanottaja dekryptaa viestin, mitä varten hän tarvitsee oman avaimensa. Salakuuntelijalle sekä kryptausavain että dekryptausavain ovat arvokkaita, edellistä käyttäen hän pystyy lähettämään kryptattuja valeviestejä, jälkimmäisellä taas purkamaan eli dekryptaamaan viestit. Symmetrisissä kryptosysteemeissä avaimet ovat lisäksi usein samat. Kryptausmenettely voi kryptata symbolivirtaa jatkuvasti (vuokryptaus) tai lohkoihin jaettuna (lohkokryptaus). Lohkokryptauksessa lohkot voivat joissain tapauksissa olla eripituisia, kuitenkaan tiettyä lohkon maksimipituutta ei saa ylittää. Yleensä kuitenkin lohkot ovat samanpituisia. Jatkossa tarkastellaan vain lohkokryptausta. Tällöin riittää selvittää mielivaltaisen viestilohkon kryptaaminen/dekryptaaminen ja selvätekstinä voidaan pitää yhtä mielivaltaista viestilohkoa ja kryptotekstinä mielivaltaista viestilohkon kryptattua versiota. Kryptausmenettely on symmetrinen, jos kryptaus- ja dekryptausavaimet ovat samat tai ainakin helposti saatavissa toinen toisistaan. Epäsymmetrisessä kryptauksessa kryptausavaimesta ei voi millään pienellä työmäärällä saada dekryptausavainta. Niinpä kryptausavain voidaan tällöin pitää jopa julkisena dekryptausavaimen pysyessä salaisena; tästä nimi julkisen avaimen kryptaus, vastaavasti symmetristä kryptausta kutsutaan salaisen avaimen kryptaukseksi. Symmetrisessä kryptauksessa pulmana on avaimien välitys salassa kaikille 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 äärellinen viestiavaruus (selvätekstit). C on äärellinen kryptotekstiavaruus. K on äärellinen avainavaruus. kutakin avainta k K kohti on kryptausfunktio e k E ja dekryptausfunktio d k D. E on mahdollisten kryptausfunktioiden avaruus ja D mahdollisten dekryptausfunktioiden avaruus. jokaiselle viestille (lohkolle)w ja avaimellek ond k (e k (w)) = w. 1

7 LUKU 1. JOHDANTO 2 Ilmeisesti kryptausfunktion pitää olla injektiivinen, ts. se ei kryptaa kahta eri selvätekstiä samaksi kryptotekstiksi. Kryptauksessa voi kuitenkin olla mukana satunnaisuutta, jolloin kryptausfunktio voi eri kerroilla kryptata saman selvätekstin eri kryptotekstiksi, kyseessä ei siis tällöin ole varsinaisesti matemaattinen funktio. Injektiivisyydestäkin voidaan toisinaan tinkiä, jos kryptotekstiä vastaavia selvätekstejä on rajallinen määrä ja niistä löytyy se oikea pienellä vaivalla. salakuuntelija l hett j selv - teksti e k kryptoteksti kanava kryptoteksti d k selv - teksti vastaanottaja avainjako k avainjako Kutakuinkin kaikki laajemmin käytetyt kryptausmenetelmät perustuvat lukuteorian tai algebran (ryhmäteoria, äärelliset kunnat, kommutatiivinen algebra) tuloksiin. Näihin perehdytään sitä mukaa kuin ne tulevat esille, tarvittavassa määrin.

8 So in order to remove the contingent and subjective elements from cryptography there have been concerted efforts in recent years to transform the field into a branch of mathematics, or at least a branch of 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) Luku 2 LUKUTEORIA. OSA Jaollisuus, tekijät, alkuluvut Tietyt lukuteorian 1 käsitteet ja tulokset tulevat hyvin usein esille kryptologiassa, vaikka menettely sinänsä ei liittyisikään lukuteoriaan. Kaikkien kokonaislukujen joukkoa merkitään Z:lla. Ei-negatiivisten kokonaislukujen eli ns. luonnollisten lukujen joukkoa {0, 1, 2,...} merkitään N:llä. Kokonaislukujen yhteen- ja kertolasku ovat tuttuja vaihdannaisia ja liitännäisiä laskuoperaatioita, joiden identiteettialkiot ovat 0 ja 1. Muista myös liitäntälaki x(y + z) = xy + xz sekä vastaluvun ja vähennyslaskun määrittelyt x = ( 1)x ja x y = x +( 1)y. Kokonaislukujen jakolasku tarkoittaa seuraavanlaista operaatiota: Jaettaessa kokonaisluku x (jaettava) kokonaisluvulla y 0 (jakaja) x saatetaan muotoon x = qy +r, missä kokonaisluku r on jakojäännös, joka toteuttaa ehdon 0 r < y. Kokonaisluku q on osamäärä. Lisäämällä x:ään toistuvasti y:tä tai y:tä nähdään, että x on mahdollista kirjoittaa ko. muotoon. Jos voidaan kirjoittaa x = qy, missäq on kokonaisluku, sanotaan, ettäxon jaollineny:llä tai ettäy jakaax:n tai ettäy onx:n tekijä, merkitään y x. Kokonaisluvunxns. triviaalit tekijät ovat ±1 ja ±x. Mahdolliset muut tekijät ovat ei-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 jax 0, niin y x. (4) Jos x y ja y z, niin myös x z (ts. jaollisuus on transitiivinen). (5) Josx y jax z, niin myösx y ±z. 1 Lukuteoria on nimenomaan kokonaislukujen teoriaa. Tosin lukuteoriasta on eri suuntiin laajenevia versioita. Mukaan voidaan ottaa algebralliset luvut eli kokonaiskertoimisten polynomien juuret jolloin päästään algebralliseen lukuteoriaan, jolla on muuten paljonkin käyttöä kryptologiassa, ks. esimerkiksi KOBLITZ. Toisaalta lukuteoriaa voidaan tutkia käyttämällä muita matematiikan formalismeja. Esimerkiksi analyyttinen lukuteoria tutkii kokonaislukuja käyttäen matemaattisen analyysin menetelmiä integraaleja, sarjoja jne. ja silläkin on käyttöä kryptologiassa, ks. SHPARLINSKI. 3

9 LUKU 2. LUKUTEORIA. OSA 1 4 (6) Josx y jaz on kokonaisluku, niinx yz. Jakolaskun tulos on yksikäsitteinen. Jos nimittäin x = q 1 y +r 1 = q 2 y +r 2, missä q 1,q 2,r 1,r 2 ovat kokonaislukuja ja 0 r 1,r 2 < y, niin y jakaa r 1 r 2 :n. Koska r 1 r 2 < y, tästä seuraa ettär 1 = r 2 ja edelleen ettäq 1 = q 2. Kokonaislukua, jolla on vain triviaalit tekijät, kutsutaan jaottomaksi. Jaoton kokonaisluku on alkuluku 2, 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 testata onko luonnollinen luku alkuluku vai ei. Kokonaisluku, joka on 2 eikä ole alkuluku, on yhdistetty luku. Lause 2.1. Jos kokonaisluku x on itseisarvoltaan 2, niin sillä on alkulukutekijä eli ns. alkutekijä. Todistus. Jos x 2, alkutekijäplöytyy seuraavalla algoritmilla: 1. Asetetaan z 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 kohtaan 2. 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 kreikkalaisten tuntemalla menettelyllä (jonka ei kuitenkaan arvella tuottavan kaikkia alkulukuja): 1. Asetetaan P 2. TässäP on jonomuuttuja. 2. Jos P = p 1,...,p n, niin lasketaan x = p 1 p n + 1. Huomaa, ettei mikään jonon P alkuluvuista jaax:ää (jakolaskun yksikäsitteisyys). 3. Lauseen 2.1 mukaisesti x:llä on alkutekijä p, joka ei siis kuitenkaan ole mikään jonon P alkuluvuista. Etsitään jokinp, asetetaan P 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. 2 Alkulukujen joukkoa merkitään toisinaanp:llä.

10 LUKU 2. LUKUTEORIA. OSA 1 5 Lause 2.2. Kokonaisluku x 0 voidaan etumerkkiä vaille kirjoittaa alkulukujen tuloksi, ns. tekijöihinjako. Erityisesti sovitaan, että luku 1 on ns. tyhjä tulo eli tulo, jossa ei ole tekijöitä. Todistus. Seuraava menettely tuottaa jonon alkulukuja, joiden tulo on= ±x: 1. Asetetaan T NULL (tyhjä jono). 2. Josx = ±1, tulostetaant ja lopetetaan. Muista, että tyhjä tulo on = Etsitään jokin x:n alkutekijä p (Lause 2.1), jolloin x = py. Asetetaan T 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, jos x = ±1. Myöhemmin todetaan vielä, että ko. tekijöihinjako on tekijöiden järjestystä lukuunottamatta yksikäsitteinen, ks. Pykälä 2.3. Luonnollisesti eräs perustehtävä on kokonaisluvun tekijöihinjaon etsiminen. Laskennallisesti tämä on varsin vaativaa, ks. Pykälä Kokonaisluvun esitys eri kannoissa Tavallisin tapa esittää kokonaisluku on käyttää tuttua desimaaliesitystä eli 10-kantaista esitystä. Myös 2-kantainen eli binääriesitys on usein esillä, samoin 8-kantainen oktaaliesitys ja 16-kantainen heksadesimaaliesitys. Yleisen kannan esityksen antaa Lause 2.3. Jos k 2, niin jokainen positiivinen kokonaisluku x voidaan esittää yksikäsitteisesti muodossa x = a n k n +a n 1 k n 1 + +a 1 k +a 0, missä0 a 0,a 1,...,a n k 1 jaa n > 0. Kyseessä onx:nk-kantainen esitys,k on kantaluku eli radix ja n+1 on esityksen pituus. Todistus. Esityksen eli jonona n,a n 1,...,a 0 antaa seuraava algoritmi: 1. Asetetaan K NULL (tyhjä jono). 2. Jaetaan x kantaluvullak: Asetetaan K r,k jax q. x = qk + r (osamäärä q, jakojäännös r). 3. Josx = 0, tulostetaankja lopetetaan. Muussa tapauksessa mennään kohtaan 2. Koska kohdassa 2. ainaxpienenee, menettely pysähtyy lopulta kohtaan 3. k-kantainen esitys on yksikäsitteinen. Jos nimittäin x = a n k n +a n 1 k n 1 + +a 1 k +a 0 = b m k m +b m 1 k m 1 + +b 1 k +b 0, missä 0 a 0,a 1,...,a n,b 0,b 1,...,b m k 1 ja a n,b m > 0 ja n m, niin ensinnäkin voidaan päätellä, että n = m eli että esityksen pituus on yksikäsitteinen. Jos olisi n > m, niin olisi myös

11 LUKU 2. LUKUTEORIA. OSA 1 6 b m k m +b m 1 k m 1 + +b 1 k +b 0 (k 1)k m +(k 1)k m 1 + +(k 1)k +k 1 = k m+1 1 < k m+1 k n a n k n +a n 1 k n 1 + +a 1 k +a 0, mikä on ristiriita. Siispä n = m. Samalla tavoin voidaan todeta, että a n = b n. Jos nimittäin vaikkapaa n > b n, niin b n k n +b n 1 k n 1 + +b 1 k +b 0 (a n 1)k n +(k 1)k n 1 + +(k 1)k +k 1 = a n k n 1 < a n k n +a n 1 k n 1 + +a 1 k +a 0, mikä on taas ristiriita. Edelleen voidaan samalla tavoin näyttää, ettäa n 1 = b n 1 jne. Luvun 0 esitys on periaatteessa tyhjä jono missä tahansa kannassa. Koska tämä ei tietenkään käy, sovitaan, että 0:n esitys on 0. Konversio eri kantaesitysten välillä, ns. kantamuunnos eli radix-muunnos, on tietysti kokonaislukujen perustehtäviä. Lause 2.4. Positiivisen kokonaisluvunxk-kantaisen esityksen pituus on missälog k on k-kantainen logaritmi 3. log k x +1 = log k (x+1), Todistus. Josx:nk-kantainen esitys onx = a n k n +a n 1 k n 1 + +a 1 k+a 0, niin sen pituus on s = n+1. Ilmeisestix k n ja toisaalta x (k 1)k n +(k 1)k n 1 + +(k 1)k +k 1 = k n+1 1 < k n+1. Koska siisk s 1 x < k s, niins 1 log k x < s eli s = log k x +1. Toisaalta myösk s 1 < x+1 k s, jotens 1 < log k (x+1) s eli s = log k (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 molemmat luvut, merkitään d = syt(x,y). S.y.t. on olemassa, jos ainakin toinen luvuista x ja y on 0. Huomaa, että s.y.t. on positiivinen. (Usein määritellään kuitenkin syt(0, 0) = 0.) Jos syt(x, y) = 1, sanotaan että luvuilla x ja y ei ole yhteisiä tekijöitä tai että ne ovat keskenään jaottomia. 3 Muistathan, että logaritmien kannan vaihto sujuu kaavalla log k x = lnx/lnk. Tässä x tarkoittaa x:n ns. pohjaa, ts. suurinta kokonaislukua, joka on x. Vastaavasti x tarkoittaa x:n ns. kattoa eli pienintä kokonaislukua, joka on x.

12 LUKU 2. LUKUTEORIA. OSA 1 7 Lause 2.5. (Bézout n lause) Kokonaislukujen x ja y, joista ainakin toinen on 0, s.y.t. d voidaan kirjoittaa muotoon d = c 1 x+c 2 y (ns. Bézout n muoto), missä c 1 ja c 2 ovat kokonaislukuja, ns. Bézout n kertoimet. Lisäksi, jos x,y 0, voidaan olettaa, että c 1 y ja c 2 x. Todistus. Bézout n muodon samoin kuin s.y.t.:nkin antaa seuraava ns. (Yleistetty) Eukleideen algoritmi. Tässä oletetaan, että 0 x y, mikä ilmeisesti ei mitenkään rajoita tilannetta. MerkitäänSYT(x,y) = (d,c 1,c 2 ). (Yleistetty) Eukleideen algoritmi: 1. Jos x = 0, niin tulostetaan SYT(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,e 1,e 2 ). Silloin d = e 1 r +e 2 x = e 1 (y qx)+e 2 x = (e 2 e 1 q)x+e 1 y. TulostetaanSYT(x,y) = (d,e 2 e 1 q,e 1 ) ja lopetetaan. Koska r = y qx, syt(x, y) jakaa r:n ja näin ollen syt(x, y) syt(x, r). Vastaavasti syt(x, r) jakaa y:n ja siis syt(x,r) syt(x,y), joten syt(x,r) = syt(x,y). Kohta 2. tuottaa siis oikean tuloksen. Rekursio on päättyvä, koska min(r, x) < min(x, y), ts. aina kutsuttaessa SYT ko. minimiarvo pienenee ja on lopulta= 0. Jos x,y 0, niin ilmeisesti juuri ennen kuin rekursiossa tullaan kohtaan 1. on y = qx ja r = 0 ja d = x, jolloin c 1 = 1 y ja c 2 = 0 x. Toisaalta, aina kun kohdassa 2. y = qx + r ja d = e 1 r + e 2 x, missä e 1 x ja e 2 r, niin e 1 ja e 2 ovat erimerkkiset ja e 2 e 1 q = e 2 + e 1 q r+xq = y. Uudetkin kertoimetc 1 = e 2 e 2 q jac 2 = e 1 toteuttavat siis esitetyn ehdon. Suoraan Bézout n lauseesta näkee seuraavan tuloksen: Seuraus. Jos kokonaisluku z jakaa kokonaisluvut x ja y, joista ainakin toinen on 0, niin se jakaa myös syt(x,y):n. Huomautus. Tästä johtuen syt(x, y) määritelläänkin usein siten, että se on x:n ja y:n yhteinen tekijä, joka on jaollinen kaikilla näiden lukujen yhteisillä tekijöillä. Tämä johtaa samaan s.y.t.:n käsitteeseen. Vm. määritelmä soveltuu kuitenkin myös tilanteeseen x = y = 0 ja antaa em. kaavan syt(0, 0) = 0. Toinen seuraus Bézout n lauseesta on lukujen tekijöihinjaon yksikäsitteisyys, ks. Lause 2.2. Lause 2.6. Kokonaisluvun x 0 tekijöihinjako on yksikäsitteinen. Todistus. Asetetaan vastaoletus: On kokonaisluku x, jolla on (ainakin) kaksi eri tekijöihinjakoa. Voidaan olettaa, että x on positiivinen ja pienin sellainen positiivinen kokonaisluku, jolla on vastaoletuksessa mainittu ominaisuus. Ilmeisesti x 2, sillä ykkösen ainoa tekijöihinjako on tyhjä tulo. Nytxvoidaan oletettuja eri tekijöihinjakoja vastaten kirjoittaa tulomuotoihin x = p i 1 1 p i 2 2 p in n = qj 1 1 q j 2 2 q jm m,

13 LUKU 2. LUKUTEORIA. OSA 1 8 missä p 1,...,p n ovat eri alkulukuja ja samoin q 1,...,q m ovat eri alkulukuja ja i 1,...,i n sekä j 1,..., j m ovat positiivisia kokonaislukuja. Itse asiassa edelleen tiedetään, että silloin myös alkuluvut p 1,..., p n eroavat alkuluvuista q 1,...,q m. Jos nimittäin esimerkiksi p 1 = q 1, niin kokonaisluvulla x/p 1 olisi myös kaksi eri tekijöihinjakoa ja se on pienempi kuin x. Ilmeisesti syt(p 1,q 1 ) = 1, joten Bézout n muodossa Mutta tästä seuraa, että 1 = c 1 p 1 +c 2 q 1. q j q j 2 2 qjm m = (c 1p 1 +c 2 q 1 )q j q j 2 2 qjm m = c 1p 1 q j q j 2 2 qjm m +c 2x, josta havaitaan, ettäp 1 jakaa tulonq j q j 2 2 qjm m, ts. q j q j 2 2 qjm m = p 1z. Koska z:lla ja q j q j 2 2 q jm m :llä on yksikäsitteiset tekijöihinjaot (ne ovat pienempiä kuin x), seuraa tästä, ettäp 1 on jokin alkuluvuistaq 1,...,q m, 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 on supistetussa muodossa. Tämä on erityisen tärkeää suurilla luvuilla laskettaessa, jotta x ja y eivät pääsisi kasvamaan suuriksi. Supistettu muoto saadaan luonnollisesti jakamallaxja 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 c 1 y ja c 2 x ovat voimassa eo. Eukleideen algoritmin joka vaiheessa. Välitulokset eivät näin kasva suuriksi. Toisaalta Eukleideen algoritmi ei ota kovin monta askeltakaan: Lause 2.7. Laskettaessa syt(x, y), missä 0 x y, Eukleideen algoritmi tarvitsee enintään 2log 2 y +1 jakolaskua. Todistus. Asia on selvä, jos x = 0 (ei jakolaskuja) tai x = y (yksi jakolasku), joten voidaan siirtyä tapaukseen 0 < x < y. Todistus perustuu seuraavaan jakolaskua koskevaan havaintoon: Aina jaettaessa kokonaisluvut a ja b, missä 0 < a < b, muodossa b = qa + r (osamäärä q, jakojäännösr), on b = qa+r a+r > 2r. Laskettaessa syt(x, y):tä Eukleideen algoritmin jakoketjussa y = q 1 x+r 1 (0 < r 1 < x), x = q 2 r 1 +r 2 (0 < r 2 < r 1 ), r 1 = q 3 r 2 +r 3 (0 < r 3 < r 2 ),. r l 2 = q l r l 1 +r l (0 < r l < r l 1 ), r l 1 = q l+1 r l on l + 1 jakolaskua. Jos l = 2k + 1 on pariton, on mainitun havainnon mukaan 1 r l < 2 1 r l 2 < 2 2 r l 4 < < 2 i r l 2i < < 2 k r 1 < 2 k 1 y = 2 l+1 2 y < 2 l 2 y, ja josl = 2k on parillinen, 1 r l < 2 1 r l 2 < 2 2 r l 4 < < 2 k+1 r 2 < 2 k x < 2 l 2 y. Siisy > 2 l 2 eli (otetaan2-kantaiset logaritmit)2log 2 y > l, mistä tulos jo seuraakin.

14 LUKU 2. LUKUTEORIA. OSA 1 9 Eukleideen algoritmin soveltaminen ei näin ole kovin työlästä, 2log 2 y+1 on verrannollinen y:n binääriesityksen pituuteen (Lause 2.4). Tarkemmin Eukleideen algoritmin laskennallista vaativuutta käsittelee esimerkiksi KNUTH. Useamman kuin kahden kokonaisluvunx 1,x 2,...,x N suurin yhteinen tekijä d = syt(x 1,x 2,...,x N ) määritellään samoin kuin kahdenkin, eli se on suurin kokonaisluku, joka jakaa kaikki luvut x 1,x 2,...,x N. Jälleen vaaditaan, että ainakin yksi luvuista on 0, voidaan sopia, ettäx N 0. Tällainen s.y.t. voidaan laskea soveltamallan 1kertaa Eukleideen algoritmia, sillä Lause 2.8. syt(x 1,x 2,...,x N ) = syt(x 1,syt(x 2,...,x N )) ja lisäksi s.y.t. voidaan kirjoittaa Bézout n muodossa Todistus. Merkitään lyhyyden vuoksi = syt(x 1,syt(x 2,syt(x 3,...,syt(x N 1,x N ) ))) syt(x 1,x 2,...,x N ) = c 1 x 1 +c 2 x 2 + +c N x N. d = syt(x 1,x 2,...,x N ) ja d = syt(x 1,syt(x 2,syt(x 3,...,syt(x N 1,x N ) ))). Bézout n lauseen nojalla ja edelleen syt(x N 1,x N ) = e 1 x N 1 +e 2 x N syt(x N 2,syt(x N 1,x N )) = e 3 x N 2 +e 4 syt(x N 1,x N ) = e 3 x N 2 +e 4 e 1 x N 1 +e 4 e 2 x N jne., eli lopulta nähdään, että joillekin kokonaisluvuillec 1,...,c N d = c 1 x 1 +c 2 x 2 + +c N x N. Tästä seuraa, ettäd d ja siisd d. Toisaaltad jakaax 1 :n ja s.y.t.:n syt(x 2,syt(x 3,...,syt(x N 1,x N ) )). Viimemainittu s.y.t. jakaa x 2 :n ja s.y.t.:n syt(x 3,...,syt(x N 1,x N ) ). Jne. Siispä d jakaa kaikki luvutx 1,x 2,...,x N ja näin ollend d. Kaiken kaikkiaan päätellään, ettäd = d. Jos luvutx 1,x 2,...,x N ovat 0 ja niiden tekijöihinjaot ovat x i = ±p j i1 1 p j i2 2 p j im M (i = 1,2,...,N), missä sovitaan, ettäj ik = 0, mikäli alkulukup k ei olex i :n tekijä, niin ilmeisesti syt(x 1,x 2,...,x N ) = p min(j 11,...,j N1 ) 1 p min(j 12,...,j N2 ) 2 p min(j 1M,...,j NM ) M. Vaikeus tämän tuloksen käytössä on se, ettei tekijöihinjakoja yleisesti tunneta ja niiden etsiminen taas on työlästä. Kokonaislukujen x 1,x 2,...,x N pienin yhteinen jaettava (p.y.j.) on pienin positiivinen kokonaisluku, jonka kaikki luvutx 1,x 2,...,x N jakavat, merkitäänpyj(x 1,x 2,...,x N ). Jotta p.y.j. olisi olemassa, pitää olla x 1,x 2,...,x N 0. Ajatellen edellä olleita tekijöihinjakoja on ilmeisesti pyj(x 1,x 2,...,x N ) = p max(j 11,...,j N1 ) 1 p max(j 12,...,j N2 ) 2 p max(j 1M,...,j NM ) M. Myös p.y.j. saadaan rekursiivisesti Eukleideen algoritmilla ilman tietoa tekijöistä, sillä

15 LUKU 2. LUKUTEORIA. OSA 1 10 Lause 2.9. pyj(x 1,x 2,...,x N ) = pyj(x 1,pyj(x 2,...,x N )) ja = pyj(x 1,pyj(x 2,pyj(x 3,...,pyj(x N 1,x N ) ))) pyj(x 1,x 2 ) = x 1x 2 syt(x 1,x 2 ). Todistus. Lauseen ensimmäinen kaava seuraa tekijöihinjakokaavasta, sillä p k :n eksponentti pyj(x 1,pyj(x 2,...,x N )):ssä on max(j 1k,max(j 2k,...,j Nk )) ja toisaalta max(j 1k,max(j 2k,...,j Nk )) = max(j 1k,j 2k,...,j Nk ) (k = 1,2,...,M). Samoin toinen kaava seuraa tekijöihinjakokaavasta, sillä alkutekijänp k eksponenttix 1 x 2 :ssa on j 1k +j 2k ja toisaalta max(j 1k,j 2k ) = j 1k +j 2k min(j 1k,j 2k ). Huomautus. Tekijöihinjakokaavasta näkee, että myös useamman luvun s.y.t. on se näiden lukujen (positiivinen) yhteinen tekijä, jonka kaikki muut yhteiset tekijät jakavat, ja tätä käytetään usein 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ääritelmänä. Näiden vaihtoehtoisten määritelmien nojalla kirjoitetaan usein syt(0, 0,..., 0) = 0 ja myös pyj(0,x 2,...,x n ) = Kongruenssilaskenta eli modulaarilaskenta Kongruenssilaskennan idea on, että lasketaan vain kokonaislukujen jakojäännöksillä käyttäen (yhtä tai useampaa) kiinteää jakajaa, ns. modulia m 1. Kongruenssilaskentaa kutsutaan usein myös modulaarilaskennaksi. Sanotaan, että kokonaisluvutxjay ovat kongruentit 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äxjay ovat epäkongruentit modulo m ja merkitään x y mod m. Huomaa erityisesti, että x 0 mod m tarkalleen silloin, kunxon jaollinenm:llä, ja että kaikki luvut ovat keskenään kongruentteja modulo1. Kongruenssi x y mod m sanoo, että jaettaessa x ja y modulilla m saadaan sama (jako)jäännös, ts. x ja y kuuluvat samaan (jako)jäännösluokkaan modulo m. Jokainen kokonaisluku kuuluu aina johonkin jäännösluokkaan modulo m ja vain yhteen sellaiseen. Jäännösluokkia modulom on yhtä paljon kuin eri jakojäännöksiä eli m kpl. Ilmeisesti aina x 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 jay 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 (i) Josx y mod m jau v mod m, niinx+u y +v mod m. (ii) Joscon kokonaisluku ja x y mod m, niincx cy mod m.

16 LUKU 2. LUKUTEORIA. OSA 1 11 (iii) Josx y mod m ja u v mod m, niinxu yv mod m. (iv) Josx y mod m ja n on positiivinen kokonaisluku, niinx n y n mod m. Todistus. (i) Josx y = km jau v = lm, niin(x+u) (y +v) = (k +l)m. (ii) Josx y = km, niincx 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 puolittain eivät kuitenkaan yleisesti ole sallittuja (asiaan palataan kohta). Jos ajatellaan jakojäännöksiä, voidaan laskea millä tahansa kokonaisluvuilla, joilla modulilla jaettaessa on kyseiset jakojäännökset, ja tulokset ovat samat, ts. edustajien valinnasta riippumattomat. Tietyt edustajajoukot, ns. jäännössysteemit, ovat kuitenkin usein esillä: positiivinen jäännössysteemi 0, 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ä tahansa m kokonaislukua, joista mitkään eivät ole keskenään kongruentteja modulo m, muodostavat jäännössysteemin modulo m. Luvun x jäännöstä modulo m nimenomaan positiivisessa jäännössysteemissä eli jakojäännöstä jaettaessaxmodulillam merkitään jatkossa(x,mod m):llä. Jakolasku eli supistus puolittain ei yleisesti ole sallittua kongruensseissa, vaan vain seuraavassa mielessä: Lause xu yu mod m on sama kuin kuin x y mod m/syt(u,m), eli kongruenssista saa supistaa pois kokonaisluvun, mikäli samalla jakaa modulin sen ja supistettavan luvun s.y.t.:llä. (Huomaa erityisesti, että josmon u: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ään d = syt(u,m) ja u = du sekä m = dm. Silloin ilmeisesti syt(u,m ) = 1 ja m = m/syt(u,m) ja vielä(x y)u = km. Bézout n lauseen mukaan 1 = c 1 u +c 2 m, josta seuraa että x y = c 1 u (x y)+c 2 m (x y) = (c 1 k +c 2 (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 pois kongruenssista moduliin koskematta. Seuraus. Jossyt(x,m) = 1, niin luvuty+kx (k = 0,1,...,m 1) muodostavat jäännössysteemin modulom, olipay mikä tahansa kokonaisluku. Todistus. Lukuja onmkpl. Josy+ix y+jx mod m, missä0 i,j m 1, niinix jx mod 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 elii = j. Luvut eivät siis ole kongruentteja keskenään.

17 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 inverssi modulom, ts. on sellainen kokonaislukuy, että xy 1 mod m. Tällöin kirjoitetaan myös x 1 y mod m tai 1/x y mod m. 4 Tällainen inverssi saadaan Eukleideen algoritmilla, sillä Bézout n lauseen nojalla1 = c 1 x+c 2 m ja näinx 1 c 1 mod m. Toisaalta, jos syt(x,m) 1, ei x:llä voi olla inverssiä modulo m, kuten helposti voi havaita. Huomaa vielä, että jos x 1 y mod m, niin y 1 x mod m eli (x 1 ) 1 x mod m. Inverssit modulo m (jos olemassa) tottelevat tavallisia potenssilaskusääntöjä. Esimerkiksi (xy) 1 x 1 y 1 mod m ja x n (x 1 ) n (x n ) 1 mod m (n = 1,2... ). Sellaiset jäännössysteemin luvut x, joille syt(x, m) = 1, muodostavat ns. supistetun jäännössysteemin. Vastaavia jäännösluokkia kutsutaan alkuluokiksi modulo m. Helposti voidaan todeta, että jos x y mod m, niin syt(x,m) = syt(y,m). Supistetuissa jäännössysteemeissä on näin aina yhtä monta lukua ja kahden supistetun jäännössysteemin luvut ovat jossain järjestyksessä pareittain kongruentit modulo m. Supistetun jäännössysteemin modulo m lukujen lukumäärää kutsutaan Eulerin (totientti)funktioksi, merkitään φ(m). Se tarvitaan mm. RSA-kryptauksessa. Tavallisin on jälleen positiivisesta jäännössysteemistä muodostettu supistettu jäännössysteemi. Huomaa erityisesti, että jospon alkuluku, niin1,2,...,p 1 muodostaa supistetun jäännössysteemin modulo p ja φ(p) = p Jäännösluokkarenkaat ja alkukunnat Kokonaisluvut jakautuvatmjäännösluokkaan sen mukaan minkä luvuni = 0,...,m 1 kanssa ne ovat kongruentteja modulo m. Luokkaa, johon kokonaisluku x kuuluu merkitään x:lla. Huomaa, että silloin x = x + km, olipa k mikä tahansa kokonaisluku. Jäännösluokille voidaan määritellä peruslaskutoimitukset edustajien välityksellä, ts. x±y = x±y, x y = x y ja x n = x n (n = 0,1,... ). Laskutoimituksen tulos ei riipu edustajan valinnasta, kuten on helppo todeta. Kokonaislukujen laskujen ominaisuudet siirtyvät jäännösluokille: (1) + ja ovat liitännäiset sekä vaihdannaiset. (2) Osittelulait pätevät. (3) Jokaisella luokallaaon vastaluokka a, ts. sellainen luokka a, että a+( a) = 0. Jos a = x, niin tietysti a = x. (5) 0 ja1 käyttäytyvät kuten pitää, ts.a+0 = a jaa 1 = a. Lisäksi vielä0 1, josm > 1. 4 Tätä inverssiä ei saa sekoittaa rationaalilukuun1/x.

18 LUKU 2. LUKUTEORIA. OSA 1 13 Algebrallisesti jäännösluokat modulo m muodostavat ns. renkaan, ks. Luku 4 ja kurssi Algebra 1 tai Symbolinen laskenta, ns. jäännösluokkarenkaan modulo m, merkitään Z m. Näistä Z 1 on harvinaisen mielenkiinnoton (eivätkä sitä kaikki pidä renkaanakaan). Jos syt(x,m) = 1, niin jäännösluokalla x, on myös käänteisluokka x 1, jolle x x 1 = 1. Luonnollisesti, jos x 1 y mod m, niin x 1 = y. Jos taas syt(x,m) 1, niin tällaista käänteisluokkaa ei ole. Näin ollen kaikilla muilla jäännösluokilla kuin 0:lla on käänteisluokka tarkalleen siinä tapauksessa, että modulimon alkuluku. Tällöin jäännösluokkarengasta kutsutaan alkukunnaksi. Alkukunnissa on näin ollen käytössä myös jakolasku, ts. kertominen käänteisluokalla. Pienin ja usein esiintyvä alkukunta on binäärikunta Z 2, jonka alkiot ovat bitit 0 ja 1 (kirjoitetaan useimmiten ilman yläviivoja:0 ja1). Jäännösluokkarenkaiden matriisien ja vektoreiden laskutoimitukset voidaan siirtää luonnollisella tavalla jäännösluokista muodostettujen vektorien ja matriisien laskutoimituksiksi. Käyttöön tulevat näin peruskursseilta tutut matriisien yhteenlasku-, vähennyslasku-, kertomis- ja potenssiinkorotusoperaatiot sekä transponointi. Samoin neliömatriisien determinantit noudattavat tuttuja laskusääntöjä. Aivan samoin kuin peruskursseilla todetaan se, että neliömatriisilla on käänteismatriisi, jos sen determinantilla (joka on Z m :n jäännösluokka) on käänteisluokka. Huomaa, ettei riitä, että determinantti on 0, sillä Cramerin sääntöä käyttäen käänteismatriisia muodostettaessa tarvitaan jakolasku determinantilla modulo m. Alkukunnissa sen sijaan tietysti riittää, että determinantti on Suurten kokonaislukujen peruslaskutoimitukset Moderneissa kryptosysteemeissä toiminta perustuu paljolti suurille kokonaisluvuille tehtäville laskutoimituksille. Niiden on oltava suoritettavissa nopeasti ja tehokkaasti. Algoritmien tehokkuutta verrataan usein niihin tarvittavien perusaskelten lukumäärällä verrattuna syötelukujen maksimipituuteen N. Perusaskel voisi olla esimerkiksi numeraalien 0, 1,..., 9 yhteen-, vähennys- tai kertolasku. Yleisin tällainen vertailunotaatio on ns. O-notaatio. SilloinO(f(N)) tarkoittaa kollektiivisesti sellaista funktiotag(n), että jostain rajastan N 0 lähtien g(n) Cf(N), missä C on jokin vakio. Varsinaista laskennallista vaativuutta käsitellään laajemmin Pykälässä 6.1. Tarvittaessa pyöristykseen käytetään tavanomaisia funktioita x (x:n pohja eli suurin kokonaisluku, 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 ohjelmoitaviksi. N- ja M-pituisten lukujen yhteen- ja vähennyslasku vaativat O(max(N, M)) askelta, kuten on helppo todeta. Kertolasku Tavallinen koulussa opittu kertolasku on sopiva tietokoneellekin, mutta se ei ole likellekään nopein mahdollinen. N- ja M-pituisten lukujen kertolasku vaatii tällä tavoin noin O(NM) askelta, mikä voi olla paljon. Karatsuban algoritmi on nopeampi kuin perinteinen algoritmi. Algoritmi on eräänlainen hajoita ja hallitse -menetelmä. Positiivisten lukujen n ja m kertomiseksi desimaaliesityksessä kirjoitetaan ne ensin muotoon n = a10 k +b ja m = c10 k +d,

19 LUKU 2. LUKUTEORIA. OSA 1 14 missäa,b,c,d < 10 k ja lukujen maksimipituus on 2k tai 2k 1. Toinen luvuistaa jacvoi olla nolla, mutta eivät molemmat. Ts. kirjoitetaan ainakin toinen luvuista10 k -kantaisessa esityksessä. Silloin nm = (a10 k +b)(c10 k +d) = y10 2k +(x y z)10 k +z, missä x = (a+b)(c+d), y = ac ja z = bd, ts. tarvitaankin vain kolme erillistä pitkää kokonaislukujen kertolaskua (eikä neljä kuten äkkinäisempi luulisi). Kun nämä kolme kertolaskua (a+b)(c+d), ac ja bd edelleen suoritetaan samalla tavoin jakamalla kertolaskut kolmeen lyhyempään kertolaskuun jne., jolloin lopulta päädytään kertotaulun käyttöön, saadaan varsinainen Karatsuban algoritmi (merkitään TULO(n, m) = nm): Karatsuban kertoalgoritmi: 1. Josn = 0 tai m = 0, tulostetaan0ja lopetetaan. 2. Palautetaan tilanne sellaiseen, jossa kertoja ja kerrottava ovat positiivisia: (2.1) Jos n < 0 ja m > 0 tai n > 0 ja m < 0, lasketaan t = TULO( n, m ), tulostetaan t ja lopetetaan. (2.2) Jos n < 0 ja m < 0, lasketaan t = TULO( n, m), tulostetaan se ja lopetetaan. 3. Jos n, m < 10, katsotaan TULO(n, m) taulukosta ja lopetetaan. 4. Jos n 10 tai m 10, kirjoitetaan n ja m muotoon n = a10 k + b ja m = c10 k + d, missäa,b,c,d < 10 k, kuten yllä. Desimaaliesityksessä tämä on helppoa. 5. Lasketaan TULO(a+b, c+d), TULO(a, c) ja TULO(b, d), tulostetaan (helposti saatava) ja lopetetaan. TULO(n,m) = 10 2k TULO(a,c)+10 k (TULO(a+b,c+d) TULO(a,c) TULO(b,d))+TULO(b,d) Menettely pysähtyy, sillä kerrottavien lukujen maksimipituus pienenee noin puoleen joka kierroksella. Jos kerrotaan Karatsuban algoritmilla kaksi N-pituista lukua ja merkitään K(N):llä tarvittavien numeraaleja 0, 1,..., 9 koskevien peruslaskutoimitusten yläarviota, niin ilmeisestikin eräs K(N) saadaan seuraavasta rekursiokaavasta { αn +3K(N/2), josn on parillinen K(N) =, K(1) = 1, αn +3K((N +1)/2), josn on pariton missä kerroin α saadaan tarvittavien yhteen- ja vähennyslaskujen määrästä, käytetystä algoritmista riippuen. Tietyn arvion tarvittavien perusoperaatioiden määrästä antaa Lause Jos N = 2 l, niink(n) = (2α+1)3 l α2 l+1 = (2α+1)N log 2 3 2αN.

20 LUKU 2. LUKUTEORIA. OSA 1 15 Todistus. Ilmeisesti arvo on oikea, kun N = 1. Jos arvo pätee, kun N = 2 l, se pätee myös kun N = 2 l+1, sillä K(2 l+1 ) = α2 l+1 +3K(2 l ) = α2 l+1 +3(2α+1)3 l 3α2 l+1 = (2α+1)3 l+1 α2 l+2. Luonnollisesti lauseesta suurelle pituudellen saatava perusoperaatioiden enimmäismäärä (2α+1)N log 2 3 2αN = O(N log 2 3 ) = O(N ) on tuntuvasti pienempi kuin O(N 2 ). Esimerkiksi jos N = 2 12 = 4096, niin N 2 /N log 2 3 = 32. Karatsuban menetelmästä on vieläkin nopeampia versioita, joissa kertolasku jaetaan useampaan kuin kahteen osaan, ks. esimerkiksi MIGNOTTE. Nopeimmat kertolaskualgoritmit perustuvat ns. nopean Fourier n muunnoksen (FFT) käyttöön, ks. esimerkiksi LIPSON tai CRANDALL & POMERANCE. Tällöin perusoperaatioiden lukumää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ä oleva arvausvaihe on jonkin verran hankala toteuttaa tehokkaasti, jos kantaluku on iso, ks. KNUTH. Perusoperaatioiden lukumäärä on O(N 2 ), missä on N on jaettavan pituus. Myös Karatsuban algoritmin tapainen jakolaskualgoritmi on mahdollinen ja hyvin nopea. 5 Peruskursseilta tuttuun Newtonin menetelmään pohjautuva jakolasku on varsin tehokas. Oletetaan aluksi, että sekä jakaja m että jaettava n ovat positiivisia ja merkitään jaettavan pituutta N:llä ja jakajan pituutta M:llä. Koska tapaukset N < M ja N = M ovat helppoja, oletetaan, ettän > M. Merkitään jakolaskunn = qm+r (osamääräq ja jakojäännösr) tulosta seuraavasti: JAKO(n, m) = (q, r). Huomaa, että silloin q = n/m. Lähdetään liikkeelle etsimällä ensin jakajan inverssi. Funktion f(x) = m 1/x nollakohdan eli 1/m:n etsimiseksi saadaan Newtonin iteraatio x i+1 = x i f(x i) f (x i ) = 2x i mx 2 i. Käytännössä, jotta voitaisiin käyttää pelkästään kokonaislukujen kertolaskua, lasketaan kuitenkin l = 10 N /m, eli funktion g(x) = m 10 N /x nollakohta, jolle saataisiin vastaavasti tarkka Newtonin iteraatio x i+1 = 2x i mx2 i 10 = 2x N i x2 i l. Jotta pysyttäisiin puhtaasti kokonaisluvuissa, otetaan käyttöön tämän kokonaisluvuiksi pyöristetty versio m y 2 y i+1 = 2y i i. 10 M 10 N M Esiintyvät 10: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ä ja siitä sitten jakojäännös. Seuraavat ominaisuudet on helppo todeta: 2y m10 M y 2 10 M N 2y y 2 /l, ts. kokonaisluvuksi pyöristys ei vähennä iteraatioarvoja. 5 Tällaisia on kuvattu esimerkiksi kirjassa MIGNOTTE ja monisteessa RUOHONEN, K.: Kryptologia sekä hyvin analysoituna raportissa BURNIKEL, C. & ZIEGLER, J.: Fast Recursive Division. Max Planck Institut für Informatik. Forschungsbericht MPI-I (1998).

21 LUKU 2. LUKUTEORIA. OSA 1 16 Jos x l, niin 2x x 2 /l < l. Tarkka iteraatio siis lähestyy l:ää alapuolelta. Koska m/10 M < 1, pyöristetylle iteraatiolle saadaan vastaavasti ( ) m y 2 m y 2 1 2y 2y 1 2y 10 M 10 N M 10 M 10N M l y2 1 ( ) 1 < 2y l y2 2 l+2. Jos x < l, niin 2x x 2 /l > x. Tarkka iteraatio on siis aidosti kasvava niin kauan kun arvot ovat< l. Sama pätee myös pyöristetylle iteraatiolle. Merkitään l = y i +ǫ i, missä ǫ i on virhe. Newtonin menetelmät ovat kvadraattisia, ts. ne kaksinkertaistavat oikeiden numeroiden määrän joka askeleella, niin tässäkin: Josy i < l, niin ǫ i = l y i l 2y i l y2 i 1 = 1 l ǫ2 i 1. Toistamalla tätä ja huomaamalla, ettäl > 10 N M, saadaan (jälleen olettaen, ettäy i < l) ǫ i 1 l ǫ2 i 1 1 l ( ) 2 1 l ǫ2 i 2 l ( i 1) ǫ 2i 0 = ǫ l1 2i 2i 0 < )(N M) ǫ 10(1 2i 2i 0. Nyt vaaditaan, että10 (1 2i)(N M) ǫ 2i 0 1. Olettaen, että ǫ 0 < 10 N M, tämä on sama kuin N M i log 2 N M log 10 ǫ 0 (totea!). Valitaan 10 y 0 = 10 N M M m tai y 0 = 10 N M 10 M m, kumpi pohja vaiko katto nyt sitten on lähempänä lukua 10 M /m, jolloin ǫ 0 10 N M /2. Näin ollen riittää valita iteraatioiden lukumääräksi N M I = log 2 = log log (N M) log 2 (log 10 2). Kokonaisluvuiksi pyöristetty iteraatio tuottaa aidosti kasvavan jonon kokonaislukuja, kunnes saadaan välillä [l,l + 2) oleva arvo. Silloin voidaan pysähtyä ja tarkistaa onko saatu arvo vaiko jokin edeltävä arvo oikea l. Menettely kokonaisuudessaan on seuraava (tulostus on JAKO(n,m)): Jakolasku Newtonin menetelmällä: 1. Jos n = 0, tulostetaan(0, 0) ja lopetetaan. 2. Jos m = 1, tulostetaan(n, 0) ja lopetetaan. 3. Jos m < 0, lasketaan JAKO(n, m) = (q, r), tulostetaan( q, r) ja lopetetaan.

22 LUKU 2. LUKUTEORIA. OSA Josn < 0, lasketaanjako( n,m) = (q,r), tulostetaan( q 1,m r), josr > 0, tai ( q,0), jos r = 0, ja lopetetaan. 5. Asetetaan N jaettavan n pituus ja M jakajan m pituus. 6. JosN < M tulostetaan(0,n) lopetetaan. 7. Jos N = M, lasketaan osamäärä q. Tämä on helppoa, sillä nyt 0 q 9. (Vaikka kokeilemalla, ellei muuten.) Tulostetaan(q, n mq) ja lopetetaan. 8. Jos N > M, lasketaan 10 M /m. Jälleen tämä on helppoa, sillä 1 10 M /m 10. (Kokeilemalla tai muuten.) 9. Jos 10 M /m 10 M /m 1/2 eli 2 10 M 2m 10 M /m m, asetetaan y 0 10 N M 10 M /m. Muuten asetetaan y 0 10 N M ( 10 M /m + 1). Huomaa, että jälkimmäisessä tapauksessay 0 > l ja iteraatioita on suoritettava vähintään yksi. 10. Toistetaan rekursiokaavaa m y i+1 = 2y i 10 M y 2 i 10 N M lähtien arvostay 0 kunnes i 1 jay i+1 y i. 11. Testataan kertolaskulla mikä luvuistay i,y i 1,... on oikea l ja asetetaan k l. 12. Asetetaan t nk/10 N (oleellisesti kertolasku) ja testataan lisäkertolaskulla kumpi luvuista t vai t + 1 on oikea osamäärä q jakolaskussa JAKO(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, jos JAKO(10 N,m) = (k,r ), niinr < m ja nk 10 = (qm+r)(10n r ) N m10 N = q qr 10 N + r(10n r ) m10 N. Keskimmäinen termi on välillä( 1,0] ja viimeinen välillä[0,1). Näin ollenq on jokottait+1. Koska maksimi-iteraatiomäärä I on hyvin pieni luokkaa jaettavan pituuden N ja jakajan pituuden M erotuksen logaritmi ja iteraation aikana suoritetaan aina kolme kertolaskua ja yksi vähennyslasku enintään 2M-pituisille kokonaisluvuille, joista vielä osa on vakioita, jakolasku ei ole 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 Luvunapotenssiin korotusa n peräkkäisillä kertomisilla on liian aikaaviepää, sillä siihen tarvitaan n 1 kertolaskua, kun itse asiassa enintään 2 log 2 n kertolaskuakin riittää:

23 LUKU 2. LUKUTEORIA. OSA 1 18 Venäläisten talonpoikien menetelmä: 1. Jos n = 0, tulostetaan potenssi 1 ja lopetetaan. 2. Josn < 0, asetetaan a a 1 sekän n. 3. Jos n 1, muodostetaan n:n binääriesitys b j b j 1 b 0, missä j = log 2 n (n:n pituus binäärilukuna miinus yksi, ks. Lause 2.4). 4. Asetetaan i 0 sekäx 1 jay a. 5. Josi = j, niin tulostetaan potenssixy ja lopetetaan. 6. Josi < j ja 6.1 b i = 0, niin asetetaan y y 2 sekäi i+1 ja mennään kohtaan b i = 1, niin asetetaan x xy jay y 2 sekäi i+1 ja mennään kohtaan 5. Algoritmin toimivuus seuraa välittömästi binääriesityksestä: ja n = b j 2 j +b j 1 2 j 1 + +b 1 2+b 0 a n = a b j2 j a b j 12 j 1 a b 12 a b 0. Käytännössä lienee mukavaa laskea n:n binääriesitystä sitä mukaa, kun sitä tarvitaan, eikä kerralla alussa. Itse asiassa tämä menettely toimii kaikenlaisille potensseille ja myös silloin, kun kertolasku ei ole vaihdannainen, siis esimerkiksi polynomien tai matriisien potenssiinkorotuksessa. Laskettaessa potensseja modulo m pitää tulot tietysti redusoida koko ajan (positiiviseen) jäännössysteemiin modulom, jotteivat välitulokset kasvaisi suuriksi. Näin voidaan laskea nopeasti hyvinkin korkeita modulaarisiä potensseja. Nimi muuten tulee siitä, että venäläiset talonpojat käyttivät helmitaululla laskiessaan tätä menetelmää kertolaskuun, onhan a n tulkittavissa a:n n:nneksi potenssiksi yhteenlaskun suhteen. Algoritmi on ilmeisesti hyvin vanha. Kokonaisjuuri Ei-negatiivisen kokonaisluvunnl:s kokonaisjuuri 6 on n 1/l. Tavallisin näistä on tietysti kokonaisneliöjuuri (l = 2). Merkitään N:llän:n pituutta binääriesityksessä. Kokonaisjuuren laskemiseen käy samantapainen Newtonin menetelmä kuin jakolaskulle. 7 Funktionx l nnollakohdan elin 1/l :n laskemiseksi saadaan Newtonin iteraatio x i+1 = l 1 l x i + n lx l 1 i Mutta koska halutaan laskea kokonaisluvuilla, otetaankin käyttöön kokonaisluvuiksi pyöristetty iteraatio ( ) 1 n y i+1 = (l 1)y i + l yi l 1 ja käytetään kokonaislukujen yhteen-, kerto- ja jakolaskua. Seuraavat ominaisuudet on helppo todeta (tarvittaessa ääriarvotarkasteluin): 6 Joissain teksteissä se on n 1/l, joissain taasn 1/l kokonaisluvuksi pyöristettynä. 7 Myös aikoinaan koulussakin opittu menetelmä neliöjuuren laskemiseksi kynällä ja paperilla on samantapainen kuin pitkäjako..

24 LUKU 2. LUKUTEORIA. OSA 1 19 ( ) 1 n (l 1)y + l y l 1 iteraatioarvoja. l 1 l y + n, kokonaisluvuksi pyöristys ei siis kasvata lyl 1 Josx n 1/l jax > 0, niin l 1 x+ n l lx > l 1 n1/l. Tarkka iteraatio siis lähestyy juurta yläpuolelta. Pyöristetylle versiolle saadaan vastaavasti ( ) ( 1 n 1 (l 1)y + (l 1)y + n ) 1 l y l 1 l yl 1 > l 1 y + n l ly 2 l 1 n1/l 2. Josx > n 1/l, niin l 1 x+ n < x. l lxl 1 Tarkka iteraatio on siis aidosti vähenevä. Sama pätee myös pyöristetylle versiolle. Merkitään n 1/l = y i ǫ i ja valitaan lähtöarvoksi y 0 = 2 N/l. Tämä voidaan laskea nopeasti venäläisten talonpoikien algoritmilla. Koskan < 2 N, on y 0 > n 1/l. Arvioidaan ensin tästä saatu ǫ 0 : ǫ 0 = y 0 n 1/l = 2 N/l n 1/l 2 N/l+1 1/l n 1/l = 2 2 (N 1)/l n 1/l n 1/l. Tämäkin Newtonin menetelmä on kvadraattinen. Todetaan asia vain, kun l = 2. (Yleinen tapaus on mutkikkaampi, mutta samantapainen.) Josy i 1,y i > n 1/l, niin ( ) 0 < ǫ i = y i n 1/l l 1 y i 1 + n n 1/l = 1 y l ly l 1 i 1 2 i 1 ly + n ln 1/l y i 1 y l 2 i 1 i 1 < 1 ( y 2 ln 1/l i 1 + n ) n (l 2)/l 2n1/l y i 1 = 1 ln 1/l(y i 1 n 1/l ) 2 = 1 ln i 1. 1/lǫ2 Tätä arviota toistamalla saadaan (kun merkitään lyhyyden vuoksia = 1 ln 1/l ) ǫ i < aǫ 2 i 1 < a a2 ǫ 22 i 2 < < a i 1 ǫ 2i 0 = a 2i 1 ǫ 2i 0 = a 1 (aǫ 0 ) 2i = ln 1/l ( ǫ0 ln 1/l ) 2i n 1/l l 1 2i. Jos nyt halutaan, että ǫ i < 1, niin riittää ottaa n 1/l l 1 2i 1 eli (totea!) iteraatioita tarvitaan enintään ( I = log 2 1+ log ) 2n. llog 2 l Näin ollen log 2 N:ään verrannollinen määrä iteraatioaskelia riittää, mikä on hyvin vähän. Kokonaisjuuren laskeminen on näin ollen oleellisesti yhtä vaativaa kuin jakolasku. Huomautus. Koska jo n 1/log 2 n = 2, vain enintään n:n pituuden suuruusluokkaa olevat l:n arvot ovat kiinnostavia, muista selvitään pienellä kokeilulla.

25 LUKU 2. LUKUTEORIA. OSA 1 20 Kokonaisluvuiksi pyöristetty iteraatio tuottaa aidosti vähenevän jonon kokonaislukuja, kunnes saadaan välillä(n 1/l 2,n 1/l ] oleva arvo. Newtonin menetelmä l:nnen kokonaisjuuren laskemiseksi: 1. Josn = 0 tai n = 1, tulostetaann ja lopetetaan. 2. Asetetaan y 0 2 N/l, missän onn:n pituus binääriesityksessä. 3. Toistetaan iteraatiota ( ) 1 n y i+1 = (l 1)y i + l y l 1 i lähtien arvostay 0 kunnes y i+1 y i. 4. Testataan mikä luvuista y i,y i + 1,... on oikea kokonaisjuuri n 1/l, tulostetaan se ja lopetetaan. Satunnaisluvun generointi Satunnaisbittijonoja generoidaan yleisesti käyttäen p:nnen kertaluvun siirtorekisteriä 8 modulo 2: r i a 1 r i 1 +a 2 r i 2 + +a p r i p mod 2, missä a 1,a 2,...,a p ovat vakiobittejä (0 tai 1, a p = 1). Aluksi tarvitaan tietysti siemenbitit r 0,r 1,...,r p 1. Tässä lasketaan koko ajan positiivisessa jäännössysteemissä modulo 2 eli biteillä. Saatava jono r p,r p+1,... ei tietenkään oikeasti ole mitenkään satunnainen, saadaanhan se täysin deterministisellä menettelyllä ja on periodinen (periodin pituus enintään2 p ). Kun valitaan kertoimet a 1,a 2,...,a p 1 sopivasti, saadaan jono kuitenkin käyttäytymään monessa mielessä satunnaisesti, periodi on pitkä jne., ks. esimerkiksi KNUTH. Yksinkertaisimmillaan melkein kaikki kertoimet ovat nollia. Tyyppiä r i r i q +r i p mod 2 olevat siirtorekisterit, missä p on alkuluku ja q valitaan sopivasti, tuottavat usein varsin hyviä satunnaisia bittejä. Seuraavassa taulussa on listattuna eräitä valintoja, missä luku q voidaan korvata myös luvullap q: p q (myösp q käy) p q (myösp q käy) , , 915, , , , 369, 370, 649, 1393, 1419, , 5, , 471, 1836, 2444, , 6, 7, , 7083, , 6619, ,7,15,30, , , 48, 158, , , 147, , 33912, 41469, 52549, Klassinen viite on GOLOMB, S.W.: Shift Register Sequences. Aegean Park Press (1982)

26 LUKU 2. LUKUTEORIA. OSA 1 21 Nämä arvot on löydetty tietokone-etsinnällä. 9 Pienet p:n arvot eivät tietenkään ole kovin käyttökelpoisia. Matriisimuodossa binäärikunnassa Z 2, ks. edellinen pykälä, siirtorekisteri on seuraavanlainen. Merkitään r i = r i+p 1 r i+p 2. r i A on ns. siirtorekisterin oheismatriisi. Silloin ja näin ollen a 1 a 2 a p 1 a p ja A = r i+1 Ar i mod 2 r i A i r 0 mod 2 (i = 0,1,... ). Matriisipotenssi A i voidaan laskea nopeasti modulo 2 käyttäen venäläisten talonpoikien algoritmia. Niinpä, ehkä vähän yllättäen, voidaan varsin nopeasti laskea jonoa r p,r p+1,... etukäteen hyvinkin pitkälle tarvitsematta laskea välissä olevia arvoja kovinkaan monta. Huomaa myös, että jotta saatu bittivirta olisi satunnainen, jossain vaiheessa p:stä peräkkäisestä vektorista r i saatu matriisi R i = (r i,...,r i+p 1 ) on kääntyvä eli det(r i ) 0 mod 2. Silloin voidaan yhtälöstäar i R i+1 mod 2 ratkaista matriisi A. Suurilla p:n arvoilla kaikki nämä laskut muodostuvat luonnollisesti hankaliksi. Satunnaisbittijonosta saadaan binääriesityksen kautta satunnaislukuja. Binääriesityksessään enintään n-pituisia satunnaislukuja s 0,s 1,... saadaan jakamalla jono peräkkäisiin n bitin lohkoihin ja tulkitsemalla lohkot binääriluvuiksi. Huomautus. Kryptauksessa tarvittava satunnaisbittien ja -lukujen generointi on varsin vaativaa. Huonosti generoidut satunnaisbitit kun edesauttavat kryptauksen purkamista tuntuvasti. Voidaankin sanoa, että satunnaislukujen generointi on viime aikoina edistynyt merkittävästi nimenomaan kryptauksen tarpeiden vuoksi. Yllä oleva siirtorekisterigeneraattori on ihan riittävä tavallisiin tarkoituksiin, jopa kevyeen kryptaukseen, varsinkin suuremmilla p:n arvoilla. Ollakseen kryptologisesti vahva se ei saisi olla liian helposti ennustettavissa ja tällöin p:n pitää olla käytäntöä ajatellen aivan liian iso. Parempiakin menetelmiä on, mm. ns. Blum Blum Shubgeneraattori, jota käsitellään Pykälässä 7.7. Ks. myös GOLDREICH. Toinen tavallinen satunnaislukugeneraattorityyppi on ns. lineaarinen kongruenssigeneraattori. Se generoi jononx 0,x 1,... satunnaislukuja väliltä0,1,...,m käyttäen rekursiokongruenssia x i+1 ax i +b mod m, missä a ja b ovat annettuja lukuja lisäksi annetaan myös siemen x 0. Sopivalla lukujen a ja b valinnalla saadaan monta tarkoitusta varten hyviä ja nopeita satunnaislukugeneraattoreita. (Ks. esimerkiksi KNUTH.) Aikanaan Maple-ohjelmiston rand-operaatiokin perustui lineaariseen kongruenssigeneraattoriin, jossa m = (alkuluku), a = ja b = 0. 9 Artikkeliviitteet ovat ZIERLER, N.: On Primitive Trinomials Whose Degree is a Mersenne Exponent. Information and Control 15 (1969), ja HERINGA, J.R. & BLÖTE, H.W.J. & COMPAGNER, A.: New Primitive Trinomials of Mersenne-Exponent Degrees for Random Number Generation. International Journal of Modern Physics C3 (1992),

27 LUKU 2. LUKUTEORIA. OSA 1 22 Koska ( ) xi 1 ( a b 0 1 )( ) xi 1 1 ( a b 0 1 ) i ( ) x0 1 mod m, on jono x 0,x 1,... tässäkin laskettavissa etukäteen hyvin nopeasti venäläisten talonpoikien algoritmilla suurillekin luvuillemjaa. Toisaalta, jossyt(x i x i 1,m) = 1, kuten se ennemmin tai myöhemmin on, saadaan kongruenssista x i+1 x i a(x i x i 1 ) mod m ratkaistuksi a, ja edelleen b x i+1 ax i mod m. Paljolti samoista syistä kuin siirtorekisterigeneraattorikin lineaarinen kongruenssigeneraattori on näin kryptologisesti kovin heikko.

28 Luku 3 JOITAIN KLASSISIA KRYPTOSYSTEEMEJÄ KRYPTANALYYSEINEEN 3.1 AFFINE. CAESAR Jotta päästäisiin käyttämään edellisen luvun lukuteorian tuloksia, pitää selvätekstin symbolit ensin koodata luvuiksi tai jäännösluokiksi. Jos symboleja on M kpl, voidaan käyttää jäännösluokkia modulo M. Itse asiassa voidaan ajatella viesti kirjoitetuksi käyttäen näitä jäännösluokkia tai positiivisen jäännössysteemin lukuja. Affiinissa kryptosysteemissä AFFINE kukin viestisymbolii (jäännösluokka modulo M esitettynä positiivisessa jäännössysteemissä) kryptataan seuraavasti: e k1 (i) = (ai+b, mod M). Tässä a ja b ovat kokonaislukuja ja a:lla on käänteisluokka c modulo M, ts. syt(a,m) = 1. Kryptausavain k 1 muodostuu parista (a,b) ja dekryptausavain k 2 parista (c,b) (yleensä esitettyinä positiivisessa jäännössysteemissä). Dekryptausfunktio on d k2 (j) = (c(j b), mod M). Viestilohko on siis yhden pituinen. Affiini kryptaus sopii näin ollen myös vuokryptaukseen. Valittaessa a ja b positiivisesta jäännössysteemistä mahdollisten a: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, jossa a = 1, tunnetaan Caesar-kryptosysteeminä CAESAR. Yleisempi kryptosysteemi, jossa e k1 (i) = (p(i), mod M) ja p on kokonaiskertoiminen polynomi, ei ole juurikaan käyttökelpoisempi, avaimia on edelleen aika vähän (miksi?). Huomautus. AFFINE muistuttaa edellä ollutta lineaarista kongruenssigeneraattoria. Seuraavaksi esiteltävä HILL taas muistuttaa siirtorekisterigeneraattoria. Tämä ei ole aivan sattumaa, satunnaislukugeneraattoreilla ja kryptosysteemeillä on yhteys: vahvoista kryptosysteemeistä on tavalla tai toisella yleensä saatavissa vahva satunnaislukugeneraattori, ei tosin ehkä kovin käyttökelpoinen. 23

29 LUKU 3. JOITAIN KLASSISIA KRYPTOSYSTEEMEJÄ KRYPTANALYYSEINEEN HILL. PERMUTATION. AFFINE-HILL. VIGENÈRE Hillin 1 kryptosysteemissä HILL käytetään samaa symbolien koodausta jäännösluokiksi modulo M kuin AFFINEssa. Lohko kuitenkin muodostuu nyt d:stä jäännösluokasta ajateltuna d-vaakavektoriksi. Alkuperäinen d muuten oli 2. Kryptausavain on d d-matriisi H, jolla on käänteismatriisi modulo M, ks. Pykälä 2.5. Mainittu käänteismatriisi H 1 = K modulo M taas on dekryptausavain. Viestilohko i = (i 1,...,i d ) kryptataan nyt seuraavasti: Dekryptaus on vastaavasti e H (i) = (ih, mod M). e K (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 modulo M. Tämä lukumäärä on vaikea laskea, yleensä avaimia kuitenkin on suhteellisen paljon, josdon iso. Erikoistapaus HILListä on PERMUTATION eli ns. permutaatiokryptaus. Siinä H on permutaatiomatriisi, ts. matriisi jonka jokaisella rivillä ja jokaisessa sarakkeessa on tarkalleen yksi ykkönen ja muut alkiot ovat nollia. Huomaa, että tällöinh 1 = H T, ts.hon ortogonaalimatriisi. Permutaatiokryptauksessa viestilohkon symbolit permutoidaan tietyllä vakiopermutaatiolla, joka saadaan H:sta. Yleisempi kryptosysteemi on AFFINE-HILL eli affiini Hillin kryptosysteemi. Se eroaa HILListä siten, että kryptausavain k 1 on pari (H,b), missä b on vakio d-vaakavektori modulo M, ja dekryptausavaink 2 on vastaavasti pari (K,b). Tällöin ja e k1 (i) = (ih+b, mod M) e k2 (j) = ((j b)k, mod M). Tästä puolestaan saadaan erikoistapauksena ns. Vigenèren 2 kryptaus VIGENÈRE valitsemalla H = I d (d d-identiteettimatriisi). (Tällainen H:n valinta ei tietystikään käy HILLissä!) Vigenèren kryptauksessa viestilohkoon lisätään symboleittain d-pituinen avainsana modulo M. HILLin yleistyksiä olivat ns. rotaatiokryptosysteemit, jotka toteutettiin mekaanisin tai sähkömekaanisin laittein. Tunnettu esimerkki on saksalaisten toisen maailmansodan aikana käyttämä ENIGMA. Ks. SALOMAA tai BAUER. 3.3 ONE-TIME-PAD Usein viestisymbolit koodataan enintään tietyn pituisiksi binääriluvuiksi, esimerkiksi ASCIIkoodaus tai UNICODE-koodaus. Näin voidaan olettaa viestin olevan M-pituinen bittivektori. Jos viestin maksimipituus tunnetaan ennalta ja kryptausta tarvitaan vain kerran, voidaan avaimeksi valita satunnainen M-pituinen bittivektori b eli vektori modulo 2, ns. kerta-avain, joka kryptattaessa lisätään viestiin modulo 2. Tuloksena saatu kryptattu viestivektori on myös satunnainen (miksi?) eikä siitä mahdollinen salakuuntelija näin ollen saa ilman avainta mitään irti. Dekryptattaessa lisätään vastaavasti kryptattuun viestiin sama b, sillä 2b 0 mod 2. Näin saadaan ns. kerta-avainkryptaus ONE-TIME-PAD. 1 Lester S. Hill (1929) 2 Blaise de Vigenère ( )

30 LUKU 3. JOITAIN KLASSISIA KRYPTOSYSTEEMEJÄ KRYPTANALYYSEINEEN Kryptanalyysi Kryptanalyysin tarkoitus on murtaa kryptosysteemi, ts. löytää dekryptausavain tai kryptausavain tai ainakin kehittää menetelmä, jolla saadaan jotain tietoa ulos joistain kryptatuista viesteistä. Tällöin yleensä oletetaan, että kryptanalysoija on salakuuntelija tai muuten vihamielinen taho ja 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, known plaintext), (CP) hänen valitsemansa selväteksti ja vastaava kryptoteksti (valittu selväteksti, chosen plaintext), (CC) hänen valitsemansa kryptoteksti ja vastaava selväteksti (valittu kryptoteksti, chosen cryptotext). Klassiset hyökkäysmenettelyt perustuvat usein frekvenssianalyysiin, ts. tietoon siitä että pitkissä kryptoteksteissä tietyt symbolit, symboliparit, symbolikolmikot jne. esiintyvät tietyillä toisistaan eroavilla frekvensseillä. Frekvenssitauluja on tehty esimerkiksi tavallisesta englanninkielestä, amerikanenglannista jne. Huomautus. Jos viesti pakataan ennen kryptausta, katoaa siitä frekvenssitietoa, ks. kurssi Informaatioteoria. Katsotaan esimerkkeinä eo. kryptosysteemien kryptanalyysejä. AFFINE Affiinissa kryptauksessa mahdollisia avaimia on yleensä vähän, joten CO-hyökkäyksessä ne voidaan käydä läpi yksi kerrallaan ja yrittää löytää todennäköinen selväteksti. Tämä ei tietenkää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 voitaisiin tunnistaa. KP-hyökkäyksessä riittää löytää sellaiset kaksi viestisymboli-kryptosymboli-paria (i 1,j 1 ) ja (i 2,j 2 ), että syt(i 1 i 2,M) = 1. Tällaiset parit löytyvät yleensä pitkästä kryptotekstistä. Silloin matriisi ( ) i1 1 i 2 1 on kääntyvä modulom ja avain löytyy helposti: ( ) ( )( ) j1 i1 1 a i 2 1 b eli j 2 ( ) ( a 1 1 (i b 1 i 2 ) 1 i 2 i 1 )( j1 mod M j 2 ) mod M. CP-hyökkäyksessä symboliparit(i 1,j 1 ) ja(i 2,j 2 ) voidaan suorastaan valita. CC-hyökkäyksessä riittää valita pitkä kryptoteksti. AFFINEn helpon murrettavuuden takia se soveltuu vain kevyeen tiedon peittoon satunnaisilta lukijoilta.

31 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 ei näin ollen sellaisenaan onnistu helposti. Frekvenssianalyysiä soveltaen voidaan kuitenkin periaatteessa löytää KP-dataa, varsinkin jos d on pienehkö. KP-hyökkäyksessä riittää löytää sellaiset viestilohko-kryptolohko-parit(i 1,j 1 ),...,(i d,j d ), että matriisit i 1 S =. i d ja R = ovat kääntyviä modulo M. Huomaa, että itse asiassa riittää tietää toinen matriiseista kääntyväksi, toinen on sen jälkeen myös kääntyvä. Tietysti CP-hyökkäyksessä S on valittavissa suoraan ja CC-hyökkäyksessä taas R. JosSjaRtunnetaan, saadaan avain H helposti: j 1. j d R SH mod M eli H S 1 R mod M. HILL on vaikea murtaa, ellei vähintään KP-dataa ole saatavilla, varsinkin josdon iso ja/tai kryptanalysoija ei tiedä d:n arvoa. Toisaalta KP-hyökkäys ja varsinkin CP- tai CC-hyökkäys on helppo tehdä dataa tarvitaan hyvin vähän joten HILL ei käy vaativaan salaukseen. AFFINE-HILL on HILLiä hieman vaikeampi murtaa. KP-hyökkäyksessä tarvitaan sellaiset viestilohko-kryptolohko-parit(i 1,j 1 ),...,(i d+1,j d+1 ), että matriisit i 1 i d+1 S =. i d i d+1 ja R = j 1 j d+1. j d j d+1 ovat kääntyviä modulo M. Huomaa jälleen, että itse asiassa riittää tietää toinen matriiseista kääntyväksi. CP-hyökkäyksessä S on valittavissa suoraan, CC-hyökkäyksessä R. Jos S ja R tunnetaan, saadaan H helposti samoin kuin yllä. KunHtunnetaan, saadaan b helposti. VIGENÈRE VIGENÈRE on ollut aikanaan niin paljon käytetty kryptosysteemi, että sen murtamista on mietitty paljon. Ensimmäinen toimenpide on etsiä d. Siihen on omia menetelmiään ja d on VI- GENÈREssä yleensä varsin iso. Sen jälkeen voidaan soveltaa frekvenssianalyysiä. Ks. STIN- SON tai SALOMAA tai BAUER. ONE-TIME-PAD Jollei avain ole kryptanalysoijan käytettävissä, on ONE-TIME-PAD mahdoton murtaa COhyökkäyksessä. Jos samaa avainta kuitenkin käytetään useita kertoja tullaan oleellisesti VIGE- NÈRE-salaukseen.

32 Luku 4 ALGEBRA: RENKAAT JA KUNNAT 4.1 Renkaat ja kunnat Algebrallinen struktuuri koostuu joukostaa, jonka alkioille on määritelty yksi tai useampi laskuoperaatio ja näille laskusäännöt. Lisäksi yleensä jo(i)llekina:n alkio(i)lle on varattu erikoisrooli. Rengas (engl. ring) on struktuuri R = (A,,, 0, 1), jossa on renkaan yhteenlaskuoperaatio, on renkaan kertolaskuoperaatio, 0 on renkaan nolla-alkio ja 1 on renkaan ykkösalkio (ja 0 1). Jos,, 0 ja 1 ovat asiayhteydestä selvät, merkitään rengasta usein vain A:lla. Lisäksi vaaditaan, että seuraavat ehdot ovat voimassa: (1) ja ovat vaihdannaisia operaatioita, 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 miten tahansa tuloksen muuttumatta. Usein ne kirjoitetaan täysin ilman sulkeita, esimerkiksi a 1 a 2 a k tai a 1 a 2 a k. Erityisesti otetaan käyttöön monikerta- ja potenssimerkinnät ka = a a } {{ } k kpl ja a k = a a } {{ } k kpl sekä erikoistapauksina0a = 0,1a = a, a 0 = 1 jaa 1 = a. (3) 0 a = a ja 1 a = a (huomaa, miten nämä sopivat yhteen eo. monikerta- ja potenssimerkintöjen kanssa). (4) a (b c) = (a b) (a c) (osittuvuus). (5) Jokaiselle alkiolle a on vasta-alkio a, jolle ( a) a = 0. Vasta-alkiota käyttäen saadaan vähennyslasku a b = a ( b) ja negatiivinen monikerta( k)a = k( a). Huomautus. Tarkemmin sanoen tällainen R on ns. vaihdannainen 1-rengas, varsinainen rengas on algebrallisesti vieläkin yleisempi käsite. Ks. kurssi Algebra 1. Jatkossa renkaasta puhuttaessa kyseessä on siis aina juuri tällainen vaihdannainen 1-rengas. 27

33 LUKU 4. ALGEBRA: RENKAAT JA KUNNAT 28 Jos lisäksi vielä seuraava ehto (6) pätee, on kyseessä kunta (engl. field): (6) Jokaiselle alkiollea 0 on käänteisalkio eli inverssia 1, jollea a 1 = 1. Käänteisalkiota käyttäen saadaan jakolaskua/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) = ( a) b ja c d = a c b d. Jokainen kunta on siis myös rengas. Tuttuja renkaita, jotka eivät ole kuntia, ovat mm. kokonaislukujen rengas Z sekä erilaiset polynomirenkaat, esimerkiksi rationaali-, reaali-, kompleksija kokonaiskertoimisten polynomien renkaat Q[x], R[x], C[x] ja Z[x]. Näissä laskuoperaatiot ovat tutut + ja, nolla-alkio on 0 ja ykkösalkio on 1. Myös Z m (jäännösluokat modulo m) muodostavat renkaan, eli jäännösluokkarengas on rengas, ks. Pykälä 2.5. Tuttuja kuntia ovat lukukunnat reaalilukujen kunta (R, +,, 0, 1), rationaalilukujen kunta (Q, +,, 0, 1) ja kompleksilukujen kunta (C, +,, 0, 1) sekä reaalikertoimisten rationaalifunktioiden kunta (R(x),+,,0,1) ja alkukunnat (Z p,+,,0,1) (ks. Pykälä 2.5). Näitä merkitään yleensä vain lyhyesti:r, Q, C, R(x) jaz p. 4.2 Polynomirenkaat Polynomit, jotka muodostetaan formaalisesti käyttäen kunnan F alkioita kertoimina, muodostavat ns. F :n polynomirenkaan F[x]. Polynomi kirjoitetaan tuttuun summamuotoon käyttäen apumuuttujaa (tässäx): p(x) = a 0 a 1 x a 2 x 2 a n x n, missä a 0,a 1,...,a n F ja a n 0. Erikoisesti nollapolynomi on tyhjä summa. Tavalliseen tapaan F[x]:n nollapolynomi samaistetaan F :n nolla-alkioon 0 ja vakiopolynomit vastaaviin F :n alkioihin. Polynomin p(x) aste deg(p(x)) määritellään edelleen tavalliseen tapaan korkeimman esiintyvän x:n potenssin eksponentiksi (yllä aste on n). Nollapolynomin asteeksi sovitaan 1. Korkeimman esiintyvän x:n potenssin kerrointa kutsutaan johtavaksi kertoimeksi (yllä a n ). Jos johtava kerroin on = 1, kyseessä on ns. pääpolynomi. Tavan mukaan termi 1x i voidaan korvata x i :llä, termi ( 1)x i voidaan korvata x i :llä ja termi 0x i voidaan jättää pois. Polynomien yhteen-, vähennys- ja kertolasku määritellään tavalliseen tapaan käyttäen kertoimia ja kunnan vastaavia laskuoperaatioita. Tarkastellaan operaatioita polynomeille p 1 (x) = a 0 a 1 x a 2 x 2 a n x n ja p 2 (x) = b 0 b 1 x b 2 x 2 b m x m, missäa n,b m 0. (Tässä siis oletetaan, ettäp 1 (x),p 2 (x) 0.) Silloin p 1 (x) p 2 (x) = c 0 c 1 x c 2 x 2 c k x k, missäk = max(n,m) ja a i b i, josi n,m c i = a i, josm < i n b i, josn < i m.

34 LUKU 4. ALGEBRA: RENKAAT JA KUNNAT 29 Huomaa, että jos n = m, niin c k voi olla = 0, ts. summan aste voi olla < k. Edelleen p 2 (x):n vastapolynomi on p 2 (x) = p 2 (x) = ( b 0 ) ( b 1 )x ( b 2 )x 2 ( b m )x m ja vähennyslasku saadaan muodossa Tulo saadaan muodossa missä Näin ollen p 1 (x) p 2 (x) = p 1 (x) ( p 2 (x)). p 1 (x) p 2 (x) = c 0 c 1 x c 2 x 2 c n+m x n+m, c i = a t b s. t+s=i deg(p 1 (x) p 2 (x)) = deg(p 1 (x))+deg(p 2 (x)). Helposti vaikkakin työläästi on todettavissa, että näin saatu(f[x],,, 0, 1) on todellakin rengas. Polynomeillea(x) jam(x) 0 on edelleen määritelty jakolasku muodossa a(x) = q(x) m(x) r(x), deg(r(x)) < deg(m(x)) (osamäärä q(x) ja jakojäännös r(x)). Muista, että nollapolynomin asteeksi sovittiin 1. Jakolaskun tulos on yksikäsitteinen. Jos nimittäin a(x) = q 1 (x) m(x) r 1 (x) = q 2 (x) m(x) r 2 (x), missädeg(r 1 (x)),deg(r 2 (x)) < deg(m(x)), niin r 1 (x) r 2 (x) = (q 2 (x) q 1 (x)) m(x). Mutta deg(r 1 (x) r 2 (x)) < deg(m(x)), joten ainoa mahdollisuus on, että q 2 (x) q 1 (x) on nollapolynomi eli ettäq 1 (x) = q 2 (x) ja edelleen ettär 1 (x) = r 2 (x). Jakolasku voidaan suorittaa seuraavalla algoritmilla, joka samalla näyttää, että se on mahdollinen (tulostetaan JAKO(a(x), m(x)) = (q(x), r(x))): Polynomien jakolasku: 1. Asetetaan q(x) 0 sekä n deg(a(x)) ja k deg(m(x)). Merkitään vielä m(x):n johtavaa kerrointam k :lla. 2. Jos n < k, tulostetaan(q(x), a(x)) ja lopetetaan. 3. Etsitääna(x):n johtava kerroin a n. 4. Asetetaan ja sekän deg(a(x)) ja mennään kohtaan 2. a(x) a(x) (a n m 1 k ) xn k m(x) q(x) q(x) (a n m 1 k ) xn k

35 LUKU 4. ALGEBRA: RENKAAT JA KUNNAT 30 Aina mentäessä kohdan 4. kauttanpienenee ja lopulta tullaan ulos kohdasta 2. Edelleen voidaan määritellä tekijä ja jaollisuus kuten Pykälässä 2.1. Jos a(x) = q(x) m(x), sanotaan että a(x) on jaollinen m(x):llä tai että m(x) on a(x):n tekijä. Polynomia, jolla ei ole muita alempiasteisia tekijöitä kuin vakiopolynomit, kutsutaan jaottomaksi. Jaettaessa a(x) m(x):llä jakojäännöksen r(x):n sanotaan olevan a(x):n jäännös modulo m(x), vrt. vastaava käsite kokonaisluvuille Pykälässä 2.4. m(x) on ns. moduli. Tässä oletetaan modulin olevan vähintään astetta 1. Myös käytetään samanlaista merkintää ja sanontaa kuin kokonaisluvuille: Josa(x):n jab(x):n jäännökset modulom(x) ovat samat, merkitään a(x) b(x) mod m(x) ja sanotaan a(x):n olevan kongruentti b(x):n kanssa modulo m(x). Tällaisia kongruensseja koskevat aivan samat laskusäännöt kuin kokonaisluvuillekin. Jakojäännöstä r(x) vastaavan jäännösluokan a(x) = r(x) muodostavat kaikki ne polynomita(x), joiden jäännös modulom(x) onr(x). Kaikki jäännösluokat modulom(x) muodostavat ns. jäännösluokkarenkaan eli tekijärenkaan F[x]/m(x). 1 On helppo nähdä, samaan tapaan kuin kokonaisluvuille, että jäännösluokat modulo m(x) voidaan antaa ja niillä voidaan laskea edustajan välityksellä, ts. a 1 (x) a 2 (x) = a 1 (x) a 2 (x), a(x) = a(x), a 1 (x) a 2 (x) = a 1 (x) a 2 (x), ka(x) = ka(x), a 1 (x) a 2 (x) = a 1 (x) a 2 (x) ja a(x) k = a(x) k eikä tulos riipu edustajan valinnasta. Tavallisin edustajasysteemi on kaikkien mahdollisten jakojäännösten muodostama joukko eli enintään astetta deg(m(x)) 1 olevat polynomit. Näin ollenf[x]/m(x) on todellakin rengas. Edelleen aivan samalla tavoin kuin tehtiin osoitettaessa, että jokaisella muullaz p :n alkiolla kuin nolla-alkiolla 0 on käänteisalkio, voidaan näyttää, että jokaisella muulla F[x]/p(x):n alkiolla kuin nolla-alkiolla 0 on käänteisalkio olettaen, että moduli p(x) on jaoton polynomi. Tätä varten tarvitaan F[x]:n polynomien suurin yhteinen tekijä sekä Eukleideen algoritmi. F[x]:n polynomien a(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ään d(x) = syt(a(x), b(x)). Huomaa, että tällainen suurin yhteinen tekijä ei ole yksikäsitteinen, sillä jos d(x) = syt(a(x),b(x)), niin myös c d(x), missä c on vakiopolynomi ja 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 polynomeista a(x) ja b(x) ei ole nollapolynomi, niin niiden (mikä tahansa) s.y.t.d(x) voidaan kirjoittaa muotoon d(x) = c 1 (x) a(x) c 2 (x) b(x) (Bézout n muoto). Lisäksi, jos a(x),b(x) 0, voidaan olettaa, että deg(c 1 (x)) deg(b(x)) ja deg(c 2 (x)) deg(a(x)). Todistus. Todistus on hyvin samantapainen kuin Lauseen 2.5. Merkitään SYT(a(x), b(x)) = (d(x),c 1 (x),c 2 (x)) ja oletetaan, ettädeg(a(x)) deg(b(x)). Todistuksessa tarvittava (yleistetty) Eukleideen algoritmi on seuraava rekursio: 1 Samantapaista merkintää käytetään kokonaisluvuillekin:z m = Z/m.

36 LUKU 4. ALGEBRA: RENKAAT JA KUNNAT 31 (Yleistetty) Eukleideen algoritmi polynomeille: 1. Jos a(x) = 0, niin tulostetaan SYT(a(x), b(x)) = (b(x), 0, 1) ja lopetetaan. 2. Jos a(x) 0 on vakiopolynomi, tulostetaan SYT(a(x),b(x)) = (a(x), 1, 0) ja lopetetaan. 3. Jos deg(a(x)) 1, niin etsitään b(x):n jäännös r(x) modulo a(x), ts. kirjoitetaan b(x) = q(x) a(x) r(x), missä deg(r(x)) < deg(a(x)). Etsitään sitten SYT(r(x), a(x)) = (d(x),e 1 (x),e 2 (x)). Koska d(x) = e 1 (x) r(x) e 2 (x) a(x), on silloin d(x) = syt(a(x), b(x)) ja d(x) = (e 2 (x) e 1 (x) q(x)) a(x) e 1 (x) b(x). TulostetaanSYT(a(x),b(x)) = (d(x),e 2 (x) e 1 (x) q(x),e 1 (x)) ja lopetetaan. Rekursio on päättyvä, koska min(deg(r(x)), deg(a(x))) < min(deg(a(x), deg(b(x))), ts. aina kutsuttaessa SYT ko. minimiarvo pienenee. Jos syt(a(x), m(x)) on vakio f 0, niin Bézout n muodosta saadaan kertomalla puolittain f 1 :llä 1 = e 1 (x) a(x) e 2 (x) m(x). Näin ollen a(x):llä on tällöin inverssi e 1 (x) modulo m(x) eli a(x):llä on F[x]/m(x):ssä käänteisalkio e 1 (x). (Olettaen, että deg(m(x)) 1.) Samalla tuli esitetyksi menetelmä, jolla käänteisalkion voi löytää. Erityisesti, jos p(x) on jaoton vähintään astetta 1 oleva F[x]:n polynomi, niin F[x]/p(x) on kunta. Ko. kunnan alkiot on tapana kirjoittaa jäännösmuotoon c 0 c 1 x c 2 x 2 c n 1 x n 1, missän = deg(p(x)) ja kertoimetc 0,c 1,...,c n 1 ovatf :n alkioita, eli oleellisestin-vektoreiksi, joiden komponentit ovatf :ssä. Huomaa, että tässäc n 1 voi olla= 0. Erityisesti huomataan, että jos p(x) on ensimmäistä astetta, niin F[x]/p(x) = F, ts. palataan takaisin alkuperäiseen kuntaan. Esimerkki. R[x]:n jaottomat polynomit vakioita lukuunottamatta ovat tunnetusti joko ensimmäistä tai toista astetta. Edellisistä saadaan R ja jälkimmäisistä C. Siis esimerkiksi C = R[x]/(x 2 +1).C[x]:n jaottomat polynomit ovatkin sitten vakioita tai ensimmäistä astetta, joten siitä ei päästä sen pidemmälle. Polynomirengas R[x] voidaan myös muodostaa käyttäen kertoimina renkaan R alkioita, näin saadaan esimerkiksi kokonaiskertoimisten polynomien rengas Z[x]. Tällaisissa renkaissa yhteen- ja kertolasku määritellään tavalliseen tapaan, mutta jakolasku ei kuitenkaan ole enää yleisesti mahdollista. Jakolaskualgoritmia tutkimalla on kuitenkin selvää, että jakolasku on määritelty, jos jakajapolynomin johtavalla kertoimella on inverssir:ssä. Erityisesti, jos jakaja on pääpolynomi, jakolasku on määritelty kaikissa polynomirenkaissa. Näin ollen myös jäännösluokkarengas R[x]/m(x) on määritelty, jos vain m(x):n johtavalla kertoimella on inverssi R:ssä, ja aina josm(x) on pääpolynomi. Tällainen jakolasku tulee esille mm. NTRU-systeemin yhteydessä, ks. Luku 11.

37 LUKU 4. ALGEBRA: RENKAAT JA KUNNAT Äärelliset kunnat Alkukunnat saatiin Pykälässä 2.5 muodossa Z p eli jäännösluokkina modulo jokin alkuluku p. Alkukunta on esimerkki äärellisestä kunnasta, mutta niitä on muitakin. Näiden saamiseksi valitaan jonkin alkukunnanz p polynomirenkaanz p [x] polynomip(x), joka on jaoton. Jäännökset modulop(x) muodostavat kunnanz p [x]/p(x), jonka alkiot esitetään tavallisesti muodossa c 0 +c 1 x+c 2 x 2 + +c n 1 x n 1, missä n = deg(p(x)) ja c 0,...,c n 1 Z p, eli oleellisesti vektorina (c 0,c 1,...,c n 1 ). Tämä kunta on äärellinen, siinä on alkioita yhtä monta kuin on jäännöksiä modulop(x) elip n kpl. Voidaan näyttää (sivuutetaan tässä), että kaikki mahdolliset äärelliset kunnat saadaan tällä tavoin tietysti myös alkukuntaz p itse. Äärellisen kunnan alkioiden lukumäärä on siis aina alkuluvun potenssi. Äärellisiä kuntia voidaan konstruoida monella tavalla, samaa astetta olevia jaottomia Z p [x]:n polynomejakin löytyy yleensä useampia, mutta aina äärellinen kunta, jossa onp n alkiota, on rakenteeltaan samanlainen eli isomorfinen jokaisen kunnanz p [x]/p(x) kanssa, missädeg(p(x)) = n. Näin ollen äärellisiä kuntia, joissa onp n alkiota, on olennaisesti vain yksi, ja sitä merkitäänf p n:llä taigf(p n ):llä. 2 Jokaista mahdollista alkuluvun potenssiap n kohti on edelleen olemassa F p n, ts. jokaisesta polynomirenkaasta Z p [x] löytyy kaikkia astelukuja n 1 olevia jaottomia polynomeja. Huomautus. Jos otetaankin äärellisen kunnan F p n polynomirenkaan F p n[x] astetta m oleva jaoton polynomip(x), niin edellä olevan mukaisesti tekijärengasf p n/p(x) (jäännökset modulo P(x)) on kunta, jossa on (p n ) m = p nm alkiota. Tämä kunta on siis F p nm ja se on (isomorfisesti) sama kuin Z p [x]/q(x), missäq(x) on astettanm olevaz p [x]:n jaoton polynomi. Käytännössä äärellisessä kunnassa F p n lasketaan muodostamalla sen esitys jäännösluokkina modulo jokin astetta n oleva jaoton polynomi P(x) Z p [x]. Laskutoimitukset tapahtuvat enintään astetta n 1 olevien edustajien eli jakojäännösten välityksellä, jollaisiksi myös tulokset redusoidaan modulop(x) jakolaskulla. Jospja/tainon iso, ovat tällaiset operaatiot tietysti käsipelissä työläitä. Äärellisillä kunnilla on muitakin esityksiä. Esitys primitiivisten alkioiden potensseina on hyvin käyttökelpoinen eräissä kryptosysteemeissä (ks. Luku 10). Esimerkki. F 2 8:n konstruoimiseksi voidaan valita Z 2 [x]:n astetta 8 oleva jaoton polynomi P(x) = 1 + x + x 3 + x 4 + x 8. Tarkistetaan Maple-ohjelmistolla, että P(x) todella on jaoton: > Irreduc(1+x+x^3+x^4+x^8) mod 2; true F 2 8:n alkiot ovat esitettävissä jäännösmuodossa b 0 +b 1 x+b 2 x 2 +b 3 x 3 +b 4 x 4 +b 5 x 5 +b 6 x 6 +b 7 x 7, missä b 0,...,b 7 ovat bittejä eli oleellisesti bittivektorina (b 0,b 1,b 2,b 3,b 4,b 5,b 6,b 7 ). Maplen GF-paketilla voidaan laskea äärellisissä kunnissa, tosin vähän kankeasti. Kokeillaan pakettia F 2 8:ssa: > GF256:=GF(2,8,1+x+x^3+x^4+x^8): > a:=gf256[convertin](x); 2 GF = Galois field (Galois n kunta). TietystiZ p = F p = GF(p).

38 LUKU 4. ALGEBRA: RENKAAT JA KUNNAT 33 > GF256[ ^ ](a,1200); a := x mod 2 > c:=gf256[inverse](a); (x 7 +x 6 +x 5 +x 3 +x 2 +x+1) mod 2 > GF256[ + ](a,gf256[ ^ ](c,39)); c := (x 7 +x 3 +x 2 +1) mod 2 (x 7 +x 5 +x 3 +1) mod 2 Tässä siis laskettiin ko. esityksessäx 1200,x 1 jax+x 39. Käsky ConvertIn muuntaa polynomin Maplen sisäiseen esitykseen. Ellei tiedä yhtään sopivaa jaotontaz p [x]:n polynomia, etsii Maple kyllä jonkin sellaisen: > GF81:=GF(3,4): > GF81[extension]; (T 4 +T 3 +2T +1) mod 3 Valinnan saa selville extension-käskyllä. Tässä siis saatiin tuloksena Z 3 [x]:n jaoton polynomi1+2x+x 3 +x 4. Äärellisten kuntien matriisien ja vektoreiden laskutoimitukset määritellään luonnollisella tavalla alkioidensa laskutoimitusten avulla. Käyttöön tulevat näin peruskursseilta tutut matriisien yhteen-, vähennys-, kertomis- ja potenssiinkorotusoperaatiot sekä transponointi. Samoin neliömatriisien determinantit noudattavat tuttuja laskusääntöjä. Aivan samoin kuin peruskursseilla todetaan sekin, että neliömatriisilla on käänteismatriisi, jos sen determinantti ei ole kunnan nolla-alkio. Paitsi kryptologiassa, äärelliset kunnat ovat tavattoman tärkeitä virheitä korjaavassa koodauksessa. Niitä käsitelläänkin enemmän kursseissa Äärelliset kunnat ja Koodausteoria. Hyviä viitteitä ovat MCELIECE ja LIDL & NIEDERREITER ja myös GARRETT. Nykyisin yleisessä käytössä oleva massakryptaussysteemi AES perustuu äärelliseen kuntaan F 2 8, ks. seuraava luku.

39 Luku 5 AES 5.1 Yleistä AES (Advanced Encryption Standard) on kilpailutuksen kautta kehitetty nopea massakryptaukseen tarkoitettu symmetrinen kryptosysteemi. Se perustuu belgialaisten Joan Daemenin ja Vincent Rijmenin vuonna 1999 julkaisemaan RIJNDAEL-systeemiin, ks. DAEMEN & RIJMEN. AES korvasi vanhan vuonna 1975 julkaistun DES-systeemin (Data Encryption Standard, ks. Liite). AES toimii bittisymboleilla, joten selväteksti- ja kryptotekstisymboleiksi voidaan ajatella Z 2 :n jäännösluokat (bitit)0ja1. RIJNDAELin toiminta on paljolti kuvattavissa käyttäen kuntaa F 2 8 ja sen polynomirengastaf 2 8[z]. Sekaannusten välttämiseksi käytetään mainitun polynomirenkaan apumuuttujana z:aa ja F 2 8:n määrittelyssä ja esityksessä tarvittavien Z 2 :n polynomien apumuuttujana x:ää, kuten edellä. Edelleen F 2 8:n yhteen- ja kertolaskun merkkeinä käytetään :aa ja :ttä, ykkösalkion merkkinä 1:tä ja nolla-alkion merkkinä 0:aa. Huomaa, että koska Z 2 :ssa on 1 = 1, niin Z 2 [x]:ssa, F 2 8:ssa ja F 2 8[z]:ssa alkion vasta-alkio on se itse. Vähennyslasku on siis näissä sama kuin yhteenlasku. 5.2 RIJNDAEL RIJNDAEL-systeemissä selvätekstilohkon pituusl B ja avaimen pituusl K ovat toisistaan riippumatta joko128,192 tai256 bittiä. Jakamalla32:lla saadaan luvut N B = l B 32 ja N K = l K 32. Bittejä käsitellään 8-bittisinä tavuina. 8-bittistä tavua b 7 b 6 b 0 taas voidaan pitää äärellisen kunnanf 2 8 alkiona, jonka esitys jäännöksenä onb 0 +b 1 x+b 2 x 2 +b 3 x 3 +b 4 x 4 +b 5 x 5 +b 6 x 6 +b 7 x 7, ks. Pykälän 4.3 Esimerkki ja huomaa järjestys. Avain on tapana esittää4 N K -matriisina, jonka alkiot ovat tavuja. Jos avain on tavuittain k = k 00 k 10 k 20 k 30 k 01 k 11 k 21 k 3,NK 1, niin vastaava matriisi on k 00 k 01 k 02 k 0,NK 1 K = k 10 k 11 k 12 k 1,NK 1 k 20 k 21 k 22 k 2,NK. 1 k 30 k 31 k 32 k 3,NK 1 34

40 LUKU 5. AES 35 Huomaa miten matriisin alkiot indeksoidaan nollasta alkaen. Vastaavasti, jos syötelohko (selvätekstilohko) on tavuittain a = a 00 a 10 a 20 a 30 a 01 a 11 a 21 a 3,NB 1, niin vastaava matriisi on a 00 a 01 a 02 a 0,NB 1 A = a 10 a 11 a 12 a 1,NB 1 a 20 a 21 a 22 a 2,NB. 1 a 30 a 31 a 32 a 3,NB 1 Kryptauksen aikana käsiteltävänä on joka vaiheessa jokinl B -pituinen bittijono, ns. tila. Lohkon tapaan se esitetään tavuittain4 N B -matriisin muodossa: s 00 s 01 s 02 s 0,NB 1 S = s 10 s 11 s 12 s 1,NB 1 s 20 s 21 s 22 s 2,NB. 1 s 30 s 31 s 32 s 3,NB 1 Matriisien K,A ja S alkiot ovat 8 bitin tavuja, jotka ovat tulkittavissa kunnan F 2 8 alkioiksi. Näin matriisit ovat ko. kunnan matriiseja. Toinen tapa tulkita matriiseja on ajatella näiden sarakkeet 4-pituisiksi kunnan F 2 8 alkioiden jonoiksi. Nämä taas voidaan tulkita polynomirenkaanf 2 8[z] enintään astetta3olevien polynomien kertoimiksi ylhäältä alas lukien, ts. tällaisiksi polynomeiksi. Em. tilasvastaisi siis polynomijonoa s 00 s 10 z s 20 z 2 s 30 z 3, s 01 s 11 z s 21 z 2 s 31 z 3,..., s 0,NB 1 s 1,NB 1 z s 2,NB 1 z 2 s 3,NB 1 z 3. Jotta esitys olisi yksikäsitteinen, pitää F 2 8:n konstruktiossa käyttää sovittua kiinteää jaotonta astetta8olevaaz 2 [x]:n polynomia. RIJNDAELissa se on ns. RIJNDAEL-polynomi sama muuten kuin Pykälän 4.3 esimerkissä Kierrokset p(x) = 1+x+x 3 +x 4 +x 8, RIJNDAELissa on tietty määrän R ns. kierroksia. Kierrosten lukumäärän antaa seuraava taulu: N R N B = 4 N B = 6 N B = 8 N K = N K = N K = i:s kierros saa syötteekseen kulloisenkin tilan S ja oman ns. kierrosavaimensa R i. Erityisesti tarvitaan lähtökierrosavain R 0. Kullakin kierroksella, viimeistä lukuunottamatta, käydään läpi seuraavat operaatiot: S SubBytes(S) S ShiftRows(S) S MixColumns(S) S AddRoundKey(S,R i )

41 LUKU 5. AES 36 Viimeinen kierros on muuten sama, mutta jätetään poismixcolumns. Salausavain laajennetaan ensin ja siitä jaetaan sitten eri kierroksille kierrosavaimet. Tämä ja kierroksen eri operaatiot käydään läpi yksitellen seuraavissa pykälissä. Itse kryptaus koostuu sitten seuraavista vaiheista: Alustetaan tila:s AddRoundKey(A,R 0 ). N R 1 tavallista kierrosta. Viimeinen kierros. Dekryptattaessa käydään vaiheet läpi käänteisinä käänteisessä järjestyksessä Tavun muuntaminen (SubBytes) Tässä operaatiossa kukin tilan tavus ij muunnetaan seuraavasti: 1. Tulkitaan s ij kunnan F 2 8 alkioksi ja lasketaan sen käänteisalkio s 1 ij. Nolla-alkion käänteisalkioksi sovitaan tässä se itse. 2. Avataans 1 ij kahdeksaksi bitiksib 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0, merkitään b(x) = b 0 +b 1 x+b 2 x 2 +b 3 x 3 +b 4 x 4 +b 5 x 5 +b 6 x 6 +b 7 x 7 (Z 2 [x]:n polynomi) ja lasketaan Tulos b (x) b(x)(1+x+x 2 +x 3 +x 4 )+(1+x+x 5 +x 6 ) mod 1+x 8. b (x) = b 0 +b 1 x+b 2 x2 +b 3 x3 +b 4 x4 +b 5 x5 +b 6 x6 +b 7 x7 tulkitaan tavuksi b 7b 6b 5b 4b 3b 2b 1b 0 tai F 2 8:n alkioksi. Jakaminen Z 2 [x]:ssä 1 + x 8 :lla on muuten helppoa, sillä x k x (k,mod 8) mod 1+x 8. Kohdan 2. operaatio voidaan ajatella myös matriisien avulla. Silloin tehdään Z 2 :ssa affiini muunnos b b 0 1 b b 1 1 b b 2 0 b 3 b = b b b b 5 1 b b 6 1 b b 7 0 Dekryptauksessa operaatio tehdään käänteisessä järjestyksessä,z 2 [x]:ssä on nimittäin 1 = syt(1+x+x 2 +x 3 +x 4,1+x 8 ) (helppo todeta Eukleideen algoritmilla), joten polynomilla 1 + x + x 2 + x 3 + x 4 on inverssi modulo1+x 8 ja esiintyvä8 8-matriisi on kääntyvä modulo2. Ko. inverssi onx+x 3 +x 6. Tavun muuntaminen on kokonaisuutena epälineaarinen tavumuunnos, joka voidaan antaa yhtenä taulukkona, ns. RIJNDAELin S-laatikkona. Tällainen taulukko löytyy mm. MOLLINista ja STINSONista.

42 LUKU 5. AES Rivinsiirto (ShiftRows) Tässä operaatiossa tilan matriisiesityksen rivien alkiot siirretään syklisesti vasemmalle seuraavasti: siirto 0. rivi 1. rivi 2. rivi 3. rivi N B = 4 ei siirtoa 1 alkio 2 alkiota 3 alkiota N B = 6 ei siirtoa 1 alkio 2 alkiota 3 alkiota N B = 8 ei siirtoa 1 alkio 3 alkiota 4 alkiota Dekryptattaessa siirretään rivejä samat määrät syklisesti oikealle Sarakkeiden sekoitus (MixColumns) Tässä muunnoksessa tilamatriisin sarakkeet tulkitaan enintään astetta 3 oleviksi polynomirenkaan F 2 8[z] polynomeiksi. Kukin sarake (polynomi) kerrotaan kiinteälläf 2 8[z]:n polynomilla modulo 1 z 4, missä c(z) = c 0 c 1 z c 2 z 2 c 3 z 3 c 0 = x, c 1 = c 2 = 1 ja c 3 = 1+x. JakaminenF 2 8[z]:ssa polynomilla 1 z 4 on erityisen helppoa, sillä z k z (k,mod 4) mod 1 z 4. Vaihtoehtoisesti operaatio voidaan ajatellaf 2 8:n lineaarimuunnoksena: s 0i c 0 c 3 c 2 c 1 s 0i s 1i s = c 1 c 0 c 3 c 2 s 1i 2i c 2 c 1 c 0 c 3 s 2i s 3i c 3 c 2 c 1 c 0 s 3i Dekryptattaessa jaetaan polynomillac(z) modulo 1 z 4. Vaikkakaan 1 z 4 ei olef 2 8[z]:n jaoton polynomi 1, c(z):llä on inverssi modulo 1 z 4, sillä 1 = syt(c(z), 1 z 4 ). Inverssi saadaan Eukleideen algoritmilla (työläs laskettava) ja se on missä d(z) = d 0 d 1 z d 2 z 2 d 3 z 3, d 0 = x+x 2 +x 3, d 1 = 1+x 3, d 2 = 1+x 2 +x 3 ja d 3 = 1+x+x 3. Dekryptattaessa siis sarake (polynomi) kerrotaan d(z):lla modulo 1 z 4 eikä operaatio ole sen kummempi kuin kryptattaessakaan. MatriisimuodossaF 2 8:ssa s 0i d 0 d 3 d 2 d 1 s 0i s 1i s 2i = d 1 d 0 d 3 d 2 s 1i d 2 d 1 d 0 d 3 s. 2i s 3i d 3 d 2 d 1 d 0 s 3i 1 Se on nimittäin=(1 z) 4.

43 LUKU 5. AES Kierrosavaimen lisäys (AddRoundKey) Kierrosavain on yhtä pitkä kuin tilakin. Tässä operaatiossa kierrosavain lisätään biteittäin tilaan modulo2. Käänteinen operaatio on sama Avaimen laajentaminen Kierrosavaimet R 0,R 1,...,R NR saadaan salausavaimesta laajentamalla se ja valitsemalla sitten laajennetusta avaimesta eri kierroksille tietty osa. Laajennetun avaimen pituus bitteinä on l B (N R + 1). Tavuihin jaettuna se voidaan esittää 4 N B (N R + 1)-matriisina, jolla on siis N B (N R +1) kpl4-pituista saraketta w 0,w 1,...,w NB (N R +1) 1. Merkitään vastaavalla tavalla avaimen (matriisink) sarakkeita: Laajennettu avain lasketaan seuraavalla tavalla: k 0,k 1,...,k NK Asetetetaan w i k i (i = 0,...,N K 1). 2. Määritellään loput w i :t rekursiivisesti seuraavilla säännöillä, missä F 2 8:n vektorien yhteenlasku suoritetaan tavan mukaan alkioittain: : 2.1 Jos i 0 mod N K, lasketaan u = x i/n K kunnassaf 2 8 ja asetetaan u w i w i NK SubByte(RotByte(w i 1 )) Tässä operaatio SubByte soveltaa tavun muuntamista kuhunkin sarakkeen alkioon (tavuun). Operaatio RotByte puolestaan tekee sarakkeessa yhden alkion syklisen siirron ylöspäin. 2.2 Jos N B = 8 jai 4 mod N K, asetetaan w i w i NK SubByte(w i 1 ), missä operaatio SubByte on sama kuin kohdassa Muutoin asetetaan yksinkertaisesti w i w i NK w i 1. Nyt i:nnen kierroksen kierrosavain R i saadaan sarakkeista w inb,...,w (i+1)nb 1 (i = 0,1,...,N R ). Erityisesti N B ensimmäisestä sarakkeesta saadaan aluksi tarvittava lähtökierrosavain R 0. Huomautus. Avaimen laajennus voidaan tehdä etukäteen, kunhan vain salausavain tiedetään. Etukäteen voidaan aina laskea ainakinx i/n K :t kunnassaf 2 8.

44 LUKU 5. AES Dekryptauksen muunnelma Suoraan menetellen dekryptaus menee seuraavaa operaatioketjua kryptausoperaatioiden käänteisoperaatiot esitettiin edellä: S AddRoundKey(S,R NR ) S ShiftRows 1 (S) S SubBytes 1 (S) S AddRoundKey(S,R NR 1) S MixColumns 1 (S) S ShiftRows 1 (S) S SubBytes 1 (S). S AddRoundKey(S,R 1 ) S MixColumns 1 (S) S ShiftRows 1 (S) S SubBytes 1 (S) S AddRoundKey(S,R 0 ) Operaatioiden järjestys voidaan kuitenkin myös kääntää. Ensinnäkin rivinsiirron ja tavun muuntamisen järjestyksellä ei ole väliä, edellinen operoi riveihin ja jälkimmäinen tavuihin. Sama koskee käänteisiä operaatioita. Toiseksi, operoinnit voidaan korvata operoinneilla S AddRoundKey(S,R i ) S MixColumns 1 (S) S MixColumns 1 (S) S AddRoundKey(S,MixColumns 1 (R i )) Näin dekryptauksessa voidaan myös edetä ketjua S AddRoundKey(S,R NR ) S SubBytes 1 (S) S ShiftRows 1 (S) S MixColumns 1 (S) S AddRoundKey(S,MixColumns 1 (R NR 1))

45 LUKU 5. AES 40 S SubBytes 1 (S) S ShiftRows 1 (S) S MixColumns 1 (S) S AddRoundKey(S,MixColumns 1 (R NR 2)). S SubBytes 1 (S) S ShiftRows 1 (S) S MixColumns 1 (S) S AddRoundKey(S,MixColumns 1 (R 1 )) S SubBytes 1 (S) S ShiftRows 1 (S) S AddRoundKey(S,R 0 ) joka muistuttaa kovasti kryptausta. RIJNDAELin kryptaus ja dekryptaus ovat näin hyvin samanlaisia operaatioita. 5.3 RIJNDAELin kryptanalyysiä RIJNDAEL on jo suunnitteluvaiheessa rakennettu kestämään likipitäen kaikkia tunnettuja hyökkäyksiä tämäntapaisille kryptosysteemeille. 2 Suunnittelijat Joan Daemen ja Vincent Rijmen selostivat laajasti RIJNDAELin konstruktioperiaatteita julkisessa dokumentissa DAEMEN, J. & RIJMEN, V.: AES Proposal: Rijndael (1999), jonka he myöhemmin laajensivat kirjaksi DAE- MEN & RIJMEN. Mainittakoon vain lyhyesti, että erityisesti DESin yhteydessä paljon tutkitut lineaarinen kryptanalyysi ja differentiaalinen kryptanalyysi on RIJNDAELissa tehokkaasti estetty 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 muotoonf 2 8:ssa: S(b) = s 0 8 (s i b 255 2i 1 ) i=1 sopivillef 2 8:n alkioilles 0,s 1,s 2,s 3,s 4,s 5,s 6,s 7,s 8. Tästä jatkaen on suhteellisen helppo saada koko kryptaukselle suora algebrallinen kaava! Onkin herännyt kysymys voiko tällaisia kaavoja laskennallisesti kääntää tehokkaasti. Myönteisessä tapauksessa RIJNDAEL olisi ilmeisesti murrettavissa. Asiaa tutkitaan vilkkaasti, toistaiseksi mitään heikkouksia ei ole löytynyt. 3 2 Tässä on käytetty mm. suomalaismatemaatikon Kaisa Nybergin esittämiä ideoita. Ks. NYBERG, K.: Differentially Uniform Mappings for Cryptography. Proceedings of EuroCrypt 93. Lecture Notes in Computer Science 765. Springer Verlag (1994), Ks. esimerkiksi FERGUSON, N. & SCHROEPPEL, R. & WHITING, D.: A Simple Algebraic Representation of Rijndael. Proceedings of SAC 01. Lecture Notes in Computer Science Springer Verlag (2001), ja MURPHY, S. & ROBSHAW, M.J.B.: Essential Algebraic Structure Within the AES. Proceedings of Crypto 02. Lecture Notes in Computer Science Springer Verlag (2002), 1 16 sekä COURTOIS, N. & PIEPRZYK, J.: Cryptanalysis of Block Ciphers with Overdefined Systems of Equations. Proceedings of AsiaCrypt 02. Lecture Notes in Computer Science Springer Verlag (2002),

46 LUKU 5. AES AESin toimintamoodeja Tavallinen AESin käyttötapa on kryptata pitkä viesti lohko kerrallaan samalla avaimella, ns. ECB-moodi (electronic codebook). Toinen tapa, ns. CBC-moodi (cipher block chaining), on muodostaa aina viestilohkonw i ja edellisen kryptolohkonc i 1 biteittäinen summa modulo2eli w i c i 1 ja kryptata se, käyttäen koko ajan samaa avaintak. Aivan alussa tarvitaan tietty aloituslohkoc 0 edellisen kryptolohkon tilalla. Kaavamaisesti CBC-moodi on seuraavanlainen: w 1 w 2 w n c 0 AES AES AES c n k c 1 k c 2 c n 1 k CBC-moodissa muutos jossain viestilohkossa aiheuttaa muutoksia sitä seuraavissa kryptolohkoissa. CBC-moodia voidaan näin käyttää autentikointiin eli ns. MACiin (message authentication code) seuraavasti. Aloituslohko voisi olla vaikka pelkästään 0-biteistä koostuva. Lähettäjällä on viestilohkoistaw 1,...,w n koostuva viesti ja hän laskee CBC-moodilla vastaavat kryptolohkot c 1,...,c n käyttäen tiettyä salaista avainta k. Lähettäjä lähettää viestilohkot sekä c n :n vastaanottajalle. Vastaanottajalla on myös avain k ja hän pystyy sitä käyttäen tarkistamaan onko c n oikea. Ns. OFB-moodissa (output feedback) käytetään AESia avaimen muuntamiseen ja kryptaukseen ONE-TIME-PADin tapaista menettelyä. Lähtien tietystä alkuavaimesta κ 0 saadaan avainvuo κ 1,...,κ n kryptaamalla AESilla toistuvasti tätä avainta, κ 1 saadaan kryptaamallaκ 0. Kryptatessa käytetään jälleen koko ajan samaa salaista avaintak. Kaavamaisesti: κ 0 AES AES AES k κ 1 k κ 2 κ n 1 k κ n w 1 w 2 w n 1 w n c 1 c 2 c n 1 c n OFB-moodista saadaan variantti, ns. CFB-moodi (cipher feedback), kun avainvuon avainκ i muodostetaan kryptaamalla edeltävä kryptolohko. Jälleenκ 1 saadaan kryptaamalla aloituslohko c 0. w 1 w n c 0 AES AES AES c n k c 1 k Tätä varianttia voidaan käyttää autentikointiin kuten CBC-moodiakin, jota se muutenkin myös muistuttaa. Lisäksi on muita moodeja, mm. ns. CTR-moodi (counter mode). c n 1 k

47 Luku 6 JULKISEN AVAIMEN KRYPTAUS 6.1 Algoritmien vaativuusteoriaa Laskennallinen vaativuus eli kompleksisuus liittyy tehtävien laskennalliseen ratkaisemiseen tarvittaviin resursseihin verrattuna tehtävän kokoon. Tehtävän kokoa mitataan syötteen pituudella N, resurssit taas ovat yleensä aika eli laskenta-askelten lukumäärä tai tila eli laskennan käyttämä maksimaalinen muistitila sopivasti mitattuna. Usein tehtävät ovat ns. tunnistustehtäviä, joissa ratkaisu on kyllä-vastaus. Hyvä viite klassisen kompleksisuusteorian osalta on HOPCROFT & ULLMAN ja uudempia tuloksia on esimerkiksi kirjassa DU & KO. Jotta kompleksisuus saadaan yhteismitalliseksi, pitää sopia tietty algoritmin matemaattinen malli, esimerkiksi Turingin koneilla laskeminen, ks. kurssi Automaattiteoria, Formaalit kielet tai Matemaattinen logiikka. Algoritmimalleista on käytettävissä deterministinen versio, missä algoritmilla ei ole valinnanmahdollisuuksia, ja epädeterministinen versio, missä algoritmin seuraava askel saattaa olla valittavissa useista mahdollisista askelista. Jotta epädeterministisen algoritmin 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 eivastaukseksi. Muissa kuin tunnistustehtävissä epädeterministisen algoritmin on jokaisella syötteellä tuotettava ratkaisu (tulostus) joillain askelvalinnoilla. Epädeterministinen algoritmi onkin useimmiten parhaiten ajateltavissa ratkaisun todennusmenetelmäksi, ei sen tuottamismenetelmäksi. Kompleksisuutta tarkastellaan pääosin asymptoottisena, ts. suurten tehtävien osalta, eikä vakiokertoimella eroavia aika-/tilakompleksisuuksia eroteta toisistaan, lineaarinen kiihdytys ja tilan pakkaus kun ovat helppoja saada aikaan missä tahansa algoritmimallissa. Vaikka algoritmimallin valinnalla on selvä vaikutus kompleksisuuteen, sillä ei ole oleellista merkitystä, ts. se ei muuta kompleksisuusluokkia, joihin tehtävät vaativuutensa perusteella jaetaan. Usein kompleksisuus annetaan O-notaatiomuodossa O(f(N)), ks. Pykälä 2.6. Menemättä sen tarkemmin algoritmimalleihin, määritellään muutama keskeinen kompleksisuusluokka. 42

48 LUKU 6. JULKISEN AVAIMEN KRYPTAUS 43 Aikakompleksisuusluokka P (deterministisesti polynomiaikaiset tehtävät) muodostuu niistä tehtävistä, joissa N-pituisen probleeman (syötteen) ratkaisemiseen deterministisellä algoritmilla kuluu enintään p(n) askelta, missä p on jokin tehtävästä riippuva N:n polynomi. Esimerkiksi kokonaislukujen peruslaskutoimitukset ja s.y.t.:n lasku ovatp:ssä, ks. Luku 2. Aikakompleksisuusluokka N P (epädeterministisesti polynomiaikaiset tehtävät) taas muodostuu niistä tehtävistä, joissa N-pituisen probleeman ratkaisemiseen epädeterministisellä algoritmilla kuluu enintään p(n) askelta, missä p on jokin jälleen tehtävästä riippuva N:n polynomi. Esimerkiksi kokonaislukujen yhdisteisyys on N P:ssä: Arvataan (epädeterministisyys!) vain kaksi tekijää ( 1) ja tarkistetaan kertolaskulla onko arvaus oikea. Aikakompleksisuusluokka co N P (komplementäärisesti epädeterministisesti polynomiaikaiset tehtävät) taas muodostuu niistä tunnistustehtävistä, joiden komplementti on N P:ssä. Probleeman komplementti saadaan, kun kyllä- ja ei-vastaukset vaihdetaan keskenään. Esimerkiksi alkuluvun tunnistus on co N P:ssä, sillä sen komplementti on yhdisteisyystestaus, joka on NP:ssä. Ei ole kovin vaikea näyttää, että alkuluvun tunnistus on NP:ssä, mutta huomattavasti vaikeampi, että se on P:ssä, ks. Pykälä 7.4. Ilmeisesti P N P ja tunnistustehtävien osalta P co N P. Onko kumpikaan näistä sisältymisistä aito, on avoin probleema, ja hyvin kuuluisa sellainen! Yleisesti uskotaan, että kumpikin on aito. Myöskään ei tiedetä, onko tunnistustehtävien osalta kumpikaan yhtälöistä N P = co N P tai P = N P co N P voimassa, yleisesti kuitenkin uskotaan, ettei ole. Tilakompleksisuusluokka PSPA CE (deterministisesti polynomitilaiset tehtävät) muodostuu niistä tehtävistä, joissa N-pituisen probleeman (syötteen) ratkaisemiseen deterministisellä algoritmilla tarvitaan enintään p(n) muistiyksikköä, missä p on jokin tehtävästä riippuva N:n polynomi. Esimerkiksi kokonaislukujen peruslaskutoimitukset ja s.y.t.:n lasku ovat tietysti PSPA CE:ssä. Tilakompleksisuusluokka N PSPA CE (epädeterministisesti polynomitilaiset tehtävät) taas muodostuu niistä tehtävistä, joissa N-pituisen probleeman ratkaisemiseen epädeterministisellä algoritmilla kuluu enintään p(n) muistiyksikköä, missä p on jokin jälleen tehtävästä riippuva N: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 probabilistinen eli stokastinen. Stokastinen algoritmi saattaa satunnaisesti epäonnistua, ts. se ei tuota lainkaan tulosta ja luopuu tehtävän ratkaisemisesta. Tällaisia algoritmeja kutsutaan Las Vegas -algoritmeiksi. Stokastinen algoritmi saattaa toisaalta satunnaisesti tulostaa väärän ratkaisun, tällaisia algoritmeja kutsutaan puolestaan Monte Carlo -algoritmeiksi. Huomaa, että jokainen Las Vegas -algoritmi voidaan helposti muuntaa Monte Carlo -algoritmiksi (miten?). Monte Carlo -algoritmeja vastaava polynomiaikainen kompleksisuusluokka on BPP (rajoitetun todennäköisyyden polynomiaikaiset tehtävät). Algoritmin pitää tällöin tuottaa oikea tulos vähintään todennäköisyydelläp, missäp > 1/2 on ennalta valittu syötteestä riippumaton luku. Luokkien BPP ja N P suhde on pitkälti avoin ei esimerkiksi tiedetä sisältyykö jompikumpi toiseen. Tulevaisuuden kvanttitietokoneita ajatellen voidaan edelleen määritellä polynomiaikainen kompleksisuusluokka BQP (rajoitetun virheen kvanttipolynomiaikaiset tehtävät). Kryptaukseen liittyen on mielenkiintoista todeta, että tähän luokkaan kuuluvat lukujen tekijöihinjako ja diskreetti logaritmi (ns. Shorin algoritmit, ks. Pykälä 15.3). Algoritmin tehtävä saattaa olla yhden tehtävän probleeman konvertoiminen toisen tehtävän probleemaksi, tällöin puhutaan reduktiosta. Jos tehtävä A saadaan redusoiduksi toiseksi tehtäväksi B käyttäen deterministisessä polynomiajassa toimivaa reduktiota, saadaan B:n determi-

49 LUKU 6. JULKISEN AVAIMEN KRYPTAUS 44 nistisestä polynomiaikaisesta algoritmista A:lle deterministinen polynomiaikainen algoritmi. 1 Tehtävän sanotaan olevan N P-kova, jos jokainen N P:n tehtävä voidaan redusoida siihen deterministisellä polynomiaikaisella algoritmilla. N P-kova tehtävä on N P-täydellinen, jos se on itse N P:ssä. N P-täydellinen tehtävä on siinä mielessä pahin mahdollinen, että jos se voitaisiin näyttää deterministisesti polynomiaikaiseksi, niin kaikki N P:n tehtävät olisivat P:ssä janp = P. NP-täydellisiä tehtäviä tunnetaan nykyään toistatuhatta, laskentatavasta riippuen enemmänkin. Lause 6.1. Jos jokin N P-täydellinen tunnistustehtävä on N P co N P:ssä, niin tunnistustehtävien osalta N P = co N P. Todistus. Oletetaan, että jokin N P-täydellinen tunnistustehtävä C on N P co N P:ssä. Tarkastellaan mielivaltaista N P:ssä olevaa tunnistustehtävää A. Koska C on N P-täydellinen, on A redusoitavissa deterministisessä polynomiajassa C:hen. Näin ollen A:n komplementti on redusoitavissa deterministisessä polynomiajassa C:n komplementtiin, joka on myös N P:ssä. Siispä A on co NP:ssä. A oli mielivaltaisesti valittu, joten NP co NP ja välittömänä seurauksena myös co N P N P, ja edelleen N P = co N P. Koska yleisesti uskotaan, että N P co N P, ei mikään N P-täydellinen tunnistustehtävä näin olisinp co NP:ssä. Vanha tehtävien jako laskenta-ajan puolesta käytännössä mahdollisiin eli selviäviin (tractable) ja liian aikaaviepiin eli selviä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ä N P P, olisivat N P-täydelliset tehtävät selviämättömiä. Käytännössä luokan BPP:kin tehtävät ovat mahdollisia ratkaista: sovelletaan algoritmia vain tehtävään niin monta kertaa, että todennäköisyys sille, että puolet näistä 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 saattaa sisältää stokastisia elementtejä. 6.2 Julkisen avaimen kryptosysteemi Julkisen avaimen kryptosysteemissä eli epäsymmetrisessä kryptosysteemissä on ainakin kaksi avainta: julkinen avain ja salainen avain tai useampia sellaisia. Jotta salaisuus pysyisi, pitää olla laskennallisesti hyvin vaativaa laskea salainen avain julkisesta avaimesta lähtien. Julkinen avain voidaan jättää paikkaan, josta kuka tahansa halukas voi sen ottaa käyttöön ja lähettää kryptatun viestin jollekin salaisen avaimen haltijalle. Tämän sinänsä yksinkertaisen idean esittivät Whitfield Diffie ja Martin Hellman sekä heistä riippumatta Ralph Merkle vuonna Äkkiseltään tuntuisi olevan hyvä idea järjestää avaimet siten, että kryptanalyysi CO-datan ja julkisen avaimen avulla olisi laskennallisesti hyvin vaativa, esimerkiksi N P-täydellinen. Melko ilmeisesti kyseinen kryptanalyysitehtävä on nimittäin N P:ssä: Arvataan vain selväteksti ja kryptataan se julkisella avaimella. Vaikka kryptauksessa olisi mukana stokastisiakin elementtejä (satunnaisuutta), tämä menettely toimii, sillä satunnaiset valinnat voidaan myös arvata. 1 Huomaa, että vaikka polynomiaikaisen reduktion tuloste voi olla pidempi kuin sen syöte, tulosteen pituus on kuitenkin polynomiaalinen syötteen pituuteen verrattuna, ja kahden polynomin yhdistetty funktio on polynomi. Vastaavaa ominaisuutta ei juuri ole muilla funktioluokilla. Esimerkiksi kahden eksponenttifunktion yhdiste ei ole eksponenttifunktio. 2 Alkuperäisviite on DIFFIE, W. & HELLMAN, M.: New Directions in Cryptography. IEEE Transactions on Information Theory IT 22 (1976), Tiettävästi jo hieman aikaisemmin englantilaiset James Ellis, Clifford Cocks 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.

50 LUKU 6. JULKISEN AVAIMEN KRYPTAUS 45 Mainittu kryptanalyysitehtävä voidaan myös pukea tunnistustehtäväksi, ns. kryptotunnistukseksi: Onko kolmikossa (w, k, c), missä k on julkinen avain, w kryptotekstiä c vastaava selväteksti? Kryptotunnistus on P:ssä, mikäli kryptaus on determinististä, joten sen saaminen kompleksisemmaksi edellyttää stokastistista kryptausta. Kovin pitkälle tällä tavoinkaan ei luultavasti päästä, sillä Lause 6.2. Jos jollekin kryptosysteemille kryptotunnistus on N P-täydellinen, niin N P = co N P. Todistus. Kryptotunnistustehtävä on ilmeisesti N P:ssä, stokastiset osat voidaan arvata. Se on toisaalta myös co N P:ssä. Jos nimittäin c on kryptoteksti, niin sitä vastaa tarkalleen yksi selväteksti, muutoinhan dekryptaus ei onnistu. Arvataan nyt jokin selvätekstiw ja kryptataan se julkisella avaimellak. Jos tuloksena onc, verrataanw:tä jaw :a ja hyväksytään kolmikko(w,k,c), mikäliw 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ä olla N P-täydellinen. Tulos osoittaa myös sen, etteivät stokastiset kryptosysteemit liene huomattavasti parempia kuin deterministiset. Julkisen avaimen systeemien yhteydessä on tapana puhua ns. yksisuuntaisista funktioista: funktio y = f(x) on yksisuuntainen, jos y:n laskeminen x:stä on selviävä, mutta x:n laskeminen y:stä on selviämätön, ehkä jopa N P-täydellinen. Jos julkisen avaimen systeemin kryptausfunktio on e k, niin funktio (c,k) = (e k (w),k) = f(w,k) on ideaalisesti yksisuuntainen. Huomaa, että koska julkinen avain k on aina saatavilla, se on mukana funktion arvossa. Kiinteälle julkiselle avaimelle k vastaava salainen avain antaa toisaalta ns. salaluukun, jolla w voidaan laskeac:stä nopeasti. Salaluukun olemassaolo tietysti merkitsee sitä, ettei kryptausfunktio todellisuudessa ole yksisuuntainen, josk on kiinteä. Huomautus. Salaluukun liittäminen N P-täydelliseen tehtävään on osoittautunut pulmalliseksi. Käytännössä salaluukun mukaan ottaminen rajaa muuten N P-täydellisestä tehtäväpiiristä osan, joka ei ole N P-täydellinen eikä usein edes kovin vaativa. Itse asiassa yhdestäkään kryptosysteemeihin liittyvästä funktiosta, jonka pitäisi ideaalisesti olla yksisuuntainen, ei ole voitu todistaa, että se sitä olisi. Taustalla kummittelee tietysti P = N P -probleema. Otollisia probleemoja, joiden varaan voi rakentaa hyvän kryptosysteemin, ovatkin sellaiset, joiden kompleksisuus on avoin. Tällöin systeemin murtaminen merkitsisi samalla teoreettista läpimurtoa kompleksisuusteoriassa ja algoritmikehityksessä. Kaikki tämä, ja myös Lause 6.2, tietää sitä, ettei kompleksuusteorialla ole aivan sellaista merkittävää roolia kryptologiassa kuin usein todetaan. Kryptografia nimittäin mainitaan usein kompleksisuusteorian käytännön sovelluksena par excellence. Julkisen avaimen kryptosysteemeillä voidaan toteuttaa protokollia, joihin ei salaisen avaimen systeemeillä pystytä. Otetaan esimerkkinä aidonnus ja allekirjoitus. Jos B haluaa varmentaa, että viesti tulee A:lta, pitää viestissä olla mukana tietoa, joka riittävän yksiselitteisesti spesifioi 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 C ei saa voida tekeytyä A:ksi. (ii) A:n tulee pystyä suojautumaan B:n tekemiä väärennöksiä vastaan, joiden hän väittää allekirjoitettuina tulleen A:lta. (iii) A ei saa voida kieltää lähettäneensä viestiä, jonka hän tosiasiallisesti lähetti.

51 LUKU 6. JULKISEN AVAIMEN KRYPTAUS 46 Merkitään e A :lla ja e B :llä A:n ja B:n julkisia kryptausfunktioita ja d A :lla sekä d B :llä vastaavia salaisia dekryptausfunktioita. Tässä oletetaan, että kryptaus on deterministinen. Menettely on nyt seuraava: 1. A lähettää viestinw B:lle muodossac = e B (d A (w)). 2. B laskee: e A (d B (c)) = e A (d A (w)) = w. Huomaa, ettäe A jad A ovat käänteisfunktioita. Ehdot (i) ja (iii) toteutuvat, sillä vain A tietää d A :n. Viestissä tulee silloin olla tunnistettava oikeantyyppinen sisältö, muutoinhan viestillä ei ole välttämättä mitään merkitystäkään. Myös ehto (ii) toteutuu, sillä B:n olisi mahdotonta itse generoida oikeannäköistä viestiä, koska hän ei tiedä d A :ta. Jos vain allekirjoitus on tärkeä, mutta ei viestin salaaminen, riittää, että A lähettää B:lle parin (w,d A (w)). Tämä yksinkertaisin versio aidonnuksesta/allekirjoituksesta on haavoittuva, ja parempiakin protokollia on, ks. Luku Reppusysteemin nousu ja tuho Esimerkkinä edellisen pykälän kompleksisuuspäättelyjen vaikutuksista on tunnettu julkisen avaimen systeemi KNAPSACK 3 eli reppusysteemi. Reppusysteemin pohjalla on ns. reppuprobleema. Sen syötteenä on (a, m), missä a = (a 1,a 2,...,a n ) on positiivisten kokonaislukujen vektori jamon positiivinen kokonaisluku jossain lukujärjestelmässä esitettyinä. Tehtävänä on kirjoittaa m joidenkin a:n komponenttien summaksi tai ilmoittaa, ettei tällainen kirjoitelma ole mahdollinen. Ts. tehtävänä on valita 0 1-luvut c 1,c 2,...,c n siten, että n c i a i = m i=1 tai sitten ilmoittaa, ettei se ole lainkaan mahdollista. Tunnistustehtävässä pitää vain ilmoittaa onko valinta mahdollinen. Reppuprobleema on selvästinp:ssä: Arvataan vainc 1,c 2,...,c n ja testataan onko arvaus oikea. Itse asiassa sen tiedetään olevannp-täydellinen. KNAPSACKin kryptaus tapahtuu seuraavasti. Viestisymbolit ovat bittejä ja viestilohkon pituus on n. Viestilohkow = b 1 b 2 b n (bittijono) kryptataan luvuksi n c = e k (w) = b i a i. Julkinen avain k on a. Ilmeisesti tällainen kryptaus on P:ssä. Kryptanalyysi lähtien c:stä ja a:sta on näinnp-täydellinen. Ilman mitään apuneuvoja KNAPSACKin dekryptaus olisi sekin N P-täydellinen. Salaluukku otetaan käyttöön lähtemällä liikkeelle yksinkertaisista reppuprobleemoista, jotka voidaan ratkaista P:ssä, ja muuntamalla nämä sitten tavallisen mielivaltaisen reppuprobleeman valepukuun. Tämän vm. reppuprobleeman a julkaistaan julkisena avaimena. Salaluukkutietoa käyttäen voidaan reppuprobleema (a, c) palauttaa alkuperäiseen helposti ratkaistavaan muotoonsa ja näin dekryptata salattu viesti. Mutta tämä ei johda vahvaan kryptosysteemiin, ts. salaluukkua käyttäen ei voida saada valepukuista reppusysteemiä, jonka kryptanalyysi olisi N P-täydellinen. Itse asiassa KNAPSACKin eri variantit onkin todettu vaarallisen heikoiksi eikä niitä juurikaan enää käytetä. Sangen tunnettu on ns. Shamirin hyökkäys perusknapsackiä vastaan, ks. esimerkiksi SALOMAA. 3 KNAPSACK on yhtenä ensimmäisistä julkisen avaimen kryptosysteemeistä historiallisesti merkittävä, alkuperäisviite on MERKLE, R. & HELLMAN, M.: Hiding Information and Signatures in Trapdoor Knapsacks. IEEE Transactions in Information Theory IT 24 (1978), i=1

52 LUKU 6. JULKISEN AVAIMEN KRYPTAUS Julkisen avaimen kryptaukseen sopivia tehtäviä Reppuprobleeman tavoin ne tehtävätyypit, joille on löydetty käyttöä julkisen avaimen kryptauksessa, ovat yleensä lukuteorian tai algebran tehtäviä, usein alunperin hyvinkin abstrakteja ja vain teoreettisesti kiinnostavia. Tämä on tuonut monet aikaisemmin täysin puhtaan matematiikan piiriin kuuluviksi katsotut probleemat ja tulokset käytännön kryptosysteemien pohjaksi. Erityisesti algebrallisen lukuteorian sekä siihen liittyvän algebrallisten käyrien teorian sangen esoteerisiksi katsotut tulokset ja tehtävät ovat näin tulleet konkreettiseen ja laajaan käyttöön. Eräitä esimerkkejä: Kryptosysteemi RSA, RABIN ELGAMAL, DIFFIE HELLMAN, XTR MENEZES VANSTONE, CRANDALL ARITHMETICA NTRU MCELIECE, NIEDERREITER Tehtävätyyppi Kahden suuren alkuluvun aukikerrotun tulon tekijöihinjako Diskreetin logaritmin laskeminen syklisessä ryhmässä Logaritmin laskeminen elliptisen käyrän määrittämässä syklisessä ryhmässä Konjugaattiprobleema ryhmässä Lukuhilan pienimmän vektorin etsiminen 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 Koodausteoria) taas ovat tunnetusti N P-täydellisiä tehtäviä, joten NTRUn, MCELIECEn ja NIEDER- REITERin osalta tilanteen pitäisi olla samantapainen kuin KNAPSACKin, jota ne muutenkin kaukaisesti muistuttavat. Näistä onkin löydetty heikkouksia. 4 MCELIECEn tarvitsemien avainten suuri koko on vakavasti rajoittanut sen käyttöä. Sen sijaan NTRU on jossain määrin käytössä. ARITHMETICAn haittapuolena on sopivan ryhmän löytäminen tähänastiset valinnat ovat osoittautuneet huonoiksi. Jatkossa käsitellään systeemejä RSA, ELGAMAL, DIFFIE HELLMAN, XTR, MENEZES VANSTONE ja NTRU. Hyvä yleisesitys on esimerkiksi kirjassa GARRETT. 4 Ks. esimerkiksi CANTEAUT, A. & SENDRIER, N.: Cryptanalysis of the Original McEliece Cryptosystem. Proceedings of AsiaCrypt 98. Lecture Notes in Computer Science Springer Verlag (2000).

53 Luku 7 LUKUTEORIA. OSA Eulerin funktio ja Eulerin lause Palataan aluksi Pykälässä 2.4 jo mainittuun Eulerin funktioon φ(m), joka ilmoitti kokonaisluvulle m 2 niiden kokonaislukujenx lukumäärän välillä1 x < m, joillesyt(x,m) = 1, ja samalla alkuluokkien lukumäärän modulom. Tavallisesti määritellään myösφ(1) = 1. Lause 7.1. (i) Jos p on alkuluku jak 1, niin Erikoisestiφ(p) = p 1. (ii) Jos syt(m, n) = 1, niin (φ:n multiplikatiivisuus). φ(p k ) = p k 1 (p 1). φ(mn) = φ(m)φ(n) Todistus. (i) Luvuista 1,2,...,p k, joka p:s on p:llä jaollinen. Näin ollen p:llä jaottomia lukuja on p k p k /p = p k 1 (p 1) kpl. (ii) Kirjoitetaan luvut 1, 2,..., mn taulukoksi n n+1 n+2 n+3 2n 2n+1 2n+2 2n+3 3n.... (m 1)n+1 (m 1)n+2 (m 1)n+3 mn Tapaukset n = 1 ja m = 1 ovat selviä, joten voidaan olettaa, että n,m 2. Jokaisessa sarakkeessa olevat luvut ovat keskenään kongruentteja modulo n. Lauseen 2.11 Seurauksen nojalla kunkin sarakkeen luvut taas muodostavat jäännössysteemin modulo m. Sellaisia sarakkeita, joissa olevien lukujen s.y.t. n:n kanssa on = 1, on φ(n) kpl. (Muista, että jos x y mod n, niin syt(x, n) = syt(y, n).) Kussakin tällaisessa sarakkeessa on φ(m) sellaista lukua, joiden s.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 luvunxalkutekijöihinjakoa x = p i 1 1 p i 2 2 p i N N 48

54 LUKU 7. LUKUTEORIA. OSA 2 49 (ks. Lauseet 2.2 ja 2.6) saadaan lausetta käyttäen φ(x) = φ(p i 1 1 )φ(p i 2 2 ) φ(p i N N ) = p i p i p i N 1 N (p 1 1)(p 2 1) (p N 1). Koska tekijöihinjako kuitenkin on vaativa operaatio, ei φ(x) ole tätä kautta laskettavissa käytännössä, ellei jakoa ole valmiina saatavilla. Tästä joka tapauksessa nähdään melko suoraan, että josxon 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) Jos syt(x, m) = 1, niin x φ(m) 1 mod m. Todistus. Valitaan positiivisesta jäännössysteemistä modulo m alkuluokkien edustajat j 1,j 2,...,j φ(m) eli supistettu jäännössysteemi. Silloin luvut xj 1,xj 2,...,xj φ(m) muodostavat myös supistetun jäännössysteemin, sillä Lauseen 2.11 Seurauksen mukaisesti ne eivät ole keskenään kongruentteja ja niiden s.y.t. m:n kanssa on = 1. Niinpä voidaan luvut xj 1,xj 2,...,xj φ(m) ja j 1,j 2,...,j φ(m) asettaa jossakin järjestyksessä pareittain kongruenssiin: xj k j ik mod m (k = 1,2,...,φ(m)). Kertomalla nämä kongruenssit puolittain keskenään saadaan x φ(m) j 1 j 2 j φ(m) j 1 j 2 j φ(m) mod m ja, koskasyt(j 1 j 2 j φ(m),m) = 1, supistamalla edelleenx φ(m) 1 mod m. Välittömänä seurauksena saadaan Lause 7.3. (Fermat n pieni lause) Jospon alkuluku jaxei olep:llä jaollinen, niin x p 1 1 mod p. Eulerin lause on usein avuksi laskettaessa kongruenssipotensseja modulo m. Paitsi että käytetään venäläisten talonpoikien algoritmia, redusoidaan ensin eksponentti modulo φ(m). Jos k = qφ(m)+r (jakolasku), niin Edelleen huomataan välittömästi, että x k = x qφ(m)+r = (x φ(m) ) q x r 1 q x r = x r mod m. x 1 x φ(m) 1 mod m ja että jos k l mod φ(m), niin x k x l mod m. (Koko ajan olettaen, että syt(x,m) = 1.) Erityisesti Fermat n pieni lause on käyttökelpoinen laskettaessa kongruenssipotensseja modulo alkuluku. Jospon alkuluku, niin esimerkiksi aina x p x mod p. 7.2 Kertaluku ja diskreetti logaritmi Pienintä sellaista lukua i 1 (jos olemassa), että x i 1 mod m, kutsutaan x:n kertaluvuksi modulom. Seuraavassa muutama kertaluvun perusominaisuus:

55 LUKU 7. LUKUTEORIA. OSA 2 50 Lause 7.4. (i) Kertaluku on olemassa täsmälleen silloin, kun syt(x,m) = 1. (ii) Jos x j 1 mod m ja x:n kertaluku modulomon i, niin i jakaa j:n. Erityisesti Eulerin lauseen seurauksenaijakaaφ(m):n. (iii) Josx:n kertaluku modulom oni, niinx j :n kertaluku modulomon pyj(i, j) j = i syt(i, j) (ks. Lause 2.9). (iv) Jos x:n kertaluku modulo m on i ja y:n kertaluku modulo m on j ja syt(i,j) = 1, niin xy:n kertaluku modulom onij. Todistus. (i) Kun syt(x,m) = 1, niin ainakin x φ(m) 1 mod m (Eulerin lause). Toisaalta, jos syt(x,m) 1, on ilmeisesti myössyt(x i,m) 1 ja näin ollen x i 1 mod m, aina kuni 1. (ii) Josx j 1 mod m, muttax:n kertalukuiei jakaisij:tä, niinj = qi+r, missä1 r < i, (jakolasku) ja x r = x r 1 q x r (x i ) q = x qi+r = x j 1 mod m jaiei olisikaan pienin mahdollinen. (iii) Jos x:n kertaluku modulo m on i ja x j :n kertaluku modulo m on l, niin ensinnäkin i jl (kohta (ii)) jaj jl, jotenpyj(i,j) jl elipyj(i,j)/j onl:n tekijä. Toiseksi(x j ) pyj(i,j)/j 1 mod m, joten l jakaapyj(i,j)/j:n (kohta (ii) jälleen). Siispäl = pyj(i,j)/j. (iv) Jos x:n kertaluku modulo m on i ja y:n kertaluku modulo m on j ja syt(i,j) = 1, niin ensinnäkin (xy) i = x i y i y i mod m, joten (xy) i :n kertaluku modulo m on sama kuin y i :n eli j (kohta (iii)). Mutta, jos xy:n kertaluku modulomon k, niin (xy) i :n kertaluku modulomonk/syt(i,k) (jälleen kohta (iii)). Näin ollen j k. Vastaavasti todetaan, että i k. Koska syt(i, j) = 1, on näin ollen oltavaij k. Toisaalta (xy) ij = (x i ) j (y j ) 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, niing on ns.m:n primitiivinen juuri eli primitiivinen juuri modulo m. Tietysti tällöin pitää olla syt(g, m) = 1. Koskag:n potenssit 1,g,g 2,...,g φ(m) 1 eivät tällöin ole keskenään kongruentteja muutoin voitaisiin pienempi potenssi supistaa pois kongruenssista ja saada g:lleφ(m):ää pienempi kertaluku ja niitä on φ(m) kpl, ne muodostavat itse asiassa supistetun jäännössysteemin. Seuraava primitiivisten juurten ominaisuus otetaan käyttöön todistuksetta 1. 1 Todistus ei ole kovin vaikea, mutta aika pitkä tapaukset m = 2 ja m = 4 ovat tietysti triviaaleja. Se löytyy kutakuinkin mistä tahansa lukuteorian kirjasta, ks. esimerkiksi SIERPINSKI. Myös kryptologian kirjoista saattaa löytyä tämä todistus, ks. esimerkiksi KRANAKIS tai GARRETT.

56 LUKU 7. LUKUTEORIA. OSA 2 51 Lause 7.5. Luvulla m 2 on primitiivisiä juuria tarkalleen siinä tapauksessa, että se on joko 2 tai4tai muotoap k tai2p k, missäpon 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 alkuluvulla p on primitiivisiä juuria φ(p 1) kpl. Todistus. Josg onm:n primitiivinen juuri, niin luvuista (g i, mod m) (i = 1,2,...,φ(m) 1) ne, joissa syt(i, φ(m)) = 1, ovat myös m:n primitiivisiä juuria ja itse asiassa tarkalleen kaikki m: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 karakterisointi. Lause 7.7. (Lucas n kriteeri alkuluvuille) Luku p 2 on alkuluku täsmälleen silloin, kun on olemassa kertalukuap 1 modulopoleva luku. Todistus. Jospon alkuluku, sillä on primitiivinen juuri ja se on kertalukuap 1. Jos taas on lukux, joka on kertalukuap 1 modulop, niinp:n on oltava alkuluku. Muutoin nimittäin φ(p) < p 1 eikä x:n kertaluku voi näin olla p 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 antaa m:n primitiiviselle juurelle käyttökelpoisen testin, jota tarvitaan pystytettäessä tiettyjä kryptosysteemejä, ks. Pykälä Yleisessä tapauksessa jo φ(m):n laskeminen on vaativa tehtävä suurille m:n arvoille, tekijöihinjaosta puhumattakaan. Lause 7.8. (Lucas n kriteeri primitiiviselle juurelle) Luku 1 g < m on m:n primitiivinen juuri täsmälleen silloin, kun syt(g,m) = 1 ja jokaiselleφ(m):n alkutekijälleq on g φ(m)/q 1 mod m. Todistus. Josg on m:n primitiivinen juuri, niin ilmeisestisyt(g,m) = 1 jag φ(m)/q 1 mod m jokaiselleφ(m):n alkutekijälleq, koskag:n kertaluku on φ(m). Jos taas syt(g,m) = 1 ja g φ(m)/q 1 mod m jokaiselle φ(m):n alkutekijälle q, niin g:n kertaluku i jakaa φ(m):n (Lause 7.4 (ii)), ts. φ(m) = il. Jos l = 1, niin i = φ(m) ja g on primitiivinen juuri. Muu ei toisaalta tule kysymykseen, sillä jos olisi l > 1, niin l:llä olisi alkutekijäq jal = q t ja g φ(m)/q = g il/q = g it = (g i ) t 1 t = 1 mod m. Yhdistämällä nämä kaksi Lucas n kriteeriä saadaan vielä Lause 7.9. (Lucas Lehmer-kriteeri alkuluvulle) Luku p 2 on alkuluku täsmälleen silloin, kun on olemassa sellainen lukug, ettäg p 1 1 mod p ja jokaisellep 1:n alkutekijälleq on g (p 1)/q 1 mod p. 2 Tämä on syy, miksi kummallisen näköinen lausekeφ(φ(m)) esiintyy toisinaan esimerkiksi kryptografiassa.

57 LUKU 7. LUKUTEORIA. OSA 2 52 Todistus. Jos p on alkuluku, valitaan g:ksi jokin primitiivinen juuri modulo p. Oletetaan sitten, että luvulleg ong p 1 1 mod p jag (p 1)/q 1 mod p jokaisellep 1:n alkutekijälleq. Silloinp g p 1 1, jotensyt(g,p) = 1. Edelleen, josj ong:n kertaluku modulo p, 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äpon alkuluku. Koskam:n primitiiviselle juurelleg luvut1,g,g 2,...,g φ(m) 1 muodostavat supistetun jäännössysteemin modulo m, niin jokaiselle luvullex, jolla ei ole yhteisiä tekijöitäm:n kanssa, on täsmälleen yksi sellainen eksponentti y väliltä 0 y < φ(m), että g y x mod m. Tätä eksponenttia kutsutaan x:n diskreetiksi logaritmiksi eli indeksiksi modulo m kannassa g. Ei tunneta tehokkaita algoritmeja diskreetin logaritmin laskemiseksi ja tähän perustuu mm. kryptosysteemi ELGAMAL. Asiaan palataan myöhemmin. Epädeterministinen polynomiaikainen algoritmi lähtien syötteestä (m, g, x) tietysti on: Arvataan vain indeksi y ja testataan onko se oikea. Potenssiinkorotus venäläisten talonpoikien algoritmilla redusoiden tulosta modulomon polynomiaikainen. 7.3 Kiinalainen jäännöslause Jos modulinm tekijöitä tunnetaan, ts. voidaan kirjoittaa m = m 1 m 2 m k, seuraa kongruenssista x y mod m luonnollisesti kongruenssit x y mod m i (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ätm 1,m 2,...,m k ovat pareittain keskenään jaottomia, ts. syt(m i,m j ) = 1, kuni j: Lause (Kiinalainen jäännöslause 3 ) Jos luvut y 1,y 2,...,y k ovat annettuja ja modulit m 1,m 2,...,m k ovat pareittain keskenään jaottomia, on täsmälleen yksi kokonaislukuxmodulo m 1 m 2 m k, joka toteuttaa kaikki k kongruenssia x y i mod m i (i = 1,2,...,k). Todistus. Merkitään M = m 1 m 2 m k ja M i = M/m i (i = 1,2,...,k). Koska m i :t ovat pareittain keskenään jaottomia,syt(m 1,M 2,...,M k ) = 1 jasyt(m i,m i ) = 1 (i = 1,2,...,k). Seuraava menetelmä tuottaa ratkaisun x (jos sellainen on!) ja näyttää myös, että ratkaisu on yksikäsitteinen modulo M: 1. CRT-algoritmi: 1. Kirjoitetaan Eukleideen algoritmia käyttäen syt(m 1,M 2,...,M k ) = 1 Bezout n muotoon (ks. Lause 2.8) 1 = c 1 M 1 +c 2 M 2 + +c k M k. 2. Tulostetaan x c 1 M 1 y 1 + c 2 M 2 y c k M k y k mod M, vaikkapa positiivisessa jäännössysteemissä. 3 Nimi Kiinalainen jäännöslause (engl. Chinese Remainder Theorem eli CRT) tulee siitä, että kiinalaismatemaatikot tunsivat tämän jo kauan sitten, ainakin tapauksessak = 2.

58 LUKU 7. LUKUTEORIA. OSA 2 53 Menettely toimii, jos ratkaisu on, sillä kongruensseista x y i mod m i seuraa suoraan, että c i M i x c i M i y i mod M (i = 1,2,...,k) ja puolittain yhteenlaskien edelleen että x = 1 x = (c 1 M 1 +c 2 M 2 + +c k M k )x c 1 M 1 y 1 +c 2 M 2 y 2 + +c k M k y k mod M. Vielä pitää vielä osoittaa, että ratkaisu on olemassa. Koska ilmeisestikinm i 0 mod m j, josi j, ja toisaalta1 = c 1 M 1 +c 2 M 2 + +c k M k, niinc i M i 1 mod m i (i = 1,2,...,k). Siispä x c 1 M 1 y 1 +c 2 M 2 y 2 + +c k M k y k y i mod m i (i = 1,2,...,k), kuten pitääkin. Koska nytc i M 1 i myös toisella tavalla: mod m i, voidaan edelleen päätellä, että ratkaisu saadaan 2. CRT-algoritmi: 1. Lasketaan Eukleideen algoritmillan i M 1 i mod m i (i = 1,2,...,k). 2. Tulostetaan x y 1 M 1 N 1 +y 2 M 2 N 2 + +y k M k N k mod M (positiivisessa jäännössysteemissä). Todistus antaa algoritmin (kaksikin) lauseessa mainitun luvun x etsimiseksi. Ilmeisesti tämä algoritmi on polynomiaikainen, kun syötteenä ovat luvuty 1,y 2,...,y k jam 1,m 2,...,m k. Muitakin 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 = f x (m) = (x, mod m) olevien funktioiden sovituksen (interpolaation) pisteiden (m i,y i ) kautta, seikka, jota voidaan käyttää eräissä protokollissa. Kiinalainen jäännöslause on erittäin käyttökelpoinen muutenkin monissa yhteyksissä. Hyvä viite on DING & PEI & SALOMAA. 7.4 Alkulukujen testaus ja generointi Kesti kauan ennenkuin ensimmäinen epädeterministinenkään polynomiaikainen algoritmi alkulukutestaukseen löytyi. Se oli ns. Prattin algoritmi 4. Algoritmi perustuu Lucas n kriteereille. Syöte on luku n 2, jonka pituus binääriesityksessä on N. Merkitään algoritmin testiaskeleiden (ks. alla) lukumääräät(n):llä ja { YES, jos n on alkuluku PRATT(n) = FAIL, jos testi ei tehdyillä valinnoilla tuota tulosta. Pykälästä 6.1 muistettaneen, että mikäli algoritmi toimii, niin syöte n on yhdistetty luku tarkalleen silloin, kun PRATT(n) = FAIL kaikilla valintamahdollisuuksilla. 4 Alkuperäisviite on PRATT, V.R.: Every Prime has a Succint Certificate. SIAM Journal on Computing 4 (1976),

59 LUKU 7. LUKUTEORIA. OSA 2 54 Prattin algoritmi: 1. Jos n = 2 tai n = 3, tulostetaan YES ja lopetetaan (0 testiaskelta). 2. Josnon> 3 ja parillinen (jako2:lla), algoritmi luopuu tehtävästä japratt(n) = FAIL (0 testiaskelta). 3. Arvataan (epädeterministisyys) kokonaisluku x väliltä 1 x n Tarkistetaan, onko x n 1 1 mod n venäläisten talonpoikien algoritmilla redusoiden jakolaskuilla (1 testiaskel). Ellei ole, niin algoritmi luopuu tehtävästä ja PRATT(n) = FAIL. 5. Arvataan (epädeterministisyys)n 1:n alkutekijät p 1,...,p k, missä kukin oletettu alkutekijä esiintyy kertalukunsa osoittaman määrän kertoja (0 testiaskelta). Näiden lukujen pituudet binäärijärjestelmässä ovatp 1,...,P k. Huomaa, ettäp 1 + +P k N +k 1 ja että2 k N. 6. Tarkistetaan kertomalla, että todella p 1 p k = n 1 (1 testiaskel). Ellei näin ole, algoritmi luopuu tehtävästä japratt(n) = FAIL. 7. Tarkistetaan, kutsuen Prattin algorimia rekursiivisesti, että luvut p 1,...,p k ovat todella alkulukuja (enintään T(p 1 ) + +T(p k ) testiaskelta). Jos jokin PRATT(p i ) = FAIL, algoritmi luopuu tehtävästä japratt(n) = FAIL. 8. Tarkistetaan, että x (n 1)/p i 1 mod n (i = 1,...,k) venäläisten talonpoikien algoritmilla ja jakolaskuilla (enintään k testiaskelta). Jos tämä pitää paikkansa, tulostetaan YES, muutoin algoritmi luopuu tehtävästä ja PRATT(n) = FAIL. T(n):lle saadaan nyt seuraava rekursioepäyhtälö: T(n) 2+k + k T(p i ), T(2) = 0, T(3) = 0. i=1 Tämän avulla voidaan löytää nyt T(n):lle yläraja. Helposti nimittäin nähdään rekursiivisesti, että esimerkiksil(n) = 4log 2 n 4 on tällainen yläraja, silläl(2) = 0 jal(3) > 0 ja T(n) 2+k + k L(p i ) = 2+k + i=1 k (4log 2 p i 4) = 2+k +4log 2 (p 1 p k ) 4k = 2 3k +4log 2 (n 1) < 4+4log 2 n = L(n). Toisaalta kunkin testiaskeleen suorittamiseen kuluu O(N 3 ) askelta (parempiakin arvioita olisi) jal(n) on verrannollinenn:ään (Lause 2.4). Siispä kokonaisaika on O(N 4 ). Alkulukutestien vanhaa aatelia ovat Adleman Pomerance Rumely-testi 5 ja sen seurannaiset. Testi pohjautuu varsin pitkälle menevään algebralliseen lukuteoriaan, on deterministinen ja nopea, luvunn alkulukutestaus vie sillä enintään i=1 O((lnn) cln(ln(lnn)) ) 5 Alkuperäisviite on ADLEMAN, L. & POMERANCE, C. & RUMELY, R.: On Distinguishing Prime Numbers from Composite Numbers. Annals of Mathematics 117 (1983),

60 LUKU 7. LUKUTEORIA. OSA 2 55 askelta, missä c on (pieni) vakio, eikä näin ollen ole aivan P:ssä mutta melkein, sillä kyllä tuo ln(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 on P:ssä. Tämän todistivat intialaiset Manindra Agrawal, Neeraj Kayal ja Nitin Saxena vuonna Algoritmin todistettu kompleksisuus on O((lnn) 8 ), mutta heuristisesti sille saadaan kompleksisuus O((lnn) 6 ). Kovin nopeita implementointeja ei kuitenkaan toistaiseksi ole, vaikka algoritmi on varsin lyhyt esittää (syöte on n 2): Agrawal Kayal Saxena-algoritmi: 1. Selvitetään, onkonjonkin kokonaisluvunr korkeampi potenssi, ts. muotoan = r l, missä l 2. (Koska silloin l = log 2 n/log 2 r log 2 n, on kokeiltavia mahdollisia l:n arvoja n:n pituuteen verrannollinen määrä. Sen jälkeen lasketaan jokaiselle ehdokkaalle n:n l:s kokonaisjuuri Pykälän 2.6 Newtonin algoritmilla ja katsotaan onko senl:s potenssi= n.) Josnon tällainen potenssi, tulostetaan EI ja lopetetaan. 2. Etsitään sellainen kokonaisluku m, että n:n kertaluku modulo m on > (log 2 n) 2. (Tämä voidaan tehdä kokeilemalla. Hankalampi asia on todeta, ettei tällainenmole liian iso.) 3. Tutkitaan onko n:llä alkutekijä välillä 2,3,...,m (vaikkapa kokeilemalla ja Eukleideen algoritmilla). Jos on, niin tulostetaan EI ja lopetetaan. 4. Tutkitaan pätevätkö polynomirenkaassaz n [x] kongruenssit (x+i) n x n +i mod x m 1 (i = 1,2,..., mlog 2 n ). (Tähän tarvitaan venäläisten talonpoikien algoritmi ja jakolaskuja. Huomaa, että n:stä riippumatta Z n [x]:ssä on määritelty jakaminen pääpolynomilla x m 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 Determine Whether a Given Integer Is Prime. Bulletin of the American Mathematical Society 42 (New Series) (2004), Eräät sangen käyttökelpoiset alkulukutestit ovat probabilistisia, ts. ne tuottavat oikean tuloksen vain tietyllä suurella todennäköisyydellä. Tällainen testi on esimerkiksi ns. Miller Rabintesti 7. Testi perustuu Fermat n pieneen lauseeseen. Sen mukaisesti, jos n on alkuluku ja x on sellainen kokonaisluku, ettäsyt(x,n) = 1, niinx n 1 1 mod n. Kirjoitetaannmuotoon n = 1+2 l m, missämon pariton. Josnon pariton, niinl 1 ja 0 x n 1 1 = x 2lm 1 = (x 2l 1m 1)(x 2l 1m +1) mod n 6 Artikkeliviite on AGRAWAL, M. & KAYAL, N. & SAXENA, N.: PRIMES is in P. Annals of Mathematics 160 (2004), Alkuperäisviitteet ovat MILLER, G.L.: Riemann s Hypothesis and Tests for Primality. Journal of Computer and System Sciences 13 (1976), sekä RABIN, M.O.: Probability Algorithms. Algorithms and Complexity (J.F. Traub, toim.). Academic Press (1976), Algoritmi tunnetaan toisinaan myös nimellä Selfridgen testi.

61 LUKU 7. LUKUTEORIA. OSA 2 56 ja koskanon alkuluku se jakaa jokox 2l 1m 1:n taix 2l 1m +1:n, mutta ei molempia (miksi?). Jos n jakaa x 2l 1m 1:n, niin sama operaatio voidaan toistaa. Jne. Tästä päätellään, että joko jollekin luvullei = 0,1,...,l 1 tai sitten, ellei näin ole, lopulta x 2im 1 mod n x m 1 mod n. Jos nyt jollekin sellaiselle kokonaisluvulle x, että syt(x,n) = 1 ja x m ±1 mod n, onkin kaikille luvuillei = 1,2,...,l 1 x 2im 1 mod n, niin voidaan vain päätellä, että n ei olekaan alkuluku. Samoin, kun kohdataan sellainen i > 0, että x 2im ±1 mod n. Toisaalta, kun kokeillaan useita lukuja, esimerkiksi tiettyjä pieniä alkulukuja x = 2,3,5,7,11,..., saadaan eräänlainen todiste sille, että n on alkuluku. Itse asiassa tämä todiste voidaan saada erittäin varmaksi käyttämällä kyllin monta hyvin valittua lukua x. Myös todennäköisyysmielessä, ajatellen luvun x satunnaista valintaa väliltä 1 < x < n 1. Seuraavassa oletetaan, että käytössä ovat annetut tai satunnaiset testiluvutx 1,x 2,...,x k. Miller Rabin-alkulukutesti: 1. Josnon parillinen, on asia helppo, tulostetaan tulos ja lopetetaan. 2. Josnon pariton, asetetaan l 0 jam n Asetetaan l l+1 jam m/2. 4. Jos m on parillinen, mennään kohtaan 3. (Näitä kierroksia tarvitaan enintään log 2 n kpl.) 5. Asetetaan j Jos j < k, asetetaan j j +1 jax x j. Muutoin tulostetaan ALKULUKU (arveltu tieto) ja lopetetaan. 7. Jos x m 1 mod n tai syt(x,n) = n, niin mennään kohtaan 6. Jos taas 1 < syt(x,n) < n, tulostetaan YHDISTETTY LUKU (varma tieto) ja lopetetaan. (Potenssilasku venäläisten talonpoikien algorimilla, s.y.t. Eukleideen algoritmilla.) 8. Asetetaan i Jos x 2im 1 mod n, tulostetaan YHDISTETTY LUKU (varma tieto) ja lopetetaan. (Potenssilasku lähtien kohdan 7. potenssista peräkkäisillä neliöönkorotuksilla, välitulokset pitää säilyttää!) 10. Josx 2im 1 mod n, mennään kohtaan Jos i = l 1, tulostetaan YHDISTETTY LUKU (varma tieto) ja lopetetaan. Muutoin asetetaan i i + 1 ja mennään kohtaan 9. Huomautus. Tämä on bottom-up -versio testistä. Siitä on myös top-down -versio, jossa i vähenee, ks. esimerkiksi moniste RUOHONEN, K.: Symbolinen analyysi. Näillä ei liene suurta eroa nopeudessa.

62 LUKU 7. LUKUTEORIA. OSA 2 57 Testi ei siis ole vuorenvarma. Sellaisia yhdistettyjä lukuja, joita testi arvelee alkuluvuiksi, kutsutaan vahvoiksi valealkuluvuiksi testilukujenx 1,x 2,...,x k suhteen. Esimerkiksi = on vahva valealkuluku testilukujen 3 ja 5 suhteen. Kiinteälle k:n arvolle testin aikakompleksisuus ono(n 3 ), kuten on helppo todeta (jälleenn onn:n pituus). Probabilistisena testi on Monte Carlo -tyyppiä. Voidaan osoittaa, että yhdelle satunnaisesti väliltä1 < x < n 1 valitullex:lle testi tuottaa väärän tuloksen enintään todennäköisyydellä1/4, ks. alkuperäisviite RABIN tai esimerkiksi CRANDALL & POMERANCE tai KRANAKIS tai GARRETT. Toistamalla saadaan 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 satunnainen N-pituinen kokonaisluku, ks. Pykälä 2.6, ja sitten testaamalla Miller Rabin-testillä, onko se alkuluku. Tällainen alkulukujen generointitapa on tehokas. Jos nimittäin merkitäänπ(x):llä niiden alkulukujen lukumäärää, jotka ovat x, niin saadaan kuuluisa asymptoottinen arvio: Lause (Alkulukulause) lim x π(x) x/lnx = 1 Todistus on hankala! Näin ollen suuruusluokkaa n olevista luvuista suurinpiirtein joka ln n:s on alkuluku. Tämä on riittävän paljon, jotta alkulukujen satunnainen etsiminen sujuisi nopeasti. Tähän tarkoitukseen Pykälän 2.6 satunnaislukugeneraattorit sopivat mainiosti. Varhaisempi tulos Lause (Tshebyshevin lause) 7 8 < π(x) x/lnx < 9, kun x 5. 8 antaa karkeita kvantitatiivisia rajoja. Se takaa, että luvuista1,2,...,n alkulukuja on ainakin 7n kpl 8lnn ja että välillä(m,n] on alkulukuja ainakin 7n 8lnn 9m 8lnm kpl. Esimerkiksi välillä(10 150, ] on näin ainakin noin ln ln10 = alkulukua, itse asiassa paljon enemmänkin. Alkuluvut esiintyvät myös kohtuullisen tasaisesti: Lause (Bertrandin postulaatti 9 ) Kunn 2, on olemassa ainakin yksi sellainen alkuluku p, ettän < p < 2n. Lause (Dirichlet de la Vallée-Poussin -lause) Jos m 2, niin alkuluvut ovat jakautuneet asymptoottisesti tasan alkuluokkiin modulom. Alkulukuja ja niiden testausta käsittelee monipuolisesti CRANDALL & POMERANCE. 8 Muitakin Monte Carlo -tyyppisiä alkulukutestejä on olemassa, esimerkiksi ns. Solovay Strassen-algoritmi, ks. esimerkiksi SALOMAA tai KRANAKIS. 9 Postulaatin todisti Tshebyshev.

63 LUKU 7. LUKUTEORIA. OSA Lukujen tekijöihinjako Siitä, että alkulukutestaus on P:ssä, seuraa varsin välittömästi, että lukujen tekijöihinjako on N P:ssä: arvataan vain alkutekijät ja testataan ovatko ne alkulukuja. Vaikka alkulukutestaus on P:ssä ja käytännössäkin varsin nopeaa, tekijöihinjako näyttää olevan hyvin vaativa tehtävä. Riittää esittää menetelmä, joka etsii luvulle n 2 jonkin ei-triviaalin tekijän d, 1 < d < n, tai sitten ilmoittaa n:n olevan alkuluvun. Sen jälkeen voidaan rekursiivisesti jatkaa luvuista d ja n/d. Tietysti kannattaa aloittaa alkulukutestillä, jonka jälkeen voidaan olettaa, ettei n ole alkuluku. Seuraava tunnettu algoritmi löytää usein parittoman yhdistetyn luvun n tekijän, jos jollekin n:n alkutekijälle p luvulla p 1 ei ole tekijänään b:tä ylittäviä alkuluvun potensseja. Tästä ehdosta seuraa, ettäp 1 onb!:n tekijä (eikö vain?). Pollardinp 1-algoritmi 10 : 1. Asetetaan a Iteroidaan j:n arvoillej = 2,...,b asetustaa (a j,mod n). 3. Lasketaan d = syt(a 1,n). 4. Jos1 < d < n, tulostetaan tekijäd, muutoin luovutaan tehtävästä. Oletetaan, että p on n:n alkutekijä, joka toteuttaa mainitun ehdon. Kohdan 2. suorituksen jälkeen on ilmeisesti a 2 b! mod n ja siis myös a 2 b! mod p. Fermat n pienen lauseen nojalla 2 p 1 1 mod p. Kuten todettiin,p 1 b!, joten myösa 1 mod p. Näin ollenp a 1 ja edelleen p d. On mahdollista, ettäa=1, jolloin tekijää ei löydy. Algoritmin aikakompleksisuus on O(bBN 2 +N 3 ), missä N ja B ovat lukujen n 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 pieni b toisaalta karsii pois paljon alkutekijöitä ja algoritmi ei tuota tulosta. Pollardin p 1-algoritmin ja monien muidenkin algoritmien tarkempi esitys ja analyysi löytyy mm. viitteistä RIESEL ja CRANDALL & POMERANCE. Pollardin p 1-algoritmia on yleistetty monin tavoin, mm. ns. elliptisten käyrien menetelmäksi ja ns. Williamsinp+1-algoritmiksi. Hyvin perinteinen tekijän etsimisalgoritmi on ns. testijakoalgoritmi. Siinä kokeillaan ensin tekijöitä2 ja 3 ja sen jälkeen järjestyksessä muotoa 6k ±1 olevia tekijöitä aina n :ään asti. Kokonaisneliöjuuri on nopea laskea, kuten todettiin. Tällainen menetelmä on tietysti aikaaviepä. Testijako on tyypiltään ns. seulamenetelmä. Seulamenetelmiä on hyvin paljon tehokkaampia, mm. ns. neliöllinen seula ja lukukuntaseula. Tällä hetkellä nopeimmille algoritmeille on arvioitu alla olevan taulukon antamat aikakompleksisuudet. Mukana ei ole Shorin algoritmia, ks. Pykälä 15.3, sillä kvanttitietokoneita ei vielä varsinaisesti ole. 10 Alkuperäisviite on POLLARD, J.M.: Theorems on Factorization and Primality Testing. Proceedings of the Cambridge Philosophical Society 76 (1975), Algoritmia voidaan vähän varioida monin tavoin sen tehostamiseksi, tämä on aivan perusversio.

64 LUKU 7. LUKUTEORIA. OSA 2 59 Algoritmi Aikakompleksisuus * ) Neliöllinen seula O (e (1+o(1)) lnnln(lnn) ( Elliptisten käyrien menetelmä O e (1+o(1)) ) 2lnpln(lnp) (p on n:n pienin alkutekijä) ) Lukukuntaseula O (e (1.92+o(1))(lnn)1/3 (ln(lnn)) 2/3 * Merkintä o(1) tarkoittaa seuraavaa: f(n) = o(1), jos lim f(n) = 0. Yleisemmin merkintä o(g(n)) tarkoittaa, n että f(n) = o(g(n)), jos lim f(n)/g(n) = 0. n 7.6 Modulaarinen neliöjuuri Luvun x sanotaan olevan luvun y neliöjuuri modulo m eli ns. modulaarinen neliöjuuri, jos x 2 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 modulo m, 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 modulo m. Lukua y, jolla on neliöjuuri(a) modulo m, sanotaan neliönjäännökseksi modulo m, ja lukua y, jolla ei ole neliöjuurta modulo m taas epäneliönjäännökseksi modulo m. Ilmeisesti ainakin 0 ja 1 ovat neliönjäännöksiä. Yleisessä tapauksessa sen selvittäminen, onko jokin luku neliön- vaiko epäneliönjäännös modulo m, on työlästä. Jos y on neliönjäännös modulomja tunnetaanm:n tekijöihinjako m = p i 1 1 p i 2 2 p i M M sekä jokin y:n neliöjuuri x j modulo p i j j (j = 1,2,...,M), niin lisää y:n neliöjuuria modulo m saadaan Kiinalaisen jäännöslauseen avulla. Huomaa, että jos y on neliönjäännös modulom, niin se on myös neliönjäännös modulo p i j j sen neliöjuuri modulop i j j, sillä jokainen y:n neliöjuuri x modulo m on myös. Ratkaistaan kongruenssiryhmästä x ±x 1 mod p i 1 1 x ±x 2 mod p i 2. x ±x M mod p i M M x modulomcrt-algoritmilla, tulos on yksikäsitteinen modulom = p i 1 1 p i 2 2 p i M M. Mikä tahansa2 M :stä±-merkkivalinnasta on mahdollinen. Silloin x 2 (±x j ) 2 y mod p i j j ja siisp i j j x 2 y (j = 1,2,...,M). Koskap i j j :t ovat keskenään jaottomia, on myösm x2 y eli x 2 y mod m. Käymällä läpi kaikki neliöjuurien x j 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. Neliöjuurten laskeminen modulo alkuluvun korkeampi potenssi on vähän vaikeampaa, eikä sitä 2

65 LUKU 7. LUKUTEORIA. OSA 2 60 tässä käsitellä. 11 Sen sijaan neliöjuuret modulo alkulukupovat nopeasti laskettavissa ns. Shanksin algoritmilla.y:n neliöjuuria modulop on aina tarkalleen kaksi, paitsi josy 0 mod p, sillä josxon jokin neliöjuuri jax toinen, niin x 2 y x 2 mod p eli (x x )(x+x ) 0 mod p ja joko p x x eli x x mod p tai sitten p x+x eli x x mod p. Jos taas y 0 mod p, niin ainoa neliöjuuri on0, kuten on helppo nähdä. Jos p > 2, niin ilmeisesti kaikki neliönjäännökset modulo p saadaan, kun otetaan lukujen 0,1,...,(p 1)/2 neliöt modulo p. Nämä neliöt eivät ole keskenään kongruentteja modulo p (miksi?), joten neliönjäännöksiä on yhtä enemmän kuin epäneliönjäännöksiä, ja se yksi on 0. Se onko y neliön- vaiko epäneliönjäännös modulo p, voidaan selvittää nopeasti, tapaukset p = 2 ja y 0 mod p ovat tietysti triviaaleja. Lause (Eulerin kriteeri) Jos p on pariton alkuluku ja y 0 mod p, niin y on neliönjäännös modulo p täsmälleen silloin, kun y p mod p. (Modulaarinen potenssi lasketaan käytännössä nopeasti venäläisten talonpoikien algoritmilla.) Todistus. Josy on neliönjäännös eli jollekinx:lley x 2 mod p, niin Fermat n pienen lauseen nojallax p 1 1 mod p (koskay 0 mod p, niinsyt(x,p) = 1). Siispä y p 1 2 x p 1 1 mod p. Jos taas y (p 1)/2 1 mod p, niin otetaan jokin primitiivinen juuri g modulo p. Silloin jollekini:lley g i mod p, koskasyt(y,p) = 1, ja g p 1 2 i y p mod p. Mutta koska g:n kertaluku on p 1, on (p 1)i/2:n oltava jaollinen p 1:llä. Näin ollen i on parillinen jay:llä on neliöjuuret(±g i/2,mod p) modulop. Jos p on muotoa p = 4l 1 eli p 3 mod 4, niin Eulerin kriteerillä saadaan itse asiassa myös ne kaksiy:n neliöjuurta olettaen, ettäy 0 mod p. Ne ovat(±y (p+1)/4,mod p), sillä ) (±y p+1 2 p+1 4 = y 2 = y p 1 2 y y mod p. Näistä kahdesta modulaarisesta neliöjuuresta toinen on itse neliönjäännös, sitä kutsutaan silloin pääneliöjuureksi, ja toinen epäneliönjäännös. Ensinnäkin jos x on sekä y:n neliöjuuri että neliönjäännös modulo p, niin x ei voi olla neliönjäännös. Muutoin x z1 2 z2 2 mod p joillekin luvuillez 1 jaz 2 ja 1 (z 1 z2 1 ) 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. Toisaalta ko. modulaariset juuret eivät voi molemmat olla epäneliönjäännöksiä, muutoinhan niitä on liikaa. Tapaus p = 4l + 1 onkin sitten, outoa kyllä, paljon mutkikkaampi ja siihen nimenomaan tarvitaan Shanksin algoritmia. Ennenkuin mennään Shanksin algoritmiin, voidaan nyt todeta, että jos m:ssä ei ole tekijöinä alkuluvun potensseja elimon neliötön jam:n tekijöihinjako m = p 1 p 2 p M tunnetaan, niin tilanne neliönjäännöksiä ja neliöjuuria modulomajatellen on helppo: 11 Siihen tarvitaan mm. ns. Henselin nosto Pykälän 11.3 tapaan, ks. esimerkiksi GARRETT.

66 LUKU 7. LUKUTEORIA. OSA 2 61 y on neliönjäännös modulo m täsmälleen silloin, kun se neliönjäännös modulo kukin p i (i = 1, 2,..., M), ja tämä voidaan selvittää nopeasti Eulerin kriteerillä. Laskemalla Shanksin algoritmillay:n neliöjuuretx i modulop i, saadaan näistä eo. tavalla CRT-algoritmilla kaikki enintään2 M kply:n neliöjuurta modulom. Vielä saadaan Lause Jos m on pariton ja neliötön, syt(y,m) = 1 eli y ei ole jaollinen millään alkuluvuistap j jay on neliönjäännös modulom, niiny:n neliöjuuria modulomon tarkalleen2 M kpl, missäm onm:n alkutekijöiden lukumäärä. Todistus. Muutoinhan jollekin p j :lle olisi x j x j mod p j eli 2x j 0 mod p j. Koska p j on pariton, olisi silloin myösx j 0 mod p j ja edelleen y x 2 j 0 mod p j. Mikäli kaikki alkuluvut p i ovat 3 mod 4, tarkalleen yksi näistä lauseessa mainituista y:n 2 M neliöjuuresta modulo m saadaan CRT-algoritmilla ottamalla y:stä pääneliöjuuret modulo jokainenp i. Ko. neliöjuuri on y:n pääneliöjuuri modulom. Seuraus. Jos m on pariton ja neliötön, y on neliönjäännös modulo m ja x on jokin y:n neliöjuuri modulo m, niin y:n neliöjuuret modulo m ovat tarkalleen (xω i,mod m) (i = 1,2,..., 2 M ), missäm onm:n alkutekijöiden lukumäärä jaω 1,ω 2...,ω 2 M ovat1:n neliöjuuret modulo m. 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 onko y neliönjäännös modulo m vai ei ja mitkä positiivisessa tapauksessa ovat sen neliöjuuret modulo m on hyvin työlästä. Edes se ei auta, että tunnetaan yksi neliöjuuripareista. Itse asiassa, jos tunnetaan y:n sellaiset neliöjuuret x 1 ja x 2 modulo m = p 1 p 2, että x 1 ±x 2 mod m, niin luvut syt(m,x 1 ±x 2 ) ovat alkuluvutp 1 jap 2. Näiden havaintojen varassa ovat monet kryptosysteemit ja protokollat, mm. RSA. Ja sitten se Shanksin algoritmi: Shanksin algoritmi: 1. Jos p = 2, tulostetaan (y,mod 2) ja lopetetaan. Jos y 0 mod p, tulostetaan 0 ja lopetetaan. 2. Jos y (p 1)/2 1 mod p, ei y:llä Eulerin kriteerin nojalla ole neliöjuuria modulo p. Tulostetaan tämä tieto ja lopetetaan. 3. Josp 3 mod 4, tulostetaan(±y (p+1)/4,mod p) ja lopetetaan. 4. Jos taas p 1 mod 4, kirjoitetaan p 1 = 2 s t, missä t on pariton ja s 2. Tämä saadaan aikaan peräkkäisillä2:lla jakamisilla, joita tarvitaan enintään log 2 (p 1) kpl. 5. Valitaan satunnaisesti luku u väliltä 1 u < p. Jos nyt u (p 1)/2 1 mod p, luovutaan tehtävästä ja lopetetaan. Eulerin kriteerin mukaan u on tällöin neliönjäännös modulo p ja jatkoa ajatellen u:ksi haluttaisiinkin epäneliönjäännös. u:n valinta onnistuu näin ollen 50% todennäköisyydellä. 6. Asetetaanv (u t,mod p). Silloinv:n kertaluku modulopon 2 s. Jos nimittäinion mainittu kertaluku, niin it 2 s t eli i 2 s. Toisaaltau t2k 1 mod p, jos k < s, muutoinhan olisi myösu (p 1)/2 1 mod p.

67 LUKU 7. LUKUTEORIA. OSA Asetetaan z (y (t+1)/2,mod p). Silloin z 2 y t y mod p. z on tietyssä mielessä likimääräinen y:n neliöjuuri modulo p ja sitä käyttäen voidaan löytää oikea neliöjuuri muodossax = (zv l,mod p). 8. Etsitään mainittu oikea neliöjuuri, ts. sellainen lukul, että x 2 (zv l ) 2 y mod p eli v 2l z 2 y 1 y t mod p. Tällainen luku on olemassa, sillä modulaariyhtälöllä w 2s 1 1 mod p on w:n suhteen 2 s 1 juurta 12 ja ne ovat(v 2j,mod p) (j = 0,1,...,2 s 1 1) ja(y t,mod p) on yksi niistä. Lukul voidaan etsiä vaikkapa rekursiivisesti binäärimuodossa seuraavasti: l = b s 2 2 s 2 +b s 3 2 s 3 + +b 1 2+b Bitti b 0 löytyy, kun kongruenssi v 2l y t mod p korotetaan puolittain potenssiin 2 s 2, sillä { 0, jos(y t2s 2, mod p) = 1 b 0 = 1 muuten. 8.2 Bitti b 1 löytyy, kun kongruenssi v 2l y t mod p korotetaan puolittain potenssiin 2 s 3, sillä { 0, jos(y t2s 3 v b 02 s 2, mod p) = 1 b 1 = 1 muuten. Huomaa, miten tässä tarvitaan jo saatu b Saatujen bittienb 0 jab 1 avulla etsitään vastaavasti seuraava bittib 2 jne. 9. Tulostetaan(±zv l,mod p) ja lopetetaan. Varsin helposti voi todeta algoritmin polynomiaikaiseksi ja se tuottaa tuloksen noin 50% todennä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 ja saman viestin kryptaus voi näin ollen 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.6 esitetty siirtorekisterigeneraattori, ovat osoittautuneet kryptografian kannalta vaarallisiksi. Kryptologian tarpeet käynnistivätkin laajan pseudosatunnaislukujen tutkimuksen, niin teorian kuin käytännönkin tasolla. 12 Tässä tarvitaan polynomialgebrasta se tieto, että kunnand-asteisella algebrallisella yhtälöllä on enintäänderi juurta. Ks. esimerkiksi kurssi Algebra 1 tai Symbolinen laskenta tai jokin algebran kirja.

68 LUKU 7. LUKUTEORIA. OSA 2 63 Blum Blum Shub-generaattori 13 on yksinkertainen satunnaislukugeneraattori, jonka vahvuus on kytköksissä neliönjäännöstestiin. Koska tällä hetkellä ei tunneta nopeaa probabilististakaan algoritmia neliönjäännöstestiin, saati sitten determinististä, BBS-generaattoria pidetään vahvana kryptologisessa mielessä, ks. esimerkiksi GARRETT tai STINSON. Neliönjäännöksenxkorottaminen neliöön modulon tuottaa uuden neliönjäännökseny. Jos nyt y:llä on pääneliöjuuri, sen on oltava x, ja kyseessä on itse asiassa neliönjäännösten permutaatio. Tämä permutaatio on niin tehokkaasti satunnaistava, että sitä voidaan käyttää satunnaislukugeneraattorina. BBS-generaattori tuottaa jonon satunnaisbittejä. Generaattori tarvitsee kaksi jotakuinkin samanpituista alkulukua p ja q, joita ei paljasteta. Lisäksi vaaditaan ehto p q 3 mod 4, jotta pääneliöjuuret ovat olemassa. Merkitään n = pq. Jos on tarkoitus tuottaalsatunnaisbittiä, menetellään seuraavasti: Blum Blum Shub-generaattori: 1. Valitaan satunnainen lukus 0 modulonväliltä1 s 0 < n. Satunnaisuus on tässä tärkeää ja siihen riittävät Pykälän 2.6 satunnaisgeneraatoritkin. Jotkut valinnat nimittäin johtavat varsin lyhyeen jaksoon, ts. generaattori alkaa toistaa itseään varsin pian, mikä tietenkin on vakava puute. Asiaa käsittelee mm. alkuperäisartikkeli. 2. Toistetaanl kertaa rekursiota ja lasketaan bitit 3. Tulostetaan(b 1,b 2,...,b l ) ja lopetetaan. s i = (s 2 i 1, mod n) b i = (s i, mod 2) (i = 1,2,...,l). Huomautus. Kryptologisesti vahvoilla satunnaislukugeneraattoreilla ja hyvillä kryptosysteemeillä on paljon yhteistä, itse asiassa monet kryptosysteemit voidaan muuntaa kryptologisesti vahvoiksi satunnaislukugeneraattoreiksi, ks. esimerkiksi GOLDREICH ja SHPARLINSKI ja asiaan liittyvä artikkeliviite AIELLO, W. & RAJAGOPALAN, S.R. & VENKATESAN, R.: Design of Practical and Provably Good Random Number Generators. Journal of Algorithms 29 (1998), Hilat. LLL-algoritmi Jos v 1,...,v k ovat lineaarisesti riippumattomat R k :n vektorit, niin niiden generoima hila 14 on R k :n pistejoukko v 1,...,v k = {c 1 v 1 + +c k v k c 1,...,c k Z}. Vektoreitav 1,...,v k kutsutaan hilan kantavektoreiksi jak on hilan dimensio. Yhdellä ja samalla hilalla on äärettömän monta kantaa, jos k > 1. Keskeinen hiloja koskeva probleema onkin löytää hyvä kanta, jossa on mukana jokin lyhyt vektori ja jonka vektorit eivät muodosta kovin teräviä kulmia keskenään.tällainen kanta muistuttaar k :n luonnollista kantaa. 13 Alkuperäisviite on BLUM, L. & BLUM, M. & SHUB, M.: A Simple Unpredictable Random Number Generator. SIAM Journal on Computing 15 (1986), Hilojen tutkiminen kuuluu ns. lukugeometriaan eli Minkowskin geometriaan.

69 LUKU 7. LUKUTEORIA. OSA 2 64 Hilan diskriminantti ond = det(v), missäv on matriisi, jonka sarakkeet ovatv 1,...,v k. Se on kantavektoreiden virittämän k-ulotteisen suuntaissärmiön tilavuus. Tämä ei riipu hilan kannan valinnasta. Kantamuunnosmatriisin C ja sen käänteismatriisin C 1 pitää nimittäin olla kokonaislukualkioisia, jolloin det(c) ja det(c 1 ) = det(c) 1 ovat myös kokonaislukualkioisia, ja näin ollen det(c) = ±1. Kannan vaihdon jälkeen diskriminantti on silloin det(cv = det(c) det(v) = D. Diskriminantti tarjoaa jonkinlaisen mitan, johon voi verrata hilan muita suureita. Kuuluisa Lenstra Lenstra Lovász-algoritmi 15 (LLL-algoritmi) antaa menetelmän, jolla hilalle voidaan jostain annetusta kannasta lähtien konstruoida ym. mielessä hyvä kanta, ns. LLLredusoitu kanta. Saatuaan syötteenä vektorit v 1,...,v k algoritmi tuottaa hilalle v 1,..., v k uuden kannan u 1,...,u k, jolle 1. u 1 2 k 1 4 D 1 k, 2. u 1 2 k 1 2 λ, missäλon hilan lyhimmän nollavektorista eroavan vektorin pituus, ja 3. u 1 u k 2 k(k 1) 4 D. Kohdat 1. ja 2. takaavat, että uusi kantavektori u 1 on lyhyt, sekä verrattuna hilan diskriminanttiin että sen lyhimpään vektoriin. Kohta 3. puolestaan takaa, että uusien kantavektorien väliset kulmat eivät ole kovin pieniä. Kannan u 1,...,u k approksimatiivisen ortogonaalisuuden mitta on se miten lähellä u 1 u k on D:tä, ortogonaalisille vektoreille u 1,...,u k nimittäin u 1 u k = D. LLL-algoritmin aikavaativuudelle tunnetaan arvio O(k 6 (lnmax( v 1,..., v k )) 3 ), käytännössä se on huomattavastikin nopeampi. Joka tapauksessa aika on polynomiaalinen vain vektorien koon suhteen, ei dimension koon suhteen. Algoritmin suoritukseen vaikuttaa luonnollisesti myös se miten vektoritv 1,...,v k on annettu ja miten niillä lasketaan. Helppo tapaus on luonnollisesti se, missä vektorit ovat kokonaislukualkioisia. LLL-algoritmia ei tässä sen tarkemmin esitetä, sitä käsittelee lähemmin mm. COHEN. Se on hyödyllinen hyvinkin monissa yhteyksissä. 15 Alkuperäisviite on LENSTRA, A.K. & LENSTRA JR., H.W. & LOVÁSZ, L: Factoring Polynomials with Rational Coefficients. Mathematische Annalen 261 (1982),

70 Luku 8 RSA 8.1 RSAn määrittely RSAn 1 salainen avain k 2 muodostuu kahdesta suuresta likimain samaa pituutta olevasta eri alkuluvusta p ja q sekä luvusta b (ns. dekryptauseksponentti), jolle syt(b,φ(pq)) = syt(b,(p 1)(q 1)) = 1. Julkinen avain k 1 puolestaan muodostuu luvusta n = pq (auki kerrottuna) sekä luvusta a (ns. kryptauseksponentti), jolle ab 1 mod φ(n). Huomaa, ettäb:llä on käänteisluku moduloφ(n). Kryptausfunktio on ja dekryptausfunktio on e k1 (w) = (w a, mod n) e k2 (c) = (c b, mod n). Jotta kryptaus toimisi, on viestilohkon oltava valmiiksi koodattu välillä0 w n 1 olevaksi kokonaisluvuksi. Sekä kryptaus että dekryptaus tapahtuvat venäläisten talonpoikien algoritmia tms. käyttäen nopeasti. Seuraava Kiinalaisen jäännöslauseen pieni erikoistapaus on hyvin käyttö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 alkuluvutpjaq, ks. Pykälä Kerrotaan p jaq luvuksin = pq ja lasketaan kertomallaφ(n) = (p 1)(q 1). 3. Etsitään sellainen satunnainen luku b väliltä 1 b φ(n) 1, että syt(b,φ(n)) = 1, generoimalla satunnaisesti lukuja ko. väliltä ja testaamalla s.y.t. 4. Lasketaan b:n käänteislukuamoduloφ(n) Eukleideen algoritmilla. 5. Julkistetaan pari k 1 = (n,a). 1 Alkuperäisviite on RIVEST, R.L. & SHAMIR, A. & ADLEMAN, L.: A Method for Obtaining Digital Signatures and Public Key Cryptosystems. Communications of the ACM 21 (1978),

71 LUKU 8. RSA 66 Todennetaan, että dekryptaus toimii. Ensinnäkin, jos syt(w, n) = 1, niin Eulerin lauseen mukaan jollekin luvullel c b (w a ) b = w ab = w 1+lφ(n) = w(w φ(n) ) l w 1 = w mod n. Jos taas syt(w,n) 1, niin on kolme vaihtoehtoa: w = 0. Nyt ilmeisesti c b (w a ) b = 0 b = 0 mod n. p w, mutta w 0. Nyt w = pt, missä syt(q, t) = 1. Selvästi c b w ab w mod p. Toisaalta Fermat n pienen lauseen mukaan myös jollekin luvullel w ab = w 1+lφ(n) = w(w φ(n) ) l = w(w (p 1)(q 1) ) l = w(w q 1 ) l(p 1) w 1 = w mod q. Apulauseen nojallac b w ab w mod n. q w, muttaw 0. Käsitellään aivan vastaavasti kuin edellinen kohta. Huomautus. Mainittu ehto syt(w, n) 1 ei tiedä hyvää: Joko viesti on suoraan luettavissa (w = c = 0) tai sitten se sisältää tekijänään p:n tai q:n, jolloin Eukleideen algoritmilla saadaan syt(w, n) ja sitä kautta koko systeemi murretuksi. Samoin tietysti käy, jos syt(c, n) 1, mutta koska n:llä ei ole tekijänään alkuluvun korkeampia potensseja ja c w a mod n, on itse asiassa syt(c,n) = syt(w a,n) = syt(w,n). 8.2 Hyökkäyksiä ja puolustuksia RSA on saatavissa hyvin varmaksi, mutta edellytyksenä on, että tiettyjä vaarallisia valintoja vältetään. Huomaa, että julkisen avaimen systeemissä on KP-dataa aina saatavilla. Yo. Huomautuksessa jo oli eräs vältettävä tapaus, tosin varsin harvinainen. Muita huomioon otettavia asioita ovat seuraavat: (A) Erotusp q ei saa olla itseisarvoltaan pieni! Jos nimittäinp q > 0 on pieni, niin(p q)/2 on pieni ja(p+q)/2 on vain vähän suurempi kuin pq = n (totea!). Toisaalta ( ) 2 ( ) 2 p+q p q n =. 2 2 n:n jakamiseksi tekijöihin p ja q testataan yksi kerrallaan kokonaislukuja x lähtien n :stä kunnes löytyy sellainen luku x, että x 2 n = y 2 on neliö. Kun tämä x löytyy, saadaan välittömästi p = x + y ja q = x y. Koska n ei itse ole neliö, on n = n +1. Kokonaisneliöjuuren laskeminen on nopeaa, ks. Pykälä 2.6. (B) Valittaessa alkulukuja p ja q pitää myös φ(n):n tekijärakennetta pitää silmällä. Jos syt(p 1,q 1) on suuri, niin u = pyj(p 1,q 1) = (p 1)(q 1) syt(p 1,q 1)

72 LUKU 8. RSA 67 (ks. Lause 2.9) on pieni. Toisaalta syt(a,u) = 1 (miksi?) ja a:lla on käänteisalkio b modulo u. Tämä b toimii myös dekryptauseksponenttina. Tällöin nimittäin voidaan kirjoittaa ab = 1+lu sekä u = t(p 1) = s(q 1) joillekin luvuille l, t ja s ja Fermat n pienen lauseen mukaan c b w ab = w 1+lu = w(w u ) l = w(w p 1 ) lt w 1 = w mod p. (Tässä tietystic w a mod p.) Vastaavastic b w mod q ja Apulauseen nojalla myös c b w mod n. Jos u on paljon pienempi kuin φ(n), voidaan b löytää kokeilemalla. Johtopäätöksenä on, ettäp 1:llä jaq 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 Pollardin p 1-algoritmilla ja muilla vastaavilla voidaan silloin yrittää jakaa n:ää tekijöihin, saattaa myös olla mahdollista käydä läpi kaikki φ(n)-ehdokkaat f, joille syt(f, a) = 1, laskea a:n käänteisluku modulo f, dekryptata jokin kryptoteksti ja näin löytää kokeilemalla φ(n). Huomaa, että jos φ(n) = (p 1)(q 1) ja n tunnetaan, saadaan niistä helposti p ja q toisen asteen yhtälön juurina. Juuret (x p)(x q) = x 2 +(φ(n) n 1)x+n = 0 x 1,2 = φ(n)+n+1± (φ(n) n 1) 2 4n 2 voidaan nimittäin löytää kokonaisneliöjuurta käyttäen varsin nopeasti. (D) Iteroidulla kryptauksella voidaan toisinaan joko jakaa n tekijöihin tai löytää selväteksti w, kun vastaava kryptotekstictunnetaan. Lasketaan rekursiivisesti jonoa c i = (c a i 1, mod n) = (cai, mod n) = (w ai+1, mod n), c 0 = c, kunnessyt(c i c,n) 1. Onnistumistilanteessa on kaksi mahdollisuutta: syt(c i c,n) = p tai syt(c i c,n) = q: Tällöinpjaq löytyvät ja systeemi murtuu. syt(c i c,n) = n: Tällöin pitää olla w = c i 1 ja selväteksti löytyy. Jos w on tunnistettavissa, 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 w aφ(φ(n)) = w 1+lφ(n) = w(w φ(n) ) l w 1 = w mod n, joten ainakini = φ(φ(n)) riittää. Toisaaltaφ(φ(n)) 4 n, joten tämä yläraja iteraatioluvulle ei ole kovin kiinnostava. (E) Ilmeisesti pitää välttää kovin pientä dekryptauseksponenttia, koska se voidaan silloin löytää kokeilemalla. Itse asiassa tietyillä menetelmillä voidaan löytää melko isojakin dekryptauseksponentteja, esimerkiksi jos b < n 0.292, se voidaan löytää LLL-algoritmia apuna käyttäen. 2 2 Ks. BONEH, D. & DURFEE, G.: Cryptanalysis of RSA with Private KeydLess Thann Proceedings of EuroCrypt 99. Lecture Notes in Computer Science Springer Verlag (1999), 1 11.

73 LUKU 8. RSA 68 Myös pienestä kryptauseksponentista voi olla haittaa, vaikka dekryptauseksponentti olisi isokin. Jos esimerkiksi w a < n, voidaan w saada helposti c:stä ottamalla siitä a:s kokonaisjuuri. Ks. myös Pykälä 8.5. (F) Ilman muuta on selvää, että jos mahdollisia viestejä on niin pieni määrä, että ne voidaan kokeilla 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 < 2 l, ts. että viestin pituus binääriesityksessä on l. Koska Alkulukulauseen nojalla mahdollisia w:n suuria alkutekijöitä on vähän, on w tällöin kohtuullisen todennäköisesti muotoa w = w 1 w 2, missä w 1,w 2 2 l/2, (ainakin kyllin suurellel:lle), jolloin vastaava kryptattu viesti on c w a 1w a 2 mod n. 2 l/2 saadaan venäläisten talonpoikien algoritmilla ja tarvittaessa kokonaisneliöjuurella. Menettely on seuraava: 1. Lajitellaan luvut (i a,mod n) (i = 1,2,3,... 2 l/2 ) suuruusjärjestykseen listaksi L tallentaen mukaan i:t. Lukujen (i a,mod n) generointi vie venäläisten talonpoikien algoritmilla aikaa O(2 l/2 N 3 ) askelta, missän on n:n pituus, ja lajittelu pikalajittelulla (quicksort)o(l2 l/2 ) askelta. 2. Käydään läpi lukuja (cj a,mod n) (j = 1,2,3,..., 2 l/2 ) katsoen ovatko ne listassal helppoa, koska lista on suuruusjärjestyksessä. Jos löytyy sellainenj, että cj a i a mod n niin on löytynyt w = ij (keskikohtaaminen). Binäärietsinnällä laskien potenssit venäläisten talonpoikien algoritmilla etsintä vieo(2 l/2 (l+n 3 )) askelta. Jos sattuu, ettäj 1 mod n ei ole olemassa, niinsyt(j,n) 1 jan:lle löytyy tekijä. Kokonaisaika ono(2 l/2 (l+n 3 )), reippaasti vähemmän kuin2 l, olettaen tietysti, että lista L 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. turvallisiin alkulukuihin eli Germainin lukuihin p ja q, ts. sellaisiin, että myös (p 1)/2 ja (q 1)/2 ovat alkulukuja. Valitettavasti vain tällaisten löytäminen on vaikeaa eikä edes tiedetä onko niitä äärettömän monta. Jotkut ovat sitä mieltä, että Germainin lukuja on niin vähän, että niiden käyttö itse asiassa vähentää turvallisuutta!

74 LUKU 8. RSA 69 Erityisen ikävä mahdollisuus (D)-kohdassa on, että iterointi onnistuu heti. Silloin jokop c tai q c tai kyseessä on ns. kiintopisteviesti, ts. sellainen viestiw, että c = e k1 (w) = w. Ilmeisesti0, 1 jan 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ään l = syt(a 1, p 1) ja k = syt(a 1, q 1) sekä valitaan jotkin primitiiviset juuretg 1 jag 2 modulop jaq, vastaavasti. Silloing1 a 1 :n kertaluku modulopon(p 1)/l jag2 a 1 :n kertaluku modulo q on (q 1)/k, ks. Lause 7.4(iii). Näin ollen ainoat sellaiset luvut i väliltä 0 i < p 1, että (g a 1 1 ) i 1 mod p eli (g i 1) a g i 1 mod p, ovat luvut i j = j p 1 (j = 0,1,...,l 1). l Vastaavasti ainoat luvutiväliltä0 i < q 1, joille(g2) i a g2 i mod q, ovat luvut h m = m q 1 k (m = 0,1,...,k 1). Ilmeisesti jokainen kiintopisteviesti w toteuttaa kongruenssit w a 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 g hm 2 mod q, { x g i j 1 mod p x 0 mod q, { x g i j 1 mod p x g hm 2 mod q (j = 0,1,...,l 1 jam = 0,1,...,k 1). Kiintopisteviestejä ei tietenkään saisi olla paljon. Koska sekäaettä p ja q ovat käytännössä parittomia, on kiintopisteitä yleisesti ainakin(1+2)(1+2) = 9 kpl. Erityisen hankala on tilanne, jossa p 1 a 1 ja q 1 a 1. Silloin nimittäin kiintopisteviestejä on(1+p 1)(1+q 1) = n kpl eli kaikki viestit ovat kiintopisteviestejä. Mikäli g 1 ja g 2 ovat tiedossa ja kiintopisteviestien määrä on suhteellisen pieni, voidaan ne etsiä etukäteenkin ja 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 kerrotun n:n tekijöitä saada millään helpolla tavalla lasketuksi. Julkisessa avaimessa on myös kryptauseksponentti a. Seuraava tulos osoittaa, ettei a:stakaan saada millään helpolla tavalla lisätietoa. Ts. algoritmi A, joka n:stä ja a:sta laskee b:n, voidaan muuntaa probabilistiseksi algoritmiksi, millä voi jakaa nopeastin:n tekijöihinsä. Jos jotain kautta tunnetaan1:n neliöjuuriω modulonjaω ±1 mod n, niin tästä saadaan nopeasti lasketuksi n:n tekijät. Silloin nimittäin (ω 1)(ω + 1) 0 mod n ja jompikumpi luvuista syt(ω ± 1,n) on p. Seuraava algoritmi käyttää tätä ideaa ja oletettua algoritmia A ja yrittää jakaa n:n tekijöihin. Algoritmi muistuttaa jonkin verran Miller Rabin-algoritmia.

75 LUKU 8. RSA 70 Eksponenttialgoritmi: 1. Valitaan satunnaisesti viesti w, 1 w < n. 2. Lasketaan d = syt(w, n) Eukleideen algoritmilla. 3. Jos 1 < d < n, tulostetaan d ja n/d ja lopetetaan. 4. Lasketaan b käyttäen algoritmia A ja asetetaan y ab Josy on pariton, mennään kohtaan Jos y on parillinen, asetetaan y y/2 ja mennään kohtaan 5. Jos ab 1 = 2 s r, missä r on pariton, kierretään tätä silmukkaa s kertaa. Huomaa, että tällöin s log 2 (ab 1) < 2log 2 n eli s on suuruusluokkaan:n pituus. 7. Lasketaan ω = (w y,mod n) venäläisten talonpoikien algoritmilla. 8. Jos ω 1 mod n, luovutaan tehtävästä ja lopetetaan. 9. Jos ω 1 mod n, asetetaan ω ω ja ω (ω 2,mod n) ja mennään kohtaan 9. Tätä silmukkaa joudutaan kiertämään enintäänskertaa, silläab 1 = 2 s r on jaollinenφ(n):llä ja toisaalta Eulerin lauseen mukaanw φ(n) 1 mod n. 10. Lopulta saadaan sellainen 1:n neliöjuuri ω modulo n, että ω 1 mod n. Jos nyt ω 1 mod n, luovutaan tehtävästä ja lopetetaan. Muutoin lasketaan t = syt(ω 1,n), tulostetaant jan/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ä johtaisi n:n tekijöihinjakoon. Toisaalta tämä tekisi RSAn alttiiksi hyökkäyksille CC-dataa kä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 selville osittaista tietoa viestistä, esimerkiksi onko viesti parillinen tai kummalla väleistä0 w < n/2 vai n/2 < w < n viesti on? Tässä tietysti oletetaan, että n on pariton. Jos vaikkapa kryptataan yksittäisiä bittejä lisäämällä binääriesityksessä satunnaisia toppauksia, viestin pariteetti ilmoittaa suoraan vastaavan bitin. Näin saadaan kaksi tehtävää: (1) Lähtien kryptotekstistäc = e k1 (w) laskew:n pariteetti par(c) = (w, mod 2). (2) Lähtien kryptotekstistäc = e k1 (w) laskew:n puolisko 2w half(c) =. n

76 LUKU 8. RSA 71 Nämä kaksi tehtävää eivät ole riippumattomat: Apulause. Funktiot par ja half liittyvät toisiinsa yhtälöillä half(c) = par((2 a c, mod n)) ja Todistus. Merkitään ensin par(c) = half((2 a c, mod n)). c = (2 a c, mod n) = ((2w) a, mod n). Jos nyt half(c) = 0, niin 0 2w < n eli 2w on c :a vastaava selväteksti ja par(c ) = 0. Jos taas half(c) = 1, niin n/2 < w < n eli 0 < 2w n < n. Tällöin siis 2w non c :a vastaava selväteksti ja se on pariton, jotenpar(c ) = 1. Jälkimmäinen yhtälö seuraa edellisestä. Jos merkitään c = (2 a c,mod n), niin edellisen nojalla half(c ) = par((2 a c, mod n)) = par((2 a 2 a w a, mod n)) = par(c). Näin ollen riittää tarkastella vain funktiotahalf. Lasketaan nyt luvut c i = half(((2 i w) a, mod n)) (0 i log 2 n ). Tässä tietysti 2 i w voidaan tarvittaessa korvata oikealla viestillä (2 i w,mod n). Näin ollen c i = 0 tarkalleen silloin, kun jaettaessa 2 i w luvulla n jakojäännös on välillä [0,n/2), ts. tarkalleen silloin, kunw on jollain väleistä jn 2 i w < jn 2 i + n 2 i+1 (j = 0,1,...,2 i 1). Koskanon pariton, seuraavat loogiset ekvivalenssit pätevät: c 0 = 0 0 w < n 2 c 1 = 0 0 w < n 4 tai n 2 < w < 3n 4 c 2 = 0 0 w < n 8 tai n 4 < w < 3n 8 tai n 2 < w < 5n 8 tai 3n 4 < w < 7n 8. w voidaan näin löytää binäärisellä etsinnällä log 2 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 mielivaltainen kryptoteksti. Ko. funktioiden sisältämää tietoa viestistä ei siis saa mitenkään helposti selville. Huomautus. Jos toisaalta tunnetaan jokin määrä dekryptausavaimen tai lukujen p tai q desimaaleja/bittejä, voidaan loput laskea nopeasti, ks. COPPERSMITH, D.: Small Solutions to Polynomial Equations, and Low Exponent RSA Vulnerabilities. Journal of Cryptology 10 (1997),

77 LUKU 8. RSA 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 ja y on pieni. Sovitaan, että y Y. Y :n valinta esitetään myöhemmin, tietysti Y on kokonaisluku. Negatiivinenkin y on tässä mahdollinen, mitä se sitten tarkoittaakaan! 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 haluaa löytääy:n. Muodostetaan tätä vartenz n [t]:n polynomi P(t) = (x+t) a c = a d i t i, missä kertoimet d i esitetään positiivisessa jäännössysteemissä ja d a = 1. Etsittävänä on siis sellainen lukuy, että y Y jap(y) 0 mod n. Määritellään a+1-ulotteinen hila v 1,...,v a+1, missä v 1 = (n,0,...,0), v 2 = (0,nY,0,...,0), v 3 = (0,0,nY 2,0,...,0),..., v a = (0,...,0,nY a 1,0), v a+1 = (d 0,d 1 Y,d 2 Y 2,...,d a 1 Y a 1,Y a ). Ks. Pykälä 7.8. Kun tähän sovelletaan LLL-algoritmia, saadaan uusi kanta u 1,...,u a+1, josta tarvitaan vainu 1. Nyt hilan diskriminantti on n ny ny D = = n a Y a = n a Y a(a+1) 2, ny a 1 0 d 0 d 1 Y d 2 Y 2 d a 1 Y a 1 Y a joten i=0 u 1 2 a 4 D 1 a+1 = 2 a 4 n a a+1 Y a 2. u 1 voidaan luonnollisesti kirjoittaa kokonaislukukertoimin myös alkuperäisen kannan vektorien lineaariyhdelmänä: missä Siispä Muodostetaan polynomi u 1 = e 1 v 1 + +e a+1 v a+1 = (f 0,f 1 Y,f 2 Y 2,...,f a Y a ), f i = e i+1 n+e a+1 d i (i = 0,1,...,a 1) ja f a = e a+1. f i e a+1 d i mod n (i = 0,1,...,a). Q(t) = a f i t i. i=0

78 LUKU 8. RSA 73 KoskaP(y) 0 mod n, on myös Q(y) = a f i y i i=0 a a e a+1 d i y i = e a+1 d i y i = e a+1 P(y) 0 mod n. i=0 i=0 Edelleen, kolmioepäyhtälön, arvion y Y ja Cauchy Schwarz-epäyhtälön nojalla Q(y) a f i y i i=0 a f i Y i = i=0 a 1 f i Y i (a+1) 1 2 u1. i=0 Tässä vaiheessa voidaan esittää arvioy:lle: ValitaanY siten, että (a+1) a 4 n a a+1 Y a 2 < n eli (totea!) Y < (a+1) 1 a n 2 a(a+1). Silloin Q(y) < n. Koska toisaalta Q(y) 0 mod n, on oltava Q(y) = 0. Haluttu y voidaan siis löytää numeerisella juurten etsintäalgoritmilla kokonaiskertoimisesta polynomiyhtälöstäq(y) = 0. Vaihtoehtoja voi olla useita, niistä toivon mukaan sitten löytyy se oikea. Menettely on nopea, jos a on kyllin pieni. Vektorien v 1,...,v a+1 maksimipituus on verrannollinen Y a :n pituuteen ja LLL-algoritmi on sen suhteen polynomiaikainen. Suurille a:n arvoille toisaalta LLL-algoritmi on hidas sehän ei ollut polynomiaikainen dimension koon suhteen ja numeerinen juurten etsintäkin on silloin työlästä. Toisaalta suurille a:n arvoille Y ja siis y on valittava melko pieneksi, mikä edelleen rajoittaa käyttökelpoisuutta. Josnon suuruusluokkaa10 300, saadaany:n pituudelle desimaaleissa jaa:lle yo. valinnasta seuraavanlainen yhteys: y:n maksimipituus a

79 Luku 9 ALGEBRA: RYHMÄT 9.1 Ryhmät Ryhmä on algebrallinen struktuuri G = (A,, 1), jossa on laskuoperaatio, ns. ryhmäoperaatio, ja 1 on ns. ryhmän identiteettialkio. 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 alkiolle a on olemassa yksikäsitteinen alkio a 1, ns. a:n käänteisalkio eli inverssi, jollea a 1 = a 1 a = 1. Edelleen vaaditaan luonnollisesti, että laskuoperaatio a b on määritelty kaikille alkioille a ja b ja että tulos on yksikäsitteinen. Ryhmäoperaatio luetaan usein kertaa ja sitä kutsutaan tuloksi. Jos lisäksi vielä (4) a b = b a ( on vaihdannainen), niin sanotaan, ettägon vaihdannainen ryhmä 1. Liitännäisyydestä johtuen voidaan kirjoittaa a 1 a 2 a n ilman sulkuja, tulos ei riipu sulutuksesta. Edelleen merkitään, kuten Pykälässä 4.1, a n = a a } {{ } n kpl, a n = a 1 a 1 } {{ } n kpl ja a 0 = 1 ja tavanomaiset potenssilaskusäännöt pätevät. Potenssit voidaan myös laskea venäläisten talonpoikien menetelmällä. Huomautus. Vaihdannaisia ryhmiä kutsutaan usein myös additiivisiksi ryhmiksi. Tällöin käytetään tavallisesti myös seuraavia additiivisia merkintöjä ja nimityksiä: Ryhmäoperaatiota merkitään :lla tai +:lla tms. ja kutsutaan summaksi. Usein se luetaan plus. Identiteettialkiota taas kutsutaan nolla-alkioksi ja merkitään 0:lla tai 0:lla tms. Käänteisalkiota a 1 kutsutaan vasta-alkioksi ja merkitään a:lla. Potenssia a n kutsutaan monikerraksi ja merkitään na:lla. Vrt. myös merkinnät Pykälässä Vaihdannaista ryhmää kutsutaan myös kommutatiiviseksi ryhmäksi tai Abelin ryhmäksi. 74

80 LUKU 9. ALGEBRA: RYHMÄT 75 Yksinkertaisin ryhmä on tietysti triviaali ryhmä, jossa on pelkkä ykkösalkio. Muita esimerkkejä ryhmistä ovat: Tuttu ryhmä on (Z, +, 0) (kokonaisluvut ja yhteenlasku), merkitään lyhyesti vain Z:lla. Käänteisalkiot ovat vastalukuja ja ryhmä on vaihdannainen. (Z m,+,0) (jäännösluokat modulo m ja yhteenlasku) on myös vaihdannainen ryhmä, käänteisalkiot ovat vastaluokkia. Tätä kutsutaan jäännösluokkaryhmäksi ja merkitään lyhyesti vainz m :llä. Ei-singulaariset reaalialkioiset n n-matriisit muodostavat matriisikertolaskun suhteen ryhmän (R n n,,i n ), joka ei ole vaihdannainen (ellei n = 1). Identiteettialkio on n nidentiteettimatriisii n ja käänteisalkiot ovat käänteismatriiseja. Jos merkitään Z m :llä alkuluokkia modulo m, ks. Pykälä 2.4, niin (Z m,,1) on vaihdannainen ryhmä, käänteisalkiot ovat käänteisluokkia. Huomaa, että kahden alkuluokan tulo on aina myös alkuluokka. Tätä kutsutaan Z m :n yksiköiden ryhmäksi, merkitään lyhyesti vainz m, ja siinä onφ(m) alkiota (alkuluokkaa). Jokaisesta renkaasta R = (A,,, 0, 1), ks. Pykälä 4.1, voidaan erottaa sen additiivinen ryhmä R + = (A,, 0). Jokaisesta kunnasta F = (A,,, 0, 1) voidaan lisäksi erottaa sen multiplikatiivinen ryhmä F = (A {0},, 1). Ryhmän (A,, 1) alkiolle a pienintä sellaista lukua i 1 (jos olemassa), että a i = 1, kutsutaan a:n kertaluvuksi. Kertaluvun perusominaisuudet ovat samat kuin luvun kertaluvun modulo m Pykälässä 7.2 ja todistuksetkin ovat samat, itse asiassa kertaluku modulo m on sama kuin kertaluku ryhmässäz m : Josa j = 1, niina:n kertalukuijakaaj:n. Josa:n kertaluku oni, niina j :n kertaluku on Josa:n kertaluku oni, niina 1 = a i 1. i syt(i,j) = pyj(i,j). j Jos vaihdannaisessa ryhmässä a:n kertaluku on i ja b:n kertaluku on j ja syt(i,j) = 1, niina b:n kertaluku onij. Äärellisen ryhmän alkioilla on aina kertaluku. Jos äärellisen ryhmäng = (A,, 1) koko on N ja jollekin alkiolleg A = {1,g,g 2,...,g N 1 }, ts. kaikki ryhmän alkiot ovat g:n potensseja, niin ryhmää kutsutaan sykliseksi ryhmäksi ja g:tä sen generaattoriksi. Usein tällöin merkitään G = g. Huomaa, että g:n kertaluvun on pakko silloin 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 esimerkiksi Z ja Z m ovat syklisiä, generaattoreina 1 ja 1. Jos on olemassa primitiivinen juuri modulom, niinz m on syklinen, generaattorina mainittu primitiivinen juuri.

81 LUKU 9. ALGEBRA: RYHMÄT 76 Huomautus. Äärellinen syklinen ryhmä g, jossa on N alkiota, on rakenteeltaan siis aivan samanlainen eli isomorfinen kuinz N : g i g j = g (i+j,mod N) ja (g i ) 1 = g ( i,mod N). Laskeminen Z N :ssä on hyvin helppoa. Toisaalta laskeminen g :ssä ei ole välttämättä ole ollenkaan helppoa, josg i :n jai:n yhteyttä ei ole helppo laskea. Tätä käytetään lukuisissa kryptosysteemeissä, ks. seuraava luku. Asiaan palataan ns. diskreetin logaritmin yhteydessä. Äärellisen kunnan F p n multiplikatiivinen ryhmä F pn on aina syklinen. Sen generaattoreita kutsutaan primitiivisiksi alkioiksi. Tämähän tuli jo todetuksi Lauseessa 6.4 alkukunnille Z p, joille generaattoreita kutsutaan myös primitiivisiksi juuriksi modulop. Jos G = (A,, 1) on ryhmä ja myös H = (B,, 1), missä B on A:n osajoukko, on ryhmä, niin H on G:n aliryhmä. Esimerkiksi (2Z, +, 0), missä 2Z on parillisten kokonaislukujen joukko, on Z:n aliryhmä. Tärkeitä aliryhmiä ovat sykliset aliryhmät eli alkioiden generoimat aliryhmät: Josa:n kertaluku oni, niina:n generoimassa aliryhmässä a on Jos taas a:lla ei ole kertalukua, niin B = {1,a,a 2,...,a i 1 }. B = {1,a ±1,a ±2,...}. On helppo todeta, että kyseessä on aliryhmä. Äärellisten ryhmien aliryhmien perusominaisuus on seuraava jaollisuustulos. Merkitään äärellisen joukonc mahtavuutta C :llä. Lause 9.1. (Lagrangen lause) Jos G = (A,, 1) on äärellinen ryhmä ja H = (B,, 1) sen aliryhmä, 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 sivuluokassa a H, niin c = a b ja a = c b 1, missä b B. Näin ollen c H a H ja a H c H, joten a H = c H. Kaksi vasenta sivuluokkaa ovat siis aina joko samat tai täysin erilliset. A jakautuu näin tiettyyn määrään erillisiä vasempia sivuluokkia, joissa kussakin on B alkiota. Huomaa, että B itsekin on vasen sivuluokka, nimittäin 1 H. Jos G 1 = (A 1, 1, 1 1 ) jag 2 = (A 2, 2, 1 2 ) ovat ryhmiä, niin niiden suora tulo on ryhmä missä alkiojoukko on karteesinen tulo G 1 G 2 = (C,,(1 1, 1 2 )), C = A 1 A 2 = {(a 1,a 2 ) a 1 A 1 jaa 2 A 2 } ja operaatio sekä käänteisalkion otto määritellään kaavoilla (a 1,a 2 ) (b 1,b 2 ) = (a 1 1 b 1,a 2 2 b 2 ) ja (a 1,a 2 ) 1 = (a 1 1,a 1 2 ). On helppo todeta, että näin määritelty G 1 G 2 on tosiaan ryhmä. Ideaa voidaan jatkaa, muodostaa kolmen ryhmän suoria tuloja G 1 G 2 G 3 jne. Todistamatta esitetään seuraava klassinen tulos, joka osoittaa, että ryhmillä Z m voidaan oleellisesti karakterisoida kaikki äärelliset vaihdannaiset ryhmät suoraa tuloa käyttäen:

82 LUKU 9. ALGEBRA: RYHMÄT 77 Lause 9.2. (Kroneckerin dekompositio) Jokainen äärellinen vaihdannainen ryhmä on rakenteeltaan identtinen eli isomorfinen jonkin suoran tulon Z p i 1 1 Z p i 2 2 Z p i k k kanssa, missä p 1,...,p k ovat eri alkulukuja ja i 1,...,i k 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 suhteen: log g a = j tarkalleen silloin, kun a = g j. Äärellisessä syklisessä ryhmässä, jossa onn alkiota, sovitaan vielä, että0 log g a N 1. Esimerkiksi Z:ssa logaritmi on triviaali: Kanta on ±1 ja log ±1 a = ±a. Ryhmässä Z m :kin se on helppo: Kanta on jokin i, missä syt(i,m) = 1, ja log i j = (ji 1,mod m). Mutta jo Z 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. Vaikka itse ryhmägei olisikaan syklinen, eikä diskreetti logaritmi siis olisi määritelty itseg:ssä, ovat sen syklisissä aliryhmissä logaritmit joka tapauksessa määriteltyjä. Tarkastellaan lähemmin Z p:n logaritmia, jota usein kutsutaan myös indeksiksi. Tehtävänä on siis etsiä sellainen luku j väliltä 0 j p 2, että g j b mod p, kun generaattori (primitiivinen juuri) g ja b on annettu, vaikkapa positiivisessa jäännössysteemissä desimaalilukuina. Selvästi tehtävä on N P:ssä: Arvataan vain j ja testataan potenssiinkorotuksella venäläisten talonpoikien algoritmilla, että se on oikea. Deterministisesti j voidaan edelleen laskea yksinkertaisella etsinnällä ja venäläisten talonpoikien algoritmilla noin ajassa O(p(lnp) 3 ) ja polynomitilassa. Laskemalla etukäteen esiprosessointina ns. indeksitaulu, ts. parit (i,(g i, mod p)) (i = 0,1,...,p 2) lajiteltuna toisen komponentin mukaan, voidaan tehtävä ratkaista polynomiajassa ja -tilassa indeksitaulu poislukien, mutta esiprosessointi vie nyt ylipolynomiaalisen ajan ja tilan. Eräänlaisen välimuodon tarjoaa Shanksin pikkuaskel-jättiaskel-algoritmi: 1. Asetetaan m p 1. Kokonaisneliöjuuri p 1 on nopeasti laskettavissa ja p 1, josp 1 on neliö eli p 1 = p 1 2 p 1 = p 1 +1 muuten. 2. Lasketaan parit (i,(g mi, mod p)) (i = 0,1,...,m 1) (jättiaskeleet) ja lajitellaan ne toisen komponentin mukaan. Tuloksena on listal 1. Tähän tarvitaan venäläisten talonpoikien menetelmä ja jokin nopea lajittelualgoritmi, esimerkiksi pikalajittelu (quicksort).

83 LUKU 9. ALGEBRA: RYHMÄT Lasketaan parit (k,(bg k, mod p)) (k = 0,1,...,m 1) (pikkuaskeleet) ja lajitellaan nekin toisen komponentin mukaan. Näin saadaan listal Etsitään listastal 1 pari (i,y) ja listastal 2 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 g mi bg k mod p eli b g mi+k = (g p 1 ) t g j 1 g j g j mod p. Toisaalta algoritmi johtaa aina tulokseen, sillä jos b g j mod p ja 0 j p 2, niin j voidaan kirjoittaa jakolaskulla muotoon j = 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 implementoida aikaan O(m) ja tilaano(m). Muitakin algoritmeja diskreetin logaritmin laskemiseksi Z p:ssä on, mm. Pollardin kengurualgoritmi, ks. Pykälä 12.2, Pohlig Hellman-algoritmi ja ns. indeksilaskumenetelmä, ks. esimerkiksi STINSON tai SALOMAA. Pohlig Hellman-algoritmi on kohtuullisen nopea, mikäli p 1:llä on vain pieniä alkutekijöita. Kaikki nämä algoritmit voidaan myös yleistää F pn:n diskreetin logaritmin laskuun, joka myös on hyvin työlästä. 9.3 Elliptiset käyrät Geometrisesti elliptisellä 2 käyrällä tarkoitetaan3. asteen käyrää, jonka yhtälö on y 2 +a 1 xy +a 3 y = x 3 +a 2 x 2 +a 4 x+a 6. Huomaa erikoinen kerrointen indeksointi, joka on perinteinen. Lisäehtona on, että käyrä on sileä, ts. että puolittain osittaisderivoimalla saadut yhtälöt a 1 y = 3x 2 +2a 2 x+a 4 2y +a 1 x+a 3 = 0 eivät toteudu käyrällä yhtaikaa. Geometrisesti tämä takaa, että käyrällä on tangentti jokaisessa pisteessä. Peruskursseilta tutun implisiittisen derivoinnin tuloksena nimittäin dy dx = 3x2 +2a 2 x+a 4 a 1 y 2y +a 1 x+a 3 ja dx dy = 2y +a 1 x+a 3 3x 2 +2a 2 x+a 4 a 1 y. 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 eli R 2 :ssa. Käyrää voidaan ajatella missä tahansa kunnassa F (ns. kerroinkunta), josta myös kertoimet silloin tulevat. Käyrä on silloin 2 Nimi tulee siitä, että eräät algebralliset funtiot y = f(x), jotka liittyvät ellipsin kaarenpituuksien laskuun integroimalla, toteuttavat tällaisen3. asteen yhtälön.

84 LUKU 9. ALGEBRA: RYHMÄT 79 kaikkien niiden alkioparien (x,y) joukko, jotka toteuttavat yhtälön. Vaikka sileysehdolla ei ole tällöin välttämättä yhtään mitään geometrista merkitystä, osoittautuu, että se on kuitenkin tärkeä. Varsin yleisesti voidaan rajoittua hieman yksinkertaisempiin elliptisiin käyriin, nimittäin muotoa y 2 = x 3 ax b (ns. lyhyt Weierstraßin muoto) oleviin käyriin, missä yhtälöt 0 = 3x 2 a 2y = 0 eivät toteudu käyrällä yhtaikaa (sileysehto). Tässä on merkitty 2 = 21 sekä 3 = 31. Olettaen, että 2 0 ja 3 0, eliminoimalla yhtälöistä y 2 = x 3 ax b 0 = 3x 2 a 2y = 0 x jay (ei ole kovin vaikeaa, kokeile) nähdään, että tämä vastaa ehtoa 4a 3 27b 2 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, joissa 2 = 0 (esimerkiksi kunnat F 2 n) tai 3 = 0 (esimerkiksi F 3 n). Edellisissä muodot ovat y 2 ay = x 3 bx c (ylisingulaarinen tapaus) ja y 2 xy = x 3 ax 2 b (ei-ylisingulaarinen tapaus) ja jälkimmäisessä taas y 2 = x 3 ax 2 bx c. Lisäksi tarvitaan vastaavat sileysehdot. Vaikkakin esimerkiksi kunnat F 2 n ovat hyvin tärkeitä kryptografiassa, jatkossa rajoitutaan yksinkertaisuuden vuoksi vain kuntiin, joissa em. muoto y 2 = x 3 ax b, missä 4a 3 27b 2 0, on mahdollinen. Muita muotoja käsittelevät mm. WASHINGTON sekä BLAKE & SEROUSSI & SMART. Kauan on geometrisin perustein tiedetty, että reaaliselle elliptiselle käyrälle eli sen pisteille voidaan määritellä laskuoperaatio, joka tekee siitä vaihdannaisen ryhmän. Vastaava määritelmä voidaan tehdä myös muissa kunnissa, jolloin myös saadaan vaihdannainen ryhmä. Näitä ryhmiä kutsutaan yksinkertaisesti vain elliptisiksi käyriksi. Koska elliptisiä käyriä on hyvin paljon, saadaan tätä kautta runsaasti otollisia syklisiä aliryhmiä diskreettiin logaritmiin pohjautuvia kryptosysteemejä ajatellen. Tarkastellaan ryhmäoperaatiota ensin havainnollisuuden vuoksir 2 :ssa. Ryhmän identiteettialkio on jossain määrin keinotekoinen, se on y-akselin suunnassa äärettömyydessä oleva piste O. Positiivinen ja negatiivinen äärettömyys samaistetaan. Kaikkien y-akselin suuntaisten suorien sovitaan leikkaavan tässä pisteessä O. Geometrisesti pisteiden P ja Q ryhmäoperaatio tuottaa pisteen R = P Q sekä vastapisteen P seuraavan säännön mukaan:

85 LUKU 9. ALGEBRA: RYHMÄT Piirretään suora pisteidenp jaqkautta. JosP = Q, tämä suora on tangentti pisteessäp. Sileys takaa, että tangentti on olemassa. 2. Mikäli piirretty suora on y-akselin suuntainen, onr = O. 3. MuutoinR on suoran ja käyrän leikkauspisteen peilikuvax-akselin suhteen. On mahdollista, että suora sivuaa käyrää P :ssä (eli leikkauspiste yhtyy P :hen), jolloin R on P :n peilikuva, tai Q:ssa (leikkauspiste yhtyyq:hun), jolloinr onq:n peilikuva. 4. P on P :n peilikuva x-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 (erityisesti O O = O) ja että P P = P P = O, kuten pitääkin. Esimerkki. Ohessa on Maple-ohjelmiston piirtämä kuva elliptisestä käyrästä y 2 = x 3 5x+1 R 2 :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 x R = ((1+ 29/2, (3+ 29)/2). Huomaa, miten käyrä on kahdessa osassa, joista toinen on suljettu ja toinen ääretön. Kaikki elliptiset käyrät eivät ole tällä tavoin kaksiosaisia Lasketaan operaation P Q = R tulos yleisesti. Tapaukset P = O ja/tai Q = O ovat helpot. Jos pisteet ovat P = (x 1,y 1 ) sekä Q = (x 2,y 2 ), P Q ja x 1 = x 2, niin ilmeisesti y 1 = y 2, joten R = O eli P = Q. Näinpä voidaan edelleen rajoittua tapauksiin, joissa joko x 1 x 2 taip = Q. Katsotaan ensin edellinen tapaus. SilloinP :n jaq:n kautta kulkevan suoran parametriesitys on { x = x 1 +(x 2 x 1 )t y = y 1 +(y 2 y 1 )t. Sijoitetaan tämä elliptisen käyrän yhtälööny 2 x 3 ax b = 0: (y 1 +(y 2 y 1 )t) 2 (x 1 +(x 2 x 1 )t) 3 a(x 1 +(x 2 x 1 )t) b = 0. Vasen puoli on t:n 3. asteen polynomi p(t). Koska piste P on käyrällä (vastaa arvoa t = 0) ja samoin piste Q (vastaa arvoa t = 1), polynomi p(t) on jaollinen polynomilla t(t 1), ts. p(t) = q(t)t(t 1) jollekin 1. asteen polynomille q(t). Edelleen yhtälöstä q(t) = 0 saadaan kolmatta leikkauspistettä(x 3,y 3 ) vastaava parametrin arvo t 3. Jakolaskutoimitus osoittaa, että q(t) = (y 2 y 1 ) 2 3x 1 (x 2 x 1 ) 2 (x 2 x 1 ) 3 (t+1) ja näin t 3 = (y 2 y 1 ) 2 (x 2 x 1 ) 3 2x 1 +x 2 x 2 x 1.

86 LUKU 9. ALGEBRA: RYHMÄT 81 Sijoittamalla tämä suoran parametriesitykseen saadaan { x 3 = λ 2 x 1 x 2 y 3 = λ(x 3 x 1 )+y 1, missä λ = y 2 y 1 x 2 x 1 (piirretyn suoran kulmakerroin), ja lopulta P Q = R = (x 3, y 3 ). Tässä voi olla, että(x 3,y 3 ) = P tai (x 3,y 3 ) = Q. Huomaa, että(x 3,y 3 ) on aina määritelty. Katsotaan vielä tapaus, jossap = Q = (x 1,y 1 ), ja lasketaan P P = 2P = R. Jos y 1 = 0, on käyrän tangentti ilmeisesti y-akselin suuntainen ja R = O eli P = P. Näin voidaan siirtyä tapaukseen y 1 0. Tangentin kulmakerroin on dy dx = 3x2 +a. 2y Pisteeseen P piirretyn tangenttisuoran parametriesitys on näin ollen { x = x 1 +2y 1 t y = y 1 +(3x 2 1 +a)t. Sijoittamalla tämä käyrän yhtälöön kuten edellä saadaan polynomi p(x) = (y 1 +(3x 2 1 +a)t) 2 (x 1 +2y 1 t) 3 a(x 1 +2y 1 t) b. Koska piste P on käyrällä (vastaa arvoa t = 0), p(t) on jaollinen polynomilla t:llä, ts. p(t) = q(t)t. Jakolaskulla saadaan q(t) = ((3x 2 1 +a) 2 12x 1 y 2 1)t 8y 3 1t 2. Yhtälönq(t) = 0 yksi juuri ont = 0 ja toinen on t 2 = (3x2 1 +a) 2 8y 3 1 3x 1 2y 1. Leikkauspiste(x 2,y 2 ) saadaan sijoittamalla tämä parametriesitykseen: { x 2 = λ 2 2x 1 y 2 = λ(x 2 x 1 )+y 1, missä λ = 3x2 1 +a 2y 1 (piirretyn suoran kulmakerroin). Lopulta saadaan 2P = R = (x 2, y 2 ).

87 LUKU 9. ALGEBRA: RYHMÄT 82 Jälleen voi olla, ettäp = (x 2,y 2 ). Myös nyt(x 2,y 2 ) on aina määritelty. Nämä laskukaavat voidaan ottaa käyttöön missä tahansa kunnassa, jossa elliptinen käyrä voidaan kirjoittaa muotoony 2 = x 3 ax b, missä4a 3 27b 2 0. Muissa kunnissa tarvitaan hieman 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 kuitenkin vähän vaikea todistaa yo. kaavoista lähtien. Oikea maailma elliptisten käyrien ominaisuuksia ajatellen on ns. projektiivinen geometria, jossa myös itse ryhmäoperaatio luonnostaan tulee esille. Liitännäisyys R 2 :ssa seuraakin melko suoraan klassisista kolmannen asteen käyrien projektiivisen geometrian tuloksista. Seuraavassa vanhasta alan suomalaisesta klassikosta 3 tulos, josta liitännäisyys seuraa helposti: Jos kaksi suoraa a ja b leikkaa kolmannen asteen käyrän vastaavasti pisteissä A 1,A 2,A 3 ;B 1,B 2,B 3, ovat suoriena 1 B 1,A 2 B 2,A 3 B 3 ja käyrän kolmannet leikkauspisteetc 1,C 2,C 3 keskenään samalla suoralla. Muissa kunnissa liitännäisyys pitää todistaa erikseen ja se on varsin työläs tehtävä, ks. esimerkiksi WASHINGTON. Huomaa, että muissa kunnissa myös vaihdannaisuus pitää todistaa erikseen, mutta tämä on aika helppoa. Molemmat ovat symbolisia identiteettejä, joten ne voidaan todentaa symbolisesti. Tehdään se Maple-ohjelmistolla. Ilmeisesti tapaukset, joissa ainakin yksi alkioista 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]]); ( ) [ (y 2 y 1 ) 2 (x 2 x 1 ) 2 x (y 2 y 1 ) 2 1 x 2, (y 2 y 1 ) (x 2 x 1 ) 2 2x 1 x 2 (x 2 x 1 ) 1 y 1 ] > B:=eco([x[2],y[2]],[x[1],y[1]]); ( ) [ (y 1 y 2 ) 2 (x 1 x 2 ) 2 x (y 1 y 2 ) 2 2 x 1, (y 1 y 2 ) (x 1 x 2 ) 2 2x 2 x 1 (x 1 x 2 ) 1 y 2 ] > normal(a-b); [0,0] Todennetaan edelleen liitännäisyys tapauksessa, jossa ei ole 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: 3 NYSTRÖM, E.J.: Korkeamman geometrian alkeet sovellutuksineen. Otava (1948).

88 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 matemaattisesti. 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 kuitenkin, että äärelliset elliptiset käyrät ovat jäännösluokkaryhmien suoria tuloja. Tarkempikin tulos tunnetaan: Lause 9.3. (Casselsin lause) Elliptinen käyrä yli äärellisen kunnan F q on joko syklinen tai rakenteeltaan identtinen eli isomorfinen sellaisen kahden jäännösluokkaryhmän suoran tulon Z n1 Z n2 kanssa, ettän 1 n 2,q 1. Ryhmän kokoa ajatellen tiedetään, että Lause 9.4. (Hassen lause) Jos elliptisessä käyrässä yli äärellisen kunnanf q onn alkiota, niin q +1 2 q N q +1+2 q.

89 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ä kunnassaf q ja siinä onq+1 a alkiota (vrt. Hassen lause) ja että yhtälön x 2 ax + q = 0 juuret ovat α sekä β. Silloin E:ssä ajateltuna elliptiseksi käyräksi kunnassaf q m on tarkalleenq m +1 α m β m alkiota. KoskaF q onf q m:n alikunta,e on tulkittavissa myös elliptiseksi käyräksi F q m:ssä. Ks. Pykälä 4.3. Näiden lauseiden todistukset ovat jo varsin vaativaa algebrallista lukuteoriaa! 4 Näin ollen elliptisessä käyrässä yli F q :n on suurin piirtein yhtä monta alkiota kuin F q :ssä. Tarkankin alkiomäärän laskemiseksi tunnetaan melko tehokkaita algoritmeja, ns. Schoofin algoritmi 5 ja sen seurannaiset, ks. WASHINGTON tai BLAKE & SEROUSSI & SMART. Ei ole helppoa löytää edes yhtä näistä monista alkioista. Itse asiassa ei tunneta polynomiaikaista determinististä algoritmia elliptisen käyrän alkioiden generoimiseksi äärellisissä kunnissa. Josq = p k, eräs (hidas) tapa on tietysti muodostaa satunnaisia pareja(x,y), missäx,y F q käyttäen kunnan F q esitystä Z p [x]:n polynomien jäännösluokkina modulo jokin astetta k oleva Z p [x]:n jaoton polynomi ks. Pykälä 4.3 ja testata laskemalla toteuttaako pari elliptisen käyrän yhtälön. Hassen lauseen nojalla alkio löytyy silloin kerta-arvauksella noin todennäköisyydellä 1/q. Seuraava Las Vegas -tyyppinen algoritmi tuottaa käyrän alkion positiivisessa jäännössysteemissä esitettynä alkukunnassaz p, missäp > 3: 1. Valitaan satunnainen luku x väliltä 0 x < p ja asetetaan z (x 3 +ax+b, mod p). Hassen lauseen nojalla tämä tuottaa neliönjäännöksen z noin 50% todennäköisyydellä, sillä kustakinz:sta saadaan kaksiy:n arvoa, elleiz = Jos z = 0, tulostetaan(x, 0) ja lopetetaan. 3. Jos z (p 1)/2 1 mod p, luovutaan tehtävästä ja lopetetaan. Eulerin kriteerin nojalla z on tällöin epäneliönjäännös modulop. 4. Lasketaan Shanksin algoritmia käyttäen z:n neliöjuuret y 1 ja y 2 modulo p, tulostetaan (x,y 1 ) ja(x,y 2 ) ja lopetetaan. Algoritmi on ilmeisesti polynomiaikainen ja se tuottaa tuloksen noin 25% 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än alkiop O ja (suuri) alkulukur, ettärp = O, jolloinp :n kertaluku onr.p :n kertaluvunhan on joka tapauksessa jaettava r. Syklinen aliryhmä P on silloin otollinen kryptografiaa ajatellen. Toinen (hidas) tapa on valita satunnainen alkio P ja testata sen kertaluku, jonka pitäisi tietysti olla suuri. Tähän käy eräs Shanksin pikkuaskel-jättiaskel-algoritmin versio. Toistamalla ja 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 ole kovinkaan suoraviivaista. Ks. esimerkiksi ROSING tai BLAKE & SEROUSSI & SMART tai artikkeliviite KONSTATINOU, E. & STAMATIOU, Y.C. & ZAROLIAGIS, C.: Efficient Generation of Secure Elliptic Curves. International Journal of Information Security 6 (2007), Hyviä yleisiä viitteitä ovat KOBLITZ ja WASHINGTON ja mm. SILVERMAN & TATE tai COHEN tai CRANDALL & POMERANCE. 4 Ks. vaikkapa WASHINGTON tai CRANDALL & POMERANCE. 5 Alkuperäisviite on SCHOOF, R.: Elliptic Curves over Finite Fields and the Computation of Square Roots mod p. Mathematics of Computation 44 (1985), Algoritmi on hankala ja myös vaikea implementoida nopeaksi.

90 Luku 10 ELGAMAL. DIFFIE HELLMAN 10.1 Elgamalin kryptosysteemi Elgamalin kryptosysteemi 1 ELGAMAL voidaan pohjata mihin tahansa äärelliseen ryhmään G = (A,, 1), jonka suurille syklisille aliryhmille a diskreetti logaritmi log a on vaikea laskea. Tällaisia ryhmiä ovat esimerkiksiz p ja yleisemminf p n, erityisestif 2n, sekä elliptiset käyrät yli äärellisten kuntien. Julkinen avain on kolmikko k 1 = (G,a,b), missä b = a y. Salainen avain on k 2 = y. Huomaa, että julkinen avain sisältää tiedon salaisesta avaimesta, sillä y = log a b, mutta sitä ei ole helppo laskea julkisesta avaimesta. Kryptaus on epädeterminististä, sitä varten valitaan satunnaisesti luku x väliltä 0 x < l, missä l on a:n kertaluku. Jos l:ää ei haluta julkistaa tai sitä ei tiedetä, voidaan vaihtoehtoisesti antaa suurempikin yläraja, esimerkiksi G:n alkioluku, jonka tekijä l on, ks. Lagrangen lause. Kryptausfunktio on e k1 (w,x) = (a x,w b x ) = (c 1,c 2 ). Viestilohko on siis tulkittavag:n alkioksi. Dekryptausfunktio on Dekryptaus toimii, sillä d k2 (c 1,c 2 ) = c 2 c y 1. d k2 (a x,w b x ) = w b x (a x ) y = w a xy a xy = w. Ideana on peittää w kertomalla seb x :llä, x taas välitetääna x :n kautta. Jotta ELGAMAL voitaisiin pystyttää alkukunnan multiplikatiivisessa ryhmässäz p, valitaan yhtaikaa sekä p että primitiivinen juuri a modulo p. Lisäksi on muistettava, että p 1:llä tulisi olla suuria alkutekijöitä, jotta esimerkiksi Pohlig Hellman-algoritmilla ei saataisi diskreettiä logaritmia lasketuksi nopeasti. (Ks. Pykälä 7.2.) Tämä käy seuraavasti: 1. Valitaan satunnainen suuri alkuluku q sekä pienempi satunnainen luku r, joka voidaan jakaa tekijöihin. 2. Jos 2qr +1 on alkuluku, asetetaan p 2qr +1. Huomaa, että p 1:llä on silloin suuri alkutekijäq. Muutoin mennään kohtaan 1. 1 Systeemin kehitti Taher Elgamal vuonna Alkuperäisviite on ELGAMAL, T.: A Public Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms. IEEE Transactions on Information Theory IT 31 (1985), Tässä systeemissä tarkasteltiinz p:n logaritmeja. 85

91 LUKU 10. ELGAMAL. DIFFIE HELLMAN Valitaan satunnaisesti luku a väliltä 1 a < p. 4. Testataan Lucas n kriteerillä onko a primitiivinen juuri modulo p vai ei. Tähän tarvittavat p 1:n alkutekijät, eli 2 jaq sekär:n alkutekijät, ovat nyt helposti saatavilla. 5. Jos a on primitiivinen juuri modulop, tulostetaan p jaaja lopetetaan. Muutoin mennään kohtaan 3. Huomautus. RyhmässäZ p on varottava käyttämästä sellaisia alkioitab, joiden kertalukur on paljon pienempi kuinp. Muutoin on r:ää helppo kokeilla ja laskea c r 2 (wbx ) r w r (b r ) x w r 1 = w r mod p. Jos tällainen kertaluku on oikea, on koko kryptosysteemi muutettu deterministiseksi RSAta muistuttavaksi systeemiksi, joka voi murtua helposti esimerkiksi keskikohtaamisella, ks. Pykälä 8.2. Poikkeuksena tapaus, jossa w b i mod p jollekin i:lle ja c r 2 1 mod p, mutta näitä valintoja on vähän, josr on pieni Diffie Hellman-avainjakosysteemi ELGAMAL sallii useiden osapuolien julkaista julkisen avaimensa saman systeemin puitteissa: Kukin valitsee vain oman y:nsä ja julkaisee vastaavan a y :n. ELGAMAL onkin itse asiassa myöhempi modifikaatio eräästä vanhimmista julkisen avaimen systeemeistä, Diffie Hellmanavainjakosysteemistä DIFFIE HELLMAN. Alkuasetelma on tässä sama kuin ELGAMALissa. Kukin osapuoli i valitsee jälleen satunnaisen luvun x i väliltä 0 x i < l tai joltain laajemmalta väliltä ja julkaisee a x i :n. Osapuolten i ja j välinen yhteinen avain on silloin a x ix j, jonka kumpikin voi laskea nopeasti julkaistusta tiedosta ja omasta salaisesta luvustaan. DIFFIE HELLMANin murtaminen muodostuu seuraavista kahdesta operaatiosta. (1) Lasketaana x i :stäx i. (2) Lasketaan(a x j ) x i = a x ix j. Näin ollen se on ekvivalentti seuraavan tehtävän ratkaisemisen kanssa: DHP: Kun annetaan (G,a,b,c), laskeb log a c. Tämä tehtävä on ns. Diffie Hellman-probleema. Diffie Hellman-probleeman kompleksisuutta ei tiedetä, diskreetin logaritmin laskeminen luonnollisesti ratkaisee myös sen. Huomaa, että b:n jac:n järjestyksellä ei itse asiassa ole väliä, sillä b log a c = (a log a b ) log a c = (a log a c ) log a b = c log a b. Myös ELGAMALin dekryptaus on ekvivalentti Diffie Hellman-probleeman kanssa. Jos nimittäin DHP voidaan ratkaista nopeasti, saadaan ensin lasketuksi nopeasti ja sitten b x = b log a ax = b log a c 1 c 2 b x = w ja ELGAMAL murtuu. Toisaalta, jos ELGAMAL murtuu, saadaan kryptotekstistä (c 1,c 2 ) ja julkisesta tiedosta nopeasti lasketuksiw = c 2 b x, jolloin saadaan myös lasketuksi b log a c 1 = b x = (c 1 2 w) 1. Koskac 1 on satunnainen a :n alkio, tietää tämä sitä, että DHP ratkeaa.

92 LUKU 10. ELGAMAL. DIFFIE HELLMAN Elliptisiin käyriin perustuvat kryptosysteemit Elliptisen käyrän syklistä aliryhmää käyttäen voidaan pystyttää Elgamalin kryptosysteemi. Tällöin luonnollisesti ko. syklisessä aliryhmässä diskreetin logaritmin tai Diffie Hellman-probleeman pitää olla vaikeasti ratkaistavissa. Valitettavasti vain eräissä elliptisissä käyrissä (ylisingulaariset elliptiset käyrät) yli äärellisten kuntien nämä probleemat ovat suhteellisen nopeasti ratkaistavissa ns. Menezes Okamoto Vanstone-algoritmilla, ja näitä pitää välttää, ks. KOBLITZ tai WASHINGTON tai BLAKE & SEROUSSI & SMART. 2 Todettakoon, että Shanksin pikkuaskeljättiaskel-algoritmi sopii diskreetin logaritmin laskemiseksi elliptisissä käyrissä, ja samoin Pohlig Hellman-algoritmi, mutta ne eivät aina ole nopeita. Yksi vaikeus on luonnollisesti se, että elliptisten käyrien syklisten aliryhmien konstruktio on työlästä. Toinen vaikeus on, että kun ELGAMAL äärellisille kunnille noin kaksinkertaistaa viestin pituuden (parikonstruktio), niin ELGAMAL elliptisille käyrille yli äärellisten kuntien noin nelinkertaistaa sen. Elliptisessä käyrässähän on Hassen lauseen nojalla pisteitä suurin piirtein yhtä monta kuin kunnassa alkioita. Tämä vältetään käyttämällä tehokkaampaa ELGA- MALin varianttia, ns. Menezes Vanstone-systeemiä MENEZES VANSTONE. Julkinen avain on kolmikkok 1 = (E,α,β), missäe on elliptinen käyrä yli alkukunnanz p, missäp > 3,αon generoiva alkio E:n syklisessä aliryhmässä ja β = aα. Salainen avain on k 2 = a. Viestilohko on Z p :n alkioiden pari (w 1,w 2 ) positiivisessa jäännössysteemissä esitettynä. Kryptausfunktio määritellään seuraavasti: missä, e k1 ((w 1,w 2 ),x) = (y 0,y 1,y 2 ), y 0 = xα, y 1 = (c 1 w 1, mod p), y 2 = (c 2 w 2, mod p), x on satunnaisluku vrt. ELGAMAL ja luvut c 1 sekä c 2 saadaan, kun esitetään elliptisen käyrän pistexβ = (c 1,c 2 ) positiivisessa jäännössysteemissä.xpitää valita siten, ettäc 1,c 2 0 mod p. Dekryptausfunktio on puolestaan d k2 (y 0,y 1,y 2 ) = ((y 1 c 1 2, mod p),(y 2 c 1 2, mod p)). Huomaa, ettäc 1 jac 2 saadaan a:n avullay 0 :sta, sillä ay 0 = a(xα) = (ax)α = x(aα) = xβ = (c 1,c 2 ). Ideana on ELGAMALin tapaan käyttää elliptistä käyrää viestin peittämiseen. ELGAMALin tapaan MENEZES VANSTONE myös vain noin kaksinkertaistaa viestin pituuden, kaksi Z p :n alkiota kryptautuu neljäksi. Huomautus. Tilaa voidaan säästää myös pakkaamalla elliptisen käyrän alkio pienempään tilaan. Pakkaus ja sen purkaminen vievät sitten tosin lisää aikaa. Esimerkiksi alkukunnassa Z p elliptisen käyrän alkio (piste) (x,y) voidaan pakata muotoon (x,i), missä i = (y,mod 2). y:hän voidaan laskea x 3 +ax+b:stä Shanksin algoritmilla ja merkkivalinta määräytyy i:stä. (Jos(x,y) on käyrän piste, niin samoin on (x,p y) jap y 1 y 1 i mod 2.) 2 Ikävä piirre on sekin, että juuri käytännön kannalta mukavat bitteihin perustuvat äärelliset kunnatf 2 n näyttäisivät olevan huonompia kuin muut. Ks. esimerkiksi GAUDRY, P. & HESS, F. & SMART, N.P.: Constructive and Destructive Facets of Weil Descent on Elliptic Curves. Journal of Cryptology 15 (2002), Mitä pidemmälle matemaattisesti sangen vaativassa elliptisten käyrien teoriassa edetään sitä enemmän tällaisia heikkouksia luultavasti paljastuu.

93 LUKU 10. ELGAMAL. DIFFIE HELLMAN 88 Kolmas vaikeus elliptisten käyrien käytössä on viestin koodaaminen käyrän pisteiksi. Eräs tapa tämän suorittamiseksi on seuraava. Rajoitutaan tässä elliptisiin käyriin alkukunnassa Z p, menettely yleistyy toki muihinkin äärellisiin kuntiin. 1. Koodataan viestilohko luvuksi m, jolle m + 1 p/ Testataan samaan samaan tapaan kuin Pykälän 9.3 algoritmissa onko elliptisellä käyrällä sellaista pistettä(x, y), että 100m x 100m Jos tällainen piste (x, y) löytyy, valitaan se viestin m vastineeksi. Muutoin luovutaan tehtävästä. Luopuminen on toisaalta harvinaista, sillä on todettu, että algoritmi luopuu noin todennäköisyydellä2 100 = Tällainen menettely tietysti hidastaa kryptausprosessia jonkin verran. Huomaa, että dekoodaus on nopeaa:m = x/100. Huomautus. Elliptisiin käyriin pohjautuvien kryptosysteemien etu esimerkiksi RSAhan verrattuna on se, että nykykäsityksen mukaan tarvittava avaimen koko on huomattavasti pienempi. Mainittakoon vielä Richard Crandallin patentoima nopea elliptisten käyrien kryptosysteemi CRANDALL, joka perustuu erikoisten alkulukujen, ns. Mersennen alkulukujen, käyttöön XTR Uudempi, hyvin nopea variantti DIFFIE HELLMAN- tai ELGAMAL-tyyppisestä kryptosysteemistä saadaan eräiden äärellisten kuntien yksikköryhmissä, ns. XTR-systeemi. 3 XTRssä toimitaan ryhmän F p 6 suurta kertalukua r olevassa syklisessä aliryhmässä, missä p on suuri alkuluku ja r p 2 p + 1. Tällaisessa aliryhmässä alkioiden esitys voidaan tehdä pienessä tilassa ja laskuoperaatiot ovat implementoitavissa nopeina. Kysymys on siis lähinnä ryhmän sopivasta valinnasta implementoinnin kannalta. Vastaavanlaisia menettelyjä on muitakin, mm. ns. CEILIDH-systeemi. 3 Alkuperäisviite on LENSTRA, A.K. & VERHEUL, E.R.: The XTR Public Key System. Proceedings of Crypto 00. Lecture Notes in Computer Science 1880, Springer Verlag (2000), Nimi muuten tulee sanoista Efficient Compact Subgroup Trace Representation.

94 Luku 11 NTRU 11.1 Määrittely NTRU-kryptosysteemi 1 on polynomirenkaisiin ja niiden jäännösluokkarenkaisiin perustuva kryptosysteemi, joka jossain määrin muistuttaa RIJNDAELia. Kuten RIJNDAELkin se on saanut paljolti inspiraationsa ns. syklisten koodien konstruktiosta koodausteoriassa, ks. kurssi Koodausteoria. NTRU on konstruktioltaan jonkin verran mutkikkaampi kuin RSA tai ELGAMAL. NTRUssa valitaan ensin positiiviset kokonaisluvut n, p ja q, missä p on paljon pienempi kuin q ja syt(p,q) = 1. Eräs esimerkkivalinta on n = 107,p = 3,q = 64. Systeemi pohjautuu polynomirenkaisiinz p [x] ja Z q [x], ja erityisesti jäännösluokkarenkaisiinz p [x]/(x n 1) ja Z q [x]/(x n 1). Ks. Pykälä 4.2 ja huomaa, että x n 1on pääpolynomi kummassakin polynomirenkaassa, joten sillä voi jakaa. Tärkeitä ovat siis jakojäännökset jaettaessax n 1:llä eli enintään astettan 1 olevatz p [x]:n ja Z q [x]:n polynomit. Laskeminen näillä Z p [x]/(x n 1):ssä ja Z q [x]/(x n 1):ssä on helppoa, sillä yhteenlasku on tavallinen polynomien yhteenlasku ja kertolaskussa x k x (k,mod n) mod x n 1. Jatkossa käytetään seuraavaa merkintää. Jos P(x) on kokonaiskertoiminen polynomi, niin Z m [x]:n polynomip (m) (x) saadaanp(x):stä ottamalla sen kertoimet modulom. Lisäksi jatkossa tällainen P (m) (x) eli sen kertoimet esitetään symmetrisessä jäännössysteemissä, ks. Pykälä 2.4. Ajatellen polynomien yhteen- ja kertolaskua todetaan hyvin helposti, että jos Z[x]:ssä R(x) = P(x)+Q(x) ja S(x) = P(x)Q(x), niin Z m [x]:ssä R (m) (x) = P (m) (x) + Q (m) (x) ja S (m) (x) = P (m) (x)q (m) (x). Edelleen voidaan todeta, että jos P(x) Z[x] on enintään astetta n 1, niin samoin on P (m) (x) Z m [x]. Tällöin polynomi P (m) (x) voidaan ajatella myös jäännösluokkarenkaanz m [x]/(x n 1) polynomiksi. Systeemin pystytystä varten valitaan kaksi salaista enintään astetta n 1 olevaaz[x]:n polynomiaf(x) jag(x). Näistä saadaan edelleenz p [x]:n polynomitf (p) (x) jag (p) (x) sekäz q [x]:n polynomit f (q) (x) ja g (q) (x). Kuten edellä todettiin, f (p) (x) ja g (p) (x) voidaan tulkita myös jäännösluokkarenkaan Z p [x]/(x n 1) polynomeiksi. Samoin f (q) (x) ja g (q) (x) voidaan tulkita jäännösluokkarenkaanz q [x]/(x n 1) polynomeiksi. Näin tulkittuina polynomeiltaf (p) (x) ja f (q) (x) tai alkuperäiseltä polynomilta f(x) vaaditaan lisäksi, että on olemassa sellaiset enintään astettan 1 olevat polynomitf p (x) Z p [x] jaf q (x) Z q [x], että F p (x)f (p) (x) 1 mod x n 1 ja F q (x)f (q) (x) 1 mod x n 1. 1 Nimen 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 Science Springer Verlag (1998), Idea on pari vuotta vanhempi. 89

95 LUKU 11. NTRU 90 Ts.F p (x) onf (p) (x):n käänteisalkioz p [x]/(x n 1):ssä jaf q (x) vastaavastif (q) (x):n käänteisalkioz q [x]/(x n 1):ssä. Vielä lasketaanz q [x]:ssä h(x) F q (x)g (q) (x) mod x n 1. Ilmeisesti voidaan olettaa, että h(x):n aste enintään n 1, joten se voidaan myös tulkita jäännösluokkarenkaanz q [x]/(x n 1) polynomiksi. Julkinen avain on nyt (n,p,q,h(x)) ja salainen avain on (f (p) (x),f p (x)). Viesti koodataan Z p [x]/(x n 1):n alkioksi, ts. viesti on enintään astetta n 1 oleva Z p [x]:n polynomi w(x). Erikoisesti myös w(x) esitetään käyttäen symmetristä jäännössysteemiä modulo p. Jos p = 3, niin mahdolliset w(x):n kertoimet ovat siis 1, 0 ja 1. Näin esitetty w(x) on siirrettävissä myös Z q [x]:n polynomiksiw (q) (x), otetaan vain kertoimet moduloq. Huomaa, että tämä nimenomaan vaatii tietyn kerrointen esityksen! 11.2 Kryptaus ja dekryptaus Kryptausta varten valitaan satunnaisesti enintään astetta n 1 oleva polynomi φ(x). Tästä edelleen saadaan polynomirenkaan Z p [x] polynomi φ (p) (x) sekä polynomirenkaan Z q [x] polynomi φ (q) (x), jotka edelleen ovat tulkittavissa jäännösluokkarenkaiden Z p [x]/(x n 1) ja Z q [x]/(x n 1) polynomeiksi, vastaavasti. Kryptaus suoritetaanz q [x]/(x n 1):ssä seuraavasti: c(x) pφ (q) (x)h(x)+w (q) (x) mod x n 1. Dekryptauksessa lasketaan ensinz q [x]/(x n 1):ssä a(x) f (q) (x)c(x) mod x n 1 ja esitetään a(x):n kertoimet symmetrisessä jäännössysteemissä modulo q. Jälleen tässä esityksessä a(x) on siirrettävissä Z p [x]:n polynomiksi a (p) (x), otetaan kertoimet modulo p. Sen jälkeen itse viesti saadaan ideaalisesti laskemallaz p [x]/(x n 1):ssä w (x) F p (x)a (p) (x) mod x n 1 ja esittämälläw (x) käyttäen kertoimille symmetristä jäännössysteemiä modulop. Mutta välttämättä ei ole w (x) = w(x)! Vain valitsemalla käytetyt polynomit sopivasti dekryptaus onnistuu ainakin suurella todennäköisyydellä. Ensinnäkin voidaan todeta, että Z q [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)f q (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 x n 1. Jos nyt p on paljon pienempi kuin q ja polynomien φ(x), g(x), f(x) sekä w(x) kertoimet ovat itseisarvoiltaan pieniä, on todennäköistä, ettei laskettaessa pφ (q) (x)g (q) (x) + f (q) (x)w (q) (x) mod x n 1 kertoimia tarvitse redusoida lainkaan modulo q esitettäessä kertoimet symmetrisessä jäännössysteemissä modulo q. (Muista edellä ollut helppo kertolasku!) Tästä on se seuraus, että polynomit φ (p) (x), g (p) (x) ja f (p) (x) saadaan myös polynomeista φ (q) (x), g (q) (x) jaf (q) (x) ottamalla vain niiden kertoimet modulop kaikki kertoimet esitettyinä symmetrisessä jäännössysteemissä ja ettäz p [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 x n 1. Näin ollen (edelleen Z p [x]/(x n 1):ssä) todennäköisesti eli dekryptaus onnistuu. w (x) F p (x)a (p) (x) F p (x)f (p) (x)w(x) w(x) mod x n 1

96 LUKU 11. NTRU Systeemin pystytys Virheetön dekryptaus ei siis ole automaattinen, vaan edellyttää, että käytetyt parametrit ja polynomit valitaan sopivasti, ja silloinkin vain suurella todennäköisyydellä. Merkitään P n,i,j :llä niiden enintään astetta n 1 olevien polynomien joukkoa, joiden kertoimista i kpl on = 1, j kpl on = 1 ja loput ovat= 0. Seuraavia valintoja on suositeltu: n p q f(x) g(x) φ(x) P 107,15,14 P 107,12,12 P 107,5, P 167,61,60 P 167,20,20 P 167,18, P 503,216,215 P 503,72,72 P 503,55,55 Mikäli kuten yllä p = r i 1 1 ja q = r i 2 2, missä r 1 ja r 2 ovat eri alkulukuja, polynomi f(x) sekä sen inverssit F p (x) ja F q (x) voidaan etsiä seuraavalla menettelyllä. Muussa tapauksessa tarvitaan vielä Kiinalainen jäännöslause polynomeille. 1. Otetaan satunnainen kokonaiskertoiminen polynomi f(x), jonka aste on enintään n 1 (ehkäpä yo. taulukon mukaisesti). 2. Eukleideen algoritmia käyttäen tarkistetaan, että Z r1 [x]:ssä syt(f (r1 )(x),x n 1) = 1 ja Z r2 [x]:ssäsyt(f (r2 )(x),x n 1) = 1, ks. Pykälä 4.2. Jos näin ei ole, luovutetaan. 3. Bézout n lauseen nojalla silloin saadaan Eukleideen algoritmilla sellaiset kokonaiskertoimiset polynomith 1 (x),k 1 (x),l 1 (x) jah 2 (x),k 2 (x),l 2 (x), että 1 = h 1 (x)f(x)+k 1 (x)(x n 1)+r 1 l 1 (x) ja 1 = h 2 (x)f(x)+k 2 (x)(x n 1)+r 2 l 2 (x), missä h 1 (x) ja h 2 (x) ovat enintään astetta n, k 1 (x) ja k 2 (x) enintään astetta n 1 sekä l 1 (x) jal 2 (x) enintään astetta2n 1. Lisäksi voidaan ilmeisesti olettaa, että polynomien h 1 (x),k 1 (x) jah 2 (x),k 2 (x) kertoimet ovat symmetrisessä jäännössysteemissä modulor 1 jar 2, vastaavasti. 4. Merkitäänj 1 = log 2 i 1 jaj 2 = log 2 i 2, jolloin2 j 1 i 1 ja2 j 2 i Lasketaan 2 sekä j 1 1 F p (x) h 1 (x) (1+r1 2m l 1 (x) 2m ) mod x n 1 Z p [x]/(x n 1):ssä m=0 j 2 1 F q (x) h 2 (x) (1+r2 2m l 2 (x) 2m ) mod x n 1 Z q [x]/(x n 1):ssä, m=0 tulostetaan ne jaf(x) ja lopetetaan. Menettely tuottaa tuloksen yleensä heti. Tulos on oikea, sillä (totea!) F p (x)f (p) (x) 1 r 2j 1 1 l 1 (x) 2j 1 1 mod x n 1 Z p [x]/(x n 1):ssä ja F q (x)f (q) (x) 1 r 2j 2 2 l 1 (x) 2j 2 1 mod x n 1 Z q [x]/(x n 1):ssä. Polynomi g(x) valitaan satunnaisesti (taulukon sallimissa rajoissa). 2 Tämä operaatio on ns. Henselin nosto. Tapauksissaj 1 = 0 jaj 2 = 0 esiintyvät tyhjät tulot ovat 1.

97 LUKU 11. NTRU Hyökkäys LLL-algoritmilla NTRU käyttää enintään astetta n 1 olevia polynomeja, jotka voidaan tulkita n-vektoreiksi (tässä vaakavektoreiksi). Eo. polynomeille nämä vektorit ovat f(x) = f 0 +f 1 x+ +f n 1 x n 1, g(x) = g 0 +g 1 x+ +g n 1 x n 1 h(x) = h 0 +h 1 x+ +h n 1 x n 1 f = (f 0,f 1,...,f n 1 ), g = (g 0,g 1,...,g n 1 ) ja h = (h 0,h 1,...,h n 1 ). Edellä olevan mukaisestiz q [x]/(x n 1):ssä h(x) F q (x)g (q) (x) mod x n 1 eli f (q) (x)h(x) g (q) (x) mod x n 1. Muista, ettäf q (x) onf (q) (x):n inverssiz q [x]/(x n 1):ssä. Jos otetaan käyttöön matriisi h 0 h 1 h n 1 H = h n 1 h 0 h n , h 1 h 2 h 0 niin vm. yhtälö voidaan kirjoittaa muotoon fh g mod q. Huomaa, miten matriisinhrakenne hoitaa näppärästi redusoinnin modulox n 1. Yo. vektorit tuovat mieleen hilat. Sopiva hilan dimensio on kuitenkin 2n. Otetaan käyttöön 2n 2n-matriisi ( ) δin H M = O n qi n (lohkomuodossa), missä I n on n n-identiteettimatriisi, O n on n n-nollamatriisi ja δ 0 on reaaliluku. Selvästi M 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 x n 1, niinz[x]/(x n 1):ssä f(x)h(x) g(x)+qk(x) mod x n 1 jollekin kokonaiskertoimiselle enintään astetta n 1 olevalle polynomille k(x). Kun k(x) esitetää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. Koska f(x):n ja g(x):n kertoimet ovat pieniä, kyseessä on lyhyt hilan vektori. Sopivalla luvun δ valinnalla voidaan pituutta vielä pienentää. Jos ( δf g ) on kyllin lyhyt, se voidaan usein löytää LLL-algoritmilla ja murtaa systeemi. Huomautus. Yllä esitetyt suositeltavat NTRUn parametrit on valittu juuri estämään tämäntapaiset hyökkäykset LLL-algoritmilla. Toistaiseksi NTRUsta ei ole löydetty vakavia heikkouksia, 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. ja

98 Luku 12 TIIVISTEFUNKTIOT JA TIIVISTEET 12.1 Määritelmiä Tiiviste on vakiopituinen viestiä kyllin tarkasti kuvaava sana. Viesti saa tällöin olla hyvinkin pitkä. Menetelmä, joka antaa tiivisteen, on tiivistefunktio. Koska mahdollisia tiivisteitä on vähemmän kuin viestejä, tiivistefunktio ei ole injektiivinen, ts. se antaa tietyissä tilanteissa eri viesteille saman tiivisteen. Tätä kutsutaan törmäykseksi. Jotta tiivistefunktio olisi käyttökelpoinen, pitää sen luonnollisesti olla nopeasti laskettavissa viestistä, mutta myös sellainen, ettei vastapuoli voi käyttää törmäyksiä mitenkään tehokkaasti hyväkseen. Tätä silmälläpitäen määritellään erilaisia käsitteitä: Tiivistefunktio h on viestille w heikosti törmäyksetön, jos on laskennallisesti vaikeaa löytää toinen viestiw, jolleh(w) = h(w ). Tiivistefunktio h on heikosti törmäyksetön, jos annetulle viestille w on laskennallisesti vaikeaa löytää toinen viestiw, jolleh(w) = h(w ). Tiivistefunktio h on vahvasti törmäyksetön, jos on laskennallisesti vaikeaa löytää eri viestitw jaw, joilleh(w) = h(w ). Ts. jos on laskennallisesti vaikeaa löytää viestiw, jolleh ei ole heikosti ei-törmäävä. Tiivistefunktio h on yksisuuntainen, jos annetulle tiivistelmälle t on laskennallisesti vaativaa löytää viestiw, jolleh(w) = t. Nämä eivät ole aivan tarkkoja määritelmiä, ts. tässä ei ajatella laskennallista vaativuutta. Jos viestiavaruus 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 kutsutaan myös toisen alkukuvan estäväksi, vahvasti törmäyksetöntä myös vain törmäyksettömäksi ja yksisuuntaista myös alkukuvan estäväksi. Yksisuuntaisuuden ja vahvan törmäyksettömyyden välillä on yhteys: Lause Jos viestiavaruusw on äärellinen ja tiivisteavaruus ont ja W 2 T, missä tarkoittaa joukon mahtavuutta, niin vahvasti törmäyksetön tiivistefunktio h on yksisuuntainen. Tarkemmin sanoen, algoritmi A, joka kääntää h:n, voidaan muuntaa Las Vegas -tyyppiseksi probabilistiseksi algoritmiksi, joka löytää törmäyksen ainakin todennäköisyydellä1/2. 93

99 LUKU 12. TIIVISTEFUNKTIOT JA TIIVISTEET 94 Todistus. Merkitään M w :llä niiden viestien joukkoa, joilla on sama tiiviste kuin w:llä, ja D:llä kaikkien näiden joukkojen muodostamaa luokkaa. Silloin D = T ja D = W. D D Seuraava Las Vegas -algoritmi löytää törmäyksen tai luopuu koko jutusta. 1. Valitaan satunnainen viesti w W. 2. Lasketaan tiiviste t = h(w). 3. Etsitään algoritmiaakäyttäen sellainen viestiw, ettäh(w ) = t. 4. Josw 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) = M w 1 1 M w W = 1 D 1 W D w W D D w D ( = 1 ( D 1) = 1 D ) W W D D1 D D W W /2 W = 1 2. D D = W T W On selvää, että jatkuvasti käytössä olevissa tiivistefunktioissa ei vahvoja törmäyksiä saisi esiintyä oikeastaan ollenkaan. Sen vuoksi olikin melkoinen yllätys, kun vuonna 2004 kiinalaiset Xiaoyun Wang, Dengguo Feng, Xuejia Lai ja Hongbo Yu löysivät sellaisia useista paljon käytetyistä tiivistefunktioista. Lisäksi Wang, Yiqun Lisa Yin ja Yu totesivat, että niitä voidaan löytää suhteellisen nopeasti myös tiivistefunktioiden lippulaivasta SHA-1:stä. 1 Hyvän tiivistefunktion kehittäminen on aiemmin luultuakin vaikeampaa Syntymäpäivähyökkäys Jos mahdollisia tiivisteitä on vähän, voidaan kokeilemalla löytää törmäyksiä: Valitaan vain k kpl satunnaisia viestejä w 1,...,w k, lasketaan tiivisteet t i = h(w i ) ja testataan löytyiko törmäyksiä. Tätä yksinkertaista menetelmää kutsutaan syntymäpäivähyökkäykseksi 2. Arvioidaan todennäköisyyksiä sille, että syntymäpäivähyökkäys onnistuu. Tällöin voidaan olettaa, että eri tiivisteet esiintyvät ainakin suurin piirtein yhtä monta kertaa. Muussa tapauksessa törmäyksien löytymisen todennäköisyys vain kasvaa. Todennäköisyys sille, ettei törmäyksiä löydy, on ilmeisesti 1 Tätä kiinalaisten hyökkäystä käsitellään useissa esitelmissä viitteissä Proceedings of Crypto 05. Lecture Notes in Computer Science Springer Verlag (2005) ja Proceedings of EuroCrypt 05. Lecture Notes in Computer Science Springer Verlag (2005). 2 Nimi johtuu siitä, että jos joukossa on riittävästi ihmisiä, todennäköisyys sille, että ainakin kahdella on sama syntymäpäivä (vuoden päivä), on suuri. Käyttäen arviointia, koska = 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 = ( )( ) ( ) =

100 LUKU 12. TIIVISTEFUNKTIOT JA TIIVISTEET 95 P n,k = ( n(n 1)(n 2) (n k +1) = 1 1 )( 1 2 ) ( 1 k 1 ), n k n n n missä n on tiivisteiden lukumäärä. Koska tunnetusti lim (1+ a ) n = e a, saadaan edelleen n arvio n P 1 n n,k = e 1 2 (k 1) = e k(k 1) 2. (Tässä luonnollisesti n on iso ja paljon isompi kuin k.) Näin ollen todennäköisyys sille, että löytyy ainakin yksi törmäys, on Q n,k = 1 P n,k = 1 e k(k 1) 2n. Näin saadaan arviok:lle, josq n,k = Q on annettu: eli eli k = 1 2 k(k 1) 2n = ln(1 Q) k 2 k +2nln(1 Q) = 0 ( 1+ ) 1 8nln(1 Q). ValitsemallaQ = 1/2 todetaan, että törmäys löytyy todennäköisyydellä1/2, jos k = 1 2 ( nln2) = 2nln2 = n. Näin esimerkiksi 40-bittiselle tiivisteelle syntymäpäivähyökkäys onnistuu todennäköisyydellä 1/2, josk on vähän yli2 20 = Tiivisteen pituuden pitäisi siis olla merkittävästi enemmän, esimerkiksi SHA-1:ssä se on160 bittiä jak:n pitäisi silloin olla vähän yli2 80 = Tosin kiinalaisten hyökkäys osoittaa yllättäen, että jo noin2 69 = ehkä riittää. Syntymäpäivähyökkäys tulee vastaan toisinaan hieman toisenlaisena. Silloin valitaan ensin satunnaisesti k 1 viestiä w 1,...,w k1 ja sitten näistä riippumattomasti satunnaisesti k 2 muuta viestiä w 1,...,w k 2 ja etsitään muotoa h(w i ) = h(w j ) olevia törmäyksiä, ns. ristitörmäyksiä. Merkitään esiintyviä tapauksia symbolein T 1 = viesteissäw 1,...,w k1 on törmäys T 2 = viesteissäw 1,...,w k 2 on törmäys T 12 = ristitörmäys ja komplementtitapauksia tavalliseen tapaan yläviivoilla. Ilmeisesti esimerkiksi Edelleen ilmeisesti P(T 1 ) = Q n,k1, P(T 2 ) = P n,k2, P(T 1 jat 2 ) = P n,k1 P n,k2 jne. P(T 1 jat 2 jat 12 ) = P n,k1 +k 2. Todennäköisyyksien laskusääntöjen mukaan tästä saadaan ehdollinen todennäköisyys P(T 12 T 1 jat 2 ) = P n,k 1 +k 2 e (k 1 +k 2 )(k 1 +k 2 +1) 2n = P n,k1 P n,k2 e k 1 (k 1 +1)+k 2 (k 2 +1) 2n = e k 1 k 2 n.

101 LUKU 12. TIIVISTEFUNKTIOT JA TIIVISTEET 96 Toisaalta kovin monien törmäyksien sattuminen on hyvin epätodennäköistä ja muutamien törmäyksien sattuminen taas ei juurikaan muuta ristitörmäyksen todennäköisyyttä verrattuna tilanteeseen, jossa niitä ei ole. (Muista, että n on iso ja k 1 sekä k 2 siihen verrattuna pieniä.) Näin ollen myös P(T 12 T 1 tai/jat 2 ) = e k 1 k 2 n ja siis P(T 12 ) = e k 1 k 2 n. Jos siis halutaan ristitörmäyksen todennäköisyydeksi1/2 pitää valita (totea!) Näin ollen riittää valita k 1 k 2 = nln2. k 1,k 2 = nln2 = n. Tämä vm. syntymäpäivähyökkäys muistuttaa jonkin verran Shanksin pikkuaskel-jättiaskelalgoritmia, ks. Pykälä 9.2. Itse asiassa siitä onkin helposti tehtävissä hyvin samantapainen probabilistinen algoritmi diskreetin logaritmin laskemiseksi. Pikkuaskel-jättiaskel-algoritmi on kuitenkin deterministinen ja vähän nopeampikin. Toisaalta modulaarinen potenssiin korottaminen on satunnaistava operaatio, joten sitä voidaan käyttää satunnaisessa valinnassa, jolloin saadaan tehokas ja hyvin vähän tilaa vievä probabilistinen algoritmi diskreetin logaritmin b = log g a laskemiseksi modulop(alkuluku): Pollardin kengurualgoritmi: 1. Merkitään J = log 2 p ja N = p ja valitaan luvut c ja c satunnaisesti väliltä 0,1,...,p Lasketaan rekursiolla t i = (t i 1 g 2(t i 1,mod J), mod p), t 0 = (g c, mod p) luku t N. (Koska c tunnetaan, nämä rekursioaskeleet ovat ns. kesyn kengurun loikat.) Jos merkitään N d = 2 (t i,mod J), niint N = (g c+d,mod p). i=0 3. Lasketaan rekursiolla yksi kerrallaan lukuja w j = (w j 1 g 2(w j 1,mod J), mod p), w 0 = (g b+c, mod p) = (ag c, mod p). (Koska b ei ole tunnettu, nämä ovat ns. villin kengurun loikat.) Samalla lasketaan rekursiivisesti lukuja D j = D j 1 +2 (w j,mod J), D 0 = 0, jolloinw j = (g b+c +D j,mod p). 4. Jos löytyy sellainen arvo l N, ettäw l = t N (törmäys), niin g c+d g b+c +D l mod p eli g c+d c D l a mod p. Tällöin tulostetaan b = (c + d c D l,mod p 1) ja lopetetaan. Jos taas on laskettu kaikki luvutw 0,w 1,...,w N ilman että törmäystä löytyy, luovutetaan ja lopetetaan.

102 LUKU 12. TIIVISTEFUNKTIOT JA TIIVISTEET 97 Syntymäpäivähyökkäysperiaatteen mukaisesti ristitörmäys löytyy tällaisessa tilanteessa ainakin todennäköisyydellä 1/2. Huomaa, että jos ristitörmäys löytyy jo jollekin t i :lle ja w l :lle, missä l i < N, niin se löytyy myöst N :lle, koska rekursiot ovat samat. Toistamalla algoritmia monta kertaa valiten aina uusi satunnainen c, mutta ei c:tä, saadaan melko todennäköisesti lasketuksi b. Koska askelia kuitenkin tarvitaan O( p), tämä ei ole polynomiaikainen algoritmi, vaikka onkin nopea. Toisaalta mitään listoja ei talleteta vrt. pikkuaskel-jättiaskel-algoritmi joten tilaa tarvitaan hyvin vähän Chaum van Heijst Pfitzmann -tiiviste Esimerkkinä yksinkertaisesta tiivistefunktiosta otetaan Chaum van Heijst Pfitzmann -tiivistefunktioh CHP. Tätä varten tarvitaan sellainen alkuluku p, että myös q = (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(w 1,w 2 ) muodostuu kahdesta välillä0,1,...,q 1 olevasta luvustaw 1 jaw 2 ja h CHP (w 1,w 2 ) = (α w 1 β w 2, mod p). Yhdenkin h CHP :n törmäyksen löytäminen mahdollistaa diskreetin logaritmin log α β laskemisen nopeasti: Lause Jos tunnetaan eri viestit(w 1,w 2 ) ja(w 1,w 2 ), joilleh CHP(w 1,w 2 ) = h CHP (w 1,w 2 ), niin diskreetti logaritmiavoidaan laskea nopeasti. Todistus. Tiivisteet ovat samat, ts. Koskaβ α a mod p, tämä on sama kuin α w 1 β w 2 α w 1 β w 2 mod p. α a(w 2 w 2 ) (w 1 w 1) 1 mod p. α on primitiivinen juuri modulop, jotena(w 2 w 2) (w 1 w 1 ) on jaollinen sen kertaluvulla modulopeli p 1:llä, ks. Lause 7.4 kohta (ii). Siispä a(w 2 w 2) w 1 w 1 mod p 1. Merkitään nytd = syt(w 2 w 2,p 1). Silloin yo. kongruenssin nojalladon myösw 1 w 1:n tekijä. Tästä seuraa, että w 2 w 2. Jos nimittäinw 2 = w 2, on w 1 w 1 ja d = p 1. Tämä on kuitenkin mahdotonta, koska w 1 w 1 < q < p 1. Merkitään edelleen u = w 2 w 2 d Silloinsyt(u,r) = 1 ja Lauseen 2.11 nojalla, v = w 1 w 1 d sekä r = p 1 d. au v mod r eli a u 1 v mod r. Kysymykseen tulevat a:n arvot positiivisessä jäännössysteemissä modulo p 1 ovat siis a = (u 1 v, mod r)+ir (i = 0,1,...,d 1). Toisaalta mahdollisetd:n arvot ovat1,2, q jap 1. Koskaw 2 w 2 ja w 2 w 2 < q < p 1, on joko d = 1 tai d = 2. Diskreetti logaritmi a on siis helppo löytää, se on joko (u 1 v,mod r) tai (u 1 v,mod r)+r.

103 LUKU 12. TIIVISTEFUNKTIOT JA TIIVISTEET 98 h CHP 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 muut tiivistefunktiot ovat paljon nopeampia laskea. Pulmana on myös Germainin lukujen vaikea löydettävyys. Nopeista tiivistefunktioista on toisaalta alettu löytää heikkouksia, kuten kiinalaisten hyökkäys osoittaa.

104 Luku 13 ALLEKIRJOITUS 13.1 Allekirjoitussysteemi Allekirjoitussysteemillä tarkoitetaan viisikkoa(p, A, K, S, V), missä P on äärellinen viestiavaruus. A on äärellinen allekirjoitusavaruus. K on äärellinen avainavaruus. Kukin avain muodostuu parista (k a,k t ), missä k a on salainen allekirjoitusavain jak t on julkinen todennusavain. Kutakin allekirjoitusavaintak a kohti on allekirjoitusfunktios ka S. Viestillew ons ka (w) = (w, u), missä u on viestin w allekirjoitus. S on kaikkien mahdollisten allekirjoitusfunktioiden avaruus. Kutakin todennusavainta k t kohti taas on todennusfunktio v kt V. V on kaikkien mahdollisten todennusfunktioiden avaruus. Jokaiselle viestillew ja avaimelle(k a,k t ) on { OIKEA, joss ka (w) = (w,u) v kt (w,u) = VÄÄRÄ muuten. Julkinen todennusavain jätetään kaikkien halukkaiden saataville, salainen allekirjoitusavain on henkilökohtainen ja vain allekirjoittajalla. Allekirjoitettu viesti on s ka (w) = (w,u). Vastaanottaja voi halutessaan todennusfunktiota käyttäen tarkistaa allekirjoituksen oikeellisuuden. Usein allekirjoituksessa käytetään sopivaa viestin w tiivistettä h(w). Tästä on se etu, että viesti voi olla pitkäkin. Allekirjoituksen pitää toteuttaa seuraavat perusehdot: Ulkopuolinen taho, joka ei tiedä allekirjoitusavainta, ei voi lähettää oikean allekirjoittajan nimissä viestiä todentuvalla allekirjoituksella varustettuna, ainakaan tällainen viesti ei saa sisältää mitään mielekästä tietoa. Erityisesti ulkopuolinen taho ei voi irrottaa allekirjoitusta 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 itse asiassa ovat alunperin olleet allekirjoitussysteemejä. 99

105 LUKU 13. ALLEKIRJOITUS RSA-allekirjoitus RSAsta saadaan allekirjoitussysteemi määrittelemällä k a = (n,b) ja k t = (n,a) sekä s ka (w) = (w,(w b, mod n)) ja v kt (w,u) = { OIKEA, josw u a VÄÄRÄ muuten. mod n Ilmeisestikin tämän allekirjoituksen väärentäminen tavalla tai toisella on ekvivalentti RSAn murtamisen kanssa. Ulkopuolinen taho voi kuitenkin valita allekirjoituksen u ottamalla viestiksi w = (u a,mod n). Tällainen viesti ei kuitenkaan sisällä mitään tietoa. Tämäkään ei onnistu, jos käytetään yksisuuntaista tiivistefunktiotah. Silloink t = (n,a,h) ja { s ka (w) = (w,(h(w) b OIKEA, josh(w) u a mod n, mod n)) ja v kt (w,u) = VÄÄRÄ muuten. RSAta voidaan myös käyttää ns. sokeaan allekirjoitukseen. Jos on tarkoitus, että osapuoli A allekirjoittaa osapuolen B viestinw tietämättä sen sisältöä, menetellään seuraavasti: 1. B valitsee satunnaisen luvun l, jolle syt(l,n) = 1, laskee luvun t = (l a w,mod n) ja lähettää sen A:lle. 2. A laskee allekirjoituksenu = (t b,mod n) ikäänkuin viesti olisit, ja lähettää sen B:lle. 3. B laskee luvunu = (l 1 u,mod n). Koska A ei tiedä lukual, hän ei saa tietoa viestistäw. Toisaaltauon oikea viestinw allekirjoitus, sillä l 1 u l 1 t b l 1 l ab w b l 1 lw b w b mod n Elgamalin allekirjoitus Elgamalin kryptosysteemistä saadaan allekirjoitussysteemi valitsemalla ryhmäksi G = Z p, missä p on suuri alkuluku, a:ksi primitiivinen juuri modulo p ja b = (a y,mod p). Todennusavain on nyt k t = (p,a,b) ja allekirjoitussavain k a = (p,a,y). Allekirjoitusfunktio on s ka (w) = (w,c,d), missä c = (a x, 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öin xd = w yc + k(p 1) jollekin luvulle k. Todennusfunktio puolestaan on { OIKEA, josb c c d a w mod p v kt (w,c,d) = VÄÄRÄ muuten. Oikean allekirjoituksen todennus onnistuu, sillä Fermat n pienen lauseen nojalla b c c d a yc a xd = a yc+w yc+k(p 1) = a w (a p 1 ) k a w 1 = a w mod p. Allekirjoituksen väärentämiseksi pitäisi pystyä laskemaan c ja d ilman y:tä ja x:ää. Tällöin voidaan todeta seuraavaa:

106 LUKU 13. ALLEKIRJOITUS 101 Jos väärentäjä valitsee ensin jonkin c:n ja yrittää sitten saada vastaavan d:n, niin hänen pitää laskealog c (a w b c ) modulop. Tämä on oleellisesti diskreetin logaritmin laskeminen G:ssä. Huomaa, että koskasyt(x,p 1) = 1, myöscon primitiivinen juuri modulop, ks. Lause 7.4(iii). Jos väärentäjä taas valitseekin ensin jonkin d:n ja yrittää sitten löytää vastaavan c:n, niin hänen pitää ratkaista yhtälö b c c d a w mod p. Tällaisten yhtälöiden ratkaisemiseksi ei tunneta nopeita algoritmeja. Jos väärentäjä yrittää saada lähetetyksi jonkin allekirjoitetun viestin, vaikkapa vain satunnaisen, niin hän voisi yrittää valita ensin c:n ja d:n ja sitten etsiä jonkin sopivan w:n. Mutta tällöin hänen pitäisi laskealog a (b c c d ) modulop. 1 Huomautus. Elgamalin allekirjoituksen modifikaatio DSS (Digital Signature Standard) on yleisemmin käytössä, ks. esimerkiksi STINSON tai MENEZES & VAN OORSCHOT & VAN- STONE Syntymäpäivähyökkäys allekirjoitusta vastaan Jos allekirjoituksessa käytetään tiivistettä ja viestiä on mahdollista muuttaa monista kohdista vähän ilman, että sen merkitys oleellisesti muuttuu, on myös mahdollista soveltaa syntymäpäivä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 vaikkapa B/2 + 2 paikkaa, missä allekirjoitettavaa viestiä voidaan vähän muuntaa ilman, että se varsinaisesti muuttuu esimerkiksi lisäämällä tai poistamalla pilkkuja ja sanavälejä, tekemällä pieniä viattomia painovirheitä tms. Näin saadaan kaikkiaan2 B/2+2 oikean viestin eri 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 saatujen2 B/2+2 väärän viestin version tiivisteet. 3. Väärentäjä etsii näistä kahdesta tiivistejoukosta mahdollisen ristitörmäyksen lajittelemalla samaan tapaan kuin pikkuaskel-jättiaskel-algoritmissa. Sellainen löytyy hyvinkin varmasti, mikäli viestien tiivisteiden voidaan katsoa syntyneen satunnaisesti, sillä todennäköisyys on silloin noin 1 e 2B/2+2 2 B/2+2 2 B = 1 e 16 = = Satunnaisuutta koskeva ehto ei ole kovin vaativa, sillä hyvä tiivistefunktio on jo satunnaistava 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 haluamansa väärä viesti, jolla on sama tiiviste, ja hän saa allekirjoittajalta allekirjoituksen myös sille! 1 Muita tapoja saada aikaan satunnainen allekirjoitettu viesti kuitenkin on! Samoin on mahdollista yhden saadun allekirjoituksen turvin allekirjoittaa joitain muita satunnaisia viestejä. Ks. STINSON.

107 Luku 14 SALAISEN TIEDON SIIRTO 14.1 Arpominen Satunnaisbitin arpominen on helppoa, jos on luotettu osapuoli, joka suorittaa arpomisen. Jos tällaista osapuolta ei ole, on arpominen silti mahdollista sopivaa menetelmää käyttäen. Seuraavassa arvontamenetelmässä 1 A arpoo B:lle satunnaisbitin. Aluksi vain B tietää tuloksen, mutta hän voi kertoa sen A:lle. Vaikka B ei kertoisi tulosta A:lle, hän ei silti voi muuttaa saamaansa bittiä tai ilmoittaa A:lle väärää bittiä ilman, että se jossain vaiheessa paljastuu A:lle. Näin B sitoutuu bittiin, jonka hän sai. Menetelmä toimii seuraavasti, ks. Pykälä 7.6: 1. A valitsee kaksi erisuurta isoa alkulukuap jaq ja lähettää B:lle niiden tulonn = pq. 2. B valitsee satunnaisen luvunuväliltä1 < u < n/2 ja lähettää A:lle neliön 3. A laskee ne neljäz:n neliöjuurta modulon: z = (u 2, mod n). (±x, mod n) ja (±y, mod n). Tämä on mahdollista, koska A tietää n:n tekijät. Valitaan x :ksi pienempi luvuista (±x,mod n), ja vastaavasti y :ksi pienempi luvuista (±y,mod n). Silloin u on jompikumpi luvuistax tai y. 4. A ei voi tietää kumpi luvuista x tai y on u, joten hän arvaa. A:n ei kannata lähettää arvaamansa lukua B:lle, sillä jos se ei olekaan u, niin B voi jakaa n:n tekijöihinsä. Sen sijaan 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 B kertoo A:lle oliko arvaus oikea (arvottu bitti on 1) vaiko väärä (arvottu bitti on 0). Vaikka B ei kertoisikaan arvonnan tulosta A:lle, hän on silti sitoutunut siihen eikä voi sitä muuttaa. 6. Lopuksi B paljastaa A:lle u:n ja A paljastaa n:n tekijöihinjaon. B ei voi huijata A:ta, sillä hän tietää vain toisen neliöjuuristax jay, muutenhan B voisi jakaan:n tekijöihin. 1 Alkuperäisviite on BLUM, M.: Coin Flipping by Telephone. A Protocol for Solving Impossible Problems. SIGACT News (1981),

108 LUKU 14. SALAISEN TIEDON SIIRTO 103 Huomautus. Tässä kuten yleensäkin oletetaan, että valittaessa satunnaisesti luku u tms. ei saada sellaista lukua, että syt(u, n) 1. Tämä tapaushan on hyvin epätodennäköinen, jos n on suuri. Yleistäen voidaan arpoa kokonaisluku annetulta väliltä arpomalla sen binääriesityksen bitit yksi kerrallaan, tarvittaessa lisätään esitykseen alkunollia. Toinen arpomistilanne on se, että arvotaan luvuista 1,2,...,N A:lle ja B:lle kummallekin k 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ä bitin arvontaa voidaan kutsua lantin heitoksi, niin tätä voitaisiin kutsua korttien jakamiseksi. Menettely on seuraava: 1. A ja B valitsevat suuren alkuluvunp. 2. A valitsee sellaisen salaisen luvunaväliltä1 a < p 1, ettäsyt(a,p 1) = 1 ja laskee luvuna = (a 1,mod p 1). 3. B valitsee sellaisen salaisen luvunbväliltä1 b < p 1, ettäsyt(b,p 1) = 1 ja laskee luvunb = (b 1,mod p 1). 4. Luvut i koodataan luvuiksi c i = (g 2i+1,mod p) (i = 1,2,...,N), missä g on jokin primitiivinen juuri modulo p. g ja p voidaan löytää samaan tapaan kuin ELGAMALin pystytyksessä, ks. Pykälä Luvut c i ovat kaikki epäneliönjäännöksiä modulo p, sillä neliönjäännösten eksponentit ovat parillisia. 5. B laskee luvut β i = (c b i,mod p) (i = 1,2,...,N), permutoi ne satunnaisesti ja lähettää ne A:lle. Huomaa, että koskabon pariton, tieto siitä onko jokin lukuc i neliönjäännös modulopvai ei menee tämän koodausprosessin läpi Eulerin kriteerin nojalla, sillä Fermat n pienen lauseen mukaan c p 1 i 1 mod p ja edelleen c (p 1)/2 i ±1 mod p. Tästä syystä valittiin kaikki c i :t valmiiksi epäneliönjäännöksiksi modulo p. Toisaalta c i :n saaminen β i :stä vaatisi diskreetin logaritmin laskemistaz p :ssä. 6. A valitsee näistä luvuista2k kpl, sanotaan β i1,...,β i2k, laskee luvut α j = (β a i j, mod p) = (c ab i j, 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) = (ca i j, mod p) (j = 1,2,...,k) ja lähettää ne A:lle. Vrt. RSAn dekryptauksen toiminta. 8. A laskee lukunsac ij = (γ a j,mod p) (j = 1,2,...,k). 9. B laskee lukunsac ij = (β b i j,mod p) (j = k +1,...,2k).

109 LUKU 14. SALAISEN TIEDON SIIRTO Salaisuuksien jakaminen Jostjav ovat positiivisia lukuja jat v, niin(t,v)-kynnyskaavio on menettely, jolla salaisuus S jaetaan v:n osapuolen kesken siten, että mitkään t 1 osapuolta eivät saa salaisuudesta mitään selville, mutta mitkä tahansatosapuolta saavat tietää sen kokonaan (kynnys). Kynnyskaaviot toteutetaan usein käyttäen eräänlaista interpolointia. Tietty funktio f p1,...,p t, ns. interpolantti, määräytyy täysin, kun sen parametrit p 1,...,p t tunnetaan. Parametrit puolestaan saadaan, jos tunnetaan funktion arvot ainakint:ssä eri pisteessä: f p1,...,p t (x i ) = y i (i = 1,2,...,v, missäv t). Arvot missään t 1 pisteessä toisaalta eivät määrää parametrejä yksikäsitteisesti. Salaisuus S on funktio f p1,...,p t tai sen parametrit p 1,...,p t tai vain osa niistä. Kullekin osapuolelle annetaan tiedoksi oma funktion arvo, ns. osuus. Tämän tekee salaa ulkopuolinen luotettu osapuoli, ns. jakaja J. Eräs tapa valita interpolantti on käyttää polynomi-interpolanttia t 1 p(x) = S p j+1 x j. Tätä kutsutaan Shamirin kynnyskaavioksi 2. Se voidaan toteuttaa missä tahansa kunnassaf, jossa on enemmän kuin v alkiota. Tavallisin valinta on alkukunta Z q, missä q > v on alkuluku. Salaisuus on p(x):n vakiotermi S = p 1. Tunnetusti enintään astettat 1 oleva polynomi määräytyy, kun sen arvot tunnetaan t:ssä eri pisteessä. Toisaalta polynomi ei määräydy yksikäsitteisesti, jos asteluku on t 1 ja pisteitä on vähemmän kuin t kpl. Erityisesti polynomin vakiotermi ei tällöin määräydy, ellei anneta arvoa nimenomaan pisteessä x = 0. Jos nimittäin vakiotermi S määräytyisi yksikäsitteisestit 1:stä arvostay i = p(x i ) eri pisteissäx i 0 (i = 1,2,...,t 1), niin saadaan yhtälöt j=1 x 1 i (y i S) = t 1 j=1 p j+1 x j 1 i (i = 1,2,...,t 1), joista määräytyvät myös loput parametrit p 2,...,p t. Kuten näkyy, S voi olla mitä vaan eli mitää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 y j j=1 t (x j x k ) 1 (x x k ). k=1 k j Tällöin S = p(0) = t y j j=1 t (x k x j ) 1 x k. k=1 k j Pisteet, joissa p(x):n arvot lasketaan, voidaan pitää julkisinakin, jolloin osuus olisikin vain ko. arvo. Tällöin S:n laskeminen on vain lineaariyhdelmän lasku osuuksista tunnetuin ja ehkä etukäteen lasketuin kertoimin. Itse kaavio on seuraava: 2 Alkuperäisviite on SHAMIR, A.: How to Share a Secret. Communications of the ACM 22 (1979),

110 LUKU 14. SALAISEN TIEDON SIIRTO 105 Shamirin kynnyskaavio: 1. J valitsee kunnan F ja sen v eri alkiota u 1,u 2,...,u v 0 ja antaa alkion u i tiedoksi i:nnelle osapuolelle (i = 1,2,...,v). 2. Jos tarkoitus on jakaa salaisuuss, jokinf :n alkio, niin J valitsee salaa satunnaisestit 1 kunnanf :n alkiotap 2,...,p t. 3. J laskee osuudet w i = S t 1 j=1 p j+1 u j i (i = 1,2,...,v) ja jakaa kullekin osapuolelle muilta salaa hänen osuutensa. 4. Kun osapuolet i 1,i 2,...,i t haluavat tietää salaisuuden, he interpoloivat ja laskevat S:n. Esimerkiksi Lagrangen interpolaatiolla t t S = w ij (u ik u ij ) 1 u ik. j=1 k=1 k j Huomautus. Salaisuuksien jakamista ei pidä sekoittaa hyvin samantapaiseen menettelyyn, ns. tiedon hajautukseen, missä hajautetaan tiedosto v osaan, joista mitkä tahansa t riittävät sen rekonstruoimiseen nopeasti. Erona on se, että t 1 osaa voi hyvinkin antaa paljon tietoa tiedostosta, ei ehkä kuitenkaan aina kaikkea tietoa. Tiedon hajautus liittyy paljolti virheitä korjaaviin koodeihin (ks. kurssi Koodausteoria) ja hajautetut osat ovat paljon pienempiä kuin yo. osuudet. Alkuperäisviite on RABIN, M.O.: Efficient Dispersal of Information for Security, Load Balancing, and Fault Tolerance. Journal of the ACM 36 (1989), Muitakin ideoita salaisuuksien jakoon on käytössä. Koodausteoriaan perustuvia salaisuuksien jakoprotokollia on useita, interpoloinnissa voitaisiin käyttää Kiinalaista jäännöslausetta, ns. Mignotten kynnyskaavio, jne. Ks. esimerkiksi DING & PEI & SALOMAA 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 kannalta salaisuus siirtyy todennäköisyydellä 1/2. Yksinkertainen menetelmä tätä varten olisi seuraava. Tässä, kuten tavallista, n on kahden ison erisuuren alkuluvun p ja q aukikerrottu tulo. Salaisuus voidaan ajatella juuri näiksi alkuluvuiksi p ja q, varsinainen salaisuus olisi tällöin vaikkapa kryptattu RSAlla käyttäenn:ää. A siis tietää alunperinp:n jaq:n, B ei. 1. B valitsee luvunxväliltä1 x < n ja lähettää A:lle(x 2,mod n):n. 2. A laskee(x 2,mod n):n neljä neliöjuurta (±x, mod n) ja (±y, mod n) modulo n 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öjuuristaxon. Ks. Pykälä B tarkistaa onko hänen A:lta saamansa neliöjuuri ±x mod n. Myönteisessä tapauksessa B ei saa salaisuutta. Muutoin B saa tietoonsa sellaiset luvut x ja y, että x 2 y 2 mod n ja x ±y mod n, ja pystyy jakamaan n:n tekijöihin ja sitä kautta edelleen saamaan selville salaisuuden. A ei voi tietää saiko B salaisuuden vai, ellei B sitä kerro.

111 LUKU 14. SALAISEN TIEDON SIIRTO Nollatietotodistukset Interaktiivisessa todistussysteemissä kaksi osapuolta, todistaja P ja todentaja V, lähettävät toisilleen viestejä ja suorittavat laskuja saamiensa viestien perusteella, mukana voi olla satunnaislukujen generointia. P:n tavoite on saada V vakuuttuneeksi siitä, että hän tietää jonkin kohteen jonkin 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 informaatiota kuin sen, että hän tietää ko. ominaisuuden. Tätä kutsutaan nollatietotodistukseksi. 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äittää, 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ä, tarvittaessa laskien polynomiajassa. Tällöin V voisi itse asiassa simuloida protokollaa polynomiajassa ikäänkuin P:kin osallistuisi siihen, mutta ilman P:tä. Huomaa, että P:n laskujen kompleksisuudelle ei aseteta mitään rajaa. Simuloinnin on oltava niin tarkka, ettei sitä voida erottaa oikeasta polynomiajassa laskien. Ehdosta (III) huolimatta V voisi tietenkin saada pitkään laskien esiin lisää informaatiota, ehkä koko ominaisuuden. Täydellisessä nollatietotodistuksessa vaaditaankin (III):n sijasta vahvempi ehto (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 nyt oltava identtinen oikean kanssa. Toisinaan yllä ehdoin (I) (III) määriteltyä nollatietotodistusta kutsutaan laskennalliseksi nollatietotodistukseksi, erotukseksi täydellisestä nollatietotodistuksesta. Huomattakoon, että yo. ehdot eivät oikeastaan muodosta tarkkoja määritelmiä. Nämä määritelmät ovatkin huomattavasti mutkikkaampia, ks. esimerkiksi STINSON tai GOLDREICH. Ero laskennallisen ja täydellisen nollatietotodistuksen välillä on stokastisuudesta johtuvien jakaumien vertailussa: Täydellisessä nollatietotodistuksessa oikeiden ja simuloitujen jakaumien on oltava identtiset, laskennallisessa nollatietotodistuksessa taas vaaditaan vain, ettei jakaumia voi havaita erilaisiksi polynomiaikaisilla laskuilla. Seuraava protokolla 3 antaa täydellisen nollatietotodistuksen sille, että x on neliönjäännös modulo n, 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 satunnaisluvun v, jolle syt(v,n) = 1, ja lähettää V:lle luvuny = (v 2,mod n). 1.2 V valitsee satunnaisesti bitinb(0 tai 1) ja lähettää sen P:lle. 3 Alkuperäisviite on GOLDWASSER, S. & MICALI, S. & RACKOFF, C.: The Knowledge Complexity of Interactive Proof Systems. SIAM Journal on Computing 18 (1989),

112 LUKU 14. SALAISEN TIEDON SIIRTO P laskee luvun z = (u b v,mod n), missä u on x:n neliöjuuri modulo n, ja lähettää sen V:lle. 1.4 V tarkistaa, ettäz 2 x b y 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 modulo n. Lause Yo. protokolla antaa täydellisen nollatietotodistuksen probleemalle QUADRATIC- RESIDUES. Todistus. Jos P ei tiedä x:n neliöjuurta, hän joutuu petkuttamaan ja lähettämään V:lle luvun z = v ja joko luvun y = (z 2,mod n) (paljastuu, jos b = 1) tai luvun y = (z 2 x 1,mod n) (paljastuu, jos b = 0). Todennäköisyys, että P voisi paljastumatta petkuttaa koko ajan, on siis 1/2 k, joka saadaan miten tahansa pieneksi. Jos taas P tietää neliöjuuren u, 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 z 2 x b mod n. Näytetään, että jos V valitsee bitin b ja z:n aivan satunnaisesti, näillä kolmikoilla on identtinen jakauma verrattunaan oikeaan, jossa P on mukana ja valitsee satunnaisenv:n. Sanotaan, että kolmikko(y,b,z) on käypä, jos 1 y < n jasyt(y,n) = 1, b on 0 tai 1 ja 1 z < n jaz 2 x b y mod n. Käypiä kolmikoita on 2φ(n) kpl, sillä mahdollisia z:n valintoja on φ(n) kpl ja b voidaan valita kahdella tavalla ja nämä valinnat määrittävät y:n. Huomaa, että koska syt(x, n) = 1 ja syt(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än valitsee v:n satunnaisesti φ(n) eri vaihtoehdosta ja yhtä y:tä vastaa neljä mahdollista neliöjuurta v. Edelleen V valitsee b:n arvot samalla todennäköisyydellä. Kun y ja b on valittu, mahdollisia z:n valintoja on neljä. Myöskin V:n suorittamassa simuloinnissa käyvät kolmikot ovat yhtä todennäköisiä, kun V valitsee z:n satunnaisesti väliltä 1 z < n ja syt(z, n) = 1 ja b valitaan satunnaisesti. Esitetään esimerkki myös (laskennallisesta) nollatietotodistuksesta. Probleemana on todistaa, että graafissa on ns. Hamiltonin piiri. Graafi muodostuu pisteistä ja niitä yhdistävistä viivoista. 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öpisteeseen. Reitti kulkee viivoja pitkin. (Ks. kurssi Graafiteoria.) Sen selvittäminen, onko annetussa sopivasti koodatussa graafissa Hamiltonin piiri vai ei, on tunnettu N P-täydellinen tunnistustehtävä HAMILTONCIRCUIT. Seuraava protokolla 4 antaa nollatietotodistuksen tälle tehtävälle. 1. Toistetaan seuraavak kertaa. Syöte on tässä graafi G, jossa on pisteet1,2,...,n. 4 Alkuperäisviite lienee BLUM, M: How to Prove a Theorem So No One Else Can Claim It. Proceedings of the International Congress of Mathematicians American Mathematical Society (1988),

113 LUKU 14. SALAISEN TIEDON SIIRTO P järjestää pisteet satunnaiseen järjestykseen ja lähettää näin saadun listanv 1,v 2,..., v n kryptattuna V:lle, tarvittaessa koodattuna bittijonoksi. P lähettää V:lle myös alkioittain kryptattuna n n-matriisin D = (d ij ) (ns. vieruspistematriisi), missä lävistäjäalkiot ovat nollia ja { 1, jos pisteidenv i jav j välillä on viiva d ij = 0 muuten, kun i j. Symmetriasta johtuen riittää lähettää vain yläkolmio. Kukin matriisin alkio on kryptattu omalla avaimellaan. Kryptauksen on oltava sitova, ts. P ei voi muuttaa graafia avaimia muuttamalla, vrt. arpominen. Luonnollisesti kryptauksen oletetaan olevan tehokas, ts. polynomiajassa ei kryptatusta bitistä saa irti mitään. 1.2 V valitsee satunnaisesti bitinbja lähettää sen P:lle. 1.3 Jos b = 0, P dekryptaa V:lle listan v 1,v 2,..., v n ja koko matriisin D lähettämällä V:lle dekryptausavaimet. Jos taas b = 1, P dekryptaa V:lle matriisista D vain n alkiota d i1 i 2,d i2 i 3,...,d ini 1, missä pisteet v i1,v i2,...,v in tässä järjestyksessä muodostavat Hamiltonin piirin (jolloin ko. alkiot ovat= 1). 1.4 Jos b = 0, V tarkistaa, että hän sai oikean graafin. Dekryptattuna listav 1,v 2,...,v n ilmoittaa pisteiden järjestyksen ja D antaa viivat. Jos taas b = 1, V tarkistaa, että saadut matriisin alkiot ovat = Jos tarkistus menee aina läpi kullakin k:lla kierroksella, V päättelee, että P todella tietää G:n Hamiltonin piirin. Protokollassa kohdassa 1.1 mainitun kaltainen sitova kryptaus saadaan aikaan vaikkapa seuraavasti. Tässä suuri alkulukupja primitiivinen juuri g modulopovat julkisia. 1. Alussa V valitsee ja välittää sitten P:lle satunnaisen luvun r väliltä 1 < r < p. P ei voi nopeasti laskea diskreettiä logaritmialog g r modulop. 2. P valitsee satunnaisesti luvun y väliltä 0 y < p 1 (salainen avain) ja lähettää V:lle luvunc = (r b g y,mod p), missäbon kryptattava bitti. JokainenZ p:n alkio on positiivisessa jäännössysteemissä sekä muotoa (g y,mod p) että muotoa (rg y,mod p), joten c ei siis paljasta mitään bitistä b. Olipa b kumpi tahansa, c:n jakauma on sama. Toisaalta P ei voi vaihtaa bittiäbtoiseksi vaihtamallay:n joksikiny :ksi, muuten on g y rg y mod p tai rg y g y mod p eli r g ±(y y ) ja P saisi tästä välittömästilog g r:n modulop. mod p Lause Yo. protokolla antaa nollatietotodistuksen probleemalle HAMILTONCIRCUIT. Todistus. Jos P ei tiedäg:n Hamiltonin piiriä, hän voi petkuttaa silloin, kun hän saa bitinb = 0, mutta ei jos hän saa bitinb = 1. Jos taas P tietää jonkin toisenn-pisteisen graafing Hamiltonin piirin, hän voi petkuttaa, kun hän saa bitin b = 1, mutta ei jos hän saa bitin b = 0. Todennäköisyys, että P voisi petkuttaa koko ajan, on siis1/2 k, joka saadaan miten tahansa pieneksi. Jos taas 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 seuraavasti. V valitsee satunnaisen bitin b. Jos b = 0, V järjestää pisteet satunnaiseen järjestykseen ja

114 LUKU 14. SALAISEN TIEDON SIIRTO 109 kryptaa näin saamansa listan. Vielä V muodostaa vieruspistematriisin D ja kryptaa sen. Jos taas b = 1, V kryptaakin vain jotkut satunnaiset alkiot d i1 i 2,d i2 i 3,...,d ini 1, missä indeksit kulkevat syklisesti, kukin indeksi esiintyy tarkalleen kaksi kertaa ja kukin alkio on = 1. Täydellisyyden vuoksi V voi kryptata vielä muutakin, jotta saadaan oikea määrä kryptattua dataa. Koska käytetty kryptaus on tehokas, ovat kryptatut alkiojonot hyvin samannäköisiä riippumatta siitä muodostavatko ne oikean vieruspistematriisin vai ei. Ts. polynomiajassa laskien ei eroa saada näkyviin eikä esiintyviä jakaumia voida myöskään erottaa polynomiajassa laskien. Jakaumien ei silti tarvitse olla tarkalleen samat! HAMILTONCIRCUIT on N P-täydellinen tehtävä, johon muut N P:ssä olevat tunnistustehtä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 Jokaisen N P:ssä olevan tunnistustehtävän positiiviselle ratkaisulle voidaan antaa nollatietotodistus. Arvellaan, ettei millekään N P-täydelliselle tunnistustehtävälle voida antaa täydellistä nollatietotodistusta, ts. lause ei pidä paikkaansa, jos vaaditaan, että nollatietotodistus on täydellinen. Itse asiassa tiedetään Lausetta 14.3 yleisempikin tulos: Lause (Shamirin lause 5 ) Tunnistustehtävät, joiden positiivisille ratkaisuille on nollatietotodistus, ovat tarkalleen kaikki luokanpspace tunnistustehtävät. 5 Alkuperäisviite on SHAMIR, A.: IP = PSPACE. Journal of the ACM 39 (1992),

115 Luku 15 KVANTTIKRYPTOLOGIA 15.1 Kvanttibitti Klassisen bitin arvoja 0 ja 1 vastaavat kvanttifysiikassa kompleksialkioiset ortonormaalit kantavektorit, merkitään perinteisesti 0 ja 1. Tällöin voidaan ajatella toimittavanc 2 :ssa tulkittuna Hilbertin avaruudeksi. Kvanttibitti eli kubitti on muotoa b = α 0 0 +α 1 1 oleva lineaariyhdelmä (ns. superpositio), missäα 0 jaα 1 ovat kompleksilukuja ja b 2 = α α 1 2 = 1. Erikoisesti 0 ja 1 ovat itse kvanttibittejä, ns. puhtaita kvanttibittejä. Tärkeää on, että fysikaalisesti kvanttibitti voidaan alustaa jommaksikummaksi näistä. Kvanttifysikaalinen b:n mittaus antaa tulokseksi joko 0 :n tai 1 :n lyhyesti vain 0:n tai 1:n. Mittaus liittyy siis aina käytettyyn kantaan. Kvanttifysiikan todennäköisyystulkinnan mukaisesti tulos0saadaan todennäköisuudellä α 0 2 ja tulos1todennäköisyydellä α 1 2. Kvanttibitti on kvanttifysikaalinen tila ja se voidaan aika-askeleessa muuttaa toiseksi, mikäli muunnos on lineaarinen ja sen matriisiuon unitäärinen, ts.u 1 onu:n konjugaattitranspoosi U. Tällöin siis myös ( ) ( ) β0 α0 Ub = β 0 0 +β 1 1, missä = U, on kvanttibitti (tila). Huomaa erikoisesti, että β β 1 2 = ( ) ( ) β0 β1 β 0 = ( α0 β α1) U U 1 β 1 ( α0 α 1 α 1 ) = ( ) ( ) α0 α1 α 0 = 1. α 1 (Tähdellä merkitään tässä kompleksista liittolukua.) Palautetaan mieleen pari unitääristen matriisien ominaisuutta: 1. IdentiteettimatriisiI 2 on unitäärinen. Aika-askeleessa ei tarvitse välttämättä tehdä mitään. 2. Jos U 1 ja U 2 ovat unitäärisiä, niin samoin on U 1 U 2. Tämä tietää sitä, että kvanttibittiin voidaan operoida peräkkäisillä aika-askelilla useampia kertoja, mahdollisesti eri operaatioin, ja tulos on aina laillinen kvanttibitti. Juuri tällä tavoin kvanttietokone käsittelee kvanttibittejä. 110

116 LUKU 15. KVANTTIKRYPTOLOGIA JosUon unitäärinen, niin samoin onu. Kun kvanttibittiin operoidaan ja saadaan kvanttibitti, niin käänteinen operaatio on aina myös laillinen. Kvanttitietokone ei hävitä informaatiota eli se on reversiibeli. Jo kauan on tiedetty, että jokainen algoritmi voidaan korvata reversiibelillä algoritmilla. Ensimmäisenä tämän totesi ranskalainen Yves Lecerf vuonna Myöhemmin on vielä todettu, että tämä ei edes lisää kompleksisuutta kovin paljoa. 1 Näin ollen reversiibelisyys ei ole mikään todellinen rajoite laskennan kannalta, kvanttialgoritmien suunnittelua se tietysti mutkistaa Kvanttirekisterit ja kvanttialgoritmit Kvanttibittejä voidaan yhdistää tietyn pituisiksi kvanttirekistereiksi. Matemaattinen operaatio, jolla tämä tehdään on ns. Kroneckerin tulo eli tensoritulo. Matriisien A = (a ij ) (n 1 m 1 - matriisi) jab = (b ij ) (n 2 m 2 -matriisi) Kroneckerin tulo onn 1 n 2 m 1 m 2 -matriisi a 11 B a 12 B a 1m1 B a 21 B a 22 B a 2m1 B A B = a n1 1B a n1 2B a n1 m 2 B (lohkomuodossa). Erikoistapauksena saadaan kahden vektorin Kroneckerin tulo (m 1 = m 2 = 1). Seuraavat Kroneckerin tulon perusominaisuudet ovat varsin helppoja todistaa. Tässä oletetaan, että esiintyvät matriisioperaatiot ovat määriteltyjä. 1. Osittuvuus: (A 1 +A 2 ) B = A 1 B+A 2 B A (B 1 +B 2 ) = A B 1 +A B 2 2. Liitännäisyys: (A B) C = A (B C) Tämän seurauksena useammat peräkkäiset Kroneckerin tulot voidaan kirjoittaa ilman sulkeita. 3. Skalaarilla kertominen: (ca) B = A (cb) = c(a B) 4. Kroneckerin tulojen kertolasku (seuraa jokseenkin suoraan lohkomatriisien kertolaskusta): (A 1 B 1 )(A 2 B 2 ) = (A 1 A 2 ) (B 1 B 2 ) 5. Kroneckerin tulon inverssi (seuraa kertolaskulaista): (A B) 1 = A 1 B 1 6. Kroneckerin tulon konjugaattitranspoosi (seuraa suoraan lohkomatriisien konjugaattitransponoinnista): (A B) = A B 1 Alkuperäisviitteet ovat LECERF, M.Y.: Machines de Turing réversibles. Récursive insolubilité en n N de l équation u = θ n u, où θ est un isomorphisme de codes. Comptes Rendus 257 (1963), ja LEVIN, R.Y. & SHERMAN, A.T.: A Note on Bennett s Time-Space Tradeoff for Reversible Computation. SIAM Journal on Computing 19 (1990),

117 LUKU 15. KVANTTIKRYPTOLOGIA Unitääristen matriisien Kroneckerin tulot ovat unitäärisiä. (Seuraa edellisistä.) Jos kaksi kvanttibittiäb 1 = α 0 0 +α 1 1 jab 2 = β 0 0 +β 1 1 halutaan yhdistää kaksikubittiseksi rekisteriksi, se tapahtuu ottamalla Kroneckerin tulo: b 1 b 2 = α 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 on neljä. Jos nyt halutaan operoida rekisterin ensimmäiseen kvanttibittiinu 1 :llä ja toiseen U 2 :lla (molemmat unitäärisiä matriiseja), niin se tapahtuu unitäärisellä matriisillau 1 U 2, sillä kertolaskulain mukaisesti (U 1 U 2 )(b 1 b 2 ) = (U 1 b 1 ) (U 2 b 2 ). Erityisesti jos halutaan operoida vain ensimmäiseen kvanttibittiin matriisilla U, se tapahtuu valitsemalla U 1 = U ja U 2 = I 2. Samoin voidaan operoida vain toiseen kvanttibittiin. Mutta kaksikubittiseen rekisteriin voidaan operoida myös yleisellä unitäärisellä 4 4-matriisilla, sillä se on laillinen kvanttifysikaalinen tila. Tällaisella operoinnilla voi kytkeä rekisterin kvanttibitit toisiinsa. Kvanttifysikaalinen kytkentä (engl. entanglement) on nimenomaan kvanttitietokoneille ominainen laskentaresurssi, jota ei klassisessa laskennassa ole. Vastaavalla tavalla voidaan muodostaa kolmen ja useamman kvanttibitin rekistereitä, operoida sen kvanttibitteihin, joko kaikkiin tai yksittäisiin jne. Yleisesti m kvanttibitin rekisterin dimensio on 2 m. Tällöin kantavektorien voidaan ajatella vastaavan binääriesityksen kautta kokonaislukuja välillä0,...,2 m 1 ja voidaan ottaa käyttöön merkintä k = b m 1 b m 2 b 1 b 0, kun k:n binääriesitys on b m 1 b m 2 b 1 b 0, mahdollisesti alkunollia lisäten. Useampia rekistereitä voidaan edelleen yhdistää pidemmiksi rekistereiksi Kroneckerin tuloja käyttäen, näihin voidaan operoida yhdessä tai erikseen jne. Huolimatta rekisterin mahdollisesti hyvinkin korkeasta dimensiosta 2 m, monet operaatiot ovat fysikaalisesti suoritettavissa sille kvanttibiteittäin, mahdollisesti useassa askeleessa, eikä valtavia unitäärisiä matriiseja käytännössä tarvita. Askelketjuja kutsutaan tällöin kvanttialgoritmeiksi. Tärkeää on, että kvanttialgoritmeilla saadaan myös aikaan kytkentöjä. Jatkossa seuraavat operaatiot ovat keskeisiä. Sen osoittaminen, että ne voidaan suorittaa kvanttialgoritmeilla, on jonkin verran hankalaa. 2 Tässäk on kuten yllä. Syötteestä k 0 0 lasketaan k (w k,mod n), missäw jan 2 m ovat kiinteitä annettuja lukuja. Syötteestäk lasketaan sen ns. kvantti-fourier-muunnos F Q ( k ) = 1 2 m 1 e 2πijk 2 m/2 2 m j, missä i on imaginääriyksikkö. Kvantti-Fourier-muunnos toimii kuten tavallinenkin diskreetti Fourier n muunnos, ts. se poimii syötejonosta periodisia osia, ks. kurssi Fourier n menetelmät. 2 Ks. esimerkiksi SHOR, P.W.: Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer. SIAM Journal on Computing 26 (1997), tai NIELSEN & CHUANG. j=0

118 LUKU 15. KVANTTIKRYPTOLOGIA Shorin algoritmit Nykyiset kvanttitietokoneet ovat kovin pieniä eikä niillä ole käytännön merkitystä. Isompien kvanttirekisterien hallinta kvanttitietokoneilla tietäisi kuitenkin sitä, että mm. RSAn ja ELGA- MALin turvallisuuden kannalta keskeisessä asemassa olevat tehtävät, tekijöihinjako sekä diskreetti logaritmi modulo alkuluku, voitaisiin ratkaista kvanttipolynomiajassa eli ne ovat luokassa BQP. Tämän näytti Peter Shor vuonna Katsotaan tässä Shorin tekijöihinjakoalgoritmi. Diskreetin logaritmin laskeminen on vähän hankalampaa. Ks. Alaviitteessä 2 mainittu viite SHOR. Shorin tekijöihinjakoalgoritmi on hyvin samanlainen kuin RSAn kryptanalyysiin liittyvä eksponenttialgoritmi Pykälässä 8.3. Siellä esiintyvä salaperäinen algoritmi A vain suoritetaan kvanttitietokoneella. Lisäksi tietysti tekijöihinsä jaettava lukunvoi sisältää paljonkin alkutekijöitä. Algoritmin klassinen osa on seuraavanlainen, kun syöte on lukun 2: Shorin tekijöihinjakoalgoritmi: 1. Testataan onkonalkuluku. Jos on, niin tulostetaannja lopetetaan. 2. Selvitetään onko n jonkin kokonaisluvun korkeampi potenssi, vrt. Agrawal Kayal Saxena-algoritmi Pykälässä 7.4. Josn = u t, missät 2, jatketaan etsimälläu:n alkutekijät, joista sitten saadaan helposti n:n tekijät. Tämä kohta, kuten edellinenkin, ovat mukana vain sen takia, että helpot tilanteet hoidetaan pois nopeasti. 3. Valitaan satunnaisesti luku w, 1 w < n. 4. Lasketaan d = syt(w, n) Eukleideen algoritmilla. 5. Jos1 < d < n, jatketaan d:stä jan/d:stä. 6. Josd = 1, lasketaan kvanttitietokoneella sellainen lukur > 0, ettäw r 1 mod n. 7. Josr on pariton, mennään kohtaan Josr on parillinen, asetetaan r r/2 ja mennään kohtaan Lasketaan ω = (w r,mod n) venäläisten talonpoikien algoritmilla. 10. Jos ω 1 mod n, luovutaan tehtävästä ja lopetetaan. 11. Josω 1 mod n, asetetaan ω ω jaω (ω 2,mod n) ja mennään kohtaan Lopulta saadaan sellainen 1:n neliöjuuri ω modulo n, että ω 1 mod n. Mikäli nyt ω 1 mod n, luovutetaan ja lopetetaan. Muutoin lasketaan t = syt(ω 1,n) ja jatketaan t:stä ja n/t:stä. Huomaa, että koska ω mod n ja toisaalta ω 2 1 = (ω +1)(ω 1) 0 mod n, niinn:n jokin alkutekijä onω 1:n tekijä. Kuten Pykälässä 8.3, voidaan osoittaa, että jos n ei ole alkuluku, algoritmi onnistuu löytämään sille tekijän ainakin todennäköisyydellä1/2. Kvanttitietokoneella suoritettavaksi jää siis kohta 6. Tämä perustuu siihen, että(w j,mod n) on periodinen j:n suhteen ja jokin periodi r voidaan tällöin löytää kvantti-fourier-muunnoksella. Itse menettely on seuraava:

119 LUKU 15. KVANTTIKRYPTOLOGIA Valitaan sellainen luku2 m, ettän 2 2 m < 2n Alustetaan kaksi m-pituista rekisteriä nolliksi: Sovelletaan ensimmäiseen rekisteriin kvantti-fourier-muunnosta: ( ) 2 1 m 1 F Q ( 0 0 ) 0 0 = e 2πij 0 2 m/2 2 m j 0 0 j=0 j=0 = 1 2 m 1 j m/2 Ensimmäiseen rekisteriin on näin saatu kokonaislukujen0,...,2 m 1 tasainen superpositio. Kvanttitietokone on valmis käsittelemään niitä yhtaikaa! 6.4 Lasketaan sopivalla operaatiolla (ks. edellinen pykälä) kerralla 2 1 m 1 j (w j, mod n). 2 m/2 j=0 Rekisterit ovat nyt kytkeytyneet kvanttifysikaalisessa mielessä toisiinsa. 6.5 Mitataan toinen rekisteri, jolloin saadaan kokonaislukuv ja rekisterit ovat 2 m 1 γ j=0 w j v mod n j v, missä γ on skaalausvakio ja indeksit j esiintyvät periodisesti. Skaalausvakio tarvitaan, koska kyseessä on oltava mittauksen jälkeenkin kvanttifysikaalinen tila. 6.6 Sovelletaan ensimmäiseen rekisteriin kvantti-fourier-muunnosta: γ 2 m/2 2 m 1 2 m 1 j=0 l=0 w j v mod n e 2πilj 2 m l v. 6.7 Mitataan ensimmäinenkin rekisteri. Tulos l saadaan silloin todennäköisyydellä g(l) 2, missä g(l) = γ 2 m 1 e 2πilj 2 m/2 2 m. j=0 w j v mod n Mutta g(l) on kerrointa vaille sellaisen jonon diskreetti Fourier n muunnos, jossa esiintyy 1 samalla periodilla kuinj kohdassa 6.5 muiden alkioiden ollessa nollia. Alla olevassa kuvassa on esitetty mainittu todennäköisyys, kun m = 8 ja r = 10. Nämä arvot ovat tietysti aivan liian pienet ollakseen käytännössä kovin mielenkiintoisia. r vastaa taajuutta 2 8 /10 = 25.6, joka näkyy monikertoineen kuvassa hyvin selvästi. Sangen todennäköisesti mitattul on lähellä jotain näistä.

120 LUKU 15. KVANTTIKRYPTOLOGIA Näin saadaan arvo l, joka on likimain jokin taajuuden 2 m /r monikerta, ts. on j jolle j r = l 2 m. Koska r φ(n) < n 1, voidaan r ehkä löytää kokeillen lähtien rationaaliluvusta l/2 m. Joka tapauksessa, käyttäen hyväksi kohdan 1. ehtoam:lle voidaan ns. Diofantoksen approksimaatiolla löytää hyvin todennäköisesti oikear, ks. Alaviitteen 2 viite SHOR. Kaikkineen kyseessä on eräänlainen probabilistinen polynomiaikainen algoritmi, jolla pitkistäkin jonoista voidaan löytää periodi. Tällaisella algoritmilla olisi paljon sovelluksia muutenkin, mm. ryhmäteoriassa, jos vain isoja kvanttitietokoneita olisi käytössä Avainjako kvanttimenetelmällä Kvanttibitti voidaan esittää monessa ortonormaalissa kannassa. Koska mittaus aina liittyy tiettyyn ortonormaaliin kantaan ja antaa tulokseksi jommankumman kantavektoreista, voidaan yhden kannan suhteen puhdas kvanttibitti mitata toisessa kannassa ja saada tulokseksi kumpi tahansa 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äänb 1, ja sitten toinen kanta +,, merkitäänb 2, missä + = 1 2 ( ) ja = 1 2 ( 0 1 ). B 2 on silloin myös ortonormaali. Mittaaja voi päättää, minkä kannan suhteen hän mittaa. Esimerkiksi mitatessaan kannan B 2 suhteen kvanttibitin 0 =

121 LUKU 15. KVANTTIKRYPTOLOGIA 116 mittaaja saa todennäköisyydellä 1/2 tulokseksi + :n. Kvanttiavainjako voidaan suorittaa monellakin tavalla. Eräs tapa saada salainen avain kahdelle osapuolelle A ja B on seuraava: 1. A lähettää B:lle jonon bittejä tulkiten ne puhtaiksi kvanttibiteiksi valiten kunkin bitin kohdalla kumpaa kantaab 1 vaikob 2 hän käyttää, samaistaenb 2 :ta käyttäessään vaikkapa 0:n :een ja1:n + :aan. A myös säilyttää kantavalintansa. 2. Saatuaan A:n lähettämät kvanttibitit B mittaa ne valiten kunkin kvanttibitin kohdalla satunnaisesti kannan B 1 tai B 2, 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 olivat samat kuin hänen. 5. A ja B käyttävät avaimenaan vain ne bitit, jotka saadaan näistä yhteisistä kantavalinnoista, niissähän B:n mittaus antaa puhtaan kvanttibitin, joka on 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 tietoonsa mittaamalla A:n lähettämät kvanttibitit tai pyrkien lähettämään B:lle aivan omat kvanttibittinsä, tämä paljastuu hyvin todennäköisesti. (Kloonaamattomuuslauseesta johtuen C:llä ei ole mahdollisuutta kopioda itselleen kvanttibittejä myöhempää käyttöä varten.) Ensinnäkin mitatessaan A:n lähettämät kvanttibitit C joutuu valitsemaan kannan B 1 tai B 2. Tämä valinta on noin puolessa tapauksista sama kuin A:n. C lähettää nämä kvanttibitit B:lle, joka luulee niiden tulevan A:lta. Tällöin A:n ja B:n kohdassa 5. avaimeen valitsemista biteistä monet ovat eri bittejä. Tämä paljastuu luonnollisesti myöhemmin, ensimmäiset avainta käyttäen esimerkiksi AE- Silla lähetetyt viestit voisivat olla varustettuja pariteetintarkastuksilla tms. testiosioilla. Samoin tietysti 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 ( ) (ns. Bellin tila). Tämä voidaan tehdä (totea!) alustamalla ensin rekisterit tilaan 00 = 0 0 ja soveltamalla sitten unitäärimatriisia Kaikissa rekistereissä käytetään kantaab 1, mutta kyseessä on Bellin tila myöskin kantaa B 2 käyttäen, sillä laskien Kroneckerin tuloja käyttäen on helppo todeta, että 1 ( ) = 1 ( + ++ ). 2 2 Bellin tilassa molemmat positiot sisältävät saman puhtaan kvanttibitin, ts. kvanttibitit ovat kytketyt. Fysikaalisesti kvanttibitit voidaan erottaa ja viedä hyvinkin kauas toisistaan kytkennän muuttumatta. A ottaa itselleen ensimmäiset kvanttibitit muistaen niiden järjestyksen ja B toiset. Eräs mahdollisuus on sekin, että jokin kolmas luotettu osapuoli alustaa

122 LUKU 15. KVANTTIKRYPTOLOGIA 117 Bellin tilat ja jakaa niiden kvanttibitit sitten A:lle ja B:lle. Kaikki tämä tapahtuu ideaalisesti ulkopuolisten tietämättä. Bellin tilojen puoliskot odottavat käyttöönottoaan A:lla ja B:llä. Jos A ja B voivat olla varmat, että he ovat saaneet Bellin tilojen puoliskonsa ilman ulkopuolista häirintää, he suorittavat avainjaon yksinkertaisesti mittaamalla kvanttibittinsä sovitussa samassa kannassa. Kytkennästä johtuen he saavat samat tulokset, mutta saatu avain 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 menettely on samantapainen kuin edellä ja etenee seuraavasti. 2. Kun A ja B tarvitsevat avainta, A mittaa kvanttibittinsä (ensimmäiset kvanttibitit) valiten kullekin kvanttibitille satunnaisesti kannan B 1 tai B 2. B puolestaan mittaa omansa tämän jälkeen valiten hänkin kannan kullekin kvanttibitille satunnaisesti. Koska kvanttibitit ovat kytketyt, he saavat samat tulokset, mikäli käyttävät samaa kantaa. 3. A ilmoittaa B:lle klassista kanavaa käyttäen kantavalintansa, ilmoittaen samalla avainjaon alkaneen. Varsinainen avainjako ei näin voi edetä valoa nopeammin. B lähettää sen jälkeen A:lle klassista kanavaa käyttäen tiedon siitä mitkä A:n kantavalinnat olivat samat kuin hänen. Ulkopuolinen taho ei voi käyttää tätä tietoa hyväkseen, koska mitatut kvanttibitit eivät ole hänen tiedossaan. Ulkopuolinen taho voi kuitenkin yrittää sotkea tilannetta esimerkiksi lähettämällä B:lle A:n nimissä tekaistut kantavalinnat. Tämä paljastuu ennen pitkää kuten edelläkin. Samoin käy, jos ulkopuolinen taho on päässyt vaikuttamaan A:n tai B:n kvanttibitteihin. 4. A ja B valitsevat avaimekseen ne mittaamansa kvanttibitit, jotka he mittasivat samassa kannassa. Näin he saavat samat bitit. Avaimeen tulee noin puolet mitatuista kvanttibiteistä. Huomautus. Kvanttiavainjako on tätä nykyä käytössä melko pitkillekin matkoille ja sitä pidetään ehdottoman varmana. Erilaisia protokollia on muitakin, ks. esimerkiksi NIELSEN & CHUANG. Mielenkiintoista kyllä, edellä esitetyn ensimmäisen avainjaon tapainen menettely voidaan toteuttaa myös klassista sähköfysiikkaa käyttäen, alla olevan kuvan mukaisesti. A U A,1 R 1 R 1 U B,1 B U A,2 C R 2 R 2 U B,2 Osapuolilla A ja B on silloin kummallakin käytössään kaksi resistoria, joiden resistanssitr 1 ja R 2 ovat eri suuret (ja kummallakin tarkalleen samat). Resistanssi R i on kytketty sarjaan oman kohinajännitteensäu A,i taiu B,i kanssa. Kohinoiden intensiteetit (tehospektrit) ovat samaa muotoa kuin resistorien lämpökohinoiden 4, ts. yhdistettynä muotoaer i, missäe on vakio. A ja B 3 Tämä on ns. Einstein Podolsky Rosen-paradoksi. Varsinaista klassista tietoa ei kuitenkaan välity yli valon nopeudella, 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. 4 Ns. Johnson Nyquist-kaavan mukaisesti resistanssiarlämpötilassat vastaa lämpökohina, jonka intensiteetti on 4kT R, missä k on Boltzmannin vakio.

123 LUKU 15. KVANTTIKRYPTOLOGIA 118 voivat kytkimellä ottaa käyttöön satunnaisesti kumman tahansa näistä resistori-kohinageneraattoripareista. Kun molemmat tekevät näin, muodostuu piiri, jossa Ohmin lain mukaan kulkee virta, jonka intensiteetti on I = E/(R A + R B ), missä R A on A:n ja R B B:n valitsema resistanssi. A ja B mittaavat virran, joten he tietävät toistensa valitsemat resistanssit. Mikäli A ja B valitsevat saman resistanssin,r 1 tai R 2, mitään bittiä ei välity. Näin käy noin puolessa tapauksista. Joka kerta kun he valitsevat eri resistanssit, määräytyy avaimen bitti (vaikkapa niin, että bitti on 0, jos A valitsee R 1 :n). Jos ulkopuolinen taho C silloin mittaa virran, hän ei voi sen perusteella tietää määräytynyttä bittiä. Ei myöskään mittaamalla maata vasten jännitteen, jonka intensiteetti oner A R B /(R A +R B ). Paljoa muuta C ei voi tehdäkään. Menettely toimii ideaalisessa tilanteessa ja jos A ja B voivat tehdä aina kytkentänsä täsmälleen samaan aikaan. Jos taas on vaikkapa sovittu, että A kytkee ensin ja sitten B, pääsee C kukaties mittaamaan nopeasti A:n valitseman resistanssin hänen huomaamattaan. Sen jälkeen C 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äisin järjestelyin. 5 5 Ks. alkuperäisviite KISH, L.B.: Totally Secure Classical Communication Utilizing Johnson(-like) Noise and Kirchhoff s Law. Physics Letters A 352 (2006), Menettelyä on kylläkin kritisoitu kovasti erilaisin fysikaalisin perustein, toisaalta se on myös implementoitu.

124 Liite DES Liite.1 Yleistä DES (Data Encryption Standard) on IBM:n 70-luvun alkupuolella kehittämä symmetrinen kryptosysteemi. Se perustuu IBM:n aikaisemmin tekemään LUCIFER-systeemiin. DES julkaistiin vuonna 1975 ja otettiin USA:ssa unclassified -dokumenttien kryptausstandardiksi vuonna Sen jälkeen sitä on käytetty hyvin paljon eri yhteyksissä, myös kolminkertaisena 3-DESsysteeminä. 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 korvautunut AESilla. Liite.2 DESin määrittely DES toimii bittisymboleilla, joten selväteksti- ja kryptotekstisymboleiksi voidaan ajatella Z 2 :n jäännösluokat (bitit) 0 ja 1. Selvätekstilohkon pituus on 64. Avain k on 56-bittinen. Se on yhteinen kryptauksessa ja dekryptauksessa. Pääpiirteissään DES toimii seuraavasti: 1. Selvätekstistä x muodostetaan bittijono x 0 permutoimalla x:n bitit tietyn kiinteän permutaation (ns. alkupermutaation) π ini mukaan. Kirjoitetaan x 0 = π ini (x) = L 0 R 0, missä L 0 :ssa on x 0 :n 32 ensimmäistä bittiä ja R 0 :ssa loput. 2. Lasketaan jono L 1 R 1, L 2 R 2,...,L 16 R 16 iteroiden 16 kertaa seuraavaa menettelyä: { L i = R i 1 L i 1 R i 1 R i = L i 1 f(r i 1, k i ), missä on bittikohtainen yhteenlasku modulo 2 (tunnetaan myös nimellä XOR-operaatio), f on funktio, joka annetaan myöhemmin, ja k i on i:nnen iteraation avain, joka saadaan k:sta permutoimalla sen tietyt 48 bittiä tiettyyn järjestykseen. Havainnollisesti yksi iteraatioaskel on kuvattu ohessa. L i f R i k i 3. Sovelletaan alkupermutaation π ini käänteispermutaatiota π 1 ini (ns. loppupermutaatio) bittijonoon R 16 L

125 Liite. DES 120 Vielä pitää antaa permutaatio π ini, määritellä funktio f ja antaa avainjono k 1, k 2,...,k 16, jotta kryptaus olisi määrätty. Katsotaan ensin funktion f määrittely. f:n ensimmäinen argumentti R on 32-pituinen bittijono ja toinen argumentti K on 48-pituinen bittijono. f:n laskemiseksi menetellään seuraavasti: 1. Ensimmäinen argumentti R laajennetaan laajennusfunktiolla E. E(R):ään otetaan R:n 32 bittiä, toistetaan niistä puolet ja permutoidaan. Bitit otetaan oheisen taulukon mukaisesti, jota luetaan vasemmalta oikealle ja ylhäältä alas. 2. Lasketaan E(R) K = B ja kirjoitetaan tulos kahdeksan 6-bittisen bittijonon katenaatioksi: B = B 1 B 2 B 3 B 4 B 5 B 6 B 7 B Seuraavaksi käytetään kahdeksaa ns. S-laatikkoa S 1,...,S 8. Kukin S i on kiinteä taulukko, jossa esiintyy lukuja 0, 1,..., 15. Kun saadaan 6-pituinen bittijono R E K B i = b 1 b 2 b 3 b 4 b 5 b 6, lasketaan S i (B i ) = C i seuraavasti. Bitit b 1 b 6 antavat erään rivin indeksin r binääriesityksen (r = 0, 1, 2, 3). Loput bitit b 2 b 3 b 4 b 5 puolestaan antavat erään sarakkeen s indeksin binääriesityksen (s = 0, 1,..., 15). (S i :n rivit ja sarakkeet siis indeksoidaan nollasta lähtien.) Silloin S i (B i ) on S i :n r:nnen rivin ja s:nnen sarakkeen risteyskohdassa olevan luvun binääriesitys, jonka alkuun lisätään tarvittaessa nollia, niin että saadaan neljä bittiä. Bittijonot C i katenoidaan bittijonoksi C = C 1 C 2 C 3 C 4 C 5 C 6 C 7 C pituinen bittijono C permutoidaan käyttäen kiinteää permutaatiota π. Näin saatu bittijono π(c) on f(r, K). E(R) B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 C 1 C 2 C 3 C 4 C 5 C 6 C 7 C 8 π f(r,k) Havainnollisesti operaatio on kuvattu yllä olevassa kuvassa. Tässä voidaan huomata, että E ja π ovat lineaarisia operaatioita, ts. ne voitaisiin korvata bittivektorin kertomisella matriisilla. Toisaalta S-laatikot eivät ole lineaarisia, vaan epälineaarisia. S-laatikoiden määrittelyt löytyvät kirjallisuudesta (esimerkiksi STINSON). Ohessa an netaan esimerkkinä S 2 ja alla permutaatiot π ini ja π (samaan tapaan kuin E):

126 Liite. DES 121 π ini : π : Avainjono k 1, k 2,...,k 16 lasketaan iteratiivisesti seuraavasti: 1. Avain k annetaan muodossa, missä aina 7 bitin perään on lisätty pariteetintarkistusbitti. Tavussa on näin aina pariton määrä 1:siä ja avaimen pituus 64 bittiä. Mikäli pariteetintarkistus osoittaa, että avaimessa on virheitä, sitä ei oteta käyttöön. Jos taas virheitä ei ole, poistetaan pariteetintarkistusbitit, jolloin tullaan alkuperäiseen 56-bittiseen avaimeen. Avaimeen sovelletaan ensin kiinteää bittien permutaatiota π K1. Kirjoitetaan missä C 0 ja D 0 ovat 28-pituisia bittijonoja. π K1 (k) = C 0 D 0, 2. Lasketaan jono C 1 D 1, C 2 D 2,...,D 16 D 16 iteroiden 16 kertaa seuraavaa menettelyä: { C i = σ i (C i 1 ) D i = σ i (D i 1 ), missä σ i on bittijonon syklinen siirto 1 tai 2 bittiä vasemmalle. Jos i = 1, 2, 9, 16, niin siirto on 1 bitti, muuten 2 bittiä. 3. Sovelletaan C i D i :hin kiinteää 48 bitin variaatiota π K2. Näin saadaan k i = π K2 (C i D i ). Vielä pitää antaa permutaatio π K1 ja variaatio π K2 : π K1 : k π K1 C 0 D 0 σ 1 σ 1 π K2 : C 1 D 1 σ 2 σ 2 σ 16 σ 16 π K2 k 1 C 16 D 16 π K2 k 16

127 Liite. DES 122 Havainnollisesti avainten generointi on kuvattu yllä olevassa kuvassa. Dekryptaus sujuu oleellisesti samalla systeemillä, mutta käyttäen avainjonoa k 1, k 2,..., k 16 päinvastaisessa järjestyksessä ja kääntäen permutaatiot. Tällöin { L i 1 = R i f(l i, k i ) R i 1 = L i. DESin toimintamoodit ovat samat kuin AESilla, ks. Pykälä 5.4. Liite.3 DESin kryptanalyysiä DESin rakenteessa kaikki muu on lineaarista, eli toteutettavissa matriisikertolaskulla, paitsi S-laatikot. Jos S-laatikot olisivat affiinisia, eli toteutettavissa matriisikertolaskuilla ja vektorien yhteenlaskuilla, olisi DES oleellisesti sama kuin jokin AFFINE-HILL ja näin helpohkosti murrettavissa. S-laatikot eivät kuitenkaan ole affiinisia. Julkisuudessa esitetyt DESin S-laatikoiden suunnitteluperiaatteet ovat seuraavat: (1) S-laatikon kukin rivi on lukujen 0, 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 kahden bitin muutoksen. (4) S-laatikon tulostukset syötteillä x ja x eroavat ainakin kahden bitin osalta, olipa x mikä tahansa 6-pituinen bittijono. (5) S-laatikon tulostukset syötteillä x ja x 11b 1 b 2 00 eroavat, olipa x mikä tahansa 6-pituinen bittijono ja b 1 sekä b 2 mitä tahansa bittejä. (6) Jokaista kuuden bitin jonoa B = b 1 b 2 b 3 b 4 b 5 b kohti on 32 (= 2 6 /2) eri syöteparia x 1, x 2, joille x 1 x 2 = B. Vastaavista 32 tulosteparista y 1, y 2 enintään kahdeksalla saa olla sama summa y 1 y 2. DESin avaimia on 2 56 = eli nykykäsityksen mukaan varsin vähän. Tämä antaa mahdollisuuden seuraavaan yksinkertaiseen KP-hyökkäykseen. Jos tunnetaan selväteksti w ja vastaava kryptoteksti c, kokeillaan läpi avaimia, kunnes löytyy avain, jolla saadaan aikaan tämä kryptaus. Tällaisia avaimia voi kuitenkin olla useita. Menettely ei vaadi muuta kuin aikaa ja nopeita prosessoreja ja on helposti rinnakkaistettavissa, muistia se vaatii minimaalisen määrän. DES on toteutettavissa tavattoman nopeina piireinä, joten vartavasten sen murtamiseen yo. tekniikalla suunnitellut prosessorit ovat mahdollisia. CP-hyökkäys saadaan seuraavasti. Valitaan selväteksti w ja kryptataan se kaikilla mahdollisilla avainavaruuden avaimilla. Taulukoidaan tulokset. Jos nyt murrettavalla DESillä voidaan kryptata w ja saada vastaava kryptoteksti, niin taulukkoetsinnällä löytyy avain. Tämä metodi on tietysti edullinen vain, jos sitä käytetään useiden avainten etsimiseen, jolloin taulukkoa voidaan käyttää toistuvasti. Menettely ei vaadi lisäaikaa (taulukon laatimisen jälkeen) juuri lainkaan, mutta paljon muistia.

128 Liite. DES 123 On myös menettelyjä, joissa aikaa voidaan vaihtaa muistiin, eräänlaisia yo. menettelyjen välimuotoja. AESissa avaimia on ainakin = , 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ös AFFINEn KP-hyökkäys käytti murtamiseen selvätekstien erotuksia ja vastaavien kryptotekstien erotuksia modulo M, joilla saatiin hävitetyksi affiinisuuden aiheuttama epälineaarisuus. Tällaista menettelyä kutsutaan differentiaaliseksi kryptanalyysiksi. Vastaavantapaista menettelyä voidaan soveltaa DESin KP- ja CP-hyökkäyksissä ja tietyssä määrin poistaa S-laatikoiden epälineaarisuuden vaikutuksia. Haittapuolena on suuri tarvittavien selväteksti-kryptoteksti-parien lukumäärä. Lineaarinen kryptanalyysi taas pyrkii käyttämään hyväksi joidenkin syöte- ja tulostusbittien välisiä lineaarisia 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ä kryptanalyysit.

129 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. Cambridge University 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 Standard. Springer Verlag (2002) 7. DING, C. & PEI, D. & SALOMAA, A: Chinese Remainder Theorem. Applications in Computing, 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 University Press (2009) 13. HOFFSTEIN, J. & PIPHER, J. & SILVERMAN, J.H.: An Introduction to Mathematical Cryptography. Springer Verlag (2008) 14. HOPCROFT, J.E. & ULLMAN, J.D.: Introduction to Automata Theory, Languages, and Computation. 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

130 KIRJALLISUUS 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 Cryptography. 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 Practitioners. 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. Cambridge University Press (2005) 38. SHPARLINSKI, I.: Cryptographic Applications of Analytic Number Theory. Complexity Lower 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)

131 KIRJALLISUUS 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)

132 Hakemisto 127 Hakemisto additiivinen ryhmä 74,75 Adleman Pomerance Rumely-testi 54 AES 34,119,123 affiini kryptosysteemi 23,25 affiini Hillin kryptosysteemi 24,26,123 AFFINE 23,25,123 AFFINE-HILL 24,26,123 Agrawal Kayak Saxena-algoritmi 55 aidonnus 45 algebrallinen struktuuri 27 algoritmi 42 aliryhmä 76 alkukunta 13,28,32 alkuluku 4,53 Alkulukulause 57 alkuluokka 12 allekirjoitus 45,99 allekirjoitusavain 99 allekirjoitusavaruus 99 allekirjoitusfunktio 99 allekirjoitussysteemi 99 ARITHMETICA 47 arpominen 102 aste 28 autentikointi 41 avaimen laajentaminen 38 avain 1,99 avainavaruus 1,99 Bellin tila 116 Bertrandin postulaatti 57 Bézout n kertoimet 7 Bézout n lause 7,30 Bézout n muoto 7,9,30 binäärikunta 13 Blum Blum Shub-generaattori 63 BPP 43 BQP 43,113 CAESAR 23 Caesar-kryptosysteemi 23 Casselsin lause 83 CBC-moodi 41 CC-data 25 CELIDH 88 CFB-moodi 41 Chaum van Heijst Pfitzmann-tiiviste 97 CO-data 25,44 co N P 43 CP-data 25 CRANDALL 47,88 CRT-algoritmi 52 CTR-moodi 41 dekryptaus 1 dekryptauseksponentti 65 dekryptausfunktio 1 dekryptausfunktioiden avaruus 1 DES 119 desimaaliesitys 5 differentiaalinen kryptanalyysi 123 DIFFIE HELLMAN 86 Diffie Hellman-avainjakosysteemi 86 Diffie Hellman-probleema 86 DIFFIE-HELLMAN 47 Dirichlet De la Vallée-Poussin-lause 57 diskreetti logaritmi 47,50,52,77,85,113 EBC-moodi 41 ei-triviaali tekijä 3 ei-ylisingulaarinen 79 eksponenttialgoritmi 70 ELGAMAL 47,52,85,100,113 Elgamalin allekirjoitus 100 Elgamalin kryptosysteemi 85,100,113 elliptinen käyrä 47,78,87 elliptisten käyrien menetelmä 58 ENIGMA 24 epäneliönjäännös 59 epäsymmetrinen kryptaus 1 Eukleideen algoritmi 7,30 Eulerin funktio 12,48 Eulerin kriteeri 60 Eulerin lause 49 Fermat n pieni lause 49 Garnerin algoritmi 53 generaattori 75 Germainin luku 68,97 Hassen lause 83 heikosti törmäyksetön 93 heksadesimaaliesitys 5 Henselin nosto 91 hila 47,63 HILL 23,24,26 Hillin kryptosysteemi 24,26 identiteettialkio 74 indeksi 52 indeksilaskumenetelmä 78 indeksitaulu 77 injektiivinen kryptaus 2 interaktiivinen todistussysteemi 106 inverssi 12,28,74 iteroitu kryptaus 67 jaettava 3

133 Hakemisto 128 jakaja 3 jakojäännös 3,10,29 jakolasku 3,15,28,29 jaollisuus 3,30 jaoton luku 4 jaoton polynomi 30 johtava kerroin 28 julkisen avaimen kryptaus 1,44 jäännösluokka 10,12,30,75 jäännösluokkarengas 12,28,30 jäännösluokkaryhmä 75 jäännössysteemi 11 kanta 5 kantaesitys 5 kantaluku 5 kantamuunnos 6 Karatsuban algoritmi 13 katto 13 kerta-avain 24 kerta-avainkryptaus 24,26 kertaluku 49,75 keskenään jaottomat luvut 6 keskikohtaaminen 68,86 kierros 35 kierrosavain 38 Kiinalainen jäännöslause 52 kiintopisteviesti 69 KNAPSACK 46 kokonaisjuuri 18 kokonaisneliöjuuri 18 kompleksisuus 42 kongruenssi 10,30 kongruenssilaskenta 10 KP-data 25 Kroneckerin dekompositio 77,83 Kroneckerin tulo 111 kryptanalyysi 25,40,44,69,122 kryptaus 1 kryptauseksponentti 65 kryptausfunktio 1 kryptausfunktioiden avaruus 1 kryptosysteemi 1 kryptoteksti 1 kryptotekstiavaruus 1 kryptotunnistus 45 kubitti 110 kunta 28 kvantti-fourier-muunnos 112 kvanttialgoritmi 112 kvanttibitti 110 kvanttikryptologia 110 kvanttirekisteri 111 kynnyskaavio 104 kytkentä 112 käänteisalkio 28,74 Lagrangen interpolaatio 104 Lagrangen lause 76,85 Las Vegas -algoritmi 43 laskennallinen nollatietotodistus 106 Lenstra Lenstra Lovász-algoritmi 64,68,72,92 liitännäinen operaatio 27,74 lineaarinen kongruenssigeneraattori 21,23 lineaarinen kryptanalyysi 123 LLL-algoritmi 64,68,72,92 lohkokryptaus 1 Lucas n kriteeri 51,86 Lucas Lehmer-kriteeri 51 LUCIFER 118 lukukunta 28 lukukuntaseula 58 lyhyt Weierstraßin muoto 79 MCELIECE 47 MENEZES VANSTONE 47,87 Menezes Vanstone Okamoto-algoritmi 87 Menezes Vanstonesysteemi 87 Mignotten kynnyskaavio 105 Miller Rabin-testi 55 mittaus 110 modulaarilaskenta 10 modulaarinen neliöjuuri 59 moduli 10,30 monikertamerkintä 27,74 Monte Carlo -algoritmi 43 multiplikatiivinen ryhmä 75 murto 1 negatiivinen jäännössysteemi 11 neliöllinen seula 58 neliönjäännös 59 Newtonin menetelmä 15,18 NIEDERREITER 47 nolla-alkio 27,74 nollapolynomi 28 nollatietotodistus 106 N P 43 N P-kova 44 N P-täydellinen 44 N PSPA CE 43 NTRU 47,89 O-notaatio 13,42 OFB-moodi 41 oheismatriisi 21 oktaaliesitys 5 ONE-TIME-PAD 24,26 osamäärä 3,29

134 Hakemisto 129 osittuvuus 27 P 43 pariteetti 70 permutaatiokryptaus 24 PERMUTATION 24 pienin yhteinen jaettava 9 pohja 13 Pohlig Hellman-algoritmi 78,85 Pollardin kengurualgoritmi 96 Pollardin p-1-algoritmi 58 polynomi 28 polynomirengas 28 positiivinen jäännössysteemi 11 potenssimerkintä 27,74 Prattin algoritmi 53 primitiivinen alkio 76 primitiivinen juuri 50,75 probabilistinen algoritmi 43 PSPA CE 43 puhdas kvanttibitti 110 puolisko 70 pääneliöjuuri 60 pääpolynomi 28 RABIN 47 radix 5 radix-muunnos 6 reduktio 43 rengas 13,27 reppuprobleema 46 reppusysteemi 46 RIJNDAEL 34 RIJNDAEL-polynomi 35 ristitörmäys 95 rivinsiirto 37 rotaatiokryptosysteemi 24 RSA 47,65,100,113 RSA-allekirjoitus 100 ryhmä 74 S-laatikko 36,120 salaisen avaimen kryptaus 1 salaisuuksien jakaminen 104 salaluukku 45 sarakkeiden sekoitus 37 satunnaisluku 21,62 Schoofin algoritmi 84 selviämätön tehtävä 44 selviävä tehtävä 44 selväteksti 1 seulamenetelmä 58 Shamirin hyökkäys 46 Shamirin kynnyskaavio 104 Shamirin lause 109 Shanksin algoritmi 61,84 Shanksin pikkuaskel-jättiaskel-algoritmi 77,84,96 Shorin algoritmit 43,113 siirtorekisteri 20 siirtorekisterigeneraattori 20,23 sokea allekirjoitus 100 stokastinen algoritmi 43 suora tulo 76 supistettu jäännössysteemi 12 supistettu muoto 8 suurin yhteinen tekijä 6,30 syklinen ryhmä 75 symmetrinen jäännössysteemi 11 symmetrinen kryptaus 1 syntymäpäivähyökkäys 94,101 tavun muuntaminen 36 tekijä 3,30 tekijöihinjako 5,7,47,58,69,113 tensoritulo 111 testijakoalgoritmi 58 tiedon hajautus 105 tietymätön tiedonsiirto 105 tiiviste 93 tiivistefunktio 93 todennusavain 99 todennusfunktio 99 toppaus 68 triviaali ryhmä 75 triviaali tekijä 3 Tshebyshevin lause 57 tunnistustehtävä 42 turvallinen alkuluku 68 täydellinen nollatietotodistus 106 törmäys 93 vaativuus 42 vahva satunnaisluku 62 vahva valealkuluku 57 vahvasti törmäyksetön 93 vaihdannainen operaatio 27,74 vaihdannainen ryhmä 74 venäläisten talonpoikien menetelmä 18 viestiavaruus 1,99 VIGENÈRE 24,26 Vigenèren kryptaus 24,26 vuokryptaus 1,41 välimieshyökkäys 118 Williamsin p+1-algoritmi 58 XTR 47,88 yhdistetty luku 4 ykkösalkio 27,74 yksiköiden ryhmä 75 yksisuuntainen funktio 45,93

135 Hakemisto 130 ylisingulaarinen 79,87 äärellinen kunta 32

Lukuteorian kertausta

Lukuteorian kertausta Lukuteorian kertausta Jakoalgoritmi Jos a, b Z ja b 0, niin on olemassa sellaiset yksikäsitteiset kokonaisluvut q ja r, että a = qb+r, missä 0 r < b. Esimerkki 1: Jos a = 60 ja b = 11, niin 60 = 5 11 +

Lisätiedot

a b 1 c b n c n

a b 1 c b n c n Algebra Syksy 2007 Harjoitukset 1. Olkoon a Z. Totea, että aina a 0, 1 a, a a ja a a. 2. Olkoot a, b, c, d Z. Todista implikaatiot: a) a b ja c d ac bd, b) a b ja b c a c. 3. Olkoon a b i kaikilla i =

Lisätiedot

Matematiikan mestariluokka, syksy 2009 7

Matematiikan mestariluokka, syksy 2009 7 Matematiikan mestariluokka, syksy 2009 7 2 Alkuluvuista 2.1 Alkuluvut Määritelmä 2.1 Positiivinen luku a 2 on alkuluku, jos sen ainoat positiiviset tekijät ovat 1 ja a. Jos a 2 ei ole alkuluku, se on yhdistetty

Lisätiedot

3. Kongruenssit. 3.1 Jakojäännös ja kongruenssi

3. Kongruenssit. 3.1 Jakojäännös ja kongruenssi 3. Kongruenssit 3.1 Jakojäännös ja kongruenssi Tässä kappaleessa esitellään kokonaislukujen modulaarinen aritmetiikka (ns. kellotauluaritmetiikka), jossa luvut tyypillisesti korvataan niillä jakojäännöksillä,

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 6. Alkeislukuteoria 6.1 Jaollisuus Käsitellään kokonaislukujen perusominaisuuksia: erityisesti jaollisuutta Käytettävät lukujoukot: Luonnolliset luvut IN = {0,1,2,3,...

Lisätiedot

ALKULUKUJA JA MELKEIN ALKULUKUJA

ALKULUKUJA JA MELKEIN ALKULUKUJA ALKULUKUJA JA MELKEIN ALKULUKUJA MINNA TUONONEN Versio: 12. heinäkuuta 2011. 1 2 MINNA TUONONEN Sisältö 1. Johdanto 3 2. Tutkielmassa tarvittavia määritelmiä ja apulauseita 4 3. Mersennen alkuluvut ja

Lisätiedot

PERUSASIOITA ALGEBRASTA

PERUSASIOITA ALGEBRASTA PERUSASIOITA ALGEBRASTA Matti Lehtinen Tässä luetellut lauseet ja käsitteet kattavat suunnilleen sen mitä algebrallisissa kilpatehtävissä edellytetään. Ns. algebrallisia struktuureja jotka ovat nykyaikaisen

Lisätiedot

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2 Tekijä Pitkä matematiikka 11 0..017 170 a) Koska 8 = 4 7, luku 8 on jaollinen luvulla 4. b) Koska 104 = 4 6, luku 104 on jaollinen luvulla 4. c) Koska 4 0 = 80 < 8 ja 4 1 = 84 > 8, luku 8 ei ole jaollinen

Lisätiedot

MAT-41150 Algebra I (s) periodilla IV 2012 Esko Turunen

MAT-41150 Algebra I (s) periodilla IV 2012 Esko Turunen MAT-41150 Algebra I (s) periodilla IV 2012 Esko Turunen Tehtävä 1. Onko joukon X potenssijoukon P(X) laskutoimitus distributiivinen laskutoimituksen suhteen? Onko laskutoimitus distributiivinen laskutoimituksen

Lisätiedot

LUKUTEORIAN ALKEET HELI TUOMINEN

LUKUTEORIAN ALKEET HELI TUOMINEN LUKUTEORIAN ALKEET HELI TUOMINEN Sisältö 1. Lukujärjestelmät 2 1.1. Kymmenjärjestelmä 2 1.2. Muita lukujärjestelmiä 2 1.3. Yksikäsitteisyyslause 4 2. Alkulukuteoriaa 6 2.1. Jaollisuus 6 2.2. Suurin yhteinen

Lisätiedot

LUKUTEORIA johdantoa

LUKUTEORIA johdantoa LUKUTEORIA johdantoa LUKUTEORIA JA TODISTAMINEN, MAA11 Lukuteorian tehtävä: Lukuteoria tutkii kokonaislukuja, niiden ominaisuuksia ja niiden välisiä suhteita. Kokonaislukujen maailma näyttää yksinkertaiselta,

Lisätiedot

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Liisa Ilonen. Primitiiviset juuret

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Liisa Ilonen. Primitiiviset juuret TAMPEREEN YLIOPISTO Pro gradu -tutkielma Liisa Ilonen Primitiiviset juuret Matematiikan ja tilastotieteen laitos Matematiikka Joulukuu 2009 Tampereen yliopisto Matematiikan ja tilastotieteen laitos ILONEN,

Lisätiedot

Merkitse kertolasku 3 3 3 3 potenssin avulla ja laske sen arvo.

Merkitse kertolasku 3 3 3 3 potenssin avulla ja laske sen arvo. 13 Luvun potenssi Kertolasku, jonka kaikki tekijät ovat samoja, voidaan merkitä lyhyemmin potenssin avulla. Potenssimerkinnässä eksponentti ilmaisee, kuinka monta kertaa kantaluku esiintyy tulossa. Potenssin

Lisätiedot

rm + sn = d. Siispä Proposition 9.5(4) nojalla e d.

rm + sn = d. Siispä Proposition 9.5(4) nojalla e d. 9. Renkaat Z ja Z/qZ Tarkastelemme tässä luvussa jaollisuutta kokonaislukujen renkaassa Z ja todistamme tuloksia, joita käytetään jäännösluokkarenkaan Z/qZ ominaisuuksien tarkastelussa. Jos a, b, c Z ovat

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 1 1 Matemaattisesta päättelystä Matemaattisen analyysin kurssin (kuten minkä tahansa matematiikan kurssin) seuraamista helpottaa huomattavasti, jos opiskelija ymmärtää

Lisätiedot

Suurin yhteinen tekijä (s.y.t.) ja pienin yhteinen monikerta (p.y.m.)

Suurin yhteinen tekijä (s.y.t.) ja pienin yhteinen monikerta (p.y.m.) Suurin yhteinen tekijä (s.y.t.) ja pienin yhteinen monikerta (p.y.m.) LUKUTEORIA JA TODISTAMINEN, MAA11 Määritelmä, yhteinen tekijä ja suurin yhteinen tekijä: Annettujen lukujen a ja b yhteinen tekijä

Lisätiedot

1 Lukujen jaollisuudesta

1 Lukujen jaollisuudesta Matematiikan mestariluokka, syksy 2009 1 1 Lukujen jaollisuudesta Lukujoukoille käytetään seuraavia merkintöjä: N = {1, 2, 3, 4,... } Luonnolliset luvut Z = {..., 2, 1, 0, 1, 2,... } Kokonaisluvut Kun

Lisätiedot

on Abelin ryhmä kertolaskun suhteen. Tämän joukon alkioiden lukumäärää merkitään

on Abelin ryhmä kertolaskun suhteen. Tämän joukon alkioiden lukumäärää merkitään 5. Primitiivinen alkio 5.1. Täydennystä lukuteoriaan. Olkoon n Z, n 2. Palautettakoon mieleen, että kokonaislukujen jäännösluokkarenkaan kääntyvien alkioiden muodostama osajoukko Z n := {x Z n x on kääntyvä}

Lisätiedot

Mitään muita operaatioita symbolille ei ole määritelty! < a kaikilla kokonaisluvuilla a, + a = kaikilla kokonaisluvuilla a.

Mitään muita operaatioita symbolille ei ole määritelty! < a kaikilla kokonaisluvuilla a, + a = kaikilla kokonaisluvuilla a. Polynomit Tarkastelemme polynomirenkaiden teoriaa ja polynomiyhtälöiden ratkaisemista. Algebrassa on tapana pitää erillään polynomin ja polynomifunktion käsitteet. Polynomit Tarkastelemme polynomirenkaiden

Lisätiedot

+ 3 2 5 } {{ } + 2 2 2 5 2. 2 kertaa jotain

+ 3 2 5 } {{ } + 2 2 2 5 2. 2 kertaa jotain Jaollisuustestejä (matematiikan mestariluokka, 7.11.2009, ohjattujen harjoitusten lopputuloslappu) Huom! Nämä eivät tietenkään ole ainoita jaollisuussääntöjä; ovatpahan vain hyödyllisiä ja ainakin osittain

Lisätiedot

R : renkaan R kääntyvien alkioiden joukko; R kertolaskulla varustettuna on

R : renkaan R kääntyvien alkioiden joukko; R kertolaskulla varustettuna on 0. Kertausta ja täydennystä Kurssille Äärelliset kunnat tarvittavat esitiedot löytyvät Algebran kurssista [Alg]. Hyödyksi voivat myös olla (vaikka eivät välttämättömiä) Lukuteorian alkeet [LTA] ja Salakirjoitukset

Lisätiedot

RSA Julkisen avaimen salakirjoitusmenetelmä

RSA Julkisen avaimen salakirjoitusmenetelmä RSA Julkisen avaimen salakirjoitusmenetelmä Perusteet, algoritmit, hyökkäykset Matti K. Sinisalo, FL Alkuluvut Alkuluvuilla tarkoitetaan lukua 1 suurempia kokonaislukuja, jotka eivät ole tasan jaollisia

Lisätiedot

2017 = = = = = = 26 1

2017 = = = = = = 26 1 JOHDATUS LUKUTEORIAAN (syksy 2017) HARJOITUS 2, MALLIRATKAISUT Tehtävä 1. Sovella Eukleiden algoritmia ja (i) etsi s.y.t(2017, 753) (ii) etsi kaikki kokonaislukuratkaisut yhtälölle 405x + 141y = 12. Ratkaisu

Lisätiedot

802328A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III. Tapani Matala-aho MATEMATIIKKA/LUTK/OULUN YLIOPISTO

802328A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III. Tapani Matala-aho MATEMATIIKKA/LUTK/OULUN YLIOPISTO 8038A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III Tapani Matala-aho MATEMATIIKKA/LUTK/OULUN YLIOPISTO SYKSY 016 Sisältö 1 Irrationaaliluvuista Antiikin lukuja 6.1 Kolmio- neliö- ja tetraedriluvut...................

Lisätiedot

d Z + 17 Viimeksi muutettu

d Z + 17 Viimeksi muutettu 5. Diffien ja Hellmanin avaintenvaihto Miten on mahdollista välittää salatun viestin avaamiseen tarkoitettu avain Internetin kaltaisen avoimen liikennöintiväylän kautta? Kuka tahansahan voi (ainakin periaatteessa)

Lisätiedot

Liite 2. Ryhmien ja kuntien perusteet

Liite 2. Ryhmien ja kuntien perusteet Liite 2. Ryhmien ja kuntien perusteet 1. Ryhmät 1.1 Johdanto Erilaisissa matematiikan probleemoissa törmätään usein muotoa a + x = b tai a x = b oleviin yhtälöihin, joissa tuntematon muuttuja on x. Lukujoukkoja

Lisätiedot

a b c d + + + + + + + + +

a b c d + + + + + + + + + 28. 10. 2010!"$#&%(')'+*(#-,.*/1032/465$*784 /(9:*;9."$ *;5> *@9 a b c d 1. + + + 2. 3. 4. 5. 6. + + + + + + + + + + P1. Valitaan kannaksi sivu, jonka pituus on 4. Koska toinen jäljelle jäävistä sivuista

Lisätiedot

a k+1 = 2a k + 1 = 2(2 k 1) + 1 = 2 k+1 1. xxxxxx xxxxxx xxxxxx xxxxxx

a k+1 = 2a k + 1 = 2(2 k 1) + 1 = 2 k+1 1. xxxxxx xxxxxx xxxxxx xxxxxx x x x x x x x x Matematiikan johdantokurssi, syksy 08 Harjoitus, ratkaisuista Hanoin tornit -ongelma: Tarkastellaan kolmea pylvästä A, B ja C, joihin voidaan pinota erikokoisia renkaita Lähtötilanteessa

Lisätiedot

802328A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III

802328A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III 802328A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III Tapani Matala-aho MATEMATIIKKA/LUTK/OULUN YLIOPISTO SYKSY 2016 LUKUTEORIA 1 / 77 Irrationaaliluvuista Määritelmä 1 Luku α C \ Q on

Lisätiedot

Nopea kertolasku, Karatsuban algoritmi

Nopea kertolasku, Karatsuban algoritmi Nopea kertolasku, Karatsuban algoritmi Mikko Männikkö 16.8.2004 Lähde: ((Gathen and Gerhard 1999) luku II.8) Esityksen kulku Algoritmien analysointia (1), (2), (3), (4) Klassinen kertolasku Parempi tapa

Lisätiedot

KRYPTOLOGIA. Keijo Ruohonen

KRYPTOLOGIA. Keijo Ruohonen KRYPTOLOGIA Keijo Ruohonen 2004 Sisältö 1 IJOHDANTO 3 II EKSKURSIO LUKUTEORIAAN 1 3 2.1 Jaollisuus, tekijät, alkuluvut 5 2.2 Kokonaisluvun esitys eri kannoissa 6 2.3 Suurin yhteinen tekijä ja pienin yhteinen

Lisätiedot

Primitiiviset juuret: teoriaa ja sovelluksia

Primitiiviset juuret: teoriaa ja sovelluksia TAMPEREEN YLIOPISTO Pro gradu -tutkielma Outi Sutinen Primitiiviset juuret: teoriaa ja sovelluksia Matematiikan, tilastotieteen ja filosofian laitos Matematiikka Huhtikuu 2006 Tampereen yliopisto Matematiikan,

Lisätiedot

MS-A0402 Diskreetin matematiikan perusteet

MS-A0402 Diskreetin matematiikan perusteet MS-A0402 Diskreetin matematiikan perusteet Osa 4: Modulaariaritmetiikka Riikka Kangaslampi 2017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Modulaariaritmetiikka Jakoyhtälö Määritelmä 1 Luku

Lisätiedot

7. Olemassaolo ja yksikäsitteisyys Galois n kunta GF(q) = F q, jossa on q alkiota, määriteltiin jäännösluokkarenkaaksi

7. Olemassaolo ja yksikäsitteisyys Galois n kunta GF(q) = F q, jossa on q alkiota, määriteltiin jäännösluokkarenkaaksi 7. Olemassaolo ja yksikäsitteisyys Galois n kunta GF(q) = F q, jossa on q alkiota, määriteltiin jäännösluokkarenkaaksi Z p [x]/(m), missä m on polynomirenkaan Z p [x] jaoton polynomi (ks. määritelmä 3.19).

Lisätiedot

Nimittäin, koska s k x a r mod (p 1), saadaan Fermat n pienen lauseen avulla

Nimittäin, koska s k x a r mod (p 1), saadaan Fermat n pienen lauseen avulla 6. Digitaalinen allekirjoitus Digitaalinen allekirjoitus palvelee samaa tarkoitusta kuin perinteinen käsin kirjotettu allekirjoitus, t.s. Liisa allekirjoittaessaan Pentille lähettämän viestin, hän antaa

Lisätiedot

Salausmenetelmät. Veikko Keränen, Jouko Teeriaho (RAMK, 2006)

Salausmenetelmät. Veikko Keränen, Jouko Teeriaho (RAMK, 2006) Salausmenetelmät Veikko Keränen, Jouko Teeriaho (RAMK, 2006) LUKUTEORIAA JA ALGORITMEJA 3. Kongruenssit à 3.1 Jakojäännös ja kongruenssi Määritelmä 3.1 Kaksi lukua a ja b ovat keskenään kongruentteja (tai

Lisätiedot

Teema 4. Homomorfismeista Ihanne ja tekijärengas. Teema 4 1 / 32

Teema 4. Homomorfismeista Ihanne ja tekijärengas. Teema 4 1 / 32 1 / 32 Esimerkki 4A.1 Esimerkki 4A.2 Esimerkki 4B.1 Esimerkki 4B.2 Esimerkki 4B.3 Esimerkki 4C.1 Esimerkki 4C.2 Esimerkki 4C.3 2 / 32 Esimerkki 4A.1 Esimerkki 4A.1 Esimerkki 4A.2 Esimerkki 4B.1 Esimerkki

Lisätiedot

Shorin algoritmin matematiikkaa Edvard Fagerholm

Shorin algoritmin matematiikkaa Edvard Fagerholm Edvard Fagerholm 1 Määritelmiä Määritelmä 1 Ryhmä G on syklinen, jos a G s.e. G = a. Määritelmä 2 Olkoon G ryhmä. Tällöin alkion a G kertaluku ord(a) on pienin luku n N \ {0}, jolla a n = 1. Jos lukua

Lisätiedot

Määritelmä, alkuluku/yhdistetty luku: Esimerkki . c) Huomautus Määritelmä, alkutekijä: Esimerkki

Määritelmä, alkuluku/yhdistetty luku: Esimerkki . c) Huomautus Määritelmä, alkutekijä: Esimerkki Alkuluvut LUKUTEORIA JA TODISTAMINEN, MAA11 Jokainen luku 0 on jaollinen ainakin itsellään, vastaluvullaan ja luvuilla ±1. Kun muita eri ole, niin kyseinen luku on alkuluku. Määritelmä, alkuluku/yhdistetty

Lisätiedot

kaikille a R. 1 (R, +) on kommutatiivinen ryhmä, 2 a(b + c) = ab + ac ja (b + c)a = ba + ca kaikilla a, b, c R, ja

kaikille a R. 1 (R, +) on kommutatiivinen ryhmä, 2 a(b + c) = ab + ac ja (b + c)a = ba + ca kaikilla a, b, c R, ja Renkaat Tarkastelemme seuraavaksi rakenteita, joissa on määritelty kaksi binääristä assosiatiivista laskutoimitusta, joista toinen on kommutatiivinen. Vaadimme muuten samat ominaisuudet kuin kokonaisluvuilta,

Lisätiedot

ja jäännösluokkien joukkoa

ja jäännösluokkien joukkoa 3. Polynomien jäännösluokkarenkaat Olkoon F kunta, ja olkoon m F[x]. Polynomeille f, g F [x] määritellään kongruenssi(-relaatio) asettamalla g f mod m : m g f g = f + m h jollekin h F [x]. Kongruenssi

Lisätiedot

H = : a, b C M. joten jokainen A H {0} on kääntyvä matriisi. Itse asiassa kaikki nollasta poikkeavat alkiot ovat yksiköitä, koska. a b.

H = : a, b C M. joten jokainen A H {0} on kääntyvä matriisi. Itse asiassa kaikki nollasta poikkeavat alkiot ovat yksiköitä, koska. a b. 10. Kunnat ja kokonaisalueet Määritelmä 10.1. Olkoon K rengas, jossa on ainakin kaksi alkiota. Jos kaikki renkaan K nollasta poikkeavat alkiot ovat yksiköitä, niin K on jakorengas. Kommutatiivinen jakorengas

Lisätiedot

Algebra I, harjoitus 5,

Algebra I, harjoitus 5, Algebra I, harjoitus 5, 7.-8.10.2014. 1. 2 Osoita väitteet oikeiksi tai vääriksi. a) (R, ) on ryhmä, kun asetetaan a b = 2(a + b) aina, kun a, b R. (Tässä + on reaalilukujen tavallinen yhteenlasku.) b)

Lisätiedot

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Jukka Vilen. Polynomirenkaista

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Jukka Vilen. Polynomirenkaista TAMPEREEN YLIOPISTO Pro gradu -tutkielma Jukka Vilen Polynomirenkaista Informaatiotieteiden tiedekunta Matematiikan, tilastotieteen ja filosofian laitos Matematiikka Kesäkuu 2005 Tampereen yliopisto Matematiikan,

Lisätiedot

Alkulukujen harmoninen sarja

Alkulukujen harmoninen sarja Alkulukujen harmoninen sarja LuK-tutkielma Markus Horneman Oiskelijanumero:2434548 Matemaattisten tieteiden laitos Oulun ylioisto Syksy 207 Sisältö Johdanto 2 Hyödyllisiä tuloksia ja määritelmiä 3. Alkuluvuista............................

Lisätiedot

R 1 = Q 2 R 2 + R 3,. (2.1) R l 2 = Q l 1 R l 1 + R l,

R 1 = Q 2 R 2 + R 3,. (2.1) R l 2 = Q l 1 R l 1 + R l, 2. Laajennettu Eukleideen algoritmi Määritelmä 2.1. Olkoot F kunta ja A, B, C, D F [x]. Sanotaan, että C jakaa A:n (tai C on A:n jakaja), jos on olemassa K F [x] siten, että A = K C; tällöin merkitään

Lisätiedot

Funktioiden approksimointi ja interpolointi

Funktioiden approksimointi ja interpolointi Funktioiden approksimointi ja interpolointi Keijo Ruotsalainen Division of Mathematics interpolaatio-ongelma 8 Eksponenttifunktion exp(x) interpolointi 3.5 Funktion e^{0.25x} \sin(x) interpolointi 7 3

Lisätiedot

Neljän alkion kunta, solitaire-peli ja

Neljän alkion kunta, solitaire-peli ja Neljän alkion kunta, solitaire-peli ja taikaneliöt Kalle Ranto ja Petri Rosendahl Matematiikan laitos, Turun yliopisto Nykyisissä tietoliikennesovelluksissa käytetään paljon tekniikoita, jotka perustuvat

Lisätiedot

[a] ={b 2 A : a b}. Ekvivalenssiluokkien joukko

[a] ={b 2 A : a b}. Ekvivalenssiluokkien joukko 3. Tekijälaskutoimitus, kokonaisluvut ja rationaaliluvut Tässä luvussa tutustumme kolmanteen tapaan muodostaa laskutoimitus joukkoon tunnettujen laskutoimitusten avulla. Tätä varten määrittelemme ensin

Lisätiedot

Salakirjoitusmenetelmiä

Salakirjoitusmenetelmiä Salakirjoitusmenetelmiä LUKUTEORIA JA LOGIIKKA, MAA 11 Salakirjoitusten historia on tuhansia vuosia pitkä. On ollut tarve lähettää viestejä, joiden sisältö ei asianomaisen mielestä saanut tulla ulkopuolisten

Lisätiedot

Juuri 11 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

Juuri 11 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Kertaus K1. a) 72 = 2 36 = 2 2 18 = 2 2 2 9 = 2 2 2 3 3 = 2 3 3 2 252 = 2 126 = 2 2 63 = 2 2 3 21 = 2 2 3 3 7 = 2 2 3 2 7 syt(72, 252) = 2 2 3 2 = 36 b) 252 = 72 3 + 36 72 = 36 2 syt(72, 252) = 36 c) pym(72,

Lisätiedot

2 Yhtälöitä ja epäyhtälöitä

2 Yhtälöitä ja epäyhtälöitä 2 Yhtälöitä ja epäyhtälöitä 2.1 Ensimmäisen asteen yhtälö ja epäyhtälö Muuttujan x ensimmäisen asteen yhtälöksi sanotaan yhtälöä, joka voidaan kirjoittaa muotoon ax + b = 0, missä vakiot a ja b ovat reaalilukuja

Lisätiedot

LAUSEKKEET JA NIIDEN MUUNTAMINEN

LAUSEKKEET JA NIIDEN MUUNTAMINEN LAUSEKKEET JA NIIDEN MUUNTAMINEN 1 LUKULAUSEKKEITA Ratkaise seuraava tehtävä: Retkeilijät ajoivat kahden tunnin ajan polkupyörällä maantietä pitkin 16 km/h nopeudella, ja sitten vielä kävelivät metsäpolkua

Lisätiedot

Diofantoksen yhtälön ratkaisut

Diofantoksen yhtälön ratkaisut Diofantoksen yhtälön ratkaisut Matias Mäkelä Matemaattisten tieteiden tutkinto-ohjelma Oulun yliopisto Kevät 2017 Sisältö Johdanto 2 1 Suurin yhteinen tekijä 2 2 Eukleideen algoritmi 4 3 Diofantoksen yhtälön

Lisätiedot

Rationaaliluvun desimaaliesitys algebrallisesta ja lukuteoreettisesta näkökulmasta

Rationaaliluvun desimaaliesitys algebrallisesta ja lukuteoreettisesta näkökulmasta TAMPEREEN YLIOPISTO Pro gradu -tutkielma Liisa Lampinen Rationaaliluvun desimaaliesitys algebrallisesta ja lukuteoreettisesta näkökulmasta Informaatiotieteiden yksikkö Matematiikka Kesäkuu 2016 Tampereen

Lisätiedot

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 3 (9 sivua) OT

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 3 (9 sivua) OT Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 3 (9 sivua) 31.1.-4.2.2011 OT 1. Määritellään kokonaisluvuille laskutoimitus n m = n + m + 5. Osoita, että (Z, ) on ryhmä.

Lisätiedot

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/81

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/81 Matikkapaja keskiviikkoisin klo 14-16 Lineaarialgebra (muut ko) p. 1/81 Lineaarialgebra (muut ko) p. 2/81 Operaatiot Vektoreille u = (u 1,u 2 ) ja v = (v 1,v 2 ) Yhteenlasku: u+v = (u 1 +v 1,u 2 +v 2 )

Lisätiedot

x j x k Tällöin L j (x k ) = 0, kun k j, ja L j (x j ) = 1. Alkuperäiselle interpolaatio-ongelmalle saadaan nyt ratkaisu

x j x k Tällöin L j (x k ) = 0, kun k j, ja L j (x j ) = 1. Alkuperäiselle interpolaatio-ongelmalle saadaan nyt ratkaisu 2 Interpolointi Olkoon annettuna n+1 eri pistettä x 0, x 1, x n R ja n+1 lukua y 0, y 1,, y n Interpoloinnissa etsitään funktiota P, joka annetuissa pisteissä x 0,, x n saa annetut arvot y 0,, y n, (21)

Lisätiedot

Kryptologia Esitelmä

Kryptologia Esitelmä Kryptologia p. 1/28 Kryptologia Esitelmä 15.4.2011 Keijo Ruohonen [email protected] Kryptologia p. 2/28 Kryptologian termejä Kryptaus: Tiedon salaus käyttäen avainta Dekryptaus: Salauksen purku käyttäen

Lisätiedot

Numeeriset menetelmät

Numeeriset menetelmät Numeeriset menetelmät Luento 14 To 20.10.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 1/39 p. 1/39 Nopeat Fourier-muunnokset Diskreetti Fourier-muunnos ˆf k = 1 N 1 N

Lisätiedot

1 Algebralliset perusteet

1 Algebralliset perusteet 1 Algebralliset perusteet 1.1 Renkaat Tämän luvun jälkeen opiskelijoiden odotetaan muistavan, mitä ovat renkaat, vaihdannaiset renkaat, alirenkaat, homomorfismit, ideaalit, tekijärenkaat, maksimaaliset

Lisätiedot

1 Lineaariavaruus eli Vektoriavaruus

1 Lineaariavaruus eli Vektoriavaruus 1 Lineaariavaruus eli Vektoriavaruus 1.1 Määritelmä ja esimerkkejä Olkoon K kunta, jonka nolla-alkio on 0 ja ykkösalkio on 1 sekä V epätyhjä joukko. Oletetaan, että joukossa V on määritelty laskutoimitus

Lisätiedot

1 sup- ja inf-esimerkkejä

1 sup- ja inf-esimerkkejä Alla olevat kohdat (erityisesti todistukset) ovat lähinnä oheislukemista reaaliluvuista, mutta joihinkin niistä palataan myöhemmin kurssilla. 1 sup- ja inf-esimerkkejä Nollakohdan olemassaolo. Kaikki tuntevat

Lisätiedot

FUNKTIONAALIANALYYSIN PERUSKURSSI 1. 0. Johdanto

FUNKTIONAALIANALYYSIN PERUSKURSSI 1. 0. Johdanto FUNKTIONAALIANALYYSIN PERUSKURSSI 1. Johdanto Funktionaalianalyysissa tutkitaan muun muassa ääretönulotteisten vektoriavaruuksien, ja erityisesti täydellisten normiavaruuksien eli Banach avaruuksien ominaisuuksia.

Lisätiedot

2 j =

2 j = 1. Modulaariaritmetiikkaa Yksinkertaisissa salausjärjestelmissä käytettävä matematiikka on paljolti lukuteoriaan pohjautuvaa suurten lukujen modulaariaritmetiikkaa (lasketaan kokonaisluvuilla modulo n).

Lisätiedot

Luentorunko ja harjoitustehtävät. SALAUSMENETELMÄT (801346A) 4 op, 2 ov

Luentorunko ja harjoitustehtävät. SALAUSMENETELMÄT (801346A) 4 op, 2 ov Luentorunko ja harjoitustehtävät SALAUSMENETELMÄT (801346A) 4 op, 2 ov Keijo Väänänen I JOHDANTO Salakirjoitukset kurssilla tarkastelemme menetelmiä, jotka mahdollistavat tiedon siirtämisen tai tallentamisen

Lisätiedot

Lukuteoria. Eukleides Aleksandrialainen (n. 300 eaa)

Lukuteoria. Eukleides Aleksandrialainen (n. 300 eaa) Lukuteoria Lukuteoria on eräs vanhimmista matematiikan aloista. On sanottu, että siinä missä matematiikka on tieteiden kuningatar, on lukuteoria matematiikan kuningatar. Perehdymme seuraavassa luonnollisten

Lisätiedot

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Jussi Tervaniemi. Primitiiviset juuret

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Jussi Tervaniemi. Primitiiviset juuret TAMPEREEN YLIOPISTO Pro gradu -tutkielma Jussi Tervaniemi Primitiiviset juuret Matematiikan, tilastotieteen ja filosofian laitos Matematiikka Heinäkuu 2006 Sisältö Johdanto 3 1 Lukuteorian peruskäsitteitä

Lisätiedot

Kokonaislukuoptimointi

Kokonaislukuoptimointi Kokonaislukuoptimointi Algebrallisen geometrian sovelluksia Sisältö Taustaa algebrallisesta geometriasta Gröbnerin kanta Buchbergerin algoritmi Kokonaislukuoptimointi Käypyysongelma Algoritmi ratkaisun

Lisätiedot

k=1 b kx k K-kertoimisia polynomeja, P (X)+Q(X) = (a k + b k )X k n+m a i b j X k. i+j=k k=0

k=1 b kx k K-kertoimisia polynomeja, P (X)+Q(X) = (a k + b k )X k n+m a i b j X k. i+j=k k=0 1. Polynomit Tässä luvussa tarkastelemme polynomien muodostamia renkaita polynomien ollisuutta käsitteleviä perustuloksia. Teemme luvun alkuun kaksi sopimusta: Tässä luvussa X on muodollinen symboli, jota

Lisätiedot

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus. Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus. Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden

Lisätiedot

(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =

(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = = JOHDATUS LUKUTEORIAAN (syksy 07) HARJOITUS 7, MALLIRATKAISUT Tehtävä Etsi seuraavien rationaalilukujen ketjumurtokehitelmät: (i) 7 6 (ii) 4 7 (iii) 65 74 (iv) 63 74 Ratkaisu Sovelletaan Eukleideen algoritmia

Lisätiedot

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen. Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus. Tietyn ominaisuuden samuus -relaatio on ekvivalenssi; se on (1) refleksiivinen,

Lisätiedot

Rollen lause polynomeille

Rollen lause polynomeille Rollen lause polynomeille LuK-tutkielma Anna-Helena Hietamäki 7193766 Matemaattisten tieteiden tutkinto-ohjelma Oulun yliopisto Kevät 015 Sisältö 1 Johdanto 1.1 Rollen lause analyysissä.......................

Lisätiedot

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten Ratkaisuehdotelma Tehtävä 1 1. Etsi lukujen 4655 ja 12075 suurin yhteinen tekijä ja lausu se kyseisten lukujen lineaarikombinaationa ilman laskimen

Lisätiedot

pdfmark=/pages, Raw=/Rotate 90 1 LUKUTEORIAA JA MUITA TYÖKALUJA SALAUKSEEN Lukujoukot Sekalaisia merkintöjä...

pdfmark=/pages, Raw=/Rotate 90 1 LUKUTEORIAA JA MUITA TYÖKALUJA SALAUKSEEN Lukujoukot Sekalaisia merkintöjä... pdfmark=/pages, Raw=/Rotate 90 Sisältö 1 LUKUTEORIAA JA MUITA TYÖKALUJA SALAUKSEEN 0-2 2 Merkintöjä 0-3 2.1 Lukujoukot................... 0-3 2.2 Sekalaisia merkintöjä.............. 0-4 2.3 Tärkeitä kaavoja................

Lisätiedot

Lineaariset kongruenssiyhtälöryhmät

Lineaariset kongruenssiyhtälöryhmät Lineaariset kongruenssiyhtälöryhmät LuK-tutkielma Jesse Salo 2309369 Matemaattisten tieteiden laitos Oulun yliopisto Sisältö Johdanto 2 1 Kongruensseista 3 1.1 Kongruenssin ominaisuuksia...................

Lisätiedot

802354A Algebran perusteet Luentorunko Kevät Työryhmä: Markku Niemenmaa, Kari Myllylä, Topi Törmä

802354A Algebran perusteet Luentorunko Kevät Työryhmä: Markku Niemenmaa, Kari Myllylä, Topi Törmä 802354A Algebran perusteet Luentorunko Kevät 2018 Työryhmä: Markku Niemenmaa, Kari Myllylä, Topi Törmä Sisältö 1 Lukuteoriaa 3 1.1 Jakoalgoritmi ja alkuluvut.................... 3 1.2 Suurin yhteinen tekijä......................

Lisätiedot

XXIII Keski-Suomen lukiolaisten matematiikkakilpailu 23.1.2014, tehtävien ratkaisut

XXIII Keski-Suomen lukiolaisten matematiikkakilpailu 23.1.2014, tehtävien ratkaisut XXIII Keski-Suomen lukiolaisten matematiikkakilpailu 23.1.2014, tehtävien ratkaisut 1. Avaruusalus sijaitsee tason origossa (0, 0) ja liikkuu siitä vakionopeudella johonkin suuntaan, joka ei muutu. Tykki

Lisätiedot

802354A Algebran perusteet Luentorunko Kevät Työryhmä: Markku Niemenmaa, Kari Myllylä, Topi Törmä

802354A Algebran perusteet Luentorunko Kevät Työryhmä: Markku Niemenmaa, Kari Myllylä, Topi Törmä 802354A Algebran perusteet Luentorunko Kevät 2017 Työryhmä: Markku Niemenmaa, Kari Myllylä, Topi Törmä Sisältö 1 Lukuteoriaa 3 1.1 Jakoalgoritmi ja alkuluvut.................... 3 1.2 Suurin yhteinen tekijä......................

Lisätiedot

w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1.

w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1. Kotitehtävät, tammikuu 2011 Vaikeampi sarja 1. Ratkaise yhtälöryhmä w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1. Ratkaisu. Yhtälöryhmän ratkaisut (w, x, y, z)

Lisätiedot

Eulerin lauseen merkitys kryptauksen kannalta

Eulerin lauseen merkitys kryptauksen kannalta Eulerin lauseen merkitys kryptauksen kannalta Pro gradu -tutkielma Juho Parviainen 180911 Fysiikan ja matematiikan laitos Itä-Suomen yliopisto 13.11.2015 Sisältö 1 Johdanto 3 2 Lukuteoria 4 2.1 Jaollisuus.............................

Lisätiedot

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Tuntitehtävät 9-10 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 13-14 loppuviikon harjoituksissa. Kotitehtävät 11-12 tarkastetaan loppuviikon

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 2. Lukujen esittäminen ja aritmetiikka 2.1 Kantajärjestelmät ja lukujen esittäminen Käytettävät lukujoukot: Luonnolliset luvut IN = {0,1,2,3,... } Positiiviset kokonaisluvut

Lisätiedot

Liite 1. Laajennettu Eukleideen algoritmi suoraviivainen tapa

Liite 1. Laajennettu Eukleideen algoritmi suoraviivainen tapa Liite 1. Laajennettu Eukleideen algoritmi suoraviivainen tapa - johdanto - matemaattinen induktiotodistus - matriisien kertolaskun käyttömahdollisuus - käsinlaskuesimerkkejä - kaikki välivaiheet esittävä

Lisätiedot

Kuvauksista ja relaatioista. Jonna Makkonen Ilari Vallivaara

Kuvauksista ja relaatioista. Jonna Makkonen Ilari Vallivaara Kuvauksista ja relaatioista Jonna Makkonen Ilari Vallivaara 20. lokakuuta 2004 Sisältö 1 Esipuhe 2 2 Kuvauksista 3 3 Relaatioista 8 Lähdeluettelo 12 1 1 Esipuhe Joukot ja relaatiot ovat periaatteessa äärimmäisen

Lisätiedot

Jokainen kokonaisluku n voidaan esittää muodossa (missä d on positiivinen kok.luku) Tässä q ja r ovat kokonaislukuja ja 0 r < d.

Jokainen kokonaisluku n voidaan esittää muodossa (missä d on positiivinen kok.luku) Tässä q ja r ovat kokonaislukuja ja 0 r < d. Jakoyhtälö: Jokainen kokonaisluku n voidaan esittää muodossa (missä d on positiivinen kok.luku) n = d*q + r Tässä q ja r ovat kokonaislukuja ja 0 r < d. n = d * q + r number divisor quotient residue numero

Lisätiedot

4 Yleinen potenssifunktio ja polynomifunktio

4 Yleinen potenssifunktio ja polynomifunktio 4 Yleinen potenssifunktio ja polynomifunktio ENNAKKOTEHTÄVÄT 1. a) Tutkitaan yhtälöiden ratkaisuja piirtämällä funktioiden f(x) = x, f(x) = x 3, f(x) = x 4 ja f(x) = x 5 kuvaajat. Näin nähdään, monessako

Lisätiedot

Juuri 12 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

Juuri 12 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Juuri Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty 7.5.08 Kertaus K. a) Polynomi P() = + 8 on jaollinen polynomilla Q() =, jos = on polynomin P nollakohta, eli P() = 0. P() = + 8 = 54 08 +

Lisätiedot

1 Peruslaskuvalmiudet

1 Peruslaskuvalmiudet 1 Peruslaskuvalmiudet 11 Lukujoukot N {1,, 3, 4,} on luonnollisten lukujen joukko (0 mukana, jos tarvitaan), Z {, 3,, 1, 0, 1,, 3,} on kokonaislukujen joukko, Q m n : m, n Z, n 0 on rationaalilukujen joukko,

Lisätiedot

Matemaattisten menetelmien hallinnan tason testi.

Matemaattisten menetelmien hallinnan tason testi. Matemaattisten menetelmien hallinnan tason testi. Jokaisessa tehtävässä on vain yksi vaihtoehto oikein.. Laskutoimitusten a) yhteen- ja vähennyslaskun b) kerto- ja jakolaskun c) potenssiin korotuksen järjestys

Lisätiedot

Todistusmenetelmiä Miksi pitää todistaa?

Todistusmenetelmiä Miksi pitää todistaa? Todistusmenetelmiä Miksi pitää todistaa? LUKUTEORIA JA TO- DISTAMINEN, MAA11 Todistus on looginen päättelyketju, jossa oletuksista, määritelmistä, aksioomeista sekä aiemmin todistetuista tuloksista lähtien

Lisätiedot

1 Jakajat ja jäännökset. on hyvinjärjestetty, eli jokaisessa epätyhjässä joukossa J N on pienin alkio. Otetaan käyttöön merkintä

1 Jakajat ja jäännökset. on hyvinjärjestetty, eli jokaisessa epätyhjässä joukossa J N on pienin alkio. Otetaan käyttöön merkintä LUKUTEORIAA 1 Jakajat ja jäännökset Luonnollisten lukujen joukko N = { 0, 1, 2, 3,... } on hyvinjärjestetty, eli jokaisessa epätyhjässä joukossa J N on pienin alkio. Otetaan käyttöön merkintä Z + = {1,

Lisätiedot

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Ville-Matti Erkintalo. Lukuteoria ja RSA

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Ville-Matti Erkintalo. Lukuteoria ja RSA TAMPEREEN YLIOPISTO Pro gradu -tutkielma Ville-Matti Erkintalo Lukuteoria ja RSA Matematiikan ja tilastotieteen laitos Matematiikka Maaliskuu 2008 Tampereen yliopisto Matematiikan ja tilastotieteen laitos

Lisätiedot

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/210

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/210 Matikkapaja keskiviikkoisin klo 14-16 Lineaarialgebra (muut ko) p. 1/210 Lineaarialgebra (muut ko) p. 2/210 Operaatiot Vektoreille u = (u 1,u 2 ) ja v = (v 1,v 2 ) Yhteenlasku: u+v = (u 1 +v 1,u 2 +v 2

Lisätiedot

Fermat n pieni lause. Heikki Pitkänen. Matematiikan kandidaatintutkielma

Fermat n pieni lause. Heikki Pitkänen. Matematiikan kandidaatintutkielma Fermat n pieni lause Heikki Pitkänen Matematiikan kandidaatintutkielma Jyväskylän yliopisto Matematiikan ja tilastotieteen laitos Kevät 2009 Sisältö Johdanto 3 1. Fermat n pieni lause 3 2. Pseudoalkuluvut

Lisätiedot

LUKUTEORIA A. Harjoitustehtäviä, kevät 2013. (c) Osoita, että jos. niin. a c ja b c ja a b, niin. niin. (e) Osoita, että

LUKUTEORIA A. Harjoitustehtäviä, kevät 2013. (c) Osoita, että jos. niin. a c ja b c ja a b, niin. niin. (e) Osoita, että LUKUTEORIA A Harjoitustehtäviä, kevät 2013 1. Olkoot a, b, c Z, p P ja k, n Z +. (a) Osoita, että jos niin Osoita, että jos niin (c) Osoita, että jos niin (d) Osoita, että (e) Osoita, että a bc ja a c,

Lisätiedot

Alkulukujen teoriaa ja Goldbachin otaksuma

Alkulukujen teoriaa ja Goldbachin otaksuma TAMPEREEN YLIOPISTO Pro gradu -tutkielma Teemu Lehtonen Alkulukujen teoriaa ja Goldbachin otaksuma Matematiikan, tilastotieteen ja losoan laitos Matematiikka Maaliskuu 2004 Sisältö 1 Johdanto 2 2 Alkuluvuista

Lisätiedot

6*. MURTOFUNKTION INTEGROINTI

6*. MURTOFUNKTION INTEGROINTI MAA0 6*. MURTOFUNKTION INTEGROINTI Murtofunktio tarkoittaa kahden polynomin osamäärää, ja sen yleinen muoto on P() R : R(). Q() Mikäli osoittajapolynomin asteluku on nimittäjäpolynomin astelukua korkeampi

Lisätiedot