Page 244 - 《软件学报》2020年第12期
P. 244
3910 Journal of Software 软件学报 Vol.31, No.12, December 2020
Key words: blockchain; revisable; trapdoor one-way function; proof of space; data security; data security
[1]
近年来,区块链技术得到学术界和企业界的广泛关注.从以比特币 为代表的加密货币系统——区块链 1.0,
到以太坊为代表的智能合约——区块链 2.0,再到现在,区块链应用走出金融,走向社会多行业,进入区块链 3.0 时
代.去中心化和上链数据不可篡改的特性,使其有别于传统的中心化系统,为金融、科技甚至政治等领域的数据
[2]
存储提供了新的模式 .
在区块链系统中,共识机制为各节点制定信任标准,构建激励机制,使得各节点就系统状态达成共识,共同
[3]
维护系统健康运行 .目前,主流的共识机制有基于工作量证明的 POW(proof of work)共识机制 [1,4] 、基于权益证
明的 POS(proof of stake)共识机制 [5−7] 、基于授权股权证明的 DPOS(delegated proof of stake)共识机制 [8,9] 等.现
有的区块链系统基本以 POW与 POS共识机制为主,但 POW基于算力竞争,挖矿电力损耗巨大,不利于节能环保.
POS 基于权益竞争,信用机制不牢固,大量低成本货币被分配于开发者,若利益驱使其大量抛售货币,将不利于系
统维护. Park 等人基于 POSpace(proof of space)共识机制提出 SpaceMint 区块链系统 [10] ,节点基于可循环利用的
本地空间竞争挖矿,计算代价低,避免了算力竞争而造成的资源浪费.同时,安全的证明机制保证其信用牢固性,
实现了对安全性与资源效率的兼顾.另外,SpaceMint 系统采用新型链式结构.传统的区块链利用哈希函数将区
块头、区块体以及前后区块链接起来,以哈希函数的不可碰撞性保证数据安全.而 SpaceMint 通过加入签名子块,
打破区块头和区块体的直接链接关系,构建了新型的区块链接结构,详见第 1.3 节.
现有的区块链系统中,数据一旦上链便无法更改.而随着区块链的发展,除金融数据外的科技、文化甚至政
治等多类社会数据也将上链,失效数据无法删除、错误数据无法修改等问题将变得更加突出.例如:一个公司宣
布破产,其交易数据失效,不再具备永久存储的价值,无法及时删除将造成存储资源浪费;或者某些上链的经典
技术参数、公式在若干年后被推翻,需做出修正;又或者恶意、负面的舆论数据由于别有用心的挖矿者而上链,
区块链的公开性将导致其不断扩散传播,造成恶劣影响.及时的数据修正在现有的区块链系统中均无法完成,可
能造成巨大的经济损失和恶劣的社会影响.因此,上链数据无法更改将在一定程度上限制了区块链的进一步发
展,而在特定条件下实现可修改的区块链,具有广阔的应用前景.
在可修改区块链研究中,爱哲森公司基于带陷门的变色龙哈希函数 [11] ,在已知陷门时,可对区块数据进行修
改.但该方案中,陷门被交于可信中心,修改权被中心化,数据安全面临威胁.Li 等人 [12] 对可修改区块链技术进行
了改进,利用秘密共享方案,将陷门分配给系统各节点,当且仅当阈值节点联合时方可恢复陷门,实现数据修改.
但上述方案均基于变色龙哈希函数实现区块数据修改,而现有的区块链系统大多基于传统的抗碰撞哈希函数,
所以上述方案应用价值不高.Ren 等人 [13] 基于抗碰撞哈希函数,提出了可删除区块链系统,利用安全的门限环签
名方案,在超过门限值的节点同意时,可对单个区块的全部交易数据进行删除.但该方案无法删除指定交易数
据,也无法进行数据修改.本文使用抗碰撞哈希函数,基于 POSpace 共识机制实现可修改的区块链方案,在绝大多
数节点同意后,可对指定交易数据进行修改或删除,具有重要的应用价值.
本文基于文献[10]中的区块结构和陷门单向函数,提出了可修改的区块链方案.通过引入机动因子,重构区
块签名子块,在数据失效或错误时,只要超过阈值数节点同意,便可实现区块数据的合法修改;同时保持区块链
接不变,除修改数据,其余数据不变,全网仍可按原始验证方式对数据合法性进行验证.而且我们设置了特定的
阈值,使得修改操作必须经过绝大多数节点同意,恶意的非法修改无法完成,保证了数据的安全.
1 基础知识
本节将介绍一些基本概念,包括陷门单向函数、Grinding Blocks 攻击及基于空间证明的区块链结构.
1.1 陷门单向函数
陷单向函数是密码学领域的一个重要概念,可简单描述为:正向求解容易,但反向求解不可实现的函数.陷
门单向函数 [14,15] 不同于单向函数的“不可逆”,它是“陷门”可逆的.在陷门未知时,它等同于普通单向函数;当陷门
已知时,求逆便计算上可实现.