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 网络分层结构

在这里插入图片描述
可见:HTTPS 是在 HTTP 协议上加上一层 SSL (安全协议)层;

密码学的奠基人----艾伦·麦席森·图灵

由于 HTTP 是通过明文进行传输的,因此存在被劫持的风险,所以,引入了加密算法来对明文进行加密处理;下面介绍两种加密方式

  • 对称加密
  • 非对称加密

对称加密

对称加密 :本质就是通过同一个 “密钥” , 把明文加密成密文, 同时也能够把密文解密成明文;该种方式 效率高;由于该种方式中的密钥是客户端与服务端共同约定的,一旦在传输的过程中,攻击者得到了密钥,那通过加密的明文也就形同虚设了;

因此,密钥的传输也必须进行加密处理!

非对称加密

非对称加密要用到两个密钥, 一个叫做 “公钥”, 一个叫做 “私钥”;
最大的缺点运算速度非常慢

公钥和私钥是配对的;

  • 通过公钥对明文加密, 变成密文;
  • 通过私钥对密文解密, 变成明文;

也可以反着用

  • 通过私钥对明文加密, 变成密文;
  • 通过公钥对密文解密, 变成明文;

由于公钥是对所有人都开放的,因此,也有被黑客篡改的风险,所以需要引入证书来验证真伪;当客户端和服务器刚建立连接的时候, 这时服务器就会给客户端返回一个 证书该证书中包含了刚才的公钥, 也包含了网站的身份信息;

类似于人要去公安局办理一个身份证;同样的, 搭建一个 HTTPS 网站要在CA机构先申请一个证书

当客户端拿到这个证书之后, 需要对证书进行校验(防止证书是伪造的)

  • 判定证书的有效期是否过期
  • 判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构);
  • 验证证书是否被篡改:从系统中拿到该证书发布机构的公钥, 对签名解密, 得到一个 hash 值(称为数据摘要/签名), 设为 hash1; 然后计算整个证书的 hash 值, 设为 hash2. 对比 hash1 和 hash2 是否相等,如果相等, 则说明证书是没有被篡改过的;

理解数据摘要 / 签名?

类似于工作中遇到的 “报销” 的场景,你拿着发票想报销, 需要领导批准. 但是领导又不能和你一起去找财务, 那咋办?
很简单, 领导给你签个字就行了, 财务见到领导的签字, “见字如见人”;

理解证书篡改的过程?

假设我们的证书只是一个简单的字符串 hello, 对这个字符串计算hash
结果为:BC4B2A76B9719D91
如果 hello 中有任意的字符被篡改了, 比如变成了 hella, 那么计算的 hash 值就会变化很大
结果为: BDBD6F9CF51F2FD8

但如果黑客把 hello 篡改了, 同时也把哈希值重新计算下, 客户端就分辨不出来了呀;

所以被传输的哈希值不能传输明文, 需要传输密文;
(1)这个哈希值在服务器端通过另外一个私钥加密(这个私钥是申请证书的时候,证书发布机构给服务器的, 不是客户端和服务器传输对称密钥的私钥);
(2) 然后客户端通过操作系统里已经存的了的证书发布机构的公钥进行解密,还原出原始的哈希值, 再进行校验;

如下图所示

在这里插入图片描述

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

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