Introduction à la Cryptographie
TP1


But du TP :  Construire un programme de chiffrement à l'aide d'une substition simple, chiffrer et déchiffrer des fichiers.
Chiffrement par substitution
  1. Ecrire un programme xorcrypt qui chiffre un fichier source <fichier1> octet par octet pour produire un fichier chiffré <fichier2>. Le chiffrement se fait en utilisant une chaine de caractère clé <cle>, on calcule le "ou exclusif bit à bit" de chaque octet du fichier avec la clé, la clé étant répétée autant de fois que nécessaire (cf Vigenère).
L'utilisation de ce programme doit être la suivante :
/* Usage : xorcrypt <cle> <fichier1> <fichier2>                    */
/* <cle> : clé de (dé)chiffrement                                  */
/* <fichier1> : nom du  fichier à (dé)chiffrer                     */
/* <fichier2> : nom du fichier (dé)chiffré                         */
 
Que se passe-t-il si on applique deux fois la commande ?
$ xorcrypt aeiou tata toto                                   
$ xorcrypt aeiou toto titi 
  1. Construire le cryptogramme cryptogram1 en chiffrant le fichier texte (une nouvelle d'Alphonse Allais) avec une clé k d'un seul caractère. Il en résulte que le procédé de chiffrement est une substitution simple des 256 symboles de l'alphabet ascii étendu. Cette substitution se résume à transformer chaque symbole s en le symbole sxork.

Cryptanalyse 1

  1.     Réalisez un programme d'analyse statistique de fichiers qui compte le nombre d'occurrences des 256 caractères possibles.
  2.   A l'aide de ce programme retrouver la clé k et déchiffrer le cryptogram1 de votre voisin.

Cryptanalyse 2

Le programme kappa  (en version chiffrée) permet de calculer les fréquences relatives des coïncidences de caractères d'un fichier avec le même fichier décalé d'un ou plusieurs caractères.  La version chiffrée du programme kappa a été obtenu en chiffrant le source C du programme kappa avec le programme crypxor.

  1. Visualiser ce fichier avec un éditeur hexadécimal (ou la commande Unix  :$od -c cryptogram2 ou bien en utilisant le mode hexl-mode d'emacs), il est possible de VOIR la clé.

    Retrouvez  la clé de chiffrement, puis reconstituez le source C  du programme kappa et compilez-le. Pourquoi la clé est-elle aussi visible dans le cryptogramme ?

Cryptanalyse 3

Le fichier cryptogram3 a été obtenu en chiffrant un fichier texte (encore une nouvelle d'Alphonse Allais) avec le programme crypxor .
  1. Cette fois-ci vous devez déterminer la longueur de la clé, puis connaissant celle-ci déterminer la valeur de cette clé par des considérations statistiques. Pour déterminer la longueur de la clé, utilisez le programme kappa et visualisez les données ainsi produite à l'aide de gnuplot. Puis déterminez les caractères successifs de la clé.
  2. Une fois la clé déterminée, il ne vous reste plus qu'à décrypter en utilisant crypxor.


table des caractères ascii