关于HTTPS
目录
什么是加密
对称加密
非对称加密
中间人攻击
引入证书
HTTPS是一个应用层的协议,是在HTTP协议的基础上引入了一个加密层.
HTTP协议内容都是按照文本的方式明文传输,这就导致在传输的过程中出现一些被篡改的情况.
运营商劫持事件
未被劫持的效果,点击下载按钮,就会弹出天天动听的下载链接.
天天动听被劫持的效果,点击下载按钮,就会弹出QQ浏览器的下载链接.
由于我们通过网络传输的任何数据包都会经过运营商的网络设备(路由器,交换机等),那么运营商的网络设备就可以解析出你传输的数据内容,并进行篡改.
点击下载按钮,起始就是在给服务器发送了一个HTTP请求,获取到的HTTP响应就包含了该App的下载链接,运营商劫持之后,就发现这个请求是要下载天天动听,那么就会自动的把交给用户的响应给篡改成QQ浏览器的下载地址了.
不止运营商可以劫持,其他的黑客也可以利用类似的手段来进行劫持,来窃取用户的隐私信息或者篡改内容.
所以,在互联网上,明文传输时比较危险的事情.
HTTPS就是在HTTP的基础上进行了加密,进一步的来保证用户的信息安全.
什么是加密
HTTPS=HTTP+加密层(SSL),SSL是用来加密的协议,也叫做TLS.
进行安全传输,核心就是加密.
加密就是把明文(要传输的信息)进行一系列的变换,生成密文.
解密就是把密文在进行一系列变换,还原成明文.
在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据成为密钥.
对称加密
加密其中一种最简单有效的办法,叫做对称加密.
加密过程:明文+密钥=>密文;
解密过程:密文+密钥=>明文.
同一个密钥,既可以用来加密,也可以用来解密,这就是对称密钥.
对称加密安全性的前提是,密钥不能被黑客知道.
由于黑客不知道密钥是什么,即使黑客截获了加密的数据,也不知道数据是什么意思.
但事情并没有这么简单,服务器同一时刻是要给很多客户端提供服务的,这么多客户端,每个客户端的密钥必须是不同的(如果是相同的,黑客作为一个客户端就很容易把密钥获得),因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这是个很麻烦的事情.
更理想的做法是在客户端和服务器建立连接的时候,双方协定确定这次的密钥是什么 .
但是如果直接把密钥进行明文传输,那么黑客也就能获得密钥了,此时后续的加密操作就形同虚设了.
因此密钥的传输必须加密传输.
但是此时如果还对密钥的传输采用对称加密的方式,就仍需要双方协定一个密钥的密钥,显然这是行不通的.
那么此时就需要引入非对称加密了.
非对称加密
非对称加密要用到两个密钥,一个叫做公钥,一个叫做私钥.
公钥和私钥是配对的,最大的缺点就是运算速度非常慢,比对称加密要慢很多.
通过公钥对明文加密,变成密文;通过私钥对密文解密,变成明文.也可以反着用.
客户端在本地生成对称密钥,通过公钥加密,发给服务器.
由于中间的网络设备没有私钥,即使截获了数据,也无法还原出内部的原文,也就无法获取到对称密钥.
服务器通过私钥解密,还原出客户端发送的对称密钥,并且使用这个对称密钥加密给客户端返回的响应数据.
后续客户端和服务器的通信都只用对称加密即可.由于该密钥只有客户端和服务器两个主机知道,其他设备不知道密钥即使截获数据也没有意义.
注意:由于对称加密的效率比非对称加密高很多,因此只有在开始阶段协商密钥的时候采用非对称加密,后续的传输仍然使用对称加密.
中间人攻击
有了上述过程之后,那么客户端如何获取到公钥呢?
如果采用简单询问的方式,就会出现中间人攻击的情况.
黑客在中间设备自己也生成一对非对称密钥,称为pub2和pri2.同时黑客自己存下pub1.黑客拿着自己的pri2进行解密,就拿到了对称密钥key,然后黑客继续使用服务器的pub1公钥,对key重新加密,继续传送给服务器.
这就导致对称密钥泄露了,此时黑客就可以拿着这个对称密钥对后续的数据进行篡改了.
引入证书
解决这个中间人攻击的关键,在于让客户端能够辨别当前的公钥响应是服务器真实的公钥.
引入证书就可以解决这个问题.
在客户端和服务器刚建立连接的时候,服务器就不单单给客户端返回公钥了,而是返回一个证书.
在这个证书里就包含了刚才的公钥,也包含了网站的身份信息.
这个证书就好比人的身份证,作为这个网站的身份标识,搭建一个HTTPS网站要在CA机构先申请一个证书(类似去公安局办身份证).
这个证书可以理解成是一个结构化的字符串,里面包含了证书发布机构,证书有效期,公钥,证书所有者,签名等信息.
当客户端获取到这个证书之后,会对证书进行校验(防止证书是伪造的).
如何校验?
- 判定证书的有效期是否过期.
- 判定证书的发布机构是否受信任(操作系统中已经内置了受信任的证书发布机构).
- 验证证书是否被篡改:从系统中拿到该证书发布机构的公钥,对签名进行解密,得到一个hash值,称为数据摘要,设为hash1.然后计算整个证书的hash值,设为hash2.对比hash1和hash2是否是相等的.如果相等,则说明证书是没有被篡改过的.
证书可以在浏览器里查看
黑客能够篡改证书?
认证机构也有一组公钥私钥,私钥用来加密hash值得到签名了,公钥是客户端拥有的使用公钥解密签名获取hash值.
如果黑客替换了公钥,此时客户端计算的hash2和签名解密出来的hash1就对不上了,客户端就知道无效了.
另外黑客不知道认证机构的私钥,即使黑客自己计算好了新的篡改后的hash值,也无法加密生成签名!
相关文章:

关于HTTPS
目录 什么是加密 对称加密 非对称加密 中间人攻击 引入证书 HTTPS是一个应用层的协议,是在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输,这就导致在传输的过程中出现一些被篡改的情况. 运营商劫持事件 未被劫持的效果,点击下载按钮,就会…...

安全配置审计概念、应用场景、常用基线及扫描工具
软件安装完成后都会有默认的配置,但默认配置仅保证了服务正常运行,却很少考虑到安全防护问题,攻击者往往利用这些默认配置产生的脆弱点发起攻击。虽然安全人员已经意识到正确配置软件的重要性,但面对复杂的业务系统和网络结构、网…...

【计算机毕业设计】python+django数码电子论坛系统设计与实现
本系统主要包括管理员和用户两个角色组成;主要包括:首页、个人中心、用户管理、分类管理、数码板块管理、数码评价管理、数码论坛管理、畅聊板块管理、系统管理等功能的管理系统。 后端:pythondjango 前端:vue.jselementui 框架&a…...

最优化方法Python计算:无约束优化应用——神经网络回归模型
人类大脑有数百亿个相互连接的神经元(如下图(a)所示),这些神经元通过树突从其他神经元接收信息,在细胞体内综合、并变换信息,通过轴突上的突触向其他神经元传递信息。我们在博文《最优化方法Python计算:无约…...

Spring Data Redis对象缓存序列化问题
相信在项目中,你一定是经常使用 Redis ,那么,你是怎么使用的呢?在使用时,有没有遇到同我一样,对象缓存序列化问题的呢?那么,你又是如何解决的呢? Redis 使用示例 添加依…...
自动驾驶代客泊车AVP巡航规划详细设计
目 录 巡航规划详细设计... 1 修改记录... 2 目 录... 3 1 背景... 5 2 系统环境... 6 2.1 巡航规划与其它模块联系... 6 2.2 巡航规划接口说明... 6 3 规划模块设计... 9 3.1 巡航规划架构图... 9 3.2 预处理... 10 3.3 Planner. 10 3.3.1 Geometry planner. 10 …...

亚马逊云科技 re:Invent 2023 产品体验:亚马逊云科技产品应用实践 国赛选手带你看 Elasticache Serverless
抛砖引玉 讲一下作者背景,曾经参加过国内世界技能大赛云计算的选拔,那么在竞赛中包含两类,一类是架构类竞赛,另一类就是 TroubleShooting 竞赛,对应的分别为亚马逊云科技 GameDay 和亚马逊云科技 Jam,想必…...
Flink on K8S集群搭建及StreamPark平台安装
1.环境准备 1.1 介绍 在使用 Flink&Spark 时发现从编程模型, 启动配置到运维管理都有很多可以抽象共用的地方, 目前streampark提供了一个flink一站式的流处理作业开发管理平台, 从流处理作业开发到上线全生命周期都做了支持, 是一个一站式的流出来计算平台。 未来spark开…...
SpringBoot如何优雅的处理免登录接口
在项目开发过程中,会有很多API接口不需要登录就能直接访问,比如公开数据查询之类的 ~ 常规处理方法基本是 使用拦截器或过滤器,拦截需要认证的请求路径。在拦截器中判断session或token信息,如果存在则放行,否则跳转到…...

元旦档首日票房超4.69亿,“下雪场尴尬”上热搜!
哇塞,元旦假期终于来啦!🎉在这个喜庆的时刻,电影院也热闹非凡,据猫眼专业版数据显示,截至12月30日,2023年元旦档首日票房竟然超过了4.69亿!这简直是个天文数字啊!&#x…...
CentOS系统中设置IP地址的方式和存在的问题
在CentOS系统中设置IP地址通常涉及以下步骤: 打开网络接口配置文件: 使用文本编辑器(如vi、nano或emacs)打开 /etc/sysconfig/network-scripts/ifcfg-eth0 文件。这里的"eth0"是网卡的名称,如果你的系统中有…...

使用vmware,在ubuntu18.04中使用笔记本的摄像头
步骤1:在windows中检查相机状态 win10系统中,在左下的搜索栏,搜索“相机”,点击进入即可打开相机,并正常显示图像。 注意:如果相机连接到了虚拟机,则不能显示正常。 步骤2:在ubuntu…...

中间件系列 - Redis入门到实战(高级篇-分布式缓存)
前言 学习视频: 黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记,如有侵扰,联系删除 学习目标 Redis持久化Redis主从…...

使用Visual Studio调试VisionPro脚本
使用Visual Studio调试VisionPro脚本 方法一 : 修改项目文件 csproj步骤: 方法二 : Visual Studio附加功能步骤: 方法一 : 修改项目文件 csproj 步骤: 开启VisionPro脚本调试功能 创建一个VisionPro程序…...

Ubuntu安装K8S的dashboard(管理页面)
原文网址:Ubuntu安装k8s的dashboard(管理页面)-CSDN博客 简介 本文介绍Ubuntu安装k8s的dashboard(管理页面)的方法。 Dashboard的作用有:便捷操作、监控、分析、概览。 相关网址 官网地址:…...

zookeeper之集群搭建
1. 集群角色 zookeeper集群下,有3种角色,分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。 领导者(Leader): 事务请求(写操作)的唯一调度者和处理者,保…...

从0开始界面设计师 Qt Designer
QT程序界面的 一个个窗口、控件,就是像上面那样用相应的代码创建出来的。 但是,把你的脑海里的界面,用代码直接写出来,是有些困难的。 很多时候,运行时呈现的样子,不是我们要的。我们经常还要修改代码调整界…...

Html / CSS刷题笔记
WebKit是一个开源的浏览器引擎,它最初是由苹果公司开发的,并且被广泛用于Safari浏览器和其他基于WebKit的浏览器,比如Google Chrome的早期版本。它也是构建许多移动设备浏览器的基础。WebKit的主要功能是解析HTML和CSS,并将其渲染…...

关于“Python”的核心知识点整理大全51
目录 17.2.2 添加自定义工具提示 bar_descriptions.py 17.2.3 根据数据绘图 python_repos.py 17.2.4 在图表中添加可单击的链接 python_repos.py 17.3 Hacker News API hn_submissions.py 17.4 小结 往期快速传送门👆(在文章最后)&a…...

Termius for Mac/Win:一站式终端模拟器、SSH 和 SFTP 客户端软件的卓越选择
随着远程工作和云技术的普及,对于高效安全的远程访问和管理服务器变得至关重要。Termius,一款强大且易用的终端模拟器、SSH 和 SFTP 客户端软件,正是满足这一需求的理想选择。 Termius 提供了一站式的解决方案,允许用户通过单一平…...

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

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
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任务 三、…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...