Choisir le bon outil
| Besoin | Outil | À retenir |
|---|---|---|
| Garder un contenu secret | chiffrement symétrique AEAD (AES-GCM, ChaCha20-Poly1305) | une clé partagée, rapide |
| Partager sans secret préalable | asymétrique / accord de clé | clé publique diffusable, privée secrète |
| Gros volume vers un tiers | hybride (clé de session + clé publique) | principe de TLS et d'OpenPGP |
| Détecter une modification | hachage (SHA-256) | pas d'authenticité seul |
| Authentifier entre deux parties | HMAC | hachage + clé partagée |
| Prouver l'auteur | signature | clé privée signe, publique vérifie |
| Stocker un mot de passe | Argon2id, scrypt, bcrypt, PBKDF2 | lent, avec sel unique |
Algorithmes : bon, à éviter
| Statut | Exemples |
|---|---|
| Courant | AES (128 ou 256 bits), SHA-256, RSA 2048 bits minimum, Ed25519, P-256, X25519, TLS 1.3 / 1.2 |
| Déprécié ou à proscrire | MD5, SHA-1, DES, 3DES, RC4, SSLv2, SSLv3, TLS 1.0 et 1.1 (RFC 8996), mode ECB |
| Avec réserve | AES-CBC et CTR sans authentification ; openssl enc (pas d'AEAD) ; bcrypt (héritage) |
| Transition | post-quantique (ML-KEM, FIPS 203) : état non vérifié |
TLS 1.3 en cinq lignes
- Le client envoie sa part publique ECDHE.
- Le serveur répond avec la sienne.
- Le serveur présente son certificat et une signature.
- Les deux calculent le même secret (jamais transmis) et dérivent les clés.
- Les données passent en chiffrement symétrique authentifié.
Secret avant (confidentialité persistante) ; serveur authentifié, client seulement sur demande.
Certificats
- Contiennent identité, clé publique, validité, extensions, signature de l'AC (RFC 5280).
- Vérifier : chaîne vers une racine de confiance, dates, nom dans
subjectAltName, usage, révocation. - Auto-signé : laboratoire seulement. Jamais d'exception « ignorer l'erreur de certificat ».
Clés : règles d'or
- Générer avec un aléa cryptographique.
- Ne jamais mettre de clé ni de secret dans le code, un commit, une URL, un journal.
- Clé de données chiffrée par une clé de clés, rangée ailleurs.
- Droits
600sur un fichier de clé privée ; phrase secrète sur toute clé réelle. - Tourner en cas de fuite, de fin de cryptopériode ou d'algorithme affaibli.
- Sauvegarder et tester la récupération ; une clé perdue = données perdues.
- Une clé qui a fuité est compromise : la remplacer, pas seulement la retirer.
Commandes de démonstration (dossier jetable)
| Action | Commande | Effet |
|---|---|---|
| Versions | openssl version ; gpg --version | lecture |
| Empreinte | openssl dgst -sha256 f ; shasum -a 256 f | lecture |
| Chiffrer (démo) | openssl enc -aes-256-cbc -pbkdf2 -salt -in f -out f.enc | écrit ; sans authentification |
| Déchiffrer | openssl enc -d -aes-256-cbc -pbkdf2 -in f.enc -out f.out | écrit |
| Clé de signature | openssl genpkey -algorithm ED25519 -out k.pem puis chmod 600 k.pem | écrit une clé privée |
| Signer / vérifier | openssl pkeyutl -sign -inkey k.pem -rawin -in f -out f.sig ; -verify -pubin -inkey pub.pem -rawin -in f -sigfile f.sig | écrit / lit |
| Certificat de démo | openssl req -x509 -newkey rsa:2048 -noenc -keyout d.key -out d.crt -days 30 -subj "/CN=demo.example.test" | écrit une clé non chiffrée |
| Lire un certificat | openssl x509 -in d.crt -noout -subject -issuer -dates -fingerprint | lecture |
| Tester un serveur | openssl s_client -connect HOTE:443 -servername HOTE -brief < /dev/null | connexion réseau |
| GnuPG symétrique | gpg --symmetric --armor f ; gpg --decrypt f.asc | écrit / lit |
| Signature GnuPG | gpg --detach-sign f ; gpg --verify f.sig f | exige une paire OpenPGP |
| État de FileVault | fdesetup status | lecture (non vérifié) |
Avant : DEMO="$(mktemp -d)" ; cd "$DEMO" ; pour GnuPG : export GNUPGHOME="$DEMO/gnupg" (trousseau temporaire, jamais le personnel). Après : unset GNUPGHOME ; cd ~ ; rm -r "$DEMO" (suppression définitive : relire la commande).
Attention : sous macOS, openssl peut être LibreSSL : options (-noenc, -pbkdf2) à contrôler avec openssl version et man openssl (non vérifié). Ne jamais passer une phrase secrète en argument de ligne de commande.
Mots de passe : paramètres OWASP
- Argon2id : 19 MiB de mémoire minimum, 2 itérations, 1 de parallélisme.
- PBKDF2-HMAC-SHA-256 : 600 000 itérations ou plus (conformité FIPS).
- bcrypt : facteur 10 ou plus, limite de 72 octets.
- Sel aléatoire unique par mot de passe.
Mac : repères
- FileVault : AES-XTS, clés dans le Secure Enclave (Apple silicon, T2), clé de récupération de 24 caractères.
- Garder la clé de récupération hors du Mac.
- Chiffrer le disque ne protège pas une session ouverte ni les données envoyées sur le réseau.
Avant de lancer une commande
- Lecture ou écriture ? Qui lit les fichiers produits ?
- Données et clés de démonstration seulement.
- La commande touche-t-elle le réseau ou un trousseau réel ?
- Retour arrière prévu (suppression du dossier jetable).
Sources — consultées le 17 octobre 2026
- RFC 8446 (s’ouvre dans un nouvel onglet) (TLS 1.3, août 2018) · RFC 8996 (s’ouvre dans un nouvel onglet) (mars 2021) · RFC 5280 (s’ouvre dans un nouvel onglet) (mai 2008)
- FIPS 197 (s’ouvre dans un nouvel onglet) (mise à jour du 9 mai 2023) · FIPS 180-4 (s’ouvre dans un nouvel onglet) (août 2015) · FIPS 186-5 (s’ouvre dans un nouvel onglet) (février 2023)
- SP 800-57 partie 1 rév. 5 (s’ouvre dans un nouvel onglet) (mai 2020) · SP 800-131A rév. 2 (s’ouvre dans un nouvel onglet) (mars 2019)
- OpenSSL enc (s’ouvre dans un nouvel onglet) · dgst (s’ouvre dans un nouvel onglet) · genpkey (s’ouvre dans un nouvel onglet) · pkeyutl (s’ouvre dans un nouvel onglet) · req (s’ouvre dans un nouvel onglet) · x509 (s’ouvre dans un nouvel onglet) · s_client (s’ouvre dans un nouvel onglet) (branche
master) - Manuel GnuPG (s’ouvre dans un nouvel onglet) · commandes gpg (s’ouvre dans un nouvel onglet)
- Apple Platform Security (s’ouvre dans un nouvel onglet) · FileVault (s’ouvre dans un nouvel onglet)
- OWASP Cryptographic Storage (s’ouvre dans un nouvel onglet) · Password Storage (s’ouvre dans un nouvel onglet) · TLS (s’ouvre dans un nouvel onglet)