Джерела ентропії для Linux


9

Скажімо, я хочу, щоб гігабайт або стільки випадкових даних з / dev / random, що підходять для одноразового майданчика (так, що / dev / urandom вийшов.) Як я можу / dev / random додати достатньо ентропії для цього? Я шукаю конкретні команди та програми для цього. Я не хочу нічого купувати. Я використовую Arch Linux, якщо це має значення.


Невже така програма не перетвориться / dev / random у щось, що має таку ж проблему, як / dev / urandom, яку ви не хочете використовувати? Або ви маєте на увазі щось, що отримує додаткову ентропію з якогось пристрою або через мережу?
Антон

@Anthon Я говорю про конкретні програми для вилучення випадковості з джерела ентропії, такі як шум від пострілу, тепловий шум, якийсь пристрій тощо ... Програма не створюватиме випадковість сама.
PyRulez

... наприклад, команда або програма, яка говорить Here — type something:, а потім вимірює часові дельти між натисканням клавіші з більшою точністю, ніж людина може контролювати?
G-Man каже: "Відновіть Моніку"


1
У ньому згадується одноразовий майданчик як одне з двох винятків твердження, що _'... майже всі криптографічні алгоритми ... "тільки" пропонують комп'ютерну безпеку ". Якщо ви не можете процитувати щось, що я пропустив, де сказано, що одноразові колодки не можуть використовувати урадон
Марно

Відповіді:


4

Дві програми, які можуть збільшити пул ентропії, не вимагаючи додаткового обладнання, є rng-toolsі haveged. rng-toolsвикористовує RNG, доступні в сучасних процесорах та наборах чіпів, havegedвикористовує сучасні випадковість процесора (поведінка кеша тощо). Обидва доступні в Arch, а у Вікі Arch є цікава сторінка, де їх обговорюють. Я не намагався використовувати їх для створення гігабайт даних, але це повинно бути можливим за розумну кількість часу.

Ви чітко виключаєте придбання будь-чого, але тільки для повноти, на LWN є цікава стаття про ентропію з NeuG , яка включає обговорення havegedта різні інші підходи. Ви можете придбати плату STM8S, здатну працювати з NeuG менше ніж за 10 доларів, або FST-01 за 35 доларів.


4

На жаль, / dev / random також не підходить для використання в одноразовій накладці, принаймні, не у вигляді одноразової накладки (з надійними гарантіями безпеки), яку більшість людей уявляє собі, коли думають або застосовують одноразові прокладки. Більшість інформації, наведеної нижче, узагальнена з (дуже довгої) статті на веб- сайті http://www.2uo.de/myths-about-urandom/

Проблема полягає в тому, що / dev / random не є справді випадковим; він використовує CSPRNG для отримання свого результату. Насправді / dev / random використовує такий самий CSPRNG, як / dev / urandom. Єдина відмінність полягає в тому, що / dev / випадкові блоки, якщо її внутрішня оцінка ентропії недостатня.

Слово "оцінка" в попередньому реченні є ключовим. Більшість людей вважає, що ця оцінка завжди точна і досконала, але насправді вона зовсім не точна. Щойно оцінка невірна, ви втрачаєте всі підтверджені гарантії безпеки одноразового майданчика, і все, що вам залишилося, - це обчислювальна безпека - не краще, ніж якби ви використовували / dev / urandom!

Отримати оцінку ентропії трохи неправильно, це не зробить одноразову прокладку трохи небезпечною. Перевірена гарантія безпеки одноразової прокладки - це все або нічого.

Передумова цього питання полягає в тому, що проблеми з / dev / random можна «виправити», додавши ще ентропії. На жаль, ця передумова неправильна. Зловмисне джерело ентропії набагато гірше, ніж взагалі ніяка ентропія, оскільки джерела ентропії часто мають доступ до внутрішніх даних і можуть експортувати ці дані приховано, використовуючи вихід RNG - див. Http://blog.cr.yp.to/20140205-entropy .html для повної дискусії (занадто довго, щоб тут резюмувати). Зокрема, апаратне джерело ентропії (як це рекомендується в кількох інших відповідях) є дуже поганим вибором з точки зору безпеки, оскільки це обладнання в першокласному становищі робити шкідливі речі, і це, по суті, непридатне.


Я не казав, що я виправляв це ще більше ентропією, мені просто потрібно було більше для більшого ключа. Це хороший момент, хоча він є несправним. Чи можете ви порекомендувати якісь альтернативи?
PyRulez

1
Це хороша відповідь, за винятком останнього біта про апаратні джерела. Апаратні джерела ентропії - єдиний надійний, ревізований спосіб отримання ентропії. Вам (або комусь, кому ви довіряєте) потрібно перевірити джерело - для цього потрібна інформація про дизайн та перевірка відповідності виробничого процесу проектній інформації. Ви навіть можете поєднувати джерела ентропії, так що якщо хоча б одне з них добре, то результат прекрасний (зверніть увагу: для цього вам потрібно їх правильно поєднати).
Жил 'ТАК - перестань бути злим'

Жил, прочитай друге посилання, яке я опублікував. Абсолютно помилково стверджувати, що якщо хоча б одне джерело ентропії добре, то результат прекрасний. Вся мета цього посилання - спростувати цю помилкову заяву!
Джао

Більше того, недостатньо для аудиту джерела та процесу виготовлення. Потрібно провести аудит свого індивідуального пристрою, щоб переконатися, що ваш пристрій виготовлено відповідно до виробничого процесу. Це набагато складніше завдання, ніж аналогічне завдання в програмному забезпеченні, яке полягає в простому перевірці контрольної суми.
djao

Щодо альтернатив: не існує альтернативного магічного способу отримати 1 Гб випадкових даних з ПК. Для цього вам знадобиться апаратний пристрій (але потім зверніть увагу на те, що я сказав про те, що апаратне забезпечення важко перевірити). Якщо ви були готові використовувати / dev / random, то / dev / urandom так само добре; це не гірше / dev / random для всіх програм криптографії.
Джао

3

Здається, що компонент HW - найкраща ідея. Там є кілька генераторів HW генератора, але ви повинні довіряти їм, як вони приходять.

Два, ймовірно, хорошого рішення - спонукати компонент для створення шуму; Два основних рішення, як видається, - це зміщення температури та шум авані, що створюється діодом (див. http://web.archive.org/web/20061117145903/http://willware.net:8080/hw-rng.html )

Оскільки такі компоненти, як гіроскоп і акселерометр, стали більш чутливими, змусити їх працювати з максимальною чутливістю і використовувати їх значення LSB також може бути приємним рішенням, але AFAIK ніхто не перевіряв його.

Це смішно, оскільки на НЕ RNG є багато паперу, але не відкрита та перевірена реалізація HW


2

Ви можете використовувати pycsprng.py . Криптографічно безпечний? Я не зовсім впевнений, але мені хотілося б рецензування.

python pycsprng.py | pv | dd of=data.file bs=1024 count=1000

Додаток не pvє обов'язковим і просто допоможе вам дізнатися, скільки даних передано.

Ви можете виявити, що більші розміри блоків (Bs) збільшують продуктивність. Вам доведеться відрегулювати кількість, щоб не створювати занадто великий файл, якщо збільшити розмір блоку.


3
Це просто використовує /dev/urandom...
Стівен Кітт

1
pycsprng.pyце буквально сценарій 10 SLOC, який отримує випадковість os.urandom. Документи кажуть, що "Повернені дані мають бути непередбачуваними для криптографічних додатків [...] У системі, схожій на UNIX, це буде запитувати /dev/urandom" . Це насправді є (хоча це застаріле джерело), ​​і Security.SE каже, що це добре для криптовалют .
gronostaj

Криптовалюта не один раз!
PyRulez

0

Те, що ви отримуєте від аналогового мікрофонного каналу, коли не підключаєте мікрофон, зазвичай просто статичне. Отримайте, що через bzip2, наприклад, для відбілювання, змішайте його з іншим джерелом випадковості (urandom або іншим роз'ємом для мікрофона), можливо, результат надійшов через openssl на добру оцінку, і те, що ви отримаєте, має бути досить випадковим.

Однак було б важко довести будь-які жорсткі та швидкі властивості безпеки щодо випадковості результату.


0

Якщо ви використовуєте Linux ядро ​​2.6.9 або новіше на процесорі amd64 / x86_64, віртуальному чи фізичному середовищі, ви можете спробувати ncomputers.org/pandom справжній генератор випадкових чисел, який пропонує 8 кіБ / с ентропію з 64 убіт / 64 біт через/dev/random

вибірка вибірки


Посилання розбиті, не вдалося знайти резервну копію.
slm

0

Щоб генерувати 100 Мб апаратно генерованих випадкових даних, ви можете:

  • Запишіть 20 хвилин аудіо (96 кГц 16 біт моно) за допомогою вбудованого мікрофона вашого комп'ютера (доступний на ноутбуці). Ви отримаєте WAV-файл ~ 220 Мб.

  • Відмовтеся від некорисних бітів і перетасуйте біти двійкових даних (багато способів це зробити) з деякою математикою

  • Експортуйте перетасовані біти у вигляді бінарного файлу ~ 100 Мб

Ось стаття про це: Спроба генерувати справжню ентропію та випадкові дані за допомогою аудіо (та вбудованого мікрофона вашого комп'ютера) .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.