2010-03-23 6 views
5

Me pregunto si también puedo usar una clave secreta compartida establecida entre dos clientes como la clave HMAC.Uso de una clave para Cifrado y HMAC

Vi que hay un problema cuando se utiliza como un CBC-MAC, pero no he encontrado ninguna evidencia de que sea una mala práctica para los HMAC.

Gracias, Vladimir

Respuesta

6

Creo que es actualmente en la categoría de "parece probablemente bien, pero ¿por qué correr el riesgo?".

La mejor práctica es tener cada lado generan dos nuevas claves de la clave secreta compartida:

encryption-key := HMAC(shared-key, "Encryption Nonce") 
hmac-key := HMAC(shared-key, "Authenticity Nonce") 
2

como CAF eludió. Una de las formas correctas de hacerlo es juntar la clave secreta compartida con algunos datos adicionales.

Por ejemplo:

enc-key = HASH(shared-key || 1) 
hmac-key = HASH(share-key || 2) 

Esto tiene la ventaja de no tener que transferir 2 nonces adicionales, además de ser fácil de implementar.

NO usaría la misma tecla en diferentes funciones (enc + hmac). Eso es pedir problemas y una mala idea.