一、SSL协议的概述
提供网络安全服务可以在不同层次提供。通用的解决方法是在网络层使用
IPSec , IPSec 对于最终用户和应用程序是透明的。另一个比较通用的解决方法是在 TCP 上实现安全性,在这一级,有两种实现选择,一是 SSL (或 TLS )可以作为基本协议族的一个部分提供,因此对应用程序透明,二是将 SSL 嵌入到软件中,如嵌入到 Web 浏览器与 Web 服务器。与应用有关的安全服务也可以被嵌入到特定的应用程序中,如安全电子交易( SET )。
HTTP |
FTP |
SMTP |
S/MIME |
PGP |
SET |
|||||||
HTTP |
FTP |
SMTP |
SSL or TLS |
Kerberos |
SMTP |
HTTP |
||||||
TCP |
TCP |
UDP |
TCP |
|||||||||
IP/IPSec |
IP |
IP |
图13.1 TCP/IP协议栈中安全机制的位置
Netscape
公司推出 Web 浏览器时,提出了 SSL ( Secure Socket Layer )安全通信协议, SSL 协议目前已成为 Internet 上保密通讯的工业标准。现行 Web 浏览器普遍将 HTTP 和 SSL 相结合,来实现安全通信。IETF
在
( www.ietf.org )将 SSL 作了标准化,即 RFC2246 ,并将其称为 TLS ( Transport Layer Security ),从技术上讲, TLS1.0 与 SSL3.0 的差别非常微小。 WAP 的环境下,由于手机及手持设备的处理和存储能力有限, wap 论坛( www.wapforum.org )在 TLS 的基础上做了简化,提出了 WTLS 协议( Wireless Transport Layer Security ),以适应无线的特殊环境。SSL
如果利用
(
采用公开密钥技术。其目标是保证两个应用间通信的保密性和可靠性,可在服务器和客户机两端同时实现支持。它能使客户 / 服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对客户进行认证。 SSL 协议要求建立在可靠的传输层协议(例如: TCP )之上。 SSL 协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如: HTTP , FTP , Telnet )能透明的建立于 SSL 协议之上。 SSL 协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商以及服务器认证工作。 SSL 协议来访问网页,其步骤如下: 1 )用户:在浏览器的地址栏里输入 https://www.sslserver.com(
2 ) HTTP 层:将用户需求翻译成 HTTP 请求,如GET /index.htm HTTP/1.1
Host http://www.sslserver.com
(
(
接收端与此过程相反。
3 ) SSL 层 : 借助下层协议的的信道,安全的协商出一份加密密钥,并用此密钥来加密 HTTP 请求。 4 ) TCP 层:与 web server 的 443 端口建立连接,传递 SSL 处理后的数据。SSL
协议允许支持 SSL 协议的服务器与一个支持 SSL 协议的客户机相互认证,还允许这两个机器间建立加密连接,提供连接可靠性。SSL
服务器认证允许用户确认服务器身份。支持 SSL 协议的客户机软件能使用公钥密码标准技术(如用 RSA 和 DSS 等)检查服务器证书、公用 ID 是否有效和是否由在客户信任的认证机构 CA 列表内的认证机构发放。SSL
一个加密的
客户机认证允许服务器确认用户身份。使用应用于服务器认证同样的技术,支持 SSL 协议的服务器软件能检查客户证书、公用 ID 是否有效和是否由在服务器信任的认证机构列表内的认证机构发放。 SSL 连接要求所有在客户机与服务器之间发送的信息由发送方软件加密和由接受方软件解密,对称加密法用于数据加密(如用 DES 和 RC4 等),从而连接是保密的。所有通过加密 SSL 连接发送的数据都被一种检测篡改的机制所保护,使用消息认证码( MAC )的消息完整性检查、安全散列函数(如 SHA 和 MD5 等)用于消息认证码计算,这种机制自动地决定传输中的数据是否已经被更改,从而连接是可靠的。SSL
带
带
带
带
根据美国政府的规定,以上四种加密仅能在美国境内使用,以下加密技术是可以出口的。
带
带
注:对
不加密,只带
协议支持如下一些使用 RSA 密钥交换算法的密码组,它们的加密强度由强到弱排列: SHA-1 消息认证、支持 168 位加密的 Triple-DES ,速度不如 RC4 快。由于密码长度较大,大约有 3.7 * 10 50 个密码可用。 MD5 消息认证、支持 128 位加密的 RC4 , RC4 和 RC2 都有 128 位的密码,它们的加密强度仅次于 Triple-DES 。 RC4 和 RC2 大约有 3.4 * 10 38 个密码可用,这使得它们很难被破解。 RC4 密码是 SSL 支持的密码中最快的。 MD5 消息认证、支持 128 位加密的 RC2 , RC2 比 RC4 速度慢( SSL3.0 支持而 SSL2.0 不支持)。 SHA-1 消息认证、支持 56 位加密的 DES ,大约有 7.2 * 10 16 个可用的密码(在 SSL2.0 中该密码使用的是 MD5 消息认证)。 MD5 消息认证、支持 40 位加密的 RC4 ,大约有个 1.1 * 10 12 可用的密码。 MD5 消息认证、支持 40 位加密的 RC2 ,大约有个 1.1 * 10 12 可用的密码。 RC2 和 RC4 支持 40 位加密,其中密钥仍是 128 位的,但只有 40 位有加密意义。 MD5 消息认证。这种方法使用 MD5 消息认证检测篡改( SSL3.0 支持而 SSL2.0 不支持)。SSL
应用数据的传输过程为:
(
(
(
(
(
(
(
(
如果一致,则明文有效,接收方的
主要工作流程包括:网络连接建立;与该连接相关的加密方式和压缩方式选择;双方的身份识别;本次传输密钥的确定;加密的数据传输;网络连接的关闭。 1 )应用程序把应用数据提交给本地的 SSL ; 2 )发送端根据需要,使用指定的压缩算法,压缩应用数据; 3 )发送端使用散列算法对压缩后的数据进行散列,得到数据的散列值; 4 )发送端把散列值和压缩后的应用数据一起用加密算法加密; 5 )密文通过网络传给对方; 6 )接收方用相同的加密算法对密文解密,得到明文; 7 )接收方用相同的散列算法对明文中的应用数据散列; 8 )计算得到的散列值与明文中的散列值比较; SSL 把明文解压后得到应用数据上交给接收方的应用。否则就丢弃数据,并向发方发出告警信息。严重的错误有可能引起再次的协商或连接中断。SSL
协议建立在传输层和应用层之间,包括两个子协议: SSL 记录协议和 SSL 握手协议,其中记录协议在握手协议下端。
SSL握手协议 |
SSL改变密码格式协议 |
SSL警告协议 |
HTTP,FTP,… |
SSL 记录协议 |
|||
TCP |
|||
IP |
图13.2 SSL记录协议和SSL握手协议
SSL
记录协议定义了要传输数据的格式,它位于一些可靠的的传输协议之上(如 TCP ),用于各种更高层协议的封装。 SSL 握手协议就是这样一个被封装的协议。 SSL 握手协议允许服务器与客户机在应用程序传输和接收数据之前互相认证、协商加密算法和密钥。