L`Advanced Encryption Standard ou
Transcription
L`Advanced Encryption Standard ou
INTRODUCTION AUX TECHNIQUES DE CHIFFREMENT ET DE SECURITE – CNAM LIMOGES, CYCLE C, 2003-2004 L’ADVANCED ENCRYPTION STANDARD OU « AES » Ce document en langue française s’appuie essentiellement sur l’excellente publication que représente le « FIPS P 197 » disponible à l’adresse http://aes.nist.gov. Toute personne désirant découvrir l’AES peut et doit s’y reporter, le caractère pédagogique de cette publication « standard » étant incontestable. Introduction L’AES est le standard de chiffrement symétrique destiné à remplacer le « DES »1 (FIPS P 46-3). Il est aujourd’hui défini dans le « FIPS P 197 » (« Federal Information Processing Standards Publication »). Historique En avril 1997, le « NIST » ou « Nationale Institute of Standards and Technology » lance un défi à la communauté cryptographique sur la conception d’un nouvel algorithme de chiffrement symétrique. C’est un appel au public ; la participation au « concours » est libre. Cinq critères à respecter ont été lister dans le cahier des charges : • ce doit être un algorithme très robuste, à blocs, à clé symétrique pour les utilisations commerciales et gouvernementales du prochain siècle ; • il doit être plus efficace que le Triple DES, devant mettre en œuvre des clés de 128, 192 ou 256 bits de longueur et travailler sur des blocs de 128 bits de longueurs (les autres tailles sont optionnelles) ; • il doit être élaboré et évalué publiquement ; • il doit être libre de toute propriété intellectuelle dans le monde entier… A ces cinq critères, nous pouvons ajouter le fait qu’il devait enfin être à large portabilité : protocoles de réseau, cartes à puce, processeurs dédiés… Le 15 juin 1998, 15 algorithmes sont recensés répondant à ces critères, algorithmes venant de l’Allemagne, l’Australie, de la Belgique, du Canada, de la Corée, du Costa Rica, des Etats-Unis, de la France (ENS CNRS), du Japon… 1 Le « Triple DES » reste encore un algorithme approuvé pour les utilisations gouvernementales américaines. L’ADVANCED ENCRYPTION STANDARD - PHILIPPE JEULIN – 1 / 10 INTRODUCTION AUX TECHNIQUES DE CHIFFREMENT ET DE SECURITE – CNAM LIMOGES, CYCLE C, 2003-2004 Le 9 août 1999, une « short list » de 5 nominés est annoncée regroupant les algorithmes « Mars » (IBM), « RC6 » (RSA), « Rijndael » (prononcer « Raindal »), « Serpent » et « Twofish ». Le 2 octobre 2000, le finaliste (le « winner ») est l’algorithme « Riijndael » proposé par deux flamands, Joan Daemen de la société Proton World International et Vincent Rijmen chercheur au Département d’Electronique « ESAT » de l’Université Catholique de Louvain (Katholieke Universiteit Leuven). Le lecteur pourra se reporter à l’adresse du site des concepteurs http://www.esat.kuleuven.ac.be/~rijmen/rijndael pour de plus amples informations sur cette algorithme. Le NIST a sélectionné « Rijndael » pour des raisons de sécurité, de performance, d’efficacité, de facilité d’implémentation et de flexibilité. Il est possible de se procurer à l’adresse http://csrc.nist.gov/encryption/aes/round2/r2report.pdf (document de 116 pages) l’analyse rationnelle de ce choix. Présentation générale L’AES est un système de chiffrement symétrique à clé secrète. L’algorithme « Rijndael » offre la possibilité de travailler sur des blocs de 128, 192 ou 256 bits. Le standard, l’AES, n’a retenu que la taille de bloc de 128 bits. La clé de chiffrement peut être de 128, 192 ou 256 bits. Cette clé sera donc stockée sur 32 octets maximum. Qui plus est, le temps de calcul des « sous-clés » est faible. Ceci est fort intéressant lors de l’utilisation dans un contexte de sécurité à fort changement (tel « IPSec »). Tailles des clés AES Nombres des clés AES 128 3,4 1038 192 6,2 1057 256 1,1 1077 Taille de la clé DES Nombre des clés DES 56 7,2 1016 Rapport de 1021 avec le DES 1 clé DES cassée en 1 seconde ð 149 mille milliard d’années pour casser une clé AES sur 128 bits (Age de l’Univers : 20 109 années) L’ADVANCED ENCRYPTION STANDARD - PHILIPPE JEULIN – 2 / 10 INTRODUCTION AUX TECHNIQUES DE CHIFFREMENT ET DE SECURITE – CNAM LIMOGES, CYCLE C, 2003-2004 Schéma général Note : l’AES est un algorithme orienté « octet ». Clé Expansion Bloc en ↓ ↓ ð ⊕ ð Tour 1 ↓ ð ↓ Tour 2 ↓ ð ……. ð Tour r-1 ð Tour r Bloc ð clair chiffré Valeur de r ou Nr nombre de cycles ou « rounds ». Tailles du Bloc : Nb x 32 Tailles de la Clé : Nk x 32 128 192 256 128 10 12 14 192 12 12 14 256 14 14 14 AES Nb = 4 Nb = 6 Nb = 8 Détail d’un Tour Clé du Tour ò Bloc en entrée ð Substitution non linéaire : ð Bloc intermédiaire « SubByte » ð Permutation ð ⊕ ð Bloc en Linéaire : sortie « ShiftRow » + « MixColumns » « SubByte() » est une fonction non linéaire qui opère de façon indépendante sur chaque octet du bloc à partir d’une table de substitution « s-box ». « ShiftRow() » est une fonction qui opère des délages vers la gauche de 0, 1, 2 et 3 octets pour les « morceaux » 1, 2, 3 et 4. « MixColumns() » est une fonction qui transforme chaque octet d’entrée en une combinaison linéaire d’octets d’entrée (produit matriciel sur sur CG( 28 )). Note : Le déchiffrement consiste à réaliser les opérations inverses en présentant les sous-clés également dans l’ordre inverse. L’ADVANCED ENCRYPTION STANDARD - PHILIPPE JEULIN – 3 / 10 INTRODUCTION AUX TECHNIQUES DE CHIFFREMENT ET DE SECURITE – CNAM LIMOGES, CYCLE C, 2003-2004 Formalisme mathématique Byte L’AES est un algorithme orienté « byte », concaténation de 8 bits : {b7 , b6 , b5 , b4, b3 , b2 , b1, b0 }. Les valeurs de ces « bytes » peuvent être interprétés comme des éléments d’un Groupe.. Trois représentations d’une même information : 01100011 x6 + x5 + x + 1 { 6 3 } en hexadécimal {b7 , b6 , b5 , b4, b3 , b2 , b1, b0 } : b7 x7 + b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x1 + b0 . Bloc et Etat Les opérations de l’AES peuvent s’appréhender comme des opérations sur des tableaux à 2 dimensions ou Etats (« States ») contenant 4 lignes et Nb octets . Pour l’AES, le standard, Nb = 4. Un Bloc est en fait un tableau de 4 x 4 octets soit 16 octets soit 128 bits. s 0,0 s1, 0 s 2, 0 s 3, 0 s 0,1 s1,1 s 2,1 s 3,1 s 0, 2 s1, 2 s 2, 2 s 3, 2 s 0, 3 s1,3 s 2, 3 s3, 3 Etat Lois de composition Addition : XOR ⊕ 0 1 0 0 1 1 1 0 notons la propriété intéressante a ⊕ a = 0 et donc (a ⊕ b) ⊕ b = a. Trois représentations : 01010111 ⊕ 10000011 = 11010100 {57} ⊕ {83} = {d4} (x6 +x4 +x2 +x=1) ⊕ (x7 +x+1) = x7 +x6 +x4 +x2 L’ADVANCED ENCRYPTION STANDARD - PHILIPPE JEULIN – 4 / 10 INTRODUCTION AUX TECHNIQUES DE CHIFFREMENT ET DE SECURITE – CNAM LIMOGES, CYCLE C, 2003-2004 Multiplication : • Multiplication modulo un polynôme irréductible de degré 8 Pour l’AES, ce polynôme est m(x) = x 8 + x 4 + x 3 + x + 1 (soit {01 1b}). Exemple : {57} • {83} = {c1} ; En effet, (x6 +x4 +x2 +x=1) • (x7 +x+1) = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 +1 et ceci modulo x8 + x4 + x3 + x + 1 est égal à x7 + x6 + 1 soit {c1}. Note : a(x) • b(x) mod m(x) ⇔ b-1 (x) = a(x) mod m(x) Multiplication par x c’est-à-dire par (00000010) ou {02}. Soit b7 x7 + b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x1 + b0 multiplié par x : x • (b7 x7 + b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x1 + b0 ) = b7 x8 + b6 x7 + b5 x6 + b4 x5 + b3 x4 + b2 x3 + b1 x2 + b0 x Si b7 = 0 , le modulo m(x) est : b6 x7 + b5 x6 + b4 x5 + b3 x4 + b2 x3 + b1 x2 + b0 x si b7 = 1, le modulo m(x) sera : (b6 x7 + b5 x6 + b4 x5 + b3 x4 + b2 x3 + b1 x2 + b0 x ) ⊕ m(x) reste de la division de b7 x8 + b6 x7 + b5 x6 + b4 x5 + b3 x4 + b2 x3 + b1 x2 + b0 x par m(x). Cette multiplication peut être appréhendée comme un décalage circulaire gauche de 1 bit. Elle se note « xtime() ». Cette multiplication peut s’utiliser pour « simplifier » des calculs. Exemple : {57} • {13} = {fe} car {57} • {02} = xtime({57}) = {ae} {57} • {04} = xtime({ae}) = {47} {57} • {08} = xtime({47}) = {8e} {57} • {10} = xtime({8e}) = {07} alors {57} • {13} = {57} • ({01} ⊕ {02} ⊕ {10}) L’ADVANCED ENCRYPTION STANDARD - PHILIPPE JEULIN – 5 / 10 INTRODUCTION AUX TECHNIQUES DE CHIFFREMENT ET DE SECURITE – CNAM LIMOGES, CYCLE C, 2003-2004 = {57} ⊕ {ae} ⊕ {07} = {fe}. Polynômes avec coefficients dans CG(28 ) Des polynômes de 4 termes seront également définis avec leur coefficients appréhendés comme des éléments d’un groupe fini, polynômes de la forme : a3 x3 + a2 x2 + a1 x + a0 , ce polynôme étant associé à un mot (« word ») [a0 , a1 , a2, a3 ]. Attention, ces polynômes ne sont pas utilisés comme les précédents. L’addition est le « XOR ». La multiplication est la multiplication modulo un polynôme de degré 4 : x4 + 1. Notons que xi mod ( x4 + 1) = x imod4 ; cela va simplifier nos calculs… Soit a(x) = a3 x3 + a2 x2 + a1 x + a0 et b(x) = b3 x3 + b2 x2 + b1 x + b0 , nous aurons : a(x) + b(x) = (a3 ⊕ b3 )x3 + (a2 ⊕ b2 ) x2 + (a1 ⊕ b1 )x + (a0 ⊕ b0 ). c(x) = a(x) • b(x) = c 6 x6 + c5 x5 + c4 x4 + c3 x3 + c2 x2 + c1 x + c0 avec : c0 = a0 • b0, c 1 = (a1 ⊕ b0 ) • (a0 ⊕ b1 ), c 2 = (a2 • b0 ) ⊕ (a1 • b1) ⊕ (a0 • b2 ) c3 = (a3 • b0 ) ⊕ (a2 • b1 ) ⊕ (a1 • b2 ) ⊕ (a0 • b3 ), c 4 = (a3 • b1 ) ⊕ (a2 • b2) ⊕ (a1 • b3 ), c5 = (a3 • b2 ) ⊕ (a2 • b3 ) et c 6 = a3 • b3. Le produit modulo x4 + 1 de a(x) par b(x) que nous écrirons : a(x) ⊗ b(x) sera un polynôme de 4 termes d(x) = d3 x3 + d2 x2 + d1 x + d0 avec : d0 = (a0 • b0 ) ⊕ (a3 • b1 ) ⊕ (a2 • b2 ) ⊕ (a1 • b3 ) d1 = (a1 • b0 ) ⊕ (a0 • b1 ) ⊕ (a3 • b2 ) ⊕ (a2 • b3 ) d2 = (a2 • b0 ) ⊕ (a1 • b1 ) ⊕ (a0 • b2 ) ⊕ (a3 • b3 ) d3 = (a3 • b0 ) ⊕ (a2 • b1 ) ⊕ (a1 • b2 ) ⊕ (a0 • b3 ) du fait de l’égalité : xi mod ( x4 + 1) = x imod4 d0 a0 d 0 a1 Cela peut d’ailleurs s’écrire : = d a 0 2 d a 0 3 a3 a0 a1 a2 . a2 a3 a0 a1 a1 b0 a 2 b1 a 3 b2 a 0 b3 Le polynôme x4 + 1 n’est pas un polynôme irréductible. Cela n’est pas gênant car nous n’utiliserons pas ici la notion d’inverse. L’ADVANCED ENCRYPTION STANDARD - PHILIPPE JEULIN – 6 / 10 INTRODUCTION AUX TECHNIQUES DE CHIFFREMENT ET DE SECURITE – CNAM LIMOGES, CYCLE C, 2003-2004 Polynôme x 3 La fonction « RotWord() » utilisera ce polynôme. Les Opérations La Transformation « SubByte() » Cette opération agit isolément sur tous les octets sij d’un état et ceci en deux étapes : 1) Calcul de l’inverse de ai,j, bi,j dans le corps à 256 éléments GC(28) ; l’élément {00} est son propre inverse. 2) Transformation affine de cet octet calculé b'0 1 b' 1 1 b' 2 1 b' 3 = 1 b' 4 1 b'5 0 b' 0 6 b'7 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 b0 1 1 b1 1 1 b2 0 1 b3 0 + 0 b4 0 0 b5 1 0 b6 1 1 b7 0 La « S-box » utilisée dans la fonction « SubByte() » peut être présentée sous la forme d’un tableau de 16 lignes et 16 colonnes de valeurs hexadécimales. La Permutation Linéaire Cette permutation comprend deux étages, deux fonctions : ShiftRow() et MixColumn(). ShiftRow() Les octets des 4 lignes de l’Etat subissent un décalage circulaire gauche de respectivement 0, 1, 2 et 3 octets. La première ligne n’est donc pas décalée. Nous pouvons écrire que s’r,c = s r,(c+shift(r,4)) mod 4 pour 0 < r < 4 et 0 ≤ c < 4. L’ADVANCED ENCRYPTION STANDARD - PHILIPPE JEULIN – 7 / 10 INTRODUCTION AUX TECHNIQUES DE CHIFFREMENT ET DE SECURITE – CNAM LIMOGES, CYCLE C, 2003-2004 …MixColumns() Cette fonction traite chaque colonne comme un polynôme de 4 termes et multiplie ces derniers modulo x4 + 1 par un polynôme 3x3 + x2 + x + 2. Cette multiplication s’(x) = (3x3 + x2 + x + 2) ⊗ s(x) peut s’écrire, pour une colonne « c », sous la forme d’un produit matriciel de la forme : d0 a0 d 0 a1 d = a 0 2 d a 0 3 a3 a0 a1 a2 a2 a3 a0 a1 a1 b0 s ' 0,c 2 a 2 b1 s '1,c 1 soit = s ' 2,c 1 a 3 b2 s' 3 a 0 b3 3, c 3 2 1 1 1 3 2 1 1 s 0,c 1 s1,c 3 s 2,c 2 s 3, c La permutation du dernier tour n’inclus pas la seconde fonction. La fonction « MixColumns » amène une haute diffusion du changement. En effet, une différence sur un octet d’entrée se propage sur les 4 octets de sortie. Le travail de et sur le clé La fonction « AddRoundKey() » constitue la dernière étape d’un tour. Elle consiste en un « xor » de l’Etat courant et de la clé du tour. Chaque clé de tour a la même taille que celle du bloc à chiffrer donc chaque clé consiste en 4 mots de 4 octets chacun. Nous avons : [s’0,c , s’1,c ,s’2,c ,s’3,c ] = [s0,c , s1,c ,s2,c ,s3,c ] ⊕ [wround*4+c ] avec 0 ≤ c < 4. L’AES utilise la Clé de Chiffrement K et la soumet à une routine d’Expansion. Cette Expansion génère 4.(Nr +1) mots. L’algorithme requière un jeu initial de 4 mots et chacun des Nr tours requière également 4 mots de clé. Le résultat de cette Expansion consiste dans un tableau linéaire noté [wi ] avec i variant de 0 à 4.(Nr +1). En voici sa composition : L’ADVANCED ENCRYPTION STANDARD - PHILIPPE JEULIN – 8 / 10 INTRODUCTION AUX TECHNIQUES DE CHIFFREMENT ET DE SECURITE – CNAM LIMOGES, CYCLE C, 2003-2004 • Les Nk (4, 6 ou 8) premiers mots [w0 ,…, wNk-1] contiennent la clé. • Les mots suivants sont calculés en faisant un « XOR » du mot précédent : [wi-1 ] et du mot situé Nk positions avant :[wi-Nk ]. • Pour les mots situés sur une position qui est un multiple de Nk , une transformation Cette est appliquée transformation « RotWord() » consiste d’un cran à en vers [wi-1 ] une la avant permutation gauche suivie le cyclique d’une « XOR ». nommée application de la « S-box », « SubWord() », séparément sur chaque octet du mot puis d’un « XOR » avec un vecteur dépendant du tour, vecteur noté « Rcon(i/Nk) ». « Rcon(i) » contient la valeur [xi-1 ,{00},{00},{00}]. Il est important de noter que l’Expansion dans le cas d’une clé à 256 bits est différente des deux autres cas. En effet, dans ce cas où Nk = 8, si le rang i-4 est un multiple de Nk , la fonction « SubWord() » est encore appliquée à wi-1 avant le « XOR ». Exemple : Nk = 6, clé sur 192 bits. w0 w1 w2 w0 w1 w2 â à w3 ò w3 à w4 w5 w4 w5 à à w6 à w7 â ⊕ w8 á à w9 w10 w11 w12 w13 w14 w15 … w15 … Pour w8 , nous avons w8 = w8-1 ⊕ w8 – Nk = w7 ⊕ w8 – 6 = w7 ⊕ w2 ET : w0 w1 w2 w3 w4 w5 w6 w7 â â á â â ß ß â â á â â á â á RotWord() â â á â á SubWord() â â á â àà á Rcon(i) ⊕ â â á à àà àà àà àà ⊕ àà à w8 w9 w10 w11 w12 w13 w14 L’ADVANCED ENCRYPTION STANDARD - PHILIPPE JEULIN – 9 / 10 INTRODUCTION AUX TECHNIQUES DE CHIFFREMENT ET DE SECURITE – CNAM LIMOGES, CYCLE C, 2003-2004 Les Caractéristiques L’AES semble avoir de bonnes performances aussi bien en matériel qu’en logiciel et ce, aussi bien en mode « classique » (« ECB ») qu’en mode « feedback » (« CBC », « OFB » et « CFB »). Le temps de calcul de la diversification de la clé en sous-clés est faible. Ceci est important pour une utilisation dans une utilisation qui demande un changement fréquent de contexte (comme l’utilisation au sein de « IPSec »). Grâce à cette expansion rapide, il est possible de ne stocker que la clé, sur 32 octets maximum, et non les éventuelles 14 sous-clés (en comparaison, un contexte « IPSec » occupe en moyenne 100 octets). L’AES ne requière que peu de mémoire ; il est donc utilisable dans des environnements qui en disposent peu tels que les cartes à puces. L’ADVANCED ENCRYPTION STANDARD - PHILIPPE JEULIN – 10 / 10