Valor de clave HMAC y seguridad

3

¿Qué efecto habría si usas el mismo valor que hash que la clave en un HMAC?

Por ejemplo, dado el siguiente ejemplo:

message: "my secret message" 
nonce: "0BHKK9IFbdF85KrzMFNpauyxWsM="

Si combiné el mensaje y el nonce (mensaje + nonce) y uso esa combinación para la clave HMAC y esa combinación es también lo que se está eliminando, ¿qué efecto tendría eso en términos de seguridad del HMAC?

En la superficie parecería que esto resuelve el problema de tener que mantener una clave secreta constante, porque la Clave en sí misma, el mensaje, solo la conoce la persona que escribió el mensaje en primer lugar y el nonce simplemente adjuntarse durante la verificación.

¿Pensamientos?

    
pregunta TugboatCaptain 20.01.2012 - 18:15
fuente

2 respuestas

4

HMAC no es un mecanismo de cifrado. Funciona así: puede calcular la salida HMAC sobre un mensaje dado y otro dato llamado la clave . La computación es determinista, por lo que para el mismo mensaje y clave siempre obtendrá la misma salida. Sin embargo, sin conocer la clave, no es factible calcular la salida HMAC en un mensaje dado, incluso dado un grupo de otras salidas HMAC calculadas con la misma clave sobre otros mensajes (por lo que, en particular, no se puede recuperar la clave de un HMAC). salida, incluso sabiendo el mensaje).

Por lo tanto,

HMAC sirve como integridad con clave: almacena la salida HMAC con algunos datos, de modo que puede volver a calcular el HMAC más adelante y ver si aún coincide con lo que está almacenado. Si no coinciden, sabrá que se modificaron los datos, la salida HMAC almacenada, o ambas cosas.

Como sea que lo pongas, HMAC usa una clave que es secreta. Si no hay una clave per se, ya no es el modelo MAC , eso es simplemente un hashing creativo y complicado.

Yo entiendo su pregunta como implícitamente esta: usted tiene un sistema de cifrado que, para un mensaje dado, usa una clave secreta K y un Vector de inicialización por mensaje (que puede llamar "nonce" si lo desea). La IV se adjunta (como texto claro) al mensaje cifrado. Desea agregar un cierto control de integridad, para que pueda detectar de manera confiable la alteración maliciosa. Por lo tanto, su idea es calcular algo con funciones hash, sobre la concatenación del mensaje de texto sin formato y el IV, y almacenar la salida de hash como un MAC (transformar el hash en "HMAC con los mismos datos como clave y entrada principal" no es fundamentalmente cambiar las cosas aquí).

Básicamente, este tipo de esquema es débil. El atacante conoce la IV (ya que el conocimiento de la IV es necesario para descifrar, no puede ser cifrado). Si el atacante "adivina" el mensaje, entonces puede volver a calcular el hash. Si puede hacer algunas modificaciones específicas en el mensaje (lo que es especialmente fácil si el cifrado es similar a XOR, como un cifrado de flujo o un cifrado de bloque en modo CTR), simplemente puede volver a calcular el valor de hash y almacenarlo allí. Incluso si encripta la salida de hash con el mensaje en sí, entonces el atacante todavía puede modificar el mensaje y el hash si el cifrado es similar a XOR.

También, ese hash (o el tipo de salida HMAC) se puede usar como prueba para adivinar el mensaje: el atacante puede hashear varios mensajes combinados con el IV, hasta que se encuentre una coincidencia.

Si desea realizar el cifrado con una clave y ha verificado la integridad, se le recomienda encarecidamente que lo haga con un modo de cifrado que ha sido diseñado para eso, por ejemplo. EAX . Si no hay cifrado en su sistema y aún desea que se compruebe la integridad, necesitará almacenar una clave secreta para eso, independientemente de cómo lo tome, y tiene poco sentido que no use HMAC como se supone que debe ser, es decir, con un clave como la "clave".

    
respondido por el Tom Leek 20.01.2012 - 18:52
fuente
2

Un MAC es un código de autenticación . Un MAC correcto dice "Yo, el titular de la clave, he visto este mensaje exacto". El objetivo principal de usar un MAC es poner al poseedor de la clave secreta en el bucle. Si la clave se deduce del mensaje, lo único que el valor le dice es que conoce el mensaje. Un simple resumen ya lo hace.

Agregar una sal es ortogonal; Puedes hacer esto con un resumen o con un MAC.

Bien, ahora lea la respuesta de Tom (que de alguna manera oculta la respuesta en un ensayo interesante).

    
respondido por el Gilles 20.01.2012 - 19:58
fuente

Lea otras preguntas en las etiquetas