好的,我们继续启程,现在正式进入3GPP TS 33.401规范的核心腹地——第六章。这一章是整部规范的心脏,详细阐述了用户设备(UE)与核心网(EPC)之间建立信任、派生密钥、管理安全状态的全过程。
由于第六章内容极为丰富和关键,我们将采用分篇拆解的方式。本文将聚焦于6.1节 认证与密钥协商,这是所有安全程序的起点,也是移动通信网络中“信任”得以建立的基石。
深度解析 3GPP TS 33.401:6.1 Authentication and key agreement (认证与密钥协商)
本文技术原理深度参考了3GPP TS 33.401 V18.3.0 (2025-03) Release 18规范中,关于“6.1 Authentication and key agreement”的核心章节,旨在为读者庖丁解牛般地拆解4G网络中至关重要的双向认证流程(EPS AKA)及其上下文传递机制。
清晨,当我们的主角“小明”的手机从飞行模式切换回来,或者从一个没有信号的地下车库回到地面时,屏幕上信号格从“x”变为“4G+”的瞬间,一场精密、高速且无声的“信任谈判”正在后台上演。这场谈判,就是本章要深入探讨的核心——EPS AKA(演进分组系统认证与密钥协商)。
1. 通用安全原则 (6.0 General)
在深入AKA流程之前,规范首先在6.0节强调了本章普适性的原则。
The statements relating to eNBs in clause 6 apply also to RNs regarding the security between a UE and a relay node.
The statements relating to UEs and MEs in clause 6 apply also to RNs regarding the security between a relay node and a Donor eNB and between a relay node and its MME unless stated otherwise.
深度解读:这段话再次强调了在5.1.0节中提到的一致性原则。它明确指出,本章所有关于UE与网络元素(如eNB、MME)之间的安全流程,同样适用于中继节点(RN)的特殊场景。RN既作为UE接入“施主”基站,又作为基站为普通UE提供服务,因此它在两个角色下都必须严格遵守本章定义的认证与密钥管理规则。这确保了无论网络拓扑多么复杂,安全的基本盘——信任的建立方式——始终是统一和稳固的。
2. “信任之舞”:EPS AKA流程详解 (6.1.1 AKA procedure)
AKA(Authentication and Key Agreement)是整个EPS安全体系的奠基石。它的名字已经揭示了其两大核心使命:认证(Authentication)和密钥协商(Key Agreement)。更重要的是,它实现了双向认证,即网络要验证用户的合法性,用户也要验证网络的真实性,这是防范“伪基站”攻击的根本。
NOTE 1明确了本章的一个术语约定:
NOTE 1: Authentication data in this clause stands for EPS Authentication vector(s).
深度解读:后文提到的“认证数据”,特指“EPS认证向量”。
整个AKA流程,可以被看作是一场围绕着终极秘密——存储在用户USIM卡和运营商HSS/AuC中的共享密钥K——展开的精妙密码学舞蹈。
舞蹈的开场:挑战与应答
当小明的手机需要接入网络时(例如开机附着),MME(移动管理实体)会向UE发起认证挑战。
The MME sends to the USIM via ME the random challenge RAND and an authentication token AUTN for network authentication from the selected authentication vector. It also includes a KSIASME for the ME which will be used to identify the KASME…
深度解读:MME向小明的手机发送一个“认证请求”消息,其中包含三个关键参数:
-
RAND (Random Challenge):一个随机生成的挑战数。它像是一次性口令的“题干”,确保每次认证都是全新的。
-
AUTN (Authentication Token):网络认证令牌,这是网络用来向UE证明自己“清白”的关键凭证,我们稍后会深入剖析它。
-
KSIASME (Key Set Identifier for ASME):ASME密钥集标识。
ASME指代的是核心网中的安全管理实体,在4G中就是MME。这个小小的标识符作用巨大,它像一个“密钥版本号”,用来唯一标识本次AKA成功后将要产生的会话根密钥KASME。
小明的手机(ME)收到这个请求后,并不会自己处理,而是忠实地将它传递给这场舞蹈的真正主角——USIM卡。
舞步一:验证网络的“真伪”
USIM卡收到RAND和AUTN后,它的首要任务不是回应,而是检验网络的身份。
At receipt of this message, the USIM shall verify the freshness of the authentication vector by checking whether AUTN can be accepted as described in TS 33.102.
深度解读:这是双向认证的核心,是抵御伪基站的“防火墙”。USIM卡会执行以下步骤:
-
解析AUTN:AUTN并非一个整体,它内部由三部分组成:序列号
SQN被匿名密钥AK异或加密后的值、认证管理字段AMF、消息认证码MAC。 -
验证新鲜度:USIM卡内部维护着一个它期望接收到的序列号
SQN范围。它首先解密出AUTN中的SQN,并检查这个SQN是否在合法范围内。如果SQN比本地记录的要小,说明这可能是一个已经被使用过的“旧”认证向量,是重放攻击,USIM将拒绝此次认证。这保证了认证的“一次性”。 -
计算XMAC:USIM卡利用自己神圣的根密钥
K以及收到的RAND、解密出的SQN等信息,使用标准定义的f1算法,独立计算出一个期望的消息认证码XMAC。 -
比对MAC:USIM将自己计算出的
XMAC与AUTN中包含的MAC进行比对。如果两者完全一致,USIM就百分之百确认,对面的网络实体一定也拥有和自己一样的根密钥K,因此是合法的运营商网络。伪基站由于没有K,绝对无法伪造出正确的MAC。
此外,规范特别强调了AMF字段中的一个比特位:
An ME accessing E-UTRAN shall check during authentication that the “separation bit” in the AMF field of AUTN is set to 1.
深度解读:AMF字段中的第0比特被定义为“分离比特”。当它被设为1时,意味着这个认证向量是专为EPS(4G)的AKA设计的,派生出的密钥(CK, IK)不能用于传统的CS/PS域(2G/3G),从而实现了不同代际技术在密钥体系上的严格隔离。
舞步二:生成响应与会话密钥
在确认网络身份合法后,USIM才会开始计算给网络的回应。
If so, the USIM computes a response RES. USIM shall compute CK and IK which are sent to the ME.
深度解读:
-
USIM使用
f2算法、根密钥K和收到的RAND,计算出一个响应值RES。这个RES是UE用来向网络证明自己身份的凭证。 -
同时,USIM使用
f3和f4算法,派生出两个128位的会话密钥:加密密钥CK和完整性密钥IK。
关键点:RES、CK、IK这三个关键结果,只在USIM内部生成。随后,CK和IK被安全地传递给手机ME,而RES则由ME封装成“认证响应”消息,发回给MME。
舞蹈的收尾:MME的最终确认
MME收到UE回传的RES后,进行最后一步的验证。
The MME checks that the RES equals XRES. If so the authentication is successful.
深度解读:MME在其从HSS获取的认证向量中,本身就包含一个由HSS预先计算好的期望响应XRES。MME只需简单地比对收到的RES和存储的XRES是否相等。如果相等,则双向认证的“信任之舞”圆满成功。
规范中的 Figure 6.1.1-1: Successful EPS AKA authentication 直观地描绘了这场舞蹈的两个主要步骤:MME发起的“用户认证请求”和UE回应的“用户认证响应”。
AKA的真正“果实”:协商出会话根密钥KASME
认证的成功只是过程,密钥协商才是AKA的最终目的。
In this case the ME shall compute KASME from CK, IK, and serving network’s identity (SN id) using the KDF as specified in clause A.2.
深度解读:AKA成功后,UE(ME侧)和MME这两端,都会执行一个完全相同的密钥派生过程。它们使用刚刚生成的CK和IK作为输入密钥,再结合当前服务网络的身份标识SN id(即PLMN ID),通过一个标准化的密钥派生函数(KDF),共同计算出一个256位的会- 会话根密钥KASME。
- SN id的作用:将
SN id作为输入参数,实现了密钥与服务网络的绑定。这意味着小明在运营商A的网络下协商出的KASME,与他在运营商B的网络下协商出的KASME是完全不同的,即使AKA过程中的CK和IK碰巧一样。这增强了漫游场景下的安全性。
KASME是本次会话(从附着到分离)中所有后续密钥的“祖先”,它标志着一个全新的、可信的安全上下文在UE和MME之间正式建立。
3. “弹药”的来源:从HSS分发认证数据 (6.1.2 Distribution of authentication data from HSS to serving network)
MME在向小明发起认证挑战时,所使用的认证向量(RAND, AUTN, XRES)以及用于派生KASME的CK和IK,并非由MME自己产生,而是从归属网络(HE)的HSS(归属用户服务器)获取的。6.1.2节就详细定义了这个“获取弹药”的过程。
The purpose of this procedure is to provide the MME with one or more EPS authentication vectors (RAND, AUTN, XRES, KASME) from the user’s HE (HSS) to perform user authentication.
深度解读:注意,这里HSS提供给MME的认证向量中,除了我们熟知的“三元组”(RAND, AUTN, XRES),还直接包含了已经派生好的KASME。这是对3G的一个重要优化。在3G中,HSS只提供包含CK和IK的五元组,KASME(及其等价物)是在服务网络(SGSN)中计算的。而在4G中,KASME的计算上移到了更安全的归属网络HSS中,MME只需直接获取结果即可。
请求与响应流程
Figure 6.1.2-1描绘了MME和HE(HSS)之间的交互:
-
MME发起请求:MME向HSS发送“认证数据请求”,其中包含用户的永久身份
IMSI、当前服务网络的身份SN identity,以及网络类型Network Type(在此为E-UTRAN)。 -
HSS生成并响应:HSS收到请求后,找到该IMSI对应的根密钥
K。然后执行与USIM类似的密码学运算,生成一组或多组EPS认证向量(每个都包含RAND, AUTN, XRES, KASME),并通过“认证数据响应”消息回传给MME。
规范的NOTE 2给出了一个重要的工程建议:
It is recommended that the MME fetch only one EPS authentication vector at a time as the need to perform AKA runs has been reduced in EPS through the use of a more elaborate key hierarchy.
深度解读:在2G/3G时代,由于密钥体系简单,业务切换频繁需要重认证,所以SGSN通常会一次性从HSS批量获取多组认证向量备用。但在4G时代,由于KASME这棵强大的“密钥树”的存在,一次AKA后产生的密钥可以在多次切换中持续使用,大大降低了重认证的频率。因此,规范推荐MME“用一次,取一次”,每次只获取一个认证向量。这样做的好处是避免了因批量获取而可能导致的SQN同步问题,简化了网络侧的实现。
4. 身份的“最后防线”:通过永久身份识别用户 (6.1.3 User identification by a permanent identity)
正常情况下,小明的手机都使用MME分配的临时身份GUTI与网络通信。但如果出现异常,比如MME重启导致用户上下文丢失,或者小明的手机关机时间太长导致GUTI失效,网络将无法识别手机上报的GUTI。此时,就必须启用最后的身份识别手段——使用IMSI。
The user identification mechanism should be invoked by the serving network whenever the user cannot be identified by means of a temporary identity (GUTI).
流程如 Figure 6.1.3-1 所示:
-
MME向UE发送
Identity Request消息,要求其提供永久身份。 -
UE回应
Identity Response消息,其中包含了明文的IMSI。
规范对此给出了严厉的警告:
The user’s response contains the IMSI in cleartext. This represents a breach in the provision of user identity confidentiality.
深度解读:这是一个“不得已而为之”的例外流程。它牺牲了单次的身份机密性,以恢复通信会话。一旦MME通过IMSI识别了用户,它会立刻发起一次全新的AKA流程,并为用户分配一个新的GUTI,从而使通信尽快回到受临时身份保护的正常轨道上来。
5. “信任”的传递:MME间的上下文分发 (6.1.4, 6.1.5, 6.1.6)
小明乘坐高铁出差,手机在不同城市间飞速移动。在这个过程中,服务他的MME可能会发生变化。当手机从旧MME(MMEo)的管辖区移动到新MME(MMEn)的管辖区并发起位置更新(TAU)时,如果每次都让MMEn去HSS重新获取认证向量并发起AKA,效率会非常低下。
为了优化移动性,规范定义了在MME之间直接传递用户安全上下文的机制。
同一运营商内部的传递 (6.1.4)
The purpose of this procedure is to provide a newly visited MME with authentication data from a previously visited MME within the same serving network domain.
深度解读:当小明的TAU请求到达MMEn,而请求中携带的GUTI指向的是MMEo时,MMEn会直接联系MMEo,请求该用户的上下文。如果完整性校验通过,MMEo会将其持有的该用户的完整安全上下文——包括IMSI、当前的KASME和对应的eKSI,以及任何未使用的认证向量——全部打包发送给MMEn。MMEn收到后,就继承了这个安全上下文,可以继续为小明提供服务,而无需惊动HSS。这个过程,就像是两个部门的同事交接工作,直接传递档案,而不是让客户重新填一遍所有表格。
不同运营商之间的传递限制 (6.1.5)
当小明漫游到另一家运营商的网络时,MME的切换就跨越了PLMN的边界。此时,安全策略变得更加严格。
Unused EPS authentication vectors, or non-current EPS security contexts, shall not be distributed between MMEs belonging to different serving domains (PLMNs).
深度解读:规范禁止在不同运营商的MME之间传递未使用的认证向量。只允许传递当前正在使用的安全上下文(即当前的KASME)。
- 安全考量:这是为了防止一个运营商的认证“弹药”(AVs)被另一个运营商获取。认证向量是极其敏感的数据,其分发权应严格控制在归属网络HSS手中。允许在漫游伙伴间传递当前的会话状态是可以接受的,但传递可用于发起新认证的“弹药库”则带来了不可控的风险。
对2G/3G上下文的处理 (6.1.6)
本节补充说明了在MME与SGSN(3G核心网节点)之间,或MME与MME之间传递传统的UMTS认证向量的规则,确保了与旧网络的兼容性和正确的上下文处理逻辑。
6. 总结
6.1节“认证与密钥协商”,为我们完整地呈现了4G网络信任体系的建立过程。它是一套设计精良、考虑周全的系统工程:
-
核心是EPS AKA:通过基于USIM的、抗重放的、双向认证机制,彻底解决了网络与用户的相互信任问题,并从根本上杜绝了伪基站攻击。
-
成果是KASME:AKA的最终产物是一个与服务网络绑定的、高熵值的会话根密钥
KASME,为后续所有安全操作提供了坚实的密钥基础。 -
源头在HSS:所有认证数据的生成和
KASME的预计算都在最可信的归属网络HSS中完成,保证了密钥衍生的安全性。 -
效率靠上下文传递:通过在MME之间传递安全上下文,极大地优化了移动性管理效率,实现了安全与性能的平衡。
-
隐私是基本原则:除非万不得已,否则绝不暴露用户的永久身份IMSI。
掌握了AKA,就等于掌握了解锁4G安全大门的“钥匙”。在下一篇文章中,我们将基于AKA协商出的KASME,深入探索6.2节定义的“EPS密钥体系”,看看这棵神奇的“密钥树”是如何生长,并为网络的不同层面提供恰如其分的保护的。
FAQ 环节
Q1:USIM卡在AKA流程中是如何验证AUTN中的序列号(SQN)新鲜度的?
A1:USIM卡内部会维护一个序列号SQN_UE。当收到网络的AUTN后,它会解密出其中的SQN_MS。然后进行比较:1) 如果SQN_MS > SQN_UE,则认为该SQN是新鲜的,认证继续,并且在认证成功后,USIM会将本地的SQN_UE更新为SQN_MS。2) 如果SQN_MS <= SQN_UE,则认为这是一个重放攻击,认证失败。此外,为了处理网络侧SQN非正常跳转(如数据库恢复),还存在一个同步流程(synchronisation failure),此时UE会返回一个包含AUTS参数的认证失败消息,帮助HSS重新同步其SQN值。
Q2:KSIASME和KASME是什么关系?
A2:KSIASME是KASME的标识符或索引。KASME是256比特的密钥本身,非常庞大。在UE和MME之间传递信令时,如果需要指明当前正在使用哪个KASME,直接传递密钥本身既不安全也不高效。因此,MME在生成KASME时,会同时分配一个很短的数字(通常是3比特)作为其“代号”,这个代号就是KSIASME。当UE在TAU请求中携带KSIASME=010时,MME就知道UE希望使用代号为010的那把KASME来保护这条消息。
Q3:为什么HSS直接提供KASME给MME,而不是像3G那样提供CK和IK让服务网络自己算?
A3:这是一种安全增强设计。将KASME的计算过程上移到归属网络(HE)的HSS/AuC中,可以更好地保护CK和IK。在3G中,CK和IK会被发送到服务网络(VPLMN)的SGSN。这意味着漫游地的运营商可以看到这对中间密钥。而在4G中,CK和IK仅在HSS内部用于派生KASME,它们永远不会离开最可信的归属域。MME(服务网络节点)只能得到最终的KASME,无法得知其派生过程。这减少了敏感密钥的暴露面,增强了跨网络漫游时的安全性。
Q4:如果小明从A运营商漫游到B运营商,然后又漫游到C运营商,安全上下文是如何传递的?
A4:假设小明一直在移动中且手机处于空闲态。当他从A漫游到B时,B的MME会从A的MME获取当前的安全上下文(主要是KASME)。当他继续从B漫游到C时,C的MME会从B的MME获取这个上下文。这个过程就像接力棒一样传递下去。但是,根据6.1.5节的规定,这个传递仅限于“当前”的上下文。如果B的MME从A那里还额外获取了一些未使用的认证向量,那么这些认证向量是不能被传递给C的MME的。
Q5:AKA流程看起来很复杂,会影响手机开机连接网络的速度吗?
A5:AKA流程虽然在逻辑上复杂,但其密码学计算和信令交互在现代硬件和网络中都是高度优化的,通常在几百毫秒内就能完成,对用户的感知影响极小。更重要的是,如前文所述,4G的精巧密钥体系使得AKA并不是一个高频操作。在一次成功的AKA之后,派生出的KASME可以在很长一段时间内(数小时甚至数天)、在多次小区切换和位置更新中被持续复用,无需再次执行完整的AKA。只有在跨MME移动且上下文传递失败、长期关机后GUTI失效、或网络出于安全策略主动发起重认证时,才会再次触发AKA。