ZUC 加解密基本原理
一、加密算法
加密算法的主要作用是对用户发送接收的信息进行加密和完整性的保护。加
密是将信息进行处理变成不能够被识别的密文,增强信息的安全性。完整性保护
是把信息进行处理得到一个可以进行判断的识别码,这个识别码代表接收端接收
到的信息完整与否。
二、祖冲之算法集
祖冲之算法集(ZUC 算法)是由我国学者自主设计的加密和完整性算法,
包括祖冲之算法、加密算法 128-EEA3 和完整性算法 128-EIA3。
ZUC 算法是中国自主设计的流密码算法,现已被 3GPPLTE 采纳为国际加密
标准,即第四代移动通信加密标准。ZUC 算法是中国第一个成为国际密码标准
的密码算法,其标准化的成功,是中国在商用密码算法领域取得的一次重大突破,
体现了中国商用密码应用的开放性和商用密码设计的高能力,必将增大中国在国
际通信安全应用领域的影响力。
三、ZUC 算法简介
祖冲之算法是我国商用密码算法,已被批准为 LTE 国际标准。
ZUC 算法由中国科学院数据保护和通信安全研究中心(DACAS)研制。
*LTE 算法的核心是一种称为 ZUC 的流密码;
*由 ZUC 定义的 LTE 加密算法,称为 128-EEA3;
*由 ZUC 定义的 LTE 完整性保护算法,称为 128-EIA3;
ZUC 算法主要用于移动通信系统空中传输信道的信息加密和身份认证,以
确保用户通信安全。
(一)安全性保护
128-EEA3 算法作用是产生保密密钥为数据进行加密和解密,数据块的大小
可以在 1~65504bit。信息发送端和信息接收端使用相同密钥才能进行数据加解密,
该过程的目的是保障信息的安全性。
(二)完整性保护
完整性算法 128-EIA3 作用是通过计算完整性密钥 IK 的输入消息 MAC,并
使用 MAC 在接收端接收到消息时确认该消息是否为完整接收。设计完整性保护
算法目的是在接收端确认信息在发送过程中没有被篡改或者因为外界环境的原
因信息部分丢失出错而导致接收到的信息不完整。该消息长度可以是 1~65504bit。
发送端使用完整性算法 EIA3 计算 32 位的消息认证码(MAC-I),完整性校
验模块如下图所示。
消息认证码被添加在消息后和消息一起发送。接收者在收到消息后,按照发
送者计算消息认证码以同样的方式计算期望得到的消息认证码(XMAC-I),并
通过与收到的消息认证码 MAC-I 比较来验证消息的完整性。
(三)ZUC 算法由 3 个基本部分组成,依次为:
1.比特重组(BR);
2.非线性函数(F);
3.线性反馈移位寄存器(LFSR)。
ZUC 加密算法经常用来加密数字图像,适合于数字图像这种流式文件加密。
ZUC 算法目的是将初始输入的密钥向量进行一系列操作处理,能够得出基
于初始密钥的复杂密钥流,这些密钥流的主要作用是供用户进行信息加密
解密和完整性保护使用。其中,初始密钥一般包含有用户的特征信息,经过
初始密钥的处理能够得到用户专用的密钥。
四、ZUC 算法原理
ZUC 是一个面向字的流密码。它采用 128 位的初始密钥作为输入和一个 128
位的初始向量(IV),并输出关于字的密钥流(从而每 32 位被称为一个密钥字)。
密钥流可用于对信息进行加密/解密。
ZUC 的执行分为两个阶段:
1)初始化阶段:密钥和初始向量进行初始化,即不产生输出;
2)工作阶段:每一个时钟脉冲产生一个 32 比特的密钥输出。
(一)运算符说明
mod
⊕
a||b
aH
aL
a<<>1
(a1,a2,…,an)—>(b1,b2,…,bn)
(二)算法整体结构
整数模
整数比特异或
字符串 a 和 b 的连接
二进制表示的最左 16 位值
二进制表示的最右 16 位值
向左 k 比特的循环移位
向右 1 比特的移位
ai 值分配到对应 bi 的值
祖冲之算法逻辑上分为上中下层。上层是 16 级线性反馈移位寄存器(LFSR);
中层是比特重组(BR);下层是非线性函数 F。
1.线性反馈移位寄存器 LFSR
(1)概述
LFSR 包括 16 个 31 比特寄存器单元变量 0
S
,
S
1
,
S 。
,
15
LFSR 的运行模式有 2 中:初始化模式和工作模式。
(2)初始化模式
在该模式下,LFSR 接收一个 31 比特字 u,u 是非线性函数 F 的 32 比特输
出 W 通过舍弃最低位比特得到,即 u=W>>1。在初始化模式下,LFSR 计算过程
如下:
ZUC 算法上层为定义在素域 GF(231-1)上的线性反馈移位寄存器(LFSR),这
是 ZUC 算法设计的一大创新。
目前常见流密码体制的 LFSR 均采用二元域或二元域的某个扩域上的 m 序
列。初始化模式工作原理表示为:
(3)工作模式
在工作模式中,LFSR 不接收任何输入,它的工作原理表示为:
(4)比特重组
从 LFSR 的 8 个单元 S0,S2,S5,S7,S9,S11,S14,S15 里按照取半合并的方式,形
成 4 个 32 位的数据(X0,X1,X2,X3)。比特重组的主要作用是破坏 LFSR 寄存器
值的线性结构,从而使一些针对素域 GF(231-1)的攻击变得困难。比特重组的结
果主要用于下面的非线性函数 F 和密钥流输出。比特重组过程如下:
(5)非线性函数 F
非线性函数 F 有三个输入 X0,X1,和 X2,一个 32 位字 W 的输出,另外
还包括 2 个 32 位的 R1 和 R2。在非线性函数 F 的设计上,ZUC 算法设计充分借
鉴了分组密码的设计技巧,采用 S 盒和高扩散特性的线性变换 L,非线性函数 F
具有高的抵抗区分分析、快速相关攻击和猜测确定攻击等方法的能力。此外,非
线性函数 F 的 s 盒采用结构化设计方法,在具有好的密码学性质的同时降低了硬
件实现代价,具有实现面积小、功耗低等特点。F 的详细过程如下:
(三)执行过程
ZUC 加密算法的执行过程包含如下四个阶段,分别是赋初值阶段,初始化
阶段,工作阶段,密钥流产生阶段,如下图所示: