Puncte:4

Este $H(k || m) \oplus k$ sigur?

drapel fr

Se știe că $H(k || m)$ (când se utilizează SHA1) este o funcție MAC nesigură, deoarece este vulnerabilă la extensia lungimii hash.

Dar ce zici $H(k || m) \oplus k$? O extensie normală a lungimii hash pare să fie imposibilă acum. Chiar dacă aceeași cheie este folosită de mai multe ori, nu văd nicio problemă atâta timp cât ieșirea $H$ este suficient de aleatoriu. Am dreptate?

kelalaka avatar
drapel in
Bine ați venit la Cryptography.SE Această întrebare este temă? Care este originea acestei întrebări?
Maarten Bodewes avatar
drapel in
Rețineți că pentru proprietățile de securitate ale lui SHA-3, doar $H(k \| m)$ este considerat sigur - KMAC nu este mult altceva decât atât (dar folosește SHAKE, nu SHA).
Johny Dow avatar
drapel fr
@kelalaka Treceam prin câteva scrieri CTF și am găsit atacul de extensie a lungimii hash. Acum mă întreb doar despre această construcție.
kelalaka avatar
drapel in
Este exagerat pentru funcțiile hash sigure precum SHA3 și Blake2.
Puncte:6
drapel ng

Considera $H$ definit ca: SHA-512, cu ieșirea XORed cu primii 512 biți ai mesajului de intrare (complet cu zerouri pentru mesajul scurt). Cu asa $H$, MAC-ul propus este nesigur. Totuși, din câte știm, asta $H$ nu este mai rău decât SHA-512 din punct de vedere standard.

Argument: observați că dacă $H(m_1\mathbin\|m_2)=\operatorname{SHA-512}(m_1\mathbin\|m_2)\oplus m_1$ și $\operatorname{MAC}_k(m)=H(k\mathbin\|m)\oplus k$, apoi pentru cheia pe 512 biți¹ $k$ tine $\operatorname{MAC}_k(m)=\operatorname{SHA-512}(k\mathbin\|m)$. Prin urmare aceasta $\operatorname{MAC}$ este susceptibil la atacul de extensie de lungime².

Prin urmare, este imposibil să demonstrăm asta $H(k\mathbin\|m)\oplus k$ este un MAC sigur, fără o perspectivă asupra structurii interne a $H$.

Sunt destul de sigur că construcția MAC propusă este practic sigură pentru hashe-urile din familia SHA-2 și chiar și pentru SHA-1. S-ar putea să vrem dovedi securitate în ipoteza că hash-ul are Merkle-DamgÃ¥rd structura, o funcție de compresie construită dintr-un cifru bloc $E$ conform Davies-Meyer constructie, cu bloc corespunzator si dimensiune cheie pt $E$. Cred că acest lucru ar fi posibil în cadrul modelului de cifră ideal, dar nu a unui model standard de securitate $E$. Problema este că XORing cheia cu ieșirea unui cifru bloc o poate slăbi. Acesta este cazul de ex.pentru AES-128 în modul de decriptare, unde XOR elimină valoarea unei runde de securitate.


¹ Pentru chei de dimensiuni arbitrare, $\operatorname{MAC}_k(m)=\operatorname{SHA-512}(k\mathbin\|m)\oplus F_{|k|}(m)$ Unde $F_{|k|}(m)$ este $0^{\min(|k|,512)}$, urmat de primul $\min(\max(512-|k|,0),|m|)$ bucăți de $m$, urmat de $0^{\max(512-|k|-|m|,0)}$. Acest lucru permite încă atacul.

² Spre deosebire de ceea ce am scris inițial, nu ne putem recupera $k$ din interogări.

cisnjxqu avatar
drapel us
Îmi este greu să demonstrez că $H$ este o funcție hash rezistentă la coliziuni. Fie $H(m_1\|m_2) = \mathrm{SHA}(m_1\|m_2)\oplus m_1$.Având în vedere o coliziune de $H(m_1\|m_2)$, trebuie să dăm o coliziune pentru $\mathrm{SHA}$. Fie $m_a, m_b$ două intrări care se ciocnesc de $H$ cu $m_a \neq m_b$ și $H(m_a) = H(m_b)\iff\mathrm{SHA}(m_{a_1}\|m_{a_2} )\oplus m_{a_1} = \mathrm{SHA}(m_{b_1}\|m_{b_2})\oplus m_{b_1}$. Este ușor să deduceți o coliziune dacă $m_{a_1} = m_{b_1}$, dar dacă sunt distincte? Putem limita probabilitatea ca acestea să fie distincte?
fgrieu avatar
drapel ng
@cisnjxqu: Cred că am putea demonstra că $H$ definit astfel încât $H(m_1\mathbin\|m_2)=\mathrm{SHA}(m_1\mathbin\|m_2)\oplus m_1$ este rezistent la coliziuni sub un model de $\mathrm{SHA}$ ca un oracol aleatoriu. Cu toate acestea, acesta este un model slab, deoarece nu ține cont de proprietatea de extensie a lungimii. Cred că am putea demonstra asta mai laborios cu un model mai fin de $\mathrm{SHA}$ în care folosim construcția reală Merkle-Damgård și o funcție rotundă modelată de un oracol aleatoriu.
cisnjxqu avatar
drapel us
Ar putea fi posibil, da. Presupun că întrebarea mea este dacă există o funcție hash rezistentă la coliziuni (aici $\mathrm{SHA}$) astfel încât $H$ nu este rezistentă la coliziuni.
fgrieu avatar
drapel ng
@cisnjxqu : Da. Exemplu: definiți $S(m)$ ca fiind primul bit al lui $m$, concatenat cu un hash ideal al restului lui $m$. $S$ este rezistent la ciocniri, dar $H$ este definit de $H(m_1\mathbin\|m_2)=S(m_1\mathbin\|m_2)\oplus m_1$ nu este, deoarece primul bit al intrării lui $ H$ nu are nicio influență asupra rezultatului.
Johny Dow avatar
drapel fr
@fgrieu Mulțumesc mult! Îmi puteți oferi mai multe sfaturi despre cum să recuperez cheia folosind extensia de lungime hash? nu pot sa-mi dau seama..
fgrieu avatar
drapel ng
@Johny Dow: M-am înșelat, nu putem recupera cheia. A se vedea primele două paragrafe modificate ale răspunsului.

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.