MS-A0402 Diskreetin matematiikan perusteet Osa 4: Modulaariaritmetiikka Riikka Kangaslampi 2017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto
Modulaariaritmetiikka
Jakoyhtälö Määritelmä 1 Luku n Z on jaollinen luvulla m Z, merkitään m n (lue: m jakaa n:n), jos on olemassa k Z, jolle n = km. Lause 2 (Jakoyhtälö) Olkoot a, b Z ja b 0. Tällöin on olemassa yksikäsitteiset q, r Z, joille 0 r < b ja a = qb + r. Toisin sanoen: jos a jaetaan b:llä, niin osamäärä q ja jakojäännös r määräytyvät yksikäsitteisesti. 1 / 30 R. Kangaslampi MS-A0402
Jakoyhtälö Todistetaan lause pienimmän alkion periaatteella, joka on loogisesti yhtäpitävä induktioperiaatteen kanssa. Todistus. Tarkastellaan Z:n osajoukkoa A = {a kb k Z}. Oletetaan ensin b > 0. Joukossa A on selvästi ei-negatiivisia alkioita. Valitaan niistä pienin ja merkitään sitä r:llä. Nyt joukon A määritelmän mukaan r = a kb jollekin k Z; merkitään tätä k:ta symbolilla q. 2 / 30 R. Kangaslampi MS-A0402
Jakoyhtälö Todistus (jatkuu) Luvut q ja r toteuttavat halutun yhtälön a = qb + r, joten tehtävänä on osoittaa epäyhtälö 0 r < b. Epäyhtälö r 0 on selvä, koska r oli pienin ei-negatiivisista alkioista. Tehdään vastaoletus r b, jolloin joukosta A löytyykin r:ää pienempi ei-negatiivinen alkio: a (q + 1)b = a qb b = r b 0, mikä on ristiriita sen kanssa, että r oli joukon A pienin ei-negatiivinen alkio. (Huom. oletettiin b > 0, joten a (q + 1)b < a qb = r.) Tapauksessa b < 0 korvataan ylläolevan todistuksen b luvulla b. 3 / 30 R. Kangaslampi MS-A0402
Jakoyhtälö Todistus (jatkuu) Jäljellä on vielä yksikäsitteisyys. Jos myös luvut q ja r toteuttavat annetut ehdot, niin r r = (q q )b. Tästä saadaan q q b < b, koska ehdoista 0 r < b ja 0 r < b seuraa r r < b. Siten on oltava q q < 1, ja koska q, q Z, on oltava q q = 0 eli q = q. Yhtälöstä r r = (q q )b seuraa edelleen r = r. Pienimmän alkion periaate sanoo, että epätyhjässä N:n osajoukossa on olemassa pienin alkio. Pienimmän alkion periaatetta käytettiin kohdassa, jossa valittiin A:sta pienin ei-negatiivinen alkio. 4 / 30 R. Kangaslampi MS-A0402
Kongruenssiluokat Määritelmä 3 Olkoon n N + eli n N ja n 0. Jos kokonaisluvuille a, b Z pätee n (a b), niin sanotaan, että a on kongruentti b:n kanssa modulo n ja merkitään a b (mod n) tai a n b. Määrittelevä ehto n (a b) sanoo, että a:lla ja b:llä on n:llä jaettaessa sama jakojäännös. Esimerkiksi 4 16 (mod 12); voi ajatella kellotaulua, jossa lasketaan modulo 12. 5 / 30 R. Kangaslampi MS-A0402
Kongruenssiluokat Voidaan vähällä vaivalla todeta (taululla), että annetulle n:lle relaatio n on ekvivalenssirelaatio, joten se jakaa kokonaisluvut erillisiin ekvivalenssiluokkiin: Määritelmä 4 Olkoon n N +. Luvun a Z jäännösluokka modulo n on [a] n := {b Z a b (mod n)} Z. Jäännösluokan alkioita kutsutaan luokkansa edustajiksi. Esimerkki 5 Joukkoa [4] 12 = {..., 20, 8, 4, 16, 28,...} voidaan ajatella kellonajan 4 edustajina. 6 / 30 R. Kangaslampi MS-A0402
Kongruenssiluokat Esimerkki 6 Mikä on pienin ei-negatiivinen luku joukossa [27] 11? Vastaus: 5. Määritelmä 7 Olkoon n N +. Kaikkien jäännösluokkien modulo n joukkoa merkitään Z n (tai joskus Z/nZ), eli siis Huomio Z n = {[0] n, [1] n,..., [n 1] n }. a) Aina pätee [n] n = [0] n. b) Usein luvulle a Z on tapana kirjoittaa a mod n tarkoittamaan luokan [a] n edustajaa joukosta {0,..., n 1}. 7 / 30 R. Kangaslampi MS-A0402
Kongruenssiluokkien yhteen- ja kertolasku Määritelmä 8 Määritellään annetulle n N + ja annetuille a, b Z [a] n + [b] n := [a + b] n, [a] n [b] n := [ab] n. Esimerkki 9 Joukossa Z 3 = {[0] 3, [1] 3, [2] 3 } saadaan seuraavat yhteen- ja kertolaskutaulukot: + 3 [0] [1] [2] [0] [0] [1] [2] [1] [1] [2] [0] [2] [2] [0] [1] ja 3 [0] [1] [2] [0] [0] [0] [0] [1] [0] [1] [2] [2] [0] [2] [1]. 8 / 30 R. Kangaslampi MS-A0402
Kongruenssiluokkien yhteen- ja kertolasku Tärkeitä huomioita Tapana on jättää alaindeksi pois, kun se käy ilmi asiayhteydestä. Usein jätetään myös luokkamerkit pois eli voidaan kirjoittaa esim. 7 + 2 = 0 joukossa Z 3 sen sijaan, että kirjoitettaisiin [7] 3 + [2] 3 = [0] 3 tai 7 + 2 0 (mod 3). Laskutoimitukset ovat hyvinmääriteltyjä eli eivät riipu edustajien valinnasta. Esimerkiksi joukon Z yhteenlasku + voidaan mieltää funktiona Z Z Z, jolloin olennaista on, että kahdella luvulla on yksikäsitteinen summa. Nyt voisi periaatteessa käydä niin, että [2 + 3] 4 [6 + 7] 4, vaikka [2] 4 = [6] 4 ja [3] 4 = [7] 4. Näin ei kuitenkaan käy; todistus sivuutetaan. 9 / 30 R. Kangaslampi MS-A0402
Kongruenssiluokkien yhteen- ja kertolasku Lause 10 Joukon Z n yhteen- ja kertolasku toteuttaa joukosta Z tutut laskusäännöt: kaikille a, b, c Z n pätee a + b = b + a ja ab = ba (vaihdannaisuus) a + (b + c) = (a + b) + c ja a(bc) = (ab)c (liitännäisyys) a + 0 = a ja a 1 = a (neutraalialkioiden olemassaolo) a + ( a) = 0 (yhteenlaskun vasta-alkion olemassaolo) a(b + c) = ab + ac (osittelulaki). Nämä ovat ns. rengasaksioomat ja joukkoa Z n kutsutaankin usein jäännösluokkarenkaaksi. (Huom. alkiot a, b ja c ovat viime kädessä luokkia, eivät lukuja.) 10 / 30 R. Kangaslampi MS-A0402
Z vs. Z n eroavaisuuksia Taulukosta edellä puuttui kertolaskun vasta-alkion eli käänteisalkion olemassaolo. Alkion a käänteisalkiolla tarkoitetaan alkiota b, jolle a b = 1. Joukossa Z käänteisalkio on olemassa vain luvuille ±1. Osoittautuu, että joukossa Z n käänteisalkio on olemassa täsmälleen sellaisille luokille, joiden edustajilla ei ole n:n kanssa yhteisiä tekijöitä. Erityisesti jos n on alkuluku, niin käänteisalkio on olemassa kaikille Z n :n nollasta eroaville luokille. Tällaista rakennetta sanotaan kunnaksi; myös esimerkiksi Q ja R ovat kuntia. Toinen merkittävä eroavaisuus liittyy supistamiseen; joukossa Z n ei päde Z:sta tuttu supistussääntö ab = ac ja a 0 b = c paitsi silloin, kun a on kääntyvä (kuten tulemme näkemään). 11 / 30 R. Kangaslampi MS-A0402
Z vs. Z n eroavaisuuksia Esimerkki 11 Joukossa Z 6 on 2 4 = 2 1, mutta 4 1. Joukossa Z 7 on 2 4 = 1, joten 2 ja 4 ovat toistensa käänteisalkiot. Esimerkki 12 Mikä on jakojäännös, kun luku 4 119 jaetaan luvulla 9? Jakoyhtälö: 4 119 = 9q + r, joten joukossa Z 9 pätee r = 4 119 (koska 9q = 0). Kysymys siis kuuluu: Mitä on 4 119 mod 9? Joukossa Z 9 : 4 2 = 7, 4 3 = 4 2 4 = 7 4 = 1 ja 4 119 = (4 3 ) 39 4 2 = 1 7 = 7. Siten vastaus on 7. 12 / 30 R. Kangaslampi MS-A0402
Jaollisuustestejä Mitä tarkoittaa luvun esittäminen kymmenjärjestelmässä? Esimerkiksi 2875 = 5 10 0 + 7 10 1 + 8 10 2 + 2 10 3. Merkitään yleisesti n = d 0 + d 1 10 +... + d k 10 k, jolloin luvun n N esitys 10-kantaisessa järjestelmässä on muotoa n = d k d k 1... d 1 d 0. (Yleensä oletetaan lisäksi d k 0, jolloin 10 k n < 10 k+1.) 13 / 30 R. Kangaslampi MS-A0402
Jaollisuustestejä Esimerkki 13 Kymmenjärjestelmän luku on kolmella jaollinen täsmälleen silloin, kun sen numeroiden summa on kolmella jaollinen. Miksi? Lähdetään siitä, että 3 n n 0 (mod 3). Edelleen, jos n = d 0 + d 1 10 +... + d k 10 k, niin joukossa Z 3 pätee n = 0 d 0 + d 1 10 +... + d k 10 k = 0 d 0 + d 1 +... + d k = 0, sillä joukossa Z 3 on 10 m = 1 kaikilla m N. 14 / 30 R. Kangaslampi MS-A0402
Jaollisuustestejä Esimerkki 14 Kymmenjärjestelmän luku on viidellä jaollinen täsmälleen silloin, kun sen viimeinen numero (ykkösen kerroin) on viidellä jaollinen. Miksi? Kuten edellä, mutta nyt lasketaan joukossa Z 5, jossa 10 0 = 1 ja 10 m = 0 kaikilla m 2. 15 / 30 R. Kangaslampi MS-A0402
Kongruenssiyhtälöistä Milloin yhtälöstä ax b (mod n) voidaan ratkaista x, ja miten se ratkaistaan? Määritelmä 15 (käänteisalkio) Luvun a Z n käänteisalkio on sellainen luku b Z n, jolle ab 1 (mod n); merkitään b = a 1. Esimerkki 16 Joukossa Z 5 luvun 3 käänteisalkio on 2; muita ei ole. Jos käänteisalkio on olemassa, se on yksikäsitteinen. (Taululla.) Joukossa Z 6 luvulla 3 ei ole käänteisalkiota. 16 / 30 R. Kangaslampi MS-A0402
Kongruenssiyhtälöistä Milloin yhtälöstä ax b (mod n) voidaan ratkaista x, ja miten se ratkaistaan? Määritelmä 15 (käänteisalkio) Alkion a Z n käänteisalkio on sellainen alkio b Z n, jolle ab 1 (mod n); merkitään b = a 1. Esimerkki 16 Joukossa Z 5 alkion 3 käänteisalkio on 2; muita ei ole. Jos käänteisalkio on olemassa, se on yksikäsitteinen. (Taululla.) Joukossa Z 6 alkiolla 3 ei ole käänteisalkiota. 17 / 30 R. Kangaslampi MS-A0402
Kongruenssiyhtälöistä Lause 17 Alkiolla a Z n on käänteisalkio täsmälleen silloin, kun syt(a, n) = 1. Muistetaan: Suurin yhteinen tekijä (greatest common divisor) syt(a, b) on suurin luku, joka jakaa molemmat luvut a ja b niin, että lopputulos on kokonaisluku. Oikeastaan syt-kohdassa puhutaan luokan a Z n mistä tahansa edustajasta. Jatkossakin puhutaan luvuista a Z n tarkoittaen tätä. 18 / 30 R. Kangaslampi MS-A0402
Kongruenssiyhtälöistä Todistus. Oletetaan ensin, että syt(a, n) = 1. Tällöin Eukleideen algoritmin nojalla on olemassa luvut x, y Z siten, että 1 = xa + yn. Nyt luku x kelpaa luvun a käänteisalkioksi, koska yn 0 (mod n). Jos käänteisalkio on olemassa, ts. jos ab 1 (mod n), niin (mod)-määritelmän mukaan n (ab 1) eli ab 1 = kn jollekin k Z. Luku syt(a, n) jakaa luvut a ja n ja siten myös summan ab kn eli luvun 1. On siis oltava syt(a, n) = 1. 19 / 30 R. Kangaslampi MS-A0402
Kongruenssiyhtälöistä Lause 18 (Seuraus edellisestä lauseesta) Jos a Z n on kääntyvä (eli jos a:lla on käänteisalkio), niin yhtälöllä ax b (mod n) on jokaiselle b Z n yksikäsitteinen ratkaisu x Z n. Todistus. Kertomalla yhtälön ax = b molemmat puolet vasemmalta käänteisalkiolla a 1 saadaan x = a 1 b. 20 / 30 R. Kangaslampi MS-A0402
Kongruenssiyhtälöistä Esimerkki 19 Joukon Z 10 kääntyvät alkiot ovat 1, 3, 7 ja 9. Vastaavat käänteisalkiot ovat 1, 7, 3 ja 9. Ratkaistaan yhtälö 7x = 9 joukossa Z 12. Yhtälö ratkeaa, koska luvulla 7 on käänteisalkio joukossa Z 12, nimittäin se itse. Kertomalla yhtälön molemmat puolet 7:lla saadaan x = 63 = 3. Joukossa Z 5 kaikki nollasta eroavat alkiot ovat kääntyviä; pätee 1 1 = 1, 2 1 = 3 ja 4 1 = 4. 21 / 30 R. Kangaslampi MS-A0402
Kongruenssiyhtälöistä Edellisen lauseen nojalla kaikki nollasta eroavat alkiot ovat kääntyviä joukossa Z p, kun p on alkuluku. Edelleen pätee Lause 20 (Fermat n pieni lause) Kun p on alkuluku, niin kaikille a Z pätee a p a (mod p). Todistus Luvuille a 0 (mod p) väite pätee. Koska p on alkuluku, on kaikilla a 0 (mod p) käänteisalkio; tällaisille väite on yhtäpitävä väitteen a p 1 1 (mod p) kanssa. 22 / 30 R. Kangaslampi MS-A0402
Kongruenssiyhtälöistä Todistus (jatkuu) Olkoon siis a 0 joukossa Z p. Koska a on kääntyvä, pätee (ma p na) (m p n), erityisesti luvut a, 2a,..., (p 1)a ovat täsmälleen luvut 1,..., (p 1) eri järjestyksessä, ja siten niiden p 1 tulo on toisaalta (p 1)! ja toisaalta (ka) = a p 1 (p 1)!. Siten a p 1 1 (mod p) k=1 23 / 30 R. Kangaslampi MS-A0402
Fermat n pieni lause Esimerkki 21 Tarkistetaan, että Fermat n pieni lause pätee joukossa Z 7 : 1 6 = 1 2 6 = 2 2 2 2 2 2 = 4 4 4 = 2 4 = 1 3 6 = 3 2 3 2 3 2 = 2 2 2 = 4 2 = 1 4 6 = 4 2 4 2 4 2 = 2 2 2 = 4 2 = 1 5 6 = 5 2 5 2 5 2 = 4 4 4 = 2 4 = 1 6 6 = 6 2 6 2 6 2 = 1 1 1 = 1. 24 / 30 R. Kangaslampi MS-A0402
RSA-salausalgoritmi Käydään ensin läpi algoritmin toiminta esimerkinomaisesti. Oletetaan, että Liisa haluaa lähettää Pekalle salatun viestin tietokoneella. Tietokone generoi kaksi (oikeasti hyvin suurta) alkulukua, olkoot ne tässä p = 61 ja q = 53. Tietokone laskee tulot n = pq = 61 53 = 3233 ja m = (p 1)(q 1) = 60 52 = 3120. Tietokone generoi koodausavaimen k siten, että 0 < k < m ja syt(k, m) = 1; esimerkiksi k = 17. Tietokone laskee luvun d = k 1 joukossa Z m ; tässä d = 2753. Tietokone antaa Liisalle julkiseksi avaimeksi (salausta varten) luvut n = 3233 ja k = 17. Tietokone antaa Pekalle yksityiseksi avaimeksi (purkamista varten) luvut n = 3233 ja d = 2753. 25 / 30 R. Kangaslampi MS-A0402
RSA-salausalgoritmi Oletetaan, että Liisa haluaa koodata luvun (merkkijonon) s. Ensin hän tarvittaessa lisää s:n perään tyhjiä merkkejä siten, että luvulle pätee syt(s, n) = 1. Olkoon esimerkiksi s = 65. Liisa koodaa viestin laskemalla s k mod n; tässä 65 17 mod 3233 = 2790. Pekka purkaa koodatun viestin c laskemalla c d mod n; tässä 2790 2753 mod 3233 = 65. Kaksi kysymystä Miksi koodin murtaminen on vaikeaa? Miksi koodi toimii oikein? 26 / 30 R. Kangaslampi MS-A0402
RSA-salausalgoritmi Murtamisesta Jotta ulkopuolinen Eveliina pystyisi purkamaan viestin pelkän julkisen avaimen avulla, hänen pitäisi päätellä lukujen n ja k avulla luku d eli luvun k käänteisalkio joukossa Z m. Se selvittäminen on vaikeaa, koska hän ei tiedä lukua m. Luvun m selvittämiseksi hänen pitäisi selvittää alkuluvut p ja q, joiden tulo luku n on. Isojen lukujen jakaminen alkutekijöihin on vaikeaa! Ks. Wikipedia: RSA algorithm. 27 / 30 R. Kangaslampi MS-A0402
RSA-salausalgoritmi Koodi toimii, koska Fermat n pienen lauseen seurauksena saadaan Lause 22 Olkoot p ja q alkulukuja, n = pq ja m = (p 1)(q 1). Olkoon edelleen s sellainen, että syt(s, n) = 1, ja olkoon h (esimerkissämme h = kd) sellainen, että h = 1 joukossa Z m. Tällöin s h = s joukossa Z n. Pekka purki viestin laskemalla c d = (s k ) d = s kd modulo n, joten ylläolevan lauseen perusteella tämä todellakin on alkuperäinen viesti s. 28 / 30 R. Kangaslampi MS-A0402
RSA-salausalgoritmi Lauseen todistus Koska h = 1 mod m, niin h 1 = ym jollekin y Z. Siten s h = s 1+ym = s(s m ) y, joten riittää osoittaa, että s m = 1 mod n. Oletettiin syt(s, n) = syt(s, pq) = 1, joten s 0 mod p. Fermat n pienen lauseen mukaan s p 1 = 1 mod p. Edelleen s m = s (p 1)(q 1) = 1 q 1 = 1 mod p, samoin s m = 1 mod q. Siten sekä p että q jakavat luvun s m 1 ja koska p ja q ovat alkulukuja, niin myös niiden tulo n jakaa luvun s m 1, ts. s m = 1 mod n. 29 / 30 R. Kangaslampi MS-A0402
RSA-salausalgoritmi Esimerkki 23 (Vakoilutehtävä) Luennoitsija haluaa lähettää ystävälleen tiedoksi kissansa nimen, salattuna totta kai. Ystävä antaa julkisen avaimensa (7, 143) ja luennoitsija lähettää hänelle koodatun viestin 046, 048, 117, 001. Mikä on kissan nimi? Vihje: Aakkoset on alunperin muutettu numeroiksi siten, että a=01, b=02, jne. Vihje 2: Etsi n ja p siten, että np = 143. Etsi sitten yksityinen avain d siten, että 7d 1 mod (p 1)(q 1). Pura koodi laskemalla kullekin salatulle kirjaimelle c lasku c d mod 143 ja tulkitse luvut kirjaimina. Vastaus: Kissa on Sima. 30 / 30 R. Kangaslampi MS-A0402