最近, 区块链概念得到政府行业的高度关注和支持, 但在现实世界的资产管理中, 其还鲜有亮点的项目本文作者从智能资产流通管理的角度, 解释了数字资产与区块链外的实物资产之间的联系问题区块链想要落地到现实世界, 硬链接的问题肯定绕不过去
比特币网络是一个去中心化的数字资产管理平台, 它管理的数字资产就是比特币本身因为比特币网络把比特币管理得如此之好, 很多人就想到, 能否用类似的机制来管理其他的资产呢?
这个想法, 几乎是每个学习区块链的人能够想到的第一类应用场景不需要中介, 不需要复杂的智能合约, 也不需要更多的技术创新, 只需要将比特币已经验证的成熟技术搬到其他领域, 就可以立刻打造一个去中心化安全防篡改可追溯的智能资产管理平台, 这太具诱惑力了
在这里就不列举什么食品药品防伪溯源之类人人都可以想到的场景, 就说现在非常火的共享车如果使用区块链来管理共享车, 将车的使用权作为一种智能资产管理起来, 立刻就可以激发出一大堆新的应用模式
比如长租某一辆车, 可以在自己不使用的时候作为二车主把使用权短租给同事也可以在指定时间和地点预订车, 而上一个使用者可以通过区块链上的交易将车的使用权卖给你这种新的应用模式可以想到很多, 整个共享车甚至出行市场的业态都可以围绕区块链重构
如果再想得远一点, 未来自动驾驶汽车普遍应用之后, 区块链将成为全自动出行和物流体系的一个重要维度, 支持非常活跃和复杂的交易行为, 甚至可以在上面衍生出一系列的金融产品, 想象空间无限
理想很丰满, 现实很骨感区块链火起来也有一两年时间了, 除了一个又一个花样迭出的数字货币平台, 我们并没有看到区块链在现实世界的资产管理中有什么亮目的表演
唯一值得一提的大概就是 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-256SHA-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 就是一家做区块链实物锁的创业公司但我认为这个领域可以创新的空间还很大以上的讨论对于这样一个重大话题来说, 既不够严谨, 也不够充分
事实上, 硬链接这个话题值得从密码学和智能锁代码的层面进行细致的分析, 因为它是用区块链管理实物资产的关键技术但限于本人的水平和文章的篇幅, 对此话题仅能进行浮光掠影的讨论, 以抛砖引玉, 引起更多的研究和探讨
来源: http://geek.csdn.net/news/detail/254392