翻译:中国科学技术大学信息安全专业老师 13.2.2 SSL/TLS TCP协议提供了在两个结点之间的可靠的字节流通信。TCP是一种有状态的面向连接 的协议,它检测什么时候报文分组丢失和什么时候报文分组次序颠倒地到达,并且丢弃重复 的数据。TCP在建立两个结点间的会话时,甚至实现基于地址的实体认证:但是,正如在 8.7.1节中强调的,这是TCP协议的相当脆弱的实现。TCP缺乏强有力的密码实体认证、数 据完整性和机密性。这些服务是在安全套接字层(SSL)协议中引入的,它由 Netscape(网 景公司)开发,主要保护wwW通信。关于传输层安全(LS)的正TF草案,它基本上与 SSL的第三版本一样,于是这个协议就变成了众所周知的 SSL/TLS 在 Internet协议栈中,SSL位于应用层协议和TCP协议之间。因此,SsL能够依赖由 TCP保证的性质,例如它自己就不必关心数据的可靠传递。像TCP一样,SSL也是有状态 的和面向连接的。SSL会话状态包括为执行密码算法所要求的信息,例如,会话标识符、密 码程序组的说明、共享的秘密密钥、证书、由协议(如 Diffie- Hellan协议,见12.3.1节)使 用的随机数等等。为了抑制由密钥管理引起的系统开销,一个SSL会话可以包括多个连接。 有特色的实例是在客户和服务器之间的HTTP会话,其中为传输复合文档的每一个部分都要 建立一个新的连接。对每一个连接,仅仅是状态信息中的一个子集发生变化。SSL由两部分 组成,如图13.11所示: SSL记录层( SSL record layer),和 SSL握手层( SSLhandshake layer) SSL记录层从上层协议获得数据块,将这些数据块分段为SSL明文记录,然后应用在 现行会话状态中的密码说明定义的密码变换。从本质上来说,SSL记录层提供一种类似于 IPSEC的服务,在 IPSEC安全关联和SSL状态之间的相似绝不是偶然的。 SSL握手协议建立会话状态的密码参数。在图13.12中,你可以发现在客户和服务器之 间的消息交换,括号中的组件是可选的。为了举例说明这个协议,我们现在单步调试客户认 证服务器的运行过程 客户用 Clienthello消息开始协议的运行,该消息包含一个随机数、一张建议的密码表 (它是根据客户的偏爱定制的)和一个建议的压缩算法 MI: ClientHello: ClientRandom[28 建议的密码程序组( suite): TLS RSA WITH IDEA CBC SHA TLS RSA WITH DES CBC SHA TLS RSA EXPORT WITH DES40 CBC SHA 建议的压缩算法:无 服务器从建议的程序组中选择 ILS RSA WITH DES_ CBC SHA。RSA将用于密钥交 换, DES CBC用作加密算法,SHA用作hash函数。服务器将用一个 Server hello消息和 一个证书链来响应: 图13.11SSL层 图13.12SSL握手协议 M2: Server Hello: Server Random[28] 使用密码程序组: TLS RSA WITH DES CBC SHA 会话ID:0xa00372d4XS 第6页共12页 创建时间:2003-11翻译:中国科学技术大学信息安全专业老师 第 6 页 共 12 页 创建时间:2003-11 13.2.2 SSL/TLS TCP 协议提供了在两个结点之间的可靠的字节流通信。TCP 是一种有状态的面向连接 的协议,它检测什么时候报文分组丢失和什么时候报文分组次序颠倒地到达,并且丢弃重复 的数据。TCP 在建立两个结点间的会话时,甚至实现基于地址的实体认证;但是,正如在 8.7.1 节中强调的,这是 TCP 协议的相当脆弱的实现。TCP 缺乏强有力的密码实体认证、数 据完整性和机密性。这些服务是在安全套接字层(SSL)协议中引入的,它由 Netscape(网 景公司)开发,主要保护 WWW 通信。关于传输层安全(TLS)的 IETF 草案,它基本上与 SSL 的第三版本一样,于是这个协议就变成了众所周知的 SSL/TLS。 在 Internet 协议栈中,SSL 位于应用层协议和 TCP 协议之间。因此,SSL 能够依赖由 TCP 保证的性质,例如它自己就不必关心数据的可靠传递。像 TCP 一样,SSL 也是有状态 的和面向连接的。SSL 会话状态包括为执行密码算法所要求的信息,例如,会话标识符、密 码程序组的说明、共享的秘密密钥、证书、由协议(如 Diffie-Hellan 协议,见 12.3.1 节)使 用的随机数等等。为了抑制由密钥管理引起的系统开销,一个 SSL 会话可以包括多个连接。 有特色的实例是在客户和服务器之间的 HTTP 会话,其中为传输复合文档的每一个部分都要 建立一个新的连接。对每一个连接,仅仅是状态信息中的一个子集发生变化。SSL 由两部分 组成,如图 13.11 所示: ·SSL 记录层(SSL record layer),和 ·SSL 握手层(SSL handshake layer)。 SSL 记录层从上层协议获得数据块,将这些数据块分段为 SSL 明文记录,然后应用在 现行会话状态中的密码说明定义的密码变换。从本质上来说,SSL 记录层提供一种类似于 IPSEC 的服务,在 IPSEC 安全关联和 SSL 状态之间的相似绝不是偶然的。 SSL 握手协议建立会话状态的密码参数。在图 13.12 中,你可以发现在客户和服务器之 间的消息交换,括号中的组件是可选的。为了举例说明这个协议,我们现在单步调试客户认 证服务器的运行过程。 客户用 ClientHello 消息开始协议的运行,该消息包含一个随机数、一张建议的密码表 (它是根据客户的偏爱定制的)和一个建议的压缩算法: M1:ClientHello:ClientRandom[28] 建议的密码程序组(suite): TLS_RSA_WITH_IDEA_CBC_SHA TLS_RSA_WITH_DES_CBC_SHA TLS_RSA_EXPORT_WITH_DES40_CBC_SHA 建议的压缩算法:无 服务器从建议的程序组中选择 TLS_RSA_WITH_DES_CBC_SHA。RSA 将用于密钥交 换,DES_CBC 用作加密算法,SHA 用作 hash 函数。服务器将用一个 Server_Hello 消息和 一个证书链来响应: 图 13.11 SSL 层 图 13.12 SSL 握手协议 M2:ServerHello:ServerRandom[28] 使用密码程序组: TLS_RSA_WITH_DES_CBC_SHA 会话 ID:0xa00372d4XS