web-dev-qa-db-fra.com

Comment fonctionne le cryptage SSH?

J'ai lu des informations sur la génération de 2 clés (privée et publique) sur l'hôte client et la copie de la clé publique sur l'hôte serveur.

Si je comprends bien, (corrigez-moi si je me trompe): le serveur chiffre les données avec la clé publique et les envoie au client, le client les déchiffre avec la clé privée.

Mais si j'ai besoin de chiffrer des données sur le client pour les envoyer au serveur, comment cela se passe-t-il?

La clé publique crypte les données sur le client? Mais comment le serveur peut-il le déchiffrer s'il ne dispose que de la clé publique?

Comment fonctionne le cryptage SSH?

34
DrStrangeLove

Après l’établissement de la connexion TCP, les deux systèmes s’accordent sur une clé de session , en utilisant des protocoles tels que , échange de clé DH , ECDH ou GSSAPI. Cette clé est symétrique et temporaire - les deux côtés utilisent la même clé pour chiffrer et déchiffrer des données en utilisant des algorithmes tels que AES ou RC4 .

La paire de clés client n'est jamais utilisée pour chiffrer des données, mais uniquement pour authentification - "publickey" est l'une des méthodes disponibles, où le client présente sa propre clé publique ainsi qu'une preuve de propriété de la clé privée. . De même, la paire de clés du serveur n'est utilisée que pour l'authentification du serveur lors des échanges de clés DH ou ECDH; aucune donnée n'est cryptée en l'utilisant.

Le protocole SSH2 est documenté dans plusieurs RFC , notamment:

  • RFC 4253 - Protocole de couche de transport Secure Shell (SSH)
  • RFC 4419 - Échange de groupe Diffie-Hellman
  • RFC 4432 - Echange de clés RSA
  • RFC 4462 - Authentification GSSAPI et échange de clés
35
grawity

La première chose que je pense que vous devez comprendre est que, bien que de nombreux protocoles de cryptage tels que SSH et SSL utilisent l’infrastructure à clé publique à des fins d’authentification, presque aucun de ces systèmes n’utilisera l’infrastructure à clé publique pour transmettre le contenu.

L'infrastructure à clé publique est beaucoup trop gourmande en ressources de traitement pour être utilisée pour transmettre les données utiles réelles. Ce qui se passe, c'est que la PKI est utilisée pour négocier une clé générée aléatoirement, à utiliser avec un protocole de chiffrement symétrique. Le protocole à utiliser est également négocié et devrait être le protocole le plus puissant sur lequel les deux systèmes peuvent s’accorder. Ainsi, une fois la négociation et la négociation initiales terminées, pratiquement tout n’est que la cryptographie symétrique standard.

13
Zoredache

Voici quelques exemples pratiques. Supposons que la clé A soit gardée secrète. Par conséquent, la clé privée et la clé B sont affichées dans un lieu accessible au public. Il s'agit donc de la clé publique.

Donc, si vous voulez envoyer un message à tout le monde et que vous voulez qu'il vérifie que ce message provient bien de vous et qu'il n'a pas été modifié lors de sa remise, vous devez envoyer votre message et inclure un hachage du message chiffré avec la clé A. La clé B peut-elle déchiffrer le hachage, la comparer au message reçu et vérifier que le message provient bien de vous (en raison du fait que seule une personne avec la clé A aurait pu générer la charge chiffrée qui a bien déchiffré le hachage et sont la seule personne avec la clé A, cela ne peut venir que de vous). Ceci s'appelle Signing .

Maintenant, disons que quelqu'un veut vous envoyer un message secret mais ne veut pas révéler qui il est. Ils peuvent chiffrer leur message avec une clé symétrique (Zoredache mentionnant que symétrique est beaucoup moins cher), puis prendre cette clé et la chiffrer avec la clé B et vous l'envoyer. Parce que seule la clé A peut déchiffrer quelque chose qui a été chiffré avec la clé B, aucune autre personne ne peut voir le contenu du message qui vous a été envoyé. Voici comment fonctionne le chiffrement normal et comment SSH échange des données.

12
Scott Chamberlain

Ici est une description relativement accessible du calcul derrière le fonctionnement du cryptage à clé publique-privée.

Une description encore plus fondamentale de la BBC est ici .

3
Chogg

vous écrivez

"La clé publique chiffre les données sur le client. Mais comment le serveur peut-il les déchiffrer s'il ne dispose que de la clé publique?"

Je ne sais pas grand chose à ce sujet, mais je pense pouvoir y répondre assez clairement.

Si A veut envoyer un message à B, A utilise la clé publique de B. C'est ainsi que B est alors capable de le déchiffrer.

Si A utilisait sa propre clé publique pour chiffrer le message, alors B ne pourrait effectivement pas le déchiffrer.

C'est expliqué ici

http://www.comodo.com/resources/small-business/digital-certificates2.php

1
barlop