1977年1月,美国政府将IBM公司设计的方案作为非机密数据的正式数据加密标准(Data Encryption Standard,DES)。它的算法是对称的,既可用于加密又可用于解密。
DES算法可以按4种运行模式之一使用,这4种运行模式分别是电码本模式、密码分组链接模式、输出反馈模式及密码反馈模式。其中,电码本模式是最简单的模式,安全性也最差;密码分组链接模式则经常以软件方法实现;输出反馈模式和密码反馈模式往往用于在硬件实现的算法中。这些内容将在本章2.2.3节中介绍。
DES是一个分组加密算法,它由16个基本单元所组成,每个基本单元都是由加密的两个基本技术——混合和扩散组合而成。置换后被分为左右各32位的两个子分组,通过16轮完全相同的运算之后合二为一,最后通过初始置换的逆置换获得密文。
图2-6为DES算法加密过程的具体描述。由图2-6可以看出,DES算法共需要16轮迭代运算。第i轮运算接受第i−1轮的输出(Li−1,Ri−1)和Ki,产生本轮的输出(Li,Ri)和Ki+1,而这些输出又将是下一轮运算(即第i+1轮运算)的输入。其中主要的计算工作是关于Ri。32位的Ri−1经过扩展置换后变成48位,56位的密钥Ki经过左右移位和压缩置换后也变成48位,两者经“异或”运算后作为S盒的输入。48位的数据经过S盒替换后变成32位,再经过P盒置换后与Li−1“异或”运算即生成Ri。在这些运算当中,扩展置换、移位、压缩置换以及P盒置换都是线性的、可逆的,唯有S盒替换是非线性的、不可逆的,所以说S盒替换是DES算法的关键。下面分别介绍DES算法的各个部分。
1.初始置换IP和逆初始置换IP−1
64位的明文分组M通过初始置换IP,首先将输入的二进制明文块M变换成M'=IP(M),然后M'经过16次的迭代运算,最后通过逆初始置换IP−1得到64位二进制密文输出。置换IP和IP−1表可分别参看表2-1和2-2。由表2-1可知,初始置换IP将M=m0m1…m64变成M'=m58m50…m7。不难看出,IP−1是IP的逆。
图2-6 DES算法加密过程
表2-1 IP
表2-2 IP−1
2.f函数
函数f(Ri-l,Ki)的结构如图2-7所示。首先用扩展置换表E(见表2-3)将Ri-l扩展成48位二进制块E(Ri-l),然后对E(Ri-l)和Ki进行“异或”运算,并将其结果分成8个6位二进制块B1,…,B8。每个6位子块Bj,都是选择(替换)函数Sj(见表2-4)的输入,其输出是一个4位二进制块Sj(Bj)。把这些子块合成为32位二进制块后,用置换表P(见表2-5)将它变换成最后的输出f(Ri−l,Ki)。
图2-7 f(Ri−l,Ki)函数
表2-3 扩展置换表E
(www.xing528.com)
表2-4 S盒
(续)
表2-5 置换表P
3.子密钥生成函数
子密钥生成函数如图2-8所示。密钥K是一个64位的二进制块,其中8位是奇偶校验位,分别位于第8,16,…,64位。子密钥置换函数PC-1(见表2-6)把这些奇偶校验位去掉,并把剩下的56位进行置换。置换后的结果PC-l(K)被分成两半C0和D0,各有28位。接下来,有如下的变换公式:
Ci=LSi(Ci-1)Di=LSi(Di-1)
图2-8 子密钥生成函数
其中,LSi是循环左移位变换,LS1、LS2、LS9、LS16循环左移1位,其余的循环左移2位。最后,通过子密钥置换函数PC-2(见表2-7)得出Ki。
表2-6 PC-1
表2-7 PC-2
解密算法和加密算法相同,只不过第1次迭代时用于密钥K16,第2次迭代时用K15,以此类推,第16次迭代时用K1。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。