Utilisateur:Greeksandbag/Brouillon

Une page de Wikipédia, l'encyclopédie libre.

Bug de génération de nombres aléatoires dans Debian OpenSSL[modifier | modifier le code]

OpenSSL
La bibliothèque open-source OpenSSL.

Le bug de génération de nombres aléatoires dans Debian OpenSSL est une vulnérabilité de la bibliothèque d'encryption OpenSSL apparue en 2006 sur le système d'exploitation Debian. Cette vulnérabilité réduisait la variété des clés de chiffrement générées par la OpenSSL. Découverte au printemps 2008 et rendue publique par Debian le 13 mai 2008[1], elle affecte plusieurs protocoles et logiciels en rendant leur clés de chiffrement prévisibles et donc vulnérables aux attaques. Malgré la publication d'un correctif[1], et une grande médiatisation de la vulnérabilité, il est possible qu'une grande quantité de ces clés soient encore en circulation.

Histoire[modifier | modifier le code]

La vulnérabilité aurait été introduite alors qu'un responsable Debian aurait supprimé du code interprété comme un bug[2]. Le code en question permettait d'augmenter l'entropie des clés générées, soit le niveau de hasard des clés, en allant lire dans un endroit de la mémoire qui n'était pas initialisé[3]. Ceci permettait d'aller chercher le contenu de la pile mémoire[4], qui est un élément aléatoire, comme il dépend de ce qui était chargé auparavant à cet endroit de la mémoire, ainsi que le fait que l'ordinateur écrit au hasard dans la mémoire. Comme la mémoire n'était pas initialisée, l'outil automatisé de détection de fuites de mémoire Valgrind ainsi que le déboggeur mémoire Purify (en) signalaient cette ligne comme étant un « bug »[3] à chaque utilisation d'OpenSSL[5], ce qui était régulièrement signalé par des utilisateurs d'OpenSSL[6]. En règle générale, il n'est pas recommandé de lire directement dans la mémoire non initialisée[4], mais dans le cas de la cryptographie, c'est un moyen d'augmenter l'entropie générée[7][8]. Les lignes suivantes furent donc supprimées à deux endroits dans le code d'OpenSSL[2]:

MD_Update(&m,buf,j);
	[ .. ]
MD_Update(&m,buf,j); /* purify complains */

La vulnérabilité ainsi créée limitait l'entropie des clés de chiffrement à 15 bits, soit 32767 possibilités de clés sur un système 32 bits, ou 98301 possibilités sur un système 64 bits[9]. Avec la puissance actuelle des ordinateurs, ce nombre est insuffisant pour garantir une sécurité des données encryptées[10]. En effet, depuis 2015, le National Institute of Standards and Technology, ou NIST, demande un minimum de 112 bits d'entropie[11] pour toute clé de chiffrement, avec un idéal situé entre 128 et 256 bits. Le responsable Debian qui a modifié le code n'a pas envoyé à l'équipe d'OpenSSL ce qu'il avait modifié. Ceux-ci n'ont donc pas été informés de la modification effectuée[3].

Impact[modifier | modifier le code]

Comme une grande partie d'internet utilise OpenSSL[12], dont beaucoup de sites web, de protocoles et de logiciels importants, la nouvelle de l'apparition de cette vulnérabilité, ainsi que les preuves qu'elle était régulièrement utilisée à des fins malveillantes pour décrypter des informations[13][14], a créé un élan massif de régénération de clés de chiffrement partout sur internet[15]. Dès la publication de la vulnérabilité, des listes noires[9] ont été créées pour pouvoir rejeter ces clés de chiffrement trop facilement décryptées. Dans un bulletin d'alerte publié le 13 mai 2008 par Debian, on stipule qu'il est « fortement recommandé que toute donnée de clé de chiffrement qui a été générée avec OpennSSL [...] soit recréée à partir de zéro »[1]. Il est toutefois possible que plusieurs de ces clés non sécuritaires soient encore utilisées[15].

Protocoles et logiciels vulnérables[modifier | modifier le code]

Annexes[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]

  1. a b et c « Debian -- Informations sur la sécurité -- DSA-1571-1 openssl », sur www.debian.org (consulté le )
  2. a et b (en) « [pkg-openssl] Diff of /openssl/trunk/rand/md_rand.c », sur anonscm.debian.org (consulté le )
  3. a b et c (en) « Crippling Crypto: The Debian OpenSSL Debacle », sur https://trailofbits.files.wordpress.com, (consulté le )
  4. a et b (en) « CWE - CWE-457: Use of Uninitialized Variable (2.9) », sur cwe.mitre.org (consulté le )
  5. (en) « Random Number Bug in Debian Linux - Schneier on Security », sur www.schneier.com (consulté le )
  6. (en) « n°521 : [PATCH] Avoid uninitialized data in random buffer », sur rt.openssl.org (consulté le )
  7. (en) « Entropy (computing) », Wikipedia,‎ (lire en ligne, consulté le )
  8. (en) « Hardware random number generator », Wikipedia,‎ (lire en ligne, consulté le )
  9. a b c d e f g h et i (en) « SSLkeys - Debian Wiki », sur wiki.debian.org (consulté le )
  10. (en) « Key size », Wikipedia,‎ (lire en ligne, consulté le )
  11. Elaine Barker et Allen Roginsky, « Transitions: Recommendation for Transitioning the Use of Cryptographic Algorithms and Key Lengths, NIST SP-800-131A Rev 1 » [PDF], sur Nvlpubs.nist.gov, (consulté le )
  12. (en) « OpenSSL Usage Statistics », sur trends.builtwith.com (consulté le )
  13. a b c d e et f (en) Patching et Research, « Compromised SSH keys used to access Spotify, UK Govt GitHub repos » (consulté le )
  14. (en) « CVE - CVE-2008-0166 », sur cve.mitre.org (consulté le )
  15. a et b (en) « Random number generator attack », Wikipedia,‎ (lire en ligne, consulté le )