3、AKA认证协议:5G AKA流程详解、EAP-AKA'流程、SUCI加密与隐私保护、认证向量生成与验证

各位好,今天我们聊聊5G核心网里最核心的认证环节——AKA协议。说实话,我在做5G安全测试那几年,见过太多因为AKA流程理解不透彻导致的对接失败。你想想看,一个手机连上基站,第一件事就是证明“我是我”,这个环节要是出问题,后面全是白搭。

3.1 5G AKA流程详解

5G AKA,全称是5G Authentication and Key Agreement。它跟4G的EPS-AKA最大的区别在哪?我个人觉得,最关键的改进就是引入了服务网络认证。什么意思呢?就是不光网络要验手机,手机也要验网络——双向认证。

整个流程我习惯分成三个阶段来看:

  1. UE发起注册请求——手机把SUCI(后面会细讲)发给gNB,gNB再转给AMF。
  2. AMF触发认证——AMF发现没有该用户的上下文,就向AUSF/UDM请求认证向量。
  3. 认证与密钥协商——AUSF返回认证向量,AMF发起挑战,UE响应,最终生成密钥。

嗯,这里要注意一个细节:5G里AMF不直接存根密钥,它只持有中间密钥。这是为了做安全域隔离——就算AMF被攻破,也拿不到最核心的K值。

核心要点:5G AKA实现了UE与网络之间的双向认证,并且通过密钥分层机制,将核心网与接入网的安全域彻底隔离。

3.2 EAP-AKA'流程

EAP-AKA',说白了就是AKA的“扩展版”。它主要用于非3GPP接入场景,比如你通过Wi-Fi连5G核心网。我在项目中遇到过好几次,客户搞不清楚什么时候用5G AKA,什么时候用EAP-AKA'。

简单说:

  • 3GPP接入(NR/LTE):用5G AKA
  • 非3GPP接入(WLAN/固网):用EAP-AKA'

EAP-AKA'跟5G AKA最大的不同在于:它多了一层EAP封装。流程大致是:

  1. UE和AMF之间跑EAP消息
  2. AMF把EAP消息透传给AUSF
  3. AUSF完成认证后,通过EAP-Success通知AMF

我曾经帮一个运营商排查过EAP-AKA'超时问题,最后发现是AMF和AUSF之间的N13接口配置了错误的超时阈值。你想想看,一个超时参数配错,整个认证链就断了。

实战技巧:EAP-AKA'的密钥派生中,会额外引入一个"K_encr"用于加密EAP消息。如果你在做抓包分析,看到EAP消息被加密了,别慌——这是正常行为。

3.3 SUCI加密与隐私保护

SUCI,全称Subscription Concealed Identifier。它是5G里取代IMSI的隐私保护方案。为什么要有SUCI?因为4G时代IMSI是明文传输的,随便一个伪基站就能抓到你的身份。

SUCI的生成逻辑是这样的:

  • 手机用公钥加密SUPI(就是IMSI)
  • 加密后的结果就是SUCI
  • 网络侧用私钥解密,还原出SUPI

这里有个坑,我踩过:公钥的更新机制。如果手机里的公钥过期了,或者跟网络侧不匹配,SUCI就解不出来。我曾经在实验室里折腾了一整天,最后发现是USIM卡里预置的公钥版本太老。

注意:SUCI加密使用的是椭圆曲线加密(ECC),具体算法是HPKE(Hybrid Public Key Encryption)。如果你在做性能测试,记得关注加解密耗时——ECC虽然安全,但计算开销比RSA大不少。

我建议你在部署时,一定要验证SUCI的解密成功率。怎么验证?很简单:在UDM侧打日志,看SUCI解密失败率。如果超过0.1%,赶紧查公钥分发链路。

3.4 认证向量生成与验证

认证向量,是AKA流程里的“通行证”。它由UDM生成,包含五个关键元素:

参数 含义 长度
RAND 随机数挑战 128 bits
XRES 期望的响应值 128 bits
AUTN 网络认证令牌 128 bits
KAUSF 锚密钥 256 bits
SUPI 用户永久标识 可变

生成过程我简单说一下:

  1. UDM从USIM卡里读出根密钥K
  2. 用K和RAND做HMAC-SHA256,生成AUTN
  3. 同样用K和RAND,生成XRES
  4. 最后派生KAUSF

验证过程正好反过来:

  • 手机收到RAND和AUTN后,用本地K计算AUTN'
  • 对比AUTN'和AUTN是否一致
  • 如果一致,说明网络是真的(不是伪基站)
  • 然后手机计算RES,发回给网络
  • 网络对比RES和XRES,一致则认证通过

我记得有一次做安全审计,发现某个厂商的UDM在生成AUTN时,把SQN(序列号)的校验逻辑写反了。结果就是:手机每次认证都失败,因为AUTN里的SQN比手机本地的小。这种问题,光看信令流程根本发现不了,必须抓内部日志。

关键点:认证向量的有效性是有时间窗口的。3GPP标准建议每个认证向量只能使用一次,且有效期不超过15分钟。如果你在做高并发场景测试,注意UDM的向量生成速度——它可能成为瓶颈。

3.5 本章小结

好了,AKA认证这块我们聊了不少。从5G AKA的双向认证,到EAP-AKA'的非3GPP扩展,再到SUCI的隐私保护,最后是认证向量的生成验证。说白了,整个流程就是一套精心设计的密码学握手协议。

我个人觉得,理解AKA的关键在于把握两点:一是密钥分层,二是双向认证。只要把这两个核心逻辑吃透了,后面看其他安全流程就会轻松很多。

最后提醒一句:如果你在生产环境里遇到认证失败的问题,别急着怀疑算法。先检查时间同步、密钥版本、SQN状态——这三个是最容易出幺蛾子的地方。


公众号:蓝海资料掘金营,微信deep3321