Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Almacenamiento de contraseñas: funciones y sal

5 tareas · 40 min · Principiante

Para valorar cómo guarda contraseñas una aplicación no hace falta ver ni una sola contraseña, ni intentar recuperar ninguna. Bastan tres datos por almacén: qué función usa, con qué parámetros y si lleva sal. Esta sala lee la estructura de los cuatro almacenes de Logística Simijaca y el conteo de valores repetidos que preparó su administrador de bases de datos, encuentra el almacén que delata contraseñas compartidas sin romper nada y termina en la recomendación que se puede cumplir sin obligar a todo el mundo a cambiar la suya mañana.

0 de 5 · 0%

Objetivo de la sala

Para valorar cómo guarda contraseñas una aplicación no hace falta ver ni una sola contraseña, ni intentar recuperar ninguna. Bastan tres datos por almacén: qué función usa, con qué parámetros y si lleva sal. Esta sala lee la estructura de los cuatro almacenes de Logística Simijaca y el conteo de valores repetidos que preparó su administrador de bases de datos, encuentra el almacén que delata contraseñas compartidas sin romper nada y termina en la recomendación que se puede cumplir sin obligar a todo el mundo a cambiar la suya mañana.

Una función resumen de propósito general, como SHA-256 o SHA-1, está hecha para ser rápida: sirve para comprobar archivos enormes en poco tiempo. Esa virtud se vuelve en contra cuando lo que se guarda es una contraseña, porque quien se lleve la tabla puede probar candidatos a la misma velocidad.

Las funciones pensadas para contraseñas hacen lo contrario a propósito: son caras de calcular, y su coste se ajusta con un parámetro (memoria, pasadas, iteraciones o un factor de coste) que se sube con los años. La guía de almacenamiento de contraseñas de OWASP pone primero a Argon2id y, si no está disponible, scrypt; acepta bcrypt en los sistemas que ya lo usan y deja PBKDF2 para cuando una norma exige algoritmos aprobados.

Responde para continuar

¿Por qué SHA-256 sin más no es una buena forma de guardar contraseñas?

Ver pista de ayuda

El problema no es la función en sí, sino para qué fue diseñada.

La sal es un valor aleatorio distinto para cada cuenta que se mezcla con la contraseña antes de pasarla por la función. Tiene dos efectos. El primero: impide usar tablas precalculadas. El segundo, que es el que un evaluador ve sin hacer nada: sin sal, dos cuentas con la misma contraseña guardan exactamente el mismo valor.

Abre el laboratorio y revisa la columna de sal de los cuatro almacenes.

Responde para continuar

Escribe el nombre de la aplicación que guarda las contraseñas sin sal.

Ver pista de ayuda

Ejecuta `SELECT aplicacion, funcion, sal FROM almacenes`.

El administrador contó cuántas cuentas comparten cada valor guardado. En un almacén sin sal, ese conteo es una prueba directa: un grupo grande de cuentas con el mismo valor tiene la misma contraseña, casi seguro una de las que se repiten en todas partes. No hace falta averiguar cuál es para escribir el hallazgo; la cifra basta y es más fuerte que cualquier suposición.

Responde para continuar

¿Cuántas cuentas comparten el valor más repetido de ese almacén?

Ver pista de ayuda

Ejecuta `SELECT * FROM repeticiones`.

Usar la función adecuada no termina la revisión: el parámetro de coste decide cuánto le cuesta a un atacante cada intento. Para PBKDF2 con HMAC-SHA256, la guía de OWASP sugiere hoy del orden de 600 000 iteraciones. Un valor cientos de veces menor convierte una buena elección en una casi tan rápida como un resumen sin más. El formato guardado ayuda: muchas implementaciones escriben la función y sus parámetros al principio de la cadena.

Responde para continuar

Escribe la aplicación que usa una función adecuada con un coste demasiado bajo.

Ver pista de ayuda

Ejecuta `SELECT aplicacion, funcion, parametros FROM almacenes WHERE sal <> 'ninguna'` y compara los parámetros.

Cambiar de función no exige saber las contraseñas. La práctica habitual tiene dos piezas. Hoy mismo se puede envolver cada valor antiguo con la función nueva (el valor viejo pasa a ser la entrada de Argon2id, por ejemplo), y así ningún valor queda guardado con la función rápida. Y cada vez que alguien inicia sesión con éxito, la aplicación conoce la contraseña un instante y la vuelve a guardar directamente con la función nueva. Guardar junto a cada valor la función y sus parámetros facilita el siguiente cambio.

Responde para continuar

¿Qué recomiendas para el almacén sin sal de la intranet?

Ver pista de ayuda

Una contraseña cifrada se puede descifrar; una guardada con función lenta, no. Y cambiar la contraseña con la misma función deja el mismo problema.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad