Atacul Wiener

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 15 februarie 2019; verificările necesită 8 modificări .

Atacul Wiener , numit după criptologul Michael J. Wiener, este un tip de atac criptografic împotriva algoritmului RSA . Atacul folosește metoda fracțiunii continue pentru a sparge sistemul cu un mic exponent închis .

Pe scurt despre RSA

Înainte de a începe o descriere a modului în care funcționează atacul lui Wiener, merită să introduceți câteva concepte care sunt folosite în RSA [1] . Consultați articolul principal RSA pentru mai multe detalii .

Pentru a cripta mesajele conform schemei RSA , se folosește o cheie publică - o pereche de numere , pentru decriptare - o cheie privată . Numerele se numesc exponenti deschisi si respectiv inchisi, numarul se numeste modul. Modulus , unde și sunt două numere prime . Legătura dintre exponentul închis, deschis și modul este dată ca , unde este funcția Euler .

Dacă cheia publică poate fi recuperată într-un timp scurt , atunci cheia este vulnerabilă: după ce au primit informații despre cheia privată , atacatorii au posibilitatea de a decripta mesajul.

Istoria algoritmului

Criptosistemul RSA a fost inventat de Ronald Rivest , Adi Shamir și Leonard Adleman și publicat pentru prima dată în 1977 [1] . De la publicarea articolului, criptosistemul RSA a fost investigat pentru vulnerabilități de mulți cercetători. [2] Majoritatea acestor atacuri folosesc implementări potențial periculoase ale algoritmului și folosesc condiții explicite pentru unele defecțiuni ale algoritmului: modul comun, cheie publică mică, cheie privată mică [3] . Astfel, un algoritm de atac criptografic împotriva algoritmului RSA cu o cheie privată mică a fost propus de criptologul Michael J. Wiener într-un articol publicat pentru prima dată în 1990. [4] Teorema lui Wiener afirmă că dacă cheia este mică, atunci cheia privată poate fi găsită în timp liniar .

Cheie privată mică

În criptosistemul RSA , Bob poate folosi o valoare mai mică decât un număr mare aleatoriu pentru a îmbunătăți performanța de decriptare RSA . Totuși, atacul lui Wiener arată că alegerea unei valori mici pentru for va avea ca rezultat o criptare nesigură în care un atacator poate recupera toate informațiile secrete, adică să spargă sistemul RSA . Acest hack se bazează pe teorema lui Wiener, care este valabilă pentru valori mici ale . Wiener a dovedit că un atacator poate găsi eficient când .

Wiener a introdus și câteva contramăsuri împotriva atacului său. Cele două metode sunt descrise mai jos: [5]

1. Alegerea unei chei publice mari :

Înlocuiți cu , unde pentru unele mari . Când este suficient de mare, adică , atunci atacul lui Wiener este inaplicabil, indiferent cât de mic .

2. Folosind teorema chineză a restului :

Alegeți astfel încât și , și sunt mici, dar nu în sine, atunci decriptarea rapidă a mesajelor poate fi efectuată după cum urmează:
  1. În primul rând, calculează
  2. Folosind teorema chineză a restului pentru a calcula o valoare unică care satisface și . Rezultatul satisface cum este necesar. Ideea este că atacul lui Wiener nu este aplicabil aici, deoarece valoarea poate fi mare.

Cum funcționează atacul Wiener

Pentru că

,

atunci există un număr întreg astfel încât:

.

Merită determinat și înlocuit în ecuația anterioară :

.

Dacă notăm și , atunci înlocuirea în ecuația anterioară va da:

.

Împărțind ambele părți ale ecuației la , rezultă că:

, unde .

Ca rezultat, puțin mai puțin decât , iar prima fracțiune constă în întregime din informații publice . Cu toate acestea, este încă necesară o metodă de testare a unei astfel de ipoteze. În timp ce ultima ecuație poate fi scrisă astfel:

.

Folosind operații și identități algebrice simple , se poate stabili acuratețea unei astfel de presupuneri. [6]

Teorema lui Wiener

Să , unde . Lasă .

Având unde , un cracker se poate recupera . [7]

Dovada teoremei lui Wiener

Dovada se bazează pe aproximări folosind fracții continue . [opt]

Din moment ce , atunci există pentru care . Prin urmare:

.

Deci, aceasta este o aproximare . Chiar dacă biscuitul nu știe , îl poate folosi pentru a o aproxima. Într-adevăr, pentru că:

și , avem: și

Folosind în loc de , obținem:

Acum , înseamnă . Deoarece , înseamnă , și în cele din urmă rezultă:

Unde

Din moment ce și prin urmare:

Din moment ce , atunci , și pe baza acesteia , înseamnă:

Din (1) și (2), putem concluziona că:

Semnificația teoremei este că, dacă condiția de mai sus este îndeplinită, atunci apare printre convergente pentru fracția continuă a numărului .

Prin urmare, algoritmul va găsi în cele din urmă astfel de [9] .

Descrierea algoritmului

Se consideră o cheie publică RSA , prin care este necesar să se determine exponentul privat . Dacă se știe că , atunci se poate face după următorul algoritm [10] :

1. Extindeți fracția într-o fracție continuă . 2. Pentru o fracție continuă , găsiți mulțimea tuturor convergentelor posibile . 3. Explorați fracția potrivită : 3.1. Determinați valoarea posibilă calculând . 3.2. După ce am rezolvat ecuația , obțineți o pereche de rădăcini . 4. Dacă egalitatea este adevărată pentru o pereche de rădăcini , atunci se găsește exponentul închis . Dacă condiția nu este îndeplinită sau nu a fost posibilă găsirea unei perechi de rădăcini , atunci este necesar să se investigheze următoarea fracție adecvată , revenind la pasul 3.

Un exemplu despre cum funcționează algoritmul

Aceste două exemple [10] demonstrează clar găsirea exponentului privat dacă cheia publică RSA este cunoscută .

Pentru o cheie publică RSA :

Tabel: găsirea exponentului închis d
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 - - - -
unu 1/1 1073780832 - - -
2 7/8 1227178094 - - -
3 22/25 1220205492 30763 39667 1220275921

Se dovedește că . În acest exemplu, puteți vedea că condiția de micime este îndeplinită .

Pentru o cheie publică RSA :

Tabel: găsirea exponentului închis d
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 - - - -
unu 1/1 1779399042 - - -
2 1/2 3558798085 - - -
3 2/3 2669098564 - - -
patru 5/8 2847038468 - - -
5 7/11 2796198496 47129 59333 2796304957

Se dovedește că . În acest exemplu, puteți observa, de asemenea, că condiția de micime este îndeplinită .

Complexitatea algoritmului

Complexitatea algoritmului este determinată de numărul de convergente pentru fracția continuă a numărului , care este o valoare de ordinul . Adică, numărul este restaurat în timp liniar [11] din lungimea cheii .

Link -uri

  1. 12 Rivest , 1978 .
  2. Boneh, 1999 , Introducere, p. unu.
  3. Calămar, 1996 .
  4. Wiener, 1990 .
  5. Wiener, 1990 , Combating the Continued Fraction Attack on RSA., p. 557.
  6. Render, 2007 .
  7. Boneh, 1999 .
  8. Khaled, 2006 .
  9. Herman, 2012 , Despre vulnerabilitatea sistemului RSA. Mică cheie secretă., pp. 283-284.
  10. 12 Kedmi , 2016 .
  11. Herman, 2012 , Despre vulnerabilitatea sistemului RSA. Mică cheie secretă., p. 284: „Numărul acestor fracții este o valoare de ordinul lui O(ln(n)), adică numărul d este restaurat în timp liniar”.

Literatură