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.