Aller au contenu

Protocoles SSH, FTP et SFTP

Cryptographie symétrique

La cryptographie symétrique est une méthode de chiffrement dans laquelle la même clé est utilisée pour chiffrer et déchiffrer des données. Elle est réputée pour sa rapidité et son efficacité, mais elle nécessite une gestion rigoureuse des clés afin de préserver la confidentialité. Tant l'émetteur que le destinataire doivent partager la même clé secrète, et l'échange sécurisé de cette clé est essentiel pour éviter qu'un tiers non autorisé n'accède aux informations.

Avantages

  • Rapide et peu gourmand en ressources.
  • Relativement simple à mettre en œuvre.

Inconvénients

  • La distribution sécurisée de la clé constitue un défi majeur.
  • Si la clé est compromise, toutes les communications deviennent vulnérables.

symmetric-encryption.png

Source image

Cryptographie asymétrique

La cryptographie asymétrique, ou cryptographie à clé publique, repose sur l'utilisation de deux clés distinctes : une clé publique et une clé privée. Contrairement à la cryptographie symétrique, où une seule clé est partagée, chaque clé dans ce modèle a un rôle spécifique :

  • Clé publique : utilisée pour chiffrer les données. Elle est accessible publiquement et peut être partagée librement.
  • Clé privée : utilisée pour déchiffrer les données chiffrées avec la clé publique. Elle est strictement confidentielle et ne doit jamais être partagée.

Ce modèle permet une communication sécurisée sans avoir à échanger de clé secrète au préalable, réduisant ainsi les risques associés à la distribution des clés.

Avantages

  • Permet un chiffrement sécurisé sans avoir besoin de partager la clé privée.
  • La clé publique peut être librement partagée, facilitant ainsi l'échange sécurisé de données.
  • Utilisé pour les signatures numériques (authentification de l'expéditeur) et le chiffrement des messages.

Inconvénients

  • Plus lent que la cryptographie symétrique en raison de la complexité des calculs.
  • Nécessite une infrastructure de gestion de clés (PKI - Public Key Infrastructure) pour garantir l'authenticité des clés publiques et se protéger contre les attaques de type "man-in-the-middle".

Exemples d'utilisation

  • SSH : Utilise la cryptographie asymétrique pour établir une connexion sécurisée en échangeant des clés publiques. Une fois la session établie, il passe à un chiffrement symétrique pour les échanges de données.
  • HTTPS : Utilise des certificats basés sur la cryptographie asymétrique pour chiffrer les communications entre un navigateur et un serveur.

asymmetric-encryption.png

Source image

Chiffrement vs Signature

Chiffrement avec clé publique/privée

Le chiffrement utilisant une clé publique garantit la confidentialité des communications.

  • L'émetteur utilise la clé publique du destinataire pour chiffrer un message.
  • Seul le destinataire, détenteur de la clé privée correspondante, peut déchiffrer le message.
  • Ce processus assure que seules les personnes autorisées (celles ayant la clé privée) peuvent accéder aux données transmises.

Ce mécanisme est fréquemment utilisé pour protéger les données lors de leur transmission sur des réseaux publics.

public-key-encryption.png

Source image

Signature avec clé publique/privée

La signature numérique avec une clé privée garantit l'authenticité et l'intégrité du message.

  • L'émetteur signe le message en utilisant sa clé privée, générant ainsi une signature unique.
  • Tout destinataire peut vérifier cette signature en utilisant la clé publique de l'émetteur.
  • Ce processus prouve que le message provient bien de l'émetteur (authenticité) et que le contenu n'a pas été altéré pendant son transit (intégrité).

Cette méthode est essentielle dans les contextes où la vérification de l'identité de l'émetteur et la protection contre les modifications non autorisées sont primordiales.

private-key-signing.png

Source image

Échange de clés Diffie-Hellman

L'échange de clés Diffie-Hellman est un protocole cryptographique permettant à deux parties de créer une clé de chiffrement commune, appelée clé de session, sans échanger directement d'informations sensibles comme des clés privées. Cette clé commune peut ensuite être utilisée pour chiffrer les communications entre les parties de manière sécurisée.

Étapes du protocole :

  1. Génération des clés privées et publiques :

    • Chaque partie (souvent appelée Alice et Bob) génère une clé privée secrète.
    • À partir de cette clé privée, chaque partie calcule une clé publique à l'aide d'une fonction mathématique prédéfinie.
  2. Échange des clés publiques :

    • Alice et Bob s'échangent leurs clés publiques via un canal non sécurisé. Cette étape ne présente pas de risque, car les clés publiques seules ne permettent pas de découvrir la clé privée.
  3. Calcul de la clé de session :

    • Alice et Bob utilisent chacun leur propre clé privée et la clé publique reçue de l'autre pour calculer la même clé de session. Les mathématiques sous-jacentes, basées sur des problèmes de logarithme discret, garantissent que la clé de session calculée par les deux parties sera identique, tout en gardant les clés privées secrètes.
  4. Utilisation de la clé de session :

    • La clé de session est ensuite utilisée pour chiffrer et déchiffrer les communications échangées. Cela garantit que les données sont protégées tout au long de l'échange.

Illustration mathématique simplifiée :

  • Paramètres publics : Un nombre premier p et une base g sont choisis et partagés publiquement.

  • Étape 1 :

    • Alice choisit une clé privée a et calcule sa clé publique : A = g^a mod p.
    • Bob choisit une clé privée b et calcule sa clé publique : B = g^b mod p.
  • Étape 2 :

    • Alice envoie sa clé publique A à Bob, et Bob envoie sa clé publique B à Alice.
  • Étape 3 :

    • Alice calcule la clé de session : S = B^a mod p.
    • Bob calcule la clé de session : S = A^b mod p.

Grâce aux propriétés des puissances modulaires, ces deux calculs aboutissent à la même clé de session S, sans que les clés privées a et b soient partagées.

Avantages :

  • Diffie-Hellman permet un échange sécurisé de clés sans exposer d'informations sensibles sur un canal non sécurisé.
  • Il est particulièrement adapté aux environnements ouverts, comme Internet, pour établir des connexions chiffrées.

Limitation :

  • Le protocole Diffie-Hellman n'authentifie pas les parties. Il est donc souvent utilisé en combinaison avec d'autres protocoles, comme SSL/TLS, pour garantir à la fois l'authenticité des parties et la confidentialité des communications.

public-key-shared-secret.png

Source image

SSH

Le protocole SSH (Secure Shell) est un protocole de communication sécurisé permettant d'établir des connexions réseau chiffrées sur un réseau non fiable, tel qu'Internet. Par défaut, il fonctionne généralement sur le port 22.

Sécurité

  • SSH garantit la confidentialité et l'intégrité des communications en chiffrant toutes les données échangées entre le client et le serveur.
  • Il utilise des algorithmes de chiffrement robustes pour protéger les informations sensibles, y compris les mots de passe et les données de session.

Authentification

  • SSH propose plusieurs méthodes d'authentification, notamment l'authentification par clés publiques et privées, les mots de passe, les cartes à puce, ainsi que d'autres mécanismes.
  • L'authentification par clé publique est largement privilégiée pour sa sécurité accrue par rapport à l'utilisation de simples mots de passe.

Utilisations courantes

  • SSH est couramment utilisé pour l'administration des systèmes, la gestion à distance de serveurs, le déploiement d'applications, la gestion d'infrastructures cloud et le télétravail sécurisé.
  • Il permet également l'exécution de commandes à distance, l'accès à des shells interactifs et le transfert de fichiers de manière sécurisée (via SCP ou SFTP).

Authentification

L'authentification avec SSH est le processus par lequel un client SSH prouve son identité au serveur SSH distant pour établir une connexion sécurisée.

Authentification par mot de passe

  • C'est l'une des méthodes d'authentification les plus courantes.
  • Le client SSH envoie un nom d'utilisateur et un mot de passe au serveur.
  • Le serveur vérifie si les informations d'identification correspondent à celles stockées sur le serveur.
  • Bien que simple, cette méthode est moins sécurisée que l'authentification par clé publique, car les mots de passe sont vulnérables aux attaques par force brute et aux interceptions.

Authentification par clé publique

  • Cette méthode est largement utilisée pour l'authentification sans mot de passe et offre une sécurité accrue.
  • Elle repose sur la génération d'une paire de clés (une clé publique et une clé privée) sur le client SSH.
  • La clé publique est copiée sur le serveur, tandis que la clé privée reste en sécurité sur le client.
  • Lors de la connexion, le client prouve son identité en utilisant sa clé privée pour signer une requête, que le serveur authentifie en comparant avec la clé publique stockée.

Processus détaillé de l'authentification par clé publique :

  1. Demande de connexion

    • Le client envoie une demande de connexion au serveur SSH distant.
    • Le client propose une clé publique pour tenter l'authentification.
    • Le serveur SSH vérifie que la clé publique du client correspond à une clé autorisée dans le fichier authorized_keys.
  2. Si la clé publique est valide, le serveur génère un jeton (défi) que le client doit signer avec sa clé privée.

  3. Le client utilise sa clé privée pour signer le jeton (défi).

  4. Le client renvoie la signature du jeton au serveur.

  5. Vérification de la signature

    • Le serveur vérifie la signature à l'aide de la clé publique du client.
    • Si la signature est valide, cela prouve que le client possède bien la clé privée associée à la clé publique.
  6. Établissement de la session

    • Une fois authentifié, une session SSH sécurisée est établie, permettant des échanges sécurisés entre le client et le serveur.

Cette méthode d'authentification garantit une plus grande sécurité en éliminant les risques associés à la gestion des mots de passe et en s'appuyant sur une paire de clés asymétriques pour sécuriser les connexions.

ssh-authentication.png

Source image

Chiffrement de la communication

Le protocole SSH utilise un échange de clés en début de connexion pour sécuriser les communications, basé sur la cryptographie asymétrique (ou à clé publique).

  1. Génération de la paire de clés du serveur

    • Le serveur SSH génère une paire de clés (privée et publique). La clé privée reste secrète, tandis que la clé publique peut être partagée librement.
  2. Envoi et vérification de la clé publique du serveur

    • Lors de la première connexion, le serveur envoie sa clé publique au client.
    • Le client vérifie l'authenticité de cette clé en la comparant à une empreinte connue ou en la validant manuellement.
  3. Échange sécurisé des clés de session

    • Une fois la clé publique validée, un algorithme d'échange de clés (comme Diffie-Hellman ou ECDH) est utilisé pour créer une clé de session partagée.
    • Cette clé de session, générée sans être directement échangée, permet de chiffrer les données échangées.
  4. Communication sécurisée

    • Avec la clé de session partagée, toutes les données échangées entre le client et le serveur sont chiffrées, garantissant leur confidentialité et leur intégrité.

Cette méthode assure une communication sécurisée en évitant les risques liés à l'échange direct de clés sensibles.

ssh.png

Source image

FTP

Le protocole FTP (File Transfer Protocol) est utilisé pour transférer des fichiers entre un client et un serveur sur un réseau, généralement l'Internet.

Ports

  • FTP utilise deux ports pour ses communications.
  • Le port 21 est utilisé pour les commandes de contrôle, tandis que le port 20 (en mode actif) ou un port sélectionné par le serveur (en mode passif) est utilisé pour le transfert de données.

Commandes FTP

  • FTP utilise des commandes spécifiques pour contrôler le transfert de fichiers.
  • Les commandes courantes incluent USER (pour s'authentifier), PASS (pour entrer le mot de passe), LIST (pour obtenir la liste des fichiers sur le serveur), RETR (pour télécharger un fichier), STOR (pour téléverser un fichier), et bien d'autres.
  • Certains clients FTP utilisent des commandes plus conviviales comme get (pour RETR) et put (pour STOR), qui sont ensuite traduites en commandes du protocole FTP.

Authentification

  • Les utilisateurs doivent généralement fournir un nom d'utilisateur et un mot de passe pour accéder au serveur FTP, bien que des modes d'accès anonymes soient parfois disponibles.

Sécurité

  • FTP, en lui-même, n'est pas sécurisé, car les données, y compris les informations d'identification, sont transférées en texte clair.
  • Pour sécuriser les transferts, il est recommandé d'utiliser FTPS (FTP sécurisé avec SSL/TLS) ou SFTP (SSH File Transfer Protocol). FTPS est une extension du protocole FTP classique qui ajoute le chiffrement via SSL/TLS. SFTP, en revanche, est un protocole distinct basé sur SSH, offrant une sécurité complète pour le transfert de fichiers.

Utilisations

  • FTP est largement utilisé pour transférer des fichiers sur Internet, que ce soit pour la gestion de sites web, la distribution de logiciels, la sauvegarde de fichiers ou la collaboration à distance.

Modes de fonctionnement

  • FTP actif : Dans ce mode, le client ouvre un port de données et demande au serveur de se connecter à ce port pour le transfert.
  • FTP passif : Dans ce mode, le serveur ouvre un port de données et attend que le client se connecte à ce port pour le transfert.

ftp-active-passive.png

Source image

Note

Le mode actif nécessite que le serveur FTP initie une connexion de données vers le client. Cependant, les pare-feu ou dispositifs de sécurité réseau du client peuvent bloquer cette connexion, car elle est perçue comme une connexion entrante non sollicitée.

De nombreux pare-feu modernes bloquent par défaut ce type de connexions, ce qui peut rendre l'utilisation du mode actif difficile. Cela concerne notamment le port de données que le client ouvre pour recevoir les données, puisque c'est le serveur qui tente de s'y connecter.

High port (> 1024) : Dans le mode actif, le client ouvre généralement un port supérieur à 1024 pour la connexion de données, car les ports inférieurs à 1024 sont réservés aux services systèmes (ports privilégiés). Les ports > 1024 sont appelés "high ports" et sont fréquemment utilisés pour les connexions temporaires initiées par des clients.

SFTP

Le protocole SFTP (SSH File Transfer Protocol ou Secure File Transfer Protocol) est un protocole sécurisé conçu pour transférer des fichiers sur un réseau en utilisant une connexion SSH (Secure Shell). SFTP est intégré à SSH et utilise la connexion sécurisée établie par ce dernier pour échanger des fichiers de manière chiffrée entre un client et un serveur.

Port

  • Par défaut, SFTP utilise le port 22, le même que celui utilisé par SSH. Toutefois, il est possible de configurer SSH (et donc SFTP) pour utiliser un autre port, une pratique parfois recommandée pour renforcer la sécurité contre les tentatives de scans de port.

Gestion des fichiers

  • SFTP permet de gérer des fichiers et des répertoires sur un serveur distant de manière sécurisée. Cela inclut les actions suivantes : lister, télécharger, téléverser, supprimer, renommer, déplacer des fichiers ou des répertoires, ainsi que gérer les permissions d'accès.

Authentification

  • SFTP hérite des options d'authentification offertes par SSH, telles que l'authentification par mot de passe, par clé publique, par certificats, ou via des agents d'authentification. La sécurité de l'authentification repose sur la robustesse des mécanismes implémentés par SSH.

Sécurité

  • SFTP garantit la sécurité des transferts en chiffrant toutes les données échangées, ainsi que les commandes envoyées, via la couche de chiffrement offerte par SSH. Les algorithmes de chiffrement modernes, comme AES, ainsi que les mécanismes de vérification d'intégrité des données, protègent les fichiers contre toute interception ou modification par des tiers malveillants.

sftp.png

Source image

Tip

À utiliser à la place de FTP (si possible)

  • Un seul port (par défaut le port 22) pour SSH et SFTP, au lieu de plusieurs ports avec SSH et FTP(S) (21 pour FTP, 990 pour FTPS, plus des ports supplémentaires pour les données).
  • Possibilité d'utiliser l'authentification par clés publiques et privées avec SSH et SFTP, offrant une sécurité plus robuste comparée à l'authentification par mot de passe de FTP/FTPS.

Vocabulaire

Cryptologie : Science du secret.

Cryptographie : Discipline de la cryptologie qui s'attache à protéger des messages.

Chiffrement : Procédé de cryptographie permettant de rendre la compréhension d'un document impossible à toute personne n'ayant pas la clé de déchiffrement.

Chiffrer : Action de procéder à un chiffrement.

Déchiffrer : Action consistant à retrouver le texte original (appelé "clair") d'un message chiffré, à l'aide de la clé de déchiffrement.

Décrypter : Action consistant à retrouver le texte original à partir d'un message chiffré sans posséder la clé de déchiffrement.

Crypter / Cryptage : Terme incorrect en français. Le terme correct est chiffrer. "Crypter" n'existe pas dans le vocabulaire technique de la cryptographie.

Encrypter / Déencrypter / … : Anglicismes incorrects en français.

Chiffrage : Désigne l'évaluation du coût de quelque chose, ne doit pas être confondu avec "chiffrement".

Coder, encoder, décoder, … : Ces termes se réfèrent à la transformation ou au formatage des données dans un autre système de représentation (comme la compression ou l'encodage de fichiers multimédia). Cela n'implique pas de sécurité, contrairement au chiffrement.

Source