TL;DR: procesul de verificare a semnăturii în ECDSA este foarte diferit de cel din RSA. Descrierea întrebării a acestor scheme de semnătură este incorectă pentru ECDSA, aproximativă pentru RSA.
Alice care deține cheia privată este capabilă să cripteze un mesaj într-o semnătură.
Este o terminologie incorectă. Alice care deține cheia privată este capabilă semn un mesaj sau transforma un mesaj. Ea nu cripta, deoarece criptarea urmărește să facă mesajul de neinteligibil pentru adversari, dar în RSA transformarea $m\mapsto s=m^d\bmod n$ Alice a folosit cheia privată $(n,d)$ poate fi anulat folosind $s\mapsto m=s^e\bmod n$ de oricine are cheia publică $(n,e)$, adică oricine din punct de vedere criptografic standard. Astfel, transformarea făcută pentru semnătură nu se califică drept criptare.
Bob ar putea apoi să folosească cheia publică a lui Alice pentru a decripta semnătura, care ar returna apoi mesajul. Mesajul decriptat va fi apoi comparat cu mesajul original. Dacă sunt la fel, asta îi dovedește lui Bob că mesajul a fost într-adevăr de la Alice.
Din nou, aceasta este o terminologie incorectă. În loc de decripta ar trebui să existe transforma înapoi, iar intenția generală este de a verifica mesajul împotriva semnăturii și a cheii publice a lui Alice.
Lăsând deoparte terminologia, cele două ghilimele de mai sus nu se potrivesc cu modul în care este practicată semnătura RSA. Cu metoda prezentată, dimensiunea mesajului este limitată, iar procedura generală este nesigură. Exemple printre multe atacuri:
- Mesajele $0$, $1$ și $n-1$ au semnături banale (mesajul în sine), ceea ce permite ca mesajele pe care Alice nu le-a semnat niciodată să fie acceptate de Bob atunci când au venit cu adevărat de la un adversar.
- Este ușor să iei oricare $s$ și cheia publică și creează un mesaj (de obicei fără sens). $m$ care este semnătura $s$, în același efect.
- Dacă un adversar creează mesaje $m_1$, $m_2$, $m_3$, $m_4$ cu $m_1\cdot m_2=m_3\cdot m_4$, cel mai târziu semnificativ și cei trei primii suficient de semnificativ pentru a o convinge pe Alice să producă semnăturile $s_1$, $s_2$, $s_3$ de $m_1$, $m_2$, $m_3$, atunci adversarul poate calcula semnătura $s_4$ de semnificative $m_4$ la fel de $s_4=s_1\cdot s_2\cdot{s_3}^{-1}\bmod n$. Asta e posibil uneori.
Din acest motiv, semnătura RSA nu se practică ca la întrebare. Este de obicei folosit RSASSA-PSS sau RSASSA-PKCS1-v1_5. Și apoi generarea semnăturii și verificarea semnăturii nu mai funcționează la fel ca criptarea/decriptarea (fie că este vorba de criptarea RSA din manuale sau criptarea RSA așa cum se practică, cum ar fi RSAES-OAEP, RSA-KEM sau criptarea hibridă).
Ceea ce este corect este că în verificarea semnăturii RSA (cu anexă), așa cum se practică, se calculează o funcție a semnăturii și a cheii publice, apoi se compară rezultatul cu mesajul (sau cu un hash al acestuia; în cazul RSASSA-PSS, un multi- hash nivelat cu sare opțională adăugată).
Pe de altă parte, cu o pereche de chei ECDSA, procesul de verificare este același cu perechile de chei RSA? Adică, comparând mesajul decriptat cu mesajul original pentru a vedea dacă sunt la fel?
Nu, în verificarea semnăturii ECDSA, este nu a calculat o anumită funcție a semnăturii și a cheii publice, apoi a comparat rezultatul cu mesajul (sau cu un hash al acestuia). Funcționează în alt mod: hash-ul mesajului este o intrare la un calcul care implică și semnătura și cheia publică, mai degrabă decât în comparație cu în cele din urmă.
â¦ECDSA pare să compare cheia publicăâ¦
Nici cele normal nici alterna Metodele de verificare a semnăturii ECDSA se potrivesc cu aceasta.
(ECDSA) este capabil să recupereze cheia publică din semnăturăâ¦
Un fel de: cu ECDSA, este posibilă recuperarea unei chei publice funcționale dintr-o semnătură și mesajul asociat sau hash-ul acesteia. Asta e recuperarea cheii publice. Dar această operațiune nu face parte din modul în care se realizează în mod normal verificarea semnăturii. Și are limitări:
Potenţial, mai multe chei publice candidate pot fi recuperate dintr-o semnătură. La un cost mic, semnatarul poate genera semnătura ECDSA în așa fel încât doar una dintre cheile publice candidate să fie viabilă și astfel încât verificatorul să aibă un cost suplimentar foarte mic pentru a determina care este cheia publică corectă.
Nu pot spune cu siguranță dacă recuperarea cheii publice ECDSA, urmată de compararea cheii publice recuperate cu cheia publică adevărată, ar fi un echivalent robust al verificării normale și pentru care curbe. Aceasta este o chestiune de interes doar teoretic, deoarece avem verificarea standard a semnăturii.
Notă: pentru schemele de semnătură RSA, recuperarea cheii publice nu este o caracteristică tipică. Este posibil cu RSASSA-PKCS1-v1_5 sau alte semnături deterministe, câteva perechi mesaj/semnătură și opțiuni comune de $e$; dar nu este posibil cu alte semnături RSASSA-PSS sau alte semnături aleatorii.