Skip to main content

Command Palette

Search for a command to run...

Adiós Bcrypt, Hola Argon2id 🔐

Published
3 min read
Adiós Bcrypt, Hola Argon2id 🔐

Desde los inicios de Videsk en 2020 nos hemos preocupado por la seguridad de los datos de nuestros clientes y de sus clientes, así como por la integridad ética de cómo, qué y por qué aplicar la seguridad en nuestros productos.

Adiós bcrypt

Ya han pasado 5 años usando hashing de contraseñas con bcrypt. Permitió mantener credenciales almacenadas en nuestros clusters de base de datos de forma segura siguiendo las recomendaciones de OWASP. Pero es momento de actualizar a la realidad del hardware contemporáneo.

Por qué?

En Q1 de 2026 nos planteamos hacer benchmarking de nuestros métodos de hashing y cifrado, y nos dimos cuenta de que el diseño de bcrypt fue pensado para ataques con hardware de los años 2000. Hoy esa premisa ha cambiado, ya que el hardware y el acceso superaron las expectativas de los autores.

Bcrypt sigue siendo válido, pero las recomendaciones más recientes de OWASP y IETF (RFC 9106) apuntan a Argon2id.

const cost = process.env.BCRYPT_COST || 13;
const hash = await bcrypt.hash("mypassword", cost);

Con bcrypt cost 13, cada hash toma ~600 ms en nuestra CPU. El problema no es ese costo aislado: es que un atacante con un clúster de GPUs puede hacer cientos a miles de intentos por segundo en paralelo, y bcrypt no escala su defensa frente a ese paralelismo masivo. Su único costo real es tiempo de cómputo, y el cómputo paralelizable se abarata cada año.

Entonces, se generó una asimetría entre el hardware que genera y protege el hash y quien quiere romperlo. Y por qué se sigue usando? Porque, culturalmente, se ha utilizado como un método de "hashing clásico".

Argon2id

Desde Abril de 2026 en Videsk, comenzamos la transición hacia Argon2id, dado que su diseño en 2015 (autores) considera el uso de hardware de aceleración (GPU) paralelizado, mientras la apuesta de bcrypt por hacer costoso el tiempo de cómputo, Argon2id apuesta por hacer costosa la memoria, que es el recurso más limitado y caro de paralelizar en GPU moderna.

const ARGON2_OPTIONS = {
  type: argon2.argon2id,
  memoryCost: 65536,
  timeCost: 3,
  parallelism: 1,
};
const hash = argon2.hash(String(password), ARGON2_OPTIONS);

Esta implementación sigue el estándar RFC 9106, aplicado a un entorno Enterprise que requiere un mayor consumo de memoria en la generación del hash, lo que incrementa el coste para el atacante.

Indirectamente, obtuvimos una mejora del ~60% en los tiempos de inicio de sesión, lo que mejoró la UX.

Cómo migramos?

Lo que se hizo fue forzar un rehashing reactivo a cada nuevo login, con la contraseña validada por bcrypt, para luego hacer hash con Argon2id. Para los usuarios que no hayan iniciado sesión dentro de los 30 días posteriores al despliegue, se forzará el cambio de contraseña aleatoria y se solicitará la restauración vía email al siguiente inicio de sesión.

A la fecha de publicación, cerca del 97% de nuestros usuarios han sido migrados a Argon2id, el 3% será forzado a resetear o lo que ocurra antes.

Cómo me afecta esto?

Si eres cliente de Videsk o incluso has utilizado nuestro servicio indirectamente en alguno de nuestros clientes, podrás tener la tranquilidad de que el acceso a datos sensibles a través de contraseñas ha subido de categoría almacenándose con un método diseñado para resistir los ataques con hardware moderno (GPU/ASIC), elevando el costo para un eventual atacante en órdenes de magnitud.

Si tienes dudas, puedes contactarnos en security@videsk.io.

Tech stories

Part 1 of 1

Technical post about challenges, improvements, research, and more in Videsk.