5G/4G加/解密+完整性保护/校验算法源码详解

Posted 从善若水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5G/4G加/解密+完整性保护/校验算法源码详解相关的知识,希望对你有一定的参考价值。

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。


博客内容主要围绕:
       5G协议讲解
       算力网络讲解(云计算,边缘计算,端计算)
       高级C语言讲解
       Rust语言讲解

加/解密+完整性保护/校验算法源码详解

        本系列将给出4G 、5G加解密以及完整性保护算法的源码,供各位参考。

这些算法既在AS层数据转发中使用,也在NAS层信令流程中使用


一、加解密算法

  • 4G的加解密算法128-EEA1与5G的加解密算法128-NEA1都是基于 Snow 3G;
  • 4G的加解密算法128-EEA2与5G的加解密算法128-NEA2都是基于 128-bit AES;
  • 4G的加解密算法128-EEA3与5G的加解密算法128-NEA3都是基于 ZUC(祖冲之算法);

上述三类算法的入参都是一样的,如下图:

算法根据输入参数生成输出密钥流块keystream, keystream用于对输入的明文块plaintext进行加密,生成输出的密文块ciphertext。

每个参数的含义需要根据具体的应用场景确定,感兴趣的可以关注我后续关于NAS与AS层安全的文章,它们的大致含义如下:

  • COUNT 是一个计数值,每次加/解密一次就加一;
  • BEARER是承载id;
  • DIRECTION是方向flag,标识上行还是下行;
  • LENGTH是keystream的长度;
  • KEY是密钥;

二、完整性保护/校验算法

  • 4G的加解密算法128-EIA1与5G的加解密算法128-NIA1都是基于 Snow 3G;
  • 4G的加解密算法128-EIA2与5G的加解密算法128-NIA2都是基于 128-bit AES;
  • 4G的加解密算法128-EIA3与5G的加解密算法128-NIA3都是基于 ZUC(祖冲之算法);

上述三类算法的入参都是一样的,如下图:

发送端根据这些输入参数使用完整性算法NIA计算一个32位的消息认证码(MAC-I/NAS-MAC)。然后在发送时将消息身份验证代码附加到消息。完整性保护算法,接收方计算预期的消息身份验证代码(XMAC-I / XNAS-MAC)消息收到相同的方式发送方计算其消息身份验证代码在消息发送和数据完整性的验证消息通过比较接收到的消息验证码,即MAC-I / NAS-MAC。

每个参数的含义需要根据具体的应用场景确定,感兴趣的可以关注我后续关于NAS与AS层安全的文章,它们的大致含义如下:

  • COUNT 是一个计数值,每次完整性保护/校验一次就加一;
  • BEARER是承载id;
  • DIRECTION是方向flag,标识上行还是下行;
  • MESSAGE是完整性保护/校验的消息体;
  • LENGTH是完整性保护/校验消息的二进制长度
  • KEY是密钥;

《Snow 3G算法源码介绍》
《128-bit AES算法源码介绍》
《ZUC算法源码介绍》

【5G/4G】128-EEA1与128-NEA1算法详解
【5G/4G】128-EEA2与128-NEA2算法详解
【5G/4G】128-EEA3与128-NEA3算法详解

【5G/4G】128-EIA1与128-NIA1算法详解
【5G/4G】128-EIA2与128-NIA2算法详解
【5G/4G】128-EIA3与128-NIA3算法详解


以上是关于5G/4G加/解密+完整性保护/校验算法源码详解的主要内容,如果未能解决你的问题,请参考以下文章

5G安全系列加解密+完整性保护安全算法测试cases

5G安全系列加解密+完整性保护安全算法测试cases

5G安全系列AS层PDCP完整性保护与加密流程

5G安全系列AS层PDCP完整性保护与加密流程

网络安全加解密算法最详解

5G/4G128-EIA1与128-NIA1算法详解