祖冲之是中国古代杰出的数学家、天文学家,他首次将“圆周率”精算到小数第七位,是世界第一位将圆周率值计算到小数第7位的科学家。今天我们就来了解一下以这位数学家命名的加密算法——祖冲之算法。
什么是祖冲之算法?
祖冲之算法又叫做ZUC算法,是由我国学者自主设计的加密和完整性算法,包括加密算法128-EEA3和完整性算法128-EIA3,成为3GPP LTE 第三套加密标准核心算法,是我国第一个成为国际密码标准的密码算法。
祖冲之算法原理
祖冲之算法分为上中下三层。上层是16级线性反馈移位寄存器;中层是比特重组;下层是非线性函数F。
- 上层(16级线性反馈移位寄存器)
在初始化模式中,LFSR接收一个31比特的字节u,u来自于下层非线性函数F的32比特输出W通过舍弃了最低位得到,即u=W>>1。而工作模式没有输入。
- 中层(比特重组)
比特重组从LFSR的寄存器单元中抽取128比特组成4个32比特字X0、X1、X2、X3,其中前3个字用于下层的非线性函数F,第4个字参与密钥流计算。
- 下层(非线性函数F)
非线性函数F有2个32比特长的存储单元R1和R2,其输入来自上一层比特重组的3个32比特字X0、X1、X2,输出为一个32比特字W。
祖冲之算法的特点
- 上层特点
祖冲之算法上层为定义在素域 GF(231 - 1) 上的线性反馈移位寄存器(LFSR),这是 ZUC 算法设计的一大创新。目前常见流密码体制的 LFSR 均采用二元域或二元域的某个扩域上的 m 序列。这种序列具有明显的多重线性关系,这使得以其为序列源的密码算法容易受黠相关攻击。
而祖冲之算法的 LFSR 设计首次采用素域 GF(231 - 1) 的 m 序列。该类序列周期长、统计特性好,且在特征为 2 的有限域上是非线性的,其具有线性结构弱、比特关系符合率低等优点。
因而采用GF(231 - 1) 上的 LFSR 设计的 ZUC 算法具有天然的强抵抗二元域上密码攻击方法的能力,譬如二元域上的代数攻击、区分分析和相关攻击等。此外,由于素域 GF(231 - 1)上的乘法可以快速实现, ZUC 算法 LFSR 在设计时充分考虑到安全和效率两方面的问题,在达到高安全目标的同时可以非常高效地软硬件实现。
- 中层特点
祖冲之算法的中间层为比特重组,比特重组采用取半合并技术,实现 LFSR 数据单元到非线性函数 F 和密钥输出的数据转换,其主要目的是破坏 LFSR 在素域上 GF(231 - 1) 上的线性结构。
结合下层的非线性函数 F,比特重组可使得一些在素域 GF(231 - 1) 上的密码攻击方法变得非常困难。
- 下层特点
下层非线性函数 F 的 S盒采用结构化设计方法,在具有好的密码学性质的同时降低了硬件实现代价,具有实现面积小、功耗低等特点。
经过这三层结构的综合运用, ZUC 算法具有非常高的安全强度,能够抵抗目前常见的各种流密码攻击方法。
祖冲之加密算法是我国商用密码算法首次走出国门,参与国际标准竞争。由于祖冲之算法安全优秀,已得到国内外著名密码学家的认可,对其安全强度给予了很高的评价。
免责声明:素材源于网络,如有侵权,请联系删稿。