从证书公钥系统到身份公钥系统的匿名签密方法
技术领域
本发明属于信息安全技术领域,涉及匿名签密,具体地说是一种高效的从证书公钥系统到身份公钥系统的匿名签密方法,可用于实现从证书公钥系统向身份公钥系统传输消息的机密性、认证性和匿名性。
背景技术
随着计算机网络和通信技术的快速发展,人们之间进行的信息传递越来越频繁。然而,由于所传递的信息往往涉及到一些敏感信息,而计算机网络和无线通信网这样的开放网络又具有很大的脆弱性,因此信息安全问题日益凸显。信息安全的理论基础是现代密码学,机密性和认证性是密码学中两个重要的安全目标。消息的机密性可以通过加密技术来实现,消息的认证性可以通过数字签名技术来实现。然而,很多实际应用不但需要实现机密性,同时也需要实现认证性,比如电子商务和电子邮件。
为了同时实现消息传输的机密性和认证性,可以采用传统的“先签名后加密”方法,然而这种方法的效率通常比较低。为了解决这一问题,Zheng在1997年提出了“签密”的概念。签密能够在一个合理的逻辑步骤内同时完成数字签名和公钥加密的功能,而其计算量和通信成本都要低于传统的“先签名后加密”方法,因而它是实现既保密又认证地传输消息的较为理想的方法。
在1976年,Diffie和Hellman发表了关于密码学的新方向的论文,首次提出了公钥密码的思想,开创了现代密码学的新纪元。基于标准的数字签名算法DSA(DigitalSignature Algorithm),韩国学者Shin,Lee和Shim在2002年提出了两种实用的签密方法。传统的公钥密码系统,即证书公钥密码系统,虽然克服了对称密码系统的密钥量问题和密钥分发问题,而且用户的私钥只有用户自己知道,保密性比较强,但是证书公钥系统也存在一个缺点:需要管理大量证书,任务繁重。在证书公钥系统中,一个用户在向其他用户发送消息之前,需要查找目标用户的公钥证书,并对证书的合法性和有效性进行验证。证书的查找、存储、验证和撤销等都会带来较大的计算开销和存储开销。为了克服证书公钥系统的上述缺点,Shamir于1984年提出了基于身份的密码学。在身份公钥系统中,用户的身份即为公钥,因此不需要证书。然而,直到2001年,才由Boneh和Franklin提出了第一个实用的基于身份的加密方案。在2002年,美国学者Lynn提出了第一个基于身份的签密方案。英国学者Chen和Malone-Lee在2005年提出了一个效率更高的基于身份的签密方案。基于双线性对,巴西学者Barreto等人构造了一个更高效的基于身份的签密方案。在2006年,中国学者Duan和Cao构造了具有多接收者的基于身份的签密方案。在2009年,印度学者Selvi,Vivek和Srinivasan提出了效率更高的具有多接收者的基于身份的签密方案。
然而,已有的签密方法大都只支持一种系统,要么是证书公钥系统,要么是身份公钥系统。在实际应用中,不同的机构可能采用不同的公钥密码系统。当证书公钥系统的用户A想要给身份公钥系统的用户B发送消息时,A首先要对消息做基于证书的签名,再对签名做基于身份的加密,或者需要在身份公钥系统里申请一对公私钥,然后再用基于身份的签密技术对消息进行签密,把签密密文发送给B,这两种方法的效率都比较低,而且增加了系统的复杂性。在2010年,中国学者Sun和Li构造了证书公钥系统和身份公钥系统之间的签密方法。然而,在实际应用中,为了保护自己的隐私,消息的发送者往往不想让任何第三方获悉消息的来源。在已有的从证书公钥系统到身份公钥系统的签密方法中,由于发送者的公钥直接被放在签密密文中,因而已有技术不能实现传递消息的匿名性,泄露了用户的隐私。
发明内容
本发明目的在于提高从证书公钥系统向身份公钥系统传输消息的安全性和效率,提供一种从证书公钥系统到身份公钥系统的匿名签密方法,是一种能简单高效的实现从证书公钥系统到身份公钥系统的匿名签密方法,以简单高效地实现从证书公钥系统向身份公钥系统传输消息的机密性、认证性和匿名性,简化系统、提高安全性和传输效率。
实现本发明目的的技术方案是:对证书公钥系统用户的公钥进行盲化,计算从证书公钥系统到身份公钥系统的双线性对,再用计算结果对消息进行匿名签密并传输。
具体过程如下:
(1)系统初始化步骤:
证书公钥系统和身份公钥系统从公钥函数数据库中随机选取一套参数,包括两个阶为素数q的循环群G和GT,G的生成元P,一个双线性对以及三个哈希函数H0:{0,1}*→G, 和 这里,{0,1}*表示任意比特长的二进制序列组成的集合,n是明文消息的比特长度,{0,1}n表示n比特长的二进制序列组成的集合,表示有限域Zq={0,1,…,q-1}去掉元素零所得到的乘法群,根据选取的参数,证书公钥系统选取系统公钥tpk和系统私钥tsk,身份公钥系统选取系统公钥mpk和系统私钥msk;
(2)用户密钥生成步骤:
证书公钥系统的用户A由自己生成公钥YA和私钥xA;身份公钥系统的密钥生成中心PKG把用户B的身份IDB作为用户B的公钥,并根据IDB和msk计算出用户B的私钥DB;
(3)匿名签密步骤:
根据自己的私钥xA和身份公钥系统的用户B的身份IDB,证书公钥系统的用户A对消息m进行匿名签密得到签密密文C,并将C发送给用户B;
(4)解签密步骤:
收到由证书公钥系统的用户A发送来的密文C后,身份公钥系统的用户B根据双线性对的性质,利用自己的私钥DB对密文C进行解签密,得到消息m,同时认证发送者的身份。
其中步骤(1)所述的证书公钥系统的系统公钥tpk和系统私钥tsk,以及身份公钥系统的系统公钥mpk和系统私钥msk,按照如下方式生成:
(a)证书公钥系统从中随机选取一个元素作为系统私钥tsk,并计算系统公钥tpk=tsk·P,其中符号“-”表示群G对应的椭圆曲线上的点乘运算;
(b)身份公钥系统从中随机选取一个元素s作为系统私钥msk,并计算P0=s·P作为系统公钥mpk。
其中步骤(2)所述的用户A的公钥YA和私钥xA,以及用户B的私钥DB,按照如下方式生成:
(a)证书公钥系统的用户A从中随机选取一个元素作为自己的私钥xA,并将该私钥与系统参数中G的生成元P相乘,计算出自己的公钥YA=xA·P;
(b)根据系统私钥s和用户B的身份IDB,身份公钥系统的PKG计算DB=s·QB作为用户B的私钥,其中QB=H0(IDB)。
其中步骤(3)所述的证书公钥系统的用户A利用xA和IDB对消息m进行匿名签密,计算出签密密文C,按照如下过程进行:
(a)用户A从{0,1}n中随机选取一个元素σ;
(b)用户A计算 记为 其中符号表示比特异或运算;
(c)用户A分别计算h1·YA,记为C0=h1·YA,计算 记为 其中符号“||”表示比特级联;
(d)根据计算的结果,用户A输出密文C=(C0,C1),该密文不包含发送者A的公钥YA。
其中步骤(4)所述的身份公钥系统的用户B利用自己的私钥DB对密文C进行解签密,按照如下过程进行:
(a)用户B把密文C解析成C=(C0,C1);
(b)用户B计算记为
(c)用户B计算(h′1)-1·C0,记为Y′A=(h′1)-1·C0;
(d)用户B验证h′1是否等于如果是,则B输出消息m=m′和发送者A的公钥YA=Y′A,否则认为密文C无效。
本发明的有益效果是:由于能够在签密密文中隐藏发送者的公钥,从而保护了发送者的隐私;由于仅用一个双线性对实现了从证书公钥系统向身份公钥系统传输消息的机密性和认证性,避免了发送者先进行数字签名再加密,或者先到接受者所在的身份公钥系统申请公私钥,然后在身份公钥系统中对消息进行基于身份的签密的复杂过程,从而简化了系统,提高了安全性和传输效率;方法简单且实用性强,具有推广作用。
以下结合附图对本发明目的、方案作进一步说明。
附图说明
图1是从证书公钥系统到身份公钥系统进行通信的示意图;
图2是本发明的算法流程图;
图3是本发明的算法中解签密步骤的流程图。
具体实施方式
一、本发明所应用的数学理论和技术术语说明:
1、双线性对
本发明中,双线性对是一个满足双线性性、非退化性和可计算性的映射,它把素数阶群G中的两个元素映射到素数阶群GT中的一个元素。比如,定义在超奇异椭圆曲线上的Weil对和Tate对就是满足条件的双线性对。
2、哈希函数
哈希函数就是把任意长度的输入变换成固定长度的输出这样一种单向函数,这个输出称为该输入的哈希值。一个安全的哈希函数应该满足以下几个条件:①输出长度是固定的,一般至少取128比特,以抵抗生日攻击;②对每一个给定的输入,其哈希值可以很容易的计算出来;③给定哈希函数的描述和一个哈希值,找到相应的输入是计算上不可行的;④给定哈希函数的描述,找到具有相同哈希值的两个不同的输入是计算上不可行的。
3、有关技术术语
本发明的有关技术术语可通过图1说明如下:
(1)CA为证书公钥系统的“证书权威机构”,负责颁发和管理公钥证书;
(2)PKG为身份公钥系统的“密钥生成中心”,负责生成用户的私钥;
(3)节点A为证书公钥系统的一个用户,是消息的发送者;
(4)节点B为身份公钥系统的一个用户,是消息的接收者;
(5)本发明中的证书公钥系统和身份公钥系统可以是独立的系统,也可以是某个公钥系统下的两个子系统。
二、本发明的实现过程
参照图1、图2和图3,本发明的具体过程如下:
步骤1、系统初始化。
从公钥函数数据库中随机选取一套参数,包括两个阶为素数q的循环群G和GT,G的生成元P,一个双线性对以及三个哈希函数H0:{0,1}*→G,和这里,{0,1}*表示任意比特长的二进制序列组成的集合,n是明文消息的比特长度,{0,1}n表示n比特长的二进制序列组成的集合,表示有限域Zq={0,1,…,q-1}去掉元素零所得到的乘法群;根据选取的参数,证书公钥系统从中随机选取一个元素作为系统私钥tsk,并计算系统公钥tpk=tsk·P,其中符号“-”表示群G对应的椭圆曲线上的点乘运算;身份公钥系统从中随机选取一个元素s作为系统私钥msk,并计算P0=s·P作为系统公钥mpk。
步骤2、用户密钥生成。
证书公钥系统的用户A从中随机选取一个元素作为自己的私钥xA,并将该私钥与系统参数中G的生成元P相乘,计算出自己的公钥YA=xA·P;身份公钥系统的密钥生成中心PKG把用户B的身份IDB作为用户B的公钥,并根据系统私钥s和用户B的身份IDB计算DB=s·QB作为用户B的私钥,其中QB=H0(IDB)。
步骤3、匿名签密。
证书公钥系统的用户A利用xA和IDB对消息m进行匿名签密,计算出签密密文C,按照如下过程进行:
(3a)用户A从{0,1}n中随机选取一个元素σ;
(3b)用户A计算 记为 其中符号表示比特异或运算;
(3c)用户A分别计算h1·YA,记为C0=h1·YA,计算 记为 其中符号“||”表示比特级联;
(3d)根据计算的结果,用户A输出密文C=(C0,C1),并将该密文发送给接收者B,如图1所示,当证书公钥系统的用户A向身份公钥系统的用户B传输消息时,用户A按照以上过程对消息进行匿名签密,生成签密密文并传输。
步骤4、解签密。
如图3所示,当收到证书公钥系统的用户A发送的签密密文C=(C0,C1)后,身份公钥系统的用户B利用自己的私钥DB对密文C进行解签密,按照如下过程进行:
(4a)解密
用户B计算记为 其中m′是明文消息,并计算Y′A=(h′1)-1·C0作为发送者的公钥;
(4b)认证
由以上得到的σ′||m′||h′1和Y′A,身份公钥系统的用户B计算 验证h′1是否等于 如果是,则B输出消息m=m′和发送者A的公钥YA=Y′A,否则认为密文C无效。
以上显示和描述说明了本发明的基本原理、主要特征和本发明的优点;本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内;本发明要求保护范围由所附的权利要求书及其等同物界定。