m := plaintext message
c := Encrypt(k,m) (AES-128 in counter mode)
k := Key (16 Byte)
h1 := CRC-8/16/32(m)
h2 := CRC-8/16/32(c)
1. Se invio (h1, c) su un canale, è sicuro?
Un CRC-8/16/32 è dipendente dalla linearità, e lo costruiamo sopra il testo in chiaro quindi suppongo di poter ottenere in qualche modo alcune informazioni su m o k avendo solo c e h, giusto?
2. Se invio (h2, c) su un canale, è sicuro?
Questo non può essere migliore, perché se così fosse davvero facile, l'uomo nel mezzo potrebbe semplicemente creare una coppia valida (h2, c), mentre se inviamo (h1, c) ha bisogno di conoscere il testo in chiaro per calcolare un CRC valido?
Domanda
Se esiste un sistema, come i due sopra menzionati, come può un uomo-in-the-the-middle attaccare il sistema? Alcuni esempi e / o matematica sono apprezzati!
So che non è possibile utilizzare un CRC per l'autenticazione in un sistema reale, si tratta di una domanda teorica. Ci sono persone là fuori che usano CRC invece di MAC reale. Voglio solo capire i rischi della (cattiva) soluzione CRC. (in dettaglio con la matematica)