Windows NT a utilisé un protocole point à point où un client peut communiquer «en toute sécurité» avec un serveur en utilisant un chiffrement de flux pour crypter un tableau de messages avec une clé . Le serveur crypte également sa réponse avec la même clé . Mais comment connaît-il cette clé?k
Plus général: si Alice et Bob utilisent un algorithme de chiffrement / déchiffrement qui fonctionne sur la même clé privée , quel est un moyen sécurisé d'échanger cette clé? (sans utiliser une clé de cours différente)
C'est quelque chose que je me suis toujours demandé en étudiant la cryptographie à clé privée.
Réponses:
La plupart des algorithmes de clé privée reposent sur l'impossibilité de certains calculs comme la factorisation d'un nombre en ses facteurs premiers compte tenu de l'infrastructure informatique actuelle.
Dans le même temps, la plupart d'entre eux sont également gourmands en calculs lorsqu'ils sont utilisés pour le chiffrement et le déchiffrement et, par conséquent, l'ensemble du flux de messages n'est pas chiffré à l'aide des clés privées. Le message est plutôt chiffré à l'aide d'un autre algorithme (moins intensif) et la clé utilisée pour ce chiffrement est chiffrée à l'aide de la clé privée.
Bien sûr, comme vous le faites remarquer, l'échange sécurisé de clés reste un problème qui peut être dans une certaine mesure résolu par:
la source
Chaque fois qu'Alice et Bob veulent s'entendre sur une même clé privée, la méthode la plus populaire consiste à utiliser Diffie-Hellman . Cela fonctionne comme suit:
Deux valeurs publiques sont d'abord choisies, disons et . (Ce sont généralement de très grands nombres premiers et connus de tous ceux qui utilisent ce protocole).g = 17n=13 g=17
Alice choisit une valeur privée et Bob choisit une valeur privée . Ils sont privés d'eux-mêmes.b = 7a=3 b=7
Alice calcule: et Bob calcule: , dans ce cas et et ils échangent mutuellement leurs valeurs (peut-être par chat), c'est-à-dire que tout le monde sait les valeurs de et .A=gamodn B=gbmodn A=12 B=4 A B
Alice calcule: et Bob calcule: , dans ce cas .K=Bamodn K=Abmodn K=12
Maintenant, Alice et Bob ont tous deux convenu de la valeur comme clé. Notez que, étant donné la valeur et et les très grands nombres premiers, il est presque impossible pour un espionnaire de les factoriser et de calculer la clé lui-même.K n g
Un problème dans la cryptographie à clé privée est l'attaque de l'homme au milieu et c'est l'une des principales raisons de choisir la cryptographie à clé publique plutôt que la cryptographie à clé privée.
la source
Tout d'abord, un point de terminologie: ce que vous décrivez est un cryptage symétrique , et une clé partagée entre les participants est généralement connue sous le nom de clé secrète; «Clé privée» signifie généralement la partie d'une clé dans la cryptographie à clé publique que seul un participant connaît.
Il existe deux façons de diffuser une clé secrète: elle peut être transportée d'une manière physiquement sécurisée, ou elle peut être transportée à l'aide d'une autre forme de cryptage, généralement la cryptographie à clé publique.
Il existe des moyens d'échanger une clé secrète qui ne nécessitent pas de canal de communication secret. Le plus populaire est le protocole d'échange de clés Diffie-Hellman. Le principe de Diffie-Hellman est que chaque participant génère sa propre paire de clés, et il existe une opération mathématique qui construit un grand nombre à partir d'une clé publique et d'une clé privée. Cette opération mathématique a une propriété très intéressante: le grand nombre peut être construit à partir de la clé privée d'Alice et de la clé publique de Bob, ou à partir de la clé privée de Bob et de la clé publique d'Alice; vous obtenez le même numéro de toute façon. Alice et Bob échangent donc leurs clés publiques, et les deux parties connaissent le grand nombre, qui peut ensuite être utilisé comme clé secrète. Un espion peut découvrir les deux clés publiques, mais il est impossible¹ de trouver le grand nombre à partir des seules clés publiques.
L'échange de clés Diffie-Hellman permet à deux parties d'échanger un secret, peu importe qui écoute. Cependant, il n'authentifie pas Alice auprès de Bob ou vice versa. Par conséquent, il se prête à une attaque de l'homme du milieu : Mallory effectue l'échange de clés avec Alice (qui croit qu'elle parle à Bob) et séparément avec Bob (qui croit qu'il parle à Alice), et obtient ainsi la décision ou à moins connaître le secret.
Lorsque l'attaquant peut intercepter et injecter des messages, davantage de cryptographie est nécessaire pour que les participants s'authentifient mutuellement. (Un attaquant passif signifie effectivement que le protocole de transport sous-jacent fournit une authentification.) Le moyen le plus simple est que chaque participant connaisse déjà la clé publique de l'autre. Si Alice connaît la clé publique de Bob:
Il existe de nombreuses variantes qui utilisent l'une de ces méthodes (ou encore une autre variante) dans une direction et la même ou une méthode différente dans l'autre direction, ou qui s'authentifient dans une seule direction. Par exemple, SSL / TLS (la couche de cryptographie pour les protocoles plusieurs-s tels que HTTPS, SMTPS, IMAPS, etc.) peut utiliser plusieurs combinaisons de chiffrement différentes et authentifie généralement le serveur auprès du client mais peut également authentifier le client en option. Diffie-Hellman est lent et encombrant pour cette application; l'algorithme le plus répandu avec la distribution de clé publique est RSA .
Bien sûr, Alice et Bob peuvent ne pas se connaître la clé publique de l'autre. Ils s'appuient donc plutôt sur une chaîne de confiance: Bob envoie à Alice sa clé publique, à côté d'une déclaration signée d'un tiers qui affirme que cette clé est vraiment la clé publique de Bob. Cette déclaration signée est appelée un certificat et la troisième partie est une autorité de certification . Le tiers peut être connu de Bob, ou son identité peut être confirmée par un quatrième, et ainsi de suite. Finalement, cette chaîne de confiance (… se porte garant de Dominique se porte garant de Charlie qui se porte garant de Bob) doit atteindre une partie de Ron à laquelle Bob fait déjà confiance, ce qui signifie que Bob a la clé publique de Ron et fait confiance à Ron pour ne signer que des certificats valides.
Il existe des protocoles qui ne reposent pas sur la cryptographie à clé publique. En particulier, le protocole Kerberos est utilisé à la fois sur les réseaux basés sur Unix et sur Windows pour établir des connexions entre un client et un serveur. Kerberos utilise un serveur d'authentification central appelé centre de distribution de clés (KDC). Le KDC doit avoir le mot de passe de l'utilisateur stocké dans une base de données et le client invite normalement l'utilisateur pour le mot de passe. Pour éviter d'exposer le mot de passe, le protocole n'utilise pas directement le mot de passe, mais un hachage cryptographique ou plus généralement une fonction de dérivation de clé appliquée au mot de passe.
Avec ce secret partagé, le client et le KDC établissent un canal sécurisé et le KDC envoie au client un «ticket». Le ticket contient une clé de session (c'est-à-dire une clé secrète nouvellement générée), ainsi qu'une copie de la clé chiffrée avec une autre clé symétrique partagée entre le KDC et le serveur que le client souhaite contacter. Le client transmet ensuite cette copie chiffrée au serveur. Le serveur déchiffre ce message pour obtenir la clé de session et génère un nonce qu'il chiffre avec la clé de session et renvoie au client. Le client initie ensuite un canal sécurisé avec le serveur, chiffré avec la clé de session, et commence par montrer qu'il pourrait déchiffrer le nonce: cela authentifie le client auprès du serveur. Un établissement de session Kerberos est une variante du protocole Needham-Schroeder .
¹ En ce sens que les cryptographes ont fait de gros efforts, mais la meilleure façon qu'ils ont trouvée de le faire requiert une puissance de calcul inatteignable.
la source
Un moyen possible consiste à utiliser d'abord la cryptographie à clé publique pour échanger une clé privée. Cependant, lorsque ce n'est pas possible, il existe des protocoles d'échange de clés spécifiques, probablement le plus connu est le protocole Diffie-Hellman .
la source
Il y a toujours la solution triviale: les utilisateurs se rencontrent et échangent des clés. Ce n'est pas très pratique dans de nombreux cas, mais c'est possible.
En plus du protocole d'échange de clés Diffie-Hellman (DH), il existe également des protocoles de distribution de clés quantiques . L'un des protocoles QKD les plus connus est le protocole Bennett-Brassard, BB84 .
L'avantage de BB84 par rapport à DH est que DH n'est sécurisé que si le logarithme discret ne peut pas être fait efficacement (voir l' hypothèse du logarithme discret , ainsi que l' hypothèse DDH associée ). Cependant, BB84 est sécurisé en théorie . Autrement dit, même si , BB84 serait toujours sécurisé (mais pas DH).P=NP
D'un autre côté, l'attaque MITM est également un problème pour BB84, et il faut supposer que les utilisateurs utilisent un canal authentifié pour surmonter ce problème (mais cela les oblige généralement à partager une clé d'authentification, et nous sommes de retour à la case départ).
la source