诸葛亮的穿越之旅-HTTPS

1,这是一个裸奔的时代

天下大事,合久必分,分久必合。

颠沛流离的大半辈子的刘备,终于在47岁的时候遇见了自己的贵人-诸葛亮。自此只用了十几年的时间便和曹操孙权三分天下,国号蜀,定都成都。为了防止孙权的偷袭,派五虎将为首的关羽驻守荆州。

有一天,诸葛亮收到了关羽的飞鸽传书,大意说是孙权想派陆逊和吕蒙来夺取荆州,特意来请教军师的战略部署情况。诸葛亮一看,赶紧回信,督促关羽布防。关羽看到回信后大惊,感觉完全不是军师的作风,又赶紧飞鸽传书向军师确认,并说出了自己的担忧:感觉我们的通信有种被偷窥的感觉啊,如果陆逊中途截取了我们的书信,岂不是知道了我们的战略部署么?诸葛亮看后,觉得非常有道理,但是一时又想不出来有什么办法,总不能每次都让关羽自己亲自来成都制定战略啊。真是头疼啊啊啊。

2,加密吧,老铁

经过一晚上的“夜观星象”,诸葛亮喜上眉梢,给关羽回信:云长啊,昨夜我穿越时空去了一下未来,发现那里的人们都在使用一种叫做对称加密的算法进行通信呢。大意就是说我们维护一个相同的秘钥,你给我写信的时候用它加密,我收到信用它解密,我给你写信同样的道理。这样即使我们的信件被陆逊截取了,他不知道我们的秘钥,也看不到其中的消息的。大致如下:

关羽看后,深感佩服,军师果然聪慧过人。但是转而又向诸葛亮提出了另外一个担忧:那我们怎么约定这个秘钥呢?万一你给我发秘钥的时候被陆逊那小贼截取了,那岂不是他也知道了我们的秘钥,还是不安全的啊。诸葛亮看后又陷入了沉思。

第二天,诸葛亮告诉关羽说:我昨天又去了一下未来,发现人们除了对称加密,还有一种叫做非对称加密的加密方式的。简单来说就是现在我们不像之前那样约定一个共同的私钥了。而是维护一对秘钥:一个是保密的,叫做私钥,只能自己知道,另外一个是公开的,叫做公钥,全世界都可以知道。而且有意思的是,用私钥加密的数据只能用相应的公钥才能解密,用公钥加密的数据只能用相应的私钥才能加密。这样的话,当我给你发信的时候用你的公钥加密,你收到后再用你的私钥解密,同样的你给我写信的时候用我的公钥加密,然后我在用我的秘钥解密,像下面这样,这样就能万无一失啦哈哈哈。

关羽看后,对军师的佩服又深了几分。但是之后发现貌似收到回信的时间明显变长了,向军师请教。军师一看,长叹一声,果然还是有问题。之前未来人就跟我说过,非对称加密虽然比对称加密更加安全些,但是效率却是大大的降低了,大概100倍左右呢。关羽一听大惊道,我们不就是想通个信么,这么慢我们还玩毛啊。诸葛亮想了想说到其实我们就是无非就是想加密么,我们可以用对称加密和非对称加密结合的方式啊,简单来说可以分为两步:

1) 我生成一个对称加密的秘钥,然后用非对称加密的方式发给你。

2)你拿到我发给你的秘钥后,我们就不用非对称加密了,你就用那个秘钥我们进行对称加密进行通信。这样的话我们既保证了通信的安全性,又保证了通信的效率,一举两得哦。关羽看后对诸葛亮佩服的简直五体投地了。

3,你到底是谁?

这样进行了一段时间后,关羽觉得还是有些不妥。向诸葛亮问道:军师,如果你发给我公钥的时候被陆逊劫持了咋办,他伪装成你给我的公钥,实际上把他的公钥发给了我,而我又不知道,还傻呵呵的给你回信呢。陆逊就可以用他的私钥进行解密了啊,然后他也可以把消息用你的公钥加密返回给你啊,你还以为是我的回信,实际上我们通信的内容早就被陆逊知道了啊。就像下面这样

诸葛亮一听感觉是这个道理啊。关羽跟着自己这些年果然没白混啊。公钥虽然不是保密的,但是被小人拿到还是可以做坏事的(陆逊大大的打了一个喷嚏)。好像回到的最初的原点啊,怎么保证公钥的传输呢,不过好像又有点不一样,不用保护公钥的私密性,只要能证明公钥是谁的就行了。诸葛亮突然大叫道,这简单啊,我们一起让法正给我们做个公证不就行了吗?他可是我们都信任的人呢(CA)。我们可以让法正给我们每个人都颁发一个证书啊,这个证书除了包含我们每个人的信息外,最重要是好包含我们每个人的公钥哦。这样我们从他那里拿到证书不就能完美的拿到公钥了么。哈哈哈,so easy啊。可是关羽马上一盆冷水交上来:那法正的证书如何传递呢?诸葛亮一看,这简直就是鸡生蛋蛋生鸡的问题啊

4,等我叫我大哥收拾你

没办法,诸葛亮只能又一次开启时空之旅了。

这次诸葛亮带回了一个新东西:数字签名。简单来说是这样的:我可以把我的公钥和我的信息用一种叫做hash的算法生成一份摘要。这种算法有个好处就是,如果我的信息或者是我的公钥被修改,摘要信息就会巨变。这样可以防止别人修改原始的信息。这时陆逊哈哈大笑起来:我为什么要改你的公钥和信息啊,我又不傻,我可以完全的替换啊。用我的公钥和我的信息用同样的hash算法生成一个摘要不就行了。诸葛亮说,别得意哦。这只是第一步的。生成摘要之后我们会用法正的私钥对摘要信息进行加密生成签名。如下:

这还不算结束哦,还会把原始信息和签名合起来形成一个新的东西,叫做数字证书

当关羽拿到诸葛亮的证书后,会把原始信息用同样的hash算法生成摘要,然后用法正的公钥对数字签名进行解密,然后对比摘要信息是不是一致的,就知道有没有被人篡改过了啊。如果没人串改,就可以拿到诸葛亮的公钥咯。虽然麻烦,但是安全性第一啊。万一被你偷窥了我们的战术多不好。

陆逊看完,恶狠狠的说,算你们狠啊。不过你们如何拿到法正的公钥呢?难道不怕被我劫持么?如果我劫持了,你们所有的努力都白费喽哈哈哈。诸葛亮说道,要想解决这个鸡生蛋蛋生鸡的死循环,我们必须要信任某个CA的,并且可以安全的拿到他的公钥。如下图:

【注:实际上CA也有自己也有证书来表明自己的身份呢,但是怎么验证证书没有被篡改呢,这就需要由上一级的CA来验证了,于是CA们就形成了一条分级的链条,链条的根部就是我们的终极boss-刘备(操作系统/浏览器预置的顶层证书)】

陆逊听毕,深深感叹道,卧龙凤雏得一可安天下。刘玄德何德何能啊,竟能得先生辅佐啊。诸葛亮哈哈大笑道,其实啊我们的后人都已经在用这个方式传递消息啦,我只是照搬过来就行啦哈哈哈。他们还给这个起了一个非常响亮的名字:HTTPS。关羽就是他们口中的浏览器,我就是他们想访问的某个网站喽。

大致的流程如下: