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 的传输过程

系列文章目录

如何使用代码来构造HTTP请求?_crazy_xieyi的博客-CSDN博客

HTTP协议中常见的状态码及其含义_crazy_xieyi的博客-CSDN博客

HTTP协议中的“报头”(header)和 “正文“ (body)详解_crazy_xieyi的博客-CSDN博客

GET和POST有什么区别?_crazy_xieyi的博客-CSDN博客

HTTP协议格式、URL格式及URL encode_crazy_xieyi的博客-CSDN博客

Fiddler抓包:下载、安装及使用_crazy_xieyi的博客-CSDN博客


文章目录

  • 前言
  • 一、对称加密
  • 二、非对称加密
  • 三、引入证书
  • 总结HTTPS的传输过程
  • HTTPS传输就一定能够保证安全吗?

前言

HTTPS 也是一个应用层协议 . 是在 HTTP 协议的基础上引入了一个加密层。
因为HTTP 协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。比如:“运营商劫持”。
不止运营商可以劫持 , 其他的 黑客 也可以用类似的手段进行劫持 , 来窃取用户隐私信息 , 或者篡改内容。所以在互联网上明文传输是比较危险的事情!!!那么 HTTPS 就是在 HTTP 的基础上进行了加密 , 进一步的来保证用户的信息安全。

这种前面带了锁头图标的就是https。如果前面显示“不安全”字样就代表是http。?


一、对称加密

对称加密其实就是通过同一个 "密钥 " , 把明文加密成密文 , 并且也能把密文解密成明文。
对称加密里面最关键的就是这个秘钥,客户端和服务器需要先约定好这个秘钥具体是啥。如果是客服端生成了秘钥,那么就需要通过网络去告知服务器这个秘钥是什么。那么就会引入一个问题,因为秘钥本身是在网络上进行明文传输的,那么就容易被黑客获取,一旦被黑客获取了,那么后续的加密也就失去了意义。
其实对于这个问题也是有解决办法的,在很久之前的时候,可以让客户端和服务器同时生成一样的秘钥,比如很久之前去银行开通网银账户的时候,就会送你一个U盾。
但是在今天,这种方式显然已经过时了,那么正确的手段就是对这个对称秘钥也进行加密。接下来就会引入非对称加密对对称秘钥进行加密。

二、非对称加密

非对称加密要用到两个密钥 , 一个叫做 " 公钥 ", 一个叫做 " 私钥 "。一个网站,生成一对公钥和私钥,把公钥给公开出去,自己只保留私钥。
客户端在本地生成对称密钥 , 通过公钥加密 , 发送给服务器。由于中间的网络设备没有私钥, 即使截获了数据 , 也无法还原出内部的原文 , 也就无法获取到对称密钥。服务器通过私钥解密, 还原出客户端发送的对称密钥 . 并且使用这个对称密钥加密给客户端返回的响应数据。后续客户端和服务器的通信都只用对称加密即可。

?那么就会有两个问题:

一:既然都有非对称加密了,为什么还需要使用对称加密?为什么不直接用非对称秘钥进行加密就可以了?
其实使用对称加密,成本是比较低的,因为机器的资源消耗比较少,速度就很快。非对称加密,成本比对称加密高很多,机器资源消耗比较多,速度也就慢了很多。所以对于明文就用对称加密,对对称秘钥再使用非对称加密,这样就高效了很多。
二:如何保证客户端获取的公钥是真实可靠的?而不是黑客伪造的?
其实任何人都可以生成一对公钥和私钥,网站服务器能够生成,当然黑客一样能够生成,其实黑客就可以利用这一点,来一招“狸猫换太子”,这也叫“ 中间人攻击”!

针对这一问题,肯定有反制的办法。通过引入证书,就可以反制黑客伪造公钥这件事了。

客户端和服务器在连接的时候,客户端就不是简单的去索要公钥了,而是直接索要一个“证书”,公钥就包含在这个证书里面。这个证书不是服务器自己生成的,而是第三方机构颁发的,客户端在拿到证书之后,就可以根据证书中所提供的信息,去第三方机构进行认证,来校验证书是否合法!如果证书合法,就可以信任其中的公钥。(服务器开发者在搭建服务器的时候,要去第三方机构进行认证,来申请证书)

三、引入证书

在客户端和服务器刚一建立连接的时候 , 服务器给客户端返回一个 证书。这个证书包含了刚才的公钥, 也包含了网站的身份信息。
当客户端获取到这个证书之后 , 会对证书进行校验 ( 防止证书是伪造的 )。
完整流程:


总结HTTPS的传输过程

HTTPS 工作过程中涉及到的密钥有三组:
第一组 ( 非对称加密 ) : 用于校验证书是否被篡改。
第二组 ( 非对称加密 ): 用于协商生成对称加密的密钥。
第三组 ( 对称加密 ): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密。
其实一切的关键都是围绕这个对称加密的密钥。 其他的机制都是辅助这个密钥工作的。
第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器。
第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥。
HTTPS传输过程总结:
1.客户端先从服务器获取到证书,证书中包含了公钥。
2.客户端对证书进行校验。
3.客户端生成一个对称秘钥,使用公钥对对称秘钥加密并发送给服务器。
4.服务器收到这个请求之后,使用私钥解密,得到对称秘钥。
5.客户端发出后续请求,后续请求都是用对称秘钥加密。
6.服务器收到的数据也是用对称秘钥进行解密。

HTTPS传输就一定能够保证安全吗?

黑客在进行中间人攻击的时候,是可以伪造一个证书的,那么浏览器就会对拿到的证书进行校验,如果校验不通过,浏览器会有错误提示:类似“该网站证书非法,继续访问存在安全风险!”的提示字样。同时浏览器上面还会有一个点击按钮“继续访问”,如果点击了“继续访问”,进入了链接,那么用户的安全就不能得到保证了!

再牛逼的技术也抵不住犯傻的用户啊!!!

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

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