Criptografia de arquivos Yubikey sem usar o OpenPGP?

3

Existe uma maneira de criptografar arquivos únicos com um Yubikey que não usa o OpenPGP?

Eu uso meu Yubikey para logins ssh e criptografar arquivos individuais (armazenamentos de senhas). O Yubikey está operando apenas no modo CCID (atualmente não uso OTP ou U2F). Todas as operações requerem o teste de presença física.

Até agora eu tenho usado meu Yubikey como um cartão inteligente OpenPGP junto com:

  • gpg-agent --enable-ssh-support para suporte ssh; e
  • plug-in gnupg.vim para criptografar arquivos.

O GnuPG é desajeitado, pouco confiável e difícil de criar scripts. Eu gostaria de parar de usar o Yubikey neste modo.

Eu tenho outro Yubikey que está configurado como um cartão inteligente NIST PIV. Eu uso o suporte PKCS11 do OpenSSH e um agente ssh regular. Isso é muito mais confiável do que as ferramentas gpg, mas não oferece suporte a criptografia de arquivos individuais .

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 perfeita?
  • usando um dos outros slots no yubikey para criptografia de arquivos, talvez com OpenSC ou alguma coisa de libccid?
  • gerenciador de senhas de código aberto que fala diretamente com o Yubikey?
por batty_assembly 25.05.2017 / 15:16

1 resposta

0

Aqui está um script python que escrevi para automatizar o seguinte processo:

Para criptografar, o protocolo do ssh-agent (consulte o RFC rascunho para detalhes) permite que você assine 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
  • criptografar 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 de volta do disco
  • solicite 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!
por 29.05.2017 / 15:12