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).
Оба алгоритма являются детерминированными: подпись для одного и того же сообщения и ключа всегда будет одинаковой, что исключает уязвимости, связанные с генерацией случайных чисел.
Устройство алгоритма
Генерация ключей
- Закрытый ключ: Случайная последовательность байт (32 байта для Ed25519, 56 байт для Ed448).
- Открытый ключ: Вычисляется как скалярное умножение закрытого ключа на базовую точку кривой (B). Открытый ключ — это точка на кривой, представленная в сжатом виде (32 байта для Ed25519).
Создание подписи
- Хэширование закрытого ключа и сообщения с помощью SHA-512 (для Ed25519) или SHAKE256 (для Ed448).
- Вычисление детерминированного значения r (nonce) на основе хэша.
- Вычисление точки R = r * B.
- Вычисление хэша H(R, A, M), где A — открытый ключ, M — сообщение.
- Вычисление S = r + H(R, A, M) * a (mod L), где a — закрытый ключ, L — порядок подгруппы кривой.
- Подпись: пара (R, S).
Проверка подписи
- Проверка, что R и S находятся в допустимых пределах.
- Вычисление хэша H(R, A, M).
- Проверка равенства: S B = R + H(R, A, M) A.
- Если равенство выполняется, подпись считается действительной.
Применение
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, что требует миграции.
Источники
- RFC 8032 — Edwards-Curve Digital Signature Algorithm (EdDSA). IETF, 2017.
- Bernstein, D. J., et al. "High-speed high-security signatures." Journal of Cryptographic Engineering, 2012.
- Langley, A., et al. "Curve25519: New Diffie-Hellman Speed Records." IACR Cryptology ePrint Archive, 2006.
- OpenSSL Documentation — Ed25519 and Ed448 support. OpenSSL Project, 2019.
- "EdDSA for SSH." IETF draft-ietf-curdle-ssh-ed25519, 2018.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →