Exercices

Transcription

Exercices
Blanche Corentin
Degueldre Kevin
Louppe Simon
Catherine Arnaud
Lobet Mathieu
Exercices
Éléments de cryptographie
Les réponses aux questions seront consignées dans un document texte (MS Word, OpenOce...) qui sera fourni
avec les éventuels fichiers annexes dans une seule archive zip, envoyée par email. Le document mentionnera
clairement les noms des membres du groupe. L'archive zip devra être signée avec le résultat de la question 2.d,
et les éléments et instructions nécessaires a la vérification de la signature devront être fournis.
1.
Le format dans lequel vous avez reçu ce questionnaire peut-il être considéré comme le
résultat d'une opération cryptographie, et si oui, laquelle? Justifiez votre réponse en quelques
lignes.
En se basant sur la définition de ce qu’est la cryptographie, l’encodage en base64 ne peut être considéré
comme une opération de cryptographie; celui-ci ne respectant aucun des fondements de cette définition. Son
principe réside dans la simple représentation en 6 bits au lieu de 8 des données encodées. Elle peuvent donc
sans difficultés être traduites dans un sens comme dans l’autre. Cette représentation ne peut être utilisée que
dans le cadre d’échange d’information, et non assurer une protection des données.
2.
A l'aide de l'outil openssl (https://www.openssl.org), réalisez les opérations suivantes, en
indiquant de manière complète les instructions utilisées et en les commentant si nécessaire
2.1.
Générez une paire de clés RSA de 2048 bits, Affichez de manière lisible la clé publique.
Ensuite, utilisez les clés pour chiffrer et déchiffrer un fichier de votre choix
La génération d’une paire de clés s'effectue via la commande suivante. Le résultat est un fichier au format PEM
(Privacy Enhanced Mail) qui contient la clé privée RSA en clair.
$ openssl genrsa -out MaCle.pem 2048
La seconde étape consiste à chiffrer la clé (Algorithme 3DES dans notre cas) via la commande:
$ openssl rsa -in MaCle.pem -des3 -out MaCle.pem
Enfin, il ne reste plus qu’a exporter la clé publique :
$ openssl rsa -in MaCle.pem -pubout -out MaClePublique.pem
L’étape de chiffrement de la clé privée ne modifie pas la clé publique générée au final, ces deux clés restent
identiques après l’opération.
1
Chiffrement avec la clé publique:
$ openssl rsautl -encrypt -in Message.txt -out Secret.txt -pubin -inkey MaClePublique.pem
Déchiffrement avec la clé privée:
$ openssl rsautl -decrypt -in Secret.txt -out Resultat.txt -inkey MaCle.pem
Message.txt
Secret.txt
Resultat.txt
Vive la crypto!
Ũ|²EOeÖÙ[hæmqçº.​
f)±y·´​
Ä3ãÔLôNFÒ​
#~è«iÿÉïå:RfZ
ÝÌYå½ÿ​
ëʵ6ÀP¹váPøfÃ​
¼í«^#ÁÔd@+b85¸ÎsFb@​
ý·Z°​
'L©¬ßzP¹àô|​
î^zµ=kh;ãRk*ÓâØPÃJ$Ú£¹​
ÃëºVñSÏÆÇ~​
«​
)​
k
3Y·ûò14Óó2Ð^ºí$Éæ​
rkÑ​
4Ø@7aÑ3​
±MòP®eý3​
,S​
ÍF,§íå¥W
Vive la crypto!
2.2.
Comparez de manière statistiquement crédible les performances des algorithmes DES,
AES et RSA, et commentez les résultats.
OpenSSL dispose d’un outil intégré pour faire des essais de performance, le programme va essayer pour
chaque fonction ou algorithme de générer/chiffrer le maximum de hash/de clé en 3 secondes.
$ openssl speed
À la fin du speedtest, OpenSSL génère un rapport avec le nombre d’opérations réalisées par seconde pour
chaque algorithme et en fonction de différentes tailles de paquets en entrée (voir le document joint).
2
Voici un graphe qui reprend les performances calculées pour DES, 3DES, AES et RSA sur base des résultats :
En abscisse : la taille des paquets utilisés en entrée (en bytes) / En ordonnée : le nombre d’opérations effectuées en une seconde.
On voit nettement une tendance se dessiner :
➔ Les algorithmes DES, AES-128 et AES-256 sont très rapides et permettent un grand nombre
d’opérations par seconde (~50000environs).
➔ AES-192, légèrement derrière, reste proche des valeurs de AES-128 et AES-256.
➔ 3DES est nettement moins performant (~10000opérations/s), en effet sont fonctionnement est une
simple opération DES effectuée 3 fois.
➔ Pour RSA, l’analyse est légèrement différente. On observe que les clés de 512 bits permettent de ne
crypter que 1800 occurrences par seconde, ce nombre descend à 370 opérations/seconde pour des
clés de 1024 bits.
2.3.
Validez l'empreinte numérique du fichier pdfde ce questionnaire
$ openssl sha1 exercices.pdf
SHA1(exercices.pdf)= e0313ab633296988dab1db4c65551371c4029006
l’empreinte est correcte:
3
2.4.
Mettez en place votre propre autorité de certification, qui devra produire au moins un
certificat client. Transmettez toutes les informations permettant de vérifier la bonne
réalisation de cet exercice sans divulguer d'information confidentielles.
Pour créer une autorité de certification personnelle, plusieurs étapes sont nécessaires. Tout d’abord, nous
mettons en place notre environnement. Nous créons donc les dossiers qui accueilleront les clés
privées/publiques, les certificats ainsi que les signatures:
.
└── ca
├── certs
├── conf
│
├── ca_config.cnf
├── index
├── private
└── serial
$ mkdir /home/ca
$ cd /home/ca
$ mkdir certs conf private
$ touch serial index
$ nano conf/ca_config.cnf
Le fichier ca_config.txtest créé et édité avec le contenu suivant. Ce fichier servira de template pour la
création des certificats par après:
[ ca ]
default_ca
= CA_default
[ CA_default ]
dir
= /home/ca
serial
= $dir/serial
database
= $dir/index
new_certs_dir
= $dir/certs
certificate
= $dir/certs/cacert.pem
private_key
= $dir/private/cakey.pem
default_days = 3650
default_md
= sha256
preserve
= no
email_in_dn
= no
nameopt
= default_ca
certopt
= default_ca
policy
= policy_match
[ policy_match ]
countryName
= match
stateOrProvinceName = match
organizationName
= match
organizationalUnitName= optional
commonName
= supplied
emailAddress
= optional
[ req ]
default_bits
default_keyfile
default_md
string_mask
distinguished_name
req_extensions
= 2048
# Size of keys
= key.pem
# name of generated keys
= sha256
# message digest algorithm
= nombstr
# permitted characters
= req_distinguished_name
= v3_req
[ req_distinguished_name ]
0.organizationName
= Organization Name (company)
organizationalUnitName= Organizational Unit Name (department, division)
emailAddress
= Email Address
emailAddress_max
= 40
localityName
= Locality Name (city, district)
stateOrProvinceName = State or Province Name (full name)
countryName
= Country Name (2 letter code)
countryName_min
=2
countryName_max
=2
commonName
= Common Name (hostname, IP, or your name)
commonName_max
= 64
4
# Default values for the above, for consistency and less typing.
# Variable name
Value
#----------------------------------------------------0.organizationName_default
= Henallux
organizationalUnitName_default= IT Department
localityName_default
= Namur
stateOrProvinceName_default
= Namur
countryName_default
= BE
emailAddress_default
= [email protected]
[ v3_ca ]
basicConstraints
= CA:TRUE
subjectKeyIdentifier
= hash
authorityKeyIdentifier= keyid:always,issuer:always
[ v3_req ]
basicConstraints
= CA:FALSE
subjectKeyIdentifier = hash
À l’aide de la commande suivante, nous générons la clé et le certificat du CA. Deux fichiers résulteront de cette
commande, à savoir une clé privée (cakey.pem) et un "root CA certificate" (cacert.pem):
$ openssl req -new -x509 -extensions v3_ca -keyout /home/ca/private/cakey.pem -out cacert.pem -days
3650 -config /home/ca/conf/ca_config.cnf
Notre autorité de certification étant désormais établie, il faut créer les certificats qui seront utilisés pour notre
serveur HTTPS. Deux étapes sont nécessaires, à savoir la création de la clé privée (et son CSR) ainsi que la
signature du certificat. Au besoin déplacer le fichier cacert.pemdans le dossier certs.
$ openssl req -new -nodes -out req.pem -config /home/ca/conf/ca_config.cnf
$ openssl ca -out cert.pem -config /home/ca/conf/ca_config.cnf -infiles req.pem
Cette configuration a été mise en place sur un serveur distant joignable à l’adresse henallux.cloudapp.net.
Cependant, pour éviter toute alerte de sécurité dans votre navigateur, il faut lui ajouter notre autorité de
certification. La méthode ci-après permet de modifier vos paramètres Firefox:
Paramètres > Avancé > Certificats > Afficher les certificats > Importer...
Importer ensuite, sous forme de fichier, le contenu repris en annexe.
Les résultats sont disponibles en annexe de ce document.
5
Annexe 1
Ajouter l’autorité de certification dans votre navigateur par défaut. Ces données sont extraites du fichier
cacert.pem. Veillez toutefois à respecter la syntaxe du contenu de ce fichier.
-----BEGIN CERTIFICATE----MIIEszCCA5ugAwIBAgIJALXNp1FulGaeMA0GCSqGSIb3DQEBCwUAMIGXMREwDwYD
VQQKEwhIZW5hbGx1eDEWMBQGA1UECxMNSVQgRGVwYXJ0bWVudDEiMCAGCSqGSIb3
DQEJARYTcG9ydGFpbEBoZW5hbGx1eC5iZTEOMAwGA1UEBxMFTmFtdXIxDjAMBgNV
BAgTBU5hbXVyMQswCQYDVQQGEwJCRTEZMBcGA1UEAxMQSGVuYWxsdXggUm9vdCBD
QTAeFw0xNDEwMTUxNjU1MzNaFw0yNDEwMTIxNjU1MzNaMIGXMREwDwYDVQQKEwhI
ZW5hbGx1eDEWMBQGA1UECxMNSVQgRGVwYXJ0bWVudDEiMCAGCSqGSIb3DQEJARYT
cG9ydGFpbEBoZW5hbGx1eC5iZTEOMAwGA1UEBxMFTmFtdXIxDjAMBgNVBAgTBU5h
bXVyMQswCQYDVQQGEwJCRTEZMBcGA1UEAxMQSGVuYWxsdXggUm9vdCBDQTCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMMyDtIntV/iZtLjUGRn5ELz3Q+S
Ee2FZRZZp7MJxvfrEqoz0Q6MguEfVVM6Ood0wYc3RdPLydUJoQ1/T5yEWc6xtehx
rKJsqsP6tqz4Fog8eCMORNBQWOaYV5t2hHz2UDEHT8ObUpAZ9yXbT5/O5eDviujf
O/CgyoTSJBOHHjV/5zxq2oDXqcGLCOl+CYKpQ5625R3f40n6UM8Q+xIP+hpOxn4B
Do4r1mgePQL6OqlZZ0TwGcjjrVGmNyMbQmK5oKfRUmxfUR4UxeVhXiSkC4Zs1RR6
Vy+zJQvuCKtoMYr7k/5CBVZuqul9a6UyNGhiJXrbraScHETCu5OOc7wHrVsCAwEA
AaOB/zCB/DAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBT+r+MeooVtmz+He+ZEfRYl
+V0GRDCBzAYDVR0jBIHEMIHBgBT+r+MeooVtmz+He+ZEfRYl+V0GRKGBnaSBmjCB
lzERMA8GA1UEChMISGVuYWxsdXgxFjAUBgNVBAsTDUlUIERlcGFydG1lbnQxIjAg
BgkqhkiG9w0BCQEWE3BvcnRhaWxAaGVuYWxsdXguYmUxDjAMBgNVBAcTBU5hbXVy
MQ4wDAYDVQQIEwVOYW11cjELMAkGA1UEBhMCQkUxGTAXBgNVBAMTEEhlbmFsbHV4
IFJvb3QgQ0GCCQC1zadRbpRmnjANBgkqhkiG9w0BAQsFAAOCAQEAPFcrUUUsh7Ke
fm0eKllStrTpoyDC59Wq4+b16iMSG/JiIZBzJt9kVI/LEvUZk/0sbA+g7OAShLM7
fsFRRuH0RS3FKHD9qjkXl841Gp/wokHXBuJNgCxhz4Y0PKYbwAul7EUopsHHHy4B
nbdUAoIWEf0vc6oDrjtYBFGbJqgSAZerL7m6vc0/FSscTO1P9RL7Oa9KMaNI2lFR
Vmy54ytCXjaFvnySQddS7Nh+Tvcmhs36X6VfMeSgclknUrSgyTzxU4Bqo1p/W9mt
jf1Mamu48KeUDyhJ+i/9tzBJJHrwXoyxjy7TYoXDf9pu+SPMqWRLLNh4cLyfOTKF
43aVl20dyA==
-----END CERTIFICATE-----
6
Annexe 2 - Résultats
7
8