您的位置:首页 > 其它

信息安全技术实验三 邮件服务安全实验

2017-03-04 23:45 239 查看

一、实验目的及要求

1、 掌握对称加密和非对称加密原理;

2、 了解电子邮件的传输协议和电子邮件传输的报文格式;

3、 了解Windows平台下MDaemon邮件服务器的安全配置和Linux平台下Sendmail邮件服务器的安全配置;

4、 了解PGP的工作原理和密钥管理方法,能够使用PGP对文件和邮件进行加密和数字签名。

二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)

1、实验设备:微型计算机;2、软件系统:MDaemon邮件服务器(Windows平台)、Sendmail邮件服务器(Linux平台)、GnuPG。

三、实验内容

1、 Windows平台下MDaemon邮件服务器的安装与测试,或Linux平台下Sendmail邮件服务器的安装与测试。

2、 Windows平台下MDaemon邮件服务器的安全设置,或Linux平台下Sendmail邮件服务器的安全设置。

3、 安装GnuPG,生成公私钥对,导出公钥并把公钥通过可信的途径分发给合作者,两位同学一组完成对文件的加密、解密以及签名、验证;

4、 使用GnuPG对邮件进行加密与签名。

四、实验步骤及结果(包含简要的实验步骤流程、结论陈述,可附页)

(一)理论知识

1、PGP的工作原理

Pretty Good Privacy(PGP)是一个提供加密和认证的计算机程序。PGP经常被用于签名、加密和解密电子邮件,以增加电子邮件通信的安全性。商业软件PGP和开源软件GnuPG(GPG)根据OpenPGP(RFC 4880)协议加密和解密数据。它可以提供一种安全的通讯方式,而事先并不需要任何保密的渠道用来传递密匙。它采用了一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。

2、PGP的密钥管理方法

电子邮件通过开放的网络传输,网络上的其他人都可以监听或者截取邮件,来获得邮件的内容,因而邮件的安全问题就比较突出了。保护信息不被第三者获得,这就需要加密技术。还有一个问题就是信息认证,如何让收信人确信邮件没有被第三者篡改,这就需要数字签名技术。RSA公钥体系的特点使它非常适合用来满足上述两个要求:保密性和认证性。

RSA算法是一种基于大数不可能质因数分解假设的公匙体系。简单地说就是找两个很大的质数,一个公开即公钥,另一个不告诉任何人,即私钥。这两个密匙是互补的,就是说用公匙加密的密文可以用私匙解密,反过来也一样。

假设甲要寄信给乙,他们互相知道对方的公匙。甲就用乙的公匙加密邮件寄出,乙收到后就可以用自己的私匙解密出甲的原文。由于没别人知道乙的私匙,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。另一方面由于每个人都知道乙的公匙,他们都可以给乙发信,那么乙就无法确信是不是甲的来信。这时候就需要用数字签名来认证。

在说明数字签名前先要解释一下什么是“邮件文摘”(message digest)。邮件文摘就是对一封邮件用某种算法算出一个最能体现这封邮件特征的数来,一旦邮件有任何改变这个数都会变化,那么这个数加上作者的名字(实际上在作者的密匙里)还有日期等等,就可以作为一个签名了。PGP是用一个128位的二进制数作为“邮件文摘”的,用来产生它的算法叫MD5(message digest 5)。 MD5是一种单向散列算法,它不像CRC校验码,很难找到一份替代的邮件与原件具有同样的MD5特征值。

回到数字签名上来,甲用自己的私匙将上述的128位的特征值加密,附加在邮件后,再用乙的公匙将整个邮件加密。这样这份密文被乙收到以后,乙用自己的私匙将邮件解密,得到甲的原文和签名,乙的PGP也从原文计算出一个128位的特征值来和用甲的公匙解密签名所得到的数比较,如果符合就说明这份邮件确实是甲寄来的。这样两个安全性要求都得到了满足。

PGP还可以用来只签名而不(使用对方公钥)加密整个邮件,这适用于公开发表声明时,声明人为了证实自己的身份,可以用自己的私匙签名。这样就可以让收件人能确认发信人的身份,也可以防止发信人抵赖自己的声明。这一点在商业领域有很大的应用前途,它可以防止发信人抵赖和信件被途中篡改。

3、GnuPG

GnuPG(GNU Privacy Guard或GPG)是一个以GNU通用公共许可证释出的开放源码用于加密或签名的软件,可用来取代PGP。大多数gpg软件仅支持命令行方式,一般人较难掌握。由于gpg软件开放源代码,很难隐藏后门,因此比pgp等商业软件安全。

(二)实验步骤

第一部分,进行第3个实验:安装GnuPG,生成公私钥对,导出公钥并把公钥通过可信的途径分发给合作者,完成对文件的加密、解密以及签名、验证

 实验总的思路:(由于本次实验需要两个不同用户,所以用VMware虚拟机模拟了另一个用户JohnSmith)

1、生成密钥对,并分别导出各自的公钥和私钥。

使用gpg4win-2.3.1软件分别生成DingYonghui和JohnSmith的密钥对。并分别导出各自的公钥和私钥。

2、分发公钥。

DingYonghui用户将自己的公钥分发给JohnSmith(这里通过直接手动分发);同理,JohnSmith将自己的公钥分发给DingYonghui。

3、导入公钥并签名。

DingYonghui用户导入JohnSmith的公钥,要校对指纹,指纹正确,则用自己的私钥对JohnSmith的公钥进行签名;JohnSmith用户导入DingYonghui的公钥,要校对指纹,指纹正确,则用自己的私钥对DingYonghui的公钥进行签名。

4、签名与验证签名

DingYonghui用自己的私钥对要发送消息明文test.txt进行签名,John收到消息后用DingYonghui的公钥钥进行验证签名。

5、加密信息与解密信息

DingYonghui要发送消息给John,则DingYonghui用JohnSmith的公钥对要发送的明文进行加密,JohnSmith收到密文后用自己的私钥进行解密。

6、其它测试:

更改了文件名、或者文件内容,在测试一下是否可以解密。

 具体步骤

1、安装gpg4win-2.3.1软件,安装时选择默认即可(略)

2、生成DingYonghui的个人OpenPGP密钥对。

(1)打开软件,选择“file”—“new certificate”



(2)选择创建一个个人的OpenPGP密钥对



(3)填号用户名和邮箱



(4)点击“Advanced Settings”,选择对应的加密算法、密钥长度和是否添加签名功能。



(5)点击“OK”,输入口令并确认输入的口令



(6)DingYonghui的密钥对成功生成,要注意指纹信息。



3、DingYonghui导出自己的公钥

(1)右击,选择“Export Certificates”,



(2)选择保存路径,命名并保存。





4、DingYonghui导出自己的私钥

(1)右击密钥,选择“Export Secret Keys”,







5、同理,生成JohnSmith的个人OpenPGP密钥对。并导出JohnSmith的公钥和私钥

(1)在VMware虚拟机中安装好gpg4win-2.3.1软件,安装时选择默认即可。

(2)打开软件,基本步骤与上面相同。这里就不再赘述。

(3)密钥对生成成功



(4)导出公钥和私钥



6、DingYonghui和JohnSmith交换公钥





7、DingYonghui在gpg4win软件中导入JohnSmith的公钥

(1)右击,选择“Import Certificates”



(2)导入JohnSmith的公钥成功





8、同理,JohnSmith在gpg4win软件中导入DingYonghui的公钥

9、DingYonghui用自己的私钥给JohnSmith的公钥签名

(1)右击,选择“Certify Certificate”,



(2)根据JohnSmith发过来的指纹和导入的JohnSmith的公钥的指纹进行比较



JohnSmith给的他自己的公钥指纹:



(3)DingYonghui确认指纹无误后,确认,用自己的私钥进行签名。





(4)最后,在已信任的公钥里添加了一条记录:JohnSmith……



10、同理,JohnSmith用自己的私钥给DingYonghui的公钥签名。John经行同样的操作,最后也是在已信任的公钥里添加了一条记录:DingYonghui……



至此,DingYonghui和JohnSmith的密钥对生成、公钥的交换和对公钥的签名已全完成。接下来进行的是文件的签名和验证签名,加密和解密。

1、试验一:DingYonghui用JohnSmith的公钥对明文test.txt进行签名和加密。

(1)准备一份测试文件,如test.txt



(2)选择“file”—“Sign/Encrypt Files”,并选择需要加密的文件。



(3)选好需要加密的文件后,选择需要签名和加密的方式。(本次试验选择了同时进行签名和加密)



(4)选择JohnSmith的公钥进行加密



(5)如果是第一次进行这个操作,则需要DingYonghu输入自己口令,用自己的密钥进行签名。

(6)签名且加密成功。



(7)加密后文件格式



打开为



2、试验二:JohnSmith用DingYonghui公钥对密文test.txt.asc进行验证签名,用自己的密钥进行解密。

(1)将密文发给JohnSmith



(2)右击,选择“file”—“Decrypt/Verify”



(3)选择需要解密的文件

(4)输入John的密钥进行解密。同时,该软件会自动用已签名的DingYonghui的公钥对DingYonghui的签名进行验证。



(5)解密和验证签名成功



(6)打开解密后的文件,获得明文



同理,JohnSmith要给DingYonghui发送信息,可以先用自己的私钥对明文进行签名,再用DingYonghui的公钥对已签名的消息进行加密,最后通过各种方式把密文交给DingYonghui。

DingYonghui收到消息后,先用自己的私钥对该密文进行解密,解密后再用JohnSmith的公钥进行验证签名。最后获得解密后的、且确定没有被修改过得明文。

至此,第3个实验基本完成。

======================================================================================================

第二部分,接下来进行第4个实验:使用GnuPG对邮件进行加密与签名

 实验总的思路:(由于本次实验需要两个不同用户,所以用VMware虚拟机模拟了另一个用户)

1、由于本次实验本人是用QQ邮箱测试,所以需要登录QQ邮箱,开启POP3/SMTP服务。这里本人使用了两个QQ邮箱,一个是121………,是DingYonghui用户,在本机登录;另一个是166………,是JohnSmith用户,在虚拟机上登录。

2、配置邮件客户端软件:我们这里使用的是Microsoft Outlook 2010。

3、DingYonghui给JohnSmith发送一份邮件,对邮件明文进行签名和加密。

4、JohnSmith收到密文邮件后,对其进行解密和验证签名。

 具体步骤

1、登录QQ邮箱web端,开启POP3/SMTP服务。

(1)首先登录121………的邮箱,点击“设置”。



(2)进入设置页面后,点击“帐户”



(3)往下拉,开启POP3/SMTP服务。注意:这时候会生成一个授权,要记下来。因为该授权码是接下来实验中配置邮件客户端时,需要输入的密码。



按照提示操作,会得到一个授权码。要记下来。



(4)至此,QQ邮箱开启POP3/SMTP服务完成。

(5)同理,另一个账号166………也是如此设置。

2、配置邮件客户端软件:在Microsoft Outlook 2010配置121………的帐户

(1)点击“文件”菜单,选择“信息”,点击“添加帐户”,进入新帐户添加向导。



(2)选择“电子邮件帐户”,单击“下一步”。



(3)选择“手动配置服务器设置或其他服务器类型”,单击“下一步”。



(4)选择“Internet电子邮件”,单击“下一步”。



(5)按下图所示填入信息,然后点击“其他设置”。



(6)在“其他设置”-“高级”中,进行以下操作:

① 勾选“此服务器要求加密连接”;

② 将发送服务器的端口号修改成465或587;

③ 将下方的“使用以下加密连接类型”修改为“SSL”连接;

④ 将下方的“xx天后删除服务器上的邮件副本”取消勾选。(非常重要!否则Outlook会自动删除服务器上的邮件。)



然后点击确定返回上一个窗口,单击“下一步”。

(7)至此,已经完成Outlook 2010客户端配置,可以收发QQMail邮件了。

(8)同理,另一个账号166………也是如此设置。

3、DingYonghui给JohnSmith发送一份邮件,对邮件明文进行签名和加密。

(1)点击“开始”菜单,点击“新建电子邮件”,进入邮件弹出窗口。



(2)输入收件人和邮件信息。



(3)点击“GpgOL”,选择“Sign”,对邮件进行签名



(4)选择对应的密钥进行签名。这里选的是DingYonghui的密钥。



(5)输入口令。



(6)我们可以发现,签名后的文件多出了一串字符串。



(7)接下来,我们再进行加密操作。点击“GpgOL”,选择“Encrypt”



(8)选择接收方的公钥,这里选择的是JohnSmith的公钥。



(9)此时可以发现,明文邮件已经全部变成了密文。



(10)点击“发送”,把邮件发送出去。



(11)右下角会出现发送提示。



此时,问题出现了:邮件发不出去。



上面提示“……超时等候发送(SMTP)服务器的响应……”,说明很可能是发送服务器端与邮件客户端的连接处理问题。我一开始以为可能是QQ邮箱的限制,但是后来我有测试了用学校的新的校内邮箱测试,发现仍是同样的问题。后来继续搜索资料,进行理论学习,发现而出现这种问题的原因如下:

①发送文件过大,一般,超过5兆的附件,就几乎是灾难了。一般难以一次成功。(本实验显然不是,因为邮件只是一个短文本)

②接受邮件里面,有大邮件。超过5兆的,也往往会这样提示。(本实验也排除,因为没有附件)

③设置不当,也会如此。可在outlook里面,工具,选项,常规,里面有个时间问题,将时间加长到5分钟。(本实验测试过延长时间,仍然不行)

④网络不畅通,或者网速较慢,也容易出现这个情况。(也排除,本实验的网络环境很好)

⑤首先请检查SMTP 需身份验证有没设置好,如果确认设置好了,那么比较大的可能是由于防毒软件对电子邮件扫描干扰而造成错误。可以将邮件监控这一项关闭或者级别设置为较低。(排除,本实验关掉了防毒软件仍然不行)

4、JohnSmith收到密文邮件后,对其进行解码和验证签名。显然如果JohnSimth收到密文邮件后,只需要用自己的私钥进行解密就可以看到明文的内容,同时还可以用DingYonghui的公钥验证签名,确认这封邮件是否是DingYonghui所发,确认传输过程中有没有经过修改。和实验3的原理相同,步骤相似,这里就不再做赘述。

5、 实验总结(包括心得体会、问题回答及实验改进意见)

答:本次实验,使用GnuPG软件,生成公私钥对,导出公钥并把公钥通过可信的途径分发给合作者,完成对文件的加密、解密以及签名、验证的测试。在这个过程中,更深刻地理解了对称密码和非对称密码的使用,了解了对称密钥的分发和非对称密钥(公钥、私钥)的分发。同时也了解了签名与验证签名的过程。通过公钥加密,私钥解密,通过私钥签名,公钥验证签名,PGP采用了一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩,提供一种安全的通讯方式,而事先并不需要任何保密的渠道用来传递密匙。

同时,也存在一些问题。比如发送(SMTP)服务器的配置不能成功,邮件客户端只能收取邮件而不能发送邮件。而原因仍未找出,还在持续探索中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息