织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

随机数「k」和「R」值(2)

时间:2021-08-23 13:48来源:未知 作者:admin 点击:
其中 m1 和 m2 是交易数据,而 sk 是账户私钥。 观察上面两个等式,其中 s1、s2、R 是签名数据,m1 和 m2 是交易数据,都是公开透明所有人都知道的,而未知

一文说透跨链桥技术中的核心:随机数「k」和「R」值

其中 m1 和 m2 是交易数据,而 sk 是账户私钥。

观察上面两个等式,其中 s1、s2、R 是签名数据,m1 和 m2 是交易数据,都是公开透明所有人都知道的,而未知数只有两个,即 A)随机数 k 和 B)账户私钥 sk。根据简单的计算,两个未知数,两个方程,那就可以求解得到未知数的值,这就是中学数学中的「解方程」!所以可以自然地求解得到私钥公式如下:

一文说透跨链桥技术中的核心:随机数「k」和「R」值

由于在 Anyswap 攻击事件中,黑客发现两次交易过程中的签名都使用了相同的随机数 k!所以黑客很容易的就计算出来控制跨链资产桥的私钥 sk 出来!然后就是拿着还原的私钥把跨链锁定合约里的所有资产转走!

那么问题来了:这个这么重要的随机数 k 值为什么会重复出现?接下来就引入为什么要用多方安全计算这样一个方案来产生随机数的原因。

真正采用 MPC 账户签名的话,k 值是不可能被泄露的!

一文说透跨链桥技术中的核心:随机数「k」和「R」值

相比普通账户签名,多方安全计算 MPC,Multi-party Computation (这里要特别说明,多方安全计算不是多重签名!)账户签名过程无疑是非常复杂的。因为签名参与者不再是单一控制人,而是 N 多个控制人合作完成签名过程,简单点类比,就是多人协作的过程。在普通账户签名过程,只需要在 R 值生成过程中使用真随机数发生器,基本可保证安全;而在 MPC 账户签名过程中,由于参与者不唯一,而且理论上认同可以存在恶意节点,因此 R 值的生成不再可以依赖单一用户生成,因为一旦该用户是恶意的,他将能够自己控制随机数 k,从而控制 R,进而计算得到 MPC 账户私钥,窃取资产。因此在 MPC 账户签名过程中,R 的生成必须满足以下 3 大原则:

  • 非单一用户生成
  • 任何人都无法获得 R 对应的 k 值
  • 随机数 k 的生成要足够的随机,满足无偏性和不可预测性

用一句通俗的话形容这个过程就是:既要一群人一起协作干活,又不能让你们知道你们在干什么!

一文说透跨链桥技术中的核心:随机数「k」和「R」值

典型的 MPC 的设计实例:可验证秘密分享- Wanchain MPC 账户 R 值安全性的核心保证

在 Wanchain 跨链桥机制中,跨链资产是由锁定账户保管,而锁定账户则是由 25 个匿名(这个数值可以根据需要扩展或者减少) Storeman 节点通过多方计算(MPC)的方式共同管理。在锁定账户签名过程中,R 值是由 25 个 Storeman 节点通过可验证秘密分享(PVSS)共同决定,保证不会发生两笔交易签名 R 值相同的情况。具体步骤如下: (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容