• 【计算机网络知识】TLS/SSL的工作原理和HTTPS的优缺点


    前言

    本系列主要整理计算机网络知识。本节介绍TLS/SSL的工作原理和HTTPS的优缺点。


    一、TLS/SSL是什么

    • TLS/SSL全称安全传输层协议,是介于TCP和HTTP之间的一层安全协议;
    • SSL 是 TLS的前身,现在绝大多数浏览器都不支持SSL,而是支持TLS;
    • HTTPS经由HTTP进行通信,利用SSL/TLS来加密数据包。HTTPS的主要目的是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
      • HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险;
      • TLS/SSL具有身份验证、信息加密和完整性校验的功能,可以避免上述问题。

    二、几种加密算法

    • 散列函数hash:常见的散列函数有MD5、SHA1、SHA256。该函数的特点是单向不可逆,对输入数据非常敏感,输出的长度固定,任何数据的修改都会改变散列函数的结果,可以用于防止信息篡改并验证数据的完整性;

    • 对称加密:双方使用同一个密钥对数据进行加密和解密。但是对称加密存在一个问题,就是如何保证密钥传输的安全性,因为密钥还是会通过网络传输的,一旦密钥被其他人获取到,那么整个加密过程就毫无作用了。
      在这里插入图片描述

    • 非对称加密:拥有两个密钥,一个公钥,一个私钥。公钥是公开的,私钥是保密的,用私钥加密的数据,只有对应的公钥才能解密。我们可以将公钥公布出去,任何想和我们通信的客户, 都可以使用我们提供的公钥对数据进行加密,这样我们就可以使用私钥进行解密,这样就能保证数据的安全了。但是非对称加密有一个缺点就是加密的过程很慢,因此如果每次通信都使用非对称加密的方式的话,反而会造成等待时间过长的问题。

    举个容易理解的例子:小青和小红是好朋友,经常会说一些悄悄话,但是小黑看不过去,就想知道他们说的是什么,所以就开始偷听。小青有一个私有的颜色,是青色,全世界只有他有,同样,小红也有一种红色,也只有他有,他们约定,都要结合黄色,所以小黑就听到了黄色。
    在这里插入图片描述
    然后小青用青色和黄色混在一起,得到绿色,小红用红色和黄色混在一起,得到了橙色,然后,他们把各自混合的新颜色给了对方。此时,小黑又知道了他们交换了什么颜色,所以,小黑又有了绿色和橙色。在这里插入图片描述
    此时,神奇的地方来了,小青把得到的橙色和独有的青色混合成了棕黄色,小红把得到的绿色和独有的红色混合也成了棕黄色。那此时,棕黄色就是他们之间的密钥了,而这个密钥是小黑不知道怎么弄出来的,最后这个密钥只有小红和小青知道。在这里插入图片描述

    三、证书

    • 虽然现在我们确保了消息的正确性,但是还不能确定和我们沟通的对象是否是我们想要的对象;
    • 在这个时候需要一个安全的第三方颁发证书(CA),证明身份的身份,防止被中间人攻击。证书中包括:签发者、证书用途、使用者公钥、使用者的HASH算法、证书到期时间等。
    • 如果中间人篡改了证书,那么身份证明是否就无效了?这个时候需要一个新的技术,数字签名。
    • 数字签名就是用CA自带的HASH算法对证书的内容进行HASH得到一个摘要,再用CA的私钥进行加密,最终组成数字签名。当别人把他的证书发过来的时候,再用同样的Hash算法,再次生成消息摘要,然后用CA的公钥对数字签名解密,得到CA创建的消息摘要,两者一比,就知道中间有没有被人篡改了。这个时候就能保证通信的安全了。

    四、TLS/SSL的工作原理

    在这里插入图片描述

    (1)首先由客户端向服务器发送使用的协议的版本号、一个随机数和可以使用的加密方法。

    (2)服务器端收到后,确认加密的方法,也向客户端发送一个随机数和自己的数字证书。

    (3)客户端收到后,首先检查数字证书是否有效,如果有效则再生成一个随机数,并使用证书中的公钥对随机数加密,然后发送给服务器,并且还会提供一个前端所有内容的hash值供服务器端检验。

    (4)服务器端接收后,使用自己的私钥对数据解密,同时向客户端发送一个前面所有内容的hash值供客户端检验。

    (5)这时候双方都有了三个随机数,按照之前所约定的加密方法,使用这三个随机数生成一把密钥,以后双方通信前,就使用这个密钥对数据进行加密后再传输。

    五、总结HTTPS的优缺点

    • 优点:
      • 使用HTTPS协议可以认证用户和服务器,确保数据发送到正确的客户端和服务器;
      • 使用HTTPS协议可以进行加密传输、身份认证,通信更加安全,防止数据在传输过程中被窃取、修改,确保数据安全性;
      • HTTPS是现行架构下最安全的解决方案,虽然不是绝对的安全,但是大幅增加了中间人攻击的成本;
    • 缺点:
      • HTTPS需要做服务器和客户端双方加密和解密处理,耗费更多服务器资源,过程复杂;
      • HTTPS协议握手阶段比较费时,增加页面的加载时间;
      • SSL证书是收费的,功能约强大证书费用越高;
      • HTTPS连接服务器端资源占用高很多,支持访客稍多的网站需要投入更大的成本;
      • SSL证书需要绑定IP,不能在同一个IP上绑定多个域名。
  • 相关阅读:
    面向对象设计原则之接口隔离原则
    嵌入式开发学习之--创建工程
    java基于安卓Android/微信小程序的的高校科研团队管理系统uniapp
    【附源码】计算机毕业设计java招聘信息管理平台设计与实现
    132-142-Hadoop-Yarn-常用命令生产环境等配置
    Kafka与RabbitMQ:架构、性能和用例
    LeetCode中等题之查找和替换模式
    Redis笔记--手写版
    日志监控系统 loki 配置文件详解
    Poetry:Python依赖管理和打包工具【最好用的Python虚拟环境Poetry】【Poetry、conda、vscode混合使用】
  • 原文地址:https://blog.csdn.net/weixin_44337386/article/details/125880429