欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 基于GPU与CPU异构结构的椭圆曲线数字签名方法独创技术15496字

基于GPU与CPU异构结构的椭圆曲线数字签名方法

2021-02-16 01:53:14

基于GPU与CPU异构结构的椭圆曲线数字签名方法

  技术领域

  本发明涉及信息安全中的公钥密码技术,特别涉及一种基于中央处理器(CPU)和图形处 理器(GPU,Graphics Processing Unit)的椭圆曲线数字签名算法(ECDSA)的实现方法。

  背景技术

  采用多核并行计算是提升处理器性能的重要方式,因此出现了包括海量并行结构运算单 元的GPU(图形处理器,Graphics Processing Unit),GPU已经发展成为了并行度高、多线 程、计算快捷及内存带宽大的高性能通用处理器。GPU体系结构在组成上分为三层:第一层 由若千个线程处理器簇(TPC,Thread Preocessing Cluster)组成,第二层由多个流多处理 器(SM,Streaming Multiprocessor)组成,第三层为构成SM的流处理器(SP,Stream Processor),也可以称为线程处理器。SM作为GPU的一个任务执行和调度单元,主要负责执 行GPU分发的线程指令,而SP是GPU中最基本的指令执行单元,其执行的操作由所属的SM 控制。

  2006年NVIDIA公司推出了计算机一体设备结构(CUDA,Compute Unified DeviceArchitecture)可编程平台,可以实现GPU线程的调度。在CUDA可编程平台架构下,GPU执 行的最小单位是线程(thread),数个线程(thread)可以组成一个线程块(block)。一个block中的thread可以存取同一共享内存且同步。执行相同程序的thread,组成栅格(grid),不同的grid可以执行不同的程序。

  相对于中央处理器(CPU),GPU具有强大的数据处理能力,在浮点运算及并行计算等方 面,提高几十倍甚至数百倍于CPU的性能。GPU具有几千个核,有很高的并行性,但是每个 SM相比CPU处理能力比较弱。GPU计算能力强,但是核数比较少。因此,采用何种CPU和GPU协作方式进行构架,完成各种计算,以提高系统整体计算能力,是一个亟待解决的问题。

  椭圆曲线数字签名算法(ECDSA)明确规定了ECDSA算法的数字签名算法。其中,ECDSA算 法的数字签名算法包括生成算法和验证算法,应用在消息传输过程中可靠性的消息传输及使 用消息的合法者验证。在ECDSA的数字签名算法中,包括一一对应的公钥和私钥,其中,私 钥用于待签名消息生成数字签名,公钥用于对数字签名进行验证。签名者采用私钥进行待签 名消息M的数字签名生成算法计算,得到待签名消息M的数字签名;验证者采用公钥对接收 的待签名消息M进行数字签名验证计算,验证待签名消息M的数字签名是否匹配,如果匹配, 确认接收的待签名消息M是正确的。

  椭圆曲线数字签名算法(ECDSA)是数字签名算法的椭圆曲线版本,其安全性是以椭圆曲 线密码体制的安全性为保证的,而椭圆曲线密码体制的安全性是基于椭圆曲线离散对数问题 之上的。最广泛标准化的基于椭圆曲线的签名方案包括ANSI X9.62、FIPS186-2、IEEE 1363-2000等。

  目前ECDSA的计算方式是使用CPU完成全部计算。在实现ECDSA数字签名生成算法时, 是由CPU按照上述步骤顺序计算,最终得到待签名消息m的数字签名。由于CPU计算核心数 量少,而ECDSA的计算过程中计算量比较大,会占用CPU的大部分资源,导致ECDSA计算速度不高,比较费时,得到数字签名效率比较低。

  发明内容

  为了克服上述现有技术的不足,本发明提供一种基于GPU与CPU异构结构的椭圆曲线数 字签名方法,提高数字签名生成算法(ECDSA)的计算效率。

  本发明的原理是:

  ECDSA是一种具有标准协议的,国际通用的签名算法。现有方法由CPU按照ECDSA数字 签名生成算法计算步骤顺序执行,其中的多倍点计算复杂性比较高,比较耗时,因此,现有 的使用CPU计算的方法在实现ECDSA数字签名生成算法时计算效率不高,无法满足越来越多 计算需求。但由于针对ECDSA模逆算法并不适合GPU计算,现有技术难以实现针对ECDSA的 GPU加速算法。本发明依托新型的GPU计算平台对该算法进行计算加速,本专利对费马小定 理进行变形,使用该变形方法优化椭圆曲线数字签名的模逆在GPU中的实现步骤,获得GPU端 的性能提升。具体地,本发明通过将一些重要的计算过程移植到GPU平台进行计算,依托于 GPU平台,本发明首次提出了采用CPU和GPU协作方式进行ECDSA数字签名生成算法计算, 将ECDSA数字签名生成算法中的计算椭圆曲线多倍点步骤批量在GPU中进行,充分利用GPU 架构的并行性,然后由CPU根据ECDSA数字签名生成算法计算步骤对待签名消息顺序计算时, 调用GPU计算得到的结果,GPU可以进行并行计算,即同时计算多组数据(CPU只能串行计算, 此差异可以使GPU针对多数据时,获得比CPU快很多的速度),从而节省了对待签名消息进行 数字签名的计算时间,提升计算速度,提高ECDSA数字签名生成算法的计算效率。

  本发明提供的技术方案是:

  一种基于GPU与CPU异构结构的椭圆曲线数字签名方法,采用CPU和GPU异构结构(如 图2所示,CPU和GPU各负责一部分数据计算)和协作方式,进行ECDSA数字签名生成算法计算,充分利用GPU架构的并行性,将计算步骤分为两个部分:在GPU中批量进行ECDSA中 椭圆曲线多倍点的计算,再由CPU将待签名消息根据计算步骤顺序进行计算时,使用GPU计 算得到的结果,从而节省了待签名消息进行数字签名的计算时间;使用GPU加速ECDSA计算时,由于GPU架构对程序分支敏感,而运算过程中,会包含大量的分支片段,导致运行效率低下。本发明提出了通过对费马小定理进行变形,使用该变形方法对关键的模逆步骤进行优 化,使得利用GPU加速ECDSA成为可能。

  具体地,ECDSA签名算法计算步骤如下,设待签名的消息为m,为了取得消息m的数字 签名(r,s),作为签名者的用户应实现以下运算步骤:

  输入:椭圆曲线算法定义的参数组D=(q,Fq,a,b,P,n),其中FQ为素域,其阶为Q;σ、b为 椭圆曲线方程y2=x3+ax+b的参数且a,b∈Fq,点P为素域中的两个元素组成的椭圆曲线上 的点,P=(xp,yp),P∈Fq,是椭圆曲线上的一个固定点,被称为基点,具体值是已知的,P点有素数阶n。以上参数是椭圆曲线密码学中的运算参数,在椭圆曲线密码学中具有确定的含 义;在ECDSA算法中,素域Fq的阶q为算法定义的固定值,ECDSA计算宽度为256比特(bits) 时,n-0xFFFFFFFFFFFFFFFF 00000000FFFFFFFF 0000000000000000FFFFFFFF00000001。 素数阶n为算法定义的固定值,ECDSA计算宽度为256比特(bits)时,n- 0xF3B9CAC2FC632551BCE6FAADA7179E84FFFFFFFFFFFFFFFF FFFFFFFF00000000。

  H为一个密码哈希函数(SHA,国际通用哈希算法,可以输出0~512比特(bits)哈希值), d(0<d<n)为私钥,m为待签名消息;以上数据均以计算机可以识别的数据格式进行存储, 以待计算。下述过程中的mod表示数学计算中的求模运算。

  输出:签名结果(r,s),r、s表示经ECDSA签名算法计算输出的两个数值;

  本发明方法包括如下步骤:

  1)CPU每次等待一定时间(如1毫秒~1秒),汇总这段时间内收到的签名请求,获得i (1~2048)条待计算数据;

  2)CPU将i条待计算数据传送给GPU,通过GPU对多倍点运算进行并行计算;

  3)通过GPU并行执行ECDSA算法中的计算椭圆曲线多倍点运算,得到i个椭圆曲线点乘 结果;具体执行操作:对于第j(j∈[1,i])条数据,选择随机数kj∈[0,n-1];计算(xj,yj)=kjP; (xi,yj)即为多倍点结果。

  4)将GPU计算得到的多个椭圆曲线点乘结果(x1,y1)…(xi,yi)返回给CPU。

  5)CPU获得GPU计算得到的结果,继续进行下述计算,最终得到每条数据对应的签名消 息(每个签名消息对应一组(rj,sj),j∈[1,i]);对每一条数据,执行如下计算步骤:

  步骤51)计算rj=xj mod n,若rj(I,则将对应的原始数据返回到步骤1);

  步骤52)计算ej=H(mj),此处H()为哈希函数,采用的算法是国际通用哈希算法SHA256;

  步骤53)计若sj(I,则将对应的原始数据返回步骤1);

  步骤54)获得签名(rj,sj)。

  GPU进行椭圆曲线多倍点计算时,会将上述椭圆曲线多倍点的计算步骤拆解为4个有限 域运算层基础操作,如图3所示,ECDSA计算可以分解为点乘,点加,倍点三类操作,点乘 可分解为点加和倍点,点加和倍点又可以分解为更低层次的有限域运算,包括:1)模乘;2) 模平方;3)模加;4)模逆。其中,模逆算法的选择不当会导致GPU计算耗时巨大,进而整个系统性能受到冲击。当前常用的求模逆的算法是欧几里得算法,该算法程序分支过多,不利于在GPU上实现。针对模逆算法操作,本发明首次提出了在GPU平台使用费马小定理获得 高效的模逆计算速度。

  在CUDA环境下,GPU内执行的程序是以32个线程合为1组来运行的。如果在程序中遇 到分支语句,并且组内的某个或某几个线程与其余线程分支不同,则其余的线程通道被屏蔽, 迫使它们等待分支线程完成其工作,然后才能恢复执行,增加了程序完成的时间。如果所有 线程采用相同的执行路径,则不会受到屏蔽影响。

  费马小定理是数论中的一个重要定理,在1636年提出,其内容为:假如z是质数,l是 整数,且l和z互质,那么tz-1≡1 mod z;

  由费马小定理推导可得:tz-2≡t-1 mod z,即t-1≡tz-2 mod z

  在多倍点计算过程中,有质数p和∫(∫∈[1,p-1]),求∫-1:

  输入:质数p,整数∫(f∈[1,p-1])

  输出:f-1≡fp-2mod p

  注:mod是数学计算中求模的含义,由上式可以得到∫对于质数p的模逆值∫-1,∫-1即为 所求结果。

  与现有技术相比,本发明的有益效果是:

  现有技术由CPU按照ECDSA数字签名生成算法计算步骤顺序执行,其中的多倍点计算 复杂性比较高,比较耗时。本发明采用CPU和GPU协作方式进行ECDSA数字签名生成算 法计算,充分利用GPU架构的并行性,通过采用批量计算有效利用GPU计算资源,从而节 省了对待签名消息进行数字签名的计算时间,提高ECDSA数字签名生成算法的计算效率。 具体地,本发明具有包括以下几方面的技术优势:

  (一)运算速度快,相对于CPU单独计算有近10倍提升。

  (二)解决了GPU实现模逆算法的架构原因导致的运算效率低效问题。

  (三)随机数由GPU生成,有效节约CPU计算资源。

  (四)批量计算签名,可以最大限度利用GPU的计算资源,提升算效率。

  附图说明

  图1为本发明实施例提供的ECDS数字签名生成算法实现方法的流程框图。

  图2是本发明实施例采用CPU和GPU异构结构实现数字签名生成系统的模块数据流示意 图。

  图3是本发明实施例中GPU进行椭圆曲线多倍点计算时,将计算步骤拆解为4个有限域 运算层基础操作计算过程的示意图。

  具体实施方式

  下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。

  图1为本发明实施例提供的一种ECDSA算法中的数字签名生成算法实现方法的流程框图, 其具体步骤为:

  步骤101、CPU收集待签名的数据;

  步骤102、将ECDSA数字签名生成算法中的计算椭圆曲线点步骤由GPU计算得到;当计 算模逆操作时,使用费马小定理进行计算。

  在该步骤中,结果为椭圆曲线多倍点计算结果;

  步骤103、CPU根据ECDSA数字签名生成算法计算步骤对待签名消息顺序计算时,调用 GPU返回的多倍点计算结果,完成对待签名消息的数字签名。

  在图1中,步骤102由GPU执行。

  在图1中,步骤101和步骤103都是由CPU线程完成的,可以是同一CPU线程,也可以是不同的CPU线程。

  在图1中,GPU执行ECDSA数字签名生成算法中的计算椭圆曲线多倍点步骤时,可以由 一个GPU线程完成,也可以由多个GPU线程针对不同的数据同时计算完成。

  图2所示是上述实施例采用的模块数据流,采用CPU和GPU异构结构和协作方式,CPU 和GPU各负责一部分数据计算。其中,CPU计算单元采用Intel公司的X86指令集通用计算 机;GPU计算单元包括Nvidia公司支持CUDA运算的任意图形显示卡。数据流处理过程如下:

  步骤201:由CPU在一定时间内收集多条待签名信息;

  步骤202:CPU将每条签名过程中的多倍点计算信息合并发给GPU侧;

  步骤203:GPU将每条签名的多倍点计算完成,将结果一同返回给CPU;

  步骤204:CPU完成每条签名计算的剩余步骤,将结果返回给签名请求的来源方。

  步骤202中,GPU进行椭圆曲线多倍点计算时,将计算步骤拆解为4个有限域运算层基 础操作,如图3所示,ECDSA运算层表示椭圆曲线数字签名算法,算法主要计算步骤是多倍 点操作,即图示中的点乘运算,点乘运算是由点加和倍点运算组成。点加和倍点运算又是由 四类有限域运算构成:模乘,模平方,模加,模逆。这四类有限域运算是构成椭圆曲线数字 签名算法计算的基础运算步骤。

  其中,模逆算法的选择不当会导致GPU计算耗时巨大,进而整个系统性能受到冲击。当 前常用的求模逆的算法是欧几里得算法,该算法程序分支过多,不利于在GPU上实现。针对 模逆算法操作,本发明首次提出了在GPU平台使用费马小定理获得高效的模逆计算速度。

  具体实现伪代码如下所示:

  

  其中,第1行是变量初始化;第2~7行是一个循环体,根据v每个比特的值进行循环累乘 求模运算;第8行得到最终结果,g的值即是所求的f-1 mod p。对于GPU实现来说,计算模 逆运算最重要方面是所有线程执行相同的指令路径。算法中唯一的条件语句在第3行,vl表 示v的第l比特,它的值取决于素数p,在ECDSA算法中p的值就是椭圆曲线数字签名算法输 入参数组中的q,是固定值。因此素数p在所有线程中都是相同的,所以所有线程计算过程 中的指令执行路径完全相同。

  需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员 可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。 因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的 范围为准。

《基于GPU与CPU异构结构的椭圆曲线数字签名方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)