加密解密技术

DES技术

  • DES加密,又叫对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码),是一种对称加密算法
  • 数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用DEA。它出自IBM的研究工作,现在也免费公用。
  • 数据加密标准DES
  • DES的原始思想可以参照二战德国的恩格玛机,其基本思想大致相同。传统的密码加密都是由古代的循环移位思想而来,恩格玛机在这个基础之上进行了扩散模糊。但是本质原理都是一样的。现代DES在 二进制级别做着同样的事:替代模糊,增加分析的难度。
  • 加密原理
    DES 使用一个 56 位的 密钥以及附加的 8 位 奇偶校验位,产生最大 64 位的分组大小。这是一个 迭代分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“ 异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。
  • 三重DES: DES 的常见变体是三重 DES,使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。
  • 3DES(即Triple DES)是DES向AES过渡的 加密算法,它使用3条56位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。
    该方法使用两个密钥,执行三次DES算法,加密的过程是加密-解密-加密,解密的过程是解密-加密-解密。
    3DES加密过程为:C=Ek3(Dk2(Ek1(P)))
    3DES解密过程为:P=Dk1(EK2(Dk3(C)))
    采用两个密钥进行三重加密的好处有:
    ①两个密钥合起来有效密钥长度有112bit,可以满足商业应用的需要,若采用总长为168bit的三个密钥,会产生不必要的开销。
    ②加密时采用加密-解密-加密,而不是加密-加密-加密的形式,这样有效的实现了与现有DES系统的向后兼容问题。因为当K1=K2时,三重DES的效果就和原来的DES一样,有助于逐渐推广三重DES。
    ③三重DES具有足够的安全性,目前还没有关于攻破3DES的报道
  • 破解方法:攻击 DES 的主要形式被称为蛮力的或彻底密钥搜索,即重复尝试各种密钥直到有一个符合为止。如果 DES 使用 56 位的密钥,则可能的密钥数量是 2 的 56 次方个。随着计算机系统能力的不断发展,DES 的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过 ,DES 现在仅用于旧系统的鉴定,而更多地选择新的加密标准 — 高级加密标准(Advanced Encryption Standard,AES)。
  • 新的分析方法有差分分析法和线性分析法两种。

DES背景

DES算法是第一个公开的密码算法,它是一个迭代型分组密码算法,分组长度64比特,密钥长度64比特,有效密钥长度56比特,迭代圈数16圈,圈密钥长度48比特。

DES算法概述

基本流程

DES算法的基本流程如下图所示,对于一个64位的分组(用m1,m2...m64分别表示第1到第64个比特),首先对它进行初始置换,然后进行16圈的迭代,迭代中每一圈的密钥不同,分别是k1,k2。。。k16。之后对结果进行逆初始置换,得到密文c1,c2...c64。如下图所示(来自老师上课课件):

初始置换和逆初始置换

对于明文M = m1m2...m64,按照下图所示的初始置换IP指示的顺序从输出中取出指定的位放在这一位上,得到输出,比如c1 = c58,c2=c50.。。。以此类推
逆初始置换是初始置换的逆变换,用表格表示如下图,
设输入为m1m2...m64,输出为c1c2...c64,则
c1c2c3c4c5c6c7c8 = m40m8m48m16m56m24m64m32
...
它的效果和初始置换刚好互逆,即如果把初始置换的输出作为它的输入,则输出为初始置换的输入。
 

圈函数

初始置换之后的输出要进行16圈迭代。
圈函数使用的是Feistel模型,它的数学描述如下:
第1,2.。。。15圈的圈加密结构图如下
每一圈迭代过程中:
  • 输出的左32位就是输入的右32位
  • 输出的右32位是输入的右32位和圈密钥k进行f函数运算后和输入左32位异或运算得到。

圈函数

f函数

f函数的数学表达式如下
f函数的运算流程如下图所示:
 
  • 先对右32位输入进行E盒运算得到48位输出
  • 再把运算结果和48位的圈密钥进行异或之后输入到s1,s2...s8盒中
  • 每个S盒都是6进4出(输入为6比特,输出4比特),综合得到32位输出
  • 把结果输入到P盒中,进行P盒置换,最后得到32位输出。

E盒扩展

E盒扩展的作用是把32比特的输入扩展成48比特,扩展的方式如下图所示,把输入的32比特从左到右编号为1,2,3.。。。32,并把 这32比特写成每行4个,共8行的形式。然后把第i-1行最右比特和第i+1行最左比特添加到第i行的左边和右边,这样就得到了48bit的输出。(即c1c2c3c4c5c6 = m32m1m2m3m4m5 .... 以此类推)。

S盒代替——压缩替代变换

S盒的作用是将输入的48比特数据压缩为32比特。
8个6进4出的S盒如下图所示,每个S盒有4行,记为第0,1,2,3行,有16列,记为第0,1,2,3.。。。,15列。
以s6为例解释s盒的使用方法:
对于6位输入b1b2b3b4b5b6,用b1b6组成的二进制数表示行标,b2b3b4b5组成的二进制数表示列标,查s盒的表,表中的十进制数字转为4位二进制即为输出

P盒置换——移位变换

P盒置换是对S盒变换后的32比特数据进行比特置换,置换后得到的32比特数据即为f函数的输出。
P盒置换的方式和初始置换相同,如c1c2c3c4 = m16m7m20m21 .... 如下图所示,以此类推。

圈密钥生成算法

64位的密钥首先进行置换选择1,得到56位的有效密钥,置换选择1如下图所示,进行方式同初始置换,c1c2c3c4c5c6c7 = m57m49m41m33m25m17m9,以此类推。
之后每一圈的48位圈密钥生成过程如下图所示:
把56位有效密钥分成左28位Ci和右28位Di,经过移位变换后得到Ci+1, Di+1,其中得到C/D1,C/D2,C/D9,C/D16前面的移位是循环左移两位,其余的为循环左移1位。
Ci和Di作为输入进行选择置换2,得到48位的输出为Ki。选择置换2如下图所示:
 
再次回顾DES算法加密的框图,我们已经掌握了算法流程中的每一个细节: )

脱密过程

DES的脱密框图如下图所示,DES的脱密运算和加密运算用的是同一个算法,二者的不同之处是圈密钥的使用次序相反,即脱密过程中第i圈(i=1,2,...,16)的圈密钥是加密过程中第17-i圈的圈密钥K17-i。证明过程在网上和教材中容易找到。

转载于:https://www.cnblogs.com/Trigger018/p/8004259.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值