0Pricing
Cryptology Academy · Lección

bcrypt: algoritmo y factor de coste

Aprenda el funcionamiento interno de bcrypt, el factor de trabajo y cómo ajustar correctamente el coste.

bcrypt: algoritmo y factor de coste es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.

Bienvenida

bcrypt es un algoritmo de hash de contraseñas diseñado en 1999 específicamente para ser lento y resistente a los ataques de hardware. Sigue siendo el algoritmo de hash de contraseñas más implementado.

Orígenes de bcrypt

Fue diseñado por Niels Provos y David Mazières a partir del cifrado Blowfish. La «b» representa Blowfish. Su idea clave es usar la configuración costosa de claves de Blowfish para ralentizarlo deliberadamente.

Formato del hash de bcrypt

$2b$12$saltsaltsaltsaltsaltsalthashhashhashhashhashhashhash $2b$: versión del algoritmo 12: factor de coste (log2 de las iteraciones) salt: 22 caracteres en base64 (16 bytes) hash: 31 caracteres en base64 (24 bytes)

Factor de coste

Coste 12 = 2^12 = 4096 iteraciones. Coste 13 = 8192 iteraciones. Cada incremento duplica el tiempo de cálculo. Ajústelo para que el hash tarde aproximadamente entre 100 y 300 ms en su hardware. La velocidad del atacante escala de forma idéntica.

bcrypt en Python

import bcrypt password = b'my_password' salt = bcrypt.gensalt(rounds=12) # generates random salt hashed = bcrypt.hashpw(password, salt) # Verify: bcrypt.checkpw(password, hashed) # True

Salt incorporado

bcrypt siempre genera y almacena el salt automáticamente. gensalt() produce un salt de 16 bytes criptográficamente aleatorio. No necesita gestionar el salt por separado: está incorporado en la cadena del hash.

Límite de 72 caracteres de bcrypt

bcrypt trunca la entrada a 72 bytes. Las contraseñas de más de 72 caracteres se consideran idénticas después de los primeros 72 bytes. Solución alternativa: aplicar un hash previo con SHA-512 antes de bcrypt (pero valide el enfoque).

Flujo de verificación de contraseñas

Inicio de sesión: 1. El usuario envía la contraseña 2. Se recupera el hash almacenado de la base de datos 3. bcrypt.checkpw(submitted, stored_hash) 4. checkpw extrae el salt del hash almacenado y vuelve a calcularlo 5. Devuelve True/False Nunca almacene la contraseña sin procesar.

Pruebas de rendimiento

Coste 12 de bcrypt: - CPU de consumo: ~150 ms por hash - GPU (RTX 4090): ~50.000 hashes por segundo (frente a 10.000 millones para SHA-256) La ventaja del atacante se reduce de 1.000 millones a ~300 con un coste 12 de bcrypt.

Recomendaciones sobre el factor de coste

OWASP 2024: factor de coste de bcrypt ≥ 10. Recomendado: 12. Compruébelo anualmente; a medida que mejora el hardware, aumente el factor. Implemente el recálculo del hash en línea: durante el inicio de sesión, compruebe el hash y actualícelo si es necesario.

Limitaciones de bcrypt

Debilidad de bcrypt: no es intensivo en memoria. Los atacantes pueden utilizar ASIC personalizados optimizados para bcrypt. Para aplicaciones nuevas, prefiera Argon2id, que es intensivo en memoria y resistente a ASIC.

Comprobación rápida

¿Qué significa el factor de coste 12 en un hash de bcrypt?

Resumen

bcrypt es sólido, pero no es intensivo en memoria. A continuación estudiaremos Argon2, el referente moderno del hashing de contraseñas con requisitos de memoria configurables.

Preguntas frecuentes

¿La lección «bcrypt: algoritmo y factor de coste» es gratis?

Sí — el texto completo de «bcrypt: algoritmo y factor de coste» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Qué aprenderé en «bcrypt: algoritmo y factor de coste»?

Aprenda el funcionamiento interno de bcrypt, el factor de trabajo y cómo ajustar correctamente el coste. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cryptology Academy?

No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «bcrypt: algoritmo y factor de coste»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?

Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Por qué SHA-256 sin más no sirve para las contraseñas
  2. bcrypt: algoritmo y factor de coste
  3. Argon2: hash de contraseñas con uso intensivo de memoria
  4. PBKDF2 y elección del algoritmo adecuado
← Volver a Cryptology Academy