SM2 je algoritem digitalnega podpisa, ki temelji na eliptičnih krivuljah, razlaga eliptičnih krivulj pa je vidna v prejšnjem Weibu o eliptičnih krivuljah, spodaj pa je kratek uvod v proces SM2 podpisa. Za informacijo, ki jo je treba podpisati, je to izvirna informacija, pridobljena preko zgoščevalne funkcije po določeni obdelavi, algoritem zgoščevanja uporablja nacionalno tajni SM3 algoritem, ta postopek pa se prav tako preskoči, uvede se le postopek podpisovanja in preverjanja ključa.
1. Postopek podpisovanja Naj bo GG referenčna točka na eliptični krivulji, dAdA zasebni ključ, PAPA javni ključ, PA=dA∗GPA=dA∗G Rezultat podpisa (r,s) (r,s) se dobi z digitalnim podpisom EE, postopek izračuna pa je: Najprej izberite naključno število kk, seveda je izbira tega števila omejena in za zdaj ostane nespremenjena Izračunajte r=e+x1r=e+x1, kjer (x1,y1)=k∗G(x1,y1)=k∗G Izračunajte s=(1+dA)−1∗(k−r∗dA)s=(1+dA)−1∗(k−r∗dA) Vidno je, da je sprednji del narejen z zasebnim ključem.
2. Postopek preverjanja podpisa Preverjanje podpisa pomeni uporabo pridobljenega podpisa, javnega ključa, parametrov eliptične krivulje itd. za preverjanje podpisa, glavni koraki preverjanja pa so: Najprej izračunajte t=r+st=r+s; če je t=0t=0, to pomeni, da ni uspelo. Točke na krivulji (x1,y1) = s∗G+t∗ PA (x1,y1)=s∗G+t∗ PA izračunamo z tt in ss Nato izračunajte R=x1+eR=x1+e, nato preverite, ali sta RR in rr enaka; če sta enaka, to pomeni, da je preverjanje opravljeno.
3. Načelo preverjanja Zakaj je to mogoče preveriti, lahko kar izpeljemo: (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 =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 Vidimo lahko, da je ta točka na eliptični krivulji, dobini po javnem ključu, skladna s točko ob podpisu. Nato dodam to x1x1 in prejete podatke, da preverimo, ali se ujemajo s poslanim podpisom rr, in to je uspešno. --------------------- Avtor: leowang666 Vir: CSDN Izvirnik: https://blog.csdn.net/hugewaves/article/details/59205914 Obvestilo o avtorskih pravicah: Ta članek je izvirni članek blogerja, prosimo, priložite povezavo do blog objave za ponatisnitev!
|