一种计算高效的在线/离线数字签名方法

文档序号:7855025阅读:263来源:国知局
专利名称:一种计算高效的在线/离线数字签名方法
技术领域
本发明涉及密码技术,尤其涉及数字签名方法。
背景技术
预备知识和符号标示记G为一个有限群G'中的一个循环子群,其中记G'的阶为N,G的阶为q,g是G的生成元,记Ie为G'的单位元,记G/“为G中除了 U之外的所有元素构成的集合。一般而言,q为一个大的素数(典型地,Iql =160,其中|q|表示的是以2进制表示的q的长度),N+1或N亦是一个大素数。记Zq为数字集合{0,1…,q_l},记 < 为数字集合{I…,q-l}0在下面的背景技 术描述中,采用乘法表示(multiplicative representation)群上的操作,即G'和G为乘法群。这只是为了表述上的方便,所有有关背景技术的叙述均可等价地应用到加法群上,比如,椭圆曲线,或者其他的代数群或具体的群,有限域,复数或复合模(composite moduli)等。一般而言,对于乘法群上的操作,指数上的操作是对q求模,而群上元素的操作是对N或N+1求模或其它操作以保证操作的结果是G'或G中的元素;比如gx通常指的是gxm°d% gxgy通常表示的是gxgy G G' , x+y G Zq和xy G Zq表示的是(x+y)modq和(xy)modq。若r,w, d, e G Zq, r+dwe G Zq 表不的是(r+dwe)mod q,或(r+(dwe mod q) )mod q,或(r+((dwmod q) e mod q) )mod q,或(r+(d(we mod q) mod q) )mod q。另外,dwe mod q 可以使用并发技术使得dwe mod q的计算复杂性略小于2个模乘的计算复杂性。为了表述的方便起见,假定参数G,q,g是固定的并被所有的用户事先获知(这是一种实用中的普遍情况);或者,将这些参数包含在证书中或者在协议运行之前交换和协商这些参数并达成一致。假定离散对数假设在G上成立,即给定X = gx e G (其中X从Zq中随机选取),没有概率多项式时间的算法能够以不可忽略的概率由X求出x。在下面的叙述中使用符号(比如,A)来标示一个用户或设备的逻辑或“区别性”的身份(identity),比如一个名字,一个设备序列号,一个email或IP地址,甚至是方法运行中的一个角色等。在某些情况下,这些身份可能伴随或包含或包含于一个数字证书。记{ }为一个信息或数值的集合。哈希函数用来将一个字符串转换成一个数值或者一个固定长度的串等。典型地,哈希函数的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{0,1}*中的0-1串,然后将哈希函数作用在该转化后的0-1串输入上从而得到一个固定长度的0-1串输出。这儿{0,1}*表示的是所有0-1串的集合。{0,1}70表示的是{0,1}1中除零以外的元素组成的集合(即除去O1外的长度为I的0-1串构成的集合,这儿O1表示长度为I全为0的串)。哈希函数在密码学中的一个基本功能是提供一个“单向”和“抗碰撞”的转换,这儿“单向”指的是给定一个函数的随机生成的输出求出其输入或前像是困难的,“抗碰撞(collision-resistant) ”指的是给定一个输入难以找到另外一个不同的输入使得哈希函数在这两个不同输入上的输出相同。哈希函数范围可以非常广泛从一个简单的混合(mixing)函数到一个具有伪随机输出性质的函数。具有伪随机输出性质的哈希函数在密码学分析中常被理想化为一个“随机圣谕(random oracle) ”。有几个哈希函数在密码学中被广泛使用比如MD5将任意长度的数据转换为一个128-位的0-1串,而另一个常用的哈希函数SHA的输出是160位的0-1串。简单地说,一个哈希函数f是目标单向的,如果对于任意概率多项式时间的算法A,对于从该函数值域中随机选取出的一个元素y,A能够求出X使得y = f (X)的概率是(相对于y的长度)可以忽略的。更为精确地讲,令d的值域记为及,一个哈希函数f 是(相对于及和一个函数h)目标单向的,如果对于任意概率多项式时间的算法A,对于一个从及中随机选取的d,A(f,d)首先输出一个信息me {0,1}%然后对于从及中随机选取的另一个d',最后A(f, d, m, (T )输出m' G {0,1}*满足dh(m)=d/ h(m/ )的概率是可以忽略不计的。记f,h:{0,lT —Zq为两个转换函数。典型地,f,h的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{O,1}*中的0-1串,然后将f,h作用在该转化后的0-1串输入上从而得到一个Zq中的数值(典型地,Zq中的数值亦用2进制表示)。特别地,f,h可以是哈希函数。在应用中,转换函数的所有输入首先转换为0-1串,然后将转换后的0-1串连接成一个0-1串(联结的顺序可以变化),最后在将转换函数作用到该联 结后的0-1串从而得到输出。在大多数情况下,转换函数的输入的顺序不重要(顺序可以被变化)。比如,以转换函数f■为例,设X为一个字符串,记x Sx的2进制0-1串编码表示;设 S = (S1..., sj, t 彡 0,为 t 个字符串的集合,记 42),42),42),...,42 S1, S2, S3,…,\的2进制0-1串编码表示,则/⑷^^/^^卜严丨丨^^丨丨…丨^^其中“⑴’表示的是字符串联结操作符。注意x(2),…,#联结的顺序可以变化,但联结的顺序需固定且所有的用户知晓且使用相同的顺序进行联结操作。对于f(x(2) |K2) Ikf,若其中Sl,l彡 i彡t,是空串,则 Ax^ Ii ,Pj Il Ii-Il ^(2)) = fix2 Il Il-Il Il Il - Il ) 0上述关于转换函数f的描述同样适用转换函数h。假定签名者,记为2,有一个签名公钥PKa,签名公钥PKa与签名者身份j的绑定由一个可信的第三方机构来执行。通常,可信的第三方机构会检查i的身份的有效性以及PKa的有效性,然后对U /^)做一个数字签名,并将(i, /7A)以及可信第三方的签名形成一个针对U /%)公钥证书,记为CERTi。数字签名方法是密码技术的主要应用之一。基于离散对数的数字签名方案主要有Schnorr签名方案和国际数字签名标准(Digital Signature Standard(DSS))方案。Schnorr签名方案运作如下签名公钥PK= {G/,g,q,U = g_w G G},其中weZ;。其中,G是有限群G'中的一个循环子群,g是G的生成元;记\为数字集合{0,I…,q_l},<为数字集合{I…,q_l},q为一个大的素数(典型地,|q| = 160,其中|q|表示的是以2进制表示的q的长度)。签名私钥w。签名的生成记m G {0,1}*为需要签名的信息,{0,I}*表示的是所有0-1串的集合。令h : {0,1}* — Ztl为一个抗碰撞的哈希函数。从Zq中随机选取r,计算a = g1 G G ;计算d = h(a, m);计算z = r+dw G Zq ;将(d, z)作为对m的签名。
签名的验证得到{m,(d,z)}以及签名公钥PK后,签名验证者验证是否h(gzUd,m)=d。若h(gzUd,m) =d则接受签名,否则拒绝。数字签名标准(DSS)方案运作如下签名公钥U= gw G G,其中 weZ:。签名私钥w。签名的生成记me {0,1}*为需要签名的信息。令h:{0,lT —Zq为一个抗碰撞的哈希函数。令f:G' —Ztl是一个转换函数。一般而言,若G'= Z; (p是个素数),f 直接可以是“mod q”操作;若(;'是定义在有限域上的一个椭圆曲线群(即a e G表示椭圆曲线上的一个点(X, y)), f (a) = X mod q。签名者做如下计算从 Zq 中随机选取 r,计算 a = g1" G G, r = r~leZq;计算d = f(a) ;e = h (m);计算z = d + ―户e Zct ;将(d, z)作为对m的签名。签名的验证得到{m,(d,z)}以及签名公钥U后,签名验证者如下验证签名的有效性计算f= Z-1 e Zq ;验证f(gdU£) = d,若= 则接受签名,否则拒绝。在申请号为200910198735.9的发明专利申请中,本发明的发明人提出了另一个 数字签名方案。为了描述简便起见,申请号200910198735. 9的发明专利申请中所描述的数字签名方案记为ZHAO签名方案。ZHAO签名方案运作如下签名公钥PK= {G/,g,q,U = g_w G G},其中w e <。其中,G是有限群G'中
的一个循环子群,g是G的生成元;签名私钥w。签名的生成记m G {0,1}*为需要签名的信息,{0,I}*表示的是所有0-1串的集合。令f,h : {0,I}*- 1\为两个转化函数。从Zq中随机选取r,计算a = g1 G G ;计算d = f (a)和 e = h (m);计算 z = dr+ew G Zq ;将(d, z)作为对 m 的签名。签名的验证得到{m,(d,z)}以及签名公钥PK后,签名验证者计算e = h(m)和d~l e <,并验证是否二 d o若figzd_'Ued—') = c/则接受签名,否则拒绝。Schnorr签名方案和数字签名标准(DSS)方案比较可证明安全性Schnorr签名方案在假设哈希函数h是随机圣谕(random oracle)的假设和离散对数假设下被证明是安全的。但是,对于数字签名标准(DSS)方案,迄今为止,其可证明安全性仍未知(即便转换函数f,h均假设为随机圣谕)。在线/离线效率在很多应用中为了提高签名方案的效率,通常将签名的生成分为两个阶段来完成离线阶段和在线阶段。在线/离线签名的用途广泛。在很多的实际应用中,签名者(比如智能卡)在信息提交后,只有很有限的反应时间(但是在两个连续的签名请求之间,它可以完成很复杂的计算)。在线阶段的特点就是非常快,因此即使是一个很弱的处理器也可以完成执行。在线/离线签名在基于智能卡的应用中特别关键离线阶段既可以在卡片的制造过程中实施,也可以在卡片通电以后作为背景计算实施。对于Schnorr签名方案,签名者可以预先离线计算并存储(r, a = g1");接下来,在为信息m签名的时候,它仅仅需要在线计算e = h (a, m)和z = r+ew。对于数字签名标准(DSS)方案,签名者亦可以预先计算出很多的a的值。但是,与Schnorr签名方案不同的是,DSS的签名者不用将这些预计算的a值存储下来。具体来说,每一次离线预先算好a = #后,DSS的签名者可以离线地计算rf = /⑷,卩=卜,办^,并且只需要存储。在需要对信息m进行签名时候,签名者只需在线计算e = h(m),Z = 乂+ (其中,卩,&卩是事先离线计算并存储的)。在实际的应用中,对于基于智能卡的应用,智能卡制造商可以在卡片制造过程中存储许多的值。注意a = g¥G'而Z厂一般而言a的长度可能设为1024位,而q得长度是160位。因此,Schnorr签名方案对于每一次签名需要离线存储1024+160 = 1184位的信息,而DSS签名方案对于每一次签名只需存储160X3 = 480位的信息。这对于基于智能卡的数字签名实现是非常 重要的。虽然DSS签名方案没有一个严格的安全性证明,但是它更优的在线/离线效率使得它在实际应用中被更广泛地使用。ZHAO签名方案与Schnorr和DSS方案比较与Schnorr和DSS签名方案相比,ZHAO签名方案具有更好的离线存储复杂性。具体来讲,针对每一个签名的ZHAO签名方案的离线存储复杂性为2 I q I,而DSS签名方案的离线存储复杂性为3 |q| ,Schnorr签名方案的离线存储复杂性为|p| + |q|。注意P的长度,即IpI,一般为1024,而q的长度,即|q| ,—般为160。与DSS签名方案相比,ZHAO签名方案具有可证明安全性,而DSS目前尚没有可证明安全性。与Schnorr方案相比,若ZHAO签名方案的签名验证者事先知晓或获得(m,d),从而可以事先计算并存储{e = hOiO’d'W1}。这时,ZHAO签名方案具有更为高效的在线签名计算复杂性,即仅需计算I次模指数运算和I次模乘运算。Schnorr方案不具有这种优点。

发明内容
本发明给出一个新的计算高效的在线/离线数字签名方法。所发明的方法结合了Schnorr签名方案、数字签名标准(DSS)方案以及ZHAO签名方案各自的优点,而避免了三者各自的缺点。所发明的新的数字签名方法可在各种需要数字签名的应用中应用。特别地,所发明的新的数字签名方法特别有利于在基于计算或存储能力受限的设备,比如智能卡、无线传感器、RFID标签等,的数字签名及相关电子商务、政务中应用。本发明的数字签名方法的目标是在保证安全性和离线存储复杂性的基础上获得更好的在签名验证和生成计算效率,并更易于被计算或存储受限的设备(比如,智能卡、无线传感器、RFID标签等)在并发交互环境下应用。本发明提供一种计算高效的在线/离线数字签名方法,其中,i表示签名者,j的公钥为{G',g,q,U = gi G G},i 的私钥为 F e < = {1,2,-,Q- I},其中,表示一个信息或数值的集合,g是一个阶为N的有限群G'中的一个阶为素数q的循环子群G的生成元,i的公钥证书为为待签名的信息,5表示签名验证者,所述方法包括由所述签名者得到e = h(m, auxm),其中h为一个从{0,1}*到Zq = {0,1,2, q-1}的抗碰撞的转换函数且m是h的输入之一,auxm是一个包含{U, A, m, 的集合的能够为空的子集合,其中,{0,1}*表示的是任意0-1串的集合;由所述签名者得到r e Zq、d = #和/或d = f (a,auxd),其中f是一个从{0,1}*到Zq的转换函数且a是f的输入之一,auxd是一个包含[U,A, m, 627P7)}的集合的能够为空的子集合;由所述签名者计算z = r+dwe G Zq或z = r+dwe ;由所述签名者将 s = {d, z, auxj 或 s = {a, z, aux2}或 s = {a, d, z, aux3}作为对信息m的数字签名,其中,aUXj,l彡j彡3,是一个包含U,A,集合的
能够为空的子集合,auxd, auxm, aux1; aux2, aux3以及函数h, f或者是固定的并被所有的用户事先获知,或者被包含在证书中,或者在协议运行之前被交换和协商;由所述签名验证者得到所述签名者的公钥{G',g,q,U = g_w G G}、公钥证书{m,s}之后,首先验证所述公钥和公钥证书的有效性,和/或,d在f的值域内和/或z G Zq;若验证通过,则所述签名验证者得到e = h(m, auxm)并按照如下情况之一验证签名的有效性若d G s,则所述签名验证者计算并验证f (gzUde, auxd) = d或者d = f (a, auxd) A gzUde = a,若验证成功,则接受签名,否则拒绝;若a e s但^/0,则所述签名验证者得到(1 = €(&,&1 (1),并 验证gzUde = a或f (gzUde, auxd) = d,若验证成功,贝U接受签名,否则拒绝。如上所述的方法,其中,所述签名者事先计算Q2,…,Qn},n彡1,其中对于任意的 i,I 彡 i 彡 n,Q1 c {r,., CllJlW),巧 G Zq, dj = f(gr', auxdi),auxd 丨是一个包含
W, A, Jn1,的集合的能够为空的子集合,Hii表示第i次待签名的信息;{ E p E 2,…,
E n},n彡1,其中对于任意的i,I彡i彡n,Si S由所述签名者j保密存储;{屯,
d2,…,dj,n彡I在所述签名者i和/或所述签名验证者及中保密或公开存储,或由所述签名者和签名验证者之外的第三方公开或保密存储;当所述签名者在线数字签名的时候,在这些事先离线存储的值{Q1, ^2,…,Q1J或…,E n},n彡1,中找出之前签名尚未使用的\或乙"I彡i彡n,,并将Qi或乙i中的值直接用于在线的签名生成;若所述签名验证者名在得到签名之前事先知道Hii G {0,1}*和屯,1 Si Sn,则所述签名验证者事先计算并存储ueA,其中= h{m^auxm)是一个包含{U, A, Wj, CERT-)的集合的能够为空的子集合;当所述签名验证者5在线验证针对Hli的数字签名Si =
{(1土,£iux ^SirL£IUX 2} Si rL£IUX EJ'j*,中 £1土 ^ G ,£IUX jj
I彡j彡3,I彡i彡n,是一个包含U,A,集合的能够为空的子集合,若
所述签名验证者古已事先计算并存储IT儿,则将直接用于figz-Ud'awcdi) = Cli或者 Cl1 = f{at, auxd) A gz'Ud,e'=义的计算。如上所述的方法,其中,对任意的i, I彡i彡n,令Q i = Iri, (Ii, dy},其中!Ti是一个从Zq = {0,1,…,q_l}或{0,1}1或2\ = {I, -,q-1}或{0,1}70中随机选取的值,或者利用一个从{0,1}*到{0,1}V0的伪随机函数产生;diW G Zq ;其中,
|q|是一个正整数,|q|表示以2进制表示的q的长度,{0,1}1表示的是所有长度为I的0-1串的集合,{0,1} VO表示的是除去O1外的长度为I的0-1串构成的集合,其中O1表示长度为I全为0的串。如上所述的方法,其中,若W1, d2,…,dj,n彡I在所述签名验证者乡中保密存储,或由所述签名者和签名验证者之外的第三方公开存储,签名生成和验证利用一个计数器来完成;所述签名者运行一个计数器CTR,其初始值设为O或I或由所述签名者和所述签名验证者事先约定好的一个常数CTR;在对第i > I次信息%进行签名之前或之后,所述签名者将计数器增加1,即=CTR — CTR+1 ;若在每次签名之前更新CTR的值,在对第i > I次信息Hii进行签名之前所述签名者将计数器增加1,即CTR —CTR+1 ;所述签名者计算ei = I I CTR, auxai), Zi = Ti + ¢/严士或 Zi = I^diWei G Zq,其中 Cri, (IiW)直接取自由所述签名者事先计算并存储的E i或Qi, HiiI I CTR表示HIi与CTR的字符串联接;所述签名者将Si = {CTR,zj作为对消息Hi1的签名;所述签名验证者得到Si = {CTR,zj后,利用CTR得到相应的值dCTK G W1, -,dj值,并验证{dCTK,zj是针对信息Hii I I CTR的一个有效签名;若在每次签名之后更新CTR的值,在对第i > I次信息Hii进行签名时所述签名者计算 A = h{m} I I CTR, auxWi),Zi = !^+Wei 或 Zi = I^diWei G Zq,其中 Cri, (IiW)直接取自由所述签名者事先计算并存储的E i或Qi ;所述签名者将Si = {CTR,zJ作为对消息Hii的签名;签名完成后,所述签名者将计数器增加I ;所述签名验证者得到Si = {CTR,zj后,利用CTR得到相应的dCTK值,并验证{dCTK,zj是针对信息Hi11 I CTR的一个有效签名。如上所述的方法,其中,令h为一个从{0,1}*到{0,1}1或Z<^Z\= {I,2,…,q_l} 或{0,1}V0的抗碰撞和或目标单向的哈希函数;$f为一个从{0,1}*到Zq或{0,1}1* '或{0,1}V0 的抗碰撞的哈希函数,或者 f (a,auxd) =amodq或(amodN)modq或(amod(N+l))modq,或者若a = (x,y) G G表示的是椭圆曲线上的一个点,其坐标值为(xGZq,y G Zq)或(X, y),定义 f (a, auxd) = x 且 f (a, auxd) = y 或 f (a, auxd) = x mod q 且 f (a, auxd)=y mod q ;令auxd为空集或auxd = {U}或auxd = {U,A},并且/或者令auxm为空集或auxm=M 或GUXffl ={U,A)。如上所述的方法,其中,所述签名验证者在验证签名时检查d在函数f的值域中,即d G {0,1} 1或d G Zq或d G z\或d G {0,1} 70,若检查失败则拒绝接受签名;和/或,若所述签名者计算得到Z e Z,,所述签名验证者在验证签名时验证Z G Z,,若Zg A则拒绝接受签名;若所述签名者计算得到的Z不能保证属于Z,,所述签名验证者计算f (gzUde, auxd)的其它方式有f(g(zm°dq)Ud%aUXd) ;^a G s,所述签名验证者检查a e G ;若《 g G,则所述签名验证者拒绝接受签名。如上所述的方法,其中,令w =-W',其中w' G Z\,即U = gw/ G G。如上所述的方法,其中,■彡1,从Zq中随机选取;令11为一个从{0,1}*到Z\ ={1,2, -,q-1}或{0,1}70的抗碰撞和或目标单向的哈希函数;和/或,令f为一个从{0,1}*到Z\或{0,1170的哈希函数或伪随机函数。本发明的方法与Schnorr签名方案及DSS签名方案的比较与Schnorr签名方案相比,本发明的签名方法具有如下Schnorr签名所不具有的优点(I) 支持公开或保密存储的d ;⑵.支持在交互式环境中应用以提高计算和传输的均衡并保护隐私;(3).需要更少的离线存储空间假设预计算了 k个a = gr的值,发明方法的离线空间复杂度为3k|q|,而Schnorr签名方案的离线空间复杂性为k(| q| +1p |)。
(4).当(m,d)被签名验证者事先计算或知晓时,具有更为快速的在线签名验证计算复杂性。与DSS签名方案相比,本发明的签名方法具有如下优点(I).具有可证明安全性。我们证明若h是一个抗碰撞且目标单向的哈希函数,且函数f 是一个随机圣喻,本发明的方法具有针对并发交互攻击敌手的强可证明安全性。而DSS签名方案目前尚无可证明安全性。(2).签名生成的总体效率更闻。在计算DSS的签名z = ef + 的时候,总共需要进行I次模求逆运算卩=厂1 e'和2次模乘运算—卩。相比之下,发明方法在计算z =r+dwe G Z,,签名者总共只需要进行2次模乘运算(不需要进行模求逆运算)。注意模求逆运算是相当费时的操作,因此最好可以把它省略掉(尤其是对于基于智能卡等计算能力受限设备的应用)。

(3).签名验证的效率更高。在对DSS签名进行验证时,签名验证者共需计算I次并发指数运算、I次模求逆运算、2次模乘运算。相比之下,对于发明方法的签名验证,签名验证者仅需计算I次并发指数运算和I次模乘运算。(4)更为高效的在线签名验证。验证DSS的签名(d,z)的时候,验证者要在线计算f = f s 因为z的值只有在收到签名后验证者才知道,因此验证者无法事先计算f。因为模求逆运算是代价相对昂贵的,最好可以省略掉。相比之下,在发明方法的签名验证时,如果像实际应用中经常出现的那样验证者在接收到签名之前就知道待签名的信息m(甚至m就是由验证者准备的)且签名验证者实现存储或获得d从而事先计算并存储了 Ud%则在线签名验证仅需计算I次并发指数计算。(5).更有效的离线预计算。除了其他相同的预计算以外,DSS的签名者需要计算I次模求逆运算(=厂1 e么和两次模乘运算来计算dwf € Zq ;而发明方法的签名者只需要离线I次模乘运算得到dw G Zq0本发明的方法与发明人在专利申请号200910198735. 9的发明专利申请中所描述的ZHAO签名方案的比较(I).签名生成和验证方法不同。在本发明方法中,签名生成中z的计算为z =r+dwe G Zq ;但是,在ZHAO签名方案中,签名生成中z的计算为z = dr+ew G Zq0(2).签名验证方法不同。在本发明方法中,给定一个对信息m的签名{m,(d,z)},签名验证通过检查计算f(gzUde) =d来完成。但是,在ZHAO签名方案中,签名验证通过检查计算f、gzd = ^/来完成。(3).更高效的签名生成计算复杂性。发明方法签名生成中dwe G Zq的并行计算少于ZHAO签名方案中两个分开的模乘(dr G ZQ, ew G Z)的计算复杂性。(4).更为高效的签名验证计算复杂性。发明方法的签名验证仅需计算I次模乘运算和I次并发模指数运算。但是,ZHAO签名方案的签名验证除了上述运算外,还需另外计算I次模求逆运算(即,Cf1 G Zq)和I次模乘运算。注意,模求逆元算是一个相当费时的运算。


图I是示例性地示出了本发明的数字签名方法。
具体实施例方式预备知识和符号标示本发明所描述的方法和操作基于一个有限群G'中的一个循环子群G,其中记G'的阶为N,G的阶为q,g是G的生成元,记Ie为G'的单位元,记G/le为G中除了 Ie之外的所有元素构成的集合。一般而言,q为一个大的素数(典型地,|q| = 160,其中|q|表示的是以2进制表示的q的长度)。记Zq为数字集合{0,I…,q-1},记 <为数字集合{I…,q-1}。发明人在下面发明方法的描述中,采用乘法表示(multiplicative representation)群上的操作。即,G'和G为乘法群。这只是为了表述上的方便,所有发明方法的叙述均可等价地应用到加法群上,比如,椭圆曲线,或者其他的代数群或具体的群,有限域,复数或复合模(composite moduli)等。一般而言,当用乘法群上的操作描述发明方法时,指数上的操作是对q求模,而群上元素的操作是对N或N+1求模或其它操作以保证操作的结果是G'或G中的元素;比如gx通常指的是gxm°d% gxgy通常表示的是gxgy G G',x+y G Zq和xy G Zq表示的是x+ymodq和xymodq。为了表述的方便起见,假定参数G, q, g是固定的并被所有的用户事先获知(这是一种实用中的普遍情况);或者,我们将这些参数包含在证书中或者在协议运行之前交换和协商这些参数并达成一致。我们假定离散对数假设在G上成立,即给定X = gx e G(其中X从Zq中随机选取),没有概率多项式时间的算法能够以不可忽略的概率由X求出X。发明人使用符号(比如,i)来标示一个用户或设备的逻辑或“区别性”的身份(identity),比如一个名字,一个设备序列号,一个emial或IP地址,甚至是方法运行中的一个角色等。在某些情况下,这些身份可能伴随或包含或包含于一个数字证书。记{ }为一个信息或数值的集合。哈希函数用来将一个字符串转换成一个数值或者一个固定长度的串等。典型地,哈希函数的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{0,1}*中的0-1串,然后将哈希函数作用在该转化后的0-1串输入上从而得到一个固定长度的0-1串输出。这儿{0,1}*表示的是所有0-1串的集合。哈希函数在密码学中的一个基本功能是提供一个“单向”和“抗碰撞”的转换,这儿“单向”指的是给定一个函数的随机生成的输出求出其输入或前像是困难的,“抗碰撞(collision-resistant) ”指的是给定一个输入难以找到另外一个不同的输入使得哈希函数在这两个不同输入上的输出相同。“目标单向”的 哈希函数指的是给定一个从该函数值域中随机选取的值,没有概率多项式时间的算法能够以不可忽略的概率求出其前像。哈希函数范围可以非常广泛从一个简单的混合(mixing)函数到一个具有伪随机输出性质的函数。具有伪随机输出性质的哈希函数在密码学分析中常被理想化为一个“随机圣谕(random oracle)”。有几个哈希函数在密码学中被广泛使用比如MD5将任意长度的数据转换为一个128-位的0-1串,而另一个常用的哈希函数SHA的输出是160位的0-1串。本发明使用两个转换函数f,h : {0,1}* — Zq(在应用中,f,h的值域一般定义为\的一个不包含0的子集)。典型地,f,h的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{0,1}*中的0-1串,然后将f,h作用在该转化后的0-1串输入上从而得到一个Zq中的数值(典型地,Zq中的数值亦用2进制表示)。特别地,f,h可以是哈希函数。其它常用的转换函数为f(X,aux) =X modq或者(X modN+l)modq,其中X G G,N为G'的阶(比如,若对于一个大素数尸¢7' = ,则N+1 = p),aux是任意字符串或字符串的集合;若X = (X, y) G G是椭圆曲线上的一个点,其中X, y G Zq,贝U可令f (X, aux) = x或I ;其它可以使用的转换函数还有/(尤r) = (Zmod的 (ymodgO或(Zm0dg) //cn,其中H : {0,1}* — Zq是一个哈希函数。为了描述的方便起见,发明人使用同一个函数符号来表示具有不同输入个数的转换函数。在应用中,转换函数的所有输入首先转换为0-1串,然后将转换后的0-1串连接成一个0-1串(联结的顺序可以变化),最后在将转换函数作用到该联结后的0-1串从而得到输出。在某些应用中,转换函数的输出只有部分被使用。在大多数情况下,转换函数的输入的顺序不重要(顺序可以被变化)。比如,以转换函数f 为例,设X为一个字符串,记X⑵为X的2进制0-1串编码表示;设S= Is1,…,sj, t≥0,为t个字符串的集合,记&(2),42),#,…,#为Sl,s2, S3,…,St的2进制0-1串编码表示,则/(x,S) = /(x(2)|h(2)|卜丨2)丨卜K)),其中“I I”表示的是字符串联结操作符。注意Y2Wf,圹,…,5丨2)联结的顺序可以变化,但联结的顺序需固定且所有的用户知晓且使用相同的顺序进行联结操作。对于f(x(2) K2)丨丨彳)"…丨卜尸),若其中Si,I≤i≤t,是空串,则 /(#) Il # Il # Il-Il ^ ) = fix2 Il 彳 Il-Il Sfj Il sf+1 Il …|k2)。上述关于转换函数 f 的描述同样适用转换函数h。参考图I。我们假定签名者,记为A,拥有签名公钥PKa= {G/,g,q,U = g_w GG},签名公钥PKa与签名者身份A的绑定由一个可信的第三方机构来执行。通常,可信的第三方机构会检查j的身份的有效性以及PKa的有效性(特别地,U G G),然后对(义/%^)做
一个数字签名,并将以及可信第三方的签名形成一个针对(vlPt)公钥证书,记为CERT- o
A记签名者或设备的身份为A,发明的数字签名方法运作如下签名公钥包含:U = g_w G G,其中weZ:,(g,q,h,f)。记j的公钥证书为CMA。签名私钥w。签名的生成与验证记mG {0,1}*为需要签名的信息。令h:{0,lT —Zq为一个抗碰撞的哈希函数(在应用中可令h:{o,ir— {oar/o,其中I ( q|是个正整数,比如I = |q|-l,{0,1}70表示的是所有长度为I的不全为0的0-1串的集合)。令f:G' - Zq是一个转换函数。一般而言,若(p是个素数),f直接可以是“mod q”操作;若G'是定义在有限域上的一个椭圆曲线群(即a e G表示椭圆曲线上的一个点(x,y)),f(a)=X0签名者做如下计算计算e = h (m),从Zq中随机选取r (在应用中,可在{0,1}1中随机选取r),计算a=gr G G, d = f (a)(在应用中,可直接计算d = f (gr));注意,对于这种具体实施方式
,auxm和auxd被设为空集。计算z = r+dwe G Zq,并将s = {d, z}作为对m的签名。收到{m, s}以及签名公钥以及公钥证书后,签名验证者通过验证可信第三方的签名来验证公钥证书的有效性(一旦一个签名者的公钥证书被确认为有效,签名验证者可以存储该有效的数字签名,这样对该签名者之后的签名验证过程可省略对可信第三方签名的验证)以及z G Zq (对于这种签名方式,d G Zq的验证可进行或不进行)。若检查失败,则终止执行;若检查成功,验证者进一步计算e = h (m),计算并验证f (gzUde) = d。若f (gzUde) = d则接受签名,否则拒绝。发明人强调,在签名的产生和验证过程中,某些操作或计算(比如签名产生过程中e,d的计算顺序等,签名验证过程中的公钥证书有效性的验证,z G Zq,d G Zq, a G G1,等的验证)的顺序可以变化和组合,其顺序对签名的生成和验证的正确性不关键。但是,合适的验证操作顺序可以尽早发现签名的错误,从而节省验证时间。另外若f的值域不包含在Zq中,则验证者不需检查d e Zq ;若z的值域不包含在\中,则验证者亦不需检查z G Zq,但为了提高计算效率,验证者可以计算Z = z modq。为了在签名中证明签名者知道其签名私钥W,在上述所发明的数字签名方案中,可令 d = f(a, U)(即,令 auxd = {U})或( SP,令 auxd = {U,A}),和 / 或令 e =h(m, U)(即,令 auxm = {U})或 h(m,U,A)(即,令 auxm = {U,A})。为了提高发明的数字签名方法的在线/离线效率,签名者和验证者可做如下在线 /离线操作签名者离线预计算J可事先计算并存储P1, Q2,…,Qn},n彡1,其中对于任意的i,l彡i彡n, Qi = IivdpdiWl ,!Ti是一个从Zq或{0,1}1中随机选取的值,名=/(¥),CliW G 1\ ;其中,D = W1,…,dn}可以保密存储于签名验证者,或公开或保密存储于一个可信的第三方。此时,签名者仅需事先存储{ E i,E 2,…,E n},n彡1,其中对任意的i,I 5 i 5 n, E i = Iri, dy}。若D = W1,…,dn}保密存储于签名验证者或公开存储于一个可信的第三方,签名者可以运行一个计数器CTR其初始值设为I。(若签名者与签名验证者之间有安全的通信信道或其它信息同步的方式,计数器亦可以去掉。)签名验证者离线预计算若签名验证者在接收到签名之前就知道要签名的信息Hii,可以预先计算并存储ei = h(Ini), i, I彡i彡n ;若D = W1,…,dj保密存储于签名验证者或公开或保密存储于一个可信的第三方,则签名验证者还可以事先计算并存储{n112,…,TIn},n彡1,其中,对于任意的i,l彡i彡n,Uj = {Ue'd'} o在线签名生成和验证在接收到要求签名的信息叫后,签名者j计算ei =h (Ini) o )获得一个预先存储的尚未在之前的签名中使用的Qi = Iri, (Ii, (IiWh计算Zi =I^diWei G Zq,并将((IpZi)作为对Hii的签名。注意,因为(IiW已经事先计算好,i不需计算CliW0为了找到预先存储的尚未在之前的签名中使用的= Iri, (Ii, (IiWh—般而言,i可以利用计数器CTR的值来确定尚未在之前的签名中使用的Qi = Iri, Cli, CliWj ;或者,对于每一个Q I = Iri, (Ii, (IiWj, I彡i彡n,—旦Q 4在签名中被使用,将Q 4删除(这样,留下来的都是尚未在签名中使用的Qi)。若D = W1, -,dn}保密存储于签名验证者或公开存储于一个可信的第三方,且签名者运行一个初始值为I的计数器CTR,则在线签名生成和验证如下记CTR当前的值为i,I彡i彡n,在接收到要求签名的信息IHi后,签名者i计算ei = hOiii I I i),其中Hii | | i表示的是Ini和i的字符串联接。i获得E i = Iri, (IiWh计算Zi = T^diWei G Zq,并将(i, Zi)作为对Hii的签名。然后,j将计数器增加1,即CTR的值变为i+1。收到Imi, (i,Zi)}后, 签名验证者由i得到屯,然后验证(屯,Zi)是对信息Hii I I i的有效签名。
本发明给出一个新的计算高效的/数字签名方法,与Schnorr签名方案和数字签名标准(DSS)方案相比,我们提出的新的数字签名方法既具有严格的可证明安全同时具有比DSS方案更优的在线/离线效率。与发明人在专利申请号200910198735. 9的发明专利申请中所描述的ZHAO签名方案相比,本发明给出的新的数字签名方法具有更为高效的签名验证和生成计算复杂性。所发明的新的数字签名方法可在各种需要数字签名的应用中应用。特别地,所发明的新的数字签名方法特别有利于在基于计算或存储受限设备,比如 RFID标签、无线传感器、智能卡、等,的数字签名及相关电子商务、政务中应用。本发明的数字签名方法的目标是在保证安全性和离线存储复杂性的基础上获得更好的计算效率。
权利要求
1.ー种计算高效的在线/离线数字签名方法,其中,i表示签名者,i的公钥为{G',g,q,U = g-w G G}, j的私钥为w e Z* = {1,2,,< - 1},其中,表不一个信息或数值的集合,g是ー个阶为N的有限群G'中的一个阶为素数q的循环子群G的生成元,i的公钥证书为CERTa,m为待签名的信息,名表示签名验证者,所述方法包括 由所述签名者得到e = h(m, auxm),其中h为ー个从{0,1ド到Zq = {0,1,2,…,q_l}的抗碰撞的转换函数且m是h的输入之一,auxm是ー个包含{ひ,A, w, CMろ}的集合的能够为空的子集合,其中,{0,IK表示的是任意0-1串的集合; 由所述签名者得到r G Zq、a = g1"和/或d = f (a,auxd),其中f是ー个从{0,1}*到Zq的转换函数且a是f的输入之一,auxd是ー个包含U/, A, m, 的集合的能够为空的子集合; 由所述签名者计算z = r+dwe G Zq或z = r+dwe ; 由所述签名者将s = {d, z, auxj或s = {a, z, aux2}或s = {a, d, z, aux3}作为对信息m的数字签名,其中,auXl,l彡j彡3,是ー个包含{/ ,ゴ,e,U,A,集合的能够为空的子集合,auxd, auxm, aux1; aux2, aux3以及函数h, f或者是固定的并被所有的用户事先获知,或者被包含在证书中,或者在协议运行之前被交换和协商; 由所述签名验证者得到所述签名者的公钥{G',g,q,U = g_w G G}、公钥证书CERT-、之后,首先验证所述公钥和公钥证书CMろ的有效性,和/或,d在f的值域内和/或z G Zq ;若验证通过,则所述签名验证者得到e = h(m, auxm)并按照如下情况之一验证签名的有效性 若d G s,则所述签名验证者计算并验证f (gzUde, auxd) = d或者gzUde = a A d = f (a,auxd),若验证成功,则接受签名,否则拒绝; 若a G s但ゴg 5,则所述签名验证者得至Li d = f (a, auxd),并验证gzUde = a或f (gzUde,auxd) = d,若验证成功,贝U接受签名,否则拒绝。
2.如权利要求I所述的方法,其中,所述签名者事先计算Q2,…,Qn},n彡1,其中对于任意的i,I彡i彡n,Q,. [{rメスw} ,Ti G I^di = /(ぎ' ),如ん,是ー个包含{U, A, Ini, G57P7)}的集合的能够为空的子集合,Hii表示第i次待签名的信息JEpE2,…,E J , n ^ 1,其中对于任意的i,l彡i彡n,Sy c {ん,ゴア},由所述签名者』保密存储;W1,d2,…,dn},n彡I在所述签名者^和/或所述签名验证者左中保密或公开存储,或由所述签名者和签名验证者之外的第三方公开或保密存储; 当所述签名者在线数字签名的时候,在这些事先离线存储的值{ Q p ^2,…,Q1J或{ E !,E 2,…,E n},n彡1,中找出之前签名尚未使用的Qi或E i,l彡i彡n,,并将Qi或E i中的值直接用于在线的签名生成; 若所述签名验证者古在得到签名之前事先知道Hii G {0,1ド和dpi < i <n,则所述签名验证者事先计算并存储ゲ其中ら=/!( ,auxm) ’au、是ー个包含{[/J,m.,CERT的集合的能够为空的子集合; 当所述签名验证者ぶ在线验证针对Hii的数字签名Si = {di; Zi, aux\}或Si = Ia1, Zi,auxy 或 Si = Ia1, (Ii, Zi, aux^}时,其中 aj G G' , aux1」,I ^ j ^ 3,1 ^ i ^ n,是一个包ノMmi, C^ei, U,A, 627P&}集合的能够为空的子集合,若所述签名验证者力已事先计算并存储ゲ'e,,则将"ヶ直接用于バヶ,仙\)=《或者4 = f(ai> auxd, ) A gZ'Ud'e' =的计算。
3.如权利要求2所述的方法,其中,对任意的i,I彡i s^n,令Qi= Iri, (Ii, (1タ},其中A 是ー个从 Zq = {0,1,…,q_l}或 = {I,…,q_l}或{0,1}70 中随机选取的值,或者利用ー个从{0,1ド到{0,1}70的伪随机函数产生;diW G Zq;其中,I < |q|是ー个正整数,|q|表示以2进制表示的q的长度,{0,1}1表示的是所有长度为I的0-1串的集合,{0,1}70表示的是所有长度为I且不全为0的0-1串构成的集合。
4.如权利要求2所述的方法,其中,若W1,d2,…,dn},n彡I在所述签名验证者5中保密存储,或由所述签名者和签名验证者之外的第三方公开存储,签名生成和验证利用一个计数器来完成;所述签名者运行ー个计数器CTR,其初始值设为0或I或由所述签名者和所述签名验证者事先约定好的ー个常数;在对第i > I次信息Hii进行签名之前或之后,所述签名者将计数器增加1,即CTR := CTR+1 ; 若在每次签名之前更新CTR的值,在对第i > I次信息%进行签名之前所述签名者将计数器增加1,即CTR = CTR+1 ;所述签名者计算ei =力(巧 I I CTR, auxm) ,Z1 = T1 + 或 Zi = I^diWei G Zq,其中 Cri, (IiW)直接取自由所述签名者事先计算并存储的E i或Qi, HiiI ICTR表示Hii与CTR的字符串联接;所述签名者将Si = {CTR,zj作为对消息Hii的签名;所述签名验证者得到Si = {CTR,zj后,利用CTR得到相应的值dCTK G {も,…,dj,并验证{dCTK,zj是针对信息Hii I I CTR的ー个有效签名; 若在每次签名之后更新CTR的值,在对第i > I次信息Hii进行签名时所述签名者计算eJ = ^mi I I CTR,auxm) ,Zi = I^diWei 或 Zi = I^diWei G Zq,其中 Cri, (IiW)直接取自由所述签名者事先计算并存储的E i或Qi ;所述签名者将Si = {CTR,zJ作为对消息Hii的签名;签名完成后,所述签名者将计数器増加I ;所述签名验证者得到Si = {CTR,zj后,利用Si中的CTR值得到相应的值dCTK G {も,…,dn},并验证{dCTK,zj是针对信息Hii I I CTR的一个有效签名。
5.如权利要求I至4任一项所述的方法,其中,令h为ー个从{0,1ド到{0,1}1或Zq或Z*q = {1,2,…,q-1}或{0,1} VO的抗碰撞和或目标单向的哈希函数;令f为ー个从{0,1ド到Zq或{0,1}1或z\或{0,1} Vo的抗碰撞的哈希函数,或者f (a,auxd) = amodq或(amodN)modq或(amod(N+l))modq,或者若a = (x,y) G G表示的是椭圆曲线上的ー个点,其坐标值为(X G Zq, y G Zq)或(X, y),疋义 f (a, auxd) = x 且 f (a, auxd) = y 或 f (a, auxd) = xmod q 且 f(a, auxd) = y mod q ;令 auxd 为空集或 auxd = {U}或= {U,A},并且 / 或者令 auxm 为空集或 auxm = {U}或Ciiafn = {U,A}。
6.如权利要求5所述的方法中,其中,所述签名验证者在验证签名时检查d在函数f的值域中,若检查失败则拒绝接受签名;和/或, 若所述签名者计算得到z e Z,,所述签名验证者在验证签名时验证z e Z,,若则拒绝接受签名;若所述签名者计算得到的z不能保证属于Z,,所述签名验证者计算f(gzUd%auxd)的其它方式有f (g(z mod q)Ude,auxd);若a G S,所述签名验证者检查a G G ;若a g G,则所述签名验证者拒绝接受签名。
7.如权利要求6所述的方法,其中,令w=-W',其中w' G Z\,即U = gw G G。
8.如权利要求6所述的方法,其中,r彡I,从Zq中随机选取;令h为ー个从{0,1}*到Z\= {1,2, -,q-1}或{0,1} VO的抗碰撞和或目标单向的哈希函数;和/或,令f 为ー个从{0,IK到Z\或{0,1} 70的哈希函数或伪随机函数。
全文摘要
提供了一种计算高效的在线/离线数字签名方法。记签名公钥为U=g-w,私钥为w∈Z*q,f,h{0,1}*→Zq为两个转换函数,m为待签名的信息。签名者得到e=h(m)、r∈Zq、d=f(gr),计算z=r+dwe ∈ Zq,并将(d,z)作为m的签名。签名的有效性通过计算f(gzUde)=d来验证。签名者可离线预计算{r,d,dw}。若签名验证者预先知道m和d,可离线预计算Ude。d可由验证者保密存储,也可由签名者和签名验证者之外的第三方公开存储。
文档编号H04L9/30GK102769530SQ201210225178
公开日2012年11月7日 申请日期2012年7月2日 优先权日2012年7月2日
发明者姚期智, 赵运磊 申请人:赵运磊
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1