HTTPS 由来

网络世界纷繁复杂,绝大部分信息传输都仰仗 HTTP 协议。每次访问一个网页,就像是在外卖 App 上下单,商户将食物打包,再由外卖小哥接单送达用户,数不胜数的订单同时进去,这背后早有 HTTP 协议支持,不会送错。

HTTP 使得信息有条不紊传输下去,但无法保障互联网中的安全,信息在传输时可能被劫持篡改。想象一下,外卖小哥在送餐途中遭遇到歹徒拦截,抢走了盒饭或者掉包了食物,用户当然不会满意。不同的是,互联网世界里没有警察,歹徒可以随意抢劫,谁叫餐盒暴露在外呢?

还好,互联网世界物品成本极低,设计师可以花些心思改良 HTTP 协议,他先在餐盒上加了保险箱,遇上歹徒也能保证食物安全,这就是信息加密。不过,用户同样无法打开保险箱,商家和用户还需要有一把彼此认同的钥匙。显然送钥匙这个过程难免被劫,这还无法确保万无一失。

设计师开动脑筋,发明了一种特殊保险箱,箱子上的锁需要两把钥匙控制,一把叫公钥用于加锁,一把叫私钥用于解锁。商家先把公钥发给用户,即使被劫也无用,公钥只能加锁无法解锁,用户拿到公钥后将钥匙加锁发给商家,歹徒拦住也打不开锁,商家再用私钥开锁取出里面的钥匙,接下来就可以用保险箱送东西了。这便是信息的非对称加密。

这个方法看似高明,却依然无法躲开聪明歹徒。歹徒先在途中劫下公钥,换成自己制作的假公钥发给用户,待假公钥加锁的钥匙传来时再劫下来,歹徒当然有假私钥,轻松破解。这个手段在密码学中称为中间人攻击。

这下商家生气了,花钱去安保公司请了保安,用保安护送公钥给用户,总算安全了。歹徒眼珠一转计上心头,他找来假保安带着假公钥捷足先登拜访用户。不过安保公司有一套完整的身份验证机制,每一个保安都有证明自己身份的工作证——数字证书。

证书难道无法伪造吗?使用了安保公司的公钥进行验证,这种数字证书绝对真实。安保公司的公钥又是怎么到用户手里呢?答案是每个用户家里都有一份公钥,因为安保公司只有那么几家,他们事先发给了所有用户。在计算机中,所有操作系统和浏览器都维护一个权威第三方机构公钥列表。

终于,这种复杂机制杜绝了歹徒劫持,设计师称之为 SSL 协议。HTTP + SSL 便是 HTTPS。