https://github.com/polhenarejos/pico-fido

O projeto pico-fido transforma microcontroladores Raspberry Pi Pico ou ESP32 em um dispositivo FIDO Passkey, funcionando como uma chave USB de autenticação para login seguro em aplicativos e sites. Ele implementa os principais padrões de autenticação (CTAP 2.1, CTAP 1, WebAuthn, U2F) e inclui recursos como:

  • Suporte a extensões HMAC-Secret, CredProtect e gerenciamento de credenciais.
  • Autenticação por ECDSA e EDDSA, compatível com múltiplas curvas criptográficas (SECP256R1, SECP384R1, SECP521R1, SECP256K1 e Ed25519).
  • Detecção de presença do usuário por botão físico e verificação por PIN.
  • Suporte a chaves residentes (descobríveis), backups com 24 palavras e modo de recuperação.
  • Proteção de dados com Secure Boot e Secure Lock nos chips RP2350 e ESP32-S3, usando memória OTP para criptografia de chaves mestras.
  • Extensões como TOTP/HOTP (OATH), geração de OTP no teclado, compatibilidade com YubiKey e Nitrokey, bloqueio seguro para evitar extração de chaves caso o dispositivo seja roubado.
  • Possui firmwares prontos e instruções para compilação personalizada, permitindo definir VID/PID específicos.
  • O código é em grande parte C (60%) e Python (36%) e está licenciado sob GPL-3.0.

Limitação de segurança: O microcontrolador RP2040 não possui hardware dedicado para proteger a chave mestra, sendo mais vulnerável a extração de dados caso perdido ou roubado, ao contrário do RP2350 e do ESP32-S3, que oferecem recursos de segurança mais robustos.

O projeto é compatível com teste via pytest, utiliza bibliotecas como MbedTLS, TinyUSB e TinyCBOR, e oferece funcionalidades como interface de recuperação, personalização de LED, configuração via navegador e integração HID reconhecida por sistemas operacionais e navegadores.[1]

1 Rel. Pico Keys