- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
sm2算法原理
SM2 算法
1、算法原理
椭圆曲线算法是通过方程确定的,SM2 算法采用的椭圆曲线方程为:
y2 = x3 + ax + b
在SM2 算法标准中,通过指定a、b 系数,确定了唯一的标准曲线。
下面通过图示展示算法原理。请参见下图:
图1 椭圆曲线算法原理
上图为方程:y2 = x3 x 的曲线。
1、P 点为基点;
2、通过P 点做切线,交与点 2P 点,在2P’点做竖线,交与2P 点,2P 点
即为P 点的2 倍点;
3、进一步,P 点和2P 点之间做直线,交与3P’点,在3P’点做竖线,交与
3P 点,3P 点即为P 点的3 倍点;
4 、同理,可以计算出P 点的4 、5、6、… 倍点;
5、如果给定图上Q 点是P 的一个倍点,请问Q 是P 的几倍点呢?
6、直观上理解,正向计算一个倍点是容易的,反向计算一个点是P 的几倍
点则困难的多。
在椭圆曲线算法中,将倍数d 做为私钥,将Q 做为公钥。
2、椭圆曲线系统参数
Fp 上椭圆曲线系统参数包括:
a) 域的规模q = p ,p 是大于3 的素数;
b) (选 )一个长度至少为192 的比特串SEED ;
c) Fp 中的两个元素a 和b,它们定义椭圆曲线E 的方程:y2 = x3+ax+b;
d) 基点G = (xG;yG) ∈ E(Fp),G = O ;
e) 基点G 的阶n(要求:n 2191 且n 4p1=2) ;
f) (选 )余因子h = #E(Fp)=n。
3、密钥对的生成
输入:一个有效的Fq(q = p 且p 为大于3 的素数,或q = 2m)上椭圆曲线系
统参数的集合。
输出:与椭圆曲线系统参数相关的一个密钥对(d;P)。
a) 用随机数发生器产生整数d ∈ [1;n−2] ;
b) G 为基点,计算点P = (xP;yP) = [d]G ;
c) 密钥对是(d;P),其中d 为私钥,P 为公钥。
4、加密算法及流程
设需要发送的消息为比特串M,klen 为M 的比特长度。
为了对明文M 进行加密,作为加密者的用户A 应实现以下运算步骤:
A1 :用随机数发生器产生随机数k ∈[1,n-1];
A2 :计算椭圆曲线点C1=[k]G=(x1,y 1),按本文本第 1 部分 4.2.8 和 4.2.4
给出的细节,将C1 的数据类型转换为比特串;
A3 :计算椭圆曲线点S=[h]PB,若S 是无穷远点,则报错并退出;
A4 :计算椭圆曲线点[k]PB=(x2,y2),按本文本第1 部分4.2.5 和4.2.4 给出
的细节,将坐标x2 、y2 的数据类型转换为比特串;
A5 :计 t=KDF(x2 ∥ y2, klen),若t 为全0 比特串,则返回A1 ;
A6 :计 C2 = M ⊕ t ;
A7 :计 C3 = Hash(x2 ∥ M ∥ y2) ;
A8 :输出密文C = C1 ∥ C2 ∥ C3。
图2 加密算法流程
5、解密算法及流程
设klen 为密文中C2 的比特长度。
为了对密文C=C1 ∥ C2 ∥ C3 进行解密,作为解密者的用户B 应实现以
下运算步骤:
B1:从C 中取出比特串C1,按本文本第1 部分4.2.3 和4.2.9 给出的细节,
将C1 的数据类型转换为椭
圆曲线上的点,验证C1 是否满足椭圆曲线方程,若不满足则报错并退出;
B2:计算椭圆曲线点S=[h]C1,若S 是无穷远点,则报错并退出;
B3:计 [dB]C1=(x2,y2),按本文本第 1 部分4.2.5 和4.2.4 给出的细节,
将坐标x2 、y2 的数据类型转
换为比特串;
B4:计 t=KDF(x2 ∥ y2, klen),若t 为全0 比特串,则报错并退出;
B5:从C 中取出比特串C2,计 M ′ = C2
文档评论(0)