EdDSA
EdDSA (Edwards-curve Digital Signature Algorithm) — это асимметричный алгоритм цифровой подписи, основанный на эллиптических кривых в форме Эдвардса. Относится к классу криптосистем с открытым ключом и предназначен для обеспечения аутентификации, целостности и неотказуемости электронных документов и сообщений. EdDSA является современной альтернативой более ранним алгоритмам, таким как DSA (Digital Signature Algorithm) и ECDSA (Elliptic Curve Digital Signature Algorithm), и отличается высокой производительностью, устойчивостью к побочным каналам атаки и детерминированным характером генерации подписи.
История
Разработка EdDSA связана с работами канадского криптографа Дэниела Бернстайна. В 2006 году Бернстайн совместно с Таньей Ланге и Питером Швабе представил алгоритм подписи на основе кривых Эдвардса, который был назван EdDSA. Основой для алгоритма послужили эллиптические кривые, впервые описанные в 1987 году американским математиком Гарольдом Эдвардсом, который предложил новую форму уравнения эллиптической кривой, упрощающую вычисления.
В 2011 году Бернстайн, Ланге и Швабе опубликовали формальное описание EdDSA, а также конкретную реализацию на кривой Curve25519, получившую название Ed25519. Эта реализация быстро завоевала популярность благодаря своей скорости, безопасности и простоте реализации. В 2012 году Ed25519 была включена в протокол SSH, а затем и в другие криптографические библиотеки и протоколы, такие как OpenSSH, GnuPG, TLS 1.3 и Signal.
В 2017 году Национальный институт стандартов и технологий США (NIST) начал процесс стандартизации постквантовой криптографии, в рамках которого EdDSA рассматривался как один из кандидатов. В 2020 году EdDSA был включён в стандарт NIST SP 800-186 «Рекомендации по криптографии на эллиптических кривых» как официально рекомендованный алгоритм. В России алгоритм не стандартизирован, однако его использование допускается в рамках международных протоколов и систем, не подпадающих под требования ГОСТ Р 34.10-2012.
Классификация
EdDSA можно классифицировать по нескольким признакам:
- По типу кривой: алгоритм использует кривые в форме Эдвардса, которые являются частным случаем эллиптических кривых. Наиболее распространённые кривые — Ed25519 (на основе Curve25519) и Ed448 (на основе Curve448).
- По методу генерации подписи: EdDSA является детерминированным алгоритмом — значение подписи для одного и того же сообщения и одного и того же закрытого ключа всегда одинаково. Это отличает его от ECDSA, где используется случайное значение (nonce), что может приводить к уязвимостям при плохой генерации случайных чисел.
- По области применения: EdDSA используется в системах аутентификации, цифровых подписях, протоколах обмена ключами и блокчейн-технологиях.
Устройство и характеристики
Кривые Эдвардса
Основой EdDSA являются эллиптические кривые в форме Эдвардса, которые задаются уравнением:
\[ x^2 + y^2 = 1 + d \cdot x^2 \cdot y^2 \]
где \( d \) — константа, не равная 0 и 1. Кривые Эдвардса обладают рядом преимуществ перед кривыми в форме Вейерштрасса, используемыми в ECDSA:
- Симметрия: операции сложения точек и удвоения выполняются по одинаковым формулам, что упрощает реализацию и защищает от атак по времени.
- Высокая скорость: вычисления на кривых Эдвардса выполняются быстрее, чем на кривых Вейерштрасса, особенно при использовании специальных кривых, таких как Curve25519.
- Устойчивость к атакам: кривые Эдвардса не имеют точек с нулевой координатой, что исключает некоторые типы атак, связанные с неопределённостью операций.
Параметры алгоритма
Для работы EdDSA необходимы следующие параметры:
- Кривая: набор параметров, включающий порядок кривой, базовую точку \( B \) и константу \( d \).
- Хеш-функция: используется для вычисления хеша сообщения и генерации подписи. В Ed25519 применяется SHA-512, в Ed448 — SHAKE256.
- Закрытый ключ: случайное число, которое хранится в секрете.
- Открытый ключ: точка на кривой, вычисляемая как \( A = s \cdot B \), где \( s \) — закрытый ключ.
Процесс подписи
- Генерация закрытого ключа: генерируется случайное число \( s \) длиной, равной размеру хеша (например, 256 бит для Ed25519).
- Вычисление открытого ключа: \( A = s \cdot B \).
- Подпись сообщения \( m \):
- Вычисляется хеш \( r = H(s, m) \), где \( H \) — хеш-функция.
- Вычисляется точка \( R = r \cdot B \).
- Вычисляется хеш \( h = H(R, A, m) \).
- Вычисляется значение \( S = r + h \cdot s \mod q \), где \( q \) — порядок кривой.
- Подпись представляет собой пару \( (R, S) \).
Процесс верификации
- Получатель знает открытый ключ \( A \), сообщение \( m \) и подпись \( (R, S) \).
- Вычисляется хеш \( h = H(R, A, m) \).
- Проверяется равенство: \( S \cdot B = R + h \cdot A \).
- Если равенство выполняется, подпись считается действительной.
Преимущества перед ECDSA
- Детерминированность: отсутствие зависимости от генератора случайных чисел исключает уязвимости, связанные с повторным использованием nonce.
- Скорость: Ed25519 работает быстрее ECDSA на кривой P-256, особенно на процессорах без аппаратного ускорения.
- Меньший размер ключей и подписей: для Ed25519 размер закрытого ключа — 32 байта, открытого — 32 байта, подписи — 64 байта. Для ECDSA на P-256 эти размеры составляют 32, 32 и 64 байта соответственно, но при этом Ed25519 обеспечивает более высокий уровень безопасности (128-битный против 128-битного, но с большим запасом).
- Устойчивость к атакам по времени: реализация EdDSA может быть выполнена таким образом, что время выполнения не зависит от входных данных.
Применение
EdDSA широко применяется в различных областях криптографии и информационной безопасности:
- Протоколы аутентификации: Ed25519 используется в протоколе SSH для аутентификации пользователей и серверов. Начиная с OpenSSH 6.5 (2014 год), поддержка Ed25519 включена по умолчанию.
- Цифровые подписи: в протоколе TLS 1.3 (RFC 8446) Ed25519 и Ed448 являются обязательными для реализации алгоритмами подписи.
- Блокчейн-технологии: EdDSA используется в криптовалютах, таких как Monero, Stellar, Cardano, а также в системе распределённых реестров Hyperledger. В Bitcoin и Ethereum используется ECDSA, но в некоторых форках (например, Bitcoin Cash) рассматривается переход на EdDSA.
- Мессенджеры и протоколы обмена сообщениями: протокол Signal, используемый в мессенджерах Signal, WhatsApp (продукт Meta, признанной экстремистской и запрещённой в РФ) и Facebook Messenger (компания Meta признана экстремистской и запрещена в РФ), применяет Ed25519 для аутентификации и обмена ключами.
- Системы управления версиями: Git поддерживает подпись коммитов с помощью Ed25519 через GnuPG.
Критика
Несмотря на преимущества, EdDSA имеет и некоторые недостатки:
- Совместимость: не все старые системы и библиотеки поддерживают EdDSA, что может потребовать обновления программного обеспечения.
- Стандартизация: в России и некоторых других странах EdDSA не включён в национальные стандарты криптографии, что ограничивает его применение в государственных информационных системах.
- Постквантовая устойчивость: как и все алгоритмы на основе эллиптических кривых, EdDSA уязвим для атак с использованием квантовых компьютеров, работающих по алгоритму Шора. В связи с этим ведутся разработки постквантовых алгоритмов подписи, таких как CRYSTALS-Dilithium и FALCON.
Интересные факты
- Алгоритм Ed25519 настолько быстр, что может генерировать подписи со скоростью более 100 000 подписей в секунду на современном процессоре.
- В 2019 году в библиотеке libsodium была обнаружена уязвимость, связанная с неправильной реализацией Ed25519, которая позволяла подделывать подписи. Уязвимость была исправлена в следующей версии.
- EdDSA является одним из немногих алгоритмов, которые были рекомендованы IETF (Internet Engineering Task Force) для использования в протоколах Интернета без оговорок.
Источники
- Bernstein, D. J., Lange, T., & Schwabe, P. (2011). «EdDSA: High-speed high-security signatures». Journal of Cryptographic Engineering.
- NIST SP 800-186. «Recommendations for Discrete Logarithm-based Cryptography: Elliptic Curve Domain Parameters».
- RFC 8032. «Edwards-Curve Digital Signature Algorithm (EdDSA)».
- Bernstein, D. J. (2006). «Curve25519: New Diffie-Hellman speed records». Public Key Cryptography — PKC 2006.
- Langley, A., & Hamburg, M. (2014). «Ed25519: high-speed high-security signatures». OpenSSH release notes.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →