Https协议原理剖析【计算机网络】【三种加密方法 | CA证书 】

目录

一,fidler工具

前提知识

二,Https原理解析

1. 中间人攻击

2. 常见的加密方式

1). 对称加密

2). 非对称加密 + 对称加密

4). CA证书

1. 数据摘要

3. 数字签名

CA证书 

理解数据签名

存在的安全疑问?

1. 中间⼈有没有可能篡改该证书?

2. 篡改整个证书包体?

如何成为中间⼈ - 了解

edge浏览器证书位置:

5). CA & 非对称加密 + 对称加密

总结


嗨!收到一张超美的风景图,愿你每天都能顺心!

一,fidler工具

简介: 

 fiddler 是由 C# 开发的最强大好用的免费web调试工具之一,可记录所有客户端和服务见的 http 以及 https 请求,可监视设断点,甚至修改输入输出数据,它还包含了一个强大的基于事件脚本的子系统,并且能使用 .net 语言来拓展。

简单理解:

详细教程,请参考其他博主。

前提知识

什么是"加密"
加密:就是把 明⽂ (要传输的信息)进⾏⼀系列变换, ⽣成 密⽂ .
解密:就是把 密⽂ 再进⾏⼀系列变换, 还原成 明⽂ .
在这个加密和解密的过程中, 往往需要⼀个或者多个中间的数据, 辅助进⾏这个过程, 这样的数据称为 密钥

二,Https原理解析

        首先,从前面的http协议开始,我们知道客户端可以通过get,post向服务端发出请求,post较get有隐私性,但他们终究是明文传输,只要截取,就能直接得到里面信息,甚至篡改,不安全。https协议就是来解决数据在这个安全问题。笼统的解释方法:对数据进行加密解密

1. 中间人攻击

因为http的内容是明⽂传输的,明⽂数据会经过 路由器、wifi热点、通信服务运营商、代理服务器 等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双⽅察觉,这就是 中间⼈攻击 ,所以我们才需要对信息进⾏加密。

加密与解密,看似比较简单,但实际问题远比这复杂,下面让我们逐渐理解Https如何做到在网络中实现数据安全。

2. 常见的加密方式

1). 对称加密

采⽤单钥 密码系统 的加密⽅法,同⼀个 密钥 可以同时⽤作信息的加密和解密,这种加密⽅法称为对称加密,也称为单密钥加密,特征:加密和解密所⽤的密钥是相同的
常⻅对称加密算法(了解): DES 3DES 、AES、TDEA、 Blowfish 、RC2等
特点:算法公开、计算量⼩、 加密速度快 加密效率⾼
对称加密其实就是通过同⼀个 "密钥" , 把明⽂加密成密⽂, 并且也能把密⽂解密成明⽂。
只使用对称加密缺点: 对方不知道“密钥”,并且服务器不可能面对用户都用一种密钥。只要用户端都知道密钥,中间人也能获取,数据任然不安全

      因此密钥的传输也必须加密传输! 但是要想对密钥进⾏对称加密, 就仍然需要先协商确定⼀个 "密钥的密钥". 这就成了 "先有鸡还是先有蛋" 的问题了. 此时密钥的传输再⽤对称加密就⾏不通了。

2). 非对称加密 + 对称加密

需要两个 密钥 来进⾏加密和解密,这两个密钥是 公开密钥 (public key,简称公钥)和私有密钥 (private key,简称私钥)。
常⻅⾮对称加密算法(了解):RSA,DSA,ECDSA
特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,⽽使得加密解密速度没有对 称加密解密的速度快。
⾮对称加密要⽤到两个密钥, ⼀个叫做 "公钥", ⼀个叫做 "私钥"。 公钥和私钥 配对 的. 最⼤的缺点就是 运算速度⾮常慢 ,⽐对称加密要慢很多.
通过公钥对明⽂加密, 变成密⽂
通过私钥对密⽂解密, 变成明⽂
也可以反着⽤
通过私钥对明⽂加密, 变成密⽂
通过公钥对密⽂解密, 变成明⽂

如果最开始,中间⼈就已经开始攻击了呢? 问题是如何保证,从网络传来的S是否是真实的服务端的公钥

4). CA证书

讲解CA证书时,我们首先了解:数字签名,数据摘要(或数据指纹)。

1. 数据摘要

数字指纹(数据摘要),其基本原理是利⽤单向散列函数( Hash函数 )对信息进⾏运算,⽣成 ⼀串固定⻓度的数字摘要 。数字指纹并不是⼀种加密机制,但可以⽤来判断数据有没有被窜改。
摘要常⻅算法:有 MD5 、SHA1、SHA256、SHA512等,算法把⽆限的映射成有限,因此可能会有
碰撞(两个不同的信息,算出的摘要相同,但是概率⾮常低)
摘要特征:和 加密算法 的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息( 无法反推原文 ),通常⽤来 进⾏数据对⽐

3. 数字签名

对数据摘要进行加密后,就形成了数字签名。

CA证书 

 服务端在使⽤HTTPS前,需要向CA机构(政府单位)申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威性。

申请CA证书的步骤:

需要注意的是:申请证书前,需要在特定平台⽣成CSR文件,会同时⽣成⼀对⼉密钥对⼉,即公钥和私钥。(服务端这个私钥就是来保证交换对称密匙的安全)
其中公钥会随着CSR⽂件,⼀起发给CA进⾏权威认证,私钥服务端⾃⼰保留,⽤来后续进⾏通信
可以使⽤在线⽣成CSR和私钥: https://myssl.com/csr_create.html
形成CSR之后,后续就是向CA机构进⾏申请认证,不过⼀般认证过程很繁琐,⽹络各种提供证书申请的服务商,⼀般真的需要,直接找平台解决就⾏。

理解数据签名

签名的形成是基于⾮对称加密算法的。

当服务端申请CA证书的时候,CA机构会对该服务端进⾏审核,并专⻔为该⽹站形成数字签名,过程如下:
1. CA机构拥有⾮对称加密的私钥A和公钥A'
2. CA机构对服务端申请的证书明⽂数据进⾏hash,形成数据摘要
3. 然后对数据摘要⽤CA私钥A'加密,得到数字签名S
服务端申请的证书明⽂和数字签名S 共同组成了数字证书,这样⼀份数字证书就可以颁发给服务端了。
客⼾端进⾏认证
当客⼾端获取到这个证书之后, 会对证书进⾏校验(防⽌证书是伪造的)。
判定证书的有效期是否过期
判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构).
验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到⼀个 hash 值(称为数据摘要), 设为 hash1. 然后计算整个证书的 hash 值, 设为 hash2. 对⽐ hash1 和 hash2 是否相等. 如果相等, 则说明证书是没有被篡改过的。

存在的安全疑问?

1. 中间⼈有没有可能篡改该证书?

中间⼈篡改了证书的明⽂,由于他没有CA机构的私钥,所以⽆法hash之后⽤私钥加密形成签名,那么也就没法办法对篡改后,的证书形成匹配的签名
如果强⾏篡改,客⼾端收到该证书后会发现明⽂和签名解密后的值不⼀致,则说明证书已被篡改,证书不可信,从⽽终⽌向服务器传输信息,防⽌信息泄露给中间⼈。

2. 篡改整个证书包体?

  • 首先替换的证书也必须是真实有效的证书。
  • 既然是真实有效的证书,其真实内容如果与所需要的网站或网页不同,客户端可以比较容易的检查发现。

如何成为中间⼈ - 了解

ARP欺骗:在局域⽹中,hacker经过收到ARP Request⼴播包,能够偷听到其它节点的 (IP, MAC)
地址。例, ⿊客收到两个主机A, B的地址,告诉B (受害者) ,⾃⼰是A,使得B在发送给A 的数据包
都被⿊客截取
ICMP攻击:由于ICMP协议中有重定向的报⽂类型,那么我们就可以伪造⼀个ICMP信息然后发送给
局域⽹中的客⼾端,并伪装⾃⼰是⼀个更好的路由通路。从⽽导致⽬标所有的上⽹流量都会发送到
我们指定的接⼝上,达到和ARP欺骗同样的效果
假wifi && 假⽹站等

edge浏览器证书位置:

设置中搜索安全性

5). CA & 非对称加密 + 对称加密

流程梳理:

总结

https协议使用了三组加密:

1. 第一组(非对称加密):检测证书是否被篡改。服务器持有私钥(制作CSR时产生的一对密钥),客户端持有CA机构的公钥。当客户端第一次向服务端提出请求,服务端返回一个签名证书,客户端验证其证书的合法性。

2. 第二组(非对称加密):保证对称加密的密钥安全发送给服务端。在第一组中,如果客户端验证证书合法(或者我们强制信任此证书),我们将提取证书里的公钥,对对称加密的密钥进行加密,发送给服务端。

3. 第三组(对称加密):对后续数据加密。第二组中,客户端发送来对称加密的密钥,随后根据密钥,加密资源,向客户端发送资源,至此交换资源传递开始。

关系:第一组保证服务端公钥的真实性,第二组保证对称加密的密钥安全发送给服务端。

结语

   本小节就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区评论,如果给小伙伴带来一些收获请留下你的小赞,你的点赞和关注将会成为博主创作的动力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/3299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js基础知识(2)

一、事件的含义 JavaScript事件是指在文档或者浏览器中发生的一些特定交互瞬间,比如打开某一个网页,浏览器加载完成后会触发load事件,当鼠标悬浮于某一个元素上时会触发hover事件,当鼠标点击某一个元素时会触发click事件等等。 三…

在PostgreSQL中如何处理跨表的级联删除和更新?

文章目录 解决方案1. 使用外键约束和级联操作创建外键约束并指定级联删除创建外键约束并指定级联更新 2. 使用触发器(Triggers)创建触发器实现级联删除 示例代码示例1:使用外键约束和级联删除示例2:使用触发器实现级联删除 在Post…

Golang | Leetcode Golang题解之第44题通配符匹配

题目: 题解: func isMatch(s string, p string) bool {for len(s) > 0 && len(p) > 0 && p[len(p)-1] ! * {if charMatch(s[len(s)-1], p[len(p)-1]) {s s[:len(s)-1]p p[:len(p)-1]} else {return false}}if len(p) 0 {retur…

输入influx但是无法进入influxdb

问题描述: 博主想通过DockerJmeterInfluxDBGrafana搭建性能测试可视化平台,但是按照别的教程输入influx却无法进入inluxdb,输入输出如下: NAME:influx - Influx ClientUSAGE:influx [command]HINT: If you are looking for the I…

Linux下的进程管理:创建、终止、切换与等待

文章目录 一、引言二、进程创建1、进程创建的概念与场景2、进程创建的方式a、fork() 系统调用b、fork() 后的执行流程 3、进程创建的过程a、进程创建过程b、子进程创建过程 4、父子进程关系与属性继承 三、进程终止1、进程终止的原因2、进程的错误码和退出码a、错误码b、退出码…

LeetCode:51. N 皇后

leetCode51.N皇后 题解分析 代码 class Solution { public:int n;vector<vector<string>> ans;vector<string> path;vector<bool> col, dg,udg;vector<vector<string>> solveNQueens(int _n) {n _n;col vector<bool> (n);dg …

《QT实用小工具·四十二》圆形发光图像

1、概述 源码放在文章末尾 该项目实现了图像的发光效果&#xff0c;特别适合做头像&#xff0c;项目demo演示如下所示&#xff1a; 项目部分代码如下所示&#xff1a; import QtQuick 2.7 import QtGraphicalEffects 1.12Item {id: rootwidth: 80height: 80property int ra…

浓眉大眼的Apple开源OpenELM模型;IDM-VTON试衣抱抱脸免费使用;先进的语音技术,能够轻松克隆任何人的声音

✨ 1: openelm OpenELM是苹果机器学习研究团队发布的高效开源语言模型家族 OpenELM是苹果机器学习研究团队开发的一种高效的语言模型&#xff0c;旨在推动开放研究、确保结果的可信赖性、允许对数据和模型偏见以及潜在风险进行调查。其特色在于采用了一种分层缩放策略&#x…

spring基本使用

文章目录 1. ioc(Inversion of Control) | DI(Dependency Injection)(1) maven坐标导包(2) 编写配置文件bean.xml(3) 配置bean(4) 配置文件注入属性 2. DI(dependency injection) 依赖注入(setter)其他属性(1) 对象属性注入(2) 数组属性输入(3) 集合属性注入(4) map集合注入(5)…

如何提交已暂存的更改到本地仓库?

文章目录 如何提交已暂存的更改到本地Git仓库&#xff1f;步骤1&#xff1a;确认并暂存更改步骤2&#xff1a;提交暂存的更改到本地仓库 如何提交已暂存的更改到本地Git仓库&#xff1f; 在Git版本控制系统中&#xff0c;当你对项目文件进行修改后&#xff0c;首先需要将这些更…

TCP协议数据传输过程及报文分析

目录 TCP数据的传输过程 建立连接&#xff08;三次握手&#xff09; 第一次握手 第二次握手 第三次握手 总结 数据传输 断开连接&#xff08;四次挥手&#xff09; 第一次挥手 第二次挥手 第三次挥手 第四次挥手 总结 最后 TCP数据的传输过程 TCP&#xff08;Tra…

SL3043耐压120V降压恒压 降48V 降24V 降12V 降5V 大电流10V芯片

SL3043是一款外驱MOSFET管可设定输出电流的降压型开关稳压器&#xff0c;具有以下特点&#xff1a; 1. 宽工作电压范围&#xff1a;SL3043可以在10V至120V的宽输入电压范围内工作&#xff0c;这使得它适用于多种不同的电源环境。 2. 大输出电流&#xff1a;该芯片能够提供最大…

五年Python从业者,谈谈Python的一些优缺点

前言 Python它是作为年轻的血液&#xff0c;融入到编程语言这个大家庭里面&#xff0c;作为具有年轻人的蓬勃朝气的python&#xff0c;那它同时就会有年轻人的桀骜焦躁。 今天就来谈谈Python的一些优缺点。 先从优点说起&#xff0c;我是把它分为5部分。 1.简单————Pyth…

Win11和WinRAR取消折叠菜单恢复经典菜单

这里写目录标题 前言1. Win11恢复经典右键菜单1.1 修改前1.2 恢复成经典右键菜单1.3 修改后1.4 想恢复怎么办&#xff1f; 2. WinRAR取消折叠菜单恢复经典菜单2.1 修改前2.2 修改恢复为经典菜单2.3 修改后2.4 想恢复怎么办&#xff1f; 前言 最近换回了Windows电脑&#xff0c…

大模型微调之 使用 LLaMA-Factory 微调 Llama3

大模型微调之 使用 LLaMA-Factory 微调 Llama3 使用 LLaMA Factory 微调 Llama-3 中文对话模型 安装 LLaMA Factory 依赖 %cd /content/ %rm -rf LLaMA-Factory !git clone https://github.com/hiyouga/LLaMA-Factory.git %cd LLaMA-Factory %ls !pip install "unsloth…

在Spring Boot应用中实现阿里云短信功能的整合

1.程序员必备程序网站 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 2.导入坐标 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.0</version></dependency><…

Redis面试题二(数据存储)

目录 1.redis 的数据过期策略 1. 惰性删除&#xff08;Lazy Expiration&#xff09; 2. 定期删除&#xff08;Periodic Expiration&#xff09; 3. 定时删除&#xff08;Timing-Based Expiration&#xff09; 实际应用中的组合策略 2.redis 有哪些内存淘汰机制 volatile&…

GhostNetV3:探索紧凑模型的训练策略

文章目录 摘要1、引言2、相关工作2.1、紧凑模型2.2、训练CNN的技巧包 3、预备知识4、训练策略4.1、重参数化4.2、知识蒸馏4.3、学习调度4.4、数据增强 5、实验结果5.1、重参数化5.2、知识蒸馏5.3、学习策略5.4、数据增强5.5、与其他紧凑模型的比较5.6、扩展到目标检测 6、结论 …

redis和mysql数据一致性方案

请求 A 更新数据 请求B读数据 在高并发情况下&#xff0c;A、B请求过程步骤相互穿插&#xff0c;就会出现图中的问题。 期望redis 的数据是11&#xff0c;最后变成了10 场景&#xff1a;先删除Redis&#xff0c;再更新 MySQL&#xff0c;不主动更新Redis&#xff0c;访问redi…

#ESP32S3R8N8建立工程(VSCODE)

1.参考文档 【立创ESP32S3R8N8】IDF入门手册 - 飞书云文档 (feishu.cn)https://lceda001.feishu.cn/wiki/GOIlwwfbIi1SC3k8594cDeFVn8g 2.建立工程 3.运行效果