Dans ce protocole, les utilisateurs doivent être authentifiés. Ils peuvent le faire avec des mots de passe, des fichiers contenant des clés RSA privées, des périphériques matériels tels que Ledger Nano S et Ledger Nano X, etc.
Certains moyens d'authentification sont plus sûrs que d'autres : utiliser un dispositif matériel conçu pour stocker une clé privée sans jamais permettre de l'extraire est plus sûr que de stocker la clé privée dans un fichier. Malheureusement, les plus sécurisés sont également plus pénibles à utiliser. Les utilisateurs qui ont leurs clés sur un appareil doivent transporter l'appareil avec eux, doivent taper leur code PIN chaque fois qu'ils lancent une session SSH, etc. Il est donc assez difficile de préconiser des moyens plus sûrs que les mots de passe et les fichiers pour les cas d'utilisation où la sécurité de l'accès n'est pas la priorité.
La question est donc : est-il possible de stocker le matériel d'authentification de manière plus sécurisée que dans un fichier (qui peut être volé par certains logiciels malveillants), sans modifier l'expérience utilisateur ?
Et la réponse est : oui, en utilisant un TPM !
Un peu d'histoire
Depuis un certain temps, les ordinateurs sont capables d'embarquer directement une puce de sécurité. Cette puce, nommée Trusted Platform Module (TPM), offre de nombreuses fonctionnalités dont la capacité de protéger les clés privées utilisées dans la cryptographie à clé publique.
Comme il est intégré dans les ordinateurs, il n'est pas nécessaire de brancher un périphérique sur l'ordinateur pour l'utiliser. Celui-ci est donc considéré comme moins sécurisé qu'un dispositif matériel qui peut être stocké à un endroit différent de l'ordinateur (cela permet de faire respecter le principe selon lequel tant que le dispositif n'est pas connecté à l'ordinateur, aucun logiciel malveillant ne peut utiliser les secrets qui y sont stockés).
Donc TPM n'est pas la "meilleure sécurité", mais c'est toujours beaucoup plus sûr que d'utiliser des fichiers tels que $HOME/.ssh/id_rsa
pour stocker les clés privées.
Comment TPM peut-il être utilisé avec OpenSSH sous Linux ? Avec un projet nommé tpm2-pkcs11
, en suivant les instructions disponibles sur de nombreux sites Web depuis de nombreuses années, y compris sur le documentation officielle de son référentiel de code.
Maintenant, quelles sont les nouvelles ? Ce logiciel est maintenant enfin packagé dans Ubuntu et Debian, ce qui le rend enfin disponible pour la plupart des utilisateurs de Linux !
Plus précisément voici une chronologie :
- En 2014, les principales spécifications du TPM 2.0 ont été publiées. Pour interagir avec un TPM depuis le logiciel, il y a eu un effort de standardisation, et deux piles logicielles incompatibles ont été créées : celle du Trusted Computing Group (TCG), appelée Pile logicielle TPM (TSS), et celui d'IBM, aussi appelé Pile logicielle TPM.
- En 2018, le projet
tpm2-pkcs11
a été créé pour fournir une interface PKCS#11 à un TPM 2.0, en utilisant le TSS de TCG. PKCS # 11 est une norme qui définit une interface de programmation d'application (API) nommée Cryptoki utiliser des jetons stockant des clés cryptographiques. Comme OpenSSH prenait en charge l'utilisation d'une interface PKCS#11 pour effectuer l'authentification de l'utilisateur, cela permettait d'utiliser TPM pour stocker les clés utilisées pour l'authentification SSH. - En Février 2019,
tpm2-pkcs11
a été ajouté à Fedora 29. - En septembre 2019, CentOS 8 est sorti avec ce package.
- En avril 2020,
tpm2-pkcs11
a été ajouté à Sid Debian. Malheureusement, il ne contenait pas le programmetpm2_ptool
ce qui est nécessaire pour créer facilement des clés. Ce problème a été signalé dans Bogue Debian #968310. - En janvier 2021, le paquet de Debian a été fixé (et le mainteneur a reconnu mon aide !).
- En avril 2021, Ubuntu 21.04 Hippopotame Hirsute a été libéré avec le forfait fixe.
- En août 2021, Debian 11 Bullseye a été libéré avec le forfait fixe
Maintenant tpm2-pkcs11
est disponible sur Debian, Ubuntu et plusieurs autres distributions Linux listées sur Repologie.
Utilisation de tpm2-pkcs11
Sur Debian 11, voici les étapes pour générer et utiliser une nouvelle clé SSH stockée en toute sécurité par le TPM :
- Commande d'installation
tpm2_ptool
et bibliothèquelibtpm2_pkcs11.so.1
, qui sont fournis par deux packages :
2. Vérifiez que le système peut utiliser un TPM 2.0. Si l'une des vérifications suivantes échoue, cela peut signifier que le système n'a pas de TPM, ou a un TPM 1.2, ou a un TPM 2.0 qui est désactivé dans les paramètres du BIOS :
3. Ajoutez l'utilisateur actuel au groupe qui peut accéder au périphérique TPM /dev/tpmrm0
. Sur Debian et Ubuntu, les utilisateurs doivent appartenir à un groupe nommé tss
(grâce à la configuration fournie par tpm-udev
paquet). La commande suivante ajoute l'utilisateur actuel à ce groupe :
Initialiser une boutique utilisateur, protégée par un mot de passe et un SOPIN et créez une clé, par exemple une clé de courbe elliptique sur la courbe nommée "NIST P-256" (également connue sous le nom de "secp256r1") :
4. L'acronyme SOPIN veux dire Numéro d'identification personnel de l'agent de sécurité et est un concept de la spécification PKCS#11. Dans des cas d'utilisation simples, il peut être vu comme un "mot de passe de récupération" qui permet de modifier le mot de passe lorsque par exemple il a été perdu.
5. Affichez la clé publique de cette nouvelle clé :
6. Configurez la nouvelle clé publique dans un serveur, par exemple en l'écrivant dans $HOME/.ssh/authorized_keys
ou dans les paramètres de compte de GitHub ou à tout autre endroit où les clés publiques SSH sont utilisées.
7. Configurez le client SSH à utiliser tpm2-pkcs11
pour se connecter au serveur, par exemple en écrivant ceci dans $HOME/.ssh/config
(côté client):
Connectez-vous au serveur (NB l'étape précédente peut être ignorée :
Travail futur
La section précédente a présenté comment créer une nouvelle clé dans le TPM. Bien que cela permette d'utiliser un TPM pour protéger l'authentification SSH, deux fonctionnalités sont nécessaires pour en faire une véritable alternative à l'utilisation de fichiers pour stocker les clés privées :
- Fonctionnalité n°1 : importer des clés SSH existantes dans un TPM au lieu d'en créer de nouvelles (ce qui permet une transition en douceur vers le stockage TPM, la sauvegarde des clés, en cas de panne ou de perte de l'ordinateur, etc.).
- Fonctionnalité n°2 : utilisation de clés SSH sans mot de passe, comme des fichiers de clé privée non protégés (cette fonctionnalité est plus sécurisée que les fichiers de clé car la clé protégée ne peut pas être extraite du TPM).
J'ai implémenté les deux fonctionnalités dans tpm2-pkcs11
et les a soumis dans des demandes d'extraction #681 ainsi que #695. La fonctionnalité #1 a également été présentée en mai lors de l'appel en ligne hebdomadaire de communauté tpm.dev et l'enregistrement est disponible sur https://developers.tpm.dev/posts/14389750.
Les deux fonctionnalités seront donc probablement disponibles dans une future version de tpm2-pkcs11
.
Au fait, pour les lecteurs curieux qui veulent comprendre les rouages de tpm2-pkcs11
, j'ai publié un article à leur sujet lors de la conférence SSTIC 2021, nommé Protéger l'authentification SSH avec TPM 2.0 (article en anglais, présentation en français). D'ailleurs les lecteurs qui veulent essayer des choses sans toucher à un vrai TPM pourraient être intéressés par la section « Emulation d'un TPM 2.0 » de cet article.
(Illustration: Rainer Knäpper, Licence Art Libre)
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- PlatoAiStream. Intelligence des données Web3. Connaissance Amplifiée. Accéder ici.
- Frapper l'avenir avec Adryenn Ashley. Accéder ici.
- Achetez et vendez des actions de sociétés PRE-IPO avec PREIPO®. Accéder ici.
- La source: https://www.ledger.com/blog/ssh-with-tpm
- :possède
- :est
- :ne pas
- :où
- $UP
- 1
- 11
- 13
- 14
- 15%
- 2014
- 2018
- 2019
- 2020
- 2021
- 30
- 8
- 80
- a
- capacité
- Capable
- Qui sommes-nous
- accès
- Compte
- reconnu
- ajouter
- ajoutée
- Ajoute
- avocat
- aussi
- alternative
- an
- ainsi que
- répondre
- tous
- api
- Application
- Avril
- SONT
- L'art
- article
- AS
- At
- Août
- authentifié
- Authentification
- disponibles
- support
- BE
- devenez
- était
- tous les deux
- Cassé
- Punaise
- mais
- by
- Appelez-nous
- CAN
- ne peut pas
- porter
- maisons
- cas
- CGI
- en changeant
- vérifier
- Contrôles
- puce
- client
- code
- ordinateur
- ordinateurs
- informatique
- concept
- Congrès
- configuration
- NOUS CONTACTER
- connecté
- considéré
- pourriez
- engendrent
- créée
- La création
- cryptographique
- de la cryptographie
- curieux
- Courant
- courbe
- Définit
- un
- dev
- dispositif
- Compatibles
- DID
- différent
- difficile
- directement
- handicapé
- Commande
- distributions
- do
- Documentation
- pendant
- même
- effort
- Elliptique
- enchâsser
- intégré
- activé
- permet
- l'application
- Anglais
- etc
- JAMAIS
- Chaque
- exemple
- existant
- Découvrez
- extrait
- échoue
- Fonctionnalité
- Fonctionnalités:
- Février
- Déposez votre dernière attestation
- Fichiers
- finalement
- fixé
- Abonnement
- Pour
- Test d'anglais
- Français
- de
- avenir
- générer
- GitHub
- Réservation de groupe
- Matériel
- périphérique matériel
- périphériques matériels
- Vous avez
- ici
- Comment
- How To
- HTML
- http
- HTTPS
- i
- IBM
- Identification
- if
- mis en œuvre
- l'importation
- in
- Y compris
- incompatible
- initier
- plutôt ;
- Des instructions
- interagir
- intéressé
- Interfaces
- développement
- aide
- IT
- SES
- Janvier
- Janvier 2021
- jpg
- ACTIVITES
- clés
- connu
- Ledger
- Ledger Nano
- Ledger Nano S
- Grand Livre Nano X
- moins
- comme
- Probable
- linux
- Listé
- emplacement
- perdu
- Entrée
- faire
- FAIT DU
- Fabrication
- malware
- de nombreuses
- Matériel
- largeur maximale
- Mai..
- signifier
- veux dire
- module
- PLUS
- Par ailleurs
- (en fait, presque toutes)
- beaucoup
- my
- Nommé
- nano
- nécessaire
- Besoin
- nécessaire
- Nouveauté
- nouvelles
- aucune
- maintenant
- of
- Financier
- on
- ONE
- et, finalement,
- en ligne
- or
- de commander
- Autre
- Autres
- paquet
- emballé
- Forfaits
- douloureux
- Mot de Passe
- mots de passe
- effectuer
- personnel
- Place
- plateforme
- Platon
- Intelligence des données Platon
- PlatonDonnées
- fiche
- possible
- précisément
- présentation
- présenté
- précédent
- principe
- priorité
- Privé
- Clé privée
- Clés privées
- Programmation
- Projet
- protéger
- protégé
- L'utilisation de sélénite dans un espace est un excellent moyen de neutraliser l'énergie instable ou négative.
- protocole
- fournir
- à condition de
- fournit
- public
- Clé publique
- clés publiques
- publié
- question
- lecteurs
- réal
- l'enregistrement
- libérer
- libéré
- Signalé
- conditions
- rsa
- s
- Section
- sécurisé
- en toute sécurité
- sécurité
- vu
- Septembre
- Session
- Paramétres
- plusieurs
- côté
- étapes
- So
- Logiciels
- quelques
- spécification
- caractéristiques
- Combos
- Standard
- étapes
- Étapes
- Encore
- volé
- storage
- Boutique
- stockée
- soumis
- tel
- Appareils
- combustion propre
- que
- à
- qui
- La
- L'hebdomadaire
- leur
- Les
- Là.
- donc
- l'ont
- des choses
- this
- fiable
- calendrier
- à
- Tokens
- touchant
- transition
- confiance
- Essai
- deux
- type
- Ubuntu
- comprendre
- malheureusement
- utilisé
- d'utiliser
- Utilisateur
- Expérience utilisateur
- utilisateurs
- en utilisant
- souhaitez
- était
- Façon..
- façons
- sites Internet
- hebdomadaire
- ont été
- quand
- qui
- tout en
- WHO
- avec
- sans
- écriture
- X
- années
- Oui
- zéphyrnet