|
|
Chiffrements par blocs
Blowfish |
Introduction
Blowfish a été conçu par Bruce Schneier en 1993 comme étant une alternative aux algorithmes existants, en étant rapide et gratuit. Blowfish est sensiblement plus rapide que le DES. Il est un chiffrement Feistel, utilisant itérativement une fonction de chiffrement 16 fois. La grandeur des blocs est de 64 bits.
Il peut prendre une longueur de clé variant entre 32 bits et 448 bits. Depuis sa conception il a été grandement analysé et est aujourd'hui considéré comme étant un algorithme de chiffrement robuste. Il n'est pas breveté et ainsi son utilisation est libre et gratuite.
Cet algorithme peut être optimisé dans les applications matérielles (puces), mais il est surtout utilisé dans des logiciels.
Il y a deux parties dans l'algorithme : une première partie qui manipule l'expansion de la clé et une deuxième partie qui manipule le chiffrement des données.
Algorithme
Expansion de la clé
La première étape dans l'algorithme est de séparer la clé originale en un ensemble de sous-clés. Plus précisément, une clé (qui ne doit pas avoir plus de 448 bits) est séparée en plusieurs sous-clés totalisant 4168 octets. Il y a aussi l'initialisation d'un tableau P et de quatre S-Boxes de 32 bits chacune. Le tableau P contient 18 sous-clés de 32 bits, alors que chaque S-Box contient 256 entrées.
Les étapes suivantes sont utilisées pour calculer les sous-clés :
| · |
Initialisation du tableau P et des S-Box avec une chaîne de caractères fixe (chiffres composant la constante PI). |
| · |
Opération XOR entre le tableau P (et ses 18 entrées) et les bits de la clé : P[1] XOR (1er 32 bits de la clé),
P[2] XOR (2e 32 bits de la clé),
...
P[18] XOR (Ne 32 bits de la clé) Lorsque les bits de la clé sont épuisés, on revient au premier 32 bits. |
| · |
Utilisation de l'algorithme blowfish pour chiffrer la chaîne de caractères all-zero (chaîne de caractères fixe) en utilisant les sous-clés. |
| · |
La sortie est maintenant P[1] et P[2]. |
| · |
Chiffrement des nouveaux P[1] et P[2] avec les sous-clés modifiées. |
| · |
La sortie est maintenant P[3] et P[4]. |
| · |
Répéter 521 fois les deux dernières étapes afin de calculer les nouvelles sous-clés pour le tableau P et pour les quatre S-Box. |
Chifffement
Algorithme
Note : l'entrée de 64 bits de texte clair est notée "x" et le tableau P est noté Pi/P[i], où "i" est l'itération.
Début chiffrement
Divisé x en 2 : xL et xR
Pour i allant de 1 à 16 faire
xL = xL XOR P[i]
xR = F(xL) XOR xR
Permuter xL et xR
Fin Pour
Permuter xL et xR
xR = xR XOR P[17]
xL = xL XOR P[18]
x = xL + xR
Retourner x
Fin chiffrement
|
|
La fonction F( )
Début fonction F(Entrée : xL : 32 bits de données)
Divisé xL en 4 : a, b, c, d
Retourner ((S1,a + S2,b MOD 232) XOR S3,c) + S4,d MOD 232
Fin fonction F
Considérations
Mettre en application l'algorithme de Blowfish semble une option pratique pour le chiffrement de donnée étant donné qu'il est destiné à être rapide, compact, simple et relativement sécuritaire. Néanmoins, il convient mieux aux applications logicielles plutôt qu'aux applications matérielles.
|
 |
|
|
|
|