会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 电脑安全 / 密码学 / 自封闭联合知识证明和Diffie-Hellman密钥交换方法与结构

自封闭联合知识证明和Diffie-Hellman密钥交换方法与结构

阅读:1078发布:2021-02-25

IPRDB可以提供自封闭联合知识证明和Diffie-Hellman密钥交换方法与结构专利检索,专利查询,专利分析的服务。并且一种一方(证明者)以联合地且不可锻造地向另一方(验证者)证明自己多个(固定或临时)的秘密Diffie-Hellman指数(记为DH-指数)知识的方法及结构。这些DH-指数知识是相应于证明者自己(固定和/或临时的)DH-成分并针对验证者的公开的(固定和/或临时的)DH-成分挑战。联合知识证明(jointproof-of-knowledge,JPOK)包含由多个DH-秘密相乘得到秘密,可以由每一方用自己的私有DH指数和双方公开DH成分生成并验证。为了保证JPOK的不可锻造性,本发明方法令所有相乘的DH-秘密各自独立,并使得会话标签提交至这些DH-秘密。为了保护用户的隐私以及/或者提高协议的效率,本发明方法要求相乘的这些DH-秘密进一步满足下列要求之一(除同时满足上面提到的独立性和提交性质外):(1)可抵赖性:所有需要相乘的DH-秘密都可以仅仅由双方的临时的秘密DH-指数和公开DH-成分计算出;(2)预计算性:涉及到一方固定DH-成分的DH秘密可以由对方离线预计算;(3)后置身份可计算性:涉及到一方临时DH-成分的DH-秘密可以由对方在不知道该方身份以及/或者固定DH-成分的情况下计算得到。由多个DH-秘密相乘所得到的秘密可以用来导出会话密钥,并在双方之间生成和验证认证值。双方可以并行或顺阶地使用发明方法,并在发明方法的不同运行中交换运行角色。发明方法可以用以相互身份认证、密钥确认、以及在各种环境中实现更为高级的密码协议。,下面是自封闭联合知识证明和Diffie-Hellman密钥交换方法与结构专利的具体信息内容。

1.一类用于通过设备或网络连接的两方用户之间的知识证明和密钥交换方法,所述方法包括:记 n≥1为身份是 的第一方用户在多项式时间

内的公共成分贡献,其中x1,...,xn为 选的私有值,即:x1,...,xn为用户 所选择生成并对其它用户保密的数值且x1,...,xn的具体数值只有用户 知道,g是一个以N为阶的有限阿贝尔群G′的一个以q为阶的子群G的生成元,每个 1≤i≤n,构成一个单向指数函数,每个Bi(g),1≤i≤n,构成一个确定的至少有一个参数g的函数,每个fi(xi),

1≤i≤n构成一个确定的有至少一个参数xi的函数,m1包含由用户 发送的与所发明方法的一个会话相关的其它任意公共信息;这儿,所发明方法在两方用户之间的一次运行称为一个会话;上述公共成分贡献X1,...,Xn,m1中,有些是在多个会话中都使用的固定的值,另外一些则是只是在每个会话中使用的临时的值;上述的X1,...,Xn称为第一方用户 的DH-成分,x1,...,xn称为第一方用户 的DH-指数;

记 m≥1为身份是 的第二方用户在多项式时间

内的公共成分贡献,其中y1,...,ym为 选的私有值,即:y1,...,ym为用户 所选择生成并对其它用户保密的数值且y1,...,ym的具体数值只有用户 知道,g是一个以N为阶的有限阿贝尔群G′的一个以q为阶的子群G的生成元,每个 1≤j≤m,构成一个单向指数函数,每个Bj′(g),1≤j≤m,构成一个确定的至少有一个参数g的函数,每个fj′(yj),1≤j≤m构成一个确定的有至少一个参数yj的函数,m2包含由用户 发送的与所发明方法的一个会话相关的其它任意公共信息;上述公共成分贡献Y1,...,Ym,m2中,有些是在多个会话中都使用的固定值,另外一些则是只是在每个会话中使用的临时的值;上述的Y1,...,Ym称为第二方用户 的DH-成分,y1,...,ym称为第二方用户 的DH-指数;

第二方用户 得到{X1,...,Xn,m1}后,计算 其中...,每个 1≤i≤n构成一

个确定的,至少有一个参数Xi的函数,每个 1≤j≤m构成一个确定的,至少有一个参数yj的函数, 构成一个确定的,至少有n个参数 的函数;

第一方用户 得到{Y1,...,Ym,m2}后,计算 其中...,每个

1≤j≤m构成一个确定的,至少有一个参数Yj的函数,每个 1≤i≤n构成一个确定的,至少有一个参数xi的函数, 构成一个确定的,至少有n个参数 的函数;

其中的每个 1≤i≤n,1≤j≤m构成一个确定的函数,并且非零的 1≤i≤n,

1≤j≤m满足:

(i)独立要求:对于任意的i,1≤i≤n,当m≥2时,所述 独立于第二方用户 任意的临时DH-成分;

(ii)承诺要求:所述非零的 1≤i≤n,1≤j≤m,对第一方用户和第二方用户双方的临时DH-成分进行提交;

(iii)可以预计算和/或可以后置身份计算和/或可抵赖性:对于固定DH-成分Xi,1≤i≤n, 的值可以由 离线预计算,并且/或者对于临时DH-成分Xi,1≤i≤n,的值可以由 在不知道 身份和所述固定DH-成分的情况下离线预计算;对于固定的DH-成分Yj,1≤j≤m, 的值可以由 离线预计算,并且/或者对于临时DH-成分Yj,1≤j≤m, 的值可以由 在不知道 固定DH-成分和身份的情况下离线预计算;并且/或者上述 和 的值,可以仅仅由第一方用户和第二方用户双方的所述临时DH-指数和固定的和临时的公开的DH-成分计算出来;

所述第一方用户 和第二方用户 的公共成分贡献都可以通过多轮交互进行交换。

2.如权利要求1所述的方法,其中,非零 1≤i≤n,1≤j≤m不仅对双方的临时DH-成分进行提交,而且进一步对至少其中一方的身份和/或固定的DH-成分进行提交。

3.如权利要求1所述的方法,其中,非零 1≤i≤n,1≤j≤m,满足:对于任意的i,1≤i≤n,当m≥2时, 独立于任意临时DH-成分和第二方用户 的任意固定DH-成分。

4.如权利要求1所述的方法,其中,非零 1≤i≤n,1≤j≤m,满足:对于任意的i,1≤i≤n,当m≥2时, 独立于任意第一方用户 或者第二方用户 的临时DH-成分。

5.如权利要求1所述的方法,其中,非零 1≤i≤n,1≤j≤m,满足:对于任意的i,1≤i≤n,当m≥2时, 独立于任意第一方用户 或者第二方用户 的临时DH-成分和固定DH-成分。

6.如权利要求1所述的方法,其中,非零 1≤i≤n,1≤j≤m,满足:对于任意的j,1≤j≤m,当n≥2时, 独立于任意第一方用户 的临时DH-成分。

7.如权利要求1所述的方法,其中,非零 1≤i≤n,1≤j≤m,它满足:对于任意的j,1≤j≤m,当n≥2时, 独立于任意第一方用户 的临时DH-成分和固定DH-成分。

8.如权利要求1所述的方法,其中,非零 1≤i≤n,1≤j≤m,满足:对于任意的j,1≤j≤m,当n≥2时, 独立于任意第一方用户 或者第二方用户 的临时DH-成分。

9.如权利要求1所述的方法,其中,非零 1≤i≤n,1≤j≤m,满足:对于任意的j,1≤j≤m,当n≥2时, 独立于任意第一方用户 或者第二方用户 的临时DH-成分和固定DH-成分。

10.如权利要求1所述的方法,其中,使用 和 导出双方之间的共享密钥;第一方用户 计算 得到该密钥,其中 构成一个预先决定的、至少有一个参数 的数学函数;第二方用户 计算 得到该密钥,其中 包含一个预先决定的、至少有一个参数 的数学函数。

11.如权利要求10所述的方法,其中, 和 构成一个密码函数,这个密码函数可以是一个密码学哈希函数、或者密码学伪随机函数、或者加密函数、或者单向函数。

12.如权利要求10所述的方法,其中,导出的密钥包括一对密钥:一个MAC密钥Km和一个会话密钥K。

13.如权利要求1所述的方法,其中,第二方用户 使用 生成并发送认证值给第一方用户 并且/或者,第一方用户 使用 生成并发送认证值给第二方用户

14.如权利要求13所述的方法,其中,如果 通过一种预先决定好的方法相关于 那么第一方用户 将第二方用户 的认证值视为合法;并且/或者,如果 通过一种预先决定好的方法相关于 那么第二方用户 将第一方用户 的认证值视为合法。

15.如权利要求14所述的方法,其中,如果第一方用户 确定 等于 那么将第二方用户 的认证值视为合法的;如果第二方用户 确定 等于 那么将第一方用户 的认证值视为合法的。

16.如权利要求15所述的方法,其中,第二方用户 的认证值中可以包含其中MAC是预先决定的以Km为密钥的消息验证码函数, 中包含第二方用户 需要被验证的信息;第一方用户 的认证值中可以包含 其中 中包含第一方用户 需要被验证的信息,并且

17.如权利要求2所述的方法,其中,如果第一方用户向可信第三方证明自己拥有或者知道对应于其固定DH-成分的DH-指数,并且/或者,第二方用户在会话建立之前已经拥有了第一方固定DH-成分经过认证的拷贝,那么第一方用户的固定DH-成分可不由非零

1≤i≤n,1≤j≤m来提交;同样,如果第二方用户向可信第三方证明自己拥有或者知道对应于其固定DH-成分的DH-指数,并且/或者,第一方用户在会话建立之前已经拥有了第二方用户固定DH-成分经过认证的拷贝,那么第二方用户的固定DH-成分可不由非零

1≤i≤n,1≤j≤m来提交。

18.如权利要求10所述的方法,其中,如果第一方用户的身份是 或 中的一个参数,那么第一方用户的身份不由非零 1≤i≤n,1≤j≤m进行提交;如果第二方用户的身份是 或 中的一个参数,那么第二方用户的身份不由非零 1≤i≤n,

1≤j≤m进行提交。

19.如权利要求18所述的方法,其中,每个Bi(g),1≤i≤n,fi,1≤i≤n,Bj′(g),

1≤j≤m,fj′,1≤j≤m, 1≤i≤n, 1≤j≤m和 1≤j≤m, 1≤i≤n都构成一个恒等函数,并且其中的q是素数。

20.如权利要求19所述的方法,其中,令n=2,X1=A=ga,X2=X=gx,其中A为参与方 的固定DH-成分,并且是公钥,a是它的固定DH-指数,并且是私钥,X是它的临时DH-成分,而x是它的临时DH-指数;m=2,Y1=B=gb,Y2=Y=gy,其中B为参与方 的固定DH-成分,并且是公钥,b是它的固定DH-指数,并且是私钥,Y是它的临时DH-成分,而y是它的临时DH-指数;上述的a,x,b,y都是整数并且1≤a,x,b,y≤q-1。

21.如权利要求19所述的方法,其中,m1和m2中至少有一个包含第一方用户 或者第二方用户 的身份。

22.如权利要求20所述的方法,其中,令 和

其中上述的ti=1或者ti=N/q,1≤i≤4,上述的c,d,e,f中每个都构成一个预先决定的数学函数,该函数的参数包含 的一个子集。

2 3 . 如 权 利 要 求 2 2 所 述 的 方 法 , 其 中 , 令并 且

24.如权利要求23所述的方法,其中,令c=h(Y,pub1)或c=1,d=h(X,pub2)或d=1,e=h(X,Y,pub3)或e=0,f=0或f=1或f=h(pub4),其中上述h构成可被建模成可能理想化的密码模型中的随机函数的一个预先决定的函数,或者一个密码学哈希函数,密码学伪随机函数,密码学提交函数,加密函数或者单向函数之一;上述pubi,1≤i≤4,包含的一个子集的信息,并且如果c=d=1,那么e≠1。

25.如权利要求24所述的方法,其中,令pub1包括 的身份信息并且/或者pub2包括的身份信息,并且/或者pub3包括 双方的身份信息。

26.如权利要求22所述的方法,其中

如果参与方都检查确认对方的临时DH-成分和固定DH-成分为子群G的元素,那么t1=t2=t3=t4=1;

如果一方不对另一方的临时DH-成分进行显式的子群测试,而是 检查并确认Y是在G′中并且不是G′的一个以N/q的一个因数为阶的子群中的元素,而 检查并确认X是在G′中并且不是G′的一个以N/q的一个因数为阶的子群中的元素,那么此时t2=t3=t4=N/q;

如果对对方的固定DH-成分进行子群测试,则t1=1;如果不对对方的固定DH-成分进行显式的子群测试,而是 检查并确认B是在G′中并且不是G′的一个以N/q的一个因数为阶的子群中的元素,而 检查并确认A是在G′中并且不是G′的一个以N/q的一个因数为阶的子群中的元素,那么此时t1=N/q。

27.如权利要求26所述的方法,其中,“ 检查并确认Y不是G′的一个以N/q的一个因数为阶的子群中的元素”,通过以下的不等式之一验证:其中1G为群G′的单位元;

上述“ 检查并确认X不是G′的一个以N/q的一个因数为阶的子群中的元素”,通过以下的不等式之一验证:上述“ 检查并确认B不是G′的一个以N/q的一个因数为阶的子群中的元素”,通过以下的不等式之一验证:上述“ 检查并确认A不是G′的一个以N/q的一个因数为阶的子群中的元素”,通过以下的不等式之一验证:

28.如权利要求24所述的方法,其中, e=h(X,Y),f=0。

29.如权利要求24所述的方法,其中,c,d,e,f的实现还可以包括:(i) e=h(X,Y)或 或

f=1或 或者

(ii)c=1,d=1, f=0;或者

(iii) 或 e=h(c,d) 或

e=h(c,X)或e=h(d,Y)或e=h(X,Y),f=0或f=1或 或者(iv) 或 e=h(c,d)或e=h(c,X) 或e=h(d,Y),f=0或f=1或 或者

(v) e=0,f=0;或者

(vi)c=1, e=0,f=0;或者

(vii) e=0,f=0;或者

(viii)c=1,d=1, f=1或 或

或f=0;或者

(ix) e=h(X,Y)或 或e=h(c,d) 或e=h(c,X)或e=h(d,Y),f=0或f=1或 或者(x) e=h(X,Y)或 或e=h(c,d)或e=h(c,X)或e=h(d,Y),f=0或f=1或 或者

(xi)c=h(Y),d=h(X),e=h(X,Y)或 或 e=h(c,d)或e=h(c,X) 或e=h(d,Y),f=0或f=1或

30.如权利要求23所述的方法,其中,c,d,e,f的实现还可以包括:(i) f=1;或者

(ii) e=1,

31.如权利要求23所述的方法,其中,c,d,e,f的实现还可以包括:(i) e=1, 或者

(ii) e=1,f=cd。

32.如权利要求22所述的方法,其中,第一方用户 拥有一份由可信第三方发布的证书 用以将第一方用户的身份和公钥进行绑定验证,该证书包括一个提交 的值在函数c,d,e,f中的参数 被 替代;并且/或者第二方用户 拥有一份由可信第三方发布的证书 用以将第二方用户的身份和公钥进行绑定验证,该证书包括一个提交的值 在函数c,d,e,f中的参数 被 替代。

33.如权利要求32所述的方法,其中,令 H构成一个密码学函数,可以是一个密码学哈希函数,一个密码学伪随机函数,一个密码学承诺函数,一个加密函数或者一个单向函数之一。

34.如权利要求22所述的方法,其中,如果可信第三方要求第一方用户证明自己拥有或知道其对应于公钥的私钥,并且/或者第二方用户在协议开始之前就已经拥有第一方用户一份经过认证的公钥拷贝,那么此时第一方用户的公钥可以从函数c,d,e,f的参数中移除;类似地,如果可信第三方要求第二方用户证明自己拥有或知道其对应于公钥的私钥,并且/或者第一方用户在协议开始之前就已经拥有第二方用户一份经过认证的公钥拷贝,那么此时第二方用户的公钥可以从函数c,d,e,f的参数中移除;

如果第一方用户的身份是 和 的参数,那么第一方用户的身份可以从函数c,d,e,f的参数中移除;和/或,如果第二方用户的身份是 和 的参数,那么第二方用户的身份可以从函数c,d,e,f的参数中移除。

x

35.如权利要求19所述的方法,其中,令n=1,X1=X=g,其中X是参与方 的临时DH-成b y分,x是 的临时DH-指数;m=2,Y1=B=g,Y2=Y=g,其中B是参与方 的公钥,b是 的私钥,Y是参与方 的临时DH-成分,y是 的临时DH-指数,上述的x,b,y都是整数并且

1≤x,b,y≤q-1;

其中 f,c的任意一个构成一个预先决定的函数,该函数有以的一个子集作为参数;如果 验证X是G中一个成员,那么t1=t2=1,否则t1=t2=N/q,并且 验证X是G′中一个成员,同时X不是G′的一个以N/q的一因子为阶的子集中的成员。

36.如权利要求35所述的方法,其中,“ 验证X不是G′的一个以N/q的一因子为阶的子集中的成员”通过验证 来实现。

37.如权利要求35所述的方法,其中,f,c的实现包括:(i) c=h(X,Y,aux2);或者

(ii)f=1,

上述的auxi,1≤i≤3,包含一个空信息,或身份 或除 外与会话相关的信息。

38.如权利要求19所述的方法,其中,令n=2,X1=A=ga,X2=X=gx,其中A是参与方的固定DH-成分和公钥,a是参与方 的固定DH-指数和私钥,X是参与方 的临时DH-成分,x是 的临时DH-指数;m=1,Y1=B=gb,其中B是参与方 的固定DH-成分和公钥,b是 的固定DH-指数和私钥;上述的a,x,b都是整数并且1≤a,x,b≤q-1;

其 中

任意的f,d之一构成一个预先决定的函数,该函数以 的一个子集作为参数;t1=1或t1=N/q;t3=1或t3=N/q。

39.如权利要求38所述的方法,其中,如果每方都验证和确认对方的固定和临时DH-成分是否为子群G的成员,那么t1=t3=1;否则t1=t3=N/q,并且至少 要验证X∈G′和

40.如权利要求38所述的方法,其中,令f=1或f=h(aux′1), 其中有aux′1包含除临时DH-成分X外的非空消息,h的输出长度为|q|/2,其中|q|表示q的比特长度。

41.如权利要求38所述的方法,其中, d=1。

42.如权利要求38所述的方法,其中,给定一个 支持的公钥加密体系,其中密文包含x由 生成并发送的X=g,其中1≤x≤q-1,并且该公钥加密体系的 和 共享密钥通过 计算和 计算 来导出,令 用所述 替换 且 用所述 替换 来生成 和 的共享密钥。

43.如权利要求42所述的方法,其中,

x

44.如权利要求19所述的方法,其中,n=1,X1=X=g,其中X是 的临时DH-成分而x是y其临时DH-指数;m=1,Y1=Y=g,其中Y是 的临时DH-成分而y是其临时DH-指数;上述的x,y都是整数并且1≤x,y≤q-1;那么有 其中t1=1或t1=N/q,e=h(X,Y,aux″′),aux″′包括除临时DH-成分外所有消息的一个子集。

45.如权利要求44所述的方法,其中,aux″′包括参与双方的身份

46.如权利要求1所述的方法,其中,m1包括一个由第一方用户 生成的随机数 并且/或者m2包括一个由第二方用户 生成的随机数 那么,对于i,j:1≤i≤n,1≤j≤m,如果的一个临时DH-成分是非零 的参数,那么 也是该非零 的参数,并且 可以在有限的时间内,在多个会话中使用相同的临时DH-成分;并且/或者,对于i,j:1≤i≤n,1≤j≤m,如果 的一个临时DH-成分是非零 的参数,那么 也是 的参数,并且 可以在有限的时间内,在多个会话中使用相同的临时DH-成分。

47.如权利要求1到11中任意一条所述的方法,其中,n=2,m=2,每个Bi(g),1≤i≤n,fi,1≤i≤n,Bj′(g),1≤j≤m,f′j,1≤j≤m, 1≤i≤n, 1≤j≤m和

1≤j≤m, 1≤i≤n均构成一个恒等函数,并且其中的q是素数;

a x

令X1=A=g,X2=X=g,其中A是参与方 的一个固定DH-成分和公钥,a是其固定DH-指数和私钥,X是参与方 的一个临时DH-成分,x是其临时DH-指数;

b y

令Y1=B=g,Y2=Y=g,其中B是参与方 的一个固定DH-成分和公钥,b是其固定DH-指数和私钥,Y是参与方 的一个临时DH-成分,y是其临时DH-指数;上述的a,x,b,y都是整数并且1≤a,x,b,y≤q-1;

令 和 和

其中ti=1或ti=N/q,

1≤i≤4,而且上述c,d,e,f中每个都构成一个预先决定好的以 的一个子集作为参数的数学函数;

其中第一方用户 的公钥A和临时DH-成分X是分别发送给 的;首先将X发送给然后只在接收到 后才将自己的公钥A发送给 身份 和/或公钥A不作为函数d和e的参数。

48.如权利要求47所述的方法,其中,第二方用户 使用 生成一个认证值 并将连同临时DH-成分Y一起发送给第一方用户 在接收到 和 之后,第一方用户 如果能通过一个事先预定好的方法验证确认 的值相关于 那么将认证值 视为合法的;如果认证值 被认为是合法的,第一方用户 将自己的公钥和身份信息告知给 第二方用户计算 并由 导出私钥;第一方用户 计算 并由 导出私钥;并且/或者,第一方用户使用 生成认证值 并将该认证值发送给 如果第二方用户 可以用一种事先预定好的方法验证确认 相关于 那么将该认证值 视为合法的。

49.如权利要求48所述的方法,其中,第一方用户 使用 生成认证值 并将该认证值发送给 如果第二方用户 可以用一种事先预定好的方法验证确认 相关于 那么将该认证值 视为合法的。

50.如权利要求48所述的方法,其中,令认证值 包括 其中 构成一个预先决定好的密钥导出函数,其可以是一个密码学哈希函数,密码学伪随机函数,加密函数或者单向函数之一,并且至少有一个参数 包含需要被第二方用户 验证的消息。

51.如权利要求50所述的方法,其中,令认证值 包含 其中 构成一个预先决定好的密钥导出函数,其是一个密码学哈希函数,密码学伪随机函数,加密函数或者单向函数之一,并且至少有一个参数 包含需要被第一方用户 验证的消息,并且

52.如权利要求51所述的方法,其中,令上述的 包含第一方用户 的身份和公钥以及

53.如权利要求50所述的方法,其中,包含 其中 包含需要被第一方用户 验证的消息,并且

54.如权利要求47所述的方法,其中, 和 的实现包括:(i) 其中HK构成一个预先决定好的密

钥导出函数,其可以是一个密码学哈希函数,密码学伪随机函数,加密函数或者单向函数之一;或者(ii)

55.如权利要求54所述的方法,其中,c,d,e,f的实现包括:(i) e=h(X,Y),f=0;或者

(ii) e=h(X,Y),f=1或 或者

(iii) e=1, 或者

(iv) e=0,f=0;或者

(v) e=h(X,Y)或e=h(c,d)或e=h(c,X)或e=h(d,Y),f=0或f=1或 或者

(vi)c=h(Y),d=h(X),e=h(X,Y)或e=h(c,d)或e=h(c,X)或e=h(d,Y),f=0或f=1或

56.一个建立验证密钥的方法,其中交互的双方都有多项式时间计算能力,其中一方称之为第一方用户,身份为 另一方称为第二方用户,身份为 双方通过一个设备或网络进行连接交互,并且共享一个秘密pw;

f′(b)

其中,第二方用户 拥有一个固定DH-成分B=F′(g) 做为公钥,固定DH-指数b∈Zq作为私钥,第一方用户 贡献一个值 其中g为G的一个生成元,G以q为阶且是G′的一个子群,G′是一个阶为N的有限阿贝尔群;上述F1,F′的每一个均构成一个预先决定好的函数,该函数至少包含一个参数g;F2构成一个预先决定好的函数,该函数至少包含一个参数B;f′构成一个预先决定好的函数,该函数至少包含一个参数b;f1构成一个预先决定好的函数,该函数至少包含一个参数x;f2构成一个预先决定好的函数,该函数至少包含一个参数pw;aux″包括一个除pw外的消息的子集;

该方法包括:

第二方用户 预计算并预存储 和/或 其中t=1或t

=N/q;

第一方用户 得到B;

第一方用户 计算 其中 构成一个预先决定好的函数,该函数至少包含两个参数f1(x),B;

第二方用户 得到X′;

第二方用户 找回预计算并存储的 和/或

第二方用户 计算 其中 构成一个预先决定好的

函数,该函数至少包含三个参数

第二方用户 使用 导出双方之间的共享秘密,生成自己的认证值并验证对方的认证值;

第一方用户使用 导出双方之间的共享秘密,生成自己的认证值并验证对方的认证值。

57.如权利要 求56所述的方法,其中,F1,F′,F2,f1,f ′的每一个均 构成 一 个 恒 等 函 数,x,b 为 1 ≤ x,b ≤ q-1 的 整 数, 且t=1或t=N/q。

58.如权利要求57所述的方法,其中,f2(pw,aux″)的实现包括:(i)f2(pw,aux″)=pw;或者

(ii) 其 中 aux ″ 包 含 双 方 的 身 份 或或

59.如权利要求57所述的方法,其中,如果第二方用户 检查并确认X′∈G,那么t=1;

x

否则t=N/q,并且第二方用户检查并验证X′是G′的一个元素且g 不在G′的一个以N/q为阶的子群中。

x

60.如权利要求59所述的方法,其中,“第二方用户 检查g 不在G′的一个以N/q为阶的子集中”通过检查以下不等式之一来实现: 和

61.如权利要求57-58任意一条所述的方法,其中,给定一个第二方用户 支持的公钥x加密体系,其中由所述第一方用户 生成和发送的密文包含X=g,1≤x≤q-1,并且该公钥加密体系中第一方用户 和第二方用户 共享的密钥分别由 通过计算 和 通过计算来导出,那么 使用 来替代 用X′替代X,使用 来替代 从而得到一个修改过的公钥加密体系。

62.如权利要求61所述的方法,其中,

63.如权利要求61所述的方法,如果消息m的密文包括 其中E为一个以k1作为私钥的私钥加密体系,(k1,k2)由 通过 和 通过 导出,那么可以将 改变为 从而得到一个修改过的公钥加密体系,其中Hk是一个预先决定好的密钥导出函数,其是一个密码学哈希函数,一个密码学伪随机函数,一个密码学保证函数,一个加密函数或者一个单向函数之一,而 包含除C外的其它消息的一个子集并将由第一方用户 认证。

64.如权利要求61所述的方法,其中,令第一方用户 使用上述修改过的公钥加密体系加密一个随机值K,并将得到密文发送给第二方用户

65.如权利要求64所述的方法,其中,上述的K可以被第一方用户和第二方用户使用来导出会话密钥以及生成并验证相互的认证值。

66.如权利要求63所述的方法,其中,令第一方用户 使用上述修改过的公钥加密体系加密一个随机值K,并将得到密文发送给第二方用户

67.如权利要求66所述的方法,其中,上述的K可以被第一方用户和第二方用户使用来导出会话密钥以及生成并验证相互的认证值。

说明书全文

自封闭联合知识证明和Diffie-Hellman密钥交换方法与

结构

[0001] 背景知识

技术领域

[0002] 本发明涉及知识证明(POK),属于密码技术领域。知识证明能够让证明者向验证者证明自己知道多个对应于(固定的和/或临时的)公开的DH-成分的秘密的DH-指数,但并不向验证者泄露这些秘密。发明的POK方法的目的是实现并发不可锻造性、健壮的抗保密泄露性,隐私保护和在线的效率。通过将固定的DH成分视为公钥,并且(运行发明方法的)各方通过运行发明方法证明各自的秘密DH-知识知识,发明方法导出认证的Diffie-Hellman密钥交换方法。

背景技术

[0003] Diffie-Hellman密钥交换协议(DHKE)101,如图1所示,是公共密钥密码学(PKC)的根基,同时还是密码学理论和实践的双重重要支柱。一般来说,密钥交换在现代密码学中扮演了核心的角色,这是由于它在公开密钥密码学和私有密钥密码学(SKC)中起的桥梁作用。具体来说,PKC用起来方便,但是效率不高;SKC效率很高,但是不方便使用。在通常的密码产品的应用中,PKC主要用于在用户间产生和分享密钥,而SKC则是在密钥产生后进行运用。在密码应用产品的开发过程中特别重要的是,DHKE是确保网络安全的密钥工业标准的基础。另外一个DHKE重要的原因是它支持基于椭圆曲线密码学的应用。
[0004] 尽管DHKE协议在概念上看起来简单,但是要设计一个正确且安全的协议实际上却是极度的易错,非常微妙(在本发明所在的技术领域有的被发现有安全缺陷的DHKE协议)。造成这一现象的原因在于系统的高度复杂性,以及和DHKE协议的定义和设计/分析有关的数量庞大的微妙问题。仅仅通过快速检查或者凭借简单的感觉不能分辨一个协议安全与否。因此,我们非常需要提出一个合理的框架/模型,来理解合理的设计选择,用公式表达简单自然的合理的DHKE,允许并指导新的应用,以及提供对DHKE设计和分析的全新理解(还有消除现有协议的不足)。具体来说,为一个复杂的系统提出这样一个合理的框架/模型应该是研究中的一个最重要,也是最困难的一个部分。
[0005] 在本发明所在的技术领域一系列的用于证明DHKE安全性的模型和框架已经提出。然而不幸的是,由于DHKE的高度的系统复杂性和微妙的特性,所有为我们所知的框架和模型都会在某些必要的安全特性上不能满足DHKE的安全性要求。并且,一些模型和框架本身太过复杂,可能会导致证明太过复杂冗长,并且很可能会导致错误(并且可能会将真实的安全保证作出错误的理解或者表述)。
[0006] 最近,发明人为DHKE协议引入了一种新的框架,被称为Yao-Yao-Zhao(YYZ)框架。为了表述的简洁,我们在这里简单地回顾一下YYZ框架。首先有两方参与者 其中我们假设 是会话的初始者,而 是会话的响应者。令G′为一个以N为阶的有限阿贝尔群,G为以q为阶的G′的子群,g为G的一个生成元,其中q是一个大素数(一般的,|q|=160),并且计算Diffie-Hellman(CDH)假设对于G成立。发明人使用乘法的符号来表示G′中的操作。将G′的单位元记为1G,将辅助因子记为 在 和 之间运行的协议记为协议x
将 的临时DH成分和临时DH指数记为X=g 和x,将 的临时DH成分和临时DH
y
指数记为Y=g 和y,其中x和y从中 独立地随机地选择。
[0007] 为了区分同一个用户并发运行的多个(本地)会话,每一个诚实的用户都会通过其身份和其在会话中传送的DH-成分来标识和区分每一个本地的会话,比如 同时,每一个本地会话都会用一个标签进行标识,该标签以会话初始者在先会话响应者在后的顺阶将各(可能得到的)用户的身份和其贡献的(不管是静态的公钥还是临时的)DH-成分串联起来,比如对于一个完成了的(成功结束的)原始的DH协议, (对于一般的多方用户情形,标签将以一种各方都同意的顺阶,将各方的身份和贡献的DH-成分串联起来。)对于未完成的或者被废弃的会话,标签将由能得到的部分文本决定。注意标签中和 中的某一方(但不会是全部双方)可能实际上由其它人(敌手)控制或扮演。
[0008] 对于一个在诚实用户上完成的,标签 的本地会话 (相应地,),我们将其称为测试会话。我们将测试会话的匹配会话定义为 (相应地,),即在任意诚实用户 上运行的本地对话 (如果该本地对话确实存在)。一旦会话结束,诚实用户总是会将在会话中生成的临时私有状态删除,仅仅保留输出的会话密钥;会话也可能过期,在过期的会话中,会话密钥也会被删除。
[0009] 在多项式个协议 的执行实例(会话)异步并发的情况下(比如在Internet的环境下),所有的通讯信道都被认为是不能鉴别用户的,并且是在一个概率多项式时间(PPT)并发中间人(CMIM)攻击者Д的控制之下的。并且,Д能够得到任意的辅助输入,这些辅助输入可以是Д从网络上搜集/窃听到的执行情况,这些执行情况可以是Д之前通过任意协议(可能不同的协议)同 或 交互得到的会话。并发中间人Д能做任何自己想做的事情。除了按自己的意愿安排消息交换,Д还可以通过四种攻击方式得到任何诚实用户的秘密信息:(1)未完成会话泄露的临时私有状态,即Д通过未完成会话得到诚实用户生成的临时私有状态;(2)完成和未过期的会话泄露会话密钥;(3)诚实用户泄露固定密钥;(4)用户被控制,即Д完全控制一个堕落的用户。一个诚实用户如果直到会话结束都没有受到(1)、(4)类攻击,那么我们称在其上运行的会话为“内部未暴露”。
[0010] 在所述的针对DHKE协议的的YYZ框架中,发明人定义了DHKE协议的一个新的安全的定义:基于标签的健壮不可锻造性(tag-based robust non-malleability,TBRNM)。在YYZ框架中定义的TBRNM的主要哲学思想,是依靠最小的秘密,得到最健壮的安全保证。
TBRNM本质上是说,一个诚实用户,如果成功地完成了一个具有唯一标签的内部未暴露会话(记为测试会话),那么可以保证:它的交互对象(不管是诚实还是恶意的)一定知道自己的DH-指数和私钥(对应于交互对象在会话中声称的DH-成分和公钥)。即使攻击者知道任何诚实用户的固定私钥,任何会话的临时私有状态信息(只要不是该测试会话或该测试会话的匹配会话),以及任何完成且未过期会话的会话密钥时,该保证仍然成立。
[0011] 为了平衡安全性和隐私性,YYZ框架提出了两种层次的TBRNM安全性:(1)标签绑定TBRNM,该安全性只有测试会话内部未暴露时成立。标签绑定TBRNM主要的适用情况是,用户在协议运行之前就知道(并且能确定)交互对象的身份和公钥。(2)隐私保护TBRNM,该安全性只有当测试会话和其匹配会话都内部未暴露时成立。隐私保护TBRNM主要适用于后置身份协议(即一方只有在协议运行中,甚至是协议的最后一轮才知道其交换对象的身份)。
[0012] 发明人认为,TBRNM安全性,以及与不同标签会话的密钥独立性结合在一起,蕴含了DHKE协议所期望的必要的安全性质。并且,基于标签的健壮不可锻造性的目标应正是一个完善而健壮的DHKE协议的基本原则。
[0013] 发明人在所述YYZ框架中重新研究并分析了DHKE协议。发明人观察并阐释了本研究领域尚没有论述的一些基本的事项。这些事项涉及到使用共享的DH-秘密作为构建模块(特别是与其它DH秘密相乘)来构建更先进和复杂的密码学对象的复杂性和微妙性。
[0014] 在众多的基于公钥认证的DHKE协议中,图2,201,203所示的MQV协议(由Menezes 等 于 Second Workshop on Selected Areas in Cryptography SAC ′ 95,pages 22-32,November 1995中 提 出) 和HMQV协 议(由 Krawczyk于 Advances in Cryptology-Proceedings of CRYPTO 2005,pages 546-566,August 2005中提出)是最成功,并且可能是效率最高的基于公钥认证的DHKE协议之一。为了表述简洁,我们称MQV与aHMQV协议为(H)MQV协议族。令 的公钥为A=g,私钥为a,对应 的公钥和私钥分别为B=b
g 和b。令HK为输出为k位的哈希函数,其中k为安全参数。(H)MQV协议族会在图2(201,
202,203)中重新提到。(H)MQV被广泛地作为标准使用。特别要提到,美国国家安全局称(H)MQV为“保护美国政府信息”,包括“机密或关键的国家信息”的下一代密钥交换机制。
[0015] 尽管(H)MQV的发展史充满争议,但是在经过在Canetti Krawczyk框架进行安全性分析和讨论后,人们普遍认为(H)MQV的最新版本足够健壮,没有其它的安全弱点。特别是考虑到(H)MQV几乎最佳的效率,(H)MQV被认为在安全性和协议效率综合方面达到了最佳的成果。
[0016] 发明人在所述的YYZ框架下重新研究了(H)MQV协议,发现(H)MQV在一般情况下不能实现基于标签的健壮不可锻造性。这是通过具体的攻击来展示。也即是,通过锻造从其它诚实用户得到的信息,一个攻击者能够成功地与一个诚实用户完成(H)MQV的一个会话,但是实际上,该攻击者并不知道自己发送的信息相应地私钥和临时DH指数。这是由于(H)MQV中,用来证明每个用户私钥和临时DH指数知识的工具存在弱点和漏洞。发明人还提出了针对这些弱点的修正方案。
[0017] 除了安全缺陷,发明人还发现了(H)MQV协议更多的不足:(1)(H)MQV不支持预计算会话密钥的一部分来提高在线效率;(2)(H)MQV不支持共享会话密钥的后置身份计算;(3)(H)MQV不支持共享会话密钥的并行计算和临时DH成分的显式子群测试;(4)(H)MQV不能保证可抵赖性(一个非常有用的保护用户隐私的性质)。
[0018] 尽管看起来取得了很大的成功,上述的弱点和不足暴露了(H)MQV协议族的设计理念和构建工具不如普遍预期的那样完善和健壮。这也让发明人更加关注如何才能在新的基本设计原理和新的基本构造工具下,设计出可认证的密钥交换协议,在协议的安全,隐私和效率等方面取得最好地平衡。
[0019] 发明概述
[0020] 有鉴于上述情况,加上为了取得依据YYZ框架的基于标签的健壮不可锻造性(TBRNM),以及可抵赖性和后置身份隐私性和最佳的在线效率,本项发明的一个堪称典范的特征是:为用户提供了一个新的高度实用的方法和结构,来不可锻造地证明它的联合的DH-知识,其被命名为自封闭的联合知识证明(self-sealed join proof-of-knowledge,SSJPOK)。SSJPOK对于基于DH的密码学应用(特别是身份认证和密钥交换)具有基础性的意义并有着广泛的应用。
[0021] 本项发明另外一个堪称典范的特征是它阐明了其发明的SSJPOK的应用。作为SSJPOK的核心应用,发明人开发了一族DHKE协议,称之为YYZ协议族。这些协议实质上在完整的TBRNM安全性、可抵赖性和后置身份隐私性、协议高效性和系统设置的简洁性上取得了最佳的整合,同时仍然保持了良好的概念简洁和清晰性。伴随着SSJPOK和YYZ协议各种各样的实现和变体,SSJPOK的其它应用包括针对各种特定环境下的密钥交换协议,比如群组的,无线的,无证书的,分布式客户端/服务端的,等等。这些新的观察,和对SSJPOK和YYZ所基于的设计原理的阐述和说明,都具有其独立的价值,为微妙的DHKE领域提供新的洞察并指导DHKE的未来发展。
[0022] 本发明还有一个典型的特征是将上述DHKE的方法和结构拓展到基于口令和客户端/服务端的情形,提供一个健壮的抵抗服务器所保持的口令数据库内容恶意泄露的基于口令的认证的DHKE协议。
[0023] 因此,本发明另一个典型的特征是提供一个用以提高认证DHKE协议的安全性、隐私性和效率的结构和方法,使得安全性以及所基于的设计原理的可靠性和健壮性可以在SSJPOK的概念框架下得以仔细地和可证明地论述和证明。
[0024] 附图简述
[0025] 前述内容以及其它的目标、方面和优点可以通过参照于附图的本发明优先的具体实施方式得以更好地理解。对于附图,下面是简单的说明:
[0026] 图1描述了基本的(无身份认证)Diffie-Hellman协议101和由发明人开发的标签绑定自封闭的DH协议(TBSS-DH)102的比较100;
[0027] 图2描述了对于MQV协议201和202,HMQV协议201和203,YYZ-MQV协议204和205(改进了MQV和HMQV协议,由发明人以SSJPOK为构造工具开发而成),以及YYZ协议
206和207的比较200。图2中列出来的实例都是没有显式密钥确认的2-轮协议;
[0028] 图3描述了YYZ在客户端/服务端模式下的典型实现300,使得客户端 有可抵赖性,可进行后置身份计算和预计算,还可以抵抗针对服务端 的服务抵赖攻击,并且双方都有交互的密钥确认;
[0029] 图4描述了SSJPOK方法和结构的一个典型实现400,其中验证者仅贡献一个临时DH成分而证明者贡献一个临时DH成分和一个固定DH成分;
[0030] 图5描述了一个SSJPOK方法和结构进一步拓展和一般化的典型实现500,其中验证者和证明者都贡献多个DH成分;
[0031] 图6描述了使用SSJPOK的一个YYZ DHKE协议的典型实现600;
[0032] 图7描述了作为在单轮密钥交换具体实现的一个HMQV的改进版本700;
[0033] 图8描述了作为单轮密钥交换的YYZ的典型实现800;
[0034] 图9描述了一个基于口令,用于客户端/服务端模式下的DHKE协议的典型实现900;
[0035] 图10描述了一个相互密钥确认的用于服务端/客户端环境下的2轮DHKE协议的典型实现1000,它用到了图9中所描述的基于口令的DHKE协议和一个公钥密码方案;
[0036] 图11列出了一个包含本发明的典型的硬件/消息处理系统1100;
[0037] 图12列出了一个本发明方法的信号承载媒介1200(比如存储媒介),用于存储依据本发明方法的程阶的步骤;
[0038] 图13为TBSS 1301,SSJPOK 1302,还有YYZ 1303给出了一个图例1300,(通过引用了一位中国古代哲人的格言)进行了哲学上的说明。
[0039] 具体实施方式的详细描述
[0040] 下面我们参照附图,即图1-13,其中包含的是本发明的方法和结构的典型实现。
[0041] 预备知识和符号说明
[0042] 作为群和符号的预备说明,这里讨论的所有协议和操作都是假设一个有限群G′上的一个循环子群G,其中G′的阶是N,G的阶是q,g是G的生成元,其中q是一个大素数(一般|q|=160,|q|表示q的比特位长度,具体来说 表示q以2为底的指数)。发明人用乘法的符号表示此处的群的操作(即为了表示的简便起见,假设群为乘法群),但是这种表示方法可以同等地应用于加法群上(此时,群的操作用加法表示),比如椭圆曲线(其为一类典型的加法群)或者其它任何的代数群或者特殊的群,有限域,复合模等等。所有指数的操作都是假设模q,而群的操作假设模N。为了简单起见,我们假设参数G,q,g都是和通常的实际情况一样,是固定的,而且参与各方事先就知道。或者,用户可以在证书中包含这些值,或者在协议运行前交换并对这些参数达成一致。发明人用大写字母(比如A,B)表示群G中的DH-成分(特别是用户的公钥),而相应地小写字母(比如a,b)表示Zq中相应地DH-指数,其中Zq表示整数集{0,1,,q-1}。定义1G为群G′的单位元。发明人用“尖号”(比如 )表示逻辑的或者“区分性的”协议各方的身份,比如名字,邮件地址和/或网络地址(IP),角色等等。在某些情况下,这些身份可能会增加和伴随一个数字证书。
x y
设CDH假设在G中成立,也就是说给定两个元素X=g 和Y=g,其中x和y都是随机地从Zq中选择,那么没有一个有效的概率多项式时间(PPT)算法,可以有不可忽略的概率计算出xy xy
g (这概率是取自随机算法所使用的随机硬币和选择x和y所用的随机硬币)。g 的值被称为X和Y(共享的)DH-秘密。{·,···,·}表示消息/值的集合。
[0043] 本发明使用三个哈希函数h,HK,H,在安全分析中它们可以是相同的且可被抽象成理想随机圣谕。哈希函数可以用来将一串字符串转换为一个数字或者固定长度的字符串等等。哈希函数在密码学中的基本作用是提供一个“单向的”或者说“不可逆的”转换方式,也就是说不能根据函数值得到原来的数据,也不能创建一个数据块,使之与给定的哈希值匹配。哈希函数可能只是简单的“混合”函数,也可能是类似于取值完全随机的转换。后一类哈希函数被称为“强密码学哈希函数”,在密码分析中常常模型为随机函数(或者随机圣谕)。若干哈希函数被广泛用作强密码哈希。比如,MD5接受一个任意大小的块作为输入,产生一个128位的哈希值;另一个例子是NIST(National Institute of Standards and Technology,美国国家标准与技术研究所)的安全哈希算法(Secure Hash Alrorithm,SHA)。这个算法可以得到一个160位的哈希值。为了表述简洁,发明人用同一个符号表示相同算法但参数个数不同的哈希函数。在实际中,哈希函数的参数是连结在一起的,被编码在同一个字符串中,然后将这个字符串作为输入,最后得到哈希函数的输出。并且,在某些应用中,哈希函数的输出只有一部分会被用到。在很多情况里,哈希函数的参数的顺阶并不重要,是可以互换的。
[0044] 对原始Diffie-Hellman协议的重新审查
[0045] 发明人对Diffie-Hellman协议(参见图1)及其重要的拓展和应用进行了重新的审查,观察并阐述了一些在此前本领域没有(至少没有明显地)指出的基本的事项。这些事项包括参与者之间的公平,和使用共享DH-秘密作为构造模块(特别是与多个其它DH-秘密相乘)来构造更先进和复杂的密码学对象的微妙性。
[0046] 参照(在图1中刻画的)原始DH-协议,公平的意思是指 和 共享的DH秘密,即xyg 的值,应该对以X为底来说是随机的(以对抗可能恶意的 ),同时对以Y为底来说是随机的(以对抗可能恶意的 )。特别的,对于相互的公平,(相应地,)希望得到保证y(相应地,x)是随机地从中 选择,其中 是整数集{1,2,,q-1}。明显地,原始的DH-协议不能到达这一公平的目标。而且,原始DH-协议中,协议响应者(看上去)比协议初始者能更多地影响DH-秘密的结果。
[0047] 在很多应用中,共享的DH-秘密接下来作为构造模块(特别是与其它DH-秘密相乘)来构造更先进和复杂的密码学对象(比如群Diffle-Hellman密钥交换等等)。之前本领域并不清楚到底什么必要条件可以保证DH-秘密的这样模块化的应用是安全的。
[0048] 发明人在此观察到,直觉上保证不可锻造地模块化使用共享DH-秘密的条件是:不管任何恶意的 和/或者 怎么做,也不管与DH-秘密进行组合的(先进而复杂的密码学对象)其它的成分是什么,具有不同标签的(成功完成的)会话的DH-秘密输出应该是随机独立地(即:在G/1G上独立随机的分布),其中G/1G表示G中除了单位元1G外所有元素的集合。发明人将这个性质命名为标签绑定自封闭(TBSS)。
[0049] 标签绑定自封闭(TBSS)DHKE的定义:定义U为G/1G上的均匀分布,定义ZTag为任意由会话标签Tag所确定的成功结束的会话的共享DH-秘密的分布,定义|TAG|为所有可能的成功完成并具有不同标签的会话的数量。如果对于一个DHKE协议,如果对于所有的具|TAG|有不同标签的成功完成的会话,{ZTag}的分布与(U) 是一致的,那么这个协议被称为是标签绑定自封闭的。注意TBSS的定义中,没有要求每一个会话都有随机DH-成分贡献。
[0050] 为了给原始DH-协议增加标签绑定自封闭性质,我们定义DH-秘密为Yxh(Tag)=xyh(Tag) yh(Tag) *g =X ,其中 并且h:{0,1}*→Zq 是一个哈希函数。该协议变体
称为标签绑定自封闭Diffie-Hellman(TBSS-DH),在图1(102)中描述,并且在图13(1301)中有一副图例进行阐明。TBSS性质可以很容易在随机圣谕模式下得到验证(通过假设h是一个真正的随机函数)。用户双方相互的公平是很容易验证的。具体来说,不管DH-成分x和y如何选择, 和 都是在随机圣谕模式下 都中的随机值。但是发
明人要提醒的是,DH和TBSS-DH都不能提供相互的身份认证。(注意如果用户身份没有参与共享DH-秘密的计算,身份认证和密钥导出函数(KDF)都应该依赖于用户身份。)[0051] 发明人表明:缺少标签绑定自封闭性质能够引起DH-协议至关重要的安全问题。
发明认分别在Burmester-Desmedt协议(BD协议)和(H)MQV协议的基础上阐述了这一问题,其中BD协议是原始DH协议在群环境下的拓展,而(H)MQV协议是目前最成功和广泛标准化的DHKE协议之一。
[0052] 对Burmester-Desmedt群Diffie-Hellman协议的重新审视
[0053] 假设 n>2为一个用户群,其中的用户想共享一个密钥。BD协议(由Burmester等在Advances in Cryptology-Proceedings of EUROCRYPT’94,pages
279-290,May 1994提出)工作如下:每个 1≤i≤n,计算并发布 其中xi随机地从 中选取;之后,每一个 计算并发布 (其中索引下标取自一个循环);
最后 计算共享DH-秘密 注意一个成功结束
的BD协议会话的标签是
[0054] 发明人阐述了当n=3的时候,对BD-协议的一个攻击方法,也即 勾结 攻击诚实的 (这个攻击很容易拓展为当n>3时的一般情况,即一些恶意的攻击者勾结在一起攻击诚实用户)。 设X2为 则不管诚实的 挑选的DH指数x3是什么,共享DH秘密都是 注意到由于x1是由 恶意生成的,因此共享的DH-秘密
可能是G中的任意值,也就没有随机性和独立性的保证了。更严重的是,如果勾结的 和在不同的会话中使用相同的X1和 那么这些不同会话的共享DH秘密——不管用户(实际上任何用户都是一样)怎么努力——都是相同的,始终是 这一攻击方式清楚地表明了由于BD协议不是标签绑定自封闭的,没有TBSS性质,会导致DHKE协议重大(甚至严重)的安全问题。发明人要特别指出的是,TBSS和DHKE的公平问题,以及上述攻击,还尚未在本领域中被阐述和处理。还要指出的是,即使是由Katz等提出的BD-协议通用组合版(Universally Composable,UC)仍然不能阻止上述攻击(具体而言,TBSS和公平问题以及上述攻击都没有被群DHKE的UC框架所刻画)。
[0055] 发明人基于TBSS-DH协议的精神给出了BD-协议的一个变体,称为(共同)可贡献BD(简记为记cBD)(参见图1,102)。cBD协议工作如下:每个用户 1≤i≤n,计算并发布其中xi随机从 中选择;之后 计算并发布 最后如下计算出DH-秘密
[0056] 可以很容易地检查我们的cBD协议在随机圣谕模式下是能满足下列性质的:(1)对任意i,1≤i≤n,只要用户 是诚实的,就可以保证共享的DH-秘密Ki是随机的(即在G/1G上随机分布)。理由是,对每一个j,0≤j≤n-1, 本质上是自封闭的,所以是随机的,并且只要 它都是独立于其它乘法成分的。(2)对于具有不同会话标签的不同(成功完成的)会话,其所共享的DH-秘密是独立的。cBD协议可以用Katz和Yung(于Advances in Cryptology-Proceedings of CRYPTO’03,pages 110-125,August 2003)提出的通用方法转换为可验证的群KE,也可以用Abdalla等(在Proceedings of International Conference on Theory and Practice in Public-Key Cryptography PKC’06,pages427-442,2006)提出的方法转换为基于口令的群KE。
[0057] 对(H)MQV的重新研究
[0058] 发明人在最近(由发明人所)提出的针对DHKE协议的的YYZ框架下重新研究了(H)MQV,并发现了(H)MQV在一般意义上不能得到基于标签的健壮不可锻造性。
[0059] 这是通过具体的攻击来展示的,而这些攻击的部分原因正是由于(H)MQV的共享DH-秘密缺少标签绑定自封闭。
[0060] 第一个攻击:假设恶意的 将X∈G作为辅助输入,其中X是G中的任意值,并且不知道X的离散对数(即DH指数),那么 做如下操作:
[0061] (1) 计算d,其中攻击MQV时d=2l+(X mod 2l),攻击HMQV时 然后,选择任意的值z∈q,计算 然后向证书机构(CA)注册A作为公钥。
[0062] (2) 发起一个同 进行的会话,发送(在其辅助输入中出现的)X给 注意 不知道X的离散对数。
[0063] (3)在接收到 发送的Y后,计算 和会话密钥 其中MQV中l l
e=2+(Y mod 2),HMQV中 诚实的 计算 和会话密钥
[0064] 注 意 到这说明了攻击是有效
的。同时应该注意到共享DH-秘密 不是标签绑定自封闭的,比如,考虑z=0的情况。
[0065] 第二种攻击:在接收到未被控制的诚实用户 发送的X后(实际上,由于X通常是预计算的,所以很可能是在协议开始之前X就已经泄漏了出去),恶意的用户 计算d=l l2+(X mod 2),并且注册 为其公钥。然后,在第二轮发送Y=X给 注意在MQV中,此时d=e并且由于Y=X,y=x。还要注意B相应地私钥是b=-xd-1+z。此时,计算 同样的,实际上既不知道b,又不知道y
=x。
[0066] 对于上述两种攻击,恶意的用户都能在既不知道固定私钥,又不知道临时DH-指数的情况下成功地地完成会话。上述攻击也可以稍做修改(事实上是很简单的修改)来攻击图7所示的1轮HMQV变体。因为在上述攻击中会话的标签是不同的并且在诚实用户端是内部未暴露的(实际上,攻击者没有用到任何的临时私有数据),这说明在一般意义上(H)MQV在YYZ框架下没有健壮的不可锻造安全性。注意:由于攻击者的确计算出了共享的DH-秘密(也即会话密钥),3轮(H)MQV变体所要求的MAC身份认证亦不能阻止这些攻击。另外,明确地将用户的身份作为密钥导出函数的输入亦不能阻止上述攻击。发明人需要提醒的一点是,即便在某些场景下上述攻击的危害可能还不是特别明显,有一点很关键:假设一个用户知晓刚刚和自己完成一次会话的另外一方人既不知道其(对应于另外一方发送的DH-成分的)DH指数,也不知其(对应于另外一方所发送的DH-公钥的)私钥,那么该用户怎么能相信自己的安全是得到很好的保障的呢(特别是对那些参与重要任务的用户而言)?在公钥注册时显式要求对私钥进行知识证明/持有证明(POK/POP)可以防止第一类攻击。若每个用户都在协议运行之前知道并保证其它参与用户公钥的合法性,第二类攻击也可以防止。但是这样的补救措施会使得系统复杂化,限制协议的使用。并且身份后置计算(也即只在协议运行过程中才能得获悉其它参与用户的身份和公钥)是很值得称道的保护用户隐私的手段。发明人认为如果一个DHKE协议自身就能保证必要的(DHKE协议所期望的)安全性质,能够自身尽可能的健壮而不用求助于超越协议本身的对于系统环境的额外要求(或者对系统环境的额外要求尽可能少),才是最为可取的。发明人指出在HMQV中,密钥注册时POP/POK是被明确放弃了的,并且在很多(H)MQV实际应用中没有强制要求。这是因为通常认为(H)MQV应能保证相互的身份认证,而且POP/POK亦不能阻止Kaliski(在ACM Transactions on Information and System Security,4(3):275-288,2001所展示的)未知密钥共享(UKS)攻击。
[0067] 补救方法:发明人基于针对共享DH-秘密增加标签自封闭性质的精神,在此给出了以下不需要POP/POK或者预先知道其它参与者身份和公钥的改进方法。具体而言,对于2轮和3轮的(H)MQV变体,设(1) 和 或者(2) 和或者(3) 和e=h(d),等。对于1轮的(H)MQV变体,设
其它成分保持不变与(H)MQV保持一样。
[0068] 发明人认为第一种方案更好。在此,发明人做了进一步的修改。特别地,定义 其中 会话密钥仍然是我们把该协议称为YYZ-MQV,其在图2(204,205)中刻画。(如果关
于私钥的POP/POK在密钥注册时被显式地被要求,以及/或者每个用户都拥有对方公钥的证书,公钥输入可以在d和e的输入中去除。)在实际中,最好每个用户的公钥证书本身都包括了该用户的身份和公钥的哈希值,并且这些值被认证机构CA验证和确认。在这种情况下,d,e的输入中的 和 可以被它们在证书中的哈希值来代替。
[0069] 发明人注意到所有上述的(针对MQV/HMQV的)攻击对于YYZ-MQV均是失效的。YYZ-MQV还具有以下的优点:
[0070] (1)YYZ-MQV是标签绑定自封闭的。
[0071] (2)不管恶意的 (相应地, )怎么做,(x,da)(相应地,(y,eb))的值在随机圣谕模式下是独立的。
[0072] (3)x+da的值(相应的,y+eb)可以由 (相应的, )在不知道其协议参与者另外x+da y+eb一方信息的情况下就进行预计算。而且,B 的值(相应地,A )也可以由 (相应地, )离线预计算。
[0073] 实际上,YYZ-MQV的根本的设计理念完全不同于(H)MQV,我们将在接下来的段落里进行进一步的论述。
[0074] 自封闭联合知识证明
[0075] 安全DHKE协议的核心思想是:当一个用户成功完成一次内部未暴露的会话(记为测试会话)时,该用户应该能得到如下保证:和它进行交互的另外一个用户的确知道(对应于另外一方用户所声称的公钥和所发送的DH-成分)固定私钥和临时DH-指数。由于DHKE协议是并发运行在在异步攻击的环境(比如互联网)中,因此上述这一“保证”应该在面对任何有效的并发中间人的攻击下仍然成立,即使中间人可以控制所有通讯频道,能够知道除测试会话以外任何会话的临时私有值,并具有任意的辅助输入。假设用户的公钥是基于离散对数(discrete logarithmic,DL),发明人发明了一种新的,高度实用的方法来证明这样的联合DH-知识。下面将给出详细的说明和讨论。
[0076] 假设用户 (相应地, )的公钥是A=ga(相应地, ),私钥是a(相应地,b),其中私钥是从 中独立随机地挑选的。假设公钥基础设施(public-key infrastructure,PKI)在密钥注册的时候不需要针对注册公钥所相应地私钥的知识证明(POK)或者持有证明(POP),但认证机构(CA)仍然会检查注册公钥是否为子群的(非单位元)成员(也即保证注册的公钥在中G/1G中)。这里G/1G表示G中除了单位元1G外所有元素的集合。
[0077] 起点是(由姚等在Cryptology ePrint Archive No.2007/191提出,可由http://eprint.iacr.org/2007/191得到的)如下的联合知识证明方法:为了证明对私钥和DH-指y x数的知识(比如,相对于用户 的公钥B和临时DH成分Y=g),先发送X=g 给 响y b y
应并发还{Y=g,JPOK(b,y)=HK(X,X)}。其中JPOK(b,y)表示对一个随机挑战X,针对私钥b和DH指数y的联合知识证明。
[0078] 除了计算DH-成分Y,以及交互对象DH成分X的测试子群外(减少子群测试复杂b y度的方法将在后文中论述),还需要进行大约1.2次幂运算(注意并行计算X 和X 时实x x
际的幂运算量大概是1.2次)。除了其它运算,还需要进行2次左右的幂运算(B,Y)来b y b
验证HK(X,X)的结果的正确性。为了减少计算的复杂度,一项很自然的尝试就是:将HK(X,y b+y b+y
X)的值替换为HK(X )。这样修改后,只需要进行1次幂运算HK(X ),而 只需要1.5次b+y x x
幂运算(注意 在计算X =BY 时一共是1.5次)。
[0079] 但是,这样修改之后会使得原本健壮的认证方法产生根本性的错误。考虑一下这-1 z样的攻击:攻击者Д可以设Y=B g,其中z为任意的z∈Zq:这样就可以Д伪装成 注b+y z
意这种情况下y=-b+z,所以Д可以很容易的计算出JPOK(b,y)=HK(X )=HK(X),而它实y+b
际上不知道b和y。也就是说,Д可以通过恶意地关联y和b的值,将B和Y锻造为X ,而不用真正地知道y和b的值。注意对恶意的 y和b可以是G/1G中的任意值,因此它们能够恶意相关联。
[0080] 从上述观察可知,另一个自然的补救方法是将b和y用随机值遮盖起来。这样,知识证明为JPOK(b,y)=HK(Xdb+ey),其中d和e是随机值。这个想法也被证明是错的。以-d/e和 为例,在恶意的 接收到X后,可以生成并发送Y=B ,这样JPOK(b,
db+eg
y)=HK(X )=HK(1G)。我们注意到,基本的公钥基础设施(PKI)不要求在密钥注册的时候进行POK/POP,恶意的 就不用知道b和y的值。上面的攻击也说明了将b和y遮盖不能保证JPOK的不可锻造性。同时要注意,不管恶意的 怎么做,(在随机圣谕模式下)db和ey都是在Zq*上随机的,问题的关键在于它们不能保证是相互独立的。
[0081] 为了保证db和ey的独立性,一个方法是:将(B,0)的值放在d的输入里,将(Y,1)放在e的输入里。通过这种方式并将h视为一个随机圣谕,那么不管攻击者怎么构造B和Y,B和b都会独立于d=h(B,0)(由随机圣谕假设h,这是一个独立的随机值),而Y和y也会独立于e=h(Y,1)。同时,d和e都是独立的(即便B=Y)。也就是说,不管可能的恶意的 采取什么策略,db和ey的值都是独立的(在随机圣谕模式下,这些值都是在Zq*上均匀分布的)。如果我们仅仅考虑诚实的知识验证者 对抗恶意的知识证明者 那么这个方案似乎可行的。但是这个方法仍然不能满足我们的目的,具体而言,就是不能不可锻造地模db+ey块化使用X 作为构造工具来构建更高层的密码学对象。比如,为了进一步加强诚实知识db+ey
验证者的安全性并提供相互的身份认证,我们考虑下面一种模块化使用X 的情况:定义cy db+ey dx ca+ex
共享DH秘密为A X =B Y ,其中c=h(Y),d=h(B),e=h(Y),并要求 发送HK(1,cy db+ey dx ca+gx
A X )同时 发送HK(0,B Y )来进行相互的认证和身份认证。很明显,这加强了诚实用户 对抗可能的恶意的 的安全性,也提供了看起来合理的相互认证和身份认证。但是这种对于相互认证和身份认证的直觉还是错的。具体来说,考虑下列的攻击:(1)密钥受损伪装(Key Compromise Imprsonate,KCI)攻击:如果固定私钥b泄漏给了恶意的攻击者可以设X=A-1,然后计算出BdxYca+ex=Bdx=Xdb,但实际上它不知道a和x。(2)如果 可以根据计划对象的DH-成分来设置自己的公钥(比如在身份后置模式下),可以设X=Y和dx ca+ex
然后计算出B Y =1G。同样的,还是不知道a和x。我们注意到上述攻
db+ey
击的根本原因是JPOK(b,y)=X 缺少针对d=h(B)和e=h(Y)的标签绑定自封闭性质。
db+ey db+ey
比如,从两个不同的标签 和 产生的X 和X′ ,其中X′≠X
2
但是相关连(比如X′=X),很明显不是独立的。这再一次表明:在用共享DH-秘密(在这里是JPOK)作为模块化构造模块实现更为高层的密码学系统时,缺少TBSS可能为恶意攻击者留下潜在的后门。
[0082] 所有上述的阐述和讨论可以提炼为,(依据针对DHKE协议设计的YYZ框架)为了db+ey让联合知识证明JPOK(b,y)=X 取得基于标签的健壮不可锻造性,JPOK(b,y)必须保证:
[0083] 1.无论恶意的知识证明者 做什么(指构造B和Y),(对于任何的非单位元的DH-成分B和Y),db和ey都应该在 上相互独立。这里,独立表示db和ey的分布在理想化的随机圣谕模式中在 上是独立的(实际上是均匀的)。还有一个更强的要求是:不管恶意的 和 (在生成X,B和Y上)怎么做,(对于任何的非单位元的DH-成分X或Y,B),dbx和eyx都应该在 上相互独立。这里,独立表示在理想化的随机圣谕模式中在 上的独立分布。
[0084] (在某些特定的场景或应用中,比如,每个用户在协议运行前都拥有一份交互对象的经过验证的公钥证书,并且/或者密钥注册时有显式的POK/POP,那么上述针对独立性的要求可以放松一些,只需要对任意的(非单位元)临时DH-成分成立,即无论恶意的用户如何生成临时DH-成分。)
[0085] 2.所共享的DH-秘密,也即Xdb+ey,是标签绑定自封闭的。或者,d和e至少要承诺db+ey(固定) 在发送X 时部分知道的会话标签(比如,当 在后置身份模式下运行时)。
[0086] 在这里,承诺指的是:给定d和e,(可能是部分的)会话标签(由 在发送点Xdb+ey已知)被确定,并且没有有效的(概率多项式时间)算法能输出不同的会话标签,使得双方都满意相对于相同的给定d和e的某一预定的多项式时间可计算的关系。更为正式地来说,承诺协议使得一方可以将自己绑定于一些值,使得一旦给定承诺协议的运行记录,那么被承诺的值将确定下来,并且没有有效的(概率多项式时间)算法可以以不可忽略的概率(可能在在一定的密码学假设下)将承诺协议的运行记录褪承诺为(与该运行记录原承诺值不同的)其它值。
[0087] (在某些场景或应用中,比如,用户经过认证的公钥的拷贝在协议运行之前被对方获得,并且/或者在密钥注册的时候有显式地要求POP/POK,那么用户的公钥不一定承诺固定至d和e。如果用户的身份没有由d和e承诺固定,那么应该将用户身份放入认证的输入以及/或者密钥导出函数的输入中。在实际中,我们建议每个用户的公钥证书中都包含用户身份和公钥的哈希值,并且这些哈希值由d和e承诺固定。)
[0088] 3.为了便于在线计算效率,我们可以加上额外的要求:Bxd的值可以由 离线预计算。
[0089] 基于前述的观察,发明人在此提出两个优先的联合知识证明解决方法。
[0090] (1)自封闭的联合知识证明(SSJPOK)。SSJPOK(b,y)=Xdb+ey,其中 并且e=h(X,Y)。注意在这里d和e在随机圣谕模型下均为随机独立的。标签绑定自封闭的性质可以在随机圣谕模式下很容易地得到验证。图13(1302)中刻画了一个有趣的SSJPOK的图例阐释。如果验证者 在发送Xdb+ey之前不能展示出自己的身份(比如,为了保证自己身份的隐私),可以将d的值设为
[0091] (2)简单SSJPOK(sSSJPOK)。sSSJPOK(b,y)=Xdb+ey,其中d=1,注意,尽管d和e并非都是随机的,但它们在随机圣谕模型下的确都是独立的。标签绑定自封闭的性质在随机圣谕模式下也是能平凡地得到满足。
[0092] SSJPOK(b,y)实际上是两个自封闭的POK的乘积:Xbd用于证明对固定私钥b的知ey识,其中 X 用于证明对临时DH指数y的知识,其中e=h(X,Y)。但是由
b x y
d和e的设计机制,对X =B(相应地,X)的攻击尝试(不管是由恶意的 或 作出的)本b y
质上被封闭于(也即局部化于)X(相应地,X)是封闭的,并被隔离(即,独立于)对其它ey ex db
SSPOK X =Y (相应地,X )的攻击尝试的。正因为如此,我们将之命名为自封闭联合知识证明。具体来说,不管可能的恶意者 怎么做,知识证明者 必须计算两个独立的关于新db ey
的随机挑战X的DH-秘密X 和X 。在对抗有任意辅助输入的CMIM攻击的新挑战指数知识假设(KEA)假设下,其在发明人的相关工作阐述,这明确地蕴含了 的确“知道”b和y。
[0093] 当然,还有其它的SSJPOK候选。但是上面明确提出的两个方法有着以下有利的性质,使得它们更有价值和更值得期待:
[0094] 1)SSJPOK的后置身份,离线和模块化可计算性。SSJPOK允许知识验证者 采用后置身份模式来保护自己的隐私。特别的,如果e的输入不包括 的身份和公钥,可以先发送X而不用展示自己的身份信息。这时,可以先计算Xey,并只在接收到 的身份和公钥后再db dx计算X 。并且还要提到的是,不把Y放入d的输入中使得 可以在协议开始之前预计算Bdb
=(X )。
[0095] 2)sSSJPOK的高效和最少的随机圣谕使用。sSSJPOK的可取是因为它计算时的更高效以及使用随机圣谕也更少。
[0096] 拓展:SSJPOK的拓展版本,记为一般性的SSJPOK(gSSJPOK),在图5中展示。在gSSJPOK的描述中,Y0和B0表示空值;Bj,1≤j≤m1,是 的公钥(也即固定DH-成分)。F是一个预先决定的多项式时间可计算的函数,可能是恒等函数。 和 是两个确定的多项式时间可计算(也许是恒等的)函数(分别由 和 计算),其中 的输出是的一个子集(相应地, 的输出是G/1G的子集),满足 特别的,若
则 其中
“独立”和“会话标签承诺”的解释是对SSJPOK情形的
直接拓展。
[0097] 注意图2(204)所刻画的YYZ-MQV协议实际上是gSSJPOK的一个实例,而MQV和HMQV则不是。
[0098] 还要提出的是:发明人建议,鉴于本文所发明的SSJPOK(还包括sSSJPOK和gSSJPOK)可以作为联合并不可锻造地证明DH-知识的范式,它们是基于DH的密码学应用的基础(特别是对认证和密钥交换的应用来说),有着广泛的应用前景。特别地,它们可以应用于任意的使用先签名后使用信息认证码的认证机制,还可以应用于需要多个DH-秘密相乘的应用中。SSJPOK的一个核心的应用是如下所述的YYZ协议族,YYZ协议族在本质上在安全性,隐私性和协议的效率之间取得最佳平衡。
[0099] YYZ协议族
[0100] YYZ协议将SSJPOK作为关键的构造工具,其一般性结构在图6中展示。在对一般性的YYZ协议的描述中,定义{m1,m2,…}为不同于DH-成分并在协议运行中交换(或与协议运行相关)的信息。Xi’s(相应地,Yj’s)为用户 (相应地, )贡献的(固定和/或临时的)DH-成分。KDF是一个密钥导出函数,其它公式函数的含义和图5中描述的gSSJPOK的函数类似。
[0101] 为了让协议在安全性,隐私性和效率(包括概念的清晰简洁,计算的对称性,便于部署,等)上取得最佳的平衡,发明人研究了该认证DHKE一般性结构的各种各样的实例。
[0102] 注意:相对于随机挑战X的SSJPOK(b,y)只能向用户 保证用户 的确知道b和y。定义SSJPOK(a,x)为由 给出的相对于随机挑战Y的关于a和x的联合知识证明。为了得到安全的DHKE协议(特别地,具有相互的身份认证和密钥确认的协议),一个很自然的方法是将由姚等提出的可抵赖互联网密钥交换(IKE)(Cryptology ePrint Archive No.2007/191)的b y b a联合知识证明机制,也即(X,X)(相应地,(Y,Y)),替换为SSJPOK(b,y)(相应地,SSJPOK(a,xy
x))。会话密钥仍然是从g 导出。尽管这样可以得到一个健壮而安全的DHKE协议,但是这样的DHKE协议相比于现有的姚等提出的可抵赖IKE协议,没有任何优势。
[0103] 注意到,因为Xdb+ey=BdxYex,SSJPOK(b,y)的值Xdb+ey实际上可以用来展示关于x的db+ey知识。现在的关键洞察是:为了让 额外证明私钥a的知识,将自封闭的群合知识证明X=BdbYex乘上另外一个自封闭的知识证明Yca其中 这样得到
其中 计算 计
算 e=h(X,Y),所确定的标签为 还要
注意的是:c(相应地,d)的输入中的 的身份(相应地,的身份)对于保证共享DH-秘密的标签绑定自封闭的来说是多余的,因此可以(在c和d的输入中)除去。所有的观察可以提炼为刻画在图2(206,207)中并在图13(1303)中图例阐释的YYZ协议。所基于的公钥基础设施PKI没有要求在密钥注册的时候针对对私钥的POP或者POK,但是认证机构CA会检查注册公钥是否为(非单位元的)子群成员(也即保证注册的公钥在G/1G中)。
并且,在YYZ协议族中,哈希函数HK,h可以相同。
[0104] 可能暴露给攻击者的临时私有值:在协议运行中,可能暴露给攻击者的由诚实用cy dx户 (相应地, )生成的临时私有值为:如果 (相应地, )没有预计算A (相应地,B ),那么只有y(相应地,x);如果进行了预计算,那么是(y,Acy)(相应地,(x,Bdx))。其它的临时私有值在使用以后都会被立即删除。另外,除了会话成功结束后的会话密钥外,所有诚实用户生成的临时私有值都在会话结束(不管是完成还是中止的)后被删除。对于过期的会话,其会话密钥也被删除。
[0105] 嵌入式(隐式)子群测试
[0106] 检查DH-成分,比如X,是否在G中的基本技术是验证Xq=1G。这需要进行1次模指数运算。但是如果辅因子t=N/q很小,比如 其中p=2q+1或者G是有限域上椭圆曲线的子群(这时候辅因子是一个小常量,甚至为1),X的子群测试可实质上归结为(1)t t检查X∈G′;(2)X ≠1G。一般来说,X∈G′和X ≠1G保证了X不在G′的一个(小的)x
子群中,该小子群以t的一个因数为阶(但这不能完全保证X∈G,比如,考虑X=-g)。这引出了下面的YYZ协议变体(这技术还可以适用于SSJPOK的实例和YYZ一般性结构的其它实例):
[0107] 和 会 话 密 钥 其 中e=h(X,Y)。子群测试如下进行:每个用户验证其交互对象的
dxt cat+ext cyt dbt+eyt
DH-成分是否在中G′;对于 (相应地,)来说,如果B 和Y (相应地,A 和X )catext dbt+eyt
是分开计算的,(相应地, )检查Y ≠1G(相应地,X ≠1G)
[0108] 如果不是分开计算的,那么 (相应地,)验证 (相应地, )。注意,正t如基于MQV的椭圆曲线上所做的一样,检查 和 不能完全保证X ≠1G或
(即:不能完全排除DH-成分属于小子群的可能性),但它仍然在椭圆曲线的环境下提供了合理的保证。
[0109] 发明人要指出的是,如果将诚实用户在协议运行中生成的临时私有值保护好,忽略交互对象DH-成分的子群测试的危害是不足为惧,甚至可以忽略的。比如,即使攻击者通过针对诚实用户 执行一个小子群攻击(通过设X属于一个小子群)而知道了db+ey的部分信息,但在不知道临时值y的情况下它仍然不能导出出b。还要指出的是,攻击者实际上不能导出出db+ey的完整值,因为DH-指数y在每个会话中是独立而随机的。
[0110] 为了表述的简洁和一致,在申请文件的剩余部分中,对带有内嵌式子群测试的发明协议的实现(比如,对基于椭圆曲线的实现),都假设t=N/q;如果每个用户能保证其交互对象的DH-成分为(非单位元)子群成员,则t=1。
[0111] YYZ变体
[0112] 发明人研究了图2中描述的的YYZ协议的一些很有用的协议变体,这些变体都具有本身的特色和价值。
[0113] 简单YYZ(sYYZ): 会话密钥其中c=d=1,
[0114] 健 壮 YYZ(rYYZ): 会 话 密 钥其中
如果要求完整的可抵赖性则f=0而如果只是要求群可抵赖性则f=1。实际上,函数e可以设为h(c,d)或者h(c,X)或者h=(d,Y)。关键的一点在于要将X和Y都放入e的输入中即可。特别的,如果f=0,e仍然可以设为h=(X,Y)。但是如果f=1并且e=h(X,Y),就会存在下面的弱点:用户 设Y=A-1,B=Xet,那么实际上 实际上等于的AcytXdbt。
[0115] 一轮YYZ(记为:orYYZ):用户 发送X=gx给 通常来说,是客户端而 是服务端。令 其中 会话密钥为 对于orYYZ来说,我们建议将输出的长度h设小一点,比如|q|/2(其中|q|表示q的比特长度),b
这样可以使得在某些应用场景下计算时的运算量较少(比如在不方便预计算A 的时候)。
这项技术也可以应用于简单SSJPOK。
[0116] 注意,对于orYYZ来说,的计算复杂度总共是2次指数运算,且 的所有运算都可b以离线进行。为了提高 的在线运算效率,用户 可以先离线预计算A(并将之存储在对应eb q
于 的数据库条目里),然后只需要在线计算X 和X(针对显式要求的子群测试),这样总共需要大概1.2次指数运算(建议显式地检查X为子群成员)。若应用内嵌式子群测试中,应该显式地检查X∈G′和Xebt≠1G(仅仅检查 对于防止小子群攻击不充分)。注意如果 的固定私钥b有泄露的危险,一轮YYZ则会遭受KCI攻击,同时一轮YYZ亦缺少完美前向保密(PFS)性质。但是,相比于一轮HMQV(于图7中描述),orYYZ不会受到未知密钥共享(UKS)攻击,并且有着更好的在线计算效率。
[0117] 关于密钥导出和相互认证:为了得到看起来更为健壮的安全性,在YYZ协议的密钥导出中建议将(c,d)放入HK的输入中;在rYYZ,sYYZ和orYYZ协议的密钥导出中,将e放入HK的输入中(该技术也可在YYZ协议各种应用中的密钥导出中加以应用)。
[0118] 为了在YYZ协议族中加入相互认证,除了会话密钥K外,还需一个消息认证码的密钥Km在协议运行中使用(但是其在协议运行结束后会被删除)。有很多现成的密钥导出函数可供选择,来生成会话密钥和消息认证码密钥(为了表述简洁,下面只详细列出的密钥导出):(1) 其中i是计数器,该计数器递增直到哈希的输出的联结比(K,Km)的长度更长为止;(2)对YYZ协议,
对rYYZ,sYYZ和orYYZ, (3)
(4)用于导出会话密钥和消息认证码密钥的哈希函数是不同的,等等。同样的,对于所有可能的密钥导出方法,(c,d)或e的值可以作为输入放在密钥导出函数的输入中。一般来说,KDF可以用一个伪随机函数(PRF)来实现。
[0119] 对于YYZ,rYYZ,sYYZ的相互认证,在第二轮发送 而 在额外的第三轮发送 对于一轮YYZ的相互认证,可以在第一轮额外地发送而 在下面一轮发还 在实际应用中,消息认证码(MAC)函数通常以HMAC或者伪随机函数实现。在随机圣谕模式或者实际中,MAC函数可以简单地由密码学哈希函数代替。同时,MAC函数的输入值里的0和1也可以用任意的不同的值代替。
[0120] 关于将公钥和身份放入c,d和/或e的输入中:在YYZ中将公钥A(相应地,B)放入c(相应地,d)的输入中,以及在sYYZ中将(A,B)放入e的输入中的根本原理是保证SSJPOK的不可锻造性。在后置身份和/或没有要求POK/POP的密钥注册情形下,这对YYZ协议族的应用和部署而言是很必要的。但是,为了简化协议的部署,如果密钥注册时要求POP/POK,并且/或者每个用户在协议运行之前就了解并确定交互对象公钥的合法性,那么,可以移除c,d,e输入中的公钥。
[0121] 在YYZ中将用户身份 (相应地,)放入c(相应地,d)的输入中,以及在sYYZ中将 放入e的输入中,对于取得标签绑定健壮不可锻造性(比如,抵抗UKS之类的攻击)起到了实质性的作用。如果有人喜欢在某些变体中将用户身份从c,d,e输入中移除,我们强烈建议将用户身份放入密钥导出函数KDF的输入中,并在密钥注册时显式要求POP/POK。
[0122] 在实践中,我们建议每个用户的公钥证书中包括用户身份和公钥的哈希值,这些值可以被认证机构验证认可。这样,c,d,e输入中 和 的值可以直接用证书中包含的它们的哈希值来代替。
[0123] 关于DH-成分的重复使用:在某些情形下,比如,为了提高在线效率或者为了抵抗抵赖服务攻击(Denial-of-Service,DoS)用户可能希望在一段合理的(较短的)时间内,在多个会话中重用相同的DH-成分。为了便于这样的DH-成分重用,同时为了加强协议的安全性,一个方法是将 (相应地, )放入c的输入中,同时/或者 将放入e的输入中,其中 (相应地, )是由 (相应地, )生成并发送的随机临时值。随机临时值 (相应地, )可以在发送DH-成分X(相应地,Y)的同时或之前发送。这是一个小手段,可以保证即使每个用户都在多个会话中重用自己的DH-成分,会话密钥仍然是独立而随机的。
[0124] 客户端隐私保护和服务端DOS抵抗的YYZ
[0125] 发明人为分布式客户端-服务端模式给出了一种YYZ变体,称为客户端-服务端YYZ(csYYZ)。csYYZ的基本结构在图3中刻画。csYYZ协议变体也可以视作为图6中刻画的一般性YYZ结构的实现的一个很好的实例阐释。
[0126] 下面详细描述csYYZ协议的细节。
[0127] 第一轮:客户端(记为 )发送X=gx给服务端(记为 )。
[0128] 在接收到X后,如果 进行显式子群测试,那么若 则 中止会话。如果 进行dbt+eyt的是内嵌式子群测试,那么 先验证X∈G′(如果验证失败则中止会话),然后计算X ,y dbt+eyt
其中 e=h(X,Y),Y=g 是 的DH-成分。 验证X ≠1G(如果验证失败
dbt+eyt
则中止会话)。接着,计算 将X 从临时私有状态中删除(但是私有地
保留 和y),然后进入第二轮。
[0129] 第二轮:发送 给 其中 是 的公钥证书。 首先验证Y∈G′(如果失败则中止会话),然后验证 的合法性,同样的,若验证失败则中止会话。
接下来,做下面的事情之一:
[0130] 1) 并行地计算Yext和Ycat(如果要显式的子群测试,还要并行地计算Yq)。这些并ext cat行计算大约需要1.2次指数运算。接下来,检查Y ≠1G或Y ≠1G(或者,如果是显式q
的子群测试那么检查Y ≠1G)。如果以上检查有一项是失败的,那么中止会话。接着 计算其中Bdxt可以由 在协议运行之前离线预计算。下一步,验证 的合
法性,若验证失败后同样会中止会话。最后,计算MAC-密钥 以及会话
密钥
[0131] 2) 计算BdxtYext(大约需要1.5次指数运算),检查BdxtYext≠1G(在使用内嵌式子群测试情况下)如果失败则中止会话。 再计算 验证t′B的合法性,cat q
若验证失败则中止会话。然后 计算Y (若显式子群测试需并行计算Y),其中act
再验证Y ≠1G(在内嵌式子群测试情况下),同样,若验证失败则中止会话。最后,计算MAC-密钥 和会话密钥
[0132] 计算 和 或 其中 是 的证书。秘密地保留会话密钥,删除其它所有协议运行过程中生成的临时私有值,进入第三轮。
[0133] 发明人需要强调的是,协议运行过程中由 生成的可能暴露给攻击者的临时私有dxt dxt dxt值是:如果预计算B 则是(x,B ),或者没有预计算B 的话则是x。其它临时私有值都会在使用后立即删除。注意:除了会话密钥外,其它所有由 协议运行中生成的临时私有值都会在会话结束后(不管是正常结束还是中止的)删除,而过期会话的会话密钥同样也会被删除。
[0134] 第三轮:发送 给 ( 就完成了所有会话内容)。 在接收到第三轮信息后,首先使用 验证t′A的合法性,验证失败则中止会话。然后,验证的 合法性,失yct败同样中止会话。 再计算A ,MAC-密钥 和会话密钥
利用MAC-密钥验证T的合法性,失败后中止会话。 秘密保留会话密钥,删除其它所有在协议运行中生成的临时私有值,完成整个会话。我们要强调的是,在协议运行中生成的可能暴露给攻击者的临时私有值是 其它的临时私有值在使用后都会立刻删除。除了会话密钥外,其它所有由 在协议运行中生成的临时私有值都会在会话结束后(不管是正常结束还是中止的)删除,而过期会话的会话密钥同样也会被删除。
[0135] csYYZ协议有着下列的良好性质,使得csYYZ协议本身极具吸引力,有着自己独特的价值:
[0136] 1)保护了客户端的隐私:后置身份和零知识。只有在服务端向客户端严明身份后,客户端才会将自己的身份告诉服务端,并向服务端验证自己的身份(也即客户端用后置身份的方式运作)。对于可能的恶意服务器,即使它有任意辅助输入(包括协议运行前服务器可以收集到的所有信息),交互运行的协议的记录都是零知识的。零知识的性质基于下列观察:(1)协议运行的内容可以仅由DH-指数(x,y)生成,而不需要用到固定私钥a或b;(2)在客户端 第三轮发送身份认证信息之前,服务端已经在第二轮使用SSJPOK作为基本构造工具,通过t′B证明了自己对y的知识了。
[0137] 2)服务端可以抵抗抵赖服务攻击(DoS),并具有合理的可抵赖性。服务端 可以只进行一次在线指数运算 来检测和抵抗可能的DoS攻击。注意在面对DoS攻击的时候,cyY可以预计算并在多个会话中重用;同样注意 只在验证的t′A合法性后,计算A 并验证的合法性(这样不需要进行额外的指数运算)。 的合理的可抵赖性基于下述观察:协议运行的内容可以仅仅由DH-指数(x,y)生成,而不需要用到固定私钥a或b。
[0138] 3)接近最佳的(在线)效率:一共进行3次指数运算。 如果计算ext cat
那么需要3.5次指数运算,或者如果并行计算Y 和Y 则仅需要3.2次指数运算。由于Bdxt和DH-成分的计算可以离线先进行,csYYZ的在线效率是:进行1.2次指数运算和 进行2次指数运算。同时,注意如果 在协议运行前就知道 的身份,的在线效率仅仅是1次cyt
指数运算(因为在这种情况下A 也可以由 离线预计算)。
[0139] 关于csYYZ的另外一个(很自然的)实现:为了更好地与其它YYZ协议变体兼容,csYYZ的另一个自然的实现是从与YYZ(图2所示)相同的共享DH-秘密中导出MAC密钥和会话密钥。比如,可以将MA-C密钥和会话密钥分别设为 和其中 和 与YYZ中相同(图2,206,207
所示)。
[0140] 尽管有兼容性上的优点,但csYYZ的这个实现方式有着下列的不足之处:(1)它的效率更低,具体来说,每个用户需要进行一次额外的乘法来计算MAC-密钥和会话密钥;(2)服务器 可能需要更小心谨慎地管理自己的临时私有状态,否则这些状态一旦暴露可能会损坏TBRNM安全性(依据YYZ框架)。这一微妙的问题将在下面提到。
[0141] 注意对于这个csYYZ的自然的实现,在协议运行中需要保存的但可能暴露给攻btd+yte btd+yte击者的临时私有值为(y,X )。发明人通过一个具体的攻击实例,来说明一旦(y,X )暴露,可能会损坏TBRNM安全性。为了表述的简洁,以下的攻击描述中,都假设t=1。具体来说,假设有一个CMIM攻击者Д,以 的名义,以响应者的身份与 在一个会话中进行交互(此会话记为测试会话),同时并发地以 的名义,以协议初始者的身份与 在另外一个会话中进行交互(此会话记为第二会话)。Д在测试会话中,从 接收到X后,将X发送给 如果 在第二会话中的临时私有值 暴露给了Д,Д可以算出
其中 e2=h(X,Y)。此时,攻击者Д可以有一下两个攻击策略:
[0142] (1)Д设 (这样 的公钥同样是B),在测试会话的第二轮生成Y′=y bg′并发送给 (注意Д知道DH-指数y′)。然后,Д可以用X 和y′算出测试会话的会话密钥,而不用知道固定密钥b。
[0143] (2)Д将B作为自己的DH-成分,在测试会话的第二轮中将之发送(但是诚实地生成 的公钥),并进一步假设Д也知道 的固定密钥a,那么Д可以顺利完成测试会话而不必知道DH-指数b。
[0144] 需要注意的是,在上述两种情况下,测试会话仍然是内部未暴露的,而内部暴露的第二会话不是测试会话的匹配会话(因为Y′≠Y,同时Y≠B),因此上述的攻击没有破坏TBRNM的定义。这些攻击能成功的原因是:临时私有值y和 同时泄漏可以提供一个bCDH的解决数据库,比如X,给攻击者。
[0145] 更多的YYZ变体
[0146] 发明人给出并阐述一系列看起来(也许)较弱的协议变体,这些变体进一步强化了YYZ协议的优点、仔细的设计和良好的设计理念。
[0147] 一个变体: 其中 e=b a
h(X,Y),f=1。这一变体有着下列的弱点:(1)如果A 和B 的值进行预计算,那么此协议可能失去TBRNM安全性。具体来说,假设一个并发中间人(CMIM)攻击者Д以 的名义作为响应者与 进行交互(此会话记为测试会话),同时并发地以 的名义作为初始者与 进行交互(此会话称为第二会话)。Д在测试会话中,从 接收到X后,在第二会话中将X注b+cy
册为的公钥。如果临时私有值y和X (在第二会话中由 预计算)同时暴露给Д,Д就可以算出Xb=Xb+cy/Xcy,其中 此时,进一步假设Д还知道 的固定密钥a,那么即使不知道密钥b,Д也可以在第二会话中成功假扮用户 (也即 )。需要注意的是,测试会话仍然是内部未暴露的,而内部暴露的第二会话不是测试会话的匹配会话,因此上述的攻击没有破坏TBRNM的定义。有趣的是,尽管这个变体看起来能比原始的YYZ提供更强的安全性,实际上它不但削弱了安全性,还使得协议复杂化,降低了效率。发明人指出b+cy
上述攻击成功的原因是:临时私有值y和X 同时泄漏可以提供一个CDH的解决数据库,比b
如X,给攻击者。在密钥注册的时候,显式要求POK/POP可以防止这类攻击。(2)这一变体的另外一个弱点是:如果设Y=A,B=(YcXe)-1,那么 设 可以防止
这一弱点,但是要以牺牲预计算和模块化计算的优点为代价(具体来说,用户必须在计算f之前明确它们的角色是初始者还是响应者)。
[0148] 另一个变体: 其中 (当然,只要c和d的输入将标签全部包括即可,比如c=1, 或者
此变体的弱点是:(1)如果两个固定密钥a和b同时泄漏,以往会话的
会话密钥可以推导出来。这样就失去了完美的前向安全性(perfect forward security,PFS);(2)如果 设B=A,那么 如果固定密钥a泄漏,攻击者可以算出
而不用知道DH指数y或x。
[0149] 还有一个变体: 其中 这一变体有以下的弱点:(1)如果用户 设Y=B-1,那么 (2)如果用户设Y=
(BX)-1(i.e.,y=-b-x),并且B=A,那么 对上述弱点有一个补救方法:
设 且 其中 且 但是,这
一补救方法会牺牲YYZ在线计算的效率。
[0150] 另外一个变体: 且 其中-e/d
e=(X,Y)。此变体有一下的弱点:如果 设B=Y (也即b=-y(e/d)),那么如果a泄漏,可以在不知y或b的情况下完成会话。尽管这一弱点可
以通过设 来补救,但是会损害YYZ的模块化计算和后置身份计算性。同
样的,我们只要设 就可以通过牺牲YYZ的模块化计算和后置身份计算
性,使得其健壮性看起来(没有经过论证地)更强。
[0151] 另外一个变体: 且 其中 e=h(X,Y)或 YYZ的这个变体中,用户的公钥A(相应地,B)没有放在c(相
应地,d)的输入中。此变体的弱点是:(1)如果 设Y=X且B=A-c/d(也即b=-ac/d),那么 这一弱点可以通过公钥注册时要求POP/POK来补救;(2)如果
设 那么 (3)如果 设Y=X且 (也即b=
-1
d -a(c/d)),那么 更进一步如果e=h(X,Y)(或其它独立于B的值),
那么 可以设Y=X且 此时 第二和第三项弱点不能通过密钥注册
时的POP/POK来补救,但是如果用户在自己发送DH-成分之前就确定交互对象的公钥B是固定的,那么还是可以补救的。但是这样做会限制某些场景下的部署和应用(比如在为了保护用户隐私的后置身份模式下)。发明人需要强调的是,在rYYZ和sYYZ中,如果c,d,e的输入中没有公钥,那么也会有类似的弱点。
[0152] 还有: 且 其中c=h(Y),d=h(X),e=h(X,Y)。在此变体中,用户的身份和公钥 (相应地, )都不在c(相应地,d)的输入中。除了上面提到的弱点,此变体还有下面更多的弱点(在rYYZ和sYYZ中,如果c,d,e的输入中没有用户身份,也会有类似的弱点):(1)未知密钥共享(UKS)攻击:在此变体中,会话密钥不再附着于会话标签。考虑如下一个中间人攻击者,它在 面前假扮成 但使用公钥B,而在 面前则假扮为 但使用公钥A。这样,攻击者可以使得两次会话的密钥相同。这样弱点可以通过将用户身份放入密钥推导方程得到补救,或者在密钥注册的时候要求POP/bt+eyt
POK。(2)密钥泄露的弱点。假设临时私有值Xd (由 生成并保存,类似于在csYYZ中当在后置身份模式下工作时)和 的私钥a暴露给了攻击者,那么攻击者能够以 的名义与顺利地完成会话,而不必知道b或者y。这一弱点会削弱标签绑定健壮不可锻造性,具体来说,会使得安全性从标签绑定TBRNM降低到隐私保护TBRNM。这一弱点可以通过要求 不对dbt+eyt
X 预计算来补救,但是可能会限制协议的部署和应用。
[0153] 一些其它的有用的变体:(1)YYZ中的函数e设为 或 这样会失去YYZ的模块化计算和身份后置的性质;(2)rYYZ中函数e设为H(X,Y),并且/或者,设c为 且设d为 这可能会削弱rYYZ的强TBRNM安全性,特别是会削
弱原协议对临时私有秘密泄漏的强抵抗性。
[0154] 通用YYZ:令每个pubi,1≤i≤4为与DH密钥交换协议相关的,但除DH成分(X,Y)之外的,其它信息的一个(可能为空的)子集。这些信息一般包括:用户身份信息,公钥,会话标识,随机数,用户的网络地址等等。然后,所有上述的变体版本以及YYZ,rYYZ,sYYZ都是下面这个通用的协议结构的(仔细设计的)实例,这个通用结构就称为通用YYZ。(当然,通用YYZ的一些实现可能在安全性方面比较弱,甚至不安全):
[0155] 且 会话密钥为 其中c=h(pub1,Y)或c=1,d=h(pub2,X)或d=1,e=h(pub3,X,Y)或e=0。f=0则有全部的可抵赖性,f=1或f=h(pub4)或f=h(X,Y,pub4)则有群可抵赖性。建议c的输入包括 d的输入包括 当c=d=1时,e不能为0且e的输入应当包括 如果证书
验证时不对注册公钥进行子群测试,那么fa和fb应该乘上t。
[0156] YYZ有利的性质和特点
[0157] 发明人将YYZ协议(图2,206,207)与(H)MQV协议族(图2,201,202,203)进行比较,突出YYZ协议的如下有利的特点和性质。
[0158] 实质上最优的(在线)效率:YYZ的计算复杂度在本质上与(H)MQV相同:除去DH-成分的计算和子群测试,每个用户需要进行大约1.5次的指数运算。注意计算(相应地, 一共需要相当于1.5次指数运算。YYZ一个关键的dbx
优点就是它实质上的最优的在线计算效率。具体来说,可以预计算X和B ,而 可以预计cyt
算Y和A 。这样,除去DH-成分的子群测试,每个用户只需要在线进行一次指数运算,而子群测试也可以内嵌进行而不必进行指数运算。注意(H)MQV的在线复杂度是至少1.5次指数运算(除子群测试外)。
[0159] 并行性,模块化和身份后置的可计算性:所计算的Bdxt,Ycat+ext和显式子群测试q cyt dbt+eyt qY,和相应地 的A ,X 和X,可以以一种并行地,模块化地,后置身份的方式进行计算,这会简化YYZ协议在不同场景下的部署和应用。
[0160] 具体来说,并行计算Ycat+ext和Yq(相应地,Xdbt+eyt和Xq)需要1.2次指数运算;计算cat+ext(相应地, )需要1.5次。更重要的是,注意到Y (相应地,
dbt+eyt
X )可以在知道交互对象的身份和公钥之前就进行计算。这一后置身份可计算性对于保护用户隐私是很重要的。并行、模块化和身份后置可计算性的优点可以很好地在上面提到的应用于分布式客户端/服务器条件下的(对客户的零知识和后置身份计算)隐私保护和(对服务器)抗DoS攻击的csYYZ协议变体上得到很好的体现。发明人要强调的是(H)MQV协议族没有这些优点,特别是后置身份可计算性。
[0161] 可抵赖性:YYZ的会话密钥可以直接从DH-指数x和y中计算得到(而不用涉及到用户的固定私钥a或b)。具体来说, 这使得协议的用户拥有非常好的可抵赖性来保护自己的隐私。而且,对于3轮的YYZ来说,初始者 在遭遇有任意辅助输入的并发攻击者 时仍拥有完美的可抵赖性。具体来说,在随机圣谕RO模式下基于和SSJPOK相关的新鲜挑战联合知识知识假设(JKEA),3轮YYZ协议(在并发攻击者 和诚实用户 实例之间的)并发运行的记录可以有效地被一个(运行 作为一个子程序)模拟者模拟出来。
发明人提醒注意(H)MQV不具有这样的可抵赖性隐私保护的优点。
[0162] 健壮的安全性:首先,YYZ协议和(H)MQV在设计时,使用了不同的基本工具:YYZ使用的是此前介绍和论证的自封闭联合知识证明(SSJPOK),而发明人认为SSJPOK具有着基础性的和独立性的价值并有广泛的应用。而(H)MQV的设计是基于指数挑战相应(exponential challenge-response,XCR)签名,MQV则是基于隐性签名。其次,YYZ和(H)MQV在设计时使用了本质上不同的设计指导原理。YYZ在设计时是为了在针对DHKE的YYZ框架下取得基于标签的健壮不可锻造性(TBRNM),设计的哲学思想是实现尽可健壮的安全性而同时依赖于尽可能少的秘密。具体来说,一旦一方完成了(有着唯一标签的)会话,那么它就一定具有如下保证:只要该会话没有内部暴露,那么它的交互对象(不管是诚实的还是恶意的)就一定知道相应地DH-指数和私钥(对应于交互对象所发送和声称的DH-成分和公钥)。需要注意的是,正如我们前面在对(H)MQV的重新审查中所展示的那样,一般的(H)MQV不能取得如此健壮的安全保证。(H)MQV是在Canetti-Krawczyk框架下依据会话密钥的安全性(SK-security)进行分析的,而这样分析得到的安全性会比在YYZ框架下TBRNM的安全性弱。据此,发明人确认YYZ的构造工具和设计原理较之(H)MQV更为可靠和稳固,特别是考虑到(H)MQV的进化史之后。
[0163] 最小的(初始)设置及易于部署应用:YYZ在密钥注册的时候不要求POP/POK,而POK/POP在MQV中通常都会用到(注意,如在前面针对(H)MQV的重新审查中所展示的那样,没有POK/POP的(H)MQV一般会失去失去TBRNM安全性)。YYZ可以在CDH或者DDH假设成立的一般群上运行(而MQV不能)。而预计算、并行模块化及后置身份可计算性同样大大简化了YYZ的部署和应用,使之可以在不同的场景下在安全性、隐私性和效率等方面取得平衡。最后,注意YYZ协议和(H)MQV协议族相比有着完美的兼容性(具体来说,它们有相同的安全参数)。
[0164] 其它值得注意的优点:YYZ的设计原理具有概念的简单和清晰性,协议的结构简单,且计算是对称的。
[0165] YYZ协议族的安全性评注
[0166] 发明人在此简要地论述(三轮的)YYZ协议在 为诚实用户 为恶意攻击者的测试会话中的TBRNM安全性。
[0167] 为了顺利地完成测试会话,不管 采取何种策略,它都必须计算出3个独立的cy db ey db eyDH-秘密:A ,X 和X 。由于A是独立于(也即不能恶意地使之关联于)X 和X ,为了顺db ey
利地完成测试会话,必须对新随机挑战X计算出两个独立的DH-秘密X 和X 。由于随机挑战X是全新的,因此 所拥有的任意辅助输入(包括它从互联网上收集/偷窃到在运行db ey
YYZ协议之前的任意其它不同协议的执行情况)不会帮助其计算出X 和X 。另外一方面,针对YYZ并发运行(并发是YYZ框架允许的)的CMIM攻击也不会让恶意的 得到任何CDH求解帮助机制。具体来说,除了仅从相应的临时DH-指数导出的信息外,暴露的临时私有值不能给攻击者提供任何额外的有用信息和优势,因此也不会提供CDH求解帮助机制。基于对抗具有任意辅助输入的新鲜挑战指数知识假设(KEA),这意味着为了成功完成测试会话恶意的 不得不同时“知道”b和y。从这个意义上,(YYZ安全性所基于的)SSJPOK看作是一个新的假设,称之为“对抗有任意辅助输入CMIM的“新鲜挑战联合指数知识假设(JKEA)”。
发明人相信SSJPOK有着自己独特的和基础性的价值,并且可以在很多其它(基于DH的)应用中找到应用。
[0168] 但是,我们应该意识到所有一轮和两轮隐式认证DHKE协议所固有的安全局限性。比如对两轮隐式认证DHKE来说,其欠缺完美前向安全性(perfect forward security,PFS);对一轮隐式认证DHKE来说,其有密钥受损假冒(key-compromise impersonate)弱点。即使是三轮的YYZ(也包括HMQV),也有一些固有的局限。比如,只要恶意的协议初始者在接收到第二轮信息后立即中止协议,那么协议的响应者就不能公平地享受可抵赖性;
再比如,三轮YYZ和(H)MQV都会受到最后一条信息去除(cutting-last-message)攻击,等等。发明人需要强调的是,协议响应者不能公平地享受可抵赖性和最后一条信息的传送缺少保证是YYZ和(H)MQV在协议结构上固有的缺陷,并不会损害TBRNM的定义(此性质是相对于具有唯一标签、成功完成且内部未暴露会话成立,而不用考虑可抵赖性方面的隐私保护)。这些缺陷能够容易地补救,但是却需要付出性能上的代价。
[0169] 关于sYYZ的安全性:sYYZ是以简单SSJPOK来设计的,使用最少的随机圣谕。但y是,由于以下的事实,发明人没有声称sYYZ的基于标签的健壮不可锻造性:在 和 中Aa b x
=Y 和X =B 的值不是独立的,因此可能被恶意的关联在一起。
-1 -1
[0170] 考虑如下sYYZ的弱点:如果 设Y=X 且B=A(相应地,Y=X,B=A ),那么(相应地, )。如果DH-指数x泄漏了(从中可以推导出y),可以在不知道b(为a或-a)的情况下完成会话。但是,这一弱点不会破坏基于标签不可锻造性,因为此时临时DH-x已经泄露给攻击者了(也即会话是内部暴露的)。这表明了,假设x没有暴露,这一弱点在CDH假设下没有任何危害。具体来说,假设x没有暴露,sYYZ在上述攻击下的安全性可以化归为:给出一个随机生成的x=gx,计算出Xx的难度。可以证明这一问题的难度等价于传统的CDH假设。发明人认为sYYZ仍然是安全的,但是发明人没有尝试声称其TBRNM安全性。
[0171] 关于rYYZ的安全性:的确,当f=0的时候,rYYZ在牺牲后置身份和模块化可计算性的优势为代价后可以提供和YYZ协议同样的安全性。但是当f=1的时候,情况就会变得相当微妙了。发明人指出当f=1时,预计算Ab或者Ba会使rYYZ失去TBRNM安全性。
[0172] 具体来说,假设一个CMIM攻击者Д在一个会话(我们称此会话为测试会话)中以 的名义作为响应者同 交互,同时并发地在另外一个会话(我们称之为第二会话)中作为初始者以 的名义与 交互。在第一个会话中从 接收到X后,Д将X注册为第二会话b+cyt中 的公钥。如果临时私有值y和X (由 在第二会话中预计算)同时暴露给Д,那么b b+cyt cyt
Д可以计算出X =(X /X ),其中 这时,进一步假设Д还可以得到 的固
定密钥a,那么Д可以在测试会话中,成功地假扮为用户 (也即 )而不必知道私钥b(为了达到该目的,在测试会话中,会如实地生成其DH-成分)。就是说,在这种情况下,Д计算 时使用到了(a,y,Xb)的知识,但是却不知道
b。
[0173] 注意测试会话是内部未暴露的且有唯一的标签,因此上述的攻击没有违反TBRNM的定义。有意思的是,尽管在f=1时,rYYZ看起来会提供比原始YYZ更强的安全性,但实际上rYYZ非但会削弱安全性,还会使得协议复杂化,降低协议效率。发明人指出这类攻击b+cyt包含的深层次原因是:临时值y和X 同时泄漏可以提供一个CDH解决帮助机制——比如b
X——给攻击者。这样攻击可以通过密钥注册时显示要求POK/POP来防止。发明人指出,fb+cy fa+dx
对于f=1和预计算A 和/或B 的rYYZ来说,POP/POK或者对临时私有值的特别关注都只是为了对抗可以同时得到 的固定私钥和 的临时私有值的攻击者。如果这两个值没有同时暴露,上述攻击就会失败。(H)MQV中情况也是一样,如果DH指数与 或 的值暴露了,那么攻击者也可以得到诚实用户 或 的固定私钥。
[0174] SSJPOK在安全外壳(Secure Shell,SSH)上的应用
[0175] 安全外壳(SSH)是基于公钥的认证协议组件,可以使得用户可以利用一个客户端机器,通过不安全的网络,登录进入一个远程服务器,在远程主机上安全地执行命令,将文件从主机上移动到其它机器上。该协议是现行的工业标准,广泛应用于使用UNIX和Linux操作系统的服务器,以及任意操作系统的客户端上。
[0176] SSH协议组件包括三个协议:(1)SSH传输层(SSH/TL)协议(由Ylonen于INTERNET-DRAFT,draft-ietf-architecture-13.txt,2002提出),这提供一个从服务端到客户端的单方身份认证的安全信道;(2)SSH用户身份认证(SSH/UA)协议,这提供一个从客户端到服务端的单方身份认证的安全信道;(3)SSH连接协议,这运行在由前面两个协议建立的安全交互信道上。
[0177] 现有SSH/TL协议(由Ylonen于2002年提出)的核心认证协议是:(客户端)x y发送X=g 给服务端 服务端 (公钥为B)送还{sid,B,Y=g,SigB(H(sid,B,X,Y,Xy))},其中sid为会话标识(通常有两个交换的随机数串联而来),SigB(H(sid,B,X,Y,Xy))表示 对信息H(sid,B,X,Y,Xy)的签名,H为密码学哈希方程(比如SHA-1)。会话密钥由gxy推导得到。
[0178] 假设签名由数字签名标准(Digital Signature Standard,DSS)生成——这是实践中的常见情况——那么用户 (客户端)方面的计算复杂度大概是3.5次指数运算,而用户 (服务端)大概是3次。注意,除去DH-成分X和Y,用户不能预计算或者离线验证签名或者会话密钥,因此 的在线计算复杂度为大约2.5次指数运算和 的在线计算复杂度为大约2次。就通讯效率来说,除去其它必要的传输,DSS签名(即:SigB(H(sid,B,X,Y,Xy)))的长度为2|q|。
[0179] 发明人指出SSJPOK和本专利中提到的sSSJPOK都可以直接应用于SSH/TL中。具体来说,令 其中 且e=h(sid,X,Y),或者d=1且注意,为了保护其隐私性,客户端 可能不在第一轮表露自己的身份,
因此d和e的输入中没有 (当然,如果 在第一轮中表露了身份,那么可以将之放入d和e的输入中)。令(k1,k2)为由 导出的密钥对(或者如果sid不在e的输入中,从导出得到)。那么,上述SSH/TL的第二轮信息由 代替,
会话密钥定义为k1。
[0180] 对于基于SSJPOK的SSH/TL协议的计算复杂度,如果用户 显式检查Xq=1G(即:进行显式的子群测试)那么 的计算复杂度大约是2.2次指数运算,或者,在进行嵌入式子群测试情况下为2次指数运算(此时建议 保护好自己的临时DH-指数y)。由于Y可以离线预计算,的在线效率为显式子群测试情况下的1.2次指数运算或嵌入式子群测试情况下的1次指数运算。对 来说,计算复杂度总共为大约2.5次指数运算,但是在线效率为1dxt
次指数运算(具体来说,X和B 可以离线预计算)。相比于基于DSS的SSH/TL协议,这显著地提高了(在线)计算效率。特别的,基于SSJPOK的SSH/TL的计算效率实质上是最佳的。进一步注意到, 的长度为|q|,也比基于DSS的SSH/TL的通讯复杂度更好。
[0181] 无证书YYZ(Certificateless YYZ,clYYZ)
[0182] 令 :G1×G1→G是可采纳的双线性对映射,其中G1是一个以q为阶,由元素P生成的循环加法群(或者,乘法群),并且假设离散指数问题假设(DLP)在G1和G上同时成立(也即,当给定一个元素xP或者gx,其中x是从 中随机选取,那么没有概率多项式时间算法可以有不可忽略的概率计算出x,其中概率取自算法所使用的随机硬币和生成x所用到的随机硬币)。这里的可采纳的双线性对满足以下三个性质:
[0183] 1)双线性:如果P,Q∈G1并且x, 那么
[0184] 2)非退化性:存在一个P∈G1使得
[0185] 3)可计算性:如果P,Q∈G1,可以在多项式时间内计算出
[0186] 令H1:{0,1}*→G1为一个哈希函数,可信私钥生成器(Private Key Generator,PKG)的公钥为:PKPKG=sP,其中s随机地从 中选取。用户 的公钥是(A,QA),私钥为(a,sQA),其中 或者 并且sQA由PKG生成并用一种安全的方法发送给用户 的公钥和私钥分别为(B,QB)和(b,sQB),其中 或 sQB由PKG生
成并安全地发送给
[0187] 计算会话密钥 计算会话密钥 注意 和 可以根据安全性,隐私性和效率的平衡以及用
户的选择,从YYZ,rYYZ和sYYZ三种版本中任选一种计算得到。
[0188] 在线高效签名加密
[0189] 给定一个基于DH的公钥加密(PKE)机制,比如广泛使用的DHIES算法(由Abdalla等发 表 于CT-RSA’01,Lecture Notes in Computer Science 2020,pages 143-158,2001)和PSEC算法(由Fujisaki等发表于Advances in Cryptology-Proceedings of CRYPTO’99,Lecture Notes in Computer Science 1666,pages 537-554,1999)。如果接x
收者 的公钥为B,发送者 发送X(作为密文的一部分)来和 生成并共享DH-密钥B(通x
常B,连同X,被用来导出对称加密的密钥和MAC-密钥)。单轮YYZ(orYYZ)的一项应用就是用orYYZ中的 替换基于DH的PKE算法中的DH-密钥Bx,从而得到一种在线高效签名算法。
[0190] 基于口令的TLS/SSL
[0191] 安全套接字层(Secure Sockets Layer,SSL)协议(由Freier等发表于INTERNET-DRAFT,draft-freier-ssl-version3-02.txt,1996)是一项重要并且广泛使用的认证协议,主要用于万维网(WWW)。SSL发展为网络安全事实上的标准,并且进一步发展为传输层安全(Transport Layer Security,TLS)(由Dierks等提出于Request for Comments(RFC)2246,Internet Engineering Task Force(IETF),January1999),而TLS正是由工业标准化机构互联网工程任务组(Internet Engineering Task Force,IETF)开发的互联网的网络安全标准。TLS/SSL协议运行在应用层协议之下,比如超文本传输协议(Hyper-text Transfer Protocol,HTTP),轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP),互联网消息访问协议(Internet Messaging Access Protocol,IMAP)等等,但在TCP/IP层之上。当传输层的通讯是安全的(由TLS/SSL保证),那么同样的,所有应用层协议的通讯都是安全的。
[0192] TLS/SSL的典型应用,比如互联网上的电子银行和电子商务,是分布式的客户端-服务端环境。在这样的条件下,每个客户 (客户不一定有公钥)会预先在拥有公钥的服务端 处注册口令 其中D为低熵字典。服务端维护一个数据库,每个注册用户都在其中有一个条目,保存该用户身份和口令信息。
[0193] 在客户端-服务端环境中TLS/SSL典型应用的核心认证机制是:假设rA和rB分别为 和 在协议运行前发送的两个随机数。在第一轮,发送 给 其中PKE是 支持的公钥加密方法,r是随机字符串而H是哈希函数(比如SHA-1)。第二轮中,解密得到r,发还 给 向 认证自己。会话密钥设为r。为了向 认证自
己,发还 给 其中E是用r作为密钥的对称密钥加密算法。
[0194] 假设服务端 具有DL公钥B=gb,比如,当服务端使用广泛应用的DHIES或者PSEC PKE算法。发明人给出了一些组合优化方法,使得基于口令的TLS/SSL更高效也更安全。组合优化的核心是一个基于口令的(明文感知的)公钥加密方法,而这个方法本身又是以客户端-服务端环境下基于口令的DHKE为基础的。
[0195] 客户端-服务端环境下基于口令的DHKE:为了表述简洁,在这里发明人仅仅描述到的内嵌式子群测试的实现方法(向显式子群测试实现方法的拓展是直截了当的)。当 向tbw -tbw tbw注册口令 的时候,计算B 和/或B ,并在数据库中对应于 的条目中存储 和B和/或B-tbw,其中t是辅因子(cofactore), 或 或直接w=pwA,
hl定义为哈希函数h输出长度l的前缀(通常l很小,比如 的长度)。注意即使服务端tbw -tbw
预计算并存储的B 和/或B 暴露了,也不会泄露客户的口令 具体来说,通过B=b b b
g 计算B 的难度等价于标准CDH问题。因此,在CDH假设下,通过公钥B计算出B,再得到w(同时可以得到 )的可能性被排除了。
[0196] 发送 给 注意X′实际上是基于DH的对w的值的完美隐藏的保证。这隐含可以将w设为简单的口令,但是设 可以简化密钥推导以及交互(密钥确认)认证。(一般来说,如果l很小,比如等于口令长度时,发明人还是建议将用户身份放入密钥推导和验证方程中以得到额外的安全保证;但是如果l很大,w又已经记住了用户的身份,那么可以将它们从密钥推导和验证的方程中移除。)共享的DH秘密如下计算:计算x w
注意所以 的计算都可以离线进行,计算X′=gB 实际上需要1次指数运算(因tbw -tbw tb
为w很小);在接收到 的信息后,从自己的数据库中检索B 和/或B ,验证,计算X′tb bwt
并验证X′ ≠B (否则 中止会话),最后设DH秘密为 注意 在线计算量
是1次指数运算。很容易验证 共享密钥可以从此推导。
[0197] 基于口令(明文感知)PKE:给定一个基于DH的公钥加密(PKE)算法,比如广泛使b用的DHIES算法和PSEC算法等等。如果解密者 的公钥是B=g,加密者 发送X(作为密x b x
文的一部分)来与 生成并共享DH-密钥B =X。通常,会用(X,B)来导出在PKE算法中x
实际使用的秘密,即为KDF(X,B)。发明人给出了一个办法,(利用上述基于口令的DHKE)可以将这一基于DH的PKE方法转化为基于口令(明文感知)的PKE方法:
x w
[0198] 1)DH-成分X改为X′=gB。
[0199] 2)共享DH-秘密Bx=Xb替换为 (计算方法如上文)。原x b xt t -bwt
来密钥推导函数KDF输入中的(X,B =X)替换为(X′,B =X′bB )。
[0200] 3)假设原来的基于DH的PKE(比如DHIES和PSEC)对信息的m密文由和 组成,那么增加明文感知方法是将 替换为
[0201] 上述修改后的PKE方法我们称之为PWPKE。发明人指出上述的修改不会减弱原PKE的安全性。
[0202] 现在,发明人提出改进的基于口令的TLS/SSL,其又会用到前面发展的基于口令的DHKE和PKE方法。在第一轮,发送 给 其中r是由 随机选取的并将作为会话密钥。这里,随机数(rA,rB)可以放进PWPKE(r)密文所包含的MAC的输入中。
具体来说,可以将 改为 第二轮中,解密出r,并发送
给 会话密钥仍然设为r。
[0203] 下面是一个基于广泛应用的DHIES的详细的实现实例(基于PSEC的实现实例也可以很容易地推导)。在第一轮中,发送tx
给 其中(k1,k2)←KDF(X′,B )。在从 接收到消息后,如下工作:从自己的数据库中检索(Btbw,B-tbw),验证X′∈G′,计算X′tb并验证X′tb≠Bbwt(若验证不通过 则中止会话),计算 并导出密钥 然后,解密C得到r,检查
的合法性(不合法则 中止会话)。如果所有上述的检查验证都通过
了,在第二轮计算并发还 给
[0204] 发明人指出,改进后的基于口令TLS/SSL保留了原基于口令TLS/SSL的所有的安全性质(不言自明,TLS/SSL协议自身并没有完备的安全性,比如还存在PFS和KCI方面的弱点)。改进后的TLS/SSL有着以下显著的优点,使得它在实际应用中更受到青睐(特别是针对TLS/SSL的主要应用:基于互联网的电子银行和电子商务是):
[0205] 1)客户的口令在服务端得到了良好的保护,即使服务端的数据库泄露也是如此。
[0206] 2)排除了离线攻击的可能,即使会话密钥暴露也是如此。具体来说,第一轮信息完美地隐藏了 而第二轮信息是独立于 的,这就排除了任何潜在的离线攻击的可能。并且,即使会话密钥r泄露,离线攻击也不可能成功。注意,在原基于口令TLS/SSL中,一旦会话密钥r泄露,口令就可以由Er(pw)推导得到。发明人强调,由于会话密钥可能在服务端和客户端之间持续使用数小时,我们更应该考虑到它会泄露给攻击者的情况(相比于其它临时私有值,比如临时DH-指数x等仅持续使用数秒的值)。
[0207] 3)更好的(通讯)效率。具体来说,交互轮数复杂度从3次减少到了2次,并且原TLS/SSL第一轮中发送的 的值也已经移除。计算复杂度和原TLS/SSL相当。
[0208] 针对IEEE 802.11的无线群Diffie-Hellman密钥交换
[0209] Bresson等提出了一项非常高效的群密钥交换协议,称为BCEP协议(Journal of Computer Communications,vol.27(127),1730-1737,2004),适用于一组小功率移动设备(客户端) 与无线网关(服务端或者基站) 交互的情况。BCEP协议的目标是实现可以支持有线等效隐私协议(Wired Equivalent Privacy,WEP)的密钥交换机制,而WEP是IEEE 802.11标准的一部分。在BCEP协议中,服务端 的公钥为B=gb,每个客户端
1≤i≤n的公钥分别为 其中ai是由 随机从 中选取。BCEP协议的核心密钥
交换构建模块是:每个 生成 计算 使用自己的签名密钥ai对Ki进行签名生成签名σi,最后将(Ki,σi)发送给
[0210] 本发明中提出的一轮YYZ(orYYZ)协议可以直接在此应用,显著地提高BCEP协议的效率。具体来说,其方法是将(Ki,σi)替换为 (其它BCEP的成分不变),其中 (前面讨论过的各种YYZ变体中使用的不同ei亦可在这儿应用)。较之使用标准的基于DSS的BCEP协议,使用基于orYYZ的协议实现在具有如下优势,这些优势对于在苛刻无线无线环境(包含低功率的移动设备和集中的基站)下部署和应用的群KE至关重要:
[0211] 1)每个 的计算复杂度从3次指数运算降到了2次。注意 的所有计算都可以离线进行。
[0212] 2)如果忽略对DH成分的子群测试,的总计算复杂度可以从n×2.5次指数运算降到n×1.5次。但是如果 预计算并存储 1≤i≤n,的在线效率可以从n×2.5次降低至n次。注意在BCEP协议中,不能预计算Ki,也不能预验证签名σi,因此对于每组(Ki,σi),1≤i≤n需要花费2.5次指数运算。
[0213] 3)由于没有使用签名,通信复杂度从n×(|p|+2|q |)降至了n×|p|。注意每组(Ki,σi)的长度是|p|+2|q |。
[0214] 假设(先不管这个假设是否合理)服务端的固定私钥b暴露了,我们记得orYYZ本身有KCI弱点。但是,如果 的私钥b真的暴露了,所有BCEP协议的群会话密钥都已经暴露。发明人指出,相比于原BCEP协议,基于orYYZ的实现在本质上不会为安全性带来负面影响,反而在严苛的无线环境下会在效率上提供显著的优势(或者说,能够在安全性和效率之间取得了更好的平衡)。
[0215] 另外一项改进BCEP协议的方法是运行本发明中提出的(用于改进的基于口令的TLS/SSL),适用于客户端/服务端环境下的,基于口令的DHKE来产生共享DH-密钥Ki。在这种情况下,客户端没有公钥,而是在服务端注册自己的口令(即使服务端的数据库泄漏,口令也会得到很好的保护)。这种方法有下列额外的优点:
[0216] (1)服务端的计算复杂度进一步降低,总计仅n次指数运算。
[0217] (2)服务端和客户端都可以更容易地维护和管理口令(而不是公钥)。并且,即使服务端的数据库泄露,客户的口令仍然可以得到良好的保护。
[0218] (3)基于YYZ的KCI弱点同样被排除了。
[0219] 虽然依据各种推荐的实施方式对发明方法进行了描述,但是对于熟悉本领域的人而言,本发明可以在下附的权利要求的精神指导和框架下进行修改和实践。
[0220] 并且,应当指出,申请人的权利要求旨在包括所有权利研究原理和基础的等价物,即便在将来的司法诉讼中做出相应修正。
[0221] 基于上述发明方法的描述,我们接下来提出创新的并想要得到保护的权利要求:
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用