Implmentation Cryptographie 06 Pages 2 Colonnes
Implmentation Cryptographie 06 Pages 2 Colonnes
Implmentation Cryptographie 06 Pages 2 Colonnes
net/publication/304335574
CITATIONS READS
0 2,013
1 author:
Aoued Boukelif
University of Sidi-Bel-Abbes
84 PUBLICATIONS 341 CITATIONS
SEE PROFILE
All content following this page was uploaded by Aoued Boukelif on 23 June 2016.
1
fonction exponentiel_modulo( a :entier, x :entier, permuclef[1..56] = {
n :entier) :entier 56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25,
debut 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43,
s : entier; 35, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37,
s := 1; 29, 21, 13, 5, 60, 52, 44, 36, 28, 20, 12, 4, 27, 19,
tant que (x<>0) faire 11, 3}.
debut i, j, k, l, m : entier ;
si (est-il-impaire(x)=vrai) alors tab1 : tableau[1..56] d’un octet
s := modulo((s * a),n); clef : pointeur sur un tableau de 8 cases d’un octet
decalage_circulaire_droite(x,1); chacun
a := (a * a) mod n; pos1 : tableau[1..8] de 2 octets
fin; et les données d’initialisation sont les suivantes :
exponentiel_modulo := s; pos1[1..8]= {128,64, 32,16,8,4,2,1}
fin; kn : tableau [1..32] de 4 octets
Nous avons implémenté le RSA avec une clef décalage : tableau [1..16] d’un octet
modulo ne dépassant pas la valeur de 256, puisqu’une
fois dépassé cet intervalle, il sera très difficile de diviser décalage[1..16] =
le résultat et de faire correspondre un caractère ASCII {1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28 }.
qui devra à son tour être réassemblé pour donner le
texte en clair. tab2 : tableau [1..56] d’un octet
pos2 : tableau [1..24] de 4 octets
II – ALGORITHMES A CLEF SECRETE les valeurs du tableau pos2 sont en hexadécimales :
2
Par exemple prenant la position de la table permuclef La partie P2 est utilisée seulement pour choisir
alors permuclef [0] : = 56 bits n° 56 la direction des sous clefs
Dans l’opération du chiffrement nous commençons par
l : = 56 ; la sous clef de position 0 jusqu’a 32
et dans le déchiffrement ce sera l’inverse.
l:= permuclef [0] : = 56 ; La partie P3 est utilisée pour le décalage des
m := et_logique(56,07) (0011 1000)2 x (0000 sous-clefs.
0111)2 = (0000 0000)2 Chacune des sous-clef est divisée en deux moities de 28
m := 0 (position 0 de tables pos1). bits ensuite les moities sont décalées vers la gauche
tab1 [0] : = et_logique(clef [decalage_droite(56,3)] , d’une ou deux positions selon les positions.
pos1 [m : = 0])) La partie P4 est utilisée pour construire la
tab1 [0] : = et_logique (clef [7],pos1[0]) ; permutation compressive .Les sous-clefs seront
tab1 [0] : = et_logique (clef [7],(0000 0001)2) ; manipulées dans le tableau permucompres[1..48], de 48
donc tab1[0] reçoit la valeur en bit de position 56 (0 ou positions et chaque sous clef se divise en deux parties de
1) 24 bits pour faciliter la représentation d’un type de 4
octets. Puisque nous ne pouvons représenter un mot de
REMARQUE 48 bits nous le diviserons.
La partie P1 est utilisée pour mettre les valeurs Le tableau pos2[24 ] quant à lui il sera utilisé
des bits de clef selon la table de permutation et le pour marquer les positions des bits.
stocker dans la tab1e [6] . Par exemple la position du bit 24 est représentée par
Cette partie est essentielle dans le choix du chiffrement 800000 := 1000 0000 0000 0000 0000 0000.
ou du déchiffrement selon la condition : Enfin toutes les sous clefs qui sont générées
Opération := chiffrement ou déchiffrement. seront stockées dans le tableau kn (tableau de 32
positions ou éléments ).
DEBUT
SI (TAB2 [PERMUCOMPRES [J] ] ) ALORS KN[M] := OU_LOGIQUE
(KN[M],POS2[J]);
SI (TAB2 [PERMUCOMPRES[J+24] ] ) ALORS KN[N] := OU_LOGIQUE
(KN[N],POS2[J]);
FIN
p4
FIN
3
II.1.1.3 - TABLE DE SUBSTITUTIONS
INSTRUCTIONS DE LA PERMUTATION_INITIALE
gauche := partie_gauche ;
droit := partie_droite ;
mot64 :=et_logique (ou_exlusif (decalage_droite(gauche, 4),droit), en_hexa(0f0f0f0f));
droit :=ou_exlusif(droit, mot64) ;
gauche :=ou_exlusif(gauche,decalage_gauche (mot64,4));
mot64 :=et_logique (ou_exlusif(decalage_droite (gauche, 16), droit), en-hexa(0000ffff)) ;
droit :=ou_exlusif(droit, mot64) ;
gauche :=ou_exlusif(gauche,decalage_gauche(mot64, 16)) ;
mot64 :=et_logique(ou_exlusif(decalage_droite(droit, 2), gauche), en_hexa(33333333)) ;
gauche :=ou_exlusif(gauche, mot64) ;
droit :=ou_exlusif(droit, decalage_gauche(mot64, 2)) ;
mot64 := et_logique(ou_exlusif(decalage_droit(droit, 8), gauche), en_hexa(00ff00ff)) ;
gauche := ou_exlusif(gauche, mot64) ;
droit := ou_exlusif(droit, decalage_gauche(mot64, 8)) ;
droit :=et_logique(ou_logique((decalage_gauche(droit, 1)), (et_logique(decalage_droit
(droit, 3 1), 1))),en_hexa (ffffffff)) ;
mot64 := et_logique(ou_exlusif(gauche, droit), en_hexa (aaaaaaaa)) ;
gauche :=ou_exlusif (gauche, mot64) ;
4
droit := ou_exlusif(droit,mot64) ;
gauche :=et_logique(ou_logique((decalage_gauche(gauche,1)),(et_logique(decalage_droit
(gauche, 31), 1))), en_hexa(ffffffff)) ;
Si nous suivons l’ordre de la permutation partig Pour la permutation finale c’est l’inverse des instructions
et partid nous arrivons a la permutation initiale selon les utilisées dans la permutation initiale :
instructions précédentes.
5
II.1.1.6 - LA PERMUTATION EXPANSIVE
Nous rappelons que cette permutation fait Dans la partie de la réalisation des permutations initiale
passer un mot de 32 bits en 48 bits. on obtient la partie ‘’droit’’. Cette partie est permutée
selon l’ordre suivant [7] :
Bloc droit : 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Donc cette permutation est la permutation l’un par l’inverse du second et combiner le résultat par
expansive, elle sera combinée par un ou exclusif avec un ‘’et logique’’ du troisième ) [8] .
les sous clefs du DES ( ‘’Data Encryption Standard ‘’).
En dépit de toutes ces années le DES reste le II.3 – RC code « Rivest’s Code » RC 5
standard le plus solide et le plus résistant aux attaques
cryptographiques. II.3.2 - Implémentation du RC5
Les algorithmes à chiffrement par blocs ne se L’algorithme RC5 est un algorithme
résument pas qu’au DES, il en existe plusieurs : ceux redoutable avec que sa taille de clef de 128 bits ;il
qui ont été inventés il y a plusieurs années et qui ont été chiffre plus rapidement que le DES . Sa réalisation est
cassés et ceux qui résistent toujours parce-qu’ils n’ont directe. De sa description nous pouvons écrire les
pas été cryptanalysés assez ou , au contraire , ils ont été fonctions de chiffrement, déchiffrement et initialisation
classés comme résistants. des sous-clefs [11] .
Cependant nous avons sélectionné parmi plusieurs Mot32 est un type de 32 bits.
algorithmes les 3 suivants :
• 3 WAY Constante
• RC5
• IDEA m := 32 de type entier { taille du mot en bits }
r := 12 de type entier { nombre de rondes }
D’une part ces algorithmes sont assez rapides en b := 16 de type entier { taille de la clef en octets soit
chiffrement et en déchiffrement et d’autre part, ils ont 16x8 =128 bits }
été inventés par les plus forts cryptanalyste du monde. c := 4 de type entier { nombre de mots dans la clef }
t := 26 de type entier { taille de la table-S soit 2*(r+1) }
II.2 - L’ algorithme 3-WAY
3-WAY est un algorithme de chiffrement par variable
blocs conçu par Joan Daemen. Il utilise des blocs et
une clef de même taille : 96 bits ; il est conçu pour être S[t] : tableau de Mot32;
efficace en réalisation matérielle.3-WAY n’est pas un P:=(b7e15163)16, Q:=(9e3779b9)16 de type Mot32; {
réseau de FEITEL mais un algorithme de chiffrement constantes de l’algorithme }
itératif. 3-WAY peut comprendre n rondes ; Daemen
en conseille 11. La procédure de chiffrement
6
La procédure de déchiffrement assez récent 1992, aucune cryptanalyse définitive ne
peut être donnée à ce jour. Les concepteurs d’IDEA
procédure RC5_DECHIFFRER(Mot32 ptr^.tchi, l’ont conçu à ce qu’il soit immune à la cryptanalyse
Mot32 ptr^.tcl); différentielle. Le cryptanalyste Lai prétend en donnant
début des indices probants mais pas une preuve qu’IDEA est
var immune à la cryptanalyse différentielle après seulement
i, B:=tchi[1], A:=tchi[0]: de type Mot32; 4 de ses 8 rondes. Et d’après Eli Biham, l’attaque à texte
corrélé ne marche pas contre l’IDEA .
pour i allant de r à 1 pas (-1) faire Joan Daemen a découvert une classe de clefs
début faibles pour IDEA. Ces clefs sont faibles au sens où si
B := ou_exclusif(decalage_circulaire_droite(B- elles sont utilisées, un attaquant peut facilement les
S[2*i+1], A),A); identifier avec une attaque à texte en clair choisi.
A := ou_exclusif(decalage_circulaire_droite(A-S[2*i], Voici, cette classe de clefs faibles (en hexadécimal) :
B),B);
fin; 0000 0000 0X00 0000 0000 000X XXXX
tcl[1]:=B-S[1]; tcl[0]:=A-S[0]; X0000
fin;
où X pouvant être n’importe quel chiffre en
La procédure d’initialisation des sous-clefs hexadécimal.
L’avenir de l’IDEA est prometteur, mais pour
procédure RC5_INITIAL(ptr^.K : d’un octet); le moment les gens sont assez subtils et ainsi préfèrent
début garder un œil sur les nouvelles méthodes de
var cryptanalyse qui peuvent être faites sur l’algorithme.
i, j, k, u:=m/8, A, B, L[c] : Mot32;
L[c-1] :=0 ; II.4.3 - Implémentation de l’IDEA
pour i allant de (b-1) à –1 pas (-1) faire
L[i/u]:= decalage_gauche(L[i/u],8) + K[i]; Peut être l’algorithme le plus sûr de part sa
S[0]:=P; popularité ; sa réalisation logicielle est nettement plus
pour i allant de 1 à t faire difficile que le RC5 bien que les opérations qu’il utilise
S[i]:=S[i-1]+Q; sont assez faciles.
Dans cet algorithme il n’y a pas de table-S mais
A:=B:=i:=j:=k:=0; l’opération ‘‘multiplication modulo 216 +1’’ fait d’elle
pour k allant de 1 à 3*t faire une méthode similaire aux tables .
debut Remarque :
i:=(i+1) modulo t; Comme tout algorithme à clef secrète, IDEA
j:=(j+1) modulo c; comporte une classe de clefs faibles !
A := S[i] := décalage_gauche(S[i]+(A+B),3); Si cette clef est utilisée, la combinaison par ou exclusif
B := L[i] := de deux textes en clair donne la combinaison par ou
décalage_gauche(L[j]+(A+B),(A+B)); exclusif des deux textes chiffrés résultants.
fin ; Mais avec une petite modification d’IDEA,
fin; l’algorithme peut ne pas engendrer ce type de clef ; pour
cela nous devons combiner par ou exclusif chaque clef
II.4- IDEA avec la valeur 0DAE en hexadécimal.