Existe alguma maneira mais rápida que / dev / [u] random? Às vezes, eu preciso fazer coisas como
cat / dev / urandom> / dev / sdb
Os dispositivos aleatórios são "muito" seguros e infelizmente muito lentos para isso. Eu sei que existem wipe
e ferramentas semelhantes para exclusão segura, mas suponho que também haja alguns meios integrados para isso no Linux.
Respostas:
Se você deseja fazer uma exclusão "segura" de um disco rígido (ou arquivo), deve examinar o utilitário shred.
Como os pôsteres anteriores apontam, os dispositivos aleatórios / dev / * devem ser usados como fonte de pequenos blocos de dados aleatórios.
fonte
Infelizmente, o Linux tem uma implementação ruim do urandom. Você pode usar o aes256-ctr com uma chave aleatória e obter várias centenas de megabytes de pseudo-aleatoriedade por segundo, se a sua CPU suportar o AES-NI (aceleração de hardware). Estou ansioso para mudar aleatoriamente para uma abordagem moderna.
Este filhote faz 1,0 GB / s na minha caixa (em comparação com 14 MB / s de / dev / urandom). Ele usa urandom apenas para criar uma senha aleatória e, em seguida, faz uma criptografia muito rápida de / dev / zero usando essa chave. Este deve ser um PRNG criptograficamente seguro, mas não darei garantias.
fonte
pv
um bom indicador de progresso.openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero | pv -pterb > /dev/sdb
.pv
recomendação, você pode tubo parapv -pterb -s $(blockdev --getsize64 /dev/sdb) >/sdb
terpv
mostrar o progresso para terminar a gravação.Em um teste rápido no Ubuntu 8.04 em um Thinkpad T60p com CPU T2500, 1 GB de dados aleatórios
openssl rand
foi 3-4X mais rápido que/dev/urandom
. Isso é,... foi cerca de 4 minutos enquanto ...
... foi pouco mais de 1 minuto.
Não tenho certeza se há uma diferença na qualidade aleatória, mas provavelmente é bom para a limpeza de HD.
fonte
Vejo muitas respostas dizendo que o uso de dados aleatórios não é importante. Isso é verdade se tudo que você está tentando fazer é limpar a unidade, mas não tanto se estiver limpando-a em preparação para a criptografia de disco.
Se você preencher um dispositivo com dados não aleatórios, coloque uma partição criptografada, pois poderá ocorrer um problema. A parte da unidade que está armazenando dados criptografados se destacará do restante da unidade, porque os dados criptografados parecerão aleatórios e o restante não. Isso pode ser usado para determinar informações sobre o disco criptográfico que podem ser usadas para quebrá-lo. O link abaixo explica a teoria por trás de como alguns dos ataques mais comuns funcionam e como se defender contra eles (no Linux, pelo menos).
Configurações de criptografia de disco rígido do Linux
fonte
Se você precisar limpar com segurança um HD, existe uma ferramenta muito poderosa: DBAN
fonte
Se você deseja apagar um enorme dispositivo de bloco, achei mais robusto o uso
dd
e o mapeador de dispositivos em vez de redirecionar a saída de dados aleatórios. O seguinte será mapeado/dev/sdb
para/dev/mapper/deviceToBeErased
descriptografar e descriptografar de forma transparente no meio. Para preencher o dispositivo na extremidade criptografada, os zeros são copiados para o lado do texto sem formatação do mapeador (/dev/mapper/deviceToBeErased
)./dev/sdb
É garantido que os dados criptografados são indistinguíveis dos dados aleatórios se não houver uma fraqueza grave no AES. A chave usada é obtida/dev/random
(não se preocupe - ela usa apenas 32 bytes).fonte
verifique frandom
http://billauer.co.il/frandom.html
de acordo com o meu teste é mais rápido
fonte
Quanto mais rápida sua ferramenta, menos seguro será o resultado. Gerar boa aleatoriedade leva tempo.
De qualquer forma, você pode usar algo como dd se = / dev / zero de = / dev / sdb , mas obviamente isso não será aleatório, apenas será apagado muito mais rapidamente.
Outra opção pode ser usar esse método / sbin / badblocks -c 10240 -s -w -t random -v / dev / sdb , é mais rápido que o aleatório, mas o PRNG dos badblocks é menos aleatório.
fonte
/dev/random
usa muita entropia do sistema e, portanto, produz apenas um fluxo de dados lento./dev/urandom
é menos seguro e mais rápido, mas ainda é voltado para pequenos pedaços de dados - não serve para fornecer um fluxo contínuo de números aleatórios de alta velocidade.Você deve criar um PRNG de seu próprio design e propagar com algo de
/dev/random
ou/dev/urandom
. Se você precisar um pouco mais aleatoriamente, propague-o periodicamente - a cada poucos MB (ou qualquer que seja a duração da sua impressão). Obter 4 bytes (valor de 32 bits) de urandom ou random é rápido o suficiente para que você possa fazer isso a cada 1k de dados (repassar sua prng a cada 1k) e obter resultados muito aleatórios, indo muito, muito, rapidamente.-Adão
fonte
Se você deseja limpar um disco rígido rapidamente, escreva dados não aleatórios nele. Isso não é menos seguro do que usar dados aleatórios. De qualquer forma, quando conectados a um computador, os dados originais não podem ser lidos. Substituindo dados do disco rígido: o grande conflito de limpeza mostra que os dados originais também não podem ser lidos usando um microscópio.
fonte
Formate com LUKS e dd sobre o volume criptografado. Em seguida, use / dev / urandom para limpar o cabeçalho LUKS.
Se você possui suporte AES de hardware, esta é uma solução muito rápida.
Resumidamente:
feito!
Veja meu blog: preencha rapidamente um disco com bits aleatórios (sem / dev / urandom)
fonte
Se você deseja apagar um disco rígido, o dd não exclui o conteúdo dos setores realocados e fica muito lento se o disco rígido estiver morrendo. Em vez disso, você pode usar as unidades integradas na função apagar, que foi padronizada por um longo tempo.
Neste exemplo, estou apagando um disco rígido mecânico de 500 GB em apenas 102 minutos. Mesmo quando está cheio de setores realocados:
Você pode ver mais detalhes em ata.wiki.kernel.org , no entanto, o exemplo deles não usa --security-erase-Enhanced, o que é necessário para excluir os setores realocados anteriormente mencionados.
fonte
Na prática, provavelmente não há necessidade de propagar o disco inteiro de um fluxo continuamente aleatório.
Você pode criar um pedaço modesto de dados aleatórios e repetir isso repetidamente no disco.
Apenas certifique-se de que esse pedaço de dados não seja um múltiplo do tamanho normal do bloco do disco, para garantir que você não substitua os blocos correlacionados pelos exatamente o mesmo pedaço de dados aleatórios. Um tamanho de pedaço que é um número primo na faixa de ~ 1 MB deve funcionar bem.
Para segurança adicional, faça-o mais algumas vezes, usando um tamanho de pedaço diferente a cada vez.
fonte
O utilitário 'shred' é fácil e rápido. Se os atributos SMART da unidade indicarem zero setores realocados, o 'shred' provavelmente será seguro o suficiente.
No entanto, se a unidade tiver realocado setores, os dados dos setores danificados não serão substituídos. Se os locais danificados continham dados confidenciais antes de serem realocados, o 'shred' pode não ser bom o suficiente. Os setores 'ruins' podem ser lidos redefinindo o mapa de alocação da unidade e (repetidamente) lendo-os.
A capacidade de redefinir o mapa de alocação de setor defeituoso varia de acordo com o fabricante e o modelo da unidade.
fonte
Se tudo o que você quer fazer é sobrescrever o disco, não importa o que você use, porque qualquer coisa superará qualquer coisa menos do que um laboratório forense e eu não confiaria em nada além de reduzir a unidade para interromper esse nível de recursos .
Basta usar uma fonte não aleatória como todos os zeros ou uns ou um padrão repetitivo como (acho que isso funcionará)
fonte