gpg criptografia simétrica usando pipes

4

Estou tentando gerar chaves para bloquear minha unidade (usando o DM-Crypt com o LUKS) puxando dados de /dev/random e, em seguida, criptografando isso usando GPG.

No guia que estou usando, ele 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

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

Então, eu acho que minha pergunta se resume a isso: 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.)

    
por Thomas 03.06.2010 / 05:49

2 respostas

3

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, que ele morreria com o próximo desligamento .

No entanto, para a referência de qualquer um que encontrar esta 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 quando criei o initramfs.

O que você precisa fazer é voltar para uma versão do gpg antes de começar a usar o programa de pinagem externa 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 compilada estaticamente 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 se eles são estáticos antes de copiá-los no seu pen drive para 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.

    
por 12.06.2010 / 01:13
10

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)

Defina GPG_TTY:

# export GPG_TTY=$(tty)

gpg / pinentry deve funcionar após essas etapas.

    
por 18.07.2012 / 22:25