【实验目的】
通过对PGP加密系统的使用,掌握各种典型的加密算法在文件、文件夹、邮件的加密、签名及磁盘的加密中的应用,并进一步理解各种加密算法的优缺点。
【实验原理】
PGP系统的基本工作原理。
【实验环境】
两台预装Windows 7/Windows Server 2008/Windows Server 2003操作系统和PGP加密系统的主机,通过网络相连。
软件工具:PGP Desktop 10.1.1加密软件。
【实验内容】
任务1:PGP软件包的安装。
任务2:PGP密钥的生成和管理。
任务3:使用PGP对文件、文件夹进行加密、签名和解密、签名验证。
任务4:使用PGP对邮件进行加密、签名和解密、签名验证。
任务5:使用PGP加密磁盘。
任务6:使用PGP彻底删除资料。
(一)PGP系统的基本工作原理
PGP(Pretty Good Privacy)加密软件是由美国人Phil Zimmermann发布的一个基于RSA公开密钥加密体系和对称加密体系相结合的邮件加密软件包。它不仅可以对邮件加密,还具备对文件/文件夹、虚拟驱动器、整个硬盘、网络硬盘、即时通信等的加密功能和永久粉碎资料等功能。该软件的功能主要有两方面:一方面,PGP可以对所发送的邮件进行加密,以防止非授权用户阅读,保证信息的机密性(Privacy);另一方面,PGP还能对所发送的邮件进行数字签名,从而使接收者确认邮件的发送者,并确信邮件没有被篡改或伪造,也就是信息的认证性(Authentication)。
PGP是目前世界上最流行的加密软件,其源代码是公开的,经受住了成千上万顶尖黑客的破解挑战,事实证明是目前世界上最优秀、最安全的加密软件。PGP功能强大,而且速度快,在企事业单位中有着很广泛的用途,尤其在商务应用上,全球百大企业中80%使用它在内部人员计算机及外部商业伙伴的机密数据往来。
在密钥管理方面,PGP让用户可以安全地和从未见过的人们通信,事先并不需要通过任何保密的渠道来传递密钥。PGP系统采用了审慎的密钥管理,这是一种公开密钥加密和对称加密的混合算法,用于数字签名的邮件文摘算法、加密前压缩等,还有一个良好的人机工程设计。
在PGP系统中,并没有引入新的算法,只是将现有的一些被全世界密码学专家公认安全、可信赖的几种基本密码算法(如IDEA、AES、RSA、DH、SHA等)组合在一起,把公开密钥加密体系的安全性和对称加密体系的高速性结合起来,并且在数字签名和密钥认证管理机制上有巧妙的埤计。下面结合前面所学过的知识,简单地介绍PGP系统的工作原理,如图4-17所示。
图4-17 PGP工作原理示意图
假设用户A要发送一个邮件P给用户B,要用PGP软件加密。首先,除了知道自己的私钥(SKA、SKB)外,发送方和接收方必须获得彼此的公钥PKA、PKB。
在发送方,邮件P通过SHA算法运算生成一个固定长度的邮件摘要(Message Digest),A使用自己的私钥SKA、采用RSA算法对这个邮件摘要进行数字签名,得到邮件摘要密文H。这个密文使接收方可以确认该邮件的来源。邮件P和H拼接在一起产生报文P1。该报文经过ZIP压缩后,得到P1.Z。接着,对报文P1.Z使用对称加密算法AES进行加密。加密的密钥是随机产生的一次性的临时加密密钥,即128位的K,这个密钥在PGP中称为“会话密钥”,是根据一些随机因素(如文件的大小、用户敲键盘的时间间隔)生成的。此外,该密钥K必须通过RSA算法、使用B的公钥PKB进行加密,以确保消息只能被B的相应私钥解密。这种对称加密和公开密钥加密相结合的混合加密体系,共同保证了信息的机密性。加密后的密钥K和加密后的报文P1.Z拼接在一起,用BASE 64进行编码,编码的目的是得出ASCII文本,再通过网络发送给对方。
接收端解密的过程刚好和发送端相反。用户B收到加密的邮件后,首先使用BASE 64解码,并用其RSA算法和自己的私钥SKB解出用于对称加密的密钥K,然后用该密钥恢复出P1.Z。接着,对P1.Z进行解压后还原出P1,在P1中分解出明文P和签名后的邮件摘要,并用A的公钥PKA验证A对邮件摘要的签名。最后,比较该邮件摘要和B自己计算出来的邮件摘要是否一致。如果一致,则可以证明P在传输过程中的完整性。
从上面的分析可以看到,PGP系统实际上是用一个随机生成的“会话密钥”(每次加密不同)、用AES算法对明文进行加密,然后用RSA算法对该密钥加密。这样接收方同样是用RSA算法解密出这个“会话密钥”,再用AES算法解密邮件本身。这样的混合加密就做到了既有公开加密体系的机密性,又有对称加密算法的快捷性。这是PGP系统创意的一个方面。
PGP创意的另一方面体现在密钥管理上。一个成熟的加密体系必然要有一个成熟的密钥管理机制配套。公钥体制的提出就是为了解决对称加密体系的密钥难保密的缺点。网络上的黑客们常用的手段是“监听”,如果密钥是通过网络直接传送的,那么黑客就很容易获得这个密钥。对PGP来说,公钥本来就要公开,不存在防监听的问题。但公钥的发布中仍然存在安全性问题,如公钥被篡改的问题。这可能是公钥密码体系中最大的漏洞,必须确信所拿到的公钥属于公钥的设置者。为了把这个问题表达清楚,可以通过一个例子来说明,然后介绍正确地用PGP弥补这个漏洞的方法。
以与Alice的通信为例,假设想给Alice发一封信,那么必须有Alice的公钥,用户从BBS上下载Alice的公钥,并用其加密信件,用BBS的E-mail功能发给Alice。不幸的是,用户和Alice都不知道,另一个叫Charlie的用户潜入BBS,把他自己用Alice的名字生成的密钥对中的公钥替换了Alice的公钥。那么,用户发信的公钥就不是Alice的,而是Charlie的,一切看来都很正常,因为用户拿到的公钥的用户名是“Alice”。于是Charlie就可以用手中的私钥来解密发给Alice的信,甚至还可以用Alice真正的公钥来转发用户给Alice的信,这样谁都不会起疑心,如果想改动给Alice的信也没有问题。更有甚者,他还可以伪造Alice的签名给其他人发信,因为用户手中的公钥是伪造的,所以会以为真是Alice的来信。
防止这种情况出现的最好办法是避免让任何其他人有机会篡改公钥,例如,直接从Alice手中得到她的公钥,然而当她在千里之外或无法见到时,这是很困难的。PGP发展了一种“公钥介绍机制”来解决这个问题。举例来说:如果用户和Alice有一个共同的朋友David,而David知道他手中的Alice的公钥是正确的,这样David可以用他自己的私钥在Alice的公钥上签名,表示他担保这个公钥属于Alice。当然用户需要用David的公钥来校验他给自己的Alice的公钥,同样David也可以向Alice认证用户的公钥,这样David就成为自己和Alice之间的“介绍人”。这样Alice或David就可以放心地把David签过字的Alice的公钥上载到BBS上,没有人可能去篡改信息而不被用户发现,BBS的管理员也一样。这就是从公共渠道传递公钥的安全手段。
当然,要得到David的公钥时也存在同样的问题,有可能拿到的David的公钥也是假的。这就要求这个捣蛋者参与整个过程,他必须对3个人都很熟悉,还要策划很久。这一般不可能。当然,PGP对这种可能也有预防的建议,那就是到一个大家普遍认同的人或权威机构那里得到公钥。
公钥的安全性问题是PGP安全的核心。另外,与对称加密体系一样,私钥的保密也是决定性的。相对公钥而言,私钥不存在被篡改的问题,但存在泄露的问题。PGP中的私钥是很长的一个数字,用户不可能将其记住,PGP的办法是让用户为随机生成的私钥指定一个口令(Pass Phrase)。只有通过给出口令才能将私钥释放出来使用,用口令加密私钥的保密程度和PGP本身是一样的。因此,私钥的安全性问题实际上首先是对用户口令的保密,最好不要将用户口令写在纸上或者保存到某个文件中。
最后介绍一下PGP中加密前的ZIP压缩处理。PGP内核使用PKZIP算法来压缩加密前的明文。一方面,对电子邮件而言,压缩后加密再经过7位编码后,密文有可能比明文更短,节省了网络传输的时间。另一方面,明文经过压缩,实际上相当于经过一次变换,信息变得更加杂乱无章,对明文攻击的抵御能力更强。PGP中使用的PKZIP算法是一个公认的压缩率和压缩速度都相当好的压缩算法。
(二)PGP软件包的安装
使用PGP加密软件包对文件/文件夹、邮件、虚拟磁盘驱动器、整个硬盘、网络磁盘等进行加密,其加密安全性比常用的WinZIP、Word、ARJ、Excel等软件的加密功能要高很多。PGP软件有服务器版、桌面版、网络版等多个版本,每个版本具有的功能和应用场合有所不同,但基本的功能是一样的。下面以PGP Desktop 10.1.1为例,介绍其安装和使用过程。
PGP Desktop 10.1.1软件包的安装很简单,只要和安装一般软件一样,按照提示逐步单击【Next】按钮完成即可。在安装过程中需要重新启动计算机。
重启后,在如图4-18所示的对话框中,如果是一个新用户,则选中选项;否则,选中选项,表示已经拥有PGP密钥。
图4-18 PGP安装——选择用户类型
(三)PGP密钥的生成和管理
1.密钥对的生成
使用PGP之前,首先需要生成一对密钥。这一对密钥是同时生成的,其中一个是公钥,公开给其他人使用,让他们用这个密钥来加密文件;另一个是私钥,这个密钥由自己保存,是用来解开加密文件的。
PGP Desktop在安装过程中提供了生成密钥对的向导,也可以在PGP Desktop界面中选中菜单【File】→【New PGP Key…】命令生成新的密钥对。具体的操作步骤如下。
(1)PGP要求输入全名和邮件地址。虽然真实的姓名不是必需的,但是输入一个其他人看得懂的名字,会使他们在加密时很快找到想要的密钥,如图4-19所示。
图4-19 密钥生成向导之1
(2)为私钥设定一个口令,要求口令大于8位,并且不能全部为字母。为了方便记忆,可以用一句话作为口令,如“I am thirth years old”等。PGP甚至支持用中文作为口令。边上的【Show Keystrokes】指示是否显示输入的密码,如图4-20所示。
图4-20 密钥生成向导之2
(3)生成密钥对,结果如图4-21所示。
图4-21 密钥生成向导之3
在PGP Desktop界面的【PGP Keys】页面中双击某一密钥,可以弹出密钥属性对话框,在其中可以看到该密钥的ID号、加密算法、Hash算法、密钥长度、信任状态等参数,如图4-22所示,用户可以对其中的一些参数(例如Hash算法、对称加密算法、信任状态等)进行调整。
2.密钥的导出和导入
生成密钥对以后,就可以将自己的公钥导出并分发给其他人。在图4-20所示的界面中,用鼠标右键单击要导出的密钥,在弹出的快捷菜单中选择【Export…】命令,或者选中菜单【File】→【Export】→【Key…】命令,将自己的密钥导出扩展名为“.asc”的文件,如图4-23所示,并将该文件分发给其他人。对方则可以用菜单【File】→【Import…】命令,或者直接将该文件拖人PGP Desktop界面的【PGP Keys】页面中,以导入该密钥。
图4-22 密钥相关参数
图4-23 导出密钥
在图4-23中,如果选中复选项,表示将私钥也一并导出来,如果只需将公钥导出并发送给别人,注意不要选中该复选项。该复选项适用于将自己的PGP密钥导出并转移到另外一台计算机的情况。
3.密钥的管理
导入其他人的公钥后,显示为“无效的”并且是“不可信任”的,如图4-24所示,表示这个新导入的公钥还没有得到用户的认可。
图4-24 导入其他人的公钥
如果用户确信这个公钥是正确的(没有被第三者伪造或篡改),可以通过对其进行签名来使之获得信任关系,方法如下。
(1)用鼠标右键单击新导入的公钥,在弹出的快捷菜单中选择【Sign…】命令,打开如图4-25所示的【PGP Sign Key】对话框。
图4-25 对新导入的公钥进行签名
(2)在【PGP Sign Key】对话框中,选中要签名的公钥,并选中复选项(如果允许导出签名后的公钥的话),然后单击【OK】按钮。
(3)选择签名时使用的私钥,并输入口令,即可对导入的公钥进行签名。此时,在PGP Desktop界面的【PGP Keys】页面中,该公钥变成“有效的”,在【Validity】栏出现一个绿色的图标,如图4-26所示。但从图4-26可以看到,该公钥还是“不可信任”,还需要对其赋予完全信任关系。
图4-26 签名后的公钥状态
(4)用鼠标右键单击该公钥,在弹出的快捷菜单中选择【Key Properties…】命令,打开密钥属性对话框。
(5)在打开的密钥属性对话框中,将表示信任状态改成“Trusted”,如图4-27所示,表示为该公钥赋予完全信任关系。
图4-27 对密钥赋予信任关系
执行上述操作以后,新导入的公钥就变成“有效的”,并且是“可信任”的,在【Trust】栏看到一个实心栏,如图4-28所示。(www.daowen.com)
图4-28 签名并赋予完全信任关系后的公钥
对比图4-24、图4-26和图4-28,可以看到新导入公钥的状态变化。如果不进行上述操作,也就是不对新导入的公钥进行签名并赋予完全信任关系,那么在收到对方签名的邮件时,验证签名后会发现在签名状态中出现Invalid提示,如图4-29所示。
图4-29 没有对其他人的公钥进行签名信任时验证邮件签名的情况
【拓展实验】
自己动手完成下面的拓展实验,理解PGP中的“公钥介绍机制”。实验步骤简单介绍如下。
(1)导入一个朋友a的公钥a.asc,并通过签名确认其有效性。
(2)导入另一个朋友b的公钥b.asc,假设不能通过签名确认该公钥是有效的,那么该公钥的【Validity】栏是灰色的。
(3)如果导入的是通过a签名的b的公钥,注意观察一下,此时该公钥的【Validity】栏是否变成绿色的。如果是,则表示该公钥有效,并且可以赋予完全信任关系。
(四)文件/文件夹的加密和签名
1.加密和签名
使用PGP对文件/文件夹进行加密和签名的过程非常简单。如果对方也安装了PGP,则可以使用密钥对文件/文件夹进行加密并发送给对方。具体步骤如下。
(1)用鼠标右键单击该文件/文件夹,在弹出的快捷菜单中选择【PGP Desktop】→【Secure with key…】命令,弹出如图4-30所示的对话框,在其中选择合作伙伴的公钥,单击【下一步】按钮,可以同时选择多个合作伙伴的公钥进行加密。此时,拥有任何一个公钥所对应的私钥都可以解密这些文件/文件夹。
图4-30 使用PGP对文件/文件夹进行加密
(2)在如图4-31所示的对话框中,可以选择在加密的同时对文件/文件夹进行签名。此时,需要输入自己私钥的口令。如果不需要进行签名,可以在下拉菜单中选择【none】命令。
在加密的同时,PGP对文件进行了ZIP压缩,生成扩展名为“.pgp”的文件。
图4-31 使用PGP对文件/文件夹进行签名
合作伙伴收到加密后的扩展名为“.pgp”的文件后,解密时只需双击该文件,或用鼠标右键单击该文件,并在弹出的快捷菜单中选择【PGP Desktop】→【Decrypt & Verify…】命令,在如图4-32所示的对话框输入启用私钥的口令即可(使用私钥进行解密)。
图4-32 使用PGP解密文件
这里需要补充一下的是,如果你的合作伙伴没有安装PGP,你也可以通过PGP Desktop提供的“Create Self-Decrypting Archive”创建自动解密的可执行文件,此时需要输入加密密码,如图4-33所示。合作伙伴只需要输入加密时使用的密码,就可以解密文件/文件夹了。
图4-33 使用PGP创建自解密文件(SDA)
2.单签名
如果只需要对文件进行签名而不需要加密,可以用鼠标右键单击该文件/文件夹,在弹出的快捷菜单中选择【PGP Desktop】→【Sign as…】命令,并在弹出的如图4-31所示的对话框中输入私钥的口令即可。
合作伙伴通过公钥进行签名验证。如果签名文件在传送过程中被第三方伪造或篡改,则签名验证将不成功,图4-34分别显示了一次成功的签名验证和一次失败的签名验证结果。
图4-34 使用PGP对文件进行签名验证的结果
如果没有合作伙伴对公钥进行签名并赋予完全信任关系,那么验证签名后将会在【Validity】栏显示一个灰色的图标,如图4-35所示,表示该签名无效。
图4-35 没有对其他人的公钥进行签名信任时验证文件签名的情况
在进行上述签名和验证的实验时,需要特别注意的是:将签名后的“.sig”文件传送给合作伙伴的同时,必须将原始文件也传送给他,否则签名验证将无法完成。这是因为PGP在签名时是对原始文件的消息摘要进行签名,这样合作伙伴通过对“.sig”文件进行签名验证,得到的是一个消息摘要,还要和从原始文件(这个原始文件就必须由本人传送给他了)算出的另一个摘要进行比较。如果这两个摘要一样,就证明了文件在传输过程中没有被第三方伪造或篡改。这就保证了文件的完整性。
(五)邮件的加密、签名和解密、验证签名
1.加密和签名
使用PGP对邮件内容(即文本)进行加密、签名的操作原理和对文件/文件夹的加密、签名是一样的,都是选择对方的公钥进行加密,而用自己的私钥进行签名,对方收到后使用自己的私钥进行解密,而使用对方的公钥进行签名验证。
在具体的实验操作上,需要将要加密、签名的邮件内容复制到剪贴板上,然后选择Windows操作系统右下角PGP图标中的【Clipboard】→【Encrypt & Sign…】命令,如图4-36所示。
图4-36 使用PGP对邮件进行加密和签名
在随后出现的对话框中,和上述对文件/文件夹的操作一样,选择对方的公钥进行加密,用自己的私钥进行签名。PGP动作完成后,会将加密和签名的结果自动更新到剪贴板中。
此时回到邮件编辑状态,只需要将剪贴板的内容粘贴过来,就会得到加密和签名后的邮件,如图4-37所示。
图4-37 加密和签名后的邮件
2.解密和验证签名
对方收到加密和签名的邮件后,也同样先将邮件内容复制到剪贴板中,然后选择Windows操作系统右下角PGP图标中的【Clipboard】→【Decrypt & Verify…】命令,完成解密和验证签名。
解密和验证签名完成后,PGP会自动出现【Text Viewer】窗口以显示结果,如图4-38所示。
可以通过按钮将结果复制到剪贴板中,再粘贴到需要的地方。
图4-38 在【Text Viewer】窗口中显示结果
(六)使用PGP加密磁盘
PGP Desktop系统不仅可以对文件/文件夹、邮件进行加密,还可以对磁盘进行加密。PGP Desktop磁盘加密功能包括虚拟磁盘驱动器加密、整个硬盘加密、网络磁盘加密等不同的类型。下面重点介绍虚拟磁盘驱动器的加密功能。
虚拟磁盘驱动器加密是通过硬盘上的一个“.pgd”文件来虚拟一个磁盘驱动器,将需要保密的数据放在该虚拟磁盘驱动器中。这样即使数据硬盘被偷走,对虚拟磁盘驱动器中的文件解密也存在很大的难度,从而保证了数据的机密性。
1.创建并加载加密虚拟磁盘驱动器的步骤如下。
(1)在PGP Desktop界面的【PGP Disk】页面中,选择【New Virtual Disk】功能,启动虚拟磁盘驱动器创建界面,如图4-39所示。
图4-39 在Text Viewer窗口中显示结果
(2)在图4-39中设置虚拟磁盘驱动器的名称、磁盘文件位置、盘符、自动卸载时间、容量、文件系统格式、加密方式、加密公钥等各个参数,并按按钮生成加密虚拟磁盘驱动器。
(3)第一次生成的加密虚拟磁盘驱动器会自动加载。如果选择公钥加密,加载时会要求输入加密私钥的口令。加载后的加密磁盘驱动器如图4-40所示。以后,用户就可以把需要保密的数据放在该磁盘驱动器中,操作方法与对普通磁盘驱动器的操作是一样的。
2.卸载加密虚拟磁盘驱动器
如果暂时不需要对加密虚拟磁盘驱动器中的数据进行操作,建议对加密磁盘驱动器进行卸载操作。可以通过用鼠标右键单击加密磁盘驱动器,在弹出的'决捷菜单中选择【PGP Desktop】→【Unmount Disk】命令来完成,如图4-41所示。默认情况下,如果超过15分钟不对加密磁盘驱动器进行操作,PGP系统将自动对其进行卸载。
图4-40 生成的加密虚拟磁盘驱动器
图4-41 卸载加密虚拟磁盘驱动器
除了虚拟磁盘驱动器加密之外,最新版本的PGP Desktop软件包还提供了整个硬盘加密、网络磁盘加密等磁盘加密功能。
PGP硬盘加密是将所有扇区都乱码化(加密),必须经过另一道验证手续才能还原。如果是整个硬盘加密,在开机时会要求另外输入密码(或插入USB Tocken),如果是外接硬盘或硬盘分区加密,则可使用PGP私钥还原。
网络磁盘加密(PGP Net Share)是一个容易使用的加密工具,加密网络磁盘就如同加密本机磁盘一样,首先选择共享文件夹路径,再选择允许解密这文件夹的使用者公钥,然后选择是否要签名(证明这事是你做的),PGP就将你所选择的文件夹加密,只有被授权的使用者(拥有被选定的公钥对应的私钥者)才能看到里面的内容。
(七)使用PGP彻底删除资料
我们知道,在Windows系统中删除一个文件,并没有把该文件从硬盘上彻底删除,只是在磁盘上该文件对应的区块上做了一个标记而已,文件内容并没有被清除。如果使用Easy Recovery、Final Data、Disk Genius这样的工具是可以将文件还原回来的。从信息安全的角度考虑,这样的删除显然是不彻底、不安全的。
PGP提供了彻底删除资料的功能——PGP Shredder。使用PGP Shredder很方便,只要将要删除的文件/文件夹拖放到桌面的PGP Shredder图标,或是直接在该文件/文件夹上用鼠标右键单击,在弹出的快捷菜单中选择【PGP Desktop】→【PGP Shred...】命令来完成即可,如图4-42所示。
图4-42 使用PGP彻底删除资料
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。