CN102769530A - 一种计算高效的在线/离线数字签名方法 - Google Patents
一种计算高效的在线/离线数字签名方法 Download PDFInfo
- Publication number
- CN102769530A CN102769530A CN2012102251787A CN201210225178A CN102769530A CN 102769530 A CN102769530 A CN 102769530A CN 2012102251787 A CN2012102251787 A CN 2012102251787A CN 201210225178 A CN201210225178 A CN 201210225178A CN 102769530 A CN102769530 A CN 102769530A
- Authority
- CN
- China
- Prior art keywords
- signature
- aux
- signer
- ctr
- verification person
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
提供了一种计算高效的在线/离线数字签名方法。记签名公钥为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可由验证者保密存储,也可由签名者和签名验证者之外的第三方公开存储。
Description
技术领域
本发明涉及密码技术,尤其涉及数字签名方法。
背景技术
预备知识和符号标示
记G为一个有限群G′中的一个循环子群,其中记G′的阶为N,G的阶为q,g是G的生成元,记1G为G′的单位元,记G/1G为G中除了1G之外的所有元素构成的集合。一般而言,q为一个大的素数(典型地,|q|=160,其中|q|表示的是以2进制表示的q的长度),N+1或N亦是一个大素数。
记Zq为数字集合{0,1…,q-1},记 为数字集合{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+y)modq和(xy)modq。若r,w,d,e ∈ Zq,r+dwe ∈ Zq表示的是(r+dwe)mod q,或(r+(dwe mod q))mod q,或(r+((dw mod 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∈G(其中x从Zq中随机选取),没有概率多项式时间的算法能够以不可忽略的概率由X求出x。在下面的叙述中使用“^”符号(比如, )来标示一个用户或设备的逻辑或“区别性”的身份(identity),比如一个名字,一个设备序列号,一个email或IP地址,甚至是方法运行中的一个角色等。在某些情况下,这些身份可能伴随或包含或包含于一个数字证书。记{…}为一个信息或数值的集合。
哈希函数用来将一个字符串转换成一个数值或者一个固定长度的串等。典型地,哈希函数的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{0,1}*中的0-1串,然后将哈希函数作用在该转化后的0-1串输入上从而得到一个固定长度的0-1串输出。这儿{0,1}*表示的是所有0-1串的集合。{0,1}1/0表示的是{0,1}1中除零以外的元素组成的集合(即:除去01外的长度为1的0-1串构成的集合,这儿01表示长度为1全为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)首先输出一个信息m∈{0,1}*,然后对于从 中随机选取的另一个d′,最后A(f,d,m,d′)输出m′∈{0,1}*满足dh(m)=d′h(m′)的概率是可以忽略不计的。
记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,s2,s3,…,st的2进制0-1串编码表示,则 其中“||”表示的是字符串联结操作符。注意x(2), 联结的顺序可以变化,但联结的顺序需固定且所有的用户知晓且使用相同的顺序进行联结操作。对于 若其中s1,1≤i≤t,是空串,则 上述关于转换函数f的描述同样适用转换函数h。
假定签名者,记为 有一个签名公钥PKA,签名公钥PKA与签名者身份 的绑定由一个可信的第三方机构来执行。通常,可信的第三方机构会检查 的身份的有效性以及PKA的有效性,然后对 做一个数字签名,并将 以及可信第三方的签名形成一个针对 公钥证书,记为
数字签名方法是密码技术的主要应用之一。基于离散对数的数字签名方案主要有Schnorr签名方案和国际数字签名标准(Digital Signature Standard(DSS))方案。
Schnorr签名方案运作如下:
签名公钥:PK={G′,g,q,U=g-w ∈ G},其中 其中,G是有限群G′中的一个循环子群,g是G的生成元;记Zq为数字集合{0,1…,q-1}, 为数字集合{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)}以及签名公钥PK后,签名验证者验证是否h(gzUd,m)=d。若h(gzUd,m)=d则接受签名,否则拒绝。
数字签名标准(DSS)方案运作如下:
签名私钥:w。
签名的生成:记m∈{0,1}*为需要签名的信息。令h:{0,1}*→Zq为一个抗碰撞的哈希函数。令f:G′→Zq是一个转换函数。一般而言,若 (p是个素数),f直接可以是“mod q”操作;若G′是定义在有限域上的一个椭圆曲线群(即:a∈G表示椭圆曲线上的一个点(x,y)),f(a)=x mod q。签名者做如下计算:
计算d=f(a);e=h(m);
签名的验证:得到{m,(d,z)}以及签名公钥U后,签名验证者如下验证签名的有效性:
计算
在申请号为200910198735.9的发明专利申请中,本发明的发明人提出了另一个数字签名方案。为了描述简便起见,申请号200910198735.9的发明专利申请中所描述的数字签名方案记为ZHAO签名方案。
ZHAO签名方案运作如下:
签名私钥:w。
签名的生成:记m∈{0,1}*为需要签名的信息,{0,1}*表示的是所有0-1串的集合。令f,h:{0,1}*→Z* q为两个转化函数。
从Zq中随机选取r,计算a=gr∈G;
计算d=f(a)和e=h(m);计算z=dr+ew∈Zq;将(d,z)作为对m的签名。
签名的验证:得到{m,(d,z)}以及签名公钥PK后,签名验证者计算e=h(m)和 并验证是否 若 则接受签名,否则拒绝。
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的签名 者可以离线地计算 并且只需要存储 在需要对信息m进行签名时候,签名者只需在线计算e=h(m), (其中, 是事先离线计算并存储的)。在实际的应用中,对于基于智能卡的应用,智能卡制造商可以在卡片制造过程中存储许多 的值。注意:a=gr∈G′而 一般而言a的长度可能设为1024位,而q得长度是160位。因此,Schnorr签名方案对于每一次签名需要离线存储1024+160=1184位的信息,而DSS签名方案对于每一次签名只需存储160×3=480位的信息。这对于基于智能卡的数字签名实现是非常重要的。虽然DSS签名方案没有一个严格的安全性证明,但是它更优的在线/离线效率使得它在实际应用中被更广泛地使用。
ZHAO签名方案与Schnorr和DSS方案比较:
与Schnorr和DSS签名方案相比,ZHAO签名方案具有更好的离线存储复杂性。具体来讲,针对每一个签名的ZHAO签名方案的离线存储复杂性为2|q|,而DSS签名方案的离线存储复杂性为3|q|,Schnorr签名方案的离线存储复杂性为|p|+|q|。注意p的长度,即|p|,一般为1024,而q的长度,即|q|,一般为160。
与DSS签名方案相比,ZHAO签名方案具有可证明安全性,而DSS目前尚没有可证明安全性。
发明内容
本发明给出一个新的计算高效的在线/离线数字签名方法。所发明的方法结合了Schnorr签名方案、数字签名标准(DSS)方案以及ZHAO签名方案各自的优点,而避免了三者各自的缺点。所发明的新的数字签名方法可在各种需要数字签名的应用中应用。特别地,所发明的新的数字签名方 法特别有利于在基于计算或存储能力受限的设备,比如:智能卡、无线传感器、RFID标签等,的数字签名及相关电子商务、政务中应用。本发明的数字签名方法的目标是在保证安全性和离线存储复杂性的基础上获得更好的在签名验证和生成计算效率,并更易于被计算或存储受限的设备(比如,智能卡、无线传感器、RFID标签等)在并发交互环境下应用。
本发明提供一种计算高效的在线/离线数字签名方法,其中, 表示签名者, 的公钥为{G′,g,q,U=g-w ∈ G}, 的私钥为 其中,{…}表示一个信息或数值的集合,g是一个阶为N的有限群G′中的一个阶为素数q的循环子群G的生成元, 的公钥证书为 m为待签名的信息, 表示签名验证者,所述方法包括:由所述签名者得到e=h(m,auxm),其中h为一个从{0,1}*到Zq={0,1,2,…,q-1}的抗碰撞的转换函数且m是h的输入之一,auxm是一个包含 的集合的能够为空的子集合,其中,{0,1}*表示的是任意0-1串的集合;由所述签名者得到r∈Zq、d=gr和/或d=f(a,auxd),其中f是一个从{0,1}*到Zq的转换函数且a是f的输入之一,auxd是一个包含 的集合的能够为空的子集合;由所述签名者计算z=r+dwe∈Zq或z=r+dwe;由所述签名者将s={d,z,aux1}或s={a,z,aux2}或s={a,d,z,aux3}作为对信息m的数字签名,其中,auxJ,1≤j≤3,是一个包含 集合的能够为空的子集合,auxd,auxm,aux1,aux2,aux3以及函数h,f或者是固定的并被所有的用户事先获知,或者被包含在证书中,或者在协议运行之前被交换和协商;由所述签名验证者得到所述签名者的公钥{G′,g,q,U=g-w ∈ G}、公钥证书 {m,s}之后,首先验证所述公钥和公钥证书 的有效性,和/或,d在f的值域内和/或z∈Zq;若验证通过,则所述签名验证者得到e=h(m,auxm)并按照如下情况之一验证签名的有效性:若d∈s,则所述签名验证者计算并验证f(gzUde,auxd)=d或者d=f(a,auxd)∧gzUde=a,若验证成功,则接受签名,否则拒绝;若a∈s但 则所述签名验证者得到d=f(a,auxd),并验证gzUde=a或f(gzUde,auxd)=d,若验证成功,则接受签名,否则拒绝。
如上所述的方法,其中,所述签名者事先计算{Ω1,Ω2,…,Ωn},n≥1,其中对于任意的i,1≤i≤n, ri∈Zq, 是一 个包含 的集合的能够为空的子集合,mi表示第i次待签名的信息;{∑1,∑2,…,∑n},n≥1,其中对于任意的i,1≤i≤n, 由所述签名者 保密存储;{d1,d2,…,dn},n≥1在所述签名者 和/或所述签名验证者 中保密或公开存储,或由所述签名者和签名验证者之外的第三方公开或保密存储;当所述签名者在线数字签名的时候,在这些事先离线存储的值{Ω1,Ω2,…,Ωn}或{∑1,∑2,…,∑n},n≥1,中找出之前签名尚未使用的Ωi或∑i,1≤i≤n,,并将Ωi或∑i中的值直接用于在线的签名生成;若所述签名验证者 在得到签名之前事先知道mi∈{0,1}*和di,1≤i≤n,则所述签名验证者事先计算并存储 其中 是一个包含 的集合的能够为空的子集合;当所述签名验证者 在线验证针对mi的数字签名si={di,zi,auxi 1}或si={ai,zi,auxi 2}或si={ai,di,zi,auxi 3}时,其中ai∈G′,auxi j,1≤j≤3,1≤i≤n,是一个包含 集合的能够为空的子集合,若所述签名验证者 已事先计算并存储 则将 直接用于 或者 的计算。
如上所述的方法,其中,对任意的i,1≤i≤n,令Ωi={ri,di,diw},其中ri是一个从Zq={0,1,…,q-1}或{0,1}1或Z* q={1,…,q-1}或{0,1}1/0中随机选取的值,或者利用一个从{0,1}*到{0,1}1或Zq或Z* q或{0,1}1/0的伪随机函数产生;diw∈Zq;其中,l≤|q|是一个正整数,|q|表示以2进制表示的q的长度,{0,1}1表示的是所有长度为l的0-1串的集合,{0,1}1/0表示的是除去01外的长度为1的0-1串构成的集合,其中01表示长度为1全为0的串。
如上所述的方法,其中,若{d1,d2,…,dn},n≥1在所述签名验证者 中保密存储,或由所述签名者和签名验证者之外的第三方公开存储,签名生成和验证利用一个计数器来完成;所述签名者运行一个计数器CTR,其初始值设为0或1或由所述签名者和所述签名验证者事先约定好的一个常数CTR;在对第i≥1次信息mi进行签名之前或之后,所述签名者将计数器增加1,即:CTR←CTR+1;若在每次签名之前更新CTR的值,在对第i≥1次信息mi进行签名之前所述签名者将计数器增加1,即:CTR←CTR+1;所述签名者计算 或zi=ri+diwei∈Zq,其中 (ri,diw)直接取自由所述签名者事先计算并存储的∑i或Ωi,mi||CTR表示mi与CTR的字符串联接;所述签名者将si={CTR,zi}作为对消息m1的签名;所述签名验证者得到si={CTR,zi}后,利用CTR得到相应的值dCTR∈{d1,…,dn}值,并验证{dCTR,zi}是针对信息mi||CTR的一个有效签名;若在每次签名之后更新CTR的值,在对第i≥1次信息mi进行签名时所述签名者计算 zi=ri+wei或zi=ri+diwei∈Zq,其中(ri,diw)直接取自由所述签名者事先计算并存储的∑i或Ωi;所述签名者将si={CTR,zi}作为对消息mi的签名;签名完成后,所述签名者将计数器增加1;所述签名验证者得到si={CTR,zi}后,利用CTR得到相应的dCTR值,并验证{dCTR,zi}是针对信息m1||CTR的一个有效签名。
如上所述的方法,其中,令h为一个从{0,1}*到{0,1}1或Zq或Z* q={1,2,…,q-1}或{0,1}1/0的抗碰撞和或目标单向的哈希函数;令f为一个从{0,1}*到Zq或{0,1}1或Z* q或{0,1}1/0的抗碰撞的哈希函数,或者f(a,auxd)=amodq或(amodN)modq或(amod(N+1))modq,或者若a=(x,y)∈G表示的是椭圆曲线上的一个点,其坐标值为(x∈Zq,y ∈ 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}或 并且/或者令auxm为空集或auxm={U}或
如上所述的方法,其中,所述签名验证者在验证签名时检查d在函数f的值域中,即:d∈{0,1}1或d∈Zq或d∈Z* q或d∈{0,1}1/0,若检查失败则拒绝接受签名;和/或,若所述签名者计算得到z∈Zq,所述签名验证者在验证签名时验证z∈Zq,若 则拒绝接受签名;若所述签名者计算得到的z不能保证属于Zq,所述签名验证者计算f(gzUde,auxd)的其它方式有f(g(z mod q)Ude,auxd);若a∈s,所述签名验证者检查a∈G;若 则所述签名验证者拒绝接受签名。
如上所述的方法,其中,令w=-w′,其中w′∈Z* q,即:U=gw′∈G。
如上所述的方法,其中,ri,r≥1,从Zq中随机选取;令h为一个从{0,1}*到Z* q={1,2,…,q-1}或{0,1}1/0的抗碰撞和或目标单向的哈希函数;和/或,令f为一个从{0,1}*到Z* q或{0,1}1/0的哈希函数或伪随机函数。
本发明的方法与Schnorr签名方案及DSS签名方案的比较:
与Schnorr签名方案相比,本发明的签名方法具有如下Schnorr签名所不具有的优点:
(1).支持公开或保密存储的d;
(2).支持在交互式环境中应用以提高计算和传输的均衡并保护隐私;
(3).需要更少的离线存储空间:假设预计算了k个a=gr的值,发明方法的离线空间复杂度为3k|q|,而Schnorr签名方案的离线空间复杂性为k(|q|+|p|)。
(4).当(m,d)被签名验证者事先计算或知晓时,具有更为快速的在线签名验证计算复杂性。
与DSS签名方案相比,本发明的签名方法具有如下优点:
(1).具有可证明安全性。我们证明若h是一个抗碰撞且目标单向的哈希函数,且函数f是一个随机圣喻,本发明的方法具有针对并发交互攻击敌手的强可证明安全性。而DSS签名方案目前尚无可证明安全性。
(2).签名生成的总体效率更高。在计算DSS的签名 的时候,总共需要进行1次模求逆运算 和2次模乘运算 相比之下,发明方法在计算z=r+dwe ∈ Zq,签名者总共只需要进行2次模乘运算(不需要进行模求逆运算)。注意:模求逆运算是相当费时的操作,因此最好可以把它省略掉(尤其是对于基于智能卡等计算能力受限设备的应用)。
(3).签名验证的效率更高。在对DSS签名进行验证时,签名验证者共需计算1次并发指数运算、1次模求逆运算、2次模乘运算。相比之下,对于发明方法的签名验证,签名验证者仅需计算1次并发指数运算和1次模乘运算。
(4)更为高效的在线签名验证。验证DSS的签名(d,z)的时候,验证者要在线计算 因为z的值只有在收到签名后验证者才知道,因此验证者无法事先计算 因为模求逆运算是代价相对昂贵的,最好可以省略掉。相比之下,在发明方法的签名验证时,如果像实际应用中经常出现的那样验证者在接收到签名之前就知道待签名的信息m(甚至m就是由验证者准备的)且签名验证者实现存储或获得d从而事先计算并存储了 Ude,则在线签名验证仅需计算1次并发指数计算。
本发明的方法与发明人在专利申请号200910198735.9的发明专利申请中所描述的ZHAO签名方案的比较:
(1).签名生成和验证方法不同。在本发明方法中,签名生成中z的计算为z=r+dwe ∈ Zq;但是,在ZHAO签名方案中,签名生成中z的计算为z=dr+ew ∈ Zq。
(2).签名验证方法不同。在本发明方法中,给定一个对信息m的签名{m,(d,z)},签名验证通过检查计算f(gzUde)=d来完成。但是,在ZHAO签名方案中,签名验证通过检查计算 来完成。
(3).更高效的签名生成计算复杂性。发明方法签名生成中dwe∈Zq的并行计算少于ZHAO签名方案中两个分开的模乘(dr ∈ ZQ,ew ∈ Z)的计算复杂性。
(4).更为高效的签名验证计算复杂性。发明方法的签名验证仅需计算1次模乘运算和1次并发模指数运算。但是,ZHAO签名方案的签名验证除了上述运算外,还需另外计算1次模求逆运算(即,d-1 ∈ Zq)和1次模乘运算。注意,模求逆元算是一个相当费时的运算。
附图说明
图1是示例性地示出了本发明的数字签名方法。
具体实施方式
预备知识和符号标示:
本发明所描述的方法和操作基于一个有限群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},记 为数字集合{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),比如一个名字,一个设备序列号,一个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的值域一般定义为Zq的一个不包含0的子集)。典型地,f,h的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{0,1}*中的0-1串,然后将f,h作用在该转化后的0-1串输入上从而得到一个Zq中的数值(典型地,Zq中的数值亦用2进制表示)。特别地,f,h可以是哈希函数。其它常用的转换函数为:f(X,aux)=X modq或者(X modN+1)modq,其中X∈G,N为G′的阶(比如,若对于一个大素数 则N+1=p),aux是任意字符串或字符串的集合;若X=(x,y)∈G是椭圆曲线上的一个点,其中x,y∈Zq,则可令f(X,aux)=x或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,s2,s3,…,st的2进制0-1串编码表示,则 其中“||”表示的是字符串联结操作符。注意 联结的顺序可以变化,但联结的顺序需固定且所有的用户知晓且使用相同的顺序进行联结操作。对于 若其中si,1≤i≤t,是空串,则 上述关于转换函数f的描述同样适用转换函数h。
参考图1。我们假定签名者,记为 拥有签名公钥 PKA={G′,g,q,U=g-w ∈ G},签名公钥PKA与签名者身份A的绑定由一个可信的第三方机构来执行。通常,可信的第三方机构会检查 的身份的有效性以及PKA的有效性(特别地,U∈G),然后对 做一个数字签名,并将 以及可信第三方的签名形成一个针对 公钥证书,记为
记签名者或设备的身份为 发明的数字签名方法运作如下:
签名私钥:w。
签名的生成与验证:记m∈{0,1}*为需要签名的信息。令h:{0,1}*→Zq为一个抗碰撞的哈希函数(在应用中可令h:{0,1}*→{0,1}1/0,其中l≤|q|是个正整数,比如l=|q|-1,{0,1}1/0表示的是所有长度为l的不全为0的0-1串的集合)。令f:G′→Zq是一个转换函数。一般而言,若 (p是个素数),f直接可以是“mod q”操作;若G′是定义在有限域上的一个椭圆曲线群(即:a∈G表示椭圆曲线上的一个点(x,y)),f(a)=x。签名者做如下计算:
计算e=h(m),从Zq中随机选取r(在应用中,可在{0,1}1中随机选取r),计算a=gr∈G,d=f(a)(在应用中,可直接计算d=f(gr));注意,对于这种具体实施方式,auxm和auxd被设为空集。
计算z=r+dwe∈Zq,并将s={d,z}作为对m的签名。收到{m,s}以及签名公钥以及公钥证书后,签名验证者通过验证可信第三方的签名来验证公钥证书的有效性(一旦一个签名者的公钥证书被确认为有效,签名验证者可以存储该有效的数字签名,这样对该签名者之后的签名验证过程可省略对可信第三方签名的验证)以及z∈Zq(对于这种签名方式,d∈Zq的验证可进行或不进行)。若检查失败,则终止执行;若检查成功,验证者进一步计算e=h(m),计算并验证f(gzUde)=d。若f(gzUde)=d则接受签名,否则拒绝。
发明人强调,在签名的产生和验证过程中,某些操作或计算(比如签名产生过程中e,d的计算顺序等,签名验证过程中的公钥证书有效性的验 证,z∈Zq,d∈Zq,a∈G′,等的验证)的顺序可以变化和组合,其顺序对签名的生成和验证的正确性不关键。但是,合适的验证操作顺序可以尽早发现签名的错误,从而节省验证时间。另外若f的值域不包含在Zq中,则验证者不需检查d∈Zq;若z的值域不包含在Zq中,则验证者亦不需检查z∈Zq,但为了提高计算效率,验证者可以计算z:=z modq。
为了在签名中证明签名者知道其签名私钥w,在上述所发明的数字签名方案中,可令d=f(a,U)(即,令auxd={U})或 (即,令 ),和/或令e=h(m,U)(即,令auxm={U})或 (即,令 )。
为了提高发明的数字签名方法的在线/离线效率,签名者和验证者可做如下在线/离线操作:
签名者离线预计算: 可事先计算并存储{Ω1,Ω2,…,Ωn},n≥1,其中对于任意的i,1≤i≤n,Ωi={ri,di,diw},ri是一个从Zq或{0,1}1中随机选取的值, diw∈Z* q;其中,D={d1,…,dn}可以保密存储于签名验证者,或公开或保密存储于一个可信的第三方。此时,签名者仅需事先存储{∑1,∑2,…,∑n},n≥1,其中对任意的i,1≤i≤n,∑i={ri,diw}。若D={d1,…,dn}保密存储于签名验证者或公开存储于一个可信的第三方,签名者可以运行一个计数器CTR其初始值设为1。(若签名者与签名验证者之间有安全的通信信道或其它信息同步的方式,计数器亦可以去掉。)
签名验证者离线预计算:若签名验证者在接收到签名之前就知道要签名的信息mi,可以预先计算并存储ei=h(mi),i,1≤i≤n;若D={d1,…,dn}保密存储于签名验证者或公开或保密存储于一个可信的第三方,则签名验证者还可以事先计算并存储{∏1,∏2,…,∏n},n≥1,其中,对于任意的i,1≤i≤n,
在线签名生成和验证:在接收到要求签名的信息mi后,签名者 计算ei=h(mi)。 获得一个预先存储的尚未在之前的签名中使用的Ωi={ri,di,diw},计算zi=ri+diwei∈Zq,并将(di,zi)作为对mi的签名。注意,因为diw已经事先计算好, 不需计算diw。为了找到预先存储的尚未在之前的签名中使用的Ωi={ri,di,diw},一般而言, 可以利用计数器CTR的值来确定尚未在之前的签名中使用的Ωi={ri,di,diw};或者,对于每一个 Ω1={ri,di,diw},1≤i≤n,一旦Ωi在签名中被使用,将Ωi删除(这样,留下来的都是尚未在签名中使用的Ωi)。
若D={d1,…,dn}保密存储于签名验证者或公开存储于一个可信的第三方,且签名者运行一个初始值为1的计数器CTR,则在线签名生成和验证如下:记CTR当前的值为i,1≤i≤n,在接收到要求签名的信息mi后,签名者 计算ei=h(mi||i),其中mi||i表示的是mi和i的字符串联接。 获得∑i={ri,diw},计算zi=ri+diwei∈Zq,并将(i,zi)作为对mi的签名。然后, 将计数器增加1,即:CTR的值变为i+1。收到{mi,(i,zi)}后,签名验证者由i得到di,然后验证(di,zi)是对信息mi||i的有效签名。
本发明给出一个新的计算高效的/数字签名方法,与Schnorr签名方案和数字签名标准(DSS)方案相比,我们提出的新的数字签名方法既具有严格的可证明安全同时具有比DSS方案更优的在线/离线效率。与发明人在专利申请号200910198735.9的发明专利申请中所描述的ZHAO签名方案相比,本发明给出的新的数字签名方法具有更为高效的签名验证和生成计算复杂性。所发明的新的数字签名方法可在各种需要数字签名的应用中应用。特别地,所发明的新的数字签名方法特别有利于在基于计算或存储受限设备,比如:RFID标签、无线传感器、智能卡、等,的数字签名及相关电子商务、政务中应用。本发明的数字签名方法的目标是在保证安全性和离线存储复杂性的基础上获得更好的计算效率。
Claims (8)
1.一种计算高效的在线/离线数字签名方法,其中,表示签名者,的公钥为{G′,g,q,U=g-w ∈ G},的私钥为其中,{…}表示一个信息或数值的集合,g是一个阶为N的有限群G′中的一个阶为素数q的循环子群G的生成元,的公钥证书为m为待签名的信息,表示签名验证者,所述方法包括:
由所述签名者得到e=h(m,auxm),其中h为一个从{0,1}*到Zq={0,1,2,…,q-1}的抗碰撞的转换函数且m是h的输入之一,auxm是一个包含的集合的能够为空的子集合,其中,{0,1}*表示的是任意0-1串的集合;
由所述签名者得到r∈Zq、a=gr和/或d=f(a,auxd),其中f是一个从{0,1}*到Zq的转换函数且a是f的输入之一,auxd是一个包含的集合的能够为空的子集合;
由所述签名者计算z=r+dwe ∈ Zq或z=r+dwe;
由所述签名者将s={d,z,aux1}或s={a,z,aux2}或s={a,d,z,aux3}作为对信息m的数字签名,其中,aux1,1≤j≤3,是一个包含集合的能够为空的子集合,auxd,auxm,aux1,aux2,aux3以及函数h,f或者是固定的并被所有的用户事先获知,或者被包含在证书中,或者在协议运行之前被交换和协商;
由所述签名验证者得到所述签名者的公钥{G′,g,q,U=g-w ∈ G}、公钥证书之后,首先验证所述公钥和公钥证书的有效性,和/或,d在f的值域内和/或z ∈ Zq;若验证通过,则所述签名验证者得到e=h(m,auxm)并按照如下情况之一验证签名的有效性:
若d∈s,则所述签名验证者计算并验证f(gzUde,auxd)=d或者gzUde=a∧d=f(a,auxd),若验证成功,则接受签名,否则拒绝;
2.如权利要求1所述的方法,其中,所述签名者事先计算{Ω1,Ω2,…,Ωn},n≥1,其中对于任意的i,1≤i≤n,ri∈Zq, 是一个包含的集合的能够为空的子集合,mi表示第i次待签名的信息;{∑1,∑2,…,∑n},n≥1,其中对于任意的i,1≤i≤n,由所述签名者保密存储;{d1,d2,…,dn},n≥1在所述签名者和/或所述签名验证者中保密或公开存储,或由所述签名者和签名验证者之外的第三方公开或保密存储;
当所述签名者在线数字签名的时候,在这些事先离线存储的值{Ω1,Ω2,…,Ωn}或{∑1,∑2,…,∑n},n≥1,中找出之前签名尚未使用的Ωi或∑i,1≤i≤n,,并将Ωi或∑i中的值直接用于在线的签名生成;
3.如权利要求2所述的方法,其中,对任意的i,1≤i ≤n,令Ωi={ri,di,diw},其中ri是一个从Zq={0,1,…,q-1}或{0,1}1或Z* q={1,…,q-1}或{0,1}1/0中随机选取的值,或者利用一个从{0,1}*到{0,1}1或Zq或Z* q或{0,1}1/0的伪随机函数产生;diw∈Zq;其中,l≤|q|是一个正整数,|q|表示以2进制表示的q的长度,{0,1}1表示的是所有长度为l的0-1串的集合,{0,1}1/0表示的是所有长度为1且不全为0的0-1串构成的集合。
4.如权利要求2所述的方法,其中,若{d1,d2,…,dn},n≥1在所述签名验证者中保密存储,或由所述签名者和签名验证者之外的第三方公开存储,签名生成和验证利用一个计数器来完成;所述签名者运行一个计数器CTR,其初始值设为0或1或由所述签名者和所述签名验证者事先约定好的一个常数;在对第i≥1次信息mi进行签名之前或之后,所述签名者将计数器增加1,即:CTR:=CTR+1;
若在每次签名之前更新CTR的值,在对第i≥1次信息mi进行签名之前所述签名者将计数器增加1,即:CTR:=CTR+1;所述签名者计算或zi=ri+diwei ∈ Zq,其中(ri,diw)直接取自由所述签名者事先计算并存储的∑i或Ωi,mi||CTR表示mi与CTR的字符串联接;所述签名者将si={CTR,zi}作为对消息mi的签名;所述签名验证者得到si={CTR,zi}后,利用CTR得到相应的值dCTR∈{d1,…,dn},并验证{dCTR,zi}是针对信息mi||CTR的一个有效签名;
若在每次签名之后更新CTR的值,在对第i≥1次信息mi进行签名时所述签名者计算zi=ri+diwei或zi=ri+diwei ∈ Zq,其中(ri,diw)直接取自由所述签名者事先计算并存储的∑i或Ωi;所述签名者将si={CTR,zi}作为对消息mi的签名;签名完成后,所述签名者将计数器增加1;所述签名验证者得到si={CTR,zi}后,利用si中的CTR值得到相应的值dCTR∈{d1,…,dn},并验证{dCTR,zi}是针对信息mi||CTR的一个有效签名。
5.如权利要求1至4任一项所述的方法,其中,令h为一个从{0,1}*到{0,1}l或Zq或Z* q={1,2,…,q-1}或{0,1}1/0的抗碰撞和或目标单向的哈希函数;令f为一个从{0,1}*到Zq或{0,1}1或Z* q或{0,1}1/0的抗碰撞的哈希函数,或者f(a,auxd)=amodq或(amodN)modq或(amod(N+1))modq,或者若a=(x,y)∈G表示的是椭圆曲线上的一个点,其坐标值为(x ∈ Zq,y ∈ 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}或并且/或者令auxm为空集或auxm={U}或
7.如权利要求6所述的方法,其中,令w=-w′,其中w′∈Z* q,即:U=gw∈G。
8.如权利要求6所述的方法,其中,ri,r≥1,从Zq中随机选取;令h为一个从{0,1}*到Z* q={1,2,…,q-1}或{0,1}1/0的抗碰撞和或目标单向的哈希函数;和/或,令f为一个从{0,1}*到Z* q或{0,1}1/0的哈希函数或伪随机函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102251787A CN102769530A (zh) | 2012-07-02 | 2012-07-02 | 一种计算高效的在线/离线数字签名方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102251787A CN102769530A (zh) | 2012-07-02 | 2012-07-02 | 一种计算高效的在线/离线数字签名方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102769530A true CN102769530A (zh) | 2012-11-07 |
Family
ID=47096789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012102251787A Pending CN102769530A (zh) | 2012-07-02 | 2012-07-02 | 一种计算高效的在线/离线数字签名方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102769530A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105049451A (zh) * | 2015-08-25 | 2015-11-11 | 清华大学 | 生成数字签名的方法和验证数字签名的方法 |
CN105099671A (zh) * | 2015-08-20 | 2015-11-25 | 赵运磊 | 一种身份隐藏且非延展安全的认证密钥协商方法 |
CN105306212A (zh) * | 2015-08-31 | 2016-02-03 | 赵运磊 | 一种身份隐藏且强安全的签密方法 |
CN105515775A (zh) * | 2015-08-31 | 2016-04-20 | 赵运磊 | 一种高效且隐私保护的签密方法 |
CN107171788A (zh) * | 2017-04-08 | 2017-09-15 | 西安邮电大学 | 一种基于身份且签名长度恒定的在线离线聚合签名方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004032416A1 (en) * | 2002-08-30 | 2004-04-15 | Agency For Science, Technology And Research | Public key cryptography and a framework therefor |
CN101547099A (zh) * | 2009-05-07 | 2009-09-30 | 张键红 | 基于椭圆曲线的自认证签名方法与装置 |
CN102064940A (zh) * | 2009-11-13 | 2011-05-18 | 赵运磊 | 一种在线/离线高效的数字签名方法 |
-
2012
- 2012-07-02 CN CN2012102251787A patent/CN102769530A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004032416A1 (en) * | 2002-08-30 | 2004-04-15 | Agency For Science, Technology And Research | Public key cryptography and a framework therefor |
CN101547099A (zh) * | 2009-05-07 | 2009-09-30 | 张键红 | 基于椭圆曲线的自认证签名方法与装置 |
CN102064940A (zh) * | 2009-11-13 | 2011-05-18 | 赵运磊 | 一种在线/离线高效的数字签名方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105099671A (zh) * | 2015-08-20 | 2015-11-25 | 赵运磊 | 一种身份隐藏且非延展安全的认证密钥协商方法 |
CN105099671B (zh) * | 2015-08-20 | 2019-03-15 | 赵运磊 | 一种身份隐藏且非延展安全的认证密钥协商方法 |
CN105049451A (zh) * | 2015-08-25 | 2015-11-11 | 清华大学 | 生成数字签名的方法和验证数字签名的方法 |
CN105049451B (zh) * | 2015-08-25 | 2018-10-30 | 清华大学 | 生成数字签名的方法和验证数字签名的方法 |
CN105306212A (zh) * | 2015-08-31 | 2016-02-03 | 赵运磊 | 一种身份隐藏且强安全的签密方法 |
CN105515775A (zh) * | 2015-08-31 | 2016-04-20 | 赵运磊 | 一种高效且隐私保护的签密方法 |
CN105306212B (zh) * | 2015-08-31 | 2019-09-10 | 上海扈民区块链科技有限公司 | 一种身份隐藏且强安全的签密方法 |
CN105515775B (zh) * | 2015-08-31 | 2021-03-09 | 上海扈民区块链科技有限公司 | 一种高效且隐私保护的签密方法 |
CN107171788A (zh) * | 2017-04-08 | 2017-09-15 | 西安邮电大学 | 一种基于身份且签名长度恒定的在线离线聚合签名方法 |
CN107171788B (zh) * | 2017-04-08 | 2020-06-30 | 西安邮电大学 | 一种基于身份且签名长度恒定的在线离线聚合签名方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102318260B (zh) | 密钥协商协议的加速 | |
KR101040588B1 (ko) | 익명성을 제공하는 효율적인 신원기반 환서명 방법과 그 시스템 | |
US20130326602A1 (en) | Digital Signatures | |
EP2582085A1 (en) | Generating implicit certificates | |
CN101867474B (zh) | 数字签名方法 | |
EP3035587B1 (en) | Hypersphere-based multivariable public key signature/verification system and method | |
EP2498437A2 (en) | Issuing implicit certificates | |
CN110311776B (zh) | 范围证明方法、装置、计算机设备和存储介质 | |
US20130091362A1 (en) | Generating implicit certificates | |
US20130097420A1 (en) | Verifying Implicit Certificates and Digital Signatures | |
Kim et al. | Device authentication protocol for smart grid systems using homomorphic hash | |
CN105515778B (zh) | 云存储数据完整***签名方法 | |
CN103475473B (zh) | 数字签名方法和设备、数字签名中密码运算方法和服务器 | |
CN103095697A (zh) | 一种多重签名生成与验证***及其方法 | |
US11870911B2 (en) | Providing a cryptographic information | |
CN102064940B (zh) | 一种在线/离线高效的数字签名方法 | |
CN102769530A (zh) | 一种计算高效的在线/离线数字签名方法 | |
WO2007105749A1 (ja) | グループ署名システムおよび情報処理方法 | |
CN103490897B (zh) | 一种多变量公钥签名/验证***及签名/验证方法 | |
Zhao | Aggregation of gamma-signatures and applications to bitcoin | |
Tahat et al. | Hybrid publicly verifiable authenticated encryption scheme based on chaotic maps and factoring problems | |
KR102070061B1 (ko) | 묶음 검증 방법 및 장치 | |
Yang et al. | Divisible on-line/off-line proxy re-signature | |
Shapuan et al. | A Strong Designated Verifier Signature Scheme with Hybrid Cryptographic Hard Problems | |
Ramlee et al. | A new directed signature scheme with hybrid problems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C05 | Deemed withdrawal (patent law before 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121107 |