EdDSA

În sistemele criptografice cu cheie publică , algoritmul de semnătură digitală Edwards-curve (EdDSA) este o schemă de semnătură digitală care utilizează o variantă a schemei Schnor cu curbă elitică Edwards [1] .

Este proiectat să fie mai rapid decât schema de semnătură digitală existentă, fără a-i compromite securitatea. A fost proiectat de Daniel J. Bernstein , Nils Duif, Tanya Lange, Peter Schwabe și Bo-Yin Yang până în 2011.

Design

Următoarea este o descriere simplificată a EdDSA, care nu include detaliile de codificare a numerelor întregi și a punctelor curbei ca șiruri de biți. O descriere completă și detalii despre această implementare a semnăturii digitale pot fi găsite în documentație și în RFC-urile relevante [2] [3] [1] .

EdDSA utilizează următorii parametri:

Aceste setări sunt minimul necesar pentru toți utilizatorii schemei de semnătură EdDSA. Securitatea unei semnături EdDSA depinde foarte mult de alegerea parametrilor, cu excepția unei alegeri arbitrare a punctului de bază. De exemplu, ro-algoritmul lui Polard pentru logaritmtrebuie să ia aproximativ curbe înainte de a putea[ clarifica ] calculează logaritmul, [4] deci l trebuie să fie suficient de mare încât să nu fie posibil și, în mod normal, ar trebui să fie mai mare de 2^200. [5] Alegerea lui l este limitată de alegerea lui q, deoarece, conform teoremei Hasse , nu ar trebui să difere de q + 1 cu mai mult de

În cadrul schemei de semnătură EdDSA

cheie publică Cheia publică din schema EdDSA este un punct de curbă codificat în b biți. Semnătură Semnătura EdDSA din mesajul M prin cheia publică A este perechea (R,S) codificată în 2b biți, un punct de curbă și un întreg , care satisface ecuația de verificare 2 c S B = 2 c R + 2 c H ( R , A , M ) A . {\displaystyle 2^{c}SB=2^{c}R+2^{c}H(R,A,M)A.} cheie privată Cheia privată din schema EdDSA este un șir k de biți b, care trebuie ales uniform la întâmplare. Cheia publică corespunzătoare în acest caz este , unde , este cel mai puțin semnificativ b-bit al lui H(k), interpretat ca un întreg mic-endian. Semnătura mesajului M este perechea (R,S) unde R=rB pentru și S ≡ r + H ( R , A , M ) s ( mod ℓ ) . {\displaystyle S\equiv r+H(R,A,M)s{\pmod {\ell )).} . Aceasta satisface ecuația de verificare

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

Ed25519

Ed25519 - Schema de semnătură EdDSA folosind SHA-512 și Curve25519 [2] unde:

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

Curba este echivalentă birațional cu curba Montgomery cunoscută sub numele de Curva25519. Echivalență [6] [2]

X = u v − 486664 , y = u − unu u + unu . {\displaystyle x={\frac {u}{v}}{\sqrt {-486664}},\quad y={\frac {u-1}{u+1}}.}

Eficiență

Echipa lui Bernstein a optimizat Ed25519 pentru familia de procesoare x86-64 Nehalem /Westmere. Verificarea poate fi efectuată în loturi de 64 de semnături digitale pentru un randament și mai mare. Ed25519 este proiectat pentru a oferi rezistență la atac comparabilă cu calitatea cifrurilor simetrice pe 128 de biți . Cheile publice au o lungime de 256 de biți, iar semnătura este de două ori mai mare.

Codare sigură

Ca caracteristică de securitate, Ed25519 nu utilizează operațiuni de ramuri și pași de indexare a matricei care depind de secrete pentru a preveni atacurile pe canalul lateral .

Ca și alte scheme de semnătură logaritmică discretă, EdDSA utilizează o valoare secretă numită nonce , care este unică pentru fiecare semnătură. În schemele de semnătură DSA și ECDSA , acest nonce este în mod tradițional generat aleatoriu pentru fiecare semnătură, iar dacă generatorul de numere aleatoare este rupt sau previzibil în timpul generării semnăturii, semnătura poate scurge cheia privată, ceea ce s-a întâmplat cu firmware-ul Sony PlayStation 3. actualizați cheia de semnare [ 7] [8] . În comparație cu acestea, EdDSA alege non-uri în mod determinist, cum ar fi hash-ul cheii private și mesajul. Astfel, odată ce o cheie privată a fost generată, EdDSA nu mai are nevoie de un generator de numere aleatorii pentru a face semnături și nu există pericolul ca un generator de numere aleatoare spart folosit pentru a crea o semnătură digitală să dezvăluie cheia privată.

Software

Utilizările notabile ale Ed25519 includ OpenSSH , [9] GnuPG [10] și diverse alternative, precum și instrumentul de valori al lui OpenBSD . [unsprezece]

Note

  1. ↑ 1 2 Josefsson, S.; Liusvaara, I. (ianuarie 2017). Algoritmul de semnătură digitală Edwards-Curve (EdDSA) . Grupul operativ de inginerie a internetului. doi:10.17487/RFC8032. ISSN 2070-1721. RFC 8032. Consultat 2017-07-31.
  2. ↑ 1 2 3 Bernstein, Daniel J.; Duif, Niels; Lange, Tanja; Schwabe, Peter; Bo-Yin Yang (2012). „Semnături de mare viteză, de mare securitate” (PDF). Jurnalul de inginerie criptografică . 2 (2): 77-89. doi:10.1007/s13389-012-0027-1.
  3. Daniel J. Bernstein, Simon Josefsson, Tanja Lange, Peter Schwabe și Bo-Yin Yang (04.07.2015). EdDSA pentru mai multe curbe (PDF) (Raport tehnic). Consultat 2016-11-14.
  4. Daniel J. Bernstein, Tanja Lange și Peter Schwabe (01.01.2011). Despre utilizarea corectă a hărții de negație în metoda Pollard rho (Raport tehnic). Arhiva IACR Cryptology ePrint. 2011/003. Consultat 2016-11-14.
  5. Daniel J. Bernstein și Tanja Lange. „Securitate ECDLP: Rho”. SafeCurves: alegerea curbelor sigure pentru criptografia cu curbe eliptice. Accesat 2016-11-16.
  6. Bernstein, Daniel J.; Lange, Tanja (2007). Kurosawa, Kaoru, ed. Adunare și dublare mai rapidă pe curbele eliptice . Progrese în criptologie—ASIACRYPT. Note de curs în informatică. 4833 . Berlin: Springer. pp. 29-50. doi:10.1007/978-3-540-76900-2_3. ISBN 978-3-540-76899-9. MR 2565722.
  7. ^ Johnston, Casey (30.12.2010). PS3 piratat prin implementarea proastă a criptografiei. Ars Technica . Accesat 2016-11-15.
  8. fail0verflow (29.12.2010). Console Hacking 2010: PS3 Epic Fail (PDF). 27C3: A 27-a Conferință de Comunicare Haos. Accesat 2016-11-15.
  9. „Modificări de la OpenSSH 6.4”. 03-01-2014. Accesat 2016-10-07.
  10. Ce este nou în GnuPG 2.1". 2016-07-14. Consultat 2016-10-07.
  11. „Lucruri care folosesc Ed25519”. 06-10-2016. Accesat 2016-10-07.
  12. „eBACS: ECRYPT Benchmarking of Cryptographic Systems: SUPERCOP”. 2016-09-10. Accesat 2016-10-07.
  13. Frank Denis (29.06.2016). „libsodium/ChangeLog”. Accesat 2016-10-07.
  14. „Biblioteca SSL încorporată wolfSSL (fostă CyaSSL)”. Accesat 2016-10-07.
  15. „Algoritmi euristici și calcul distribuit” (PDF) (în rusă). 2015.pp. 55-56. ISSN 2311-8563. Accesat 2016-10-07.
  16. minisign-misc pe GitHub

Link -uri