Questão criptografia simétrica gpg usando canos


Eu estou tentando gerar chaves para bloquear minha unidade (usando DM-Crypt com LUKS) puxando dados de /dev/random e depois criptografando isso usando o GPG.

No guia que estou usando, sugere o uso do seguinte comando:

dd if=/dev/random count=1 | gpg --symmetric -a >./[drive]_key.gpg

Se você fizer isso sem um pipe, e alimentá-lo com um arquivo, ele irá aparecer um aviso de (n?) Curses para você digitar uma senha. No entanto, quando canalizo os dados, ele repete a mensagem a seguir quatro vezes e fica congelado:

pinentry-curses: no LC_CTYPE known assuming UTF-8

Também diz can't connect to '/root/.gnupg/S.gpg-agent': File or directory doesn't exist, no entanto, estou assumindo que isso não tem nada a ver com isso, já que aparece mesmo quando a entrada é de um arquivo.

Então, eu acho que minha pergunta se resume a isto: existe uma maneira de forçar o gpg a aceitar a senha da linha de comando, ou de alguma outra maneira fazer com que isso funcione, ou eu terei que escrever os dados de /dev/random para um arquivo temporário e, em seguida, criptografar esse arquivo? (Que, até onde eu sei, deve ficar bem, devido ao fato de que estou fazendo isso no LiveCD e ainda não criei a troca, então não deve haver uma maneira de gravar no disco.)


4


origem


gpg's --no-use-agent deve dizer ao gpg para não usar um programa de agente, e aceitar a senha digitada no terminal ... pelo menos em gpg 1.x, essa versão ainda parece ser usada nos lançamentos atuais do Ubuntu & Mint - Xen2050


Respostas:


Certifique-se de possuir o tty:

# ls -l $(tty)
crw--w----. 1 foo tty 136, 0 Mar  1 16:53 /dev/pts/0
# chown root $(tty)

Definir GPG_TTY:

# export GPG_TTY=$(tty)

O gpg / pinentry deve funcionar após essas etapas.


10



Muito obrigado! Isso me ajudou a canalizar gpg manualmente, e também consertou um problema que eu estava tendo com o cliente de linha de comando keybase que canaliza para gpg nos bastidores. - ajk


Bem ... no final, eu decidi apenas escrever em um arquivo, e então criptografar esse arquivo, assumindo que como não havia swap, e o sistema de arquivos estava em memória ram, ele morreria com o próximo desligamento.

No entanto, para a referência de qualquer um que encontrar essa questão (e cimentar a idéia na minha cabeça), vou escrever um procedimento que achei que iria funcionar muito tempo depois que eu descobri ao criar o initramfs.

O que você precisa fazer é voltar para uma versão do gpg antes de começar a usar o programa de pinagem externo para entrada de senha. Tanto quanto eu sei, isso aconteceu com a versão 2. Supondo que você tem uma instalação Linux atualmente em funcionamento, você vai querer obter uma versão estaticamente compilada do gpg <2.0.

Isso é extremamente fácil de fazer com o Gentoo, exigindo apenas o seguinte comando:

USE="static" emerge -a1 "<gnupg-2"

Apenas certifique-se de usar ldd para confirmar que eles estão de fato estáticos antes de copiá-los para o seu pen drive para que você possa usá-los durante a instalação.

Em outras distribuições, sugiro que você olhe para @ seu gerenciador de pacotes e, se isso não funcionar, tente baixar os fontes e compilar a partir deles.


3