加密是一个将消息数据的内容进行混淆,来达到只有指定的人才能开到你的消息的过程。
按照加密方式分,可以分为对称加密和非对称加密。首先我们来看一下什么是对称加密,这样能使我们更容易的理解为什么要提出非对称加密。
码客A有一个敏感文件想要分享给码客B,他使用加密程序,通过密码或者口令短语来加密保护他的文档,然后他将机密过的文档发送给码客B。但是码客B不能打开他的文件,因为他不知道码客A用于加密文档的密码,或者说,他没有打开锁的钥匙。现在问题来了,码客A如何安全的将密码分享给码客B呢?可以通过邮件或者其他的方式,但这都是有很大的风险的,因为一旦这个密钥被别人拦截获取到,那么他就可以用来解密码客A发给码客B的文档。
而非对称加密就是为了解决这种问题而诞生的。类比的想象一下邮箱,邮箱的位置可以说是完全公开的,任何知道地址的人都可以向邮箱中投递信件,但只有邮箱的所有者才能打开邮箱,来阅读邮件。那么回到技术上,当使用非对称加密时,码客A和码客B都必须生成密钥对,有很多生成算法,其中一个比较安全和流行的算法就是RSA算法,该算法生成彼此数学链接的公钥和私钥,公钥用于数据加密,而只有使用配对的私钥,才能解密数据。尽管公钥和私钥之间存在互相连接,但他们之间并没有从属关系,也就是说,即使你知道一个人的公钥,你并不能推导出他的私钥。那么前边提到的邮箱地址就相当于我们说的公钥,任何人都可以获知,而邮箱的拥有者是唯一拥有私钥的人,而只有拥有私钥,才能打开邮箱。
那么,使用非对称加密,码客A和码客B可以先交换他们的公钥,A持有码客B的公钥,而码客B拥有码客A的公钥。码客A想发送敏感文件给码客B时,那么她只需要用码客B的公钥对文件加密,然后将加密后的文件发送给码客B,码客B收到文件后,用自己的私钥进行解密,来查看文件。即使码客A也不能解密加密后的文件,因为她并没有码客B的私钥。非对称加密不需要再分享用户各自的私钥,所以避免了通信过程中被劫持的风险。非对称加密的强度取决于码客A和码客B对自己私钥的保护力度。如果码客A的私钥丢失,那么所有码客A公钥加密的文件,也就是发给码客A的加密文件,都会变得可以被第三者解密,但并不会影响码客A发出的加密文件,因为码客B的私钥没有丢失。
非对称加密被用在很多比较重视安全的地方,最常见的就是https。比特币也是使用非对称加密来确保只有比特币的持有者才能撤回或者发送他的比特币。
如果你也对此感兴趣,请给我留言,或者访问我的网站 www.codingfly.com