Académique Documents
Professionnel Documents
Culture Documents
Page 1 sur 21
Semaine 1 : TD Chiffrement de JULES CESAR, VIGENERE, POLYBE, PAR
TRANSPOSITION
1. En utilisant 4 comme la valeur de la clé, appliquez le code secret de JULES CESAR sur
le texte en clair « IPNET » pour donner le texte chiffré. Vous travaillez dans l’ensemble
des lettres de l’alphabet :
ABCDEFGHIJKLMNOPQRSTUVWXYZ
2. En raisonnant par rapport au nombre de possibilité de clés, pensez-vous que le code de
JULES CESAR soit robuste ?
3. En améliorant le code de JULES CESAR avec une substitution mono alphabétique dont
la clé est la suivante :
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
M W Z Y J H I A U T B X R Q S G V N F O P L E D K C
Page 2 sur 21
Page 3 sur 21
5. En considérant le carré de Polybe suivant, chiffrer le mot « CRYPTO»
Page 4 sur 21
Semaine 2 : TD Chiffrement affine, Chiffrement de Hill
Où a,b ∈Z26. Ces fonctions sont appelées des fonctions affines, d’où l’on a tiré le
nom du procédé. On remarque que l’on retrouve le chiffrement par décalage pour a =
1.
Pour que l’opération de déchiffrement soit possible, il est nécessaire que la fonction
affine soit bijective. Autrement dit, pour tout y ∈Z26, l’équation
ax + b = y mod 26 (2)
doit avoir une, et une seule, solution x. L’ équation (2) est équivalente à
ax = y − b mod 26 . (3)
Lorsque y parcourt l’ensemble Z26, y − b décrit également ce même ensemble. Donc, il
suffit d’étudier l’équation ax = z mod 26 pour tout z ∈ Z26. On démontre que cette
équation admet une unique solution pour tout z fixé, si, et seulement si, pgcd(a,26) = 1
(où pgcd est le plus grand diviseur commun de ses arguments); au passage on dit que a
et 26 sont premiers entre eux. En effet si a et 26 sont premiers entre eux (et seulement
dans ce cas), alors a admet un inverse a−1 ∈ Z26 (i.e., aa−1 = a−1a = 1 mod 26), et
l’unique solution de l’ équation ax = z mod 26 est x = a−1z mod 26. En particulier, x =
a−1(y − b) mod 26 est l’unique solution a l’équation (2).
Supposons donc que a et 26 sont premiers entre eux. On vient de voir que, dans ce cas,
l’application E(a,b) est inversible. Sa bijection réciproque est donnée par D(a,b)(y) =
a−1(y−b) mod 26. Nous pouvons maintenant décrire complétement le chiffrement
affine. Les ensembles de textes clairs P et chiffrés C sont tous les deux égaux à Z26.
L’espace des clefs secrètes est quant à lui donné par
et
D(a,b)(y) := a−1(y − b) mod 26 . (6)
Page 5 sur 21
Mise en œuvre du chiffrement affine
Soit (a,b) = (7,3).
1. Montrer que (a,b) ∈K et calculer a−1 dans Z26 ;
2. Vérifier par calcul que D(a,b)(E(a,b)(x)) = x pour x quelconque dans Z26 ;
3. Chiffrer le mot hot avec cette clef;
4. Enumérer les a ∈Z26 qui sont premiers avec 26;
5. Pour chacun des éléments a ∈ Z26 premiers avec 26, calculer son inverse (modulo
26);
6. Calculer le nombre de clefs possibles. Qu’en déduisez-vous quant à la solidité de
ce procédé de chiffrement?
• On pose
1. chiffrement de Hill
a. Montrer que le système (𝑆) est équivalent à une relation matricielle 𝑌 = 𝐴𝑋 dont on
précisera les matrices 𝑋 , 𝐴 et 𝑌.
Page 7 sur 21
b. Avec la clef de cryptage 𝑎 = 9 , 𝑏 = 4 , 𝑐 = 5 𝑒𝑡 𝑑 = 7.
2.
a. Déterminer la matrice de cryptage 𝐴 correspondant à la clef :
𝑎 = 9 , 𝑏 = 4 , 𝑐 = 5 𝑒𝑡 𝑑 = 7 .
b. la matrice 𝐴 est elle inversible ? Justifier votre réponse.
c. déterminer la matrice inverse 𝐴−1 de 𝐴,
Page 8 sur 21
Semaine 3 : TP Programmation et Hacking du chiffrement de JULES CESAR, affine et
VIGENERE
Les codes sources vous sont fournis pour ce TP. Il s’agira de comprendre et d’exécuter les codes
en Python de la programmation et du hacking des chiffrements affine, de Jules Cesar et
Vigénère puis de produire un rapport avec les imprime-écran de votre travail.
Page 9 sur 21
Semaine 4 : TD Diffie-Hellman, RSA, numéros jetables
Exercice 1(Diffie-Hellman et Man-in-the-middle) : On suppose qu’Oscar voit passer A et B.
Expliquer pourquoi Oscar ne peut alors pas facilement en déduire K.
Exercice 2 Alice et Bob conviennent des paramètres suivants : p = 541 et g = 2. Alice génère
le nombre secret a = 292. De son coté, Bob génère le nombre b = 426. Quelle est la clef secrète
résultant du protocole d’échange de Diffie-Hellman?
Page 10 sur 21
Semaine 5 : TP AES RSA
Page 11 sur 21
Semaine 6 : Génération de clé et connexion automatique
Ce TP devra se faire sur les deux machines
La commande ssh sous Linux lance un programme pour se connecter sur une machine distante
et pour exécuter des commandes sur cette machine, en suivant le protocole SSH. Dans le
répertoire .ssh, à la racine du répertoire utilisateur, ce programme maintient un fichier
known_hosts des serveurs sur lesquels l’utilisateur s’est connecté. La première connexion est
considérée comme sûre et les suivantes sont authentifiées par la clef publique stockée dans le
fichier .ssh/known_hosts.
1. Comment rendre cette authentification du serveur sûre?
2. Plusieurs méthodes d’authentification du client sont alors possibles (clef publique, mot
de passe, clavier); comment générer une paire clef publique / clef privée de type DSA sur
2048 bits avec l’utilitaire ssh-keygen?
3. Ajouter la clef publique ainsi générée au fichier authorized_keys dans le répertoire .ssh
d’un compte tiers; connectez-vous sur ce compte en utilisant ssh -v. Que constatez-vous?
4. Détruire le fichier known_hosts. Se reconnecter sur une autre machine. A quel message
doit-on s’attendre?`
Modifier le fichier known_hosts en changeant une clef publique. A quel message doit-on
s’attendre?
Page 12 sur 21
Semaine 7 : TP PKI ,Certificats , validation de certificat
1 Tous les noms suivants peuvent être modifiés dans le fichier openssl.cnf.
Page 13 sur 21
Semaine 8 : Activation du SSL sur un serveur web
L’objectif principal de ce type est de savoir activer le SSL sur un serveur web. A des fins de
TP, une solution open source mantisBT sera déployée.
1. Installer apache2, mariadb et php sur le serveur server.ipnet.local
2. Etapes de déploiement de la solution opensource
Etape 1: Créer la base de données Mantis
cd /tmp
wget https://excellmedia.dl.sourceforge.net/project/mantisbt/mantis-stable/2.22.1/mantisbt-
2.22.1.zip
unzip mantisbt-2.22.1.zip
sudo mv mantisbt-2.22.1 /var/www/mantis
Page 14 sur 21
<VirtualHost *:80>
ServerAdmin admin@ipnet.local
DocumentRoot /var/www/mantis
ServerName lab01.ipnet.local
ServerAlias www.ipnet.local
<Directory /var/www/mantis/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
http://www.ipnet.local/
Username: administrator
Password: root
Page 15 sur 21
Semaine 9 : Installation du serveur KERBEROS
Kerberos
Kerberos est un système d'authentification réseau basé sur le principe d'un tiers de confiance.
Les deux autres parties sont l'utilisateur et le service sur lequel l'utilisateur veut s'authentifier.
Tous les services et applications ne savent pas utiliser Kerberos, mais pour ceux qui en sont
capables, cela rapproche l'environnement réseau d'un système à authentification unique
(Single Sign On ou SSO).
Aperçu
Si vous débutez avec Kerberos, il y a quelques termes qu'il est bon de comprendre avant de
paramétrer un serveur Kerberos. La plupart des termes sont proches d'éléments qui peuvent
vous être familiers dans d'autres environnements.
Donneur d'ordre : tous les utilisateurs, ordinateurs et services fournis par des serveurs
doivent être définis comme « donneurs d'ordre » Kerberos.
Instances : sont utilisés pour les donneurs d'ordre de service et les donneurs d'ordre
administratifs spéciaux.
Realms: le domaine de contrôle unique fourni par l'installation Kerberos.. Think of it
as the domain or group your hosts and users belong to. Convention dictates the realm
should be in uppercase. By default, ubuntu will use the DNS domain converted to
uppercase (IPNET.LOCAL) as the realm.
Centre de distribution de clé : (KDC) se compose de trois parties, une base de données
de tous les donneurs d'ordre, le serveur d'authentification et le serveur accordant les
tickets. Pour chaque domaine, il doit y avoir au moins un KDC.
Ticket d'octroi de ticket : émis par le serveur d'authentification (AS), le ticket d'octroi
du ticket (TGT) est chiffré avec le mot de passe utilisateur qui n'est connu que par
l'utilisateur et le KDC.
Serveur d'octroi de ticket : (TGS) génère sur demande des tickets de service aux
clients.
Tickets : confirment l'identité des deux donneurs d'ordre. Un donneur d'ordre étant un
utilisateur et l'autre un service demandé par l'utilisateur. Les tickets établissent une clé
de chiffrage utilisée pour la communication sécurisée pendant la session authentifiée.
Fichiers Keytab : ce sont des fichiers extraits de la base de données KDC des
« principals » et qui contiennent la clé de chiffrement pour un service ou un hôte.
Considérez-le comme le domaine ou le groupe auquel appartiennent vos hôtes et vos
utilisateurs. La convention stipule que le domaine doit être en majuscules. Par défaut, Ubuntu
utilisera le domaine DNS converti en majuscules (IPNET.LOCAL) comme domaine.
Page 16 sur 21
Semaine 10: TP Pretty Good Privacy (PGP)
Création d’un dossier partagé : /tmp est un lieu partagé par excellence
Page 17 sur 21
Créer des clés dans la session de Alice Alice <alice@localhost>
su - alice
sudo gpg --gen-key
[sudo] password for alice:
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
su - bob
gpg --armor --import /tmp/alice.asc
gpg: répertoire « /home/bob/.gnupg » créé
gpg: nouveau fichier de configuration « /home/bob/.gnupg/gpg.conf » créé
gpg: Attention : les options de « /home/bob/.gnupg/gpg.conf » ne sont pas encore actives cette
fois
gpg: le porte-clefs « /home/bob/.gnupg/secring.gpg » a été créé
gpg: le porte-clefs « /home/bob/.gnupg/pubring.gpg » a été créé
gpg: /home/bob/.gnupg/trustdb.gpg : base de confiance créée
gpg: clef CDB148EC : clef publique « Alice <alice@localhost> » importée
gpg: Quantité totale traitée : 1
gpg: importées : 1 (RSA: 1)
su - bob
echo "secret pour Alice" > bob_to_alice.txt
sudo gpg -r Alice --encrypt --armor -o /tmp/bob_to_alice.enc bob_to_alice.txt
Alice déchiffre le message avec sa clé privée :
su - alice
sudo gpg /tmp/bob_to_alice.enc
Une phrase de passe est nécessaire pour déverrouiller la clef secrète de
l'utilisateur : « Alice <alice@localhost> »
Page 19 sur 21
clef RSA de 2048 bits, identifiant FF629C2C, créée le 2016-09-28 (identifiant de clef principale
CDB148EC)
gpg: chiffré avec une clef RSA de 2048 bits, identifiant FF629C2C, créée le 2016-09-28
« Alice <alice@localhost> »
gpg: /tmp/bob_to_alice.enc : suffixe inconnu
Entrez le nouveau nom de fichier [bob_to_alice.txt]:
cat bob_to_alice.txt
secret pour Alice
Lister son trousseau de clés :
su - alice
sudo gpg --list-public-keys
/root/.gnupg/pubring.gpg
------------------------
pub 2048R/CDB148EC 2016-09-28
uid Alice <alice@localhost>
sub 2048R/FF629C2C 2016-09-28
su - alice
echo "Peux-tu vérifier la signature ? signé Alice" > alice_to_bob.txt
sudo gpg --clearsign -u Alice alice_to_bob.txt
Une phrase de passe est nécessaire pour déverrouiller la clef secrète de
l'utilisateur : « Alice <alice@localhost> »
clef RSA de 2048 bits, identifiant CDB148EC, créée le 2016-09-28
cp alice_to_bob.txt* /tmp
Bob vérifie ce message
su - bob
cat /tmp/alice_to_bob.txt
Peux-tu vérifier la signature ? signé Alice
gpg --verify /tmp/alice_to_bob.txt.asc
gpg: Signature faite le mer 28 sep 2016 19:26:55 CEST avec la clef RSA d'identifiant
CDB148EC
gpg: Bonne signature de « Alice <alice@localhost> »
Page 20 sur 21
gpg: Attention : cette clef n'est pas certifiée avec une signature de confiance.
gpg: Rien n'indique que la signature appartient à son propriétaire.
Empreinte de clef principale : 7E68 6D3E 937C F4B0 AA5D 787C C638 9CF9 CDB1 48EC
Page 21 sur 21