IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTPS的加密过程 -> 正文阅读

[网络协议]HTTPS的加密过程

HTTPS是HTTP的孪生兄弟,HTTPS在HTTP的基础上,引入了一个加密层。

为什么要引入这个加密呢?

因为当年存在着臭名昭著的“运营商劫持”。

正常的下载情况:

被运营商劫持了的下载情况:

被劫持后这里下载了某Q浏览器,为什么呢?原因一目了然。

所以,为了避免这个问题,就引入了HTTPS,用来对传输数据加密。

对于加密,这里解释三个名词:

  • 明文:要传输的原始信息
  • 密文:原始信息背后的秘密,要密钥才能解开
  • 密钥:解开明文背后密文的钥匙

接下来,我们简单模拟一下加密的实现过程。


HTTPS中引入的加密层,称为SSL,或者最新也叫TLS

在其中,涉及的加密操作,主要是两种方式:

  1. 对称加密
  2. 非对称加密

对称加密就是客户端和服务器都使用同一个密钥,这个密钥既能加密,也能解密。

在网络上传输的是密文,服务器收到密文后,需要用密钥解开。

但是如何保证客户端和服务器持有同一个密钥呢?尤其是一个服务器对应了很多客户端的时候。

这时就需要每个客户端都有一个不同的密钥,否则黑客很简单就能获取公共密钥。? ?

所以这里就需要客户端主动生成密钥给服务器,或者服务器生成密钥告诉客户端。

反正这个密钥会在网络上传输,如下:?

既然密钥都在网络上传输了,那么黑客又很简单获取了。

所以想要传密钥,还需要对密钥进行加密。


如何对密钥加密呢?这里就需要引入非对称加密。

非对称加密有两个密钥,分别叫做公钥和私钥。

公钥,人人都能看见,用来加密。私钥,只有自己才知道,用来解密。

比如小区里的信箱,快递小哥有个锁头,你有这个信箱的钥匙。

锁头能把信塞进信箱,只有你才能用钥匙打开信箱。????????

在这里客户端和黑客都有公钥,只有服务器有私钥。

客户端可以用这个公钥,给密钥加密。这样黑客拿到密钥也没有私钥解密。


上述操作看似完美,但是任有缺陷,叫做“中间人攻击”。

首先,客户端会问服务器公钥是啥。

服务器会返回一个公钥。

在这个返回的途中,黑客可以自己生成一个公钥和私钥。

于是,黑客将自己的公钥返回给客户端,客户端拿这个公钥加密密钥后要传输出去。

黑客拿到后,就可以用自己的私钥来解密,于是拿到了密钥。

为了伪装,再用之前服务器的公钥给密钥加密,再给服务器。

服务器就不知道发生了啥,却“正常”地收到了看似没问题地密钥。

上述过程就是“中间人攻击”。


为了解决这个问题,关键就在于客户端要知道这个公钥是服务器的,不是伪造的。

于是就出现了第三方的公信机构,由他们给服务器一个独一无二的证书。

这样服务器传送公钥的时候,会一起把这个证书传给客户端。客户端看到证书才会加密。

黑客虽说也能仿造证书,但是证书也有认证机制,客户端也可以向公信机构求证。

有的客户端内部还自带公信机构的信息,这样就能进行本地认证,更加快速。

? ??

感谢你能看到这ヽ( ̄ω ̄( ̄ω ̄〃)ゝ

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 18:32:39  更:2022-05-24 18:32:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 9:32:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码