导读上海最近连续下了一周的雨,一夜之间气温又回到了解放前。我穿着夏装瑟瑟发抖,躲在家里哪里也不想去。
在家无聊,刷网页,看到微信官方账号后台的消息。有同学问我HTTP和HTTPS有什么区别?
当然,HTTPS比HTTP更安全。你没看见后面有个S吗?就是NB加个s而已。
然后同学的下一个问题把我逼疯了。为什么服用S更安全?你能告诉我更多关于它的情况吗?
我告诉你,噢,我没有搞砸。我花了这么多年。
我从来没见过像你这样的同学问这样一个我不太了解的问题。
虽然这个问题让我脸红,但我有一种“我不会,但我可以学”的无耻精神。
http:我们先来了解一下http:
HTTP的全称是超文本传输协议,翻译过来就是超文本传输协议。请不要质疑这个翻译。我用百度翻译翻译的。
应该知道TCP/IP的四层模型,包括数据链路层、网络层、传输层和应用层:
HTTP协议位于TCP/IP四层模型的应用层。
这里很多人会把TCP和HTTP搞混。其实HTTP是基于TCP连接的。
简单来说,TCP就是简单的建立一个连接,没有任何我们需要请求的实际数据,简单的传输。HTTP是用来发送和接收数据的,也就是实际应用的。
HTTP协议通过请求和响应在客户端和服务器之间发送和接收数据,并进行通信:
HTTPSHTTP协议好像没什么问题。唯一的问题是不够安全,因为HTTP协议的传输方式完全是明文传输,没有任何加密,这就给了一些恶意的人可乘之机。
这种传播方式诱发了一种经典的攻击方式:中间人攻击。
在这种情况下,我们可以使用最简单的加密方案,如AES加密。服务器和客户端首先商定一个随机生成的密钥,在随后的通信中,所有信息都将使用该密钥通过AES加密:
这样接下来的通信过程是安全的,但是我们第一次发送AES密钥的时候还是有被中间人截获的风险。一旦中间人截获了我们的密钥,我们就可以更改密钥或直接解密所请求的内容:
这时,我们可以使用非对称加密来保护密钥的传输。
非对称加密将有两个密钥,一个是公钥,另一个是私钥。明文可以用公钥加密,用私钥解密,也可以用私钥加密。
目前比较常见的非对称加密算法是RSA。
这里的同学一定很疑惑,既然都用非对称加密,为什么只对AES密钥用非对称加密?看似多余,后续所有通信信息完全可以使用非对称加密。
因为非对称加密相对于对称加密有明显的劣势,所以你可能会觉得一个请求多花几个ms或者ns都无所谓。然而,当请求到达服务器时,它需要被解密,并且每个请求需要多花费几个ms,这加起来是相当大的量。
上面的方案看起来很安全,即使中间人拦截。
我们的公钥,由于不知道我们的私钥貌似也没办法解密。实际上中间人完全不需要解密我们的信息,他可以生成一对新的公私钥发送给客户端进行攻击,后续客户端的通信中间人使用自己创造的私钥进行解密,然后通过服务端生成的公钥进行加密返回给服务端:
CA 证书上面的问题我们仅通过客户端和服务端已经没办法了,这时候需要引入新的第三方机构,一个颁发 CA 证书的机构。
常见的第三方 CA 机构有:Symantec(赛门铁克),Comodo(科莫多),GeoTrust(环度网信),GoDaddy,Thawte,daoRapidSSL 等等。
在中间人攻击中,我们遇到的问题不是加密算法不够神奇,不是密钥方式不够严谨,而是我们没有办法向我们的客户端表明我们给他的公钥是我们的,是不是很像我没办法证明我是我的问题。
所以第三方机构应运而生,第三方机构只做一件事情,将服务端的公钥刻上了我们的名字(CA 证书),客户端接收到公钥之后,只需要来第三方机构这里查询,就能知道这个公钥是不是真的服务器,然后再将自己生成的 AES 密钥使用 CA 证书中解密得到的公钥进行加密后发送给服务端。
最后服务端使用私钥解密得到 AES 密钥,就可以愉快的和客户端进行通信了。
最后的最后,CA 机构验证不是每次都要去 CA 机构查询。这样做太傻了而且太耗时,尤其是很多 CA 机构的服务都在海外,这样一来一去消耗的时间太多了。
CA 机构高明的地方就在于,我们去找它注册公钥,它会使用另一个来注册的公司的私钥对我们的公钥加密,得到一个我们的公钥的指纹(全球唯一),然后将这家公司的公钥信息(其实也是证书)和我们的公钥以及我们公钥的指纹打包成一个证书。
当我们使用 HTTPS 将证书下发给客户端校验时,客户端(比如浏览器)从证书中看到了上级证书的信息,恰巧这个证书就在浏览器(或者本机)中,已经被验证过是合法的,浏览器只要使用这个证书中的公钥将我们的公钥指纹进行解密,然后比对我们的公钥信息就知道我们也是的合法的。因为假证书中的公钥签名不可能被合法的上级证书中公钥解密 。
这段稍微有点绕,慢慢看多看几次就理解了。
参考https://www.jianshu.com/p/691b8ba3a70f
https://blog.csdn.net/u010144805/article/details/80803059
https://blog.csdn.net/caofengtao1314/article/details/87912078
作者:极客挖掘机
来源:https://www.cnblogs.com/babycomeon/p/13041439.html