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

详解HTTPS加密过程

目录

前言

HTTPS是什么

HTTPS的工作过程

引入对称加密

引入非对称加密

引入证书

总结

前言

对于HTTP上篇文章已经做了详细的解释了。众所周知,HTTPS要比HTTP要安全,但是为什么HTTPS要比HTTP安全呢?

这篇文章主要研究HTTPS的加密机制。

HTTPS是什么

HTTPS(Hypertext Transfer Protocol Secure)是一种通过加密和身份验证来保护网络通信安全的协议,使用默认端口是443端口。

主要是引入了一下的机制:

  1. SSL(Secure Sockets Layer)/TLS(Transport Layer Security)协议:SSL和其继任者TLS是实现HTTPS加密的主要协议。这些协议使用了公钥加密和对称密钥加密的组合来确保通信的机密性、完整性和身份验证。

  2. 公钥加密:公钥加密也被称为非对称加密,使用了两个密钥:公钥和私钥。服务器拥有私钥,而公钥则被用于加密从客户端发送到服务器的数据。这样,只有服务器拥有私钥,能够解密数据。公钥通常由数字证书机构(CA)签发,用于验证服务器的身份。

  3. 数字证书:数字证书是一种由数字证书机构(CA)签发的电子文件,用于验证服务器的身份。它包含了服务器的公钥和其他相关信息,被用于建立安全连接并验证服务器的真实性。当客户端连接到服务器时,服务器会将数字证书发送给客户端进行验证。

  4. 对称密钥加密:对称密钥加密使用相同的密钥对数据进行加密和解密。在HTTPS通信中,一旦建立了安全连接,服务器和客户端之间会协商生成一个对称密钥,该密钥用于加密和解密数据的传输。

HTTPS的工作过程

既要保证数据的安全,那么就需要加密。我们知道HTTP在网络上传输的数据是明文传输的。

而明文传输的数据在网络上就相当于“裸奔”。如何要让我们的数据在网络不在“裸奔”呢?

就需要给数据进行加密,变成密文。这也就是HTTPS要做的事。

加密的方式有很多种,整体就是两个类,分别是对称加密和非对称加密。

我们先来认识密钥:

密钥是用于加密和解密数据的关键信息。它是一个特定的值或参数,根据所使用的加密算法,用于转换明文(未加密的数据)为密文(加密的数据),或者将密文还原为明文。

引入对称加密

在对称密钥加密算法中,同一个密钥被用于加密和解密数据。发送方使用密钥将明文加密为密文,并将其发送给接收方。接收方使用相同的密钥将密文解密为明文。对称密钥加密算法的主要优点是处理速度快,但密钥的安全传输和管理是一个挑战。

 也就是说只有一个密钥,把明文加密和把密文解密。

 在上述过程中,即使黑客通过入侵网络中的网络设备,拿到了数据,但是数据是进行了加密的,此时黑客并不知道密钥是啥,黑客也就没有办法获取到传输的数据了。

那么难道此时就绝对安全了吗,其实不然,要知道,服务器器在同一时刻是给很多台客户端提供服务的,这么多的客户端,每个客户端的密钥肯定是不同的,因此服务器此时就需要维护每个客户端和服务器之间的密钥关联关系。

 

此时服务器就需要维护这个密钥与客户端之间的关系。

于是发现既然每个客户端的密钥都不相同,那么让客户端自己生成一个密钥,用来加密和解密数据,但是服务器此时也要知道这个密钥用来解密和加密数据。那么如何让服务器也知道这个密钥呢?肯定要通过网络传输的方式来让服务器知道客户端生成的密钥。

此时客户端生成了密钥(key),于是就通过网络传输的方式来告诉服务器自己生成的key。但是黑客这时是非常容易拿到客户端生成的key的。

黑客拿到这key之后,服务器就通过key对数据进行加密,加密完成之后,进行网络传输,在传输的过程中,黑客已经知道了key,就可以轻而易举的进行解密,拿到想要窃取的数据了。 

可以看出,这个方式并不是理想的加密方式,于是就引入了非对称加密。

引入非对称加密

在非对称密钥加密算法中,使用一对密钥:公钥和私钥。公钥是公开的,用于加密数据,而私钥是保密的,用于解密数据。发送方使用接收方的公钥加密明文并发送密文,接收方使用自己的私钥进行解密。非对称密钥加密算法提供了更好的密钥管理和身份验证机制,但处理速度较慢。

  • 通过公钥对明文加密, 变成密文
  • 通过私钥对密文解密, 变成明文

下面我们假设服务器生成了一对非对称密钥

公钥  pub

私钥  pri

上述过程中,客户端向服务器索要公钥来加密的数据就是自己生成的对称密钥key。

此时这个过程,黑客通过中间网络设备是已经知道了公钥的。但是黑客此时并不知道用来解密的私钥, 私钥是一直在服务器上的,并没有进行网络上的传输。用来解密的关键就是私钥。需要注意:公钥和私有是成对出现的,公钥只能用来加密,而私钥则是只能用来解密。

在传输的过程中,因为客户端把自己生成的密钥用pub(公钥)进行了加密,所以即使黑客截取到了数据,也是没有办法进行解密的,因为是用pub进行加密的,解密也就需要pri(私钥)来解密。

 

当服务器拿到了用pub进行加密的key之后,就是用pri来解密,然后服务器就知道了客户端生成的key。后续的业务数据的传输就是用key来进行加密。

 

上述的整个过程难道就安全了吗?其实不然,所谓道高一尺魔高一丈,于是黑客通过欺骗的手段还是能获取到我们的数据。就是所谓的中间人攻击。

中间人攻击

通过在入侵的网络设备上进行伪造服务器的公钥和私钥来进行攻击的一种手段。

 

 此时当服务器把自己的pub发给客户端的时候,黑客自己也生成了一对公钥和私有,我们记为pub2和pri2,此时黑客就会把自己的pub2给客户端发去,通过用把服务器的pub给悄悄记住了。

 此时客户端使用黑客自己生成的pub2来对key进行加密,当发送出去之后,黑客就能通过自己生成的pri2来轻松的解密,得到了key,然后有把key重新使用服务器的pub来进行加密,然后发送出去,此时服务器并不知道key已经被黑客拿到了。

 服务器拿到用pub加密的key之后,并不知道黑客已经拿到了key,于是就双方就放心大胆的使用对称密钥key进行传输。

但是黑客早就直到了key,所以在传输的过程中,黑客就使用拿到的key来对数据进行解密和加密,而服务器和客户端全然不知,数据已经全部暴露。

破解中间人攻击的关键就是让客户端直到这个服务器的公钥是不是已经被篡改的。

引入证书的机制就完美的破解了中间人攻击。

引入证书

这个证书就好比人的身份证, 作为这个网站的身份标识. 搭建一个 HTTPS 网站要在CA机构先申请一个证书. (类似于去公安局办个身份证)。

这个 证书 可以理解成是一个结构化的字符串, 里面包含了以下信息:

  • 证书发布机构
  • 证书有效期
  • 公钥(服务器的公钥)
  • 证书所有者
  • 签名   (先对证书的所有数据进行一个校验,生成一个校验和,然后再由证书的颁布机构使用自己的私钥进行加密)
  • ……

引入证书之后,客户端就不会向服务器索要服务器的公钥了,而是索要证书。

当前是共有5个密钥,分别是服务器的pub1和pri1 ,颁发证书机构的pub2和pri2,还有客户端自己生成的key。

需要注意的是,由于颁发证书机构并不是很多,所以就在每个操作系统中都内置了颁发证书机构的公钥。

 此时客户端拿到了这个证书之后,首先对证书进行了一个校验。

  1. 客户端使用内置的颁发证书机构的pub2先对签名进行了解密,得到了初始的值我们记为sum1
  2. 然后客户端使用同样的签名计算方法,基于证书中的各个属性,重新计算,得到sum2
  3. 比较两个值是否相同,如果相同,则说明数据没有并篡改。如果两个值不同,则数据已经被篡改,浏览器窗口进行报错。

在整个过程中,黑客是无法对证书中的数据进行篡改的。

如果说黑客把证书中服务器的公钥改成自己的。然后进行发送,当客户端拿到证书之后,进行校验,发现签名中的校验和整个证书的属性校验值不一致。那么客户端就知道证书被篡改了,于是立马浏览器窗口进行报错。

当然黑客也有证书颁发机构的公钥,黑客如果想要通过证书的那个属性重写计算签名,当然也是可以计算的,但是计算完成之后需要对签名进行了加密。此时黑客就做不了,因为证书是由颁发证书机构的私钥进行加密的,黑客可以解开,但是加密不了。

引入证书机制之后,黑客就改不了证书中的数据了。

总结

HTTPS 工作过程中涉及到的密钥有三组

  1. 第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在注册证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器使用这个私钥对证书的签名进行加密. 客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过。
  2. 第二组(非对称加密): 用于协商生成对称加密的密钥. 服务器生成这组 私钥-公钥 对, 然后通过证书把公钥传递给客户端. 然后客户端用这个公钥给生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解密获取到对称加密密钥。
  3. 第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密。
     

总结起来,HTTP是一种不安全的协议,适用于不涉及敏感信息传输的普通网页浏览等场景。而HTTPS通过加密、完整性验证和身份认证,提供了更高级别的安全保护,适用于涉及敏感信息(例如个人信息、支付信息)传输的场景,如网上银行、电子商务等。

相关文章:

详解HTTPS加密过程

目录 前言 HTTPS是什么 HTTPS的工作过程 引入对称加密 引入非对称加密 引入证书 总结 前言 对于HTTP上篇文章已经做了详细的解释了。众所周知,HTTPS要比HTTP要安全,但是为什么HTTPS要比HTTP安全呢? 这篇文章主要研究HTTPS的加密机制…...

聚观早报 | ChatGPT登顶美区iOS免费榜;库克不满苹果首款MR设备

今日要闻:ChatGPT登顶美区iOS免费榜;库克不满苹果首款MR设备;索尼正开发小尺寸折叠屏手机;万达辟谣大规模裁员;智能仿生手让截肢者重获手心的温度 ChatGPT登顶美区iOS免费榜 ChatGPT 在 iOS 美区免费 App 排行榜上位列…...

position:sticky-粘性吸附布局

一、描述 就是在一个滚动的容器里,将一个子元素设置为postion:sticky 在元素显示在可视区域内,显示的效果与position:relative 一致,当元素被滑动出可视区域外是,显示效果与position:fixed一致 二、注意事项 1、父元素需要存在滚动(overflow:auto&…...

【MySQL】-【数据库的设计规范】

文章目录 为什么需要数据库设计范式范式简介范式都包括哪些键和相关属性的概念第一范式(1st NF)第二范式(2nd NF)第三范式(3rd NF) 反范式化概述应用举例反范式化的新问题反范式的适用场景 BCNF(巴斯范式)案例案例一案例二 第四范式案例案例一案例二 第五范式、域键范式范式的实…...

全面解析缓存应用经典问题

1、前言 随着互联网从简单的单向浏览请求,发展为基于用户个性信息的定制化以及社交化的请求,这要求产品需要做到以用户和关系为基础,对海量数据进行分析和计算。对于后端服务来说,意味着用户的每次请求都需要查询用户的个人信息和…...

Java版本企业电子招采系统源码——信息数智化招采系统

信息数智化招采系统 服务框架:Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构:VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术:Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、Stre…...

Rust每日一练(Leetday0005) 罗马数字、公共前缀、三数之和

目录 13. 罗马数字转整数 Roman to Integer 🌟 14. 最长公共前缀 Longest Common Prefix 🌟 15. 三数之和 3Sum 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日…...

【告别校园,迎接未来】

作为一个曾经的大学生,我的四年大学时光充满了起伏和挑战。回顾这段时光,我深刻认识到了自己的不足,同时也感悟了一些珍贵的人生经验和收获。 我是一个比较内向的人,进入大学后感觉有些孤独,难以适应新的环境和生活方…...

SaaS系统用户权限设计

SaaS系统用户权限设计 学习目标: 理解RBAC模型的基本概念及设计思路 了解SAAS-HRM中权限控制的需求及表结构分析完成组织机构的基本CRUD操作 完成用户管理的基本CRUD操作完成角色管理的基本CRUD操作 组织机构管理 需求分析 需求分析 实现企业组织结构管理&#xff0…...

我们为什么还要学习Altium Designer?

Altium Designe(简称“AD”)是电子设计领域中备受推崇的软件工具之一,拥有强大的功能和灵活的设计环境,也是要用最广泛的EDA工具之一,为电子工程师提供了无限可能,但很多工程师学完AD基本操作就转投其他EDA…...

Q1业绩整体回暖,影视行业找到增长新路径

凛冬已过,影视行业恢复了生机。 数据显示,今年一季度,影视院线板块全部上市公司分别实现营收、归母净利111.86亿元、10.15亿元,同比增幅为1.44%和53.76%。在经济复苏的背景下,影视行业实现了扭亏为盈和跨越式增长。 …...

Zabbix

概述 作为一个运维,需要会使用监控系统查看服务器系统性能、应用服务状态和网站流量指标等,利用监控系统的数据去了解网站上线发布的结果和健康状态。 利用一个优秀的监控软件,我们可以: ●通过一个友好的界面进行浏览整个网站所有的服务器…...

OpenHarmony支持HDMI接口声卡适配说明

高清多媒体接口(High Definition Multimedia Interface,HDMI )是一种全数字化视频和声音发送接口,可以发送未压缩的音频及视频信号。HDMI可用于机顶盒、DVD播放机、个人计算机、电视、游戏主机、综合扩大机、数字音响与电视机等设…...

AtCoder Beginner Contest 300G - P-smooth number解题报告

AtCoder Beginner Contest 300G - P-smooth number解题报告 1 题目链接 传送门 2 题目大意 题目:P-光滑数的数量 题目大意: 在 1 1 1 到 n n n 中,有多少个数的所有质因数均不超过 p ( p ≤ 100 ) p\ (p\leq100) p (p≤100)。 3 解…...

数据分析与预处理常用的图和代码

1.训练集和测试集统计数据描述之间的差异作图&#xff1a; def diff_color(x):color red if x<0 else (green if x > 0 else black)return fcolor: {color}(train.describe() - test.describe())[features].T.iloc[:,1:].style\.bar(subset[mean, std], alignmid, colo…...

Http与Https 比较

目录 1、HTTP&#xff08;HyperText Transfer Protocol&#xff1a;超文本传输协议&#xff09; 2、HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff1a;超文本传输安全协议&#xff09; 3、HTTP 与 HTTPS 区别 4、HTTPS 的工作原理 1、HTTP&#xff08;HyperTex…...

02 面向对象( 继承,抽象类)

强调&#xff1a;一定用自己的话总结&#xff0c;避免抄文档&#xff0c;否则视为作业未完成。 this关键字的作用 为了解决成员变量和局部变量所存在的二义性,适用于有参构造时使用 示例 private String name;private int age;public person(){}public person(String name,i…...

[C++]22种设计模式的C++实现大纲

前言 最近看遍全网&#xff0c;准备整理一套较好上手的设计模式文章&#xff0c;以便后续复习到处翻找&#xff0c;在此记录一下&#xff0c;如有侵权可以联系删除, 每天更新一篇&#xff0c;直到更新完 前置知识 UML类图与面向对象编程C UML类图详解软件设计原则与SOLID原则…...

用Powerpoint (PPT)制作并导出矢量图、高分辨率图

论文写作时经常需要导入矢量图&#xff0c;正规军都是用AI或者Inkscape作图&#xff0c;但是PPT更加适合小白用户&#xff0c;或者一些简单的构图需求使用PPT更加便捷&#xff0c;而且不得不承认PPT的某些功能是真的香&#xff0c;例如&#xff1a;简单的对齐、文字插入和格式修…...

小白量化《穿云箭集群量化》(9)用指标公式实现miniQMT全自动交易

小白量化《穿云箭集群量化》&#xff08;9&#xff09;用指标公式实现miniQMT全自动交易 在穿云箭量化平台中&#xff0c;支持3中公式源码运行模式&#xff0c;还支持在Python策略中使用仿指标公式源码运行&#xff0c;编写策略。 我们先看如何使用指标公式源码。 #编程_直接使…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...