¿Por qué es tan complicada la función de truncado para contraseñas de HMAC?

12

He estado leyendo a través de RFC4226 como parte de una investigación y me preguntaba por qué funciona Truncar el HMAC era tan complicado. Según tengo entendido, los últimos 4 bits del HMAC definen un desplazamiento desde el cual se toman 4 bytes para convertirlos en una contraseña de un solo uso.

¿Por qué la función de truncado no puede tomar los primeros 4 bytes del HMAC? ¿Hay alguna implicación de seguridad de tener siempre los mismos 4 bytes que he omitido o simplemente es más fácil de implementar utilizando un desplazamiento dinámico?

Cualquier información que cualquiera pueda proporcionar es muy apreciada.

    
pregunta Miles 22.03.2015 - 16:52
fuente

1 respuesta

18

Es un poco fetiche. Por lo que sabemos actualmente, no hay ninguna razón para creer que el uso de los primeros cuatro bytes de la salida HMAC no sería igual de seguro.

Sin embargo, la falta de razón para creer no implica que nadie crea. Algunas personas "sienten" que el truncamiento sistemático puede ayudar al atacante de una manera completamente no especificada. Con un montón de handwaving, uno podría argumentar que el truncamiento dinámico hará que la tarea sea un poco más difícil para un atacante que intenta un ataque de fuerza bruta en la clave secreta, con la ayuda de un FPGA o ASIC dedicado:

  • Como los 20 bytes de salida pueden ser necesarios, el atacante debe calcular un HMAC / SHA-1 completo; si solo se usaron los primeros cuatro bytes, entonces un circuito dedicado desenrollado podría omitir algunos pasos en las últimas rondas SHA-1 (estamos hablando de una optimización de, en el mejor de los casos, del 3% aquí).

  • El "truncamiento dinámico" implica algún tipo de búsqueda dependiente de los datos, lo que puede ser costoso en el área del hardware (de nuevo, esto es casi insignificante en relación con todos los agregadores de 32 bits en SHA-1).

Pero estas no son, realmente, buenas razones. Por lo tanto, el punto principal del "truncamiento dinámico" es ser algún tipo de vudú criptográfico que pueda sorprender al neófito y, por lo tanto, posiblemente ayude a la aceptación . Especificar un buen algoritmo no es suficiente; los implementadores también deben estar convencidos de usarlo y, para eso, algunos gestos de aspecto mágico pueden hacer maravillas.

    
respondido por el Thomas Pornin 22.03.2015 - 17:41
fuente

Lea otras preguntas en las etiquetas