CBC-MAC: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m typo, cat |
m Bot: sostituisco l'entitità '—' con '—' |
||
Riga 17:
Supponiamo che un utente effettui la crittografia di un messaggio <math>m_0 \| m_1 \| \cdots \| m_{x-1}</math> in modalità CBC usando un IV <math>c_{-1}</math> ed ottenendo il seguente testo cifrato: <math>c_0 \| c_1 \| \cdots \| c_{x-1}</math>, dove <math>c_i = E_k(m_i \oplus c_{i-1})</math>. Inoltre, genera il codice CBC-MAC per IV e per il messaggio: <math>t=M(m_{-1} \| \cdots \| m_{x-1}).</math>.
Adesso un attaccante può cambiare ogni bit prima dell'ultimo blocco <math>c_{x-1}</math> e il codice MAC sarà ancora valido. La ragione è che <math>t = E_k(m_{x-1} \oplus c_{x-2}) = c_{x-1}</math> (questa è attualmente la ragione per cui le persone commettono questo errore così
Questo esempio mostra, inoltre, che un CBC-MAC non può essere usato come funzione monodirezionale resistente alle collisioni: data una chiave è banale creare un messaggio differente che generi lo stesso codice.
| |||