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. ) à 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
). 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 ».
Autres articles sur ce sujet :
« There’s
no need to panic over factorable keys–just mind your Ps and
Qs » (recherche publiée sur ).« Batch-GCDing Github SSH Keys.