虽然以上过程稍显复杂,但是核心思想很简单,那就是 R 值是由 25 个 Storeman 节点共同确定的,每个 Storeman 节点贡献一部分加密的碎片,最终通过密码运算合成了 R 值。也就是实现了上面那句话描述的状态:既要你们协作一起干活,但是你们都不知道你们在干什么,其他人是谁。 可验证秘密分享可以确保: 任何两笔交易具有同样的 R 值是不可能发生的首先,R 值是有 25 个 Storeman 节点共同确定的,而不是由单一节点确定,理论上只要 25 个 Storeman 节点中存在 1 个诚实节点,那么 R 值就是随机的;其次,各节点对 R 值贡献的部分是通过真随机数发生器产生的,分布足够均匀。综合两点,两笔交易具有同样 R 值的情况只有在 25 个 Storeman 节点在两次签名中选择的随机数加和相等的时候才会发生,这一概率是 2-256,形象地说,比走在路上被陨石砸到脑袋的概率都小。 R 值对应的 k 是完全保密的在前文我们说过,k 一旦泄露,私钥就可以计算得到。在 Wanchain 锁定账户签名过程中,k 是由 25 个 Storeman 节点共同决定,但是由于秘密碎片是通过安全信道传输给各节点,因此没有任何一个节点能够恢复出完整的 k 值。也就是说,k 值是仅仅是一种理论中的存在,能够正常完成 MPC 签名过程,但是确实任何人都不可见的。 通过 1 和 2 两点的分析,得出 Wanchain 跨链桥的实例中锁定账户安全性是极高的,不会出现私钥泄露的情况。 那什么样的情况会导致出现 Anyswap 的两笔交易出现相同的 R 值?我们没有全部读完 Anyswap 项目的 MPC 这部分代码,只能通过上述的 MPC 的理论和实现机制推导这样的结论:1)要不是没有采用真正 MPC 的实现过程而只是挂了一个 MPC 的名义,还是由单一个体产生随机数 k,从而造成 k 重复出现的情况;或 2)代码在实现上出现了重大的代码问题,而这种重大技术失误在严谨的开发团队看来是完全不应该出现的。 (责任编辑:admin) |