Janvier 2009
1 2 Etablissement des clés de session Protection des données échangées 3 Identification par mot de passe Identification par clé publique Identification par hôte 4
Utilisations de Secure Shell Accès à distance, orienté compte utilisateur. Entre autres: sessions interactives à distance; execution de commandes à distance; transfert de fichiers vers des machines distantes (sftp, scp); redirection de ports; montage de systèmes de fichiers distants (sshfs);... de manière sécurisée!
Prédécesseurs non sécurisés Remplacement des r-commandes (rsh, rlogin, rcp) et de ftp, non sécurisés: envoi de données en clair sur le réseau (dont les informations d identification); pas de contrôle d intégrité des données; pas de contrôle d authenticité des participants.
Architecture du protocole SSH-2.0 Modèle client-serveur, subdivisé en 3 protocoles: Transport: canal de communication sécurisé; Authentification: identification du client et contrôle d accès; Connexion: multiplexage du canal sécurisé.
Etablissement des clés de session Protection des données échangées Protocole de base. Canal de communication sécurisé: Authentification du serveur; Chiffrement des données; Contrôle d intégrité et d authenticité des données. Chiffrement symétrique et authentification des messages établissement de clés de session. Négociation des algorithmes.
Etablissement des clés de session Protection des données échangées Spécifications de l établissement des clés de session Algorithme { secret partagé K hash d échange secret H = f (K,...) Dérivation d un identificateur de session: session id := 1 er hash d échange H propre à chaque session définitif pour la session Dérivation des vecteurs d initialisation et des clés de sessions: HASH(K H X session id) fonction HASH déterminée par l algorithme négocié X = constante définie pour chaque clé/vecteur à dériver
Etablissement des clés de session Protection des données échangées Algorithme de Diffie-Hellman pour l échange de clés Etablissement d un secret K partagé entre 2 acteurs A et B. 1 Choix d un groupe cyclique G et d un générateur g. 2 A B : g a avec a privé à A B A : g b avec b privé à B 3 A: K = ( g b) a B: K = (g a ) b Difficulté du logarithme discret en base g dans G. H := HASH(f(K,a,b,g,...)) Différentes variantes selon le choix de G, g et HASH. ex.: diffie-hellman-group1-sha1 Problème de l identité des participants.
Authentification du serveur Etablissement des clés de session Protection des données échangées But: assurer au client C qu il s adresse effectivement au serveur S S signe H avec sa clé privée. S envoie sa clé publique et la signature à C + éventuellement un certificat d authenticité C vérifie que la clé publique reçue est bien celle de S soit à l aide du certificat soit grâce à une base de donnée locale C vérifie la signature à l aide la clé publique reçue C est alors certain que les clés de sessions ont été partagées avec S et la communication cryptée peut commencer.
Traitement des messages Etablissement des clés de session Protection des données échangées Communication de messages par paquet Compression éventuelle du message. Bourrage aléatoire: adapter la taille du paquet; compliquer la crypto-analyse. Calcul du MAC. Chiffrement.
Code d authentification des messages Etablissement des clés de session Protection des données échangées MAC = f MAC (clé, n de séquence paquet non chiffré) Protection contre: altération, contre-façon, rejeu 0 n de séquence < 2 32 changement de clés de sessions avant 2 32 paquets
Identification par mot de passe Identification par clé publique Identification par hôte Identifier le client pour le contrôle d accès aux ressources. Identification par mot de passe; Identification par clé publique; Identification par hôte. Processus contrôlé par le serveur. Définition des méthodes admises Identifications multiples possibles
Identification par mot de passe Identification par mot de passe Identification par clé publique Identification par hôte byte SSH MSG USERAUTH REQUEST string user name string service name string "password" boolean FALSE string plaintext password possibilité de modifier le mot de passe Vulnérabilités: décryption du paquet; modification du paquet en cas de changement de mot de passe; compromission du serveur.
Identification par clé publique Identification par mot de passe Identification par clé publique Identification par hôte byte SSH MSG USERAUTH REQUEST string user name string service name string "publickey" boolean TRUE string public key algorithm name string public key to be used string signature signature avec session id. rôle du booléen. Vulnérabilité: compromission du client.
Identification par hôte Identification par mot de passe Identification par clé publique Identification par hôte byte SSH MSG USERAUTH REQUEST string user name string service name string "hostbased" string public key algorithm name string public host key string client host name string user name on the client host string signature signature avec session id. possibilité d inclure un certificat. possibilité de vérifier le nom du client par le réseau incertain.
Multiplexage de plusieurs flux de données à travers l unique canal sécurisé. Terminal à distance Session graphique (X11) Port forwarding protocole sftp
Port forwarding: connexion non sécurisée mysql --host=distant --port==3306 Local Distant???? 3306
Port forwarding: connexion sécurisée ssh -L 2212:local:3306 user@distant mysql --host=local --port=2212 Local Distant 2212???? 3306 ssh(22) ssh(22)
I Table des matières D.J. Barrett, R.E. Silverman, and R.G. Byrnes. SSH, The Secure Shell: The Definitive Guide. O Reilly Media, Inc., 2005. A.J. Menezes, P.C. Van Oorschot, and S.A. Vanstone. Handbook of Applied Cryptography. CRC Press, 1997. Wikipedia. Diffie-Hellman key exchange. Available from World Wide Web: http://en.wikipedia.org/wiki/diffie-hellman_key_exchang
II Table des matières Wikipedia. Message authentication code. Available from World Wide Web: http://en.wikipedia.org/wiki/message_authentication_cod T. Ylonen and C. Lonvick. The Secure Shell (SSH) Authentication Protocol. Technical report, RFC 4252, January 2006. T. Ylonen and C. Lonvick. The Secure Shell (SSH) Connection Protocol. Technical report, RFC 4254, January 2006.
III Table des matières T. Ylonen and C. Lonvick. The Secure Shell (SSH) Protocol Architecture. Technical report, RFC 4251, January 2006. T. Ylonen and C. Lonvick. The Secure Shell (SSH) Transport Layer Protocol. Technical report, RFC 4253, January 2006.