Upload
others
View
12
Download
0
Embed Size (px)
Citation preview
Les certificats
LP RTAI
Présentation
Girou Virginie
Administrateur Système Réseau
Responsable domaine Réseau
Equipe Système
DSI
Université Toulouse 1 Capitole
13/02/2020 2
Ordre du jour
Quelques notions
Les Chiffrements
Symétriques
Asymétriques
Hash
Signature
Les certificats …
Qu’est-ce qu’une IGC ou PKI ?
Organisation
Openssl
Quizz
13/02/2020 3
confidentialité
Seuls des destinataires précis ont accès aux ressources
transmises
intégrité
Les ressources échangées ne sont pas modifiées pendant
le transport
authentification
L’émetteur et le destinataire d’un échange sont ceux qu’ils
prétendent être
non-répudiation
L’émetteur d’un message ne pourra pas nier dans le futur
l’avoir envoyé
Quelques notions
13/02/2020 4
Quelques notions
Force d’un chiffrement
Exemple du Code de César (chiffrement par substitution ≠
transposition)
Décalage de N caractères sur l’alphabet (ROTN)
Combien de possibilité ?
26 x 25 x 24 x 23 x … x 2 x 1 = 26 !
= 403 291 461 126 605 635 584 000 000 4 x 10 26
13/02/2020 5
Quelques notions
Mot de passe 4 caractères : A-Z,a-z,0-9
Combien de possibilité ? (62 caractères)
62 x 62 x 62 x 62 = 624 = 14 776 336
Chiffre binaire du nombre N de possibilité ou entropie :
1+ log2(N)
1 + « partie entière de » log2(14776336) = 24
Soit 24 bits
Mot de passe 10 caractères : A-Z,a-z,0-9
6210 = 839 299 365 868 340 224
1 + log2(839 299 365 868 340 224) = 60
Soit 60 bits 1 - trillion de possibilités
13/02/2020 6
Quelques notions
Recommandations mot de passe :
Fort > 100 bits
80 > Moyen > 100
Faible < 80
12 caractères sur 90 => 78 bits
16 caractères sur 90 => 104 bits
Recommandation et calcul de la force d’un mot de passe :
https://www.ssi.gouv.fr/guide/mot-de-passe/
13/02/2020 7
Chiffrement
Catégories de chiffrements :
Chiffrement par substitution :
Remplacement de caractères (groupes de caractères) par d’autres
caractères
Chiffrement par transposition :
Mélange des caractères (groupes de caractères) suivant des règles
déterminées par la clé de chiffrement.
Une suite de transpositions forme une permutation.
Chiffrement par produit :
C’est la combinaison des deux qui permet un chiffrement plus fort.
La plupart des algorithmes à clés symétriques utilisent le
chiffrement par produit.
13/02/2020 8
Chiffrement
Chiffrement symétrique
Échange d’un secret : clé secrète partagée
Chiffrement et déchiffrement des échanges avec le même secret
13/02/2020 9
Chiffrement
Exemples d’algorithmes par bloc :
DES : taille des clés 56 bits (Data Encryption Standard)
3DES : taille des clés 168 bits
AES = 128, 192, 256 bits (Advanced Encryption Standard)
Chiffrement appliqué sur des blocs de texte clair
Ces algorithmes sont basés sur des opérations de
transposition et de substitution des bits du texte clair en
fonction de la clé
Opération rapide pour les machines
Inconvénients / Difficultés ?
L’échange initial du secret
13/02/2020 10
Chiffrement
13/02/2020 11
Chiffrement
Chiffrement asymétrique
Génération d’un Bi-clé : clé publique / clé privée
Échange des clés publiques
Chiffrement d’un message avec clé publique
Déchiffrement avec la clé privée associée à la clé publique
13/02/2020 12
Chiffrement
Chiffrement asymétrique
13/02/2020 13
Chiffrement
Exemples :
RSA (grands nombres premiers) : taille de clés recommandées
2048 bits
ECC (courbes elliptiques)
DH (Diffie Hellman pour l’échange de clé)
Les algorithmes se basent sur des concepts mathématiques
et des problèmes calculatoires pour générer les clés
Très lent
13/02/2020 14
Chiffrement
Fonction de hachage (empreinte, HASH, Message digest) :
Unidirectionnelle : on ne peut pas remonter à la source du
message
Sans collision : deux messages différents ne pourront pas avoir
la même empreinte
La taille de l’empreinte est fixe quelque soit la taille initiale du
message
MD5 (128 bits) SHA-1 (160 bits) SHA-2 (256 bits)
Algorithmes spécifiques pour le chiffrement des mots de
passes
Bcrypt (1999), Scrypt (2009), Argon2 (2015)
Ajout de « sel » ou « salt » (128 bits) avant d’appliquer le hash
contre les rainbow table
Et aussi de « poivre » « pepper » non stocké dans la même
base de donnée
13/02/2020 15
Chiffrement
Algorithme de Signature numérique :
Empreinte du message + chiffrement de l’empreinte avec clé
privée = signature
DSA (1024 bits) RSA (4096 bits) ECDSA avec clé privé
13/02/2020 16
Les Certificats …
confidentialité
Seuls des destinataires précis ont accès aux ressources
transmises
Chiffrement (avec clé publique)
intégrité
Les ressources échangées ne sont pas modifiées pendant
le transport
Empreinte ou hash (Message digest Condensat)
authentification non-répudiation
L’émetteur et le destinataire d’un échange sont ceux qu’ils
prétendent être
L’émetteur d’un message ne pourra pas nier dans le futur
l’avoir envoyé
Signature numérique (avec clé privée)
13/02/2020 17
Les certificats …
Sont basés sur du chiffrement asymétrique
Différents usages des certificats
Certificats personnes :
Accès spécifiques
Certificats serveurs :
SSL et Multidomaines : appelé aussi UC (Unified Communication)
de type SAN (Subject Alternative Name). Il est OV (Organisation
Validation) et peut sécuriser plusieurs FQDN (Fully Qualified
Domain Name) multi-domaines.
Wildcard ou * : DV (Domain Validation). Peut sécuriser un nombre
illimité de sous-domaines.
EV (Extended Validation) : certificats vert, EV (Extended Validation).
Garanti que le site est de confiance.
Certificats Ipsec (VPN)
13/02/2020 18
Qu’est-ce qu’une IGC/PKI
Infrastructure à Gestion de Clés ou Public Key Infrastructure :
C’est un système hiérarchisé offrant un cadre global permettant
de garantir la fiabilité des éléments de sécurité tels que :
la confidentialité
l'authentification
l'intégrité
la non-répudiation
au sein d’entreprises, d’établissements, à titre personnel lors
d’échanges avec l’extérieur.
13/02/2020 19
Qu’est-ce qu’une IGC/PKI
Les fonctions d’une IGC :
Création des bi-clés
Clé publique
Clé privé
Génération et signature des certificats
Publication des certificats
Gestion du cycle de vie des certificats
13/02/2020 20
Qu’est-ce qu’une IGC/PKI
Les 5 composants d’une IGC :
AE : Autorité d’Enregistrement
Interface entre le demandeur et l’Autorité de Certification
Identifie le demandeur
Relaie les requêtes du demandeur
AC : Autorité de Certification
Peut générer les bi-clés
Génère les certificats à partir des bi-clés
Signe les certificats
Signe les listes de révocation
Autorité de dépôt : centralise et stocke les certificats
Autorité de séquestre : stocke les clés de chiffrements
Entité finale : utilisateur, serveur
13/02/2020 21
Qu’est-ce qu’une IGC/PKI
Schéma chaine de confiance
AC Racines
13/02/2020 22
Qu’est-ce qu’une IGC/PKI
Schéma demande de certificat
13/02/2020 23
Qu’est-ce qu’une IGC/PKI
Schéma demande de certificat
13/02/2020 24
Qu’est-ce qu’une IGC/PKI
13/02/2020 25
Installation des certificats sur l’entité finale
Serveurs web : httpsServeurs mail :
pops, smtps, imaps
Serveurs LDAP : ldapsServeurs d’applications :
JDK
Serveurs Radius :
Authentification eap
Bornes Wifi : https
(interface management)
Équipements réseaux : https
(interface management)
Certificats Clients
« machine » :
authentification
Certificats Clients
« machine » :
authentification
Certificats Personne /
Client (physique) :
Signature de
documents, d’email
Manipulation des certificats
avec Openssl
13/02/2020 26
Définition
Commandes Standard
Procédure de demande de certificat
Affichage de certificat
Chiffrement de clé privée
Conversion de format
Correspondance clé privée/certificat
Suivi d’une connexion ssl
Vulnérabilités OpenSSL
Liens utiles
Définition
" OpenSSL est un utilitaire cryptographique qui implémente
les protocoles réseau SSL et TLS ainsi que les standards
cryptographiques liés dont ils ont besoin.
C’est un outil de ligne de commande pour utiliser les
différentes fonctions cryptographiques de la librairie
crypto d'OpenSSL à partir du shell. Il peut être utilisé pour :
Création de paramètres des clefs RSA, DH (ECC) et DSA
Création de certificats X.509, CSRs et CRLs
Calcul de signature de messages
Chiffrement et Déchiffrement
Tests SSL/TLS client et server
Gestion de mail S/MIME signé ou chiffrés "
13/02/2020 27
Définition
Syntaxe des commandes :
Openssl <commande standard/signature/chiffrement> <options/arguments>
" Man openssl " liste les 3 types de commande et les arguments "
Man <commande> " liste les options de chaque commande
13/02/2020 28
Versions
Etat des versions :11 juin 2015 openssl-0.9.8zg (SHA1) (fin support : 31/12/2015)
11 juin 2015 openssl-1.0.0s (SHA1) (fin support : 31/12/2015)
9 juillet 2015 openssl-1.0.1p (SHA256) (fin support : 31/12/2016)
9 juillet 2015 openssl-1.0.2d (SHA256) (fin support : 31/12/2019)
28 mai 2019 openssl-1.1.0.k (SHA256) (fin support : 11/09/2019)
25 mai 2019 openssl-1.1.1.c (fin support :11/09/2023)
Signification de l’évolution des versions : Modification mineure avec ajout de nouvelles fonctionnalités
Correction de bug et mise à jour sécurité (pas de nouvelle fonctionnalité)
13/02/2020 29
Versions
Obtenir des informations sur la version :
#openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013built on: Mon Jun 29 12:45:07 UTC 2015platform: linux-x86_64options: bn(64,64) md2(int) rc4(8x,char) des(idx,cisc,16,int) idea(int) blowfish(idx)compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASMOPENSSLDIR: "/etc/pki/tls"
13/02/2020 30
Commandes Standard : Procédure de demande
de certificat
Créer une demande de certificat (.csr ou .p10)#openssl req -new -newkey rsa:2048 -nodes -out demande_certif.csr -keyout cle_privee.key -subj"/C=FR/ST=Midi Pyrénées/L=Toulouse/O=Université Toulouse 1 Capitole/CN=dsi.ut-capitole.fr"
13/02/2020 31
Génération du biclé :demande_certif.csr : identification du demandeur (CN, O, L, S, C) clé publique, signaturecle_privee.key : clé privée
Comprendre les options :req : traitement de type demande de CSRnew : nouvelle requêtenewkey rsa:2048 : clé de type rsa de taille 2048 bits nodes : la clé privée n’est pas chiffréesubj : contient l’identification du demandeur
Commandes Standard : Procédure de demande
de certificat
Dépôt de la demande sur le site de l’Autorité de Certification (AC)
Copie du contenu du fichier généré demande_certif.csr
Choix de quelques paramètres (SHA2, durée de validité, …)
13/02/2020 32
Génération par l’AC du certificat final
certif.crt : certificat serveur
certifCa.crt : certificat de l’Autorité de Certification
Ou
certif.p7b (format #pkcs7) : contient les 2 fichiers
Commandes Standard : Affichage de certificat
Affichage des certificats :
#openssl x509 -text -in certif.crt –noout (affichage complet)Version, Numéro de série, algorithme de signature, émetteur, validité, identification du propriétaire, clé publique, CRLs, signature (sha1, sha2, …)
Comprendre les options :
13/02/2020 33
x509 = certif ; rsa = clé privée ; req = demande certif
-text : affichage en mode texte du contenu du certificat
-noout : évite l’affichage du certificat chiffré en plus du texte
-date, -subject, -issuer, -serial : filtres d’affichages sur le contenu du certificat
-nameopt + : -oneline, -multiline : option d’affichage de la sortie
Commandes Standard : Affichage de certificat
Quelques exemples de personnalisation d’affichage :
13/02/2020 34
notBefore=Oct 1 00:00:00 2015 GMTnotAfter=Oct 5 12:00:00 2017 GMTsubject=
countryName = FRlocalityName = TOULOUSEorganizationName = Universite Toulouse 1 CapitolecommonName = dsi.ut-capitole.fr
issuer=countryName = NLstateOrProvinceName = Noord-HollandlocalityName = AmsterdamorganizationName = TERENAcommonName = TERENA SSL High Assurance CA 3
#openssl x509 -in dsi_ut-capitole_fr.crt -dates -subject -issuer -nameopt oneline -nooutnotBefore=Oct 1 00:00:00 2015 GMTnotAfter=Oct 5 12:00:00 2017 GMTsubject= C = FR, L = TOULOUSE, O = Universite Toulouse 1 Capitole, CN = dsi.ut-capitole.frissuer= C = NL, ST = Noord-Holland, L = Amsterdam, O = TERENA, CN = TERENA SSL High Assurance CA 3
#openssl x509 -in dsi_ut-capitole_fr.crt -dates -subject -issuer -nameopt multiline –noout
Commandes Standard : Chiffrement de clé
privée
Chiffrer sa clé privée avec une passphrase :
# openssl rsa -in cle_privee.pem -des3 -out cle_privee_chiffree.pem
rsa : traitement de données rsa
-des3 : chiffrement
Déchiffrer sa clé privée :
# openssl rsa -in cle_privee_chiffree.pem
-out cle_privee.pem
13/02/2020 35
La passphrase de chiffrement/déchiffrement
est demandée à l’issue de chaque commande
Commandes Standard : Conversion de format
Conversion de format pem vers #pkcs12 sécurisé
#openssl pkcs12 -export -inkey cle_privee.key -in certif.pem –certfile cacert.pem -out resultat.p12
export : création d’un p12
inkey : clé privée
in : certificat
certfile : certificat de l’autorité de certification
out : fichier résultat
Une passphrase de chiffrement est demandée
13/02/2020 36
Inversement extraction d’un #pkcs12#openssl pkcs12 –in resultat.p12 –out resultat.pem
Ou bien séparement :
#openssl pkcs12 -in resultat.p12 -nocerts -out cle_privee.key
#openssl pkcs12 -in resultat.p12 –clcerts/-cacerts
-nokeys -out certif.pem/certifCa.pem
Commandes Standard : Conversion de format
Conversion de format #pkcs7 vers pem
#openssl pkcs7 –print_certs –in certif.p7b –out resultat.pem
–print_certs : affichage du certificat et des sections subject et issuer
Extraction manuelle par copier/coller des 2 certificats
13/02/2020 37
Conversion d’encodage PEM vers DER
#openssl x509 -in certif.crt -inform pem -outform der
-out certif.der
DER vers PEM
#openssl x509 -in certif.crt -inform der -outform pem
-out certif.pem
-outform :spécifie le format de sortie
-inform : spécifie le format d’entrée
Commandes Standard : Correspondance clé
privée/certificat
Correspondance clé privée/certificat (crypto RSA) par comparaison des modulo
#openssl x509 -noout -modulus -in certif.crt Modulus=D93C7B0F0B2AD2187EBDA67F9C7B316927B4EDBEAF062010B1C2044C6A4305A566975238EF33AD499F92840A4B268A7D5089CDDFD7103591290A34E9BF3A7DB5D9476CAF2D761C406D5581292FE17A41D734157AAAC439A50942BDF85E7086921824B8E668DE80A435BC68EE3FFA0B98B4881A1857C4F9BCCA5D3B3D9647B129C7E60084625E1DB2FCC4AC9113DC9ABC10691245103617B97E7027111A8466D8A6D87A0ADA0408F639ED5F98A12AA7924AFBFDF63146D054880B18E214435E07FD0DB09A7B4C22903B33E40FD34F844B001E457C1D352DABD440DA2FE080434439FCD2A1673567B5ADD7A7EDEB83B99754D87275A3EF2B2AD3615CB9AAD41A4B
13/02/2020 38
La comparaison d’un condensé (hash) md5 ou sha1 est plus facile
#openssl x509 -noout -modulus -in certif.crt |openssl md5(stdin)= c8b0f9bebe6e0a5643d3cacbf4454fce
#openssl rsa -noout -modulus -in cle_privee.key |openssl md5(stdin)= c8b0f9bebe6e0a5643d3cacbf4454fce
Openssl md5 est une commande de type signature
Commandes Standard : Suivi d’une connexion
ssl
Test de connexion ssl
#openssl s_client -connect localhost:443 –stateCONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server key exchange A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read server session ticket A
SSL_connect:SSLv3 read finished A
13/02/2020 39
Vulnérabilités OpenSSL
Vulnérabilité Poodle :Sslv3 et v2 doivent être désactivés sur les serveurs
Test de présence de sslv3 :
#openssl s_client -connect mon_site:443 -ssl3
13/02/2020 40
SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
SSL routines:SSL23_GET_ SERVER_HELLO:sslv3 alert handshake failure
Failles Freak et Logjam :
Bannir les cipher EXPORT_RSA et DHE_EXPORT
Test de présence des fonctions EXPORT :
#openssl s_client -connect mon_site:443 -cipher EXPORT
Utiliser au moins un groupe DH 1024-bits et le protocole ECDH sur les serveurs et navigateurs
Génération d’un nouveau groupe DH :
#openssl dhparam -out dhparams.pem 2048
Vérification de sécurité
Vulnérabilité du SHA1 :Vérification de la version de la signature du certificat :
#openssl x509 -text -in certif.crt -noout
Certificate:Data:
Version: 3 (0x2)Serial Number:
03:eb:14:f7:ec:53:80:22:15:bf:9a:fc:f1:81:cf:10Signature Algorithm: sha256WithRSAEncryption
Certificate:Data:
Version: 3 (0x2)Serial Number:
2e:7e:a9:28:10:95:eb:dd:f5:bd:83:29:38:e9:9a:6dSignature Algorithm: sha1WithRSAEncryption
13/02/2020 41
Liens utiles
Site officiel OpenSSL : https://www.openssl.org/
Test de vulnérabilité :
Poodle https://www.poodletest.com/
Sha1
https://www.digicert.com/sha1-sunset/
https://tls.imirhil.fr/
13/02/2020 42
Liens utiles
QUIZZ :
www.kahoot.it ou appli kahoot
Entrer le code PIN
13/02/2020 43