Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Ève

Qualité des clés cryptographiques

Première rédaction de cet article le 6 juin 2015


A priori, une clé cryptographique en vaut une autre, non ? Ce sont toutes des chaînes de bits incompréhensibles ? Mais non : une clé peut, sous une apparence normale, avoir des caractéristiques qui la rendent plus ou moins vulnérable à certaines attaques cryptanalytiques. Deux analyses récentes ont testé des grands ensembles de clés et ont parfois trouvé des failles.

La première porte sur les clés PGP stockées dans les serveurs de clé. Ces serveurs sont utilisés pour distribuer les clés publiques. Étant librement accessibles, ils permettent d'analyser par la suite la qualité des clés. C'est ce qu'a fait l'étude « A look at the PGP ecosystem through the key server data ». L'auteur télécharge les clés depuis les serveurs qui fournissent un moyen d'accès en masse, puis les analyse. Il a développé pour cela un analyseur en Python. (J'ai déjà parlé du manque regrettable d'outil de test automatique de la qualité d'une clé PGP.)

Je vous préviens tout de suite, cette analyse n'a montré aucun grave problème (tant mieux ! À moins que les problèmes n'aient pas été détectés... ) Par exemple, une faiblesse connue de DSA (et ECDSA) est la nécessité d'utiliser une valeur imprévisible (et pas forcément aléatoire, contrairement à ce qu'on lit souvent, cf. RFC 6979) à chaque signature. Le non-respect de cette règle a permis, par exemple, le libre accès à la PlayStation. L'auteur a donc cherché des exemples de plusieurs signatures (les serveurs de clés stockent des clés signées par d'autres clés, donc on a aussi un lot de signatures) faites avec le même paramètre. Les deux seuls cas trouvés concernaient des signatures incorrectes (les serveurs de clés ne testent pas les données soumises et on peut donc trouver des données corrompues) ou bien les clés de PrimeFactors, une société qui commercialise des solutions cryptographiques (!) et qui a répondu à l'alerte de sécurité de l'auteur par une explication montrant qu'ils n'avaient pas compris le problème. Bon rappel que les seules solutions de sécurité sérieuses sont en logiciel libre.

D'autres tests faits sur les clés PGP ont également été des échecs (du point de vue du chercheur : pour la sécurité, c'est une bonne chose !) Par exemple, deux clés RSA partageaient un facteur premier mais l'adresse associée à la clé, alice@example.com donne à penser qu'il ne s'agissait pas d'une vraie clé, avec une vraie utilisatrice, mais plutôt d'une expérimentation avec des clés délibérement vulnérables.

Bref, chou blanc, pas de problème sensationnel noté pendant l'analyse des clés PGP.

Une autre étude a donné des résultats plus inquiétants. « Auditing GitHub users’ SSH key quality » est le récit d'un audit des clés SSH utilisés sur GitHub (dont j'ai découvert à cette occasion qu'elles sont publiques, voir par exemple les miennes en https://github.com/bortzmeyer.keys). L'auteur a pu faire des statistiques, par exemple sur le type de clés (nette domination de RSA, DSS loin derrière et les courbes elliptiques encore plus).

Mais il a aussi trouvé des choses plus inquiétantes comme des clés RSA de seulement 256 bits (!) Une telle clé se factorise en 25 minutes sur un vieux processeur. Plus étonnant, GitHub stocke encore plusieurs clés qui ont été générées par la bogue Debian. Et ces clés « protègent » (cela a été corrigé depuis) des dépôts logiciels importants comme les bibliothèques cryptographiques de Python (!).

C'est donc l'occasion de rappeler que la cryptographie ne fait pas de miracles : il ne suffit pas d'utiliser PGP ou SSH pour être en sécurité, il faut aussi s'assurer de la solidité des clés. Il faudrait vraiment que des programmeurs courageux développent un site Web où on pourrait soumettre ses clés privées (non, je rigole, ses clés publiques) SSH ou PGP et avoir des diagnostics, du genre « clé privée prévisible suite à la bogue Debian » ou bien « clé trop courte » ou encore « facteur premier déjà vu ».

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)