>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Rust

Comment transformer une carte à 5 $ en clé de sécurité matérielle

Les clés matérielles comme la YubiKey coûtent entre 50 et 100 $, et pour la fiabilité, vous finissez généralement par en acheter deux. Si vous voulez simplement sécuriser un serveur domestique, signer des commits Git via un module matériel, ou essayer la connexion sans mot de passe via Passkeys, le prix fait mal. Récemment, je suis tombé sur un projet appelé RS-Key qui résout ce problème de manière étonnamment élégante.

Diagramme de fonctionnement de RS-Key

Le projet transforme n'importe quelle carte basée sur le microcontrôleur Raspberry Pi RP2350 en un jeton USB complet. Il suffit de télécharger un binaire prêt à l'emploi et de le déposer sur la carte comme un lecteur flash ordinaire. Aucune soudure, aucun programmateur ou compilation depuis les sources requis.

Ce qu'il y a dans le micrologiciel

RS-Key est écrit en Rust sans la bibliothèque standard (no_std) et émule un périphérique USB composite. Lorsque vous branchez la carte sur un ordinateur, le système voit plusieurs interfaces à la fois : FIDO HID pour l'authentification web, une carte à puce CCID et un clavier.

Options de cartes pour RS-Key

Voici ce que ce petit micrologiciel peut faire :

  • FIDO2 et WebAuthn. Prend en charge la connexion par Passkey dans les navigateurs, l'authentification à deux facteurs et les clés SSH matérielles comme ed25519-sk. La confirmation de présence physique fonctionne via le bouton BOOT standard de la carte.
  • Carte à puce OpenPGP 3.4. Stocke les clés pour signer les commits dans git, chiffrer et déchiffrer des fichiers via gpg. Prend en charge RSA et les courbes elliptiques.
  • PIV et OATH. Implémente les normes de carte à puce X.509 et génère des codes à usage unique TOTP et HOTP. Avec une version spéciale qui usurpe le VID/PID, l'appareil est reconnu par les utilitaires Yubico standard comme ykman.
  • Sauvegarde de graine. La clé maître FIDO peut être exportée sous forme de phrase mnémotechnique BIP-39 ou SLIP-39 pour restaurer l'accès en cas de perte de la carte.
  • Cryptographie post-quantique expérimentale. L'auteur a intégré les schémas ML-DSA-44 et ML-DSA-65, en optimisant l'utilisation de la pile pour la mémoire du RP2350.

Comment démarrer en quelques minutes

Le processus de première mise en route est simple. Prenez n'importe quelle carte basée sur le RP2350 (par exemple, Waveshare RP2350-One ou Seeed XIAO RP2350) et suivez quatre étapes :

  1. Téléchargez le fichier rs-key-<версия>-default.uf2 depuis l'onglet releases du dépôt.
  2. Maintenez le bouton BOOT de la carte enfoncé et branchez-la sur le port USB de votre ordinateur. Un lecteur nommé RP2350 apparaîtra dans le système.
  3. Copiez le fichier .uf2 sur ce lecteur. La carte redémarrera immédiatement en mode clé de sécurité.
  4. Ouvrez le site de test webauthn.io, essayez d'enregistrer une nouvelle clé, définissez un code PIN et appuyez sur le bouton BOOT pour confirmer le toucher.

Pour les amateurs d'appareils avec écran, il existe une version distincte pour la carte Waveshare RP2350-Touch-LCD. Dans ce cas, la confirmation de connexion et la saisie du PIN se font directement sur l'écran de l'appareil.

Démo du fonctionnement de l'écran

Configuration et logiciel hôte

Pour gérer la clé depuis le terminal, le dépôt inclut un utilitaire Python rsk et un tableau de bord rsk-tui. Ceux-ci vous permettent de voir l'état de l'appareil, de modifier les paramètres LED, de générer des sauvegardes et de gérer les emplacements.

Si la console n'est pas votre truc, le projet tiers PicoForge fournit une interface graphique complète pour configurer tous les modules RS-Key.

Interface PicoForge

Pour les développeurs qui n'ont pas encore de puce RP2350 sous la main, il y a un émulateur dans le dossier tools/emu. Il exécute la logique du micrologiciel directement sur votre PC via des sockets ou un USB virtuel Linux (USB/IP), ce qui aide à tester les intégrations sans matériel physique.

Limitations et modèle de menace

L'auteur du projet avertit honnêtement dans la documentation : le RP2350 est un microcontrôleur à usage général, pas une puce de sécurité certifiée (Secure Element).

Si votre adversaire potentiel dispose d'un laboratoire avec du matériel pour la délamination du silicium, la probing de bus ou l'injection de fautes par analyse de consommation, la puce ne résistera pas. RS-Key ne protégera pas contre la décapsulation de puces au niveau laboratoire.

Cependant, la puce RP2350 dispose bien de fusibles OTP (programmables une seule fois) et de Secure Boot. Le dépôt documente un processus détaillé pour verrouiller le micrologiciel en dur, où la clé maître est brûlée dans l'OTP et le démarrage n'est autorisé que pour les binaires signés par vous. Cela rend une simple extraction de mémoire flash inutile si la clé est volée, mais l'opération de brûlage des fusibles est irréversible.

À qui ce projet sera utile

RS-Key est idéal pour les tâches quotidiennes des développeurs :

  • Signer des commits et des tags Git sans risquer la fuite de la clé privée du disque de votre ordinateur portable.
  • Accéder aux serveurs via SSH avec confirmation matérielle via ed25519-sk.
  • Deuxième facteur pour les labs domestiques, les comptes GitHub ou les e-mails.
  • Apprendre comment CTAP2, WebAuthn et les protocoles de carte à puce fonctionnent à travers du vrai code Rust.

Si vous avez besoin d'un jeton abordable pour le travail ou une configuration de lab domestique, la combinaison d'une carte RP2350 bon marché et du micrologiciel RS-Key offre un excellent rapport qualité-prix. Lui faire confiance pour des secrets d'entreprise face à des menaces de niveau étatique n'est pas recommandé, mais en tant qu'outil pratique pour développeurs, le projet mérite définitivement une place sur votre trousseau de clés.

Projets similaires