深度解析 3GPP TS 33.501:6.1.3 Authentication procedures (认证流程详解)
本文技术原理深度参考了3GPP TS 33.501 V18.9.0 (2025-03) Release 18规范中,关于“6.1.3 Authentication procedures”的核心章节,旨在为读者详细拆解5G系统中最核心的两个主认证流程——EAP-AKA’和5G AKA,揭示5G网络如何以密码学的方式,安全、可靠地验证用户身份。
在上一篇文章中,我们详细探讨了认证流程的“前半段”——如何发起认证以及如何选择认证方法。我们了解到,网络的“大脑”UDM最终会根据用户的签约信息,为终端(UE)选择一套合适的“考卷”。今天,我们将正式进入“开卷考试”环节,深入解读规范中最为核心和复杂的6.1.3节——认证流程。
本节详细定义了5G主认证的两种标准方法:EAP-AKA’ 和 5G AKA。它们是实现UE与网络双向认证、并生成所有后续安全密钥之“根”的具体实施方案。理解这两个流程的每一个步骤、每一条消息、每一个参数,是掌握5G安全精髓的关键。
我们的主角,工厂AGV“智行一号”,已经向网络发出了它的“入网申请”。工厂的UDM在查阅了它的“数字档案”后,已经为它选定了一套“考卷”。现在,这张考卷将通过核心网的层层传递,送达“智行一号”面前。它能否正确“作答”?网络又是如何“批改试卷”并最终确认其身份的?让我们跟随这场“数字大考”的全过程,来揭开5G认证流程的神秘面纱。
1. 两条通往信任的道路:5G AKA vs. EAP-AKA’
在深入细节之前,我们先要理解为什么会有两种认证方法。
- 5G AKA:这是为5G系统“量身定做”的原生认证方法。它直接承载于NAS信令中,流程经过优化,效率最高。在UE通过3GPP接入(如5G NR)访问5GC时,这是最常用、最标准的认证方式。
- EAP-AKA’:这是将传统的AKA认证流程封装在IETF标准的可扩展认证协议(EAP)框架下的版本。它的优势在于通用性和可扩展性。由于EAP是一个通用的认证框架,可以承载多种认证方法并运行在多种网络环境下,因此EAP-AKA’特别适用于非3GPP接入(如Wi-Fi)、专网中的二次认证以及需要与现有IT认证体系集成的场景。
简单来说,5G AKA是“专车”,EAP-AKA’是“集装箱”。专车速度快效率高,但只能跑在专用道路上;集装箱可以装载各种货物(认证方法),能通过海陆空(多种网络)运输,但装卸和中转(封装/解封装)会多一些开销。
“智行一号”所在的工厂专网,为了未来能方便地集成其他类型的设备(可能使用证书认证),UDM为其选择了更具通用性的**EAP-AKA’**方法。我们首先来分析这个流程。
2. 深度剖析 6.1.3.1:EAP-AKA’ (基于EAP的认证与密钥协商)
EAP-AKA’的流程本质上是将AKA的挑战-响应机制,嵌入到一系列的EAP请求/响应消息中,在UE(Peer)、SEAF(Authenticator)和AUSF(Backend Server)之间传递。
我们将严格按照规范中的 Figure 6.1.3.1-1: Authentication procedure for EAP-AKA’ 来分步解读。
2.1 步骤 1-2:下发“挑战” - 认证向量的生成与转换
- The UDM/ARPF shall first generate an authentication vector … The UDM/ARPF shall then compute CK’ and IK’ as per the normative Annex A and replace CK and IK by CK’ and IK’.
- The UDM shall subsequently send this transformed authentication vector AV’ (RAND, AUTN, XRES, CK’, IK’) to the AUSF…
解读: 在上一篇文章的结尾,UDM已经决定使用EAP-AKA’。现在,它内部的ARPF(认证凭证库)开始准备“考题”。
- 生成原始AV:ARPF使用“智行一号”的长期密钥K,生成一个标准的认证向量(AV),包含RAND、AUTN、XRES、CK、IK。
- 转换AV为AV’:由于EAP-AKA’有自己的密钥派生体系,需要使用不同的根密钥(CK’, IK’),因此UDM/ARPF会根据Annex A中定义的密钥派生函数,从原始的CK和IK计算出CK’和IK’,形成一个转换后的认证向量AV’。
- UDM将这个AV’连同用户的SUPI,发送给AUSF。
场景代入: 工厂UDM的“考务中心”(ARPF)为“智行一号”出了一份标准试卷(AV),但考虑到这次考试要通过通用的EAP邮寄系统,考务中心在试卷上附加了一张“EAP专用答题卡格式说明”(将AV转换为AV’)。然后,这份特殊的“试卷包”(AV’)被交给了“主考官”(AUSF)。
2.2 步骤 3-4:传递“挑战” - 考卷的下发之旅
- The AUSF shall send the EAP-Request/AKA’-Challenge message to the SEAF in a Nausf_UEAuthentication_Authenticate Response message.
- The SEAF shall transparently forward the EAP-Request/AKA’-Challenge message to the UE in a NAS message Authentication Request message. This message shall include the ngKSI and ABBA parameter.
解读:
AUSF收到AV’后,将其中的RAND和AUTN打包成一个EAP-Request/AKA'-Challenge消息。这个EAP消息是认证的核心“挑战”。
- AUSF → SEAF:AUSF将这个EAP消息封装在
Nausf_UEAuthentication_Authenticate Response中,发回给之前请求认证的SEAF。 - SEAF → UE:SEAF作为一个“穿透式认证器”,它并不解析EAP消息的内容。它只是将这个EAP消息“原封不动”地取出来,再封装到一个NAS层的
Authentication Request消息中,发送给UE。在封装时,SEAF会附上两个重要的“标签”:- ngKSI:一个新的密钥集标识符,用于标识这次认证成功后将要创建的这套新密钥。
- ABBA:一个用于防降级攻击的参数。
场景代入: “主考官”(AUSF)将试卷内容(RAND和AUTN)放入一个标准的EAP信封,发给了“一线监考老师”(SEAF)。SEAF拿到信封后,看也不看,直接把它装进一个发给“考生”的NAS包裹里,并在包裹上贴上“考场号”(ngKSI)和“防作弊标签”(ABBA),然后通过无线电波发给了“智行一号”。
2.3 步骤 5-7:“考生”作答并返回答卷
- At receipt of the RAND and AUTN, the USIM shall verify the freshness of the AV’ by checking whether AUTN can be accepted… If so, the USIM computes a response RES…
- The UE shall send the EAP-Response/AKA’-Challenge message to the SEAF in a NAS message Auth-Resp message.
- The SEAF shall transparently forward the EAP-Response/AKA’-Challenge message to the AUSF…
解读: “智行一号”收到了NAS包裹。
- USIM运算:手机的ME(移动设备)将RAND和AUTN送入其核心的“保险库”——UICC(eSIM)中。UICC首先验证AUTN,确认这份“考卷”确实来自合法的“考试中心”(归属网络),且是新鲜的(防止重放攻击)。验证通过后,UICC使用长期密钥K和RAND计算出响应值RES、以及会话密钥CK和IK。
- ME派生:ME从UICC拿到CK和IK后,根据EAP-AKA’的规则,派生出CK’和IK’。
- 封装并返回:ME将计算出的RES打包成一个
EAP-Response/AKA'-Challenge消息,再封装入NAS层的Authentication Response消息中,发回给SEAF。 - SEAF再次扮演“信使”角色,将收到的EAP响应消息透明地转发给AUSF。
场景代入: “智行一号”收到包裹后,将试卷送入内部的“保密运算单元”(UICC)。该单元确认试卷无误后,迅速算出答案(RES),并生成了后续解题用的“草稿密钥”(CK/IK)。通用处理器(ME)根据“EAP专用格式说明”,将草稿密钥处理成CK’/IK’,然后将答案(RES)填入EAP答题卡,通过NAS包裹寄回给“监考老师”(SEAF),SEAF再转交给“主考官”(AUSF)。
2.4 步骤 8-11:批改试卷与公布结果
- The AUSF shall verify the message by comparing the XRES and RES, and if the AUSF has successfully verified this message it shall continue as follows…
- The AUSF derives EMSK from CK’ and IK’… The AUSF uses the most significant 256 bits of EMSK as the KAUSF and then calculates KSEAF from KAUSF… The AUSF shall send an EAP Success message to the SEAF inside Nausf_UEAuthentication_Authenticate Response, which contains the KSEAF.
解读: AUSF收到了UE的“答卷”。
- 批改:AUSF将收到的RES与自己之前从UDM处获得的期望答案XRES’进行比对。如果一致,则认证成功。
- 生成锚点密钥:认证成功后,AUSF执行一系列关键的密钥派生:
- 首先,根据EAP-AKA’规范,从CK’和IK’派生出EMSK(扩展主会话密钥)。
- 然后,取EMSK的前256位作为**
K_AUSF**。 - 最后,以
K_AUSF和“服务网络名”为输入,派生出最终的锚点密钥**K_SEAF**。
- 下发结果和密钥:AUSF将
K_SEAF和用户的SUPI(如果之前是SUCI认证)封装在Nausf_UEAuthentication_Authenticate Response消息中,并附上一个EAP Success消息,一起发给SEAF。 - SEAF收到成功响应后,将
EAP Success消息连同ngKSI和ABBA参数,通过NAS消息(如Security Mode Command)发给UE。
场景代入:
“主考官”(AUSF)核对答案无误,判定“智行一号”考试通过。它立即开始制作“通行证”:首先用“草稿密钥”CK’/IK’制作出一个“扩展密钥”EMSK,再从中提炼出K_AUSF,最后结合“考场地点”(服务网络名),制作出最终的“区域通行密钥”K_SEAF。AUSF将这个K_SEAF和“智行一号”的真实身份SUPI,交给了“监考老师”(SEAF),并授权他向“智行一号”宣布考试通过。
至此,EAP-AKA’流程结束。UE和SEAF都拥有了锚点密钥K_SEAF,双向认证完成。
3. 深度剖析 6.1.3.2:5G AKA (5G原生认证与密钥协商)
现在,我们假设“智行一号”的档案里写的是使用5G AKA。这个流程更加原生和高效,它引入了一些重要的安全增强。我们将对照 Figure 6.1.3.2-1: Authentication procedure for 5G AKA 进行解读。
3.1 步骤 1-4:认证向量的全新构造与传递
- …the UDM/ARPF shall create a 5G HE AV. The UDM/ARPF does this by generating an AV with the Authentication Management Field (AMF) separation bit set to “1”… The UDM/ARPF shall then derive KAUSF … and calculate XRES*…
- The AUSF shall then generate the 5G AV from the 5G HE AV … by computing the HXRES* from XRES* … and KSEAF from KAUSF …, and replacing the XRES* with the HXRES* and KAUSF with KSEAF in the 5G HE AV.
解读: 5G AKA的认证向量生成过程与EAP-AKA’有本质不同。
- UDM生成5G HE AV:UDM/ARPF生成的不再是AV’,而是一种新的向量,叫5G HE AV (Home Environment AV)。它包含RAND, AUTN, XRES*, 和
K_AUSF。K_AUSF是直接从根密钥K派生而来,而不是像EAP-AKA’那样从CK/IK派生。 - AUSF生成5G SE AV:AUSF收到5G HE AV后,会对其进行“加工”,生成5G SE AV (Serving Environment AV)。加工过程包括:
- 用
K_AUSF和“服务网络名”计算出**K_SEAF**。 - 对
XRES*进行一次哈希运算,得到**HXRES*** (Hashed XRES*)。 - 在发送给SEAF的5G SE AV中,只包含RAND, AUTN,
HXRES*。它把XRES*和K_AUSF留在了自己这里,并且把K_SEAF也一并计算好并缓存。
- 用
这个改变是5G AKA安全增强的关键!
3.2 步骤 5-10:双重验证的挑战-响应
- The SEAF shall send RAND, AUTN to the UE in a NAS message Authentication Request.
- The UE shall return RES* to the SEAF in a NAS message Authentication Response.
- The SEAF shall then compute HRES* from RES* … and the SEAF shall compare HRES* and HXRES*. If they coincide, the SEAF shall consider the authentication successful from the serving network point of view.
- The SEAF shall send RES*, as received from the UE, in a Nausf_UEAuthentication_Authenticate Request message to the AUSF.
解读:
- 挑战:SEAF将收到的RAND和AUTN发给UE。
- 响应:UE的UICC验证AUTN,计算出RES,然后ME根据RES计算出**
RES***,并发回给SEAF。 - SEAF的“预批改”:这是5G AKA相比4G AKA的重大改进!SEAF收到
RES*后,自己也对其进行一次哈希运算,得到HRES*。然后,它对比自己算出的HRES*和之前从AUSF收到的HXRES*。如果两者一致,SEAF就可以初步判定认证是成功的。这使得服务网络可以更早地确认UE的合法性。 - 上报“原始答卷”:预批改通过后,SEAF将UE发来的原始的、未经哈希的
RES*,发送给AUSF进行最终确认。
3.3 步骤 11-12:最终确认与密钥下发
- When the AUSF receives as authentication confirmation the Nausf_UEAuthentication_Authenticate Request message including a RES* … AUSF shall compare the received RES* with the stored XRES*.
- The AUSF shall indicate to the SEAF … whether the authentication was successful… If the authentication was successful, the KSEAF shall be sent to the SEAF…
解读:
- AUSF的“终审”:AUSF收到原始的
RES*后,与自己存储的XRES*进行比对。这是最终的、最权威的验证。 - 下发结果:验证成功后,AUSF向SEAF发送成功指示,并将自己之前在步骤4中已经计算并缓存好的**
K_SEAF**正式下发给SEAF。
至此,5G AKA流程结束。
4. 认证失败与恢复机制 (6.1.3.2.2 & 6.1.3.3)
6.1.3.2.2 RES verification failure in SEAF or AUSF or both* …then the SEAF shall either reject the authentication… or the SEAF/AMF shall initiate an Identification procedure…
6.1.3.3.1 Synchronization failure or MAC failure in USIM …the USIM indicates to the ME the reason for failure and in the case of a synchronisation failure passes the AUTS parameter…
规范也详细定义了认证失败时的处理流程。
- *响应不匹配 (RES verification failure)**:如果SEAF或AUSF发现响应值对不上,认证就会失败。网络可能会直接拒绝UE,或者发起一次身份查询流程,要求UE重新发送SUCI,尝试发起一次新的认证。
- 同步失败 (Synchronization failure):这是AKA机制中一个经典的问题。UE的USIM卡里有一个序列号(SQN),归属网络的AuC(在5G中是UDM/ARPF的一部分)里也同步维护着这个SQN。每次认证,AuC都会增加SQN的值,并将其包含在AUTN中发给UE。UE会检查收到的SQN是否在自己期望的窗口内,以此来防止重放攻击。如果因为网络故障、UE长时间关机等原因,导致两边的SQN“失步”,UE就会拒绝认证,并返回一个包含AUTS参数的失败消息。归属网络收到AUTS后,就可以用它来重新同步自己的SQN,从而在下一次认证中恢复正常。
5. 总结
本章,我们以前所未有的深度,详细剖析了5G的两大主认证流程。
- EAP-AKA’:作为一个“集装箱”,它将AKA认证封装在通用的EAP框架下,具有良好的灵活性和扩展性。其密钥派生链条为
(CK,IK) -> (CK',IK') -> EMSK -> K_AUSF -> K_SEAF。 - 5G AKA:作为5G“专车”,它流程更原生、高效,并引入了重要的安全增强。其密钥派生链条更短,为
K -> K_AUSF -> K_SEAF。其核心增强在于引入了哈希后的响应值(HXRES*/HRES*),使得服务网络(SEAF)可以进行“预认证”,以及认证成功后向归属网络(UDM)进行结果确认的闭环机制,有效防止了4G时代的一些欺诈漏洞。 - 健壮的恢复机制:无论是响应错误还是同步失败,规范都定义了清晰的失败处理和恢复流程,确保了认证体系的健壮性。
通过这两个流程,UE和网络不仅完成了严格的双向身份认证,更重要的是,共同协商出了所有后续安全通信的“生命之源”——锚点密钥K_SEAF。
FAQ
Q1:5G AKA中,为什么SEAF要做一次“预认证”?直接把RES*发给AUSF不就行了吗? A1:SEAF的“预认证”(比较HRES和HXRES)是一个重要的性能和安全优化。好处有二:1) 快速失败检测:如果UE是非法的(例如,一个克隆的SIM卡),其计算出的RES*必然是错误的。SEAF可以立即在服务网络本地就发现这个错误,并直接拒绝该UE,而无需再消耗资源去和远端的归属网络AUSF进行交互。这大大提高了处理效率,并能更快地将恶意用户拒之门外。2) 减少不必要的信令:避免了将明显错误的认证响应发往归属网络,节省了核心网和网间链路的信令开销。
Q2:在5G AKA中,AUSF为什么不直接把K_AUSF发给SEAF,而是自己先计算出K_SEAF再发?
A2:这是“最小权限”原则的体现。K_AUSF是一个更高层级的中间密钥,它不与任何特定的服务网络绑定。而K_SEAF是K_AUSF和服务网络名绑定的结果。AUSF的角色是生成并分发针对特定服务网络的锚点密钥。只给SEAF它所需要的、且仅能在当前服务网络使用的K_SEAF,而将更通用的K_AUSF保留在归属网络内部,可以更好地实现密钥隔离,减小密钥泄露的影响范围。
Q3:什么是同步失败(Synchronization Failure)中的“重放攻击”? A3:重放攻击是指攻击者录制了一次合法的认证交互过程(比如,安安某次成功的登录),然后在未来的某个时间点,将录制的内容重新播放给网络,试图冒充安安进行登录。AKA机制通过序列号(SQN)来防止这种攻击。每次认证,网络都会使用一个比上次更大的SQN。UE在收到认证请求时,会检查其中的SQN是否比自己记录的上次成功的SQN要大。如果不大(甚至是攻击者重放的旧的SQN),UE就会认为这是一次重放攻击并拒绝。同步失败就是UE和网络对这个“上次的SQN”记录不一致了。
Q4:EAP-AKA’和5G AKA生成的K_SEAF是一样的吗?
A4:不一样。尽管它们的目标都是生成K_SEAF,但它们的密钥派生路径和所依赖的初始密钥材料不同。EAP-AKA’是从CK’/IK’派生出EMSK,再到K_AUSF。而5G AKA是从根密钥K直接派生出K_AUSF。由于初始输入和派生函数不同,即使是同一个UE在同一个网络下,分别执行这两种认证,最终得到的K_SEAF在密码学上也是完全不同的。这保证了不同认证方法之间的安全隔离。
Q5:这些复杂的认证流程对UE的电量消耗影响大吗? A5:有影响,但认证流程本身是非常低频的操作。一次主认证通常只在开机、重新注册或网络要求时才发生。整个流程的交互次数有限,虽然涉及复杂的密码学运算,但现代手机的基带处理器和UICC芯片对此有专门的硬件加速,实际消耗的能量非常有限。相比于维持高速数据传输、屏幕常亮等操作,一次认证的电量消耗几乎可以忽略不计。更重要的是,一旦认证成功,UE在很长一段时间内都可以通过轻量级的流程(如恢复连接)来维持与网络的通信,无需重复进行主认证。