ROCA, une vulnérabilité de génération de clés RSA au sein des composants produits par Infineon Technologies

Une vulnérabilité datant de 2012 et impactant la génération de certaines clés RSA a été rendue publique cette semaine. Cette vulnérabilité était due à une implémentation erronée de la fonction de génération au sein de la librairie utilisée par les composants de l’entreprise allemande Infineon. Ces derniers sont vendus afin d’équiper de nombreux équipements intégrant des fonctionnalités de sécurité cryptographique (TPM, SmartCards, puces électroniques, etc.). Au final, au bout de la chaîne de production, c’est un large lot de produits et fonctionnalités qui sont impactés. On retrouvera notamment certains documents d’identité intégrant ces composants, la signature électronique de logiciels, les clés d’authentification, cartes à puces ou encore, dans certains rares cas, les clés permettant des échanges sécurisés sur Internet.

RSA, clé publique et clé privée

L’algorithme cryptographique RSA est un cryptosystème à clé publique ou encore un algorithme de cryptographie asymétrique. Contrairement à des systèmes symétriques, où les différents partis possèdent la même clé servant aux chiffrement et déchiffrement des échanges, par exemple, la cryptographie asymétrique repose sur la création d’un jeu de clé privée et clé publique. Ces deux clés sont intimement liées. La version privée doit être gardée secrète. La clé publique, quant à elle, peut être librement diffusée. Tout message chiffré par l’une des deux clés ne peut être déchiffré que par l’autre clé du même jeu.

Ainsi, les clés publiques, pouvant être connues de tous, servent à chiffrer des messages que seul le possesseur de la clé privée pourra déchiffrer. Voilà pourquoi un utilisateur peut diffuser sa clé publique (PGP) sur son site afin que ses interlocuteurs chiffrent les messages qui lui seront envoyés. Tous les mails ainsi protégés ne pourront être lus que par ce dernier, et uniquement lui.

Par opposition, la clé privée sert à chiffrer des messages qui peuvent alors être déchiffrés par tous les possesseurs de la clé publique. Ce principe est très largement utilisé à des fins de validation de l’identité (autrement connu comme mécanisme de signature). En effet, si vous êtes en mesure de déchiffrer le message, alors vous possédez la bonne clé publique et vérifiez ainsi que le message a bien été émis par l’entité possédant la clé privée associée.

ROCA

La clé publique ne doit jamais, en toutes circonstances, dévoiler d’informations sur la composition de la clé privée. On retrouve ce principe notamment au travers des ingénieuses attaques de Coppersmith qui visent à casser les systèmes dont les clés générées possèdent un exposant faible ou dont une partie des informations secrètes serait connue.

C’est également une partie de ce qui se produit avec les composants utilisant la librairie vulnérable : il est possible d’identifier une structure spécifique pour les nombres premiers utilisés dans l’algorithme de génération des clés RSA. Cette génération erronée rend ces valeurs théoriquement vulnérables à la factorisation. Elle permet aussi, en inspectant les clés publiques, de savoir si la clé privée associée est vulnérable ou non.

Cette factorisation des nombres premiers, sur lesquels repose le jeu de clés, permet de réduire drastiquement le temps nécessaire pour casser la clé privée, permettant ainsi de déchiffrer tous les échanges à destination de l’entité possédant ladite clé. Les estimations en temps requis dépendent de nombreux facteurs, à commencer par la puissance de calcul disponible, la taille des clés, les nombres aléatoires utilisés ou encore la génération des clés en elle même. Cependant, la différence est colossale entre une clé convenablement générée et une clé vulnérable à ROCA.

Supposons qu’une clé RSA d’une taille de 2048 bits demande plusieurs quadrillions d’années pour être cassée, une clé vulnérable pourrait quant à elle être cassée en quelques semaines selon l’équipement à disposition. Le coût en puissance de calcul passant d’un montant non mesurable à quelques centaines de dollars américains (pour des clés de faible longueur) à quelques dizaines de milliers de dollars (~40 000 USD) pour des clés 2048 bits vulnérables.

 

Conséquences

Ces clés servant aussi bien dans des chaînes de confiance de distribution de logiciels, dans de nombreux équipements d’authentification, d’identification ou encore de sécurité en tout genre, l’impact peut avoir d’importantes conséquences et répercussions. Un attaquant cassant avec succès une clé privée pourrait alors déchiffrer des échanges ou signer des logiciels malveillants, les faisant ainsi paraitre légitimes. L’Estonie estime par exemple que 750 000 cartes de leurs citoyens pourraient être vulnérables et a alors bloqué l’accès à la base de clés publiques permettant de les vérifier afin d’empêcher tout abus. Prévenu il y a près de 8 mois, le constructeur a depuis lors corrigé la vulnérabilité et échangé avec ses clients principaux (dont des groupes comme Microsoft ou encore Google) afin que tous les produits reçoivent des correctifs.

Les chercheurs présenteront la vulnérabilité plus en détail lors de la conférence CCS début novembre et publieront alors leurs recherches, encore non divulguées jusque là, afin de permettre de corriger la vulnérabilité, avant que des attaques ne soient rendues possibles.

En plus d’un site expliquant sommairement, pour le moment, la vulnérabilité, un outil permettant d’identifier les clés vulnérables a été mis à disposition afin de pouvoir les changer (en générant de nouvelles clés depuis des équipements non vulnérables ou ayant reçu un correctif).

 

Pour aller plus loin…

Ainsi que d’excellentes ressources françaises de la CNIL et de l’ANSSI pour en apprendre plus sur les principes de la cryptographie et de la cryptologie :

 

 

CERT-XMCO

Découvrir d'autres articles