0Pricing
Cryptology Academy · Leçon

Épuisement de l’entropie et erreurs liées aux clés faibles

Étudiez le bogue du RNG d’OpenSSL dans Debian et d’autres défaillances réelles de l’aléatoire.

Épuisement de l’entropie et erreurs liées aux clés faibles est une leçon Cryptology Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

Qu’est-ce que la pénurie d’entropie ?

La pénurie d’entropie se produit lorsqu’un système ne dispose pas d’une quantité suffisante de données imprévisibles pour initialiser son CSPRNG. Cela arrive sur les appareils embarqués qui viennent de démarrer, les serveurs virtualisés ou les systèmes ne recevant aucune entrée utilisateur. La sortie du RNG devient alors prévisible.

Le bogue OpenSSL de Debian (CVE-2008-0166)

En 2006, un développeur Debian a supprimé une ligne signalée par Valgrind : MD_Update(&m, buf, j). Cette ligne constituait la source d’entropie. Résultat : OpenSSL sous Debian ne s’initialisait qu’avec le PID (au maximum 32 768 valeurs). Toutes les clés générées entre 2006 et 2008 appartiennent à un ensemble de 32 768 possibilités.

Impact du bogue Debian

Les clés RSA, DSA et ECDSA, les clés d’hôte SSH, les certificats TLS et les clés de VPN SSL générés sur les systèmes Debian et Ubuntu entre 2006 et 2008 ont été compromis. Systèmes concernés : Debian Etch, Debian Lenny et Ubuntu 7.04 à 8.04. Des listes noires ont été publiées et les certificats ont été révoqués.

Problème du RNG des machines virtuelles

Les machines virtuelles (VM) peuvent être clonées avec un état de disque identique. Si les deux VM génèrent des clés à partir du même état du CSPRNG, elles produisent les mêmes clés. Les hyperviseurs injectent désormais de l’entropie via VirtIO RNG ou des tables ACPI, mais les VM mal configurées restent exposées à ce risque au démarrage.

Systèmes embarqués et IoT

Les appareils IoT (routeurs, caméras) génèrent souvent leurs clés SSH et TLS lors du premier démarrage, avant d’avoir accumulé suffisamment d’entropie. Des études ont révélé que des millions d’appareils partageaient quelques milliers de paires de clés RSA, car ils étaient tous initialisés à partir du même état de démarrage à faible entropie.

Attaque par GCD contre les clés RSA

Lenstra et ses collègues (2012) ont recueilli 11,7 millions de certificats TLS et calculé les GCD deux à deux. Ils ont trouvé 12 720 clés RSA partageant un facteur premier, ce qui signifiait que les deux clés pouvaient être entièrement factorisées. 0,2 % de l’ensemble des clés publiques étaient compromises. Cause : entropie insuffisante au démarrage.

Réutilisation d’un nonce dans ECDSA

ECDSA nécessite un nonce aléatoire k unique pour chaque signature. Si k est réutilisé (ou faible), la clé privée peut être récupérée immédiatement : d = (s1-s2)^{-1} * (z1-z2) * k / (r1-r2) mod n. La PS3 de Sony utilisait k=constant : tous les jeux pouvaient être signés avec la clé récupérée.

Bogue du portefeuille Bitcoin Android (2013)

SecureRandom de Java sur Android 4.x était initialisé avec l’heure système dans certaines conditions. Plusieurs applications de portefeuille Bitcoin ont généré des signatures avec le même nonce k, révélant les clés privées. Des millions de dollars ont été volés. Google a corrigé l’implémentation de SecureRandom.

Détection des clés faibles

Outils : ssh-vulnkey (vérifie les clés par rapport à la liste noire des clés faibles de Debian), badkeys (vérifie les certificats TLS à la recherche de facteurs premiers connus comme faibles), algorithme de calcul groupé des GCD pour l’audit en masse des clés RSA. Les journaux de transparence des certificats permettent une analyse à l’échelle de toute une population.

Mesures d’atténuation

Utilisez getrandom(GRND_RANDOM) lors de la toute première génération de clé. Lisez depuis /dev/urandom après avoir attendu l’initialisation initiale (vérifiez que /proc/sys/kernel/random/entropy_avail > 128). Utilisez un RNG matériel (RDRAND) comme source d’entropie supplémentaire. Ne générez jamais de clés au premier démarrage sans délai d’attente.

Persistance du fichier de graine

Conservez l’état du CSPRNG entre les redémarrages : enregistrez 32 octets de /dev/urandom dans un fichier de graine lors de l’arrêt ; lisez ce fichier et réinjectez son contenu au démarrage. Cela assure la continuité de l’entropie entre les démarrages à froid. Linux le fait automatiquement, contrairement à de nombreux systèmes embarqués.

Vérification rapide

Quelle était la cause fondamentale du bogue d’entropie d’OpenSSL dans Debian ?

Récapitulatif

La pénurie d’entropie entraîne la génération de clés prévisibles. Compromissions réelles : OpenSSL sous Debian (graine limitée au PID), attaques par GCD contre des appareils IoT, réutilisation du nonce ECDSA de la PS3 et portefeuille Bitcoin Android. Initialisez toujours le générateur à partir de l’entropie de l’OS ; vérifiez soigneusement la génération de clés sur les systèmes embarqués. Ensuite : générer des clés, des nonces et des IV en toute sécurité.

Questions Fréquemment Posées

La leçon « Épuisement de l’entropie et erreurs liées aux clés faibles » est-elle gratuite ?

Oui — le texte complet de « Épuisement de l’entropie et erreurs liées aux clés faibles » 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 « Épuisement de l’entropie et erreurs liées aux clés faibles » ?

Étudiez le bogue du RNG d’OpenSSL dans Debian et d’autres défaillances réelles de l’aléatoire. 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 3 sur 4.

Combien de temps prend la leçon « Épuisement de l’entropie et erreurs liées aux clés faibles » ?

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

  1. Aléatoire véritable ou pseudo-aléatoire
  2. PRNG sécurisés sur le plan cryptographique
  3. Épuisement de l’entropie et erreurs liées aux clés faibles
  4. Générer des clés, des nonces et des IV en toute sécurité
← Retour à Cryptology Academy