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.
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
Herramientas Relacionadas
Cifrado/Descifrado AES
Cifrar y descifrar texto de forma segura usando el algoritmo AES
Cifrado/Descifrado DES/3DES
Cifrar y descifrar con algoritmos DES y 3DES, múltiples modos y opciones de relleno
Cifrado/Descifrado RSA
Usar cifrado asimétrico RSA para cifrado con clave pública, descifrado con clave privada, firma digital y verificación