Wiener-hyökkäys , joka on nimetty kryptologi Michael J. Wienerin mukaan, on eräänlainen kryptografinen hyökkäys RSA-algoritmia vastaan . Hyökkäys käyttää jatkuvan murto -osan menetelmää järjestelmän katkaisemiseen pienellä suljetulla eksponentilla .
Ennen kuin aloitat kuvauksen Wienerin hyökkäyksen toiminnasta, kannattaa esitellä joitakin RSA :ssa käytettyjä käsitteitä [1] . Katso lisätietoja RSA :n pääartikkelista .
Viestien salaamiseen RSA -kaavan mukaisesti käytetään julkista avainta - numeroparia , salauksen purkamiseen - yksityistä avainta . Lukuja kutsutaan avoimiksi ja suljetuiksi eksponenteiksi, lukua kutsutaan moduuliksi. Modulus , jossa ja ovat kaksi alkulukua . Suljetun, avoimen eksponentin ja moduulin välinen yhteys annetaan muodossa , jossa on Euler-funktio .
Jos julkinen avain voidaan palauttaa lyhyessä ajassa , avain on haavoittuvainen: saatuaan tiedon yksityisestä avaimesta hyökkääjät voivat purkaa viestin salauksen.
RSA-salausjärjestelmän keksivät Ronald Rivest , Adi Shamir ja Leonard Adleman , ja se julkaistiin ensimmäisen kerran vuonna 1977 [1] . Artikkelin julkaisun jälkeen monet tutkijat ovat tutkineet RSA-salausjärjestelmän haavoittuvuuksia. [2] Useimmat näistä hyökkäyksistä käyttävät algoritmin mahdollisesti vaarallisia toteutuksia ja käyttävät eksplisiittisiä ehtoja jollekin algoritmin puutteelle: yhteinen moduuli, pieni julkinen avain, pieni yksityinen avain [3] . Siten kryptografinen hyökkäysalgoritmi RSA-algoritmia vastaan pienellä yksityisellä avaimella ehdotti kryptologi Michael J. Wiener artikkelissa, joka julkaistiin ensimmäisen kerran vuonna 1990. [4] Wienerin lause sanoo, että jos avain on pieni, niin yksityinen avain löytyy lineaarisessa ajassa .
RSA - salausjärjestelmässä Bob voi käyttää pienempää arvoa suuren satunnaisluvun sijaan parantaakseen RSA -salauksen purkamista . Wienerin hyökkäys kuitenkin osoittaa, että pienen arvon valitseminen for:lle johtaa epävarmaan salaukseen, jossa hyökkääjä voi palauttaa kaikki salaiset tiedot, eli rikkoa RSA -järjestelmän . Tämä hakkerointi perustuu Wienerin lauseeseen, joka pätee pienille arvoille . Wiener osoitti, että hyökkääjä voi löytää tehokkaasti milloin .
Wiener esitteli myös vastatoimia hyökkäystään vastaan. Nämä kaksi menetelmää kuvataan alla: [5]
1. Suuren julkisen avaimen valitseminen :
Korvaa , jossa joillekin suurille . Kun se on riittävän suuri , niin Wienerin hyökkäystä ei voida soveltaa vaikka kuinka pieni tahansa .2. Kiinan jäännöslauseen avulla :
Valitse niin, että ja , ja ovat pieniä, mutta ei itseään, niin nopea viestin salauksen purku voidaan suorittaa seuraavasti:Koska
,sitten on sellainen kokonaisluku :
.Kannattaa määrittää ja korvata edellisessä yhtälössä :
.Jos merkitsemme ja , korvaus edelliseen yhtälöön antaa:
.Jakamalla yhtälön molemmat puolet luvulla , käy ilmi, että:
, missä .Tämän seurauksena hieman vähemmän kuin , ja ensimmäinen murto-osa koostuu kokonaan julkisesta tiedosta . Menetelmää tällaisen oletuksen testaamiseksi tarvitaan kuitenkin edelleen. Kun taas viimeinen yhtälö voidaan kirjoittaa seuraavasti:
.Käyttämällä yksinkertaisia algebrallisia operaatioita ja identiteettejä voidaan määrittää tällaisen oletuksen tarkkuus . [6]
Anna , missä . Anna .
Ottaa missä , krakkausyksikkö voi toipua . [7]
Todistus perustuu likiarvoihin käyttämällä jatkuvia murtolukuja . [kahdeksan]
Koska , sitten on olemassa jolle . Näin ollen:
.Tämä on siis likiarvo . Vaikka krakkausyksikkö ei tiedä , hän voi käyttää sitä arvioimaan sitä. Todellakin, koska:
ja , meillä on: ja
Käyttämällä sen sijaan , saamme:
Nyt tarkoittaa . Koska , tarkoittaa , ja lopulta käy ilmi:
missäSiitä lähtien ja siksi:
Koska , silloin ja tämän perusteella tarkoittaa:
(1) ja (2) perusteella voimme päätellä, että:
Lauseen tarkoitus on, että jos yllä oleva ehto täyttyy, niin esiintyy luvun jatkuvan murto-osan konvergenttien joukossa .
Siksi algoritmi löytää lopulta sellaisen [9] .
Tarkastellaan julkista RSA - avainta , jolla on tarpeen määrittää yksityinen eksponentti . Jos se tiedetään , niin se voidaan tehdä seuraavan algoritmin [10] mukaan :
1. Laajenna murto-osa jatkuvaksi jakeeksi . 2. Etsi jatkuvalle murtoluvulle kaikkien mahdollisten konvergenttien joukko . 3. Tutki sopivaa fraktiota : 3.1. Määritä mahdollinen arvo laskemalla . 3.2. Kun olet ratkaissut yhtälön , hanki juurpari . 4. Jos yhtälö on tosi juurparille , niin suljettu eksponentti löytyy . Jos ehto ei täyty tai juurparia ei voitu löytää , on tarpeen tutkia seuraava sopiva murto palaamalla vaiheeseen 3.Nämä kaksi esimerkkiä [10] osoittavat selvästi yksityisen eksponentin löytämisen, jos RSA :n julkinen avain tunnetaan .
Julkiselle RSA - avaimelle :
e / N = [0, 1, 7, 3, 31, 5, 2, 12, 1, 28, 13, 2, 1, 2, 3] | |||||
---|---|---|---|---|---|
n | k n / d n | phi n | p n | q n | p n q n |
0 | 0/1 | - | - | - | - |
yksi | 1/1 | 1073780832 | - | - | - |
2 | 7/8 | 1227178094 | - | - | - |
3 | 22/25 | 1220205492 | 30763 | 39667 | 1220275921 |
Siitä käy ilmi . Tässä esimerkissä voit nähdä, että pienuusehto täyttyy .
Julkiselle RSA - avaimelle :
e / N = [0, 1, 1, 1, 2, 1, 340, 2, 1, 1, 3, 2, 3, 1, 21, 188] | |||||
---|---|---|---|---|---|
n | k n / d n | f n | p n | q n | p n q n |
0 | 0/1 | - | - | - | - |
yksi | 1/1 | 1779399042 | - | - | - |
2 | 1/2 | 3558798085 | - | - | - |
3 | 2/3 | 2669098564 | - | - | - |
neljä | 5/8 | 2847038468 | - | - | - |
5 | 7/11 | 2796198496 | 47129 | 59333 | 2796304957 |
Siitä käy ilmi . Tässä esimerkissä voit myös huomata, että pienuusehto täyttyy .
Algoritmin monimutkaisuus määräytyy luvun jatkuvan murto-osan konvergenttien lukumäärän mukaan, joka on suuruusluokkaa oleva arvo . Eli numero palautetaan lineaarisessa ajassa [11] avaimen pituudesta .