• Aucun résultat trouvé

Les chemins différentiels

Hypothèses utilisées dans la cryptanalyse différentielle

4.1 Les chemins différentiels

Nous allons d’abord vérifier les hypothèses sur les chemins composant les différentielles. Définition 4.1. Un chemin différentiel sur r tours d’un système de chiffrement itératif avec fonction de tour FK : Fm

2 → Fm

2 est un (r+1)-uplet, (β0, β1,· · · , βr−1, βr)∈ (Fm 2 )(r+1), de différences intermédiaires à chaque tour.

La probabilité d’un chemin différentiel β = (β0, β1,· · · , βr−1, βr)∈ (Fm

2 )(r+1) est : P [β]def= PX,K



FKi (X)⊕ FKi (X ⊕ β0) = βi, ∀i.

Calculer la valeur exacte de la probabilité d’un chemin différentiel n’est pas possible pour un système de chiffrement par bloc. En effet, ce calcul nécessite de chiffrer tous les messages avec toutes les clés. Par exemple on aurait une complexité de O (2128+128) dans le cas de l’AES avec une clé de 128 bits ou encore une complexité de O (264+80) dans le cas de PRESENT.

Dans ce chapitre, on note par Pt[β] la probabilité théorique d’un chemin différentiel et par Pr[β] la probabilité réelle obtenue par une moyenne sur les messages et sur les clés.

1. SMALLPRESENT-[4] permet de chiffrer des messages de 16 bits. 2. SMALLPRESENT-[8] permet de chiffrer des messages de 32 bits.

60 4.1 Les chemins différentiels

4.1.1 Chiffrement de Markov

Pour calculer la probabilité théorique d’un chemin différentiel, une des hypothèses communément utilisée est que le système de chiffrement est de Markov (voir définition 4.2). Cette hypothèse consiste à dire que les différences à chaque tour sont indépendantes. La probabilité d’un chemin différentiel s’obtient en multipliant les probabilités de chaque tour.

Définition 4.2. [LM91] Un système de chiffrement itératif avec fonction de tour F est de Markov relativement à la cryptanalyse différentielle si la probabilité de la différence en sortie, connaissant la différence en entrée, est indépendante de la clé utilisée pour chiffrer. Soit β = (β0, β1,· · · , βr) un chemin différentiel. Sous l’hypothèse que le système de chiffrement est de Markov, la probabilité théorique du chemin différentiel se calcule de la façon suivante :

Proposition 4.1. [LM91] Supposons que le système de chiffrement itératif avec fonction de tour F est de Markov. Supposons aussi que les clés de tours sont indépendantes et uniformément distribuées. Alors la séquence des différences β0,· · · , βr forme une chaîne de Markov. Dans ce cas particulier la probabilité du chemin différentiel β = (β0,· · · , βr) se calcule de la façon suivante :

Pt[β] = r Y i=1

PX,K[FK(X)⊕ FK(X ⊕ βi−1) = βi, ∀i] .

L’hypothèse que le système de chiffrement est de Markov n’est pas vraie en général (les expérimentations que nous avons faites sur SMALLPRESENT-[4] et que nous détaillons ci-après le montrent). En effet, lors de nos expérimentations sur SMALLPRESENT-[4] nous avons remarqué une dépendance des clés pour certains des chemins.

La probabilité d’un chemin différentiel peut être influencée par la clé utilisée pour chiffrer. Pour illustrer ce phénomène, étant donné un chemin différentiel, nous introduisons des compteurs pour chaque clé :

TK def= 1

2#{X ∈ Fm2 |FKi (X)⊕ FKi (X + β0) = βi ∀ 1 ≤ i ≤ r},

T [j] def= #{K|TK = j}. (4.1)

Soit Ω le nombre de bits de la clé maître. La valeur exacte de la probabilité réelle d’un chemin différentiel est alors :

Pr[β] = 2−m−1−Ω X K∈FΩ 2 TK = 2−m−1−ΩX j T [j]· j.

Nous donnons ici un exemple de chemin différentiel sur SMALLPRESENT-[4] où l’on observe une dépendance de la clé qui donne Pt[β]6= Pr[β].

Exemple 4.1. Nous avons trouvé un chemin différentiel sur 3 tours de SMALLPRESENT-[4] tel que la probabilité théorique est différente de la probabilité réelle.

déjà étudié dans la section 2.1. Ainsi la figure 2.1 représentait ce chemin et l’exemple 2.2 donnait le calcul de la probabilité théorique de ce chemin qui est de Pt[β] = 2−12. Nous nous sommes intéressés à la probabilité du chemin différentiel pour une clé fixée. Le ta-bleau 4.1 nous donne le nombre de couples de messages clairs qui suivent ce chemin pour une clé fixée. On observe alors sur cet exemple que la probabilité de ce chemin différentiel

j

216 n’est pas la même pour toutes les clés. Comme cet exemple est petit nous ne distin-guons que 3 classes de clés mais dans la réalité ce nombre de classes peut être beaucoup plus important. En utilisant les résultats du tableau 4.1 nous pouvons calculer la probabilité

j 0 8 16

T [j] 131072 524288 393216

Les valeurs T [j] pour le chemin β = (0x1101, 0xdd, 0x30, 0x220)

T [j] = #{K|TK = j}

Table 4.1 – Expérimentations sur SMALLPRESENT-[4]

expérimentale de ce chemin différentiel :

0× 131072 + 8 × 524288 + 16 × 393216

220× 216 = 2−12.68.

Ce résultat illustre que la probabilité théorique d’un chemin différentiel peut être diffé-rente de la probabilité expérimentale pour une clé ou en moyenne sur les clés. Le problème est que pour un système de chiffrement classique nous ne pouvons pas faire une recherche exhaustive pour trouver la probabilité exacte d’un chemin différentiel. Quand il construit une attaque différentielle, l’attaquant ne connaît pas la clé maître utilisée pour chiffrer donc il ne peut pas non plus connaître la probabilité exacte d’un chemin différentiel. Une autre remarque que l’on peut faire sur cet exemple est que le chemin étudié est impos-sible pour certaines clés. L’existence de chemins différentiels imposimpos-sibles est assez classique pour les systèmes de chiffrement par bloc itératifs . L’existence de chemins impossibles sur un petit nombre de tours induit forcément des chemins impossibles sur plus que 3 tours du système de chiffrement. Si le nombre de tours n’est pas trop grand on peut trouver ces chemins impossibles en écrivant les équations dépendant des bits des messages clairs, de la clé et des chiffrés. Malheureusement la complexité de ce système, qui est non linéaire après passage dans les boîtes-S, explose très vite.

4.1.2 L’algorithme “branch and bound” pour trouver les chemins

différentiels

Dans le but de trouver les meilleurs chemins différentiels, nous utilisons un algorithme récursif. Cet algorithme connu dans le cas de la cryptanalyse linéaire [BCQ04] peut s’ap-pliquer de la même façon pour la cryptanalyse différentielle. Soit Bproba−chemin une borne sur la probabilité des chemins que nous voulons garder. L’algorithme consiste à construire un arbre de toutes les différences possibles et à couper les branches pour lesquelles on sait que la probabilité après r tours sera plus grande que la borne donnée. Les algorithmes de ce type sont appelés algorithmes “branch and bound”.

La racine de l’arbre que l’on construit est la différence en entrée et les feuilles sont les différences après r tours. Au niveau i, chaque noeud contient la différence après i tours

62 4.1 Les chemins différentiels ainsi que la probabilité du chemin différentiel défini à partir de la racine de l’arbre. Dans la réalité on ne peut pas stocker tous les chemins différentiels. L’astuce consiste alors, à couper les branches de l’arbre avant la fin, si l’on sait que la probabilité du chemin sera supérieure à la borne que l’on s’est fixée. Pour faire cela nous construisons une table des meilleures probabilités pour chaque tour : [q1, q2,· · · , qr]. (qi est la probabilité du meilleur chemin sur i tours). Imaginons que nous voulons trouver les chemins sur r tours tels que la probabilité de ces chemins soit supérieure à Bproba−chemin. Au niveau i nous gardons seulement les chemins avec probabilité p tele que p· qr−i ≥ Bproba−chemin. L’algorithme 12 résume ce principe.

Algorithme 12 : Recherche automatique de chemins différentiels

Entrée : Un système de chiffrement, une différence en entrée δ0, une borne Bproba−chemin sur la probabilité d’un chemin

Sortie : Chemins avec différence en entrée δ0, avec probabilité plus grande que Bproba−chemin, et leurs probabilités

Add-Trail(β ,i) Si i = ROUND alors

Si Pβ ≤ Bproba−chemin alors

afficher β = (δ0, β1,· · · , βi+1,· · · , βROU N D) fin si

fin si Sinon

Pour chaque βi+1 faire

Si P r(βi 7→ βi+1)6= 0 and Pβ · P r(βi 7→ βi+1)≤ Bproba−chemin alors Pβ = Pβ · P r(βi 7→ βi+1)

Add-Trail(β = (δ0, β1,· · · , βi+1, 0,· · · , 0),i + 1) fin si

fin pour fin si

Add-Trail(β = (δ0, 0,· · · , 0),0)

Cet algorithme simple peut être adapté suivant les usages que l’on veut en faire. Pour augmenter la rapidité de la recherche de chemin on peut par exemple imposer des contraintes sur la recherche. Les meilleurs chemins différentiels étant souvent ceux avec peu de boîtes-S actives, on peut, par exemple, limiter le nombre de boîtes-S actives par tour.

Cet algorithme peut aussi être adapté pour trouver des différentielles tronquées (voir section 2.2) ou encore d’autres types de chemins pour d’autres types d’attaques statis-tiques.

4.1.3 Expériences

Nos expériences sur SMALLPRESENT-[4] nous ont permis d’observer qu’en général la probabilité théorique des chemins différentiels correspondait à la probabilité des chemins différentiels prise en moyenne sur les clés. Pour cela nous avons fait des expérimentations en utilisant différents algorithmes de cadencement de clé.

Dans les figures 4.1, 4.2 et 4.3, nous avons calculé les différences entre log(Pt[β]) et log(Pr[β]) pour 500 chemins différentiels aléatoires pour 5 tours de SMALLPRESENT-[4]. – Dans la figure 4.1, nous supposons que les clés de tour sont obtenues par l’algorithme de cadencement de clés défini dans la section 1.4.1 à partir d’une clé maître de 20 bits. Pour nos expérimentations, nous avons calculé les probabilités moyennes à partir des 220 clés maîtres possibles.

– Dans la figure 4.2, nous supposons que toutes les clés de tour sont identiques, c’est-à-dire égales à la clé maître. Nous avons calculé la moyenne des probabilités en utilisant toutes les 216 clés possibles afin d’obtenir la valeur Pr[β].

– Dans la figure 4.3, nous supposons que les clés de tour sont obtenues à partir d’une clé maître de 80 bits en utilisant l’algorithme de cadencement de clé défini dans la section 1.4.1. Dans ce cas précis, nous ne pouvons pas calculer la moyenne sur les 280clés possibles. La valeur obtenue pour Pr[β] est calculée à partir d’une moyenne sur 220 clés.

0

50

100

150

200

250

300

350

400

-0.4 -0.2 0 0.2 0.4

no

m

bre

de

ch

emin

s

log(P

r

[β])− log(P

t

[β])

Pt [β] = 2−17 Pt [β] = 2−20 Pt[β] = 2−23 Pt [β] = 2−26

Figure 4.1 – Nombre de chemins en fonction du log(Pr[β])− log(Pt[β]) : cas de la clé maître de 20 bits.

On remarque ici, au travers de ces expériences, que le phénomène de dépendance d’un chemin différentiel vis à vis des clés n’est pas le même suivant l’algorithme de cadencement de clé. En effet dans la figure 4.2 quand la clé maître est utilisée comme clé de tour pour les 5 tours, la dépendance de la clé est plus importante que dans la figure 4.3 où l’algorithme de cadencement de clé avec une clé maître de 80-bit est utilisé. Nous pouvons remarquer que sur 5 tours de SMALLPRESENT-[4] seulement 16 ∗6 = 96 bits de clés sont utilisés ce qui fait que les bits de la clé maître sont utilisés en moyenne un peu plus d’une fois. Dans ce cas on est proche d’avoir des clés indépendantes (condition nécessaire pour l’utilisation des chaînes de Markov).

L’algorithme de cadencement de clé pour une clé maître de 20 bits semble le plus approprié ici (voir section 1.4.1). En effet on rappelle que PRESENT est un système de chiffrement qui chiffre des messages de 64 bits avec une clé maître de 80, c’est-à-dire que

64 4.2 Les différentielles : somme de chemins

0

50

100

150

200

250

300

-0.4 -0.2 0 0.2 0.4

no

m

bre

de

ch

emin

s

log(P

r

[β])− log(P

t

[β])

Pt [β] = 2−17 Pt [β] = 2−20 Pt [β] = 2−23 Pt [β] = 2−26

Figure 4.2 – Nombre de chemins en fonction de log(Pr[β])− log(Pt[β]) : cas où toutes les clés sont identiques.

64

80 = 45 des bits de la clé maître sont utilisés à chaque tour. Le rapport est le même si on prend une clé maître de 20 bits pour un système de chiffrement de 16 bits.

Pour cet algorithme de cadencement de clé, les expériences montrent qu’en moyenne le nombre de paires de messages qui satisfont un chemin différentiel est proche de la pro-babilité théorique.

Nous pouvons observer que ce comportement est de plus en plus mauvais quand la pro-babilité du chemin diminue