二元扩域上SM2加密算法的实现方法与流程

文档序号:11234391阅读:1896来源:国知局
二元扩域上SM2加密算法的实现方法与流程

本发明具体涉及二元扩域f2m上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是无穷远点,则报错并退出,其中pb为用户b的公钥;

步骤四:计算椭圆曲线点s1=[k]pb=(x2,y2),将坐标x2、y2的数据类型转换为比特串;

步骤五:计算t=kdf(x2∥y2,klen),若t为全0比特串,则返回步骤一,其中kdf(z,klen)为密钥派生函数,x∥为x与y的拼接;

步骤六:计c2=m⊕t,其中⊕为长度相等的两个比特串按比特的异或运算;

步骤七:计算c3=hash(x2∥m∥y2),其中hash()为密码杂凑函数;

步骤八:输出密文c=c1∥c2∥c3。

本发明在二元扩域上使用ld投影坐标运算,对于点乘运算采用快速的基于k的有符号的二进制展开的滑动窗口算法以及使用集成的sm3模块计算杂凑值,可以提升sm2公钥加密算法的性能。

附图说明

下面结合附图与具体实施方式对本发明作进一步详细的说明:

图1是所述sm2公钥加密算法的实现方法的流程图;

图2是计算c1=[k]g=(x1,y1)的流程图。

图3是sm3模块的端口设计图。

具体实施方式

二元扩域f2m上sm2椭圆曲线公钥密码算法的公钥加密算法实现方法如图1所示。

步骤一:用随机数发生器产生随机数k∈[1,n-1];

步骤二:在ld坐标下计算椭圆曲线点c1=[k]g=(x1,y1),将c1的数据类型转换为比特串;

对于步骤二,通过如下步骤来实现:

步骤(1):设需要存储的点的个数r>1,g1=g,g2=[2]g1;

步骤(2):i从1增加到r-1计算g2i+1=c2i-1+g2,(i为控制循环的中间计算量,)步骤(3):naf(k)=(ki-1,,ki-2,k1,k0);(其中ki为随机数k的从右数第i+1位,正整数k的宽度为w的);

步骤(4):令j=l-1,c1=o;当j≥0时;

(1)若kj=0,则c1=[2]c1,j=j-1;

(2)否则:

(2.1)令t是使且kt=1或k=-1的最小整数;

(2.2)

(2.3)如果hj>0,否则

(2.4)令j=t-1;(其中j,t,hj,等都是计算的中间量,l为宽度为w的naf的长度);

步骤(5):输出c1;

步骤(6):设是y1,从最左边到最右边的比特;

设mk-1;mk-2;···;m0是m从最左边到最右边的字节,则其中0≤i<k,当8i+j≥m,0<j≤7时,其中y1,为长度为m的比特串。m为长度为k的字节串,其中(顶函数,大于或等于x的最小整数。)

步骤(7):令pc=04;字节串s=pc∥x1∥y1;

步骤(8):设sk-1,sk-2,…,s0是s从最左边到最右边的字节;

是c1从最左边到最右边的比特,则是si右起第i-8j+1比特,其中(底函数,小于或等于x的最大整数。)其中输入s为长度为k的字节串。输出c1为长度为m的比特串,其中m=8k。

步骤三:计算椭圆曲线点s=[h]pb,若s是无穷远点,则报错并退出;

步骤三通过如下步骤来实现:

步骤(1):设需要存储的点的个数r>1,pb1=pb,(pbi为中间量)

步骤(2):i从1增加到r-1计算

步骤(3):naf(h)=(hi-1,hi-2,h1,h0);

步骤(4):令j=l-1,s=o;当j≥0时;

(1)若hj=0,则s=[2]s,j=j-1;

(2)否则:

(2.1)令t是使且ht=1或ht=-1的最小整数;

(2.2)

(2.3)如果kj>0,否则

(2.4)令j=t-1;

步骤(5):输出s;

步骤四:计算椭圆曲线点s1=[k]pb=(x2,y2),将坐标x2、y2的数据类型转换为比特串;步骤四的过程按照以下步骤计算:

步骤(1):设需要存储的点的个数r>1,pb1=pb,

步骤(2):i从1增加到r-1计算

步骤(3):naf(k)=(ki-1,,ki-2,k1,k0);

步骤(4):令j=l-1,s1=o;当j≥0时;

(1)若kj=0,则s1=[2]s1,j=j-1;

(2)否则:

(2.1)令t是使且kt=1或kt=-1的最小整数;

(2.2)

(2.3)如果hj>0,否则

(2.4)令j=t-1;

步骤(5):输出s1;

关于对坐标x2、y2的数据类型转换为比特串的计算通过以下步骤来实现:

步骤(1):设是y2,从最左边到最右边的比特;

设mk-1;mk-2;···;m0是m从最左边到最右边的字节,则其中0≤i<k,当8i+j≥m,0<j≤7时,其中y2,为长度为m的比特串。m为长度为k的字节串,

设mk-1,mk-2,…,m0是s从最左边到最右边的字节;

是c2从最左边到最右边的比特,则是mj右起第i-8j+1比特,其中其中输入m为长度为k的字节串。输出c2为长度为m的比特串,其中m=8k。

步骤五:计算t=kdf(x2∥y2,klen),若t为全0比特串,则返回步骤一;

步骤六:计算c2=m⊕t;

步骤七:计算c3=hash(x2∥m∥y2);

步骤七的过程由以下步骤来完成:

步骤(1):令m=x2∥m∥y2;首先将比特“1”添加到消息的末尾,再添加k个“0”,其中k是满足l+1+k=448mod512的最小的非负整数,m的长度为k比特。

步骤(2):再添加一个64位比特串,该比特串是长度l的二进制表示;[0061]步骤(3):将消息分组b(is)划分为16个字w0,w1,…,w15。

步骤(4):从j=16到j=67循环,

wj←p1(wj-16⊕wj-9⊕(wj-3<<15))⊕(wj-13<<7)⊕wj-6

步骤(5):从j=0到j=63循环,

w’j←wj⊕wj+4;

步骤(6):令a,b,c,d,e,f,g,h为字寄存器,ss1,ss2,tt1,tt2为中间变量;

步骤(7):压缩函数vi+1=cf(v(i),b(i)),0≤i≤n-1;

步骤(8):abcdefgh←v(i),“←”为左向赋值运算符

步骤(9):从j=0到j=63循环;

ss1←((a<<12)+e+(tj<<j))<<7

ss2←ss1⊕(a<<12)

tt1←ffj(a,b,c)+d+ss2+w’j

tt2←ggj(e,f,g)+h+ss1+wj

d←c

c←b<<9

b←a

a←tt1

h←g

g←f<<19

f←e

e←p0(tt2)

v(i+1)←abcdefgh⊕v(i)

步骤(10):对m’按512比特进行分组:m’=b(0)b(1),…,b(n-1)其中n=(l+k+65)/512。

步骤(11):从i=0到j=n-1循环,v(i+1)=cf(v(i),b(i))

其中cf是压缩函数,v(0)为256比特初始值iv,b(i)为填充后的消息分组,迭代压缩的结果为v(n)

步骤(12):abcdefgh←v(n),输出256比特的杂凑值y=abcdefgh.

不同坐标系下,点加和倍点运算的复杂度见表1,因此在ld坐标系下计算点加和倍点复杂度最小,点乘运算速度最快。

表1

使用sm3密码杂凑算法进行计算,这个步骤主要包括顶层模块、controller控制器、消息扩展模块、消息压缩模块以及结果读取模块如图3所示。其中,控制模块采用标准的三段式fsm结构设计,控制其他模块电路的执行;消息扩展模块主要生成相应的132个字,供后续算法压缩电路模块使用;消息压锁模块主要实现消息的压缩,并最终得到相应的256位加密哈希值;结果读取模块主要实现从256位的结果寄存器中,以32位形式读取与输出。同时,由于寄存器会带来大量的面积和功耗开销,所以为了进一步降低功耗的开销,使用寄存器复用的方法,尽量优化并减少了寄存器的个数。通过调度优化,使得扩展和压缩模块的进程是可以嵌套的,这样扩展和压缩模块即可共用同一个控制器产生的控制信号,这样既减少了控制电路的复杂度,也降低了控制电路的开销。

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1