Eu tenho uma unidade FreeBSD inicializável que estou usando para limpar o conteúdo de um disco rígido antes de doar o PC para meu brechó local. Estou usando o seguinte comando para conseguir isso:
dd if=/dev/urandom of=/dev/[drivename] bs=64k
Digamos que, hipoteticamente, o disco rígido tenha setores corrompidos ou áreas fisicamente danificadas. Esses setores seriam sobrescritos com o comando acima? Ou ainda seria possível extrair dados dos setores danificados ou corrompidos?
Este é um tipo de pergunta que depende do ponto de vista:
Em algum momento, um setor danificado não pode ser lido ou gravado. Mas um disco rígido é projetado com a ideia de que setores defeituosos podem acontecer em algum momento.
Isso teria consequências se não houvesse um mecanismo para lidar com tais setores: supondo que o setor no endereço do LBA esteja ruim, de repente teríamos um buraco em nosso espaço de endereço sequencial do LBA. Para combater isso, os discos rígidos mantêm um pool de setores sobressalentes. Uma vez que o disco rígido descobriu que o setor no LBA 100, por exemplo, tem problemas, ele pode remapear o LBA 100 para um setor sobressalente e tirar o setor original de serviço.
Portanto, não, você não poderá gravar no LBA 100, que é o setor original ; no entanto, como a unidade mapeará o endereço do LBA para um setor sobressalente, você poderá gravar no LBA 100, afinal. Portanto, parecerá que você pode gravar no setor, desde que a unidade tenha setores sobressalentes disponíveis, enquanto na verdade você está gravando em um setor físico diferente.
Existem algumas condições que acionarão a unidade para lidar com um setor defeituoso:
Essa movimentação já está realocando setores e também tem setores pendentes. Os setores pendentes desaparecerão se você escrever para eles:
Sobre a recuperação de dados ou extração, como você diz, dados de setores defeituosos:
A melhor 'ferramenta' para obter dados de setores defeituosos é o próprio disco rígido. Se uma unidade não conseguir ler um setor, ela aplicará todos os tipos de truques de recuperação de erros sem que você precise solicitá-los. Isso pode levar até 20 segundos por setor. É por isso que as pessoas costumam reclamar que as unidades 'instáveis' são lentas; a unidade está simplesmente tentando muito recuperar os dados de um setor problemático.
O software especializado na recuperação de dados desses setores pode fazer apenas algumas coisas:
EDIT : Se se trata de sobrescrever dados e atingir um setor defeituoso, aplicam-se os mesmos mecanismos:
Se a unidade descobrir um setor defeituoso durante a limpeza, ela será realocada. Alguns podem argumentar que isso não é seguro ou um possível vetor de ataque, já que o setor original é retirado de serviço e, portanto, não é substituído.
No entanto, a recuperação é improvável:
Se a unidade oferecer suporte ao apagamento aprimorado , essa seria sua melhor opção para apagar com segurança todos os setores, incluindo os já realocados.
Em grande parte, a questão depende se "ruim" significa que o sistema operacional o marcou como tal ou se o firmware da unidade o considera inutilizável.
No primeiro caso, uma ferramenta de nível inferior pode ser capaz de substituí-lo.
No segundo, a área ruim foi marcada como inutilizável e possivelmente substituída de um pool de reserva, essas são operações de firmware e há uma possibilidade real de que a área "ruim" não possa ser substituída, exceto usando uma ferramenta de hardware especial.
Se toda a área de armazenamento não tiver sido limpa e reformatada no nível do hardware, é provável que um adversário determinado e bem financiado possa recuperar informações dela. Historicamente, equipamentos forenses de alto nível podiam recuperar vestígios dos dados originais mesmo após uma limpeza de hardware, pois havia vestígios residuais das transições de dados/relógio visíveis como sinais analógicos muito fracos.
As operações nos níveis de firmware ou sistema operacional não impedirão isso.
Em última análise, a única maneira de limpar uma unidade é com um martelo e uma fornalha.
Como não tenho certeza sobre o comportamento em uma configuração, os seguintes casos se aplicam:
SSD
Não há mapeamento fixo entre o(s) setor(es) que você está tentando apagar e o(s) bloco(s) flash usado(s) para armazenar o conteúdo desse(s) setor(es).
Como os blocos flash têm uma vida útil limitada em termos de ciclos de gravação, o firmware do SSD precisa remapear os blocos flash assim que atingirem o fim de sua vida útil. Esta operação de remapeamento não é um acidente, faz parte do tratamento de desgaste regular. Esse processo de envelhecimento ou desgaste se reflete na alteração de certos atributos SMART, dependendo do fabricante. Após o remapeamento, você não pode mais acessar esses setores por meio de seu sistema operacional. Ferramentas especializadas parecem ser capazes de fazer isso, no entanto.
O divisor anti-forense no sistema de criptografia LUKS foi construído para combater tais efeitos.
disco rígido
O mapeamento entre números de setor e setores físicos é normalmente estático, com exceção de erros que parecem ocorrer no final da vida útil do HDD. Os setores pendentes parecem subir como o volume de uma avalanche. O remapeamento de setores pendentes acionado por uma operação de gravação para um setor pendente (ilegível) torna esse setor indisponível para o sistema operacional. Veja a figura RAW para a contagem do setor realocado (atributo SMART) para determinar a extensão do que se tornou inacessível para você.
O que não sei é se uma operação de gravação em um setor pendente acionará uma última tentativa de gravação nesse setor (o que pode resultar em uma gravação bem-sucedida) ou se o setor será imediatamente remapeado.
Conclusão
O remapeamento evita seus esforços de apagamento de HDDs e SSDs, mas o remapeamento é distribuído de maneira diferente ao longo do tempo. O atributo SMART "setores realocados" é comum para HDDs. Você pode usá-lo para avaliar quantos setores ficaram indisponíveis para substituição e agir de acordo. Dada a forma de operação dos SSDs, prefiro destruí-los fisicamente do que confiar na substituição de seu conteúdo com dados aleatórios ou zeros.
Resposta curta: sim, é uma boa ideia preencher a unidade com zeros ou números aleatórios antes de vender, doar ou reaproveitar.
Conselho:
Melhor ainda seria preencher a unidade com dados conhecidos e verificar se a leitura está correta. A ferramenta badblocks possui modo de gravação/ limpeza para tal tarefa:
badblocks -w /dev/disk/by-id/ata-MNFCR-MODEL_SERIANO
(dica: não se preocupe com/dev/sd?
arquivos, enderece as unidades internas/dev/disk/by-id/
para evitar qualquer confusão). Ele gravará quatro padrões para garantir que todos os bits na unidade possam ser alterados. O último padrão é 0x00, o que é conveniente. Pode-se acelerar o teste especificando apenas um padrão usando-t 0
. Como um bom efeito colateral, você também está testando seus cabos e controlador IO, que também podem estar com defeito.Uma maneira alternativa é fazer com que a unidade se limpe e verifique por conta própria, usando o ATA Secure Erase e, em seguida, o SMART Long Self Test. A vantagem é que você não está utilizando os recursos do sistema operacional.
Como a escrita pode curar o impulso:
Às vezes, os dados em um disco rígido tornam-se ilegíveis, não por causa de falha na superfície física, mas por causa da gravação incorreta devido a oscilações de energia aleatórias ou algo assim. Escrever sobre esses setores o restaura totalmente.
A resposta da velha escola seria "sim, é assim que você diz ao firmware da unidade para remapear o setor e substituí-lo por um bom setor sobressalente".
A resposta ainda mais antiga seria "não, você terá que dizer ao seu controlador de disco / sistema operacional para fazer este remapeamento" (isso não se aplica a nenhum disco rígido que você encontrará hoje fora dos contextos de retrocomputação do núcleo duro).
A nova resposta da escola seria "se os setores defeituosos causarem perturbações suficientes para passar pelas atenuações do firmware da unidade, a menos que você tenha CERTEZA da causa, considere a unidade ruim - há muito risco de que o que quer que tenha criado novos setores defeituosos depois o tempo de verificação da fabricação criará mais (por exemplo, contaminação na unidade ou, pior ainda, um efeito dominó), superando o custo de substituição. Também pode haver degradação do desempenho se muitos setores remapeados causarem muitas buscas adicionais (o que são extremamente caros em discos rígidos giratórios).
Então, o que você está perguntando é se a unidade tem um setor defeituoso e você tenta gravar lixo aleatório nela, o que acontece com o setor defeituoso?
Bem, não seria escrito. Mas um bit aleatório de dados deixado para trás em um setor defeituoso não é motivo de preocupação porque é um bit aleatório de dados em um setor defeituoso.
O que se poderia tirar de tais dados? Nada.
Teria tanto valor recuperável quanto uma peça solitária e aleatória de um quebra-cabeça de 1.000.000 peças.
PS Se você pensar que tudo em seu disco rígido é importante para que cada fragmento de um setor seja valioso, não sei o que dizer.
Na minha humilde opinião, as chances estão a seu favor para não se preocupar. A paranóia sobre uma pessoa aleatória extraindo algo valioso deixado para trás em um fragmento de um setor ruim não é útil e não é útil.
Para um SSD, o comando linux
blkdiscard
pode dizer ao disco para descartar seu conteúdo completo. Esta é uma maneira boa e segura de limpar um SSD que não requer substituição e atingirá todos os blocos "inativos" e "sobressalentes", bem como quaisquer blocos já marcados como "ruins"E é muito rápido também, em 10-20 segundos.
Desvantagem, isso não funciona para um disco rígido giratório e você precisa inicializar algum outro disco.
Uma substituição, conforme seu exemplo, não tocará nos blocos sobressalentes/inativos/ruins e, em teoria, o conteúdo pode ser extraído posteriormente. A probabilidade de segredos serem revelados é baixa, mas não zero, então a paranóia é razoável aqui.