RSA-salausmenetelmä LuK-tutkielma Tapani Sipola Op. nro Matemaattisten tieteiden laitos Oulun yliopisto Syksy 2017

Samankaltaiset tiedostot
Salakirjoitusmenetelmiä

Lukuteorian kertausta

RSA-salakirjoitus. Simo K. Kivelä, Apufunktioita

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

Lukuteoria. Eukleides Aleksandrialainen (n. 300 eaa)

MS-A0402 Diskreetin matematiikan perusteet

4. Eulerin ja Fermat'n lauseet

Harjoitustehtävät. Laskarit: Ti KO148 Ke KO148. Tehtävät viikko. VIIKON 42 laskarit to ko salissa IT138

n (n 1) avainten vaihtoa. Miljoonalle käyttäjälle avainten vaihtoja tarvittaisiin

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

2017 = = = = = = 26 1

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

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

SALAUSMENETELMÄT A, 4 op

Diofantoksen yhtälön ratkaisut

Salausmenetelmät 2015/Harjoitustehtävät

JOHDATUS LUKUTEORIAAN (syksy 2017) HARJOITUS 3, MALLIRATKAISUT

Alkulukujen harmoninen sarja

Lukuteorian sovelluksia tiedon salauksessa

Ongelma 1: Miten tieto kannattaa koodata, jos sen halutaan olevan hyvin vaikeasti luettavaa?

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

RSA-salaus ja sen lukuteoreettinen pohja

Primitiiviset juuret: teoriaa ja sovelluksia

Shorin algoritmin matematiikkaa Edvard Fagerholm

(d) 29 4 (mod 7) (e) ( ) 49 (mod 10) (f) (mod 9)

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

SALAUSMENETELMÄT. Osa 2. Etätehtävät

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

a ord 13 (a)

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

ALKULUKUJA JA MELKEIN ALKULUKUJA

Koostanut Juulia Lahdenperä ja Rami Luisto. Salakirjoituksia

Eräitä RSA-salauksen haavoittuvuuksia

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

SALAUSMENETELMÄT A, 4 op

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

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

1 Lukujen jaollisuudesta

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

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

d Z + 17 Viimeksi muutettu

Lineaariset kongruenssiyhtälöryhmät

RSA Julkisen avaimen salakirjoitusmenetelmä

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

Miten osoitetaan joukot samoiksi?

Multiplikatiiviset funktiot

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

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

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

Kryptologia Esitelmä

41 s. Neljännessä luvussa käsitellään erikseen parillisia täydellisiä lukuja. Luvussa osoitetaan Eukleides Euler teoreema,

NÄIN TOIMII. alakirjoituksen historia ulottuu tuhansien

Salausmenetelmät LUKUTEORIAA JA ALGORITMEJA. Veikko Keränen, Jouko Teeriaho (RAMK, 2006) 3. Kongruenssit. à 3.4 Kongruenssien laskusääntöjä

Johdatus matemaattiseen päättelyyn

2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1)

LUKUTEORIA johdantoa

ALKULUVUISTA (mod 6)

Koodausteoria, Kesä 2014

Salaustekniikat. Kirja sivut: ( )

Julkisten avainten salausmenetelmät

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

Tekijäryhmät ja homomorsmit

811120P Diskreetit rakenteet

Ensimmäinen induktioperiaate

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Multiplikatiivisista funktioista

Ensimmäinen induktioperiaate

Matematiikan mestariluokka, syksy

Tietoturvan perusteet - Syksy SSH salattu yhteys & autentikointi. Tekijät: Antti Huhtala & Asko Ikävalko (TP02S)

1. Esitä rekursiivinen määritelmä lukujonolle

Johdatus matemaattiseen päättelyyn

Testaa taitosi 1: Lauseen totuusarvo

Approbatur 3, demo 5, ratkaisut

Matematiikassa väitelauseet ovat usein muotoa: jos P on totta, niin Q on totta.

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

Esitetään tehtävälle kaksi hieman erilaista ratkaisua. Ratkaisutapa 1. Lähdetään sieventämään epäyhtälön vasenta puolta:

Latinalaiset neliöt ja taikaneliöt

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

Tietoturva P 5 op

Algebra I, harjoitus 5,

IDENTITEETTIIN PERUSTUVISTA JULKISEN AVAIMEN KRYPTOSYSTEEMEISTÄ

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

Vaihtoehtoinen tapa määritellä funktioita f : N R on

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

Rationaaliluvun desimaaliesitys algebrallisesta ja lukuteoreettisesta näkökulmasta

5. SALAUS. Salakirjoituksen historiaa

Valitse kuusi tehtävää! Kaikki tehtävät ovat 6 pisteen arvoisia.

(2) C on joukko, jonka alkioita kutsutaan sala(kirjoite)tuiksi viesteiksi (engl. ciphertext);

Jokaisen parittoman kokonaisluvun toinen potenssi on pariton.

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Todistusmenetelmiä Miksi pitää todistaa?

Esko Turunen Luku 3. Ryhmät

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on

Kuvauksista ja relaatioista. Jonna Makkonen Ilari Vallivaara

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

Diofantoksen yhtälöt Pro gradu -tutkielma Pasi Juopperi Matematiikan ja tilastotieteen laitos Helsingin yliopisto Syksy 2013

Tietoturvatekniikka Ursula Holmström

LUONNOLLISTEN LUKUJEN JAOLLISUUS

Reaalifunktioista 1 / 17. Reaalifunktioista

Jäniksistä numeroihin Fibonaccin luvuista

Transkriptio:

RSA-salausmenetelmä LuK-tutkielma Tapani Sipola Op. nro. 1976269 Matemaattisten tieteiden laitos Oulun yliopisto Syksy 2017

Sisältö Johdanto 2 1 Salausmenetelmien yleisiä periaatteita 3 2 Määritelmiä ja lauseita 5 3 Nopea potenssiinkorotus 5 4 RSA-salaus 8 4.1 Toimintaperiaate......................... 8 4.2 Salauksen murtaminen...................... 10 Lähdeluettelo 12 1

Johdanto Tietotekniikan kehittyessä ja yleistyessä myös käyttäjältä toiselle siirrettävän yksityisen tiedon määrä on kasvanut. Miljoonien ihmisten henkilö- ja pankkititoja siirtyy Internetin ja muiden tietoverkkojen kautta päivittäin verkkopankeille, -kaupoille ja muille käyttäjille. On sanomattakin selvää, että tällaisen viestinnän salaminen on ensisijaisen tärkeää näiden palvelujen asiakkaiden yksityisyyden ja turvallisuuden kannalta. Jotta viestintä voitaisiin pitää salassa on viestivien osapuolten sovittava salauksen käytöstä. Perinteisten salausmenetelmien ongelmana on kuitenkin, että salauksesta sopiminen vaatii itsessään turvallisen viestintäkanavan, ja jos tällainen kanava olisi helposti käytettävissä, ei salausmenetelmälle olisi tarvetta. Julkisen avaimen salausmenetelmät kuitenkin mahdollistavat viestinnän salaamisen ilman että lähettäjän olisi sovittava salauksesta vastaanottajan kanssa erikseen. Tämä tutkielma käsittelee RSA-salausta, joka on tunnetuimpia julkisen avaimen salausmenetelmiä. Sen kehittivät Ron Rivest, Adi Shamir ja Leonard Adleman vuonna 1977. Sen turvallisuus pohjautuu siihen, että suurten lukujen jakaminen tekijöihin on huomattavasti vaikeampaa kuin niiden kertominen keskenään. [1, 2] Aluksi kerrotaan matemaatisesta salakirjoituksesta yleisesti ja esittellään tarvittavia määritelmiä, lauseita ja algoriritmeja. Sitten esittellään RSAalgoritmi ja todistetaan sen virheettömyys. Lopuksi perustellaan miksi RSA on turvallinen salausmenetelmä. 2

1 Salausmenetelmien yleisiä periaatteita Salakirjoituksen takoituksena on selväkielisen viestin muuntaminen sellaiseen muotoon, että vain viestin vastaanottaja voi purkaa ja lukea viestin. Jotta selväkielistä viestiä voitaisiin käsitellä matemaattisesti, se on aluksi muunnettava numeeriseen muotoon. Ennen tietokoneita tämä suoritettiin esimerkiksi taulukoilla, joilla kukin kirjain liitettiin johonkin numeroon. Käsiteltäessä viestiä tietokoneella viestitiedoston binääridataa voidaan käsitellä salausmenetelmällä suoraan, joten tälle ei ole nykyään tarvetta. Olkoon M viestiyksiköiden joukko ja C salattujen viestiyksiköiden joukko. Valitaan salausfunktio E : M C, joka on bijektio. Nyt D = E 1 on avausfunktio. Selväkielinen viesti muutetaan viestiyksiköksi m M, josta lasketaan salattu viesti c = E(m) C. Salattu viesti c lähetetään vastaanottajalle, joka purkaa salauksen laskemalla D(c) = m ja muuttaa tämän selväkieliseksi. Funktioiden E ja D tulee olla suhteellisen helposti laskettavissa ja viesti m ei saa selvitä salakirjoituksesta c ilman että avausfunktio D tunnetaan. Useimmiten viesti hajotetaan useammaksi viestiyksiköksi, jotka kaikki salataan ja avataan erikseen, esimerkiksi kirjain kirjaimelta tai tietyn merkkimäärän pituisissa blokeissa. Useimmiten salaus- ja avausfunktiot muodostetaan niinsanotun salausavaimen avulla. Salausavain k on parametri, joka määrittää salaus- ja avausfunktiot E k ja D k, joilla D k = E 1 k kaikilla k K. K on niin sanottu avainjoukko. Esimerkki 1.1. Caesar-salauksessa korvataan tekstin jokainen kirjain sillä kirjaimella, joka on aakkosissa ennalta sovitun määrän askelia alkuperäisen kirjaimen jälkeen. Aakkoston jokainen kirjain numeroidaan, esimerkiksi 3

englannin aakkostossa "A" = 0, "B" = 1,..., "Z" = 25. Salausfunktio on E k (m) = (m + k) (mod 26) ja avausfunktio on D k (c) = (c k) (mod 26). Luku k {1, 2,..., 25} on salausavain, joka määrittää käytettävät salaus- ja avausfunktiot, eli sen kuinka monta askelta aakkostossa kuljetaan eteen tai taakse. Salausavaimen tarkoitus on helpottaa salauksesta sopimista ja salauksen muuttamista. Koska avain määrittelee sekä avaus- että salausfunktion, näistä sopimiseksi riittää että kullakin osapuolella on avain tiedossa. Tämän takia salauksesta sopimista sanotaan yleensä avaimenvaihdoksi. Kuten johdannossa mainittiin, perinteisissä salausmenetelmissä avaimenvaihto on suoritettava turvallista kanavaa pitkin. Mikäli ulkopuolinen saa avaimen tietoonsa, hänen on helppo muodostaa avausfunktio ja lukea salatut viestit. Julkisen avaimen salausmenetelmät on kuitenkin suunniteltu siten, että avausfunktio on huomattavan työläs laskea salausavaimesta. Tällöin salausavain voidaan lähettää tarvittaessa täysin julkista kanavaa pitkin. Vaikka avain joutuisikin vääriin käsiin, avausfunktion laskemiseen menisi kuukausia tai jopa vuosia, missä vaiheessa salatun viestin paljastumisesta ei enää olisi välttämättä haittaa viestin lähettäjälle ja vastaanottajalle. Julkisen avaimen salausmenetelmä tarvitsee kuitenkin toimiakseen niin sanotun salaluukun. Salaluukku on tieto, joka tekee avausfunktion laskemisen salausavaimesta helpoksi. Ilman tätä tietoa avausfunktion luominen olisi sen omistajalle yhtä raskasta kuin viestin murtajalle, mikä tekisi salauksesta hyvin kömpelöä. Funktio jonka luomiseen olisi käytetty vuosi olisi seuraavana vuonna jo murrettu. 4

2 Määritelmiä ja lauseita Määritelmä 2.1 (Kongruenssi). Olkoon a, b ja c kokonaislukuja. Luku a on kongruentti luvun b kanssa modulo c, jos ja vain jos c a b. Tällöin käytetään merkintää a b (mod c). Määritelmä 2.2 (Eulerin funktio). Eulerin funktion ϕ : N N arvo on niiden positiivisten kokonaislukujen k lukumäärä joille pätee 0 < k n, syt(k, n) = 1 Lause 2.3 (Eulerin-Fermat'n Lause). Olkoon a, n Z +. Jos syt(a, n) = 1, niin a ϕ(n) 1 (mod n). Jatkossa tähän lauseeseen viitataan Eulerin lauseena. 3 Nopea potenssiinkorotus RSA-salaus vaatii tehokkaan tavan laskea hyvin suurien potenssien kongruensseja. Tätä varten käytetään nopean potenssiinkorotuksen menetelmää, joka toimii seuraavasti. Olkoon tehtävänä laskea a p (mod n), missä p > ϕ(n), a < n ja n on suuri. Selvästi p = qϕ(n) + r joillakin q Z, r N ja r < ϕ(n). Tästä saadaan a p = a qϕ(n)+r = a qϕ(n) a r, 5

josta edelleen Eulerin lauseen avulla saadaan a qϕ(n) a r 1 q a r a r (mod n). Tehtävässä potenssi p voidaan siis korvata pienemmällä potenssilla r jolle pätee p r(mod ϕ(n)). [1] Esimerkki 3.1. Lasketaan 5 100000000000000 (mod 12830603). Nyt ϕ(12830603) = ϕ(3571) ϕ(3593) = 3570 3592 = 12823440 ja jolloin 100000000000000 = 7798219 12823440 + 6546640 5 100000000000000 = 5 7798219 12823440+6546640 5 6546640 (mod 12830603). [1] Seuraavaksi selvitetään eksponentin r binääriesitys k r i 2 i = r, i=0 missä r i {0, 1} kaikilla 0 i < k ja r k = 1. Tämän jälkeen lasketaan luvut a i a 2i (mod n), 0 i k rekursiivisesti kaavoista a 0 = a, a i a 2 i 1 (mod n). 6

Lukujen a i avulla lasketaan a r = a r k2 k +r k 1 2 k 1 + +r 0 = (a 2k ) r k (a 2k 1 ) r k 1... (a 1 ) r 1 a r k k a r k 1 k 1... ar 0 0 (mod n). Tällä tavalla, sen sijaan että jouduttaisiin kertomaan a itsellään r kertaa, tarvitsee vain laskea log 2 r luvun neliöt ja korkeintaan yhtä monen luvun tulo. [1] Esimerkki 3.2. Lasketaan 7 85 (mod 391). Koska 85 = 2 6 + 2 4 + 2 2 + 1 = 64 + 16 + 4 + 1, riittää laskea luvut a i, 0 i 6. Tällöin saadaan a 1 7 2 49 (mod 391), a 2 7 4 49 2 55 (mod 391), a 3 7 8 55 2 288 (mod 391), a 4 7 16 288 2 52 (mod 391), a 5 7 32 52 2 358 (mod 391) ja a 6 7 64 358 2 307 (mod 391). Tämän jälkeen on helppo laskea 7 85 = 7 64+16+4+1 307 52 55 7 324 385 11 (mod 391). [1] 7

4 RSA-salaus 4.1 Toimintaperiaate Jokaiselle käyttäjälle muodostetaan julkinen ja yksityinen avain seuraavasti: 1. Valitaan kaksi suurta (vähintään 100 numeroista) alkulukua p ja q. Näiden alkulukujen pitää täyttää tiettyjä kriteerejä, joista puhutaan myöhemmin. 2. Lasketaan n = pq. 3. Valitaan luku e, jolle pätee syt(e, ϕ(n)) = 1 4. Lasketaan luku d, jolla de 1 (mod ϕ(n)) 5. Julkaistaan salausavain (n, e) ja pidetään avausavain d vain avaimen omistajan tiedossa. Olkoon m = (m 1, m 2,..., m k ) lähetettävä viesti, missä 2 m i < n. Kustakin visestin osasta m i muodostetaan salakirjoituksen osa c i laskemalla kongruenssi c i m e i (mod n), missä (e, n) on viestin vastanottajan salausavain. Salattu viesti c = (c 1, c 2,..., c k ) lähetetään vastaanottajalle. Purkaakseen salauksen vastaanottaja käyttää avausavaintaan d laskiessaan kongruenssin c d i (mod n), jolle tullaan osoittamaan että c d i m i (mod n) Lause 4.1. Olkoon p ja q erillisiä alkulukuja ja n = pq. Tällöin m lϕ(n)+1 m (mod n) kun m Z ja l N Todistus. Kun syt(m, n) = 1 väite pätee Eulerin lauseen nojalla m ϕ(n) 1 (mod n) m lϕ(n) 1 (mod n) m lϕ(n)+1 m (mod n). Olkoon syt(m, n) 1. Koska p ja q ovat alkulukuja, täytyy olla että syt(m, n) = 8

p tai syt(m, n) = q tai syt(m, n) = n. Oletetaan että syt(m, n) = pq = n. Tällöin m = kn k 0 0 (mod n) jollakin k Z, ja siten m lϕ(n)+1 0 lϕ(n)+1 0 m (mod n) Oletetaan sitten että syt(m, n) = q. Nyt m 0 (mod q) m lϕ(n)+1 m (mod q) q m lϕ(n)+1 m. Toisaalta Eulerin lauseen nojalla m p 1 1 (mod p) m (q 1)(p 1) 1 (mod p). Koska ϕ(n) = (q 1)(p 1), niin p m lϕ(n)+1 m. Koska sekä q m lϕ(n)+1 m, että p m lϕ(n)+1 m niin pq m lϕ(n)+1 m m lϕ(n)+1 m (mod n). Tapaus syt(m, n) = p todistetaan vastaavasti kuin tapaus syt(m, n) = q. Nyt lausen 4.1 nojalla c d i = (m e B i ) d B = m e Bd B 1+1 i = m lϕ(n B)+1 i = (m ϕ(n) i ) l m i (1) l m i m i (mod n) ja vastaanottaja voi lukea viestin m. Salauksen lisäksi RSA-salausta voidaan käyttää myös viestien allekirjoittamiseen. Tämä tapahtuu laskemalla numeerisesta viestistä tiivisteluku, joka 9

salataan lähettäjän yksityisellä avaimella d ja liitetään viestiin. Vastaanottaja avaa tiivisteluvun lähettäjän julkisella avaimella e ja laskee varsinaisesta viestistä tiivisteluvun. Jos viestistä laskettu luku on sama kuin allekirjoituksen luku, viestin tiedetään olevan julkisen avaimen omistajan lähettämä ja että viestiä ei ole muunneltu, sillä oletuksella että tiiviste on laskettu turvallisella funktiolla. Yleensä viestit sekä allekirjoitetaan että salataan. 4.2 Salauksen murtaminen Ainoa tunnettu tapa RSA-salauksen murtamiseen on selvittää joku luvuista p, q ja ϕ(n). Jos yksi näistä löydetään, muut luvuista voidaan laskea välittömästi löydetyn arvon pohjalta. Käytännössä tämä tarkoittaa luvun n jakamista tekijöihinsä, mikä on parhaimmillankin luvun n pituuden suhteen ylipolynomista kompleksisuusluokkaa oleva ongelma. Koska RSA-algoritmi on korkeintaan polynomista kompleksisuusluokkaa, tarpeeksi pitkällä avaimella salattua viestiä on käytännössä mahdoton murtaa perinteisellä laskennalla. On kuitenkin olemassa useita erilaisia heikkouksia, joita hyökkääjä voi hyödyntää mikäli avaimet on valittu huolimattomasti. Esimerkiksi jos alkuluvut p ja q on valittu jostakin tunnetusta taulukosta, hyökkääjän on helppo käydä taulukon alkiot läpi ja löytää tekijät. Jos p ja q ovat liian lähellä toisiaan (ja p > q), hyökkääjä voi löytää ne helposti neliöseulamnetelmän avulla. Tällöin (p q)/2 on pieni ja (p + q)/2 on vain hieman suurempi kuin n. Koska ( ) 2 ( ) 2 p + q p q = pq = n 2 2 hyökkääjän riittää etsiä sellainen kokonaisluku x > n, jolla x 2 n = y 2 jollakin kokonaisluvulla y. Tällöin x = (p + q)/2, y = (p q)/2 ja n = x 2 y 2 = (x y)(x + y), joten p = x + y ja q = x y. [2] 10

Esimerkki 4.2. 97343 = 311, 998 ja 312 2 97343 = 1, joten 97343 = (312 1)(312 + 1) = 311 312 Alkulukujen p ja q valinnassa on myös otettava huomioon muiden mahdollisien avausavaimien määrä. Salausavaimella e salatun viestin voi purkaa millä tahansa luvulla d, jolla de 1 (mod pyj(q 1, p 1)). Näin ollen mitä pienempi lukujen p 1 ja q 1 pienin yhteinen jaettava on, sitä useampi toimiva avausavain on olemassa ja sitä helpompi salaus on murtaa satunnaisella arvauksella. [2] Tällaisia mahdollisia heikkouksia on useita, mutta ne ovat vältettävissä huolellisella avaimenvalinnalla. Edellämainittujen lisäksi esimerkiksi toistetulla salauksella on mahdollista murtaa jotkin avaimet. Kvanttitietokoneella olisi teoriassa mahdollista suorittaa tekijöihin jako polynomisessa ajassa ja näin murtaa RSA tehokkaasti. Kvanttiteknologia ei kuitenkaan kehittynyt tarpeeksi jotta se voisi käsitellä niin isoja lukuja kuin RSA käyttää. 11

Lähdeluettelo [1] J. H. Silverman: A Friendly Introduction to Number Theory. Pearson Prentice Hall, USA, 2006. [2] Arto Salomaa: Public-Key Cryptography. Springer, Saksa, 1996 [3] Leinonen, Rinta-aho, Matala-aho, Väänänen: Salausmenetelmät kurssin luentorunko, Oulun yliopisto 2015 12