最近程序员二狗子脸上总是洋溢着幸福的笑容。
嘿嘿,没错,因为二狗子恋爱了。
恋爱对象是二狗子的好朋友雷霆给介绍的,也是一名程序员。要说程序员与程序员的恋爱,那可不得了,简直是情投意合、心心相印。最近又恰巧碰上二狗子新开发了个聊天软件,本来两人共同话题就多,这下可好了,现在用聊天软件白天夜里聊个不停的,一点点小事都要告诉对方。
对称加密
有一天,二狗子和女朋友正用着聊天软件议论下周去哪旅游,在哪个网站买机票便宜。
二狗子陷入了沉思。女朋友说得没错,聊天软件的用户对于加密通信安全的需求十分强烈。想实现消息加密传输则需要双方知晓密钥,但是密钥又无法安全通过网络发送。唉,这可真头疼。
RSA:非对称加密
自从二狗子和女朋友知道对话消息无法加密后,双方在聊天时谨慎了不少。直到有天,他们听说了一种新的加密算法,叫做 RSA 加密。
RSA 加密是一种非对称加密,可以在不直接传递密钥的情况下完成解密。它不像对称加密使用的是同一个秘钥,而是由一对密钥来进行加解密的过程,分别称为公钥和私钥。其中最有趣的是,用私钥加密的明文,只能用公钥解密。反之用公钥加密的明文,则只有对应的私钥才能解密。
二狗子和女朋友在了解 RSA 加密后,都认为这个算法很强,因为它能够完美解决对称加密传输信息时的缺陷。我们可以通过以下这张图,来具体了解该算法的加密过程。
从图中可以看出,当二狗子想给女朋友发消息时,首先需要女朋友生成一对密钥,并将其中的公钥传输给二狗子(女朋友的公钥是公开的,任何人都知道)。得到公钥的二狗子再使用该密钥给女朋友发送加密信息,女朋友用自己的私钥对加密信息进行解密(私钥是保密的,只有女朋友才能解开)。反之女朋友给二狗子发加密消息也同理。如此一来,双方只需交换彼此的公钥就能够实现消息加密。
非对称加密+对称加密
非对称加密+对称加密
这天,二狗子和久违不见的雷霆约了吃火锅,饭桌上两人相谈甚欢。雷霆问起二狗子的恋爱状况,二狗子就一五一十把和女友聊天加密的事情告诉了雷霆。
如何安全保护密钥
趁着二狗子思考的间隙,雷庭狂涮毛肚疯狂吃。而二狗子还在思考:这又回到了最初的问题,到底该如何安全地分发密钥呢?不过现在问题的重点在于身份验证上,得有个办法证明这个公钥是女朋友的。那要怎么去证明呢…
讨论完此事,二狗子惊讶地发现桌上的一整盘毛肚已经消失了,也就草草吃了几筷就回家了。
回家的二狗子一进门,就迫不及待的跟女朋友打电话分享起与雷霆讨论的事情,女朋友听完很是开心,立马让二狗子去给他的聊天软件安装证书,二狗子打开又拍云官网挑选起了 SSL 证书来。聊天软件的问题终于可以解决了,二狗子也不用再担心恋爱中出现中间人了。