Générer des clés, des nonces et des IV en toute sécurité
Utilisez secrets, os.urandom et des enveloppes sûres en Python et Node.
Générer des clés, des nonces et des IV en toute sécurité est une leçon Cryptology Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cryptology Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cryptology Academy comprend 4 leçons au total.
Les trois catégories
Trois catégories distinctes de valeurs cryptographiques doivent être générées de manière sûre : (1) les clés — à longue durée de vie, elles doivent être imprévisibles et secrètes ; (2) les IV — propres à chaque message, ils peuvent être publics mais doivent être imprévisibles (CBC) ou uniques (GCM) ; (3) les nonces — ils doivent être uniques à chaque utilisation, mais peuvent être aléatoires ou non.
Clés symétriques
AES-128 : secrets.token_bytes(16). AES-256 : secrets.token_bytes(32). ChaCha20 : secrets.token_bytes(32). Ne dérivez jamais de clés à partir de mots de passe sans KDF (PBKDF2/Argon2). Ne réutilisez jamais des clés avec des algorithmes ou des usages différents.
Génération de clés asymétriques
from cryptography.hazmat.primitives.asymmetric import ec, rsa rsa_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) ec_key = ec.generate_private_key(ec.SECP256R1()) # La bibliothèque gère l’approvisionnement en entropie en interne
IV pour AES-CBC
AES-CBC nécessite un IV uniformément aléatoire de 16 octets par message. Ne réutilisez jamais un IV avec la même clé. N’utilisez jamais un compteur comme IV en mode CBC. Générez-le ainsi : iv = os.urandom(16). Ajoutez l’IV au début du texte chiffré — il n’a pas besoin d’être secret, seulement imprévisible.
Nonce pour AES-GCM
AES-GCM nécessite un nonce unique de 96 bits pour chaque paire (clé, message). La réutilisation d’un nonce compromet catastrophiquement GCM : l’attaquant récupère la clé d’authentification et peut forger des messages. Utilisez soit un nonce aléatoire de 12 octets (borne des anniversaires à 2^32 messages), soit un compteur.
Nonces fondés sur un compteur
Pour un chiffrement à gros volume avec une seule clé : maintenez un compteur persistant par clé. nonce = counter.to_bytes(12, "big"). Incrémentez le compteur après chaque chiffrement. Stockez le compteur dans un stockage persistant : une réinitialisation au redémarrage entraîne une réutilisation.
AEAD résistants à la mauvaise utilisation des nonces
AES-GCM-SIV et Deoxys-II résistent à la mauvaise utilisation des nonces : la réutilisation d’un nonce dégrade la sécurité au niveau du chiffrement déterministe (aucune fuite de la clé d’authentification). Ils sont recommandés lorsque l’unicité des nonces est difficile à garantir (systèmes distribués, scénarios d’arrêt et de redémarrage après incident).
Dérivation de clés avec HKDF
N’utilisez pas directement le matériau de clé brut à plusieurs fins. Dérivez des clés propres à chaque usage : from cryptography.hazmat.primitives.kdf.hkdf import HKDF. hkdf = HKDF(SHA256(), 32, salt, info=b"enc_key"). key = hkdf.derive(master_key). Utilisez une valeur info différente pour chaque usage.
Clés de session
Dérivez des clés propres à chaque session à partir d’un secret partagé (par exemple, une sortie ECDH) à l’aide de HKDF. TLS 1.3 dérive des clés distinctes côté client et côté serveur pour l’établissement de la connexion et les données applicatives. Les clés de session isolent les compromissions : connaître une clé de session ne révèle rien sur les autres.
Encapsulation de clés
Pour stocker une clé en toute sécurité, encapsulez-la avec une clé de chiffrement de clés (KEK) au moyen de AES-KW (RFC 3394) ou AES-GCM. La clé encapsulée peut être stockée dans une base de données ou transmise. La KEK est stockée dans un HSM ou un magasin de clés protégé par le matériel (Android Keystore, Apple Secure Enclave).
Liste de vérification
Avant le déploiement, vérifiez : (1) toutes les clés proviennent de os.urandom/secrets ; (2) aucune clé ni aucun IV n’est codé en dur ; (3) les IV ne sont jamais réutilisés avec la même clé ; (4) les nonces GCM sont uniques pour chaque message ; (5) le calendrier de rotation des clés est défini ; (6) la dérivation des clés utilise HKDF avec des chaînes info distinctes.
Vérification rapide
Quelle est la conséquence de la réutilisation d’un nonce dans AES-GCM ?
Récapitulatif
Les clés nécessitent une génération véritablement aléatoire ; les IV de CBC nécessitent de l’aléa ; les nonces de GCM nécessitent l’unicité. Utilisez os.urandom/secrets, dérivez les clés avec HKDF et encapsulez-les avec des KEK. Les AEAD résistants à la mauvaise utilisation des nonces protègent contre les réutilisations accidentelles. Ensuite : les preuves à divulgation nulle de connaissance.
Questions Fréquemment Posées
La leçon « Générer des clés, des nonces et des IV en toute sécurité » est-elle gratuite ?
Oui — le texte complet de « Générer des clés, des nonces et des IV en toute sécurité » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cryptology Academy, passe à CoddyKit PRO. Le cours Cryptology Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Générer des clés, des nonces et des IV en toute sécurité » ?
Utilisez secrets, os.urandom et des enveloppes sûres en Python et Node. Tu pratiques Cryptology Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cryptology Academy ?
Aucune expérience préalable n'est requise. Cryptology Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Générer des clés, des nonces et des IV en toute sécurité » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cryptology Academy ?
Oui. Chaque leçon Cryptology Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Aléatoire véritable ou pseudo-aléatoire
- PRNG sécurisés sur le plan cryptographique
- Épuisement de l’entropie et erreurs liées aux clés faibles
- Générer des clés, des nonces et des IV en toute sécurité