Mikä RSA-salaus on, ja miten se toimii?
Rivest-Shamir-Adleman (RSA) -salaus on yksi vanhimmista julkisen avaimen salakirjoitusjärjestelmistä, mutta sitä käytetään laajasti nykyäänkin. RSA-salakirjoitusjärjestelmää käytetään monissa yhteyksissä, aina VPN-yhteyden luomisesta sähköpostien salaamiseen. Mutta miten RSA-salaus toimii, ja onko algoritmi todella turvallinen? Näihin kysymyksiin perehdytään alla yksityiskohtaisesti.
Sisällysluettelo
Sisällysluettelo
RSA-salauksen määritelmä
RSA on julkisen avaimen salakirjoitusjärjestelmä, jota käytetään turvallisten yhteyksien ja digitaalisten allekirjoitusten luomiseen.
RSA-salauksen nimi perustuu sen kehittäjiin: Rivest, Shamir ja Adleman. He kehittivät algoritmin työskennellessään Massachusetts Institute of Technology -oppilaitoksessa vuonna 1977.
RSA käyttää julkista avainta viestin salaamiseen ja yksityistä avainta salauksen purkamiseen. RSA-salausalgoritmin taustalla oleva matematiikka sisältää yksisuuntaisen funktion – se on helppo laskea, mutta käänteinen laskutoimitus on vaikea suorittaa. Siksi RSA on turvallinen salausalgoritmi, jota on käytännössä mahdotonta murtaa väsytyshyökkäyksellä.
Miten RSA-salaus toimii?
RSA edustaa epäsymmetristä salakirjoitustyyppiä (julkisen avaimen salaus), joka vaatii sekä julkisen että yksityisen avaimen käyttöä.
- Julkista avainta tarvitaan viestin salaamiseen eli tavallisen tekstin muuntamiseen salatekstiksi. Julkisia avaimia voidaan jakaa ja käyttää avoimesti.
- Yksityistä avainta tarvitaan salatun viestin salauksen purkamiseen, eli salatekstin muuntamiseen tavalliseksi tekstiksi. Yksityinen avain on pidettävä aina salassa.
Symmetrinen salaus (esimerkiksi AES ja Twofish) taas käyttävät samaa yksityistä avainta viestin salaukseen ja salauksen purkamiseen. Se toimii hyvin, kun yksityinen avain on mahdollista toimittaa viestin vastaanottajalle turvallisesti etukäteen. Jos se ei ole mahdollista, julkisen avaimen käyttö salaamiseen, kuten esimerkiksi RSA-salauksessa, on erinomainen ratkaisu.
Epäsymmetriset salausalgoritmit sisältävät neljä osaa: julkisten ja yksityisten avainten luomisen, (julkisen) avaimen lähettämisen avaintenvaihtoalgoritmin välityksellä, salauksen ja sen purkamisen.
Avaimen luominen
Avaimen luominen on prosessi, jossa RSA-avaimet, sekä julkinen että yksityinen avain, lasketaan määritetyillä funktioilla. Prosessi sisältää seuraavat vaiheet:
1. Kahden alkuluvun valitseminen (p ja q)
Jotta salaus on turvallinen, alkulukujen täytyy olla erilaisia keskenään sekä suuria.
Esimerkiksi 2048-bittinen RSA-salaus käyttää alkulukuja, jotka ovat 308 numeron kokoisia. Koska tällaisten suurten numeroiden luominen ei ole helppoa, niiden luomiseen käytetään alkulukutestiä.
2. Kertoimen (n) laskeminen
Yksityisen ja julkisen avaimen ensimmäinen puolisko on kerroin (n) – p:n ja q:n tulo:
n = p x q
Tämä laskutoimitus on helppo suorittaa, mutta samalla on tärkeää, että on käytännössä mahdollista arvioida, mitä lukuja käytettiin tulon tuottamiseen.
Esimerkiksi jos p on 6 637 ja q on 8 971, puhelimesi laskinsovellus kertoo, että tulo on 59 540 527. Mutta jos näet numeron 59 540 527, osaatko selvittää tai laskea samalla laskimella, mitä numeroita kerrottiin tulon saamiseksi?
Luultavasti et. Ja juuri tämä on RSA-salauksen idea: algoritmiin on oltava helposti laskettavissa, mutta sen laskeminen taaksepäin ei ole onnistu.
Yllä nähdyn esimerkin luvut olisi helppo hajottaa laskentaa varten. Mutta kuten mainitsimme, RSA-salaus käyttää 308 numeron kokoisia alkulukuja, jotka ovat paljon suurempia ja vaikeampia laskea.
3. Julkisen avaimen luominen (e)
Julkinen RSA-avain koostuu kertoimesta (n) ja julkisesta eksponentista (e). Ennen kuin voit laskea e:n (julkisen avaimen jälkimmäinen puolisko), sinun täytyy laskea φ-funktio n-arvolle:
φ (n) = (p − 1) x (q − 1)
Sitten voit valita e:n – satunnaisen kokonaisluvun, joka on suurempi kuin 1 mutta pienempi kuin φ ja sitten laskea suhteellisen alkuluvun sille. Yleensä lukua 65 537 käytetään e:nä RSA-salauksessa.
4. Yksityisen avaimen (d) luominen
Yksityinen RSA-avain muodostuu kertoimesta (n) ja yksityisestä eksponentista(d). d lasketaan p:stä ja q:sta ja se sisältää näiden lukujen suurimman yhteisen jakajan selvittämisen. Tätä prosessia kutsutaan Eukleideen algoritmiksi, ja sen laskeminen kannattaa suorittaa verkkolaskimella.
Avaimen jakaminen
Jos joku haluaa käyttää RSA-salausta salatakseen viestin sinulle, hänen täytyy tietää, mikä julkinen avaimesi on. Voit jakaa julkisen avaimen millä tahansa tavalla, eli sitä ei tarvitse lähettää salaisesti.
Salaus
Jos toisella henkilöllä on nyt julkinen avaimesi (e ja n), ja hän haluaa lähettää sinulle viestin (M), mitä tapahtuu seuraavaksi?
Jotta tavallinen tekstistä koostuva viesti voidaan muuttaa salatekstiksi (C), tarvitaan seuraavaa funktiota:
C = Me mod n
Mod tarkoittaa kertomista ja se viittaa lukuun, joka jää jäljelle, kun yksi puoli on jaettu toisella, esimerkiksi: 11 mod 3 = 2 (3 mahtuu lukuun 11 kolme kertaa, ja jäljelle jää 2).
Jos viesti, joka halutaan lähettää, on numero, M korvataan numerolla, ja funktio sisältää kaikki puuttuvat osat. Jos kyseessä on tekstistä koostuva viesti, teksti täytyy muuntaa ensin numeroiksi. Esimerkiksi ASCII-aakkosia käyttäen viesti “NORDVPN” olisi numeroina “78798268868078”.
Salauksen purkaminen
Jotta voit purkaa vastaanottamasi salatekstin, tarvitset yksityisen avaimen (d ja n), jota säilytetään salaisessa paikassa sekä salatekstin (C). Käytä seuraavaa funktiota:
M = Cd mod n
Se muuntaa salatekstin takaisin alkuperäiseksi viestiksi.
Missä RSA-salausta käytetään?
Koska RSA on julkisen avaimen salakirjoitusjärjestelmä, se on hyödyllinen silloin, kun halutaan lähettää tietoa salaisesti henkilöille tai palvelimille, joiden kanssa ei ole oltu yhteydessä aiemmin, eikä käytössä ole yksityisiä avaimia symmetristä salausta varten. RSA-salausta käytetään siis selaimissa, sähköpostipalveluissa, viestisovelluksissa, pilvipalveluissa, VPN-verkoissa, P2P-järjestelmissä ja muissa viestintäkanavissa.
Mitä digitaaliseen salaukseen tulee, RSA on kuitenkin jo muinainen, joten sitä käytetään yleensä yhdessä muun salauksen kanssa. Yksinkertaisena esimerkkinä voidaan mainita RSA-salauksen käyttävän symmetristä salausta yksityisen avaimen salaamiseen, jotta avain voidaan jakaa turvallisesti samalla kun varsinaista salattavaa tietoa suojataan symmetrisellä salauksella.
RSA-salauksen pääkäyttötapoihin kuuluvat turvallisen yhteyden luominen ja digitaalisten allekirjoitusten luominen. RSA-salausta ei käytetä viestien tai tiedostojen salaamiseen, sillä muut salausjärjestelmät ovat turvallisempia ja nopeampia sekä vaativat vähemmän resursseja.
Turvallisen yhteyden luominen
Verkkoselaimet käyttävät RSA-salausta turvallisten internet-yhteyksien luomiseen, mikä voi auttaa väliintulohyökkäysten torjunnassa. Useimmat internet-yhteydet käyttävät SSL-salausta liikenteen suojaamiseen, ja RSA on osa of SSL/TLS-kättelyä. Se löytyy salakirjoituskirjastoista, kuten OpenSSL:stä.
OpenVPN käyttää RSA-salausta avainten vaihtoon ja turvalliseen viestintään VPN-ohjelman ja VPN palvelimen välillä, kun VPN-yhteys muodostetaan. VPN-ohjelmistot kuitenkin yleensä suojaavat varsinaisen datan muilla salakirjoitustavoilla. Esimerkiksi NordVPN:n seuraavan sukupolven salaus käyttää AES-256-GCM-salausta.
RSA oli myös ensimmäinen algoritmi, jota käytettiin PGP-salauksessa istuntoavainten salaukseen.
Digitaalisten allekirjoitusten luominen
Yksityistä avainta voidaan käyttää viestin tai asiakirjan allekirjoittamiseen. Toinen osapuoli käyttää sitten julkista avainta viestin tai asiakirjan aitouden varmistamiseen.
Tämä on monipuolinen toiminto, joten mitä digitaalisiin allekirjoituksiin tulee, RSA-salausta voidaan käyttää kaikkialla aina sähköpostista verkkopankkeihin ja verkko-ostoksiin.
Esimerkiksi sähköpostit allekirjoitetaan digitaalisesti usein PGP-salausta käyttäen, joka käyttää RSA-algoritmia digitaalisen allekirjoituksen luomiseen.
RSA-salauksen edut ja haitat
RSA-salakirjoitusjärjestelmällä on hyviä ja huonoja puolia, joihin on hyvä tutustua ennen RSA-salauksen käyttämistä.
- RSA-algoritmin käyttäminen ja ymmärtäminen on helppoa. Algoritmi on melko selkeä, ja funktiotkaan eivät ole kovin monimutkaisia verrattuna muihin algoritmeihin, kuten elliptisten käyrien salausmenetelmiin ja sen suosituimpaan ECDSA-algoritmiin. Monet palvelut valitsevat nykyään RSA-salauksen ECDSA-algoritmin sijaan, sillä se on tehokkaampi resurssien hallinnan kannalta.
- RSA-salaus on melko monipuolinen, joten sitä voidaan käyttää (ja käytetään) laajasti.
- Asianmukaisesti toteutettuna RSA-salausta on mahdotonta murtaa väsytyshyökkäyksillä, ainakin tämänhetkisillä laskentamahdollisuuksilla.
- Väärin toteutettuna RSA on altis monenlaisille hyökkäyksille.
- RSA-avaimen pituus on tärkeää salauksen turvallisuuden kannalta, mutta pitempien avainten luominen vaatii paljon tehoa, joten ne eivät aina ole hyvä ratkaisu.
- Salaus vie aikaa ja vaatii runsaasti resursseja.
- Kasvava saatavilla olevien julkisten RSA-avainten määrä auttaa hakkereita keksimään keinoja salauksen murtamiseen.
RSA-algoritmin haavoittuvuudet
RSA-salauksen turvallisuus riippuu merkittävästi sen toteutustavasta. Jokaiseen prosessin osaan liittyy haavoittuvuuksia, jotka voivat vaikuttaa salaustulokseen.
Heikot satunnaisten numeroiden generaattorit
RSA-algoritmi alkaa alkulukujen valitsemisella, ja tämä saattaa olla salauksen heikko kohta. Jos numerot eivät ole tarpeeksi satunnaisia, kerroin on helpompi selvittää salauksen murtamiseksi.
Syynä tähän ovat usein heikot satunnaisten numeroiden generaattorit, joten tämän haavoittuvuuden voi välttää käyttämällä pseudo-satunnaisten numeroiden generaattoreita.
Virheellinen avainten luominen
Alkuluvut saattavat olla riittävän satunnaisia, mutta liian pieniä tai liian lähellä toisiaan. Ja se on ongelma.
Koska RSA-algoritmi käyttää julkista avainta salaukseen, avaimen koko on tärkeä, jotta tekijöihin jako voidaan estää. Alkulukujen (p ja q) selvittäminen on helpompaa, kun numerot ovat pienempiä. Ja jos numerot ovat liian lähellä toisiaan, yksityisestä avaimesta (d) tulee melko pieni.
Siksi turvallisuusasiantuntijat suosittelevat minimiksi 2048-bittistä avainkokoa, ja uudemmat RSA-avaimet ovat 4096-bittisiä.
RSA-salaukseen kohdistuvat hyökkäykset
Jos yllä käsitellyistä RSA-salauksen heikkouksista ei olla tietoisia, ne johtavat helposti RSA-hyökkäyksiin.
Tekijöihin jako -hyökkäys
Jos haavoittuvuuksia ei huomioida, kyberrikolliset voivat hyödyntää niitä ja toteuttaa tekijöihin jako -hyökkäyksen.
RSA-salaus on turvallinen vain, jos kukaan ei saa selville alkulukuja p ja q niiden tulon n perusteella. Jos alkuluvut ovat liian lähellä toisiaan tai ne eivät ole tarpeeksi satunnaisia tai suuria, hyökkääjät voivat jakaa ne tekijöihinsä ja sen jälkeen yksityisen avaimen selvittäminen on helppoa.
Sivukanavahyökkäys
Sivukanavahyökkäyksissä analysoidaan salausprosessia koskevia lisätietoja sen sijaan, että salausavain pyrittäisiin murtamaan. Rikolliset saattava esimerkiksi selvittää, kuinka paljon tehoa algoritmi käyttää tai jopa minkälaisia ääniä tietokone pitää sen aikana.
Ajoitushyökkäys on myös esimerkki sivukanavahyökkäyksestä. RSA-ajoitushyökkäyksissä hyökkääjät analysoivat, kuinka kauan erilaisten salatekstien salaus kestää päätelläkseen yksityisen avaimen (d) sen perusteella.
Selkeä teksti -hyökkäys
Jos hyökkääjä saa yhdistettyä jonkin osan selkeästä tekstistä salatekstiin, he voivat jatkaa selkeä teksti -hyökkäyksiä:
- Lyhyt viesti -hyökkäys. Hyökkääjä on saanut selville jonkin osan tavallisesta tekstistä ja salaa sen salatekstiksi. Hän voi käyttää sitä päätelläkseen muun tavallisen tekstin. Tämän voi torjua lisäämällä selkeään tekstiin ylimääräistä tietoa ennen sen salausta.
- Kierrätyshyökkäys. Hyökkääjää testaa permutaatiota, joita on saatettu käyttää salatekstin luomiseen. Jos se toimii, hyökkääjä voi sitten suorittaa prosessin lopusta alkuun selvittääkseen salatekstin sisällön.
- Suojaamaton viesti -hyökkäys. Teoriassa on mahdollista, että salattu salateksti on osittain identtinen alkuperäisen selkeän tekstin kanssa. Jos näin käy, hyökkääjät voivat päätellä salatun viestin muut osat ja jatkaa hyökkäyksen suorittamista.
Valittu salateksti -hyökkäys
Kuten yllä mainittiin, yksityisen avaimen tuottamiseen käytetään Eukleideen algoritmia. Koska tämä algoritmi ei ole salainen, hyökkääjät voivat käyttää laajennettua Eukleideen algoritmia selvittääkseen selkeän tekstin, joka on salattu. Näin tapahtuvat valittu salateksti -hyökkäykset.
Onko RSA-salaus turvallinen?
Kun RSA-salauksen haavoittuvuudet ja hyökkäykset otetaan huomioon, on luonnollista pohtia, onko RSA-salaus turvallinen. Yhtä oikeaa vastausta ei ole.
Tarkemmin sanottuna vastaus riippuu siitä, miten salaus on toteutettu.
Jos algoritmi toteutetaan haavoittuvuuksia huomioimatta, RSA-salaus ei ole riittävän vahva hyökkäyksiä vastaan. Tutkimusten mukaan valitettavasti monet RSA-salauksen käyttäjät jättävät haavoittuvuudet huomiotta melko usein.
Vuonna 2012 tutkijat keräsivät 5,5 miljoonaa julkista avainta ja saivat selville, että 1024-bittinen RSA-salaus tarjosi parhaimmillaan 99,8 %:n turvallisuuden. Toisin sanoen 13 000 avainta olisi helppo murtaa.
Uudemmassa Keyfactorin tutkimuksessa tutkijat saivat selville, että yksi jokaisesta 173 RSA-sertifikaatista on altis tekijöihin jako -hyökkäyksille.
Jos RSA-algoritmi kuitenkin luodaan haavoittuvuuksia torjuen, avaimen pituus on riittävä ja turvallisuutta lisätään keinoilla kuten lisätietojen lisäämisellä selkeään tekstiin, RSA-salaus on turvallinen ja sitä ei voida murtaa useimmilla moderneilla tietokoneilla. Ainakaan toistaiseksi.
RSA-salauksen tulevaisuus
RSA-salaus ei ole paras salausalgoritmi turvallisuuden tai tehokkuuden kannalta, joten sen tulevaisuus näyttää melko synkältä.
Perinteisellä tietokoneella kestäisi 300 biljoonaa vuotta murtaa RSA-salaus, mutta kvanttitietokoneella se onnistuisi 10 sekunnissa. Koska tällaisia tietokoneita ei vielä ole, RSA vaikuttaa toistaiseksi turvalliselta. Mutta tämä ei ole ainoa asia, joka kielii RSA-algoritmin synkästä tulevaisuudesta.
Yhdysvaltain standardisointi- ja teknologiainstituutin suositusten mukaan RSA-salaus 2048-bittisillä salausavaimilla on turvallinen vuoden 2030 loppuun asti. Vaikka yksi ratkaisu olisikin valita aina 4096-bittinen avain, joka olisi luotettava pitempään, näin pitkät avaimet eivät ole kestävä ratkaisu.
Loppujen lopuksi salausalgoritmin valintaperuste ei ole ainoastaan turvallisuus: kyse on myös salauksen tehokkuudesta, ja siinä RSA ei pärjää.
RSA-algoritmi vaatii runsaasti resursseja. Se on myös hidas, erityisesti jos käytät pitempiä avaimia, mutta lyhyemmät avaimet tekevät salausjärjestelmästä turvattoman. Joten vaikka 4096-bittiset avaimet ovat käyttökelpoisia tällä hetkellä, sitä suuremmat avaimet kuluttavat liikaa laskentatehoa.
RSA-salauksen käyttö on vähentynyt vuosien ajan. Sen käyttö on liian mutkikasta, kun saatavilla on parempiakin vaihtoehtoja – järjestelmiä, jotka ovat turvallisia ja tehokkaita, kuten elliptisten käyrien salausmenetelmät. Ajan mittaan RSA jää siis väistämättä käytöstä.
Verkkoturvallisuus käynnistyy napsautuksella.
Pysy suojattuna maailman johtavan VPN:n avulla