2011-09-01 6 views
6

Digamos que estoy diseñando una biblioteca para firmar/verificar mensajes con SHA-256 HMAC. Si el usuario final usa una clave compartida débil y envía una gran cantidad de mensajes cortos, supongo que existe el riesgo de que un atacante descubra la clave.Al usar HMAC para la firma de mensajes, ¿es aconsejable eliminar la clave, el mensaje o ambos?

Mi intuición dice que debería añadir una sal única (por mensaje) a la tecla para hacer ingeniería inversa de la clave más difícil.

¿Cuánto le teclear salazón ayuda, y voy a ganar nada salazón también los mensajes?

Respuesta

3

la gente normalmente la tecla sal. Aumenta la seguridad, tanto porque hace que la ingeniería inversa sea la clave más difícil, y porque el mismo mensaje no siempre tiene el mismo MAC, por lo que un atacante no puede simplemente volver a enviar un mensaje que se envió anteriormente con el mismo MAC. No veo qué salting así el mensaje te atraparía.

+1

estoy de acuerdo, salar el mensaje no hace nada (HMAC/SHA-256 no es computacionalmente intensivas, incluso para los mensajes largos), y salazón la clave es el camino a seguir. Sin embargo, si quiere saltear la clave, necesita usar un proceso computacionalmente intensivo como [PBKDF2] (http://en.wikipedia.org/wiki/PBKDF2) o de lo contrario no está realmente agregando ningún tipo de seguridad. – kbolino

+0

Así que crearía la clave con esta [función PBKDF2] (http://www.itnewb.com/v/Encrypting-Passwords-with-PHP-for-Storage-Using-the-RSA-PBKDF2-Standard) luego solo agregue el recuento de iteraciones al mensaje transmitido? ¿Cómo se determina la longitud de clave deseada? –

+1

Según tengo entendido, el recuento de iteraciones generalmente se trata como una constante de la implementación. Es decir, elige un valor como 10.000 y luego lo comparte de antemano (es decir, codificándolo en el software). Si desea que sea variable, debe establecer y aplicar un límite inferior bastante alto. – kbolino

Cuestiones relacionadas