一种基于身份且签名长度恒定的在线离线聚合签名方法与流程

文档序号:11253706阅读:395来源:国知局
一种基于身份且签名长度恒定的在线离线聚合签名方法与流程

本发明属于信息安全技术领域,尤其涉及一种基于身份且签名长度恒定的在线离线聚合签名方法。



背景技术:

计算机技术的高速发展为人类提供了高度的自动化和现代化,而网络的迅猛发展为人们提供了便捷、快速的信息交流方式,使人类社会迅速进入了信息化时代。由于信息的传递、存储、处理等过程往往是在开放的通信网络上进行的,因而因特网的信息容易受到窃听、截取、修改、伪造、重放等各种攻击手段的威胁,其安全及其脆弱。特别是网络系统面临着很大的威胁,并成为严重的社会问题之一。随着网络技术的发展及网上活动的日益频繁,如何保证及加强信息安全性,保证电子信息的完整性,特别保证重要信息的完整,已成为国际社会普遍关心的重大问题。数字签名法应运而生,并已经开始普遍地应用于商业通讯系统,如网上商城、电子转账、网上支付、办公自动化等系统中。所谓“数字签名”就是通过某种密码运算生成一系列符号及代码组成电子密码进行签名,来代替书写签名或印章,对于这种电子式的签名还可进行技术验证,其验证的准确度是一般手工签名和图章验证无法比拟的。“数字签名”是目前电子商务、电子政务中应用最普遍、技术最成熟的、可操作性最强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出文件的原文在传输过程中有无变动,确保传输电子文件的完性、真实性和不可抵赖性。数字签名在iso7498—2标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。美国电子签名标准(dss,fips186—2)对数字签名作了如下解释:“利用一套规则和一个参数对数据计算所得的结果,用此结果能够确认签名者的身份和数据的完整性”。按上述定义pki(publickeyinfrastruction公钥基础设施)可以提供数据单元的密码变换,并能使接收者判断数据来源及对数据进行验证。在过去的几年中,已经提出了基于公钥密码技术的几种方案以提供实时认证并消除密钥分发/管理问题,这减少了协议开销。在传统的公共密钥基础设施部署中,我们需要一个可信的机构颁发证书,以认证用户的公钥,然而这种方法消耗了大量的带宽和功率,因为需要传输和验证公钥证书。shamir引入了基于身份的密码系统和签名方案,无需检查证书的有效性。当新用户加入网络时,其他节点不需要保留证书便可以安全和认证的方式进行通信。even,goldrelch和micali在1989年第一次提出在线离线签名方法的概念。在线离线签名是把数字签名分成两个阶段的签名方式,第一阶段是离线阶段,待签的消息还未被确定,签名者做一些预处理工作,由于此阶段有足够的时间,因而离线阶段算法复杂一些并不会影响到消息签名的速度;第二阶段是在线阶段,这是在已知待签消息后开始的,由于有离线阶段的准备工作,所以此阶段的运算速度非常的快。在线离线签名最大的好处是降低签名开销,因为不需要做复杂的模幂运算,只需要做简单的异或或者加成运算。聚合签名是近年被关注的一个热点,是一种有广阔前景的密码签名部件,对许多应用都有良好的支撑作用。聚合签名可以说是一种在数字签名领域的“批处理”和“压缩”技术;可以同时给多个消息多个用户提供不可否认服务,可以把任意多个用户的签名压缩成一个签名,缩短了签名的长度,这大大减小了签名的存储空间,同时也降低了对网络带宽的要求;并且把任意多个签名的验证化简到一次验证,大大减少了签名验证的工作量。因此,聚合签名在很大程度上提高了签名的验证与传输效率。但在已有的聚合签名方法中,最终生成的签名只是将多个消息的签名压缩成一个签名,这有效的缩短了签名长度,但最终生成签名的长度会随着消息个数的增加而增加,当大量的消息需要聚合签名时,就会造成生成的签名长度越大,这时对网络带宽就会有更高的要求;为了有效的解决以上问题,提出一种基于身份且签名长度恒定的在线离线聚合签名方法,使得聚合签名生成的签名的长度短且大小恒定,以此来提高签名速率和传输效率,解决计算能力有限的问题以及降低对网络带宽的要求。

综上所述,现有技术存在的问题是:现有的聚合签名方法中,最终生成签名只是将多个消息的签名压缩成一个签名,这样的确缩短了签名的存储空间,但签名的长度会随着消息个数的增加而增加,而签名长度越长对网络带宽的要求就越高;当大量的消息需要签名时,由于签名长度过长,就会对整个网络传输过程造成负担。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种基于身份且签名长度恒定的在线离线聚合签名方法。

本发明是这样实现的,一种基于身份且签名长度恒定的在线离线聚合签名方法,所述基于身份且签名长度恒定的在线离线聚合签名方法包括:系统初始化、用户公私钥生成、离线签名、在线签名、验证签名五个阶段;分为在线和离线两个阶段,离线阶段进行签名的预计算,在线阶段基于离线阶段的计算结果,根据消息及用户身份id生成签名,并在接收方进行验证;用户再次对消息签名时,无需再进行离线阶段的签名预计算,直接从在线阶段开始计算生成签名。

进一步,所述基于身份且签名长度恒定的在线离线聚合签名方法具体包括以下步骤:

步骤一,系统初始化:

给定一个安全参数k∈z,两个阶为素数q的循环群g1和g2,g1的生成元为p,一个双线性对选择四个抗碰撞哈希函数h1:{0,1}*→g1、h2:g2×{0,1}*→g2、h3:g1×{0,1}*→g1、{0,1}*表示任意比特长的二进制序列组成的集合,表示有限域zq={0,1...q-1}去掉零元素后所得到的乘法群;根据选取的参数,选取主密钥s和生成系统公钥ppub;

步骤二,用户公私钥生成:通过用户的身份标识id,计算出用户的公私钥对qid和sid;

步骤三,离线签名:根据初始化阶段生成的系统公钥ppub和生成元p以及双线性对计算出参数yi;

步骤四,在线签名,给定私钥sid和n个待签名的消息mj∈{0,1}*,1≤j≤n;

步骤五,验证签名:当接收方收到由发送方发送过来的n个消息及签名后,根据n个消息mj,计算出hj,并验证等式;等式成立则表示签名有效,否则表示签名无效。

进一步,所述步骤四中:签名者执行以下步骤:

对于每一个1≤j≤n,计算出y和y(j)

对于每一个1≤j≤n,计算出t和tj;

对于每一个1≤j≤n,计算出hj;

对于每一个1≤j≤n,计算出zj;

计算出z;

最终得到签名σ=(y,t,z)。

进一步,所述步骤一中的主密钥s和系统公钥ppub的生成为:选择一个随机数作为主密钥,令ppub=sp,即可得到主密钥s和系统公钥ppub。

进一步,所述步骤二中的密钥对qid和sid的生成为:利用哈希函数h1计算出公钥qid=h1(id),私钥sid=sqid。

进一步,所述步骤三中的参数yi的生成为:其中l=|q-1|。

进一步,所述步骤四中的参数y、y(j)、t、tj、hj、zj和z按照如下方式生成:

随机选取y=π0≤i≤lyiy[i],对于每一个1≤j≤n;

y(j)=h2(y||j);

其中y[i]表示y的二进制表示中第i个比特值;

随机选取t=xp,对于每一个1≤j≤n;

tj=h3(t||j);

对于每一个1≤j≤n,hj=h4(mj||tj||y(j));

zj=(x+y)ppub+hjsid,1≤j≤n;

进一步,所述步骤五中hj的生成和验证签名的验证等式按照如下方式计算:

y(j)=h2(y||j),j=1,2,...,n;

tj=h3(t||j),j=1,2,...,n;

hj=h4(mj||tj||y(j)),j=1,2,...,n;

等式成立则表示签名有效,否则表示签名无效。

本发明的另一目的在于提供一种应用所述基于身份且签名长度恒定的在线离线聚合签名方法的网上商城控制系统。

本发明的另一目的在于提供一种应用所述基于身份且签名长度恒定的在线离线聚合签名方法的网上支付控制系统。

本发明的优点及积极效果为:可用于对用户发送的文件进行数字签名,并在接收方进行验证;在许多情况下,如智能卡和移动设备,它们只有很小的存储量和有限的计算能力,通过引入在线离线技术可以解决计算能力有限问题,经过测试;本发明中的在线离线技术方案可以为每次签名节约约2500ms的计算时间;本发明中的聚合签名方案对多个消息进行签名时,生成签名的长度不随消息个数的增加而增加,始终保持短且恒定的大小,降低了对网络带宽的要求。

本发明与现有的聚合数字签名方法相比具有签名长度短且大小恒定的优点,使得传输效率更高,网络带宽需求更低;通过引入在线离线技术使得签名速率更快;简化了传统数字签名中公钥证书的生成、管理吊销等问题;提出基于身份且签名长度恒定的在线离线聚合签名方法,将数字签名方法分为在线离线两个阶段,离线阶段进行签名的预计算,而离线签名的计算与消息无关,经测试每次离线阶段的签名预计算耗时约为2500ms,在线阶段基于离线阶段的计算结果,根据消息及用户身份id生成签名,并在接收方进行验证;用户再次对消息签名时,无需再进行长达约为2500ms的离线阶段的签名预计算,可以直接从在线阶段开始计算生成签名。

本发明允许单个用户同时对多个消息进行签名和验证,最终生成的签名的长度不会随消息个数的增加而增加,签名长度短且大小恒定,极大的提高了签名速率,降低了通信开销;将签名的生成分为在线和离线两个阶段,离线阶段的计算只需进行一次即可,当用户再次对消息进行签名时只需要从在线阶段开始生成签名,降低了签名开销;方法简单且实用性强,具有推广作用。如表1为签署多个消息时的签名速率对比结果:

表1签署多个消息的签名速率对比结果

附图说明

图1是本发明实施例提供的基于身份且签名长度恒定的在线离线聚合签名方法流程图。

图2是本发明实施例提供的发送方和接收方之间的传参示意图。

图3是本发明实施例提供的接收方验证签名的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面结合附图对本发明的应用原理作详细的描述。

一、本发明实施例所应用的数学理论:

1、双线性对

本发明中,双线性对是一个满足双线性、非退化性和可计算性的映射,它把素数阶群g中的两个元素映射到素数阶群gt中的一个元素。比如,定义在超奇异椭圆曲线上的weil对和tate对就是满足条件的双线性对。

2、哈希函数

哈希函数就是把任意长度的输入变换成固定长度的输出这样一种单向函数,这个输出称为该输入的哈希值。一个安全的哈希函数应该满足以下几个条件:①输出长度是固定的,一般至少取128比特,以抵抗生日攻击;②对每一个给定的输入,其哈希值可以很容易的计算出来;③给定哈希函数的描述和一个哈希值,找到相应的输入是计算上不可行的;④给定哈希函数的描述,找到具有相同哈希值的两个不同的输入是计算上不可行的。

二、本发明实施例的实现过程:

参照图1、图2和图3,本发明实施例的具体过程如下:

步骤1、系统初始化:

如图1所示,这一步主要生成系统公共参数,为离线和在线阶段的签名做准备,给定一个安全参数k∈z,两个阶为素数q的循环群g1和g2,g1的生成元为p,一个双线性对选择一个随机数作为主密钥,令ppub=sp。选择四个抗碰撞哈希函数h1:{0,1}*→g1、h2:g2×{0,1}*→g2、h3:g1×{0,1}*→g1、这里,{0,1}*表示任意比特长的二进制序列组成的集合,表示有限域zq={0,1...q-1}去掉零元素所得到的乘法群。生成的系统参数列表为:

步骤2、用户公私钥生成:

如图1所示的第二步,输入一个用户的身份标识id并根据此id生成用户公私钥,该身份id∈{0,1}*,然后利用在系统初始化阶段中选定的哈希函数h1计算出公钥qid=h1(id),私钥sid=sqid,该步的输入为用户的身份标识id,输出为密钥对qid和sid;

步骤3、离线签名:

离线阶段主要是进行签名的预计算,根据系统初始化阶段生成的系统公钥ppub、生成元p以及双线性对计算其中l=|q-1|。该步的输入为ppub、p、输出为参数yi。可以看出离线阶段所进行的双线性对运算都是与系统初始化阶段生成的公共参数有关,而与用户的身份id以及要签名的消息是无关的,因此,该步的计算只需进行一次即可,当用户再次对新的消息进行签名时,将不需要再进行该步骤及其相关计算,可以直接从在线签名开始;

步骤4、在线签名:

如图1所示的最后一步,在线阶段基于离线阶段的计算结果,根据步骤2中生成的用户私钥sid和n个待签名的消息以及离线阶段预计算的结果生成n个消息的签名σ。给定私钥sid和n个消息mj∈{0,1}*,1≤j≤n,签名者执行以下步骤:

1.随机选取计算y=π0≤i≤lyiy[i]对于每一个1≤j≤n,计算:

y(j)=h2(y||j);

其中y[i]表示y的二进制表示中第i个比特值;

2.随机选取计算t=xp,对于每一个1≤j≤n,计算:

tj=h3(t||j);

3.对于每一个1≤j≤n,计算:

hj=h4(mj||tj||y(j));

4.计算zj=(x+y)ppub+hjsid,1≤j≤n,以及:

最终得到签名σ=(y,t,z)。

如图2所示,成功生成签名σ后,将签名后的消息和签名σ以及参与计算的相关参数通过网络发送给接收方,并在接收端进行验证。因此可以看出,生成的签名长度与消息个数无关,长度短且大小恒定。

步骤5、验证签名:

对于身份为id的用户及n个消息mj,1≤j≤n,验证其签名σ=(y,t,z)。验证者按照以下步骤验证签名的有效性:

1.计算y(j)=h2(y||j),j=1,2,...,n;

2.计算tj=h3(t||j),j=1,2,...,n;

3.计算hj=h4(mj||tj||y(j)),j=1,2,...,n;

4.检验下面的等式是否成立:

如图3所示,如果等式成立则表示签名有效,否则表示签名无效。

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

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