国密SM2算法的只求理解不求甚解 (1/5)前置数学知识:模运算
国密SM2算法的只求理解不求甚解 (2/5)前置数学知识:平面几何
国密SM2算法的只求理解不求甚解 (3/5)SM2算法数学模型
国密SM2算法的只求理解不求甚解 (4/5)SM2算法加解密协议
国密SM2算法的只求理解不求甚解 (5/5)SM2算法签名验签协议
-
构建模型
设椭圆曲线方程为:y2 = x3 + 1x + 6,用于取模的素数p = 23。在mod 23的情况下计算椭圆曲线上的所有点:
(0,12)、(1,13)、(2, 4)、(3, 6)、(9,13)、(10, 2)、(13,13)、(14, 2)、(16, 1)、(22, 2)、
(0,11) 、(1,10)、(2,19)、(3,17)、(9,10)、(10,21)、(13,10)、(14,21)、(16,22)、(22,21)
共计20个点,再加上一个无穷远点(记Ο),后得出椭圆曲线y2 ≡ x3 + 1x + 6 mod 23的阶n = 21。 -
基点
基点是从20个点中任意选择的一点。设基点为G(xG,yG) = (10,21)。 -
点运算公式定义
令P、Q、R为椭圆曲线y2 ≡ x3 + 1x + 6 mod 23上三个点,
则:P + Q + R = Ο或P + P + R = Ο、P + Ο = Ο + P = P、
故:P + Q = -R 或P + P = 2P = -R。
另:R坐标为(x, y),则-R坐标为(x, -y) -
倍点计算
依据方程y2 ≡ x3 + 1x + 6 mod 23,得a = 1,b = 6。
举例 | 计算 |
---|---|
2倍点 (9,13) | 先计算k = (3x1^2 + a)/2y1 = (3x10^2+1)/(221) = 301/42 = 30117 = 5117 mod 23 = 11;x3 = k^2-2x1 = 11^2 - 210 = 121–20 = 101 mod 23 = 9;y3 = k(x1-x3)-y1 = 11(10-9)–21 = 11 – 21 = -10 mod 23 = 13。 |
3倍点 (22,21) | 3P = 2P + P;先计算k = (y2-y1)/(x2-x1) = (21-13)/(10-9) = 8;x3 = k^2-x1 - x2 = 8^2 – 10 - 9 = 64–19 = 45 mod 23 = 22;y3 = k(x1-x3)-y1 = 8*(9-22)–13 = 8*-13 - 13 = -117 mod 23 = 21 |
所有倍点 | 2P = (9,13)、3P = (22,21)、4P = (14,2)、5P = (0,12)、6P = (3,6)、7P = (16,22)、8P = (13,13)、9P = (2,19)、10P = (1,10)、11P = (1,13)、12P = (2,4)、13P = (13,10)、14P = (16,1)、15P = (3,17)、16P = (0,11)、17P = (14,21)、18P = (22,2)、19P = (9,10)、20P = (10,2)、21P = Ο |
- 基于椭圆曲线的离散对数问题
已知一个点的坐标,无法直接得到此点是基点的几倍点。只可利用基点逐步累加的方式推出,而此方式在阶很大的情况下,计算量十分巨大,等同于穷举。