MAPLE
La Méthode De Feistel
SOMMAIRE
2
2
I. INTRODUCTION ............................................................................ 3
II. Principe de la Méthode de Feistel ................................................. 4
1. Le XOR (« non ou » littéralement) ................................................. 4
2. Un exemple d’utilisation de la Sbox Sbox1 et du Xor ....................... 5
3. Un exemple d’utilisation de la Sbox Sbox2 et du Xor ....................... 5
III. Algorithme détaillé des procédures Maple ................................... 6
1. La Sbox ........................................................................................ 6
2. L’algorithme de codage ................................................................. 7
A. L’algorithme commenté .............................................................. 7
B. Le schema explicatif................................................................... 8
C. Le code Maple ........................................................................... 9
3. L’algorithme de décodage ............................................................ 10
A. L’algorithme commenté ............................................................ 10
B. Le code Maple ......................................................................... 10
IV. Le programme principal .............................................................. 11
1. Le codage : Fround ..................................................................... 12
2. Le décodage : Fdecod ................................................................. 13
V. Les tests et jeux d’essais ............................................................ 14
1. Les tests des sous-programmes simple ......................................... 14
A. La procédure Encod : ............................................................... 14
B. La procedure Decod : .............................................................. 16
2. Le test du programme principal ................................................... 17
A. La procédure Fround : ............................................................. 17
B. La procedure Fdecod : ............................................................. 17
VI. Pour aller plus loin avec Feistel .................................................. 18
VII. Conclusion ................................................................................... 19
VIII. Annexe ..................................................................................... 20
3
3
I. INTRODUCTION
Petite Biographie : Horst Feistel était un emigré allemand arrivé en Amérique en
1934. Il a été un employé d'IBM dans les années 1960 et 1970. La construction
Feistel a été utilisée au tout début dans le chiffrement Lucifer, puis dans le DES.
En cryptographie, on distingue deux grands types d’algorithme de chiffrement : Les
algorithmes à clé publique comme le RSA et les algorithmes à c secrète comme
celui imaginé par Horst Feistel.
L’objectif de la cryptographie est de coder un message en le rendant le plus
incompréhensible possible pour ceux qui n’en sont pas destinataire. Pour cela il faut
que le message codé paraisse aussi aléatoire que possible. Les algorithmes à clé
secrète comme celui de Feistel utilise l’aléatoire afin d’y parvenir.
Grâce aux travaux de Feistel, on ne construit plus seulement des fonctions qui ont
l’air aléatoire mais désormais des bijections aléatoires. L’avantage de la bijection sur
la fonction aléatoire est qu’à une image donnée correspond un seul antécédent, ce
qui permet de crypter mais aussi de décrypter un message.
4
4
II. Principe de la Méthode de Feistel
La solution apportée par Feistel est très ingénieuse : on suppose par exemple
qu'on a une fonction f "presque aléatoire" qui prend comme argument un mot de n
bits, et renvoie un mot de n bits (qui donne l'impression d'avoir été choisi au
hasard). L'algorithme de chiffrement va procéder en chiffrant des blocs de 2n bits,
qu'on partage en 2, partie gauche G, partie droite D. L'image du bloc (G,D) par le
schéma de Feistel est le bloc (L,R), avec L=D, et R= G xor f(D). Cette transformation
est cette fois bijective, car si on a un tel couple (L,R), on retrouve (G,D) par D=L et
G=R xor f(L). Bien sûr, la partie droite n'a pas été transformée (juste envoyée à
gauche). C'est pourquoi on répète le schéma de Feistel un certain nombre de fois (on
parle de tours - le DES par exemple en comporte 16).
1. Le XOR (« non ou » littéralement)
La procédure qui suit, codée en Maple, permet de réaliser un XOR sur 2 listes b1 et
b2 :
Xor := proc(b1,b2)
local n,i,c;
n:=nops(b1);
for i from 1 to n do
c[i] := b1[i]+b2[i] mod 2;
od;
convert(c,list);
end proc;
On veut construire ici une bijection qui transforme quatre bits en quatre autres bits.
La bijection est contitué de deux fonctions que l'on appelle sbox1 et sbox2 qui à
deux bits donnés font correspondre deux autres bits. La Sbox est en fait un
algorithme de substitution.
Les procédures qui suivent, codée en Maple, sont deux exemples de sbox :
Sbox1 := proc(b) local c;
if b[1]=0 and b[2]=0 then c:=[0,1]; fi:
if b[1]=0 and b[2]=1 then c:=[1,1]; fi:
if b[1]=1 and b[2]=0 then c:=[1,0]; fi:
if b[1]=1 and b[2]=1 then c:=[0,1]; fi:
convert(c,list);
end proc:
Sbox2 := proc(b) local c;
if b[1]=0 and b[2]=0 then c:=[0,1]; fi:
if b[1]=0 and b[2]=1 then c:=[0,0]; fi:
if b[1]=1 and b[2]=0 then c:=[0,0]; fi:
if b[1]=1 and b[2]=1 then c:=[0,1]; fi:
convert(c,list);
end proc:
5
5
2. Un exemple d’utilisation de la Sbox Sbox1 et du Xor
On applique ici la Sbox1 à D0 et on fait un Xor du résultat de la Sbox avec G0.
G0:=[1,1];
D0:=[0,1];
Sb1:=Sbox1(D0);
R:=Xor(G0,Sb1);
3. Un exemple d’utilisation de la Sbox Sbox2 et du Xor
On applique ici la Sbox2 à D1 et on fait un Xor du résultat de la Sbox avec G1.
G1:=[1,1];
D1:=[0,1];
Sb2:=Sbox2(G1);
R:=Xor(D1,Sb2);
1 / 23 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !