Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В криптографии с открытым ключом , 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] 

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Ed25519 домашняя страница