Frase secreta GPG + criptografia vinculada Chave Secreta

2

Eu estou procurando ajuda para descobrir como amarrar uma chave secreta com uma senha para criptografar um arquivo usando GPG. Eu tinha testado muitas opções (- encrypt, --sign, --recipient, --symmetric, etc), mas em todas elas, consegui descriptografar o arquivo digitando apenas a senha, mesmo em uma maquina onde eu não não tem o público nem as chaves privadas / secretas.

Existe uma maneira de forçar o usuário a ter a chave secreta e ser solicitado a digitar a frase secreta?

Estou aberto a qualquer outra ideia que force uma verificação de segurança dupla para descriptografar o arquivo protegido.

Eu estou usando o GnuPG versão 2.0.9 sobre o Linux.

Minhas linhas de comando de teste incluem:

Eu tentei proteger meu arquivo usando essas sintaxes diferentes: ###

gpg --encrypt --symmetric --sign file.txt

gpg --symmetric --sign file.txt

gpg --symmetric --recipient file.txt 

gpg -sb file.txt 

gpg --default-key AFAEF918 --encrypt file.txt 

Em todas as tentativas, o arquivo protegido foi descriptografado digitando apenas a frase secreta, mesmo em um computador sem as chaves pública / privada.

/root/.gnupg/secring.gpg
seg 1024D / AFAEF918 2016-02-12
Usuário de TEST uid (TEST Dev GPG Key)
ssb 2048g / 50B959DD 2016-02-12

Obrigado,

Emerson Ivo
fonte
Eu não tenho certeza do que você executou exatamente. Por favor, forneça a linha de comando da declaração de criptografia e a saída de gpg -K na máquina onde você queria descriptografar o arquivo (não tendo as chaves privadas).
Jens Erat
Eu tentei proteger meu arquivo usando essas sintaxes diferentes: ### gpg - encrypt --symmetric --sign arquivo.txt AND gpg --symmetric --sign arquivo.txt AND gpg --symmetric --recipiente file.txt AND gpg -sb file.txt E gpg - chave padrão AFAEF918 --encrypt file.txt ### Em todas as tentativas, o arquivo protegido foi descriptografado digitando apenas a frase secreta, mesmo em um computador sem as chaves pública / privada. ##### /root/.gnupg/secring.gpg & gt; & gt; & gt; sec 1024D / AFAEF918 2016-02-12 // uid Usuário TEST (TEST Dev GPG Key) & lt; [email protected]> // ssb 2048g / 50B959DD 2016-02-12
Emerson Ivo

Respostas:

4

Comece lendo o GPG MiniHOWTO e seguindo os exemplos lá.

Em seguida, consulte o Manual do GPG para mais informações, conforme necessário .

Se possível

Ao experimentar, use -v e -vv para ver mais informações sobre o que está acontecendo.

- simétrico é especificamente criptografia simétrica, que não é suposto usar chaves - ele usa apenas a frase secreta, portanto, ser capaz de decifrar com apenas a senha é esperada.


Criptografia simétrica - apenas uma frase secreta

A linha de comando mais simétrica para criptografar é

gpg -v --symmetric test.txt

embora eu recomende fortemente a escolha de uma codificação melhor e um número maior de iterações de derivação de chave, ou seja,

gpg -v --cipher-algo AES256 --s2k-mode 3 --s2k-digest-algo SHA512 --s2k-count 65600000 --symmetric test.txt

para criptografia AES256 com um resumo SHA-512 e uma contagem de iteração de chave grande (por favor, aumente-a do que eu listei também), ou

gpg -v --cipher-algo CAMELLIA256 --s2k-mode 3 --s2k-digest-algo SHA512 --s2k-count 65600000 --symmetric test.txt

para CAMELLIA256 como acima.


Assinaturas - sem criptografia por si só

-sb é duas formas de assinatura juntas e age da mesma forma que -b. Isto NÃO ENCRITO, em primeiro lugar, apenas assina com uma assinatura destacada; um uso mais completo seria:

gpg -u <mykeyid> -b test.txt

para a assinatura destacada


Criptografia de chave pública

Um exemplo de chave pública de uma assinatura mais criptografia é:

gpg -v --local-user <mykeyidToSign> --recipient <theirkeyidToEncryptTo>  --sign --encrypt test.txt

Geração de chave pública

Eu recomendo um algoritmo mais forte de criptografia e resumo de frase secreta ao gerar chaves também

gpg --s2k-mode 3 --s2k-digest-algo SHA512 --s2k-count 95600000 --cert-digest-algo SHA512 --gen-key

gpg --edit-key <mynewkey>

E, como acima, aumente mais --s2k-count, por favor.

Isso não apenas cria uma forte derivação de frase-senha, mas também define uma forte auto-assinatura de chave moderna (--cert-digest-algo). Alguns softwares GPG ou PGP antigos ou limitados podem não suportar novas assinaturas do SHA512; você pode usar o SHA256 em vez disso, se precisar, mas raramente vejo problemas com o SHA512 atualmente (e eles devem ser atualizados se tiverem).

Siga isso definindo preferências para os padrões mais fortes que você pode, por exemplo

gpg --edit-key <mynewkey>
setpref AES256 CAMELLIA256 AES192 CAMELLIA192 AES CAMELLIA128 3DES SHA512 SHA384 SHA256 SHA224 SHA1 BZIP2 ZIP ZLIB
save

essa etapa é segura, pois qualquer software de envio com configuração adequada simplesmente descerá na lista para encontrar a primeira cifra correspondente, o primeiro hash correspondente e a primeira compactação correspondente.


Senhas de chave pública

Observe que a frase secreta (inserida ao gerar a chave, alterável com o

passwd

comando no modo --edit-key, é o que criptografa a chave privada; NÃO é usado por quem quer que esteja usando a chave pública, e deve ser mantido tão secreto quanto a própria chave privada.


Tanto a frase secreta quanto a criptografia de chave pública, exigindo

Se você quiser que o destinatário tenha a chave privada E uma senha conhecida por ambas as partes (remetente e destinatário), será necessário executar o GPG duas vezes, ou seja,

gpg -v --cipher-algo CAMELLIA256 --s2k-mode 3 --s2k-digest-algo SHA512 --s2k-count 65600000 --symmetric test.txt

Primeiro use criptografia simétrica, que será a segunda descriptografia (a camada "interna" da cebola de criptografia).

gpg -v --local-user <mykeyidToSign> --recipient <theirkeyidToEncryptTo>  --sign --encrypt test.txt.gpg

Em seguida, use a criptografia de chave pública no arquivo anteriormente criptografado; note que este está em test.txt.gpg, e produz test.txt.gpg.gpg

O destinatário (ou seu processo automatizado) primeiro descriptografará a parte da chave pública com sua chave privada, além de validar a assinatura. Então, se for uma chave corporativa ou de equipe, eles poderão rotear a mensagem para o destinatário pretendido que possui a chave simétrica.


Descriptografia (pública e privada)

gpg -v --decrypt test.txt.gpg
Anti-weakpasswords
fonte
Muito obrigado pela sua ajuda. Todas as suas declarações acima funcionaram muito bem e foram muito muito úteis.
Emerson Ivo
De alguma forma, os comandos "apenas passphrase" não funcionam. gpg sempre me pede algum recipient. Se eu adicionar um endereço de e-mail como --recipient valor, ele vai reclamar, que não há chave pública para o endereço de e-mail. Aparentemente, ele ainda quer usar uma chave pública do destinatário em vez de apenas uma frase secreta para criptografar. - EDIT: Parece que foi causado por mim ter o inócuo --encrypt também.
Zelphir