Я пытаюсь полубезопасно стереть кучу жестких дисков. Следующее работает на 20-50Мб / с
dd if=/dev/zero of=/dev/sda
Но
dd if=/dev/random of=/dev/sda
Кажется, не работает. Также, когда я печатаю
dd if=/dev/random of=stdout
Это дает мне всего несколько байтов, независимо от того, что я передаю для bs = и count =
Я использую / dev / random неправильно? Какую другую информацию я должен искать, чтобы продвинуть это устранение проблем? Есть ли другой способ сделать это с помощью сценария или что-то вроде
makeMyLifeEasy | dd if=stdin of=/dev/sda
Или что-то типа того...
/dev/random
возвращает только несколько байтов, см superuser.com/a/712515/139307Ответы:
Оба
/dev/random
и/dev/urandom
используют «пул энтропии». Когда пул заканчивается, он/dev/random
ожидает его пополнения, что требует отслеживания поведения системы (ввод с клавиатуры, движение мыши и т. Д.), В то время как он/dev/urandom
будет по-прежнему выдавать псевдослучайные данные./dev/random
теоретически более высокого качества, но/dev/urandom
почти наверняка достаточно для ваших целей. (Но даже/dev/urandom
, вероятно, будет медленнее, чем некоторые другие методы. Более быстрый, но менее качественный генератор, вероятно, достаточно хорош для стирания жестких дисков. Не ясно, что злоумышленник получит какое-либо преимущество от знания последовательности, которая будет сгенерирована, или что случайные числа лучше для этой цели, чем последовательность типа 0, 1, 2, 3, 4, ....)Цитирую справочную
random(4)
страницу:ОБНОВЛЕНИЕ : страница man random (4) была обновлена с тех пор, как я ее написал. Теперь говорится:
Смотрите также " Мифы о / dev / urandom " Томаса Хуна.
Но
/dev/urandom
даже если он не будет блокироваться, он может быть слишком медленным, если вы хотите генерировать огромные объемы данных. Сделайте некоторые измерения в вашей системе, прежде чем пытаться это.РЕДАКТИРОВАТЬ: Ниже приводится отступление от "истинных" случайных чисел против псевдослучайных чисел. Если все, что вас интересует, это практический ответ на вопрос, вы можете перестать читать сейчас.
Я, кажется, утверждаю (в том числе в других ответах здесь), что
/dev/random
реализует «истинный» генератор случайных чисел, в отличие от генератора псевдослучайных чисел (PRNG). Например, статья Википедии делает такое утверждение. Я не верю, что это правильно. Там какая - то дискуссия о нем здесь , который относится к аппаратным генераторам случайных чисел, но я не вижу никаких доказательств того, что/dev/random
обычно используется такое устройство, или что типичные компьютеры даже есть такое устройство. Они отличаются от PRNG, таких какrand()
функция C, тем, что они не являются детерминированными, поскольку они собирают энтропию из источников, которые практически непредсказуемы.Я бы сказал, что есть три класса генераторов «случайных» чисел:
Детерминированные PRNG, такие как
rand()
функция C , которые используют алгоритм для генерации повторяемых последовательностей, которые имеют (более или менее) статистические свойства действительно случайной последовательности. Они могут быть достаточно хороши для игр (учитывая хороший способ их заполнения) и необходимы для приложений, которые требуют повторяемости, но они не подходят для криптографии.Генераторы , как
/dev/random
и/dev/urandom
что урожай энтропия из некоторого источника практически непредсказуемого , как активность ввода / вывода (именно поэтому стучать на клавиатуре или перемещение мыши может вызвать/dev/random
для получения большего количества данных). Не ясно (мне) они удовлетворяют ли определение ПСЧ (я видел определений , которые говорят ГСЧ является детерминированным), но при этом они не истинные генераторы случайных чисел.Аппаратные генераторы случайных чисел , которые физически непредсказуемы даже с полным знанием их начального состояния, и которые дополнительно используют математические методы для обеспечения правильных статистических свойств.
источник
/dev/urandom
явно псевдослучайный./dev/random
отличается тем, что он пытается сделать консервативную оценку энтропии входных данных и не выдает больше энтропии, чем может (думает) на самом деле. Это не зависит от наличия выделенного устройства TRNG, поскольку истинная энтропия также может быть получена из независимых событий любого типа, таких как ввод с клавиатуры или сети в зависимости от времени./dev/random
является источником истинной энтропии, действительно случайных байтов. Как таковой, он нуждается в источнике случайности. Вы можете «использовать» случайность, читая с нее. Это даст вам всю случайность, которую он имеет, затем блокирует, пока не получит больше. Вы, вероятно, просто сидите там в ожидании, и машина получает совсем немного новой случайности, и она просто ждет./dev/random
для действительно случайной криптографии, случайности высокого качества. Таким образом, это избыточное количество дисков для перезаписи. Писать с/dev/zero
нескольких раз в порядке. Или вы можете написать с/dev/urandom
, который не будет блокировать и дает псевдослучайные числа, когда он исчерпывает истинную случайность.источник
/dev/random
не генерирует «действительно случайные байты». Он генерирует более качественные псевдослучайные байты, чем/dev/urandom
делает.В Linux / dev / random - это специальный файл, который обслуживает высококачественные псевдослучайные числа. Эта реализация собирает энтропию от событий, происходящих от клавиатуры, мыши, диска и системных прерываний. (см. этот документ). Поэтому, когда таких событий нет, пул энтропии пуст, чтение из / dev / random будет блокировать до тех пор, пока не будет собран дополнительный шум окружающей среды. Это объясняет вашу проблему. Для заполнения энтропийного пула вы можете нажимать клавиши на клавиатуре.
С другой стороны, генератор действительно случайных чисел использует аппаратный генератор случайных чисел, который генерирует случайные числа из физических процессов. Эти процессы включают микроскопические явления, которые генерируют низкоуровневый, статистически случайный «шумовой» сигнал, такой как тепловой шум или фотоэлектрический эффект или другие физические явления. Эти процессы, в теории, совершенно непредсказуемы, и утверждения теории о непредсказуемости подлежат экспериментальной проверке.
Аппаратный генератор случайных чисел обычно состоит из преобразователя для преобразования некоторых аспектов физических явлений в электрический сигнал, усилителя и других электронных схем для увеличения амплитуды случайных колебаний до макроскопического уровня и некоторого типа аналого-цифрового преобразователя. для преобразования выходных данных в цифровое число, часто простую двоичную цифру 0 или 1. Путем многократной выборки случайно изменяющегося сигнала получается серия случайных чисел.
Аппаратный генератор случайных чисел собирает шум окружающей среды от драйверов устройств и других источников в пул энтропии. Из этого энтропийного пула создаются случайные числа. При чтении устройство / dev / random будет возвращать только случайные байты в пределах предполагаемого количества битов шума в пуле энтропии. Это объясняет вашу проблему.
Некоторые реализации Hardware RNG описаны в документации к ядру и информации об устройстве .
Аналогом / dev / random является / dev / urandom («разблокированный» / неблокирующий случайный источник), который повторно использует внутренний пул для генерации большего количества псевдослучайных битов. Это означает, что вызов не будет блокироваться, но выходные данные могут содержать меньше энтропии, чем соответствующее чтение из / dev / random.
Поэтому, если вы не хотите создавать CSPRNG (криптографически безопасный генератор псевдослучайных чисел), вы должны использовать / dev / urandom.
источник
/dev/random
Действительно ли используются такие источники, как тепловой шум? Насколько я понимаю, он использует информацию из (относительно) непредсказуемого состояния системы, такого как активность ввода-вывода и состояние процесса. Я не думаю, что большинство систем Linux даже имеют оборудование, которое может собирать тепловые шумы. Можете ли вы привести некоторые документы по этому поводу?/dev/random
генерирует «действительно случайные числа».Не отвечая на ваш вопрос - здесь уже есть полные ответы - вы также можете проверить загрузку Darik's Boot и Nuke aka DBAN, которая представляет собой очиститель дисковода для live-CD.
источник
Просто используйте
shred
команду, которая поставляется с coreutils. Он использует случайные данные эффективным способом. dd - инструмент низкого уровня, и это, вероятно, слишком низкий уровень для этой задачи.shred
эффективно пропустит неписываемые части устройства, например.источник