URL: https://linuxfr.org/users/acatton/journaux/cles-de-securite-pas-assez-utilisees Title: Clés de sécurité, pas assez utilisées Authors: Antoine Catton Date: 2022年09月16日T23:56:30+02:00 License: CC By-SA Tags: u2f, yubikey, webauthn et fido Score: 53 Cher Journal, J'ai cherché un peu sur LinuxFR, et j'ai l'impression qu'on en parle presque pas ici... Les clés de sécurité, HSM, U2F, FIDO2 YubiKey, WebAuthn,... Tout ça c'est des nom différents pour designer à peu près ça: ![Photos avec plusieurs clés de sécurité](https://cdn.vox-cdn.com/thumbor/W4iHoyJFWhHbuFS6AYmk4HVZdSs=/0x0:2040x1360/2400x1356/filters:focal(1046x813:1047x814)/cdn.vox-cdn.com/uploads/chorus_asset/file/14155906/akrales_190220_3226_0003.jpg) En gros, ça ressemble à une clé USB et ça permet l'authentification forte. Le cas typique pour le particulier ou la grande entreprise c'est la connexion à un site web. Le standard c'est [WebAuthn](https://fr.wikipedia.org/wiki/WebAuthn), supporté nativement par Firefox sur Linux, mais aussi la majorité des autres navigateurs basés sur [moteur de rendu Blink](https://fr.wikipedia.org/wiki/Blink_(moteur_de_rendu)). (Chromium, Brave, et j'en passe des logiciel fermés) Ça marche même sur Smartphone avec des clés qui ont des embouts USB-C ou en utilisant les ondes avec NFC. Si t'es auteur de site web, il y a [un site en anglois qui explique comment mettre ça en place](https://webauthn.io/). Beaucoup de sites important fonctionnent avec ce type authentification forte. _Google_ et _Twitter_ sont surement les plus gros. Mais aussi beaucoup de plateformes de développement comment _Github_ et [_Codeberg_](https://codeberg.org/). N'oublions pas plusieurs fournisseurs de services dans le nuage ou de noms de domaines comme les gros _AWS_ et _Azure_, ou encore chez nous _OVH_, _Gandi_, et j'en passe. (Malheureusement rien chez _Scaleway_ et _Hetzner_...) # Comment ça marche? La première fois que tu te connectes à un site (par exemple: `example.net`), le site te demande d'enregistrer ta clé. Il te demande de toucher ta clé pour l'activer. Une fois touchée, la clé s'allume pour confirmer le contact. Et le site te confirme l'enregistrement de ta clé. Après ça, la prochaine fois que tu veux te connecter à `example.net`, après le formulaire où tu as entré ton mot de passe, `example.net` te demande de toucher ta clé pour confirmer la connexion. # Qu'est-ce que se passe derrière? Au moment de l'inscription, quand `example.net` te demande d'enregistrer ta clé, `example.net` envoie à ta clé de sécurité:> example.net> chaine_aléatoire À ce moment là, ta clé attend d'être touchée pour confirmer la requête. Une fois confirmée par ton doigt, la clé de sécurité créé une paire de clés de chiffrement publique/privée et un identifiant pour `example.net`. Après ça, ta clé de sécurité répond à `example.net`:> clé_de_chiffrement_publique> identifiant> SIGNATURE(chaine_aléatoire, clé_de_chiffrement_privée) Après, quand tu veux te connecter. Une fois ton mot de passe entré, `example.net` envoie à ta clé:> identifiant> autre_chaine_aléatoire Ta clé répond au site, après que tu aies confirmé avec ton doigt:> SIGNATURE(autre_chaine_aléatoire, clé_de_chiffrement_privé) Le site n'a plus qu'à vérifier la signature avec la clé de chiffrement publique qu'il a reçu au moment de l'enregistrement. **Cela veux dire que pour se connecter à `example.net`, un pirate a besoin d'un accès physique à ta clé de sécurité. Car les clés de chiffrement ne sont conservées que sur ta clé de sécurité et ne peuvent pas être transférées sur ton ordinateur.** Les clés de sécurité assurent donc une sécurité de "qualité militaire" (« _military-grade encryption_ » comme disent les américains qui ont la classe) Aussi, les clés de chiffrement sont spécifiques à un site et domaine, donc on ne peux pas te suivre si tu utilises la même clé de sécurité pour plusieurs sites ou domaines. Si Twitter et ton site porno préféré échangent leur informations, ils ne peuvent pas savoir que c'est la même clé de sécurité utilisée entre tes deux comptes sur ces deux sites respectifs. # Autres utilisations Le truc, c'est que les clés de sécurité ajoutent un couche de sécurité non-négligeable au web. Mais pas que!! Aujourd'hui tu peux utiliser ta clé de sécurité pour sécuriser ton serveur SSH. Avec OpenSSH 8.2+ et une YubiKey (qui gère l’entièreté du protocole FIDO2. C'est le protocole USB qu'utilise le navigateur pour communiquer avec la clé USB), t'as juste à faire un simple: ``` ssh-keygen -t ed25519-sk -f ~/.ssh/cle_ssh_qui_utilise_la_cle_de_security ``` Et t'as plus qu'a forcer ton serveur SSH à n'autoriser que l'authentification par clé SSH, et à utiliser cette clé SSH dans ton `authorized_keys` sur ton serveur. Et ton client SSH te demandera de toucher ta clé de sécurité pour déchiffrer ta clé SSH à la prochaine connexion. [Tu peux aussi utiliser un clé de sécurité pour chiffrer et déchiffrer ton disque dur.](https://github.com/agherzan/yubikey-full-disk-encryption) Tu peux utiliser `fido2-tools` sur Fedora pour générer et conserver des clés de chiffrement sur ta clé de sécurité, comme ils font dans les banques avec [une carte PCIe à plusieurs dizaines de milliers d'euros](https://fr.wikipedia.org/wiki/Hardware_Security_Module). # L'appareil en lui même À la fin, tu dois te demander: « Mais combien ça coûte tout ça? Et c'est proprio? » Hé, bein... Pas super cher, et pas forcément. Pas super cher, c'est relatif, mais ça coûte beaucoup moins qu'un plein d'essence ces jours ci. Faut compter dans les 30€ pour les moins cher mais fiables, à 75€ pour celle qui ont des fonctionnalités supplémentaires. Je ne met pas de lien, sinon je vais me retrouver avec une amende pour placement de produits non déclaré. Mais tu peux trouver tout ça avec ton moteur de recherche préféré. Dans les proprios, la meilleures de loin c'est la YubiKey. Google aussi vend sa propre clé pour ses clients Google Cloud, la "Titan Key" qui marche parfaitement avec les téléphones qui font tourner Android. Dans le matériel libre, il y a la SoloKey qui est la moins chère. Et elle est dispo en version "miniature" (ils appellent ça la "SOMU"). Cette version est tellement petite qu'elle fait la taille d'un port USB. Donc on peut la glisser dans un port USB inutilisé, et la laisser sans qu'elle ne ressorte. Quand il y a besoin de l'activer il y a juste à toucher le port USB, elle est là à ta disposition. Dans le libre il y a aussi la NitroKey, fabriquée en Europe, ils vendent beaucoup de versions. Certaines sont compatible avec GnuPG pour remplacer [les cartes à puces](http://www.g10code.com/p-card.html). Fait attention à bien prendre celle qui a le support "U2F" ou "FIDO2". Par contre, j'en ai une de Nitrokey et je n'arrive pas à la faire marcher avec SSH, juste pour info. (Sur github, les dev disent que c'est pas une priorité. Mais il y a un fork du logiciel interne avec le support SSH. Malheureusement, cela ne peut pas être mis à jour sur les clés de sécurité de production, vu qu'elle ont un dispositif anti-crochetage pour une raison valide.) C'est tout pour cette semaine. N'hésite pas si t'as des questions. À la prochaine.

AltStyle によって変換されたページ (->オリジナル) /