2026-03-02 18:34:04 +01:00
|
|
|
|
# TP1
|
|
|
|
|
|
## Ex1
|
|
|
|
|
|
L’objectif de cet exercice est de chiffrer une image en ligne de commande à
|
|
|
|
|
|
l’aide des outils fournis par la librairie openssl.
|
|
|
|
|
|
|
|
|
|
|
|
1. Prenez une image de votre choix et convertissez la dans le format ppm à l’aide de la commande
|
|
|
|
|
|
`convert`.
|
|
|
|
|
|
|
|
|
|
|
|
2. Avec la commande `head`, mettez les 3 premières lignes de votre fichier ppm dans un fichier
|
|
|
|
|
|
header.txt.
|
|
|
|
|
|
|
|
|
|
|
|
3. Avec la commande tail mettez tout le fichier ppm sauf les 3 premières lignes dans un fichier
|
|
|
|
|
|
body.bin.
|
|
|
|
|
|
|
|
|
|
|
|
4. Chiffrez avec openssl en AES-ECB le fichier body.bin.
|
|
|
|
|
|
5. Remettez l’en-tête header.txt au début du fichier obtenu à la question précédente pour avoir
|
|
|
|
|
|
une image chiffrée, et observez le résultat.
|
|
|
|
|
|
|
|
|
|
|
|
## EX2
|
|
|
|
|
|
Le but est d'implanter un registre à décalage linéaire, sur un octet.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
À chaque étape, le registre (un octet) $(b_7,b_6,b_5,b_4,b_3,b_2,b_1,b_0)$ est décalé à gauche, et
|
|
|
|
|
|
le bit $b_0$ est remplacé par un bit, calculé par une fonction linéaire $f$.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vous disposez d'un [fichier](src/ex1/file.crypt) crypté avec un lfsr, en faisant
|
|
|
|
|
|
un XOR de chacun des octets avec les valeurs successives du registre. L'état
|
|
|
|
|
|
initial du registre était `0xa7`, et la fonction utilisée
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-04 10:52:51 +01:00
|
|
|
|
|
|
|
|
|
|
$$ f(b_7,b_6,b_5,b_4,b_3,b_2,b_1,b_0) = b_7\oplus b_6\oplus b_5\oplus b_4\oplus b_3\oplus b_1 $$
|
2026-03-02 18:34:04 +01:00
|
|
|
|
|
|
|
|
|
|
Retrouver le fichier initial.
|
|
|
|
|
|
|
|
|
|
|
|
Vous pouvez utiliser la fonction interne `__builtin_parity` de `gcc`.
|
|
|
|
|
|
|
|
|
|
|
|
|