前言
人生在世总要相信点什么,信亲人、信朋友、信你面前的陌生人,即便这些你都不信,也要信自己吧,假如连自己都不信了,那在地球上恐怕很难生存了。
我们把钱存入银行,因为我们相信当我们需要用钱时可以通过银行卡把钱取出来;我们拿着车票准时来到候车大厅,因为我们相信除非特殊情况,我们买的那趟车绝不会提前丢下我们而去;遇到纠纷我们会选择打官司,因为我们相信法官最后会给我们公正的判决结果。
生活中我们信任自己的经验,信任自己的亲人朋友,并依赖这些信任来做许多事情,这些信任是我们正常生活学习的前提,缺了这些我们将寸步难行。而在网络中我们同样需要信任,这些信任是筑造网络社会的基石。
有些信任是有条件的,比如银行贷款时不能通过空口白话就借来白花花的银子,而抵押物是贷款银行为了相信你附加的筹码;有些信任是无条件的,比如前面一篇总结 《认证、HTTPS、证书的基本含义》中提到的根证书,我们必须无条件信任,否则我们将置身于网络猜疑的海洋之中,无法正常利用网络带给我们的便利。
信任链
我们常听说 HTTPS
更加安全,它是通过非对称加密技术,让我们可以在不确定的网络环境中可以确认对方的身份,安全传输密钥,但这一切都是有前提的,你得相信你的操作环境是安全的,你没有被人监控,你的电脑没有被人控制,你的数据没有被人篡改,抛开环境谈安全都是耍流氓~
好了,我们可以回顾一下,要想验证一个网站的身份,我们需要得到网站的公钥,如果可以解开网站拿私钥加密的消息,我们就证明了网站的身份,而网站的公钥不能由网站直接发给我们,需要找权威机构给它证明,相当于找了个担保人。
权威机构会用自己的私钥把网站的信息和公钥合在一起生成证书,当我们访问网站时首先得到这个证书,然后用权威机构的公钥来解开证书内容,得到网站的信息和网站的公钥,然后进行信息比对和公钥解密来认证身份,这时我们需要思考,权威机构的公钥从哪里来?
权威机构可以找更加权威的机构按照相同的方式给它做证书,这样一环一环的就走下去,形成了信任链,然后就无穷无尽了,一个权威机构给另一个权威机构证明,我可以玩到天荒地老,到底什么时候是个头啊,其实我们可以人为的确定一个,那就是根证书,他不需要找别的人给它证明,如果一个网站证书最终信任链顶端是有效的根证书,那么网站身份被确认。
根证书
接下来看看根证书在哪呢?它内置在我们的浏览器(Firefox)和操作系统中,我们需要无条件的信任,从理论上讲没办法判断根证书的真假,它是自证清白的。这里需要注意,根证书不止有一个,它可以有很多个,“根”只是说明信任链到此为止,整条信任链上的节点都是“可信”的。所以说还是不要随意安装根证书,因为有了它就可以在你的电脑为所欲为。
说到这里有些人会想,根证书内置在操作系统和浏览器(Firefox)中,如果我下载一个被恶意修改的浏览器岂不是危险了,这种担心是有必要的,所以请尽量在正规网站下载,可是怎么证明哪些网站是正规网站呢?可以使用系统自带的根证书判断。
如果我的系统是盗版系统,根证书被人改过,那不是更危险了,事实确实如此,算了吧,还是暂时不相信网络了,我去买个系统光盘吧(不知道现在还有没有人用光盘装系统),可是卖你光盘的人能保证光盘的内容不被篡改吗?你说那不能,因为他是微软高级经理的小舅子,应该不能卖盗版碟吧。
即使光盘不是盗版的,但是制作光盘的内容有没有人动过手脚呢?这些我们还是无法确认,我们能做的只是尽可能的在正规渠道购买正版系统,这种情况遇到证书被篡改的情况很小,然后就无条件相信这个系统了,这就是我文章开头说的,我么总要信点什么,试想如果盖茨在 Windows
操作系统的证书中留有后门,你又能做些什么呢,所以还是不要纠结了,既然用就在正常使用的前提下信任它。
应用及分析
说是应用,实际上我只是想吐槽而已,在吐槽之前我们应该了解,证书可以跟各大证书机构(也就是各种CA)来买,也可以自己生成,可能有人会想了,自己生成挺好啊,不用花钱谁还买啊?可是刚刚说过了,跟CA买的证书都是操作系统内置证书认证过的,自己生成的证书操作系统和浏览器可不认,那怎么办呢?
干脆自己安装个根证书,自己给自己认证得了,用户岂是你想让安装就安装的,别说,还真是这样,只要你说的情况很危急,必须安装,那么大多数的小白用户是会自动安装的,这时你想到了谁?
不知道大家想到了谁,反正我是想到了建行网银证书和令人“可歌可气”的12306,接下来简单扒一扒他们两个的故事…
建行网银证书
最先接触的证书就是建行网银证书,我的第一代网银盾用了将近10年,去年才刚刚升级成2代,可以说真的是太稳定了,不知道做网银的产品经理是谁,你简直就是程序员的福音,在2020年的今天打开建行的官网,首页倒是好看了许多,但是有些内容,比如证书安装、U盾介绍的页面还是原来丑丑的样子。
之前办理U盾时还花钱,根本都不懂啊,使用U盾必须装证书啊,不装就不安全啊,现在回想起来,和我说这话的人可能根本就不懂什么是安全,什么是不安全,反正装就是了,每次付款都要启动建行验证程序,这也是我手动安装过的次数最多的证书,是它开启了我网上购物的里程。
已经2020年了,打开建行的官网依旧提示我正在使用不安全的连接,使用网银依旧让我自己安装证书,可能作为一个大银行,官方网站迟迟不启用 HTTPS
,使用网银盾坚持要用户自己安装证书,应该不仅仅是证书价格的问题,可能还有什么其他的原因。
神奇的12306
毕业后直接在12306买票的次数就少了,现在一般使用 APP 来解决,前一阵发现12306居然不要求自己安装证书了,仔细一查原来从2017年开始,12306官网就购买了 DigiCert Inc
认证的证书,确实是一个进步的boy,终于舍得花点钱买证书了,作为一个巨大型的网站,它方便了人们购票的方式,是值得歌颂和称赞的,但是每次购票前还要安装烦人的证书,确实挺令人生气的。
原来“根证书”3个红字显示在页面正中间,确实起到了提醒的作用,挺扎眼的,不过那已经一去不复返了,我再放个图,大家一起回顾一下。
ESET SSL Filter CA
最后放一个例子,让你感受下根证书的威力,ESET是总部位于斯洛伐克布拉迪斯拉发的一家世界知名的电脑安全软件公司,主要做杀毒软件,前不久复习 HTTPS
知识的时候发现,我访问各大网站的证书全都变成了 ESET SSL Filter CA
,这是什么鬼,难道 ESET SSL Filter CA
是个特别大的证书机构?
当时还没有意识到是杀毒软件的证书,以为大家都是买的这家证书,后来发现不太对,百度、谷歌、GitHub、Stack Overflow,怎么都是一样的证书,继续深究才发现被“窃听”了。
我们知道使用 HTTPS
通信因为使用了非对称加密,没有私钥是无法窃听加密内容的,但是这款杀毒软件做到了,它有一个HTTPS 内容过滤的功能,做了我的电脑和各大网站的中间人,按理说 HTTPS
是可以检测出中间人的,但是这款软件在电脑中安装了根证书,所有浏览器认为它是合法的,理论上可以窃听你所有内容,甚至为所欲为。
总结
- 信任不仅是人类社会的基石,在网络世界同样重要
- 证书之间的层层信任构成了信任链,而根证书是不需要被其他人证明的
- 不要随意安装来历不明的根证书,那样可能会使的电脑更容易遭受到攻击
若衣食无忧,谁甘愿拼搏!努力鞭策自己无非是为了挣得可以选择生活的权利~