RSA (Rivest-Shamir-Adleman) on algoritmi, jota nykyaikaiset tietokoneet käyttävät viestien salaamiseen ja purkamiseen. Se on epäsymmetrinen salausalgoritmi. Epäsymmetrinen tarkoittaa, että on olemassa kaksi eri avainta. Tätä kutsutaan myös julkisen avaimen salaukseksi, koska toinen avaimista voidaan antaa kenelle tahansa. Toinen avain on pidettävä salassa. Algoritmi perustuu siihen, että suuren yhdistetyn luvun tekijöiden löytäminen on vaikeaa: kun tekijät ovat alkulukuja, ongelmaa kutsutaan alkutekijöinniksi. Se on myös avainparin (julkisen ja yksityisen avaimen) generaattori.
RSA:ssa käytetään julkista ja yksityistä avainta. Julkinen avain voi olla kaikkien tiedossa - sitä käytetään viestien salaamiseen. Julkisella avaimella salatut viestit voidaan purkaa vain yksityisellä avaimella. Yksityinen avain on pidettävä salassa. Yksityisen avaimen laskeminen julkisesta avaimesta on hyvin vaikeaa.
Miten RSA toimii – perusvaiheet
RSA:n toiminta voidaan jakaa kolmeen päävaiheeseen: avainten luominen, salaus ja purku.
- Avainten luominen
- Valitaan kaksi suurta satunnaista alkulukua p ja q.
- Lasketaan n = p × q. Tämä n on osa sekä julkisesta että yksityisestä avaimesta.
- Lasketaan φ(n) = (p − 1) × (q − 1) (joskus merkitään myös φ tai lambda). Tämä luku liittyy p:n ja q:n rakenteeseen.
- Valitaan eksponentti e siten, että 1 < e < φ(n) ja e on suhteellisesti alkuluku φ(n):n kanssa (eli gcd(e, φ(n)) = 1). e on osa julkista avainta.
- Lasketaan d, joka on e:n käänteisluku modulo φ(n): d × e ≡ 1 (mod φ(n)). d on yksityisen avaimen eksponentti.
- Julkinen avain on (n, e) ja yksityinen avain on (n, d).
- Salaus
Kun halutaan salata viesti m (esimerkiksi ennen lähettämistä), viesti muunnetaan ensin kokonaisluvuksi m, jossa 0 ≤ m < n (käytännössä viesti ensin täytetään/padataan turvallisesti). Salattu teksti c lasketaan kaavalla:
c ≡ me (mod n)
- Purku
Yksityisellä avaimella purku tehdään kaavalla:
m ≡ cd (mod n)
Tämä palauttaa alkuperäisen m:n (olettaen, että padding on hoidettu oikein).
Yksinkertainen esimerkki
Yksinkertaistettu ja yleisesti käytetty opetusesimerkki:
- Valitaan p = 61 ja q = 53 → n = 3233
- φ(n) = (61 − 1)(53 − 1) = 3120
- Valitaan e = 17 (gcd(17, 3120) = 1)
- Lasketaan d = 2753, koska 17 × 2753 ≡ 1 (mod 3120)
- Julkinen avain = (3233, 17), yksityinen avain = (3233, 2753)
- Salataan m = 65: c = 6517 mod 3233 = 2790
- Purkua varten m = 27902753 mod 3233 = 65
Turvallisuus ja käytännön varoitukset
- Faktoroinnin vaikeus: RSA:n turvallisuus perustuu siihen, että on laskennallisesti vaikea löytää p:tä ja q:ta, kun ainoastaan n tunnetaan. Jos n pystytään faktoroimaan, yksityinen avain saadaan helposti.
- Avaimen koko: Nykyään suositellaan vähintään 2048‑bitin avaimia tavalliseen käyttöön. Pitkäaikaisessa tai korkeassa turvallisuusvaatimuksessa käytetään 3072 tai 4096 bittiä.
- Padding: Pelkkä matemaattinen me mod n ei ole riittävä käytännössä. Turvallinen toteutus käyttää padding‑kaavoja kuten OAEP salaukseen ja RSASSA‑PSS allekirjoituksiin. Ilman asianmukaista paddingia RSA altistuu monille hyökkäyksille (esim. valittu selteksti‑hyökkäykset).
- Algoritmi ei ole jatkuvasti turvallinen tulevaisuudessa: Kvanttitietokoneet voisivat suorittaa Shorin algoritmin, joka murtaisi RSA:n tehokkaasti. Tämän vuoksi tutkitaan ja otetaan käyttöön post‑kvanttisia algoritmeja.
- Hyökkäysvektorit: Huonot satunnaislähteet avainten generoinnissa, pienet e‑arvot ilman asianmukaista täyttöä ja sivukanava‑hyökkäykset ovat yleisiä riskitekijöitä.
Käyttötapaukset
- Salaus: RSA voi salata pienen määrän dataa tai yleensä symmetrisen avaimen (avaimen salaaminen), jota käytetään varsinaisen viestiliikenteen salaamiseen.
- Allekirjoitukset: RSA:lla tehdään digitaalisia allekirjoituksia (esim. PKCS#1 standardit) varmistaen viestin eheys ja allekirjoittajan aitous.
- Avainvaihto ja todennus: RSA oli pitkään yleinen menetelmä TLS/Y.509‑sertifikaateissa ja monissa PKI‑järjestelmissä.
Hyödyt ja rajoitukset
- Hyödyt: Mahdollistaa salauksen ilman, että lähettäjien tarvitsee jakaa salaista avainta etukäteen; tukee allekirjoituksia ja todennusta.
- Rajoitukset: Hitaampi kuin symmetriset algoritmit, vaatii suurempia avaimia samasta turvallisuustasosta; riippuvainen hyvistä satunnaislähteistä ja oikein toteutetusta paddingista.
Yhteenveto
RSA on yksi tunnetuimmista julkisen avaimen salaustekniikoista ja sitä käytetään laajasti edelleen monissa turvallisuusprotokollissa. Sen perusta on helpon laskun ja vaikean käänteisen ongelman yhdistelmä: kertominen on helppoa, faktorisointi vaikeaa. Käytännössä RSA toimii parhaiten yhdessä muiden menetelmien (esim. symmetrisen salauksen ja turvallisen paddingin) kanssa, ja sen tulevaisuus riippuu osaltaan kvanttilaskennan kehityksestä.