PKI et certificats numériques
Ce chapitre est consacré à l'étude des infrastructures à clés publiques (PKI) et des certificats numériques, éléments essentiels de la sécurité numérique moderne. Nous analyserons en détail les mécanismes qui permettent d'établir une confiance numérique à grande échelle sur Internet et dans les organisations.
4.1. Principes fondamentaux de la PKI
Qu'est-ce qu'une PKI ?
Une Infrastructure à Clés Publiques (PKI - Public Key Infrastructure) est un ensemble de rôles, politiques, matériels, logiciels et procédures nécessaires pour créer, gérer, distribuer, utiliser, stocker et révoquer des certificats numériques, ainsi que pour gérer le chiffrement à clé publique.
La PKI résout un problème fondamental : comment établir la confiance entre des entités qui ne se connaissent pas directement ? Elle permet d'associer de façon fiable des clés publiques à des identités (personnes, systèmes ou organisations) via des certificats numériques.
Composants principaux d'une PKI
- Autorité de Certification (CA) : Émet les certificats et garantit l'association entre une identité et une clé publique
- Autorité d'Enregistrement (RA) : Vérifie l'identité des demandeurs de certificats
- Référentiel de certificats : Stocke et distribue les certificats
- Système de révocation : Permet d'invalider les certificats compromis ou obsolètes (CRL, OCSP)
- Applications utilisatrices : Systèmes qui vérifient et utilisent les certificats
Fonctions essentielles d'une PKI
- Établissement d'identité : Vérifier rigoureusement qui demande un certificat
- Émission de certificats : Créer des certificats avec les informations validées
- Distribution : Rendre les certificats accessibles aux utilisateurs
- Révocation : Permettre l'invalidation de certificats compromis
- Renouvellement : Gérer le cycle de vie des certificats
- Validation : Vérifier l'authenticité et la validité des certificats
Modèles de confiance
La PKI peut être organisée selon différents modèles de confiance, chacun ayant ses avantages et inconvénients :
Hiérarchique
Caractéristiques :
- Structure arborescente avec une autorité racine
- Chaînes de certification claires
- Point central de confiance
Avantages : Simple à comprendre, facile à gérer
Inconvénients : Vulnérable à la compromission de la racine
Maillé
Caractéristiques :
- Les CAs se certifient mutuellement
- Plusieurs chemins de certification possibles
- Relations de confiance plus complexes
Avantages : Plus robuste, pas de point unique de défaillance
Inconvénients : Plus difficile à gérer et à comprendre
Web of Trust
Caractéristiques :
- Décentralisé, sans autorités centrales
- Les utilisateurs se certifient mutuellement
- Niveau de confiance basé sur le réseau social
Avantages : Totalement décentralisé, peu coûteux
Inconvénients : Difficile à déployer à grande échelle
Avantages et défis des PKI
Avantages
- Confiance à grande échelle : Permet d'établir des relations de confiance entre des millions d'entités
- Délégation de la confiance : Pas besoin de connaître chaque entité individuellement
- Authentification forte : Identités vérifiées cryptographiquement
- Non-répudiation : Preuve cryptographique des actions
- Portabilité : Fonctionne à travers différents systèmes et plateformes
- Standardisation : Basé sur des normes internationales
Défis et problèmes
- Complexité : Difficile à comprendre et à implémenter correctement
- Vulnérabilités : Compromission possible des autorités de certification
- Coût : Maintenance d'une PKI complète souvent onéreuse
- Gestion de la révocation : Systèmes de révocation souvent inefficaces
- Interopérabilité : Problèmes de compatibilité entre différentes implémentations
- Problème du premier contact : Comment établir la confiance initiale
4.2. Certificats X.509 et standards
Structure d'un certificat X.509
X.509 est le standard international qui définit le format des certificats numériques utilisés dans les PKI. Un certificat X.509 contient :
Version | Version du standard X.509 (généralement v3) |
Numéro de série | Identifiant unique attribué par la CA |
Algorithme de signature | Algorithme utilisé par la CA pour signer le certificat |
Émetteur (Issuer) | Nom distinctif (DN) de l'autorité de certification |
Validité | Dates de début et de fin de validité |
Sujet (Subject) | Nom distinctif de l'entité certifiée |
Clé publique | Clé publique du sujet et algorithme associé |
Identifiant de clé d'autorité | Aide à identifier la clé publique de la CA |
Identifiant de clé du sujet | Identifie la clé publique du sujet |
Utilisation de la clé | Restrictions sur l'usage de la clé (signature, chiffrement, etc.) |
Utilisation étendue de la clé | Utilisations spécifiques (auth. client, serveur, email...) |
Contraintes de base | Indique si le certificat est une CA et sa profondeur max. |
Points de distribution CRL | Où trouver la liste de révocation |
Accès aux informations d'autorité | Comment accéder aux services OCSP, aux certificats de CA, etc. |
Formats d'encodage des certificats
Les certificats X.509 et les clés cryptographiques peuvent être encodés de différentes manières :
Format | Description | Extensions courantes | Utilisation typique |
---|---|---|---|
DER (Distinguished Encoding Rules) | Format binaire standardisé pour ASN.1 | .der, .crt, .cer | Stockage et transmission efficaces |
PEM (Privacy-Enhanced Mail) | Version Base64 du format DER avec en-têtes | .pem, .crt, .cer, .key | Format texte facile à copier/coller |
PKCS#7 / P7B | Conteneur pour certificats et CRLs | .p7b, .p7c | Stockage de chaînes de certificats |
PKCS#12 / PFX | Archive protégée par mot de passe | .p12, .pfx | Stockage des certificats avec clés privées |
Exemple de certificat au format PEM
-----BEGIN CERTIFICATE-----
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
...
3QjN5S173O8Vip3j8gg2PA0NOKXjAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAP
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAF
BgNVHREECDAGggCCAIIAMA0GCSqGSIb3DQEBBQUAA4IBAQBLnlpLGbfuJ/SuHYLR
PQyHJHz/MBLwTCwgVFhGTXeGQVHbUQZ/QQO+elR8Z1Ssl8IVKx/n5AcUPVhKfzZJ
PLyiQlJXu1AJu8qbT0pr9uavL88qM9Ny7CFgCN0KfGCV1sCNxG2Asf8leSe8bjvm
lFQtN9orFwZDFDHi3cVRU4wMlJQa0qf8OZlHrtM+qJ+Jlff003kdumfuTXG1tmpq
KbE3+d/T+hgmhKYr5OUKjkTm4J0BKp5QJ0RaYyNrxfqtEE2h/9YwXTCPenN1jidA
D7QdMhSJ7GvOEBrL+np6jKOgCKLYGxCB3FsCLm/2vxSV4DvkNj+CYtZ7nzTLUEJa
4XvZ
-----END CERTIFICATE-----
Nom Distinctif (Distinguished Name)
Dans les certificats X.509, les identités (émetteur et sujet) sont spécifiées sous forme de Noms Distinctifs (DN), une structure hiérarchique d'attributs :
Attributs principaux
CN | Common Name | Nom de l'entité (ex: example.com) |
O | Organization | Nom de l'organisation |
OU | Organizational Unit | Division ou département |
C | Country | Code pays à deux lettres |
Attributs complémentaires
ST | State/Province | État ou région |
L | Locality | Ville ou localité |
STREET | Street Address | Adresse postale |
E | Email Address | Adresse email |
Exemple de DN complet
CN=www.example.com, OU=IT Department, O=Example Corp, L=San Francisco, ST=California, C=US
Standards associés aux PKI
Standard | Description | Organisme |
---|---|---|
X.509 | Format de certificat standard | ITU-T / ISO |
PKCS (Public Key Cryptography Standards) | Suite de standards pour la cryptographie à clé publique | RSA Laboratories |
PKCS#10 | Format des demandes de certificat (CSR) | RSA Laboratories |
PKCS#12 | Format pour l'archivage sécurisé de clés et certificats | RSA Laboratories |
RFC 5280 | Profil de certificat X.509 pour Internet | IETF |
RFC 6960 | Online Certificate Status Protocol (OCSP) | IETF |
RFC 5652 | Cryptographic Message Syntax (CMS) | IETF |
RFC 8446 | Transport Layer Security (TLS) Protocol Version 1.3 | IETF |
4.3. Cycle de vie des certificats
Processus complet du cycle de vie
Les certificats numériques suivent un cycle de vie bien défini, de leur création à leur expiration ou révocation :
Génération de la demande de certificat (CSR)
La demande de certificat (Certificate Signing Request ou CSR) est le point de départ du cycle de vie d'un certificat :
- Version : Version du format PKCS#10 (généralement 0)
- Nom du sujet : DN de l'entité demandant le certificat
- Clé publique : La clé publique à certifier
- Attributs : Extensions demandées pour le certificat
- Signature : Signature par la clé privée correspondante
Générer une CSR avec OpenSSL
openssl req -new -newkey rsa:2048 -nodes \
-keyout private.key -out request.csr
$ openssl req -text -noout -in request.csr
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=FR, ST=Île-de-France, L=Paris,
O=Example Corporation,
OU=IT Department,
CN=www.example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:b9:41:e3:36:49:5e:a3:...
Exponent: 65537 (0x10001)
Attributes:
challengePassword: (hidden)
unstructuredName: Example Corp Server
Signature Algorithm: sha256WithRSAEncryption
5f:4a:8a:f2:38:40:1c:...
Vérification et validation d'identité
Avant d'émettre un certificat, l'autorité de certification doit valider l'identité du demandeur. Le niveau de vérification varie selon le type de certificat :
Type de validation | Description | Vérifications effectuées | Usage typique |
---|---|---|---|
Validation de domaine (DV) | Vérifie uniquement le contrôle du domaine | Email au contact administratif, fichier spécifique sur le serveur web, enregistrement DNS | Certificats SSL/TLS de base |
Validation d'organisation (OV) | Vérifie l'identité de l'organisation | Vérification du domaine + vérification de l'existence légale et des coordonnées de l'organisation | SSL/TLS pour sites commerciaux |
Validation étendue (EV) | Vérification approfondie de l'identité | Vérifications poussées selon des critères rigoureux établis par le CA/Browser Forum | Sites sensibles (banques, e-commerce) |
Validation d'identité individuelle | Vérifie l'identité d'une personne | Documents d'identité, présence physique ou vérification par vidéo | Certificats de signature individuelle |
Révocation de certificats
La révocation est le processus qui permet d'invalider un certificat avant sa date d'expiration, généralement suite à une compromission de la clé privée ou à un changement d'information.
Une CRL est une liste signée par la CA contenant les numéros de série des certificats révoqués et non expirés.
Caractéristiques :
- Publication périodique (quotidienne, hebdomadaire)
- Mise à jour incrémentale possible (delta CRL)
- Distribuée via HTTP, LDAP ou autres protocoles
- Contient la date de révocation et motif optionnel
Inconvénients :
- Taille potentiellement importante
- Latence entre révocation et publication
- Charge réseau significative
OCSP permet de vérifier en temps réel le statut d'un certificat spécifique auprès d'un répondeur.
Fonctionnement :
- Requête pour un certificat spécifique
- Réponses signées : "good", "revoked" ou "unknown"
- Plus efficace que les CRL pour les vérifications individuelles
Améliorations récentes :
- OCSP Stapling : Le serveur attache périodiquement une réponse OCSP signée à sa communication TLS
- Must-Staple : Extension de certificat indiquant que le stapling est obligatoire
- CertificateTransparency (CT) : Logs publics vérifiables des certificats émis
4.4. Mise en œuvre pratique des PKI
Création d'une autorité de certification avec OpenSSL
Mettre en place une PKI pour un usage interne ou de test est relativement simple avec OpenSSL. Voici les étapes essentielles :
1. Préparation de la structure et de la configuration
# Créer la structure de répertoires
mkdir -p ca/root-ca/private ca/root-ca/db ca/root-ca/certs
mkdir -p ca/intermediate-ca/private ca/intermediate-ca/db ca/intermediate-ca/certs
# Définir les permissions appropriées
chmod 700 ca/root-ca/private ca/intermediate-ca/private
# Initialiser les bases de données
touch ca/root-ca/db/index
touch ca/intermediate-ca/db/index
echo 1000 > ca/root-ca/db/serial
echo 1000 > ca/intermediate-ca/db/serial
# Créer le fichier de configuration pour la root CA
cat > ca/root-ca/root-ca.conf << EOL
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = ca/root-ca
certs = \$dir/certs
new_certs_dir = \$dir/certs
database = \$dir/db/index
serial = \$dir/db/serial
RANDFILE = \$dir/private/.rand
private_key = \$dir/private/root-ca.key
certificate = \$dir/certs/root-ca.crt
default_days = 3650
default_md = sha256
policy = policy_strict
email_in_dn = no
name_opt = ca_default
cert_opt = ca_default
[ policy_strict ]
countryName = match
stateOrProvinceName = match
localityName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
string_mask = utf8only
default_md = sha256
x509_extensions = v3_ca
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
stateOrProvinceName = State or Province Name
localityName = Locality Name
organizationName = Organization Name
organizationalUnitName = Organizational Unit Name
commonName = Common Name
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
EOL
2. Création de la CA racine
# Générer la paire de clés et le certificat auto-signé
openssl req -config ca/root-ca/root-ca.conf -new -x509 -sha256 \
-extensions v3_ca -days 7300 \
-keyout ca/root-ca/private/root-ca.key \
-out ca/root-ca/certs/root-ca.crt \
-subj "/C=FR/ST=Ile-de-France/L=Paris/O=Example Corp/CN=Example Root CA"
3. Création d'une CA intermédiaire
# Créer le fichier de configuration pour la CA intermédiaire
# (similaire à root-ca.conf avec des adaptations)
# Générer la clé privée de la CA intermédiaire
openssl genrsa -out ca/intermediate-ca/private/intermediate-ca.key 4096
# Créer une demande de certificat (CSR)
openssl req -config ca/intermediate-ca/intermediate-ca.conf -new -sha256 \
-key ca/intermediate-ca/private/intermediate-ca.key \
-out ca/intermediate-ca/certs/intermediate-ca.csr \
-subj "/C=FR/ST=Ile-de-France/L=Paris/O=Example Corp/CN=Example Intermediate CA"
# Signer la CSR avec la CA racine
openssl ca -config ca/root-ca/root-ca.conf -extensions v3_intermediate_ca \
-days 3650 -notext -in ca/intermediate-ca/certs/intermediate-ca.csr \
-out ca/intermediate-ca/certs/intermediate-ca.crt
4. Émission d'un certificat utilisateur/serveur
# Générer une clé privée pour le serveur
openssl genrsa -out server.key 2048
# Créer une CSR pour le serveur
openssl req -new -key server.key -out server.csr \
-subj "/C=FR/ST=Ile-de-France/L=Paris/O=Example Corp/CN=www.example.com"
# Signer la CSR avec la CA intermédiaire
openssl ca -config ca/intermediate-ca/intermediate-ca.conf \
-extensions server_cert -days 365 -notext \
-in server.csr -out server.crt
# Créer un bundle de certificats pour le déploiement
cat server.crt ca/intermediate-ca/certs/intermediate-ca.crt > server-chain.crt
5. Révocation d'un certificat
# Révoquer un certificat
openssl ca -config ca/intermediate-ca/intermediate-ca.conf \
-revoke ca/intermediate-ca/certs/1000.pem -crl_reason keyCompromise
# Générer une CRL
openssl ca -config ca/intermediate-ca/intermediate-ca.conf \
-gencrl -out ca/intermediate-ca/crl/intermediate-ca.crl
Déploiement de certificats dans des applications courantes
Une fois les certificats générés, ils doivent être déployés correctement dans les applications :
Serveur Web (Nginx)
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/server-chain.crt;
ssl_certificate_key /path/to/server.key;
# Configurations recommandées
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...';
ssl_prefer_server_ciphers on;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/ca-chain.crt;
# Autres directives...
}
Client Java
// Charger le keystore contenant le certificat client
System.setProperty("javax.net.ssl.keyStore",
"/path/to/client.keystore");
System.setProperty("javax.net.ssl.keyStorePassword",
"password");
// Charger le truststore contenant les CA de confiance
System.setProperty("javax.net.ssl.trustStore",
"/path/to/truststore.jks");
System.setProperty("javax.net.ssl.trustStorePassword",
"password");
// Convertir PEM en JKS
// keytool -import -file ca.crt -alias ca
// -keystore truststore.jks
// Créer une connexion HTTPS
URL url = new URL("https://example.com");
HttpsURLConnection conn =
(HttpsURLConnection) url.openConnection();
// Configurer la connexion...
conn.connect();
OpenSSL (Vérification)
# Vérifier une connexion HTTPS
openssl s_client -connect example.com:443 \
-servername example.com -CAfile ca-chain.crt
# Vérifier un certificat local
openssl verify -CAfile ca-chain.crt server.crt
# Vérifier l'état de révocation
openssl ocsp -issuer intermediate-ca.crt \
-cert server.crt \
-url http://ocsp.example.com \
-CAfile ca-chain.crt
# Extraire des informations d'un certificat
openssl x509 -in server.crt -text -noout
# Vérifier le keyUsage et les extensions
openssl x509 -in server.crt -purpose -noout
Bonnes pratiques pour la gestion des PKI
La gestion d'une PKI requiert une attention particulière à plusieurs aspects critiques :
Sécurité des clés privées
- Protection physique : Stockage de la CA racine hors ligne, idéalement sur un système air-gapped
- Modules de sécurité matériels (HSM) : Utilisation de HSM pour stocker les clés privées des CA
- Contrôle d'accès : Principe du moindre privilège et séparation des rôles pour l'accès aux clés
- Passphrase : Protection des clés privées par phrases de passe robustes
- Sauvegarde sécurisée : Procédures de sauvegarde et de récupération bien définies
Gestion du cycle de vie
- Automatisation : Utilisation d'outils pour automatiser l'émission et le renouvellement
- Surveillance : Alertes pour les certificats expirant prochainement
- Inventaire : Maintien d'un registre complet de tous les certificats émis
- Procédures de révocation : Processus clairs pour la révocation d'urgence
- Renouvellement anticipé : Renouveler les certificats avant qu'ils n'atteignent 70-80% de leur durée de vie
- Tests réguliers : Vérification périodique du bon fonctionnement des mécanismes de révocation
Audits et conformité
- Politiques documentées : CP (Certificate Policy) et CPS (Certification Practice Statement)
- Audits réguliers : Vérification de la conformité aux politiques
- Journalisation : Enregistrement de toutes les opérations critiques
- Conformité aux normes : Respect des normes comme WebTrust, ETSI, etc.
- Tests d'intrusion : Évaluation périodique de la sécurité
Conception sécurisée
- Architecture hiérarchique : CA racine hors ligne, CA intermédiaires pour les opérations quotidiennes
- Isolation réseau : Séparation des composants critiques
- Limitation de la durée : Certificats de CA racine (10-20 ans), intermédiaires (5-10 ans), entités finales (≤ 1 an)
- Restrictions d'usage : Utilisation appropriée des extensions keyUsage et extendedKeyUsage
- Plan de récupération : Procédures de reprise après sinistre bien documentées
4.5. Cas d'usage avancés et technologies émergentes
PKI pour l'authentification mutuelle TLS
L'authentification mutuelle TLS (mTLS) est une forme avancée de TLS où le client et le serveur s'authentifient mutuellement avec des certificats :
Fonctionnement du mTLS
- Le client se connecte au serveur et demande une connexion sécurisée
- Le serveur envoie son certificat et demande un certificat au client
- Le client vérifie le certificat du serveur
- Le client envoie son propre certificat au serveur
- Le serveur vérifie le certificat du client
- Les deux parties établissent une session chiffrée
Applications et avantages
Cas d'usage typiques :
- Communication entre microservices dans un environnement zero-trust
- API sécurisées pour partenaires commerciaux
- Authentification d'appareils IoT
- VPN basés sur certificats
- Services financiers et systèmes critiques
Avantages :
- Authentification forte des deux parties
- Élimination des mots de passe
- Granularité fine du contrôle d'accès
- Révocation possible des accès compromis
- Audit et traçabilité améliorés
Configuration Nginx pour mTLS :
server {
listen 443 ssl;
ssl_certificate /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
ssl_client_certificate /path/to/ca.crt;
ssl_verify_client on;
# ...
}
Certificats pour la signature de code
La signature de code utilise des certificats spéciaux pour authentifier l'origine et garantir l'intégrité des exécutables et des scripts :
Processus de signature de code
- Obtention d'un certificat : Acquérir un certificat de signature de code auprès d'une CA reconnue
- Compilation du code : Développer et compiler l'application
- Calcul du hachage : Générer une empreinte cryptographique du code
- Signature : Signer l'empreinte avec la clé privée associée au certificat
- Intégration : Inclure la signature et le certificat avec le logiciel
Exemple avec signtool (Windows) :
signtool sign /f certificate.pfx /p password
/tr http://timestamp.digicert.com /td sha256
/fd sha256 application.exe
Exemple avec jarsigner (Java) :
jarsigner -keystore keystore.jks -storepass password
-keypass keypass application.jar alias
Vérification et avantages
Processus de vérification :
- L'OS ou l'environnement d'exécution extrait le certificat du logiciel
- Vérification de la chaîne de certification jusqu'à une CA de confiance
- Vérification que le certificat est valide et non révoqué
- Vérification de la signature en utilisant la clé publique du certificat
- Affichage d'une notification à l'utilisateur ou autorisation silencieuse
Avantages :
- Garantie de l'origine du logiciel
- Détection de toute modification après la signature
- Réduction des avertissements de sécurité
- Établissement de la réputation du développeur
- Prévention de certaines attaques de type "supply chain"

Certificate Transparency et innovations récentes
Ces dernières années, plusieurs innovations importantes ont émergé pour améliorer l'écosystème des PKI :
Technologie | Description | Avantages | État d'adoption |
---|---|---|---|
Certificate Transparency (CT) | Système de journaux publics vérifiables pour tous les certificats émis | Détection rapide des certificats malveillants ou erronés, auditabilité | Largement adopté, obligatoire pour les certificats publics |
Expect-CT | En-tête HTTP permettant de définir et d'appliquer les politiques CT | Contrôle plus précis de la conformité CT pour un domaine | Support dans les navigateurs modernes |
ACME (Automated Certificate Management Environment) | Protocole d'automatisation pour la gestion des certificats | Émission, renouvellement et révocation automatisés | Largement adopté, base de Let's Encrypt |
CAA (Certification Authority Authorization) | Enregistrements DNS spécifiant quelles CAs peuvent émettre des certificats pour un domaine | Prévention de l'émission non autorisée de certificats | Obligatoire pour les CAs publiques |
SCT (Signed Certificate Timestamp) | Preuve qu'un certificat a été enregistré dans un journal CT | Vérifiabilité immédiate de l'inclusion dans CT | Intégrée dans les certificats modernes |
DANE (DNS-based Authentication of Named Entities) | Utilisation de DNSSEC pour publier et vérifier les certificats | Réduction de la dépendance aux CAs traditionnelles | Adoption limitée mais croissante |
Fonctionnement de Certificate Transparency
- Pré-émission : La CA soumet une demande de précertificat aux journaux CT
- Inclusion : Les journaux CT incluent le précertificat et retournent un SCT
- Émission : La CA inclut le SCT dans le certificat final
- Vérification : Les clients vérifient la présence et la validité des SCTs
- Surveillance : Des moniteurs scannent les journaux pour détecter les certificats suspects
Vérification d'un certificat dans CT :
openssl x509 -in cert.pem -noout \
-ext 1.3.6.1.4.1.11129.2.4.2
L'avenir des PKI : défis et tendances
L'écosystème des PKI continue d'évoluer pour répondre aux nouveaux défis et aux évolutions technologiques :
Défis actuels
Fragilités structurelles :
- Confiance excessive accordée à des centaines de CAs
- Systèmes de révocation inefficaces ou ignorés
- Complexité du système pour les utilisateurs finaux
- Vulnérabilités dues à des erreurs d'implémentation
Menaces émergentes :
- Compromission d'autorités de certification
- Attaques quantiques contre les algorithmes asymétriques
- Augmentation des attaques "man-in-the-middle" sophistiquées
- Prolifération d'appareils IoT avec contraintes de ressources
Tendances et innovations
Évolutions technologiques :
- Certificats résistants aux attaques quantiques : Migration vers des algorithmes post-quantiques
- Blockchain et technologies distribuées : Exploration de PKI sans autorité centrale
- Automatisation complète : Adoption croissante d'ACME et de solutions similaires
- Durée de vie réduite : Tendance vers des certificats à plus courte durée (90 jours ou moins)
Nouveaux modèles :
- Web of Trust modernes : Nouvelles approches de la confiance décentralisée
- Identity-based Encryption (IBE) : Utilisation d'identifiants comme clés publiques
- Certificate-less PKI : Systèmes éliminant le besoin de certificats traditionnels
- Identités auto-souveraines : Contrôle complet des utilisateurs sur leurs identités numériques
Exercices associés
Mettez en pratique les concepts de ce chapitre avec les travaux pratiques dédiés.
Accéder aux exercices