Page 249 - 《软件学报》2020年第12期
P. 249
任艳丽 等:可修改的区块链方案 3915
数据修改总流程如图 7 所示.
• 第一,网络中出现区块 i 的交易数据修改请求,申请将交易子块τ i 变更为τ′ ;
i
• 第二,对应验证群组的矿工 P i j ( j = 1,2,..., )Q 会对该次修改请求的合法性进行验证:请求若非法,则修改
请求被驳回;反之,交易数据的修改正式进行.如第 2.2.1 节分析,为保证数据修改前后区块结构及内容
不变,验证群组只能重新计算一组专属随机数作为机动因子 G i 的入参,以配合交易数据的变化;
• 第三,验证群组在全网将自己重新计算的专属随机数进行更新,并正式将交易子块τ i 变更为 ;τ′
i
• 最后,用于记录该次修改操作的交易 ctx 生成并进入交易池.
至此,整个数据修改过程完成,全网可对修改后的数据进行验证.
请求修改τ i 为 τ′
i
矿工 P i j ( j = 1,2,..., )Q 验证
No
请求驳回 请求合法
Yes
计算 x x′ i 1 , ′ i 2 ,...,x′ i Q ,使得
Hash ()τ ⊕ i i G = Hash ′ ⊕ ()τ i i G′
更新 x x′ 1 , ′ 2 ,...,x′ Q :修改τ i 为 τ′
i i i i
修改完成,ctx(revise,…)生成,全网验证
Fig.7 Process of data modification
图 7 数据修改流程
2.2.2 如何保证修改操作合法
“可修改”不会挑战区块链本身的安全性,它是对“不可篡改”造成的应用局限性的补充.因为修改操作必须
代表系统意志与利益,也即合法才能被完成,否则修改后的区块数据无法通过全网验证,因此,“可修改”的存在仍
可保证数据安全,具体由陷门单向函数特性及相关方案设计保证.
其核心思想如图 8 所示:首先,如第 2.2.1 节介绍,为保证数据修改前后区块 i 结构及内容不变,只能调整机动
因子 G i 的入参以配合交易数据τ i 的变化.而机动因子 G i 由 Q 个陷门单向函数构成,陷门单向函数的性质决定只
有拥有全部陷门,才能反向求逆,获取 G i 的新入参,使 G i 配合交易数据τ i 的变化做出正确调整.在本文中,陷门也
即验证群组 Q 名矿工 P j ( j = 1,2,..., )Q 的私钥 sk j ( j = 1,2,..., )Q .因此,只有 Q 名矿工同意数据修改(与方案数据修
i i
改条件一致),联合一起,才能在交易数据τ i 变为τ′ 时,利用各自私钥为机动因子计算全新入参 x i j ( j = 1,2,..., )Q ,使
i
得区块结构与内容不变的前提下,完成交易数据的改变.
j
具体而言,我们选择 ECC 加密算法 [17,18] 作为陷门单向映射 g j ,本质上,即以矿工 P 的公钥对其专属随机
i
i P
j
j
数 x 进行加密,即 g j = E ECC ()(x j j = 1,2,..., )Q , P 的私钥即单向映射函数的陷门.由陷门单向函数的性质可知,
i j i i
i P i P
任何节点都可以根据公开参数计算得到 G i ,但计算 x = j D ECC (g )( j = 1,2,..., )Q ,只能由拥有私钥(陷门)的矿工
i j j
i P i P
P 才能完成.换言之,如果要计算新的随机数 x x′ i 1 , ′ i 2 ,...,x′ i Q ,使得交易数据τ i 变为τ′ 后,
j
i
i
Hash ()τ G ( ,x x 2 ,...,x Q ) = Hash ′ ⊕ ()τ ⊕ G (x x′ 1 , ′ 2 ,...,x′ Q )
1
i i i i i i i i i i
仍然成立,只能由 Q 名矿工联合才可完成.其中,Q=N×阈值比例,阈值比例的设置需要兼顾方案安全性及效率:一