INTEGRITY Документация

Контекст

На протяжении многих лет генерация публичной случайности (часто называемая общие монеты) привлекла интерес исследовательского сообщества в области криптографии. Многие распределённые системы, включая различные механизмы консенсуса, анонимные сети наподобие Tor и блокчейн системы, предполагают наличие доступа к такой публичной случайности. Однако генерация публичной случайности распределённым, масштабируемым и надёжным способом долгое время оставалась нерешённой задачей. На данный момент не существует сервиса, развёрнутого для получения случайности такого типа. Единственным вариантом остаётся централизованный маячок случайности в виде прототипа, работающий под управлением NIST ↗.

Осознав это, Ewa Syta ↗ начал проект по Scalable Bias-Resistant Distributed Randomness ↗ во время учёбы в докторантуре под руководством Michael J. Fischer ↗ и Bryan Ford ↗ в Йельском университете. После того как Брайан перешёл в EPFL в 2015 году, новые участники команды DEDIS в EPFL (Nicolas Gailly ↗, Linus Gasser ↗, Philipp Jovanovic ↗, Ismail Khoffi ↗, Eleftherios Kokoris Kogias ↗) присоединились к проекту и вместе опубликовали исследовательскую статью на 2017 IEEE Symposium on Security and Privacy ↗.

В статье рассматривается использование билинейных спариваний ключей вместо классической криптографии на эллиптических кривых для генерации публичной случайности: такой подход позволяет упростить предложенные конструкции протоколов и повысить производительность генерации и проверки случайности.

В начале 2017 года DEDIS ↗ команда в EPFL ↗ начал сотрудничать с DFINITY ↗ по различным исследовательским темам, включая публичную случайность. Архитектура DFINITY построена вокруг маячка случайности на основе билинейных спариваний, схожего по конструкции с описанным в статье DEDIS. Кроме того, в DFINITY уже реализована оптимизированная библиотека спариваний на C++. После интеграции этой реализации в криптографическую библиотеку DEDIS Kyber ↗, все основные криптографические компоненты были готовы для реализации эффективного распределённого протокола генерации случайности с использованием спариваний.

В сентябре 2017 года Николя, аспирант DEDIS, при поддержке Филиппа начал писать код drand, чтобы впервые развернуть распределенный сервис публичной случайности, независимый от приложений, безопасный и эффективный. Вскоре после этого Cloudflare выпустила оптимизированную реализацию кривой спаривания BN256 на Golang, которая теперь интегрирована и в Kyber, и в drand для упрощения разработки и развертывания.

По мере развития drand все больше организаций (включая NIST, Cloudflare, Kudelski Security, Университет Чили и Protocol Labs) начали проявлять интерес и решили совместно работать над созданием drand ↗ сеть, объединяющую эти организации. Для поддержки использования публичной случайности в веб-приложениях Mathilde Raynal ↗, магистрант DEDIS, начал разрабатывать прототип интерфейса на JavaScript под названием drandjs ↗, для взаимодействия с серверами drand.

Весной 2020 года команда Protocol Labs возглавила работу по переводу drand из экспериментальной сети в сеть, готовую к промышленной эксплуатации. Эта работа включала значительные обновления протокола, создание модели управления распределенной сетью и повышение операционной безопасности операторов узлов. Ознакомьтесь с блог drand ↗ для дополнительных сведений.