第 2篇 信息系统安全信任体系张基温 编著信任( Trust)是指“他人对不确定行为的良好确定预期”。它通常包含三种性质:
( 1)时空错位:在时间上是诺言在先,兑现在后;在空间上是此地诺言,彼地兑现。
而、空间以及信息主体的全面虚拟话,信任问题比一手交钱一手交货当场完成的交易等行为中,就要重要得多。
( 2)不确定性:诺言的兑现或行为的发生并不是百分之百的,其间存在一定的风险。若是在确定性的行为过程中,信任就不成问题问题。
显然,在数字世界中,不确定性除了先验不确定性 —— 信息本身的不确定性,外后验不确定性 —— 信道传输带来的不确定性更加突出,信任问题也比知识世界更重要。
( 3)当事者没有客观根据可以绝对相信。在数字世界中,信息载体的非实在性,更使人对客观根据不可绝对信任。
德国社会学家卢曼认为,信任是基于人的生存策略的一种简化机制,信任将周围复杂的环境和千差万别的人的性格简化为“二元预限”,
即“可以相信”和“不可以相信”。信任并没有帮助人们消除风险,但可促使人们勇敢地进入不确定性当中。
在现实生活中,信任被简单地理解为“相信而敢于托付。”(,现代汉语词典,),并且信任关系依靠亲情、利益、法制建立和维系。任何具有一定安全要求的系统都是与具有一定程度的信任形式为前提的。
在信息系统中,除了不确定性依然存在以及当事者没有客观根据可以绝对相信外,
出现了更全面的虚拟。不仅时空错位继续存在,而且一切实体都数字化了,给人更大的不真实感,信任更为重要。但是,在这个数字化的虚拟世界中,亲情和利益不可体会,唯一可以使用的是规则。因此,
一种规则就可以建立和维系一个信任体系。
这些规则最基本的描述就是基于加密的直接信任和第三方信任。
第 6章 数据加密与数据隐藏密码技术是一种保密技术。是数字系统中建立信任关系的基础。简单地说,加密和解密就是关于密文使用的一种信任关系。
这一章介绍密码技术和数据隐藏技术的基本知识。密码技术是让信息的截获者无法了解信号的内容;数据隐藏技术则是使信息让人难于截获。
6.1 密码技术基础
6.1.1 基本加密方法数据加密是通过某种函数进行变换,
把正常数据报文 —— 明文( Plaintext,也叫明码)转换为密文( Ciphertext,也称密码)。下面介绍几个传统的简单的变换方法。
1,置换法,
置换法,就是将明文中的每个字母都用其他字母代替。比较简单的置换方法是恺撒算法,它将明文中的每个字母都移动一段距离。
例如都移动 5个字符空间的明文,CHINA”,变成了密文,HMNSF”。然而,这种密码系统太脆弱、
太容易被攻破了。于是人们设计了复杂算法,并使算法依赖于一个参数 k。这个参数就称为密钥。
这时算法可以写成:
Cc =Ek(P)
下面举例说明法国密码学家 Vigenere以他自己的名字命名的维吉利亚密码:
P = data security,k=best
算法如下:
1 制作维吉利亚方阵如表 6.1所示。规则是第
i行以 I打头。
2 按密钥的长度将 P分解若干节。这里 best
的长度为 4,故将明文分解为表 6.2所示的样子。
表 6.1维吉利亚方阵表 6.2明文分解
3 对每一节明文,利用密钥 best进行变换。
以明文,d”为例,变化的方法是:由于 d处于 b列,因此在维吉利亚方阵的第 b行中找第 d个字符既是。于是得到如下密文:
C=Ek(P)=EELT TIUN SMLR
替换法可以有多种形式,如
( 1)简单替换密码( Simple Substitution
Cipher)或单字母密码( Mono Alphabetic
Cipher):将明文中的一个字母用一个相应的密文字母替换。
( 2)多名替换密码( Homophonic
Substitution Cipher):一个字母可以映射为多个密文字母。如:
A ~ 5,12,25,56
B ~ 7,17,31,57
……
( 3)多字母密码( Poly Alphabetic
Cipher):字符块被成组加密。如,
ABA ~ RTQ
ABB ~SLL
……
2,换位法换位就是将明文中字母的位置重新排列。最简单的换位就是逆序法,即将明文中的字母倒过来输出。例如明文,computer system
密文,metsys retupmoc
这种方法太简单,非常容易破密。下面介绍一种稍复杂的换位方法 —— 列换位法。
使用列换位法,首先要将明文排成一个矩阵,
然后按列进行输出。为此要解决两个问题:
排成的矩阵的宽度 —— 有多少列;
排成矩阵后,各列按什么样的顺序输出。
为此,要引入一个密钥 k,它既可定义矩阵的宽度,又可以定义各列的输出顺序。例如
k=computer,则这个单词的长度( 8)就是明文矩阵的宽度,而该密钥中各字母按字母序出现的次序,就是输出的列的顺序。表 6.3为按密钥对明文,WHAT YOU CAN LEARN
FROM THIS BOOK”的排列。
表 6.3为按密钥对明文,WHAT YOU
CAN LEARN FROM THIS BOOK”的排列于是,输出的密文为:
WAIUTXAFBHNSTROCHXOMKYOO
3,简单异或异或运算具有如下特点:
0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 0
a a = 0 a b b = a
即两个运算数相同,结果为 0;不同,结果为 1。
+ + + +
+ + +
使用简异或进行加密,就是将明文与密钥进行异或运算,解密则是对密文用同一密钥进行异或运算。即
P k = C
C k = P
6.1.2 密码体制
1,密码体系 = 加密 /解密算法 + 密钥
+
+
由上面几个例子可以看到,为了进行加密变换,需要密钥( Cipher)和算法
( Algorithm)两个要素。进行解密,也需要此两个要素。为了提高加密强度,一是要设计安全性好的加密算法,二是要尽量提高密钥的长度(因为利用现代计算机技术可以用穷举法,穷举出密钥,加长密钥可以增加穷举的时间)。但是在实际中,
如何保证密码方法的安全性呢?
为了安全,在实际中可以采用两种不同的策略:一种称为受限制的算法。受限制的算法就是基于算法保密的安全策略。这种策略曾经被使用,但是在现代密码学中,
已经不再使用。原因如下:
算法是要人掌握的。一旦人员变动,就要更换算法。
算法的开发是非常复杂的。一旦算法泄密,
重新开发需要一定的时间。
不便于标准化:由于每个用户单位必须有自己唯一的加密算法,不可能采用统一的硬件和软件产品。否则偷窃者就可以在这些硬件和软件的基础上进行猜测式开发。
不便于质量控制:用户自己开发算法,需要好的密码专家,否则对安全性难于保障。
因此,现代密码学都采用基于密钥保护的密码安全策略。就是:将加密算法标准化(可以公开),只保护密钥。这样便于标准化和质量控制(可以由高水平的专家开发算法);一个密钥泄密,只要换一个便可。
2,对称密钥体制和非对称密钥体制现在,加密算法已经被标准化 —— 可以公开了,加密过程的管理主要集中到密钥的产生与分配上。目前在网络中一般采用两种密码体制:
单钥密码 —— 对称密钥体制:加密与解密用同一个密钥;
双钥密码 —— 非对称密钥体制:加密与解密用不同的密钥。
( 1)对称密码体制在对称型密码体制中,加密和解密采用同一密钥。如图 6.1所示,它是利用一个密钥对数据进行加密,对方收到数据后,用同一个密钥进行解密。由于加解密采用同一密钥,密钥决不能泄露,故也将这种体制称为秘密密钥密码体制或私钥密码体制。
图 6.1 对称密码体制的加密与解密在对称密码体制中,最为著名的加密算法是 IBM公司于 1971年 ~1972年间研制成功的
DES( Data Encryption Standard)分组算法,1977年被定为美国联邦信息标准,这就是称为 DES(数据加密标准)的原因。
DES使用 64位的密钥(除去 8位奇偶校验码,
实际密钥长度为 56位),对 64位二进制数进行分组加密,经过 16轮的迭代、乘积变换、压缩变换等处理,产生 64位密文数据。
IDEA( International Data Encryption
Algorithm)是于 1992年推出的另一个成功的分组加密算法。它的核心是一个乘法 /加法非线性构件,通过 8轮迭代,能使明码数据更好地扩散和混淆。
由于加密算法是标准的、公开的,所以
DES和 IDEA算法的安全性完全依赖于密钥。
通常,采用 KDC(密钥分发中心)集中管理和分发密钥。初始密钥可作为加密使用,
也可作为身份认证使用。
为增强网络的安全性,一般将初始密钥作为身份认证使用,一旦认证结束,便由系统自动生成阶段性密钥。
阶段性密钥由网络安全管理员指定,可根据网络环境和具体应用确定多长时间(几分钟还是几个小时)为限。
秘密密钥系统运算效率高、使用方便、加密效率高,
是传统企业中最广泛使用的加密技术。但是,由于秘密密钥要求通信的双方使用同样的密钥,双方无论用任何方式交换密钥都有可能失密。
( 2)非对称密码体制非对称加密技术将加密和解密分开采用一对不同的密钥进行。它有如下特征:
加密和解密分别用不同的密钥进行,如用加密密钥 PK对明文 P加密后,不能再用 PK
对密文进行解密,只能用相应的另一把密钥 SK进行解密得到明文。即
DPK(EPK(P))≠P,DSK(EPK(P))=P。
加密密钥和解密密钥可以对调,即
DpK(EsK(P))=P。
应能在计算机上容易地成对生成,但不能用已知的 PK导出未知的 SK。
3,公开密钥体制在非对称密钥体制中,存在一个由谁产生一对密钥的问题。若由 A端产生一对密钥,
则要由 A将公钥送达 B端,不仅送达过程是非常脆弱的,而且容易引起纠纷;若由第三方产生一对密钥,也存在密钥分配的脆弱性问题。无论多么强大的加密系统,一旦密钥泄露,就将无密可言。因而,实际应用的 RSA体制采用的是公开密钥体制。
为简化问题,以两方通信为例介绍公开密钥体制的基本原理。
( 1)为通信的双方各生成一对密钥 —— PKA、
SKA,PKB,SKB,将 PKA,PKB称为公开密钥(简称公钥),将 SKA,SKB称为私有密钥(简称私钥);
( 2)按下面的原则分发给数据传送的两方:
每一方掌握自己的私钥和对方的公钥;
( 3)设 A为发送方,B为接收方,加密 /解密过程如图 6.2所示:
图 6.2加密 /解密过程
A端先用自己的私钥 SKA对报文进行单向不可逆加密变换;
A端用 B端的公钥 PKB,对经过签名变换的文本 DSKA(P)进行加密,生成密文
EPKB(DSKA(P))传向 B方;
B端收到密文 EPKB(DSKA(P)),先用其私钥 SKB进行解密,生成 DSKA(P),接着再用 A端的公钥 PKA进行解密变换,便可得到明文 P。
公开密钥体制是斯坦福大学的两名科学家
Diffie和 Hellman在 1976年提出来的。所以叫做公开密钥体制,是因为它基于非对称密钥体制,每一对密钥中,有一个是公开的。采用公开密钥体制无需事先交换密钥,
也无需经常变更密钥,每个用户可以与任何其他用户进行保密通信,在网络环境下有较大的优越性,但其运算复杂、加密效率低。
6.1.3 分组密码分组密码是将明文进行编码后表示的数字序列 )x0,x1,…,xi,… 划分成长度为 n的组,
x = (x0,x1,…,xn -1)
在分组密码中,常常要使用抗击对密码系统进行统计分析的扩散和混淆方法。
扩散是使明文中的每一位影响密文中的多位,也使密文中的一位受明文中的多位的影响,从而将明文的统计特性散布到密文中,形成尽可能复杂的明文和密文之间的统计关系。在二元分组密码中,对数据重复使用某个置换,再对该置换作用以一个函数,可以获得扩散。
混淆是是密钥与密文之间的统计关系变得尽可能复杂,使敌手无法从密文中分析出密钥。使用复杂的换位算法,可以得到预期的混淆结果。
6.2 典型加密技术
6.2.1 数据加密标准 DES算法
1973年 5月,美国国家标准局发出通告,公开征求对计算机数据在传输和存储期间的进行数据加密的算法。要求:
( 1)必须提供高度的安全性;
( 2)具有相当高的复杂性,使得破译的开销超过获得的利益,但同时又便于理解和掌握;
( 3)安全性应当不依赖于算法的保密,加密的安全性仅以加密密钥的保密为基础;
( 4)必须适合不同的用户和不同的应用场合;
( 5)实现算法的电子器件必须很经济,运行有效;
( 6)必须能够出口。
此后数年内,美国的许多公司、研究机构和大学开发了许多算法。 1975年,IBM提出的算法被采纳,并向全国公布,征求意见。 1977年 1月 15日,美国国家标准局正式采用这个算法作为数据加密标准(同年 7月
15日生效)。这就是 DES。
1,DES的基本思想
DES算法的基本思想是将二进制序列的输入明文,以 64
位为数据分组,然后对这些明文进行替换和换位,最后形成密文。如图 6.3所示。
DES算法的基本特点如下:
( 1)对称算法:既可用于加密,也可用于解密。
( 2) 64位的密钥,使用长度为 56位( 64位明文中,有 8
位用于奇偶校验)。
( 3)加密算法是混淆与扩散的结合,或者说是换位与置换的结合。
( 4)每个 DES都在明文上实施 16重相同的组合技术,如图 6.4所示。这种重复性可以被非常理想地应用到一个专用芯片中。
图 6.3 DES加密
2,DES加密过程细化图 6.5为对图 6.4的细化。从图中可以看出,
DES加密过程主要涉及如下环节(模块):
初始换位和逆初始换位;
将 64位明文分为 32位的左右两段,L0和 R0;
图 6.4 DES加密过程图 6.5 DES加密过程详解
进行 16轮相同的迭代运算:混淆 +异或 +交换;
将最后左右两段合并;
生成每一轮的子密钥。
表 6.4为初始换位 IP和逆初始换位 IP-1。初始变换 IP为将 T=t1t2t3…t63t64 变换成
T0=t58t50t42…t15t7 。 IP-1为 IP的逆变换。
将明文分成左右两段和将左右两段合并比较简单,这里就不介绍了。关于每一轮的迭代和每一轮使用的子密钥的生成,下面专门介绍。
表 6.4初始换位 IP和逆初始换位 IP-1
3,子密钥的生成图 6.6为生成每一轮使用的 48位子密钥的过程。
下面介绍它的各个环节。
( 1)压缩变换 PC-1与将分割得到 C0,D0
PC-1的作用是去掉奇偶校验位 8,18,24,
32,40,48,56,64后,按 56位进行换位。
换位算法如表 6.5所示。
( 2)密钥移位
56位密钥被分成两部分之后,每一部分 28
位。在每一轮中进行一次左移位,左移的位数以轮数而异,如表 6.6所示。
图 6.6生成每一轮使用的 48位子密钥的过程
( 3)压缩置换 PC-2
PC-2是从 56位密钥中,取出 48位。其算法如表 6.7所示。
4,f算法观察图 6.5,现在就剩下 f算法还没有介绍了。
f算法是 DES精华所在,用它来实现分组加密的扩展和混淆。在 DES中,其他部分是线性的,而 f算法是非线性的。如图 6.7所示,
f算法主要由 E-盒,S-盒和 P-盒组成。
表 6.7 PC-2压缩算法图 6.7 f算法
( 1) E-盒
E-盒( Expansion Permutation,扩展置换)
是把数据明文的右半部分 Ri从 32位扩展到
48位。这样的好处有:
可以与 48位的密钥进行异或运算;
有利于产生雪崩效应( Avalanche Effect),
尽快地使输出(密文)的每一位依赖输入
(明文和密钥)的每一位。
提供了更长的结果,以便替代运算时可以压缩。
具体的办法是对于每个输入分组,在输出分组中将第 1,4位分别对应 2位,第 2,3位不变。如图
6.8所示。这样,尽管输出分组大于输入分组,但每一个输入分组产生唯一的输出分组。
( 2) S-盒代换
S-盒是进行了压缩后的密钥( 56位 → 48位)与扩展后的明文分组( 32位 → 48位)异或后进行的。
目的是对 48位的输入替代压缩成 32位的输出。替代由 8个 S-盒进行。每个 S-盒有 6位输入,4位输出。如图 6.9所示,这 8个 S-盒,可以将 48位的输入变换为 32位的输出。
图 6.8 E-盒扩展置换图 6.9 8个 S-盒的输入和输出
8个 S-盒的 6变 4代换,按表 6.8查表进行,并且每个盒的代换都不相同。
查该表的方法是,用 b1b6(二进制)查行,用
b2b3b4b5(二进制)查列。例如,S3的 6位输入为 101100,则用 10( 2)查 S3的第 10行,用 1100
( 12)查 S3的 12列,得到 12。即输出的 4位为
1100。
( 3) P-盒置换是对 S-盒的 32位输出进行一次换位。表 6.9给出了每位输入将要换到的新位置。
例如,原来的第 28位,移位到了第 7位的位置上。
表 6.8 8个 S-盒查表代换表 6.9 P-盒置换
6.2.2 公开密钥算法 RSA
在 Diffie和 Hellman提出公钥密码体制理论后两年左右,MIT的 R,Rivest,A,Shamir和 L,
M.Adleman三名数学家共同提出了一种用数论构造的、迄今理论上最为完臻的公开密钥算法,并用他们三人的名字将之命名为 RSA算法。
1,数学基础
( 1)费尔玛( Fermat)定理描述 1:若 p是素数,a是正整数且 gcd( a,p)
=1,则 ap-1≡ 1( mod p)。
描述 2:对于素数 p,若 a是任一正整数,则 ap
≡ a( mod p)。
例 1:设 p=3,a=2,则 23-1=4 ≡ 1 ( mod 3)
或 23=8≡2( mod 3)
例 2:设 p=5,a=3,则 35-1=81 ≡ 1 ( mod 5)
或 35=243≡3( mod 5)
( 2)欧拉( Euler)函数设 n是一个正整数,是小于 n,并与 n互素的正整数的个数,称为 n的欧拉函数,记作 φ(n)。
例,φ(6) = 2 {1,5}; φ(7) = 6 {1,2,3,
4,5,6}; φ(9) = 6 {1,2,4,5,7,8}
( 3)欧拉( Euler)定理欧拉定理:若整数 a和 m互素,则
aφ(m) ≡ 1 (mod m)
例 1:设 a=3,m=7,则有 φ(7)=6,36=729,
729≡ 1(mod 7)
例 2:设 a=4,m=5,则有 φ(5)=2,42=16,
16≡ 1(mod 5)
2,RSA加密密钥的产生
RSA依赖于一个基本假设:分解因子问题是计算上的困难问题。即很容易将两个素数乘起来,但分解该乘积是困难的。
( 1)基本过程
①选两个保密的大素数 p和 q (保密)。
②计算 n=p·q(公开),φ(n)= (p-1)(q-1) (保密)。
③随机选取一整数 e,满足 1<e<φ(n)且 gcd(φ(n),e)=1
(公开)。
④计算 d,满足 d·e ≡ 1(mod φ(n)) (保密)。
说明,d是 e在模 φ(n)下的乘法逆元。因为 e与 φ(n)互素,
所以其乘法逆元一定存在。
⑤ 得到一对密钥:公开加密钥,{e,n},秘密加密钥
{d,n}。
( 2)应用举例
① 选择两个素数 p = 7,q = 17。
② 计算 n = p·q = 7× 17 = 119。
计算 n的欧拉函数 φ(n) = ( p - 1)(q - 1) = 6× 16 =
96。
③ 从 [0,95]间选一个与 96互质的数 e = 5,根据式
5·d = 1 mod 96
④ 解出 d = 77,因为 e·d = 5× 77 = 385 = 4× 96 +
1 = 1 mod 96。
⑤得到公钥 PK = (e,n) = {5,119},密钥 SK =
{77,119}。
3,RSA加密 /解密过程
( 1)明文数字化,即将明文转换成数字串。
( 2)分组。将二进制的明文串分成长度小于
log2n的数字分组。如果 p和 q都为 100位素数,
则 n将有 200位,所以每个明文分组应小于 200
位。
( 3)加密算法
Ci=Mie( mod n)
最后得到的密文 C由长度相同的分组 Ci组成。
( 4)解密算法
D(C) ≡ Cd (mod n)
4,综合应用举例
( 1)产生密钥设,p=43,q=59,n=43× 59=2537,φ(n)=42× 58=2436
取 e=13(与 e没有公因子)
解方程 d·e ≡ ( mod 2436),
2436 = 13× 187+5,5=2436-13× 187
13=2× 5+3,3=13-2× 5
1 = 3-2 = 3-( 5-3) =2× 3-5=2× ( 13-2× 5) -5
= 2× 13-5× 5
= 2× 13-5× ( 2436-13× 187)
= ( 187× 5+2) × 13-5× 2436
= 937× 13 --5× 2436
即 937× 13≡1(mod 2436)
故 e=13,d=937
( 2)加密明文,public key encryptions
明文分组,pu bl ic ke ye nc ry pt io ns
明文数字化(按字母序,令 a=00,b=01,c=03,…,
y=24,z=25):
1520 0111 082 1004 2404 1302 1724 1519 0814
1418
加密:按照算法 Mie( mod n) =Ci,如 152013( mod
2537) =0095得到密文
0095 1648 1410 1299 1365 1379 2333 2132 1751
1289
解密:按照算法 Cie( mod n) = Mi,如 009513( mod
2537) = 1520。
5,RSA安全性分析
RSA体制的加密强度依赖于大数分解的困难程度。采用穷举法,对于两个 100位的十进制大素数,破译它大约需要 1023步,若使用 100万步 /秒的计算机资源对其进行破密,约需要
1000年。
但是,人类的计算能力也在不断提高,原来一些被认为不可能分解的大数,现在已经被成功分解。例如,RSA-129(即 n为 129位的十进制数,约 428比特),历时 8个月,已经于 1994
年 4月被成功分解。而且有报道,国外科学家正在用量子方法对大数分解发起冲击。
不过,在目前的情况下,密钥长度在 1024
比特 ~2048比特的 RSA还是相对安全的。
为了保证 RSA安全性,对 p和 q还有如下要求:
( 1) p和 q的长度相差不要太大;
( 2) p-1和 q-1都应当有大数因子;
( 3) gcd( p-1,q-1)应小。
6.3 密钥管理与密钥分配一般说来,密码算法的研制比更换密钥要困难得多,
即使费了九牛二虎的气力研制了一个密码算法,随着对手截获的报文的增多,知识积累的增加,破译密码的可能性就越来越大。因此,近代密码学要求在设计密码系统时,应当不强调密码算法的保密。于是密码系统的安全性就只取决于密钥的安全。历史的经验表明,从密钥的管理途径进行攻击比单纯破译密码算法要容易得多。在计算机网络中,由于用户和节点很多,
出于安全的要求,密钥又要经常变换,于是密钥的设置、生成、分配、使用、替换、更新、保护、存储、
备份 /恢复、丢失、撤销、销毁等管理就成为一个十分棘手的问题。
6.3.1 密钥的生成现代密码体制有点像门锁,房间的安全主要依赖于钥匙。也更像现代的电子锁,锁门的操作(相当于加密算法)非常简单,
房间的安全关键在于卡片式钥匙的保管,
而一旦卡片丢失或房间换人,只要重新对卡片进行设置即可。下面讨论与密钥的安全性有关的几个问题。
1,密钥的长度和密钥空间在单钥加密体制中,密钥长度( Key length)
必须是足够长的。密钥的长度定义了密钥空间的大小。例如,DES有 56位密钥,在正常情况下,任何一个 56位的数据串都能成为其中一个密钥,所以 DES具有 256
( 1016)的密钥空间。每次使用的密钥都是在这个密钥空间中随机抽取的。因此,对
DES攻击的难度,主要决定于密钥长度所定义的密钥空间。
实际上,DES的密钥空间也没有 256( 1016):在某些实现中,对密钥组成还有一些限制。这些限制,将使密钥空间减小,使 DES密钥的攻击难度大为降低。表 6.10为不同的限制对密钥空间的影响。
此外,根据摩尔法则,计算机的计算能力每隔 18
个月翻一番,而且计算方法也在进步。所以,一个安全的密钥长度,很快就会不安全。
还应当注意,将一个密码使用的长度与另一个的长度进行比较是不合适的,通常,对称密码中的密钥长度与非对称密码中的密钥长度不是直接相等的。
表 6.10 不同的限制对密钥空间的影响
2,弱密钥问题密钥强度就是密钥攻击的复杂度,除了密钥长度的因素外,还有密钥本身的品质问题。一个好的密钥,应当使好记、难猜。相对而言,易猜,生成具有规律性,提供较低的攻击复杂读的密钥就称为弱密钥( Weak key)。
显然 k57=k49=k41=……=k 44=k36=0或 1,
k63=k55=k47=……=k 12=k4=0或 1时,k将是弱密钥。
故 DES有以下 4种弱密钥(十六进制表示):
01 01 01 01 01 01 01 01
1F 1F 1F 1F 1F 1F 1F 1F
E0 E0 E0 E0 E0 E0 E0 E0
FE FE FE FE FE FE FE FE
还有一种密钥称为半弱密钥,即存在 k和 k’使得
DESk(m)=DESk’-1(m),或 DESk(DESk’(m))=m。
k和 k’成对构成半弱密钥。半弱密钥有下面 12个。
01 FE 01 FE 01 FE 01 FE
FE 01 FE 01 FE 01 FE 01
1F E0 1F E0 1F E0 1FE0
E0 1F E0 1F E0 1F E01F
01 E0 01 E0 01 E0 01E0
E0 01 E0 01 E0 01 E001
1F FE 1F FE 1F FE 1FFE
FE 1F FE 1F FE 1F FE1F
01 1F 01 1F 01 1F 011F
1F 01 1F 01 1F 01 1F01
E0 FE E0 FE E0 FE E0FE
FE E0 FE E0 FE E0 FEE0
严格地说,生成一个密钥后,应当对其进行若密钥测试。若发现是弱密钥,就换一个。
但是,在 DES的 256( 1016)的密钥空间中,
只有 16个弱密钥。这个几率很小。
对于公开密钥体制来说,密钥的产生就不这么简单了。因为密钥必须有一些约束,如:
要符合某些数学特征,如:是素数,是二次剩余的等。
随机性要强,最好伪随机数种子也是随机的。
应当好记。
将好记和随机性结合起来解决的好的办法是使用一个容易记忆的通信短语( pass phrase)
作为用户使用的密钥,如使用短语:
My name is Ozymandisa,king of kings,look
on works,ye mighty,and despair.
然后,使用密钥碾碎( Key crunching)技术,
将该短语碾碎成 64位的密钥。如上述短语可以碾碎成:
e6c1 4398 5ae9 0a9b
这个密钥的随机性与通信短语的长度有关。当通信短语有足够的长度(一般认为有 10个以上单词,或有 49个以上字母),得到的密钥将具有较好的随机性。
此外,密钥的选择还要尽避免字典攻击。美国国防部建议在 OFB方式下,使用系统中断向量、
系统状态寄存器、程序计数器、系统时钟、系统 ID号等产生 DES随机密钥。
6.3.2 密钥的分配在密钥管理中,最核心、对关键的问题是密钥分配。密钥主要涉及密钥的发送和验证,密钥。
前者要求通过非常安全的通路进行传送,后者要求有一套机制用于检验分发和传送的正确性。
本小节讨论密钥分配中的一些问题。
1,密钥设置协议为了提高密钥的安全性,目前流行的密钥管理方案一般采用层次的密钥设置。 X9.17标准描述了两种层次的密钥:
数据密钥( data key,DK):直接对信息序列加密。
密钥加密密钥( keyencryption key,KK):加密需要分发的密钥。
2,网外分发与网内分发密钥的分发方法可以分为两种:网外分发和网内分发。网外分发即人工分发:派非常可靠的信使(邮寄、信鸽等)携带密钥分配给各用户。
但是,随着用户的增加、通信量的增大以及黑客技术的发展,密钥的使用量增大,且要求频繁更换,信使分配就不再适用,而多采用网内密钥分配,即自动密钥分配。网内密钥分配的方式有两种:用户之间直接分配和通过设立一个密钥分配中心( Key Distribution Center,
KDC)分配。
具体的密钥分配方法称为密钥分配协议。目前国际有关标准化机构都在着手制定关于密钥管理技术的规范。国际标准化组织 ISO和国际电工委员会 IEC下属的信息技术委员会 JTCI已经起草了关于公钥管理的国际规范。该规范主要由 3部分组成:
密钥管理框架;
采用对称技术的机制;
采用非对称技术的机制。
3.密钥分配的几种方法在单钥加密体制中,信息交换方必须共享一个密钥,并且这个密钥要防止被他人获得。在公开加密体制中,为了使加密有效进行,信息接受方必须发布其公开密钥,同时防止其私钥被人窃取。此外,密钥还要经常更换,以便泄露见降至最小。
设有通信的双方,A和 B,密钥的分配可以有如下几种方法:
( 1)网外分发方法
密钥由 A选定,然后通过物理方法传递给 B。
密钥由可信任的第三方选定,然后通过物理方法传递给 A和 B。
( 2)密钥分配中心分发若 A和 B有一个共同的可信任的第三方 —— KDC(密钥分配中心),KDC可以通过加密连接将密钥安全地传送给 A和 B。这种方法多用于单钥密钥的分配。图
6.10为一个采用这种方法的密钥分配例子。
图 6.10一个依靠 KDC进行密钥分配的例子这个例子的前提是 A和 B有一个共同的可信任的第三方 —— KDC,即 KDC分别与 A和 B有一保密的信道,也即 KDC与 A和 B分别已经有一通信密钥 Ka和 Kb。假定 A与 B的通信是 A主动,
则有如下过程。
① A向 KDC发出会话密钥请求,IDa|| IDb||N1
IDa,IDb标识会话双方 A和 B;
N1标识本次会话(可能是时间戳或随机数等一个他人难于猜测的现时值)。
② KDC对 A的请求应答:
EKa[Ks||{IDa||IDb||N1}||EKb[{Ks||IDa}]]
全部报文用 A已经掌握的密钥 Ka加密,内容包括三部分:
一次性会话密钥 Ks。
A的请求报文(供 A检验)。
要求 A中转,但 A不能知道内容的、用 Kb加密的一段报文,Ks||IDa。
③ A存储 Ks,并向 B转发,EKb[Ks||IDa]。 B得到:
Ks,还知道 Ks来自 KDC(因为用 Kb解密)。
知道会话方是 A。
④ B向 A回送报文,EKs[N2]。
用 Ks表明自己的身份是 B(因为 Ks要用 Kb解密)。
用 N2再确认。
⑤ A向 B回送报文,EKs[f( N2) ]。确认 B前次收到的报文不是回放。
这样,A与 B就有了自己的秘密通道了。
( 3)证书授权中心( Certificate Authority,
CA)分发若 A和 B都在可信任的第三方 —— CA发布自己的公开密钥,则 A和 B都可以用彼此的公开密钥加密通信。这种方法多用于公开加密密钥的分配。图 6.11为一个采用这种方法的密钥分配例子。
① 用户 A向 CA发出请求报文:
一个带时间戳的消息。
获取 B的公钥的请求。
图 6.11 一个依靠 CA进行密钥分配的例子
② CA对 A应答(用 CA的私钥加密,A可以用 CA的共钥解密)。内容有:
B的共钥 PKB(供 A向 B发加密消息)。
A的请求(供 A验证本报文是对自己请求的应答)。
最初的时间戳(供 A确认不是 CA发来的旧消息,以便确定 PKB确是 B的)。
③,④ B用同 ①,② 相同的方法,从 CA得到 A的公钥。
⑤ A用 PKB向 B发送一个消息:
A的身份 IDA。
一次性随机数 N1。
⑥ B用 PKA向 A发送一个消息:
N1(由于只有 B才能解用 PKB加密的消息,将 N1返回
A,让 A确认是 B)。
一次性随机数 N2。
⑦ A用 PKB将 N2加密,返回 B,供 B确认。
应当说明,这种方法是基于公钥目录表的。公钥目录表是由某个可信的机构或组织管理、并定期更新、定期公布的用户公钥目录表。目录表中的每个目录项由两个数据组成:用户名和该用户的公钥。
用户可以在公钥目录表的管理机构注册自己的公钥,
也可以随时更换现有的公钥,也可以通过电子方式在有安全认证的情况下访问公钥目录表。
应当注意的是,公钥目录表可能会被攻击者伪造、监听、攻击。
( 4)公钥证书公钥证书是由 CA为用户发布的一种电子证书。
例如用户 A的证书内容形式为:
CA=ESKCA[T,IDA,PKA]
其中:
IDA是用户 A的标识。
PKA是 A的公钥。
T是当前时间戳,用于表明证书的新鲜性,防止发送方或攻击者重放一旧证书。
SKCA是 CA的私钥。证书是用 CA的思钥加密的,
以便让任何用户都可以解密,并确认证书的颁发者。
当一方要与另一方建立保密信道时,就要把自己的证书发给对方。接收方用 CA的公钥可以对证书进行查验,并获得发送方的公钥。接收方同意进行保密通信,也要将自己饿证书发送到对方。这样,就不依赖 CA而直接交换了公钥。
6.3.3 密钥的使用与保护
1,密钥的控制使用控制密钥使用,是为了保证按照预定的方式使用。控制密钥使用的信息有:
密钥主权人;
密钥合法使用期限;
密钥标识符;
密钥预定用途;
密钥预定算法;
密钥预定使用系统;
密钥授权用户;
在密钥生成、注册、证书等有关实体中的名字等。
2,密钥的保护与存储密钥从产生到终结,在整个的生存期中都需要保护。
一些基本的措施有:
( 1)密钥决不能以明文形式存放。
( 2)密钥首先选物理上择最安全的地方存放。
( 3)在有些系统中可以使用密钥碾碎技术由一个短语生成单钥密钥。
( 4)可以将密钥分开存放。例如:
将密钥平分成两段,一段存入终端,一段存入 ROM。
将密钥分成若干片,分发给不同的可信者保管。
6.3.4 密钥生存期的结束
1,密钥的有效期任何密钥都不可能无限期地使用。有许多因素,似的密钥不能使用太长的时间,如:
密钥使用越久,攻击者对它的攻击方法越多,攻击的机会越多。
密钥一旦泄露,不立即废除,时间越长,损失越大。
因此,不同的密钥应当有不同的有效期,同时必须制定一个检测密钥有限期的策略。密钥的有限期依据数据的价值和给定时间里加密数据的数量确定。
2,密钥的停用和更新当发生下列情况时,应当停止密钥的使用,更新密钥。
密钥的使用期到,应该更新密钥。
确信或怀疑密钥被泄露密钥,密钥及其所有变形都要替换。
怀疑密钥是由一个密钥加密密钥或其他密钥推导出来时,各层与之相关的密钥都应更换。
通过对加密数据的攻击可以确定密钥时,在这段时间内必须更换密钥。
确信或怀疑密钥被非法替换时,该密钥和相关密钥都要被更换。
3,密钥的销毁密钥被替换后,旧密钥必须销毁。旧密钥虽然不再使用,
却可以给攻击者提供许多有重大参考价值的信息,为攻击者推测新的密钥提供许多有简直的信息。为此,必须保证被销毁的密钥不能给任何人提供丝毫有价值的信息。
下面是在销毁密钥时使用过的一些方法,供参考:
密钥写在纸上时,要把纸张切碎或烧毁;
密钥存在 EEPROM中时,要对 EEPROM进行多次重写;
密钥存在 EPROM或 PROM时,应将 EPROM或 PROM
打碎成小片;
密钥存在磁盘时,应当多次重写覆盖密钥的存储位置,
或将磁切碎;
要特别注意对存放在多个地方的密钥的同时销毁。
6.4 数据隐藏及其数字水印技术
6.4.1 数据隐藏技术概述数据隐藏技术是指隐藏数据的存在性。通常是将数据隐藏在一个容量更大的数据载体之中,形成隐密载体,
使非法者难于察觉其中隐藏有某些数据,或难于从中提取被隐藏数据。
载体可以采用文字、图像、声音以及视频等。一般多用多媒体数据作为载体。这是因为多媒体数据本身具有极大的冗余性,具有较大掩蔽效应。
为了增加被攻击的难度,还可以把加密与数据隐藏两者结合起来,将加过密的密文隐藏在多媒体载体之中。
图 6.12表明了数据的隐藏过程和提取过程图 6.13 数字水印的嵌入与提取
6.4.3 数字水印的主要特征
1,不可感知性在多媒体作品中加入水印后,要不改变其感知效果,如图像加入水印后,在视觉上察觉不出有隐藏的水印,同时也不影响原作品的视觉质量,即人们感觉不到图像有了什么变化。因此要求多媒体作品加入数字水印后,数字信息发生的变化和失真应低于可感知的门限,并且在各中分辨率下加入的水印不能因分辨率的降低或升高而凸现被感知。
2,鲁棒性和安全性在多媒体作品中加入的水印应能够抵御应用过程中的各种处理和破坏。主要是指:
抵御包括噪声、滤波和有损压缩在内的数字信号处理;
抵御 A/D和 D/A转换,包括非线性的量化和空间混叠;
抵御旋转、缩放和剪切;
抵御色彩变换和文件格式变换。
3,保密性数字水印的保密性是指数字水印算法不仅不可感知,
而且数字水印的位置和编码方式都要有好的保密性。
4,面向用户性数字水印可以根据用户的需要进行设计,要成为面向用户的定制系统。
5,自相似性为了能在隐藏有数字水印的多媒体作品经过较大的破坏后,仍能从原始数据中恢复出隐藏的水印,水印算法本身应具有自相似性。有自相似性就能从小部分中恢复出原作品的面貌。
6.4.4 数字水印的主要用途
( 1)数字媒体的版权保护和跟踪:在同一种多媒体作品的每个拷贝中嵌入不同的数字水印,
成为数字指纹,其目的是通过授权用户的信息,
来识别数据的发行拷贝,监视和跟踪适用过程中的非法复制。
( 2)隐蔽标识。
( 3)多媒体认证。
( 4)注释水印:将注释加在数字水印中,不占信道容量和带宽。
6.4.5 数字水印的种类
1,按作用分类
鲁棒水印,主要用于数字作品中标志著作版权信息,要能抵御编辑处理和有损压缩;
脆弱水印,主要用于完整性保护,判断信号是否被篡改。
2,按水印载体分类
图像水印。
视频水印。
音频水印。
文本水印。
印刷水印。
3,按照监测方法分类
明水印,在监测过程中需要原始数据的水印技术,其鲁棒性较强;
暗水印,在监测过程中不需要原始数据的水印技术。
4,按照内容分类
内容水印,水印经过攻击受损后,仍能够判断出内容。;
标志水印,要通过检测判断来确定信号中有无水印标志。
5,按照用途分类
版权保护水印。
篡改提示水印。
隐蔽标识水印。
印刷数字水印。
6.4.6 实现数字水印技术的典型算法
( 1)最低有效位算法( LSB):国际上最早提出的数字水印算法,是一种典型的空间域信息隐藏算法,可以隐藏很多信息,但鲁棒性差,受到攻击易被移去。
( 2) Patchwork算法:麻省理工学院媒体实验室提出的一种数字水印算法,主要用于打印票据的防伪,但含数据量少,对仿射变换敏感。
( 3)基于 DCT的频域水印算法:目前研究最多的算法,
具有强鲁棒性和隐蔽性的特点。
( 4)扩展频谱方法:扩频通信技术在数字水印中的应用
(参见第 6章)。
( 5)小波变换( WT)算法:在小波域中隐藏数字水印的算法。
习 题
1,有明文 can you understand,
( 1)假定有一个密钥,其顺序为 2,4,3,1的列换位密码,其换位密文是什么?
( 2)设密钥是 i=1,2,3,4的一个置换 f( i)
=1,3,4,2,则周期为 4 的换位密文是什么?
2,比较两种密钥体制的优缺点。
3,简述 PSA算法的原理。
4,设通信双方使用 R对明文 computer,使用密钥
program按照 DES算法进行加密。
5,解释用 DES的解密算法。
6,编写程序,用于实现 DES加密算法。
7,讨论 DES的不足与解决办法。
8,在非对称密码体制中,第三方如何断定通信者有无抵赖或伪造行为?
9,设通信双方使用 RSA加密体制,接收方的公开密钥是( e,n) =( 5,35),求明文 M=30对应的密文。
10,在使用 RSA公钥的通信中,若截取了发送给其他用户的密文 C=10,并且用户的公钥为( e,
n) =( 5,35),求对应的明文。
11,设计程序实现 RSA算法,并验证其正确性。
12,简述通信双方如何使用密钥体制建立通信中的信任关系。
13,有哪些建立公开密钥体制的方法?
14,分别单钥密钥体制和公开密钥体制中的密钥分配办法。
15,如何利用公开密钥加密进行单钥加密密钥的分配?
16,请自己设计一个密钥生成算法,并验证其密钥空间的安全性。
17,在密钥的生存期间内,如何对密钥进行有效的管理?
18,销毁被撤销的密钥时,应注意些什么?
19,简述信息隐藏的基本嵌入和检测过程。
20,简述数字水印的定义和内容。
21,简述数字隐藏技术中隐含的信任关系。