基于Schnorr签名算法的无证书签名方法
【专利摘要】本发明公开了一种基于Schnorr签名算法的无证书签名方法,主要解决现有技术存在的安全性差及效率低的问题。其实现步骤是:1、签名者生成公钥pkID和秘密信息skID;2、密钥生成中心KGC生成签名者的部分私钥pskID,并通过安全的信道发送给签名者;3、签名者对消息m进行签名,生成签名δ;4、签名验证者检验签名δ的有效性:如果有效,则签名者对消息m的签名是合法的,否则签名者对m的签名不合法。本发明能抵御更强类型的攻击者、提高了运算效率,可广泛应用于分布式网络环境中以实现数据的共享。
【专利说明】基于Schnorr签名算法的无证书签名方法
【技术领域】
[0001] 本发明属于网络安全【技术领域】,涉及一种分布式网络通信领域中实现高效且安全 的无证书签名方法,可用于分布式网络中实现数据的安全共享。
【背景技术】
[0002] 随着计算机和网络通信技术的发展,数字签名技术已得到了广泛的应用。传统的 数字签名技术是基于公钥基础设施PKI的。PKI维护并且管理着一个公钥证书库,因此需要 巨大的通信、计算和存储代价。为了解决公钥的真实性问题,并且降低系统的通信、计算和 存储代价,基于身份的数字签名技术IBS。然而IBS中存在一个固有的缺陷即密钥托管问 题。为了解决IBS中的密钥托管问题,无证书签名技术CLS被提出。无证书签名系统由密 钥生成中心KGC产生部分私钥,然后将该部分私钥安全的传输到对应的签名者。对应的签 名者再根据自己的实际情况选择一个对于密钥生成中心KGC不可见的秘密信息与部分私 钥结合构成最后的完整私钥,因此该系统既不使用证书也能很好的解决IBS中的密钥托管 问题。
[0003]文献"Improved Certificateless Signature Scheme Provably Secure in the Standard Model. IET Information Security, 2012,6(2) :102_110" 提出 了标准模型下 的改进无证书签名方法,该方法能够很好的抵御Xia等人(Key replacement attack on two certificateless signature schemes without random oracles. Key Engineering Materials,2010, 439:1606-1611)的攻击并且具有较少的系统参数和较高的计算效率。该 方法的主要步骤是:第一,建立并公开系统公共参数,同时安全保存系统主密钥;第二,密 钥生成中心KGC生成签名者的部分私钥psk ID,并将签名者的部分私钥pskID发送给对应的 签名者;第三,生成系统中签名者的公钥,每个签名者在生成公钥的过程中都要保存一个对 于密钥生成中心KGC不可见的秘密信息sk;第四,签名者使用其部分私钥psk ID与秘密信息 81^对待签名信息加密生成签名;第五,签名验证者验证签名者公钥和签名的有效性。在该 方法中,签名者的实际私钥是由密钥生成中心KGC产生的部分私钥与签名者秘密选择的秘 密信息sk共同组成,因此私钥对于密钥生成中心KGC是不可见的,从而能够很好的解决密 钥托管问题。该方法存在以下缺陷:
[0004] 第一,虽然相对于以前的方法,该方法系统参数更少,计算效率更高,但是它依然 使用较多的双线性对,在通信带宽受限的环境下很难实现;
[0005]第二,该方法虽然考虑到 Xia 等人(Key replacement attack on two certificateless signature schemes without random oracles. Key Engineering Materials, 2010, 439:1606-1611)的攻击,但是却忽略了公钥替换攻击和不诚信KGC被动 攻击,因此易受到这两类攻击;
[0006] 第三,在该方法中,密钥生成中心KGC的信任等级只能达到M. Girault等人提出的 信任等级2,使得密钥生成中心KGC可以伪装成签名者进行非法签名。
【发明内容】
[0007] 本发明的目的在于这对上述无证书签名方法的不足,提出一种基于Schnorr签名 算法的无证书签名方法,以提升密钥生成中心KGC的信任等级和计算效率,有效抵御公钥 替换攻击和不诚信KGC的被动攻击,提高无证书签名方法的安全性。
[0008] 本方法的主要思想是:利用Schnorr签名算法来完成签名者的公钥生成与验证, 以使得每次在验证签名有效性时都无需再使用双线性对运算来完成签名者公钥有效性的 验证,从而减少双线对的使用个数。同时在签名生成阶段将签名者的部分公钥信息嵌入到 签名算法中,即使攻击者替换了签名者的公钥也无法成功构造出合法的签名,使得公钥替 换攻击很难实现。除此之外,该发明绑定部分系统公共信息,使得任何人都可以验证该部分 信息是密钥生成中心KGC合法生产的还是它刻意构造用以实施不诚信KGC被动攻击,从根 源上制止了密钥生成中心KGC的不诚信。最后,通过将签名者的公钥绑定到密钥生成中心 KGC产生的部分私钥上,当密钥生成中心KGC伪装成签名者产生合法签名时,能够立即检测 出密钥生成中心KGC的非法操作,从而实现密钥生成中心KGC较高的信任等级。
[0009] 根据以上思路,本发明的具体实现步骤包括如下:
[0010] (1)签名者根据身份ID基于Schnon签名算法生成公钥pkID和秘密信息sk ID,并 将该公钥pkID公布到系统的公共目录中,将该秘密信息skID安全保存;
[0011] (2)密钥生成中心KGC在系统公共目录中找到签名者的公钥pkID后,先将签名者 的公钥pk ID与签名者的身份ID进行绑定,再根据绑定信息与系统主密钥msk,生成部分私 钥pskID,并通过安全的信道发送给签名者;
[0012] (3)签名者收到部分私钥?41:)后,利用获得的部分私钥psk ID、保存的秘密信息 skID以及签名者的公钥pkID对消息m进行签名,生成签名S;
[0013] (4)签名验证者收到签名者对消息m的签名消息S后,验证签名者公钥pk ID的合 法性:若合法,则执行步骤(5);否则,操作终止;
[0014] (5)签名验证者根据签名者的身份ID使用签名者的公钥pkID通过无证书签名的 验证方法检验对消息m的签名^)的有效性:
[0015] 5a)签名验证者将签名者的身份ID和签名者的公钥口1^输入到定义域为 {0, lKXG?,值域为{0, l}n 的哈希函数 H2,得到集合 T= {tilCKKn+l,igZ/A e {0, 1}}, 构造下标集合EID = {i | h = 1,0〈i〈n+l, i G Z/,h G T},计算中间变量
【权利要求】
1. 一种基于Schnorr签名算法的无证书签名方法,包括如下步骤: (1) 签名者根据身份ID基于Schnorr签名算法生成公钥pkID和秘密信息skID,并将该 公钥Pkm公布到系统的公共目录中,将该秘密信息skID安全保存; (2) 密钥生成中心KGC在系统公共目录中找到签名者的公钥?1^后,先将签名者的公钥 Pkm与签名者的身份ID进行绑定,再根据绑定信息与系统主密钥msk,生成部分私钥pskID, 并通过安全的信道发送给签名者; (3) 签名者收到部分私钥pskID后,利用获得的部分私钥pskID、保存的秘密信息skID以 及签名者的公钥Pkm对消息m进行签名,生成签名δ; (4) 签名验证者收到签名者对消息m的签名消息δ后,验证签名者公钥成1:)的合法性: 若合法,则执行步骤(5);否则,操作终止; (5) 签名验证者根据签名者的身份ID使用签名者的公钥pkID通过无证书签名的验证 方法检验对消息m的签名5 = )的有效性: 5a)签名验证者将签名者的身份ID和签名者的公钥?1^输入到定义域为{0,IKXG13, 值域为{〇,1}η的哈希函数H2,得到集合T= {tiliKKn+Liez^tie{〇,1}},构造下标集 合Eid =UIh= 1,0〈i〈n+l,ieZp*,heT},计算中间变量 & - " ' 其中u',Ui,分 别为系统公共参数params中的两个不同的元素,Z/是不超过大素数p的正整数集合; 5b)签名验证者计算中间变量& = /(&):当输入是奇数时b= 1,否则b= 0 ; 5c)签名验证者使用定义域为{0,IKXG12,值域为Z/的哈希函数Hl计算中间变量h= 〃_,//),&),再使用定义域为{0,Vxg13,值域为Z/的哈希函数H3计算中间变 量Iu = --、(η" ID,0llh、[汝叫,gi)i 5d)签名验证者根据签名者的身份ID、签名者的公钥pkID,消息m的签名 5 = (?,?,5id3 )以及系统公共参数params进行验证: 如果等式 ,g) =Kg/' ./為(仏'少^/^^ 有效的,否则是无效的,其中&,fM分别为签名S中的三个分量,;分别是 签名者的公钥Pkm中的第一个分量和第二个分量,g,g2,Hic^Pm1分别为系统公共参数params中的不同元素。
2. 根据权利要求1所述的基于Schnorr签名算法的无证书签名方法,其中步骤(1)所 述的签名者基于Schnorr签名算法生成公钥pkID和秘密信息skID,按如下步骤进行: la) 签名者依次计算公钥pkID的第一个分量W1 =gl'第二个分量M=g广,第三个分量 d=Sfs3H1(IDjpW2)以及第四个分量少=g/3,其中8丨是系统公共参数params中的元素,Sl、s2、S3是签名者从不超过大素数P的正整数集合Z/中随机选择的三个变量,ID是签名 者的身份,H1是定义域为_!〇, 1Γχ,值域为Z/的哈希函数; lb) 根据步骤2a)计算的参数,构造签名者的公钥:pkID = (WpWhC^y); 1C)根据步骤2a)选择的变量,令签名者的秘密信息skID =s2。
3. 根据权利要求1所述的基于Schnorr签名算法的无证书签名方法,其中所述步骤 (2)中密钥生成中心KGC将签名者的公钥pkID与签名者的身份ID进行绑定,是通过将签名 者的身份ID与签名者的公钥?1^输入到定义域为{OJKXG/,值域为{0,1}η的哈希函数 H2 得到集合T=Iti |〇〈i〈n+l,he{〇, 1}}而实现的。
4. 根据权利要求1所述的基于Schnorr签名算法的无证书签名方法,其中所述步骤 (2)中,密钥生成中心KGC根据绑定信息与系统主密钥msk,密钥生成中心KGC生成部分私 钥Pskm,按如下步骤进行: 2a)密钥生成中心KGC根据签名者的身份ID依次计算部分私钥pskID第一个分量 尸為卩=OtU''和第二分量iwi、, 其中,msk为系统主密钥,r是由密钥生成中心KGC从不超过大素数p的正整数集合Z/ 中随机选取的变量,中间变量= g、u'、Ui,分别为系统公共参数params的三个 ^eID 不同的元素,Eid =UIti= 1,0〈i〈n+l,ieZ/,tieT}是下标集合,ID是签名者的身份,Pkm是签名者的公钥; 2b)根据步骤2a)计算的参数,构造签名者的部分私钥:/<'? = ( /〃為;):,p.sL_
5. 根据权利要求1所述的基于Schnorr签名算法的无证书签名方法,其中步骤(3)所 述的生成签名S,按如下步骤进行: 3a)签名者依次计算签名δ的第一个',第二个分量 ?和第三个分量心二Z, 其中,Kr1是签名者从不超过大素数ρ的正整数集合Z/中随机选取两个变 量,/7λ、7).、/?先/):分别为签名者的部分私钥pskm中的第一个分量和第二个分量, /^/^(叫取匕/^^是中间变量^户丑加乂从以/^^初:是中间变量:氏是定义域为 {0,IpxG12,值域为Z/的哈希函数,H2是定义域为{0,IKXG13,值域为Z/的哈希函数,m是 待签名消息,ID是签名者的身份,分别是签名者的公钥pkID中的第一个分量和 第二个分量,skID为签名者的秘密信息,b=f(gk):当输入gk为奇数时b= 1,否则b= 0, I-〃Fl为步骤3计算出的中间变量,u'、Ui、g、g2、mQ、IIi1分别为系统公共参数params 氏EID 中不同的元素; 3b)根据步骤3a)计算的参数,构造签名5 = μ)。
【文档编号】H04L9/32GK104320259SQ201410606856
【公开日】2015年1月28日 申请日期:2014年10月31日 优先权日:2014年10月31日
【发明者】庞辽军, 许克东 申请人:西安电子科技大学