SM2 — это алгоритм цифровой подписи, основанный на эллиптических кривых, и объяснение эллиптических кривых можно увидеть в предыдущем Weibo, посвящённом эллиптическим кривым, а ниже приведено краткое введение в процесс создания SM2-сигнатуры. Для подписи информации это исходная информация, полученная через хеш-функцию после определённой обработки, алгоритм хеширования использует национальный секретный алгоритм 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 =stPA =sG+(r+s)PA =sPA =sg+(r+s)PA = sg+(r+s)PA = sG+(r+s)PA = sg+(r+s)PA = sg+(r+s)PA =sPA =sg+(r+s)PA = sG+(r+s)PA = sg+(r+s)PA = sPA) = sG+tPA = sg+(r+s)PA = sG+tPA = sg+(r+s)PA = 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 Уведомление об авторском праве: Эта статья является оригинальной статьёй блогера, пожалуйста, приложите ссылку на пост для перепечатки!
|