Https协议的安全性原理

本文最后更新于:2021年12月1日 晚上

Https协议的安全性原理

[TOC]

超文本传输安全协议(常称为HTTP over SSL/TLS)是一种通过计算机网络进行安全通信的传输协议。https经由http进行通信,但利用SSL/TLS来加密数据包。https使用端口443,URL以https://开头,使用https的网站需要从CA那里获得证书。

HTTP的数据使用TCP在互联网上明文传输,很容易被黑客截获、篡改或者冒充,而HTTPS除了ip和端口都进行了加密,并且使用了SSL/TLS的安全通信方式,所以相对来说安全。

what-is-https

关于SSL/TLS见我另一个博客。

https无法逃脱GFW监管

这个是显而易见的hhh,毕竟现在打开浏览器输入https://www.google.com也上不了,因为https对对ip和端口是不加密的,而且注意是源ip、目标ip、源端口、目标端口都不加密。所以很容易就能封禁某网站的ip。

https中间人劫持

首先说明,正常情况下https是不会遭遇中间人攻击的,因为HTTPS基于的TLS协议考虑到了这种情况。

中间人攻击(Man in the middle attack, or MITM)指的是在密码学和计算机安全领域中是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。

TLS通过数字证书来防御这种攻击,即User在访问某Web Applicaiton的时候,会先明文建立TCP连接,然后发送明文证书请求,然后某Web App会把CA认证的证书发给User,这个证书使用了CA的私钥进行加密非常安全,User收到证书之后用公钥解密验证证书的有效性,然后就会把本次TLS通讯的秘钥通过证书里的公钥加密发送给Web App。

假如黑客出现,在User收到Web App发来的正确证书的时候,就已经无计可施了,所以黑客要作为一个中间人,把Web App发来的正确证书进行掉包,生成一个包含自己公钥的假证书发给用户,假如用户傻傻地不验证证书的正确性,那就会使用中间人的公钥对TLS秘钥进行加密传输,而中间人拥有私钥,于是就能得到会话的TLS秘钥,从而获取信息。问题在于,用户遇到报错会不会点下图这种“继续浏览此网站”,不点就没事!

安装根证书

根证书是证明证书有效的证书。这听上去可能有点绕口,这是一种信任链,假如你信任国家这种最权威的机构,那国家授权的企业你也信任,而企业授权的证书颁发机构你也信任,证书颁发机构信任的网站你也信任,根证书就是信任的源头,它说啥就是啥。

在操作系统内部会内置很多根证书,同时用户也可以手动安装新的根证书,这就是万恶之源,安装了不可信的根证书之后,中间人颁发的假证书就可以说是假根证书所信任的,那么你的秘钥就泄露出去了。

所以不要随随便便安装根证书。但是类似fiddle这样的抓包软件会让你安装根证书,因为它抓包https的技术就是作为一个可信的中间人。或者公司的防火墙也会要求安装根证书,安装之后防火墙就能监控所有的https流量内容(而不只是端口和ip)。

参考文献

超文本传输安全协议 - 维基百科,自由的百科全书 (wikipedia.org)

中间人攻击 - 维基百科,自由的百科全书 (wikipedia.org)