专利名称:基于证书的前向安全签名方法及系统的制作方法
技术领域:
本发明属于通信技术领域,涉及网络通信的安全问题,更确切地说是涉及一种能够增加敌手窃取签名密钥难度并且能够减轻签名密钥泄露影响的数字签名方法及系统。
背景技术:
为了解决传统公钥密码体制中的证书管理问题,基于身份公钥密码体制中的密钥托管问题,以及无证书公钥密码体制中的公钥替换攻击问题,Gentry在2004年欧密会上提出了基于证书的密码体制(Certificate-Based Cryptography, CBC),并提出了第一个基于证书的加密方案(Certificate-Based Encryption, CBE)。基于证书的密码体制是将传统的公钥密码体制和基于身份的密码体制的优点结合起来,消除了高代价的证书验证过程,并且不存在密钥托管的隐患。基于证书的密码体制同传统公钥密码体制一样,也有一个证书中心(CA)为用户提供证书,保证用户身份和公钥间的对应,在解密或签名过程中,用户需要同时使用证书和私钥,因而在加密或签名验证过程中不存在对证书状态的第三方询问。由于用户可以向CA请求一个长期证书,所以基于证书的密码体制中不存在无证书密码体制中的公钥替换攻击问题。因此,基于证书的密码体制自从被提出后,受到了广泛关注, 成为了密码学研究的热点方向,各种基于证书的加密或签名方案相继被提出。在现实中,对数字签名方案最大的威胁来自于密钥泄露,即一旦秘密密钥丢失 (或被窃取),以前由这个密钥生成的所有签名都变得无效。通常考虑的解决密钥泄露的方法是通过数个服务器经由秘密共享实现密钥分配,密钥分配有许多实例化的方法比如门限签名方法等。然而,使用密钥分配的方式开销相当大,当大企业或者证书权威组织能够分配密钥时,只拥有一台机器的普通用户却没有这样的选择,其他针对密钥泄露的保护方法包括弹性密钥泄露方法、受保护的硬件或者smartcard等,但这些方法也往往是昂贵或不切实际的。此外,密钥分配方案不一定能够提供想象中的安全性,比如,密钥分配易受共模故障的影响因为所有机器使用相同的操作系统,如果找出一个系统的可能造成非法入侵的漏洞,所有的机器都会受到影响。于是,前向安全签名的概念在1997年由Anderson弓丨入,用来解决普通数字签名的密钥泄露问题。为了解决密钥泄露问题,Anderson提出把密码系统的生命周期分成若干个时间周期,在每个周期的最后,签名者以一个单向的模式,从当前周期的秘密密钥得到下一周期的新的秘密密钥,并且安全地删除当前周期的秘密密钥。而在整个密钥的生命周期中, 公钥始终保持不变,这个方法确保了密钥被泄露的周期以前的所有签名的有效性。1999年,Bellare和Miner第一次给出了前向安全签名的形式化定义,并基于Fiat 和Siamir的签名方案给出了两个前向安全数字签名方案一个是在普通数字签名基础上使用树型结构的证书链构造的方案;另一个是修改Fiatlhamir签名方案。其基本思想是公钥一直保持不变,而私钥却是利用单向函数和前一时间段的私钥产生的,这样每一时间段的签名和私钥都互不相同,即使当前周期的签名密钥被泄露,也不影响该周期前签名的有效性,这样就减少了密钥泄露带来的威胁。
本发明人即是在前述技术发展背景下,对前向安全签名方法进行深入研究,本案
由此产生。
发明内容
本发明所要解决的技术问题,是针对前述背景技术中的缺陷和不足,提供一种基于证书的前向安全签名方法及系统,其结合基于证书的签名方法和前向安全签名方法的优势,解决一部分基于证书密码体制中的密钥泄露问题,具有很高的实用价值。本发明为解决以上技术问题,所采用的技术方案是一种基于证书的前向安全签名方法,包括如下步骤A.设定系统公开参数params,主公钥mpk和主密钥msk ; B.根据所述系统公开参数params,生成用户的公钥1 和初始私钥SKtl ;C.根据所述系统公开参数params,系统主密钥msk和用户的公钥Hi产生用户的证书Certm ;D.根据当前时间周期i和上一时间周期的用户私钥SIV1,生成当前时间周期的用户私钥SKi ;E.根据所述系统公开参数params,用户的当前时间周期私钥SKi和用户的证书 Certm对消息M进行签名得到当前时间周期的签名ο ;F.根据所述系统公开参数params和用户的公钥1 ,对消息M在当前时间周期的签名σ进行验证。上述步骤A包括Al.选定安全参数Ik和二叉树深度1,则系统总的时间周期为N = 21+1-1 ;Α2.选择两个阶为q的循环群G1, G2,其中,e =G1XG1 — ( 是群G1, G2上可计算的双线性映射;A3.选择随机数·作为系统主密钥msk,选择任意的生成元P e G1,并计算mpk =sP作为系统主公钥;A4.选择四个杂凑哈希函数出1:{0,1}、61 — 61,巧{0,1}\01—^,氏{0,
1}*X IoaKXG1XG1 — G1, H4 :{0,1}*X {0,1}*X IoaKXG1XG1 — G1,则系统公开参数为 params = G2, e, q, P, 1, H1, H2, H3, H4> ;A5.系统公开params和mpk,安全保存msk。上述步骤A4中,所选的杂凑哈希函数选用哈希函数MD-5、SHA-I、SHA-2和SHA-3 中的任一种。上述步骤B具体包括Bi.选择随机数作为用户初始私钥SK。;B2.计算用户公钥PK = xP e G1 ;该初始私钥为周期0的用户私钥,即二叉树的根密钥Se,由用户自己产生并安全保存;用户公钥在方案的整个生命周期中公开并保持不变。上述步骤C具体包括Cl.计算 Qid = H1 (ID, PK) e G1 ;
C2.计算用户证书 Certm = sQID e G10上述用户私钥由用户安全地保存在密钥栈ST-SK中,当前时间周期i对应的二叉树结点为ω,结点密钥为Su = u,Rm12,LRullri,Ru,SNJ,步骤D具体包括Dl.若ω为内部结点,则选择随机数P _,凡一<,然后分别计算Rutl = ρ ω0Ρ, R.I = p .iP;SNm0 = SNJhutlP ω 和 SNul = SNJhulP ω1,其中 h。。= H2(coO,Ru。),hul = Η2(ω1,Ι ω1) ; ω 左子结点密钥为 Sco0 = u,L,Ru ,Ru,Rutl,SNj,右子结点密钥为 Sul =OLll,L,Ru|n_l,Ru,Rul,SNJ ;然后,分别将Sul,Sco0依次压入栈ST-SK,最后,用户安全删除Su ;D2.若ω是叶子结点,则用户直接安全删除Su。上述步骤E具体包括El.当前时间周期为i e
验证模块F 根据所述系统公开参数params和用户的公钥PK,对消息M在当前时间周期的签名σ进行验证。其中,模块A的具体实现步骤如下Al.选定安全参数Ik和二叉树深度1 (则系统总的时间周期为N = 21+1-1);Α2.选择两个阶为q的循环群G1, &,其中,e =G1XG1 — ( 是群G1, ( 上可计算的双线性映射;A3.选择随机数·作为系统主密钥msk,选择任意的生成元P e G1,并计算mpk =sP作为系统主公钥;A4.选择四个杂凑哈希函数H1=IOaKXG1^G1, /^{Ο, ΓχΟ,—Ζ^Η^ Ο, 1}*X IoaKXG1XG1 — G1, H4 :{0,1}*X {0,1}*X IoaKXG1XG1 — G1O 则系统公开参数为 params = G2, e, q, P, 1, H1, H2, H3, H4>。系统公开params和mpk,安全保存msk。其中,根据系统公开参数params,生成用户的公钥1 和初始私钥SKtl,模块B的具体实现步骤如下Bi.选择随机数作为用户初始私钥SK(1 ;B2.计算用户公钥 PK = xP e G115该初始私钥为周期O的用户私钥,即二叉树的根密钥Se,由用户自己产生并安全保存;用户公钥在方案的整个生命周期中公开并保持不变。其中,根据系统公开参数params,系统的主密钥msk和用户公钥PK,生成用户证书 Certm,模块C的具体实现步骤如下Cl.计算 Qid = H1 (ID, PK) e G1 ;C2.计算用户证书 Certm = sQID e G10其中,根据当前时间周期i和上一时间周期的用户私钥SIV1,利用二叉密钥进化树方法进化用户密钥,生成当前时间周期的用户私钥SKitj用户私钥由用户安全地保存在密钥栈ST-SK中,当前周期i对应的二叉树结点为ω,结点密钥为Su = (Rw |1; Rw |2, L, R I^1, R ,SNJ,模块D的具体实现步骤如下Dl.若ω为内部结点,则选择随机数P 。,凡一<,然后分别计算Rutl = ρ ω0Ρ, R.I = p .iP;SNm0 = SNJhutlP ω 和 SNul = SNJhulP ω1,其中 h。。= H2(coO,Ru。),hul = Η2(ω1,Ι ω1)。所以ω左子结点密钥为Sutl = u,L,Ru ,Ru,Rutl,SNj,右子结点密钥为 Sul = (Ru u,L,Ru |n_1; Ru,Rul,SNJ。然后,分别将 Sul,Sutl 依次压入栈 ST-SK,最后,用户安全删除Su ;D2.若ω是叶子结点,则用户直接安全删除Su。其中,根据系统公开参数params,用户的当前时间周期私钥SKi和用户的证书 Certm对消息M进行签名得到当前时间周期的签名σ,模块E的具体实现步骤如下El.当前时间周期为i e
E5. σ = (U,FS)即为 i 周期 M 的签名,输出 <i,σ = (U,FS) > 和 Ru ! 0,其中 θ < n。其中,根据系统公开参数params和用户的公钥1 ,对消息M在当前时间周期i的签名ο进行验证,模块F的具体实现步骤如下Fl.计算 Qid = H1(IDJK) e G1, V = H3 (M, i,U,PK),ff = H4 (Μ, i, ID, U, PK), , θ = Η2(ω I θ,Ru|0),其中 1 彡 θ 彡 η;F2.验证等式炒,将) =+玄/^入一队㈧是否成立。如果成立,则
θ=\
<i,σ >为消息M在周期i的一个有效签名,输出true ;否则,签名无效,输出false。需要说明的是,针对不同的应用需求,不同的安全性等级要求,可以采用不同规模的参数k,1等,所以说,本发明具有多种具体的实施方式,这里不再赘述。在电信网络中,使用前向安全的数字签名技术,保证数字签名的前向安全,再结合具体证书管理技术,提出基于证书的前向安全签名技术,不仅能支持现有的主流认证与授权,还能够考虑到安全稳定快速的用户体验。具体做法是把基于证书的前向安全签名技术作为一个基本模块,结合到相关的协议与密码方案中。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件完成,所述程序可存储于计算机可读取存储介质中,该程序在执行时,可以包括上述各方法的实施例的流程。其中,所述的存储介质可以为磁碟、 光盘、只读存储记忆体等。以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
权利要求
1.一种基于证书的前向安全签名方法,其特征在于包括如下步骤A.设定系统公开参数params,主公钥mpk和主密钥msk;B.根据所述系统公开参数params,生成用户的公钥1 和初始私钥SKtl;C.根据所述系统公开参数params,系统主密钥msk和用户的公钥1 产生用户的证书 Certm ;D.根据当前时间周期i和上一时间周期的用户私钥SIV1,生成当前时间周期的用户私钥Ii ;E.根据所述系统公开参数params,用户的当前时间周期私钥SKi和用户的证书Certm 对消息M进行签名得到当前时间周期的签名σ ;F.根据所述系统公开参数params和用户的公钥PK,对消息M在当前时间周期的签名 σ进行验证。
2.如权利要求1所述的基于证书的前向安全签名方法,其特征在于所述步骤A包括 Al.选定安全参数Ik和二叉树深度1,则系统总的时间周期为N = 21+1-1 ;Α2.选择两个阶为q的循环群G1, (;2,其中,e =G1XG1 — G2是群G1, G2上可计算的双线性映射;A3.选择随机数·作为系统主密钥msk,选择任意的生成元P e G1,并计算mpk = sP 作为系统主公钥;A4.选择四个杂凑哈希函数=H1 {0,IKXG1 — G1,巧RlfxG1 Wq,H3 : {0,1}*X {0, IKXG1XG1 — G1, H4 {0,1}*X {0,1}*X {0,IjiXG1XG1 — G1,则系统公开参数为 params = <G1 G2, e,q,P,1,H1, H2, H3, H4〉;Α5·系统公开params禾口 mpk,安全保存msk。
3.如权利要求2所述的基于证书的前向安全签名方法,其特征在于,所述步骤A4中,所选的杂凑哈希函数选用哈希函数MD-5、SHA-U SHA-2和SHA-3中的任一种。
4.如权利要求1所述的基于证书的前向安全签名方法,其特征在于所述步骤B具体包括Bi.选择随机数xe作为用户初始私钥SK(l ; B2.计算用户公钥1 = xP G G1 ;该初始私钥为周期0的用户私钥,即二叉树的根密钥Se,由用户自己产生并安全保存; 用户公钥在方案的整个生命周期中公开并保持不变。
5.如权利要求1所述的基于证书的前向安全签名方法,其特征在于所述步骤C具体包括Cl.计算 Qid = H1(IDjPK) e G1 ; C2.计算用户证书Certm = sQID e G10
6.如权利要求1所述的基于证书的前向安全签名方法,其特征在于用户私钥由用户安全地保存在密钥栈ST-SK中,当前时间周期i对应的二叉树结点为ω,结点密钥为Su = (R u,R. |2,L, Rw I^1, Rw, SNJ,步骤 D 具体包括Dl.若ω为内部结点,则选择随机数P 。,A81 e^,然后分别计算Rutl= Pm0PjRm1 =P ω1Ρ,SNutl = SNJhutlP ω 和 SNul = SNJhulP ω1,其中 1ιω。= H2 (ω 0,Rutl),hul = H2 (ω 1, Rwl) ; ω 左子结点密钥为 Suq= (Rm u,I^Rullri,Ru,Ruq,SNJ,右子结点密钥为 Sul = (RwU, L, Rm1ih,Rwl, SNJ ;然后,分别将Sul,Sco0依次压入栈ST-SK,最后,用户安全删除Sco ; D2.若ω是叶子结点,则用户直接安全删除Su。
7.如权利要求1所述的基于证书的前向安全签名方法,其特征在于所述步骤E具体包括El.当前时间周期为i e [0,N),用户首先将密钥栈ST-SK的栈顶元素Su出栈;E2.随机选择“e Z;,计算υ = rp ;E3.计算 V = H3(M, i, U, PK), W = H4(M, i, ID, U, PK);E4.计算 FS = CertID+SNM · V+rff ;E5. σ = (U,FS)即为i周期M的签名,输出<i,σ = (U,FS) >和Ru丨0,其中1彡θ彡η。
8.如权利要求1所述的基于证书的前向安全签名方法,其特征在于所述步骤F具体包括Fl.计算 Qid = H1 (ID,PK) e G1, V = H3 (M,i,U,PK), W = H4 (Μ, i,ID, U,PK), hM,e = Η2(ω I θ,Ru|0),其中 1 彡 θ ^n ;F2.验证等式炒,将)=_沐么)耽伙+ ;£Zv^lXfZJ)是否成立,如果成立,则<i,θ=\σ >为消息M在周期i的一个有效签名,输出rtue ;否则,签名无效,输出false。
9.一种应用如权利要求1所述的基于证书的前向安全签名方法的签名系统,其特征在于包括系统参数设置模块用于生成系统主密钥和系统公开参数,并将系统主密钥发送给用户证书认证模块,将系统公开参数发送给用户初始公私钥生成模块、用户证书认证模块、签名模块和验证模块;用户初始公私钥生成模块用于生成各个用户的公钥和初始私钥,并将用户的公钥发送给用户证书认证模块和验证模块,将用户的私钥发送给用户密钥进化模块和签名模块; 用户证书认证模块用于对合法用户颁发证书,并将用户的证书发送给签名模块; 用户密钥进化模块用于根据时间周期的更新而进化用户的私钥,并将用户的进化后的私钥发送给签名模块;签名模块用于在任意周期,对任意消息产生签名,并将产生的签名发送给验证模块; 验证模块用于对相应周期的消息签名的有效性进行验证。
全文摘要
本发明公开一种基于证书的前向安全签名系统,包括系统参数设置模块、用户初始公私钥生成模块、用户证书认证模块、用户密钥进化模块、签名模块和验证模块;系统参数设置模块生成系统主密钥和系统公开参数,并发送给其它模块;用户初始公私钥生成模块生成各个用户的公钥和初始私钥;用户证书认证模块对合法用户颁发证书并发送给签名模块;用户密钥进化模块进化用户的私钥并发送给签名模块;签名模块对任意消息产生签名并发送给验证模块;验证模块对签名的有效性进行验证。此系统可解决一部分基于证书密码体制中的密钥泄露问题,具有很高的实用价值。本发明还公开一种基于证书的前向安全签名方法。
文档编号H04L9/32GK102420691SQ20111042555
公开日2012年4月18日 申请日期2011年12月16日 优先权日2011年12月16日
发明者张亦辰, 李继国, 滕荟芸 申请人:河海大学