Перейти до вмісту

EdDSA

Матеріал з Вікіпедії — вільної енциклопедії.

У криптографії з відкритим ключем алгоритм цифрового підпису на основі кривої Едвардса (EdDSA) — це схема цифрового підпису, що використовує варіант підпису Шнорра на основі закручених кривих Едвардса.[1]

Він розроблений, щоб бути швидшим за існуючі схеми цифрового підпису без шкоди для безпеки. Його розробила команда, до складу якої входили Даніель Дж. Бернштейн, Нільс Дуйф, Таня Ланге, Пітер Швабе та Бо-Інь Ян.[2] Еталонна імплементація належить до програмного забезпечення суспільного надбання.[3]

Короткий зміст

[ред. | ред. код]

Нижче наведено спрощений опис EdDSA, в якому ігноруються деталі кодування цілих чисел та точок кривих як бітових рядків; повні деталі містяться в статтях та RFC.[4][2]

Схема підпису EdDSA є одним із варіантів:[4] :1–2[2] :5–6 :5–7

  • скінченного поля над степенем непарного простого числа  ;
  • еліптичної кривої понад чия група з -раціональні точки мають порядок , де є великим простим числом і називається кофактором;
  • базової точки із порядком і
  • криптографічної хеш-функції з бітними виходами, де так що елементи і точки кривої в може бути представлений рядками бітів.

Ці параметри є спільними для всіх користувачів схеми підпису EdDSA. Безпека схеми підпису EdDSA критично залежить від вибору параметрів, за винятком довільного вибору базової точки — наприклад, алгоритм Полларда Rho для логарифмів, як очікується, займе приблизно додавання кривих, перш ніж можна буде обчислити дискретний логарифм,[5] тому має бути достатньо великим, щоб це було неможливо, і зазвичай вважається таким, що перевищує 2200[6] Вибір обмежений вибором , оскільки за теоремою Хассе, не може відрізнятися від більш ніж Хеш-функція зазвичай моделюється як випадковий оракул у формальних аналізах безпеки EdDSA.

У схемі підпису EdDSA,

Відкритий ключ
Відкритий ключ EdDSA — це точка кривої , закодована у біти.
Верифікація підпису
Підпис EdDSA у повідомленні за допомогою відкритого ключа це пара , закодований у біти, точки кривої і ціле число що задовольняє наступне рівняння верифікації, де позначає конкатенацію:

Приватний ключ
Приватний ключ EdDSA — це -бітовий рядок який слід вибирати рівномірно випадковим чином. Відповідний публічний ключ — , де є найменш значущим бітами інтерпретується як ціле число у порядку little-endian.
Підписання
Підпис у повідомленні детерміновано обчислюється як де для , та Це задовольняє рівняння верифікації

Ed25519 — це схема підпису EdDSA, що використовує SHA-512 (SHA-2) та еліптичну криву, пов'язану з Curve25519[2], де

  • це закручена крива Едвардса

  • та
  • це унікальна точка в чия координата є та чия координата є позитивною.

    «позитиність» є визначеною в термінах бітового декодування:
    • «позитивні» координати є парними (найменший значущий біт обнулений)
    • «negative» координати є непарними (встановлено найменший значущий біт)
  • is SHA-512, with .

Закручена крива Едвардса є відомою як edwards25519, і є біраціонально еквівалентною кривій Монтгомері, відомій як Curve25519.

Еквівалентність полягає в тому, що[2][7][8]

Продуктивність

[ред. | ред. код]

Оригінальна команда оптимізувала Ed25519 для сімейства процесорів Nehalem / Westmere x86-64. Перевірка може виконуватися пакетами по 64 сигнатури для ще більшої пропускної здатності. Ed25519 призначений для забезпечення стійкості до атак, порівнянної з якісними 128-бітними симетричними шифрами.[9]

Відкриті ключі мають довжину 256 бітів, а підписи — 512 бітів.[10]

Безпечне кодування

[ред. | ред. код]

Ed25519 розроблено для уникнення реалізацій, що використовують умови розгалуження або індекси масивів, що залежать від секретних даних,[2] :2 :40щоб пом'якшити атаки побічних каналів.

Як і в інших схемах підпису на основі дискретного журналу, EdDSA використовує секретне значення, яке називається нонсом (далі nonce), унікальним для кожного підпису. У схемах підпису DSA та ECDSA цей nonce традиційно генерується випадковим чином для кожного підпису, і якщо генератор випадкових чисел коли-небудь зламається та є передбачуваним під час створення підпису, підпис може призвести до витоку закритого ключа, як це сталося з ключем підпису оновлення прошивки Sony PlayStation 3.[11][12][13][14]

На відміну від цього, EdDSA детерміновано вибирає nonce як хеш частини закритого ключа та повідомлення. Таким чином, після генерації закритого ключа EdDSA більше не потребує генератора випадкових чисел для створення підписів, і немає небезпеки, що зламаний генератор випадкових чисел, який використовується для створення підпису, розкриє закритий ключ.[2] :8

Неконсистентності (невідповідності) стандартизації та впровадження

[ред. | ред. код]

Зверніть увагу, що існує дві спроби стандартизації EdDSA: одна від IETF, інша — від інформаційної та один від NIST як частина FIPS 186-5.[15] Відмінності між стандартами були проаналізовані,[16][17] та доступні тестові вектори.[18]

Програмне забезпечення

[ред. | ред. код]

Серед помітних застосувань Ed25519 — OpenSSH,[19] GnuPG[20] та різні альтернативи, а також інструмент підпису (signify tool) від OpenBSD.[21] Використання Ed25519 (та Ed448) у протоколі SSH було стандартизовано.[22] У 2023 році остаточна версія стандарту FIPS 186-5 включала детермінований Ed25519 як затверджену схему підпису.[15]

Ed448 — це схема підпису EdDSA, визначена в RFC 8032 з використанням хеш-функції SHAKE256 та еліптичної кривої edwards448, (не закрученої) кривої Едвардса, пов'язаної з Curve448 у Ed448 також був схвалений у фінальній версії стандарту FIPS 186-5.[15]

Примітки

[ред. | ред. код]
  1. Josefsson, S.; Liusvaara, I. (2017–01). Edwards-Curve Digital Signature Algorithm (EdDSA) (англ.). № RFC8032. doi:10.17487/rfc8032. issn 2070-1721. rfc 8032. Процитовано 26 березня 2026. {{cite news}}: Перевірте значення |doi= (довідка)Обслуговування CS1: Сторінки з неправильним форматом в діапазонах дат (посилання)
  2. а б в г д е ж Bernstein, Daniel J.; Duif, Niels; Lange, Tanja; Schwabe, Peter; Bo-Yin Yang (2012). High-speed high-security signatures (PDF). Journal of Cryptographic Engineering. 2 (2): 77—89. doi:10.1007/s13389-012-0027-1.
  3. Software. 11 червня 2015. Процитовано 7 жовтня 2016. The Ed25519 software is in the public domain.
  4. а б Daniel J. Bernstein; Simon Josefsson; Tanja Lange; Peter Schwabe; Bo-Yin Yang (4 липня 2015). EdDSA for more curves (PDF) (Технічний звіт). Процитовано 14 листопада 2016.
  5. Daniel J. Bernstein; Tanja Lange; Peter Schwabe (1 січня 2011). On the correct use of the negation map in the Pollard rho method (Технічний звіт). IACR Cryptology ePrint Archive. Процитовано 14 листопада 2016.
  6. Bernstein, Daniel J.; Lange, Tanja. ECDLP Security: Rho. SafeCurves: choosing safe curves for elliptic-curve cryptography. Процитовано 16 листопада 2016.
  7. Помилка цитування: Неправильний виклик тегу <ref>: для виносок під назвою RFC7748 не вказано текст
  8. Bernstein, Daniel J.; Lange, Tanja (2007). Kurosawa, Kaoru (ред.). Faster addition and doubling on elliptic curves. Advances in cryptology—ASIACRYPT. Lecture Notes in Computer Science. Т. 4833. Berlin: Springer. с. 29—50. doi:10.1007/978-3-540-76900-2_3. ISBN 978-3-540-76899-9. MR 2565722.
  9. Bernstein, Daniel J. (22 січня 2017). Ed25519: high-speed high-security signatures. Процитовано 27 вересня 2019. This system has a 2^128 security target; breaking it has similar difficulty to breaking NIST P-256, RSA with ~3000-bit keys, strong 128-bit block ciphers, etc.
  10. Bernstein, Daniel J. (22 січня 2017). Ed25519: high-speed high-security signatures. Процитовано 1 червня 2020. Signatures fit into 64 bytes. […] Public keys consume only 32 bytes.
  11. Johnston, Casey (30 грудня 2010). PS3 hacked through poor cryptography implementation. Ars Technica. Процитовано 15 листопада 2016.
  12. ((fail0verflow)) (29 грудня 2010). Console Hacking 2010: PS3 Epic Fail (PDF). Chaos Communication Congress. Архів оригіналу (PDF) за 26 жовтня 2018. Процитовано 15 листопада 2016.
  13. 27th Chaos Communication Congress: Console Hacking 2010: PS3 Epic Fail (PDF). Процитовано 4 серпня 2019.
  14. Buchanan, Bill (12 листопада 2018). Not Playing Randomly: The Sony PS3 and Bitcoin Crypto Hacks. Watch those random number generators. Medium. Архів оригіналу за 30 листопада 2018. Процитовано 11 березня 2024.
  15. а б в Moody, Dustin (3 лютого 2023). FIPS 186-5: Digital Signature Standard (DSS). NIST. doi:10.6028/NIST.FIPS.186-5. Процитовано 4 березня 2023.
  16. Taming the many EdDSAs. Security Standardisation Research Conference (SSR 2020). 1 жовтня 2020. Процитовано 15 лютого 2021.
  17. The provable security of ed25519: Theory and practice. IEEE Symposium on Security and Privacy (S&P 2021). 3 липня 2020. Процитовано 15 лютого 2021.
  18. ed25519-speccheck. GitHub. Процитовано 15 лютого 2021.
  19. Changes since OpenSSH 6.4. 3 січня 2014. Процитовано 7 жовтня 2016.
  20. What's new in GnuPG 2.1. 14 липня 2016. Процитовано 7 жовтня 2016.
  21. Things that use Ed25519. 6 жовтня 2016. Процитовано 7 жовтня 2016.
  22. Ed25519 and Ed448 Public Key Algorithms for the Secure Shell (SSH) Protocol.
  23. System security for watchOS. Процитовано 7 червня 2021.
  24. Matt Johnston (14 листопада 2013). DROPBEAR_2013.61test. Архів оригіналу за 5 серпня 2019. Процитовано 5 серпня 2019.
  25. Heuristic Algorithms and Distributed Computing (PDF). Èvrističeskie Algoritmy I Raspredelennye Vyčisleniâ (рос.): 55—56. 2015. ISSN 2311-8563. Архів оригіналу (PDF) за 20 жовтня 2016. Процитовано 7 жовтня 2016.
  26. Frank Denis. Minisign: A dead simple tool to sign files and verify signatures. Процитовано 7 жовтня 2016.
  27. minisign-misc на GitHub
  28. Frank Denis (29 червня 2016). libsodium/ChangeLog. GitHub. Процитовано 7 жовтня 2016.
  29. OpenSSL CHANGES. 31 липня 2019. Архів оригіналу за 18 травня 2018. Процитовано 5 серпня 2019.
  30. python/ed25519.py: the main subroutines. 6 липня 2011. Процитовано 7 жовтня 2016.
  31. Software: Alternate implementations. 11 червня 2015. Процитовано 7 жовтня 2016.
  32. eBACS: ECRYPT Benchmarking of Cryptographic Systems: SUPERCOP. 10 вересня 2016. Процитовано 7 жовтня 2016.
  33. Virgil Security Crypto Library for C: Library: Foundation. GitHub. Процитовано 4 серпня 2019.
  34. wolfSSL Embedded SSL Library (formerly CyaSSL). Процитовано 7 жовтня 2016.

Посилання

[ред. | ред. код]