1.一种基于椭圆曲线离散对数问题的无证书签名方法,其特征在于所述方法中密钥生成中心(KGC)公开参数PP=(G,H1,H2,H3,P,Q),其中椭圆曲线G的阶为q,哈希函数分别为P为G的生成元,Q=xP是KGC的公钥,主
密钥为 所述方法包括以下步骤:
*
(1)身份为ID∈{0,1}的用户随机选择一个秘密值 并根据秘密值 设
置其公钥PID=xIDP;
*
(2)密钥生成中心根据主密钥 用户的身份ID∈{0,1}以及其公钥PID,随机选择 并根据RID=rIDP和sID=rID+H1(ID,RID,PID)x(modq)获得部分私钥(RID,sID),将部分私钥(RID,sID)发送给身份为ID∈{0,1}*的用户;
(3)身份为ID的用户收到(RID,sID)后,验证sIDP=RID+H1(ID,RID,PID)Q是否成立;如果等式成立,则用户接受(RID,sID),进入步骤(4);否则用户要求密钥生成中心发送一个新的部分私钥(RID,sID);
(4)身份为ID∈{0,1}*的用户根据其秘密值 和部分私钥(RID,sID),设置其完全私钥为skID=(xID,sID);然后根据公开的参数PP和待签名消息m∈{0,1}*,利用其私钥skID,随机选择 并根据R=rP,h1=H2(ID,RID)和h2=H3(m,R)计算σ=r+h2(h1·xID+sID)(modq),输出签名(RID,R,σ)。
2.一种对权利要求1所述的无证书签名方法进行验证的方法,其特征在于所述方法包括验证者根据密钥生成中心的公开参数PP,消息m,签名(RID,R,σ),用户身份ID以及相应的公钥PID,通过验证σP=R+h2(h1·PID+RID+hID·Q)等式是否成立;如果等式成立,则用户签名有效,否则证实签名无效的步骤。
基于椭圆曲线离散对数问题的无证书签名方法\n技术领域\n[0001] 本发明属于信息安全技术领域,具体涉及一种基于椭圆曲线离散对数问题的无证书签名方法。\n背景技术\n[0002] 目前,电子商务等网络应用越来越普及,大大改变了人们的生活方式。虽然这些应用给人们带来了巨大的方便,但是其与生俱来的安全威胁需要我们认真解决,否则这些应用只会是过眼云烟。\n[0003] 在所有需要考虑的安全问题中,用户发送数据的完整性及用户身份真实性的鉴别,是最基本的问题之一。这个问题的解决需要使用安全的数字签名算法。数字签名算法一般是利用公钥密码体制来实现的。由于传统的公钥密码体制存在证书的管理和验证等问题,基于身份的公钥密码体制存在密钥托管问题,所以目前大量基于无证书公钥密码体制的数字签名方案被相继提出。在无证书公钥密码体制中,用户的公钥不需要认证,其私钥是由密钥生成中心(Key Generation Center,记为KGC)和用户共同决定的,这样就同时避免了证书管理和密钥托管问题。\n[0004] 安全性是任何一种数字签名算法首先必须考虑的事情,其次要尽可能的提高算法的效率。虽然无证书签名算法比传统的和基于身份的数字签名算法更容易实施,具有较高的效率,然而其面临的安全威胁也更多。具体地说,无证书签名算法的敌手有两类:第一类是恶意的用户,他可以替换用户的公钥,但是不可以知道系统的主密钥;另一类是恶意的KGC,他知道系统主密钥,但是不能替换用户的公钥。尽管已经有一些安全的无证书签名算法被提出,然而这些算法大多数都需要双线性配对运算。由于双线性配对运算非常耗时,因此这类算法不适合应用于手机等能量和计算能力受限的设备中。\n发明内容\n[0005] 本发明的目的在于提供一种更加高效并且安全的无证书签名方法,该方法不使用双线性配对运算,仅基于椭圆曲线上的离散对数问题。\n[0006] 为了解决现有技术中的这些问题,本发明提供的技术方案是:\n[0007] 一种基于椭圆曲线离散对数问题的无证书签名方法,其特征在于所述方法中密钥生成中心(KGC)公开参数PP=(G,H1,H2,H3,P,Q),其中椭圆曲线G的阶为q,哈希函数分别为 P为G的生成元,Q=xP是KGC的公钥,\n主密钥为 所述方法包括以下步骤:\n[0008] (1)身份为ID∈{0,1}*的用户随机选择一个秘密值 并根据秘密值\n设置其公钥PID=xIDP;\n[0009] (2)密钥生成中心根据主密钥 用户的身份ID∈{0,1}*以及其公钥PID,随机选择 并根据RID=rIDP和sID=rID+H1(ID,RID,PID)x(modq)获得部分私钥*\n(RID,sID),将部分私钥(RID,sID)发送给身份为ID∈{0,1}的用户;\n[0010] (3)身份为ID的用户收到(RID,sID)后,验证sIDP=RID+H1(ID,RID,PID)Q是否成立;\n如果等式成立,则用户接受(RID,sID),进入步骤(4);否则用户要求密钥生成中心发送一个新的部分私钥(RID,sID);\n[0011] (4)身份为ID∈{0,1}*的用户根据其秘密值 和部分私钥(RID,sID),设置*\n其完全私钥为skID=(xID,sID);然后根据公开的参数PP和待签名消息m∈{0,1},利用其私钥skID,随机选择 并根据R=rP,h1=H2(ID,RID)和h2=H3(m,R)计算σ=r+h2(h1·xID+sID)(modq),输出签名(RID,R,σ)。\n[0012] 本发明的另一目的在于提供了一种对所述的无证书签名方法进行验证的方法,其特征在于所述方法包括验证者根据密钥生成中心的公开参数PP,消息m,签名(RID,R,σ),用户身份ID以及相应的公钥PID,通过验证σP=R+h2(h1·PID+RID+hID·Q)等式是否成立;\n如果等式成立,则用户签名有效,否则证实签名无效的步骤。\n[0013] 本发明技术方案提出的无证书签名方法能够同时抵抗无证书环境下两类敌手的攻击,且不需要使用昂贵的双线性配对运算,适用于手机等能量和计算能力受限的设备,而且算法非常高效。\n[0014] 相对于现有技术中的方案,本发明的优点是:\n[0015] 本发明的技术方案不仅可以抵抗无证书环境中两类攻击者的攻击,而且其计算效率也比以往的同类算法高。通过分析可知,本发明仅使用基本的椭圆曲线上的运算而不需要使用双线性配对运算,算法输出的签名长度也较短。\n附图说明\n[0016] 下面结合附图及实施例对本发明作进一步描述:\n[0017] 图1为本发明基于椭圆曲线离散对数问题的无证书签名方法的流程图。\n具体实施方式\n[0018] 以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。\n[0019] 实施例基于椭圆曲线离散对数问题的无证书签名方法实现\n[0020] 本实施例采用的基于椭圆曲线离散对数问题的无证书签名方法,包括以下步骤:\n[0021] (1)密钥生成中心(KGC)选择一个阶为q的椭圆曲线G和主密钥 以及三个安全的哈希函数 令P为G的生成元,Q=xP\n是KGC的公钥,则系统公开参数\n[0022] (2)身份为ID∈{0,1}*的用户随机选择一个秘密值\n[0023] (3)身份为ID的用户根据其秘密值 设置其公钥PID=xIDP;\n[0024] (4)输入系统主密钥 用户的身份ID以及其公钥PID,KGC随机选择\n并计算RID=rIDP和 最后,KGC将(RID,sID)发送给身份\n为ID的用户;\n[0025] (5)身份为ID的用户收到(RID,sID)后,验证sIDP=RID+H1(ID,RID,PID)Q是否成立;\n如果等式成立,则用户接受(RID,sID)并进入下一步,否则用户要求KGC发送一个新的部分私钥。\n[0026] (6)身份为ID的用户根据其秘密值 和部分私钥(RID,sID),设置其完全私钥为skID=(xID,sID);\n*\n[0027] (7)输入系统公开参数PP和待签名消息m∈{0,1},身份为ID的用户利用其私钥skID,首先随机选择 并计算R=rP,h1=H2(ID,RID)和h2=H3(m,R),然后计算σ=r+h2(h1·xID+sID)(modq),最后输出签名(RID,R,σ);\n[0028] (8)输入系统公开参数PP,消息m,签名(RID,R,σ),身份ID以及相应的公钥PID,验证者验证σP=R+h2(h1·PID+RID+hID·Q)是否成立;如果成立,则签名有效,否则签名无效。\n[0029] 本实施例基于椭圆曲线离散对数问题的无证书签名方法的目标与其他相关算法类似,也包括两点。第一点:该算法必须满足无证书环境下签名的不可伪造性,即任何没有完全私钥的人即使有部分私钥也不能伪造一个合法的签名;第二点:算法的高效性,即在保证算法安全性的前提下,算法的效率要尽可能高。\n[0030] 无证书环境下的攻击者分为两大类,第一类攻击者代表恶意的用户,他可以自由替换其公钥,但是不能得到用户的部分私钥;第二类攻击者代表恶意的KGC,他可以得到KGC的所有信息,但是不能替换任何用户的公钥。本发明提出的算法考虑了在不安全的无证书网络环境下算法安全运行的方法,使得任何一类攻击者都无法伪造合法签名。\n[0031] 同时,本实施例无证书签名算法不需要双线性配对运算,也提高了其效率。双线性配对运算所消耗的时间远远大于其他运算所消耗的时间。最后,因为RID对一个用户来说一般是不会变化的,所以算法输出的签名可以只是(R,σ),换句话说,算法的签名长度是短的,这可以有效降低签名的存储和传输开销。\n[0032] 具体地,该签名算法也可以分为两个阶段。第一个阶段(包括步骤1到步骤6)是用户的公钥和完全私钥的生成阶段。在这一阶段,用户设置其公钥,并与KGC合作生成用户的完全私钥。首先,KGC选择一个阶为q的椭圆曲线G和主密钥 以及三个安全的哈希函数 令P为G的生成元,Q=xP是KGC的\n公钥,则系统公开参数 接着,身份为ID∈{0,}*1的用户随机\n选择一个秘密值 并设置其公钥 然后,输入系统主密钥 用户的\n身份ID以及其公钥PID,KGC随机选择 计算RID=rIDP和sID=rID+H1(ID,RID,PID)x(modq),并将(RID,sID)发送给身份为ID的用户;当用户收到(RID,zID)后,验证zIDP=RID+H1(ID,RID)Q是否成立,当且仅当等式成立时,用户才接受(RID,zID);最后,身份为ID的用户根据其秘密值 和部分私钥(RID,sID),设置其完全私钥为skID=(xID,sID)。\n[0033] 本实施例选择美国国家标准技术局推荐的P-192椭圆曲线,相应的生成元P由其确定。三个哈希函数可以先对椭圆曲线G上的点进行编码,然后使用SHA-2,主密钥x选择中一个的随机数。\n[0034] 第二个阶段(包括步骤7和步骤8)是签名的生成和验证阶段。在这一阶段,输入*\n系统公开参数PP和待签名消息m∈{0,1},身份为ID的用户利用其私钥skID,首先随机选择 计算R=rP,h1=H2(ID,RID)和h2=H3(m,R),然后计算σ=r+h2(h1·xID+sID)(modq),最后输出签名(RID,R,σ);给定系统公开参数PP,消息m,待验证签名(RID,R,σ),身份ID以及相应的公钥PID,验证者验证σP=R+h2(h1·PID+RID+hID·Q)是否成立;如果成立,则签名有效,否则签名无效。\n[0035] 下面是算法的具体执行结果。\n[0036] 设Tmul和Tadd分别表示一次点乘运算和点加运算所花费的时间。由于哈希运算以及数的普通加法和乘法运算花费时间很少,因此我们将其忽略。通过理论分析可知,算法总的花费时间是8Tmul+3Tadd,其中在第一阶段花费的时间是3Tmul,在第二阶段花费的时间是\n5Tmul+3Tadd,如表一所示。由于双线性配对运算时点加和点乘运算的数十倍,所以算法是高效的。\n[0037] 表1\n[0038] \n[0039] 在实际应用中,我们大多情况下只需要运行算法的第二阶段,因此其计算效率还可以进一步提高。\n[0040] 下面对算法的安全性进行分析。\n[0041] 本算法在第一类和第二类敌手存在的情况下,都是安全的,原因如下。首先我们考虑第一类敌手存在时的情况。我们知道,第一类敌手只能替换用户的公钥却不知道KGC的主密钥x。如果第一类敌手能够伪造合法签名,那么他有如下两种方式:1.通过KGC的公钥Q=xP或者KGC发送给用户的部分私钥(RID,sID)计算主密钥x;2.通过替换用户的公钥来直接伪造签名。第一种情况相当于敌手破解椭圆曲线上的离散对数问题,所以是困难的;对于第二种情况,由于我们的算法实际上是可证明安全的Schnorr签名算法(Schnorr CP.Efficient signature generation by smart cards.Journal of Cryptology,1991,4(3):161–174.)的变形,即私钥为h1·xID+sID的Schnorr签名,所以第一类敌手必须能伪造这个私钥才可以伪造签名。尽管第一类敌手可能得到RID和PID,但是由于H1(ID,RID,PID)是RID,PID的随机函数,所以私钥h1·xID+sID=h1·xID+rID+H1(ID,RID,PID)x(modq)必然是主密钥x的函数,换句话说,第一类敌手不能得到私钥h1·xID+sID,即我们的算法对第一类敌手是安全的。\n[0042] 第二类敌手可以知道KGC拥有的所有秘密但是不能替换任何用户的公钥,即不能知道用户公钥所对应的秘密值。如果第二类敌手希望伪造合法签名,则他也有如下两种方式:1.通过用户的的公钥PID=xIDP计算用户的秘密值xID;2.直接伪造签名。第一种情况相当于敌手破解椭圆曲线上的离散对数问题,所以是困难的;第二种情况类似于第一类敌手攻击时的情况,由于Schnorr签名的私钥h1·xID+sID=h1·xID+rID+H1(ID,RID,PID)x(modq)一定是xID的函数。因此,该算法对第二类攻击者也是安全的。\n[0043] 上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2003-09-24
|
2003-04-23
| | |
2
| |
2008-04-23
|
2007-09-27
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |