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 -s
opçã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-to
ou hidden-encrypt-to
no 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