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安全的理解,重点在于为什么和解决方式,具体的术语可能不太规范。

非对称加密

HTTP1最开始的目的就是传输文本信息,没有考虑到安全性。局域网中的任何计算机可以监听另一台计算机的数据包,这样传输的账号密码也就会被看到,非常不安全。
很容易想到,需要对数据进行加密。

对称加密

对称加密,加密和解密是使用同一个密钥。也就是说客户端和服务端发送密文之前,必须要由某一方发送一个密钥,另一方拿到密钥后,才能进行加密。
这种方式的漏洞在于,监听者同样可以监听到密钥交换的报文,这样监听者只需要拿到密文后用密钥解密一下,就可以得到原文,无法保护信息安全。

非对称加密

这个时候非对称加密的优势就体现出来了。非对称加密中加密和解密使用的密钥是不同的。客户端和服务端发送密文前,由服务端发送用于加密的密钥给客户端,客户端用加密密钥对原文进行加密后,将密文发送回去,服务端收到之后用解密密钥解密得到原文。
通过这种方式交换对称加密的密钥,避免监听者得到后续通信使用的密钥,就可以保证信息只有通信双方才能知道。

中间人攻击

非对称加密阻止了攻击者通过监听的方式获取敏感信息。但是攻击者可以使用某种手段,让客户端把攻击者当成是服务端。攻击者将自己的非对称加密加密密钥发送给客户端。这样客户端发送密文给攻击者之后,攻击者就可以自己的解密密钥进行解密,得到原文后再代替客户端向服务端发起请求。这样就可以继续监听通信信息,甚至可以篡改信息。

CA机构

中间人攻击能够成功的关键在于,客户端无法判断自己请求的服务端的身份。客户端访问服务端时,不知道自己拿到的公钥是不是正确的。所以这里的问题是判断公钥的归属。
CA2机构就是这样的一个机构,服务端生成公私钥后向CA机构申请一个证书。通信前将证书发送给客户端,客户端收到证书后找CA机构验证,验证通过就可以知道自己请求的是正确的服务端。

数字证书

如果验证证书的时候也是通过网络请求找CA机构验证的话,就会绕回了问题的原点,攻击者可能伪装CA机构。所以这就要求证书的验证必须本地进行
这个时候非对称加密又派上用场了。CA机构用私钥加密一份证书,如果客户端能用CA机构的公钥解密,就说明这个证书是CA机构加密的,表示这份证书是由CA机构颁发的。这样客户端只需要在本地保存一份CA机构的公钥就能进行验证了。
这里解释了为什么根证书很重要,根证书保存着CA机构的公钥

数字签名

如果单纯加密整份证书,也就意味着客户端解密出来什么数据就当成CA机构发了什么数据。攻击人虽然没办法指定内容(因为加密需要CA的私钥进行),但是可以传随机值给客户端。这样客户端拿到随机值,就会投诉CA机构,“你发的都是些什么证书啊”
为了避免被投诉,CA机构发下的证书会带上签名。证书的内容是:明文(服务端的公钥、额外的信息),用CA机构私钥加密的密文(明文的摘要、生成摘要的算法)(这就是签名部分)。
有了签名,客户端就可以校验证书的内容是否和CA机构颁发的一样。用CA机构的公钥解密签名,得到明文部分的摘要和生成摘要的算法,根据算法把证书明文部分的摘要自己算出来,和解密出来的摘要进行比较,就可以判断出内容是否被篡改了。这样就算攻击人传递随机值,客户端也能够自己判断出内容被篡改。
另外,我会疑惑,为什么要用摘要,直接证书中直接包含证书的明文+证书的密文,这样解密出来也可以和明文比较判断。但实际上是判断不出来的,因为攻击者也有CA的公钥。他在篡改密文部分后,可以自己先用CA的公钥解密一下,得到“篡改后的明文”,再将篡改后的明文和密文拼回一起。这样客户端密文解密出来肯定是和明文一样的。但是使用摘要就可以避免这种手段,因为篡改后的密文是随机的,而摘要算法又是单向的散列算法,很难根据摘要还原原文。


  1. Hyper Text Transfer Protocol ??

  2. Certificate Authority ??

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

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