Posso compactar um arquivo criptografado?

5

Eu tenho um arquivo criptografado (criptografia AES Simétrica). Para fins de backup e para economizar espaço em disco, posso compactar (sem perdas) o arquivo sem me preocupar com a descriptografia? Em caso afirmativo, você pode recomendar alguns bons programas de compactação para esse propósito?

    
por BlueGene 02.06.2009 / 18:04

10 respostas

15

Você pode comprimi-lo, mas é improvável que ele economize muito espaço em disco. Por sua natureza, a criptografia raramente deixa um arquivo muito compacto.

Tente você mesmo ver se há alguma economia de tamanho de arquivo.

Um ponto de dados:

-rw-r----- 1 gene    gene    2428671 2009-06-02 12:39 test.log
-rw-r----- 1 gene    gene     134524 2009-06-02 12:39 test.log.bz2
-rw-r----- 1 gene    gene     217162 2009-06-02 12:38 test.log.gz
-rw-r--r-- 1 gene    gene     263229 2009-06-02 12:47 test-AES.gpg
-rw-r--r-- 1 gene    gene     264833 2009-06-02 12:42 test-AES.gpg.bz2
-rw-r--r-- 1 gene    gene     263302 2009-06-02 12:41 test-AES.gpg.gz
-rw-r--r-- 1 gene    gene     134609 2009-06-02 12:43 test-bz2-AES.gpg
-rw-r--r-- 1 gene    gene     217246 2009-06-02 12:43 test-gz-AES.gpg

test.log é o original e test.log.bz2 e test.log.gz são simplesmente compactados com bzip2 e gzip, respectivamente.

Se eu criptografá-lo ( gpg --symmetric --cipher-algo AES --output test-AES.gpg test.log ), o arquivo criptografado ( test-AES.gpg ) é um pouco maior que as versões compactadas. A compactação do arquivo criptografado na verdade adiciona um pequeno tamanho ( test-AES.gpg.bz2 e test-AES.gpg.gz ).

A compactação primeiro, em seguida, a criptografia mostra algumas economias ( test-bz2-AES.gpg e test-gz-AES.gpg ), especialmente com o bzip2.

Naturalmente, sua experiência pode ser diferente, dependendo do software de criptografia e / ou do software de compactação diferente.

Você deve considerar se a economia de tamanho de arquivo obtida por meio de criptografia é suficiente ou se a compactação e a criptografia valem a etapa extra do processo.

    
por 02.06.2009 / 18:08
11

Não se a criptografia for boa. A compactação lida com o reconhecimento de padrões em dados e a criação de uma "abreviação" que se refere a esses padrões para extração posterior.

Se a sua criptografia é boa, o arquivo se parece com ruído aleatório, e isso não vai comprimir muito devido à ausência de padrões. É claro que você pode colocá-lo em um arquivo (.zip, .gz, etc.), mas provavelmente não ficará muito menor.

    
por 02.06.2009 / 18:41
7

Os programas de compressão não modificam os dados reais de forma alguma - se o fizessem, seriam inúteis. (A compressão de som e imagem é uma exceção, já que o olho humano não vê mudanças tão pequenas, enquanto um computador pode engasgar em um único bit invertido.) Então, sim, você pode compactar arquivos criptografados.

Mas, como os dados criptografados são muito semelhantes aos dados aleatórios, eles não compactam muito bem. Portanto, se possível, compacte antes de criptografar. Caso contrário, a "compressão" será bastante inútil.

Para um programa de compactação, o mundo Unix prefere tar junto com gzip / bzip2 (geralmente usado de dentro do tar, como em tar czf foo.tar.gz foo ), enquanto os usuários do Windows preferem ZIP , RAR ou 7z .

    
por 02.06.2009 / 18:11
4

Usar qualquer programa de compactação (7z, zip, gzip, bzip2) é sem perdas e não afeta sua capacidade de descriptografar os dados.

No entanto, devido à natureza dos dados criptografados, provavelmente você não ganhará muito com isso.

O correto é compactá-lo antes da etapa de criptografia. Utilitários existentes, como o gpg, fazem isso. O comportamento para compactar antes da criptografia é o padrão:

michael:~> dd if=/dev/zero of=testfile bs=1048576 count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00300552 s, 349 MB/s
michael:~> gpg --symmetric --cipher-algo aes --batch --passphrase cheesestring testfile
michael:~> ls -al testfile testfile.gpg
-rw-r--r-- 1 michael users 1048576 2009-06-02 12:42 testfile
-rw-r--r-- 1 michael users    1123 2009-06-02 12:43 testfile.gpg
    
por 02.06.2009 / 18:46
3

Um arquivo criptografado perderá as propriedades estatísticas que fazem a compactação funcionar, portanto, a compactação do arquivo criptografado economizará pouco ou nenhum espaço. Você deve compactar o arquivo primeiro (enquanto ele ainda se comporta de uma maneira que comprima bem) antes de criptografar o arquivo compactado. Além disso, a compactação não afetará o conteúdo original do arquivo quando você o descompactar.

    
por 02.06.2009 / 18:39
2

Um arquivo que pode ser compactado depois que a criptografia foi, por definição, não criptografada. Talvez tenha sido "embaralhada" ou "ofuscada". Dados criptografados são indistinguíveis de dados aleatórios.

O software de criptografia que não compacta primeiro um arquivo antes de fazer a criptografia está cometendo um ato de negligência.

Você pode executar um arquivo criptografado por meio de um algoritmo de compactação sem perdas, sem destruir os dados. Esta é a garantia de compressão - que os dados que você fornecer como entrada serão recuperados como saída da descompressão. Por definição, um algoritmo de compactação sem perdas retornará todos os dados se você compactar e descompactar.

    
por 02.06.2009 / 19:00
2

Normalmente, nessas situações, você compacta primeiro e depois criptografa, à medida que obtém melhores taxas de compactação dessa maneira.

    
por 03.06.2009 / 02:53
0

Sim, isso não deve causar problemas. No que diz respeito ao programa de criptografia, são apenas dados. No entanto, seria difícil recuperar os dados, portanto, talvez você queira usar o PAR2 depois de criar o arquivo.

    
por 02.06.2009 / 18:07
0

Eu acho que, no balanço, a quantidade de espaço que você salvaria não valeria os possíveis problemas que isso causaria.

É claro que isso dependerá de qual sistema operacional você está usando, se seus arquivos são locais ou em rede, que tipo de backup você está fazendo, o que está usando para criptografia e com que tipo de arquivo você está trabalhando.

O principal problema seria a velocidade de acesso, em que você terá que primeiro descompactar depois descriptografar e se os arquivos são grandes ou pequenos, isso irá adicionar processos. Você também será aumentando o risco de falha adicionando processos.

Finalmente, lembre-se de que seu software de descriptografia desejará descriptografar um arquivo descompactado para que você possa ter uma versão comprimida e não compactada existente ao mesmo tempo, o que exigiria o dobro do espaço em disco naquele momento.

    
por 02.06.2009 / 18:51
-3

Para as pessoas que dizem que você deve compactar antes da criptografia, a razão pela qual isso é menos seguro é devido a "ataques de texto sem formatação" conhecidos. Se alguém souber que você compactou seus dados com gzip antes de criptografar, isso significa que eles já conhecem o primeiro punhado de bytes de seu texto simples, já que ele será o cabeçalho gzip. A partir daqui, eles têm um pouco mais de espaço para quebrar seus dados criptografados.

Como sempre, não existe uma segurança perfeita, e a criptografia primeiro pode ser perfeitamente adequada para a maioria dos usos, mas apenas para FYI, isso torna a compactação menos segura antes da criptografia.

Para pessoas que gostam desse tipo de coisa, estou trabalhando em alguns artigos que falam sobre os fundamentos da criptografia (voltados para programadores e outras pessoas técnicas):

link

    
por 15.09.2012 / 20:02