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

了解https原理,对称加密/非对称加密原理,浏览器与服务器加密的进化过程,https做了些什么

最开始的加密

浏览器与服务器之间需要防止传输的数据被黑客破解。因此,浏览器在发送数据时会对数据进行加密,并把加密的密钥(或密钥的某些部分)放在数据的某一个区域中。服务器收到数据后,会提取密钥并用它来解密数据。这样的加密方式称为 对称加密

对称加密的缺点

问题在于,当多个客户端都使用相同的加密算法时,黑客可以通过拦截和分析加密数据,推测出加密密钥的位置。这个过程叫做密钥泄漏,因此,对称加密 在密钥管理上有较大风险,一旦密钥被泄漏,通信的安全性就会受到威胁。因此,传统的对称加密不完全安全。


非对称加密

后来,科学家们发现了 非对称加密 的方法,这种方法解决了对称加密中的密钥管理问题。

非对称加密原理

非对称加密的基本思想是:使用公钥加密,使用私钥解密。其中,公钥可以公开,任何人都可以用它来加密消息,而私钥只有对应的接收方才能拥有,只有拥有私钥的人才能解密消息。

加密过程如下:
  1. 服务器拥有一对 公钥私钥,其中 公钥 是公开的,任何人都可以获取,而 私钥 则严格保密。
  2. 客户端想要与服务器进行通信时,会使用 服务器的公钥 来加密消息。
  3. 服务器收到消息后,用自己的 私钥 解密消息。

通过这种方式,只有服务器能够解密客户端发送的消息,确保了数据的机密性。

非对称加密的缺点

  • 这种方法存在一个问题,即 服务器到客户端 的消息并没有加密,黑客依然可以拦截服务器发送的消息,因为它们是明文的。

双向非对称加密

为了更好地保护通信的双方,提出了 双向非对称加密。在这种加密模式中,双方都有公钥和私钥,并通过交换公钥进行加密和解密。

双向非对称加密流程:

  1. 客户端和服务器都各自拥有一对公钥和私钥。
  2. 客户端向服务器发送请求时,会先发送自己的公钥给服务器。
  3. 服务器收到客户端的公钥后,也发送自己的公钥给客户端。
  4. 然后,客户端和服务器互相使用对方的公钥加密消息,自己用私钥解密对方的消息。

双向非对称加密的缺点

  • 计算资源消耗大:非对称加密算法(如 RSA)相较于对称加密(如 AES)来说,计算资源消耗较大,可能会导致网页渲染变慢,影响用户体验。

非对称加密 + 对称加密的结合

为了解决双向非对称加密中的性能问题,现代网络通信通常结合了 非对称加密对称加密

加密流程:

  1. 第一次请求:客户端在与服务器建立连接时,使用 服务器的公钥 加密一个随机生成的 对称密钥(例如 AES 密钥)。
  2. 服务器使用 自己的私钥 解密该对称密钥。
  3. 一旦密钥交换完成,客户端和服务器就可以使用这个对称密钥进行加密和解密数据,后续的数据传输都使用高效的对称加密进行保护。

这种方式既保证了通信的安全性,又避免了非对称加密带来的性能问题。


非对称加密 + 对称加密的结合 —— 升级版

在实际应用中,单纯的非对称加密和对称加密结合方式依然存在一些潜在的安全隐患,尤其是客户端生成的私钥较容易被猜测出来。为此,引入了 随机数生成 来进一步提高安全性。

升级版的加密流程:

  1. 客户端随机数:客户端在第一次通信时,向服务器发送一个随机数 1。
  2. 服务器随机数:服务器回应时,会发送一个包含随机数 2 的请求。
  3. 客户端生成随机数:客户端收到服务器的请求后,会生成一个随机数 3,并用 服务器的公钥 加密后发送给服务器。
  4. 双方密钥生成:客户端和服务器通过这三个随机数生成对称加密密钥(如 AES 密钥)。
  5. 双方用这个密钥进行后续的数据加密和解密。

校验密钥一致性

在密钥生成后,双方需要校验生成的对称密钥是否一致,以确保双方的随机数生成的秘钥都是正确的


非对称加密 + 对称加密的结合的漏洞 —— 中间人攻击

虽然 非对称加密 + 对称加密 的结合在理论上很安全,但仍然存在 中间人攻击 的风险。

中间人攻击示意图:

客户端 <----> 恶意服务器 <----> 目标服务器

攻击流程:

  1. 客户端发起请求时,恶意服务器伪装成目标服务器,并向客户端发送自己的 公钥
  2. 客户端误将数据用恶意服务器的 公钥 加密,并发送给恶意服务器。
  3. 恶意服务器用自己的 私钥 解密数据,获得客户端的私钥和密钥信息。
  4. 恶意服务器将数据转发给目标服务器,并伪装成客户端进行后续通信。
  5. 通过这种方式,恶意服务器可以窃取通信双方的敏感信息。

CA证书(HTTPS认证)

为了防止中间人攻击,SSL/TLS 引入了 CA(证书颁发机构)认证。CA机构充当了一个“公证人”的角色,帮助验证服务器的身份。

证书签发过程:

  1. 服务器将域名、公司信息等提交给 CA 进行认证。
  2. CA 使用其 私钥 对服务器信息进行加密,生成一个 数字签名
  3. 将该签名与服务器信息一起打包,返回给服务器,这样就完成了认证。

证书验证过程:

当客户端与经过 CA 认证的服务器建立连接时:

  1. 服务器将自己的证书(包含公钥和数字签名)发送给客户端。
  2. 客户端计算该证书的 hash 值(称为 hash1),然后使用 CA 的公钥 解密数字签名得到 hash2
  3. 如果 hash1hash2 相同,则说明证书没有被篡改,通信是安全的。
  4. 如果证书验证失败,浏览器会警告用户连接不安全。

CA证书服务器的认识

为了避免单个 CA 证书服务器的负担过重,CA 采用了分层认证架构。根级 CA 服务器是最权威的,下面的中级 CA 服务器可以为下级的证书颁发机构提供认证服务。

CA 证书验证过程:

  1. 客户端验证服务器证书时,首先验证证书的签发机构。
  2. 如果证书由根证书服务器签发,验证成功。如果证书不是根证书,则会向上逐层验证签发证书,直到找到根证书。
  3. 根证书通常已经预安装在操作系统或浏览器中,一旦找到可信根证书,验证过程就完成。

图示:SSL/TLS通信过程

±------------------+ ±---------------------+
| Client | | Server |
|-------------------| |----------------------|
| 1. Request data | <---------> | 2. Send certificate |
| 3. Encrypt with | | 4. Decrypt using |
| server’s pub | | private key |
| 5. Send encrypted | | 6. Send response |
| data to server | | encrypted with |
±------------------+ | shared key |
±---------------------+

通过图示可以更清晰地看到客户端与服务器在 SSL/TLS 握手过程中如何进行加密通信。

相关文章:

了解https原理,对称加密/非对称加密原理,浏览器与服务器加密的进化过程,https做了些什么

最开始的加密 浏览器与服务器之间需要防止传输的数据被黑客破解。因此&#xff0c;浏览器在发送数据时会对数据进行加密&#xff0c;并把加密的密钥&#xff08;或密钥的某些部分&#xff09;放在数据的某一个区域中。服务器收到数据后&#xff0c;会提取密钥并用它来解密数据…...

山西省第十八届职业院校技能大赛高职组 5G 组网与运维赛项规程

山西省第十八届职业院校技能大赛高职组 5G 组网与运维赛项规程 一、赛项名称 赛项编号&#xff1a;GZ035 赛项名称&#xff1a;5G 组网与运维 赛项组别&#xff1a;高职学生组、教师组 二、竞赛目的 2019 年 6 月 6 日&#xff0c;5G 牌照正式发放&#xff0c;标志着我国全面进…...

tcpdump编译 wireshark远程抓包

https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz tar -zxvf flex-2.6.4.tar.gz ./configure CFLAGS-D_GNU_SOURCE make sudo make installwget http://ftp.gnu.org/gnu/bison/bison-3.2.1.tar.gz ./configure make sudo make install以上两个库是…...

Web开发 -前端部分-CSS

CSS CSS&#xff08;Cascading Style Sheet&#xff09;:层叠样式表&#xff0c;用于控制页面的样式&#xff08;表现&#xff09;。 一 基础知识 1 标题格式 标题格式一&#xff1a; 行内样式 <!DOCTYPE html> <html lang"en"><head><meta…...

用 Python Turtle 绘制流动星空:编程中的璀璨星河

用 Python Turtle 绘制流动星空&#xff1a;编程中的璀璨星河 &#x1f438; 前言 &#x1f438;&#x1f41e;往期绘画>>点击进所有绘画&#x1f41e;&#x1f40b; 效果图 &#x1f40b;&#x1f409; 代码 &#x1f409; &#x1f438; 前言 &#x1f438; 夜空中繁星…...

Java从入门到工作2 - IDEA

2.1、项目启动 从git获取到项目代码后&#xff0c;用idea打开。 安装依赖完成Marven/JDK等配置检查数据库配置启动相关服务 安装依赖 如果个别依赖从私服下载不了&#xff0c;可以去maven官网下载补充。 如果run时提示程序包xx不存在&#xff0c;在项目目录右键Marven->Re…...

fastadmin批量压缩下载远程视频文件

后端代码 // 批量下载并压缩 public function downloadAll(){$ids input(ids);$row $this->model->where(id, in, $ids)->field(id,title,video_url)->select();if (!$row) {$this->error(记录不存在);}$arr [];$tempFiles []; // 用来存储临时下载的视频文…...

【保姆级】Mac如何安装+切换Java环境

本文从如何下载不同版本的JDK,到如何丝滑的切换JDK,以及常见坑坑的处理方法,应有尽有,各位看官走过路过不要错过~~~ 下载⏬ 首先上官网: https://www.oracle.com/ 打不开的话可以使用下面👇这个中文的 https://www.oracle.com/cn/java/technologies/downloads/a…...

2024首届世界酒中国菜国际地理标志产品美食文化节成功举办篇章

2024首届世界酒中国菜国际地理标志产品美食文化节成功举办&#xff0c;开启美食文化交流新篇章 近日&#xff0c;首届世界酒中国菜国际地理标志产品美食文化节在中国国际地理标志大厦成功举办&#xff0c;这场为期三天的美食文化盛会吸引了来自世界各地的美食爱好者、行业专家…...

Springboot静态资源

默认位置 静态资源访问目录下的资源可以直接访问&#xff0c;默认的四个位置 classpath:/META-INF/resources/&#xff08;默认加载&#xff0c;不受自定义配置的影响&#xff09; classpath:/resources/ classpath:/static/ classpath:/public/ 如果在静态目录下存在favic…...

MTK修改配置更改产品类型ro.build.characteristics

文章目录 需求场景实际问题 参考资料解决方案MTK 修改方案修改点一&#xff1a;build\core\product_config.mk修改点二&#xff1a;build\make\core\main.mk修改是否成功&#xff0c;adb 验证 实战项目中解决案例 需求场景 更改产品设备属性 table-phone-device&#xff0c;使…...

SQL 查询中的动态字段过滤

这段代码是一个 SQL 查询中的动态字段过滤部分&#xff0c;使用了 MyBatis 的 标签和 标签。以下是逐步的解释&#xff1a; <!-- 动态字段过滤 --><if test"parameters ! null and parameters.size() > 0"><foreach collection"parameters&qu…...

数字IC后端零基础入门基础理论(Day1)

数字IC后端设计导入需要用到的input数据如下图所示。 数字后端零基础入门系列 | Innovus零基础LAB学习Day9 Netlist: 设计的Gate level&#xff08;门级&#xff09;网表。下图所示为一个计数器设计综合后的门级netlist。 从这个netlist中我们看到这个设计顶层的名字叫counte…...

【LC】240. 搜索二维矩阵 II

题目描述&#xff1a; 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,…...

Redis应用—4.在库存里的应用

大纲 1.库存模块设计 2.库存缓存分片和渐进式同步方案 3.基于缓存分片的下单库存扣减方案 4.商品库存设置流程与异步落库的实现 6.库存入库时"缓存分片写入 渐进式写入 写入失败进行MQ补偿"的实现 7.库存扣减时"基于库存分片依次扣减 合并扣减 扣不了…...

selenium获取请求头

【原创】Selenium获取请求头、响应头-腾讯云开发者社区-腾讯云 selenium 4.0.0 selenium-wire 5.1.0 python 3.10 from seleniumwire import webdriver import time from selenium.webdriver.common.by import By import re def get_request_headers(driver):"""…...

Rust中自定义Debug调试输出

在 Rust 中&#xff0c;通过为类型实现 fmt::Debug&#xff0c;可以自定义该类型的调试输出。fmt::Debug 是标准库中的一个格式化 trait&#xff0c;用于实现 {:?} 格式的打印。这个 trait 通常通过自动派生&#xff08;#[derive(Debug)]&#xff09;来实现&#xff0c;但你也…...

docker离线安装、linux 安装docker

之前写过一篇docker的离线安装&#xff0c;现在从头再看繁琐了&#xff0c;服务器换了&#xff0c;既然要重搭一遍就要改进一下了。下面步入正题&#xff1a; 1.下载离线软件包 https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz 2.下载安装工具包…...

卓易通:鸿蒙Next系统的蜜糖还是毒药?

哈喽&#xff0c;我是老刘 最近很多人都在问鸿蒙next系统新上线的卓易通和出境易两款应用。 老刘分析了一下这个软件的一些细节&#xff0c;觉得还是蛮有意思的&#xff0c;我觉得可以从使用体验、底层原理和对鸿蒙生态的影响这三个角度来分析一下。 使用体验 性能 看到了一些测…...

AI大模型学习笔记|神经网络与注意力机制(逐行解读)

来源分享链接&#xff1a;通过网盘分享的文件&#xff1a;详解神经网络是如何训练的 链接: https://pan.baidu.com/s/12EF7y0vJfH5x6X-0QEVezg 提取码: k924 内容摘要&#xff1a;本文深入探讨了神经网络与注意力机制的基础&#xff0c;以及神经网络参数训练的过程。以鸢尾花数…...

3小时构建你的神经网络可视化实验室:从零理解CNN内部工作原理

3小时构建你的神经网络可视化实验室&#xff1a;从零理解CNN内部工作原理 【免费下载链接】cnn-explainer Learning Convolutional Neural Networks with Interactive Visualization. 项目地址: https://gitcode.com/gh_mirrors/cn/cnn-explainer 你是否曾困惑于卷积神经…...

Cache 维护实战:深入理解 ARMv8-A 架构下的 Invalidate 与 Clean 操作

1. 为什么需要关注Cache维护&#xff1f; 在嵌入式开发中&#xff0c;Cache就像是你办公桌上的文件架。当你频繁访问某些数据时&#xff0c;CPU会把这些数据放在Cache里&#xff0c;就像把常用文件放在手边一样。但问题来了&#xff1a;如果文件内容更新了&#xff08;比如内存…...

轻量化开源方案解放Alienware潜能:从硬件控制到场景革命

轻量化开源方案解放Alienware潜能&#xff1a;从硬件控制到场景革命 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 当你启动电脑却要等待臃肿的Alienw…...

YOLOv8n-face:工业级人脸检测技术的精度与效率平衡之道

YOLOv8n-face&#xff1a;工业级人脸检测技术的精度与效率平衡之道 【免费下载链接】yolov8-face yolov8 face detection with landmark 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8-face 一、行业痛点诊断&#xff1a;企业级人脸检测的现实挑战 1.1 复杂场景…...

FUTURE POLICE惊艳效果:毫秒级语音字幕对齐实战演示

FUTURE POLICE惊艳效果&#xff1a;毫秒级语音字幕对齐实战演示 1. 为什么需要精准的字幕对齐&#xff1f; 在视频制作和多媒体处理中&#xff0c;字幕与语音的同步问题一直是个痛点。传统字幕制作往往需要人工逐句校对&#xff0c;耗时耗力。而普通语音识别技术虽然能生成文…...

OpenClaw备份策略大全:千问3.5-27B智能识别关键文件自动归档

OpenClaw备份策略大全&#xff1a;千问3.5-27B智能识别关键文件自动归档 1. 为什么需要智能备份方案&#xff1f; 上周我的移动硬盘突然罢工&#xff0c;导致三个月的项目文档全部丢失。这次惨痛经历让我意识到&#xff1a;传统备份方案只是机械地复制文件&#xff0c;既占用…...

Qwen3.5-2B轻量模型效果:20亿参数实现92%准确率的通用图文VQA任务

Qwen3.5-2B轻量模型效果&#xff1a;20亿参数实现92%准确率的通用图文VQA任务 1. 模型概述 Qwen3.5-2B是阿里云推出的轻量化多模态基础模型&#xff0c;属于Qwen3.5系列的小参数版本。这个仅20亿参数的模型在保持高性能的同时&#xff0c;显著降低了部署门槛和资源消耗。 核…...

Net/Net Core微信公众号上传图片永久图片素材和内容中图片素材不能用MultipartFormDataContent的坑

测试了N次&#xff0c;不能用net自带的 MultipartFormDataContent&#xff0c;否则微信公众号会一直报错41005错误&#xff0c;具体原因不详&#xff0c;只能拼装head字符串实现&#xff0c;下面是封装好的上传永久素材和临时图片素材的方法&#xff0c;下面为测试好的代码&…...

7 低配置设备鸿蒙运行流畅度提升技巧 | 鸿蒙开发筑基实战

7 低配置设备鸿蒙运行流畅度提升技巧 | 鸿蒙开发筑基实战 作者&#xff1a;杨建宾&#xff08;华夏之光永存&#xff09; 摘要 本文面向鸿蒙开发者&#xff0c;特别是在低配设备、低内存机型上遇到卡顿、掉帧、加载慢的工程师。提供一套通用、可落地、不求炫技的流畅度提升方…...

昆明波纹管供应商哪个好

在市政排水、农田灌溉、通信保护等工程领域&#xff0c;HDPE双壁波纹管因其优异的环刚度、耐腐蚀性和施工便捷性&#xff0c;已成为不可或缺的关键建材。然而&#xff0c;面对市场上琳琅满目的供应商&#xff0c;尤其是在地质气候条件独特的西南地区&#xff0c;如何选择一个真…...