SM2 es un algoritmo de firma digital basado en curvas elípticas, y la explicación de las curvas elípticas puede verse en el anterior Weibo sobre curvas elípticas, y a continuación se presenta una breve introducción al proceso de la firma SM2. Para que la información ee se firme, esta es la información original obtenida mediante la función hash tras cierto procesamiento; el algoritmo de hash utiliza el algoritmo secreto nacional SM3, este proceso también se omite, solo se introduce el proceso de firma y verificación de claves.
1. El proceso de firma Sea GG el punto de referencia en la curva elíptica, dAdA la clave privada, PAPA la clave pública, PA=dA∗GPA=dA∗G El resultado de la firma (r,s) (r,s) se obtiene firmando digitalmente el EE, y el proceso de cálculo es: En primer lugar, elige el número aleatorio kk, por supuesto, la elección de este número está limitada y se deja así por ahora Calcula r=e+x1r=e+x1, donde (x1,y1)=k∗G(x1,y1)=k∗G Calcula s=(1+dA)−1∗(k−r∗dA)s=(1+dA)−1∗(k−r∗dA) Se puede ver que la parte frontal está realizada con una llave privada.
2. El proceso de verificación de firmas Verificar la firma consiste en utilizar la firma obtenida, la clave pública, los parámetros de la curva elíptica, etc., para verificar la firma, y los principales pasos de verificación son: Primero, calcula t=r+st=r+s; si t=0t=0 significa que no ha pasado. Entonces, los puntos de la curva (x1,y1) = s∗G+t∗ PA (x1,y1)=s∗G+t∗ PA se calculan por tt y ss Luego calcula R=x1+eR=x1+e, y después verifica si RR y rr son iguales; si son iguales, significa que la verificación ha pasado.
3. El principio de verificación Por qué esto puede verificarse, bien podríamos derivarlo: (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 Se puede observar que este punto en la curva elíptica obtenido según la clave pública es consistente con el punto en el momento de la firma. Luego añade este x1x1 y la información recibida para ver si coincide con la firma enviada de rr, y pasa. --------------------- Autor: leowang666 Fuente: CSDN Original: https://blog.csdn.net/hugewaves/article/details/59205914 Aviso de derechos de autor: Este artículo es un artículo original del bloguero, ¡por favor adjunta el enlace a la entrada del blog para reimprimirlo!
|