SM2 este un algoritm de semnătură digitală bazat pe curbe eliptice, iar explicația curbelor eliptice poate fi văzută în anterioara Weibo despre curbele eliptice, iar următoarea este o scurtă introducere în procesul semnăturii SM2. Pentru ca informația ee să fie semnată, aceasta este informația originală obținută prin funcția de hash după anumite procesări, algoritmul de hashing folosește algoritmul național secret SM3, acest proces este de asemenea sărit, fiind introdus doar procesul de semnare și verificare a cheilor.
1. Procesul de semnare Fie GG punctul de referință pe curba eliptică, dAdA cheia privată, PAPA cheia publică, PA=dA∗GPA=dA∗G Rezultatul semnăturii (r,s) (r,s) se obține prin semnarea digitală a EE-ului, iar procesul de calcul este: În primul rând, alege numărul aleator kk, desigur, alegerea acestui număr este constrânsă și este lăsată neschimbată pentru moment Calculăm r=e+x1r=e+x1, unde (x1,y1)=k∗G(x1,y1)=k∗G Calculați s=(1+dA)−1∗(k−r∗dA)s=(1+dA)−1∗(k−r∗dA) Se poate observa că partea frontală este realizată cu o cheie privată.
2. Procesul de verificare a semnăturii Verificarea semnăturii înseamnă utilizarea semnăturii obținute, cheia publică, parametrii curbei eliptice etc. pentru a verifica semnătura, iar pașii principali ai verificării sunt: Mai întâi, se calculează t=r+st=r+s, dacă t=0t=0 înseamnă că nu a trecut. Apoi, punctele de pe curba (x1,y1) = s∗G+t∗ PA (x1,y1)=s∗G+t∗ PA sunt calculate prin tt și ss Apoi calculează R=x1+eR=x1+e, apoi verifică dacă RR și RR sunt egale; dacă sunt egale, înseamnă că verificarea a trecut.
3. Principiul verificării De ce poate fi verificat acest lucru, mai bine îl deducem: (x1,y1)=s∗G+t∗PA =s∗G+(r+s)∗PA =s∗G+(r+s)∗dA∗G=(1+dA)∗s∗G+r∗dA∗G=(1+dA)∗(1+dA)−1∗(k−r∗dA)∗G+r∗dA∗G=(k−r∗dA)∗G+r∗dA∗G=k∗G(x1,y1)=s∗G+t∗PA =s∗G+(r+s)∗PA =sG+(r+s)PA =s∗G+(r+s)∗dA∗G=(1+dA)∗s∗G+r∗dA∗G=(1+dA)∗(1+dA)−1∗(k−r∗dA)∗G+r∗dA∗G=(k−r∗dA)∗G+r∗dA∗G=k∗G Se poate observa că acest punct pe curba eliptică obținut conform cheii publice este consistent cu punctul de la momentul semnării. Apoi adaugă acest x1x1 și informațiile primite pentru a vedea dacă se potrivește cu semnătura trimisă rr, și trece prin asta. --------------------- Autor: leowang666 Sursa: CSDN Original: https://blog.csdn.net/hugewaves/article/details/59205914 Notificare de copyright: Acest articol este un articol original scris de blogger, vă rugăm să atașezați linkul postării de blog pentru reimprimare!
|