当前位置: 首页 > news >正文

【网络协议】Https

HTTP 协议内容都是按照⽂本的⽅式明⽂传输的,这就可能导致在传输过程中出现⼀些被篡改的情况。所以在HTTP协议的基础上,引入加密层,形成了HTTPS协议。

HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。设计目标主要有三个。

(1)数据保密性:保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么。

(2)数据完整性:及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收。

(3)身份校验安全性:保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方。

这里解释一下一些概念关于加密的概念:

对称加密:也称单密钥加密,加密和解密所⽤的密钥是相同的。

非对称加密:分为公钥和私钥,公钥加密只能用私钥解密,私钥加密只能用公钥解密。

数据摘要:又称数字指纹,基本原理是利⽤单向散列函数(Hash函数)对信息进⾏运算,⽣成⼀串固定⻓度的数字摘要。数字指纹并不是⼀种加密机制,但可以⽤来判断数据有没有被窜改。

想象一下如果在你和服务器之间存在一个中间人,你和服务器为了保证数据安全,都要对数据加密后再发送。那么通信的双方就必须知道解密的密钥。

场景1:只使用对称加密

你和服务器都有一个你俩才知道到的密钥,这当然可以保证数据安全。但是服务器显然不会只和你交互,那么服务器就必须维护大量密钥与客户端的关联关系,这显然十分麻烦。所以在通信之前就要协商这次通信的密钥是什么,但是发送密钥(密钥也是一种数据)的过程也需要加密,否则中间人获取到你加密过的密钥,照样可以破获你的数据。但是这样就陷入了无限轮回。

场景2:只使用非对称机密

服务器把公钥发送给客户端,客户端用公钥加密后把数据发送给服务器,由于中间人没有私钥自然无法破解密文,但是服务器向客户端发送的信息是用私钥加密的,中间人完全可以在客户端获得公钥之前截取公钥,在服务器给客户端返回消息的时候用公钥破解数据,这样的话还是不安全。

场景3:双方都是用非对称加密

服务器拥有公钥S1和私钥S2,客户端也拥有公钥C1和私钥C2。在通信前,互相发送各自的公钥,然后用各自的私钥加密信息,这样即便中间人截取了数据由于私钥S2和C2在服务器或客户端那里,自然无法解密。但是如果中间人在双方互换公钥之前就已经截取到信息了,然后对其做出修改,比如中间人也有公钥A1和私钥A2,把服务器给客户端的S1换成他自己的A1,然后客户端用A1加密后,把数据发给服务器,中间人就可以用自己的私钥A2解密,然后再用截取到的S1加密数据后发送给服务器。这时候服务器和客户端还傻呵呵乐呢,实际上并不安全。

场景4:非对称加密+对称加密

服务器使用非对称加密,拥有公钥S1和私钥S2。客户端使用对称加密,拥有唯一的密钥C。当进行通信前,服务器把公钥S1发送给客户端,客户端使用S1加密密钥C后发送给服务器,之后双方就可以使用单密钥C通信了。这样理论上是安全的。但是如果中间人在客户端接收公钥S1之前就蹲点了呢?把S1换成中间人自己的密钥A呢?客户端利用密钥A加密密钥C然后发给服务器,被中间人截获后,解密不就获得密钥C了。这样之后的通信相当于全部暴露到了中间人眼皮下,跟裸奔没啥区别。

所以上面的场景2,3,4都犯了一个错误那就是通信前发送公钥无法加密,会被截取。为了避免这种情况,就引入了证书。

CA认证:服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威性。
这样就避免了中间人中途修改信息,而客户端还不知道的情况。
证书中存在一个数字签名,是用证书的明文通过哈希函数形成数据摘要,然后对这个数据摘要利用私钥加密形成一个唯一的数字签名。证书包含两部分,一部分是明文,一部分就是这个数字签名。
在客⼾端和服务器刚⼀建⽴连接的时候, 服务器给客⼾端返回⼀个证书,证书包含了之前服务端的公 钥, 也包含了⽹站的⾝份信息。
场景5:非对称加密+对称加密+CA证书
在场景4的基础上,引入CA证书,防止非法身份者发送自己的密钥给客户端。所以中间人想要搞事情就只能在证书上搞花样了。

1.客户端进行认证

当客户端获取到这个证书之后, 会对证书进行校验(防止证书是伪造的).

判定证书的有效期是否过期

判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构).

验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到个 hash 值(称为数

据摘要), 设为 hash1. 然后计算整个证书的 hash 值, 设为 hash2. 对 hash1 和 hash2 是否相等. 如果相等, 则说明证书是没有被篡改过的。

2.中间人有没有可能篡改该证书?

中间篡改了证书的明

由于他没有CA机构的私钥,所以无法hash之后私钥加密形成签名,那么也就没法办法对篡改后

的证书形成匹配的签名

如果强篡改,客户端收到该证书后会发现明和签名解密后的值不致,则说明证书已被篡改,

证书不可信,从向服务器传输信息,防止信息泄露给中间

3.中间人整个掉包证书?

因为中间没有CA私钥,所以无法制作假的证书

所以中间只能向CA申请真证书,然后用自己申请的证书进行掉包

这个确实能做到证书的整体掉包,但是别忘记,证书明中包含了域名等服务端认证信息,如果整

体掉包,客户端依旧能够识别出来。

永远记住:中间没有CA私钥,所以对任何证书都无法进行合法修改,包括自己的

4.为什么签名不直接加密,而是要先hash形成摘要?

签名密度,加快数字签名的验证签名的运算速度

5.如何成为中间

ARP欺骗:在局域中,hacker经过收到ARP Request广播包,能够偷听到其它节点的 (IP, MAC)

地址。例, 黑客收到两个主机A, B的地址,告诉B (受害者) ,⾃⼰是A,使得B在发送给A 的数据包都被黑客截取

ICMP攻击:由于ICMP协议中有重定向的报类型,那么我们就可以伪造个ICMP信息然后发送给局域中的客户端,并伪装⾃⼰个更好的路由通路。从导致标所有的上流量都会发送到我们指定的接上,达到和ARP欺骗同样的效果

假wifi && 假站等

相关文章:

【网络协议】Https

HTTP 协议内容都是按照⽂本的⽅式明⽂传输的,这就可能导致在传输过程中出现⼀些被篡改的情况。所以在HTTP协议的基础上,引入加密层,形成了HTTPS协议。 HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要…...

Lostash同步Mysql数据到Elasticsearch(三)Elasticsearch模板与索引设置

logstash数据同步ES相关 同步数据时,Elasticsearch配合脚本的相关处理设置 1.模板创建更新 在kibana中执行,或者直接给ES发送请求,你懂得,不懂得百度下ES创建template PUT /_template/test-xxx {"template": "…...

python——ptp()函数

函数功能:求最大值和最小值的差值 def ptp(a, axisNone, outNone):"""沿轴的值范围(最大值-最小值)。该函数的名称来自“peak-to-peak”的首字母缩写。参数----------a:array_like输入值。axis:int,可选找到山峰的…...

SpringBoot之异常处理

文章目录 前言一、默认规则二、定制异常处理处理自定义错误页面ControllerAdviceExceptionHandler处理全局异常ResponseStatus自定义异常自定义实现 HandlerExceptionResolver 处理异常 三、异常处理自动配置原理四、异常处理流程总结 前言 包含SpringBoot默认处理规则、如何定…...

Flask-[实现websocket]-(2): flask-socketio文档学习

一、简单项目的构建 flask_websocket |---static |---js |---jquery-3.7.0.min.js |---socket.io_4.3.1.js |---templates |---home |---group_chat.html |---index.html |---app.py 1.1、python环境 python3.9.0 1.2、依赖包 Flask2.1.0 eventlet0.33.3 #使用这个性能会…...

网页中使用的图片格式

网页中使用的图片格式有以下几种,各有优缺点: JPEG:适用于照片或彩色图像,支持16.7万种颜色,有损压缩,可以调节压缩比和质量,文件较小,加载较快PNG:适用于图标或透明图像…...

【android】如何设置LD_LIBRARY_PATH?

目录 一 配置方法 1 进入Android shell 2 使用export命令 3 使用echo命令查看变量是否设置成功 二 扩展 1 LD_LIBRARY_PATH设置多个路径 2 push文件 一 配置方法 android中配置LD_LIBRARY_PATH的方法具体为: 1 进入Android shell adb shell 2 使用export…...

【hadoop3.x】一 搭建集群调优

一、基础环境安装 https://blog.csdn.net/fen_dou_shao_nian/article/details/120945221 二、hadoop运行环境搭建 2.1 模板虚拟机环境准备 0)安装模板虚拟机,IP 地址 192.168.10.100、主机名称 hadoop100、内存 4G、硬盘 50G 1)hadoop100…...

linux使用操作[2]

文章目录 版权声明网络传输ping命令wget命令curl命令端口linux端口端口命令和工具 进程管理查看进程关闭进程 主机状态top命令内容详解磁盘信息监控 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相…...

华南理工大学电子与信息学院23年预推免复试面试经验贴

运气较好,复试分数90.24,电科学硕分数线84、信通83、专硕电子与信息74. 面试流程: 1:5min ppt的介绍。其中前2min用英语简要介绍基本信息,后3min可用英语也可用中文 介绍具体项目信息如大创、科研、竞赛等&#xff08…...

Linux网络编程- ether_header iphdr tcphdr

struct ether_header struct ether_header 是一个数据结构&#xff0c;用于表示以太网&#xff08;Ethernet&#xff09;帧的头部。这个结构体在 <netinet/if_ether.h> 头文件中定义。当你处理或分析以太网帧时&#xff0c;可以使用这个结构体来访问和解读 Ethernet 头部…...

wpf中的StaticResource和DynamicResource

不同点一&#xff1a;StaticResource是程序载入时对资源的一次性使用&#xff0c;之后就不在访问了 DynamicResouce则是程序运行过程中回去访问资源 样例&#xff1a;在xaml中定义好的资源 <Window.Resources><SolidColorBrush x:Key"borderRed" Color"…...

数据结构与算法基础-(3)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…...

maven中relativepath标签的含义

一 relative标签的含义 1.1 作用 这个<parent>下面的<relativePath>属性&#xff1a;parent的pom文件的路径。 relativePath 的作用是为了找到父级工程的pom.xml;因为子工程需要继承父工程的pom.xml文件中的内容。然后relativePath 标签内的值使用相对路径定位…...

Greenplum 对比 Hadoop

Greenplum属于MPP架构&#xff0c;和Hadoop一样都是为了解决大规模数据的并行计算而出现的技术&#xff0c;两者的相似点在于&#xff1a; 分布式存储&#xff0c;数据分布在多个节点服务器上分布式并行计算框架支持横向扩展来提高整体的计算能力和存储容量都支持X86开放集群架…...

OJ练习第182题——字典树(前缀树)

字典树&#xff08;前缀树&#xff09; 208. 实现 Trie (前缀树)题目描述示例知识补充官解代码 211. 添加与搜索单词 - 数据结构设计题目描述示例思路Java代码 208. 实现 Trie (前缀树) 力扣链接&#xff1a;208. 实现 Trie (前缀树) 题目描述 示例 知识补充 插入字符串 我…...

前端知识总结

在前端开发中&#xff0c;y x是一种常见的自增运算符的使用方式。它表示将变量x的值自增1&#xff0c;并将自增后的值赋给变量y。 具体来说&#xff0c;x是一种后缀自增运算符&#xff0c;表示将变量x的值自增1。而y x则是将自增前的值赋给变量y。这意味着在执行y x之后&am…...

中国JP-10燃料行业市场研究与预测报告(2023版)

内容简介&#xff1a; 高密度燃料是指以石油基、煤基和生物质基烃类为原料&#xff0c;通过聚合、加氢、异构等工艺合成的密度大于0.85 gcm-3的饱和多环碳氢化合物&#xff0c;广泛应用于航空航天领域。由于高密度燃料密度大和体积热值高等特点&#xff0c;飞行器在油箱体积一…...

护眼灯显色指数应达多少?眼科医生推荐灯光显色指数多少合适

台灯的显色指数是其非常重要的指标&#xff0c;它可以表示灯光照射到物体身上&#xff0c;物体颜色的真实程度&#xff0c;一般用平均显色指数Ra来表示&#xff0c;Ra值越高&#xff0c;灯光显色能力越强。常见的台灯显色指数最低要求一般是在Ra80以上即可&#xff0c;比较好的…...

AI 大模型

随着人工智能技术的迅猛发展&#xff0c;AI 大模型逐渐成为推动人工智能领域提升的关键因素&#xff0c;大模型已成为了引领技术浪潮研究和应用方向。大模型即大规模预训练模型&#xff0c;通常是指那些在大规模数据上进行了预训练的具有庞大规模和复杂结构的人工智能模型&…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...