在通信中,如果我和我一个朋友说点机密的事情,同时不想让别人偷听到,这个就成了一个有点挑战性的技术问题,也就是今天我们要讨论的加密通信。
非对称加密
那我们就可以想一下,是不是有一种“非对称加密”的方法能解决鸡和蛋的问题呢?恭喜你,答对了!非对称加密用一句话来描述就是,加密是用一个密码 key,而解密则会用另外一个密码 key。安装好相应地程序之后,任何人都可以在自己的计算机上来生产这一对密码。其中用于加密的这个叫公钥,是可以公开给别人的,所以叫”密码“这个不严密,还是英文好,就叫 key。另外一个是绝对自己要保密好的,叫”私钥“,这个是用来解密的,真的是”密码“。
这两个 key 是一对,意思是他们在数学角度是有着联系的,但是如果想要从公钥计算出私钥也是不可能的。加密通信的过程是这样的,收信人,比如说我,先生成这一对 key,然后我想跟我的朋友秘密通话,那我就把我的公钥传给他,这个反正有人得到也没关系。我朋友拿到公钥之后,就把他想要跟我说的话进行加密,然后把加密后的信息通过互联网传给我,整个互联网上,即使有其他人得到了这些加密数据也没用,因为只有我拥有跟那个公钥配对的这个私钥,所以也就只有我,才可以解密这个信息。
对称加密
几千年来,我们人类都在用一种“对称性加密“的形式来进行秘密信息的传递,”对称“指的是加密用一个密码,那解密是用的还是这个密码。但是“对称性加密”为啥不能用在互联网上的加密通信中呢?说说这个过程,我有一个文件,用一定的加密方式来进行加密(比如用一些文件压缩程序),然后可以把加密后的这个包,传递给我的朋友,到目前为止一切都好。但是接下来的问题是,我朋友如何才能解密我给他的文件呢,显然我必须安全的把我加密时输入的密码安全的传递给他,这样才能完成这个加密通信过程。所以这就有了一个鸡和蛋的问题。最终我可能就不得不借助互联网以外的工具,例如打电话,来把密码给我朋友了。所以,对称性加密是不适合用于互联网上的加密通信的。
非对称加密的类比和应用
我们再来打个比方。我家门口有个信箱,那么凡是知道我家地址的人就可以给我发信了,所以我家的地址就相当于公钥,但是由于只有我自己有信箱的钥匙,所以也只有我打另一个比方。我和朋友要秘密的通信。首先朋友寄给我一把她的打开的锁,这样我把信放到一个盒子里,锁上,给她寄过去。拿到盒子之后,朋友拿出自己的钥匙就可以打开箱子了。反过来,如果我想从她那里得到回信,那我就给她寄我的锁就行了。这种通信方式的好处是,任何一把锁的钥匙都没有邮寄过。
这下大家都明白通信中加密是怎么一回事了吧!如果大家碰到做串行通信或者SOCKET通信时也可以自己利用这种加密技术来实现通信的保密。