Компания Coinbase, поддерживающая одноимённую платформу обмена цифровых валют, объявила об открытии исходных текстов криптографической библиотеки Kryptology, предлагающей набор криптографических алгоритмов для применения в распределённых системах, в которых шифрование и подтверждение подлинности осуществляется с привлечением нескольких участников. Код написан на языке Go и распространяется под лицензией Apache 2.0.
Отмечается, что код библиотеки прошёл аудит безопасности, а API разработан с оглядкой на простоту и защиту от случайных ошибок или некорректного использования, способных привести к снижению стойкости реализованных механизмов. При разработке также учтены типовые проблемы, с которыми приходилось сталкиваться в Coinbase.
Библиотеке включает в себя:
- Реализацию схемы разделения секрета Шамира, позволяющую разделить секретное сообщение между N-сторонами, так что любые K сторон (K ≤ N) могут совместно восстановить полное сообщение, но данных от K-1 сторон недостаточно для получения каких-либо сведений о исходном сообщении. В качестве практического применения метода упоминаются системы многопользовательской авторизации, в которых для получения доступа необходимо присутствие определённого числа людей, а каждый по отдельности не может пройти авторизацию, а также биометрические системы аутентификации, учитывающие несколько признаков для предоставления доступа.
- Пороговые реализации алгоритма создания цифровой подписи ECDSA (Elliptic Curve Digital Signature Algorithm) – GG20 и DKLs18, предлагающие схемы разделения закрытого ключа для совместного формирования цифровых подписей, требующие участия в процессе создания подписи определённого минимального числа обладателей совместного ключа.
- Средства для распределённой генерации ключей BLS DKG и ed25119 DKG, позволяющие разделить вычисления, проводимые для формирования открытого и закрытого ключей, между несколькими сторонами, так, что ключи могут быть сгенерированы только при совместной работе, никакая из стороне не имеет доступа к закрытым ключам и компрометация одной из сторон не угрожает всей системе.
- Реализация алгоритмов верифицируемой криптографии Camshoup и ElGamal, решающих задачу подтверждения того, что переданный шифротекст был зашифрован заданным открытым ключом, без предоставления ключа для расшифровки.