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]