Skip to content
אצלי
Go back

ykoxide: a minha caixa de ferramentas da YubiKey virou um binário em Rust

Close-up de uma mão segurando uma chave comum de cabeça preta, com uma pequena chave de segurança USB preta, de ícone de chave e contatos dourados, presa ao mesmo chaveiro, sobre um fundo cinza claro
Foto de cottonbro studio na Pexels

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

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:

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:

Em inglês:

O código está em github.com/Esl1h/ykoxide e o pacote em crates.io. Licença MIT.


Share this post on:

Previous Post
ykoxide: my YubiKey toolbox, rewritten as a single Rust binary
Next Post
dnsbench: which DNS resolver is fastest on your connection, and which CDN it sends you to