Обратите внимание, что количество энтропии в пуле не обязательно должно быть целым числом. Это должно главным образом иметь дело с вашей главной проблемой-фактора-кроме-2.
Даже если вы в конечном итоге используете реализацию, которая требует целочисленных оценок, вам потребуется немало бросков кубиков для генерации криптографического ключа. Таким образом, вы можете просто потребовать их в пучках. Если пользователь дает вам результаты 10 бросков d6, и вы оцениваете энтропию как 25 битов, вы потеряли только 0,08 битов за бросок костей. Не забудьте округлить; -)
Кстати, я бы посоветовал пользователю запрашивать данные TRNG, а не извлекать их из аппаратных источников, как это делает / dev / random, скорее забавную игрушку, чем улучшение. Экспертам достаточно сложно генерировать случайные числа - вы не хотите, чтобы обычные пользователи оставляли на произвол судьбы собственный дилетантизм. «Генерация случайных чисел слишком важна, чтобы оставлять ее на волю случая», - Роберт Ковей.
С другой стороны, авторы BSD утверждают, что, поскольку оценка энтропии для практических источников на оборудовании ПК не так хорошо понятна (физическая проблема, а не математическая), использование PRNG на самом деле не так уж плохо вариант при условии, что он хорошо посеян в соответствии с дизайном Schneier / Kelsey / Ferguson Yarrow . Ваша идея игры в кости, по крайней мере, имеет преимущество перед типичными источниками энтропии для / dev / random: если пользователю можно доверять, чтобы он нашел правильные кости и правильно их бросил, вы можете уверенно поставить нижнюю границу энтропии. У него есть недостаток, заключающийся в том, что наблюдатель с хорошей парой биноклей и / или средством подслушивания на своей клавиатуре (например, с помощью излучений E / M) может нарушить всю схему, так что в действительности все зависит от вашей модели угрозы.