Linux网络的HTTPS

目录

1、HTTPS加密的相关概念

[1.1 加密的概念](#1.1 加密的概念)

[1.2 加密的原因](#1.2 加密的原因)

[1.3 加密的常见方式](#1.3 加密的常见方式)

[1.3.1 对称加密](#1.3.1 对称加密)

[1.3.2 非对称加密](#1.3.2 非对称加密)

[1.4 数据摘要 && 数据指纹](#1.4 数据摘要 && 数据指纹)

[1.5 数字签名](#1.5 数字签名)

2、HTTPS的加密过程的探究

[2.1 一个对称加密](#2.1 一个对称加密)

[2.2 一个非对称加密](#2.2 一个非对称加密)

[2.3 两个非对称加密](#2.3 两个非对称加密)

[2.4 一个非对称加密+一个对称加密](#2.4 一个非对称加密+一个对称加密)

[2.5 中间人攻击](#2.5 中间人攻击)

[2.5.1 破解两个非对称密钥](#2.5.1 破解两个非对称密钥)

[2.5.2 破解一个非对称密钥+一个对称密钥](#2.5.2 破解一个非对称密钥+一个对称密钥)

[2.6 一个证书认证+一个非对称加密+一个对称加密](#2.6 一个证书认证+一个非对称加密+一个对称加密)

[2.6.1 CA证书](#2.6.1 CA证书)

[2.6.2 具体流程](#2.6.2 具体流程)

[2.7 HTTPS的握手流程](#2.7 HTTPS的握手流程)


1、HTTPS加密的相关概念

1.1 加密的概念

  • 明文 :指未经过加密处理原始数据
  • 密文 :指明文经过加密 算法处理后得到的不可直接读取乱码数据
  • 密钥 :指用于加密或解密 的 "钥匙 ",是一串特定的字符串数字
  • HTTPS也是一个应用层协议 ,是在HTTP协议的基础上引入了一个加密层

1.2 加密的原因

  • 因为HTTP的内容是明文传输 的,明文数据会经过 路由器、WIFI热点、通信服务运营商、代理服务器等多个物理节点 ,如果信息在传输过程中被劫持传输的内容就完全暴露了 ,这就是中间人攻击 ,所以我们需要对信息进行加密

1.3 加密的常见方式

1.3.1 对称加密
  • 对称加密(Symmetric Encryption)
  • 核心特点:加密解密 使用同一把密钥 (称为 "对称密钥"),就像用同一把钥匙锁门和开门。
  • 优点
    • 加密解密速度极,适合处理大量数据(如文件、视频)。
  • 缺点
    • 密钥需要在通信双方之间提前传递,一旦密钥泄露加密就会失效(密钥分发是难题)。
1.3.2 非对称加密
  • 非对称加密(Asymmetric Encryption)
  • 公钥 :可以公开给任何人,用于加密数据或验证签名。
  • 私钥 :必须严格保密,用于解密公钥加密的数据,或生成签名。
  • (规则:公钥加密 的数据只能对应的唯一私钥解密私钥加密 的数据只能对应的公钥解密
  • 优点
    • 无需传递私钥只需公开公钥解决 了对称加密的密钥分发问题
  • 缺点
    • 加密解密速度,不适合处理大量数据。

1.4 数据摘要 && 数据指纹

  • 数据摘要(Data Digest):是一个更宽泛的概念,指通过哈希算法 (如 MD5、SHA-1、SHA-256)对原始数据进行计算 后,得到的一段固定长度唯一字符串
    • 它的核心作用是验证数据的完整性,即判断数据是否被篡改。只要原始数据有任何微小变化,其生成的摘要都会完全不同。
  • 数据指纹(Data Fingerprint):是数据摘要的一种实际应用场景,特指将数据摘要用于标识数据唯一性的情况
  • 以下用的是数据摘要判断数据是否被篡改

1.5 数字签名

  • 数据摘要经过加密 就是数字签名

2、HTTPS的加密过程的探究

2.1 一个对称加密

  • Client直接发送对称密钥X中间人就知道对称密钥X了对称密钥X就泄露了
  • 首次无法同步对称密钥X整体 不安全

2.2 一个非对称加密

  • Client公钥XServer私钥X'自己留着
  • Server->Client
    • Server公钥X加密只有Client 持有的对应唯一私钥X' 能解密,所以Server->Client看起来安全
  • Client->Server
    • Client私钥X'加密持有对应公钥X中间人能解密 ,所以不安全
  • 整体 不安全
  • 注意:Client自己也应该有公钥X,不过
    • 这个公钥加密,只有私钥能解密,但是只有自己有私钥,自己加密,最后自己解密?
    • 这个公钥解密,那么私钥就是加密,但是只有自己有私钥,自己先加密,最后自己解密?
  • 所以,非对称加密的密钥 使用逻辑是 "单向配对 ":一般是给别人公钥别人 来进行加密自己私钥解密

2.3 两个非对称加密

  • 双方都有公钥和私钥

  • 公钥给对方对方公钥加密 ,只有另一方唯一私钥 能够解密

  • 整体 看起来安全 ,但是

2.4 一个非对称加密+一个对称加密

  • Server公钥 ZClientClient公钥 Z对称密钥 X加密为YYY(密文数据 ),发送给ServerServer对应的唯一的私钥 Z'YYY,解密为对称密钥X
  • 此后,双方用对称密钥X ,进行加密解密
  • 整体看起来安全 ,且效率不错

2.5 中间人攻击

  • 讨论了这么多,目前只有第三种 (两个非对称加密 ),第四种 (一个非对称加密+一个对称加密 ),整体看起来安全。其实不安全中间人搞一套自己的公钥和私钥 就能破解
2.5.1 破解两个非对称密钥
  • 对于两个非对称加密:

  • Client 发送自己的公钥X ,中间人将公钥X 换成自己的公钥M ,将公钥M 发给ServerServer中间人的公钥M加密 ,发送加密的数据,中间人 使用对应的唯一的私钥M'解密知道了明文信息明文信息用公钥X加密 ,发送给ClientClient私钥X'解密

  • 另一方向类似。

  • 这样,在双方都不知道的情况下中间人就破解了信息

2.5.2 破解一个非对称密钥+一个对称密钥
  • 对于一个非对称加密+一个对称加密:

  • Server 发送自己的公钥Z ,中间人将公钥Z 换成自己的公钥M ,将公钥M 发给ClientClient中间人的公钥M对对称密钥X加密 ,发送加密的数据AAA中间人 使用对应的唯一的私钥M'解密知道了对称密钥X对称密钥X用公钥Z加密BBB,发送给ServerServer私钥Z'解密对称密钥X

  • 此后,并且是在双方都不知道的情况下中间人知道了对称密钥双方使用对称密钥 进行加密解密无效了。

2.6 一个证书认证+一个非对称加密+一个对称加密

  • 上面的方法四(一个非对称加密+一个对称加密 ),效率不错关键对方无法知道,传过来的公钥是否被中间人篡改,但是只要公钥给出去就只有对应的唯一的私钥能够解密了后续使用对称密钥加密就安全了
2.6.1 CA证书
  • 数字签名CA机构 ,将这些信息形成数据摘要 ,再用自己的私钥 对这数据摘要 进行加密 ,形成数字签名
  • 客户端内置全球公认CA 根证书 (包含 CA 的公钥、数据摘要的hash算法)。
2.6.2 具体流程
  • Client 第一次发起请求时,Server 返回一个CA证书
    • 场景1:中间人只篡改CA公钥:
      中间人将CA机构的公钥篡改为自己的公钥
      ,那么ClientCA机构的公钥证书中的数字签名解密将得到数据摘要和重新形成的数据摘要 ,相比,对不上Client发现公钥被篡改
    • 场景2:中间人想同时篡改公钥和数字签名:
      中间人将CA机构的公钥篡改为自己的公钥 +将证书中的数字签名用CA机构的公钥解密形成新的数据摘要再加密 ,等等?中间人没有****CA 机构的私钥,只能用自己的私钥机密,但是Client只认CA机构的公钥 ,发现用CA机构公钥解密解不了
  • Server自己的公钥 Z****成功 发给Client 后,Client公钥 Z对称密钥 X加密为AAA(密文数据 ),发送给ServerServer对应的唯一的私钥 Z'AAA,解密为对称密钥X
  • 此后,双方用对称密钥X ,进行加密解密
  • 整体安全 ,且效率不错
  • 注意:
    • 为什么数据摘要用CA机构的私钥加密数字签名 ?因为,中间人没有CA机构的私钥不能使用CA机构的密钥再加密 ,而Client只认CA机构的公钥
    • 为什么要用数据摘要 ?因为数据摘要短加密解密快方便验证信息是否被修改
    • 那么中间人能不能自己也搞一套CA证书 ?客户端根本不会 信任"服务器发过来的 CA 公钥",它只认自己操作系统/浏览器里预装的那一批根 CA 公钥

2.7 HTTPS的握手流程

相关推荐
我爱钱因此会努力4 小时前
ansible自动化运维入门篇
linux·运维·服务器·centos·自动化·ansible
---学无止境---5 小时前
Linux中系统调用sys_symlink和sys_unlink函数的实现
linux
代码程序猿RIP5 小时前
【Etcd 】Etcd 详解以及安装教程
linux·数据库·etcd
tb_first5 小时前
Linux入门1(2/2)
linux
cellurw6 小时前
Day72 传感器分类、关键参数、工作原理与Linux驱动开发(GPIO/I²C/Platform/Misc框架)
linux·c语言·驱动开发
NextZeros6 小时前
基于CentOS安装LNMP
linux·centos
梁萌6 小时前
Linux安装mysql8.4.6
linux·运维·mysql安装·8.4.6
gtr20206 小时前
Ubuntu24.04 无法读取 U盘
linux
南棱笑笑生6 小时前
20251028在Ubuntu20.04.6上编译AIO-3576Q38开发板的Buildroot系统
大数据·linux·服务器·rockchip