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是如何加密的,是对称加密还是非对称加密?估计被问到,脑子都是无法直接反应,看完这篇博客再碰到这个问题,面试官直接给你发offer。

? ? ? ? 要想搞清这个问题,让我们先了解对称加密和非对称加密。

? ? ? ? 对称加密:加密使用的密钥和解密使用的密钥是同一个密钥

? ? ? ? E(p,k1) = c? ????????D(c,k2) = p? ? ? ? k1 == k2

? ? ? ? 对称加密的加密和解密的性能更好,核心的破绽是密钥传输的安全性

? ? ? ? 非对称加密:加密和解密使用不同的密钥

? ? ? ? E(p,k1) = c? ? ? ? D(c,k2) = p? ? ? ? k1 != k2

? ? ? ? 非对称加密的密钥成对出现,称为密钥对(key pair),其中一个密钥是”自己“保留的,只有一份,称为私钥(private key);另一份密钥可以公开出去,称为公钥(public key)。

? ? ? ? E(p,private key) = c? ? ? ? D(c,public key) = p

? ? ? ? 意味着”我“可以通过私钥加密数据,给任何拥有公钥的人,那么这些拥有公钥的人,可以通过手中的看懂”我“发出去的内容——但公钥的每个人都可以拿到,这种的加密还有什么意义?

? ? ? ? 意义在于防止伪造:因为只要可以通过公钥进行解密,说明这份消息一定是被于和公钥相对的私钥加密发送的。而私钥只有我有,说明这份消息一定是我发的,不是别人发的,类似于印章制度

? ? ? ? E(p,public key) = c? ? ? ? D(c,private) = p

? ? ? ? 意味着谁都可以向我发送消息,通过公钥进行加密,但是只有我有私钥,只有我能看懂。

? ? ? ? 非对称加密加密和解密的性能较差

下面来看看HTTPS的加密过程

????????

总结:对称加密主要用于真正的数据传输,非对称加密,主要为对称加密,解决对称加密的密钥传输的安全问题。

再来想一想中间还可能什么问题

中间人劫持问题

?如果出现这种情况,数据的传输就如同明文传输,中间人完全可见。

这种问题,我们通过证书(CA)机制来解决

CA(Certification Authority)证书当局——类比现实生活中的公证处

由公证处给服务器颁发一个证书(类比营业执照,写明了服务器是谁,提供什么服务,公证处的签名),服务器的公钥存放在证书中,客户端收到的不仅仅是一个公钥本身,而是一套围绕着公钥建立的证明体系。

在这里引入一个知识:

????????消息摘要技术:目的是防止数据本身被篡改。广义上是哈希技术的一部分

? ? ? ? 原始数据-->Hash(原始数据)-->摘要(哈希值),如果无意中,原始数据被改了,摘要就会发生改变,接收方验证摘要的正确性:Hash(原始数据)-->摘要,如果和发送方的摘要不同,就可以认为数据不是原始数据,被人篡改过。

消息摘要VS加解密技术

? ? ? ? 加解密是可逆的。? ? ? ? 明文-->密文-->明文

? ? ? ? 消息摘要是不可逆的。? ? ? ? 明文-->摘要? ? ?

再回到CA和签名流程中来

开始,服务器要找CA为它颁发证书,服务器需要提供自己的信息,

CA制作证书,证书中包括域名为主的一系列信息,CA为服务器生成的密钥对中的公钥,然后为上述信息做为数据消息摘要的原始数据,使用CA的私钥对数据进行加密,生成证书和服务器的密钥对。

总结一下HTTPS的加密过程

? ? ? ? 当客户端发起请求时,服务器把证书直接给到客户端

? ? ? ? 客户端有CA机构的公钥,通过CA机构的公钥对证书进行解密

? ? ? ? 客户端能解开,说明证书肯定是CA颁发,然后通过消息摘要算法,域名为主的信息+公钥信息生成新的摘要,和证书中的老摘要进行对比二次验证。

? ? ? ? 最终拿到了服务器的公钥,按生成对称加密的密钥,通过服务器的公钥进行加密,传递给服务器。

? ? ? ? 服务通过自己私钥进行解密,得到对称解密密钥

? ? ? ? 双方使用对称加密,进行请求/响应的传输

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 21:14:47  更:2022-10-08 21:16:41 
 
开发: 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 8:19:40-

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