Sobrescrevendo um disco

2

Devo usar:

  • find / -type f -exec shred -uvz -nX

ou apenas bom e velho

  • dd if=/dev/urandom of=/dev/sda

Uma é mais rápida ou mais segura que a outra?

    
por user71996 10.06.2014 / 02:06

4 respostas

2

O método dd irá:

  • ser mais rápido porque não precisa percorrer a estrutura de diretórios
  • sobrescrever áreas do disco que não estão ocupadas atualmente por arquivos

O programa shred sobrescreve repetidamente o arquivo com dados aleatórios, o que pode torná-lo mais "seguro" que dd , dependendo de suas necessidades.

No entanto, a eficácia de shred depende do sistema de arquivos. Na página do manual:

CAUTION: Note that shred relies on a very important assumption: that the file system overwrites data in place. This is the traditional way to do things, but many modern file system designs do not satisfy this assumption.

Em particular, shred pode não acabar fazendo nada de útil em um SSD.

    
por 10.06.2014 / 02:12
1

Desempenho ...

Sempre que usar dd , use um tamanho grande de blocos. Tanto quanto 4 MiB é bom. Usar o tamanho padrão do bloco (512 bytes) será significativamente mais lento.

dd if=/dev/urandom of=/dev/sda bs=4M

Se você estiver tentando sobrescrever dados além de qualquer recuperação, então, um simples dd , como o acima, e um martelo farão o truque. Sem o martelo, você sempre terá blocos ruins que podem ser legíveis, ou conteúdo SSD, etc., que não são visíveis no nível do dispositivo, mas estão lá no nível físico.

Se você está apenas tentando torná-lo realmente, muito, muito difícil, então não se incomode com o urandom, e apenas use / dev / zero

  • dd (tamanho adequado) será mais rápido.
  • Seguro é um conceito que tem um significado relativo ao esforço que uma pessoa está disposta a estender ao obter os dados. dd e shred provavelmente terão a mesma segurança aproximada dessa perspectiva.

O custo de uma nova unidade é provavelmente menor que o custo de limpezas mais seguras e, assim, o martelo é a solução certa a partir de então.

Atualização: o Shred é inútil.

De a documentação do fragmento , ele tem várias limitações:

Please note that shred relies on a very important assumption: that the file system overwrites data in place. This is the traditional way to do things, but many modern file system designs do not satisfy this assumption. Exceptions include:

  • Log-structured or journaled file systems, such as those supplied with AIX and Solaris, and JFS, ReiserFS, XFS, Ext3 (in data=journal mode), BFS, NTFS, etc., when they are configured to journal data.
  • File systems that write redundant data and carry on even if some writes fail, such as RAID-based file systems.
  • File systems that make snapshots, such as Network Appliance's NFS server.
  • File systems that cache in temporary locations, such as NFS version 3 clients.
  • Compressed file systems.

Você pode usar o ext4 para isso (que tem o diário ativado por padrão).

Além disso, o fragmento em seus arquivos individuais não irá tão longe quanto remover todos os metadados relevantes do arquivo. Você pode ter outros hard-links, etc. apontando para os mesmos inodes, e os metadados ainda existirão. Às vezes, até mesmo saber a existência de um arquivo é um problema de segurança.

De volta ao martelo .....

    
por 10.06.2014 / 03:25
0

Outra opção Acabei de ler sobre ontem :

openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero > randomfile.bin

Claro, você pode substituir randomfile.bin por algo como /dev/sda

Isso deve ser mais rápido do que fazer o kernel fornecer dados aleatórios.

    
por 10.06.2014 / 03:09
0

O método shred substitui apenas arquivos que existem atualmente. Ele não apaga arquivos que já foram apagados, incluindo versões antigas de arquivos existentes que foram localizados em espaços que ainda não foram reutilizados.

O método dd sobrescreve todo o disco.

O método dd é desnecessariamente lento porque substitui por dados aleatórios. Sobrescrever com zeros é igualmente eficaz:

dd if=/dev/zero of=/dev/sda

Você também pode fazer isso com cat ; pode ser um pouco mais rápido.

cat /dev/zero >/dev/sda

O conselho para substituir repetidamente dados aleatórios em vez de zeros é algo que era verdade para as tecnologias de disco de 20 anos atrás - e, mesmo assim, a sobrescrita com zeros funcionou muito bem. Com discos rígidos modernos, substituir por zeros é suficiente. Veja Por que escrever zeros (ou dados aleatórios) em um disco rígido várias vezes é melhor do que apenas fazer isso uma vez? .

O SSD é uma tecnologia mais recente que os discos rígidos e pouco se sabe sobre sua remanência após as gravações. No meu conhecimento, não há relatos públicos de recuperação de dados substituídos por zeros em qualquer tecnologia flash (não posso falar por agências governamentais - mas eles provavelmente já têm seus dados). Você pode querer assistir Limpeza segura de EEPROM e memória flash para atualizações.

Há um acréscimo adicional em tecnologias flash que realocam setores (como unidades SSD): depois de sobrescrever toda a superfície em software, existem setores que não estão mapeados atualmente e ainda têm seu próprio conteúdo. Esses setores não podem ser lidos usando a interface normal, mas podem ser lidos por sondagem dentro do dispositivo de armazenamento. (Tanto quanto sei, esta é uma técnica conhecida, mas varia de moderadamente caro a muito caro, dependendo do modelo do dispositivo de armazenamento flash). Para apagar completamente uma unidade flash, em princípio, você precisa emitir um comando secure erase ; no entanto [muitos dispositivos não implementam esse comando corretamente] ( ATA Security Apagar em SSD ), então faça sempre um software primeiro.

    
por 10.06.2014 / 03:33