Comment fonctionne le cryptage SSH?

34

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 du 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 possède que la clé publique?

Comment fonctionne le cryptage SSH?

DrStrangeLove
la source

Réponses:

35

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 l’ échange de clés DH , ECDH ou GSSAPI. Cette clé est symétrique et temporaire - les deux parties utilisent la même clé pour chiffrer et déchiffrer des données à l'aide d'algorithmes tels que AES ou RC4 .

La paire de clés du client n'est jamais utilisée pour chiffrer des données, mais uniquement pour l' 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
Grawity
la source
13

La première chose que je pense que vous devez comprendre est que, même si 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 utile.

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.

Zoredache
la source
2
Pour en savoir plus, cela est expliqué dans RFC4253 , page 15.
slhck
12

Voici quelques exemples pratiques. Supposons que la clé A soit gardée secrète. Il s’agit donc de la clé privée et que la clé B a été affichée 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 qui 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.

Scott Chamberlain
la source
3

Voici une description relativement facile du calcul derrière le cryptage des clés privées / publiques.

Une description encore plus fondamentale de la BBC est ici .

Chogg
la source
J'ai ajouté un nouveau lien vers la BBC expliquant ce processus et une partie de l'histoire.
Chogg le
1

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

barlop
la source