Puncte:1

Întâlnește-te în complexitatea timpului mijlociu

drapel in

Buna ziua,
Mă întreb de ce se afirmă că mesajul dublu criptat cu 2 chei DES este posibil să se spargă în cel mai rău caz în $2\times2^{56}$ timp folosind întâlni în atacul de mijloc.

Iată raționamentul meu:

  1. Exemplu de pereche de text simplu și criptat: AAAAAAAAAAAAAAAA & 35E16A5E44161DB8 (chei de întrerupt: BABABABABABABA & CDCDCDCDCDCDCDCD), perechi suplimentare de text simplu și criptat de verificat la pasul 4, deoarece spațiul de taste este suficient de mare încât este probabil să existe mai multe perechi de chei care ar reuși doar una pereche: 0000000000000000 & 84EC2BA1A2748F7B ; 1111111111111111 & 549A6B5696E02B5E ; 2222222222222222 & 7BB2C14B23A807C3 ; 3333333333333333 și 3BD27AAF1E0EB4F7
  2. Generez o matrice cu 2^56 de intrări, a n-a intrare este pereche (n-a cheie; DES, text simplu criptat AAAAAAAAAAAAAAA cu a n-a cheie). Va arăta astfel (cheile sunt în ordine crescătoare cu biții de paritate corecti):
    0101010101010101 3AE716954DC04E25
    0101010101010102 2B74C1D96CDE840B
    0101010101010104 3367B1FBB4D2FFA7
    0101010101010107 8880DA13709C9198
    0101010101010108 80181B831CDC8D61
    010101010101010B 0F6CD43C15297456
    .....
  3. Acum trebuie să sortez matricea după texte cifrate în coloana 2
  4. Acum încerc să decriptez textul cifrat 35E16A5E44161DB8 cu chei consecutive și caut această valoare în coloana 2 prin căutare binară:
    Încercarea nr. 1: cheia 0101010101010101 dă 477B6FD8296E1956 cheia de căutare într-o matrice sortată, dacă cheia este găsită, verificați alte perechi text simplu și text cifrat, ar trebui să eșueze
    Încercarea nr. 2: cheia 0101010101010102 dă cheia de căutare 107272EB5D1BFF28 într-o matrice sortată, dacă cheia este găsită, verificați alte perechi de text simplu și text cifrat, ar trebui să eșueze
    Încercarea nr. 3: cheia 0101010101010104 dă 23153894F3FF825E cheia de căutare în matrice sortată, dacă cheia este găsită, verificați alte perechi de text simplu și text cifrat, ar trebui să eșueze
    Încercarea #4: cheia 0101010101010107 dă D0D497791C20B166 cheia de căutare într-o matrice sortată, dacă cheia este găsită, verificați alte perechi de text simplu și text cifrat, ar trebui să eșueze
    Încercarea #5: cheia 0101010101010108 oferă cheia de căutare 8A830E5E7927C541 într-o matrice sortată, dacă cheia este găsită, verificați alte perechi de text simplu și text cifrat, ar trebui să eșueze
    Încercarea #6: cheia 010101010101010B oferă BA7A15AA12A62C02 cheia de căutare în matrice sortată, dacă cheia este găsită, verificați alte perechi de text simplu și de text cifrat, ar trebui să eșueze
    .....
    Încercarea #57873028282430310: cheia CDCDCDCDCDCDCDCDCD oferă AC972FC04E884797 cheia de căutare într-o matrice sortată, dacă cheia este găsită, verificați alte perechi de text simplu și text cifrat, ar trebui să reușească

Pentru mine se pare că pasul 3 este necesar pentru a putea efectua pasul 4

Dacă aș avea dreptate, atunci complexitatea timpului ar fi în jur $2^{56}\times\log(2^{56}) = 56\times2^{56}$ folosind algoritmul optim de sortare. Ce îmi lipsește din raționamentul meu?

kelalaka avatar
drapel in
Înrudite și duplicate...[De ce aplicarea DES pe 56 de biți de două ori oferă doar 57 de biți de securitate?](https://crypto.stackexchange.com/q/25073/18298)
fgrieu avatar
drapel ng
Realted [întrebare despre cum să faceți atacul practic](https://crypto.stackexchange.com/q/25258/555) (din moment ce este ridicolă cerința RAM de $2^{62}$-biți, nu este).
Puncte:4
drapel my

Ce îmi lipsește din raționamentul meu?

Doua lucruri:

  • Există și alte strategii decât sortarea pentru a găsi coliziuni; una evidentă este să construiești o masă hash uriașă. Acum, în practică, sortarea ar fi probabil mai rapidă (pentru că o tabelă hash atât de mare ar fi nepractică), dar teoretic, o tabelă hash ar permite $O(1)$ accese pe care această analiză de complexitate le presupune implicit.

  • $O(n \log n)$ nu este de fapt timpul optim de sortare. Este dacă singurele operațiuni pe care le puteți efectua asupra datelor sunt comparațiile și mișcarea datelor; cu toate acestea, nu suntem de fapt constrânși în acest fel. O abordare evidentă ar fi să faceți o metodă de sortare radix, care poate avea o complexitate de timp considerabil mai bună.

Acum, pentru a fi sincer, ignorăm de obicei timpul necesar acestor operațiuni noncriptografice (cum ar fi căutarea și sortarea), cu excepția cazului în care ocupă o fracțiune foarte mare din timpul total. Sincer, pot exista o mulțime de detalii atunci când coborâți la acel nivel (cum ar fi complexitatea confruntării cu $O(2^{56})$ date), și în schimb numărăm doar evaluările DES.

De fapt, nu încercăm să spargem 2DES; în schimb, arătăm că ruperea 2DES ar putea fi de fapt realizabilă în timp practic. Dacă am încerca de fapt să o distrugem, am putea ajunge să folosim în schimb o căutare lambda, care ar avea o creștere constantă a complexității și nu este garantată, ar fi mai ușor de implementat (deoarece căutarea lambda ar folosi mult mai puțină memorie și fiind totusi usor de paralelizat).

fgrieu avatar
drapel ng
Adăugiri: O strategie de tabel hash este facilitată deoarece valorile pe 64 de biți căutate sunt în esență aleatorii. Putem de ex. utilizați cei 48 de biți de ordin înalt ai valorii căutate direct ca index într-un tabel hash mai mic. Un bonus este că acești 48 de biți nu trebuie stocați, așa cum ar fi pentru un tabel hash complet. Se poate demonstra că, chiar dacă avem loc pentru intrări de $2^8+2^{8/2}$ per tabel hash mai mic (cu valoare căutată pe 16 biți și conținut de 56 de biți pentru cheie) și uităm de restul, există încă șanse excelente de succes. Această strategie dublează memoria RAM în comparație cu valoarea de bază de $2^{62}$-bit.
pajacol avatar
drapel in
Ar crește complexitatea spațiului de 2^56 dacă folosesc tabelul hash sau sortarea radix?
poncho avatar
drapel my
@pajacol: nu în mare măsură (adică ar trebui să rămână într-un factor constant care nu este drastic departe de 1) - desigur, detaliile ar depinde de implementare
drapel kr
Acesta este un răspuns bun, dar cred că îi lipsește un detaliu esențial: 2DES are o cheie de *112* biți și meet-in-the-middle vă oferă un atac $O(2^{56})$ asupra ei. Cu alte cuvinte, meet-in-the-middle demonstrează că (având în vedere echipamentul ideal de cracare) 2DES nu este *nu mai puternic decât un singur DES*. Factorul constant din fața lui mare nu este punctul.
drapel sh
@zwol dacă ignorați factorii constanți, atunci $2^{56}$ este, de asemenea, un factor constant. (Cred că folosirea notației $O(...)$ cu o constantă este un abuz ciudat de notație. $O(2^{128}) = O(2^{56}) = O(1)$ în sensul obișnuit al lui $O$.)
drapel kr
@PaÅloEbermann Da, sunt de acord că este un abuz de notație, dar nu este atât de neobișnuit IME atunci când vorbim despre costurile atacurilor asupra cifrurilor. Ideea este că singurul lucru care ne interesează este exponentul: trecerea de la $2^{112}$ la $2^{56}$ reprezintă o slăbire semnificativă a cifrului.
Puncte:1
drapel cl
  1. Puteți salva toate opțiunile pe un (dicționar) Hashtable (uriaș) -> care se apropie de O(1), astfel încât să nu aveți nevoie să sortați.
  2. Puteți sorta după sortare radix (sau găleată) (mai puțin decât nlog(n)).

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.