实验五Web与电子邮件安全一、实验目的:了解在Web和电子邮件中实现安全的方法,学会相关软件工具的使用。二、实验要求:使用SSL/TSL协议实现安全的Web访问。使用PGP工具包发送安全电子邮件。三、实验内容:1、在Web中实现安全的方法:随着互联网技术的飞速发展,作为信息系统的核心设备,服务器的安全提升到了一个新的高度。服务器中存储和处理的大量核心业务数据,其安全性愈显重要,传统防病毒系统、防火墙、IDS等设备无法保证服务器系统高度保密和信息完整性要求。多核服务器的安全保障难度再增高,采用新的安全机制来提供Web服务器抵抗黑客和恶意代码攻击尤为重要。Web应用必须有80和443端口,恶意用户正是利用了这两个端口执行各种恶意操作:偷窃、操控、破坏Web应用中重要信息。针对Web网站点的入侵事件不断发生,现有的防火墙、IDS等设备都不能有效防止入侵者篡改网站中的网页、盗取重要信息等攻击,提出了Web服务器安全较完备机制,从核心层保证Web站点中的网页不会被黑客篡改,恶意代码在系统中不会肆意发作。该机制重构了操作系统核心层权限访问控制模型,对操作系统文件、注册表、进程和网络等资源采用白名单规则,并采用多机制相结合的方式提高Web服务器的抗攻击能力。2、在电子邮件中实现安全的方法:近年来,伴随Internet的迅猛发展,电子邮件以其使用方便、快捷等特点已经成为Internet上最普及的应用。但是,由于电子邮件在Internet上未加任何保密措施的情况下,均以不加密的可读文件被传输,这样就存在邮件被人偷窥、篡改、截获、以及身份被人伪造等若干不安全因素,由此限制了电子邮件在重要信息传递与交换领域的应用。以下方法实现的功能:收发邮件、转发邮件、答复邮件等标准邮件客户端功能;为防止邮件被窃听,自动加密邮件;防止邮件被篡改及伪冒、发送方抵赖,自动执行数字签名;为保证私钥高度安全,支持本地产生RSA密钥;地址簿除方便易用,还具有许多特殊的如公钥环管理等功能;支持从文件中导入及自动从邮件中获取公钥或数字证书;支持BIG5与GB2312的内码转换以及UUEncode编码方式;支持多帐户以及口令保护;支持拨号上网以及打印功能。(1)安全电子邮件系统结构图:(2)个人密钥管理:个人密钥管理模块完成产生RSA密钥对、安全地保存私钥、发布公钥、作废公钥的功能。根据用户提供的信息(密钥长度、随机数种子、保护口令以及含用户名的基本信息),采用RSA算法生成模块产生公钥、私钥对。采用MD5和IDEA加密算法对RSA私钥、用户口令以及随机数种子进行加密,实现安全保存。本系统提供两种方式实现公钥的发布。一是基于信任模式下的方式:将公钥发送到文件或者通过E-mail发送;另一种是基于层次结构证书认证机构的认证方式:申请数字证书。作废密钥也提供两种方式:本地删除和申请作废证书。后一种适用于公钥发布选择第二种方式的用户。(3)发送邮件发送邮件模块完成撰写邮件、格式化邮件、SMTP协议的实现功能。撰写邮件由邮件编辑器完成。格式化邮件严格按MIME协议来进行,对普通邮件直接发送,而对安全邮件按照MOSS协议对邮件执行数字签名和加密:采用MD5对格式化后的邮件M生成数字摘要,用RSA私钥采用RSA算法对数字摘要进行数字签名,数子签名与M合成签名后的邮件;然后用随机生成的会话密钥采用IDEA算法对签名后的邮件进行加密,并且用收件人的公钥采用RSA算法对会话密钥加密。SMTP协议的实现程序是基于WindowsSockets来开发的,本文采用CAsyncSocket(非阻塞)来封装WinSockAPI。(4)接收邮件接收邮件实现了POP3协议、解析邮件的功能。解析邮件完成对邮件解密以及对数字签名验证的功能:将接收到的安全邮件依照MOSS协议拆分为两部分,加密的会话密钥部分通过口令验证后取得私钥来恢复会话密钥。另一部分签名邮件通过从公钥环中取出发件人的公钥来验证数字签名,最后提示验证结果。(5)地址簿地址簿模块除完成了普通地址簿管理功能外,主要实现了安全电子邮件系统地址簿的特殊功能:接收公钥、发送公钥、删除公钥,下载最新作废证书列表(CRL)。有三种方式接收公钥:从文件中接收、从电子邮件中获取、下载数字证书。将接收到的公钥信息都存放到地址簿的公钥环文件中,而从地址簿中发送公钥可发送到文件也可以通过电子邮件发送。3、SSL/TSL协议(1)SSL/TSL简介:目前,随着Internet的快速发展,人们在使用互联网的场地越来越多,范围越来越广泛,互联网上的信息安全越来越引起人们的关注。特别是近年来网上银行、电子商务和电子政务的快速发展,如何保证用户的传输信息,特别是交易信息的保密性、完整性已成为迫切需要解决的问题。为此人们研究越来越多的措施来保护用户的信息,所以有了很多的安全协议。SSL和TSL,它们分别是安全套接层(SecureSocketLayer)和传输层安全(TransportSecurityLayer)的缩写,是为网络通信提供安全及数据完整性的一种安全协议TSL与SSL,在传输层对网络连接进行加密。SSL首先由网景公司提出,最初是为了保护Web安全,最终却为提高传输层安全提供了一个通用的解决方案。在SSL获得了广泛应用之后,IETF斟于SSLv3,制定TSL标准。TSLv1与SSLv3几乎完全一致。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSLRecordProtocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSLHandshakeProtocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。(2)SSL工作原理SSL的工作原理:当一个使用者在Web上用Netscape浏览器漫游时,浏览器利用HTTP协议与Web服务器沟通。例如,浏览器发出一个HTTPGET命令给服务器,想下载一个首页的HTML档案,而服务器会将档案的内容传送给浏览器来响应。GET这个命令的文字和HTML档案的文字会通过会话层(Socket)的连接来传送,Socket使两台远程的计算机能利用Internet来通话。通过SSL,资料在传送出去之前就自动被加密了,它会在接收端被解密。对没有解密钥的人来说,其中的资料是无法阅读的。SSL采用TCP作为传输协议提供数据的可靠传送和接收。SSL工作在Socket层上,因此独立于更高层应用,可为更高层协议,如Telnet、FTP和HTTP提供安全业务。SSL提供的安全业务和TCP层一样,采用了公开密钥和私人密钥两种加密体制对Web服务器和客户机(选项)的通信提供保密性、数据完整性和认证。在建立连接过程中采用公开密钥,在会话过程中使用私人密钥。加密的类型和强度则在两端之间建立连接的过程中判断决定。在所有情况下,服务器通过以下方法向客户机证实自身:给出包含公开密钥的、可验证的证明;演示它能对用此公开密钥加密的报文进行解密。为了支持客户机,每个客户机都要拥有一对密钥,这要求在Internet上通过Netscape分配。由于Internet中的服务器数远少于客户机数,因此能否处理签字及密钥管理的业务量是很重要的,并且与客户联系比给商家以同样保证更重要。(3)SSL协议提供的服务a.用户和服务器的合法性认证使得用户和服务器能够确信数据将被发送到正确的客户机和服务器上。客户机和服务器都有各自的识别号,由公开密钥编排。为了验证用户,安全套接层协议要求在握手交换数据中做数字认证,以此来确保用户的合法性。b.加密数据以隐藏被传送的数据安全套接层协议采用的加密技术既有对称密钥,也有公开密钥。具体来说,就是客户机与服务器交换数据之前,先交换SSL初始握手信息。在SSL握手信息中采用了各种加密技术,以保证其机密性和数据的完整性,并且经数字证书鉴别,这样就可以防止非法用户破译。c.维护数据的完整性安全套接层协议采用密码杂凑函数和机密共享的方法,提供完整信息性的服务,来建立客户机与服务器之间的安全通道,使所有经过安全套接层协议处理的业务,在传输过程中都能完整、准确无误地到达目的地。(4)SSL记录层协议SSL记录层协议限定了所有发送和接收数据的打包,它提供了通信、身份认证功能,它是一个面向连接的可靠传输协议,如TCP/IP提供安全保护。在SSL中所有数据被封装在记录中。一个记录由两部分组成:记录头和非零长度的数据。记录头可以是2字节或3字节(当有填充数据时使用)。SSL握手层协议的报文要求必须放在一个SSL记录层的记录里,但应用层协议的报文允许占用多个SSL记录来传送。(5)SSL握手协议a.握手协议工作过程①客户(client)端发送ClientHello信息给服务器(Server)端,Server回答ServerHello。这个过程建立的安全参数包括协议版本、“佳话”标识、加密算法、压缩方法。另外,还交换两个随机数:C1ientHello.Random和ServerHello.Random,用于计算机“会话主密钥”。②Hello消息发送完后,Server端会发送它的证书和密钥交换信息。如果Server端被认证,它就会请求Client端的证书,在验证以后,Server就发送HelloDone消息,以示达成了握手协议,即双方握手接通。③Server请求Client证书时,Client要返回证书或返回没有证书的指示,这种情况用于单向认证,即客户端不装有证书。然后,Client发送密钥交换消息。④服务器Server此时要回答“握手完成”消息(Finished),以示完整的握手消息交换已经全部完成。⑤握手协议完成后,Client端即可与Server端传输应用加密数据,应用数据加密一般是用第②步密钥协商时确定的对称加/解密密钥,如DES、3DE等。目前,商用加密强度为128位,非对称密钥一般为RAS,商用强度为1024位,用于证书的验证。完整的握手协议消息交换过程如下:其中,带*号的命令是可选的,或依据状态而发的消息,而改变加密算法协议(ChangeCipherSpec)并不在实际的握手协议之中,它在第③步与第④步之间,用于Client与Server协商新的加密数据包时而改变原先的加密算法。b.握手协议的作用SSL中的握手协议,将公钥加密技术与对称密钥加密技术的应用有效、巧妙地结合在一起,有机地组成了互联网(或其他网络)上信息安全传输的通道。这种信息安全通道,有其实用价值,比如,利用对称加密技术比公钥加密技术对大容量信息的加/解密速度要快,而公钥技术却提供了更好的身份认证技术。SSL的握手协议可以非常有效地让客户与服务器之间完成身份认证。通过SSL客户端与服务器传送自己的数字证书,互验合法性,特别是验证服务器的合法性,可以有效地防止互联网上虚假网站的网上钓鱼事件;同时,服务器端也可以严格验证客户端的真实身份。其作用如下:①客户端的浏览器向服务器传送客户端SSL协议的版本号、加密算法的种类、产生的随机数,以及其他服务器和客户端之间通信所需要的各种信息。②服务器向客户端传送SSL协议的版本号、加密算法的种类、随机数及其他相关信息,同时,服务器还将向客户端传送自己的证书。③客户利用服务器传过来的信息验证服务器的合法性。服务器的合法性包括:证书是否过期,发行服务器证书的CA是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,则通信将断开;如果合法性验证通过,则将继续进行第④步。④客户端随机产生一个用于后面通信的“对称密码”,然后用服务器的公钥(从步骤②中服务器的证书中获得)对其加密,再将加密后的“预主密码”传给服务器。⑤如果服务器要求客户的身份认证(在握手过程中为可选),用户则可以建立一个随机数,然后对其进行数字签名,将这个含有签名的随机数和客户自己的证书,以及加密过的“预主密码”一起传给服务器。⑥如