查看原文
其他

对浏览器村的第二次采访

2016-04-11 老刘 码农翻身
上一次由于IE老先生太激动, 没有机会采访下Chrome和火狐, 这回我们记者再次拜访浏览器村,先找到了Chrome ,  不但做了个深度访谈,而且解决了HTTP中包裹的安全问题, 创造了一个新的包裹运输方式: HTTPS 。
没有看过上一篇文章的读者可以回复“IE打人”或者通过公共号的“热门”菜单查看

记者 Chrome你好, 久仰大名, 你能谈谈平时你是怎么做代理生意的吗?
我看了你上次的访谈,老IE确实也挺可怜的,其实我和IE做生意的方式差不多,只是我更快,更稳定,更安全。 Chrome
记者此话怎讲?
首先,主人每次委托我访问一个网站时, 我就会创建一个和我差不多的代理人(进程)来为主人服务,有多少个网站就有多少个代理人, 我只是居中调停, 要是某个网站崩溃了, 不会影响其他代理人。其次,我执行javascript的速度要比老IE快的多,估计你也听说过V8 引擎吧, 那速度简直是唰唰的。就是有人看到了这一点,才会把我的V8引擎放到服务器端去执行javascript ,创造了Node.js 。服务器端, 你造这意味着什么吗? Chrome
记者不知道啊?
这意味着需要支持多用户,大并发啊 , 这足以说明我执行的速度该有多快! Chrome
记者厉害, 上次老IE给我介绍的时候, 他说你们就是收发包裹 , 我一直有个疑问, 你们的包裹传那么远, 难道就不怕被某些居心叵测的人拆开,做点坏事吗?
你算问道点子上了, 最近闹得沸沸扬扬的运营商劫持事件不就是这样吗, 这帮家伙没有我们的允许, 强行把我们的包裹拆开, 放了大量的小广告传单, 让我们主人看的非常不爽。 可是我拿它也没办法, 因为我区分不开这些广告到底是运营商加的,还是网站本来就有。   其实小广告还能忍, 万一包裹中的用户名和密码被那些地痞流氓看到了, 主人的损失就大了去了。 Chrome
记者我倒是有一招, 把包裹放到保险柜里去!
对, 我最近也在琢磨这事儿, 保险柜上有锁, 那些人就打不开了,  可是钥匙怎么发给隔着千山万水的服务器啊,  如果通过包裹把钥匙发过去, 你知道运送包裹的路上有很多人虎视眈眈啊,  钥匙就有可能被人复制, 保险柜就没用了, 如果服务器亲自到我这儿当面取,  那这么多服务器, 这么多浏览器, 大家都得累死了。
(码农翻身注: 双方用的钥匙一样,这其实叫做对称加密和解密) Chrome
只听到外边有人咳嗽了一声, Chrome往窗户下一看, 老IE正蹲在那里偷听呢
 进来吧, 蹲那儿多难受。 Chrome
老IE尴尬地笑了笑, 走进来坐下。
其实这个包裹问题我也想了很久了, 终于有了点眉目, 我们来讨论下吧,  听说过没有?最近有人发明了一个新的保险柜, 非常神奇,有两把钥匙,一把是公开的,无论是谁都可以配一把 (简称公钥), 另外一把是私有的, 必须要保管好(简称私钥)。  神奇的地方还在这儿: 如果是用公钥把保险柜锁上, 只能用私钥打开, 反之, 如果是用私钥锁保险柜,  只能用公钥打开。(码农翻身注: 这其实叫做非对称加密, 大名鼎鼎的RSA算法。) IE
记者确实挺神奇, 但是有啥用啊?
我也听说过, 这个保险柜的名字叫RSA , IE老先生的意思是:我们买个这样的RSA保险柜, 发包裹时, 用远程网站的公钥来锁上, 这样那些地痞流氓就无法打开了, 等到保险柜到了网站,他就可以用他的私钥打开了。 Chrome
记者 妙啊, 可是你怎么取到人家网站的公钥?
 这很简单啊, 网站发个包裹给我们不就有了嘛! IE
慢着, 万一这个包裹也被人拆开了呢? 他完全可以把这个公钥替换成自己的公钥,做个中间人, 模拟远程的网站,这样我们的后续包裹不还是着了流氓地痞的道了?(码农翻身注: 这叫中间人攻击) Chrome
记者让那个网站也把公钥放到保险柜里, 然后发过来
那就回到原始的问题了, 典型的鸡生蛋, 蛋生鸡, 谁先谁后啊 IE
不如这样, 我们让网站从公安局申请一个特殊的身份证,里边包含公钥和他的网址, 然后通过普通包裹发给我们,  我们会向公安局查询, 看看到底是不是他。 Chrome
记者那地痞流氓还是可以改这个身份证, 把公钥给替换了啊。
你不知道, 这个身份证的特殊之处在于有个“签名”,只要改了身份证里的任何东西,哪怕是一点点,  签名就会变, 我们可以让网站用自己的私钥把签名锁到RSA保险柜里,随同包裹一并发给我们,  这样我们收到以后,我们就试试用公钥能不能打开这个柜子,  如果打不开,公钥肯定被人换了; 打开了, 我们就对比一下身份证上的最新签名和保险柜里的是不是一样, 如果不一样, 也证明身份证被人做了手脚。 Chrome
记者这真是好复杂啊, 不过好像解决了拿到网站公钥的问题, 还是你厉害,Chrome。
我忘了给你们说了, 这个RSA保险柜有个很大的问题:就是加锁和开锁特别的慢, 如果每次都用这个保险柜来发包裹,我们主人估计受不了。 IE
记者 (小声自言自语)靠, IE真是老糊涂了  ,这保险柜明明就没法用还给我们说。 
我想想, 应该还有办法, 再梳理一下现在的过程:1. 网站给我们发身份证2. 我们验证身份证是不是合法, 具体方法如下:    2.1 向公安局查询    2.2 验证网站    2.3 用公钥打开RSA保险柜, 验证签名是否正确。3. 如果上面的都通过,我们就确认公钥没有问题 。 Chrome
 我想到了! 以后我们就可以用普通的钥匙和普通的包裹了, 像这样1. 我们创建一把普通钥匙, 再配一把, 然后把它放到RSA保险柜, 用刚刚验证过的公钥锁上2. 网站用私钥把RSA保险柜打开,  拿到普通钥匙3. 从此以后,我们就用普通的钥匙和普通的保险柜来运送包裹了, 这样速度就快多了吗? IE
记者 妙啊, 老先生, 我们搞了这么多,其实就是为了把一把普通的钥匙发给网站啊,   看来你是宝刀不老啊。
 过奖过奖。 IE
 我们就把它称为 HTTPS (HTTP over Secure Socket Layer) 吧, 以后如果哪个网站不用https , 我就给主人提示, 主人确认了, 我才去访问。我们google 也会把我们的所有的网站都改成https。  Chrome
我们微软也改。 IE
码农翻身注: RSA算法: RSA公钥加密算法由三位在麻省理工的科学家提出,RSA就是他们三人姓氏开头字母拼在一起组成的。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难, 大家可以自行搜索更多细节。
特殊的身份证:其实就是网站的证书。
公安局:就是证书的颁发机构。
签名: 签名就是对内容做一个Hash操作,特点是单向的, 不可逆的, 不能从签名还原内容。

声明:原创文章,版权所有,未经授权,不得转载。

公众号:码农翻身“码农翻身”公众号由工作15年的前IBM架构师创建,分享编程和职场的经验教训。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存