Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 12821|Risposta: 0

[C] Il principio della verifica della firma digitale SM2

[Copiato link]
Pubblicato su 26/06/2019 10:09:45 | | |
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!





Precedente:【Original】Tutorial sulla raccolta dei bonifici Google AdSense
Prossimo:Legami angolari/attributi @HostListener, @HostBinding
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com