计算机网络基础知识-HTTPS 协议

0 阅读11分钟

HTTPS 协议

概念

超文本传输安全协议(Hypertext Transfer Protocol Secure,简称:HTTPS) 是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,利用 TLS/SSL 来加密数据包。

HTTPS 的主要目的是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

HTTP 与 HTTPS 的对比

  • HTTP 协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险
  • TLS/SSL 具有身份验证、信息加密和完整性校验的功能,可以避免此类问题发生
  • 安全层的主要职责,就是对发起的 HTTP 请求的数据进行加密操作和对接收到的 HTTP 的内容进行解密操作

TLS/SSL 的工作原理

TLS/SSL 简介

TLS/SSL 全称安全传输层协议(Transport Layer Security), 是介于 TCP 和 HTTP 之间的一层安全协议,不影响原有的 TCP 协议和 HTTP 协议。其中 TLS 是 SSL 的继任者,是介于 TCP 和 HTTP 之间的一层安全协议。

核心算法

TLS/SSL 的功能实现主要依赖三类基本算法:

  • 散列函数(hash)
  • 对称加密
  • 非对称加密

这三类算法的作用如下:

  • 基于散列函数验证信息的完整性
  • 对称加密算法采用协商的密钥对数据加密
  • 非对称加密实现身份认证和密钥协商

散列函数

常见的散列函数有 MD5SHA1SHA256

特点:单向不可逆,对输入数据非常敏感,输出的长度固定,任何数据的修改都会改变散列函数的结果,可以用于防止信息篡改并验证数据的完整性。

缺点:在信息传输过程中,散列函数不能单独实现信息防篡改,由于传输是明文传输,中间人可以修改信息后重新计算信息的摘要,所以需要对传输的信息和信息摘要进行加密。

对称加密

常见的对称加密算法有 AES-CBCDES3DESAES-GCM 等。

对称加密的方法是,双方使用同一个密钥对数据进行加密和解密。

特点:对称加密的优势就是信息传输使用一对一,需要共享相同的密码,密钥的安全是保证信息安全的基础,服务器和 N 个客户端通信,需要维持 N 个密码记录且不能修改密码。

缺点:不能保证密钥传输的安全性。因为密钥还是会通过网络传输的,一旦密钥被其他人获取到,那么整个加密过程就毫无作用了。这就要用到非对称加密的方法。

非对称加密

常见的非对称加密算法有 RSAECCDH 等。

非对称加密的方法是,我们拥有两个密钥,一个公钥一个私钥,公钥是公开的,私钥是保密的,用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据,只有对应的私钥才能解密。我们可以将公钥公布出去,任何想和我们通信的客户,都可以使用我们提供的公钥对数据进行加密,这样我们就可以使用私钥进行解密,这样就能保证数据的安全了。

密钥成对出现,一般称为公钥(公开)和私钥(保密)。公钥加密的信息只有私钥可以解开,私钥加密的信息只能公钥解开,因此掌握公钥的不同客户端之间不能相互解密信息,只能和服务器进行加密通信,服务器可以实现一对多的的通信,客户端也可以用来验证掌握私钥的服务器的身份。

特点:非对称加密的特点就是信息一对多,服务器只需要维持一个私钥就可以和多个客户端进行通信。

缺点:服务器发出的信息能够被所有的客户端解密,且该算法的计算复杂,加密的速度慢,因此如果每次通信都使用非对称加密的方式的话,反而会造成等待时间过长的问题。

TLS/SSL 工作方式

综合上述算法特点,TLS/SSL 的工作方式就是:

  • 客户端使用非对称加密与服务器进行通信实现身份的验证
  • 协商对称加密使用的对称密钥
  • 双方使用协商好的对称密钥对实际传输的数据进行加密
  • 同时利用散列函数保证数据的完整性

对称加密算法采用协商密钥对信息以及信息摘要进行加密通信,不同节点之间采用的对称密钥不同,从而保证信息只能通信双方获取,这样就解决了算法各自存在的问题:

  1. 非对称加密,只用在握手阶段,数据量小,安全地完成密钥交换,解决了它慢、不适合大量数据、不适用于每次通信的问题。
  2. 对称加密,借助非对称加密的“公钥加密”特性,把对称密钥安全地传过去,解决了它不能安全传输密钥的问题,保证了传输效率。
  3. 散列函数,通过非对称加密和对称加密,解决了它明文容易被篡改的问题,确保了数据的真实性和完整性。

HTTPS 通信(握手)过程

  1. 客户端向服务器发起请求,请求中包含使用的协议版本号、生成的一个随机数、以及客户端支持的加密方法
  2. 服务器端接收到请求后,确认双方使用的加密方法,并给出服务器的证书以及生成的一个随机数
  3. 客户端确认服务器证书有效后,生成一个新的随机数并使用数字证书中的公钥加密这个随机数,并且还会提供一个前面所有内容的 hash 的值用来供服务器检验
  4. 服务器使用自己的私钥,来解密客户端发送过来的随机数。
  5. 客户端和服务器端根据约定的加密方法,使用前面的三个随机数生成对话密钥,以后的对话过程都使用这个密钥来加密信息。

HTTPS 的特点

优点

  1. 使用 HTTPS 协议可以认证用户和服务器,确保数据发送到正确的客户端和服务器。
  2. 使用 HTTPS 协议可以进行加密传输、身份认证,通信更加安全,防止数据在传输过程中被窃取、修改,确保数据安全性。
  3. HTTPS 是现行架构下最安全的解决方案,虽然不是绝对的安全,但是大幅增加了中间人攻击的成本。

缺点

  1. HTTPS 需要做服务器和客户端双方的加密和解密处理,耗费更多服务器资源,过程复杂。
  2. HTTPS 协议握手阶段比较费时,增加页面的加载时间。
  3. SSL 证书是收费的,功能越强大的证书费用越高。
  4. HTTPS 连接服务器端资源占用高很多,访客稍多的网站需要投入更大的成本。

HTTPS 是如何保证安全的?

核心加密技术

HTTPS 的安全性依靠以下两个概念:

对称加密

即通信的双方都使用同一个密钥进行加解密。

对称加密虽然很简单性能也好,但是无法解决首次把密钥发给对方的问题,很容易被黑客拦截密钥。

非对称加密

  • 私钥 + 公钥 = 密钥对
  • 即用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据,只有对应的私钥才能解密
  • 因为通信双方的手里都有一套自己的密钥对,通信之前双方会先把自己的公钥都先发给对方
  • 然后对方再拿着这个公钥来加密数据响应给对方,等到了对方那里,对方再用自己的私钥进行解密

非对称加密虽然安全性更高,但是带来的问题就是速度很慢,影响性能。

解决方案

结合两种加密方式,HTTPS 将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通

此时又带来一个问题——中间人问题。如果此时在客户端和服务器之间存在一个中间人,这个中间人只需要把原本双方通信互发的公钥,换成自己的公钥,这样中间人就可以轻松解密通信双方所发送的所有数据。所以这个时候需要一个安全的第三方颁发证书(CA),证明双方的身份,防止被中间人攻击。证书中包括签发者、证书用途、使用者公钥、使用者的 Hash 算法、证书到期时间等。CA 给服务器发一个数字证书,里面写着这个服务器是谁、它的公钥是什么、证书有效期等;客户端收到证书后,就知道这个公钥真的是目标服务器的,而不是中间人的。

但是问题又来了,如果中间人篡改了证书(比如换了公钥),那么身份证明就无效了。这个时候需要一个新的技术——数字签名。数字签名就是用 CA 自带的 Hash 算法对证书的内容进行 Hash 得到一个摘要,再用 CA 的私钥加密,最终组成数字签名。客户端拿到证书后,用同样的算法算一遍证书内容,得到一个新摘要,用 CA 的公钥解密签名,得到原始摘要,对比两个摘要就知道中间有没有被人篡改了。这个时候就能最大程度保证通信的安全了。

数字证书是什么?

数字证书的作用

现在的方法也不一定是安全的,因为没有办法确定得到的公钥就一定是安全的公钥。可能存在一个中间人,截取了对方发给我们的公钥,然后将他自己的公钥发送给我们,当我们使用他的公钥加密后发送的信息,就可以被他用自己的私钥解密。然后他伪装成我们以同样的方法向对方发送信息,这样我们的信息就被窃取了,然而自己还不知道。为了解决这样的问题,可以使用数字证书。

数字证书的制作过程

  1. 首先,使用一种 Hash 算法来对公钥和其他信息进行加密,生成一个信息摘要。
  2. 然后,让有公信力的认证中心(简称 CA)用它的私钥对消息摘要加密,形成签名。
  3. 最后,将原始的信息和签名合在一起,称为数字证书。

当接收方收到数字证书的时候,先根据原始信息使用同样的 Hash 算法生成一个摘要,然后使用 CA 的公钥来对数字证书中的摘要进行解密,最后将解密的摘要和生成的摘要进行对比,就能发现得到的信息是否被更改了。

这个方法最要的是认证中心的可靠性,一般浏览器里会内置一些顶层的认证中心的证书,相当于我们自动信任了他们,只有这样才能保证数据的安全。


HTTPS 作为现代网络通信的安全标准,通过结合 TLS/SSL 协议,有效解决了 HTTP 明文传输的安全隐患。它利用对称加密和非对称加密的结合,既保证了数据传输的安全性,又兼顾了传输效率。

核心要点包括:

  • 安全机制:通过握手过程建立安全连接,使用数字证书和数字签名确保身份认证和数据完整性
  • 技术原理:融合散列函数、对称加密和非对称加密的优势,形成完整的安全体系
  • 实际应用:虽然增加了服务器负担和成本,但为用户提供了更安全的浏览体验,已成为现代网站的标配