您的位置:首页 > 其它

演示:在PKI的环境中对电子邮件进行数字签名与加密

2013-09-05 00:25 274 查看
演示:在PKI的环境中对电子邮件进行数字签名与加密该文对应的完整演示录像:http://edu.51cto.com/lecturer/user_id-7648423.html在《密码学与身份鉴别》的课程中
可以使用非对称式密钥来完成对电子邮件的保护,其中包括加密与数字签字,而整个基于非对称式密钥加密保护电子邮件的实现依赖于PKI结构中的证书。使用证书来保障电子邮件的安全,需要注意如下事项:ü如果要确保电子邮件的私密性,就必须要使用邮件接收者的公钥来加密。ü如果要使数字签字来保证完整性、就必须使用邮件发送者的私钥来加密。ü无论是邮件的发送者还是接收者必须都信任相互的证书和证书颁发机构。ü电子邮件程序本身必须支持使用证书来完成签名和机密性保障。

注意:典型支持PKI结构的邮件服务系统有outlook、foxmail等

演示目标:在PKI架构环境中,使用证书来完成对电子邮件的数字签名和加密。
演示环境:如下图4.1所示


演示工具:微软windows 2003集成的POP3、CA、outlook组件。
演示步骤:
第一步:教师引导学生搭建电子邮件服务的环境,其中包括如何使用windows 2003集成的POP3组件来完成邮件服务器的搭建、为邮件交换配置DNS区域和MX记录、配置邮件客户端outlook,最终应该得到如下图4.2所示的邮件服务环境。



第二步架设基于独立环境的CA服务器,关于独立环境中CA服务器的部署,请参看项目三,在项目三中有详细的描述,在这里就不再重复,最终应该得到如下图4.3所示的界面。


第三步:现在电子邮件用户1向CA申请证书一张用于保护电子邮件安全的证书,在这个过程种使用Web页面注册的方式来完成证书申请,所以在部署证书服务器时,必须为证书服务器安装IIS服务。用户通过IE导航到证书服务器的Web注册页面,如下图4.4所示,请选择“电子邮件保护证书”,然后出现如图4.5所示填写证书申请的标识信息,在这个页面中请用户根据实际情况填写,然后提交申请。


 当用户完成证书申请的提交后,来证书服务器上,会得到如图4.6所示的一张被挂起的证书请求,证书服务器的管理员审查该请求后,颁发该证书。



此时,用户user1再次导航到证书服务器的Web页面,如图4.7所示,可以看到一张已经被证书服务器颁发的证书,请点击下载该证书,如果你成功的下载了该证书,可以在本地计算机上通过MMC管控台打开证书组件,打开证书组件中的“个人”选项看到已经获得的证书,如下图4.8所示,证书上显示有该证书的功能和作用,是谁颁发的,颁发给谁的。

注意:在该步骤中暂时只为用户user1申请并发放证书,因为教师会在后面的演示步骤中刻意的制造故障,来为大家区别数字签名与加密的差异!当大家理解了相关的差异后,再来为用户user2申请证书完成整个演示。第四步:现在电子邮件用户user1使用证书来完成对邮件内容的数字签字与加密,注意这个演示过程,重点是在于引导提问的思考方向,具体问题和操作过程如下所述:

引导性提问1:如果此时user2任何证书,当用户user1使用证书完成对电子邮件的数字签名,然后将经过user1数字签名的邮件发送给user2,会发生什么样的情况?user2能看到这封被user1数字签名的邮件吗?user2能完全确保该邮件没有被中间的某个“恶棍”篡改吗?
  首先在输写完成一封发送给user2的电子邮件后,选择工具\工具\数字签名,如下图4.9所示。然后填写user2的邮件地址,并将邮件转发。



现在另一台计算机上使用在user2的电子邮件帐户,进入user2的邮箱中,如下图4.10所示,在user2的邮箱中出现一个安全提示“目前您还未做出决定是否使用该数字标识签发这封邮件”如果您单击查看数字标识,会出现图4.11所示的一张user1的证书,但是该证书没有被信任,如果您再单击打开邮箱会出现如图4.12所示的结果,邮件内容可以被查看,但是在数字签名的标记上有一个红色的叹号,这意味着什么?

针对提问1的分析和回答:
  用户user2在没有任何证书的情况下,是可以读出被user1数字签名的邮件内容的,因为数字签名本身就不具备私密性保障,它是用于完整性保障和防篡改的目的而产生的,所以即便是user2没有任何证书它也可以读出user1数字签名的电子邮件,因为数字签名是邮件的发送者user1使用它的私钥来完成签名的,私钥在user1本地,只有拥有user1的公钥都可以查看被user1私钥进行数字签名的邮件内容,而user1的公钥潜在是公开的,任何人都可以得到,这里的任何当然也包括user2,证据?图4.11不正是user1的证书,回忆项目三关于证书的理论,证书上有什么?当然是user1的公钥(决不会包含user1的私钥),user2是如何得到user1的公钥的?现在user1的公钥没被信任,这意味着什么?很简单,user1的公钥潜在是可以被公开的,所以user1在发送电子邮件时就可以把自己的公钥给user2,这并不违反安全规则,只要私钥是user1自己保管,所以user2可以得到user1的公钥,只是现在user2并不能100%保证user1发给自己的邮件没有被窜改,原因是给user1颁发公钥的CA没有被user2所信任,所以在user1的证书上出现了非信任机构颁发的提示,这就可能造成一个现象:证书颁发机构申明user1是良民,并颁发良民证,但是user2并不相信证书颁发机构的申明。要解决个问题,user2需要在核实证书颁发机构的身份后,下载证书颁发机构CA的证书链,如下图4.13所示,user2去点击安装此CA证书链,完成对证书颁发机构的信任,那么由该CA发放或者认可的公钥也将被user2所认可。


 当完成CA证书链的下载后,user1再发一封经过自己数字签名的电子邮件给user2,此时一切都正常,如下图4.14所示,邮件内容可读取,而且数字签名的标志上再也没有红色的叹号了,如果点击数字签名的标志,会出现如图4.15的对话框,在这个对话框中点击查看证书,出现如图4.16所示的对话框,点击签署证书,可以得到图4.17所示的user1的证书,事实上也就是user1的公钥,而且现在该公钥被信任,可以用该公钥来解读被user1私钥签名的电子邮件。




对上述实训的结总:
User2有没有任何证书的情况下,user1发送经过自己私钥签名的电子邮件给user2,只要user2具备user1的公钥,并且该公钥是被user2信任的,那么user2就可以阅读该邮件,并保证该邮件没有被篡改,而获取user1的公钥是一件非常容易的事情,公钥对任何人都可以公开,可以通过发送电子邮件时发给收件人。

引导性提问2:当完成上述步骤后,user2仍然没有任何证书,现在用户user2是否能使用user1的公钥来完成加密发送给user1的电子邮件?

针对提问2的分析和回答:

现在如图4.17所示,user2在没有任何证书的情况下加密发送给user1的邮子邮件,这个行为是可以被执行的,即便user2没有任何证书,因为user2加密发送给user1的电子邮件,并不需要使用user2的任何公钥或者私钥,user2只会使用user1的公钥来加密电子邮件并发送给user1,然后user1使用自己的私钥来解密电子邮件,而user1的公钥潜在是可以公开的,任何人都可以获得,然而在前面的实训中user1使用自己的私钥完成对电子邮件的数字签字后,它将自己的公钥和执行数字签名的邮件一同发送给user2,所以此时的user2具备usre1的公钥,所以user2可以使用user1的公钥(事实上就是user1的证书)来完成加密,并将邮件发送给user1。只是再使用user1的公钥执行加密后,会出现如下图4.18所示的提示,邮件可以正常发送,但是在“已发送邮件”容器中你不能阅读这封邮件,这是正常的提示,因为你能加密发送给user1的邮件,是因为当前用户user2具备user1的公钥,这与当前用户user2自己是否具备公钥无关,而你无法阅读在“已发送邮件”容器中的邮件内容,那是因为当前用户user2不具备user1的私钥,所以你无法解密使用user1公钥加密的邮件内容。


  现在来到另一台计算机上,使用user1的邮件帐户进入user1的邮箱,查收user2加密后发送给自己的电子邮件,如下图4.18所示,提示有一封加密的电子邮件,事实上当前邮箱用户user1可以解密并读出这封邮件如下图4.19所示,因为user1具备一把与公钥密加时所对应的私钥,而且这把私钥就在自己本地保管,它不可公开,只有当前用户user1具备。

引导性提问3:现在user2仍然没有证书,如果现在user1发送加密的邮件给user2能成功吗?

针对提问3的分析和回答:
此时,在user2没有任何证书的情况下,user1加密发送给user2的电子邮件会失败,如图4.20所示,user1输写了一封发送给user2的电子邮件,并在工具中选择了加密,但是会得到如图4.21所示的提示:user2@jinpei.com的数字标识丢失(证书丢失)加密失败,当然您可以选择不要加密的形式来发送电子邮件。User1加密发送给user2的电子邮件失败的原因是:user2没有任何证书(也就是没有公钥),user1就无法获取user2的公钥,因为使用非对称式密钥来完成加密,发送方必须获得接收方的公钥才能完成加密,此是正是因为user1无法获取user2的公钥而导致的故障。要解决这个故障,用户user2必须向网络中的证书服务器申请一张证书,这样user2才会具备合法的公钥,才能被应用到加密的过程中。

第五步:现在user2向证书服务器去申请一张用于电子邮件保护的证书,这一个过程与第三步user1申请证书的过程相同,只是相关的标识信息不同,所以在这里就不再重复描述,当user2完成证书申请后,应该在MMC的证书管控台中看到如下图4.22所示证书。


引导性提问4:现在用户user2已经成功的获得的证书,user1能够使用user2的公钥加密邮件并发送给user2吗?

针对提问4的分析和回答:
第六步:在user2已经具备证书的情况下,说明user2已经具备了公钥,也就具备了让user1使用user2的公钥来加密邮件的前提条件,但是此时如果user1使用user2的公钥直接加密,还是会失败,为什么呢?因为user2具备公钥了,但是并没有将自己的公钥拿给user1,公钥是潜在可公开的,但是要发送方(user1)获得接收方(user2)的公钥后,才能执行加密。如何让user1获得user2的公钥?两个方案:一、user1可以通过网络将自己的公钥传送给user2,然后user2手动导入user1的公钥,因为公钥本身就可公开所以通过网络传送并不违反安全规则;二、user1使用数字签名一封电子邮件并发送给user2时,user1会随同邮子邮件一起并自己的公钥发送给user2,此时user2可以获得user1的公钥。
  现在user2使用数字签名发送一封邮件给user1如图4.23所示,当完成发送后,在user1所处的计算机上登陆邮箱,可以看到一封由user2数字签名的邮件,如图4.24所示,事实上此时user1已经获得了user2的公钥。





  此时的user1就可以使用user2的公钥来加密发送给user2的邮件了,如下图4.25所示,当完成发送后,在user2的计算机上登陆邮箱,可以看到user1发给它的邮件如下图4.26所示,并提示该邮件由发件人user1加密,user2可以使用自己的私钥解密邮件,并读取邮件的内容。user1使用谁的公钥加密?当然是使用user2的公钥加密,它是如何获得得user2的公钥的?它是通过接收user2发给user1的数字签名的邮件来获得user2的公钥的。






当完成上述的所有配置后,你可以在邮箱中的联系人中找到user1和user2,可以分别看到它们的数字标识如下图4.27和图4.28所示。

关于整个实训任务的总结:邮件的发送者和接收者如何来确认对方的公钥?
回答:这将由软件系统自动完成,比如:一个用户1收到另一个用户2使用数字签名发来的电子邮件后,用户1将自动获取用户2的公钥。然后用户1也就可以使用用户2的公钥来确保送给用户2邮件内容的机密性,公钥的交换依赖于复杂的数学算法和密钥交换协议。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息