Récupération de clés de chiffrement en mémoire RAM
Date : 03 Avril 2008
Le présent article a pour but d’expliquer, de commenter et d’évaluer le niveau de risque d’une
attaque utilisant la persistance des données en mémoire RAM pour contourner les
systèmes de chiffrement des disques durs. En effet une récente étude [1]
publiée par l’université de Princeton montre que ce risque est plus élevé que
ce qu’il est généralement supposé. Dans
les faits,
La rémanence des données en mémoire RAM est un phénomène déjà connu depuis plus de 20 ans et des études ont déjà suggéré le fait que cela pouvait poser des problèmes de sécurité. Mais jusqu’à présent, aucune étude n’avait décrit plus précisément le phénomène. L’étude de l’université de Princeton semble être la seule à décrire des algorithmes permettant de reconstruire des clés de chiffrement, d’appliquer ces méthodes à des logiciels de chiffrement de disque couramment utilisés et également à discuter de mesures de protection.
Présentation de l’attaque
La plupart des experts affirment que la mémoire vive est effacée
presqu’immédiatement après l’arrêt de l’ordinateur ou qu’il est de toute façon
extrêmement difficile de récupérer des données stockées en RAM une fois
l’ordinateur éteint. L’étude publiée par l’université de Princeton montre que
ces affirmations sont fausses. Le contenu de la mémoire RAM couramment
utilisée s’efface progressivement sur une période de quelques secondes à la
température habituelle de fonctionnement même si le composant mémoire est retiré
de la carte mère. Mais les données peuvent être conservées beaucoup plus
longtemps (de quelques minutes à plusieurs heures) si la RAM est gardée à basse
température. Par conséquent, de simples techniques non destructives permettent
de récupérer des données résiduelles en RAM tout en ne nécessitant qu’un accès
physique momentané à la
machine. L’attaque peut être menée à bien même lorsqu’une
session utilisateur est verrouillée ou même si l’ordinateur est en veille et
selon les cas en veille prolongée.
L’étude décrit d’abord plusieurs expériences qui ont été menées pour
caractériser la rémanence des données en RAM, et ce pour une grande variété de
technologies et de composants différents.
Voici quelques constatations qui peuvent résumer ces expériences :
- La plupart des modules mémoire testés conservent une grande quantité de données lorsqu’ils ne sont plus rafraîchis par le système et même lorsqu’ils ne sont plus alimentés. La persistance de ces données peut s’étaler sur des périodes correspondant à plusieurs milliers de cycles de rafraichissement.
- A une température normale de fonctionnement, un faible taux de corruption des données est constaté pendant quelques secondes, puis suit une période de dégradation rapide (plus de 50% après 60 secondes sans alimentation). Les quelques premières secondes pendant lesquelles les données ne sont pas encore corrompues peuvent être mises à profit pour redémarrer l’ordinateur à froid et permettre de récupérer des données sensibles sans avoir à retirer le module mémoire de la carte mère.
- Les modules de RAM les plus récents, pour lesquels le nombre de composants électroniques est plus important, semblent conserver les données moins longtemps lorsqu’ils ne sont plus sous tension.
- Dans la plupart des cas lors des expériences, presque tous les bits se retrouvaient effacés après un temps prévisible et retrouvaient des valeurs de base également prévisibles plutôt qu’aléatoires.
- Enfin, la dégradation des données stockées en RAM est très fortement liée à la température à laquelle est soumis le composant.
Le paramètre sur lequel il semble le plus facile d’agir pour retarder
l'effacement mémoire est la
température. Le rapport de l’université de Princeton
mentionne 2 techniques que les chercheurs ont employées pour réduire la température
de la mémoire :
- Une technique de refroidissement simple consiste à décharger une bombe aérosol réfrigérante sur le composant mémoire. Cette technique a permis aux chercheurs de l’université de Princeton de refroidir des composants à près de -50°C. A cette température, la perte de données a été évaluée à environ 1% après 10 minutes.
- Une seconde technique, plus avancée, consistait à plonger la barrette de mémoire dans de l’azote liquide (-196°C). A cette température, la perte de donnée a été mesurée à 0,17%. On peut à priori en déduire que les données peuvent être conservées en mémoire plusieurs heures ou jours à condition de posséder des moyens de refroidissement suffisants.
Le rapport présente ensuite plusieurs variantes de l’attaque dont le but
est de récupérer des clés de chiffrement ou des données sensibles en mémoire
RAM. Les voici, classées de la plus simple (facile à contrer) à la plus avancée
(très difficilement parable) :
- La plus simple consiste à arrêter la machine puis à la redémarrer en utilisant un système d’exploitation personnalisé, petit en mémoire, permettant de faire une image complète de la RAM.
- Une attaque plus avancée consiste à couper l’alimentation pendant un bref instant, à remettre l’ordinateur sous tension, puis à démarrer un kernel personnalisé. Cette attaque permet en outre d’empêcher le système d’exploitation de nettoyer la mémoire avant son arrêt.
- Enfin, une attaque encore plus robuste consiste à couper l’alimentation de la machine puis à transplanter le module mémoire sur un PC spécialement préparé par l’attaquant pour récupérer les données. Cette attaque a en outre le mérite d’empêcher la machine victime d’effacer la mémoire au moment du boot.
Dans toutes les variantes présentées ci-dessus, l’attaquant doit démarrer
une machine avec un système d’exploitation personnalisé. En effet, lorsqu’un
système se lance, il écrase nécessairement des portions de mémoire. En
l’occurrence démarrer un système d’exploitation complet détruirait une bonne
partie des données stockées en mémoire. Donc, le système de l’attaquant doit
non seulement contenir des outils permettant de faire une image de la mémoire
et de récupérer des clés de chiffrement, mais il doit aussi être suffisamment
petit pour ne pas écraser trop de données lors de son démarrage.
Nous avons déjà vu que si l’attaquant est amené à couper l’alimentation
trop longtemps, les données ont toutes les chances d’être corrompues. Les
chercheurs de l’université de Princeton ont développé 3 méthodes permettant de
limiter cet effet et également de corriger des erreurs dans les clés de
chiffrement récupérées :
- La première consiste à refroidir le composant mémoire avant de couper l’alimentation ; ceci a pour effet de diminuer considérablement le taux d’erreur rencontré par la suite.
- La seconde consiste à appliquer des heuristiques et des algorithmes spécialement développés par les chercheurs de l’université de Princeton. Ceux-ci permettent de localiser les clés symétriques et privées dans la mémoire et de corriger les erreurs qu’elles peuvent contenir.
- La troisième consiste à reproduire les conditions (délais utilisés, température etc.) respectées lors de l’extraction des données en mémoire et de mesurer de manière expérimentale les erreurs retrouvées et leur emplacement en mémoire. Avec ces informations, l’attaquant peut réaliser une procédure de correction d’erreurs largement accélérée. En effet, l’étude a montré que ces erreurs étaient bien souvent prévisibles.
Ces techniques peuvent être utilisées séparément ou de manière combinée.
Lorsqu’elles sont combinées, l’attaque peut être très puissante en permettant
par exemple de récupérer des clés de chiffrement même si le taux d’erreur
constaté au départ est important (jusqu’à 50%).
Au lieu d’essayer de récupérer directement les clés de chiffrement, la plupart des méthodes se concentrent sur les valeurs dérivées de ces clés telles que les « key schedule » (sous-clés temporaires générées lors d’une opération de chiffrement) qui ont une plus forte probabilité de redondance en mémoire. Pour des raisons de performance, beaucoup d’applications précalculent ces valeurs et les gardent en RAM tant que la clé de base elle-même est utilisée. Par exemple, pour reconstruire une clé AES, l’attaque consiste à traiter les « key schedule » récupérés comme des codes de correction d’erreur et à retrouver la clé de chiffrement la plus probable à partir de ces sous-clés.
Le calcul préalable des sous-clés ou d’une manière plus générale la
conservation des clés en mémoire vive posent un réel problème : le
compromis entre les performances et
Analyse du risque encouru
Evaluation du risque
Le risque associé à cette attaque dépend très fortement des mesures de
sécurité physique dont bénéficient les équipements informatiques. Comme
l’attaque demande à un moment donné d’avoir accès physiquement à la machine
victime, il est évident que les ordinateurs portables qui sont souvent transportés
d’un lieu à un autre sont plus vulnérables que les ordinateurs de bureau. Donc,
les politiques de sécurité physique doivent probablement être revues pour
prendre en compte ce type de menaces, en particulier si elles considèrent que
les solutions de chiffrement de disque garantissent la confidentialité des
données sur les ordinateurs.
Evaluation de l’impact
Le phénomène de rémanence de la RAM permet potentiellement à une personne
malveillante de récupérer l’intégralité des données qui y sont stockées lorsqu’un
ordinateur est en fonctionnement. Cette affirmation nous mène à penser que
toutes les données confidentielles stockées en mémoire vive sont exposées quand
par exemple un ordinateur portable est laissé quelque part sans aucune mesure
de protection physique. L’attaque peut être menée à bien sur un ordinateur sous
tension, même si celui-ci affiche une demande de mot de passe pour être
déverrouillé et même si celui-ci est en veille.
L’étude de l’université de Princeton évoque plusieurs exemples de données critiques qui peuvent être récupérées en mémoire vive :
- Les clés de chiffrement de BitLocker, permettant à l’attaquant de lire l’intégralité des données sauvegardées sur un disque crypté avec cette solution.
- Les clés de chiffrement de TrueCrypt, permettant à un attaquant de lire toutes les données stockées sur un disque dur chiffré avec cette solution, mais permettant également de récupérer les données de tous les disques virtuels montés avec cette solution lorsque l’attaquant obtient un accès physique à la machine.
- Les clés de chiffrement de FileVault, permettant à une personne malveillante de lire toutes les données sur un disque chiffré avec cette solution sur les systèmes MacOS X.
- Les clés de chiffrement de dm-crypt, permettant à un attaquant d’extraire les données d’un disque crypté avec cette solution dans les environnements Linux.
- Les mots de passe utilisateur sous MacOS X.
- Les clés privées d’un serveur Apache utilisant SSL.
Mais on peut facilement imaginer d’autres types de données stockées en RAM lorsqu’un ordinateur est en fonctionnement :
- Les e-mails ou les documents ouverts au moment ou l’ordinateur est verrouillé,
- Les pages Web affichées dans un navigateur même quand il s’agit d’une connexion SSL,
- Les clés de chiffrement DRM (Digital Right Management),
Recommandations
Il est difficile de se protéger contre les attaques visant à faire une
image de la RAM pour récupérer des clés de chiffrement, car ces clés doivent
bien être stockées quelque part lorsqu’elles sont souvent utilisées. Les
solutions de chiffrement de disque ainsi que des logiciels manipulant des
données sensibles devraient effacer ces données lorsqu’elles ne sont plus
utilisées. Mais comme mentionné précédemment, cela n’est pas toujours possible
pour des raisons de performance. De plus, le rapport montre que l’utilisation
de sous-clés précalculées dans le but d’accélérer les opérations de chiffrement
rend les clés elles-mêmes plus vulnérables. En effet, le précalcul de valeurs
dérivées des clés de chiffrement tend à multiplier les informations relatives à
ces clés en mémoire, ce qui aide grandement l’attaquant dans sa reconstruction
de ces dernières, même lorsque la mémoire présente un taux d’erreurs élevé.
La plupart des mesures suggérées par l’étude de l’université de Princeton
se focalisent sur les points suivants :
- L’effacement ou la dissimulation des clés de chiffrement avant qu’une personne malveillante puisse avoir accès à la machine,
- La possibilité d’interdire sur une machine l’exécution de logiciels permettant de faire une image de la mémoire,
- La possibilité de protéger physiquement les composants mémoire,
- Enfin, la possibilité de créer des composants dont la rémanence est extrêmement faible.
Voici quelques mesures pratiques pouvant être mises en place facilement et
permettant de rendre l’attaque plus difficile à réaliser :
- Les PCs peuvent souvent être configurés pour faire un test et un effacement de la RAM avant de lancer le système d’exploitation. Cette fonctionnalité est souvent appelée « Quick Boot » dans le BIOS. Désactiver l’option « Quick Boot » dans le BIOS forcera la machine à faire un test et un effacement de la mémoire. Si l’attaquant n’a pas la possibilité d’enlever la barrette de mémoire de la machine, il ne pourra pas exécuter un logiciel d’image mémoire sur cette machine.
- La plupart des attaques impliquent de démarrer un système d’exploitation personnalisé à partir d’un périphérique amovible ou via l’utilisation du réseau. Les ordinateurs peuvent généralement être configurés pour demander un mot de passe administrateur pour démarrer à partir de ces sources. Si cette fonctionnalité n’est pas présente dans le BIOS, il est toujours possible de supprimer tous les médias amovibles de la séquence de démarrage puis de définir un mot de passe d’administration du BIOS empêchant ainsi toute modification non autorisée. On peut cependant noter qu’un attaquant ayant un accès physique à la machine pourra toujours réinitialiser la mémoire NVRAM (Non Volatile RAM) pour restaurer les paramètres par défaut du BIOS et ainsi réactiver le démarrage à partir de sources externes.
- Suspendre le système de manière sûre. Les résultats de l’étude montrent que verrouiller l’utilisation de l’ordinateur (par exemple laisser l’ordinateur allumé avec un écran demandant le mot de passe de l’utilisateur pour être déverrouillé) ne protège pas le contenu de la mémoire vive. Suspendre le fonctionnement d’un ordinateur portable en le mettant en veille n’est pas plus efficace, la RAM restant dans c cas-là sous tension. Mettre un ordinateur en veille prolongée (hibernation) n’est efficace que si un mot de passe est immédiatement demandé lorsqu’on rallume le système.
- Avec la plupart des solutions de chiffrement de disque, les utilisateurs sont protégés lorsqu’ils arrêtent complètement leur machine quand elle n’est pas utilisée. Les données peuvent persister en mémoire quelques temps après l’arrêt du système, l’utilisateur devrait en théorie garder un œil sur la machine une ou deux minutes après son extinction. Cette recommandation n’est pas valable pour les systèmes utilisant BitLocker et s’appuyant sur le composant matériel TPM (Trusted Platform Module) pour conserver les informations cryptographiques car dans ce cas-là, la clé de chiffrement du disque principal est chargée en mémoire avant même le démarrage de Windows.
Plusieurs vendeurs de solution de chiffrement de disque ont réagi suite à
la publication de cette étude par l’université de Princeton. Microsoft et PGP
par exemple ont publié des avis de sécurité spécifiques et des recommandations
concernant leurs logiciels (voir les liens dans le paragraphe « pour plus
d’information »).
Pour plus d’informations
Toutes les pages référencées ci-dessous sont écrites en langue anglaise.
- [1] – L’étude publié par l’université de Princeton : “cold boot attacks on encryption keys”
- [2] – Vidéo YouTube : “cold boot attacks on encryption keys”
- [3] – Microsoft : Protecting BitLocker from Cold Attacks
- [4] – PGP Corporation : Cold Boot Attack Response
- [5] – Internet Storm Center : vendor reactions