Схема цифровой подписи
В криптографии с открытым ключом алгоритм цифровой подписи на основе кривой Эдвардса ( EdDSA ) представляет собой схему цифровой подписи , использующую вариант подписи Шнорра на основе скрученных кривых Эдвардса . [1]
Он разработан так, чтобы быть быстрее существующих схем цифровой подписи, не жертвуя безопасностью. Он был разработан командой, в которую входили Дэниел Дж. Бернстайн , Нильс Дуйф, Таня Ланге , Питер Швабе и Бо-Инь Янг. [2]
Эталонная реализация — это программное обеспечение, находящееся в открытом доступе . [3]
Краткое содержание
Ниже приведено упрощенное описание EdDSA, в котором не учитываются детали кодирования целых чисел и точек кривой в виде битовых строк; полные сведения см. в статьях и RFC. [4] [2] [1]
Схема подписи EdDSA — это выбор: [4] : 1–2 [2] : 5–6 [1] : 5–7
- конечного поля над нечетной простой степенью ;
- эллиптической кривой , над которой группа -рациональных точек имеет порядок , где - большое простое число и называется кофактором;
- базовой точки с порядком ; и
- криптографической хеш-функции с -битными выходами, где так, что элементы и точки кривой в могут быть представлены строками битов.
Эти параметры являются общими для всех пользователей схемы подписи EdDSA. Безопасность схемы подписи EdDSA критически зависит от выбора параметров, за исключением произвольного выбора базовой точки — например, ожидается , что алгоритм Полларда rho для логарифмов будет приблизительно выполнять сложения кривых, прежде чем он сможет вычислить дискретный логарифм, [5] поэтому должен быть достаточно большим, чтобы это было неосуществимо, и обычно принимается превышающим 2 200 . [6]
Выбор ограничен выбором , поскольку по теореме Хассе , не может отличаться от более чем на . Хеш-функция обычно моделируется как случайный оракул в формальном анализе безопасности EdDSA.
В рамках схемы подписи EdDSA
- Открытый ключ
- Открытый ключ EdDSA представляет собой точку кривой , закодированную в битах.
- Проверка подписи
- Подпись EdDSA на сообщении с помощью открытого ключа представляет собой закодированную в битах пару из точки кривой и целого числа, удовлетворяющую следующему уравнению проверки, где обозначает конкатенацию :
- Закрытый ключ
- Закрытый ключ EdDSA — это -битная строка , которая должна быть выбрана равномерно случайным образом. Соответствующий открытый ключ — это , где — наименее значимые биты интерпретируются как целое число в little-endian .
- Подписание
- Подпись сообщения детерминированно вычисляется как где для , и Это удовлетворяет уравнению проверки
Эд25519
Ed25519 — это схема подписи EdDSA, использующая SHA-512 (SHA-2) и Curve25519 [2] , где
- и
- является уникальной точкой, координата которой находится в и чья координата положительна. «положительная» определяется в терминах битового кодирования:
- «положительные» координаты — четные координаты (младший бит очищен)
- «Отрицательные» координаты — нечетные координаты (установлен младший значащий бит)
- это SHA-512 , с .
Кривая бирационально эквивалентна кривой Монтгомери , известной как Curve25519 . Эквивалентность [2] [7]
Производительность
Первоначальная команда оптимизировала Ed25519 для семейства процессоров x86-64 Nehalem / Westmere . Проверка может выполняться пакетами по 64 подписи для еще большей пропускной способности. Ed25519 предназначен для обеспечения устойчивости к атакам, сопоставимой с качественными 128-битными симметричными шифрами . [8]
Длина открытых ключей составляет 256 бит, а длина подписей — 512 бит. [9]
Безопасное кодирование
Ed25519 разработан для того, чтобы избежать реализаций, использующих условия ветвления или индексы массива, зависящие от секретных данных, [2] : 2 [1] : 40, чтобы смягчить атаки по сторонним каналам .
Как и в других схемах подписи на основе дискретного журнала, EdDSA использует секретное значение, называемое одноразовым номером , уникальным для каждой подписи. В схемах подписи DSA и ECDSA этот одноразовый номер традиционно генерируется случайным образом для каждой подписи, и если генератор случайных чисел когда-либо сломается и будет предсказуемым при создании подписи, подпись может привести к утечке закрытого ключа, как это произошло с ключом подписи обновления прошивки Sony PlayStation 3. [10] [11] [12] [13]
В отличие от этого, EdDSA выбирает nonce детерминированно как хэш части закрытого ключа и сообщения. Таким образом, как только закрытый ключ сгенерирован, EdDSA больше не нуждается в генераторе случайных чисел для создания подписей, и нет опасности, что сломанный генератор случайных чисел, используемый для создания подписи, раскроет закрытый ключ. [2] : 8
Несоответствия стандартизации и внедрения
Обратите внимание, что существуют две попытки стандартизации EdDSA: одна от IETF, информационный RFC 8032, и одна от NIST как часть FIPS 186-5. [14] Различия между стандартами были проанализированы, [15] [16] и доступны тестовые векторы. [17]
Программное обеспечение
Известные применения Ed25519 включают OpenSSH , [18] GnuPG [19] и различные альтернативы, а также инструмент signify от OpenBSD . [20] Использование Ed25519 (и Ed448) в протоколе SSH было стандартизировано. [21] В 2023 году окончательная версия стандарта FIPS 186-5 включала детерминированный Ed25519 в качестве утвержденной схемы подписи. [14]
Эд448
Ed448 — это схема подписи EdDSA с использованием SHAKE256 и Curve448, определенная в RFC 8032. Она также была одобрена в окончательной версии стандарта FIPS 186-5. [14]
Ссылки
- ^ abcd Josefsson, S.; Liusvaara, I. (январь 2017 г.). Алгоритм цифровой подписи Edwards-Curve (EdDSA). IRTF . doi : 10.17487/RFC8032 . ISSN 2070-1721. RFC 8032 . Получено 11 июля 2022 г. .
- ^ abcdefg Бернстайн, Дэниел Дж .; Дуйф, Нильс; Ланге, Таня; Швабе, Питер; Бо-Инь Ян (2012). «Высокоскоростные высоконадежные подписи» (PDF) . Журнал криптографической инженерии . 2 (2): 77–89. doi : 10.1007/s13389-012-0027-1 . S2CID 945254.
- ^ "Программное обеспечение". 2015-06-11 . Получено 2016-10-07 .
Программное обеспечение Ed25519 находится в общественном достоянии.
- ^ AB Дэниел Дж. Бернштейн; Саймон Йозефссон; Таня Ланге; Питер Швабе; Бо-Инь Ян (4 июля 2015 г.). EdDSA для получения дополнительных кривых (PDF) (Технический отчет) . Проверено 14 ноября 2016 г.
- ^ Daniel J. Bernstein; Tanja Lange; Peter Schwabe (2011-01-01). О правильном использовании карты отрицания в методе Полларда rho (технический отчет). Архив IACR Cryptology ePrint. 2011/003 . Получено 2016-11-14 .
- ^ Бернстайн, Дэниел Дж.; Ланге, Таня. "Безопасность ECDLP: Rho". SafeCurves: выбор безопасных кривых для криптографии на основе эллиптических кривых . Получено 16.11.2016 .
- ^ Бернстайн, Дэниел Дж .; Ланге, Таня (2007). Куросава, Каору (ред.). Более быстрое сложение и удвоение на эллиптических кривых. Достижения в криптологии — ASIACRYPT. Конспект лекций по информатике. Том 4833. Берлин: Springer. С. 29–50. doi : 10.1007/978-3-540-76900-2_3 . ISBN 978-3-540-76899-9. МР 2565722.
- ^ Бернстайн, Дэниел Дж. (2017-01-22). "Ed25519: высокоскоростные высоконадежные подписи" . Получено 2019-09-27 .
Эта система имеет целевой уровень безопасности 2^128; ее взлом имеет такую же сложность, как взлом NIST P-256, RSA с ключами длиной ~3000 бит, надежные 128-битные блочные шифры и т. д.
- ^ Бернстайн, Дэниел Дж. (2017-01-22). "Ed25519: высокоскоростные высоконадежные подписи" . Получено 2020-06-01 .
Подписи умещаются в 64 байта. […] Открытые ключи занимают всего 32 байта.
- ^ Джонстон, Кейси (2010-12-30). "PS3 взломана через плохую реализацию криптографии". Ars Technica . Получено 2016-11-15 .
- ^ fail0verflow (29.12.2010). Взлом консолей 2010: эпический провал PS3 (PDF) . Chaos Communication Congress . Архивировано из оригинала (PDF) 26.10.2018 . Получено 15.11.2016 .
{{cite conference}}
: CS1 maint: numeric names: authors list (link) - ^ "27-й конгресс Chaos Communication: Взлом консолей 2010: эпический провал PS3" (PDF) . Получено 04.08.2019 .
- ^ Бьюкенен, Билл (2018-11-12). «Не играем случайно: взломы Sony PS3 и Bitcoin Crypto. Следите за генераторами случайных чисел». Medium . Архивировано из оригинала 2018-11-30 . Получено 2024-03-11 .
- ^ abc Муди, Дастин (2023-02-03). FIPS 186-5: Стандарт цифровой подписи (DSS). NIST . doi :10.6028/NIST.FIPS.186-5. S2CID 256480883 . Получено 2023-03-04 .
- ^ Константинос Халкиас, Франсуа Гарийо и Валерия Николаенко (2020-10-01). Укрощение множества EdDSA. Исследовательская конференция по стандартизации безопасности (SSR 2020) . Получено 2021-02-15 .
- ^ Жаклин Брендель, Кас Кремерс, Деннис Джексон и Манг Чжао (2020-07-03). Доказуемая безопасность ed25519: теория и практика. Симпозиум IEEE по безопасности и конфиденциальности (S&P 2021) . Получено 15 февраля 2021 г.
{{cite conference}}
: CS1 maint: multiple names: authors list (link) - ^ "ed25519-speccheck". GitHub . Получено 2021-02-15 .
- ^ "Изменения с OpenSSH 6.4". 2014-01-03 . Получено 2016-10-07 .
- ^ "Что нового в GnuPG 2.1". 2016-07-14 . Получено 2016-10-07 .
- ^ "Вещи, которые используют Ed25519". 2016-10-06 . Получено 2016-10-07 .
- ^ Harris, B.; Velvindron, L. (февраль 2020 г.). Ed25519 и Ed448 Алгоритмы открытого ключа для протокола Secure Shell (SSH). IETF . doi : 10.17487/RFC8709 . ISSN 2070-1721. RFC 8709 . Получено 11 июля 2022 г. .
- ^ "Системная безопасность для watchOS" . Получено 2021-06-07 .
- ^ Мэтт Джонстон (2013-11-14). "DROPBEAR_2013.61test". Архивировано из оригинала 2019-08-05 . Получено 2019-08-05 .
- ^ "Эвристические алгоритмы и распределенные вычисления" (PDF) . Эвристические алгоритмы и распределенные вычисления (на русском языке): 55–56. 2015. ISSN 2311-8563. Архивировано из оригинала (PDF) 2016-10-20 . Получено 07.10.2016 .
- ^ Фрэнк Денис. "Minisign: невероятно простой инструмент для подписи файлов и проверки подписей" . Получено 07.10.2016 .
- ^ minisign-misc на GitHub
- ^ Фрэнк Денис (29.06.2016). "libsodium/ChangeLog". GitHub . Получено 07.10.2016 .
- ^ "OpenSSL CHANGES". 31 июля 2019 г. Архивировано из оригинала 18 мая 2018 г. Получено 5 августа 2019 г.
- ^ "python/ed25519.py: основные подпрограммы". 2011-07-06 . Получено 2016-10-07 .
- ^ "Программное обеспечение: Альтернативные реализации". 2015-06-11 . Получено 2016-10-07 .
- ^ "eBACS: ECRYPT Benchmarking of Cryptographic Systems: SUPERCOP". 2016-09-10 . Получено 2016-10-07 .
- ^ "Virgil Security Crypto Library for C: Library: Foundation". GitHub . Получено 2019-08-04 .
- ^ "wolfSSL Embedded SSL Library (ранее CyaSSL)" . Получено 2016-10-07 .
Внешние ссылки
- Домашняя страница Ed25519