一、ZUC算法简介
ZUC算法(祖冲之算法)是中国自主研发的一种流密码算法,2011
年被3GPP批准成为4G国际标准,主要用于无线通信的加密和完整性保护。ZUC算法在逻辑上采用三层结构设计,包括线性反馈移位寄存器(LFSR)
、比特重组(BR)
和非线性函数F
。ZUC算法集包括祖冲之算法、加密算法128-EEA3
和完整性算法128-EIA3
,已被国际组织3GPP推荐为4G无线通信的第三套国际加密和完整性标准的侯选算法。
二、ZUC算法流程
- 关键步骤(Operation):
LFSR:线性反馈移位寄存器生成一系列的内部状态。分为2种模式:初始化模式
和工作模式
1.初始化模式:
LFSR接收1个31比特字“的输人,对寄存器单元变量s0,s1…s15进行更新。
2.工作模式
:LFSR无输人,直接对寄存器单元变量s0,s1…s15进行更新。
比特重组(BR):从LFSR的寄存器单元中抽取128比特组成4个32比特字。
输入为LFSR寄存器单元变量s0,s2,s5,s7,s9,s11,s14,s15,输出为4个 32 比特字 X0、X1、X2、X3
非线性函数F:将LFSR生成的状态进行复杂的非线性变换,增强密钥流的随机性。把一个96比特压缩为32比特的一个非线性压缩函数。
F的输人为3个32比特字X0、X1、X2,输出为一个32比特字W。
密钥装入:密钥载入过程将128比特的初始密钥k和128比特的初始向量iv扩展为16个31比特长的整数,作为LFSR寄存器单元s0,s1…s15的初始状态。
2.算法运行
祖冲之算法的输入参数为初始密钥k
、初始向量iv
和正整数L
,输出参数为L 个密钥字Z。算法运行过程包括初始化步骤
和工作步骤
。
初始化(Key and IV Setup):
调用密钥装载过程,将128比特的初始密钥k
和128比特的初始向量iv
装入到FSR的寄存器单元变量S0,S1,S2…S15中作为LFSR的初态;并置非线性函数F中的32比特存储单元R1和R2全为0。然后重复循环过程32次。
以下是ZUC算法的特点,以表格形式呈现:
特点 | 描述 |
---|---|
算法类型 | 流密码算法 |
密钥长度 | 128位 |
IV长度 | 128位 |
输出 | 生成32位的密钥流 |
结构 | 由LFSR、BR(比特重组)和F(非线性函数)三部分组成 |
LFSR | 16级线性反馈移位寄存器,基于素域GF(2^31 - 1)的m序列 |
BR(比特重组) | 破坏LFSR在素域上的线性结构,增强随机性 |
F(非线性函数) | 包含S盒,提供非线性,确保算法安全的关键部分 |
S盒 | 由4个8x8的S盒并置而成,其中S2=S0,S3=S1 |