SM2 je algoritmus digitálního podpisu založený na eliptických křivkách a vysvětlení eliptických křivek lze vidět v předchozím Weibo o eliptických křivkách, přičemž následuje stručný úvod do procesu podpisu SM2. Pro podepisování informací ee je to původní informace získaná pomocí hashovací funkce po určitém zpracování, hashovací algoritmus používá národní tajný algoritmus SM3, tento proces je také vynechán, zavádí se pouze proces podepisování a ověřování klíče.
1. Proces podpisu Nechť GG je referenčním bodem na eliptické křivce, dAdA je soukromý klíč, PAPA je veřejný klíč, PA=dA∗GPA=dA∗G Výsledek podpisu (r,s) (r,s) se získá digitálním podepsáním EE a výpočet je následující: Nejprve vyberte náhodné číslo kk, samozřejmě volba tohoto čísla je omezená a zatím zůstává nedotčena Vypočítejte r=e+x1r=e+x1, kde (x1,y1)=k∗G(x1,y1)=k∗G Vypočítejte s=(1+dA)−1∗(k−r∗dA)s=(1+dA)−1∗(k−r∗dA) Je vidět, že přední část je provedena pomocí soukromého klíče.
2. Proces ověřování podpisu Ověření podpisu znamená použití získaného podpisu, veřejného klíče, parametrů eliptických křivek atd. k ověření podpisu, přičemž hlavní kroky ověření jsou: Nejprve vypočítejte t=r+st=r+s, pokud t=0t=0, znamená to, že neprošlo. Pak jsou body na křivce (x1,y1) = s∗G+t∗ PA (x1,y1)=s∗G+t∗ PA vypočítány pomocí tt a ss Poté vypočítejte R=x1+eR=x1+e a ověřte, zda jsou RR a rr stejné; pokud jsou stejné, znamená to, že ověření je úspěšné.
3. Princip ověřování Proč to lze ověřit, můžeme to klidně odvodit: (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 Je vidět, že tento bod na eliptické křivce získané podle veřejného klíče je v souladu s bodem v době podepsání. Pak přičte tento x1x1 a přijaté informace, abyste zjistili, zda odpovídají odeslanému podpisu rr, a projde to. --------------------- Autor: leowang666 Zdroj: CSDN Originál: https://blog.csdn.net/hugewaves/article/details/59205914 Oznámení o autorských právech: Tento článek je originálním článkem od blogera, prosím připojte odkaz na blogový příspěvek pro přetisk!
|