Есть ли альтернатива /dev /urandom?

Есть ли более быстрый способ, чем /dev /[u] случайный? Иногда мне нужно делать что-то вроде

  

cat /dev /urandom> /DEV /SDB

Случайные устройства «слишком» безопасны и, к сожалению, слишком медленны для этого. Я знаю, что есть wipe и аналогичные инструменты для безопасного удаления, но я полагаю, что в Linux есть и некоторые встроенные средства.

21 голос | спросил cgp 8 Maypm09 2009, 23:22:03

15 ответов


12

Если вы хотите сделать «безопасное» удаление жесткого диска (или файла), вы должны посмотреть на утилиту shred.

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

ответил MikeyB 8 Maypm09 2009, 23:34:38
24

К сожалению, у Linux есть плохая реализация urandom. Вы можете использовать aes256-ctr со случайным ключом и получить несколько сотен мегабайт псевдослучайности в секунду, если ваш процессор поддерживает AES-NI (аппаратное ускорение). Я с нетерпением жду возможности повторного включения в современный подход.

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

Этот щенок делает 1,0 ГБ /с на моем ящике (по сравнению с 14 МБ /с /dev /urandom). Он использует urandom только для создания случайного пароля, а затем делает очень быстрое шифрование /dev /zero с помощью этого ключа. Это должен быть криптографически безопасный PRNG, но я не буду предоставлять гарантии.

ответил Tronic 9 PM00000070000001531 2012, 19:25:15
7

В быстром тестировании под Ubuntu 8.04 на Thinkpad T60p с процессором T2500 1 ГБ случайных данных из openssl rand было на 3-4 раза быстрее чем /dev/urandom. То есть

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

... было около 4 минут, пока ...

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

... было чуть более 1 минуты.

Не уверен, есть ли разница в случайном качестве, но, вероятно, это нормально для HD-очистки.

ответил gojomo 1 J0000006Europe/Moscow 2010, 09:41:54
5

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

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

настройки шифрования жесткого диска Linux

ответил user104021 14 WedEurope/Moscow2011-12-14T00:14:49+04:00Europe/Moscow12bEurope/MoscowWed, 14 Dec 2011 00:14:49 +0400 2011, 00:14:49
5

Если вам нужно надежно стереть HD, есть один инструмент очень : DBAN

ответил Arg 9 PM00000070000005931 2012, 19:55:59
5

Если вы хотите удалить огромное блок-устройство, я нашел более надежным использование dd и устройство mapper вместо перенаправление данных случайных данных. Следующее будет отображать /dev/sdb в /dev/mapper/deviceToBeErased en - и расшифровывать прозрачно между ними. Чтобы заполнить устройство на зашифрованном конце, нули скопированы в сторону открытого текста картографа (/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

Зашифрованные данные на /dev/sdb гарантируют неотличимость от случайных данных, если отсутствует серьезная слабость в AES. Используемый ключ захватывается из /dev/random (не волнуйтесь - он использует только 32 байта).

ответил Perseids 16 FebruaryEurope/MoscowbSun, 16 Feb 2014 05:00:01 +0400000000amSun, 16 Feb 2014 05:00:01 +040014 2014, 05:00:01
4

проверить frandom

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

в соответствии с моим тестом он быстрее всего

ответил MA1 9 J000000Saturday11 2011, 00:05:28
2

Чем быстрее ваш инструмент, тем менее безопасным будет результат. Создание хорошей случайности требует времени.

Во всяком случае, вы можете использовать что-то вроде dd if = /dev /zero of = /dev /sdb , но, очевидно, это не будет случайным, оно просто будет стираться намного быстрее.

Другим вариантом может быть использование этого метода /sbin /badblocks -c 10240 -s -w -t random -v /dev /sdb быстрее, чем urandom, но badblocks PRNG меньше случайным образом.

ответил Zoredache 8 Maypm09 2009, 23:28:54
2

/dev/random использует много энтропии системы и поэтому производит только медленный поток данных.

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

Вы должны сделать PRNG своего собственного дизайна и залить его чем-то из /dev/random или /dev/urandom. Если вам это нужно немного более случайным образом, засевайте его периодически - каждые несколько МБ (или независимо от длины вашего пэнга). Получение 4 байтов (32-битное значение) из уранда или случайного числа достаточно быстро, чтобы вы могли делать это каждые 1k данных (reseed your prng every 1k) и получать очень случайные результаты, очень быстро, очень быстро.

-Adam

ответил Adam Davis 8 Maypm09 2009, 23:29:06
2

Если вы хотите быстро стереть жесткий диск, напишите ему неслучайные данные. Это не менее безопасно, чем использование случайных данных. В любом случае, при подключении к компьютеру исходные данные не могут быть прочитаны. Переписывание данных на жестком диске: Великая борьба с протиранием показывает, что исходные данные не могут читайте с помощью микроскопа.

ответил sciurus 9 J000000Saturday11 2011, 00:40:07
2

Формат с LUKS и dd по зашифрованному тому. Затем используйте /dev /urandom, чтобы стереть заголовок LUKS.

Если у вас есть аппаратная поддержка AES, это очень быстрое решение.

Коротко:

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

сделано!

Смотрите мой блог: Быстрое заполнение диска случайными битами (без /dev /urandom)

ответил Eric Wheeler 23 PMpTue, 23 Apr 2013 21:07:16 +040007Tuesday 2013, 21:07:16
2

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

В этом примере я удаляю механический жесткий диск емкостью 500 ГБ всего за 102 минуты. Даже когда он заполнен перераспределенными секторами:

[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 

Более подробную информацию вы можете найти на странице ata.wiki.kernel.org , однако в их примере не используется --security-erase-enhance, что необходимо для удаления ранее упомянутых перераспределенных секторов.

ответил Per Mejdal Rasmussen 15 PM00000090000001831 2014, 21:37:18
1

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

Вы можете создать небольшой размер случайных данных, а затем просто повторять это снова и снова на диске.

Просто убедитесь, что этот фрагмент данных не кратен нормальному размеру блока диска, чтобы гарантировать, что вы не закончите переписывание коррелированных блоков данных с помощью одного и того же бита случайных данных. Размер блока, который представляет собой простое число в диапазоне ~ 1 МБ, должен делать красиво.

Для дополнительной безопасности просто делайте это несколько раз, используя каждый раз каждый размер блока.

ответил Alnitak 9 Mayam09 2009, 00:38:29
1

Утилита «shred» проста и быстра. Если атрибуты SMART на диске указывают нулевые перераспределенные сектора, «клонирование», вероятно, достаточно безопасно.

Однако, если накопитель перераспределил сектора, данные о поврежденных секторах не будут перезаписаны. Если поврежденные местоположения содержали конфиденциальные данные до их перераспределения, «измельчение» может быть недостаточно хорошим. «Плохие» сектора могут быть прочитаны путем сброса карты распределения диска и (повторно) их чтения.

Возможность сброса карты распределения плохого сектора зависит от производителя и модели привода.

ответил drok 9 Mayam13 2013, 10:07:49
0

Если все, что вы хотите сделать, это перезаписать диск, то не имеет значения, что вы используете, потому что что-то вообще будет превзойти что-либо, кроме лаборатории судебной экспертизы, и я бы не стал доверять чему-то, что не мешало бы диску, чтобы остановить это уровень ресурсов.

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

(head -c 4096 /dev/urandom; cat /dev/sdb/) > /dev/sdb
ответил BCS 9 Mayam09 2009, 00:15:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132