factograf
UK
Увійти

алгоритм (схема) цифрового підпису

EdDSA

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

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

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

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

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

Ці параметри є спільними для всіх користувачів схеми підпису EdDSA. Безпека схеми підпису EdDSA критично залежить від вибору параметрів, за винятком довільного вибору базової точки — наприклад, алгоритм Полларда Rho для логарифмів, як очікується, займе приблизно {\displaystyle {\sqrt {\ell \pi /4}}} додавання кривих, перш ніж можна буде обчислити дискретний логарифм, тому {\displaystyle \ell } має бути достатньо великим, щоб це було неможливо, і зазвичай вважається таким, що перевищує 2200 Вибір {\displaystyle \ell } обмежений вибором {\displaystyle q}, оскільки за теоремою Хассе, {\displaystyle \#E(\mathbb {F} _{q})=2^{c}\ell } не може відрізнятися від {\displaystyle q+1} більш ніж {\displaystyle 2{\sqrt {q}}} Хеш-функція {\displaystyle H} зазвичай моделюється як випадковий оракул у формальних аналізах безпеки EdDSA.

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

Відкритий ключ
Відкритий ключ EdDSA — це точка кривої {\displaystyle A\in E(\mathbb {F} _{q})}, закодована у {\displaystyle b} біти.
Верифікація підпису
Підпис EdDSA у повідомленні {\displaystyle M} за допомогою відкритого ключа {\displaystyle A} це пара {\displaystyle (R,S)}, закодований у {\displaystyle 2b} біти, точки кривої {\displaystyle R\in E(\mathbb {F} _{q})} і ціле число {\displaystyle 0<S<\ell } що задовольняє наступне рівняння верифікації, де {\displaystyle \parallel } позначає конкатенацію:

{\displaystyle 2^{c}SB=2^{c}R+2^{c}H(R\parallel A\parallel M)A.}

Приватний ключ
Приватний ключ EdDSA — це {\displaystyle b} -бітовий рядок {\displaystyle k} який слід вибирати рівномірно випадковим чином. Відповідний публічний ключ — {\displaystyle A=sB}, де {\displaystyle s=H_{0,\dots,b-1}(k)} є найменш значущим {\displaystyle b} бітами {\displaystyle H(k)} інтерпретується як ціле число у порядку little-endian.
Підписання
Підпис у повідомленні {\displaystyle M} детерміновано обчислюється як {\displaystyle (R,S),} де {\displaystyle R=rB} для {\displaystyle r=H(H_{b,\dots,2b-1}(k)\parallel M)}, та {\displaystyle S\equiv r+H(R\parallel A\parallel M)s{\pmod {\ell }}.} Це задовольняє рівняння верифікації

{\displaystyle {\begin{aligned}2^{c}SB&=2^{c}(r+H(R\parallel A\parallel M)s)B\\&=2^{c}rB+2^{c}H(R\parallel A\parallel M)sB\\&=2^{c}R+2^{c}H(R\parallel A\parallel M)A.\end{aligned}}}

Ed25519

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

  • {\displaystyle q=2^{255}-19,}
  • {\displaystyle E/\mathbb {F} _{q}} це закручена крива Едвардса

{\displaystyle -x^{2}+y^{2}=1-{\frac {121665}{121666}}x^{2}y^{2},}

  • {\displaystyle \ell =2^{252}+27742317777372353535851937790883648493} та {\displaystyle c=3}
  • {\displaystyle B} це унікальна точка в {\displaystyle E(\mathbb {F} _{q})} чия {\displaystyle y} координата є {\displaystyle 4/5} та чия {\displaystyle x} координата є позитивною.

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

Закручена крива Едвардса {\displaystyle E/\mathbb {F} _{q}} є відомою як edwards25519, і є біраціонально еквівалентною кривій Монтгомері, відомій як Curve25519.

Еквівалентність полягає в тому, що{\displaystyle x={\frac {u}{v}}{\sqrt {-486664}},\quad y={\frac {u-1}{u+1}}.}

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

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

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

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

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

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

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

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

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

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

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

Ed448

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

Читати далі

12 мовами

Текст із Вікіпедії, CC BY-SA 4.0 · Стаття-джерело