Vous êtes sur la page 1sur 12

Master II: Réseaux et Télécommunication TP : Cryptographie et Sécurité Réseaux

TP 1 : Initiation au Cryptage

1) Le cryptage de César:

Le chiffre de César est la méthode de cryptographie la plus ancienne communément admise


par l'histoire. Il consiste en une substitution mono-alphabétique : chaque lettre est remplacée
("substitution") par une seule autre ("mono-alphabétique"), selon un certain décalage dans l'alphabet
ou de façon arbitraire. César avait coutume d'utiliser un décalage de 3 lettres
: A devient D, B devient E, C devient F, etc.

Ce système de cryptage est très simple à mettre en œuvre, cependant étant totalement
symétrique, il suffit de faire une soustraction pour connaître le message initial. Une méthode primaire
est d’essayer les 26 combinaisons possibles et voir si l’on peut obtenir un message compréhensible.
Une méthode plus évoluée consiste à calculer les fréquences d'apparition des lettres dans le message
chiffré (ce qui est beaucoup plus facile lorsque le message est long).

Effectivement, selon la langue, certaines lettres reviennent plus couramment que d'autres
(en français, par exemple, la lettre la plus utilisée est la lettre E), ainsi la lettre apparaissant le plus
souvent dans un texte crypté par le chiffrage de César correspondra vraisemblablement à la lettre E,
une simple soustraction donne alors la clé de cryptage.
Substitution mono-alphabétique :
La technique est élémentaire : il suffit de remplacer chaque lettre du texte à chiffrer par la lettre qui
se situe n places plus loin dans l’alphabet. Par exemple si n=3, on remplacera A par D, B par E, C par
F etc.

CLAIR A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

-> décalage = 3

CODE D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

2) Le cryptage de Vigenère:

Le chiffrement de Vigenère ressemble beaucoup au chiffrement de César, à la différence près qu'il


utilise une clef plus longue afin de pallier le principal problème du chiffrement de César: le fait qu'une
lettre puisse être codée d'une seule façon. Pour cela on utilise un mot clef au lieu d'un simple caractère.

Substitution poly-alphabétique :

Pour crypter, on choisit une clef (mot ou phrase). A chaque lettre du texte clair on fait correspondre
une lettre de la clef (la clef étant répétée autant de fois que nécessaire).

Dr. A. Seddiki & Dr. A. Ghaz Dept. de Télécommunication, Faculté de Génie Electrique, UDL SBA p. 1/12
Master II: Réseaux et Télécommunication TP : Cryptographie et Sécurité Réseaux

En posant C le texte codé, T le texte et K la clé, on peut traduire ceci par la formule :

C = T + K [mod 26]

Pour déchiffrer le message, il suffit de faire l'opération inverse: T = C - K [mod 26]

Exemple :

On associe dans un premier temps à chaque lettre un chiffre correspondant.

ABCDEFGHI J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Texte
R E N D E Z V O U S A M I D I
17 04 13 03 04 25 21 14 20 18 00 12 08 03 08

Clé:
B O N J O U R

01 14 13 09 14 20 17

R+B E+O N+N D+J E+O Z+U V+R O+B U+O S+N A+J M+O I+U D+R I+B
17+01 04+14 13+13 03+09 04+14 25+20 21+17 14+01 20+14 18+13 00+09 12+14 08+20 03+17 08+01

Texte crypté :

S S A M C T L P I F J A C U K
18 18 26=0 [26] 12 28=2 45=19 [26] 37=11 [26] 15 34=8 [26] 31=5 [26] 09 26=0 [26] 28=2 [26] 20 09
[26]

Manipulation :
1) Taper le programme 1.
 Dite de quel cryptage s’agit-il ?
 En déduire le déchiffrage ?

2) Taper le programme 2.
 Dite de quel cryptage s’agit-il ?
 En déduire le déchiffrage ?

3) On veut réaliser le cryptage de Vernam en utilisant le chiffrage XOR. Donner le programme ?

Dr. A. Seddiki & Dr. A. Ghaz Dept. de Télécommunication, Faculté de Génie Electrique, UDL SBA p. 2/12
Master II: Réseaux et Télécommunication TP : Cryptographie et Sécurité Réseaux

Programme 1 :
clear all
base = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o','p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
plain = input('the original word or sentence (small letters only) ...
','s');
i = 1;
n = input('how many shifts ? ... ');
if n > 26
n = mod(n,26);
end
flag = 0;
while i <= length(plain)
if ismember(plain(i),'A':'Z') == 1
fprintf('The input is not suitable to this code. \n')
flag = 1; %helps breaking the loop
pleno = 'Please restart the program.';
break
elseif isletter(plain(i)) == 1
y = strfind(base,plain(i));
z = y+n;
if z > 26
z = z - 26;
end
pleno(i) = base(z);
elseif isletter(plain(i)) == 0
if plain(i) == ' ' %lets space be space
pleno(i) = plain(i);
else
fprintf('The input is not suitable to this code. \n')
flag = 1;
pleno = 'Please restart the program.';
end
end
i = i+1;
if flag == 1 %breaking the loop if there are capital letters or numbers
in the input
break
end
end
fprintf('Result = %s',pleno)
fprintf('\n')

Programme 2 :
message=input('secret message:','s');
password=input('password:','s');
opp=input('decrypt(-1) or encrypt(1):');
password=password-97;
[notused size_of_message]=size(message);
[notused size_of_password]=size(password);
pos=1;
output=[];
for i=1:size_of_message
output(i)=message(i)+password(pos).*opp;
pos=pos+1;
if (pos>size_of_password);%
pos=1;
end
end
out=sprintf('the mesaage est :%s',output);
disp(out)

Dr. A. Seddiki & Dr. A. Ghaz Dept. de Télécommunication, Faculté de Génie Electrique, UDL SBA p. 3/12
Master II: Réseaux et Télécommunication TP : Cryptographie et Sécurité Réseaux

TP 2 : Réseau de Feistel

Rappel :
Les algorithmes à clé secrète réduite cherchent, bien sûr, à tendre vers la perfection. Et
la perfection, en cryptographie, c'est l'aléatoire : il faut que le message codé paraisse aussi
aléatoire que possible, pour limiter au minimum les risques d'une attaque par analyse du texte
chiffré, de ses redondances, etc...
Le problème est que, si l'on sait depuis longtemps construire des fonctions qui ont l'air
aléatoire, on ne savait pas avant les travaux de Feistel construire des bijections aléatoires. La
solution apportée par Horst Feistel, ingénieur chez IBM qui dirigea l'équipe qui conçut
l'algorithme de chiffrement DES, est très élégante : 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). F n'est pas supposée bijective,
c'est-à-dire que deux mots différents peuvent avoir la même image par F (ceci signifie encore
que, si on dispose d'un mot de n bits chiffré par F, on ne peut pas retrouver le mot initial).

Principe :
Un algorithme utilisant un schéma de Feistel 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⊕F(D) ou ⊕désigne le "ou exclusif" bit à bit.
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⊕F(L).

Manipulation :
1) Ecrire un programme en Matlab qui permet de chiffrer par un réseau de Feistel à deux
rondes (2 tours) un message constitué de quatre bits, en utilisant deux clés K1 et K2 (cas :
identiques et cas : non identiques). Voir l’effet dans les deux cas.
2) En déduire le programme qui permet de faire l’opération de déchiffrage, toujours à deux
rondes et à deux clés. Interpréter les résultats.
3) Augmenter le nombre de rondes à 4 et à 8. Quel est l’effet sur le cryptage. (Pensez à utiliser
une boucle).
4) Augmenter à présent la taille du message (utiliser un message par exemple texte) et le
nombre de rondes à quatre. Interpréter. En déduire le déchiffrage.

Dr. A. Seddiki & Dr. A. Ghaz Dept. de Télécommunication, Faculté de Génie Electrique, UDL SBA p. 4/12
Master II: Réseaux et Télécommunication TP : Cryptographie et Sécurité Réseaux

TP 3 : Cryptage Symétrique DES

Dr. A. Seddiki & Dr. A. Ghaz Dept. de Télécommunication, Faculté de Génie Electrique, UDL SBA p. 5/12
Master II: Réseaux et Télécommunication TP : Cryptographie et Sécurité Réseaux

Dr. A. Seddiki & Dr. A. Ghaz Dept. de Télécommunication, Faculté de Génie Electrique, UDL SBA p. 6/12
Master II: Réseaux et Télécommunication TP : Cryptographie et Sécurité Réseaux

Dr. A. Seddiki & Dr. A. Ghaz Dept. de Télécommunication, Faculté de Génie Electrique, UDL SBA p. 7/12
Master II: Réseaux et Télécommunication TP : Cryptographie et Sécurité Réseaux

1) Trouver toutes les clés Ki jusqu’aux 16 tours (continuer avec l’exemple).


2) Vérifier votre algorithme pour différents messages de longueur 64bits (binaire, texte,
image)
3) changer de clé et refaire le travail

Dr. A. Seddiki & Dr. A. Ghaz Dept. de Télécommunication, Faculté de Génie Electrique, UDL SBA p. 8/12
Master II: Réseaux et Télécommunication TP : Cryptographie et Sécurité Réseaux

TP 4 : DES_Image

But :
On veut appliquer un cryptage symétrique_DES sur des images. Pour cela, on dispose
de certaines fonctions ;
Scalling, convert2bin, binary2dec, reshape, wkeep, DES-64bits, imshow.
Il est demandé donc de chiffrer une image en la découpant en bloc de 64bits.

Travail demandé :

1) Compléter et Commenter chaque ligne du programme ? Que représente


‘Data’ et ‘Data_binary’ ?
close all;

encrypt_msg=[];
decrypt_msg=[];
Img=imread('images\Lena.jpg');

Data_Img=wkeep(Img,[64 64]);

figure(1),imshow(………………);

[row,col]=size(Data_Img);

Data=Scalling(Data_Img,………);

Data_binary=convert2bin(……………);

2) Crypter la matrice binaire en utilisant le DES dans une boucle ‘for’ ?


for i=1:size(………………………,1)

encrypt_msg(……,:)=DES(………………………….,'ENC',K);

encrypt_msg_dec(:,………)=Binary2Dec(encrypt_msg(………,:));
end

2) Afficher l’image chiffrée en utilisant la fonction reshape et imshow ?

Chiffr=uint8(reshape(…………………………,[…………,…………]));
figure(2);imshow(Chiffr);

2) Donner le programme qui fait le décryptage de l’image cryptée ?

Dr. A. Seddiki & Dr. A. Ghaz Dept. de Télécommunication, Faculté de Génie Electrique, UDL SBA p. 9/12
Master II: Réseaux et Télécommunication TP : Cryptographie et Sécurité Réseaux

TP 5 : Cryptage AES 128

BUT :
On veut crypter un message (plaintext) en utilisant le AES128 et en utilisant la clé donnée
(key).
Sachant que le AES calcule des clés de rondes pour chiffrer, il est demandé de réaliser :
1) Ecrire une fonction qui permet de calculer les sous-clés (key_expansion) en s’inspirant de
l’exemple ci-dessous. On utilisera la 2eme méthode vue en cours.
2) Exécuter la fonction de cryptage AES 128bits (cipher) en s’inspirant de l’exemple.
3) En déduire la fonction de décryptage ?

ssi; % Contient les différents toolbox (s_box,rcon,poly_mat,ind_matleft,..)

plaintext=['A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O''P'];
key = ['1' '2' '3' '4' '5' '6' '7' '8' '9' '1' '2' '3' '4' '5' '6' '7'];
w = key_expansion (key, s_box, rcon);
ciphertext = cipher (plain, w, s_box, poly_mat,ind_matleft);
ciphertext = reshape(ciphertext,1,16);
ciphertext = char(abs(ciphertext-96))

Dr. A. Seddiki & Dr. A. Ghaz Dept. de Télécommunication, Faculté de Génie Electrique, UDL SBA p. 10/12
Master II: Réseaux et Télécommunication TP : Cryptographie et Sécurité Réseaux

Dr. A. Seddiki & Dr. A. Ghaz Dept. de Télécommunication, Faculté de Génie Electrique, UDL SBA p. 11/12
Master II: Réseaux et Télécommunication TP : Cryptographie et Sécurité Réseaux

Dr. A. Seddiki & Dr. A. Ghaz Dept. de Télécommunication, Faculté de Génie Electrique, UDL SBA p. 12/12

Vous aimerez peut-être aussi