┌─────────┐ ┌───────┐ │ClientSSH│ │Serveur│ └────┬────┘ └───┬───┘ │ │ ╔══════════════╪═══════════════════════════════╤═════════════════════════════╪═════════════╗ ║ ETABLISSEMENT D'UNE SESSION 3-WAY HANDSHAKE │ │ ║ ╟──────────────────────demande session avec paquet SYN (Synchronize) │ ║ ║ │────────────────────────────────────────────────────────────>│ ║ ║ │ │ ║ ║ │ approuve connexion avec paquet SYN-ACK (acknowledgement) │ ║ ║ │<────────────────────────────────────────────────────────────│ ║ ║ │ │ ║ ║ │ confirme avec paquet ACK │ ║ ║ │────────────────────────────────────────────────────────────>│ ║ ╚══════════════╪═════════════════════════════════════════════════════════════╪═════════════╝ │ │ │ │ ╔═════════════════════════════╪╤════════════════════════════════════════════════════════════╪═════════════════════════════════════════╗ ║ ETABLISSEMENT DE LA SESSION │ │ ║ ╟──────────────────────────────┘ annonce la version de SSH utilisée │ ║ ║ │────────────────────────────────────────────────────────────>│ ║ ║ │ │ ║ ║ │ annonce la version de SSH utilisée │ ║ ║ │<────────────────────────────────────────────────────────────│ ║ ║ │ │ ║ ║ ────┐ │ ║ ║ │ génèrent paires de clés │ ║ ║ <───┘ publiques-privées │ ║ ║ temporaires │ ║ ║ │ ║ ║ │ │ ║ ║ │ ────┐ ║ ║ │ │ génèrent paires de clés ║ ║ │ <───┘ publiques-privées ║ ║ │ temporaires ║ ║ │ ║ ║ │ │ ║ ║ ╔══════════════╗ │ │ ║ ║ ║paramètres : ░║ │ Initialisation échange de clé │ ║ ║ ║algorithmes ║ │ (Key Exchange Init) │ ║ ║ ║MAC ║ │────────────────────────────────────────────────────────────>│ ║ ║ ║compression ║ │ │ ║ ║ ╚══════════════╝ │ │ ║ ║ │ │ ╔══════════════╗ ║ ║ │ réponse à l'initialisation de l'échange de clé │ ║paramètres : ░║ ║ ║ │ (Key Exchange Init) │ ║algorithmes ║ ║ ║ │<────────────────────────────────────────────────────────────│ ║MAC ║ ║ ║ │ │ ║compression ║ ║ ║ │ │ ╚══════════════╝ ║ ║ ╔════════════════════╗ │ │ ║ ║ ║Envoi clé publique ░║ │ Initialisation d’échange de clés Diffie-Hellman │ ║ ║ ║éphémère ║ │ (Elliptic Curve Diffie-Hellman Key Exchange Init) │ ║ ║ ║+ le résultat ║ │────────────────────────────────────────────────────────────>│ ║ ║ ║d'un calcul ║ │ │ ║ ║ ║signé ║ │ │ ║ ║ ╚════════════════════╝ │ │ ║ ║ │ ────┐ ║ ║ │ │ détermination ║ ║ │ <───┘ clé partagée ║ ║ │ (symétrique) ║ ║ │ ║ ║ │ │ ║ ║ │ │ ╔════════════════════════════╗ ║ ║ │Réponse d’échange de clés Diffie-Hellman │ ║Envoi le résultat ░║ ║ ║ │(Elliptic Curve Diffie-Hellman Key Exchange Reply, New Keys) │ ║d'un calcul igné ║ ║ ║ │<────────────────────────────────────────────────────────────│ ║+informe nouvelle ║ ║ ║ │ │ ║clé partagée calculée ║ ║ ║ │ │ ║+ empreintre ou certificat ║ ║ ║ │ │ ╚════════════════════════════╝ ║ ║ ────┐ │ ║ ║ │ Vérification de l'identité du serveur │ ║ ║ <───┘ Acceptation de l'identité du serveur │ ║ ║ │ ║ ║ │ │ ║ ║ ────┐ │ ║ ║ │ détermination │ ║ ║ <───┘ clé partagée │ ║ ║ (symétrique) │ ║ ║ │ ║ ║ │ │ ║ ║ │ informe nouvelle clé partagée calculée │ ║ ║ │────────────────────────────────────────────────────────────>│ ║ ╚═════════════════════════════╪═════════════════════════════════════════════════════════════╪═════════════════════════════════════════╝ │ │ │ │ │ ╔════════════════════════════════════╤═╗ │ │ ╚════════════════════════════════════╪═╝ │ │ ╟────────────────────────────────────┘ │ │ │ ╔══════════════╪═════════════════════╤═══════════════════════════════════════╪═══════════════════════════════════════════╗ ║ AUTHENTIFICATION PAR MOT DE PASSE │ │ ║ ╟───────────────────────────────────demande saisie login │ ║ ║ │<────────────────────────────────────────────────────────────│ ║ ║ │ │ ║ ║ │ envoi login │ ║ ║ │────────────────────────────────────────────────────────────>│ ║ ║ │ │ ║ ║ │ demande saisie mot de passe │ ║ ║ │<────────────────────────────────────────────────────────────│ ║ ║ │ │ ║ ║ │ envoi mot de passe │ ║ ║ │────────────────────────────────────────────────────────────>│ ║ ║ │ │ ║ ║ │ ────┐ ║ ║ │ │ vérification login et mot de passe ║ ║ │ <───┘ ║ ╚══════════════╪═════════════════════════════════════════════════════════════╪═══════════════════════════════════════════╝ │ │ │ │ │ ╔════════════════════════════════════════════════════════╪═════════════════════╤═╗ │ ╚══════════════════════════════════════════════════════════════════════════════╪═╝ │ ╟──────────────────────────────────────────────────────────────────────────────┘ │ │ ╔══════════════╤═════════════════════════════════════════════════════════════╪═════════════╗ ║ DECONNEXION │ │ ║ ╟──────────────┘ déconnexion avec paquet RST,ACK (Reset) │ ║ ║ │────────────────────────────────────────────────────────────>│ ║ ║ │ │ ║ ║ │ approuve déconnexion avec paquet ACK │ ║ ║ │<────────────────────────────────────────────────────────────│ ║ ╚══════════════╪═════════════════════════════════════════════════════════════╪═════════════╝ ┌────┴────┐ ┌───┴───┐ │ClientSSH│ │Serveur│ └─────────┘ └───────┘