Précédent | Sommaire | Index | Suivant


Chapitre 8 : utilisation de clés publiques pour l'authentification SSH


8.1. Introduction à l'authentification par clé publique

L'authentification par clé publique est une autre façon de vous identifier auprès d'une machine distante, qui ne demande pas de taper un mot de passe. C'est une méthode sûre, plus souple que l'authentification par mot de passe, mais aussi plus difficile à mettre en place.

Dans le cas de l'authentification classique par mot de passe, vous prouvez que vous êtes bien qui vous prétendez être en montrant que vous connaissez le bon mot de passe. La seule façon de montrer que vous connaissez ce mot de passe est d'indiquer à la machine distante le mot de passe que vous pensez être le bon. En conséquence, si la machine distante a été piratée, ou si son adresse IP a été usurpée ( voir à ce sujet la section 2.2 ), le pirate peut découvrir votre mot de passe à cette occasion.

L'authentification par clé publique résoud ce problème. Vous générez une paire de clés, composée d'une clé publique ( que tout le monde a le droit de connaître ) et d'une clé privée ( que vous devez garder secrète, et ne communiquer à personne ). La clé privée permet de générer des signatures. Une signature créée à l'aide de votre clé privée ne peut pas être falsifiée sans disposer de cette même clé. En revanche, quiconque a connaissance de votre clé publique peut vérifier si une signature qui est censée être la vôtre est effectivement authentique, ou non.

Vous générez donc une paire de clés sur votre propre ordinateur, puis vous vous connectez à la machine distante ( en vous authentifiant par mot de passe ), le temps d'y copier votre clé publique. Une fois que c'est fait, vous pouvez vous déconnecter. La fois d'après, lorsque la machine distante vous demande de prouver qui vous êtes, PuTTY génère une signature à l'aide de votre clé privée. La machine distante peut vérifier l'authenticité de cette signature grâce à votre clé publique, que vous venez d'y copier, et vous permettre d'ouvrir une session. Et si jamais la machine distante a été piratée, ou si son adresse a été usurpée, le pirate n'obtient pas pour autant votre clé privée, ni votre mot de passe. Tout ce qu'il obtient, c'est une signature. Et comme les signatures sont à usage unique, au final, il n'a rien gagné dans l'affaire.

Cela ne va pas sans poser problème : si jamais votre clé privée est rangée dans votre ordinateur sans protection particulière, alors quiconque qui parvient à y accéder se retrouve en mesure de générer des signatures à votre place, et donc de se faire passer pour vous. C'est pourquoi votre clé privée est généralement chiffrée lorsqu'elle est stockée sur votre machine locale, à l'aide d'une phrase de passe de votre choix. Pour pouvoir générer une signature, PuTTY doit alors déchiffrer la clé, et pour cela, vous devez taper votre phrase de passe.

Cela peut rendre l'authentification par clé publique moins commode que l'authentification par mot de passe : chaque fois que vous vous connectez à une machine distante, au lieu de taper un mot de passe relativement court, vous êtes obligé de taper une phrase de passe plutôt longue. Une solution à cela consiste à utiliser un agent d'authentification, c'est à dire un programme séparé dont le rôle consiste à conserver les clés privées sous forme non chiffrée, et à générer des signatures à la demande. L'agent d'authentification de PuTTY s'appelle Pageant. Lorsque vous ouvrez une session Windows, il vous suffit de lancer Pageant et d'y charger votre clé privée ( votre phrase de passe vous sera bien entendu demandée, mais vous n'aurez besoin de la taper qu'une seule fois ). Et pendant tout le reste de votre session Windows, vous pouvez lancer PuTTY autant de fois que vous voulez, et vous connecter à autant de machines que vous le souhtaiez, Pageant génèrera automatiquement les signatures requises, sans que vous n'ayez à vous soucier de quoi que ce soit. Lorsque vous fermerez votre session Windows, Pageant s'arrêtera, sans jamais avoir écrit votre clé privée en clair sur le disque dur. De nombreuses personnes estiment que c'est là un bon compromis entre la sécurité et la facilité d'utilisation ( veuillez vous reporter au chapitre 9 pour plus de détails à ce sujet ).

Il existe plusieurs algorithmes d'authentification par clé publique. Le plus courant est RSA, mais il en existe d'autres, notamment DSA ( également connu sous le nom DSS, qui veut dire Digital Signature Standard, et qui est le standard de signature numérique du gouvernement fédéral américain ). Les types de clés reconnus par PuTTY sont décrits dans la section 8.2.2.


8.2. Utilisation de PuTTYgen, le générateur de clés de PuTTY

PuTTYgen est un générateur de clés. Il génère des paires de clés publiques et privées destinées à être utilisées avec PuTTY, PSCP, et Plink, ainsi qu'avec Pageant, l'agent d'authentification de PuTTY ( voir chapitre 9 ). PuTTYgen génère des clés RSA et DSA.

Lorsque vous lancez PuTTYgen, vous obtenez une fenêtre où vous avez le choix entre 'Generate' ( générer une nouvelle paire de clés ), ou 'Load' pour charger une clé privée existante.

Lancement de PuTTYgen


8.2.1. Génération d'une nouvelle clé

Voici un aperçu rapide de la marche à suivre pour générer une nouvelle paire de clés. Les sections qui suivent décrivent le processus plus en détail.

Votre paire de clés est maintenant prête à l'usage. Vous pouvez, si vous le souhaitez, copier votre clé publique sur les machines auxquelles vous voudrez vous connecter, soit en faisant un copier/coller du champ 'Public key for pasting into OpenSSH authorized_keys file' ( voir à ce sujet la section 8.2.10 ), soit en cliquant sur le bouton 'Save public key' ( cf. section 8.2.9 ). Cela dit, vous n'êtes pas obligé de faire cela tout-de-suite-maintenant-immédiatement-sur-le-champ. Vous pouvez aussi recharger la clé privée dans PuTTYgen, plus tard ( voir à ce sujet la section 8.2.11 ), et cela vous redonnera accès à la clé publique, que vous pourrez alors copier/coller ou sauvegarder à votre guise.

La section 8.3 décrit la marche à suivre typique pour configurer PuTTY de façon à qu'il utilise l'authentification par clé publique, et pour configurer votre serveur SSH de façon à ce qu'il accepte ce mode d'authentification.


8.2.2. Choix du type de clé

Avant de générer une paire de clés à l'aide de PuTTYgen, vous devez choisir un type de clé. PuTTYgen reconnaît actuellement trois types de clés :

Le protocole SSH-1 n'accepte que les clés RSA. Si vous devez vous utiliser le protocole SSH-1, alors il faut choisir le premier type de clé, faute de quoi votre clé ne vous servira absolumement à rien.

Le protocole SSH-2, lui, reconnaît plusieurs types de clés. Les deux types reconnus par PuTTY sont RSA et DSA.

Les développeurs de PuTTY vous conseillent fortement d'utiliser RSA. DSA a une faiblesse intrinsèque qui rend très facile la création d'une signature contenant suffisamment d'information pour révéler la clé privée ! Ceci permettrait à un pirate de se faire passer pour vous pour un nombre quelconque de sessions ultérieures. Lors de l'implémentation de PuTTY, beaucoup de précautions ont été prises pour éviter ce défaut, mais nous ne pouvons pas être certains à 100% d'avoir réussi, donc si vous avez le choix, nous vous recommandons vraiment d'utiliser les clés RSA à la place.

Si vous avez vraiment besoin de vous connecter à un serveur SSH qui ne reconnaît que les clés DSA, alors vous n'avez pas tellement le choix, mais dans ce cas, nous vous conseillons de ne pas utiliser la même clé pour vous authentifier auprès de plusieurs machines différentes.


8.2.3. Choix de la taille ( et donc de la solidité ) de la clé

Le champ 'Number of bits in a generated key' vous permet de choisir le nombre de bits de la clé que PuTTYgen va générer, autrement dit sa solidité .

Actuellement, 1024 bits devraient suffire pour la plupart des usages.

Veuillez noter qu'une clé RSA est générée en cherchant deux nombres premiers qui font chacun la moitié de la longueur demandée, et en les multipliant l'un avec l'autre. Par exemple, si vous demandez à PuTTYgen une clé RSA de 1024 bits, il va prendre deux nombres premiers de 512 bits chacun et les multiplier ensemble. Le résultat de cette multiplication peut faire 1024 bits de long, mais il peut aussi n'en faire que 1023. Il se peut donc que vous n'obteniez pas exactement la longueur de clé que vous avez demandée. C'est parfaitement normal, et il n'y a pas lieu de s'en inquiéter. Il n'y a normalement pas plus d'un bit de différence entre la longueur demandée et la longueur obtenue, et cela n'engendre pas de baisse sensible du niveau de sécurité.

Les clés DSA, en revanche, ne sont pas créées en multipliant ensemble des nombres premiers. Elles doivent donc toujours avoir la longueur que vous avez demandée, sinon c'est qu'il y a un problème.


8.2.4. Le bouton 'Generate'

Une fois que vous avez choisi un type de clé et une longueur en bits, cliquez sur le bouton 'Generate' et PuTTYgen commencera effectivement à générer la clé.

Génération de la clé

Une barre de progression apparaîtra et PuTTYgen vous demandera de déplacer votre souris un peu n'importe comment, pour produire quelque chose d'aléatoire. Faites des ronds ou des zigzags avec la souris au dessus de la zone vide de la fenêtre de PuTTYgen, et la barre de progression va petit à petit se remplir, à mesure que PuTTYgen reçoit ces informations aléatoires que sont les différentes positions successives de la souris manipulée au hasard. Vous n'avez pas besoin de faire décrire à votre souris des motifs particulièrement originaux ( bien que cela ne puisse pas nuire ). En effet, il n'est pas possible de faire décrire à la souris plusieurs fois de suite exactement la même trajectoire, au pixel près, quand on la bouge à la main, et cela suffit à PuTTYgen comme informations aléatoires.

Une fois que la barre de progression arrive à son terme, PuTTYgen commence à créer la clé pour de bon. La barre de progression repart du début, et elle se remplit une deuxième fois pour indiquer l'état du processus de fabrication de la clé. Ce deuxième « remplissage » peut fort bien ne pas être régulier, et peut même marquer des temps d'arrêt par moments. C'est quelque chose d'inévitable, malheureusement, parce que la génération d'une clé est un processus aléatoire, et il n'est pas possible de prédire de façon fiable combien de temps il va prendre.

Une fois que la génération de la clé est finie, de nouveaux champs et de nouveaux boutons apparaissent dans la fenêtre de PuTTYgen, à la place de la zone où il fallait agiter la souris un peu dans tous les sens.

La clé est finie de générer


8.2.5. La ligne 'Key fingerprint' ( empreinte de la clé )

La ligne 'Key fingerprint' vous présente une empreinte de la clé générée. Cette empreinte est obtenue par un procédé cryptographique à partir de la valeur de la clé publique, et n'a donc pas besoin d'être gardée secrète.

La valeur de l'empreinte est censée être sûre d'un point de vue cryptographique, en ce sens qu'il n'est pas possible de fabriquer une autre clé qui ait la même empreinte, ni de trouver une clé à partir de son empreinte. C'est pourquoi certains utilitaires, tels que Pageant, dans sa liste des clés ( voir section 9.2.1 ), et l'utilitaire Unix ssh-add, affichent la liste des empreintes de clés plutôt que les clés publiques dans leur intégralité.


8.2.6. Choix d'un commentaire pour votre clé

Si vous avez plus d'une clé et que vous les utilisez pour des besoins différents, il n'est heureusement pas nécessaire que vous appreniez par cœur les empreintes des clés pour pouvoir les différencier les unes des autres. PuTTYgen vous permet d'associer un commentaire à votre clé, qui sera affiché à chaque fois que PuTTY ou Pageant vous demandera la phrase de passe correspondante.

Si vous n'indiquez pas de commentaire, le commentaire par défaut contient le type de la clé et la date à laquelle elle a été générée, comme par exemple rsa-key-20011212. Une autre façon de faire relativement courante consiste à mettre comme commentaire votre nom d'utilisateur et le nom de la machine à laquelle vous allez vous connecter avec cette clé, comme par exemple simon@pc-de-simon.

Pour modifier le commentaire associé à la clé juste après l'avoir générée, il vous suffit de taper ce que vous voulez dans le champ 'Key comment' avant de sauvegarder la clé privée. Et si vous voulez le modifier après coup, vous n'avez qu'à recharger la clé privée dans PuTTYgen, modifier le commentaire, et sauvegarder le tout à nouveau.


8.2.7. Choix d'une phrase de passe pour votre clé

Les champs 'Key passphrase' et 'Confirm passphrase' vous permettent de choisir une phrase de passe à associer à votre clé, et de la confirmer. La phrase de passe servira à crypter votre clé avant de l'écrire sur le disque, si bien que vous ne pourrez pas l'utiliser sans montrer patte blanche.

Lorsque vous sauvegardez la clé, PuTTYgen vérifie que les deux champs 'Key passphrase' et 'Confirm passphrase' contiennent bel et bien la même chose, exactement, et refuse de sauvegarder la clé dans le cas contraire.

Si vous laissez ces deux champs vides, la clé sera stockée en clair sur le disque. Il ne faut pas faire cela sans une bonne raison. Si vous le faites, votre fichier de clé privée est tout ce dont un pirate a besoin pour accéder - en se faisant passer pour vous - à toute machine qui accepte cette clé comme moyen d'authentification. Si vous voulez pouvoir ouvrir une session sans mot de passe, et sans avoir à taper une phrase de passe à chaque fois, alors Pageant ( chapitre 9 ) est probablement ce dont vous avez besoin. Avec Pageant, votre clé n'est présente qu'en mémoire vive, et non sur le disque, sous sa forme non cryptée.

Il y a des cas particuliers dans lesquels vous pouvez effectivement avoir besoin d'utiliser une clé sans phrase de passe associée. Par exemple, si vous devez lancer un script pour automatiser une tâche qui a besoin d'établir une connexion SSH, vous ne pourrez pas être là à chaque fois pour taper la phrase de passe. Dans ce cas, nous vous conseillons de générer une clé spécifique, que vous utiliserez pour ce script-là, et uniquement pour ce script-là. Au niveau de la machine distante, à laquelle ce script a besoin de se connecter par SSH, vous devriez faire en sorte que chaque clé ne puisse être utilisée que pour ce à quoi elle est spécifiquement destinée. Vous devriez normalement trouver des explications sur la façon de faire cela dans la documentation du serveur SSH utilisé sur la machine distante ( cela peut varier d'un serveur à l'autre ).

Choisir une bonne phrase de passe est quelque chose de difficile. De la même manière qu'il ne faut pas utiliser un mot du dictionnaire comme mot de passe ( parce qu'il est facile et rapide pour un pirate de passer en revue tous les mots du dictionnaire ), il ne faut pas non plus prendre des paroles de chansons, une citation de quelqu'un de célèbre, ou une phrase connue, quelle qu'elle soit, comme phrase de passe.

Le site DiceWare ( www.diceware.com ) conseille d'utiliser au moins cinq mots, chacun choisi au hasard en lançant un dé (1), ce qui donne 2 puissance 64 phrases de passe possibles ( soit un peu plus de dix-huit milliards de milliards ), et ce n'est sans doute pas une mauvaise façon de faire. Si vous voulez que votre phrase de passe ait un sens, grammaticalement parlant, cela réduit sensiblement l'éventail des possibilités, et il vous faudra sans doute alors utiliser une phrase de passe qui fasse plus de cinq mots.

N'oubliez pas votre phrase de passe !   Il n'y a pas moyen de la retrouver.


8.2.8. Sauvegarde de votre clé privée dans un fichier sur disque

Une fois que vous avez généré votre clé, que vous lui avez mis un commentaire et une phrase de passe, vous êtes prêt à sauvegarder votre clé privée sur disque.

Cliquez sur le bouton 'Save private key'. PuTTYgen affiche alors une boîte de dialogue pour vous demander où il doit sauvegarder la clé. Choisissez un répertoire, entrez un nom de fichier, et appuyez sur 'Save'.

Ce fichier est dans le format natif de PuTTY ( *.PPK ). C'est ce fichier dont vous aurez besoin pour vous authentifier avec PuTTY ( voir à ce sujet la section 4.20.7 ) ou que vous demanderez à Pageant de charger en mémoire ( cf. section 9.2.2 ).


8.2.9. Sauvegarde de votre clé publique dans un fichier sur disque

La RFC 4716 spécifie un format standard pour enregistrer les clés publiques SSH-2 sur disque. Certains serveurs SSH ( comme celui de ssh.com ) imposent d'utiliser une clé publique écrite dans ce format avant pour accepter l'authentification avec la clé privé correspondante. Certains autres, comme OpenSSH, utilisent un format différent ( voir à ce sujet la section 8.2.10 ).

Pour sauvegarder votre clé publique au format standard SSH-2, cliquez sur le bouton 'Save public key' de PuTTYgen, qui affiche alors une boîte de dialogue vous demandant où il doit écrire le fichier. Choisissez un répertoire, entrez un nom de fichier, et cliquez sur 'Save'.

Une fois que c'est fait, vous voudrez sans doute copier le fichier contenant votre clé publique sur la (ou les) machine(s) distante(s) auxquelles vous avez besoin de vous connecter. Veuillez vous reporter à la section 8.3 pour des explications générales sur la marche à suivre pour utiliser l'authentification par clé publique une fois que vous vous êtes généré une clé.

Si vous utilisez cette option avec une clé SSH-1, le fichier écrit par PuTTYgen contiendra exactement le texte affiché dans le champ 'Public key for pasting into OpenSSH authorized_keys file'. C'est le seul standard qui existe pour les clés publiques SSH-1.


8.2.10. Champ 'Public key for pasting into OpenSSH authorized_keys file' ( clé publique à copier/coller dans le fichier authorized_keys de OpenSSH )

Tous les serveurs SSH-1 exigent que votre clé publique leur soit transmise sur une seule ligne ( sans retours à la ligne, donc ) avant qu'ils n'acceptent de vous authentifier avec votre clé privée. Le serveur OpenSSH exige également cela pour SSH-2.

Le champ 'Public key for pasting into OpenSSH authorized_keys file' fournit la clé publique dans le format correct, sur une seule ligne. Ce que l'on fait généralement, c'est qu'on sélectionne la totalité du contenu de ce champ avec la souris, qu'on fait Ctrl-C pour le copier dans le presse-papiers, puis qu'on le colle dans une session PuTTY déjà connectée à la machine distante.

Veuillez vous reporter à la section 8.3 pour connaître la marche à suivre pour mettre en place une authentification par clé publique une fois que vous avez généré une clé.


8.2.11. Rechargement d'une clé privée

PuTTYgen vous permet de charger en mémoire une clé privée déja existante. Si vous faites cela, vous pouvez alors changer la phrase de passe et le commentaire avant de la sauvegarder à nouveau. Vous pouvez aussi faire des copies supplémentaires de la clé publique.

Pour charger en mémoire une clé déjà existante, cliquez sur le bouton 'Load'. PuTTYgen affiche une boîte de dialogue de recherche de fichier pour vous permettre de vous déplacer parmi les répertoires et de sélectionner le fichier de la clé à ouvrir. Une fois que c'est fait, PuTTYgen vous demande la phrase de passe ( s'il y en a une ) puis affiche la clé de la même façon que s'il venait juste de la générer.

Si vous utilisez le bouton 'Load' pour charger une clé d'un format autre que celui de PuTTY, cela fonctionnera, mais une boîte de message s'affichera pour vous avertir que la clé que vous avez chargée n'est pas au format natif des clés PuTTY ( veuillez vous reporter à la section 8.2.12, ci-dessous, pour savoir comment importer des clés d'autres formats ).


8.2.12. Utilisation de clés privées de formats différents

La plupart des clients SSH-1 utilisent un format standard pour écrire les clés privées sur le disque. PuTTY utilise lui aussi ce format, ce qui fait que si vous avez généré une clé privée SSH-1 à l'aide d'OpenSSH ou du client ssh.com, vous pouvez l'utiliser avec PuTTY, et vice versa.

Il n'existe en revanche pas de format standard pour les clés privées SSH-2. OpenSSH, ssh.com et PuTTY utilisent tous trois des formats différents. Une clé générée avec l'un de ces clients ne peut donc pas être immédiatement utilisée avec un autre.

Grâce à la commande 'Import' du menu 'Conversions', PuTTYgen peut charger en mémoire des clés privées SSH-2 aux formats OpenSSH et ssh.com. Une fois que vous avez chargé en mémoire une clé de l'un de ces types, vous pouvez la sauvegarder à nouveau sur le disque, dans le format de clé de PuTTY ( *.PPK ), de façon à pouvoir l'utiliser après coup avec PuTTY et les outils associés. La phrase de passe ne sera pas modifiée par le processus de conversion ( à moins bien sûr que vous ne décidiez d'en changer à cette occasion ). Vous pouvez également profiter de l'occasion pour modifier le commentaire associé à la clé avant de la re-sauvegarder, étant donné que le format de clé SSH-2 de OpenSSH ne comporte pas de place réservée pour associer un commentaire à la clé, et que le format de commentaire de ssh.com est au contraire long et bavard.

PuTTYgen peut également exporter les clés privées au format OpenSSH et au format ssh.com. Pour cela, choisissez l'une des options 'Export' du menu 'Conversions'. L'export d'une clé se passe exactement de la même manière que la sauvegarde d'une clé ( voir à ce sujet la section 8.2.8 ), en ce sens qu'il vous faudra avoir tapé votre phrase de passe auparavant, et que vous serez averti si vous vous apprêtez à sauvegarder une clé sans lui associer de phrase de passe.

Vous remarquerez que les commandes d'export du menu 'Conversions' ne sont pas accessibles quand vous travaillez avec une clé SSH-1. C'est normal puisque le format de clé SSH-1 est standardisé, et qu'il n'existe différents formats de clé que pour les clés SSH-2.


8.3. Se préparer à l'authentification par clé publique

Connectez-vous à la machine distante avec PuTTY, en utilisant le protocole SSH. Lorsque la connexion est établie, il vous faudra entrer un nom d'utilisateur et un mot de passe pour ouvrir la session. Une fois que ce sera fait, il vous faudra configurer le logiciel serveur SSH pour qu'il accepte votre clé publique et qu'il s'en serve pour vous authentifier les fois suivantes :

Vous avez également tout intérêt à vérifier que votre répertoire personnel ( votre « home directory », comme on dit en bon français ), votre répertoire .ssh, ainsi que tout autre fichier qui a un rôle à jouer dans le processus d'authentification ( comme par exemple les fichiers authorized_keys, authorized_keys2 ou authorization ) ne sont pas accessibles en écriture par le groupe, ni par le reste du monde. Pour vous en assurer, il vous suffit de taper une commande dans le genre de celle-ci :

chmod go-w $HOME $HOME/.ssh $HOME/.ssh/authorized_keys

La machine distante est maintenant configurée de façon à accepter l'authentification à l'aide de votre clé privée. Il vous reste à configurer PuTTY pour qu'il essaye de s'authentifier auprès de la machine distante avec votre clé privée. Pour cela, vous pouvez procéder de trois manières :

NdT : un dé à jouer, en anglais, se dit dice ( ou die ), d'où le nom du site DiceWare.


Si vous souhaitez faire part aux auteurs de PuTTY de votre avis sur ce manuel, ou sur les outils PuTTY eux-mêmes, veuillez vous reporter à la page "Feedback" ( merci de leur écrire exclusivement en anglais ). Si vos remarques portent sur la traduction, merci de vous adresser directement au  traducteur, et non à l'équipe de développement.

[PuTTY release 0.60]

Valid HTML 4.01 Strict