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

我的网站

当前位置: 主页 > 区块链

比特币算法进化为Schnorr签名算法是进步吗?(5)

时间:2021-01-19 15:29来源:未知 作者:admin 点击:
这种构造有 3 个问题,第一,从用户界面的角度来看,要进行交易,我们需要进行几轮通信,计算公共 R,然后-签名。有了两个私钥,只需一次访问冷钱包

这种构造有 3 个问题,第一,从用户界面的角度来看,要进行交易,我们需要进行几轮通信,计算公共 R,然后-签名。有了两个私钥,只需一次访问冷钱包就可以完成:我们在在线钱包上准备一个未签名的交易,选择 k1,将 R1=K1×G 与未签名的交易一起记下。然后我们将这些数据传送到冷钱包并签名。因为我们已经有了 R1,所以我们可以一次性在冷钱包上签署交易。从冷钱包中,我们得到了 R2 和 s2,并将其传输回在线钱包。在线钱包使用之前选择的 (k1, R1) 签署交易,结合签名并广播签名交易。这与我们现在的情况非常相似,但一旦添加第三个私钥,一切就会变得更加复杂。比方说,你有一笔财富,它是由 10 个私钥控制的,它们存储在世界各地不同的安全位置,然后,你需要进行一笔交易。目前,你只需要浏览所有这些位置一次,但如果你使用的是密钥聚合,则需要执行两次,以组装所有 RI,然后签名。在这种情况下,最好在不进行聚合的情况下保留单独的签名,然后我们就需要 3 轮通信:

1.选择一个随机数 ki 和相应的 Ri=ki×G,然后只告诉每个人其哈希 ti=hash(Ri),这样每个人都可以确定在学习了其他随机数之后你不会改变主意;

2.把所有的数字汇总起来,计算出共同的 R;

3.签名;

第二个问题是已知的恶意密钥攻击。无论是在论文还是这篇文章中,都有很好的描述,所以我不想详细讨论。其想法是,如果你的某个设备被黑客攻击(比如说,你的在线钱包),并假装其公钥是 (p1-p2),那么它可以用它的私钥 pk1 控制共享资金。一个简单的解决方案是,在设置设备时,需要使用相应的私钥对公钥进行签名。

还有第三个重要问题。不能使用确定性 k 进行签名。有一种简单的攻击方式,如果你使用确定性 K,它允许黑客获得我们的私钥。攻击看起来会是这样的:有人入侵了我们的笔记本电脑,并完全控制了两个私钥中的一个(例如 pk1)。我们可能觉得是安全的,因为我们的比特币需要来自 pk1 和 pk2 的聚合签名。因此,我们尝试像往常一样进行交易,准备一个未签名的交易和 R1 值,将它们转移到我们的硬件钱包并在那里签名。然后返回 (r2,s2) 和……我们的在线钱包发生了一些事情,它无法签名和广播。我们再次尝试,但我们被黑的电脑这次使用了另一个随机值 R1'。我们再次与我们的硬件钱包签署相同的交易,并将值 (r2,s2) 带回我们被黑的电脑。然后,糟糕的事就发生了,我们的比特币就丢失了。

在这个攻击中,黑客为同一笔交易获得一对有效的签名:(R1, s1, R2, s2) 和 (R1', s1', R2, s2'),这里 R2 是相同的,但 R = R1+R2 和 R'=R1'+R2 是不同的,这意味着黑客可以计算我们的第二个私钥:s2-s2'=(hash(P,R1+R2,m)-hash(P,R1'+R2,m))⋅pk2 and pk2=(s2-s2')/(hash(P,R1+R2,m)-hash(P,R1'+R2,m))。我发现这是密钥聚合最不方便的特性:我们需要在任何地方使用好的随机数生成器来使用密钥聚合。 (责任编辑:admin)

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