Como verifico um arquivo criptografado simetricamente por GPG?

Como verifico um arquivo criptografado simetricamente por GPG?

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 à forma como os arquivos ZIP usam CRC). O gpg oferece uma maneira de verificar o conteúdo de arquivos criptografados simetricamente?

Responder1

Se você criptografou o arquivo com gpg -c, não há como verificar o que o arquivo contém sem saber a senha. Essa é uma propriedade central da criptografia simétrica. Como você precisará fornecer a senha 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 desejar uma garantia adicional de integridade, você pode assinar o arquivo com sua chave privada adicionando a -sopção ao criptografar o arquivo.

gpg -c -s 50GBfile

Então você pode verificar a assinatura com gpg --verify 50GBfile.gpg. Observe que isso apenas garante que o arquivo é um dos arquivos que você assinou; isso não protege você contra um erro ao assinar o arquivo errado.

Se você usou criptografia assimétrica (com a chave pública do destinatário – sua própria chave pública), a verificação de que 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 serviria. Normalmente você colocaria sua própria chave como destinatário de todas as mensagens criptografadas, com encrypt-toou hidden-encrypt-tono arquivo de configuração GPG.

Responder2

A única operação de “verificação” no gnupg é a verificação de assinatura, que basicamente criptografa ocerquilhado arquivo criptografado com uma chave pública (=sinal).

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

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

E foi isso que Sepero ofereceu acima, mas em vez de"Você poderia verificar..."deveria ser"Oapenasmaneira de verificar..."

Atualização - para deixar claro:

Alguns minutos atrás eu fiz exatamente isso: dividi um arquivo de backup de 9,8 GB em 5 pedaços rar e cada pedaço criptografado simetricamente pelo gnupg. Antes de excluir os pedaços rar, verifiquei a integridade dos pedaços criptografados conforme discutido acima: 1 em cada 5 não passou no teste de hash. Descriptografei novamente aquela peça e agora o hash da peça descriptografada correspondia à peça rar original.

Eu comparei binariamente a parte rar descriptografada incorretamente com a parte descriptografada boa, e a única diferença nesses arquivos de 2 GB foi um byte: C8 vs. 48 - que é causado por uma inversão 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 mudar um pouco na descriptografia, ele também poderá fazer isso na criptografia. Nunca mais pularei esta etapa de verificação de integridade.

Responder3

Você pode verificar isso extraindo e comparando o md5sum com o 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

Responder4

Caso você queira verificar a integridade, você precisasinalo arquivo original também.

gpg --encrypt --signarquivo

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

gpg --descriptografararquivo.asc

informação relacionada