Cryptographie, PKI et TLS
Comprendre comment on protège la confidentialité et l'intégrité des échanges : chiffrement symétrique et asymétrique, échange de clés, hachage, signature, certificats et infrastructure de confiance, puis le protocole TLS qui sécurise le web.
SIO1 · semestre 25 h (cours + TP)Bloc 3 – CybersécuritéMémo · Portail SIO
L'essentiel
- Cryptographie : confidentialité (chiffrement), intégrité (hachage), authentification (certificat), non-répudiation (signature). L'algorithme est public, la clé est secrète.
- Symétrique (AES) : une clé partagée, très rapide, mais il faut la transmettre et en gérer beaucoup.
- Asymétrique (RSA, ECC) : clé publique + clé privée ; lent, sert à échanger des clés et à signer.
- On chiffre avec la clé publique du destinataire ; on signe avec sa propre clé privée, qui ne circule jamais.
- Diffie-Hellman (ECDHE) : fabriquer une clé commune en public ; éphémère = confidentialité persistante.
- Hachage (SHA-256) : empreinte fixe, sens unique, effet avalanche ; MD5 et SHA-1 obsolètes ; mots de passe : sel + fonction lente (Argon2, bcrypt).
- Certificat X.509 : clé publique + identité (SAN) + dates, signés par une AC.
- Chaîne de confiance : serveur → intermédiaire → racine présente dans le magasin du poste ; révocation par CRL ou OCSP.
- TLS 1.3 : un aller-retour ; ECDHE pour les clés, certificat pour l'identité, AES-GCM pour les données.
- Erreur de certificat = date, nom (SAN), chaîne ou version : on corrige la cause, on ne « continue » jamais.
La règle à ne jamais inverser
Chiffrer (confidentialité) : avec la clé publique du destinataire. Signer (origine, intégrité, non-répudiation) : avec sa propre clé privée. Une clé privée ne se transmet jamais, ne s'envoie pas par courriel et se protège par une phrase de passe.
Piège classique
Hachage n'est pas chiffrement. On ne « déchiffre » pas une empreinte : on la recalcule et on compare. Et un hachage rapide (MD5, SHA-1, même SHA-256 sans sel) n'est pas une protection suffisante pour des mots de passe.
Commandes clés
| Pour… | Commandes |
|---|---|
| Empreinte d'un fichier | sha256sum fichier · Get-FileHash fichier (PowerShell) |
| Chiffrer / déchiffrer (AES) | openssl enc -aes-256-cbc -pbkdf2 -in f -out f.enc · ajouter -d pour déchiffrer |
| Créer une clé privée | openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out cle.pem |
| Créer une demande de certificat | openssl req -new -key cle.pem -out srv.csr |
| Lire un certificat | openssl x509 -in cert.pem -noout -text (ou -dates, -subject) |
| Tester un serveur TLS | openssl s_client -connect hote:443 -servername hote |
| Tester une version | openssl s_client -connect hote:443 -tls1_3 (doit réussir) · -tls1 -cipher 'DEFAULT@SECLEVEL=0' (doit échouer) |