接下来,我们再来看密码的第三个时代,也就是密码的智能时代。

前边咱们说到恩尼格玛密码机的时候,说恩尼格玛其实对于密码学,只有「量」的提升,没有「质」的飞跃。而计算机的出现,把密码学推进了智能时代。在质和量的层面上,都让密码学变得不一样了。

密码学思维(学点儿密码学准没错)(1)

咱们先来说「量」的提升。

用计算机程序就可以百分百模拟一个恩尼格玛密码机,而且,恩尼格玛受限于它的机械结构,在制作的时候,总是有这样那样的限制,计算机程序可以不受这样的限制,比如,计算机模拟的恩尼格玛机,可以不只有8个齿轮,100个齿轮都是可以实现的;每个齿轮上也不只是26格,可以是50格甚至100格。这些放在一起,可以形成的加密方案就是天文数字了。

而且,在计算机模拟中,还可以让齿轮完成不可思议的动作。比如有的齿轮顺时针转,有的齿轮逆时针转,有的齿轮越转越快,有的齿轮转十格之后就让它消失。这些规则在现实环境中,用机械是根本没法造出来的,但是用计算机却能仿真出来,这就使得安全度大大提升。而且计算机的运算速度比机械的加密仪器要快得多,能用更短的时间执行更复杂的加密任务。

前边说的这些还是「量」的提升,密码进入智能时代之后,还有质的飞跃,最开始的飞跃,就是字母不再是加密的最小单位了。

前边咱们说到的各种加密方式,不论是手工的还是机械的,都是用字母来替换字母。但是计算机是二进制的,一切的信息都可以用0和1来表示。每个字母在计算机里边其实也是一串0和1组成的代码。目前通用的代码叫「美国标准信息交换码」,每个字母都是用7位0101的代码来表示。比如小写的a是1100001,大写的A是1000001。

我们用计算机加密的时候,面对的就不再是一个个字母,而是一个个的0和1,这7位数的代码,我们可以只加密前3位,或者只加密奇数位。加密的方法就更加五花八门了。

密码学思维(学点儿密码学准没错)(2)

你看,计算机的出现,把信息数字化了,打破了语言规律的底层结构,所以说,数字化使得密码学进入了新的时代。

除此之外,在智能时代,密码学还有一个更大的颠覆,那就是加密的过程可以不再保密了。

前边咱们提到那么多加密方法,都有一个特点,那就是千万不能让别人知道我们是用什么规则加密的,到了恩尼格玛密码机的时代,德军还要想方设法保密,不让敌人搞到机器的内部结构和使用说明。

可是进入智能时代之后,今天的加密手段,可以完全把自己的技术细节公开。打个比方来说,我给我认识的所有朋友都发了一把锁,跟他们说,你们以后给我写信呢,就寄个盒子过来,用这个锁把盒子锁上。

锁有无数把,但是钥匙只在我手里。而且我有自信,别的人不管怎么研究我的锁,也没法配出开锁的钥匙。

原理我们是搞明白了,但是这中间有一个关键的问题:你要怎么做,才能保证别人看到了你的锁,却还是配不出你的钥匙呢?

这其中最核心的原理,叫做「分解质因数」,什么意思呢?所谓质数,就是除了1和自己以外,没法被别的自然数整除的数。举个例子,12可以表示为3乘以4,那它就不是质数。13只能表示为1乘以13,所以13是个质数。同样,22不是个质数,23是个质数。

那如果我们用13乘以23,可以得到299,这个很容易计算。但是如果反过来,我问你说,你知道299是哪两个数的乘积吗?这个计算就非常麻烦,甚至只能用笨办法一遍遍地试。这个过程就是分解质因数。

数学家就发现,把两个质数乘起来,这个计算很容易,但是拿着结果反推,这个过程要难得多。新一代的加密手段,就利用了这个原理,两个质数相乘得到的那个大数,就是公开的「锁」,具体是哪两个数的乘积,这就是那个保密的钥匙。

密码学思维(学点儿密码学准没错)(3)

这套加密算法,是由美国麻省理工学院的三位科学家罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)发明的,因为他们三个人的姓氏首字母分别是R、S、A,这套算法就被命名为RSA加密算法。

你可能会觉得,这么听下来,想要找到答案,麻烦虽然是麻烦,但是似乎也不太困难啊?用RSA算法进行加密的时候,用的那个数其实要大得多,数字越大,分解它要花的时间就会长得多。

1977年,为了验证这个算法到底有多可靠,三位科学家给一份科学杂志投稿了一篇文章,解释了RSA系统的工作原理,还给读者提出了一项挑战,在文章里发布了一串密码文,还给了一个129位的大数,也就是公开的那把锁,他们公开悬赏100美金,邀请大家来破解。

他们的密码最终有人破解了吗?其实是有的。但是,最终成功破解的,是一个600人组成的团队,他们借助了全球各地的计算机,甚至还动用了超级计算机,就这样,他们还花了17年的时间,才成功破解了这个密码。

你想,如果真的是在战场上,17年后才破解的军事情报,早就已经失去了效果。更何况,今天人们在使用RSA算法时,使用的那个数,远远不止129位,往往会使用300位以上的大数。想要分解这样一个数,大约需要把全球所有的计算机都集中起来,一块工作上亿年才能得到答案。

目前看来,RSA是一种非常可靠的加密算法,所以被广泛应用在各种场合,像我们使用网银支付、手机支付,背后都有RSA算法在给我们保驾护航。

,