Atacul Coppersmith descrie o clasă de atacuri criptografice asupra cheii publice a criptosistemului RSA bazate pe metoda Coppersmith . Particularitatea utilizării acestei metode pentru atacurile RSA include cazuri când exponentul public este mic sau când cheia privată este parțial cunoscută.
Cheia publică a criptosistemului RSA este o pereche de numere naturale , unde este produsul a două numere prime și , iar numărul este un exponent public. Un număr întreg ( , unde este funcția Euler a ) coprim cu valoare . De obicei numerele prime sunt luate ca calitate , conținând un număr mic de biți unici în notație binară, de exemplu, numere prime Fermat 17, 257 sau 65537.
Cheia secretă este determinată prin exponentul privat . Numărul este invers multiplicativ cu numărul modulo , adică numărul satisface relația:
.
Perechea este publicată ca o cheie publică RSA ( eng . RSA public key ), iar perechea joacă rolul unei chei private RSA ( eng . RSA private key ) și este ținută secretă.
Fie și un polinom normalizat de grad . Să , . Apoi, având în vedere perechea, atacatorul va găsi efectiv toate numerele întregi satisfăcătoare . Timpul de execuție este determinat de execuția algoritmului LLL pe o rețea de dimensiune , unde . [2]
DovadaFie un număr natural , pe care îl vom defini mai târziu. Să definim
Folosim polinoamele pentru și ca bază pentru rețeaua noastră . De exemplu, când și obținem o matrice latice acoperită de rânduri:
,
unde „—” denotă elemente nenule în afara diagonalei a căror valoare nu afectează determinantul . Mărimea acestei rețele este , iar determinantul său se calculează după cum urmează:
Noi cerem asta . asta implică
care poate fi simplificat la
,
unde si pentru toti . Dacă luăm , atunci obținem a, prin urmare, și . În special, dacă vrem să rezolvăm pentru un arbitrar , este suficient să luăm , unde . [3]
Să presupunem că un expeditor trimite același mesaj în formă criptată unui anumit număr de persoane , fiecare dintre aceștia folosind același mic exponent de codare , să zicem , și perechi diferite și . Expeditorul criptează mesajul folosind pe rând cheia publică a fiecărui utilizator și îl trimite destinatarului corespunzător. Apoi, dacă adversarul ascultă canalul de transmisie și colectează textele cifrate transmise , atunci el va putea recupera mesajul .
Dovada [4]Să presupunem că inamicul a interceptat și , unde . Presupunem că sunt relativ primi , altfel cel mai mare divizor comun , altul decât unitatea, însemna găsirea unui divizor al unuia dintre . Aplicând teorema chineză a restului la și obținem , astfel încât , care are valoarea . Cu toate acestea, știind asta , obținem . Prin urmare , adică adversarul poate decripta mesajul luând rădăcina cubă a .
Pentru a recupera un mesaj cu orice valoare a exponentului de codificare deschis , este necesar ca adversarul să intercepteze textele cifrate .
Să presupunem o cheie publică RSA , unde lungimea este -biți. Să luăm multe . Lăsați mesajul să nu aibă mai mult de biți. Să definim și , unde și sunt numere întregi distincte , și și .Dacă adversarul primește ambele cifruri de la (dar nu primește sau ), atunci el poate recupera efectiv mesajul .
Dovada [2]Să definim și . Știm că atunci când , aceste polinoame au o rădăcină comună. Cu alte cuvinte, aceasta este rădăcina „rezultatului” . grad cel mai adesea . Mai mult, . Prin urmare, este o rădăcină modulo mică , iar adversarul o poate găsi eficient folosind teorema lui Coppersmith . Odată cunoscut, atacul Franklin-Reiter poate fi folosit pentru a acoperi , prin urmare, și .