Sitedetout - Tutoriels informatiques

Le protocole sécurisé SSH

Noter cet article

Nous l’utilisons chaque jour pour accéder à nos machine Unix/Linux distantes sans être réellement conscient de ce qui se passe derrière, c’est le protocole SSH ou Secure Shell. Ce protocole réseau permet une connexion sécurisée à une machine distante. Il fonctionne en mode client-serveur, c’est à dire que vous utilisez un client SSH pour se connecter à un serveur SSH. Ce dernier est présent dans toutes les distributions Unix/Linux et écoute par défaut sur le port 22.

SSH a été créé comme une alternative aux protocoles telnet et rlogin non sécurisés, il a été ensuite amélioré pour permettre aussi de transférer des fichiers à l’aide du programme SCP (version 1.x) et plus tard le protocole SFTP (version 2).

Sachez pour info que le protocole SFTP diffère du protocole FTPS. Bien que les deux permettent de transférer des fichiers, SFTP est une abréviation de “SSH File Transfer Protocol”, il est similaire au protocole FTP et fonctionne au dessus de SSH. FTPS quand à lui n’est que le protocole FTP au dessus de SSL.

Le protocole SSH est dit sécurisé car la communication entre le client et le serveur SSH est cryptée. En effet, pour arriver à ce résultat cette dernière passe par plusieurs étapes :

ssh_handshake_sitedetout.org
  • Le client commence par initier une connexion TCP sur le port 22 du serveur (port d’écoute par défaut du protocole SSH).
  • Une fois la connexion établie, le serveur envoie sa version du protocole SSH.
  • Le client reçoit le message du serveur et renvoi aussi sa version SSH.
  • Une fois la version du protocole SSH choisie, l’étape d’échange de clés (key exchange) débute. Durant cette étape, le client est le serveur envoient l’un à l’autre plusieurs listes chacune triée par ordre de préférence.
  • L’algorithme choisi pour chaque catégorie est le premier de la liste du client qui est aussi supporté par le serveur.
  • Si l’algorithme choisi pour l’échange de clés est diffie-hellman, alors cette étape se passe comme suit :
ssh handshake
  • Le client envoie min , n et max correspondants au groupes acceptés minimal, préféré et maximal.
  • Le serveur choisi un groupe et renvoi P et G au client
  • Le client choisi un numéro x tel que 1 < x < (p-1)/2, il calcul e = g^x mod p, et renvoi “e” au serveur (x est gardé secret chez le client).
  • Le serveur aussi choisi un numéro y tel que 0 < y < (p-1)/2, il calcul f = g^y mod p et renvoi “f” au client (y est gardé secret chez le serveur). Il utilise aussi le “e” reçu pour calculer K = e^y mod p. Il renvoie alors au client les éléments suivants :
    • f
    • Le certificat contenant la clé public du serveur
    • K signé par la clé privé du serveur
    • H = hash(V_C || V_S || I_C || I_S || K_S || min || n || max || p || g || e || f || K) signé par la clé privé du serveur
  • Si c’est la première connexion du client à ce serveur, et que le certificat n’est pas reconnu par les autorité de certification configurés, un avertissement vous sera affiché pour faire ou non confiance au certificat du serveur. Ensuite, le client pourra se baser sur “f” pour calculer K = f^x mod p. il calculera aussi le même H = hash(V_C || V_S || I_C || I_S || K_S || min || n || max || p || g || e || f || K) et vérifiera qu’il a été bien signé par le serveur moyennant la clé publique qu’il a reçu.

A présent les deux intervenants détiennent une même clé de session K = e^y mod p = f^x mod p tel que 1 < K < p – 1. Toute communication ultérieure sera cryptée par celle-ci.

Voici une capture Wireshark montrant ces étapes, on voit bien aussi qu’à partit de la ligne 17, les packets SSH sont cryptés.

Le cryptage des packets se fera par un cryptage symétrique dont sa clé de chiffrage/déchiffrage est K. Cette clé est partagée par les deux intervenants sans jamais être transmise sur le réseau.

Une fois cette dernière définie, l’étape d’authentification est déclenchée et elle sera cryptée quelle que soit son type : Mot de passe, Clé publique, Kerberos ou autre …

Sources : rfc4419


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

WP Facebook Auto Publish Powered By : XYZScripts.com
Chargement...
Menu Title

Powered by themekiller.com