it-swarm-pt.tech

Existe uma alternativa para / dev / urandom?

Existe alguma maneira mais rápida que/dev/[u] random? Às vezes, 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 similares para exclusão segura, mas suponho que também haja alguns meios integrados para isso no Linux.

21
cgp

Se você deseja fazer uma exclusão "segura" de um disco rígido (ou arquivo), deve examinar o utilitário de fragmentação.

Como os pôsteres anteriores apontam, os dispositivos aleatórios/dev/* devem ser usados ​​como fonte de pequenos blocos de dados aleatórios.

12
MikeyB

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 sua CPU suportar o AES-NI (aceleração de hardware). Estou ansioso para mudar aleatoriamente para uma abordagem moderna.

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

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 criptograficamente seguro PRNG mas eu não darei garantias.

24
Tronic

Em um teste rápido no Ubuntu 8.04 em um Thinkpad T60p com CPU T2500, 1 GB de dados aleatórios de openssl Rand foi 3-4X mais rápido que /dev/urandom. Isso é,

time cat /dev/urandom | head -c 1000000000 > /dev/null

... foi cerca de 4 minutos enquanto ...

time openssl Rand 1000000000 | head -c 1000000000 > /dev/null

... 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.

7
gojomo

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

5
user104021

Se você deseja apagar um enorme dispositivo de bloco, achei mais robusto usar dd e o mapeador de dispositivos em vez do redirecionamento de saída de dados aleatórios. O seguinte mapeará /dev/sdb para /dev/mapper/deviceToBeErased e descriptografando 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).

cryptsetup --cipher aes-xts-plain64 --key-file /dev/random --keyfile-size 32 create deviceToBeErased /dev/sdb
dd if=/dev/zero of=/dev/mapper/deviceToBeErased bs=1M

Os dados criptografados em /dev/sdb é garantido que é indistinguível de dados aleatórios se não houver fraqueza grave no AES. A chave usada é obtida de /dev/random (não se preocupe - ele usa apenas 32 bytes).

5
Perseids

Se você precisar limpar com segurança um HD, existe uma ferramenta muito poderosa: DBAN =

5
Arg

verifique frandom

http://billauer.co.il/frandom.html

de acordo com o meu teste é mais rápido

4
MA1

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 urandom, mas os badblocks PRNG é menos aleatório.

2
Zoredache

/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 semear 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

2
Adam Davis

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:

cryptsetup luksFormat /dev/sdX
cryptsetup luksOpen /dev/sdX cryptodev
dd if=/dev/zero bs=1M of=/dev/mapper/cryptodev
cryptsetup luksClose cryptodev
# wipe the luks header.  Yes, it uses /dev/urandom but only for 2MB of data:
dd if=/dev/urandom bs=1M count=2 of=/dev/sdX

feito!

Veja meu blog: Preencha rapidamente um disco com bits aleatórios (sem/dev/urandom)

2
Eric Wheeler

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 da limpeza mostra que os dados originais também não podem ser lidos usando um microscópio.

2
sciurus

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 incorporadas 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:

[email protected]:~# hdparm --security-set-pass Eins /dev/sdaj
security_password="Eins"

/dev/sdaj:
 Issuing SECURITY_SET_PASS command, password="Eins", user=user, mode=high
[email protected]:~# time hdparm --security-erase-enhanced Eins /dev/sdaj
security_password="Eins"

/dev/sdaj:
 Issuing SECURITY_ERASE command, password="Eins", user=user

real    102m22.395s
user    0m0.001s
sys     0m0.010s

[email protected]:~# smartctl --all /dev/sdaj | grep Reallocated
  5 Reallocated_Sector_Ct   0x0033   036   036   036    Pre-fail Always   FAILING_NOW 1327 

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 mencionados anteriormente.

2
Per Mejdal Rasmussen

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 correlatos pelos mesmos pedaços aleatórios. Um tamanho de bloco que seja 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.

1
Alnitak

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 sobre 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.

1
drok

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á)

(head -c 4096 /dev/urandom; cat /dev/sdb/) > /dev/sdb
0
BCS