想象你走进一家酒店。前台需要确认两件事:你是谁(认证)和你能进哪些房间(授权)。前台给你一张房卡(密钥),这张卡不是万能的——它只能开你的房门、刷电梯、进健身房,但打不开别人的房间。
5G网络的安全机制与此异曲同工,但复杂程度远超酒店入住:
本文将系统拆解这套安全体系的设计原理,帮助你理解"5G为什么这样设计安全机制"。
在4G网络中,用户的永久标识IMSI在特定场景下会以明文形式在空口传输。攻击者可以使用一种叫"IMSI Catcher"(也叫伪基站)的设备伪装成合法基站,迫使手机暴露IMSI。这就像你的身份证号码在街头大声喊出来——任何人都可以听到并记录。
这种攻击的危害不仅是隐私泄露。攻击者可以: - 追踪用户的物理位置 - 关联用户的通信行为 - 为后续攻击收集情报
5G对此做了根本性改造。用户的永久标识改名为SUPI(Subscriber Permanent Identifier),格式上类似IMSI(MCC+MSIN),但传输方式完全不同。
5G引入了SUCI(Subscriber Concealed Identifier)机制,核心思想是:
用公钥加密把SUPI"装进信封",只有归属网络能"拆信封"。
具体过程使用ECIES(Elliptic Curve Integrated Encryption Scheme,椭圆曲线集成加密方案):
SUCI = SUPI类型(0) + 归属网络PLMN ID + 加密方案标识 + 归属网络公钥标识
+ 加密后的MSIN部分 + MAC标签
| 字段 | 说明 | 类比 |
|---|---|---|
| SUPI类型 | 0=IMSI格式 | 信封上的信件类型标记 |
| 归属网络PLMN | MCC+MNC | 收件人地址(哪家运营商) |
| 公钥标识 | 指定使用哪个公钥 | 指定用哪把锁 |
| 加密MSIN | 用ECIES加密后的用户号 | 锁在信封里的真实内容 |
| MAC标签 | 消息认证码 | 防篡改封口 |
sequenceDiagram
participant UE as 手机(USIM)
participant gNB as 基站
participant AMF as AMF/SEAF
participant SIDF as SIDF(归属网)
participant UDM as UDM/ARPF
Note over UE: 1. 从USIM读取归属网络公钥
UE->>gNB: Registration Request (SUCI)
Note over gNB: 基站只能看到SUCI<br/>无法解密真实身份
gNB->>AMF: 转发SUCI
AMF->>SIDF: SUCI转SUPI请求
Note over SIDF: 2. 用归属网络私钥解密SUCI
SIDF->>SIDF: ECIES解密 → 得到SUPI
SIDF->>UDM: SUPI
Note over UDM: 3. 用SUPI查找用户数据<br/>生成认证向量
UDM-->>AMF: 认证数据(含SUPI)
为什么用椭圆曲线而非RSA? 椭圆曲线在同等安全强度下密钥更短(256位ECC ≈ 3072位RSA),计算量更小,更适合手机终端的电池和算力约束。
一个关键设计细节: 5G-GUTI(临时标识)在注册成功后由AMF分配,后续通信优先使用5G-GUTI而非SUCI,进一步减少身份暴露机会。这就像酒店入住后给你房卡,此后不再需要出示身份证。
AKA(Authentication and Key Agreement,认证与密钥协商)是移动通信最核心的安全协议。从3G时代(UMTS AKA)到4G(EPS-AKA),再到5G(5G-AKA),它的核心思想始终不变:
网络验证手机是真的(防伪终端),手机验证网络是真的(防伪基站),然后双方协商出加密密钥。
5G-AKA相比4G的最重要改进是引入了SEAF(Security Anchor Function)锚点概念和归属网络确认机制,让安全性从"访问网络说了算"升级为"归属网络最终确认"。
sequenceDiagram
participant UE as 手机(USIM)
participant SEAF as SEAF(AMF)
participant AUSF as AUSF(归属网)
participant UDM as UDM/ARPF
rect rgb(240, 248, 255)
Note over UE,UDM: 第一阶段:认证向量生成
SEAF->>AUSF: Nausf_UEAuthentication Authenticate<br/>(SUCI/SUPI, SN-Name)
AUSF->>UDM: Nudm_UEAuthentication_Get<br/>(SUPI, SN-Name)
Note over UDM: 生成认证向量AV:<br/>RAND(随机数) + AUTN(认证令牌)<br/>+ XRES*(期望响应) + K_AUSF
UDM-->>AUSF: RAND, AUTN, XRES*, K_AUSF
Note over AUSF: 从XRES*计算HXRES*<br/>从K_AUSF派生K_SEAF
AUSF-->>SEAF: RAND, AUTN, HXRES*, K_SEAF
end
rect rgb(255, 248, 240)
Note over UE,SEAF: 第二阶段:空口认证挑战
SEAF->>UE: Authentication Request<br/>(RAND, AUTN, ngKSI)
Note over UE: USIM用长期密钥K验证AUTN<br/>计算RES*<br/>派生K_AUSF→K_SEAF→K_AMF
UE-->>SEAF: Authentication Response (RES*)
Note over SEAF: 从RES*计算HRES*<br/>比较HRES* vs HXRES*
end
rect rgb(240, 255, 240)
Note over SEAF,UDM: 第三阶段:归属网络确认
SEAF->>AUSF: Nausf_UEAuthentication Confirm<br/>(RES*)
Note over AUSF: 比较RES* vs XRES*
alt 认证成功
AUSF-->>SEAF: Auth Success + K_SEAF(确认)
SEAF->>UE: Security Mode Command<br/>(加密算法, NAS安全上下文)
UE-->>SEAF: Security Mode Complete
else 认证失败
AUSF-->>SEAF: Auth Failure
end
end
阶段一:认证向量生成(UDM主导)
UDM/ARPF存储着用户的长期密钥K(在USIM中也有相同的K)。UDM生成一组认证向量(Authentication Vector),其中:
| 参数 | 全称 | 作用 | 生成方 |
|---|---|---|---|
| RAND | Random Challenge | 网络给手机的随机数,防止重放攻击 | UDM |
| AUTN | Authentication Token | 包含序列号SQN和MAC,用于手机验证网络真实性 | UDM |
| XRES* | Expected Response* | 网络期望手机返回的响应值(用于验证手机) | UDM |
| K_AUSF | Key for AUSF | AUSF层级的密钥,用于后续密钥派生 | UDM |
核心密码学运算:
$$AUTN = SQN \oplus AK | | AMF | | MAC$$
其中AK(Anonymity Key)用于隐藏序列号SQN,MAC(Message Authentication Code)用长期密钥K计算,防止篡改。SQN是一个递增计数器,防止攻击者重放旧的认证向量。
阶段二:空口认证挑战(SEAF验证)
手机收到RAND和AUTN后,USIM芯片执行以下操作:
SEAF收到RES后,先计算HRES(对RES做哈希),与之前AUSF提供的HXRES比对。这步是本地快速验证,不用再问归属网络。
阶段三:归属网络最终确认(AUSF验证)
这是5G相比4G的关键增强。SEAF把RES转发给AUSF,AUSF用自己的XRES做精确比对。只有AUSF确认通过,认证才算真正成功。
为什么要设计两轮验证(SEAF+AUSF)?
这是一种"快速通道+终极确认"的双保险设计。SEAF的HXRES比对可以快速发现明显的伪造响应,减少对归属网络的消息交互延迟。AUSF的XRES精确比对则作为最后的安全防线。好比银行转账:柜员先做一个初步审核,后台再做最终复核。
5G不仅支持基站接入(3GPP接入),还支持WiFi等非3GPP接入。通过WiFi接入时,认证协议使用EAP-AKA'(读作EAP-AKA-Prime)。
| 对比项 | 5G-AKA | EAP-AKA' |
|---|---|---|
| 适用接入 | 3GPP(基站) | 非3GPP(WiFi等) |
| 协议框架 | 3GPP专有流程 | EAP(Extensible Authentication Protocol)框架 |
| 认证角色 | SEAF与AUSF直接交互 | AUSF作为EAP Server,UE作为EAP Peer |
| 密钥绑定 | 绑定服务网络名称SN-Name | 绑定接入网络标识 |
| 消息轮次 | 通常1轮(1次挑战-响应) | 通常2轮(EAP-Request/Response多轮交换) |
EAP-AKA'相比传统EAP-AKA,在密钥派生中引入了接入网络标识绑定:
$$CK' | | IK' = KDF_{EAP-AKA'}(CK | | IK, \text{access network identity})$$
这意味着即使攻击者拿到了CK和IK,没有正确的接入网络标识也无法派生出正确的密钥。这就像给钥匙加了一个"锁匠编号"——同一把钥匙坯,不同编号刻出来的齿形不同。
sequenceDiagram
participant UE as 手机
participant N3IWF as N3IWF/TNGF
participant AMF as AMF/SEAF
participant AUSF as AUSF
UE->>N3IWF: IKEv2/EAPOL 开始
N3IWF->>UE: EAP-Request/Identity
UE-->>N3IWF: EAP-Response/Identity (SUCI)
N3IWF->>AMF: 转发认证请求
AMF->>AUSF: Nausf_UEAuthentication Request
Note over AUSF: 生成EAP-AKA'挑战
AUSF-->>AMF: EAP-Request/AKA'-Challenge
AMF-->>N3IWF: 转发
N3IWF-->>UE: EAP-Request/AKA'-Challenge<br/>(RAND, AUTN, MAC)
Note over UE: 验证AUTN,计算RES*
UE->>N3IWF: EAP-Response/AKA'-Challenge (RES*)
N3IWF->>AMF: 转发
AMF->>AUSF: Nausf_UEAuthentication Confirm (RES*)
Note over AUSF: 验证RES*,派生K_SEAF
AUSF-->>AMF: Success + K_SEAF
AMF-->>N3IWF: EAP-Success
N3IWF-->>UE: EAP-Success
Note over UE,N3IWF: IPSec隧道建立完成<br/>安全通信开始
设计密钥层级而非使用单一密钥,出于三个安全原则:
K(永久密钥,存储在USIM和UDM)
│
▼
┌──────────┐
│ K_AUSF │ ← AUSF层级密钥
└────┬─────┘
│ KDF(FC=0x6A)
▼
┌──────────┐
│ K_SEAF │ ← 安全锚点密钥(服务网络层)
└────┬─────┘
│ KDF(FC=0x6F)
▼
┌──────────┐
│ K_AMF │ ← AMF层级密钥
└─┬────┬───┘
│ │
KDF(0x69) │ │ KDF(0x69)
▼ ▼
┌──────┐ ┌──────┐
│K_NAS │ │K_gNB │ ← 基站层级密钥
│enc │ │ │
├──────┤ └──┬───┘
│K_NAS │ │ KDF(0x6E)
│int │ ▼
└──────┘ ┌──────┐
│K_RRC │ ← RRC信令保护
│enc │
├──────┤
│K_RRC │
│int │
├──────┤
│K_UP │ ← 用户面数据保护
│enc │
├──────┤
│K_UP │
│int │
└──────┘
| 密钥 | 保护对象 | 派生位置 | 生命周期 | 更新触发 |
|---|---|---|---|---|
| K | 不直接使用,仅用于派生 | USIM/UDM | 永久 | 换卡/运营商务必 |
| K_AUSF | AUSF层级中间密钥 | UE/UDM | 一次认证 | 每次主认证 |
| K_SEAF | 服务网络锚点 | UE/AUSF→SEAF | 一次认证 | 跨PLMN切换 |
| K_AMF | NAS信令保护 | UE/AMF | 注册期间 | AMF变更 |
| K_NAS-enc | NAS信令加密 | UE/AMF | 注册期间 | 算法协商 |
| K_NAS-int | NAS信令完整性保护 | UE/AMF | 注册期间 | 算法协商 |
| K_gNB | 空口密钥基础 | UE/gNB | 连接期间 | 基站切换 |
| K_RRC-enc/int | RRC信令保护 | UE/gNB | 连接期间 | 基站切换 |
| K_UP-enc/int | 用户面数据保护 | UE/gNB | 连接期间 | 基站切换 |
所有密钥派生使用统一的KDF(Key Derivation Function),基于HMAC-SHA-256:
$$K_{derived} = \text{HMAC-SHA-256}(K_{input}, FC | P_0 | L_0 | P_1 | L_1 | ...)$$
其中: - FC(Function Code):1字节,标识派生目的(如0x6A派生K_SEAF,0x6F派生K_AMF) - P₀, P₁, ...:参数(如SN-Name、算法标识等) - L₀, L₁, ...:对应参数的长度
为什么用HMAC-SHA-256而不是直接SHA-256? HMAC利用了密钥作为输入,确保只有持有上层密钥的实体才能派生下层密钥。直接哈希则没有这个保证。
这是工程师在实际网络中经常遇到的场景。
水平派生(Horizontal Derivation): UE在同一AMF下从源gNB切换到目标gNB:
$$K_{gNB}^{target} = KDF(K_{gNB}^{source}, \text{target PCI} | ...)$$
源gNB把必要的参数传给目标gNB,目标gNB直接派生新密钥。无需AMF参与,切换速度快。
垂直派生(Vertical Derivation): AMF变更或需要刷新K_AMF时,从K_SEAF重新派生整个密钥链:
$$K_{AMF}^{new} = KDF(K_{SEAF}, \text{new parameters})$$
然后从新的K_AMF重新派生所有下层密钥。这是更重的操作,但安全性更高。
graph LR
subgraph 垂直派生
K_SEAF1[K_SEAF] --> K_AMF1[K_AMF] --> KgNB1[K_gNB] --> KRRC1[K_RRC]
end
subgraph 水平派生
KgNB1[K_gNB 源] --> KgNB2[K_gNB 目标] --> KRRC2[K_RRC 新]
end
style K_SEAF1 fill:#ff9999
style K_AMF1 fill:#ffcc99
style KgNB1 fill:#ffff99
style KgNB2 fill:#99ff99
style KRRC2 fill:#99ccff
主认证验证的是"你是运营商的合法用户"。但在某些场景下,企业网络或特定数据服务还需要验证"你有权访问我的数据网络"——这就是二次认证(Secondary Authentication)。
典型场景: - 企业专线:员工手机接入企业内网时,企业AAA服务器需要单独验证 - 切片场景:特定网络切片可能需要额外的身份验证 - 运维场景:某些高安全级别的数据网络要求独立认证
二次认证基于EAP框架,由SMF(Session Management Function)充当EAP Authenticator,对接外部DN-AAA服务器:
UE ←→ N1 NAS信令 ←→ SMF ←→ RADIUS/Diameter ←→ DN-AAA Server
(EAP over NAS) (EAP over RADIUS/Diameter)
支持的EAP方法包括:EAP-TLS(证书认证)、EAP-TTLS(隧道TLS)、EAP-AKA(复用SIM卡密钥)等。
| 安全特性 | 4G (LTE) | 5G (NR) |
|---|---|---|
| 永久标识保护 | IMSI可能明文传输 | SUPI始终加密为SUCI传输 |
| 伪基站防护 | 手机无法验证网络真伪 | 手机可验证网络真伪(增强的AUTN验证) |
| 安全锚点 | MME(单一实体) | SEAF+AUSF(分离架构,归属网络参与确认) |
| 密钥层级 | K→K_ASME→K_eNB→会话密钥 | K→K_AUSF→K_SEAF→K_AMF→K_gNB→会话密钥(多一层) |
| 非3GPP接入安全 | 可选,方案不统一 | 标准化EAP-AKA',统一框架 |
| 二次认证 | 无标准方案 | SMF+DN-AAA标准化流程 |
| 用户面完整性保护 | 仅加密,无完整性保护 | 同时支持加密和完整性保护 |
| 漫游安全 | 漫游场景下安全较弱 | 归属网络全程参与认证确认 |
| 隐私保护 | 较弱(GUTI可被追踪) | 增强(SUCI+5G-GUTI双重保护) |
在现网调试中,5G认证失败通常出现在以下几种场景:
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| AUTN验证失败 | SQN不同步(USIM与UDM的SQN不一致) | 检查UDM中用户的SQN状态,必要时重置 |
| MAC验证失败 | 密钥K不匹配(USIM与UDM存储的K不同) | 对比HSS/UDM和USIM中的Ki |
| 网络拒绝认证 | 归属网络不认可服务网络(SN-Name不匹配) | 检查AMF配置的PLMN ID和SN-Name |
| 反复认证不通过 | USIM卡数据异常或未开通5G服务 | 换卡测试,检查用户签约数据 |
| Security Mode Command失败 | 加密算法协商不匹配 | 检查UE和AMF的算法优先级列表 |
分析5G认证问题时,重点关注以下信令消息:
陷阱1:SUCI解密失败 当SIDF无法解密SUCI时(公钥不匹配或ECIES参数错误),会导致整个注册流程卡在第一步。检查归属网络公钥是否正确配置在USIM和UDM中。
陷阱2:跨PLMN漫游认证 漫游场景下,访问网络的SEAF和归属网络的AUSF之间需要正确配置N32接口安全(N32安全网关)。如果N32安全上下文建立失败,认证向量无法传输。
陷阱3:混淆5G-AKA和EAP-AKA' 3GPP接入用5G-AKA,非3GPP接入用EAP-AKA'。两者消息格式不同,抓包时不要混用分析工具。5G-AKA是NAS层直接承载,EAP-AKA'是EAP框架承载。
5G定义了三种加密算法(NEA = 5G Encryption Algorithm)和三种完整性保护算法(NIA = 5G Integrity Algorithm):
| 算法标识 | 名称 | 类型 | 说明 |
|---|---|---|---|
| NEA0/NIA0 | 空算法 | 无保护 | 仅用于紧急呼叫等特殊场景 |
| NEA1/NIA1 | 128-EEA1/128-EIA1 | SNOW 3G基于 | 沿用4G算法 |
| NEA2/NIA2 | 128-EEA2/128-EIA2 | AES-CTR/CMAC | 沿用4G算法,最广泛部署 |
| NEA3/NIA3 | 128-EEA3/128-EIA3 | ZUC祖冲之算法 | 中国国密算法 |
算法选择在Security Mode Command过程中由AMF决定(从UE支持的算法列表中选择优先级最高的匹配项)。
Q: SUCI加密后,伪基站还能获取用户身份吗?
A: 不能。SUCI使用归属网络的公钥加密,伪基站没有私钥无法解密。即使伪基站强制手机发送SUCI,它也只能看到加密后的密文,无法获取真实的SUPI。这正是5G相比4G在隐私保护上的核心进步。不过,如果攻击者能够长期收集同一个SUCI,理论上可以通过SUCI的固定头部(PLMN ID和公钥标识)进行有限追踪。因此5G还建议定期更换5G-GUTI来进一步增加追踪难度。
Q: 5G-AKA和EAP-AKA'能互相替代吗?
A: 不能。5G-AKA是3GPP接入的专用协议,消息通过NAS信令直接承载,效率更高。EAP-AKA'是EAP框架下的协议,适用于非3GPP接入(WiFi等),需要多轮EAP消息交换。两者在密钥派生中绑定的参数不同(SN-Name vs 接入网络标识),派生出的密钥也不同。
Q: 基站切换时需要重新做完整认证吗?
A: 通常不需要。同一AMF下的基站切换使用水平密钥派生,源gNB直接派生新密钥给目标gNB,整个过程不涉及AMF和AUSF。只有AMF变更时才需要垂直派生,从K_SEAF重新派生密钥链,但这也不需要完整的主认证流程(因为K_SEAF仍然有效)。
Q: 如果USIM卡被克隆,5G安全还能防护吗?
A: USIM克隆意味着长期密钥K泄露,这是5G-AKA无法防护的场景(因为AKA的安全性前提就是K的安全存储)。但5G通过其他机制增加克隆检测难度:SQN序列号机制可以检测两张"相同"卡同时在线的情况;UDM可以限制每个SUPI的并发注册数量。运营商层面还部署了异常行为检测系统来发现克隆卡的使用模式。
Q: 为什么5G新增了用户面完整性保护(4G只有加密)?
A: 这是一个重要的安全增强。4G只对用户面数据做加密,不做完整性保护。这意味着攻击者可以在不解密的情况下翻转密文中的某些比特(比特翻转攻击),导致接收方解密出被篡改的数据。5G新增K_UP-int(用户面完整性密钥),可以检测到任何数据篡改。这对工业控制、金融交易等高安全场景尤为重要。
本文由「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 等场景全覆盖。
