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

RFC 8032

RFC 8032 — это документ (Request for Comments) под номером 8032, опубликованный Инженерным советом Интернета (IETF) в августе 2017 года, который определяет стандарт криптографической подписи EdDSA (Edwards-curve Digital Signature Algorithm) на основе эллиптических кривых в форме Эдвардса. Документ специфицирует алгоритмы Ed25519 и Ed448, используемые для создания и проверки цифровых подписей, обеспечивающих аутентификацию, целостность и неотказуемость данных.

История и контекст

Разработка RFC 8032 была обусловлена необходимостью в более производительных и безопасных алгоритмах цифровой подписи по сравнению с существующими стандартами, такими как ECDSA (Elliptic Curve Digital Signature Algorithm) и DSA (Digital Signature Algorithm). К 2017 году криптография на эллиптических кривых стала основой для многих протоколов, но реализации ECDSA часто страдали от уязвимостей, связанных с генерацией случайных чисел (например, атака с использованием небезопасного источника энтропии). Алгоритм EdDSA, предложенный Дэниелом Бернштейном и другими криптографами, был разработан для устранения этих недостатков.

Работа над стандартизацией EdDSA началась в 2014 году в рамках рабочей группы IETF по криптографии (Crypto Forum). RFC 8032 стал результатом многолетнего обсуждения и анализа, включая публикацию предварительных версий (draft-irtf-cfrg-eddsa). Документ заменил более ранние неофициальные спецификации Ed25519, которые уже использовались в ряде проектов, таких как SSH, Tor и OpenBSD.

Основные характеристики

RFC 8032 определяет два основных варианта алгоритма: Ed25519 и Ed448. Оба основаны на кривых Монтгомери и Эдвардса, что позволяет использовать одни и те же ключи для подписи и для обмена ключами (например, в протоколе X25519).

Ed25519

  • Кривая: Curve25519 (в форме Эдвардса — Ed25519).
  • Размер ключа: 256 бит (32 байта).
  • Размер подписи: 512 бит (64 байта).
  • Скорость: Высокая, особенно на процессорах с поддержкой SIMD-инструкций. Подпись и проверка выполняются за несколько микросекунд.
  • Безопасность: Обеспечивает 128-битный уровень безопасности (эквивалент AES-128).

Ed448

  • Кривая: Curve448 (в форме Эдвардса — Ed448).
  • Размер ключа: 448 бит (56 байт).
  • Размер подписи: 912 бит (114 байт).
  • Скорость: Ниже, чем у Ed25519, но выше, чем у ECDSA с аналогичным уровнем безопасности.
  • Безопасность: Обеспечивает 224-битный уровень безопасности (эквивалент AES-224).

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

Устройство алгоритма

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

  1. Закрытый ключ: Случайная последовательность байт (32 байта для Ed25519, 56 байт для Ed448).
  2. Открытый ключ: Вычисляется как скалярное умножение закрытого ключа на базовую точку кривой (B). Открытый ключ — это точка на кривой, представленная в сжатом виде (32 байта для Ed25519).

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

  1. Хэширование закрытого ключа и сообщения с помощью SHA-512 (для Ed25519) или SHAKE256 (для Ed448).
  2. Вычисление детерминированного значения r (nonce) на основе хэша.
  3. Вычисление точки R = r * B.
  4. Вычисление хэша H(R, A, M), где A — открытый ключ, M — сообщение.
  5. Вычисление S = r + H(R, A, M) * a (mod L), где a — закрытый ключ, L — порядок подгруппы кривой.
  6. Подпись: пара (R, S).

Проверка подписи

  1. Проверка, что R и S находятся в допустимых пределах.
  2. Вычисление хэша H(R, A, M).
  3. Проверка равенства: S B = R + H(R, A, M) A.
  4. Если равенство выполняется, подпись считается действительной.

Применение

RFC 8032 получил широкое распространение благодаря своей производительности и безопасности. Основные области применения:

  • Протоколы аутентификации: SSH, TLS 1.3 (в качестве дополнительного алгоритма), IKEv2 (IPsec).
  • Криптовалюты: Многие современные криптовалюты, включая Cardano, Stellar, Tezos, используют Ed25519 для подписи транзакций.
  • Системы управления версиями: Git поддерживает подписи коммитов с помощью Ed25519.
  • Операционные системы: OpenBSD, FreeBSD, Linux (в модулях ядра) используют Ed25519 для аутентификации пакетов и загрузчика.
  • Мессенджеры: Signal, WhatsApp (продукт Meta, признанной экстремистской и запрещённой в РФ) (в части протокола Signal) используют Ed25519 для подписи ключей.
  • Криптографические библиотеки: OpenSSL (с версии 1.1.1), libsodium, Bouncy Castle.

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

ХарактеристикаEd25519 (RFC 8032)ECDSA (P-256)RSA-2048
Размер ключа32 байта32 байта256 байт
Размер подписи64 байта64 байта256 байт
Скорость подписи~10 мкс~100 мкс~1 мс
Скорость проверки~20 мкс~200 мкс~30 мкс
Устойчивость к квантовым атакамНетНетНет

Ed25519 значительно быстрее и компактнее, чем RSA и ECDSA, при сопоставимом уровне безопасности.

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

  • Отсутствие постквантовой устойчивости: Как и все алгоритмы на основе эллиптических кривых, EdDSA уязвим для атак с использованием квантовых компьютеров (алгоритм Шора). В связи с этим ведутся работы по стандартизации постквантовых алгоритмов (например, CRYSTALS-Dilithium, Falcon).
  • Сложность реализации: Несмотря на простоту математической основы, реализация EdDSA требует осторожности при работе с кривыми и хэш-функциями для предотвращения side-channel атак.
  • Ограниченная поддержка в старых системах: Многие устаревшие системы и криптографические библиотеки не поддерживают EdDSA, что требует миграции.

Источники

  1. RFC 8032 — Edwards-Curve Digital Signature Algorithm (EdDSA). IETF, 2017.
  2. Bernstein, D. J., et al. "High-speed high-security signatures." Journal of Cryptographic Engineering, 2012.
  3. Langley, A., et al. "Curve25519: New Diffie-Hellman Speed Records." IACR Cryptology ePrint Archive, 2006.
  4. OpenSSL Documentation — Ed25519 and Ed448 support. OpenSSL Project, 2019.
  5. "EdDSA for SSH." IETF draft-ietf-curdle-ssh-ed25519, 2018.

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

На главную BFOmetr →