Cours MIT "Sécurité des systèmes informatiques". Conférence 18: «Navigation Internet privée», partie 3

Institut de technologie du Massachusetts. Cours magistral # 6.858. "Sécurité des systèmes informatiques." Nikolai Zeldovich, James Mickens. 2014 année


Computer Systems Security est un cours sur le développement et la mise en œuvre de systèmes informatiques sécurisés. Les conférences couvrent les modèles de menace, les attaques qui compromettent la sécurité et les techniques de sécurité basées sur des travaux scientifiques récents. Les sujets incluent la sécurité du système d'exploitation (OS), les fonctionnalités, la gestion du flux d'informations, la sécurité des langues, les protocoles réseau, la sécurité matérielle et la sécurité des applications Web.

Cours 1: «Introduction: modèles de menace» Partie 1 / Partie 2 / Partie 3
Conférence 2: «Contrôle des attaques de pirates» Partie 1 / Partie 2 / Partie 3
Conférence 3: «Débordements de tampon: exploits et protection» Partie 1 / Partie 2 / Partie 3
Conférence 4: «Séparation des privilèges» Partie 1 / Partie 2 / Partie 3
Conférence 5: «D'où viennent les systèmes de sécurité?» Partie 1 / Partie 2
Conférence 6: «Opportunités» Partie 1 / Partie 2 / Partie 3
Conférence 7: «Native Client Sandbox» Partie 1 / Partie 2 / Partie 3
Conférence 8: «Modèle de sécurité réseau» Partie 1 / Partie 2 / Partie 3
Conférence 9: «Sécurité des applications Web», partie 1 / partie 2 / partie 3
Conférence 10: «Exécution symbolique» Partie 1 / Partie 2 / Partie 3
Conférence 11: «Ur / Web Programming Language» Partie 1 / Partie 2 / Partie 3
Conférence 12: Sécurité du réseau, partie 1 / partie 2 / partie 3
Conférence 13: «Protocoles réseau», partie 1 / partie 2 / partie 3
Conférence 14: «SSL et HTTPS» Partie 1 / Partie 2 / Partie 3
Conférence 15: «Logiciel médical» Partie 1 / Partie 2 / Partie 3
Conférence 16: «Side Channel Attacks» Partie 1 / Partie 2 / Partie 3
Conférence 17: «Authentification des utilisateurs», partie 1 / partie 2 / partie 3
Conférence 18: «Navigation privée sur Internet» Partie 1 / Partie 2 / Partie 3

Ainsi, la première approche consistera à utiliser des machines virtuelles comme moyen d'améliorer la garantie de la navigation privée, c'est-à-dire que nous considérerons la confidentialité au niveau de la machine virtuelle.

L'idée de base est que chaque session privée doit s'exécuter sur une machine virtuelle distincte. Ensuite, lorsque l'utilisateur termine la session de navigation privée, la machine virtuelle est supprimée. Alors quel est l'avantage de cette idée?



Il est probable que vous obteniez des garanties de confidentialité plus fortes, que vous pouvez fournir à l'utilisateur, car, vraisemblablement, la machine virtuelle a une interface d'entrée / sortie de données plutôt propre. On peut supposer que vous combinez ces machines virtuelles dans, disons, une sorte de solution d'échange sécurisé, par exemple, en utilisant Open BSD avec le chiffrement des données de disque.

Ainsi, nous avons une séparation très claire de la machine virtuelle ici, ci-dessus, et de toutes les opérations d'E / S qui se produisent ci-dessous. Cela vous offre des garanties plus solides que celles que vous obtenez à partir d'un navigateur qui n'a pas été conçu à partir de zéro pour prendre grand soin de tous les moyens d'entrée / sortie d'informations et des secrets qui peuvent fuir lorsque ces informations sont dans l'entrepôt de données .

Alors oui, cela offre des garanties plus solides. Et, en outre, cela ne nécessite aucune modification dans vos applications, c'est-à-dire dans le navigateur. Vous prenez le navigateur, placez-le dans l'une de ces machines virtuelles - et tout s'améliore comme par magie sans aucun changement dans l'application.

Quel est le problème avec cela - je vais dessiner un sourire triste au tableau - c'est lourd. Par lourdeur, je veux dire que lorsque vous voulez démarrer l'une des sessions de navigation privée, vous devez démarrer la machine virtuelle entière. Et cela peut être assez douloureux car les utilisateurs seront frustrés car cela leur prend beaucoup de temps pour démarrer leurs sessions de navigation privées.



D'autres problèmes sont que cette solution n'est pas pratique. Et la raison de l'impraticabilité n'est pas qu'il est vraiment difficile pour les utilisateurs de faire des choses comme transférer des fichiers qu'ils ont enregistrés en mode de navigation privée vers un ordinateur, transférer tous les signets qu'ils ont générés dans ce mode - tout cela, au final, peut être fait. Mais ici, il existe de nombreux inconvénients associés à la paresse.

La deuxième approche du problème est similaire à la première, mais nous l'implémentons réellement à l'intérieur du système d'exploitation lui-même, et non dans une machine virtuelle. L'idée principale ici est que chaque processus pourrait potentiellement être exécuté dans un domaine privé. Un domaine privé est une sorte de collection de ressources partagées du système d'exploitation qu'un processus utilise, et le système d'exploitation garde une trace de toutes ces choses. Et dès que le processus se termine, le système d'exploitation analyse tout dans le domaine privé et libère complètement toutes ces ressources pour une nouvelle utilisation.

L'avantage de cette approche par rapport à l'utilisation de VM est plus léger, car si vous y pensez, la machine virtuelle est essentiellement indépendante de l'état du système d'exploitation et de l'état de toutes les applications en cours d'exécution. Ainsi, l'utilisation de VM crée plus de travail que le système d'exploitation, car le système d'exploitation connaît vraisemblablement tous les points auxquels un navigateur privé entrera en contact avec les entrées / sorties de données, «parlera» au réseau et autres. Peut-être que le système d'exploitation sait même comment effacer sélectivement le cache DNS.

Ainsi, vous pouvez imaginer qu'il est beaucoup plus facile de «détordre» ces domaines de confidentialité afin de pouvoir les «démolir» plus tard. Cependant, l'inconvénient de cette solution, au moins en ce qui concerne le démarrage de la VM, est qu'il est beaucoup plus difficile de le faire correctement. Par conséquent, je viens de décrire l'approche utilisant VM comme progressive, car la machine virtuelle est essentiellement indépendante de tout ce qui fonctionne à l'intérieur du conteneur du système d'exploitation.



La bonne chose est que l'approche VM ne se concentre que sur quelques interfaces de bas niveau. Par exemple, l'interface utilisée par une machine virtuelle pour écrire sur le disque entraîne un degré de confiance plus élevé, car elle contient tout ce dont vous avez besoin. Lors de l'utilisation du système d'exploitation, cela est beaucoup plus compliqué, car vous vous attendez à ce qu'il utilise des fichiers individuels avec une interface système, par exemple, avec une interface réseau individuelle. Donc, si vous faites tout cela au niveau du système d'exploitation, la possibilité de fuite de données est beaucoup plus grande.

Il s'agissait donc de deux approches principales pour améliorer les garanties de confidentialité lors de l'utilisation du mode de navigation privée, qui peuvent être mises en œuvre à l'heure actuelle.
Vous pouvez vous demander, pouvons-nous toujours révéler l'identité de l'utilisateur s'il applique l'une de ces solutions de sécurité plus puissantes - la navigation sur Internet à l'aide d'une machine virtuelle ou de domaines de confidentialité dans le système d'exploitation? Pouvons-nous priver l'utilisateur de l'anonymat? La réponse à cette question sera - oui, nous le pouvons!

La deanonymisation d'un utilisateur est possible car la machine virtuelle est unique pour une raison quelconque. Ceci est similaire à la façon dont nous avons pu prendre les empreintes digitales du navigateur en utilisant le site Web Panopticlick. Il y a probablement quelque chose d'unique dans la configuration de la machine virtuelle, qui vous permet de prendre ses empreintes digitales. Il est également possible que le moniteur de machine virtuelle ou le système d'exploitation lui-même soit unique à certains égards. Et cela permet à un attaquant du réseau de révéler l'identité de l'utilisateur.

Un exemple typique est la prise d'empreintes TCP. L'idée est que la spécification du protocole TCP permet en fait l'installation de certains paramètres de protocole lors de la mise en œuvre de ce protocole. Par exemple, TCP permet aux intervenants de choisir la taille initiale des paquets envoyés dans la première partie de l'établissement d'une connexion TCP, ce qui permet aux intervenants de choisir des éléments comme la durée de vie initiale de ces paquets.



Ainsi, vous pouvez obtenir des outils prêts à l'emploi, tels que InMap, qui peuvent indiquer avec une forte probabilité avec quel système d'exploitation vous travaillez, simplement en vous envoyant des packages soigneusement traités. Ils verront des choses comme le fait que TTL est présenté ici, et voici la taille du package de distribution, et voici le numéro de série TTP. Ainsi, ils créent une base de données d'empreintes digitales. Ils disent: "si le package retourné a ceci, ceci et cette caractéristique, alors selon le tableau, vous travaillez sur Solaris, vous utilisez un Mac et vous utilisez Windows", ou autre chose. Par conséquent, même en utilisant l'une de ces approches pour améliorer la confidentialité lors de la navigation privée à l'aide d'une machine virtuelle ou d'un système d'exploitation, un attaquant peut toujours lancer l'une de ces attaques de détection d'empreintes digitales via TCP et en apprendre beaucoup sur un utilisateur particulier.

Il sera intéressant de savoir que même si l'utilisateur est protégé de l'une de ces manières plus puissantes, l'utilisateur est toujours divisé entre les deux modes de visualisation - public et privé, il utilise toujours physiquement l'ordinateur. Ceci est intéressant car vous-même, dans le processus d'utilisation de l'ordinateur, pouvez contribuer à la fuite de vos informations personnelles.

Par exemple, il s'avère que chaque utilisateur a une touche unique. Donc, si je vous donne la tâche en même temps de commencer à taper l'expression «renard brun rapide» ou toute autre absurdité sur le clavier, l'observation montrera que le temps d'appuyer sur les touches par chacun de vous est si unique qu'il peut potentiellement être utilisé pour prendre des empreintes digitales.

Il est également intéressant de noter que les utilisateurs ont des styles d'écriture uniques. Il existe une industrie de la sécurité appelée stylographie.



L'idée de la stylographie est qu'un attaquant peut comprendre qui vous êtes simplement en regardant les échantillons de votre lettre. Imaginez que, pour une raison quelconque, vous vous accrochiez à 4chan et je veux savoir si vous avez vraiment passé du temps là-bas. Je peux regarder un tas de messages différents sur 4chan et les regrouper en ensembles de commentaires qui ont le même style. Ensuite, je vais essayer de trouver des échantillons publics de votre style d'écriture, par exemple, dans les devoirs, dont vous êtes l'auteur. Après cela, je compare les exemples de style dans les jeux de commentaires 4chan à vos devoirs, et si je trouve une correspondance, je peux écrire à vos parents pour clarifier les dangers du gel dans les forums 4chan. C'est la raison pour laquelle j'ai décidé d'attirer votre attention sur la stylographie. C'est en fait assez intéressant.

Nous avons donc discuté de la façon dont vous pouvez utiliser des machines virtuelles ou des systèmes d'exploitation modifiés pour prendre en charge la navigation privée. Par conséquent, vous vous demandez peut-être pourquoi les navigateurs n'exigent pas des utilisateurs qu'ils fassent l'une de ces choses - démarrer une machine virtuelle ou modifier le système d'exploitation? Pourquoi les navigateurs prennent-ils en charge la mise en œuvre de tout cela?

La raison principale est la déployabilité. Les fabricants de navigateurs ne veulent généralement pas forcer leurs utilisateurs à faire quelque chose de spécial pour utiliser le navigateur autre que l'installation du navigateur lui-même. Cela est similaire à la motivation du client natif lorsque Google est sur le point d'ajouter ces fonctionnalités intéressantes aux ordinateurs des utilisateurs finaux, mais ne veut pas forcer les utilisateurs à installer des versions spéciales de Windows ou Linux ou à faire autre chose. Ainsi, Google dit que "nous nous en occuperons nous-mêmes".

Une autre raison est la convivialité. Beaucoup de ces solutions de navigation privée au niveau des machines virtuelles et du système d'exploitation, comme nous l'avons déjà expliqué, rendent difficile pour les utilisateurs d'enregistrer les éléments reçus lors d'une session de navigation privée - fichiers téléchargés, signets, etc.



Fondamentalement, les fabricants de navigateurs affirment que s'ils mettent eux-mêmes en œuvre des modes de navigation privés, ils pourront autoriser les utilisateurs à accepter les fichiers téléchargés en mode de navigation privée et à les enregistrer sur un ordinateur. Cela sonne bien au premier abord. Mais notez que cette approche permet aux utilisateurs d'exporter une sorte d'état privé, ce qui ouvre de nombreuses vulnérabilités dans le système de sécurité et complique grandement l'analyse des propriétés de sécurité utilisées lors de la mise en œuvre du mode de navigation privée.
Par conséquent, les auteurs de l'article tentent de caractériser différents types d'états de navigateur qui peuvent être modifiés et considèrent comment les modes de navigation privée actuels peuvent les modifier.

Cet article classe les changements d'état du navigateur. Il existe quatre types de changements dans cette classification. Le premier type est lorsque le site lui-même a initié les changements d'état sans intervention de l'utilisateur. Des exemples de ce type de changement d'état sont l'obtention de cookies, l'ajout de quelque chose à l'historique des adresses du navigateur et éventuellement la mise à jour du cache du navigateur. Par conséquent, fondamentalement, cet état persiste pendant tout le mode de visualisation privé, mais est détruit après son achèvement.

On peut supposer que puisque l'utilisateur n'interagit pas avec le navigateur lors de la formation de cet état, il est entendu que l'utilisateur lui-même ne voudrait pas y participer.

Le deuxième type de changement d'état du navigateur est également initié par le site Web, mais il existe une certaine interaction avec l'utilisateur qui a visité ce site Web. Par exemple, un utilisateur installe un certificat client ou utilise un mot de passe pour autoriser sur le site, c'est-à-dire qu'il essaie d'aller quelque part. De plus, le navigateur dit très utilement: "voulez-vous enregistrer ce mot de passe?". Si l'utilisateur répond «oui», des éléments tels que les mots de passe enregistrés peuvent être utilisés en dehors du mode de navigation privée. Par conséquent, en principe, il n'est pas clair quelle devrait être la politique de confidentialité dans ce cas. En pratique, il s'avère que les navigateurs permettent l'existence de choses survenues en mode de navigation privée, en dehors de celui-ci, en supposant que l'utilisateur choisira lui-même la meilleure option pour lui, en disant «oui» ou «non». Si l'utilisateur est assez intelligent, il n'enregistrera pas le mot de passe pour un site douteux, car quelqu'un d'autre peut alors l'utiliser. Il peut donc y avoir une erreur de l'utilisateur, pas un navigateur, ce qui peut entraîner une perte de confidentialité.

Par conséquent, il n'est pas clair quelle stratégie est la meilleure, mais dans la pratique, ce type de changement d'état peut être stocké en dehors du mode de navigation privée.

Le troisième type de changement d'état est entièrement initié par l'utilisateur. Ce sont des choses comme enregistrer des signets ou télécharger des fichiers. Cet état est similaire au précédent, car l'utilisateur est directement impliqué dans sa création. Dans ce cas, le mode d'affichage privé accepte que les changements d'état de ce type soient enregistrés pour une utilisation future en dehors de l'affichage privé.



En outre, il existe certains types d'états qui ne sont associés à aucune session particulière. Par exemple, il s'agit de l'état de mise à jour du navigateur lui-même, c'est-à-dire une modification du fichier représentant le navigateur. Les développeurs de navigateurs pensent que ce changement d'état fait partie d'un état global qui est disponible pour une visualisation publique et privée.

En fin de compte, si vous regardez cela attentivement, vous remarquerez qu'il existe de nombreuses conditions dans lesquelles une fuite de données en dehors du mode de navigation privée est possible, surtout s'il y a une interaction avec l'utilisateur. Je me demande si c'est le meilleur compromis entre sécurité et confidentialité.



L'article indique qu'il est difficile d'empêcher la possibilité dans laquelle un attaquant local peut déterminer si vous utilisez ou non le mode de navigation privée. Cela est dit dans l'article un peu vaguement. Le fait est que la nature des fuites d'informations peut vous dire dans quel mode de visualisation - privé ou public - elles se produisent. Par exemple, dans Firefox et Chrome, lorsque vous créez un signet en mode de navigation privée, ce signet est associé à un tas de métadonnées, telles que le temps passé à visiter le site, etc. Dans de nombreux cas, ces métadonnées seront nulles ou proches d'une valeur nulle si ce signet a été créé en mode de navigation privée. Une personne qui gérera plus tard votre ordinateur pourra alors consulter vos informations de signet. S'il constate que ces métadonnées sont nulles, il conclura que ce signet a probablement été créé en mode de navigation privée.

Lorsque nous parlons de sécurité du navigateur, nous pensons à ce que les gens font exactement avec JavaScript, HTML ou CSS, que peuvent-ils faire avec des plugins ou des extensions? Dans le contexte de la navigation privée, les plugins et extensions sont assez intéressants, car dans la plupart des cas, ils ne sont pas limités à la même politique d'origine, par exemple, ils peuvent restreindre l'utilisation de choses comme JavaScript. Fait intéressant, ces extensions et plugins fonctionnent généralement avec des privilèges très élevés. En gros, vous pouvez les considérer comme des modules du noyau. Ils ont une autorité élevée, vous permettant d'implémenter de nouvelles fonctionnalités directement dans les navigateurs eux-mêmes. Par conséquent, cela est un peu problématique, car ces plugins et extensions sont souvent développés par quelqu'un qui n'est pas le développeur du navigateur. Cela signifie que quelqu'un essaie de faire quelque chose de bien et de donner à votre navigateur des propriétés utiles en y ajoutant un plugin ou une extension. Mais ce développeur tiers peut ne pas comprendre pleinement le contexte de sécurité dans lequel son extension est effectuée, donc une telle extension peut ne pas fournir la sémantique du mode de navigation privée ou la fournir de la mauvaise manière.

, , , . , , . , , , HTML5 , , . , Java Flash. , 2D 3D-, - Java Flash. , Web GL , , , .

, IE , , - , HTML5. , YouTube, , , - HTML5-, . . , . , , , , .

, , , , 2010 , , ?
, . , , , HTML5.

, , . , . - , .

, 2014 Firefox, pdf.js, PDF-, HTML5-. , , .

, - PDF-, . PDF- , pdf.js , . . , , . , — , .

. , , , , , , , .

, : , , .



Firefox , 2011 . . , , , about:memory, , , , URL- , . , , , about:memory. , Firefox. , Firefox . , , about:memory , .

, URL-, , , . , . .
Bugzilla, , . , , , , , . , , . , . : « , , , .» : « , ».

, — HTML5 — , , . , , , .
, . , , . , .

, Magnet, -, . , , , URL- . - .

, Tor.


.

Merci de rester avec nous. ? 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'en décembre gratuitement en payant pour une période de six mois, vous pouvez commander ici .

Dell R730xd 2 ? 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?

Source: https://habr.com/ru/post/fr430208/


All Articles