法律状态公告日
法律状态信息
法律状态
2020-03-31
授权
授权
2019-07-30
实质审查的生效 IPC(主分类):H04L9/32 申请日:20190326
实质审查的生效
2019-07-05
公开
公开
技术领域
本发明涉及信息安全领域,具体涉及一种隐式证书下的椭圆曲线数字签名算法的批认证方法。
背景技术
计算机和互联网中的数据容易被恶意用户截取并篡改,为了对数据进行保护,信息安全领域提出了数据机密性、数据完整性、数据认证性和数据追责性等需求。
在数字签名算法中有两个密钥:私钥和公钥,私钥用于对数据生成签名并且需要保持私密,公钥用于对签名进行验证并且公开给系统中的任何人。数据认证通常包含两个过程,一是发送方使用他的私钥对数据生成签名,二是接收方使用发送方的公钥对签名进行验证。假设用户U的私钥为dU,公钥为QU,在消息认证场景中,如果用户U需要发送数据m,则发送前他需要使用dU对数据生成签名sigm,然后将{m,sigm,QU}发送给接收方。接收方接收到{m,sigm,QU}后,使用QU对sigm进行验证,如果验证成功则数据是合法的,否则是非法的。数字签名可以保证在数据传输和保存的过程中,对m或者sigm的任何修改都将导致签名验证失败,验证失败的消息都将被接收方丢弃,从而保证了数据的安全性。
数字签名存在如下攻击:恶意用户evil截取{m,sigm,QU}后,修改数据m为m′,并使用devil对m′重新生成签名sigm′,然后将{m′,sigm′,Qevil}发送给接收方,接收方接收到消息后,使用Qevil对sigm′进行验证,验证将会成功,因此接收方最终接收m′。也就是说,此时接收方接收了一个恶意的数据m′而不知,系统遭到了入侵。该攻击称为中间人攻击。避免中间人攻击的方法是对QU进行保护,使中间人无法将QU修改为Qevil,即便evil将QU修改为Qevil,接收方也可以判断出Qevil的持有者为evil,而不是U,从而拒绝evil的数据。为了避免QU在传输过程中被修改,接收方可以在他的设备中预设U的公钥QU,U发送数据时直接发送{m,sigm},此时用户evil即便截取了数据并修改m为m′,他也无法生成合法的签名sigm′,因为接收方不会使用Qevil来对签名进行验证。然而,系统中的用户数以亿计,一个用户不可能预设所有用户的公钥,因此通常采用数字证书来保护QU的合法性。
数字证书由证书中心(CertificateAuthority,CA)签发,它将用户的公钥QU和用户的身份IDU使用密码学工具链接起来,并为证书生成签名来保护公钥的安全(例外:隐式证书不使用签名来保护公钥的安全),从而使得恶意节点无法修改数据交互过程中的QU,也就避免了中间人攻击。CA是一个信任的第三方,他被系统中所有的用户信任。数字证书的结构通常为{IDU,QU,infocert,sigcert},其中infocert为证书的其他信息,例如证书的签发者ID,证书的有效时间周期等等,sigcert为CA使用它的私钥dCA为证书前面几个字段中的关键字段生成的签名。用户U获取了CA为其签发的certU后,当需要对数据m进行认证时,他需要使用与certU对用的私钥dU为m生成签名sigm,然后发送{m,sigm,certU}给接收方。接收方对数据认证时,首先使用CA的公钥QCA验证certU的合法性,如果合法,则提取certU中的用户公钥QU,然后使用QU对sigm进行验证。为了对证书进行验证,CA的公钥QCA需要预设在所有用户的设备中。在发送数据时,恶意节点即便截取了{m,sigm,certU},他也不能修改数据并生成合法的签名,因为他不能修改certU。
certU中包含了IDU和QU等信息,因此它会泄露用户的身份信息,即泄露了用户隐私。假设用户生成了n条消息
在隐私保护场景中,一个用户可能需要在CA处申请多个匿名证书,这些匿名证书中的IDU并不是用户的真实ID,而是虚假的或者匿名的ID。发送消息时,U每隔几条消息就需要更换一个匿名证书,以避免恶意用户根据同一个certU持续跟踪一个车辆,因此一个用户发送的消息通常为
采用ECQV算法生成的隐式证书(implicit certificate)也是一种证书,该种证书不是使用数字签名,而是使用秘钥之间的线性关系来保护用户的公钥的安全的。隐式证书中并不直接包含用户的公钥,用户的公钥需要由公钥重构因子(public keyreconstruction data)来重构。ECDSA算法的变种算法ECDSA*也是一种数字签名算法,它生成的签名为{R,s},其中R为签名的第一个参数,它是一个椭圆曲线点;s为签名的第二个参数,它是一个数值。
使用隐式证书下的椭圆曲线数字签名算法对数据生成的签名,典型的认证方法是:首先利用公钥的重构因子重构出用户的公钥,然后使用该重构出的公钥对数据的签名进行验证,然而,这类认证方式的认证效率并不高。
发明内容
针对现有技术中的上述不足,本发明提供的隐式证书下的椭圆曲线数字签名算法的批认证方法解决了用户通过多个匿名证书来保护数据时认证开销大的问题。
为了达到上述发明目的,本发明采用的技术方案为:
提供一种隐式证书下的椭圆曲线数字签名算法的批认证方法,其包括以下步骤:
S1、获取每个待认证数据、发送方对该待认证数据生成的签名和对应的隐式证书;
S2、获取每个待认证数据的签名的第一个参数的和,得到第一结果;
S3、获取每个待认证数据的签名的第二个参数的逆与该待认证数据的摘要值的乘积之和,得到第二结果;
S4、获取每个待认证数据的签名的第二个参数的逆与签名的第一个参数的x坐标值、隐式证书的待签名部分的摘要值、数据发送方的公钥的重构因子的乘积之和,得到第三结果;
S5、获取每个待认证数据的签名的第二个参数的逆与签名的第一个参数的x坐标值的乘积之和,得到第四结果;
S6、获取第二结果与对应的椭圆曲线上的基点的乘积,得到更新后的第二结果;获取第四结果与证书中心的公钥的乘积,得到更新后的第四结果;
S7、判断第一结果是否等于更新后的第二结果与第三结果、更新后的第四结果之和,若是则该批次的数据包均合法,通过认证,否则不通过认证。
进一步地,步骤S2的具体方法为:
根据公式
获取每个待认证数据的签名的第一个参数的和,得到第一结果A;其中l为待认证数据的总数;Ri为第i个待认证数据的签名的第一个参数。
进一步地,步骤S3的具体方法为:
根据公式
获取每个待认证数据的签名的第二个参数的逆与该待认证数据的摘要的乘积之和,得到第二结果B;其中l为待认证数据的总数;si为第i个待认证数据的签名的第二个参数;
进一步地,步骤S4的具体方法为:
根据公式
获取每个待认证数据的签名的第二个参数的逆与签名的第一个参数的x坐标值、隐式证书的待签名部分的摘要值、数据发送方的公钥的重构因子的乘积之和,得到第三结果C;其中l为待认证数据的总数;si为第i个待认证数据的签名的第二个参数;Rix为第i个待认证数据的签名的第一个参数的x坐标值; 进一步地,步骤S5的具体方法为: 根据公式 获取每个待认证数据的签名的第二个参数的逆与签名的第一个参数的x坐标值的乘积之和,得到第四结果D;其中l为待认证数据的总数;si为第i个待认证数据的签名的第二个参数;Rix为第i个待认证数据的签名的第一个参数的x坐标值。 进一步地,步骤S6的具体方法为: 分别根据公式 得到更新后的第二结果B'和更新后的第四结果D';其中l为待认证数据的总数;si为第i个待认证数据的签名的第二个参数;Rix为第i个待认证数据的签名的第一个参数的x坐标值; 进一步地,步骤S7的具体方法为: 判断公式 A=B′+C+D′ 是否成立,即判断公式 是否成立,若是则该批次的数据包均合法,通过认证,否则不通过认证;其中A为第一结果;B'为更新后的第二结果;C为第三结果;D'为更新后的第四结果;l为待认证数据的总数;si为第i个待认证数据的签名的第二个参数;Rix为第i个待认证数据的签名的第一个参数的x坐标值; 本发明的有益效果为:当需要被认证的待认证数据越多且均为合法数据时,本发明相对于传统方法越能减少认证性能开销,可以减少约
附图说明
图1为本发明的流程示意图;
图2为逐个认证和批认证的性能开销对比图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
如图1所示,该隐式证书下的椭圆曲线数字签名算法的批认证方法包括以下步骤:
S1、获取每个待认证数据、发送方对该待认证数据生成的签名和对应的隐式证书;
S2、获取每个待认证数据的签名的第一个参数的和,得到第一结果;
S3、获取每个待认证数据的签名的第二个参数的逆与该待认证数据的摘要值的乘积之和,得到第二结果;
S4、获取每个待认证数据的签名的第二个参数的逆与签名的第一个参数的x坐标值、隐式证书的待签名部分的摘要值、数据发送方的公钥的重构因子的乘积之和,得到第三结果;
S5、获取每个待认证数据的签名的第二个参数的逆与签名的第一个参数的x坐标值的乘积之和,得到第四结果;
S6、获取第二结果与对应的椭圆曲线上的基点的乘积,得到更新后的第二结果;获取第四结果与证书中心的公钥的乘积,得到更新后的第四结果;
S7、判断第一结果是否等于更新后的第二结果与第三结果、更新后的第四结果之和,若是则该批次的数据包均合法,通过认证,否则不通过认证。
步骤S2的具体方法为:根据公式
获取每个待认证数据的签名的第一个参数的和,得到第一结果A;其中l为待认证数据的总数;Ri为第i个待认证数据的签名的第一个参数。
步骤S3的具体方法为:根据公式
获取每个待认证数据的签名的第二个参数的逆与该待认证数据的摘要的乘积之和,得到第二结果B;其中l为待认证数据的总数;si为第i个待认证数据的签名的第二个参数;
步骤S4的具体方法为:根据公式
获取每个待认证数据的签名的第二个参数的逆与签名的第一个参数的x坐标值、隐式证书的待签名部分的摘要值、数据发送方的公钥的重构因子的乘积之和,得到第三结果C;其中l为待认证数据的总数;si为第i个待认证数据的签名的第二个参数;Rix为第i个待认证数据的签名的第一个参数的x坐标值;
步骤S5的具体方法为:根据公式
获取每个待认证数据的签名的第二个参数的逆与签名的第一个参数的x坐标值的乘积之和,得到第四结果D;其中l为待认证数据的总数;si为第i个待认证数据的签名的第二个参数;Rix为第i个待认证数据的签名的第一个参数的x坐标值。
步骤S6的具体方法为:分别根据公式
得到更新后的第二结果B'和更新后的第四结果D';其中l为待认证数据的总数;si为第i个待认证数据的签名的第二个参数;Rix为第i个待认证数据的签名的第一个参数的x坐标值;
述步骤S7的具体方法为:判断公式
A=B′+C+D′
是否成立,即判断公式
是否成立,若是则该批次的数据包均合法,通过认证,否则不通过认证;其中A为第一结果;B'为更新后的第二结果;C为第三结果;D'为更新后的第四结果;l为待认证数据的总数;si为第i个待认证数据的签名的第二个参数;Rix为第i个待认证数据的签名的第一个参数的x坐标值;
在本发明的一个实施例中,如图2所示,使用本方法进行认证的计算开销减少了大约当l足够大时大约减少66%,因此本发明提出的批认证方法能够明显提高系统吞吐率。
机译: 具有主动安全性的基于椭圆曲线数字签名算法(ECDSA)的数字签名安全有弹性的分布式生成方法
机译: 基于椭圆曲线数字签名算法(ECDSA)的具有主动安全性的安全和弹性分布式生成方法
机译: 基于椭圆曲线数字签名算法(ECDSA)的具有主动安全性的安全和弹性分布式生成方法