HTTPS 的加密流程

HTTPS 本质上就是 HTTP 的基础上增加了一个加密层,抛开加密之后,剩下的部分就和 HTTP 是一样的,在HTTPS中,比HTTP多了一个"S",这里的S是SSL。HTTPS=HTTP+SSL。

HTTPS引入的背景是臭名昭著的运营商劫持

在当年,法律在互联网相关的东西上面还不是很完善

在使用https,加密的过程中,涉及到了密码学中的几个核心的概念

(1)明文:要传输的真正的意识是啥

(2)密文:加密之后得到的数据

(3)密钥:用来加密和解密的重要道具

这个过程简单来说就是,把明文通过密钥变成密文 ,把密文通过密钥变成明文

对称加密和非对称加密

对称加密:加密和解密,使用同一个密钥就行了,加密解密速度比较快。

非对称加密:密钥是一对(分别称为公钥和私钥)加密解密速度比较慢,安全性更高。可以使用公钥加密,此时就是私钥解密。或者可以使用私钥加密,公钥解密.

HTTP本身是不安全的,为了能够安全,最简单的做法就是使用对称加密来进行操作

这里有一个问题

对称密钥,当有多个客户端的时候,是要有一个密钥还是多个密钥??所有客户端使用同一个对称密钥,还是每个客户端有一个自己的呢?

(1)对称密钥

如果只有一个密钥,黑客使用自己的客户端,不就知道密钥是啥了嘛~~黑客就可以把密文进行解密了呀~~

所以让每个客户端生成一个自己的密钥,让后告诉服务器就可以了

在这里就又有一个新的问题了,如图所示

在上述过程中,密钥在第一次传输的时候,也可能被黑客获取到,那之后的的加密也就是形同虚设了。

(2)非对称密钥

在这里我们引入非对称密钥,通过非对称密钥,对对称密钥进行加密

引入非对称加密,不是针对后续传输的数据内容展开的,而是只针对对称密钥来进行!!

在上述过程中,客户端持有公钥,服务器持有私钥,通过公钥对对称密钥进行加密,服务器用私钥解密,得到对称密钥。

黑客拿到加密后的对称密钥之后,是无法解密的,使用公钥加密,得拿着对应的私钥来解密,黑客能轻松拿到公钥,但是拿不到私钥

上述过程中看起来很美好,实际上黑客还是有办法获取到原始数据的

(3)中间人攻击

黑客可以自己冒充自己是服务器

在上述过程中,服务器生成一对公钥和私钥(假设是pub和pri),再把公钥发给客户端的途中,黑客获取到,黑客可以自己生成一对公钥和私钥(pub2和pri2),让后把自己生成的公钥发给客户端,让后客户端基于黑客给的公钥来加密密钥,黑客就可以根据自己的密钥来进行解密,得到其中的密钥,让后用服务器给的公钥来加密,再返还给服务器。

此时黑客面对客户端的时候,扮演服务器的角色,面对服务器的时候,扮演客户端的角色,客户端和服务器, 都不知道 黑客的存在~~

(4)解决中间人攻击

最关键的切入点,就是让客户端能够区分出当前的公钥是不是服务器自己的公钥,是不是被伪造出来的公钥~~

在这里引入第三方公证机构。

公证机构对公钥进行公证,此时客户端看到这个公钥被公证了,就可以认为是合法的了

在上述过程中,服务器上线就会向第三方公正机构申请一个证书,此时服务器就会保存好自己申请道德证书(不是字纸的,而是数字的字符串)。之后返回给客户端

(1)客户端收到证书后,会对证书的合法性进行校验,针对证书中的内容1.发证机构2.证书的有效期3.服务器的公钥4.证书的所有者5.持有者网站的主域名6.数字签名。在上述的6个内容中,只有数字签名是加密的,其他的属性都是明文的。数字签名是前5个内容进行加密得到的,前5个内容计算的校验和为校验和1

(2)针对数字签名进行解密

数字签名是基于公正机构的私钥来加密的,就需要拿着公正机构的公钥来解密,获取公正机构的公钥,不是通过"网络"的方式获取到的!!!通过网络的方式,就可能会得到黑客伪造的公钥,而是操作系统会内置公正机构的公钥!!

公正机构,一共没有多少,你一个操作系统, 就可以在发布的时候,把市面上的公正机构的公钥都打包放到一起。随着安装操作系统,公钥就有了!(系统内置的公钥,一定是正经公钥,不是伪造的!!

(3)客户端对比校验和1和校验和2是否相等

接下来,就可以使用公正机构的公钥 (系统内置)来对数字签名进行解密了,解密之后得到校验和 2,客户端会对比校验和1和校验和2是否相等,相等就说明整个证书,都是没有被篡改过的,此时,证书既然都是有效的,证书中包含的公钥自然就是可信的服务器公钥了。

针对公正机构加密的数字签名,进行解密是很容易的,公正机构的公钥是内置到系统中的,用户可以解密,黑客当然也能解密了

黑客很容易能拿到校验和,虽然能拿到,但是无法篡改,也无法伪造!!!

1)如果黑客修改了证书中的公钥,但是不修改数字签名,客户端校验的时候就会发现,自己算出来的校验和和从数字签名中解密出来的校验和,不一致了!!!客户端就可以判定,证书非法!

2)如果黑客修改了公钥, 并且自己重新计算校验和,重新加密得到数字签名??

黑客不知道公正机构的私钥是啥。黑客只能拿着自己生成的私钥来加密,客户端收到数据之后,肯定是拿着公正机构的公钥来解密,此时就会出现解密失败!!客户端也可以判定,证书非法~~

大家还记得在安装fidder,开启https的时候,会有一个”安装证书“过程,必须要选同意!!

这个过程就是给你的系统里增加一个公证机构,fiddler的公证机构

相关推荐

  1. HTTPHTTPS区别,HTTPS加密原理是?

    2024-06-07 00:34:05       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-07 00:34:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-07 00:34:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-07 00:34:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-07 00:34:05       20 阅读

热门阅读

  1. 算法学习笔记——对数器

    2024-06-07 00:34:05       8 阅读
  2. 递推7-2 sdut-C语言实验-养兔子分数

    2024-06-07 00:34:05       5 阅读
  3. MacBook M系列芯片安装php8.2

    2024-06-07 00:34:05       11 阅读
  4. 【html知识】html中常用的表单元素+css格式美化

    2024-06-07 00:34:05       11 阅读
  5. Facebook海外企业广告账户是什么?有什么优势?

    2024-06-07 00:34:05       10 阅读
  6. Emacs Verilog Mode 简单使用指南

    2024-06-07 00:34:05       10 阅读
  7. 【Qt快速入门(一)】- Qt简介

    2024-06-07 00:34:05       9 阅读
  8. js平滑滚动元素使其可见

    2024-06-07 00:34:05       12 阅读