Puncte:1

De ce dimensiunea de ieșire este exact jumătate din capacitatea pentru sha-3?

drapel jp

Pentru familia SHA-3 de funcții hash, dimensiunea de ieșire $d$ este întotdeauna ales ca $d=c/2$, adică exact jumătate din capacitate. Care este rațiunea pentru asta?

Naiv, cred că $d=c$ ar avea mai mult sens pentru că

  • Rezistența la coliziune pare să fie $\min(d/2, c/2)$ și
  • Puterea pre-imagine pare să fie $\min(d, c)$.

Deci alegerea $d=c$ ar face atacurile asupra capacității echivalente cu atacurile asupra ieșirii. Ce îmi lipsește?

kelalaka avatar
drapel in
Răspunde asta la întrebarea ta? [Securitatea Keccak/SHA3 împotriva atacurilor de naștere](https://crypto.stackexchange.com/questions/41413/security-of-keccak-sha3-against-birthday-attacks) și [De ce are atacul generic de descoperire a coliziunilor din construcția buretelui o complexitate de O(min(2^(-n/2) , 2^(-c/2)))?](https://crypto.stackexchange.com/q/12668/18298)
Simon avatar
drapel jp
@kelalaka Nu chiar cred. Aceste întrebări vorbesc doar despre atacuri de coliziune. Răspunsul lui poncho explică de ce este vorba de fapt de atacuri preimagine, de care nu mi-am dat seama până acum.
kelalaka avatar
drapel in
Nu văd pre-imagine în întrebarea dvs., aici [o acoperire mai mare cu quantum adăugat](https://crypto.stackexchange.com/a/67677/18298)
Simon avatar
drapel jp
@kelalaka Nu am întrebat despre atacurile de coliziune în special. Întrebam despre rațiunea pentru alegerea $d=c/2$ în standardul sha3 (deoarece propria mea rațiune părea să indice că $d=c$ este o alegere mai bună), tocmai am editat întrebarea pentru a face asta mai clar. Mă gândeam (incorect) doar la atacuri de coliziune. Oricum, raspunsul de la poncho este pe deplin satisfacator.
kelalaka avatar
drapel in
Ultimul link menționează motivele NIST și ulterior corectează seria SHAKE.
Puncte:4
drapel my

De ce dimensiunea de ieșire este exact jumătate din capacitatea pentru SHA-3?

Pentru că atacurile de coliziune nu sunt singurele de interes; de asemenea, ne așteptăm ca, pentru atacurile preimagine (și a doua preimagine), cel mai bun atac să nu fie mai bun decât forța brută (care necesită un $2^n$ evaluări hash pentru an $n$funcția hash -bit).

Pentru SHA-3, avem această abordare alternativă:

  • Selectați un număr mare de imagini inițiale $A_1, A_2, ..., A_k$ și calculați starea intermediară atunci când sunt date lui SHA-3 $\alpha_1, \alpha_2, ..., \alpha_k$

  • Selectați un număr mare de imagini finale $B_1, B_2, ..., B_k$ și folosind faptul că permutarea Keccak este inversabilă, se calculează din starea finală cunoscută (care scoate valoarea țintă) starea intermediară necesară care ar rezulta în starea finală; aceste stări intermediare sunt $\beta_1, \beta_2, ..., \beta_k$

  • Căutați prin $\alpha_i$, $\beta_j$ stări intermediare pentru a găsi o pereche $\alpha_x, \beta_y$ care sunt de acord în biți de capacitate; apelează xor al biților lor de rată $C$

Dacă găsim o astfel de pereche, atunci hash-ul mesajului $A_x C B_y$ este valoarea țintă.

Pentru a avea o probabilitate bună de a găsi o astfel de pereche, ar trebui să avem $j \aprox 2^{c/2}$.

Deci, pentru a face această abordare să nu fie mai ușoară decât ar cere metoda forței brute $c \ge 2n$

Simon avatar
drapel jp
Are sens. Nu m-am gândit că funcția Keccak este inversabilă. Mulțumesc că m-ai luminat.
Puncte:1
drapel us

Pe lângă atacurile de coliziune și preimagine, există și problema atacurilor de extensie de lungime (pe care le consider motivul „real” pentru această proprietate a SHA3).

Dacă aveți o funcție hash $H$ atunci este tentant să tratezi $H(k,m)$ ca un MAC al $m$, cu cheie secretă $k$. Din păcate, acest lucru nu duce la un MAC sigur dacă utilizați generația anterioară (SHA1, SHA2) de funcții hash.

Atacurile de extensie de lungime au loc tocmai pentru că funcția hash îi emite întreaga stare internă. Ideea din spatele atacurilor de extensie de lungime este următoarea: dacă $m$ este un prefix al $m'$ apoi ieșirea $H(k,m)$ apare ca stare internă la calcul $H(k,m')$. De fapt, din moment ce $H(k,m)$ este întreg stare internă la un moment dat, apoi puteți calcula $H(k,m')$ daca stii $H(k,m)$ -- chiar dacă nu știi $k$! Acest lucru încalcă proprietatea de securitate pe care ați dori-o de la un MAC (învățarea MAC-ului de $m$ nu ar trebui să vă ajute să preziceți MAC-ul diferit $m'$, chiar dacă $m$ este un prefix al $m'$). (Aici trec peste problemele de umplutură în lungime, care nu reprezintă o barieră semnificativă în calea tipului de atac pe care îl schițez.)

În timpul competiției SHA3, majoritatea trimiterilor au fost concepute pentru a fi rezistente la atacurile de extindere a lungimii. Modul de a face acest lucru este cu așa-numita construcție „țeavă largă”: pur și simplu faceți starea internă mai mare decât ieșirea. Cu alte cuvinte, hash-ul ar trebui să scoată doar o parte din starea sa internă la sfârșitul calculului. Dacă faci asta, atunci $H(k,m)$ nu va conține tot ce este necesar pentru a calcula $H(k,m')$, iar acest lucru împiedică atacul de extindere a lungimii.

drapel pe
Pentru a preveni extinderea lungimii cu cel mult $2^n$ efort, aveți nevoie doar de $n$ biți de capacitate, nu de $2n$. Capacitatea de $2n$ pe SHA-3 a fost cu siguranță pentru a păstra securitatea preimagine de $2^n$ (a doua) a unui oracol aleatoriu cu lungimea de ieșire de $n$-biți.

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.