CN102064940B - 一种在线/离线高效的数字签名方法 - Google Patents

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

Info

Publication number
CN102064940B
CN102064940B CN 200910198735 CN200910198735A CN102064940B CN 102064940 B CN102064940 B CN 102064940B CN 200910198735 CN200910198735 CN 200910198735 CN 200910198735 A CN200910198735 A CN 200910198735A CN 102064940 B CN102064940 B CN 102064940B
Authority
CN
China
Prior art keywords
aux
signature
signer
calculate
verifier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN 200910198735
Other languages
English (en)
Other versions
CN102064940A (zh
Inventor
赵运磊
姚期智
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhao Yunlei
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN 200910198735 priority Critical patent/CN102064940B/zh
Publication of CN102064940A publication Critical patent/CN102064940A/zh
Application granted granted Critical
Publication of CN102064940B publication Critical patent/CN102064940B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种在线/离线高效的数字签名方法。记签名公钥为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的签名。签名的有效性通过计算
Figure D2009101987359A00011
Figure D2009101987359A00012
验证,其中
Figure D2009101987359A00013
Figure D2009101987359A00014
若z=er+dw,签名者可离线预计算{r,d,dw};若z=dr+ew,签名者可离线预计算{d,dr}。

Description

一种在线/离线高效的数字签名方法
技术领域
本发明涉及密码技术,尤其涉及数字签名方法。
背景技术
预备知识和符号标示
记G为一个有限群G′中的一个循环子群,其中记G′的阶为N,G的阶为q,g是G的生成元,记1G为G′的单位元,记G/1G为G中除了1G之外的所有元素构成的集合。一般而言,q为一个大的素数(典型地,|q|=160,其中|q|表示的是以2进制表示的q的长度)。记Zq为数字集合{0,1…,q-1},记Zq *为数字集合{1…,q-1}。在下面的背景技术描述中,采用乘法表示(multiplicative representation)群上的操作,即G′和G为乘法群。这只是为了表述上的方便,所有有关背景技术的叙述均可等价地应用到加法群上,比如,椭圆曲线,或者其他的代数群或具体的群,有限域,复数或复合模(composite moduli)等。一般而言,对于乘法群上的操作,指数上的操作是对q求模,而群上元素的操作是对N或N+1求模或其它操作以保证操作的结果是G′或G中的元素;比如gx通常指的是gxmodq,gxgy通常表示的是gxgy∈G′,x+y∈Zq和xy∈Zq表示的是x+ymodq和xymodq。为了表述的方便起见,假定参数G,q,g是固定的并被所有的用户事先获知(这是一种实用中的普遍情况);或者,将这些参数包含在证书中或者在协议运行之前交换和协商这些参数并达成一致。假定离散对数假设在G上成立,即给定X=gx∈G(其中x从Zq中随机选取),没有概率多项式时间的算法能够以不可忽略的概率由X求出x。在下面的叙述中使用“^”符号(比如,)来标示一个用户或设备的逻辑或“区别性”的身份(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,1}*→Zq为两个转换函数。典型地,f,h的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{0,1}*中的0-1串,然后将f,h作用在该转化后的0-1串输入上从而得到一个Zq中的数值(典型地,Zq中的数值亦用2进制表示)。特别地,f,h可以是哈希函数。在应用中,转换函数的所有输入首先转换为0-1串,然后将转换后的0-1串连接成一个0-1串(联结的顺序可以变化),最后在将转换函数作用到该联结后的0-1串从而得到输出。在大多数情况下,转换函数的输入的顺序不重要(顺序可以被变化)。比如,以转换函数f为例,设x为一个字符串,记x(2)为x的2进制0-1串编码表示;设S={s1,…,st},t≥0,为t个字符串的集合,记s1 (2),s2 (2),s3 (2),…,st (2)为s1,s2,s3,…,st的2进制0-1串编码表示,则 f ( x , S ) = f ( x ( 2 ) | | s 1 ( 2 ) | | s 2 ( 2 ) | | · · · | | s t ( 2 ) ) , 其中“||”表示的是字符串联结操作符。注意x(2),s1 (2),s2 (2),s3 (2),…,st (2)联结的顺序可以变化,但联结的顺序需固定且所有的用户知晓且使用相同的顺序进行联结操作。对于f(x(2)||s1 (2)||s2 (2)||…||st (2)),若其中si,1≤i≤t,是空串,则 f ( x ( 2 ) | | s 1 ( 2 ) | | s 2 ( 2 ) | | · · · | | s t ( 2 ) ) = f ( x 2 | | s 1 2 | | · · · | | s i _ 1 2 | | s i + 1 2 | | · · · | | s t 2 ) . 上述关于转换函数f的描述同样适用转换函数h。
假定签名者,记为有一个签名公钥U,签名公钥U与签名者身份A的绑定由一个可信的第三方机构来执行。通常,可信的第三方机构会检查的身份的有效性以及U的有效性,然后对
Figure G2009101987359D00033
做一个数字签名,并将
Figure G2009101987359D00034
以及可信第三方的签名形成一个针对
Figure G2009101987359D00035
公钥证书,记为
数字签名方法是密码技术的主要应用之一。基于离散对数的数字签名方案主要有Schnorr签名方案和国际数字签名标准(Digital SignatureStandard(DSS))方案。
Schnorr签名方案运作如下:
签名公钥:U=g-w∈G,其中 w ∈ Z q * . 其中,G是有限群G′中的一个循环子群,g是G的生成元;记Zq为数字集合{0,1…,q-1},Zq *为数字集合{1…,q-1},q为一个大的素数(典型地,|q|=160,其中|q|表示的是以2进制表示的q的长度)。
签名私钥:w。
签名的生成:记m∈{0,1}*为需要签名的信息,{0,1}*表示的是所有0-1串的集合。令h:{0,1}*→Zq为一个抗碰撞的哈希函数。
从Zq中随机选取r,计算a=gr∈G;
计算d=h(a,m);计算z=r+dw∈Zq;将(d,z)作为对m的签名。
签名的验证:得到{m,(d,z)}以及签名公钥U后,签名验证者验证是否h(gzUd,m)=d。若h(gzUd,m)=d则接受签名,否则拒绝。
数字签名标准(DSS)方案运作如下:
签名公钥:U=gw∈G,其中 w ∈ Z q * .
签名私钥:w。
签名的生成:记m∈{0,1}*为需要签名的信息。令h:{0,1}*→Zq为一个抗碰撞的哈希函数。令f:G′→Zq是一个转换函数。一般而言,若 G ′ = Z p * (p是个素数),f直接可以是“mod q”操作;若G′是定义在有限域上的一个椭圆曲线群(即:a∈G表示椭圆曲线上的一个点(x,y)),f(a)=x。签名者做如下计算:
从Zq中随机选取r,计算a=gr∈G, r ^ = r - 1 ∈ Z q ;
计算d=f(a);e=h(m);
计算 z = e r ^ + dw r ^ ∈ Z q ; 将(d,z)作为对m的签名。
签名的验证:得到{m,(d,z)}以及签名公钥U后,签名验证者如下验证签名的有效性:
计算 z ^ = z - 1 ∈ Z q ;
验证 f ( g e z ^ U d z ^ ) = d , f ( g e z ^ U d z ^ ) = d 则接受签名,否则拒绝。
Schnorr签名方案和数字签名标准(DSS)方案比较:
可证明安全性:Schnorr签名方案在假设哈希函数h是随机圣谕(random oracle)的假设和离散对数假设下被证明是安全的。但是,对于数字签名标准(DSS)方案,迄今为止,其可证明安全性仍未知(即便转换函数f,h均假设为随机圣谕)。
在线/离线效率:在很多应用中为了提高签名方案的效率,通常将签名的生成分为两个阶段来完成:离线阶段和在线阶段。在线/离线签名的用途广泛。在很多的实际应用中,签名者(比如智能卡)在信息提交后,只有很有限的反应时间(但是在两个连续的签名请求之间,它可以完成很复杂的计算)。在线阶段的特点就是非常快,因此即使是一个很弱的处理器也可以完成执行。在线/离线签名在基于智能卡的应用中特别关键:离线阶段既可以在卡片的制造过程中实施,也可以在卡片通电以后作为背景计算实施。
对于Schnorr签名方案,签名者可以预先离线计算并存储(r,a=gr);接下来,在为信息m签名的时候,它仅仅需要在线计算e=h(a,m)和z=r+ew。
对于数字签名标准(DSS)方案,签名者亦可以预先计算出很多的a的值。但是,与Schnorr签名方案不同的是,DSS的签名者不用将这些预计算的a值存储下来。具体来说,每一次离线预先算好a=gr后,DSS的签名者可以离线地计算d=f(a), r ^ = r - 1 , dw r ^ , 并且只需要存储
Figure G2009101987359D00047
在需要对信息m进行签名时候,签名者只需在线计算e=h(m), z = e r ^ + dw r ^ (其中,
Figure G2009101987359D00052
是事先离线计算并存储的)。在实际的应用中,对于基于智能卡的应用,智能卡制造商可以在卡片制造过程中存储许多
Figure G2009101987359D00053
的值。注意:a=gr∈G′而 d , r ^ , dw r ^ ∈ Z q , 一般而言a的长度可能设为1024位,而q得长度是160位。因此,Schnorr签名方案对于每一次签名需要离线存储1024+160=1184位的信息,而DSS签名方案对于每一次签名只需存储160×3=480位的信息。这对于基于智能卡的数字签名实现是非常重要的。虽然DSS签名方案没有一个严格的安全性证明,但是它更优的在线/离线效率使得它在实际应用中被更广泛地使用。
发明内容
本发明给出一个新的数字签名方法,与Schnorr签名方案和数字签名标准(DSS)方案相比,我们提出的新的数字签名方法既具有严格的可证明安全同时具有比DSS方案更优的在线/离线效率。所发明的新的数字签名方法可在各种需要数字签名的应用中应用,特别地,所发明的新的数字签名方法特别有利于在基于智能卡的数字签名及相关电子商务、政务中应用。本发明的数字签名方法的目标是在保证安全性的基础上获得更好的在线/离线计算效率。
本发明提供一种在线/离线数字签名方法,其中,
Figure G2009101987359D00055
表示签名者,
Figure G2009101987359D00056
的公钥为U=g-w∈G,
Figure G2009101987359D00057
的私钥为w∈Zq={0,1,2,…,q-1},其中g是一个阶为N的有限群G′中的一个阶为素数q的循环子群G的生成元,
Figure G2009101987359D00058
的公钥证书为
Figure G2009101987359D00059
m为待签名的信息,
Figure G2009101987359D000510
表示签名验证者,所述方法包括:由所述签名者得到e=h(m,auxm),其中h:{0,1}*→Zq是一个从{0,1}*到Zq的抗碰撞的转换函数且m是h的输入之一,auxm是一个包含
Figure G2009101987359D000511
的集合的能够为空的子集合,其中,{0,1}*表示的是任意0-1串的集合;由所述签名者得到r∈Zq、得到a=gr和/或d=f(a,auxd),其中f是一个从{0,1}*到Zq的转换函数且a是f的输入之一,auxd是一个包含
Figure G2009101987359D000512
的集合的能够为空的子集合;由所述签名者或设备计算z,其中z的计算基于er+dw或dr+ew;由所述签名者或设备将s={d,z,aux1}或s={a,z,aux2}或s={a,d,z,aux3}作为对信息m的数字签名,其中,auxi,1≤i≤3,是一个包含
Figure G2009101987359D00061
的集合的能够为空的子集合,ê=e-1∈Zq d ^ = d - 1 ∈ Z q , 其中auxd,auxm,aux1,aux2,aux3以及函数h,f或者是固定的并被所有的用户事先获知,或者被包含在证书中,或者在协议运行之前被交换和协商;签名验证者得到所述签名者的公钥U、公钥证书
Figure G2009101987359D00063
{m,s}之后,首先验证所述公钥证书
Figure G2009101987359D00064
的有效性,若验证通过,则验证者得到e=h(m,auxm)并按照如下情况之一验证签名的有效性:若z的计算基于er+dw且d∈s,则验证者得到ê=e-1∈Zq,计算并验证f(gU,auxd)=d或者d=f(a,auxd)∧gU=a,若验证成功,则接受签名,否则拒绝;若z的计算基于er+dw且a∈s但 d ∉ s , 则验证者得到ê=e-1∈Zq和d=f(a,auxd),并验证gU=a或f(gU,auxd)=d,若验证成功,则接受签名,否则拒绝;若z的计算基于dr+ew且d∈s,则验证者得到 d ^ = d - 1 ∈ Z q , 并验证 f ( g z d ^ U e d ^ , au x d ) = d 或者
Figure G2009101987359D00068
若验证成功,则接受签名,否则拒绝;若z的计算基于dr+ew且a∈s但 d ∉ s , 则验证者得到d=f(a,auxd)和 d ^ = d - 1 ∈ Z q , 并验证 g z d ^ U e d ^ = a f ( g z d ^ U e d ^ , aux d ) = d , 若验证成功,则接受签名,否则拒绝。
如上所述的方法,其中,若签名验证者
Figure G2009101987359D000613
在得到签名之前事先知道m,或签名者
Figure G2009101987359D000614
在产生签名之前事先知道m,则签名验证者和/或签名者能事先计算并存储e=h(m,auxm)和/或ê=e-1∈Zq;若z的计算基于er+dw,事先计算并在
Figure G2009101987359D000615
中存储{Ω1,Ω2,…,Ωn},n≥1,其中对于任意的i,1≤i≤n, Ω i ⊆ { r i , d i , d i w } , ri∈Zq d i = f ( g r i , au x d ) ; 若z的计算基于dr+ew,事先计算并在
Figure G2009101987359D000618
中存储{∑1,∑2,…,∑n},n≥1,其中对任意的i,1≤i≤n, Σ i ⊆ { d i , d i r i } , ri∈Zq d i = f ( g r i , aux d ) ; 签名者在线数字签名时候,在这些事先离线存储的值中找出之前签名尚未使用的Ωi或∑i,并将Ωi或∑i中的值直接用于在线的签名生成;若z的计算基于dr+ew且预先知道待签名的信息m,
Figure G2009101987359D000622
还能预先计算e=h(m,auxm)以及ew或ew(modq)。
如上所述的方法,其中,对任意的i,1≤i≤n,令Ωi={ri,di,diw},∑i={di,diri},其中ri是一个从Zq或{0,1}l中随机选取的值,diw∈Zq,diri∈Zq,l≤|q|是一个正整数,|q|表示以2进制表示的q的长度,{0,1}l表示的是所有长度为l的0-1串的集合。
如上所述的方法,其中,
Figure G2009101987359D00071
通过在{0,1}l或Zq中随机选取r得到r∈Zq或者利用一个从{0,1}*到{0,1}l或Zq的伪随机函数产生,其中l≤|q|是一个正整数,{0,1}l表示的是所有长度为l的0-1串的集合;令h为一个从{0,1}*到{0,1}l或Zq的抗碰撞的哈希函数;令f为一个从{0,1}*到Zq或{0,1}l抗碰撞的哈希函数,或者f(a,auxd)=amodq或(amodN)modq或(amod(N+1))modq,或者若a=(x,y)∈G表示的是椭圆曲线上的一个点,其中x∈Zq,y∈Zq为坐标值,定义f(a,auxd)=x或f(a,auxd)=y;令auxd为空集或auxd={U}或 aux d = { U , A ^ } , 并且/或者令auxm为空集或auxm={U}或 aux m = { U , A ^ } .
如上所述的方法,其中,基于er+dw的z的计算方式有:z=er+dw、z=er+dw∈Zq、z=(er+dw)modq、z=(ermodq)+(dwmodq)、z=((ermodq)+(dwmodq))modq、z=er+dw+αq其中α是一个整数;基于dr+ew的z的计算方式有:z=dr+ew、z=dr+ew∈Zq、z=(dr+ew)modq、z=(drmodq)+(ewmodq)、z=((drmodq)+(ewmodq))modq、z=dr+ew+βq其中β是一个整数。
如上所述的方法中,其中,验证者在验证签名时检查d∈Zq或d∈{0,1}l,若检查失败则拒绝接受签名;和/或,若签名者计算得到z∈Zq,验证者在验证签名时验证z∈Zq,若 z ∉ Z q 则拒绝接受签名;若签名者计算得到的z不能保证属于Zq,验证者计算f(gU,auxd)的其它方式有f(g(zmodq)êU,auxd),计算 f ( g z d ^ U e d ^ , aux d ) 其它方式有 f ( g ( z mod q ) d ^ U e d ^ , aux d ) .
如上所述的方法,其中,若z=er+dw,
Figure G2009101987359D00077
如下得到ê=e-1:若ê∈s
Figure G2009101987359D00078
验证 e ^ ∈ Z q * 且eê=1,若验证通过则直接得到ê;若 e ^ ∉ s ,
Figure G2009101987359D000711
计算e-1得到ê;若z=dr+ew,
Figure G2009101987359D000712
如下得到 d ^ = d - 1 : d ^ ∈ s
Figure G2009101987359D000715
验证 d ^ ∈ Z q * d d ^ = 1 , 若验证通过则直接得到
Figure G2009101987359D000718
d ^ ∉ s ,
Figure G2009101987359D000720
计算d-1得到
如上所述的方法,其中,令a=gr∈G;若a∈s,验证者检查a∈G,若 a ∉ G 验证者拒绝接受签名。
如上所述的方法,其中,令w=-w′,其中w′∈Zq,即:U=gw′∈G。
本发明的方法与Schnorr签名方案及DSS签名方案的比较:与Schnorr签名方案相比,本发明的签名方法需要更少的离线存储空间。与DSS签名方案相比,本发明的签名方法具有如下优点:
同样或者更好的空间复杂度。假设预计算了k个a=gr的值,如果是z=er+dw(modq),发明方法的离线空间复杂度为3k|q|,这和DSS相同;但是如果z=dr+ew(modq),发明方法的在线空间复杂度只有2k|q|,这就大大减少了离线空间复杂度。
签名生成的总体效率更高。在计算DSS的签名 z = e r ^ + dw r ^ 的时候,总共需要进行1次模求逆运算 r ^ = r - 1 ∈ Z q 和2次模乘运算相比之下,发明方法在计算z=er+dw∈Zq或z=dr+ew∈Zq的时候,签名者总共只需要进行2次模乘运算(不需要进行模求逆运算)。注意:模求逆运算是相当费时的操作,因此最好可以把它省略掉(尤其是对于基于智能卡的应用)。
更有效的离线预计算。除了其他相同的预计算以外,DSS的签名者需要计算1次模求逆运算 r ^ = r - 1 ∈ Z q 和两次模乘运算来计算 dw r ^ ∈ Z q ; 而发明方法的签名者只需要离线1次模乘运算得到dw∈Zq或dr∈Zq
更有效的在线签名验证(在z=er+dw(modq)情况下)。验证DSS的签名(d,z)的时候,验证者要在线计算 z ^ = z - 1 ∈ Z q , 因为z的值只有在收到签名后验证者才知道,因此验证者无法事先计算
Figure G2009101987359D00087
因为模求逆运算是代价相对昂贵的,最好可以省略掉。相比之下,在z=er+dw(modq)情况下,在发明方法的签名验证时,验证者只需要计算ê=e-1,其中e=h(m)。如果像实际应用中经常出现的那样,验证者在接收到签名之前就知道待签名的信息m(甚至m就是由验证者准备的),那么e,ê可以离线预计算。对于z=dr+ew∈Zq的情形,发明方法的签名验证的计算复杂度与DSS相同。
在随机圣谕模式下的可证明其安全性。发明人证明,假设h,f都是随机圣谕(比如h,f均为哈希函数,并将哈希函数理想化为随机圣谕),在随机圣谕模式和DLP假设下,发明的数字签名方法在自适应选择消息攻击下是签名不可伪造的。注意,DSS目前还没有安全性证明。
附图说明
图1和图2是示例性地示出了本发明的数字签名方法。
具体实施方式
预备知识和符号标示:
本发明所描述的方法和操作基于一个有限群G′中的一个循环子群G,其中记G′的阶为N,G的阶为q,g是G的生成元,记1G为G′的单位元,记G/1G为G中除了1G之外的所有元素构成的集合。一般而言,q为一个大的素数(典型地,|q|=160,其中|q|表示的是以2进制表示的q的长度)。记Zq为数字集合{0,1…,q-1},记Zq *为数字集合{1…,q-1}。发明人在下面发明方法的描述中,采用乘法表示(multiplicative representation)群上的操作。即,G′和G为乘法群。这只是为了表述上的方便,所有发明方法的叙述均可等价地应用到加法群上,比如,椭圆曲线,或者其他的代数群或具体的群,有限域,复数或复合模(composite moduli)等。一般而言,当用乘法群上的操作描述发明方法时,指数上的操作是对q求模,而群上元素的操作是对N或N+1求模或其它操作以保证操作的结果是G′或G中的元素;比如gx通常指的是gxmodq,gxgy通常表示的是gxgy∈G′,x+y∈Zq和xy∈Zq表示的是x+ymodq和xymodq。为了表述的方便起见,假定参数G,q,g是固定的并被所有的用户事先获知(这是一种实用中的普遍情况);或者,我们将这些参数包含在证书中或者在协议运行之前交换和协商这些参数并达成一致。我们假定离散对数假设在G上成立,即给定X=gx∈G(其中x从Zq中随机选取),没有概率多项式时间的算法能够以不可忽略的概率由X求出x。发明人使用“^”符号(比如,
Figure G2009101987359D00091
)来标示一个用户或设备的逻辑或“区别性”的身份(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,1}*中的0-1串,然后将f,h作用在该转化后的0-1串输入上从而得到一个Zq中的数值(典型地,Zq中的数值亦用2进制表示)。特别地,f,h可以是哈希函数。其它常用的转换函数为:f(X,aux)=X modq或者(X mod N+1)modq,其中X∈G,N为G′的阶(比如,若对于一个大素数 p G ′ = Z p * , 则N+1=p),aux是任意字符串或字符串的集合;若X=(x,y)∈G是椭圆曲线上的一个点,其中x,y∈Zq,则可令f(X,aux)=x或y;其它可以使用的专函函数还有: f ( X , Y ) = ( X mod q ) ⊕ ( Y mod q ) ( X mod q ) ⊕ H ( Y ) , 其中H:{0,1}*→Zq是一个哈希函数。为了描述的方便起见,发明人使用同一个函数符号来表示具有不同输入个数的转换函数。在应用中,转换函数的所有输入首先转换为0-1串,然后将转换后的0-1串连接成一个0-1串(联结的顺序可以变化),最后在将转换函数作用到该联结后的0-1串从而得到输出。在某些应用中,转换函数的输出只有部分被使用。在大多数情况下,转换函数的输入的顺序不重要(顺序可以被变化)。比如,以转换函数f为例,设x为一个字符串,记x(2)为x的2进制0-1串编码表示;设S={s1,…,st},t≥0,为t个字符串的集合,记s1 (2),s2 (2),s3 (2),…,st (2)为s1,s2,s3,…,st的2进制0-1串编码表示,则 f ( x , S ) = f ( x ( 2 ) | | s 1 ( 2 ) | | s 2 ( 2 ) | | · · · | | s t ( 2 ) ) , 其中“||”表示的是字符串联结操作符。注意x(2),s1(2),s2 (2),s3 (2),…,st (2)联结的顺序可以变化,但联结的顺序需固定且所有的用户知晓且使用相同的顺序进行联结操作。对于f(x(2)||s1 (2)||s2 (2)||…||st (2)),若其中si,1≤i≤t,是空串,则 f ( x ( 2 ) | | s 1 ( 2 ) | | s 2 ( 2 ) | | · · · | | s t ( 2 ) ) = f ( x 2 | | s 1 2 | | · · · | | s i _ 1 2 | | s i + 1 2 | | · · · | | s t 2 ) . 上述关于转换函数f的描述同样适用转换函数h。
参考图1和图2,示例性地示出了本发明的数字签名方法。
我们假定签名者,记为
Figure G2009101987359D00111
有一个签名公钥U,签名公钥U与签名者身份A的绑定由一个可信的第三方机构来执行。通常,可信的第三方机构会检查的身份的有效性以及U的有效性(即:U∈G),然后对
Figure G2009101987359D00113
做一个数字签名,并将
Figure G2009101987359D00114
以及可信第三方的签名形成一个针对公钥证书,记为
Figure G2009101987359D00116
记签名者或设备的身份为
Figure G2009101987359D00117
发明的数字签名方法运作如下:
签名公钥:U=g-w∈G,其中 w ∈ Z q * , (g,q,h,f)。记
Figure G2009101987359D00119
的公钥证书为
签名私钥:w。
签名的生成与验证:记m∈{0,1}*为需要签名的信息。令h:{0,1}*→Zq为一个抗碰撞的哈希函数(在应用中可令h:{0,1}*→{0,1}l,其中l≤|q|是个正整数,比如l=|q|-1,{0,1}l表示的是所有长度为l的0-1串的集合)。令f:G′→Zq是一个转换函数。一般而言,若 G ′ = Z p * (p是个素数),f直接可以是“modq”操作;若G′是定义在有限域上的一个椭圆曲线群(即:a∈G表示椭圆曲线上的一个点(x,y)),f(a)=x。签名者做如下计算:
计算e=h(m),从Zq中随机选取r(在应用中,可在{0,1}l中随机选取r),计算a=gr∈G,d=f(a)(在应用中,可直接计算d=f(gr));注意,对于这种具体实施方式,auxm和auxd被设为空集。
以如下方式之一计算z并验证签名(具体选用哪种方式可由用户协商或签名者指定,但是一旦确定就应固定,并且所有的签名验证者知晓z的计算方式):
计算z=(er+dw)modq,并将s={d,z}作为对m的签名。收到{m,s}以及签名公钥U以及公钥证书后,签名验证者通过验证可信第三方的签名来验证公钥证书的有效性(一旦一个签名者的公钥证书被确认为有效,签名验证者可以存储该有效的数字签名,这样对该签名者之后的签名验证过程可省略对可信第三方签名的验证)以及z∈Zq(对于这种签名方式,d∈Zq的验证可进行或不进行)。若检查失败,则终止执行;若检查成功,验证者进一步计算e=h(m),ê=e-1,计算并验证f(gU)=d。若f(gU)=d则接受签名,否则拒绝。
或者,计算z=(dr+ew)modq,并将s={d,z}作为对m的签名。收到{m,s}以及签名公钥U以及公钥证书后,验证者验证公钥证书的有效性以及z∈Zq及d∈Zq。若检查失败,则终止执行;若检查成功,验证者进一步计算e=h(m), d ^ = d - 1 , 计算并验证 f ( g z d ^ U e d ^ ) = d . f ( g z d ^ U e d ^ ) = d 则接受签名,否则拒绝。
发明人强调,在签名的的产生和验证过程中,某些操作或计算(比如签名产生过程中e,d的计算顺序等,签名验证过程中的公钥证书有效性的验证,z∈Zq,d∈Zq,a∈G′, d ^ , e ^ ∈ Z q 等的验证)的顺序可以变化和组合,其顺序对签名的生成和验证的正确性不关键。但是,合适的验证操作顺序可以尽早发现签名的错误,从而节省验证时间。另外若f的值域不包含在Zq中,则验证者不需检查d∈Zq;若z的值域不包含在Zq中,则验证者亦不需检查z∈Zq,但为了提高计算效率,验证者可以计算z:=zmodq。
为了在签名中证明签名者知道其签名私钥w,在上述所发明的数字签名方案中,可令d=f(a,U)(即,令auxd={U})或(即,令 aux d = { U , A ^ } ),和/或令e=h(m,U)(即,令auxm={U})或
Figure G2009101987359D00127
(即,令 aux m = { U , A ^ } )。
为了提高发明的数字签名方法的在线/离线效率,签名者和验证者可做如下在线/离线操作:
验证者离线预计算:若签名验证者在接收到签名之前就知道要签名的信息m,可以预先计算并存储e=h(m);若z=er+dw∈Zq,验证者可进一步预先计算并存储ê=e-1∈Zq
签名者离线预计算:若z=(er+dw)modq,
Figure G2009101987359D00129
可事先计算并存储{Ω1,Ω2,…,Ωn},n≥1,其中对于任意的i,1≤i≤n,Ωi={ri,di,diw},ri是一个从Zq或{0,1}l中随机选取的值, d i = f ( g r i ) , diw∈Zq;若z=(dr+ew)modq,
Figure G2009101987359D001211
可事先计算并存储{∑1,∑2,…,∑n},n≥1,其中对任意的i,1≤i≤n,∑i={di,diri},ri是一个从Zq或{0,1}l中随机选取的值, d i = f ( g r i ) , diri∈Zq
在线签名生成:在接收到要求签名的信息m后,签名者
Figure G2009101987359D001213
计算e=h(m)。若z=(er+dw)modq,
Figure G2009101987359D001214
拿到一个预先存储的尚未在之前的签名中使用的Ωi={ri,di,diw},计算z=(eri+diw)modq,并将(di,z)作为对m的签名。注意,因为diw已经事先计算好,
Figure G2009101987359D00131
不需计算diw。为了找到预先存储的尚未在之前的签名中使用的Ωi={ri,di,diw},一般而言,
Figure G2009101987359D00132
可以运行一个计数器i,i的初始值设为1,
Figure G2009101987359D00133
每签一次名令i:=i+1;或者,对于每一个Ωi={ri,di,diw},1≤i≤n,一旦Ωi在签名中被使用,将Ωi删除(这样,留下来的都是尚未在签名中使用的Ωi)。同样的方法可用在下述当z=(dr+ew)modq时寻找存储的尚未使用的∑i={di,diri}。
若z=(dr+ew)modq,
Figure G2009101987359D00134
拿到一个预先存储的尚未在之前的签名中使用的∑i={di,diri},计算z=diri+ew(modq),并将(di,z)作为对m的签名。注意,对于这种方式,若
Figure G2009101987359D00135
预先知道待签名的信息m,
Figure G2009101987359D00136
还可预先计算e=h(m)和ew,以进一步提高在线效率。
本发明给出一个新的数字签名方法,与Schnorr签名方案和数字签名标准(DSS)方案相比,我们提出的新的数字签名方法既具有严格的可证明安全同时具有比DSS方案更优的在线/离线效率。所发明的新的数字签名方法可在各种需要数字签名的应用中应用,特别地,所发明的新的数字签名方法特别有利于在基于智能卡的数字签名及相关电子商务、政务中应用。本发明的数字签名方法的目标是在保证安全性的基础上获得更好的在线/离线计算效率。

Claims (9)

1.一种在线/离线数字签名方法,其中,
Figure FDA00002728636100011
表示签名者,
Figure FDA00002728636100012
的公钥为U=g-w∈G,
Figure FDA00002728636100013
的私钥为w∈Zq={0,1,2,…,q-1},其中g是一个阶为N的有限群G′中的一个阶为素数q的循环子群G的生成元,
Figure FDA00002728636100014
的公钥证书为
Figure FDA00002728636100015
m为待签名的信息,
Figure FDA00002728636100016
表示签名验证者,所述方法包括:
由所述签名者得到e=h(m,auxm),其中h:{0,1}*→Zq是一个从{0,1}*到Zq的抗碰撞的转换函数且m是h的输入之一,auxm是一个集合的能够为空的子集合,该集合包含
Figure FDA00002728636100017
其中,{0,1}*表示的是任意0-1串的集合;
由所述签名者得到r∈Zq、a=gr和/或d=f(a,auxd),其中f是一个从{0,1}*到Zq的转换函数且a是f的输入之一,auxd是一个集合的能够为空的子集合,该集合包含
Figure FDA00002728636100018
由所述签名者计算z,其中z的计算基于er+dw或dr+ew;
由所述签名者将s={d,z,aux1}或s={a,z,aux2}或s={a,d,z,aux3}作为对信息m的数字签名,其中,{…}表示一个信息或数值的集合,auxi,1≤i≤3,是一个集合的能够为空的子集合,该集合包含
Figure FDA00002728636100019
d ^ = d - 1 ∈ Z q , aux d , aux m , aux 1 , aux 2 , aux 3 以及函数h,f或者是固定的并被所有的用户事先获知,或者被包含在证书中,或者在协议运行之前被交换和协商;
由所述签名验证者得到所述签名者的公钥U、公钥证书
Figure FDA000027286361000112
{m,s}之后,首先验证所述公钥证书
Figure FDA000027286361000113
的有效性,若验证通过,则所述签名验证者得到e=h(m,auxm)并按照如下情况之一验证签名的有效性:
若z的计算基于er+dw且d∈s,则所述签名验证者得到
Figure FDA000027286361000114
计算并验证 f ( g z e ^ U d e ^ , aux d ) = d 或者 d = f ( a , aux d ) ^ g z e ^ U d e ^ = a , 若验证成功,则接受签名,否则拒绝;
若z的计算基于er+dw且a∈s但
Figure FDA000027286361000117
则所述签名验证者得到 e ^ = e - 1 ∈ Z q 和d=f(a,auxd),并验证 g z e ^ U d e ^ = a f ( g z e ^ U d e ^ , aux d ) = d , 若验证成功,则接受签名,否则拒绝;
若z的计算基于dr+ew且d∈s,则所述签名验证者得到
Figure FDA000027286361000121
并验证 f ( g z d ^ U e d ^ , aux d ) = d 或者 d = f ( a , aux d ) ^ g z d ^ U e d ^ = a , 若验证成功,则接受签名,否则拒绝;
若z的计算基于dr+ew且a∈s但
Figure FDA00002728636100021
则所述签名验证者得到d=f(a,auxd)和 d ^ = d - 1 ∈ Z q , 并验证 g z d ^ U e d ^ = a f ( g z d ^ U e d ^ , aux d ) = d , 若验证成功,则接受签名,否则拒绝。
2.如权利要求1所述的方法,其中,若所述签名验证者在得到签名之前事先知道m,或所述签名者
Figure FDA00002728636100025
在产生签名之前事先知道m,则所述签名验证者和/或所述签名者能事先计算并存储e=h(m,auxm)和/或
Figure FDA00002728636100026
若z的计算基于er+dw,则事先计算并在
Figure FDA00002728636100027
中存储{Ω12,…,Ωn},n≥1,其中对于任意的i,1≤i≤n, Ω i ⊆ { r i , d i , d i w } , ri∈Zq, d i - = f ( g r i aux d ) ;
若z的计算基于dr+ew,则事先计算并在
Figure FDA000027286361000210
中存储{∑1,∑2,…,∑n},n≥1,其中对任意的i,1≤i≤n, Σ i ⊆ { d i , d i r i } , ri∈Zq d i = f ( g r i , aux d ) ;
当所述签名者在线数字签名的时候,在这些事先离线存储的值中找出之前签名尚未使用的Ωi或∑i,并将Ωi或∑i中的值直接用于在线的签名生成,若z的计算基于dr+ew且预先知道待签名的信息m,
Figure FDA000027286361000214
还能预先计算e=h(m,auxm)以及ew或ew(modq)。
3.如权利要求2所述的方法,其中,对任意的i,1≤i≤n,令Ωi={ri,di,diw},∑i={di,diri},其中ri是一个从Zq或{0,1}l中随机选取的值,diw∈Zq,diri∈Zq,l≤|q|是一个正整数,|q|表示以2进制表示的q的长度,{0,1}l表示的是所有长度为l的0-1串的集合。
4.如权利要求1至3任一项所述的方法,其中,
Figure FDA000027286361000215
通过在{0,1}l或Zq中随机选取r得到r∈Zq或者利用一个从{0,1}*到{0,1}l或Zq的伪随机函数产生,其中l≤|q|是一个正整数,{0,1}l表示的是所有长度为l的0-1串的集合;令h为一个从{0,1}*到{0,1}l或Zq的抗碰撞的哈希函数;令f为一个从{0,1}*到Zq或{0,1}l抗碰撞的哈希函数,或者f(a,auxd)=amodq或(amodN)modq或(amod(N+1))modq,或者若a=(x,y)∈G表示的是椭圆曲线上的一个点,其中x∈Zq,y∈Zq为坐标值,定义f(a,auxd)=x或f(a,auxd)=y;令auxd为空集或auxd={U}或
Figure FDA000027286361000216
并且/或者令auxm为空集或auxm={U}或 aux m = { U , A ^ } .
5.如权利要求4所述的方法,其中,基于er+dw的z的计算方式有:z=er+dw、z=er+dw∈Zq、z=(er+dw)modq、z=(ermodq)+(dwmodq)、z=((ermodq)+(dwmodq))modq、z=er+dw+αq,其中α是一个整数;
基于dr+ew的z的计算方式有:z=dr+ew、z=dr+ew∈Zq、z=(dr+ew)modq、z=(drmodq)+(ewmodq)、z=((drmodq)+(ewmodq))modq、z=dr+ew+βq,其中β是一个整数。
6.如权利要求5所述的方法中,其中,所述签名验证者在验证签名时检查d∈Zq或d∈{0,1}l,若检查失败则拒绝接受签名;和/或,
若所述签名者计算得到z∈Zq,所述签名验证者在验证签名时验证z∈Zq,若
Figure FDA00002728636100031
则拒绝接受签名;若所述签名者计算得到的z不能保证属于Zq,所述签名验证者计算 f ( g z e ^ U d e ^ , aux d ) 的其它方式有 f ( g ( z mod q ) e ^ U d e ^ , aux d ) , 计算 f ( g z d ^ U e d ^ , aux d ) 其它方式有 f ( g ( z mod q ) d ^ U e d ^ , au x d ) .
7.如权利要求6所述的方法,其中,若z=er+dw,如下得到
Figure FDA00002728636100037
Figure FDA00002728636100038
验证若验证通过则直接得到
Figure FDA000027286361000312
Figure FDA000027286361000313
计算e-1得到若z=dr+ew,
Figure FDA000027286361000315
如下得到
Figure FDA000027286361000316
Figure FDA000027286361000317
验证
Figure FDA000027286361000318
Figure FDA000027286361000319
若验证通过则直接得到
Figure FDA000027286361000320
Figure FDA000027286361000321
Figure FDA000027286361000322
计算d-1得到
8.如权利要求7所述的方法,其中,令a=gr∈G;若a∈s,所述签名验证者检查a∈G,若则所述签名验证者拒绝接受签名。
9.如权利要求8所述的方法,其中,令w=-w′,其中w′∈Zq,即:U=gw′∈G。
CN 200910198735 2009-11-13 2009-11-13 一种在线/离线高效的数字签名方法 Active CN102064940B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910198735 CN102064940B (zh) 2009-11-13 2009-11-13 一种在线/离线高效的数字签名方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910198735 CN102064940B (zh) 2009-11-13 2009-11-13 一种在线/离线高效的数字签名方法

Publications (2)

Publication Number Publication Date
CN102064940A CN102064940A (zh) 2011-05-18
CN102064940B true CN102064940B (zh) 2013-06-19

Family

ID=44000053

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910198735 Active CN102064940B (zh) 2009-11-13 2009-11-13 一种在线/离线高效的数字签名方法

Country Status (1)

Country Link
CN (1) CN102064940B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102769530A (zh) * 2012-07-02 2012-11-07 赵运磊 一种计算高效的在线/离线数字签名方法
US20160149708A1 (en) * 2013-07-12 2016-05-26 Koninklijke Philips N.V. Electronic signature system
CN103546288B (zh) * 2013-09-25 2017-02-01 中国科学院数据与通信保护研究教育中心 Sm2数字签名生成算法的实现方法及装置
CN105049451B (zh) * 2015-08-25 2018-10-30 清华大学 生成数字签名的方法和验证数字签名的方法
CN107171788B (zh) * 2017-04-08 2020-06-30 西安邮电大学 一种基于身份且签名长度恒定的在线离线聚合签名方法
CN107171807B (zh) * 2017-05-31 2020-03-20 重庆大学 一种基于椭圆曲线的签名认证方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1411201A (zh) * 2001-09-28 2003-04-16 中国科学院研究生院 一种安全的数字签名系统与方法
CN101547099A (zh) * 2009-05-07 2009-09-30 张键红 基于椭圆曲线的自认证签名方法与装置
CN101567780A (zh) * 2009-03-20 2009-10-28 武汉理工大学 一种针对加密数字证书的密钥管理与恢复方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1411201A (zh) * 2001-09-28 2003-04-16 中国科学院研究生院 一种安全的数字签名系统与方法
CN101567780A (zh) * 2009-03-20 2009-10-28 武汉理工大学 一种针对加密数字证书的密钥管理与恢复方法
CN101547099A (zh) * 2009-05-07 2009-09-30 张键红 基于椭圆曲线的自认证签名方法与装置

Also Published As

Publication number Publication date
CN102064940A (zh) 2011-05-18

Similar Documents

Publication Publication Date Title
CN108551392B (zh) 一种基于sm9数字签名的盲签名生成方法及系统
CN108650097B (zh) 一种高效的聚合数字签名方法
CN102064940B (zh) 一种在线/离线高效的数字签名方法
CN109714153B (zh) 一种高效的聚合签名方法
EP2498437A2 (en) Issuing implicit certificates
CN101547099A (zh) 基于椭圆曲线的自认证签名方法与装置
EP2678969A1 (en) Digital signatures
Sun et al. Strongly unforgeable proxy signature scheme secure in the standard model
CN103780383A (zh) 一种基于超球面的多变量公钥签名/验证系统及方法
EP1998493A1 (en) Group signature system and information processing method
CN107171788A (zh) 一种基于身份且签名长度恒定的在线离线聚合签名方法
CN102769530A (zh) 一种计算高效的在线/离线数字签名方法
CN113032844B (zh) 椭圆曲线的签名方法、验签方法和装置
Zhou et al. Provably secure proxy-protected signature schemes based on factoring
CN112989436B (zh) 一种基于区块链平台的多重签名方法
CN112184245B (zh) 一种跨区块链的交易身份确认方法及装置
CN112800482A (zh) 基于身份的在线/离线安全云存储审计方法
EP2294753B1 (en) Method and apparatus for generating a signature for a message and method and apparatus for verifying such a signature
Lyuu et al. Convertible group undeniable signatures
CN105049451B (zh) 生成数字签名的方法和验证数字签名的方法
CN115174052B (zh) 一种基于sm9签名的适配器签名生成方法及装置
Tan A new signature scheme without random oracles
JP3331328B2 (ja) 多重デジタル署名方法、そのシステム、その装置及びそのプログラム記録媒体
CN113055163B (zh) 一种基于sm9数字签名算法的盲签名生成方法
Yum et al. Efficient fair exchange from identity-based signature

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Free format text: FORMER OWNER: DING SUFEN YAO QIZHI

Effective date: 20130304

C41 Transfer of patent application or patent right or utility model
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Zhao Yunlei

Inventor after: Yao Qizhi

Inventor before: Zhao Yunlei

Inventor before: Yao Qizhi

Inventor before: Ding Sufen

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: ZHAO YUNLEI YAO QIZHI DING SUFEN TO: ZHAO YUNLEI YAO QIZHI

TA01 Transfer of patent application right

Effective date of registration: 20130304

Address after: 201203 School of software engineering, Fudan University, 825 Zhang Heng Road, Shanghai, Pudong

Applicant after: Zhao Yunlei

Address before: 201203 School of software engineering, Fudan University, 825 Zhang Heng Road, Shanghai, Pudong

Applicant before: Zhao Yunlei

Applicant before: Ding Sufen

Applicant before: Yao Qizhi

C14 Grant of patent or utility model
GR01 Patent grant