信息安全工程师知识点:ZUC算法
ZUC算法,即祖冲之算法,是移动通信3GPP机密性算法EEA3和完整性算法EIA3的核心,是中国自主设计的加密算法。2009年5月ZUC算法获得3GPP安全算法组SA立项,正式申请参加3GPP LTE 第三套机密性和完整性算法标准的竞选工作。历时两年多的时间, ZUC 算法经过包括3GPP SAGE内部评估,两个邀请付费的学术团体的外部评估以及公开评估等在内的3个阶段的安全评估工作后,于2011年9月正式被3GPPSA全会通过,成为3GPPLTE 第三套加密标准核心算法。ZUC算法是中国第一个成为国际密码标准的密码算法。其标准化的成功,是中国在商用密码算法领域取得的一次重大突破,体现了中国离用密码应用的开放性和商用密码设计的高能力,其必将增大中国在国际通信安全应用领域的影响力,旦今后无论是对中国在国际商用密码标准化方面的工作还是商周密码的密码设计来说都有深远的影响。
ZUC是一个同步流密码算法,其以中国古代著名数学家祖冲之的拼音(ZU Chongzhi)首字母命名,中文称作祖冲之算法。该算法在设计之初就面拖着高的挑战。美国高级加密标准AES 和欧洲SNOW 3G已经被选为LTE 加密标准,它们是两个设计非常优秀的密码算法,具有非常高的安全强度。ZUC算法的设计必须做到不能比AES或SNOW3G差, 才有可能在3GPPLTE有立脚之处。面对挑战, ZUC算法的设计必须具有高安全、高效率以及新颖性等特点。其中高安全和高效率要求设计的新算法在安全和效率上不能比AES或SNOW3G低,而新颖性要求设计的密码算法在结构和部件上都有创新。然而密码算法设计发展到今天,许多经典结构和部件的设计都基本定型,要同时达到上述目标,无疑是一项非常艰巨的任务。
ZUC算法在逻辑上采用三层结构设计,如图2-24所示。上层为定义在素域GF(231-1)上的线性反馈移位寄存器(LFSR) ,这是ZUC算法设计的一大创新。目前常见流密码体制的LFSR均采用二元域或二元域的某个扩域上的m 序列。这种序列具有明显的多重线性关系,这使得以其为序列源的密码算法容易受黠相关攻击。ZUC算法的LFSR设计首次采用素域GF(231-1)的m序列。该类序列周期长、统计特性好,且在特征为2的有限域上是非线性的,其具有线性结构弱、比特关系符合率低等优点。因而采用GF(231-1)上的LFSR设计的ZUC 算法具有天然的强抵抗二元域上密码攻击方法的能力,譬如二元域上的代数攻击、区分分析和相关攻击等。此外,由于素域GF(231-1)上的乘法可以快速实现, ZUC算法LFSR在设计时充分考虑到安全和效率两方E的问题,在达到高安全目标的同时可以非常高效地软硬件实现。
ZUE算法中间层为比特重组。比特重组采用取半合并技术,实现LFSR数据单元到非线性函数F 和密钥输出的数据转换,其主要目的是破坏LFSR 在素域GF(231-1)上的线性结构。结合下层的非线性函数F,比特重组可使得一些在素域GF(231-1)上的密码攻击方法变得非常困难。
ZUE算法下层为非线性函数F。在非线性函数F 的设计上,ZUC算法设计充分借鉴了分组密码的设计技巧,采用S盒和高扩散特性的线性变换L, 非线性函数F 具有高的抵抗区分分析、快速相关攻击和猜测确定攻击等方法的能力。此外,非线性函数F的S盒采用结构化设计方法,在具有好的密码学性质的同时降低了硬件实现代价,具有实现面积小、功耗低等特点。
经过上述三层结构的综合运用,ZUC算法具有非常高的安全强度,能够抵抗目前常见的各种流密码攻击方法。其设计已得到国内外著名密码学家的认可,他们对其安全强度给予了很高的评价。
上面介绍的ZUC算法本质上是一种非线性序列产生器。由此,在种子密钥的作用下,可以产生足够长的安全密钥序列。把与密钥序列晓文数据模2 相加,便完成了数据加密。同样,把密钥序列与密文数据模2相加,便完成了数据解密。