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 la fiche

Titre :
Un exemple de preuve de sécurité sur un schéma de Feistel
Profil(s) :
Enseignant & Lycéen, 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 fiches PICSI via le fil RSS des fiches.