5G安全系列NAS层安全密钥衍生——USIM相关密钥的衍生
Posted 从善若水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5G安全系列NAS层安全密钥衍生——USIM相关密钥的衍生相关的知识,希望对你有一定的参考价值。
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接
文章目录
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。
博客内容主要围绕:
5G协议讲解
算力网络讲解(云计算,边缘计算,端计算)
高级C语言讲解
Rust语言讲解
NAS层安全密钥衍生——USIM相关密钥的衍生
今天我们要讲解的过程就是下图中,红色方框标记的密钥衍生流程。博文会介绍
- 什么情况下会发起 K → CK、IK的衍生;
- K如何衍生出CK、IK;
- 什么情况下会出现 K→ CK、IK衍生失败;
USIM相关的知识,可以关注我的专栏 《UICC之USIM》
一、K → CK、IK的触发条件
AMF通过发送 初始Authentication request Message消息给终端发起初始鉴权流程,在此流程中会触发 K → CK、IK的衍生过程。以 5G AKA鉴权流程为例,消息流程图如下:
二、K → CK、IK衍生的入参
- K :USIM中存储的密钥,可以是128 bits 也可以是 256 bits;
- RAND :【Random challenge】鉴权随机值由 Authentication request Message 提供 , 128 bits
- AUTN : 【Authentication Token】鉴权码由 Authentication request Message 提供 , 128 bits
三、USIM内部具体衍生流程
AMF: Authentication management field
- 当USIM收到 RAND 和 AUTN参数时 ,USIM首先使用 f5K(RAND)函数计算出 匿名密钥 AK,使用匿名密钥 AK与AUTN前六个Bytes(SQN XOR AK)做异或运算来提取SQN参数(SQN = (SQN ^ AK) ^ AK);
SQN 【Sequence number 】:可以将SQN理解为银行的U盾,早期我们在使用网上银行时需要输入U盾显示的一串数,银行内部会检查这串数是否匹配或者是否在一个合理的范围内,如果符合要求则验证通过,否则验证失败。
同理,USIM卡中的SQN也是这个作用,会增强USIM的安全性,且运营商可以自定义SQN维护算法。
- 接着USIM会使用 f1K(SQN||RAND||AMF)计算 XMAC,并于AUTN中的MAC比较。如果比较结果不一致,则K → CK、IK衍生流程失败,UE将回复核心网 Authentication Failure message;如果比较结果一致,则继续下面的流程👇;
- USIM 校验收到的 SQN与自己本地维护的SQN是否一致 或者 是否在合理的范围内。如果校验失败,则K → CK、IK衍生流程失败,UE将回复核心网 Synchronisation Failure message;如果校验成功,则继续下面的流程👇;
- USIM
使用 f2K(RAND)函数计算 RES 参数 ;
使用 f3K(RAND)函数计算 CK参数 ;
使用 f4K(RAND)函数计算 IK 参数; - USIM存储 计算出的 CK 、 IK参数,直到下一次成功的AKA验证才会更新存储的 CK、IK参数;
四、K → CK、IK衍生失败场景
4.1 MAC失败场景(MAC failure)
这种场景,UE会直接回复 Authentication Failure message,UE认为这是一个恶意的鉴权请求。
4.2 同步失败(Synchronization failure)
这种场景,UE会回复核心网 Synchronisation Failure message,同时携带USIM返回的AUTS参数。核心网收到 Synchronisation Failure message 后,
- 如果是本次鉴权流程中第一次收到 Synchronisation Failure message则,核心网在更新AUTN和RAND参数后,重新发起 Authentication Request message;
- 如果是本次鉴权流程中第二次收到 Synchronisation Failure message,协议给出(非强制实现)的建议是结束本次鉴权流程,认为鉴权失败。
4.2.1 USIM 如何生成 AUTS参数
AUTS的组成见下图:
SQNMS : 是终端USIM中记录的 SQN范围中的最大值。核心网根据这个值,重新生成一个合适的SQN值。
- SQNMS^AK = SQNMS ^ f5*K(RAND)
- MAC-S = f1*K(SQNMS || RAND || AMF)
AUTS中没有出现AMF 参数,原因是协议规定在 Synchronisation Failure message 中 AMF参数全是零。也就是核心网在校验MAC-S参数的时候使用的 AMF 参数值是 “0x00”。这种情况下既然AMF参数已经明确定义了,那也就没有必要再占用资源传输了。
关于本博文涉及到的 USIM中的函数,可以查看博主的这篇博文进一步了解
《UICC 之 USIM 详解全系列——USIM鉴权函数说明以及鉴权向量结构》
《3GPP USIM milenage算法code》
《5G 3GPP USIM Tuak算法code》
以上是关于5G安全系列NAS层安全密钥衍生——USIM相关密钥的衍生的主要内容,如果未能解决你的问题,请参考以下文章