Cloudflare представил распределённый генератор случайных чисел
18 июня 2019 года
Компания Cloudflare представила сервис League of Entropy, для обеспечения работы которого сформирован консорциум из нескольких организаций, заинтересованных в предоставлении качественных случайных чисел. В отличие от существующих централизованных систем League of Entropy не полагается на один источник и использует для генерации случайной последовательности энтропию, получаемую от нескольких не связанных с собой генераторов, контролируемых разными участниками проекта. Благодаря распределённому характеру проекта компрометация или подлог одного или двух из источников не приведёт к компрометации финального случайного числа.
Следует отметить, что генерируемые случайные числа относятся к категории публично доступных последовательностей, которые нельзя использовать для генерации ключей шифрования и в областях, в которых случайное число должно держаться в тайне. Сервис нацелен на предоставление случайных чисел, которые невозможно предсказать заранее, но после генерации эти числа становятся публично доступны, в том числе для проверки достоверности прошлых случайных значений.
Публичные случайные числа генерируются раз в 60 секунд. Каждое число связывается со своим номером последовательности (round), по которому в любой момент и с любого сервера-участника можно получить когда-то сгенерированное значение. Подобные случайные числа могут применяться в распределённых системах, криптовалютах и блокчейнах, в которых разные узлы должны иметь доступ к единому генератору случайных чисел (например, при формировании доказательства проделанной работы), а также при проведении различных лотерей и для формирования случайных выборок в процессе аудита прохождения выборов.
Для работы с сервисом и для развёртывания собственных узлов предложен инструментарий Drand, написанный на языке Go и поставляемый под лицензией MIT. Drand выполняется в форме фонового процесса, который связывается с участвующими в распределённой сети внешними генераторами и коллективно формирует сводное случайное значение. Сводное значение генерируется с использование методов пороговой криптографии и билинейного сопряжения. Генерация сводного случайного значения может быть выполнена на системе пользователя без привлечения централизованных агрегаторов.
Drand также может применяться для доставки клиентам локально сгенерированных приватных случайных чисел. Для передачи случайного числа применяется схема шифрования ECIES, в рамках которой клиент генерирует закрытый и открытый ключ. Открытый ключ передаётся на сервер с Drand. Случайное число шифруется с использованием данного открытого ключа и может быть просмотрено только клиентом, владеющим закрытым ключом. Для обращения к серверам может использоваться утилита "drand" (например, "drand get public group.toml", где group.toml список узлов для опроса) или Web API (например, можно использовать "curl https://drand.cloudflare.com/api/public(недоступная ссылка)" или обращаться из JavaScript при помощи библиотеки DrandJS). Метаданные запроса отправляются в формате TOML, а ответ выдаётся в JSON.
В настоящее время к инициативе League of Entropy присоединились пять компаний и организации, которые предоставили доступ к своим генераторам энтропии. Включённые в проект участники находятся в разных странах и используют разные методы получения энтропии:
- Cloudflare, LavaRand, случайные значения формируются на основе непредсказуемых потоков жидкости в лавовых лампах, изображения которых подаются в качестве входной энтропии для CSPRNG (Cryptographically Secure PseudoRandom Number Generator);
- EPFL (Федеральная политехническая школа Лозанны), URand,
применяется штатный локальный генератор /dev/urandom, использующий в качестве источников энтропии клавиатурный ввод, движение мыши, потоки трафика и т.п.
- Чилийский университет, UChile, в качестве источника энтропии применяется сеть из сейсмических датчиков, а также данные из радиоэфира, активности в Twitter, изменений блокчейна Ethereum и самодельного аппаратного генератора RNG;
- Kudelski Security, ChaChaRand, предоставляет CRNG (Cryptographic Random Number Generator) на основе применения шифра ChaCha20;
- Protocol Labs, InterplanetaryRand, случайные данные извлекаются из уловителей шумов и комбинируются с Linux PRNG и встроенным в CPU генератором псевдослучайных чисел.
В настоящее время независимыми участниками запущено 8 публичных точек доступа к API, через которые можно узнать как текущее сводное случайное число (например, "curl https://drand.cloudflare.com/api/public(недоступная ссылка)"), так и определить значение на определённый момент в прошлом ("curl https://drand.cloudflare.com/api/public?round=1234(недоступная ссылка)"):
- https://drand.cloudflare.com:443
- https://random.uchile.cl:8080(недоступная ссылка)
- https://drand.cothority.net:7003(недоступная ссылка)
- https://drand.kudelskisecurity.com:443(недоступная ссылка)
- https://drand.lbarman.ch:443(недоступная ссылка)
- https://drand.nikkolasg.xyz:8888(недоступная ссылка)
- https://drand.protocol.ai:8080(недоступная ссылка)
- https://drand.zerobyte.io:8888(недоступная ссылка)
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.