Можно ли использовать функцию 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 или нужно писать программу для выпавших сидов сервера и смотреть распределение? Ну и ещё из варианта обмана пользователей остаётся только коллизия хэша, но это уже недостижимо...

Вообщем буду рад всем кто чем-то поможет или поделится какими-либо рассуждениями по данному вопросу.
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы