一种三方口令认证密钥交换方法

文档序号:25802500发布日期:2021-07-09 12:38阅读:131来源:国知局
一种三方口令认证密钥交换方法

1.本发明属于密码技术领域,涉及一种基于rlwe(ring learning with errors,环上错误学习)的三方口令认证密钥交换方法。


背景技术:

2.密钥交换允许两个或多个通信实体在不安全的信道中共享一个公共密钥。不支持身份验证的密钥交换只能提供被动攻击安全,而认证的密钥交换可以在抵抗主动攻击的情况下,确保会话中的参与者能够与另一个诚实的参与者共享会话密钥。与其他密钥交换方式对比,基于口令的认证密钥交换既不需要公钥基础设施,也不需要用户存储长对称密钥,而是让各方共享一个简单、低熵、易于记忆的口令,具有数据量小、速度快等优点,被广泛应用。
3.现有的密钥交换大都只针对双方通信的的情形,而在互联网实际场景中,随着业务参与方数目不断增加,如手机终端、本地服务器、远程服务器之间的通信,以及电子商务中买家、卖家、第三方平台之间的交涉,这些应用场景的不安全性,使得三方密钥交换的研究很有必要。当通信实体数量增加,整个网络需要预存储的口令数量也越来越多,2pake(password authenticated key exchange,基于口令的密钥交换)的密钥协商方式不适用于用户

用户的通信场景。具体来说,如果网络中有n个用户参与通信,每两个用户协商并分享一个会话密钥,则整个通信网络中共需要预存储n(n

1)/2个口令。为了解决2pake的局限性,密码学者提出了三方口令认证密钥交换(3pake,three

party password authenticated key exchange),引入了一个可信服务器,每个客户端只需要与服务器共享自己的口令,不用预存储其他客户端的信息,减少了口令存储、管理和更新的问题。服务器存储了所有客户端的口令哈希值,对通信双方进行身份验证,并帮助他们生成会话密钥。
4.目前,3pake协议的安全性主要依赖于大整数分解和离散对数等经典数学问题的困难性。随着量子计算的发展,大多数经典难题都可以通过量子计算在多项式时间内求解,这给传统公钥密码体制下的3pake带来了挑战。因此,设计一个具有后量子安全性的认证密钥交换协议就显得尤为重要。其中,基于格的密码算法在灵活性、安全性和计算量等方面有着卓越的性能,是后量子密码算法最常见的数学基础之一。由于在基于理想格的rlwe困难问题构造的密钥协商中,各参与者都会随机引入小错误项来保证后量子安全,因此需要一个误差协调机制将包含误差的近似密钥恢复成一致的会话密钥。在peikert误差协调机制中,定义了舍入函数[x]2:=[2x/q]mod2、交叉舍入函数随机加倍函数和恢复函数其中,模数q为素数,z为整数集,区间i0={0,1,...,[q/4]

1},i1={

[q/4],...,

1},误差区间e=[

q/8,q/8)∩z(modq),是独立于v的均匀随机值。结合以上函数,可定义:
[0005]
·
协调函数(k,ω)=helprec(v):计算辅助协调的信号值
协调值返回(k,ω)。
[0006]
·
恢复函数k

=rec(2w,ω):输入w和ω,返回协调值k


[0007]
在多项式环r
q
=z
q
/(x
n
+1)上,对于两个近似的环元素v=(v0,...,v
n
‑1)∈r
q
,w=(w0,...,w
n
‑1)∈r
q
,可以计算(k,b)=helprec(v)=(helprec(v0),...,helprec(v
n
‑1))。根据二进制协调向量b=(b0,...,b
n
‑1)∈{0,1}
n
,可以计算k

=rec(2w,b)=(rec(v0,b0),...,rec(v
n
‑1,b
n
‑1))。只要两个环元素的误差满足||w

v||

<q/8,通过以上函数可得到相同的k=k


[0008]
目前基于格的口令认证密钥交换协议相对较少,且大多针对两方的情况,每个用户都需要预共享所有与其通信的用户的口令哈希值,在口令的存储、更新和管理上造成了资源和安全性的损失,因此不适用于用户多、用户

用户通信的场景。


技术实现要素:

[0009]
针对现有技术存在的问题,本发明的目的在于提供一种基于rlwe问题的隐式三方口令认证密钥交换方法,两个客户端通过低熵的口令与服务器进行交互,完成三方认证,并使用误差协调机制获得一致的会话密钥,使用该会话密钥在不安全信道中保证消息的机密性。
[0010]
首先,为了降低客户端

服务器

客户端场景中口令认证和密钥交换的通信复杂度,提高协议运行效率,本发明设计了隐式三方认证的方法,相对目前常用的需要多次进行哈希运算、消息传输量大的显示认证方法,本发明的方案简化了认证结构,减少了哈希的次数以及通信量的大小。其次,本发明考虑了两个多项式模乘的情况,对此进行了更加收敛的参数分析方式,平衡了方差、模、维数、采样参数和误差率,大大降低了模数,从而使密钥交换更加高效。由于参数为d的中心二项分布,在安全上与标准差为的离散高斯分布相似,且能防止计时攻击,因此,采样时,本发明选择能更高效的在硬件、软件上实现的中心二项分布。这种采样方式更为简单,并且不需要引入大的表格和高精度计算,采样效率更高。同时,该方案可以结合ntt

based fast lattice library库,加速多项式乘法的过程,进一步提高整个协议的计算效率。
[0011]
每次进行新密钥交换会话时,服务器会生成新的种子seed,再使用伪随机函数(比如哈希函数)将其扩展为公共参数a(公共参数a是用于生成各种密钥的,比如p=as+e,s和e是秘密,p是密钥),而不是使用固定的公共参数。将哈希函数的输出扩展成a,可以避免不诚实的参与方选择特定构造的a,导致敌手通过陷门攻击和all

for

the

price

of

one攻击猜测出协议参与方的秘密值。同时,该方法使用peikert误差协调机制将两个近似密钥协调成相同的协调值。peikert协调机制定义了随机倍加函数,其中的概率为1/2,的概率为1/4,则倍加函数的输出随机均匀,从而使得生成得信号值均匀随机分布,双方可以直接得到均匀的共同比特。即使敌手获得了信号值,从中推断出协调值的优势也是可忽略的,从而保证误差协调机制的安全性。
[0012]
本发明的技术方案为:
[0013]
一种三方口令认证密钥交换方法,其步骤包括:
[0014]
1)客户端a与客户端b每次会话时,客户端a向服务器s发送<id
a
,id
b
>以发起会话;
其中,id
a
是客户端a所登录用户的身份信息、id
b
是客户端b所登录用户的身份信息,服务器s中存储每个用户的口令的验证值,id
s
为服务器s的身份信息;
[0015]
2)服务器s为当前会话随机生成随机数seed,然后根据随机数seed计算并公布公共参数a,并生成随机数s1,s2,e1,e2,e
sa
,e
sb
;然后计算;然后计算然后服务器s将分别发送给客户端a、客户端b;为客户端a所登录用户的口令pw
a
的验证值,为客户端b所登录用户的口令pw
b
的验证值;
[0016]
3)客户端a计算并生成随机数s
a
,e
a
;客户端a检查收到的如果则客户端a终止交互;否则,客户端a计算p
a
=as
a
+e
a
、(σ
as

as
)=helprec(k
as
)、并向服务器s发送<x
as

as
>;客户端b计算>;客户端b计算并生成随机数s
b
,e
b
,检查接收到的是否满足如果不满足则终止交互;否则,客户端b计算p
b
=as
b
+e
b
、(σ
bs

bs
)=helprec(k
bs
)、并将<x
bs

bs
>发送给服务器s;其中哈希函数h1、h2、h3、h4定义为h1:{0,1}
*

r
q
、h2:{0,1}
*

r
q
、h3:{0,1}
*

r
q
、h4:{0,1}
*

{0,1}
λ
,λ表示最终共享的会话密钥比特位数;
[0017]
4)服务器s检测收到的<x
as
,x
bs

as

bs
>,如果则s终止交互;否则计算k
sa
=p
a
·
s1、k
sb
=p
b
·
s2、σ
sa
=rec(2k
sa

as
)、σ
sb
=rec(2k
sb

bs
)、y
sa
=p
b
+h3(σ
sa
)和y
sb
=p
a
+h3(σ
sb
);然后将<y
sa
,y
sb
,x
bs
>发送给客户端a、将<y
sa
,y
sb
,x
as
>发送给客户端b;
[0018]
5)客户端b检查收到的<y
sa
,y
sb
,x
as
>,如果则b终止交互;否则计算p
a
=y
sb

h3(σ
bs
)、k
b
=p
a
·
s
b
,得到用于协调的信号值ω、协调值k以及会话密钥sk
b
=h3(id
a
,id
b
,id
s
,x
as
,x
bs
,y
sa
,y
sb
,ω,k),并将ω发送给a;
[0019]
6)客户端a根据收到的<y
as
,y
sb
,x
bs
,ω>,计算得到协调值k,获得会话密钥sk
a
=h3(id
a
,id
b
,id
s
,x
as
,x
bs
,y
sa
,y
sb
,ω,k)。
[0020]
进一步的,服务器s随机选择一个定义为seed

{0,1,...,255}
32
的种子;然后根据种子seed和shake

128函数生成公共参数a∈r
q

[0021]
进一步的,信号值ω

helprec(k
b
)、协调值k=rec(2k
b
,ω);其中,helprec()为协调函数,rec()为恢复函数。
[0022]
进一步的,步骤6)中,客户端a首先根据收到的<y
as
,y
sb
,x
bs
,ω>计算p
b
=y
sa

h3(σ
as
)、k
a
=p
b
·
s
a
,然后根据信号值ω和恢复函数rec计算出协调值k=rec(2k
a
,ω),最后获得会话密钥sk
a
=h3(id
a
,id
b
,id
s
,x
as
,x
bs
,y
sa
,y
sb
,ω,k)。
[0023]
进一步的,步骤2)中,从中心二项分布上随机采样生成随机数s1,s2,e1,e2,e
sa
,e
sb
;步骤3)中,客户端a从中心二项分布上随机采样生成随机数s
a
,e
a
;客户端b从中心二项分布
上随机采样生成随机数s
b
,e
b

[0024]
进一步的,所述中心二项式分布为为生成的n维多项式的每个系数均取自期望值为0、方差为d/2的中心二项式分布。
[0025]
与现有技术相比,本发明的积极效果为:
[0026]
在安全性方面,本方法基于rlwe问题,选择满足正确性要求的合理参数在dual和primal攻击模式下,可以分析出方案达到了255

bit的后量子安全,能够抵抗量子敌手,在量子环境下是安全的。根据三方环境下的bpr模型,可以证明该方法能够抵抗字典攻击、中间人攻击,并且具备相互认证安全和前向保密性。
附图说明
[0027]
图1为本发明的方法流程图;
[0028]
图2为本发明架构图。
具体实施方式
[0029]
为了使本发明的目的、技术方案及优点更加清晰,以下参照附图,对本发明作进一步详细说明。
[0030]
协议包括客户端a和客户端b和一个服务器s。服务器是可信的,并存储每个客户端的口令的哈希值,负责与每个客户端进行相互认证,并在客户端之间传递消息。客户端通过口令与服务器进行身份验证,并在服务器s的帮助下与其他客户端建立最终的会话密钥。
[0031]
在该方法中,多项式环r
q
=z
q
[x]/(x
n
+1)。哈希函数h1、h2、h3、h4被定义为h1:{0,1}
*

r
q
、h2:{0,1}
*

r
q
、h3:{0,1}
*

r
q
、h4:{0,1}
*

{0,1}
λ
,其中,λ表示最终共享的会话密钥比特位数。客户端a、客户端b和服务器s的身份信息分别表示为id
a
、id
b
和id
s
。s随机选择一个定义为seed

{0,1,...,255}
32
的种子。根据种子和shake

128函数,每个客户端各自扩展生成相同的公共环元素a∈r
q
。客户端a持有口令pw
a
,客户端b持有口令pw
b
,服务器s存储有客户端a的口令验证哈希值:客户端b的口令验证哈希值:在以下方案中,s
i
∈r
q
是根据中心二项分布随机采样得到的秘密值,e
i
∈r
q
是由采样生成的随机小错误项。其中,生成的n维多项式(环元素)e的每个系数均取自期望值为0、方差为d/2的中心二项式分布ψ
d

[0032]
1)协议发起。客户端a向服务器s发送<id
a
,id
b
>以发起会话;id
a
、id
b
分别是客户端a、b所对应用户的身份信息。
[0033]
2)第一次响应。服务器s随机生成seed

{0,1,..,255}
32
,计算公共参数a

parse(shake

128(seed))并公布,并从中心二项分布上随机采样生成计算算然后,s将分别发送给客户端a、客户端b。为客户端a所登录用户的口令pw
a
的验证值,为客户端b所登录用户的口令pw
b
的验证值。
[0034]
3)第二次响应。两个客户端可以分别同时进行响应。客户端a计算3)第二次响应。两个客户端可以分别同时进行响应。客户端a计算从中心二项分布上随机采样生成在接收到来自s的消息后,a检查如果则客户端a终止协议。否则,a继续计算p
a
=as
a
+e
a
,(σ
as

as
)=helprec(k
as
),并向服务器s发送<x
as

as
>。同时,客户端b计算>。同时,客户端b计算从中心二项分布上随机采样生成检查接收到的消息是否满足如果不满足则终止协议。否则,b计算p
b
=as
b
+e
b
,(σ
bs

bs
)=helprec(k
bs
),并将<x
bs

bs
>发送给服务器s。其中,helprec()为协调函数。
[0035]
4)第三次响应。在服务器s接收到来自a和b的消息<x
as
,x
bs

as

bs
>后,如果接收到的则s终止协议。否则,s从客户端a的消息x
as
里提取出a生成的秘密密钥p
a
,从客户端b的消息x
bs
中计算出b的秘密密钥p
b
,继续计算k
sa
=p
a
·
s1,k
sb
=p
b
·
s2,σ
sa
=rec(2k
sa

as
),σ
sb
=rec(2k
sb

bs
),y
sa
=p
b
+h3(σ
sa
),y
sb
=p
a
+h3(σ
sb
)。然后,s将<y
sa
,y
sb
,x
bs
>发送给a,将<y
sa
,y
sb
,x
as
>发送给b。
[0036]
其中,rec()为恢复函数。
[0037]
5)第四次响应。客户端b收到来自s的消息<y
sa
,y
sb
,x
as
>后,客户端b首先检查,如果则b中止。否则,客户端b从服务器的消息y
sb
里提取出客户端a生成的秘密密钥p
a
并计算k
b
=p
a
·
s
b
,得到协调值和信号值(k,ω)=helprec(k
b
),最终的会话密钥sk
b
=h3(id
a
,id
b
,id
s
,x
as
,x
bs
,y
sa
,y
sb
,ω,k),并将ω发送给客户端a。
[0038]
6)协议完成。客户端a收到来自服务器s和客户端b的消息<y
as
,y
sb
,x
bs
,ω>后,客户端a从服务器s的消息y
sa
里提取出客户端b的秘密密钥p
b
,计算k
a
=p
b
·
s
a
,根据信号值ω和恢复函数rec计算出协调值k=rec(2k
a
,ω),最后获得会话密钥sk
a
=h3(id
a
,id
b
,id
s
,x
as
,x
bs
,y
sa
,y
sb
,ω,k)。
[0039]
对客户端的认证:在步骤3、步骤5和步骤6中,接收到服务器的消息之后,只有持有正确口令pw
i
哈希值的客户端i∈{a,b},才能成功计算出p
i
,从而得到协调值k。如果存在一个客户端不知道口令但参与了协议,则无法计算出与其他诚实客户端一致的k

,密钥协商失败,无法进行后续通信。
[0040]
对服务器的认证:在步骤4中,客户端将密钥p
i
隐藏在了添加了口令哈希值的消息中。接收到客户端的消息之后,只有存储了真实口令哈希值的服务器,才能从中得到正确的客户端的秘密信息p
i
,生成正确的σ
si
,从而使通信双方获得一致的会话密钥。
[0041]
当协议按照流程正确执行,客户端a、客户端b、服务器的口令互相匹配,成功完成认证,且||k
a

k
b
||

<q/8时,两个客户端可以恢复出相同的协调值k,从而使得(id
a
,id
b
,id
c
,x
a
,x
b
,y
sa
,y
sb
,ω,k)完全一致,并得到相同的会话密钥sk
a
=sk
b
。双方可使用该会话密钥实现对称加密,以保证后续通信的安全性。
[0042]
在基于rlwe问题的密码算法中,最耗时的操作是多项式计算。当取n=1024时,本
发明选择满足ntt计算(要求q≡1(mod2n))且能确保协议正确性的模数q=12289,因此可以使用ntt

based fast lattice library算法对多项式计算加速,结合对模数更紧凑的分析方式及简化的隐式认证方式,可以在保证后量子安全强度的同时,极大的提高计算速度。
[0043]
需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1