Les preuves de sécurité dans les systèmes de chiffrement par bloc


Un exemple de preuve de sécurité sur un schéma de Feistel

Nous présentons ici l'étude de la sécurité d'un schéma de Feistel à 3 étages, d'abord démontré par Luby et Rackoff en 1988 [] puis par J. Patarin en 1991 [], et enfin par U. Maurer en 1992. La démonstration présentée s'inspire de celle de [] qui utilise le théorème précédent.

Théorème 1 Soient F1*, F2*, F3* trois fonctions aléatoires parfaites indépendantes définies de 2[m/2] dans lui-même et soit f* une fonction aléatoire parfaite de 2m dans 2m. On note f=Ψ3(F1*, F2*, F3*) le schéma de Feistel à trois étages lié aux fonctions F1*, F2* et F3*. Alors, pour tout distingueur A adaptatif faisant appel à q requêtes, on a :
AdvA(f, f*) ≤ q2 ·2−[m/2].

Preuve :

Figure 1: Schéma de Feistel sur 3 étages

On note x=(xi)i ∈ [1..q]=(zi0,zi1)i ∈ [1..q] le q-uplet de requêtes et y=(yi)i ∈ [1..q]=(zi3,zi4)i ∈ [1..q] le q-uplet de sorties correspondant. On note également z2=(zi2)i ∈ [1..q] le q-uplet d'éléments zi2 de I[m/2] avec zi2=zi0 ⊕F1*(zi1). On note également z0=(zi0)i ∈ [1..q], z1=(zi1)i ∈ [1..q] ,z3=(zi3)i ∈ [1..q] et z4=(zi4)i ∈ [1..q] les q-uplets correspondants aux différentes valeurs d'entrée et de sortie. On note Z l'ensemble des q-uplets de valeurs de zi2 deux à deux distinctes et comme dans le paragraphe précédent, X l'ensemble des x=(x1,…,xq) q-uplets de valeurs de Im deux à deux distinctes.
On note Y l'ensemble défini par :
Y = { (y1, …, yq) ; ∀i < j,   zi3 ≠ zj3 }
Y correspond donc à l'ensemble des q-uplets de sortie dont les valeurs de la partie droite sont deux à deux distinctes. Le cardinal de cet ensemble est tel que :
|Y| ≥
1 − q(q−1)

2
·2−[m/2]
2mq
On peut donc poser :
ε1 = q(q−1)

2
·2−[m/2]
pour rester dans le cadre du théorème 11.
À présent, pour tout q-uplet x de l'ensemble X et pour tout q-uplet y de l'ensemble Y, on cherche à établir une borne inférieure pour la probabilité Pr[x→ f y] :
 
Pr[x f

 
y]
=

z2 ∈ I[m/2] ,z3 ∈ I[m/2] 
Pr[ (z2=z0⊕F1*(z1)) ∧(z3 = z1 ⊕F2*(z2))
 
 
∧(z4 = z2 ⊕F3*(z3))]
 
 


z2Z, z3Y 
Pr[(z3 = z1 ⊕F2*(z2)) ∧(z4 = z2 ⊕F3*(z3))]
 
 
·Pr[(z2=z0 ⊕F1*(z1))]       (1)
 
On cherche alors à estimer l'inégalité (1).
Pour cela, pour tout q-uplet z2 dans Z et pour tout q-uplet z3 de Y, on évalue tout d'abord Pr[(z3 = z1 ⊕F2*(z2)) ∧(z4 = z2 ⊕F3*(z3))] = Pr[(z1 ⊕z3 = F2*(z2))] ·Pr[(z2 ⊕z4 = F3*(z3))]. Comme z2 appartient à Z et comme z3 appartient à Y, alors
Pr[(z3 = z1⊕F2*(z2)) ∧(z4 = z2 ⊕F3*(z3))] = (2−[m/2] )q ·( 2−[m/2] )q = 2−mq
De plus, comme les z2 appartiennent à Z, on a :
Pr[(z2=zi0 ⊕F1*(zi1))] ≥ 1 − q(q−1)

2
·2−[m/2]
On obtient donc
Pr[x f

 
y] ≥ 2−mq ·
1 − q(q−1)

2
·2−[m/2]
On pose alors :
ε2 = q(q−1)

2
·2−[m/2].
Il ne reste alors plus qu'à appliquer le théorème 11 sur l'ensemble Y, on obtient donc :
 
AdvA(f, f*)
ε1 + ε2
 
 
q(q−1)

2[m/2]
 
 
  q2

2 [m/2]
 
                                                                                                               [¯]

 

Références

[1]
M. Luby and C. Rackoff. How to construct pseudorandom permutations from pseudorandom functions. SIAM Journal on Computing, 17, no. 2:373-386, 1988.
[2]
J. Patarin. Etudes des Générateurs de Permutations Pseudo-aléatoires Basés sur le Schéma du DES. PhD thesis, Université Paris VI, 1991.

Informations sur le parcours

Titre :
Les preuves de sécurité dans les systèmes de chiffrement par bloc
Profil(s) :
Ingénieur informatique, Enseignant-Chercheur, Etudiant
Thème :
Cryptographie à clé secrète
Finalité :
Théorique
Difficulté :
niveau 3
Auteur(s) :
Marine Minier
Mise à jour :
04/01/2007

Syndication

Il vous est possible de suivre la publication des parcours PICSI via le fil RSS des parcours.