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

文档序号:7716141阅读:469来源:国知局
专利名称:一种在线/离线高效的数字签名方法
技术领域
本发明涉及密码技术,尤其涉及数字签名方法。
背景技术
预备知识和符号标示记G为一个有限群G'中的一个循环子群,其中记G'的阶为N,G的阶为q,g是G 的生成元,记Ie为G'的单位元,记G/le为G中除了 Ie之外的所有元素构成的集合。一般而 言,q为一个大的素数(典型地,|q| = 160,其中|q|表示的是以2进制表示的q的长度)。 记Ztl为数字集合{0,1夂,(1-1},记<为数字集合{Ρ··4-1}。在下面的背景技术描述中,采 用乘法表示(multiplicative representation)群上的操作,即G'和G为乘法群。这只 是为了表述上的方便,所有有关背景技术的叙述均可等价地应用到加法群上,比如,椭圆曲 线,或者其他的代数群或具体的群,有限域,复数或复合模(composite moduli)等。一般而 言,对于乘法群上的操作,指数上的操作是对q求模,而群上元素的操作是对N或N+1求模 或其它操作以保证操作的结果是G'或G中的元素;比如gx通常指的是g °d<1,gxgy通常表 示的是gxgy e G',x+y e Zq和xy e Zq表示的是x+ymodq和xymodq。为了表述的方便起 见,假定参数G,q,g是固定的并被所有的用户事先获知(这是一种实用中的普遍情况);或 者,将这些参数包含在证书中或者在协议运行之前交换和协商这些参数并达成一致。假定 离散对数假设在G上成立,即给定X = gx e G (其中χ从Ztl中随机选取),没有概率多项式 时间的算法能够以不可忽略的概率由X求出X。在下面的叙述中使用符号(比如,2) 来标示一个用户或设备的逻辑或“区别性”的身份(identity),比如一个名字,一个设备序 列号,一个email或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,i;r —Ztl为两个转换函数。典型地,f,h的输入,即任意一个字符串 (或若干个字符串的联结),首先被编码为一个{0,1}*中的0-1串,然后将f,h作用在该转 化后的0-1串输入上从而得到一个Ztl中的数值(典型地,Ztl中的数值亦用2进制表示)。特别地,f,h可以是哈希函数。在应用中,转换函数的所有输入首先转换为0-1串,然后将 转换后的0-1串连接成一个0-1串(联结的顺序可以变化),最后在将转换函数作用到该联 结后的0-1串从而得到输出。在大多数情况下,转换函数的输入的顺序不重要(顺序可以 被变化)。比如,以转换函数f为例,设X为一个字符串,记X(2)为X的2进制0-1串编码表 示;设 S= Is1, ...,st},t 彡 0,为 t 个字符串的集合,记 乂 2),#,..,#)为 si,s2,s3,…, st的2进制0-1串编码表示,则/(x,s) = /V2) ih(2) 丨2) ||-||^(2)),其中“ 11 ”表示的是字符 串联结操作符。注意X(2),42W丨2),···,\(2)联结的顺序可以变化,但联结的顺序需固定且所 有的用户知晓且使用相同的顺序进行联结操作。对于/(义(2)丨|彳)|丨彳)丨丨…Ik)2)),若其中Si, ι 彡 i 彡 t,是空串,则/“(2)lh(2)lM2)丨卜.丨 k(2)) = /(x2 Ih2MA Il^11 卜.Ik2)。上述关于 转换函数f的描述同样适用转换函数h。假定签名者,记为i,有一个签名公钥U,签名公钥υ与签名者身份A的绑定由一个 可信的第三方机构来执行。通常,可信的第三方机构会检查i的身份的有效性以及U的有效 性,然后对(i,t/)做一个数字签名,并将(Λ /)以及可信第三方的签名形成一个针对(Λ /)公 钥证书,记为CMl。数字签名方法是密码技术的主要应用之一。基于离散对数的数字签名方案主要有 khnorr签名方案和国际数字签名标准(Digital SignatureStandard(DSS))方案。Schnorr签名方案运作如下签名公钥U = g_w e G,其中weZ;。其中,G是有限群G'中的一个循环子群,g是 G的生成元;记Ztl为数字集合{0,L···,q-l},A'为数字集合{1···,q-1},q为一个大的素数 (典型地,|q| = 160,其中|q|表示的是以2进制表示的q的长度)。签名私钥w。签名的生成记me {0,1}*为需要签名的信息,{0,1}*表示的是所有0-1串的集 合。令h:{o,i;r —Ztl为一个抗碰撞的哈希函数。从Ztl中随机选取r,计算a = gr G G ;计算d = h (a, m);计算ζ = r+dw e Zq ;将(d,ζ)作为对m的签名。签名的验证得到{m,(d,z)}以及签名公钥U后,签名验证者验证是否h(gzUd,m) =d。若h(gzUd,m) =d则接受签名,否则拒绝。数字签名标准(DSS)方案运作如下签名公钥U = gw e G,其中we<。签名私钥W。签名的生成记me {0,1}*为需要签名的信息。令h:{0,i;r —Ztl为一个抗碰撞 的哈希函数。令f:G' — Ztl是一个转换函数。一般而言,若G'= Z; (ρ是个素数),f直接可 以是“mod q”操作;若G'是定义在有限域上的一个椭圆曲线群(即a e G表示椭圆曲线 上的一个点(X,y)),f(a) = χ。签名者做如下计算从Ztl中随机选取r,计算a = gr G G,f = , e A ;计算d = f(a) ;e = h(m); 计算ζ = er + dwr e Zq ;将(d, ζ)作为对m的签名。
签名的验证得到{m,(d,ζ)}以及签名公钥U后,签名验证者如下验证签名的有 效性计算i= ζ'' e Zq ;验证/XgeWfi) = d,若JXgeiU, = ¢/则接受签名,否则拒绝。Schnorr签名方案和数字签名标准(DSQ方案比较可证明安全性=Schnorr签名方案在假设哈希函数h是随机圣谕(random oracle) 的假设和离散对数假设下被证明是安全的。但是,对于数字签名标准(DSQ方案,迄今为 止,其可证明安全性仍未知(即便转换函数f,h均假设为随机圣谕)。在线/离线效率在很多应用中为了提高签名方案的效率,通常将签名的生成分 为两个阶段来完成离线阶段和在线阶段。在线/离线签名的用途广泛。在很多的实际应 用中,签名者(比如智能卡)在信息提交后,只有很有限的反应时间(但是在两个连续的签 名请求之间,它可以完成很复杂的计算)。在线阶段的特点就是非常快,因此即使是一个很 弱的处理器也可以完成执行。在线/离线签名在基于智能卡的应用中特别关键离线阶段 既可以在卡片的制造过程中实施,也可以在卡片通电以后作为背景计算实施。对于^^1101·!·签名方案,签名者可以预先离线计算并存储(r,a = gr);接下来,在 为信息m签名的时候,它仅仅需要在线计算e = h(a,m)和ζ = r+ew0对于数字签名标准(DSS)方案,签名者亦可以预先计算出很多的a的值。但是,与 khnorr签名方案不同的是,DSS的签名者不用将这些预计算的a值存储下来。具体来说,每 一次离线预先算好a = f后,DSS的签名者可以离线地计算c/ = f(a),r - r"1 ,dwr,并且只需要 存储⑷&― )。在需要对信息m进行签名时候,签名者只需在线计算e = h (m),z 二 & +加户 (其中,/WW是事先离线计算并存储的)。在实际的应用中,对于基于智能卡的应用,智能卡 制造商可以在卡片制造过程中存储许多(义/1,— )的值。注意a = f e G'而《^—/^、, 一般而言a的长度可能设为IOM位,而q得长度是160位。因此,Schnorr签名方案对于 每一次签名需要离线存储10M+160 = 1184位的信息,而DSS签名方案对于每一次签名只 需存储160X3 = 480位的信息。这对于基于智能卡的数字签名实现是非常重要的。虽然 DSS签名方案没有一个严格的安全性证明,但是它更优的在线/离线效率使得它在实际应 用中被更广泛地使用。

发明内容
本发明给出一个新的数字签名方法,与Schnorr签名方案和数字签名标准(DSS) 方案相比,我们提出的新的数字签名方法既具有严格的可证明安全同时具有比DSS方案更 优的在线/离线效率。所发明的新的数字签名方法可在各种需要数字签名的应用中应用, 特别地,所发明的新的数字签名方法特别有利于在基于智能卡的数字签名及相关电子商 务、政务中应用。本发明的数字签名方法的目标是在保证安全性的基础上获得更好的在线 /离线计算效率。本发明提供一种在线/离线数字签名方法,其中,^表示签名者,^的公钥为U = giGG,J々&_*weZ(1={0,l,2,…,q_l},其中g是一个阶为N的有限群G'中的一 个阶为素数q的循环子群G的生成元,』的公钥证书为为待签名的信息,左表示签 名验证者,所述方法包括由所述签名者得到e = h(m,aiD0,其中h {0,1}* — Zq是一个从{0,1}*到Ztl的抗碰撞的转换函数且m是h的输入之一,auxffl是一个包含{C/,么叻的集合的 能够为空的子集合,其中,{0,1}*表示的是任意0-1串的集合;由所述签名者得到r e Zq, 得到a = f和/或d = f (a,auxd),其中f是一个从{0,1}*到\的转换函数且a是f的 输入之一,aiDcd是一个包含{C/j,m}的集合的能够为空的子集合;由所述签名者或设备计 算z,其中ζ的计算基于er+dw或dr+ew;由所述签名者或设备将s = {d,ζ, auxj或s = {a, ζ, 或s = {a,d,ζ, au%}作为对信息m的数字签名,其中,auxi; 1 ( i ( 3,是一 个包含^的集合的能够为空的子集合,“J e Z9,i = ^ eZ"其中auxd,auxm, Bux1, aux2, aux3以及函数h,f或者是固定的并被所有的用户事先获知,或者被包含在证书中,或 者在协议运行之前被交换和协商;签名验证者得到所述签名者的公钥U、公钥证书C^l、 {m, s}之后,首先验证所述公钥证书CmL的有效性,若验证通过,则验证者得到e = h(m, auxj并按照如下情况之一验证签名的有效性若ζ的计算基于er+dw且d e s,则验证者 得到 = e-1 e Zq,计算并验证J\gf ,am》=c/或者"=f{a,auxd) Agz'Udi = α,若验证成功, 则接受签名,否则拒绝;若ζ的计算基于er+dw且a e s但Jg Λ,则验证者得到 = e Z 和d = f(a, auxd),并验证一“滋二^/或卯若验证成功,则接受签名,否则拒 绝;若ζ的计算基于dr+ew且d e s,则验证者得到J = Γ1 e Z^,并验证二 i/ 或者J = /(0,《%;^一C/一 ,若验证成功,则接受签名,否则拒绝;若ζ的计算基于 dr+ew且ae id^/u,则验证者得到d = f(a,auxd)禾口 J 二 c^eZ,,并验证g」[/一二 “或 f(g^U^,auxd) = d,若验证成功,则接受签名,否则拒绝。如上所述的方法,其中,若签名验证者力在得到签名之前事先知道m,或签名者j在 产生签名之前事先知道m,则签名验证者和/或签名者能事先计算并存储e = h(m,auxffl)和 /或 = —;若z的计算基于er+dw,事先计算并在J中存储{Ω” Ω2,…,Ωη},η彡1, 其中对于任意的i,1彡i彡η,Ω, G {η, ^ Μ,ri e Zq, Cii=Agr^auxd);若ζ的计算基于 dr+ew,事先计算并在j中存储{ Σ Σ 2,…,Σ J , η ^ 1,其中对任意的i,l彡i彡η, Σ,, c W,r, e Zq,《=/(g\ %);签名者在线数字签名时候,在这些事先离线存储的 值中找出之前签名尚未使用的 1或[,,并将Ω i或[,中的值直接用于在线的签名生成; 若ζ的计算基于dr+ew且力预先知道待签名的信息m,^还能预先计算e = h (m,auxj以及 ew 或 ew (modq)。如上所述的方法,其中,对任意的i,l彡i彡11,令Qi = {ri; Cli, CliWj5E j = Idi, ClirJ,其中α是一个从Ztl或{0,1}1中随机选取的值,CliW e Zq, ^ri e Zq, 1 ^ | q |是一个正 整数,|q|表示以2进制表示的q的长度,{0,1}1表示的是所有长度为1的0_1串的集合。如上所述的方法,其中,i通过在{0,1}1或Ztl中随机选取r得到r e Zq或者利用 一个从{0,1}*到{0,1}1或Ztl的伪随机函数产生,其中|q|是一个正整数,{0,1}1表示 的是所有长度为1的0-1串的集合;令h为一个从{0,1}*到{0,1}1或Ztl的抗碰撞的哈希 函数;令f为一个从{0,1}*到Ztl或{0,1}1抗碰撞的哈希函数,或者f(a,aUXd) =amodq或 (am0dN)modq或(am0d(N+l))m0dq,或者若a= (x,y) e G表示的是椭圆曲线上的一个点,其 中 χ e Ztl, y e Ztl 为坐标值,定义 f(a,auxd) = χ 或 f(a,auxd) = y ;令 aiDcd 为空集或 aiDcd ={U}或賺d = {V, Α],并且/或者令aui为空集或aui = {U}或cmxm = {U Jj。
如上所述的方法,其中,基于er+dw的ζ的计算方式有z = er+dw、z = er+dw e Zq、 ζ = (er+dw) modq> ζ = (er modq) + (dwmodq)、ζ = ((er modq) + (dwmodq))modq> ζ = er+dw+α q其中α是一个整数;基于dr+ew的ζ的计算方式有ζ = dr+ew、z = dr+ew e \、ζ =(dr+ew)modq、z = (dr modq) + (ewmodq)、ζ = ((drmodq) + (ewmodq))modq>ζ = dr+ew+ β q 其中β是一个整数。如上所述的方法中,其中,验证者在验证签名时检查d e Ztl或d e {0,1}1, 检查失败则拒绝接受签名;和/或,若签名者计算得到ζ e Ztl,验证者在验证签名时验 证z e Ztl,若zg^则拒绝接受签名;若签名者计算得到的z不能保证属于Z,,验证者 计算f(gW,awcd)的其它方式有/(g(_d i^, maj,计算/(ff/。其它方式有 Agizmodq^Ue",auxd)a如上所述的方法,其中,若ζ = er+dw,力如下得到“一若紅si验证“《且 ei = 1,若验证通过则直接得到 ;若s j计算一得到 ;若ζ = dr+ew, i如下得到j = d'x 若 d e s后验证^ e Ζ;且』=ι,若验证通过则直接得到J ;若2 g 5 j计算Cf1得到J。如上所述的方法,其中,令a = f e G ;若a e s,验证者检查a e G,若α ¢¢7验证 者拒绝接受签名。如上所述的方法,其中,令W = ,其中W' ez,,即U = gw' e G。本发明的方法与Schnorr签名方案及DSS签名方案的比较与khnorr签名方案 相比,本发明的签名方法需要更少的离线存储空间。与DSS签名方案相比,本发明的签名方 法具有如下优点同样或者更好的空间复杂度。假设预计算了 k个a = f的值,如果是Z = er+dwOiiodq),发明方法的离线空间复杂度为;3k|q|,这和DSS相同;但是如果ζ = dr+ew (modq),发明方法的在线空间复杂度只有,这就大大减少了离线空间复杂度。签名生成的总体效率更高。在计算DSS的签名z = er + Λ—的时候,总共需要进行1 次模求逆运算f = r'' 6、和2次模乘运算咖卩。相比之下,发明方法在计算ζ = er+dw e &或 ζ = dr+ew e Zq的时候,签名者总共只需要进行2次模乘运算(不需要进行模求逆运算)。 注意模求逆运算是相当费时的操作,因此最好可以把它省略掉(尤其是对于基于智能卡 的应用)。更有效的离线预计算。除了其他相同的预计算以外,DSS的签名者需要计算1次模 求逆运算eZ,和两次模乘运算来计算 Λν/^么;而发明方法的签名者只需要离线1次 模乘运算得到dw e Ztl或dr e \。更有效的在线签名验证(在ζ = er+dw (modq)情况下)。验证DSS的签名(d,ζ) 的时候,验证者要在线计算2 = ζ"1 e &,因为ζ的值只有在收到签名后验证者才知道,因此 验证者无法事先计算i。因为模求逆运算是代价相对昂贵的,最好可以省略掉。相比之下, 在ζ = er+dw (modq)情况下,在发明方法的签名验证时,验证者只需要计算 = Z,其中e = h(m)。如果像实际应用中经常出现的那样,验证者在接收到签名之前就知道待签名的信息 m(甚至m就是由验证者准备的),那么ej可以离线预计算。对于ζ = dr+ew e Zq的情形, 发明方法的签名验证的计算复杂度与DSS相同。在随机圣谕模式下的可证明其安全性。发明人证明,假设h,f都是随机圣谕(比如h,f均为哈希函数,并将哈希函数理想化为随机圣谕),在随机圣谕模式和DLP假设下, 发明的数字签名方法在自适应选择消息攻击下是签名不可伪造的。注意,DSS目前还没有 安全性证明。


图1和图2是示例性地示出了本发明的数字签名方法。
具体实施例方式预备知识和符号标示本发明所描述的方法和操作基于一个有限群G'中的一个循环子群G,其中记G' 的阶为N,G的阶为q,g是G的生成元,记Ie为G'的单位元,记G/le为G中除了 Ie之外的 所有元素构成的集合。一般而言,q为一个大的素数(典型地,|q| = 160,其中|q|表示的 是以2进制表示的q的长度)。记Ztl为数字集合{0,1···,q-Ι},记<为数字集合{L···,q_l}。 发明人在下面发明方法的描述中,采用乘法表示(multiplicative representation)群上 的操作。即,G'和G为乘法群。这只是为了表述上的方便,所有发明方法的叙述均可等价 地应用到加法群上,比如,椭圆曲线,或者其他的代数群或具体的群,有限域,复数或复合模 (composite moduli)等。一般而言,当用乘法群上的操作描述发明方法时,指数上的操作 是对q求模,而群上元素的操作是对N或N+1求模或其它操作以保证操作的结果是G'或G 中的元素;比如gx通常指的是gxm°d% gxgy通常表示的是gY e G',x+y e Ztl和xy e Ztl表 示的是x+ymodq和xymodq。为了表述的方便起见,假定参数G,q, g是固定的并被所有的用 户事先获知(这是一种实用中的普遍情况);或者,我们将这些参数包含在证书中或者在协 议运行之前交换和协商这些参数并达成一致。我们假定离散对数假设在G上成立,即给定X = gxe G(其中χ从Ztl中随机选取),没有概率多项式时间的算法能够以不可忽略的概率由 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,l}*- \。典型地,f,h的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{0,1}*中的0-1串,然后将f,h作用 在该转化后的0-1串输入上从而得到一个\中的数值(典型地,Ztl中的数值亦用2进制表 示)。特别地,f,h可以是哈希函数。其它常用的转换函数为f(X,aux) =X modq或者(X modN+1)modq,其中X e G,N为G‘的阶(比如,若对于一个大素数P G' = Z;,则N+1 = ρ),aux 是任意字符串或字符串的集合;若X= (x,y)曰6是椭圆曲线上的一个点,其中1,7£2(1, 则可令f(X,aux) = χ或y ;其它可以使用的专函函数还有/(Ζ,Γ) = (Ζιη0(^)十(Fmod幻 或,其中H {0,1}* — Zq是一个哈希函数。为了描述的方便起见,发明人 使用同一个函数符号来表示具有不同输入个数的转换函数。在应用中,转换函数的所有输 入首先转换为0-1串,然后将转换后的0-1串连接成一个0-1串(联结的顺序可以变化), 最后在将转换函数作用到该联结后的0-1串从而得到输出。在某些应用中,转换函数的输 出只有部分被使用。在大多数情况下,转换函数的输入的顺序不重要(顺序可以被变化)。 比如,以转换函数f为例,设χ为一个字符串,记x(2)为χ的2进制0-1串编码表示;设S = Is1,…,sj,t彡0,为t个字符串的集合,记彳),42),斤),...,#)为S1, &,s3,…,St的2进制 0-1串编码表示,则/(X,》=/(Xw lh(2) Il丨)丨卜·丨k(2)),其中“ 11 ”表示的是字符串联结操作 符。注意χ(2),0丨Vf,···乂2)联结的顺序可以变化,但联结的顺序需固定且所有的用户知 晓且使用相同的顺序进行联结操作。对于/(X(2) lk,(2) Il42) Il--Ik,(2)),若其中Si, ι彡i彡t, 是空串,则/(x(2) IlW2) IlIl--Iki2') = /^2 IU12II-IK1 IUm 丨卜.Ik2)。上述关于转换函数 f 的描述同样适用转换函数h。参考图ι和图2,示例性地示出了本发明的数字签名方法。我们假定签名者,记为i,有一个签名公钥U,签名公钥U与签名者身份A的绑定由 一个可信的第三方机构来执行。通常,可信的第三方机构会检查i的身份的有效性以及U的 有效性(即U e G),然后对U,C7)做一个数字签名,并将U,t/)以及可信第三方的签名形成 一个针对 , /)公钥证书,记为。记签名者或设备的身份为i,发明的数字签名方法运作如下签名公钥U = g_w e G,其中we Ζ〗,(g,q,h,f)。记力的公钥证书为。签名私钥w。签名的生成与验证记me {0,1}*为需要签名的信息。令h:{0,i;r —Ztl为一个 抗碰撞的哈希函数(在应用中可令11:{0,1}*—⑷,”^其中^ q|是个正整数,比如1 =
q卜1,{0,I}1表示的是所有长度为1的0-1串的集合)。令f:G' —Ztl是一个转换函数。 一般而言,若= (ρ是个素数),f直接可以是“modq”操作;若G'是定义在有限域上的 一个椭圆曲线群(即a e G表示椭圆曲线上的一个点(X,y)),f(a) = χ。签名者做如下 计算计算e = h(m),从Ztl中随机选取r (在应用中,可在{0,1}1中随机选取r),计算a = greG,d = f(a)(在应用中,可直接计算d = f (gr));注意,对于这种具体实施方式
,auxm 和aiDcd被设为空集。以如下方式之一计算ζ并验证签名(具体选用哪种方式可由用户协商或签名者指 定,但是一旦确定就应固定,并且所有的签名验证者知晓ζ的计算方式)计算z = (er+dW)modq,并将s = {d,ζ}作为对m的签名。收到{m,s}以及签名公钥U以及公钥证书后,签名验证者通过验证可信第三方的签名来验证公钥证书的有效性 (一旦一个签名者的公钥证书被确认为有效,签名验证者可以存储该有效的数字签名,这样 对该签名者之后的签名验证过程可省略对可信第三方签名的验证)以及ζ e Ztl(对于这种 签名方式,d e Ztl的验证可进行或不进行)。若检查失败,则终止执行;若检查成功,验证者 进一步计算e = h(m),e = e"1,计算并验证/(g匆勹=d。若/(g卞勺=“则接受签名,否则拒 绝。或者,计算z = (dr+ew)modq,并将s = {d,ζ}作为对m的签名。收到{m,s}以及签 名公钥U以及公钥证书后,验证者验证公钥证书的有效性以及ζ e \及(1 e Ztl。若检查失败, 则终止执行;若检查成功,验证者进一步计算e 二树m) J = ^r1,计算并验证= d。若 KgziUei) 二 C/则接受签名,否则拒绝。发明人强调,在签名的的产生和验证过程中,某些操作或计算(比如签名产生过 程中e,d的计算顺序等,签名验证过程中的公钥证书有效性的验证,zeZq,deZq,aeG', Jje&等的验证)的顺序可以变化和组合,其顺序对签名的生成和验证的正确性不关键。 但是,合适的验证操作顺序可以尽早发现签名的错误,从而节省验证时间。另外若f的值域 不包含在\中,则验证者不需检查d e Ztl ;若ζ的值域不包含在\中,则验证者亦不需检查 ζ e Ztl,但为了提高计算效率,验证者可以计算ζ := zmodq。为了在签名中证明签名者知道其签名私钥w,在上述所发明的数字签名方案中,可 令 d = f(a, U)(即,令 auxd = {U}) ^f {a,U,A)(即,令=),和 / 或令 e = h(m, U)(即,令 auxm = {U})或 h(m,U, A) ( BP,今 auxm = {U, A})。为了提高发明的数字签名方法的在线/离线效率,签名者和验证者可做如下在线 /离线操作验证者离线预计算若签名验证者在接收到签名之前就知道要签名的信息m, 可以预先计算并存储e = h(m);若ζ = er+dw e Zq,验证者可进一步预先计算并存储 e = e_l e Z9 ο签名者离线预计算若ζ = (er+dw)modq』可事先计算并存储P1J2,…,Ωη}, η彡1,其中对于任意的i,l彡i彡n,Qi = Iri, φ, diW},巧是一个从Zq或{0,1}1中随机 选取的值,<=/(g"),CliWeztl^z= (dr+ew)m0dq,j 可事先计算并存储{ Σ 2,…, Σ η},η彡1,其中对任意的i,l彡i彡η,Σ i = {屯,c^},巧是一个从Zq或{0,1}1中随机 选取的值,式二/(f),diri e Zq0在线签名生成在接收到要求签名的信息m后,签名者^计算e = h(m)。若ζ = (er+dW)modqj拿到一个预先存储的尚未在之前的签名中使用的Qi= {ivc^diW},计算ζ =(eri+d^modq,并将(屯,ζ)作为对m的签名。注意,因为diW已经事先计算好,i不需计 算diW。为了找到预先存储的尚未在之前的签名中使用的Qi = Iri, φ, diW},一般而言,i 可以运行一个计数器i,i的初始值设为l,i每签一次名令i := i+1 ;或者,对于每一个Qi =Iri, Cli, CliWj, 1 ^ i彡n,一旦Qi在签名中被使用,将Qi删除(这样,留下来的都是尚 未在签名中使用的Ω》。同样的方法可用在下述当ζ = (dr+ew)modq时寻找存储的尚未使 用的Σ i = Wi,屯巧}。若ζ = (dr+eW)modq,^拿到一个预先存储的尚未在之前的签名中使用的Σ i ={屯,屯巧},计算ζ = diri+ew(m0dq),并将(φ, ζ)作为对m的签名。注意,对于这种方式,若 i预先知道待签名的信息m,i还可预先计算e = h(m)和ew,以进一步提高在线效率。
本发明给出一个新的数字签名方法,与Schnorr签名方案和数字签名标准(DSS) 方案相比,我们提出的新的数字签名方法既具有严格的可证明安全同时具有比DSS方案更 优的在线/离线效率。所发明的新的数字签名方法可在各种需要数字签名的应用中应用, 特别地,所发明的新的数字签名方法特别有利于在基于智能卡的数字签名及相关电子商 务、政务中应用。本发明的数字签名方法的目标是在保证安全性的基础上获得更好的在线 /离线计算效率。
权利要求
1.一种在线/离线数字签名方法,其中,i表示签名者,j的公钥为U = gi e G,i的私 钥为we Ztl= {0,1,2,…,q_l},其中g是一个阶为N的有限群G'中的一个阶为素数q 的循环子群G的生成元,i的公钥证书为CMr5,m为待签名的信息,左表示签名验证者,所述 方法包括由所述签名者得到e = h(m,aUXm),其中h {0,1}* — Zq是一个从{0,1}*到\的 抗碰撞的转换函数且m是h的输入之一,aiDcm是一个包含{i/j,m}的集合的能够为空的子集 合,其中,{0,1}*表示的是任意0-1串的集合;由所述签名者得到r e Zq,a = f和/或d = f(a,aiDcd),其中f是一个从{0,1}*到\ 的转换函数且a是f的输入之一,auxd是一个包含{ /,么树的集合的能够为空的子集合;由所述签名者计算ζ,其中ζ的计算基于er+dw或dr+ew ;由所述签名者将s = {d,z,auxj或s = {a,z,au&}或s = {a,d,z,au%}作为对信息 m的数字签名,其中,{···}表示一个信息或数值的集合,aUXi,l < i ( 3,是一个包含0,6, } 的集合的能够为空的子集合,“e—1 ,力二丄1€217,£0^,£0^,£1皿1,£1皿2,£1皿3以及函数 h,f或者是固定的并被所有的用户事先获知,或者被包含在证书中,或者在协议运行之前被 交换和协商;由所述签名验证者得到所述签名者的公钥U、公钥证书CMl、{m,s}之后,首先验证所 述公钥证书的有效性,若验证通过,则所述签名验证者得到e = h(m,auxffl)并按照如 下情况之一验证签名的有效性若ζ的计算基于er+dw且d e s,则所述签名验证者得到“一 eZ,,计算并验证 /( ",《 &)="或者=一“⑷,若验证成功,则接受签名,否则拒绝;若ζ的计算基于er+dw且a e s但^/ g $,则所述签名验证者得到 = e"' e Ζ,和d = f (a, auxd),并验证二 α或/(一= d,若验证成功,则接受签名,否则拒绝;若ζ的计算基于dr+ew且d e s,则所述签名验证者得到J = W1SZ^并验证 /($2 <卯;0 = ^/或者^/ = f(a,auxd)^gziU^ ^a,若验证成功,则接受签名,否则拒绝;若ζ的计算基于dr+ew且a e s但Jg $,则所述签名验证者得到d = f (a,auxd)和 2 二 cT、Zq,并验证= α或JXg。Uei,awcd) = d,若验证成功,则接受签名,否则拒绝。
2.如权利要求1所述的方法,其中,若所述签名验证者在得到签名之前事先知道m,或 所述签名者i在产生签名之前事先知道m,则所述签名验证者和/或所述签名者能事先计算 并存储 e = h (m,auxffl)和 / 或 = β"' e Z9 ;若ζ的计算基于er+dw,则事先计算并在i中存储Ω2,…,Ω J, η ^ 1,其中对于 任意的 i,1 彡 i 彡 η,Ω; G {η, w},Γ e Z^di = f(gr',auxd);若ζ的计算基于dr+ew,则事先计算并在i中存储{ Σ Σ 2,…,Σ J , η ^ 1,其中对 任意的 i,1 彡 i 彡 η,Σ,· G {diyd^} , Γ e Zq,^ ^f(g\auxd);当所述签名者在线数字签名的时候,在这些事先离线存储的值中找出之前签名尚未使 用的Qi或[i,并将Qi或[的值直接用于在线的签名生成,若ζ的计算基于dr+ew且 i预先知道待签名的信息m,i还能预先计算e = h (m,auxffl)以及ew或ew (modq)。
3.如权利要求2所述的方法,其中,对任意的i,l彡i彡n,令Qi={ri; Cli, CliWj, Σ i =Idi, (1Λ},其中 α 是一个从 Ztl 或{0,1}1 中随机选取的值,CliW e Zq, Cliri e Zq, 1 ^ q是一个正整数,I q|表示以2进制表示的q的长度,{0,I}1表示的是所有长度为1的0_1串 的集合。
4.如权利要求1至3任一项所述的方法,其中,i通过在{0,1}1或Ztl中随机选取r得 到r e Ztl或者利用一个从{0,1}*到{0,1}1或Ztl的伪随机函数产生,其中1彡q|是一个 正整数,{0,I}1表示的是所有长度为1的0-1串的集合;令h为一个从{0,1}*到{0,I}1或 Zq的抗碰撞的哈希函数;令f为一个从{0,1}*到Ztl或{0,1}1抗碰撞的哈希函数,或者f (a, auxd) = amodq 或(amodN)modq 或(amod(N+l))modq,或者若 a = (χ, y) e G 表示的是椭 圆曲线上的一个点,其中χ e Zq,y e 2,为坐标值,定义f(a,auxd) 二乂或^…肌。=y ; 令aiDcd为空集或aiDcd = {U}或= {U, Α),并且/或者令aiDcm为空集或aiDcm = {U}或 auxm = {U, Α} ο
5.如权利要求4所述的方法,其中,基于er+dw的ζ的计算方式有z= er+dw, ζ = er+dw ^ Zq、ζ = (er+dw)modq、ζ = (er modq) + (dw modq)、ζ = ((er modq) + (dwmodq)) modq、ζ = er+dw+ α q,其中 α 是一个整数;基于 dr+ew 的 ζ 的计算方式有:z = dr+ew、ζ = dr+ew e Zq、ζ = (dr+ew)modq、ζ = (dr modq) + (ewmodq) Λ ζ = ((dr modq) + (ewmodq))modq、ζ = dr+ew+β q,其中 β 是一个整 数。
6.如权利要求5所述的方法中,其中,所述签名验证者在验证签名时检查de Ztl或 de {0,1} S若检查失败则拒绝接受签名;和/或,若所述签名者计算得到ζ e Z,,所述签名验证者在验证签名时验证ζ e Ztl,若 zg A则拒绝接受签名;若所述签名者计算得到的ζ不能保证属于Ztl,所述签名验证者 计算/(一"乂《巧)的其它方式有f y鄉U^auxJ,计算y(一其它方式有 Agizmoi^Uei,auxd)。
7.如权利要求6所述的方法,其中,若ζ= er+dw,启如下得到 = ^ e s乡验证 6 z^ 且& = 1,若验证通过则直接得到 ;若 电s,i计算一得到 ;若ζ = dr+ew,力如下得到J = d~] 若J e S 验证^ e Z且d = 1,若验证通过则直接得到J ;若^ 5 j计算cT1得到J。
8.如权利要求7所述的方法,其中,令a= ^eG;若a e s,所述签名验证者检查a eG, 若“G,则所述签名验证者拒绝接受签名。
9.如权利要求8所述的方法,其中,令w=-W',其中W' GZt^hU = Sw' eG。
全文摘要
提供了一种在线/离线高效的数字签名方法。记签名公钥为U=g-w,私钥为w∈Zq,f,h{0,1}*→Zq为两个转换函数,m为待签名的信息。签名者得到e=h(m)、r∈Zq、d=f(gr),计算z=er+dw或z=dr+ew,并将(d,z)作为m的签名。签名的有效性通过计算或验证,其中若z=er+dw,签名者可离线预计算{r,d,dw};若z=dr+ew,签名者可离线预计算{d,dr}。
文档编号H04L9/32GK102064940SQ20091019873
公开日2011年5月18日 申请日期2009年11月13日 优先权日2009年11月13日
发明者丁素芬, 姚期智, 赵运磊 申请人:丁素芬, 姚期智, 赵运磊
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1