操作数和输出的不可互换性

由于我们对变量多项式限制的所有操作数都使用相同的 \(\alpha\),所以无法阻止证明者:

  • 使用来自其他操作数的变量多项式,例如 \(L'(s) = o_1(s) + r_1(s) + r_5(s) + \ldots\)
  • 完全交换操作数多项式,例如交换 \(O(s)\) 与 \(L(s)\) 得到运算 \(\color{ForestGreen}{O(s)}\ {\times}\ \color{blue}{R(s)}\ =\ \color{red}{L(s)}\)
  • 重复使用相同的操作数多项式,例如 \(\color{ForestGreen}{L(s)}\ {\times}\ \color{blue}{L(s)}\ =\ \color{red}{O(s)}\)

这种可互换性意味着证明者可以改变执行并有效地证明一些其他的计算。阻止这种行为的一个很明显的方法是对不同的操作数使用不同的 \(\alpha\),具体来说我们修改为:

  • 设置
    • \(\ldots\)
    • 选择随机值 \(\alpha_{l}, \alpha_{r}, \alpha_{o}\) 而不是 \(\alpha\)
    • 计算相应的「移位」\(\left\{g^{\alpha_{l} l_i(s)}, g^{\alpha_{r} r_i(s)}, g^{\alpha_{o} o_i(s)}\right\}_{i \in \{1 \ldots n\}}\)
    • 证明密钥:\(\left(\left\{ g^{s^k} \right\}_{k \in [d]}, \left\{g^{l_i(s)}, g^{r_i(s)}, g^{o_i(s)}, g^{\alpha_{l} l_i(s)}, g^{\alpha_{r} r_i(s)}, g^{\alpha_{o} o_i(s)} \right\}_{i \in \{1 \ldots n\}} \right)\)
    • 验证密钥:\(\left( g^{t(s)}, g^{\alpha_{l}}, g^{\alpha_{r}}, g^{\alpha_{o}} \right)\)
  • 证明
    • \(\ldots\)
    • 将变量值赋给「移位」的多项式 $$g^{\alpha_{l} L(s)} = \prod_{i=1}^{n} \left( g^{\alpha_{l} l_i(s)} \right)^{v_i},\ g^{\alpha_{r} R(s)} = \prod_{i=1}^{n} \left(g^{\alpha_{r} r_i(s)} \right)^{v_i},\ g^{\alpha_{o} O(s)} = \prod_{i=1}^{n} \left(g^{\alpha_{o} o_i(s)} \right)^{v_i}$$
    • 构造证明:\(\left(g^{L(s)}, g^{R(s)}, g^{O(s)}, g^{\alpha_{l} L(s)}, g^{\alpha_{r} R(s)}, g^{\alpha_{o} O(s)}, g^{h(s)} \right)\)
  • 验证
    • \(\ldots\)
    • 检查变量多项式限制: $$e\left( g^{L}, g^{\alpha_{l}} \right) = e\left( g^{L'}, g \right), \quad e\left( g^{R}, g^{\alpha_{r}} \right) = e\left( g^{R'}, g \right), \quad e\left( g^{O}, g^{\alpha_{o}} \right) = e\left( g^{O'}, g \right)$$

现在就不能使用来自其他操作数的变量多项式了,因为证明者不知道 \(\alpha_{l}, \alpha_{r}, \alpha_{o}\)。

译者注:这里通过对 \(L(x)\)、\(R(x)\) 和 \(O(x)\) 分别进行 KEA 检查,解决了上文中提到的第二个缺陷——由于证明者生成的证明中只有计算结果,左操作数、右操作数、输出在计算中混用也不会被发现。

下节将会解决上文中提到的第三个缺陷——由于左操作数、右操作数、输出是分开表示的,相互之间的关系无法进行约束。