Secretive stocke les clés SSH dans l’enclave sécurisée de votre Mac

Nicolas Furno |

Secretive est une nouvelle app qui intéressera une petite audience, mais c’est peut-être votre cas. Seuls les Mac équipés d’une puce T2 et donc d’une enclave sécurisée, c’est-à-dire les portables avec Touch ID, l’iMac Pro, le Mac Pro de 2019 et les Mac Mini à partir de 2018, peuvent utiliser l’app1. Par ailleurs, elle n’aura d’intérêt que si vous utilisez des clés SSH au quotidien, puisque son rôle est de les stocker dans l’enclave.

Les clés SSH servent à se connecter à un serveur distant. C’est la méthode recommandée aujourd’hui à la place des mots de passe. L’idée est de générer sur votre ordinateur local deux clés de chiffrement uniques : l’une, publique, sera copiée sur le serveur distant quand l’autre, privée, doit rester sur l’ordinateur. Lors de la connexion, le serveur dispose d’une liste de clés SSH qui identifient les ordinateurs autorisés et la connexion ne se fait que si la clé publique du serveur et la clé privée de l’ordinateur sont présentes.

C’est une information naturellement sensible, puisque si quelqu’un met la main sur votre clé SSH privée, il pourra se connecter à tous les serveurs distants associés sans limite. En temps normal, les clés SSH ne sont pas forcément sécurisées2, elles sont stockées dans un dossier caché de votre dossier personnel (~/.ssh) et si quelqu’un a accès à votre Mac, il aura aussi accès aux clés. Avec Secretive, l’information est déplacée dans l’enclave sécurisée qui est chiffrée et inaccessible sans le mot de passe de la session.

Secretive ne se contente pas de déplacer les clés SSH dans l’enclave sécurisée, l’app propose une interface de gestion pour ajouter et supprimer des clés, ou encore les ajouter au presse-papier. Sur les Mac avec un capteur Touch ID, l’accès aux données peut se faire avec lecture d’empreintes, vous pouvez aussi utiliser une Apple Watch ou à défaut saisir le mot de passe de votre session. Mieux vaut une méthode plus simple toutefois, puisque l’opération d’authentification devra être effectuée à chaque utilisation des clés, dans le terminal, mais aussi dans un client Git, par exemple.

Par sécurité, Secretive affiche une notification à chaque fois que les clés SSH sont utilisées.

Il faut avoir confiance pour donner ainsi accès à toutes ses clés SSH à un développeur tiers. Secretive est une app gratuite et surtout open-source, vous pouvez ainsi vérifier ce qu’elle fait précisément en consultant son code source. Son développeur prend le sujet de la sécurité très au sérieux, il fournit notamment un log complet de chaque version proposée au téléchargement et vous pouvez le contacter directement si une faille de sécurité a été découverte dans son code.

Secretive n’est proposée qu’en anglais et macOS 10.15 est nécessaire pour l’installer.


  1. Techniquement, vous pouvez aussi utiliser l’app sans puce T2, à condition d’avoir une clé USB sécurisée, comme une YubiKey.  ↩

  2. Il est possible de définir un mot de passe lors de leur création, ce qui ajoute une couche de sécurité.  ↩

avatar louik | 

Moi j’utilise SeKey: https://github.com/sekey/sekey
En ligne de commande. Qui génère des clefs dans la puce t2.
Attention en cas de soucis de ce genre d’utilitaire. Si on réinitialise TouchID, l’enclave est remise à zéro.
Toujours garder une 2e possibilité d’entrée ( genre mot de passe super long.)

avatar simchaba | 

On peut aussi appliquer un mot de passe à sa clé privée donc pour l'utiliser il faut entrer avant ce mot de passe qu'on aura défini. Donc si un pirate récupère le contenu du dossier ~/.ssh, il ne pourra pas utiliser les clés privées sans connaitre les mots de passes de ces clés.

avatar ney | 

Quelle capacité de stockage a l’enclave sécurisée ?

avatar Avenger | 

Question débile...
Si c'est si facile pour une application tierce d'utiliser l'enclave sécurisée... en quoi elle est sécurisée?

avatar Sindanárië | 

@Avenger

🤔

🧐

😱

🕳

avatar pocketjpaul | 

La partie sur le fonctionnement des clés est en partie fausse.

Les clés SSH générées sont un couple clé privée / clé publique. Le serveur distant n’a que la clé publique. La clé privée reste sur le client. Ainsi un serveur compromis n’expose jamais une clé privée.

Il est possible de protéger sa clé privée avec un mot de passe (Qui lui sera protégé par la puce T2) ou un device externe (yubikey...). Ça l’avantage d’être aussi sécurisé mais plus universel.

avatar Nicolas Furno | 

@pocketjpaul

En effet, j'ai voulu simplifier mais c'est plus compliqué que ça. J'ai revu ce paragraphe, j'espère ne pas avoir fait d'erreur en simplifiant les choses.

avatar Guillaume77 | 

Bonjour,

Dans l’article, la dernière photo est une capture du terminal configuré assez joliment je trouve ( chemin répertoire)

Comment on fait pour le configurer de la sorte ?

avatar Eyquem | 

@Guillaume77

C’est fait avec le Shell zsh et l’outil « oh-my-zsh » qui propose des thèmes et pleins d’autres options. Probablement qu’il utilise aussi iterm, bien meilleur que le terminal de base !

avatar BeePotato | 

« Il faut avoir confiance pour donner ainsi accès à toutes ses clés SSH à un développeur tiers. »

Notons que tous les logiciels non sandboxés écrits par des développeurs tiers ont déjà accès à ces clefs, en allant les lire dans ~/.ssh. La confiance est donc déjà là en temps normal.

avatar Nicolas Furno | 

@BeePotato

C'est pas faux, mais disons que c'est encore plus évident pour une app chargée de gérer les clés SSH…

avatar emilien43700@gmail.com | 

@nicolasf

Bonjour,

Comment fait-on pour installer et lancer l’application ? 😅
Merci

avatar Nicolas Furno | 

@emilien43700@gmail.com

L'app est disponible ici : https://github.com/maxgoedjen/secretive/releases

Prenez le zip de la dernière version et à l'intérieur vous trouverez l'app à déplacer dans le dossier des applications, comme d'habitude.

avatar emilien43700@gmail.com | 

@nicolasf

Merci beaucoup! J’avais en fait téléchargé le source code...😅 Bonne journée

avatar ckone35 | 

Petite question n’ayant pas de puce T2 je ne peux pas tester, est-il bien impossible de sortir la clé privée ? Sous entendu est ce bien la puce T2 qui gère la partie SSH ? Un peu comme une smart card quoi ....

avatar hirtrey | 

Il est possible d’utiliser le trousseau aussi.

avatar banneliv | 

Pourquoi faut-il une puce T2 au minimum ?
La puce T1 n'a-t-elle pas une enclave de sécurité et Touch ID ?

avatar banneliv | 

@nicolasf , j'ai testé avec un mac doté d'une puce T1 et ai obtenu le fonctionnement voulu.

CONNEXION UTILISATEUR