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. Si envío (h1, c) a través de un canal, ¿es seguro?
Un CRC-8/16/32 es lineal dependiente, y lo construimos sobre el texto sin formato, así que supongo que de alguna manera puedo obtener información acerca de m o k que solo tienen c y h, ¿no?
2. Si envío (h2, c) a través de un canal, ¿es seguro?
Eso no puede ser mejor, porque si es así, es muy fácil crear un par válido (h2, c), mientras que si enviamos (h1, c) necesita saber el texto en claro para calcular un CRC válido?
Pregunta
Si hay un sistema, como los dos mencionados anteriormente, ¿cómo puede un hombre en el medio atacar el sistema? ¡Algunos ejemplos y / o matemáticas son apreciados!
Sé que no se puede usar un CRC para la autenticación en un sistema real, es una pregunta teórica. Hay gente que usa CRC en lugar de MAC real. Solo quiero entender los riesgos de la (mala) solución CRC. (en detalle con matemáticas)