Merci à tous d'être venus. Aujourd'hui, nous parlerons du chiffrement intégral du disque dur (FDE), qui n'est pas aussi sûr que vous le pensez. Levez la main, qui crypte ainsi le disque dur de votre ordinateur. Incroyable! Eh bien, bienvenue dans DefCon!

Il semble que 90% d'entre vous utilisent un logiciel open source pour crypter votre disque afin de pouvoir les auditer. Maintenant, laissez ceux qui éteignent l'ordinateur s'ils le laissent sans surveillance lever la main. Je pense à environ 20% des personnes présentes. Dites-moi, qui laisse votre ordinateur sans surveillance pendant plusieurs heures, est-ce important qu'il soit allumé ou éteint? Considérez-moi poser ces questions, assurez-vous simplement que vous n'êtes pas des zombies et que vous ne dormez pas. Je pense que presque tout le monde a dû quitter son ordinateur pendant au moins quelques minutes.
Alors pourquoi chiffrons-nous nos ordinateurs? Il est difficile de trouver quelqu'un qui poserait cette question, donc je pense qu'il est vraiment important de formuler la motivation pour des actions spécifiques dans le domaine de la sécurité. Si nous ne le faisons pas, nous ne pourrons pas comprendre comment organiser ce travail.
Il existe de nombreuses documentations sur les logiciels de chiffrement de disque qui décrivent ce que fait le logiciel, quels algorithmes il utilise, quels mots de passe, etc., mais il est presque impossible de dire pourquoi cela est fait.
Ainsi, nous chiffrons notre ordinateur parce que nous voulons contrôler nos données, nous voulons garantir leur confidentialité et que personne ne peut les voler ou les modifier à notre insu. Nous voulons décider par nous-mêmes de ce qu'il faut faire de nos données et contrôler ce qui lui arrive.
Dans certaines situations, vous devez simplement garantir la confidentialité des données, par exemple si vous êtes un avocat ou un médecin disposant d'informations confidentielles sur le client. Il en va de même pour la documentation financière et comptable. Les entreprises sont tenues d'informer les clients de la fuite de telles informations, par exemple, si quelqu'un a laissé un ordinateur portable non protégé dans une voiture qui a été volée, et maintenant ces informations confidentielles peuvent être librement disponibles sur Internet.
De plus, il est nécessaire de contrôler l'accès physique à l'ordinateur et d'assurer sa protection contre les impacts physiques, car FDE n'aidera pas si quelqu'un prend physiquement le contrôle de votre ordinateur.
Si nous voulons assurer la sécurité du réseau, nous devons contrôler l'accès à l'ordinateur de l'utilisateur final. Nous ne pourrons pas construire un Internet sécurisé sans assurer la sécurité de chaque utilisateur final.

Nous avons donc compris les aspects théoriques de la nécessité du chiffrement du disque. Nous savons comment générer des nombres aléatoires pour garantir la sécurité des clés, comment contrôler les modes de chiffrement par bloc utilisés pour chiffrer entièrement un lecteur, comment hériter en toute sécurité d'une clé pour les mots de passe, afin que nous puissions supposer que la «mission est terminée», comme l'a déclaré le président Bush, lors d'une allocution à à bord d'un porte-avions. Mais vous savez que ce n'est pas le cas, et nous avons encore beaucoup à faire pour le terminer.
Même si vous disposez d'une cryptographie sans faille et que vous savez qu'il est presque impossible de la casser, elle doit en tout cas être implémentée sur un véritable ordinateur, où vous n'avez pas d'analogues de "boîtes noires" fiables. Un attaquant n'a pas besoin d'attaquer la cryptographie s'il essaie de casser le chiffrement complet du disque. Pour ce faire, il suffit d'attaquer l'ordinateur lui-même ou de tromper l'utilisateur pour le convaincre de fournir un mot de passe, ou d'utiliser le keylogger keylogger, etc.
L'utilisation réelle du chiffrement ne correspond pas au modèle de sécurité FDE. Si vous regardez un logiciel conçu pour le chiffrement complet du disque, vous pouvez voir que ses créateurs ont accordé beaucoup d'attention aux aspects théoriques du chiffrement. Je citerai un extrait de la documentation technique du site Web TrueCrypt: "Notre programme ne protégera aucune donnée sur l'ordinateur si l'attaquant a un accès physique à l'ordinateur avant de démarrer ou pendant TrueCrypt."

En principe, l'ensemble de leur modèle de sécurité ressemble à ceci: "si notre programme crypte correctement le disque et décrypte le disque correctement, nous avons fait notre travail." Je m'excuse pour le texte qui apparaît sur la diapositive suivante, s'il vous est difficile de le lire, je le ferai moi-même. Ce sont des extraits de la correspondance entre les développeurs de TrueCrypt et la chercheuse en sécurité Joanna Rutkovskaya au sujet des attaques du «nettoyeur».
TrueCrypt: «Nous ne considérons jamais la possibilité d'attaques matérielles, nous supposons simplement le pire. Une fois que l'attaquant a "travaillé" sur votre ordinateur, il vous suffit de cesser de l'utiliser pour stocker des informations confidentielles. Le processeur cryptographique TPM n'est pas en mesure d'empêcher les attaques matérielles, par exemple, en utilisant des enregistreurs de frappe.
Joanna Rutkovskaya leur a demandé: "Comment puis-je déterminer si un attaquant" a travaillé "sur votre ordinateur ou non, parce que vous ne portez pas toujours un ordinateur portable avec vous?", Ce à quoi les développeurs ont répondu: "Nous ne nous soucions pas de la manière dont l'utilisateur assure la sécurité et la sûreté. votre ordinateur. Par exemple, un utilisateur peut utiliser une serrure ou placer un ordinateur portable alors qu'il est absent dans une armoire verrouillable ou un coffre-fort. » Joanna leur a répondu très correctement: "Si je vais utiliser un verrou ou un coffre-fort, pourquoi ai-je besoin de votre cryptage"?

Ainsi, ignorer la possibilité d'une telle attaque est un canular, nous ne pouvons pas le faire! Nous vivons dans le monde réel où existent ces systèmes avec lesquels nous interagissons et que nous utilisons. Il n'y a aucun moyen de comparer 10 minutes d'une attaque effectuée uniquement à l'aide d'un logiciel, par exemple à partir d'un lecteur flash, avec quelque chose que vous pouvez effectuer en manipulant le système uniquement avec du matériel.
Ainsi, peu importe ce qu'ils disent, la sécurité physique et la résilience aux attaques physiques dépendent du FDE. Peu importe ce que vous abandonnez sur votre modèle de sécurité, et au moins s'il ne veut pas prendre ses responsabilités, il doit expliquer très clairement et honnêtement à l'utilisateur à quel point la protection qu'il offre peut être piratée facilement.
La diapositive suivante montre le diagramme de démarrage FDE abstrait, utilisé par la plupart des ordinateurs modernes.

Comme nous le savons, le chargeur de démarrage est chargé à partir du SSD / HDD à l'aide du BIOS et est copié dans la mémoire principale le long du chemin de transfert de données Storage Controller - PCI Bus - Platform Controller Hub. Le chargeur de démarrage demande alors à l'utilisateur des informations d'authentification, telles qu'un mot de passe ou une clé de carte à puce. Ensuite, le mot de passe passe du clavier au processeur, après quoi le chargeur de démarrage prend le contrôle, tandis que les deux composants - le système d'exploitation et la clé - restent en mémoire afin d'assurer la transparence du processus de cryptage et de décryptage du disque. Il s'agit d'une vision idéalisée du processus, suggérant que personne n'essaiera d'intervenir de quelque façon que ce soit. Je pense que vous êtes bien conscient de plusieurs façons de pirater cela, alors listons les choses qui pourraient mal se passer si quelqu'un essaie de vous attaquer. Je divise les attaques en 3 niveaux.
La première est non invasive, ne nécessitant pas la capture de votre ordinateur, car elle est effectuée à l'aide d'un lecteur flash avec des logiciels malveillants. Vous n'avez pas besoin de «démonter» le système si vous pouvez facilement y connecter n'importe quel composant matériel comme une carte PCI, ExpressCard ou Thunderbolt - le dernier adaptateur Apple qui offre un accès ouvert au bus PCI.
Une attaque de second niveau nécessitera un tournevis, car vous devrez peut-être supprimer temporairement un composant du système afin de le gérer dans votre propre petit environnement. Le troisième niveau, ou «attaque au fer à souder», est le plus difficile, ici vous ajoutez ou modifiez physiquement des composants du système, tels que des puces, pour essayer de les casser.
Un type d'attaque de premier niveau est un chargeur de démarrage compromis, également appelé attaque «evil maid», où vous devez exécuter du code non chiffré dans le cadre du processus de démarrage du système, quelque chose que vous pouvez télécharger vous-même en utilisant vos informations personnelles afin que accéder au reste des données chiffrées sur votre disque dur. Il existe plusieurs façons de procéder. Vous pouvez modifier physiquement le chargeur de démarrage dans le système de stockage. Vous pouvez compromettre le BIOS ou charger un BIOS malveillant qui prend le contrôle de l'adaptateur de clavier ou des procédures de lecture de disque et les modifie afin qu'ils résistent à la suppression du disque dur. Mais dans tous les cas, vous pouvez modifier le système de sorte que lorsque l'utilisateur entre son mot de passe, il écrit sur le disque sous forme non cryptée, ou fait quelque chose de similaire, ce ne sera pas difficile pour le pirate.
Vous pouvez faire quelque chose de similaire au niveau du système d'exploitation. Cela est particulièrement vrai si vous n'utilisez pas le chiffrement complet du disque, mais le chiffrement du conteneur.

Cela peut également se produire lorsque le système est attaqué par un exploit, grâce auquel l'attaquant obtient les droits root et peut lire la clé dans la mémoire principale, il s'agit d'une méthode d'attaque très courante. Cette clé peut être stockée sur le disque dur en texte brut pour une utilisation ultérieure par un attaquant ou envoyée sur le réseau au système Command & Control.
Une autre possibilité est une interception du clavier à l'aide d'un enregistreur de frappe, que ce soit un logiciel, du matériel ou quelque chose d'exotique, comme une caméra à aiguille ou par exemple un microphone qui enregistre les sons accompagnant les frappes des utilisateurs et essaie de savoir de quoi il s'agit. clés. Il est difficile d'empêcher une telle attaque, car elle inclut potentiellement des composants qui sont en dehors du système.

Je voudrais également mentionner les attaques de récupération de données, mieux connues sous le nom d'attaques de démarrage à froid. Si, il y a 5 ans, vous interrogiez même des personnes très informées sur les fonctionnalités de sécurité de la mémoire principale, elles diraient que lorsque l'alimentation est coupée, les données disparaissent très rapidement.
Mais en 2008, une excellente recherche a été publiée par Princeton, qui a constaté qu'en fait, même à température ambiante, il y avait très peu de perte de données dans la mémoire RAM pendant plusieurs secondes. Et si vous refroidissez le module à des températures cryogéniques, vous pouvez obtenir quelques minutes, pendant lesquelles seulement une légère dégradation des données dans la mémoire principale se produit.

Ainsi, si votre clé est dans la mémoire principale et que quelqu'un a retiré les modules de votre ordinateur, ils peuvent attaquer votre clé en découvrant où elle se trouve dans la mémoire principale en clair. Il existe certaines méthodes pour contrer cela au niveau matériel, par exemple, effacer de force le contenu de la mémoire lorsque l'alimentation est coupée ou redémarrer, mais cela n'aidera pas si quelqu'un sort simplement le module et le place dans un autre ordinateur ou dans une partie dédiée de l'équipement pour extraire le contenu de sa mémoire.
Enfin, il y a la possibilité d'un accès direct à la mémoire. Tout périphérique PCI de votre ordinateur a la capacité de lire et d'écrire le contenu de n'importe quel secteur de la mémoire principale en mode normal. Ils peuvent tout faire.

Cela a été développé même lorsque les ordinateurs étaient beaucoup plus lents et nous ne voulions pas que le processeur central «garde» chaque transfert de données vers l'appareil depuis la mémoire principale. Ainsi, les appareils ont un accès direct à la mémoire, le processeur peut leur donner des instructions qu'ils peuvent simplement compléter, mais les données resteront en mémoire chaque fois que vous en aurez besoin.
C'est le problème, car les périphériques PCI peuvent être reprogrammés. Beaucoup de ces choses ont un firmware inscriptible, que vous pouvez simplement mettre à niveau vers quelque chose d'hostile. Et cela peut compromettre la sécurité de l'ensemble du système d'exploitation, car il permettra toute forme d'attaque, même pour modifier le système d'exploitation lui-même ou extraire la clé directement. En informatique légale, il existe des équipements conçus pour de telles choses dans le cadre des enquêtes sur les délits: ils connectent quelque chose à votre ordinateur et extraient le contenu de la mémoire. Vous pouvez le faire en utilisant FireWire, ExpressCard ou Thunderbolt ... En fait, ce sont tous des ports externes qui donnent accès au bus système interne.
Donc, ce serait bien s'il était possible de ne pas stocker la clé dans la RAM, car nous avons en quelque sorte montré que la RAM n'est pas très fiable d'un point de vue de la sécurité. Existe-t-il un magasin de clés dédié ou un équipement cryptographique spécial? Oui. Vous pouvez utiliser des accélérateurs cryptographiques pour le serveur Web pour traiter plus de transactions SSL par seconde. Ils résistent aux interférences non autorisées. Les autorités de certification CA ont des éléments qui stockent leurs clés secrètes, mais elles ne sont pas vraiment conçues pour des opérations hautes performances telles que l'utilisation du chiffrement de disque. Y a-t-il donc d'autres options?
Peut-on utiliser le processeur comme une sorte de module cryptographique pseudo-matériel? Pouvons-nous calculer quelque chose comme un algorithme de chiffrement de bloc AES symétrique dans un CPU, en utilisant uniquement quelque chose comme des registres de CPU au lieu de RAM?

Intel et AMD ont ajouté d'excellentes nouvelles instructions aux processeurs qui ont pris en charge l'exécution d'AES, vous pouvez donc maintenant effectuer des opérations de chiffrement de bloc primitif avec une seule instruction de construction simple. La question est, pouvons-nous laisser notre clé en mémoire, ou pouvons-nous effectuer ce processus sans compter sur la mémoire principale? Les processeurs x86 modernes ont un assez grand ensemble de registres, et si l'un d'entre vous a vraiment essayé d'ajouter tous les bits qui s'y trouvent, vous obtenez environ 4 kilo-octets. Ainsi, nous pouvons réellement utiliser certains processeurs pour stocker des clés et créer de l'espace pour les opérations de chiffrement.
Une possibilité consiste à utiliser des registres matériels pour déboguer les points d'arrêt. Dans un processeur Intel typique, il y a 4 de ces registres, et dans le système x64, chacun d'eux contiendra un pointeur 64 bits. Il s'agit de 256 bits d'espace disque potentiel que la plupart des gens n'utiliseront jamais. Bien sûr, l'avantage d'utiliser des registres de débogage est leur privilège, car seul le système d'exploitation peut y accéder. Il y a d'autres avantages intéressants ici, par exemple, lorsque vous coupez l'alimentation du processeur lorsque vous éteignez le système ou passez en mode veille, vous perdez vraiment tout le contenu du registre, vous ne pouvez donc pas avoir peur d'un «redémarrage à froid».
Un gars d'Allemagne, Tilo Muller, a implémenté cette chose similaire appelée TRESOR pour Linux en 2011. Il a testé les performances d'un tel système et a conclu qu'il ne fonctionne pas plus lentement qu'avec un calcul AES régulier par logiciel.
Que diriez-vous de stocker deux clés de 128 bits au lieu d'une clé? Cela nous mènera à un espace de cryptomodule plus grand. Nous pouvons stocker une clé principale qui ne quitte jamais le processeur au démarrage, puis charger et décharger les versions de clé dont nous avons besoin pour effectuer des opérations supplémentaires et résoudre des tâches supplémentaires.
Le problème est que nous pouvons stocker notre code ou nos clés en dehors de la mémoire principale, mais le CPU traitera quand même le contenu de la mémoire. Ainsi, l'utilisation de DMA, la technologie d'accès direct à la mémoire, le contournement du processeur central ou d'autres manipulations, vous permet de changer le système d'exploitation et d'enregistrer son vidage en dehors des registres de mémoire principaux ou, si des méthodes plus exotiques sont utilisées, en dehors des registres de débogage.
Pouvons-nous faire quelque chose avec un angle d'attaque DMA? Il s'est avéré que oui, nous le pouvons. Récemment, dans le cadre des nouvelles technologies pour augmenter la virtualisation des serveurs, pour des raisons de performances, les gens aiment pouvoir connecter, par exemple, une carte réseau à un serveur virtuel, il doit donc être connecté via un hyperviseur.

La technologie IOMMU a été conçue de telle manière que vous pouvez isoler un périphérique PCI dans votre propre petite partition de mémoire, d'où il ne peut pas lire et écrire arbitrairement n'importe où dans le système. C'est idéal: nous pouvons configurer les autorisations IOMMU pour protéger notre système d'exploitation ou ce que nous utilisons pour traiter les clés et les protéger contre les accès aléatoires.
Encore une fois, notre ami d'Allemagne, Tilo Muller, a implémenté une version de TRESOR sur une visière microbit appelée BitVisor, qui fait cela. Cela vous permet d'exécuter un système d'exploitation distinct et d'accéder de manière transparente au chiffrement du disque, et la grande chose est que vous n'avez pas à vous en soucier ni à en savoir plus.
L'accès au disque est totalement transparent pour le système d'exploitation, le système d'exploitation ne peut pas accéder aux registres de débogage et IOMMU est configuré de telle manière que l'hyperviseur est complètement protégé contre toute manipulation.
Mais, comme il s'est avéré, en mémoire, en plus des clés de chiffrement de disque, il y a d'autres choses à prendre en compte. Il y a un problème que j'ai déjà mentionné - nous avons utilisé le chiffrement de conteneurs auparavant, et maintenant nous effectuons principalement le chiffrement complet du disque., , . , RAM , , . , , , , SSH-, PGP-, « », .

: RAM? , , , , .

, , , – , ! 2010 RAM. — : “clear”, , , . 10-50 . , , , -, – 10% . , . , , ? , TPM , , , .
-, , . , , - CPU.
, . , , , . , , - . , ? , . ? , - , , , “ ” , .

, . , , . — Trusted Platform Module – , . , , , , TPM . , «» , . , , . , , .

? -. - , - «» , . , .
, – -, . , RSA/SHA1, , , - . - , . , .
23:10
DEFCON 21. , «» . 2e partieMerci de rester avec nous. Aimez-vous nos articles? Vous voulez voir des matériaux plus intéressants? Soutenez-nous en passant une commande ou en le recommandant à vos amis, une
réduction de 30% pour les utilisateurs Habr sur un analogue unique de serveurs d'entrée de gamme que nous avons inventés pour vous: Toute la vérité sur VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbps à partir de 20 $ ou comment diviser le serveur? (les options sont disponibles avec RAID1 et RAID10, jusqu'à 24 cœurs et jusqu'à 40 Go de DDR4).
VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbit / s jusqu'au printemps gratuitement lors du paiement pendant
six mois, vous pouvez commander
ici .
Dell R730xd 2 fois moins cher? Nous avons seulement
2 x Intel Dodeca-Core Xeon E5-2650v4 128 Go DDR4 6x480 Go SSD 1 Gbps 100 TV à partir de 249 $ aux Pays-Bas et aux États-Unis! Pour en savoir plus sur la
création d'un bâtiment d'infrastructure. classe utilisant des serveurs Dell R730xd E5-2650 v4 coûtant 9 000 euros pour un sou?