DES分组密码算法设计理论研究初探

2013-04-29 00:11李丽坤田利芹
关键词:比特密钥密码

李丽坤 田利芹

摘要:随着科学技术的不断进步,计算机和通信技术有力长足发展。用户迫切需要对信息进行安全存储,信息的安全性逐渐成为时代的主体。在这种背景下,现代密码学应运而生。其中,分组密码作为现代密码学的重要分支,在实际应用中发挥着重要作用。本文通过研究分析分组密码的设计原理及其整体结构,并详细阐述了S盒、P置换、轮函数的设计准则及其构造,以及密钥扩展算法的设计等,进而为用户的信息安全提供理论保证。

关键词:分组密码DES轮算法

随着科学技术的不断进步,计算机网络得到了普及和推广,进而推动通信技术的发展。同时,用户信息的安全性受到严重的冲击和考验,为了确保用户的信息安全,通过借助先进的密码技术对用户信息进行保护。在这种背景下,分组密码凭借速度快,标准化简单,以及软硬件实现容易的优势,进而在信息和网络安全中实现数据加密、数字签名、认证以及管理密钥等,在信息安全领域得到推广和使用,其诞生和发展无论对理论还是实践都具有重要的价值。

1 分组密码的设计原则

通过寻找一种算法来完成分组密码的设计,在密钥的控制下该算法能够从一个置换子集中简单快捷地选出一个置换,进而对输入的明文完成加密变换。通常情况下,一个良好的分组密码要具备难破译和易实现双重优点,借助加密函数E(·,k)和解密函数D(·,k)是可以计算的。但是,想通过利用方程y=E(x,k)和x=D(y,k),进而解出密钥k却是十分困难的。分组密码的设计原则分为:

1.1 实现原则 所谓实现原则就是分组密码可以通过软件和硬件实现。其中,软件实现的优点具有很强的灵活性、代价比较低;硬件实现的优点是速率高。在性质方面由于软硬件之间存在的差异较大,通常情况下借助预定的实现方法对分组密码设计原则进行考虑。①软件实现的原则。密码的简单运算是借助字块来实现的。由于在字块上实现密码的运算,所以,在长度方面要求子块要与软件编程彼此相互适应,比如8B、16B、32B等。在通过软件实现的设计原则中,利用比特置换实现起来存在一定的难度,因此在实践中尽量少用它。通过子块进行的密码运算从根本上说利用软件是容易实现的,其中较为理想的借助标准处理器自身所具备的如加法、乘法和移位等指令。②硬件实现的原则。通常情况下,加密盒解密的相似性,实际上就是对加密盒进行解密的过程仅在于使用密钥的方式不同而已,也就是采用同样的器件完成加密和解密的双重功能。一般情况下硬件实现依靠规则结构,通过标准化组件结构与超大规模集成电路相互适应。

在设计原则方面,迭代密码与上述原则相似。通过简单的轮函数便可实现迭代密码,通过选择适当的轮函数,必要的混乱和扩散经过若干次迭代后可以实现。

1.2 安全原则 分组长度、密钥长度等因素都会对安全构成一定的影响。有关实用密码的两个一般的设计原则为:①混乱原则。通常情况下,人们设计的密码应确保密钥和明文、密匙和密文之间存在相当复杂的依赖关系,密码分析者无法利用依赖关系。②扩散原则。密码设计者设计的密码,在一定程度上密钥的每一位数字影响密文的多位数字,进而在最大限度上,避免逐段破译密钥。对于密文的许多数字也要影响明文的每一位数字,进而隐蔽多位数字的统计特性。

另外,在攻击方面,密码体制必须对所有攻击方法能具备抵抗作用。

2 分组密码的整体结构

Feistel网络由Horst Feistel在设计Lucifer分组密码时发现的,因DES的使用而广为流行,Feistel网络又称Feistel结构,其功能是将函数(轮函数)转化为一个置换,Feistel型密码的实现的优点是加密与解密相似。另外,Feistel型密码算法需要两轮才能改变输入的每一比特,因此,在扩散方面比较慢。Feistel网络经Schneier B和Kelsey J推广到非平衡Feistel网络(又称非平衡Feistel结构),简记为UFN。所谓UFN就是Feistel网络左边和右边长度不一样。与此相对应的原始的Feistel网络又称平衡Feistel网络,简记为FN。

3 S盒的设计准则和构造

3.1 设计准则 在Lucifer算法中首次出现S盒,随着DES的使用S盒变得广为流行。在许多密码算法中S盒是唯一的非线性部件。因此,整个密码算法的安全强度受到S盒密码强度的影响。在本质上可以将S盒看作S(X)=(f1(x),…,fm(x)):F2n F2m的映射,通常情况下可以简称S是一个n×m的S盒。当选择的参数m和n比较大时,所有的S盒几乎都是非线性的,而且难以发现某些攻击所用的统计特性。同样,过大的m和n将增加算法的存储量,给S盒的设计带来许多困难。当前,比较流行的S盒是8×8的。S盒的功能是为分组密码算法提供混淆作用,设计S盒的准则为:①非线性度。②差分均匀性。③代数次数及项数分布。④完全性和雪崩效应。⑤扩散特性。⑥可逆性。⑦没有陷门。

3.2 构造S盒的方法 ①随机选取并测试。通过随机选择的小规模的S盒,其安全性并不高。但也有实践表明,随着S盒规模的增大,其随机产生的密码性能就越好。随着n值的不断增大,F 上的置换均是非退化置换,特别是当S盒一方面既随机,另一方面对密钥构成依赖时,那么S盒的强度就会越高。通过进行随机选取,利用测试对某些特定需求进行筛选。在时间和计算能力允许的情况下,设计者利用该方式可以构造所需的S盒,而且使用户坚定没有陷门的信心。②按规则构造并测试。借助已有的“好”的S盒,进而在一定程度上对满足需要的S盒进行构造,通过这种构造方式,利用DES的S盒生成Serpent算法所用的S盒。并且通过此种方法构造的S盒使用户相信没有陷门。

4 P置换的设计准则及其构造方法

4.1 P置换准则 一般情况下,通过将若干个S盒进行并置,进而构成SP网络中的混淆层,P的目的是制造雪崩效应,而一个置换P可以实现扩散层。由于在软件实现中难以实现比特置换,因此,如果m个n×n的S盒并置而成混淆层,一般将P设计成(F2n)m→(F2n)m的一个置换,其中(F2n)m=F2n×…×F2n。

4.2 P置换的构造方法 ①分支数最佳的置换P的构造。②多维2-点变换扩散器(multi-dimensional 2-point

transform diffuser)。其中,上述两种构造方法各具优势,方法①实现起来比较困难,但是构造的P的分支数是最佳的;相对①而言方法②实现起来相对容易,但是所构造的P的分支数比较少。

5 轮函数的设计准则及其构造

5.1 设计准则 ①安全。②速度。③灵活。

5.2 构造轮函数 在当前的密码算法中,轮函数分为:①有S盒的,例如,DES、LOKI系列、E2等。②没有S盒的,例如,IDEA,RC5、RC6等。对于没有S盒的轮函数,通过借助加法运算、乘法运算、数据依赖循环等实现“混淆”。

6 密钥扩展算法的设计

所谓密钥扩展算法就是由种子密钥生成的子密钥的算法,子密钥统计的独立和灵敏性是密钥扩展算法理论设计的目标。子密钥统计独立在密码算法设计中是不可能做到的,在设计的过程中,设计者只能使子密钥趋于统计独立。对于密匙扩展算法的灵敏性是指密钥更换的有效性,即对种子密钥的少数几比特进行改变,在较大范围对子密钥进行改变。为了实现上述目标,设计密钥扩展算法应遵循:①实现简单。②速度。③没有简单关系。④每个子密钥比特受种子密钥所有比特的影响相似。⑤在计算上难以实现从一些子密钥比特获得其他的子密钥比特。⑥没有弱密钥。

参考文献:

[1]冯登国,吴文玲.分组密码的设计与分析[M].清华大学出版社,2009.

[2]Adams C,Tavares S.The structured design of cryptographically good S-boxes.Journal of Cryptology,1990.3(1):27-

41.

[3]Detombe J,Tavares S.Constructing large cryptographically strong S-boxes.In:Advances in Cryptology-Auscrypt92 Proc,Berlin:Springer-Verlag,2008.,165-181.

[4]O,Connor L.Enumerating nondegenerate permutations. In:Advances in Cryptology-Eurocrypt91,Berlin:Springer-Verlag,2010,368-377.

猜你喜欢
比特密钥密码
探索企业创新密钥
密码里的爱
密码系统中密钥的状态与保护*
密码抗倭立奇功
一种对称密钥的密钥管理方法及系统
比特币还能投资吗
比特币分裂
基于ECC的智能家居密钥管理机制的实现
比特币一年涨135%重回5530元
密码藏在何处