SSL 利用数据加密,身份验证和消息完整性验证机制,为基于 TCP 等可靠连接的应用层协议提供安全性保证。本文介绍了 SSL 的产生背景、安全机制、工作过程及典型组网应用。
缩略语 |
英文全名 |
中文解释 |
AES |
Advanced Encryption Standard |
高级加密标准 |
CA |
Certificate Authority |
证书机构 |
DES |
Data Encryption Standard |
数据加密标准 |
HTTPS |
Hypertext Transfer Protocol Secure |
安全超文本传输协议 |
MAC |
Message Authentication Code |
消息验证码 |
MD5 |
Message Digest 5 |
消息摘要算法5 |
PKI |
Public Key Infrastructure |
公钥基础设施 |
RSA |
Rivest Shamir and Adleman |
非对称密钥算法的一种 |
SHA |
Secure Hash Algorithm |
安全散列算法 |
SSL |
Secure Sockets Layer |
安全套接层 |
VPN |
Virtual Private Network |
虚拟专有网络 |
基于万维网的电子商务和网上等新兴应用,极大地方便了人们的日常生活,收到人们的青睐。由于这些应用都需要在网络上进行在线交易,他们对网络通信的安全性提出了更高的要求。
传统的万维网协议 HTTP 不具备安全机制 —— 采用明文的形式传输数据、不能验证通信双方的身份、无法防止传输的数据被篡改等,导致 HTTP 无法满足电子商务和网上银行等应用的安全性要求。
Netspace 公司提出的安全协议 SSL,利用数据加密、身份验证和消息完整性验证机制,为网络上数据的传输提供安全性保证。 SSL 可以为 HTTP 提供安全连接,从而很大程度上改善了万维网的安全性问题。
SSL 具有如下优点:
SSL 协议实现的安全机制包括:
网络上传输的数据被非法用户窃取,SSL采用在通信双方之间建立加密通道的方法保证数据传输的机密性。
所谓加密 通道,是指发送发在发送数据前,使用加密算法和加密密钥对数据进行加密,然后将数据发送给对方;接收方收到数据后,利用解密算法和解密密钥从密文中获取明文。灭有解密密钥的第三方,无法将密文恢复为明文,从而保证数据传输的机密性。
加解密算法分为两类:
与非对称密钥算法相比,对称密钥算法具有速度快的优点,通常用于大量信息进行加密(如对所有报文加密);而非对称密钥算法,一般用于数字签名和对较少的信息进行加密。
SSL 加密通道上的数据加解密使用对称密钥算法,目前主要支持的算法有 DES、3DES、AES等,这些算法都可以有效地防止交互数据被窃听。
对称密钥算法要求解密密钥和加密密钥完全一致。因此,利用对称密钥算法加密传输数据之前,需要在通信两端部署相同的密钥。对称密钥的部署方法请参见后面,“利用非对称密钥算法保证密钥本身的安全”。
电子商务和网上银行等应用中必须保证要登录的 Web 服务器是真实的,以免重要的信息被非法的窃取。SSL 利用数据签名来验证通信对端的身份。
非对称密钥算法可以用来实现数字签名。由于通过私钥加密后的数据只能利用对应的公钥进行解密,因此根据解密是否成功,就可以判断发送者的身份,如同发送者对数据进行了 “签名”。
例如,Alice 使用自己的私钥对一段固定的信息加密后发给了 Bob,Bob 利用 Alice 的公钥解密,如果解密结果与固定信息相同,那么就能够确认信息的发送者为 Alice,这个过程就称为数字签名。
SSL 客户端必须验证 SSL 服务器的身份,SSL 服务器是否验证 SSL 客户端的身份,则由 SSL 服务器决定。 SSL 客户端和SSL 服务端的身份验证过程,请参见“SSL 握手过程”。
使用数字签名验证时,需要确保被验证者的公钥是真实的,否则,非法用户可能会冒充被验证者与验证者通信。如 图1 所示,Cindy 冒充 Bob,将自己的公钥发给 Alice,并利用自己的私钥计算出签名发送给 Alice,Alice 利用 “Bob” 的公钥(实际上为 Cindy的 公钥)成功验证签名,则 Alice 成功验证改签名,则 Alice 认为 Bob 的身份验证成功,而实际上 Alice 通信的是冒充 Bob 的 CIndy。SSL 利用 PKI 提供的机制保证公钥的真实性,详细介绍请参见 “利用 PKI 保证公钥的真实性”。
为了避免网络中传输的数据被非法篡改,SSL 利用基于 MD5 或 SHA 的 MAC 算法来保证消息的完整性。
MAC 算法是在密钥参与下是数据摘要算法,能将密钥和任意长度的数据转化为固定长度的数据。利用 MAC 算法验证消息完整性的过程如图 2 所示。发送者在密钥的参与下,利用 MAC 算法计算出消息的 MAC 值,并将其加在消息之后发送给接收者。接收者利用同样的密钥的 MAC 算法计算出消息的 MAC值,并与接收到的 MAC 值比较。如果二者相同,则报文没有改变;否则,报文在传输过程中被修改,接收者将丢弃该报文。
MAC 算法具有如下特征,使其能够用来验证消息的完整性:
MAC 算法 要求通信双方具有相同的密钥,否则MAC 值验证将会失败。因此,利用 MAC 算法验证消息完整性之前,需要在通信两端部署相同的密钥。MAC 密钥的部署方法见“利用非对称密钥算法保证密钥本身的安全”。
对称密钥算法 和 MAC 算法要求通信双方具有相同的 密钥,否则解密或 MAC 值验证将失败。因此,要建立加密通道或验证消息完整性,必须先在通信双发部署一致的密钥。
SSL 利用非对称密钥算法加密密钥的方法实现密钥交换,保证第三方无法获取该密钥。如图3 所示,SSL 客户端(Web 浏览器)利用 SSL 服务器(Web 服务器)的公钥加密密钥,将加密后的密钥发送给SSL 服务器,只有拥有对应私钥的 SSL 服务器才能从密文中获取原始的密钥。 SSL 通常采用 RSA算法加密传输密钥。
说明:
利用非对称密钥算法加密密钥之前,发送者需要获取接收者的公钥,并保证该公钥确实属于接收者,否则,密钥可能会被非法用户窃取。如图1所示,CIndy 冒充 Bob ,将自己的公钥发给 Alice ,Alice 利用 Cindy 的公钥加密发送给 Bob 的数据, Bob 由于没有对应的私钥无法解密该数据,而 Cindy 截取数据后,可以利用自己的私钥解密该数据。 SSL 利用 PKI 提供的机制保证公钥的真实性,详细介绍请参见 “利用 PKI 保证公钥的真实性”。
PKI通过数字证书来发布用户的公钥,并提供了验证公钥真实性的机制。数字证书(简称证书)是一个包含用户的公钥机器身份信息的文件,证明了用户与公钥的关联。数字证书有权威机构——CA签发,并由CA 保证数证书的真实性。
SSL 客户端把密钥加密传递给 SSL 服务器之前,SSL 服务器要将从 CA 获取的证书发送给 SSL 客户端,SSL 客户端通过 PKI 判断该证书的真实性。如果该证书确实属于 SSL 服务器,则利用该证书中的公钥加密密钥,发送给SSL 服务器。
验证 SSL 服务器/ SSL 客户端的身份之前,SSL 服务器/ SSL 客户端 需要将从 CA 获取的证书发送给对端,对端通过 PKI 判断该证书的真实性。如果证书确实属于 SSL 服务器 / SSL 客户端,则对端利用该证书中的公钥验证 SSL 服务器 / SSL 客户端的身份。
如图4 所示,SSL 位于应用层和传输层之间,它可以为任何基于 TCP 等可靠连接的应用层协议提供安全性保证。SSL 协议本身分为两层:
其中:
SSL 通过握手过程在客户端和服务器之间协商会话参数,并建立会话。会话包含的主要参数有会话ID、对方的证书、加密套件(密钥交换算法、数据加密算法和MAC算法等)以及主密钥(master secret)。通过 SSL 会话传输的数据,都将采用该会话的主密钥和加密套件进行加密、计算 MAC 等处理。
不同情况下,SSL 握手过程存在差异。下面将分别描述一下三证情况下的握手过程:
如图5 所示,只需要 验证 SSL 服务器身份,不需要验证 SSL 客户端身份时,SSL的握手过程为:
说明:
SSL 客户端的身份验证是可选的,由SSL 服务器决定是否验证 SSL 客户端的身份。如图6 中蓝色部分表示的内容所示,如果 SSL 服务器验证 SSL 客户端 身份,则SSL 服务器和 SSL 客户端除了交互 “只验证服务器的SSL 握手过程”中的消息协商密钥和加密套件外,还需要进行以下操作:
协商会话参数、建立会话的过程中,需要使用非对称密钥算法来加密密钥、验证通信对端的身份,计算量较大,占用了大量的系统资源。为了简化 SSL 握手过程,SSL 允许重用已经协商过的会话,具体过程为:
HTTPS 是基于 SSL 安全连接的 HTTP 协议。HTTPS 通过 SSL 提供的数据加密、身份验证和消息完整性验证等安全机制,为 Web 访问提供了安全性保证,广泛应用于网上银行,电子商务等领域。
图8 中为 HTTPS 在网上银行中的应用。某银行为了方便客户,提供了网上银行业务,客户可以通过访问银行的 Web 服务器进行账户查询、转账等。通过在客户和银行的Web 服务器之间建立 SSL 连接,可以保证客户的信息不被非法窃取。
SSL VPN 是以 SSL 为基础的VPN技术,利用SSL 提供 的安全机制,为用户远程访问公司内部网路提供了安全保证。如图9 所示,SSL VPN 通过在远程接入用户和 SSL VPN 网关之间建立 SSL 安全连接,允许用户通过各种 Web 浏览器,各种网络接入方式,在任何地方远程访问企业网络资源,并能够保证企业网络的安全,保护企业内部信息不被窃取。