“非对称加密”到底是个什么玩意儿

2018年9月8日 0 条评论 86 次阅读 1 人点赞

写在前面

对称加密”和“非对称加密”是两种不同的加密方案。

本文撇开了具体的技术细节和复杂的数学概念,力求用通俗易懂的语言和非常简单的例子给读者讲述明白这两种加密方案的区别。读完本文后,相信你能完全搞懂对称加密和非对称加密原理上的区别。

本文地址:https://www.jedbit.com/article/what-is-asymmetric-encryption.html

对称加密

概念

对称加密方案采用单密钥体制。也就是说,把明文信息加密成密文,和把密文解密成明文,这两个操作需要的密钥是一样的。

 

简单的例子

现在的场景是,你要传递一条信息给我,但不想被其他人看到。当前的环境是不安全的,任何消息都可能被窃听。

首先你在心里想一个数字(正整数)作为明文,也就是要传递给我的信息。然后再挑选一个正整数作为密钥。现在我和你约定一个加密方式“密文 = 明文 × 密钥”,你自己通过此方式将信息加密成密文,填写进下列表单。点击“传送”按钮代表传送给我,然后我就可以解密出明文了。

对称加密示例
密文:  密钥:  
你所想的数字是:

很简单对不对?但稍微考虑一下就会发现,如果同时传输密文和密钥,实际上没有起到什么加密作用。如果不能保证传输过程的安全性,密钥同样可能被窃听到。然而如能保证传输的安全性,就没有必要对信息进行加密了……

这就是对称加密的弊端。

 

非对称加密

概念

非对称加密方案采用双密钥体制。在该方案中,加密和解密使用的是一对而不是一个密钥。一对密钥由一个公钥和一个私钥构成,二者相互关联,但得知一个并不能推算出另外一个

公钥即公开密钥(public key),可以让所有人知道。私钥是私有密钥(private key),务必保存好,不能泄露。

 

下面首先来看一个简单的例子帮助理解,然后再来总结。

 

简单的例子

现在,请你任意想一个三位数,然后将这个数字乘以 91,再取结果的末三位填入下面的表单中:

非对称加密示例
密文:  
你所想的数字是:

 

例子分析

在上面的例子中,你自己想的三位数就是明文,我告诉你的数字 91 则是我发布出去的公钥,而私钥是我自己保存的,没有告诉你。规定加密方式为“密文 = 明文 × 91 % 1000”(% 为模运算)。加密后,信息看似有损失对不对?

事实上,这是一个 3 位数加密系统。我是这样解密的:一开始我生成了两个质数作为一对密钥:91(公钥)和 11(私钥),它们之间的关联是 91 × 11 = 1001,而任何一个三位数乘以 1001 后,结果的末三位不会改变(如 123 × 1001 = 123123)。所以,你将你心里想的三位数乘以 91 再取末三位给我后,我只需要再将你给我的数字乘上 11,最后结果的末三位就是你一开始想的数字了

仔细想一下,你用公钥加密,我用私钥解密,这个过程可以说是很安全的。除了我,没有任何人有私钥。即使是你(加密者)自己,也无法(准确地说是很难)从密文和公钥反推出私钥或密文,世界上能解密的人只有我(拥有私钥的人)。

本文地址:https://www.jedbit.com/article/what-is-asymmetric-encryption.html

知道以上原理后,我们就可以据此构造定义域和值域更大的加密系统了,如:8 位数加密系统, 19801 × 20201 = 400000001;30 位数加密系统, 1199481995446957 × 3334772856269093 = 4000000000000000000000000000001 等等。

这种加密方式的安全性就在于,计算两个数的成绩非常容易,而由一个乘积分解出两个因数十分困难,这种困难性使得破解非对称加密系统几乎是不可能的。

 

写在后面

以上例子很好地说明了对称加密和非对称加密方案的思想,但现实中并不是用简单的乘法来进行加密解密的。本文并不涉及具体的技术细节,读者可以自行查阅流行的加密算法:

  • 对称加密算法:DES、AES 等;
  • 非对称加密算法:RSA、DSA 等。

 

参考资料:非对称加密的例子来自 ThreatHunter:https://www.zhihu.com/question/33645891/answer/192604856

 

Jed

一名狂热的技术爱好者。

文章评论(0)

提示:有人回复时会邮件通知您