来自知识星球

5G-NAS信令消息解密过程实现

一 NAS加密过程简述
NAS加密过程需要的主要有两项内容,分别是密钥和加密算法的选择。在获 得密钥后进行密钥推演,从
基础密钥最终获得加密密钥。将加密密钥Key、NAS 上下行NAS信令的计数器Count、承载ID
(Bearer)、NAS信令的传输方向Direction和NAS信令明文的长度Length作为加密算法的输入参数,使
用UE和核 心网协商一致的加密算法进行计算,得到密钥流(KeyStreamBlock)。最后将二进 制的明文
与密钥流进行异或运算,获得加密后的NAS密文。具体加密流程如下图。

二 NAS解密参数获取
NAS解密过程是加密过程的逆过程,根据前文对NAS加密过程可知,要解密 NAS信令,只需要将密文与
密钥流进行异或操作,就可以得到明文。密钥流的获 取是关键所在,密钥流获取过程和加密过程的密钥
流获取过程一致,因此解密时 需要获得以下参数:
1)Count:上下行NAS信令的计数,由每一条NAS信令的Sequennce Number 字段获取;
2)Bearer:承载ID,解密时一般取值为0;
3)Direction:NAS信令传输方向,可以从携带该NAS信令的NGAP信令中 获取;
4)Length:NAS信令的长度,携带该NAS信令的NGAP信令的NAS信元 (IE_L)字段获取;
5)KEY:即密钥KN ASsenc ,从UE初始注册过程中,Security Mode Command 消息中获得加密密钥和
加密算法。
三 NAS解密流程
NAS解密流程如图所示。

Step1:读入NAS信令队列,为解密会用到的参数建立数值,为解密结果分 配存储空间;
Step2:在UE初始注册流程中获得密钥和加密算法,根据3GPP规定的算法 推衍出加密密钥KN ASsenc
Step3:从携带NAS信元的NGAP信令中获得所需参数Direction、Length;
Step4:解析获得安全头类型,对安全头类型数值进行判断。若“安全头类型” =1、3,则当前NAS信令未
加密,无需解密可直接获得明文;若“安全头类型” =2、4,则当前NAS信令进行了加密,解析获得序列号
字段,然后计算得到Count 参数,进入Step4。
Step5:将获得的各个参数输入加密算法中进行运算,获得密钥流。
Step6:将密钥流与NAS密文进行异或运算,获得明文。