🛠 Transformer la carte en clé de sécurité FIDO2 avec OpenSK
Le projet
OpenSK est l'implémentation open source (Rust, google/opensk) d'une clé d'authentification FIDO2/CTAP2. Elle tourne sur la famille nRF52840 MDK, et MakerDiary documente la construction de son propre firmware dans un billet dédié de son wiki. Le choix de la carte n'est pas dû au hasard :
- CryptoCell 310 + TrustZone : le sous-système matériel de chiffrement du nRF52840 fait les opérations de clé (ECDSA/P-256, HMAC) — c'est ce qu'exploite OpenSK pour l'attestation et les secrets résidents.
- USB natif exposé : le hub USB de la carte relie un port au contrôleur USB du SoC, qui s'énumère donc directement — indispensable pour une clé qui se présente comme périphérique HID sur le bus.
- 64 Mbit de flash QSPI externe pour le stockage des identifiants.
Étape 1 — Prérequis
rustup target add thumbv7em-none-eabihf
git clone https://github.com/google/opensk
cd opensk
La toolchain attendue (version Rust, outils de signature) est listée dans le README du dépôt ; suivez le billet MakerDiary « Building your own OpenSK firmware » pour les étapes propres à la carte.
Étape 2 — Compiler le firmware
Le build OpenSK produit une image d'application signée (le dépôt fournit les outils de packaging, historiquement makeelf). La commande exacte et les variables de provisioning d'attestation figurent dans le README et le guide MakerDiary — ne les inventez pas : l'attestation par défaut d'un build perso est auto-signée.
# principe (détails et flags : README opensk + billet MakerDiary)
cargo +nightly build --release --target thumbv7em-none-eabihf \
--features ... # cible la carte, voir le guide
Étape 3 — Flasher sans se briquer
- Carte à broches (MDK V1.0) : le firmware final se programme par glisser-déposer de l'hex sur le lecteur
DAPLINK, puis bouton Boot/Reset. Aucune manipulation de bootloader nécessaire. - Variante USB Dongle : elle est livrée avec un bootloader UF2, mais le DevZone Nordic documente des appareils briqués après re-flash de l'hex du bootloader via le lecteur — ne touchez au bootloader que si la procédure officielle l'exige explicitement.
Étape 4 — Tester la clé
- Branchez la carte : elle s'énumère en HID FIDO (le port USB natif, pas le DAPLink).
- Inscrivez-la sur un service compatible WebAuthn (GitHub, Google, un serveur passkey de test) : la LED RGB sert d'indicateur de présence — la toucher valide l'opération.
- Vérifiez le PIN configuré et les contre-signatures ; les logs de développement passent par le port CDC du DAPLink.
Limites honnêtes
- Un build maison a une attestation auto-signée : parfaite pour apprendre et pour l'auto-hébergement, pas pour imposer de l'attestation forte en entreprise.
- Pas de secure element certifié côté MDK grand public : considérez la carte comme une plateforme de développement, pas comme un HSM.
- Le projet bouge : épinglez un tag release d'OpenSK et gardez la release en regard du guide MakerDiary.