Если псевдо благосклонности генерации случайных чисел генерирует любые номера ...
Вот почему я не реализую свою собственную генерацию случайных чисел. Я использую модуль PyCrypto для генерации случайных чисел большого размера (256bits).
Похоже, getrandbits () пытается реализовать алгоритм Мерсенна Twister. К сожалению, есть слабые реализации этого алгоритма, и я не знаю, если реализация питона избегает всех известных проблем или нет. Может быть, самое главное:
"Это может занять много времени, чтобы начать генерировать выходной сигнал, который проходит тесты случайности, если начальное состояние является весьма неслучайными, особенно если начальным состояние имеет много нулей. Следствием этого является то, что два экземпляра генератора, начали с начальными состояниями, которые почти то же самое, как правило, выход почти такой же последовательности для многих итераций, прежде, чем в конце концов расходящихся."
Я подозреваю (но не знаю наверняка), что реализация питона улучшилась инициализация так, что, начиная с таким состоянием очень маловероятно.
Хотя, согласно википедии:
"Алгоритм в своей нативной форме не является криптографически безопасный. Причина заключается в том, что соблюдение достаточного количества итераций позволяет предсказать все будущие итерации."
Как я и сказал, "это не может быть сформулирована достаточно часто", Думая, что конкретный алгоритм является безопасным, или в надежде, что алгоритм безопасен, не делает его безопасным. Это, вероятно, самая трудная часть кодирования для Bitcoin, и является областью, где многие благонамеренных программисты создали службу, которые потеряли людям много Bitcoins, когда хакеры со временем и терпением обнаружили слабые места в различных методах, которые были использованы для генерации случайных чисел. Разработчики, которые полагались на Android операционной системы не удалось. Разработчики, которые полагались на Random.org не удалось. Разработчики, которые полагались на функции операционной системы не удалось.
Это может быть хорошо, чтобы полагаться на getrandbits () из библиотеки Crypto питона, он не может. Лично я не буду использовать свой инструмент на всех.
Вот вопрос, чтобы помочь вам решить, если вы на самом деле считаете, что ваш инструмент является безопасным ...
Допустим, ваш инструмент становится популярным. Допустим, люди начинают использовать его для создания адресов, в которых хранятся сотни тысяч (или даже миллионы) долларов стоит Bitcoins.
Если слабость обнаруживаются в getrandbits () функция а кто-то теряют $ 500000 на сумму Bitcoins хакера из-за этого, вы готовы нести личную финансовую ответственность за ошибки в выборе ГСЧА и возмещает, что пользователь?