Cloudflare представив розподілений генератор випадкових чисел

Компанія Cloudflare представила сервіс Ліга ентропії, для забезпечення роботи якого сформовано консорціум із кількох організацій, зацікавлених у наданні якісних випадкових чисел. На відміну від існуючих централізованих систем, League of Entropy не покладається на одне джерело і використовує для генерації випадкової послідовності ентропію, одержувану від кількох не пов'язаних із собою генераторів, що контролюються різними учасниками проекту. Завдяки розподіленому характеру проекту компрометація або фальсифікація одного або двох із джерел не призведе до компрометації фінального випадкового числа.

Слід зазначити, що випадкові числа, що генеруються, відносяться до категорії публічно доступних послідовностей, які не можна використовувати для генерації ключів шифрування і в областях, в яких випадкове число повинно триматися в таємниці. Сервіс орієнтований на надання випадкових чисел, які неможливо передбачити заздалегідь, але після генерації ці числа стають публічно доступними, у тому числі для перевірки достовірності минулих випадкових значень.

Публічні випадкові числа генеруються раз на 60 секунд. Кожне число зв'язується зі своїм номером послідовності (round), яким у будь-який момент і з будь-якого сервера-учасника можна отримати колись згенероване значення. Подібні випадкові числа можуть застосовуватися в розподілених системах, криптовалютах та блокчейнах, у яких різні вузли повинні мати доступ до єдиного генератора випадкових чисел (наприклад, при формуванні доказу виконаної роботи), а також при проведенні різних лотерей та для формування випадкових вибірок у процесі аудиту проходження виборів.

Для роботи з сервісом та для розгортання власних вузлів запропонований інструментарій Дранд, написаний мовою 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

Джерело: opennet.ru

Додати коментар або відгук