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

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 \). Использование формы Эдвардса обеспечивает ряд преимуществ, включая полную закономерность сложения точек (отсутствие исключительных случаев) и устойчивость к атакам, связанным с невалидными точками кривой.

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

  • Размер ключа: 32 байта (256 бит) для закрытого ключа и 32 байта для открытого ключа.
  • Размер подписи: 64 байта (512 бит).
  • Базовая точка: фиксированная точка на кривой, используемая для генерации ключей и подписей.
  • Хеш-функция: SHA-512 (в оригинальной спецификации), хотя возможны варианты с другими хешами.

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

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

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

  1. Закрытый ключ \( sk \) представляет собой случайную последовательность из 32 байт.
  2. Из закрытого ключа с помощью хеш-функции SHA-512 вычисляется промежуточное значение, которое разделяется на две части:
  • Первая часть используется для вычисления секретного скаляра \( a \) (путём очистки младших битов и установки старших битов для предотвращения атак).
  • Вторая часть (\( r \)) используется при подписи.
  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 имеет ряд значительных преимуществ по сравнению с другими алгоритмами цифровой подписи.

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

  • Скорость: Алгоритм выполняет операции подписи и верификации значительно быстрее, чем ECDSA с кривой P-256, особенно на процессорах без аппаратного ускорения. Верификация может быть выполнена за несколько десятков микросекунд на современных CPU.
  • Компактность: Размер ключей (32 байта) и подписей (64 байта) меньше, чем у RSA (2048–4096 бит) и ECDSA (64–72 байта для подписи).

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

  • Детерминированность: Подпись не зависит от генератора случайных чисел, что устраняет уязвимости, связанные с повторным использованием nonce (как в случае с утечкой закрытого ключа в ECDSA).
  • Устойчивость к атакам: Ed25519 устойчив к атакам по побочным каналам (например, по времени выполнения) и к атакам, связанным с невалидными точками кривой. Кривая выбрана так, чтобы минимизировать риски, связанные с дискретным логарифмированием.
  • Квантовая устойчивость: Как и все схемы на основе эллиптических кривых, Ed25519 уязвим для атак с использованием квантовых компьютеров (алгоритм Шора), но в настоящее время остаётся безопасным.

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

  • Фиксированные параметры: Алгоритм использует фиксированную кривую и базовую точку, что упрощает реализацию и снижает вероятность ошибок при настройке.
  • Отсутствие исключений: Операции сложения точек на кривой Эдвардса не имеют исключительных случаев, что делает реализацию более надёжной.

Применение

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

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

  • Bitcoin и альткоины: Некоторые криптовалюты, такие как Monero, Stellar и Cardano, используют Ed25519 для подписи транзакций. В Bitcoin и Ethereum основным алгоритмом остаётся ECDSA, но Ed25519 применяется в некоторых решениях второго уровня (например, в протоколах Lightning Network).
  • Системы управления ключами: В кошельках и аппаратных модулях безопасности (HSM) Ed25519 используется для генерации и хранения ключей.

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

  • SSH: Начиная с OpenSSH 6.5 (2014 год), Ed25519 поддерживается в качестве алгоритма аутентификации. Он считается более безопасным и быстрым, чем RSA и DSA.
  • TLS/SSL: Ed25519 включён в стандарт TLS 1.3 (RFC 8446) и используется для аутентификации серверов и клиентов. Он поддерживается современными браузерами и веб-серверами.
  • DNSSEC: Алгоритм используется для подписи DNS-записей, обеспечивая целостность данных в системе доменных имён.

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

  • Системы управления версиями: Git поддерживает подпись коммитов и тегов с помощью Ed25519.
  • Мобильные и встраиваемые системы: Благодаря малому размеру кода и высокой производительности, Ed25519 применяется в IoT-устройствах, смарт-картах и других устройствах с ограниченными ресурсами.
  • Почтовые протоколы: В некоторых реализациях OpenPGP (например, GnuPG) добавлена поддержка Ed25519.

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

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

  • Несовместимость с существующими стандартами: Многие старые системы (например, корпоративные PKI на базе RSA или ECDSA) не поддерживают Ed25519, что требует обновления инфраструктуры.
  • Отсутствие поддержки в некоторых законодательствах: В ряде стран (например, в США в рамках FIPS) Ed25519 не сертифицирован для использования в государственных системах, что ограничивает его применение в госсекторе.
  • Квантовая уязвимость: Как и все классические криптосистемы, Ed25519 не является квантово-устойчивым, что делает его потенциально уязвимым в будущем.

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

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

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

  • Алгоритм Ed25519 был разработан как часть проекта «NaCl» (Networking and Cryptography library), который стремился создать простые и безопасные криптографические инструменты.
  • В 2017 году исследователи обнаружили уязвимость в некоторых реализациях Ed25519, связанную с неправильной обработкой точек на кривой, что привело к обновлению спецификаций.
  • Ed25519 используется в операционной системе Qubes OS для аутентификации пользователей и подписи пакетов.

Источники

  • Bernstein, D. J., Duif, N., Lange, T., Schwabe, P., & Yang, B. Y. (2011). High-speed high-security signatures. Journal of Cryptographic Engineering, 2(2), 77–89.
  • RFC 8032: Edwards-Curve Digital Signature Algorithm (EdDSA). IETF, 2017.
  • Bernstein, D. J. (2006). Curve25519: New Diffie-Hellman speed records. Public Key Cryptography – PKC 2006, 207–228.
  • Langley, A., & Hamburg, M. (2014). Ed25519 for DNSSEC. IETF Draft.
  • OpenSSH 6.5 Release Notes, 2014.

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

На главную BFOmetr →