SSL或者说是TSL加密传输的过程

image

  1. TLS(Transport Layer Security)基本概述

    • TLS是一种加密协议,用于在网络通信中提供安全保障。它的前身是SSL(Secure Sockets Layer),主要目的是在两个通信实体(如客户端和服务器)之间建立一个安全的通信通道,确保数据的保密性、完整性和认证性。
  2. TLS加密过程主要步骤

    • 握手阶段(Handshake Phase)
      • 客户端发起请求(Client Hello):客户端向服务器发送一个“Client Hello”消息,这个消息包含了客户端支持的TLS版本(如TLS 1.2、TLS 1.3等)、客户端支持的加密套件(Cipher Suites)列表和一个随机数(Client Random)。加密套件是一组加密算法的组合,包括密钥交换算法、对称加密算法和消息认证码(MAC)算法等。例如,一个加密套件可能是“TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384”,其中“ECDHE”是密钥交换算法,“RSA”用于身份认证,“AES_256_GCM”是对称加密算法,“SHA384”是MAC算法。
      • 服务器响应(Server Hello):服务器收到客户端请求后,选择一个双方都支持的TLS版本和加密套件,并将其发送给客户端,同时也会发送一个随机数(Server Random)。此时,双方就确定了通信使用的TLS版本和加密方法。
      • 服务器证书发送(Server Certificate):服务器向客户端发送其数字证书。这个证书包含了服务器的公钥和一些相关的身份信息,并且证书是由受信任的证书颁发机构(CA,Certificate Authority)签名的。证书的作用是让客户端验证服务器的身份,确保客户端是在和真正的目标服务器通信,而不是中间人攻击者。
      • 客户端验证服务器证书(Certificate Verification):客户端收到服务器证书后,会使用本地存储的CA根证书来验证服务器证书的有效性。客户端会检查证书的签名是否正确、证书是否在有效期内、证书的域名是否与服务器的实际域名匹配等。如果验证通过,客户端就可以信任服务器的身份。
      • 密钥交换(Key Exchange):根据选定的加密套件中的密钥交换算法进行密钥交换。在TLS 1.2及以前版本中,常用的密钥交换算法有RSA和Diffie - Hellman(DH)及其变种(如ECDHE)。以ECDHE为例,客户端和服务器通过交换椭圆曲线点来生成一个共享的主密钥(Pre - master Secret)。这个主密钥是临时的,并且只有在本次通信中有效。
      • 生成会话密钥(Session Key Generation):客户端和服务器使用之前交换的随机数(Client Random和Server Random)以及主密钥,通过一定的算法(如伪随机函数,PRF)生成会话密钥(Session Keys)。会话密钥包括用于加密数据的对称加密密钥、用于验证数据完整性的MAC密钥等。例如,在AES - GCM加密模式下,会生成一个用于加密的AES密钥和一个用于GCM模式认证的密钥。
    • 数据传输阶段(Data Transfer Phase)
      • 数据加密与传输:双方使用生成的会话密钥对通信数据进行加密。在TLS中,一般采用对称加密算法,因为对称加密算法在处理大量数据时效率更高。例如,使用AES - 256 - GCM加密算法对数据进行加密,将明文数据转换为密文数据。然后,通过网络将密文数据发送给对方。发送的数据还会包含一些用于验证数据完整性的信息,如MAC值。
      • 接收方解密与验证:接收方收到密文数据后,使用对应的会话密钥进行解密。同时,接收方会根据收到的数据和自己计算的MAC值来验证数据的完整性。如果数据被篡改或者MAC值不匹配,接收方会知道数据传输出现了问题,可能会丢弃数据或者采取其他安全措施。
    • 连接关闭阶段(Connection Close Phase)
      • 当通信结束后,双方通过发送特定的关闭消息来正常关闭TLS连接。这个过程可以确保双方都知道通信已经结束,并且可以安全地释放相关的资源,如加密密钥等。
  3. TLS加密过程中的安全机制和优势

    • 保密性(Confidentiality):通过对称加密算法对数据进行加密,只有拥有会话密钥的双方才能解密数据,有效地防止了第三方在网络传输过程中窃取数据内容。
    • 完整性(Integrity):利用MAC算法或者数字签名等方式来验证数据在传输过程中是否被篡改。如果数据被修改,接收方能够发现并采取措施,保证了数据的完整性。
    • 认证性(Authentication):通过服务器证书的验证过程,客户端能够确认服务器的身份,防止中间人攻击。在一些双向认证的场景下,客户端也可以向服务器提供证书来证明自己的身份,进一步增强了通信的安全性。
posted @   Eular  阅读(223)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示