基本原理介绍可识别中止(IdentifiableAbort)所有已知的ECDAS阈值组签名协议的一个关键问题是,在中止的情况下,无法确定是哪一个参与方导致的签名失败,也就无法确定由谁负责任和受到惩罚,在本节中,我们将展示如何做到可识别中止。
所有已知的 ECDAS 阈值组签名协议的一个关键问题是,在中止的情况下,无法确定是哪一个参与方导致的签名失败,也就无法确定由谁负责任和受到惩罚,在本节中,我们将展示如何做到可识别中止。
需要注意的是,我们假设有一个广播信道,所以如果参与方作恶,每个参与方都会知道,这要求协议的每条消息都必须可靠地广播(这包括对 MtA 协议)。在这里,我们将注意力集中在:一方在正确的时间发送了正确形式的消息,但该消息的内容被精心设计成导致协议失败的方式,说白了就是假设消息传递和广播都是可靠的,忽略不可靠通信带来的影响,只专注协议本身以及消息内容。
这两个地方的中止都是可识别的,在 F-VSS 协议中,假设 $P_j$ 收到 $P_i$ 发来的秘密$f_i(j)$,$P_j$ 验证: $$ g^{fi(j)}\xlongequal{?}\prod{k=0}^{t-1} A_{ik}^{j^k} $$ 第 2 步中,若验证失败,则说明 $P_i$ 所公开的信息与它发来的秘密值不一致,$P_j$ 就可以投诉 $P_i$,并终止协议,在这种情况下可以确定 $P_i$ 是那个坏的参与者,并将其剔除出去,并重新运行密钥生成协议。不过这里可能存在歧义,即 $P_j$ 可能陷害 $P_i$,怎么解决,其实很简单,密钥生成协议是全局的基础操作,它的中止意味着没有生成密钥,更不会有密钥泄露的风险,一旦发生 $P_j$ 投诉 $P_i$ ,$P_j$ 必须公开它从 $P_i$ 接收的秘密分享值,其他参与者可以根据这个分享值验证 $P_j$ 是否陷害 $P_i$,如果 $P_j$ 陷害 $P_i$,则 $P_j$ 必须承担相应的责任或者被剔除出去。
第 3 步中,每个参与者的私钥分片 $x_i$ 是公开可验证的,只要是 ZK 验证失败就能确定作弊参与者,同样 paillier 密钥也是公开可验证的,所以第 3 步中止也是可识别的。
在签名协议中,以下是协议发生中止的情况:
Phase 2 若 MtA 和 MtAwc 范围证明不通过或者 MtAwc 的零知识证明不通过,则中止。
Phase 3 若关于 $\sigma_i,l_i$ 的零知识证明不通过,则中止。
Phase 4 若对 $D_i$ 的解承诺操作验证失败,则中止。
Phase 5 若对 $\bar{R_i}$ 的零知识证明验证失败,则中止。
Phase 5 若 $g\neq \prod \bar{R_i}$,则中止。
Phase 6 若对 $S_i$ 的零知识证明验证失败,则中止。
Phase 6 若 $y\neq \prod S_i$,则中止。
Phase 7 若消息 $m$ 的阈值组签名 $(r,s)$ 无效,则中止。
对于情况 1、2、3、4、6 识别作弊参与者是比较容易的,如果参与者给出一个错误的 ZK 证明或者打开一个错误的承诺,那么即可确定作弊者。
对于情况 8,若 $g = \prod \bar{R_i}, y = \prod S_i$ 且 $m$ 的阈值组签名 $(r,s)$ 无效,则说明参与者给出了错误的签名分片,此时需要确定是哪个参与者给出了错误的签名分片,此时需要 $P_i$ 广播它们的 $s_i=mk_i+r\sigma_i\text{ mod q}$,只需要公开可验证: $$ R^{s_i}=\bar{R_i}^{m}\cdot S_i^r \tag{1} $$ 如果上面的等式全部成立,则组签名必定验证成功,事实上 $$ R^s=R^{\sum s_i}=[\prod\bar{R_i}]^m\cdot [\prod S_i]^r=g^m\cdot y^r $$ 成立,所以通过等式 (1) 是否成立就能识别出作弊参与者。
对于情况 5、7 是比较复杂的,但从 $g \neq \prod \bar{R_i}, y \neq \prod S_i$ 发生是无法确定作弊参与方的。在较高的级别上,这意味着用于计算签名的分布式值是错误的,但它没有指示出哪里出了问题。实际上,这可能是由 MtA 协议本身的故障引起的,其中一个参与者向另一个参与方发送了错误的密文(Phase 2)。但是,即使 MtA 协议本身成功了,失败也可能是由于参与方后来透露的错误值与他们在 MtA 协议期间收到的值不一致造成的。如果参与方透露了错误的 $\delta_i$ 或 $\Gamma_i$(Phase 3 或 Phase 4),这将导致错误的 $R$,从而导致无效的签名,就会发生这种情况。这也可能是由于参与者在 Phase 3 或 Phase 6 中输入了错误的 $\sigma_i$(这将导致错误的 $s$)。以前的协议,如 GG18 ,无法有效地从类似的分布式验证检查中分离出不良参与者的身份。
为了证明参与者确实正确地运行了协议,有必要证明以下几点:
运行 MtA 协议时输入的 $k_i,\gamma_j$ 和运行 MtAwc 协议时输入的 $k_i,w_j$,这两者的 $k_i$ 必须是一致的。
运行 MtAwc 时,输入的 $w_j$ 公开值 $W_j=g^{w_j}$ 必须时一致的。
MtA 中的 $\gamma_j$ 与 Phase 4 中解承诺操作得到的值 $\Gamma_j$ 必须是一致的。
Phase 3 中公开的 $\delta_i$ 与 MtA 中输出的分享值必须保持一致,即: $$ \delta_i=k_i\gammai +\sum{j\neq i} \alpha{ij}+\sum{j\neq i} \beta_{ji} $$ 成立。
Phase 6 中公开的 $S_i$ 与 MtAwc 中输出的分享值必须保持一致,即: $$ \begin{aligned} S_i &= R^{\sigma_i}\ \sigma_i &=k_i\omegai +\sum{j\neq i} \mu{ij}+\sum{j\neq i} \nu_{ji} \end{aligned} $$ 成立。
情况 1,因为 MtA 和 MtAwc 协议的第一条消息确实是共享的,而且双方只发送一条消息,因此一致性得到了保证。
情况 2 ,由于运行 MtAwc,该情况也得到协议的保证,它保证 $P_j$ 输入的值确实与 $g^{w_j}$ 一致。
为了使协议可识别,只需要考虑情况 3、4、5 如何保证。
回想一下,当签名公开时,重要的是 $k$ 要保密,因为给定 $k$ 和使用 $k$ 的签名,可以计算私钥 $x$。类似地,如果一方公布了它的值 $s_i$ 和 $k_i$,那么这将泄露它的秘密共享 $x_i$,问题源于同时发布 $k_i$ 和使用 $k_i$ 的签名分片 $s_i$。然而,如果 $s_i$ 没有被发布,$k_i$ 就没有特殊的意义,并且确实可以在不泄露任何关于密钥信息的情况下发布。
现在考虑 Phase 5 中 $g\neq\prod \bar{R_i}$ 中止的情况。此时,签名协议中的值 $s_i$ 还没有被发布出去甚至没有被计算。事实上,在这一点上,各方明显地透露其值 $k_i$ 是完全可以接受的。对于临时值 $\gamma_i$ 也是如此。如果没有值 $s_i$ ,则不需要对值 $\gamma_i$ 进行保密。这意味着 $k_i$ 和 $\gamma_j$ 的 MtA 协议可以完全打开。这可以立即检查情况 3 和情况 4 是否满足,因为组成 $\sigma_i$ 的所有值都是公开的。
因此对于 Phase 5 中 $g\neq\prod \bar{R_i}$ 中止的识别可以执行以下操作:
每一方 $P_i$ 公开发布其所有的值 $k_i,\gammai,\alpha{ij},\beta_{ji}$ ( 遍历所有的 $j$ ) 以及公开在 MtA 协议期间用于加密这些值的随机值。
现在每一方 $P_j$ 都可以清晰地验证 $\delta_i$ 的正确性。若对于任何一方的验证不通过,则将中止归因于该方,并且识别协议终止。
现在把重点放在 Phase 6($y\neq \prod S_i$)的中止上。在这里,各方不能完全打开与 $k_i$ 和 $w_j$ 相关的 MtAwc 协议,因为 $w_j$ 是 $P_j$ 的长期私钥,而且与临时值 $k_i$ 和 $\gamma_j$ 不同,即使签名终止,值 $wi$ 也需要保密。然而,清晰地揭露值 $\mu{ij}$ 是安全的,并且可以检查指数中 $\sigma_i$ 的正确性,允许识别作弊的一方。下面是具体操作:
每一方 $P_i$ 发布 $ki$ 和 $\mu{ij}$ 作为 MtAwc 协议中相应密文的解密。
现在每一个其他方 $P_l$ 都可以验证 $k_i$ ( $P_i$ 发送给 $Pj$ ),$\mu{ij}$ ( $P_j$ 发送给 $P_i$ ),此外,对于所有 $j$,因为 $g^{w_j}$,$ki$ 和 $\mu{ij}$ 是公开的,现在任何人都可以使用方程 $g^{\mu_{ij}}=g^{w_jki}\cdot g^{-\nu{ij}}$ 计算出 $g^{\nu_{ij}}$。现在他们可以进行额外的计算: $$ g^{\sigma_i}=g^{w_iki}\cdot \prod{j\neq i}\mu{ij} \cdot \prod{j\neq i}\nu_{ji} $$
每个参与者 $P_i$ 使用 ZK 证明前一步计算的 $g^{\sigma_i}$ 与 $S_i=R^{\sigma_i}$ 之间的一致性。若对任何一方来说这都不成立,则认为该方是作弊方。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!