criptografa arquivos de fita com o openssl e o tar

2

Estou tentando adicionar criptografia aos meus scripts atuais de backup em fita canalizando a saída por meio do openssl, no momento em que tenho:

tar -czpvf /dev/nst0 /home /otherdir

então adicionar o openssl dá isto:

tar czpvf - /home /otherdir | openssl aes-256-cbc -e -salt -pass file:/my_passwd > /dev/nst0

que não causa erros, no entanto a única maneira que eu posso encontrar na net para fazer uma descriptografia é:

dd if=/dev/nst0 conv=sync | openssl aes-256-cbc -d -salt -pass file:/my_passwd | tar xzpvf -

isso fornece a listagem de arquivos correta, mas eu recebo:

bad decrypt 8340:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:461:

todas as vezes.

O que posso fazer para corrigir isso?

    
por Tim the Enchanter 01.11.2011 / 14:26

4 respostas

2

Acho que pode ter a ver com o uso de uma cifra de bloco.

Recebo um erro semelhante quando o faço:

$ tar czpvf - /test/directory |openssl aes-256-cbc -e -salt -pass pass:password | dd of=/tmp/foo.encrypted.tgz
$ dd if=/tmp/foo.encrypted.tgz conv=sync | openssl aes-256-cbc -d -salt -pass pass:password |tar xzpvf -

Mas quando eu uso uma cifra de streaming como rc4, por exemplo:

$ tar czpvf - /test/directory |openssl rc4 -e -salt -pass pass:fred | dd of=/tmp/foo.encrypted.tgz

Eu não entendo esse erro.

    
por 01.11.2011 / 17:23
0

Na maioria das vezes eu vi esse tipo de mensagem de erro do OpenSSL devido senha errada. Você pode tentar temporariamente se a substituição de file:/my_passwd por pass:yourpassword na linha de decriptografia continuar OK? Isso, é claro, seria uma solução permanente ruim, mas tente isso para depuração.

    
por 01.11.2011 / 14:37
0

Você precisa preencher a entrada para a cifra de bloco. Tente piping seu tar para dd com um tamanho de bloco de 4k e conv = sync opção. Isso preencherá o final dos dados.

    
por 27.01.2013 / 19:32
0

É melhor usar mbuffer para gravar na fita, pois ela pode manipular o buffer e a cobertura de fita (reduzindo o engraxamento) e grava em blocos completos para manter a unidade de fita feliz. Veja esta resposta para um exemplo de script. mbuffer lê a partir de stdin , portanto, a compactação e a criptografia não são um problema para ela, mesmo quando abrangendo várias fitas (algo que tar não pode fazer).

Quanto à necessidade de usar dd com sync , isso se deve à necessidade da unidade de fita de gravar em blocos. Veja esta resposta para uma descrição detalhada do motivo, mas a resposta curta é que novamente usando mbuffer para escrever o dados em blocos de tamanho fixo (por exemplo, 256kB cada) resolve o problema.

    
por 06.06.2017 / 00:41