Web 安全
- 主要内容
- 12.1 Web 安全威胁
- Web 安全威胁的分类
- Web 安全威胁与对策
- 12.1.1 对 Web 服务器的安全威胁
- 12.1.2 对 Web 浏览器的安全威胁
- 12.1.3 对通信信道的安全威胁
- 12.2 Web 安全的实现方法
- 基于网络层实现 Web 安全
- 基于传输层实现 Web 安全
- 基于应用层实现 Web 安全
- 12.3 SSL协议
- 12.3.1 SSL概述
- SSL协议栈
- SSL实现的安全服务
- SSL的认证和不可否认性
- 12.3.2 更改密码规格协议
- 12.3.3 警告协议
- 12.3.4 SSL记录协议
- 12.3.5 SSL握手协议
- SSL握手消息及参数
- SSL的握手过程
- 握手协议的 Hello 阶段
- 握手协议的 Key Agreement 阶段
- 握手协议的 Finished 阶段
- 12.3.6 SSL的安全性分析
- SSL协议的安全性隐患:
- master_ secret 生成过程:
- 增强SSL安全性方法
- 12.3.7 TLS协议
主要内容
12.1 Web 安全威胁
12.2 Web 安全的实现方法
12.3 SSL 协议
- 12.3.1 SSL 概述
- 12.3.2 更改密码规格协议
- 12.3.3 警告协议
- 12.3.4 SSL 记录协议
- 12.3.5 SSL 握手协议
- 12.3.6 SSL 的安全性分析
- 12.3.7 TLS 协议
12.1 Web 安全威胁
Internet 对信息保密和系统安全的考虑并不完备:
- Web 服务是动态交互(双向);
- Web 服务使用广泛而且信誉非常重要;
- Web 服务器难以配置,底层软件复杂,隐藏安全漏洞;
- 编写和使用 Web 服务的用户安全意识相对薄弱,相关的脚本程序易出现安全问题。
—— 攻击与破坏事件层出不穷,需要安全 Web 服务。
Web 安全威胁的分类
- 主动攻击:伪装成其他用户、篡改C/S之间信息 或 篡改Web站点信息(难预防但易检测)
- 被动攻击:监听数据流获取信息或进行信息量分析(难检测但易预防)
- 对 Web 服务器的安全威胁
- 对 Web 浏览器的安全威胁
- 对通信信道的安全威胁
Web 安全威胁与对策

12.1.1 对 Web 服务器的安全威胁
Web 服务越强大,包含安全漏洞概率就越高。
HTTP 服务可在不同权限下运行:
- 高权限下提供更大灵活性,允许程序执行所有指令,并不受限制地访问系统高敏感的特权区域;
- 低权限下在所运行程序周围设置逻辑栅栏,只允许它运行部分指令和访问系统中不敏感的数据区。
大多数情况下 HTTP 服务只需运行在低权限下。
12.1.2 对 Web 浏览器的安全威胁
活动内容:静态页面 中嵌入的对用户透明的程序 —— 显示动态图像、下载和播放音乐等。
原来由服务器完成的辅助功能转交给空闲的浏览器。
用户查看这种页面时,它们会自动下载并在浏览器上运行。
破坏浏览器的人将破坏性的活动内容放进看起来无害的页面。
12.1.3 对通信信道的安全威胁
- 监听程序 会威胁通信信道中所传输信息的 机密性
- 伪造、篡改、重放 会威胁所传输信息的 完整性
- 缺乏身份认证 使得冒充他人身份进行 中间人攻击
- 缺乏数字签名机制 使得通信双方能 相互攻击
- 拒绝服务攻击 使得通信信道不能保证 可用性
12.2 Web 安全的实现方法
从网络下载程序并在本机运行,就相当于接受程序开发者的控制——没有一个操作系统能控制一个已经开始执行的程序的权限。
基于网络层实现 Web 安全

IPSec 提供端到端的安全机制,是一个通用解决方案。
各种应用程序不需修改就可享用 IPSec 提供的安全机制,也减少了安全漏洞的产生。
基于传输层实现 Web 安全

SSL 或 TLS 可作为基础协议栈的组成部分,对应用透明;也可直接嵌入到浏览器中使用。
使用 SSL 或 TLS 后,传送的应用层数据会被加密,从而保证通信的安全。
基于应用层实现 Web 安全

特定安全服务为特定应用定制体现,将安全服务直接嵌入在应用程序中。
12.3 SSL协议
12.3.1 SSL概述
- Secure Socket Layer,安全套接层协议,会话层,由 Netscape 推出。
- 主要实现 Web 服务器和浏览器之间的安全通信。
- 在 应用层协议 和 TCP/IP 协议之间提供机密性、完整性、服务器认证及可选的客户机认证的机制。
SSL协议栈
- 介于 HTTP 与 TCP 之间的一个可选层,绝大多数应用层协议可直接建立在 SSL 之上。
- SSL 不是一个单独的协议,而是两层协议。

SSL实现的安全服务
SSL握手协议:用公开加密算法验证服务器身份,并传递客户端产生的对称的会话密钥(先)
SSL记录协议:用会话密钥来加/解密数据(后)
- 机密性:SSL 客户机和服务器之间传送加密数据。
- 完整性:SSL 可避免服务器和客户机之间的信息被破坏。
- 认证性:SSL 握手时要求交换证书,通过验证证书来保证对方身份的合法性。
SSL的认证和不可否认性
- 客户机认证是可选的,否则客户端都得有数字证书并内置相应组件,代价高。
- SSL不能提供不可否认性,Communicator 4.04浏览器引入“表单签名(Form Signing)”功能。
- 它对电子商务中包含购买者的订购信息和付款指令的表单进行数字签名。
12.3.2 更改密码规格协议
Change Cipher Spec Protocol 具有以下特性:
- 位于SSL记录协议之上。
- ContentType=20。
- 协议只包含一条消息(一个值为1的字节)。
把未决状态设置为当前状态,更新当前连接的密钥组,这标志着加密策略的改变。
12.3.3 警告协议
Aler t消息:当握手过程或数据加密等出错或发生异常时,为对等实体传递SSL警告或终止当前连接。
Alert Protocol具有以下特性:
- 位于SSL记录协议之上。
- ContentType=21。
- 协议包含两个字节:警告级别和警告代码。
12.3.4 SSL记录协议
Record Protocol 描述SSL信息交换过程中的记录格式。
所有数据(含SSL握手信息)都被封装在记录中,一个记录由两部分组成:记录头和数据。
SSL记录协议的操作步骤:
- 将数据分段成可操作的数据块
- 对分块数据进行数据压缩
- 计算 MAC 值
- 对压缩数据及MAC值加密
- 加入 SSL 记录头
- 在 TCP 中传输结果单元

SSL记录头:

内容类型(ContentType):用于处理分段的上层协议类型。
协议版本(ProtocolVersion):标明SSL版本号。
压缩长度(Length):原文分段长度或压缩分段长度。
12.3.5 SSL握手协议
Handshake Protocol 的协商结果是 SSL记录协议处理的基础,ContentType 为 22。
协议头有三个部分:
- 消息类型(1B)
- 消息长度(3B)
- 内容(1B):与该消息有关的参数
SSL v3.0 的握手过程用到三种协议:握手协议、更改密码规格协议 和 警告协议。
SSL握手消息及参数

SSL的握手过程

握手协议的 Hello 阶段
—— 协商协议版本、会话ID、密码组、压缩算法、交换随机数等。
(1)Client Hello消息
- 客户端将版本号、随机数、会话ID、支持的密码算法组合和压缩算法发给服务器供其选择。
(2)Server Hello消息
- 该消息做出决定并将决定传回客户端:版本号、会话ID、服务器随机数、选择的密码算法组合和压缩算法。
握手协议的 Key Agreement 阶段
—— 发送服务器证书,并请求客户端证书(可选)。
(3)Certificate 消息
(4)Server Hello Done 消息
- 服务器向客户端表明 Server Hello 结束。
(5)Client Key Exchange 消息
- 客户端用服务器的公钥加密预主密钥发送给服务器,以便双方协商会话密钥。
握手协议的 Finished 阶段
—— 改变密码组,完成握手。
(6)Change Cipher Spec消息
(7)Finished消息
- 客户端收到Finished消息表明服务器已用私钥解开预主密钥,并最终生成了正确的会话密钥。
特殊消息 ClosureAlert:可以结束连接,防止截断攻击。
12.3.6 SSL的安全性分析
SSL协议的安全性隐患:
- 预主密钥 ——> master_secret ——> SSL会话密钥
- 能否保证随机数质量也是SSL的安全隐患。
- 有可能遭受中间人攻击。
- 利用SSL的攻击无法被 IDS 检测和 FW 过滤到。
- Web 服务器使用 SSL 时,吞吐量会显著下降。
- 不能保证 Web 浏览器和服务器自身安全。
master_ secret 生成过程:

增强SSL安全性方法
-
增强 master_secret 的保密性
预主密钥的口令加密方法和硬件加密方法。
-
提高随机数的质量
用硬件随机数发生器产生的随机数作为产生随机数的软件方法 PRNG 的种子,进行高强度的处理。
-
提高证书 CA 的可靠性
在服务器的认证阶段,CA控制所有证书的颁发和有效性判断。
12.3.7 TLS协议
- 编写 Transport Layer Security 的目的是不要再出现新的易混淆的协议,并提供可扩展性和兼容性。
- TLS 在传输层源和目的实体间建立了一条安全通道,提供基于证书的认证、数据完整性和机密性。
- TLS v1和SSL v3差别很小,但两者不能兼容和互操作,TLS协议还不能取代SSL协议。
TLS的目标
- 数据安全:用于在两方之间建立安全连接。
- 互操作性:TLS 一方可在不知道另一方代码时成功交换加密信息。
- 可扩展性:避免重建一种全新的协议;避免重新实现一个全新的安全库。
- 系统效率:使用缓存机制以减少需要建立的连接数,还非常注意减少网络流量。