Hash no criptográfico para autenticación de mensajes?

3

Mi aplicación utiliza UDP. La comunicación típica cliente-servidor consiste en un paquete (< 500 bytes de carga útil) del cliente y un paquete de respuestas a esas solicitudes del servidor. En el caso de pérdida de paquetes, el cliente debe reenviar su solicitud.

Para asegurar la "conexión" se utiliza un PSK AES-128 (previamente transferido a través de TLS / SSL). Ahora, cada paquete se cifrará utilizando AES-128 en modo CTR. El paquete contendrá el nonce / counter, el mensaje que se entregará y un hash del nonce plus message:

MyPayload = aes128CTR(nonce + plaintext + hash(nonce + plaintext))

¿Se puede usar una función hash no criptográfica (por ejemplo, Murmur3) como MAC en este caso?

Además, ¿tengo que enviar el nonce completo (16 bytes) o será suficiente un contador más pequeño (por ejemplo, 4 bytes) para estar seguro de que mi cliente envió el paquete en lugar de ser un paquete posiblemente suplantado por IP? / p>     

pregunta HannesR-O 01.09.2016 - 13:54
fuente

1 respuesta

3

Supongo que no, porque el hash sirve como un sesgo a tu texto simple. Murmur3, DJB2, etc. tienen dominios fijos muy pequeños y tienen en cuenta las colisiones, lo que no se puede permitir en un cifrado de bloque en modo contador.

Supongamos que un adversario conoce los parámetros de cifrado simétricos y la operación de modo de bloque utilizada, solo tomaría el tamaño del dominio nonce + hash para descifrar el texto cifrado. Esto se puede hacer en tiempo polinomial. Esto también responde a su segunda pregunta con respecto al tamaño del contador.

Argumentaría que usar una función hash de la forma en que lo describe puede debilitar aún más el texto cifrado, ya que deriva un hash relativamente pequeño del texto plano. Yo sugeriría cifrar y luego MAC de cualquier manera.

Actualizar

Si tiene la capacidad de cálculo para establecer una sesión TLS de todos modos, ¿por qué no ir con una variante de GCM / GHASH? Es posible que incluso desee encadenar los paquetes y agregar el contador de paquetes como AEAD en GCM.

    
respondido por el Yorick de Wid 01.09.2016 - 14:16
fuente

Lea otras preguntas en las etiquetas