Também disponível em inglês: ykoxide: my YubiKey toolbox, rewritten as a single Rust binary.
Na série sobre YubiKey eu saí do 2FA por obrigação, passei por sudo, SSH e GPG, e acabei na criptografia de arquivos com age. Os scripts daquela fase ficaram no yubikey-shell-toolkit. Funcionam, mas dependem de ykman, age e openssl instalados.
O ykoxide é a reescrita em Rust: um único binário, o ykox, sem nenhuma dessas dependências em tempo de execução. Ele lê os arquivos e a configuração que os scripts criaram, então o que você já criptografou continua abrindo.
O que ele faz
- age em um slot PIV, interoperável com o
age-plugin-yubikey, nos dois sentidos - criptografia de arquivo com o slot OTP em HMAC-SHA1 challenge-response
- criptografia de arquivo com FIDO2
hmac-secret(experimental) - assinatura SSHSIG, com chave FIDO2 (
sk) ou slot PIV, verificável comssh-keygen -Y verify - relatório do dispositivo e backup da configuração em JSON, sem segredos
O uso básico:
ykox info # a chave foi detectada?
ykox age setup # extrai (ou gera) a identidade age da chave
ykox age encrypt secret.txt # secret.txt.age
ykox age decrypt secret.txt.age
ykox sign report.pdf # report.pdf.sig
Com mais de uma YubiKey conectada, --serial <N> escolhe qual usar. A exceção é o FIDO2, cuja interface HID não informa o serial.
Instalação
cargo install ykoxide --locked # compila do fonte
cargo binstall ykoxide # baixa o binário do release
Os tarballs para Linux x86_64 e aarch64 também estão nos releases, com SHA256SUMS e, a partir da 0.1.1, atestado de proveniência do build. As tags são assinadas com GPG.
Em tempo de execução precisa do pcscd rodando (sudo systemctl enable --now pcscd.socket). No Arch, instale também pcsclite e ccid; no Fedora, pcsc-lite e pcsc-lite-ccid. Para compilar, os headers de PC/SC e udev.
O que foi testado
Ainda é pré-1.0, e o README diz com todas as letras o que foi exercitado em hardware:
- Sistemas: Fedora 44 e Omarchy 4.0.3 (base Arch), ambos x86_64.
- Chaves: YubiKey 5 NFC (firmware 5.2.6) e YubiKey 5C (firmware 5.4.3).
- Conferido contra as ferramentas de referência: os arquivos age interoperam com o
age-plugin-yubikey, a resposta HMAC bate com oykman otp calculatee os arquivos.yk.encdo toolkit antigo decifram. - O FIDO2 só funciona de ponta a ponta a partir da 0.1.2. As versões anteriores falhavam com
CTAP2_ERR_UNSUPPORTED_OPTIONem tokens sem verificação de usuário própria, o que inclui a série 5. O formato é próprio doykoxe não interopera com oage-plugin-fido2-hmac. - Não foram exercitados em hardware:
age setup --generate, uma Security Key e o aarch64 com chave (o binário é compilado e testado no CI, mas nunca rodou contra uma).
Dois avisos de segurança que valem repetir aqui. O ykox protege o material de chave, não o texto claro: malware no host que lê o arquivo já decifrado continua sendo problema seu. E o formato legado .yk.enc não é autenticado, uma chave errada passa uma vez em 256. Prefira sempre o .yk.age.
A série de YubiKey no blog
Se chegou aqui sem o contexto, a ordem é esta:
- YubiKey #1 - Introdução ao 2FA
- YubiKey #2 - Linux Instalação
- YubiKey #3 - 2FA console terminal, ssh e sudo
- YubiKey #4 - Openssh com yubikey + ed25519
- YubiKey #5 - chaves GPG
- YubiKey na Programação: Guia Completo para SRE, DevOps e Sysadmin
- YubiKey: compilado (com criptografia, Linux e o que mudou de lá para cá)
- age: criptografia de arquivos simples, moderna e segura
- age + yubikey
Em inglês:
- The Ultimate YubiKey Guide and Setup for Linux
- Beyond GPG: Hardware-Backed File Encryption with age and YubiKey
O código está em github.com/Esl1h/ykoxide e o pacote em crates.io. Licença MIT.
