Puncte:7

Noțiune de operație elementară atunci când complexități sub formă de $2^{128}$

drapel cn

În multe lucrări criptoanalitice pe care le-am citit, complexitățile atacurilor sunt enunțate sub forma unei constante. De exemplu, acest atac cheie legat de AES afirmă:

[...] Pentru AES-256 arătăm primul atac de recuperare cheie pentru care funcționează toate cheile și are $2^{99.5}$ timp și complexitatea datelor

Am văzut această notație a $2^{n}$ timp și în alte ziare. Cu toate acestea, nu îmi este clar care operație elementară este luată ca bază pentru o măsurare „timp”? Modelul de bază nu este cu siguranță o mașină de răsucire, deci ce este? Pentru alți algoritmi, notația big-O ascunde de obicei factorii constanți, făcând operația elementară exactă un detaliu neimportant. Dar documentele criptografice precizează exact complexitățile, ceea ce este surprinzător pentru mine.

kelalaka avatar
drapel in
$2^n$ pentru sincronizarea forței brute pentru $n$-biți AES, cum ar fi $2^{128}$. Notația Big-O nu este corectă, deoarece $n$ este constant aici!.
kelalaka avatar
drapel in
[Care este complexitatea în timp și spațiu a cutiilor S AES?](https://crypto.stackexchange.com/q/98477/18298)
Puncte:10
drapel ng

Pentru alți algoritmi, notația big-O ascunde de obicei factorii constanți, făcând operația elementară exactă un detaliu neimportant. Dar documentele criptografice precizează exact complexitățile, ceea ce este surprinzător pentru mine.

Ai dreptate să fii surprins --- în general, scrierea „complexităților exacte” este fără speranță din cauza a ceea ce este cunoscut sub numele de teorema de accelerare liniară --- putem stabili complexitățile de calcul doar până la un factor multiplicativ arbitrar. Acest lucru se datorează faptului că putem crește oricând dimensiunea alfabetului subiacent cu un factor constant pentru a ne permite să calculăm un număr mai mare de operații pe unitatea de timp. Aceasta (un fel de) are o componentă practică --- puteți crește dimensiunea arhitecturii unui set de instrucțiuni pentru a face mai multe calcule pe ciclu de ceas (cu prețul cipurilor care folosesc mai mult siliciu).

Deci, ce măsură de cost folosesc oamenii? Aceasta într-adevăr depinde de aplicație. De exemplu, un atac binecunoscut asupra AES este Atacul Biclique, care recuperează cheia AES în complexitate $2^{126.1}$. Desigur, autorii nu tind să pretindă numere arbitrare drept rezultate --- cum calculează acest lucru?

Complexitatea deplină a abordării biclique independente se evaluează după cum urmează: $$C_{full} = 2^{nâ2d}[C_{biclique} + C_{precomp} + C_{recomp} + C_{falsepos}],$$ Unde

  • $C_{precomp}$ este complexitatea precalculării din Pasul 3. Este echivalent cu mai puțin de $2^d$ runde ale subcifrului $g$.
  • $C_{recomp}$ este complexitatea recalculării variabilei interne $v$ $2^{2d}$ ori. Aceasta depinde puternic de proprietățile de difuzie ale cifrului. Pentru AES această valoare variază de la $2^{2dâ1,5}$ la $2^{2dâ4}$. Construcția biclique este destul de ieftină în această paradigmă. Metoda din Secțiunea 3.1 permite construirea unei biclique in numai $2^{d+1}$ apeluri de subcifrare $f$. Prin urmare, de obicei cheia completă complexitatea recuperării va fi dominată de $2^{nâ2d}C_{recomp}$. Cu toate acestea, depinde de lățimea variabilei de potrivire și dimensiunea biclique $d$ de asemenea. Vă oferim mai multe detalii pentru caz a AES în secțiunile ulterioare. Complexitatea memoriei recuperării cheii este limita superioară prin depozitare $2^d$ calcule complete ale cifrului.

Pentru AES în special, spun ei

În total, avem nevoie de un echivalent al $3.4375$ Operații cu subocteți (adică, 55 de casete S), 2.3125 Operațiuni MixColumns și o cantitate neglijabilă de XOR în programul cheie. Numarul SubBytes calculele este în mod clar un sumar mai mare. S-box-urile sunt, de asemenea, contribuția majoră la complexitatea practică a AES atât în ​​hardware cât și în software. Prin urmare, dacă urmărim a un singur număr care se referă la complexitate, este logic să numărați numărul de subocteți operațiunile de care avem nevoie și le comparăm cu cele din cifrul complet. Ultimul număr este $10 + 2.5 = 12.5$ întrucât trebuie să luăm în considerare neliniaritatea programului cheie. Ca urmare, $C_{recomp}$ este echivalent cu $2^{16}\time 3,4375/12,5 = 2^{14,14}$ rulează complet AES-128. Valorile $C_{biclique}$ și $C_{precomp}$ împreună nu depăşesc $2^8$ apeluri ale AES-128 complet. Complexitatea totală de calcul se ridică la aproximativ $2^{112} (2^7 + 2^7 + 2^{14.14} + 2^8) = 2^{126.18}$.

Aceasta înseamnă că „operația primitivă” a atacului biclique este numărul de apeluri SubBytes, în care se normalizează lucrurile astfel încât atacul cu forță brută ar dura $2^{128}$ complexități.

Există desigur și alte noțiuni de complexitate. De exemplu

  • Am auzit de o metrică „Area x Time”, care măsoară complexitatea unui atac în termeni de timp necesar unui circuit de o anumită dimensiune pentru a-l finaliza (dar nu pot găsi referințe acum),

  • în mod similar, este obișnuit ca atacurile să măsoare atât o noțiune de complexitate computațională, cât și o noțiune de complexitate memorie/eșantion,

  • în criptografia bazată pe zăbrele, o anumită măsurătoare cunoscută sub numele de „Numărul Core SVP” este destul de populară în analiză.

În general însă, deoarece nu este deloc evident ce $2^{128}$ operațiile primitive înseamnă (de exemplu), este la latitudinea autorilor să definească acești termeni, așa că în general o fac.

kelalaka avatar
drapel in
+1 pentru aducerea teoremei de accelerare liniară pe tabel. Autorii au calculat teoretic acest lucru în funcție de cerințele de implementare a forței brute și au eliminat câteva operațiuni simple. Accesul la memorie și stocarea datelor, celelalte detalii fac acest lucru mult mai rău decât forța brută. Procesul x calculul timpului este pe masă de la comerțul timp-memorie al lui Hellman.

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.