首页> 中国专利> 数字签名、签名认证装置以及数字签名方法

数字签名、签名认证装置以及数字签名方法

摘要

本发明公开了一种数字签名、签名认证装置以及数字签名方法,所述方法包括:发送方对原始信息M进行哈希运算后得到哈希值e;并将M使用加密公钥进行加密运算后得到加密信息;所述发送方对M运用e进行数字签名得到M的签名后,将M的签名与所述加密信息一并发送给接收方;所述接收方使用加密私钥将所述加密信息进行解密得到M后,对解密后得到的M进行哈希运算得到所述哈希值e;所述接收方利用得到的e,以及接收到的M的签名进行签名认证。应用本发明,可以提高数字签名和签名认证的效率,同时也提高了信息的安全性。

著录项

  • 公开/公告号CN104052606A

    专利类型发明专利

  • 公开/公告日2014-09-17

    原文格式PDF

  • 申请/专利权人 北京邮电大学;

    申请/专利号CN201410281379.8

  • 发明设计人 高锦春;裴君波;刘元安;马晓雷;

    申请日2014-06-20

  • 分类号H04L9/32(20060101);

  • 代理机构11321 北京市京大律师事务所;

  • 代理人张璐;方晓明

  • 地址 100876 北京市海淀区西土城路10号

  • 入库时间 2023-12-17 01:34:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-05-24

    授权

    授权

  • 2014-10-22

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

    实质审查的生效

  • 2014-09-17

    公开

    公开

说明书

技术领域

本发明涉及软件领域,尤其涉及一种数字签名、签名认证装置以及数字 签名方法。

背景技术

数字签名是非对称密钥加密技术与数字摘要技术的应用,主要包括发送 方的信息签名和接收方的信息签名认证。作为一种实现签名认证的重要技术, 数字签名能够提供身份验证、数据完整性、不可抵赖等安全服务。

目前,数字签名方案大体可以划分为RSA签名算法、DSA(Digital  Signature Algorithm,数字签名算法)算法和ECDSA(Elliptic Curve Digital  Signature Algorithm,椭圆曲线数字签名)算法。其中,由于ECDSA数字签 名方案中主要是基于椭圆曲线的特殊几何运算,使得椭圆曲线数字签名算法 相较于RSA算法和DSA算法有着更低计算能力和内存要求的优势,而且, 还有着难以破解和攻击的特点。

事实上,在现有的椭圆曲线数字签名算法中,预先给出全局参数G0、n、 随机选取的私钥d0和与私钥对应的公钥Q0;其中,G0为设定的椭圆曲线上的 一个基点,nG0=0,Q0=d0G0。如图1所示,在现有的椭圆曲线数字签名算法中 信息M的发送者可以通过如下步骤对信息M进行签名:

S101:选取一个随机数k0,其中,k0∈[1,n-1]。

S102:根据公式P0=k0G0,计算出点P0的坐标(xp01,yp01)。

S103:令r=xp01mod n,判断r是否取值为0,若是,则回到步骤S101;否 则,执行步骤S104。

S104:对信息M进行哈希运算后得到哈希值e,e=SHA1(M)。

S105:令s=k-1(e+dr)mod n,判断s是否取值为0,若是,则回到步骤S101; 否则,执行步骤S106。

S106:利用(r,s)对信息M进行签名。

如图1所示,在现有的ECDSA数字签名方案中信息M的接收者可以通过如 下步骤对接收的信息M进行签名的认证:

S107:对接收的信息M进行哈希运算后得到哈希值e,e=SHA1(M)。

S108:根据公式X0=u1G0+u2Q0,计算出点X的坐标(xx01,yx01);其中, u1=(ew)modn,u2=(rw)mod n,w=s-1mod n。

S109:计算出v=xx01mod n;判断v是否等于r,若是,则签名有效,否 则签名无效。

本发明的发明人发现,在上述现有的椭圆曲线数字签名算法中,根据公 式P0=k0G0,计算出点P0的坐标(xp01,yp01),已经使得k0具有难以破解和复 杂性的特点。然而,在现有的椭圆曲线数字签名算法中,由于原始信息没有 加密,攻击者可以根据原始信息直接得到哈希值e,并从签名中获得s和r, 因此,在现有的椭圆曲线数字签名算法中必须把已知的e,r和不可获取的未 知数k,d,结合非常耗时的乘法运算和求逆运算,即s=k-1(e+dr)mod n,才 能防止攻击者冒充签名。然而,通过上述方法虽然保证签名的安全性,但是 也增加了签名的运算复杂度和签名认证的运算复杂度。事实上,若将椭圆曲 线数字签名算法应用到对计算能力要求比较低的环境中(比如嵌入式设备), 对签名和认证所占用的资源以及运算速度都有一定的限制,降低了数字签名 和签名认证的效率。而且,数字签名是作为一种签名认证的功能来应用,在 实际中经常不但需要签名认证,还需要保证信息的本身传输的安全性。

因此,有必要提供一种可以提高数字签名和签名认证的效率、以及提高 信息的安全性的数字签名方法。

发明内容

针对上述现有技术存在的缺陷,本发明实施例提供了一种数字签名、签 名认证装置以及数字签名方法,用以提高数字签名和签名认证的效率、并提 高信息的安全性。

本发明实施例提供了一种数字签名方法,包括:

发送方对原始信息M进行哈希运算后得到哈希值e;并将M使用加密公 钥进行加密运算后得到加密信息;

所述发送方对M运用e进行数字签名得到M的签名后,将M的签名与 所述加密信息一并发送给接收方;

所述接收方使用加密私钥将所述加密信息进行解密得到M后,对解密后 得到的M进行哈希运算得到所述哈希值e;

所述接收方利用得到的e,以及接收到的M的签名进行签名认证。

较佳地,所述将M使用加密公钥进行加密运算后得到加密信息,具体包 括:

所述发送方选取随机数t后,根据如下公式1、2计算点H1和点H2的坐标:

H1=tG  (公式1)

H2=tQ2  (公式2)

其中,G为X-Y坐标系中的一个预定点,Q2为所述加密公钥;

所述发送方根据如下公式3对M进行处理,得到处理后的信息m:

m=MxH2mod n  (公式3)

其中,n为设定参数,xH2为点H2的横坐标;

之后,所述发送方将(xH1,m)作为得到的加密信息;其中,xH1为点H1的横坐标。

较佳地,所述接收方使用加密私钥将所述加密信息进行解密得到M,具 体包括:

所述接收方将加密私钥与xH1相乘得到xH2后,根据如下公式4得到所述原 始信息M:

M=m(xH2)-1mod n  (公式4)

较佳地,所述发送方对M运用e进行数字签名得到M的签名,具体包括:

所述发送方选取随机数k后,根据如下公式5计算点P坐标(x1,y1), 并根据如下公式6、7计算出M的签名(r,s):

kG=(x1,y1)  (公式5)

r=x1mod n  (公式6)

s=(k+e-r-d)mod n  (公式7)

其中,G为X-Y坐标系中的一个预定点,n为设定参数,d为签名私钥。

较佳地,所述接收方利用得到的e,以及接收到的M的签名进行签名认 证,具体包括:

所述接收方根据如下公式8计算出所述点P的坐标:

P=u1G+Q  (公式8)

其中,Q=dG,u1根据如下公式9计算得到:

u1=(s+r-e)modn  (公式9)

所述接收方在如下公式10中运用点P的横坐标x1计算验证值v:

v=x1modn  (公式10)

若v等于r,则判断签名有效;否则,判断签名无效。

本发明实施例还提供了一种数字签名装置,包括:

加密模块,用于对原始信息M进行哈希运算后得到哈希值e;并将M使 用加密公钥进行加密运算后得到加密信息;

签名模块,用于对M运用e进行数字签名得到M的签名后,将M的签 名与从所述加密模块接收的加密信息一并发送给接收方。

较佳地,所述加密模块具体用于选取随机数t后,根据如下公式1、2计 算点H1和点H2的坐标,根据如下公式3对M进行处理得到处理后的信息m, 之后,将(xH1,m)作为得到的加密信息;

H1=tG  (公式1)

H2=tQ2  (公式2)

m=MxH2mod n  (公式3)

其中,G为X-Y坐标系中的一个预定点,Q2为所述加密公钥;n为设定 参数,xH2为点H2的横坐标;xH1为点H1的横坐标。

较佳地,所述签名模块具体用于选取随机数k后,根据如下公式5计算 点P坐标(x1,y1),并根据如下公式6、7计算出M的签名(r,s):

kG=(x1,y1)  (公式5)

r=x1mod n  (公式6)

s=(k+e-r-d)mod n  (公式7)

其中,G为X-Y坐标系中的一个预定点,n为设定参数,d为签名私钥。

本发明实施例还提供了一种签名认证装置,包括:

解密模块,用于使用加密私钥将所述加密信息进行解密得到M后,对解 密后得到的M进行哈希运算得到所述哈希值e;

认证模块,用于利用所述解密模块得到的e,以及接收到的M的签名进 行签名认证。

较佳地,所述解密模块具体用于将加密私钥与xH1相乘得到xH2后,根据如 下公式4:M=m(xH2)-1mod n,得到所述原始信息M。

较佳地,所述认证模块具体用于根据如下公式8计算出所述点P的坐标, 其中的u1是根据如下公式9计算得到的;之后,在如下公式10中运用点P的 横坐标x1计算验证值v;若v等于r,则判断签名有效;否则,判断签名无效;

P=u1G+Q  (公式8)

u1=(s+r-e)mod n  (公式9)

v=x1mod n  (公式10)

其中,Q=dG。

本发明的技术方案中,由于在数字签名时,还将要传递的原始信息进行 加密;从而,想仿冒数字签名的人不能使用加密后的信息直接计算出哈希值e, 也就不能利用获取的k+d假冒签名,提高了信息的签名安全性。

进一步,在签名算法中,利用了椭圆曲线数字签名算法中的曲线特点, 使得破解难度很大,以保证签名的安全性;同时简化了原算法中的倍点运算, 使得改进后的算法占用较少的运算资源,具有更快的运算速度,可以在嵌入 式设备中得到应用,提高了数字签名和签名认证的效率。

附图说明

图1为现有椭圆曲线数字签名算法的流程示意图;

图2为本发明实施例的数字签名方法的流程示意图;

图3为本发明实施例的数字签名装置的结构示意图;

图4为本发明实施例的数字签名认证装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举 出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中 列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的 理解,即便没有这些特定的细节也可以实现本发明的这些方面。

本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体, 例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模 块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程 序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序 和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/ 或线程内。

本发明的技术方案中,可以结合信息的加密算法,在进行数字签名的过 程中,对原始信息进行加密运算后得到加密信息,保证信息的安全传递;同 时,对原始信息进行哈希运算后得到哈希值后,可以通过减小现有的椭圆曲 线数字签名算法中的求逆算法,对原始信息运用哈希值进行数字签名,以降 低签名复杂度和计算要求,这样,想仿冒数字签名的人不能使用加密后的信 息直接计算出哈希值,也就难以获取假冒签名,提高了信息的签名安全性。

相应地,在进行数字签名的认证过程中,可以根据接收的加密信息和签 名,对加密信息进行解密得到原始信息,并对得到的原始信息进行哈希运算 得到哈希值后,在不降低签名安全性的情况下,即仍然基于椭圆曲线数字签 名算法中的曲线特点,通过减少签名认证算法中的求逆运算和倍点运算,利 用哈希值、以及签名进行签名认证,以此减少认证过程的计算复杂性和占用 运算资源,且可以获得更快的运算速度,以此提高数字签名和签名认证的效 率。

下面结合附图详细说明本发明的技术方案。

本发明实施例在进行数字签名之前,可以预先从椭圆曲线上预定一个基 点G,该基点具体表现为X-Y坐标系中的一个预定点。继而,根据预定的基 点G,设定一个参数n,使得该设定参数n能够满足nG=0。进一步地,还可 以随机选取一个签名私钥d和一个加密私钥d2,根据预定的基点G和选择的 签名私钥d和加密私钥d2,分别确定出相应的签名公钥Q和加密公钥Q2,其 中,签名公钥Q满足Q=dG,加密公钥Q2满足Q2=d2G。

基于上述预先确定的各参数,本发明实施例提供的一种数字签名方法, 流程如图2所示,具体包括如下步骤:

S201:发送方对原始信息M进行哈希运算后得到哈希值e;并将M使用 加密公钥进行加密运算后得到加密信息。

具体地,发送方可以对原始信息M进行哈希运算后得到哈希值e。同时, 发送方可以选取一个随机数t后,根据如下公式1、2计算点H1和点H2的坐标:

H1=tG  (公式1)

H2=tQ2  (公式2)

其中,随机数k取值1~n-1,G为X-Y坐标系中的一个预定点,Q2为加 密公钥。

继而,发送方可以根据如下公式3对原始信息M进行处理,得到处理后 的信息m:

m=MxH2mod n  (公式3)

其中,n为设定参数,xH2为点H2的横坐标,mod为取余运算符。

之后,发送方可以将(xH1,m)作为得到的加密信息;其中,xH1为点H1的横坐标。这样,通过上述加密算法的引入,可以使得原始信息再传递过程 中不泄露,而且,后续结合椭圆曲线签名算法的破解和攻击复杂性,使得经 加密算法处理后的信息的安全性得到很好的保障。

S202:发送方对M运用e进行数字签名得到M的签名后,将M的签名 与加密信息一并发送给接收方。

具体地,发送方可以选取一个随机数k后,对原始信息M运用得到的哈 希值e进行数字签名,得到M的签名,其中,随机数k取值1~n-1。具体可 以先根据如下公式5计算点P坐标(x1,y1),并根据如下公式6、7计算出 M的签名(r,s):

kG=(x1,y1)  (公式5)

r=x1mod n  (公式6)

s=(k+e-r-d)mod n  (公式7)

其中,G为X-Y坐标系中的一个预定点,n为设定参数,d为签名私钥。

继而,发送方可以将计算出的M的签名(r,s)和加密信息(xH1,m) 一起向接收方进行发送。

实际应用中,在没有结合加密算法对原始信息进行加密的情况下,攻击 者可以直接获取传递的原始信息M,并计算出哈希值e,继而,结合M的签 名(r,s),可以通过s=(k+e+d+r)mod n来获取未知的k+d,虽然攻击者 无法获取秘钥d和k,但是可利用获取的k+d假冒签名,且接受者无法判断是 否假冒签名。因此,本发明提供的技术方案中,在引入的加密算法后,攻击 者将无法直接获取哈希值e,也就无法获取冒充签名。且,相比现有的椭圆曲 线签名算法中求逆运算和乘法运算,在保证签名安全性的情况下,本发明提 供的加法运算更简洁,大大降低运算复杂度和占用的资源,即大大提高了数 字签名和签名认证的效率。

S203:接收方使用加密私钥将加密信息进行解密得到M后,对解密后得 到的M进行哈希运算得到哈希值e。

具体地,接收方接收到原始信息M的签名(r,s)和加密信息(xH1,m) 后,可以先使用预先确定的加密私钥d2将加密信息(xH1,m)进行解密,得 到原始信息M。具体地,可以将加密私钥d2与加密信息中的xH1相乘后得到xH2后,并根据公式4得到原始信息M:

M=m(xH2)-1mod n  (公式4)

继而,对解密后得到的原始信息M进行哈希运算得到哈希值e。

S204:接收方利用得到的e,以及接收到的M的签名进行签名认证。

具体地,接收方可以先根据如下公式8计算出点P的坐标:

P=u1G+Q  (公式8)

其中,Q=dG,u1根据如下公式9计算得到:

u1=(s+r-e)mod n  (公式9)

继而,接收方在如下公式10中运用点P的横坐标x1计算验证值v:

v=x1mod n  (公式10)

实际应用中,对公式8进行逆推,P=u1G+Q=(s+r-e)G+Q=(s+r-e)G+dG=kG, 可以看出,若kG的横坐标x1与点P的横坐标相同,则表明签名认证成立; 否则表明签名无效;也就是说,若v等于r,则判断签名有效;否则,判断签 名无效。

基于上述数字签名方法,本发明实施例还提供了一种数字签名装置,其 内部结构如图3所示,具体包括:加密模块301、签名模块302。

其中,加密模块301用于对原始信息M进行哈希运算后得到哈希值e; 并将M使用加密公钥进行加密运算后得到加密信息。

具体地,加密模块301可以选取一个随机数t后,根据如下公式1、2计 算点H1和点H2的坐标,根据如下公式3对原始M进行处理得到处理后的信息 m,之后,将(xH1,m)作为得到的加密信息;

H1=tG  (公式1)

H2=tQ2  (公式2)

m=MxH2mod n  (公式3)

其中,G为X-Y坐标系中的一个预定点,Q2为所述加密公钥;n为设定 参数,xH2为点H2的横坐标;xH1为点H1的横坐标。

签名模块302用于对M运用e进行数字签名得到M的签名后,将M的 签名与从加密模块301接收的加密信息一并发送给接收方。

具体地,签名模块302可以接收加密模块301输出的加密信息(xH1,m), 选取一个随机数k后,根据如下公式5计算点P坐标(x1,y1),并根据如下 公式6、7计算出M的签名(r,s):

kG=(x1,y1)  (公式5)

r=x1mod n  (公式6)

s=(k+e-r-d)mod n  (公式7)

其中,G为X-Y坐标系中的一个预定点,n为设定参数,d为签名私钥。

这样,签名模块302将计算出的M的签名(r,s)与从加密模块301接 收的加密信息(xH1,m)一并发送给接收方。

进一步地,基于上述数字签名方法和数字签名转正,本发明实施例还提 供了一种数字签名认证装置,其内部结构如图4所示,具体包括:解密模块 401、认证模块402。

其中,解密模块401用于使用加密私钥将加密信息进行解密得到M后, 对解密后得到的M进行哈希运算得到哈希值e。

具体地,解密模块401在接收到发送方发送的签名(r,s)与加密信息(xH1, m)之后,可以将加密私钥d与xH1相乘得到xH2,根据如下公式4: M=m(xH2)-1modn,得到原始信息M。并对解密后得到的原始信息M进行哈希 运算得到哈希值e。

认证模块402用于利用解密模块401得到的哈希值e,以及接收到的M 的签名进行签名认证。

具体地,认证模块402在接收到解密模块401输出的哈希值e后,根据 如下公式8计算出点P的坐标,其中的u1是根据如下公式9计算得到的;之 后,在如下公式10中运用点P的横坐标x1计算验证值v;若v等于r,则判 断签名有效;否则,判断签名无效;

P=u1G+Q  (公式8)

u1=(s+r-e)mod n  (公式9)

v=x1mod n  (公式10)

其中,Q=dG,d为签名私钥,G为预先确定的椭圆曲线上的一个基点。

本发明的技术方案中,由于在数字签名时,还将要传递的原始信息进行 加密;从而,想仿冒数字签名的人不能使用加密后的信息直接计算出哈希值e, 也就不能利用获取的k+d假冒签名,提高了信息的签名安全性。

进一步,在签名算法中,利用了椭圆曲线数字签名算法中的曲线特点, 使得破解难度很大,以保证签名的安全性;同时简化了原算法中的倍点运算, 使得改进后的算法占用较少的运算资源,具有更快的运算速度,可以在嵌入 式设备中得到应用,提高了数字签名和签名认证的效率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤 是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读取 存储介质中,如:ROM/RAM、磁碟、光盘等。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普 通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润 饰,这些改进和润饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号