Core MPC TSS
MPC-TSS 理论基础
- 椭圆曲线 ECDSA、ED25519
- 零知识证明 Schnorr ZK
- 非交互式零知识证明 Schnorr NIZK
- 同态非交互式零知识证明 Paillier NIZK
- TSS
{2,2}Lindell 17’ - TSS
{2,n}Feldman's VSS - TSS
{2,n}Feldman's VSS 多项式-----拉格朗日插值 - HASH Commitment Schemes commit-open 用于
{2,2}{2,n}hash
MPC-TSS 流程:
1. 密钥生成
在密钥生成阶段,参与者生成密钥份额,以确保私钥不会集中在单一方手中。流程如下:
- 选择参数:选择一个大素数 和一个生成元 。
- 生成密钥份额:
- 每个参与者生成一个随机私钥份额 。
- 使用 Feldman's 可验证秘密共享(VSS)协议生成密钥份额。
- 计算公钥份额 ,其中 是生成元。
- 分发密钥份额:
- 每个参与者将密钥份额 和承诺值 分发给其他参与者。
- 每个参与者验证收到的密钥份额和承诺值的有效性。
- 计算公钥:
- 所有参与者共同计算公钥 。
2. 签名
在签名阶段,两个参与者共同生成签名,以确保签名过程的安全性和效率。流程如下:
- 消息准备:准备要签名的消息 。
- 生成随机数:
- Alice 和 Bob 分别生成随机数 和 。
- 计算 和 。
- 共同计算 。
- 计算 值:
- 给定 ,计算 。
- 部分签名计算:
- Bob 计算部分签名 。
- 将部分签名发送给 Alice。
- 完整签名计算:
- Alice 使用 Paillier 私钥解密部分签名 。
- 计算完整签名 。
- 签名验证:
- Alice 使用公钥验证签名 的有效性。
- 如果签名有效,输出签名;否则,签名失败。
3. 密钥份额刷新
如果密钥份额丢失或泄露,或者有新参与者加入,可以生成一组新的密钥份额。流程如下:
- 生成新份额:
- 每个参与者生成新的随机私钥份额 。
- 使用 Feldman's VSS 协议生成新的密钥份额。
- 分发新份额:
- 每个参与者将新的密钥份额 和承诺值 分发给其他参与者。
- 每个参与者验证收到的新密钥份额和承诺值的有效性。
- 计算新公钥:
- 所有参与者共同计算新的公钥 。
4. 密钥派生
密钥派生允许从主密钥生成子密钥,以便更好地管理和保护加密货币资金。流程如下:
- 选择路径:选择密钥派生路径,例如 。
- 派生子密钥份额:
- 每个参与者根据路径派生子密钥份额 。
- 计算子公钥份额 。
- 计算子公钥:
- 所有参与者共同计算子公钥 。
总结
MPC-TSS 方案通过多方合作生成和使用密钥,提高了安全性和效率。其核心步骤包括密钥生成、签名、密钥份额刷新和密钥派生。通过使用 Feldman's VSS、Paillier 加密和零知识证明等加密技术,确保了整个过程的安全性和可靠性。