1、 网络安全 课课 程程 设设 计计 报报 告告 学 院: 计算机与电子信息学院 专业名称: 学 号: 姓 名: 指导教师: 时 间: 2015 年 1 月 DESDES 源代码分析源代码分析 一、一、DESDES 对称加密算法简介对称加密算法简介 最著名的保密密钥或对称密钥加密算法 DES(Data Encryption Standard)是由 IBM 公 司在 70 年代发展起来的, 并经过政府的加密标准筛选后, 于 1976 年 11 月被美国政府采用, DES 随后被美国国家标准局和美国国家标准协会(American National Standard Institute, ANSI)
2、承认。 DES 使用 56 位密钥对 64 位的数据块进行加密,并对 64 位的数据块进行 16 轮编码。与 每轮编码时,一个 48 位的“每轮”密钥值由 56 位的完整密钥得出来。DES 用软件进行解码 需要用很长时间, 而用硬件解码速度非常快, 但幸运的是当时大多数黑客并没有足够的设备 制造出这种硬件设备。在 1977 年,人们估计要耗资两千万美元才能建成一个专门计算机用 于 DES 的解密,而且需要 12 个小时的破解才能得到结果。所以,当时 DES 被认为是一种十 分强壮的加密方法。 二、二、DESDES 对称加密算法分析对称加密算法分析 (1)DES 算法原理 在 DES 算法中有
3、Data、Key、Mode 三个参数。其中 Data 代表需要加密或解密的数据, 由 8 字节 64 位组成;Key 代表加密或解密的密钥,也由 8 字节 64 位组成;Mode 代表加密或 解密的状态。 在 DES 算法中加密和解密的原理是一样的,只是因为 Mode 的状态不同,适用密钥的顺 序不同而已。 (2)DES 算法的加密过程 DES 算法的加密过程如图 6.2 所示。 初始置换(Initial Permutation,IP)是对输入的 64 位数据按照规定的矩阵改变数据 位的排列顺序的换位变换,此过程与密钥无关。 子密钥生成是由 64 位外部输入密钥通过置换和移位操作生成加密和解密
4、所需的 16 组 (每组 56 位)子密钥的过程。 乘积变换过程非常复杂,是加密过程的关键。该过程通过 16 轮重复的替代、移位、异 或和置换操作打乱原输入数据。 逆初始置换(IP-1)与初始置换过程相同,只是置换矩阵是初始置换的逆矩阵。 初始置换(IP) 将 64 位明文按照初始置换表(如表 6.1)的规则进行置换。其置换过程为:将输入明文 的第 58 位置换到第 1 位,第 50 位置换到第 2 位,第 12 位置换到第 3 位,依此类推, 最后第 7 位置换到第 64 位。 子密钥生成 输入的密钥 K 是 64 位数据,但其中第 8、16、24、32、40、48、56、64 位用于奇偶校
5、 验,实际使用的密钥位只有 56 位。子密钥 Ki 的生成流程如图 6.3 所示。 第 1 步:PC1 变换。将 56 位密钥按置换选择 1(PC-1)的规律(见表 6.2)进行置换,变 换后分为左右两路(C0、D0)各 28 位。 第 2 步:数据左移。将两个 28 位的 C0 和 D0 按表 6.3 的规则进行循环左移。表 6.3 中 第 1 行表示迭代轮次, 第 2 行表示左移的位数。 左移的规律是将 C0 和 D0 所有的位按表中规 定的位数循环左移。 第 3 步:PC2 变换和子密钥生成。C0 和 D0 左移 1 位后得到 C1 和 D1 ,再将 C1 和 D1 数 据组合后(56
6、位)按照 PC2 变换的要求变换得到 48 位的子密钥 K1, 在进行第 1 轮迭代时使用 K1;同理,将 C1 和 D1 左移 1 位得到 C2 和 D2,再将 C2 和 D2 数据组合后按照 PC2 变换的要 求变换得到 48 位的子密钥 K2;依此类推,就可以得到 K3、K4K16。PC2 变换如 表 6.4 所示。PC2 变换是将输入的 56 位数据变换为 48 位输出,该变换是一种压缩变换。 根据不同轮数分别进行左移和压缩变换, 分别得到 16 个 48 位的子密钥 K1, K2, K16。 乘积变换 初始置换后的数据分为各 32 位的两部分,左部分为 L0,右部分为 R0,这样,L0 = D58D50D12.D8,R0 = D57D49D41D7。乘积变换过程就是将 L0 和 R0 按照乘积变换运算公 式进行迭代运算,最后得出 L16 和 R16。如图 6.4 所示。 第 1 步:E 变换。E 变换是一个扩展变换,其过程是将 32 位的数据 Ri-1 变换成 48 位, 变换规则如表 6.5 所示。 第 2 步:异或