¿Debo estirar la clave secreta en una implementación de protocolo de cookie segura?

0

Estoy creando una capa de autenticación de api que básicamente funciona como el protocolo de cookies seguras, donde en lugar de una cookie le doy al token del cliente un token que deben proporcionar en solicitudes posteriores. Ese token se firma a través de HMAC usando una clave secreta guardada en la memoria del servidor. La clave es una cadena hexadecimal aleatoria de 64 caracteres. Actualmente, estoy firmando las fichas con la clave directamente, pero según lo que he visto en el código fuente de ruby on rails, firman sus cookies con una clave secreta que se deriva de la base de la clave secreta con pbkdf2. ¿Contra qué vector de amenaza está esta defensa? Como lo entendí, se supone que el estiramiento de la clave ayuda a prevenir ataques de fuerza bruta sin conexión contra contraseñas almacenadas. No tengo claro cuál es su propósito aquí y si es algo que debería implementar.

    
pregunta AndrewSwerlick 02.06.2015 - 16:47
fuente

1 respuesta

2

El estiramiento de las teclas básicamente le da más fuerza a una clave con baja entropía, al derivar un hash a partir de ella creado por múltiples iteraciones.

Una cadena hexadecimal de 64 caracteres, asumiendo que se genera completamente al azar tendrá 256 bits de entropía. Al autenticar una cadena con un HMAC, cualquier cosa de 128 bits o más se considera "irrompible".

El estiramiento de la tecla mitiga el riesgo de tener una clave débil, porque la única forma en que un atacante puede encontrar la clave es a través de un ataque de adivinación de contraseña sin conexión. Con el estiramiento de la clave con 1024 iteraciones, esto hace que la contraseña sea 10 "más fuerte" porque cada atacante que intenta el atacante tiene que ejecutar la función hash 1024 veces (el equivalente a tener más entropía en la propia contraseña; el espacio de teclas adicional que tendría una contraseña más fuerte).

Así que con Ruby on Rails, esto protege al propietario del sitio que elige una clave débil (< 128 bits). Si puede controlar su clave y la hace lo suficientemente fuerte, no hay necesidad de estirar la llave.

    
respondido por el SilverlightFox 02.06.2015 - 17:01
fuente

Lea otras preguntas en las etiquetas