Chiffrement et déchiffrement LOKI97
Chiffre par blocs australien - Candidat AES avec blocs de 128 bits et longueur de clé variable
Avis de sécurité
LOKI97 était un candidat AES mais n'a pas été sélectionné comme standard. Pour les nouvelles applications nécessitant une sécurité forte, AES (Rijndael) est recommandé.
À propos de LOKI97
LOKI97 est la troisième génération de la famille australienne de chiffrement LOKI, conçue par Lawrie Brown (Académie militaire australienne) et Josef Pieprzyk (Université Macquarie). La lignée débute avec LOKI89 (1990, blocs 64 bits), vulnérable à la cryptanalyse différentielle de Biham et Shamir, puis LOKI91 avec des S-boxes révisées, et enfin LOKI97, une conception complète soumise comme candidat AES en 1998, avec des blocs 128 bits et des clés de 128, 192 ou 256 bits.
L'élément structurel le plus distinctif de LOKI97 est ses S-boxes, générées par évaluation de polynômes irréductibles sur GF(2¹³) — une construction algébriquement plus complexe que les S-boxes DES ou les SubBytes AES sur GF(2⁸). Le programme de clé dérive tous les sous-clés de round en appliquant récursivement la fonction de round LOKI97 elle-même à la clé maîtresse.
Caractéristiques principales
- Blocs 128 bits — mis à niveau depuis les blocs 64 bits de LOKI89, éliminant la vulnérabilité de borne d'anniversaire
- Trois tailles de clés : 128, 192 et 256 bits — correspondant à la gamme complète des clés AES
- Réseau Feistel 16 tours avec S-boxes générées sur GF(2¹³) — structure algébrique plus complexe que DES ou AES
- Programme de clé auto-référenciel — les sous-clés dérivées par application récursive de la fonction de round LOKI97
- Origine australienne : conçu à l'ADFA et l'Université Macquarie, seul candidat AES à lignée académique exclusivement de l'hémisphère sud
Histoire de la famille LOKI
- LOKI89 : Le chiffre original conçu en 1989 avec des blocs de 64 bits et des clés de 64 bits.
- LOKI91 : Une version améliorée corrigeant les faiblesses trouvées dans LOKI89.
- LOKI97 : L'évolution finale avec des blocs de 128 bits, soumis à la compétition AES.
Modes de chiffrement
- CBC: Chaînage de blocs chiffrés — chaque bloc LOKI97 de 128 bits est XORé avec le chiffrement précédent avant la séquence Feistel à 16 tours et S-boxes GF(2¹³). Les blocs 128 bits maintiennent la probabilité de collision bien en dessous du seuil pratique (≈ 2⁶⁴ blocs ≈ 148 exaoctets par clé), rendant Sweet32 totalement hors de portée.
- ECB: Codebook électronique — chaque bloc LOKI97 de 128 bits traité indépendamment sur les 16 tours. Des blocs identiques produisent toujours le même chiffrement. CBC est recommandé à la place d'ECB pour tout chiffrement multi-blocs.
- CFB: Rétroaction de chiffrement — la fonction de bloc LOKI97 128 bits chiffre le bloc de chiffrement précédent et les n bits supérieurs sont XORés avec le texte en clair. La structure Feistel garantit dispersion et résistance aux attaques.
- OFB: Rétroaction de sortie — la fonction de bloc LOKI97 génère un flux de clé déterministe en ré-chiffrant itérativement l'état, indépendamment du texte en clair. L'état interne 128 bits assure un cycle de flux de clé statistiquement d'au moins 2⁶⁴.
- RAW: Bloc brut - Chiffrement direct d'un bloc unique sans mode de chaînage. Pas d'IV requis. Pour les blocs de 128 bits uniquement.
Structure de l'algorithme
LOKI97 utilise une structure de réseau Feistel à 16 tours. Chaque tour traite un bloc de 128 bits divisé en deux moitiés de 64 bits (L et R).
Planification des clés
La clé maîtresse de 256 bits est étendue en 48 sous-clés (SK[0] à SK[47]) en utilisant la fonction f et la constante DELTA (dérivée du nombre d'or). Pour les clés de 128 ou 192 bits, le matériel de clé est répliqué pour remplir un registre de clé de 256 bits avant l'expansion.
Fonction de tour
Chaque tour applique : L' = R + SK[3i], R' = L XOR f(R + SK[3i], SK[3i+1], SK[3i+2]). L'addition est modulo 2^64.
La fonction f
La fonction f centrale f(A, B) se compose de quatre couches :
- KP (Permutation contrôlée par clé) : Sélectionne des bits de A basés sur les bits de contrôle dans B
- Sa (Couche S-box a) : Huit recherches S-box parallèles utilisant deux types (S1 : 13→8 bits, S2 : 11→8 bits)
- P (Permutation) : Permutation de 64 bits utilisant un motif d'entrelacement de bits 8×8
- Sb (Couche S-box b) : Deuxième série de huit recherches S-box avec du matériel de clé supplémentaire de B
Boîtes S
S1 a 8192 entrées (entrée 13 bits → sortie 8 bits), S2 a 2048 entrées (entrée 11 bits → sortie 8 bits). Les deux sont calculées en utilisant des opérations de cube dans GF(2^13) et GF(2^11) respectivement, avec des polynômes générateurs spécifiques pour une forte non-linéarité.
Déchiffrement
Le déchiffrement utilise la même structure mais applique les sous-clés dans l'ordre inverse (SK[47] jusqu'à SK[0]) et utilise la soustraction au lieu de l'addition.
Comparaison des algorithmes
| Algorithme | Longueur de clé | Taille de bloc | Sécurité | Vitesse |
|---|---|---|---|---|
| LOKI97 | 128/192/256 bits | 128 bits | Bonne | Moyenne |
| AES | 128/192/256 bits | 128 bits | Excellente | Rapide |
| Serpent | 128/192/256 bits | 128 bits | Excellente | Moyenne |
| DES | 56 bits | 64 bits | Faible | Rapide |
Considérations de sécurité
- Aucune attaque pratique à tout round sur LOKI97 n'est connue. La construction S-box GF(2¹³) a été conçue pour contrecarrer la cryptanalyse différentielle et linéaire exposée dans LOKI89.
- Le bloc 128 bits élimine l'attaque Sweet32 qui affecte les 64-bit LOKI89/91. Une collision sous LOKI97 nécessiterait ≈ 2⁶⁴ blocs (~148 exaoctets) — inexistant en pratique.
- L'échec de LOKI97 à l'évaluation AES était un jugement de performance, pas de sécurité. Le comité AES a cité des performances logicielles inférieures à Rijndael et Twofish. Aucune faiblesse cryptographique n'a été signalée.
- Utilisez AES-128-GCM ou AES-256-GCM pour tout nouveau système. LOKI97 convient pour déchiffrer des données d'archives LOKI97 existantes et pour la recherche académique.
Cas d'utilisation
- Recherche académique : construction S-box GF(2¹³) et programme de clé auto-référenciel offrent un objet d'étude unique pour la conception algébrique de chiffrements
- Compatibilité systèmes australiens hérités : données chiffrées LOKI97 des années 1990 dans les systèmes gouvernementaux ou de défense australiens
- Étude comparative des candidats AES : avec Serpent, Twofish, RC6 et MARS pour comprendre les compromis de conception évalués par le NIST
- Conformité non-AES : organisations nécessitant un chiffrement exclusivement non-AES avec une analyse cryptographique documentée
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 Serpent
Algorithme finaliste AES avec clés 128/192/256 bits, 32 rondes, offrant une excellente marge de sécurité et une résistance cryptanalytique prouvée
Chiffrement/Déchiffrement Twofish
Finaliste AES, chiffrement symétrique à blocs de 128 bits et clés de 128/192/256 bits, conçu par Bruce Schneier