Аппаратный генератор случайных чисел
Много читаю об использовании, например, звуковой карты для генерации случайных чисел. Ну вот есть у меня звуковая карта, микрофон и ненастроенный телевизор. А дальше что? Программы бы какуй-нибудь, чтобы эти числа показыавала на экран или еще каким-либо образом использовала такой генератор.
Ссылки
[link1] http://www.std.com/~reinhold/truenoise.html
[link2] http://en.wikipedia.org/wiki/Womanizer
[link3] http://www.psn.ru/ep/shnoll/shnoll.shtml
[link4] http://noosphere.princeton.edu/
[link5] http://noosphere.princeton.edu/results.html#alldata
[link6] http://www.linuxfromscratch.org/hints/downloads/files/entropy.txt
На самом деле это не так легко, как кажется. В любых электроакустических шумах есть гармоники, закономерности и простое хэширование лишь маскирует их недостаточную энтропию. Настоящий электроакустический генератор шума – это инженерно сложное и дорогое устройство, технические и теоретические аспекты которого до конца не проработаны. Поэтому в критически важных приложениях используют радиационные генераторы.
В тоже время простейшее устройство на радиошумах или шумящих диодах может быть использовано при условии большой избыточности входящего шума по отношении к исходящему после обработки хэшированием или более сложными алгоритмами.
Программы от Лео Юрьева: http://leo.yuriev.ru/114
См. также обзор железа и софта[link1],
См. также статью в википедии: http://ru.wikipedia.org/wiki/ГПСЧ
Там есть обзор подобных генераторов.
Поправьте ссылку или скажите какое слово там написано.
ГПСЧ написано. Но ссылка и так работает, если кликнуть, это форум ее просто глючно отображает.
Кстати, женщина – разве плохой ГСЧ?
[offtopic]
Некриптостойкий – она уязвима к множеству атак. Как пассивных, так и активных.
Реклама омолаживающих средств, косметика, подарки, ухаживания.
В общем есть специалисты по взлому[link2], которые знают эти нехитрые секреты.
Или Вы про машинисток, которые в СССР вслепую печатали одноразовые блокноты в эпоху холодной войны? В них (в напечатанных блокнотах) тоже были обнаружены статистические отклонения :-)
[/end offtopic]
Можно ли прикрутить шумовой wav-файл к GnuPG для генерации ключа? Мне кажется, это, несмотря на все недостатки такого генератора, будет лучше, чем как псих стучать по клавишам.
Как говорили классики, "случайность есть непознанная закономерность".
О "неслучайности тонкой структуры распределений (формы гистограмм) результатов измерений процессов разной природы" читайте статью в журнале
УСПЕХИ ФИЗИЧЕСКИХ НАУК, Том 168, N 10[link3] (за Октябрь 1998г.)
Так что вопрос получения истинно случайных последовательностей может оказаться ещё более сложным, чем кажется даже не только на первый взгляд. А астрология может перестать считаться лженаукой и получить научное обоснование.
Не, ну я не физик, конечно. Человек открыл, что день сменяется ночью (24 часа)?
Человек открыл, что процессы, ранее считавшиеся абсолютно случайными (например радиоактивный распад), на самом деле не совсем случайны, и эта неслучайность скорее всего обусловлена космическими влияниями.
http://www.chronos.msu.ru/RREPORTS/shnol_liki.htm
Впервые узнал об этом исследовании лет несколько назад, когда его автор рассказывал о нём в ночной программе Александра Гордона. Кажется вполне предсказуемым, что картина гравитационного взаимодействия и облучения поверхности планеты объектами космоса должна вызывать закономерные корреляции в, казалось бы, случайных явлениях.
Если придираться к словам – все-таки в показаниях датчиков. Я бы поставил сто к одному, что космический фон влияет на датчики, а не на сам процесс радиоактивного распада.
Готов принять вашу стваку. Называйте сумму и условия выплаты.
И даже если это и так, всё равно, поскольку аппаратный генератор случайных чисел это датчик, числа на выходе получаются "не совсем" случайные!
Вообще конечно интересно, как можно отличить ситуацию, если окажется, что любые датчики (не исключая и органы чувств) совершенно одинаково реагируют на такое влияние?
Могу внятно ответить лишь на последний вопрос. Оценить влияние на датчики в зависимости от местоположения (например высокогорная лаборатория и шахты с нейтринными детекторами). Сравнить показания датчиков (число актов распада) с показаниями других датчиков в другое время (концентрация продуктов распада).
ЗЫ. Мусирование вопроса о "не совсем случайности" мало связано в практикой. Какая разница, Имеет ключ AES 256 или 200 случайных бит, если он все равно передается при помощи DH/ElGamal со стойкостью порядка 2128. Аналогично если запихнуть тысячебитовую строку в SHA-1 или что-то из семейства SHA-2. Никакие малые закономерности взломщику не помогут.
По, про шахты не знаю, а по горизонтали показания коррелируют у приборов на одном меридиане. Насчёт продуктов распада – вряд ли найдётся способ регистрации с нужной точностью.
это не ответ на последний вопрос :)
С криптографической, вероятно, да. ( Правда некоторых тут ещё интересует и теория :) А вот написать программу, которая по шумам звуковой карты определяет время суток (или даже делает астрологический прогноз на основе корреляций формы гистограм с расположением планет) может быть и стоило бы попробовать.
Трудности тут могут возникнуть при попытке написания алгоритма для кластеризации гистограмм без участия человека.
PS
А польза для криптографической (стеганографической) практики, как тут уже отмечалось, может состоять в аргументированном ответе на вопрос "оппонента" о причинах наличия у вас на диске больших массивов случайных данных. ;)
Можно изготовить наручные часы, которые определяют время, сезон и фазу луны по шумам микрофона. На индикаторе будет показана гистограмма, дальше владелец сам. :)
Или солнечные часы всё-таки лучше?
Некоторые даже находят зависимости случайности от общего настроения!
Global Correlations in Random Data[link4]
Есть реализации, где случайные данные из звуковых процесов подкачиваются в пул энтропии Linux /dev/random.
http://www.vanheusden.com/aed/
http://www.linuxfromscratch.or.....ds/files/entropy.txt[link6]
А в общем случае схема может быть такой:
1) Померить разность фаз между стереоканалами и накопить первичный буфер наименьший значащий разряд.
2) Тестировать блоки из первичного буфера быстрыми стат. тестами (например на сжатие). Отбросить блоки, не прошедшие тест. Если слишком много блоков не прошло тест – выдать сигнал аварийного завершения (звуковвая карта сгорела, модуль драйвера не загрулился после перезагрузки и т.д.)
3) Сделать первичную фильтрацию: отбросить пары одинаковых битов (00, 11), заменить пары различающихся битов (01->0 10->1). Это позволит убрать простейшую парную корреляцию.
4) Сделать дистилляцию случайности: хэшировать большие блоки данных из пункта 3, получая на выходе блоки меньших данных.
Есть более сложные методы (например пункт 3 не даёт постоянный битрэйт, а иногда это требуется в сетевом/потоковом шифровании)
Есть масса исследований на тему "Randomness extraction"
Если это запись выступления ансамбля, то обычно исполнители не бегают по сцене, и разность фаз не будет случайной (а даже если и бегают, то с конечной скоростью). Может лучше просто последний разряд?
Разность в младших разрядах двух каналов.
Запись выступления ансабля не подойдёт. На вход карты лучше подать шумы диодов или воткнуть микрофон, подвешенный над вентилятором кулера системного блока
Спасибо. Примерно это и нужно. Осталось установить Linux. :)
Ну или платите разработчикам или пользуйтесь шароварами:
http://leo.yuriev.ru/113