DES加密算法|密码学|网络空间安全

一·什么是DES算法

DES是一个分组加密算法,就是将明文分组进行加密,每次按顺序取明文一部分,一个典型的DES以64位为分组,加密解密用算法相同。它的密钥长度为56位,因为每组第8位是用来做奇偶校验,密钥可以是任意56位的数,保密性依赖于密钥。 DES算法的核心主要包括两部分,第一部分是Feistel结构,第二部分是16个子密钥的生成。

二·基本原理

DES算法为密码体制中的对称密码体制,⼜被称为美国数据加密标准。DES是⼀个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密⽤的是同⼀个算法。

密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),分组后的明⽂组和56位的密钥按位替代或交换的⽅法形成密⽂组。

三·DES加密算法

大体分为四部分:

1.初始置换IP

2.生成16个48位的子密钥

3.16轮feistel结构迭代
a) 扩展置换E
b) S盒代换
c) 置换P

4.逆初始置换Ip^(-1)(与初始置换IP差不多)

步骤:

(1)初始IP置换

IP置换⽬的是将输⼊的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位。

DES加密算法中的IP置换,也称为初始置换(Initial Permutation),是指将输入的64位明文进行置换,得到一个新的64位数据,作为加密算法的输入。

IP置换的规则如下:

  • 将输入的64位明文按照如下表格进行重排,得到一个新的64位数据。

例如,如果输入的明文为 1101010010111111100100101011000101110111000001011010110111101101,经过IP置换后产生的新数据为 0101000101111000010101011100110101010110010000101011010000010001

作用:IP置换可以混淆明文中的数据,增强加密算法的安全性。同时,它也为后续的加密操作提供了一个良好的输入条件。

(2)生成16个48位的子密钥

不考虑每个字节的第8位,DES的密钥由64位减⾄56位,每个字节的第8位作为奇偶校验位。产⽣的56位密钥由规则表⽣成;

在DES的每⼀轮中,从56位密钥产⽣出不同的48位⼦密钥,确定这些⼦密钥的⽅式如下:

  1. 将原始的64位密钥进行置换操作,得到56位的密钥。置换操作使用的是PC-1置换表。
  2. 56位的密钥分成左右两个28位的部分,分别称为C0D0
  3. C0D0进行16轮的循环左移操作,得到C1C16D1D16
  4. C1C16D1D16组合成56位的密钥,再进行一次置换操作,得到48位的子密钥。
  5. 将生成的48位子密钥依次存储起来,即可得到16个48位的子密钥

其中,循环左移操作的规则如下:

对于第1轮至第16轮,移位的位数由下表给出:

Round ShiftBits 1 1 2 1 3 2 4 2 5 2 6 2 7 2 8 2 9 1 10 2 11 2 12 2 13 2 14 2 15 2 16 1

移位操作的过程中,左端的位移动到右端,右端的位移动到左端。

(3)16轮feistel结构迭代

原理:

Feistel结构是一种加密算法的结构,它的核心是迭代过程。其迭代原理如下:

  1. 将明文分成左右两个部分LRLR长度相等)。
  2. R作为下一轮的L,先对R进行一系列变换,然后与当前轮的密钥进行异或运算得到新的R
  3. 将新的L和新的R组合成一个新的明文块,并作为下一轮的输入。
  4. 重复执行第2和第3步,直到达到预定的轮数。
  5. 最后将最后一轮的L和R互换,得到密文。

在每一轮中,相同的加密算法和密钥都被使用,可以理解为是一个加密函数F,它将右边的部分R和轮密钥进行变换,并将结果与左边的部分L进行异或运算,得到新的R。这样,每一轮的输出都依赖于密钥和上一轮的输出。整个过程是可逆的,因此可以使用相同的解密算法和密钥来还原原始的明文。

a)扩展置换E

扩展置换⽬标是IP置换后获得的右半部分R0,将32位输⼊扩展为48位(分为4位×8组)输出。

具体来说,扩展置换E的操作步骤如下:

  1. 32位数据分成8个4位的分组
  2. 对于每个分组,将其两侧各加入一个相邻的分组的中间两位,从而将分组扩展为6位。
  3. 用密钥进行48位的置换,将每个扩展后的6位分组映射为另一个6位分组。
  4. 48位分组重新分组为8个6位的分组
  5. 将每个6位分组转换为一个4位分组,得到最终的48位数据。

扩展置换E的作用是增加数据的混乱度,使加密算法更加安全可靠。同时,由于DES算法使用了密钥加密,每轮操作都需要重新计算48位数据,增加了被攻击者破解密钥的难度。

b) S盒代换

压缩后的密钥与扩展分组异或以后得到48位的数据,将这个数据送⼈S盒,进⾏替代运算。替代由8个不同的S盒完成,每个S盒有6位输⼊4位输出。48位输⼊分为8个6位的分组,⼀个分组对应⼀个S盒,对应的S盒对各组进⾏代替操作。

S盒代换的具体步骤如下:

  1. 6位比特的明文拆分成两部分,前两个和最后一个比特共同组成一个二进制数,中间4个比特组成另一个二进制数。
  2. 将第一个二进制数作为S盒的行数,第二个二进制数作为S盒的列数,查找S盒对应的数值。
  3. S盒代换后得到的4位比特作为密文的一部分。
  4. 将明文中的所有6位比特均进行上述操作,得到的所有4位比特组成密文。

S盒代换是DES算法中非常重要的一步,它可以有效地混淆明文,增加加密的难度,提高加密强度。

c)置换P

S盒代替运算的32位输出按照P盒进⾏置换。该置换把输⼊的每位映射到输出位,任何⼀位不能被映射两次,也不能被略去,映射规则按规则表;

具体操作如下:

1. 32位输入数据按位分成8组,每组4位。

2. 对每组4位数据进行一定的置换操作,得到新的4位数据。置换操作的规则固定不变,称为S盒运算。

3. 8组新的4位数据合并成一个32位的输出数据。

P置换的作用是将输入数据的不同位置的位混淆,增加加密的难度,提高数据的安全性。

P表格的结构如下:

具体的置换方式是将输入的32位数据按位位置放到P表格中对应的位置上,如下图所示:

(4)IP^(-1)末置换

末置换是初始置换的逆过程,DES最后⼀轮后,左、右两半部分并未进⾏交换,⽽是两部分合并形成⼀个分组做为末置换的输⼊。

IP-1 也称为逆初始置换(Inverse Initial Permutation),是初始置换 IP 的逆置换,用于反转初始置换的效果。它的作用是将输出的 64 位密文块重新排列回初始的 64 位明文块的顺序。

IP-1 根据以下表格进行置换:

例如,加密过程中进行了初始置换 IP,输出了一个 64 位的二进制数。此时,如果需要将其转换回初始的 64 位明文块,则需要对该 64 位数进行 IP-1 逆置换,即按照上述表格中的顺序重新排列该 64 位数的位置。

四·DES算法优缺点

优点:

  1. 安全性高:DES加密算法应用了分组密码技术,采用了密钥+明文的方式进行加密,加密强度高,攻击难度大。
  2. 速度较快:DES算法采用硬件电路实现,具有加密解密速度快的优点。
  3. 适用性强:DES算法可以广泛应用于各种领域,如金融、通信、数据安全等。

缺点:

  1. 密钥长度短:DES密钥长度只有56位,被认为安全性过低。
  2. 易受穷举攻击:由于DES密钥长度短,易受到穷举攻击,使得DES算法的安全性受到了很大的挑战。
  3. 容易受到差分攻击:DES算法使用了分块加密技术,因此会出现同一块明文加密后得到相同密文的情况,容易被利用差分攻击。

以上给大家介绍了什么是DES算法,以及DES算法的基本原理。总而言之,普通DES算法密钥长度较短,容易被暴力解密。但是,可通过增加DES的密钥长度来避免类似的攻击。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值