Общий | |
---|---|
Дизайнеров | Даниэль Дж. Бернштейн , Нильс Дуиф, Таня Ланге , Питер Швабе, Бо-Инь Ян и др. |
Впервые опубликовано | 26 сентября 2011 г. |
Деталь | |
Состав | Криптография с эллиптическими кривыми |
В криптографии с открытым ключом , Edwards кривой Алгоритм цифровой подписи ( EdDSA ) является цифровая подпись схема с использованием варианта Шнорра подписи , основанной на искривленных кривых Edwards . [1] Он разработан, чтобы быть быстрее существующих схем цифровой подписи без ущерба для безопасности. Он был разработан командой, в которую входили Даниэль Дж. Бернштейн , Нильс Дуиф, Таня Ланге , Питер Швабе и Бо-Инь Ян. [2] эталонная реализация является программным обеспечением общественного достояния . [3]
Резюме [ править ]
Ниже приводится упрощенное описание EdDSA без учета деталей кодирования целых чисел и точек кривой как битовых строк; полная информация в статьях и RFC. [4] [2] [1]
Схема подписи EdDSA - это выбор:
- из конечного поля над нечетной мощностью ;
- на эллиптической кривой над которой группа из рациональных точек имеет порядок , в котором большое число и называется кофактором;
- базовой точки с заказом ; а также
- из криптографической хэш - функции с битовых выходов, где таким образом , чтобы элементы и точки кривой в могут быть представлены строками битов.
Эти параметры являются общими для всех пользователей схемы подписи EdDSA. Безопасность схемы подписи EdDSA в решающей степени зависит от выбора параметров, за исключением произвольного выбора базовой точки - например, ожидается , что алгоритм Ро Полларда для логарифмов потребует приблизительно сложения кривых, прежде чем сможет вычислить дискретный логарифм [5]. so должен быть достаточно большим, чтобы это было невозможно, и обычно превышает 2 200 . [6] Выбор ограничен выбор , так как по теореме Хассе , не может отличаться от более чем . Хеш-функцияобычно моделируется как случайный оракул при формальном анализе безопасности EdDSA. В варианте HashEdDSA требуется дополнительная хеш-функция, устойчивая к коллизиям .
В схеме подписи EdDSA
- Открытый ключ
- Открытый ключ EdDSA - это точка кривой , закодированная в битах.
- Подпись
- Подпись EdDSA в сообщении с помощью открытого ключа - это закодированная в битах пара точки кривой и целого числа, удовлетворяющая уравнению проверки.
- Закрытый ключ
- Закрытый ключ EdDSA - это битовая строка, которую следует выбирать равномерно и случайным образом. Соответствующий открытый ключ , где младшие значащие биты интерпретируются как целое число с прямым порядком байтов. Подпись на сообщении есть где для иЭто удовлетворяет уравнению проверки:
Ed25519 [ править ]
Ed25519 - это схема подписи EdDSA с использованием SHA-512 (SHA-2) и Curve25519 [2], где
- а также
- - единственная точка , координата которой положительна. "положительный" определяется в терминах битового кодирования:
- "положительные" координаты - это четные координаты (младший бит очищен)
- «отрицательные» координаты - нечетные координаты (установлен младший бит)
- это SHA-512 , с .
Кривая является бирационально к кривой Монтгомери , известной как Curve25519 . Эквивалентность [2] [7]
Производительность [ править ]
Первоначальная команда оптимизировала Ed25519 для семейства процессоров x86-64 Nehalem / Westmere . Проверка может выполняться партиями по 64 подписи для еще большей пропускной способности. Ed25519 предназначен для обеспечения устойчивости к атакам, сопоставимой с качеством 128-битных симметричных шифров . [8] Открытые ключи имеют длину 256 бит, а подписи вдвое больше. [9]
Безопасное кодирование [ править ]
В качестве функций безопасности Ed25519 не использует операции ветвления и шаги индексации массива, которые зависят от секретных данных, чтобы отразить множество атак по побочным каналам .
Как и другие схемы подписи на основе дискретного журнала, EdDSA использует секретное значение, называемое одноразовым идентификатором, уникальным для каждой подписи. В схемах подписи DSA и ECDSA этот одноразовый номер традиционно генерируется случайным образом для каждой подписи - и если генератор случайных чисел когда-либо сломается и станет предсказуемым при создании подписи, подпись может вызвать утечку закрытого ключа, как это произошло с прошивкой Sony PlayStation 3 обновить ключ подписи. [10] [11] [12]Напротив, EdDSA детерминированно выбирает одноразовый номер как хэш части закрытого ключа и сообщения. Таким образом, после того, как закрытый ключ сгенерирован, EdDSA больше не нуждается в генераторе случайных чисел для создания подписей, и нет опасности, что сломанный генератор случайных чисел, используемый для создания подписи, раскроет закрытый ключ.
Несоответствия в стандартизации и реализации [ править ]
Обратите внимание, что для EdDSA предпринимаются две попытки стандартизации: одна от IETF, информационная RFC 8032 и одна от NIST как часть FIPS 186–5 (2019). [13] Различия между стандартами были проанализированы, [14] [15] и доступны тест-векторы. [16]
Программное обеспечение [ править ]
Известные применения Ed25519 включают OpenSSH , [17] GnuPG [18] и различные альтернативы, а также инструмент signify от OpenBSD . [19] Использование Ed25519 в протоколе SSH стандартизируется. [20] В 2019 году черновая версия стандарта FIPS 186-5 включала детерминированный Ed25519 в качестве утвержденной схемы подписи. [21]
- Эталонная реализация SUPERCOP [22] ( язык C со встроенным ассемблером )
- Медленная, но краткая альтернативная реализация [23] не включает защиту от атак по побочным каналам [24] ( Python )
- NaCl / либнатрий [25]
- Протокол криптовалюты CryptoNote
- wolfSSL [26]
- I2Pd имеет собственную реализацию EdDSA [27]
- Minisign [28] и Minisign Miscellanea [29] для macOS
- Вирджил PKI по умолчанию использует ключи Ed25519 [30]
- Ботан
- Dropbear SSH с 2013 г. 61test [31]
- OpenSSL 1.1.1 [32]
- Сервер и клиент Hashmap ( язык Go и Javascript )
- Libgcrypt
- Комплект для разработки Java 15
Ed448 [ править ]
Ed448 - это схема подписи EdDSA с использованием SHA-3 и Curve448, определенная в RFC 8032 . Он также был утвержден в проекте стандарта FIPS 186-5. [21]
Ссылки [ править ]
- ^ a b Josefsson, S .; Люсваара, И. (январь 2017 г.). Алгоритм цифровой подписи по кривой Эдвардса (EdDSA) . Инженерная группа Интернета . DOI : 10,17487 / RFC8032 . ISSN 2070-1721 . RFC 8032 . Проверено 31 июля 2017 .
- ^ a b c d Бернштейн, Дэниел Дж .; Дуиф, Нильс; Ланге, Таня; Швабе, Питер; Бо-Инь Ян (2012). «Высокоскоростные высоконадежные подписи» (PDF) . Журнал криптографической инженерии . 2 (2): 77–89. DOI : 10.1007 / s13389-012-0027-1 . S2CID 945254 .
- ^ «Программное обеспечение» . 2015-06-11 . Проверено 7 октября 2016 .
Программное обеспечение Ed25519 находится в открытом доступе.
- ^ Дэниел Дж. Бернштейн; Саймон Йозефссон; Таня Ланге; Питер Швабе; Бо-Инь Ян (2015-07-04). EdDSA для получения дополнительных кривых (PDF) (Технический отчет) . Проверено 14 ноября 2016 .
- ^ Дэниел Дж. Бернштейн; Таня Ланге; Питер Швабе (01.01.2011). О правильном использовании карты отрицания в методе Полларда ро (Технический отчет). IACR Cryptology ePrint Archive. 2011/003 . Проверено 14 ноября 2016 .
- ^ Дэниел Дж. Бернштейн; Таня Ланге. "Безопасность ECDLP: Ро" . SafeCurves: выбор безопасных кривых для криптографии с эллиптическими кривыми . Проверено 16 ноября 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: высокоскоростные сигнатуры с высокой степенью защиты» . Проверено 27 сентября 2019 .
Эта система имеет цель безопасности 2 ^ 128;
его взлом имеет такую же сложность, как взлом NIST P-256, RSA с ~ 3000-битными ключами, надежные 128-битные блочные шифры и т. д.
- ^ Дэниел Дж. Бернштейн (2017-01-22). «Ed25519: высокоскоростные сигнатуры с высокой степенью защиты» . Проверено 1 июня 2020 .
Подпись умещается в 64 байта.
[…] Открытые ключи занимают всего 32 байта.
- ^ Джонстон, Кейси (30 декабря 2010). «PS3 взломана из-за плохой реализации криптографии» . Ars Technica . Проверено 15 ноября 2016 .
- ^ fail0verflow (29 декабря 2010 г.). Взлом консоли 2010: Эпический провал PS3 (PDF) . Конгресс Хаоса Коммуникации . Архивировано из оригинального (PDF) 26.10.2018 . Проверено 15 ноября 2016 .
- ↑ 27th Chaos Communication Congress: Console Hacking 2010: PS3 Epic Fail (PDF) . Проверено 4 августа 2019 .
- ^ «FIPS 186-5: Стандарт цифровой подписи (DSS)» . Проверено 15 февраля 2021 .
- ^ Константинос Chalkias, Франсуа Garillot и Валерия Николаенко (2020-10-01). Укрощение множества EdDSA . Конференция по исследованию стандартизации безопасности (SSR 2020) . Проверено 15 февраля 2021 .
- ↑ Жаклин Брендель, Кас Кремерс, Деннис Джексон и Манг Чжао (2020-07-03). Доказуемая безопасность ed25519: теория и практика . Симпозиум IEEE по безопасности и конфиденциальности (S&P 2021) . Проверено 15 февраля 2021 .CS1 maint: multiple names: authors list (link)
- ^ "ed25519-speccheck" . Проверено 15 февраля 2021 .
- ^ «Изменения по сравнению с OpenSSH 6.4» . 2014-01-03 . Проверено 7 октября 2016 .
- ^ «Что нового в GnuPG 2.1» . 2016-07-14 . Проверено 7 октября 2016 .
- ^ "Вещи, которые используют Ed25519" . 2016-10-06 . Проверено 7 октября 2016 .
- ^ Б. Харрис; Л. Велвиндрон; Hackers.mu (03.02.2018). Ed25519 алгоритм открытого ключа для протокола Secure Shell (SSH) . Идентификационный номер draft-ietf-curdle-ssh-ed25519-02.
- ^ a b «FIPS 186-5 (Проект): Стандарт цифровой подписи (DSS)» . NIST . Октябрь 2019 . Проверено 23 июля 2020 .
- ^ «eBACS: ECRYPT Бенчмаркинг криптографических систем: SUPERCOP» . 2016-09-10 . Проверено 7 октября 2016 .
- ^ "python / ed25519.py: основные подпрограммы" . 2011-07-06 . Проверено 7 октября 2016 .
- ^ «Программное обеспечение: Альтернативные реализации» . 2015-06-11 . Проверено 7 октября 2016 .
- ^ Фрэнк Денис (2016-06-29). "libsodium / ChangeLog" . Проверено 7 октября 2016 .
- ^ "Встроенная библиотека SSL wolfSSL (ранее CyaSSL)" . Проверено 7 октября 2016 .
- ^ «Эвристические алгоритмы и распределенные вычисления» (PDF) . «Свристические алгоритмы и распределенные вычисления» : 55–56. 2015. ISSN 2311-8563 . Архивировано из оригинального (PDF) 20 октября 2016 года . Проверено 7 октября 2016 .
- ↑ Фрэнк Денис. «Minisign: мертвенно простой инструмент для подписи файлов и проверки подписей» . Проверено 7 октября 2016 .
- ^ minisign-misc на GitHub
- ^ "Криптографическая библиотека Virgil Security для C: Библиотека: Фонд" . Проверено 4 августа 2019 .
- ^ Мэтт Джонстон (2013-11-14). "DROPBEAR_2013.61test" .
- ^ "OpenSSL ИЗМЕНЕНИЯ" . 31 июля 2019.
Внешние ссылки [ править ]
- Ed25519 домашняя страница