我希望用现实世界的锁来演示非对称加密。例如,我想在一张纸上写下一个秘密,并将其存放在一个锁着的盒子里。有没有一种锁是我可以购买的,它配有两把钥匙,一把只能 锁住 锁,另一把只能 打开 锁?
我希望用现实世界的锁来演示非对称加密。例如,我想在一张纸上写下一个秘密,并将其存放在一个锁着的盒子里。有没有一种锁是我可以购买的,它配有两把钥匙,一把只能 锁住 锁,另一把只能 打开 锁?
一个常见的例子是一把挂锁和它的钥匙。
Bob 给 Alice 一把挂锁(他的“公钥”),而他保留了该挂锁的钥匙(他的“私钥”)。
Alice 把一条消息放在一个盒子里,并将挂锁扣在上面。然后她把盒子发送给 Bob。
Bob 可以用他的钥匙打开它。
这个例子的扩展版本在https://web.archive.org/web/20130708131404/http://www.economicexpert.com/a/Asymmetric:key:algorithm.html中描述。
这个神奇的锁应该有两把钥匙(假设它们是key1和key2)。
如果你用key1锁上它,那么你就不能用key1打开它。
如果你用key2锁上它,那么你就不能用key2打开它。
如果你用key1锁上它,那么你就必须用key2打开它。
如果你用key2锁上它,那么你就必须用key1打开它。
所以,如果我用key1锁上,那么另一个人会用key2锁上。然后他可以用key2锁上,我就能用key1打开它。
让我们再进一步。我们制作1000份key2的副本并公开分发。现在任何人都可以拿走key2(包括小偷和骗子)锁上盒子,只有我用key1才能打开它。这将给我们保密性。
现在,如果我用key1锁定一条消息,那么1000个人(包括小偷和骗子)可以使用key2打开它。所以,保密性就不存在了。那么为什么还有人想这样做呢?嗯,这给了我们真实性。我的意思是,如果你能用key2打开盒子,那么里面的消息肯定是我写的,因为只有我有key1。
在加密世界中,我们称key1为私钥,key2为公钥。这些密钥在数学上相互关联。更准确地说,两个密钥都是通过一个具有许多解的方程式创建的。只有当你得到解决方案时才能解锁。现在,key1有足够的提示来获得key2的解决方案,而key2也有足够的提示来获得key1的解决方案。
这就是非对称加密的要点。