Outil de chiffrement/déchiffrement Blowfish
Chiffrement par bloc symétrique rapide conçu par Bruce Schneier
⚠️ Avis de sécurité
La taille de bloc de 64 bits de Blowfish peut être vulnérable aux attaques d'anniversaire pour de grands volumes de données. Pour une sécurité maximale, envisagez d'utiliser AES-256 pour les nouveaux projets.
À propos du chiffrement Blowfish
Blowfish est un chiffrement symétrique 64 bits conçu par Bruce Schneier en 1993, publié comme alternative rapide et non brevetée à DES. Sa structure Feistel à 16 tours utilise des clés variables de 32 à 448 bits. Le calendrier de clés génère 18 entrées P-array et quatre S-boxes de 256 entrées (~4 Ko) en chiffrant les décimales hexadécimales de π. Blowfish était le chiffrement par défaut d'OpenVPN (mode BF-CBC) jusqu'à la version 2.4.0 (2017), remplacé par AES-256-GCM.
La génération de clés Blowfish est intentionnellement lente (521 itérations d'elle-même), rendant la recherche de clé par force brute coûteuse. bcrypt exploite cette propriété avec Eksblowfish pour le hachage de mots de passe avec facteur de coût 4-31. La limite principale est le bloc 64 bits : l'attaque Sweet32 (CVE-2016-2183, 2016) a démontré qu'après ~32 Go sous la même clé CBC, des collisions de blocs statistiquement exploitables permettent la récupération de texte clair.
Caractéristiques principales
- Clé variable : 32 à 448 bits, même Feistel 16 tours sur toute la plage
- Sous-clés issues de π : initialisation transparente sans portes dérobées
- Haute performance sur matériel 32 bits sans AES-NI
- Origine de bcrypt : Eksblowfish (OpenBSD 1999) dérive de la génération lente des sous-clés Blowfish
Modes de chiffrement
- CBC: CBC Blowfish — blocs 64 bits XOR avec le chiffrement précédent. Limite Sweet32 : après ≈32 Go sous la même clé CBC, le seuil de naissance (2³² blocs) est atteint et les collisions deviennent exploitables. Rotation de clé obligatoire avant ce seuil.
- ECB: ECB Blowfish — chaque bloc 8 octets traité indépendamment. Blocs identiques → chiffrés identiques. Uniquement pour opérations sur bloc unique.
- CFB: CFB Blowfish — flux auto-synchronisant avec propagation d'erreur. Même contrainte Sweet32 32 Go par clé que CBC.
- OFB: OFB Blowfish — flux de clé déterministe par re-chiffrement itératif. Pas de propagation d'erreur, mais limite de cycle 2³² blocs (état interne 64 bits).
Comparaison des algorithmes
| Algorithme | Longueur de clé | Taille de bloc | Sécurité | Vitesse |
|---|---|---|---|---|
| Blowfish | 32-448 bits | 64 bits | Bonne | Rapide |
| AES | 128/192/256 bits | 128 bits | Excellente | Rapide |
| DES | 56 bits | 64 bits | Faible | Rapide |
| 3DES | 112/168 bits | 64 bits | Moyenne | Lente |
Considérations de sécurité
- Sweet32 (CVE-2016-2183, 2016) : après ~32 Go en CBC même clé, collisions de blocs statistiquement exploitables. Rotation de clé obligatoire avant 2³² blocs (32 GiB).
- OpenVPN 2.4.0 (2017) a remplacé BF-CBC par AES-256-GCM après Sweet32. Les connexions BF-CBC génèrent maintenant des avertissements de dépréciation.
- Aucune attaque algorithmique sur les 16 tours complets de Blowfish. Plus de 30 ans d'analyse publique sans rupture cryptographique au-delà de Sweet32.
- Utiliser AES-128-GCM ou AES-256-GCM pour tout nouveau projet. Blowfish pour déchiffrement de données BF-CBC héritées et enseignement.
Cas d'utilisation
- bcrypt : Eksblowfish utilise la lenteur Blowfish pour le hachage de mots de passe avec coût configurable (4-31). Compréhension essentielle du modèle de sécurité bcrypt
- Déchiffrement archives OpenVPN : trafic BF-CBC pré-2017 nécessite Blowfish pour déchiffrement et migration vers AES-256-GCM
- Systèmes embarqués à ressources limitées : petit footprint, 32 bits optimisé, sans AES-NI. Volumes < 32 Go par clé requis
- Enseignement cryptographie : structure π, Feistel, S-boxes et historique 30 ans d'attaques — idéal pour enseigner les compromis de conception symétrique
Références
Outils Connexes
Cryptage/Décryptage AES
Crypter et décrypter du texte en toute sécurité à l'aide de l'algorithme AES
Chiffrement/Déchiffrement DES/3DES
Chiffrer et déchiffrer avec les algorithmes DES et 3DES, plusieurs modes et options de remplissage
Chiffrement/Déchiffrement RSA
Utiliser le chiffrement asymétrique RSA pour le chiffrement à clé publique, le déchiffrement à clé privée, la signature et la vérification numériques