zoukankan      html  css  js  c++  java
  • 5G AKA协议详解

    事件: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!!!

    努力,向上,自律
  • 相关阅读:
    循环队列和链队列的实现
    【lightoj-1026】Critical Links(桥)
    顺序栈和链栈的实现
    【51nod-1605】棋盘问题
    【51nod-1596】搬货物
    【海明码】(容易看懂)
    【lightoj-1094】树的直径(DFS)
    【lightoj-1046】Rider(BFS)
    【第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-F】等式(因子个数)
    浅谈Vue个性化dashBoard 布局
  • 原文地址:https://www.cnblogs.com/machi12/p/15557919.html
Copyright © 2011-2022 走看看