ESIGN ( în engleză Efficient digital SIGNature - semnătură digitală efectivă) este o schemă de semnătură digitală cu cheie publică bazată pe problema factorizării numerelor . O caracteristică distinctivă a acestei scheme este capacitatea de a genera rapid o semnătură. [unu]
Semnătura digitală a fost dezvoltată de compania japoneză NTT în 1985. [2] Schema sa dovedit a fi eficientă în ceea ce privește viteza de generare a semnăturii digitale. Cu toate acestea, primele versiuni au fost sparte de Ernie Btickel și John DeLaurentis , după care parametrii algoritmului recomandați au fost modificați . [3] Încercările ulterioare de hacking nu au avut succes. Autorii susțin că complexitatea spargerii celei mai recente versiuni de ESIGN este comparabilă cu complexitatea problemei de factorizare pentru un număr de formă , unde și sunt numere prime . [patru]
Există două entități implicate în protocol: entitatea , al cărei scop este de a dovedi că autorul mesajului este , și subiectul , al cărui scop este să verifice calitatea de autor. În ESIGN pentru implementarea obiectivelor stabilite și trebuie să efectueze următoarele acțiuni [5] .
Cheile ESIGN sunt generate după cum urmează [6] .
Pentru a semna un mesaj , unde este un număr binar de lungime arbitrară, se fac următorii pași [6] .
Pentru a verifica dacă semnătura semnează într-adevăr mesajul , se parcurg următorii pași [6] .
În versiunea propusă inițial de ESIGN, parametrul era egal cu doi. [5] Cu toate acestea, după atacul de succes al lui Ernie Brickell și John DeLaurentis, care s-a extins și la varianta de circuit cu , autorii au schimbat cerința pentru acest parametru la cea existentă . [7]
Atacurile asupra unei funcții hash cu scopul de a falsifica o semnătură se bazează pe imperfecțiunea acesteia, adică pe nepotrivirea funcției hash cu unul sau mai multe criterii de putere criptografică, cu condiția ca, în cazul ESIGN, egalitatea în criterii. ar trebui înțeles până la cele mai semnificative biți. Această relaxare se datorează condiției de verificare a semnăturii, care este satisfăcută nu numai pentru valoarea hash inițială, ci și pentru altele care se potrivesc în primii biți înalți.
Să presupunem că funcția este instabilă la căutarea coliziunilor, adică puteți găsi astfel de diferite și că și potriviți în primii biți înalți. Apoi, semnând mesajul , autorul , nebănuind nimic, semnează automat mesajul , deoarece inegalitatea
Dacă funcția de hash aleasă este sigură criptografic, atunci atacul de coliziune va lua operațiunile de calcul al funcției de hash, atacul care utilizează cea de-a doua preimagine va lua operațiuni, ceea ce este considerat nerealizabil, pentru mari . [8] [9]
Un atac asupra unei chei publice este o încercare de a obține o cheie privată din aceasta . Acest lucru se poate face prin rezolvarea ecuației , adică prin factorizarea numărului . Puteți vedea că în RSA un număr este generat într-un mod similar, acolo , dar astăzi întrebarea în care dintre cazuri factorizarea devine mai simplă sau mai dificilă rămâne deschisă, deoarece încă nu există algoritmi de factorizare eficienți. În prezent, cea mai rapidă modalitate de a factoriza un număr , fie pentru ESIGN, fie pentru RSA, este metoda sită a câmpului numeric , care face acest lucru la o rată dependentă de lungimea biților . Cu toate acestea, cu o lungime mare de biți a numărului , sarcina de factorizare devine imposibilă. [10] [9]
Pe lângă restricțiile deja introduse în descrierea ESIGN, pentru o mai mare securitate, se recomandă să alegeți dimensiunea și egală sau mai mare decât biții, dimensiunea egală sau mai mare , respectiv, și parametrul mai mare sau egal cu 8 [ 11] :
Mai jos este un tabel de corespondență între nivelul de securitate ESIGN și nivelurile de securitate RSA și ECDSA pentru diferite dimensiuni de parametri în biți. Puteți vedea că, cu aceleași dimensiuni , RSA și ESIGN sunt comparabile în ceea ce privește securitatea. [12]
Dimensiune în ESIGN, biți | Dimensiune în RSA, biți | Dimensiune în ECDSA, biți |
---|---|---|
960 | 960 | 152 |
1024 | 1024 | 160 |
2048 | 2048 | 224 |
3072 | 3072 | 256 |
7680 | 7680 | 384 |
Schema ESIGN vă permite să generați rapid o semnătură. Deoarece operațiunile complexe din punct de vedere computațional, cum ar fi exponențiarea și găsirea elementului invers , nu depind de mesajul care este semnat , ele pot fi efectuate în avans și stocate în memorie. Astfel, pentru a semna un mesaj, este suficient să efectuați operațiunile rămase de adunare, înmulțire și împărțire, a căror pondere în complexitatea de calcul a algoritmului de creare a semnăturii este mică. În cazul în care , iar lungimea biților este egală cu , viteza de generare a semnăturii în este mai mare decât pentru RSA cu parametrii corespunzători. În ceea ce privește verificarea semnăturii, viteza acesteia este comparabilă cu viteza verificării semnăturii din algoritmul RSA , al cărui exponent deschis este mic. [13] [9]
Cu ajutorul ESIGN, puteți implementa protocoale de identificare cu cunoștințe zero care permit subiectului ( English Prover - proving) să-i demonstreze subiectului ( English Verifier - verificare) faptul prezenței informațiilor, păstrând secretul de . Protocoalele de identificare bazate pe ESIGN sunt la fel de eficiente ca protocolul Feig-Fiat-Shamir . Vom lua în considerare două astfel de protocoale: trei runde și două runde. [paisprezece]
În protocoalele de mai sus, informațiile secrete sunt cheile , a căror cunoaștere dovedește subiectul . Dacă rezultatele tuturor verificărilor din etapele finale au succes, atunci se consideră că el are cu adevărat un secret.