文/胡翌霖 2014年7月27日
原文链接
https://yilinhut.net/2014/07/27/5096.html很久没有写比特币相关文章了,之前是忙于毕业,但最近毕业之后倒不怎么忙,一方面是懒,最近效率低下,我正在调整回来,将会有一打积攒下来的文章要依次写出来。另一方面,关于比特币其实也没有太多可说的了,普及知识和基本问题该说的也都说了,所以一直也没有太大欲望新写什么。至于高潮迭起的各种所谓“二代币”,我也毫无兴趣,要喷呢别人又要说我不懂乱说,我也懒得钻研,所以就算了,捐钱的朋友们自求多福吧。另外近期看一些货币史和货币哲学、经济学思想等相关的内容,准备做一些讨论,但未必与比特币相关了。
不过为了进入状态,我感觉可以先写两篇小文章。没有多少原创性,无非是随便就搜索得到的老知识,但别人说的毕竟往往不合心意,要么说得过于专业,要么就没说到位。所以我再用自己的话组织一遍,大概也有点意义。
说起为什么信赖比特币,许多老玩家都会简单地回答两个字:数学。很多老玩家都是极客出身,言简意赅,很少有像我这样废话连篇的。但说得太简略也可能会给人带来误导,如果把比特币理解为像1+1=2那样可靠,那恐怕是误解了。
首先说“信数学”,指的只是在比特币的安全机制方面,我们信任的是数学。但就比特币的价值而言,数学当然无法向我们保证什么。数学只能保证一个比特币就是一个比特币,但它究竟值多少人民币或能买多少斤大米,这取决于实际的市场环境。所以我在第二篇比特币文章中就提到,比特币仰赖的是“市场、历史和数学”这三项,市场决定了人们对货币的需求,而历史决定了比特币对后起的竞争币的优势,数学则确保比特币的安全性。
在这三大基石中,如果要说哪一项最为脆弱的话,反倒是这个“数学”了。因为在这里的数学,并不是像1+1=2那样久经考验的算术规则,而是指20世纪才发展起来的“密码学”。所以比特币家族又被称作“密码学货币”,是因为它的去中心化安全机制完全建立在密码学基础之上的。
当代密码学最核心的突破就是“非对称加密”,简单来说,就是加密和解密分别使用两个密码,这也就是比特币中的“公钥—私钥”,所有人都可以使用公开的公钥加密一段信息,但只有私钥的拥有者才能够解密。
这种非对称加密才使得去中心化的记账系统得以可能。一个中心化的系统是有可能不使用密码学技术的,比如我为了证明我拥有这笔钱,我只要掌握一个密码,而这个密码也同时被记账中心所掌握,那么我向记账中心展示这一专属与我的密码,记账中心就知道我有权动用相应的一笔钱了。也就是说,在中心化系统中,因为我只需要向一个单一的中心确证自己的身份,那么我只要和记账中心共同掌握一套密码并且绝不外传就可以了。
但在一个去中心化的系统中就没那么简单了,我并不是向某个单一的中心确证自己的身份,而是要向整个网络公示自己的身份,因为没有哪一个单一的节点是绝对的权威,所以身份的确证必须是一个公开的行为。然而我所持有的确证自己身份的密码,显然不可能同时向所有人公开,那样的话任何人都可以顶替我的身份了。
于是,我们需要这样一种机制,能够让我在不公开私人密码的前提下,公示自己的身份。也就是说,别人尽管不知道我所拥有的密码,但是要让别人知道我确实拥有这一密码。
这就是非对称加密的用武之地了,也就是说,别人可以通过公钥来进行加密,“出一道难题”,而这一难题只有拥有相应私钥的人才能解开,那么只要我把这道题解开了,别人就能确信我的确是拥有私钥的人了。比特币的传递就是这种机制,每一笔交易其实都是一次解密和再加密的过程:A曾经对B发送了1个币,现在B要发给C1个币,他就要先解开A出给B的难题,证明自己是B,同时给C出一个难题,只有能够证明自己是C的人才能解开。
在这一过程中,全网络的任何人都在参与验证,只有当B通过解密证明自己是B时,他发起的新交易才会得到全网的传播和确认。很显然,这一验证过程同样要求“不对称性”,也就是说,一般人虽然解不开难题,但如果某人解开了,所有人都能验证这一解答是否正确。
这种作为密码学之基石的“不对称性”或者说“不可逆性”并不是很难理解。事实上我们都记得,在学校做数学题时,很多题目在求解的时候要绞尽脑汁,但如果知道答案,再代入进去验证则是很容易的事情。
比如给大整数分解质因数,做起来很慢,但如果给出几个素数求它们的乘积,那就要快很多了。这就是一个典型的不对称算法,也就是说,解出答案要远远比验证答案费时。只要找到类似这种非对称的算法,就可能设计出一套非对称加密机制了。事实上基于大整数因式分解问题的密码学算法即是影响最大的加密算法RSA的基本原理了。而比特币基于的是椭圆曲线离散对数问题,具体细节没必要展开了,但基本上就是这一特点:求解与验证的不对称性。
但是这种不对称性是绝对可靠的吗?答案是否定的。比如说,我们之所以觉得解某道题比验证它的答案要慢得多,也有可能只是因为我们尚未找到恰当的解题方法。一旦我们找到了诀窍,说不定算得比验证更快呢。刚学会加法的小学生也许觉得减法比加法难得多,但这并不是减法本身的性质,而只是人们没有掌握诀窍罢了。那么这些非对称加密所基于的非对称算法,有没有可能也只是因为我们尚未找到诀窍呢?
遗憾的是,的确如此。我们能够确信的只是“尚未”找到诀窍,但难以证明永远没人能找到诀窍。事实上SHA-0和SHA-1算法已经被“破解”,也就是说,找到了某些“凑答案”的诀窍,这些加密算法就不再可靠了。
那么,比特币所基于的加密算法有多可靠呢?答案是,中本聪选取了几乎是市面上最可靠的加密算法。然而无论如何,我们不能够一劳永逸地证明这些算法绝对可靠。
事实上,即便我们尚未找到诀窍,我们也不是完全没有办法求解,既然一旦知道答案就能够很快验证的话,我们就至少有一种求解的方法,那就是穷举法。所谓不对称、不可逆,也只是说在运算的时间上不对称,而不是绝对的可解和不可解的区别。但穷举法就注定比验证答案更慢吗?也许也只是我们尚未掌握穷举的窍门罢了?
这其实牵涉到七大“千僖年数学难题”中的第一难题:P (确定性多项式算法)对NP (非确定性多项式算法)问题。NP=P吗?简单来说,就是解开一个不确定的,也就是某些地方需要蒙的难题,能否像验证答案这样只需要按部就班就能够确定完成的问题一样快。
既然是“未解之谜”级数的难题,现在我们当然是没找到解答了。也就是说,我们既不能证明不确定性问题一定解得更慢,也不能证明找得到办法以相当的速度解出他们。
那么如果真能证明NP=P呢?那么包括RSA算法和比特币的相关算法在内,几乎所有的非对称加密几乎全部崩塌了。
这样看来,整个密码学貌似建立在一个极其脆弱的地基上,在祈祷特定算法不要有漏洞的同时,还要祈祷不要证明出NP=P来。不过数学本来就是如此难以捉摸的,我们甚至没办法证明算术系统的一致性,而只是相信它一致。又比如连续统假设已被证明不可解,NP问题的命运也有可能如此,很有可能我们永远都找不到让NP=P的方法,但又永远无法证明NP≠P。
另外,即便在数学上找不出“窍门”,但在物理上也许能有所突破,那就是量子计算机。量子计算机的原理是通过量子效应进行并行计算,很多人应该听说过“薛定谔的猫”,也就是说在量子态下,猫的状态可能既不是活也不是死,而是处于某种神奇的叠加态中。而在这种“叠加态”下,并行计算可能同时进行。比方说原本需要两只猫各花一分钟解决的问题,靠那一只处于量子叠加态的猫就可能在一分钟内完成,因为在量子态下它不再是“一只”猫了。但这种神奇的事情说来简单,实际实现起来是异常困难的,在目前看来虽然技术不断都有进步,但量子计算的能力并没有进入指数增长的轨道,在可预见的将来还难以取代经典计算机,而且每一台量子计算机只能针对特定问题优化,无法通用于任何形式的并行计算。当然,万一突然有了某种技术革新,量子计算机来个大跃进,那是否可能呢?我们当然无法排除这些可能性。
所以说,我们不能指望比特币的数学基础绝对无懈可击。安全总是相对而言的。如果我们无法证明今天出门不会被陨石砸死,那么是不是就不敢出门了呢?
事实上,与其说我们总在寻求安全的保证, 不如说我们总是在规避危险。如果屋内有个挥舞砍刀的疯子,那么哪怕外面在下冰雹,我也宁可跑到屋外。选择依靠什么总是某种相对的权衡,当我们选择比特币时,我们躲开了集权者的意志,我们认为冰冷的数字总比虚伪的人心来得可靠,就是这么简单。