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?
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
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? –
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