Criptografia de arquivos Yubikey sem usar OpenPGP?

Criptografia de arquivos Yubikey sem usar OpenPGP?

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-supportpara 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+ vimhack?
  • 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!

informação relacionada