如何更好的理解SSL(安全套接字)

SSL-安全套接字(Secure Sockets Layer)

一、SSL协议简介
该协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密

  • SSL协议可用于保护正常运行于TCP之上的任何应用协议,如HTTP、FTP、SMTP或Telnet的通信,最常见的是用SSL来保护HTTP的通信。
  • SSL协议的优点在于它是与应用层协议无关的。高层的应用协议(如HTTP、FTP、Telnet等)能透明地建立于SSL协议之上。
  • SSL协议在应用层协议之前就已经完成加密算法、通信密钥的协商以及服务器的认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的安全性。

1、SSL协议解决的问题-SSL协议的功能
(1)客户对服务器的身份认证

  • SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性。

(2)服务器对客户的身份认证

  • 也可通过公钥技术和证书进行认证,也可通过用户名,password来认证。

(3)建立服务器于客户之间安全的数据通道

  • SSL要求客户与服务器之间的所有发送的数据都被发送端加密、接收端解密,同时还检查数据的完整性。

2、SSL协议的使用方法
http:// 与 https://
https是SSL支持下的http的协议
在这里插入图片描述

3、SSL协议在栈中的位置
在这里插入图片描述
SSL协议介于应用层与传输层之间,属于4.5层协议。

二、SSL协议的工作原理

1、SSL的分层模型:

  • SSL协议是一个分层的协议,共有两层组成。处于SSL协议的底层的是SSL记录层协议(SSL Record Protocol),它位于可靠的传输层协议(如TCP)之上,用于封装高层协议的数据。其中SSL握手协议(SSL Handshake Protocol)允许服务方和客户方互相认证,并在应用层协议传送数据之前协商出一个加密算法和会话密钥。

2、SSL的体系结构:
在这里插入图片描述

3、SSL的概念
(1)SSL连接

  • 一个连接是一个提供一种合适类型服务的传输(OSI分层的定义);
  • SSL的连接是点对点的关系;
  • 连接是暂时的,每一个连接和一个会话关联;
    (2)SSL会话
  • 一个SSL会话是在客户与服务器之间的一个关联。会话由Handshark Protocol创建。会话定义了一组可供多个连接共享的密码安全参数。
  • 会话用以避免为每一个连接提供新的安全参数所需昂贵的协商代价。
    在这里插入图片描述

4、SSL的主要工作流程:

  1. 网络连接建立,SSL客户端发送消息,消息中包含SSL版本号、密码设置、可实现的算法列表、随机数以及服务器使用SSL协议通信所需的其他信息;
  2. SSL服务器端回应消息,确定SSL版本号、加密算法和压缩算法;
  3. SSL服务器发出服务器数字证书;
  4. SSL客户端的身份认证是可选的;
  5. 客户端生成预主密钥pre_master_secret,用服务器的公钥加密后返回服务器,服务器利用自己的私钥解密后得到会话密钥;
  6. 若服务器要求客户端认证,客户机会向服务器随机密的pre_master_secret一起发送签名的数据和客户自己的证书;
  7. 服务器若认证客户成功,使用私钥加密pre_master_secret,然后执行一系列步骤生成master secret,否则会话终止;
  8. 客户机与服务器使用master secret生成会话密钥,该密钥是对称密钥,用于加密和解密在SSL会话期间的交换的信息,检验信息完整性;
  9. C&S:发送消息通知以后从客户机来的消息将用会话密钥加密,客户机然后发送一条独立的(加密的)消息表明握手的客户机部分已经完成。

5、应用数据的传输过程为:
(1)应用程序把应用数据提交给本地的SSL;
(2)发送端的SSL根据需要:

– 使用指定的压缩算法,压缩应用数据;
– 使用散列算法对压缩后的数据计算散列值;
– 把散列值和压缩数据一起用加密算法加密;

(3)密文通过网络传给对方;
(4)接收方的SSL
用相同的加密算法对密文解密,得到明文;
用相同的散列算法对明文中的应用数据散列;
计算得到的散列值与明文中的散列值比较;
(5)如果一致,则明文有效,接收方的SSL把明文解压后得到应用数据上交给应用层。否则剧丢弃数据,并向发送方发出警告信息。严重的错误有可能引起再次的协商或连接中断。

6、SSL握手协议的功能
(1)协商SSL协议的版本
(2)协商加密套件
(3)协商密钥参数
(4)验证通讯双方的身份
(5)建立SSL连接

7、SSL握手协议的握手过程

  • 无客户端认证的全握手过程
    在这里插入图片描述
  • 有客户端认证的全握手过程
    在这里插入图片描述
  • 会话恢复过程
    在这里插入图片描述

8、SSL记录层的功能
(1)保护传输数据的私密性,对数据进行加密和解密
(2)验证传输数据的完整性,计算报文的摘要
(3)提高传输数据的效率,对报文进行压缩
(4)保证数据传输的可靠和有序

记录层的报文格式如下:
在这里插入图片描述

三、SSL协议的脆弱性分析
1、客户端假冒
因为SSL协议设计初衷是对web站点以及网上交易进行安全性的保护,使得消费者明白正在和谁进行交易要比使商家知道谁正在付费更为重要,为了不致于由于安全协议的使用而导致网络性能大幅下降,SSL协议并不是默认地要求进行客户鉴别,这样做虽然有悖于安全策略,但是却促进了SSL的广泛应用。

2、无法保护UDP应用
SSL协议需要在握手之前建立TCP连接,因此不能对UDP应用进行保护,如果要兼顾UDP协议层之上的安全保护,可以采用IP层的安全解决方案。

3、SSL协议不能对抗流量分析
由于SSL只对应用数据进行保护,数据包的IP头和TCP头仍然暴露在外,通过检查没有加密的IP源和目的地址以及TCP端口号或者检查通信数据量,一个通信分析者依然可以揭示哪一方在使用什么服务,有时甚至揭露商业或私人关系的秘密。

4、进程中主密钥泄露
除非SSL的工程实现大部分驻留在硬件中,否则主密钥将会存留在主机的主存储器中,这就以为这任何可以读取SSL进程存储空间的攻击者都能读取主密钥,因此,不可能面对掌握机器管理特权的攻击者而保护SSL连接,这个问题要依靠用户管理策略来解决。

创作者:Eric· Charles

猜你喜欢

转载自blog.csdn.net/qq_42197548/article/details/86527367