cryptosec

Cryptographie symétrique

CAST



Généralités

CAST est un algorithme original par certains aspects. Surtout parce que c’est en fait une spécification d’algorithme de chiffrement par blocs. C’est à dire que l’on peut suivre diverses options lors de l’implémentation. Et puis aussi parce que contrairement au DES, tout y est spécifié, notamment la façon de bâtir les S-tables (ou tables S).
Il y a des centaines de pages sur DES, une petite sur CAST changera un peu.
CAST a été développé par Carlisle Adams et Stafford Tavares.
Il en existe plusieurs "versions", CAST-128 (RFC 2144), CAST-256...

Détails :

CAST est un algorithme de chiffrement par bloc à réseau de Feistel.
Il opère sur 16 rondes en prenant des blocs en clair de 64 bits et retournent des blocs chiffrés de 64 bits.
Lors de chaque ronde, CAST utilise deux sous-clés : Kmi de 32 bits et Kri de 5 bits où i est la ronde.
Dans le cas de CAST, le réseau de Feistel prend la forme suivante :
On divise les blocs en clair en partie gauche, Lo et en partie droite Ro, chacune de 32 bits.

Texte clair = Lo || Ro (|| est la concaténation)
for i = 1 to 16 do
 L(i) = R(i-1)
 R(i) = L(i-1) XOR F(i)[R(i-1),Kmi,Kri]
Texte chiffré = R(16) || L(16)

Ou F est une fonction comprenant l’utilisation de 4 tables-S de 8 X 32, une rotation circulaire gauche et 4 sous fonctions qui dépendent de la ronde.

L’avantage des algorithmes à réseaux de Feistel est que quelle que soit la fonction F, l’algorithme garde la même structure lors des opérations de chiffrement et de déchiffrement, ce qui évite d’implémenter deux algorithmes. L’ordre des sous-clés est simplement inversé lors des deux processus.

Les tables de substitution : les "S-boxes" :

CAST 128 en utilise 8, chacune de 32 colonnes par 256 lignes. Quand on dit que la table-S est de 8 X 32 cela signifie que les 8 bits en entrée sélectionnent une ligne, et que la sortie est donnée par les 32 bits de la ligne.
Les 4 premières tables sont utilisées lors du chiffrement et du déchiffrement (dans la fonction F précédente) et les 4 autres sont utilisées pour la génération des sous-clés.
Les tables-S, hautement non-linéaires, sont conçues en suivant des principes mathématiques précis et connus, contrairement à celles du DES par exemple. Ils assurent en particulier la protection contre les cryptanalyses différentielles et linéaires.

Génération des sous-clés :

Le processus est relativement complexe, voir la RFC pour les détails. Ce qu’on peut en dire est que la génération des sous-clés de CAST à été conçue pour les rendre aussi solides que possible aux attaques connues, notamment par l’utilisation de tables-S non-linéaires. Par comparaison, les sous clés de DES sont générées par des opérations de substitution/permutation, ce qui semble offrir moins de sécurité.

Sources et liens :

La RFC 2144 qui spécifie CAST 128
La RFC 2612 qui spécifie CAST 256


 
cryptosec
14 mars 2002

 
 
 
 
 
Partager sur Twitter  |  Partager sur LinkedIn
 

Afficher les commentairesMasquer les commentaires


 
modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Creative Commons - BY - NC - ND

Tous les textes, images et sons de cryptosec sont publiés selon les termes de la licence Creative Commons - Attribution - Pas d’Utilisation Commerciale - Pas de Modification - 3.0