Как стать автором
Обновить

Комментарии 26

На работу генератора шума не влияет, например, прикосновение рукой к пластиковому корпусу транзистора?
По крайней мере откалиброванная граница от этого не плавает, её значение только от температуры зависит. Правда осциллографа нет, чтобы проверить подробно, но логично предположить, что влиять не должно, поскольку этот транзистор по сути диод, а лавинный пробой такая штука, что наводки на соседнем p-n переходе ничего не изменят.
У интела на свежих процессорах уже есть аппаратный генератор https://ru.wikipedia.org/wiki/RdRand, почему бы не воспользоваться им? Помимо паранойи.

Устройство собирал под платформу Bay Trail, процессор Celeron J1900, там ничего такого нет. А в целом, конечно вариант хороший.

Хм, у меня планшет на Bay Trail — Z3735, в нем есть RdRand, сам проверял. Может не на всех моделях Bay Trail есть, но странно.

Спасибо, посмотрел внимательнее, проверил настройки ядра и /proc/cpuinfo, оказалось он у меня тоже есть. Но в Linux с ним всё не просто, вроде его и не выпилили как во FreeBSD, но то, что он используется не видно. Ядро восстанавливает энтропию со скоростью меньше чем 2 байта в секунду, что в моём случае не приемлемо. А rngd принципиально против этого источника энтропии: RDRAND will be disabled и далее уточнение, что без вариантов. Поэтому эффекта я не заметил, и пришлось решать проблему сначала через /dev/urandom, а потом и доп.устройством.

Понятно, я пробовал на visual studio express edition и с помощью GCC на Linux машине, вполне себе работает и там и там. Ну если вам понадобится в будущем.
В районе Pentium 3 (точнее, чипсета Intel 840) еще был RNG. Правда очень странный.
А насколько термостабильно?

Калибровка примерно каждые 12 секунд обновляется, поэтому это не проблема в принципе. Если конкретно, то при изменении температуры в помещении от 23 до 32, отсечка плавала 119-126, сейчас стабильно 23°C и стоит фактически на месте — 126.

Сильно прошу прощения за глупый вопрос, но не мог бы кто кинуть ссылкой на место, где рассказывают про энтропию, применительно к компьютерному железу?

Ближе к железу, чем драйвер drivers/char/random.c вряд-ли что-то можно найти. Если что, он хорошо документирован.

Я вот не пойму одной вещи. Почему на GT практически всегда, когда в статье упоминается изготовление платы ЛУТом, автор считает своим долгом описать ЛУТ от начала и до конца? Неужели в интернете он описан недостаточно подробно?

Хорошо хоть в данной статье автор запихнул описание ЛУТа под спойлер.

Поэтому и спрятал под спойлер. А причина простая — метка tutorial обязывает не пропускать детали.

Идеальный пост. Настолько, что боюсь даже холивар не зажечь.
Но, я попробую :)

Внутренний параноик сходу выдал: «если так просто сделать генератор 'истинно случайных чисел' почему это до сих пор не сделано».
Вы гений? Или что-то не договариваете?
А не надо делать истинно случайный генератор. Надо только достаточно количество случайных эвентов, для разбавления последователности. Остальное доделывается псевдослучайным генератором. Допустим у вас псевдослучайный генератор который выдает последовательность в 128мбайт после чего повторяется. Если вы делаете по приходу например из это генератора эвента значения меньше 10 переход на количество шагов(n береться из следующего значения физического генератора) в псевдогенераторе, то в результате вы получите совершенно случайно повторяющуюся последовательность. Если вход генератора эвента, конечно, полностью случаен(а он тут случаен, ибо обусловлен квантовыми колебаниями поля).

Да, /dev/urandom примерно так и работает, и нет ничего плохого в его использовании. Но ещё лучше, когда есть выбор. Так что, почему бы и не сделать.

В таком случае примененная схема генератора слишком избыточна, достаточно «подвешенного в воздухе» вывода ADC. Если же заботиться о качестве генерируемой случайной последовательности то тут могут быть вопросы.

Спасибо, но схема этого генератора стандартная, ищется по ключевым "avalanche noise generator", только софт пришлось писать с нуля, поскольку примеры, сопровождающие эти схемы, по моему скромному мнению, не приемлемы.

Наверное можно уменьшить частоту калибровок и качество случайной последовательности, если использовать не один бит, а два.

При этом пары 00 и 11 отбрасывать, а пары 01 и 10 использовать как 0 и 1 соответственно. В этом варианте, при неравных вероятностях выпадения исходных нулей и единиц, вероятности выпадения 01 и 10 все равно будут равны и не будут зависеть от температурного дрейфа.

А калибровку делать при заметном дисбалансе выпадения пар 00 и 11.

Что-то смысл не уловил, какие два бита вы предлагается взять, чтобы равновероятно выпадали 01 и 10? Если что, то там по сути все 10 бит, в той или иной мере, случайные, но использовать их нельзя. Всегда будут зависимости, как рабочий диапазон, температура, износ. Само по себе это не плохо, если есть возможность откалибровать, но чем больше бит, тем больше требуется вычислений. А использованный метод, прост и надёжен, даже формул не требуется для обоснования.

Правильно ли я понимаю, что результат каждого измерения АЦП сравнивается с неким порогом? А результат сравнения и если порог превышен, то это единичный бит. За восемь измерений наполняется байт. Порог требует регулярной калибровки.

Т.е. одно измерение — один бит. Я предлагаю делать два измерения. Получать два бита. Их я и предлагаю взять. Не два бита из результата АЦП, нет.

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

Кстати да… даже когда подробно прочёл не сразу вспомнил о чём речь. Вариант очень интересный, но требует существенно больше вычислений, не говоря уже о том, что придётся выбросить половину измерений, в идеальном случае. Но ради эксперимента, вероятно даже проверю этот вариант.

хорошо бы отдельный стабилизатор на генератор дабы отключить корреляцию с 12В шиной
У меня такой вопрос… Генератор шума тем более случайные сигналы генерирует, чем шире спектр. В идеале- идеальный генератор белого шума. Идеальным он быть не может потому что для бесконечно широкого спектра нужна бесконечная энергия. В реальности спектр ограничен но все равно ширина спектра наверняка достигает нескольких мегагерц — десятков мегагерц. В качестве устройства считывания шума у вас программно-аппаратный комплекс, который, если его рассматривать как черный ящик, имеет ограниченный частотный диапазон из-за частотной характеристики входной цепи, способа формирования случайной последовательности и быстродействия программы обработки. Исходя из сказанного, поскольку считывающее устройство воспринимает по сути низкочастотный шум, какой смысл в генераторе белого шума если им нельзя в полной мере воспользоваться? Вы оценивали качество выходной случайной последовательности?

Оценки качества небольшой выборки, которую собирал кусками недели две, есть в статье. Речи о белом шуме здесь не идёт, диод генерирует, так называемый розовый (электронный) шум, и его наибольшая плотность именно в низкочастотном диапазоне. Так что тут всё неплохо сбалансировано.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории