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