pa-ramétrables
Dans le chapitre précédent, les algorithmes de chiffrement par blocs ayant Kpour
ensemble de clés etMpour ensemble de messages ont été définis comme une famille
de permutations deM paramétrée par la clé k∈ K. Un algorithme de chiffrement
par blocparamétrable admet un paramètre additionnelt∈ T, éventuellement public,
appelé untweak en anglais. Son rôle est d’apporter une variabilité au chiffrement qui
soit directement intégrée à l’algorithme, à la manière d’un vecteur d’initialisation
ou d’un nonce pour un mode d’opération par exemple. Certains algorithmes de
chiffrement intègrent nativement cette fonctionnalité comme le Hasty Pudding
2.2. Les algorithmes de chiffrement par blocs paramétrables
Cipher [Sch98], Mercy [Cro00], ou Threefish (l’algorithme de chiffrement par blocs
utilisé dans la famille de fonctions de hachage Skein [FLS
+10]). La syntaxe et les
notions de sécurité des algorithmes de chiffrement par blocs paramétrables ont été
formellement définies dans un article initial de Liskov, Rivest et Wagner [LRW02]. Il
est notamment attendu d’un tel algorithme qu’il soit indistinguable d’une permutation
paramétrable (c’est-à-dire une famille de permutations aléatoires et paramétrées par
l’ensemble des tweaks). Depuis lors, cette primitive a trouvé plusieurs applications
comme les modes de chiffrement (paramétrables) préservant la longueur [HR03,
HR04], le chiffrement en ligne [RZ11, ABL
+13], le chiffrement authentifié [LRW02,
RBB03, Rog04] ainsi que le chiffrement de disque dur.
2.2.1 Les constructions génériques
Nous allons présenter différentes constructions génériques d’un algorithme de
chiffrement paramétrable à partir d’un algorithme de chiffrement par bloc standard.
SoientEun algorithme de chiffrement par blocs arbitraire, dont la sécurité est établie,
d’ensemble de clés et de messages{0,1}
net H une famille de fonctionsε-AXU d’un
ensembleT vers {0,1}
n, c’est-à-dire que H vérifie la condition suivante :
∀t∈ T,∀t
0∈ T \ {t}, ∀y∈ {0,1}
n, Pr [h←
$H : h(t)⊕h(t
0) = y]≤ε.
Dans leur article fondateur, Liskov et al. [LRW02] ont proposé deux
construc-tions génériques différentes et obtenu une preuve de sécurité jusqu’à la borne des
anniversaires pour chaque construction, i.e., quand l’adversaire a droit à au plus 2
n/2requêtes aux oracles de chiffrement ou de déchiffrement. Ces deux constructions sont
les suivantes :
LRW
1k(t, m) =E
k(t⊕E
k(m)),
LRW
2h,k(t, m) =h(t)⊕E
k(m⊕h(t)),
pour tout t∈ T,k ∈ {0,1}
n, m∈ {0,1}
net tout h∈ H. Notons que, pour LRW
1,
on a nécessairement T = {0,1}
n. La simplicité de ces constructions les rend très
utiles en pratique. Toutefois, leur sécurité est limitée à la borne des anniversaires, ce
qui peut s’avérer trop faible dans certaines applications.
Il existe de nombreuses autres stratégies de conception « en boîte noire ». On
peut notamment citer des constructions comme XEX [Rog04] et ses variantes [Min06,
CS06] qui sont liées à la première proposition de Liskovet al., et souffrent de la même
limitation de sécurité à la borne des anniversaires. Plus récemment, un certain nombre
de constructions bénéficiant d’une sécurité au-delà de la borne des anniversaires ont
été publiées. Par exemple, on peut remarquer que la construction LRW
2peut être
itérée avec des clés indépendantes, ce qui permet d’en augmenter le niveau de sécurité
au-delà de la borne des anniversaires et en le faisant tendre asymptotiquement vers
la sécurité optimale [LST12, LS14, Pro14]. Cependant, à mesure que la cascade
augmente en longueur, la quantité de calculs nécessaire à l’évaluation du schéma
augmente également, ainsi que la taille de la clé, ce qui rend cette construction
peu pratique. Il existe également d’autres constructions qui n’ont pas besoin d’être
itérées, mais offrent tout de même des garanties de sécurité au-delà de la borne des
anniversaires, comme par exemple la construction de Minematsu [Min09], notée Min,
ou celles Mennink [Men15], notées ˜F[1] et ˜F[2] :
Min
k(t, m) =E(E(k, t
|{z} θbits|| 0...0
| {z } n−θbits), m) pour tout (t, k, m)∈ {0,1}
θ×({0,1}
n)
2˜
F[1]
k(t, m) =E
k⊕t(m⊕k⊗t)⊕k⊗t pour tout (k, t, m)∈({0,1}
n)
3˜
F[2]
k(t, m) =E
k⊕t(m⊕E
k(t))⊕E
k(t) pour tout (k, t, m)∈({0,1}
n)
3où⊗désigne le produit sur le corps fini à 2
néléments, pour un polynôme irréductible
arbitraire fixé. Une condition nécessaire pour la sécurité de la construction de
Minematsu est que le nombre de requêtes de l’adversaire soit petit devant 2
n−θ:
ainsi, la construction est d’autant plus sûre que l’espace detweaks est restreint. Les
constructions de Mennink sont sûres tant que le nombre de requêtes de l’adversaire
est petit devant 2
2n/3, respectivement 2
n. Toutes ces constructions ont une preuve
de sécurité dans le modèle standard (c’est-à-dire qu’elles supposent uniquement que
l’algorithme de chiffrement par blocs sous-jacent fournit une permutation
pseudo-aléatoire lorsque la clé est choisie uniformément pseudo-aléatoirement), à l’exception des
constructions de Mennink qui sont analysées dans le modèle de l’algorithme de
chiffrement idéal (c’est-à-dire que l’on modéliseEcomme un algorithme de chiffrement
par blocs tiré uniformément aléatoirement auquel l’adversaire a accès en boîte noire).
Il est facile de voir que, puisque l’algorithme de chiffrement E est utilisé avec la
clé k⊕t, le simple fait que E
kpour une clé aléatoire k soit indistinguable d’une
permutation aléatoire n’est pas suffisant ; ainsi E doit également résister à une
certaine classe d’attaques à clés reliées [BK03], pour laquelle l’attaquant est capable
de XORer des constantes de son choix à la clé utilisée par l’algorithme de chiffrement
avec lequel il interagit. Malheureusement, aucune de ces constructions génériques
ayant une sécurité au-delà de la borne des anniversaires ne peut vraiment être
considérée comme applicable en pratique (bien que certaines d’entre elles puissent
s’en approcher [Men15]). Ainsi, il est naturel d’étudier comment construire un
algorithme de chiffrement par blocs à partir d’une primitive de plus bas niveau qu’un
algorithme de chiffrement par blocs conventionnel, par exemple une permutation ou
une fonction pseudo-aléatoire.
2.2.2 Construction d’algorithmes de chiffrement par blocs
nativement paramétrables
Les premières structures permettant la construction d’algorithmes de chiffrement
nativement paramétrables ont été étudiées par Goldenberg et al.[GHL
+07] qui ont
cherché à inclure un tweak dans un réseau de Feistel. Ce travail a été étendu aux
réseaux de Feistel généralisés par Mitsuda et Iwata [MI08]. Nous avons mené une
étude similaire pour la deuxième grande classe d’algorithmes de chiffrement par blocs,
les algorithmes de chiffrement à clé alternée, modélisés comme nous l’avons vu par la
construction d’Even-Mansour [CS15b, CLS15, CS15a] et c’est à ces travaux qu’est
consacré le reste de ce manuscrit.
Dans le document
Le schéma d'Even-Mansour paramétrable : preuves de sécurité à l'aide de la technique des coefficients H
(Page 57-60)