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

Https解决了Http的哪些问题

部分内容来源:小林coding


详细解析

Http的风险

HTTP 由于是明文传输,所以安全上存在以下三个风险:

1.窃听风险

比如通信链路上可以获取通信内容,用户号容易没。

2.篡改风险

比如强制植入垃圾广告,视觉污染,用户眼容易瞎。

3.冒充风险

比如冒充淘宝网站,用户钱容易没


HTTPS如何解决风险

HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议,可以很好的解决了上述的风险:

1.信息加密

交互信息无法被窃取,但你的号会因为「自身忘记」账号而没。

2.校验机制

无法篡改通信内容,篡改了就不能正常显示,但百度「竞价排名」依然可以搜到垃圾广告。

3.身份证书

证明淘宝是真的淘宝网,但你的钱还是会因为「剁手」而没。


HTTP是如何解决上面三个风险的

1.混合加密(消息保密)

HTTPS 采用的是对称加密+非对称加密结合的「混合加密」方式:

  1. 会话开始时使用非对称加密(公钥算法)
  • 发送方使用接收方的公钥加密一个对称密钥(私钥)(称为会话密钥)。
  • 由于非对称加密解决了密钥交换的安全问题,这个过程确保了会话密钥的安全传输。

  1. 会话过程中使用对称加密(私钥算法)
  • 一旦会话密钥安全地传输到接收方,后续的通信就使用这个对称密钥(私钥)进行加密明文数据解密
  • 由于对称加密速度快,适合大量数据的加密,这提高了通信的效率

你妈个比,说这么多sb专业名词能不能说点人话

人话:我们发送方和接收方都用私钥加密数据(因为快),然后我们要用接收方的公钥加密发送方的私钥,然后把发送方机密后的私钥发送到接收方用让他的公钥解开,从而用发送方的私钥解开加密数据

句话:我们都用私钥加密,只是私钥传输给对方使用的时候为了防止泄漏所以我们加密


采用「混合加密」的方式的原因

1.对称加密(私钥)只使用一个密钥,运算速度快,密钥必须保密,无法做到安全的密钥交换。

2.非对称加密(公钥)使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,解决了密钥交换问题但速度慢


2.摘要算法(签名算法)+数字签名(防止签名伪造)

我们要判断内容是否被篡改

为了保证传输的内容不被篡改,我们需要对内容计算出一个「指纹」,然后同内容一起传输给对方。

对方收到后,先是对内容也计算出一个「指纹」,然后跟发送方发送的「指纹」做一个比较,如果「指纹」相同,说明内容没有被篡改,否则就可以判断出内容被篡改了。

那么,在计算机里会用摘要算法(哈希函数)来计算出内容的哈希值,也就是内容的「指纹」

这个哈希值是唯一的,且无法通过哈希值推导出内容

私钥是由服务器端保管,然后服务器端会向客户端颁发对应的公钥。如果客户端收到的信息,能被公钥解密,就说明该消息是由服务器发送的

例子:

引入了数字签名算法后,你就无法模仿你爸爸的字迹来请假了,你爸爸手上持有着私钥,你老师持有着公钥。这样只有用你爸爸手上的私钥对请假条进行「签名」,老师通过公钥看能不能解出这个「签名」,如果能解出并且确认内容的完整性,就能证明是由你爸爸发起的请假条,这样老师才允许你请假,否则老师就不认

如何避免【伪造签名】
使用非对称算法(公钥加密)

那为了避免这种情况,计算机里会用非对称加密算法来解决,共有两个密钥:

  • 一个是公钥,这个可以公开给所有人的;
  • 一个是私钥,这个必须由本人管理,不可泄露。

这两个密钥可以双向加解密的,比如可以用公钥加密内容,然后用私钥解密,也可以用私钥加密内容,公钥解密内容。

流程的不同,意味着目的也不相同

一般私钥和公钥都是一对多的关系

公钥加密,私钥解密(保证安全)

这个目的是为了保证内容传输的安全,因为被公钥加密的内容,其他人是无法解密的,只有持有私钥的人,才能解密出实际的内容。

私钥加密,公钥解密(防止伪造,确认身份)

这个目的是为了保证消息不会被冒充,因为私钥是不泄露的,如果公钥能正常解密出私钥加密的内容,就能证明消息是来源于持有私钥身份的人发送的。

一般我们不会用私钥加密和公钥解密实际传输的内容,因为非对称加密的计算比较耗费性能的,所以非对称加密算法的重点主要在于通过「私钥加密,公钥解密」的方式,来确认消息的身份,我们常说的数字签名算法,就是用的这种方式,不过对内容的签名本身,而是对内容的哈希值加密

3.数字证书(防止公钥伪造)

前面我们知道:

  • 可以通过哈希算法来保证消息的完整性
  • 可以通过数字签名来保证消息的来源可靠性(能确认消息是由持有私钥的一方发送的);

但是这还远远不够,还缺少身份验证的环节,万一公钥是被伪造的呢?

还是请假的例子,虽然你爸爸持有私钥,老师通过是否能用公钥解密来确认这个请假条是不是来源你父亲的。

但是我们还可以自己伪造出一对公私钥啊!

例子:

你找了个铁匠,偷偷把老师桌上和你爸爸管家的公钥,换成了你的公钥,那么下次你在请假的时候,你继续模仿你爸爸的字迹写了个请假条,然后用你的私钥做了【数字签名】。

但是老师并不知道自己的公钥已经被掉包了,所以他还是按照往常一样用公钥解密,由于这个公钥和你的私钥是配对的,老师当然能通过这个被掉包的公钥解密出来,并且确认了内容的完整性,于是老师就会以为是你父亲写的请假条,又允许你请假了。

好家伙,为了一个请假,真的是上智斗勇。

后面的老师和父亲发现了你伪造公私钥的事情后,决定重新商量一对策略来应对你这个臭家伙。

正所谓魔高一尺,道高一尺

既然伪造公私钥那么随意,所以你爸爸把他的公钥注册到警察局,警察局用他们自己的私钥对你父亲的公钥做了个数字签名

然后把你爸爸的「个人信息 + 公钥 + 数字签名」打包成一个数字证书,也就是说这个数字证书包含你爸爸的公钥

这样,你爸爸如果因为家里确实有事要向老师帮你请假的时候,不仅会用自己的私钥对内容进行签名,还会把数字证书给到老师。

老师拿到了数字证书后,首先会去警察局验证这个数字证书是否合法,因为数字证书里面有警察局的数字签名,警察局的公钥是全世界公认合法的,用自己的公钥解密,如果解密成功,就说明这个数字证书是警察局签发的,老师就会信任数字证书里的公钥是你爸爸的公钥,然后用这个公钥解密你爸爸的签名。

由于通过警察局验证了数字证书是合法的,那么就能证明这个公钥就是你父亲的,于是老师就可以安心的用这个公钥解密签名,如果能解密出来,就证明是你爸爸写的请假条。

正是通过了一个权威机构来证明你爸爸的身份,所以你的伪造公私钥这个小伎俩就没用了。

在计算机里,这个权威的机构就叫做CA(数字证书认证机构),将服务器的公钥放到数字证书中(由数字证书认证机构颁发的),中,只要证书是可信的,公钥就是可信的

总结:我们要去权威机构去注册


简短总结

Http存在安全问题

例如

1.明文传输存在的窃听风险

2.传输数据的篡改风险

3.公钥修改的冒充风险

我们用混合加密(公私钥混合使用)来解决明文传输的数据窃听风险

发送方的私钥加密数据,然后发送给接收方

发送方的私钥通过接收方的公钥加密数据,然后把自己的加密的私钥传过去

接收方用自己的私钥解开发送方加密传过来的私钥,用这个发送方私钥来解开加密的数据

通过摘要算法+数字签名解决数据篡改的风险

密内容唯一Hash值【指纹】发送过去,发送方对内容做运算算出【指纹】,判断指纹是否相同

我们会把我们的数据通过摘要算法做一个运算,得到一个【Hash运算值】,这个值就是一个【指纹】

然后我们会通过【数字签名】,什么是【数字签名】?

就是我们在通过密钥加密(我们还是用混合加密)我们的唯一的【Hash运算值】,得到的就是我们的数字签名。

这样子就可以得到我们当前内容的唯一Hash值+加密Hash值防止我们的唯一Hash值被篡改

同时接收方通过同样的哈希算法对内容进行计算,再跟我加密传过来的Hash值进行对比

我们可以知道:

  • 可以通过哈希算法来保证消息的完整性
  • 可以通过数字签名来保证消息的来源可靠性(能确认消息是由持有私钥的一方发送的);

通过数字证书防止公钥被篡改和冒充的风险

我们刚刚都是公钥合法的情况,但是公钥被伪造了呢?

例如我们伪造一个和官方网站一模一样的网站?

所以说我们会有个【合法注册中心】,也就是CA(数字证书认证机构)

我们一般「个人信息 + 公钥 + 数字签名」打包成一个数字证书,然后去CA验证,只要证书是可信的那么我们的公钥就是可信的

总结:我们要去权威机构去注册我们的合法公钥信息

相关文章:

Https解决了Http的哪些问题

部分内容来源:小林coding 详细解析 Http的风险 HTTP 由于是明文传输,所以安全上存在以下三个风险: 1.窃听风险 比如通信链路上可以获取通信内容,用户号容易没。 2.篡改风险 比如强制植入垃圾广告,视觉污染&#…...

OpenCV给图像添加噪声

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 如果你已经有了一张干净的图像,并希望通过编程方式向其添加噪声,可以使用 OpenCV 来实现这一点。以下是一个简单的例子&a…...

湖北中医药大学谱度众合(武汉)生命科技有限公司研究生工作站揭牌

2025年2月11日,湖北中医药大学&谱度众合(武汉)生命科技有限公司研究生工作站揭牌仪式在武汉生物技术研究院一楼101会议室举行,湖北中医药大学研究生院院长刘娅教授、基础医学院院长孔明望教授、基础医学院赵敏教授、基础医学院…...

欢乐力扣:快乐数

文章目录 1、题目描述2、思路1代码 1、题目描述 快乐数。  编写一个算法来判断一个数 n 是不是快乐数。  快乐数定义为:对于一个正整数,每次不断将其转化成 每位数字的平方和。 判断是否最终和会为1,是1就是快乐数,否则不是。 …...

【聊天室后端服务器开发】功能设计-框架与微服务

服务器功能设计 微服务思想应用 微服务架构 主要组成分析 客户端 客户端通过 HTTP 协议与网关进行交互,进行操作如用户注册、好友申请等客户端只需要知道网关的地址,无需关心后端服务的具体实现 网关 作为系统的统一入口,网关负责接收客…...

国标28181协议在智联视频超融合平台中的接入方法

一. 国标28181介绍 国标 28181 协议全称是《安全防范视频监控联网系统信息传输、交换、控制技术要求》,是国内视频行业最重要的国家标准,目前有三个版本: 2011 年:推出 GB/T 28181-2011 版本,为安防行业的前端设备、平…...

让网页“浪“起来:打造会呼吸的波浪背景

每次打开那些让人眼前一亮的网页时,你是否有注意到那些看似随波逐流的动态背景?今天咱们不聊高深的技术,就用最朴素的CSS,来解锁这个让页面瞬间鲜活的秘籍。无需JavaScript,不用复杂框架,准备好一杯咖啡&am…...

linux-多进程基础(1) 程序、进程、多道程序、并发与并行、进程相关命令,fork

程序是什么 程序是包含一系列信息的文件。这些信息描述了如何在运行时创建一个进程,包含二进制格式标识、机器语言指令、程序入口地址、数据、符号表及重定位表、共享库信息及其他信息 二进制格式标识,每个程序包含了描述可执行文件的元信息(是否可读之…...

美颜相机1.0

项目开发步骤 1 界面开发 美颜相机界面构成: 标题 尺寸 关闭方式 位置 可视化 2 创建主函数调用界面方法 3 添加两个面板 一个是按钮面板一个是图片面板 用JPanel 4 添加按钮到按钮面吧【注意:此时要用初始化按钮面板的方法initBtnPanel 并且将按钮添…...

Docker内存芭蕾:优雅调整容器内存的极限艺术

title: “💾 Docker内存芭蕾:优雅调整容器内存的极限艺术” author: “Cjs” date: “2025-2-23” emoji: “🩰💥📊” 当你的容器变成内存吸血鬼时… 🚀 完美内存编排示范 📜 智能内存管家脚本…...

gitlab初次登录为什么登不上去

今天又写了一次gitlab安装后,第一次登录的问题。 gitlab工作笔记_gitlab默认用户名密码-CSDN博客 因为又掉这个坑里了。 # 为什么第一次登录这么难? 第一是因为gitlab启动的时间很长,有时候以为装错了。 第二是初始密码,如果…...

单链表相关操作(基于C语言)

文章目录 单链表定义版本一(可自己选择是否含头节点)创建单链表打印单链表对单链表进行冒泡排序删除单链表中值为key的节点求单链表表长在单链表位序为i的位置插入新元素e 单链表定义 typedef struct node {int data;struct node* next; }LinkNode,*LinkList;版本一(可自己选择…...

SPRING10_SPRING的生命周期流程图

经过前面使用三大后置处理器BeanPostProcessor、BeanFactoryPostProcessor、InitializingBean对创建Bean流程中的干扰,梳理出SPRING的生命周期流程图如下...

从零到一学习c++(基础篇--筑基期十一-类)

从零到一学习C(基础篇) 作者:羡鱼肘子 温馨提示1:本篇是记录我的学习经历,会有不少片面的认知,万分期待您的指正。 温馨提示2:本篇会尽量用更加通俗的语言介绍c的基础,用通俗的语言去…...

Java String 类

Java String 类常用方法详解 在 Java 编程里,字符串操作十分常见,而 String 类作为 Java 标准库的核心类,用于表示不可变的字符序列。任何对字符串的修改操作都会返回一个新的字符串对象,不会改变原始字符串。本文将详细介绍 Str…...

P8665 [蓝桥杯 2018 省 A] 航班时间

P8665 [蓝桥杯 2018 省 A] 航班时间 题目代码分析 题目 代码 #include <iostream> #include <vector> #include <string> #include <algorithm> #include <math.h> #include <queue>#include <cctype> using namespace std; int t;…...

Vue3项目与pnpm使用教程

文章目录 Vue3项目与pnpm使用教程一、pnpm简介二、安装pnpm三、创建Vue3项目四、运行Vue3项目五、管理项目依赖六、配置pnpm七、使用pnpm的额外功能八、总结 Vue3项目与pnpm使用教程 一、pnpm简介 pnpm是一个高性能的Node.js包管理工具&#xff0c;相较于npm和yarn&#xff0…...

C++初阶——简单实现list

目录 1、前言 2、List.h 3、Test.cpp 1、前言 1. 简单实现std::list&#xff0c;重点&#xff1a;迭代器&#xff0c;类模板&#xff0c;运算符重载。 2. 并不是&#xff0c;所有的类&#xff0c;都需要深拷贝&#xff0c;像迭代器类模板&#xff0c;只是用别的类的资源&am…...

C/C++后端开发面经

字节跳动 客户端开发 实习 一面(50min) 自我介绍是否愿意转语言,是否只愿意搞后端选一个项目来详细谈谈HTTP和HTTPS有什么区别?谈一下HTTPS加密的具体过程&#xff1a; 非对称加密 对称加密 证书认证的方式 非对称加密是为了保证对称密钥的安全性。 对称…...

linux 编辑器

1.三种模式 2.图例 3.wq 4.光标的使用...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...