Чи Arduino ідеально підходить для створення HRNG (апаратного генератора випадкових чисел)?


21

Я складаю проект для апаратного генератора випадкових чисел, який використовуватиме декілька джерел ентропії ( разом ):

  • Навколишнє світло
  • Навколишній звук (та рівень звуку)
  • Температура навколишнього середовища
  • Вологість навколишнього середовища
  • Положення самого пристрою (догори дном, нахил вліво, під назвою праворуч тощо)
  • Інші джерела в майбутньому, можливо навіть дані GPS (позначені можливими, оскільки два користувачі можуть стояти поруч один з одним, отже, можливо, детермінованим, якщо ви їх знаєте.)

Моя ідея - зробити пульт ентропії «зарядним пристроєм», який люди можуть носити з собою протягом дня, поки він продовжує записувати на USB-накопичувач.

Через кілька годин у користувача з'явиться приємний пул ентропії ~ 4 ГБ, який можна підключити до ПК та використовувати. Я не можу дозволити собі дійсно дорогий QRNG, заснований на легкому чи радіоактивному розпаді, тому намагаюся придумати щось дешевше.

На ваш погляд, чи є Ардуїно найкращим вибором для прототипування цього? Якщо ні, що б ви порадили?

Відповіді:


22

Я думаю, ти захочеш спуститись по дорозі, яку пропонує Busz. Пошук поняття «діодний шум». PN-переходи в діодах і транзисторах можуть видавати близький до ідеального гауссового білого шуму. Відбір проб, який повинен бути джерелом ентропії, який кращий, ніж будь-яке джерело навколишнього середовища.

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


8

Є кілька цікавих схем для HRNG без потреби в джерелах навколишньої ентропії: http://www.cryogenius.com/hardware/rng/ http://robseward.com/itp/adv_tech/random_generator/ та багато іншого…

Однозначно можливо пристосувати одне з цих схем до щита Ардуїно . Тоді Arduino діяв би як шлюз між HRNG та ПК.

Якщо вам дійсно потрібен навколишній ентропійний вхід, у arduino є 6 аналогових вхідних каналів, щоб ви могли прочитати практично будь-який датчик, який ви можете думати, і використовувати дані як джерело для випадкового насіння.


6

Два коментарі:

  1. Подивіться на Брюс Шнайер Деревію алгоритм ПСЧА. Основний момент полягає в тому, що у вас може бути справді химерне джерело "справжньої" випадкової інформації; до тих пір, поки ви накопичите достатню кількість з часом, отримана невизначеність може поєднуватися з програмними методами генерації псевдовипадкових чисел для отримання пристойних випадкових чисел.

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


6


Так, це був один. Оригінальне посилання було на його "домашню сторінку в comcast, якої вже немає. Спасибі. Виправлено посилання зараз.
Амос

3

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

Ардуїно чудово підходить для цієї програми. Усі сенсори, які вас цікавлять, можуть бути приєднані до Arduino, і для цих датчиків доступні бібліотеки Arduino.

Ознайомтеся з цими навчальними посібниками щодо підключення датчиків до Arduino: http://www.ladyada.net/learn/sensors/



3

Ряд генераторів білого шуму в аналогових синтезаторах музики (Moog і Arp) прилаштовували б транзистор. Якщо ви запитуєте в Інтернеті щодо схеми Minimoog або ARP4027, ви повинні знайти схеми.

Я зробив макет на друкованій платі для ARP4027. Якщо ви не можете знайти схематично, надішліть мені електронний лист.

National зробив генератор цифрових випадкових чисел - MM5437. IIRC було кілька програм для AT-крихітних, які також могли це зробити. Це може бути маленький цікавий проект.


2

Нещодавно я прочитав дуже цікаве обговорення використання резисторів для генерування випадкового шуму. Завдяки квантовим ефектам резистор видасть дуже малу напругу. Це може бути посилено за допомогою підсилювача для отримання високоякісного джерела випадкового шуму.


2

Ви можете використовувати сенсорний вхід як насіння для генератора псевдовипадкових чисел. ОС Linux використовує введення з клавіатури / миші як насіння в / dev / random. Просто ідея.

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