Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

bcrypt, el coste y el límite de 72 bytes

5 tareas · 38 min · Principiante

bcrypt es la función de contraseñas más desplegada y la que más veces se ve mal configurada por dos motivos concretos: el coste se deja en un valor que ya quedó corto, y se olvida que solo lee los primeros 72 bytes de la contraseña. En Bocachico Logística hay tres servicios que usan bcrypt con ajustes distintos. Vas a leer su configuración, una tabla de tiempos y dos pruebas autorizadas sobre cuentas de prueba, y a decidir qué falla en cada uno.

0 de 5 · 0%

Objetivo de la sala

bcrypt es la función de contraseñas más desplegada y la que más veces se ve mal configurada por dos motivos concretos: el coste se deja en un valor que ya quedó corto, y se olvida que solo lee los primeros 72 bytes de la contraseña. En Bocachico Logística hay tres servicios que usan bcrypt con ajustes distintos. Vas a leer su configuración, una tabla de tiempos y dos pruebas autorizadas sobre cuentas de prueba, y a decidir qué falla en cada uno.

En bcrypt el parámetro de coste no es el número de vueltas, es el exponente: el trabajo es dos elevado al coste. Subir el coste en una unidad duplica el esfuerzo de cada verificación, tanto el del servidor como el de quien pruebe candidatos por fuerza bruta. Por eso un coste bajo es tan dañino: la diferencia entre dos valores no es lineal. La guía de OWASP pide que el coste sea el mayor que el servidor de verificación soporte con comodidad, con un mínimo de 10, y que se revise con los años.

Consulta SELECT * FROM tiempos y observa cómo crece el tiempo de una verificación al subir el coste.

Responde para continuar

En la tabla de tiempos, el coste 13 tarda el doble que el 12. ¿Qué lo explica?

Ver pista de ayuda

Mira cuánto tarda cada coste: de uno al siguiente el tiempo se multiplica por dos, no se suma.

Como el coste es un exponente, comparar dos servicios exige calcular: la diferencia entre costes es el exponente de la razón de trabajo. Un servicio con un coste tres unidades menor que otro hace ocho veces menos trabajo por contraseña, no tres. Esa es la cifra que va en un informe cuando se dice «este servicio está por debajo».

Lee SELECT * FROM config_bcrypt y compara el servicio con el coste más alto con el que tiene el coste más bajo.

Responde para continuar

¿Cuántas veces más trabajo exige el coste del servicio con el coste más alto frente al del más bajo? Escribe solo el número.

Ver pista de ayuda

La razón de trabajo es dos elevado a la diferencia entre los dos costes.

Con la referencia de OWASP delante, un coste inferior a 10 es un hallazgo directo, y más si el servicio se creó hace poco. Pero el informe no dice solo «coste bajo»: dice qué servicio, qué valor tiene, qué referencia incumple y qué se propone. La tabla de tiempos ayuda a proponer: sube el coste mientras la verificación siga siendo asumible para el inicio de sesión.

Identifica en la configuración el servicio que no llega al mínimo.

Responde para continuar

¿Qué servicio tiene el coste de bcrypt por debajo del mínimo recomendado? Escribe su nombre tal cual.

Ver pista de ayuda

Compara la columna de coste de los tres servicios con el mínimo de la teoría.

bcrypt solo procesa los primeros 72 bytes de la contraseña; lo que venga después se ignora en silencio. Con una frase de paso larga, el usuario cree que protege toda la frase y en realidad solo cuenta el principio. Se detecta con una prueba autorizada sobre una cuenta de prueba: se cambia un único byte en una posición concreta y se mira si la entrada sigue funcionando. Si sigue funcionando, ese byte no cuenta. La configuración de app-conductores deja escribir hasta 200 bytes sin ningún tratamiento previo, y eso es lo que la prueba comprueba.

Lee SELECT * FROM pruebas_truncado: una de las dos cuentas siguió entrando después del cambio.

Responde para continuar

¿En qué posición de byte se cambió la contraseña de la cuenta de prueba que siguió entrando? Escribe solo el número.

Ver pista de ayuda

Mira la columna que indica si sigue entrando y toma la posición modificada de esa fila.

Hay dos arreglos válidos. El primero, limitar la longitud de la contraseña a lo que bcrypt procesa y avisar al usuario. El segundo, hacer un prehash: reducir la contraseña con una función de hash y codificar el resultado en base64 antes de pasarlo a bcrypt, para que el valor sea de longitud fija y no contenga bytes nulos que corten la lectura. OWASP recomienda además que, si se hace prehash, se combine con una pimienta mediante HMAC. Lo que no es un arreglo es subir el coste o ampliar el formulario: el límite es de la función.

Mira la columna de prehash de config_bcrypt y contrasta cada servicio con lo que de verdad hace.

Responde para continuar

Según la configuración, ¿qué afirmación sobre el límite de 72 bytes es cierta?

Ver pista de ayuda

Un servicio limita la longitud por debajo de 72; otro hace prehash. Pregúntate cuál de los tres no deja bytes sin leer.

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