为什么你的手机连上基站后,别人截获信号也看不到你的微信内容?为什么换一张SIM卡就变成了另一个人?这背后是一套精密的"身份验证 + 密钥推导"体系——从SIM卡里藏着的那个永久密钥K开始,逐级衍生出加密通话、保护数据的全部秘密。
想象你住进一家酒店:
4G/5G网络的安全机制本质上就是这三步。只是"前台"变成了核心网的AUSF/UDM,"房卡"变成了一串128位的密钥,而"刷门卡"变成了每条信令和数据的加密解密。
4G和5G的安全架构有一个核心区别:网络功能的拆分方式不同。
| 维度 | 4G EPS-AKA | 5G-AKA / EAP-AKA' |
|---|---|---|
| 认证服务器 | MME(合一功能) | AUSF(独立网元) |
| 密钥锚点 | HSS生成KASME | UDM生成KAUSF → AUSF派生KSEAF |
| 归属网络验证 | 否(拜访网络MME验证) | 是(AUSF在归属网络验证) |
| 用户身份保护 | IMSI明文传输(大漏洞!) | SUCI加密传输(ECIES方案) |
| 服务网络绑定 | PLMN ID | SNN(Serving Network Name) |
| 二次认证 | 不支持 | 支持(EAP-AKA' 可扩展) |
下面这张图展示了5G安全架构中各功能实体的关系:
graph TB
UE["📱 UE<br/>(USIM + ME)"]
gNB["📡 gNB<br/>(基站)"]
AMF["🔐 AMF/SEAF<br/>(安全锚点)"]
AUSF["🔑 AUSF<br/>(认证服务器)"]
UDM["🗄️ UDM/ARPF<br/>(用户数据+密钥存储)"]
SIDF["🔓 SIDF<br/>(SUCI解密)"]
UE -->|1. Registration Request<br/>携带SUCI| AMF
AMF -->|2. Nausf_UEAuth| AUSF
AUSF -->|3. Nudm_UEAuth| UDM
UDM -->|4. 5G Auth Vector| AUSF
AUSF -->|5. RAND+AUTN+HXRES*| AMF
AMF -->|6. Auth Request| UE
UE -->|7. RES*| AMF
AMF -->|8. RES* → AUSF| AUSF
AUSF -->|9. KSEAF + 成功| AMF
UDM -.->|SUCI解密请求| SIDF
style UE fill:#4CAF50,color:#fff
style AUSF fill:#FF9800,color:#fff
style UDM fill:#2196F3,color:#fff
style AMF fill:#9C27B0,color:#fff
关键设计哲学:5G把认证验证权从拜访网络收回归属网络。为什么?因为在4G中,一个恶意伪造的基站可以骗过MME,因为它自己就是"裁判"——自己生成挑战、自己验证响应。5G让AUSF(归属网络)做最终裁决,拜访网络只是"传话人"。
5G支持两种主认证方式:5G-AKA 和 EAP-AKA'。两者目的相同(双向认证 + 密钥协商),但消息封装不同。以主流的5G-AKA为例:
sequenceDiagram
participant UE as UE/USIM
participant SEAF as AMF/SEAF
participant AUSF as AUSF
participant UDM as UDM/ARPF
UE->>SEAF: Registration Request<br/>(携带SUCI或5G-GUTI)
SEAF->>AUSF: Nausf_UEAuthentication_Authenticate<br/>SUCI/SUPI + SNN
AUSF->>UDM: Nudm_UEAuthentication_Get<br/>SUPI + SNN
Note over UDM: ① 用永久密钥K生成5G AV<br/>② 计算RAND, AUTN<br/>③ 推导XRES*, KAUSF
UDM-->>AUSF: 5G Authentication Vector<br/>RAND + AUTN + XRES* + KAUSF
Note over AUSF: ④ 从KAUSF推导KSEAF<br/>⑤ 计算HXRES*
AUSF-->>SEAF: RAND + AUTN + HXRES*
SEAF-->>UE: Authentication Request<br/>RAND + AUTN
Note over UE: ⑥ USIM用K验证AUTN<br/>⑦ 验证通过→计算RES*
UE-->>SEAF: Authentication Response<br/>RES*
Note over SEAF: ⑧ H(RES*) vs HXRES*<br/>初步验证
SEAF->>AUSF: Nausf_UEAuthentication_Confirm<br/>RES*
Note over AUSF: ⑨ XRES* vs RES*<br/>最终验证
AUSF-->>SEAF: 认证成功 + KSEAF
Note over SEAF: ⑩ 从KSEAF推导KAMF
SEAF-->>UE: Security Mode Command<br/>(NAS安全上下文建立)
UE-->>SEAF: Security Mode Complete
步骤①②③ — UDM/ARPF生成认证向量
UDM里存着每个用户的永久密钥 K(128位或256位),这是所有安全的"根"。当收到认证请求时:
核心公式(简化表示):
$$CK \parallel IK = KDF(K, RAND)$$
$$KAUSF = KDF(CK \parallel IK, \text{SQN} \oplus AK, \text{SN_id})$$
步骤⑥⑦ — UE验证网络(关键!这是"双向认证"的核心)
UE收到RAND和AUTN后,USIM芯片内部:
步骤⑧⑨ — 网络验证UE
这里体现了5G相对4G的关键改进:
为什么要两级验证?这是安全分层的思想:SEAF在拜访网络,可能被攻破;但真正的密钥KSEAF只有AUSF验证通过后才发放。即使SEAF被攻破,攻击者拿不到KSEAF也无法解密后续通信。
这是5G安全最精妙的部分——一个根密钥K如何逐级派生出保护不同层次、不同场景的全部密钥。
graph TD
K["🗝️ K<br/>永久根密钥<br/>(USIM + UDM各存一份)"]
K -->|"KDF(K, RAND)"| CK_IK["CK + IK<br/>加密密钥 + 完整性密钥"]
CK_IK -->|"KDF(CK‖IK, SQN⊕AK, SN_id)"| KAUSF["🔑 KAUSF<br/>AUSF密钥"]
KAUSF -->|"KDF(KAUSF, SNN, SUPI)"| KSEAF["🔒 KSEAF<br/>安全锚点密钥<br/>(存于SEAF)"]
KSEAF -->|"KDF(KSEAF, SNN, SUPI)"| KAMF["🔐 KAMF<br/>AMF密钥<br/>(NAS安全根)"]
KAMF -->|"KDF(KAMF, ...)"| KNASint["📝 KNAS-int<br/>NAS完整性密钥"]
KAMF -->|"KDF(KAMF, ...)"| KNASenc["🔒 KNAS-enc<br/>NAS加密密钥"]
KAMF -->|"KDF(KAMF, ...)"| KgNB["📡 KgNB<br/>gNB密钥<br/>(AS安全根)"]
KgNB -->|"KDF(KgNB, ...)"| KRRCint["📝 KRRC-int<br/>RRC完整性密钥"]
KgNB -->|"KDF(KgNB, ...)"| KRRCenc["🔒 KRRC-enc<br/>RRC加密密钥"]
KgNB -->|"KDF(KgNB, ...)"| KUPenc["🔒 KUP-enc<br/>用户面加密密钥"]
style K fill:#D32F2F,color:#fff
style KSEAF fill:#FF9800,color:#fff
style KAMF fill:#9C27B0,color:#fff
style KgNB fill:#4CAF50,color:#fff
| 密钥 | 存储位置 | 保护对象 | 密钥长度 |
|---|---|---|---|
| K | USIM + UDM | 根密钥,永远不离开安全存储 | 128/256 bit |
| KAUSF | USIM + AUSF | 派生KSEAF的中间密钥 | 256 bit |
| KSEAF | SEAF(AMF) | 安全锚点,跨AMF移动时推演新密钥 | 256 bit |
| KAMF | AMF + UE | NAS层安全的根密钥 | 256 bit |
| KNAS-int | AMF + UE | NAS信令完整性保护(防篡改) | 128/256 bit |
| KNAS-enc | AMF + UE | NAS信令加密(防窃听) | 128/256 bit |
| KgNB | gNB + UE | 空口AS层安全的根密钥 | 256 bit |
| KRRC-int | gNB + UE | RRC信令完整性保护 | 128/256 bit |
| KRRC-enc | gNB + UE | RRC信令加密 | 128/256 bit |
| KUP-enc | gNB + UE | 用户面数据加密(你的微信、网页等) | 128/256 bit |
前向安全(Forward Security):如果某一层的密钥被破解,不应该能反推上一层。密钥推导函数(KDF)是单向函数——知道KAMF无法反推出KSEAF,就像知道房卡号猜不出前台的主密码。
最小权限原则:gNB只需要KgNB及其子密钥,不需要知道KSEAF。即使基站被攻破,攻击者只能解密当前空口数据,无法冒充用户发起其他会话。
移动性密钥隔离:UE从AMF1切换到AMF2时,用KSEAF重新推导新的KAMF',而不是把KAMF在AMF之间传递。这避免了"一个AMF被攻破,殃及所有AMF"的级联风险。
4G时代有一个众所周知的安全漏洞:IMSI Catcher(伪基站)攻击。攻击者只需伪装成基站,发送一条"Identity Request",手机就会老老实实把IMSI明文报上来。5G用SUCI彻底解决了这个问题。
| 字段 | 含义 | 类比 |
|---|---|---|
| SUPI | 永久用户标识(相当于IMSI) | 你的身份证号 |
| SUCI | 加密后的用户标识 | 身份证号放进信封里密封 |
| 5G-GUTI | 临时标识(AMF分配) | 酒店房卡号(不暴露身份) |
SUCI的加密采用 ECIES(Elliptic Curve Integrated Encryption Scheme) 方案:
$$\text{SUCI} = \text{MCC} \parallel \text{MNC} \parallel \text{Routing Indicator} \parallel \text{Protection Scheme ID} \parallel \text{Home Network Public Key ID} \parallel \text{Ciphertext}(SUPI)$$
工作原理(用锁和钥匙类比):
注意:SUCI加密是可选的!运营商可以选择"空方案"(null-scheme),此时SUCI就是SUPI的明文。这也是为什么业界一直在推动运营商部署ECIES方案。根据公开资料,韩国SK Telecom在2023年已实现99%的SUCI加密采用率。
5G的安全分两层,就像酒店的"大门锁"和"房间锁":
| 安全层 | 名称 | 保护范围 | 终止点 |
|---|---|---|---|
| NAS安全 | Non-Access Stratum Security | UE ↔ AMF之间的信令 | AMF(核心网) |
| AS安全 | Access Stratum Security | UE ↔ gNB之间的信令和数据 | gNB(无线接入网) |
graph LR
subgraph "UE"
NAS_UE["NAS层"]
AS_UE["AS层<br/>(RRC/PDCP)"]
end
subgraph "gNB"
AS_gNB["AS层"]
end
subgraph "核心网"
AMF_NW["AMF<br/>(NAS终止)"]
end
NAS_UE <-->|"KNAS-enc<br/>KNAS-int<br/>NAS信令加密+完整性"| AMF_NW
AS_UE <-->|"KRRC-enc<br/>KRRC-int<br/>KUP-enc<br/>信令+数据加密"| AS_gNB
style NAS_UE fill:#9C27B0,color:#fff
style AS_UE fill:#4CAF50,color:#fff
style AMF_NW fill:#9C27B0,color:#fff
style AS_gNB fill:#4CAF50,color:#fff
纵深防御:假设gNB被攻破(物理入侵、软件漏洞),攻击者能解密AS层数据,但NAS信令仍然加密保护。这意味着攻击者无法伪造NAS层的注册/去注册/会话管理等关键信令。
用户面特别设计:用户面数据(你的业务数据)只在AS层加密(KUP-enc),NAS层不加密用户面数据。为什么?因为用户面数据量巨大,如果在NAS层再加密一遍,AMF会成为性能瓶颈。AS层加密由gNB处理,更加高效。
完整性保护的区别: - NAS信令:必须完整性保护 + 加密 - RRC信令:必须完整性保护 + 加密 - 用户面数据:加密必须,完整性可选(Rel-15)
这意味着理论上用户面数据可能被篡改而不被发现(只加密不校验)。但从Rel-16开始,3GPP增强了用户面完整性保护的要求。
要真正理解5G为什么这样设计,必须先看4G做了什么、有什么缺陷。
UE → MME: Attach Request (IMSI)
MME → HSS: Authentication Information Request (IMSI)
HSS → MME: EPS AV (RAND + AUTN + XRES + KASME)
MME → UE: Authentication Request (RAND + AUTN)
UE → MME: Authentication Response (RES)
MME: 验证 RES vs XRES
缺陷1:IMSI明文暴露
手机初始附着时,可能被要求发送IMSI明文。伪基站正是利用这一点,伪装成网络向UE索取IMSI。
缺陷2:归属网络不参与验证
MME(拜访网络)自己做最终验证。这意味着一个被攻破的MME可以通过伪造验证结果来欺骗整个系统。
缺陷3:缺少服务网络绑定
4G的KASME推导虽然绑定了PLMN ID,但粒度较粗,无法像5G的SNN那样精确标识服务网络。
| 4G缺陷 | 5G修复方案 |
|---|---|
| IMSI明文暴露 | SUCI加密(ECIES) |
| 归属网络不验证 | AUSF在归属网络做最终验证 |
| 服务网络绑定弱 | SNN绑定到密钥推导 |
| 无二次认证支持 | EAP-AKA'支持可扩展二次认证 |
| 用户面完整性弱 | Rel-16增强UP完整性保护 |
5G除了原生的5G-AKA,还支持 EAP-AKA'(EAP-AKA Prime)。为什么需要两套?
| 场景 | 认证方式 |
|---|---|
| 普通手机(USIM卡) | 5G-AKA(主流) |
| 固定无线接入(FWA) | EAP-AKA' |
| 非3GPP接入(Wi-Fi→5G) | EAP-AKA' |
| 企业专网二次认证 | EAP-AKA' |
EAP-AKA'的优势:它基于IETF的EAP框架,天然支持与外部认证服务器(如RADIUS/AAA)交互。这意味着运营商可以方便地对接企业AAA服务器做二次认证,或者支持新的认证方式(如EAP-TLS证书认证)。
5G-AKA: 直接封装在5G NAS消息中
EAP-AKA': 封装在EAP消息中,再嵌入5G NAS消息
┌─────────────────────────────┐
│ 5G NAS消息 │
│ ┌─────────────────────┐ │
│ │ EAP消息(仅EAP-AKA')│ │
│ │ ┌───────────────┐ │ │
│ │ │ AKA参数 │ │ │
│ │ └───────────────┘ │ │
│ └─────────────────────┘ │
└─────────────────────────────┘
现象:注册成功但Security Mode Command失败
排查思路: - 检查UE和AMF是否支持相同的加密/完整性算法(NEA系列/NIA系列) - 检查KAMF是否正确推导(SUPI、SNN参数是否一致) - 用Wireshark抓NAS层Security Mode Command/Complete,看选定的算法
现象:Registration Request中SUCI为null-scheme(明文SUPI)
排查: - 检查USIM是否预置了归属网络公钥 - 检查USIM的SUCI计算配置(Protection Scheme ID应为0x01或0x02) - SIDF解密是否正常(UDM日志中查看解密结果)
现象:Xn切换后数据面中断
排查: - 确认源gNB是否正确推导了目标gNB的密钥 - 检查NH(Next Hop)参数是否正确传递 - 验证密钥刷新计数器是否同步
| 误解 | 事实 |
|---|---|
| "5G加密更安全所以不需要VPN" | 5G只加密空口段(UE→gNB),核心网回传段需要额外保护 |
| "SUCI完全防止了伪基站" | SUCI只保护身份隐私,不防止你连接到伪基站本身 |
| "5G-AKA不可能被攻击" | 理论分析发现5G-AKA仍存在"活动检测攻击"(确认某SUPI是否在线) |
| "所有5G网络都启用了SUCI加密" | 取决于运营商配置,null-scheme仍是合法选项 |
| 算法标识 | 名称 | 类型 | 强度 |
|---|---|---|---|
| NEA0 | 空加密 | 加密 | 无保护 |
| NEA1 | 128-EEA1(SNOW 3G) | 加密 | 128 bit |
| NEA2 | 128-EEA2(AES) | 加密 | 128 bit |
| NEA3 | 128-EEA3(ZUC) | 加密 | 128 bit |
| NIA0 | 空完整性 | 完整性 | 无保护 |
| NIA1 | 128-EIA1(SNOW 3G) | 完整性 | 128 bit |
| NIA2 | 128-EIA2(AES) | 完整性 | 128 bit |
| NIA3 | 128-EIA3(ZUC) | 完整性 | 128 bit |
注意:NEA0/NIA0(空算法)在紧急呼叫场景下允许使用,但在正常商业网络中应禁用。
把认证、密钥推导、安全模式建立串起来看:
flowchart TD
A["📱 UE发起注册<br/>(携带SUCI)"] --> B["📡 gNB转发<br/>至AMF"]
B --> C{"AMF/SEAF<br/>已有安全上下文?"}
C -->|否| D["🔐 触发主认证<br/>5G-AKA或EAP-AKA'"]
C -->|是| E["✅ 使用已有KAMF"]
D --> F["🗄️ UDM生成5G AV<br/>KAUSF → KSEAF"]
F --> G["🔑 AUSF验证UE响应<br/>→ 下发KSEAF"]
G --> H["🔒 SEAF推导KAMF"]
H --> I["📝 NAS Security Mode<br/>Command/Complete<br/>(建立NAS安全)"]
E --> I
I --> J["📡 AS Security Mode<br/>Command/Complete<br/>(建立AS安全)"]
J --> K["✅ 安全通信建立<br/>NAS加密+完整性 ✓<br/>RRC加密+完整性 ✓<br/>用户面加密 ✓"]
style A fill:#4CAF50,color:#fff
style F fill:#2196F3,color:#fff
style G fill:#FF9800,color:#fff
style K fill:#4CAF50,color:#fff
Q: 5G-AKA和EAP-AKA'能同时使用吗? A: 不能。UE在注册时选择一种方式。选择逻辑通常基于:USIM配置的认证方法指示、网络能力广播信息、以及接入类型(3GPP接入倾向5G-AKA,非3GPP接入倾向EAP-AKA')。但在不同注册流程中可以切换——比如3GPP接入用5G-AKA,Wi-Fi接入用EAP-AKA'。
Q: KSEAF和KAMF的推导都用到了SNN和SUPI,为什么不直接从KSEAF跳到NAS密钥? A: 多一层KAMF是为了支持移动性。当UE从AMF1移动到AMF2时,KSEAF不变(锚点稳定),但需要为新AMF推导新的KAMF'。如果直接用KSEAF做NAS加密,切换AMF就必须更换KSEAF,导致整个密钥链都要刷新,增加复杂度和风险。
Q: 用户面数据为什么不做NAS层完整性保护? A: 两个原因:(1) 性能——用户面数据量大,NAS层完整性校验会给AMF带来巨大计算负担;(2) 架构——用户面数据路径是UE→gNB→UPF,不经过AMF,NAS层加不进去。AS层的PDCP协议负责用户面加密和(可选的)完整性保护。
Q: 伪基站攻击在5G中完全消失了吗? A: 没有完全消失,但攻击面大幅缩小。5G的SUCI保护了身份隐私(伪基站抓不到IMSI/SUPI),但攻击者仍可通过以下方式造成干扰:①强制UE降级到4G/3G(如果运营商允许)再实施IMSI Catcher攻击;②利用SIB广播伪造紧急呼叫区域诱导UE发送明文标识;③进行拒绝服务攻击(拒绝UE的注册请求)。5G安全是"显著改善"而非"彻底消除"。
Q: 如果USIM卡被复制(克隆SIM),5G安全还能起作用吗? A: 如果攻击者获取了永久密钥K(通过物理克隆USIM),5G-AKA的所有安全机制都会失效——因为认证的根基就是"只有合法USIM和UDM持有K"。这正是为什么SIM卡的物理安全如此重要。5G引入的SUCI至少可以防止被克隆的卡暴露用户身份,但无法阻止克隆卡通过认证。运营商通常通过"同一SUPI只能有一个活跃会话"的策略来检测克隆卡。
本文由「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 等场景全覆盖。
