Cryptography
La cryptographie est l'art de protéger l'information en la rendant illisible pour quiconque ne possède pas la clé. Découvre les algorithmes, les protocoles et les applications qui sécurisent le monde numérique.
- Comprendre les principes fondamentaux de la cryptographie
- Différencier chiffrement symétrique et asymétrique
- Connaître les fonctions de hashing et leurs usages
- Comprendre la PKI et les certificats numériques
- Identifier les applications concrètes de la cryptographie
🔐 21.1 — Introduction à la cryptographie
La cryptographie (du grec kryptos = caché, graphein = écrire) est la science qui protège les informations en les transformant en un format illisible. Seules les personnes possédant la bonne clé peuvent les déchiffrer.
Imagine un coffre-fort. Tu mets tes documents importants à l'intérieur et tu le verrouilles avec une clé. Même si quelqu'un vole le coffre, il ne peut pas lire les documents sans la clé. La cryptographie fait exactement la même chose avec les données numériques.
Un peu d'histoire
Jules César utilisait un système de substitution simple : chaque lettre du message était décalée d'un nombre fixe dans l'alphabet. Par exemple, avec un décalage de 3 :
| Original | Chiffré |
|---|---|
| A B C D E | D E F G H |
| HELLO | KHOOR |
Simple mais efficace à l'époque ! Aujourd'hui, ce chiffrement se casse en secondes par brute force (seulement 26 possibilités).
L'Allemagne nazie utilisait la machine Enigma pour chiffrer ses communications militaires. Chaque lettre passait par plusieurs rotors qui changeaient de position après chaque frappe, créant un chiffrement polyalphabétique extrêmement complexe.
Le décryptage par Alan Turing et l'équipe de Bletchley Park a contribué à raccourcir la Seconde Guerre mondiale de 2 ans selon les historiens.
La cryptographie moderne est née avec l'informatique :
- 1976 — Diffie et Hellman inventent l'échange de clés asymétrique
- 1977 — DES devient le premier standard de chiffrement
- 1977 — RSA : premier algorithme de chiffrement asymétrique pratique
- 2001 — AES remplace DES comme standard mondial
- Aujourd'hui — recherche en cryptographie post-quantique
Terminologie essentielle
| Terme | Définition | Analogie |
|---|---|---|
| Plaintext | Le message original, lisible | La lettre que tu écris |
| Ciphertext | Le message chiffré, illisible | La lettre dans l'enveloppe scellée |
| Key (clé) | Le secret qui permet de chiffrer/déchiffrer | La clé du coffre-fort |
| Algorithm | La méthode mathématique de transformation | Le mécanisme de la serrure |
| Encryption | Transformer le plaintext en ciphertext | Mettre la lettre dans le coffre et verrouiller |
| Decryption | Transformer le ciphertext en plaintext | Ouvrir le coffre avec la clé et lire la lettre |
🔑 21.2 — Chiffrement symétrique (Symmetric Encryption)
Le chiffrement symétrique utilise la même clé pour chiffrer et déchiffrer les données. C'est la méthode la plus ancienne et la plus rapide.
Imagine un cadenas à code. Tu donnes le même code à ton ami. Vous pouvez tous les deux ouvrir et fermer le cadenas avec ce même code. Le problème ? Il faut trouver un moyen sûr de transmettre le code à ton ami sans que quelqu'un ne l'intercepte.
"HELLO WORLD"
Algorithme + Clé secrète
"X7#kL9@mQ2"
"X7#kL9@mQ2"
Algorithme + Clé secrète
"HELLO WORLD"
Algorithmes symétriques principaux
DES & 3DES (Data Encryption Standard)
- DES : clé de 56 bits, développé en 1977 par IBM/NIST
- Considéré obsolète — cassé par brute force en moins de 24h
- 3DES : applique DES trois fois avec 2 ou 3 clés (112 ou 168 bits effectifs)
- 3DES est encore utilisé dans certains systèmes bancaires mais est en cours de retrait
AES (Advanced Encryption Standard)
- Le standard mondial actuel depuis 2001
- Clés de 128, 192 ou 256 bits
- Algorithme Rijndael, sélectionné par le NIST parmi 15 candidats
- Utilisé par les gouvernements, les banques, HTTPS, Wi-Fi, VPN...
- Très rapide, supporté par les processeurs modernes (AES-NI)
RC4 (Rivest Cipher 4)
- Chiffrement par flux (stream cipher) contrairement à DES/AES qui sont par blocs
- Très rapide, clé de taille variable (40 à 2048 bits)
- Utilisé historiquement dans WEP (Wi-Fi) et SSL/TLS
- Considéré vulnérable — interdit par la RFC 7465 dans TLS
Avantages et inconvénients
| Avantages | Inconvénients |
|---|---|
| Très rapide (idéal pour chiffrer de gros volumes) | Échange de clé problématique (comment transmettre la clé de façon sécurisée ?) |
| Faible consommation de ressources | Scalabilité : n utilisateurs nécessitent n(n-1)/2 clés |
| Algorithmes bien éprouvés (AES) | Pas de non-répudiation (les deux parties ont la même clé) |
🔐 21.3 — Chiffrement asymétrique (Asymmetric Encryption)
Le chiffrement asymétrique utilise une paire de clés : une clé publique (partagée avec tout le monde) et une clé privée (gardée secrète). Ce qui est chiffré avec l'une ne peut être déchiffré qu'avec l'autre.
Imagine une boîte aux lettres. Tout le monde connaît l'adresse de ta boîte aux lettres (clé publique) et peut y déposer du courrier. Mais seul toi possèdes la clé pour ouvrir la boîte et lire le courrier (clé privée). Tu n'as jamais besoin de partager ta clé privée avec qui que ce soit !
Plaintext : "SECRET"
Clé publique
de Bob
Chiffre avec la clé publique de Bob
Transit sur le réseau
Reçu par Bob
Clé privée
de Bob
Déchiffre avec sa clé privée
Plaintext : "SECRET"
Algorithmes asymétriques principaux
RSA (Rivest-Shamir-Adleman)
- L'algorithme asymétrique le plus utilisé depuis 1977
- Basé sur la difficulté de factoriser de très grands nombres premiers
- Tailles de clé : 2048, 3072 ou 4096 bits (minimum 2048 recommandé)
- Utilisé pour le chiffrement, la signature numérique et l'échange de clés
- Plus lent que le chiffrement symétrique (~1000x)
ECC (Elliptic Curve Cryptography)
- Basé sur les courbes elliptiques sur des corps finis
- Clés beaucoup plus courtes pour un niveau de sécurité équivalent à RSA
- ECC 256 bits ≈ RSA 3072 bits en termes de sécurité
- Idéal pour les appareils mobiles et IoT (moins de ressources nécessaires)
- Utilisé dans TLS 1.3, Bitcoin, et les signatures numériques modernes
Diffie-Hellman (DH) / ECDH
- Algorithme d'échange de clés (pas de chiffrement direct)
- Permet à deux parties de créer un secret partagé sur un canal non sécurisé
- Fondement du protocole HTTPS et de nombreux VPN
- ECDH : version basée sur les courbes elliptiques, plus performante
Analogie des couleurs : Alice et Bob choisissent chacun une couleur secrète. Ils mélangent leur couleur avec une couleur commune publique, échangent les mélanges, puis ajoutent leur couleur secrète au mélange reçu. Ils obtiennent la même couleur finale sans jamais avoir partagé leurs couleurs secrètes !
Signature numérique (Digital Signature)
La signature numérique utilise le chiffrement asymétrique à l'envers :
- L'expéditeur signe un hash du message avec sa clé privée
- Le destinataire vérifie la signature avec la clé publique de l'expéditeur
Cela garantit l'authentification (qui a signé), l'intégrité (le message n'a pas été modifié) et la non-répudiation (l'expéditeur ne peut pas nier avoir signé).
Symétrique vs Asymétrique
| Critère | Symétrique | Asymétrique |
|---|---|---|
| Clés | 1 clé partagée | Paire publique/privée |
| Vitesse | Très rapide | Lent (~1000x plus lent) |
| Usage principal | Chiffrement de données en masse | Échange de clés, signatures |
| Échange de clés | Problématique | Pas de problème |
| Non-répudiation | Non | Oui |
| Exemples | AES, 3DES, RC4 | RSA, ECC, DH |
#️⃣ 21.4 — Hashing (fonctions de hachage)
Le hashing n'est pas du chiffrement. C'est une fonction à sens unique (one-way) qui transforme une entrée de n'importe quelle taille en une empreinte de taille fixe. On ne peut pas retrouver l'entrée à partir du hash.
Imagine un mixeur. Tu mets une pomme dedans, tu obtiens une purée avec une texture unique. Même si tu connais la purée, impossible de recréer la pomme originale. Et si tu changes ne serait-ce qu'un pépin, la purée sera complètement différente.
Propriétés d'une bonne fonction de hachage
Impossible de retrouver l'entrée à partir du hash. On ne peut pas "déhasher".
Quelle que soit la taille de l'entrée (1 octet ou 1 To), le hash a toujours la même longueur.
Quasi impossible de trouver deux entrées différentes qui produisent le même hash.
Algorithmes de hachage
| Algorithme | Taille du hash | Statut | Usage |
|---|---|---|---|
| MD5 | 128 bits (32 hex) | ⛔ Vulnérable (collisions trouvées) | Vérification de fichiers uniquement |
| SHA-1 | 160 bits (40 hex) | ⚠️ Déprécié (collisions démontrées en 2017) | En cours de retrait |
| SHA-256 | 256 bits (64 hex) | ✅ Sûr | Standard actuel, Bitcoin, certificats |
| SHA-3 | Variable (224-512) | ✅ Sûr | Alternative à SHA-2, architecture différente (Keccak) |
HMAC (Hash-based Message Authentication Code)
HMAC combine une fonction de hachage avec une clé secrète pour produire un code d'authentification. Il garantit à la fois l'intégrité et l'authentification du message.
Formule : HMAC = Hash(clé + message)
Utilisé dans : API authentication, cookies de session, vérification de tokens JWT.
Usages du hashing
Les mots de passe ne sont jamais stockés en clair. On stocke le hash du mot de passe. Lors de la connexion, on hash le mot de passe saisi et on compare les deux hashs.
Bonnes pratiques : utiliser un salt (valeur aléatoire ajoutée avant le hashing) et un algorithme lent comme bcrypt ou Argon2.
Quand tu télécharges un fichier, le site fournit souvent un hash (checksum). Tu peux calculer le hash du fichier téléchargé et le comparer pour vérifier qu'il n'a pas été modifié.
Chaque fichier a un hash unique (empreinte digitale). Les analystes utilisent les hashs pour identifier les malwares connus et vérifier l'intégrité des preuves numériques.
🏛️ 21.5 — PKI (Public Key Infrastructure)
La PKI est le système de confiance qui permet de vérifier l'identité des parties dans une communication chiffrée. Sans PKI, comment savoir si la clé publique que tu reçois appartient bien à la bonne personne ?
Imagine un passeport. Tu ne fais pas confiance à quelqu'un juste parce qu'il dit son nom. Tu demandes un passeport, délivré par un gouvernement de confiance (la CA). La PKI, c'est le système de passeports du monde numérique.
Composants de la PKI
CA — Certificate Authority (Autorité de certification)
Organisation de confiance qui délivre des certificats numériques. Elle vérifie l'identité du demandeur avant de signer son certificat.
- Root CA : l'autorité racine (ex : DigiCert, Let's Encrypt, GlobalSign)
- Intermediate CA : déléguée par la Root CA pour émettre des certificats
- RA (Registration Authority) : vérifie l'identité avant de transmettre à la CA
Les Root CA sont pré-installées dans les navigateurs et systèmes d'exploitation.
Certificats numériques X.509
Un certificat numérique contient :
- Sujet : le nom de domaine ou l'entité (ex : www.example.com)
- Clé publique du sujet
- Émetteur : la CA qui a signé le certificat
- Validité : dates de début et de fin
- Signature numérique de la CA
- Numéro de série unique
Types de validation :
- DV (Domain Validation) : vérifie le contrôle du domaine
- OV (Organization Validation) : vérifie l'organisation
- EV (Extended Validation) : vérification poussée de l'entité légale
Chaîne de confiance (Chain of Trust)
La confiance suit une hiérarchie :
- Root CA : certificat auto-signé, pré-installé dans le navigateur
- Intermediate CA : signé par la Root CA
- Certificat du serveur : signé par l'Intermediate CA
Le navigateur remonte la chaîne pour vérifier chaque signature jusqu'à une Root CA de confiance. Si un maillon est invalide, la connexion est refusée.
Le SSL/TLS Handshake
Quand tu visites un site HTTPS, voici ce qui se passe en coulisses :
- Client Hello : le navigateur envoie les versions TLS et algorithmes supportés
- Server Hello : le serveur choisit les algorithmes et envoie son certificat
- Vérification : le navigateur vérifie le certificat via la chaîne de confiance
- Échange de clés : utilisation de Diffie-Hellman ou RSA pour créer un secret partagé
- Clé de session : une clé symétrique est dérivée du secret partagé
- Communication chiffrée : toutes les données sont chiffrées avec AES (symétrique)
🌐 21.6 — Applications de la cryptographie
La cryptographie est partout dans notre vie numérique. Voici les principales applications :
HTTPS = HTTP + TLS. Chaque fois que tu vois le cadenas dans la barre d'adresse, la communication est chiffrée.
- Confidentialité : les données sont chiffrées (AES)
- Intégrité : HMAC vérifie que les données ne sont pas modifiées
- Authentification : le certificat vérifie l'identité du serveur
Les VPN créent un tunnel chiffré entre deux points :
- IPsec : protocole standard, utilise IKE pour l'échange de clés, ESP pour le chiffrement (AES), AH pour l'authentification
- OpenVPN : solution open source utilisant TLS pour l'échange de clés
- WireGuard : VPN moderne, minimaliste et ultra-rapide, utilisant ChaCha20 et Curve25519
- PGP (Pretty Good Privacy) / GPG : chiffrement de bout en bout des emails, modèle de confiance décentralisé (Web of Trust)
- S/MIME : standard basé sur les certificats PKI pour signer et chiffrer les emails, intégré dans Outlook et la plupart des clients email
SSH permet une connexion à distance sécurisée aux serveurs :
- Authentification par clé publique/privée (plus sûr que les mots de passe)
- Chiffrement du trafic avec AES
- Vérification de l'intégrité avec HMAC
- Remplace les protocoles non sécurisés comme Telnet et rlogin
| Protocole | Chiffrement | Statut |
|---|---|---|
| WEP | RC4 | ⛔ Totalement cassé |
| WPA | TKIP (RC4 amélioré) | ⚠️ Déprécié |
| WPA2 | AES-CCMP | ✅ Standard actuel |
| WPA3 | AES-GCMP + SAE | ✅ Dernière génération |
WPA3 introduit SAE (Simultaneous Authentication of Equals), qui protège contre les attaques par dictionnaire hors ligne et offre le forward secrecy.
🔬 21.7 — Lab : Chiffrement César interactif
Expérimente le chiffrement de César ! Saisis un message et un décalage pour voir comment le chiffrement par substitution fonctionne.
FHEHUVHFXULWBIndice : essaie différents décalages jusqu'à obtenir un mot lisible en anglais !
🔑 21.8 — Concepts complementaires de cryptographie
Classes de certificats numeriques
Les certificats numeriques sont organises en classes qui refletent le niveau de confiance et de verification effectue :
| Classe | Usage | Verification |
|---|---|---|
| Class 0 | Tests et developpement | Aucune — certificats de test uniquement |
| Class 1 | Utilisateurs individuels, email | Verification de l'adresse email uniquement |
| Class 2 | Organisations, logiciels | Verification de l'identite de l'organisation |
| Class 3 | Serveurs, code signing | Verification approfondie de l'identite + documents legaux |
| Class 4 | Transactions B2B en ligne | Verification rigoureuse entre entreprises |
| Class 5 | Organisations gouvernementales/militaires | Niveau de verification le plus eleve |
Code Signing (Signature de code)
Le code signing est l'utilisation de signatures numeriques pour verifier l'integrite des executables telecharges. Quand un developpeur signe son logiciel avec sa cle privee :
- L'utilisateur peut verifier que le logiciel n'a pas ete modifie depuis la signature
- L'utilisateur peut confirmer l'identite du developpeur (authenticite)
- Le systeme d'exploitation affiche un avertissement si le code n'est pas signe ou si la signature est invalide
Authentification de la source
L'authentification de la source (source authentication) est une mesure de securite qui garantit que les donnees proviennent bien de l'emetteur annonce. Elle fonctionne en recalculant un code predetermine (HMAC ou hash avec cle secrete) et en le comparant avec celui recu :
- L'emetteur calcule un code d'authentification (HMAC) avec les donnees + cle secrete partagee
- Le recepteur recalcule le meme code avec les memes donnees et la meme cle
- Si les codes correspondent → la source est authentique et les donnees sont integres
✋ 21.9 — Non-répudiation
La non-répudiation est le principe de sécurité qui garantit qu'une partie ne peut pas nier avoir effectué une action. Elle complète la triade CIA en ajoutant la dimension de preuve irréfutable.
| Mécanisme | Ce qu'il prouve | Technologie |
|---|---|---|
| Signature numérique | L'identité de l'auteur et l'intégrité du message | RSA, DSA, ECDSA avec PKI |
| Horodatage (Timestamping) | Le moment exact où l'action a été effectuée | Autorité d'horodatage (TSA) |
| Logs d'audit | Qui a fait quoi et quand | Syslog centralisé, SIEM, blockchain |
| Reçu de transaction | La transaction a bien été effectuée | Accusé de réception signé |
- Confidentialité — Seuls les autorisés accèdent à l'information (chiffrement)
- Intégrité — L'information n'a pas été modifiée (hashing)
- Disponibilité — L'information est accessible quand nécessaire (redondance)
- Non-répudiation — L'auteur ne peut pas nier son action (signature numérique)
📝 21.10 — Quiz de revision
🔬 21.7 — Lab : Cryptographie en pratique
Utilise les commandes OpenSSL pour explorer la cryptographie en pratique : hashing, chiffrement et certificats.
Exercice : classe chaque algorithme dans sa categorie
Points clés du Module 21
- La cryptographie protège la confidentialité, l'intégrité et l'authentification des données
- Le chiffrement symétrique (AES) est rapide mais pose le problème de l'échange de clés
- Le chiffrement asymétrique (RSA, ECC) résout l'échange de clés mais est plus lent
- Le hashing (SHA-256) est une fonction à sens unique utilisée pour l'intégrité et les mots de passe
- HMAC combine hashing + clé secrète pour l'authentification des messages
- La PKI et les certificats X.509 établissent la confiance numérique
- Le TLS handshake utilise le chiffrement hybride (asymétrique puis symétrique)
- MD5 et SHA-1 sont obsolètes — utiliser SHA-256 minimum
- Les applications incluent HTTPS, VPN (IPsec), SSH, email (PGP/S-MIME), Wi-Fi (WPA2/WPA3)
- La non-répudiation empêche de nier une action — assurée par les signatures numériques
- Le modèle CIAN étend la triade CIA avec la non-répudiation