清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS (4)必须适用于不同的用户和不同的场合; (5)实现经济、运行有效; (6)必须能够验证,允许出口。 ·1977年1月,美国政府采纳IBM公司设计的方案作 为非机密数据的正式数据加密标准(ODES)。DES被 授权用于所有公开的和私人的非保密通信场合,后 来它又曾被国际标准组织采纳为国际标准 DES是一种单钥密码算法,它是一种典型的按分组 方式工作的密码,是两种基本的加密组块替代和换 位的细致而复杂的结构。它通过反复依次应用这两 项技术来提高其强度,经过总共16轮的替代和换位 的变换后,使得密码分析者无法获得该算法一般特 性以外更多的信息。对于这种加密,除了尝试所有
(4) 必须适用于不同的用户和不同的场合; (5) 实现经济、运行有效; (6) 必须能够验证,允许出口。 • 1977年1月,美国政府采纳IBM公司设计的方案作 为非机密数据的正式数据加密标准(DES)。DES被 授权用于所有公开的和私人的非保密通信场合,后 来它又曾被国际标准组织采纳为国际标准。 • DES是一种单钥密码算法,它是一种典型的按分组 方式工作的密码,是两种基本的加密组块替代和换 位的细致而复杂的结构。它通过反复依次应用这两 项技术来提高其强度,经过总共16轮的替代和换位 的变换后,使得密码分析者无法获得该算法一般特 性以外更多的信息。对于这种加密,除了尝试所有
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 可能的密钥外,还没有已知技术可以求得所用的 密钥。当用56位密钥时,可能的组合大于 72×106种,所以想用穷举法来确定某一密钥的机 会是极小的。如果采用穷举法进行攻击的话,即使 微秒能穷举一个密钥,也要花费2283年的时间。 因此,这种加密几乎不存在什么威胁。DES算法现 已在VLS芯片上实现了。 ·DES算法是对称的,既可用于加密又可用于解密。 DES算法将输入的明文分为64位的数据分组,使用 64位的密钥进行变换,每个64位明文分组数据经过 初始置换、16次迭代和逆初始置换3个主要阶段, 最后输出得到64位密文。其主要过程如下
可能的密钥外,还没有已知技术可以求得所用的 密钥。当用 56位密钥时,可能的组合大于 7.2×106种,所以想用穷举法来确定某一密钥的机 会是极小的。如果采用穷举法进行攻击的话,即使 一微秒能穷举一个密钥,也要花费2283年的时间。 因此,这种加密几乎不存在什么威胁。DES算法现 已在VLSI芯片上实现了。 • DES算法是对称的,既可用于加密又可用于解密。 • DES算法将输入的明文分为64位的数据分组,使用 64位的密钥进行变换,每个64位明文分组数据经过 初始置换、16次迭代和逆初始置换3个主要阶段, 最后输出得到64位密文。其主要过程如下
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS ·64位数据经初始变换后被置换。密钥经过去掉其第 8,16,24,…,64位减至56位(去掉的那些位被视 为奇偶校验位,不含密钥信息),然后就开始各轮 的运算。64位经过初始置换的数据被分为左、右两 半部分,56位的密钥经过了左移若干位和置换后取 出48位密钥子集。如图22所示,在每一轮迭代过 程中,密钥子集中的一个子密钥K与数据的右半部 分相结合
• 64位数据经初始变换后被置换。密钥经过去掉其第 8,16,24,…,64位减至56位(去掉的那些位被视 为奇偶校验位,不含密钥信息),然后就开始各轮 的运算。64位经过初始置换的数据被分为左、右两 半部分,56位的密钥经过了左移若干位和置换后取 出48位密钥子集。如图2.2所示,在每一轮迭代过 程中,密钥子集中的一个子密钥Ki与数据的右半部 分相结合
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 左半部分 右半部分 密钥移位置 换后的密钥 + 新的左半部分 新的右半部分 图22
图2.2
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 为了将输入数据的右半部分32位的数据与56位的密 钥相结合,需要两个变换: ①通过重复某些位将32位的右半部分扩展为48位; ②56位密钥则通过选择其中某些位而减少至48位。 ·变换完的两个48位数据项异或输出一个48位数据, 该数据经过压缩和置换输出32位数据 然后再与数据的左半部异或,结果作为这一轮迭代 的输出数据的右半部分;结合前的右半部分作为这 轮迭代的输出数据的左半部分。这一轮输出的64 位数据结果作为下一轮的待加密数据,这种轮换要 重复16次。在最后一轮之后,进行逆初始置换运算, 它是初始置换的逆,最后得到64位密文
• 为了将输入数据的右半部分32位的数据与56位的密 钥相结合,需要两个变换: • ① 通过重复某些位将32位的右半部分扩展为48位; • ② 56位密钥则通过选择其中某些位而减少至48位。 • 变换完的两个48位数据项异或输出一个48位数据, 该数据经过压缩和置换输出32位数据。 • 然后再与数据的左半部异或,结果作为这一轮迭代 的输出数据的右半部分;结合前的右半部分作为这 一轮迭代的输出数据的左半部分。这一轮输出的64 位数据结果作为下一轮的待加密数据,这种轮换要 重复16次。在最后一轮之后,进行逆初始置换运算, 它是初始置换的逆,最后得到64位密文