CoderTools

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é.

LOKI97 supporte des clés de 128 bits (16 octets), 192 bits (24 octets) ou 256 bits (32 octets).
Options de format

À propos de LOKI97

LOKI97 est un chiffre par blocs à clé symétrique conçu par Lawrie Brown et Josef Pieprzyk en 1997. Il a été soumis comme candidat pour la compétition Advanced Encryption Standard (AES), représentant l'évolution des chiffres LOKI89 et LOKI91 développés en Australie.

Le chiffre opère sur des blocs de données de 128 bits et supporte des tailles de clé de 128, 192 ou 256 bits. Il utilise une structure de réseau Feistel à 16 tours avec des fonctions de tour complexes basées sur des S-boxes et des permutations, conçues pour fournir une forte résistance contre la cryptanalyse différentielle et linéaire.

Caractéristiques principales

  • Taille de bloc de 128 bits conforme aux standards de sécurité modernes
  • Tailles de clé flexibles : 128, 192 ou 256 bits
  • Structure Feistel à 16 tours pour un mélange complet des données
  • Conçu pour résister à la cryptanalyse différentielle et linéaire
  • Membre de la famille de chiffres LOKI développée en Australie

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 - Chaque bloc est XORé avec le bloc chiffré précédent avant le chiffrement. Fournit une sécurité forte. Requiert un IV.
  • ECB: Livre de codes électronique - Chaque bloc est chiffré indépendamment. Simple mais révèle les motifs dans les données. Non recommandé pour la plupart des utilisations.
  • CFB: Retour de chiffrement - Convertit le chiffre par blocs en chiffre de flux. Auto-synchronisant et gère les blocs partiels.
  • OFB: Retour de sortie - Génère le flux de clés indépendamment du texte clair. Pas de propagation d'erreur.
  • 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é

  • LOKI97 offre une bonne sécurité sans attaque pratique trouvée contre le chiffre complet
  • La taille de bloc de 128 bits s'aligne sur les exigences de sécurité modernes
  • Bien que non sélectionné comme AES, LOKI97 reste cryptographiquement solide
  • Pour les nouvelles applications, AES est recommandé comme standard international

Cas d'utilisation

  • Compatibilité des systèmes hérités et recherche historique
  • Éducation cryptographique et étude des algorithmes
  • Analyse comparative avec d'autres candidats AES
  • Applications nécessitant une cryptographie développée en Australie

Références