Linux-Https协议

文章目录

  • 前言
  • 一、Https协议
  • 二、常见的加密方式
    • 对称加密
    • 非对称加密
    • 数据摘要&&数据指纹
    • 中间人攻击
  • 三、Https的加密历程
    • 方案1-只使用对称加密
    • 方案2-只使用非对称加密
    • 方案3-双方都使用非对称加密
    • 方案4-非对称加密+对称加密


前言

之前我们学习了Http协议,也试着做了一个HttpServer。所以对于Http我们也有了一个比较清晰的认识。


一、Https协议

之前我们在实现一个HttpServer的时候,我们所做的网络传输的数据都是没有任何加密的。

不做任何加密会有什么风险?

  1. 一旦被拦截,里面的数据一览无余。
  2. 可以劫持报文数据,将报文数据做篡改。

Https也是⼀个应用层协议,是在Http协议的基础上引⼊了⼀个加密层。

截止到目前,我们现在浏览的大部分网站都是采用Https协议,http协议正在逐步隐退。

二、常见的加密方式

对称加密

• 采用单钥密码系统的加密方法,同⼀个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密,特征:加密和解密所用的密钥是相同的。

• 常见对称加密算法(了解):DES、3DES、AES、TDEA、Blowfish、RC2等。

• 特点:算法公开、计算量小、加密速度快、加密效率高。

对称加密其实就是通过同⼀个"密钥",把明文加密成密文,并且也能把密文解密成明文。

⼀个简单的对称加密,按位异或。

非对称加密

需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
• 常见非对称加密算法(了解):RSA,DSA,ECDSA。
• 特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
• 通过公钥对明文加密,变成密文
• 通过私钥对密文解密,变成明文
也可以反着用
• 通过私钥对明文加密,变成密文
• 通过公钥对密文解密,变成明文

数据摘要&&数据指纹

• 数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash函数)对信息进行运算,生成一串固定长度的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改。

• 摘要常见算法:有MD5、SHA1、SHA256、SHA512等,算法把无限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率非常低)。

• 摘要特征:和加密算法的区别是,摘要严格来说不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来进行数据对比。

怎么理解呢? 就像我们上一章将到的Cookie,现在很多企业所保存的Cookie内容其实是session ID, 既然我们要保证用户每一个人都必须保证唯一的session ID,我们就可以采用这种数据摘要的方式来生成用户的唯一session ID。

还有一种应用于云盘当中, 如果我们宿舍4个人都想要在云盘中保存一个教学视频,舍友A率先保存,花费了一个小时才上传到云盘。云盘服务器通过读取该视频二进制数据,生成一个唯一的摘要文件,存入到数据库中。
而当舍友B、C、D也想上传到云盘时,云盘会先读取计算机本地视频的二进制内容,通过同样的算法也生成一个摘要文件,而云盘只需要先上传这个摘要文件,再将它与数据库进行查找,如果找到,那就没有必要再存放一份相同的视频到它的服务器当中。 而是生成一个类似于软链接的文件,这样舍友B、C、D就成功实现秒传。

中间人攻击

Man-in-the-MiddleAttack,简称“MITM攻击”。
日常生活中我们进行网络通信并不是直接向服务器直接发送信息,而是先发送消息给路由器,路由器再发送给运营商,运营商再发给目标服务器。

所以在这里运营商和路由器就是中间人。

所以,如果我们不对数据进行加密的话,中间人可以将我们所传送的报文数据一览无余。

而如果中间人怀有恶意的话,中间人不一定就是运营商,也有可能是一些恶意的VPN,恶意的钓鱼WIFI,恶意的网络热点,恶意的钓鱼网站。就会导致你的隐私泄露或者报文数据被劫持篡改。

三、Https的加密历程

加密方法总是伴随着被破解->改进->被破解->改进…
所以Https在这样的历程中,有过这么几种加密方案。

方案1-只使用对称加密

因为对称加密是客户端和服务器需要约定好各自维护同一份密钥,但是对于客户端,客户端的秘钥是尽量不一样的,因为一旦客户端的秘钥都是相同的,黑客只需要破解一个客户端秘钥,就等于拿到了所有客户端的秘钥。
所以,这就需要服务器同时维护多个秘钥,会产生巨大的负担。且在维护关联关系也是十分麻烦。

方案2-只使用非对称加密

非对称加密需要双方各自持有公钥和私钥,只使用非对称加密的方式,私钥一般都是由服务器来持有,公钥也是服务器在收到请求时,响应给客户端时发送过去的。

图示如下

在这里插入图片描述
这就是客户单和服务器一次交互的流程。但是这并不安全,因为如果存在中间人,就会是这样。
在这里插入图片描述
中间人也能持有公钥S,且不能保证服务器发送给客户端的报文安全。

方案3-双方都使用非对称加密

  1. 服务端拥有公钥S与对应的私钥S’,客户端拥有公钥C与对应的私钥C’。
    客户端和服务端交换公钥。

  2. 客户端给服务端发信息:先用S对数据加密,再发送。只能由服务器解密,因为只有服务器有私钥S’。

  3. 服务端给客户端发信息:先用C对数据加密,再发送。只能由客户端解密,因为只有客户端有私钥C’。

这种方案虽然可行,但是效率很低,而且也存在安全问题。

这里直接贴出有恶意中间人的图示。

在这里插入图片描述

这里的恶意中间人如果自己携带自己的公钥M和私钥M’,方案3就十分不安全。

方案4-非对称加密+对称加密

方案4是针对于方案3 效率低下 的改进,但是也仍然存在和方案3 一样的安全问题。

在这里插入图片描述

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

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

相关文章

官方文档 搬运 MAXMIND IP定位 mysql导入 简单使用

官方文档地址: 官方文档 文件下载 1. 导入mysql可能报错 Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 查看配置 SHOW GLOBAL VARIABLES LIKE %secure%;secure_file_priv 原来…

laravel版本≥ 8.1

laravel10 php ≥ 8.1 且 ≤ 8.3&#xff1f; 8.1 < php < 8.3PHP版本要求在 8.1 到 8.3 之间&#xff0c;包括这两个版本。具体来说&#xff1a;"≥ 8.1" 表示 PHP 的版本至少是 8.1&#xff0c;也就是说 8.1 及以上的版本都可以。 "≤ 8.3" 表示 P…

计算机组成原理学习 Part 1

计算机系统 组成 计算机系统 { 硬件 计算机的实体&#xff0c;如主机、外设等 软件 由具有各类特殊功能的信息&#xff08;程序&#xff09;组成 计算机系统 \begin{cases} 硬件 &\text 计算机的实体&#xff0c;如主机、外设等\\ 软件 &\text 由具有各类特殊功能的信…

【报错】无法找到模块“element-plus/es/locale/index.mjs”的声明文件。

报错&#xff1a; 无法找到模块“element-plus/es/locale/index.mjs”的声明文件。“E:/codeAll/work/test1/test2/HealinLikeMe-ui/node_modules/.pnpm/element-plus2.7.3_vue3.4.27_typescript5.4.5_/node_modules/element-plus/es/locale/index.mjs”隐式拥有 "any&quo…

Linux笔记--vi编辑器

vi编辑器 基本操作 对于vi编辑器有这几种模式 移动 当编辑一个过大的文件时通过方向键移动光标过慢所以可以使用快捷键进行移动 编辑 dw指令只能在单词第一个字母处使用 D指令删除的是当前行 查找替换 pattern指代想要搜索的内容

056、PyCharm 快速代码重构的方法

在实际的编程过程中&#xff0c;如果有一段代码需要在多个地方重复使用&#xff0c;我们应该将这段代码封装成一个函数。这样可以提高代码的可重用性和可维护性。 在PyCharm编辑器里&#xff0c;可以使用以下操作对代码块进行快速的重构。 &#xff08;1&#xff09;、选中一…

【Photoshop】PS修改文字内容

Photoshop(PS)修改图片上文字内容&#xff0c;网上教材不少&#xff0c;本人整理实践过的方法&#xff0c;分享给各位。本人实践方法&#xff1a; 内容识别填充&#xff1a;适用于背景色复杂的图片内容修补工具&#xff1a;适用于背景色为纯色的图片 方式一&#xff1a;内容识…

java入门-文件与IO流

File类 提供一些方法(api)来操纵文件和获取文件的信息 File常用API 属性 获取系统分隔符 不同操作系统的分隔符 windows的目录分割符号是用向右的斜线&#xff0c;java中\ 表示转义字符&#xff0c;所以向右的斜线需要写两个 \; linux目录分割符号是向左的斜线: / private st…

Cocos2d-x 4.0 工程首次建立与编译(Mac m1)

Mac m1芯片下将cocos2d-x升级至4.0版本后&#xff0c;官方剔除了不同平台的工程以及变更了编译方式&#xff0c;直接使用cmake构建&#xff0c;需要做一些前置的准备工作。 环境准备&#xff1a; 项 版本 备注 MacOS10.3 or laterpython2.7.16(建议>2.7.10)cmake3.29.3Do…

自动驾驶场景下TCP协议参数优化调整案例分享

RTT 往返时间&#xff0c;从tcp协议栈决定发包&#xff0c;到收到回包的时间。 包含本地驱动&#xff0c;网卡硬件&#xff0c;网线&#xff0c;交换机&#xff0c;收包方处理的耗时。需注意如果开了delayed ack&#xff0c;协议栈未做特殊处理&#xff08;默认没做&#xff…

探索交互的本质:从指令到界面的演进与Linux基础指令的深入剖析

目录 1.指令 vs 界面//选读 1.1交互的需求 满足需求的第一阶段-指令 满足需求的第二阶段-界面 1.2 指令 和 界面交互 区别 2.操作系统介绍 2.1 举例说明 驱动软件层 2.2 为什么要有操作系统&#xff1f; 0x03 为什么要进行指令操作&#xff1f; 3.Linux基本指令 l…

模型量化 剪枝bevfusion

量化 剪枝 shared mem 只在block内共享&#xff0c;device glob mem能够所有线程共享

从多线程设计模式到对 CompletableFuture 的应用

大家好&#xff0c;我是 方圆。最近在开发 延保服务 频道页时&#xff0c;为了提高查询效率&#xff0c;使用到了多线程技术。为了对多线程方案设计有更加充分的了解&#xff0c;在业余时间读完了《图解 Java 多线程设计模式》这本书&#xff0c;觉得收获良多。本篇文章将介绍其…

重塑IT审计的未来:数智化审计赋能平台的创新与实践

重塑IT审计的未来&#xff1a;数智化审计赋能平台的创新与实践 一、当前企业开展IT审计面临的挑战 随着信息技术的快速发展、企业数字化转型的持续深入&#xff0c;以及网络安全合规要求的不断增强&#xff0c;企业开展新型IT审计重要性越来越突出&#xff0c;但实施难度却越来…

统计信号处理基础 习题解答10-16

题目&#xff1a; 对于例10.1&#xff0c;证明由观察数据得到的信息是&#xff1a; 解答&#xff1a; 基于习题10-15的结论&#xff0c;&#xff0c;那么&#xff1a; 而根据习题10-15的结论&#xff1a; 此条件概率也是高斯分布&#xff0c;即&#xff1a; 根据相同的计算&a…

一文带你搞清楚AI领域的高频术语!RAG、Agent、知识库、向量数据库、知识图谱、Prompt...都是在讲啥?

随着AI人工智能技术的不断发展&#xff0c;一些领域有关的概念和缩写总是出现在各种文章里&#xff0c;像是Prompt Engineering、Agent 智能体、知识库、向量数据库、RAG 以及知识图谱等等&#xff0c;但是这些技术和概念也的的确确在AI大模型的发展中扮演着至关重要的角色。这…

使用 3D 图形 API 在 C# 中将 PLY 转换为 OBJ

OBJ和PLY是一些广泛使用的 3D 文件格式&#xff0c;易于编写和读取。这篇博文演示了如何以编程方式在 C# 中将 PLY 转换为 OBJ。此外&#xff0c;它还介绍了一种用于 3D 文件格式转换的在线3D 转换器。是的&#xff0c;Aspose.3D for .NET为程序员和非程序员提供了此功能来执行…

Day52 代码随想录打卡|二叉树篇---二叉搜索树中的众数

题目&#xff08;leecode T501&#xff09;&#xff1a; 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;。 如果树中有不止一个众数&#xff0c…

【深度学习】基于EANet模型的图像识别和分类技术

1.引言 1.1.EANet模型简介 EANet&#xff08;External Attention Transformer&#xff09;是一种深度学习模型&#xff0c;它结合了Transformer架构和外部注意力机制&#xff0c;特别适用于图像分类等计算机视觉任务。以下是关于EANet的详细解释&#xff1a; 1.1.1 定义与背…

Node.js版本管理工具-NVM

在开发 Node.js 项目时&#xff0c;经常会遇到需要切换不同版本的 Node.js 的情况。为了方便管理和切换各个版本&#xff0c;我们可以使用一些 Node.js 版本管理工具。 Node Version Manager&#xff1a;简称NVM&#xff0c;最流行的 Node.js 版本管理工具之一。它允许我们在同…