O utilitário wipe
usa um Mersenne Twister PRNG para os passes aleatórios.
Atualmente, quando quero limpar um disco USB com dados aleatórios no Linux, faço o seguinte:
dd if=/dev/urandom of=/dev/sdb conv=notrunc
urandom
é muito, muito lento, chega ao ponto em que o gargalo não é o dispositivo.
Eu sei de outro método - o twister Mersenne. Isso é usado em uma instância pelo DBAN como um PRNG para apagar dados com segurança, e é facilmente "aleatório" o suficiente para limpar unidades - e é muito rápido. No entanto, não tenho certeza de como usá-lo no Linux. Existe um programa de twister Mersenne que eu possa canalizar em dd para limpar unidades com?
O utilitário wipe
usa um Mersenne Twister PRNG para os passes aleatórios.
Por que você está usando DD para limpar unidades? O shred foi projetado especificamente para isso e é comum a todas as distros modernas.
O Mersenne Twister não é criptograficamente seguro. Depois de observar 624 saídas do algoritmo, é possível prever todas as saídas passadas e futuras. Suponho que seja melhor do que ter todos os 0s e 1s no sentido de que melhorará a máscara da assinatura magnética subjacente, mas isso é menos eficaz, já que seu adversário saberá o padrão exato que foi escrito.
Não sou especialista em segurança, mas suponho que minha resposta seria NÃO usar o Mersenne Twister para essa tarefa devido a esse motivo. Mas, novamente, é um ponto discutível, já que escrever o disco inteiro com qualquer coisa tornará seu conteúdo anterior irrecuperável com a tecnologia atual.
O mersenne twister tem uma enorme periodicidade que é muito difícil até obter um valor em uma máquina sem usar pari / GP. meu entendimento é que mt19937 (nmersenne twister) de #include <random>
em c ++ é mais parecido com link e link
w = 32 n = 624 que afirma que a periodicidade (usando ttcalc) é (2 ^ ((n-1) * w) -1) / 32 = (2 ^ ((624-1) * 32) -1 ) / 32 = grande e enorme número enorme - os internos da cpu não conseguem lidar com esse tamanho de um número sem truncá-lo para algum número ridiculamente pequeno. então vamos descobrir o número de dígitos para essa periodicidade: ceil (log (abs ((2 ^ ((624-1) * 32) -1) / 32) +1; 10) / log (10; 10)) = 6000 dígitos em número. mesmo ttcalc só vai até 99 dígitos. togiveyou uma idéia, 2 ^ 64 = 18,446,744,073,709,551,616 e é calculável com instruções cpu, mas nem mesmo o IEEE754 FPU em seu processador pode lidar com esse tamanho de número. é aí que você entra em calculadoras matemáticas e de números, como pari / GP, que podem manipular material para 10.000 dígitos facilmente - e imprima também.
minha compreensão de / dev / urandom e / dev / random é que eles são muito ruins para corridas longas como discos de limpeza e não devem ser usados para fluxos estáveis de números aleatórios apenas para aquisições de número único, como senhas e outras criptografias etc.
para melhor desempenho em um programa de limpeza de disco, talvez nwipe ou escrever seu próprio utilitário c ++ seria uma boa idéia que usa mt19937 (é lento, mas eficaz). você pode truncar os 32 bits para apenas 8 ou dobrar sua largura de banda usando 16 bits no valor de 64 bits o mt19937 deve dar 32 bits no valor (mesmo - deve escrever um relatório de bug sobre o problema de implementação no gcc). o bit superior é inútil, acho que eles imaginaram que todos usariam um número assinado e nunca usariam números negativos. a biblioteca de modelos <random>
c ++ deve acomodar tipos de dados assinados e não assinados, não apenas assinados.
A melhor coisa seria escrever um programa em c ++. Eu acho que limpar como uma idéia é falho com base no link e link em Uso onde diz" Ele é projetado para segurança, não para velocidade e é pouco adequado para gerar grandes quantidades de dados aleatórios. "
Se a única coisa que você estava preocupando era a periodicidade (distância entre padrões repetidos), eu não acho que isso seja um problema. criptografia não é uma das minhas especialidades, mas
minha compreensão da limpeza do NIST é que você deve fazer algo como 8 ou 15 passagens de MT, para reduzir ao mínimo as imagens fantasmas magnéticas. quanto mais, melhor, claro, mas provavelmente com retornos decrescentes, mais você faz.
Não tenho certeza do que esse tipo de estresse causa ao disco. Tenha cuidado com o que usb dock você usa, startech SATDOCKU3SEF foi o único que eu encontrei com um bom e útil fã sobre ele (manivela até max), se isso for necessário.
também gosto de trabalhar em paralelo para poupar tempo. apenas stickan & no final do comando e faça quantas tarefas você tiver. Ele usará 1 thread por trabalho. Se o seu servidor tiver 120 threads (4cpux30T), você poderá ter até 120-1 jobs, deixando 1 para o sistema. Verifique as tarefas, use o comando jobs e procure o jobashutdown ou o que usar o comando wait. como wait ; shutdown -r 0
Eu ainda estou tentando descobrir como fazer uso do comando foreach
com 'ls / dev / disk / by-id deve haver um bug no BASH porque rola tudo de um livecd eu deveria ser capaz de limpar todos os discos com
Estou desenvolvendo uma página da web em link
Tags debian secure-erase linux