Bootstrap

魔法学校里的https

在魔法学校,小魔法师艾文和小女巫莉莉暗恋着对方,他们想通过魔法信件来传递情书,但是学校的魔法邮递员们(中间人)总是喜欢偷看并且篡改他们的信件,这让艾文和莉莉很苦恼。

单向锁

艾文发明了一个单向锁,这个锁配有一把钥匙,只有用这把钥匙才能打开锁。他把钥匙复制了一份给莉莉,这样他每次写完情书后,都用这个锁把情书锁起来,莉莉收到后用钥匙打开。如果莉莉想回信,也需要把回信锁在这个魔法锁里,然后再寄给艾文。但是好景不长,邮递员们也偷偷复制了钥匙,他们开始偷看甚至篡改情书的内容,导致莉莉对艾文出现很多误会。

双向魔法锁 - 防篡改

艾文决定升级他的锁,对单向锁施加魔法,发明了一个双向魔法锁,这个锁有两把不同的钥匙A和B。特别的是,用钥匙A锁上的锁,必须用钥匙B才能打开,反过来也一样。艾文把钥匙B给了莉莉,每次写信时他用钥匙A锁上,莉莉收到后用钥匙B打开。即使邮递员复制了钥匙B,他也只能用B打开锁,而不能再次还原锁的状态(用A进行加锁),因为只有艾文有钥匙A(私有)。即使邮递员用窃取到的钥匙B重新上了锁,也只有钥匙A才能打开。这样,莉莉就能知道信件是否被打开过甚至被篡改过,因为如果她不能用钥匙B打开锁,就意味着信件被打开甚至被篡改了。

莉莉也使用魔法制作了一个双向魔法锁,配有钥匙C和D。她把钥匙D给了艾文,自己保留钥匙C。这样,艾文可以用钥匙D锁上他的情书,只有莉莉能用钥匙C打开。

这样就解决了信件被篡改的问题。

魔法锁与效率问题

然而,双向魔法锁虽然安全,但是制作双向魔法锁太消耗魔力了,每次都要花费很多魔力来锁上和打开,导致二人需要很长时间来恢复魔力,这大大降低了他们通信的频率。艾文决定结合单向锁和双向魔法锁的优点。

单向与双向魔法锁的结合

  1. 莉莉制作了一个双向魔法锁,配有钥匙C和D,把钥匙D给艾文。
  2. 艾文准备一个单向锁和钥匙M,然后用莉莉给的钥匙D把钥匙M锁上双向魔法锁,寄给莉莉。
  3. 由于使用了双向魔法锁,可以确保信件没有被打开过。邮递员们虽然想偷看,但是他们没有钥匙C,无法打开双向魔法锁。于是就能确保双向魔法锁里面的钥匙M没有被任何人复制过。
  4. 莉莉取出单向锁的钥匙M,现在他们都有了钥匙M,可以用它来在不消耗魔力的情况下加密他们的情书了。

防止魔法锁被替换

邮递员们不甘心,他们绞尽脑汁终于学会了给单向锁施加魔法的方式,他们也制作出了双向魔法锁!并且也制作出了两把钥匙X和Y。艾文把自己的钥匙A保留,把钥匙B寄给莉莉,但是邮递员们把钥匙B掉包成了钥匙X寄给莉莉,莉莉欢天喜地的用钥匙X,给提前准备好的单向锁钥匙M加上双向魔法锁,然后寄给艾文。邮递员们拿到用X加锁的信件,他们当然可以用制作的钥匙Y打开,拿到里面的单向锁钥匙M,偷偷复制了一份,然后把单向锁钥匙M用他们之前扣留下的钥匙B进行加锁,然后寄给艾文,艾文自然用钥匙A进行解锁,而没有发现任何异常。之后艾文和莉莉用单向锁发情书,自然会被邮递员们打开甚至继续篡改。

简单说,就是,莉莉以为她是用艾文的钥匙加密,但却是邮递员的。艾文以为是用他的钥匙加密后传给他的钥匙M,因为他解得开,但却是邮递员伪装的。双方都不知情。

魔法学校的公证人

为了防止邮递员们替换钥匙,艾文和莉莉找到了魔法学校的公证人——校长。校长有一本魔法书,魔法书可以给任何物品生成唯一一条咒语并且写在魔法书上,但是谁也不能根据咒语知道这是什么物品,即使是校长本人。魔法书与校长签订了契约,只有校长才知道生成咒语的规则是什么。艾文同样保留了钥匙A,但是他不直接把钥匙B寄给莉莉,而是拿着钥匙B去找校长做公正,校长在他的魔法书上记录下钥匙B的咒语。然后艾文借走魔法书,并且把魔法书和钥匙B寄给莉莉。莉莉收到魔法书和钥匙?(不确定有没有被邮递员替换过)之后去找校长,校长拿着魔法书,根据只有他知道的生成规则,来生成钥匙?的唯一咒语,并且与魔法书中已经记录过的咒语进行比较,如果不一致,那么钥匙或者魔法书上的咒语被替换过(即使邮递员篡改了咒语,他们也不知道只有校长才知道的生成规则),如果完全一致,那么钥匙就没有被其他任何人替换过。

这样就解决了钥匙被替换的问题。

艾文和莉莉可以尽情发送情书了。

HTTPS的魔法类比

在这个魔法学校的故事里,艾文和莉莉就像是客户端和服务端,邮递员们就像是传输链路中的中间人,校长就像是CA机构。他们通过魔法锁(加密)来保护他们的情书(数据),防止被偷看和篡改。这就是HTTPS的工作原理。

单向锁就是对称加密:需要有一个客户端生成的对称密钥,用于对传输的数据进行加密,但需要将该对称密钥告知给服务器

双向魔法锁就是非对称加密:服务器提供一个公钥(自己持有私钥),将公钥传发送给客户端,客户端使用公钥对对称密钥进行加密,将密文传送给服务器

非对称加密比对称加密慢,主要是因为其密钥对生成、加密和解密过程涉及复杂的数学运算,如大数运算和模幂运算,这些因素共同导致非对称加密的整体加密和解密速度相对较慢,所以通常用于加密少量关键数据而非大量数据。

校长是第三方认证机构,魔法书是证书,咒语是证书中的签名: 服务器首先生成一对公钥和私钥,并在第三方公证机构申请一个包含公钥信息的证书。随后,服务器将公钥发送给客户端。由于证书的校验机制非常严格,黑客即使获取了证书,也很难伪造一个有效的假证书。即使黑客尝试伪造,客户端也可以通过第三方公证机构进行验证。验证方使用证书中签发者的公钥对签名进行解密,得到原始哈希值。同时,验证方对证书内容进行哈希计算,得到一个新的哈希值。比较这两个哈希值,如果一致,则表明证书内容在传输过程中未被篡改。这样,客户端就能安全地获取服务器发送的公钥,并使用该公钥加密自己生成的密钥,然后发送给服务器。由于黑客没有私钥,即使他们截获了这个加密的请求,也无法获取密钥。因此,服务器能够安全地接收到加密的密钥,并使用私钥进行解密。最终,这种方法能够有效地防止黑客获取或篡改数据。

以上就是魔法学校里的https。

感谢阅读!如果你喜欢这篇文章,不妨点赞关注加收藏哦!

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;