Me preguntaba cuáles eran los posibles problemas de seguridad (no de eficiencia) con esta función "hash":
Aunque no es una función real, este método convierte un mensaje de cualquier longitud en un mensaje de longitud fija. Cuando no sea factible derivar el mensaje del hash de longitud fija.
-Alice quiere enviar un mensaje (m) a Bob.
-Alice y Bob utilizan un cifrado simétrico con una clave compartida de alguna otra manera.
-Alice luego genera dos números verdaderamente aleatorios de la misma longitud que el mensaje (m) y realiza una OTP en el mensaje dos veces, una tecla aplicada a my una tecla aplicada al resultado de la otra tecla y m .. Alice destruye las llaves.
: hay un servidor llamado "servidor hash" que es un miembro de terceros en el que confían Alice y Bob y todos los demás remitentes de mensajes.
-Alice envía el doble texto cifrado OTP al servidor.
-El servidor responde con un mensaje de longitud fija más corto que el texto cifrado y lo llama el hash de (m) que el servidor no conoce. Este mensaje de longitud fija es un número verdaderamente aleatorio que se almacena en el servidor y se envía a Alice.
-Alice concatena la OTP encriptada doble con m y usa el cifrado simétrico para cifrar eso.
-Alice envía el (MAC) junto con el texto cifrado
-Bob envía el doble cifrado de texto cifrado al servidor. El servidor verifica si eso coincide con algo en su base de datos y envía el "hash" resultante a Bob. Si el resultado coincide con el MAC de Alice, el mensaje está intacto.
No hay colisiones ya que el servidor nunca enviará el mismo número aleatorio para dos mensajes diferentes. El doble cifrado es para que Bob no pueda derivar la clave OTP de Alice del mensaje que recibió de ella.