【网络】一文读懂HTTPS协议

【网络】一文读懂HTTPS协议

目录

HTTPS是什么

  • 前面说了HTTP协议,其实HTTPS和他底层是一样的,只是HTTPS在HTTP协议的基础之上加了一个加密层,那么数据就不是明文传输的了,如果使用我们Fiddler这样的抓包工具,抓到了包也不知道我们传输的具体内容是什么了。
  • 为啥要使用HTTPS呢,上面说了本质是对我们传输的数据进行加密,在讲解HTTP协议的时候,我们说了报头里面的一个字段Refer大部分用来记录跳转到广告页面的页面是哪一个,方便广告主统计是那个页面跳转的付给对方应有的报酬, 在互联网早期的时候我们大部分公司使用的都是HTTP协议来明文传输数据,这个时候我们要进行网络传输都要经过运营商的路由器/交换机,这个时候有一些运营商就让路由器解析到应用层拿到HTTP里面的内容把Refer字段进行修改成自己的页面跳转到广告页面,这个时候导致内容被恶意篡改了,那么付给原打广告公司的广告费就到了运营商的钱包里面了

如何解决明文传输导致的危险

  • 解决明文传输的危险就是不再使用明文传输而是对我们传输的数据进行加密。这样我们黑客无法查看并且修改我们的数据,‘

加密操作的几个概念

  • 明文:要传输的真实数据,可以直接读取理解他的意思。
  • 密文:把明文加密后的数据,无法直接读取并且理解意思。
  • 密钥:加密和解密的关键工具。就如同我们的钥匙既能上锁,也可以解锁。
  • 对称加密:加密和解密是用同一个密钥
  • 非对称加密:加密和解密是不同的密钥。两个密钥是成对的,如:k1和k2
    • k1可以用来加密,k2可以用来解密
    • k2也可以用来加密,k1也可以用来解密
两个密钥:一个公开出去叫做公钥,一个不公开出去叫做:私钥。也就是如果一个只能用来加锁另一个只能解锁。

具体加密方式–对称加密

  • 客户端/服务器先通过网络设备传输加密的密钥给对端,让他知道我们后面的加密密钥是用的什么,后续密文传输就可以通过密钥来解密。
在这里插入图片描述

这里看似是安全了后面可以直接用密文传输,但是如果我们黑客把网络设备(这里是路由器)入侵了,通过网络设备抓包到了我们传输的数据那么我们之前明文传输的密钥不就让黑客知道了吗,这个时候黑客也拿到了这个密钥,那么后续传输的密文都可以用这个密钥来解密,这不相当于是没有加密吗?

在这里插入图片描述

具体加密方式–非对称加密

  • 对于上面对称加密方式如果我们黑客入侵了拿到了既能加密又能解密的密钥,黑客就可以为所欲为了,仔细想一想黑客能解密的关键就是这个密钥既可以加密又可以解密而且采用的是明文传输,那么现在非对称加密传输:我们的解密的密钥不再采用加密传输,我们客户端拿到的是公钥用来加密,我们服务器拿到的是私钥用来解密,客户端密文传输对称公钥给服务器告诉他用这个对称密钥进行加密传输,后面服务器说好的,并采用密文响应返回客户端解密的私钥,这个时候我们黑客入侵的网络设备就只知道是非对称加密的公钥是什么,但是不知道解密的私钥是什么,因为我们解密的私钥采用的是密文传输,那么黑客就没办法拿到后续对称密钥加密的密钥了

当客户端收到解密的私钥后,后续直接采用对称加密进行传输,反正黑客入侵的网络设备并不知道对称密钥是什么,只有客户端和服务器知道解密的对称密钥是啥。

在这里插入图片描述
只使用非对称加密进行传输是否可行?
可以但是并不建议,因为我们如果只使用非对称加密进行传输的话,因为我们非对称加密的加密解密成本(消耗的 CPU 资源)远远高于对称加密,所以大规模使用的话会非常消耗CPU资源。
  • 但是非常遗憾的是这样看似安全的加密方式还是有缺陷,我们客户端从哪里获取公钥来加密传输,答案是服务器。那么要从服务器获取公钥,中间一定要靠黑客入侵的网络设备来当中间传输。黑客就有机可乘了。
  • 因为我们客户端需要向服务器索要用来加密的公钥,这个时候一定会经过黑客入侵的网络设备,并且拿到的公钥也是由黑客入侵的网络设备返回的,这个时候客户端并不能判断黑客入侵的网络设备返回的公钥到底是不是服务器返回的。有没有被修改过。

这个时候黑客入侵的网络设备伪装成服务器给客户端pub2公钥,客户端也无法判断他到底是不是服务器的,就直接相信了,之后传输对称公钥就使用pub2公钥进行加密传输, 那么被黑客入侵的网络设备那里就要pri2可以解密pub2密文,这个时候就知道了我们后续传输使用的对称公钥。后续采用对称加密传输的时候就可以直接解密拿到明文数据了。对于这种攻击方式,叫做中间人攻击,服务器和客户端都无法识别对方的身份,直接无条件信任导致被欺骗

在这里插入图片描述
在这里插入图片描述

具体加密方式–引入证书

  • 导致我们非对称加密失败的原因主要就是我们服务器和客户端无条件信任了被黑客入侵的网络设备传输的数据,找到了问题所在,我们就需要对现在的问题给出解决方案:对我们被黑客入侵的网络设备传输的公钥进行验证真假。就像我们验证一个人的身份需要出把身份证刷公安系统,验证身份证的真假
  • 什么是证书: 证书就是一个结构化的字符串,由公证机构来颁发。

这个时候我们客户端不再直接向服务器索要公钥,而是问证书,如果黑客依旧故技重施把证书的数据(比如公钥)修改了,>我们客户端哪里会用公证机构的pub3解密数字签名拿到校验和,采用同样的计算方式来把证书的字段算出一个校验和(来比对证书里面校验和,如果不一致,那么客户端拒绝传输后面的数据。

在这里插入图片描述

证书又是如何来验证数据的呢?通过计算证书的字段得出检验和,然后用我们公证机构的pri3私钥进行加密就得到了数字签名

在这里插入图片描述
还有问题:
1.黑客是否可以把数字签名修改了来欺骗客户端呢,答案是不行的,因为黑客只有pub3只有解密数字签名,没有用来加密的pri3就不能生成数字签名(除非把公证机构黑了拿到pri3,但几乎不可能也没必要)
2.那么我们黑客是否可以再故技重施对公证机构申请一个证书,然后把公证机构的证书换掉,进行中间人攻击呢?还是不行的,证书中还需要包含服务器的域名,域名是唯一的,黑客申请的证书的域名,和原服务器的域名肯定是不同的。
客户端拿到证书之后,一看域名都不一样,直接就知道证书是假的了,都不用进行校验和验证了

当然,上述的过程,所谓的安全,也不是绝对的安全。上述的安全本质上都是基于非对称加密体系。非对称加密体系也不是无懈可击的,只不过破解这样的加密体系,需要的计算量非常大,超出了现有计算机的算力上限。

随着算力的提升,尤其是量子计算机崛起,我们的算力又会大幅度提升,对现有的密码学体系就会造成重大冲击
g.ZEEKLOG.net/Yeeear/article/details/142438540

Read more

Flutter 组件 chopper_built_value 适配鸿蒙 HarmonyOS 实战:强类型网络层架构,构建不可变模型与高性能序列化闭环

Flutter 组件 chopper_built_value 适配鸿蒙 HarmonyOS 实战:强类型网络层架构,构建不可变模型与高性能序列化闭环

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 chopper_built_value 适配鸿蒙 HarmonyOS 实战:强类型网络层架构,构建不可变模型与高性能序列化闭环 前言 在鸿蒙(OpenHarmony)生态迈向大规模企业级应用、涉及高频网络数据交互、复杂业务模型及严苛运行时稳定性的背景下,如何确保网络请求返回的数据在进入 UI 层前具备绝对的类型安全,已成为衡量应用架构“护城河”深度的核心标准。在鸿蒙设备这类强调 AOT 极致性能与低容错率的环境下,如果应用依然依赖动态类型的 Map<String, dynamic> 进行数据传递,由于由于后端字段变更或类型溢出,极易由于由于运行时强转失败导致应用在关键业务路径上的红屏崩溃。 我们需要一种能够实现自动化代码生成、支持不可变(Immutable)模型且具备拦截器解耦能力的序列化粘合层。 chopper_built_value 为 Flutter 开发者引入了将 Chopper

By Ne0inhk
基于 Rust 与 DeepSeek 大模型的智能 API Mock 生成器构建实录:从环境搭建到架构解析

基于 Rust 与 DeepSeek 大模型的智能 API Mock 生成器构建实录:从环境搭建到架构解析

前言 在现代软件工程中,API 接口的开发与前端联调往往存在时间差。为了解耦前后端开发进度,Mock 数据(模拟数据)的生成显得尤为关键。传统的 Mock 数据生成依赖于静态 JSON 文件或简单的规则引擎,难以覆盖复杂的业务逻辑与语义关联。随着大语言模型(LLM)的兴起,利用 AI 根据 Schema 定义动态生成高保真的模拟数据成为可能。本文详细记录了使用 Rust 语言结合 DeepSeek-V3.2 模型构建智能 Mock 生成器的完整技术路径,涵盖操作系统层面的环境准备、Rust 工具链的深度配置、代码层面的异步架构设计以及编译期的版本兼容性处理。 第一部分:Linux 系统底层的构建环境初始化 Rust 语言的编译与链接过程高度依赖于底层的系统工具链。Rust 编译器 rustc 在生成二进制文件时,需要调用链接器(Linker)将编译后的对象文件(Object Files)与系统库(

By Ne0inhk
Flutter for OpenHarmony 实战:Flutter Rust Bridge — 极致计算性能方案

Flutter for OpenHarmony 实战:Flutter Rust Bridge — 极致计算性能方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter for OpenHarmony 实战:Flutter Rust Bridge — 极致计算性能方案 前言 在 Flutter for OpenHarmony 的高性能应用场景中(如:超大数据量加密、实时音视频处理、复杂物理模拟),Dart 的性能虽然出色,但在面对 CPU 密集型任务时,往往需要更底层的语言辅助。 Rust 凭借其内存安全与极致性能,成为了移动端计算的“无冕之王”。而 Flutter Rust Bridge (FRB) 则是将 Dart 与 Rust 缝合在一起的顶尖架构。它能自动生成繁琐的 FFI 胶水代码,并支持异步、流式传输以及复杂的对象映射。本文将带你在鸿蒙系统上构建一套“双擎驱动”

By Ne0inhk

【Node.js 安装报错解决方案:解决“A later version of Node.js is already installed”问题】

Node.js 安装报错解决方案:解决“A later version of Node.js is already installed”问题 问题现象 当你在 Windows 系统上尝试安装 Node.js 时,可能会遇到以下错误提示: A later version of Node.js is already installed. Setup will now exit. 这个错误通常发生在已经安装了较新版本的 Node.js,而又尝试安装较旧版本时出现。 问题分析 为什么会发生这个错误? 1. 版本冲突:系统检测到已安装的 Node.js 版本比你要安装的版本更新 2. 安装程序限制:Node.

By Ne0inhk