区块链的故事
惠特菲尔德·迪菲(Whitfield Diffie)出生于 1944 年,留着披肩长发,胡须半尺,须发尽皆雪白如银,看上去潇洒磊落,却又不拘一格,乃是风清扬、令狐冲一流的人物,他自称是 “离经叛道者”。
他从小喜爱数学,后来在麻省理工读了数学专业,于学业上他并不很用心,对学校留的作业没什么兴趣。他的兴趣在于研究密码学,尤其是密码分发问题。使用传统的对称加密算法,密钥的安全交付成了加密工作中最薄弱的一环,为了分发密码所耗费的人力及物力巨大。军方、政府、银行都维持着庞大的密码运送团队,团队中的人必须绝对可信,薪资自然也就不低,这些人走南闯北四处运送密钥。
就这样,密码分发问题一直困扰着密码学家们,也困扰着密码的重度用户 - 各国的政府和军方。
迪菲思考了很久,希望能够想出个方案来颠覆这个行业,解放那些忙碌不堪的密码分发员。他热爱自由,于是他不上班,自由自在,号称专门研究密钥分发问题。
1974 年,迪菲听闻有人和他一样,对密码分发问题感兴趣,那个人叫做马丁·赫尔曼(Martin Hellman),在斯坦福大学做教授。迪菲不亏是北美令狐冲,他当晚就驱车 5000 公里去找赫尔曼。马丁接到迪菲电话,是不是把他当传销不好说,总之,大教授勉强答应了见面半小时。
赫尔曼从面相上看,儒雅斯文,一派学者气象。但人不可貌相,实际上他一直是积极的社会活动家,在 “远离战争”、“反对核武器” 这一类的社会活动中都有他的身影。
这次见面的结果是,当晚赫尔曼就把迪菲带回了家,和家人一起吃晚饭。
而另一个成果是,两人情投意合,义结金兰,发誓要一起研究密码分发技术。他们碰到的第一个难题是,两人都太穷了。赫尔曼是个穷教授,而迪菲干脆没有固定收入。两人毕竟聪明,合计了一下,一致同意,对付贫穷最好的办法就是考研。于是赫尔曼运用自己仅有的那点权力,把迪菲招为自己的博士研究生。实际上,迪菲比赫尔曼还大一岁。
迪菲一向不守陈规,在学校也不乐意做作业,到最后,那个博士也没毕业。他擅长的是提出创新的主意。早在 1973 年,迪菲就提出了非对称加密的思想来,可惜无人能够实现。
迪菲与赫尔曼努力的方向是密码交换问题。
人类在密码学上的研究,可以截然划分为两个阶段。在迪菲和赫尔曼的成果之前,可以称之为原始密码时代,所用技术全是对称加密。所谓对称加密,就是加密与解密,用同一个密钥。举例来说,一个简单的加密方法,是把 A 加密成为 B, 把 C 加密成为 D。(A - B,C - D) 就是这个加密方法的密钥,对密文解密,也需要这个密钥。
如果用生活中钥匙与锁做比的话,那么钥匙是密码,锁是消息。合上锁,需要钥匙。打开锁,也需要钥匙,这就是对称加密。
再举一个影视剧的例子,潜伏里余则成收到广播中的数字,根据数字和规则,从一本书上寻找对应的文字。那本书,就是密钥。加密方和解密方,都需要那本书。
这种原始的方法,其中最让人痛苦的问题有二,其一是密码的分发,如何给余则成送去那本书。对于经常需要更改密码的情况,送密码的代价就非常高。其二是密码一旦被截获,则一切全完。
在人们的直觉中,两人之间要想使用密码通信,那么必须约定密钥。两人必须鬼鬼祟祟的见一面,避开人群,偷偷摸摸交换个密码、钥匙什么的。这难道还有什么可怀疑的?
然而在人们找到方法打破这个直觉之前,一个思想实验,给了人们巨大的启示。思想实验非常神奇,物理学家们都爱用,比如薛定谔的猫就是最著名的思想实验。爱因斯坦、费曼等物理大牛更是用思想实验斗法,你讲一个故事,我讲一个故事。思想实验不涉及科学与技术的细节,但故事其中的逻辑却能对科学与技术问题进行推演,仿佛战争之前的沙盘推演。而且,谁不爱听故事呢?
这个思想实验是这样的。
爱丽丝和鲍勃,是一对情侣,住在临近的两个村子里,双方父母不同意两人的恋情,两人都被锁在家中,只能通过信件诉衷情。爱丽丝要送情书给鲍勃,又不愿意让邮递员看到信件内容。在人们直觉的思维中,爱丽丝和鲍勃可以用一个加锁的盒子来寄信,两人都有这个锁的钥匙,就可以了。但是,爱丽丝需要先把钥匙送给鲍勃。有送钥匙的功夫,别说情书可以亲自送过去了,两人私奔都可以了。
有没有这种可能,爱丽丝在见不到鲍勃的情况下,也能安全把信件送到鲍勃手里,且邮递员偷窥不到信件内容?
爱丽丝很聪明,她想到了方法。她把信件放到盒子里,然后用一把锁锁上,钥匙只有一把,在她手里。邮递员把盒子送给了鲍勃,邮递员因为没有钥匙,打不开盒子,所以偷窥不了。鲍勃收到盒子后,也无法打开盒子。但鲍勃拿出另一把锁,在盒子上再锁一道,钥匙也只有一把,在他手里。鲍勃让邮递员将盒子送回爱丽丝手中。爱丽丝收到盒子后,用自己的钥匙,把自己的那把锁打开,让邮递员把盒子再交回鲍勃手中。鲍勃收到盒子后,盒子上只有一把鲍勃自己的那把锁,鲍勃摸出钥匙,颤抖地打开盒子,拿出情书信件阅读,沉浸在幸福中。当然,他还是要防备下邮递员,他来回跑了三趟,又没看到信,怒气之下起了杀心,把我们一场科技的思想实验,反转成凶杀故事也没准。
就这样,看似有违我们直觉的难题,就解决了。迪菲和赫尔曼,他们这些科学家认为,既然思想实验的逻辑可以走通,那么只要找到合适的数学方法,就一定能实现。迪菲与赫尔曼把目光放到了单向函数上,所谓单向函数,就是算法是不可逆的函数。做个比喻,我们很容易就可知道,黄色油漆与蓝色油漆混到一起,能够得到什么颜色,我们只要把两种油漆倒在一起搅拌一下即可。但若是给我们一桶绿色油漆,让我们分辨出是哪两种油漆混合而成,以及两种油漆的混合比例,那就困难无比了。
寻找这个数学方法,用去了迪菲和赫尔曼两年时间,最终的攻克,归功于赫尔曼。他天才的发现,取模运算,也就是做除法找余数的运算,具有单向函数的特性。用这个取模函数,爱丽丝与鲍勃,可以公开的交换数字,最终生成共同的密钥,只有他俩知道。邮递员眼睁睁看着他俩一桶桶的送油漆,就是分离不出油漆的配方,也就得不到密钥。
其实还有第三人,拉尔夫·默克尔(Ralph Merkle),他也参与了这个工作。默克尔在此之前便已在密钥分发技术上,成就非凡。他有过一个理论叫 Merkle 难题,那是对称加密的原始时代所能达到的最高成就,我们还是用思想实验的方法说明这个理论。
爱丽丝要送情书给鲍勃,他们用的对称加密,所以必须约定密钥。爱丽丝找到 1 万把锁,每把锁有2 把钥匙,在锁和钥匙上一一标上号码。每把锁的钥匙,爱丽丝都留下一把。把 1 万把锁和另外的 1万把钥匙,一一对应放进 1 万个密封的盒子,盒子上并不锁死,但是要打开盒子,需要拧盒子的螺丝,每个盒子打开都需要 10 分钟。爱丽丝委托邮递员,送这 1 万个盒子给鲍勃,倒霉的邮递员怨气冲天,但还是送去了。鲍勃看到 1 万个盒子,并没有惊慌,他沉着地选择了一个盒子,随意选择的一个,然后用 10 分钟拧下盒子上的螺丝,拿到了那把锁,假设那锁上标号是 #6800。鲍勃用 # 6800 的锁与钥匙,锁上一个盒子,盒子里装着信件,委托邮递员送给爱丽丝。爱丽丝收到盒子后,根据锁上标号 #6800,找到 #6800 钥匙,打开盒子,阅读情书,沉浸在幸福中。
若是邮递员要打开鲍勃的盒子,他就得一个个打开 1 万个盒子(此处物理的盒子与数字的盒子,逻辑上难以彻底对应。对于物理盒子,在邮递员从爱丽丝拿到 1 万个盒子时,他便需打开所有 1 万个盒子,每个盒子 10 分钟,并复制所有钥匙。拿到鲍勃的信件盒子后,由于并不知道 6800 对应哪一把钥匙,他只能一把把去试。而在数字世界中,此时邮递员依然拥有从爱丽丝处拿到的 1 万个盒子的原始副本),每个盒子 10 分钟,然后一把把钥匙试那个 # 6800 的锁。如果运气好,他大约需要打开 5000 个盒子,也就是 5 万分钟。
Merkle 难题,几乎算是在对称加密技术下,分发密钥问题的最佳方法了,但对称加密的潜力也就到此为止,再无它途。
1976 年迪菲与赫尔曼联名的论文 《密码学的新方向》,是一个新纪元的开始,从此这个世界走进了非对称加密时代。这篇论文几乎奠定了互联网传输安全的基础。实际上,这篇论文中,默克尔也有贡献,只是那时他还年轻,只是赫尔曼的博士生。2015 年图灵奖颁给了迪菲与赫尔曼,默克尔也因此无缘图灵奖这至高荣誉。
但默克尔也许并不在意,他自己的发明 Merkle Tree,是区块链上最基础的技术之一。每一次区块链上的数据校验,都在致敬他。