区块链智能资产的“硬链接”思考

2018-05-10 10:30:28 浏览数 (1)

作者 | 孟岩

责编 | 景琦

比特币网络是一个去中心化的数字资产管理平台,它管理的数字资产就是比特币本身。因为比特币网络把比特币管理得如此之好,很多人就想到,能否用类似的机制来管理其他的资产呢?这个想法,几乎是每个学习区块链的人能够想到的第一类应用场景。不需要中介,不需要复杂的智能合约,也不需要更多的技术创新,只需要将比特币已经验证的成熟技术搬到其他领域,就可以立刻打造一个去中心化、安全、防篡改、可追溯的智能资产管理平台,这太具诱惑力了。

在这里就不列举什么食品药品防伪溯源之类人人都可以想到的场景,就说现在非常火的共享车。如果使用区块链来管理共享车,将车的使用权作为一种智能资产管理起来,立刻就可以激发出一大堆新的应用模式。比如长租某一辆车,可以在自己不使用的时候作为“二车主”把使用权短租给同事。也可以在指定时间和地点预订车,而上一个使用者可以通过区块链上的交易将车的使用权卖给你。

这种新的应用模式可以想到很多,整个共享车甚至出行市场的业态都可以围绕区块链重构。如果再想得远一点,未来自动驾驶汽车普遍应用之后,区块链将成为全自动出行和物流体系的一个重要维度,支持非常活跃和复杂的交易行为,甚至可以在上面衍生出一系列的金融产品,想象空间无限。

理想很丰满,现实很骨感。区块链火起来也有一两年时间了,除了一个又一个花样迭出的数字货币平台,我们并没有看到区块链在现实世界的资产管理中有什么亮目的表演。唯一值得一提的大概就是Everledger,这是一个以钻石防伪追踪为起点,雄心勃勃的链外资产管理平台。但正如我下面将会介绍的,Everledger在实践中还有绕不过去的一些问题。而在Everledger之外,人们设想的其他资产和物流管理类应用,目前为止还没有一个能够引起普遍关注的。到底是什么原因呢?

硬链接难题

一个核心的问题是区块链的“硬链接”难题尚未破解。所谓“硬链接”,就是在区块链内的数字资产与区块链外的实物或虚拟资产之间建立起来的牢固的、可信任的链接绑定关系。

举一个例子来说明。我们考虑Everledger这一类实物防伪追踪区块链平台。无论平台管理的是一颗钻石,还是一瓶波尔多红酒,对应于这个现实世界实物资产(real asset,下文简称RA),必在区块链内存在一个代表该RA的数字资产表示(digital asset representation,下文称为DAR)。DAR的形式,可以是简单的一个位串,也可以是类似UTXO那样更高级的数据结构,总之是一个数字对象。问题在于,如何确保这个DAR与现实世界中它所代表的那RA成一对一关系呢?如果你能做到,并且让这个对应关系牢固、可信、难以伪造和打断,我们就可以说链内的数字资产表示与链外实体资产之间建立了硬链接。

一个立即就能想到的方式,就是把DAR信息印成二维码标签,或者写入只读的IC芯片,称为智能标签(Smart Tag,下文称为sTAG),贴到或者印到RA上。现在绝大多数的区块链防伪类项目就想到这一步。比如给在钻石的盒子上印个标签啊,给葡萄酒盖子上打一个激光二维码啊,假装这就把问题解决了。遗憾的是,这种方法可以说都是不堪一击。为了说明这一点,下面我们用“攻击者”的逻辑来分析一下,这是一种在密码学的研究中经常使用的方式,就是假设我们自己是破坏者,考虑攻破这个系统的几个主要方式。

  • 第一,“空链接”攻击,或称为“一对空”攻击,也就是把贴在RA上的sTAG毁坏掉。毁坏sTAG 之后, 区块链中的DAR就不再对应现实世界中的任何RA,成为“空悬链接”,区块链也失去了对这个RA的追踪和管理能力,这个RA就成了无主的孤儿,任人摆布 。
  • 第二,“伪链接”攻击,或称为“一对假”攻击,也就是让DAR的记录与 sTAG 所标示的 RA的记录不符合。比如区块链内的记录明明说这个数字资产代表唐伯虎的《雄鹰展翅气吞天下图》,但你可以把这个实物标签揭下来,转身贴到祝枝山的《小鸡吃米图》上。这跟今天超市换标签出售过期食品,或者用真的茅台酒瓶装假酒,本质都是一样的——用真标签绑定假物件。出现这种情况,区块链就面临非常尴尬的局面。
  • 第三,“一对多” 攻击,也就是让区块链中DAR 同时对应多个RA。实施这种攻击的方法是想办法复制多个一模一样的sTAG,贴到不同的实体上,也就是伪造标签。
  • 第四,“多对一”攻击,与一对多攻击正好相反,就是让把多个sTAG贴到一个RA上,一个物件多个身份证,这样就可以在交货之前想办法把一个RA进行多次销售。

在以上四种基本攻击方式还可以任意组合,形成丰富多彩的攻击模式。简而言之,如果不能实现一对一的、可靠的、难以破坏、复制和挪动的硬链接,那么用区块链来管理实物资产就是一个笑话。

遗憾的是,据我了解,目前大多数区块链防伪追踪系统的设计,就只达到了这个层面。可以这么说,这样的区块链系统,在现实世界中只能是防君子不防小人,实际意义非常有限。

中本聪的启示

怎么解决这些问题呢?一个直觉的想法是让 sTAG唯一、不可伪造且与RA无法分割。那么我们就从确保sTAG的唯一性出发来思考。首先,sTAG中所含的ID信息,一经产生就必须是独一无二的,我们永远无法从区块链中产生出两个内容相同的标签。初看这个要求并不难达到,使用密码学标准的SHA-256、SHA-512或者其他密码产生器产生的位串,从概率上讲在人类文明存续期间不会出现第二次。

但想要真的实现唯一性并不是那么简单。强有力的攻击者不会规规矩矩的去找区块链重新生成一个新标签,而是会通过读取一个标签中的ID信息,用自家的黑设备复制一个标签,其中包含一个与原标签内容一模一样的ID信息,从而就可以实现上面所列举的一对多攻击。

这个问题当然不是区块链首先遇到的。现实世界中防伪,特别是纸钞、艺术品、珠宝、名酒等物品的防伪,已经有了很丰富的经验。但一方面,效果其实并不那么好,另一方面, 这些防伪机制都依赖于一个权威的中心化机构。想要在现实世界解决唯一标签问题,又不引入中心化机构,这恰恰就是区块链试图解决的问题之一,因此如果在这个环节当中重新引入权威的中心化机构,那么整个区块链系统的价值和意义就大打折扣了。

那么比特币是怎么解决这个问题的呢?中本聪没有费力防范比特币数据被复制,而是允许任何人都可以随意复制,但复制是随意的,操作则要凭私钥才能进行。具体来说,中本聪设计了一个“锁定脚本(locking script)”机制来保护UTXO资产。这个锁定脚本也叫“负载(encumbrance)”。也就是说,任何人想要动用这个UTXO资产,必须执行这个脚本,过得了关才能动用,过不了关你就别想。

详细的机制限于篇幅在这里不详述,感兴趣的读者可以参考我的另一篇文章《智能资产:概念、动机和技术思路》,该文从代码层面详细分析了锁定脚本的机制。我们在这里只需要注意以下几点:

  • 第一,比特币没有使用静态的标签,而是用执行锁定脚本的方式来实现所有权的转换。锁定脚本的执行,需要“开锁人”,也就是收款人提供一些“证据”作为参数,才能够执行成功,从而也才能开锁。
  • 第二,UTXO 自身包含了锁定脚本,从而使锁定脚本成为区块链数字资产(UTXO)不可分割的一部分。这就一举消除了一对空、一对假、一对多攻击的可能性。但是比特币能够这么做是有条件的,那就是它管理的智能资产UTXO本身就是数字资产。因此有人评论说,比特币是使用特定方案解决了一个特定问题,不能把它的解决方案直接照搬到其他领域去,而是必须做一些修改。
  • 第三,每一次交易,原UTXO被消耗,产生新的 UTXO,包含新的锁定脚本。
  • 第四,任何人都可以复制UTXO,但这并不构成攻击,因为锁定脚本保护的是内容,不是UTXO 那几个字节。比特币的本质是一个账簿,只要账簿内容是一致的,不管有几个账簿副本实体,本质上都只有一个账簿。这就解决了唯一性问题, 并消除了多对一攻击。

以上是比特币的设计。需要指出的是,在区块链世界里,比特币的思路并不是唯一可行的路径。比如以太坊就有另一套思路,简单的说就是一切交给智能合约的思路。在我看来,如果仅仅是进行智能资产的防伪与追踪,以太坊的做法实在太 大材小用了。因此我还是主张以比特币的思路为主来解决硬链接的问题。

我们能不能从比特币的设计中吸取灵感,来解决前述的硬链接问题呢?

建议方案及讨论

一个可能的思路是这样的:

首先,在现实世界当中sTAG决不能只是一个静态的标签,必须是一个可编程嵌入式智能锁(smart lock,一下简称sLOCK)。这个智能锁其实是一个嵌入式的计算机。比如说,汽车和房屋的sLOCK 可以直接从现有的电子锁升级而成,而其他物品,则需要创造一种新的发明,就是由sLOCK锁闭的容器。你把钻石或者葡萄酒放进这个容器,然后锁上,规定只有其所有人才能打开,这样就实现了sLOCK/sTAG与RA的不可分割性。开锁的过程与比特币类似,sLOCK 内置了一个脚本,开锁人需要提供一些只有用自己的私钥才能生成的信息参数,才能使脚本顺利执行,sLOCK开锁。

我们来看看这样的sLOCK如何应对上面提出的几类攻击。

首先,多对一攻击不攻自破。原来在使用sTAG的时候,你可以把多枚不同的sTAG贴到一个商品上,然后一物多卖,等到几位买家上门提货的时候,发现他们买的竟然是同一个东西,这样所有权归属就混乱了。但是如果采用sLOCK,你不可能把同一块钻石放在两个不同的盒子里,因此多对一攻击就无法实施了。

其次,配合一点点制度安排,这个sLOCK就可以抵抗一对空攻击。前面介绍过,一对空攻击是通过损毁标签实现的。但是我们可以逐渐建立这样一种规范,即世界上任何一颗钻石的销售都必须是否放在完好的sLOCK盒子里进行的,没有盒子或者盒子有破坏痕迹的钻石的销售不受法律保护。这样一来,你把sLOC 毁掉,拿着钻石出来,就只能自己用而不能销售。请注意,区块链保护的是流通中的真实性,物品如果不流通,区块链并不关心其真伪。在某些情况下,甚至可以让sLOCK带有特殊机制,一旦自己被破坏,就销毁其中的物品,那就大大提升了一对空攻击的实施难度。

但是我仍然可以偷梁换柱,把一块玻璃碴子放进这个sLOCK容器中,完成一对假攻击。如果我有技术的话,可以复制几个一模一样的sLOCK容器,连其中的信息都完整复制过来,形成一对多攻击。这个问题怎么解决呢?

要让sLOCK对于其锁定的RA具备描述性。比如,一幅书法绘画作品,盛放它的sLOCK中必须存有该作品的高清图片和重要特征信息,这样只要用户愿意,就可以读出这些信息,并且鉴定实物是否与标签内的信息吻合。这样以来,如果你偷梁换柱,那么交易中对方用sLOCK中存储的信息与实体进行比较,就可以发现问题。当然,你可能会指出,这里存在一个关键的薄弱环节。如果赝品与真品极其相似,以至于买家对着sLOCK中的信息都无法看出真假,那岂不是仍然可以偷梁换柱?确实如此,这样是有可能骗过买家。但问题在于,我们分辨两件东西的真伪,归根结底也只能从能观察到的特征来判断。如果两者在可观察的特征上没有差别,那在这种情况下谈论真假,本身就是没有意义的。只要两件物品是有差别的,通过使用一些密码学中的协议,还是可以大大增加赝品以假乱真的难度的。在这里就不展开了。

这里还有最后一个漏洞。如果攻击者能够读取sLOCK中的信息,并且对其加以修改,写入另一个 sLOCK,那么就可以实施欺诈。比如我从一个装有钻石的sLOCK中读取全部信息,然后修改其中的物品描述信息,把我手里的一块碎玻璃描述成钻石,再把编辑后的信息写到一个新买的sLOCK容器中,怎么办?这个问题其实是不存在的。因为我们判断一个盒子里的钻石是否为真,除了描述信息跟实物要对的上之外,更重要的是检查这个钻石的交易记录,沿着这个交易记录上溯,看看最初将钻石放到盒子里人,是否是可被信赖的钻石销售厂商。这个交易记录链是你无法伪造的。如果我追溯交易记录,发现第一个钻石放进sLOCK容器的是某不靠谱青年,你认为我会掏钱去买这个钻石吗?

这种思路已经有人在尝试。德国企业slock.it就是一家做区块链实物锁的创业公司。但我认为这个领域可以创新的空间还很大。以上的讨论对于这样一个重大话题来说,既不够严谨,也不够充分。事实上,硬链接这个话题值得从密码学和智能锁代码的层面进行细致的分析,因为它是用区块链管理实物资产的关键技术。但限于本人的水平和文章的篇幅,对此话题仅能进行浮光掠影的讨论,以抛砖引玉,引起更多的研究和探讨。

最近,区块链概念得到政府、行业的高度关注和支持,但在现实世界的资产管理中,其还鲜有亮点的项目。本文作者从智能资产流通、管理的角度,解释了数字资产与区块链外的实物资产之间的联系问题。区块链想要落地到现实世界,“硬链接”的问题肯定绕不过去。

作者简介:孟岩,全球最大开发者社区CSDN 副总裁,负责 CSDN 有关区块链相关方面的工作。从2015年开始研究区块链技术及密码学,对银行票据、电信、艺术品、供应链、可再生资源等行业的区块链应用进行过实质性探索。

2009年入职 IBM大中华区,负责IBM区块链、智慧地球、智慧城市、Watson认知计算等重大技术战略在中国的实施和推广,所直接策划和参与的智慧地球、智慧城市、IBM百年、中国网球公开赛大数据分析、巴西世界杯认知计算等传播项目在国际和国内屡次获得行业大奖。

曾担任CSDN总编多年,熟悉和了解全球顶尖的程序员开发者。

0 人点赞