¿Cómo construyo un mecanismo de firma seguro sobre HMAC?

4

Supongamos que tenemos un sistema con claves compartidas sólidas (no frases de contraseña) y estamos intentando firmar los mensajes enviados por el servidor que serán visibles para un atacante. P.ej. almacenar el estado de la sesión en una cookie firmada.

¿Es seguro usar HMAC directamente con la clave compartida? I.e. la función será determinante y el atacante puede simplemente construir una colección de pares [mensaje, MAC]; ¿Puede él / ella comprometer la clave compartida?

Si no, ¿es seguro usar hmac_key = HMAC (salt, clave compartida) , donde salt es nuevo para cada solicitud y se envía junto con el MAC? ¿O necesito varias iteraciones de este / PBKDF2?

Supongo que quiero saber si el uso de una clave salada para HMAC proporciona alguna protección real de la clave, no solo parece más seguro.

    
pregunta Steve Clay 03.04.2013 - 17:08
fuente

1 respuesta

3

Técnicamente, HMAC es un MAC , no un firma . Algunas personas entienden mal la terminología (en particular, la documentación de Microsoft) y llaman a HMAC una firma, pero las cosas son más claras si usa las palabras correctas.

HMAC, cuando se usa con una función hash segura (por ejemplo, SHA-256, pero SHA-1 también está bien), es resistente a las falsificaciones; es decir, el atacante no puede calcular correctamente un par válido (m, h) donde h es el valor HMAC correcto para el mensaje m , incluso si el atacante tiene acceso a muchos pares (m ', h') (donde todos m ' son distintos de m ). En particular, el atacante no puede adivinar la clave HMAC, ya que obtener la clave HMAC le permitiría crear muchas falsificaciones.

Salts , y PBKDF2, solo tienen sentido si imaginas que podría funcionar una búsqueda exhaustiva de la clave. La salazón y el hashing lento (PBKDF2 hace ambas cosas) son medidas de mitigación para hacer la vida más difícil para el atacante en ese caso. En su escenario, la clave HMAC es "fuerte", es decir, inmune a una búsqueda exhaustiva (por ejemplo, es una secuencia de 128 bits obtenida de una fuente aleatoria criptográficamente fuerte). Por lo tanto, las sales, PBKDF2 u otros elementos rituales no lo harán más seguro. HMAC ya está bien como está.

Tenga en cuenta que, en el caso de las cookies, varios usuarios pueden coludir e intercambiar sus valores de cookies HMACed. Un usuario también podría registrar un valor de cookie y enviarlo nuevamente a usted, incluso si el servidor le envió un valor de cookie más reciente . Dependiendo de su contexto de uso, esto puede o no ser un problema.

    
respondido por el Thomas Pornin 03.04.2013 - 17:24
fuente

Lea otras preguntas en las etiquetas