背景技术
移动用户通过USIM(Universal Subscriber Identity Module,全球用户身份模块)卡连接到移动网络,用户和运营商都希望从所使用的通信协议中得到安全保证,比如用户语音、短信的保密性等。鉴权和密钥协商协议(Authentication and Key Agreement,AKA)能够实现用户和运营商网络之间的相互认证,并完成协商会话密钥的工作,且能建立一个安全信道来保证后续通信和数据传输的安全。
攻击者可能会利用通信协议存在的安全漏洞来发起攻击,这将严重威胁个人隐私、财产安全。对于5G移动通信网络,3GPP组织标准化了5G AKA等协议,用于身份认证和密钥协商。5G通信的安全严重依赖于5G AKA协议的安全性,因此对5G AKA协议的安全性分析显得尤为重要,但是协议流程的复杂性使得很难通过人工的方式去发现其安全漏洞。而利用Tamarin等安全协议验证工具对5G AKA协议进行形式化分析,可以更好地发现其安全漏洞,从而促进协议标准的改进和完善,使得5G AKA协议在5G网络全面商用后为用户和运营商提供更好的安全保证。
5G AKA协议用于实现用户设备和运营商网络之间的身份认证和密钥协商,涉及到的实体有用户设备(User Equipment,UE)、用户在近距离内连接的服务网络(ServingNetwork,SN)和与用户对应的运营商归属网络(Home Network,HN)。服务网络SN中包括安全锚点功能(Security Anchor Function,SEAF),归属网络HN中包括鉴权服务功能(Authentication Server Function,AUSF)、鉴权证书库和处理功能(Authenticationcredential Repository and Processing Function,ARPF)。
用户设备UE一般是智能手机或者物联网设备,UE由移动设备(Mobile Equipment,ME)和USIM卡组成,USIM中存有用户永久身份标识符SUPI、序列号(Sequence Number,SQN)、长期对称密钥K和公共非对称密钥pkHN。SUPI是一个唯一且永久的用户身份标识,SQN是用于验证鉴权消息新鲜性的计数器,对称密钥K是用户与其对应归属网络HN中的ARPF之间的共享密钥,公共非对称密钥pkHN也对应于归属网络HN,用于对SUPI进行加密得到用户加密标识符(Subscription Concealed Identifier,SUCI)。服务网络SN主要在漫游场景中和用户进行通信,其中的安全锚点功能SEAF负责完成对UE的鉴权以及协助UE和归属网络HN之间的鉴权,在鉴权成功且与UE建立安全信道后对UE提供服务。归属网络HN的数据库中也存有序列号SQN、长期共享密钥K、与公钥pkHN相对应的私钥等。其中的认证服务功能AUSF、认证证书库和处理功能ARPF负责向服务网络SN提供用于认证过程的鉴权向量,AUSF会在SEAF对UE鉴权成功后再次鉴权,用户标识符解密功能(Subscription Identifier De-concealingFunction,SIDF)负责将SUCI解密为SUPI。
发明内容
针对现有技术存在的不足,本发明的目的在于提供一种增进5G AKA协议身份认证和密钥协商过程安全性的方案。通过在3GPP组织发布的5G安全架构和流程技术规范R17标准中的5G AKA协议的基础上进行协议改进,以确保5G AKA协议在安全锚点密钥KSEAF和长期共享密钥K上的保密性质,以及协议参与实体之间在参数SUPI、SNID、KSEAF上的Lowe鉴权性质。同时此方案可以适用于在Tamarin中的形式化分析。
为实现上述目的,本发明提供了如下技术方案:一种Tarmarin分析安全的5G AKA协议安全增进系统,包括:
身份认证和密钥协商模块,该模块用于进行身份认证和设置密钥;
密钥确认往返模块,该模块用于对密钥进行确认;
改进协议安全性质验证模块,对改进后的5G AKA协议和期望5G AKA协议满足的安全性质进行形式化建模,然后在Tamarin中验证改进后的5G AKA协议对相关安全性质的满足情况。
作为本发明的进一步改进,所述身份认证和密钥协商模块进行身份认证以及设置密钥的具体步骤如下:
步骤1:UE使用其对应归属网络的公钥pkHN将SUPI加密为SUCI,再将SUCI发送给SEAF,SEAF选择用户对应的归属网络来请求鉴权材料,再发送SUCI和SNID给AUSF;
步骤2:AUSF将收到的SNID与预期的服务网络名称进行比较,若一致则会暂时存储SNID,再发送SUCI和SNID给ARPF;
步骤3:ARPF通过用户标识符解密功能SIDF从SUCI中解密出SUPI,然后选择鉴权方式为5G AKA,ARPF会计算出密钥KAUSF、参数XRES*,然后创建出鉴权向量5G HE AV发送给AUSF;
步骤4:AUSF根据5G HE AV中的XRES*计算出其哈希值HXRES*,根据密钥KAUSF计算出KSEAF,再创建出鉴权向量5G AV、5G SE AV,再发送5G SE AV给SEAF;
步骤5:SEAF接收到AUSF发来的5G SE AV后,将参数RAND和AUTN发送给UE;
步骤6:UE从AUTN中提取出MAC和SQN来验证鉴权材料的有效性,若通过验证,则更新自己的SQN,计算出参数RES*和密钥KSEAF,再把参数RES*发送给SEAF;
步骤7:SEAF计算RES*的哈希值HRES*,再比较HRES*和HXRES*是否一致,若不一致则鉴权失败,若一致则从服务网络的角度认为此次鉴权成功,再发送RES*给AUSF进行下一步认证;
步骤8:AUSF首先验证鉴权向量是否过期,如果过期了,则AUSF从归属网络的角度认为鉴权失败;如果验证成功,则AUSF比较RES*和XRES*是否一致,如果一致,则AUSF从归属网络的角度认为此次鉴权成功;
步骤9:鉴权成功后,AUSF会发送密钥KSEAF和SUPI给SEAF,密钥KSEAF就会成为安全锚点密钥,SEAF会根据此密钥来计算后续通信过程中的其它密钥。作为本发明的进一步改进,所述密钥确认往返模块进行密钥确认的具体步骤如下:
步骤10:SEAF计算密钥KSEAF和SNID的哈希值,将此哈希值发送给UE;
步骤11:UE收到SEAF发来的哈希值后,验证此哈希值是否正确,若正确,再计算密钥KSEAF和SUPI的哈希值,将此哈希值发送给SEAF;
步骤12:SEAF收到UE发来的哈希值后,验证此哈希值是否正确,若正确,密钥确认过程结束。
作为本发明的进一步改进,所述改进协议安全性质验证模块进行验证的具体步骤如下:
步骤13:使用形式化语言对改进后的5G AKA协议进行形式化建模,考虑4个协议参与实体:UE、SEAF、AUSF和ARPF,使用Tamarin中默认的Dolev-Yao敌手模型对UE和SEAF之间的公共信道进行建模;
步骤14:使用形式化语言对期望5G AKA协议满足的安全性质进行形式化建模,包括在安全锚点密钥KSEAF和长期共享密钥K上的保密性质,以及协议参与实体之间在参数SUPI、SNID、KSEAF上的Lowe鉴权性质;
步骤15:在Tamarin中验证改进协议对相关安全性质的满足情况。
本发明的有益效果:
1)该方案可以增进5G AKA协议的安全性,可以抵御攻击者针对会话密钥KSEAF的重放攻击以及机密性攻击。
2)该方案为未来新版本5G AKA协议的设计和改进提供了新的思路,并且可以扩展应用到EAP-AKA等协议的分析上。
3)该方案支持在Tamarin中进行形式化分析,验证结果表明在改进前的23条不满足的安全性质中,有20条在根据本发明提出的综合改进方案改进后得到了满足,改进后协议的安全性得到了很大提升。
具体实施方式
下面将结合附图所给出的实施例对本发明做进一步的详述。
首先对于说明书提及的5G AKA协议相关基础概念进行解释;
(1)蜂窝网络架构
如图1所示,蜂窝网络整体架构大致由三个大的逻辑实体组成:用户设备UE、服务网络SN(用户近距离内连接的网络)、归属网络HN(用户对应的运营商)。用户使用配备了USIM卡的设备通过不安全的无线信道(在图1中用虚线标出)和SN的基站进行通信,SN和HN之间以及HN内部的AUSF和ARPF之间的通信通过经过验证的有线信道(在图1中用实线标出)进行,可以认为是安全的。
(2)Lowe鉴权性质
Lowe分类法将鉴权协议的安全性质分为4类:
1)存活性
协议向发起者A提供另一个代理B的存活性保证是指,如果A认为自己和响应者B完成了一次协议运行,那么B在之前运行了该协议,B可能不认为自己是和A运行了该协议,B还可能并不是刚刚运行了该协议(之前运行了并不一定是刚刚运行了)。
2)弱一致性
协议向发起者A提供和另一个代理B的弱一致性保证是指,如果A认为自己和响应者B完成了一次协议运行,那么B在之前运行了该协议,B认为自己是和A运行的,但B可能并不一定是作为响应者。
3)非单射一致性
协议向发起者A提供和另一个代理B的非单射一致性保证是指,如果A认为自己和响应者B完成了一次协议运行,且协议中的数据变量集合为ds。那么B在之前运行了该协议,B认为自己是和A运行的,B认为自己是响应者,B也认为数据变量集合是ds。
4)单射一致性
协议向发起者A提供和另一个代理B的单射一致性保证是指,如果A认为自己和响应者B完成了一次协议运行,且协议中的数据变量集合为ds。那么B在之前运行了该协议,B认为自己是和A运行的,B认为自己是响应者,B也认为数据变量集合是ds,且A的每一次运行都对应着B的唯一的一次运行。
(3)Tamarin工作原理
Tamarin使用安全协议理论语言(spthy)来描述协议状态的转移过程,用rule来描述协议状态,用lemma来描述期望验证的安全性质。这二者作为Tamarin的输入,输出是安全性质在所有可能的情况下都成立的结论或者证明安全性质不成立的反例。Tamarin验证lemma的原理是:精炼它所知道的关于安全性质和协议的知识,直到它可以得出安全性质在所有可能的情况下都成立的结论,或者找到不成立的反例。
参照图1至4所示,本实施例的一种适用Tarmarin分析的5G AKA协议安全增进方案,该方案由身份认证和密钥协商模块、密钥确认往返模块和改进协议安全性质验证模块三个部分实现。该方案的具体实现步骤如下:
模块一:身份认证和密钥协商模块具体由九个步骤实现:
步骤1:UE计算SUCI=aenc(<SUPI,RAND>,pkHN),再将SUCI发送给SEAF。SEAF根据SUCI中包含的归属网络标识符选择用户对应的归属网络,再发送SUCI和SNID给AUSF。
步骤2:AUSF将收到的SNID与数据库中的服务网络名称进行匹配,若一致则发送SUCI和SNID给ARPF。
步骤3:ARPF从SUCI中解密出SUPI=SIDF(SUCI,sk
HN),然后选择鉴权方式为5GAKA。计算加密密钥CK=f3(K,RAND)、完整性密钥IK=f4(K,RAND)、匿名密钥AK=f5(K,RAND),MAC=f1(K,(SQN||RAND||SNID||AMF)),密钥
参数XRES=f2(K,RAND),然后由参数RAND(一个随机数)、AUTN(Authentication Token,认证令牌)、XRES*、K A U S F创建出鉴权向量创建出鉴权向量5G HE AV=RAND||AUTN||XRES||K
AUSF发送给AUSF。
步骤4:AUSF根据XRES*计算出其哈希值HXRES=SHA256(RAND,XRES),计算KSEAF=KDF(KAUSF,SNID),再创建鉴权向量5G AV=RAND||AUTN||HXRES||KSEAF、5G SE AV=RAND||AUTN||HXRES,再发送5G SE AV给SEAF。
步骤5:SEAF接收到AUSF发来的5G SE AV后,将参数RAND和AUTN发送给UE。
步骤6:UE从AUTN中提取出MAC和
计算XMAC=f1(K,(SQN||RAND||SNID||AMF)),验证XMAC是否等于MAC。若相等,再验证自己存储的SQN
UE是否小于提取出的SQN。若小于,则更新自己的SQN
UE=SQN,计算出参数RES=f2(K,RAND和CK=f3(K,RAND)、IK=f4(K,RAND)、AK=f5(K,RAND),再计算密钥
和密钥K
SEAF=KDF(K
AUSF,SNID),再把参数RES*发送给SEAF。
步骤7:SEAF计算HRES=SHA256(RAND,RES),再比较HRES*和HXRES*是否相等。若相等则鉴权成功,再发送RES*给AUSF进行下一步认证。
步骤8:AUSF比较RES*和XRES*是否相等。如果相等,则鉴权成功。
步骤9:AUSF发送密钥KSEAF和SUPI给SEAF。
模块二:密钥确认往返模块具体由三个步骤实现:
步骤10:SEAF计算密钥Key_confirm_SEAF=SHA256(KSEAF,SNID),将Key_confirm_SEAF发送给UE。
步骤11:UE验证Key_confirm_SEAF=SHA256(KSEAF,SNID),再计算Key_confirm_UE=SHA256(KSEAF,SUPI),将Key_confirm_UE发送给SEAF。
步骤12:SEAF验证Key_confirm_UE=SHA256(KSEAF,SUPI),若正确,密钥确认过程结束。
模块三:改进协议安全性质验证模块具体由三个步骤实现:
步骤13:UE和SEAF之间的信道是无线公共信道,攻击者可以获取无线公共信道中传输的消息而不被协议参与实体察觉,在Tamarin中形式化建模为:[Out(x)]-->[!KD(x)];攻击者也可以将自己已知的任何消息注入到信道中,在Tamarin中形式化建模为:[!KU(x)]--[K(x)]->[In(x)]。SEAF和AUSF之间以及AUSF和ARPF之间的信道认为是安全信道,在Tamarin中形式化建模为:
rule send_secure:
[SndS(Ch_name,A,B,m)]
--[SendSecure(Ch_name,A,B,m)]->
[Sec(Ch_name,A,B,m)]
rule receive_secure:
[Sec(Ch_name,A,B,m)]
--[ReceiveSecure(Ch_name,A,B,m)]->
[RcvS(Ch_name,A,B,m)]
步骤14:
(1)安全锚点密钥KSEAF的保密性质
分别从UE、SEAF、AUSF和ARPF的角度来考虑密钥KSEAF的保密性质。举例说明:从UE的角度考虑密钥KSEAF的保密性质,如果UE声明会话密钥是保密的,并且攻击者没有危害UE获取其密钥K,则攻击者不能够获取或者计算出密钥KSEAF。在Tamarin中形式化建模为:
lemma secrecy_UE:
"All a t#i.Secret(<'UE',a>,t)@i¬(Ex SUPI#r.RevealK(SUPI)@r)
==>not(Ex#j.K(t)@j)"
(2)长期共享密钥K的保密性质在Tamarin中形式化建模为:
lemma secrecy_K:
"All SUPI k#i.LTK(SUPI,k)@i¬(Ex#r.RevealK(SUPI)@r)
==>not(Ex#j.K(k)@j)"
(3)鉴权性质
对于协议参与实体UE、SEAF、AUSF和ARPF,本文分别从UE、SEAF和AUSF的角度考虑了对其他三个实体在参数SUPI、SNID和KSEAF上的鉴权性质,一共有36种情况。举例说明:从AUSF的角度,考虑其和SEAF在安全锚点密钥KSEAF上的非单射一致性。AUSF认为自己和SEAF完成了一次协议运行,协议涉及到的参与实体是UE、SEAF、AUSF和ARPF,并且攻击者没有获取UE的密钥K,则至少存在一次SEAF的协议运行,SEAF认为自己和AUSF在密钥KSEAF上协商一致。
在Tamarin中形式化建模为:
lemma agreement_AUSF_SEAF_K_SEAF:
"All a c t#i.(Commit(c,t,<'AUSF','K_SEAF'>)@i¬(Ex#r.RevealKforSUPI(a)@r))
==>(Ex b2#j.Running(b2,t,<'SEAF','K_SEAF'>)@j)"
步骤15:在Ubuntu16.04系统中安装Tamarin 1.4.1版本,通过网页交互模式进行验证,验证经本发明所述方案改进后的5G AKA对安全性质的满足情况。
综上所述,本发明提出了一种可以在形式化验证工具Tamarin中进行分析的5GAKA协议安全增进方案。本方案实现了用户设备和运营商网络之间的双向认证和密钥协商,增进了这一过程中会话密钥的安全性质,可以抵御攻击者针对会话密钥KSEAF的重放攻击以及机密性攻击。为未来新版本5G AKA协议的设计和改进提供了新的思路,并且可以扩展应用到EAP-AKA等协议的分析上。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。