Le protocole SSH prend en charge de nombreuses méthodes d’authentification. L’une d’entre elles, sans doute la plus importante, est l’authentification par clé publique pour les connexions interactives et automatisées.
L’authentification par clé publique – quoi et pourquoi ?
La motivation pour utiliser l’authentification par clé publique plutôt que de simples mots de passe est la sécurité. L’authentification par clé publique fournit une force cryptographique que même des mots de passe extrêmement longs ne peuvent offrir. Avec SSH, l’authentification par clé publique améliore considérablement la sécurité car elle libère les utilisateurs de la nécessité de se souvenir de mots de passe compliqués (ou pire encore, de les écrire).
En plus de la sécurité, l’authentification par clé publique offre également des avantages en termes de convivialité – elle permet aux utilisateurs de mettre en œuvre l’authentification unique sur l’ensemble des serveurs SSH auxquels ils se connectent. L’authentification par clé publique permet également une connexion automatisée et sans mot de passe qui est un élément clé pour les innombrables processus d’automatisation sécurisés qui s’exécutent au sein des réseaux d’entreprise à l’échelle mondiale.
La cryptographie à clé publique s’articule autour de quelques concepts clés. Les sections ci-dessous les expliquent brièvement.
Cryptographie asymétrique – Algorithmes
Comme pour tout schéma de chiffrement, l’authentification par clé publique repose sur un algorithme. Il existe plusieurs algorithmes bien étudiés, sûrs et dignes de confiance, les plus courants étant les algorithmes RSA et DSA. Contrairement aux algorithmes de chiffrement (symétrique ou à clé secrète) les algorithmes de chiffrement à clé publique fonctionnent avec deux clés distinctes. Ces deux clés forment une paire qui est spécifique à chaque utilisateur.
Paire de clés – publique et privée
Dans le cas d’utilisation de l’authentification par clé publique SSH, il est plutôt typique que les utilisateurs créent (c’est-à-dire provisionnent) la paire de clés pour eux-mêmes. Les implémentations SSH comprennent des utilitaires facilement utilisables pour cela (pour plus d’informations, voir ssh-keygen et ssh-copy-id).
Chaque paire de clés SSH comprend deux clés :
-
Une clé publique qui est copiée sur le ou les serveurs SSH. Toute personne ayant une copie de la clé publique peut chiffrer des données qui ne peuvent ensuite être lues que par la personne qui détient la clé privée correspondante. Dès qu’un serveur SSH reçoit une clé publique d’un utilisateur et qu’il considère que la clé est digne de confiance, le serveur marque la clé comme autorisée dans son fichier authorized_keys. De telles clés sont appelées clés autorisées.
-
Une clé privée qui reste (uniquement) chez l’utilisateur. La possession de cette clé est une preuve de l’identité de l’utilisateur. Seul un utilisateur en possession d’une clé privée correspondant à la clé publique du serveur pourra s’authentifier avec succès. Les clés privées doivent être stockées et manipulées avec soin, et aucune copie de la clé privée ne doit être distribuée. Les clés privées utilisées pour l’authentification des utilisateurs sont appelées clés d’identité.
Configuration de l’authentification par clé publique pour SSH
Les étapes simples suivantes sont nécessaires pour configurer l’authentification par clé publique (pour SSH):
-
La paire de clés est créée (généralement par l’utilisateur). Ceci est typiquement fait avec ssh-keygen.
-
La clé privée reste avec l’utilisateur (et seulement là), tandis que la clé publique est envoyée au serveur. Typiquement avec l’utilitaire ssh-copy-id.
-
Le serveur stocke la clé publique (et la « marque » comme autorisée).
-
Le serveur permettra maintenant l’accès à toute personne qui peut prouver qu’elle a la clé privée correspondante.
Manipulation de la clé privée
Il est extrêmement important que la confidentialité de la clé privée soit gardée soigneusement. Pour la plupart des cas d’utilisation dirigés par l’utilisateur, cela est accompli en chiffrant la clé privée avec une phrase de passe.
Lorsqu’une clé privée est nécessaire, l’utilisateur est invité à fournir la phrase de passe afin que la clé privée puisse être déchiffrée. La gestion des phrases de passe peut être automatisée avec un agent SSH.
Dans la plupart des cas d’utilisation automatisée (scripts, applications, etc.), les clés privées ne sont pas protégées et une planification minutieuse et des pratiques de gestion des clés doivent être exercées pour rester sécurisées et conformes aux mandats réglementaires.
Du chaos à l’ordre – Gestion des clés SSH
Dans les environnements où les utilisateurs sont libres de s’auto-provisionner en clés d’authentification, il est courant qu’au fil des ans, le nombre de clés provisionnées et déployées devienne très important. Comme il n’y a aucun moyen de savoir qui possède ou a provisionné à l’origine une clé publique donnée trouvée sur un serveur, et comme ces clés n’expirent jamais, l’état réel du contrôle d’accès dans les grands environnements non gérés peut être très flou ou carrément chaotique.
Gérer et contrôler l’accès aux serveurs et autres infrastructures informatiques est une exigence légale pour toute entreprise qui opère sur des marchés réglementés tels que la finance, l’énergie, la santé ou le commerce. Ces entreprises ont besoin d’employer des solutions de gestion des clés SSH pour contrôler l’accès accordé par les clés SSH.
La gestion des clés SSH est un élément essentiel de l’activité des entreprises.