SM2 è un algoritmo di firma digitale basato su curve ellittiche, e la spiegazione delle curve ellittiche si può vedere nel precedente Weibo sulle curve ellittiche; di seguito è una breve introduzione al processo di firma SM2. Per l'informazione da firmare, queste sono le informazioni originali ottenute tramite la funzione hash dopo una certa elaborazione; l'algoritmo di hashing utilizza l'algoritmo nazionale segreto SM3, anche questo processo viene saltato, viene introdotto solo il processo di firma e verifica delle chiavi.
1. Il processo di firma Sia GG il punto di riferimento sulla curva ellittica, dAdA la chiave privata, PAPA la chiave pubblica, PA=dA∗GPA=dA∗G Il risultato della firma (r,s) (r,s) si ottiene firmando digitalmente l'EE, e il processo di calcolo è: Prima di tutto, scegli il numero casuale kk, ovviamente la scelta di questo numero è vincolata, e per ora viene lasciata invariata Calcola r=e+x1r=e+x1, dove (x1,y1)=k∗G(x1,y1)=k∗G Calcola s=(1+dA)−1∗(k−r∗dA)s=(1+dA)−1∗(k−r∗dA) Si può vedere che la facciata è realizzata con una chiave privata.
2. Il processo di verifica della firma La verifica della firma consiste nell'utilizzare la firma ottenuta, la chiave pubblica, i parametri della curva ellittica, ecc. per verificare la firma, e i principali passaggi di verifica sono: Per prima cosa, calcola t=r+st=r+s, se t=0t=0 significa che non è passato. Poi i punti sulla curva (x1,y1) = s∗G+t∗ PA (x1,y1)=s∗G+t∗ PA vengono calcolati tramite tt e ss Poi calcola R=x1+eR=x1+e, e verifica se RR e rr sono uguali; se sono uguali, significa che la verifica è stata superata.
3. Il principio di verifica Perché questo può essere verificato, tanto vale 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 Si può vedere che questo punto sulla curva ellittica ottenuto secondo la chiave pubblica è coerente con il punto al momento della firmazione. Poi aggiungi questo x1x1 e le informazioni ricevute per vedere se corrispondono alla firma inviata rr, e passa. --------------------- Autore: leowang666 Fonte: CSDN Originale: https://blog.csdn.net/hugewaves/article/details/59205914 Avviso sul copyright: Questo articolo è un articolo originale del blogger, allega il link al post del blog per la ristampa!
|