首页> 中国专利> p元域SM2椭圆曲线的数字签名生成、验证及混合系统

p元域SM2椭圆曲线的数字签名生成、验证及混合系统

摘要

本发明涉及一种p元域SM2椭圆曲线的数字签名生成、验证及混合系统。该系统包括:将待签名消息m与签名方杂凑值ZA拼接成的m’发送到密码杂凑模块;将r=(e+x1)mod n计算得到的r发送到s生成模块;在r=0、r+k=n或s=0的情况下,通知随机数生成模块重新生成k;将r和s作为m的数字签名输出的签名控制中心;对m’进行密码杂凑运算生成拼接消息杂凑值e的密码杂凑模块;生成随机数k的随机数生成模块;对椭圆曲线的基G进行k倍点运算,将生成的坐标(x1,y1)作为运算结果[k]G的倍点运算模块;根据s=[(1+dA)-1·(k-r·dA)]mod n生成s的s生成模块;其中,n为椭圆曲线的阶,dA为签名方的私钥。本发明能用硬件实现SM2椭圆曲线公钥密码算法中的数字签名算法。

著录项

  • 公开/公告号CN102761415A

    专利类型发明专利

  • 公开/公告日2012-10-31

    原文格式PDF

  • 申请/专利权人 航天信息股份有限公司;

    申请/专利号CN201110107553.3

  • 申请日2011-04-27

  • 分类号H04L9/32(20060101);

  • 代理机构11139 北京科龙寰宇知识产权代理有限责任公司;

  • 代理人孙皓晨

  • 地址 100195 北京市海淀区杏石口路甲18号

  • 入库时间 2023-12-18 07:07:03

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-04-08

    授权

    授权

  • 2012-12-26

    实质审查的生效 IPC(主分类):H04L9/32 申请日:20110427

    实质审查的生效

  • 2012-10-31

    公开

    公开

说明书

技术领域

本发明涉及信息安全技术领域,特别是涉及一种p元域SM2椭圆曲线的数字签名生 成、验证及混合系统。

背景技术

随着通信技术和信息处理技术的发展,信息在传输过程中的安全性越来越受到关注, 需要通过信息处理技术来保证信息在通信过程中不被窃听、篡改和仿造。密码技术能很 好的解决这方面的要求。

自从1976年Diffie和Hellmann提出公钥密码体制的概念以来,出现了3类公认的 安全有效的公钥密码系统,其依赖的数学问题分别为整数因数分解问题(IFP)、离散对数 问题(DLP)和椭圆曲线离散对数问题(ECDLP),对应的算法依次是RSA算法、DSA数字签名 算法、椭圆曲线算法(ECC)。这三种问题均基于计算复杂性的NPC问题(Non-deterministic  Polynomial Complete problem)来保证密钥的安全性的。相对于另外两种算法,ECC的 安全性能更高、计算量更小,处理速度更快、在安全性相同的情况下所需要的密钥尺寸 更小、对带宽的要求更低,因此,ECC体制具有更为广阔的应用前景。

SM2椭圆曲线公钥密码算法是国家密码管理局发布的一种ECC算法,其包括数字签名 算法、密钥交换协议和公钥加密算法三部分。但国家密码管理局已公布的仅仅是SM2椭 圆曲线公钥密码算法的流程,目前尚未出现任何将其用硬件实现的硬件设备,难以将这 种优秀的算法付诸应用。

发明内容

本发明所要解决的技术问题是提供一种p元域SM2椭圆曲线的数字签名生成、验证 及混合系统,能用硬件来实现SM2椭圆曲线公钥密码算法中的数字签名算法。

本发明解决上述技术问题的技术方案如下:一种p元域SM2椭圆曲线的数字签名生 成系统,所述数字签名包括一号签名段r和二号签名段s;该系统包括:签名控制中心、 密码杂凑模块、随机数生成模块、倍点运算模块、s生成模块;其中,

所述签名控制中心用于,将待签名消息m与签名方杂凑值ZA进行拼接,将得到的拼 接消息m’发送到所述密码杂凑模块;根据r=(e+x1)mod n计算得到r;将r发送到所述 s生成模块;在r=0、r+k=n或s=0的情况下,通知所述随机数生成模块重新生成k; 将k发送到所述倍点运算模块、s生成模块;将r和s作为m的数字签名输出;

所述密码杂凑模块用于,对m’进行密码杂凑运算,将生成的拼接消息杂凑值e发送 到所述签名控制中心;

所述随机数生成模块用于,将生成的随机数k发送到所述签名控制中心;

所述倍点运算模块用于,对所述椭圆曲线的基G进行k倍点运算,将生成的坐标 (x1,y1)作为运算结果[k]G发送到所述签名控制中心;

所述s生成模块用于,根据s=[(1+dA)-1·(k-r·dA)]mod n生成s,将生成的s发送到 所述签名控制中心;

其中,n为所述椭圆曲线的阶,dA为签名方的私钥。

本发明的有益效果是:本发明中,由于签名控制中心可将待签名消息m与签名方杂 凑值ZA拼接为拼接消息m’,由密码杂凑模块对其进行杂凑运算,得到拼接消息杂凑值 e,随机数生成模块生成随机数k,倍点运算模块对椭圆曲线的基G进行k倍点运算,生 成坐标(x1,y1),这样,签名控制中心根据r=(e+x1)mod n即可得到r,如果该r满足 r=0和r+k=0均不成立,则该r即为m的数字签名中的一号签名段,否则,签名控制中心 通知随机数生成模块重新生成随机数k;s生成模块可根据s=[(1+dA)-1·(k-r·dA)]mod n生 成s,在s=0不成立的情况下,该s即为m的数字签名中的二号签名段。这样,签名控制 中心即可将r和s作为m的数字签名输出。因此,本发明能够用包括签名控制中心、密 码杂凑模块、随机数生成模块、倍点运算模块、s生成模块在内的硬件来实现SM2椭圆曲 线公钥密码算法中的数字签名算法。

本发明还提供了一种p元域SM2椭圆曲线的数字签名验证系统,该系统用于验证上 述的数字签名生成系统所生成的数字签名,该系统包括:验证控制中心、密码杂凑模块、 倍点运算模块、点加模块;其中,

所述验证控制中心用于,将接收的r’和s’作为所述数字签名生成系统输出的待验 证消息M’的数字签名;判断r’和s’是否均在1与(n-1)之间;将M’与签名方杂凑值 ZA’进行拼接,将得到的验证方拼接消息发送到所述密码杂凑模块;根据 t=(r′+s′)mod n确定t,判断t是否为0;将s’和t发送到所述倍点运算模块,将所述 倍点运算模块返回的[s′]G和[t]PA发送到所述点加模块;根据R=(e′+x1′)mod n确定R, 并判断R是否与r’相等;判断出r’不在1与(n-1)之间、s’不在1与(n-1)之间、t 为0、R与r’不相等中的任一情况时,输出数字签名验证不通过的消息,上述各情况均 不出现时,输出数字签名验证通过的消息;其中,n为所述椭圆曲线的阶;

所述密码杂凑模块用于,对进行密码杂凑运算,将生成的验证方拼接消息杂凑值 e’发送到所述验证控制中心;

所述倍点运算模块用于,对所述椭圆曲线的基G进行s’倍点运算,将得到的运算结 果[s′]G发送到所述验证控制中心;对签名方的公钥PA进行t倍点运算,将得到的运算 结果[t]PA发送到所述验证控制中心;

所述点加模块用于,对输入的[s′]G和[t]PA进行点加运算,将运算结果(x1′,y1′)发送 到所述验证控制中心。

另外,本发明还提供了一种p元域SM2椭圆曲线的数字签名生成、验证混合系统, 所述椭圆曲线的阶为n,基为G,签名方具有公钥PA和私钥dA;该系统包括:签名控制 中心、验证控制中心、随机数生成模块、s生成模块、密码杂凑模块、倍点运算模块、上 层复选模块、点加模块;所述密码杂凑模块、倍点运算模块均具有签名生成模式和签名 验证模式;其中,

所述签名控制中心用于,向所述上层复选模块发送签名生成模式信号;将待签名消 息m与签名方杂凑值ZA进行拼接,将得到的拼接消息m’通过所述上层复选模块发送到 所述密码杂凑模块;根据r=(e+x1)mod n计算得到r;将r发送到所述s生成模块;在 r=0、r+k=n或s=0的情况下,通知所述随机数生成模块重新生成k;将k发送到所述 s生成模块;将k通过所述上层复选模块发送到所述倍点运算模块;将r和s作为m的数 字签名输出;

所述验证控制中心用于,向所述上层复选模块发送签名验证模式信号;将接收的r’ 和s’作为所述数字签名生成系统输出的待验证消息M’的数字签名;判断r’和s’是 否均在1与(n-1)之间;将M’与签名方杂凑值ZA’进行拼接,将得到的验证方拼接消息 通过所述上层复选模块发送到所述密码杂凑模块;根据t=(r′+s′)mod n确定t,判 断t是否为0;将s’和t通过所述上层复选模块发送到所述倍点运算模块,将所述倍点 运算模块返回的[s′]G和[t]PA发送到所述点加模块;根据R=(e′+x1′)mod n确定R,并判 断R是否与r’相等;判断出r’不在1与(n-1)之间、s’不在1与(n-1)之间、t为0、 R与r’不相等中的任一情况时,输出数字签名验证不通过的消息,上述各情况均不出现 时,输出数字签名验证通过的消息;

所述密码杂凑模块用于,在所述签名生成模式下,对m’进行密码杂凑运算,将生成 的拼接消息杂凑值e通过所述上层复选模块的转发,送至所述签名控制中心;在所述签 名验证模式下,对进行密码杂凑运算,将生成的验证方拼接消息杂凑值e’通过所述 上层复选模块的转发,送至所述验证控制中心;

所述随机数生成模块用于,将生成的随机数k发送到所述签名控制中心;

所述倍点运算模块用于,在所述签名生成模式下,对G进行k倍点运算,将生成的 坐标(x1,y1)作为运算结果[k]G,通过所述上层复选模块的转发,送至所述签名控制中 心;在所述签名验证模式下,对G进行s’倍点运算,将得到的运算结果[s′]G通过所述 上层复选模块的转发,送至所述验证控制中心;对PA进行t倍点运算,将得到的运算结 果[t]PA通过所述上层复选模块的转发,送至所述验证控制中心;

所述s生成模块用于,根据s=[(1+dA)-1·(k-r·dA)]mod n生成s,将生成的s发送到 所述签名控制中心;

所述点加模块用于,对输入的[s′]G和[t]PA进行点加运算,将运算结果(x1′,y1′)发送 到所述验证控制中心;

所述上层复选模块用于,根据所述签名生成模式信号,将所述密码杂凑模块、倍点 运算模块的工作模式确定为签名生成模式;根据所述签名验证模式信号,将所述密码杂 凑模块、倍点运算模块的工作模式确定为签名验证模式。

附图说明

图1为国家密码管理局公布的SM2椭圆曲线公钥密码算法中的数字签名生成算法的 流程图;

图2为本发明提出的p元域SM2椭圆曲线的数字签名生成系统的结构图;

图3为本发明提出的p元域SM2椭圆曲线的数字签名生成系统中s生成模块的结构 图;

图4为本发明提出的p元域SM2椭圆曲线的数字签名生成系统中倍点运算模块的结 构图;

图5为国家密码管理局公布的SM2椭圆曲线公钥密码算法中的数字签名验证算法的 流程图;

图6为本发明提供的p元域SM2椭圆曲线的数字签名验证系统的结构图;

图7为本发明提供的p元域SM2椭圆曲线的数字签名验证系统中倍点运算模块的结 构图;

图8为本发明提供的p元域SM2椭圆曲线的数字签名验证系统中点加模块的结构图;

图9为本发明提供的p元域SM2椭圆曲线的数字签名生成、验证混合系统的结构图;

图10为本发明提供的p元域SM2椭圆曲线的数字签名生成、验证混合系统的最佳 实施例的结构图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非 用于限定本发明的范围。

图1为国家密码管理局公布的SM2椭圆曲线公钥密码算法中的数字签名生成算法的 流程图。在p元域中,椭圆曲线的方程为y2=x3+ax+b,这里的p为大于3的素数,a和b 均为p元域中的数值,且满足(4a3+27b2)mod p不为0。本发明中的椭圆曲线均指p元 域中的椭圆曲线。

数字签名是附加在待签名消息上的一些数据,或是对数据单元所作密码变换的结果, 在正常使用时,数字签名可提供如下服务:(1)确认数据的来源;(2)验证数据的完 整性;(3)保证签名方不能抵赖。

如图1所示,该算法包括以下步骤:

步骤101:已知椭圆曲线的基G、椭圆曲线的阶n、待签名的消息m、签名方的杂凑 值ZA、签名方公钥PA和私钥dA。

本步骤是一个预知量的确认步骤。其中,椭圆曲线的基G和阶n均为椭圆曲线公钥 密码算法中所述的椭圆曲线的特征量;待签名消息m为需要进行数字签名保护的消息, 即通常所说的数据明文;签名方杂凑值ZA是对签名方的可辨别标识及其长度、p元域椭 圆曲线方程中的参量a和b、G的横坐标和纵坐标、签名方公钥PA的横坐标和纵坐标拼 接之后的比特串进行密码杂凑计算后得到的杂凑值,这里的杂凑运算是将一个长度任意 的比特串映射为固定长度比特串(即杂凑值)的运算,该运算满足不可逆性和输入输出 单一性,可保证数据的安全。SM2椭圆曲线公钥密码算法是一种非对称加密算法,需要有 公钥和私钥两个密钥,私钥可解密被公钥加密了的数据,公钥也可解密被私钥加密了的 数据,dA和PA即为签名方的私钥和公钥。

步骤102:将ZA和m拼接为拼接消息m’。

该步骤是将ZA和m的比特串拼接起来,形成一个比特串,可将m拼接于ZA的末位 比特串的后面。

步骤103:对m’进行密码杂凑算法,得到拼接消息杂凑值e。

本步骤是进行密码杂凑运算的步骤,输出的e的长度可以为192比特,也可以为256 比特。

步骤104:产生1与(n-1)之间的随机数k。

本步骤是产生随机数k,该随机数必须小于椭圆曲线的阶n,且为正整数。

步骤105:对G进行k倍点运算,得到坐标(x1,y1)。

这里,k倍点运算是指对椭圆曲线上同一个点进行k次加的运算,该点为椭圆曲线上 的点,如本步骤中的椭圆曲线的基G,并且运算所得的结果也为该椭圆曲线上的点的坐标, 即本步骤得到的坐标(x1,y1)。

步骤106:根据r=(e+x1)mod n计算得到r。

这里,r为m的数字签名的一部分,本发明可称之为一号签名段。

步骤107:判断r=0或r+k=n是否成立。

这里,无论r=0成立还是r+k=n成立,还是二者均成立,都说明步骤104产生的k 不合适,因而在判断结果为是时,返回执行步骤104,否则,执行步骤108。

步骤108:根据s=[(1+dA)-1·(k-r·dA)]mod n计算得到s。

这里,s是m的数字签名的另一部分,本发明称之为二号签名段。

步骤109:判断s是否为0。

这里,s为0意味着步骤104生成的随机数k不合适,因而在判断结果为是时,返回 执行步骤104,否则,执行步骤110。

步骤110:将r和s作为m的数字签名输出。

这里,r和s可以组成一个报文输出,也可以与m同时输出。

对应于图1所示的数字签名生成算法,本发明提供了一种p元域SM2椭圆曲线的数 字签名生成系统,用于利用硬件来实现该算法。图2为本发明提出的p元域SM2椭圆曲 线的数字签名生成系统的结构图。这里的椭圆曲线为p元域中的椭圆曲线,其具有基G, 其阶为n。这里的数字签名是针对待签名消息m进行数字签名运算后生成的数字签名,包 括一号签名段r和二号签名段s。该系统中,签名方具有签名方私钥dA和签名方公钥PA, 其中,PA的横坐标xA和纵坐标yA已作为杂凑运算输入比特串的一部分,经过杂凑运算 汇入签名方杂凑值ZA。

如图2所示,该系统包括:签名控制中心201、密码杂凑模块204、随机数生成模块 202、倍点运算模块203、s生成模块205;其中,

签名控制中心201用于,将待签名消息m与签名方杂凑值ZA进行拼接,将得到的拼 接消息m’发送到密码杂凑模块204;根据r=(e+x1)mod n计算得到r;将r发送到s生 成模块205;在r=0、r+k=n或s=0的情况下,通知随机数生成模块202重新生成k; 将k发送到倍点运算模块203、s生成模块205;将r和s作为m的数字签名输出;

密码杂凑模块204用于,对m’进行密码杂凑运算,将生成的拼接消息杂凑值e发送 到签名控制中心201;

随机数生成模块202用于,将生成的随机数k发送到签名控制中心201;

倍点运算模块203用于,对椭圆曲线的基G进行k倍点运算,将生成的坐标(x1,y1) 作为运算结果[k]G发送到签名控制中心201;

s生成模块205用于,根据s=[(1+dA)-1·(k-r·dA)]mod n生成s,将生成的s发送到 签名控制中心201。

这里,签名控制中心将待签名消息m与签名方杂凑值ZA进行拼接的运算与图1中的 步骤102相对应,是将ZA和m的比特串拼接起来形成一个比特串的运算,可以是将m拼 接于ZA的末位比特串的后面。签名控制中心根据r=(e+x1)mod n计算得到一号签名段r 的功能是与图1中的步骤106相对应的,在r=0、r+k=n或s=0的情况下,通知随机数 生成模块重新生成k,是与步骤107和109相对应的,签名控制中心可以设置判断的顺序, 从而使步骤107和109分开执行。签名控制中心将r和s作为m的数字签名输出,是与 图1中的步骤110相对应的。由此可见,签名控制中心是整个系统的控制核心,具有安 排各模块的工作时序、判断生成的数字签名的合法性、输出数字签名等功能,它还具有 数据、控制命令的接收功能。

本发明中的mod为求模运算符,执行的是求模运算。

密码杂凑模块用于对m’进行密码杂凑运算,生成拼接消息杂凑值e,这与图1中的 步骤103对应。这里的密码杂凑运算所生成的杂凑值e可以为192比特,也可以为256 比特,从而满足不同的需求。

随机数生成模块生成随机数k是与图1中的步骤104对应的,k必须小于椭圆曲线的 阶n,且为正数。这里的随机数生成模块可以采用国家密码管理局批准使用的随机数发生 器,其能随机生成随机数。

倍点运算模块对椭圆曲线的基G进行k倍点运算,将生成的坐标(x1,y1)作为运算 结果[k]G是与图1中的步骤105对应的,这里的运算结果(x1,y1)也是该椭圆曲线上的 点的坐标,k是随机产生的1与(n-1)之间的数字,倍点运算模块的运算结果均为椭圆 曲线上的点的坐标。

s生成模块根据s=[(1+dA)-1·(k-r·dA)]mod n生成二号签名段s的运算,是与步骤108 相对应的。

由此可见,系统中的相应模块在预知椭圆曲线的基G、椭圆曲线的阶n、待签名的消 息m、签名方的杂凑值ZA、签名方公钥PA和私钥dA的前提下(与图1中的步骤101相 对应),该系统中的各模块可以分别执行图1中的各步骤,由签名控制中心来安排各模块 的工作时序,从而使各模块可以按照图1所示的算法流程来工作,从而根据SM2椭圆曲 线公钥密码算法中的数字签名生成算法,生成待签名消息的数字签名r和s。

本发明中,由于签名控制中心可将待签名消息m与签名方杂凑值ZA拼接为拼接消息 m’,由密码杂凑模块对其进行杂凑运算,得到拼接消息杂凑值e,随机数生成模块生成 随机数k,倍点运算模块对椭圆曲线的基G进行k倍点运算,生成坐标(x1,y1),这样, 签名控制中心根据r=(e+x1)mod n即可得到r,如果该r满足r=0和r+k=0均不成立, 则该r即为m的数字签名中的一号签名段,否则,签名控制中心通知随机数生成模块重 新生成随机数k;s生成模块可根据s=[(1+dA)-1·(k-r·dA)]mod n生成s,在s=0不成立的 情况下,该s即为m的数字签名中的二号签名段。这样,签名控制中心即可将r和s作 为m的数字签名输出。因此,本发明能够用包括签名控制中心、密码杂凑模块、随机数 生成模块、倍点运算模块、s生成模块在内的硬件来实现SM2椭圆曲线公钥密码算法中的 数字签名算法。

由于本发明提供的系统能够从硬件上实现SM2椭圆曲线公钥密码算法中的数字签名 算法,因而运算速度要比软件实现更为快速,也更为安全。

另外,由于本发明提供的系统能够从硬件上实现SM2椭圆曲线公钥密码算法中的数 字签名算法,可用比现有技术更小的计算量、更快的速度、更小的密钥尺寸、更低的带 宽来保证数据传输的安全,因而本发明具有广阔的应用前景。

图2中的s生成模块205是在签名控制中心201安排的时序的控制下,根据 s=[(1+dA)-1·(k-r·dA)]mod n生成s,并将生成的s发送到签名控制中心201。其根据 s=[(1+dA)-1·(k-r·dA)]mod n进行的运算包括:对(1+dA)的求逆运算、对r与dA的标 量乘运算、k与(r·dA)之间的减法运算、对(1+dA)-1和(k-r·dA)的标量乘运算,由于椭圆 曲线所在的p元域是在仿射坐标系下的有限域,进行这些运算比较复杂,会耗费大量的 时间,因而需要转换到其他合适的运算环境下进行相应的运算,例如在蒙哥马利域中进 行运算,这可以提高运算速度,提高数字签名生成的效率。

图3为本发明提出的p元域SM2椭圆曲线的数字签名生成系统中s生成模块的结构 图。如图3所示,s生成模块205包括:s生成控制子模块301、域转换子模块302、蒙 哥马利域乘法子模块303、有限域求逆子模块304;

s生成控制子模块301用于,接收签名控制中心201发送的r和k在有限域的值;将 (1+dA)在有限域的值发送到有限域求逆子模块304;将r、dA、(1+dA)-1和k在有限域的 值发送到域转换子模块302;将r和dA各自在蒙哥马利域的值发送到蒙哥马利域乘法子 模块303,用k在蒙哥马利域的值与其返回的(r·dA)在蒙哥马利域的值进行减法运算,得 到(k-r·dA)在蒙哥马利域的值;将(1+dA)-1和(k-r·dA)各自在蒙哥马利域的值发送到蒙哥 马利域乘法子模块303,并将其返回的[(1+dA)-1·(k-r·dA)]在仿射坐标系的值与1发送到 蒙哥马利域乘法子模块303;将s=[(1+dA)-1·(k-r·dA)]mod n在有限域的值s发送到签名 控制中心201;

域转换子模块302用于,将(1+dA)-1、r、dA和k在有限域的值分别转换为各自在蒙 哥马利域的值,发送到s生成控制子模块301;

蒙哥马利域乘法子模块303用于,对r和dA二者在蒙哥马利域的值进行蒙哥马利域 乘法运算,将得到的(r·dA)在蒙哥马利域的值返回s生成控制子模块301;将(1+dA)-1和 (k-r·dA)二者在蒙哥马利域的值进行蒙哥马利域乘法运算,将得到的[(1+dA)-1·(k-r·dA)] 在仿射坐标系的值返回s生成控制子模块301;对[(1+dA)-1·(k-r·dA)]在仿射坐标系的值 与1进行蒙哥马利域乘法运算,将得到的s=[(1+dA)-1·(k-r·dA)]mod n在在有限域的值s 发送到s生成控制子模块301;这里,由于对(1+dA)-1和(k-r·dA)二者在蒙哥马利域的值 进行蒙哥马利域乘法的运算结果为[(1+dA)-1·(k-r·dA)]在有限域的值,这意味着其必然不 超过n,因而也隐含了其对n进行的求模运算,因此,蒙哥马利域乘法子模块303可将 [(1+dA)-1·(k-r·dA)]在有限域的值作为s=[(1+dA)-1·(k-r·dA)]mod n在有限域的值s发送 到s生成控制子模块301。

有限域求逆子模块304用于,对(1+dA)在有限域的值进行求逆运算,将得到的 (1+dA)-1在有限域的值发送到s生成控制子模块301。

本发明中的求逆运算满足如下运算规则:如果有限域中的变量u和v的标量乘积满 足u·v=1 mod n,则变量u称为v的逆变量,记为v=u-1

由此可见,该s生成模块利用有限域求逆子模块,对(1+dA)在有限域的值进行求逆 运算,得到其在有限域的逆值(1+dA)-1,然后将数据,如r、dA、(1+dA)-1和k,发送到域 转换子模块,将数据从有限域转换到蒙哥马利域,进而将这些数据发送到蒙哥马利域乘 法子模块,实现其在蒙哥马利域的标量乘运算,并得到乘积在有限域的值,标量乘运算 结束后,s生成控制子模块即可将得到的s在有限域的值返回到签名控制中心。这里的s 生成控制子模块是生成s的控制核心,其具有接收与输出数据、在各模块间传送数据、 控制各模块的运算时序的功能。

图2中的倍点运算模块203实现的是对椭圆曲线的基G进行k倍点运算的功能,k 倍点运算是对椭圆曲线上同一个点进行k次加的运算,这里进行k次加运算的点为椭圆 曲线的基G。要在仿射坐标系下的有限域中对椭圆曲线上的点进行k倍点运算比较复杂, 运算量很大,因而耗时很长,与s生成模块的处理方式相似,本发明也可以将k倍点运 算中的各分运算变换到其他合适的环境中进行,例如,变换到射影坐标系下的蒙哥马利 域中进行,这样有利于提高运算速度,提高本发明的数字签名生成效率。

图4为本发明提出的p元域SM2椭圆曲线的数字签名生成系统中倍点运算模块的结 构图。如图4所示,倍点运算模块203包括:倍点运算控制子模块401、域转换子模块 406、蒙哥马利域乘法子模块404、射影系点加子模块402、射影系二倍点运算子模块403、 有限域求逆子模块405;其中,

倍点运算控制子模块401用于,将G在仿射坐标系下的坐标(x,y)转换为射影坐标 系下的坐标(x2,y2,1),并将x2、y2、1发送到域转换子模块406;将(x3,y3,z3)作 为[k]G在蒙哥马利域的坐标(x1,y1,z1)的初始值;确定k的二进制比特长度L;将k 的二进制形式中的次高比特位作为其当前比特位的初始值,从k的二进制形式中的次高 比特位开始,每次降低一个比特位作为当前比特位,直至其最低比特位为止,进行(L-1) 次迭代运算;将(L-1)次迭代运算的结果坐标(x1,y1,z1)中的z1发送到蒙哥马利域 乘法子模块404;将蒙哥马利域乘法子模块404返回的z1在有限域的值发送到有限域求 逆子模块405;将有限域求逆子模块405返回的z1-1在有限域的值发送到域转换子模块 406;将(L-1)次迭代运算的结果坐标(x1,y1,z1)中的x1、y1以及z1-1各自在蒙哥马 利域的值发送到蒙哥马利域乘法子模块404,并将其返回的x1、y1二者在仿射坐标系的 值分别与1发送到蒙哥马利域乘法子模块404;将蒙哥马利域乘法子模块404返回的x1、 y1二者在有限域的值作为[k]G在有限域的坐标(x1,y1)发送到签名控制中心201;其中 的一次迭代运算包括:将当前的(x1,y1,z1)发送到射影系二倍点运算子模块403、在当 前比特位为二进制1的情况下,将射影系二倍点运算子模块403返回的输出坐标发送到 射影系点加子模块402;

域转换子模块406用于,将x2、y2、1在有限域的值分别转换为各自在蒙哥马利域 的值x3、y3、z3,并将其返回倍点运算控制子模块401;将z1-1在有限域的值转换为其在 蒙哥马利域的值,并将其返回倍点运算控制子模块401;

射影系点加子模块402用于,将输入坐标与(x3,y3,z3)进行点加运算,将运算结 果发送到倍点运算控制子模块401;

射影系二倍点运算子模块403用于,对输入坐标进行二倍点运算,将运算结果作为 输出坐标返回至倍点运算控制子模块401;

蒙哥马利域乘法子模块404用于,对z1与1进行蒙哥马利域乘法运算,将得到的z1 在有限域的值发送到倍点运算控制子模块401;对x1与z1-1二者在蒙哥马利域的值、y1 与z1-1二者在蒙哥马利域的值分别进行蒙哥马利域乘法运算,将得到的x1、y1二者在仿 射坐标系的值返回倍点运算控制子模块401;将倍点运算控制子模块401发送的x1、y1 二者在仿射坐标系的值分别与1进行蒙哥马利域乘法运算,将得到的x1、y1二者在有限 域的值返回到倍点运算控制子模块401;

有限域求逆子模块405用于,对z1在有限域的值进行求逆运算,将得到的z1-1在有 限域的值发送到倍点运算控制子模块401。

由此可见,倍点运算模块203对G进行k倍点运算的方法为:倍点运算控制子模块 将G在仿射坐标系下的坐标(x,y)转换为射影坐标系下的坐标(x2,y2,1),各坐标均 为有限域中的值,然后由域转换子模块将有限域的值x2,y2,1分别变换为蒙哥马利域的 值x3、y3、z3,这样,就可以方便地进行接下来的迭代计算了。该迭代计算的过程包括 初始的赋值阶段和(L-1)次迭代计算阶段,初始的赋值阶段包括:将蒙哥马利域的坐标 (x3,y3,z3)作为[k]G在蒙哥马利域的坐标(x1,y1,z1)的初始值;确定k的二进制比 特长度L;将k的二进制形式中的次高比特位作为k的当前比特位的初始值(这里,k的 二进制形式中,k的最高比特位为二进制数1);后续的(L-1)次迭代计算阶段要进行 (L-1)次迭代运算,该迭代运算用k的二进制形式中比特位的序号为循环变量,该循环 变量的初始值即为上述的k的二进制形式中的次高比特位,移动方向是向着最低比特位 的方向,每次移动的数量为1,即循环变量每次向着最低比特位的方向移动一个比特位, 同时,k的当前比特位随着循环变量的变化,也是从k的二进制形式中次高比特位起逐渐 变为最低比特位,每次变化也是一个比特位。迭代过程是在射影坐标系下的蒙哥马利域 中进行的。一次迭代运算过程包括:将当前的坐标(x1,y1,z1)发送到射影系二倍点运 算子模块,使其对输入坐标进行一次二倍点运算,将运算结果返回倍点运算控制子模块; 在k的当前比特位为二进制数1的情况下,将射影系二倍点运算子模块返回的结果发送 到射影系点加子模块,使其对输入坐标与(x3,y3,z3)进行一次点加运算,将结果返回 至倍点运算控制子模块。在(L-1)次迭代运算结束之后,需要对运算结果坐标(x1,y1,z1) 中的z1进行求逆运算,以便将x1和y1变换回仿射坐标系下的有限域数据输出,本发明 中,倍点运算控制子模块将z1送入蒙哥马利域乘法子模块,使其对z1与1进行蒙哥马 利域乘法运算,得到z1在有限域的值,然后由有限域求逆子模块在有限域内对该值进行 求逆运算,得到z1-1在有限域的值,再由域转换子模块对该值进行变换,变为z1-1在蒙哥 马利域的值。经过该运算,即可将x1、y1以及z1-1在蒙哥马利域的值发送到蒙哥马利域 乘法子模块,由其分别对x1与z1-1在蒙哥马利域的值、y1与z1-1在蒙哥马利域的值分别 进行蒙哥马利域乘法运算,得到x1、y1二者在仿射坐标系的值,然后将x1、y1二者在 仿射坐标系的值分别与1进行蒙哥马利域乘法运算,最终得到x1、y1二者在有限域的值, 这样,倍点运算模块203就通过对G的k倍点运算,得到了椭圆曲线上的一个点的坐标 (x1,y1),这里的x1和y1均为仿射坐标系下有限域中的值。

该倍点运算过程中,倍点运算控制子模块是控制核心,负责数据在模块间的发送与 接收、各模块工作时序的安排、计算结果的输出等。

上述的p元域SM2椭圆曲线的数字签名生成系统生成了待签密消息m的数字签名r 和s,就需要有专门的签名验证系统来对其进行验证,从而判断数据传输过程中的安全与 否。为此,国家密码管理局也公布了SM2椭圆曲线公钥密码算法中的数字签名验证算法。 图5为国家密码管理局公布的SM2椭圆曲线公钥密码算法中的数字签名验证算法的流程 图。如图5所示,该算法包括以下步骤:

步骤501:已知椭圆曲线的基G、椭圆曲线的阶n、待验证消息M’、验证方杂凑值 ZA’、签名方公钥PA、待验证的数字签名r’和s’。

与图1中的步骤101相似,本步骤也是一个预知量的确认步骤。其中,椭圆曲线的 基G和阶n与步骤101所述的相同,均为椭圆曲线公钥密码算法中所述的椭圆曲线的特 征量;待验证消息M’为需要进行数字签名验证的消息,即通常所说的数据密文,该数字 签名验证算法即用于对M’的真实性进行验证,如果通过验证,说明M’由签名方传来且 未被中途篡改的事实是可信的,否则,验证不通过,则说明M’可能不是由签名方传来的, 或者中途被截获、篡改、仿造过,因而是不可信的;与签名方杂凑值ZA的运算相同,验 证方杂凑值ZA’也是对签名方的可辨别标识及其长度、p元域椭圆曲线方程中的参量a 和b、G的横坐标和纵坐标、签名方公钥PA的横坐标和纵坐标拼接之后的比特串进行密 码杂凑运算后得到的杂凑值,这里的密码杂凑运算与步骤101中所述的密码杂凑运算完 全相同。与数字签名生成算法中的步骤101不同,数字签名验证算法中需要预知的参量 还包括待验证的数字签名r’和s’,该数字签名为验证方接收得到的,与M’相对应,其中 的r’可认为是待验证数字签名的一号签名段,s’可认为是待验证数字签名的二号签名段。

步骤502:判断r’是否在1与n-1之间。

这里,r’必须小于椭圆曲线的阶n,且为大于0的正整数,因此,如果r’不位于1 与n-1之间,则执行步骤512,判断验证不通过,否则,执行步骤503。

步骤503:判断s’是否在1与n-1之间。

这里,与r’相同,s’也必须小于椭圆曲线的阶n,且为大于0的正整数,因此, 如果s’不位于1与n-1之间,则执行步骤512,判断验证不通过,否则,执行步骤504。

步骤504:将ZA’与M’拼接为验证方拼接消息。

本步骤执行的是拼接运算,将M’拼接于ZA’最末比特位的后面。

步骤505:对验证方拼接消息进行密码杂凑运算,得到验证方拼接消息杂凑值e’。

本步骤是进行密码杂凑运算的步骤,输出的e’的长度可以为192比特,也可以为 256比特。

步骤506:根据t=(r′+s′)mod n计算t。

步骤507:判断t是否为0。

这里,如果判断结果为t=0成立,则执行步骤512,判断为验证不通过,否则,执行 步骤508。

步骤508:根据计算(x1’,y1’)=[s’]G+[t]PA计算坐标(x1’,y1’)。

这里的[s’]G和[t]PA分别为对G的s’倍点运算和对PA的t倍点运算,由于运算 结果均为点的坐标,因而其中的加号为点加运算。

步骤509:根据R=(e′+x1′)mod n确定R。

步骤510:判断R是否与r’相等。

该步骤的判断结果如果为是,则执行步骤511,判断验证通过,否则执行步骤512, 判断为验证不通过。

步骤511:判断为验证通过。

步骤512:判断为验证不通过。

该算法是与图1所示的数字签名生成算法相对应的数字签名验证算法,现有技术也 尚未出现任何可以实现该数字签名验证算法的硬件设备。

与上述的p元域SM2椭圆曲线的数字签名生成系统相对应,本发明提出了一种p元 域SM2椭圆曲线的数字签名验证系统,用于验证图2所述的p元域SM2椭圆曲线的数字 签名生成系统所生成的数字签名r和s。

图6为本发明提供的p元域SM2椭圆曲线的数字签名验证系统的结构图。如图6所 示,该系统包括:验证控制中心601、密码杂凑模块602、倍点运算模块603、点加模块 604;其中,

验证控制中心601用于,将接收的r’和s’作为数字签名生成系统输出的待验证消 息M’的数字签名;判断r’和s’是否均在1与(n-1)之间;将M’与签名方杂凑值ZA’ 进行拼接,将得到的验证方拼接消息发送到密码杂凑模块602;根据t=(r′+s′)mod n 确定t,判断t是否为0;将s’和t发送到倍点运算模块603,将倍点运算模块603返 回的[s′]G和[t]PA发送到点加模块604;根据R=(e′+x1′)mod n确定R,并判断R是否与 r’相等;判断出r’不在1与(n-1)之间、s’不在1与(n-1)之间、t为0、R与r’不相 等中的任一情况时,输出数字签名验证不通过的消息,上述各情况均不出现时,输出数 字签名验证通过的消息;其中,n为椭圆曲线的阶;

密码杂凑模块602用于,对进行密码杂凑运算,将生成的验证方拼接消息杂凑值 e’发送到验证控制中心601;

倍点运算模块603用于,对椭圆曲线的基G进行s’倍点运算,将得到的运算结果 [s′]G发送到验证控制中心601;对签名方的公钥PA进行t倍点运算,将得到的运算结果 [t]PA发送到验证控制中心601;

点加模块604用于,对输入的[s′]G和[t]PA进行点加运算,将运算结果(x1′,y1′)发送 到验证控制中心601。

该系统中,验证控制中心是实现数字签名验证算法的控制核心,其负责安排各模块 的工作时序、在各模块间交换数据、接收数据、验证数字签名的真实性等。密码杂凑模 块是实现密码杂凑运算的模块,倍点运算模块是实现倍点运算的模块,点加模块是实现 点加运算的模块,这些模块均在验证控制中心的控制下工作,从而实现数字签名验证算 法。

在已知椭圆曲线的基G、椭圆曲线的阶n、签名方公钥PA,已获得验证方杂凑值ZA’, 并接收到待验证消息M’、待验证的数字签名r’和s’(与步骤501对应)的情况下, 验证控制中心可判断r’和s’是否均在1与(n-1)之间,从而实现步骤502和503的功 能;验证控制中心还将M’与验证方杂凑值ZA’进行拼接,实现步骤504的功能;验证 控制中心将验证方拼接消息发送到密码杂凑模块,使其对进行密码杂凑运算,生 成验证方拼接消息杂凑值e’,这与步骤505对应;验证控制中心根据t=(r′+s′)mod n确 定t,并判断t是否为0,可实现步骤506和507的功能;验证控制中心将s’和t发送 到倍点运算模块,使其分别对G和PA进行s’倍点运算和t倍点运算,然后将两个返回 结果发送到点加模块,使其对两个返回结果进行点加运算,得到运算结果(x1′,y1′),实现 步骤508的功能;验证控制中心根据R=(e′+x1′)mod n确定R,并判断R是否与r’相等, 从而可以实现步骤509和510的功能;当出现r’不在1与(n-1)之间、s’不在1与(n-1) 之间、t为0、R与r’不相等中的任一情况时,验证控制中心输出数字签名验证不通过 的消息,否则,上述任一情况均不出现,则输出数字签名验证通过的消息,这与步骤512 和511分别对应。由此可见,图6所示的数字签名验证系统能够实现图5所示的数字签 名验证算法。

与图2所示的数字签名生成系统相似,该数字签名验证系统中的倍点运算模块也是 进行倍点运算的模块,其实现的是对G进行s’倍点运算和对PA进行t倍点运算。

图7为本发明提供的p元域SM2椭圆曲线的数字签名验证系统中倍点运算模块的结 构图。如图7所示,该倍点运算模块603包括:倍点运算控制子模块701、域转换子模块 702、蒙哥马利域乘法子模块706、射影系点加子模块705、射影系二倍点运算子模块704、 有限域求逆子模块703;其中,

倍点运算控制子模块701用于,将G、PA在仿射坐标系下的坐标(x2’,y2’)、 (x5’,y5’)分别转换为射影坐标系下的坐标(x3’,y3’,1)、(x6’,y6’,1),并 分别将x3’、y3’、1和x6’、y6’、1发送到域转换子模块702;将(x4’,y4’,z4’) 和(x7’,y7’,z7’)分别发送到射影系点加子模块705,并将其分别作为[s′]G和[t]PA 在蒙哥马利域的坐标(x11’,y11’,z11’)和(x12’,y12’,z12’)的初始值;分别 确定s’和t的二进制比特长度LA和LB;分别将LA和LB的二进制形式中的次高比特位 作为各自当前比特位的初始值,并分别从各自的次高比特位开始,每次降低一个比特位 作为各自的当前比特位,直至各自的最低比特位为止,分别进行(LA-1)和(LB-1)次 迭代运算;分别将(LA-1)和(LB-1)次迭代运算的结果坐标(x11’,y11’,z11’)和 (x12’,y12’,z12’)中的z11’和z12’发送到蒙哥马利域乘法子模块706;分别将蒙 哥马利域乘法子模块706返回的z11’和z12’在有限域的值发送到有限域求逆子模块 703;分别将有限域求逆子模块703返回的z11′-1和z12′-1在有限域的值发送到域转换子模 块702;将(LA-1)次迭代运算的结果坐标(x11’,y11’,z11’)中的x11’,y11’以 及z11′-1在蒙哥马利域的值发送到蒙哥马利域乘法子模块706,将其返回的x11’、y11’ 二者在仿射坐标系的值分别与1发送到蒙哥马利域乘法子模块706;将(LB-1)次迭代运 算的结果坐标(x12’,y12’,z12’)中的x12’,y12’以及z12′-1在蒙哥马利域的值发 送到蒙哥马利域乘法子模块706,将其返回的x12’、y12’二者在仿射坐标系的值分别 与1发送到蒙哥马利域乘法子模块706;将蒙哥马利域乘法子模块706返回的x11’、y11’ 二者在有限域的值作为[s′]G在有限域的坐标(x11’,y11’)发送到验证控制中心;将 蒙哥马利域乘法子模块706返回的x12’、y12’二者在有限域的值作为[t]PA在有限域的 坐标(x12’,y12’)发送到验证控制中心601;其中的一次迭代运算包括:分别将[s′]G 和[t]PA的坐标(x11’,y11’,z11’)、(x12’,y12’,z12’)的当前值发送到射影系 二倍点运算子模块704、在s’的当前比特位为二进制1的情况下,将射影系二倍点运算 子模块704返回的(x11’,y11’,z11’)的当前值发送到射影系点加子模块705、在t 的当前比特位为二进制1的情况下,将射影系二倍点运算子模块704返回的 (x12’,y12’,z12’)的当前值发送到射影系点加子模块705;

域转换子模块702用于,分别将x3’、y3’、1和x6’、y6’、1在有限域的值转 换为各自在蒙哥马利域的值x4’、y4’、z4’和x7’、y7’、z7’,并将其返回倍点 运算控制子模块701;分别将z11′-1和z12′-1在有限域的值转换为其在蒙哥马利域的值, 并将其返回倍点运算控制子模块701;

射影系点加子模块705用于,将输入的(x11’,y11’,z11’)的当前值与 (x4’,y4’,z4’)进行点加运算,将运算结果作为新的(x11’,y11’,z11’)的当前 值发送到倍点运算控制子模块701;将输入的(x12’,y12’,z12’)的当前值与 (x7’,y7’,z7’)进行点加运算,将运算结果作为新的(x12’,y12’,z12’)的当前 值发送到倍点运算控制子模块701;

射影系二倍点运算子模块704用于,对输入的[s′]G和[t]PA的坐标 (x11’,y11’,z11’)、(x12’,y12’,z12’)的当前值分别进行二倍点运算,将运 算结果分别作为(x11’,y11’,z11’)和(x12’,y12’,z12’)的当前值返回至倍点 运算控制子模块701;

蒙哥马利域乘法子模块706用于,对z11’与1进行蒙哥马利域乘法运算,将得到的 z11’在有限域的值发送到倍点运算控制子模块701;对z12’与1进行蒙哥马利域乘法 运算,将得到的z12’在有限域的值发送到倍点运算控制子模块701;对x11’与z11′-1各 自在蒙哥马利域的值、y11’与z11′-1各自在蒙哥马利域的值分别进行蒙哥马利域乘法运 算,将得到的x11’、y11’二者在仿射坐标系的值返回倍点运算控制子模块701;将倍 点运算控制子模块701发送的x11’、y11’二者在仿射坐标系的值分别与1进行蒙哥马 利域乘法运算,将得到的x11’、y11’二者在有限域的值返回到倍点运算控制子模块701; 对x12’与z12′-1二者在蒙哥马利域的值、y12’与z12′-1二者在蒙哥马利域的值分别进行 蒙哥马利域乘法运算,将得到的x12’、y12’二者在仿射坐标系的值返回倍点运算控制 子模块701;将倍点运算控制子模块701发送的x12’、y12’二者在仿射坐标系的值分 别与1进行蒙哥马利域乘法运算,将得到的x12’、y12’二者在有限域的值返回到倍点 运算控制子模块701;

有限域求逆子模块703用于,分别对z11’和z12’在有限域的值进行求逆运算,将 得到的z11′-1和z12′-1在有限域的值发送到倍点运算控制子模块701。

由此可见,倍点运算控制子模块是该倍点运算模块的控制核心,可控制各模块的运 算时序、在各模块间传递数据、接收与输出数据。与图4所示的倍点运算模块相比较, 该倍点运算模块除了用于数字签名验证系统,用于对两个点的坐标进行倍点运算,且倍 点运算的数目不同(图4中的倍点运算模块是对G进行k倍点运算,该倍点运算模块用 于对G进行s’倍点运算和对PA进行t倍点运算),以及运算所用的数据有所不同之外, 图4和本图所示的倍点运算模块在功能上是相同的。

该数字签名验证系统中,点加模块604用于对输入的[s′]G和[t]PA进行点加运算,点 加运算的结果为坐标(x1′,y1′),将其输出至验证控制中心601。由于这里输入的是仿射坐 标系下的有限域中的数据,进行点加运算比较复杂,因此,本发明可将数据变换到射影 坐标系下的蒙哥马利域进行点加运算,这样可以提高运算效率。

图8为本发明提供的p元域SM2椭圆曲线的数字签名验证系统中点加模块的结构图。 如图8所示,该点加模块604包括:点加控制子模块801、域转换子模块805、射影系点 加子模块802、蒙哥马利域乘法子模块804、有限域求逆子模块803;其中,

点加控制子模块801用于,接收验证控制中心601发送的[s′]G和[t]PA在仿射坐标系 下的坐标(x11’,y11’)和(x12’,y12’),将二者分别转换为各自在射影坐标系下 的坐标(x11’,y11’,1)和(x12’,y12’,1),并将x11’、y11’、1和x12’、y12’、 1发送到域转换子模块805;将域转换子模块805返回的x11’、y11’、1和x12’、y12’、 1在蒙哥马利域的值x111’、y111’、z111’和x121’、y121’、z121’发送到射影系 点加子模块802;将射影系点加子模块802返回的[s′]G+[t]PA在射影坐标系下的坐标 (x131’,y131’,z131’)中的z131’发送到蒙哥马利域乘法子模块804;将蒙哥马利 域乘法子模块804返回的z131’在有限域的值发送到有限域求逆子模块803;将有限域 求逆子模块803返回的z131′-1在有限域的值发送到域转换子模块805;将[s′]G+[t]PA在 射影坐标系下的坐标(x131’,y131’,z131’)中的x131’、y131’以及z131′-1在蒙哥 马利域的值发送到蒙哥马利域乘法子模块804,将其返回的x131’、y131’二者在仿射 坐标系的值分别与1发送到蒙哥马利域乘法子模块804;将蒙哥马利域乘法子模块804 返回的x131’、y131’二者在有限域的值作为(x1′,y1′)发送到验证控制中心601;

域转换子模块805用于,分别将x11’、y11’、1和x12’、y12’、1在有限域的 值转换为各自在蒙哥马利域的值x111’、y111’、z111’和x121’、y121’、z121’, 并将其返回点加控制子模块801;将z131′-1在有限域的值转换为其在蒙哥马利域的值,并 将z131′-1在蒙哥马利域的值返回点加控制子模块801;

射影系点加子模块802用于,将输入的x111’、y111’、z111’和x121’、y121’、 z121’进行点加运算,将运算结果作为[s′]G+[t]PA在射影坐标系下的坐标 (x131’,y131’,z131’)发送到点加控制子模块801;

蒙哥马利域乘法子模块804用于,对输入的z131’与1进行蒙哥马利域乘法运算, 将得到的z131’在有限域的值发送到点加控制子模块801;对x131’与z11′-1各自在蒙哥 马利域的值、y131’与z11′-1各自在蒙哥马利域的值分别进行蒙哥马利域乘法运算,将得 到的x131’、y131’二者在仿射坐标系的值返回点加控制子模块801;将点加控制子模 块801发送的x131’、y131’二者在仿射坐标系的值分别与1进行蒙哥马利域乘法运算, 将得到的x131’、y131’二者在有限域的值返回到点加控制子模块801;

有限域求逆子模块803用于,对输入的z131’在有限域的值进行求逆运算,将得到 的z131′-1在有限域的值发送到点加控制子模块801。

由此可见,该点加模块中,点加控制子模块是控制核心,可控制各模块的运算时序、 在各模块间传递数据、接收与输出数据。

该点加模块对输入的[s′]G和[t]PA进行点加运算,得到运算结果(坐标(x1′,y1′))的 过程为:

点加控制子模块接收[s′]G和[t]PA在仿射坐标系下的坐标(x11’,y11’)和 (x12’,y12’),将二者分别转换为各自在射影坐标系下的坐标(x11’,y11’,1)和 (x12’,y12’,1),然后将x11’、y11’、1和x12’、y12’、1两组数据分别发送到 域转换子模块,使其将这两组数据分别变换为蒙哥马利域的值x111’、y111’、z111’和 x121’、y121’、z121’;

这样,点加控制子模块就可以将这些射影坐标系下的值x111’、y111’、z111’和 x121’、y121’、z121’发送到射影系点加子模块,使其对这两组数据在射影坐标系下 进行点加运算,得到[s′]G+[t]PA在射影坐标系下的坐标(x131’,y131’,z131’);

接下来,点加控制子模块要做的是将[s′]G+[t]PA在射影坐标系下的坐标 (x131’,y131’,z131’)转换为仿射坐标系下的坐标(x1′,y1′),发送到验证控制中心 601。该转换过程包括如下步骤:

点加控制子模块将(x131’,y131’,z131’)中的z131’在有限域的值发送到有限 域求逆子模块,以得到z131’的逆值z131′-1在有限域的值;

点加控制子模块将z131′-1在有限域的值发送到域转换子模块,使其将z131′-1在有限 域的值变换为z131′-1在蒙哥马利域的值;

然后,点加控制子模块将(x131’,y131’,z131’)中的x131’、y131’以及z131′-1在蒙哥马利域的值发送到蒙哥马利域乘法子模块,使其首先对x131’与z11′-1在蒙哥马利 域的值、y131’与z11′-1在蒙哥马利域的值分别进行蒙哥马利域乘法运算,得到x131’、 y131’二者在仿射坐标系的值;接着将x131’、y131’二者在仿射坐标系的值分别与1 进行蒙哥马利域乘法运算,得到x131’、y131’二者在有限域的值;

最后,点加控制子模块就可以将x131’、y131’二者在有限域的值作为(x1′,y1′)发 送到验证控制中心,实现了对[s′]G和[t]PA的点加运算。

由图2所示的数字签名生成系统和图6所示的数字签名验证系统可以看出,二者存 在一些功能相同的模块,这些模块包括:倍点运算模块和密码杂凑模块。由于本发明所 要实现的数字签名生成系统和数字签名验证系统用于保证签名方和验证方间的数据传输 的安全性,因而通信双方都要配备一套数字签名生成系统,也都要配备一套数字签名验 证系统,以生成本方的数字签名,并验证对方发送的数字签名。因此,可将两种系统中 功能相同的模块进行合并,形成一种p元域SM2椭圆曲线的数字签名生成、验证混合系 统。

图9为本发明提供的p元域SM2椭圆曲线的数字签名生成、验证混合系统的结构图。 这里的椭圆曲线的阶为n,基为G,签名方具有公钥PA和私钥dA。如图9所示,该系统 包括:签名控制中心901、验证控制中心902、随机数生成模块904、s生成模块905、密 码杂凑模块907、倍点运算模块906、上层复选模块903、点加模块908;该系统中的密 码杂凑模块907、倍点运算模块906均具有签名生成模式和签名验证模式;其中,

签名控制中心901用于,向上层复选模块903发送签名生成模式信号;将待签名消 息m与签名方杂凑值ZA进行拼接,将得到的拼接消息m’通过上层复选模块903发送到 密码杂凑模块907;根据r=(e+x1)mod n计算得到r;将r发送到s生成模块905;在r=0、 r+k=n或s=0的情况下,通知随机数生成模块904重新生成k;将k发送到s生成模块 905;将k通过上层复选模块903发送到倍点运算模块906;将r和s作为m的数字签名 输出;

验证控制中心902用于,向上层复选模块903发送签名验证模式信号;将接收的r’ 和s’作为数字签名生成系统输出的待验证消息M’的数字签名;判断r’和s’是否均 在1与(n-1)之间;将M’与签名方杂凑值ZA’进行拼接,将得到的验证方拼接消息通 过上层复选模块903发送到密码杂凑模块907;根据t=(r′+s′)mod n确定t,判断t是 否为0;将s’和t通过上层复选模块903发送到倍点运算模块906,将倍点运算模块906 返回的[s′]G和[t]PA发送到点加模块908;根据R=(e′+x1′)mod n确定R,并判断R是否 与r’相等;判断出r’不在1与(n-1)之间、s’不在1与(n-1)之间、t为0、R与r’ 不相等中的任一情况时,输出数字签名验证不通过的消息,上述各情况均不出现时,输 出数字签名验证通过的消息;

密码杂凑模块907用于,在签名生成模式下,对m’进行密码杂凑运算,将生成的拼 接消息杂凑值e通过上层复选模块903的转发,送至签名控制中心901;在签名验证模式 下,对进行密码杂凑运算,将生成的验证方拼接消息杂凑值e’通过上层复选模块903 的转发,送至验证控制中心902;

随机数生成模块904用于,将生成的随机数k发送到签名控制中心901;

倍点运算模块906用于,在签名生成模式下,对G进行k倍点运算,将生成的坐标 (x1,y1)作为运算结果[k]G,通过上层复选模块903的转发,送至签名控制中心901; 在签名验证模式下,对G进行s’倍点运算,将得到的运算结果[s′]G通过上层复选模块 903的转发,送至验证控制中心902;对PA进行t倍点运算,将得到的运算结果[t]PA通 过上层复选模块903的转发,送至验证控制中心902;

s生成模块905用于,根据s=[(1+dA)-1·(k-r·dA)]mod n生成s,将生成的s发送到 签名控制中心901;

点加模块908用于,对输入的[s′]G和[t]PA进行点加运算,将运算结果(x1′,y1′)发送 到验证控制中心902;

上层复选模块903用于,根据签名生成模式信号,将密码杂凑模块907、倍点运算模 块906的工作模式确定为签名生成模式;根据签名验证模式信号,将密码杂凑模块907、 倍点运算模块906的工作模式确定为签名验证模式。

由此可见,该混合系统通过设置上层复选模块,从而将倍点运算模块和密码杂凑模 块进行了复用,即在该系统中,倍点运算模块和密码杂凑模块即可作为数字签名生成系 统中的一部分进行工作,又可以作为数字签名验证算法中的一部分进行工作。签名控制 中心、验证控制中心与这两个复用的模块之间的双向通信分别由上层复选模块进行转发, 签名控制中心、验证控制中心可以控制上层复选模块来设置这两个复用的模块的工作模 式,将其分别设置为签名生成模式和签名验证模式。

在签名生成模式下,签名控制中心901、随机数生成模块904、s生成模块905、密 码杂凑模块907、倍点运算模块906、上层复选模块903共同构成了p元域SM2椭圆曲线 的数字签名生成系统,如果不考虑上层复选模块903的数据转发与确定工作模式的功能, 将其去除,使签名控制中心901与其他四个模块直接进行通信,则该数字签名生成系统 即为图2所示的数字签名生成系统。

同样,在签名验证模式下,该混合系统中的验证控制中心902、密码杂凑模块907、 倍点运算模块906、上层复选模块903、点加模块908共同构成了一种p元域SM2椭圆曲 线的数字签名验证系统,如果不考虑上层复选模块903的数据转发与确定工作模式的功 能,将其去除,该数字签名验证系统即为图6所示的数字签名验证系统。

图9所示的混合系统设置了一个复选模块,即实现了密码杂凑模块和倍点运算模块 的复用,因此,本发明大大节约了硬件资源,减少了芯片的面积,这有利于该设备的小 型化与集成化。

比较图3、4、7和8可知,这些模块进一步还包括一些功能相同或相近的子模块, 也可以按照图9的方式进行复用,从而进一步节约硬件资源,减少芯片面积。

图10为本发明提供的p元域SM2椭圆曲线的数字签名生成、验证混合系统的最佳实 施例的结构图。如图10所示,该系统可以看作图3、4、7、8和9的综合,其除了具备 与图9中功能相同的签名控制中心1001、验证控制中心1002、上层复选模块1003、随机 数生成模块1004、密码杂凑模块1007之外,还进一步包括下层复选模块1010,用于实 现对域转换子模块1011、蒙哥马利域乘法子模块1012、有限域求逆子模块1013和射影 系点加子模块1014的复用。

该系统包括:由s生成模块、倍点运算模块、点加模块共用的域转换子模块1011、 蒙哥马利域乘法子模块1012、有限域求逆子模块1013,由倍点运算模块、点加模块共用 的射影系点加子模块1014;

s生成模块包括:s生成控制子模块1005;倍点运算模块包括:倍点运算控制子模块 1006、射影系二倍点运算子模块1009;点加模块包括:点加控制子模块1008;

s生成控制子模块1005用于,在签名生成模式下,向下层复选模块1010发送s生成 模式信号;接收签名控制中心1001输出的r和k在有限域的值;将(1+dA)在有限域的值 通过下层复选模块1010发送到有限域求逆子模块1013;将r、dA、(1+dA)-1和k在有限 域的值通过下层复选模块1010发送到域转换子模块1011;将r和dA各自在蒙哥马利域 的值通过下层复选模块1010发送到蒙哥马利域乘法子模块1012,用k在蒙哥马利域的值 与其通过下层复选模块1010返回的(r·dA)在蒙哥马利域的值进行减法运算,得到 (k-r·dA)在蒙哥马利域的值;将(1+dA)-1和(k-r·dA)各自在蒙哥马利域的值通过下层复选 模块1010发送到蒙哥马利域乘法子模块1012,并将其通过下层复选模块1010返回的 [(1+dA)-1·(k-r·dA)]在仿射坐标系的值与1再通过下层复选模块1010发送到蒙哥马利域 乘法子模块1012;将s=[(1+dA)-1·(k-r·dA)]mod n在有限域的值s发送到签名控制中心 1001;

倍点运算控制子模块1006用于,在签名生成模式下,向下层复选模块1010发送倍 点运算签名占用信号;将G在仿射坐标系下的坐标(x,y)转换为射影坐标系下的坐标 (x2,y2,1),并将x2、y2、1通过下层复选模块1010发送到域转换子模块1011;将 (x3,y3,z3)作为[k]G在蒙哥马利域的坐标(x1,y1,z1)的初始值;确定k的二进制比 特长度L;将k的二进制形式中的次高比特位作为其当前比特位的初始值,从k的二进制 形式中的次高比特位开始,每次降低一个比特位作为当前比特位,直至其最低比特位为 止,进行(L-1)次迭代运算;将(L-1)次迭代运算的结果坐标(x1,y1,z1)中的z1通 过下层复选模块1010发送到蒙哥马利域乘法子模块1012;将蒙哥马利域乘法子模块1012 返回的z1在有限域的值通过下层复选模块1010发送到有限域求逆子模块1013;将有限 域求逆子模块1013返回的z1-1在有限域的值通过下层复选模块1010发送到域转换子模块 1011;将(L-1)次迭代运算的结果坐标(x1,y1,z1)中的x1、y1以及z1-1在蒙哥马利域 的值通过下层复选模块1010发送到蒙哥马利域乘法子模块1012,并将其返回的x1、y1 二者在仿射坐标系的值分别与1通过下层复选模块1010发送到蒙哥马利域乘法子模块 1012;将蒙哥马利域乘法子模块1012返回的x1、y1二者在有限域的值作为[k]G在有限 域的坐标(x1,y1)通过上层复选模块1003转发至签名控制中心1001;其中的一次迭代 运算包括:将当前的(x1,y1,z1)发送到射影系二倍点运算子模块1009、在当前比特位 为二进制1的情况下,将射影系二倍点运算子模块1009返回的输出坐标通过下层复选模 块1010发送到射影系点加子模块1014;在签名验证模式下,向下层复选模块1010发送 倍点运算验证占用信号;将G、PA在仿射坐标系下的坐标(x2’,y2’)、(x5’,y5’) 分别转换为射影坐标系下的坐标(x3’,y3’,1)、(x6’,y6’,1),并分别将x3’、 y3’、1和x6’、y6’、1通过下层复选模块1010发送到域转换子模块1011;将 (x4’,y4’,z4’)和(x7’,y7’,z7’)分别通过下层复选模块1010发送到射影系点 加子模块1014,并将其分别作为[s′]G和[t]PA在蒙哥马利域的坐标(x11’,y11’,z11’) 和(x12’,y12’,z12’)的初始值;分别确定s’和t的二进制比特长度LA和LB;分 别将LA和LB的二进制形式中的次高比特位作为各自当前比特位的初始值,并分别从各 自的次高比特位开始,每次降低一个比特位作为各自的当前比特位,直至各自的最低比 特位为止,分别进行(LA-1)和(LB-1)次迭代运算;分别将(LA-1)和(LB-1)次迭 代运算的结果坐标(x11’,y11’,z11’)和(x12’,y12’,z12’)中的z11’和z12’ 通过下层复选模块1010发送到蒙哥马利域乘法子模块1012;分别将蒙哥马利域乘法子模 块1012返回的z11’和z12’在有限域的值通过下层复选模块1010发送到有限域求逆子 模块1013;分别将有限域求逆子模块1013返回的z11′-1和z12′-1在有限域的值通过下层 复选模块1010发送到域转换子模块1011;将(LA-1)次迭代运算的结果坐标 (x11’,y11’,z11’)中的x11’,y11’以及z11′-1在蒙哥马利域的值通过下层复选模块 1010发送到蒙哥马利域乘法子模块1012,并将其返回的x11’、y11’二者在仿射坐标系 的值分别与1通过下层复选模块1010发送到蒙哥马利域乘法子模块1012;将(LB-1)次 迭代运算的结果坐标(x12’,y12’,z12’)中的x12’,y12’以及z12′-1在蒙哥马利域 的值通过下层复选模块1010发送到蒙哥马利域乘法子模块1012,并将其返回的x12’、 y12’二者在仿射坐标系的值分别与1通过下层复选模块1010发送到蒙哥马利域乘法子 模块1012;将蒙哥马利域乘法子模块1012返回的x11’、y11’二者在有限域的值作为 [s′]G在有限域的坐标(x11’,y11’)通过上层复选模块1003发送到验证控制中心1002; 将蒙哥马利域乘法子模块1012返回的x12’、y12’二者在有限域的值作为[t]PA在有限 域的坐标(x12’,y12’)通过上层复选模块1003发送到验证控制中心1002;其中的一 次迭代运算包括:分别将[s′]G和[t]PA的坐标(x11’,y11’,z11’)、 (x12’,y12’,z12’)的当前值发送到射影系二倍点运算子模块1009、在s’的当前比 特位为二进制1的情况下,将射影系二倍点运算子模块1009返回的(x11’,y11’,z11’) 的当前值通过下层复选模块1010发送到射影系点加子模块1014、在t的当前比特位为二 进制1的情况下,将射影系二倍点运算子模块1009返回的(x12’,y12’,z12’)的当 前值通过下层复选模块1010发送到射影系点加子模块1014;

射影系二倍点运算子模块1009用于,在签名生成模式下,对输入坐标进行二倍点运 算,将运算结果作为输出坐标返回至倍点运算控制子模块1006;在签名验证模式下,对 输入的[s′]G和[t]PA的坐标(x11’,y11’,z11’)、(x12’,y12’,z12’)的当前值分 别进行二倍点运算,将运算结果分别作为(x11’,y11’,z11’)和(x12’,y12’,z12’) 的当前值返回至倍点运算控制子模块1006;

点加控制子模块1008用于,向下层复选模块1010发送点加模式信号;接收验证控 制中心1002发送的[s′]G和[t]PA在仿射坐标系下的坐标(x11’,y11’)和 (x12’,y12’),将二者分别转换为各自在射影坐标系下的坐标(x11’,y11’,1)和 (x12’,y12’,1),并将x11’、y11’、1和x12’、y12’、1通过下层复选模块1010 发送到域转换子模块1011;将域转换子模块1011返回的x11’、y11’、1和x12’、y12’、 1在蒙哥马利域的值x111’、y111’、z111’和x121’、y121’、z121’通过下层复 选模块1010发送到射影系点加子模块1014;将射影系点加子模块1014返回的 [s′]G+[t]PA在射影坐标系下的坐标(x131’,y131’,z131’)中的z131’通过下层复 选模块1010发送到蒙哥马利域乘法子模块1012;将蒙哥马利域乘法子模块1012返回的 z131’在有限域的值通过下层复选模块1010发送到有限域求逆子模块1013;将有限域求 逆子模块1013返回的z131′-1在有限域的值通过下层复选模块1010发送到域转换子模块 1011;将[s′]G+[t]PA在射影坐标系下的坐标(x131’,y131’,z131’)中的x131’、 y131’以及z131′-1在蒙哥马利域的值通过下层复选模块1010发送到蒙哥马利域乘法子模 块1012,并将其返回的x131’、y131’二者在仿射坐标系的值分别与1通过下层复选模 块1010发送到蒙哥马利域乘法子模块1012;将蒙哥马利域乘法子模块1012返回的 x131’、y131’二者在有限域的值作为(x1′,y1′)发送到验证控制中心1002;

下层复选模块1010用于,根据s生成模式信号,将域转换子模块1011、蒙哥马利域 乘法子模块1012、有限域求逆子模块1013的工作模式确定为s生成模式,并将各模块的 返回信息转发至s生成控制子模块1005;根据倍点运算签名占用信号,将域转换子模块 1011、蒙哥马利域乘法子模块1012、有限域求逆子模块1013、射影系点加子模块1014 的工作模式确定为倍点运算签名占用模式;根据倍点运算验证占用信号,将域转换子模 块1011、蒙哥马利域乘法子模块1012、有限域求逆子模块1013、射影系点加子模块1014 的工作模式确定为倍点运算验证占用模式;根据点加模式信号,将域转换子模块1011、 蒙哥马利域乘法子模块1012、有限域求逆子模块1013、射影系点加子模块1014的工作 模式确定为点加模式;

域转换子模块1011用于,在s生成模式下,将(1+dA)-1、r、dA和k在有限域的值分 别转换为各自在蒙哥马利域的值,通过下层复选模块1010转发至s生成控制子模块1005; 在倍点运算签名占用模式下,将x2、y2、1在有限域的值分别转换为各自在蒙哥马利域 的值x3、y3、z3,并将其通过下层复选模块1010返回倍点运算控制子模块1006;将z1-1在有限域的值转换为其在蒙哥马利域的值,并将其通过下层复选模块1010返回倍点运算 控制子模块1006;在倍点运算验证占用模式下,分别将x3’、y3’、1和x6’、y6’、 1在有限域的值转换为各自在蒙哥马利域的值x4’、y4’、z4’和x7’、y7’、z7’, 并将其通过下层复选模块1010返回倍点运算控制子模块1006;分别将z11′-1和z12′-1在 有限域的值转换为其在蒙哥马利域的值,并将其通过下层复选模块1010返回倍点运算控 制子模块1006;在点加模式下,分别将x11’、y11’、1和x12’、y12’、1在有限域 的值转换为各自在蒙哥马利域的值x111’、y111’、z111’和x121’、y121’、z121’, 并将其通过下层复选模块1010返回点加控制子模块1008;将z131′-1在有限域的值转换为 其在蒙哥马利域的值,并将z131′-1在蒙哥马利域的值通过下层复选模块1010返回点加控 制子模块1008;

蒙哥马利域乘法子模块1012用于,在s生成模式下,对r和dA二者在蒙哥马利域 的值进行蒙哥马利域乘法运算,将得到的(r·dA)在蒙哥马利域的值通过下层复选模块 1010返回s生成控制子模块1005;将(1+dA)-1和(k-r·dA)二者在蒙哥马利域的值进行蒙 哥马利域乘法运算,将得到的[(1+dA)-1·(k-r·dA)]在仿射坐标系的值通过下层复选模块 1010返回s生成控制子模块1005;对[(1+dA)-1·(k-r·dA)]在仿射坐标系的值与1进行蒙 哥马利域乘法运算,将得到的s=[(1+dA)-1·(k-r·dA)]mod n在有限域的值s通过下层复选 模块1010转发至s生成控制子模块1005;这里,由于对(1+dA)-1和(k-r·dA)二者在蒙哥 马利域的值进行的蒙哥马利域乘法运算得到的为乘积[(1+dA)-1·(k-r·dA)]在有限域的值, 因而[(1+dA)-1·(k-r·dA)]必然不超过n,即该运算已包含了求模运算,因而无需对 [(1+dA)-1·(k-r·dA)]进行对n的求模运算,即为s=[(1+dA)-1·(k-r·dA)]mod n在有限域的 值s;在倍点运算签名占用模式下,对z1与1进行蒙哥马利域乘法运算,将得到的z1 在有限域的值通过下层复选模块1010发送到倍点运算控制子模块1006;对x1与z1-1各 自在蒙哥马利域的值、y1与z1-1各自在蒙哥马利域的值分别进行蒙哥马利域乘法运算, 将得到的x1、y1二者在仿射坐标系的值通过下层复选模块1010返回倍点运算控制子模 块1006;将x1、y1二者在仿射坐标系的值分别与1进行蒙哥马利域乘法运算,将得到的 x1、y1二者在有限域的值通过下层复选模块1010返回到倍点运算控制子模块1006;在 倍点运算验证占用模式下,对z11’与1进行蒙哥马利域乘法运算,将得到的z11’在有 限域的值通过下层复选模块1010发送到倍点运算控制子模块1006;对z12’与1进行蒙 哥马利域乘法运算,将得到的z12’在有限域的值通过下层复选模块1010发送到倍点运 算控制子模块1006;对x11’与z11′-1二者在蒙哥马利域的值、y11’与z11′-1二者在蒙哥 马利域的值分别进行蒙哥马利域乘法运算,将得到的x11’、y11’二者在仿射坐标系的 值通过下层复选模块1010返回倍点运算控制子模块1006;将x11’、y11’二者在仿射 坐标系的值分别与1进行蒙哥马利域乘法运算,将得到的x11’、y11’二者在有限域的 值通过下层复选模块1010返回到倍点运算控制子模块1006;对x12’与z12′-1二者在蒙 哥马利域的值、y12’与z12′-1二者在蒙哥马利域的值分别进行蒙哥马利域乘法运算,将 得到的x12’、y12’二者在仿射坐标系的值通过下层复选模块1010返回倍点运算控制子 模块1006;将x12’、y12’二者在仿射坐标系的值分别与1进行蒙哥马利域乘法运算, 将得到的x12’、y12’二者在有限域的值通过下层复选模块1010返回到倍点运算控制子 模块1006;在点加模式下,对输入的z131’与1进行蒙哥马利域乘法运算,将得到的 z131’在有限域的值通过下层复选模块1010发送到点加控制子模块1008;对x131’与 z11′-1二者在蒙哥马利域的值、y131’与z11′-1二者在蒙哥马利域的值分别进行蒙哥马利 域乘法运算,将得到的x131’、y131’二者在仿射坐标系的值通过下层复选模块1010 返回点加控制子模块1008;将x131’、y131’二者在仿射坐标系的值分别与1进行蒙哥 马利域乘法运算,将得到的x131’、y131’二者在有限域的值通过下层复选模块1010 返回到点加控制子模块1008;

有限域求逆子模块1013用于,在s生成模式下,对(1+dA)在有限域的值进行求逆 运算,将得到的(1+dA)-1在有限域的值通过下层复选模块1010转发至s生成控制子模块 1005;在倍点运算签名占用模式下,对z1在有限域的值进行求逆运算,将得到的z1-1在 有限域的值通过下层复选模块1010发送到倍点运算控制子模块1006;在倍点运算验证占 用模式下,分别对z11’和z12’在有限域的值进行求逆运算,将得到的z11′-1和z12′-1在 有限域的值通过下层复选模块1010发送到倍点运算控制子模块1006;在点加模式下,对 输入的z131’在有限域的值进行求逆运算,将得到的z131′-1在有限域的值通过下层复选 模块1010发送到点加控制子模块1008;

射影系点加子模块1014用于,在倍点运算签名占用模式下,将输入坐标与(x3,y3,z3) 进行点加运算,将运算结果通过下层复选模块1010发送到倍点运算控制子模块1006;在 倍点运算验证占用模式下,将输入的(x11’,y11’,z11’)的当前值与(x4’,y4’,z4’) 进行点加运算,将运算结果作为新的(x11’,y11’,z11’)的当前值通过下层复选模块 1010发送到倍点运算控制子模块1006;将输入的(x12’,y12’,z12’)的当前值与 (x7’,y7’,z7’)进行点加运算,将运算结果作为新的(x12’,y12’,z12’)的当前 值通过下层复选模块1010发送到倍点运算控制子模块1006;在点加模式下,将输入的 x111’、y111’、z111’和x121’、y121’、z121’进行点加运算,将运算结果作为 [s′]G+[t]PA在射影坐标系下的坐标(x131’,y131’,z131’)通过下层复选模块1010 发送到点加控制子模块1008。

由图10可以看出,本发明通过设置下层复选模块,实现了s生成控制子模块、倍点 运算控制子模块、点加控制子模块对域转换子模块、蒙哥马利域乘法子模块、有限域求 逆子模块的复用,还实现了倍点运算控制子模块、点加控制子模块对射影系点加子模块 的复用。这些复用大大减少了系统硬件的资源消耗,也大大降低了硬件的面积。

需要指出的是,本发明所述的二倍点运算、数据从有限域转换到蒙哥马利域、数据 由仿射坐标系转换为射影坐标系的技术均为现有技术,在此不对其运算过程作具体描述。

由此可见,本发明具有以下优点:

(1)本发明中,由于签名控制中心可将待签名消息m与签名方杂凑值ZA拼接为拼 接消息m’,由密码杂凑模块对其进行杂凑运算,得到拼接消息杂凑值e,随机数生成模 块生成随机数k,倍点运算模块对椭圆曲线的基G进行k倍点运算,生成坐标(x1,y1), 这样,签名控制中心根据r=(e+x1)mod n即可得到r,如果该r满足r=0和r+k=0均不 成立,则该r即为m的数字签名中的一号签名段,否则,签名控制中心通知随机数生成 模块重新生成随机数k;s生成模块可根据s=[(1+dA)-1·(k-r·dA)]mod n生成s,在s=0 不成立的情况下,该s即为m的数字签名中的二号签名段。这样,签名控制中心即可将r 和s作为m的数字签名输出。因此,本发明能够用包括签名控制中心、密码杂凑模块、 随机数生成模块、倍点运算模块、s生成模块在内的硬件来实现SM2椭圆曲线公钥密码算 法中的数字签名算法。

(2)由于本发明提供的系统能够从硬件上实现SM2椭圆曲线公钥密码算法中的数字 签名算法,因而运算速度要比软件实现更为快速,也更为安全。

(3)由于本发明提供的系统能够从硬件上实现SM2椭圆曲线公钥密码算法中的数字 签名算法,可用比现有技术更小的计算量、更快的速度、更小的密钥尺寸、更低的带宽 来保证数据传输的安全,因而本发明具有广阔的应用前景。

(4)本发明在射影坐标系下、蒙哥马利域中进行s生成和倍点运算,能够提高运算 速度,提高数字签名生成的效率。

(5)本发明通过设置两个复选模块,实现了系统对多个硬件子模块的复用,因此, 本发明大大节约了硬件资源,减少了芯片的面积,这有利于该设备的小型化与集成化。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原 则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号