 On va pouvoir commencer, tonnerre d'applaudissement pour Will Scott. Ok, bienvenue. Alors, la structure de cette présentation, c'est en deux parties. D'abord, je vais vous donner une sorte de vue d'ensemble des mécanismes qui existent dans le monde de la communication sécurisée. Et je vais essayer de différencier les choix et les différents compromis qu'on peut faire. Et pourquoi est-ce qu'on choisit une solution ou une autre ? Parce qu'en général, on parle de sécurité ou de vie privée de façon globale, mais en fait, il y a beaucoup d'éléments particuliers dedans. Et du coup, si on regarde ça en détail, ça nous permet de mieux comprendre qu'est-ce qu'on sacrifie ou pourquoi est-ce qu'on fait une décision donnée, qu'on prend une décision spécifique pour un système donné. Et donc, ce que je vais couvrir, c'est d'abord je vais vous donner une forme de taxonomie ou de classification des différents systèmes qu'on peut voir autour de nous. Et à partir d'ici, je vais pouvoir identifier des menaces contre l'économie et de se défendre et quel mécanisme utilise pour se défendre contre ces menaces. Et je vais regarder du coup les mécanismes qui sont utilisés aujourd'hui sur divers systèmes et vers la fin, on va plutôt regarder ce qui se fait dans la recherche de quels sont les nouveaux développements, où est-ce qu'on a des nouvelles idées mais qui ne sont pas encore installées ou alors où les compromis ne sont pas forcément idéaux en matière d'utilisation, d'utilisabilité ou simplement d'adoption. Donc, je vais vous présenter nos personnages ici, Alice et Bob. Et aujourd'hui, je vais parler surtout de mesageries d'une personne à une autre. Donc, c'est surtout des systèmes qui permettent d'avoir une conversation qui ressemble beaucoup à ce qu'on aurait en personne. Et ça, c'est ce que j'essaie de modéliser. Je veux avoir une communication synchrone en temps réel sur une durée de semaine, mois, année. Ça correspond à, voilà, je parle à quelqu'un que je connais dans la vraie vie. Et si je veux parler à cette personne, je vais attendre ce que le système me donne une expérience similaire à ça. Donc, la façon dont on va concevoir ces systèmes, ces systèmes fonctionnent de façon similaire à une communication dans la vie réelle. Sur un réseau local, je peux utiliser AirDrop ou je peux utiliser des technologies qui juste marchent directement entre mon ordinateur, mon téléphone et celui d'un ami. On pourrait utiliser simplement NetCat ou des choses en ligne de commande pour envoyer des données directement à l'ordinateur de quelqu'un d'autre. Et ça, ça donne une communication qui est vraiment similaire. C'est fmr, c'est-à-dire que les données ne sont pas conservées par la suite. Et c'est un, un. Mais il y a déjà des adversaires, ou en tout cas des menaces auxquelles on peut penser en matière de sécurité. Par exemple, le réseau. Est-ce que quelqu'un peut voir cette communication et comment est-ce qu'on se protège contre ça ? On a des mécanismes qui peuvent faire ça, notamment le chiffrement. Je peux déguiser ma communication en la chiffrant pour que quelqu'un à qui la communication n'est pas destinée ne puisse pas comprendre ce qui se passe. L'autre menace, c'est le terminal en lui-même. Il y a des choses qu'il faut qu'on pense directement quand on parle de se protéger contre un terminal malicieux. Par exemple, ça pourrait être un logiciel qui est installé sur un ordinateur et qui essaye de voler les données qui sont reçues, soit en temps réel, soit après. Et donc on a des systèmes pour ça. Par exemple, l'expiration des messages, ce qui fait que les messages sont supprimés après un certain temps. Et l'autre mécanisme, c'est l'isolation. C'est-à-dire que notre logiciel est isolé du point du système pour que d'autres applications ne puissent pas lire ce qui s'y passe. On a ce système de communication direct, mais ça, c'est une minorité de ce à quoi on pense quand on parle de communication. En général, plutôt, la plupart des systèmes qu'on utilise utilisent un serveur centralisé. Donc il y a quelque chose dans le cloud qui est centralisé. On envoie nos messages là-bas et ce truc-là transmet les messages à la personne qui en soit. Ça, c'est le cas pour Facebook, WhatsApp, Slack, IRC, TRIMA, la plupart des applications que vous utilisez qui utilisent du cloud ont ce modèle-là. Donc on peut identifier d'autres menaces ici et on peut aussi voir pourquoi est-ce qu'on utilise ces systèmes-là. Donc on a toujours le réseau comme menace, mais je vais aller un peu plus en détail ici. On a toujours le réseau local qu'on avait avant. Donc quelqu'un qui est sur le réseau près de la personne qui voit les messages, quelqu'un d'autre dans le même café, sur le même wifi, ou quelqu'un dans votre entreprise, votre école, sur le même réseau. On a aussi l'internet en soi, donc le fournisseur d'accès, votre gouvernement peut-être, ou un autre gouvernement qui veut peut-être regarder les messages ou vous empêcher les envoyer. On a aussi potentiellement des gens sur le réseau près du serveur, qui peuvent voir la plupart des serveurs qui peuvent entrer et sortir du serveur. Est-ce que ces serveurs doivent exister quelque part physiquement dans un data center ou quelque part, ou peut-être virtualiser chez AWS, ou Google Cloud, ou quelque chose comme ça. Et du coup, on doit penser à d'autres acteurs ici qui sont près du serveur et qui peuvent voir l'essentiel du trafic qui rentre et qui sort du serveur et qui peuvent voir peut-être vos messages. Il faut aussi qu'on pense au serveur lui-même comme adversaire. Il y a des menaces plutôt directes. Le serveur peut se faire hacker ou être compromis. Il y a donc certaines parties de la communication ou certains des bugs dans le logiciel peuvent être des problèmes ici. On a aussi une entité légale qui fait tourner le serveur et qui est dans une juridiction. Et le gouvernement de cette juridiction peut aussi envoyer des requêtes pour forcer cette entité à livrer certaines données. Donc il y a la question de qu'est-ce qui est légalement requit d'être livré au gouvernement ou aux autorités. C'est aussi généralement quelque chose qui est géré par une entité, une entreprise, qui a besoin de faire de l'argent. Et la question est est-ce qu'on fait confiance à cette entreprise aujourd'hui et est-ce qu'on fait aussi confiance à cette entreprise dans le futur si cette entreprise est rachetée ou acquise par quelqu'un d'autre. Et du coup, est-ce que les messages dans le futur pourraient être découverts. On a aussi des techniques pour se protéger contre ça. On peut opusquer le trafic. Ça c'est une technique qui permet de faire en sorte que notre trafic ne ressemble pas forcément de la discussion instantanée sur le réseau. Et il y a aussi, alors j'appelle ça juste renforcer le serveur, mais c'est un ensemble de techniques qui permet de faire en sorte de ne pas faire aussi confiance aux serveurs, ce qui rend un serveur compromis moins probable. Ou même si le serveur est compromis, peut-être que moins d'informations pourront être extraites. Alors c'est important de montrer qu'il y a quand même des raisons pour lesquelles on a essentiellement la mesagerie centralisée. En premier c'est la disponibilité. C'est très facile d'aller à ce point central qui est toujours disponible. Ça permet aussi de gérer certains problèmes comme par exemple si vous avez plusieurs périphériques, notamment des périphériques mobiles avec un système de push au lieu de pull. Si vous utilisez Android ou iOS, vous pouvez envoyer des notifications au téléphone directement et c'est la méthode requise. C'est la seule méthode correcte pour faire ça. Pour ça il vous faut un serveur centralisé qui peut envoyer cette notification en temps réel à vos utilisateurs sur mobile. Alors les désavantages, il y a le coût parce que maintenant on a une entité qui doit payer ses coûts pour faire tourner les serveurs. Il y a aussi cette entité qui a une existence juridique et qui peut être forcé à livrer certaines données. Ce n'est pas le seul type de système qu'on a. Un autre système très commun c'est ce qu'on appelle les systèmes fédérés notamment l'email qui est comme ça. L'email c'est pas mal, je peux choisir un fournisseur d'email en qui j'ai confiance et si j'ai confiance en aucun fournisseur d'email je peux créer mon propre serveur mail ce qui permet de décentraliser les coûts et de rendre le système plus facile à mettre en oeuvre. Ça me permet d'avoir confiance dans mon fournisseur d'email à moi mais je n'ai pas forcément confiance dans le fournisseur d'email de la personne qui reçoit mes mails dans ce cas-là Bob, je ne sais pas si je peux faire confiance à son fournisseur d'email puisque les fournisseurs d'email sont séparés et décentralisés. Il y a aussi des problèmes en matière d'identité et de découverte des autres et aussi de poche vers des applications mobiles mais on a des solutions pour ça et on a aussi d'autres choses que l'email on a aussi le Fediverse avec Mastodon on a aussi différents systèmes de chat et même SMS par exemple chaque opérateur de téléphonie gère ses propres SMS et se fédère avec les autres. Pendant qu'on continue cette sorte de métaphore sur les systèmes on finit par avoir des systèmes décentralisés Il y a deux types de systèmes décentralisés le premier c'est ce par gossip c'est-à-dire que je donne le message que je veux à quelqu'un en qui j'ai confiance et qui va le propager aux gens autour de ce nœud-là et éventuellement ça va se répandre dans tout le réseau ça c'est toujours un type de système où on est quand même c'est assez imparfait et assez jeune alors qu'il y a des systèmes qui ont des systèmes décentralisés mais par contre ce qui est bien c'est que c'est très décentralisé les autres systèmes décentralisés ont pour but d'avoir tous les utilisateurs qui ont peu de confiance envers les infrastructures centralisées on peut penser ici par exemple aux hashtags distribués qui sont utilisés par exemple avec bitcoin c'est quelque chose qu'on voit aussi par exemple les infrastructures centralisées qui sont utilisées par exemple c'est quelque chose qu'on voit aussi avec ricochet ou toxchat qui utilisent des infrastructures un petit peu comme tord pour envoyer les messages ou qui ont aussi une hashtag distribuée pour router les messages vers tous les membres du réseau on peut donc rechercher dans cette table où envoyer un message et ça permet d'avoir cette découverte des identités donc on va regarder maintenant un peu les mécanismes qu'on a identifiés plus en détail, on peut commencer par le chiffrement quand vous envoyer un message à un serveur par défaut il n'y a pas de chiffrement du tout si vous pensez par exemple à IRC ou même l'email jusqu'à peu de temps était encore généralement non chiffré vous pouvez faire une bonne analogie avec une carte postale si vous avez une carte postale dessus il y a d'où vient la carte où est-ce qu'elle va et le contenu si vous utilisez du chiffrement de transport et ça c'est standard pour la plupart des systèmes centralisés c'est-à-dire que vous prenez cette carte postale vous la mettez dans une enveloppe que le réseau ne peut pas ouvrir c'est ce qu'on utilise avec TLS ou d'autres formes de chiffrement de transport ça vous fournit ça le lien réseau voit juste la source et la destination donc il voit juste qu'il y a un message qui vient de Alice et qui va vers Facebook ou un autre fournisseur cloud mais il ne peut pas voir à l'intérieur de ce message parce que c'est un message qui va être qui est destiné à Bob ou quel est le contenu du message il voit juste un message qui va vers Facebook donc SMTPS il y a aussi les versions sécurisées d'IRC de l'email et la plupart des protocoles modernes utilisent une forme de sécurité au niveau du transport ce qu'on a de plus en plus maintenant aussi c'est le chiffrement end to end le chiffrement de point à point donc la différence ici c'est que le message que Alice envoie à Bob est chiffré de telle façon que Facebook ne peut pas non plus voir le contenu de ce message donc le réseau voit juste un message qui va de Alice à Facebook mais Facebook ne peut pas non plus lire le message dans ce scénario donc le chiffrement end to end c'est pas mal répandu récemment c'est dernièrement signal, iMessage on a des outils comme PGP, GPG de différentes formes de SAP pour tout ce qui est messagerie instantanée c'est intéressant de parler du protocole de signal qui s'appelait avant Xmodon qui a été adopté dans aussi WhatsApp dans Facebook Messenger si on active le chiffrement end to end et qui s'est plutôt généralisé dans ce qu'on appelle le noise framework qui a pas mal d'adoptions maintenant au memo ressemble aussi pas mal à ça mais est utilisé pour XMPP donc c'est une implémentation spécifique de ce protocole pour XMPP une autre implémentation s'appelle of the record, OTR qui s'est développé un peu indépendamment de ça mais eux pensent beaucoup à ce qu'on appelle la post-PC de ne pas dire qu'un message n'est pas forcément attribuable à quelqu'un en particulier mais ce qu'il faut voir c'est que la partie difficile c'est pas de chiffrer le message la partie difficile c'est comment est-ce qu'on envoie le premier message pour établir une communication en particulier si le recipientaire est pas en ligne à ce moment-là parce que voilà je tape mon message je veux l'envoyer il faut que j'obtienne une clé pour parler à cette personne pour pouvoir envoyer un message que uniquement cette personne peut lire et pour établir un secret partagé et pour faire tout ça en un seul message en particulier si la personne qui on parle n'est pas en ligne c'est difficile c'est aussi difficile de comprendre la correspondance entre un utilisateur et c'est périphérique parce qu'on peut avoir un nouveau téléphone, un nouvel ordinateur et de pouvoir ajouter un nouveau téléphone etc sans avoir des warnings, des erreurs qui rendent le système difficile à utiliser c'est une des parties les plus difficiles d'établir ces systèmes-là on a un problème qui qui viennent lorsqu'on utilise le chiffrement de bout en bout donc l'établissement de la connexion c'est le problème qui consiste à dire qui est bug donc je trouve un contact et je l'ai trouvé d'une certaine manière par une adresse e-mail, par un numéro de téléphone par exemple signal utilise les numéros de téléphone, beaucoup de systèmes utilisent les adresses mail certains systèmes utilisent des identifiants uniques et générés pour vous mais du coup on va avoir besoin d'une clé ou quelque chose d'un secret cryptographique pour identifier cette personne et du coup on a besoin de savoir comment on va faire cette correspondance donc beaucoup de systèmes font ça en uploadant nos listes de contact ce qui pose des problèmes en termes d'interface utilisateur mais on a besoin de faire confiance au serveur pour qu'il ait ces contacts signal de ce point de vue-là il indique qu'il ne upload pas les contacts du coup c'est vrai par contre il upload des empreintes des numéros de téléphone et du coup on peut faire une recherche sur le h du numéro de téléphone et retrouver les informations il y a signal par ce moyen donc signal utilise Intel SGX pour augmenter le coût d'une attaque potentielle une autre façon de faire ça c'est de permettre aux gens d'utiliser des pseudonymes et du coup le coût devient moindre en cas de compromisson mais qu'est-ce qu'il se passe si on ne veut pas faire confiance au serveur pour faire cette correspondance donc quelque chose qui existe depuis quelque temps c'est le web of trust si je sais que quelqu'un a une clé donnée je peux moi signer une attestation que c'est cette personne qui a cette clé et si quelqu'un meuf et confiance cette personne peut faire confiance à mon attestation et donc peut vérifier que cette clé est associée à cette identifiant et donc on peut utiliser un réseau avec parfois plusieurs sceaux pour atteindre la clé que je veux et on a quand même une forme de confiance indirect entre moi et la personne à qui je veux envoyer un message alors c'est un système qui est généralement assez manuel et l'utilisabilité est pas forcément géniale et cette année on a aussi eu des attaques de dénits de service contre les infrastructures de web of trust qui sont particuliers et que n'importe qui peut mettre à disponibilité des attestations comme ça et que donc si des utilisateurs ou des faux utilisateurs des civils décident d'uploader énormément d'informations le système ne tient pas la charge parce que c'est très dur de filtrer pour avoir uniquement les personnes qui nous intéressent parce que pour pouvoir filtrer ça il faudrait dire au système quels identités nous intéressent une information au réseau de à qui on parle Keybase a une autre approche ce qu'ils disent c'est que quand je parle à quelqu'un je parle à une personne qui a déjà une identité en ligne quelqu'un qui a une identité sur Twitter ou sur GitHub ou sur un réseau social ou un site web donc ce que Keybase dit c'est que cette clé est associée à ce compte Twitter ou ce compte Reddit ou un compte Facebook avec des preuves cryptographiques de cette association je peux avoir moi la preuve que cette identité cryptographique est associée à ce système-là Keybase cette année a aussi commencé à fournir un système de récompenses financières pour utiliser leur système et ensuite ont eu des problèmes puisqu'il y avait énormément de gens qui s'inscrivaient parce que le problème était du coup est-ce que les entités correspondent sont de véritables personnes c'est similaire à l'attaque par Disney Service sur la toile de confiance le web of trust dont j'ai parlé tout à l'heure sur nos périphériques généralement on utilise un système qu'on appelle le TOEFOO Trust on First Use la confiance lors de la première utilisation c'est-à-dire que la première fois que je vois une clé qui identifie quelqu'un je garde cette clé et si je dois à nouveau parler à cette personne dans le futur j'ai déjà une clé et je peux continuer à l'utiliser parce que cette clé reste la même au fil du temps donc cette continuité cette capacité à garder les clés veut dire que la première fois qu'on est tapé une connexion avec quelqu'un il faut que ce soit la vraie personne et ensuite quelqu'un qui compromettraient la personne avec qui on parle ne peut pas changer cette clé plus tard enfin, une autre chose très intéressante qui est sortie environ en 2015 c'est un système par Adam Langley qui s'appelle Pound qui est quelque sorte une version plus moderne de l'email une des choses que Pound faisait c'était d'avoir un échange de clés authentifié par ModPass ça c'est un peu un nouveau développement dans la cryptographie qui est si deux personnes peuvent commencer avec un secret partagé assez faible par exemple je peux dire publiquement en clair dire à l'autre personne où est-ce qu'on était tel jour et voilà, là on sait quelque chose tous les deux qui a peut-être quelques bits d'anthropie parce qu'on peut écrire la même réponse le même texte on peut prendre ça faire une dérivation de clés à partir de ça et peut-être arriver à plus d'anthropie partagé et à partir de là on peut peut-être boostraper un échange de clés et mettre en place une identité cryptographique forte pour l'autre personne donc PANDA utilise un système qu'ils appellent PANDA qui permet de mettre en relation deux individus en se basant sur un challenge-response comme ça c'est aussi quelque chose qu'on trouve souvent dans les systèmes of the record notamment ceux qui sont balés sur japper l'autre chose dont on a besoin d'être conscient et auquel faire attention pour les systèmes souffrés c'est la répudiabilité donc on veut que notre conversation soit complètement répudiable qu'on puisse pas nous attribuer ou à notre correspondant tout ou partie de la conversation une fois qu'on a authentifié l'autre personne on obtient un transcript et on pourrait dire cette personne a dit ça donc on a obtenu récemment des choses comme ça sur des mails par exemple sur wikileeps on a eu des mails authentifiés de cette manière donc on pouvait dire regardez les mails ici leur texte n'a pas été modifié on peut les attribuer effectivement à une personne précise donc quelque chose qui est permis par le protocole signal c'est ce qu'on appelle la répudiabilité ou le déni plausible donc on a une notion qui le déni plausible qui fait qu'on va pouvoir en quelque sorte jeter les secrets après-visage donc on utilise on a chacun une paire de clés qu'on utilise pour établir la communication mais à chaque fois qu'on envoie un message je vais envoyer une nouvelle clé qui va modifier la clé qu'on partage donc quand Alice envoie un message ma prochaine clé publique ce sera ça et quand Bob répond il va dire ma prochaine clé publique ce sera ça et ce que je peux faire maintenant c'est quand j'envoie un message je peux donner une partie secrète de ma clé précédente et du coup je peux dire la clé que j'ai utilisée précédemment c'était ça et donc à la fin de la conversation on sait tous les deux quels sont les clés privés qui ont été envoyés et donc ça veut dire qu'on aurait chacun pu créer la conversation c'est à dire que à tout moment il n'y a que le tout dernier message qui a uniquement pu être envoyé par quelqu'un d'autre et le reste du message c'est quelque chose qu'on aurait pu générer soi-même il n'y a pas de preuve que quelqu'un d'autre l'a envoyé il y aura une présentation pendant le jour 3 de la conférence sur OTR version 4 qui ira beaucoup plus dans les tailles sur comment ça marche donc je vous encourage à venir voir cette conférence si ça vous intéresse donc le prochain concept dont on devrait parler c'est l'expiration c'est assez similaire à la 4WD CC et il y a deux attaques auxquels il faut penser la première c'est il faut peut-être remercier Snapchat pour avoir rendu ça populaire c'est le message est supprimé après un certain temps et donc ça ça permet de donner une certaine protection contre le fait de faire pleinement confiance à quelqu'un pour ne pas relayer un message plus tard donc c'est aussi les adversaires qui pourraient prendre des captures d'écran par exemple c'est pour ça que certaines applications vont effacer l'écran quand on context switch vers une autre application donc si vous utilisez un téléphone et que vous changez d'app vous avez peut-être voir que ces applications ont un écran complètement vide ça c'est parce que les applications ne savent pas forcément faire la différence entre un screenshot et un changement d'application et du coup pour se protéger contre une capture d'écran on efface tout l'écran donc ça c'est partie d'une stratégie d'augmenter le coût d'avoir ces attaques ça a l'air pas qu'on en demande possible on peut toujours prendre simplement une photo de l'écran mais on décourage ces attaques et on met en place des normes sociales l'autre chose à considérer pour l'expiration c'est que après après que la communication ait eu lieu peut-être quelqu'un fera du forensic de l'analyse sur ce qui s'est passé et sert à de voir ce qui a eu lieu ou peut-être quelqu'un installe une application sur le téléphone qui essaye d'avoir des traces de ce qui s'est passé par le passé notamment ici vous avez des screenshots d'une application de surveillance d'espionnage qui est utilisée en Chine et donc la question est pour combien de temps vous voulez combien de temps vous voulez garder les conversations que vous avez eues et là bien sûr il y a un nouveau compromis c'est utile parfois de pouvoir revenir en arrière en particulier pour des entreprises qui pensent qu'il y a de la valeur dans la capacité à analyser des données de votre historique de conversation les entreprises n'ont pas envie de se débarrasser de ces données là le prochain sujet la prochaine méthode que l'on utilise c'est l'isolation le sandboxing au niveau du système d'exploitation donc l'idée là c'est de voir qu'est-ce que le système d'exploitation a en place pour isoler et sécuriser votre application de chat par rapport à du malware ou à une attaque qui aurait pu compromettre le périphérique sur lequel votre application tourne il y a une variété de projets notamment au congrès ici qui innovent sur ce sujet et plusieurs applications essayent d'innover la suite par exemple tinfoil chat qui utilise trois périphériques et une diode physique ce qui permet d'avoir un périphérique qui envoie les messages et un qui reçoit les messages l'idée étant que si vous recevez un message qui compromet un périphérique le malware peut uniquement dire un message mais ne peut pas en renvoyer et donc ça réduit la capacité d'un attaquant à utiliser l'accès qu'il a reçu et c'est utilisé avec vraiment une diode en hardware que vous voyez ici l'autre côté de la pièce c'est les backups et la restauration des backups il y a un compromis en matière d'utilisabilité et d'expérience utilisateur les gens n'ont pas envie de perdre leur liste de contact et donc vous gardez pour l'utiliser pour l'utilisateur, vous pouvez garder une copie de tout ça mais ce backup peut être compromis Apple a fait beaucoup de recherches dans le sujet, ils ont fait un talk à la black cat conférence il y a longtemps où ils expliquaient comment utiliser des hsm des modules de sécurité en hardware pour ça un petit peu comme ce que vous pouvez voir dans un laptop et comment est-ce que c'est plus gardé la clé inaccessible et comment il y avait la limitation de combien d'essais de recouvrement de clé pouvait être fait dans certains temps mais l'autre côté de ça c'est comme c'est une entreprise le gouvernement peut venir et leur demander de rester les clés et du coup comment est-ce que Apple a fait pour mettre en place des hsm qui ne pouvaient pas leur donner les clés donc ça c'est quelque chose qu'il faut penser aussi quels sont les capacités de l'entreprise à prévenir se prévenir eux-mêmes de récupérer la clé du chiffrement de vos backups il y a un document ici qui va très en détail sur les différents traitements d'oeil et les adversaires et menace dans ce genre de scénarios un autre une autre technique qui est utilisée pour se prévenir contre des adversaires c'est ce qu'on appelle le domain fronting qui est une technique d'obfuscation domain fronting c'est quelque chose qui est sorti plutôt en 2014 qui est un petit peu moins efficace maintenant mais qui a toujours une utilisation l'idée de base est d'avoir une séparation de couches entre l'enveloppe et le message à l'intérieur qu'on utilise par exemple avec http donc quand j'utilise, quand je crée une connexion sécurisée à un cdn un fournisseur de contenu comme Amazon ou Google ou Microsoft je peux faire cette connexion et avoir le tls, le chiffrement jusqu'à ça jusqu'à ce service j'établisse une connexion à Microsoft ou à Cloudflare et le message que j'envoie à l'intérieur peut être un message de chat qui est pour l'utilisateur particulier de ce fournisseur de service donc ça c'est une façon efficace d'empêcher le réseau de savoir à quel service vous êtes en train d'accéder ça est utilisé pour certaines choses bien c'est utilisé pour du malware ce qui fait que les fournisseurs de service ont limité la faisabilité de ces techniques mais c'est toujours utilisé si vous activez certaines fonctionnalités par exemple dans ce signal pour l'évasion de la censure c'est aussi utilisé dans telegram et cette technique est aussi utilisée pour des choses comme DNS sur HTTPS ou le chiffrement de SNI dans tls qui sont des façons un peu standardisées d'établir une connexion vers un service sans fournir d'identifier visible par le réseau pour dire au réseau à qui vous voulez vous connecter c'est important de mentionner quand même que le système de chat le plus utilisé qui utilise ce genre d'offuscation c'est telegram qui a pas mal d'utilisateurs dans certains pays qui n'aiment pas qu'il y ait beaucoup d'utilisateurs de telegram et ils ont des systèmes qui permettent de changer d'IP très rapidement donc ils peuvent changer où leurs serveurs apparaissent ils ont aussi des façons d'envoyer des messages sur des tunnels sur DNS ce qui permet de mitiger certaines techniques de censure du point de vue des fonctions de service pour eux c'est une façon d'avoir accès à la population locale ils pensent pas forcément à votre réseau local eux ce qu'ils voient c'est qu'ils ont des millions d'utilisateurs et ils veulent que ces millions d'utilisateurs aient toujours accès à ce service donc on peut dans une certaine mesure prêcher les caractéristiques du trafic qui disent à quel service on se connecte mais il y a d'autres choses le trafic en lui-même donne d'informations au réseau il y a des métadonnées auxquelles il faut qu'on pense ici par exemple il faut qu'on pense au padding c'est à dire la taille d'un message une chose simple c'est si j'en vois un message de chat ça va être beaucoup moins docteur que si j'en vois une image ou un enregistrement de voix et c'est quelque chose qu'on voit les avions des choses qui limitent la taille des messages ils vont permettre au message en texte de passer et d'être envoyé mais pas à des images même si on chiffre la voix on a maintenant des techniques qui sont vraiment très efficaces pour compresser l'audio à tel point que des phonèmes différents prennent une taille différente et donc je peux dire quelque chose le compresser, le chiffrer voire ce qui a été dit juste en basant sur la taille des différents sons qui ont été envoyés même après chiffrement donc il y a eu ce papier de recherche Auckland S&P qui montrait une attaque très pratique là-dessus donc ce que ça nous dit ça c'est qu'il y a un compromis à faire entre à quel point je peux être efficient dans les données que j'en vois et à combien de métadonnées je divulge en envoyant un message je peux utiliser un système de compression moins efficient qui va garder plus d'octaille inutile et qui révélera moins d'informations mais bien sûr ça marche pas forcément sur tous les réseaux si les réseaux sont limités en bande passante par exemple une autre chose qui est visible c'est quand est-ce que les utilisateurs sont actifs si je regarde quand est-ce que quelqu'un envoie des tweets et quand est-ce que certains messages sont envoyés je peux probablement savoir dans quel fuseur elle se trouve ça permet des attaques basées sur les métadonnées comme par exemple des attaques par confirmation ou des attaques par intersection une attaque par intersection c'est quand on regarde l'activité relative de plusieurs personnes et d'essayer de comprendre quand Alice envoie un message qui d'autre était actif au même moment et si je regarde ça sur une longue période de temps est-ce que je peux peut-être découvrir à qui Alice parlait la similarité dans leur moment d'activité un système qu'on peut regarder aussi c'est Pond qui travaille là-dessus l'idée étant que les clients seraient probablement toujours en ligne et qu'à intervalle régulier ils enverraient des messages au serveur qu'il y ait des messages envoyés ou non et donc du coup du point de vue du réseau tous les utilisateurs se comportent de façon strictement identique le problème étant bien sûr que maintenant tous les utilisateurs envoient un message toutes les minutes environ et ça crée énormément de trafic de trafic inutile de trafic vide puisqu'il n'y a pas de données à envoyer c'est juste des données vides pour faire de l'activité donc maintenant on va regarder un petit peu le renforcement, le hardoning des serveurs qui vont nous permettre de renforcer la confiance en ce serveur donc des exemples de pourquoi on voudrait faire ça on va par exemple c'est arrivé beaucoup de fois que des serveurs n'aient pas été aussi sécurisés que qu'indiqués donc par exemple la filiale Shinoz de Skype avait une blacklist sur certains mots pour empêcher les utilisateurs d'utiliser ces mots dans des messages il faut aussi s'intéresser à ce qui va se passer dans le futur on peut faire confiance à un serveur pour conserver des données maintenant mais qu'est-ce qu'il va en être dans le futur quelque chose qu'on peut dire maintenant c'est que le développement logiciel est plutôt centralisé on a un logiciel dans un état donné mais qu'est-ce qui va se passer lorsqu'il va être mis à jour et dans quelle mesure je fais confiance à ça donc là dessus l'open source c'est un bon début mais c'est pas suffisant donc pour ça on peut regarder ce que le serveur sait après le chiffrement de bout en bout donc il sait notamment la taille du message d'où il vient et où il va concernant la taille on en a déjà parlé donc on peut un peu limiter cette connaissance-là en utilisant ce qu'on a dit plus tôt le pas dit donc on a maintenant le concept de linkability on commence à avoir quelques approches qui permettent de limiter la linkability on peut avoir un système de sealed messages la source du message va être incluse dans l'enveloppe scellée ce qui va permettre d'avoir moins de logs sur le serveur sur la source d'un message donc théoriquement il y a déjà un peu de travail là dessus donc notamment tout ce qui concerne les mixnets donc un mixnet fonctionne en ayant un ensemble de fournisseurs donc un ensemble d'utilisateurs va envoyer des messages à un fournisseur pour envoyer un autre fournisseur les re-mélanger etc ce qui permet de délier et du coup de avoir moins de l'air entre la source et la destination de nos messages donc par contre du coup, typiquement on va attendre d'avoir un certain nombre de messages avant d'effectuer ce mélange et ce dispatch sur un autre provider donc ça va pour éviter qu'on puisse revoir de la linkabilité si on a un seul utilisateur qui utilise un service donc on a quelque chose à ce sujet qui est qui est cas de son poste donc ils ont donné une présentation à ce sujet au camp donc un projet sur lequel j'étais intéressé c'était ça concerné la récupération d'informations privées donc si j'ai un serveur avec une base de données qui contient des messages je veux si je veux pouvoir retrouver un message particulier je peux demander au server la base de données entière mais c'est pas ce que je veux donc on a quelques constructions pour ça on va s'intéresser à la partie théorie donc on a un ensemble de fournisseurs qui ont la même base de données donc on a un ensemble de fournisseurs qui ont la même base de données donc on va supposer qu'ils se parlent pas tous les uns les autres donc quelque chose qu'on va utiliser ici c'est le OU Exclusive, le XOR donc c'est une opération binaire dont une propriété sympathique et que si on XOR quelque chose avec soi-même ça nule et ça devient 0 donc si on a nos bases sur des systèmes différents on va demander à chacun de de donner de fournir un sur-ensemble de cette base de données qu'on va ensuite XORer ensemble et donc en structurant ça en faisant ça on peut en récupérant des sous-ensemble et en l'exorant on peut réussir à obtenir l'élément qui nous intéressait sans que les serveurs le sachent on pourrait s'inquiéter du fait qu'on demande aux serveurs de faire pas mal de travail pour faire cette opération quelque chose qui est intéressant là-dessus sur le fait de faire des opérations sur ces grandes bases en fait ça s'approche assez des problèmes qu'on a des choses qu'on rencontre dans l'intelligence artificielle et ça se passe assez bien en fait lorsqu'on utilise des cartes graphiques pour réaliser ces opérations et donc avec des cartes graphiques on peut avoir des bases de données énormes d'higéga ou du terravoc-t ou c'est l'opération qu'on a décrite plus tôt elle va prendre quelque chose de l'ordre de la millisecond donc des exemples là-dessus donc Talec qui est le système sur lequel j'ai travaillé donc la construction mathématique ici elle n'est pas facile à expliquer mais il y a des nouveaux travaux assez intéressants notamment de Dan Bonnet quelqu'un d'autre, à Stanford qui nous montre comment en pratique effectuer cette opération ok donc je vais terminer avec quelques minutes sur les chats à plusieurs parties à plusieurs utilisateurs donc ici on a plusieurs possibilités sur l'implémentation des messageries de groupe donc on pourrait ne pas dire au serveur qu'on est dans une conversation de groupe on envoie le même message à plusieurs personnes ou alors on dit on fait quelque chose de plus efficient on envoie le message à une fois au serveur qui le dispatch à toutes les personnes impliquées dans ce groupe donc même si on ne prévient pas le serveur on a quelques petites choses auquel penser donc si on envoie un message de la même taille à 5 différentes personnes et qu'une autre personne plus tard envoie le même message de la même taille à plusieurs personnes on va pouvoir se douter que qu'on est dans le cadre d'une conversation de groupe il y a aussi le fait que du coup dans une conversation de groupe si plusieurs personnes ont les mêmes logs et les mêmes secrets cryptographiques on va pouvoir les lier les uns aux autres donc il y a du travail en cours à ce sujet donc signe le travail sur le sujet et notamment pour mettre à l'échelle le mieux ces conversations enfin les conversations de groupe un autre système sympa là-dessus il y a des coaches qui est une extension à ricocher qui permet des petits groupes de messagerie et des messages désynchronisés où des personnes sont orli et ici en fait le serveur quand il reçoit un message il le transmet à tout le monde pas seulement les personnes dans un groupe qui est vraiment dans le groupe super donc bien sûr il y a beaucoup de systèmes je ne les ai pas tous mentionnés cette communauté est vraiment liée à l'innovation à ce qui est développé dans la messagerie privée ça fait partie des choses les plus intéressantes sur lesquelles on peut travailler donc je vous invite à regarder quelques uns, à regarder les compromis que ça implique ok et du coup on va prendre quelques questions ok donc une question de internet la popularité de l'indépendance sont en contradiction donc comment on peut être sûr que des messageries populaires telles que signal restent indépendantes alors la question que je veux poser en réponse c'est est-ce que l'indépendance c'est vraiment un but en soi il y a une valeur la valeur du messagerie augmente avec le nom de l'utilisateur d'ailleurs l'intérêt d'avoir des systèmes fédérés et non centralisés ça permet d'avoir plus de confiance dans le business model et dans le fait qu'on ne se basse pas sur une seule entité mais je pense que ce qu'il faut c'est pas forcément l'indépendance c'est la confiance qu'on peut avoir dans la compagnie dans l'entreprise qui gère le système merci pour la présentation vous avez parlé beaucoup de contenu et de chiffre main donc qu'en est-il si je suis un individu déjà autorisé dans une zone sensible donc comment est-ce qu'on pourrait cacher le fait que j'envoie quelque chose depuis une localisation spécifique par exemple donc cacher quelque chose après l'avoir publié ça semble vraiment difficile alors il y a quand même quelques approches quelque chose que l'on peut penser alors déjà il y a ce qu'on appelle les attaques par intersection dans le monde réel qui est si on fait des actions dans le monde réel par exemple les personnes qui viennent à une manifestation c'est une façon simple de savoir qui parlait de la manifestation quand on était en train d'être organisé et ça c'est inévitable. Ce qu'on a vu dans les gens qui organisent des mouvements dans le monde réel c'était soit de vraiment décentraliser les choses et de les avoir sur beaucoup de plateformes et de les organiser spontanément le plus près possible de l'événement dans le temps de façon à ce que la réponse ne puisse pas s'organiser à temps l'autre approche était de cacher sa présence ou d'arriver en groupe ce qui permet de cacher l'appartenance à un groupe donné mais je pense que c'est pas vraiment un problème de système de discussion, c'est un système qui a plus très au monde réel si les protocoles NAT de traduction d'adresse c'est déjà quelque chose qui a menacé le décentraliser et que maintenant on a besoin de serveurs centralisés d'une chose du NAT est-ce que ça crée pas un problème économique et donc la réponse est bien même avant NAT il fallait quand même qu'on paye pour certaines choses en décentralisant l'idée c'est qu'on peut décentraliser le coût avec alors IPv6 nous donne une opportunité d'avoir plus de choses décentralisées puisque il y a moins le problème de manque d'adresse et c'est plus facile d'héberger des choses chez soi même nos téléphones maintenant aujourd'hui ont énormément de capacités de calcul et on peut réfléchir à comment organiser nos protocoles de façon à ce que plus de travail se fasse sur le téléphone au lieu de se faire sur un service centralisé c'est une question d'équilibre ici et je pense que une des raisons pour lesquelles NAT et la traduction d'adresse est si répandue c'est parce que les systèmes distribués c'est difficile à construire et c'est difficile de leur faire confiance et donc avoir plus d'outils pour pouvoir tester et comprendre la façon dont fonctionne un système de s'assurer que ça va marcher 99,999% du temps des outils qui permettraient de faire ça ça augmenterait la confiance dans les systèmes distribués et ça permettrait de les rendre plus populaires et d'augmenter leur utilisation qu'est ce que vous pensez des personnes novices technologiquement qui veulent utiliser quelque chose comme comme Riot et Matrix par exemple alors tout à fait il y a un problème d'expérience utilisateur et notamment avec Riot ou même les versions les premières versions de Signal il fallait par exemple vérifier le QR code d'un autre téléphone de chacun et ça ça donne un interfaculateur qui est difficile avec Riot avant on avait énormément de warning d'avertissement quand on parlait à quelqu'un de nouveau il faut vérifier la clé etc et ce qu'on a vu c'est que le système a changé pour rendre ça moins visible moins intrusif ça affaiblit en partie certaines des propriétés de sécurité parce que la plupart des gens vont de toute façon accepter les clés sans les vérifier le truc c'est que si la sécurité se met en travers du chemin des utilisateurs enfin j'ai trop de frictions, les gens vont la désactiver donc ce qui est plus utile c'est de trouver des façons d'avoir ça sur le côté et de supporter la communication sans la bloquer et ça c'est probablement le genre de système auquel on devrait réfléchir maintenant parce que c'est ceux qui ont une chance d'avoir du succès merci pour la présentation vous avez parlé de répudiabilité en envoyant la clé privée utilisée pour le dernier message donc comment je fais ça pour vérifier la conversation dans les systèmes comme XMPP j'ai peur, il y a une action explicite pour clore la conversation qui permet de rendre sa conversation répudiable ce qu'on a par contre du côté de signant c'est que à chaque message qu'on envoie la confirmation du message envoie un message supplémentaire qui permet de refuter tout ce qui a été envoyé avant petit commentaire concernant Riot et ils font toujours pas tofu, ils n'ont pas trouvé de vrai moyen donc maintenant si on regarde la répudiabilité quand on a un déséquilibre de pouvoir généralement ça bénéficie à la personne avec le mot de pouvoir quand on a une imbalance entre quelqu'un qui a beaucoup de pouvoir et quelqu'un qui n'a pas généralement la personne qui a moins de pouvoir a un avantage à avoir des messages par la personne qui a plus de pouvoir refutable donc c'est quelque chose qui est intéressant plus quand les gens sont à égalité la réponse c'est alors oui tout à fait et c'est quelque chose qui est important de considérer et il faut que les utilisateurs puissent faire ce choix quand ils communiquent donc c'est quelque chose que les gens doivent voir comprendre dans l'interface et faire un choix conscient on a parlé de récupération d'informations privées comment j'empêche le serveur du coup de récupérer des informations ma question c'est comment savoir ou ne pas savoir en premier lieu quel message viennent de moi donc au cours d'une conversation il pourrait être possible de déanonymiser un utilisateur en particulier qu'est ce que vous pouvez dire au sujet alors oui j'en ai pas parlé l'astuce c'est que entre les deux personnes qui se parlent il va y avoir un secret partagé qu'on peut considérer un secret qui a cette conversation en particulier et on utilise ce secret pour initialiser un générateur de nombreux aléatoires et ça nous permet de générer les mêmes nombreux aléatoires de chaque côté le prochain message à chaque fois ira à un endroit qui est déterminé par ce générateur aléatoire donc la personne qui écrit écrit du point de vue du serveur dans un endroit complètement aléatoire et la personne qui répond va écrire à la prochaine place qui sera aussi aléatoire du point de vue du serveur etc etc il y a un article de recherche qui décrit ça beaucoup plus en détail mais c'est hors du scope de cette présentation je me semble que l'identité c'est maintenant le nouveau problème principal des applications de messagerie comment on ce problème l'identité ça a toujours été difficile je pense que ça restera difficile à voir c'est important je pense d'avoir plusieurs façons d'identifier les gens je pense qu'il n'y a pas une solution idéale donc c'est important et utile d'avoir plusieurs solutions pour différents cercles qui on parle un aspect de ça c'est peut-être ne pas forcément être réduit à une seule identité mais d'avoir plusieurs aspects de la personnalité de quelqu'un sous différentes identités avec certains systèmes on peut s'identifier avec une identité différente pour chaque interlocuteur au lieu d'avoir une identité centralisée donc d'avoir un skill juste comme ça l'idée étant je donne à chaque ami une identité différente donc du point de vue de mes amis j'apparaît comme une personne différente mais en même temps c'est très difficile parce que si je publie une identité publiquement cette identité m'est liée publiquement pour tous les gens qui l'utilisent dans le futur donc il faut que cette personne vient de me parler et que je leur donne une autre identité et ça ça limite la possibilité de me découvrir sur le système donc c'est un système qui est toujours compliqué et il n'y aura jamais une solution qui satisfait tous les problématiques c'était donc la dernière question