RSA
Wikipedia
RSA on epäsymmetrinen julkisen avaimen salausalgoritmi, jota käytetään laajalti elektronisessa kaupankäynnissä. Ron Rivest, Adi Shamir ja Len Adleman kuvasivat algoritmin vuonna 1977; menetelmän nimi tulee heidän sukunimiensä alkukirjaimista.
Englantilainen matemaatikko Clifford Cocks kuvasi vastaavan algoritmin GCHQ:n sisäisessä muistiossa jo vuonna 1973. Työ julistettiin kuitenkin salaiseksi, eikä sitä paljastettu ennen vuotta 1997.
RSA:n turvallisuus perustuu olettamukseen, jonka mukaan erittäin suurien kokonaislukujen tekijöihinjako on vaikeaa.
MIT patentoi algoritmin 1983 Yhdysvalloissa. Patentti raukesi syyskuussa 2000. Patentti ei koskenut muita maita, koska algoritmi oli jo julkaistu ennen patenttihakemusta.
Sisällysluettelo |
[muokkaa] Toiminta
[muokkaa] Avainten luonti
Oletetaan että Liisa haluaa lähettää Pekalle yksityisen viestin turvatonta reittiä pitkin. Hän toimii seuraavasti luodakseen julkisen avaimen ja yksityisen avaimen:
- Valitse kaksi suurta alkulukua p ≠ q satunnaisesti ja toisistaan riippumatta. Laske N = p q.
- Valitse kokonaisluku 1 < d < N jolle (p-1)(q-1) on suhteellinen alkuluku.
- Laske e siten, että d e ≡ 1 (mod (p-1)(q-1)).
- Tuhoa kaikki p:tä ja q:ta koskevat tiedot.
- (Kohdat 2 ja 3 voidaan suorittaa laajennetulla Euklidisella algoritmilla; ks. modulaariaritmetiikka.)
N ja e muodostavat julkisen avaimen ja N sekä d muodostavat yksityisen avaimen. Huomaa, että ainoastaan d on salainen ja että N on julkisesti saatavilla. Liisa lähettää julkisen avaimen Pekalle ja pitää yksityisen avaimen salaisena.
[muokkaa] Viestin salaaminen
Sitten lasketaan c:
[muokkaa] Salauksen purkaminen
Liisa saa c:n Pekalta ja tietää salaisen avaimensa d. Hän voi palauttaa n:n c:stä seuraavan kaavan avulla:
Liisa voi nyt selvittää muuttujan n, koska n < N. Hän voi palauttaa alkuperäisen viestin m, mikäli hän tuntee muuttujan n.
Purku toimii, koska
ja ed ≡ 1 (mod p-1) ja ed ≡ 1 (mod q-1). Fermat'n pieni teoreema antaa
- ja
jonka mukaan (koska p ja q ovat erisuuria alkulukuja)
[muokkaa] Allekirjoittaminen
RSA:ta voidaan käyttää myös viestien allekirjoittamiseen. Tällöin viestistä lasketaan nk. tiiviste (engl. hash) tiivistefunktion (esim. MD5, SHA-1) avulla. Tiiviste kryptataan yksityisellä allekirjoitusavaimella. Kun viestin allekirjoitus sitten halutaan tarkastaa, puretaan tiivisteen salaus ja lasketaan viestistä uusi tiiviste. Jos uusi tiiviste on sama kuin viestin mukaan alun perin kryptattu tiiviste, viesti ei ole muuttunut matkalla, ja viesti on juuri siltä henkilöltä jolta se väittää olevansa. Katso myös digitaalinen allekirjoitus.
[muokkaa] Algoritmit
RSA:n toteutus perustuu nopeaan potenssiinkorotusalgoritmiin jäännösluokkarenkaassa modulo N. Potenssiinkorotuksen toteuttamiseksi tarvitaan nopea kertolaskualgoritmi samassa renkaassa.
Järjestelmän avainten valinnassa tarvitaan isoja alkulukuja, jotka on mahdollisimman satunnaisesti valittu. Tätä varten tarvitaan nopeita ja luotettavia alkulukutestejä.
[muokkaa] Turvallisuus
Oletetaan että Eve sieppaa julkisen avaimen N ja e sekä salatekstin c.
Toistaiseksi ei ole todistettu, että N:n tekijöihinjako olisi ainoa tapa päätellä n c:n perusteella. Helpompaa menetelmää ei ole toistaiseksi julkistettu. Niinpä yleisesti oletetaan ettei Eve voi lukea viestiä, jos N on tarpeeksi suuri.
Peter Shor osoitti 1993 että kvanttitietokone voisi periaatteessa suorittaa tekijöihinjaon polynomisessa ajassa. Jos (tai kun) kvanttitietokoneista tulee käytännöllisiä, Shorin algoritmi tekee RSA:sta vanhentunutta teknologiaa.
[muokkaa] Kirjallisuutta
Singh, Simon 1999. Koodikirja : salakirjoituksen historia muinaisesta Egyptistä kvanttikryptografiaan. Helsinki: Tammi