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

文档序号:7891011阅读:480来源:国知局
专利名称:一类高效、公平的密钥交换方法
技术领域
本发明属于密码协议技术领域,具体涉及一类高效、公平的密钥交换方法、分布式客 户-服务器环境下抗拒绝服务攻击且保护用户隐私的密钥交换方法、无公钥证书的密钥交 换方法、公平Diffie-Hellman秘密生成方法、公平的群密钥交换方法。
背景技术
系统参数(G',G,g,9),其中G'是一个阶为W的有限群,G为G'中阶为9的子群,g 为G的生成元,使得定义在G上的离散对数问题是难的。常用的G',G的设置如下G'为 Z^卩,2,…p-l},p为一个素数,g整除(户l),此时G'的阶为A^p-1;或者,G'为定
义在一个有限域的椭圆曲线(即定义在一个有限域上的椭圆曲线上的点构成的群)。一 般而言,《={1,2,—; -1}中的元素操作用乘法表示(即乘法群),单位元为整数1,而椭
圆曲线上的运算用加法表示(即加法群),单位元为无穷远点。在本文档中,我们用乘法 来表示G'中元素的操作。除非有特别说明,将G、 G'中的单位元记为le, G'/le表示的是 由G'减去单位元le之后其它元素的集合,即G'中的非le元素;记为G中的非le元 素。不失一般性,指数运算和不在指数上的乘法运算的结果是G'或G中的一个元素,指 数上的加法和/或乘法运算是模《计算。定义函数i)丄Zg—G,使得/ -iU(vv)二gW 。 w
称为力的离散对数。我们要求给定随机计算出的A没有多项式时间算法计算出力的离散对 数K这称为离散对数问题。计算Diffie-Hellman问题指的是给定随机的/与没有 多项式时间算法计算出/、对于熟悉本领域的人而言,离散对数问题及计算 Diffie-Hellman问题也可以定义在由椭圆曲线或双线性对(bilineartity)定义的群上。
检查确认一个元素义eG可有如下方法(1)计算并检查19=1; (2)如果^ = 2《+ 1, 计算并检查X2^1,或计算J的Legendre符号;(3)如果G、G (比如G',G为素数阶的
椭圆曲线群),只需检查(4)计算并检查IeG'且^^"^l从而保证J不在一个 阶可整除7V 的小子群中;(5)若G'为定义在一个有限域《的椭圆曲线,检查ieG'/l且
7的x-坐标和y在坐标是f;中的元素。 一般而言,可将ZeG的检查嵌入到协议的其它运
算之中。
常用的不使用签名进行身份认证的Diffie-Hellman密钥交换协议,比如美国国家标 准化组织(ANSI)的X9. 42-2001标准文档、国际标准化组织(ISO)的IS 15946-3标准文档、国际电气和电子工程师协会(IEEE)的1363-2000标准文档等所规定的MQV协议有如
下不足
(a) . MQV协议的在线计算效率不够好。MQV的会话密钥生成方式不允许用户对会话密 钥进行部分离线计算以提高在线计算的效率。具体来讲,用户"A"不能够在接受到用户
"B"的DH-密钥成分y之前进行事先离线部分计算会话密钥,用户"B"不能够在接受到 用户"A"的DH-密钥成分7之前进行事先离线部分计算会话密钥。
(b) . MQV协议不能够很好地保护用户的隐私。在MQV协议中,每个用户的会话密钥 不能够仅仅由对方用户的DH-密钥成分的离散对数而计算出。g卩会话密钥以不可否认的 方式绑定到到产生该会话密钥的两个用户。因此,MQV协议不能够很好地保护用户隐私。
(c) . MQV协议不能够完全保证每个用户的DH-密钥成分不包含在小的子群中。 在发明人于2008年7月8日递交的申请号为200810040311. 5的专利申请书的权利要
求-1的实现方法-4中,本发明申请的申请人给出了一个新的不使用签名的密钥交换方法
(即)。注本发明专利的申请人与申请号200810040311.5的专利申请人相同;另外, 本发明申请书的权利要求2、 3、 4、 5与200810040311. 5专利申请无关。
但是,申请号200810040311. 5的专利申请书的权利要求-1的实现方法-4有如下不足
(a) . i^,K^的计算分别需要3个哈希运算(这意味着在random oracle模型中要使 用三次random oracle)。
(b) .假设用户"A"和"B"在交换DH-密钥成分之前或交换DH-密钥成分的同时,交 换彼此的公钥证书。这使得协议难以在post-ID(即用户为了保护隐私,先发送DH-密钥成 分后发送公钥证书)模型和环境下运行,因此不利于保护用户的隐私。另一方面,若用户 先发送DH-密钥成分后发送公钥证书,则协议无法有效地进行离线计算以加速在线计算的 效率。还有,i^,《B不够模块化,不能够分开并行计算以加速计算效率。
目前已知的的无公钥证书Diffie-Hellman密钥交换方法需做2个双线性对(pairing) 计算以及其它指数运算;另外,在线计算效率差,计算不够模块化,并行化不好。(注 双线性对的计算效率较低,约相当于4-5个指数运算)。
传统的Diffie-Hellman秘密生成方法不够公平。g卩对于生成的Diffie-Hellman秘 密g",用户"A"不能够保证g"是随机分布在^为生成元的子群中(因为,用户"B" 可能是恶意的,BP: y可能是用户"B"在^中任意选取的值而非随机选取);同样,用户
"B"不能够保证g"是随机分布在^为生成元的子群中(因为,用户"A"可能是恶意的, 即x可能是用户"A"在;中任意选取的值而非随机选取)。在群密钥交换领域,Burmester-Desmedt在Eurocrypt, 94上提出的群密钥交换方法 是最著名的(大多数的后续的群密钥交换方法遵循Burmester-Desmedt方法)。但是,我 们最近注意到,Burraester-Desmed群密钥交换方法是不公平的(同时不安全)。具体来讲, 我们发现了 Burmester-Desmed方法的目前尚未被发现的新的安全漏洞。使用我们的攻击, 诚实用户的贡献将被完全屏蔽。

发明内容
本发明的目的在于提供一类高效、公平的密钥交换方法。其特点为最优的(在线)
计算效率,支持先发送DH-密钥成分后发送身份和公钥证书的工作模式,利于隐私保护、 计算的可并行性和模块化,支持DH-密钥成分的重复使用,并可应用于分布式客户-服务器 环境下抗拒绝服务且保护用户隐私的密钥交换、无公钥证书的密钥交换、和公平的群密钥 交换。
本发明提出的一类高效、公平的密钥交换方法,其系统工作环境为
(1).系统参数(G',G,g,g),其中G'是一个阶为yV的有限群,G为G'中阶为G的 子群,g为G的生成元,使得定义在G上的离散对数问题是难的。常用的G',G的设置如下 G'为Z;-(1,2,…/ -U,/J为一个素数,G整除(rl),此时G'的阶为A^户—1;或者,G'为
定义在一个有限域的椭圆曲线(即定义在一个有限域上的椭圆曲线上的点构成的群)。 一般而言,《={1,2,..^-1}中的元素操作用乘法表示,单位元为整数l,而椭圆曲线上的
运算用加法表示,单位元为无穷远点。在本文档中,我们用乘法来表示G'中元素的操作。 除非有特别说明,将G、 G'中的单位元记为le, G7^表示的是由G'减去单位元le之后其
它元素的集合,即G'中的非^元素;记G/k为G中的非le元素。不失一般性,指数运算 和不在指数上的乘法运算的结果是G'或G中的一个元素,指数上的加法和/或乘法运算是 模《计算。定义函数D丄^—G,使得/^iUO)-gW 。『称为力的离散对数。我们要求
给定随机计算出的A没有多项式时间算法计算出力的离散对数w这称为离散对数问题。 计算Diffie-Hellman问题指的是给定随机的/与,没有多项式时间算法计算出/、对 于熟悉本领域的人而言,离散对数问题及计算Diffie-Hellman问题也可以定义在由椭圆 曲线或双线性对(bilineartity)定义的群上。对于任一元素IeG',我们记X-'为X的相 对于G'的逆元,即JOT—'=1。;作为本领域的常识,;r"的计算可有各种等价的计算方
式,比如;r"6 :(;r1)。6 =(jra)6 =(;r)—6 =(;r6)a = (x6)-。 = .. , x'cfc+(* = z一+別,等;
检査确认一个元素ZeG可有如下方法(1)计算并检査;^=1; (2)如果7^ = 2《+ 1,
计算并检查I2^1,或计算X的Legendre符号;(3)如果G、G (比如G',G为素数阶的椭圆曲线群),只需检查XeG'; (4)计算并检査JTeG'且J^^^l从而保证Z不在一个 阶可整除W 的小子群中;(5)若G'为定义在一个有限域F,的椭圆曲线,检查XeG'/l且
;r的x-坐标和y在坐标是&中的元素。 一般而言,可将XeG的检査嵌入到协议的其它运
算之中。
(2) . T/是一个哈希函数;对于字符串或数值年^2,.^ ,/ >1,//0 1^2,—0表示的是 将^,^,…,^,用合适编码表示,然后将所有的编码顺序连接串联起来,最后将串联后得到 的串作为//的输入。不失一般性,我们设//的输出是^={0,1,2,—,《-1}中的元素,否则 我们可以简单地取丑的输出的一个属于29的子串或对//的输出进行模《计算。为了加快计
算效率,可以令//的输出的长度为|。若^^, ,、是《7个字符串,S,&,…&是"个集合,
, h,S2,…,、,S,S2,…,SJ表示的是^,^,…,^jUS,US2U…U&,其中大括号内 的元素顺序可以任意变化。^(A,^,…,^,S,&,…,&)表示的是将A,A,…^及 hjwj中的元素用合适编码表示,然后将所有的编码串顺序连接串 联起来,最后将串联后得到的串作为/z的输入。若o为空值,则
(3) .除非有特别说明,具有身份ID/,的用户"A〃有一个公钥乂-g。eG,其中a 由用户"A"在^={0,1,2, ,《-1}中随机选取。相应地,具有ID ^的用户"B"的公钥 记为5二^eG,以此类推。其中/,为用户"A"的身份信息或用户名,/3为用户"B"的 身份信息或用户名。对于任一元素xeZ《,我们记—;c为x的相对于A的负元,艮P-
x + (-;c) = 0mod《。
不失一般性,若协议基于公钥证书来绑定用户的身份和公钥,则公钥证书颁发机构在 向用户颁发证书时,检查确认用户注册的公钥为G中的元素或为G/lc中元素。任何检查
不通过,证书颁发机构拒绝颁发公钥证书。这样,每个用户只需检查对方用户的公钥证书 即可确认对方的公钥为G或G/le中的元素。
(4) .协议基于Diffie-Hellman密钥交换协议。除非有特别说明,记X-^为用户"A"
的DH密钥成分,义为DH密钥成分J的离散对数,义由用户"A"从Z,(0,1,…,《-1}中随机
选取。记F-g》为用户"B"的DH密钥成分,/为DH密钥成分F的离散对数,y由用户"B"
从;={0,1, ■,《-1}中随机选取。假设用户"A"为协议的发起者(初始者),用户"B"为
协议的响应者。即用户"A"先发送J;在收到J后用户"B"再发送K 一般而言,用户"B"需在发送r之前检查XeG'/le或IeG, "A"需在收到F之后检查(7/1^或 7eG 。
(5) .协议会话标示符W丄Wd用于标示同一协议的不同的并发运行会话; 一般而言,
WW是协议双方相互交换的两个随机数的串联,即> ^ = ^1| ^,其中A是一个由用户"A" 发送的随机数,^是一个由用户"B"发送的随机数,"li"表示的是字符串联结符;在客 户服务器环境中,W'J可直接设置为服务器发送的随机数或计数器数值;或者,WW直接由 DH-密钥成分来定义,即将^换为X将A换为F。
(6) .与协议执行相关的其它信息;n^,p"Zv . /w&, A: 2 1:对于任意的/,1 SW A:,戸6,
是除DH-密钥成分义二^或x', ;r^^之外的其它与协议执行相关的信息的一个子集或序
列,可为空或含重复元素;这儿,其它与协议执行相关的信息包括用户即协议初始者与 响应者的身份信息或用户名、协议初试者和响应者的角色标示、公钥及公钥证书信息、IP 地址,协议版本,安全参数和密钥参数,协议的会话标示符,时间戳,cookie,任意数值,以 及除DH-密钥成分外的协议会话传输的其它信息。在不同的实现方法中,p"&的取值可不
同;对于任意的/J,/^力;w6,等于或不等于;^《.。 一般而言,p"6,包含协议初始者与响应 者的公钥与身份或用户名信息,即仏,A A," £ / 喊或{ AL,4/s,5} ; p喊。
会话标示符xW—般由用户"A"和"B"发送的两个随机数i^和&或DH-密钥成分以 初始者-响应者的顺序串联构成,即^^ = ^||^或《^/ = 1||7 ,其中H表示的是串联运算 符。
用户的协议角色标示^和 一般用不同的整数,比如^=0, =1;或者由用户"A" 和"B"发送的随机数或DH-密钥成分的不同顺序来标示,比如^=^||^或。=1||7, &=&||^或 =}1义。
对于熟悉本领域的人而言,随机数A和A,以及可能的公钥证书的交换,即可在实 现方法运行之前进行,也可包含在实现方法中用户各自发送的信息中。
(7) .密钥导出函数iO)尸iQ)尸CS,ma)是一个密钥导出函数,其中S是一个数值或数
值的集合,ma是一个数值字符串集合或计数器。 一般而言,/CDF是一个哈希函数或哈希 函数序列或直接输出其第一个输入,比如^ZXFC&mO-T/C&awx)(这种计算适合于哈
希函数//的输出的长度大于等于规定的密钥的长度的情况,即真正的输出可能是
//(&做x)的一个子串,比如前缀,输出的子串的长度等于规定的密钥的长度),或 《D尸0S",aM;c) = //(5,1)7/(5",2) — //(5^)其中A: 2 1 , "w;c是一个计数器(这种计算适合于哈希函数//的输出的长度小于规定的密钥的长度的情况),或/CZ)F(S,""X)-S;或者《Z)F是一个以S为随机种子的伪随机函数,比如AZ>F(S,awx)=尸i ^(aia)。会话密钥和认证密钥可 由同一个密钥导出函数在相同的输入上导出;或者,会话密钥和认证密钥由同一个密钥导 出函数在不同的输入上分别导出,比如会话密钥为//(5," 《)而认证密钥为7/(>^,5);或者,会话密钥的导出函数与认证密钥的导出函数不同,而它们的输入相同或不同,比如 会话密钥与认证密钥的导出使用不同的哈希函数或伪随机函数。(8).标签认证函数Fr(《,t/),其中《为一个秘密数值或秘密数值的集合,f/为一个数值字符串集合。标签认证函数6(《,t/)为任何满足如下性质的函数(1)不能够从 A(《,C/)在i:的长度的多项式时间内求出尺,即相对于输入《,函数&是单向的;(2)给定A(K,t/),不能够在《的长度的多项式时间内计算出F"《,t/)或&(i:,f/)使得f/^t/'。一般而言,^是一个单向哈希函数,比如^(《,t/) = 或者i^是一个消息认证码MAC函数,其中MAC的私钥由导出而认证的信息是V的一个子集,比如假设协议运行送方有某种机制协商上述参数(包括安全参数和密钥长度参数)、函数、 算法(包括对称和公钥加密算法、认证算法、签名算法、哈希函数等),用户角色标示及 会话标示符号表示方法等,以及运行以下哪种实现方法,并达成一致。这种协商机制可随 应用环境和系统的不同而不同。 一般而言,/w6包含协商所交互的信息的一个子集。对于 熟悉本领域的而言,在申请方法中进行的对各种元素的检査确认默认是一次性的,即一 旦确认正确(一般在该元素的首次计算时进行),则在后续的运行中不在检查。本发明提出的实现方法,具体步骤如下-设用户"A"有离散对数公钥^-g。并发送DH-密钥成分X-^,且用户"B"有离散对数公钥5二^并发送DH-密钥成分r-g、记C五i 7^为用户"A"的公钥证书,C五i 7^为用户"B"的公钥证书;根据实现方法的不同,用户公钥证书的发送可以在发送DH-密钥成分之前、或发送DH-密钥成分的同时、或发送DH-密钥成分之后;(一般而言,在所有的实现方法中,每个用户均可在发送DH-密钥成分之前或发送DH-密钥成分的同时发送自己的公钥证书;但为了更好地保护用户的隐私,在实现方法2和3中,用户可在发送DH-密钥成分之后发送自己的公钥证书。)用户"A"发送或不发送随机数^,用户"B"发送或不发送随机数^。
做x^和mas要么均为空值或相同的值或字符串,或者aw;^和^m^为任意数值或字符串并且awx乂 #iwxs ; 一般而言,若aia^ #flwxs , 可令ma^二0, auxs=l。密钥交换方法的核心和特征是构建两个函数&和&使得AO,x,5,;r,戸6H&(6,;;,AI,p"6) ; &和的计算如下用户"A "计算 、=w。e"^ +v/ £ g',用户"b "计算& = j(A+'w义,w, £ g';其中,f = i或^ ,
1S/S4;用户"A"可事先计算I和5一+'^eG',用户"B"可事先计算y和,^^eG'; 实现方法的关键是函数c,c/,e,/的不同设置和实现方法(每个实现方法的特点已在前面轮 述)
实现方法—1: c = c/ = l;e = 0或e = l或e = ; / = //(/j,^,/s,i5,U)或
/ = //0L, A ^,s, U)或/ = //(戸62,义J)。
实现方法一2: 〔 = //(£ 1 :/1,4,5,义)或<;=//0 /1,/3,^8,^,1) ; i/二/f(做x^L,Ay) 或d:7/(做Xs,/^A^,y) ; e=0或1或//O^) ; / = //(1,}0或/ = //(>W,Z,}0
/ = 2, ;t,;f)。
对于实现方法-2,为了保护用户隐私,用户可先交换DH-密钥成分,后交换公钥证书 (用户"B"也可在发送r的同时发送公钥证书)。此时,用户"B"可先计算;T一+'^eG', 用户"A"可先计算7'—eG'。
实现方法-3:6" = //( ^,/^3,义)或£: = //0^,/5^,&,;0 ; J^/Z("wx^/^ 或t^/7(m^,L",i^,:n ; ff=0或1或7fO—) ; / = "(XJ)或/ =
/ = 2, x,r)。
对于实现方法-3,为了保护用户隐私,用户亦可先交换DH-密钥成分,后交换公钥证 书;用户"B"也可在发送y的同时发送公钥证书;此时,用户"B"可先计算X^+'^eG', 用户"A"可先计算r一+'^ eG'。
"-//(awx^/^^y) 或d = //("u^,A, J,A,IO ;e=0或1或//(/7w6);
)或 / = //(c,j)或/ = //(c,:r)或 / = //( A z)或/ = /B, ;r)或/ = i/ow, ^, /s, z, 或/ = //o w2, x, 。实现方法-6: c = //(aw^, /力,J, X)或c = //Owx^, j, , X) , d = t/0"Xs , /s, B,"或 £/ = //(mas,/B,S,i s,r) , f0 或 1 或//(;wA) , / = //(/"J,/fl,5,U)或 / = //(械/",/3,5,1,7)或/ =//(c,力或/ = //("}0或/= 义)。
实 现 方 法 -7: f^Z/Cam^/^A/^X) 或
1或//QroZO , /-//(U)或/ = i/0^,U)或/^//(/"A/pAXJ)或
/^i/o^,/^j,/s,B,z,;F) 或 / = //(c,^/) 或 / = //(c,;r) 或 / = //(y,z) 或 / = i/(L, 或/=//ow,/"/s,z,;r)或/= h0^2,义,y)。
实现方法-8: c = //(做x"/s,X)或c = //Ou^,/〃/s,y)或c = i7(flwx/4,A,/i},JO或 c =/f(awx乂,/力,i^,/B, ' d =//(aw;Cs,/^y) 或 <i =//(mixfi,/£,/"y) 或
3 = //(> ^,^,/〃;0或^/ = //(做;^,/^,&,//4,}0, e=0或1或H(/n^), / = /^(1,7)或 / = //0,W,或/ = //仏,A /B,仏7)或/ = ^ 乂 W, 7)或/ = F(c,力或
/ = //(c,}o 或 / = //(c/," 或 /:7/(/^/s,x,;r) 或 / = //(X/^/s,;r,;n 或
实现方法-9:c = //(cmj^, ; "63, X)或c = //(/^64, U)或c = 1' d = //(mo^ , /7"65,7)
或"i7(—6义;r)或"i; f0或i或t/o^)'/^ho"6"m或/^(械u)
或/ = //<^,力或/ = //(^,}0或/ = 1或/ = 0;其中,若(:=1和/或^/ = 1,则/不可为0或1; ;^64和/w67不相同,和jto67不相同,建议;w64, /w66, ;w67两两不同。
r,,l^《4,设置方法(1).若用户"A"检査确认5eG,:reG,用户"B"检査确认 JeG,XeG,贝廿令^=,2=^=/4=1 ; (2).若用户"A"仅检查确认B e G , X e G'或 XeG'/le,而不能确认JTeG,用户"B"仅检查确认j e G, y e G'或7 e,而不能
确认yeG,且;c和/或y可能会泄露,贝lj令^-l,b 用户"B"检查确认

x'A+'4# # lc或& # ^一'一或lc ,用户"a"检查确认广—# lG或*
或^^le;若X,少均不会泄露,仍同(1)可设^=^2=^=~=1;任何检査不通过,则中止协
议运行,返回或不返回出错信息。
会话密钥和认证密钥导出方法利用密钥导出函数由^^&及(/,c乂e,U,/wW的
某个子集导出会话密钥和认证密钥。 一般而言,采用如下方法产生认证密钥《和会话密钥 ^,其中/^是一个哈希函数 (/^可与//相同)(1). A入)—/^(^,/,1)&(A,/,2)…/^(A,/,/) = &(&,/,1)&(&,/,2)—/^(&,/力, 其中由一个计数器来实现,i的取值依赖于",&)的长度,即直到 , /,1)/^ , /,2)…(《」,/力的长度大于等于, &)的长度。设(尽,&)的长度为/ , 我们可取/^(/^,/,1)/^C^,/,2)…/^(i^,/,z')的长度为/的前缀或后缀。(2). & — (&, , /,2)…, /, /) = , , /,2)…& , /, 0 ;
& — (/,肌(/,《X (/, &, /) = & (/, & (/, & ,2)…& (/, &,力。设& 的长度为/,, &的长度为/2,则计数器/的取值直到哈希函数序列的输出长度大于等于/,, 计数器/的取值直到哈希函数序列的输出长度大于等于/2。其中,i^输入中的/可换为 (W)。
认证方法记导出的认证密钥为i '-A,为了向用户"A"证明其知道i ',用户"B" 利用标签认证函数Fr计算并发送^ = g(i ',朋x0 ,其中^^是仏^W,rs,X,]T,,69}的一个 子集,^/是会话标示符,^是用户"B"的协议角色标示;用户"A"利用认证密钥i '检 査^正确性,若不正确,则中止协议执行,返回或不返回出错信息;为了向用户"B"证 明其的确知道i ',用户"A"在收到^并验证^的正确性后,计算并向用户"B"发送 G = Fr(i ',aia。),其中ato:。是(/乂,wV/,^,X,y,; z^j的一个子集且aza。 # "mx, , ^是用户 "A"的协议角色标示;用户"B"利用认证密钥i '检査^正确性,若不正确,则中止协议 执行,返回或不返回出错信息。
本发明提出的高效、公平的密交换方法可应用于抗拒绝服务攻击,且保护用户隐私, 具体步骤如下
设用户"A"有离散对数公钥^:ga并发送DH-密钥成分X-^ ,用户"B"有离散对 数公钥B二gA并发送DH-密钥成分7 = ^ ;记C五i L为用户"A"的公钥证书,C五i 7;为用 户"B"的公钥证书。用户"A"发送或不发送随机数&,用户"B"发送或不发送随机数&。 "m力和auxs要么均为空值或相同的值或字符串,或者""x^和azas为任意数值或字符串并 且awx^ # o
。=1或!, l&、4;其设置方法为(1).若用户"A"检査确认万eG,;FeG,用户
"B"检査确认JeG,XeG,贝ij令^二^^^3^4二l 。 (2).若用户"A"仅检査确认 5eG, leG'或XeG'/le,而不能确认尤eG ,用户"B"仅检査确认:FeG'或
reG'/lc,而不能确认7eG,且x和/或少可能会泄露,贝ij令/, =1,,2 =,3 =,4 ,用户
《"B "检査确认义'# 1(j ,用户"A "检査确认户—# lc和/或# 1q和/或 (—般而言,若用户"A"事先计算5一,则可仅检查y'"^l。;若用户"A"不
事先计算W 则检查^,W"c和"a^le )。若x,少均不会泄露,仍同(l)可设 A =f2 =f3 =1 ;任何检查不通过,则中止协议运行,返回或不返回出错信息。 第一轮用户"A"向用户"B"发送(义,^xJ或(义,m^,iU。 收到"A"发送的信息后,用户"A"检査XeG'或XeG'/le或义eG或义eG/le;
若检査不通过,则中止协议运行,返回或不返回出错信息;若检査通过,用户"B"计算 7 , 《=X'一+" e G';其中,c-7/(m^,/s,S,义)或c =//(aw^,/s,5,i^,^) 或
c = //(a xs,/s,s,jn 或 c:ifO^,/^s,^,x) ; / = //(^,;n 或/ = //(>w,x,;r)
/ = //(j^62,X,;n;其中,用户"B"可事先计算r、 c和^c。用户"B"利用密钥导出函
数由K及《/,c,z,;r,wW,A,i^,戸w的一个子集导出认证密钥i:';用户"b"利用标签认
证函数/^计算^ -FJ/^at^),其中aux,是(/s,s!W, ,X,r,i^,pKW的一个子集,是会 话标示符,^是用户"B"的协议角色标示。
第二轮用户"B"向用户"A"发送{/5,5,7,"欲^;}或仏,万,7,"";^,&,6};其中' (、,S)可替换为用户"b"的公钥证书C^ 7;.
收到用户"B"发送的信息后,用户"A"检查C^7;的有效性,检查yeG'或I^G'/le 或yeG或FeG/l。、;若检査不通过,则中止协议运行,返回或不返回出错信息;若检査 通过,用户"a"计算c、 /和^=5'','"/£(7。用户"b"由/:;导出认证密钥〖',并利 用《'检查^ -FT(ir,ma,)的正确性,若检查不通过(即^^&(i ',az^)),则中止协议运行, 返回或不返回出错信息;若检查通过(即^二^(i ',fl"jO ),用户"A"计算 Kj = (W7'"/^'。7'一 £ G', 其中d = //(a"x^,/力,AO 或"=//(aw^,/乂, A^,y)或 ^ = //("1^,//4,4}0或^/ = //(""&,/^^,^4,10 ; 或1或FO^);其中用户"a"可事 先计算I、 5'^eG', 5一eG'。
用户"A"利用密钥导出函数由^及仏c乂e,X,:r,^,A,;^J的某个子集导出认证
密钥&和会话密钥& ;用户"A"计算^ = Fr,awxQ),其中a肌o是仏,w't/,^,,X,y,0} 的一个子集且m^。^m^ ,。是用户"A"的协议角色标示。用户"A"计算或不计算 6 = Fr(f,"0,其中awxj是仏乂,yW,^,HH/ —0〉的一个子集且awx; # 。 第三轮用户"A"向用户"B"发送仏乂^6}或仏乂,丄其中(/^々可替换为用户"A"的公钥证书GEi L。
收到用户"A"发送的信息后,若用户"A"在第三轮发送{/,,4^6},用户"B"首
先利用i:'检查6-^(^:',m^),若检查不正确用户"b"中止协议运行,返回或不返回出
错信息;若6=^(《',^<)用户"B"检査C五i 7;的有效性;若检查不通过,则中止协议 运行,返回或不返回出错信息;若c五i r,有效,用户"B"计算^ = ,^ ^ y/eG', 并利用密钥导出函数由&及(/,c,aUx,:r,i^,A,戸w的某个子集导出认证密钥&和会
话密钥&。用户"B"利用认证密钥^检査^=&(^^^。)的正确性,若检查不通过,则中
止协议运行,返回或不返回出错信息;若检査通过,进行或不进行第四轮。
第四轮用户"B"计算并向用户"A"发送{^},其中~ =^(^,"^,), "w:c^aMX。。
收到用户"B"发送的信息后,用户"A"利用认证密钥尽检查 的正确性;若检查不
通过,则中止协议运行,返回或不返回出错信息。
本发明提出的高效、公平的密交换方法可应用于无公钥证书且在线计算密钥交换方
法,具体步骤如下设^:C/xC^4G是一个合格的多项式时间可计算的双线性映射;其
中C^是一个阶为《的加法或乘法群,l"为其单位元。不失一般性,我们记C/为加法群;
记P为(/的生成元。e:(^xGr—G满足f (x户,;^P)=《(尸,户广且s (尸,尸)# 。记 /^:{0,1}'4(^为一个哈希函数。用户"A"除了公钥^ = ^£^夕卜,另有一个基于身份的 公钥仏=//7'(^)或仏=或a = Ff (K户。);用户"B "除了公钥B = g、 G夕卜,
另有 一个基于身份的公钥& = 或& = W(4^)或& = ht(/b,AA);其中,
尸。^We(/为一个可信的第三方C4的公钥,C4的私钥为seZ《。用户"A"除了私钥"之 外另有私钥^二sg,,其中^=^04由04计算并安全地传送给用户"A"。用户"B"除了 私钥6之外另有私钥^=^仏,其中^=^&由04计算并安全地传送给用户"B"。
与本发明的实现方法相比,无公钥证书且在线计算高效的密钥交换方法只有如下不同 或变化
(1) .在函数c,c/,e,/中的哈希函数的输入中增加或不增加(仏,a,P。〉的一个子集。 因为a由(L,力决定,a由(^,S)决定,建议函数c乂e,/输入中不必包含仏或^。
(2) .用户"A"利用密钥导出函数由(^,s及(/,c乂e,X,y,p^J的一个子集 导出会话密钥和认证密钥;用户"B"利用密钥导出函数由{&,£(&,仏)}及 (/,c,J,e,X,;r,p—,}的 一 个子集导出会话密钥和认证密钥;其中,"&必)= J = = ,— 可包含(a,a,W的一个子集。
一般而言,釆用如下方法产生认证密钥A和会话密钥&,其中/^是一个哈希函数
(a) . 用 户 " A" 计 算/^(^,4^必),c乂l)/^d4^必),c^,2)…/^(/^,4^必),c^,/);用户"B"计算
—/^(&,s(&,込),c^,l)/^(^^0^,a),c乂2)…/^(&,s(&,a),c^,/);其中Q1由一个计数器来实现,i的取值依赖于(、&)的长度,即直到
/^(&,so^,a),c^,i)/^(i^,s(&必),c,c/,2)…/^(A,so^,a),c^,0的长度大于等于
(yt"2) 的长度。设 ",&) 的长度为 / ,我们可取—/^(A^(&必),c,c/,l)i^(^^(&必),c,",2)…A(A,f(&,込),c乂0的长度为/的前缀或后缀。其中,/^输入中的(c,力可换为/或(c^,A,^)或(/,A,i B)。
(b) . 用 户 " A" 计 算&,—/^(A,4^必),c^,l)A(^,4^必),c,c/,2)…/^(A,4^必),c,々〕,
^—/^(c^^^O^a^l)//^^,^,^^^)^..//^,",^,^^,^),/);用户"B"计

4—//《(&,4&必),c乂i)/^(^,o^必),c乂2)…/^(/:^o^必),c,c/,0 ,& —/^(c乂^^o^必),i)&(c乂&,^va),2)…/^(c^,^^ova),y);设&的长度为/,, &的长度为/2,则计数器/的取值直到哈希函数序列的输出长度大于等于/,,计数器y的取值直到哈希函数序列的输出长度大于等于/2。其中,其中,/^输入中的(c,")可换为/或
本发明蕴含如下公平的Diffie-Hellman密钥交换方法设用户"A"发送DH-密钥成分Z:g G',用户"B"发送DH-密钥成分]^g'eG';用户"A"计算Diffie-Hellman秘密i^二r",用户"B"计算Diffie-Hellman秘密& =JT";其中c =2);
一般而言,2 =仏乂;^,W力或/ ={/乂,/丑,57'6/}或p =。
本发明可应用于高效、公平的群密钥交换方法,具体步骤为设有n个用户[/,,^,…R,
"> 2 ,想建立一个共同的Diff ie-Hellman秘密;用户的DH-密钥成分记为《=,'e G',其中1W《",x, eZ^我们设下标/是modn计算。
对于任意的/mod",用户t/,.计算Z,X,—"。 、 和7;=^ ,其中
&=77(/,[/卜"《—"",,X,)或c,/7("w,Z,—,,",.,JQ ,^+1=//(/ + 1,"";",.+1,《+1)或= t/,.将7;通知给所有其它用户(比如通过广播传输,或公开发表),
但可将X,.只通知给t/w和f/,+,。为了保证信息传输的完整性,可以使用Katz-Yung在
CRYPT0, 03或Kata-Shih在CCS' 05中所给出的一般性的安全认证和转换方法。
对于任意的fmod",用户 C/,计算Diffie-Hellman秘密
《-(z,)"(7;)"-'(7^)"-2…(7;—3)27;—2e(7;会话密钥和认证密钥利用密钥导出函数由《及{ wj , v, , t/2 ,…,c/ , 7;, r2,…,r }的 一 个子集导出。
二l或!;若对于任意的/mod",用户C/,检查确认Xw,Xw均为G或G/le中的元素,《
则,1=/2=一~=1;若对于任意的/mod",用户f/,.仅检查确认Z,—pX^为G'中的元素,而
不能确认为G中的元素,则^=,2=^.人=互,用户t/,检査确认Z^le,Z,+jle和/或

《,若检查不通过则返回出错信息并中止协议运行。
协议变体权利要求l、 2、 3、 4、 5所有实现方法及其应用可应用如下变体的某个子集。 一般而言,建议在所有实现方法中均应用变体(l)和/或(5);在所有基于公钥证书的实现方法中均应用变体(2);基于椭圆曲线的实现方法可应用变体(8)。
(1) .将哈希函数输入中的(乙,力替换成(/^^)的哈希值,并将(l,^)的哈希值包含在用户"A"的公钥证书中;将哈希函数输入中的(/8,^替换成(/,,5)的哈希值,并将(/^S)的哈希值包含在用户"B"的公钥证书中。
(2) .公钥证书颁发机构在向用户颁发证书时,检查确认用户注册的公钥为G中的元素或为G/le中元素;任何检查不通过,证书颁发机构拒绝颁发公钥证书;这样,每个用户只需检查对方用户的公钥证书即可确认对方的公钥为G或0 /16中的元素。
(3) .基于口令的变体本发明的实现方法有如下基于口令的变体;设用户"A""在
用户"B"处注册了一个口令w;在所有方法中用户"A"所发送DH-密钥成分1' = 15^或
jr = ;ra—w,或者;r二x5""(—",)或;ra—"'w),或者xb""—"、)或;^-;其
中S为用户"B"的公钥,I = feG', // 是一个输出长度小于q的长度的哈希函数;收
到x'后,用户"b"根据;r的相应计算方式计算出i = xb—"或x:z:r ,或者
义;g-w》 ,)或ZB/UP ,),或者n&(—或^g/U—,% , 0 ; ^,&,g^计算仍使用X作为指数下的挑战,但指数上的函数c,《e,/的输入中的义换为X';除其它规定的事先离线计算外,用户"B"可事先计算5—^G'。
在基于口令的变体中,对DH-密钥成分I是否为G'或G中元素的检査替换为对X'是否为G'或G中元素的检査。
(4) .哈希函数的输入中嵌套相同或不同的哈希函数,即将原哈希函数的输入和嵌套的哈希函数作为一个特殊的有向图的节点,其中原哈希函数的输入代表的节点无扇入,最外层的哈希函数所代表的节点无扇出,每个节点所代表的数值是其扇出节点所代表的哈希函数的输入。
(5) .将哈希函数输入的顺序任意变化;和/或,将哈希函数的所有输入换为所有输入的并集,即重复的元素在输入中只出现一次;和/或,将哈希函数换为任一个输出为整数的函数;和/或,应用在每一处的哈希函数与应用在其它处的哈希函数相同或不同;艮卩,我们使用一组哈希函数(/f,,//2, ■ // },其中对于任意的f',J',l"》'S",^y , //,.=/^.或
巧#/^, w^l且"是我们需应用哈希函数的次数的上界。
(6) .不同的密钥导出函数应用在每一处的密钥导出函数与应用在其它处的密钥导出
函数相同或不同;即,我们使用一组密钥导出函数{/:/^,/:"《,...《"《},其中对于任意
的/,力lS/JS""7 j,尺Df = 或-,n^l且w是我们需应用密钥导出函
数的次数的上界。
(7) .在所有方法中用户"A"检査i^^le,用户"B"
(8) .对于基于椭圆曲线的实现,将密钥导出函数输入中的^,&换为&,&的"^标值或^-坐标值;每个用户检查对方用户的DH-密钥成分的x-坐标和少-坐标是椭圆曲线
所基于的有限域中的正确编码的元素。
(9) .出错中止和出错信息返回在所有的方法中, 一旦一个用户因检查不通过,即出错,而中止协议,发回或不发回出错信息;在基于口令的实现方法中,客户"A"只允许出错有限次,以防止在线攻击。
(10) .会话标示符和用户协议角色标示方法会话标示符一般由用户"A"和"B"发送的两个随机数或DH-密钥成分以初始者-响应者的顺序串联构成;用户的协议角色标示一般用不同的整数或者由用户"A"和"B"发送的随机数或DH-密钥成分的不同顺序来标示。
(11) .在本发明方法和本发明应用于抗拒绝服务攻击保护用户隐私的应用中,用户"A"检査确认y^I;若F-I,用户"A"则中止协议运行。
本发明密钥交换方法具有如下特点
1.与发明人于2008年7月8日递交的申请号200810040311. 5的专利申请书的权利要求-1的实现方法-4相比,本发明申请书的权利要求-1中的实现方法的主要不同在函数c^,e,/的设置方法不同,有如下特点(a) .在实现方法-l中,i^,X,的计算仅需要l个哈希运算(这是最优的)。
(b) .实现方法-2、 3和4中函数c^,e,/的设置具有如下优点(1)可以允许用户先发送DH-密钥成分后发送公钥证书。此时,在i^^B一+一;r一w eG'的计算中,"arf+(4X/的计算不涉及用户"b"的身份和公钥,因此产一"^可以在收到用户"b"的身份和公钥之前进行计算。同样,在^-乂一"^X^"""G'的计算中,义^+W的计算不涉及用户
"a"的身份和公钥,因此jt^+'^可以在收到用户"a"的身份和公钥之前进行计算。这一方面进一步保护了用户隐私,另一方面又大大便利了^^,」^计算的模块化和并行化。另外,将随机数iU乍为函数c的输入,将随机数A作为函数J的输入,以及将^/作为函数/的输入,亦大大加强了协议的安全性和鲁棒性。
(c) .在实现方法-5中,通过在函数c和J输入中分别增加可能不同的ma^和^/^使得函数c和J的输出不同,从而可以有效抵抗重放攻击;通过在函数c和d输入中分别增加随机数^和A,在函数/的输入中增加wV/,使得用户"a"可在一定的时间内重复使用相同的i,用户"b"可在一定的时间内重复使用相同的:r,而仍然保证《^,A^的随机性。另外,在函数c和d输入中(/^,^l)与(/s,S)具有不同的顺序;具体来讲,在函数c输入中的顺序为(/,乂4,5),在函数d输入中的顺序为(^,B,/^J),这进一步加强了协议的安全性和
鲁棒性。还有,函数/的输入中可仅包含(x,y),这进一步增加了计算的效率、模块性和并行性。
(d) .实现方法-6的主要特点是函数c的输入中不包含用户"B"的身份和公钥信息和DH-密钥成分y的信息,因此用户"A"在知道用户"B"的身份和公钥信息和DH-密钥成分信息之前就可以事先离线计算^xc,从而提高在线计算效率。同样,函数d的输入中不包含用户"A"的身份和公钥信息和DH-密钥成分X的信息,因此用户"B"在知道用户"A"的身份和公钥信息和DH-密钥成分信息之前就可以事先离线计算 jc/,从而提高在线计算效率。另外,通过在函数c和c/输入中分别增加随机数A和^以及"u^和"z/^,在函数/的输入中增加^/,使得用户"a"可在一定的时间内重复使用相同的z,用户"b"可在一定的时间内重复使用相同的y,而仍然保证i^,J^的随机性,这增强了协议的安全性,易用性和鲁棒性。
(e) .实现方法7特点是在函数c的输入中不包含用户"B"的公钥和DH-密钥成分信
息(但包含用户"B"的身份信息);函数"的输入中不包含用户"A"公钥信息和DH-密钥
成分的信息(但包含用户"a"的身份信息)。与实现方法-5相比,这进一步增强了协议的
安全性和鲁棒性。另外,用户"A"在知道用户"B"的公钥信息和DH-密钥成分信息之前仍可以事先离线计算^cc,用户"B"在知道用户"A"的公钥信息和DH-密钥成分信息之 前仍可以事先离线计算^W。另外,通过在函数C和"输入中分别增加随机数i ,和&以及 ma,和ata,,在函数/的输入中增加wW,使得用户"A"可在一定的时间内重复使用相同 的X,用户"B"可在一定的时间内重复使用相同的y,而仍然保证《,,^^的随机性,这增
强了协议的安全性,易用性和鲁棒性。
(f) .在实现方法-8中,函数c的输入中除不包含用户"B"的公钥和DH-密钥成分信 息之外,还不包含用户"A"的身份和公钥信息;函数J的输入中除不包含用户"A"的公 钥和DH-密钥成分信息之外,还不包含用户"B"的身份和公钥信息;与实现方法-6相比, 这增强协议的计算的效率。另外,通过在函数c和J输入中分别增加随机数i ,和^以及 "肌,和"肌s,在函数/的输入中增加wW,使得用户"A"可在一定的时间内重复使用相同 的I,用户"B"可在一定的时间内重复使用相同的r,而仍然保证《^^s的随机性,这增
强了协议的安全性,易用性和鲁棒性。
(g) .实现方法-9是安全性最强的实现方法。其特点为函数c^,e,/的输入中包含不同 的p"6值,并且函数c乂e,/的输入中均可包含所有的DH-密钥成分(U);在函数c和J输 入中分别增加随机数&和&以及和,在函数/的输入中增加《V/ 。所有这些措施 进一步增强了协议的安全性,易用性和鲁棒性。
本发明所给出的密钥交换方法适用于分布式的客户-服务器环境,其中用户"A"作为 客户,用户"B"作为服务器。客户"A"可事先知道服务器"B"的公钥;为了保护客户 的隐私,只有在服务器"B"已经向客户"A"成功证明了 " B"的身份之后,用户"A" 才向服务器"B"展示并证明自己的身份;但是,另一方面,服务器"B"要提防拒绝服务 攻击,希望在检测到拒绝服务攻击之前做尽量少的计算。
本发明给出的密钥交换方法兼顾了保护客户"A"的隐私保护,和服务器"B"的拒绝 服务攻击能力。具体来讲,客户"A"只有在服务器"B"在第二轮成功地证明了用户"B" 的身份之后,才在第三轮发送客户"A"的身份和公钥信息;令一方面,服务器"B"只需 在第二轮在线做一个指数运算即《;=X咖+'^ e G'从而得到认证密钥《'(因为DH-密钥y 可事先计算甚至重复使用),并在第三轮首先检査《的有效性从而以一个在线指数计算的 代价(而不是计算整个X,^ '^r一+'^eG'的代价)检测可能的恶意客户"A"发起 的拒绝服务攻击。
本发明给出的无公钥证书的Diffie-Hellman密钥交换方法是目前为止最为高效的无 公钥证书的密钥交换方法。其特点为每个用户只需做一个双线性对计算,并且该双线性对计算可事先离线计算(即在收到对方用户的DH-密钥成分之前事先计算)。在线计算可归 约为仅仅一个指数运算,这是最优的(是目前已知的无公钥证书密钥交换方法所无法做到 的)。
本发明给出的公平的Diffie-Hellman秘密生成方法具有如下特点生成的 Diffie-Hellman秘密为^-尺广g城n—'2)(而不是传统的g")。这样做的优点在于,
在random oracle模型下(即将哈希函数H视作为一个随机函数),诚实的用户"A"能够 保证/^-i^-g-W7'—'。是随机分布在f为生成元的子群中(即便用户"B"是恶意的, 即y可以是用户"B"在Z《中任意选取的值而非随机选取);同样,诚实的用户"B"能
够保证/^=《8=^一"〗'—'"是随机分布在^为生成元的子群中(即便用户"A"是恶意 的,即x可以是用户"A"在Z《中任意选取的值而非随机选取)。
5.与Burmester-Desmedt群密钥交换方法以及其它所有基于Bur鹏ster-Desmedt方 法的群密钥交换方法相比,本发明所给出的方法的主要不同在于在我们的方法中,用户 f/,计算Z,X卜"c'、 《+1=X,+1''w'+1 , 其中c,-//(zW^X'—"t/(,X,.)或 c, ="Z,4,""Z,) , = + 或= F(f/,,《,",+1,Xw);而在
Burmester-Desmedt群密钥交换方法中,用户f/,计算Z, = X,—^ 、 Z,+1 = Z,./'。我们最近注 意到,Burmester-Desmed群密钥交换方法是不公平的(同时不安全)。具体来讲,我们发 现了 Bunnester-Desmed方法的目前尚未被发现的新的安全漏洞。使用我们的攻击,诚实 用户的贡献将被完全屏蔽。而我们新的群密钥交换方法借鉴了公平Diffie-Hellman密钥 交换的思想和方法,可以有效地防止我们所新发现的针对Burmester-Desmedt群密钥交换 协议的攻击。
具体实施例方式
具有身份力的用户"A"的公钥是」=/并具有证书C战冗,具有身份A的用户"B"的 公钥是S- 并具有证书CF7 7fl。证书颁发机构CA在颁发证书之前,检查确认XeG/le和 SeG/lc。我们假设用户"A"为协议运行初始者(initiator),即先发送DH-密钥成分 X = gxeG; "5"为协议运行响应者(responder),即收到X之后发送DH-密钥成分 r-g少eG。其中a,x,6j从Z《中随机选取。
在下述协议具体实施中,消息认证码鹏C采用由IETF(Internet Engineering Task Force)所公布的第2104号互联网意见征求文档(Internet RFC 2104)中所描述的 认证码。/M4C只需作两个哈西运算,并被证明既是消息认证码又是伪随机函数。在协议具体实施中,//朋C以及哈西函数仏i^由57^-7哈西函数来实现。对称加密采用NIST (美国 标准与技术局)的标准所规定的AES算法。 实施例l:
事先计算用户"A"可事先计算X:g、G , ^^=,3^4=# 和^"—eG',其 中W为有限域G'的阶;用户"B"可事先计算y-g^G J=r2=~=^=iV/^t],m°d< eG'。 第一轮用户"A"发送(C五i 7^,;n ;
收到(C五i L,;n后用户"B"检査C五i 7^的有效性和Ze(7/lc;任何检查不成功,用
户"b"中止协议执行。若检查通过,用户"b"计算/:i/(^乂/e,5,x,;r), x'"W"—;
用户"B"检査确认X争刺^le,若X'^別"c用户"B,,中止协议执行并返回出错信息; 若,("zw"^用户"b"计算i^-h'("別eG'(其中爿'戶一eG'可事先计算的),计算 (02) —//0^,/,1)//(^,/,2)…//0^,/,0,其中^1由一个计数器来实现,i的取值依 赖于",&)的长度,即直到//(^3,/,1)//(&,/,2) //(^,/,/)的长度大于等于",^)的长 度;如果",&)的长度为/,我们令"^2)为//(^ ,/,1)//(/:5,/,2) —的长度为/ 的前缀。
第二轮用户"B"发送(C^ i;,IVs^HM4C^(l)〉;
收到"B"发送的信息后,用户"A"检査C5i 7^的有效性和yeG'/lc;任何检査不成 功,用户"A"中止协议执行并返回出错信息;若检查通过,用户"A"计算 /-//(/^A/s^,^), eG';用户"A"检査确认y'(。+冈^ 1G ,若=10用户
"A"中止协议执行并返回出错信息;若y"。+到^G,用户"A"计算^=5"}^+/" eG'(其 中^m—eG'可事先计算的)。用户"A"计算",&)<_//(&,/,1)//(^,/,2)—//(^0/,0, 其中Ql由 一个计数器来实现,J'的取值依赖于",&)的长度,即直到 //(^,/,1)//(、,/,2)…//(&,/,/)的长度大于等于(、&)的长度;如果",&)的长度为/, 我们令(^&)为//(^,/,1)//(^,/,2)…//0^,/,/)的长度为/的前缀。用户"A"检査 ^二7/M4&'(1),如果^-Z/M4C;,(l)则将会话密钥设为^并进入下一轮,否则(即 ^ * /fll"C、(1))中止协议执行并返回出错信息。 第三轮用户"A"发送^二/ZM4C、(0)〉。
收到^后,用户"B"检査^^肌"C&(0)。如果^^/fM4(^(0)用户"B"将会话密 钥设为&,成功结束协议;否则(即G^/0"(^(0)),用户"B"中止协议执行并返回出错信息。
实施例2:公钥证书在DH-密钥成分发送之前或同时发送时的
具体实施例方式
事先计算用户"A"可事先计算1 = ^£(7 ,随机数^〃42=^="=^ ;若用 户"A"事先知道用户"B"的身份和公钥,则可事先计算c二/7(i^,/s^,X)和5',。d、G', 其中W为有限域G'的阶;用户"B"可事先计算y = g少e G ,随机数i s , f =f2= f3 - " = W ; 若用户"B"事先知道用户"A"的身份和公钥,则可事先计算^ = //(^,厶,^,;0和 乂W" eG'。在具体实施中,用户"A"和"b"可不产生和发送随机数^和^ (即在下
述具体实施中,将i^和i^去掉);或者,只有一个用户(比如用户"B")发送随机数。 第一轮用户"A"发送(C^^,i^,X);
收到(C五/^,A,X》后用户"B"检査C五7^的有效性和XeG'/lc,检查i^为规定长 度的字符串;任何检査不成功,用户"B"中止协议执行。若检查通过,用户"B"计算
/ = i s,x,;r)、 0 = //(; /1,/3^,^)和义'("別咖11 ;用户"b"检査确认jr'^+別^iG,
若1,+別=16,用户"B"中止协议执行并返回出错信息;若1 幻6,用户"B"计算 尺s =e G'(其中^W"eG'可事先计算的),计算计算 —//(i^c^^/ZC/^qflUh'/fCfi^c^,/),其中Q1由一个计数器来实现,j'的取 值依赖于",&)的长度,即直到7/(^,c乂l)i/(^,c乂2)…7/C乂z')的长度大于等于 的长度;如果(A,A:2)的长度为/ ,我们令",&)为 //(^,c,d,1)//(/^,c,flf,2).. ,c,of,/)的长度为/的前缀。
第二轮用户"b"发送{<^£及7;工^,^ = ^1"(^(1)};
收到"b"发送的信息后,用户"a"检査c五i 7;的有效性和;reG'/ie以及A为规定
长度的字符串;任何检査不成功,用户"A"中止协议执行并返回出错信息;若检查通过,
用户"a"计算/= i s,x,:n、 c/ = //(i fi,/〃^,;r:^n"aw) eG';用户"a"检查确认 r'一+到-^,若产一+到=1。用户"a"中止协议执行并返回出错信息;若r'…到#16,用
户"A"计算^=5&了'一+到eG'(其中庐,d、G'可事先计算的)。用户"A"计算计算
(、^2)仨丑0^^乂1)//0^^乂2》"7/(^^乂/),其中/^1由一个计数器来实现,j'的取
值依赖于(A,&)的长度,即直到//(^^乂1)//(/^,£:乂2)...//0^^乂/)的长度大于等于
",&)的长度;如果",^)的长度为/ ,我们令(&,&)为
,c,d,1)//(/^,c乂2)…,c,fl ,/)的长度为/的前缀。
用户"A"检査fs = /aWC、 (1),如果^ = /flkWC^ (1)则将会话密钥设为&并进入下一轮,否则(g卩^ - HM4C4i(l))中止协议执行并返回出错信息。 第三轮用户"A"发送{^ = //^4<^(0)}。
收到G后,用户"B"检查^ = //^4<^(0);如果"=//^4(^(0)用户"B"将会话密钥 设为&,成功结束协议;否则(即^^/ZM^^(0)),用户"B"中止协议执行并返回出错 信息。
实施例3:公钥证书在DH-密钥成分发送同时或之后发送时的
具体实施例方式
事先计算用户"A"可事先计算X-g、G ,随机数A, ?42=f3=r4=iV ;若用 户"A"事先知道用户"B"的身份和公钥,则可事先计算c^i/(i^,/s,5,X)和W—eG', 其中yV为有限域G'的阶;用户"B"可事先计算y-^ eG,随机数&〃42=,3 =r4 =7V/《; 若用户"B"事先知道用户"A"的身份和公钥,则可事先计算^ = //0^,^,4}0和 」一HK^eG'。在具体实施中,用户"A"和"B"可不产生和发送随机数^和A (即在下 述具体实施中,将^和A去掉);或者,只有一个用户(比如用户"B")发送随机数。 第一轮-用户"A"发送{^,1};
收到{^,1}后用户"B"检査XeG'/le,检査^为规定长度的字符串;任何检査不成 功,用户"B"中止协议执行。若检査通过,用户"B"或者直接进入进入下一轮(比如, 当用户"B"比较忙或感觉遭受拒绝服务攻击时);或者(比如,用户"B"较清闲时),用 户"B"计算/ = i^,y,y)、 c-i/C^,/s,5,义)和X一+W"1—,用户"B"检查确认
Z一+別^le,若Z'^+刺^e,用户"B"中止协议执行并返回出错信息,若X一+刺d。则 进入下一轮。
第二轮用户"b"发送(c五i 7^,:r,i^〉。
收到"B"发送的信息后,用户"A"检查C五i ;的有效性和reG7le以及^为规定
长度的字符串;任何检査不成功,用户"A"中止协议执行并返回出错信息;若检査通过, 用户"A"计算/ = //(^,^,1,:0、 ^ = //(^,^』,^0、 "-//(i^/^AlO;如果用户"A" 已经事先计算^""1—则用户"A"计算"。"到eG',检查确认"。"到;若 r'一+W =16,用户"A"中止协议执行并返回出错信息,若7'—+到#16,用户"A"计算 eG'。如果用户"A"无事先计算5"③—eG',则用户"A"计算 & = JStte r一+冈eG',检查确认i^-lc,若^^c,用户"A"中止协议执行并返回出错 信息。用户"A"计算^^2)<"丑(^^乂1)^(^^乂2)."//(^,乂/),其中^1由一个计数器来实现,i的取值依赖于(^,&)的长度,即直到//0^^乂1)//(/:/^乂2) //(^^乂0
的长度大于等于(A,b)的长度;如果",&)的长度为/ ,我们令",^)为 ,c, d,l)/Z(i^, c乂2)…,c, A0的长度为/的前缀。 第三轮用户"A"计算并发送{<^及7^^ = / "&|(0)}。
收到用户"A"发送的信息后,用户"B"首先检査c五; r,的有效性,若无效则中止协 议运行;若检查通过
(a) .若用户"B"已计算义'^+^"1—并检查确认Z'一+別^le,则用户"B"计算
(b) .若用户"B"尚未计算X,+別"^,则用户"B"计算d = J,y)、 /,H")、 c-Z/C^,/B,5,X)和^^^^:,+別eG'。用户"B"检査确认 ^^le,若^-l^用户"B"中止协议执行并返回出错信息。
用户"B "计算, &) — , c,《1)//(^, c,《2)' //(^,c乂, /),其中/ 21由 一个计数 器来实现,i的取值依赖于",&)的长度,即直到/f(^,c,c/,l)H(i^,c,A2)…7/(i^,c乂/) 的长度大于等于",&)的长度;如果",&)的长度为/ ,我们令",&)为 //0^^^,1)//0^^乂,2》..//(^4^^,/)的长度为/的前缀。
用户"B"检查^=肌"&1(0);如果/_4=//71"<^(0)用户"B"将会话密钥设为&,并 进入下一轮;否则(即^^/ZM4C;(0)),用户"B"中止协议执行并返回出错信息。
第四轮用户"B"发送^^HM4C、(1))。
收到^后,用户"A"检査^二ffl"q(l);如果^-HM4C^(l)用户"A"将会话密钥 设为&,成功结束协议;否则(即^-//71"(^(1)),用户"A"中止协议执行并返回出错 信息。
(注在上述具体实施中,用户"B"也可在第四轮发送自己的公钥证书和^,用户 "A"在额外的第五轮发送^。) 实施例4:
事先计算用户"A"可事先计算X-g、G ,随机数A, z^2=f3="=iV ;若用 户"A"事先知道用户"B"的身份和公钥,则可事先计算c^/f(0,&,/^A/s,AI)和 ^xc咖"eG',其中7V为有限域G'的阶;用户"B"可事先计算F-g少eG,随机数^, /=/2=^=^=iV ;若用户"B"事先知道用户"A"的身份和公钥,则可事先计算c/ = //(1, 5B, /B, 5, ^, J, 和#d m°d 9 e G'。
在具体实施中,用户"A"和"B"可不产生和发送随机数A和A (即在下述具体实 施中,将^和^去掉);或者,只有一个用户(比如用户"B")发送随机数。在具体实 施中,也可将函数c输入中的0和/或函数d输入中的1去掉。
第一轮用户"A"发送(C五i 7^,^,;n ;
收到(CjS7 7^,a后用户"B"检查C五i L的有效性和ZeG'/le,检查^为规定长度 的字符串;任何检査不成功,用户"B"中止协议执行。若检查通过,用户"B"计算 c-Z/^i^/^A/^A^L / = //(c,cO、和1'(*"刺咖";用户"B"检査确认Z'("別-1G,
若义 =1^用户"B"中止协议执行并返回出错信息;若义 #1^用户"B"计算
《B = J^I,+^ e G'(其中 jW "eG'可事先计算的),计算 (02) —7/(^,/,1)//C^,/,2)…//0^,/,/),其中/》1由一个计数器来实现,i的取值依
赖于",^)的长度,即直到//(^,/,1:^(^;,/,2)—//(^},/,/)的长度大于等于"^2)的长
度;如果(、a2)的长度为/ ,我们令(&,&)为,/,1)単8,/,2)…,/,0的长度为/
的前缀。
第二轮用户"b"发送(csi j;,;r,AA = //M4C、(i)};收到"b"发送的信息后,用
户"A"检査C五i 7;的有效性和l^G7le以及&为规定长度的字符串;任何检査不成功, 用户"A"中止协议执行并返回出错信息;若检查通过,用户"A"计算 c^/Zai^VA/^yU^ / = //(c,cO、和"。"到eG';用户"A"检查确认^(。"《 若y一+到=1。用户"a"中止协议执行并返回出错信息;若W刮-le,用户"a"计算
^^^c;T(。"到(其中可事先计算的)。用户"A"计算 —//(^,/,1)//(^,/,2)…//(^,/,/),其中Q1由一个计数器来实现,i的取值依 赖于(、&)的长度,即直到//(i^, , /,2) ■. ,/, 0的长度大于等于, &)的长
度;如果, a2)的长度为/,我们令(W)为, /,1)単^, /,2)…, /, /)的长度为/ 的前缀。用户"A"检查^ = //MZC、 (1),如果^ = //MXC、 (1)则将会话密钥设为&并进入 下一轮,否则(即^-ZfM4C^(1))中止协议执行并返回出错信息。
第三轮用户"A"发送{^ = //M4<^(0)}。收到G后,用户"B"检査^ =//M4Ct|(0); 如果^=//M4Cti(0)用户"B"将会话密钥设为&,成功结束协议;否则(即 G^i/il"(^(0)),用户"B"中止协议执行并返回出错信息。实施例5:
事先计算用户"A"可事先计算J^^^eG ,随机数A J42=f3=~=iV ;若用 户"A"事先知道用户"B"的身份和公钥,则可事先计算^ = //(^,/3,5,1)和5,°£1^0', 其中〃为有限域G'的阶;用户"B"可事先计算7 = ^ eG,随机数^, ,=/2=r3=,4 = iV ;
若用户"b"事先知道用户"a"的身份和公钥,则可事先计算^ = //(^,/^乂:0和
爿o^一eG'。在具体实施中,用户"A"和"B"可不产生和发送随机数^和^ (即在下 述具体实施中,将A和&去掉);或者,只有一个用户(比如用户"B")发送随机数。 第一轮用户"A"发送{^,义};
收到(i ,,JH后用户"B"检査XeG'/le,检査&为规定长度的字符串;任何检查不成 功,用户"B"中止协议执行。若检查通过,用户"B"计算/ = //(^,^,1,10、 ^ = //(^,//),3,;0和^ =X,"/)m。d、用户"B"检査确认1 #10,若义'(*"別=1。 用户"B"中止协议执行并返回出错信息;若,用户"B"计算 K' — H(i^,/,c,l)H(^,/,c,2)…其中/ 21由一个计数器来实现,i的取值依 赖于《'的长度,即直到//(^,/,c,l)//(^,/,c,2》..//(i^,/,c,0的长度大于等于《'的长 度;如果iT的长度为/',我们令K'为, /,c,l)/Z(^, /,c,2)…,/, c, /)的长度为/'的 前缀。
第二轮用户"B"发送{<^^7;义^,《=//細(^,(1)}。
收到"B"发送的信息后,用户"A"检查C五i K的有效性和yeG7lc以及i^为规定
长度的字符串;任何检查不成功,用户"A"中止协议执行并返回出错信息;若检査通过, 用户"A"计算d = /」乂10、 / = A,U)、并做如下计算
(a) .若用户"A"已经事先计算5'",则用户"A"计算l^eG';用户"A"检査确认 J^^le,若""^le则中止协议运行;若r^-l。用户"A"计算K; = B加r^ e G';
(b) .若用户"A"无事先计算B"、则用户"A"计算^^5加;T,eG';用户"A"检 査确认4 "e ,若"=k则中止协议运行;
用户"A"计算/T —c,l)i/(/^,/,c,2)…7/(i^,/,c,/),由一个计数器 来实现,i的取值依赖于《'的长度,即直到//0^,/^,1)//(^,/>,2)...//(^,/>力的长 度大于等于K'的长度;如果《'的长度为/',我们令尺'为 //(/^/^^//(^^/^^—//C^,/^,/)的长度为/'的前缀。
用户"A"检査确认《=/^"(^,(1),若检查不通过(即《-i7M4Cf(1))则中止协议运行。若检査通过,用户"A"计算r^eG';若《-是在上述情形(b)生成,用户"A"检 查确认产^le,若r^"e则中止协议运行。用户"A"计算&="}^ eG',计算 — c乂l)/f(&,c乂2)…i/(^,c,d,/),其中/Sl由一个计数器来实现,J'的取
值依赖于(^,^)的长度,即直到//(《/1^乂1)〃0^^乂2) //(^4^乂0的长度大于等于 的长度;如果",^)的长度为/ ,我们令为 //(A, c, c/,l)/Z(^ , c乂2)…//(&, c乂 /)的长度为/的前缀。
用户"A"计算G = //M4、(0),计算^ = //M4CV(wA/^",其中wW = 或 wW = i B或= (Z, 或= 7 。
用户"A"将&设为会话密钥,并进入下一轮。
第三轮用户"A"向用户"B"发送(C5i L^:j。
收到用户"A"发送的信息后,用户"B"首先利用《'检查/;1=//雄(^,0/《/,,0; 若检査不正确(即6*//爐<^,0 ^/^^))用户"B"中止协议运行,返回或不返回出错 信息。若^ = //脇<^,(^/,/"^),用户"B"检査C五i L的有效性,若检査不通过,则中 止协议运行,返回或不返回出错信息;若C5i^有效,用户"B"计算"=//(&,4乂}0、 《s = e G'。用户"B "计算, & ) e T/(i^, c, i/,l)i/(、 , c乂2) ■ ■, c, 0 ,其中
由 一 个计数器来实现,i的取值依赖于的长度,即直到 ,c,,c,d,2)…,c乂/)的长度大于等于",& )的长度;如果",&)的长度 为/ ,我们令, &)为, c, d,1)//(/^, c, c/,2)... //(^4,c, A/)的长度为/的前缀。
用户"B"检査确认^ = //雄&,(0),若检査不通过(艮卩^^/ZJ^4C;,(0))用户"B" 中止协议运行;若检查通过(即^=/^"(^(0)),用户"B"将&设为会话密钥并成功结 束会话。
权利要求
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).协议会话标示符sidsid用于标示同一协议的不同的并发运行会话;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包含协议初始者与响应者的公钥与身份或用户名信息,即 id="icf0001" file="A2008100414750003C1.tif" wi="33" he="4" top= "140" left = "51" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>或 id="icf0002" file="A2008100414750003C2.tif" wi="42" he="4" top= "140" left = "91" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>(7).密钥导出函数KDFKDF(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”计算 id="icf0003" file="A2008100414750004C1.tif" wi="48" he="4" top= "100" left = "21" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>用户“B”计算 id="icf0004" file="A2008100414750004C2.tif" wi="48" he="4" top= "100" left = "101" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>其中,ti=1或 id="icf0005" file="A2008100414750004C3.tif" wi="6" he="9" top= "98" left = "179" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>1≤i≤4;用户“A”事先计算X和 id="icf0006" file="A2008100414750004C4.tif" wi="23" he="3" top= "112" left = "86" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>用户“B”可事先计算Y和 id="icf0007" file="A2008100414750004C5.tif" wi="23" he="4" top= "112" left = "162" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>实现方法的关键是函数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”先计算 id="icf0008" file="A2008100414750004C6.tif" wi="25" he="4" top= "181" left = "125" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>用户“A”先计算<maths id="math0001" num="0001" ><math><![CDATA[ <mrow><msup> <mi>Y</mi> <mrow><msub> <mi>t</mi> <mn>3</mn></msub><mi>ad</mi><mo>+</mo><msub> <mi>t</mi> <mn>4</mn></msub><mi>xf</mi> </mrow></msup><mo>&Element;</mo><msup> <mi>G</mi> <mo>&prime;</mo></msup><mo>;</mo> </mrow>]]></math></maths>实现方法-(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”先计算 id="icf0010" file="A2008100414750004C8.tif" wi="25" he="3" top= "233" left = "103" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>用户“A”先计算 id="icf0011" file="A2008100414750004C9.tif" wi="24" he="4" top= "233" left = "161" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>实现方法-(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会泄露,则令 id="icf0012" file="A2008100414750005C1.tif" wi="37" he="9" top= "266" left = "103" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>用户“B”检查确认 id="icf0013" file="A2008100414750006C1.tif" wi="22" he="5" top= "27" left = "21" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>或 id="icf0014" file="A2008100414750006C2.tif" wi="23" he="4" top= "27" left = "49" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>或KB≠1G,用户“A”检查确认 id="icf0015" file="A2008100414750006C3.tif" wi="23" he="4" top= "27" left = "133" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>或 id="icf0016" file="A2008100414750006C4.tif" wi="22" he="4" top= "27" left = "162" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>或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"有离散对数公钥^二g"并发送DH-密钥成分X-^,用户"B"有离散对数公钥B二g^并发送DH-密钥成分7 =,;记C五i r,为用户"A"的公钥证书,C五/ 7^为用户"B"的公钥证书;用户"A"发送或不发送随机数i^,用户"B"发送或不发送随机数^;flUX^和"Wxs均为空值或相同的值或字符串,或者crn^和flwxB为任意数值或字符串并且(=1或!, 1S"4;其设置方法为(1).若用户"A"检查确认5eG,:FeG,用户《"B"检查确认爿eG,ZeG,贝1』令^=^=^3=^4=1 ; (2).若用户"A"仅检査确认3eG, ZeG'或XeG'/le,而不能确认IeG ,用户"B"仅检査确认爿eG, ;FeG'或yeG71a,而不能确认FeG,且x和/或少会泄露,贝1』令^=1,/2=^= 4=!,用户"B"《检査确认Z^"^^lG ,用户"A"检查确认r'一-lG和/或W7'^-lG和/或y'"-lG ;若x,少均不会泄露,仍同(1)可设^= 2=/3=,4=1;任何检查不通过,则中止协议运行,返回或不返回出错信息;第一轮用户"A"向用户"B"发送(X,ataJ或(X,置^,i J ;收到"A"发送的信息后,用户"A"检查XeG'或XeGVlc或义eG或ZeG/lc;若检査不通过,则中止协议运行,返回或不返回出错信息;若检査通过,用户"B"计算r , ^ = e G';其中,c = i/(awjc力,/s , S, Z)或c = //("ta力,/fl, 5, ^ , X) 或c = //(auxs,/£,B,Z) 或c:7/(a"Xa,/0,5,i s,JQ ; / = //(义,:^) 或 / = //(Xl,r)/ = //0^2,义,0;其中,用户"B"可事先计算y、 C和^C;用户"B"利用密钥导出函数由/^及(/,c,义,:r,^/,^,^,/70的一个子集导出认证密钥r:用户"B"利用标签认证函数&计算4 ^i^(iT,ato0,其中a叫是《AX^,Z,;r,i^,;7"69)的一个子集,s!W是会话标示符,^是用户"B"的协议角色标示;第二轮用户"B"向用户"A"发送仏,5,r,""Xe,0或仏,5工""^,A,";其中,(/3,6)替换为用户"B"的公钥证书c^ 7;;收到用户"B"发送的信息后,用户"A"检查C5及7;的有效性,检查reG'或reG'/lc或yeG或FeG/l。;若检查不通过,则中止协议运行,返回或不返回出错信息;若检查通过,用户"A"计算c、 /和K;^B""T'"eG';用户"B"由K〗导出认证密钥K',并利用《'检査^ =尸,(/ ',0叫)的正确性,若检查不通过,则中止协议运行,返回或不返回出错信息;若检査通过,用户"A"计算^=(^7""5''",—eG',其中J =//(m^,/力乂y)或^ = //0^,/4, J,^,;r)或d二i/(m^,^,A:n或fl^^"0"^,乙,^,i^,F); eo或i或//0喊);其中用户"A"事先计算Z、 S'"eG', 5'^eG';用户"A"利用密钥导出函数由^^及(/,c,c/,e,义,:r,A,/^,;wZ^的某个子集导出认证密钥&和会话密钥& ;用户"A"计算^ = Fr(、awx。),其中cwx。是卩^X^,/^,X,;r,/n^J的一个子集且ma。^m^ , ^是用户"A"的协议角色标示;用户"A"计算或不计算^ = Fr(K',aia;),其中仰JC;是{/4, AG,"'cf,。,U,/^,i^,/w&10}的一个子集且a"《右a似,;第三轮用户"A"向用户"B"发送(K^,"或仏乂/丄其中仏,J)替换为用户"A"的公钥证书C5i L;收到用户"A"发送的信息后,若用户"A"在第三轮发送(/^J,^^J,用户"B"首先利用《'检査^=&(《',0欲。,若检查不正确用户"B"中止协议运行,返回或不返回出错信息;若6-FJ《X),用户"B"检査C五i L的有效性,若检查不通过,则中止协议运行,返回或不返回出错信息;若C五灯4有效,用户"B"计算^ = ^"一x'—" e G',并利用密钥导出函数由A及(/,c,c/,e,Z,y,A,^,^W的某个子集导出认证密钥A和会话密钥&;用户"B"利用认证密钥^检查^ = 的正确性,若检查不通过,则中止协议运行,返回或不返回出错信息;若检査通过,进行或不进行第四轮;第四轮用户"B"计算并向用户"A"发送(W,其中^ =^(4,^:^), m/x一 aux。;收到用户"B"发送的信息后,用户"A"利用认证密钥i '检查^的正确性;若检查不通过,则中止协议运行,返回或不返回出错信息。
3. 如权利要求1所述的高效、公平的密钥交换方法的应用,其特征在于应用于无公钥证书且在线计算高效的密钥交换方法,具体步骤如下设s : x(/ — G是一个合格的多项式时间可计算的双线性映射;其中Gf是一个阶为《的加法或乘法群,1^为其单位元;不失一般性,记C^为加法群;记P为(^的生成元;s:GrxGr ~>(7满足e(xP,;^^fCP,P;r且e(尸,尸)"Gr ;记/^ : {0,1}'4 Gr为一个哈希函数;用户"A"除了公钥爿=^£(7外,另有一个基于身份的公钥仏=/^(//4)或^ = //7'(^")或01=/^(/_4乂尸。);用户"B"除了公钥5: eG夕卜,另有一个基于身份的公钥&=^("或&=/^(4,5)或&=/^(^,&尸。);其中,尸。=^£(/为一个可信的第三方C4的公钥,C4的私钥为"Z—用户"A"除了私钥"之外另有私钥&w仏,其中^-s仏由C4计算并安全地传送给用户"A";用户"B"除了私钥6之外另有私钥& = s& ,其中SB = 由C4计算并安全地传送给用户"B"。
4. 根据权利要求1所述的高效、公平的密钥交换方法,其特征在于含有公平的Diff ie-Hellman密钥交换方法设用户"A"发送DH-密钥成分1 = ^£(7,用户"B"发送DH-密钥成分]^g、G';用户"A"计算Diffie-Hellman秘密^,F",用户"B"计算Diffie-Hellman秘密《fi=rc;其中£; = //(^,7,;7^12)。
5. 如权利要求4所述的高效、公平的密钥交换方法的应用,其特征在于该方法采用公平的Diffie-Hellman密钥交换方法应用于高效、公平的群密钥交换方法,具体步骤如下设有"个用户^,^,…R, ">2,想建立一个共同的Diffie-Hellman秘密;用户R的DH-密钥成分记为X,g eG',其中B"", x^Z"我们设下标/是modn计算;对于任意的/mod",用户f/,计算Z^X卜/'^ 、 2,.+1=义,+1'"'^'+1和7;=^ ,其中c, 或c,i/("w,^—,。+1 =//("l,";,X,或&+1 =//(t/,.,x,.,f/,.+1,i,+1); t/,.将7;通知给所有其它用户,但可将《只通知给t/,—,和t/,+,;对于任意的/mod",用户R计算Diffie-Hellman秘密= (z,)"(7;)"—'(7^)"—2…(7;—3)27;_2 e g';会话密钥和认证密钥利用密钥导出函数由《及(^/,t/,,f/2,…,t/",7;,r2,…,:o的一个子集导出;(=1或!;若对于任意的/ mod ",用户C/,.检查确认I,—,,均为G或G/le中的元素,《则6=^= ^=1;若对于任意的;mod",用户f/,仅检查确认《—pI^为G'中的元素,而不能确认为G中的元素,则^^2^^ =!,用户R检查确认Z^l。Z,.+^^和/或《《#le,若检査不通过则返回出错信息并中止协议运行。
6.如权利要求1-5之一所述的高效、公平的密钥交换方法及其应用,其特征在于应用于变体的某个子集,具体步骤如下(1) .将哈希函数输入中的(/z,j)替换成(乙,乂)的哈希值,并将(/,,j)的哈希值包含在用户"A"的公钥证书中;将哈希函数输入中的(/8,5)替换成(/3,^的哈希值,并将(/"5)的哈希值包含在用户"B"的公钥证书中;(2) .公钥证书颁发机构在向用户颁发证书时,检査确认用户注册的公钥为G中的元素或为G/le中元素;任何检査不通过,证书颁发机构拒绝颁发公钥证书;这样,每个用户只需检查对方用户的公钥证书即可确认对方的公钥为G或G/le中的元素;(3) .基于口令的变体权利要求1、 2的实现方法有如下基于口令的变体;设用户"A""在用户"B"处注册了一个口令pt;在所有方法中用户"A"所发送DH-密钥成分X' = Jffiw或X' = Jffl—w ,或者X' = X5""—或Z万—H"p"6"'w),或者xW"—或其中5为用户"B"的公钥,x = y eG', ^^是一个输出长度小于q的长度的哈希函数;收到X'后,用户"B"根据Z'的相应计算方式计算出X二XB—w或x = xbw ,或者xb-""—",)或xb""—,或者xb-""—或XB (—7 ,);i^,i^,G厶计算仍使用Z作为指数下的挑战,但指数上的函数c,c/,e,/的输入中的X换为义';除其它规定的事先离线计算外,用户"B"可事先计算5-'eG';在基于口令的变体中,对DH-密钥成分X是否为G'或G中元素的检査替换为对X'是否为G'或G中元素的检查;(4) .哈希函数的输入中嵌套相同或不同的哈希函数,即将原哈希函数的输入和嵌套的哈希函数作为一个特殊的有向图的节点,其中原哈希函数的输入代表的节点无扇入,最外层的哈希函数所代表的节点无扇出,每个节点所代表的数值是其扇出节点所代表的哈希函数的输入;(5) .将哈希函数输入的顺序任意变化;和/或,将哈希函数的所有输入换为所有输入 的并集,即重复的元素在输入中只出现一次;和/或,将哈希函数换为任一个输出为整 数的函数;和/或,应用在每一处的哈希函数与应用在其它处的哈希函数相同或不同;艮卩,我们使用一组哈希函数(^,//2,■ // },其中对于任意的/,y,i",/《","y,巧=//,.或//,#/^, "2l且n是需应用哈希函数的次数的上界;(6) .不同的密钥导出函数应用在每一处的密钥导出函数与应用在其它处的密钥导出 函数相同或不同;即,我们使用一组密钥导出函数{《/^,《/)《, ■《/)《},其中对于任意的/,,K/J《/^=^/^或^^#;0^, "21且"是需应用密钥导出函数的 次数的上界;(7) .在所有方法中用户"A"检査&^le,用户"B"检査^^le;(8) .对于基于椭圆曲线的实现,将密钥导出函数输入中的^^,《s换为^^,^^的^"^ 标值或少-坐标值;每个用户检查对方用户的DH一密钥成分的x-坐标和j-坐标是椭圆曲线所基于的有限域中的正确编码的元素;(9) .出错中止和出错信息返回在所有的方法中, 一旦一个用户因检査不通过,即出 错,而中止协议,发回或不发回出错信息;在基于口令的实现方法中,客户"A"只允许 出错有限次,以防止在线攻击;(10) .会话标示符和用户协议角色标示方法:会话标示符一般由用户"A"和"B"发 送的两个随机数或DH-密钥成分以初始者-响应者的顺序串联构成;用户的协议角色标示一 般用不同的整数或者由用户"A"和"B"发送的随机数或DH-密钥成分的不同顺序来标示;(11) .用户"A"检查确认r^Z;若^ = 1,用户"A"则中止协议运行。
全文摘要
本发明属于密码协议技术领域,具体涉及一类高效、公平的密钥交换方法。其特点为最优的(在线)计算效率,支持先发送DH-密钥成分后发送身份和公钥证书的Post-ID工作模式,利于隐私保护、计算的可并行性和模块化,支持DH-密钥成分的重复使用,并可应用于分布式客户-服务器环境下抗拒绝服务且保护用户隐私的密钥交换、无公钥证书的密钥交换、和公平的群Diffie-Hellman密钥交换。
文档编号H04L29/06GK101645870SQ20081004147
公开日2010年2月10日 申请日期2008年8月7日 优先权日2008年8月7日
发明者丁素芬, 枫 储, 姚期智, 赵运磊 申请人:赵运磊
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1