Можно ли использовать функцию HMAC в качестве генератора случайных чисел и насколько хорошо? Заинтересовался тем как работает bitcoin-кран-казино - сайт freebitco.in. Почитал про их систему честной игры. Ну типа число которое выпадет генерируется на основе двух строк - server seed и client seed, и нам даётся хэш сида сервера. Процедура получения выпадающего числа там описывается так: 1. Создаётся две строки : STRING1 = "[NONCE]:[SERVER SEED]:[NONCE]" STRING2 = "[NONCE]:[CLIENT SEED]:[NONCE]" Пример : STRING1 = "438088:cg6s6edldjfe7r875cm6od916zvwp8nz8w8rx2jxx0u2utnn0wty7d9bn8zg5kul:438088" STRING2 = "438088:Ydbkf5diyLE1FdsN:438088"2. Затем используется алгоритм HMAC с типом хэширования SHA512 для хэширования STRING1 со STRING2 в качестве секретного ключа, что даёт результат в виде шестнадцатеричной строки из 128 символов. 3. Берутся первые 8 символов строки и конвертируются в десятичную систему. 4. Полученное число делится на 429496.7295 и округляется до ближайшего целого числа.5. Максимальным возможным числом является 10000. NONCE это счётчик, который у всех разный и каждый раз увеличивается на 1, так что он может просто храниться в базе у организаторов и подставляться в ключ. Возникает вопрос, возможно ли, что организаторы используют для сида сервера заранее подготовленные строки, которые они специально подобрали так, чтобы не было крупных выйгрышей ни у кого или как можно меньше(сгенерировали хэши для всех возможных значений ключей)? Или такого впринципе быть не может и эту функцию впринципе можно использовать как генератор случайных чисел без проверок? И интересно, если всё таки такие строки сида сервера встречаются, то насколько часто? Дополнение: в client seed оказывается можно ввести строку любой длины (у меня получилось 64 символа) с алфавитом в 62 знака, и server seed для каждого профиля предположительно разный, с учётом того что бесплатно сатоши можно получать раз в час, это нужны астрономические мощности для нахождения таких сидов сервера. Так что вряд ли наверное есть такие сиды для которых не будет максимального выйгрыша (при таком-то количестве вариантов), остаётся только вопрос по равномерному распределению чисел - есть ли такая теоретическая информация об функции HMAC или нужно писать программу для выпавших сидов сервера и смотреть распределение? Ну и ещё из варианта обмана пользователей остаётся только коллизия хэша, но это уже недостижимо... Вообщем буду рад всем кто чем-то поможет или поделится какими-либо рассуждениями по данному вопросу.
Функция HMAC (Хэш-вычисляющий код с использованием сообщения) является криптографической хеш-функцией, предназначенной для создания хэшей, которые сложно подделать. Однако ее использование как генератора случайных чисел не является самым эффективным способом, так как она не является идеальным случайным генератором.
Что касается системы честной игры на сайте freebitco.in, то описанный вами метод генерации случайных чисел с использованием HMAC SHA512 выглядит в целом безопасным и должен обеспечивать непредсказуемость выпадающих чисел. Организаторы действительно могут использовать заранее подготовленные сиды сервера, но при правильной реализации алгоритма это не должно повлиять на честность игры.
Чтобы убедиться в честности игры, можно использовать следующие методы:
Анализировать результаты игры на длинном временном промежутке и проверять их на соответствие ожидаемым статистическим данным.Проводить аудиты системы генерации случайных чисел третьей стороной для подтверждения честности игры.Оценить криптографическую стойкость алгоритма HMAC SHA512 и его способность генерировать случайные числа.
Если система работает согласно описанному алгоритму и организаторы обеспечивают честность и прозрачность игры, то можно предположить, что выигрыши распределены равномерно. Однако для более точной оценки равномерности распределения чисел можно написать программу для анализа результатов игр.
В целом, использование функции HMAC для генерации случайных чисел возможно, но следует учитывать ряд факторов для обеспечения честности и непредсказуемости результатов.
Функция HMAC (Хэш-вычисляющий код с использованием сообщения) является криптографической хеш-функцией, предназначенной для создания хэшей, которые сложно подделать. Однако ее использование как генератора случайных чисел не является самым эффективным способом, так как она не является идеальным случайным генератором.
Что касается системы честной игры на сайте freebitco.in, то описанный вами метод генерации случайных чисел с использованием HMAC SHA512 выглядит в целом безопасным и должен обеспечивать непредсказуемость выпадающих чисел. Организаторы действительно могут использовать заранее подготовленные сиды сервера, но при правильной реализации алгоритма это не должно повлиять на честность игры.
Чтобы убедиться в честности игры, можно использовать следующие методы:
Анализировать результаты игры на длинном временном промежутке и проверять их на соответствие ожидаемым статистическим данным.Проводить аудиты системы генерации случайных чисел третьей стороной для подтверждения честности игры.Оценить криптографическую стойкость алгоритма HMAC SHA512 и его способность генерировать случайные числа.Если система работает согласно описанному алгоритму и организаторы обеспечивают честность и прозрачность игры, то можно предположить, что выигрыши распределены равномерно. Однако для более точной оценки равномерности распределения чисел можно написать программу для анализа результатов игр.
В целом, использование функции HMAC для генерации случайных чисел возможно, но следует учитывать ряд факторов для обеспечения честности и непредсказуемости результатов.