网安--第九章 密码学与信息加密

第9章 密码学与信息加密
内容提要
本章介绍密码学的基本概念。
介绍加密领域中两种主流的加密技术:
DES加密(Data Encryption Standard)
RSA加密(Rivest-Shamir-Adleman)
并用程序实现这两种加密技术的算法。最后介绍目前常用的加密工具PGP(Pretty Good Privacy),使用PGP产生密钥,加密文件和邮件。
密码学概述
密码学是一门古老而深奥的学科,对一般人来说是非常陌生的。长期以来,只在很小的范围内使用,如军事、外交、情报等部门。计算机密码学是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科。
随着计算机网络和计算机通讯技术的发展,计算机密码学得到前所未有的重视并迅速普及和发展起来。在国外,它已成为计算机安全主要的研究方向。
 密码技术简介
密码学的历史比较悠久,在四千年前,古埃及人就开始使用密码来保密传递消息。

两千多年前,罗马国王Julius Caesare(恺撒)就开始使用目前称为“恺撒密码”的密码系统。但是密码技术直到本20世纪40年代以后才有重大突破和发展。

特别是20世纪70年代后期,由于计算机、电子通信的广泛使用,现代密码学得到了空前的发展。
消息和加密
遵循国际命名标准,加密和解密可以翻译成:“Encipher(译成密码)”和“(Decipher)(解译密码)”。也可以这样命名:“Encrypt(加密)”和“Decrypt(解密)”。

消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密文,而把密文转变为明文的过程称为解密,图8-1表明了加密和解密的过程。
明文 密文
明文用M(Message,消息)或P(Plaintext,明文)表示,它可能是比特流、文本文件、位图、数字化的语音流或者数字化的视频图像等。

密文用C(Cipher)表示,也是二进制数据,有时和M一样大,有时稍大。通过压缩和加密的结合,C有可能比P小些。

加密函数E作用于M得到密文C,用数学公式表示为:E(M)=C。解密函数D作用于C产生M,用数据公式表示为:D(C)=M。先加密后再解密消息,原始的明文将恢复出来,D(E(M))=M必须成立。
鉴别、完整性和抗抵赖性
除了提供机密性外,密码学需要提供三方面的功能:鉴别、完整性和抗抵赖性。这些功能是通过计算机进行社会交流,至关重要的需求。

鉴别:消息的接收者应该能够确认消息的来源;入侵者不可能伪装成他人。

完整性:消息的接收者应该能够验证在传送过程中消息没有被修改;入侵者不可能用假消息代替合法消息。

抗抵赖性:发送消息者事后不可能虚假地否认他发送的消息。
算法和密钥
现代密码学用密钥解决了这个问题,密钥用K表示。K可以是很多数值里的任意值,密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥,即运算都依赖于密钥,并用K作为下标表示,加解密函数表达为:
EK(M)=C
DK(C)=M
DK(EK(M))=M,如图8-2所示。

有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下,加密和解密的函数表达式为:
EK1(M)=C
DK2(C)=M
函数必须具有的特性是,DK2(EK1(M))=M,如图8-3所示。
对称算法
基于密钥的算法通常有两类:对称算法和公开密钥算法(非对称算法)。对称算法有时又叫传统密码算法,加密密钥能够从解密密钥中推算出来,反过来也成立。
在大多数对称算法中,加解密的密钥是相同的。对称算法要求发送者和接收者在安全通信之前,协商一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加解密。对称算法的加密和解密表示为:
EK(M)=C
DK(C)=M
公开密钥算法
公开密钥算法(非对称算法)的加密的密钥和解密的密钥不同,而且解密密钥不能根据加密密钥计算出来,或者至少在可以计算的时间内不能计算出来。

之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。

公开密钥K1加密表示为:EK1(M)=C。公开密钥和私人密钥是不同的,用相应的私人密钥K2解密可表示为:DK2(C)=M。
DES对称加密技术
DES(Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。

DES算法的历史
美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。

加密算法要达到的目的有四点。
提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;
具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握;
DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础;
实现经济,运行有效,并且适用于多种完全不同的应用。
DES算法的安全性
DES算法正式公开发表以后,引起了一场激烈的争论。1977年Diffie和Hellman提出了制造一个每秒能测试106个密钥的大规模芯片,这种芯片的机器大约一天就可以搜索DES算法的整个密钥空间,制造这样的机器需要两千万美元。
1993年R.Session和M.Wiener给出了一个非常详细的密钥搜索机器的设计方案,它基于并行的密钥搜索芯片,此芯片每秒测试5×107个密钥,当时这种芯片的造价是10.5美元,5760个这样的芯片组成的系统需要10万美元,这一系统平均1.5天即可找到密钥,如果利用10个这样的系统,费用是100万美元,但搜索时间可以降到2.5小时。可见这种机制是不安全的。
 DES算法的安全性
1997年1月28日,美国的RSA数据安全公司在互联网上开展了一项名为“密钥挑战”的竞赛,悬赏一万美元,破解一段用56比特密钥加密的DES密文。计划公布后引起了网络用户的强力响应。一位名叫Rocke Verser的程序员设计了一个可以通过互联网分段运行的密钥穷举搜索程序,组织实施了一个称为DESHALL的搜索行动,成千上万的志愿者加入到计划中,在计划实施的第96天,即挑战赛计划公布的第140天,1997年6月17日晚上10点39分,美国盐湖城Inetz公司的职员Michael Sanders成功地找到了密钥,在计算机上显示了明文:“The unknown message is: Strong cryptography makes the world a safer place”。
DES算法的原理
DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式有两种:加密或解密。
DES算法是这样工作的:如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。
DES算法的实现步骤
DES算法实现加密需要三个步骤:
第一步:变换明文。对给定的64位比特的明文x,首先通过一个置换IP表来重新排列x,从而构造出64位比特的x0,x0=IP(x)=L0R0,其中L0表示x0的前32比特,R0表示x0的后32位。
第二步:按照规则迭代。规则为
Li = Ri-1
Ri = Li?f(Ri-1,Ki)   (i=1,2,3…16)
经过第一步变换已经得到L0和R0的值,其中符号?表示的数学运算是异或,f表示一种置换,由S盒置换构成,Ki是一些由密钥编排函数产生的比特块。f和Ki将在后面介绍。

第三步:对L16R16利用IP-1作逆置换,就得到了密文y。加密过程如图8-4所示。

从图中可以看出,DES加密需要四个关键点:1、IP置换表和IP-1逆置换表。2、函数f。3、子密钥Ki。4、S盒的工作原理。
(1)IP置换表和IP-1逆置换表
输入的64位数据按置换IP表进行重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换IP表如表8-1所示。

将输入64位比特的第58位换到第一位,第50位换到第二位,依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位。比如:置换前的输入值为D1D2D3…D64,则经过初始置换后的结果为:L0=D58D50...D8,R0=D57D49...D7。

经过16次迭代运算后。得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置的逆运算,例如,第1位经过初始置换后,处于第40位,而通过逆置换IP-1,又将第40位换回到第1位,其逆置换IP-1规则表8-2所示。
逆置换表IP-1
(2)函数f
函数f有两个输入:32位的Ri-1和48位Ki,f函数的处理流程如图8-5所示。

E变换的算法是从Ri-1的32位中选取某些位,构成48位。即E将32比特扩展变换为48位,变换规则根据E位选择表,如表8-3所示。

Ki是由密钥产生的48位比特串,具体的算法下面介绍。将E的选位结果与Ki作异或操作,得到一个48位输出。分成8组,每组6位,作为8个S盒的输入。

每个S盒输出4位,共32位,S盒的工作原理将在第第四步介绍。S盒的输出作为P变换的输入,P的功能是对输入进行置换,P换位表如表8-4所示。

(3)子密钥ki
假设密钥为K,长度为64位,但是其中第8、16、24、32、40、48、64用作奇偶校验位,实际上密钥长度为56位。K的下标i的取值范围是1到16,用16轮来构造。构造过程如图8-6所示。

首先,对于给定的密钥K,应用PC1变换进行选位,选定后的结果是56位,设其前28位为C0,后28位为D0。PC1选位如表8-5所示。


第一轮:对C0作左移LS1得到C1,对D0作左移LS1得到D1,对C1D1应用PC2进行选位,得到K1。其中LS1是左移的位数,如表8-6所示。

表8-6中的第一列是LS1,第二列是LS2,以此类推。左移的原理是所有二进位向左移动,原来最右边的比特位移动到最左边。其中PC2如表8-7所示。

第二轮:对C1,D1作左移LS2得到C2和D2,进一步对C2D2应用PC2进行选位,得到K2。如此继续,分别得到K3,K4…K16。
(4)S盒的工作原理
S盒以6位作为输入,而以4位作为输出,现在以S1为例说明其过程。假设输入为A=a1a2a3a4a5a6,则a2a3a4a5所代表的数是0到15之间的一个数,记为:k=a2a3a4a5;由a1a6所代表的数是0到3间的一个数,记为h=a1a6。在S1的h行,k列找到一个数B,B在0到15之间,它可以用4位二进制表示,为B=b1b2b3b4,这就是S1的输出。

DES算法的解密过程是一样的,区别仅仅在于第一次迭代时用子密钥K15,第二次K14、最后一次用K0,算法本身并没有任何变化。DES的算法是对称的,既可用于加密又可用于解密。
DES算法的应用误区
DES算法具有比较高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。
DES算法的程序实现
根据DES算法的原理,可以方便的利用C语言实现其加密和解密算法。程序在VC++6.0环境下测试通过

在VC++6.0中新建基于控制台的Win32应用程序,算法如程序proj8_1.cpp所示。

设置一个密钥匙为数组char key[8]={1,9,8,0,9,1,7,2},要加密的字符串数组是str[]="Hello",利用Des_SetKey(key)设置加密的密钥,调用Des_Run(str, str, ENCRYPT)对输入的明文进行加密,其中第一个参数str是输出的密文,第二个参数str是输入的明文,枚举值ENCRYPT设置进行加密运算。程序执行的结果如图8-7所示。
RSA算法的原理
 1976年,Diffie和Hellman在文章“密码学新方向(New Direction in Cryptography)”中首次提出了公开密钥密码体制的思想,1977年,Rivest、Shamir和Adleman三个人实现了公开密钥密码体制,现在称为RSA公开密钥体制,它是第一个既能用于数据加密也能用于数字签名的算法。这种算法易于理解和操作,算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。
RSA体制
RSA体制可以简单描述如下:
(1)、生成两个大素数p和q。
(2)、计算这两个素数的乘积n=p×q。
(3)、计算小于n并且与n互质的整数的个数,即欧拉函数φ(n)=(p-1)(q-1)。
(4)、选择一个随机数b满足1(5)、计算ab=1 mod φ(n)。
(6)、保密a,p和q,公开n和b。

利用RSA加密时,明文以分组的方式加密:每一个分组的比特数应该小于log2n比特。加密明文x时,利用公钥(b, n)来计算c=xb mod n就可以得到相应的密文c。解密的时候,通过计算ca mod n就可以恢复出明文x。

选取的素数p和q要足够大,从而乘积n足够大,在事先不知道p和q的情况下分解n是计算上不可行的。

常用的公钥加密算法包括:RSA密码体制、ElGamal密码体制和散列函数密码体制(MD4、MD5等)。
RSA算法的安全性
RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解 RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA 的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定
RSA算法的速度
由于进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
RSA算法的程序实现
根据RSA算法的原理,可以利用C语言实现其加密和解密算法。RSA算法比DES算法复杂,加解密的所需要的时间也比较长。

本案例利用RSA算法对文件的加密和解密。算法根据设置自动产生大素数p和q,并根据p和q的值产生模(n)、公钥(e)和密钥(d)。利用VC++6.0实现核心算法,如图8-8所示。

编译执行程序,如图8-9所示。该对话框提供的功能是对未加密的文件进行加密,并可以对已经加密的文件进行解密。

在图8-9中点击按钮“产生RSA密钥对”,在出现的对话框中首先产生素数p和素数q,如果产生100位长度的p和q,大约分别需要10秒左右,产生的素数如图8-10所示。

利用素数p和q产生密钥对,产生的结果如图8-11所示。

必须将生成的模n、公密e和私密d导出,并保存成文件,加密和解密的过程中要用到这三个文件。其中模n和私密d用来加密,模n和公密e用来解密。将三个文件分别保存,如图8-12所示。

 

在主界面选择一个文件,并导入“模n.txt”文件到RSA模n文本框,导入“私密.txt”文件或者“公密.txt”,加密如果用“私密.txt”,那么解密的过程就用“公密.txt”。反之依然,加密过程如图8-13所示。

加密完成以后,自动产生一个加密文件,如图8-14所示。

 

解密过程要在输入文件对话框中输入已经加密的文件,按钮“加密”自动变成“解密”。选择“模n.txt”和密钥,解密过程如图8-15所示。

解密成功以后,查看原文件和解密后的文件,如图8-16所示。
PGP加密技术
PGP(Pretty Good Privacy)加密技术是一个基于RSA公钥加密体系的邮件加密软件,提出了公共钥匙或不对称文件的加密技术。
PGP简介
PGP加密技术的创始人是美国的Phil Zimmermann。他的创造性把把RSA公钥体系和传统加密体系的结合起来,并且在数字签名和密钥认证管理机制上有巧妙的设计,因此PGP成为目前几乎最流行的公钥加密软件包。

由于RSA算法计算量极大,在速度上不适合加密大量数据,所以PGP实际上用来加密的不是RSA本身,而是采用传统加密算法IDEA,IDEA加解密的速度比RSA快得多。PGP随机生成一个密钥,用IDEA算法对明文加密,然后用RSA算法对密钥加密。收件人同样是用RSA解出随机密钥,再用IEDA解出原文。这样的链式加密既有RSA算法的保密性(Privacy)和认证性(Authentication),又保持了IDEA算法速度快的优势。
PGP加密软件
PGP加密软件最新版本是8.0.2,使用PGP8.0.2i可以简洁而高效地实现邮件或者文件的加密、数字签名。
PGP8.0.2的安装界面如图8-17所示。

下面的几步全面采用默认的安装设置,因为是第一次安装,所以在用户类型对话框中选择“No, I am a New User”,如图8-18所示。

根据需要选择安装的组件,一般根据默认选项就可以了:“PGPdisk Volume Security”的功能是提供磁盘文件系统的安全性;“PGPmail for Microsoft Outlook/Outlook Express”提供邮件的加密功能。如图8-19所示。
案例8-3 使用PGP产生密钥
因为在用户类型对话框中选择了“新用户”,在计算机启动以后,自动提示建立PGP密钥,如图8-20所示。

点击按钮“下一步”,在用户信息对话框中输入相应的姓名和电子邮件地址,如图8-21所示。

在PGP密码输入框中输入8位以上的密码并确认,如图8-22所示。

然后PGP会自动产生PGP密钥,生成的密钥如图8-23所示。
案例8-4 使用PGP加密文件
使用PGP可以加密本地文件,右击要加密的文件,选择PGP菜单项的菜单“Encrypt”,如图8-24所示。

系统自动出现对话框,让用户选择要使用的加密密钥,选中一个密钥,点击按钮“OK”,如图8-25所示。

目标文件被加密了,在当前目录下自动产生一个新的文件,如图8-26所示。

打开加密后的文件时,程序自动要求输入密码,输入建立该密钥时的密码。如图8-27所示。
案例8-5 使用PGP加密邮件
PGP的主要功能是加密邮件,安装完毕后,PGP自动和Outlook或者Outlook Express关联。和Outlook Express关联如图8-28所示。

利用Outlook建立邮件,可以选择利用PGP进行加密和签名,如图8-29所示。
9.5 数字信封和数字签名
数字签名(Digital Signature)是指用户用自己的私钥对原始数据的哈希摘要进行加密所得的数据。信息接收者使用信息发送者的公钥对附在原始信息后的数字签名进行解密后获得哈希摘要,并通过与自己用收到的原始数据产生的哈希哈希摘要对照,便可确信原始信息是否被篡改。这样就保证了消息来源的真实性和数据传输的完整性。
9.5.1 数字签名的原理
在文件上手写签名长期以来被用作作者身份的证明,或表明签名者同意文件的内容。实际上,签名体现了以下5个方面的保证:
1. 签名是可信的。签名使文件的接收者相信签名者是慎重地在文件上签名的。
2. 签名是不可伪造的。签名证明是签字者而不是其他的人在文件上签字。
3. 签名不可重用。签名是文件的一部分,不可能将签名移动到不同的文件上。
4. 签名后的文件是不可变的。在文件签名以后,文件就不能改变。
5. 签名是不可抵赖的。签名和文件是不可分离的,签名者事后不能声称他没有签过这个文件。
基本协议过程为
1. Alice 用她的私钥对文件加密,从而对文件签名。
2. Alice 将签名后的文件传给Bob
3. Bob 用Alice 的公钥解密文件,从而验证签名。
单向散列函数和数字签名算法是事先协商好的,过程为
1. Alice 产生文件的单向散列值。
2. Alice 用她的私人密钥对散列加密,以此表示对文件的签名。
3. Alice 将文件和散列签名送给Bob
4. Bob 用Alice 发送的文件产生文件的单向散列值,同时用Alice 的公钥对签名的散列解密。如果签名的散列值与自己产生的散列值匹配,签名是有效的。
9.5.2 数字签名的应用例子
现在Alice 向Bob 传送数字信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对要传送的信息进行数字加密和数字签名,其传送过程为:
1. Alice 准备好要传送的数字信息(明文)。
2. Alice 对数字信息进行哈希运算,得到一个信息摘要。
3. Alice 用自己的私钥对信息摘要进行加密得到Alice 的数字签名,并将其附在数字信息上。
4. Alice 随机产生一个加密密钥,并用此密钥对要发送的信息进行加密,形成密文。
5. Alice 用Bob 的公钥对刚才随机产生的加密密钥进行加密,将加密后的DES 密钥连同密文一起传送给Bob
6. Bob 收到Alice 传送过来的密文和加过密的DES 密钥,先用自己的私钥对加密的DES 密钥进行解密,得到DES 密钥。
7. Bob 然后用DES 密钥对收到的密文进行解密,得到明文的数字信息,然后将DES 密钥抛弃(即DES 密钥作废)。
8. Bob 用Alice 的公钥对Alice 的数字签名进行解密,得到信息摘要。
9 Bob 用相同的hash 算法对收到的明文再进行一次hash 运算,得到一个新的信息摘要。
10. Bob 将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。
9.6 数字水印
数字水印(Digital Watermark)技术,是指在数字化的数据内容中嵌入不明显的记号。被嵌入的记号通常是不可见或不可察的,但是通过计算操作可以检测或者被提取。水印与源数据紧密结合并隐藏其中,成为源数据不可分离的一部分,并可以经历一些不破坏源数据使用价值或商用价值的操作而存活下来。根据信息隐藏的目的和技术要求,数字水印应具有3个基本特性:
1. 隐藏性(透明性)。水印信息和源数据集成在一起,不改变源数据的存储空间; 嵌入水印后,源数据必须没有明显的降质现象; 水印信息无法为人看见或听见,只能看见或听见源数据;
2. 鲁棒性(免疫性、强壮性)。鲁棒性是指嵌入水印后的数据经过各种处理操作和攻击操作以后,不导致其中的水印信息丢失或被破坏的能力。 处理操作包括:模糊、几何变形、放缩、压缩、格式变换、剪切、D/A和A/D转换等 攻击操作包括:有损压缩、多拷贝联合攻击、剪切攻击、解释攻击等等。
3. 安全性。指水印信息隐藏的位置及内容不为人所知,这需要采用隐蔽的算法,以及对水印进行预处理(如加密)等措施。
9.6.1 数字水印产生背景
多媒体通信业务和Internet——“数字化、网络化”的迅猛发展给信息的广泛传播提供了前所未有的便利,各种形式的多媒体作品包括视频、音频、动画、图像等等纷纷以网络形式发布,但副作用也十分明显:任何人都可以通过网络轻易的取得他人的原始作品,尤其是数字化图像、音乐、电影等等,甚至不经作者的同意而任意复制、修改,从而侵害了创作者的著作权。从目前的数字水印系统的发展来看,基本上可以分为以下几类:
1. 所有权确认
2. 来源确定
3. 完整性确认
4. 隐式注释
5. 使用控制
9.6.2 数字水印的嵌入方法
所有嵌入数字水印的方法都包含一些基本的构造模块,即一个数字水印嵌入系统和一个数字水印提取系统。
数字水印检测过程
9.7 公钥基础设施PKI
为解决这些Internet 的安全问题,世界各国对其进行了多年的研究,初步形成了一套完整的Internet 安全解决方案,即目前被广泛采用的PKI 技术(Public Key Infrastructure,公钥基础设施),PKI技术采用证书管理公钥,通过第三方的可信任机构认证中心CA(Certificate Authority),把用户的公钥和用户的其他标识信息(如名称、e-mail、身份证号等)捆绑在一起,在Internet 网上验证用户的身份。目前,通用的办法是采用基于PKI结构结合数字证书,通过把要传输的数字信息进行加密,保证信息传输的保密性、完整性,签名保证身份的真实性和抗抵赖。
9.7.1 PKI的组成
PKI公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。一个机构通过采用PKI 框架管理密钥和证书可以建立一个安全的网络环境。一个典型、完整、有效的PKI 应用系统至少应具有五个部分;
1) 认证中心CA。CA 是PKI 的核心,CA 负责管理PKI 结构下的所有用户(包括各种应用程序)的证书,把用户的公钥和用户的其他信息捆绑在一起,在网上验证用户的身份,CA 还要负责用户证书的黑名单登记和黑名单发布。
2) X.500 目录服务器。用于发布用户的证书和黑名单信息,用户可通过标准的LDAP 协议查询自己或其他人的证书和下载黑名单信息。
3) 具有高强度密码算法(Secure Socket Layer ,SSL)的安全Web服务器。SSL协议最初由Netscape 企业发展,现已成为网络用来鉴别网站和网页浏览者身份,以及在浏览器使用者及网页服务器之间进行加密通讯的全球化标准。
4) Web(安全通信平台) Web 有Web Client 端和Web Server 端两部分,分别安装在客户端和服务器端,通过具有高强度密码算法的SSL 协议保证客户端和服务器端数据的机密性、完整性、身份验证。
5) 自开发安全应用系统 自开发安全应用系统是指各行业自开发的各种具体应用系统,例如银行、证券的应用系统等。
9.7.2 PKI证书与密钥管理
公钥密码学不仅提供了一种强大的加密机制,而且提供了一种识别和认证其他个体或设备的方式。就像对称密钥密码学一样,密钥管理和分发也是公钥密码面临的问题。除了保密性之外,公钥密码学的一个重要的问题就是公钥的真实性和所有权问题。为此,人们提出了一种很好的解决办法:公钥证书。公钥证书提供了一种系统化的、可扩展的、统一的、容易控制的公钥分发方法。
1. 公钥证书
公钥证书(PKC)是一个防篡改的数据集合,它可以证实一个公钥与某一用户身份之间的绑定。为了提供这种绑定关系,需要一个可信第三方实体来担保用户的身份。该第三方实体称为认证机构,它向用户颁发证书;证书中含有用户名、公钥以及用户的其他身份信息。X.509 v3 证书主要含有下列各域:
版本号 该域用于区分各连续版本的证书,像版本1、版本2 和版本3。版本号域同样允许包括将来可能的版本。
证书序列号 该域含有一个唯一于每一个证书的整数值,它是由认证机构产生的。
签名算法标识符 该域用来说明签发证书所使用的算法以及相关的参数。
签发者 该域用于标识生成和签发该证书的认证机构的唯一名。
有效期(Not Before/After) 该域含有两个日期/时间值:“Not Valid Before”和“Not Valid After”;它们定义了该证书可以被看作有效的时间段,除非该证书被撤销。
拥有者 该域标识本证书拥有者的唯一名(DN),也就是拥有与证书中公钥所对应私钥的主体。此域必须非空,除非在版本3 的扩展项中使用了其他的名字。
拥有者公钥信息 该域含有拥有者的公钥、算法标识符以及算法所使用的任何相关参数。该域必须有且仅有一个条目(非空)。
2. 密钥管理
用户公私钥对产生有两种方式:用户自己产生的密钥对和CA为用户产生的密钥对。用户自己选择产生密钥对的长度和方法,负责私钥的存放;然后向CA提交自己的公钥和身份证明。CA对提交者的身份进行认证,对密钥强度和持有者进行审查。如果审查通过,CA将用户身份信息和公钥捆绑封装并进行签名产生数字证书。
CA为用户产生密钥对过程是:向CA提交请求,CA负责产生密钥对,同时生成公钥证书和私钥证书,公钥证书发布到目录服务器,私钥证书交给用户。CA对公钥证书进行存档,如果用户私钥注明不是用于签名,则CA对用户私钥也进行存档。
9.7.3 PKI的信任模型
实际网络环境中不可能只有一个CA,多个认证机构之间的信任关系必须保证原有的PKI用户不必依赖和信任专一的CA,否则将无法进行扩展、管理和包含。信任模型建立的目的是确保一个认证机构签发的证书能够被另一个认证机构的用户所信任。
常见的信任模型包括4种:严格层次信任模型、分布式信任模型、以用户为中心的信任模型和交叉认证模型。
本章总结
本章介绍了密钥学以及信息加密的方法,介绍了DES算法以及RSA算法。从原理上介绍了数字签名、数字水印以及PKI的原理。需要重点理解的是密码学的基本概念、DES解密技术的优缺点及RSA加密算法的基本原理,掌握使用PGP加密工具进行文件和邮件的加密。
本章习题
一、选择题
1. RSA算法是一种基于___________的公钥体系。
A. 素数不能分解      B. 大数没有质因数的假设
C. 大数不可能质因数分解假设  D. 公钥可以公开的假设
2. 下面哪个属于对称算法___________。
A. 数字签名     B. 序列算法
C. RSA算法     D. 数字水印
3. DES算法的入口参数有3个:Key,Data和Mode。其中Key为___________位,是DES算法的工作密钥。
A. 64      B. 56
B. 8       D. 7
4. PGP加密技术是一个基于___________体系的邮件加密软件。
A. RSA公钥加密    B. DES对称密钥
C. MD5数字签名    D. MD5加密
本章习题
二、填空题
1. 两千多年前,罗马国王就开始使用目前称为“___________”的密码系统。
2. 2004年8月,山东大学信息安全所所长王小云在国际会议上首次宣布了她及她的研究小组对___________、HAVAL-128、___________和RIPEMD等四个著名密码算法的破译结果。
3. 除了提供机密性外,密码学需要提供三方面的功能:鉴别、___________和___________。
4. 数字水印应具有3个基本特性: 隐藏性、___________和安全性
5. 用户公私钥对产生有两种方式:用户自己产生的密钥对和___________。
6. 常见的信任模型包括4种:严格层次信任模型、___________、以用户为中心的信任模型和___________。
本章习题
三、简答题
1. 密码学包含哪些概念?有什么功能?
2. 简述对称加密算法的基本原理。
3. 利用对称加密算法对“1234567”进行加密,并进行解密。(上机完成)
4. 简述公开密钥算法的基本原理。
5. 利用公开密钥算法对“1234567”进行加密,并进行解密。(上机完成)
6. 比较对称加密算法和公开密钥算法,分析它们的异同。
7. 恺撒密码的加密方法是把a变成D,b变成E,c换成F,依次类推,z换成C。这样明文和密文的字母就建立一一对应的关系。加密原理其实就是:对明文加上了一个偏移值29,即“a”对应的ASCII码位97,“D”对应的ASCII码为68,相减得到29。
编写程序1:实现恺撒密码加密单词“julus”。(上机完成)
编写程序2:实现解密,将程序1得到的密文进行解密。(上机完成)
8. 简述PGP加密技术的应用。
9. 使用PGP软件加密文件,并与其他人交换密钥。(上机完成)
10. 简述X.509 v3 证书的结构。

你可能感兴趣的:(备考资料)