一种结合cpu和gpu实现sm2算法的方法及装置制造方法

文档序号:7769793阅读:436来源:国知局
一种结合cpu和gpu实现sm2算法的方法及装置制造方法
【专利摘要】本发明公开了一种结合CPU和GPU实现SM2算法的方法及装置,本发明采用CPU和GPU协作方式进行SM2算法,将SM2算法中的计算量比较大的椭圆曲线多倍点运算步骤在GPU预先计算得到结果并存储在设置的存储器中,然后由CPU根据SM2算法步骤对SM2算法的输入数据顺序计算时,调用存储器存储的预先计算得到的结果,从而节省了对SM2算法的输入数据进行SM2算法的计算时间,提高了SM2算法的计算效率。
【专利说明】—种结合CPU和GPU实现SM2算法的方法及装置
【技术领域】
[0001]本发明涉及公钥密码算法技术,特别涉及一种结合中央处理器(CPU)和图形处理器(GPU, Graphics Processing Unit)实现SM2算法的方法及装置。
【背景技术】
[0002]采用多核并行计算是提升处理器性能的重要方式,因此出现了包括海量并行结构运算单元的GPU,GPU已经发展成为了并行度高、多线程、计算快捷及内存带宽大的高性能通用处理器。GPU体系结构在组成上分为三层:第一层由若干个线程处理器簇(TPC,ThreadPreocessing Cluster)组成,第二层由多个流多处理器(SM, Streaming Multiprocessor)组成,第三层为构成SM的流处理器(SP, Stream Processor),也可以称为线程处理器。SM作为GPU的一个任务执行和调度单元,主要负责执行GPU分发的线程指令,而SP是GPU中最基本的指令执行单元,其执行的操作由所属的SM控制。
[0003]2006 年 NVIDIA 公司推出了计算机一体设备结构(CUDA, Compute Unified DeviceArchitecture)可编程平台,可以实现GPU线程的调度。在CUDA可编程平台架构下,GPU执行的最小单位是线程(thread),数个线程(thread)可以组成一个线程块(block)。一个block中的thread可以存取同一共享内存且同步。执行相同程序的thread,组成栅格(grid),不同的grid可以执行不同的程序。
[0004]相对于中央处理器(CPU),GPU具有强大的数据处理能力,在浮点运算及并行计算等方面,提高几十倍甚至数百倍于CPU的性能。GPU具有几千个核,有很高的并行性,但是每个SM相比CPU处理能力比较弱。CPU计算能力强,但是核数比较少。因此,采用何种CPU和GTO协作方式进行构架,完成各种计算,以提高系统整体计算能力,是一个亟待解决的问题。
[0005]椭圆曲线公钥密码(SM2)算法,是中国国家密码管理局发布的密码算法。该SM2算法,基于椭圆曲线离散对数问题,是目前公认的安全有效的公钥密码算法之一。椭圆曲线公钥密码涉及两个主要运算:椭圆曲线上的点加运算和多倍点运算。在椭圆曲线多倍点运算中Q=[k]P=P+P+...+P,其中基点P是椭圆曲线E上阶为N的点,k为正整数,P的k倍点为Q,P的k倍点也是椭圆曲线上的点,已知多倍点Q与基点P,求解倍数k的问题称为椭圆曲线离散对数问题。
[0006]在SM2算法中包括数字签名算法、密钥交换协议算法及加密算法等都需要进行椭圆曲线多倍点运算,椭圆曲线多倍点运算的效率直接影响了 SM2算法中的数字签名算法、密钥交换协议算法及加密算法的计算效率。
[0007]SM2算法的数字签名算法、密钥交换协议和加密算法的具体过程如下所述。
[0008]SM2算法的数字签名生成算法
[0009]设待签名的消息为M,为了获取消息M的数字签名(r,s),作为签名者的用户A实现以下运算步骤:
[0010]Al =Sm=Za Il M,Za Il μ 表示 Za 与 M 的拼接;[0011]A2:计算e=Hv(M),将e的数据类型转换为整数;
[0012]A3:产生随机数 k e [I, Π-1];
[0013]A4:计算椭圆曲线点(X,y) =[k]G ;
[0014]A5:计算 r=(e+x)mod η,若 r=0 或 r+k=n 则返回 A3 ;
[0015]A6:计算 S= ((l+dA).(k~r.dA))mod η,若 s=0 则返回 A3 ;
[0016]A7:将r、s的数据类型转换为字节串,消息M的签名为(r,s)。
[0017]其中:HV:消息摘要长度为V比特的密码杂凑函数;G:椭圆曲线上的一个基点,其阶为素数:基点G的阶;dA:用户A的私钥;[k]G:椭圆曲线上点GWk倍点,即,[k]G=G+G…+G,表示k个G在椭圆曲线域上相加。
[0018]在该算法中,在步骤A3和步骤A4采用了椭圆曲线多倍点运算。
[0019]SM2算法中的密钥交换协议算法
[0020]设用户A和用户B协商获得密钥数据的长度为klen比特,用户A为发起方,用户B为响应方。用户A和用户B双方为了获得相同的密钥,实现如下运算步骤:
[0021]记 W= [([log2(n)l=2)l-l0
[0022]发起方用户A:
[0023]Al:用随机数发生器产生随机数rA e [I, n-1];
[0024]A2:计算椭圆曲线点 Ra=U1, y!) = [rA]G ;
[0025]A3:将Ra发送给用户B ;
[0026]A4:从Ra中取出域元素X1,将X1的数据类型转换为整数,计算Xl =2W+(X!&(2W-1));
[0027]A5:计算tA = (dA+ X|.rA)modn;
[0028]A6:在等待中收到来自响应方的Rb、(选项)Sb后,验证Rb是否满足椭圆曲线方程,若不满足则协商失败;否则从Rb中取出域元素X2,将X2的数据类型转换为整数,计算
X2 = 2w+(x2&(2W-1));
[0029]A7:计算椭圆曲线点 u = [h.tA](PB+[ x2]Rb) = (xu,yu),若 U 是无穷远
点,则A协商失败;否则将Χυ、Υυ的数据类型转换为比特串;
[0030]A8:计算 Ka=KDF (Xu | IyuI Za | ZB, klen);
[0031]A9:(选项)将RA的坐标Xl、yi和Rb的坐标x2、y2的数据类型转换为比特串,计算S1=Hash (0x02 Iyu Hash (xv Za Zb X1 Y1 X2 y2)),并检验 S1=Sb 是否成立,若等式不成立则从B到A的密钥确认失败;
[0032]AlO:(选项)计算 SA=Hash (0x03 IyuI Hash (Xu | Za Zb X1 yj X2 y2)),并将 Sa发送给用户B。
[0033]响应方用户B:
[0034]B1:用随机数发生器产生随机数rB e [I, n-1];
[0035]B2:计算椭圆曲线点 Rb= [rB] G= (x2 ;y2);[0036]B3:从Rb中取出域元素X2,将X2的数据类型转换为整数,计i x =2w+(x2&(2W-1));
【权利要求】
1.一种结合中央处理器CPU和图形处理器GPU实现SM2算法的方法,其特征在于,该方法包括: CPU调用GPU,GPU预先执行SM2算法中的计算椭圆曲线多倍点运算步骤,得到椭圆曲线点及对应的随机数预先存储在存储器中; CPU根据SM2算法步骤对SM2算法的输入数据顺序计算时,调用存储器存储的椭圆曲线点及对应的随机数,完成SM2算法的计算。
2.如权利要求1所述的方法,其特征在于,在所述调用存储器存储的椭圆曲线点及对应的随机数之后,删除或者标记存储器存储的椭圆曲线点及对应的随机数。
3.如权利要求1所述的方法,其特征在于,CPU设定椭圆曲线上的点Q,所述GPU执行SM2算法中的计算椭圆曲线多倍点运算步骤,由GPU线程按照步骤1)、2)和3)循环计算完成: I ),读取一个随机数ki,将ki赋值给k,即k=ki ; 2),计算[k]Q,[k]Q为椭圆曲线上的点Q的k倍点; 3),将(k,[k]Q)存储在设定的存储器中。
4.如权利要求1或2所述的方法,其特征在于,所述GPU执行SM2算法中的计算椭圆曲线多倍点运算步骤由一个GPU线程顺序完成,或多个GPU线程同时计算完成; 所述多个GPU线程同时完成时,针对不同的椭圆曲线和不同的点Q,或者针对相同的椭圆曲线和不同的点Q。
5.如权利要求1或3所.述的方法,其特征在于,所述SM2算法为SM2算法的数字签名生成算法、密钥交换协议或加密算法。
6.如权利要求5所述的方法,其特征在于,所述SM2算法为SM2算法的数字签名生成算法或密钥交换协议时,所述计算椭圆曲线多倍点运算步骤为计算基点G的椭圆曲线多倍占.所述SM2算法为加密算法时,所述计算椭圆曲线多倍点运算步骤为计算基点G的椭圆曲线多倍点和公钥P的椭圆曲线多倍点。
7.一种结合CPU和GPU实现SM2算法的装置,其特征在于,包括:GPU计算单元、存储器和CPU计算单元,其中, GPU计算单元,用于在CPU计算单元的调用下,预先执行SM2算法中的计算椭圆曲线多倍点运算步骤,得到椭圆曲线点及对应的随机数预先存储在存储器中; CPU计算单元,用于调用GPU计算单元,根据SM2算法步骤对SM2算法的输入数据顺序计算时,调用存储器存储的椭圆曲线点及对应的随机数,完成SM2算法的计算; 存储器,用于预先存储GPU计算单元计算的椭圆曲线点及对应的随机数。
8.如权利要求7所述的装置,其特征在于,所述GPU单元,还用于所述GPU执行SM2算法中的计算椭圆曲线多倍点运算步骤,由GPU线程按照步骤1)、2)和3)循环计算完成: I ),读取一个随机数ki,将ki赋值给k,即k=ki ; 2),计算[k]Q,[k]Q椭圆曲线上的点Q的k倍点; 3),将(k,[k]Q)存储在设定的存储器中。
9.如权利要求7或8所述的装置,其特征在于,所述GPU计算单元为一个或多个,分别承载有GPU线程,用于单独或同时执行SM2算法中的计算椭圆曲线多倍点运算步骤,所述计算椭圆曲线多倍点运算针对针对不同的椭圆曲线和不同的点Q,或者针对相同的椭圆曲线和不同的点Q。
10.如权利要求7所述的装置,其特征在于,所述CPU计算单元,还用于调用存储器存储的椭圆曲线点及对应的随机数后,删除或标记存储器中存储的GPU计算单元计算的椭圆曲线点及对应的随机数。
【文档编号】H04L9/30GK103475469SQ201310408312
【公开日】2013年12月25日 申请日期:2013年9月10日 优先权日:2013年9月10日
【发明者】林璟锵, 荆继武, 蔡权伟, 顾青, 谢超, 江伟玉, 梁佐泉 申请人:中国科学院数据与通信保护研究教育中心, 上海普华诚信信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1