北京大学陈钟:区块链安全——数学的尴尬与无奈

北京大学陈钟:区块链安全——数学的尴尬与无奈

12月17日讯,由数字资产研究院、零壹财经和石榴财经联合举办的2018国际区块链数学科学会议在京举行。计算机科学家、北京大学信息科学技术学院区块链研究中心陈钟以“区块链安全——数学的尴尬与无奈”为主题作了报告。

会上,陈钟发出了“区块链安全吗”之问。他表示,目前,交易易所被盗排在区块链安全事件之首。“区块链里面对黑客的攻击来自方方面面。”陈钟强调,“数据安全的问题要转成数据主权的问题来解决。”

以下是演讲实录:

各位嘉宾、各位同仁:大家上午好!非常高兴能够被邀请参加区块链数学科学会议,这可能是我参加有关区块链的会议里面,讨论科学最深入的一个会,所以也学到了很多东西。

我们在北大今年也成立了一个区块链研究中心,现在也在跟本科生图灵班的同学在上一门区块链的理论与技术这样的一个课程,现在也在进行中。所以,探讨区块链数学问题,其实是一个非常好的主题,我相信可能在中国以外其他的地方,可能还没有这样的一个会议,所以非常荣幸。

今天我想从计算机科学的角度来跟大家分享一下区块链安全和数学之间的关系。我们会看到区块链的出现跟计算机科学是非常紧密的,计算机科学首先还是一个构造性的科学,也就是说不光有理论,还要把实际的系统做出来。

所以,我想可能从这三个方面做一个探讨,然后最后有一个结论。

背景是说区块链,我还是想简单地讲一下,我们在理解区块链,其实更贴切的是分布式账本技术,也就是说它是构造一个共享的分布式账本,是用于在商业网络中(有网的地方)促进交易记录和资产跟踪,所以构造了一个块,包含了交易数据、时间戳和原线块的哈密的哈希。

下面的这个很重要,挑战就是一个双花问题,我们看到中本聪的论文叫《账本一致性得到了数学证明》。因为那个时候确实还没运行这个系统,所以这是一个数学的证明,在虚拟数学世界里认可了这件事是成功的。

当然了现在运作了有十年的时间,我们看到中间这个结论还是正确的。但是也遇到了更多其他的问题,比如说分叉的问题,专门的矿工可能在当时也没有对现实的情况有一个清醒的认识。

当然今天区块链我们看到了,如果我们把它整体上来看的话,点对点、抗毁坏、防篡改、全透明是通过了分布式账本来实现的,但是这里也有它基本的问题。这个问题可能有数学的,也有其他方面的问题。

所以,从根本上讲,我赞同这样的说法,分布式账本技术在会计学意义上是500年来的一次颠覆性的创新。也就是说在复式账本的基础上,把记账的方式进行了改变。而这个改变的过程中,我们看到了进一步的区块链的发展,就是这个记账已经不仅仅是交易,可以记规则,而这个规则通过代码记录在账本之上。这样的话,就给我们所谓的可编程设备带来一种新的方式。

所以,为什么分布式账本技术科技很重要,就是我们所说的价值的交换、可信信息的交换,其实在计算机学者来看是通过这样的方式来构造、建设。

但是比特币和区块链的历史意义是非常大的,我们看到了中本聪没有说建一个数据中心,造一台新的计算机或者是一个网络,但是比特币到今天,在整个货币和支付、信任、社会组织架构的重构,以及对权力集中化的结构的冲击,还有让公众的意识能够说我们有权主张管理自己数据的方式这些方面,的确带来了很多冲击和颠覆。

所以,我们看到一个网络化技术的演进,这些主机的互联、信息的互联、人人的互联、物物的互联、价值的互联,本身在连接的角度,在计算机层面是叠加的。但是我们看到当一个新的信息互联或者是人人互联出现的时候,我们的注意点转移了,我们不再基于机器和机器具体是有什么样的标识、IP地址、路由,我们不关心这件事情了。到了价值互联的时候,我们可能也是关注了这一个点、一个特征,我们还忽略了有其他的方面。

所以,区块链应用的特色,在这里就包括了去中心化、分布式抗毁、全网溯源、智能合约、同等激励,而真正对我们觉得非常有意义的,就是如何用智能合约来编程,把我们很多的规则能够在现在构建的区块链上编程、执行,使我们整个社会的秩序能够更加变好、变得很有效率。

所以,区块链技术的发展,从公链到私链,从仅仅只是支持货币,到发明了链上的代码(智能合约),扩展到若干其他的应用场景下,这些应该说我们看到的现实技术是这样的一个情况。

所以,我们看到从账本的角度来看,都是开源的项目,所以有公有链、联盟链,还有其他有特色的一些项目。

从节点的准入方式,我们看到了公链许可链的区别,用户是匿名,要不要验证,网络要不要管理,受不受限制,共识是在什么样的范围内做的,就是这样的情况。

当然了在广普的意义上看,我们看到区块链的问题:共识算法、数据一致性问题是一个正确性的问题,但是这个正确问题的话,在概率层次上去做相应的定义,因为中间的参与者可能是不一样的。所以,联盟链和公有链的共识算法也有差距。

这些方面都是数学展示了无限魅力的地方。

从应用的角度来看,我们看有两大应用现在在展开:

1、在区块链上发行加密数字货币,进行价值交换。

2、用区块链技术解决企业信息化的问题,来传递信任。

所以,在比特币、以太坊上面有很好的分布。当然从比特币来看,所衍生的货币的形式做了大量的经济学金融方面的实验,我们说它是实验,并不是说它是真正现实的被认可和解决现实的问题。当然以太坊是介于两者,EEA也在把以太坊用于解决企业信息化问题开始做相应的工作。

这个是在数字货币上,经过比特币所导出各种各样的实验情景,我们看起来知名的有1600多种。

这个是在以太坊出现以后,DAPP的平台所支持的,现在知名的也有接近1600多种的应用。在以太坊上面跑的大概有2.6万多个智能合约,这些都是看到我们现实世界中的情况。

区块链安全吗?我们看到现在区块链产业安全分析的报告,其实已经进行了相应的总结。

首先我们看到从2011-2018年,在这个范围内的区块链因安全事件造成的损失是高达28亿美金左右。2017-2018年这一年里面,大概就有19亿美金的损失。

安全可能来自于什么方面呢?包括了密码算法、共识机制、智能合约、代码漏洞和隐私保护等等,代码漏洞其实对于区块链还有其他的系统,可能都具有一个共性的问题,如果这个代码本身编得不好,可能就会存在相应的问题。

在这儿我们以它最具有代表性的智能合约作为一个例子,我们看看后面的情况。这个行业报告里面,我们看到了它的重大事件出现的情况,还有造成的经济损失的状况,2017、2018年呈上升的趋势。

安全事件的统计在现在,我们可以看到有区块链自身的机制、区块链生态的问题,还有使用者的问题。在这里我们会看到区块链自身的机制里面,智能合约是排在第一位的安全问题,而51攻击大概排在第二位。而在区块链生态里面,交易所被盗远远排在第一,交易所的第一道攻击变成了第二。所以,你现在要开一个交易所,如果你不买第一道攻击的服务,基本上你就开不下去,这就是现实的情况。当然在使用者这边有账号被盗、钱包被盗这样的问题出现。这个是遭受攻击的统计和损失。

我们看看重大安全事件的摘要里面,从2011年罗列下来的问题,确实有很多,因为时间的关系,我们不能展开讲。

所以,我们看到在传统的安全实践的角度,对链、智能合约、交易所的钱包安全审计都做了大量的工作,但是这些工作基本上是叫做头疼医头、脚疼医脚的方式,如果美称叫它工程化,实际上还远远不够,更谈不到说上升到数学的角度能不能解决这些问题。所以,攻击的分析里面有很多。

我后面想以智能合约为例,来讲讲安全的问题。展开起来也有很多的问题,包括智能合约的安全漏洞、相应的技术、最佳实践、验证等等。

所以,智能合约是什么?实际上它就是一种链上的代码,建立在指定时间事件的触发下能够自动执行。由于这个区块链本身的时间和不可篡改的效应,因此自动化、永久性、实时性、节约成本和准时高效是我们追求的目标。

所以,和传统的交易相比,传统合约里有大量的文书,严重地依赖第三方执行,还有仲裁和司法。现在我们创造一个完全数字化、自动执行、代码定义规则的一个场景,这个是非常美妙的一个理想目标。

但是我们看到现在以智能合约为例的话,它基本上是可以看成是一个状态机复制的模型。我们会看到可编程的这个里面就是状态迁移的函数,这个里面所列的不到20行的程序,基本上是让我们在一个以太坊的平台上,就可以写一个我自己可以发币的类似于比特币的币的代码。所以,可见智能合约要做好是一个非常有效的东西。

但是我们也会注意到,这个程序虽然很短,但是挑战性极强,一旦上链以后,我们以后怎么改?还能不能改?这些都是问题。所以,以太坊的智能合约的运行环境是一个在分布式的大的环境下去实现的。

这里面跟它相关的常见的漏洞类型我就不多说了,包括表达的语言和虚拟机,还有区块链本身。所以,这里我们研究了大量的问题,实际上这些问题都是不可避免的,在我们现实当中把它抓出来的问题。

所以,智能合约的安全技术现在确实还很不够成熟,很难数学化。所以,我们看到开发者要做代码自己的审视、测试。我们现在还需要有一些最佳的实践,说我们以前有过什么样的错误类型,你看看这里面有没有,我们还想把它自动化一点儿,能不能对代码做一个静态的分析。还有就是我们能不能建立一个形式化验证的方式,我们用一个工具去检查等等。

所以,这里面走在最前面的这个公司推荐了很多最佳实践的情况。我们看到一些基于符号执行的漏洞检测的工具,符号执行的情况,还有基于静态分析、漏洞检测的,还有我们实验室也在做的合约漏洞的检测,还有基于污点分析的合约漏洞的检测、基于形式化的验证技术和方法等等这样的一些工作。

这些工作我们即便把它做好了,我们是不是就可以有效地防止攻击行为呢?但是实际上不是,在这儿我就展开一下,像3D攻击的案例,我相信做安全的很多人都知道。

在今年的8月22日,在以太坊上3D做了一轮正式的结束,结束了以后最后赢家拿走了10469个以太奖金,折合人民币大概是2200万元。看起来像是一个按照规则中了头彩的人,但是后来有人分析,说这是一个高手对智能合约进行了一场精致的攻击。

这个智能合约实现了一个游戏开始的时候有一个24小时的倒计时,每一个人进来买一个的key的时候,时间就会延长30秒。你越早买的时候,后面买的人就会给你分红,同时还会有一部分的钱进入奖金池。他设置了最后一个激励的条件,如果你是最后一个购买key的人,你可以分享这个奖金池里面48%的奖金,其中还有2%是分配给社区,另外50%有一个分配的方式,我们姑且理解这个50%是做善事、公益。

这样的一个情况,我们会看到,最后这个攻击发现,它在倒计时剩下3分钟左右,这个攻击者买了一个key,他就预先准备了大量的智能合约,发起了跟这个交易不相关交易。但是由于在以太坊上面矿工有一个激励机制,越有钱的,交易就越在前面做。然后这个攻击者还不断地判断他是不是最后那个key的持有者,最后没有人购买,他就赢得了这个大奖。我们看到了他前面花的代价,大概花了6000人民币做前期的交易。

这个启示是什么?我们说我们可能在数学、计算机、工程上做了大量的事情,但是基于规则的攻击,可能还是会存在。

所以,回想到6000万美金的攻击当中,攻击者也是说他是充分研究了里面的规则,充分利用了这个规则,才做了这件事情。因此就导致了这个社区对这样的行为到底该制裁还是不该制裁?当然一种制裁就是在计算机里,我们就反悔了,我们把这个交易返回到他攻击发生前的那个时刻,那个区块就到那儿了,后面的统统作废,这样的话就把他卷走的钱拿回来了。

当然最后我们知道了这个结果,85%支持了分叉,所以以太坊分叉了。但是有15% 的人坚持原来的规则,所以以太坊的社区依然存在,并且运行。现在我们看到币值掉下来得很厉害,所以ETC已经停摆,开发者已经没有钱再去更新他的系统。

所以,这样来看的话,我们实际上在区块链里面所面临的黑客的攻击,它是来自于方方面面,是一个算法上和聪明人的博弈。

所以,有很多研究团体,现在也在跟踪、研究,似乎这件事情已经从技术到了经济、社会、新的规则上。

所以,这是举的智能合约的一个例子。

最后,我想做一个结束语,我在1994年、1995年,当时做全国人民银行的支付清算系统,在大连做系统的时候,晚上没事就把人民银行的体系花了两个多小时就给破解了。后来破解了以后,知道这个密码是谁编的,是我们的总参编的,所以后来跟总参有不解之缘,又进入了密码学领域。所以,在北大成立信息安全实验室和教密码学的课,也是从那个时候开始的。

在开始的时候,我们看到1994年有一本书,号称是密码学各位开发者的《圣经》,第二版里面就说在这本书里描述了一个数学的乌托邦,密码算法能把你最深的秘密保持数千年,安全协议能够安全而可靠地执行,难以想象地像交易交互、不规则的赌博、不可检测的认证、匿名货币等等,所以密码学是超凡的技术均衡系,任何人只要有一台便宜的计算机,就可以达到与最强大的政府同样的安全性。

他说这个话的时候,实际上我们看到1994年的时候是互联网刚刚开始民用大规模商用的时候,而个人计算机从80年代开始,经过10年左右发展,基本上可以做到人手一台。而美国恰好是法律保护非常好的国家,所以后面还加了一句话:你们仅靠法律保护自己还远远不够,我们还需要用数学来保护我们自己。

但是到了2000年(过了4年以后),又有另外一本书,这个里面是这么些前沿:我写这本书部分原因是为了纠正一个错误,密码学不能做那么多的事情,密码学并非存在于真空之中,数学是完美的,而现实是主观的;数学是精确的,而计算机却充满矛盾;数学是遵循逻辑的,而人却是不稳定的、反复无常的甚至是难以理解的。我把密码学说成灵丹妙药,真的有些天真。

然后他进一步说:安全性的弱点与数学毫无关系,它们存在于硬件、软件、网络及人的身上,糟糕的编程、极差的操作系统、口令选择不当,都会产生这样的问题。

实际上我还是想呼吁,数学如何能够助力区块链安全?我们从头疼医头、脚疼医脚,从工程走向科学,有没有这种可能性?

所以,我们认识了许多规律,比如说安全是一条链、安全是一个过程、安全的措施要渗透在各种组建和连接里,但是现在的软件系统太复杂了,有大量的组建和连接,以至于开发者、设计者、实践者都不知道。靠什么呢?现在就靠了经济学、钱。

所以,我们看到过去的微软到今天的阿里巴巴、腾讯这样一些大的企业,都是花重奖金去奖励那些发现了系统漏洞、后门、问题的人,还逃离不到用经济激励的方式来解决这样的问题。

但是不管怎么样,有一句话:我认为数字安全是当今最酷的事,它十分艰辛,但充满乐趣。

所以,在安全或者是更泛化一点儿的网络空间安全,能不能从工程走向科学,我觉得这是一个很大的命题,我也希望在这儿第一次的区块链数学科学会上,我们能够有人一起来探索、探讨这样的事情。

实际上我们看到区块链它涉及了很多的领域,包括计算领域、经济领域、法律领域等等新的研究领域,在它分布式账本的金字塔上,我们已经涉及了很多学科的交叉。这也是为什么我们区块链研究中心已经成立了,但是在北大我们也希望说把经济学院、管理学院、法学院、数学学院都能够团结到一起,然后共同地来推进相应的研究的课题。

特别是在今天,我们看到用区块链如何把数据安全的问题转成数据主权的问题来解决,这也是一个非常重要的探讨的方向。

所以,今年我看到有很多在美国的做数学、密码学、安全的教授们,他们出来把下一代区块链的技术开始向前实质性地推进。所以,我也预期我们后面还有更多机会来探讨这样一个交叉学科协同的问题。

谢谢大家!

相关领域
人物