web-dev-qa-db-fra.com

Le cryptage asymétrique est-il vulnérable aux attaques man-in-intermédiaires?

Je cherche des moyens d'envoyer des messages privés sur une chaîne publique et je suis tombé dans le cryptage asymétrique, ce qui est juste parfait pour ce que je cherchais au début - A et B communiquez directement, sur une chaîne publique.

Cependant, c'est maintenant que je soutiens que la sécurité du message puisse être compromise par des attaques man-in-hébergées de ce type.

Alice et Bernard sont des utilisateurs d'ordinateurs connectés à Internet. Alice utilise un proxy, Paul, pour se connecter à Internet et envoyer des messages à Alice.
[.____] Paul souhaite lire des communications entre Alice et Bernard. Ainsi, lorsque Alice tente d'envoyer Bernard sa clé publique, Paul la stocke et fit une nouvelle, aussi de "Alice", et l'envoie à Bernard. Il fait la même chose avec Bernard.
[.____] Quand Alice veut envoyer un message Bernard, elle l'envoie en fait à Paul, qui le déchiffre, la modifie et l'envoie à Bernard.

5
Giulio Muscarello

Le cryptage asymétrique fournit une sécurité des messages échangés entre Alice et Bob uniquement dans la mesure où Alice connaît la clé publique de Bob et BOB connaît la clé publique d'Alice. Sinon, les attaquants pouvaient publier de fausses clés publiques et, en vigueur, commettez Alice lorsque vous parlez à Bob et inversement.

Une vue historique de la question est la suivante: dans les temps anciens (par exemple, il y a 50 ans), Alice et Bob aurait pu parler " en toute sécurité " que si elles connaissaient une première secret partagé. Si Alice et Bob savent un secret partagé K , ils peuvent l'utiliser pour chiffrer leurs messages et aussi de vérifier leur intégrité (avec un MAC ). Le cryptage est contre des attaquants passifs (qui tentent d'apprendre le contenu du message) et Mac est contre des attaquants actifs (qui essaient de modifier le contenu du message). Pour une sécurité complète flux, Alice et Bob devraient également inclure une sorte de numérotation dans les messages, de sorte que larguée, messages dupliqués ou réorganisées sont détectés.

Un secret partagé initial est généralement difficile à établir. Surtout quand il y a plus de deux alizes et bobs. S'il y a n les personnes qui doivent en toute sécurité parler les uns aux autres (en toute sécurité contre des attaquants externes, mais aussi contre le n-2 d'autres utilisateurs), alors il y aura un besoin n (n-1 )/2 secrets partagés et chaque utilisateur devra stocker n-1 valeurs secrètes (l'un pour l'autre utilisateur auquel il peut vouloir parler).

cryptographie asymétrique rend le problème plus facile (mais pas facile). Avec des paires de clés publiques/privées, chaque utilisateur stocke n clé privée, et a juste besoin de connaître les clés publiques de l'autre n-1 participants. Les clés publiques sont, comme le nom le dit, public. Ils peuvent être montrés au monde entier sans aucun effet néfaste. Vraisemblablement, la distribution d'éléments publics est plus facile que de distribuer des secrets, car seuls les attaquants actifs doivent être craint.


L'analogie est celle de le mur . Imaginez qu'il y ait, dans un endroit spécifique (disons, la Plaza centrale d'une ville), un grand mur en marbre. Tout le monde peut venir regarder le mur. Sur le mur sont gravé les clés publiques d'Alice, Bob, Charlie, Dave, Ebenezer, ... pour que tout le monde peut apprendre ces clés sans crainte d'interférences. L'ensemble est gardé et seul le graveur officiel de la ville peut ajouter ou supprimer ou modifier une clé publique sur le mur; Et il va graver, disons, la clé publique de Fred uniquement si Fred lui-même lui montre ladite clé et une pièce d'identité valide (permis de conduire ...).

Un grand mur peut être gênant, en particulier pour les utilisateurs qui ne vivent pas dans la ville où se trouve le mur. Pour permettre une opération à distance, un beau schéma a été conçu: le graveur officiel est également donné une caméra, une imprimante et un timbre. Lorsque le graveur a terminé la gravure d'une nouvelle clé publique, il prend une photo de celui-ci, imprime quelques fois, et signes eux (avec le cachet officiel). Maintenant, si Alice envoie à Bob une telle photo, Bob peut faire confiance à ce qu'il a une copie authentique de la partie du mur qui contient la clé publique d'Alice: nous supposons ici que le timbre de graveur ne peut pas être contrefaite. Ce n'est pas un problème si un mauvais gars ouvre des lettres et voit cette photo: elle est publique de toute façon. Assurez-vous que le timbre ne peut pas être contrefaité peut s'avérer gênant, cependant.

Voici la partie vraiment notifty, qui transforme cette entreprise photo en une complète infrastructure de clé publique . Au lieu d'un timbre, le graveur officiel utilisera une signature numérique : le graveur a également une clé publique, gravée sur le mur. Si Bob connaît la clé publique du graveur, alors il peut vérifier toute signature calculée par le graveur sur la photo. De cette façon, en sachant a priori une seule clé publique (clé publique du graveur), il peut se assurer que la photo donnée est authentique ou non, lui permettant d'apprendre la clé publique d'un peu tout autre utilisateur.

Dans la terminologie normale PKI, les photos sont les certificats et le graveur est le autorité de certification. Bob doit toujours commencer quelque part, c'est-à-dire connaître une clé publique, mais un seul (la "racine") et pour un nombre illimité d'utilisateurs; Il fonctionnera même pour le public de l'utilisateur qui n'existe pas encore. Dans un PKI époustouflé, il peut y avoir trop d'utilisateurs pour un seul graveur pour les gérer, auquel cas nous pouvons étendre le principe avec un maître de tous les graveurs qui signes les clés publiques des graveurs subordonnées. Le maître est alors la "Ca racine" ou "ancrage de confiance", et les graveurs subordonnés sont "CA intermédiaires". Pour éviter les abus, la photo de la clé publique d'un graveur subordonné est dûment marquée comme "c'est la clé publique de quelqu'un qui peut agir comme graveur".

En fin de compte, une fois que le système avec des photos fonctionne, personne ne vient en réalité regarder le mur. Seules les photos et les signatures sont utilisées et elles suffisent. Nous pouvons ensuite éviter de construire le mur lui-même (le marbre est cher, après tout); Le "graveur" écrit simplement la clé publique sur un morceau de papier, le duplique et signe directement les copies.


Le modèle PKI expliqué ci-dessus est ce qui est fait sur le Web, avec Certificats X.509 . Chaque navigateur Web (ou système d'exploitation) sait a priori quelques dizaines de clés publiques racines, à partir desquelles la validité des certificats pour les millions de sites Web à moteur HTTPS existants peut être déterminée en vérifiant les signatures sur elles. C'est un modèle très centralisé; C'est ce qu'on appelle A PKI hiérarchique.

Les autres modèles existent en particulier le Web de la confiance . Dans le WOT, tout le monde peut agir comme un "graveur". Étant donné que Bob ne peut pas supposer que chaque utilisateur est aussi fiable et fiable qu'un graveur officiel, Bob acceptera une clé publique donnée comme étant Alice's Seulement si Alice peut montrer nombre certificats pour cette clé; I.e. Alice pourrait convaincre Charlie, Dave et Ebenezer qu'une clé donnée était bien la sienne et Bob arrive à connaître les clés publiques de ces trois gars. En ce sens, le wot est plus heuristique dans la nature qu'un PKI hiérarchique. En fait, il s'agit d'une question de définition de l'identité: dans le modèle mural, Alice est Alice, car elle a reçu une carte d'identité de certaines "autorité" (par exemple, un État central); Dans le wot, Alice est Alice, car suffisamment de nombreuses autres la connaissent comme "Alice".


La définition de l'identité est cruciale. Qu'est-ce que c'est moyenne, que Alice et Bob veulent "parler de manière sécurisée"? Bob veut parler au "Real Bob", ce qui signifie qu'elle a une notion préexistante de qui est Bob, et ce qui rend Bob distinct de, par exemple, Charlie. Si Bob est un étranger complet, il n'a aucun sens de vouloir parler exclusivement de Bob; Il n'y a pas de "Bob" distinct de "Charlie". Cette notion d'identité est ce qui dictera quel type de PKI dont vous avez besoin. Si les identités proviennent d'une structure centralisée, un PKI hiérarchique est approprié. Si des identités proviennent de la foule d'approbation, une wot est le bon modèle.

Ou peut-être que vous ne voulez pas de PKI du tout, après tout. Par exemple, Bob peut être, du point de vue d'Alice, "Le gars qui connaît le mot de passe secret P ". Ensuite, nous sommes de retour à la configuration historique qui prédit la cryptographie asymétrique. Nous pouvons toujours faire de la science avancée, cependant. mots de passe sont des clés médiocres car ils ont tendance à deviner ce que l'on appelle un attaque de dictionnaire . Si Alice et Bob utilisent simplement [~ # ~] p [~ # ~ ~] En tant que clé de cryptage, les espions peuvent enregistrer le message, puis essayer de les déchiffrer avec des mots de passe potentiels. Afin de résoudre ce problème, Echange de clé authentifié par mot de passe algorithme peut être utilisé. Avec un protocole de pake, Alice et Bob s'authentifient-ils en ce qui concerne leur connaissance commune de [~ # ~ # ~] p [~ # ~], mais une quantité suffisante de cryptographie asymétrique a été injectée dans le protocole pour éviter les espions de Apprendre toutes les données qu'ils pourraient utiliser pour tester un mot de passe potentiel. Si Charlie veut essayer un mot de passe potentiel P ', il devra ensuite parler à Alice (poser comme un faux Bob) ou à Bob (posant comme faux Alice), et il devra le faire Encore une fois Pour chaque P ' il veut tester. Sûrement, après quelques telles tentatives infructueuses, Alice et/ou Bob remarqueront que quelque chose est absent. Il s'agit de la manière dont les protocoles Pake Pake permettent d'utiliser la sécurité des secrets à faible entraplopie (c'est-à-dire des mots de passe) sans avoir besoin d'aucune sorte de PKI.

12
Thomas Pornin

Alice et Bernard doivent faire au moins une des trois choses:

  1. Les touches d'échange utilisant un autre canal sécurisé (peut-être qu'ils pourraient avoir à se rencontrer en personne)
  2. Échangez les touches sur le canal non sécurisé, mais utilisez une bande de confiance pour vérifier les clés (elles ont chacune besoin de faire confiance à des clés de quelqu'un d'autre qui font confiance aux clés de quelqu'un d'autre, ad nagueum jusqu'à ce qu'il forme une voie entre Alice et Bernard)
  3. Touches d'échange sur le canal non sécurisé, puis transmettez un message inverabable sur le canal non sécurisé en vérifiant les touches des autres (en pratique que cela peut être effectué en lisant un court numéro de nonce à haute voix sur une connexion vocale sur ce canal non sécurisé et vérifiez si les deux Les extrémités ont la même nonce, mais cela ne fonctionne que si vous considérez que les voix humaines sont inacentes, ce qui pourrait ne pas être vrai)

Ce n'est pas vraiment une limitation du cryptage asymétrique, juste une limitation de la sécurité. Vous ne pouvez pas vraiment conserver une conversation sécurisée avec quelqu'un sans "y rencontrer" d'abord, ou rencontrer quelqu'un qu'ils ont confiance. Sinon, vous pourriez avoir une conversation cryptée avec quiconque, qui défait vraiment le but du cryptage.

2
okw

Oui, le cryptage asymétrique dans la mise en œuvre naïf que vous décrivez est en effet vulnérable aux attaques de MITM. Pour résoudre ce problème, vous devez impliquer une forme de Infrastructure de clé publique .

Il existe deux formes de PKI largement utilisées.

Le premier formulaire implique une autorité de certification (CA) signant un certificat X.509 appartenant à Bernard. Si Alice fait confiance à cette CA particulière, elle peut faire confiance à ce que le certificat appartient en effet à Bernard. Ceci est le modèle utilisé dans SSL/TLS .

La deuxième forme implique des clés gnupg. Si Alice et Bernard peuvent se retrouver dans une vie réelle au moins une fois pour échanger des clés publiques GnuPg, l'ensemble du scénario d'attaque MITM sera évité. Si cela n'est pas possible, Alice et Bernard peuvent utiliser le modèle Web de confiance modèle. Cela implique essentiellement que de nombreuses personnes différentes signent la clé publique de Bernard. Si suffisamment de gens le fait, Alice peut être raisonnablement confiant que la clé publique appartient en effet à Bernard et non à quelqu'un qui essaie de l'imiter.

2
user10211

Le cryptage asymétrique est la base d'environ tout communication secrète. Plus précisément, c'est la base de SSL/TLS, ainsi que de quelques protocoles similaires mais incompatibles tels que SSH et quelques autres variantes exclusives. Vous êtes définitivement sur un gagnant, mais vous n'êtes pas encore fait.

Tout d'abord, si vous avez des projets de construction de votre nouvelle norme en cryptographie, ne le faites pas . Ce problème a été résolu et les solutions ont été examinées et testées et améliorées, et ont été réexaminées et améliorées de plus, et ainsi de suite pour des décennies littérales. Cela peut être fait et fait correctement, avec des outils courants courants. Il n'y a pas besoin de ne rien construire.

Le susmentionné SSL/TLS est la solution la plus simple; Son but est de transformer une chaîne publique (souvent TCP) en une entreprise privée, et cela le fait extrêmement bien.

Si au lieu d'une connexion réseau simple, vous souhaitez sécuriser une session de discussion, telle que IRC ou ou un certain nombre de services de messagerie instantanée ,alors vous voulez OTR ("OTR (" OTR) "). C'est un système de cryptage orienté par message qui monte sur presque tout système de messagerie instantanée existant. Il est d'environ 10 ans et est assez solide.

De toute façon, vous devrez identifier correctement les deux parties les deux. Cette étape est la critique, et celle la plus susceptible à des interférences. Il est donc préférable d'échanger des clés en personne ou d'avoir signé par une tierce partie de confiance ou d'échanger sur un canal sécurisé connu. Si vous avez suffisamment de participants, vous devrez peut-être construire une infrastructure clé ("PKI") pour gérer la distribution de la clé, mais si cela est juste une poignée de vous, la distribution de la clé peut se produire manuellement, en personne.

mais aussi longtemps que vos clés sont approuvées, et tant que vous utilisez correctement le logiciel sous-jacent, votre sécurité est garantie.

2
tylerl

Alice devrait envoier Bernard son certificat à la place. Le certificat contient sa clé publique et devrait avoir un nom commun de certificat que Bernard reconnaît. Par exemple. L'URL du site Web ou l'adresse IP, etc. Il peut être signé par une autorité de certification comme dans TLS ou utilisé dans une méthode Web de la méthode de confiance comme dans PGP. Cela empêche Bernard d'utiliser un certificat.

De plus, Bernard peut envoyer Alice de la même manière que l'authentification mutuelle. Pour que Alice et Bernard soient assurés qu'ils se parlent vraiment les uns aux autres.

0
jingyang