🛠 Transformer la carte en clé de sécurité FIDO2 avec OpenSK
El proyecto
OpenSK es la implementación de código abierto (Rust, google/opensk) de una llave de autenticación FIDO2/CTAP2. Funciona en la familia nRF52840 MDK, y MakerDiary documenta la construcción de su propio firmware en una entrada dedicada de su wiki. La elección de la placa no es casual:
- CryptoCell 310 + TrustZone: el subsistema de cifrado por hardware del nRF52840 realiza las operaciones de clave (ECDSA/P-256, HMAC) — es lo que aprovecha OpenSK para la atestación y los secretos residentes.
- USB nativo expuesto: el hub USB de la placa conecta un puerto al controlador USB del SoC, que por tanto se enumera directamente — indispensable para una llave que se presenta como dispositivo HID en el bus.
- 64 Mbit de flash QSPI externa para el almacenamiento de las credenciales.
Paso 1 — Requisitos previos
rustup target add thumbv7em-none-eabihf
git clone https://github.com/google/opensk
cd opensk
La toolchain esperada (versión de Rust, herramientas de firma) está listada en el README del repositorio; siga la entrada de MakerDiary « Building your own OpenSK firmware » para los pasos específicos de la placa.
Paso 2 — Compilar el firmware
La compilación de OpenSK produce una imagen de aplicación firmada (el repositorio proporciona las herramientas de empaquetado, históricamente makeelf). El comando exacto y las variables de aprovisionamiento de atestación figuran en el README y en la guía de MakerDiary — no los invente: la atestación predeterminada de una compilación propia es autofirmada.
# principe (détails et flags : README opensk + billet MakerDiary)
cargo +nightly build --release --target thumbv7em-none-eabihf \
--features ... # cible la carte, voir le guide
Paso 3 — Flashear sin bloquear el dispositivo
- Placa con pines (MDK V1.0): el firmware final se programa arrastrando y soltando el archivo hex en la unidad
DAPLINK, y luego pulsando el botón Boot/Reset. No es necesario manipular el bootloader. - Variante USB Dongle: viene con un bootloader UF2, pero el DevZone de Nordic documenta dispositivos bloqueados tras reflashear el hex del bootloader a través de la unidad — no toque el bootloader salvo que el procedimiento oficial lo exija explícitamente.
Paso 4 — Probar la llave
- Conecte la placa: se enumera como HID FIDO (el puerto USB nativo, no el DAPLink).
- Regístrela en un servicio compatible con WebAuthn (GitHub, Google, un servidor de prueba de passkeys): el LED RGB sirve como indicador de presencia — tocarlo valida la operación.
- Verifique el PIN configurado y las firmas adicionales; los registros de desarrollo pasan por el puerto CDC del DAPLink.
Limitaciones honestas
- Una compilación casera tiene una atestación autofirmada: perfecta para aprender y para el autoalojamiento, pero no para imponer una atestación fuerte en entornos empresariales.
- No hay un elemento seguro certificado en la MDK de consumo: considere la placa como una plataforma de desarrollo, no como un HSM.
- El proyecto evoluciona: fije un tag de versión de OpenSK y mantenga la versión en consonancia con la guía de MakerDiary.