Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Tp certif
1. USTL - Licence et Master Informatique 2006-2007
Principes et Algorithmes de Cryptographie
TP : RSA et certificats avec openSSL
1 Pr´sentation de openSSL
e
1.1 Protocole SSL
Le protocole SSL (Secure Socket Layer) a ´t´ d´velopp´ par la soci´t´ Netscape Communications
ee e e ee
Corporation pour permettre aux applications client/serveur de communiquer de fa¸on s´curis´e. TLS
c e e
(Transport Layer Security) est une ´volution de SSL r´alis´e par l’IETF.
e e e
La version 3 de SSL est utilis´e par les navigateurs tels Netscape et Microsoft Internet Explorer depuis
e
leur version 4.
SSL est un protocole qui s’intercale entre TCP/IP et les applications qui s’appuient sur TCP. Une
session SSL se d´roule en deux temps
e
1. une phase de poign´e de mains (handshake) durant laquelle le client et le serveur s’identifient,
e
conviennent du syst`me de chiffrement et d’une cl´ qu’ils utiliseront par la suite.
e e
2. la phase de communication proprement dite durant laquelle les donn´es ´chang´es sont compress´es,
e e e e
chiffr´es et sign´es.
e e
L’identification durant la poign´e de mains est assur´e ` l’aide de certificats X509.
e e a
1.2 openSSL
openSSL est une boˆ ` outils cryptographiques impl´mentant les protocoles SSL et TLS qui offre
ıte a e
1. une biblioth`que de programmation en C permettant de r´aliser des applications client/serveur
e e
s´curis´es s’appuyant sur SSL/TLS.
e e
2. une commande en ligne (openssl) permettant
– la cr´ation de cl´s RSA, DSA (signature)
e e
– la cr´ation de certificats X509
e
– le calcul d’empreintes (MD5, SHA, RIPEMD160, ...)
– le chiffrement et d´chiffrement (DES, IDEA, RC2, RC4, Blowfish, ...)
e
– la r´alisation de tests de clients et serveurs SSL/TLS
e
– la signature et le chiffrement de courriers (S/MIME)
Pour connaˆ toutes les fonctionnalit´s de openSSL : man openssl.
ıtre e
La syntaxe g´n´rale de la commande openssl est
e e
$ o p e n s s l <commande> <o p t i o n s >
(le $ est le prompt du shell)
Dans le texte qui suit, les commandes invoquant openssl supposent que cette commande est dans
votre PATH.
2 Chiffrement sym´trique avec openSSL
e
Voir le TP num´ro 2 ici.
e
3 RSA avec openSSL
3.1 G´n´ration d’une paire de cl´s
e e e
On peut g´n´rer une paire de cl´s RSA avec la commande genrsa de openSSL.
e e e
$ o p e n s s l g e n r s a −out <f i c h i e r > < t a i l l e >
1
2. o` fichier est un nom de fichier de sauvegarde de la cl´, et taille et la taille souhait´e (exprim´e en bits)
u e e e
du modulus de la cl´.
e
Par exemple, pour g´n´rer une paire de cl´s de 1024 bits, stock´e dans le fichier maCle.pem, on tape
e e e e
la commande
$ o p e n s s l g e n r s a −out maCle . pem 1024
Le fichier obtenu est un fichier au format PEM (Privacy Enhanced Mail, format en base 64), dont
voici un exemple
$ c a t maCle . pem
−−−−−BEGIN RSA PRIVATE KEY −−−−−
MIICXAIBAAKBgQCveVjLltevTC5kSAiTYjHMVuAR80DHMLWCp3BOVZ49eXwraXxO
7AfKWpA5g0wFZgZNERIfFYaCnvaQDQA+9BRIfsSSr3oSw0My5SD6eg15v0VmJmvP
d8LgBypJHbr6f5MXWqntvzp0Qvg6ddeNpUIrqkkh4uDfHFDWqyrkQUCvKwIDAQAB
AoGANchUrfnq28DWy0fE0R+cscvC292Z8jN8vrIBWxEk8iSlKU0om6v+a0g8wlP6
3 gC6V66uxjY7xxdf7SD+/UykVl4PGFymhLtywSdGlgec3tLgBtV3ytJFilAVDBij
LzQwUegCO4zt1JWYc6vvaVdNyQSaGIIeYGsNDWEYlOtDSlkCQQDVRn9JS15G8p+H
4Z0PbU9ZQg2L1u9/SD/kELVe3Kx1fdHulxH0v8V2AgPdXA29Nhi+TxUtC+V8CMc2
KXmAvFsHAkEA0qBDmjHMDPwcGaqbQ2lymYQIGlZ5TLQFA98Dey2uE+CB6pmS/ e /Z
ilu1IaasuE3vBzXfB /JU7DUkV++JQ7TtvQJBAL2s5dUch2sXqlOhjhpDP/eE7CE6
9WLAsbm2Nmd4YJRZYtQLXPfLeeSapC9BCCMHsnfGQ3H9i4mFEQ6VUi7w1Q8CQAQa
pVaS09QI8Y86eM4GdvowzWud9b0d4N8jcFDtIfA3NrDYjzmte8KraMsgEUuCET9F
uHPSL/9uRagE/dq44s0CQCMQU4PMqkMtwzCFsV8ZqLmkDPn1binIAwRLYFcsQRDt
gTi6rycz3Pk1hCVzBfyMd8zwqpwKmR5FoOXuJEv+mVg=
−−−−−END RSA PRIVATE KEY −−−−−
3.2 Visualisation des cl´s RSA
e
La commande rsa permet de visualiser le contenu d’un fichier au format PEM contenant une paire
de cl´s RSA.
e
$ o p e n s s l r s a −i n <f i c h i e r > −t e x t −noout
L’option -text demande l’affichage d´cod´ de la paire de cl´s. L’option -noout supprime la sortie nor-
e e e
malement produite par la commande rsa.
Par exemple
$ o p e n s s l r s a −i n maCle . pem −t e x t −noout
P r i v a t e −Key : ( 1 0 2 4 b i t )
modulus :
0 0 : a f : 7 9 : 5 8 : cb : 9 6 : d7 : a f : 4 c : 2 e : 6 4 : 4 8 : 0 8 : 9 3 : 6 2 :
3 1 : c c : 5 6 : e0 : 1 1 : f 3 : 4 0 : c7 : 3 0 : b5 : 8 2 : a7 : 7 0 : 4 e : 5 5 :
9 e : 3 d : 7 9 : 7 c : 2 b : 6 9 : 7 c : 4 e : e c : 0 7 : ca : 5 a : 9 0 : 3 9 : 8 3 :
4c :05:66:06:4 d :11:12:1 f :15:86:82:9 e : f6 :90:0 d :
0 0 : 3 e : f 4 : 1 4 : 4 8 : 7 e : c4 : 9 2 : a f : 7 a : 1 2 : c3 : 4 3 : 3 2 : e5 :
2 0 : f a : 7 a : 0 d : 7 9 : b f : 4 5 : 6 6 : 2 6 : 6 b : c f : 7 7 : c2 : e0 : 0 7 :
2 a : 4 9 : 1 d : ba : f a : 7 f : 9 3 : 1 7 : 5 a : a9 : ed : b f : 3 a : 7 4 : 4 2 :
f 8 : 3 a : 7 5 : d7 : 8 d : a5 : 4 2 : 2 b : aa : 4 9 : 2 1 : e2 : e0 : d f : 1 c :
5 0 : d6 : ab : 2 a : e4 : 4 1 : 4 0 : a f : 2 b
p u b l i c E x p o n e n t : 65537 ( 0 x10001 )
privateExponent :
3 5 : c8 : 5 4 : ad : f 9 : ea : db : c0 : d6 : cb : 4 7 : c4 : d1 : 1 f : 9 c :
b1 : cb : c2 : db : dd : 9 9 : f 2 : 3 3 : 7 c : be : b2 : 0 1 : 5 b : 1 1 : 2 4 :
f 2 : 2 4 : a5 : 2 9 : 4 d : 2 8 : 9 b : ab : f e : 6 b : 4 8 : 3 c : c2 : 5 3 : f a :
de : 0 0 : ba : 5 7 : ae : ae : c6 : 3 6 : 3 b : c7 : 1 7 : 5 f : ed : 2 0 : f e :
f d : 4 c : a4 : 5 6 : 5 e : 0 f : 1 8 : 5 c : a6 : 8 4 : bb : 7 2 : c1 : 2 7 : 4 6 :
9 6 : 0 7 : 9 c : de : d2 : e0 : 0 6 : d5 : 7 7 : ca : d2 : 4 5 : 8 a : 5 0 : 1 5 :
0 c : 1 8 : a3 : 2 f : 3 4 : 3 0 : 5 1 : e8 : 0 2 : 3 b : 8 c : ed : d4 : 9 5 : 9 8 :
7 3 : ab : e f : 6 9 : 5 7 : 4 d : c9 : 0 4 : 9 a : 1 8 : 8 2 : 1 e : 6 0 : 6 b : 0 d :
2
3. 0d : 6 1 : 1 8 : 9 4 : eb : 4 3 : 4 a : 5 9
prime1 :
0 0 : d5 : 4 6 : 7 f : 4 9 : 4 b : 5 e : 4 6 : f 2 : 9 f : 8 7 : e1 : 9 d : 0 f : 6 d :
4 f : 5 9 : 4 2 : 0 d : 8 b : d6 : e f : 7 f : 4 8 : 3 f : e4 : 1 0 : b5 : 5 e : dc :
ac : 7 5 : 7 d : d1 : e e : 9 7 : 1 1 : f 4 : b f : c5 : 7 6 : 0 2 : 0 3 : dd : 5 c :
0d : bd : 3 6 : 1 8 : be : 4 f : 1 5 : 2 d : 0 b : e5 : 7 c : 0 8 : c7 : 3 6 : 2 9 :
7 9 : 8 0 : bc : 5 b : 0 7
prime2 :
0 0 : d2 : a0 : 4 3 : 9 a : 3 1 : c c : 0 c : f c : 1 c : 1 9 : aa : 9 b : 4 3 : 6 9 :
7 2 : 9 9 : 8 4 : 0 8 : 1 a : 5 6 : 7 9 : 4 c : b4 : 0 5 : 0 3 : d f : 0 3 : 7 b : 2 d :
ae : 1 3 : e0 : 8 1 : ea : 9 9 : 9 2 : f d : e f : d9 : 8 a : 5 b : b5 : 2 1 : a6 :
ac : b8 : 4 d : e f : 0 7 : 3 5 : d f : 0 7 : f 2 : 5 4 : e c : 3 5 : 2 4 : 5 7 : e f :
8 9 : 4 3 : b4 : ed : bd
exponent1 :
0 0 : bd : ac : e5 : d5 : 1 c : 8 7 : 6 b : 1 7 : aa : 5 3 : a1 : 8 e : 1 a : 4 3 :
3 f : f 7 : 8 4 : e c : 2 1 : 3 a : f 5 : 6 2 : c0 : b1 : b9 : b6 : 3 6 : 6 7 : 7 8 :
6 0 : 9 4 : 5 9 : 6 2 : d4 : 0 b : 5 c : f 7 : cb : 7 9 : e4 : 9 a : a4 : 2 f : 4 1 :
0 8 : 2 3 : 0 7 : b2 : 7 7 : c6 : 4 3 : 7 1 : f d : 8 b : 8 9 : 8 5 : 1 1 : 0 e : 9 5 :
5 2 : 2 e : f 0 : d5 : 0 f
exponent2 :
0 4 : 1 a : a5 : 5 6 : 9 2 : d3 : d4 : 0 8 : f 1 : 8 f : 3 a : 7 8 : c e : 0 6 : 7 6 :
f a : 3 0 : cd : 6 b : 9 d : f 5 : bd : 1 d : e0 : d f : 2 3 : 7 0 : 5 0 : ed : 2 1 :
f 0 : 3 7 : 3 6 : b0 : d8 : 8 f : 3 9 : ad : 7 b : c2 : ab : 6 8 : cb : 2 0 : 1 1 :
4b : 8 2 : 1 1 : 3 f : 4 5 : b8 : 7 3 : d2 : 2 f : f f : 6 e : 4 5 : a8 : 0 4 : f d :
da : b8 : e2 : cd
coefficient :
2 3 : 1 0 : 5 3 : 8 3 : c c : aa : 4 3 : 2 d : c3 : 3 0 : 8 5 : b1 : 5 f : 1 9 : a8 :
b9 : a4 : 0 c : f 9 : f 5 : 6 e : 2 9 : c8 : 0 3 : 0 4 : 4 b : 6 0 : 5 7 : 2 c : 4 1 :
1 0 : ed : 8 1 : 3 8 : ba : a f : 2 7 : 3 3 : dc : f 9 : 3 5 : 8 4 : 2 5 : 7 3 : 0 5 :
f c : 8 c : 7 7 : c c : f 0 : aa : 9 c : 0 a : 9 9 : 1 e : 4 5 : a0 : e5 : e e : 2 4 :
4b : f e : 9 9 : 5 8
Les diff´rents ´l´ments de la cl´ sont affich´s en hexad´cimal (hormis l’exposant public). On peut distin-
e ee e e e
guer le modulus, l’exposant public (qui par d´faut est toujours 655371 ), l’exposant priv´, les nombres pre-
e e
miers facteurs du modulus, plus trois autres nombres qui servent ` optimiser l’algorithme de d´chiffrement.
a e
Exercice 1 : Donnez une explication du choix de la valeur 65537 pour exposant public par d´faut.
e
3.3 Chiffrement d’un fichier de cl´s RSA
e
Il n’est pas prudent de laisser une paire de cl´ en clair (surtout la partie priv´e). Avec la commande
e e
rsa, il est possible de chiffrer une paire de cl´s2 . Pour cela trois options sont possibles qui pr´cisent
e e
l’algorithme de chiffrement sym´trique ` utiliser : -des, -des3 et -idea.
e a
$ o p e n s s l r s a −i n maCle . pem −d e s 3 −out maCle . pem
w r i t i n g RSA key
Enter PEM p a s s p h r a s e :
V e r i f y i n g − Enter PEM p a s s p h r a s e :
Une phrase de passe est demand´e deux fois pour g´n´rer une cl´ sym´trique prot´geant l’acc`s ` la cl´.
e e e e e e e a e
Exercice 2 : Avec la commande cat observez le contenu du fichier maCle.pem. Utilisez ` nouveau
a
la commande rsa pour visualiser le contenu de la cl´.
e
1 openssl n’autorise que deux exposants publics : 65537 (valeur par d´faut) ou 3 obtenu avec ’option -3
e
2 Il
est possible de chiffrer le fichier lors de sa g´n´ration. Il suffit de mettre l’une des trois options -des, -des3, -idea
e e
dans la ligne de commande genrsa.
3
4. 3.4 Exportation de la partie publique
La partie publique d’une paire de cl´s RSA est publique, et ` ce titre peut ˆtre communiqu´e `
e a e e a
n’importe qui. Le fichier maCle.pem contient la partie priv´e de la cl´, et ne peut donc pas ˆtre communiqu´
e e e e
tel quel (mˆme s’il est chiffr´). Avec l’option -pubout on peut exporter la partie publique d’une cl´.
e e e
$ o p e n s s l r s a −i n maCle . pem −pubout −out maClePublique . pem
Exercice 3 :
Q 1 . Notez le contenu du fichier maClePublique.pem. Remarquez les marqueurs de d´but et de fin.
e
Q 2 . Avec la commande rsa visualisez la cl´ publique. Attention vous devez pr´ciser l’option -pubin,
e e
puisque seule la partie publique figure dans le fichier maClePublique.pem.
3.5 Chiffrement/d´chiffrement de donn´es avec RSA
e e
On peut chiffrer des donn´es avec une cl´ RSA. Pour cela on utilise la commande rsautl
e e
$ o p e n s s l r s a u t l −e n c r y p t −i n < f i c h i e r e n t r e e > −i n k e y <c l e > −out < f i c h i e r s o r t i e >
o`
u
– fichier entree est le fichier des donn´es ` chiffrer. Attention, le fichier des donn´es ` chiffrer ne doit
e a e a
pas avoir une taille excessive (ne doit pas d´passer 116 octets pour une cl´ de 1024 bits).
e e
– cle est le fichier contenant la cl´ RSA. Si ce fichier ne contient que la parte publique de la cl´, il
e e
faut rajouter l’option -pubin.
– fichier sortie est le fichier de donn´es chiffr´.
e e
Pour d´chiffrer on remplace l’option -encrypt par -decrypt. Le fichier contenant la cl´ doit obliga-
e e
toirement contenir la partie priv´e.
e
Exercice 4 : Chiffrez le fichier de votre choix avec le syst`me sym´trique de votre choix. Chiffrez la
e e
cl´ ou le mot de passe utilis´(e) avec la cl´ publique de votre destinataire (demandez-lui sa cl´ publique
e e e e
si vous ne l’avez pas). Envoyez-lui le mot de passe chiffr´ ainsi que le fichier chiffr´.
e e
Exercice 5 : Il s’agit de d´chiffrer le fichier cryptogram13. Pour cela vous devez r´cup´rer les fichiers
e e e
suivants (attention la plupart de ces fichiers sont des fichiers binaires)
– le fichier cryptogram13 (fichier binaire) a ´t´ obtenu en chiffrant un texte avec openssl et la
ee
commande enc. Le syst`me de chiffrement sym´trique utilis´ est BlowFish en mode CBC ;
e e e
– la cl´ BlowFish a ´t´ d´riv´e ` partir d’un mot de passe dont voici la version chiffr´e ;
e ee e e a e
– la cl´ priv´e RSA qui a servi ` chiffrer le mot de passe ;
e e a
– le mot de passe prot´geant la cl´ RSA, cod´ en base 64, est VVNUTC1GSUwtUEFD .
e e e
3.6 Signature de fichiers
Il n’est possible de signer que de petits documents. Pour signer un gros document on calcule d’abord
une empreinte de ce document. La commande dgst permet de le faire.
$ o p e n s s l d g s t <hachage> −out <empreinte > < f i c h i e r e n t r e e >
o` hachage est une fonction de hachage. Avec openssl, plusieurs fonctions de hachage sont propos´es
u e
dont
– MD5 (option -md5), qui calcule des empreintes de 128 bits,
– SHA1 (option -sha1), qui calcule des empreintes de 160 bits,
– RIPEMD160 (option -ripemd160), qui calcule des empreintes de 160 bits.
Signer un document revient ` signer son empreinte. Pour cela, on utilise l’option -sign de la commande
a
rsautl
$ o p e n s s l r s a u t l −s i g n −i n <empreinte > −i n k e y <c l e > −out <s i g n a t u r e >
et pour v´rifier la signature
e
4
5. $ o p e n s s l r s a u t l −v e r i f y −i n <s i g n a t u r e > −pubin −i n k e y <c l e >
−out <empreinte >
il reste ensuite ` v´rifier que l’empreinte ainsi produite est la mˆme que celle que l’on peut calculer.
a e e
L’option -pubin indique que la cl´ utilis´e pour la v´rification est la partie publique de la cl´ utilis´e
e e e e e
pour la signature.
Exercice 6 : Signez le fichier de votre choix, pui v´rifiez la signature.
e
Exercice 7 : Des deux fichiers suivants, lequel a bien ´t´ sign´ avec la partie priv´e de cette cle ?
ee e e
– fichier 1, signature 1
– fichier 2, signature 2
4 Certificats
Vous allez maintenant ´laborer un certificat pour votre cl´ publique. Puis, vous verrez comment utiliser
e e
les cl´s certifi´es pour signer et/ou chiffrer des courriers ´lectoniques.
e e e
4.1 G´n´ration de la paire de cl´s
e e e
Exercice 8 : G´n´rez votre paire de cl´s RSA d’une taille de 1024 bits, prot´g´e par un mot de passe
e e e e e
(cf g´n´ration d’une paire de cl´s). Dans la suite, on suppose nomm´ maCle.pem le fichier contenant votre
e e e e
paire de cl´s RSA. Ce fichier est prot´g´ par le mot de passe fourni lors de la g´n´ration.
e e e e e
Exercice 9 : Cr´ez un fichier ne contenant que la partie publique de votre cl´ RSA (cf Exportation
e e
de la cl´ publique). Dans la suite, on suppose ce fichier nomm´ maClePublique.pem.
e e
4.2 Cr´ation d’une requˆte de certificats
e e
Maintenant que vous disposez d’une cl´ RSA, vous allez ´tablir une requˆte pour obtenir un certificat.
e e e
Outre la cl´ publique du sujet, un certificat contient un certain nombre d’informations concernant
e
l’identit´ de son propri´taire :
e e
– Pays (C),
´
– Etat ou province (ST)
– Ville ou localit´ (L)
e
– Organisation (O)
– Unit´ (OU)
e
– Nom (CN)
– Email
Toutes ces informations et d’autres encore sont demand´es lors de la cr´ation de la requˆte. Un fichier
e e e
de configuration (req.cnf) peut-ˆtre d´fini qui propose les informations ` apporter dans le certificat avec
e e a
des valeurs par d´faut.
e
On ´tablit une requˆte avec la commande req de openssl.
e e
$ o p e n s s l r e q −c o n f i g r e q . c n f −new −key maCle . pem −out maRequete . pem
Le fichier produit maRequete.pem est aussi au format PEM.
$ c a t maRequete . pem
−−−−−BEGIN CERTIFICATE REQUEST −−−−−
MIIB/zCCAWgCAQAwgb4xCzAJBgNVBAYTAkZSMRIwEAYDVQQIEwlOb3JkICg1OSkx
GjAYBgNVBAcTEVZpbGxlbmV1dmUgZCdBc2NxMR4wHAYDVQQKExVVbml2ZXJzaXRl
IGRlIExpbGxlIDExGTAXBgNVBAsTEExpY2VuY2UgUHJvIERBMkkxGjAYBgNVBAMT
EUVyaWMgV2Vncnp5bm93c2tpMSgwJgYJKoZIhvcNAQkBFhlFcmljLldlZ3J6eW5v
d3NraUBsaWZsLmZyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCveVjLltev
TC5kSAiTYjHMVuAR80DHMLWCp3BOVZ49eXwraXxO7AfKWpA5g0wFZgZNERIfFYaC
nvaQDQA+9BRIfsSSr3oSw0My5SD6eg15v0VmJmvPd8LgBypJHbr6f5MXWqntvzp0
Qvg6ddeNpUIrqkkh4uDfHFDWqyrkQUCvKwIDAQABoAAwDQYJKoZIhvcNAQEEBQAD
5
6. gYEAHOwGNN6A8d4EhjfXCRvC2fhIjt7i6jxfkHKBkHpm2yNBBDHQwiv+O/Y0MeNh
I r a+y8KUMjeImsSiH4731sfgA6ycm+6JoDV7n6z8tzN5QMGsw7V3ErduskayKP4T
j a+BMImEcDwlr+KuRO704rGeiAG7pvtDGcDcj2Mex68ki94=
−−−−−END CERTIFICATE REQUEST −−−−−
On peut consulter les informations contenues dans la requˆte avec la commande
e
$ o p e n s s l r e q −c o n f i g r e q . c n f −i n maRequete . pem −t e x t −noout
C e r t i f i c a t e Request :
Data :
V e r s i o n : 0 ( 0 x0 )
S u b j e c t : C=FR, ST=Nord ( 5 9 ) , L=V i l l e n e u v e d ’ Ascq , O=U n i v e r s i t e de L i l l e 1 , OU=L i
S u b j e c t P u b l i c Key I n f o :
P u b l i c Key Algorithm : r s a E n c r y p t i o n
RSA P u b l i c Key : ( 1 0 2 4 b i t )
Modulus ( 1 0 2 4 b i t ) :
0 0 : a f : 7 9 : 5 8 : cb : 9 6 : d7 : a f : 4 c : 2 e : 6 4 : 4 8 : 0 8 : 9 3 : 6 2 :
3 1 : c c : 5 6 : e0 : 1 1 : f 3 : 4 0 : c7 : 3 0 : b5 : 8 2 : a7 : 7 0 : 4 e : 5 5 :
9 e : 3 d : 7 9 : 7 c : 2 b : 6 9 : 7 c : 4 e : e c : 0 7 : ca : 5 a : 9 0 : 3 9 : 8 3 :
4c :05:66:06:4 d :11:12:1 f :15:86:82:9 e : f6 :90:0 d :
0 0 : 3 e : f 4 : 1 4 : 4 8 : 7 e : c4 : 9 2 : a f : 7 a : 1 2 : c3 : 4 3 : 3 2 : e5 :
2 0 : f a : 7 a : 0 d : 7 9 : b f : 4 5 : 6 6 : 2 6 : 6 b : c f : 7 7 : c2 : e0 : 0 7 :
2 a : 4 9 : 1 d : ba : f a : 7 f : 9 3 : 1 7 : 5 a : a9 : ed : b f : 3 a : 7 4 : 4 2 :
f 8 : 3 a : 7 5 : d7 : 8 d : a5 : 4 2 : 2 b : aa : 4 9 : 2 1 : e2 : e0 : d f : 1 c :
5 0 : d6 : ab : 2 a : e4 : 4 1 : 4 0 : a f : 2 b
Exponent : 65537 ( 0 x10001 )
Attributes :
a0 : 0 0
S i g n a t u r e Algorithm : md5WithRSAEncryption
1 c : e c : 0 6 : 3 4 : de : 8 0 : f 1 : de : 0 4 : 8 6 : 3 7 : d7 : 0 9 : 1 b : c2 : d9 : f 8 : 4 8 :
8 e : de : e2 : ea : 3 c : 5 f : 9 0 : 7 2 : 8 1 : 9 0 : 7 a : 6 6 : db : 2 3 : 4 1 : 0 4 : 3 1 : d0 :
c2 : 2 b : f e : 3 b : f 6 : 3 4 : 3 1 : e3 : 6 1 : 2 2 : b6 : be : cb : c2 : 9 4 : 3 2 : 3 7 : 8 8 :
9 a : c4 : a2 : 1 f : 8 e : f 7 : d6 : c7 : e0 : 0 3 : ac : 9 c : 9 b : e e : 8 9 : a0 : 3 5 : 7 b :
9 f : ac : f c : b7 : 3 3 : 7 9 : 4 0 : c1 : ac : c3 : b5 : 7 7 : 1 2 : b7 : 6 e : b2 : 4 6 : b2 :
2 8 : f e : 1 3 : 8 d : a f : 8 1 : 3 0 : 8 9 : 8 4 : 7 0 : 3 c : 2 5 : a f : e2 : ae : 4 4 : e e : f 4 :
e2 : b1 : 9 e : 8 8 : 0 1 : bb : a6 : f b : 4 3 : 1 9 : c0 : dc : 8 f : 6 3 : 1 e : c7 : a f : 2 4 :
8b : de
Exercice 10 : Explliquez les diff´rents ´l´ments contenus dans cette requˆte. La cl´ priv´e du sujet
e ee e e e
y figure–t–elle ?
4.3 Demande de signature de certificat
Une fois que vous avez ´tabli une requete de certificat, il vous reste ` contacter une autorit´ de certi-
e a e
fication qui vous d´livrera un certificat sign´, apr`s avoir proc´d´ (normalement) ` quelques v´rifications
e e e e e a e
vous concernant.
L’autorit´ de certification P`re Ubu Vous jouerez dans ce TP le rˆle de l’autorit´ de certification.
e e o e
Pour cela il vous faut un certificat d’autorit´ de certification, ainsi qu’une paire de cl´s. Afin de ne pas
e e
multiplier les autorit´s, vous utilisereztous la tr`s notable autorit´ P`re Ubu dont vous trouverez ici le
e e e e
certificat et la paire de cl´s RSA.
e
Un certificat produit par openssl est un fichier au format PEM.
$ c a t u n C e r t i f . pem
−−−−−BEGIN CERTIFICATE−−−−−
....
−−−−−END CERTIFICATE−−−−−
6
7. Pour visualiser le contenu d’un certificat
$ o p e n s s l x509 −i n u n C e r t i f . pem −t e x t −noout
Exercice 11 : Apr`s avoir r´cup´r´ le certificat de l’autorit´, ainsi que sa paire de cl´s RSA, cherchez
e e ee e e
quelle est la date d’expiration du certificat et la taille de la cl´.
e
Cr´ation d’un certificat Pour cr´er et signer un certificat ` partir d’une requˆte maRequete.pem,
e e a e
l’autorit´ invoque la commande x509
e
$ o p e n s s l x509 −days 10
−C A s e r i a l PereUbu . s r l −CA P e r e U b u C e r t i f . pem −CAkey PereUbuCle . pem
−i n maRequete . pem −r e q −out monCertif . pem
dans laquelle PereUbu.srl est un fichier contenant le num´ro de s´rie du prochain certificat ` signer
e e a
(ce fichier est un fichier texte contenant une ligne donnant un nombre cod´ avec un nombre pair de chiffres
e
hexad´cimaux), et l’option -days d´termine la dur´e de validit´ du certificat (ici 10 jours).
e e e e
Exercice 12 : Cr´´z un certificat pour votre cl´ publique. (Lors de la signature du certificat, la
ee e
commande x509 invite l’autorit´ certifiante ` donner son mot de passe. Le mot de passe de P`re Ubu
e a e
ne devrait pas vous ˆtre inconnu, puisqu’il s’agit DU mot du P`re Ubu (celui prononc´ au tout d´but
e e e e
d’Ubu Roi). N´anmoins, le voici cod´ en base 64 bWVyZHJlCg== S’il le faut, utilisez la commande openssl
e e
base64 -d pour le d´coder.)
e
Puis contrˆlez le contenu du certificat obtenu avec les options appropri´es de la commande x509.
o e
V´rification de certificats On peut v´rifier la validit´ d’un certificat avec la commande verify. Pour
e e e
v´rifier la validit´ d’un certificat, il est n´cessaire de disposer du certificat de l’autorit´ qui l’a ´mis.
e e e e e
$ o p e n s s l v e r i f y −C A f i l e P e r e U b u C e r t i f . pem monCertif . pem
4.4 Signature et chiffrement de courriers ´lectroniques
e
Lorsque vous disposez d’une paire de cl´s publique/priv´e, et d’un certificat qui les accompagne, et
e e
qui atteste de votre adresse ´lectronique, il vous est possible, entre autres choses, de signer vos mails, et
e
de recevoir des mails chiffr´s de la part de vos correspondants qui disposent de votre certificat.
e
4.4.1 Avec openssl
Signature de courriers Vous disposez d’un certificat monCertif.pem, d’une cl´ priv´e maCle.pem
e e
et vous voulez envoyer un courrier sign´ dont le contenu est dans le fichier blabla.txt ` l’adresse
e a
haha@palotin.pl. En supposant que tous les fichiers se trouvent dans le r´pertoire courant, il suffit
e
d’invoquer la commande
$ o p e n s s l smime −s i g n −i n b l a b l a . t x t −t e x t
−s i g n e r monCertif . pem −i n k e y maCle . pem
−from moi@palotin . p l −t o haha@palotin . p l −s u b j e c t ” c o u r r i e r s i g n e ”
Il est bien videmment possible de rediriger la sortie de la comande pr´c´dente vers un fichier (avec
e e
l’option -out par exemple), ou vers la commande mail.
V´rification de courriers sign´s Pour v´rifier un courrier sign´, il faut disposer du certificat que
e e e e
l’´metteur a utilis´ pour signer, ainsi que celui de l’autorit´ ayant ´mis ce certificat. On invoque la
e e e e
commande
$ o p e n s s l smime − v e r i f y −i n c o u r r i e r . s i g n e
−s i g n e r s o n C e r t i f . pem
−C A f i l e P e r e U b u C e r t i f . pem
7
8. Chiffrement de courriers Pour envoyer un courrier chiffr´, par exemple avec du Triple-DES, ` un
e a
destinataire dont on dispose d’un certificat sonCertif.pem, il suffit d’invoquer la commande
$ o p e n s s l smime −e n c r y p t −i n b l a b l a . t x t −t e x t
−from moi@palotin . p l −t o haha@palotin . p l −s u b j e c t ” c o u r r i e r c h i f f r ´ ”
e
−d e s 3 s o n C e r t i f . pem
Il est bien videmment possible de rediriger la sortie de la comande pr´c´dente vers un fichier (avec
e e
l’option -out par exemple), ou vers la commande mail.
D´chiffrement de courriers Pour d´chiffrer un courrier chiffr´
e e e
$ o p e n s s l smime −d e c r y p t −i n c o u r r i e r . c h i f f r e −r e c i p s o n C e r t i f . pem −i n k e y maCle . pem
o` maCle.pem est ma cl´ priv´e RSA, et sonCertif.pem est le certificat de l’´metteur.
u e e e
Remarque Lorsqu’on chiffre un courrier ´lectronique, il faut s’assurer que le destinataire est en mesure
e
de le d´chiffrer, autrement dit que le logiciel du destinataire est en mesure de le faire.
e
4.4.2 Avec Mozilla
La premi`re chose ` faire pour pouvoir ´changer des courriers sign´s et/ou chiffr´s avec Mozilla
e a e e e
est d’importer votre certificat et votre cl´ priv´e que vous venez d’obtenir dans la base de donn´es de
e e e
certificats g´r´es par votre navigateur.
ee
La base de donn´es de certificats Vous pouvez consulter cette base de donn´es par le menu
e e
Edition/Preferences.
Vous pouvez alors consulter
– vos certificats (a priori aucun),
– ceux des personnes dont vous en avez obtenu un,
– ceux de serveurs WEB s´curis´s que vous avez eu l’occasion de rencontrer,
e e
– et enfin, ceux des autorit´s de certification que vous connaissez (il y en a plusieurs dizaines norma-
e
lement, mais cette liste ne contient pas le P`re Ubu)
e
Importation d’un certificat Pour importer votre certificat dans votre base de donn´es, il faut cr´er
e e
d’abord une enveloppe PKCS#12. Il s’agit d’une norme de fichier adopt´e pour ”ficeler” ensemble un ou
e
plusieurs certificats et cl´s.
e
Pour cr´er une enveloppe PKCS#12 contenant votre certificat, votre cl´ priv´e, et le certificat de
e e e
l’autorit´ ayant sign´ le votre, il suffit d’invoquer la commande
e e
$ o p e n s s l pkcs12 −e x p o r t −i n monCertif . pem
−i n k e y maCle . pem − c e r t f i l e P e r e U b u C e r t i f . pem
−name ”EW” −caname ” Pere Ubu” −out monEnveloppe . p12
Un mot de passe prot´geant cette enveloppe vous est demand´.
e e
Une fois cette enveloppe r´alis´e, il reste ` importer tout cela dans la base de donn´es de certificats
e e a e
de votre navigateur. Pour cela passez par le menu s´curit´. Un mot de passe vous sera demand´ pour la
e e e
base de donn´es, puis celui que vous avez utilis´ pour prot´ger l’enveloppe PKCS#12.
e e e
Cela r´alis´, vous devez voir maintenant votre certificat dans la liste des votres. Demandez ` le
e e a
visualiser, puis ` le v´rifier. Votre certificat n’est pas valide car ...
a e
Acceptation de l’autorit´ P`re Ubu
e e ... l’autorit´ P`re Ubu n’est pas accept´e par votre navigateur.
e e e
Pour que P`re Ubu soit accept´ vous devez ´diter son certificat (depuis la liste des certificats d’autorit´s
e e e e
signataires) et cocher la case concernant l’acceptation de cette autorit´ pour les emails.
e
V´rifiez maintenant votre certificat.
e
V´rifiez aussi la signature du mail de mercredi dernier.
e
8
9. Envoyer un courrier sign´ Pour envoyer un courrier sign´, il suffit de cocher la cas ad´quate qui
e e e
apparaˆ lorsqu’on coche la case s´curit´ (en bas ` gauche) de la fenˆtre de composition du mail.
ıt e e a e
Envoyer un mail chiffr´ Pour envoyer un courrier chiffr´, il suffit de faire la mˆme chose. ATTEN-
e e e
TION, vous devez poss´der un certificat valide de votre destinataire.
e
9