У криптографії з відкритим ключем алгоритм цифрового підпису на основі кривої Едвардса (EdDSA) — це схема цифрового підпису, що використовує варіант підпису Шнорра на основі закручених кривих Едвардса.
Він розроблений, щоб бути швидшим за існуючі схеми цифрового підпису без шкоди для безпеки. Його розробила команда, до складу якої входили Даніель Дж. Бернштейн, Нільс Дуйф, Таня Ланге, Пітер Швабе та Бо-Інь Ян. Еталонна імплементація належить до програмного забезпечення суспільного надбання.
Короткий зміст Нижче наведено спрощений опис EdDSA, в якому ігноруються деталі кодування цілих чисел та точок кривих як бітових рядків; повні деталі містяться в статтях та RFC.
Схема підпису EdDSA є одним із варіантів:
скінченного поля над степенем непарного простого числа ; еліптичної кривої понад чия група з -раціональні точки мають порядок , де є великим простим числом і називається кофактором; базової точки із порядком і криптографічної хеш-функції з бітними виходами, де так що елементи і точки кривої в може бути представлений рядками бітів.
Ці параметри є спільними для всіх користувачів схеми підпису EdDSA. Безпека схеми підпису EdDSA критично залежить від вибору параметрів, за винятком довільного вибору базової точки — наприклад, алгоритм Полларда Rho для логарифмів, як очікується, займе приблизно додавання кривих, перш ніж можна буде обчислити дискретний логарифм, тому має бути достатньо великим, щоб це було неможливо, і зазвичай вважається таким, що перевищує Вибір обмежений вибором , оскільки за теоремою Хассе, не може відрізнятися від більш ніж Хеш-функція зазвичай моделюється як випадковий оракул у формальних аналізах безпеки EdDSA.
У схемі підпису EdDSA,
Відкритий ключ Відкритий ключ EdDSA — це точка кривої , закодована у біти. Верифікація підпису Підпис EdDSA у повідомленні за допомогою відкритого ключа це пара , закодований у біти, точки кривої і ціле число що задовольняє наступне рівняння верифікації, де позначає конкатенацію:
Приватний ключ Приватний ключ EdDSA — це -бітовий рядок який слід вибирати рівномірно випадковим чином. Відповідний публічний ключ — , де є найменш значущим бітами інтерпретується як ціле число у порядку little-endian. Підписання Підпис у повідомленні детерміновано обчислюється як де для , та Це задовольняє рівняння верифікації
Ed25519 Ed25519 — це схема підпису EdDSA, що використовує SHA-512 (SHA-2) та еліптичну криву, пов'язану з Curve25519, де
це закручена крива Едвардса
та це унікальна точка в чия координата є та чия координата є позитивною.«позитиність» є визначеною в термінах бітового декодування: «позитивні» координати є парними (найменший значущий біт обнулений) «negative» координати є непарними (встановлено найменший значущий біт) is SHA-512, with .
Закручена крива Едвардса є відомою як edwards25519, і є біраціонально еквівалентною кривій Монтгомері, відомій як Curve25519.
Еквівалентність полягає в тому, що
Продуктивність Оригінальна команда оптимізувала Ed25519 для сімейства процесорів Nehalem / Westmere x86-64. Перевірка може виконуватися пакетами по 64 сигнатури для ще більшої пропускної здатності. Ed25519 призначений для забезпечення стійкості до атак, порівнянної з якісними 128-бітними симетричними шифрами.
Відкриті ключі мають довжину 256 бітів, а підписи — 512 бітів.
Безпечне кодування Ed25519 розроблено для уникнення реалізацій, що використовують умови розгалуження або індекси масивів, що залежать від секретних даних, щоб пом'якшити атаки побічних каналів.
Як і в інших схемах підпису на основі дискретного журналу, EdDSA використовує секретне значення, яке називається нонсом (далі nonce), унікальним для кожного підпису. У схемах підпису DSA та ECDSA цей nonce традиційно генерується випадковим чином для кожного підпису, і якщо генератор випадкових чисел коли-небудь зламається та є передбачуваним під час створення підпису, підпис може призвести до витоку закритого ключа, як це сталося з ключем підпису оновлення прошивки Sony PlayStation 3.
На відміну від цього, EdDSA детерміновано вибирає nonce як хеш частини закритого ключа та повідомлення. Таким чином, після генерації закритого ключа EdDSA більше не потребує генератора випадкових чисел для створення підписів, і немає небезпеки, що зламаний генератор випадкових чисел, який використовується для створення підпису, розкриє закритий ключ.
Неконсистентності (невідповідності) стандартизації та впровадження Зверніть увагу, що існує дві спроби стандартизації EdDSA: одна від IETF, інша — від інформаційної та один від NIST як частина FIPS 186-5. Відмінності між стандартами були проаналізовані, та доступні тестові вектори.
Програмне забезпечення Серед помітних застосувань Ed25519 — OpenSSH, GnuPG та різні альтернативи, а також інструмент підпису (signify tool) від OpenBSD. Використання Ed25519 (та Ed448) у протоколі SSH було стандартизовано. У 2023 році остаточна версія стандарту FIPS 186-5 включала детермінований Ed25519 як затверджену схему підпису.
Apple Watch та iPhone використовують ключі Ed25519 для взаємної автентифікації IKEv2 Botan Crypto++ Протокол криптовалюти CryptoNote SSH від Dropbear Імплементація EdDSA в I2Pd Java Development Kit 15 Libgcrypt Minisign та Minisign Miscellanea для macOS NaCl / libsodium OpenSSL 1.1.1 Python — повільна, але лаконічна альтернативна реалізація, не включає захист від атак побічних каналів Реалізація довідки Supercop (мова C з вбудованим асемблером) Virgil PKI використовує ключі Ed25519 за замовчуванням wolfSSL
Ed448 Ed448 — це схема підпису EdDSA, визначена в з використанням хеш-функції SHAKE256 та еліптичної кривої edwards448, (не закрученої) кривої Едвардса, пов'язаної з Curve448 у Ed448 також був схвалений у фінальній версії стандарту FIPS 186-5.
Примітки
Посилання
Домашня сторінка Ed25519