2.3.1移位密码 移位密码的加密对象为英文字母,移位密码采用对明文消息的每一个英文字母向前推 移固定y位的方式实现加密。换句话说,移位密码实现了26个英文字母的循环移位。由 于英文共有26个字母,我们可以在英文字母表和Z6={0,1,.,25}之间建立一一对应的映射 关系,因此,可以在Z6中定义相应的加法运算来表示加密过程。 移位密码中,当取密钥ky=3时,得到的移位密码称为凯撒密码,因为该密码体制首 先被Julius Caesar所使用。移位密码的密码体制定义如下: 定义2.2移位密码体制: 令M=C=K=Z6。对任意的ky∈Zs,x∈M,y∈C,定义: eke (x)=(x+key)mod26 die(y)=(y-key)mod26 在使用移位密码体制对英文字母进行加密之前,首先需要在26个英文字母与Z。中的 元素之间建立一一对应关系,然后应用以上密码体制进行相应的加密计算和解密计算。 【例2.5】设移位密码的密钥为ky=7,英文字符与Z6中的元素之间的对应关系为: ABCDE FGHIJKLM 000102030405060708091011 12 NOPQR ST UVWXY Z 131415161718192021222324 25 假设明文为:ENCRYPTION。则加密过程如下: 首先,将明文根据对应关系表映射到Z6,得到相应的整数序列: 04130217241519081413 对以上整数序列进行加密计算: ea(04)=(04+7)mod26=11 e,(13)=(13+7)mod26=20 ea(02)=(02+7)mod26=09 ek(17)=(17+7)mod26=24 e(24)=(24+7)mod26=05 ee,(15)=(15+7)mod26=22 e,(19)=(19+7)mod26=00 ea(08)=(08+7)mod26=15 e,(14)=(14+7)mod26=21 e,(13)=(13+7)mod26=20 得到相应的整数序列为: 11200924052200152120 最后再应用对应关系表将以上数字转化成英文字符,即得相应的密文为: LUJYFWAPVU 解密是加密的逆过程,计算过程与加密相似。首先应用对应关系表将密文字符转化成 数字,再应用解密公式d,y)=(y-key)mod26进行计算,在本例中,将每个密文对应的 数字减去7,再和26进行取模运算,对计算结果使用原来的对应关系表即可还原成英文字 24
24 2.3.1 移位密码 移位密码的加密对象为英文字母,移位密码采用对明文消息的每一个英文字母向前推 移固定key 位的方式实现加密。换句话说,移位密码实现了 26 个英文字母的循环移位。由 于英文共有 26 个字母,我们可以在英文字母表和 26 Z = {0,1, ,25} L 之间建立一一对应的映射 关系,因此,可以在 Z26 中定义相应的加法运算来表示加密过程。 移位密码中,当取密钥 key = 3时,得到的移位密码称为凯撒密码,因为该密码体制首 先被 Julius Caesar 所使用。移位密码的密码体制定义如下: 定义 2.2 移位密码体制: 令 M C K Z = = = 26 。对任意的 26 key Z Î , x MÎ , y CÎ ,定义: ( ) ( ) mod 26 key e x x key = + ( ) ( ) mod 26 key d y y key = - 在使用移位密码体制对英文字母进行加密之前,首先需要在 26 个英文字母与 Z26 中的 元素之间建立一一对应关系,然后应用以上密码体制进行相应的加密计算和解密计算。 【例 2.5】设移位密码的密钥为key = 7 ,英文字符与 Z26 中的元素之间的对应关系为: A B C D E F G H I J K L M 00 01 02 03 04 05 06 07 08 09 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 假设明文为:ENCRYPTION。则加密过程如下: 首先,将明文根据对应关系表映射到 Z26 ,得到相应的整数序列: 04 13 02 17 24 15 19 08 14 13 对以上整数序列进行加密计算: (04) (04 7) mod 26 11 key e = + = (13) (13 7)mod 26 20 key e = + = (02) (02 7) mod 26 09 key e = + = (17) (17 7) mod 26 24 key e = + = (24) (24 7)mod 26 05 key e = + = (15) (15 7)mod 26 22 key e = + = (19) (19 7) mod 26 00 key e = + = (08) (08 7)mod 26 15 key e = + = (14) (14 7) mod 26 21 key e = + = (13) (13 7)mod 26 20 key e = + = 得到相应的整数序列为: 11 20 09 24 05 22 00 15 21 20 最后再应用对应关系表将以上数字转化成英文字符,即得相应的密文为: LUJYFWAPVU 解密是加密的逆过程,计算过程与加密相似。首先应用对应关系表将密文字符转化成 数字,再应用解密公式 ( ) ( ) mod 26 key d y y key = - 进行计算,在本例中,将每个密文对应的 数字减去 7,再和 26 进行取模运算,对计算结果使用原来的对应关系表即可还原成英文字
符,从而解密出相应的明文。 移位密码的加密和解密过程的本质都是循环移位运算,由于26个英文字母顺序移位26 次后还原,因此移位密码的密钥空间大小为26,其中有一个弱密钥,即ky=0。 由于移位密码中明文字符和相应的密文字符之间具有一一对应的关系,密文中英文字 符的出现频率与明文中相应的英文字符的出现频率相同,加密结果也不能隐藏由于明文中英 文字母出现的统计规律性导致的密文出现的频率特性,频率分析法可以发现其弱点并对其进 行有效攻击。 2.3.2代换密码 移位密码可看成是对26个英文字母的一个简单置换,因此我们可以考虑26个英文字母 集合上的一般置换操作。鉴于26个英文字母和Z6的元素之间可以建立一一对应关系,于 是Z6上的任一个置换也就对应了26个英文字母表上的一个置换。我们可以借助Z6上的置 换来改变英文字母表中英文字符的原有位置,即用新的字符来代替明文消息中的原有字符以 达到加密明文消息的目的,Z6上的置换被当作加密所需的密钥,由于该置换对应26个英 文字母表上的一个置换,因此,我们可以将代换密码的加密和解密过程看作是应用英文字母 表的置换变换进行的代换操作。 定义2.3代换密码体制: 令M=C=Z6,K是Zs上所有可能置换构成的集合。对任意的置换π∈K,x∈M, y∈C,定义: e.(x)=π(x) d.(y)=π(y) 这里π和π1互为逆置换。 【例2.6】设置换π定义如下(由于Z6上的任一个置换均可以对应26个英文字母表上 的一个置换,因此本例中我们直接将Z,。上的置换π表示成英文字母表上的置换): ABC DEFGHI y u 0 p a W X 2 f gh j k1z x c v b n m 其中大写字母代表明文字符,小写字母代表密文字符。 假设明文为:ENCRYPTION。 则根据置换π定义的对应关系,可以得到相应的密文为:tfeknhzogf。. 解密过程首先根据加密过程中的置换π定义的对应关系计算相应的逆置换π,本例中 的逆置换π1为: y u p a d A D E M h J k m Z 根据计算得到的逆置换πl定义的对应关系对密文:tfeknhzogf进行解密,可以恢复出 相应的明文:ENCRYPTION。 代换密码的任一个密钥π都是26个英文字母的一种置换。由于所有可能的置换有26! 种,所以代换密码的密钥空间大小为26!,代换密码有一个弱密钥:26个英文字母都不进行 置换。 25
25 符,从而解密出相应的明文。 移位密码的加密和解密过程的本质都是循环移位运算,由于 26 个英文字母顺序移位 26 次后还原,因此移位密码的密钥空间大小为 26,其中有一个弱密钥,即key = 0 。 由于移位密码中明文字符和相应的密文字符之间具有一一对应的关系,密文中英文字 符的出现频率与明文中相应的英文字符的出现频率相同,加密结果也不能隐藏由于明文中英 文字母出现的统计规律性导致的密文出现的频率特性,频率分析法可以发现其弱点并对其进 行有效攻击。 2.3.2 代换密码 移位密码可看成是对 26 个英文字母的一个简单置换,因此我们可以考虑 26 个英文字母 集合上的一般置换操作。鉴于 26 个英文字母和 Z26 的元素之间可以建立一一对应关系,于 是 Z26 上的任一个置换也就对应了 26 个英文字母表上的一个置换。我们可以借助 Z26 上的置 换来改变英文字母表中英文字符的原有位置,即用新的字符来代替明文消息中的原有字符以 达到加密明文消息的目的, Z26 上的置换被当作加密所需的密钥,由于该置换对应 26 个英 文字母表上的一个置换,因此,我们可以将代换密码的加密和解密过程看作是应用英文字母 表的置换变换进行的代换操作。 定义 2.3 代换密码体制: 令 M C Z = = 26 ,K 是 Z26 上所有可能置换构成的集合。对任意的置换p Î K , x MÎ , y CÎ ,定义: e x x ( ) ( ) p = p 1 d y y ( ) ( ) p p- = 这里p 和 1 p- 互为逆置换。 【例 2.6】设置换p 定义如下(由于 Z26 上的任一个置换均可以对应 26 个英文字母表上 的一个置换,因此本例中我们直接将 Z26 上的置换p 表示成英文字母表上的置换): A B C D E F G H I J K L M q w e r t y u i o p a s d N O P Q R S T U V W X Y Z f g h j k l z x c v b n m 其中大写字母代表明文字符,小写字母代表密文字符。 假设明文为:ENCRYPTION。 则根据置换p 定义的对应关系,可以得到相应的密文为:tfeknhzogf。 解密过程首先根据加密过程中的置换p 定义的对应关系计算相应的逆置换 1 p- ,本例中 的逆置换 1 p- 为: q w e r t y u i o p a s d A B C D E F G H I J K L M f G h j k l z x c v b n m N O P Q R S T U V W X Y Z 根据计算得到的逆置换 1 p- 定义的对应关系对密文:tfeknhzogf 进行解密,可以恢复出 相应的明文:ENCRYPTION。 代换密码的任一个密钥p 都是 26 个英文字母的一种置换。由于所有可能的置换有26! 种,所以代换密码的密钥空间大小为26!,代换密码有一个弱密钥:26 个英文字母都不进行 置换
对于代换密码如果采用密钥穷举搜索的方法进行攻击,计算量相当大。但是,代换密 码中明文字符和相应的密文字符之间具有一一对应的关系,密文中英文字符的出现频率与明 文中相应的英文字符的出现频率相同,加密结果也不能隐藏由于明文中英文字母出现的统计 规律性导致的密文出现的频率特性,因此,如果应用频率分析法对其进行密码分析,其攻击 难度要远远小于采用密钥穷举搜索法的攻击难度。 2.3.3置换密码 本节介绍另一种加密方式,通过重新排列消息中元素的位置而不改变元素本身的方式, 对一个消息进行变换。这种加密机制称为置换密码(也称为换位密码)。置换密码是古典密 码中除代换密码外的重要一类,它被广泛应用于现代分组密码的构造。 定义2.4置换密码体制 令m之2是一个正整数,M=C=(Z6)",K是Zm={L,2,m}上所有可能置换构成的 集合。对任意的(x,2,.,xm)∈M,π∈K,(U,2,.,ym)∈C,定义: .e.(,2,.,Xm)=(Xx0,Xx(2,Xm) d.4,y2,.,ym)=(yx-0yr2.ya-m) 其中π和π互为Z,上的逆置换,m为分组长度。对于长度大于分组长度m的明文消息, 可对明文消息先按照长度m进行分组,然后对每一个分组消息重复进行同样的置乱加密过 程,最终实现对明文消息的加密。 【例2.7】令m=4,π=(π(1),π(2),π(3),π(4)=(2,4,1,3)。假设明文为: Information security is important 加密过程首先根据m=4,将明文分为6个分组,每个分组4个字符。 Info rmat ions ecur ityi simp orta nt 然后根据加密规则:e(:,x2,xn)=(化,xx2,xm),,应用置换变换π对每个分 组消息进行加密,得到相应的密文: Noifmtraosincreutiiyipsmraottn 解密过程需要用到加密置换π的逆置换,在本例中,根据置换π定义的对应关系,得 到相应的解密置换π为: π=(π(1),π(2),π(3),π(4))=(3,1,4,2) 解密过程首先根据分组长度m对密文进行分组,得到: noif mtra osin creu tiiy ipsm raot tn 然后根据解密规则d,.,》)=(少,y2y.,ym),应用解密置换π对每 个分组消息进行置换变换,就可以得到解密的消息。 需要说明的是,在以上加密过程中,应用给定的分组长度m对消息序列进行分组,当 消息长度不是分组长度的整数倍时,可以在最后一段分组消息后面添加足够的特殊字符,从 而保证能够以m为分组长度对消息进行分组处理。例2.3中,我们在最后的分组消息t后 面增加了2个空格,以保证分组长度的一致性。 对于固定的分组长度m,Z,上共有m种不同的排列,对应产生m!个不同的加密密钥 π,所以相应的置换密码共有m!种不同的密钥。应注意的是,置换密码尽管没有改变密文 消息中英文字母的统计特性,但应用频率分析的攻击方法对其进行密码分析时,由于密文中 英文字符的常见组合关系不再存在,并且与己知密文消息序列具有相同统计特性的对应明文 组合并不惟一,导致相应的密码分析难度增大。因此,相比较而言,置换密码能较好地抵御 频率分析法。另外,可以用惟密文攻击法和己知明文攻击法来破解置换密码。 26
26 对于代换密码如果采用密钥穷举搜索的方法进行攻击,计算量相当大。但是,代换密 码中明文字符和相应的密文字符之间具有一一对应的关系,密文中英文字符的出现频率与明 文中相应的英文字符的出现频率相同,加密结果也不能隐藏由于明文中英文字母出现的统计 规律性导致的密文出现的频率特性,因此,如果应用频率分析法对其进行密码分析,其攻击 难度要远远小于采用密钥穷举搜索法的攻击难度。 2.3.3 置换密码 本节介绍另一种加密方式,通过重新排列消息中元素的位置而不改变元素本身的方式, 对一个消息进行变换。这种加密机制称为置换密码(也称为换位密码)。置换密码是古典密 码中除代换密码外的重要一类,它被广泛应用于现代分组密码的构造。 定义 2.4 置换密码体制 令 m ³ 2 是一个正整数, 26 ( )m M C Z = = ,K 是 {1,2, , } Z m m = L 上所有可能置换构成的 集合。对任意的 1 2 ( , , , ) m x x x M L Î ,p Î K , 1 2 ( , , , ) m y y y C L Î ,定义: . 1 2 (1) (2) ( ) ( , , , ) ( , , , ) m m e x x x x x x p p p p L L = . 1 2 1 1 1 (1) (2) ( ) ( , , , ) ( , , , ) m m d y y y y y y p p p p L L = - - - 其中p 和 1 p- 互为 Zm 上的逆置换,m 为分组长度。对于长度大于分组长度m 的明文消息, 可对明文消息先按照长度 m 进行分组,然后对每一个分组消息重复进行同样的置乱加密过 程,最终实现对明文消息的加密。 【例 2.7】令m = 4,p p p p p = = ( (1), (2), (3), (4)) (2,4,1,3) 。假设明文为: Information security is important 加密过程首先根据m = 4,将明文分为 6 个分组,每个分组 4 个字符。 Info rmat ions ecur ityi simp orta nt 然后根据加密规则: 1 2 (1) (2) ( ) ( , , , ) ( , , , ) m m e x x x x x x p p p p L L = ,应用置换变换p 对每个分 组消息进行加密,得到相应的密文: Noifmtraosincreutiiyipsmraottn 解密过程需要用到加密置换p 的逆置换,在本例中,根据置换p 定义的对应关系,得 到相应的解密置换 1 p- 为: 1 1 1 1 1 p p p p p ( (1) , (2) , (3) , (4) ) (3,1,4,2) - - - - - = = 解密过程首先根据分组长度 m 对密文进行分组,得到: noif mtra osin creu tiiy ipsm raot tn 然后根据解密规则 1 2 1 1 1 (1) (2) ( ) ( , , , ) ( , , , ) m m d y y y y y y p p p p L L = - - - ,应用解密置换 1 p- 对每 个分组消息进行置换变换,就可以得到解密的消息。 需要说明的是,在以上加密过程中,应用给定的分组长度 m 对消息序列进行分组,当 消息长度不是分组长度的整数倍时,可以在最后一段分组消息后面添加足够的特殊字符,从 而保证能够以m 为分组长度对消息进行分组处理。例 2.3 中,我们在最后的分组消息 tn 后 面增加了 2 个空格,以保证分组长度的一致性。 对于固定的分组长度m , Zm 上共有m!种不同的排列,对应产生m!个不同的加密密钥 p ,所以相应的置换密码共有 m!种不同的密钥。应注意的是,置换密码尽管没有改变密文 消息中英文字母的统计特性,但应用频率分析的攻击方法对其进行密码分析时,由于密文中 英文字符的常见组合关系不再存在,并且与已知密文消息序列具有相同统计特性的对应明文 组合并不惟一,导致相应的密码分析难度增大。因此,相比较而言,置换密码能较好地抵御 频率分析法。另外,可以用惟密文攻击法和已知明文攻击法来破解置换密码
在上面介绍的几个典型的古典密码体制里,含有两个基本操作:替换(Substitution) 和置换(Permutation),替换实现了英文字母外在形式上的改变,每个英文字母被其他字母 替换:置换实现了英文字母所处位置的改变,但没有改变字母本身。替换操作分为单表替换 和多表替换两种方法,单表替换的特点是把明文中的每个英文字母正好映射为一个密文字 母,是一种一一映射,不能抵御基于英文字符出现频率的频率分析攻击法:多表替换的特点 是明文中的同一字母可能用多个不同的密文字母来代替,与单表替换的密码体制相比,形式 上增加了加密的安全性。 替换和置换这两个基本操作具有原理简单且容易实现的特点。随着计算机技术的飞速发 展,古典密码体制的安全性己经无法满足实际应用的需要,但是替换和置换这两个基本操作 仍是构造现代对称加密算法最重要的核心方式。举例来说,替换和置换操作在数据加密标准 (DES)和高级加密标准(AES)中都起到了核心作用。几个简单密码算法的结合可以产生 一个安全的密码算法,这就是简单密码仍被广泛使用的原因。除此之外,简单的替换和置换 密码在密码协议上也有广泛的应用。 2.3.4衡量密码体制安全性的基本准则 对于加密法的评估,20世纪40年代,Shannon提出了一个常用的评估概念,他认为一 个好的加密法应具有混淆性(Confusion)和扩散性(Diffusion)。混淆性意味着加密法应隐 藏所有的局部模式,将可能导致破解密钥的提示性信息特征进行隐藏:扩散性要求加密法将 密文的不同部分进行混合,使得任何字符都不在原来的位置。前面介绍的几个古典密码,由 于未能满足Shannon提出的两个条件,所以它们能被破解。此外,加密系统的评估也要考虑 经济因素,一个加密算法不光是为了安全而“牢不可破”(而且,它未必是牢不可破的),如 果获得信息的代价比破解加密的代价更小,可以认为该数据是安全的:如果破解加密需要的 时间比信息的有用周期更长,该数据也认为是安全的。换句话说,任何加密算法的最终安全 性基于这样一个原则:付出大于回报。按照这一原则,安全的密码系统应具备以下条件: (1)系统即使达不到理论上是不可破译的,也应该是实际上不可破译的: (2)系统的保密性不依赖于加/解密算法和系统的保密,而仅仅依赖于密钥的保密性: (3)加/解密运算简单、快捷,易于软/硬件实现: (4)加/解密算法适用于所有密钥空间的元素。 通常,破译密码需要考虑破译的时间复杂度(计算时间)和空间复杂度(计算能力), 衡量密码体制安全性的基本准则有以下几种: (I)计算安全的(Computational security):如果破译加密算法所需要的计算能力和计 算时间是现实条件所不具备的,那么就认为相应的密码体制是满足计算安全性的。这意味着 强力破解证明是安全的。 (2)可证明安全的(Provable security):如果对一个密码体制的破译依赖于对某一个 经过深入研究的数学难题的解决,就认为相应的密码体制是满足可证明安全性的。这意味着 理论保证是安全的。 (3)无条件安全的(Unconditional security):如果假设攻击者在用于无限计算能力和 计算时间的前提下,也无法破译加密算法,就认为相应的密码体制是无条件安全性的。这意 味着在极限状态上是安全的。 除了一次一密加密算法以外,从理论上来说,不存在绝对安全的密码体制。所以实际应 用中,只要我们能够证明采用的密码体制是计算安全的,就有理由认为加密算法是安全的, 因为计算安全性能够保证所采用的算法在有效时间内的安全性。 2.4分组密码 分组密码也叫做块密码(Block Cipher),是现代密码学的重要组成部分,它的主要功能 是提供有效的数据加解密技术,实现对数据内容的保护。 27
27 在上面介绍的几个典型的古典密码体制里,含有两个基本操作:替换(Substitution) 和置换(Permutation),替换实现了英文字母外在形式上的改变,每个英文字母被其他字母 替换;置换实现了英文字母所处位置的改变,但没有改变字母本身。替换操作分为单表替换 和多表替换两种方法,单表替换的特点是把明文中的每个英文字母正好映射为一个密文字 母,是一种一一映射,不能抵御基于英文字符出现频率的频率分析攻击法;多表替换的特点 是明文中的同一字母可能用多个不同的密文字母来代替,与单表替换的密码体制相比,形式 上增加了加密的安全性。 替换和置换这两个基本操作具有原理简单且容易实现的特点。随着计算机技术的飞速发 展,古典密码体制的安全性已经无法满足实际应用的需要,但是替换和置换这两个基本操作 仍是构造现代对称加密算法最重要的核心方式。举例来说,替换和置换操作在数据加密标准 (DES)和高级加密标准(AES)中都起到了核心作用。几个简单密码算法的结合可以产生 一个安全的密码算法,这就是简单密码仍被广泛使用的原因。除此之外,简单的替换和置换 密码在密码协议上也有广泛的应用。 2.3.4 衡量密码体制安全性的基本准则 对于加密法的评估,20 世纪 40 年代,Shannon 提出了一个常用的评估概念,他认为一 个好的加密法应具有混淆性(Confusion)和扩散性(Diffusion)。混淆性意味着加密法应隐 藏所有的局部模式,将可能导致破解密钥的提示性信息特征进行隐藏;扩散性要求加密法将 密文的不同部分进行混合,使得任何字符都不在原来的位置。前面介绍的几个古典密码,由 于未能满足 Shannon 提出的两个条件,所以它们能被破解。此外,加密系统的评估也要考虑 经济因素,一个加密算法不光是为了安全而“牢不可破”(而且,它未必是牢不可破的),如 果获得信息的代价比破解加密的代价更小,可以认为该数据是安全的;如果破解加密需要的 时间比信息的有用周期更长,该数据也认为是安全的。换句话说,任何加密算法的最终安全 性基于这样一个原则:付出大于回报。按照这一原则,安全的密码系统应具备以下条件: (1) 系统即使达不到理论上是不可破译的,也应该是实际上不可破译的; (2) 系统的保密性不依赖于加/解密算法和系统的保密,而仅仅依赖于密钥的保密性; (3) 加/解密运算简单、快捷,易于软/硬件实现; (4) 加/解密算法适用于所有密钥空间的元素。 通常,破译密码需要考虑破译的时间复杂度(计算时间)和空间复杂度(计算能力), 衡量密码体制安全性的基本准则有以下几种: (1) 计算安全的(Computational security):如果破译加密算法所需要的计算能力和计 算时间是现实条件所不具备的,那么就认为相应的密码体制是满足计算安全性的。这意味着 强力破解证明是安全的。 (2) 可证明安全的(Provable security):如果对一个密码体制的破译依赖于对某一个 经过深入研究的数学难题的解决,就认为相应的密码体制是满足可证明安全性的。这意味着 理论保证是安全的。 (3) 无条件安全的(Unconditional security):如果假设攻击者在用于无限计算能力和 计算时间的前提下,也无法破译加密算法,就认为相应的密码体制是无条件安全性的。这意 味着在极限状态上是安全的。 除了一次一密加密算法以外,从理论上来说,不存在绝对安全的密码体制。所以实际应 用中,只要我们能够证明采用的密码体制是计算安全的,就有理由认为加密算法是安全的, 因为计算安全性能够保证所采用的算法在有效时间内的安全性。 2.4 分组密码 分组密码也叫做块密码(Block Cipher),是现代密码学的重要组成部分,它的主要功能 是提供有效的数据加解密技术,实现对数据内容的保护
本节简要介绍DES(Data Encryption Standard)的加密原理和算法分析,并简要介绍分 组密码的工作模式。 2.4.1DES算法 DES算法是最为广泛使用的一种分组密码算法。DES对推动密码理论的发展和应用起 了重大的作用。学习DES算法对于掌握分组密码的基本理论、设计思想和实际应用都有重 要的参考价值。20世纪70年代中期,美国政府认为需要一个强大的标准加密系统,美国国 家标准局提出了开发这种加密算法的请求,最终BM的Lucifer加密系统胜出,有关DES 算法的历史过程如下: l972年美国商业部所属的美国国家标准局NBS(National Bureau of Standards)开始实 施计算机数据保护标准的开发计划。 1973年5月13日,美国国家标准局NBS发布文告征集在传输和存贮数据中保护计算 机数据的密码算法。 1975年3月17日,首次公布DES算法描述,认真地进行公开讨论。 1977年1月15日,正式批准为无密级应用的加密标准(FPS一46),当年7月1日正 式生效。以后每隔5年美国国家安全局对其安全性进行一次评估,以便确定是否继续使用它 作为加密标准。 在1994年1月的评估后决定1998年12月以后不再将DES作为数据加密标准。 1、DES的描述 DES是一个包含16个阶段的“替换一置换”的分组加密算法,它以64位为分组对 数据加密。64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序 列。尽管DES密钥的长度有64位,但用户只提供56位(通常是以转换成ASCⅡ位的7个 字母的单词作为密钥),其余的8位由算法提供,分别放在8、16、24、32、40、48、56、 64位上,结果是每8位的密钥包含了用户提供的7位和DES算法确定的1位。添加的位是 有选择的,使得每个8位的块都含有奇数个奇偶校验位(即1的个数为奇数)。DES的密钥 可以是任意的56位的数,其中极少量的56位数被认为是弱密钥,为了保证加密的安全性, 在加密过程中应该尽量避开使用这些弱密钥。 DES对64位的明文分组进行操作。首先通过一个初始置换IP,将64位的明文分成各 32位长的左半部分和右半部分,该初始置换只在16轮加密过程进行之前进行一次,在接下 来的轮加密过程中不再进行该置换操作。在经过初始置换操作后,对得到的64位序列进行 16轮加密运算,这些运算被称为函数f,在运算过程中,输入数据与密钥结合。经过16轮 后,左、右半部分合在一起得到一个64位的输出序列,该序列再经过一个末尾置换P(初 始置换的逆置换)获得最终的密文(具体加密流程见图2-4)。初始置换IP和对应的逆初始 置换P-操作并不会增强DES算法的安全性,它的主要目的是为了更容易地将明文和密文 数据以字节大小放入DES芯片中。 DES的每个阶段使用的是不同的子密钥和上一阶段的输出,但执行的操作相同。这些 操作定义在三种“盒”中,分别称为扩充盒(Expansion box,E一盒)、替换盒(Substitution box、S一盒)、置换盒(Permutation box、P一盒)。在每一轮加密过程中,三个盒子的使用 顺序如图2-4所示。在每一轮加密过程中,函数f的运算包括以下四个部分:首先将56位 密钥等分成长度为28位的两部分,根据加密轮数,这两部分密钥分别循环左移1位或2位 后合并成新的56位密钥序列,从移位后的56位密钥序列中选出48位(该部分采用一个压 缩置换实现):其次通过一个扩展置换将输入序列32位的右半部分扩展成48位后与48位的 轮密钥进行异或运算:第三部分通过8个S一盒将异或运算后获得的48位序列替代成一个 32位的序列:最后对32位的序列应用置换P进行置换变换得到∫的32位输出序列。 28
28 本节简要介绍 DES(Data Encryption Standard)的加密原理和算法分析,并简要介绍分 组密码的工作模式。 2.4.1 DES 算法 DES 算法是最为广泛使用的一种分组密码算法。DES 对推动密码理论的发展和应用起 了重大的作用。学习 DES 算法对于掌握分组密码的基本理论、设计思想和实际应用都有重 要的参考价值。20 世纪 70 年代中期,美国政府认为需要一个强大的标准加密系统,美国国 家标准局提出了开发这种加密算法的请求,最终 IBM 的 Lucifer 加密系统胜出,有关 DES 算法的历史过程如下: 1972 年美国商业部所属的美国国家标准局 NBS (National Bureau of Standards)开始实 施计算机数据保护标准的开发计划。 1973 年 5 月 13 日,美国国家标准局 NBS 发布文告征集在传输和存贮数据中保护计算 机数据的密码算法。 1975 年 3 月 17 日,首次公布 DES 算法描述,认真地进行公开讨论。 1977 年 1 月 15 日,正式批准为无密级应用的加密标准(FIPS—46),当年 7 月 1 日正 式生效。以后每隔 5 年美国国家安全局对其安全性进行一次评估,以便确定是否继续使用它 作为加密标准。 在 1994 年 1 月的评估后决定 1998 年 12 月以后不再将 DES 作为数据加密标准。 1、DES 的描述 DES 是一个包含 16 个阶段的“替换——置换”的分组加密算法,它以 64 位为分组对 数据加密。64 位的分组明文序列作为加密算法的输入,经过 16 轮加密得到 64 位的密文序 列。尽管 DES 密钥的长度有 64 位,但用户只提供 56 位(通常是以转换成 ASCII 位的 7 个 字母的单词作为密钥),其余的 8 位由算法提供,分别放在 8、16、24、32、40、48、56、 64 位上,结果是每 8 位的密钥包含了用户提供的 7 位和 DES 算法确定的 1 位。添加的位是 有选择的,使得每个 8 位的块都含有奇数个奇偶校验位(即 1 的个数为奇数)。DES 的密钥 可以是任意的 56 位的数,其中极少量的 56 位数被认为是弱密钥,为了保证加密的安全性, 在加密过程中应该尽量避开使用这些弱密钥。 DES 对 64 位的明文分组进行操作。首先通过一个初始置换 IP ,将 64 位的明文分成各 32 位长的左半部分和右半部分,该初始置换只在 16 轮加密过程进行之前进行一次,在接下 来的轮加密过程中不再进行该置换操作。在经过初始置换操作后,对得到的 64 位序列进行 16 轮加密运算,这些运算被称为函数 f ,在运算过程中,输入数据与密钥结合。经过 16 轮 后,左、右半部分合在一起得到一个 64 位的输出序列,该序列再经过一个末尾置换 1 IP- (初 始置换的逆置换)获得最终的密文(具体加密流程见图 2-4)。初始置换 IP 和对应的逆初始 置换 1 IP- 操作并不会增强 DES 算法的安全性,它的主要目的是为了更容易地将明文和密文 数据以字节大小放入 DES 芯片中。 DES 的每个阶段使用的是不同的子密钥和上一阶段的输出,但执行的操作相同。这些 操作定义在三种“盒”中,分别称为扩充盒(Expansion box,E-盒)、替换盒(Substitution box、S-盒)、置换盒(Permutation box、P-盒)。在每一轮加密过程中,三个盒子的使用 顺序如图 2-4 所示。在每一轮加密过程中,函数 f 的运算包括以下四个部分:首先将 56 位 密钥等分成长度为 28 位的两部分,根据加密轮数,这两部分密钥分别循环左移 1 位或 2 位 后合并成新的 56 位密钥序列,从移位后的 56 位密钥序列中选出 48 位(该部分采用一个压 缩置换实现);其次通过一个扩展置换将输入序列 32 位的右半部分扩展成 48 位后与 48 位的 轮密钥进行异或运算;第三部分通过 8 个 S-盒将异或运算后获得的 48 位序列替代成一个 32 位的序列;最后对 32 位的序列应用置换 P 进行置换变换得到 f 的 32 位输出序列