
🌐 Aussi en: English · Deutsch · Español
🌐 La cryptographie en pratique
Dès que vous utilisez Internet, vous interagissez en permanence avec des systèmes cryptographiques — handshakes TLS, signatures de paquets, clés SSH — que vous le remarquiez ou non.
💡 La cryptographie ne se limite pas au secret : elle garantit l’authenticité, l’intégrité et la répartition de la confiance dans des environnements hostiles.
Au fond, la cryptographie moderne repose sur deux primitives :
- Le chiffrement symétrique (secret partagé)
- Le chiffrement asymétrique (paires de clés publique/privée)
🧠 Chiffrement symétrique
La cryptographie symétrique utilise une seule clé secrète pour chiffrer et déchiffrer. C’est très efficace en calcul, et c’est la colonne vertébrale des systèmes de chiffrement à haut débit.
plaintext → [E_k] → ciphertext
ciphertext → [D_k] → plaintext⚡ Avantages
- Performances en O(n) avec un surcoût très faible
- Accélération matérielle (AES-NI, ARMv8 Crypto Extensions)
- Idéal pour les gros volumes de données (disques, charge utile TLS)
⚠️ Le problème de fond : la distribution des clés
Il vous faut un canal sûr pour échanger la clé… ce qui n’a plus grand intérêt si vous n’en avez pas déjà un.
🔧 Exemple
- AES-256 (chiffrement par blocs, blocs de 128 bits)
- Modes : GCM (authentifié), CBC (historique), CTR
🧬 Chiffrement asymétrique
La cryptographie asymétrique résout le problème de la distribution des clés en séparant identité et secret :
- Clé publique → peut être partagée librement
- Clé privée → doit rester secrète
plaintext → [encrypt with public key] → ciphertext
ciphertext → [decrypt with private key] → plaintext🔐 La sécurité repose sur des problèmes mathématiques difficiles (par ex. la factorisation pour RSA, le logarithme discret pour ECC).
📐 Algorithmes
- RSA (vieillissant mais encore très répandu)
- ECC (Curve25519, Ed25519 → standard moderne)
⚠️ La contrepartie
- Plus lent que la cryptographie symétrique
- Inadapté au chiffrement direct de gros volumes de données
⚙️ Chiffrement hybride (ce qui se passe vraiment)
Dans la vraie vie, les systèmes combinent les deux approches :
- Générer une clé de session aléatoire (symétrique)
- Chiffrer les données avec AES
- Chiffrer la clé de session avec la clé publique du destinataire
👉 C’est exactement ainsi que fonctionnent en interne TLS, PGP et les messageries modernes.
🐧 Installation (Debian)
GnuPG est l’implémentation de référence d’OpenPGP.
sudo apt update
sudo apt install gnupggpg --versionCette commande vérifie votre backend cryptographique, les algorithmes pris en charge et la version.
🛠️ GnuPG et le stockage des clés sous le capot
GnuPG range le matériel cryptographique dans un trousseau structuré :
~/.gnupg| Composant | Rôle |
|---|---|
| private-keys-v1.d/ | les blobs des clés privées proprement dits (protégés) |
| pubring.kbx | base de données des clés publiques (format keybox) |
| trustdb.gpg | graphe de confiance / Web of Trust |
🚨 Si votre clé privée est compromise, c’est toute votre identité qui l’est.
🌍 Exporter votre clé publique
gpg --list-keysgpg --armor --export KEY_ID > publickey.ascL’armure ASCII (ASCII armor), c’est du Base64 plus des en-têtes : la clé peut ainsi transiter sans risque par des systèmes basés sur du texte.
🔍 Empreinte (la racine de confiance)
gpg --fingerprint👉 L’empreinte (fingerprint) est un hash cryptographique de la clé publique — en pratique, son identité immuable.
C’est elle que vous vérifiez par un autre canal (par ex. en personne, via Signal, sur une carte de visite).
🔐 Chiffrer un message (pas à pas)
📥 Importer la clé du destinataire
gpg --import publickey.asc✉️ Chiffrer un fichier
echo "Attack at dawn" > message.txt
gpg --encrypt --recipient "email@example.com" message.txtOn obtient un fichier à chiffrement hybride qui contient :
- La clé de session chiffrée
- La charge utile chiffrée
- Des métadonnées (algorithme, ID de clé)
📨 Chiffrer directement dans le terminal (armure ASCII)
gpg --armor --encrypt --recipient "email@example.com"Terminez la saisie avec CTRL + D.
🔓 Déchiffrement
gpg --decrypt message.txt.gpgNe faites jamais confiance à une clé sans avoir vérifié son empreinte — sinon, vous êtes exposé aux attaques MITM.
🌐 Publier votre clé
PGP Public Key
Key ID: 75CA893CEF68BC6B
Fingerprint:
15AD 43D9 20A3 BDBA B2EF
AD59 75CA 893C EF68 BC6B
Download:
https://example.com/publickey.asc
Bonne pratique : l’héberger vous-même et, si vous le souhaitez, la répliquer sur des serveurs de clés.
📡 Serveurs de clés et distribution
gpg --send-keys KEY_ID
gpg --recv-keys KEY_IDLes serveurs de clés modernes fonctionnent en ajout seul (append-only) → impossible de vraiment supprimer une clé.
✍️ Signatures numériques
gpg --sign file.txt
gpg --verify file.txt.gpgLes signatures garantissent :
- L’intégrité → les données n’ont pas été modifiées
- L’authenticité → signées par le détenteur de la clé privée
- La non-répudiation → impossible de nier en être l’auteur
🏛️ Modèles de confiance
Centralisé (PKI)
- Autorités de certification (CA)
- Utilisé pour HTTPS
Décentralisé (Web of Trust)
- Les utilisateurs signent mutuellement leurs clés
- La confiance est transitive
👉 GPG s’appuie sur un graphe de confiance décentralisé plutôt que sur une autorité centrale.
🧾 Conclusion
- Symétrique → rapide, efficace
- Asymétrique → règle l’identité et l’échange de clés
- Hybride → le standard dans la vraie vie
- GnuPG → mise en œuvre concrète d’OpenPGP
La cryptographie n’élimine pas la confiance — elle déplace simplement l’endroit où vous la placez.
📬 À vous de jouer
J’ai moi-même déroulé tous les exemples ci-dessus pour mieux comprendre comment la cryptographie fonctionne concrètement, dans des scénarios réels.
Si vous voulez essayer à votre tour, n’hésitez pas à télécharger ma clé publique sur la page des mentions légales :
🔐 Je serais ravi de recevoir un message chiffré de votre part. Je vous répondrai aussi vite que possible — et bien sûr chiffré, lui aussi 😉
C’est une excellente façon de tester votre configuration et de vivre de bout en bout le fonctionnement de la cryptographie à clé publique.




