来自:学前班
理解DES密码体制的几个要点[整理]
很多人感觉DES算法很复杂,不容易看懂,其实不然。DES算法虽然看起来很复杂,其实只不过用了几种简单运算:替换、移位、异或。下面我简单整理一下DES密码体制的几个要点,也许有帮助。
1、DES是一种按分组密码工作的对称密码体制。所谓分组密码,即把明文信息先编码为二进制代码,然后64bit一组,对每一组进行加密运算,最后再组合成为相应的密文。所谓对称密码体制,即加密密钥和解密密码相同,或由其中一个很容易推导出另外一个。在DES密码体制中,解密密钥正好是加密密码的逆序排列。即同一组(16个)密钥顺序输入DES模块可以加密,而把同一组密钥逆序输入DES模块则可以完成解密。所以,DES密码体制的安全性不取决于算法本身,而取决于密钥的安全性和保密性。
2、DES的主要过程可以分为三个步骤:初始变换IP、16次迭代、初始逆变换IP-1。初始变换和逆变换不影响DES的安全性,只是为了使得算法更加难以理解。并且有IP×IP-1=E,即同一组数据先经过IP变换,接着进行IP-1变换,会得到原来数据。而16次迭代的主要过程为:把明文经过IP变换以后的64bit数据分为两个32bit的数据(R0和L0),然后按下面的式子进行迭代(Li=Ri-1;Ri=Li-1^F(Ri-1,Ki-1)),即前一次迭代得到的R作为新的L,而把前一次迭代得到的R和当前子密钥经过F函数运算后再与前一次迭代得到的L进行异或运算,然后作为新的R。
3、轮函数F是DES算法的关键。在F函数中,首先对前一轮的R(32bit)进行扩展置换,得到48bit的一个矩阵,然后把这48bit数据和当前子密钥(48bit)进行异或运算,得到新的48bit数据;接下来把这48bit分成8个6bit的数据,然后进行S盒变换(是一种压缩变换)。其实S盒变换主要是一个查表过程,其输入为上面产生的6bit数据,而输出是4bit数据,一共有8个这样的S盒,总输入为48bit,总输出为32位,所以是一个压缩变换。S盒对6bit输入进行的操作为:取第一位和最后一位,组成2bit数据,用按权展开式计算得到一个十进制数(设为row);取6bit数据的中间4bit,按权展开式计算得到一个十进制数(设为col),然后取当前表中第row行第col列的数据(取值范围为0——15),将其转换为4bit的二进制数,作为输出。
4、子密钥Ki的产生。在DES的16轮迭代中,使用了不同的子密钥。但这16个子密钥由同一个原始密钥(56bit)移位产生而来,并没有使用独立子密钥(据分析,使用独立子密钥将会降低DES对差分攻击的抵抗力)。子密钥产生的过程为:将原始密钥(64bit,其中包括8个校验位)经过初始变换,得到有效密钥(56bit),将其分为两个28bit数据,然后进行循环左移位得到新的56bit密钥,再经过一个压缩变换得到每一轮的48bit子密钥,用来和上面3中的48位数据进行异或运算。需要注意的是,产生子密钥过程中每一轮对两个28bit数据的循环左移位位数是经过精心计算的,不能随意更改。如果改变移位的位数将会降低DES对相关密钥密码分析的抵抗力。
5、DES密码体制的加密模块和解密模块几乎一样,只是密钥顺序不一样,所以比较适合于硬件实现。
6、DES算法速度很快,如果都使用硬件实现,DES的速度几乎是RSA的1000倍左右,软件实现也比RSA大概快100倍左右。
7、DES算法本身不能保证密钥的保密性,所以往往需要借助于RSA密码体制在发送方和接收方之间共享DES的密钥。
8、DES算法抵抗线形攻击的能力较低,因为S盒的选择与设计阶比较低,且不是随机选择的。
9、1998年,美国国家标准局宣布不再保证DES算法的安全性,取而代之的是Rijndael算法。
















