2025-04-01 10:12:32 +02:00
..
2025-04-01 10:12:32 +02:00
2025-04-01 10:12:32 +02:00
2025-04-01 10:12:32 +02:00
2025-04-01 10:12:32 +02:00

Contrôle sur machine R4.B.10

Consignes

Les seuls documents papier autorisés sont vos notes de cours et de travaux pratiques. Les documents électroniques autorisés sont les documents présents sur les machines de l'IUT et dont vous êtes l'unique auteur (ainsi que les éventuels documents de cours). En dehors de la machine qui vous est attribuée et de votre matériel de composition (crayons, stylos, feuilles de brouillon, etc.), aucun matériel n'est autorisé.

L'épreuve compte 3 exercices. Vous créerez un repertoire cntr_R4.B.10, avec les. 3 sous-repertoires ex1, ex2 et ex3.

À la fin de l'épreuve, vous rendrez une. archive compréssée (tar.gz) ici.

Exercice 1

On construit une fonction de hachage appelée Toy Tetragraph Hash (TTH) qui travaille sur l'alphabet {A, ..., Z}. Étant donnée une suite de lettres, TTH fournit une empreinte sous la forme dune suite de 4 lettres dont l'équivalent numérique modulo 26 sappelle Total. Il a pour valeur initiale (IV) qui vaut (0, 0, 0, 0).

On utilisera lencodage usuel de lalphabet (A<->0,B<->1, ..., Z<->25). L'algorithme utilise la construction générale de Merkle-Damgård.

Iniatilsation

TTH scinde le message en blocs de 16 lettres en ignorant les espaces et la ponctuation. Si la longueur du message n'est pas un multiple de 16, on bourre avec la caractère A (0). La valeur initiale de Total est (0,0,0,0).

Itération

On applique une fonction de compression C au bloc courant :

  • on arrange les 16 lettres en un tableau 4x4 en arrageant les lettres (encodées) ligne par ligne.

  • on calcule la somme de chaque colonne modulo 26, et on ajoute (modulo 26) à la valeur de Total correspondant à l'indice de la colonne.

  • on applique au tableau

    • une permutation circulaire d'une position vers la gauche de la première ligne,
    • une permutation circulaire de deux positions vers la gauche de la deuxième ligne,
    • une permutation circulaire de trois positions vers la gauche de la troisième ligne,
    • une inversion de la dernière ligne.
  • on calcule à nouveau la somme modulo 26 de chaque colonne et on l'ajoute (modulo 26) à la valeur de Total.

  • cette nouvelle valeur de Total constitue l'entrée de la fonction de compression pour le bloc suivant.

Travail demandé

Écrire en C un programme qui prend en argument un nom de fichier (texte, en majuscule), et qui calcule et affiche son empreinte TTH.

la hash du message

LE HACHAGE AVEC TTH EST FACILE !

est

QQWC

Bonus

Pour ceux qui ont des souvenirs du cours de proba, en utilisant le paradoxe des anniversaires, donnez le nombre de messages à considérer pour avoir plus d'une chance sur deux de trouver une collision pour TTH.

Aide

/* fonctions utiles */
#include <ctype.h>
int isupper(int c);

char c = 'R';

c-'A'; /* ?? */ 

char l = 10;

l + 'A'; /* ?? */

Exercice 2

Le schéma IDEA est basé sur une variante du mécanisme de Feistel, dont la fonction de tour (on ignore ici laddition des sous-clés) est décrite ci-dessous (l'opérateur rouge représente le "ou exclusif") :

  1. Montrer que ce schéma est inversible quelle que soit la fonction F et donner les formules décrivant le déchiffrement.

  2. Est-ce utile de refaire un tour, avec la même fonction F ? pourquoi ?

Exercice 3

Générez, avec openssl, une clé RSA. Exportez sa partie publique dans le fichier key.pub.

Créez un fichier me.txt, avec vos nom, prénom, groupe, ainsi que toutes les commandes (précises) que vous avez utilisées pour cet exercice.

Signez me.txt avec votre clé privée (on utilisera pour le hachage sha256) dans le fichier signature.