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

简介:

可以使用非对称式密钥来完成对电子邮件的保护,其中包括加密与数字签字,而整个基于非对称式密钥加密保护电子邮件的实现依赖于PKI结构中的证书。使用证书来保障电子邮件的安全,需要注意如下事项:

ü如果要确保电子邮件的私密性,就必须要使用邮件接收者的公钥来加密。

ü如果要使数字签字来保证完整性、就必须使用邮件发送者的私钥来加密。

ü无论是邮件的发送者还是接收者必须都信任相互的证书和证书颁发机构。

ü电子邮件程序本身必须支持使用证书来完成签名和机密性保障。


注意:典型支持PKI结构的邮件服务系统有outlookfoxmail


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

演示环境:如下4.1所示


000600158.png

演示工具:微软windows 2003集成的POP3CAoutlook组件。

演示步骤:

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


000642171.png

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

000734532.png

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

000815963.png

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

000854562.png


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

000949226.png

注意:在该步骤中暂时只为用户user1申请并发放证书,因为教师会在后面的演示步骤中刻意的制造故障,来为大家区别数字签名与加密的差异!当大家理解了相关的差异后,再来为用户user2申请证书完成整个演示。


第四步:现在电子邮件用户user1使用证书来完成对邮件内容的数字签字与加密,注意这个演示过程,重点是在于引导提问的思考方向,具体问题和操作过程如下所述:


引导性提问1:如果此时user2任何证书,当用户user1使用证书完成对电子邮件的数字签名,然后将经过user1数字签名的邮件发送给user2,会发生什么样的情况?user2能看到这封被user1数字签名的邮件吗?user2能完全确保该邮件没有被中间的某个“恶棍”篡改吗?

  首先在输写完成一封发送给user2的电子邮件后,选择工具\工具\数字签名,如下图4.9所示。然后填写user2的邮件地址,并将邮件转发。


001115869.png

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

001223452.png

针对提问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所认可。

001310485.png

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

001407680.png

001407373.png

对上述实训的结总:

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公钥加密的邮件内容。

001517412.png


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

001619506.png

引导性提问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才会具备合法的公钥,才能被应用到加密的过程中。

001713923.png

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

001803279.png

引导性提问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的公钥。




001926899.png

001926511.png

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

002044291.png

002044729.png


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

002155628.png

关于整个实训任务的总结:邮件的发送者和接收者如何来确认对方的公钥?

回答:这将由软件系统自动完成,比如:一个用户1收到另一个用户2使用数字签名发来的电子邮件后,用户1将自动获取用户2的公钥。然后用户1也就可以使用用户2的公钥来确保送给用户2邮件内容的机密性,公钥的交换依赖于复杂的数学算法和密钥交换协议。



本文转自 kingsir827 51CTO博客,原文链接:http://blog.51cto.com/7658423/1288840,如需转载请自行联系原作者

相关文章
|
3月前
|
安全 Java 数据安全/隐私保护
Android和iOS应用程序加固方法详解:混淆、加壳、数据加密、动态加载和数字签名实现
Android和iOS应用程序加固方法详解:混淆、加壳、数据加密、动态加载和数字签名实现
66 0
|
12月前
|
传感器 存储 安全
IFIT2022-智能城市环境中的医疗物联网:基于量子同态加密的医疗成像架构
随着医疗互联网的不断壮大,越来越多的数据在医疗互联网中生成,保护医疗数据的隐私性与安全性越来越重要。量子计算作为能够高效破解基于质因数分解的经典密码技术备受瞩目,因此未来一定是以量子技术为安全基础的高性能计算时代。现正处于经典计算到量子计算的过渡阶段,该阶段下如何将经典算法与量子算法进行有机结合进而提高效率与安全性一直是一个开放型的课题。本文基于上述背景,提出了一个基于量子同态加密的安全云框架,该框架将量子计算与同态加密结合从而构建了一个安全且高效的云环境。该系统基于量子特性与同态密码的理论进行设计,它们的具体实现存在困难,希望能为以后研究者们的持续研究做出引导思路的贡献。
144 0
|
安全 测试技术 数据安全/隐私保护
认证、加密及数字签名的区别
认证、加密及数字签名的区别
267 0
|
安全 算法 数据安全/隐私保护
HTTPS加密原理,搞懂什么是对称加密、非对称加密、证书、数字签名
众所周知,http协议是一种未加密的协议,我们未加密的数据,在传输的过程中会经过一个又一个的物理节点,如果被人通过抓包的方式拿到了我们的数据,将会给我们造成无法估量的损失。 为了解决解决这个问题,https应运而生。https通过加密的手段,保障的数据的安全性。那https的怎么加密的呢?这就是我们接下来需要讨论的内容。
HTTPS加密原理,搞懂什么是对称加密、非对称加密、证书、数字签名
|
算法 Java API
RSA加密解密及数字签名Java实现
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
524 0
|
安全 算法 网络安全
【计算机网络】网络安全 : 总结 ( 网络攻击类型 | 网络安全指标 | 数据加密模型 | 对称密钥密码体质 | 公钥密码体质 | 数字签名 | 报文鉴别 | 实体鉴别 | 各层安全 ) ★(一)
【计算机网络】网络安全 : 总结 ( 网络攻击类型 | 网络安全指标 | 数据加密模型 | 对称密钥密码体质 | 公钥密码体质 | 数字签名 | 报文鉴别 | 实体鉴别 | 各层安全 ) ★(一)
177 0
|
安全 网络协议 网络安全
【计算机网络】网络安全 : 总结 ( 网络攻击类型 | 网络安全指标 | 数据加密模型 | 对称密钥密码体质 | 公钥密码体质 | 数字签名 | 报文鉴别 | 实体鉴别 | 各层安全 ) ★(三)
【计算机网络】网络安全 : 总结 ( 网络攻击类型 | 网络安全指标 | 数据加密模型 | 对称密钥密码体质 | 公钥密码体质 | 数字签名 | 报文鉴别 | 实体鉴别 | 各层安全 ) ★(三)
175 0
|
算法 安全 网络安全
【计算机网络】网络安全 : 总结 ( 网络攻击类型 | 网络安全指标 | 数据加密模型 | 对称密钥密码体质 | 公钥密码体质 | 数字签名 | 报文鉴别 | 实体鉴别 | 各层安全 ) ★(二)
【计算机网络】网络安全 : 总结 ( 网络攻击类型 | 网络安全指标 | 数据加密模型 | 对称密钥密码体质 | 公钥密码体质 | 数字签名 | 报文鉴别 | 实体鉴别 | 各层安全 ) ★(二)
174 0
|
算法 网络安全 数据安全/隐私保护
【计算机网络】网络安全 : 公钥密码体质 ( 公钥 - 加密密钥 | 私钥 - 解密密钥 | 与对称密钥体质对比 | 特点 | 数字签名引入 )
【计算机网络】网络安全 : 公钥密码体质 ( 公钥 - 加密密钥 | 私钥 - 解密密钥 | 与对称密钥体质对比 | 特点 | 数字签名引入 )
234 0
|
Java 数据安全/隐私保护 C++
windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。
windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。
190 0
windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。