Skip to main content

Paillier

在多方计算(MPC)和阈值签名方案(TSS)中,Paillier 密码系统的同态性质可以被利用来实现安全的签名片段收集和签名聚合,从而生成最终的签名,而无需暴露各个参与者的私钥片段。这种方法在设计安全的分布式系统和保护参与者的密钥安全性方面非常重要。

使用 Paillier 密码系统的 MPC-TSS 流程

1. 签名片段的生成:

  • 在阈值签名方案中,每个参与者(或称为签名者)持有私钥的一个片段。
  • 使用 Paillier 加密,每个参与者可以独立地生成一个加密的签名片段。例如,在生成 RSA 或 ECDSA 签名的过程中,每个参与者可以对其私钥片段执行部分签名操作。

2. 签名片段的安全收集:

  • 签名片段需要被收集起来以生成最终的签名。利用 Paillier 的同态性,可以在不解密各个签名片段的情况下,对它们进行加法操作。
  • 例如,如果每个参与者生成的是一个加密的部分签名值,这些值可以直接相乘(因为 Paillier 支持加法同态,密文的乘法对应于明文的加法)。这样可以在不泄露各个部分签名的情况下进行聚合。

3. 签名聚合与最终签名的生成:

  • 通过将所有加密的签名片段聚合(即密文乘法),可以得到一个包含所有签名片段之和的加密结果。
  • 最终,只有在聚合完成后,才进行一次解密操作,以获得最终的签名结果。这样可以确保在整个过程中签名者的私钥片段不被暴露。

优势和应用场景

  • 隐私保护:参与者的私钥片段从未在网络中明文传输或被其他参与者看到。
  • 灵活性与可扩展性:支持动态添加或移除签名者而不需要重新生成整个密钥。
  • 抗篡改性:在不影响最终签名有效性的前提下,任何试图修改签名片段的行为都会在最终签名验证时被检测出来。

这种方法特别适用于需要高度安全和隐私保护的应用,如金融服务、分布式账本技术(如区块链)以及任何需要阈值签名的场景。通过 Paillier 密码系统的应用,可以有效地提高 MPC 和 TSS 方案的安全性和效率。

Site

https://github.com/okx/threshold-lib/blob/main/crypto/paillier/correct_key_ni.go

comment detail

partly ported from:

https://github.com/ZenGo-X/zk-paillier/blob/0c1b4cbfda1723d6938c4a447a6d9c7efe571693/src/zkproofs/correct_key_ni.rs

This protocol is based on the NIZK protocol in https://eprint.iacr.org/2018/057.pdf

for parameters = e = N, m2 = 11, alpha = 6370 see https://eprint.iacr.org/archive/2018/987/1539865653.pdf 6.2.3 for full details.