Si la cryptographie Ă©tait un chĂąteau fort, les primitives cryptographiques seraient les briques, le mortier et la porte blindĂ©e. Individuellement, elles paraissent simples, mais câest leur combinaison qui permet de bĂątir des systĂšmes robustes : chiffrement des disques, messageries sĂ©curisĂ©es, signatures Ă©lectroniques, paiements en ligne⊠Bref, toute notre vie numĂ©rique repose sur elles.
đ§± Câest quoi une âprimitiveâ ?
Une primitive cryptographique, câest une fonction de base qui sert de brique Ă©lĂ©mentaire. Elle est :
- Mathématiquement solide (difficile à inverser ou à casser),
- Bien définie (spécification claire, implémentations multiples),
- RĂ©utilisable (on peut lâemployer dans des constructions plus grandes).
đ Exemple : SHA-256 (fonction de hachage) est une primitive, mais la blockchain Bitcoin est une construction qui lâutilise.
đ Les grandes familles de primitives
1. Les fonctions de hachage (hash functions)
Une fonction de hachage prend une entrée de taille variable (un mot de passe, un fichier) et produit une empreinte de taille fixe (ex. 256 bits).
Caractéristiques :
- DĂ©terministe : la mĂȘme entrĂ©e donne toujours le mĂȘme rĂ©sultat.
- Non rĂ©versible : impossible de retrouver lâentrĂ©e depuis le hash.
- RĂ©sistante aux collisions : difficile de trouver deux entrĂ©es diffĂ©rentes avec le mĂȘme hash.
đ Exemple concret :
- SHA-256 dans Bitcoin (preuve de travail),
- Stockage des mots de passe (bcrypt, Argon2 â hash renforcĂ©).
â ïž PiĂšge classique : stocker des mots de passe en MD5⊠autant laisser la clĂ© de la banque sous le paillasson.
2. Les générateurs de nombres aléatoires (RNG)
La crypto repose sur le hasard⊠mais un hasard vraiment aléatoire.
- Si ton générateur est prévisible, tes clés le sont aussi.
- Un mauvais RNG, et tout ton systĂšme tombe comme un chĂąteau de cartes.
đ Exemple cĂ©lĂšbre : en 2008, Debian avait patchĂ© OpenSSL de maniĂšre maladroite â des millions de clĂ©s gĂ©nĂ©rĂ©es Ă©taient⊠prĂ©visibles. RĂ©sultat : carnage sĂ©curitaire.
3. Le chiffrement symétrique (blocs & flux)
Câest la brique de base pour rendre illisible une donnĂ©e.
- Algorithmes par blocs : AES (128, 192, 256 bits).
- Algorithmes par flux : ChaCha20 (rapide, utilisé dans TLS moderne).
On combine souvent ces briques avec des modes dâopĂ©ration (CBC, GCMâŠ) pour ajouter intĂ©gritĂ© et sĂ©curitĂ©.
đ Exemple concret : chiffrement disque BitLocker (AES-CBC), ou messageries type Signal (AES + ChaCha20).
4. Les MAC (Message Authentication Codes)
Un MAC permet de vĂ©rifier lâintĂ©gritĂ© et lâauthenticitĂ© dâun message.
- On ajoute une sorte de âtampon secretâ pour sâassurer quâun message nâa pas Ă©tĂ© modifiĂ©.
- Exemple : HMAC-SHA256 (utilisé dans les API, JWT, OAuth).
â ïž Erreur courante : croire quâun simple hash garantit lâauthenticitĂ© â non, il faut une clĂ© partagĂ©e (sinon nâimporte qui peut recalculer le hash).
5. Les primitives asymétriques (un avant-goût)
MĂȘme si on y revient dans lâĂ©pisode 5, rappelons quâil existe des briques basĂ©es sur des mathĂ©matiques costaudes (factorisation, courbes elliptiques).
Elles servent Ă :
- Générer des paires de clés (publique/privée),
- Signer des documents,
- Ăchanger des secrets de maniĂšre sĂ©curisĂ©e.
đ Exemple concret : RSA, Diffie-Hellman, courbes elliptiques (ECC).
đïž Des briques aux constructions
Une fois quâon a les primitives, il faut les assembler en protocoles et constructions.
Exemples :
- TLS (HTTPS) : utilise RSA/ECC pour lâĂ©change de clĂ©s, AES pour le chiffrement, HMAC pour lâintĂ©gritĂ©.
- Blockchain : hachage pour les blocs, signatures pour valider les transactions.
- VPN/IPSec : combine asymétrique pour initier la session + symétrique pour la rapidité.
Chaque fois, on retrouve les mĂȘmes briques, mais combinĂ©es intelligemment.
đš SchĂ©ma mental simple
Imagine :
- đ ClĂ© â gĂ©nĂ©rĂ©e par RNG
- đŠ Message â chiffrĂ© avec AES
- đ§Ÿ Hash â SHA-256 pour rĂ©sumĂ©
- â HMAC â authentifie le message
- đ RSA/ECC â Ă©change la clĂ© AES en toute sĂ©curitĂ©
âĄïž Câest exactement ce qui se passe chaque fois que tu te connectes en HTTPS sur ton navigateur.
â ïž Les erreurs classiques
- Réinventer la roue : coder son propre algo crypto (erreur fatale).
- Mauvais choix de primitive : MD5 ou SHA1 encore utilisés en entreprise.
- Mauvais assemblage : chiffrement sans intĂ©gritĂ© â vulnĂ©rable aux attaques.
- Clés statiques et jamais renouvelées : un classique dans les systÚmes industriels.
đ Mini-fiche rĂ©cap (Ă retenir)
- Les primitives sont les briques de base (hash, RNG, chiffrement, MAC).
- Elles doivent ĂȘtre utilisĂ©es dans des constructions Ă©prouvĂ©es (protocoles, bibliothĂšques).
- La sĂ©curitĂ© dâun systĂšme dĂ©pend autant du choix des briques que de leur assemblage.
âš Conclusion :
La cryptographie nâest pas une magie noire, mais un jeu de Lego gĂ©ant. Avec de bonnes briques, bien posĂ©es, on construit des forteresses numĂ©riques. Avec des briques mal choisies ou mal assemblĂ©es, on obtient⊠un chĂąteau de sable.
