一文看懂什么是HTTPS,及其安全传输机制和原理

一、前言

HTTP 和 HTTPS协议都是我们日常工作和学习中经常碰到的问题,那么什么是HTTPS和HTTPS?两者的主要区别又是什么?理解两者的差别能够帮助我们在工作中和生活中能够得到安全的保障,如判断网页是否安全和值得用户信任,并将隐私等重要数据传给服务器等。极大保障我们日常生活的安全。
相信通过本篇博客能够帮助你更加深刻的理解HTTP和HTTPS协议的原理。

二 、什么是HTTP和HTTPS?

下面给出了HTTP和HTTPS的定义:

1. 什么是HTTP?

HTTP, Hyper Text Transfer Protocol,即超文本传输协议。是一个简单的请求-响应协议,运行在TCP之上,简单来说,即指定客户端发送给服务器什么样的消息以及得到什么样的响应。

1.1 HTTP的工作原理

下面给出了HTTP协议工作的基本原理:
在这里插入图片描述

1.2 HTTP 的缺点

1.通信使用明文(不加密),内容可能会被窃听;
在这里插入图片描述
客户端向服务端发送一个 HTTP 请求,这个请求在网络中的传播路径是辐射式的,附近的节点网络都会收到这个请求,所以,消息很容易会被有心人窃听。

2.不验证通信方的身份,有可能会被伪装;
HTTP 协议中的请求和响应不会得到通信方的确认,而是任何人都可以发出请求,因此,服务器只要接收到请求,就立马返回一个响应,因此可能存在以下几个隐患。
1)无法确定请求发送到目标服务器,有可能是伪装的服务器;
2)无法确定响应返回到的客户端,是真正发送请求的客户端,有肯能是伪装的客户端;
3)无法确定请求是谁发出的、来自何方;

3.无法证明报文的完整性,有可能会被篡改。
HTTP 无法证明通信报文的完整性、准确性。所以,在请求或响应发出后直到对方接收之前,这段时间内即使请求、响应被篡改了也无法获悉

1.3 HTTP的实际案例

下边给出了某网站毕业论文查重的网站,可以看到该网址使用的是HTTP协议,而网站导航中将该网站列为不安全网站。
在这里插入图片描述
因为我们在论文上传的过程中,如果遇到黑客的攻击,那么该服务器的内容可能会被窃取,因此用户的数据并不能得到安全的保障。所以,我们在浏览某些网站时,要具有安全隐患的意识。

2. HTTPS: (Hyper Text Transfer Protocol over SecureSocket Layer)

HTTPS 是在 HTTP 之上加了一个安全层,虽然 HTTPS 仍然基于HTTP 进行通信,但HTTPS使用 SSL/TLS 对数据包进行了加密,能够保护交换数据的隐私与完整性。

本文并不从SSL、TLS的层面区介绍HTTPS协议,而是以通俗易懂的方式来介绍HTTPS协议。HTTPS 采用对称加密和公钥加密二者结合的混合加密机制。在交换密钥的过程使用公钥加密,在建立通信交换报文阶段使用对称加密。

3. 加密算法

3.1 对称加密算法

对称加密是指通信双方使用同一个密钥,使用加密算法和密钥对数据进行加密,使用机密使用同一密钥及相同算法的逆算法对密文进行解密。

数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。
在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。因此对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。

在这里插入图片描述

优点:
1)加解密使用相同的密钥
2)高效,适用大量数据的加密场景
3)算法公开,安全性取决于密钥的大小,密钥越大效率越低,安全性越高

缺点:
1)算法本身安全,但使用场景不够安全,因为解密和加密都使用一个密钥
2)密钥在网络中直接传输面临不安全

3.2 非对称加密

非对称加密(asymmetric cryptography),也称为公开密钥加密(Public-key cryptography),是密码学的一种算法,它需要两 个密钥,一个是公开密钥,另一个是私有密钥。顾名思义,公钥可以任意对外发布;而私钥必须由用户自行严格秘密保管,绝不 透过任何途径向任何人提供,也不会透露给要通信的另一方,即使他被信任

在这里插入图片描述

优点:
使用匹配的一对密钥,分别进行加密和解密,分别为公钥和私钥
安全性高

缺点:
加解密复杂,效率较低,耗时长

用途:
加密,对数据进行加密
签名,证明数据是谁发的

4. 基于对称加密算法的HTTPS的问题

在这里插入图片描述

当浏览器请求报文时,使用密钥A加密后,发送给服务器;

服务器想要解密请求报文,必须知道密钥A,因此,密钥A必须通过网络发送给服务器;

存在密钥A泄露重大问题!

5. 基于非对称加密算法的HTTPS的问题

当浏览器请求报文时,使用公钥A加密后,发送给服务器;
服务器收到请求报文时,通过私钥A进行解密,并响应报文;
而服务器的私钥只有服务器知道,因此,没有任何人可以解密请求报文;
但非对称加密存在中间人攻击

在这里插入图片描述

中间人攻击过程: 当浏览器请求浏览器的公钥时,黑客通过冒充服务器,在中间充当服务器,并将公钥B发送至浏览器; 浏览器收到公钥后,误认为是服务器的公钥A,但实际是黑客的公钥B;
因此黑客可以利用自己的私钥对浏览器发送的请求报文信息进行解密,知道原来报文的内容。 同理,可以伪装成浏览器与服务器通信

6. 使用CA认证解决中间人攻击

如何避免服务器的公钥A被篡改(如果没有办法避免黑客篡改,但是浏览器必须能够验证公钥A是服务器的)

在这里插入图片描述

认证方式
例如:用人单位在招聘过程中想要验证毕业生的毕业证是否是真的,那么必须去具有权威机构的学信网查询真伪。
同样的,对于服务器的公钥A,想要知道服务器的公钥A是否是真的,必须有权威机构认证,即CA
互联网有众多认证机构或者代理商(收费),保证认证安全。认证机构之间可以相互信任,但都有根认证。
全球众多互联网网站,因此,有众多一级、二级认证机构,证书链。 认证过程: 服务器发送公钥A,地址等信息至认证机构,
CA使用私钥C对上述信息进行加密,生成签名,并颁发给服务器;

具体浏览器请求证书和证书提前颁发的过程:
在这里插入图片描述

认证过程:
认证:服务器发送公钥A,地址等信息至认证机构,
颁发:CA使用私钥C对上述信息进行加密,生成签名,并颁发给服务器;(一般众多的操作系统均有各大CA机构的公钥C,保存在自己的系统中)

请求过程:
浏览器首先请求服务器证书,服务器收到请求后,将网站的证书发给浏览器。
浏览器收到服务器证书后,对服务器证书进行解密(验签),验证使用CA机构的公钥C进行验签;
如果信息一致,那么浏览器便认为该网站确实是请求服务器网站。

7. 使用CA认证+非对称加密+对称加密的完整HTTPS协议

完整的HTTPS协议如下示意图所示:
在这里插入图片描述
基本的握手过程:

1)浏览器相信服务器之后,开始请求报文。
2)然而,浏览器只得到了服务器的公钥A;由于非对称加密的效率很慢,如果请求报文较大,比如几十兆,会出现请求网站过慢的情况,用户体验差。
3)因此,可以利用对称加密效率高的方法; 浏览器会生成自己的密钥D(会话密钥D),但是由于对称加密的问题,服务器不能直接拿到会话密钥。
4)浏览器使用公钥A,对会话密钥D进行加密生成会话密钥密文,发送至服务器,服务器收到后,只能使用私钥A进行解密。
5)服务器收到会话密钥的密文,使用私钥A进行解密,得到对称加密密钥D,并响应密钥接收成功。
6)接着,服务器和浏览器就可以通过会话密钥D进行加解密的操作。传输内容。

猜你喜欢

转载自blog.csdn.net/vivid117/article/details/124538103