1 网络层安全协议
1.1 IPsec 协议族概述
IPsec 就是“IP security”的缩写,是 IP 层的安全通信协议族。
IPsec 协议族中的协议可划分为以下三个部分:
- IP 安全数据报格式的两个协议:鉴别首部 AH(Authentication Header)协议和封装安全有效载荷 ESP(Encapsulation Security Payload)协议。
- 有关加密算法的三个协议
- 互联网密钥交换 IKE(Internet Key Exchange)协议。
AH 协议提供源点鉴别和数据完整性,但不能保密。ESP 协议比 AH 协议复杂得多,它提供源点鉴别、数据完整性和保密。AH 协议的功能都己包含在 ESP 协议中,因此使用 ESP 协议就可以不使用 AH 协议。
IP 安全数据报(或 IPsec 数据报)有以下两种不同的工作方式:
- 运输方式(transport mode):在整个运输层报文段的前后分别添加若干控制信息,再加上 IP 首部,构成 IP 安全数据报。
- 隧道方式(tunnel mode):在原始的 IP 数据报的前后分别添加若干控制信息,再加上新的 IP 首部,构成一个 IP 安全数据报。
IP 安全数据报的 IP 首部是不加密的,数据部分是经过加密的。
目前使用最多的就是隧道方式,因此下面的讨论只限于隧道方式。
1.2 安全关联
在发送 IP 安全数据报之前,在源实体和目的实体之间必须创建一条网络层的逻辑连接,即安全关联 SA(Security Association)。安全关联是从源点到终点的单向连接,它能够提供安全服务。如要进行双向安全通信,则两个方向都需要建立安全关联。
公司总部与分公司之间的安全关联 SA 就是在负责收发 IP 数据报的路由器 R1 和 R2 之间建立的。
1.3 IP 安全数据报的格式
1.4 IPsec 的其他构件
- 安全关联数据库 SAD(Secunty Association Database):放在安全关联 SA
- 安全策略数据库 SPD(Security policy Database):指明什么样的数据报需要进行 IPsec 处理
- 互联网密钥交换 IKE(Internet Key Exchange)协议:为 IP 安全数据报创建安全关联 SA
2 运输层安全协议
现在广泛使用的有两个协议
- 安全套接字层 SSL (Secure Socket Layer)
- 运输层安全 TLS (Transport Layer Security)
TLS 是在 SSL 3.0 基础上进行了标准化设计。
2.1 SSL 层
SSL 作用在端系统应用层的 HTTP 和运输层之间,在 TCP 之上建立起一个安全通道,为通过 TCP 传输的应用层数据提供安全保障。
为简单起见,我们用 SSL 表示 SSL/TLS。
- 在未使用 SSL 时,应用层的应用程序的数据是通过 TCP 套接字与运输层进行交互的
- 使用 SSL 后的情况有些特殊。
- SSL 应该是运输层协议,然而实际上,需要使用安全运输的应用程序(如 HTTP)却把 SSL 驻留在应用层,应用层扩大了。
- 在应用程序下面多了一个 SSL 子层,而在应用程序和 SSL 子层之间,还有一个 SSL 套接字,其作用和以前讲过的 TCP 套接字相似,是应用程序和 SSL 子层的应用编程接口 API。
2.2 SSL 通信
应用层使用 SSL 最多的就是 HTTP,但 SSL 并非仅用于 HTTP,而是可用于任何应用层的协议。
- 在发送方,SSL 从 SSL 套接字接收应用层的数据(如 HTTP 或 IMAP 报文),对数据进行加密,然后把加密的数据送往 TCP 套接字;
- 在接收方,SSL 从 TCP 套接字读取数据,解密后,通过 SSL 套接字把数据交给应用层。
2.3 SSL 安全服务
SSL 提供的安全服务可归纳为以下三种:
- SSL 服务器鉴别:允许用户证实服务器的身份。支持 SSL 的客户端通过验证来自服务器的证书,来鉴别服务器的真实身份并获得服务器的公钥。
- SSL 客户鉴别:SSL 的可选安全服务,允许服务器证实客户的身份。
- 加密的 SSL 会话:对客户和服务器间发送的所有报文进行加密,并检测报文是否被篡改。
2.4 SSL 安全会话建立
- 协商加密算法
- 浏览器 A 向服务器 B 发送浏览器的 SSL 版本号和一些可选的加密算法。
- B 从中选定自己所支持的算法(如 RSA),并告知 A。
- 服务器鉴别
- 服务器 B 向浏览器 A 发送包含其 RSA 公钥的数字证书。
- A 使用该证书的认证机构 CA 公开发布的 RSA 公钥对该证书进行验证。
- 会话密钥计算
- 由浏览器 A 随机产生一个秘密数。
- 用服务器 B 的 RSA 公钥进行加密后发送给 B
- 双方根据协商的算法,用秘密数产生共享的对称会话密钥。
- 安全数据传输
- 双方用会话密钥加密和解密它们之间传送的数据并验证其完整性。
2.5 HTTPS
- HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。
- TCP 的 HTTPS 默认端口是 443,而不是 HTTP 的 80 端口
- 通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。
- 所有传输的内容都经过加密
- 用服务器方的证书进行了非对称加密,传输对称密钥加密方式所需要的 Secret Key,从而保证安全性;
- 获取到 Secret Key 后,再使用对称密钥加密方式进行通信,从而保证效率。
3 应用层安全协议
限于篇幅,仅讨论电子邮件的安全协议 PGP(Pretty Good Privacy)。PGP 并没有使用什么新的概念,它只是把现有的一些加密算法(如 RSA 公钥加密算法或 MD5 报文摘要算法)综合在一起而己。
3.1 发送
- 对明文邮件 X 进行 MD5 运算,得出 MD5 报文摘要 H。用 A 的私钥对 H 进行加密(即数字签名),得出报文鉴别码 MAC,把它拼接在明文 X 后面,得到扩展的邮件(X,MAC)。
- 使用 A 自己生成的一次性密钥对扩展的邮件(X,MAC)进行加密。
- 用 B 的公钥对 A 生成的一次性密钥进行加密。
- 把加了密的一次性密钥和加了密的扩展的邮件发送给 B。
3.2 接收
- 把被加密的一次性密钥和被加密的扩展的报文(X,MAC)分离开。
- 用 B 自己的私钥解出 A 的一次性密钥。
- 用解出的一次性密钥对报文进行解密,然后分离出明文 X 和 MAC。
- 用 A 的公钥对 MAC 进行解密(即签名核实),得出报文摘要 H。这个报文摘要就是 A 原先用明文邮件 X 通过 MD5 运算生成的那个报文摘要。
- 对分离出的明文邮件 X 进行 MD5 报文摘要运算,得出另一个报文摘要 H(X)。把 H(X) 和前面得出的 H 进行比较。
在 PGP 中,发件方和收件方通过认证中心 CA 签发的证书来验证公钥