web-dev-qa-db-fra.com

Essuyez RAM à l'arrêt, pour empêcher les attaques de démarrage à froid

Mon système est chiffré à l’aide de Full Disk Encryption, c’est-à-dire que tout sauf/boot est chiffré à l'aide de dmcrypt/luks. Je suis préoccupé par Cold Boot Attacks , où les chercheurs démontré , ce contenu pourrait être extrait pendant environ 5 minutes .

Pouvez-vous s'il vous plaît fournir des instructions sur:

  • comment déclencher kexec dans un nouveau noyau aux toutes dernières étapes du processus d'arrêt/de redémarrage (pour assurer un démontage propre, pour empêcher la corruption du système de fichiers, pour assurer le remplacement de l'ancien noyau)
  • comment créer ce noyau, qui efface tout le bélier

pouvez-vous expliquer, s'il vous plaît, comment faire la même chose sur Ubuntu?

Comment détecter l'arrêt? Comment démarrer le RAM Wipe? La RAM doit être effacée lorsque l'utilisateur clique sur "Arrêter" ou s'il lance un "script d'urgence".

Merci pour vos efforts!

Travail prioritaire:

Si vous voulez voir cette fonctionnalité devenir réalité, votez sur Ubuntu Brainstorm!

http://brainstorm.ubuntu.com/idea/30076/

20
James Mitch

Si vous n'utilisez pas d'ancien RAM comme DDR2, 512 Mo ou 1024 Mo, ne vous inquiétez pas pour la CBA.

Jetez un coup d'œil à la recherche originale ici (PDF).

Si vous le lisez attentivement, vous constaterez que seules les DDR2 et les anciennes versions sont sujettes à cette attaque. La DDR3 perd trop de tension pour permettre le démontage et la procédure de blocage du boîtier de l'ordinateur. Il suffit donc de débrancher la prise avant de répondre à la porte.

En outre, ce document confirme que la DDR3 n’est pas susceptible de subir une ACB. Si en fait vous voulez vous sécuriser parce que vous avez DDR2 RAM, activez-le dans le BIOS:

  1. Démarrage automatique après une perte de puissance
  2. Vérification de la RAM au démarrage

et faites comme avec la DDR3, mais après avoir retiré la fiche, rebranchez-la. Votre ordinateur se lancera tout seul et essuiera le bélier en le vérifiant. Si le nettoyage n’est pas suffisamment efficace, le processus de démarrage chargera à nouveau le système sur le RAM. Il sera beaucoup trop rapide d'autoriser l'ABC.

À partir du lien vous avez fourni dans les commentaires:

Par conséquent, en conclusion, l’attaque de démarrage à froid ne doit pas être considérée comme la principale méthode d’acquisition de la mémoire d’un système informatique suspect. Au lieu de cela, vous devez essayer d’autres techniques, notamment une acquisition à la fois logicielle et matérielle (FireWire, par exemple), avant de lancer une attaque par démarrage à froid contre ledit système. Toutefois, si les techniques susmentionnées ne sont pas disponibles (absence de connexion FireWire ou de console système ou acquisition de mémoire distante impossible), ou sont inefficaces, l'attaque par démarrage à froid peut être administrée en supposant que l'enquêteur comprend à la fois comment et où problème peut survenir et aller de travers.
Comme l’a montré cette étude, l’attaque au démarrage à froid ne peut pas être établie comme étant particulièrement solide ou fiable du point de vue scientifique, car dans la plupart des expériences menées ici, les clés de cryptage résidant en mémoire ne pouvaient pas être systématiquement trouvées ou extraites, alors qu'elles auraient dû être . Il en va de même pour les différentes chaînes et recherches de mots clés qui auraient dû donner beaucoup plus de chaînes et de mots clés que celles trouvées pour la plupart des expériences. En outre, comme il a été démontré, le simple fait de geler une mémoire informatique ne garantit pas l’acquisition réussie de ladite mémoire. D'autres facteurs et variables déjà examinés ont pleinement examiné ces questions et leurs causes sous-jacentes. Ainsi, les auteurs de cette étude estiment que l'attaque au démarrage à froid peut être utile dans certains cas pour acquérir la mémoire d'un système suspect, mais que cette méthode ne doit pas être considérée comme une panacée, mais plutôt utilisée en dernier recours d'autres voies ont été épuisées.
Enfin, même une acquisition réussie qui a subi peu ou pas de dégradation ne sera probablement pas considérée comme une preuve solide par un tribunal, du moins tant que la jurisprudence n’a pas été rendue et que l’intégrité de la mémoire acquise peut être démontrée. intact en utilisant une méthodologie solide et compréhensible. La recherche continue d’établir un moyen plus approprié et plus fiable d’acquérir la mémoire de l’ordinateur d’un suspect ...

De plus, si vous vérifiez les résultats de l'expérience, vous constaterez qu'ils ont réussi à extraire les clés AES uniquement dans les systèmes 2 et 6 et qu'il s'agissait d'attaques de démarrage à chaud lorsque vous examinez les spécifications du système 2 - 1024 Mo RAM 533 MHz - c'est du vieux matos. L'autre système - le système 6 avec 256 RAM/128 RAM - Je suppose que celui-ci est explicite.

C'est exactement pourquoi leur conclusion était:

La recherche continue d’établir un moyen plus approprié et plus fiable d’acquérir la mémoire de l’ordinateur d’un suspect ...

En fait, je pense que si vous avez des données très très importantes, vous devez non seulement utiliser Full Drive Encryption, mais également les conserver dans un fichier crypté séparé. Crypté avec des algorithmes en cascade et un mot de passe différent de celui utilisé lors du cryptage du disque. Vous voulez un moyen sûr d’arrêter le PC? C'est ici:

  1. Conservez les données sécurisées dans un fichier crypté de l'algorithme de cascade True Crypt
  2. Serpent
  3. Créez un script pour gérer les arrêts:

Pour les fenêtres:

truecrypt.exe /wipecache
shutdown -s -f -t 1

Pour Linux:

truecrypt /wipecache
shutdown -h now

Effacer le cache garantit qu'aucune donnée vulnérable ne reste dans RAM après l'arrêt. Si quelqu'un exécute une attaque de démarrage à froid, il aura au mieux accès à votre système. Ils n'auront pas de données stockées dans un fichier crypté séparément.

17
mnmnc

Peter A. H. Peterson de UCLA a écrit une technologie de validation de principe et développé la théorie permettant de faire fonctionner votre système de manière sécurisée avec de la mémoire RAM chiffrée. La solution est expressément conçue pour empêcher les attaques par démarrage à froid. Le nom de son journal est Cryptkeeper. Je ne sais pas s'il rend le logiciel disponible au téléchargement ou s'il est possible de le concéder sous licence à UCLA. Cependant, il est apparemment possible, au moins en principe, de concevoir un cryptosystème sécurisé pour RAM même si tout le contenu de RAM est divulgué.

L’impact mesuré sur les performances de cette solution se situe entre 9% de frais généraux et un ralentissement d’un facteur 9, en fonction de la nature "pathologique" du scénario. Le chiffre de 9% est cité comme s'appliquant à la navigation sur le Web avec Firefox, mais ils n'ont pas précisé quel cas d'utilisation ralentirait les performances par 9.

La solution de Peterson n'efface pas le RAM comme vous le suggérez. Au lieu de cela, il utilise un "mécanisme de sécurisation de la clé sécurisé" pour empêcher la divulgation de la clé de déchiffrement simplement en vertu de l'obtention du contenu de la RAM. Je ne suis pas sûr des détails de la mise en œuvre, mais je suppose que cela est expliqué dans le document.

L'article a été publié en 2010.

Il est disponible à l'achat sur le site Web ieeexplore de l'IEEE. Il est également disponible pour téléchargement direct en tant que PDF sans frais sur le site Web de quelqu'un; il est dans les résultats de recherche Google pour "cryptkeeper RAM" ... mais je ne sais pas combien de temps ce résultat restera là-haut.

J'ai été tenté de faire de ce commentaire un commentaire plutôt qu'une réponse, car cette solution n'efface pas RAM comme vous l'avez demandé. Cependant, je pense que si les recherches de Peterson sont techniquement correctes, cela aura le même effet pratique - voire un effet "meilleur" - que d'effacer le RAM. La raison en est qu’un attaquant physique qualifié pourrait probablement interrompre la tentative de votre programme système d’effacer le RAM s’ils s’attendaient à ce qu’une telle opération se produise - par exemple, en retirant la batterie de l’appareil ou en maintenant le bouton enfoncé. bouton d'alimentation avant la fin de l'opération. La solution de Peterson est plus sécurisée, car elle ne repose pas sur une fenêtre temporelle nécessaire en vertu de laquelle l'ordinateur est autorisé à continuer à exécuter des instructions afin de terminer le nettoyage. Au lieu de cela, la mémoire est constamment protégée, même si le processeur lui-même est instantanément tué par un exploit technologique incroyable avant même que vous n'ayez une chance de réagir à l'attaquant. .

Et par "exploit incroyable de la technologie", je veux dire quelque chose comme Stuxnet.

5
allquixotic

J'imagine que memtest86 serait assez bon pour effacer la mémoire vive. J'ai toujours voulu essayer le ci-dessous mais je ne l'ai pas fait. Si je l'essaie, je le mettrai à jour.

Lisez la page de manuel kexec . Et n'essayez pas de kexec le .iso, mais vous devez décompresser l'iso et accrocher le binaire de démarrage. Sur le site memtest86 ci-dessus, vous pouvez simplement télécharger le fichier binaire.

Vous devez utiliser une commande kexec pour charger ce que vous démarrez en premier.

Donc, je pense que ce que vous pouvez faire est:

kexec -l {path-to-memtest86-bootable-binary} --append=console=ttyS0,115200n8

et lorsque vous êtes prêt à appuyer sur la gâchette:

kexec -e

Je pense (mais peut-être que c'est faux) que le --append=console=ttyS0,115200n8 fait que memtest86 fonctionne sur le port série. Donc, si vous en avez un, vous pouvez vérifier qu'il fonctionne même s'il ne s'affiche pas sur la sortie vidéo, ce qui est une possibilité car memtest86 n'effectue pas l'initialisation de la vidéo. Tuer toutes les instances en cours de X est probablement une bonne idée.

Le paquet Debian kexec-tools (également disponible sous Ubuntu) le rattache aux scripts d'arrêt. Ainsi, si vous éditez /etc/default/kexec, vous pouvez indiquer au processus d'arrêt d'appeler kexec au lieu de le redémarrer. Autrement dit, si vous êtes intéressé par un arrêt complet.

En cas d'urgence, un sync; kexec -e fonctionnerait.

Cependant, il est possible que certains chipsets, une fois qu'ils soient initialisés, provoquent des blocages si certaines zones de la mémoire sont adressées. Je ne sais pas comment cela fonctionnerait dans la pratique.

Un bon compromis si kexec ne fonctionne pas est d’installer memtest86 sur votre chargeur de démarrage, de le définir comme élément de démarrage par défaut et d’avoir un délai d’une seconde jusqu’à ce que le choix soit automatique (ou aucun délai et que vous appuierez sur une touche pour afficher le mému). Cela pourrait vous faire entrer dans memtest86 à partir d'une condition de "démarrage récent" assez rapidement, mais pas instantanément.

Notez que cela ne prend pas en compte la RAM vidéo. Une solution à cela consiste à configurez votre vidéo RAM en tant que périphérique bloc , et envoyez /dev/random au périphérique bloc pendant quelques itérations.

2
LawrenceC

C'est une vieille question mais je pense pouvoir contribuer. Comme indiqué précédemment, un effacement de la mémoire basé sur un logiciel n'est pas la meilleure solution, tout simplement parce que le courant peut être coupé soudainement, ainsi le logiciel d'effacement ne sera pas exécuté.

Je peux imaginer le meilleur scénario pour illustrer le problème: vous exécutez des activités illégales sur votre ordinateur à la maison. Un jour, le courant électrique a soudainement disparu, puis une escouade du FBI prend la porte de votre maison, vous arrête, puis un technicien nerd ouvre rapidement le boîtier de votre ordinateur et utilise un gaz froid pour geler l’état de la mémoire pour en acheter. le temps de faire une attaque de démarrage à froid.

La meilleure façon de résoudre ce problème est donc de rendre le boîtier de l'ordinateur plus sûr, en le rendant difficile à ouvrir (comme un coffre-fort), ou même en détruisant la mémoire en chauffant la carte à l'aide d'une résistance alimentée par batterie, allumée par un bourreur passer dans le cas. Quelques secondes à des températures élevées peuvent détruire les données, voire même détruire les puces, ce qui n’est pas un gros problème dans cette situation.

2
Daniel Ribeiro

Le problème est que votre ordinateur est en marche et que l'écran est verrouillé. À ce stade, la clé AES est stockée dans la RAM et l'utilisateur est éloigné de l'ordinateur. Un intrus pourrait ouvrir le boîtier de l'ordinateur et retirer les modules RAM, tout en les maintenant alimentés, et en les plaçant dans un périphérique distinct qui lit leur contenu. Il n'est pas nécessaire d'arrêter le système ou de geler les modules avant l'extraction. RAM ne peut pas contenir la clé AES, mais le cache du processeur est semblable à la solution nommée TRESOR. Malheureusement, cela nécessite un ancien noyau Linux et une connaissance approfondie de la correction et de la compilation du noyau.

0
Derek