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>