Ce guide complet explore les concepts avancés de chiffrement, les algorithmes et les protocoles utilisés dans les systèmes de communication sécurisée modernes. Idéal pour les développeurs et les professionnels de la sécurité.
Algorithmes de chiffrement symétrique
AES (Advanced Encryption Standard)
La référence en matière de chiffrement symétrique, adoptée par le gouvernement américain en 2001.
Caractéristiques principales
- Tailles de clé : 128, 192 ou 256 bits
- Taille de bloc : 128 bits
- Rounds : 10, 12 ou 14 selon la taille de la clé
- Performance : Hautement optimisé, accélération matérielle disponible
Modes courants
- GCM (Galois/Counter Mode) : Chiffrement authentifié, recommandé pour la plupart des cas d'usage
- CBC (Cipher Block Chaining) : Mode traditionnel, nécessite un MAC séparé
- CTR (Counter) : Parallélisable, utilisé dans certains protocoles
ChaCha20
Chiffrement par flux moderne conçu par Daniel J. Bernstein, de plus en plus populaire comme alternative à AES.
Avantages
- Plus rapide qu'AES sur les appareils sans accélération matérielle
- Implémentation en temps constant (résistant aux attaques temporelles)
- Conception simple, plus facile à implémenter de manière sécurisée
- Utilisé avec Poly1305 pour le chiffrement authentifié
Chiffrement asymétrique
RSA (Rivest-Shamir-Adleman)
Largement utilisé pour l'échange de clés et les signatures numériques.
Considérations clés
- Taille de clé minimale : 2048 bits (4096 bits recommandés pour la sécurité à long terme)
- Performance : Coûteux en calcul comparé au chiffrement symétrique
- Schémas de padding : Utilise OAEP pour le chiffrement, PSS pour les signatures
- Menace quantique : Vulnérable aux ordinateurs quantiques (algorithme de Shor)
Elliptic Curve Cryptography (ECC)
Alternative plus efficace à RSA avec une sécurité équivalente pour des tailles de clé plus petites.
Courbes populaires
- Curve25519 : Conçue pour l'échange de clés ECDH, largement adoptée
- Ed25519 : Pour les signatures numériques, utilisée dans SSH, GPG
- P-256 (secp256r1) : Standard NIST, largement supporté
- P-384, P-521 : Niveaux de sécurité supérieurs
Avantages par rapport à RSA
- ECC 256 bits ≈ sécurité RSA 3072 bits
- Calcul plus rapide
- Clés et signatures plus petites
- Besoins en bande passante et stockage réduits
Protocoles d'échange de clés
Diffie-Hellman (DH)
Permet à deux parties d'établir un secret partagé sur un canal non sécurisé.
Variantes
- DH classique : Implémentation originale
- ECDH : Version à courbe elliptique (plus efficace)
- X25519 : ECDH moderne utilisant Curve25519
Perfect Forward Secrecy (PFS)
Garantit que les communications passées restent sécurisées même si les clés à long terme sont compromises.
Implémentation
- Génère des paires de clés éphémères pour chaque session
- Détruit les clés de session après usage
- Utilisé dans TLS 1.3, Signal Protocol, etc.
Fonctions de hachage
Famille SHA-2
- SHA-256 : Sortie de 256 bits, largement utilisé
- SHA-384, SHA-512 : Niveaux de sécurité supérieurs
- Applications : Signatures numériques, validation de certificats, hachage de mots de passe (avec les techniques appropriées)
SHA-3 (Keccak)
- Construction différente de SHA-2 (fonction éponge)
- Résistant aux attaques par extension de longueur
- Adapté aux applications nécessitant des marges de sécurité élevées
BLAKE2/BLAKE3
- Plus rapide que SHA-2 et SHA-3
- Cryptographiquement sûr
- BLAKE3 : Hautement parallélisable, excellent pour les grandes données
Key Derivation Functions (KDFs)
PBKDF2 (Password-Based Key Derivation Function 2)
- Objectif : Dériver des clés cryptographiques à partir de mots de passe
- Itérations : Minimum 100 000 (recommandation OWASP)
- Cas d'usage : Stockage de mots de passe, dérivation de clés
Argon2
Gagnant du Password Hashing Competition (2015), recommandé pour les nouvelles applications.
Variantes
- Argon2id : Hybride (recommandé pour la plupart des cas d'usage)
- Argon2i : Optimisé contre les attaques par canal auxiliaire
- Argon2d : Résistance maximale aux attaques GPU
scrypt
- Fonction gourmande en mémoire (résistante aux attaques matérielles)
- Utilisée par Litecoin, Tarsnap
- Bon équilibre entre sécurité et compatibilité
Message Authentication Codes (MACs)
HMAC (Hash-based MAC)
- Combine une fonction de hachage avec une clé secrète
- Fournit authentification et intégrité
- Courants : HMAC-SHA256, HMAC-SHA512
Poly1305
- Authentificateur à usage unique
- Utilisé avec ChaCha20 pour le chiffrement authentifié
- Rapide et en temps constant
Chiffrement authentifié
Pourquoi c'est important
Le chiffrement seul ne garantit pas l'intégrité. Un attaquant pourrait modifier le texte chiffré sans détection. Le chiffrement authentifié résout ce problème.
AEAD (Authenticated Encryption with Associated Data)
- AES-GCM : Le plus largement supporté
- ChaCha20-Poly1305 : Meilleur sur les appareils mobiles
- AES-CCM : Utilisé dans certains protocoles sans fil
Signatures numériques
Signatures RSA
- Padding : Utilise PSS (Probabilistic Signature Scheme)
- Fonction de hachage : SHA-256 ou supérieur
- Taille de clé : 2048 bits minimum
ECDSA (Elliptic Curve Digital Signature Algorithm)
- Signatures plus petites que RSA
- Nécessite une génération de nonce soigneuse (RNG faible = clé compromise)
- Variante déterministe (RFC 6979) recommandée
Ed25519
- Déterministe (pas de RNG requis)
- Génération et vérification de signature rapides
- Signatures petites (64 octets)
- Résistant aux attaques par canal auxiliaire
Protocoles modernes
Signal Protocol
Protocole de chiffrement de bout en bout de pointe utilisé par Signal, WhatsApp, Facebook Messenger.
Caractéristiques principales
- Double Ratchet : Met à jour continuellement les clés
- Perfect Forward Secrecy : Les messages passés restent sécurisés
- Post-Compromise Security : Récupère après une compromission de clé
- Asynchrone : Fonctionne même quand le destinataire est hors ligne
TLS 1.3
Dernière version du protocole Transport Layer Security.
Améliorations
- Suppression des algorithmes faibles et suites de chiffrement
- Fournit toujours le forward secrecy
- Handshake plus rapide (1-RTT, option 0-RTT)
- Server Hello chiffré
Noise Protocol Framework
Framework de protocole cryptographique moderne pour construire des systèmes de communication sécurisés.
Applications
- WireGuard VPN
- Lightning Network
- Messagerie I2P
Cryptographie post-quantique
La menace
Les ordinateurs quantiques peuvent casser RSA et ECC en utilisant l'algorithme de Shor. Les algorithmes symétriques sont moins affectés mais nécessitent des clés plus grandes.
Candidats post-quantiques NIST
- Kyber : Encapsulation de clé basée sur les réseaux
- Dilithium : Signatures numériques basées sur les réseaux
- SPHINCS+ : Signatures basées sur le hachage
Stratégie de transition
- Approche hybride : Combine les algorithmes classiques et post-quantiques
- Augmente les tailles de clé symétrique à 256 bits
- Surveille le processus de standardisation NIST
- Planifie l'agilité algorithmique
Bonnes pratiques d'implémentation
Ne développe pas ta propre crypto
Utilise des bibliothèques établies et évaluées par les pairs :
- libsodium : Haut niveau, facile à utiliser
- OpenSSL : Complète, largement supportée
- BoringSSL : Fork OpenSSL de Google
- Ring : Bibliothèque cryptographique Rust
Gestion des clés
- Utilise des modules de sécurité matériels (HSM) pour les clés critiques
- Implémente des politiques de rotation des clés
- Ne code jamais les clés en dur dans le code source
- Utilise la dérivation de clés pour plusieurs usages
- Supprime de manière sécurisée les clés de la mémoire après usage
Génération de nombres aléatoires sécurisée
- Utilise un RNG cryptographiquement sûr (CSPRNG)
- N'utilise jamais les fonctions rand() standard
- RNG du système d'exploitation : /dev/urandom (Linux), CryptGenRandom (Windows)
- Spécifiques au langage : crypto.randomBytes (Node.js), module secrets (Python)
Prévention des attaques temporelles
- Utilise une comparaison en temps constant pour les secrets
- Évite les branchements basés sur des données secrètes
- Sois conscient des attaques temporelles via le cache
- Utilise des bibliothèques conçues avec résistance aux attaques temporelles
Tests et validation
Audits de sécurité
- Tests de pénétration réguliers
- Revues de code par des experts en sécurité
- Audits de sécurité tiers
- Programmes de bug bounty
Conformité
- FIPS 140-2/3 : Standard du gouvernement américain
- Common Criteria : Certification de sécurité internationale
- PCI DSS : Exigences de l'industrie des cartes de paiement
Ressources pour approfondir
Livres
- "Cryptography Engineering" par Ferguson, Schneier et Kohno
- "Serious Cryptography" par Jean-Philippe Aumasson
- "Applied Cryptography" par Bruce Schneier
Ressources en ligne
- Cryptopals Crypto Challenges
- Cours de cryptographie de Stanford (Coursera)
- IACR ePrint Archive
- Crypto Stack Exchange