usando contador en lugar de sal para el hashing

3

Estoy desarrollando un protocolo propio para el intercambio seguro de mensajes. Cada mensaje contiene los siguientes campos: HMAC, hora, sal y mensaje en sí. HMAC se calcula sobre todos los demás campos utilizando una clave secreta conocida.

El protocolo debería proteger contra el ataque de respuesta. En un intervalo de tiempo largo, el registro de "tiempo" protege contra el ataque de reproducción (ambos lados deben tener relojes sincronizados). Pero para protección contra ataques de repetición en cortos intervalos de tiempo (los relojes no son muy precisos) Estoy planeando reemplazar el campo "sal" con un contador que aumenta cada vez que se envía un nuevo mensaje. La parte receptora tirará los mensajes con un valor de contador menor o igual al contador del mensaje anterior.

¿Qué estoy haciendo mal?

El valor inicial del contador puede ser diferente (puedo usar el identificador de la parte como valor inicial), pero el atacante lo sabrá (el identificador de la parte se transmite en forma no cifrada). ( ¿Qué es una sal lo suficientemente buena para un SaltedHash? )

Pero el atacante puede calcular de antemano las tablas de arco iris para el contador + 1, el contador +2, el contador +3 ... ¿si no usaré sal realmente aleatoria?

    
pregunta fk0 27.11.2013 - 15:17
fuente

1 respuesta

3

El problema principal es que las sales deben ser preferiblemente únicas a nivel mundial para evitar las tablas de arco iris existentes. Si elige usar hash 1,2,3,4,5, etc., puede que ya exista una tabla de arco iris para ellos. Es un poco menos riesgoso si lo haces en incrementos de algún número aleatorio que hace que sea poco probable que tenga un ataque, sin embargo, no hay una buena razón para hacerlo. Es mucho mejor usar un valor aleatorio para cada uno. No es mucha información adicional para almacenar.

En cuanto a cómo se aplica a su situación, parece que está intentando intercambiar mensajes. Los hash no se utilizan para intercambiar mensajes, ya que son de una manera. Solo se utilizan para determinar si alguien más tuvo el mismo valor sin almacenar el valor real. Generalmente, solo se necesita una sal para las contraseñas, no para la firma de mensajes, por lo que no estoy seguro de que las sales y los hash se apliquen a lo que se intenta hacer como se describe.

    
respondido por el AJ Henderson 27.11.2013 - 16:22
fuente

Lea otras preguntas en las etiquetas