2

В настоящее время, когда я хочу стереть USB-диск с псевдослучайными данными в Linux, я делаю следующее:

dd if=/dev/urandom of=/dev/sdb conv=notrunc

urandom очень, очень медленный, он доходит до того, что узким местом становится не устройство.

Я знаю другой метод - твистер Мерсенна. Это используется в одном случае DBAN в качестве PRNG для безопасного стирания данных, и это легко «случайно» достаточно для очистки дисков - и это очень быстро. Однако я не уверен, как бы я использовал это в Linux. Есть ли программа твистера Mersenne, которую я могу затем передать в dd, чтобы стереть диски?

4 ответа4

2

Утилита wipe использует Mersenne Twister PRNG для случайных проходов.

2

Почему вы используете DD для очистки дисков? Шред разработан специально для этого и является общим для всех современных дистрибутивов.

0

Mersenne Twister не является криптографически безопасным. Наблюдая за 624 выходами из алгоритма, можно прогнозировать все прошлые и будущие выходы. Я полагаю, что это лучше, чем иметь все 0 и 1 в том смысле, что лучше маскировать основную магнитную сигнатуру, но это менее эффективно, так как ваш противник будет знать точную схему, которая была написана.

Я не эксперт по безопасности, но я полагаю, что мой ответ будет НЕ использовать Mersenne Twister для этой задачи по этой причине. Но опять же, это все спорный вопрос, поскольку запись всего диска с чем-либо сделает его предыдущее содержимое невосстанавливаемым с помощью современных технологий.

-1

Mersenne Twister имеет огромную периодичность, которую очень сложно даже получить на машине без использования par /GP. Насколько я понимаю, mt19937 (nmersenne twister) из #include <random> в c++ больше похож на http://www.cplusplus.com/reference/random/mersenne_twister_engine/ и http://www.cplusplus.com/reference/random /mt19937 /

w = 32 n = 624, в котором указывается периодичность (с использованием ttcalc): (2 ^ ((n-1) * w) -1)/32 = (2 ^ ((624-1) * 32) -1)/32 = большое огромное огромное число - внутренние компоненты процессора не могут обработать этот размер числа, не урезая его до некоторого смехотворно малого числа. Итак, давайте выясним количество цифр для этой периодичности: ceil (log (abs ((2 ^ ((624-1) * 32) -1)/32)+1; 10)/log (10; 10)) = Количество цифр 6000 цифр. даже ttcalc доходит до 99 цифр. В общем, 2 ^ 64 = 18,446,744,073,709,551,616 и рассчитывается с помощью инструкций процессора, но даже процессор IEEE754 в вашем процессоре не может обработать этот размер числа. Здесь вы попадаете в bignum math и калькуляторы теории чисел, такие как pari/GP, которые могут легко обрабатывать данные до 10 000 цифр - и печатать их тоже.

Мое понимание /dev /urandom и /dev /random заключается в том, что они очень плохие для длительных периодов, таких как очистка дисков, и их не следует использовать для устойчивых потоков случайных чисел только для получения одного номера, такого как пароли и другие криптографии и т. д.

для лучшей производительности программы очистки диска, возможно, nwipe или написание собственной утилиты c++ будет хорошей идеей, использующей mt19937 (это медленно, но эффективно). Вы можете сократить 32 бита до 8 или удвоить полосу пропускания, используя 16 битов, 64-битный mt19937 должен дать вам 32 битов (то же самое - написать отчет об ошибке реализации gcc). верхний бит бесполезен, я думаю, они полагали, что все собираются использовать номер со знаком и никогда не использовать отрицательные числа. библиотека шаблонов <random> c++ должна содержать как подписанные, так и неподписанные типы данных, а не только подписанные.

Лучше всего было бы написать программу на C ++. Я думаю, что стирание как идея является ошибкой, основанной на http://linux.die.net/man/1/shred и http://linux.die.net/man/4/urandom под Usage, где говорится:«Это разработано для безопасности, а не для скорости, и плохо подходит для генерации большого количества случайных данных. "

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

Насколько я понимаю, стирание NIST означает, что вы должны сделать что-то вроде 8 или 15 проходов МП, чтобы свести к минимуму магнитные изображения-призраки. чем больше, тем лучше, но, вероятно, с убывающей отдачей, тем больше вы делаете.

не уверен, что такого рода стресс делает с драйвом. будьте осторожны с тем, какую USB-док-станцию вы используете, единственной, которую я нашел, был startech SATDOCKU3SEF с хорошим и удобным вентилятором (до максимума), если это необходимо.

Кроме того, мне нравится распараллеливать задания, чтобы сэкономить время. просто вставьте & в конце команды и выполните столько заданий, сколько у вас есть каналов. он будет использовать 1 поток на работу. если ваш сервер имеет 120 потоков (4cpux30T), то вы можете иметь до 120-1 заданий, оставляя 1 для системы. чтобы проверить задания, используйте команду jobs и ITHINK towait для выполнения заданий или выключения команды ожидания. как wait ; shutdown -r 0

Я все еще пытаюсь выяснить, как использовать команду foreach с `ls /dev /disk /by-id, там должна быть ошибка в BASH, потому что при перелистывании всего с livecd я должен иметь возможность стереть все диски с помощью

Я занимаюсь разработкой веб-страницы по адресу http://JesusnJim.com/pc-repair/disks-int-ext/wiping-refreshing-drives-free-fast-and-in-PARALLEL.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .