Frase secreta GPG + criptografia vinculada Chave Secreta

2

Estou procurando ajuda para descobrir como amarrar uma chave secreta com uma senha para criptografar um arquivo usando o GPG. Eu testei 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 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 dupla verificação de segurança para descriptografar o arquivo protegido.

Estou usando o GnuPG versão 2.0.9 no 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
sec 1024D/AFAEF918 2016-02-12
uid TEST User (TEST Dev GPG Key)
ssb 2048g/50B959DD 2016-02-12

Obrigado,

    
por Emerson Ivo 17.02.2016 / 23:16

1 resposta

4

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

Em seguida, consulte o manual do GPG para obter 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étrica é especificamente criptografia simétrica, que não deve usar chaves - ela usa apenas a frase secreta, portanto, é possível decriptar com apenas a frase-senha.

Criptografia simétrica - apenas uma frase secreta

A linha de comando mais simétrica para criptografar é

gpg -v --symmetric test.txt

embora eu recomende strongmente 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 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 separada

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 strong 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 strong derivação de frase-senha, mas também define uma strong 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).

Continue definindo as preferências para os padrões mais strongs possíveis, por exemplo

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

este passo é seguro, uma vez que qualquer software de envio configurado corretamente irá simplesmente percorrer a lista para encontrar a primeira cifra correspondente, o primeiro hash correspondente e a primeira compressão correspondente.

Frases secretas de chave pública

Observe que a frase secreta (digitada ao gerar a chave, pode ser alterada com o

passwd
O 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.

A senha e a criptografia de chave pública, exigindo as duas

Se você quiser que o destinatário tenha AMBAS a chave privada e uma frase secreta 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.

Decodificação (pública e privada)

gpg -v --decrypt test.txt.gpg
    
por 18.02.2016 / 07:36

Tags