SSL和TLS-SSL Protocol介绍

SSL和TLS-SSL Protocol介绍

SSL协议是客户端/服务器协议,向双方提供基本的安全服务:

  • 认证(端和数据来源认证)
  • 连接机密性服务
  • 连接完整性服务(不能恢复)

尽管SSL协议使用公钥(public key)加密,它不提供源(origin)和完整性的不可否认(nonrepudiation)服务。
SSL协议是sockets-oriented,意味着通过网络socket发送或者接收的数据都是以相同的办法加密。
SSL是介于传输层和应用层之间的中间层协议:

  • 通信方之间建立的是安全的连接

  • 使用这个连接安全地传输高级协议数据。数据被分成可管理的块(fragments),分别处理各个fragment。每个块可以是压缩的、认证的、加密的、有header。每个块以不同的SSL记录发送。
    The SSL with its (sub)layers and (sub)protocols.

  • SSL handshake protocol:是SSL的核心子协议。用来建立安全的连接。它允许通信双方互相认证,协商加密套件(cipher suite)和压缩方法。

  • SSL change cipher spec protocol:允许通信双方发信号更改密码规格(修改数据的加密策略和办法)当握手协议用来协商安全连接的参数时,本协议用来把参数放到地方,使参数生效

  • SSL alert protocol:允许双方发送信号,说明潜在的问题,发送相关告警消息

  • SSL application data protocol:它和SSL record protocol一起,安全地传输应用数据。

SSL协议自己决定TCP段(segment)内一个SSL记录的开始和结束,以及包含在一个SSL记录中的每个SSL消息(message)的开始和结束。因此,SSL协议采用多个长度属性。每个SSL记录有一个长度属性,记录整个记录的长度,每个SSL消息也包含记录它的长度的属性。这样,多个SSL消息可以打包到一个SSL记录内。
SSL协议的主要优点是和应用层协议无关,也就是说任何基于TCP协议的应用层协议都可以用SSL实现基本的安全服务。为了适应不支持SSL的客户端,服务器应该准备接受安全的和不安全的协议。一般有两种策略:

  • 使用不同的端口。为安全的版本和不安全的版本各准备一个端口。就是说建议服务器监听一个普通端口,一个安全端口,连接到安全端口的自动使用SSL
  • 向上(upward)的协商策略,使用一个版本支持两种协议。一端通过一个消息,说明愿意升级到SSL。另一端统一以后,调用SSL,建立安全通道

RFC 2817支持升级策略。RFC 2818使用两个端口。HTTP一般都使用不同端口的方案(HTTP over SSL,简称HTTPS)。
SSL协议很简单,和IPsec/IKE、TLS这些协议可以完美结合。
SSL协议以块为单位,一个块就是一个字节。使用big endian格式。
一个或者几个SSL连接关联一个SSL session。连接用来传输数据。数据被加密也可能被压缩。
一个SSL session在SSL握手之后建立,定义了一系列的加密参数。SSL session主要用来避免,每个连接单独的新加密参数的协商。
一对实体间,可能同时存在多个SSL连接。原则上,可以多个session共存,但很少这样使用。
SSL session和连接是有状态的,客户端和服务器都应该保存一些状态信息。SSL握手协议建立和协调客户端和服务器侧的状态,
从而,允许SSL状态机协调一致。有两个状态,一个是当前状态,一个是pending状态。另外还有读写状态。所以,每一个都需要管理四个状态。
下面的图展示了在SSL握手期间,当发送或者接收了一个ChangeCipherSpec消息时的状态变化。

  • 如果一个实体发送了ChangeCipherSpec消息,它从pending write状态到current write状态。read状态保持不变。
  • 如果一个实体接收了ChangeCipherSpec消息,它从pending read状态到current read状态。write状态保持不变。
    The SSL state machine

当SSL握手协商完成以后,客户端和服务器交换ChangeCipherSpec消息,于是,pending状态改变到current状态。意味着他们现在能使用新约定的加密(和其他)参数。然后,FINISHED消息保护新参数。对于每个session和连接,SSL状态机必须保护一些信息元素。

SSL Session State Elements

名称 描述
session identifier 服务器指定的字节序列,标识活动的或者可恢复的session。最长32个字节
peer certificate X.509v3证书
compression method 数据压缩算法(优先于加密)
cipher spec 数据加密和MAC算法
master secret 客户端和服务器共享的48字节的secret
is resumable session是否可恢复。表示是否可用于新连接

SSL Connection State Elements

名称 描述

server and client random 服务器和客户端为每个连接选择的字节序列
server write MAC key 服务器写的数据,在MAC操作时的secret
client write MAC key 客户端写的数据,在MAC操作时的secret
server write key 服务器加密、客户端解密的key
client write key 客户端加密、服务器解密的key
initialization vectors 如果使用CBC模式的块cipher做数据加密,每个key都要维护一个IV。这个属性首先由SSL握手协议初始化。然后,每个SSL记录的最终cipher文本块作为下一个记录的IV
sequence numbers SSL消息认证的顺序号。客户端和服务器要维护每个连接上的消息的顺序号。顺序号64位长。当发送或者接收到ChangeCipherSpec消息,顺序号复位为0

猜你喜欢

转载自blog.csdn.net/weixin_43364172/article/details/83818170