一种基于双线性对的不可锻造的知识证明和消息签名认证方法

文档序号:7691351阅读:322来源:国知局
专利名称:一种基于双线性对的不可锻造的知识证明和消息签名认证方法
技术领域
本发明属于密码技术领域,具体为ー种基于双线性对的(不需交互的)不可锻造的知识证明和消息签名认证的方法。发明方法的目的是并发不可锻造安全性和知识抽取性。具体来讲,只有知道相应的秘密知识才能给出ー个合法的知识证明或消息签名认证。通过将用户的身份和/或固定的DH成分视为公钥,发明方法蕴含高效的数值签名方法和基于身份的签名方法;(运行发明方法的)各方通过运行发明方法证明各自的秘密DH-知识知识并,发明方法导出认证的密钥交换方法和认证的基于身份的密钥交換方法。
背景技术
预备知识和符号标示本发明所描述的方法和操作基于有效的双线性对映射ら4 K或eA:G2AxGlA-^GrA,其中是以Na为阶的有限阿贝尔群(对于大多数情况下,巧是以Na为阶的循环群或域)。记为数字集合丨0,1…,^ -1},记2、为所有大于0小于Na并与Na互素的整数构成的集合。记InaI为ル的ニ进制表示的长度。特别地,若ル是一个素数,则ZV1 ={1-,ZNa -1}。在本发明方法的描述中,我们将( ,Gj,均描述为乘法群。在某些文献中,也被描述为加法群。这儿,我们强调的是被描述为加法群或乘法群只是记号上的不同,这两种描述方法是同构的。用乘法群记号描述的方法可以同构地应用到用加法群记号描述的方法;同样,用加法群记号描述的方法可以同构地应用到用乘法群记号描述的方法。为了描述的方便,我们将均描述为乘法群。为( 的生产元,为C〗的生产元。通常情况下,Na是ー个素数或两个或多个素数的乘积或Na = 2k,k彡I或Na = qk,k彡I其中q是个素数。在某些情况下G〗=G〗,此时ビ和g〗既可以相等也可以不等。若6 = 我们称eA是对称的双线性对,若( * 我们称eA是非対称的双线性对。注意,对于非対称的双线性对而言,DDH假设在( 或上仍然成立。对于非対称的双线性対らG〗X G,G〗中的元素要比中的元素要短;同样,对于非対称双线性对eA-.G2AxG\^ Gta ,G〗1中的元素要比中的元素要短;りG〗xG〗C〗称为ー个有效的双线性对,如果满足如下条件(针对eA:G\xG2A^ Gl的有效的双线性对定义类似):(I)ら(ふぬ是的生成元(特别地,不是的単位元)。
(2)对于任意的e ,eA((glAY,(g2A)b) = eA(g\,g2A)ab。(3)对于任意的d E G\ W e G2aも(ビ,ぬ可以高效地(以Na的长度,记为I Na I,为參数的多项式时间内)计算出。典型地,和/或C〗是定义在的代数(椭圆)曲线上的点构成的群(或其相应子群),通常其点的坐标值位于某个有限域或位于优先域的扩展(extension)。比如基于有限域(特别地,有限域或其中q是个素数特别地q = 2,K是一个正整数)的椭圆曲线、超奇椭圆曲线(supersingular curves)、MNT曲线、等。更一般地和/或Gj是基于有限域Field的阿贝尔簇(abelian variety),其中椭圆曲线是维度为I的特殊的阿贝尔簇。
通常是一个有限域,其通常是有限域Field的一个足够大的扩展。虽然对于目前已知的双线性对,C 〗与或^不同,但不排除将来能够找到与G或相同的双线性对。Weil和Tate双线性对及其变体(比如Tate对的变体Eta和Ate对)是目前常用的双线性对。当G1a * G2a,某些情况下,之间存在同态映射。当G〗* G2a,在某些情况下,C〗中元素的表示要比G中元素的表示要短,或者,中元素的表示要比中元素的表示要短。对于这些特殊 的群,其中元素的表示可以属于或Z^+1 (这种特殊的群对于有利于提高通讯复杂性)。当我们需要一个从哈希函数时候,我们也可以简单地输出输入去掉最高位或最低位后剩余的输入。关于椭圆曲线群上元素的编码表示方式一般而言,对于定义在的代数(椭圆)曲线上的点构成的群(或其相应子群)G,对于G中的一个非单位元元素X e G,(证明者)常用的X的编码方式有X直接用其坐标值(xx,yx)来表示,其中&表示的是X的χ-轴坐标值,7)(表示的是X的y-轴坐标值。为了得到更短的G中元素X的表示,可以直接用(xx,b)来表示,这时相对于Χχ验证者可以恢复出可能有两个不同的y-轴坐标值,b e {0,1}表示的是应该采用X-轴上方或下方的I—轴坐标值(比如,b = I表示的是应该采用X-轴上方y-轴坐标值)。还有一种更为进取的编码方式,即G中元素X用Χχ来表示。对于最后一种方式,由于对于χχ验证者可以恢复出可能有两个不同的I—轴坐标值,因此会恢复出X =(xx,yx)或X' = (xx,_yx)。我们假设,当验证者使用X作为双线性对的参数之一进行验算运算时,X的编码同时包括X-轴坐标值和I—轴坐标值。我们假定离散对数假设在上成立,即给定Z=(其中X从中随机选取),没有(以InaI为参数的)概率多项式时间的算法能够以不可忽略的概率由X求出X。一个函数f是单向的,如果给定f (X),其中X在函数f的定义域内随机选取,没有(以
X为参数的)概率多项式时间的算法能够以不可忽略的概率能够求出X。一个函数是可以忽略的,如果对于所有足够长的输入,该函数的输出小于任意的多项式分之一。发明人使用符号(比如,W来标示一个用户或设备的逻辑或“区别性”的身份(identity),比如一个名字,一个设备序列号,一个emial或IP地址,甚至是方法运行中的一个角色等。在某些情况下,这些身份可能伴随或包含或包含于一个数字证书。记{···}为一个信息或数值的集合。哈希函数用来将一个字符串转换成一个数值或者一个固定长度的串等。典型地,哈希函数的输入,即任意一个字符串(或若干个字符串的联结),首先被编码为一个{0,1}*中的0-1串,然后将哈希函数作用在该转化后的0-1串输入上从而得到一个固定长度的0-1串输出。这儿{0,1}*表示的是所有0-1串的集合。哈希函数在密码学中的一个基本功能是提供一个“单向”和“抗碰撞”的转换,这儿“单向”指的是给定一个函数的输出求出其输入或前像是困难的,“抗碰撞(collision-resistant) ”指的是给定一个输入难以找到另外一个不同的输入使得哈希函数在这两个不同输入上的输出相同。哈希函数范围可以非常广泛从一个简单的混合(mixing)函数到一个具有伪随机输出性质的函数。具有伪随机输出性质的哈希函数在密码学分析中常被理想化为一个“随机圣谕(randomoracle) ”。有几个哈希函数在密码学中被广泛使用比如MD5将任意长度的数据转换为一个128-位的0-1串,而另一个常用的哈希函数SHA的输出是160位的0-1串。在本发明描述中,若哈希函数的输入是若干个参数构成的集合,则除非特别说明,函数输入参数的顺序是可以任意的。一般而言,先把所有的输入参数按照某个码 制进行编码,然后将编码后的参数联结成一个字符串,然后将联结得到的字符串作为函数的实际操作的输入。若哈希函数的输出定义为中的元素,我们可以使用一个输出长度为InaI-I的哈希函数,其中InaI表示的是Na的二进制长度;若该哈希函数在某些输入上输出为O是,可以将哈希函数在这些输入上的输出预定义为中的一个元素。在实际应用中,哈希函数的所有输入首先转换为ο-i串,然后将转换后的0-1串连接成一个0-1串(联结的顺序可以变化),最后在将转换函数作用到该联结后的0-1串从而得到输出。在某些应用中,转换函数的输出只有部分被使用。在大多数情况下,转换函数的输入的顺序不重要(顺序可以被变化)。比如,以转换函数f为例,设S= (X1,…,xt}, t彡I,为t个字符串的集合,记χ 32,..·,χ,2为X1, X2, X3,…^的〗进制O-!串编码表示,则/(D = Z^12IU22I卜_||xf),其中“I I”表示的是字符串联结操作符。注意 ^…,彳联结的顺序可以变化,但联结的顺序需固定且所有发明方法进行交互的用户知晓且使用相同的顺序进行联结操作(输入的顺序可由使用所发明方法进行交互的两个或多个用户协商确定,或由可信的用户或机构指定)。对于f (X1, x2,…,Xt),若其中Xi,I 彡 i 彡 t,是空串或空集,则 Mx1, X2, ···, Xt) = f (x1; ···, Xi^1, xi+1, ···, Xt) O一般而言,在本发明描述中,若函数的输入是若干个参数构成的集合,则除非特别说明,函数输入参数的顺序是可以任意的。但是,在发明方法的实际应用中,函数输入的顺序需固定且所有发明方法进行交互的用户知晓且使用相同的顺序进行操作(输入的顺序可由使用所发明方法进行交互的两个或多个用户协商确定,或由可信的用户或机构指定)。若函数的输入是一个空集,则函数的输出定义为一个常数或O。在传统的公钥密码体制中,假定签名者,记为J,有一个签名公钥U,签名公钥U与签名者身份i的绑定由一个可信的第三方用户或机构来执行。通常,可信的第三方用户或机构会检查J的身份的有效性以及U的有效性,然后对(Λ /)做一个数字签名,并将(Λ /)以及可信第三方的签名形成一个针对(2,C/)公钥证书,记为。数字签名相关工作及比较:给定其中4,g均是公开的,%是一个句有效的双线性对映射(注意,C 〗中的元素表示要比中的短,因此下面得到的签名也相应地比较短)。记m为待签名的信息。记签名者的身份是; 。令H1是一个定义域为{0,1}*输出属于的一个哈希函数。目前相关工作中最好的确定的基于双线性对的数字签名方法是由Boneh和Boyen所给出的,具体如下Boneh-Boyen 签名方法签名公钥=X1=Qi广,H1;签名私钥Xl,其中X1从中随机选取。
签名对于ー个消息m,计算り=。将T A作为对消息m的签名。签名验证验证者得到m和^后’计算验证ら^^ズ办丨广バ’^メふぎい;若等式
成立则接受签名,否则拒绝。
Boneh-Boyen方案的不足之处在于它不能证明完全的签名安全性,为了得到完全的签名安全性,Boneh-Boyen方案的公钥需要增加ー个DH-成分并且签名必须是随机的(即签名本身包含一个随机串);另外Boneh-Boyen方案不能够提供足够的不可锻造安
全性,比如给定(Z = ,m,r =),一个恶意的敌手可以将其锻造成为
(X11 = (XJ,m',てい(taY ),其中H1 (m' ) = CH1 (m)。通过这种攻击,く =(ら):是相对
于公钥X' i = (Xグ的针对m'的签名。下面,我们将Boneh-Boyen方案与我们发明的签名方案进行比较发明签名方法_公钥签名者的公钥包括A1 =(ぎ1广和氏。私钥Xl,其中X1从中随机选取。签名签名者计算T = ^rrIylH,(X m)+S,其中J = ^ m0dA^,々是\的X-轴坐标值,
或S是从中随机选取的常数C。Ta作为对消息m的签名。验证得到(m,T A),签名验证者计算验证是否ら(ろ,;^〃'’=
等式成立则接受签名,否则拒绝。其中ら(y,g〗)和(ぎ/可事先计算并作为签名公钥的一部分。与Boneh-Boyen方案相比,发明签名方法的优点在于签名公钥可仅包含ー个DH-成分不=(ビ广且是确定的签名。注意,为了得到完全的签名安全性,Boneh-Boyen方案的公钥需要2个DH-成分,且签名是随机的且签名除了 h还包括一个随机数(因此,无论是公钥还是签名都要加长);特别地,上述我们针对Bonen-Boyen的锻造攻击将不能够应用于发明签名方法。基于身份的签名相关工作及比较:给定GpA,GsA,GTA,gpA,eA,HA,NA,其中是公开的,Gpa e {GlA,G2A},Gf e{Gi,G〗},HAi—个输出属于Gj的哈希函数。令eA是ー个G〗x —巧有效的双线性对映射,其中0 = G許PGガ=Gsa。令/1 {0,1}* — 为ー个哈希函数。可信用户公钥和私钥可信用户计算= (gPAY,其中s从中随机选取。从‘中随机选取C。令^6 =レぴ和C和(g^为可信用户的公钥,S为可信用户的私钥。用户公钥和私钥所有使用所述发明方法和同一可信用户公钥Ppub的具有身份2的用户的公钥记为(不;用户2的私钥记为d =0。ビ=0有可信用户计算,并通过安全的信道发送给用户2。记m为待签名的信息。记签名者的身份是;i。目前,最好的基于身份的签名方案是Hess所给出的方案,具体如下Hess签名签名者做如下计算
(I)计算=,其中r由签名者在中随机选取;(2)计算 V = h (m, R);(3)计算 (4)将(U,V)作为对消息m的签名。Hess签名的验证得到m和(U,v)后,签名验证者做如下计算(I)计算i = eA(U,gPA)eA(QA,P;Lr ;(2)若V = h (m, R)则接受签名,否则拒绝。注意=Hess签名的签名计算复杂性为1个双线性对运算,U = (g)v(gW的计算量相当于I.5个指数运算。Hess签名的验证复杂性为2个双线性对运算(其中一个,即eA{QA,P;L·),可以预先计算),I个指数运算,I个求逆运算和I个Gi上的乘法运算。Hess签名的方案仅证明在随机圣谕(random oracle)模型下对于固定身份攻击安全。注意,固定身份攻击安全部是一种较弱的安全性,因此Hess方案尚不不能做到完全的安全性(即便在随机圣谕模型下)。下面,我们将Hess基于身份的签名方案与我们发明的基于身份的签名方案进行比较发明的基于身份的签名方法-I (该方法不需要可信用户的公钥包括c或)签名签名者计算;^={gPA)x\TA^(gsA)x's+Km),其中5 = ·^ mod^。将(χι,τ a)作为
对消息m的签名。其中X1可以事先计算并作为签名者公钥的一部分。验证得到(m,X1, τ A)后,验证者做如下计算计算验证是否eA(XfigPA)Hm\TA) = eA(Ppub,QA)。若等式成立,则接受签名,否则拒绝。发明基于身份的签名方法-I计算复杂性分析签名需要计算2个指数运算,而不需要进行双线性对运算。因为双线性对运算大约相当于I. 5或2个指数运算。因此,我们发明的基于身份签名方法的签名计算量相比Hess方案有很大的改进。发明方法的签名验证需要2个双线性对运算(其中一个可以事先计算)的计算相当于I. 5个指数运算。注意,若X1作为签名者公钥的一部分,则亦可以事先计算。因此,我们发明方法的签名验证的在线计算量可以仅仅是I个双线性对运算和I个指数运算。因此,与Hess方案相比,我们发明方案的签名验证的在线计算量更优(不需做求逆运算和上的乘法运算)。安全性比较相对于Hess方案,其只能事先针对固定身份的攻击并在随机圣谕模型下,我们发明的基于身份的签名方案-I不需要随机圣谕假设,并可抵抗针对任意身份的动态攻击。因此,相比于Hess方案,我们发明的基于身份的签名方案提供更优的安全保证。发明的基于身份的签名方法_2 签名签名者计算a = (Μ)*ι & =。将(X1, τ Α)作为对消息m的签名。其中X1可以事先计算并作为签名者公钥的一部分。验证得到(m,X1, τ A)后,验证者做如下计算计算验证是否βΛ(Χ^\§ρΑγ,τΑ) = eA{Ppub,QA)。若等式成立,则接受签名,否则拒绝。发明基于身份的签名方法-2计算复杂性分析签名需要计算2个指数运算,而不需要进行双线性对运算。因为双线性对运算大约相当于I. 5或2个指数运算。因此,我们发明的基于身份签名方法的签名计算量相比Hess方案有很大的改进。发明方法的签名验证需要2个双线性对运算(其中一个可以事先计算),和ー个指数运算ズf (注意(ぎ:デ直接出现在了可信用户的公钥中)。因此,我们发明方法_2的签名验证的在线计算量可以仅仅是I个双线性对运算和I个指数运算。因此,与Hess方案相比,我们发明方案的签名验证的在线计算量更优(不需做求逆运算和上的乘法运算)。安全性比较相对于Hess方案,其只能事先针对固定身份的攻击并在随机圣谕模型下,我们发明的基于身份签名方法_2不需要随机圣谕假设,并可抵抗针对任意身份的动态攻击。因此,相比于Hess方案,我们发明的基于身份的签名方案-2提供更优的安全保证。发明的基于身份的签名方法_3 (该方法不需要可信用户的公钥包括c或(g,)签名签名者计算
权利要求
1.一个不可锻造的知识证明和消息签名认证的方法,所述方法包括 身份为J的用户得到{足二圯,n彡1,其中Z是一个以Na为阶的有限阿贝尔群0的生成元,每个n,构成一个单向指数函数且其输出为<^中的一个元素,每个5kg〗),n,构成一个确定的至少有一个参数^的函数;每个/jO,.), I ^ i ^ n,构成一个确定的至少有一个参数Xi的函数,其中X,. e ; 身份为i的用户得到%,其中%是一个公开信息的集合,其中,…,XJ是用户i要签名认证的消息;用户i得到R1和用户j得到mA的顺序可以任意;上述的X1, ... , Xn称为用户i的DH成分,X1, ... , Xn称为用户J的秘密DH指数;\,…,Xn, mA中,有些是在多个会话中都使用的固定的值,另外一些则是只是在一个会话中使用的临时的值;在多个会话中都使用的DH成分或DH指数称为固定的DH成分,只在一个会话中使用的DH成分或DH指数称为临时的DH成分; ,_^(5^)_ 用户 J十算 _ Rn+\( 2 \haA{SaA )+fA {Xl)h\{S\ )+■/; (x )hnA(SnA)其中 2是一个以 Na 为阶的A 1A--dA KsaJ, Sa有限阿贝尔群( 的生成元,构成一个确定的至少有一个参数g〗的函数且其输出为<^中的一个元素,^是( 〗中的一个元素或G〗中的一个元素的坐标值,<,0彡i彡n中的每一个构成一个确定的以力£{&, ,UUm,为输入参数的函数,Aa构成一个确定的以W G {七,…,ZJUmy为输入参数的函数,h是Gj中的一个元素或G〗中的一个元素的坐标值“^’^丨中的其中一个’记为^^&^^^是公开的。记M所在的群为G^e{G〗,C^}; 沖除W之外的另一个记为W,记g所在的群为0 e {G\,G2a} 或者是公开的,或者是用户i所拥有的秘密值;若乂是用户J的秘密值,则g =五0^,4且尸―⑷是一个公开参数’其中^^式^是一个秘密值一^^^^丨足/^^义广^^^丨^是一个确定的输入参数包括(#,4的函数,万—)/p“A W构成一个单向指数函数且其输出为Gf中的一个元素,构成一个确定的至少有一个参数的函数,fpUb(s)构成一个确定的至少有一 _^a(Sa)_个参数S的函数=^+1(^)A^Zj(X1)Aj1CSi>+.../;(* )*;;〗满足如下可公开验证的等式之 (1)若Si均是公开的值且eA是一个G〗XG〗—Gta有效的双线性对映射 (/^(心_,#(气...,= eA{tA{g\\Bn;\g2A)),或^(/,(^(^)4°(S°),X1^(S;!),--,X ^W))A/1(^)),rJ-' = eA(tA(glA),BnA+l(g2A)); (2)或,若gU〗均是公开的值且eA是一个G〗X( 4 Gta有效的双线性对映射 (心伽),#('…,(狀,或 ⑷(心_,尤产,,…,尤咖人叱)))-1 = ^(5;+1 (^),^(^)); (3)或,若d是保密值且eA是一个G〗xG〗有效的双线性对映射 ,…,X/MUD)),^)= eA^A{SHA),(p{Ppub)),或
2.如权利要求I所述的方法,若d:是用户2的秘密值,则:gSA=E(S!,s) = HA(S=)训其中///#)是一个确定的输入参数包括#的函数其输出是Gj中的一个元素,fs(s)是一个确定的输入参数包括s的函数 是一个可信用户CA的公钥的一部分;CA的公钥的部分或全体包含在%中;对于每一个具有身份ID的使用所述方法和公钥
3 .如权利要求2所述的方法中,其中,得到 后,验证者通过计算
4.如权利要求3所述的方法中,其中{/^(S;f),AOSf)}的一个子集和固定的DH-成分的一个子集以及%的一个子集作为用户2的公钥的一部分;mA的一个子集作为可信用户CA公钥的一部分; 若d = M且W仅包含公开的信息,,h°A(S°A)}的一个(可以为空的)子集作为用户2的公钥的一部分或可信用户CA公钥的一部分;
5.如权利要求3所述的方法,其中mA包含用户:i和其它用户相互交换的信息,和/或,M和/或公开的g〗,和/或包含Ppub的可信用户CA的公钥的部分或全体;/^包含用户J的身份和/或么( ")和/或义(#)和/或公钥信息和/或时间戳信息,和/或包含Ppub的可信用户CA的公钥的部分或全体,和/或和其它使用所述方法的用户通过网络或设备相互交换的信息沿,和/或元包含一个值uA,其中u 4或者是一个空值或者是一个角色确定相关的值(即不同的协议角色,对应不同的^值)。
6.如权利要求5所述的方法,其中沿包括j和其它使用所述方法的用户通过网络或设备相互交换的随机数,和/或DH-成分的一个子集和/或& (O和/或炉CPpuJ的坐标值,和/或身份和/或公钥信息和/或时间戳信息。
7.如权利要求3、4、5、6所述的方法,其中函数化,n,有如下实现方法1)M构成一个输出属于的函数,或若M是椭圆曲线上的一个点令
8 .如权 利要 求 7所述 的方 法,其中
9.如权利要求8所述的方法,其中函数
10.如权利要求9所述的方法,其中=Ppub,Ha是一个输出属于Gj1的哈希函数,
11.如权利要求10所述的方法,其中
12.如权利要求10所述的方法,其中,若n= 1,^有如下计算方式
13.如上述12所述的方法中,其中Ha(S=)和/或X1和/或X2和/或4和/或和/或作为用户2的公钥的一部分;4和/或(g)4和/或(gPAf(^作为可信用户CA的公钥的一部分;和/或$ -mA或S0a =Ppub或S0a = A-, (eA(gj,gj), eA(g2A,gxA), eA(</>A(S^),Ppub) , Q(P_,A(5^)) }的一个子集作为用户2的公钥的一部分或可信用户CA公钥的一部分;(或4或&(<)既可以由用户2产生,也可以由与2交互的用户产生并发送给2。
14.如权利要求7所述的方法中,其中F(Sf)= H(l,Sf) I卜 I |H(1,SF),H是一个哈希函数,I≥I。
全文摘要
一种基于双线性对的不可锻造的知识证明和消息签名认证方法。发明方法的目的是并发不可锻造安全性和知识抽取性。使用所发明的方法,只有知道相应的秘密知识才能给出一个合法的知识证明或消息签名认证。通过将用户的身份和/或固定的DH成分视为公钥,发明方法蕴含高效的数值签名方法和基于身份或无证书的签名方法;运行发明方法的各方通过运行发明方法证明各自的秘密DH-知识知识,发明方法导出认证的密钥交换方法和认证的基于身份或无证书的密钥交换方法。
文档编号H04L9/30GK102624524SQ201110027808
公开日2012年8月1日 申请日期2011年1月26日 优先权日2011年1月26日
发明者丁素芬, 赵运磊 申请人:丁素芬
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1