HTTPS 的加密流程

目录

一、HTTPS是什么?

二、为什么要加密

三、"加密" 是什么

四、HTTPS 的工作过程 

1.对称加密

2.非对称加密

3.中间人攻击

4.证书

总结


一、HTTPS是什么?

HTTPS (Hyper Text Transfer Protocol Secure) 是基于 HTTP 协议之上的安全协议,用于在客户端和服务器之间通过互联网传输数据的加密和身份验证。它使用 SSL/TLS (Secure Sockets Layer/Transport Layer Security) 协议来保护数据的安全性,可以防止数据被窃听、篡改或伪造。

HTTP 协议是一种明文传输的协议,数据在传输过程中不加密,容易被黑客截获并窃取敏感信息。而使用 HTTPS 协议进行数据传输,可以通过 SSL/TLS 协议将数据加密,使得数据在传输过程中无法被黑客窃取,保护了数据的安全性。

HTTPS 还可以对服务器端的身份进行验证,防止伪造服务器,保护了双方的身份安全。在 HTTPS 和 SSL/TLS 协议的支持下,现在许多电子商务、银行、社交网络和其他网站都采用 HTTPS 协议来保护用户的隐私和安全。

二、为什么要加密

HTTP 是一种应用层协议,是用于在 Web 应用程序之间传递数据的标准方式,但是 HTTP 本身并不安全,因为 HTTP 在传输数据时是明文传输的,攻击者可以很容易地截获和窃取数据。这就会导致以下不安全的情况:

1. 窃取敏感信息: 攻击者可以窃取用户登录信息、信用卡信息、银行账户信息等敏感信息。

2. 篡改数据:攻击者可以在传输过程中篡改数据,比如,将网页内容篡改成恶意代码,欺骗用户下载恶意文件等。

3. 伪造身份:攻击者可以伪造身份,冒充网站或服务器,从而欺骗用户提供个人信息或敏感信息。

HTTPS 是在 HTTP 协议基础上加入了 SSL/TLS 加密机制,对 HTTP 的传输过程进行加密,可以保护数据的安全性和完整性,解决了 HTTP 明文传输所带来的安全问题。因此,在需要保护用户隐私信息或者防止黑客攻击时,使用 HTTPS 更加安全可靠。

由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器, 交换机等), 那么运营商的网络设备就可以解析出你传输的数据内容, 并进行篡改.这就是运营商劫持
点击 "下载按钮", 其实就是在给服务器发送了一个 HTTP 请求, 获取到的 HTTP 响应其实就包含了该 APP的下载链接. 运营商劫持之后, 就发现这个请求是要下载天天动听, 那么就自动的把交给用户的响应给篡改 成 "QQ浏览器" 的下载地址了

 三、"加密" 是什么

加密就是把 明文 (要传输的信息)进行一系列变换, 生成 密文 .
解密就是把 密文 再进行一系列变换, 还原成 明文 .
在这个加密和解密的过程中, 往往需要一个或者多个中间的数据, 辅助进行这个过程, 这样的数据称为 密钥 (正确发音 yue 四声, 不过大家平时都读作 yao 四声)

四、HTTPS 的工作过程 

既然要保证数据安全, 就需要进行 "加密".
网络传输中不再直接传输明文了, 而是加密之后的 "密文".
加密的方式有很多, 但是整体可以分成两大类: 对称加密 和 非对称加密

1.对称加密

进行安全传输,其中最核心的技术就是加密,而其中最为简单、有效的方法就是“对称加密”。对称加密的方式如下:

明文 +  key  =>  密文。加密的过程

密文 +  key  =>  明文。解密的过程

其中key就表示密钥,是一串数字或者字符串。同一个密钥可以用来加密也可以用来解密,因此就称其为“对称密钥”。但是其保证安全性的前提是,不能让密钥被他人知道,如果密钥被一些不法之徒获取,那么这个加密也就形同虚设了。

下面我们用图片演示过程及信息:

但是问题来了,客户端需要自己生成一个密钥,如何把这个密钥告诉给服务器呢?

答案是:网络传输

这样的话看起来我们是需要针对key也进行加密一下  所以接下来我们引用了非对称加密.

2.非对称加密

非对称加密就是,生成一对密钥,一个叫公钥(pub)一个叫密钥(pri)。加密方式如下:

明文 + 公钥 => 密文。

密文 + 私钥 => 明文。

其中,明文也可以使用私钥加密,密文可以使用私钥解密。公钥是可以公开的,私钥是私密的。

所以我们接下来的目标就是客户端把自己的key安全传输到服务器

首先服务器生成一对公钥私钥。其中客户端持有公钥,服务器持有私钥。由于客户端的公钥从服务器获取,因此黑客也可以知道公钥。但是由于私钥只有服务器才知道,不会告诉别人。因此就算黑客知道了公钥,也无法解密。

接着客户端使用公钥来对对称密钥进行加密,传输给服务器,服务器通过私钥进行解密,获得对称密钥。此时客户端就可以使用这个对称密钥进行后续的传输工作。

但是由于非对称加密比较慢,对称加密比较快。因此一般使用非对称加密来进行对称密钥的加密传输。而用对称加密来进行后续的传输工作。 

3.中间人攻击

上面所说的非对称加密和对称加密好像是已经把要传输的数据保护的天衣无缝了。但是,其实其中还有一个巨大的漏洞。这就是我们所说的中间人攻击。

虽然我们认为已经非常安全了,但是黑客不是吃素的

上图就是关于中间人攻击的一个介绍。实质上就是黑客在中间充当一个双面客。服务器将公钥pub发送过来,黑客在中间劫持。并且自己生成了一对非对称密钥。将自己生成的pub2发送给客户端。但是由于客户端不知道发送来的pub2是不是服务器发送来的公钥,因此也就上当。将对称密钥通过pub2进行加密,发送给黑客。然后黑客将以pub2加密的对称密钥进行解密,那到对称密钥。再将对称密钥使用pub1进行加密,发送给服务器。由于服务器也不知道这个加密过的对称密钥是不是客户端发过来的,因此也就使用这个对称密钥进行后续的加密了。

从上述过程来说,客户端无法判断公钥的真假造成的。如果客户端可以辨别公钥的真假,那么这个中间人攻击也就迎刃而解了!

4.证书

证书是什么

SSL/TLS 证书是一种网络安全协议,用于在互联网上建立安全通信。在 HTTPS 这种加密方式中,证书用于验证网站的身份和保证数据传输的安全性。

证书由数字签名机构(CA)颁发,证明了网站的身份信息和公钥的有效性。CA 通过审核网站申请者的身份信息,发放证书并签名,网站通过证书验证来证明其身份,以确保用户与网站建立的加密连接是信任的。

证书包含网站的信息,如名称、域名、过期日期和公钥等等。证书中的公钥可用于安全地加密用户数据并将其发送到服务器。证书还包含签名,以确保其未被篡改。如果签名无效或证书已过期,则表示证书不可信任。

浏览器通常默认信任一些公共的 CA,这些 CA 证书预装在浏览器中。这意味着如果网站使用由公共 CA 颁发的证书,浏览器将信任该证书,并且用户可以通过 HTTPS 安全地与该网站建立连接。

为了解决上述问题,人们就想出来了“证书”这个方法。就是上服务器(网站)在成立的时候,需要去一些专门的认证机构(第三方机构)申请证书。服务器需要提供一些资质。当申请通过之后,机构就会给你颁发证书。其中,证书中也就包含了公钥。此时客户端申请公钥的时候,此时就不应该只是请求要一个公钥了,而是请求要一个证书。当客户端拿到证书之后,就可以进行校验。验证证书是不是假的或者被篡改的。如果客户端发现证书是无效的,浏览器就会直接弹框警告。

客户端拿到证书之后,就首先需要针对证书进行校验!!

  1. 得到初始的签名:客户端使用系统内置的权威机构的公钥pub针对证书中的加密签名解密,得到了初始签名
  2. 计算现在的签名:客户端使用相同的签名算法,基于证书的属性进行计算
  3. 比较两个签名是否相同  如果相同证明整数中的数据都是未被篡改的原始数据, 如果签名不同说明证书数据被篡改,客户端的浏览器弹框报错.

 在这里我们需要明确证书的校验:

证书中包含很多信息,我们用这些属性进行一个计算也就是校验和(签名),再由证书颁布机构使用自己的私钥进行加密, 此处我们要知道的是 这个私钥只有证书机构自己知道

也就是说输入数据没有被篡改那么根据相同的算法得到的签名也是一样的

反之,签名不同了,那么数据一边被篡改了

在这种加密过程下,黑客是无法修改我们数据的,黑客如果想改就要知道证书机构的密钥,否则解密了之后 黑客无法再次进行加密,那么到客户端就会直接弹框报错


总结

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

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

其实一切的关键都是围绕这个对称加密的密钥. 其他的机制都是辅助这个密钥工作的.
第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器.
第一组非对称加密的密钥是为了让客户端拿到第二组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/76614.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c语言——拷贝数组

这段代码是一个简单的数组拷贝示例。它的功能是将一个原始数组 original 的内容拷贝到另一个数组 copied 中,并输出两个数组的元素。 代码执行过程如下: 首先,在 main() 函数中定义了一个整型数组 original,并初始化了它的元素。…

【java毕业设计】基于SSM+MySql的人才公寓管理系统设计与实现(程序源码)--人才公寓管理系统

基于SSMMySql的人才公寓管理系统设计与实现(程序源码毕业论文) 大家好,今天给大家介绍基于SSMMySql的人才公寓管理系统设计与实现,本论文只截取部分文章重点,文章末尾附有本毕业设计完整源码及论文的获取方式。更多毕业…

shell脚本之正则表达式

目录 一.常见的管道命令1.1sort命令1.2uniq命令1.3tr命令1.4cut命令1.5实例1.5.1统计当前主机连接状态1.5.2统计当前主机数 二.正则表达式2.1正则表达式的定义2.2常见元字符(支持的工具:find,grep,egrep,sed和awk&…

23.8.16日总结

原先写的评论是每级评论用缩进来区分,所以最多设置的是九级评论,修改了排版和格式: 还有管理员页面,查看文章时可以进行点赞,收藏的操作,现在进行了修改,将相关操作隐藏。 还有点击查看未发布…

语聚AI公测发布,大语言模型时代下新的生产力工具

语聚AI 公测发布 距离语聚AI内测上线已经过去近1个月。 这期间,我们共邀请了近百位资深用户与行业专家加入语聚AI产品体验。通过大家的热情参与积极反馈,我们不断优化并完善了语聚AI的功能与使用体验。 经过研发团队不懈的努力,今天语聚AI终…

深入源码分析kubernetes informer机制(三)Resync

[阅读指南] 这是该系列第三篇 基于kubernetes 1.27 stage版本 为了方便阅读,后续所有代码均省略了错误处理及与关注逻辑无关的部分。 文章目录 为什么需要resyncresync做了什么 为什么需要resync 如果看过上一篇,大概能了解,client数据主要通…

B树和B+树区别

B树和B树的区别 B树 B树被称为平衡树,在B树中,一个节点可以有两个以上的子节点。B树的高度为log M N。在B树中,数据按照特定的顺序排序,最小值在左侧,最大值在右侧。 B树是一种平衡的多分树,通常我们说m阶…

Unity-Linux部署WebGL项目MIME类型添加

在以往的文章中有提到过使用IIS部署WebGL添加MIME类型使WebGL项目在浏览器中能够正常加载,那么如果咱们做的是商业项目,往往是需要部署在学校或者云服务器上面的,大部分情况下如果项目有接口或者后台管理系统,后台基本都会使用Lin…

arcgis pro 3.0.2 安装及 geemap

arcgis pro 3.0.2 安装及 geemap arcgis pro 3.0.2 安装 arcgis pro 3 版本已经很多了,在网上找到资源就可以进行安装 需要注意的是:有的文件破解文件缺少,导致破解不成功。 能够新建地图就是成功了! geemap安装 1.需要进行环…

FL Studio 21最新for Windows-21.1.0.3267中文解锁版安装激活教程及更新日志

FL Studio 21最新版本for Windows 21.1.0.3267中文解锁版是最新强大的音乐制作工具。它可以与所有类型的音乐一起创作出令人惊叹的音乐。它提供了一个非常简单且用户友好的集成开发环境(IDE)来工作。这个完整的音乐工作站是由比利时公司 Image-Line 开发…

Flutter源码分析笔记:Widget类源码分析

Flutter源码分析笔记 Widget类源码分析 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/132259681 【介绍】&#x…

Spring源码深度解析一(IOCDI)

1. Spring架构设计 Spring框架是一个分层架构,他包含一系列的功能要素,并被分为大约20个模块 2. 设计理念 Spring是面向Bean的编程(BOP:Bean Oriented Programming),Bean在Spring中才是真正的主角。Bean在…

物联网工程应用实训室建设方案

一、物联网工程应用系统概述 1.1物联网工程定义 物联网工程(Internet of Things Engineering)是一种以信息技术(IT)来改善实体世界中人们生活方式的新兴学科,它利用互联网技术为我们的日常生活活动提供服务和增益&am…

CI+JUnit5并发单测机制创新实践

目录 一. 现状问题 二. 分析原因 三. 采取措施 四. 实践步骤 五. 效能提升 资料获取方法 一. 现状问题 针对现如今高并发场景的业务系统,“并发问题” 终归是必不可少的一类(占比接近10%),每次出现问题和事故后&#xff0c…

年至年的选择仿elementui的样式

组件&#xff1a;<!--* Author: liuyu liuyuxizhengtech.com* Date: 2023-02-01 16:57:27* LastEditors: wangping wangpingxizhengtech.com* LastEditTime: 2023-06-30 17:25:14* Description: 时间选择年 - 年 --> <template><div class"yearPicker"…

Vue2(组件开发)

目录 前言一&#xff0c;组件的使用二&#xff0c;插槽slot三&#xff0c;refs和parent四&#xff0c;父子组件间的通信4.1&#xff0c;父传子 &#xff1a;父传子的时候&#xff0c;通过属性传递4.2&#xff0c;父组件监听自定义事件 五&#xff0c;非父子组件的通信六&#x…

【算法题】螺旋矩阵II (求解n阶Z形矩阵)

一、问题的提出 n阶Z形矩阵的特点是按照之(Z)字形的方式排列元素。n阶Z形矩阵是指矩阵的大小为nn&#xff0c;其中n为正整数。 题目描述 一个 n 行 n 列的螺旋(Z形)矩阵如图1所示&#xff0c;观察并找出填数规律。 图1 7行7列和8行8列的螺旋(Z形)矩阵 现在给出矩阵大小 n&…

基于MIV的神经网络变量筛选

1.案例背景 一般神经网络中所包含的网络输人数据是研究者根据专业知识和经验预先选择好的,然而在许多实际应用中,由于没有清晰的理论依据,神经网络所包含的自变量即网络输入特征难以预先确定,如果将一些不重要的自变量也引入神经网络,会降低模型的精度,因此选择有意义的自变量特…

驱动 - 20230816

练习 1.编写LED灯的驱动&#xff0c;可以控制三个灯&#xff0c;应用程序中编写控制灯的逻辑&#xff0c;要使用自动创建设备节点机制 驱动头文件 ledHead.h #ifndef __HEAD_H__ #define __HEAD_H__#define PHY_GPIOE_MODER 0X50006000 #define PHY_GPIOE_ODR 0X50006014 #d…

leetcode228. 汇总区间

题目 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b]…