Почему GNU уничтожается быстрее, чем dd при заполнении диска случайными данными?

8

Я заметил, что при безопасном стирании жесткого диска перед выводом из эксплуатации это dd if=/dev/urandom of=/dev/sdaзанимает почти целый день, тогда как shred -vf -n 1 /dev/sdaна одном компьютере и том же диске требуется всего несколько часов.

Как это возможно? Я думаю, что узким местом является ограниченный объем производства /dev/urandom. Использует ли shred какой-то генератор псевдослучайности, который является менее случайным и достаточным только для его единственной цели (т.е. более эффективной), чем urandom?


источник
Обратите внимание, что лучшим вариантом для стирания дисков, особенно дисков ssd, является команда безопасного стирания SATA. Любой другой вариант - запрет уничтожения - потерпит неудачу. Это гораздо быстрее, и может занять несколько секунд на SSD.
Мартен Бодьюз

Ответы:

11

Шред использует внутренний псевдослучайный генератор

По умолчанию эти команды используют внутренний псевдослучайный генератор, инициализированный небольшим количеством энтропии, но могут быть направлены на использование внешнего источника с опцией --random-source = file. Ошибка файла, если файл не содержит достаточно байтов.

Например, файл устройства / dev / urandom может использоваться в качестве источника случайных данных. Как правило, это устройство собирает шум окружающей среды от драйверов устройств и других источников в пул энтропии и использует пул для генерации случайных битов. Если в пуле не хватает данных, устройство повторно использует внутренний пул для получения большего количества битов, используя криптографически безопасный генератор псевдослучайных чисел. Но имейте в виду, что это устройство не предназначено для генерации объемных случайных данных и является относительно медленным .

Я не убежден , что случайные данные является более эффективными , чем один проход из нулей (или любое другое значение байта) при заслоняя предыдущее содержимое.

Для безопасного вывода из эксплуатации я использую большой магнит и большой молоток.

RedGrittyBrick
источник
2

Я полагаю, что это будет вызвано ddиспользованием кусков меньшего размера для записи данных. Попробуйте dd if=... of=... bs=(1<<20)посмотреть, работает ли он лучше.

jpalecek
источник
Я попробую это в следующий раз и опубликую результаты.
+1 ddРазмер блока по умолчанию - 512. На моем компьютере он работал намного ниже ограничений диска.
Петр Финдейзен
Вероятно, / dev / urandom достаточно быстрый - размер блока dd почти наверняка является проблемой.
Дэн Притц
2
Как только вы увеличиваете размер блока, кажется, что это /dev/urandomможет стать узким местом - я тестирую некоторые SSD-накопители через USB 3.0 и по той же ddкоманде получаю 326 МБ / с, if=/dev/zeroно только 12,8 МБ / сif=/dev/urandom
austinmarton