web-dev-qa-db-fra.com

Est-il possible d'empêcher une attaque physique sur le cryptage complet du disque?

Je suis en train de faire des recherches sur certaines méthodes pour vous assurer que les clés de cryptage de disque ne peuvent pas être volées et que j'ai rencontrées s'appelle Tresor. Avec ce patch de noyau, vous pouvez créer une partition cryptée à l'aide d'AES et les clés sont stockées dans les caches CPU au lieu de la RAM. Au début, je pensais que c'était génial, mais sur une question ultérieure, je suis arrivé à la conclusion que toutes les données déchiffrées toujours stockées dans RAM sont vulnérables à une dump de démarrage à froid physique. Un moyen potentiel Pour que cela soit sécurisé, c'est crypter le contenu du système d'exploitation utilisable RAM== Utilisation de Tresor, puis créant une partition cryptée, car les touches seront dans la RAM cryptée et les clés de la RAM dans le cache de la CPU. Je ne sais toujours pas si ceci est une méthode sécurisée, ou comment c'est son son. Est-il même possible d'empêcher une attaque physique sur le cryptage complet du disque, et si oui, comment puis-je?

15
Clay Freeman

Pour que la CPU traite effectivement les données, les données doivent être au clairtext à un moment donné. ERRESOR Utilise les registres de la CPU, probablement plus difficile à lire que RAM pour attaqueur physique, mais sa portée est limitée à la = clé de cryptage: cette clé est dans les registres, mais les données cryptées ou déchiffrées sont toujours en RAM. Il n'y a qu'une poignée de registres dans la CPU, il n'y a tout simplement pas de place pour plus de données.

Utilisation d'un Tresor-Backed RAM Disque, vous avez des "fichiers cryptés" avec un accès rapide (car c'est la RAM), mais ils sont toujours des "fichiers" dans la vue du noyau et du code d'application. Le Data Will être déchiffré dans RAM à un moment donné.

Si vous voulez vraiment tout RAM== Pour être crypté à tout moment, le choix est soit à utiliser une CPU qui inclut le matériel pour faire un tel cryptage (là-bas Certains CPU SmartCard qui font cela, mais pas de CPU de type PC à mes connaissances), ou de créer une machine virtuelle complète dont la CPU virtuelle est implémentée de type Tresor avec un cryptage automatique et un déchiffrement à chaque accès à la mémoire. Le mode de cryptage réel aurait besoin une pensée approfondie (il n'est pas facile de chiffrer les données en toute sécurité tout en permettant au décryptage rapide avec un accès aléatoire). Je ne suis au courant d'aucun prototype; mais c'est théoriquement réalisable. Un joli projet d'étudiant (il pourrait même être le résultat principal d'un doctorat). Ce serait terriblement lent.

8
Thomas Pornin

Eh bien, il y a un vieil adage de - Microsoft (je sais, pas le meilleur Source de sécurité) qui dit:

Loi n ° 3: Si un mauvais gars a un accès physique sans restriction à votre ordinateur, ce n'est plus votre ordinateur.

Et pourquoi est-ce applicable à votre cas? Parce que si vous avez une cryptographie suffisante, votre disque dur est sécurisé si quelqu'un le vole. Mais si la personne peut avoir accès à votre RAM copeaux juste après la mise hors tension de votre serveur, il peut essayer de récupérer les clés du scénario que vous venez de dire.

Stocker les clés du cache de la CPU le minimiserait, comme vous l'avez dit, mais des données non cryptées pourraient toujours être disponibles dans RAM Chips.

Et si s'il a accès à votre ordinateur avant de l'alimenter? Envisagez-vous une protection physique avant Démarrer? Sinon, Le mauvais gars peut créer un faux écran de connexion et saisir votre mot de passe même si tout votre système est crypté. Ou il peut attacher du keylogger. Ou il peut attacher un appareil et cloner votre RAM frites de la bengage. Ou il peut changer votre BIOS et le faire aussi. Ou ... Eh bien, jetez un coup d'œil au NSA Catalogue, par exemple, avoir quelques idées de l'attaque potentielle.

Donc, votre ordinateur doit être physiquement sécurisé. Et par là signifie que non seulement l'accès physique doit être difficile (par exemple, étant donné suffisamment de temps au RAM Content Vanish), mais aussi qu'il ne peut pas capturer le rayonnement magnétique de la CPU. ou une carte mère ou un clavier, ni des bruits, ni des images de vous tapez ou déplaçant la souris.

Si vous avez vraiment besoin de ce niveau de sécurité qui sort RAM Les copeaux hors de votre ordinateur sont nécessaires, vous avez probablement besoin d'une sécurité encore plus que prévu.

Mise à jour

Après votre commentaire:

Je manque de protection afin que les données de mes clients ne puissent pas être récupérées physiquement du serveur lorsqu'elles sont en cours d'exécution, il suffit d'éteindre récemment ou a été éteinte pendant un moment.

Je pense que je peux développer un peu ma réponse, je pense simplement à cet aspect physique.

  • Pour protéger vos données une fois votre serveur éteint pendant un moment:

Le cryptage est votre ami. Si quelqu'un sort d'un disque dur crypté avec un algorithme fort et un mot de passe fort, il prendra pour toujours une force brute pour l'attaquer.

Points à considérer:

a) Le cryptage de disque entier nécessite que vous ou un programme "Tapez" le mot de passe lors du montage. Si c'est vous, vous devrez être disponible pour l'activer à chaque fois. Si c'est un programme, où stocker la clé

b) Encrypyt seulement les données/dossiers, le même problème "où stocker la clé pour l'activer" existe.

  • Pour protéger les données une fois le serveur éteint récemment, ou lors de l'exécution:

En cours d'exécution, vous auriez besoin de ce chemin entre HDD - RAM - CPU est crypté, car la réponse de Thomas Pornin explique et que je ne suis au courant d'aucun serveur avec un CPU capable de faites-le. Et vous devrez vous inquiéter de la compatibilité avec certains périphériques, puisque PCI, PCI Express, Firewire, etc., comptez sur DMA pour accélérer les choses. Ainsi, vous pourriez avoir des problèmes de performance. .

Un moyen plus facile d'éviter cela est bien, de protéger physiquement votre serveur. Comme une chambre de sécurité, où le serveur est alimenté et chauffé à une certaine température (pour éviter que quelqu'un voler votre RAM Chips). Ou même détruire des copeaux avec des pics de souffle ou de tension contrôlés. Tout ce qui le fait plus difficile pour quelqu'un qui se brise et s'en va avec votre serveur sous ses bras.

Et, bien sûr, tout cela laisse de côté que de nombreuses attaques peuvent être faites à distance, sans aucune présence physique, simplement en utilisant des logiciels et ainsi de suite.

4
woliveirajr

Je suppose que OP construit un serveur et je l'expédie dans l'installation de Colo.

La sécurité physique comprendrait:

  • incorporer la RAM, la CPU et les circuits associés avec un composite PMMA/AL2O3 (électriquement isolant, thermiquement conducteur et très durable)
  • incluent éventuellement des circuits morts-homme en haut de ce que Nuke CPU et RAM
  • débranchez tous les connecteurs externes, à l'exception de la puissance et de la (s) NIC (s) mais ne modifiez pas l'apparence externe
  • installez plusieurs commutateurs d'intrusion de cas, avec chacun de la puissance de tuer lorsqu'il est déclenché (encore mieux, faites-leur de Nuke CPU et RAM Sauf désarmement à distance)
  • désactiver la capacité de gestion à distance

La sécurité logicielle comprendrait:

  • boot à distance à l'aide de Droppear pour SSH à IndiTramfs
  • après le démarrage, écrasez les touches LUKS et l'en-tête avec des bits aléatoires (aucune de celle nécessaire jusqu'à redémarrer)
  • lors du redémarrage, SSH à InitiDramfs et restaurez LUKS Keyslots et en-tête
  • faire des sauvegardes sécurisées fréquentes

Cela devrait le faire, sauf contre des adversaires très déterminés et qualifiés.

1
mirimir

Le cryptage de disque physique va un long chemin vers l'arrêt de nombreux hacks simples. J'enseigne sur la science informatique et la cybersécurité, mais parfois, les politiques extrêmement restrictives du système scolaire me font travailler autour de leur sécurité. Étant donné que le système scolaire n'utilise pas de cryptage de disque, je suis capable d'obtenir un accès administrateur local sur la machine Windows en moins de 5 min, grâce à l'accès physique. Je ne serais pas capable de le faire si elles utilisaient un cryptage complet de disque.

1
CSTeach

Certains systèmes de fichiers soutiennent Dax, qui représente un accès direct. C'est une fonctionnalité qui contourne le cache de page. Un système de fichiers crypté avec Tresor ne fuit pas beaucoup si des données non cryptées lorsque vous lisez et écrivez-y. Vous pouvez mettre un fichier dans TMPFS et créer un périphérique de bouclage et le chiffrer avec Tresor, puis le formater avec un système de fichiers prenant en charge DAX. Ce sera un ramdisk immunitaire crypté et froid.

Vous pouvez également créer un très grand système de fichiers TMPFS et mettre un énorme fichier dedans, en tenant compte de la majorité de votre mémoire (90 ou 95%), jusqu'à ce que votre système soit si lent avec si peu de mémoire qu'il est inutilisable. Ensuite, chiffrer ce fichier de résident de mémoire avec treesor et l'utiliser comme fichier d'échange. Cela permettra efficacement à la majorité de votre mémoire de rester crypté, tandis qu'une petite quantité la plus fréquemment utilisée restera non cryptée. J'en ai expérimenté cela moi-même et dans une machine virtuelle au moins, je peux le faire descendre à environ 256 mib de mémoire non cryptée. Si vous modifiez le noyau et jouez avec suffisamment de SYSCTLS, vous devriez pouvoir l'obtenir jusqu'à 64.

Certains projets pourraient être intéressés:

CRYPKEKER: Améliorer la sécurité avec RAM crypté

Ramcrypt: cryptage d'espace d'adresse basé sur le noyau pour les processus en mode utilisateur

n interprète bytecode pour une exécution sécurisée du programme dans la mémoire principale non approuvée

Si vous n'avez besoin que de chiffrer l'espace mémoire de processus individuels tels que NGinx, PHP-FPM, etc., puis ramypt est absolument ce que vous voulez. C'est une version modifiée de Tresor, fonctionne pour le noyau 3.19 (bien qu'il soit très à porter aux nouveaux noyaux, avec seulement quelques rejets impliquant de nouveaux fichiers d'en-tête et certaines fonctions changent de noms) et a un impact perfect acceptable.

La mémoire DDR3 et DDR4 prend en charge une fonctionnalité appelée "Mémoire de brouillage". Il est utilisé pour réduire l'excès de DI/DT (interférences de 1s et 0s successifs sur le bus) et permet aux attaques de démarrage de froid classiques. Je ne suis pas au courant de l'algorithme qu'il utilise, ou s'il est cryptographiquement sécurisé ou non. Lisez les pages 26-30 sur Secret du moteur de gestion Intel pour la manière dont il est intercepté d'au moins une instance d'ingénierie inverse.

0
forest