2-2传输层安全协议SSL

2-2传输层安全协议SSL

what is ssl?

安全套接层协议SSL(Security Socket Layer)是Netscape公司设计开发的(最初是为了保护他们的浏览器),专门用于保护基于WEB的通信

why ssl?

网络层安全协议IPSec可以提供端到端的网络层安全传输, 但是无法处理位于同一端系统之中的不同应用的安全需求,因此需要在传输层和更高层提供网络安全传输服务,来满足这些要求

安全服务

SSL提供了三个基本的安全服务:

  1. 加密:保证数据传输的机密性,确保只有授权的接收方可以阅读信息。

  2. 认证:确保通信双方都是他们声称的那个人,通常通过证书和密钥来实现。

  3. 数据完整性:确保数据在传输过程中没有被更改。

  4. 反重放

    ssl会话参数里实际上也有序列号,所以应该也能提供反重放服务.

    SSL协议为每次安全连接产生一个128位长的随机数“连接序号”,攻击者无法提前预测此连接序号,因此不能对服务器请求做出正确应答

对比ipsec:

IPsec 是一个协议套件,旨在保护IP通信,通过对每个IP数据包进行加密和认证来实现。它提供的安全服务主要包括:

  • 数据加密:确保数据的机密性,使得即使数据包被拦截,也无法被未授权者阅读。

  • 数据完整性:确保数据在传输过程中没有被更改。

  • 认证:验证数据包来源的真实性,确保数据包是由实际发送者发送的。

  • 反重放:防止旧的或重复的数据包被用于攻击。

ssl特点

SSL工作在TCP协议上不支持UDP,对应用层透明,为应用层的流量提前搭建安全信道(提前完成了客户端和服务器的身份认证、加密算法和密钥的协商 )

SSL先握手建立会话(session),一个会话可能由多个连接共享

image-20240101134610600

SSL体系结构详解

  1. SSL记录协议(SSL Record Protocol)

    • 功能:它位于SSL协议栈的最底层,负责接收应用层的数据,进行必要的分割、压缩、加密处理,然后发送给对方。同时,它也会处理接收的数据,进行解密、验证、重组等,然后交给应用层。
    • 重要性:记录协议是保障数据机密性和完整性的基础,它确保传输的数据对外是安全的,没有被篡改。
  2. SSL握手协议(SSL Handshake Protocol)

    • 功能:在通信双方开始传输加密数据之前,握手协议负责建立安全连接的详细参数,包括协商加密算法、交换密钥信息和相互验证身份。
    • 重要性:握手协议是建立安全通信信道的关键,它确保双方都使用相同的密钥和算法,并且都是可信的。
  3. SSL警告协议(SSL Alert Protocol)

    • 功能:用于在出现错误时,传递警告和错误信息给对方。比如,如果一个证书无效或者密钥交换失败,警告协议会被用来通知对方。
    • 重要性:警告协议使得通信双方可以在安全通信出现问题时,及时得到通知并采取相应措施。
  4. SSL变更密码规格协议(SSL Change Cipher Spec Protocol)

    • 功能:用于在握手过程中,告诉对方将要更改加密算法或密钥。
    • 重要性:它是握手协议的一个辅助部分,确保双方能同步转换到新的加密参数,维护通信的安全性。

SSL记录协议工作流程

image-20240101135441982

SSL握手协议工作流程

SSL握手协议 主要负责在SSL通信开始之前,建立安全通信的基本参数。整个握手过程包括几个重要步骤,喵~:

  1. 客户端和服务器的问候:交换协议版本号,选择加密和压缩方法。

    • Cipher suite:加密方法的参数包括
      • 密钥交换方法:那些公钥算法比如DH,RSA,
      • 加密算法:RC4,RC2,DES,3DES……
      • MAC算法:MD5,SHA-1
  2. 服务器身份认证和密钥交换:服务器发送证书给客户端,客户端验证服务器证书的有效性。

  3. 客户端身份认证和密钥交换:客户端可能也会发送证书给服务器,并且双方会协商一个共享的密钥。

    先协商出一个pre_master_key,在finish阶段客户端用来计算出master_key

  4. 握手完成:握手协议的最后阶段,客户端将master secrete派生为所有的密钥,和服务器确认握手过程结束,开始加密的数据传输。

    • MAC
    • 加密
    • IV

    image-20240101142552375

  5. client server hello,这一过程主要是client向server发出建立ssl的请求,并协商一些加密方法

  6. server certificate and key exchange:server向用户提供证书,并要求用户返回证书和确认

  7. client certificate and key exchange:用户确认证书,并根据证书中server的公钥加密传输pre_master_secret用于下一步生成主密钥,并返回自己的证书

  8. finish:用户用主密钥生成所有密钥并和服务器确认

HTTPS=HTTP+SSL

特性 HTTP HTTPS
传输方式 明文传输 SSL协议加密传输
端口号 80 443
协议复杂性 简单 由SSL+HTTP构建
连接状态 无状态 无状态(会话之间无状态)
安全性 加密传输、身份认证
  • HTTP明文传输,不能提供加密

  • HTTP无状态,不能认证双方(中间人攻击,DNS欺诈,ARP欺诈等)

HTTPS就是为了解决上述痛点




本文总阅读量