一种有限资源下的数字签名方法、装置及系统与流程

文档序号:11234388阅读:501来源:国知局
一种有限资源下的数字签名方法、装置及系统与流程

本公开一般涉及计算机领域,具体涉及物联网技术,尤其涉及一种有限资源下的数字签名方法、装置及系统。



背景技术:

近年来物联网应用增长迅速,但随之也出现了越来越多的由联网设备引发的安全事件,这些安全事件许多是由于缺乏设备认证保护措施造成。由于物联网应用一般存在海量设备的接入认证、需支持设备到设备认证等特点,目前有一种基于标识的密码算法(ibc,identity-basedcryptograph)及体系,即将设备标识号直接作为设备公钥,设备私钥本地安全保存。认证双方使用私钥生成挑战数据,并直接使用对方标识号进行验证。较传统pki技术,ibc技术能够较好地简化系统结构和减少交互流程,并能很方便的支持设备到设备的直接认证。

基于标识的国产密码算法sm9算法更加方便了基于标识的密码算法在国内的应用。但是,sm9算法签名、验证签名流程里用到的椭圆曲线上的一些运算,如:双线性映射、乘法循环群上的指数运算等是较耗费计算资源的运算,在使用软件实现时编译得到的实现文件体积也通常较大。由于很多物联网设备其计算能力和存储空间往往有限,因此限制了该技术在物联网中的使用。



技术实现要素:

鉴于现有技术中的上述缺陷或不足,期望提供一种有限资源下的数字签名方法、装置及系统,以减少终端上的计算复杂度。

第一方面,本发明实施例提供一种有限资源下的数字签名方法,所述方法包括:

获取初始化时签名代理服务器针对椭圆曲线双线性映射运算进行预计算的全部预计算结果或者部分预计算结果;

根据签名代理服务器进行预计算的预计算结果计算数字签名,和/或根据签名代理服务器进行预计算的预计算结果验证数字签名。

优选的,所述初始化时签名代理服务器针对椭圆曲线双线性映射运算进行预计算,具体为:

初始化时签名代理服务器计算

其中,i=0,1,...,|n|-1,p1为加法循环群g1的生成元,ppub-s为签名主公钥,n为循环群的阶,为大于2191的素数,e(p1,ppub-s)为p1,ppub-s的椭圆曲线上的双线性映射运算,|n|为n的二进制位数。

进一步,当获取初始化时签名代理服务器进行预计算的全部预计算结果时,所述根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

生成随机数r∈[1,n-1],提取r中值为1的比特位下标集合ix,若ix∩i'=φ则重新生成随机数r∈[1,n-1]直至ix∩i'=φ,其中i为i值的集合;

计算阶为素数n的乘法循环群gt中的元素

根据所述w计算数字签名。

当获取初始化时签名代理服务器进行预计算的部分预计算结果时,所述根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

生成随机数r∈[1,n-1],提取r中值为1的比特位下标集合ix,若ix∩i'=φ则重新生成随机数r∈[1,n-1]直至ix∩i'=φ,其中i′为所获取的预计算结果对应的i值的集合;

计算

向签名代理服务器发送ix′=ix∩i″,并获取签名代理服务器计算的其中,i″为未获取的预计算结果对应的i值的集合;

计算阶为素数n的乘法循环群gt中的元素w=w1·w2;

根据所述w计算数字签名。

进一步,所述根据签名代理服务器进行预计算的预计算结果验证数字签名,具体包括:

确定接收到的消息m'的数字签名(h′,s′);

计算阶为素数n的加法循环群g2中的元素p;

确定t为i=h′时的ei值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值;

根据u、t、h'、m',确定验证结果。

更进一步,所述确定t为i=h′时的ei值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值,具体包括:

当本地获取的预计算结果中包括h'对应的ei时,直接通过本地获取的预计算结果确定t值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值;

当本地获取的预计算结果中不包括h'对应的ei时,将h'、s'、p发送给签名代理服务器,接收签名代理服务器确定的t值以及通过对s'、p椭圆曲线上双线性映射运算计算的u值。

第二方面,本发明实施例还提供一种有限资源下的数字签名方法,所述方法包括:

在初始化时进行针对椭圆曲线双线性映射运算的预计算;

将全部预计算结果或者部分预计算结果发送给终端,由终端根据签名代理服务器进行预计算的预计算结果计算数字签名,和/或根据签名代理服务器进行预计算的预计算结果验证数字签名。

优选的,所述在初始化时进行预计算,具体包括:

在初始化时计算

其中,i=0,1,...,|n|-1,p1为加法循环群g1的生成元,ppub-s为签名主公钥,n为循环群的阶,为大于2191的素数,e(p1,ppub-s)为p1,ppub-s的椭圆曲线上的双线性映射运算,|n|为n的二进制位数。

进一步,当将部分预计算结果发送给终端时,所述由终端根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

接收终端根据随机数r∈[1,n-1]计算的ix′=ix∩i″,其中ix为r中值为1的比特位下标集合,i″为未获取的预计算结果对应的i值的集合;

计算并将w2值发送给终端,由终端根据该w2值计算数字签名。

进一步,所述由终端根据签名代理服务器进行预计算的预计算结果验证数字签名,具体包括:

接收终端验证消息m'的数字签名(h′,s′)时发送的s'、p,所述p为阶为素数n的加法循环群g2中的元素;

通过对s'、p椭圆曲线上双线性映射运算计算u值,并发送给终端,由终端根据该u值确定验证结果。

更进一步,还包括:

当终端本地获取的预计算结果中不包括h'对应的ei时,接收终端发送的h'值;

确定t为i=h′时的ei值,并将该t值发送给终端,由终端根据该t值确定验证结果。

第三方面,本发明实施例还提供一种有限资源下的数字签名装置,所述装置包括:

获取单元,用于获取初始化时签名代理服务器进行针对椭圆曲线双线性映射运算预计算的全部预计算结果或者部分预计算结果;

计算单元,用于根据签名代理服务器进行预计算的预计算结果计算数字签名,和/或根据签名代理服务器进行预计算的预计算结果验证数字签名。

优选的,所述初始化时签名代理服务器进行预计算,具体为:

初始化时签名代理服务器计算

其中,i=0,1,...,|n|-1,p1为加法循环群g1的生成元,ppub-s为签名主公钥,n为循环群的阶,为大于2191的素数,e(p1,ppub-s)为p1,ppub-s的椭圆曲线上的双线性映射运算,|n|为n的二进制位数。

进一步,当获取初始化时签名代理服务器进行预计算的全部预计算结果时,所述计算单元根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

生成随机数r∈[1,n-1],提取r中值为1的比特位下标集合ix,若ix∩i'=φ则重新生成随机数r∈[1,n-1]直至ix∩i'=φ,其中i为i值的集合;

计算阶为素数n的乘法循环群gt中的元素

根据所述w计算数字签名。

进一步,当获取初始化时签名代理服务器进行预计算的部分预计算结果时,所述计算单元根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

生成随机数r∈[1,n-1],提取r中值为1的比特位下标集合ix,若ix∩i'=φ则重新生成随机数r∈[1,n-1]直至ix∩i'=φ,其中i′为所获取的预计算结果对应的i值的集合;

计算

向签名代理服务器发送ix′=ix∩i″,并获取签名代理服务器计算的其中,i″为未获取的预计算结果对应的i值的集合;

计算阶为素数n的乘法循环群gt中的元素w=w1·w2;

根据所述w计算数字签名。

进一步,所述计算单元根据签名代理服务器进行预计算的预计算结果验证数字签名,具体包括:

确定接收到的消息m'的数字签名(h′,s′);

计算阶为素数n的加法循环群g2中的元素p;

确定t为i=h′时的ei值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值;

根据u、t、h'、m',确定验证结果。

更进一步,所述计算单元确定t为i=h′时的ei值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值,具体包括:

当本地获取的预计算结果中包括h'对应的ei时,直接通过本地获取的预计算结果确定t值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值;

当本地获取的预计算结果中不包括h'对应的ei时,将h'、s'、p发送给签名代理服务器,接收签名代理服务器确定的t值以及通过对s'、p椭圆曲线上双线性映射运算计算的u值。

第四方面,本发明实施例还提供一种有限资源下的数字签名装置,所述装置包括:

预计算单元,用于在初始化时进行针对椭圆曲线双线性映射运算的预计算;

辅助计算单元,用于将全部预计算结果或者部分预计算结果发送给终端,由终端根据签名代理服务器进行预计算的预计算结果计算数字签名,和/或根据签名代理服务器进行预计算的预计算结果验证数字签名。

优选的,所述预计算单元具体用于:

在初始化时计算

其中,i=0,1,...,|n|-1,p1为加法循环群g1的生成元,ppub-s为签名主公钥,n为循环群的阶,为大于2191的素数,e(p1,ppub-s)为p1,ppub-s的椭圆曲线上的双线性映射运算,|n|为n的二进制位数。

进一步,当将部分预计算结果发送给终端时,所述辅助计算单元还用于:

接收终端根据随机数r∈[1,n-1]计算的ix′=ix∩i″,其中ix为r中值为1的比特位下标集合,i″为未获取的预计算结果对应的i值的集合;

计算并将w2值发送给终端,由终端根据该w2值计算数字签名。

进一步,所述辅助计算单元还用于:

接收终端验证消息m'的数字签名(h′,s′)时发送的s'、p,所述p为阶为素数n的加法循环群g2中的元素;

通过对s'、p椭圆曲线上双线性映射运算计算u值,并发送给终端,由终端根据该u值确定验证结果。

更进一步,所述辅助计算单元还用于:

当终端本地获取的预计算结果中不包括h'对应的ei时,接收终端发送的h'值;

确定t为i=h′时的ei值,并将该t值发送给终端,由终端根据该t值确定验证结果。

第五方面,本发明实施例还提供一种有限资源下的数字签名系统,所述系统包括:

签名代理服务器,用于在初始化时进行针对椭圆曲线双线性映射运算的预计算,将全部预计算结果或者部分预计算结果发送给终端;

终端,用于根据签名代理服务器进行预计算的预计算结果计算数字签名,和/或根据签名代理服务器进行预计算的预计算结果验证数字签名。

优选的,所述签名代理服务器在初始化时进行预计算,具体为:

在初始化时计算

其中,i=0,1,...,|n|-1,p1为加法循环群g1的生成元,ppub-s为签名主公钥,n为循环群的阶,为大于2191的素数,e(p1,ppub-s)为p1,ppub-s的椭圆曲线上的双线性映射运算,|n|为n的二进制位数。

进一步,当签名代理服务器将全部预计算结果发送给终端时,所述终端根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

生成随机数r∈[1,n-1],提取r中值为1的比特位下标集合ix,若ix∩i'=φ则重新生成随机数r∈[1,n-1]直至ix∩i'=φ,其中i为i值的集合;

计算阶为素数n的乘法循环群gt中的元素

根据所述w计算数字签名。

进一步,当签名代理服务器将部分预计算结果发送给终端时,所述终端根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

生成随机数r∈[1,n-1],提取r中值为1的比特位下标集合ix,若ix∩i′=φ则重新生成随机数r∈[1,n-1]直至ix′=ix∩i″,其中i′为所获取的预计算结果对应的i值的集合;

计算

向签名代理服务器发送ix′=ix∩i″,并获取签名代理服务器计算的其中,i″为未获取的预计算结果对应的i值的集合;

计算阶为素数n的乘法循环群gt中的元素w=w1·w2;

根据所述w计算数字签名;

所述签名代理服务器还用于:

接收终端计算的i″;

计算并将w2值发送给终端。

进一步,所述终端根据签名代理服务器进行预计算的预计算结果验证数字签名,具体包括:

确定接收到的消息m'的数字签名(h′,s′);

计算阶为素数n的加法循环群g2中的元素p;

确定t为i=h′时的ei值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值;

根据u、t、h'、m',确定验证结果;

所述签名代理服务器还用于:

接收终端发送的s'、p;

通过对s'、p椭圆曲线上双线性映射运算计算u值,并发送给终端。

更进一步,所述终端确定t为i=h′时的ei值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值,具体包括:

当本地获取的预计算结果中包括h'对应的ei时,直接通过本地获取的预计算结果确定t值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值;

当本地获取的预计算结果中不包括h'对应的ei时,将h'、s'、p发送给签名代理服务器,接收签名代理服务器确定的t值以及通过对s'、p椭圆曲线上双线性映射运算计算的u值。

所述签名代理服务器还用于:

当终端本地获取的预计算结果中不包括h'对应的ei时,接收终端发送的h'值;

确定t为i=h′时的ei值,并将该t值发送给终端。

第六方面,本发明实施例还提供一种终端设备,包括处理器和存储器;

所述存储器包含可由所述处理器执行的指令以使得所述处理器执行第一方面所提供的签名的方法。

第七方面,本发明实施例还提供一种签名代理服务器设备,包括处理器和存储器;

所述存储器包含可由所述处理器执行的指令以使得所述处理器执行第二方面所提供的签名的方法。

第八方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序用于实现第一方面所提供的签名的方法。

第九方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序用于实现第二方面所提供的签名的方法。

本发明实施例提供有限资源下的数字签名方法、装置及系统,在初始化时由签名代理服务器进行预计算,终端获取其全部预计算结果或者部分预计算结果,再根据签名代理服务器进行预计算的预计算结果计算数字签名,和/或根据签名代理服务器进行预计算的预计算结果验证数字签名。由于由签名代理服务器承担了预计算的计算量,从而减少了终端上的计算复杂度,减小了终端的计算负担。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为本发明实施例提供的有限资源下的数字签名方法流程图;

图2为本发明实施例提供的根据签名代理服务器进行预计算的预计算结果计算数字签名的方法流程图;

图3为本发明实施例提供的根据签名代理服务器进行预计算的预计算结果验证数字签名的方法流程图;

图4为本发明实施例提供的另一有限资源下的数字签名方法流程图;

图5为本发明实施例提供的有限资源下的数字签名装置结构示意图;

图6为本发明实施例提供的另一有限资源下的数字签名装置结构示意图;

图7为本发明实施例提供的有限资源下的数字签名系统结构示意图;

图8为本发明实施例提供的有限资源下的数字签名设备结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

请参考图1,本发明实施例提供的有限资源下的数字签名方法,包括:

步骤s101、获取初始化时签名代理服务器针对椭圆曲线双线性映射运算进行预计算的全部预计算结果或者部分预计算结果;

步骤s102、根据签名代理服务器进行预计算的预计算结果计算数字签名,和/或根据签名代理服务器进行预计算的预计算结果验证数字签名。

由于在初始化时由签名代理服务器进行预计算,终端获取其全部预计算结果或者部分预计算结果,再根据签名代理服务器进行预计算的预计算结果计算数字签名,和/或根据签名代理服务器进行预计算的预计算结果验证数字签名。由于由签名代理服务器承担了预计算的计算量,从而减少了终端上的计算复杂度,减小了终端的计算负担,可以适用于资源有限的终端。

该方法可以应用在物联网系统中,此时,终端可以具体为物联网终端。

在初始化时,可以由终端承担尽可能多的计算量,从而尽可能多的减少终端上的计算复杂度,具体的,在步骤s101中,初始化时签名代理服务器进行预计算,具体为:

初始化时签名代理服务器计算

其中,i=0,1,...,|n|-1,p1为加法循环群g1的生成元,ppub-s为签名主公钥,n为循环群的阶,为大于2191的素数,e(p1,ppub-s)为p1,ppub-s的椭圆曲线上的双线性映射运算,|n|为n的二进制位数。

由签名代理服务器计算了ei之后,终端只需要根据该ei进行后续计算即可,减少了进行p1,ppub-s的椭圆曲线上的双线性映射运算以及高次方运算这样复杂的运算。

终端可以获取全部的预计算结果,然后完全承担后续的签名计算过程和/或签名验证过程,或者将数据发送给签名代理服务器,由签名代理服务器帮助进行计算,也可以仅获取部分预计算结果,由终端和签名代理服务器合作计算签名和/或验证签名,从而减少终端的存储负担。

当终端获取初始化时签名代理服务器进行预计算的全部预计算结果时,步骤s102中,根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

生成随机数r∈[1,n-1],提取r中值为1的比特位下标集合ix,若ix∩i'=φ则重新生成随机数r∈[1,n-1]直至ix∩i'=φ,其中i为i值的集合;

计算阶为素数n的乘法循环群gt中的元素

根据w计算数字签名。

其中,根据w计算数字签名,按照sm9算法中的方法进行计算即可,或者,本领域技术人员也可以根据其它方式通过w计算数字签名。

具体的,根据w计算数字签名的步骤包括:

将w的数据类型转换为比特串;

计算整数h=h2(m||w,n),其中,h2()为由密码杂凑函数派生的密码函数,m为待签名消息;

计算整数l=(r-h)modn,若l=0,则重新生成随机数r∈[1,n-1]计算w;

计算群g1中的元素s=[l]dsa,其中,dsa为用户a的签名私钥;

将h的数据类型转换为字节串,将s的数据类型转换为字节串,即可确定消息m的签名为(h,s)。

生成随机数r∈[1,n-1]及根据r进行计算的步骤由终端进行较佳,可以使得系统的安全性更佳,如果能够确保系统的安全性,或者对安全性要求不高,则可以由签名代理服务器完成计算w的步骤,从而进一步减少终端的计算量。

当终端只获取初始化时签名代理服务器进行预计算的部分预计算结果时,如图2所示,步骤s102中,根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

步骤s201、生成随机数r∈[1,n-1],提取r中值为1的比特位下标集合ix,若ix∩i'=φ则重新生成随机数r∈[1,n-1]直至ix∩i'=φ,其中i′为所获取的预计算结果对应的i值的集合;

步骤s202、计算

步骤s203、向签名代理服务器发送ix′=ix∩i″,并获取签名代理服务器计算的其中,i″为未获取的预计算结果对应的i值的集合;

步骤s204、计算阶为素数n的乘法循环群gt中的元素w=w1·w2;

步骤s205、根据w计算数字签名。

其中,根据w计算数字签名,按照sm9算法中的方法进行计算即可,或者,本领域技术人员也可以根据其它方式通过w计算数字签名。

终端只获取一部分预计算结果,对终端的存储空间要求就较低,步骤s201和步骤s202中,由终端生成随机数r∈[1,n-1]及根据r进行计算w1,也保证了系统的安全性,同时,终端的计算量也较低。

进一步,在进行数字签名的验证时,也可以由签名代理服务器进行辅助计算,此时,如图3所示,步骤s102中,根据签名代理服务器进行预计算的预计算结果验证数字签名,具体包括:

步骤s301、确定接收到的消息m'的数字签名(h′,s′);

步骤s302、计算阶为素数n的加法循环群g2中的元素p;

步骤s303、确定t为i=h′时的ei值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值;

步骤s304、根据u、t、h'、m',确定验证结果。

其中,步骤s302中,计算阶为素数n的加法循环群g2中的元素p,可以先计算h1=h1(ida||hid,n),再根据h1计算阶为素数n的加法循环群g2中的元素p,其中,h1为由密码杂凑函数派生的密码函数,ida为用户a的标识,可以唯一确定用户a的公钥,hid为用一个字节表示的签名私钥生成函数识别符;步骤s304中,根据u、t、h'、m',确定验证结果,可以按照sm9算法中的方法进行计算,或者,本领域技术人员也可以根据其它方式通过u、t、h'、m'确定验证结果。

具体的,通过u、t、h'、m'确定验证结果的步骤包括:

计算群gt中的元素w′=u·t,并将w'的数据类型转换为比特串,gt为阶为素数n的乘法循环群;

计算整数h2=h2(m||w,n),检验h2=h′是否成立,如果成立则验证通过,否则验证不通过。

若终端仅获取了部分预计算结果,那么在步骤s303中,确定t值时,可能需要签名代理服务器的辅助,具体的,步骤s303,确定t为i=h′时的ei值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值,具体包括:

当本地获取的预计算结果中包括h'对应的ei时,直接通过本地获取的预计算结果确定t值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值;

当本地获取的预计算结果中不包括h'对应的ei时,将h'、s'、p发送给签名代理服务器,接收签名代理服务器确定的t值以及通过对s'、p椭圆曲线上双线性映射运算计算的u值。

本发明实施例还提供一种有限资源下的数字签名方法,由签名代理服务器执行,如图4所示,该方法包括:

步骤s401、在初始化时进行针对椭圆曲线双线性映射运算的预计算;

步骤s402、将全部预计算结果或者部分预计算结果发送给终端,由终端根据签名代理服务器进行预计算的预计算结果计算数字签名,和/或根据签名代理服务器进行预计算的预计算结果验证数字签名。

进一步,在初始化时,可以由终端承担尽可能多的计算量,从而尽可能多的减少终端上的计算复杂度,此时,步骤s401中,在初始化时进行预计算,具体包括:

在初始化时计算

其中,i=0,1,...,|n|-1,p1为加法循环群g1的生成元,ppub-s为签名主公钥,n为循环群的阶,为大于2191的素数,e(p1,ppub-s)为p1,ppub-s的椭圆曲线上的双线性映射运算,|n|为n的二进制位数。

进一步,为减少终端的存储负担,可以只讲部分预计算结果发送给终端,可以由签名代理服务器辅助终端进行签名的计算,当将部分预计算结果发送给终端时,由终端根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

接收终端根据随机数r∈[1,n-1]计算的ix′=ix∩i″,其中ix为r中值为1的比特位下标集合,i″为未获取的预计算结果对应的i值的集合;

计算并将w2值发送给终端,由终端根据该w2值计算数字签名。

进一步,可以由签名代理服务器辅助终端进行签名的验证,此时,由终端根据签名代理服务器进行预计算的预计算结果验证数字签名,具体包括:

接收终端验证消息m'的数字签名(h′,s′)时发送的s'、p,p为阶为素数n的加法循环群g2中的元素;

通过对s'、p椭圆曲线上双线性映射运算计算u值,并发送给终端,由终端根据该u值确定验证结果。

当终端中存储部分预计算结果时,还可能由签名代理服务器参与t值的计算,此时,该方法还包括:

当终端本地获取的预计算结果中不包括h'对应的ei时,接收终端发送的h'值;

确定t为i=h′时的ei值,并将该t值发送给终端,由终端根据该t值确定验证结果。

应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

本发明实施例还提供一种有限资源下的数字签名装置,该装置可以具体为终端,或者设置在终端中,如图5所示,该装置包括:

获取单元501,用于获取初始化时签名代理服务器进行针对椭圆曲线双线性映射运算预计算的全部预计算结果或者部分预计算结果;

计算单元502,用于根据签名代理服务器进行预计算的预计算结果计算数字签名,和/或根据签名代理服务器进行预计算的预计算结果验证数字签名。

进一步,初始化时签名代理服务器进行预计算,具体为:

初始化时签名代理服务器计算

其中,i=0,1,...,|n|-1,p1为加法循环群g1的生成元,ppub-s为签名主公钥,n为循环群的阶,为大于2191的素数,e(p1,ppub-s)为p1,ppub-s的椭圆曲线上的双线性映射运算,|n|为n的二进制位数。

进一步,当获取初始化时签名代理服务器进行预计算的全部预计算结果时,计算单元502根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

生成随机数r∈[1,n-1],提取r中值为1的比特位下标集合ix,若ix∩i'=φ则重新生成随机数r∈[1,n-1]直至ix∩i'=φ,其中i为i值的集合;

计算阶为素数n的乘法循环群gt中的元素

根据w计算数字签名。

当获取初始化时签名代理服务器进行预计算的部分预计算结果时,计算单元502根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

生成随机数r∈[1,n-1],提取r中值为1的比特位下标集合ix,若ix∩i'=φ则重新生成随机数r∈[1,n-1]直至ix∩i'=φ,其中i′为所获取的预计算结果对应的i值的集合;

计算

向签名代理服务器发送ix′=ix∩i″,并获取代理服务器计算的其中,i″为未获取的预计算结果对应的i值的集合;

计算阶为素数n的乘法循环群gt中的元素w=w1·w2;

根据w计算数字签名。

优选的,计算单元502根据签名代理服务器进行预计算的预计算结果验证数字签名,具体包括:

确定接收到的消息m'的数字签名(h′,s′);

计算阶为素数n的加法循环群g2中的元素p;

确定t为i=h′时的ei值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值;

根据u、t、h'、m',确定验证结果。

进一步,计算单元502确定t为i=h′时的ei值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值,具体包括:

当本地获取的预计算结果中包括h'对应的ei时,直接通过本地获取的预计算结果确定t值,并将s'、p发送给签名代理服务器,接收签名代理服务器通过对s'、p椭圆曲线上双线性映射运算计算的u值;

当本地获取的预计算结果中不包括h'对应的ei时,将h'、s'、p发送给签名代理服务器,接收签名代理服务器确定的t值以及通过对s'、p椭圆曲线上双线性映射运算计算的u值。

应当理解,该装置中记载的诸单元或模块与参考图1描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于改装置及其中包含的单元,在此不再赘述。该装置可以预先实现在电子设备的浏览器或其他安全应用中,也可以通过下载等方式而加载到电子设备的浏览器或其安全应用中。该装置中的相应单元可以与电子设备中的单元相互配合以实现本申请实施例的方案。

本发明实施例还相应提供一种有限资源下的数字签名装置,该装置可以具体为签名代理服务器或者设置在签名代理服务器中,如图6所示,该装置包括:

预计算单元601,用于在初始化时进行针对椭圆曲线双线性映射运算的预计算;

辅助计算单元602,用于将全部预计算结果或者部分预计算结果发送给终端,由终端根据签名代理服务器进行预计算的预计算结果计算数字签名,和/或根据签名代理服务器进行预计算的预计算结果验证数字签名。

进一步,预计算单元601具体用于:

在初始化时计算

其中,i=0,1,...,|n|-1,p1为加法循环群g1的生成元,ppub-s为签名主公钥,n为循环群的阶,为大于2191的素数,e(p1,ppub-s)为p1,ppub-s的椭圆曲线上的双线性映射运算,|n|为n的二进制位数。

进一步,当将部分预计算结果发送给终端时,辅助计算单元602还用于:

接收终端根据随机数r∈[1,n-1]计算的ix′=ix∩i″,其中ix为r中值为1的比特位下标集合,i″为未获取的预计算结果对应的i值的集合;

计算并将w2值发送给终端,由终端根据该w2值计算数字签名。

进一步,辅助计算单元602还用于:

接收终端验证消息m'的数字签名(h′,s′)时发送的s'、p,p为阶为素数n的加法循环群g2中的元素;

通过对s'、p椭圆曲线上双线性映射运算计算u值,并发送给终端,由终端根据该u值确定验证结果。

更进一步,辅助计算单元602还用于:

当终端本地获取的预计算结果中不包括h'对应的ei时,接收终端发送的h'值;

确定t为i=h′时的ei值,并将该t值发送给终端,由终端根据该t值确定验证结果。

应当理解,该装置中记载的诸单元或模块与参考图4描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于该装置及其中包含的单元,在此不再赘述。该装置可以预先实现在电子设备的浏览器或其他安全应用中,也可以通过下载等方式而加载到电子设备的浏览器或其安全应用中。该装置中的相应单元可以与电子设备中的单元相互配合以实现本申请实施例的方案。

本发明实施例还提供一种有限资源下的数字签名系统,如图7所示,该系统包括:

签名代理服务器701,用于在初始化时针对椭圆曲线双线性映射运算进行预计算,将全部预计算结果或者部分预计算结果发送给终端;

终端702,用于根据签名代理服务器进行预计算的预计算结果计算数字签名,和/或根据签名代理服务器进行预计算的预计算结果验证数字签名。

优选的,签名代理服务器701在初始化时进行预计算,具体为:

在初始化时计算

其中,i=0,1,...,|n|-1,p1为加法循环群g1的生成元,ppub-s为签名主公钥,n为循环群的阶,为大于2191的素数,e(p1,ppub-s)为p1,ppub-s的椭圆曲线上的双线性映射运算,|n|为n的二进制位数。

当签名代理服务器701将全部预计算结果发送给终端702时,终端702根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

生成随机数r∈[1,n-1],提取r中值为1的比特位下标集合ix,若ix∩i'=φ则重新生成随机数r∈[1,n-1]直至ix∩i'=φ,其中i为i值的集合;

计算阶为素数n的乘法循环群gt中的元素

根据w计算数字签名。

当签名代理服务器701将部分预计算结果发送给终端702时,终端702根据签名代理服务器进行预计算的预计算结果计算数字签名,具体包括:

生成随机数r∈[1,n-1],提取r中值为1的比特位下标集合ix,若ix∩i'=φ则重新生成随机数r∈[1,n-1]直至ix∩i'=φ,其中i′为所获取的预计算结果对应的i值的集合;

计算

向签名代理服务器701发送ix′=ix∩i″,并获取签名代理服务器701计算的其中,i″为未获取的预计算结果对应的i值的集合;

计算阶为素数n的乘法循环群gt中的元素w=w1·w2;

根据w计算数字签名;

签名代理服务器701还用于:

接收终端702计算的i″;

计算并将w2值发送给终端702。

终端702根据签名代理服务器进行预计算的预计算结果验证数字签名,具体包括:

确定接收到的消息m'的数字签名(h′,s′);

计算阶为素数n的加法循环群g2中的元素p;

确定t为i=h′时的ei值,并将s'、p发送给签名代理服务器701,接收签名代理服务器701通过对s'、p椭圆曲线上双线性映射运算计算的u值;

根据u、t、h'、m',确定验证结果;

签名代理服务器701还用于:

接收终端702发送的s'、p;

通过对s'、p椭圆曲线上双线性映射运算计算u值,并发送给终端702。

终端702确定t为i=h′时的ei值,并将s'、p发送给签名代理服务器701,接收签名代理服务器701通过对s'、p椭圆曲线上双线性映射运算计算的u值,具体包括:

当本地获取的预计算结果中包括h'对应的ei时,直接通过本地获取的预计算结果确定t值,并将s'、p发送给签名代理服务器701,接收签名代理服务器701通过对s'、p椭圆曲线上双线性映射运算计算的u值;

当本地获取的预计算结果中不包括h'对应的ei时,将h'、s'、p发送给签名代理服务器701,接收签名代理服务器701确定的t值以及通过对s'、p椭圆曲线上双线性映射运算计算的u值。

签名代理服务器701还用于:

当终端702本地获取的预计算结果中不包括h'对应的ei时,接收终端702发送的h'值;

确定t为i=h′时的ei值,并将该t值发送给终端702。

下面参考图8,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。

如图8所示,计算机系统包括中央处理单元(cpu)801,其可以根据存储在只读存储器(rom)802中的程序或者从存储部分808加载到随机访问存储器(ram)803中的程序而执行各种适当的动作和处理。在ram803中,还存储有系统800操作所需的各种程序和数据。cpu801、rom802以及ram803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。

以下部件连接至i/o接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至i/o接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。

特别地,根据本公开的实施例,上文参考图x描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行图x的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括xx单元、yy单元以及zz单元。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,xx单元还可以被描述为“用于xx的单元”。

作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本申请的公式输入方法。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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