Существует ли какое-либо программное обеспечение для создания пулов энтропии из пользовательского ввода? - PullRequest
2 голосов
/ 03 мая 2009

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

Итак, что я хотел бы знать, прежде чем я начну пачкать руки, это: существует ли какое-либо программное обеспечение для создания энтропийного пула непосредственно из ввода случайных цифр? Обратите внимание, что недостаточно просто конвертировать вещи из radix r в radix 2; поскольку, например, 3 и 2 являются относительно простыми числами, не совсем просто превратить число с основанием-3 (или с основанием-6) в двоичные цифры, сохраняя при этом максимальную энтропию в исходном входе.

Ответы [ 4 ]

4 голосов
/ 03 мая 2009

Устройство /dev/random делает именно это в Linux - может быть, стоит взглянуть на источник?

EDIT:

Как говорит joeytwiddle, если достаточная случайность недоступна, /dev/random будет блокироваться, ожидая «наращивания» энтропии при мониторинге внешних устройств (например, мыши, дисководов). Это может или не может быть то, что вы хотите. Если вы предпочитаете никогда не ждать и довольны случайностью случайного качества, используйте взамен /dev/urandom - это неблокирующий генератор псевдослучайных чисел, который вводит случайность из /dev/random всякий раз, когда она доступна, делая ее более случайной чем простой детерминистический PRNG. (Подробнее см. man /dev/urandom.)

2 голосов
/ 03 мая 2009

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

Вы можете получить физически сгенерированные случайные числа онлайн, например, Lavarnd или Hotbits .

2 голосов
/ 03 мая 2009

Эта статья предлагает различные подходы с идеями реализации для UN * X и Windows.

0 голосов
/ 03 мая 2009

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

Даже если вы в конечном итоге используете реализацию, которая требует целочисленных оценок, вам потребуется немало бросков кубиков для генерации криптографического ключа. Таким образом, вы можете просто потребовать их в пучках. Если пользователь дает вам результаты 10 бросков d6, и вы оцениваете энтропию как 25 битов, вы потеряли только 0,08 битов за бросок костей. Не забудьте округлить; -)

Кстати, я бы посоветовал пользователю запрашивать данные TRNG, а не извлекать их из аппаратных источников, как это делает / dev / random, скорее забавную игрушку, чем улучшение. Экспертам достаточно сложно генерировать случайные числа - вы не хотите, чтобы обычные пользователи оставляли на произвол судьбы собственный дилетантизм. «Генерация случайных чисел слишком важна, чтобы оставлять ее на волю случая», - Роберт Ковей.

С другой стороны, авторы BSD утверждают, что, поскольку оценка энтропии для практических источников на оборудовании ПК не так хорошо понятна (физическая проблема, а не математическая), использование PRNG на самом деле не так уж плохо вариант при условии, что он хорошо посеян в соответствии с дизайном Schneier / Kelsey / Ferguson Yarrow . Ваша идея игры в кости, по крайней мере, имеет преимущество перед типичными источниками энтропии для / dev / random: если пользователю можно доверять, чтобы он нашел правильные кости и правильно их бросил, вы можете уверенно поставить нижнюю границу энтропии. У него есть недостаток, заключающийся в том, что наблюдатель с хорошей парой биноклей и / или средством подслушивания на своей клавиатуре (например, с помощью излучений E / M) может нарушить всю схему, так что в действительности все зависит от вашей модели угрозы.

...