首页> 中国专利> 实现ECC密码体制中签名算法的大整数求模运算装置及求模方法

实现ECC密码体制中签名算法的大整数求模运算装置及求模方法

摘要

本发明公开了一种实现ECC密码体制中签名算法的大整数求模运算装置。它包括整数寄存器,模值寄存器,整数查找模块,模值查找模块,位数相减模块,移位寄存器,数据相减模块和输出模块。整数寄存器存储待求模整数a的值;模值寄存器存储模n的值;模值查找模块查找模n最高有效位所在的位数;整数查找模块查找整数寄存器中数据a的最高有效位所在的位数;通过位数相减模块求得整数a和模值n的最高有效位的位差值;当位差值大于0时,先由移位寄存器将数据n向左移位两次,再由数据相减模块将数据a和移位结果进行相减得到结果a′,并把整数寄存器中的数据a更新为a′;当位差值小于等于0时,由输出模块输出最终的求模结果。本发明较已知技术成本低,通用性强,效率高。

著录项

  • 公开/公告号CN101763241A

    专利类型发明专利

  • 公开/公告日2010-06-30

    原文格式PDF

  • 申请/专利权人 西安电子科技大学;

    申请/专利号CN201010013629.1

  • 申请日2010-01-20

  • 分类号G06F7/72;H04L9/32;

  • 代理机构陕西电子工业专利中心;

  • 代理人王品华

  • 地址 710071 陕西省西安市太白路2号

  • 入库时间 2023-12-18 00:14:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-08

    未缴年费专利权终止 IPC(主分类):G06F7/72 授权公告日:20120208 终止日期:20180120 申请日:20100120

    专利权的终止

  • 2012-02-08

    授权

    授权

  • 2010-08-25

    实质审查的生效 IPC(主分类):G06F7/72 申请日:20100120

    实质审查的生效

  • 2010-06-30

    公开

    公开

说明书

技术领域

本发明属于通信技术领域,涉及椭圆曲线密码体制ECC中的大整数求模运算装置,用于移动终端间通信的认证和不可否认服务的数字签名。

背景技术

当前的密码体制一般可划分为两种类型,即对称密码体制和公钥密码体制。

对称密码体制需要通信双方A和B共享同一密钥K,并且要保证A和B在协商密钥的时候,信道是保密且保真的。这就导致了它的密钥分发的问题和密钥的管理问题,除此之外由于两个或多个实体共享密钥,所以对称密钥体制不能实现用于认证和不可否认服务的数字签名。

与对称密码体制不同,公钥密码体制仅要求密钥的交换是保真的,并不要求其是保密的。每个实体选择一个密钥对,即公钥与私钥,其中公钥对外是公开的,私钥自己保密,这种密钥对需具备一个特点:仅由公钥不能计算出私钥。由于每一个实体都具有唯一的私钥,因此可以提供数据源和数据完整性的认证以及不可否认性服务。这样,公钥密码圆满地解决了上述对称密码面临的三个问题。

在公钥加密机制中,虽然基于大整数因子分解问题的加密机制RSA是目前主流的加密机制,但是RSA目前却面临着越来越严重的来自安全方面的挑战。第六届国际密码学会议对应用于公钥密码系统的加密算法推荐了两种:RSA算法和ECC算法。RSA算法的特点之一是数学原理简单,在工程应用中比较易于实现,但它的单位安全强度相对较低。椭圆曲线密码算法建立在深奥和复杂的数学理论之上,它的单位安全强度相对较高。这两种算法安全强度的比较如表1所示。

表1RSA和ECC安全密钥长度的比较

  攻破年限/Mips年  RSA密钥长度/bit  ECC密钥长度/bit  密钥长度比(RSA∶ECC)  104  512  106  5∶1  108  768  132  6∶1  1011  1024  160  7∶1  1020  2048  210  10∶1  1078  21000  600  35∶1

需要指出的是,由于ECC的复杂度较高,它的运算通常比较慢。需要找到一种用硬件来实现ECC密码体制的方案去提高运算速度。ECC密码体制主要是由有限域层、椭圆曲线层、椭圆曲线密码协议层和一些特殊功能算法组成的,见图2,其中有限域是基础,因此首先要找到一种适合硬件来实现的有限域。

有限域包括二进制域和素数域。二进制域里的元素都是用0和1表示,而构成二进制域有一种方法是采用正规基表示法,在正规基表示法下域中元素的加法、减法以及平方开方运算分别对应异或和移位操作,而这在硬件中如FPGA是非常容易实现的。但是即便作此选择,在椭圆曲线密码协议中,主要是ECDSA数字签名算法里,除了二进制域正规基下的运算之外,还有一部分是素数域的运算,而求模运算就是其中的一个关键步骤。

ECDSA的数字签名算法如下。

ECDSA签名的生成:

输入:参数组D=(q,FR,S,a,b,P,n,h),私钥d,消息m。

输出:签名(r,s)。

(1)选择k∈[1,n-1]。

(2)计算kP=(x1,y1),并将x1转换为整数

(3)计算若r=0,则跳至步骤(1)。

(4)计算e=H(m)。

(5)计算s=k-1(e+dr)mod n。若s=0,则跳至步骤(1)。

(6)返回(r,s)。

ECDSA签名的验证:

输入:参数组D=(q,FR,S,a,b,P,n,h),公钥Q,消息m,签名(r,s)。

输出:判断签名是否合法。

1)检验r和s是否区间[1,n-1]内的整数。若任何一个检验失败,则返回(“拒绝该签名”)。

2)计算e=H(m)。

3)计算w=s-1 mod n。

4)计算u1=ew mod n和u2=rw mod n。

5)计算X=u1P+u2Q。

6)若X=∞,则返回(“拒绝该签名”)。

7)将X的横坐标x1转换为整数;计算

8)若v=r,则返回(“接收该签名”);否则,返回(“拒绝该签名”)。

从上述ECDSA的数字签名算法中可以看出,生成算法里的第(3)步和第(5)步以及验证算法里的第3)步、第4)步和第7)步都需要用到素数域上的求模运算。在当今技术条件下,为了满足密码算法的安全性,密钥等参数的位宽至少要在160比特以上,而160比特位宽以上的素域求模运算就是一些大整数的求模运算,本发明所提及的大整数指的是160比特位宽以上的整数。

现有的求模技术主要有三种:第一种是依据求模的定义,通过将被求模量a循环多次减模n的方法去计算a mod n,这种方法理论上虽然简单通用,但是实际中并不适用于大整数间的求模,因为随着数据位宽的增大它的计算时间将会是一个天文数字,实际不可行;第二种是由美国标准与技术研究所NIST在数字签名标准中给出的一些特殊素域上的快速求模算法,但这些快速求模算法只能针对特殊情况使用,不具有一般性;第三种是Barrett约减方法,该方法具有通用性也适用于大整数,但是需要一种高成本的与模相关的计算来支持。如果不能找到一种通用有效且低成本的FPGA实现方法来提高大整数的求模运算效率,将无法体现出ECC在二进制域正规基表示下的硬件实现优势。

发明内容

本发明的目的在于克服上述已有技术的不足,提供一种实现ECC密码体制中签名算法的大整数求模运算装置及求模方法,以提高对数字签名过程中的大整数求模运算的效率,体现出ECC在二进制域正规基表示下的硬件实现优势。

为实现上述目的,本发明的大整数求模运算装置包括:

整数寄存器,用于存储待求模整数a的值,且在运算过程中更新a的值;

模值寄存器,用于存储模n的值,模值寄存器中的数据在运算过程中保持不变;

模值查找模块,用于查找模值寄存器中的数据模n在二进制表示形式下的最高有效位所在的位数,并记为count_n;

整数查找模块,用于查找整数寄存器中的数据a在二进制表示形式下的最高有效位所在的位数,并记为count_a;

位数相减模块,将count_a与count_n相减,求得两者的位差值count_c=count_a-count_n;

移位寄存器,根据所得位差值将模值寄存器中的数据n向左移位两次,以得到移位结果v和m,其中v=n<<count_c,m=n<<count_c-1;

数据相减模块,将整数寄存器中的数据a和移位寄存器的输出结果v或m进行相减,当a≥v时,得到相减后的结果a′=a-v,当a<v时,得到相减后的结果a′=a-m,并将整数寄存器中的数据a更新为a′;

输出模块,判断整数寄存器中的数据a与模值寄存器中的数据n的大小,并输出最终的求模运算的结果R,当a>n时R=0,当a=n时,R=a-n,当a<n时,R=a。

为实现上述目的,本发明实现ECC密码体制中签名算法的大整数求模方法,包括以下步骤:

步骤1:将ECDSA签名算法中产生的素数域上的位宽不小于160比特的大整数输入到整数寄存器中;

步骤2:将ECDSA签名算法里基点P的阶输入到模值寄存器中;

步骤3:查找模值寄存器中的数据模n在二进制表示形式下的最高有效位所在的位数,并记为count_n;

步骤4:查找整数寄存器中的数据a在二进制表示形式下的最高有效位所在的位数,并记为count_a;

步骤5:计算count_a与count_n之间的位差值count_c=count_a-count_n,当count_c≤0时,执行步骤8,当count_c>0时,执行步骤6;

步骤6:根据所得位差值count_c将模值寄存器中的数据n向左移位两次,以得到移位结果v和m,其中v=n<<count_c,m=n<<count_c-1;

步骤7:将整数寄存器中的数据a和移位结果v或m进行相减,当a≥v时,得到相减后的结果a′=a-v,当a<v时,得到相减后的结果a′=a-m,并将整数寄存器中的数据a更新为a′,返回步骤4;

步骤8:当整数寄存器中的数据a=n,输出最终结果R=0,当a>n,输出最终结果R=a-n,当a<n,输出最终结果R=a。

本发明具有如下优点:

1)本发明的求模方法由查找运算和减法运算组成,这两种运算的理论简单,易于实现,无需复杂的技术作为支持,较已知技术成本低;

2)本发明的求模方法对求模数据的位宽长度没有特殊要求,它适用于所有位宽长度的整数求模运算,较已知技术通用性强;

3)本发明的求模方法在计算a mod n时,整数寄存器中的数据a在每次更新后都至少可以降低一个有效位,当a的位宽是L,n的位宽是S时,理论上最慢经过L-S次循环操作之后,即可得到最终结果,较已知技术运算效率高。

附图说明

图1是已知椭圆曲线密码体制的整体结构示意图:

图2是本发明求模运算装置的结构示意图;

图3是本发明求模方法的流程图;

图4是本发明整数查找模块中查找表的结构示意图;

图5是本发明的仿真结果图。

具体实施方式

本发明的实际开发平台基于FPGA,但不限于FPGA。

参照图2,本发明的大整数求模运算装置,包括整数寄存器,模值寄存器,整数查找模块,模值查找模块,位数相减模块,移位寄存器,数据相减模块和输出模块。其中:

整数寄存器,首先用于存储系统外部输入的待求模的大整数a,并将该寄存器中的当前值输出给整数查找模块、数据相减模块和输出模块,此外该整数寄存器还需要保存数据相减模块完成运算后的输出结果a′,并在保存的同时将当前寄存器中的数据a更新为a′,但在数据相减模块未完成运算之前,整数寄存器中的数据保持a不变。整数寄存器的位宽定义为ECDSA签名算法中有限域元素的位宽的2倍。

模值寄存器,用于存储系统外部输入的整数模n,并将该整数模n输出给模值查找模块。模值寄存器的位宽与ECDSA签名算法中有限域元素的位宽相同。

整数查找模块,用于查找整数寄存器输入的数据a在二进制表示形式下的最高有效位所在的位数count_a,并将其输出给位数相减模块。整数查找模块中包含一个查找表,如图4所示。该查找表由0,1和任意态x组成,它是一个L*L规模的正方形矩阵,其中L为系统外部输入的大整数a的位宽,该查找表存储了整数寄存器中数据a的最高位存在的所有情况,在查找的时候如果数据a的形式对应表中的第一行,则输出count_a=L,如果数据a的形式对应表中的第二行,则输出count_a=L-1,如果数据a的形式对应表中的最后一行,则输出count_a=1。

模值查找模块,用于查找模值寄存器输入的数据n在二进制表示形式下的最高有效位所在的位数count_n,并将其输出给位数相减模块。模值查找模块中也包含一个查找表,该查找表和整数查找模块中的查找表在结构上是一样,不同的是模值查找模块中的查找表矩阵的边长等于数据模n的位宽,而整数查找模快中的查找表矩阵的边长是系统外部输入的大整数a的位宽。

位数相减模块,将整数查找模块的查找结果count_a与模值查找模块的查找结果count_n相减,求得两者的位差值count_c=count_a-count_n,然后输出给移位寄存器和输出模块。

移位寄存器,首先存储模值寄存器中的模值n,然后根据位数相减模块的输出结果count_c对模值n进行移位,移位分为两次,第一次将n<<count_c,即将n左移count_c位,得到移位结果v,第二次将n<<count_c-1,即将n左移count_c-1位,得到移位结果m,并将两次移位的结果v和m输出给整数相减模块。移位寄存器的位宽定义为ECDSA签名算法中有限域元素的位宽的2倍。

整数相减模块,包括一个判断模块和一个减法模块。该判断模块判断整数寄存器输入的数据a和移位寄存器的输出结果v的大小关系,并划分成a≥v和a<v两种情况,当a≥v时,由减法模块做减法运算,得到差值结果a′=a-v,当a<v时,由减法模块做减法运算,得到差值结果a′=a-m,并将a′输出给整数寄存器。

输出模块,包括一个判断模块和一个减法模块。该判断模块判断整数寄存器中的数据a与模值寄存器中的数据n的大小关系,并划分成a>n、a=n和a<n三种情况,当a>n时,直接输出最终的求模结果R=0,当a=n时,先由减法模块做减法运算R=a-n,再输出最终的求模结果R,当a<n时,直接输出最终的求模结果R=a。

基于上述大整数求模运算装置,本发明对大整数求模进行求模的基本思想是:只要保证在一次减法运算中被减数A与减数B做减法之后得到的结果r依然比B要大,则r1和rn在模B的条件下是相等的,其中r1是A减去1个B得到的差值结果,rn是A减去多个B得到的差值结果,例如A=23,B=3,则有A-B=20,A-2B=17,A-3B=14,很显然20,17和14这三个数在模3的条件下是相等的,其结果都等于2。因此,只要保证被减数A在减去B之后所得结果r依然比B要大,那么通过每次减去尽可能多的B,就可以做到在每次做完减法运算之后被减数A都至少可以减少一位有效位。将此思想用于计算a mod n,则当a的位宽是L,n的位宽是S时,理论上,最多采用L-S+1次减法运算,便可得到最终结果。

参照图3,本发明的大整数求模方法,包括如下步骤:

步骤1:初始化整数寄存器和模值寄存器中的数据为0。

步骤2:将ECDSA签名算法中产生的素数域上的位宽不小于160比特的大整数a输入到整数寄存器中,为了方便说明,设a的位宽是L,则在整数寄存器中a的表示形式为(al-1,al-2...a2,a1,a0)2

步骤3:将ECDSA签名算法里基点P的阶n输入到模值寄存器中,为了方便说明,设n的位宽是S,则在模值寄存器中n的表示形式为(ns-1,ns-2...n2,n1,n0)2

步骤4:将模值寄存器中的数据模n输入到模值查找模块中,查找模n在二进制表示形式下的最高有效位即ns-1所在的位数,并记为count_n。

步骤5:将整数寄存器中的数据a输入到整数查找模块中,查找数据a在二进制表示形式下的最高有效位即al-1所在的位数,并记为count_a。

步骤6:用位数减法模块计算count_a与count_n之间的位差值count_c=count_a-count_n,count_c的数值将作为一个判断条件来选择下一步的运算。当count_c≤0时,执行步骤9,当count_c>0时,执行步骤7。

步骤7:将模值寄存器中的数据n输入到移位寄存器中,并根据count_c将模值寄存器中的数据n向左移位两次,分别得到移位结果v和m,其中v=n<<count_c,即数据n左移count_c位,m=n<<count_c-1,即数据n左移count_c-1位。理论上,移位结果v和m是数据n的2次幂整数倍里最接近a当前值的两个数。

步骤8:将移位寄存器的移位结果v和m,整数寄存器里当前的数据a和模n寄存器里的数据模n全部输入到整数相减模块中,并做如下运算:

8.1)当a≥v,做减法a′=a-v运算,并将结果a′输出给整数寄存器,更新整数寄存器中的数据a为a′;

8.2)当a<v,做减法a′=a-m运算,并将结果a′输出给整数寄存器,更新整数寄存器中的数据a为a′;

经过本步骤的运算,整数寄存器中的数据a在数值上至少降低了一个有效位,返回到步骤5,即重新查找当前整数寄存器中的数据a的最高有效位。

步骤9:将整数寄存器中的数据a和模值寄存器中的数据n输入到输出模块,根据a和n的数值关系输出不同的求模结果R:

1)当a=n,直接输出最终结果R=0;

2)当a>n,先做一次减法运算求得R=a-n,然后输出最终结果R;

3)当a<n,直接输出最终结果R=a;

以上步骤5,步骤6,步骤7和步骤8这四个步骤为一次循环,每次循环在数值上至少可降低整数寄存器中数据a的一个有效位。在大整数a的位宽为L,模n的位宽是S的情况下,完成一次求模运算最多需要L-S个循环周期。如果按照一个时钟周期完成一个步骤的方式来计算,则完成一次求模运算最多需要4(L-S)+7个时钟周期。如此,在兆赫兹级的时钟下,百位宽的大整数做一次求模运算所需要的时间也是微秒级的。

本发明的效果可以通过以下仿真进一步说明:

本发明的大整数求模运算装置在软件Quartus2下进行仿真,仿真结果如图5所示。其中:

图5(a)是求模运算开始时刻的波形图,该图中输入端口a所示的200位宽长度的数据0xffffffffffffffffffffffffffffffffffffffffffffffffff即为输入到本发明整数寄存器中的大整数a;输入端口n所示的163位宽长度的数据0X4000000000000000000020108a2e0cc0d99f8a5ef即为输入到本发明模值寄存器中的数据模n,按照ECDSA算法的要求,该数据必须是一个素数;输入端口nEN为低电平的时候表示求模运算正式开始,从图5(a)中可以看出求模运算的开始时刻是450ns。

图5(b)是求模运算结束时刻的波形图,该图中输出端口R所示的163位宽长度的数据0x3ffffffffff7fbdd747cefda224b7504d99f8a5ee即为该求模运算的最终输出结果;输出端口nDONE为低电平的时候代表求模运算结束,从图5(b)中可以看出求模运算的结束时刻是15.85us。

本仿真的时钟为10Mhz即100ns,理论上,如果按照一个时钟周期完成一个步骤的方式来计算,该仿真最多耗时100*4*(200-163)ns+700ns=15500ns即155个时钟周期,实际仿真结果表明整个求模运算耗时15.4us,即154个时钟周期,与理论分析值基本一致。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号