HTTPS 加密原理
HTTPS 加密原理
- HTTPS 加密原理
- 常见的加密方法
- 单向加密
- 对称加密
- 非对称加密
- 为什么需要加密?
- 加密流程演变
- 对称加密
- 非对称加密
- 非对称加密+对称加密
- 存在问题
- 解决方式
- 数字证书
- 生成方式
- 整体流程
HTTPS 加密原理
常见的加密方法
单向加密
也称为不可逆加密,对明文产生一个密文,并且不能通过密文解出对应的明文。
使用场景:一般用于信息摘要,密钥加密等。
常见的单向加密算法有:
- MD5
- SHA:SHA192,SHA256
特点:
- 不可逆
- 输入一样,输出相同
对称加密
对称加密,用一个密钥,对明文进行加密,同理,同这把密钥,也可以对密文进行解密。也就是说加密和解密,可以用同一个密钥,这种加密方法就是对称加密。
常见的对称加密算法有:
- DES
- 3DES
- AES
特点:
4. 加密方和解密方使用同一个密钥
5. 加密解密速度比较快
非对称加密
使用公钥和私钥进行加密解密,可以使用私钥加密,公钥进行解密,同理也可以使用公钥加密,私钥进行解密。
常见的非对称加密算法有:
- RSA
- DSA
特点:
- 使用两把密钥进行加密和解密,即公钥和私钥。
- 公钥加密私钥解密,私钥加密公钥可以解密。
- 加密或者解密,速度非常慢。
- 私钥和公钥是成对出现的。
为什么需要加密?
HTTP 的内容是明文传输的,数据传输的过程会经过中间代理服务器、路由器、WiFi热点、通信服务运营商等多个物理节点,如果信息在传输过程中被劫持,那么传输的内容就完全暴露了,甚至劫持者还可以篡改信息而不被通信双方察觉,这就是中间人攻击。所以我们需要对传输的内容进行加密。
加密流程演变
对称加密
首先可以想到的就是对称加密,对称加密速度较快,通信过程中对信息进行加密解密的开销不大,只要通信双方约定好一个密钥,之后每次传输的时候都采用这个密钥进行加密解密即可。
但是这其中存在一个问题,就是双方如何约定一个仅双方知晓的密钥。如果服务器生成后传输给浏览器,那么这个密钥仍有被劫持的可能,那么后续的加密显然就失效了。所以我们将对称加密用于数据传输,但需要一种安全的方式保证对称加密的密钥传输。
非对称加密
非对称加密采用公钥和私钥两把密钥,服务端将公钥发送给客户端,之后客户端每次传输数据之前都先采用公钥对要传输的数据进行加密,这样就保证了客户端到服务器端信息的安全,因为只有持有私钥的服务端才可以解密出客户端所发送的数据。
但是服务器端发送的数据却是无法保证的,因为公钥是公开的,那么其他人就可以截获并解密出服务端发给客户端的数据。
一组公钥私钥可以解决单向的安全,那么其实用两组公钥私钥也可以保证传输的安全,但是非对称加密的效率低。
- 某网站服务器拥有公钥A与对应的私钥A’;浏览器拥有公钥B与对应的私钥B’。
- 浏览器把公钥B明文传输给服务器。
- 服务器把公钥A明文给传输浏览器。
- 之后浏览器向服务器传输的内容都用公钥A加密,服务器收到后用私钥A’解密。由于只有服务器拥有私钥A’,所以能保证这条数据的安全。
- 同理,服务器向浏览器传输的内容都用公钥B加密,浏览器收到后用私钥B’解密。同上也可以保证这条数据的安全。
非对称加密+对称加密
既然非对称加密可以保证客户端发给服务端的信息只有服务端能读取,那么我们不难想到让客户端生成对称传输的密钥,然后用非对称加密中服务端发布的公钥对该密钥进行加密发给服务端,服务端收到之后用非对称加密中的私钥解密即可拿到对称加密的公钥。之后双方就可以采用这个密钥进行对称加密传输了。这样不仅保证了安全,效率也够高(相比于用两组公钥私钥进行数据的传输)。
存在问题
上面的方式看似安全,但其实还是存在一定的问题的。
服务端在发送公钥A给客户端时,如果被截取,那么攻击者可以把服务端本要发送给客户端的公钥A替换成自己生成的公钥B,这个操作对于客户端来说是不可得知的。那么后续客户端生成密钥X再加密发出时其实使用的就是攻击者生成的公钥B去进行加密的,那么攻击者就可以通过自己的私钥B’解密出客户端生成的对称加密密钥X,然后再用服务端的公钥A加密后返回给服务端。
那么后续双方通信的内容同样还是被攻击人所窃取了。
解决方式
其实之所以会存在这样的问题主要是因为服务端无法保证自己发出的公钥能够不被篡改地发送给客户端,即客户端不能确定接收到的公钥一定是服务端发送的。
如果按照之前的方式再次对公钥进行加密,那么加密的密钥的传输仍然还是重复上面的问题。所以在这里引入了第三方机构(CA机构)来解决这样的情况。
数字证书
网站在使用HTTPS前,需要向CA机构申领一份数字证书,数字证书里含有证书持有者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了。
证书就如身份证,证明”该公钥对应该网站“。
当然这里还得保证证书本身的真实性,即防止证书本身在传输过程中被篡改。
数字证书组成部分:
- 服务端生成的公钥
- 颁发者(证书认证机构)
- 证书有效期
- 生成摘要的算法
- 指纹(摘要)
- 签名算法
- 序列号:证书的唯一标识
生成方式
数字签名的制作过程:
- CA机构拥有非对称加密的私钥和公钥。
- CA机构对证书明文数据T进行hash。
- 对hash后的值用私钥加密,得到数字签名S。
- 明文和数字签名共同组成了数字证书。
为什么需要对证书先进行哈希之后再加密?
因为非对称加密效率很差,而证书中包含的信息一般又比较长,所以先对证书进行哈希得到一个固定长度的值之后再进行加密可以有效降低耗时。
浏览器验证过程:
- 拿到证书得到明文T和数字签名S。
- 用CA机构的公钥对S解密(由于是浏览器信任的机构,所以浏览器保有它的公钥),得到S’。
- 用证书里指明的hash算法对明文T进行hash得到T’。
- 显然通过以上步骤,T’应当等于S‘,除非明文或签名被篡改。所以此时比较S’是否等于T’,等于则表明证书可信。
这里的核心其实就是在于浏览器保存有了CA机构的公钥,所以避免了这个公钥的传输导致的被篡改的可能。
其实这里的证书是操作系统和浏览器本身就会预装一些他们信任的根证书,如果其中有CA机构的根证书,就可以拿到它对应的可信公钥了。如果浏览器没有给这个网站颁发证书的机构的根证书,那么你就得手动下载安装该机构的根证书(风险自己承担)。安装后,你就有了它的公钥,就可以用它验证服务器发来的证书是否可信了。
因为签名是用CA机构的私钥加密得到的,攻击者即使篡改了数据,由于没有私钥也更改不了数字签名,那么最后验证时则会发现S‘和T’不相同的情况,说明证书不可信,从而终止向服务器传输信息,防止信息泄露给中间人。
并且证书中还保存了网站的域名和信息等,如果攻击者用自己在CA机构申请的证书进行替换,则浏览器接收到证书时就会发现与当前访问的网站不同,从而也避免了证书被掉包的情况。
整体流程
- 网站提交相关信息申请证书。
- CA机构向证书中写入摘要算法、域名、网站公钥等信息,并通过摘要算法对证书进行哈希,之后用自己的私钥对摘要进行加密计算出签名。
- 将证书颁发给申请者,申请者将证书放到服务器。
- 浏览器访问网站,服务器将证书发送给浏览器。
- 浏览器根据自身保存或操作系统内置的CA证书拿到CA的公钥,通过其对签名进行解密得到摘要。
- 通过整数中的摘要算法对证书进行哈希,比较结果是否等于上一步得到的摘要。
- 如果不相等则证明证书被篡改,如果相等则通过证书验证,浏览器拿到服务端的公钥。
- 浏览器生成密钥并使用拿到的服务端公钥进行加密传输给服务端。
- 服务端使用私钥计算出密钥并将其存储在服务端内部(通过sessionID标识对应的浏览器)。
- 后续浏览器每次请求都携带sessionID,服务器会根据sessionID找到对应的密钥进行加密解密操作。
相关文章:
HTTPS 加密原理
HTTPS 加密原理 HTTPS 加密原理常见的加密方法单向加密对称加密非对称加密 为什么需要加密?加密流程演变对称加密非对称加密非对称加密对称加密 存在问题解决方式数字证书生成方式 整体流程 HTTPS 加密原理 常见的加密方法 单向加密 也称为不可逆加密,…...
【数据挖掘】实验4:数据探索
实验4:数据探索 一:实验目的与要求 1:熟悉和掌握数据探索,学习数据质量分类、数据特征分析和R语言的主要数据探索函数。 二:实验内容 1:数据质量分析 2:统计量分析 3:贡献度分析…...
PTA后缀式求值(整型版)
作者 周强 单位 青岛大学 我们人类习惯于书写“中缀式”,如 3 5 * 2 ,其值为13。 (p.s. 为什么人类习惯中缀式呢?是因为中缀式比后缀式好用么?) 而计算机更加习惯“后缀式”(也叫“逆波兰式”ÿ…...
FPGA与以太网相关接口知识
一:一般硬件架构;(对于1000m网一般都使用普通io口,普通管脚能跑800M(正点技术说的))) 1:FPGA普通管脚——phy芯片(pcspma)——rg45 2:FPGA(GT)光口(利用fpga的GT,直接节约了phy芯片…...
使用git+ssh访问github,避免下载资源失败
一、创建github账户之后,记住注册邮箱和账户名 我的邮箱:yuanyan23mails.ucas.ac.cn 账户名:thekingofjumpshoot 下边的相关位置需要用自己的邮箱和用户名替代 二、输入本地生成秘钥和公钥命令,并且生成公私钥对 ssh-keygen …...
cookie、session和token的区别
引言 在当今的互联网时代,Web 应用程序的安全性和用户体验至关重要。身份验证和状态管理是构建安全、可靠的 Web 应用的核心部分。cookie、session、token都是常用的身份验证和状态管理机制。 Cookie 什么是 Cookie? Cookie 是存储在用户浏览器中的小…...
如何解决Layui后台接口返回数据,但是table.render不渲染表格数据的问题
我这边进行了pareData数据格式转换,response重新定义了layui的参数格式规范 接口正常返回了数据 但是就是不渲染,我这个郁闷啊!! 忽然,我把后台重新定义的layui规定的格式参数,有个参数名叫data࿰…...
matlab 将矩阵写入文件
目录 一、概述1、算法概述2、主要函数二、将矩阵写入到文本文件三、将矩阵写入电子表格文件四、将矩阵写入指定的工作表和范围五、将数据追加到电子表格六、将矩阵数据追加到文本文件七、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此…...
pandas的综合练习
事先说明: 由于每次都要导入库和处理中文乱码问题,我都是在最前面先写好,后面的代码就不在写了。要是copy到自己本地的话,就要把下面的代码也copy下。 # 准备工作import pandas as pd import numpy as np from matplotlib impor…...
北京中科富海低温科技有限公司确认出席2024第三届中国氢能国际峰会
会议背景 随着全球对清洁能源的迫切需求,氢能能源转型、工业应用、交通运输等方面具有广阔前景,氢能也成为应对气候变化的重要解决方案。根据德勤的报告显示,到2050年,绿色氢能将有1.4万亿美元市场。氢能产业的各环节的关键技术突…...
非插件方式为wordpress添加一个额外的编辑器
在WordPress中,要添加一个额外的区块编辑器(通常指的是Gutenberg区块编辑器中的一个自定义区块),你需要编写一些PHP代码来注册新的区块,并可能还需要一些JavaScript来处理前端的逻辑。下面是一个简单的示例,展示了如何注册一个自定…...
Spark Stage
Spark Stage 什么是Stage Spark中的一个Stage只不过是物理执行计划其中的一个步骤,它是物理执行计划的一个执行单元。一个Job会被拆分为多组Task,每组任务被称为一个Stage,可以简单理解为MapReduce里面的Map Stage, Reduce Stag…...
【国家计算机二级考试C语言.2024】学习备忘录
说明 分值 4060100 40分: 这里面有一大堆程序结果选这题,如果手速还可以。那遇到有疑问的情况就自己去倒计算器的ad E上面去打一打。能够跑出来,结果那是100%的没问题。 有些概念题比较讨厌,只能自己去记忆了。要去背诵熟熟的。…...
十分钟掌握redis精髓指令
编译安装 git clone https://gitee.com/mirrors/redis.git cd redis make make test make install # 默认安装在 /usr/local/bin # redis-server 是服务端程序 # redis-cli 是客户端程序启动 mkdir redis-data # 把redis文件夹下 redis.conf 拷贝到 redis-data # 修改 redis.…...
突然断电导致git损坏修复
背景 使用ide开发时突然断电启动后所有文件都成了没有提交的文件。打开git视图日志也消失不见 # git命令执行结果如下 git status No commits yetChanges to be committed:(use "git rm --cached <file>..." to unstage)new file: .github/FUNDING.ymlnew …...
MATLAB入门指南:从零开始进行数学建模竞赛
第1部分:认识MATLAB 1.1 什么是MATLAB? MATLAB(Matrix Laboratory的缩写)是一个高性能的数值计算环境和第四代编程语言。由MathWorks公司开发,它提供了一个便捷的数学解决框架,主要用于算法开发、数据可视…...
【JavaEE初阶系列】——带你了解volatile关键字以及wait()和notify()两方法背后的原理
目录 🚩volatile关键字 🎈volatile 不保证原子性 🎈synchronized 也能保证内存可见性 🎈Volatile与Synchronized比较 🚩wait和notify 🎈wait()方法 💻wait(参数)方法 🎈noti…...
GitHub配置SSH Key(详细版本)
GitHub配置SSH Key的目的是为了帮助我们在通过git提交代码是,不需要繁琐的验证过程,简化操作流程。比如新建的仓库可以下载, 但是提交需要账号密码。 步骤 一、设置git的user name和email 如果你是第一次使用,或者还没有配置过的话需要操作…...
JavaScript 权威指南第七版(GPT 重译)(六)
第十五章:JavaScript 在 Web 浏览器中 JavaScript 语言是在 1994 年创建的,旨在使 Web 浏览器显示的文档具有动态行为。自那时以来,该语言已经发生了显著的演变,与此同时,Web 平台的范围和功能也迅速增长。今天&#…...
Learning to summarize from human feedback
Abstract 人工参考总结以及 ROUGE 指标只是我们真实关心的目标(总结质量)的粗略代表。通过优化人工偏好来显著提升总结质量使用大量高质量的人类比较来训练一个模型来预测人类偏好的总结使用这个模型作为奖励函数对总结策略进行强化学习微调我们模型的效果在 TL;DR 数据集上显…...
2025届必备的五大AI科研方案推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 使AIGC(人工智能生成内容)检测率降低的关键之处在于弱化文本所具有的…...
PUBG实时数据雷达:开源游戏辅助工具的战场信息解决方案
PUBG实时数据雷达:开源游戏辅助工具的战场信息解决方案 【免费下载链接】PUBG-maphack-map this is a working copy online-map from jussihi/PUBG-map-hack, use nodejs webserver instead of firebase. 项目地址: https://gitcode.com/gh_mirrors/pu/PUBG-mapha…...
用快马AI快速原型一个全球数据监控仪表盘,十分钟搞定基础框架
今天想和大家分享一个快速搭建全球数据监控仪表盘的经验。作为一个经常需要分析国际数据的产品经理,我一直在寻找能快速验证想法的工具。最近发现InsCode(快马)平台特别适合做这种原型开发,十分钟就能搞定基础框架。 项目构思 这个仪表盘需要展示全球主要…...
2026届学术党必备的AI学术工具实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于学术写作范畴之内,论文AI工具已然成了提升研究效率的至关重要的辅助方式&#…...
别再只搜字符串了!x64dbg逆向破解卡密软件的另一种思路:从API断点MessageBoxW开始
逆向工程实战:突破字符串搜索局限的API断点追踪法 在逆向分析领域,字符串搜索常被视为破解卡密验证的"第一板斧"。但当你面对一个精心设计的商业软件时,这招往往会失灵——字符串被混淆、关键提示信息被加密、甚至整个代码段都被加…...
矽力杰 Silergy SY8810 降压稳压器 佰祥电子
突破算力供电瓶颈:SY8810单芯片15A大电流与IC数字调压全景拆解导语:在边缘计算SoC、高速光模块(如QSFP-DD)以及企业级SSD的主板设计中,核心处理器的供电轨正面临着极其苛刻的物理学挑战。随着先进制程工艺不断演进&…...
避坑指南:Python调用摄像头常见问题(驱动、权限、多摄像头切换)与解决方案
Python摄像头开发避坑实战:从驱动调试到多设备管理的完整解决方案 当你兴奋地写完了Python摄像头调用代码,按下运行键时,屏幕上却跳出"无法打开视频设备"的错误提示——这种挫败感我太熟悉了。作为经历过无数次摄像头调试折磨的开发…...
汇川伺服Modbus通讯踩坑实录:从“通信超时”到“数据错乱”的五个常见故障排查指南
汇川伺服Modbus通讯实战:五大典型故障排查与深度解析 调试现场的温度总是比办公室高几度,尤其是当你面对一台"沉默"的汇川伺服驱动器时。Modbus-RTU协议作为工业自动化领域的"普通话",理论上应该让不同设备间的对话变得…...
Python+百度OCR实战:5分钟搞定批量图片经纬度提取(附完整代码)
Python百度OCR实战:5分钟搞定批量图片经纬度提取(附完整代码) 当你面对数百张带有经纬度水印的野外考察照片时,是否曾为手动记录坐标而抓狂?去年参与某生态调查项目时,团队摄影师每天传回300张带坐标水印的…...
ESP32开发板选型指南:从Arduino到NodeMCU,哪款更适合你的项目?
ESP32开发板选型指南:从Arduino到NodeMCU,哪款更适合你的项目? 在物联网和嵌入式开发领域,ESP32系列开发板凭借其出色的性价比和丰富的功能,已经成为众多开发者的首选。面对市场上琳琅满目的ESP32开发板型号࿰…...
