Le SSH, pour Secure SHell permet de répondre à la principale problématique posée par la sécurité des informations : la confidentialité.

Présentation générale

En effet, avec ce protocole, il est possible de chiffrer des données par un système d'échange de clés privées et publiques. Ces données transitent dans un tunnel, un canal sécurisé où il est impossible de savoir ce qu’il se passe à l’intérieur.

Le SSH a été mis au point par un Finlandais, Tatu Ylönen. La version 1 du SSH qui été proposée dès 1995 était une alternative aux protocoles comme Telnet, rsh, ou encore rlogin. Toutefois, cette version 1 du protocole avait une vulnérabilité qui permettait à un hacker d’insérer des données dans le flux sécurisé… Informations complémentaires à cette adresse.

La version 2 est l’évolution majeure (en plus d’avoir de nombreux correctifs de sécurité) de la première monture du SSH ; Cette version inaugure le transfert de fichiers de façon sécurisée avec le protocole FTP. On parle alors de SFTP, pour "Secure File Transfert Protocol". Aujourd’hui encore, c’est cette version 2 qui est utilisée quotidiennement.

Fonctionnement du protocole SSH

Un client (humain ou machine), appelé "pair" peut ouvrir une session interactive sur une machine distante, lui permettant d’envoyer des commandes et/ou des fichiers de manière sécurisée. Pour que cette connexion soit établie entre les hôtes, une authentification mutuelle est nécessaire pour s’assurer que les machines communiquent entre elles, soit bien les machines "réelles". L’identité des pairs est vérifiée avant d'entamer le moindre transfert de donnée. L’usurpation d’identité est limitée avec ce protocole, ni même l’écoute du réseau par un capteur de paquets ou un analyseur de trames… En effet, même si un attaquant capture les paquets de ce flux, il ne pourra les déchiffrer sans avoir les paires de clés.

ssh diagram

La mise en place d’un canal sécurisé

Négociation de l’algorithme de chiffrement

Pour permettre la communication entre les deux machines, il faut d’abord commencer une phase de négociation entre les pairs, à savoir le client et le destinataire, pour s’accorder sur l’algorithme de chiffrement à utiliser. Le protocole SSH est prévu pour pouvoir fonctionner avec de nombreux algorithmes de chiffrement, notamment à l'aide du paquet openssl.

Établissement de la connexion

Une fois l’algorithme de chiffrement trouvé en accord entre les pairs, le serveur envoie sa clé publique d’hôte (Host Key) au client. Le client génère alors une clé de session d’un nombre de bits pré-définis (128, 256, 512, 1024, 2048, 4096, 8192). Plus le nombre de bits est important, plus la clé de session sera difficile à casser ; elle sera toutefois plus longue à déchiffrer pour les deux parties. Le déchiffrement s'effectue grâce à la clé publique reçue du serveur.

Le client envoie cette clé générée au serveur en plus de l’algorithme de chiffrement utilisé. Pour rappel, cet algorithme de chiffrement est connu des deux parties communicantes.

Le serveur reçoit la clé publique du client et la déchiffre grâce à sa clé privée. Si les clés sont reconnues, le serveur envoie un message de confirmation chiffré avec la clé publique de son client.

Une fois l’échange des clés terminé et positif entre le client et le serveur, la communication est alors chiffrée grâce à l’algorithme sélectionné par les pairs et en utilisant les clés publiques de chacune des parties.

L’authentification dite "simple"

Lorsque la connexion est établie entre les parties, le client doit s’identifier sur le serveur. La principale méthode d’authentification est la suivante :

  • Le client envoie un nom d’utilisateur et le mot de passe associé lors de l’établissement de la connexion ;
  • Le serveur vérifie si l’utilisateur en question peut obtenir un accès à la machine, si le mot de passe fourni est valide.
    Si les tests sont validés, l’authentification est alors réussie. Sinon, l’accès au serveur est refusé et la connexion est immédiatement interrompue.

L’authentification par clés

Une autre méthode existe pour s’authentifier sans utiliser de mot de passe. Elle s’appuie sur la paire de clé privée/publique des pairs concernés. Pour rappel, ces clés ont été générées avant la connexion (on parle d’une paire de clés, comprenant une clé publique et une clé privée) :

  • Le serveur crée un "challenge" avec sa clé publique pour tester le client.
  • Le client reçoit ce challenge. Son but : Le déchiffrer avec sa clé privée (client).
  • Le client renvoie sa réponse lorsqu’il a réussi à déchiffrer le challenge
  • Le serveur autorisera l’accès au client si et seulement si la réponse reçue est positive.

Conclusion

Le protocole SSH est un moyen fiable pour protéger l’accès à ses serveurs, en plus d'être relativement simple à mettre en place. Grâce à ce protocole, il devient difficile d’usurper l’identité d’une machine ou d’une personne grâce au système de clé publique et privée uniques générée aléatoirement (en plus d’être chiffrée).

Ainsi, pour établir une connexion entre un client et un serveur via SSH, l’authentification (et donc l’accès) ne sera possible que lorsque la vérification des clés entre les parties sera en adéquation. Dans le cas contraire, la connexion est coupée et l'authentification rejetée.

Partager l'article