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