SM2 — це алгоритм цифрового підпису, заснований на еліптичних кривих, і пояснення еліптичних кривих можна побачити в попередньому Weibo щодо еліптичних кривих, а нижче наведено короткий вступ до процесу підпису SM2. Для підпису інформації EE це оригінальна інформація, отримана через хеш-функцію після певної обробки, алгоритм хешування використовує національний секретний алгоритм SM3, цей процес також пропускається, вводиться лише процес підписання ключа та верифікації.
1. Процес підписання Нехай GG буде точкою відліку на еліптичній кривій, dAdA — приватний ключ, PAPA — публічний ключ, PA=dA∗GPA=dA∗G Результат підпису (r,s) (r,s) отримується шляхом цифрового підписання EE, а процес розрахунку такий: По-перше, оберіть випадкове число kk, звісно, вибір цього числа обмежений, і поки що його не чіпають. Обчислимо r=e+x1r=e+x1, де (x1,y1)=k∗G(x1,y1)=k∗G Обчислимо s=(1+dA)−1∗(k−r∗dA)s=(1+dA)−1∗(k−r∗dA) Видно, що передня частина виконана приватним ключем.
2. Процес перевірки підпису Перевірка підпису полягає у використанні отриманого підпису, публічного ключа, параметрів еліптичної кривої тощо для перевірки підпису, а основні етапи перевірки такі: Спочатку обчисліть t=r+st=r+s, якщо t=0t=0, то це означає, що тест не пройшов. Тоді точки на кривій (x1,y1) = s∗G+t∗ PA (x1,y1)=s∗G+t∗ PA обчислюються за tt і ss Потім обчисліть R=x1+eR=x1+e, а потім перевіряйте, чи рівні RR і rr; якщо вони рівні, це означає, що перевірка завершена.
3. Принцип верифікації Чому це можна перевірити, можна так само вивести: (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 =sG+(r+s)PA =sG+(r+s)PA =sG+tPA =sG+(r+s)PA =sPA =sG+(r+s)PA =sPA =sG+(r+s)PA = sG+(r+s)PA = sG+(r+s)PA) = sG+tPA =sG+(r+s)PA = sG+(r+s)PA = sPA) = sG+(r+s)PA = sG+tPA = stPA =sPA) = sG+tPA = sg+(r+s)PA = sG+tPA = stPA = sG+(r+s) =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 Видно, що ця точка на еліптичній кривій, отримана за відкритим ключем, узгоджується з точкою в момент підписування. Потім додайте цей x1x1 і отриману інформацію, щоб перевірити, чи збігається вона з надісланим підписом rr, і він проходить. --------------------- Автор: leowang666 Джерело: CSDN Оригінал: https://blog.csdn.net/hugewaves/article/details/59205914 Повідомлення про авторське право: Ця стаття є оригінальною статтею блогера, будь ласка, додайте посилання на блог-пост для повторного друку!
|