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

HTTPS详解

文章目录

    • HTTPS
      • 加密
    • 常见加密方式
      • 对称加密
      • 非对称加密
      • 非对称+对称
      • 数据指纹
    • 证书
      • CA认证
      • 数字签名
      • 非对称+证书+对称
    • 中间人

HTTPS

这也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层

为什么要加密呢,这主要是因为如果不对传输主体加密,当中间人拿到数据后,可以对其中的关键内容进行保存甚至篡改

例如说把服务器ip改成自己的,假装自己是服务器跟你通信

加密

加密就是把明文转换成暗文,解密则相反

在加密和解密的过程中可能需要某些数据进行辅助,这些数据称为密钥

例如说我们双方通信规定和把数据对114514按位异或

我要传输5201314这个数据,异或之后就是5169904

然后这个数据在网络上传输

你收到5169904之后,再对114514按位异或,就能得到5201314了

这样我们其实就完成了一次加密通信,但是实际情况远比这个复杂

常见加密方式

对称加密

刚刚我们传输的这个过程其实就是对称加密,我们使用了同一个密钥114514,也称之为单密钥加密

常见的由DES 3DES AES TDEA Blowfish RC2

这种加密的方式好处就是计算量小,当然是对于计算机来说

速度快,算法公开,加密效率高

但是有一个问题,我要怎么让你知道我使用的是什么方式加密呢

直接写在明文里吗,那这样别人拿到不也能解密

除此之外,服务器也不能记住所有客户端的密钥,那也太二了

因此这个方式是有很大问题的

非对称加密

这个方式就是说,一个密钥不够用了,那我们设置两个吧

一个是公开密钥,另一个是私有密钥

公开密钥谁都能拿到,谁都能用,但是私有密钥只有我自己用

信息用公钥进行加密,编程密钥,用私钥进行解密,变成明文

但是私钥公钥的加解密非常复杂,而且涉及到数论的知识,实际上运算速度也很慢

非对称+对称

因为如果双方都只使用非对称加密,这样做效率十分低下,而且也是有安全问题的

因此还是需要对称加密的

流程是这样的,当客户端和服务器第一次交流时,客户端获取到服务器中生成的公钥S,而服务器自身有私钥S’

而客户端在本地也生成一个对称加密的密钥C,用公钥S加密之后传递给服务器

之后他俩传递信息就用的是这个对称加密的密钥C

但是这样安全吗??

也不安全,如果中间人就盯着你们俩

中间人也准备了公钥M,私钥M’

当客户端给服务器发送请求时,服务器需要把自己的公钥S返还给客户端

这个时候中间人就拿到报文,偷偷存了一份公钥S,然后进行替换!把服务器的公钥S换成自己的公钥M,然后传给客户端

此时客户端也不道啊,蒙在鼓里,自己的C用M加密,再发回去

中间人用M’解密,得到C,再用S加密传给服务器

这样做双方的交流过程其实是完全在中间人的眼里的!!

数据指纹

数据指纹本身并不是加密的机制,而是一种思想

将数据或者数据的一部分,通过哈希算法生成一串固定的内容

我们可以使用这种思想来存储或者查找数据,因为一旦数据的内容不同了,哈希生成的结果就不同了

证书

既然上面说的非对称加密都不安全了,还有解决方案吗

实际上产生这些问题的原因就是无法确定收到的那个公钥是服务器的还是中间人的

因此我们只需要让服务器的公钥有一个特别显眼的标识

CA认证

服务器在使用HTTPS之前,需要像CA机构申请一份数字证书,里面包含了证书申请者的各种信息,签发信息、域名、申请者、有效时间、最重要的是公钥

就像开锁师傅一定都是在公安局备案过的一样

CA认证也就是权威认证机构颁发的证书,平台也会特定审查,这个认证过程都挺繁琐的,一般也都是找第三方平台帮忙解决

数字签名

数字签名其实就是对数据指纹进行加密,主要是用于验证的,防止数据被篡改

当我们生成了认证证书之后,如何防止证书被篡改呢

CA机构把证书的内容进行数据指纹的提取,然后用CA机构私钥加密,得到一个数字签名

跟随着证书一起发去,当对方收到这些之后,用公钥对数据签名进行解密,然后和证书进行比对,一旦出现差错,就说明证书有问题

这样做,即便是服务器自身想要修改公钥都是不行的,只能向CA机构申请,因为数字签名是由CA私钥生成的,一旦篡改就会被认为不安全

非对称+证书+对称

当客户端访问服务器时,服务器会给客户端返回这个证书

客户端会对证书进行校验,防止证书伪造

判断证书的有效期,颁发机构是否信任,证书是否篡改

这样就能确认公钥一定是服务器的而非中间人的了,后面的对称也都是安全的了

中间人

这时候中间人如果想要篡改证书几乎是不可能的了

如果说是要掉包证书,不能只改公钥,因为哈希值不一样,他没有服务器的私钥,算不出来正确的哈希值

只能向CA机构申请真的证书来掉包

但是真证书里面是有服务器的域名认证信息的,客户端收到之后就一脸蒙蔽

再其次这个申请确实麻烦,需要成本

相关文章:

HTTPS详解

文章目录 HTTPS加密 常见加密方式对称加密非对称加密非对称对称数据指纹 证书CA认证数字签名非对称证书对称 中间人 HTTPS 这也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层 为什么要加密呢,这主要是因为如果不对传输主体加密,当…...

redis作为mybaits(mybatisplus)的缓存

引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>配置application.yml文件 spring:data:redis:# 地址host: 127.0.0.1# 端口port: 6379# 数据…...

【环境配置】AST: Asymmetric Student-Teacher Networks for Industrial Anomaly Detection

文章目录 一、环境的配置二、预处理三、训练四、问题 一、环境的配置 # zheP04_cmp_AST $ conda create -n P04_cmp_AST python3.9 $ conda activate P04_cmp_AST $ conda install -y anaconda::scikit-learn $ conda install -y conda-forge::scipy $ conda install -y conda…...

TinkerTool System for Mac实用软件系统维护工具

TinkerTool System 是一款功能全面且强大的 Mac 实用软件&#xff0c;具有以下特点和功能&#xff1a; 软件下载地址 维护功能&#xff1a; 磁盘清理&#xff1a;能够快速扫描并清理系统中的垃圾文件、临时文件以及其他无用文件&#xff0c;释放宝贵的磁盘空间&#xff0c;保…...

物理学基础精解【9】

文章目录 直线与二元一次方程两直线夹角直线方程斜率两点式方程截距式方程将不同形式的直线方程转换为截距方程直线的一般方程直线一般方程的系数有一个或两个为零的直线 参考文献 直线与二元一次方程 两直线夹角 两直线 y 1 k 1 x b 1 , y 2 k 2 x b 2 形成夹角 a 1 和 a…...

Flask-JWT-Extended登录验证

1. 介绍 """安装:pip install Flask-JWT-Extended创建对象 初始化与app绑定jwt JWTManager(app) # 初始化JWTManager设置 Cookie 的选项:除了设置 cookie 的名称和值之外&#xff0c;你还可以指定其他的选项&#xff0c;例如&#xff1a;过期时间 (max_age)&…...

Altium Designer(AD)百度云下载与安装(附安装步骤)

在我们日常使用当中&#xff0c;Altium designer常常也被简称为AD&#xff0c;是一款一体化的电子产品开发系统软件&#xff0c;主要运行在Windows操作系统上。 我们通过Altium designer把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技…...

无人机视角下的车辆数据集

车辆数据集 无人机视角下的车辆数据集。数据集为无人机俯拍的真实场景下的车辆机动车数据集。数据集已经标注好&#xff0c;yolo格式&#xff0c;txt标签。数据集已经划分好训练集&#xff08;20970张图片&#xff09;验证集&#xff08;5242张图片&#xff09;测试集&#xff…...

【MYSQL】聚合查询、分组查询、联合查询

目录 聚合查询聚合函数count()sum()avg()max()和min()总结 分组查询group by 子句having 子句 联合查询笛卡尔积内连接外连接自连接子查询单行子查询多行子查询from子句使用子查询 合并查询 聚合查询 聚合查询就是针对表中行与行之间的查询。 聚合函数 count() count(列名)&a…...

使用IDA Pro动态调试Android APP

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 关于 android_server android_server 是 IDA Pro 在 Android 设备上运行的一个调试服务器。 通过在 Android 设备上运行android_server&#xff0c;IDA Pro …...

JS中的for...in和for...of有什么区别?

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 在 JavaScript 中&#xff0c;for...in 和 for...of 是两种用于遍历数组&#xff08;或其他可迭代对象&#xff09;的循环语句&#xff0c;但它们之间存在显著的差异。 一、遍历数组 for…in const arr …...

【C++篇】引领C++模板初体验:泛型编程的力量与妙用

文章目录 C模板编程前言第一章: 初始模板与函数模版1.1 什么是泛型编程&#xff1f;1.1.1 为什么要有泛型编程&#xff1f;1.1.1 泛型编程的优势 1.2 函数模板的基础1.2.1 什么是函数模板&#xff1f;1.2.2 函数模板的定义格式1.2.3 示例&#xff1a;通用的交换函数输出示例&am…...

在react中 使用redux

1.安装redux npm install reduxjs/toolkit react-redux 2.创建切片模块化数据 在Src目录下创建store目录&#xff0c;创建moude目录 创建tab.js import { createSlice } from reduxjs/toolkit; const tabSlice createSlice({name: tab,initialState: {Collapse: false,},re…...

计算机毕业设计python+spark知识图谱房价预测系统 房源推荐系统 房源数据分析 房源可视化 房源大数据大屏 大数据毕业设计 机器学习

《PythonSpark知识图谱房价预测系统》开题报告 一、研究背景与意义 随着城市化进程的加速和房地产市场的不断发展&#xff0c;房价成为影响人们生活质量的重要因素之一。准确预测房价不仅有助于政府制定科学的房地产政策&#xff0c;还能为开发商提供市场参考&#xff0c;同时…...

Spring-bean的生命周期-终篇

阶段8&#xff1a;Bean属性设置阶段 属性设置阶段分为3个小的阶段 实例化后阶段Bean属性赋值前处理Bean属性赋值 实例化后阶段 这里也有spring给我们预留了扩展&#xff0c;就是实现InstantiationAwareBeanPostProcessor的postProcessAfterInstantiation方法&#xff0c;开发…...

Kotlin 枚举和 when 表达式(六)

导读大纲 1.1 表示和处理选择: Enums和when1.1.1 声明枚举类和枚举常量1.1.2 使用 when 表达式处理枚举类 1.1 表示和处理选择: Enums和when 在本节中,我们将以在 Kotlin 中声明枚举为例,介绍 when 结构 when可以被视为比 Java 中 switch 结构更强大、更常用的替代品 1.1.1 …...

数字范围按位与

优质博文&#xff1a;IT-BLOG-CN 题目 给你两个整数left和right&#xff0c;表示区间[left, right]&#xff0c;返回此区间内所有数字 按位与 的结果&#xff08;包含left、right端点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;left 5, right 7 输出&#xff1a;…...

WebRTC编译后替换libwebrtc.aar时提示找不到libjingle_peerconnection_so.so库

Loading native library: jingle_peerconnection_so 问题原因&#xff1a;编译的时候只编译了armeabi-v7a的版本&#xff0c;但是应用程序是arm64-v8a&#xff0c;所以无法运行 解决方法&#xff1a;更新编译脚本&#xff0c;加上arm64-v8a进行编译 ./tools_webrtc/android/bu…...

Nature Electronics |无感佩戴的纤维基电子皮肤(柔性半导体器件/柔性健康监测/电子皮肤/柔性传感/纤维器件)

英国剑桥大学Yan Yan Shery Huang课题组,在《Nature Electronics 》上发布了一篇题为“Imperceptible augmentation of living systems with organic bioelectronic fibres”的论文,第一作者为王文宇博士(Wenyu Wang),论文内容如下: 一、 摘要 利用电子技术对人类皮肤和…...

深入剖析Docker容器安全:挑战与应对策略

随着容器技术的广泛应用&#xff0c;Docker已成为现代应用开发和部署的核心工具。它通过轻量级虚拟化技术实现应用的隔离与封装&#xff0c;提高了资源利用率。然而&#xff0c;随着Docker的流行&#xff0c;其安全问题也成为关注焦点。容器化技术虽然提供了良好的资源隔离&…...

后端技术打怪升级之路

记录后端技术打怪升级之路&#xff0c;如下是个人总记的主要技术栈&#xff0c;仅供参考&#xff01; 备注&#xff1a; 同名文章一同步发表于个人网站及微信公众号 个人网站 工藤新一的技术小窝...

Leetcode 3296. Minimum Number of Seconds to Make Mountain Height Zero

Leetcode 3296. Minimum Number of Seconds to Make Mountain Height Zero 1. 解题思路2. 代码实现 题目链接&#xff1a;3296. Minimum Number of Seconds to Make Mountain Height Zero 1. 解题思路 这一题的思路的话我们采用的是一个二分法的思路&#xff0c;找到一个最大…...

计算机毕业设计之:基于深度学习的路面检测系统(源码+部署文档+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

测试面试题:接口自动化测试流程?

1、测试用例编写&#xff1a;根据接口的需求和功能&#xff0c;编写相应的测试用例。测试用例应包括正常、边界和异常等各种情况下的测试。 2、准备测试数据&#xff1a;根据测试用例的要求&#xff0c;准备相应的测试数据。数据可以通过手动输入、数据库查询、文件导入等方式进…...

Golang面试题

在Golang(也称为Go语言)工程师的面试中,可能会遇到各种技术性和概念性的问题。 一、基础部分 Golang 中 make 和 new 的区别? 共同点:两者都用于分配内存。不同点: make 专为 slice、map 和 channel 设计,返回初始化后的(非零)值。new 分配内存并返回指向该内存的指针…...

《飞机大战游戏》实训项目(Java GUI实现)(设计模式)(简易)

目录 一、最终实现后&#xff0c;效果如下。 &#xff08;1&#xff09;简单介绍本游戏项目&#xff08;待完善&#xff09; &#xff08;2&#xff09;运行效果图&#xff08;具体大家自己可以试&#xff09; 初始运行情况。 手动更换背景图。 通过子弹攻击敌机&#xff0c;累…...

计算机毕业设计 基于 Hadoop平台的岗位推荐系统 SpringBoot+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…...

【数据结构与算法】LeetCode:二分查找

文章目录 二分查找二分查找搜索插入位置 &#xff08;Hot 100&#xff09;x 的平方根搜索二维矩阵&#xff08;Hot 100&#xff09;在排序数组中查找元素的第一个和最后一个位置 &#xff08;Hot 100&#xff09;搜索旋转排序数组 &#xff08;Hot 100&#xff09;寻找旋转排序…...

专题·大模型安全 | 生成式人工智能的内容安全风险与应对策略

正如一枚硬币的两面&#xff0c;生成式人工智能大模型&#xff08;以下简称“生成式大模型”&#xff09;在助力内容生成的同时也潜藏风险&#xff0c;成为虚假信息传播、数据隐私泄露等问题的温床&#xff0c;加剧了认知域风险。与传统人工智能&#xff08;AI&#xff09;相比…...

CORS跨域+Nginx配置、Apache配置

CORS&#xff08;Cross-Origin Resource Sharing&#xff0c;跨源资源共享&#xff09;是一种机制&#xff0c;它使用额外的HTTP头部来告诉浏览器允许一个网页运行的脚本从不同于它自身来源的服务器上请求资源&#xff08;例如字体、JavaScript、CSS等&#xff09;。这是一种安…...