CN101645870A - 一类高效、公平的密钥交换方法 - Google Patents

一类高效、公平的密钥交换方法 Download PDF

Info

Publication number
CN101645870A
CN101645870A CN 200810041475 CN200810041475A CN101645870A CN 101645870 A CN101645870 A CN 101645870A CN 200810041475 CN200810041475 CN 200810041475 CN 200810041475 A CN200810041475 A CN 200810041475A CN 101645870 A CN101645870 A CN 101645870A
Authority
CN
China
Prior art keywords
user
aux
key
pub
sid
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.)
Granted
Application number
CN 200810041475
Other languages
English (en)
Other versions
CN101645870B (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.)
Individual
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 200810041475 priority Critical patent/CN101645870B/zh
Priority to PCT/CN2008/072794 priority patent/WO2009056048A1/en
Priority to CN2008801222327A priority patent/CN102017510B/zh
Publication of CN101645870A publication Critical patent/CN101645870A/zh
Priority to US12/766,431 priority patent/US8464060B2/en
Priority to HK11110843.5A priority patent/HK1156750A1/xx
Application granted granted Critical
Publication of CN101645870B publication Critical patent/CN101645870B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明属于密码协议技术领域,具体涉及一类高效、公平的密钥交换方法。其特点为:最优的(在线)计算效率,支持先发送DH-密钥成分后发送身份和公钥证书的Post-ID工作模式,利于隐私保护、计算的可并行性和模块化,支持DH-密钥成分的重复使用,并可应用于分布式客户-服务器环境下抗拒绝服务且保护用户隐私的密钥交换、无公钥证书的密钥交换、和公平的群Diffie-Hellman密钥交换。

Description

一类高效、公平的密钥交换方法
技术领域
本发明属于密码协议技术领域,具体涉及一类高效、公平的密钥交换方法、分布式客户-服务器环境下抗拒绝服务攻击且保护用户隐私的密钥交换方法、无公钥证书的密钥交换方法、公平Diffie-Hellman秘密生成方法、公平的群密钥交换方法。
背景技术
系统参数:(G′,G,g,q),其中G′是一个阶为N的有限群,G为G′中阶为q的子群,g为G的生成元,使得定义在G上的离散对数问题是难的。常用的G′,G的设置如下:G′为 Z p * = { 1,2 , · · · p - 1 } , p为一个素数,q整除(p-1),此时G′的阶为N=p-1;或者,G′为定义在一个有限域的椭圆曲线(即:定义在一个有限域上的椭圆曲线上的点构成的群)。一般而言, Z p * = { 1,2 , · · · p - 1 } 中的元素操作用乘法表示(即乘法群),单位元为整数1,而椭圆曲线上的运算用加法表示(即加法群),单位元为无穷远点。在本文档中,我们用乘法来表示G′中元素的操作。除非有特别说明,将G、G′中的单位元记为1G,G′/1G表示的是由G′减去单位元1G之后其它元素的集合,即G′中的非1G元素;记G/1G为G中的非1G元素。不失一般性,指数运算和不在指数上的乘法运算的结果是G′或G中的一个元素,指数上的加法和/或乘法运算是模q计算。定义函数DL:Zq→G,使得h=DL(w)=gw。w称为h的离散对数。我们要求给定随机计算出的h,没有多项式时间算法计算出h的离散对数w,这称为离散对数问题。计算Diffie-Hellman问题指的是:给定随机的gx与gy,没有多项式时间算法计算出gxy。对于熟悉本领域的人而言,离散对数问题及计算Diffie-Hellman问题也可以定义在由椭圆曲线或双线性对(bilineartity)定义的群上。
检查确认一个元素X∈G可有如下方法:(1)计算并检查Xq=1;(2)如果N=2q+1,计算并检查X2≠1,或计算X的Legendre符号;(3)如果G′=G(比如G′,G为素数阶的椭圆曲线群),只需检查X∈G′;(4)计算并检查X∈G′且XN/q≠1从而保证X不在一个阶可整除N/q的小子群中;(5)若G′为定义在一个有限域Fq的椭圆曲线,检查X∈G′/1且X的x-坐标和y在坐标是Fq中的元素。一般而言,可将X∈G的检查嵌入到协议的其它运算之中。
常用的不使用签名进行身份认证的Diffie-Hellman密钥交换协议,比如美国国家标准化组织(ANSI)的X9.42-2001标准文档、国际标准化组织(ISO)的IS 15946-3标准文档、国际电气和电子工程师协会(IEEE)的1363-2000标准文档等所规定的MQV协议有如下不足:
(a).MQV协议的在线计算效率不够好。MQV的会话密钥生成方式不允许用户对会话密钥进行部分离线计算以提高在线计算的效率。具体来讲,用户“A”不能够在接受到用户“B”的DH-密钥成分Y之前进行事先离线部分计算会话密钥,用户“B”不能够在接受到用户“A”的DH-密钥成分X之前进行事先离线部分计算会话密钥。
(b).MQV协议不能够很好地保护用户的隐私。在MQV协议中,每个用户的会话密钥不能够仅仅由对方用户的DH-密钥成分的离散对数而计算出。即:会话密钥以不可否认的方式绑定到到产生该会话密钥的两个用户。因此,MQV协议不能够很好地保护用户隐私。
(c).MQV协议不能够完全保证每个用户的DH-密钥成分不包含在小的子群中。
在发明人于2008年7月8日递交的申请号为200810040311.5的专利申请书的权利要求-1的实现方法-4中,本发明申请的申请人给出了一个新的不使用签名的密钥交换方法(即)。注:本发明专利的申请人与申请号200810040311.5的专利申请人相同;另外,本发明申请书的权利要求2、3、4、5与200810040311.5专利申请无关。
但是,申请号200810040311.5的专利申请书的权利要求-1的实现方法-4有如下不足:
(a).KA,KB的计算分别需要3个哈希运算(这意味着在random oracle模型中要使用三次random oracle)。
(b).假设用户“A”和“B”在交换DH-密钥成分之前或交换DH-密钥成分的同时,交换彼此的公钥证书。这使得协议难以在post-ID(即用户为了保护隐私,先发送DH-密钥成分后发送公钥证书)模型和环境下运行,因此不利于保护用户的隐私。另一方面,若用户先发送DH-密钥成分后发送公钥证书,则协议无法有效地进行离线计算以加速在线计算的效率。还有,KA,KB不够模块化,不能够分开并行计算以加速计算效率。
目前已知的的无公钥证书Diffie-Hellman密钥交换方法需做2个双线性对(pairing)计算以及其它指数运算;另外,在线计算效率差,计算不够模块化,并行化不好。(注:双线性对的计算效率较低,约相当于4-5个指数运算)。
传统的Diffie-Hellman秘密生成方法不够公平。即:对于生成的Diffie-Hellman秘密gxy,用户“A”不能够保证gxy是随机分布在gx为生成元的子群中(因为,用户“B”可能是恶意的,即:y可能是用户“B”在Zq中任意选取的值而非随机选取);同样,用户“B”不能够保证gxy是随机分布在gy为生成元的子群中(因为,用户“A”可能是恶意的,即:x可能是用户“A”在Zq中任意选取的值而非随机选取)。
在群密钥交换领域,Burmester-Desmedt在Eurocrypt’94上提出的群密钥交换方法是最著名的(大多数的后续的群密钥交换方法遵循Burmester-Desmedt方法)。但是,我们最近注意到,Burmester-Desmed群密钥交换方法是不公平的(同时不安全)。具体来讲,我们发现了Burmester-Desmed方法的目前尚未被发现的新的安全漏洞。使用我们的攻击,诚实用户的贡献将被完全屏蔽。
发明内容
本发明的目的在于提供一类高效、公平的密钥交换方法。其特点为:最优的(在线)计算效率,支持先发送DH-密钥成分后发送身份和公钥证书的工作模式,利于隐私保护、计算的可并行性和模块化,支持DH-密钥成分的重复使用,并可应用于分布式客户-服务器环境下抗拒绝服务且保护用户隐私的密钥交换、无公钥证书的密钥交换、和公平的群密钥交换。
本发明提出的一类高效、公平的密钥交换方法,其系统工作环境为:
(1).系统参数:(G′,G,g,q),其中G′是一个阶为N的有限群,G为G′中阶为q的子群,g为G的生成元,使得定义在G上的离散对数问题是难的。常用的G′,G的设置如下:G′为 Z p * = { 1,2 , · · · p - 1 } , p为一个素数,q整除(p-1),此时G′的阶为N=p-1;或者,G′为定义在一个有限域的椭圆曲线(即:定义在一个有限域上的椭圆曲线上的点构成的群)。一般而言, Z p * = { 1,2 , · · · p - 1 } 中的元素操作用乘法表示,单位元为整数1,而椭圆曲线上的运算用加法表示,单位元为无穷远点。在本文档中,我们用乘法来表示G′中元素的操作。除非有特别说明,将G、G′中的单位元记为1G,G′/1G表示的是由G′减去单位元1G之后其它元素的集合,即G′中的非1G元素;记G/1G为G中的非1G元素。不失一般性,指数运算和不在指数上的乘法运算的结果是G′或G中的一个元素,指数上的加法和/或乘法运算是模q计算。定义函数DL:Zq→G,使得h=DL(w)=gw。w称为h的离散对数。我们要求给定随机计算出的h,没有多项式时间算法计算出h的离散对数w,这称为离散对数问题。计算Diffie-Hellman问题指的是:给定随机的gx与gy,没有多项式时间算法计算出gxy。对于熟悉本领域的人而言,离散对数问题及计算Diffie-Hellman问题也可以定义在由椭圆曲线或双线性对(bilineartity)定义的群上。对于任一元素X∈G′,我们记X-1为X的相对于G′的逆元,即:XX-1=1G;作为本领域的常识,X-ab的计算可有各种等价的计算方式,比如:X-ab=(X-1)ab=(X-a)b=(Xa)-b=(X-b)a=(Xb)-a=…,Xtcb+tfy=Xt(cb+fy),等;
检查确认一个元素X∈G可有如下方法:(1)计算并检查Xq=1;(2)如果N=2q+1,计算并检查X2≠1,或计算X的Legendre符号;(3)如果G′=G(比如G′,G为素数阶的椭圆曲线群),只需检查X∈G′;(4)计算并检查X∈G′且XN/q≠1从而保证X不在一个阶可整除N/q的小子群中;(5)若G′为定义在一个有限域Fq的椭圆曲线,检查X∈G′/1且X的x-坐标和y在坐标是Fq中的元素。一般而言,可将X∈G的检查嵌入到协议的其它运算之中。
(2).H是一个哈希函数;对于字符串或数值s1,s2,…sm,m>1,H(s1,s2,…sm)表示的是:将s1,s2,…,sm,用合适编码表示,然后将所有的编码顺序连接串联起来,最后将串联后得到的串作为H的输入。不失一般性,我们设H的输出是Zq={0,1,2,…,q-1}中的元素,否则我们可以简单地取H的输出的一个属于Zq的子串或对H的输出进行模q计算。为了加快计算效率,可以令H的输出的长度为
Figure G200810041475XD00041
若s1,s2,…,sm是m个字符串,S1,S2,…Sn是n个集合,1≤n,m,{s1,s2,…,sm,S1,S2,…,Sn}表示的是{s1,s2,…,sm}∪S1∪S2∪…∪Sn,其中大括号内的元素顺序可以任意变化。H(s1,s2,…,sm,S1,S2,…,Sn)表示的是将s1,s2,…sm及S1∪S2∪…∪Sn-{s1,s2,…,sm}中的元素用合适编码表示,然后将所有的编码串顺序连接串联起来,最后将串联后得到的串作为H的输入。若Φ为空值,则H(s1,Φ,s2)=H(s1,s2){s1,Φ,s2}={s1,s2},。
(3).除非有特别说明,具有身份IDIA的用户“A”有一个公钥A=ga∈G,其中a由用户“A”在Zq={0,1,2,…,q-1}中随机选取。相应地,具有ID IB的用户“B”的公钥记为B=gb∈G,以此类推。其中IA为用户“A”的身份信息或用户名,IB为用户“B”的身份信息或用户名。对于任一元素x∈Zq,我们记-x为x的相对于Zq的负元,即:x+(-x)=0modq。
不失一般性,若协议基于公钥证书来绑定用户的身份和公钥,则公钥证书颁发机构在向用户颁发证书时,检查确认用户注册的公钥为G中的元素或为G/1G中元素。任何检查不通过,证书颁发机构拒绝颁发公钥证书。这样,每个用户只需检查对方用户的公钥证书即可确认对方的公钥为G或G/1G中的元素。
(4).协议基于Diffie-Hellman密钥交换协议。除非有特别说明,记X=gx为用户“A”的DH密钥成分,x为DH密钥成分X的离散对数,x由用户“A”从Zq={0,1,…,q-1}中随机选取。记Y=gy为用户“B”的DH密钥成分,y为DH密钥成分Y的离散对数,y由用户“B”从Zq={0,1,…,q-1}中随机选取。假设用户“A”为协议的发起者(初始者),用户“B”为协议的响应者。即:用户“A”先发送X;在收到X后用户“B”再发送Y。一般而言,用户“B”需在发送Y之前检查X∈G′/1G或X∈G,“A”需在收到Y之后检查Y∈G′/1G或Y∈G。
(5).协议会话标示符sid:sid用于标示同一协议的不同的并发运行会话;一般而言,sid是协议双方相互交换的两个随机数的串联,即:sid=RA||RB,其中RA是一个由用户“A”发送的随机数,RB是一个由用户“B”发送的随机数,“||”表示的是字符串联结符;在客户服务器环境中,sid可直接设置为服务器发送的随机数或计数器数值;或者,sid直接由DH-密钥成分来定义,即将RA换为X将RB换为Y。
(6).与协议执行相关的其它信息pub1,pub2,…pubk,k≥1:对于任意的i,1≤i≤k,pubi是除DH-密钥成分X=gx或X′,Y=gy之外的其它与协议执行相关的信息的一个子集或序列,可为空或含重复元素;这儿,其它与协议执行相关的信息包括:用户即协议初始者与响应者的身份信息或用户名、协议初试者和响应者的角色标示、公钥及公钥证书信息、IP地址,协议版本,安全参数和密钥参数,协议的会话标示符,时间戳,cookie,任意数值,以及除DH-密钥成分外的协议会话传输的其它信息。在不同的实现方法中,pubi的取值可不同;对于任意的i,j,i≠j,pubi等于或不等于pubj。一般而言,pubi包含协议初始者与响应者的公钥与身份或用户名信息,即 { I A , A , I B , B } ⊆ pub i { sid , I A , A , I B , B } ⊆ pub i .
会话标示符sid一般由用户“A”和“B”发送的两个随机数RA和RB或DH-密钥成分以初始者-响应者的顺序串联构成,即sid=RA||RB或sid=X||Y,其中||表示的是串联运算符。
用户的协议角色标示rA和rB一般用不同的整数,比如:rA=0,rB=1;或者由用户“A”和“B”发送的随机数或DH-密钥成分的不同顺序来标示,比如:rA=RA||RB或rA=X||Y,rB=RB||RA或rB=Y||X。
对于熟悉本领域的人而言,随机数RA和RB,以及可能的公钥证书的交换,即可在实现方法运行之前进行,也可包含在实现方法中用户各自发送的信息中。
(7).密钥导出函数KDF:KDF(S,aux)是一个密钥导出函数,其中S是一个数值或数值的集合,aux是一个数值字符串集合或计数器。一般而言,KDF是一个哈希函数或哈希函数序列或直接输出其第一个输入,比如:KDF(S,aux)=H(S,aux)(这种计算适合于哈希函数H的输出的长度大于等于规定的密钥的长度的情况,即:真正的输出可能是H(S,aux)的一个子串,比如前缀,输出的子串的长度等于规定的密钥的长度),或KDF(S,aux)=H(S,1)H(S,2)…H(S,k)其中k≥1,aux是一个计数器(这种计算适合于哈希函数H的输出的长度小于规定的密钥的长度的情况),或KDF(S,aux)=S;或者KDF是一个以S为随机种子的伪随机函数,比如KDF(S,aux)=PRFS(aux)。会话密钥和认证密钥可由同一个密钥导出函数在相同的输入上导出;或者,会话密钥和认证密钥由同一个密钥导出函数在不同的输入上分别导出,比如会话密钥为H(S,aux)而认证密钥为H(aux,S);或者,会话密钥的导出函数与认证密钥的导出函数不同,而它们的输入相同或不同,比如:会话密钥与认证密钥的导出使用不同的哈希函数或伪随机函数。
(8).标签认证函数FT(K,U),其中K为一个秘密数值或秘密数值的集合,U为一个数值字符串集合。标签认证函数FT(K,U)为任何满足如下性质的函数:(1)不能够从FT(K,U)在K的长度的多项式时间内求出K,即:相对于输入K,函数FT是单向的;(2)给定FT(K,U),不能够在K的长度的多项式时间内计算出FT(K,U′)或FT(K,U′)使得U≠U′。一般而言,FT是一个单向哈希函数,比如:FT(K,U)=H(K,U);或者FT是一个消息认证码MAC函数,其中MAC的私钥由K,U导出而认证的信息是U的一个子集,比如FT(K,U)=MACK(U)。
假设协议运行送方有某种机制协商上述参数(包括安全参数和密钥长度参数)、函数、算法(包括对称和公钥加密算法、认证算法、签名算法、哈希函数等),用户角色标示及会话标示符号表示方法等,以及运行以下哪种实现方法,并达成一致。这种协商机制可随应用环境和系统的不同而不同。一般而言,pub包含协商所交互的信息的一个子集。对于熟悉本领域的而言,在申请方法中进行的对各种元素的检查确认默认是一次性的,即:一旦确认正确(一般在该元素的首次计算时进行),则在后续的运行中不在检查。
本发明提出的实现方法,具体步骤如下:
设用户“A”有离散对数公钥A=ga并发送DH-密钥成分X=gx,且用户“B”有离散对数公钥B=gb并发送DH-密钥成分Y=gy。记CERTA为用户“A”的公钥证书,CERTB为用户“B”的公钥证书;根据实现方法的不同,用户公钥证书的发送可以在发送DH-密钥成分之前、或发送DH-密钥成分的同时、或发送DH-密钥成分之后;(一般而言,在所有的实现方法中,每个用户均可在发送DH-密钥成分之前或发送DH-密钥成分的同时发送自己的公钥证书;但为了更好地保护用户的隐私,在实现方法2和3中,用户可在发送DH-密钥成分之后发送自己的公钥证书。)用户“A”发送或不发送随机数RA,用户“B”发送或不发送随机数RB。auxA和auxB要么均为空值或相同的值或字符串,或者auxA和auxB为任意数值或字符串并且auxA≠auxB;一般而言,若auxA≠auxB,可令auxA=0,auxB=1。
密钥交换方法的核心和特征是构建两个函数KA和KB使得KA(a,x,B,Y,pub)=KB(b,y,A,X,pub);KA和KB的计算如下:用户“A”计算 K A = B t 1 ae + t 2 xc Y t 3 ad + t 4 xf ∈ G ′ , 用户“B”计算 K B = A t 1 be + t 3 yd X t 2 bc + t 4 yf ∈ G ′ ; 其中,ti=1或
Figure G200810041475XD00073
1≤i≤4;用户“A”可事先计算X和 B t 1 ae + t 2 xc ∈ G ′ , 用户“B”可事先计算Y和 A t 1 be + t 3 yd ∈ G ′ ; 实现方法的关键是函数c,d,e,f的不同设置和实现方法(每个实现方法的特点已在前面轮述):
实现方法-1:c=d=1;e=0或e=1或e=H(pub1);f=H(IA,A,IB,B,X,Y)或f=H(sid,IA,A,IB,B,X,Y)或f=H(pub2,X,Y)。
实现方法-2:c=H(auxA,IB,B,X)或c=H(auxA,IB,B,RA,X);d=H(auxB,IA,A,Y)或d=H(auxB,IA,A,RB,Y);e=0或1或H(pub1);f=H(X,Y)或f=H(sid,X,Y)f=H(pub2,X,Y)。
对于实现方法-2,为了保护用户隐私,用户可先交换DH-密钥成分,后交换公钥证书(用户“B”也可在发送Y的同时发送公钥证书)。此时,用户“B”可先计算 X t 2 bc + t 4 yf ∈ G ′ , 用户“A”可先计算 Y t 3 ad + t 4 xf ∈ G ′ .
实现方法-3:c=H(auxB,IB,B,X)或c=H(auxB,IB,B,RB,X);d=H(auxA,IA,A,Y)或d=H(auxA,IA,A,RA,Y);e=0或1或H(pub1);f=H(X,Y)或f=H(sid,X,Y)f=H(pub2,X,Y)。
对于实现方法-3,为了保护用户隐私,用户亦可先交换DH-密钥成分,后交换公钥证书;用户“B”也可在发送Y的同时发送公钥证书;此时,用户“B”可先计算 X t 2 bc + t 4 yf ∈ G ′ , 用户“A”可先计算 Y t 3 ad + t 4 xf ∈ G ′ .
实现方法-4:c=H(auxA,IB,B,X)或c=H(auxA,IB,B,RA,X)或c=H(auxB,IB,B,X)或c=H(auxB,IB,B,RB,X);d=H(auxB,IA,A,Y)或d=H(auxB,IA,A,RB,Y)或d=H(auxA,IA,A,Y)或d=H(auxA,IA,A,RA,Y);e=0或1或H(pub1);f=H(IA,A,IB,B,X,Y)或f=H(sid,IA,A,IB,B,X,Y)或f=H(c,d)或f=H(c,Y)或f=H(d,X)或f=H(IA,IB,X,Y)或f=H(sid,IA,IB,X,Y)。
实现方法-5:c=H(auxA,IA,A,IB,B,X)或c=H(auxA,IA,A,RA,IB,B,X);d=H(auxB,IB,B,IA,A,Y)或d=H(auxB,IB,B,RB,IA,A,Y);e=0或1或H(pub1);f=H(X,Y)或f=H(sid,X,Y)或f=H(IA,A,IB,B,X,Y)或f=H(sid,IA,A,IB,B,X,Y)或f=H(c,d)或f=H(c,Y)或f=H(d,X)或f=H(IA,IB,X,Y)或f=H(sid,IA,IB,X,Y)或f=H(pub2,X,Y)。
实现方法-6:c=H(auxA,IA,A,X)或c=H(auxA,IA,A,RA,X),d=H(auxB,IB,B,Y)或d=H(auxB,IB,B,RB,Y),e=0或1或H(pub1),f=H(IA,A,IB,B,X,Y)或f=H(sid,IA,A,IB,B,X,Y)或f=H(c,d)或f=H(c,Y)或f=H(d,X)。
实现方法-7:c=H(auxA,IA,A,IB,X)或c=H(auxA,IA,A,RA,IB,X),d=H(auxB,IB,B,IA,Y)或d=H(auxB,IB,B,RB,IA,Y),e=0或1或H(pub1),f=H(X,Y)或f=H(sid,X,Y)或f=H(IA,A,IB,B,X,Y)或f=H(sid,IA,A,IB,B,X,Y)或f=H(c,d)或f=H(c,Y)或f=H(d,X)或f=H(IA,IB,X,Y)或f=H(sid,IA,IB,X,Y)或f=H(pub2,X,Y)。
实现方法-8:c=H(auxA,IB,X)或c=H(auxA,IA,IB,X)或c=H(auxA,RA,IB,X)或c=H(auxA,IA,RA,IB,X),d=H(auxB,IA,Y)或d=H(auxB,IB,IA,Y)或d=H(auxB,RB,IA,Y)或d=H(auxB,IB,RB,IA,Y),e=0或1或H(pub1),f=H(X,Y)或f=H(sid,X,Y)或f=H(IA,A,IB,B,X,Y)或f=H(sid,IA,A,IB,B,X,Y)或f=H(c,d)或f=H(c,Y)或f=H(d,X)或f=H(IA,IB,X,Y)或f=H(sid,IA,IB,X,Y)或f=H(pub2,X,Y)。
实现方法-9:c=H(auxA,pub3,X)或c=H(pub4,X,Y)或c=1,d=H(auxB,pub5,Y)或d=H(pub6,X,Y)或d=1;e=0或1或H(pub1),f=H(pub7,X,Y)或f=H(sid,X,Y)或f=H(c,d)或f=H(c,Y)或f=1或f=0;其中,若c=1和/或d=1,则f不可为0或1;pub4和pub7不相同,pub6和pub7不相同,建议pub4,pub6,pub7两两不同。
ti,1≤i≤4,设置方法:(1).若用户“A”检查确认B∈G,Y∈G,用户“B”检查确认A∈G,X∈G,则令t1=t2=t3=t4=1;(2).若用户“A”仅检查确认B∈G,X∈G′或X∈G′/1G,而不能确认X∈G,用户“B”仅检查确认A∈G,Y∈G′或Y∈G′/1G,而不能确认Y∈G,且x和/或y可能会泄露,则令t1=1, t 2 = t 3 = t 4 = N q , 用户“B”检查确认 X t 2 bc + t 4 yf ≠ 1 G K B ≠ A t 1 be + t 3 yd 或KB≠1G,用户“A”检查确认 Y t 3 ad + t 4 xf ≠ 1 G K A ≠ B t 1 ae + t 2 xc 或KA≠1G;若x,y均不会泄露,仍同(1)可设t1=t2=t3=t4=1;任何检查不通过,则中止协议运行,返回或不返回出错信息。
会话密钥和认证密钥导出方法:利用密钥导出函数由KA=KB及{f,c,d,e,X,Y,pub8}的某个子集导出会话密钥和认证密钥。一般而言,采用如下方法产生认证密钥k1和会话密钥k2,其中HK是一个哈希函数(HK可与H相同):(1).(k1,k2)←HK(KA,f,1)HK(KA,f,2)…HK(KA,f,i)=HK(KB,f,1)HK(KB,f,2)…HK(KB,f,i),其中i≥1由一个计数器来实现,i的取值依赖于(k1,k2)的长度,即直到HK(KA,f,1)HK(KA,f,2)…HK(KA,f,i)的长度大于等于(k1,k2)的长度。设(k1,k2)的长度为l,我们可取HK(KA,f,1)HK(KA,f,2)…HK(KA,f,i)的长度为l的前缀或后缀。(2).k1←HK(KA,f,1)HK(KA,f,2)…HK(KA,f,i)=HK(KB,f,1)HK(KB,f,2)…HK(KB,f,i);k2←HK(f,KA,1)HK(f,KA,2)…HK(f,KA,i)=HK(f,KB,1)HK(f,KB,2)…HK(f,KB,j)。设k1的长度为l1,k2的长度为l2,则计数器i的取值直到哈希函数序列的输出长度大于等于l1,计数器j的取值直到哈希函数序列的输出长度大于等于l2。其中,HK输入中的f可换为(c,d)。
认证方法:记导出的认证密钥为R′=k1,为了向用户“A”证明其知道R′,用户“B”利用标签认证函数FT计算并发送tB=FT(R′,aux1),其中aux1是{IB,sid,rB,X,Y,pub9}的一个子集,sid是会话标示符,rB是用户“B”的协议角色标示;用户“A”利用认证密钥R′检查tB正确性,若不正确,则中止协议执行,返回或不返回出错信息;为了向用户“B”证明其的确知道R′,用户“A”在收到tB并验证tB的正确性后,计算并向用户“B”发送tA=FT(R′,aux0),其中aux0是{IA,sid,rA,X,Y,pub10}的一个子集且aux0≠aux1,rA是用户“A”的协议角色标示;用户“B”利用认证密钥R′检查tA正确性,若不正确,则中止协议执行,返回或不返回出错信息。
本发明提出的高效、公平的密交换方法可应用于抗拒绝服务攻击,且保护用户隐私,具体步骤如下:
设用户“A”有离散对数公钥A=ga并发送DH-密钥成分X=gx,用户“B”有离散对数公钥B=gb并发送DH-密钥成分Y=gy;记CERTA为用户“A”的公钥证书,CERTB为用户“B”的公钥证书。用户“A”发送或不发送随机数RA,用户“B”发送或不发送随机数RB。auxA和auxB要么均为空值或相同的值或字符串,或者auxA和auxB为任意数值或字符串并且auxA≠auxB
ti=1或
Figure G200810041475XD00091
1≤i≤4;其设置方法为:(1).若用户“A”检查确认B∈G,Y∈G,用户“B”检查确认A∈G,X∈G,则令t1=t2=t3=t4=1。(2).若用户“A”仅检查确认B∈G,X∈G′或X∈G′/1G,而不能确认X∈G,用户“B”仅检查确认A∈G,Y∈G′或Y∈G′/1G,而不能确认Y∈G,且x和/或y可能会泄露,则令 t 2 = t 3 = t 4 = N q , 用户“B”检查确认 X t 2 bc + t 4 yf ≠ 1 G , 用户“A”检查确认 Y t 3 ad ≠ 1 G 和/或 B t 2 xc Y t 4 xf ≠ 1 G 和/或 Y t 4 xf ≠ 1 G (一般而言,若用户“A”事先计算
Figure G200810041475XD00105
则可仅检查 Y t 4 xf ≠ 1 G ; 若用户“A”不事先计算
Figure G200810041475XD00107
则检查 B t 2 xc Y t 4 xf ≠ 1 G Y t 3 ad ≠ 1 G )。若x,y均不会泄露,仍同(1)可设t1=t2=t3=t4=1;任何检查不通过,则中止协议运行,返回或不返回出错信息。
第一轮:用户“A”向用户“B”发送{X,auxA}或{X,auxA,RA}。
收到“A”发送的信息后,用户“A”检查X∈G′或X∈G′/1G或X∈G或X∈G/1G;若检查不通过,则中止协议运行,返回或不返回出错信息;若检查通过,用户“B”计算Y, K B ′ = X t 2 bc + t 4 yf ∈ G ′ ; 其中,c=H(auxA,IB,B,X)或c=H(auxA,IB,B,RA,X)或c=H(auxB,IB,B,X)或c=H(auxB,IB,B,RB,X);f=H(X,Y)或f=H(sid,X,Y)f=H(pub2,X,Y);其中,用户“B”可事先计算Y、c和t2bc。用户“B”利用密钥导出函数由K′B及{f,c,X,Y,sid,RA,RB,pub8}的一个子集导出认证密钥K′;用户“B”利用标签认证函数FT计算t′B=FT(K′,aux1),其中aux1是{IB,sid,rB,X,Y,RB,pub9}的一个子集,sid是会话标示符,rB是用户“B”的协议角色标示。
第二轮:用户“B”向用户“A”发送{IB,B,Y,auxB,t′B}或{IB,B,Y,auxB,RB,t′B};其中,(IB,B)可替换为用户“B”的公钥证书CERTB.
收到用户“B”发送的信息后,用户“A”检查CERTB的有效性,检查Y∈G′或Y∈G′/1G或Y∈G或Y∈G/1G;若检查不通过,则中止协议运行,返回或不返回出错信息;若检查通过,用户“A”计算c、f和 K B ′ = B t 2 xc Y t 4 xf ∈ G ′ 。用户“B”由K′B导出认证密钥K′,并利用K′检查t′B=FT(R′,aux1)的正确性,若检查不通过(即t′B≠FT(R′,aux1)),则中止协议运行,返回或不返回出错信息;若检查通过(即t′B=FT(R′,aux1)),用户“A”计算 K A = ( B t 2 xc Y t 4 xf ) B t 1 ae Y t 3 ad ∈ G ′ , 其中d=H(auxB,IA,A,Y)或d=H(auxB,IA,A,RB,Y)或d=H(auxA,IA,A,Y)或d=H(auxA,IA,A,RA,Y);e=0或1或H(pub1);其中用户“A”可事先计算X、 B t 2 xc ∈ G ′ , B t 1 ae ∈ G ′ .
用户“A”利用密钥导出函数由KA及{f,c,d,e,X,Y,RA,RB,pub8}的某个子集导出认证密钥k1和会话密钥k2;用户“A”计算tA=FT(k1,aux0),其中aux0是{IA,sid,rA,RA,X,Y,pub10}的一个子集且aux0≠aux1,rA是用户“A”的协议角色标示。用户“A”计算或不计算t′A=FT(K′,aux′0),其中aux′0是{IA,A,tA,sid,rA,X,Y,RA,RB,pub10}的一个子集且aux′0≠aux1
第三轮:用户“A”向用户“B”发送{IA,A,tA,t′A}或{IA,A,tA},其中(IA,A)可替换为用户“A”的公钥证书CERTA
收到用户“A”发送的信息后,若用户“A”在第三轮发送{IA,A,tA,t′A},用户“B”首先利用K′检查t′A=FT(K′,aux′0),若检查不正确用户“B”中止协议运行,返回或不返回出错信息;若t′A=FT(K′,aux′0)用户“B”检查CERTA的有效性;若检查不通过,则中止协议运行,返回或不返回出错信息;若CERTA有效,用户“B”计算 K B = A t 1 be + t 3 yd X t 2 bc + t 4 yf ∈ G ′ , 并利用密钥导出函数由KB及{f,c,d,e,X,Y,RA,RB,pub8}的某个子集导出认证密钥k1和会话密钥k2。用户“B”利用认证密钥k1检查tA=FT(k1,aux0)的正确性,若检查不通过,则中止协议运行,返回或不返回出错信息;若检查通过,进行或不进行第四轮。
第四轮:用户“B”计算并向用户“A”发送{tB},其中tB=FT(k1,aux1),aux1≠aux0
收到用户“B”发送的信息后,用户“A”利用认证密钥k1检查tB的正确性;若检查不通过,则中止协议运行,返回或不返回出错信息。
本发明提出的高效、公平的密交换方法可应用于无公钥证书且在线计算密钥交换方法,具体步骤如下:设ε:GT×GT→G是一个合格的多项式时间可计算的双线性映射;其中GT是一个阶为q的加法或乘法群,
Figure G200810041475XD00112
为其单位元。不失一般性,我们记GT为加法群;记P为GT的生成元。ε:GT×GT→G满足:ε(xP,yP)=ε(P,P)xy ϵ ( P , P ) ≠ 1 G T 。记HT:{0,1}*→GT为一个哈希函数。用户“A”除了公钥A=ga∈G外,另有一个基于身份的公钥QA=HT(IA)或QA=HT(IA,A)或QA=HT(IA,A,P0);用户“B”除了公钥B=gb∈G外,另有一个基于身份的公钥QB=HT(IB)或QB=HT(IB,B)或QB=HT(IB,B,P0);其中,P0=sP∈GT为一个可信的第三方CA的公钥,CA的私钥为s∈Zq。用户“A”除了私钥a之外另有私钥SA=sQA,其中SA=sQA由CA计算并安全地传送给用户“A”。用户“B”除了私钥b之外另有私钥SB=sQB,其中SB=sQB由CA计算并安全地传送给用户“B”。
与本发明的实现方法相比,无公钥证书且在线计算高效的密钥交换方法只有如下不同或变化:
(1).在函数c,d,e,f中的哈希函数的输入中增加或不增加{QA,QB,P0}的一个子集。因为QA由(IA,A)决定,QB由(IB,B)决定,建议函数c,d,e,f输入中不必包含QA或QB
(2).用户“A”利用密钥导出函数由{KA,ε(SA,QB)}及{f,c,d,e,X,Y,pub11}的一个子集导出会话密钥和认证密钥;用户“B”利用密钥导出函数由{KB,ε(SB,QA)}及{f,c,d,e,X,Y,pub11}的一个子集导出会话密钥和认证密钥;其中,ε(SB,QA)=ε(QA,SB)=ε(QA,QB)s=ε(SA,QB),pub11可包含{QA,QB,P0}的一个子集。
一般而言,采用如下方法产生认证密钥k1和会话密钥k2,其中HK是一个哈希函数:
(a).用户“A”计算(k1,k2)←HK(KA,ε(SA,QB),c,d,1)HK(KA,ε(SA,QB),c,d,2)…HK(KA,ε(SA,QB),c,d,i);用户“B”计算(k1,k2)←HK(KB,ε(SB,QA),c,d,1)HK(KB,ε(SB,QA),c,d,2)…HK(KB,ε(SB,QA),c,d,i);其中i≥1由一个计数器来实现,i的取值依赖于(k1,k2)的长度,即直到HK(KA,ε(SA,QB),c,d,1)HK(KA,ε(SA,QB),c,d,2)…HK(KA,ε(SA,QB),c,d,i)的长度大于等于(k1,k2)的长度。设(k1,k2)的长度为l,我们可取(k1,k2)←HK(KA,ε(SA,QB),c,d,1)HK(KA,ε(SA,QB),c,d,2)…HK(KA,ε(SA,QB),c,d,i)的长度为l的前缀或后缀。其中,HK输入中的(c,d)可换为f或(c,d,RA,RB)或(f,RA,RB)。
(b).用户“A”计算k1,←HK(KA,ε(SA,QB),c,d,1)HK(KA,ε(SA,QB),c,d,2)…HK(KA,ε(SA,QB),c,d,i),k2,←HK(c,d,KA,ε(SA,QB),1)HK(c,d,KA,ε(SA,QB),2)…HK(c,d,KA,ε(SA,QB),j);用户“B”计算k1←HK(KB,ε(SB,QA),c,d,1)HK(KB,ε(SB,QA),c,d,2)…HK(KB,ε(SB,QA),c,d,i),k2←HK(c,d,KB,ε(SB,QA),1)HK(c,d,KB,ε(SB,QA),2)…HK(c,d,KB,ε(SB,QA),j);设k1的长度为l1,k2的长度为l2,则计数器i的取值直到哈希函数序列的输出长度大于等于l1,计数器j的取值直到哈希函数序列的输出长度大于等于l2。其中,其中,HK输入中的(c,d)可换为f或(c,d,RA,RB)或(f,RA,RB)。
本发明蕴含如下公平的Diffie-Hellman密钥交换方法:设用户“A”发送DH-密钥成分X=gx∈G′,用户“B”发送DH-密钥成分Y=gy∈G′;用户“A”计算Diffie-Hellman秘密KA=Yxc,用户“B”计算Diffie-Hellman秘密KB=Xyc;其中c=H(X,Y,pub12);一般而言,pub12={IA,A,IB,B,sid}或pub12={IA,IB,sid}或pub12={sid}。
本发明可应用于高效、公平的群密钥交换方法,具体步骤为:设有n个用户U1,U2,…Un,n>2,想建立一个共同的Diffie-Hellman秘密;用户Ui的DH-密钥成分记为 X i = g x i ∈ G ′ , 其中1≤i≤n,xi∈Zq;我们设下标i是modn计算。
对于任意的i mod n,用户Ui计算 Z i = X i - 1 t i x i c i , Z i + 1 = X i + 1 t i + 1 x i c i + 1 T i = Z i + 1 Z i , 其中ci=H(i,Ui-1,Xi-1,Ui,Xi)或ci=H(Ui-1,Xi-1,Ui,Xi),ci+1=H(i+1,Ui,Xi,Ui+1,Xi+1)或ci+1=H(Ui,Xi,Ui+1,Xi+1);Ui将Ti通知给所有其它用户(比如通过广播传输,或公开发表),但可将Xi只通知给Ui-1和Ui+1。为了保证信息传输的完整性,可以使用Katz-Yung在CRYPTO’03或Kata-Shih在CCS’05中所给出的一般性的安全认证和转换方法。
对于任意的i mod n,用户Ui计算Diffie-Hellman秘密:Ki=(Zi)n(Ti)n-1(Ti+1)n-2…(Ti-3)2Ti-2∈G′;会话密钥和认证密钥利用密钥导出函数由Ki及{sid,U1,U2,…,Un,T1,T2,…,Tn}的一个子集导出。
ti=1或
Figure G200810041475XD00131
若对于任意的i mod n,用户Ui检查确认Xi-1,Xi+1均为G或G/1G中的元素,则t1=t2=…tn=1;若对于任意的i mod n,用户Ui仅检查确认Xi-1,Xi+1为G′中的元素,而不能确认为G中的元素,则 t 1 = t 2 = · · · t n = N q , 用户Ui检查确认Zi≠1G,Zi+1≠1G和/或Ki≠1G,若检查不通过则返回出错信息并中止协议运行。
协议变体:权利要求1、2、3、4、5所有实现方法及其应用可应用如下变体的某个子集。一般而言,建议在所有实现方法中均应用变体(1)和/或(5);在所有基于公钥证书的实现方法中均应用变体(2);基于椭圆曲线的实现方法可应用变体(8)。
(1).将哈希函数输入中的(IA,A)替换成(IA,A)的哈希值,并将(IA,A)的哈希值包含在用户“A”的公钥证书中;将哈希函数输入中的(IB,B)替换成(IB,B)的哈希值,并将(IB,B)的哈希值包含在用户“B”的公钥证书中。
(2).公钥证书颁发机构在向用户颁发证书时,检查确认用户注册的公钥为G中的元素或为G/1G中元素;任何检查不通过,证书颁发机构拒绝颁发公钥证书;这样,每个用户只需检查对方用户的公钥证书即可确认对方的公钥为G或G/1G中的元素。
(3).基于口令的变体:本发明的实现方法有如下基于口令的变体;设用户“A””在用户“B”处注册了一个口令w;在所有方法中用户“A”所发送DH-密钥成分X′=XBw或X′=XB-w,或者 X ′ = XB H w ( pub 11 , w )
Figure G200810041475XD00134
或者
Figure G200810041475XD00135
Figure G200810041475XD00136
其中B为用户“B”的公钥,X=gx∈G′,Hw是一个输出长度小于q的长度的哈希函数;收到X′后,用户“B”根据X′的相应计算方式计算出X=X′B-w或X=X′Bw,或者
Figure G200810041475XD00137
Figure G200810041475XD00138
或者
Figure G200810041475XD001310
KA,KB,tA,tB计算仍使用X作为指数下的挑战,但指数上的函数c,d,e,f的输入中的X换为X′;除其它规定的事先离线计算外,用户“B”可事先计算B-1∈G′。
在基于口令的变体中,对DH-密钥成分X是否为G′或G中元素的检查替换为对X′是否为G′或G中元素的检查。
(4).哈希函数的输入中嵌套相同或不同的哈希函数,即:将原哈希函数的输入和嵌套的哈希函数作为一个特殊的有向图的节点,其中原哈希函数的输入代表的节点无扇入,最外层的哈希函数所代表的节点无扇出,每个节点所代表的数值是其扇出节点所代表的哈希函数的输入。
(5).将哈希函数输入的顺序任意变化;和/或,将哈希函数的所有输入换为所有输入的并集,即:重复的元素在输入中只出现一次;和/或,将哈希函数换为任一个输出为整数的函数;和/或,应用在每一处的哈希函数与应用在其它处的哈希函数相同或不同;即,我们使用一组哈希函数{H1,H2,…Hn},其中对于任意的i,j,1≤i,j≤n,i≠j,Hi=Hj或Hi≠Hj,n≥1且n是我们需应用哈希函数的次数的上界。
(6).不同的密钥导出函数:应用在每一处的密钥导出函数与应用在其它处的密钥导出函数相同或不同;即,我们使用一组密钥导出函数{KDF1,KDF2,…KDFn},其中对于任意的i,j,1≤i,j≤n,i≠j,KDFi=KDFj或KDFi≠KDFj,n≥1且n是我们需应用密钥导出函数的次数的上界。
(7).在所有方法中用户“A”检查KA≠1G,用户“B”检查KB≠1G
(8).对于基于椭圆曲线的实现,将密钥导出函数输入中的KA,KB换为KA,KB的x-坐标值或y-坐标值;每个用户检查对方用户的DH-密钥成分的x-坐标和y-坐标是椭圆曲线所基于的有限域中的正确编码的元素。
(9).出错中止和出错信息返回:在所有的方法中,一旦一个用户因检查不通过,即出错,而中止协议,发回或不发回出错信息;在基于口令的实现方法中,客户“A”只允许出错有限次,以防止在线攻击。
(10).会话标示符和用户协议角色标示方法:会话标示符一般由用户“A”和“B”发送的两个随机数或DH-密钥成分以初始者-响应者的顺序串联构成;用户的协议角色标示一般用不同的整数或者由用户“A”和“B”发送的随机数或DH-密钥成分的不同顺序来标示。
(11).在本发明方法和本发明应用于抗拒绝服务攻击保护用户隐私的应用中,用户“A”检查确认Y≠X;若Y=X,用户“A”则中止协议运行。
本发明密钥交换方法具有如下特点:
1.与发明人于2008年7月8日递交的申请号200810040311.5的专利申请书的权利要求-1的实现方法-4相比,本发明申请书的权利要求-1中的实现方法的主要不同在函数c,d,e,f的设置方法不同,有如下特点:
(a).在实现方法-1中,KA,KB的计算仅需要1个哈希运算(这是最优的)。
(b).实现方法-2、3和4中函数c,d,e,f的设置具有如下优点:(1)可以允许用户先发送DH-密钥成分后发送公钥证书。此时,在 K A = B t 1 ae + t 2 xc Y t 3 ad + t 4 xf ∈ G ′ 的计算中,的计算不涉及用户“B”的身份和公钥,因此
Figure G200810041475XD00153
可以在收到用户“B”的身份和公钥之前进行计算。同样,在 K B = A t 1 be + t 3 yd X t 2 bc + t 4 yf ∈ G ′ 的计算中,
Figure G200810041475XD00155
的计算不涉及用户“A”的身份和公钥,因此
Figure G200810041475XD00156
可以在收到用户“A”的身份和公钥之前进行计算。这一方面进一步保护了用户隐私,另一方面又大大便利了KA,KB计算的模块化和并行化。另外,将随机数RA作为函数c的输入,将随机数RB作为函数d的输入,以及将sid作为函数f的输入,亦大大加强了协议的安全性和鲁棒性。
(c).在实现方法-5中,通过在函数c和d输入中分别增加可能不同的auxA和auxB使得函数c和d的输出不同,从而可以有效抵抗重放攻击;通过在函数c和d输入中分别增加随机数RA和RB,在函数f的输入中增加sid,使得用户“A”可在一定的时间内重复使用相同的X,用户“B”可在一定的时间内重复使用相同的Y,而仍然保证KA,KB的随机性。另外,在函数c和d输入中(IA,A)与(IB,B)具有不同的顺序;具体来讲,在函数c输入中的顺序为(IA,A,IB,B),在函数d输入中的顺序为(IB,B,IA,A),这进一步加强了协议的安全性和鲁棒性。还有,函数f的输入中可仅包含(X,Y),这进一步增加了计算的效率、模块性和并行性。
(d).实现方法-6的主要特点是函数c的输入中不包含用户“B”的身份和公钥信息和DH-密钥成分Y的信息,因此用户“A”在知道用户“B”的身份和公钥信息和DH-密钥成分信息之前就可以事先离线计算t2xc,从而提高在线计算效率。同样,函数d的输入中不包含用户“A”的身份和公钥信息和DH-密钥成分X的信息,因此用户“B”在知道用户“A”的身份和公钥信息和DH-密钥成分信息之前就可以事先离线计算t3yd,从而提高在线计算效率。另外,通过在函数c和d输入中分别增加随机数RA和RB以及auxA和auxB,在函数f的输入中增加sid,使得用户“A”可在一定的时间内重复使用相同的X,用户“B”可在一定的时间内重复使用相同的Y,而仍然保证KA,KB的随机性,这增强了协议的安全性,易用性和鲁棒性。
(e).实现方法7特点是:在函数c的输入中不包含用户“B”的公钥和DH-密钥成分信息(但包含用户“B”的身份信息);函数d的输入中不包含用户“A”公钥信息和DH-密钥成分的信息(但包含用户“A”的身份信息)。与实现方法-5相比,这进一步增强了协议的安全性和鲁棒性。另外,用户“A”在知道用户“B”的公钥信息和DH-密钥成分信息之前仍可以事先离线计算t2xc,用户“B”在知道用户“A”的公钥信息和DH-密钥成分信息之前仍可以事先离线计算t3yd。另外,通过在函数c和d输入中分别增加随机数RA和RB以及auxA和auxB,在函数f的输入中增加sid,使得用户“A”可在一定的时间内重复使用相同的X,用户“B”可在一定的时间内重复使用相同的Y,而仍然保证KA,KB的随机性,这增强了协议的安全性,易用性和鲁棒性。
(f).在实现方法-8中,函数c的输入中除不包含用户“B”的公钥和DH-密钥成分信息之外,还不包含用户“A”的身份和公钥信息;函数d的输入中除不包含用户“A”的公钥和DH-密钥成分信息之外,还不包含用户“B”的身份和公钥信息;与实现方法-6相比,这增强协议的计算的效率。另外,通过在函数c和d输入中分别增加随机数RA和RB以及auxA和auxB,在函数f的输入中增加sid,使得用户“A”可在一定的时间内重复使用相同的X,用户“B”可在一定的时间内重复使用相同的Y,而仍然保证KA,KB的随机性,这增强了协议的安全性,易用性和鲁棒性。
(g).实现方法-9是安全性最强的实现方法。其特点为函数c,d,e,f的输入中包含不同的pub值,并且函数c,d,e,f的输入中均可包含所有的DH-密钥成分(X,Y);在函数c和d输入中分别增加随机数RA和RB以及auxA和auxB,在函数f的输入中增加sid。所有这些措施进一步增强了协议的安全性,易用性和鲁棒性。
本发明所给出的密钥交换方法适用于分布式的客户-服务器环境,其中用户“A”作为客户,用户“B”作为服务器。客户“A”可事先知道服务器“B”的公钥;为了保护客户的隐私,只有在服务器“B”已经向客户“A”成功证明了“B”的身份之后,用户“A”才向服务器“B”展示并证明自己的身份;但是,另一方面,服务器“B”要提防拒绝服务攻击,希望在检测到拒绝服务攻击之前做尽量少的计算。
本发明给出的密钥交换方法兼顾了保护客户“A”的隐私保护,和服务器“B”的拒绝服务攻击能力。具体来讲,客户“A”只有在服务器“B”在第二轮成功地证明了用户“B”的身份之后,才在第三轮发送客户“A”的身份和公钥信息;令一方面,服务器“B”只需在第二轮在线做一个指数运算即 K B ′ = X t 2 bc + t 4 yf ∈ G ′ 从而得到认证密钥K′(因为DH-密钥Y可事先计算甚至重复使用),并在第三轮首先检查t′A的有效性从而以一个在线指数计算的代价(而不是计算整个 K B = A t 1 be + t 3 yd X t 2 bc + t 4 yf ∈ G ′ 的代价)检测可能的恶意客户“A”发起的拒绝服务攻击。
本发明给出的无公钥证书的Diffie-Hellman密钥交换方法是目前为止最为高效的无公钥证书的密钥交换方法。其特点为:每个用户只需做一个双线性对计算,并且该双线性对计算可事先离线计算(即在收到对方用户的DH-密钥成分之前事先计算)。在线计算可归约为仅仅一个指数运算,这是最优的(是目前已知的无公钥证书密钥交换方法所无法做到的)。
本发明给出的公平的Diffie-Hellman秘密生成方法具有如下特点:生成的Diffie-Hellman秘密为 K A = K B = g xyH ( X , Y , pub 12 ) (而不是传统的gxy)。这样做的优点在于,在random oracle模型下(即将哈希函数H视作为一个随机函数),诚实的用户“A”能够保证 K A = K B = g xyH ( X , Y , pub 12 ) 是随机分布在gx为生成元的子群中(即便用户“B”是恶意的,即:y可以是用户“B”在Zq中任意选取的值而非随机选取);同样,诚实的用户“B”能够保证 K A = K B = g xyH ( X , Y , pub 12 ) 是随机分布在gy为生成元的子群中(即便用户“A”是恶意的,即:x可以是用户“A”在Zq中任意选取的值而非随机选取)。
5.与Burmester-Desmedt群密钥交换方法以及其它所有基于Burmester-Desmedt方法的群密钥交换方法相比,本发明所给出的方法的主要不同在于:在我们的方法中,用户Ui计算 Z i = X i - 1 t i x i c i , Z i + 1 = X i + 1 t i + 1 x i c i + 1 , 其中ci=H(i,Ui-1,Xi-1,Ui,Xi)或ci=H(Ui-1,Xi-1,Ui,Xi),ci+1=H(i+1,Ui,Xi,Ui+1,Xi+1)或ci+1=H(Ui,Xi,Ui+1,Xi+1);而在Burmester-Desmedt群密钥交换方法中,用户Ui计算 Z i = X i - 1 x i , Z i + 1 = X i + 1 x i . 我们最近注意到,Burmester-Desmed群密钥交换方法是不公平的(同时不安全)。具体来讲,我们发现了Burmester-Desmed方法的目前尚未被发现的新的安全漏洞。使用我们的攻击,诚实用户的贡献将被完全屏蔽。而我们新的群密钥交换方法借鉴了公平Diffie-Hellman密钥交换的思想和方法,可以有效地防止我们所新发现的针对Burmester-Desmedt群密钥交换协议的攻击。
具体实施方式
具有身份IA的用户“A”的公钥是A=ga并具有证书CERTA,具有身份IB的用户“B”的公钥是B=gb并具有证书CERTB。证书颁发机构CA在颁发证书之前,检查确认A∈G/1G和B∈G/1G。我们假设用户“A”为协议运行初始者(initiator),即:先发送DH-密钥成分X=gx∈G;“B”为协议运行响应者(responder),即收到X之后发送DH-密钥成分Y=gy∈G。其中a,x,b,y从Zq中随机选取。
在下述协议具体实施中,消息认证码MAC采用由IETF(Internet Engineering TaskForce)所公布的第2104号互联网意见征求文档(Internet RFC 2104)中所描述的HMAC认证码。HMAC需作两个哈西运算,并被证明既是消息认证码又是伪随机函数。在协议具体实施中,HMAC以及哈西函数H,HK由SHA-1哈西函数来实现。对称加密采用NIST(美国标准与技术局)的标准所规定的AES算法。
实施例1:
事先计算:用户“A”可事先计算X=gx∈G,t=t2=t3=t4=N/q和Btx mod q∈G′,其中N为有限域G′的阶;用户“B”可事先计算Y=gy∈G,t=t2=t3=t4=N/q和Aty mod q∈G′。
第一轮:用户“A”发送{CERTA,X);
收到{CERTA,X}后用户“B”检查CERTA的有效性和X∈G′/1G;任何检查不成功,用户“B”中止协议执行。若检查通过,用户“B”计算f=H(IA,A,IB,B,X,Y),Xt(b+fy)mod q;用户“B”检查确认Xt(b+fy)≠1G,若Xt(b+fy)=1G用户“B”中止协议执行并返回出错信息;若Xt(b+fy)≠1G,用户“B”计算KB=AtyXt(b+fy)∈G′(其中Aty mod q∈G′可事先计算的),计算(k1,k2)←H(KB,f,1)H(KB,f,2)…H(KB,f,f),其中i≥1由一个计数器来实现,i的取值依赖于(k1,k2)的长度,即直到H(KB,f,1)H(KB,f,2)…H(KB,f,i)的长度大于等于(k1,k2)的长度;如果(k1,k2)的长度为l,我们令(k1,k2)为H(KB,f,1)H(KB,f,2)…H(KB,f,i)的长度为l的前缀。
第二轮:用户“B”发送 { CERT B , Y , t B = HMAC k 1 ( 1 ) } ;
收到“B”发送的信息后,用户“A”检查CERTB的有效性和Y∈G′/1G;任何检查不成功,用户“A”中止协议执行并返回出错信息;若检查通过,用户“A”计算f=H(IA,A,IB,B,X,Y),Yt(a+fx)∈G′;用户“A”检查确认Yt(a+fx)≠1G,若Yt(a+fx)=lG用户“A”中止协议执行并返回出错信息;若Yt(a+fx)≠1G,用户“A”计算KA=BtxYt(a+fx)∈G′(其中Btx mod q∈G′可事先计算的)。用户“A”计算(k1,k2)←H(KA,f,1)H(KA,f,2)…H(KA,f,i),其中i≥1由一个计数器来实现,i的取值依赖于(k1,k2)的长度,即直到H(KA,f,1)H(KA,f,2)…H(KA,f,i)的长度大于等于(k1,k2)的长度;如果(k1,k2)的长度为l,我们令(k1,k2)为H(KA,f,1)H(KA,f,2)…H(KA,f,i)的长度为l的前缀。用户“A”检查 t B = HMAC k 1 ( 1 ) , 如果 t B = HMAC k 1 ( 1 ) 则将会话密钥设为k2并进入下一轮,否则(即 t B ≠ HMAC k 1 ( 1 ) ) 中止协议执行并返回出错信息。
第三轮:用户“A”发送 { t A = HMAC k 1 ( 0 ) } .
收到tA后,用户“B”检查 t A = HMAC k 1 ( 0 ) . 如果 t A = HMAC k 1 ( 0 ) 用户“B”将会话密钥设为k2,成功结束协议;否则(即 t A ≠ HMAC k 1 ( 0 ) ),用户“B”中止协议执行并返回出错信息。
实施例2:公钥证书在DH-密钥成分发送之前或同时发送时的具体实施方式:
事先计算:用户“A”可事先计算X=gx∈G,随机数RA,t=t2=t3=t4=N/q;若用户“A”事先知道用户“B”的身份和公钥,则可事先计算c=H(RA,IB,B,X)和Btxc mod q∈G′,其中N为有限域G′的阶;用户“B”可事先计算Y=gy∈G,随机数RB,t=t2=t3=t4=N/q;若用户“B”事先知道用户“A”的身份和公钥,则可事先计算d=H(RB,IA,A,Y)和Atyd mod q∈G′。在具体实施中,用户“A”和“B”可不产生和发送随机数RA和RB(即在下述具体实施中,将RA和RB去掉);或者,只有一个用户(比如用户“B”)发送随机数。
第一轮:用户“A”发送{CERTA,RA,X};
收到{CERTA,RA,X}后用户“B”检查CERTA的有效性和X∈G′/1G,检查RA为规定长度的字符串;任何检查不成功,用户“B”中止协议执行。若检查通过,用户“B”计算f=H(RA,RB,X,Y)、c=H(RA,IB,B,X)和Xt(bc+fy)mod q;用户“B”检查确认Xt(bc+fy)≠1G,若Xt(bc+fy)=1G,用户“B”中止协议执行并返回出错信息;若Xt(bc+fy)≠1G,用户“B”计算KB=AtydXt(bc+fy)∈G′(其中Atyd mod q∈G′可事先计算的),计算计算(k1,k2)←H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i),其中i≥1由一个计数器来实现,i的取值依赖于(k1,k2)的长度,即直到H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i)的长度大于等于(k1,k2)的长度;如果(k1,k2)的长度为l,我们令(k1,k2)为H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i)的长度为l的前缀。
第二轮:用户“B”发送 { CERT B , Y , R B , t B = HMAC k 1 ( 1 ) }
收到“B”发送的信息后,用户“A”检查CERTB的有效性和Y∈G′/1G以及RB为规定长度的字符串;任何检查不成功,用户“A”中止协议执行并返回出错信息;若检查通过,用户“A”计算f=H(RA,RB,X,Y)、d=H(RB,IA,A,Y)和Yt(ad+fx)∈G′;用户“A”检查确认Yt(ad+fx)≠1G,若Yt(ad+fx)=1G,用户“A”中止协议执行并返回出错信息;若Yt(ad+fx)≠1G,用户“A”计算KA=BtxcYt(ad+fx)∈G′(其中Btxc mod q∈G′可事先计算的)。用户“A”计算计算(k1,k2)←H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i),其中i≥1由一个计数器来实现,i的取值依赖于(k1,k2)的长度,即直到H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i)的长度大于等于(k1,k2)的长度;如果(k1,k2)的长度为l,我们令(k1,k2)为H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i)的长度为l的前缀。
用户“A”检查 t B = HMAC k 1 ( 1 ) , 如果 t B = HMAC k 1 ( 1 ) 则将会话密钥设为k2并进入下一轮,否则(即 t B ≠ HMAC k 1 ( 1 ) )中止协议执行并返回出错信息。
第三轮:用户“A”发送 { t A = HMAC k 1 ( 0 ) } .
收到tA后,用户“B”检查 t A = HMAC k 1 ( 0 ) ;如果 t A = HMAC k 1 ( 0 ) 用户“B”将会话密钥设为k2,成功结束协议;否则(即 t A ≠ HMAC k 1 ( 0 ) ),用户“B”中止协议执行并返回出错信息。
实施例3:公钥证书在DH-密钥成分发送同时或之后发送时的具体实施方式:
事先计算:用户“A”可事先计算X=gx∈G,随机数RA,t=t2=t3=t4=N/q;若用户“A”事先知道用户“B”的身份和公钥,则可事先计算c=H(RA,IB,B,X)和Btxc mod q∈G′,其中N为有限域G′的阶;用户“B”可事先计算Y=gy∈G,随机数RB,t=t2=t3=tA=N/q;若用户“B”事先知道用户“A”的身份和公钥,则可事先计算d=H(RB,IA,A,Y)和Atyd mod q∈G′。在具体实施中,用户“A”和“B”可不产生和发送随机数RA和RB(即在下述具体实施中,将RA和RB去掉);或者,只有一个用户(比如用户“B”)发送随机数。
第一轮:用户“A”发送{RA,X};
收到{RA,X}后用户“B”检查X∈G′/1G,检查RA为规定长度的字符串;任何检查不成功,用户“B”中止协议执行。若检查通过,用户“B”或者直接进入进入下一轮(比如,当用户“B”比较忙或感觉遭受拒绝服务攻击时);或者(比如,用户“B”较清闲时),用户“B”计算f=H(RA,RB,X,Y)、c=H(RA,IB,B,X)和Xt(bc+yf)mod q,用户“B”检查确认Xt(bc+fy)≠1G,若Xt(bc+fy)=1G,用户“B”中止协议执行并返回出错信息,若Xt(bc+fy)≠1G,则进入下一轮。
第二轮:用户“B”发送{CERTB,Y,RB}。
收到“B”发送的信息后,用户“A”检查CERTB的有效性和Y∈G′/1G以及RB为规定长度的字符串;任何检查不成功,用户“A”中止协议执行并返回出错信息;若检查通过,用户“A”计算f=H(RA,RB,X,Y)、c=H(RA,IB,B,X)、d=H(RB,IA,A,Y);如果用户“A”已经事先计算Btxc mod q∈G′,则用户“A”计算Yt(ad+fx)∈G′,检查确认Yt(ad+fx)≠1G;若Yt(ad+fx)=1G,用户“A”中止协议执行并返回出错信息,若Yt(ad+fx)≠1G,用户“A”计算KA=BtxcYt(ad+fx)∈G′。如果用户“A”无事先计算Btxc mod q∈G′,则用户“A”计算KA=BtxcYt(ad+fx)∈G′,检查确认KA≠1G,若KA=1G,用户“A”中止协议执行并返回出错信息。用户“A”计算(k1,k2)←H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i),其中i≥1由一个计数器来实现,i的取值依赖于(k1,k2)的长度,即直到H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i)的长度大于等于(k1,k2)的长度;如果(k1,k2)的长度为l,我们令(k1,k2)为H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i)的长度为l的前缀。
第三轮:用户“A”计算并发送 { CERT A , t A = HMAC k 1 ( 0 ) }
收到用户“A”发送的信息后,用户“B”首先检查CERTA的有效性,若无效则中止协议运行;若检查通过:
(a).若用户“B”已计算Xt(bc+fy)mod q并检查确认Xt(bc+fy)≠1G,则用户“B”计算d=H(RB,IA,A,Y)和KB=AtydXt(bc+fy)∈G′。
(b).若用户“B”尚未计算Xt(bc+fy)mod q,则用户“B”计算d=H(RB,IA,A,Y)、f=H(RA,RB,X,Y)、c=H(RA,IB,B,X)和KB=AtydXt(bc+fy)∈G′。用户“B”检查确认KB≠1G,若KB=1G,用户“B”中止协议执行并返回出错信息。
用户“B”计算(k1,k2)←H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i),其中i≥1由一个计数器来实现,i的取值依赖于(k1,k2)的长度,即直到H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i)的长度大于等于(k1,k2)的长度;如果(k1,k2)的长度为l,我们令(k1,k2)为H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i)的长度为l的前缀。
用户“B”检查 t A = HMAC k 1 ( 0 ) ;如果 t A = HMAC k 1 ( 0 ) 用户“B”将会话密钥设为k2,并进入下一轮;否则(即 t A ≠ HMAC k 1 ( 0 ) ),用户“B”中止协议执行并返回出错信息。
第四轮:用户“B”发送 { t B = HMAC k 1 ( 1 ) } .
收到tB后,用户“A”检查 t B = HMAC k 1 ( 1 ) ; 如果 t B = HMAC k 1 ( 1 ) 用户“A”将会话密钥设为k2,成功结束协议;否则(即 t B ≠ HMAC k 1 ( 1 ) ),用户“A”中止协议执行并返回出错信息。
(注:在上述具体实施中,用户“B”也可在第四轮发送自己的公钥证书和tB,用户“A”在额外的第五轮发送tA。)
实施例4:
事先计算:用户“A”可事先计算X=gx∈G,随机数RA,t=t2=t3=t4=N/q;若用户“A”事先知道用户“B”的身份和公钥,则可事先计算c=H(0,RA,IA,A,IB,B,X)和Btxc mod q∈G′,其中N为有限域G′的阶;用户“B”可事先计算Y=gy∈G,随机数RB,t=t2=t3=t4=N/q;若用户“B”事先知道用户“A”的身份和公钥,则可事先计算d=H(1,RB,IB,B,IA,A,Y)和Atyd mod q∈G′。
在具体实施中,用户“A”和“B”可不产生和发送随机数RA和RB(即在下述具体实施中,将RA和RB去掉);或者,只有一个用户(比如用户“B”)发送随机数。在具体实施中,也可将函数c输入中的0和/或函数d输入中的1去掉。
第一轮:用户“A”发送{CERTA,RA,X};
收到{CERTA,X}后用户“B”检查CERTA的有效性和X∈G′/1G,检查RA为规定长度的字符串;任何检查不成功,用户“B”中止协议执行。若检查通过,用户“B”计算c=H(0,RA,IA,A,IB,B,X)、f=H(c,d)、和Xt(bc+fy)mod q;用户“B”检查确认Xt(bc+fy)≠1G,若Xt(bc+fy)=1G,用户“B”中止协议执行并返回出错信息;若Xt(bc+fy)≠1G,用户“B”计算KB=AtydXt(bc+fy)∈G′(其中Atyd mod q∈G′可事先计算的),计算(k1,k2)←H(KB,f,1)H(KB,f,2)…H(KB,f,i),其中i≥1由一个计数器来实现,i的取值依赖于(k1,k2)的长度,即直到H(KB,f,1)H(KB,f,2)…H(KB,f,i)的长度大于等于(k1,k2)的长度;如果(k1,k2)的长度为l,我们令(k1,k2)为H(KB,f,1)H(KB,f,2)…H(KB,f,i)的长度为l的前缀。
第二轮:用户“B”发送 { CERT B , Y , R B , t B = HMAC k 1 ( 1 ) } ;收到“B”发送的信息后,用户“A”检查CERTB的有效性和Y∈G′/1G以及RB为规定长度的字符串;任何检查不成功,用户“A”中止协议执行并返回出错信息;若检查通过,用户“A”计算d=H(1,RB,IB,B,IA,A,Y)、f=H(c,d)、和Yt(ad+fx)∈G′;用户“A”检查确认Yt(ad+fx)≠1G,若Yt(ad+fx)=1G,用户“A”中止协议执行并返回出错信息;若Yt(ad+fx)≠1G,用户“A”计算KA=BtxcYt(ad+fx)∈G′(其中Btxc mod q∈G′可事先计算的)。用户“A”计算(k1,k2)←H(KA,f,1)H(KA,f,2)…H(KA,f,i),其中i≥1由一个计数器来实现,i的取值依赖于(k1,k2)的长度,即直到H(KA,f,1)H(KA,f,2)…H(KA,f,i)的长度大于等于(k1,k2)的长度;如果(k1,k2)的长度为l,我们令(k1,k2)为H(KA,f,1)H(KA,f,2)…H(KA,f,i)的长度为l的前缀。用户“A”检查 t B = HMAC k 1 ( 1 ) , 如果 t B = HMAC k 1 ( 1 ) 则将会话密钥设为k2并进入下一轮,否则(即 t B ≠ HMAC k 1 ( 1 ) )中止协议执行并返回出错信息。
第三轮:用户“A”发送 { t A = HMAC k 1 ( 0 ) } . 收到tA后,用户“B”检查 t A = HMAC k 1 ( 0 ) ; 如果 t A = HMAC k 1 ( 0 ) 用户“B”将会话密钥设为k2,成功结束协议;否则(即 t A ≠ HMAC k 1 ( 0 ) ),用户“B”中止协议执行并返回出错信息。
实施例5:
事先计算:用户“A”可事先计算X=gx∈G,随机数RA,t=t2=t3=t4=N/q;若用户“A”事先知道用户“B”的身份和公钥,则可事先计算c=H(RA,IB,B,X)和Btxc mod q∈G′,其中N为有限域G′的阶;用户“B”可事先计算Y=gy∈G,随机数RB,t=t2=t3=t4=N/q;若用户“B”事先知道用户“A”的身份和公钥,则可事先计算d=H(RB,IA,A,Y)和Atyd mod q∈G′。在具体实施中,用户“A”和“B”可不产生和发送随机数RA和RB(即在下述具体实施中,将RA和RB去掉);或者,只有一个用户(比如用户“B”)发送随机数。
第一轮:用户“A”发送{RA,X};
收到{RA,X)后用户“B”检查X∈G′/1G,检查RA为规定长度的字符串;任何检查不成功,用户“B”中止协议执行。若检查通过,用户“B”计算f=H(RA,RB,X,Y)、c=H(RA,IB,B,X)和K′B=Xt(bc+yf)mod q,用户“B”检查确认Xt(bc+fy)≠1G,若Xt(bc+fy)=1G,用户“B”中止协议执行并返回出错信息;若Xt(bc+fy)≠1G,用户“B”计算K′←H(KA,f,c,1)H(KA,f,c,2)…H(KA,f,c,i),其中i≥1由一个计数器来实现,i的取值依赖于K′的长度,即直到H(KA,f,c,1)H(KA,f,c,2)…H(KA,f,c,i)的长度大于等于K′的长度;如果K′的长度为l′,我们令K′为H(KA,f,c,1)H(KA,f,c,2)…H(KA,f,c,i)的长度为,l′的前缀。
第二轮:用户“B”发送{CERTB,Y,RB,t′B=HMACK′(1)}。
收到“B”发送的信息后,用户“A”检查CERTB的有效性和Y∈G′/1G以及RB为规定长度的字符串;任何检查不成功,用户“A”中止协议执行并返回出错信息;若检查通过,用户“A”计算d=H(RB,IA,A,Y)、f=H(RA,RB,X,Y)、并做如下计算:
(a).若用户“A”已经事先计算Btxc,则用户“A”计算Ytxf∈G′;用户“A”检查确认Ytxf≠1G,若Ytxf=1G则中止协议运行;若Ytxf≠1G用户“A”计算K′B=BtxcYtxf∈G′;
(b).若用户“A”无事先计算Btxc,则用户“A”计算K′B=BtxcYtxf∈G′;用户“A”检查确认K′B≠1G,若K′B=1G则中止协议运行;
用户“A”计算K′←H(KA,f,c,1)H(KA,f,c,2)…H(KA,f,c,i),其中i≥1由一个计数器来实现,i的取值依赖于K′的长度,即直到H(KA,f,c,1)H(KA,f,c,2)…H(KA,f,c,i)的长度大于等于K′的长度;如果K′的长度为,l′,我们令K′为H(KA,f,c,1)H(KA,f,c,2)…H(KA,f,c,i)的长度为l′的前缀。
用户“A”检查确认t′B=HMACK′(1),若检查不通过(即t′B≠HMACK′(1))则中止协议运行。若检查通过,用户“A”计算Ytad∈G′;若K′B是在上述情形(b)生成,用户“A”检查确认Ytad≠1G,若Ytad=1G则中止协议运行。用户“A”计算KA=K′BYtad∈G′计算(k1,k2)←H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i),其中i≥1由一个计数器来实现,i的取值依赖于(k1,k2)的长度,即直到H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i)的长度大于等于(k1,k2)的长度;如果(k1,k2)的长度为l,我们令(k1,k2)为H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i)的长度为l的前缀。
用户“A”计算 t A = HMAC k 1 ( 0 ) , 计算t′A=HMACK′(sid,IA,tA),其中sid=(RA,RB)或sid=RB或sid=(X,Y)或sid=Y。
用户“A”将k2设为会话密钥,并进入下一轮。
第三轮:用户“A”向用户“B”发送{CERTA,tA,t′A}。
收到用户“A”发送的信息后,用户“B”首先利用K′检查t′A=HMACK′(sid,IA,tA);若检查不正确(即t′A≠HMACK′(sid,IA,tA))用户“B”中止协议运行,返回或不返回出错信息。若t′A=HMACK′(sid,IA,tA),用户“B”检查CERTA的有效性,若检查不通过,则中止协议运行,返回或不返回出错信息;若CERTA有效,用户“B”计算d=H(RB,IA,A,Y)、KB=AtydK′B∈G′用户“B”计算(k1,k2)←H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i),其中i≥1由一个计数器来实现,i的取值依赖于(k1,k2)的长度,即直到H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i)的长度大于等于(k1,k2)的长度;如果(k1,k2)的长度为l,我们令(k1,k2)为H(KA,c,d,1)H(KA,c,d,2)…H(KA,c,d,i)的长度为l的前缀。
用户“B”检查确认 t A = HMAC k 1 ( 0 ) , 若检查不通过(即 t A ≠ HMAC k 1 ( 0 ) )用户“B”中止协议运行;若检查通过(即 t A = HMAC k 1 ( 0 ) ),用户“B”将k2设为会话密钥并成功结束会话。

Claims (3)

1.一类高效、公平的密钥交换方法,其特征在于:
系统工作环境为:
(1).系统参数:(G′,G,g,q),其中G′是一个阶为N的有限群,G为G′中阶为q的子群,g为G的生成元,使得定义在G上的离散对数问题是难的;用乘法来表示G′中元素的操作,将G、G′中的单位元记为1G,G′/1G表示的是由G′减去单位元1G之后其它元素的集合,即G′中的非1G元素;记G/1G为G中的非1G元素;不失一般性,指数运算和不在指数上的乘法运算的结果是G′或G中的一个元素,指数上的加法和/或乘法运算是模q计算;对于任一元素X∈G′,记X-1为X的相对于G′的逆元,即:XX-1=1G
(2).H是一个哈希函数;对于字符串或数值s1,s2,…sm,m>1,H(s1,s2,…sm)表示的是:将s1,s2,…,sm,用合适编码表示,然后将所有的编码顺序连接串联起来,最后将串联后得到的串作为H的输入;不失一般性,设H的输出是Zq={0,1,2,…,q-1}中的元素,否则取H的输出的一个属于Zq的子串或对H的输出进行模q计算;若s1,s2,…,sm是m个字符串,S1,S2,…Sn是n个集合,Φ为空集合,1≤n,m,则{s1,s2,…,sm,Φ,S1,S2,…,Sn}表示的是{s1,s2,…,sm}∪S1∪S2∪…∪Sn,其中大括号内的元素顺序可以任意变化;H(s1,s2,…,sm,Φ,S1,S2,…,Sn)表示的是将s1,s2,…sm及S1∪S2∪…∪Sn-{s1,s2,…,sm}中的元素用合适编码表示,然后将所有的编码串顺序连接串联起来,最后将串联后得到的串作为H的输入;若Φ为空值,则H(s1,Φ,s2)=H(s1,s2),{s1,Φ,s2}={s1,s2};
(3).具有身份IDIA的用户“A”有一个公钥A=ga∈G,其中a由用户“A”在Zq={0,1,2,…,q-1}中随机选取;相应地,具有IDIB的用户“B”的公钥记为B=gb∈G,以此类推;其中IA为用户“A”的身份信息或用户名,IB为用户“B”的身份信息或用户名;对于任一元素x∈Zq,记-x为x的相对于Zq的负元,即:x+(-x)=0modq;
(4).协议基于Diffie-Hellman密钥交换协议;记X=gx∈G为用户“A”的DH密钥成分,x为DH密钥成分X的离散对数,x由用户“A”从Zq={0,1,…,q-1}中随机选取或从Zq={0,1,…,q-1}的奇数子集中随机选取;记Y=gy∈G为用户“B”的DH密钥成分,y为DH密钥成分Y的离散对数,y由用户“B”从Zq={0,1,…,q-1}中随机选取或从Zq={0,1,…,q-1}的奇数子集中随机选取;假设用户“A”为协议的发起者,用户“B”为协议的响应者;即:用户“A”先发送X;在收到X后用户“B”再发送Y;在基于口令的实现方法中,客户“A”发送的DH-密钥成分为X′=gxBβ=XBβ∈G′;
(5).协议会话标示符sid:sid用于标示同一协议的不同的并发运行会话;sid是协议双方相互交换的两个随机数的串联,即:sid=RA||RB,其中RA是一个由用户“A”发送的随机数,RB是一个由用户“B”发送的随机数,“||”表示的是字符串联结符;在客户服务器环境中,sid可直接设置为服务器发送的随机数或计数器数值;或者,sid直接由DH-密钥成分来定义,即将RA换为X将RB换为Y;
(6).与协议执行相关的其它信息pub1,pub2,…pubk,k≥1:对于任意的i,1≤i≤k,pubi是除DH-密钥成分X=gx或X′,Y=gy之外的其它与协议执行相关的信息的一个子集或序列,可为空或含重复元素;其它与协议执行相关的信息包括:用户即协议初始者与响应者的身份信息或用户名、协议初试者和响应者的角色标示、公钥及公钥证书信息、IP地址,协议版本,安全参数和密钥参数,协议的会话标示符,时间戳,cookie,任意数值,以及除DH-密钥成分外的协议会话传输的其它信息;在不同的实现方法中,pubi的取值可不同;对于任意的i,j,i≠j,pubi等于或不等于pubj;pubi包含协议初始者与响应者的公钥与身份或用户名信息,即
Figure A2008100414750003C1
Figure A2008100414750003C2
(7).密钥导出函数KDF:KDF(S,aux)是一个密钥导出函数,其中S是一个数值或数值的集合,aux是一个数值字符串集合或计数器;KDF是一个哈希函数或哈希函数序列,或是一个以S为随机种子的伪随机函数;会话密钥和认证密钥可由同一个密钥导出函数在相同的输入上导出;或者,会话密钥和认证密钥由同一个密钥导出函数在不同的输入上分别导出;或者,会话密钥的导出函数与认证密钥的导出函数不同,而它们的输入相同或不同;
(8).标签认证函数FT(K,U),其中K为一个秘密数值或秘密数值的集合,U为一个集合;标签认证函数FT(K,U)为任何满足如下性质的函数:①不能够从FT(K,U)在K的长度的多项式时间内求出K,即:相对于输入K,函数FT是单向的;②给定FT(K,U),不能够在K的长度的多项式时间内计算出FT(K,U′)或FT(K,U′)使得U≠U′;FT是一个单向哈希函数;或者FT是一个消息认证码MAC函数,其中MAC的私钥由K、U导出而认证的信息是U的一个子集;
假设协议运行送方有某种机制协商上述参数、函数、算法,用户角色标示及会话标示符号的表示方法等,以及运行以下任一实现方法,并达成一致;协商所交互的信息的一个子集可包含在pubi,1≤i≤k中;在申请方法中进行的对各种元素的检查确认是一次性的,即:一旦确认正确,则在本次会话的后续运行中不在检查;
实现方法:设用户“A”有离散对数公钥A=ga并发送DH-密钥成分X=gx,且用户“B”有离散对数公钥B=gb并发送DH-密钥成分Y=gy;记CERTA为用户“A”的公钥证书,CERTB为用户“B”的公钥证书;根据实现方法的不同,用户公钥证书的发送在发送DH-密钥成分之前、或发送DH-密钥成分的同时、或发送DH-密钥成分之后;用户“A”发送或不发送随机数RA,用户“B”发送或不发送随机数RB;auxA和auxB要么均为空值或相同的值或字符串,或者auxA和auxB为任意数值或字符串并且auxA≠auxB
密钥交换方法的核心和特征是构建两个函数KA和KB使得KA(a,x,B,Y,pub)=KB(b,y,A,X,pub);KA和KB的计算如下:用户“A”计算用户“B”计算
Figure A2008100414750004C2
其中,ti=1或
Figure A2008100414750004C3
1≤i≤4;用户“A”事先计算X和
Figure A2008100414750004C4
用户“B”可事先计算Y和
Figure A2008100414750004C5
实现方法的关键是函数c,d,e,f的不同设置和实现方法:
实现方法-(1):c=d=1;e=0或e=1或e=H(pub1);f=H(IA,A,IB,B,X,Y)或f=H(sid,IA,A,IB,B,X,Y)或f=H(pub2,X,Y);
实现方法-(2):c=H(auxA,IB,B,X)或c=H(auxA,RA,IB,B,X);d=H(auxB,IA,A,Y)或d=H(auxB,RB,IA,A,RB,Y);e=0或1或H(pub1);f=H(X,Y)或f=H(sid,X,Y)f=H(pub2,X,Y);
对于实现方法-(2),用户先交换DH-密钥成分,后交换公钥证书;或者用户“B”在发送Y的同时发送公钥证书;此时,用户“B”先计算
Figure A2008100414750004C6
用户“A”先计算 Y t 3 ad + t 4 xf ∈ G ′ ;
实现方法-(3):c=H(auxB,IB,B,X)或c=H(auxB,IB,B,RB,X);d=H(auxA,IA,A,Y)或d=H(auxA,IA,A,RA,Y);e=0或1或H(pub1);f=H(X,Y)或f=H(sid,X,Y)f=H(pub2,X,Y);
对于实现方法-(3),用户先交换DH-密钥成分,后交换公钥证书;用户“B”在发送Y的同时发送公钥证书;此时,用户“B”先计算用户“A”先计算
Figure A2008100414750004C9
实现方法-(4):c=H(auxA,IB,B,X)或c=H(auxA,IB,B,RA,X)或c=H(auxB,IB,B,X)或c=H(auxB,IB,B,RB,X);d=H(auxB,IA,A,Y)或d=H(auxB,IA,A,RB,Y)或d=H(auxA,IA,A,Y)或d=H(auxA,IA,A,RA,Y);e=0或1或H(pub1);f=H(IA,A,IB,B,X,Y)或f=H(sid,IA,A,IB,B,X,Y)或f=H(c,d)或f=H(c,Y)或f=H(d,X)或f=H(IA,IB,X,Y)或f=H(sid,IA,IB,X,Y);
实现方法-(5):c=H(auxA,IA,A,IB,B,X)或
c=H(auxA,IA,A,RA,IB,B,X);d=H(auxB,IB,B,IA,A,Y)或
d=H(auxB,IB,B,RB,IA,A,Y);e=0或1或H(pub1);f=H(X,Y)或f=H(sid,X,Y)或
f=H(IA,A,IB,B,X,Y)或f=H(sid,IA,A,IB,B,X,Y)或f=H(c,d)或f=H(c,Y)或
f=H(d,X)或f=H(IA,IB,X,Y)或f=H(sid,IA,IB,X,Y)或f=H(pub2,X,Y);
实现方法-(6):c=H(auxA,IA,A,X)或c=H(auxA,IA,A,RA,X),d=H(auxB,IB,B,Y)或d=H(auxB,IB,B,RB,Y),e=0或1或H(pub1),f=H(IA,A,IB,B,X,Y)或f=H(sid,IA,A,IB,B,X,Y)或f=H(c,d)或f=H(c,Y)或f=H(d,X);
实现方法-(7):c=H(auxA,IA,A,IB,X)或c=H(auxA,IA,A,RA,IB,X),d=H(auxB,IB,B,IA,Y)或d=H(auxB,IB,B,RB,IA,Y),e=0或1或H(pub1),f=H(X,Y)或f=H(sid,X,Y)或f=H(IA,A,IB,B,X,Y)或f=H(sid,IA,A,IB,B,X,Y)或f=H(c,d)或f=H(c,Y)或f=H(d,X)或f=H(IA,IB,X,Y)或f=H(sid,IA,IB,X,Y)或f=H(pub2,X,Y);
实现方法-(8):c=H(auxA,IB,X)或c=H(auxA,IA,IB,X)或c=H(auxA,RA,IB,X)或c=H(auxA,IA,RA,IB,X),d=H(auxB,IA,Y)或d=H(auxB,IB,IA,Y)或d=H(auxB,RB,IA,Y)或d=H(auxB,IB,RB,IA,Y),e=0或1或H(pub1),f=H(X,Y)或f=H(sid,X,Y)或f=H(IA,A,IB,B,X,Y)或f=H(sid,IA,A,IB,B,X,Y)或f=H(c,d)或f=H(c,Y)或f=H(d,X)或f=H(IA,IB,X,Y)或f=H(sid,IA,IB,X,Y)或f=H(pub2,X,Y);
实现方法-(9):c=H(auxA,pub3,X)或c=H(pub4,X,Y)或c=1,d=H(auxB,pub5,Y)或d=H(pub6,X,Y)或d=1;e=0或1或H(pub1)或H(pub1,X,Y)或H(pub1,X)或H(pub1,Y),f=H(pub7,X,Y)或f=H(sid,X,Y)或f=H(c,d)或f=H(c,Y)或f=1或f=0;其中,若c=1和/或d=1,则f不可为0或1;pub4和pub7不相同,pub6和pub7不相同;
ti,1≤i≤4,设置方法:(1).若用户“A”检查确认B∈G,Y∈G,用户“B”检查确认A∈G,X∈G,则令t1=t2=t3=t4=1;(2).若用户“A”仅检查确认B∈G,X∈G′或X∈G′/1G,而不能确认X∈G,用户“B”仅检查确认A∈G,Y∈G′或Y∈G′/1G,而不能确认Y∈G,且x和/或y会泄露,则令
Figure A2008100414750005C1
用户“B”检查确认
Figure A2008100414750006C1
Figure A2008100414750006C2
或KB≠1G,用户“A”检查确认
Figure A2008100414750006C4
或KA≠1G;若x,y均不会泄露,仍同(1)可设t1=t2=t3=t4=1;任何检查不通过,则中止协议运行,返回或不返回出错信息;
会话密钥和认证密钥导出方法:利用密钥导出函数由KA=KB及{f,c,d,e,X,Y,pub8}的某个子集导出认证密钥k1和会话密钥k2
认证方法:记导出的认证密钥为k1,为向用户“A”证明其知道R′,用户“B”利用标签认证函数FT计算并发送tB=FT(k1,aux1),其中aux1是{IB,sid,rB,X,Y,pub9}的一个子集,sid是会话标示符,rB是用户“B”的协议角色标示;用户“A”利用认证密钥k1检查tB正确性,若不正确,则中止协议执行,返回或不返回出错信息;为向用户“B”证明其的确知道k1,用户“A”在收到tB并验证tB的正确性后,计算并向用户“B”发送tA=FT(k1,aux0),其中aux0是{IA,sid,rA,X,Y,pub10}的一个子集且aux0≠aux1,rA是用户“A”的协议角色标示;用户“B”利用认证密钥R′检查tA正确性,若不正确,则中止协议执行,返回或不返回出错信息。
2.如权利要求1所述的高效、公平的密钥交换方法的应用,其特征在于应用于抗拒绝服务攻击,且保护用户隐私,具体步骤如下:
设用户“A”有离散对数公钥A=ga并发送DH-密钥成分X=gx,用户“B”有离散对数公钥B=gb并发送DH-密钥成分Y=gy;记CERTA为用户“A”的公钥证书,CERTB为用户“B”的公钥证书;用户“A”发送或不发送随机数RA,用户“B”发送或不发送随机数RB;auxA和auxB均为空值或相同的值或字符串,或者auxA和auxB为任意数值或字符串并且auxA≠auxB
ti=1或1≤i≤4;其设置方法为:(1).若用户“A”检查确认B∈G,Y∈G,用户“B”检查确认A∈G,X∈G,则令t1=t2=t3=t4=1;(2).若用户“A”仅检查确认B∈G,X∈G′或X∈G′/1G,而不能确认X∈G,用户“B”仅检查确认A∈G,Y∈G′或Y∈G′/1G,而不能确认Y∈G,且x和/或y会泄露,则令用户“B”检查确认用户“A”检查确认
Figure A2008100414750006C8
和/或
Figure A2008100414750006C9
和/或
Figure A2008100414750006C10
若x,y均不会泄露,仍同(1)可设t1=t2=t3=t4=1;任何检查不通过,则中止协议运行,返回或不返回出错信息;
第一轮:用户“A”向用户“B”发送{X,auxA}或{X,auxA,RA};
收到“A”发送的信息后,用户“A”检查X∈G′或X∈G′/1G或X∈G或X∈G/1G;若检查不通过,则中止协议运行,返回或不返回出错信息;若检查通过,用户“B”计算Y,
Figure A2008100414750007C1
其中,c=H(auxA,IB,B,X)或c=H(auxA,IB,B,RA,X)或c=H(auxB,IB,B,X)或c=H(auxB,IB,B,RB,X);f=H(X,Y)或f=H(sid,X,Y)f=H(pub2,X,Y);其中,用户“B”可事先计算Y、c和t2bc;用户“B”利用密钥导出函数由K′B及{f,c,X,Y,sid,RA,RB,pub8}的一个子集导出认证密钥K′;用户“B”利用标签认证函数FT计算t′B=FT(K′,aux1),其中aux1是{IB,sid,rB,X,Y,RB,pub9}的一个子集,sid是会话标示符,rB是用户“B”的协议角色标示;
第二轮:用户“B”向用户“A”发送{IB,B,Y,auxB,t′B}或{IB,B,Y,auxB,RB,t′B};其中,(IB,B)替换为用户“B”的公钥证书CERTB
收到用户“B”发送的信息后,用户“A”检查CERTB的有效性,检查Y∈G′或Y∈G′/1G或Y∈G或Y∈G/1G;若检查不通过,则中止协议运行,返回或不返回出错信息;若检查通过,用户“A”计算c、f和
Figure A2008100414750007C2
用户“B”由K′B导出认证密钥K′,并利用K′检查t′B=FT(R′,aux1)的正确性,若检查不通过,则中止协议运行,返回或不返回出错信息;若检查通过,用户“A”计算
Figure A2008100414750007C3
其中d=H(auxB,IA,A,Y)或d=H(auxB,IA,A,RB,Y)或d=H(auxA,IA,A,Y)或d=H(auxA,IA,A,RA,Y);e=0或1或H(pub1);其中用户“A”事先计算X、
Figure A2008100414750007C5
用户“A”利用密钥导出函数由KA及{f,c,d,e,X,Y,RA,RB,pub8}的某个子集导出认证密钥k1和会话密钥k2;用户“A”计算tA=FT(k1,aux0),其中aux0是{IA,sid,rA,RA,X,Y,pub10}的一个子集且aux0≠aux1,rA是用户“A”的协议角色标示;用户“A”计算或不计算t′A=FT(K′,aux′0),其中aux′0是{IA,A,tA,sid,rA,X,Y,RA,RB,pub10}的一个子集且aux′0≠aux1;
第三轮:用户“A”向用户“B”发送{IA,A,tA,t′A}或{IA,A,tA},其中(IA,A)替换为用户“A”的公钥证书CERTA
收到用户“A”发送的信息后,若用户“A”在第三轮发送{IA,A,TA,t′A},用户“B”首先利用K′检查t′A=FT(K′,aux′0),若检查不正确用户“B”中止协议运行,返回或不返回出错信息;若t′A=FT(K′,aux′0),用户“B”检查CERTA的有效性,若检查不通过,则中止协议运行,返回或不返回出错信息;若CERTA有效,用户“B”计算
Figure A2008100414750007C6
并利用密钥导出函数由KB及{f,c,d,e,X,Y,RA,RB,pub8}的某个子集导出认证密钥k1和会话密钥k2;用户“B”利用认证密钥k1检查tA=FT(k1,aux0)的正确性,若检查不通过,则中止协议运行,返回或不返回出错信息;若检查通过,进行或不进行第四轮;
第四轮:用户“B”计算并向用户“A”发送{tB},其中tB=FT(k1,aux1),aux1≠aux0
收到用户“B”发送的信息后,用户“A”利用认证密钥R′检查tB的正确性;若检查不通过,则中止协议运行,返回或不返回出错信息。
3.如权利要求1所述的高效、公平的密钥交换方法的应用,其特征在于应用于无公钥证书且在线计算高效的密钥交换方法,具体步骤如下:
设ε:GT×GT→G是一个合格的多项式时间可计算的双线性映射;其中GT是一个阶为q的加法或乘法群,
Figure A2008100414750008C1
为其单位元;不失一般性,记GT为加法群;记P为GT的生成元;ε:GT×GT→G满足:ε(xP,yP)=ε(P,P)xy记HT:{0,1}→GT为一个哈希函数;用户“A”除了公钥A=ga∈G外,另有一个基于身份的公钥QA=HT(IA)或QA=HT(IA,A)或QA=HT(IA,A,P0);用户“B”除了公钥B=gb∈G外,另有一个基于身份的公钥QB=HT(IB)或QB=HT(IB,B)或QB=HT(IB,B,P0);其中,P0=sP∈GT为一个可信的第三方CA的公钥,CA的私钥为s∈Zq;用户“A”除了私钥a之外另有私钥SA=sQA,其中SA=sQA由CA计算并安全地传送给用户“A”;用户“B”除了私钥b之外另有私钥SB=sQB,其中SB=sQB由CA计算并安全地传送给用户“B”。
4.根据权利要求1所述的高效、公平的密钥交换方法,其特征在于含有公平的Diffie-Hellman密钥交换方法:
设用户“A”发送DH-密钥成分X=gx∈G′,用户“B”发送DH-密钥成分Y=gy∈G′;用户“A”计算Diffie-Hellman秘密KA=Yxc,用户“B”计算Diffie-Hellman秘密KB=Xyc;其中c=H(X,Y,pub12)。
5.如权利要求4所述的高效、公平的密钥交换方法的应用,其特征在于该方法采用公平的Diffie-Hellman密钥交换方法应用于高效、公平的群密钥交换方法,具体步骤如下:
设有n个用户U1,U2,…Un,n>2,想建立一个共同的Diffie-Hellman秘密;用户Ui的DH-密钥成分记为
Figure A2008100414750008C3
其中1≤i≤n,xi∈Zq;我们设下标i是modn计算;
对于任意的imodn,用户Ui计算
Figure A2008100414750008C4
Figure A2008100414750008C5
Figure A2008100414750008C6
其中ci=H(i,Ui-1,Xi-1,Ui,Xi)或ci=H(Ui-1,Xi-1,Ui,Xi),ci+1=H(i+1,Ui,Xi,Ui+1,Xi+1)或ci+1=H(Ui,Xi,Ui+1,Xi+1);Ui将Ti通知给所有其它用户,但可将Xi只通知给Ui-1和Ui+1
对于任意的imodn,用户Ui计算Diffie-Hellman秘密:Ki=(Zi)n(Ti)n-1(Ti+1)n-2…(Ti-3)2Ti-2∈G′;会话密钥和认证密钥利用密钥导出函数由Ki及{sid,U1,U2,…,Un,T1,T2,…,Tn}的一个子集导出;
ti=1或
Figure A2008100414750009C1
若对于任意的imodn,用户Ui检查确认Xi-1,Xi+1均为G或G/1G中的元素,则t1=t2=…tn=1;若对于任意的imodn,用户Ui仅检查确认Xi-1,Xi+1为G′中的元素,而不能确认为G中的元素,则
Figure A2008100414750009C2
用户Ui检查确认Zi≠1G,Zi+1≠1G和/或Ki≠1G,若检查不通过则返回出错信息并中止协议运行。
6.如权利要求1-5之一所述的高效、公平的密钥交换方法及其应用,其特征在于应用于变体的某个子集,具体步骤如下:
(1).将哈希函数输入中的(IA,A)替换成(IA,A)的哈希值,并将(IA,A)的哈希值包含在用户“A”的公钥证书中;将哈希函数输入中的(IB,B)替换成(IB,B)的哈希值,并将(IB,B)的哈希值包含在用户“B”的公钥证书中;
(2).公钥证书颁发机构在向用户颁发证书时,检查确认用户注册的公钥为G中的元素或为G/1G中元素;任何检查不通过,证书颁发机构拒绝颁发公钥证书;这样,每个用户只需检查对方用户的公钥证书即可确认对方的公钥为G或G/1G中的元素;
(3).基于口令的变体:权利要求1、2的实现方法有如下基于口令的变体;设用户“A””在用户“B”处注册了一个口令W;在所有方法中用户“A”所发送DH-密钥成分X′=XBw或X′=XB-w,或者
Figure A2008100414750009C3
Figure A2008100414750009C4
或者
Figure A2008100414750009C5
Figure A2008100414750009C6
其中B为用户“B”的公钥,X=gx∈G′,Hw是一个输出长度小于q的长度的哈希函数;收到X′后,用户“B”根据X′的相应计算方式计算出X=X′B-w或X=X′Bw,或者
Figure A2008100414750009C7
Figure A2008100414750009C8
或者
Figure A2008100414750009C9
Figure A2008100414750009C10
KA,KB,tA,tB计算仍使用X作为指数下的挑战,但指数上的函数c,d,e,f的输入中的X换为X′;除其它规定的事先离线计算外,用户“B”可事先计算B-1∈G′;
在基于口令的变体中,对DH-密钥成分X是否为G′或G中元素的检查替换为对X′是否为G′或G中元素的检查;
(4).哈希函数的输入中嵌套相同或不同的哈希函数,即:将原哈希函数的输入和嵌套的哈希函数作为一个特殊的有向图的节点,其中原哈希函数的输入代表的节点无扇入,最外层的哈希函数所代表的节点无扇出,每个节点所代表的数值是其扇出节点所代表的哈希函数的输入;
(5).将哈希函数输入的顺序任意变化;和/或,将哈希函数的所有输入换为所有输入的并集,即:重复的元素在输入中只出现一次;和/或,将哈希函数换为任一个输出为整数的函数;和/或,应用在每一处的哈希函数与应用在其它处的哈希函数相同或不同;即,我们使用一组哈希函数{H1,H2,…Hn},其中对于任意的i,j,1≤i,j≤n,i≠j,Hi=Hj或Hi≠Hj,n≥1且n是需应用哈希函数的次数的上界;
(6).不同的密钥导出函数:应用在每一处的密钥导出函数与应用在其它处的密钥导出函数相同或不同;即,我们使用一组密钥导出函数{KDF1,KDF2,…KDFn},其中对于任意的i,j,1≤i,j≤n,i≠j,KDFi=KDFj或KDFi≠KDFj,n≥1且n是需应用密钥导出函数的次数的上界;
(7).在所有方法中用户“A”检查KA≠1G,用户“B”检查KB≠1G
(8).对于基于椭圆曲线的实现,将密钥导出函数输入中的KA,KB换为KA,KB的x-坐标值或y-坐标值;每个用户检查对方用户的DH-密钥成分的x-坐标和y-坐标是椭圆曲线所基于的有限域中的正确编码的元素;
(9).出错中止和出错信息返回:在所有的方法中,一旦一个用户因检查不通过,即出错,而中止协议,发回或不发回出错信息;在基于口令的实现方法中,客户“A”只允许出错有限次,以防止在线攻击;
(10).会话标示符和用户协议角色标示方法:会话标示符一般由用户“A”和“B”发送的两个随机数或DH-密钥成分以初始者-响应者的顺序串联构成;用户的协议角色标示一般用不同的整数或者由用户“A”和“B”发送的随机数或DH-密钥成分的不同顺序来标示;
(11).用户“A”检查确认Y≠X;若Y=X,用户“A”则中止协议运行。
CN 200810041475 2007-10-23 2008-08-07 一类高效、公平的密钥交换方法 Expired - Fee Related CN101645870B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN 200810041475 CN101645870B (zh) 2008-08-07 2008-08-07 一类高效、公平的密钥交换方法
PCT/CN2008/072794 WO2009056048A1 (en) 2007-10-23 2008-10-23 Method and structure for self-sealed joint proof-of-knowledge and diffie-hellman key-exchange protocols
CN2008801222327A CN102017510B (zh) 2007-10-23 2008-10-23 自封闭联合知识证明和Diffie-Hellman密钥交换方法与结构
US12/766,431 US8464060B2 (en) 2007-10-23 2010-04-23 Method and structure for self-sealed joint proof-of-knowledge and diffie-hellman key-exchange protocols
HK11110843.5A HK1156750A1 (en) 2007-10-23 2011-10-12 Method and structure for self-sealed joint proof-of-knowledge and diffie- hellman key-exchange protocols

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200810041475 CN101645870B (zh) 2008-08-07 2008-08-07 一类高效、公平的密钥交换方法

Publications (2)

Publication Number Publication Date
CN101645870A true CN101645870A (zh) 2010-02-10
CN101645870B CN101645870B (zh) 2013-04-17

Family

ID=41657590

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200810041475 Expired - Fee Related CN101645870B (zh) 2007-10-23 2008-08-07 一类高效、公平的密钥交换方法

Country Status (1)

Country Link
CN (1) CN101645870B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103918218A (zh) * 2011-07-04 2014-07-09 三星电子株式会社 用于管理移动设备的群密钥的方法和装置
CN104919753A (zh) * 2013-01-16 2015-09-16 日本电信电话株式会社 解密服务提供装置、处理装置、安全性评价装置、程序以及记录介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG10201705421UA (en) * 2017-06-30 2019-01-30 Sitechexport Pte Ltd Algorithms for peer-to-peer messaging system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101060530A (zh) * 2007-05-22 2007-10-24 赵运磊 可抵赖的互联网密钥交换协议
CN101175076B (zh) * 2007-10-23 2012-01-11 赵运磊 在线计算高效、可抵赖、不可锻造安全的密钥交换方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103918218A (zh) * 2011-07-04 2014-07-09 三星电子株式会社 用于管理移动设备的群密钥的方法和装置
US9326136B2 (en) 2011-07-04 2016-04-26 Samsung Electronics Co., Ltd. Method and apparatus for managing group key for mobile device
CN103918218B (zh) * 2011-07-04 2017-02-08 三星电子株式会社 用于管理移动设备的群密钥的方法和装置
CN104919753A (zh) * 2013-01-16 2015-09-16 日本电信电话株式会社 解密服务提供装置、处理装置、安全性评价装置、程序以及记录介质
CN104919753B (zh) * 2013-01-16 2018-06-05 日本电信电话株式会社 解密服务提供装置、处理装置、安全性评价装置、程序以及记录介质

Also Published As

Publication number Publication date
CN101645870B (zh) 2013-04-17

Similar Documents

Publication Publication Date Title
US8464060B2 (en) Method and structure for self-sealed joint proof-of-knowledge and diffie-hellman key-exchange protocols
Harn et al. Generalized digital certificate for user authentication and key establishment for secure communications
Mandt et al. Certificateless authenticated two-party key agreement protocols
CN107659395B (zh) 一种多服务器环境下基于身份的分布式认证方法及系统
US9571274B2 (en) Key agreement protocol
CN105959269A (zh) 一种基于身份的可认证动态群组密钥协商方法
CN106209369A (zh) 基于身份密码系统的单交互认证密钥协商协议
CN101626364A (zh) 一类可基于口令、抗秘密数据泄露的认证和密钥交换方法
CN109861826B (zh) 一种双向代理重签名的实现方法及装置
CN101175076B (zh) 在线计算高效、可抵赖、不可锻造安全的密钥交换方法
CN101247394A (zh) 一种改进的密钥交换协议
CN111447065A (zh) 一种主动安全的sm2数字签名两方生成方法
CN111654366A (zh) 一种安全的pki与ibc之间的双向异构强指定验证者签名方法
Islam et al. An improved ID-based client authentication with key agreement scheme on ECC for mobile client-server environments
Zhang et al. Unbalancing pairing-free identity-based authenticated key exchange protocols for disaster scenarios
US20160352689A1 (en) Key agreement protocol
CN101645870B (zh) 一类高效、公平的密钥交换方法
WO2016187690A1 (en) Key agreement protocol
Xia et al. Breaking and repairing the certificateless key agreement protocol from ASIAN 2006
Ni et al. A pairing-free identity-based authenticated key agreement mechanism for sip
CN102624524A (zh) 一种基于双线性对的不可锻造的知识证明和消息签名认证方法
Wei et al. Secure identity‐based multisignature schemes under quadratic residue assumptions
Jin et al. A supplement to Liu et al.'s certificateless signcryption scheme in the standard model
Ki et al. Privacy-enhanced deniable authentication e-mail service
Li et al. CMQV+: An authenticated key exchange protocol from CMQV

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130417

Termination date: 20180807

CF01 Termination of patent right due to non-payment of annual fee