基于RSA的协同数字签名方法、装置及电子设备与流程

文档序号:18406109发布日期:2019-08-10 00:24阅读:398来源:国知局
基于RSA的协同数字签名方法、装置及电子设备与流程

本发明涉及信息安全技术领域,尤其涉及一种基于rsa的协同数字签名方法、装置及电子设备。



背景技术:

rsa数字签名体制是目前主流的数字签名方案之一,在国内的金融、证券、电力等重要领域都有较大的应用市场。

目前数字签名在国内外各个行业都有广泛的应用需求,而数字签名的实现方式主要分为两种,软件实现和硬件实现。

软件实现rsa数字签名一般是利用高性能cpu或gpu来实现,通过大数量的cpu/gpu的多核或众核计算优势,可以达到每秒数十万次签名级别的性能。但软件实现rsa数字签名时,用户的私钥会出现在内存中,可能造成私钥泄露,带来安全隐患。

硬件实现rsa数字签名一般是采用fpga/asic密码芯片/pci-e密码卡/等来实现。硬件实现rsa数字签名时,用户的私钥只存在于硬件载体中,安全性高。但硬件实现受限于硬件资源或工艺水平,硬件实现数字签名性能比较低,大概只能够到每秒签名几十次~几万次级别的性能,可能无法应付某些高并发、高性能场景的需求。



技术实现要素:

本发明所要解决的技术问题是针对现有技术存在的问题,提供一种基于rsa的协同数字签名方法、装置及电子设备。

本发明解决上述技术问题的技术方案如下:一种基于rsa的协同数字签名方法,包括:通过第一签名实体和第二签名实体协同实现基于rsa的数字签名;其中,rsa签名运算拆分成两部分运算,一部分为费时操作,另一部分为安全操作,第一签名实体执行费时操作,第二签名实体执行安全操作;所述第一签名实体的运算性能高于所述第二签名实体,所述第二签名实体的安全性能高于所述第一签名实体;用户私存储于所述第二签名实体中。

为解决上述技术问题,本发明还提供一种基于rsa的协同数字签名装置,包括:包括第一签名实体和第二签名实体;所述第一签名实体和第二签名实体协同实现基于rsa的数字签名;其中,rsa签名运算拆分成两部分运算,一部分为费时操作,另一部分为安全操作,第一签名实体执行费时操作,第二签名实体执行安全操作;所述第一签名实体的运算性能高于所述第二签名实体,所述第二签名实体的安全性能高于所述第一签名实体;用户私存储于所述第二签名实体中。

为解决上述技术问题,本发明还提供一种电子设备,包括上述方案所述的基于rsa的协同数字签名装置。

本发明的有益效果是:通过第一签名实体和第二签名实体协同实现基于rsa的数字签名;用户私钥存储于安全性能高的第二签名实体中,保证私钥的安全性;安全性要求不高的费时运算由高性能的第一签名实体来完成,第二签名实体进行协同签名,提高了签名效率,且仅由两个实体即可实现完整的协调数字签名,实现简单方便。

附图说明

图1为本发明实施例提供的一种基于rsa的协同数字签名方法的示意性流程图;

图2为本发明实施例提供的一种基于rsa的协同数字签名方法的示意性流程图;

图3为本发明实施例提供的一种基于rsa的协同数字签名方法消息交互示意图;

图4为本发明实施例提供的一种基于rsa的协同数字签名装置示意结构框图。

具体实施方式

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

本发明实施例提供的一种基于rsa的协同数字签名方法,如图1所示,该方法包括:

通过第一签名实体和第二签名实体协同实现基于rsa的数字签名;其中,rsa签名运算拆分成两部分运算,一部分为费时操作,另一部分为安全操作,第一签名实体执行费时操作,第二签名实体执行安全操作;所述第一签名实体的运算性能高于所述第二签名实体,所述第二签名实体的安全性能高于所述第一签名实体;用户私存储于所述第二签名实体中。

上述实施例中,通过第一签名实体和第二签名实体协同实现基于rsa的数字签名;本发明实施例依托于两个实体,第一签名实体具有高性能运算能力,第二签名实体具有高安全性和高可靠性;用户私钥存储于安全性能高的第二签名实体中,保证私钥的安全性;安全性要求不高的费时运算由高性能的第一签名实体来完成,提高了签名效率,且仅由两个实体即可实现完整的协调数字签名,实现简单方便。

优选地,本发明实施例提供的一种基于rsa的协同数字签名方法。如图2所示,该方法包括:

s1,第二签名实体根据用户私钥d生成高位私钥dh和辅助私钥ds,并将所述高位私钥dh和辅助私钥ds发送给第一签名实体;

s2,所述第一签名实体根据所述高位私钥dh和辅助私钥ds生成第一签名c1和第二签名c2,并将所述第一签名c1和第二签名c2组成签名消息包发送给所述第二签名实体;

s3,所述第二签名实体根据所述签名消息包和所述第二签名实体中存放的核心私钥dk进行协同签名,得到标准数字签名c。

需要说明的是,用户的签名密钥对为(e,d,n),是n的欧拉函数,n=p*q,其中p和q是素数。待签名消息为m,其中签名私钥和欧拉函数存放在第二签名实体中,签名公钥(e,n)通过数字证书或其他方式安全的分发出去。

上述实施例中,核心私钥一直存在于第二签名实体中,第二签名实体安全性能高,可以保证私钥的安全性;安全性要求不高的费时运算由高性能的第一签名实体来完成,提升实现效率;协议简单方便,两个实体只需要两次交互就能完成完整的数字签名,实现简单方便;在保证高性能的同时,完整的保护用户私钥,提高安全性。

优选地,所述第二签名实体根据用户私钥d生成高位私钥dh和辅助私钥ds包括:将用户私钥钥d分成高位私钥为dh和低位私钥为dl,dh和dl的长度为half_len=len/2,len为支持的rsa长度;随机选取预设长度范围的随机数作为核心私钥dk;该实施例中,随机选取长度为150bit的随机数dk,作为核心私钥;利用核心私钥dk和低位私钥dl确定辅助私钥ds;将所述高位私钥dh和辅助私钥ds发送给所述第一签名实体。

需要说明的是,用户私钥d和欧拉函数存放在第二签名实体中,支持的rsa长度为len(len为1024/2048/3072/4096),将用户私钥d分成高低两半部分,高位私钥为dh,低位私钥为dl,dh可以通过公开参数计算得到,因此不需要保证其安全性。dh和dl的长度为half_len=len/2;第二签名实体随机选取预设长度范围(如100-200bit)的随机数作为核心私钥dk;并利用核心私钥dk和低位私钥dl计算辅助私钥ds,将高位私钥dh和辅助私钥ds发送给第一签名实体。

上述实施例中,由第一签名实体计算rsa签名的部分结果,然后由第二签名实体继续计算出完整的rsa签名结果,提高了第二签名实体的rsa签名运算速度,而且没有影响rsa私钥的安全性。

优选地,所述利用核心私钥dk和低位私钥dl确定辅助私钥ds的计算公式如下:

其中,为n的欧拉函数,存储于所述第二签名实体中。

上述实施例中,通过核心私钥dk和低位私钥dl计算出辅助私钥ds,并将ds发给第一签名实体,以保证不泄露rsa低位私钥dl的信息。

优选地,所述第一签名实体根据所述高位私钥dh和辅助私钥ds确定第一签名c1和第二签名c2,

其中,m为待签名消息,len为支持的rsa长度,n=p*q,其中p和q是素数。

上述实施例中,第一签名实体计算出第一签名c1和第二签名c2,并发给第二签名实体,可以减少第二签名实体的计算量。

优选地,所述第二签名实体根据所述签名消息包和所述第二签名实体中存放的核心私钥dk进行协同签名,得到标准数字签名c的计算公式如下:

c=c1*c3modn;

其中,n=p*q,其中p和q是素数。

上述实施例中,第二签名实体根据第一签名c1和第二签名c2,计算出最后的rsa签名结果,提高了rsa签名的速度。

优选地,如图3所示,该实施例中,所述第一签名实体采用cpu或gpu;所述第二签名实体采用密码卡。

第二签名实体密码卡首先生成相关参数,相关参数包括高位私钥dh、低位私钥dl、核心私钥dk和辅助私钥ds,密码卡将相关参数中的高位私钥dh和辅助私钥ds发送给第一签名实体cpu/gpu,核心私钥dk一直存储于密码卡中,可有效保证核心私钥的安全性;第一签名实体cpu/gpu根据所述高位私钥dh和辅助私钥ds生成部分签名c1和c2,并将c1和c2组成签名消息包发给第二签名实体密码卡,密码卡根据签名消息包和核心私钥dk进行协调签名,得到标准数字签名。

上述实施例中,第一签名实体采用cpu或gpu,cpu或gpu的计算性能高,安全性要求不高的费时签名运算由第一签名实体执行,提高实现效率;第二签名采用密码卡,密码卡安全性能高,用户私钥存储于安全性能高的第二签名实体中,保证私钥的安全性,大大提高了签名的安全性。

上文结合图1和图2,详细描述了根据本发明实施例提供的基于rsa的协同数字签名方法。下面结合图3,详细描述本发明实施例提供的基于rsa的协同数字签名装置。

如图4所示,本发明实施例还提供一种基于rsa的协同数字签名装置,包括:第一签名实体和第二签名实体;所述第一签名实体和第二签名实体协同实现基于rsa的数字签名;其中,rsa签名运算拆分成两部分运算,一部分为费时操作,另一部分为安全操作,第一签名实体执行费时操作,第二签名实体执行安全操作;所述第一签名实体的运算性能高于所述第二签名实体,所述第二签名实体的安全性能高于所述第一签名实体;用户私存储于所述第二签名实体中。

上述实施例中,通过第一签名实体和第二签名实体协同实现基于rsa的数字签名;用户私钥存储于安全性能高的第二签名实体中,保证私钥的安全性;安全性要求不高的费时运算由高性能的第一签名实体来完成,提高了签名效率,且仅由两个实体即可实现完整的协调数字签名,实现简单方便。本发明实施例通信双方通过随机数分割、协同数字签名等技术实现了安全、高效地完成数字签名的功能。本发明实施例结合了数字签名的cpu/gpu等软件实现的高性能优势和密码芯片/密码卡等硬件实现的高安全性优势,由两个实体协同完成数字签名运算,保证了高性能的同时,提高了用户私钥的安全性。

优选地,所述第一签名实体和第二签名实体协同实现基于rsa的数字签名包括:所述第二签名实体根据用户私钥d生成高位私钥dh和辅助私钥ds,并将所述高位私钥dh和辅助私钥ds发送给第一签名实体;所述第一签名实体根据所述高位私钥dh和辅助私钥ds生成第一签名c1和第二签名c2,并将所述第一签名c1和第二签名c2组成签名消息包发送给所述第二签名实体;所述第二签名实体根据所述签名消息包和所述第二签名实体中存放的核心私钥dk进行协同签名,得到标准数字签名c。

优选地,所述第二签名实体根据用户私钥d生成高位私钥dh和辅助私钥ds包括:将用户私钥钥d分成高位私钥为dh和低位私钥为dl,dh和dl的长度为half_len=len/2,len为支持的rsa长度;随机选取预设长度范围的随机数作为核心私钥dk;利用核心私钥dk和低位私钥dl确定辅助私钥ds;将所述高位私钥dh和辅助私钥ds发送给所述第一签名实体。

优选地,所述利用核心私钥dk和低位私钥dl确定辅助私钥ds的计算公式如下:

其中,为n的欧拉函数,存储于所述第二签名实体中。

优选地,所述第一签名实体根据所述高位私钥和辅助私钥确定第一签名c1和第二签名c2,

其中,m为待签名消息,len为支持的rsa长度,n=p*q,其中p和q是素数。

优选地,所述第二签名实体根据所述签名消息包和所述第二签名实体中存放的核心私钥dk进行协同签名,得到标准数字签名c的计算公式如下:

c=c1*c3modn;

其中,n=p*q,其中p和q是素数。

优选地,所述第一签名实体采用cpu或gpu;所述第二签名实体采用密码卡。

本发明实施例还提供一种电子设备,包括上述实施例提供的rsa的协同数字签名装置。

本发明实施例中,基于rsa的协同数字签名装置及电子设备可实现上述实施例中方法所描述的全部功能,其具体实现方式和取得的对应效果与方法部分对应,此处不再赘述。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1