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×阈值比例,阈值比例的设置需要兼顾方案安全性及效率:一
   244   245   246   247   248   249   250   251   252   253   254