PGP邮件加密实验
一、实验目的:
1.熟悉非对称加密算法。
2.掌握私钥和公钥再签名和加密中的应用。
3.了解PGP工具的操作
二、实验属性:
数据的完整性和保密性
三、实验仪器设备及器材
仅需计算机、PGP工具
四、实验要求
实验前认真预习公钥,私钥以及数字签名原理,对称加密和非对称加密算法,PGP的原理以及使用方法,在进行实验时,应注意爱护机器,按照试验指导书的要求的内容和步骤完成实验,尤其应注意认真观察试验结果,做好记录;实验完成后应认真撰写实验报告。
五、实验原理
1.非对称加密算法原理
1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。相对于“对称加密算法”这种方法也叫做“非对称加密算法”。 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。非对称加密算法的保密性比较好,它xx了最终用户交换密钥的需要,但加密和解密花费时间长、速度慢,它不适合于对文件加密而只适用于对少量数据进行加密。
2.公钥加密算法介绍
使用公开密钥对文件进行加密传输的实际过程包括四步:
(1)发送方生成一个自己的私有密钥并用接收方的公开密钥对自己的私有密钥进行加密,然后通过网络传输到接收方;
(2)发送方对需要传输的文件用自己的私有密钥进行加密,然后通过网络把加密后的文件传输到接收方;
(3)接收方用自己的公开密钥进行解密后得到发送方的私有密钥;
(4)接受方用发送方的私有密钥对文件进行解密得到文件的明文形式。
因为只有接收方才拥有自己的公开密钥,所以即使其他人得到了经过加密的发送方的私有密钥,也因为无法进行解密而保证了私有密钥的安全性,从而也保证了传输文件的安全性。实际上,上述在文件传输过程中实现了两个加密解密过程:文件本身的加密和解密与私有密钥的加密解密,这分别通过私有密钥和公开密钥来实现。
2.私钥数字签名技术
对文件进行加密只解决了传送信息的保密问题,而防止他人对传输的文件进行破坏,以及如何确定发信人的身份还需要采取其它的手段,这一手段就是数字签名。在电子商务安全保密系统中,数字签名技术有着特别重要的地位,在电子商务安全服务中的源鉴别、完整性服务、不可否认服务中,都要用到数字签名技术。在电子商务中,完善的数字签名应具备签字方不能抵赖、他人不能伪造、在公证人面前能够验证真伪的能力。
实现数字签名有很多方法,目前数字签名采用较多的是公钥加密技术,如基于RSA Date Security公司的PKCS(Public Key Cryptography Standards)、Digital Signature Algorithm、x.509、PGP(Pretty Good Privacy)。1994年美国标准与技术协会公布了数字签名标准而使公钥加密技术广泛应用。公钥加密系统采用的是非对称加密算法。
目前的数字签名是建立在公共密钥体制基础上,它是公用密钥加密技术的另一类应用。它的主要方式是,报文的发送方从报文文本中生成一个128位的散列值(或报文摘要)。发送方用自己的私人密钥对这个散列值进行加密来形成发送方的数字签名。然后,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。报文的接收方首先从接收到的原始报文中计算出128位的散列值(或报文摘要),接着再用发送方的公用密钥来对报文附加的数字签名进行解密。如果两个散列值相同、那么接收方就能确认该数字签名是发送方的。通过数字签名能够实现对原始报文的鉴别。
数字签名与书面文件签名有相同之处,采用数字签名,也能确认以下两点:{dy},信息是由签名者发送的;第二,信息自签发后到收到为止未曾作过任何修改。这样数字签名就可用来防止电子信息因易被修改而有人作伪,或冒用别人名义发送信息。或发出(收到)信件后又加以否认等情况发生。应用广泛的数字签名方法主要有三种,即:RSA签名、DSS签名和Hash签名。这三种算法可单独使用,也可综合在一起使用。数字签名是通过密码算法对数据进行加、解密变换实现的,用DES算去、RSA算法都可实现数字签名。但三种技术或多或少都有缺陷,或者没有成熟的标准。
RSA算法中数字签名技术实际上是通过一个哈希函数来实现的。数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。一个最简单的哈希函数是把文件的二进制码相累加,取{zh1}的若干位。哈希函数对发送数据的双方都是公开的。 DSS数字签名是由美国国家标准化研究院和国家安全局共同开发的。由于它是由美国政府颁布实施的,主要用于与美国政府做生意的公司,其他公司则较少使用,它只是一个签名系统,而且美国政府不提倡使用任何削弱政府窃听能力的加密软件,认为这才符合美国的国家利益。Hash签名是最主要的数字签名方法,也称之为数字摘要法(Digital Digest)或数字指纹法(Digital Finger Print)。它与RSA数字签名是单独的签名不同,该数字签名方法是将数字签名与要发送的信息紧密联系在一起,它更适合于电子商务活动。将一个商务合同的个体内容与签名结合在一起,比合同和签名分开传递,更增加了可信度和安全性。数字摘要(Digital Digest)加密方法亦称安全Hash编码法(SHA:Secure Hash Algorithm)或MD5(MD Standard For Message Digest),由RonRivest所设计。该编码法采用单向Hash函数将需加密的明文“摘要”成一串128bit的密文,这一串密文亦称为数字指纹(Finger Print),它有固定的长度,且不同的明文摘要必定一致。这样这串摘要使可成为验证明文是否是“真身”的“指纹”了。
只有加入数字签名及验证才能真正实现在公开网络上的安全传输。加入数字签名和验证的文件传输过程如下:
(1)发送方首先用哈希函数从原文得到数字签名,然后采用公开密钥体系用发达方的私有密钥对数字签名进行加密,并把加密后的数字签名附加在要发送的原文后面;
(2)发送一方选择一个秘密密钥对文件进行加密,并把加密后的文件通过网络传输到接收方;
(3)发送方用接收方的公开密钥对密秘密钥进行加密,并通过网络把加密后的秘密密钥传输到接收方;
(4)接受方使用自己的私有密钥对密钥信息进行解密,得到秘密密钥的明文;
(5)接收方用秘密密钥对文件进行解密,得到经过加密的数字签名;
(6)接收方用发送方的公开密钥对数字签名进行解密,得到数字签名的明文;
(7)接收方用得到的明文和哈希函数重新计算数字签名,并与解密后的数字签名进行对比。如果两个数字签名是相同的,说明文件在传输过程中没有被破坏。
六、实验步骤
1.首先使用PGP生成创建密钥对及导出公钥和签名
打开开始菜单》程序》PGP,启动PGP。
打开File菜单下的NEW PGP KEY启动新密钥向导对话框,按如下图示生成公钥
2.输入全名和邮件地址实验我们输入的命名是bill,邮件地址是,单击下一步。
3.在要求输入passphrase的对话框中,我们以123testpass作为自己私钥的密码
4.在PGP完成创建密钥对后,单击下一步,完成。
5.打开PGP的主界面,可以看见我们刚才创建的密钥。
6.打开File菜单>Export>Key导出公钥,在Export Key to File对话框中,以默认的文件名bill.asc保存在桌面上:
7.切换到另一台计算机,我们以相同的方式来创建另一对新密钥并且将其导出。我们输入aa作为全名,作为邮件地址,导出的公钥文件名为aaa.asc。步骤和前面的一样。在此省略。
8.接下来我们来对导出的密码进行导入,打开File菜单,选择Import ,在Select File Containing Key对话框中,选择另一台计算机的公钥文件(aaa.asc),然后单击打开按钮(假设我们已经将两台计算机的公钥都通过共享的方式复制了桌面),在弹出的Select key(s)对话框中,选中要导入的公钥文件,然后单击Import,返回到主界面后会看见多了一个密钥,证明刚才的密钥已经导入成功了。如下图:
9.打开Keys菜单,选择Sign,对导入进来的公钥进行签名确认。选中刚才导入的公钥文件(aaa),单击OK按钮。
感谢WY陶老师提供技术资料及专业支持!
下面是本实验最重要的一段信息,请注意:
刚才大家已经先熟悉了加密和密钥的一些基本概念,指导中的步骤需要安装PGPDesktopPro-v9.63这款软件,但需重新启动电脑(注销似乎不行),因此本实验在实验室有保护卡的机器上应采用一个免安装版的MiniPGP软件,大家可以试用一下,该软件功能十分强大,可对任何形式的电子文件,包括文件 ,邮件 ,QQ聊天信息进行加密。
咔咔,没看见这一段的同学请节哀:)
实验步骤:
1 首先使用PGP生成创建密钥对及导出公钥和签名
2 编辑一份文本文件
3 发送方对文本文件进行加密并以附件等方式发送给接收方
4 接收方对邮件进行解密。
问题思考
1 PGPDesktop这款软件的功能和特点 ?
2 试说明如果用此款软件对邮件进行加密 ,怎样达到这一目的 ?