前面我们用四篇文章介绍了页面安全和系统安全
浏览器安适主要划分为三大块内容:页面安适、系统安适和网络安适。前面我们用四篇文章介绍了页面安适和系统安适,也聊了浏览器和 Web 开发者是如何应对各类类型的打击,本文是我们专栏的最后一篇,我们就接着来聊聊网络安适协议 HTTPS。
我们先从 HTTP 的明文传输的特性讲起,在上一个模块的三篇文章中我们分析过,起初设计 HTTP 协议的目的很纯挚,就是为了传输超文本文件,那时候也没有太强的加密传输的数据需求,所以 HTTP 一直连结着明文传输数据的特征。但这样的话,在传输过程中的每一个环节,数据都有可能被窃取或者篡改,这也意味着你和处事器之间还可能有其中间人,你们在通信过程中的一切内容都在中间人的掌握中,如下图:
从上图可以看出,我们使用 HTTP 传输的内容很容易被中间人窃取、伪造和篡改,凡是我们把这种打击方法称为中间人打击
具体来讲,在将 HTTP 数据提交给 TCP 层之后,数据会颠末用户电脑、WiFi 路由器、运营商和方针处事器,在这中间的每个环节中,数据都有可能被窃取或篡改。好比用户电脑被黑客安置了恶意软件,那么恶意软件就能抓取和篡改所发出的 HTTP 请求的内容。或者用户一不小心连接上了 WiFi 垂钓路由器,那么数据也都能被黑客抓取或篡改。
在 HTTP 协议栈中引入安适层鉴于 HTTP 的明文传输使得传输过程毫无安适性可言,且制约了网上购物、在线转账等一系列场景应用,于是倒逼着我们要引入加密方案
从 HTTP 协议栈层面来看,我们可以在 TCP 和 HTTP 之间插入一个安适层,所有颠末安适层的数据城市被加密或者解密,你可以参考下图:
从图中我们可以看出 HTTPS 并非是一个新的协议,凡是 HTTP 直接和 TCP 通信,HTTPS 则先和安适层通信,然后安适层再和 TCP 层通信。也就是说 HTTPS 所有的安适核心都在安适层,它不会影响到上面的 HTTP 协议,也不会影响到下面的 TCP/IP,因此要搞清楚 HTTPS 是如何事情的,就要弄清楚安适层是怎么事情的。
总的来说,安适层有两个主要的职责:对倡议 HTTP 请求的数据进行加密操纵和对接收到 HTTP 的内容进行解密操纵
我们知道了安适层最重要的就是加解密,那么接下来我们就操作这个安适层,一步一步实现一个从简单到庞大的 HTTPS 协议。
初版:使用对称加密提到加密,最简单的方法是使用对称加密。所谓对称加密是指加密和解密都使用的是不异的密钥
了解了对称加密,下面我们就使用对称加密来实现初版的 HTTPS。
要在两台电脑上加解密同一个文件,我们至少需要知道加解密方法和密钥,因此,在 HTTPS 发送数据之前,浏览器和处事器之间需要协商加密方法和密钥,过程如下所示:
通过上图我们可以看出,HTTPS 首先要协商加解密方法,这个过程就是 HTTPS 成立安适连接的过程。为了让加密的密钥越发难以破解,我们让处事器和客户端同时决定密钥,具体过程如下:
浏览器发送它所撑持的加密套件列表和一个随机数 client-random,这里的加密套件是指加密的要领,加密套件列表就是指浏览器能撑持几多种加密要领列表。
处事器会从加密套件列表中拔取一个加密套件,然后还会生成一个随机数 service-random,,并将 service-random 和加密套件列表返回给浏览器。
最后浏览器和处事器分袂返回确认动静。
这样浏览器端和处事器端都有不异的 client-random 和 service-random 了,然后它们再使用不异的要领将 client-random 和 service-random 混合起来生成一个密钥 master secret,有了密钥 master secret 和加密套件之后,双方就可以进行数据的加密传输了。
通过将对称加密应用在安适层上,我们实现了第一个版本的 HTTPS,虽然这个版本能够很好地事情,但是此中传输 client-random 和 service-random 的过程倒是明文的,这意味着黑客也可以拿到协商的加密套件和双方的随机数,由于操作随机数合成密钥的算法是果然的,所以黑客拿到随机数之后,也可以合成密钥,这样数据依然可以被破解,那么黑客也就可以使用密钥来伪造或篡改数据了。
第二版:使用非对称加密不过非对称加密能够解决这个问题,因此接下来我们就操作非对称加密来实现我们第二版的 HTTPS,不过在讨论具体的实现之前,我们先看看什么长短对称加密。
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30705.html