Аннотация:
Данный проект имеет своей целью создание генератора истинно-случайных чисел. Большинство языков программирования предоставляют средства для генерации случайных чисел, в основе которых лежат программные алгоритмы. Такие числа называются псевдослучайными, поскольку они полностью зависят от начальных параметров алгоритмов. Зная алгоритм и начальные параметры можно со стопроцентной точностью определить все сгенерированные числа. Иногда подобной случайности недостаточно.
Здравствуйте, Mikhail Chashchin, Вы писали:
MC>Вопросы: MC>Что может служить источником энтропии?
Первое, что приходит в голову — это протоколирование и преобразование пользовательского ввода (мышь+клавиатура). Таким образом мы имеем достаточно хороший источник энтропии, так как пользователь уникально перемещает мышь по экрану и уникально жмет на кнопки (сочетание букв, скорость нажатий и прочая доступная информация).
Из минусов, бросающихся в глаза, стоит отметить ограниченность ввода. Например сервер, на котором работают раз в пол года будет иметь ряд ограниченной длины...
Здравствуйте, MarW, Вы писали:
MW>Здравствуйте, Mikhail Chashchin, Вы писали:
MC>>Вопросы: MC>>Что может служить источником энтропии?
MW>Первое, что приходит в голову — это протоколирование и преобразование пользовательского ввода (мышь+клавиатура). Таким образом мы имеем достаточно хороший источник энтропии, так как пользователь уникально перемещает мышь по экрану и уникально жмет на кнопки (сочетание букв, скорость нажатий и прочая доступная информация).
Мышь движется не совсем непредсказуемо. Последующие положения зависят от предыдущих. Правда можно опрашивать мышь с какой-то задержкой или, например, двинулся вверх — 0y, вниз — 1y, влево — x0, вправо — x1. На каждое движение — два бита.
С кнопками другая проблема — некоторые используются чаще других. Скорость нажатия скорее всего действительно непредсказуема, но как её получить в С#?
MW>Из минусов, бросающихся в глаза, стоит отметить ограниченность ввода. Например сервер, на котором работают раз в пол года будет иметь ряд ограниченной длины...
То бишь, это непостоянный источник. Будет запасным, тогда
Здравствуйте, Mishka, Вы писали:
MC>>>Вопросы: MC>>>Что может служить источником энтропии?
Может температурный датчик (например датчик сети 1-Wire)?
Ну или веб камера?
Здравствуйте, Chardex, Вы писали:
MC>>>>Что может служить источником энтропии? C>Может температурный датчик (например датчик сети 1-Wire)?
Не плохая идея, а он на всех компьютерах имеется или нужны специальные устройства/драйвера?
C>Ну или веб камера?
Особенно если она в интернете, тогда можно получить постоянный поток данных. Две вещи: где найти хорошую, постоянно меняющуюся картинку, как её обработать, чтобы убрать вещи, повторяющиеся из кадра в кадр?
Я набросал каркас для генератора, который использует звук из LineIn. Там постоянно что-то да шумит, даже если ничего не подключено.
Сейчас разберусь с SVN и выложу файлы на сайт.
Здравствуйте, Mishka, Вы писали:
M>Здравствуйте, Chardex, Вы писали:
MC>>>>>Что может служить источником энтропии? C>>Может температурный датчик (например датчик сети 1-Wire)?
M>Не плохая идея, а он на всех компьютерах имеется или нужны специальные устройства/драйвера?
Можно через USB или COM порт подключить. А вообще много разных датчиков есть для этой сети. Есть уже написанная обертка для .NET. Вообщем, подключаешь датчик (~70 р.) в спец. адаптер для COM порта (~800 р.), устанавливаешь драйвера. Все. Сам пробывал — все работает. Даже написал свой сервис, которой собирает информацию и пишет в базу.
Кстати, на один адаптер можно вешать сколько хочешь датчиков. C>>Ну или веб камера?
M>Особенно если она в интернете, тогда можно получить постоянный поток данных. Две вещи: где найти хорошую, постоянно меняющуюся картинку, как её обработать, чтобы убрать вещи, повторяющиеся из кадра в кадр?
Не знаю где найти хорошую
Дома стоит WebCam XP — там есть функция определения движения. Не знаю как она работает, но наверное, можно просто сравнивать картинки и отбрасывать одинаковое.
Здравствуйте, Chardex, Вы писали:
C>Можно через USB или COM порт подключить. А вообще много разных датчиков есть для этой сети. Есть уже написанная обертка для .NET. Вообщем, подключаешь датчик (~70 р.) в спец. адаптер для COM порта (~800 р.), устанавливаешь драйвера. Все. Сам пробывал — все работает. Даже написал свой сервис, которой собирает информацию и пишет в базу.
Надо будет посмотреть на данные...
C>Не знаю где найти хорошую
В инете их должно быть полно. Другая вещь — это streaming video, но это источник уж очень ресурсоёмкий. Надо будет копать в сторону Media Player SDK и DirectX...
Где то читал, что Intel для генерации случайных чисел выпустила или собиралась выпустить материнские платы со встроенным температурным датчиком. Если они это сделали, то вот вам готовый источник данных.
Здравствуйте, Gmoorick, Вы писали:
G>Где то читал, что Intel для генерации случайных чисел выпустила или собиралась выпустить материнские платы со встроенным температурным датчиком. Если они это сделали, то вот вам готовый источник данных.
Самым лучшим источником является счётчик Гейгера Продаётся тут http://www.blackcatsystems.com/GM/geiger.html. Но дорого и к тому же хорошо работает только при наличии чего-то радиоактивного. Ребята с HotBits его используют.
Зачем нужен генератор? Клиент сам легко нарежет случайную последовательность бит на числа...
Еще нужно отределится что важнее быстрый неблокирющий поток (например для моделирования Монте-Карло) или очень
качественный (в смысле слабых корреляций и прочего) для криптографии . /dev/random или /dev/urandom
Здравствуйте, little_alex, Вы писали:
_>Здравствуйте, Mikhail Chashchin, Вы писали:
_>А что вы понимаете под фразами: _>
_>коэффициент энтропии
_>
_>
_>усиливающий энтропию
_>
Вот здесь есть описание программы ent: http://www.random.org/essay.html. Она считает энтропию. Как, я пока не знаю, но надеюсь узнать в ближайшем будущем. Увеличение этого параметра ведёт к улучшению качества случайных чисел.
_>Зачем нужен генератор? Клиент сам легко нарежет случайную последовательность бит на числа...
Может и не нужен. Но по крайне мере маленький класс надо бы написать, чтобы он не биты выдавал, а byte или int.
_>Еще нужно отределится что важнее быстрый неблокирющий поток (например для моделирования Монте-Карло) или очень _>качественный (в смысле слабых корреляций и прочего) для криптографии . /dev/random или /dev/urandom
Вопрос в источнике. Моя реализация на основе шума в LineIn выдаёт примерно 12Кб случайных чисел в минуту, что очень мало. Ускорить процесс не получается (пока что).
Но для этого проект и затевается, чтобы разработать хороший многоцелевой генератор, или генераторы В общем, разберёмся по ходу дела.
Не будучи специалистом по теории вероятности, все же несколько позволю себе усомниться в необходимости иметь такой датчик. Теория вероятности до сих пор ИМХО без него вполне обходится.
Резюме — хотел бы услышать мнение специалистов по ТВ на этот счет.
M>Самым лучшим источником является счётчик Гейгера Продаётся тут http://www.blackcatsystems.com/GM/geiger.html. Но дорого и к тому же хорошо работает только при наличии чего-то радиоактивного. Ребята с HotBits его используют.
А радиактивное всегда есть.
Космическое излучение.
Помню в институте строили нормальное распределение на лабах по показаниям счетчика Гейгера.
Здравствуйте, valmond, Вы писали:
M>>Самым лучшим источником является счётчик Гейгера Продаётся тут http://www.blackcatsystems.com/GM/geiger.html. Но дорого и к тому же хорошо работает только при наличии чего-то радиоактивного. Ребята с HotBits его используют.
V>А радиактивное всегда есть. V>Космическое излучение. V>Помню в институте строили нормальное распределение на лабах по показаниям счетчика Гейгера.
Скорость будет маленькой на HotBits это очень хорошо расписано.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, Mikhail Chashchin, Вы писали:
PD>Не будучи специалистом по теории вероятности, все же несколько позволю себе усомниться в необходимости иметь такой датчик. Теория вероятности до сих пор ИМХО без него вполне обходится.
PD>Резюме — хотел бы услышать мнение специалистов по ТВ на этот счет.
Лучше спросить у криптографов, поскольку они основные потребители истинно-случайных чисел.
Могу порекомендовать книгу:
Теория, применение и оценка качества генераторов псевдослучайных последовательностей,
Иванов М.А., Чугунков И.В., Издательство Кудиц-Образ
Re: Проект “Entropy”
От:
Аноним
Дата:
27.04.05 14:18
Оценка:
Здравствуйте, Mikhail Chashchin, Вы писали:
MC>Статья: MC>Проект “Entropy”
MC>Авторы: MC> Mikhail Chashchin
MC>Аннотация: MC>Данный проект имеет своей целью создание генератора истинно-случайных чисел. Большинство языков программирования предоставляют средства для генерации случайных чисел, в основе которых лежат программные алгоритмы. Такие числа называются псевдослучайными, поскольку они полностью зависят от начальных параметров алгоритмов. Зная алгоритм и начальные параметры можно со стопроцентной точностью определить все сгенерированные числа. Иногда подобной случайности недостаточно.
ИМХО — танцевать надо отизменений напряжений на проце, его частоты, частоты памяти, частоты железа, скорости вращения вентилятора и т.д. в произвольных комбинациях с максимальной точностью.
Здравствуйте, Аноним, Вы писали:
А>ИМХО — танцевать надо отизменений напряжений на проце, его частоты, частоты памяти, частоты железа, скорости вращения вентилятора и т.д. в произвольных комбинациях с максимальной точностью.
А как до этих вещей добраться? Некоторые вещи можно через BIOS вытащить, но это чревато...
MC>Авторы: MC> Mikhail Chashchin
MC>Аннотация: MC>Данный проект имеет своей целью создание генератора истинно-случайных чисел. Большинство языков программирования предоставляют средства для генерации случайных чисел, в основе которых лежат программные алгоритмы. Такие числа называются псевдослучайными, поскольку они полностью зависят от начальных параметров алгоритмов. Зная алгоритм и начальные параметры можно со стопроцентной точностью определить все сгенерированные числа. Иногда подобной случайности недостаточно.
А не складывается ли ощущение(у меня лично складывается, но может это так... на горячую голову...) что при СЕРЬЕЗНОМ подходе солюшн данной проблемы ТОЧНО не должен быть soft-only. А должен быть hard+soft. Т.е. втыкается нечто флеше-подобное в USB и начинает гнать постоянно и непредсказуемо меняющуюся картинку(как это реализовать — вопрос большой, отдельный и скажем прямо — центральный для всего солюшена, но мы пока архитектуру ваяем, верно?). Ну дальше понятно — софт анализирует это нечто "постоянно меняющееся" -> поток битов -> ... Думается, что при должной реализации подобная связка будет востребована юзерами(а это очень специфические юзеры, далеко не всем это надо) на ура.