sujet
This commit is contained in:
parent
af22899fa8
commit
a4ac5d2645
100
ctrlm/README.md
Normal file
100
ctrlm/README.md
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
# 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](https://iut-fbleau.fr/site/site/DEVOIR/).
|
||||||
|
|
||||||
|
# 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
|
||||||
|
d’une suite de 4 lettres dont l'équivalent numérique modulo 26 s’appelle Total. Il a pour valeur
|
||||||
|
initiale (IV) qui vaut (0, 0, 0, 0).
|
||||||
|
|
||||||
|
On utilisera l’encodage usuel de l’alphabet (A<->0,B<->1, ..., Z<->25). L'algorithme utilise la construction générale
|
||||||
|
de Merkle-Damgård.
|
||||||
|
<div align="center">
|
||||||
|
<img src="./merkle-damgaard.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
**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**
|
||||||
|
|
||||||
|
|
||||||
|
```c
|
||||||
|
/* 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 l’addition des sous-clés) est décrite ci-dessous (l'opérateur rouge représente le "ou exclusif") :
|
||||||
|
<div align="center">
|
||||||
|
<img src="./idea.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
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.
|
BIN
ctrlm/idea.png
Normal file
BIN
ctrlm/idea.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 19 KiB |
BIN
ctrlm/merkle-damgaard.png
Normal file
BIN
ctrlm/merkle-damgaard.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 59 KiB |
410
ctrlm/merkle.svg
Normal file
410
ctrlm/merkle.svg
Normal file
File diff suppressed because one or more lines are too long
After (image error) Size: 48 KiB |
Loading…
x
Reference in New Issue
Block a user