220 likes | 535 Views
Diskreetti matematiikka salausmenetelmien matematiikkaa. Jouko Teeriaho syksy 2006. 21 kalvoa. Ryhmä ja Abelin ryhmä Fermat’n ja Eulerin lauseet Laskutoimitukset joukossa Z n (moduloaritmetiikka) Eulerin Phi funktio Nopea potenssilasku. Diffie - Hellman avaimesta sopiminen
E N D
Diskreetti matematiikkasalausmenetelmien matematiikkaa Jouko Teeriaho syksy 2006 21 kalvoa
Ryhmä ja Abelin ryhmä Fermat’n ja Eulerin lauseet Laskutoimitukset joukossa Zn (moduloaritmetiikka) Eulerin Phi funktio Nopea potenssilasku Diffie - Hellman avaimesta sopiminen RSA - salausalgoritmi Sisältö
Ryhmäaksioomat Olkoon G joukko, jossa on määritelty laskutoimitus * . Tällöin joukkoa G sanotaan ryhmäksi , mikäli seuraavat aksioomat toteutuvat: G1: a*b on ryhmän G alkio kaikilla a,b G G2: (a*b)*c = a*(b*c) kaikilla a,b,c G G3: On olemassa e G, jolle e*a=a*e=a kaikille a G (ykkösalkio) G4: Jokaisella a G on olemassa käänteisalkio a’, jolle a*a’ = a’ *a = e Lisäksi jos on voimassa G5: a*b = b*a kaikilla a,b G, niin G:tä sanotaan Abelin ryhmäksinorjalaisen matemaatikko Abelin mukaan.
Esimerkkejä • Onko kokonaislukujen joukko Z ryhmä ? • yhteenlaskun suhteen • kertolaskun suhteen • Onko reaalilukujen joukko R ryhmä kertolaskun suhteen? • Onko niiden 2x2 neliömatriisien joukko, joiden determinantti ≠ 0 matriisikertolaskun suhteen a) ryhmä b) Abelin ryhmä ? c) Mikä on neutraalialkio ?
Äärelliset ryhmät • Jos ryhmän alkioita on äärellinen määrä, puhutaan äärellisestä ryhmästä. • Jos kerrotaan äärellisen ryhmän kaikki alkiot tietyllä ryhmän alkiolla, saadaan aina samat alkiot uudessa järjestyksessä eli tuloksena on ryhmän alkioiden permutaatio. • Tämä todistamiseksi riittää osoittaa, että saadussa joukossa ei voi olla samaa alkiota kahta kertaa: • Todistus: • Olkoot a ja b ryhmän G eri alkioita ja c ryhmän G alkio • Tehdään vastaoletus, että ca = cb. • Koska c:llä on ryhmän alkiona käänteisalkio c’ (G4), kertomalla yhtälö puolittain c’:lla saadaan • c’ca = c’cb ea = e b a = b. • Tuloksena on siis ristiriita, joten ca ≠ cb.
Täydennä seuraava 4 alkion Abelin ryhmän {a,b,c,e} kertotaulu • e on neutraalialkio • Tarkista: • * Jokainen rivi ja sarake on alkioiden permutaatio. • Joka rivillä esiintyy e • Kertotaulu on peilikuva diagonaalinsa suhteen (kommutatiivisuus ab = ba) Totea ominaisuus: a*a*a*a = a4 = e b*b*b*b = b4 = e c*c*c*c = c4 = e
Ryhmän ominaisuus Lause: Jos G on Abelin ryhmä, jossa on n alkiota, niin Kaikille sen alkioille a on voimassa an = 1 (1) Todistus: ryhmän alkioiden tulo g1*g2*…gn = x on jokin sen alkioista Jos jokainen alkio kerrotaan a:lla , on saatu joukko ryhmän permutaatio, joten edelleen tulo on x: x = (a*g1)*(a*g2)*…*(a*gn) = an(g1*g2*….*gn) = an x Siis x = an x | kerrotaan x:n käänteisalkiolla ja saadaan an = 1
Lukujoukko Zn = {0,1,2,…,n-1} Kaikki kokonaisluvut voidaan kuvata joksikin tämän joukon alkioksi käyttäen kuvauksena jakojäännöstä mod 11. Esim. Luku 24 vastaa jakojäännös 2, lukua 100 vastaa jakojäännös 1, lukua -4 vastaa jakojäännös 11-4 = 7. Esim. Z11 0 1 10 2 9 3 8 7 4 Renkaassa Zn voidaan määritellä summa, erotus, kertolasku ja potenssilasku käyttäen jakojäännöksiä. 5 6
Peruslaskutoimitukset • Summa 7 + 6 mod 11 = 13 mod 11 = 2 • Erotus 2 – 5 mod 11 = -3 mod 11 = 11- 3 = 8 • Tulo 5*8 mod 11 = 40 mod 11 = 7 • Potenssi 34 mod 11 = 81 mod 11 = 4 Voiko jakolaskua määritellä ? Esim. 3 / 5 mod 11 ? Nyt 3/5 tarkoittaa 3*5-1 , missä 5-1 on luvun 5 käänteisluku. Tämähän voidaan laskea, mikäli luvulla 5 on käänteisluku renkaassa Z11. Nyt tarvitaan joukon Z11 kertotaulua selvittämään onko käänteislukua olemassa.
Lukujoukon Z11 kertotaulu Joka rivillä esiintyy luku 1, joten kaikilla luvuilla 1- 10 on käänteisluku. Joukko Z11* tarkoittaa kertolaskuryhmää, jossa on kaikki muuta Z11:n alkiot paitsi luku 0. Z11*= { 1, 2, … , 10}. Luvun 5 käänteisluku on 9 Siten 3/5 mod 11 = 3*9 mod 11 = 27 mod 11 = 5 Jakolasku voidaan siis hyvin määritellä joukossa Z11* = {1,2,…,10}. Huom! Potenssi a10 = 1 (mod 11) kaikille alkioille a (ks. kalvo 7)
Generoiva alkio eli primitiivialkio Seuraavassa ryhmän Z11* alkioiden potenssitaulu: Ryhmää G sanotaan sykliseksiryhmäksi, mikäli on olemassa sellainen alkio g, jonka potenssit g1,…,gn-1 käyvät läpi kaikki ryhmän alkiot. Alkiota g sanotaan tällöin ryhmän G generoivaksi alkioksi tai primitiivialkioksi. Voidaan merkitä G = <g> Joukon Z11* generoivia alkioita on 2,6,7, ja 8
Lukujoukon Z10 kertotaulu Tässä vain luvuilla 1,3,7 ja 9 on käänteisluku mod 10. Merkitään Z10* = {1,3,7,9}. Tämä osajoukko on ryhmä kertolaskun suhteen. Sen koko on 4 ja siinä on alkiot, joilla ei ole yhteisiä tekijöitä luvun 10 kanssa. Eulerin Phi- funktio (n) antaa niiden alkioiden x lukumäärän väliltä 1 – (n-1), joille, GCD(x,n) = 1. (10) = 4 Huom! Potenssi a4 = 1 (mod 10) kaikille a Z10*
Eulerin Phi – funktion ominaisuuksia (n) antaa kertolaskuryhmän Zn*:n alkioiden lukumäärän (p) = p – 1 , kun p on alkuluku (p*q) = (p –1)(q-1) , kun p ja q ovat alkulukuja Todistus: Luvuista 1,2, … , pq-1 tiputetaan pois kaikki ne, joilla on yhteisiä tekijöitä pq:n kanssa, eli p,2p,…, (q-1)p sekä q,2q,…, (p-1)q . Lukumääräisesti jäljelle jää siten pq - 1 - (q-1) – (p-1) eli pq – p – q + 1 eli (p-1)(q-1) m.o.t
Fermat’n ja Eulerin lauseet Molemmat seuraavat lauseesta (1) kalvolla 7 a p-1 = 1 mod p , jos p on alkuluku ja a { 1, 2, …, p-1) Fermat: 1601-1665 a (n) = 1 mod n , kaikille a Zn* Euler: 1707-1783 Fermat’n lausetta voidaan käyttää negatiivisena alkulukutestinä. Luku n ei ole alkuluku, mikäli jollekin kantaluvulle a an-1≠ 1 mod n
Sovelluksia kryptografiaan 1. Diffie- Hellman avaimesta sopiminen. Esim. pankkiliikenteen salauksessa käytetään symmetristä lohkosalausta, jossa salausavain on 128 bittinen kokonaisluku ( 38 numeroa 10-järjestelmässä). Avaimesta sovitaan kunkin istunnon aluksi esim. seuraavasti: Järjestelmässä on sovittu kertolaskuryhmästä Zp* ja generoivasta alkiosta g Alice: Alice generoi suuren satunnaisluvun a Bank Pankki generoi suuren satunnaisluvun b ya= g a mod p Alice: Bank: yb =g b mod p Alice laskee avaimen: Pankki laskee avaimen K = yba mod p K = yab mod p Molemmat saavat saman tuloksen K = gab mod p
RSA – salaus Rivest – Shamir – Adlemann 1978. Käytössä mm. suom. HST –kortissa. Jokaisella henkilöllä on kaksi julkista avainta: n = p*q (kahden alkuluvun tulo) e = edellistä pienempi kok. luku, jolle GCD(e,(n)) oltava 1 Viesti, joka on koodattu suuriksi kokonaisluvuiksi m salataan potenssiin korotuksella: c = me mod n , missä c on viestin m salakirjoitus Koska Eulerin lauseen mukaan m(n) = 1 mod n, niin käyttämällä eksponenttia d, jolle ed = 1 mod (n) eli d = e:n käänteisluku mod (p-1)(q-1) salaus voidaan purkaa. m = cd mod n dekryptausalgoritmi Salainen dekryptausavain d = e-1 mod (p-1)(q-1)
Miksi RSA on turvallinen Jokaisen käyttäjän julkiset avaimet n ja e ovat kaikkien tiedossa. Sen sijaan dekryptausavaimen d laskemiseksi on tiedettävä, mitkä ovat luvun n alkulukutekijät p ja q. Käytännössä luku n on 1024 – bittinen kokonaisluku ja sen tekijöiden p ja q löytäminen on mahdotonta nykytietämyksellä (se vie satoja vuosia). Käyttäjä siis laskettuaan dekryptausavaimen d pitää sen salassa ja hävittää tiedot luvun n tekijöistä p ja q. Esim. suomalaisessa HST – kortissa (sähköinen henkilökortti) on piinsirulle talletettuna dekryptausavain d. Koritn omistajan julkiset avaimet n ja e on tallennettuna väestörekisterikeskuksen ylläpitämälle avainpalvelimelle, josta jokainen tarvitseva voi ne tietoliikenneohjelmistojensa välityksellä noutaa.
Mitä algoritmeja salausmenetelmät (esim. RSA) tarvitsevat? • Käänteisluvun laskeminen moduloaritmetiikassa • Nopea potenssiin korotus, jossa tietokoneessa ei tule ylivuotoa
Nopea potenssiin korotus (powermod) Idea: järjestetään eksponentiksi parillinen luku ja puolitetaan se samanaikaisesti kun kantaluku neliöidään. 59 mod 11 = 5*58 mod 11 = 5*254 mod 11 = 5*34 mod 11 = 5*92 mod 11 = 5*81 mod 11 = 5*4 mod 11 = 20 mod 11 = 9 25 mod 11 => 3 81 mod 11 = 4 Mathematica
Käänteisalkion laskeminen mod n Tapa1: Laajennettu GCD Tapa2: Potenssiin korotus *) Laske 6-1 mod 11 11 = 1*6 + 5 6 = 1*5 + 1 <- GCD = 1 5 = 5*1 + 0 • Koska Eulerin mukaan, • 6(11) = 1 mod 11 • 6*6 (11)-1 = 1 mod 11 Siten käänteisluku on 6 (11)-1 = 610-1 = 69 mod 11 = 2 Taaksepäin: 1 = 6 – 5 = 6 – (11 – 6) ts. 1 = 2*6 – 11 Nyt luvun 6 kerroin 2 on kysytty käänteisluku, koska 2*6 = 1 mod 11 Kaava a-1 mod n = a (11)-1 mod n on sovellettavissa vain, mikäli (n) osataan laskea (edellyttää luvun n tekijöiden tuntemista) *)
Tehtäviä • Määritä seuraavien lukujen käänteisluvut mod 15 (mikäli ne ovat olemassa) • a) 7 b) 5 • 2. Montako alkiota on kertolaskuryhmässä Z21* ? (listaa alkiot) • Päättele ilman laskinta arvo potenssille 912 mod 21 • Suorita powermod algoritmilla (välivaiheet näkyviin) lasku • 411 mod 13 • 5. Pekka ja Eija sopivat yhteisestä istuntoavaimesta Diffie – Hellman menetelmällä. Laskut suoritetaan joukossa Z13 , generoiva alkio on 6. • Pekka valitsee salaiseksi eksponentikseen a luvun 3 ja Eija valitsee luvun b = 11. Mikä on Eijan ja Pekan istuntoavain K • Viesti on koodattu kokonaisluvuiksi, joista ensimmäinen on m = 14. • Liisan julkinen avainpari (n, e) = (91, 17). Miten Pekka salaa viestin m = 14 lähettäessään sen Liisalle. Mikä on Liisan dekryptausavain d?. Näytä, miten Liisa avaa salakirjoituksen.