SSL连接(了解)

SSL协议,用于Web浏览器与服务器之间的身份认证和加密数据传输.它位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。

SSL协议可分为两层:

  • SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
  • SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

SSL协议提供服务主要:

1)认证用户服务器确保数据发送确客户机服务器;
2)加密数据防止数据途窃取;
3)维护数据完整性确保数据传输程改变

SSL协议工作流程:

服务器认证阶段:

1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;

2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;

3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;

4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

用户认证阶段:

在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。

SSL协议运行的基础是商家对消费者信息保密的承诺。

SSL协议存在一些问题,比如,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系。

会话(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)序列号:通信的每一端都为每个连接中的发送和接收报文维持着一个序列号。 --------------------- 本文来自 Heuristic_7 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/hrl7752/article/details/78282411?utm_source=copy

猜你喜欢

转载自blog.csdn.net/wang_gongzi/article/details/82853060
今日推荐