首页 › deep-tech › 空口安全激活:加密与完整性保护

空口安全激活:加密与完整性保护的双保险原理

前几轮我们讲过5G的密钥层级与鉴权流程——手机和网络如何通过SIM卡里的根密钥“验明正身”。但鉴权成功只是拿到了“入场券”,真正让整个空口进入安全状态,还差关键一步:安全激活。这一步决定了从哪个字节开始加密、用哪种算法、信令和数据分别怎么保护。它是无数工程师抓包时“看到一半密文”的根源,也是理解5G安全设计哲学的最佳切入点。

一、从一个寄快递的类比说起

假设你要寄一份重要合同:

所以要再加一道防线:在合同上盖一个只有你和收件人能做出的火漆印章。收件人验一下印章——对不上,哪怕内容只有一个标点被改过,也立刻拒收。这解决的是“防调包”,术语叫完整性保护。

5G空口的安全,正是由这一对“组合拳”构成:

安全服务 通俗目标 技术手段 防御的攻击
机密性保护(加密) 防偷看 序列密码/分组密码生成密钥流,与数据异或 空口窃听、 imei/imsi嗅探
完整性保护 防调包 消息认证码(MAC) 中间人篡改、比特翻转、重放

一个反直觉的事实:只有加密、没有完整性保护的通信,是可以被“定向篡改”的。下面解释为什么。

二、为什么加密防不住篡改?

5G空口的主流加密模式(如AES-CTR、SNOW 3G、ZUC)本质上都是流密码:用密钥生成一串和明文等长的密钥流,然后做异或:

$$C = P \oplus KS$$

其中 $C$ 是密文,$P$ 是明文,$KS$ 是密钥流。解密则是 $P = C \oplus KS$。

这个设计速度极快、适合硬件实现,但有一个数学上无法回避的性质——异或是可交换且“可定向操控”的。攻击者虽然不知道 $KS$,但如果他猜到密文某一段对应的明文(比如某个协议头部的固定字段),他可以把密文的对应比特翻转:

$$C' = C \oplus \Delta \implies P' = C' \oplus KS = P \oplus \Delta$$

也就是说,攻击者不认识密钥,却能精确地把明文中的某几位改成他想要的样子。比如把一条控制信令里的频率点、目标地址改成另一个值。密文解出来完全“合法”,接收端毫无异常。

这就是完整性保护必须独立存在的原因:加密让你看不懂,完整性保护让你改不了。二者缺一不可。

三、完整性保护的数学原理:MAC-I

完整性保护的核心是消息认证码(MAC)。发送端用一个只收发双方知道的密钥,对消息本身计算出一个短的“指纹”,附在消息后面:

$$\text{MAC-I} = \text{EIA}\big(K_{int},\ COUNT,\ BEARER,\ DIR,\ \text{Message}\big) \bmod 2^{32}$$

几个输入各有深意:

接收端用完全相同的输入重新计算一遍,得到 $XMAC$(期望值),与收到的 MAC-I 对比:

flowchart TD
    A["发送端:构造消息"] --> B["用密钥与COUNT等输入计算MAC-I"]
    B --> C["消息尾部附上MAC-I并发送"]
    C --> D["接收端:收到消息与MAC-I"]
    D --> E["用相同密钥与COUNT重算XMAC"]
    E --> F{"MAC-I 与 XMAC 一致吗"}
    F -->|一致| G{"COUNT 在有效窗口内吗"}
    G -->|在窗口内| H["接受消息 递交给上层"]
    G -->|不在窗口| I["判为重放 丢弃"]
    F -->|不一致| J["判为被篡改 丢弃并触发安全异常"]

注意一个细节:校验失败的消息会被直接丢弃,不会“降级”为不校验继续用。安全机制没有“宽容模式”——要么完整可信,要么整体作废。这个“全有或全无”的设计原则贯穿5G安全始终。

四、保护的三张“地图”:NAS、RRC与用户面

5G把需要保护的流量分成三个域,每个域有独立的密钥、独立的激活开关。这是理解安全激活的钥匙:

flowchart TD
    UE["UE 手机"] -->|NAS信令| AMF["AMF 核心网接入与移动管理"]
    UE -->|RRC信令| gNB["gNB 基站"]
    UE -->|用户面数据| UPF["UPF 用户面功能"]

    subgraph NASP ["NAS域保护 由AMF终结"]
        N1["非接入层信令加密+完整性"]
        N2["密钥派生自K_AMF 跨基站有效"]
    end

    subgraph ASP ["AS域保护 由gNB终结"]
        A1["RRC信令加密+完整性"]
        A2["用户面数据加密必选"]
        A3["用户面数据完整性可选 5G新增"]
    end

    AMF -.->|下发密钥与算法| gNB

三张“地图”的差异一目了然:

保护对象 加密 完整性保护 密钥锚点 特点
NAS信令(手机↔AMF) 必选 必选 $K_{AMF}$ 派生 跨基站、跨切换持续有效
RRC信令(手机↔基站) 必选 必选 $K_{gNB}$ 派生 只在当前连接内有效
用户面数据(手机↔UPF) 必选 可选(5G新增) $K_{gNB}$ 派生 由网络按会话协商开启

最值得注意的就是最后一行:用户面完整性保护是5G才引入的新能力,4G时代用户面只有加密、没有完整性保护。为什么5G要加?

因为5G的定位变了。4G主要承载“人的上网”,数据被篡改的损失可以靠上层协议(TLS等)兜底;但5G要承载工业控制、远程驾驶、电网差动保护——一个被篡改的“急停”指令,靠TLS是拦不住的(很多工控流量根本不走TLS)。所以在空口这一跳,网络有能力对每个数据包做完整性校验,就成了行业刚需。

那为什么又是“可选”而不是像信令那样强制?答案很工程化:完整性校验要逐包计算MAC,对硬件有开销。语音这类实时业务(如5QI=1的IMS语音)对处理时延极其敏感,逐包校验可能影响通话质量。因此标准把选择权交给运营商:按会话逐一协商是否开启。现网中,数据类会话开启较多,语音媒体流通常不启用(具体取决于运营商配置)。还有一条重要的配套规则:一旦某个承载协商了完整性保护及其最高速率,超出该速率的流量会被直接释放,而不是“悄悄退回不保护模式”——宁可断业务,不给攻击者留降级后门。

五、算法菜单:EEA/EIA家族

安全激活时,网络要从“菜单”里为每个域各点一道“加密菜”和一道“完整性菜”。5G的算法家族(N=New,区别于4G的EEA/EIA前缀)如下:

算法标识 加密家族 原语 说明
NEA0 空算法 — 不加密,5G中允许使用
NEA1 SNOW 3G 序列密码 4G时代的主力,欧洲团队设计
NEA2 AES 计数器(CTR)模式 性能与安全性均衡的“万金油”
NEA3 ZUC-256 序列密码 中国设计的祖冲之算法,由中国科学院数据与通信保护研究教育中心(DCS中心)提出,后成为国际标准

完整性保护家族与之对应:

算法标识 家族 输出 说明
NIA0 空算法 — 仅限紧急呼叫等特殊场景
NIA1 SNOW 3G 32位MAC
NIA2 AES-CMAC 32位MAC 现网最常用的完整性算法
NIA3 ZUC 32位MAC

两个耐人寻味的设计:

其一,NEA0(不加密)在5G里是合法选项,NIA0(不保护完整性)却几乎被禁足。 对照第二节的结论就能理解:不加密只损失私密性,尚有上层TLS兜底;不保护完整性则等于裸奔在篡改攻击面前。所以标准的态度是——机密性可以商量,完整性寸步不让(紧急呼叫这类“连SIM都没有”的场景除外)。

其二,算法怎么选? 手机在注册时上报自己支持的算法列表(UE安全能力),网络从中挑选双方都支持、且优先级最高的组合。听起来很民主,但这恰恰是历史上被攻击过的环节,下一节详述。

六、安全激活的全过程:两段式上岗

现在把镜头对准整个流程。5G的安全激活是两段式的:先激活NAS安全,再激活AS安全。顺序绝对不能颠倒。

sequenceDiagram
    participant UE as UE 手机
    participant gNB as gNB 基站
    participant AMF as AMF 核心网

    UE->>AMF: Registration Request 明文IE为主 但带完整性保护
    AMF->>UE: 鉴权流程 5G-AKA 生成根密钥体系
    AMF->>UE: NAS Security Mode Command 指明所选NEA与NIA
    Note over UE,AMF: 此消息本身用MAC-I做完整性保护 但未加密
    UE->>AMF: NAS Security Mode Complete 已加密已保护
    Note over UE,AMF: NAS安全上线 从此NAS信令双保护
    AMF->>gNB: Initial Context Setup 携带派生密钥与算法选择
    gNB->>UE: RRC Security Mode Command 完整性保护
    UE->>gNB: RRC Security Mode Complete 双保护
    Note over UE,gNB: AS安全上线 RRC与用户面开始加密
    gNB->>UE: 建立DRB 用户面数据流启动保护

为什么必须NAS先于AS? 这是一条严密的信任链推理:

  1. AS安全的密钥是从 $K_{AMF}$ 派生出 $K_{gNB}$ 的,而派生动作的前提是NAS安全已经建立——先有保险柜(NAS),才能往里面放钥匙(AS)。
  2. NAS安全由AMF终结,不依赖任何具体基站。手机换基站、跨省漫游,NAS安全上下文原样跟随;而AS安全每个基站各管一段。先建立“长效保险”,再补“短效保险”,切换瞬间才不会出现保护真空。
  3. 初始注册请求这条消息很特殊:它主体是明文,但已经用手机里残留的旧NAS密钥(如果存在)做了完整性保护。这让网络能确认“这条请求真的来自声称的那台手机”,防止伪造注册,也为后续安全协商打下可信地基。
  4. 涉及隐私的关键信息(如设备标识IMEI),必须等安全激活完成后才能发送——明文阶段一个字节都不多给。

七、被攻击过的环节:UE安全能力与降级攻击

第六节提到,算法是网络根据“手机上报的能力”来选的。这里藏着一个经典漏洞,也是5G相对4G改进最大的地方。

设想一个假基站(这也呼应了我们之前讲过的“伪基站防线”主题,但角度不同):手机上报“我支持NEA1/2/3”,假基站在转发这条消息时偷偷删掉高安全算法,只留下NEA0,然后逼着手机用不加密模式通信。手机明明有能力,却被“降级”成了裸奔——这就是降级攻击。

防御思路不是发明新密码,而是让能力上报本身进入被保护的范围:手机的安全能力列表被纳入完整性保护的计算范围,网络侧会核对“我收到的能力”与“手机最初上报的能力”是否一致,不一致即判定中间有鬼,拒绝建立连接。此外,5G还把“最近一次成功使用的算法集”记录下来,防止会话重建时被悄悄换掉弱算法。

这类设计的哲学值得每个工程师体会:安全体系中最脆弱的往往不是密码算法本身,而是“协商过程”这种看起来平平无奇的握手环节。算法再强,选算法的过程被人做了手脚,全盘皆输。

八、现网实战:工程师在哪里会遇到它

场景一:抓包看到密文 NAS,抓不下去怎么办? 安全激活完成后,Wireshark里NAS消息显示为加密的nas-5gs,内容是一堆不可读字节。这不是抓包姿势不对,而是安全机制在正常工作。要解码,需要从测试USIM或试验网导出 $K_{NASenc}$ 与 $K_{NASint}$,在解析工具中手工灌入密钥与COUNT。做核心网联调的团队,通常会在测试环境刻意配置已知密钥。

场景二:Initial Context Setup 失败,cause 是 Security mode reject。 典型排查链:先查核心网与基站配置的算法集合是否有交集——比如核心网只允许NIA2,而测试USIM的算法白名单没勾选AES-CMAC,则UE会回security mode reject;再查密钥派生链路是否一致(鉴权过程中间失败重试会导致 $K_{SEAF}$ 失步)。这类问题在实验室换卡、换核心网版本联调时极为常见。

场景三:UP完整性保护开启后,某业务建不起承载。 先查协商的“最高完整性保护速率”是否低于业务峰值——记住规则:超速是直接释放而非自动降级。定位思路是把UP IP关掉做对照实验,确认问题域再查速率协商参数。

场景四:切换后偶发掉话,日志里出现COUNT异常。 COUNT由PDCP序号加超帧号拼接而成,速率极高的业务会让COUNT更快“绕回零点”。翻卷时必须同步更新密钥(换新密钥继续),否则计数器重复会打开重放攻击的窗口。若基站与手机对COUNT理解不一致(如切换准备时未同步HFN),就会出现校验失败、数据被安全机制“误杀”的掉话。

三个常见误解,最后再敲一次黑板: - ❌ “加密了就安全了” —— 没有完整性保护的加密可被定向篡改,二者是不同维度的防线。 - ❌ “安全激活失败可以先用明文顶着” —— 不存在降级兜底,失败只能重建或释放。 - ❌ “用户面完整性保护5G强制开启” —— 它是可选能力,按会话协商,语音类业务常不启用。

常见问题

Q: 加密和完整性保护的区别是什么?为什么两个都要? A: 加密防“偷看”——让第三方读不懂内容;完整性保护防“调包”——让第三方改不了内容。流密码加密天然存在“比特翻转”漏洞(攻击者可定向修改密文对应明文),只有加密没有MAC的通信,等于把一份“看得见改得着”的合同交了出去。5G中信令加密与完整性保护都强制,用户面加密强制、完整性按需协商。

Q: NIA0是什么?既然存在,是不是可以不用完整性保护? A: NIA0是“空完整性算法”(什么都不算),但它被严格限制在紧急呼叫等无鉴权场景。普通业务禁用的原因正是本文核心:无完整性保护等于对篡改攻击裸奔。安全设计上“机密性可协商、完整性不让步”是刻意的取舍。

Q: 为什么安全激活后Wireshark抓的NAS是密文?怎样才能看到内容? A: 因为NAS安全模式完成后所有NAS消息都加密了,这是安全机制生效的正常表现。要解码需拿到测试环境导出的NAS加密/完整性密钥和COUNT值,手工灌入解析工具。商用网络中这些密钥永不出核心网安全域,抓包天然不可读。

Q: 用户面完整性保护为什么4G没有、5G有了又是可选的? A: 4G面向人上网,防篡改靠上层TLS兜底即可;5G面向工业控制等关键流量,必须有空口级完整性能力,因此引入。设为可选是因为逐包算MAC有硬件开销,对语音等低时延业务可能伤及体验,于是把开关交给运营商按会话决策,并用“超速即释放”的规则堵住降级后门。

Q: 安全模式命令(SMC)失败后手机会怎样? A: 不存在“回退明文”的选项。NAS SMC失败则注册流程终止重来;AS SMC失败则连接释放。这是“全有或全无”原则的体现——宁可业务中断,不给攻击者制造降级窗口。

参考来源


本文由「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学通信知识星球海报-扫码加入