老电影里地下党接头,最经典的桥段不是验身份证,而是对暗号:“天王盖地虎。”对方接不上“宝塔镇河妖”,或者接的语气不对,双方立刻翻脸拔枪。为什么?因为接头现场最大的风险,是对方根本不是自己人——来的人怕遇上假接头人,蹲点的人怕来的是特务。暗号的作用是双向的:我证明我知道秘密,你也证明你知道秘密,而且整个过程里,真正的秘密(组织名单、联络图)从头到尾没有说出口。
手机入网的认证,本质就是这场接头。手机要证明“我是这张卡的合法主人”,网络也要证明“我是真运营商,不是路边搭的假基站”。而且和电影一样,真正的秘密——那张写死在卡里的主密钥——从头到尾不许离开卡片半步。
这篇文章讲清楚三件事:认证的暗号是怎么设计的、5G为什么要把“判卷权”收回归属网络、以及现网里认证失败时该往哪里查。
先看没有认证的世界会发生什么。
网络怕用户是假的。 如果只靠“报IMSI号”来认人,那么任何知道你号码的人都能冒充你入网——把你的号码抄下来,流量费记在你账上,通话被旁听。这相当于小区门禁只看脸不刷卡,认识你的人都能进。
用户怕网络是假的。 历史上真实存在过“IMSI捕手”(伪基站):架一个功率很强的假基站,手机在信号里“就高不就低”,会主动扑上来注册。假基站拿到你的明文身份后,可以静默定位你、拦截短信验证码。这是4G时代被安全研究者反复演示的经典攻击。
所以认证必须是双向的:用户验网络(防伪基站),网络验用户(防冒名)。而且双向验证要基于“只有真卡和真网络才知道的秘密”,而不是基于“号牌”——号牌谁都能抄,秘密只有发卡方和你本人持有。
5G把这件事又推进了一步:身份本身也加密了(SUCI机制,本专栏此前的文章专门讲过空口身份隐私),让假基站连“抄号牌”都抄不到。身份藏好了,接下来就是身份背后的信任怎么证明——这就是认证协议要解决的。
怎么证明“我知道一个秘密”,却又不把秘密说出来?这听起来像悖论,但日常里到处是原型。
酒局上怎么证明你是老王?不用掏身份证,你只要接住老王才知道的梗:“去年三亚,你把手机落海里那次……”能秒接上细节的,就是本人。你证明了自己掌握“只有你知道的经历”,但这段经历的具体内容并没有在酒桌上完整公开。
蜂窝网络的认证用的是同一招,行话叫挑战—响应(Challenge-Response):
这套机制的精妙之处有三层:
而承载这把K的物理位置也有讲究:K写在USIM卡里,与归属运营商一一对应,出厂后永不可读。运算(算答卷、验网络暗号)都在卡内完成,基带芯片只能“委托”卡算,拿不到中间结果。这样即使手机被植入恶意软件、基带被攻破,K依然是安全的——这是整个体系的地基。
把挑战—响应落到实处,需要几个精心设计的参数。先看一张总表,再逐个拆。
| 参数 | 谁生成 | 装在哪里 | 作用 |
|---|---|---|---|
| K(主密钥) | 开卡时写入 | USIM卡内 + 归属网数据库 | 唯一的信任根,128位,永不出卡 |
| RAND(随机数) | 归属网出题 | 认证请求 | 128位考题,每次不同 |
| AUTN(网络暗号) | 归属网计算 | 认证请求 | 让卡验证网络是真网络 |
| SQN(序列号) | 双方各自维护 | AUTN内嵌 | 像支票流水号,防重放 |
| RES*(答卷) | USIM计算 | 认证响应 | 证明“我会算” |
| XRES*(标准答案) | 归属网计算 | 留在归属网 | 判卷用的对照答案 |
| HXRES*(答案摘要) | 归属网计算 | 交给拜访网 | 标准答案的哈希,供考场粗判 |
| K_SEAF(锚密钥) | 派生而来 | 认证成功后才交付 | 后续一切加密完整性的种子 |
| AUTS(重新对表) | USIM计算 | 认证失败消息 | SQN失步时请求“重新对表” |
其中最值得展开的是AUTN——它是最容易被新手忽略的“反向暗号”。很多初学者以为认证就是“网络考手机”,其实AUTN是手机反考网络的那一半。
网络出题时,把SQN和RAND一起用K算出一个认证码MAC,连同SQN一起打包成AUTN发给卡(以下为简化概念式):
$$MAC = f_1(K,\ SQN \oplus AK,\ RAND,\ AMF_{auth})$$
$$AUTN = (SQN \oplus AK) \parallel MAC$$
卡收到后用自己手里的K按同样算法重算一遍MAC:对得上,说明出题的必然持有真K——因为RAND和SQN是明文可见的,伪造者能看见却算不对MAC。看得出题目、算不出答案,这正是“知道秘密”与“见过秘密”的区别。
而SQN是防重放的第二道锁。它像一个只增不减的流水号:网络每出一道题,SQN加一;卡只接受SQN在合理窗口内的题。攻击者就算录下上一次的完整考题重放,SQN是旧的,卡一眼识破。若卡的SQN落后了(比如换机、数据回滚),卡不直接拒绝,而是回一个AUTS,里面带着卡本地的SQN,让归属网“重新对表”后再出题——这个细节是现网排查认证失败的重要线索,后面还会讲到。
5G的答卷RES*不是4G时代RES的简单照搬,而是把4G遗留的密钥对(CK/IK)通过密钥派生函数重新熔炼,避免新旧制式共用同一批衍生密钥产生“密钥串味”(以下同样为概念式,省略了若干输入参数):
$$RES^* = KDF(CK,\ IK,\ RAND,\ SQN \oplus AK)$$
有了随机考题和双向暗号,认证机制在4G时代已经相当成熟。但4G的判卷流程留了一个结构性遗憾。
4G的做法是“批发考卷”:归属网的HSS一次性把整包认证数据(考题RAND、网络暗号AUTN、标准答案XRES、以及派生的根密钥)全部交给拜访地的MME,然后就不参与了。此后出题、收卷、判卷全在MME本地完成。
这个设计的隐含假设是:所有运营商之间的转接网都值得信任。在自己国家的运营商网络里,这个假设大体成立。但它意味着:
打个比方:4G像是高考把标准答案提前寄到各个考点,让考点自己阅卷。绝大多数考点没问题,但制度上给了“假考点”可乘之机。
5G对这套流程做了一次架构级的重构,核心思想一句话:考场只负责监考,判卷权收回归属网。
先看角色分工:
flowchart TD
UE["UE手机 + USIM卡<br/>密钥K锁在卡里"]
SEAF["SEAF 在AMF内<br/>拜访地监考官"]
AUSF["AUSF<br/>归属地终审法官"]
ARPF["ARPF 在UDM内<br/>档案室兼出题人"]
UE <-->|"双向对暗号"| SEAF
SEAF -->|"转交考卷不判卷"| AUSF
AUSF -->|"调档出题"| ARPF
ARPF -->|"考题与判卷标准"| AUSF
四个角色,各司其职:USIM是保险箱(藏K);ARPF是档案室(存K、出题、算标准答案);AUSF是终审法官(唯一有权宣布“认证通过”的人,而且待在归属网);SEAF是监考老师(发考卷、收答卷、全程见不到标准答案和锚密钥)。
完整的5G-AKA时序如下:
sequenceDiagram
participant UE as UE与USIM
participant SE as SEAF在AMF内
participant AU as AUSF归属网
participant UD as UDM与ARPF
UE->>SE: 注册请求(带加密身份SUCI)
SE->>AU: 转交SUCI请求认证
AU->>UD: 按SUCI解出用户调认证数据
UD->>UD: 卡内同款算法出题
UD->>AU: RAND加AUTN加判卷材料加K_SEAF
AU->>SE: 只发考题RAND与AUTN
SE->>UE: Authentication Request
UE->>UE: 卡验AUTN并算答卷RES*
UE->>SE: Authentication Response
SE->>SE: 用哈希粗判一次
SE->>AU: 上交答卷RES*
AU->>AU: 终审比对RES*与XRES*
AU->>SE: 判决通过并交付锚密钥K_SEAF
SE->>UE: 启动NAS安全激活
把这张图看透,5G认证的全部精髓就在里面了。有三个细节值得停下来品:
第一,标准答案没有随考题下发。 归属网把XRES(标准答案)扣在自己手里,只把它的哈希HXRES给了拜访网。SEAF手里的HXRES只能用来“粗判”——像考官手里没有答案原文,只有一个密封的标准答案指纹,能筛掉明显乱写的卷子,但终审必须回传归属网*。
第二,锚密钥是“认证通过后才交付”的。 K_SEAF——后续所有加密和完整性保护的种子——在流程一开始就算好了,但AUSF一直押着,直到终审比对通过才交给SEAF。对比4G“密钥随考卷一起批发”,5G做到了“先验人,后给钥匙”。这直接封死了“假考场拿密钥”的路径:假基站就算把考卷原样转发,只要它拿不出真卡对得上的答卷,归属网就不会放钥匙,假考场空手而归。
第三,判卷逻辑发生在归属网,天然抗假基站。 假基站在4G时代可以扮演“考场”,到了5G它还得再冒充一个有终审权的“归属网”——而终审需要真K才算得出标准答案,这条路被物理性堵死了。
上面讲的这套“归属网终审版AKA”,叫5G-AKA。但标准并没有把它定为唯一路径,还保留了另一种选择:EAP-AKA'。很多工程师只知道“5G认证有两种”,却说不清为什么要留两种——这恰恰是设计上最有意思的地方。
EAP-AKA'把5G的认证材料装进了EAP框架——一个在企业网、WiFi接入认证领域用了二十年的老框架(公司员工连办公WiFi时的802.1X认证,走的就是EAP家族协议)。它的流程轮次更多,UE和归属网之间要经历身份交换、挑战、确认等好几轮EAP消息,最终由AUSF扮演EAP服务器完成双向验证。
两者怎么选,看这张对比表:
| 维度 | 4G EPS-AKA | 5G-AKA | EAP-AKA' |
|---|---|---|---|
| 判卷人 | 拜访网MME本地判 | 归属网AUSF终审 | 归属网AUSF终审 |
| 身份保护 | 可能明文暴露IMSI | SUCI加密身份 | SUCI加密身份 |
| 锚密钥交付时机 | 随认证数据预先下发 | 终审通过后交付 | 终审通过后经EAP密钥派生 |
| 消息轮数 | 一问一答,最快 | 一问一答,最快 | EAP多轮,略慢 |
| 抗假基站 | 弱 | 强 | 强 |
| 典型场景 | 4G通用 | 3GPP接入为主 | 非3GPP接入(如经WiFi互通)必用 |
为什么留两条路?三个理由:
理由一,快慢取舍。 5G-AKA一问一答就结束,消息少、时延低,适合海量物联网终端和高频接入场景;EAP-AKA'多轮握手,换来的是更强的密码学性质。运营商按自己的订阅策略二选一,归属网在出题时就告诉网络和手机“这次用哪种”,整个过程终端无感切换。
理由二,密钥分离的洁癖。 5G-AKA一问一答的模式下,有一个长期被安全界讨论的微妙之处:最终消息由归属网判卷,但UE并没有在最后一轮“再回一句话”证明自己确实算出了锚密钥。EAP-AKA'的最终确认消息补上了这个环节——双方都出示了“我手里有同一个密钥”的证据,密钥域的分离也更干净。安全研究圈曾公开讨论过5G-AKA的这一权衡,属于学术界公认的已知代价,标准制定时以“快”换“严”接受了它。
理由三,非3GPP接入的刚需。 手机经WiFi等非3GPP管道接入5G核心网时,接入认证走的是IPSec隧道建立流程,而IPSec(IKEv2)生态里嵌的正是EAP-AKA'。也就是说,只要你的手机用WiFi打过VoNR前置的注册、或者企业专网走固定宽带接入5G,背后跑的一定是EAP-AKA'——这条路径没有得选。
两种方法在最终密钥上殊途同归:认证成功后都得到归属网认可的锚密钥,再沿同一条派生链一路展开(密钥派生树的完整原理本专栏已有专文,此处只列链条):
$$K_{AUSF} \Rightarrow K_{SEAF} \Rightarrow K_{AMF} \Rightarrow {\,K_{NAS},\ K_{RRC},\ K_{UP}\,}$$
认证不是只会“通过”。失败的方式本身就是诊断信息,这是工程师排障时最重要的直觉。看这张分支图:
flowchart TD
R["UE收到考题RAND与AUTN"] --> V{"USIM校验MAC与SQN"}
V -->|"都对"| OK["算RES*回卷<br/>认证通过"]
V -->|"MAC对不上"| F1["疑似假基站或密钥错<br/>拒绝认证"]
V -->|"SQN超出窗口"| F2["回AUTS同步失败<br/>归属网重新对表"]
F2 -->|"重新出题再考"| OK
三种结局,三种含义:
MAC对不上(Authentication Failure - MAC failure):卡用K重算的认证码和网络发来的不一致。可能性按概率排序:测试环境里卡密钥配置错误(见下文OPc大坑)、归属网数据库里这批卡的K录错、或者——真遇上了伪基站。在实验室里它几乎总是配置问题;在现网外场,它是安全事件的前兆信号。
SQN失步(Authentication Failure - Synch failure):卡认为“这张考卷的流水号太旧了”。最常见于:同一张卡的认证数据被多处并发使用(克隆卡迹象)、归属网数据回滚、或测试卡被反复插拔跨设备使用。网络处理方式不是拒绝,而是走AUTS重新对表后重发考题,用户无感——所以你在信令里看到一次Synch failure紧跟一次重试成功,通常不算故障。
非法用户(Illegal UE):卡根本不存在或已报废。这是最直接的结局。
排障第一站:AMF认证日志。 手机起呼失败、反复掉网,抓NAS信令看Authentication Request/Response/Failure三件套。看Failure的原因码区分MAC failure还是Synch failure,方向完全不同——前者查密钥配置,后者查SQN状态或多卡并发。
实验室第一坑:OP与OPc。 认证算法除了K还需要一个运营商派生参数OPc。不少测试工具(如开源核心网、仿真卡工具)配置时要求填OPc,而发卡商给的Excel里给的却是OP——两者混用,算出的MAC必然对不上,现象是“卡怎么都认证不过,换张卡就好了”。这是新人搭环境时最高频的翻车点:拿到卡商数据先确认给的是OP还是OPc。
物联网卡的选型题。 海量表类终端如果走蜂窝接入,运营商默认多用5G-AKA(省信令、省时延);如果终端要经企业WiFi/固定网络接入,比如工厂里网关聚合了传感器再经宽带回传,那就必然落在EAP-AKA'路径上。做方案时先画清楚接入管道,认证方法就定了。
安全审计的视角。 现网网管里如果看到某个跟踪区域频繁出现MAC failure集群,值得警惕——正常网络里这个原因码应当极其罕见。它可能是某批卡数据错误,也可能是伪基站的痕迹。认证失败日志不只是故障指标,还是安全指标。
误解一:“认证就是加密。” 不是。认证解决“你是谁”,加密解决“别人听不听得见”。而且5G里是先认证、后激活加密(NAS安全模式命令在认证成功之后才来)。信令里认证过了但安全激活失败,手机同样上不了网——排查时这是两个独立的阶段。
误解二:“AUTN里的AMF是那个AMF网元。” 巧合的撞名:认证参数里的AMF是Authentication Management Field(认证管理域),一个几比特的标志字段;网元AMF是Access and Mobility Management Function。两者毫无关系。读老文档时这个撞名坑特别容易把人绕晕。
误解三:“卡被复制了,认证也能过。” 恰恰相反——克隆是认证体系重点防的场景。两张卡同时用,SQN会互相踩踏,双方都频繁触发Synch failure,归属网侧一眼就能看出异常。SQN机制本质上是一台“克隆检测器”。
误解四:“5G了假基站就绝迹了。” 大幅收敛但机制上没有归零:假基站依然可以让手机“扑上来”,但拿不到真实身份(SUCI加密)、过不了归属网终审、拿不到锚密钥——它退化成了“只能让手机白跑一趟”的骚扰工具,定位跟踪和短信拦截的窗口被大幅压缩。
Q: 5G-AKA和EAP-AKA',一张卡会同时用到两种吗? A: 完全可能。走蜂窝基站接入时用其中一种(由归属网订阅策略决定),同一部手机连公司WiFi或经非3GPP管道接入5G核心网时,则固定走EAP-AKA'。两者派生出的密钥相互独立,互不串用。
Q: 为什么K一定要放在USIM卡里,不能放在手机基带的存储中? A: 卡是独立的防篡改芯片,恶意App和被攻破的基带都读不到它,K的暴露面被压缩到物理接触攻击。放在基带里等于把信任根埋进了最复杂的软件堆栈,一旦系统被root,整个信任链就塌了。
Q: 认证失败后手机会怎样?会立刻换网吗? A: 看原因。Synch failure会自动重试(重新对表后出新题),用户无感;MAC failure会被记录并可能触发对网络的拒绝,手机可能重选小区或换网重试;如果归属网判定非法用户,会拒绝注册并可能列入黑名单。
Q: 我怎么在抓包里一眼认出5G-AKA和EAP-AKA'?
A: 看消息形态:5G-AKA就是干净的一对Authentication Request/Response;EAP-AKA'会在NAS消息里看到嵌套的EAP消息(EAP-Request/Identity、EAP-Request/AKA'-Challenge、EAP-Success等一串)。看到EAP字样就是后者。
Q: 换了新手机,需要重新认证吗?SQN会不会失步? A: 卡没换就不用重新发卡,插上即走认证流程,SQN由归属网和卡自动同步,通常无感。极少数情况下(归属网数据异常)会触发一次AUTS重对表,表现为入网慢一两秒。
本文由「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 等场景全覆盖。
