首页 › deep-tech › 5G认证与密钥体系:你的通话谁在保护

5G认证与密钥体系:你的通话谁在保护

你有没有想过,当你拨出一通电话、刷着短视频,或者用手机银行转账时,空中飞舞的电磁波里藏着什么?你的密码、你的身份、你的银行账号——全部化作了0和1,在基站和手机之间裸奔吗?当然不是。在你和基站之间,有一套精密到令人叹为观止的安全体系在默默运转。今天,我们就来拆解这套体系——5G认证与密钥层级——看看它是如何被设计出来的,又为什么必须这样设计。


一、从一个真实威胁说起:IMSI Catcher

在讲原理之前,先理解一个真实的安全威胁。

假设你是一个攻击者,花几百块钱买了一个软件定义无线电(SDR)设备,在闹市区架设一个伪装基站。当路人的手机搜到这个"基站"信号更强时,就会主动连接过来。此时你发送一条指令:"请发送你的IMSI"。在4G网络中,手机很可能老老实实地把自己的IMSI(国际移动用户识别码,15位数字)用明文发过来。

这就是IMSI Catcher(伪基站)攻击。 拿到IMSI后,攻击者可以追踪你的位置、记录你的通信,甚至实施中间人攻击。

为什么4G会这么"天真"?因为在4G的设计时代(2008年前后),移动通信安全的主要威胁模型还集中在核心网内部,而非空口(无线电接口)上的主动攻击者。4G规范虽然引入了GUTI(临时标识)来减少IMSI明文传输的频率,但在初次附着、网络请求等场景下,IMSI仍然可能以明文暴露。

5G的设计者痛定思痛:永远不再在空口传输永久标识的明文。 这个决策,引发了整个认证和密钥体系的重新设计。


二、身份保护的第一道防线:SUPI与SUCI

2.1 从IMSI到SUPI

5G用SUPI(Subscription Permanent Identifier)取代了4G的IMSI。本质上它还是一个永久标识——由MCC(移动国家码)+ MNC(移动网络码)+ MSIN(移动用户识别号)组成。但关键区别在于:SUPI永远不应该在空口上以明文出现。

2.2 SUCI:给身份证套上信封

5G引入了SUCI(Subscription Concealed Identifier),可以理解为"加密后的SUPI"。

想象一下:SUPI是一封信,SUCI就是把信装进一个只有你家(归属网络)才能打开的保险信封里。即使中途有人截获了这个信封,他也看不到里面的内容。

SUCI的加密采用的是ECIES(椭圆曲线集成加密方案)。它的工作流程如下:

sequenceDiagram
    participant USIM as USIM卡<br/>(存储运营商公钥)
    participant UE as 手机
    participant RAN as 伪基站?
    participant AMF as AMF/SEAF
    participant UDM as UDM/SIDF<br/>(存储运营商私钥)

    Note over USIM,UDM: 预先配置:运营商的公私钥对

    USIM->>UE: 读取公钥Pk和密钥ID
    UE->>UE: 生成临时密钥对(ephemeral)<br/>用Pk加密SUPI
    UE->>RAN: 发送SUCI(加密后的SUPI)
    Note over RAN: 即使是伪基站<br/>也无法解密SUCI!

    RAN->>AMF: 转发SUCI
    AMF->>UDM: 转发SUCI
    UDM->>UDM: SIDF用私钥Sk<br/>解密SUCI→得到SUPI
    UDM->>AMF: 返回SUPI和认证向量

ECIES的核心思路: - 运营商在USIM卡里预置一个公钥(Pk) - 运营商的核心网(UDM)保存对应的私钥(Sk) - 每次注册时,UE生成一个临时密钥对,用公钥Pk加密SUPI - 只有UDM的SIDF(去隐藏功能)能用私钥Sk还原SUPI

这意味着,即便是伪装成基站的攻击者截获了SUCI,没有私钥也无法还原SUPI。 这是5G相比4G最根本的安全改进之一。

SUCI的完整结构如下表所示:

字段 说明 示例
SUPI Type 标识类型 0=IMSI格式
Home Network ID 归属网络标识 MCC=460, MNC=00
Routing Indicator 路由指示 用于路由到正确UDM
Protection Scheme 加密方案标识 0=null, 1=ECIES
Home Network PK ID 公钥标识 标识使用哪个公钥版本
Scheme Output 加密输出 密文+MAC值

工程注意: 网络可以配置"null scheme"(空加密方案),此时SUCI中直接包含明文SUPI。这通常用于漫游场景或早期部署阶段。在现网调试中,如果抓包看到明文SUPI,首先要确认是否配置了ECIES方案。


三、认证流程:网络和手机如何"对暗号"

3.1 一个生活类比

在解释技术之前,先理解认证的本质。

想象你去银行取钱:

  1. 银行验证你:柜员让你出示身份证、输入密码——这是网络验证UE
  2. 你验证银行:你确认柜台的银行标识、工作人员的工牌——这是UE验证网络
  3. 双方建立信任后,才能进行后续交易——这就是密钥协商

移动通信中的AKA(Authentication and Key Agreement)就是这样一个双向认证过程:网络确认"你是你说的那个用户",用户也确认"你是我签约的那个网络"。

3.2 4G的EPS-AKA(作为对比基础)

在讲5G之前,先快速理解4G的认证流程,因为5G是在4G基础上演进的:

sequenceDiagram
    participant UE as UE
    participant MME as MME
    participant HSS as HSS/AuC

    UE->>MME: Attach Request (含IMSI/GUTI)
    MME->>HSS: Authentication Information Request (IMSI)
    HSS->>HSS: 用长期密钥K + RAND<br/>生成认证向量AV(RAND, AUTN, XRES, KASME)
    HSS->>MME: 返回多个AV
    MME->>UE: Authentication Request (RAND, AUTN)
    UE->>UE: 用USIM中的K验证AUTN<br/>计算RES
    UE->>MME: Authentication Response (RES)
    MME->>MME: 比较RES和XRES<br/>匹配则认证成功

4G的EPS-AKA流程有一个根本缺陷:IMSI在第一步就可能以明文传输。 这给了IMSI Catcher可乘之机。

3.3 5G-AKA流程详解

5G的认证流程在4G基础上做了三个关键改进:

  1. 用户标识加密(SUCI替代明文IMSI)
  2. 归属网络验证服务网络(防止伪基站)
  3. 增强的响应验证(XRES*防止截断攻击)

完整流程如下:

sequenceDiagram
    participant UE as UE/USIM
    participant SEAF as SEAF(AMF)
    participant AUSF as AUSF
    participant UDM as UDM/ARPF/SIDF

    UE->>SEAF: ① Registration Request<br/>(SUCI或5G-GUTI)

    Note over SEAF: AMF没有安全上下文<br/>需要触发认证

    SEAF->>AUSF: ② Nausf_UEAuthentication<br/>(SUCI, SN-name)

    AUSF->>UDM: ③ Nudm_UEAuthentication<br/>(SUCI→SIDF解密→SUPI)

    Note over UDM: ARPF用长期密钥K<br/>生成认证向量AV<br/>(RAND, AUTN, XRES*, K_AUSF)

    UDM->>AUSF: ④ 返回(RAND, AUTN, XRES*, K_AUSF)

    Note over AUSF: 计算HXRES*=SHA256(XRES*)<br/>派生K_SEAF

    AUSF->>SEAF: ⑤ 返回(RAND, AUTN, HXRES*, K_SEAF)

    SEAF->>UE: ⑥ Authentication Request<br/>(RAND, AUTN)

    Note over UE: USIM用K验证AUTN<br/>检查SQN防止重放<br/>计算RES*

    UE->>SEAF: ⑦ Authentication Response (RES*)

    Note over SEAF: 计算HRES*=SHA256(RES*)<br/>与HXRES*比较

    SEAF->>AUSF: ⑧ 转发RES*

    Note over AUSF: 比较RES*与XRES*<br/>完全匹配则认证成功

    AUSF->>SEAF: ⑨ 认证确认 + K_SEAF确认

    SEAF->>UE: ⑩ Security Mode Command<br/>(安全算法协商)

    UE->>SEAF: ⑪ Security Mode Complete

3.4 每一步在做什么——逐帧拆解

第①步: UE发送注册请求,身份标识用SUCI(加密的)或5G-GUTI(临时标识)。SUPI明文永远不会出现在空口上。

第②步: AMF作为SEAF(安全锚点功能),将请求转发给归属网络的AUSF。注意,这里携带了SN-name(服务网络名称),格式类似 5G:mnc070.mcc901.3gppnetwork.org。这个字段至关重要——它让归属网络知道是谁在请求认证。

第③-④步: UDM内部的SIDF解密SUCI得到SUPI,然后ARPF(认证凭据仓库和处理功能)用长期密钥K生成认证向量。关键的增强是XRES*:它是4G XRES的扩展版本,通过追加一个哈希值来防止"截断攻击"——攻击者无法只截取RES的前半部分来通过验证。

第⑤步: AUSF不直接把XRES给SEAF,而是给HXRES*(XRES的哈希)。这是一个安全隔离措施:服务网络只需验证哈希值,不需要知道完整的期望响应。

第⑥步: SEAF把RAND(随机挑战)和AUTN(认证令牌)发给UE。AUTN里包含一个序列号SQN。

第⑦步: UE的USIM用存储的长期密钥K来: - 验证AUTN:确认"这个挑战确实来自我的归属网络" - 检查SQN:确保"这个挑战是新鲜的,不是重放的" - 计算RES*:作为应答

第⑧-⑨步: 双重验证。SEAF先本地比对HRES和HXRES(快速初筛),再由AUSF做最终精确比对。

3.5 AUTN的内部结构

AUTN是网络向UE证明自己身份的令牌。它的内部包含:

字段 长度 说明
SQN ⊕ AK 48 bit 序列号异或匿名密钥
AMF 16 bit 认证管理字段
MAC-A 64 bit 消息认证码

UE收到AUTN后,用密钥K和RAND重新计算MAC-A,与收到的MAC-A比对。如果一致,说明这个挑战确实来自持有密钥K的网络。同时检查SQN(序列号),如果SQN比上次收到的小,说明可能是重放攻击,UE会拒绝认证并启动同步失败流程。


四、密钥层级:从一把主钥匙到一串房间钥匙

认证通过后,接下来就是密钥协商——双方要派生出一套用于加密和完整性保护的会话密钥。

4.1 为什么需要密钥层级?

你可能会问:既然认证时已经有了共享密钥K,为什么不直接用K来加密通信?

原因至少有三个:

  1. 前向安全性:如果K被泄露(虽然极其困难),没有层级派生的话,所有历史通信都可以被解密
  2. 最小权限原则:不同的功能需要不同的密钥——NAS信令加密用一把,RRC信令用另一把,用户面数据又用一把
  3. 安全隔离:即使某个低层密钥被破解,不应影响其他密钥的安全

所以5G采用了层级密钥派生——就像酒店的主钥匙体系:总经理有一把总钥匙,楼层经理有本层的钥匙,每个房间还有独立的门卡。任何一把门卡丢失,只需要换这个房间的锁,不需要换整栋楼的锁。

4.2 5G密钥层级全景图

graph TD
    K["<b>K</b><br/>长期密钥<br/>(USIM + UDM)<br/>128/256 bit"]
    K --> CK_IK["<b>CK || IK</b><br/>密码密钥 + 完整性密钥<br/>由K+RAND派生"]

    CK_IK --> CKp_IKp["<b>CK' || IK'</b><br/>绑定服务网络上下文<br/>KDF(CK‖IK‖SQN‖SN_ID)"]

    CKp_IKp --> K_AUSF["<b>K_AUSF</b><br/>归属网络锚点密钥<br/>存储在AUSF"]

    K_AUSF --> K_SEAF["<b>K_SEAF</b><br/>服务网络锚点密钥<br/>KDF(K_AUSF‖SUPI‖...)"]

    K_SEAF --> K_AMF["<b>K_AMF</b><br/>AMF密钥<br/>KDF(K_SEAF‖SUPI‖ABBA)"]

    K_AMF --> K_NAS_enc["<b>K_NASint</b><br/>NAS完整性密钥"]
    K_AMF --> K_NAS_int["<b>K_NASenc</b><br/>NAS加密密钥"]
    K_AMF --> KgNB["<b>KgNB</b><br/>基站密钥"]
    K_AMF --> K_AMF_star["<b>K_AMF*</b><br/>移动性密钥<br/>(切换用)"]

    KgNB --> K_RRC_enc["<b>K_RRCenc</b><br/>RRC加密密钥"]
    KgNB --> K_RRC_int["<b>K_RRCint</b><br/>RRC完整性密钥"]
    KgNB --> K_UP_enc["<b>K_UPenc</b><br/>用户面加密密钥"]
    KgNB --> K_UP_int["<b>K_UPint</b><br/>用户面完整性密钥"]

    style K fill:#ff6b6b,color:#fff
    style CK_IK fill:#ffa94d,color:#fff
    style K_AUSF fill:#845ef7,color:#fff
    style K_SEAF fill:#339af0,color:#fff
    style K_AMF fill:#20c997,color:#fff
    style KgNB fill:#fcc419,color:#333

4.3 逐层解读:每把钥匙保护什么

第一层:K(长期密钥) - 存储在USIM和UDM的AuC(认证中心)中 - 是整个安全体系的根基,永远不会在空口传输 - 通常为128位,5G支持扩展到256位

第二层:CK、IK(基础会话密钥) - CK(Cipher Key)用于加密 - IK(Integrity Key)用于完整性保护 - 由K和RAND通过密码学函数派生:$$CK \parallel IK = f_K(RAND)$$

第三层:CK'、IK'(绑定上下文的密钥) - 5G新增的安全措施,将CK/IK与服务网络身份绑定: $$CK' \parallel IK' = \text{KDF}_{\text{CK}\parallel\text{IK}}(\text{SQN} \oplus \text{AK} | \text{SN_ID})$$ - 这样做的好处:即使CK/IK被泄露,攻击者也无法在另一个网络中重用

第四层:K_AUSF(归属网络锚点密钥) $$K_{\text{AUSF}} = \text{KDF}(\text{CK}' \parallel \text{IK}', \text{P0}=\text{SN_ID}, \text{L0}=\text{length})$$ - 停留在归属网络,不会发送给服务网络 - 用于跨系统移动时的安全锚点

第五层:K_SEAF(服务网络锚点密钥) $$K_{\text{SEAF}} = \text{KDF}(K_{\text{AUSF}}, \text{P0}=\text{SUPI}, \text{P1}=\text{ABBA})$$ - 由AUSF发送给SEAF(AMF) - ABBA参数用于防回退保护,防止攻击者迫使系统使用弱安全参数

第六层:K_AMF(AMF密钥) $$K_{\text{AMF}} = \text{KDF}(K_{\text{SEAF}}, \text{SUPI}, \text{ABBA})$$ - AMF使用此密钥派生所有下级密钥 - 这是NAS层安全的直接基础

第七层:NAS密钥 + KgNB - K_NASenc:NAS信令加密 - K_NASint:NAS信令完整性保护 - KgNB:传递给基站,用于RRC和用户面保护

第八层:RRC和用户面密钥 - K_RRCenc:RRC信令加密 - K_RRCint:RRC信令完整性保护 - K_UPenc:用户面数据加密 - K_UPint:用户面数据完整性保护

5G新增亮点: 在4G中,用户面数据完整性保护(K_UPint)不是强制的。但在5G中,用户面完整性保护成为必选功能。这是因为在物联网场景中,即使数据被加密,攻击者仍然可以通过翻转密文比特来篡改控制指令(如开关阀门),完整性保护可以防止这类攻击。


五、4G vs 5G安全对比

安全特性 4G (EPS-AKA) 5G (5G-AKA) 改进意义
用户标识保护 IMSI可能明文传输 SUPI永远加密为SUCI 消除IMSI Catcher威胁
加密算法 ECIES未标准化 标准化ECIES方案 互操作性和安全性提升
用户面完整性 可选 强制 防止数据篡改
锚点密钥 K_ASME K_SEAF(更深层级) 更好的密钥隔离
服务网络认证 弱(MME自行验证) 归属网络验证服务网络 防止伪基站
认证响应 XRES(可能被截断) XRES*(含哈希扩展) 防止截断攻击
伪基站防护 依赖UE实现 网络侧强制验证 系统级安全
回退保护 无 ABBA参数 防止降级攻击
密钥长度 128 bit 128/256 bit 抗量子计算准备

六、实战连接:工程师需要知道什么

6.1 抓包分析中的安全调试

在现网调试中,安全相关的问题通常表现为:

调试要点: - 检查USIM和UDM中的长期密钥K是否一致(最常见的认证失败原因) - 检查SQN同步(如果UE长时间关机,SQN可能不同步) - 检查SUCI是否正确加密(null scheme vs ECIES)

6.2 常见误解

误解1:"5G使用SUCI,所以不可能被追踪。"

事实:SUCI只在初次注册时使用。注册成功后,网络会分配5G-GUTI作为临时标识。后续通信使用5G-GUTI。如果攻击者持续监控,可以通过关联SUCI→5G-GUTI的映射来追踪。此外,流量模式分析(数据包大小、时间间隔)也可能泄露信息。SUCI大幅提高了追踪难度,但并非完全消除。

误解2:"K_SEAF和K_ASME一样,只是换了名字。"

事实:虽然概念类似(都是服务网络的锚点密钥),但K_SEAF的派生链更长、参数更多,绑定了SUPI和ABBA,提供了更强的安全隔离。

误解3:"5G认证完成后,所有数据都是加密的。"

事实:5G支持多种加密算法(NEA0/1/2/3),其中NEA0是空加密。虽然规范要求尽量使用加密算法,但在某些漫游场景或紧急呼叫中,可能使用NEA0。在抓包时需要确认实际协商的算法。

6.3 安全算法一览

算法标识 名称 类型 说明
NEA0 空加密 加密 不加密,仅用于特定场景
NEA1 128-EEA1 加密 基于SNOW 3G
NEA2 128-EEA2 加密 基于AES
NEA3 128-EEA3 加密 基于ZUC(祖冲之算法)
NIA0 空完整性 完整性 不保护,仅用于特定场景
NIA1 128-EIA1 完整性 基于SNOW 3G
NIA2 128-EIA2 完整性 基于AES
NIA3 128-EIA3 完整性 基于ZUC

注意NEA3/NIA3: ZUC算法是中国自主研发的密码算法,已纳入3GPP国际标准。在中国运营商的网络中,ZUC算法是默认使用的加密和完整性保护算法。


七、切换场景下的密钥更新

当UE从一个基站切换到另一个基站时,密钥也需要更新,否则攻击者可能通过获取旧密钥来解密新基站的通信。

5G使用水平密钥派生来解决这个问题:

$$K_{\text{gNB}}^{*} = \text{KDF}(K_{\text{gNB}}, \text{target_gNB_ID})$$

每次切换时,当前gNB基于自己的KgNB和目标gNB的ID派生新的KgNB给目标gNB。这个过程形成一个密钥链*:

K_AMF → KgNB_0 → KgNB_1 → KgNB_2 → ... → KgNB_n
          (初始)    (第1次切换)  (第2次切换)      (第n次切换)

为了防止密钥链无限延长导致的安全降级,5G还引入了最大水平链长度限制。当链长度达到阈值时,会触发一个新的垂直密钥派生(从K_AMF重新开始)。

前向安全与后向安全

类型 含义 5G实现
前向安全 新基站无法解密旧基站的通信 每次切换派生新密钥,旧密钥不传递
后向安全 旧基站无法解密新基站的通信 需要额外机制,5G在特定场景下支持

八、从认证到安全激活:全流程串联

把认证和密钥派生放在一起,整个安全建立过程是:

1. UE发送注册请求(携带SUCI)
      ↓
2. 网络触发5G-AKA认证
   - 互相验证身份
   - 派生K_SEAF → K_AMF
      ↓
3. AMF向UE发送Security Mode Command
   - 协商加密/完整性算法
   - 激活NAS安全(K_NASenc, K_NASint)
      ↓
4. UE回复Security Mode Complete(已加密+完整性保护)
      ↓
5. AMF向gNB发送UE Context Setup
   - 传递KgNB和算法列表
      ↓
6. gNB向UE发送RRC Security Mode Command
   - 激活RRC和用户面安全
      ↓
7. 安全通道建立完成,开始正常通信

注意这个顺序:NAS安全先于RRC安全。这是因为NAS消息(UE到AMF)的加密在AMF中终结,而RRC消息(UE到gNB)的加密在gNB中终结。AMF先建立安全通道,然后才把密钥材料传递给gNB,形成了一个从核心到边缘的安全建立顺序。


常见问题

Q1: SUCI每次注册都会变吗?

A: 是的。因为ECIES每次都会生成一个新的临时密钥对,即使SUPI完全相同,每次产生的SUCI密文也不同。这意味着攻击者无法通过比较SUCI来判断两次注册是否来自同一用户。

Q2: 5G-AKA和EAP-AKA'有什么区别?

A: 5G-AKA是5G原生的认证协议,由网络(SEAF)主动发起;EAP-AKA'是基于EAP框架的认证协议,通常用于非3GPP接入(如WiFi)场景。两者都能达到相似的安全效果,但信令流程不同。EAP-AKA'需要更多的往返消息(EAP-Request/Response交互),但更灵活,支持多种接入技术。

Q3: 如果USIM中的密钥K被泄露了怎么办?

A: K是整个安全体系的根基。如果K泄露,攻击者可以伪装成合法用户接入网络,也可以解密所有通信。运营商需要立即在UDM中更新K,并更换用户的USIM卡。这也是为什么K只存储在USIM的安全硬件和运营商的认证中心(AuC)中,不在任何中间节点存储。

Q4: 为什么需要HXRES*这个中间步骤?

A: HXRES是AUSF给SEAF的XRES哈希值。SEAF(在服务网络)不需要知道完整的XRES,只需验证UE返回的RES的哈希是否匹配。这种设计确保了:即使服务网络被攻破,攻击者也无法获得完整的XRES来伪装成UE攻击其他网络。这是最小知识原则*的体现。

Q5: SQN同步失败是怎么回事?

A: SQN(序列号)用于防止重放攻击。USIM和UDM各自维护一个SQN计数器。如果UE长期关机或USIM被换到其他设备,USIM中的SQN可能落后于UDM的SQN。当UE收到一个SQN比自己记录的更旧的AUTN时,会认为可能是重放攻击并拒绝认证,同时发起同步失败流程。UDM收到同步失败后会重新同步SQN。


参考来源

  1. 一文搞懂AKA鉴权过程 - 知乎 — 5G AKA完整鉴权流程图解
  2. 5G SUCI加密机制全解析 - CSDN — SUPI/SUCI隐私保护机制详解
  3. Introduction to 5G AKA - free5GC — 开源5G核心网项目的AKA原理教程
  4. LTE Security I: Concept and Authentication - NETMANIAS — 4G安全基础与认证流程
  5. 5G NR Security: Key Derivation and Termination Points - RF Wireless World — 5G密钥派生层级与终止点详解

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入