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