赵晓琦,张正昊,李勇.可编辑且可追责的区块链方案[J].信息安全学报,2022,7(5):19-28
方案构造
概述
存在Leader将陷门作为秘密,进行可验证的秘密分享,附带证明。
链中用户对编辑请求进行投票,利用公钥和Leader的随机数进行哈希并排序选择具有编辑权的用户。
用户向leader发送密钥并附带证明,编辑者收到t个份额后恢复密钥并进行编辑。
用户可对编辑后的区块进行验证,对相关方追责。
秘密分享阶段
- Share:Dealer计算
- 计算$Y_i=(y_i)^{f(i)},i\in [n],C_j=g^{a_j},j\in\{0,t-1\}$
- 这里为什么不能用g,用公钥类似于公钥加密
- 承诺$c=H(g^{f(i)},y^{f(i)}_i,g^{w_i},y^{w_i}_i)$
- 应答$r_i\equiv w_i-f(i)c \bmod q$
- 证明$\pi=(c,r_1,\dots,r_n)$
- 广播$(Y_1,\dots,Y_n,C_0,\dots,C_{t-1},\pi)$
- 计算$Y_i=(y_i)^{f(i)},i\in [n],C_j=g^{a_j},j\in\{0,t-1\}$
Verify:用户计算
- $g^{w_i}\mathop{=}\limits^{?}g^{r_i}(\prod_{j=0}^{t-1} (C_j)^{i^j})^c$
- $y_i^{w_i}\mathop{=}\limits^{?}y_i^{r_i}(\prod_{j=0}^{t-1} (C_j)^{i^j})^c$
Dec:用户计算
- 计算$s_i=Y_i^{x_i^{-1}},c_2=H(h^{t_i}|s_i^{t_i})$
- 证明$\pi_i=(c_2,t_i-x_ic_2)$(用于对编辑的追责,可能使用虚假的公钥)
投票阶段
用户对编辑请求投票,需要保证修改的不是金融数据,同意则生成一个随机数加密发给Leader
寻找编辑者阶段
$hash_i=H(upk_i,r_{sum})$,用户计算并广播$hash_i$,其中$r_{sum}$相当于是参与者都提供了部分随机性,排序后选择最小的公钥对应的编辑者即可
编辑阶段
恢复秘密生成新的随机数即可
验证追责阶段
- 检查$r_{sum}$正确性
- 判断编辑权用户的公钥是不是最小的哈希值的输入
- 还要考虑Leader的公钥与随机数的哈希值是否小于最小哈希,如果不满足说明Dealer可能作恶
- 计算变色龙哈希值成立
- 验证子密钥是否正确,即$\pi_i$
追责性
定义:编辑后的内容广播到区块链中,用户可验证是否可被接受,出现错误时可以向相关责任方进行追责
分别考虑验证追责阶段的四个条件:
- Leader可能更改随机数的和来内定编辑者,计算和可以追责到leader
- 如果用户的公钥不是最小哈希值,可以追责到编辑者
- 如果哈希值不同,用户发送的子密钥正确,追责编辑者
- 子密钥错误,追责子密钥拥有者
如果编辑发布后经公共验证不被接受,追责所有相关者
目的&收获
- 了解可追责的定义,学习可追责的方案设计思路,追责部分详细分析如何追责的思路和方法
- 寻找编辑者阶段的设计,每个人生成随机数,Dealer求和再下发和,将随机数的和以及公钥作为哈希输入,对结果排序