HTTPS出生名门:HTTPS协议是由Netscape(网景)公司在1994年提出的,目的是提供对网站服务器的身份认证,用来保证交换数据的隐私与完整性。
HTTPS正名已久:在2010年左右,HTTPS开始被广泛应用,以确保各类型的网页真实有效。
HTTPS关键事件:2018年7月24号,google Chrome宣布所有HTTP网站将会被标为不安全,并计划在搜索排名中降低HTTP网站的权重和排名。
HTTPS免费运动:大部分的商业网站,为了给用户提供安全可靠的服务,大多会选择向CA机构购买付费证书。但还是有很多的个人网站、非商业网站,或多或少因为费用的原因,并没有使用HTTPS。为了全面推动互联网的安全,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,现由非盈利组织互联网安全研究小组(ISRG)运营的Let's Encrypt,免费、开放和自动化的提供证书颁发服务。(现在各大云平台都有自己的免费证书服务)
万维网(WWW),就像我们的高速公路,连通了我们每个人的个人电脑,方便我们的诉求信息,像快递包裹一样,在这些高速公路上高效流转。同时,我们也需要尊重这些个人包裹,就像我们需要尊重每个人的隐私一样。不能让这些重要信息在运输途中赤裸裸的暴漏在外面,什么人都可以看到,如果是这样,还有谁愿意用快递公司邮寄自己的个人物品呢?!
HTTPS可以加密我们的信息,将其安全的送达目的地。
为什么要加密?如果不这样做,那我所发送的信息谁都能看得懂,在没有秘密的前提下,我的美好生活就很难得到保障。比如朋友约我下午去他家,一起玩任天堂新版《群星大乱斗》,但我作业还没做完。这时候如果这条信息通过家里的路由器发送给朋友,很有可能我的父母也能看到,要是被他们知道了,我不觉得他们会开开心心的开车送我去玩游戏。
加密的方式通常有两种,一种是对称性加密(Symmetric encryption),也就是我和我的朋友用我们自己约定的语言发送密语,只有我们两个能破解,读懂我们彼此发送的信息,那么我们双方要拥有相同的密码表,也就是我们的证书。另一种就是非对称性加密(Asymmetric encryption),也就是证书有两种,一种是公钥,一种是私钥。比如我和朋友用微信进行聊天,我们装在自己手机上的微信叫客户端,腾讯的微信服务器是服务器端。客户端会拥有公钥,而服务器端会拥有私钥。他们按下面的规则进行通讯:
公钥:
私钥
那我将要发送给好友的信息将会先抵达腾讯的徽信服务器,服务器拿着私钥把我的信息先解密,调整后,又加密发给了我的好友,就像一个负责任的邮差一样,我的好友收到我的信息后,再用公钥解开,就能看到我发送给他的信息了。而我的父母是没法看懂这些信息的,因为他们并没有我俩的公钥。这样是不是就万事大吉了,我们可以顺利开启我们的游戏人生了?
然而并没有!因为不管是对称加密还是非对称加密,都需要面对一个问题,那就是如何保证密钥的安全性,通过上面的应用场景可以看出,公钥是需要传播的,我们怎么保证传播的途径和保存的方式安全可靠呢?根据“我跟你说个秘密,你不要和其它人说”原理,我们很难保证,仅仅靠个人就能保证密钥的安全性。如果持有的人少,可能泄漏的安全风险会相对小一些,但一旦同时持有的人数变多,风险就会急剧攀升,只要有一个人不小心或故意泄漏了密钥,整个消息网络就不再安全了。
当涉及到一些重要的隐私数据,如用户名和密码时,带来的影响会是灾难性的。比如我们要访问某宝官网,选购我们需要的商品时,我们会在浏览器上打开这个站点,那么在这个过程中,我们怎么知道我们在访问这个网站的过程中,有没有中间人在过手我们的信息呢?因为如果这个中间人拿到了我们的公钥,那它就可以在中间好好的隐藏起来,我们的交易还在继续,但我们完全感知不到。而这个中间人已经获取了我们的所有信息。
HTTPS可以为我们净化网络,给我们提供安全和保障。
可以看出,我们需要引入大家都依赖的第三方,帮助我们确认身份的关键信息。这时候就该CA(Certificate Authority)机构闪亮登场了,这个中间人做了几件事:
为了更好理解这个中间人的作用,我们站在浏览器的角度,假设用户想访问笔者的个人网站https://sunwei.xyz, 梳理一下这个认证流程:
这时候,我们发现中间人没有办法再将自己继续藏匿起来,不被发现。因为中间人的服务器不在CA机制的该证书认证列表里面。就算中间人也向该CA机构申请了自己的合法证书,但同理,你也不能将别人的域名或者服务器认证到你自己的证书里面。
从网络OSI七层协议简化版中可以看出,HTTPS属于应用层,那这就意味着运用了HTTPS协议的通讯在进行UDP/TCP连接前,就已经对数据进行了加密操作,如下图:
这样也能看出分层架构的好处,各司其职。再放大到七层协议,可以看到实际发生作用的是Session层:
最后附上全景图:
全文完