1、网络安全第九讲 Web、电子邮件与安全,本讲内容,9.1 Web结构 9.2 Web安全性 9.3 Web欺骗 9.4 Web安全性威胁与对策 9.5 基于Web信息流的安全方法 9.6 安全电子邮件 意义 9.7 邮件病毒(virus) 9.8 实例:PGP and S/MIME,9.1 Web结构,client/server结构,属于瘦客户类型的 Browser/Server, 客户为浏览器,服务器为Web Server 通常是多层(或三层)结构中的第一层 在Web应用中,Web Server后面常常与数据库打交道 B/S之间的通讯协议:HTTP HTTP位于TCP之上,默认的端口为80
2、客户发出对页面的请求,服务器送回这些页面 动态页面和静态页面 Web页面的表述和交互能力 各种标记、超链接, 交互功能:表单、脚本 交互能力的扩展:Java Applet, ActiveX, ,9.2 Web安全性,协议本身的安全性支持 身份认证:Basic Authentication, Digest Access Authentication 保密性:TLS(Transport Layer Security) 实现上的安全性 服务器端安全性 Web pages的访问控制机制 可用性:防止拒绝服务 抵御各种网络攻击 客户端安全性 个人信息的保护 防止执行恶意代码 Web Proxy Serv
3、er Man-In-The-Middle,9.2.1 Web认证,Basic Authentication RFC 2617 口令直接明文传输 隐患:sniffer、中间代理、假冒的服务器 Digest Access Authentication RFC 2617 Challenge-Response, 不传输口令 重放攻击、中间人攻击 服务器端的口令管理策略 TLS,基于PKI的认证 单向或者双向的身份认证 要求服务器提供证书,客户端证书可选 同时也可以提供保密性服务 一种双向认证模式 单向TLS认证+客户提供名字/口令 Microsoft passport,9.2.2 TLS回顾,9.2.
4、3 Web会话,从TCP到HTTP层缺少直接的会话层支持 Web会话支持 HTTP 1.1增加了Persistent Connections支持,但是不能用于提供Web会话的功能 目前使用的会话技术 Cookie,用cookie作为permit ticket 用url记录会话 用表单中的隐藏元素记录会话 会话安全:劫持一个Web会话 建立会话可能需要验证用户的信息认证 一旦会话被劫持,则Web用户的安全性不复存在 安全性涉及到 客户如何提供会话建立所需要的信息,以及会话标识信息 服务器如何管理会话,9.2.4 Cookie技术,Cookie通常是少量的与状态有关的信息,它是服务器保存在客户端的
5、信息 Cookie的动机 客户在浏览多个页面的时候,提供事务(transaction)的功能,为服务器提供状态管理 比如说,可以针对每个用户实现购物篮 实现授权策略,客户不用为每个页面输入“用户名/口令” 但是,实际上,cookie很容易被滥用 在提供个性化服务的时候,往往要收集一些涉及隐私的信息 每个cookie都有一定的URL范围 客户发送这个范围内的URL请求都要提供这个cookie,Cookie规范,Set-cookie语法,在HTTP应答头中 Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; se
6、cure 例如: Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT Cookie语法,在HTTP请求头中 Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2 . 例如: Cookie: CUSTOMER=WILE_E_COYOTE,利用cookie完成一个transaction,购物篮,购物方法,Cookie被滥用,Cookies中往往会记录一些涉及用户隐私的信息,比如用户的名字,email地址等 如果客户关闭了cookie
7、的功能,则许多网站的功能不能正常工作 Cookie被滥用的一个例子 DoubleClick公司案例 利用cookie来收集个人的喜好 为广告客户提供广告发布服务 个人喜好信息不能被滥用 有些国家规定这些信息不能被 公开,或者被销售等,9.2.5 Web服务器端安全性,服务器发布信息,提供服务 静态信息,各种HTML页面 动态信息,利用脚本或者各种扩展引擎响应客户的请求 安全性 目录安全性 只有指定范围的文件才可以被访问 例如,禁止URL中出现“” Cgi文件的安全性,此目录禁止通过Web读写 检查每一个cgi文件,不要保留有漏洞的cgi文件,特别是系统预装的一些cgi示例文件,这些文件往往为了
8、说明功能,而忽略了安全性的考虑 要求认证:由于协商的原因,要注意安全性最低的认证协议 授权机制:保护好口令的安全存储,以及客户信息的保存 日志:打开系统中对于Web服务的日志功能,以及Web服务的日志记录,针对Web Server的常见攻击,从Web服务中获取信息 Web页面中的注解信息,或者一些扩展特性 返回的应答头有时也会暴露信息 针对Web Server的各种攻击手法 比如说IIS的UNICODE漏洞 有些脚本代码或者cgi程序的漏洞 缓冲区溢出 输入验证攻击 拒绝服务攻击,服务器端的安全防护,有些应用使用SSL/TLS,为Web Service申请一个证书 Web Server往往是网
9、络攻击的入口点 为了提供Web Service,必须要开放端口和一些目录,还要接受各种正常的连接请求 防火墙对Web Server的保护是有限的 为了安全,请 及时打上Web Server软件厂商提供的补丁程序 特别是一些主流的服务软件,比如MS的IIS 控制目录和文件的权限 Web应用开发人员注意 在服务端的运行代码中,对于来自客户端的输入一定要进行验证 防止缓冲区溢出,服务器端的日志记录,在日志记录中,许多信息涉及用户的隐私信息 最重要的是referer,这项很受争议 服务商可以用来跟踪客户的点击行为 许多网站对日志记录进行分析,以便提供个性化的Web服务 有些国家有法律规定:这些日志以及
10、分析结果不能公开,也不允许买卖 有些Web Server实现的版本收集到的信息会更多,甚至包括email地址 你每天收到烦人的垃圾邮件吗?,9.2.6 Web客户端的安全性,客户端安全性涉及到 Cookie的设置,保护用户的隐私 PKI设置,确定哪些是可信任的CA 对可执行代码的限制,包括JavaApplet,ActiveX control 如果你的机器是多个人合用的,则 Web页面的缓存区域,将会留下用户最近访问过的页面 历史记录 口令自动保存和提示 客户浏览器的安全设置真的安全吗 我们有必要了解这些安全性,9.2.7 ActiveX control的安全性,下载ActiveX contro
11、l 通过数字签名来识别control的受信任程度 验证数字签名,PKI中的可信任根CA 安装和注册ActiveX control 已经在调用ActiveX control的代码了 并且,它可以自己声明自己是安全的 操纵注册表 对象的初始化 创建对象,并且对对象进行初始化,ActiveX control是一个永久对象 对象的脚本操作 通过脚本调用对象的方法 -Active Document,9.3 Web欺骗,Web是应用层上提供的服务,直接面向Internet用户,欺骗的根源在于 由于Internet的开放性,任何人都可以建立自己的Web站点 Web站点名字(DNS域名)可以自由注册,按先后顺
12、序 并不是每个用户都清楚Web的运行规则 Web欺骗的动机 商业利益,商业竞争 政治目的 Web欺骗的形式 使用相似的域名 改写URL 劫持Web会话,9.3.1 使用类似的域名,注册一个与目标公司或组织相似的域名,然后建立一个欺骗网站,骗取该公司的用户的信任,以便得到这些用户的信息 例如,针对ABC公司,用来混淆 如果客户提供了敏感信息,那么这种欺骗可能会造成进一步的危害,例如: 用户在假冒的网站上订购了一些商品,然后出示支付信息,假冒的网站把这些信息记录下来(并分配一个cookie),然后提示:现在网站出现故障,请重试一次。当用户重试的时候,假冒网站发现这个用户带有cookie,就把它的请
13、求转到真正的网站上。用这种方法,假冒网站可以收集到用户的敏感信息。 对于从事商业活动的用户,应对这种欺骗提高警惕,9.3.2 改写URL,一个HTTP页面从Web服务器到浏览器的传输过程中,如果其中的内容被修改了的话,则欺骗就会发生,其中最重要的是URL改写 URL改写可以把用户带到不该去的地方,例如: Welcom to Hollywood-Movie site. 有一些更为隐蔽的做法 直接指向一些恶意的代码 把url定向放到script代码中,难以发现 改写页面的做法 入侵Web服务器,修改页面 设置中间http代理 在传输路径上截获页面并改写 在客户端装载后门程序 ,9.3.3 Web会
14、话劫持,HTTP协议不支持会话(无状态),Web会话如何实现? Cookie 用url记录会话 用表单中的隐藏元素记录会话 Web会话劫持的要点在于,如何获得或者猜测出会话ID,9.3.4 防止Web欺骗,使用类似的域名 注意观察URL地址栏的变化 不要信任不可靠的URL信息 改写URL 查看页面的源文本可以发现 使用SSL Web会话劫持 养成显式注销的习惯 使用长的会话ID Web的安全问题很多,我们需要更多的手段来保证Web安全,关于欺骗技术,从这些欺骗技术,我们可以看到 IP协议的脆弱性 应用层上也缺乏有效的安全措施 在网络攻击技术中,欺骗术是比较初级的,技术含量并不高,它是针对Int
15、ernet中各种不完善的机制而发展起来的 非技术性的欺骗 比如,实施社会工程 毕竟网络世界与现实世界是紧密相关的 避免被欺骗最好的办法是教育、教育、再教育 增强每一个Internet用户的安全意识,网络管理人员以及软件开发人员的安全意识更加重要,9.3.5 会话(交易)劫持,在现实环境中,比如对于银行一笔交易 如果营业员检查了顾客的身份证和账户卡 抬起头来,发现不再是刚才的顾客 他会把钱交给外面的顾客吗?,在网络上没有人知道你是一条狗,TCP会话劫持(session hijacking),欺骗和劫持 欺骗是伪装成合法用户,以获得一定的利益 劫持是积极主动地使一个在线的用户下线,或者冒充这个用户
16、发送消息,以便达到自己的目的 动机 Sniffer对于一次性密钥并没有用 认证协议使得口令不在网络上传输 会话劫持分两种 被动劫持,实际上就是藏在后面监听所有的会话流量。常常用来发现密码或者其他敏感信息 主动劫持,找到当前活动的会话,并且把会话接管过来。迫使一方下线,由劫持者取而代之,危害更大,因为攻击者接管了一个合法的会话之后,可以做许多危害性更大的事情,会话劫持示意图,被劫持者A,服务器B,会话劫持的原理,TCP协议 三次握手建立TCP连接(即一个TCP会话) 终止一个会话,正常情况需要4条消息 如何标识一个会话: 状态:源IP:端口+SN 目标IP:端口+SN 从TCP会话的状态入手 要
17、了解每一个方向上的SN(数据序列号) 两个方向上的序列号是相互独立的 TCP数据包,除了第一个SYN包之外,都有一个ack标志,给出了期待对方发送数据的序列号 所以,猜测序列号是成功劫持TCP会话的关键,关于TCP协议的序列号,在每一个ACK包中,有两个序列号 第一个(SEG_SEQ)是当前包中数据第一个字节的序号 第二个(SEG_ACK)是期望收到对方数据包中第一个字节的序号 假设客户(CLT)向服务器(SVR)发起一个连接,我们用以下的表示 SVR_SEQ: 服务器将要发送的下一个字节的序号 SVR_ACK: 服务器将要接收的下一个字节的序号(已经收到的最后一个字节的序号加1) SVR_W
18、IND: 服务器的接收窗口 CLT_SEQ: 客户将要发送的下一个字节的序号 CLT_ACK: 客户将要接收的下一个字节的序号 CLT_WIND: 客户的接收窗口 关系 CLT_ACK = SVR_SEQ = CLT_ACK + CLT_WIND SVR_ACK = CLT_SEQ = SVR_ACK + SVR_WIND 只有满足这样条件的包,对方才会接收 否则,该包被丢掉,并且送回一个ACK包(含有期望的序列号),关于TCP协议的序列号(续),同步状态 SVR_SEQ = CLT_ACK CLT_SEQ = SVR_ACK 不同步状态 SVR_SEQ != CLT_ACK CLT_SEQ
19、!= SVR_ACK 如果TCP连接进入到一种不同步的状态 客户发送一个包 SEG_SEQ = CLT_SEQ SEG_ACK = CLT_ACK 这个包不会被接收,因为CLT_SEQ != SVR_ACK 相反,如果第三方(攻击者)发送一个包 SEG_SEQ = SVR_ACK SEG_ACK = SVR_SEQ 这个包可以被服务器接收 如果攻击者能够伪造两边的包的话,还可以恢复客户和服务器之间的会话,使得回到同步状态,TCP ACK Storm,当一个主机接收到一个不期望的数据包的时候,它会用自己的序列号发送ACK,而这个包本身也是不可被接受的。于是,两边不停地发送ACK包,形成ACK包的
20、循环,是为ACK风暴。 如果有一个ACK包丢掉,则风暴停止 在不同步的情况下,当服务器发送数据给客户 如果攻击者不对这份数据响应ACK的话,这份数据会被重传,因为服务器收不到ACK,并且会形成ACK风暴,最终,连接会被终止 如果攻击者对这份数据作出响应,则只有一个ACK风暴,如何到达不同步的状态(1),在建立连接的时候劫持会话 当攻击者听到握手过程第二步的时候,它给服务器发送一个RST包,然后发送用同样的TCP和端口号构造的一个SYN包,但是序列号与前面的SYN包不同 服务器关闭第一个连接,打开第二个连接,并且送回第二个SYN/ACK给客户,攻击者听到这个包之后,给服务器送出一个ACK包 至此
21、,客户、服务器、攻击者都进入到TCP ESTABLISHED状态,但是攻击者和服务器之间是同步的,而客户和服务器之间是不同步的 注意,攻击者选择的序列号与客户的序列号一定要不同,否则不能成功,如何到达不同步的状态(2),给一方发送空数据 攻击者首先观察会话 然后,给服务器发送一些无关紧要的数据,这些数据会导致服务器的序列号发生变化 攻击者给客户也可以发送数据 这种手段成功的要点在于 可以发送一些无关紧要的数据,并且能够把握发送的时机,不在一个子网中的劫持(欺骗)手法,有时候也称作“Blind spoofing” 攻击者发送一个SYN包 然后猜测服务器的ISN 只要能够猜得到,就可以建立连接 但
22、是攻击者收不到服务器给客户的包 使用源路由技术? 条件: 真正的客户不能发送RST包 攻击者能够猜测服务器每个包的大小,实施会话劫持的一般性过程,发现目标 找到什么样的目标,以及可以有什么样的探查手段,取决于劫持的动机和环境 探查远程机器的ISN(初始序列号)规律 可以用nmap,或者手工发起多个连接 等待或者监听会话 最好在流量高峰期间进行,不容易被发现,而且可以有比较多可供选择的会话 猜测序列号 这是最为关键的一步,如果不在一个子网中,难度将非常大 使被劫持方下线 ACK风暴,拒绝服务 接管会话 如果在同一个子网中,则可以收到响应,否则要猜测服务器的动作,Kill a connection
23、,攻击者发送一个RST包给B,并且假冒A的IP地址 观察A和B之间的数据往来,算出A和B的序列号,在适当的时机插入一个RST包,只要在插入点上,序列号正确,则RST包就会被接受,从而达到目的 攻击者发送一个FIN包给B,并且假冒A的IP地址 同样地,在适当的时机给B发送一个FIN包 这时候,A怎么办?,A,B,攻击者,会话劫持过程详解(1),看到一个A-B包 TCP Packet ID (from_IP.port-to_IP.port): IP_A.PortA-IP_B.PortB SEQ (hex): 5C8223EA ACK (hex): C34A67F6 FLAGS: -AP- Wind
24、ow: 7C00,包长为1,A,攻击者,B,B回应一个包,B-A TCP Packet ID (from_IP.port-to_IP.port): IP_B.PortB-IP_A.PortA SEQ (hex): C34A67F6 ACK (hex): 5C8223EB FLAGS: -AP- Window: 2238,包长为1,A回应一个包,A-B TCP Packet ID (from_IP.port-to_IP.port): IP_A.PortA-IP_B.PortB SEQ (hex): 5C8223EB ACK (hex): C34A67F7 FLAGS: -A- Window: 7
25、C00,包长为0,会话劫持过程详解(2),攻击者模仿A插入一个包给B,假设这个包正常跟在第一个包之后 TCP Packet ID (from_IP.port-to_IP.port): IP_A.PortA-IP_B.PortB SEQ (hex): 5C8223EB ACK (hex): C34A67F6 FLAGS: -AP- Window: 7C00,包长为10(一定的长度),A,攻击者,B,B回应一个包,B-A TCP Packet ID (from_IP.port-to_IP.port): IP_B.PortB-IP_A.PortA SEQ (hex): C34A67F7 ACK (h
26、ex): 5C8223F5 FLAGS: -AP- Window: 2238,包长不定(比如20),此时,A会按照它所理解的SEQ/ACK发送包 TCP Packet ID (from_IP.port-to_IP.port): IP_A.PortA-IP_B.PortB SEQ (hex): 5C8223EB ACK (hex): C34A67F7 FLAGS: -A- Window: 7C00 一阵广播风暴,会话劫持过程详解(3),攻击者已经劫持了会话,它可以与B正常通讯(用A的地址) TCP Packet ID (from_IP.port-to_IP.port): IP_A.PortA-I
27、P_B.PortB SEQ (hex): 5C8223F5 ACK (hex): C34A680B FLAGS: -AP- Window: 7C00,包长不定(比如37),A,攻击者,B,B回应这个包,B-A TCP Packet ID (from_IP.port-to_IP.port): IP_B.PortB-IP_A.PortA SEQ (hex): C34A680B ACK (hex): 5C82241A FLAGS: -AP- Window: 2238,包长不定,关于会话劫持的参考,三篇文章 Simple Active Attack Against TCP, http:/www.ins
28、ecure.org/stf/iphijack.txt A short overview of IP spoofing: PART I, http:/staff.washington.edu/dittrich/papers/IP-spoof-1.txt A short overview of IP spoofing: PART II , http:/staff.washington.edu/dittrich/papers/IP-spoof-2.txt “Hackers Beware”,中文版黑客攻击透析与防范,第五章“会话劫持”,进行会话劫持的工具,前页后两篇文章带了一些源码 Juggernau
29、t 可以进行TCP会话攻击的网络sniffer程序 Hunt 功能与Juggernaut类似 TTY Watcher 免费程序,针对单一主机上的连接 IP Watcher 商用的会话劫持工具,Hunt工具介绍,源码开放的自由软件,可运行在Linux平台上 功能特点 监听当前网络上的会话 重置会话(reset a session) 劫持会话 在劫持之后,使连接继续同步 确定哪些主机在线 四个守护进程 自动reset Arp欺骗包的转发 收集MAC地址 具有搜索功能的sniffer,Hunt主菜单,l/w/r) list/watch/reset connections u) host up tes
30、ts a) arp/simple hijack (avoids ack storm if arp used) s) simple hijack d) daemons rst/arp/sniff/mac o) options x) exit -,用hunt接管会话,用hunt接管并重置会话,Hunt劫持会话时听到的ACK风暴,如何防止会话劫持,部署共享式网络,用交换机代替集线器 TCP会话加密 防火墙配置 限制尽可能少量的外部许可连接的IP地址 检测 ACK包的数量明显增加,9.3.6 Web安全性问题,Web是一个运行于internet和TCP/IP intranet 之上的基本的client
31、/server应用。 Web安全性涉及前面讨论的所有计算机与网络的安全性内容。同时还具有新的挑战。 Web具有双向性,Web server易于遭受来自Internet的攻击。(传统出版系统为单向,包括电子出版系统图文电视、语音应答、传真应答系统) 实现Web浏览、配置管理、内容发布等功能的软件异常复杂。其中隐藏许多潜在的安全隐患。短短的Web发展历史已经说明了这一点。 Web通常是一个公司或机构的发布板,常常和其它计算机联系在一起。一旦Web server被攻破,可能殃及其它。 用户往往是偶然的和未经训练的,对安全风险没有意识,更没有足够的防范工具和知识。,9.4 Web安全性威胁与对策,9.
32、5 基于Web信息流的安全方法,网络层IP 安全性(IPSec) 传输层 SSL / TLS 应用层S/MIME,PGP,SET,Kerberos,IP/IPSec,HTTP,FTP,SMTP,TCP,(a) Network Level,IP,HTTP,FTP,SMTP,TCP,(b) Transport Level,SSL or TLS,(c) Application Level,9.5.1 SSL -Secure Socket Layer,Netscape开发。V3作为RFC发布。后IETF建立一个TLS工作小组,作为Internet Standard。TLS的第一个版本可以看作是SSLv
33、3.1。,SSL体系结构,SSL被设计用来使用TCP提供一个可靠的端到端安全服务。 SSL Record Protocol为更高层提供基本安全服务。特别是HTTP,它提供了Web的client/server交互的传输服务,可以构造在SSL之上。 SSL Handshake Protocol, SSLChange Cipher Spec Protocol, SSL Alert Protocol是SSL的高层协议,用于管理SSL交换。,IP,SSL Change Cipher Spec Protocol,SSL Alert Protocol,HTTP,TCP,SSL Record Protocol
34、,SSL Handshake Protocol,SSL Protocol Stack,P222 图10.4,SSL的两个重要概念,SSL连接(connection) 一个连接是一个提供一种合适类型服务的传输(OSI分层的定义)。 SSL的连接是点对点的关系。 连接是暂时的,每一个连接和一个会话关联。 SSL会话(session) 一个SSL会话是在客户与服务器之间的一个关联。会话由Handshake Protocol创建。会话定义了一组可供多个连接共享的加密安全参数。 会话用以避免为每一个连接提供新的安全参数所需昂贵的谈判代价。,9.5.2 会话状态,会话标识(Session identifi
35、er): 服务器选择的一个任意字节序列,用以标识一个活动的或可激活的会话状态。 实体证书(Peer Certificate): 一个X.509.v3证书。可为空。 压缩方法(Compression method): 加密前进行数据压缩的算法 密码说明(Cipher spec): 指明数据体加密的算法(无,或DES等)以及散列算法(如MD5或SHA-1)用以计算MAC。还包括其它参数,如散列长度。 主密钥(Master secret): 48字节密钥,在client与server之间共享。 标志(Is resumable):一个标志,指明该会话是否能用于产生一个新连接。,9.5.3 连接状态,随
36、机数(Server and client random): server 和 client 为每一个连接所选择的字节序列。 服务器MAC写密钥(Server write MAC secret): 一个密钥,用来对server 送出的数据进行MAC操作。 客户机MAC写密钥(Client write MAC secret): 一个密钥,用来对client送出的数据进行MAC操作。 服务器写密钥(Server write key): 用于server 进行数据加密,client进行数据解密的对称保密密钥; 客户机写密钥(Client wite key):用于client 进行数据加密,server
37、进行数据解密的对称保密密钥; 初始向量(Initialization vectors): 当数据加密采用CBC方式时,每一个密钥保持一个IV。该字段首先由SSL Handshake Protocol,以后保留每次最后的密文数据块作为IV。 序列号(Sequence number): 每一方为每一个连接的数据发送与接收维护单独的顺序号。当一方发送或接收一个改变的cipher spec message时,序号置为0, 最大264-1。,9.5.4 SSL Record Protocol,SSL Record Protocol为SSL连接提供两种服务 保密性。Handshake Protocol定义
38、一个共享的保密密钥用于对SSL有效负载加密。 消息完整性。Handshake Protocol定义一个共享的保密密钥用于形成MAC。,应用数据,分段,小于214,压缩,加MAC,加密,附加SSL记录报头,SSL Record Protocol Operation,MAC 计算过程如下:hash(MAC_write_secret|pad_2|hash(MAC_write_secret|pad_1|seq_num|SSLCompressed.type|SSLCompressed.length|SSLCompressed.fragment) 其中: MAC_write_secret : 共享的保密密
39、钥 hash : 密码散列函数(MD5或SHA-1) pad_1 : 0x36重复48次(MD5);或40次(SHA-1) pad_2 : 0x5C重复48次(MD5);或40次(SHA-1) seq_num : 该消息的序列号 SSLCompressed.type : 压缩算法类型 SSLCompressed.length : 压缩分段的长度 SSLCompressed.fragment : 压缩的分段(无压缩时为明文段),可供选择的加密算法:,Block Cipher,Stream Cipher,IDEA 128 RC-40 40 RC2-40 40 RC4-128 128 DES-40
40、40 DES 56 3DES 168 Fortezza 80,内容类型,主版本号,次版本号,压缩长度,8,8,8,16,被压缩的明文 (可选项),MAC(0,16(MD5),20(SHA-1) bytes),加密的,SSL 的记录格式,(a)更改密码说明协议(Change Cipher Spec Protocol),1,1 byte,一字节值为1,用以将挂起状态转至当前状态,导致当前加密 处理包用于该连接。,(b)警示协议(Alert Protocol),2字节, Level = 1(warning), 2(fatal), SSL将立即关闭本连接,本会话的其它连接可以继续,但不能创建新连接。
41、Alert = 具体警告编码;如:(均为fatal的警告内容)unexpected_messagebad_record_mac,Level,Alert,SSL的有效负载:,(c)握手协议(Handshake Protocol),Type,Length,Content,1 byte,3 bytes,=0 bytes,10 种类型的消息,Message Type Parametershello_request null client_hello version,random,session id,cipher suite,compression method server_hello versio
42、n,random,session id,cipher suite,compression method certificate chain of X.509v3 certificates server_key_exchange parameters,signature certificate_request type,authorities server_done null certificate_verify signature client_key_exchange parameters,signature finished hash value,Fig 14.6 Handshake Pr
43、otocol Action,建立SSL安全机制 IIS的身份认证除了匿名访问、基本验证和Windows NT请求/响应方式外,还有一种安全性更高的认证,就是通过SSL(Security Socket Layer)安全机制使用数字证书。SSL(加密套接字协议层)位于HTTP层和TCP层之间,建立用户与服务器之间的加密通信,确保所传递信息的安全性。SSL是工作在公共密钥和私人密钥基础上的,任何用户都可以获得公共密钥来加密数据,但解密数据必须要通过相应的私人密钥。使用SSL安全机制时,首先客户端与服务器建立连接,服务器把它的数字证书与公共密钥一并发送给客户端,客户端随机生成会话密钥,用从服务器得到的
44、公共密钥对会话密钥进行加密,并把会话密钥在网络上传递给服务器,而会话密钥只有在服务器端用私人密钥才能解密,这样,客户端和服务器端就建立了一个惟一的安全通道 建立了SSL安全机制后,只有SSL允许的客户才能与SSL允许的Web站点进行通信,并且在使用URL资源定位器时,输入https:/ ,而不是http:/,操作办法 以WIN2000服务器版本的来做例子讲解的,我们首先需要在控制面板里的填加删除WINDOWS组件中去安装证书服务,这个服务在默认安装中是没有安装在系统里的,需要安装光盘来安装,然后选择独立根CA的安装类型。然后在下一步中给自己的CA起一个名字来完成安装就可以了,安装完成后,我们就
45、可以启动我们的IIS管理器来申请一个数字证书了,启动INTERNET管理器选择我们需要配置的WEB站点:,选择站点属性里的,目录安全性-安全通信-服务器证书,由于我们是第一次配置,所以选择创建一个新的证书,用默认的站点名称和加密位长设置就可以了,上面的设置都是非常简单的,根据以上的几个设置画面就可以很简单的设置好的,最好选择一个地方把我们刚才生成的一个请求证书保存起来,完成上面的设置后,我们就要把我们刚刚生成的服务器证书提交给我们刚刚在本地安装的证书服务器。在默认情况下证书服务器完成安装后会在本地的IIS里的WEB服务器里面生成几个虚拟的目录 我们打开http:/localhost/CertS
46、rv/default.asp,选择申请证书,在选择申请类型的时候,选择高级申请,选择使用base64的编码方式来提交我们的证书申请。在证书申请的地方把我们刚刚生成的certreq.txt的内容拷备进去,然后选择提交,提交成功以后,会返回一个页面给我们告诉我们证书已经成功提交了,现在是挂起状态就是等待CA中心来颁发这个证书了 接下来启动管理工具里的证书颁发机构,在待定申请中找到我们刚刚的申请条目然后点击鼠标右键选择颁发就好了,颁发成功以后我们在颁发的证书里找到刚才颁发的证书,双击其属性栏目然后在详细信息里选择将证书复制到文件,我们需要把证书导出到一个文件,这里我们把证书导出到c: sql.cer
47、这个文件里,重新回到IIS的WEB管理界面里重新选择证书申请,这个时候出来的界面就是挂起的证书请求了,选择我们导处的sql.cer这个文件,确定一切信息正确以后,就可以点击下一步确定来完成SSL的安装了,默认安装结束后,SSL并没有启动我们需要自己给我们的站点SSL的加密通道,并且确定HTTPS使用的端口是443,第一次通过HTTPS进入站点的时候,会有一个对话框让我们确认是否同意当前证书,这个时候看这个网站的时候所有信息在网上就是以加密的方式来传送的了,任何人都无法再轻易了解其中的内容了,下面是加密前后加密后的两幅IRIS的监听结果 加密前:,加密后:,加密过的SSL会比普通的没有加密的WE
48、B浏览的时候慢一点,主要是因为加密的隧道额外还要占用一点CPU的资源,对于那些没有任何秘密可言的WEB站点没有需要用加密的SSL通道。只要对于那些重要的目录和站点才有这个必要性,9.6 安全电子邮件 意义,协议的先天不安全 绝对隐私 安全需求 发送邮件和接收邮件的安全登录 安全的目录服务 安全的电子邮件:邮件保密性和完整性 内容安全性防止病毒邮件 安全方案 S/MIME PGP,9.7 邮件病毒(virus),介绍两种病毒的机理 Shakiras pictures Nimda 病毒的本质和分类,9.7.1 Shakiras pictures病毒,1.Shakiras pictures邮件的附件
49、,附件(ShakiraPics.jpg.vbs)内容(6K多),2.Shakiras pictures邮件的病毒代码,把wapwvdfgcpw解出来之后,如下(主程序部分),3.Shakiras pictures邮件病毒发作流程,流程如下: 改写注册表键HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunRegistry 利用Outlook给地址簿中所有用户发信 并置上标记:HKCUsoftwareShakiraPicsmailed = 1 利用mirc发送病毒附件 并置上标记:HKCUsoftwareShakiraPicsMirqued = 1 对于当前文件系统中(所有远程目录)所有的vbs文件和vbe文件都替换成自己 循环+递归 提醒用户:“You have been infected by the ShakiraPics Worm”,