TP1 MDP Signatures Pki1
TP1 MDP Signatures Pki1
TP1 MDP Signatures Pki1
et Infrastructures PKI
Introduction
OpenSSL est une boite à outils cryptographiques qui ore :
une bibliothèque de programmation en C permettant de réaliser des applications client/serveur sécu-
risées s'appuyant sur SSL/TLS.
une commande en ligne (openssl) permettant
la création de clés RSA, DSA (signature)
la création de certicats X509 ;
le calcul d'empreintes (MD5, SHA, RIPEMD160, . . . ) ;
le chirement et déchirement (DES, IDEA, RC2, RC4, Blowsh, . . . ) ;
la réalisation de tests de clients et serveurs SSL/TLS ;
la signature et le chirement de courriers (S/MIME)
Pour connaître toutes les fonctionnalités de openSSL, consultez le manuel (man openssl ou openssl [commande] -help).
La syntaxe générale de la commande openssl est : $openssl commande <options>
Le but de ce TP est de manipuler les signatures et les certicats, de la demande de signature (CRS) à
leur utilisation en envoyant des messages chirés et signés.
1 Mots de passe
Nous allons ici regarder comment sont stockés les mots de passe sous UNIX.
Le chier passwd : se trouve dans /etc/passwd contient des informations sur les utilisateurs. Il est,
par défaut, lisible par tous les utilisateurs. (man 5 passwd)
Le chier shadow : se trouve dans /etc/shadow contient des informations sur les mots de passe des
utilisateurs. Il est, par défaut, lisible uniquement par l'administrateur. (man 5 shadow)
Consultez le chier shadow et en déduire de quelle manière sont stockés les mots de passe.
2 Signatures
2.1 Génération de clés
On peut générer une paire de clés RSA avec la commande genrsa (pour generate an RSA private key ) :
$penssl genrsa -out fichierdesortie taille
où fichierdesortie est le nom du chier de sauvegarde de la clé, et taille est la taille souhaitée (exprimée
en bits) du modulus de la clé.
où cleaVisualiser est le chier de sauvegarde des clés au format .pem par défaut. Si l'on souhaite visualiser
uniquement la clé publique, alors il faudra rajouter l'option -pubin. L'option -text demande l'achage
décodé de la paire de clés. L'option -noout supprime la sortie normalement produite par la commande rsa.
Les diérents éléments de la clé sont achés en hexadécimal (hormis l'exposant public). On peut distin-
guer le modulus, l'exposant public (qui par défaut est toujours 655371), l'exposant privé, les nombres premiers
facteurs du modulus, ainsi que trois autres nombres qui servent à optimiser l'algorithme de déchirement.
Questions :
1. Créez une paire de clés rsa an de signer vos documents. Visualisez ensuite votre paire de clés.
(a) Donnez une explication du choix de la valeur 65537 pour exposant public par défaut.
(b) Expliquez à quoi correspondent les trois autres nombres qui servent à optimiser l'algorithme de
déchirement et de quelle manière cet algorithme est optimisé.
2. Faut-il conserver la clé privée en clair ? Est-ce que votre clé privée est sauvegardée en clair ? Si oui,
remplacez le chier clair par un chier chiré.
3. Créez la clé publique associée à votre clé privée. Faut-il conserver la clé publique en clair ? Est-ce que
votre clé publique est sauvegardée en clair ?
4. Chirez et déchirez n'importe quel petit chier. Chirez ensuite un gros chier. Que se passe-t-il ?
Pourquoi ?
5. Demandez à votre binôme sa clé publique. Chirez un court message avec celle-ci. Transmettez-le lui,
et demandez-lui de le déchirer.
6. Chirez le chier de votre choix avec le système symétrique de votre choix. Chirez la clé ou le mot
de passe utilisé(e) avec la clé publique de votre destinataire. Envoyez-lui le mot de passe chiré ainsi
que le chier chiré.
7. Faut-il utiliser la clé publique ou la clé privée pour une signature ?
8. Signez le chier de votre choix, puis vériez la signature.
9. Créez trois messages. Signez ces trois messages. Modiez-en un ou deux légèrement. Transmettez
à votre binôme les messages (éventuellement modiés) ainsi que les signatures correspondantes.
Demandez-lui de déterminer quels sont les messages qui ont été modiés.
3 Interfaces PKI
3.1 Création d'une requête de certicats (auprès de la RA)
Avant d'avoir un certicat, il faut d'abord s'enregistrer en fournissant les informations nécessaires (clé
publique, identité, ... (voir cours pour plus de détails)) avant de transmettre la demande à la CA. La
commande req permet d'établir une requête :
Notez que la clée fournie doit être votre paire de clés clé privée/clé publique. En eet, seule la clé publique
est nécessaire pour renseigner les champs du certicat, mais la requête est signée avec votre clé privée, an de
s'assurer que vous êtes bien le propriétaire de la clé publique. Le chier produit maRequette est par défaut
au format PEM. Par défaut, la fonction de hachage utilisée pour signer votre requête est SHA-256.
Remarque : la clé doit être susamment grande pour pouvoir signer le certicat, en général, une clé
de 1024 bits sut.
Vous pouvez aussi eectuer votre requête en demandant une paire de clés. Pour cela, on utilise l'option
-newkey en précisant en option l'algorithme de chirement souhaité (voir le manuel pour plus de précisions) :
Notez que vous pouvez directement créer une requête signée (et donc vous établir CA) directement à
partir de la commande :
l'option -days détermine la durée de validité du certicat, serial est un chier contient un nombre enregistré
en hexadécimal (le numéro de série du prochain certicat à signer) (voir manuel).
Questions :
1. Créez une requête de certicat appelée user-request.pem concernant une entité appelée user. Cette
requête est en attente de signature par une autorité de certication.
2. Expliquez les diérents éléments contenus dans cette requête. La clé privée du sujet y guretelle ?
3. Créez une paire de clés pour l'autorité de certication. Créez une requête de certicat nommée ca-
request.pem concernant l'entité de certication appelée CA.
4. Autosignez la requête de certicat de CA dans un certicat nommé ca-certificat.pem.
5. Visualisez le certicat ca-certificat.pem. Quelle est la date d'expiration du certicat et la taille de
la clé ?
6. Signez la requête de certicat user-request.pem pour produire un certicat usercertificat.pem.
Puis, contrôlez le contenu du certicat.
7. Vériez le certicat user-certicat.pem.
8. Modiez le contenu du certicat user-certificat.pem et tentez de le vérier.
9. Envoyez un email chiré et signé à votre binôme (mettre la signature en pièce-joite) et demandez lui
de vérier la signature.
10. Envoyez un email chiré et signé à votre binôme (mettre la signature en pièce-joite) et demandez lui
de le déchirer.