Puncte:1

Rupeți RSA fără umplutură folosind un atac de masă curcubeu

drapel cl

Folosim RSA fără OAEP, cu un domeniu de intrare relativ mic.

Să presupunem că îi avem pe John și Bob conectați pe o linie și îi ascultăm cu urechea. Bob îi trimite mai întâi lui John cheia publică (e,n), apoi John își criptează mesajul m și îl trimite pe linia criptată. Când ascultăm linia, primim mesajul lui criptat, de exemplu 3211 4431 9938 ... (folosesc un modulo scăzut doar pentru exemplu)

Eu, ca atacator, pot face un tabel curcubeu de criptare a fiecărui număr de la 0 la n, apoi decriptez mesajul lui John folosind tabelul pe care l-am creat.

  1. Am dreptate?
  2. Când folosim orice tehnică de umplutură, prevenim acest atac (nu?), prin inserarea de biți aleatori în mesaj, dar cum decriptorul (Bob) poate „elimina” acești biți aleatori dacă nu îi cunoaște.
kelalaka avatar
drapel in
Dacă puteți construi o masă curcubeu pentru modulul de dimensiunea 2048, nu trebuie să vă faceți griji cu privire la OAEP. Pentru mesajele scurte, da, există un pericol pentru TextBook RSA. Umplutura este crucială pentru a vedea criptarea probabilistică.
kelalaka avatar
drapel in
O q/[Diferența dintre atacul de text simplu cunoscut și atacul de căutare înainte](https://crypto.stackexchange.com/q/15040/18298)
Maarten Bodewes avatar
drapel in
@kelalaka Nu văd cum ar fi problematică RSA manuală din construirea unui tabel curcubeu pentru o anumită cheie publică. Totuși, totul depinde de domeniul de intrare și, dacă aveți un singur mesaj, ar dura atât timp cât forțarea brută a mesajului în primul rând. Alte modalități de a ataca manualul RSA pot fi găsite [aici](https://crypto.stackexchange.com/q/20085/1172)
kelalaka avatar
drapel in
@MaartenBodewes pentru fiecare cheie publică și modul, puteți construi un tabel curcubeu pentru dimensiunile mesajelor până la 2048? Pentru mesaje scurte, da, posibil. Ideea mea a fost că dacă poți ajunge la dimensiunea modulului tabelului, poți rupe modulul :)
Maarten Bodewes avatar
drapel in
Da, asta vreau să spun cu „domeniu de intrare”.Nu cred că este o modalitate proastă de a ataca domenii mici de intrare și mesaje multiple, să fiu sincer. Și este și un atac destul de generic. De aceea am redeschis întrebarea, deoarece avem deja un Q/A pentru a enumera toate atacurile asupra RSA în text simplu.
Yotam Sofer avatar
drapel cl
@MaartenBodewes, DACĂ pot presupune că mesajul include doar litere ascii, deci domeniul de intrare este foarte mic, nu? și ar trebui să se rupă ușor. Mai mult, vreun răspuns pentru a doua parte a întrebării?
Maarten Bodewes avatar
drapel in
Da, puteți dezactiva acest atac dacă adăugați * destui * biți aleatori. Puteți folosi orice fel de codificare pentru aceasta, de fapt PKCS#1 are o codificare destul de simplă: octeți evaluați 01..FF și 00 ca valoare a octetului final (cu dezavantajul puternic că necesită obținerea unui interval de la un PRNG, desigur), dar orice altă codificare reversibilă va face. După ce puteți identifica biții aleatori, puteți pur și simplu să-i ignorați și să returnați mesajul. Desigur, există și alte atacuri **cum ar fi** atacuri de umplutură posibile pe PKCS#1 și OAEP, presupun că necesită un studiu suplimentar.
kelalaka avatar
drapel in
@MaartenBodewes orice umplutură este prea generică, totuși, dacă dimensiunea totală a mesajului cu umplutura aleatoare este în intervalul tabelului curcubeu, se vor vedea și biții aleatori...
Puncte:2
drapel ng
  1. Da, atacul din întrebare ar funcționa pentru modulo scăzut al exemplului.Termenul „dicționar” este mai potrivit decât „tabel curcubeu” (folosit în contextul realizării unui tabel compact de hasheuri precalculate).

    Atacurile reale nu pot funcționa în acest fel. În RSA, așa cum este practicat, este imposibil să construiți un dicționar suficient de mare, deoarece ar dura prea mult timp pentru a construi (proporțional cu modulul $n$, care este de obicei de cel puțin 2048 de biți în prezent). Cu toate acestea, dacă Alice a criptat un mesaj despre care se știe că aparține unui set mic (cum ar fi numele de pe lista de clasă) direct cu manualul RSA $m\mapsto c:=m^e\bmod n$, atunci este posibil să se decripteze $c$ prin criptarea fiecărui mesaj posibil și testarea care se potrivește $c$. O căutare secvenţială a $m$ în rola de clasă va face: un dicţionar al corespunzătoare $c$ este util doar dacă există mai multe mesaje (și RSA nu este practic folosit prin împărțirea mesajelor în bucăți mici, ca în întrebare).

  2. Umplutura de criptare aleatorie rezolvă această problemă, prin reversibil întoarcerea unui mesaj $m$ într-un reprezentant de mesaj suficient de aleatoriu $\widetilde m\in[0,n)$. Apoi, manualul RSA poate fi aplicat în siguranță $\widetilde m$, conform ipotezei RSA: pentru cheia publică adecvată $(n,e)$ și Aleatoriu $x\în[0,n)$, e greu de găsit $x$ din $x^e\bmod n$.

    cum poate decriptorul (Bob) să „elimine” acele biți aleatorii dacă nu le cunoaște?

    Imaginea de ansamblu este că există o convenție între Alice și Bob despre ce fragmente $\widetilde m$ sunt umpluturi (dintre care unele aleatoare) adăugate de Alice, care ar trebui eliminate de Bob. Această descriere simplificată este destul de apropiată de tehnica de umplutură învechită din RSAES-PKCS1-v1_5. Modernul RSAES-OAEP are pași suplimentari, așa că toți cu excepția (cel mult) 8 biți de $\widetilde m$ apar aleatoriu chiar și atunci când $m$ nu este (care se obține printr-o transformare criptografică simetrică reversibilă după aplicarea unei umpluturi aleatorii, care difuzează aleatorietatea), dar ideea rămâne.

kelalaka avatar
drapel in
Cred că umplutura trebuie să fie pe MSB, astfel încât atunci când 3 este folosit ca exponent public, $\sqrt[3]{c}$ nu poate fi găsit.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.