王岩
【摘 要】随着时代的发展,社会的进步,数字签名的需求也越来越高。聚合签名正是其中一种能够减小签名的存储空间,降低传输签名的宽带需求,大大减少了签名验证的工作量的签名方式,本文主要对聚合签名进行简单地分析探讨。
【关键词】聚合签名;安全模型;公钥;私钥
一、聚合签名定义
聚合签名是个用户对个不同消息分别进行签名,这个(单一)签名可以被合成一个签名,而验证方只需要检验合成后的签名便可以确认是否是对做的签名。
二、聚合签名意义
聚合签名可以同时给多个消息、多个用户提供不可否认服务,可以把任意多个用户的签名压缩成一个签名。这大大减小了签名的存储空间,同时也降低了传输签名的网络带宽的要求。且把任意多个签名的验证简化到一次验证,大大减少了签名验证的工作量。因此,聚合签名在很大程度上提高了签名的验证与传输的效率。
三、聚合签名研究成果
本文主要对由北京邮电大学杜红珍博士于2009年提出的聚合签名体制进行阐述。在本文前已有研究成果如下主要有4类,但都存在一定缺陷:
* 2005年Xu等构造的聚合签名的验证计算量大,签名长,对签名的存储空间及传输网络带宽要求高。
* 2006年Gentry等提出了一个高效的聚合签名方案,但该方案要求每个参与聚合的用户必须保存两对公私钥。
* 2005年Song等提出的方案可以验证其是普遍性可以伪造的。
* 2005年Cheng等提出的方案是高效的,但要合并的签名个数不是任意的,方案的安全性证明存在问题,且用户的单一签名是可以伪造的。
基于以上不足,杜红珍博士等提出了一个基于身份的高效聚合签名方案,它在随机語言及模型和计算Diffie-Hellman困难假设下是存在性不可伪造的。
四、基于身份的聚合签名
一个基于身份的聚合签名由多个签名者、一个签名聚合者和一个验证者组成,方案由一下5个算法构成:
1.系统初始化(Setup):输入安全参数,输出系统参数params。
2.私钥解析(Key-Extract):输入系统主密钥及用户的身份,输出用户的私钥。
3.签名(Sign):输入对应的私钥,消息及系统参数params,输出用户在消息上的(单一)签名。
4.聚合签名(Aggregate-Sign):输入个有效的身份-消息-签名对(),聚合人输出这个签名的聚合签名
5.聚合签名的验证(Aggregate-Verify):输入params,个用户的()及聚合签名,输出“1”表示接受该聚合签名;否则“0”,表示该聚合签名无效。
下面介绍基于身份的聚合签名的安全模型,其基于一个游戏,游戏如下:
挑战者C使用Setup算法,生成系统参数params,将其发给敌手A。
A进行一下询问(适应性的):
-Hash询问:对任意一个Hash函数的输入,挑战者C返回相应的Hash值给A。
-Key-Extract询问:查询的私钥,挑战者C返回Key-Extract算法生成的私钥给A
-Signing询问:对任意一个消息和身份的签名询问,挑战者C返回Sign算法生成相应的签名给A
-签名聚合:敌手A输出表示n个身份为的用户分别对n个不同的消息生成的n个签名合成的聚合签名。
如果不存在一个有效的聚合签名,满足至少有一个的私钥没有被查询,且没有经过Signing查询,则A失败,则称一个基于身份的聚合签名方案是抗存在性伪造的。
五、基于身份的聚合签名方案
下面详细阐述高效的基于ID的聚合签名方案:
Setup:给定一个安全参数,PKG(私钥生成器)选择两个阶数为素数的群和,一个Tate对映射。是群的一个生成元。PKG选择三个安全的Hash函数和,系统参数params:
Key-Extract:令表示个身份为的用户,相应的公私钥对,其中,。
Sign:给定个不同的消息,便于描述,我们的方案都假定用户要签名的消息就是,签名如下:
1.随机选,计算
2.计算和
3.计算
则就是对消息的签名。
Aggregate-Sign:聚合人计算,接受当且仅当下面个等式成立。
即
验证n个单一签名有效后,计算和
则就是n个签名人对n个消息的聚合签名。
Aggregate-Verify:给定,及,验证人操作如下:
1.计算,和
2.接受当且仅当
参考文献:
[1]吴克力.数字签名理论与算法研究[D].南京理工大学,2005.
[2]杜红珍.数字签名技术的若干问题研究[D].北京邮电大学,2009.
[3]赵泽茂.数字签名理论及应用研究[D].南京理工大学,2005.
[4]赵翔.数字签名综述[J].计算机工程与设计,2006
[5]陈相琳.数字签名技术及算法的研究[D].哈尔滨理工大学,2007.