HTTPS 的加密流程

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

一、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 安全地与该网站建立连接。

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

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

得到初始的签名:客户端使用系统内置的权威机构的公钥pub针对证书中的加密签名解密,得到了初始签名

计算现在的签名:客户端使用相同的签名算法,基于证书的属性进行计算

比较两个签名是否相同  如果相同证明整数中的数据都是未被篡改的原始数据, 如果签名不同说明证书数据被篡改,客户端的浏览器弹框报错.

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

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

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

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

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

总结

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

第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在注册证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器使用这个私钥对证书的签名进行加密. 客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过.

第二组(非对称加密): 用于协商生成对称加密的密钥. 服务器生成这组 私钥-公钥 对, 然后通过证书把公钥传递给客户端. 然后客户端用这个公钥给生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解密获取到对称加密密钥.

第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密.

其实一切的关键都是围绕这个对称加密的密钥. 其他的机制都是辅助这个密钥工作的.

第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器.

第一组非对称加密的密钥是为了让客户端拿到第二组

相关文章
|
18天前
|
安全 算法 数据安全/隐私保护
HTTPS 加密工作过程
HTTPS 加密工作过程
|
19天前
|
安全 数据管理 测试技术
网络安全与信息安全:防范漏洞、加强加密与提升安全意识深入探索自动化测试框架的设计原则与实践应用化测试解决方案。文章不仅涵盖了框架选择的标准,还详细阐述了如何根据项目需求定制测试流程,以及如何利用持续集成工具实现测试的自动触发和结果反馈。最后,文中还将讨论测试数据管理、测试用例优化及团队协作等关键问题,为读者提供全面的自动化测试框架设计与实施指南。
【5月更文挑战第27天】 在数字化时代,网络安全与信息安全已成为维护国家安全、企业利益和个人隐私的重要环节。本文旨在分享关于网络安全漏洞的识别与防范、加密技术的应用以及提升安全意识的重要性。通过对这些方面的深入探讨,我们希望能为读者提供一些实用的建议和策略,以应对日益严峻的网络安全挑战。 【5月更文挑战第27天】 在软件开发周期中,自动化测试作为保障软件质量的关键步骤,其重要性日益凸显。本文旨在剖析自动化测试框架设计的核心原则,并结合具体案例探讨其在实际应用中的执行策略。通过对比分析不同测试框架的优缺点,我们提出一套高效、可扩展且易于维护的自动
|
19天前
|
机器学习/深度学习 安全 网络安全
利用深度学习优化图像识别流程网络安全与信息安全:防范漏洞、强化加密、提升意识
【5月更文挑战第27天】 在本文中,我们探索了深度学习技术如何革新传统的图像识别过程。通过构建一个基于卷积神经网络(CNN)的模型,我们展示了从数据预处理到特征提取再到分类决策的整个优化流程。实验结果表明,该模型在处理复杂图像数据集时,不仅提高了识别准确率,还显著缩短了处理时间。文章最后讨论了模型在现实世界应用中的潜力以及未来改进的方向。 【5月更文挑战第27天】在数字时代,网络安全与信息安全已成为全球关注的焦点。本文将深入探讨网络安全漏洞的成因与危害,加密技术的重要性及其应用,以及提升公众安全意识的必要性。通过对这些关键领域的分析,我们旨在为读者提供一套全面的安全防护策略,以应对日益复杂的
|
1月前
|
安全 网络协议 应用服务中间件
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
|
1月前
|
安全 网络协议 网络安全
网络原理(5)--HTTPS是如何进行加密的
网络原理(5)--HTTPS是如何进行加密的
34 0
|
3天前
|
SQL 安全 算法
网络安全与信息安全:漏洞、加密和安全意识的深度解析
在数字化时代,网络安全与信息安全已成为全球焦点。本文深入探讨网络安全漏洞的种类和防护措施,介绍加密技术在数据保护中的关键作用,强调安全意识在日常生活和工作中的重要性。通过案例分析和技术解读,我们揭示了保持网络安全的最佳实践和未来趋势。
|
8天前
|
SQL 安全 算法
网络安全的盾牌:加密技术与安全意识的双重保障
【6月更文挑战第6天】在数字化时代,网络安全已成为保护个人隐私和企业数据的关键。本文深入探讨了网络安全的两个重要支柱:加密技术和安全意识。我们将分析常见的网络安全漏洞,揭示加密技术如何为数据提供坚固的保护屏障,并强调提升个人和组织的安全意识对于防范网络攻击的重要性。通过结合技术手段和人为因素,我们可以构建一个更加安全的网络环境。
|
8天前
|
SQL 安全 网络安全
数字世界的守护者:网络安全漏洞、加密技术与安全意识的探索
在数字化浪潮中,网络安全成为维护信息完整性和隐私保护的关键防线。本文深入探讨了网络安全的核心问题——包括常见的网络漏洞、先进的加密技术以及公众的安全意识,旨在揭示这些因素如何共同塑造我们的数字环境。通过分析具体的安全事件和防御策略,文章提供了对现代网络威胁的深刻见解,并强调了个人和企业为抵御网络攻击所需采取的预防措施。
|
1天前
|
SQL 安全 算法
网络安全与信息安全:从漏洞到加密技术的全方位解析
本文将详细探讨网络安全与信息安全的各个方面,包括常见的安全漏洞、先进的加密技术以及提升安全意识的重要性。通过具体案例和技术细节,帮助读者更好地理解如何保护个人和企业的信息安全。
|
1天前
|
SQL 存储 安全
网络安全与信息安全:从漏洞到加密技术的深度探讨
在当今数字化社会,网络安全与信息安全已成为企业和个人必须关注的核心问题。本文旨在通过深入探讨网络安全漏洞、现代加密技术及提升安全意识的方法,为读者提供一份全面的知识分享。