HTTPS 的加密过程

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: HTTPS 的加密过程

引言



HTTPS:Hyper Text Transfer Protocol over SecureSocket Layer

HTTPS => HTTP + SSL / TLS

SSL:Secure Socket Layer(安全套接层)


HTTPS 中的 S 表示 SSL,是一种握手协议,这种握手协议也就是本篇博客着重介绍的加密过程。HTTPS 也是一个应用层协议,只是在 HTTP 协议的基础上引入了一个加密层。

为什么要加密呢?


HTTP 协议在网络传输中,非常广泛!然而,HTTP 协议内容都是按照文本的方式,进行明文传输的,这就导致在传输过程中,数据可能被 第三方 / 黑客 篡改。所以,通过一系列的加密过程,在传输数据时,将明文以一些规则变成密文,即使黑客或第三方中间人获取到文件,那么也看不懂的数据。结合日常生活的场景,这并不难理解。


理解加密解密



加密:把明文( 要传输的信息 ) 进行一系列变换规则,生成密文。

解密:把密文 ( 收到的信息 ) 进行一系列变换规则,生成明文。


加密解密主要采取两种形式:


① 对称加密


加密:明文 -> 密文,使用密钥1

解密:密文 -> 明文,使用密钥1


② 非对称加密


加密:明文 -> 密文,使用密钥1

解密:密文 -> 明文,使用密钥2


非对称加密实际上是这样的思想:


服务器既拥有密钥1、又拥有密钥2。服务器通常将密钥1 公开出去,那么任何客户端都能够获取到这个密钥1,客户端通过密钥1 对明文进行加密,最终服务器再通过密钥2 来对密文解密。密钥1 被称为公钥,密钥2 被称为私钥。


举个例子:A 给 B 送信,信中有钱、银行卡…A 与 B 在送信的前一天晚上进行了沟通。B 对 A 说:“ 如果明天你去办公室找我的时候,我人不在,你就把信放到桌子旁的柜子里,然后用锁锁起来,锁在我的办公桌上,我已经把锁打开了,你到时候扣上就行,到时候我忙完回办公室的时候,拿钥匙一开就行了。”


在上面的例子中,锁就相当于是公钥,钥匙就是私钥。同一把锁对应同一把钥匙才能相互配合。在信件放入柜子的时候,也就能保证钱和银行卡的安全了。


结论:

对称加密,至始至终,只使用一个密钥。

非对称加密,需要两个不同的密钥进行紧密配合。


SSL 的握手过程



场景一


在场景一中,客户端通过对称密钥进行加密,服务器通过相同的对称密钥进行解密,而就算黑客拦截信息后,如果不知道密钥,就无法破译密文。


65bc0e07dcd743ec89ab5f3d452fbaf5.png

场景一很简单,很实用,也很好理解。在日常生活中,面对一些信息的加密,普通用户或许就是这么做的。


但是!网络环境是非常复杂的,服务器不可能只为一个客户端服务。这并不像电影中的两个接头,对上暗号那么简单!


如下图所示,服务器在同一时刻,可能是给很多客户端提供服务的,数量或许是几千,或许是几万,或许是几百万…这么多客户端,如果每个人用的密钥都是相同的,那么,可想而知,密钥就不可能安全,由于一传十,十传百,黑客就也能拿到了密钥了,这样一来,就不谈传输安全了。因此,服务器就需要维护每个客户端和每个密钥之间的关联关系,这也是个很麻烦的事情。请继续往下看,场景二。


6989ae20179741c8a4e2bb43432ecce4.png


场景二


比较理想的做法,就是能在客户端和服务器建立连接的时候,双方协商确定这次的密钥是什么,确定好了,再进行信息交互,就免了所有的后患了。在场景二中,客户端和服务器每次传输数据的时候,通过特定的密钥加密解密,而这个特定的密钥,在第一次两者建立连接的时候,就需要确立好。


7a0808b5a9a840abb05bc8fb5e6ec98e.png


在场景二 中,或许已经理想了,客户端和服务器今后就能通过独立的对称密钥进行信息交互了。但是!上图中的密钥却也是以明文传输的,这就造成了黑客依旧能够拦截到密钥数据,从而造成了不安全的情况。


因此,我们就应该将密钥也要进行加密,也就是【密钥的密钥】,然而,难道我们应该再给【密钥的密钥】进行再加密吗?如此循环下去,终究解决不了第一次对称密钥的传输安全性。


鉴于此,我们就引入了非对称加密这个机制。


场景三


在场景三中,客户端持有公钥,服务器持有私钥,在第一次请求之后,服务器通过私钥解开了公钥加密的密文,从而拿到了对称密钥,之后就能够正常传输了,然而,之后的正常传输依然要加密,并且常采取对称密钥,不再使用非对称密钥了。


为什么?


可以看到,公钥密钥在配合使用的时候相当麻烦。还是之前说的,一个服务器在同一个时刻,可能与多个客户端进行交互。试想,每一次的请求与响应都需要这样配合,那么机器消耗资源极高,速度也慢。如果说,公钥密钥之间的配合只是用来保证第一次传输的对称密钥无误,那么后续使用对称密钥的机制来传输业务数据,也就没有什么太大问题,并且,采取对称密钥,效率高,速度快很多。


此外,在场景三中,客户端持有公钥,服务器持有私钥。在服务器第一次解密之前,黑客拿不到公钥对应的密钥,在服务器第一次解密后,黑客依旧拿不到对称密钥。所以,从过程和结果看,这都是安全的。但这有一个前提,那就是黑客没有伪造公钥,请继续往下看。


341a20290ca14d199c638f7a3fede992.png


中间人攻击


但是,在场景三中,服务器刚开始应该是有公钥和私钥的,而客户端是通过某些方式来获取公钥的。


假设,在这过程中,黑客从服务器第一次返回响应给客户端的时候,黑客伪造了公钥给客户端,如果客户端拿到了假的公钥,结局就很难预料了。


如下图:整个过程中,黑客充当了中间人,从客户端和服务器两者交互的过程中,横插了一脚,这被称为中间人攻击。


5efa9e0f96d64922a0d9c39fac2d9e06.png


那么,客户端是如何获取到公钥的呢?客户端是如何确定这个公钥不是黑客伪造的呢?

请看场景四。


场景四


怎么解决中间人攻击呢?


在客户端和服务器刚一建立连接的时候,服务器给客户端返回一个 证书。这个证书包含了即将给客户端使用的公钥,也包含了网站的身份信息。这个证书就好比人的身份证,作为这个网站的身份标识。搭建一个 HTTPS 网站要在 CA机构 先申请一个证书,这个过程就类似于去公安局办个身份证。


证书是第三方介入的,当然,证书需要有权威性,合法性…在客户端和服务器连接之前,两者与证书并无关系。所以,客户端需要以一些规则,对服务器响应时返回的证书进行校验,来保证证书的所有者正确,保证证书的有效期符合期限,保证证书的发布机构的权威性等等…


场景四如图:


feac6aa035d04819acb787c3ba984353.png


总结



  • 客户端先从服务器获取到证书,证书中包含了公钥
  • 客户端对证书进行校验
  • 客户端生成一个对称密钥,使用公钥对对称密钥进行加密,发送给服务器
  • 服务器得到这个请求之后,使用私钥解密,得到对称密钥
  • 客户端发出后续的请求,后续的请求都是使用这个对称密钥加密的
  • 服务器后续收到的数据,自然也是使用同样的对称密钥解密的


综上所述,整个 HTTPS 加密过程的难点就在于,不仅要保证【传输内容】是安全的。还要保证为传输内容设置的【密钥】也是安全的。


所以,这需要对称加密和非对称加密的一起使用,对称加密保证了【传输内容】的安全性,非对称加密保证了【密钥】安全性。


目录
相关文章
|
23天前
|
安全 网络安全 数据安全/隐私保护
内网IP地址实现HTTPS加密访问教程
在内网环境中,为确保数据传输的安全性,绑定SSL证书搭建HTTPS服务器至关重要。本文介绍了内网IP地址的前期准备、申请SSL证书的步骤以及客户端配置方法。具体包括选择合适的CA、注册账号、提交申请、下载证书,并在客户端导入根证书,确保通信数据的安全加密。推荐使用JoySSL提供的技术解决方案,确保内网设备通信安全。
内网IP地址实现HTTPS加密访问教程
|
26天前
|
域名解析 算法 安全
免费申请https加密全攻略
访问JoySSL官网注册账号,申请免费SSL证书。选择证书类型,填写域名信息,生成CSR文件,验证域名所有权。下载并部署证书至服务器,测试HTTPS连接。注意定期续期,确保兼容性和安全性。如有问题,可联系JoySSL客服。
|
3月前
|
安全 网络安全 数据安全/隐私保护
HTTPS中的加密算法
HTTPS中的加密算法
|
2月前
|
安全 网络协议 网络安全
【HTTPS】对称加密和非对称加密
【HTTPS】对称加密和非对称加密
36 0
|
5月前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
99 10
|
4月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
348 0
|
5月前
|
数据安全/隐私保护
https【详解】与http的区别,对称加密,非对称加密,证书,解析流程图
https【详解】与http的区别,对称加密,非对称加密,证书,解析流程图
169 0
|
9天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的知识,并提供一些实用的技巧和建议,帮助读者更好地保护自己的网络安全和信息安全。
|
1天前
|
SQL 安全 网络安全
网络安全漏洞、加密技术与安全意识的知识分享
随着互联网的普及,网络安全问题日益严重。本文将介绍网络安全漏洞的概念、类型和防范措施,以及加密技术的原理和应用。同时,强调提高个人和企业的安全意识对于防范网络攻击的重要性。
|
2天前
|
监控 安全 网络安全
网络安全与信息安全:漏洞、加密与意识的交织
在数字时代的浪潮中,网络安全与信息安全成为维护数据完整性、保密性和可用性的关键。本文深入探讨了网络安全中的漏洞概念、加密技术的应用以及提升安全意识的重要性。通过实际案例分析,揭示了网络攻击的常见模式和防御策略,强调了教育和技术并重的安全理念。旨在为读者提供一套全面的网络安全知识框架,从而在日益复杂的网络环境中保护个人和组织的资产安全。