热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

可编辑区块链:打破你对“不可篡改”的认知,但这样的区块链还安全吗

很多人最初了解区块链是什么的时候,除了比特币和中本聪的白皮书,听到最多的说法应该是“去中心化且不可篡改的分布式账本”。由此,区块链“不可篡改”的特性一直都深入人心。不可篡改,我是这

很多人最初了解区块链是什么的时候,除了比特币和中本聪的白皮书,听到最多的说法应该是“去中心化且不可篡改的分布式账本”。由此,区块链“不可篡改”的特性一直都深入人心。

不可篡改,我是这么理解的

在我的理解中,区块链的不可篡改应当是从两个方面来完成的。

一是从分布式共识上提供的,通过共识机制让节点都来确认区块中交易的合法性,共识达成后交易池就会通知所有节点上链。即使修改了本地账本的交易和状态量,其他节点在验证merkle_root的时候也不会承认这种改变,就算是再次通过发起一笔交易来更正数据和结果,曾经的记录也会一直存在。

二是区块链的机制规定已经上链的区块是不能更改信息的,因为区块链是有序的,顺序在前面的如果能更改,那后面很多依赖于前面的交易才产生的新交易就不能通过验证了。

对区块信息进行编辑,是切实存在的需求

但是对区块信息进行编辑,很多场景中都存在的需求。

如果你错误发送了一笔交易,或者只是发起交易之后反悔了,要怎么补救呢?目前采取的措施是再发送一笔交易来制造双花,让两笔冲突的交易不能通过验证,就都不能上链了。但是这个办法只能在交易池中还没有形成共识的时候有效,如果已经上链了,那就药石罔医了。

如果你的区块里存的交易信息不是一笔A给B十元钱的转账记录,而是一条条需要存储的数据,“张三,23岁,男,数学专业”、“李四,19岁,女,日语专业”,那么可能面临着数据更新的需求。一些具备时效性的信息要更新,已经失效的信息要删除,即使发新的交易来给出新的记录,也无法避免别人看到旧的信息仍在使用过时、失效的数据。

还有就是监管,如果负责监管的机构发现有的区块信息里披露了敏感的数据,或者有一些违法违规、造成不良影响的数据,那就要从区块中把它们移除。

看吧,编辑的需求无处不在。

“不可篡改”已经被打破,还不止一个方案

在2019年的IEEE S&P上,有一篇论文提出了可编辑区块链的方案:

《可编辑区块链:打破你对“不可篡改”的认知,但这样的区块链还安全吗》

这个方案简单地说,就是让节点还是通过共识投票来决定区块信息可不可以修改,在实现的时候也比较便捷,因为共识过程就照一贯的机制来就好。唯一需要改变的是在区块结构中扩展了一个merkle树用来存储old state,这个root值用来做验证,矿工在自己挖出的下个区块中包含编辑请求的hash,就被认为是给编辑请求投赞成票了。

但是其中些问题还是挺让人担心的,虽说任何人都可以来提出编辑请求,但是执行区块编辑的人需不需要是这个区块的主人呢?不然要怎么签名?而区块信息的改变必然引起区块hash的改变,这个区块后面做的验证是不是也无效了呢?如果你对这些问题有高见,请在评论中告知。

这个方案虽然容易实现,但是看上去不是非常漂亮,而且里面有一些让人担忧的问题,下面这个就很炫酷了。第二个方案来自于2019年的NDSS论文:

《可编辑区块链:打破你对“不可篡改”的认知,但这样的区块链还安全吗》

这个论文涉及到的密码学方法是变色龙哈希,是十几年前就有的一个老技术,先简单回顾一下变色龙哈希的内容:哈希是一个单向映射,不能反向恢复,很少发生碰撞,所以能用来在不泄露数据的前提下,进行一些隐私的信息匹配,并验证数据没有被变更过。变色龙哈希是其中的一个异类,它存在的意义是给有私钥的用户提供一个能找到碰撞的方案,但没有私钥的人想找碰撞还是得大海捞针。

于是聪明的研究者想到这样的方案:

《可编辑区块链:打破你对“不可篡改”的认知,但这样的区块链还安全吗》

在构成merkle树的时候留出一些余地,让不同的交易A、B向上产生分支节点H(A||B)时因为有了变色龙哈希的加持,能够得到相等的结果,这样拿着密钥的人就可以把装着旧交易的区块A,更换成装有新交易的区块B,还能保证hash不发生改变。

失去了“不可篡改”特性,区块链还值得信任吗?

这个问题现在就能给出一个妥善的回答了:区块链还是值得信任的。通过上面我们已经了解到,区块信息的修改是有着严格的章程的,要么让社群里的大家都同意,要么你拿着密钥改你自己的交易,既不能给后面的验证带来麻烦,也不能去修改时间戳、区块高度这些交易信息以外的重要参数。

很多人觉得区块链领域的根基还不稳,比如它的性能表现太差了不能支撑真实场景中的金融应用,比如DAPP还没有一个像样的killing app。但是在议会向扎克伯格的Libra施加阻力的当口,这可能是我们赶超美国的一个好机会,我想这也是区块链被制定为核心战略技术的原因吧。

制定标准的才有肉吃,我们和中国一起加油呀!


推荐阅读
author-avatar
yngbzl_165
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有