当前位置: 首页 > news >正文

【学习笔记】TLS

文章目录

    • 一、 介绍
    • 二、 TLS 的核心目标
    • 三、 TLS 握手流程
    • 四、 TLS 关键技术
    • 五、TLS 与 HTTPS
    • 六、实践

一、 介绍

        TLS 的前身是 Netscape 在 1994 年推出的 SSL(Secure Sockets Layer),最初版本为 SSL 2.0,随后改进为 SSL 3.0。但是 SSL 2.0/3.0 都存在设计漏洞和安全缺陷。为此,IETF 于 1999 年发布了 TLS 1.0(RFC 2246),做了若干改进,一步脱离了 SSL 的命运。此后,TLS 继续演进,先后发布了 TLS 1.1、TLS 1.2,直至 2018 年确定的 TLS 1.3(RFC 8446),成为当前最广泛支持的版本。

二、 TLS 的核心目标

  1. 加密通信(Confidentiality)
    通过对称加密算法(如 AES)确保数据在传输过程中无法被外界解读。
  2. 完整性验证(Integrity)
    利用消息认证码(MAC)或 AEAD(Authenticated Encryption with Associated Data)算法,确保数据未被篡改。
  3. 身份认证(Authentication)
    通过非对称加密与数字证书,确认通信双方的身份,防止中间人伪装。

三、 TLS 握手流程

在这里插入图片描述

  1. ClientHello
    客户端发送支持的TLS版本、加密套件列表、随机数以及扩展(如 Server Name Indication)等信息。

  2. SeverHello
    服务器从客户端提供的选项中,选择协议版本和加密套件,返回随机数,并附带其数字证书(公钥)及可选的服务器密钥交换参数。

  3. 证书验证
    客户端校验证书链(是否由受信任的 CA 签发、是否在有效期内、是否被吊销等),并提取服务器公钥。

  4. 密钥协商

    • TLS 1.2 及以前: 客户端生成预主密钥(pre-master secret),用服务器公钥加密后发送;服务器用私钥解密,两端各自通过随机数和预主密钥计算出对称会话密钥。
    • TLS 1.3: 使用椭圆曲线 Diffie–Hellman(ECDHE)完成密钥交换,双方各自计算共享密钥,无需额外的预主密钥加密步骤。
  5. Finished 消息
    双方使用派生出的对称密钥计算并交换 Finished 报文,确认整个握手过程未被篡改。之后,所有应用数据都在此对称密钥下加密传输。

四、 TLS 关键技术

  1. 对称加密算法

    • 常见: AES-GCM、ChaCha20-Poly1305。
    • 作用: 为大流量数据提供高速加密/解密。
  2. 非对称加密算法

    • 常见: RSA、ECDSA。
    • 用途: 数字签名与证书验证,以及在早期版本中传输预主密钥。
  3. 密钥交换协议

    • TLS 1.2 以前: RSA 或 DHE/ECDHE;
    • TLS 1.3: 仅保留 ECDHE(椭圆曲线 Diffie–Hellman)和 DHE,确保前向安全性(即历史密钥无法因长期密钥泄露而被破解)。
  4. 消息认证码(MAC)与 AEAD

    • TLS 1.2 多使用 HMAC-SHA256;
    • TLS 1.3 强制使用 AEAD 模式(如 AES-GCM、ChaCha20-Poly1305),同时实现加密与完整性验证。
  5. 数字证书与 PKI

    • 服务器(或客户端)通过 X.509 证书链,将自己的公钥与身份绑定;
    • 根证书由受信任的证书颁发机构(CA)签发,构建信任链。

五、TLS 与 HTTPS

        HTTPS = HTTP + TLS
        相较于HTTP,HTTPS 先在客户端和服务器之间建立一个 TLS 加密通道 (第三节TLS 握手流程),然后在这条已经加密好的通道上,按原本的 HTTP 规范 发送请求和接收响应。

六、实践

  1. 仅启用 TLS 1.2+ 或更高版本, 并优先使用 TLS 1.3。

  2. 弃用不安全的算法: 禁用 RC4、MD5、SHA-1、RSA 密钥交换。

  3. 配置强加密套件:TLS_AES_128_GCM_SHA256TLS_CHACHA20_POLY1305_SHA256

  4. 使用证书自动管理工具: 如 Let’s Encrypt + Certbot,实现证书的自动更新与轮换。

  5. 启用 HSTS(HTTP Strict Transport Security): 强制客户端使用 HTTPS,防止降级攻击。

  6. 定期安全扫描与渗透测试, 及时发现并修复配置或实现中的漏洞。

相关文章:

  • 【threejs】每天一个小案例讲解:题外话篇
  • JDK 17 新特性
  • Java常见异常处理指南:IndexOutOfBoundsException与ClassCastException深度解析
  • Linux系统防火墙之iptables
  • LeetCode --- 452周赛
  • 基于FPGA的超声波显示水位距离,通过蓝牙传输水位数据到手机,同时支持RAM存储水位数据,读取数据。
  • Java八股文——并发编程「场景篇」
  • 基于n8n指定网页自动抓取解析入库工作流实战
  • Python学习(7) ----- Python起源
  • 【DAY43】复习日
  • JESD204B IP核接口实例,ADI的ADRV9009板卡,ZYNQ7045驱动实现2发2收。
  • Halo站点全站定时备份并通过邮箱存储备份
  • Polarctf2025夏季赛 web java ez_check
  • 基于51单片机的红外防盗及万年历仿真
  • 机器学习方法实现数独矩阵识别器
  • Redis——主从哨兵配置
  • 基于自适应虚拟谐波阬的光储VSG并网电流谐波抑制模型
  • LLMs 系列科普文(6)
  • 前后端分离开发 和 前端工程化
  • LeetCode--25.k个一组翻转链表
  • b2c网站的开发/发外链比较好的平台
  • 潍坊市网站建设/b站黄页推广
  • 泰安钢管网站建设/凡客建站
  • 国内做交互网站/电商平台怎么推广
  • 上海城市建设大学网站/吉林seo网络推广
  • 鲜花网站建设的项目介绍/搜索电影免费观看播放