齐鲁在线 > 资讯 > 科技 > 二元扩域上SM2加密算法的实现方法技术 > 正文

二元扩域上SM2加密算法的实现方法技术

2017-09-09 16:12:01 来源:网络 编辑:K027_小凯乐

二元扩域上SM2加密算法的实现方法技术
 
椭圆曲线密码算法的快速实现一直是椭圆曲线密码体制研究的重点,基于有限域上的椭圆曲线可以实现数据加密等密码方案。二元扩域上椭圆曲线可以用仿射坐标、标准射影坐标、Jacobian加重射影坐标以及Lopez&Dahab射影坐标表示,根据椭圆曲线特点和坐标的具体形式对点加和倍点运算进行优化,通过对几种情况下的优化,由图1得到Lopez&Dahab射影坐标下的点加和倍点运算的运算速度最快。多倍点运算是椭圆曲线密码算法的核心运算。对于多倍点运算的实现方式有很多种,其中,基于k的有符号二进制展开的滑动窗口算法的实现速度最快。椭圆曲线公钥加密算法中涉及到的杂凑函数使用SM3模块来实现,这个模块主要包括顶层模块、controller控制器、消息扩展模块、消息压缩模块以及结果读取。降低了电路开销,总体上提升了整个算法流程的速度。
 
本专利技术所要解决的技术问题是:针对上述存在的问题,提供了一种二元扩域F2m上SM2椭圆曲线公钥密码算法的公钥加密算法实现方法,通过提高点乘和杂凑函数等的计算速度来有效的提升SM2公钥加密算法的性能。为解决上述技术问题,本专利技术的SM2公钥加密算法的实现方法,包括如下步骤:步骤一:用随机数发生器产生随机数k∈[1,n-1];步骤二:计算椭圆曲线点C1=[k]G=(x1,y1),将C1的数据类型转换为比特串,其中G为椭圆曲线的一个基点;步骤三:计算椭圆曲线点S=[h]PB,若S是无穷远点,则报错并退...一种二元扩域上SM2椭圆曲线公钥加密算法的实现方法,包括以下步骤:步骤一:用随机数发生器产生随机数k∈[1,n-1];步骤二:计算椭圆曲线点C1=[k]G=(x1,y1),将C1的数据类型转换为比特串,其中G为椭圆曲线的一个基点;步骤三:计算椭圆曲线点S=[h]PB,若S是无穷远点,则报错并退出,其中PB为用户B的公钥;步骤四:计算椭圆曲线点S1=[k]PB=(x2,y2),将坐标x2、y2的数据类型转换为比特串;步骤五:计算t=KDF(x2∥y2,klen),若t为全0比特串,则返回步骤一,其中KDF(Z,klen)为密钥派生函数,x∥y为x与y的拼接,步骤六:计C2=M⊕t,其中⊕为长度相等的两个比特串按比特的异或运算;步骤七:计算C3=Hash(x2∥M∥y2),其中Hash()为密码杂凑函数;步骤八:输出密文C=C1∥C2∥C3。2.如权利要求1所述的方法,其特征在于:所有的计算都基于LD射影坐标,在射影投影坐标下,椭圆曲线的投影方程为:y2+xyz=x3z+ax2z2+bz4,a,b为椭圆曲线参数,在这种坐标系下,点加和倍点的运算量最少。3.如权利要求1所述的方法,其特征在于:所述步骤二时采用如下方法:设需要存储的点的个数r>1,步骤(1):G1=G,G2=[2]G1;其中G为椭圆曲线的一个基点,G1为计算的中间量;步骤(2):i从1增加到r-1计算G2i+1=G2i-1+G2;其中i为控制循环计算的中间量;步骤(3):NAF(k)=(ki-1,,ki-2,...

大家都在看

猜你喜欢