Edwards-curve Digital Signature Algorithm
Edwards-curve Digital Signature Algorithm (EdDSA) — это криптографический алгоритм с открытым ключом, предназначенный для создания и проверки цифровых подписей. Он основан на эллиптических кривых в форме Эдвардса (Edwards curves) и является альтернативой ранее распространённому алгоритму ECDSA (Elliptic Curve Digital Signature Algorithm). EdDSA был разработан для обеспечения высокой производительности и безопасности при минимальных требованиях к вычислительным ресурсам, что делает его особенно привлекательным для встраиваемых систем, мобильных устройств и протоколов с ограниченными ресурсами. Наиболее известной реализацией EdDSA является алгоритм Ed25519, использующий кривую Curve25519.
История
Разработка EdDSA началась в 2011 году, когда криптограф Дэниел Бернштейн (Daniel J. Bernstein) и его коллеги опубликовали статью «High-speed high-security signatures». В этой работе они предложили новый подход к созданию цифровых подписей на основе эллиптических кривых в форме Эдвардса, впервые описанных Харольдом Эдвардсом в 2007 году. Основной целью было устранение недостатков ECDSA, таких как зависимость от генератора случайных чисел, уязвимости к атакам по времени и сложность реализации.
В 2014 году алгоритм Ed25519 был включён в стандарт IETF RFC 8032, что официально закрепило его как рекомендуемый механизм цифровых подписей. С тех пор EdDSA получил широкое распространение: он используется в протоколах SSH, TLS 1.3, DNSSEC, а также в таких криптовалютах, как Monero, Stellar и Cardano. В России алгоритм не входит в перечень утверждённых ГОСТ Р 34.10, но активно применяется в коммерческих и открытых проектах.
Классификация
EdDSA относится к следующим категориям криптографических алгоритмов:
- Асимметричные алгоритмы: использует пару ключей (открытый и закрытый) для подписи и проверки.
- Алгоритмы на эллиптических кривых: базируется на математических свойствах эллиптических кривых, а именно на кривых в форме Эдвардса.
- Цифровые подписи: предназначен для подтверждения подлинности и целостности данных.
Устройство и принцип работы
Математическая основа
EdDSA использует эллиптические кривые в форме Эдвардса, задаваемые уравнением:
\[ x^2 + y^2 = 1 + d \cdot x^2 \cdot y^2 \]
где \(d\) — константа, не равная 0 и 1. Для Ed25519 используется кривая с параметром \(d = -121665/121666\) над конечным полем простого порядка \(p = 2^{255} - 19\). Эта кривая обладает высокой скоростью вычислений и устойчивостью к известным атакам.
Генерация ключей
- Закрытый ключ: генерируется случайным образом (например, 256-битная строка для Ed25519).
- Открытый ключ: вычисляется как скалярное умножение закрытого ключа на базовую точку кривой \(B\). В Ed25519 открытый ключ представляет собой 256-битное значение.
Процесс подписи
Подпись сообщения \(M\) выполняется в несколько этапов:
- Вычисляется хеш-значение \(h\) от закрытого ключа и сообщения (например, с помощью SHA-512).
- Определяется детерминированный одноразовый номер \(r\) на основе хеша, что исключает необходимость в генераторе случайных чисел.
- Вычисляется точка \(R = r \cdot B\).
- Вычисляется значение \(S = r + h \cdot \text{sk} \mod L\), где \(L\) — порядок базовой точки.
- Подпись состоит из пары \((R, S)\).
Проверка подписи
Проверка подписи \((R, S)\) для сообщения \(M\) и открытого ключа \(PK\):
- Вычисляется хеш \(h\) от \(R\), \(PK\) и \(M\).
- Проверяется равенство: \(S \cdot B = R + h \cdot PK\).
- Если равенство выполняется, подпись считается действительной.
Характеристики
Преимущества
- Высокая производительность: EdDSA значительно быстрее ECDSA и RSA при аналогичном уровне безопасности. Например, проверка подписи Ed25519 занимает около 0,1 миллисекунды на современном процессоре.
- Детерминированность: подпись не зависит от случайных чисел, что исключает риск утечки ключа из-за плохого генератора случайных чисел.
- Устойчивость к атакам по времени: реализация алгоритма не содержит условных переходов, зависящих от секретных данных.
- Компактность: размер подписи составляет 64 байта для Ed25519, а открытый ключ — 32 байта.
Недостатки
- Ограниченная гибкость: EdDSA использует фиксированные кривые, что может быть неудобно для некоторых специфических применений.
- Сложность реализации: хотя алгоритм проще ECDSA, его корректная реализация требует глубоких знаний криптографии.
- Совместимость: не все старые системы поддерживают EdDSA, что требует обновления программного обеспечения.
Применение
EdDSA используется в различных областях, где требуется безопасная и быстрая цифровая подпись:
- Протоколы безопасности: SSH, TLS 1.3, DNSSEC, IPsec.
- Криптовалюты: Monero, Stellar, Cardano, а также в некоторых реализациях Bitcoin (например, Taproot).
- Встраиваемые системы: устройства IoT, смарт-карты, микроконтроллеры.
- Электронная почта: протоколы OpenPGP и S/MIME (в некоторых реализациях).
- Аутентификация: системы единого входа (SSO) и веб-аутентификация (WebAuthn).
Примеры реализации
Ed25519
Наиболее распространённая реализация EdDSA, использующая кривую Curve25519. Она обеспечивает 128-битный уровень безопасности и широко поддерживается в библиотеках:
- libsodium (популярная криптографическая библиотека)
- OpenSSL (начиная с версии 1.1.1)
- Bouncy Castle (для Java и C#)
- NaCl (оригинальная реализация Бернштейна)
Ed448
Менее распространённая реализация, использующая кривую Curve448, которая обеспечивает 224-битный уровень безопасности. Описана в том же RFC 8032 и используется в тех же протоколах, но реже из-за большего размера ключей и подписей.
Интересные факты
- Название «Ed25519» происходит от комбинации «Edwards curve» и «25519» — порядка поля \(2^{255} - 19\).
- Алгоритм был разработан с учётом требований к защите от атак по времени, что делает его одним из самых безопасных для использования в реальных системах.
- В 2019 году Ed25519 был включён в стандарт FIPS 186-5 (Draft), что может привести к более широкому принятию в государственных системах США.
- В России алгоритм не входит в утверждённые государственные стандарты, но его использование не запрещено и допускается в коммерческих проектах.
Критика
Основные критические замечания в адрес EdDSA связаны с его относительной новизной по сравнению с ECDSA и RSA. Некоторые эксперты отмечают, что алгоритм не прошёл столь же длительной проверки временем, как более старые стандарты. Кроме того, существует опасение, что фиксированные кривые могут быть уязвимы к будущим атакам, если будет найден способ взломать конкретную кривую. Однако на сегодняшний день EdDSA считается одним из наиболее надёжных и эффективных алгоритмов цифровой подписи.
Источники
- RFC 8032 — Edwards-Curve Digital Signature Algorithm (EdDSA)
- Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, Bo-Yin Yang. «High-speed high-security signatures» (2011)
- Документация библиотеки libsodium
- Стандарт FIPS 186-5 (Draft)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →