Arquivando arquivos com segurança

1

É a seguinte maneira segura de destruir arquivos em sistemas * NIX:

shredder.sh

#!/bin/bash
# Define number of rewrites
COUNT=20
# Define file size
FILE_SIZE='wc -c < "$1"'
# Begin rewriting file
while [ $COUNT -ge 0 ]
do
   # Write random data to file
   echo 'dd if=/dev/urandom bs=1 count="$FILE_SIZE"' > $1
   COUNT=$(( $COUNT - 1 ))
done

O arquivo está sendo reescrito no deslocamento correto (ponto inicial)?

Existe uma maneira mais curta, melhor e mais portátil de fazer isso?

    
por Sebi 27.11.2015 / 21:32

2 respostas

2

Não. Não por uma longa milha.

O que você está tentando fazer é impossível, então não é surpresa que você esteja falhando. O problema mais notório é que você nem está tentando sobrescrever o arquivo: … > $1 primeiro trunca o arquivo, o que marca todos os seus blocos como livres, e então a saída do comando é gravada em blocos recém-alocados. Não há razão para que os blocos recém-alocados sejam os que foram alocados do arquivo.

Se você executou dd if=/dev/urandom bs=1 count="$FILE_SIZE" of="$1" , isso superaria esse obstáculo. Você pode ter certeza de ter substituído essa cópia do arquivo. Mas outras cópias do arquivo podem existir em outro lugar, como:

  • Cópias temporárias criadas quando o arquivo foi gerado ou editado.
  • Versões mais antigas, se o arquivo foi editado no passado.
  • Backups que podem ter sido feitos por qualquer pessoa com acesso ao arquivo.
  • Outras cópias existentes em um instantâneo do sistema de arquivos.
  • Outras cópias que podem ter sido feitas dentro do dispositivo de armazenamento. No SSD, o apagamento é uma operação cara (tanto em termos de velocidade quanto em termos de desgaste no dispositivo), portanto, escrever novos conteúdos a partir de um setor, na verdade, apenas marca o setor a ser deletado mais tarde e grava os dados em outro setor .

A maneira segura de apagar dados é criptografar todo o disco desde o dia 1. Então, para ter certeza de que os dados não podem ser recuperados, você só precisa limpar a chave, que geralmente é armazenada em um local bem definido. De preferência, não armazene a chave real no disco: se a máquina inicializar com intervenção humana, use uma senha strong; se a chave inicializar sem intervenção humana, armazene a chave em um cartão inteligente ou em uma chave USB barata ou cartão SD que você possa destruir fisicamente sem remorso.

Tenha em mente que, como explicado acima, a simples substituição de dados em um SSD não garante que ele seja irrecuperável se o invasor tiver acesso ao hardware ou puder hackear o firmware do SSD. Você precisa usar a funcionalidade de exclusão segura do SSD, supondo que ele tenha uma que funcione (infelizmente, alguns modelos de SSD pretendem ter a capacidade, mas na verdade não apagam os dados).

    
por 28.11.2015 / 00:43
1

Seu script faz suposições que não são necessariamente verdadeiras:

  • Substituir uma parte de um arquivo gravará os novos dados no setor antigo
  • Isso não é especialmente verdadeiro para SSDs (procure o uso de nivelamento)
  • Você não usa uma cópia no sistema de arquivos de gravação ou sobreposição, como btrfs ou aufs

Editar: o acima deve ser considerado apenas uma lista aproximada de problemas no seu script. Embora não seja totalmente ignorante em questões de segurança, há muitos casos que não são tratados aqui como cópias temporárias ao editar seu arquivo, enviá-lo para um servidor remoto, diferentes caches, espaço de troca, diários e muitas outras coisas que não sei de.

Contramedidas possíveis (não (sempre) 100% seguras):

  • usando o shred, mas não é destinado a mídia baseada em flash, como SSDs e nem todos os sistemas de arquivos, incluindo os comuns, como ext3
  • usando a ferramenta do fabricante do seu SSD, pode não estar disponível
  • usando a criptografia de disco completo antes de salvar o arquivo nele e também para a partição OS, a partição swap, todas as outras partições, uma cópia (temporária) pode ser gravada e melhor também todas as outras HDD / USB-stick / ... . Faça backup de todos os outros dados, exceto o arquivo que você deseja excluir em uma unidade criptografada e, em seguida, reformate e criptografe novamente todas as mídias em contato com o arquivo (incluindo a partição OS) e coloque os outros dados de volta no disco. >
por 27.11.2015 / 22:47