会话(Session)和连接(Connection)是SSL中两个重要的概念,在规范中定义如下。
(1)SSL连接:用于提供某种类型的服务数据的传输,是一种点对点的关系。一般来说,连接的维持时间比较短暂,并且每个连接一定与某一个会话相关联。
(2)SSL会话:是指客户和服务器之间的一个关联关系。会话通过握手协议来创建。它定义了一组安全参数。
一次会话过程通常会发起多个SSL连接来完成任务,例如一次网站的访问可能需要多个HTTP/SSL/TCP连接来下载其中的多个页面,这些连接共享会话定义的安全参数。这种共享方式可以避免为每个SSL连接单独进行安全参数的协商,而只需在会话建立时进行一次协商,提高了效率。
每一个会话(或连接)都存在一组与之想对应的状态,会话(或连接)的状态表现为一组与其相关的参数集合,最主要的内容是与会话(或连接)相关的安全参数的集合,用会话(或连接)中的加密解密、认证等安全功能的实现。在SSL通信过程中,通信算法的状态通过SSL握手协议实现同步。
根据SSL协议的约定,会话状态由以下参数来定义:
(1)会话标识符:是由服务器选择的任意字节序列,用于标识活动的会话或可恢复的会话状态。
(2)对方的证书:会话对方的X.509v3证书。该参数可为空。
(3)压缩算法:在加密之前用来压缩数据的算法。
(4)加密规约(Cipher Spec):用于说明对大块数据进行加密采用的算法,以及计算MAC所采用的散列算法。
(5)主密值:一个48字节长的秘密值,由客户和服务器共享。
(6)可重新开始的标识:用于指示会话是否可以用于初始化新的连接。
连接状态可以一下参数来定义:
(1)服务器和客户器的随机数:是服务器和客户为每个连接选择的用于标识连接的字节序列。
(2)服务器写MAC密值:服务器发送数据时,生成MAC
(3)使用的密钥,长度为128 bit。
(4)客户写MAC密值,服务器发送数据时,用于数据加密的密钥,长度为128 bit 。
(5)客户写密钥:客户发送数据时,用于数据加密的密钥,长度为128 bit。
(6)初始化向量:当使用CBC模式的分组密文算法是=时,需要为每个密钥维护初始化向量。
(7)序列号:通信的每一端都为每个连接中的发送和接收报文维持着一个序列号。
(1)SSL连接:用于提供某种类型的服务数据的传输,是一种点对点的关系。一般来说,连接的维持时间比较短暂,并且每个连接一定与某一个会话相关联。
(2)SSL会话:是指客户和服务器之间的一个关联关系。会话通过握手协议来创建。它定义了一组安全参数。
一次会话过程通常会发起多个SSL连接来完成任务,例如一次网站的访问可能需要多个HTTP/SSL/TCP连接来下载其中的多个页面,这些连接共享会话定义的安全参数。这种共享方式可以避免为每个SSL连接单独进行安全参数的协商,而只需在会话建立时进行一次协商,提高了效率。
每一个会话(或连接)都存在一组与之想对应的状态,会话(或连接)的状态表现为一组与其相关的参数集合,最主要的内容是与会话(或连接)相关的安全参数的集合,用会话(或连接)中的加密解密、认证等安全功能的实现。在SSL通信过程中,通信算法的状态通过SSL握手协议实现同步。
根据SSL协议的约定,会话状态由以下参数来定义:
(1)会话标识符:是由服务器选择的任意字节序列,用于标识活动的会话或可恢复的会话状态。
(2)对方的证书:会话对方的X.509v3证书。该参数可为空。
(3)压缩算法:在加密之前用来压缩数据的算法。
(4)加密规约(Cipher Spec):用于说明对大块数据进行加密采用的算法,以及计算MAC所采用的散列算法。
(5)主密值:一个48字节长的秘密值,由客户和服务器共享。
(6)可重新开始的标识:用于指示会话是否可以用于初始化新的连接。
连接状态可以一下参数来定义:
(1)服务器和客户器的随机数:是服务器和客户为每个连接选择的用于标识连接的字节序列。
(2)服务器写MAC密值:服务器发送数据时,生成MAC
(3)使用的密钥,长度为128 bit。
(4)客户写MAC密值,服务器发送数据时,用于数据加密的密钥,长度为128 bit 。
(5)客户写密钥:客户发送数据时,用于数据加密的密钥,长度为128 bit。
(6)初始化向量:当使用CBC模式的分组密文算法是=时,需要为每个密钥维护初始化向量。
(7)序列号:通信的每一端都为每个连接中的发送和接收报文维持着一个序列号。