Открыть сервис

Ed25519

Ed25519 — это алгоритм цифровой подписи на основе эллиптических кривых, предложенный Дэниелом Бернштейном, Нильсом Брифсом, Таньей Ланге и Питером Швабе. Он является одним из вариантов схемы EdDSA (Edwards-curve Digital Signature Algorithm) и использует кривую Curve25519 в форме Эдвардса. Ed25519 отличается высокой скоростью работы, устойчивостью к различным атакам и компактностью подписей и ключей, что делает его одним из наиболее распространённых алгоритмов асимметричного шифрования в современных криптографических системах.

История и происхождение

Разработка Ed25519 началась как часть более широкого проекта по созданию высокопроизводительных и безопасных криптографических примитивов. Дэниел Бернштейн, известный своими работами в области криптографии (включая создание алгоритмов ChaCha20, Poly1305 и Curve25519), совместно с коллегами представил спецификацию EdDSA в 2011 году. Основной целью было устранение недостатков, присущих более старым схемам на основе эллиптических кривых, таким как ECDSA (Elliptic Curve Digital Signature Algorithm), включая проблемы с генерацией случайных чисел и уязвимости к атакам по побочным каналам.

Название «Ed25519» происходит от используемой кривой: «Ed» указывает на форму Эдвардса, «25519» — на простое число \( 2^{255} - 19 \), которое лежит в основе поля кривой Curve25519. В 2012 году алгоритм был стандартизирован в документе IETF RFC 8032, что способствовало его широкому внедрению.

Математические основы

Ed25519 базируется на эллиптической кривой, известной как Curve25519, но в её скрученной форме Эдвардса. Кривая задаётся уравнением:

\[ -x^2 + y^2 = 1 + d \cdot x^2 \cdot y^2 \]

где \( d \) — константа, равная \( -121665/121666 \) в поле по модулю \( 2^{255} - 19 \). Использование формы Эдвардса обеспечивает ряд преимуществ, включая полную закономерность сложения точек (отсутствие исключительных случаев) и устойчивость к атакам, связанным с невалидными точками кривой.

Параметры алгоритма

Принцип работы

Процесс подписи и верификации в Ed25519 состоит из нескольких этапов.

Генерация ключей

  1. Закрытый ключ \( sk \) представляет собой случайную последовательность из 32 байт.
  2. Из закрытого ключа с помощью хеш-функции SHA-512 вычисляется промежуточное значение, которое разделяется на две части:
  1. Открытый ключ \( pk \) вычисляется как \( pk = a \cdot B \), где \( B \) — базовая точка кривой, а \( a \) — секретный скаляр. Результатом является точка на кривой, представленная 32 байтами.

Создание подписи

Для подписи сообщения \( M \) выполняются следующие шаги:

  1. Вычисляется детерминированное значение \( r = \text{SHA-512}(r\text{-prefix} \parallel M) \), где \( r\text{-prefix} \) — вторая часть хеша закрытого ключа. Это гарантирует, что подпись детерминирована и не зависит от генератора случайных чисел.
  2. Вычисляется точка \( R = r \cdot B \).
  3. Вычисляется хеш \( k = \text{SHA-512}(R \parallel pk \parallel M) \).
  4. Вычисляется скаляр \( S = r + k \cdot a \mod \ell \), где \( \ell \) — порядок базовой точки.
  5. Подпись состоит из пары \( (R, S) \), где \( R \) — 32 байта, \( S \) — 32 байта.

Верификация подписи

Для проверки подписи \( (R, S) \) сообщения \( M \) с открытым ключом \( pk \) выполняются следующие шаги:

  1. Вычисляется хеш \( k = \text{SHA-512}(R \parallel pk \parallel M) \).
  2. Проверяется равенство: \( S \cdot B = R + k \cdot pk \).
  3. Если равенство выполняется, подпись считается действительной.

Преимущества и особенности

Ed25519 имеет ряд значительных преимуществ по сравнению с другими алгоритмами цифровой подписи.

Производительность

Безопасность

Простота реализации

Применение

Ed25519 широко используется в различных областях, где требуется безопасная аутентификация и целостность данных.

Криптовалюты и блокчейн

Сетевые протоколы

Другие области

Критика и ограничения

Несмотря на широкое признание, Ed25519 имеет некоторые ограничения и подвергается критике.

Сравнение с другими алгоритмами

ХарактеристикаEd25519ECDSA (P-256)RSA (2048 бит)
Размер открытого ключа32 байта32 байта256 байт
Размер подписи64 байта64–72 байта256 байт
Скорость подписиВысокаяСредняяНизкая
Скорость верификацииВысокаяСредняяНизкая
ДетерминированностьДаНет (требуется random nonce)Да
Устойчивость к побочным каналамВысокаяСредняяНизкая

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →