Vous êtes sur la page 1sur 8

SSH, L'authentication par cl

Mcanismes d'authentication

6 dcembre 2009 David TORTEL

Les ressources utilises dans cet article sont directement rfrences par une note de bas de page, l o elles apparaissent. Toute autre information contenue dans le prsent document est le fruit d'une opinion personnelle, du consensus d'une conversation avec des interlocuteurs du domaine des rseaux, ou de connaissances acquises par notre formation ou notre exprience personnelle.

David TORTEL
Table des matires

SSH, L'authentication par cl

1 Avant propos. . . prsentation des notions indispensables 2 SSH, l'authentication par cl

1.1 La cryptographie asymtrique . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 L'algorithme Die Hellman . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Concept de l'authentication par cl . . . . . . 2.2 L'authentication par cl, en dtail et en image 2.2.1 ouverture de connexion TCP . . . . . . 2.2.2 versions supportes . . . . . . . . . . . . 2.2.3 Mthode d'authentication . . . . . . . 2.2.4 mise en place d'un secret commun . . . 2.2.5 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 4 4 5 5 5 6 7 7

Elve ingnieur en scurit de l'information 2

Tlcom Paristech

David TORTEL

SSH, L'authentication par cl

Le Secure Shell  que l'on abrgera dans toute la suite par SSH  est un protocole de communication scurise entre deux machines. SSH permet l'tablissement d'un tunnel scuris entre deux entits qui sont alors en mesure d'changer des donnes sensibles de manire sure. Aujourd'hui, la version 2 de ce protocole permet aussi bien d'accder une console sur la machine distante  et donc de saisir des commandes et de modier le systme distance - que de transfrer des chiers de manire scurise ou encore d'apporter de la scurit des applications par nature sujettes des attaques de type MITM, rejeux ou coute passive du rseau  par exemple, le protocole SSH apporte de la scurit au protocole POP3 qui lorsqu'il rcupre les courriers lectroniques sur le serveur de messagerie ne chire pas leur contenu et ne garantit pas leur intgrit. Peu prsent sur les stations Windows  l'application du protocole ncessite alors l'installation d'un logiciel comme Putty  et support d'origine dans les systmes UNIX/Linux, SSH utilise par dfaut le port 22. Dans la mesure o le protocole SSH fournit une communication chire et signe entre deux entits interdisant alors un MITM, il est ncessaire d'avoir une authentication forte entre les deux entits mises en jeu an de prvenir de toutes les attaques qui peuvent venir en amont de la connexion. Si plusieurs mthodes d'authentication ont t dveloppes, suivant le degr d'exigence des parties concernes, ce document s'attardera sur la mthode d'authentication par cl.

1 Avant propos. . . prsentation des notions indispensables


1.1 La cryptographie asymtrique
La cryptographie est une discipline qui cherche assurer la condentialit l'authenticit ainsi que l'intgrit des messages changes. En cryptographie classique, il existe grossirement deux familles de chirement : le chirement symtrique et le chirement asymtrique. Lors d'un chirement asymtrique, les deux entits mises en jeux possdent chacune un couple de cl : une cl publique connue de tous et une cl prive garde secrte. Ces cls sont lies dans la mesure o lorsqu'un texte est chir avec l'une des deux cls on peut retrouver le message original en appliquant la seconde cl au texte chir. Ds lors, lorsqu'Alice veut envoyer un message chir Bob, elle utilise la cl publique de Bob et applique une mthode de chirement au choix. Lorsque le message circule sur le rseau, une coute passive du rseau ne fournit aucune information sur le sens du message. La smantique du message est en eet assujettie la possession de la cl prive adquat. Lorsqu'il reoit le message, Bob applique sa cl prive et retrouve l'original du message qu'il peut alors traiter. De mme, lors de sa rponse, Bob utilisera la cl publique d'Alice qui dchirera le message au moyen de sa cl prive. Dans la mesure o un chirement asymtrique est trs lourd en termes de CPU, les stations utilisent souvent les premiers changes pour mettre en place et partager une cl symtrique ; Cette cl permet un chirement symtrique  la mme cl sert la fois pour le chirement et le dchirement d'un message -, moins couteux en termes de CPU.

Elve ingnieur en scurit de l'information 3

Tlcom Paristech

David TORTEL

SSH, L'authentication par cl

Deux stations exprimant le dsir de communiquer en utilisant le protocole SSH doivent possder chacune leur couple de cls publique/prive.

1.2 L'algorithme Die Hellman


L'algorithme Die Hellman est une mthode permettant deux entits d'changer une cl symtrique. Avec cette mthode de mise au point d'un secret commun, une attaque passive d'coute du rseau choue. En eet, l'analyse de l'intgralit des messages changs par les deux stations ne fournit pas d'informations susantes au pirate pour qu'il puisse reconstruire ce secret. Partons de la situation suivante. Alice et Bob souhaitent partager une cl symtrique an d'assurer la condentialit de leur conversation furture. Ils utilisent l'algorithme de Die Hellman pour construire cette cl. Alice et Bob se mettent d'accord sur deux nombres g et n qui reprsentent respectivement la gnratrice et le groupe topographique dans lequel vont se faire les calculs futurs. Ces nombres doivent respecter les conditions suivantes n > g  n est un nombre premier choisi arbitrairement grand
g>1

Ces nombres n et g circulent en clair sur le rseau, ce qui signie que n'importe quelle personne qui coute le rseau a accs ces donnes. Alice choisit arbitrairement un nombre a et calcule X g a [modn] Bob choisit alatoirement b et calcule Y g b [modn]
X et Y sont ensuite transmis en clair sur le rseau. Le pirate malveillant a donc accs X et Y . Nanmoins, trouver a ou b partir de g et X ou Y revient rsoudre le problme

du logarithme discret qui est un problme dicile polynomiale de rsolution 

id est

il n'existe pas de mthode

Lorsqu'Alice reoit Y , elle calcule k Y a [modn] g ba [modn] De mme lorsqu'il reoit X , Bob calcule k X b [modn] g ab [modn] 1 Ainsi Alice et Bob ont mis en place un secret partag sans que jamais celui-ci ne soit disponible pour un tiers. En eet, puisqu'il est dans l'impossibilit de trouver a ou b, le pirate malveillant ne peut tre en possession de k.

2 SSH, l'authentication par cl


2.1 Concept de l'authentication par cl
Comme on l'a aperu dans la partie introductive, chaque station sensible la condentialit des donnes possde un couple de cls publique/prive.
1
L'galit provient de la commutativit dans le corps de rfrence

Elve ingnieur en scurit de l'information 4

Tlcom Paristech

David TORTEL

SSH, L'authentication par cl

La scurit de l'authentication par cl est assure par les trois lments suivant : La cl publique : La cl publique du client est exporte, manuellement, sur le serveur d'authentication lorsqu'il est dclar apte se connecter sur ce serveur. De mme l'utilisateur possde la cl publique du serveur dans un rpertoire protg. La cl prive : garde secrte, dans un rpertoire protg, c'est elle qui assure l'authentication. Une passphrase : Il s'agit d'une phrase secrte dont le but est de dfendre l'accs la cl prive. Seule la saisie de cette phrase secrte permet l'ordinateur du client d'utiliser la cl prive. L'ide de la phrase secrte repose sur la multiplication des caractres  par rapport un mot de passe -. Cette multiplication se transforme en croissance exponentielle de l'entropie des mots de passe, augmentant de faon similaire de temps d'attaque du mot de passe en force brute. L'authentication par cl est une authentication forte, id est reposant sur la validation de deux paramtres indpendants : la passprahse et la cl prive. La connaissance de l'un seul de ces paramtres n'est pas susante pour s'authentier. Lorsqu'il souhaite s'authentier auprs du serveur l'utilisateur chire un challenge  qui est un secret partag entre le serveur et l'utilisateur  avec sa cl prive  qui n'est accessible qu'aprs validation du mot de passe. D'un point de vue d'un MTIM, l'utilisateur chire un champ inconnu avec une cl inconnue et inaccessible. Lorsqu'il reoit le message, le serveur le dchire avec la cl publique de l'utilisateur stocke dans son disque dur et arme ou inrme la validation de l'authentication. Le serveur s'authentie auprs de l'utilisateur de faon analogue.

2.2 L'authentication par cl, en dtail et en image


2.2.1 ouverture de connexion TCP
La premire tape de cette authentication consiste en une ouverture de connexion TCP sur le port 22  port standard rserv par l'IANA au protocole SSH. Il s'agit d'une ouverture `standard' en trois tapes SYN, SYN-ACK, ACK comme le montre la capture d'cran ci-dessous obtenue partir du logiciel de capture Wireshark.

2.2.2 versions supportes


Une fois la connexion au niveau transport assure, le client envoie un message contenant la version du protocole ssh qu'il supporte. Le serveur lui rpond de mme la version

Elve ingnieur en scurit de l'information 5

Tlcom Paristech

David TORTEL

SSH, L'authentication par cl

supporte  trois rponses peuvent tre possible : 1.0, 2.0 ou 1.9 si les deux versions sont supportes. Il est important de noter que dans la mesure o de nombreuses failles ont t dceles dans la version 1.0, il est recommand d'utiliser la version 2.0 .

Une fois la rponse reue et si les versions sont compatibles, le processus d'authentication continue

2.2.3 Mthode d'authentication


Le principal objectif de cette tape est la ngociation des algorithmes d'change de cls kexa lgorithms -, des mthodes de chirements  serverh ostk eya lgorithms et encryptiona lgorithms -, des mthodes de vrication d'intgrit  maca lgorithms - ou de compression  compressiona lgorithms. A ce titre, client et serveur s'changent les messages key echange init et key echange init response qui dtaillent l'ensemble des algorithmes. La capture d'cran ci-dessous souligne cet change initi par le serveur. On y trouve l'ensemble des algorithmes supports, classs dans l'ordre croissant de prfrence. Le client rpond de manire analogue ; la prfrence commune est ainsi dnie.

Dans toute la suite, on considre que client et serveur mettent au point leur secret commun avec l'algorithme Die Hellman dont le principe est explicit en premire partie.

Elve ingnieur en scurit de l'information 6

Tlcom Paristech

David TORTEL
2.2.4 mise en place d'un secret commun

SSH, L'authentication par cl

Lors de cette tape, les deux protagonistes vont partager un secret qui sera indispensable pour l'authentication. Lors du premier change, client et serveur se mettent au point sur les constantes publiques  n et g  grce aux messages key exchange init. L'image ci- dessous dmontre que le client entame la conversation en prcisant la fentre de connexion maximale qu'il pourra supporter pour ses calculs. Le serveur lui rpond dans le choix de constantes correspondant aux prfrences du client. Les constantes n et g sont maintenant dnies et partages par les deux entits. Une fois le groupe de travail dni, le client charge les constantes g et n et calcule X g a [modn] - dni dans la partie I) - Il utilise ensuite un message Die-Hellman GEX init pour partager ce X avec l'entit adverse. Un exemple de ce message est fourni ci-dessous

Lorsqu'il reoit ce message, le serveur gnre Y g b [modn]  notation dnie dans la partie I)  et l'envoie l'utilisateur.

2.2.5

Authentication

Les deux acteurs sont dsormais en accord sur la cl partage k. Cette cl est un secret partage entre ces deux entits uniquement ; personne d'autre, mme en ayant au pralable couter l'intgralit de la conversation ne connait la valeur de la cl k. Nanmoins, ces entits ne sont pas encore ni identis ni authentis. Autrement dit, un pirate aurait pu jusqu' prsent se faire passer pour le serveur et engager la gnration d'une cl partage pigeant alors le client. Il est donc fondamental que l'utilisateur authentie le serveur. Cette authentication doit tre la premire. En eet, si l'utilisateur s'authentiait en premier, le pirate malveillant spoofant l'identit du serveur pourrait voler des informations prcieuses sur l'identication du client lgitime. Le serveur cre alors un message contenant le hash chir de champs connus par le couple client/serveur. Le secret k fait partie de ces champs mais n'est pas prcis explicitement de telle sorte qu'il n'est pas disponible pour un pirate malveillant qui couterait la conversation. Le hash est ensuite chir par la cl prive du serveur. Il s'agit du message Gex response. Lorsqu'il reoit le message, le client en vrie la signature. Celle-ci valide la fois la bonne connaissance de la cl k  sinon le hash serait incorect  et l'authenticit du serveur. Pour vrier la signature, le client reconstruit le message original ; il le hache. Il rcupre la cl publique du serveur dans son rpertoire protg knownh ost puis dchire la signature. S'il y a concordance entre le hash calcul et

Elve ingnieur en scurit de l'information 7

Tlcom Paristech

David TORTEL

SSH, L'authentication par cl

le dchirement de la signature  id est si les chaines de caractres aprs ces oprations en parallle sont identiques  le serveur est authenti. Si la cl publique du serveur n'est pas connue  id est qu'elle ne fait pas partie du rpertoire knownh osts - un message prvient l'utilisateur l'informant ainsi qu'il s'agit peut-tre d'une attaque de type MITM  id est que celui qui prtend tre le serveur ne l'est en fait pas. . . Une fois le serveur authenti, le client gnre une nouvelle cl symtrique qu'il chire avec k et envoie au serveur. Cette cl sera la nouvelle cl utilise par le couple pour leur communication future. Il s'agit d'une cl de session. En ralit, le protocole SSHv2 prvoit plusieurs cls de session ; une pour chirer la communication dans le sens client/serveur, une pour chirer le sens serveur/client ainsi que d'autres pour vrier l'intgrit. Les cls suivantes sont mises en place aprs authentication du client. Avant que la communication ne puisse commencer, le client doit son tour s'authentier. L'authentication se fait de faon analogue celle du serveur. Le client prend la concatnation de champs connus ainsi que de la cl partage k, qu'il hash et signe avec sa cl prive. L'accs sa cl prive est assujetti la saisie d'une phrase secrte qui en assure la scurit. Lorsqu'il reoit le message, le serveur vrie son tour la bonne connaissance du secret partag k et de l'authenticit du client grce sa cl prive  la cl publique tant dj sauvegarde dans le serveur. Si le client est authenti, la conversation chire peut commencer entre les deux protagonistes Le protocole SSH donne la possibilit de modier un systme d'information distance. Il est par consquent fondamental d'assurer la non violabilit du systme. Celle-ci passe par une authentication forte, puis la garantie de la condentialit, de l'intgrit et de l'authenticit de chaque message. Ce document a explor une des solutions d'authentication propose par le protocole SSH. Cette solution est souvent considre comme la plus sure qui soit et peut galement tre amliore en ltrant les demandes de connexions par les adresses IP. On y vu comment le couple cl prive/cl publique pouvait assurer de la lgitimit des acteurs.

Elve ingnieur en scurit de l'information 8

Tlcom Paristech