Como eu verifico um arquivo GPG simetricamente criptografado?

5

Eu criei um arquivo criptografado com criptografia simétrica.

gpg -c 50GBfile

Agora quero excluir o original. Antes de excluir o original, quero verificar a integridade do arquivo criptografado. (Semelhante ao modo como os arquivos ZIP usam o CRC). O gpg oferece uma maneira de verificar o conteúdo de arquivos simetricamente criptografados?

Rucent88
fonte

Respostas:

4

Se você criptografou o arquivo com gpg -c, então não há como verificar o que o arquivo contém sem saber a frase secreta. Essa é uma propriedade central da criptografia simétrica. Como você precisará fornecer a frase secreta de qualquer maneira, faça o teste real: descompacte o arquivo e compare-o com o original. No Linux ou outra variante unix:

gpg -d <50GBfile.gpg | cmp - 50GBfile

Se você quiser uma garantia adicional de integridade, poderá assinar o arquivo com sua chave privada adicionando -s opção quando você criptografar o arquivo.

gpg -c -s 50GBfile

Então você pode verificar a assinatura com gpg --verify 50GBfile.gpg. Observe que isso só dá a garantia de que o arquivo é um dos arquivos que você assinou, isso não protege você contra um erro pelo qual você assinou o arquivo errado.

Se você usou criptografia assimétrica (com a chave pública do destinatário - sua própria chave pública), verificar se o arquivo tem o conteúdo desejado exigiria a chave privada do destinatário. Com vários destinatários, a chave privada de qualquer destinatário seria suficiente. Normalmente você colocaria sua própria chave como destinatária de todas as mensagens criptografadas, com encrypt-to ou hidden-encrypt-to no arquivo de configuração GPG.

Gilles
fonte
3

A única operação "verificar" no gnupg é a verificação de assinatura , que basicamente criptografa o jogo da velha do arquivo criptografado com uma chave pública (= sinal).

Na minha opinião, isso significa que se os bits de saída estiverem corrompidos enquanto o arquivo estiver sendo criptografado, o hash será calculado arquivo corrompido . Você nunca descobrirá isso verificando o assinatura desse arquivo desde que você assinou um arquivo já corrompido.

Parece que a única maneira de verificar positivamente um arquivo criptografado contra a corrupção é percorrer o longo processo de descriptografar o arquivo gerado e comparar seu hash com o original.

E é isso que Sepero ofereceu acima, mas em vez de "Você poderia verificar ..." deveria ser "O maneira de verificar ... "

Atualização - para direcionar o ponto para casa:

Alguns minutos atrás eu fiz exatamente isso: dividir um arquivo de backup de 9,8 GB em 5 partes raras, e cada peça simetricamente criptografada pelo gnupg. Antes de excluir as partes rar, verifiquei a integridade das partes criptografadas, conforme discutido acima: 1 de 5 não passou no teste de hash. Eu descriptografei novamente aquela peça, e agora o hash da peça decifrada combinava com a peça original do rar.

Eu binário comparou a parte de rar descriptografada ruim com a descriptografada boa, e a única diferença naqueles arquivos de 2GB era um byte: C8 contra 48 - o que é causado por um flip de 1 bit (ou seja, 11001000 vs 01001000).

A moral da história é que se, em um bom sistema WIN7 e um bom HDD, o gnupg puder virar um pouco na descriptografia, ele também poderá fazer isso na criptografia. Eu nunca vou pular novamente essa etapa de verificação de integridade.

Ninveh
fonte
1

Você poderia verificá-lo extraindo e comparando o md5sum ao original.

$ gpg -d 50GBfile | md5sum
gpg: AES256 encrypted data
gpg: gpg-agent is not available in this session
gpg: encrypted with 1 passphrase
1df1aaffb20c5255e282d6f584489993  -
$ md5sum 50GBfile
1df1aaffb20c5255e282d6f584489993  50GBfile
Sepero
fonte
0

Caso você queira verificar a integridade que precisa placa o arquivo original também.

gpg --encrypt --sign Arquivo

Finalmente, você pode verificar a integridade (com base na assinatura), descriptografando o arquivo (a integridade é verificada automaticamente)

gpg --decrypt file.asc

mateuszk87
fonte
Isso só verifica se o arquivo é aquele que foi assinado com essa chave. Ele não protege contra a criptografia acidental do arquivo errado.
Gilles