Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HTTPS & Certificats

HTTPS & Certificats

Avatar for Zakia Ajouaoui

Zakia Ajouaoui

May 25, 2023
Tweet

More Decks by Zakia Ajouaoui

Other Decks in Technology

Transcript

  1. INTRODUCTION 1990s 1994 - 1996 1999 Secure Socket Layer Internet

    Engineering Task Force SSL 3.0 Transport Layer Security  Sécurité de la couche transport https://www.ietf.org/rfc/rfc2246.txt
  2. Couche OSI Protocoles Application HTTP SMTP IMAP LDAP Présentation Session

    RPC TLS Transport TCP UDP Réseau IP IPSec ARP Liaison Ethernet Wi-Fi Physique NRZ CSMA/CD INTRODUCTION  Sécurité cryptographique  Confidentialité  Authenticité  Intégrité  Non répudiation  Interopérabilité  Extensibilité  Coût acceptable  Coût de calcul  Mise en cache de session
  3. NOTION DE COMPLEXITÉ - Complexité calculatoire : - Ressources nécessaire

    à la résolution d’un problème - Principale ressource = temps - Dépendante de plusieurs facteurs (parallélisation, puissance de calcul du processeur…) CRYPTOGRAPHIE - TLS - CERTIFICATS
  4. SYMÉTRIQUE CHIFFREMENT DECHIFFREMENT Message clair 1 1 1 0 1

    0 0 1 Clé 0 1 0 0 1 1 0 0 Message chiffré 1 0 1 0 0 1 0 1 Message chiffré 1 0 1 0 0 1 0 1 Clé 0 1 0 0 1 1 0 0 Message clair 1 1 1 0 1 0 0 1 K privée K privée CRYPTOGRAPHIE - TLS - CERTIFICATS
  5. Chiffre de Vernam : 1915 - Codage théoriquement parfait selon

    la définition de Shannon - Messages clair M, Message chiffré C - Clé secrète K aléatoire à usage unique - Taille de K >= Taille de C - La connaissance du chiffré ne fournit aucune information sur le clair - Tous les messages clairs de la même taille sont équiprobables SYMÉTRIQUE À FLOT CRYPTOGRAPHIE - TLS - CERTIFICATS
  6. SYMÉTRIQUE À FLOT A flot Petits blocs de données (ex

    : 1 bit, 1 octet) Clé différente pour chaque bloc  Générateur de flux de bits pseudo-aléatoire K  k1 …kn Temps réel (Communication téléphonique, Bluetooth…) A5/1; A5/2 utilisé pour GSM  Cassé K utilisée plusieurs fois + nunique  sécurité plus faible http://madci.com/symetriqueflux CRYPTOGRAPHIE - TLS - CERTIFICATS
  7. SYMÉTRIQUE À FLOT VS PAR BLOCS A flot Par blocs

    Petits blocs de données (ex : 1 bit, 1 octet) Gros blocs de données (ex : 128 bits) Clé différente pour chaque bloc  Générateur de flux de bits pseudo-aléatoire K  k1 …kn K utilisée plusieurs fois + nunique  sécurité plus faible Clé K unique pour tous les blocs Temps réel (Communication téléphonique, Bluetooth…) A5/1; A5/2 utilisé pour GSM  Cassé Plus largement utilisé, moins contraignant DES - Blocs de 64 bits, Clé de 56 bits - Cassé en 26h en 2012 Niveau de sécurité basé sur le temps nécessaire pour essayer toutes les clés possibles  Complexité linéaire - Taille de clé recommandée : 256 bits - 2256 clés possibles, soit ≈ 1.16 x 1077 Nb atomes dans la Galaxie estimé à 1068 CRYPTOGRAPHIE - TLS - CERTIFICATS
  8. MODES CRYPTOGRAPHIQUES - Algorithme combiné à une série d’opérations dans

    l’objectif d’améliorer la sécurité - Exemple de Cipher Bloc Chaining (CBC) : - Critères de sécurité (ex : facteur aléatoire ?) et d’efficacité (ex : parallélisable ?) https://fr.wikipedia.org/wiki/Mode_d%27op%C3%A9ration_(cryptographie) CRYPTOGRAPHIE - TLS - CERTIFICATS
  9. AES - ADVANCED ENCRYPTION STANDARD - 1997 : Appel du

    National Institute of Standards and Technology (NIST) - Créé par Joan Daemen et Vincent Rijmen - 2000 : publication par le NIST dans la norme américaine FIPS PUB 197 - 2002 : Norme ISO/CEI 18033-3 - 2003 : Utilisé pour les systèmes de sécurité nationaux, ouvert et approuvé par la NSA - Expansion dans le secteur privé - Haut niveau de confiance CRYPTOGRAPHIE - TLS - CERTIFICATS
  10. AES - ADVANCED ENCRYPTION STANDARD Clé secrète : 128, 192,

    ou 256 bits Blocs de données : 128 bits (16 octets) Tour : 1. SubBytes Permutation des octets selon une table préalablement définie 2. The ShiftRows Rotation des lignes (incrément en fonction du numéro de la ligne) 4. MixColumns Transformation linéaire sur la matrice 5. AddRoundKey XOR entre la matrice et une autre matrice => matrice intermédiaire Clé de 128 bits : 10 tours 256bits : 14 tours https://en.wikipedia.org/wiki/Advanced_Encryption_Standard CRYPTOGRAPHIE - TLS - CERTIFICATS
  11. AES - ADVANCED ENCRYPTION STANDARD Clé secrète : 128, 192,

    ou 256 bits Blocs de données : 128 bits (16 octets) Tour : 1. SubBytes Permutation des octets selon une table préalablement définie 2. The ShiftRows Rotation des lignes (incrément en fonction du numéro de la ligne) 4. MixColumns Transformation linéaire sur la matrice 5. AddRoundKey XOR entre la matrice et une autre matrice => matrice intermédiaire Clé de 128 bits : 10 tours 256bits : 14 tours https://en.wikipedia.org/wiki/Advanced_Encryption_Standard CRYPTOGRAPHIE - TLS - CERTIFICATS
  12. AES - ADVANCED ENCRYPTION STANDARD Clé secrète : 128, 192,

    ou 256 bits Blocs de données : 128 bits (16 octets) Tour : 1. SubBytes Permutation des octets selon une table préalablement définie 2. The ShiftRows Rotation des lignes (incrément en fonction du numéro de la ligne) 4. MixColumns Transformation linéaire sur la matrice 5. AddRoundKey XOR entre la matrice et une autre matrice => matrice intermédiaire Clé de 128 bits : 10 tours 256bits : 14 tours https://en.wikipedia.org/wiki/Advanced_Encryption_Standard CRYPTOGRAPHIE - TLS - CERTIFICATS
  13. AES - ADVANCED ENCRYPTION STANDARD Clé secrète : 128, 192,

    ou 256 bits Blocs de données : 128 bits (16 octets) Tour : 1. SubBytes Permutation des octets selon une table préalablement définie 2. The ShiftRows Rotation des lignes (incrément en fonction du numéro de la ligne) 4. MixColumns Transformation linéaire sur la matrice 5. AddRoundKey XOR entre la matrice et une autre matrice définie préalablement => matrice intermédiaire Clé de 128 bits : 10 tours 256 bits : 14 tours https://en.wikipedia.org/wiki/Advanced_Encryption_Standard CRYPTOGRAPHIE - TLS - CERTIFICATS
  14. CHIFFREMENT ASYMÉTRIQUE CHIFFREMENT DECHIFFREMENT CHIFFREMENT DECHIFFREMENT K1 privée K1 privée

    K2 publique K2 publique  Authenticité  Confidentialité CRYPTOGRAPHIE - TLS - CERTIFICATS
  15. RSA - RIVEST, SHAMIR, AND ADLEMAN - Publié en 1977

    - Basé sur le principe : - Multiplication de grands nombres facile - Factorisation difficile (complexité exponentielle, pas d’algorithme polynomial connu à ce jour) Dernier record de factorisation en 2010 : - Clé de 768 bits - Parallélisation du calcul : - 1700 cœurs pendant 1 an - 64 milliards de factorisations successives - 5 Téraoctets d’espace disque Recommandations actuelles : clé d’au moins 2048 bits CRYPTOGRAPHIE - TLS - CERTIFICATS
  16. RSA - RIVEST, SHAMIR, AND ADLEMAN - Clé publique :

    n = pq  module publique e  exposant publique - Clé secrète : n = pq, p et q premiers d = e-1 mod phi(n) telle que : - phi (n) est la quantité de nombres premiers avec n inférieurs à n = (q -1)(p-1) - e premier avec phi(n) Chiffrement Déchiffrement Chiffré = Messagee mod n Message = Chiffréd mod n CRYPTOGRAPHIE - TLS - CERTIFICATS
  17. RSA - RIVEST, SHAMIR, AND ADLEMAN Chiffrement Déchiffrement n =

    pq = 3x11 = 33 phi(n) = (3 -1)(11-1) = 20 e = 7, premier avec 20 n = 33 d = e-1 mod phi(n) = (1/7) mod 20 = 3 Message = 2 Chiffré = Messagee mod n = 27 mod 33 = 29 Chiffré = 29 Message = Chiffréd mod n = 293 mod 33 = 2 CRYPTOGRAPHIE - TLS - CERTIFICATS
  18. SIGNATURE ET FONCTION DE HACHAGE Algorithme de signature Fonction de

    hachage Authenticité et Non répudiation Intégrité Ex : ECDSA ("Elliptic Curve Digital Signature Algorithm") => Repose sur la difficulté de calculer le logarithme discret d’un grand nombre Ex : SHA-256 (Secure Hashing Algorithm)  Fonction à sens unique  Permet de calculer l’empreinte (HASH) CRYPTOGRAPHIE - TLS - CERTIFICATS
  19. AES x RSA 1. Phase de négociation : Authentification :

    Chiffrement (nombre aléatoire n, Ka’ privée) Authentification : Chiffrement (n, Kb’ privée) Echange de la clé privée partagé 2. Echange des données 3. Séquence de terminaison (Ka publique, Ka’ privée) (Kb publique, Kb’ privée) Ka publique Kb publique CRYPTOGRAPHIE - TLS - CERTIFICATS Alice Bob
  20. TLS

  21. TLS Handshake protocol: ClientHello Version: TLS 1.2 Random Client time:

    Oct 22, 2050 02:43:46 GMT Random bytes: b76b0e61829557eb4c611adfd2d36eb232dc1332fe29802e321ee871 Session ID: (empty) Cipher Suites Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA Suite: TLS_RSA_WITH_AES_128_CBC_SHA Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA Suite: TLS_RSA_WITH_RC4_128_SHA Compression methods Method: null Extensions Extension: server_name Hostname: wikipedia.org Extension: renegotiation_info Extension: elliptic_curves Named curve: secp256r1 Named curve: secp384r1 Extension: signature_algorithms Algorithm: sha1/rsa Algorithm: sha256/rsa Algorithm: sha1/ecdsa Algorithm: sha256/ecdsa
  22. ECHANGE DE LA PREMASTER KEY - Algorithme de Diffie-Hellman -

    Confidentialité persistante (PFS : Perfect Forward Secrecy)  Découverte des clés privées ne compromet pas le communications passées  Valeurs finales non stockées https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_ke y_exchange#/media/File:Diffie-Hellman_Key_Exchange.svg CRYPTOGRAPHIE - TLS - CERTIFICATS
  23. EVOLUTION DU PROTOCOLE Version Date de publication Dépréciation SSL 1.0

    -- -- SSl 2.0 1995 2011 SSl 3.0 1996 2015 TLS 1.0 1999 2020 Evolution des suites cryptographiques TLS 1.1 2006 2020 Amélioration du vecteur d’initialisation (mode opératoire) TLS 1.2 2008 Evolution des suites cryptographiques TLS 1.3 2018 Simplification du handshake, amélioration des performances CRYPTOGRAPHIE - TLS - CERTIFICATS
  24. LA NORME X.509 - Norme spécifiant le format des certificats

    - 1988 : Union internationale des télécommunications - Système hiérarchique d’autorités de certifications - Liaison de la clé à un nom distinctif (DN) - Certificat racine : clé publique de confiance auto-signée - Présents au niveau du client (ex : navigateur) - Lors d’une requête vers un système tierce T - Certificat de T doit être émis par un autorité de confiance CRYPTOGRAPHIE - TLS - CERTIFICATS
  25. LE FORMAT X.509 Version de la norme Numéro de série

    Algorithme de signature du certificat Délivreur (autorité de certification) Dates limites de validité Exploiteur du certificat Clé publique : Algorithme + clé (n, e) [ Identifiant unique du signataire Identifiant unique du détenteur Extensions ] Signature des champs précédant par l’autorité de certification Certificate: Data: Version: 3 (0x2) Serial Number: 28:ee:01:25:3f:0e:d9:40:08:00:00:00:00:19:0d:6a Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, O=Google Trust Services, CN=GTS CA 1O1 Validity Not Before: Oct 10 20:53:15 2019 GMT Not After : Jan 2 20:53:15 2020 GMT Subject: C=US, ST=California, L=Mountain View, O=Google LLC, CN=www.google.com Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:ca:6c:fd:f8:d3:b6:bb:a3:28:5f:0f:59:9a:18: d2:3e:44:85:e7:d6:73:9f:e8:97:0c:b1:7c:35:f1: f6:92:27:1c:8a:b8:32:7f:a8:2c:71:ea:5e:ef:a5: 49:71:bf:72:6d:a0:bf:9b:c4:36:1d:d7:e2:2e:bc: 1c:bd:ba:2a:91:19:5f:08:6a:e8:f7:1f:61:db:85: 7f:4c:f1:46:e2:83:df:12:51:39:56:d3:02:1e:7a: 4f:a8:2f:f2:ea:29:6b:d5:32:88:e9:a3:58:bd:7e: ca:83:6d:21:40:fc:7a:a9:97:d0:6b:fc:27:c0:82: fd:da:a5:96:c6:bb:53:fb:c5:8b:d8:fd:46:95:98: 7e:3c:b5:5a:eb:0e:e9:24:24:8a:44:05:bd:e2:0e: e6:3c:fb:b7:9f:f9:d1:67:56:40:0b:e7:63:64:71: 02:76:cd:f0:84:09:ca:91:74:7a:57:8d:0f:a7:70: ea:7a:72:ea:a4:7a:2a:40:94:44:4b:81:07:fd:1d: be:2d:eb:da:5f:71:a8:a4:23:46:ad:53:89:83:df: 96:d7:e5:54:98:b5:13:0f:a3:44:37:84:8e:f0:89: 8a:8e:0b:b1:e3:41:c2:9f:de:04:1f:d9:10:db:83: 33:0d:86:26:fa:96:7a:ac:54:62:9d:48:7c:0d:6a: c0:1d Exponent: 65537 (0x10001) CRYPTOGRAPHIE - TLS - CERTIFICATS
  26. openssl s_client -connect www.google.com:443 CONNECTED(000001BC) --- Certificate chain 0 s:/C=US/ST=California/L=Mountain

    View/O=Google LLC/CN=www.google.com i:/C=US/O=Google Trust Services/CN=GTS CA 1O1 1 s:/C=US/O=Google Trust Services/CN=GTS CA 1O1 i:/OU=GlobalSign Root CA - R2/O=GlobalSign/CN=GlobalSign --- Server certificate -----BEGIN CERTIFICATE----- MIIFijCCBHKgAwIBAgIQTtXrCCUfa/kIAAAAABfHmzANBgkqhkiG9w0BAQsFADBC MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVR29vZ2xlIFRydXN0IFNlcnZpY2VzMRMw EQYDVQQDEwpHVFMgQ0EgMU8xMB4XDTE5MTAwMzE3MTM1MVoXDTE5MTIyNjE3MTM1 MVowaDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcT DU1vdW50YWluIFZpZXcxEzARBgNVBAoTCkdvb2dsZSBMTEMxFzAVBgNVBAMTDnd3 dy5nb29nbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlzR4 […] jm2o02KUY/p+Nm+laPuwhvTQuKMWxulKHl+RHf5SqQIhAO4SizHQuHolW6jRPZr2 K8bX5Ec1qjNgnsBIS1ydlgBtAHYAdH7agzGtMxCRIZzOJU9CcMK//V5CIAjGNzV5 5hB7zFYAAAFtktQFfwAABAMARzBFAiEAmq4mJWO/GBzHrRTT3OXxEEOTEmFmQ9Y/ zehfDGQuo70CIB0fjbv97ZcQDDva7rM5XuXMFRziwQJY+UdcboeWadiHMA0GCSqG SIb3DQEBCwUAA4IBAQBKdS8NtOSbrZY//355/mA6cWrSoVekJ0VJGTiHXmQKU7/P PU6obT+i56ocfBoiiy7qG9SSko8e3vUw9Rsf4uKtoKLmKI/5vhiN/ivkiYe0107K KFJ2QrWTjcddz/zMlHAuPTJt0AOD0Rv8CZ4ViFIiR/XUCXwarq7KelBp+SZLIq1Q PWWhnpRn2FF535kyZs++qLVvonPQvlLB/L4NJ4z050PsRgUx2dk75VHGzBEwakka KA3Wb17SjCz64MJdpoAOexOfpMs/KhfkxIk6oMVGtMXffbyv6pvMeZbGrSbvcPsZ TQVsnUMcao5zG1oY1oaWSwkFpKJ7HekVhrRk9Mzr -----END CERTIFICATE----- CRYPTOGRAPHIE - TLS - CERTIFICATS
  27. CHAINES DE CERTIFICATIONS --- Certificate chain 0 s:/C=US/ST=California/L=Mountain View/O=Google LLC/CN=www.google.com

    i:/C=US/O=Google Trust Services/CN=GTS CA 1O1 1 s:/C=US/O=Google Trust Services/CN=GTS CA 1O1 i:/OU=GlobalSign Root CA - R2/O=GlobalSign/CN=GlobalSign --- https://en.wikipedia.org/wiki/Chain_of_trust#/media/File:Chain_of_trust.svg CRYPTOGRAPHIE - TLS - CERTIFICATS
  28. REPRÉSENTATIONS COMMUNES PEM : .pem, .crt, .cer, .key - Certificat

    en Base64 encadré par "-----BEGIN CERTIFICATE-----" et "-----END CERTIFICATE-----"  Apache, serverurs sous Unis/Linux OS DER : .cer, .der - Certificat et clé privée en binaire  Plateformes java P7B/PKCS#7 : .p7b, .p7c - Contient plusieurs certificats Base64 ASCII PFX/P12/PKCS#12 : .pfx, .p12 - Certificat et clé privée en binaire  Windows https://www.sslmarket.fr/ssl/help-la-difference-entre-certificats/ CRYPTOGRAPHIE - TLS - CERTIFICATS
  29. REPRÉSENTATIONS COMMUNES JKS : spécifique à java Client Truststore.jks -

    Permet d’identifier les autres - Certificats Serveur Keystore.jks - Permet de s’identifier - Certificats, clés publiques, ou secrets  Utilisation très large CRYPTOGRAPHIE - TLS - CERTIFICATS
  30. ET DEMAIN? - Factorisation de grands nombres entiers plus facile

    avec un ordinateur quantique - Superposition des états : n qubits  2n valeurs possibles sur n bits - Factorisation de grands nombres premiers en temps polynomial - Depuis 2017 : - Organisation par le NIST d’une complétion internationale - Standardisation des algorithmes postquantiques - Systèmes alternatifs à RSA utilisant des ordinateurs classiques - Algorithmes basés sur les propriétés quantiques déjà existantes - Protocoles de communications quantiques : téléportation + intrication
  31. RÉFÉRENCES EN VRAC https://www.globalsign.fr/fr/centre-information-ssl/definition-ssl/ https://www.globalsign.fr/fr/centre-information-ssl/definition-certificat-ssl/ https://blog.ippon.fr/2008/10/20/certificats-auto-signe-et-communication-ssl-en-java/ https://www.esup-portail.org/wiki/display/DOC/Utilisation+de+certificats+X509+en+Java http://www.programmevitam.fr/ressources/Doc0.11.1/html/manuel-dev/include/common/private/certs-auth.html https://www.baeldung.com/java-keystore-truststore-difference https://wiki.openssl.org/index.php/SSL/TLS_Client

    https://www.feistyduck.com/library/openssl-cookbook/online/ch-testing-with-openssl.html# https://howtodoinjava.com/security/aes-256-encryption-decryption/ http://doctrina.org/How-RSA-Works-With-Examples.html https://www.math.u-bordeaux.fr/~jcerri/cryptologie18/rijndael.pdf https://medium.com/@14wnrkim/what-is-aes-step-by-step-fcb2ba41bb20 http://madci.com/symetriqueflux https://hackernoon.com/how-does-rsa-work-f44918df914b https://www.crypto-sous.fr/blockchain-fonctionnement/cryptographie/ https://www.globalsign.fr/fr/centre-information-ssl/definition-ssl/ https://medium.com/@antoine.ansel/l-algorithme-d-%C3%A9change-de-cl%C3%A9s-diffie-hellman-6f9681d1418c