事件:2021/11/15
一.协议分析
对于5G AKA协议,它主要分为两个阶段,分别是注册阶段和挑战-响应阶段,下面将对这两个阶段分别进行介绍。
1.注册阶段
注册阶段其实并不是5G AKA协议独有的阶段,在5G公网要执行认证协议时都要经历这个阶段,而且完全相同,具体如下图所示:
红框部分是三个实体在开始前就知道的知识。
在注册的过程中,UE侧方框的部分是通过ECIES组件来对SUPI(5G中的用户标识符)进行隐藏(隐藏后的SUPI变成了SUCI),从而解决了5G之前IMSI号以明文传输的问题,是5G在保护用户隐私上的一大进步。这里在计算SUCI时引入了公钥算法(通过椭圆曲线),主要原因在这里对称密钥体制失去了作用,UE是很多的,引入对称密钥后就不知道该用哪个UE的对称密钥进行解密了,但是公钥体制的引入也导致了后面会出现难以抗量子的问题(这也是3GPP目前在讨论的)。计算完成SUCI后,UE将SUCI和IDHN发送给SN(服务网络),服务网络的选择一般是通过信号强度。SN收到后将自己的IDSN加入进去,然后发送给HN,HN再通过ECIES组件将SUCI还原成SUPI。这样注册过程就结束了,就像上面说的,注册过程其实主要完成了传递SUCI的过程,HN有了SUCI后就会通过UDM(HN中的一个实体)来查取用户的订阅数据,来判断选择哪一个认证方法,这里一般选择5G AKA(因为是首选,只要设备支持就选它)。
2.挑战-响应阶段
该阶段不能说是5G AKA协议独有的,只能说是独特的,具体如下所示:
灰框中的部分也是各个实体实现已有的知识(理解协议时要注意已知的)。
接着注册过程之后说,在注册过程之后选择出了认证协议,这里假设是5G AKA协议。然后HN侧生成了一个认证四元组(计算过程如方框所示),其中R是一个128比特的随机数;AUTN是一个认证令牌,要注意令牌中含有的信息,包括一个AK和SQNHN的异或值(即CONC)和一个MAC值;HXRES*是期待响应值的哈希,这里也是5G和4G的AKA协议不同之处,体现出了HN开始对SN没有那么信任了,有利于防止恶意的SN;最后是一个KSEAF,这是一个生成的锚密钥,用在下面认证成功后的密钥派生。而且在计算HXRES*和KSEAF的时候也引入了SName,也是与4G认证协议的不同之处。
SN在收到HN发送的认证四元组后,将其中的随机数R和认证令牌AUTN发送给了UE。
UE收到SN发送给自己的消息后,首先对AUTN进行了拆分,拆分成了CONC和MAC,然后为了还原序列号SQNHN,就先通过共享密钥k和收到的随机数R计算出了AK(这里AK的作用就是在消息中隐藏序列号),然后与CONC异或后得到SQNHN,得到序列号后再自己计算一下MAC(注意这里计算MAC时用的是收到的HN侧序列号,而不是UE侧的序列号),与接收到的MAC值进行对比,会有下面三种情况:
- 如果MAC值相同并且UE侧的序列号小于HN侧的序列号(防重放)就完成了对HN的认证(基于共享密钥k)。
- 如果MAC值相同但是UE侧的序列号大于HN侧的序列号,那么UE会认为产生了序列号失步的问题,就会进行重新同步,UE侧会生成一个数据包给HN,由于这里行为与上面一种情况的不同,就引入了5G AKA中的一种著名攻击:可链接性攻击(暴露用户的隐私),解决这种攻击的主要方法是消除或者掩饰这种行为上的不一致性(目前3GPP也在讨论)。
- 如果MAC值不同,则认证失败。
如果UE完成了对HN的认证(也就是上面的情况一),那么UE侧会生成RES*和KSEAF,将响应值RES*发送给SN来进行认证。
SN在收到响应值后进行哈希,比较与HN发给自己的值是否相同,如果相同,则SN成功认证了UE,不同则认证失败。与4G认证协议不同的是,SN在认证成功后还要发送给HN,这也是为了防止恶意的SN。
HN收到SN发给自己的响应值也进行对比,如果相同则HN完成了对UE的认证,那么整个认证过程也就彻底完成了。
二.与4G认证协议的不同之处
在了解完了5G AKA整个协议的原理之后,下面看一下与4G认证协议的对比,与4G认证协议相比,5G AKA的不同之处在于:
- 在注册阶段引入了公钥体制(可能并不算不同,具体要看是否把注册阶段放入到5G AKA的流程中)
- 在计算挑战值和响应值时引入了SName
- 在将期待的响应值传给SN时进行了哈希
- 在SN完成了对UE的认证后还要进行HN对UE的认证
如果有错误之处欢迎在评论区指正,有研究协议及形式化分析的小伙伴可以加个好友进行交流,thanks!!!