网络原理——HTTPS

HTTPS是 在HTTP的基础上,引入了一个加密层(SSL)。

1. 为什么需要HTTPS

在我们使用浏览器下载一些软件时,相信大家都遇到过这种情况:明明这个链接显示的是下载A软件,点击下载时就变成了B软件,这种情况是运营商劫持。

当我们点击下载时其实就是给服务器发送了一个HTTP请求,这个请求通过网络传输是就会通过很多设备,其中就有运营商的设备,服务器接收到请求之后,服务器会返回一个响应,这个响应就带有软件的下载链接,当这个响应经过运营商的设备时,运营商就可以把其中的链接篡改,于是就导致了我们得到的下载链接和想要下载的软件不一致。这就叫运营商劫持。

 不仅如此,我们的信息也可能会被泄露。

为了解决此类问题,加密就是一个很好的方法,于是诞生了HTTPS。

2. 什么是HTTPS?

HTTPS,全称为HyperText Transfer Protocol Secure,即超文本传输安全协议,是HTTP的安全版。通过使用SSL/TLS协议,HTTPS在传输层对数据进行加密,从而确保网络通信过程中的安全性和完整性。通常,HTTPS被用于安全地传输个人信息、金融交易数据、登录凭证等敏感信息,以防止被恶意攻击者窃取或篡改。

2.1 密钥

密钥在加密通信中扮演着至关重要的角色,它用于加密和解密数据,确保数据传输的安全性。在HTTPS等加密通信中,通常会涉及到两种类型的密钥:对称密钥和公钥/私钥(非对称密钥)。

  1. 对称密钥: 对称密钥是一种加密系统中使用的密钥,用于对数据进行加密和解密。在对称加密算法中,加密和解密使用相同的密钥,因此被称为对称密钥。对称加密算法的优点是加密解密速度快,缺点是密钥传输的安全性相对较低。在HTTPS握手过程中,通常会使用对称密钥来加密通信内容,以提高传输效率。

  2. 公钥/私钥(非对称密钥): 公钥/私钥是一对密钥,其中一个用于加密数据,一个用于解密数据。公钥可以自由发布给他人,而私钥则必须保密。非对称加密算法的优点是密钥传输的安全性高,缺点是加密解密速度较慢。在HTTPS的握手过程中,服务器会将其公钥发送给客户端,客户端使用该公钥加密生成的对称密钥,然后发送给服务器,从而建立安全连接。

3. HTTPS工作过程 

3.1 引入对称加密

对称加密时,客户端和服务器使用同一个密钥进行加密和解密,并且为了进一步提高安全,不同的客户端使用的密钥不相同,所以每个客户端连接到服务器时,都需要生成一个随机的密钥,并且把这个密钥告知给 服务器/客户端 ,但是由于密钥明文传输才能被对端理解,所以导致了黑客也能获取并理解密钥,一旦黑客拿到了密钥就意味着加密操作无意义了

 

3.2 引入非对称加密

使用非对称加密主要是用于对对称密钥进行加密。

服务器会把用于加密的公钥明文发送给客户端,客户端使用公钥对对称加密的密钥进行加密传输给服务器,由于黑客不持有私钥,所以无法的到对称密钥,后续客户端和服务器就可以使用对称加密来进行通信。

由于非对称加密的资源消耗要远大于对称加密,所以不太适合用于正式的数据交互加密。

3.3 中间人攻击 

在我们3.2 中的加密方式还存在一个漏洞 :

服务器可以创建出一对公钥和私钥,那么黑客同样可以,于是当服务器发送公钥给客户端时,黑客可以把公钥修改为自己生成的公钥,客户端接受到这个公钥,就会用这个公钥对生成的对称密钥加密,然后发送给服务器,黑客就可以知道对称密钥,为了不被服务器发现,黑客会对客户端发送的对称密钥用服务器生成的公钥重新加密,再发送给服务器,于是后续客户端和服务器使用对称密钥通信时,黑客也能获取到并解密出数据。

3.4 证书 

中间人攻击能成功的最关键的一点就是客户端无法验证接受到的公钥是不是服务器的,为了防止中间人攻击,于是引入了证书。证书是一个结构化的数据,里面包含了很多属性,例如服务器的主域名,公钥,证书有效期等,以字符串的形式储存。证书是搭建服务器的公司要从第三方的公证机构申请。证书中有一个属性叫“签名”,这个“签名”本质上是一个经过加密的校验和,公证机构再发布证书时,会给这个证书计算出校验和,然后用非对称密钥的私钥进行加密,这个私钥不会公布出去,对应的公钥会内置在常见的系统中。服务器给客户端发送公钥时,会直接把证书发送过去,客户端拿到证书后会对证书中的校验和用该公证机构的公钥进行解密,再通过证书中提供的校验和算法对证书再次计算校验和然后和解密的到的校验和进行对比,即可判断出证书是否被修改。如果被修改过,浏览器就会提示  “你访问的网站有风险”。

 

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

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

相关文章

计算机设计大赛 深度学习手势检测与识别算法 - opencv python

文章目录 0 前言1 实现效果2 技术原理2.1 手部检测2.1.1 基于肤色空间的手势检测方法2.1.2 基于运动的手势检测方法2.1.3 基于边缘的手势检测方法2.1.4 基于模板的手势检测方法2.1.5 基于机器学习的手势检测方法 3 手部识别3.1 SSD网络3.2 数据集3.3 最终改进的网络结构 4 最后…

深入理解Python中的JSON模块:基础大总结与实战代码解析【第102篇—JSON模块】

深入理解Python中的JSON模块:基础大总结与实战代码解析 在Python中,JSON(JavaScript Object Notation)模块是处理JSON数据的重要工具之一。JSON是一种轻量级的数据交换格式,广泛应用于Web开发、API通信等领域。本文将…

WinForms中的Timer探究:Form Timer与Thread Timer的差异

WinForms中的Timer探究:Form Timer与Thread Timer的差异 在Windows Forms(WinForms)应用程序开发中,定时器(Timer)是一个常用的组件,它允许我们执行定时任务,如界面更新、周期性数据…

osi模型,tcp/ip模型(名字由来+各层介绍+中间设备介绍)

目录 网络协议如何分层 引入 osi模型 tcp/ip模型 引入 命名由来 介绍 物理层 数据链路层 网络层 传输层 应用层 中间设备 网络协议如何分层 引入 我们已经知道了网络协议是层状结构,接下来就来了解了解下网络协议如何分层 常见的网络协议分层模型是OSI模型 和 …

windows 连接 Ubuntu 失败 -- samba服务

1. windows10连接ubuntu的时候,提示不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接,中断与此服务器或共享资源的所有连接,然后再试一次 2. 换一台同事的电脑却又可以连上,我之前一直能用的,隔一段时间…

UE5 C++ 单播 多播代理 动态多播代理

一. 代理机制,代理也叫做委托,其作用就是提供一种消息机制。 发送方 ,接收方 分别叫做 触发点和执行点。就是软件中的观察者模式的原理。 创建一个C Actor作为练习 二.单播代理 创建一个C Actor MyDeligateActor作为练习 在MyDeligateAc…

【蓝桥杯】包子凑数(DP)

一.题目描述 二.输入描述 三.输出描述 四.问题分析 几个两两互质的数,最大公约数是1,最小公倍数是他们的乘积。 两个互质的数a和b最小不能表示的数就是(a-1)(b-1)-1,即,两个互质的数…

uniapp_微信小程序日历

一、需求要求这样 二、代码实现 <view class"calender" click"showriliall"><text class"lineText">探视日期&#xff1a;</text><text class"middleText">{{timerili}}</text><image src"/s…

Ubuntu服务器fail2ban的使用

作用&#xff1a;限制ssh远程登录&#xff0c;防止被人爆破服务器&#xff0c;封禁登录ip 使用lastb命令可查看到登录失败的用户及ip&#xff0c;无时无刻的不在爆破服务器 目录 一、安装fail2ban 二&#xff0c;配置fail2ban封禁ip的规则 1&#xff0c;进入目录并创建ssh…

【c++leetcode】1382. Balance a Binary Search Tree

问题入口 DSW (DAY, STOUT & WARREN) ALGORITHM 时间复杂度O(n) class Solution { public:int makeVine(TreeNode* grand, int cnt 0){auto n grand->right;while (n ! nullptr){if(n->left ! nullptr){auto old_n n;n n->left;old_n->left n->righ…

力扣hot100题解(python版18-21题)

18、矩阵置零 给定一个 *m* x *n* 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法**。** 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例…

Stable Diffusion WebUI 折腾新篇章

原文&#xff1a;https://blog.iyatt.com/?p13123 1 前言 第一次玩 Stable Diffusion WebUI 是三十几天前&#xff0c;当时还在用四年半前&#xff08;大学前暑假&#xff09;买的轻薄本&#xff0c;而在半年前独显还坏了&#xff0c;所以是纯纯的用 CPU 折腾&#xff0c;刚…

【Android】View事件体系基础

文章目录 坐标系View滑动layout方法offserLeftAndRight() 和 offsetTopAndBottom()LayoutParams(布局参数)View动画scrollTo/scrollBy 解析Activity的构成 坐标系 分为Android坐标系和View坐标系 可以用 getWidth() 和 getHeight() 获取View自身的宽度和高度 对于ViewgetX() …

【c语言】内存函数

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 memcpy函数的使用和模拟实现 memcpy函数的使用 memcpy函数的模拟实现 memmove的使用和模拟实现 memmove的使用 memmove的模拟实现 memset函数的使用 memcmp函数…

pdf转word文档怎么转?分享4种转换方法

pdf转word文档怎么转&#xff1f;在日常工作中&#xff0c;我们经常遇到需要将PDF文件转换为Word文档的情况。无论是为了编辑、修改还是为了重新排版&#xff0c;将PDF转为Word都显得尤为重要。那么&#xff0c;PDF转Word文档怎么转呢&#xff1f;今天&#xff0c;就为大家分享…

Java中web的css、js、img等静态资源引入详细操作教程

本篇文章主要讲解&#xff1a;Java中web的css、js、img等静态资源引入详细操作教程 日期&#xff1a;2024年2月27日 作者&#xff1a;任聪聪 java中web单体项目静态资源webjar引入形式说明 说明&#xff1a;通过webjar进行静态资源的导入&#xff0c;使用maven进行版本的管理。…

基于华为atlas的分类模型实战

分类模型选用基于imagenet训练的MobileNetV3模型&#xff0c;分类类别为1000类。 pytorch模型导出为onnx&#xff1a; 修改mobilenetv3.py中网络结构&#xff0c;模型选用MobileNetV3_Small模型&#xff0c;网络输出节点增加softmax层&#xff0c;将原始的return self.linear4…

postgressql和postgis安装

PostgreSQL安装 1 简 介 2 PostgreSQL优点特性 3 安装PostgreSQL 3.1 Yum安装 3.2 RPM包安装 3.3 源码安装 4 安装PostGIS 4.1 安装依赖 4.2 检查PostGIS是否安装成功 5 PostgreSQL多实例 PostgreSQL安装 1 简 介 PostgreSQL 是一种非常复杂的对象-关系型数…

【经验】vscode 鼠标拖曳不能选中整行文字,只能选中纵向矩形范围

1、问题描述 不知道昨天操作vscode设置界面时&#xff0c;误选择了啥&#xff0c;导致鼠标拖曳不能选中整行文字&#xff0c;只能选中纵向矩形范围&#xff0c;现象如下&#xff1a; 2、解决方法 1&#xff09;打开设置界面 点击左下角按键&#xff0c;选择“设置” 2&…

kubectl 命令行管理K8S(下)

目录 声明式资源管理方式 介绍 命令 修改yaml文件指定的资源 离线修改 在线修改 YAML 语法格式 查看 api 资源版本标签 编辑yaml配置清单生成资源 编写yaml文件 yaml创建Deployment yaml创建service服务对外提供访问并测试 yaml创建Pod 生成模板 pod模板 serivc…