RSA | |
---|---|
Perustamis- / luomis- / esiintymispäivä | 1977 [1] |
Nimetty | Rivest, Ronald Lynn , Adi Shamir ja Leonard Max Adleman |
Kaava, joka kuvaa lakia tai lausetta | [2] |
RSA (lyhenne sanoista Rivest, Shamir ja Adleman) on julkisen avaimen salausalgoritmi, joka perustuu suuren kokonaisluvun tekijöiden jakamisen ongelman laskennalliseen monimutkaisuuteen .
RSA-salausjärjestelmä oli ensimmäinen järjestelmä, joka soveltui sekä salaukseen että digitaaliseen allekirjoitukseen . Algoritmia käytetään useissa salaussovelluksissa, mukaan lukien PGP , S/MIME , TLS / SSL , IPSEC / IKE ja muut [3] .
Ajatuksen epäsymmetrisestä julkisen/yksityisen avaimen salausjärjestelmästä antavat Whitfield Diffie ja Martin Hellman , jotka julkaisivat konseptin vuonna 1976. He esittelivät myös digitaalisia allekirjoituksia ja yrittivät soveltaa lukuteoriaa. Heidän muotoilussaan käytettiin jaettua salaista avainta, joka luotiin eksponentialisoimalla jokin luku modulo alkuluku. He jättivät kuitenkin avoimeksi ongelman yksisuuntaisen funktion toteuttamisesta, ehkä siksi, että tekijöiden jakamisen monimutkaisuutta ei silloin ymmärretty hyvin.
Ron Rivest, Adi Shamir ja Leonard Adleman MIT:stä tekivät useita yrityksiä vuoden aikana luodakseen yksisuuntaisen funktion, jota olisi vaikea kääntää. Rivest ja Shamir tietotekniikan tutkijoina ehdottivat monia mahdollisia ominaisuuksia, ja Adleman matemaatikkona oli vastuussa heidän heikkouksiensa löytämisestä. He kokeilivat monia lähestymistapoja, mukaan lukien "reppu" ja "permutaatiopolynomit". Hetken aikaa he ajattelivat, että se, mitä he halusivat saavuttaa, oli mahdotonta ristiriitaisten vaatimusten vuoksi. Huhtikuussa 1977 he viettivät pesachin erään opiskelijan kotona ja joivat paljon Manishevitz-viiniä ennen kuin palasivat kotiinsa puolenyön aikoihin. Rivest, joka ei pystynyt nukkumaan, makasi sohvalle matematiikan oppikirjansa kanssa ja alkoi miettiä yksipuolista toimintaansa. Hän vietti loppuyön ideansa virallistamiseen, ja aamunkoittoon mennessä suurin osa artikkelista oli valmis. Algoritmi tunnetaan nyt nimellä RSA - heidän sukunimiensä alkukirjaimet samassa järjestyksessä kuin heidän paperissaan.
Englantilainen matemaatikko Clifford Cox, joka työskentelee Britannian tiedustelupalvelun Government Communications Headquartersissa (GCHQ), kuvaili vastaavaa järjestelmää sisäisessä asiakirjassa vuonna 1973. Kuitenkin, kun otetaan huomioon sen toteuttamiseen tuolloin tarvittavat suhteellisen kalliit tietokoneet, sitä pidettiin enimmäkseen uteliaisuus, eikä sitä ole sikäli kuin tiedetään sovellettu. Hänen löytönsä paljastettiin kuitenkin vasta vuonna 1997 sen huippusalaisen luokituksen vuoksi.
Elokuussa 1977 ensimmäinen kuvaus RSA-salausjärjestelmästä [5] ilmestyi Martin Gardnerin "Mathematical Games" -sarakkeessa Scientific American -lehdessä Ronald Rivestin [4 ] luvalla . Lukijoita pyydettiin myös tulkitsemaan englanninkielinen lause, joka oli salattu kuvatulla algoritmilla:
9686 1477 8829 7431 0816 3569 8962 1829 | 9613 1409 0575 9874 2982 3147 8013 9451 | 7546 2225 9991 6951 2514 6622 3919 5781 | 2206 4355 1245 2093 5708 8839 9055 5154 |
Avoimen järjestelmän parametreina käytettiin numeroita n= 1143816...6879541 (129 desimaalin tarkkuutta, 425 bittiä , joka tunnetaan myös nimellä RSA-129 ) ja e=9007. Salauksen purkamisesta tarjottiin 100 dollarin palkkio. Rivestin mukaan luvun tekijöihin laskeminen kestäisi yli 40 kvadriljoonaa vuotta [6] [3] . Kuitenkin hieman yli 15 vuotta myöhemmin, 3. syyskuuta 1993, ilmoitettiin hajautetun laskentaprojektin käynnistämisestä sähköpostitse koordinoidusti RSA-129-numeron tekijöiden selvittämiseksi ja pulman ratkaisemiseksi. Kuuden kuukauden aikana yli 600 vapaaehtoista 20 maasta lahjoitti CPU-aikaa 1 600 laitteeseen (joista kolme oli faksilaitteita). ). Tuloksena päätekijät löydettiin ja alkuperäinen viesti purettiin, joka on lause " THE MAGIC WORDS ARE SQUEAMISH OSSIFRAGE " ("Magic words are a squeamish lamb ") [7] [8] . Voittajat lahjoittivat saamansa palkinnon Free Software Foundationille .
Martin Gardnerin julkaisun jälkeen kuka tahansa saattoi saada täydellisen kuvauksen uudesta salausjärjestelmästä lähettämällä pyynnön postitse Ronald Rivestille ja mukana kirjekuoressa palautusosoite ja postimerkit 35 sentillä. [5] Täydellinen kuvaus uudesta salausjärjestelmästä julkaistiin Communications of the ACM :ssä helmikuussa 1978 [9] .
Patenttihakemus jätettiin 14. joulukuuta 1977, ja MIT oli merkitty omistajaksi. Patentti 4405829 myönnettiin 20. syyskuuta 1983 ja sen voimassaolo päättyi 21. syyskuuta 2000 [10] . Yhdysvaltojen ulkopuolella keksijillä ei kuitenkaan ollut patenttia algoritmille, koska useimmissa maissa se oli hankittava ennen ensimmäistä julkaisua [11] .
Vuonna 1982 Rivest, Shamir ja Adleman perustivat RSA Data SecuritynEMC jaosto . Vuonna 1989 RSA mainitaan yhdessä symmetrisen salauksen DES kanssa RFC 1115 :ssä , mikä aloitti algoritmin käytön syntyvässä Internetissä [12] , ja vuonna 1990 Yhdysvaltain puolustusministeriö alkaa käyttää algoritmia [13] .
Marraskuussa 1993 julkistettiin avoimesti PKCS1 versio 1.5 , joka kuvaa RSA:n käyttöä salaukseen ja sähköisen allekirjoituksen luomiseen. Standardin uusimmat versiot ovat saatavilla myös RFC :inä ( RFC 2313 - 1.5, 1993; RFC 2437 - 2.0, 1998; RFC 3447 - 2.1, 2002).
Joulukuussa 1997 julkistettiin tiedot, joiden mukaan brittiläinen matemaatikko Clifford Cocks, joka työskenteli Yhdistyneen kuningaskunnan hallituksen viestintäkeskuksessa ( GCHQ ) , kuvaili vuonna 1973 RSA:n kaltaista kryptojärjestelmää [14] .
Julkisen avaimen salausjärjestelmät käyttävät niin sanottuja yksisuuntaisia toimintoja , joilla on seuraava ominaisuus:
Yksipuolisuutta ei ymmärretä matemaattisesti todistettuna yksisuuntaisuutena, vaan käänteisarvon käytännöllisenä mahdottomuutena laskea nykyaikaisilla laskentatyökaluilla ennakoitavissa olevassa aikavälissä.
RSA:n julkisen avaimen salausjärjestelmä perustuu kahden suuren alkuluvun tulon tekijöihin jakamiseen liittyvän ongelman monimutkaisuuteen. Salaukseen käytetään suuren luvun eksponentiointia . Salauksen purkamiseksi (käänteinen toiminta) kohtuullisessa ajassa sinun on kyettävä laskemaan tietyn suuren luvun Euler-funktio , jota varten sinun on tiedettävä luvun hajoaminen alkutekijöiksi.
Julkisen avaimen salausjärjestelmässä jokaisella osallistujalla on sekä julkinen avain ( englanniksi julkinen avain ) että yksityinen avain ( englanniksi yksityinen avain ). RSA-salausjärjestelmässä jokainen avain koostuu kokonaislukuparista. Jokainen osallistuja luo oman julkisen ja yksityisen avaimensa itse. Jokainen niistä pitää yksityisen avaimen salassa, ja julkiset avaimet voidaan jakaa kenelle tahansa tai jopa julkaista. Jokaisen RSA-salausjärjestelmän viestintäosapuolen julkiset ja yksityiset avaimet muodostavat "sovitetun parin" siinä mielessä, että ne ovat keskenään käänteisiä , eli:
voimassa olevat julkiset ja yksityiset avainparit vastaavat salaus- ja salauksenpurkutoiminnot siten, että viestit , missä on sallittujen viestien joukko,RSA-avaimet luodaan seuraavasti [15] :
1) valitaan kaksi erilaista satunnaista alkulukua ja tietty koko (esimerkiksi 1024 bittiä kumpikin); 2) heidän tulonsa lasketaan , jota kutsutaan moduuliksi ; 3) Euler-funktion arvo lasketaan luvusta : ; 4) valitaan kokonaisluku ( ), joka on alkuluku funktion arvon kanssa ; lukua kutsutaan julkiseksi eksponenttiksi ; _ _ yleensä ne ottavat alkulukuja, jotka sisältävät pienen määrän yksittäisiä bittejä binäärimuodossa , esimerkiksi alkulukuja Fermat-luvuista : 17, 257 tai 65537, koska tässä tapauksessa nopeaa eksponentiota käyttävään salaukseen kuluva aika on vähemmän;Oletetaan, että Bob haluaa lähettää viestin Alicelle .
Viestit ovat kokonaislukuja välillä - , koprime - n, ts . .
Salausalgoritmi [15] :
|
Salauksen purkualgoritmi :
|
Tätä mallia ei käytetä käytännössä, koska se ei ole käytännössä luotettava (semanttisesti suojattu). Itse asiassa yksisuuntainen funktio E(m) on deterministinen - samoilla syöttöparametrien arvoilla (näppäin ja viesti) se tuottaa saman tuloksen. Tämä tarkoittaa, että salauksen käytännön (semanttisen) luotettavuuden edellytys ei täyty.
Eniten käytössä tällä hetkellä[ milloin? ] on sekoitettu salausalgoritmi, jossa istuntoavain ensin salataan ja sitten osallistujat käyttävät sitä viestiensä salaamiseen symmetrisillä järjestelmillä. Istunnon päätyttyä istuntoavain yleensä tuhoutuu.
Istuntoavaimen salausalgoritmi on seuraava [17] :
Algoritmi :
|
Algoritmi :
|
Siinä tapauksessa, että istuntoavain on suurempi kuin moduuli , istuntoavain jaetaan vaaditun pituisiin lohkoihin (tarvittaessa täytetään nollia) ja jokainen lohko salataan.
Todellakin, varten
Näytetään, että:
.Kaksi tapausta on mahdollista:
Koska luvut ja ovat keskenään käänteisiä kertolaskumoduulin suhteen , ts
jollekin kokonaisluvulle ,sitten:
jossa toinen identiteetti seuraa Fermatin lauseesta .
sitten
Eli tasa-arvo kaikille
Samalla tavalla voidaan osoittaa, että:
.Sitten Kiinan jäännöslauseesta
Vaihe | Toiminnan kuvaus | Operaation tulos |
---|---|---|
Avaimen sukupolvi | Valitse kaksi eri alkulukua | , |
Laske tuote | ||
Laske Euler-funktio | ||
Valitse avoin näytteilleasettaja | ||
Laske salainen eksponentti | ||
Julkaise julkinen avain | ||
Tallenna yksityinen avain | ||
Salaus | Valitse salattava teksti | |
Laske salateksti | ||
Salauksen purku | Laske alkuperäinen viesti |
RSA-järjestelmää voidaan käyttää paitsi salaukseen myös digitaaliseen allekirjoitukseen .
Oletetaan, että Liisa (puoli ) tarvitsee lähettää Bobille (side ) viestin , joka on vahvistettu sähköisellä digitaalisella allekirjoituksella .
Algoritmi :
|
Algoritmi :
|
Koska digitaalinen allekirjoitus tarjoaa sekä viestin kirjoittajan autentikoinnin että todisteen allekirjoitetun viestin sisällön eheydestä, se on analoginen käsin kirjoitetun asiakirjan lopussa olevaan allekirjoitukseen.
Digitaalisen allekirjoituksen tärkeä ominaisuus on, että kuka tahansa, jolla on pääsy sen tekijän julkiseen avaimeen, voi tarkistaa sen. Yksi viestien vaihdon osallistujista voi digitaalisen allekirjoituksen aitouden tarkastettuaan siirtää allekirjoitetun viestin jollekin toiselle, joka pystyy myös varmistamaan tämän allekirjoituksen. Osapuoli voi esimerkiksi lähettää osapuolelle sähköisen shekin. Kun osapuoli on tarkistanut sekissä olevan osapuolen allekirjoituksen , se voi siirtää sen pankkiinsa, jonka työntekijöillä on myös mahdollisuus tarkistaa allekirjoitus ja suorittaa vastaava rahatapahtuma.
Huomaa, että allekirjoitettua viestiä ei ole salattu . Se lähetetään alkuperäisessä muodossaan, eikä sen sisältöä ole suojattu yksityisyyden loukkauksilta. Yhdistämällä yllä olevat salaus- ja digitaaliset allekirjoitukset, RSA voi luoda viestejä, jotka ovat sekä salattuja että digitaalisesti allekirjoitettuja. Tätä varten kirjoittajan on ensin lisättävä viestiin digitaalinen allekirjoitus ja sitten salattava tuloksena oleva pari (joka koostuu itse viestistä ja sen allekirjoituksesta) vastaanottajalle kuuluvalla julkisella avaimella. Vastaanottaja purkaa vastaanotetun viestin salauksen yksityisellä avaimellaan [17] . Jos vedetään analogia tavallisten paperiasiakirjojen lähettämiseen, tämä prosessi on samanlainen kuin jos asiakirjan kirjoittaja laittaisi sinettinsä sen alle, sitten laittaisi sen paperikuoreen ja sinetöi sen niin, että kirjekuoren avasi vain henkilö, jolle viesti on osoitettu.
Koska avainten luomista tapahtuu paljon harvemmin kuin salausta, salauksen purkamista sekä digitaalisen allekirjoituksen luomista ja todentamista toteuttavia toimintoja, laskentatehtävä edustaa pääasiallista laskennallista monimutkaisuutta. Tämä ongelma voidaan ratkaista käyttämällä nopeaa eksponentioalgoritmia . Tätä algoritmia käytettäessä laskenta vaatii modulo-kertooperaatioita [ 19] .
LisääKoska jokainen laskenta vaiheessa 2 vaatii korkeintaan kolme modulokertoa ja tämä vaihe suoritetaan kerran, algoritmin monimutkaisuus voidaan arvioida arvolla .
Julkisilla ja yksityisillä avaimilla suoritettavien toimintojen suoritusajan analysoimiseksi oletetaan, että julkinen avain ja yksityinen avain täyttävät suhteet , . Sitten niiden soveltamisprosesseissa suoritetaan vastaavasti myös modulo-kertoja .
Siten operaatioiden suoritusaika kasvaa nollasta poikkeavien bittien lukumäärän kasvaessa avoimen eksponentin e binääriesityksessä . Salausnopeuden lisäämiseksi e :n arvoksi valitaan usein 17 , 257 tai 65537 - alkuluvut , joiden binääriesitys sisältää vain kaksi yksikköä :
Heurististen arvioiden mukaan salaisen eksponentin pituus , joka riippuu ei-triviaalilla tavalla avoimesta eksponentista ja moduulista , on suurella todennäköisyydellä lähellä pituutta . Siksi tietojen salauksen purku on hitaampaa kuin salaus ja allekirjoituksen vahvistaminen on nopeampaa kuin sen luominen.
RSA-algoritmi on paljon hitaampi kuin AES ja muut algoritmit, jotka käyttävät symmetrisiä lohkosalauksia .
Kun sanomaa puretaan tai allekirjoitetaan RSA-algoritmissa, laskettu eksponentti on melko suuri määrä (luokkaa 1000 bittiä). Siksi tarvitaan algoritmi, joka vähentää operaatioiden määrää. Koska yksityisen avaimen omistaja tuntee luvut ja hajotuksessa , voimme laskea:
Koska ja ovat järjestyksen numeroita , nämä toiminnot vaativat kaksi luvun nostamista 512-bittiseksi tehomoduuliksi 512-bittiseksi numeroksi. Tämä on huomattavasti (1024 bitin testaus osoitti 3 kertaa) nopeampaa kuin 1024-bittisen tehomodulin nostaminen 1024-bittiseen numeroon. Seuraavaksi on vielä palautettava ja mitä voidaan tehdä käyttämällä kiinalaista jäännöslausetta [20] .
Algoritmin vahvuus perustuu salausfunktion käänteisfunktion laskemisen monimutkaisuuteen [21]
.Jotta voit laskea tunnetuista , sinun on löydettävä sellainen
eli etsi k : n käänteisalkio multiplikatiivisesta jäännösryhmästä modulo
Käänteisen moduulin laskeminen ei ole vaikeaa, mutta hyökkääjä ei tiedä arvoa . Jotta voit laskea tunnetun luvun Euler-funktion , sinun on tiedettävä tämän luvun jakautuminen alkutekijöiksi. Tällaisten tekijöiden löytäminen on vaikea tehtävä, ja näiden tekijöiden tunteminen on "salainen ovi" ( englanniksi backdoor ), jota avaimen omistaja käyttää laskennassa . Alkutekijöiden löytämiseen on olemassa monia algoritmeja, ns. factorization , joista nopein on nykyään yleislukukenttäseulamenetelmä , jonka nopeus k-bittiselle kokonaisluvulle on
joillekin .Vuonna 2010 joukko tutkijoita Sveitsistä, Japanista, Ranskasta, Alankomaista, Saksasta ja Yhdysvalloista onnistui laskemaan dataa, joka oli salattu 768-bittisellä RSA-salausavaimella. Alkutekijöiden löytäminen suoritettiin yleisellä lukukenttäseulan menetelmällä [22] . Tutkijoiden mukaan heidän työnsä jälkeen vain vähintään 1024 bitin pituisia RSA-avaimia voidaan pitää luotettavana salausjärjestelmänä. Lisäksi 1024-bittisellä avaimella salauksesta tulisi luopua seuraavien kolmen tai neljän vuoden aikana [23] . 31. joulukuuta 2013 alkaen Mozilla-selaimet eivät enää tue CA-varmenteita, joiden RSA-avaimet ovat alle 2048 bittiä [24] .
Lisäksi, jos algoritmi on toteutettu tai käytetty väärin tai alioptimaalisesti, erityiset kryptografiset hyökkäykset ovat mahdollisia, kuten hyökkäykset skeemoihin, joissa on pieni salainen eksponentti, tai skeemoja, joilla on yhteinen valittu moduuliarvo.
Joidenkin sovellusten on nopeutettava RSA-algoritmin salauksen purkuprosessia. Siksi valitaan pieni salauksenpurkueksponentti. Tapauksessa, jossa purkueksponentti voidaan määrittää polynomiajassa käyttämällä Wiener-hyökkäystä [20] , jatkuvien murtolukujen perusteella .
Lisää Kun annetaan reaaliluku , määrittelemme sekvenssit:
klo
Kokonaislukuja kutsutaan jatkuviksi murtoluvuiksi , jotka edustavat rationaalilukuja konvergentteina. Jokainen sopiva murtoluku on redusoitumaton, ja niiden nimittäjien kasvunopeus on verrattavissa eksponentiaaliseen. Yksi jatkuvien murtolukujen teorian tärkeimmistä tuloksista :
sitten yksi jatkuvan jakeen laajennuksen konvergenteista .
Oletetaan, että meillä on moduuli ja anna hyökkääjän tietää salauseksponentti E, jolla on ominaisuus
Koska on ilmeistä Myös, koska oletettiin, että tarkoittaa,
Koska gcd on konvergentti murto-osan laajennuksessa jatkuvaksi . Siten voit selvittää dekoodauseksponentin korvaamalla lausekkeeseen vuorotellen sopivien murtolukujen nimittäjät:
jollekin satunnaisluvulle Saatuamme yhtäläisyyden, löydämme tarkistettavien sopivien murtolukujen kokonaismääräksi arviolta
Yllä kuvattu Wiener-hyökkäys on mahdollinen vain, jos hyökkääjä on tietoinen epätasa-arvosta
missä on salainen eksponentti ja RSA-moduuli. Bonnet ja Derfey pystyivät Coppersmithin lauseen kaksiulotteista analogia käyttäen yleistämään Wienerin hyökkäyksen [20] tapaukseen, jolloin
RSA - järjestelmää käytetään ohjelmistojen suojaukseen ja digitaalisissa allekirjoitusmalleissa .
Sitä käytetään myös avoimessa PGP - salausjärjestelmässä ja muissa salausjärjestelmissä (esimerkiksi DarkCryptTC ja xdc-muoto) yhdessä symmetristen algoritmien kanssa .
Matalasta salausnopeudesta johtuen viestit salataan yleensä tehokkaammilla symmetrisillä algoritmeilla satunnaisella istuntoavaimella (esim. AES , IDEA , Serpent , Twofish ), ja vain tämä avain salataan RSA:lla, jolloin toteutetaan hybridisalausjärjestelmä . Tällaisella mekanismilla on mahdollisia haavoittuvuuksia, jotka johtuvat tarpeesta käyttää kryptografisesti vahvaa näennäissatunnaislukugeneraattoria satunnaisen symmetrisen salausistuntoavaimen luomiseen.