对称加密算法DES

来源:互联网 发布:十天学会javascript 编辑:程序博客网 时间:2024/06/05 09:44

     实验一  对称密码算法----DES 

实验目的:

1.理解对称加密算法的原理和特点

2.理解DES算法的加密原理

实验基础:

  1. 什么是对称密码

根据密码算法所用的密钥数量,我们根据加密算法与解密算法所用的密钥是否相同,或是否能简单地由加/解密密钥导出解/加密密钥,我们将使用相同的密钥的方法称为对称密码

如上图所示,用K对明文M进行加密,生成密文C,密文发送给接收方 接收方利用密钥K(双方事先约定好的)对密文C进行解密。

    2对称密码体制有哪些特点?

对称密钥加密机制即对称密码体系,也称为单钥密码体系和传统密码体系。对称密码体系通常分为两大类,一类是分组密码(如DES、AES算法),另一类是序列密(如RC4算法)。

对称密码体系加密和解密时所用的密钥是相同的或者是类似的,即由加密密钥可以很容易地推导出解密密钥,反之亦然。同时在一个密码系统中,我们不能假定加密算法和解密算法是保密的,因此密钥必须保密。发送信息的通道往往是不可靠的或者不安全的,所以在对称密码系统中,必须用不同于发送信息的另外一个安全信道来发送密钥。图1.1描述了对称密码(传统密码)系统原理框架,其中M表示明文;C表示密文;E表示加密算法;D表示解密算法;K表示密钥;I表示密码分析员进行密码分析时掌握的相关信息;B表示密码分析员对明文M的分析和猜测。

    .对称密码优点:具有加密效率高,硬件实现可达每秒数百兆字节 ;

密钥相对比较短;

可以用来构造各种密码机制;

可以用来建造安全性更强的密码 ;

     缺点:通信双方都要保持密钥的秘密性。

在大型网络中,每个人需持有许多密钥。

为了安全,需要经常更换密钥。

     3  什么是Feistel结构?

         Feistel结构是由Horst Feistel 在设计Lucifer分组密码时发明的,并由DES的使用而流行。其实Feistel结构是典型的迭代密码。具体步骤为:

      对一个分组长度为2n位的r轮Feistel型密码,其加密过程如下:

(1)   给定明文P,记P=L0R0,这里L0是P的左边n位 R0是右边n位

(2)   进行r轮完全相同的运算,如第i(1<=i<=r)轮运算为

Li=Ri-1

 Ri=Li-1+F(Ri-1,Ki)

 F是轮函数,Kl,…是由种子密钥生成的子密钥

(3)输出密文为C=RrLr.

   4.DES加密算法的起源

1973年5月15日,美国国家标准局在联邦注册报上发表一则启事,公开征集用来保护传输和静止存储的计算机数据的密码算法,这一举措最终导致了数据加密标准DES的出现。DES采用分组乘积密码体制,它是由IBM开发的,是对早期Lucifer密码体制的改进。DES在1975年3月17日首次在联邦记录中公布,而且声明对此算法征求意见。到1977年2月15日拟议中的DES被采纳为“非密级”应用的一个联邦标准。

最初预期DES作为一个标准只能使用10至15年。然而,出于种种原因,可能是DES还没有受到严重的威胁,事实证明了DES要长寿得多。在其被采用后,大约每隔5年被评审一次。DES的最后一次评审是在1999年1月。但是,随着计算机计算能力的提高,由于DES的密钥过短,仅有56位,对DES的成功攻击也屡见报导。例如:1999年1月,RSA数据安全公司宣布:该公司所发起的对56位DES的攻击已经由一个称为电子边境基金的组织,通过互联网上的100000台计算机合作在22小时15分钟内完成。

NIST(美国国家标准研究所)于1997年发布公告征集新的数据加密标准作为联邦信息处理标准以代替DES。新的数据加密标准称为AES。尽管如此DES的出现仍然是现代密码学历史上一个非常重要的事件。它对于我们分析掌握分组密码的基本理论与设计原理仍然具有重要意义。

5 DES算法的原理:

DES是一种分组加密算法,所谓分组加密算法就是对一定大小的明文或密文来做加密或解密动作。在DES加密系统中,每次加密或解密的分组大小均为64位,所以DES没有密文扩充的问题。对大于64位的明文只要按每64位一组进行切割,而对小于64位的明文只要在后面补“0”即可。

另一方面,DES所用的加密或解密密钥也是64位大小,但因其中有8个位是奇偶校验位,所以64位中真正起密钥作用的只有56位,密钥过短也是DES最大的缺点。

DES加密与解密所用的算法除了子密钥的顺序不同外,其他部分完全相同

 

  对于任意长度的明文,DES首先对其进行分组,使得每一组的长度为64位,然后分别对每个64位的明文分组进行加密。对于每个64位长度的明文分组的加密过程如下:

1)初始置换:输入分组按照初始置换表重排次序,进行初始置换。

2)16轮循环:DES对经过初始置换的64位明文进行16轮类似的子加密过程。每一轮的子加密过程要经过DES的f函数,其过程如下:

      将64位明文在中间分开,划分为2部分,每部分32位,左半部分记为L,右半部分记为R,以下的操作都是对右半部分数据进行的。

      扩展置换:扩展置换将32位的输入数据根据扩展置换表扩展成为48位的输出数据。

      异或运算:将48位的明文数据与48位的子密钥进行异或运算(48位子密钥的产生过程在实验原理八.子密钥产生过程中有详细讨论)。

      S盒置换:S盒置换是非线性的,48位输入数据根据S盒置换表置换成为32位输出数据。

      直接置换:S盒置换后的32位输出数据根据直接置换表进行直接置换。

      经过直接置换的32位输出数据与本轮的L部分进行异或操作,结果作为下一轮子加密过程的R部分。本轮的R部分直接作为下一轮子加密过程的L部分。然后进入下一轮子加密过程,直到16轮全部完成。

3)终结置换:按照终结置换表进行终结置换,64位输出就是密文。

在每一轮的子加密过程中,48位的明文数据要与48位的子密钥进行异或运算,子密钥的产生过程如下:

      循环左移:根据循环左移表对C和D进行循环左移。循环左移后的C和D部分作为下一轮子密钥的输入数据,直到16轮全部完成。

      将C和D部分合并成为56位的数据。

      压缩型换位2:56位的输入数据根据压缩型换位2表输出48位的子密钥,这48位的子密钥将与48位的明文数据进行异或操作。 


特点:

1从上图可以发现在16轮的迭代中(如果对于初始密钥K,生成的16个子密钥都相同,则称K是弱密钥)DES中有4个弱密钥。(如果有一对密钥K1,K2使的:DESk2*(DESk1(X))=DESk1(DESk2(X))=x,则称K1,K2是(互逆的)半弱密钥)在DES中有12个半弱密钥

 2代数结构存在互补对称性

   由于DES存在互补对称性,攻击者可以进行穷举攻击时仅需实验所有的2^56个密钥的一半

DES原理:

 DES主要就是利用S-盒的安全基础上,再对明文进行前后的初始置换,

置换的目的主要是为了打乱彼此之间的逻辑上得联系,E-扩展运算主要是为了达到混淆的目的,S-盒运算也是为了将彼此之间的逻辑混淆