任务概述
对称密码算法又叫传统密码算法,就是加密密钥能够从解密密钥中推算出,反之亦然。在大多数算法中,加密、解密密钥是相同的。因此对称算法完全依赖于密钥,泄露密钥就意味着任何人都能对信息进行加密和解密。DES(Data Encryption Standard)算法是典型的对称密码算法,本任务讲述DES算法的原理及应用。
任务目标
●能够了解DES算法的原理
●能够理解DES算法的执行过程
学习内容
一、DES算法简介
DES算法是美国国家标准局于1977年公布的由IBM公司研制的加密算法。DES算法被授权用于所有非保密的通信场合,后来还曾被国际标准组织采纳为国际标准。DES算法是一种典型的按分组方式工作的单密钥密码算法,它的基本思想是将一个二进制序列的明文分组,然后用密钥对该明文进行替代和置换,最后得到密文。DES算法是对称的,既可以用于加密也可以用于解密。它的巧妙之处在于,除了密钥输入顺序之外,加密和解密的步骤几乎完全相同,从而在制作DES硬件芯片时很容易实现标准化和通用化,很符合现代通信和批量生产的需要。加密算法要达到的目的有四点:
①提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;
②具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握;
③DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础;
④实现经济,运行有效,并且适用于多种完全不同的应用。
二、DES算法的流程
DES算法将输入的明文分为64位的数据分组,使用64位的密钥进行变换,每个64位的明文分组数据经过初始置换、16次迭代和逆置换这三个主要的步骤,最后输出得到64位的密文。在迭代之前,首先要对64位的密钥进行变换,密钥去掉第8、第16、第24……第64位减少至56位,去掉的那8位视为奇偶校验位,不包含有密钥信息,所以实际的密钥长度只有56位。DES算法的加密流程如图2-3所示。
图2-3 DES算法的加密流程
DES算法的初始置换过程为:输入64位明文,按初始置换规则把输入的64位数据按位重新组合,并把输出分为左、右两部分,每部分长度为32位。在这里用到的初始置换规则见表2-1。
表2-1 初始置换规则表
这个置换表的含义是:将输入的第58位换到第1位,第50位换到第2位,第42位换到第3位,以此类推……最后一位是原来的第7位。也就是说,置换前的位置分别是D1、D2、D3……D64,经过初始置换之后,左边部分为D58、D50、D42……D8,就是表2-1的上半部分数据;右边部分为D57、D49、D41……D7,也就是表2-1的下半部分数据。具体位置请参看表2-1的相应位置的数值。
每个迭代过程实际上包括四个独立的操作。首先是右半部分由32位扩展为48位,然后与密钥的某一个形式组合,其结果被替换成另一个结果,同时其位数又压缩到了32位。这32位数据经过置换再与其左半部分相加,结果产生新的右半部分。
每一个右半部分都经过扩展排列,由32位扩展为48位。扩展过程置换位的顺序的同时,也重复了某些位。扩展的目的有两个:使得密文中间结果的一半与密钥相匹配;产生一个较长的结果后又将其压缩。扩展排列由表2-2定义,由于是扩展排列,所以有些位将不止移至一个输出位上。
表2-2 扩展排列表
由于每隔8位删除一位,64位的密钥变成56位,56位的密钥经过PC-1置换,输出顺序见表2-3。
表2-3 PC-1置换表
在一轮的每一步,密钥被分成包含各28位的两个部分,每个部分都左移由一个十进制数指明的若干位,然后将两部分拼接起来。随后对56位进行置换,作为该轮的密钥。每轮的密钥与经过扩展来自上面的右半部分进行相异或相加。
在每一轮中,密钥的两个半部分独立地循环左移,移动次数由一个指定的数字来决定。表2-4为各轮需要移动的位数。
表2-4 各轮移动的位数表
移位之后,从56位中抽取48位用作与已扩展的右半部分相异或相加,表2-5给出了选择48位的排列。
表2-5 选择排列表
至此,得到48位的数据,再将这48位按顺序分成8组,每组6位,这8组分别通过变换,由每组输入6位变成每组输出4位,从而得到32位的数据。这个32位的数据再经过P置换,P置换的置换表见表2-6。
表2-6 P置换表
至此,整个加密过程完成。DES的解密过程和DES加密类似,只是将16轮的子密钥序列K1,K2,……K16的顺序颠倒过来使用,即第一轮使用K16,第二轮使用K15,……第16轮使用K1,证明的过程在此不再叙述。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。