Cryptographie et chiffrement
Définition
La cryptographie transforme des données lisibles (texte clair) en données incompréhensibles (texte chiffré) pour garantir confidentialité, intégrité et authenticité. Elle protège les données au repos, en transit et en usage.
Terminologie de base
- Chiffrement (encryption) : transformation texte clair → chiffré avec une clé
- Déchiffrement (decryption) : opération inverse avec la clé
- Cryptanalyse : attaque sur le système cryptographique
- Hash : empreinte unidirectionnelle de taille fixe (pas de déchiffrement)
- Sel (salt) : valeur aléatoire ajoutée au mot de passe avant hash (anti rainbow tables)
- IV / nonce : valeur aléatoire par chiffrement (évite répétition)
Chiffrement symétrique
Même clé pour chiffrer et déchiffrer. Rapide, adapté gros volumes.
| Algorithme | Taille clé | Statut |
|---|---|---|
| AES (Rijndael) | 128/192/256 | Standard (NIST, FIPS 197), utilisé partout (disques, TLS, Wi-Fi) |
| ChaCha20 | 256 | Moderne, très rapide, TLS 1.3 option, mobile |
| DES | 56 | Compromis (56 bits casser en heures) |
| 3DES | 112 effectif | Faible, retiré (TLS 1.3 l'interdit) |
| Blowfish | 32-448 | Ancien, remplacé par Twofish |
Modes de fonctionnement : CBC (chaînage), GCM (AEAD : chiffrement + authentification), CTR, XTS (disques).
Chiffrement asymétrique (clé publique)
Paire de clés : publique (partageable) + privée (secrète). Ce que l'une chiffre, seule l'autre déchiffre.
| Algorithme | Taille | Usage |
|---|---|---|
| RSA | 2048/3072/4096 | Échange clés, signatures (ancien standard) |
| ECC (ECDH, ECDSA) | 256 (≈ RSA 3072) | TLS moderne, signatures, plus léger |
| Ed25519 | 256 | Signatures très rapides (SSH, Signal) |
| ElGamal / DSA | — | Héritage, remplacé par ECC/EdDSA |
Cas d'usage : échange de clés de session (TLS handshake), signatures numériques, PGP/GPG email, SSH.
Hybrides : TLS/HTTPS en pratique
- Handshake : échange clés asymétrique (RSA, ECDHE) → forward secrecy (clés éphémères, PFS)
- Session : chiffrement symétrique (AES-256-GCM, ChaCha20) pour le volume
- Certificat X.509 : identité du serveur signée par une CA (Public Key Infrastructure)
- Chaîne de confiance : root CA → intermediate CA → certificat serveur (vérification OCSP/CRL)
Hachage (hash) et intégrité
- Propriétés : déterministe, unidirectionnel, avalanche (un bit change tout), résistant collisions
- Algorithmes : SHA-256, SHA-3 (recommandés) ; MD5, SHA-1 (compromis)
- HMAC : hash avec clé secrète (authentification de message)
- Usages : vérification fichiers (sha256sum), signatures, stockage mots de passe, intégrité firmware, blockchains
PKI (Public Key Infrastructure)
| Composant | Rôle |
|---|---|
| CA (Certificate Authority) | Émet et signe les certificats (Let's Encrypt, DigiCert, CA interne Microsoft AD CS, OpenSSL/step) |
| RA (Registration Authority) | Vérifie l'identité avant émission |
| Certificat X.509 | Identité + clé publique + signature CA + validité |
| CRL / OCSP | Révocation (liste / requête en ligne) |
| Keystore / HSM | Stockage sécurisé clés privées (TPM, YubiHSM, CloudHSM) |
Chiffrement des données au repos
- Full Disk Encryption : BitLocker (Windows), LUKS/dm-crypt (Linux), FileVault (macOS)
- Chiffrement fichier : EFS (Windows), gpg, openssl enc
- Bases de données : TDE (SQL Server, Oracle), column encryption
- Stockage cloud : S3 SSE-KMS/SSE-S3, Azure SSE, GCS CMEK ; client-side encryption (age, sops)
- TPM 2.0 : clé de boot scellée au matériel, attestation
Gestion des clés et secrets
- Rotation : remplacement régulier des clés (courtes durées = moindre impact compromission)
- Stockage : HSM (matériel), Key Vault/Secrets Manager (cloud), Vault (HashiCorp), Age/SOPS (cluster)
- Ne jamais : clés dans le code, les logs, les dépôts git, les configs partagées
- Key management : KMS (AWS/Azure/GCP), Cloud KMS, escrow CA (récupération)