Posso descriptografar um arquivo criptografado mesmo que alguém o tenha modificado?

StackOverflow https://stackoverflow.com/questions/2643813

  •  27-09-2019
  •  | 
  •  

Pergunta

Aviso:Esta questão foi bastante editada.Tentei o meu melhor para adivinhar as intenções do autor original.Por favor, veja o versão original.


Não tenho certeza de como usar a ferramenta de linha de comando GPG, que usamos para criptografar arquivos.

File.txt é um arquivo de texto simples:

Testing
hello world  
My security things.

É assim que criptografo o arquivo:

gpg --symmetric File.txt 

Isso me dá um novo arquivo criptografado:Arquivo.txt.gpg

Se outra pessoa modificar o arquivo criptografado, não poderei mais descriptografá-lo.

$ gpg --decrypt File.txt.gpg 
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: eof

Como posso obter o conteúdo do meu arquivo, mesmo que alguém o tenha modificado?

Foi útil?

Solução

A modalidade típica de criptografia simétrica opera em blocos de dados e os resultados de cada bloco são usados ​​para criptografar o próximo bloco.

Um bloco normalmente tem de 128 a 256 bits.Se algum bit dentro de um bloco estiver corrompido, o bloco inteiro não poderá ser descriptografado.Caso contrário, seria possível obter algumas informações sobre o conteúdo do bloco mesmo sem a chave.Uma parte importante de qualquer bom algoritmo de criptografia é que uma alteração de um único bit no texto simples ou no texto cifrado pode causar alterações em qualquer número de bits no texto cifrado ou no texto simples correspondente.

Outra característica importante do mecanismo de criptografia é que blocos idênticos no texto simples não são criptografados em blocos idênticos no texto cifrado.Se fossem, seria possível obter informações sobre o conteúdo do texto simples.Por exemplo, um arquivo de imagem bitmap pode ser legível quando criptografado se cada bloco for criptografado exatamente da mesma maneira, devido aos padrões que surgem.Por esse motivo, os resultados da criptografia de um bloco às vezes são usados ​​para criptografar o próximo bloco.Existem também modalidades comuns nas quais apenas a chave afeta a criptografia dos blocos subsequentes, e não o texto simples.

Se os resultados da criptografia de um bloco afetarem a maneira como os blocos seguintes são criptografados, a corrupção de um único bit em um único bloco fará com que o restante do texto cifrado que segue esse bloco seja irrecuperável.

Outras dicas

Respondendo à pergunta original em termos leigos;

A menos que você saiba exatamente quais alterações alguém fez em seu arquivo criptografado, seu conteúdo desaparecerá e provavelmente você não poderá recuperá-lo.

É por isso que arquivos criptografados são usados ​​para proteger seus dados;eles são muito, muito difíceis de trabalhar de trás para frente.

Você deve produzir e distribuir um resumo do arquivo criptografado junto com o próprio arquivo criptografado.

Antes de descriptografar o arquivo, calcule o resumo e verifique se for igual ao fornecido. Se o resumo não corresponder, o arquivo criptografado foi corrompido e é inválido.

Você não pode criptografar um arquivo, modificá -lo e fingir ainda ser criptografado válido.

Não há como você poder fazer isso apenas com o arquivo criptografado.

Eu acredito que o que você está procurando é redundância de dados. CDs, por exemplo, têm. Você pode fazer um arranhão em um e todos os dados ainda são legíveis, apesar do fato de que muitos dados foram perdidos com o arranhão.

A maneira mais simples de fazer isso é apenas armazenar o arquivo duas vezes, usando uma soma de verificação, você pode determinar se um deles foi modificado. Técnicas mais avançadas usam somas de verificação intercaladas e bits/bytes de paridade. Uma visão geral sobre Técnicas de detecção e correção de erros pode ser encontrado na Wikipedia.

Eu não recomendo que você o implemente. É muito mais simples e mais seguro usar apenas uma implementação já existente. (Tenho certeza de que existem alguns por aí, mas não os conheço.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top