首页 > 其他分享 >SSL或者说是TSL加密传输的过程

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

时间:2024-12-18 21:45:06浏览次数:9  
标签:TLS 加密传输 TSL 加密 证书 SSL 密钥 服务器 客户端

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):通过服务器证书的验证过程,客户端能够确认服务器的身份,防止中间人攻击。在一些双向认证的场景下,客户端也可以向服务器提供证书来证明自己的身份,进一步增强了通信的安全性。

标签:TLS,加密传输,TSL,加密,证书,SSL,密钥,服务器,客户端
From: https://www.cnblogs.com/euler-blog/p/18615886

相关文章

  • 没有域名如何申请SSL证书
    SSL证书一般多应用于域名上,可以保证网站里面的数据不会被泄露,加强网站安全,也加强浏览者的信任度。但是有一种特殊的情况,在网站没有域名或者域名还没有准备好的时候,只有IP地址,能否安装SSL证书呢,答案是可以的,本文将介绍IPSSL证书的应用场景和申请方式。IPSSL证书是什么IPSSL证......
  • Caused by ProxyError('Unable to connect to proxy', SSLError(SSLEOFError(8, '[SSL
    背景有个网站开了代理,浏览器可以访问,但是命令行ping不通,telnet不通,pythonrequests请求报上述错误解决方案配置代理,改成http请求url="http://m.zhibo8.com/news/web/zuqiu/2024-12-02/match1437755date2024vnative.htm"#替换为实际的网页链接proxies={'http':......
  • 解决:ImportError: /lib64/libldap.so.2: undefined symbol: EVP_md2, version OPENSSL
    解决:ImportError:/lib64/libldap.so.2:undefinedsymbol:EVP_md2,versionOPENSSL_3.0.0报错 [root@localhost]#dnfinstall-ynet-toolsTraceback(mostrecentcalllast):File"/usr/bin/dnf",line61,in<module>fromdnf.cliimportmain......
  • SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】处理
    一、概述SSL/TLS协议信息泄露漏洞(CVE-2016-2183)漏洞说明:SSL全称是SecureSocketsLayer,安全套接字层,它是由网景公司(Netscape)设计的主要用于Web的安全传输协议,目的是为网络通信提供机密性、认证性及数据完整性保障。如今,SSL已经成为互联网保密通信的工业标准。SSL最初的几个版本......
  • 记录一次Centos镜像修改以及升级OpenSSL和OpenSSH
    事情是这样的:公司的阿里云服务器被说有漏洞需要修复--查看说漏洞大多都是OpenSSL和OpenSSH的,想到版本比较低就升级他两不就行了吗?结果更新升级发现app-stream均无法成功,原因centos已经停了维护,各种镜像均已不再维护了。第一步修改为阿里云镜像entOS8现已可使用国内的aliyun......
  • httpsok-v1.18.0-SSL证书自动续期
    ......
  • 在 PowerShell 中实现您要求的多个网络修复功能,可以通过运行多个脚本和命令来完成。这
    ResetInternetProtocols(TCP/IP)RepairWinsock(ResetCatalog)RenewInternetConnectionsFlushDNSResolverCache(DomainNameSystem)FlushARPCache(AddressResolutionProtocol)RepairInternetExplorer11ClearWindowsUpdateHistoryRepairWindows/Automat......
  • SSL证书有效期将缩短为45天
    作者:CEO博客最近全球互联网安全界的热点之一是苹果公司10月10日提出的缩短SSL证书有效期为45天的国际标准提案,笔者当时本想写篇文章说一说这事,但是最终还是决定等等,看看业界的反应后再讲这事。两个月过去了,这事在国外反映强烈,还在持续热议中。但是,国内好像一点反应都没有,甚至我同......
  • 用Keytool和OpenSSL生成和签发数字证书
    一)keytool生成私钥文件(.key)和签名请求文件(.csr),openssl签发数字证书      J2SDK在目录%JAVA_HOME%/bin提供了密钥库管理工具Keytool,用于管理密钥、证书和证书链。Keytool工具的命令在JavaSE6中已经改变,不过以前的命令仍然支持。Keytool也可以用来管理对称加密算法中......
  • 面试官:Java中Class.forName和ClassLoader到底有啥区别?
    最近在面试过程中有被问到,在Java反射中Class.forName()加载类和使用ClassLoader加载类的区别。当时没有想出来后来自己研究了一下就写下来记录一下。解释在java中Class.forName()和ClassLoader都可以对类进行加载。ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类......