Como limpar com segurança arquivos da unidade SSD?

14

Ao tentar limpar com segurança os SSDs, temos vários problemas:

  • Os SSDs se desgastam após uma quantidade limitada de ciclos de apagamento
  • Os SSDs têm um controlador que mapeia dinamicamente LBAs (endereços de blocos lógicos usados ​​pelo sistema para acessar o disco) para células NVRAM (as células de memória flash reais) para equilibrar o desgaste, o que significa dizer ao disco para substituir os blocos que anteriormente armazenavam um disco específico. O arquivo pode resultar na substituição de outros blocos sobressalentes.
  • Os SSDs possuem uma porcentagem notável de capacidade de reserva usada para compensar as células de armazenamento em extinção e reduzir o desgaste. Eles não são visíveis para o sistema e podem conter fragmentos de dados antigos.

Agora, quais opções temos dentro do Ubuntu para limpar com segurança os SSDs?

Ouvi dizer que alguns SSDs mais recentes devem poder se limpar com segurança, mas como descobrir se meu SSD é capaz disso e como eu o acionaria?
Também deve haver um comando de exclusão segura do ATA, como descobrir se isso é suportado e como desencadear isso?

Existem também maneiras de limpar com segurança apenas um determinado arquivo ou apenas espaço não utilizado?
Eu acho que fazer um backup de todas as partições, limpar com segurança todo o disco e depois restaurar o backup seria possível, mas parece muito complicado e levaria muito tempo para ser prático. Existem outras alternativas? Caso contrário, que ferramentas posso usar para fazer backup de partições sem fazer backup de arquivos já excluídos?

Obviamente, as ferramentas padrão gostam shredou wipenão são utilizáveis ​​aqui para os pontos descritos acima. Eles simplesmente sobrescrevem um arquivo (sobrescrevendo seus clusters de sistema de arquivos que estão vinculados aos LBAs que não estão constantemente apontando nas mesmas células flash devido ao controlador de nivelamento de desgaste).

Byte Commander
fonte
Pode haver alguma informação interessante aqui wiki.archlinux.org/index.php/SSD_memory_cell_clearing
Byte Commander
Eu sei do trabalho acadêmico sobre isso que fez no kernel, consulte lwn.net/Articles/480269
noleti

Respostas:

9

Atualmente, não há como apagar com segurança arquivos no SSD sem apagar o conteúdo de toda a unidade ou acessar o firmware do SSD.

  • É impossível saber onde o SSD pode armazenar cópias anteriores de um bloco lógico.

  • Para piorar a situação, devido aos mecanismos de diário e cópia na gravação do sistema de arquivos, pode ser impossível saber quais blocos lógicos podem conter uma cópia anterior de um arquivo específico.

A única maneira de impedir o vazamento de arquivos excluídos para alguém com acesso direto à unidade é criptografá-los em primeiro lugar e manter a chave de criptografia protegida contra olhares indiscretos.

Termo aditivo:

Pesquisei e descobri que você pode apagar todos os arquivos excluídos anteriormente, se conseguir aprender todos os setores desocupados de um sistema de arquivos, o que geralmente é possível e oferecido por algumas ferramentas do sistema de arquivos (por exemplo, para a família ext * ) e depois as descarte (por exemplo, blkdiscard(8)conforme descrito nesta resposta à pergunta vinculada ), que retorna os blocos para coleta de lixo até que sejam usados ​​novamente e sobrescritos no processo.

Isso é seguro contra todos que não podem acessar diretamente as células flash, portanto, todos que

  • não possui um dispositivo de leitura de células flash adequado e
  • não é possível convencer o firmware da unidade a revelar o conteúdo de blocos não atribuídos (o que exigiria uma modificação significativa do firmware na maioria dos casos e comandos ATA personalizados, já que não há uma maneira padronizada).
David Foerster
fonte
Você poderia incluir os pontos principais e um resumo das instruções desse link na sua resposta?
Byte Commander
Eu vinculei a uma pergunta equivalente da UA. Espero que seja melhor.
21416 David Foerster
A exclusão segura de espaço livre na inicialização seria uma opção viável?
user4493605
1
@ user4493605: O que você quer dizer com “viável”? Certamente é possível. Você poderia abrir uma nova pergunta se tiver uma pergunta nova ou de acompanhamento? A seção de comentários não é adequada ou destinada a novas perguntas ou discussões prolongadas. Você pode enviar um comentário com uma notificação para chamar minha atenção. Obrigado.
9188 David Foerster
3

Aviso: Caso ainda não esteja claro, o apagamento seguro da unidade eliminará todos os dados da unidade e impossibilitará a recuperação. Você deve fazer backup de todas as informações críticas.

A maneira mais fácil de determinar se sua unidade suporta apagamento seguro é perguntar: usei / dev / sdX nos exemplos abaixo. Você precisará alterá-lo cuidadosamente para corresponder ao dispositivo com o qual está trabalhando:

Fontes:

https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase

/superuser/1161531/how-to-un-freeze-drive-in-linux

$ sudo hdparm -I /dev/sdX | grep -i erase

No meu SSD, isso resulta em:

supported: enhanced erase
2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.

Se o apagamento seguro for suportado pelo seu dispositivo, acioná-lo é um processo de 2 ou 3 etapas.

  1. Se o dispositivo relatar que está congelado, conforme indicado pela saída sudo hdparm -I /dev/sdXsemelhante a esta:
not   enabled
not   locked
      frozen
not   expired: security count
supported: enhanced erase

Descongele, suspendendo e reiniciando seu sistema. Fiz isso com o comando sudo systemctl suspend movendo o ponteiro até o sistema reiniciar.

  1. Você deve definir uma senha para usar o apagamento seguro. Nesse caso, estou usando foobar como senha. Você pode usar a senha que não estiver em branco que desejar, pois é temporária.

    sudo hdparm --user-master u --security-set-pass foobar /dev/sdX

  2. Com a senha definida, agora você pode usá-la para apagar com segurança a unidade:

sudo hdparm --user-master u --security-erase foobar /dev/sdX

Se a sua unidade suportar e você desejar, pode optar por usar a exclusão aprimorada de segurança com:

sudo hdparm --user-master u --security-erase-enhanced foobar /dev/sdX

Elder Geek
fonte