Blowfish
En 1993, alors que le Data Encryption Standard montrait ses premiers signes de faiblesse avec sa clé de 56 bits devenue vulnérable aux attaques par force brute, Bruce Schneier présentait au monde Blowfish, un algorithme de chiffrement symétrique qui allait révolutionner l'approche de la sécurité informatique.
Il n'avait pas choisi le hasard pour développer cet algorithme. Les solutions propriétaires dominaient le marché, souvent assorties de brevets contraignants et de coûts prohibitifs. L'idée d'un algorithme libre, gratuit et performant germait dans l'esprit de ce cryptographe américain qui souhaitait démocratiser l'accès au chiffrement fort. Blowfish naissait de cette vision : proposer une alternative crédible aux standards établis, sans les entraves juridiques ni financières.
Les spécifications techniques de Blowfish tranchaient avec les pratiques de l'époque. Contrairement à DES et sa clé figée, ce nouvel algorithme acceptait des clés de longueur variable, s'étendant de 32 à 448 bits. Cette flexibilité répondait aux besoins diversifiés des utilisateurs, qu'ils soient particuliers cherchant une protection basique ou gouvernements exigeant une sécurité maximale. Le cœur de l'algorithme reposait sur un réseau de Feistel à 16 tours, architecture éprouvée mais rehaussée par une innovation remarquable : les S-boxes dépendantes de la clé.
Ces boîtes de substitution constituaient la signature de Blowfish. Plutôt que d'utiliser des tables fixes comme ses prédécesseurs, l'algorithme générait ses propres S-boxes à partir de la clé fournie. L'initialisation démarrait avec les décimales de π, garantissant l'absence de trappes secrètes, puis les modifiait selon un processus complexe impliquant la clé utilisée. Cette approche rendait chaque implémentation unique tout en conservant les propriétés cryptographiques recherchées.
La présentation officielle eut lieu en 1994 lors du workshop Fast Software Encryption à Cambridge. L'accueil fut mitigé : si l'innovation technique impressionnait, la communauté cryptographique restait prudente face à ce nouveau venu. Les premiers tests de sécurité se succédèrent. Serge Vaudenay identifia des classes de clés faibles dans les versions réduites à moins de 14 tours, mais ces vulnérabilités n'affectaient pas la version standard. Vincent Rijmen développa une attaque différentielle du second ordre contre une variante à 4 tours, démonstration technique brillante qui ne remettait nullement en cause la robustesse de l'algorithme complet.
L'adoption commerciale de Blowfish dépassa les espérances de son créateur. Access Manager de Citi-Software Ltd l'intégra dans son gestionnaire de mots de passe, exploitant sa rapidité d'exécution pour sécuriser les données sensibles. Le traitement de texte AEdit en fit son moteur de chiffrement de documents, tandis que Blowfish Advanced CS de Markus Hahn l'utilisait pour l'effacement sécurisé de fichiers. Cette multiplication des implémentations témoignait de la confiance accordée par l'industrie à cet algorithme libre.
Les performances constituaient l'un des atouts majeurs de Blowfish. Sur les processeurs 32 bits, il ne nécessitait que 18 cycles d'horloge par octet chiffré, performance remarquable face aux 45 cycles de DES ou aux 50 cycles d'IDEA. Cette efficacité provenait du choix judicieux d'opérations simples : XOR, addition sur des mots de 32 bits, accès à des tables pré-calculées. Les tableaux de sous-clés tenaient dans le cache des processeurs comme le 80486 ou le 68040, optimisant ainsi les accès mémoire.
Cependant, cette rapidité d'exécution s'accompagnait d'un revers : l'initialisation. La génération des sous-clés requérait l'équivalent de 521 itérations de chiffrement, processus long qui pénalisait les applications nécessitant des changements fréquents de clé. Cette caractéristique orientait naturellement Blowfish vers les usages où la clé restait stable : chiffrement de fichiers, communications sécurisées établies, stockage de données.
La sécurité théorique de Blowfish impressionnait par sa solidité mathématique. Schneier avait calculé qu'une clé de 197 bits résisterait même si l'on convertissait toute l'énergie produite par le Soleil en opérations de calcul. Ces projections, bien qu'hypothétiques, illustraient la marge de sécurité considérable offerte par l'algorithme. Une clé de 128 bits nécessitait des milliards d'ordinateurs puissants pendant des millions d'années pour être brisée par force brute.
Les S-boxes dépendantes de la clé renforçaient cette sécurité en compliquant la cryptanalyse différentielle. Chaque clé générait ses propres tables de substitution, rendant difficile l'établissement de patterns exploitables. Le réseau de Feistel assurait une diffusion optimale : après quelques tours, chaque bit de sortie dépendait de l'ensemble des bits d'entrée, propriété centrale pour résister aux attaques statistiques.
Malgré ses qualités indéniables, Blowfish révélait certaines limites avec le temps. Sa taille de bloc de 64 bits, standard dans les années 1990, paraissait insuffisante face aux exigences croissantes de sécurité qui privilégiaient désormais les blocs de 128 bits. L'empreinte mémoire de l'algorithme, avec ses multiples tables, posait problème sur les systèmes embarqués aux ressources limitées comme les cartes à puce.
Ces contraintes n'empêchèrent pas Blowfish de s'imposer durablement. Trente ans après sa création, l'algorithme équipe encore de nombreux systèmes, témoignage de sa conception solide et équilibrée. Son successeur Twofish, finaliste du concours AES en 1998, reprit plusieurs de ses innovations tout en corrigeant les limitations identifiées. Mais Blowfish conservait ses adeptes, séduits par sa simplicité d'intégration et ses performances éprouvées.
L'impact de Blowfish dépassa largement le domaine technique. Il démontra qu'un algorithme cryptographique libre pouvait rivaliser avec les solutions commerciales les plus sophistiquées. Cette réussite inspira des développeurs et des chercheurs, contribuant à l'essor du mouvement de la cryptographie libre. OpenSSL et d'autres projets comme GnuPG s'appuyèrent sur cette démonstration pour légitimer leur approche collaborative.
L'analyse publique dont bénéficia Blowfish valida également le principe de Kerckhoffs, selon lequel la sécurité d'un système cryptographique ne doit reposer que sur le secret de la clé, non sur celui de l'algorithme. Cette transparence, loin d'affaiblir la sécurité, la renforçait en soumettant l'algorithme au regard critique de la communauté scientifique internationale.
Blowfish demeure une référence pédagogique incontournable pour comprendre les mécanismes de la cryptographie symétrique moderne. Son histoire illustre la transition du chiffrement matériel vers le chiffrement logiciel, démocratisation des outils cryptographiques, importance croissante des performances sur les architectures grand public. Cette synthèse réussie entre sécurité théorique et efficacité pratique en fit un modèle pour de nombreux algorithmes ultérieurs.