[网络]https的概念及加密过程

embedded/2024/9/23 18:35:07/

文章目录

  • 一. HTTPS
  • 二. https加密过程

一. HTTPS

https本质上就是http的基础上增加了一个加密层, 抛开加密之后, 剩下的就是个http是一样的
s => SSL
HTTPS = HTTP + SSL
这个过程, 涉及到密码学的几个核心概念

  1. 明文
    要传输的真正意思是啥
    2)密文
    加密之后得到的数据
    这个密文, 即使被拿到了, 也不知道真正的含义
  2. 密钥
    用来加密和解密的重要的数据

把明文 通过密钥 变成密文 => 加密
把密文 通过密钥 变成明文 => 解密
5) 对称加密
加密和解密, 使用同一个密钥就行了
加密解密的速度比较快
6) 非对称加密
密钥是一对, 分别是公钥和私钥
可以使用公钥加密, 此时就是私钥解密
或者使用私钥加密, 此时就是公钥解密
加密的素的比较慢, 安全性更高

https_25">二. https加密过程

  1. 引入对称加密
    首先, 最简单的办法,就是引入对称密钥
    客户端和服务器之间通过密文传输, 然后根据密钥进行破解
    这个密钥, 必须是每个客户端都有一个自己的
    如果每个客户端都是相同的, 那么如果别人拿到这个密钥就可以破解了
    可是, 当客户端告诉服务器密钥时, 可能被黑客截取:
    https://i-blog.csdnimg.cn/direct/0ba5f686d7544dfbac299215f2f9da4c.png" alt="在这里插入图片描述" />
    所以, 我们必须给密钥再进行加密
  2. 引入非对称加密
    非对称加密的方式, 针对对称密钥来进行加密

为什么不针对数据加密使用非对称密钥?
非对称加密的系统开销比对称加密高很多, 消耗的时间, 也比对称加密多很多, 所以不太适合使用非对称加密的方式来加密业务数据
https://i-blog.csdnimg.cn/direct/aa72bac681414106a50a77e2401c2888.png" alt="在这里插入图片描述" />

客⼾端在本地⽣成对称密钥, 通过公钥加密, 发送给服务器.
• 由于中间的⽹络设备没有私钥, 即使截获了数据, 也⽆法还原出内部的原⽂, 也就⽆法获取到对称密

• 服务器通过私钥解密, 还原出客户端发送的对称密钥. 并且使⽤这个对称密钥加密给客⼾端返回的响
应数据.
• 后续客户端和服务器的通信都只⽤对称加密即可. 由于该密钥只有客户端和服务器两个主机知道, 其
他主机/设备不知道密钥即使截获数据也没有意义

但是, 客户端怎么拿到公钥呢?

  1. 中间人攻击
    如果使用服务器告知客户端公钥的方法, 同样会被黑客截获数据
    https://i-blog.csdnimg.cn/direct/35885b72f25943638d96a55d41cbbf78.png" alt="在这里插入图片描述" />
  2. 引入公证机构
    解决上述问题, 最重要切入点, 就是让客户端能够区分当前的公钥是不是服务器自己的公钥, 是不是被伪造出来的公钥, 所以引入了公证机构

服务器上线自己的网站时, 会向公证机构申请"证书", 服务器需要保存好这个证书
这个证书中会包含一系列消息:
1)发证机构
2)证书的有效期
3)服务器的公钥
4)证书的所有者
5)持有者网站的的主域名
6)数字签名
公正机构, 会生成一对非对称密钥, 分为公钥和私钥, 拿着私钥对证书中的一系列数据的校验和进行加密, 就得到了数字签名

客户端收到证书后, 就会对证书的合法性就行校验:
第一步: 针对证书的字段, 计算校验和1

第二步: 针对数字签名进行解密
数字签名是基于公正机构的私钥来加密的
就需要用公正机构的公钥进行解密
公证机构的公钥, 是操作系统内置的公钥!!!
解密后, 得到校验和2

第三步: 客户端比较 校验和1 == 校验和2
如果相等, 就说明, 证书没有被篡改过, 是有效的, 那么证书中的公钥, 就是可信的服务器公钥了
https://i-blog.csdnimg.cn/direct/e0849b583862449a9d21a0a707768bb3.png" alt="在这里插入图片描述" />


http://www.ppmy.cn/embedded/112841.html

相关文章

C语言编译原理

目录 一、C语言的编译过程 二、预处理 三、编译阶段 3.1 词法分析(Lexical Analysis) 3.2 语法分析(Syntax Analysis) 语法分析的主要步骤: 语法分析的关键技术: 构建AST: 符号表的维护…

【学习笔记】SSL密码套件之哈希

本篇将介绍TLS/SSL密码套件中常用的哈希算法,包括Poly1305、SHA384、SHA256、SHA、MD5 以上的哈希算法将作为 MAC 使用 MAC - Message Authentication Code 为批量数据提供了完整性(Integrity)以及真实性(Authentication&#xf…

Unity3D 小案例 像素贪吃蛇 02 蛇的觅食

Unity3D 小案例 像素贪吃蛇 第二期 蛇的觅食 像素贪吃蛇 食物生成 在场景中创建一个 2D 正方形,调整颜色,添加 Tag 并修改为 Food。 然后拖拽到 Assets 文件夹中变成预制体。 创建食物管理器 FoodManager.cs,添加单例,可以设置…

LineageOS源码下载和编译(Xiaomi Mi 6X,wayne)

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 源码下载 LineageOS官网:https://lineageos.org/ LineageOS源码 github 地址:https://github.com/LineageOS/android LineageOS源码…

opencv anaconda yolov5安装流程

目录 1. opencv-4.72. anaconda的配置2.1 配置环境变量2.2 配置anaconda源2.3 常用的命令 3. Yolov5环境的安装 1. opencv-4.7 下载opencv-4.7的安装包 https://opencv.org/releases/ 安装最新的cmake sudo apt-get update sudo apt-get upgrade sudo apt install cmake安装o…

DisplayManagerService启动及主屏添加-Android13

// 以下代码是模拟DisplayManagerService在Android 13中启动并添加主屏的过程。 // 注意:这只是一个简化的代码示例,实际的系统服务可能包含复杂的逻辑和错误处理。 import android.hardware.display.DisplayManagerGlobal; import android.view.Displ…

学习笔记 韩顺平 零基础30天学会Java(2024.9.15)

P557 泛型应用实例 P558 泛型使用细节1 P560 泛型使用细节2 P560 泛型课堂练习 代码见Exceise P561 自定义泛型类 对于第二点,因为不知道类型,所以不知道开辟多少空间,因此不能初始化 第三点,静态方法与类相关的,在类…

【我的 PWN 学习手札】Fastbin Double Free

前言 Fastbin的Double Free实际上还是利用其特性产生UAF的效果,使得可以进行Fastbin Attack 一、Double Free double free,顾名思义,free两次。对于fastbin这种单链表的组织结构,会形成这样一个效果: 如果我们mallo…