Existe uma maneira de criptografar arquivos únicos com um Yubikey que não usa OpenPGP?
Eu uso meu Yubikey para logins ssh e criptografia de arquivos individuais (armazenamento de senhas). O Yubikey está operando apenas no modo CCID (atualmente não uso OTP ou U2F).
Até agora tenho usado meu Yubikey como um cartão inteligente OpenPGP junto com:
gpg-agent --enable-ssh-support
para suporte ssh; e- Plug-in gnupg.vimpara criptografar arquivos.
O GnuPG é desajeitado, não confiável e difícil de criar scripts. Gostaria de parar de usar o Yubikey neste modo.
Eu tenho outro Yubikey configurado como um cartão inteligente NIST PIV. Eu uso o suporte PKCS11 do OpenSSH e um agente ssh regular. Isto é muito mais confiável que as ferramentas gpg, masnão fornece suporte para criptografia de arquivo individual.
A meu ver, existem algumas opções possíveis para usar um cartão inteligente PIV para criptografia de arquivos individuais:
- algum tipo de
ssh-agent
+vim
hack? - talvez haja uma ferramenta de criptografia de arquivos baseada em PKCS11?
- usando um dos outros slots no yubikey para criptografia de arquivos, talvez com OpenSC ou alguma coisa do libccid?
- gerenciador de senhas de código aberto que conversa diretamente com o Yubikey?
Responder1
Aqui está um script python que escrevi para automatizar o seguinte processo:
Para criptografar, o protocolo de transmissão do agente ssh (veja orascunho de RFCpara obter detalhes) permite assinar dados arbitrários com uma chave privada, então:
- escolha um número aleatório
- peça ao ssh-agent para assiná-lo
- use a assinatura para derivar uma chave simétrica
- criptografe seus dados com a chave simétrica
- salve o número aleatório e os dados criptografados (mas não a chave simétrica) no disco
e para descriptografar:
- leia o número aleatório e os dados criptografados do disco
- peça ao ssh-agent para assinar o número aleatório
- use a assinatura para derivar a mesma chave simétrica usada para criptografar os dados
- descriptografar os dados!