MyBlog


诸葛亮的穿越之旅-HTTPS

<p>[TOC]</p> <h1>1,这是一个裸奔的时代</h1> <p>天下大事,合久必分,分久必合。</p> <p>颠沛流离的大半辈子的刘备,终于在47岁的时候遇见了自己的贵人-诸葛亮。自此只用了十几年的时间便和曹操孙权三分天下,国号蜀,定都成都。为了防止孙权的偷袭,派五虎将为首的关羽驻守荆州。</p> <p>有一天,诸葛亮收到了关羽的飞鸽传书,大意说是孙权想派陆逊和吕蒙来夺取荆州,特意来请教军师的战略部署情况。诸葛亮一看,赶紧回信,督促关羽布防。关羽看到回信后大惊,感觉完全不是军师的作风,又赶紧飞鸽传书向军师确认,并说出了自己的担忧:感觉我们的通信有种被偷窥的感觉啊,如果陆逊中途截取了我们的书信,岂不是知道了我们的战略部署么?诸葛亮看后,觉得非常有道理,但是一时又想不出来有什么办法,总不能每次都让关羽自己亲自来成都制定战略啊。真是头疼啊啊啊。</p> <h1>2,加密吧,老铁</h1> <p>经过一晚上的“夜观星象”,诸葛亮喜上眉梢,给关羽回信:云长啊,昨夜我穿越时空去了一下未来,发现那里的人们都在使用一种叫做对称加密的算法进行通信呢。大意就是说我们维护一个相同的秘钥,你给我写信的时候用它加密,我收到信用它解密,我给你写信同样的道理。这样即使我们的信件被陆逊截取了,他不知道我们的秘钥,也看不到其中的消息的。大致如下:</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/870fd417adc408e3c03033d14a8933ed?showdoc=.jpg" alt="" /></p> <p>关羽看后,深感佩服,军师果然聪慧过人。但是转而又向诸葛亮提出了另外一个担忧:那我们怎么约定这个秘钥呢?万一你给我发秘钥的时候被陆逊那小贼截取了,那岂不是他也知道了我们的秘钥,还是不安全的啊。诸葛亮看后又陷入了沉思。</p> <p>第二天,诸葛亮告诉关羽说:我昨天又去了一下未来,发现人们除了对称加密,还有一种叫做非对称加密的加密方式的。简单来说就是现在我们不像之前那样约定一个共同的私钥了。而是维护一对秘钥:一个是保密的,叫做私钥,只能自己知道,另外一个是公开的,叫做公钥,全世界都可以知道。而且有意思的是,用私钥加密的数据只能用相应的公钥才能解密,用公钥加密的数据只能用相应的私钥才能加密。这样的话,当我给你发信的时候用你的公钥加密,你收到后再用你的私钥解密,同样的你给我写信的时候用我的公钥加密,然后我在用我的秘钥解密,像下面这样,这样就能万无一失啦哈哈哈。</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/9446a6ea9fa639ba5701320bab8899ea?showdoc=.jpg" alt="" /></p> <p>关羽看后,对军师的佩服又深了几分。但是之后发现貌似收到回信的时间明显变长了,向军师请教。军师一看,长叹一声,果然还是有问题。之前未来人就跟我说过,非对称加密虽然比对称加密更加安全些,但是效率却是大大的降低了,大概100倍左右呢。关羽一听大惊道,我们不就是想通个信么,这么慢我们还玩毛啊。诸葛亮想了想说到其实我们就是无非就是想加密么,我们可以用对称加密和非对称加密结合的方式啊,简单来说可以分为两步:</p> <p>1) 我生成一个对称加密的秘钥,然后用非对称加密的方式发给你。</p> <p>2)你拿到我发给你的秘钥后,我们就不用非对称加密了,你就用那个秘钥我们进行对称加密进行通信。这样的话我们既保证了通信的安全性,又保证了通信的效率,一举两得哦。关羽看后对诸葛亮佩服的简直五体投地了。</p> <h1>3,你到底是谁?</h1> <p>这样进行了一段时间后,关羽觉得还是有些不妥。向诸葛亮问道:军师,如果你发给我公钥的时候被陆逊劫持了咋办,他伪装成你给我的公钥,实际上把他的公钥发给了我,而我又不知道,还傻呵呵的给你回信呢。陆逊就可以用他的私钥进行解密了啊,然后他也可以把消息用你的公钥加密返回给你啊,你还以为是我的回信,实际上我们通信的内容早就被陆逊知道了啊。就像下面这样</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/f32f3cdc8f255818532706aa351694b6?showdoc=.jpg" alt="" /></p> <p>诸葛亮一听感觉是这个道理啊。关羽跟着自己这些年果然没白混啊。公钥虽然不是保密的,但是被小人拿到还是可以做坏事的(陆逊大大的打了一个喷嚏)。好像回到的最初的原点啊,怎么保证公钥的传输呢,不过好像又有点不一样,不用保护公钥的私密性,只要能证明公钥是谁的就行了。诸葛亮突然大叫道,这简单啊,我们一起让法正给我们做个公证不就行了吗?他可是我们都信任的人呢(CA)。我们可以让法正给我们每个人都颁发一个证书啊,这个证书除了包含我们每个人的信息外,最重要是好包含我们每个人的公钥哦。这样我们从他那里拿到证书不就能完美的拿到公钥了么。哈哈哈,so easy啊。可是关羽马上一盆冷水交上来:那法正的证书如何传递呢?诸葛亮一看,这简直就是鸡生蛋蛋生鸡的问题啊</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/9de6b211018633a47fed7eafedd021fc?showdoc=.jpg" alt="" /></p> <h1>4,等我叫我大哥收拾你</h1> <p>没办法,诸葛亮只能又一次开启时空之旅了。</p> <p>这次诸葛亮带回了一个新东西:数字签名。简单来说是这样的:我可以把我的公钥和我的信息用一种叫做hash的算法生成一份摘要。这种算法有个好处就是,如果我的信息或者是我的公钥被修改,摘要信息就会巨变。这样可以防止别人修改原始的信息。这时陆逊哈哈大笑起来:我为什么要改你的公钥和信息啊,我又不傻,我可以完全的替换啊。用我的公钥和我的信息用同样的hash算法生成一个摘要不就行了。诸葛亮说,别得意哦。这只是第一步的。生成摘要之后我们会用法正的私钥对摘要信息进行加密生成签名。如下:</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/f06369fcb8b7ada422de9988cab59ddc?showdoc=.jpg" alt="" /></p> <p>这还不算结束哦,还会把原始信息和签名合起来形成一个新的东西,叫做数字证书</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/1b8be873d73d6c4ece8bf589f0092bc5?showdoc=.jpg" alt="" /></p> <p>当关羽拿到诸葛亮的证书后,会把原始信息用同样的hash算法生成摘要,然后用法正的公钥对数字签名进行解密,然后对比摘要信息是不是一致的,就知道有没有被人篡改过了啊。如果没人串改,就可以拿到诸葛亮的公钥咯。虽然麻烦,但是安全性第一啊。万一被你偷窥了我们的战术多不好。</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/d66b1cb350e0232b97e080beab58f59d?showdoc=.jpg" alt="" /></p> <p>陆逊看完,恶狠狠的说,算你们狠啊。不过你们如何拿到法正的公钥呢?难道不怕被我劫持么?如果我劫持了,你们所有的努力都白费喽哈哈哈。诸葛亮说道,要想解决这个鸡生蛋蛋生鸡的死循环,我们必须要信任某个CA的,并且可以安全的拿到他的公钥。如下图:</p> <p>【注:实际上CA也有自己也有证书来表明自己的身份呢,但是怎么验证证书没有被篡改呢,这就需要由上一级的CA来验证了,于是CA们就形成了一条分级的链条,链条的根部就是我们的终极boss-刘备(操作系统/浏览器预置的顶层证书)】</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/189d9d39f3a3a9efbc20016a2487a15f?showdoc=.jpg" alt="" /></p> <p>陆逊听毕,深深感叹道,卧龙凤雏得一可安天下。刘玄德何德何能啊,竟能得先生辅佐啊。诸葛亮哈哈大笑道,其实啊我们的后人都已经在用这个方式传递消息啦,我只是照搬过来就行啦哈哈哈。他们还给这个起了一个非常响亮的名字:HTTPS。关羽就是他们口中的浏览器,我就是他们想访问的某个网站喽。</p> <p>大致的流程如下:</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/250470198a64895e98daa9816dce3c39?showdoc=.jpg" alt="" /></p>

页面列表

ITEM_HTML