为 HTTPS 打一场人民战争
我一直都很关注 HTTPS 的事情,不过前段时间 Let’s Encrypt 又有了新闻,说免费的 SSL 证书马上就要出炉了,然后就在几天前, Google 的 Blogger 平台又开始放出了 HTTPS 的支持。这两大消息让我的屁股痒了起来,决定动笔聊一下我对于 HTTPS 的看法。
如果你不知道我在说什么的话,看一下这个吧。
HTTP 滚!
众所周知, HTTP 是个不安全的协议,有点水平的人都能够 毫无阻碍 地看到你在网页上看到的内容,也就是说你干了什么事情别人都能知道,毫无隐私可言。除此之外, HTTP 上的内容也能够被水平不高的人随便修改,也就是说别人可以操控你在网上看到的一切,搞搞恶作剧放个鬼图自然是小菜一叠,发个病毒盗盗帐号什么的也不难。
这尼玛谁受得了啊!哦,我在网上干了什么别人可以 随便 看,我看的消息还可以被人 随便 改,这还有人权吗?!
想到我看的东西、搜索的内容、发的消息全都 一丝不挂 地展现在别人的眼前,我就浑身泛起阵阵恶寒,虽然说君子要坦荡荡,但“坦荡荡”不代表没有不愿意给别人看的东西呀。这跟走在街上被不谋不轨的人盯着的感觉一样,谁知道那个人缺不缺钱、或者是不是变态之类的。虽然说我长得不咋地吧,但万一就有人好这口咋办……还有屏幕前的你,我想你应该长得比我好看,所以危险说不定更大啊。
就算不是陌生人,我也不希望把我的所有东西都给除自己以外的人,就算是我的亲生父母,他们要是想看我的浏览器历史记录的话,我也要跳起来的。有一回我上网的时候出去上了个厕所,回来看到俺爹坐在电脑前,一脸严肃地滚动着鼠标滚轮……说真的我还真没浏览什么黄色网页,但我的浏览记录让别人看了就是浑身不爽。
这还不是最可怕的,更可怕的是,你用 HTTP 得到的网页, 没有一个 能确定它是不是真的!网站上有一些帖子,可这些帖子是本来网站上就有的呢,还是被不怀好意的人放上去的呢?有些网站上不去,显示 404 或其他什么,可它真的是网站本身的问题吗?你的一举一动,你看的,你听的,你说的,你写的 一切 东西都有可能被修改过。
你觉得你没啥价值被监视吗?来,看看知乎上的一篇文章和link:https://plus.google.com/GhostAssassin/posts/hw3Sapt8Lwn[ G 上的一张帖子],这些事情就在你身边。
其实有一个爱好黑客技术、喜欢搞恶作剧的室友或隔壁还不算是最可怕的,要是有个想赚不合法的钱的人比这可怕的多。想象一下你在网上输入密码的时候别人都能够抓捕到,如果这个密码跟钱有关,那后果就很明显了。或者如果你不用网银,别人也可以通过你在网上干了什么来推测你的习惯、爱好,获取你的真实姓名、地址,那就跟违反妈妈在你小时候告诉你的“不要告诉陌生人名字、电话、住址”一样了。
啊,最可怕的还没说。 HTTP 的信息, 任何 在你和网站之间的人和机器都能看到,包括你的运营商(中国电信、中国移动之类的)。运营商肯定不会图谋不轨盗你帐号是不?确实,不过这并不代表运营商的人各个都是君子,看到数以万计的用户个人隐私在眼前的机器流过,怎么保证不会有人去想捞起一个瞅瞅呢?而且,看到那些本来没有广告的网站上出现的广告吗?那 是谁 放的?
你用了一个公共 WiFi ,还用 HTTP 上网,你的 所有 信息也可以被拿着路由器的人看到并修改。你在学校里上网,学校让你专心学习,不让你上关于游戏的网站,甚至如果你在网上发了什么东西,嘛,一清二楚。
总之,如果你用 HTTP 上网,所有的东西都是裸体的,用 HTTP 上网说极端了跟 裸奔 无异。我怎么还敢用!
如果你是网站的站长,你希望你的用户看到的是被别人篡改过的网站吗?你认为你的每一个用户都不在乎别人是否知道他们在你的网站上看了什么吗?我怎么敢不给我的网站用 HTTPS !
唯有加密 + 验证才是保护隐私的唯一方式
好在,我们有着 HTTPS ,这个 S 就代表着 Secure 。用它,你所有经过的数据都被加密了起来,只有你和服务器知道密码,外人不知道,收到了也是乱码。
你和服务器是怎样知道密码的呢?这个我就不讲了,反正我可以告诉你,加密和解密用的不是一个密码,用加密用的密码推导不出来解密的密码。神奇不?这就是许多数学家辛勤努力的成果。当然,这并不是牢不可破的,只不过目前来说,要破解难到爆了,随便两个中二病是做不到的,即使是像 NSA 这样的大组织都还在苦命地研究呢。啊,反正不用担心就是了。
可是,被加密、密码很难破解的东西,就安全了吗?
万一有人伪装成网站服务器,想要获取你的信息怎么办?你的信息在传输过程中被加密,传到服务器上肯定得解密呀。服务器是必须得信任的,可是,万一服务器被伪装了,真假都不知道,还怎么信任它?
这就得靠验证了,有几个国际声誉都很好的公司,大家都很信任它们,这些公司被叫做“证书颁发机构”。这些公司给网站们一张证书,伟大的数学让这张证书的伪造也变成了几乎不可能的事情,那么接下来很简单,浏览器们在连接的时候会看证书,如果证书是那几个大公司颁发的,那肯定就是正牌的服务器了。至于图谋不轨的伪装者,他们可搞不到证书。
可是有些人比较懒,他们没那闲情逸致去求证书颁发机构们给证书,或者说没钱找他们买,但是也想用 HTTPS ,好歹加密一下吧,所以就用了 HTTPS 。可是,它们没有证书颁发机构给的证书,也就是说,它们看起来跟图谋不轨的伪装者一样。浏览器看见它们没有证书颁发机构给的证书,那就认为是假的了,于是浏览器会警告你:“我看这个网站像假的,别上啊!”。
有人说,仅仅是没经过验证,但是连接还是加密的呀,别人照样看不到传输的信息。
这种说法是不对的,因为我之前说过,浏览器靠证书来判断网站的真假,如果连真的也判断成了假的,那假的跟真的又有什么区别呢?
如果你在浏览器弹出证书警告的时候点了“忽略,打开网页”,你就跟使用 HTTP 一样,服务器真假不知道,对方给你的消息能信吗?
网站站长们,你用了 HTTPS 却不签证书,那攻击者不是照样来?没错,确实比啥都不加密的 HTTP 好,但也仅此而已了,好不到哪去,被人冒充了,跟不加密又有什么区别呢?
域名都买了,一张证书几个钱?或者,像免费的证书也有啊! Start SSL ,还有今年十一月份就要上线的 Let’s Encrypt ,都是很好的选择。
揭竿而起的地方领袖们
各式各样的浏览器是人们上网时不可缺少的一环,有关 HTTPS 加密、验证的一切也由浏览器来完成,一个好的浏览器能完美地完成这些工作,而一个差的浏览器则不能。可见选择一个好的浏览器有多么重要。
Mozilla Firefox™ 在 2015 年 4 月 30 日发表博客,说他们马上就要开始渐渐地限制 HTTP 的能力了。因为 HTTP 太不安全,所以把重要的东西通过 HTTP 传输是不被它允许的,比如部分 Canvas 和 Cookie ,只有 HTTPS 的网页才行。
Google Chrome™ 做得更激进,连弱的 HTTPS 都不放过,在 39 版本起,就将慢慢将使用 SHA-1 加密的 HTTPS 网页的安全提示标志变成警告标志,从绿变黄,再变红。只有使用更强的加密(比如 SHA-2 )的网页它才会提示是安全的。
Google 甚至修改算法,让使用 HTTPS 的网站排名更靠前,这无疑是鼓励站长们去使用 HTTPS 。
这两个大牌浏览器们的行为在不断地向我们表示: HTTP 、 旧的加密,该被淘汰了。显然,这两个浏览器的加密验证工作也是做的非常好的,不然也不会成为世界上份额最大的浏览器了。
可是在 Google 和 Mozilla 不断努力,推进互联网加密进程的时候,我们“亿万用户的共同选择”、“全面安全保障”的国产浏览器们在干什么呢?拿相对来说使用最多的 360 浏览器来说吧,它在访问 HTTPS 网页的时候,竟然不进行证书验证!也就是说,即使是冒牌的服务器,它照样给上。那这样的话,有什么安全可言?其他的“伟大”国产们我就不提了, Google 上找找吧,可够看一天的了。
所以,要说靠谱,非 Google Chrome 和 Mozilla Firefox 不选。用其他浏览器的话,特别是国产,跟用 HTTP 有和区别?甚至还更差——因为这些浏览器本身就是会监视你的隐私的,用它们就相当与引狼入室,就相当与你把劫匪邀进家里,说:“喂,我这儿的东西随便拿。”
人民的战争
地方领袖——浏览器们只是能够带一个路,告诉大家要去使用 HTTPS ,而真正的“革命”,要靠人民来完成。
我这里说的“人民”也就是指各个网站,当然也包括各位上网看网页的人。一个网站如果使用了 HTTPS ,那就要做好,找证书颁发机构要(买)个证书,并且默认使用 HTTPS 。因为使用了它你就能保护你的用户不看到被篡改的数据,也没被监视。如果一个网站全程使用 HTTPS 加密传输,不怀好意的人还能做什么呢?
说到这里我又不得不黑一下自己的祖国了,我们来看一看“境外反华网站”们的 HTTPS 普及率吧:
- Twitter ✓
https://www.twitter.com - Facebook ✓
https://www.facebook.com - Google ✓
https://www.google.com - Wikipedia ✓
https://en.wikipedia.org - YouTube ✓
https://www.youtube.com
啊,全中!也就是说,虽然资本主义国家们的人们正生活在水深火热之中,网络经常有人会偷窥,但是它们的连接全基本都是被 HTTPS 包围起来的,偷窥不到什么东西。
如果你能够访问到 HTTP 的这些网站,它们会把你的浏览器重定向到 HTTPS 去,因为它们不希望你使用不安全的 HTTP 。
而我们伟大天朝的网站,你在几个地方看到过浏览器左上角的绿色小锁了?嗯,偶尔会有,大多是在登录界面,为了防止窃取密码才使用的,不过除此之外,就很少看到了。难道除了登录信息以外,其他的信息在裸奔着都没关系吗?
正是因为如此,微博、微信、 QQ 都不加密,信息可以随便被人窃取,我在上面提到的知乎文章中的事情才变得可行,如果它们全都用 HTTPS ,那那个主人公根本就没辙了。
啊,其实,天朝的许多网站其实也有 HTTPS ,只不过默认不启用,你要在地址栏里打一下 https://
才会使用,不过,又会有几个人这样做呢?大多数懒人还是会使用默认的 HTTP 。
第四连队冲锋!
那么,各位!尽自己的微薄之力,让 HTTPS 推广起来吧!
星星之火,可以燎原。
如果你是网站的站长,给你的网站加个 HTTPS 吧,当然,要签过证书的,免费的也行。这样做不但使用户安心,也让自己升值。
如果你是一名普通的网民,上网的时候尽量使用 HTTPS 吧,即使它没有给你重定向,也手动输 https://
试试。这样不但保护自己的隐私,也让网站的管理员看到 HTTPS 的重要性。或者你可以安装 HTTPS Everywhere 这个浏览器插件,它会帮你在更多的网站上跳转到 HTTPS 。
看到我网站左上角的小绿锁了吗?看到了它,我就能放心了,看我博客的人全都是被 HTTPS 光环笼罩的。你在看到这个小绿锁的时候,想必也是身心舒畅吧?