实验一PGP软件应用【实验背景】PGP(PrettyGoodPrivacy)是主要由美国的PhilipZimmermann创造的用于保护网络上电子邮件和文件传输安全的技术,在学术界和技术界都得到了广泛的应用。
PGP的主要特点是使用单向散列算法对邮件/文件内容进行签名以保证邮件/文件内容完整性,使用公钥和私钥技术保证邮件/文件内容的机密性和不可否认性。
PGP不仅提供程序试用,而且提供程序源码,是一款非常好的密码技术学习和应用软件。
PGP的30天试用版本可以从下载。
(注:由于本实验中只用到PGP加/解密和签名/验证功能,而此功能是PGP最基本的功能,因此任何一个PGP版本都支持此类功能。
本实验仅以PGP.Desktop9.8为例进行介绍。
)【实验目的】通过使用PGP软件加强对公钥密码技术应用的理解和掌握。
【实验条件】(1)PGPDesktop32-982.exe(2)基于Windows的PC机2台,分别为发送者userA和接收者userB使用。
【实验任务】(1)掌握PGP基本原理(2)利用PGP软件对文件进行加密/解密(3)利用PGP软件对文件进行签名/验证【实验内容】1.PGP基本原理如图1.1所示显示了PGP提供数字签名和机密性的操作过程。
如果在实际操作中只需要数字签名服务,则把加密和解密模块取消即可;同样,若只需要机密性服务,则把签名和认证模块取消即可。
图1.1PGP原理1)签名发送方A产生报文M,用单向散列算法(SHA或MD5)生成报文摘要,然后用自己的私钥,采用RSA或DSS数字签名算法对报文摘要进行加密,把计算结果串接在M的前面。
2)压缩默认情况下,PGP在签名之后加密之前对报文进行压缩,用Z表示。
此方法有利于在电子邮件传输和文件存储时节约空间,而且由于压缩过的报文比原始明文冗余更少,密码分析更加困难,因此也加强了加密的强度。
一般在PGP软件中使用Pkzip算法进行压缩。
3)加密发送方生成128比特的用于作为该报文会话密钥的随机数,使用此会话密钥采用CAST-128或IDEA或3DES算法对报文进行加密。
然后,由于会话密钥只被使用一次,因此要把会话密钥和报文绑定在一起传输。
为了保护此会话密钥,需要使用接收者的公开密钥采用RSA算法对会话密钥进行加密,并附加到报文的前面。
4)解密接收方收到发送方发来的报文,用自己的私钥采用RSA算法解密出会话密钥,然后用会话密钥来解密报文。
5)解压缩将解密后的报文进行解压缩操作,得到压缩前的报文。
6)认证对解压缩后的报文进行处理,提取出发送方用自己的私钥加密的报文摘要和明文,对前者用发送方的公钥来解密得到报文摘要,对后者用相同的散列算法生成新的报文摘要。
两个报文摘要相比较,如果两者相匹配,则报文作为已经认证的报文被接受。
2.PGP软件安装(以发送者userA为例,接收者userB安装相同)在网上取得PGPDesktop32-982.exe并执行,出现语言选择界面,选择“English”继续安装。
在【LicenseAgreement】界面选择“Iacceptthelicenseagreement”选项,然后单击“next”继续安装。
在【ReadmeInformation】界面单击“next”继续安装。
在【InstallerInformation】界面单击“Yes”重启系统继续安装。
计算机重新启动后在系统窗口右下角的工具栏里可以看到一个图标,并出现【EnablingPGP】界面,因为是第一次安装所以选择“Yes”,单击“Next”继续安装。
如果没有LicenseKey,则可选择“Requestaone-time30dayEvaluationofPGPDesktop”安装30天评估版的PGP。
选择“Purchasealicensenumbernow”则可立即购买LicenseKey。
选择“Usewithoutalicenseanddisablemostfunctionality”则安装没有License的简化版版本的PGP。
本实验以选择最后一项为例,选择后单击“下一步”继续安装。
在【Licensing】界面中单击“下一步”继续安装。
在【UserType】界面中选择“Iamanewuser”,单击“下一步”继续安装。
在【PGPKeyGenerationAssistant】界面单击“下一步”创建新的PGP密钥。
在【NameandEmailAssignment】界面中输入使用者的名字和Email地址(本实验以创建发送者userA为例),用这个信息来标识使用者的密钥以使通信的另一方能够清楚的识别使用者的公钥。
输入完信息后,单击“下一步”继续安装,出现【Createpassphrase】界面,如图1.2所示。
图1.2创建口令短语在【CreatePassphrase】界面中输入口令短语。
PGP在提取私钥时要求使用者必须输入口令短语才能使用私钥进行解密或签名,这样可以避免別人随便使用使用者的私钥。
注意密码长度至少要八个字符,最好不要是有意义的文字或数字,这样比较不容易被別人猜到。
在文本框中输入口令短语两次后单击“下一步”继续安装。
在【CreatePGPSecurityQuestions】界面中单击“下一步”进入【CreateSecurityQuestion1to5】界面进行安全问题设定,防止遗忘密码的时候可以通过回答安全问题而提取密钥。
本实验选择“Skip”跳过安全问题设定继续安装。
在【KeyGenerationProgress】界面中单击“下一步”继续安装。
在【PGPMessaging:Introduction】界面中取消“Automaticallydecetmyemailaccounts”选项,不启用PGP自动选择邮件帐号功能,单击“下一步”继续安装。
在【Congratulations!】界面单击“完成”结束安装,此时在系统界面右下角的工具栏里可以看到一个图标。
3.交换公钥在数据被处理之前,通信双方必须相互交换自己的公钥。
为了存储密钥,PGP在每个结点提供一对数据结构,一个用来存储该结点拥有的公开/私有密钥对,被称为私有密钥环;另一个用来存储该结点所知道的其他用户的公开密钥,被称为公开密钥环。
图1.3用户密钥信息按照前面PGP安装步骤在另一台机器上安装PGP并生成userB密钥,然后在【PGPDesktop】窗口中用鼠标右击要交换的密钥userB→“Export…”,导出密钥,存成userB.asc的文件,然后把这个文件自由地传送给給userA、或放在拾日方便取得的地方,如利用邮件或文件共享方式进行交换。
userA取得发送方公钥文件以后,双击userB.asc附件,出现【Selectkey(s)】界面,选择密钥userB,然后单击“Import”导入发送方公钥。
如图1.4所示。
图1.4导入对方公钥userB密钥导入后userA的【PGPDesktop-AllKeys】界面如图1.5所示。
图1.5密钥查看同样将userA的密钥导入到userB的密钥环中。
4.加密/解密文件在userA机器上新建一个文本文件a.txt,输入内容并选中,如图1.6所示。
图1.6明文信息单击图标→“CurrentWindows”→“Encrypt”,出现【KeySelectionDialog】界面,双击userB密钥使其出现在“Recipients”对话框,如图1.7所示。
图1.7选择接收方公钥单击“OK”,发现文本内容已被加密,如图2.38所示。
图1.8密文信息将文件保存成fromA.txt,用邮件或文件共享方式发给userB。
userB收到userA发来的加密文件fromA.txt后双击打开,右击图标→“CurrentWindows”→“Decrypt&Verify”,出现【EnterPassphrase】界面,如图1.9所示。
图1.9输入口令短语输入userB的口令短语,单击“OK”,系统会提取userB的私钥对密文进行解密从而恢复出明文。
5.签名/验证生成签名文件如图1.10所示。
明文图1.10签名信息将文件保存成signA.txt,用邮件或文件共享方式发给userB。
userB收到userA发来的签名文件后双击打开,右击图标→“CurrentWindows”→“Decrypt&Verify”,出现验证界面,如图1.11所示。
图1.11验证签名看到签名状态为“GoodSignature”则证明签名有效。
如果userA想发给userB既签名又加密的信息,则需要右击图标→“CurrentWindows”→“Encrypt&Sign”,过程同前。
6.直接对文件进行加密/机密,签名/验证:右击要加密的文件A.txt→“PGPDeskop”→“Secure“B.txt”withKey…”。
在【PGPZipAssistant】界面的下拉菜单中选中要加密的公钥userB,单击“下一步”,生成文件A.txt.pgp,将文件发送给userB,userB双击解密,步骤同前类似。
对文件直接签名与加密类似,选择好签名密钥以后在保存目录下生成一个.sig文件,即是签名文件,然后将原文件与签名文件一起发送给接收方。