Sommaire
🔒 Module CYB6 – Cryptographie appliquée
Objectifs : maîtriser les principes de la cryptographie, mettre en œuvre des algorithmes de chiffrement, gérer les clés et les certificats.
📖 Introduction
La cryptographie est le fondement de la sécurité informatique. Elle permet de garantir la confidentialité, l'intégrité et l'authenticité des données. Ce module vous présente les concepts clés, les algorithmes courants et la mise en œuvre pratique avec des outils comme OpenSSL.
À l'issue de ce module, vous serez capable de :
- Distinguer chiffrement symétrique, asymétrique et fonctions de hachage.
- Générer et gérer des clés avec OpenSSL.
- Configurer un serveur HTTPS avec un certificat.
- Mettre en œuvre une signature électronique et un horodatage.
- Comprendre le fonctionnement d'une PKI.
🔐 Les trois piliers de la cryptographie
| Pilier | Description | Exemple d'algorithme |
|---|---|---|
| Chiffrement symétrique | Une seule clé pour chiffrer et déchiffrer. Rapide mais problème de distribution de la clé. | AES, 3DES, ChaCha20 |
| Chiffrement asymétrique | Paire de clés (publique/privée). La clé publique chiffre, la privée déchiffre. | RSA, ECC, ElGamal |
| Fonction de hachage | Empreinte unique et irréversible. Vérifie l'intégrité des données. | SHA-256, SHA-3, MD5 (déconseillé) |
2.1 – Chiffrement symétrique (AES)
- AES (Advanced Encryption Standard) : algorithme standardisé, utilisé dans TLS, WPA2, etc.
- Modes d'opération : ECB (déconseillé), CBC, GCM (authentification intégrée).
- Taille des clés : 128, 192 ou 256 bits.
2.2 – Chiffrement asymétrique (RSA / ECC)
- RSA : basé sur la factorisation de grands nombres. Utilisé pour les clés de session, les signatures.
- ECC (Elliptic Curve Cryptography) : plus performant que RSA à taille de clé équivalente. Ex : Curve25519, secp256r1.
- Applications : TLS, SSH, signatures de certificats.
2.3 – Fonctions de hachage
- SHA-256 : génère une empreinte de 256 bits. Résistant aux collisions.
- Utilisations : vérification d'intégrité (checksum), stockage de mots de passe (avec sel), signatures.
- Exemple :
echo -n "bonjour" | sha256sum
🏛️ Infrastructure à clés publiques (PKI)
La PKI est l'infrastructure qui permet de gérer les certificats numériques.
| Élément | Rôle |
|---|---|
| Autorité de Certification (AC) | Émet et signe les certificats. Ex : Let's Encrypt, DigiCert, Sectigo. |
| Autorité d'Enregistrement (AR) | Vérifie l'identité du demandeur de certificat. |
| Certificat X.509 | Document numérique liant une clé publique à une identité (nom, organisation). |
| Liste de révocation (CRL) / OCSP | Permet de vérifier si un certificat a été révoqué. |
Bonnes pratiques : Utiliser des certificats avec une durée de validité limitée (ex : 90 jours pour Let's Encrypt). Automatiser le renouvellement avec des outils comme Certbot.
🛠️ Mise en pratique
4.1 – Générer une paire de clés RSA avec OpenSSL
Générer une clé privée et extraire la clé publique :
# Générer une clé privée RSA de 2048 bits openssl genrsa -out cle_privee.pem 2048 # Extraire la clé publique openssl rsa -in cle_privee.pem -pubout -out cle_publique.pem # Afficher la clé publique cat cle_publique.pem
genrsa: génère une clé privée RSA.-out cle_privee.pem: sauvegarde dans le fichier.rsa -pubout: extrait la clé publique depuis la clé privée.- La clé publique peut être partagée librement.
4.2 – Signer et vérifier un document
Signer un fichier avec sa clé privée :
# Signer le document openssl dgst -sha256 -sign cle_privee.pem -out signature.bin document.pdf # Vérifier la signature openssl dgst -sha256 -verify cle_publique.pem -signature signature.bin document.pdf
dgst -sha256: calcule l'empreinte SHA-256 du document.-sign cle_privee.pem: chiffre l'empreinte avec la clé privée.-verify cle_publique.pem: vérifie avec la clé publique.- Si la vérification réussit, le document est authentique et intact.
4.3 – Générer un certificat autosigné
Créer un certificat pour un serveur HTTPS :
# Générer une requête de certificat (CSR) openssl req -new -key cle_privee.pem -out demande.csr # Générer un certificat autosigné (valable 365 jours) openssl x509 -req -in demande.csr -signkey cle_privee.pem -out certificat.crt -days 365
req -new: génère une demande de certificat.x509 -req: signe la demande avec la clé privée (autosigné).- Ce certificat peut être utilisé pour tester un serveur HTTPS.
- Pour une utilisation en production, préférer un certificat délivré par une AC reconnue.
📝 Exercices d'application
Exercice 1 – Vocabulaire cryptographique
Associez chaque terme à sa définition :
- Chiffrement symétrique : …
- Chiffrement asymétrique : …
- Fonction de hachage : …
- PKI : …
- Chiffrement symétrique : Une seule clé pour chiffrer et déchiffrer.
- Chiffrement asymétrique : Une paire de clés (publique/privée).
- Fonction de hachage : Empreinte unique et irréversible.
- PKI : Infrastructure de gestion des certificats et des clés.
Exercice 2 – Mise en situation
Vous devez sécuriser les communications d'une application web avec HTTPS. Définissez les étapes pour obtenir et installer un certificat.
- Étape 1 : Générer une paire de clés RSA.
- Étape 2 : Créer une demande de certificat (CSR).
- Étape 3 : Soumettre la CSR à une Autorité de Certification (ex : Let's Encrypt).
- Étape 4 : Valider la possession du domaine.
- Étape 5 : Télécharger et installer le certificat sur le serveur web.
- Étape 6 : Configurer le serveur (Nginx/Apache) pour utiliser le certificat.
- Étape 7 : Vérifier le bon fonctionnement avec
curl -v https://monsite.fr.
🎯 Quiz d'auto‑évaluation
Testez vos connaissances. Sélectionnez une réponse, un feedback s'affichera immédiatement.
1. Le chiffrement symétrique utilise :
2. AES est un algorithme de :
3. Une fonction de hachage (SHA-256) est :
4. Dans une PKI, l'Autorité de Certification (AC) a pour rôle de :
5. La commande openssl genrsa -out cle.pem 2048 permet de :
📚 Ressources et liens utiles
- OpenSSL – Documentation officielle
- Let's Encrypt – Certificats gratuits
- ANSSI – Gestion des clés cryptographiques
- ANSSI – Guide de cryptographie