如何理解HTTPS?可以收藏这一篇,足以应付面试!


如何理解HTTPS?可以收藏这一篇,足以应付面试!

文章插图
 
整个 HTTPS 的演变跟流程细思极恐,有很多思想可以借鉴学习 。我以后要离搞安全的朋友远一点 。
这篇将带你深入 HTTPS 加解密原理,希望看完能够有这些收获:
· 明白 HTTPS 到底解决了什么问题
· 理解对称加密与非对称加密的原理和使用场景
· 明白 CA 机构和根证书到底起了什么作用
 
Why HTTPS
 
近几年来,各大公司都在大力推进 HTTPS 的建设:
· google Chrome 将非 HTTPS 的网站标注为不安全 。
· 苹果要求 App 中需要使用 HTTPS 进行通信 。
· 微信小程序也要求使用 HTTPS 协议 。
 
那么,我们为什么非要做这么一件事呢?我们先来看看 HTTP 。
 
HTTP(Hypertext Transfer Protocol)超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议,可以说 HTTP 是当代互联网通信的基础 。
 
但是,HTTP 有着一个致命的缺陷,那就是内容是明文传输的,没有经过任何加密 。
【如何理解HTTPS?可以收藏这一篇,足以应付面试!】 
而这些明文数据会经过 WiFi、路由器、运营商、机房等多个物理设备节点,如果在这中间任意一个节点被监听,传输的内容就会完全暴露 。
 
这一攻击手法叫做 MITM(Man In The Middle)中间人攻击 。
 
举个例子,稍微有点长,但这个例子透露出了怪怪我对安全如此痴迷的原因 。
 
可以拿小时候上课传纸条来类比,你坐在教室靠墙的一边,想要传一句「晚上放学操场我等你」给坐在窗边的小红,中间要经过六七个人的传递 。
 
虽然你把纸条对折了一下,但是防君子不防小人,中间的所有人都可以很轻易地打开纸条看到你想要说什么 。
 
只是看还好,如果有小刚也喜欢小红,看到你俩马上就要甜甜蜜蜜地回家了,心有不甘,换了一张纸条,改成了「晚上放学你自己回家吧,我要去网吧玩游戏」 。
 
小红看到你要抛弃她自己去玩游戏,非常伤心,开始在纸条上质问「说好的一起回家呢,为什么要去打游戏,哼」 。
 
在小红的纸条传回来的路上,小刚又改了纸条「你玩你的游戏去吧,我要和小刚回家」 。
 
于是,你和小红都倍感伤心,小刚横刀夺爱,而你一头雾水 。
 
回忆一下几年前遍地都是的运营商劫持,当你访问一个本来很正常的网页,但页面上却莫名其妙出现了一些广告标签、跳转脚本、欺骗性的红包按钮 。
 
甚至有时候本来要下载一个文件,最后下下来却变成了另外一个完全不同的东西,这些都是被运营商劫持了 HTTP 明文数据的现象 。
如何理解HTTPS?可以收藏这一篇,足以应付面试!

文章插图
 
 
运营商劫持
 
还有各大公司的员工安全培训里都有一条「不要连陌生的 WiFi」,也是类似的原因,恶意 WiFi 的控制者可以看到和篡改 HTTP 明文传输的信息 。
 
为了解决 HTTP 明文传输数据可能导致的安全问题,1994 年网景公司提出了 HTTPS(HyperText Transfer Protocol Secure)超文本传输安全协议,数据通信仍然是 HTTP,但利用 SSL/TLS 加密数据包 。
HTTPS 实现原理
 
前面说到,HTTPS 其实就是将 HTTP 的数据包再通过 SSL/TLS 加密后传输,那么 SSL/TLS 又是什么呢?
 
SSL(Secure Sockets Layer)安全套接层和 TLS(Transport Layer Security)传输层安全协议其实是一套东西 。
 
网景公司在 1994 年提出 HTTPS 协议时,使用的是 SSL 进行加密 。
 
后来 IETF(Internet Engineering Task Force)互联网工程任务组将 SSL 进一步标准化,于 1999 年公布第一版 TLS 协议文件 TLS 1.0 。目前最新版的 TLS 协议是 TLS 1.3,于 2018 年公布 。
工作流程
 
我们先来看看 HTTPS 的加解密流程,如下图:
如何理解HTTPS?可以收藏这一篇,足以应付面试!

文章插图
 
 
HTTPS 加解密流程如下:
· 用户在浏览器发起 HTTPS 请求(如 https://www.mogu.com/),默认使用服务端的 443 端口进行连接 。
· HTTPS 需要使用一套 CA 数字证书,证书内会附带一个公钥 Pub,而与之对应的私钥 Private 保留在服务端不公开 。


推荐阅读