Arduino идеально подходит для создания HRNG (аппаратный генератор случайных чисел)?

21

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

  • Окружающий свет
  • Окружающий звук (и уровни звука)
  • Температура окружающей среды
  • Влажность окружающей среды
  • Положение самого устройства (вверх ногами, наклон влево, заголовок вправо и т. Д.)
  • Другие источники в будущем, возможно, даже данные GPS (помечены как возможные, потому что два пользователя могут стоять рядом друг с другом, следовательно, возможно, детерминированные, если вы их знаете).

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

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

По вашему мнению, Arduino - лучший выбор для создания прототипа? Если нет, что бы вы порекомендовали?

Тим Пост
источник

Ответы:

22

Я думаю, вы захотите пойти по пути, который предлагает Буз. Поиск понятия "диодный шум". PN-переходы в диодах и транзисторах могут создавать почти идеальный гауссовский белый шум. Выборка должна быть источником энтропии, которая лучше, чем любой источник окружающей среды.

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

todbot
источник
8

Есть несколько интересных схем для HRNG без необходимости использования источников энтропии: http://www.cryogenius.com/hardware/rng/ http://robseward.com/itp/adv_tech/random_generator/ и другие ...

Определенно возможно адаптировать одну из этих цепей к щиту Arduino . Arduino будет действовать как шлюз между HRNG и ПК.

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

bpijls
источник
6

Два комментария:

  1. Посмотрите на алгоритм Брюна Шнайера PRNG Ярроу . Суть в том, что у вас может быть действительно паршивый источник «истинной» случайной информации; до тех пор, пока вы накапливаете достаточно этого со временем, результирующая неопределенность может сочетаться с программными методами генерации псевдослучайных чисел для получения достойных случайных чисел.

  2. С другой стороны, я должен согласиться с большинством других ответчиков. Медленно изменяющиеся сигналы от датчиков окружающей среды являются паршивыми источниками энтропии, и на них можно легко повлиять. Убедитесь, что вы используете что-то, что основано на собственном шуме устройства, и это будет нечувствительным к изменениям окружающей среды.

Джейсон С
источник
6

Я только что заметил этот генератор случайных чисел :

Песочные часы Генератор случайных чисел http://makezineblog.files.wordpress.com/2009/12/usbsand.jpg?w=600&h=703

над Make: Blog и подумал, что вас это может заинтересовать.

амосс
источник
Вы имеете в виду «генератор случайных чисел USB Hourglass» ?
Дэвидкари
Да, это был тот. Первоначальная ссылка была на его домашнюю страницу на comcast, которой больше нет. Спасибо. Исправлены ссылки сейчас.
Амос
3

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

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

Ознакомьтесь с этими руководствами по подключению датчиков к Arduino: http://www.ladyada.net/learn/sensors/

SiliconFarmer
источник
3

Это может быть вариантом для вас. Это от sparkfun и не дешево, но, вероятно, будет отличным, как «настоящий» генератор случайных чисел. Он использует geigercounter для генерации случайных чисел.

https://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=132

Seidleroni
источник
Это выглядит интересно.
Амос
3

Ряд генераторов белого шума в аналоговых музыкальных синтезаторах (Moog и Arp) мог бы лавинно обойти транзистор. Если вы запрашиваете онлайн схему Minimoog или ARP4027, вы должны найти схему.

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

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

jluciani
источник
2

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

wackyvorlon
источник
2

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

Дж. Полфер
источник