自从密码学诞生的那一天起,人们就面临着一...

自从密码学诞生的那一天起,人们就面临着一个悖论。加密是为了安全地传递信息,但为了让接受者解开加密的信息,你又需要把密钥给他,那这个密钥又该怎么传递呢?如果不加密传递给他的话,有被截获的风险。但如果加密发送的话,接受者还没有密钥,又怎么能解开呢?这就变成了一个鸡生蛋、蛋生鸡的问题。

如果用形象一点的例子来说明的话,相当于A要向B传递一封信,但他不信任邮差,所以他把信放在一个箱子里锁起来,再让邮差把箱子送给B。但B收到箱子也是没有用的,因为他没有钥匙。那么这把钥匙要怎么送给B呢?直接让邮差送是不行的,因为邮差可能会打开箱子看信里的内容。那把第一个箱子的钥匙放进第二个箱子再锁起来呢?这样也不行,因为B也没有第二个箱子的钥匙。这样就陷入了一个死循环。

在1977年之前,这个问题基本上是无解的。二战时德军发明了超级复杂的加密机器英格玛机,但这个机子的密码本还是得用传统的方式送往前线,这样才能完成正常的加密和解密工作。如果一本密码本被截获,那么至少某一段时间内的加密通信就不再安全了。

后来,有人想到了一个办法:A先把信放到箱子里后上一把锁,然后让邮差把箱子送给B。B在接到箱子后不打开,而是再上一把锁,这样箱子上就有两把锁了。B再让邮差把箱子送回给A,然后A把箱子上自己那把锁打开,让邮差再把箱子送回给B。这时箱子上只有B的一把锁了,B用自己的钥匙把箱子打开就可以了。这个过程中,邮差接触不到任何一把钥匙。

这种方法用箱子和锁来操作虽然行得通,但计算机算法却很难实现。因为一份数据先后经过了A算法加密、B算法加密,却要先用A的密钥来解密。

1977年,三位科学家Rivest、Shamir、Adleman共同发明了一种牛逼算法。

在这种算法中有公钥和私钥两种密钥,其中公钥可以公布给全世界的人知道,人们可以用公钥给数据加密。而只有拥有对应私钥的人才能对加密后的数据进行解密。这样人们就避免了密钥传递的问题。

如果用前面锁和箱子的例子来比喻的话,就相当于B制造了无数的处于开启状态的锁,并把这些锁丢在一个公共的广场上,同时B手里掌握着能打开这些锁的唯一的钥匙。如果有人要向B写一封信,他就把信放进到箱子里,然后从广场上捡一把锁回来把箱子锁上。接下来,他让邮差把这个箱子送到B那里去,B再用手里的钥匙把箱子打开。整个过程中,邮差都没有接触过钥匙。

就这样,划时代的非对称式加密算法诞生了。人们用三名科学家姓氏的首字母来命名这种算法:RSA算法。

(0)

相关推荐