Cette découverte est surprenante car les logiciels SSH sont censés vérifier les erreurs de signature avant de les envoyer, et car les attaquants passifs ne devraient pas avoir accès à certaines informations nécessaires pour exploiter la faille. Une autre raison de cette surprise est que, jusqu'à présent, les chercheurs pensaient que les défauts de signature n'exposaient que les clés RSA utilisées dans le protocole TLS (Transport Layer Security) qui chiffre les connexions Web et de courrier électronique. Ils pensaient que le trafic SSH était à l'abri de telles attaques parce que les attaquants passifs - c'est-à-dire les adversaires qui se contentent d'observer le trafic - ne pouvaient pas voir certaines des informations nécessaires lorsque les erreurs se produisaient.
SSH, ou Secure Shell Protocol, est un protocole d'administration à distance qui permet aux utilisateurs d'accéder à leurs serveurs distants, de les contrôler et de les modifier via l'internet. Le service SSH a été créé pour remplacer de manière sécurisée le protocole Telnet non chiffré et utilise des techniques cryptographiques pour garantir que toutes les communications vers et depuis le serveur distant sont chiffrées. Il fournit un mécanisme d'authentification d'un utilisateur distant, de transfert des données du client vers l'hôte et de retransmission des données de sortie au client.
Le principal avantage de SSH par rapport à ses prédécesseurs est l'utilisation du chiffrement pour garantir un transfert sécurisé des informations entre l'hôte et le client. L'hôte désigne le serveur distant auquel vous essayez d'accéder, tandis que le client est l'ordinateur que vous utilisez pour accéder à l'hôte. Il existe trois technologies de chiffrement différentes utilisées par SSH :
- le chiffrement symétrique
- Chiffrement asymétrique
- Hachage
La vulnérabilité se produit lorsqu'il y a des erreurs lors de la génération de la signature qui a lieu lorsqu'un client et un serveur établissent une connexion. Elle n'affecte que les clés utilisant l'algorithme cryptographique RSA, que les chercheurs ont trouvé dans environ un tiers des signatures SSH qu'ils ont examinées. Cela représente environ 1 milliard de signatures sur les 3,2 milliards de signatures examinées. Sur ces quelque 1 milliard de signatures RSA, environ une sur un million exposait la clé privée de l'hôte.
Les chercheurs ont noté que depuis la version 2018 de TLS 1.3, le protocole a chiffré les messages d'échange se produisant pendant la négociation d'une session Web ou d'une session de courrier électronique. Cela a agi comme une contre-mesure supplémentaire protégeant la compromission de la clé en cas d'erreur de calcul. Keegan Ryan, chercheur à l'université de Californie à San Diego et l'un des auteurs de la recherche, a suggéré qu'il était peut-être temps pour d'autres protocoles d'inclure la même protection supplémentaire.
Bien que le protocole SSH existe depuis près de 18 ans et qu'il soit très largement déployé, nous trouvons toujours de nouveaux moyens d'exploiter les erreurs dans les protocoles cryptographiques et d'identifier les implémentations vulnérables. Dans nos données, environ une signature SSH sur un million exposait la clé privée de l'hôte SSH. Bien que cela soit rare, l'énorme quantité de trafic sur Internet implique que ces failles RSA dans SSH se produisent régulièrement. Même si la grande majorité des connexions SSH ne sont pas affectées, il est toujours important de se défendre contre ces défaillances. Il suffit d'une mauvaise signature dans une implémentation non protégée pour révéler la clé.
Il est heureux que les implémentations SSH les plus populaires incluent des contre-mesures pour empêcher les erreurs de signature RSA de conduire à une fuite de clé catastrophique, mais les implémentations qui ne l'ont pas fait étaient tout de même assez courantes pour apparaître dans nos données.
En 1996 et 1997, des chercheurs ont publié des résultats qui, pris ensemble, concluaient que lorsque des erreurs de calcul naturelles entraînaient une seule signature RSA erronée, un cybercriminel pouvait l'utiliser pour calculer la partie privée de la paire de clés sous-jacente.
Fonctionnement des signatures RSA
Les signatures RSA utilisent des techniques mathématiques pour garantir l'intégrité des données (messages ou documents). Le système cryptographique à clé publique RSA fournit un système de signature numérique (sign + verify), basé sur les mathématiques des exponentiations modulaires et des logarithmes discrets et sur la difficulté de calcul du problème RSA (et de son problème connexe de factorisation des nombres entiers). L'algorithme de signature/vérification RSA fonctionne comme décrit ci-dessous.
L'algorithme RSA utilise des clés de 1024, 2048, 4096, ..., 16384 bits. RSA prend également en charge des clés plus longues (par exemple 65536 bits), mais les performances sont trop lentes pour une utilisation pratique (certaines opérations peuvent prendre plusieurs minutes, voire plusieurs heures). Pour un niveau de sécurité de 128 bits, une clé de 3072 bits est nécessaire.
La paire de clés RSA se compose de
- clé publique {n, e}
- clé privée {n, d}
Les nombres n et d sont généralement de grands entiers (par exemple 3072 bits), tandis que e est petit, typiquement 65537. Par définition, les paires de clés RSA ont la propriété suivante :
(me)d≡(md)e≡m(modn) pour tout m dans l'intervalle [0...n)
Signer un message msg avec la clé privée d'exposant d :
Calculer le hachage du message : h = hash(msg)chiffrer h pour calculer la signature : s=hd(modn)
Le hachage h doit être compris dans l'intervalle [0...n). La signature obtenue s est un entier compris dans l'intervalle [0...n).
Vérification de la signature RSA
Vérification d'une signature s pour le message msg avec l'exposant e de la clé publique :
- Calculer le hachage du message : h = hash(msg)
- Déchiffrer la signature : h′=se(modn)
- Comparer h avec h' pour savoir si la signature est valide ou non
Si la signature est correcte, les éléments suivants seront vrais :
h′=se(modn)=(hd)e(modn)=h
Les chercheurs démontrent qu'une attaque de réseau indirecte peut opportunément obtenir des clés d'hôte RSA privées à partir d'un serveur SSH qui subit un défaut d'origine naturelle lors du calcul de la signature. Dans des travaux antérieurs, cela n'était pas considéré comme possible pour le protocole SSH parce que la signature comprenait des informations telles que le secret Diffie Hellman partagé qui ne seraient pas disponibles pour un observateur passif du réseau.
Attaques par défaut RSA
Si une implémentation de signature utilisant CRT-RSA présente un défaut pendant le calcul de la signature, un cybercriminel qui observe cette signature peut la modifier. Ces attaques exploitent le fait que si un terroriste fait un calcul en utilisant le module d'un facteur primaire, par exemple q, la signature invalide qui en résulte est équivalente à la signature correcte en utilisant le facteur primaire p, mais pas q.
En comparant la signature malformée à une signature valide, un cybercriminel peut effectuer une opération mathématique de type PGDC (plus grand dénominateur commun) qui, à son tour, permettait de dériver l'un des nombres premiers à la base de la sécurité de la clé. C'est ainsi qu'est née une série d'attaques reposant sur le déclenchement actif d'erreurs pendant la négociation de la session, la capture de la signature erronée qui en résulte et, finalement, la compromission de la clé. Le déclenchement des erreurs repose sur des techniques telles que la manipulation de l'alimentation électrique d'un ordinateur ou l'application d'un laser sur une carte à puce.
Dans un rapport technique de 2015, un chercheur a montré pour la première fois que les attaques sur les clés utilisées pendant les sessions TLS étaient possibles même lorsqu'un adversaire n'avait pas d'accès physique à l'appareil informatique. L'attaquant pouvait simplement se connecter à l'appareil et attendre de manière opportuniste qu'une défaillance se produise pendant le calcul. (Il a attribué plusieurs des défaillances qu'il a observées à un matériel défaillant. )
On pensait que les attaquants qui observent le trafic sans y participer ne pouvaient pas analyser les clés cryptographiques utilisées par SSH et IP, contrairement à ceux qui interviennent dans les échanges Diffie-Hellman. Or, ces attaquants passifs peuvent accéder à des données plus sensibles que les attaquants actifs. Cette erreur de jugement sous-estimait donc grandement le risque que représentaient ces attaquants passifs pour la sécurité de SSH et IP par rapport à TLSv1.2.
Malgré l’existence de mesures de protection dans la plupart des versions de TLS depuis deux décennies, des chercheurs ont réussi à trouver des signatures erronées en analysant le trafic sans y interférer. Ces signatures leur ont permis de déchiffrer les clés RSA utilisées par certains VPN, appareils de réseau et sites web, y compris des sites importants.
Comme indiqué précédemment, les chercheurs n'avaient aucune preuve que des attaques passives exploitant des erreurs de signature étaient possibles lorsque le trafic était transmis par des protocoles non TLS tels que SSH ou IPsec. La raison en est que le hachage cryptographique de la signature de ces derniers protocoles comprend un secret partagé généré par l'échange de clés Diffie-Hellman.
Les chercheurs ont utilisé une méthode cryptographique sophistiquée basée sur les mêmes principes mathématiques que la cryptographie avec des treillis pour contourner le problème du manque de données clés dans les signatures SSH erronées. Cette méthode avait été proposée en 2009, mais elle n’avait jamais été mise en pratique pour extraire une clé à partir d’une signature incomplète.
Source : Universitaires de Californie, San Diego et du MIT
Et vous ?
Les démonstrations des chercheurs sur la vulnérabilité des clés cryptographiques sont-elles pertinentes ?
Quel est votrez avis surle sujet ?
Voir aussi :
« Comment casser le RSA avec un ordinateur quantique ? » Le résultat d'une recherche théorique publié par un groupe de chercheurs chinois
Un scientifique revendique une percée dans le décryptage quantique du chiffrement RSA-2048, un smartphone ou un ordinateur Linux peut être utilisé pour décrypter ce chiffrement, selon une recherche
Un mathématicien avertit que la NSA pourrait affaiblir le chiffrement de nouvelle génération, en s'impliquant dans le développement de nouvelles normes de chiffrement pour les ordinateurs quantiques