CoderTools

Herramienta de cifrado/descifrado Blowfish

Cifrado de bloques simétrico rápido diseñado por Bruce Schneier

⚠️ Aviso de seguridad

El tamaño de bloque de 64 bits de Blowfish puede ser vulnerable a ataques de cumpleaños para grandes volúmenes de datos. Para máxima seguridad, considere usar AES-256 para nuevos proyectos.

Longitud de clave Blowfish: 4-56 bytes (32-448 bits). Recomendado: 16 bytes (128 bits) o más
Opciones de formato

Acerca del cifrado Blowfish

Blowfish es un cifrado simétrico de 64 bits diseñado por Bruce Schneier en 1993, publicado como alternativa rápida y sin patente a DES. Su estructura Feistel de 16 rondas utiliza claves variables de 32 a 448 bits. El programa de claves genera 18 entradas P-array y cuatro S-boxes de 256 entradas (~4 KB) cifrando los dígitos hexadecimales de π. Fue el cifrado predeterminado de OpenVPN (modo BF-CBC) hasta la versión 2.4.0 (2017), reemplazado por AES-256-GCM.

La configuración de clave de Blowfish es intencionalmente lenta (521 iteraciones propias), haciendo costosa la búsqueda de clave por fuerza bruta. bcrypt explota esto con Eksblowfish para hashing con factor de costo 4-31. La limitación principal es el bloque de 64 bits: Sweet32 (CVE-2016-2183, 2016) demostró que ~32 GB bajo la misma clave CBC crea colisiones explotables estadísticamente.

Características principales

  • Clave variable: 32 a 448 bits, mismo Feistel 16 rondas en todo el rango
  • Subclaves derivadas de π: inicialización transparente sin puertas traseras
  • Alto rendimiento en hardware 32 bits sin AES-NI
  • Origen de bcrypt: Eksblowfish (OpenBSD 1999) deriva de la generación lenta de subclaves Blowfish

Modos de cifrado

  • CBC: CBC Blowfish — bloques 64 bits XOR con cifrado anterior. Límite Sweet32: después de ~32 GB bajo la misma clave CBC, umbral de cumpleaños (2³² bloques) alcanzado y colisiones explotables. Rotación de clave obligatoria antes de ese límite.
  • ECB: ECB Blowfish — cada bloque de 8 bytes procesado independientemente. Bloques idénticos → cifrados idénticos. Solo para operaciones de bloque único.
  • CFB: CFB Blowfish — flujo auto-sincronizante con propagación de errores. Misma restricción Sweet32 de 32 GB por clave que CBC.
  • OFB: OFB Blowfish — flujo de clave determinista por re-cifrado iterativo. Sin propagación de errores, pero límite de ciclo 2³² bloques.

Comparación de algoritmos

Algoritmo Longitud de clave Tamaño de bloque Seguridad Velocidad
Blowfish 32-448 bits 64 bits Buena Rápida
AES 128/192/256 bits 128 bits Excelente Rápida
DES 56 bits 64 bits Débil Rápida
3DES 112/168 bits 64 bits Media Lenta

Consideraciones de seguridad

  • Sweet32 (CVE-2016-2183, 2016): después de ~32 GB en CBC misma clave, colisiones de bloques estadísticamente explotables. Rotación de clave obligatoria antes de 2³² bloques.
  • OpenVPN 2.4.0 (2017) reemplazó BF-CBC por AES-256-GCM tras Sweet32. Conexiones BF-CBC ahora generan advertencias de deprecación.
  • Ningún ataque algorítmico rompe las 16 rondas completas de Blowfish. Más de 30 años de análisis público sin ruptura criptográfica más allá de Sweet32.
  • Usar AES-128-GCM o AES-256-GCM para nuevas aplicaciones. Blowfish para descifrado de datos BF-CBC heredados y educación.

Casos de uso

  • bcrypt: Eksblowfish usa la lentitud Blowfish para hashing con factor de costo configurable (4-31). Comprensión esencial del modelo de seguridad bcrypt
  • Descifrado archivos OpenVPN: tráfico BF-CBC pre-2017 requiere Blowfish para descifrar y migrar a AES-256-GCM
  • Sistemas embebidos de bajo recurso: pequeño footprint, optimizado 32 bits, sin AES-NI. Volúmenes < 32 GB por clave requeridos
  • Educación criptográfica: estructura π, Feistel, S-boxes e historial 30 años de ataques — ideal para enseñar compromisos de diseño simétrico

Referencias

Menú Rápido

Sin herramientas recientes