主页 > imtoken官方下载最新版 > 加密货币中的“加密”:它会给你带来什么保障?

加密货币中的“加密”:它会给你带来什么保障?

imtoken官方下载最新版 2023-01-17 05:00:39

注意:本文是技术公司 Blockstream 的研究主管 Andrew Poelstra 在纽约举行的 MCC 会议上发表的演讲。他在演讲中从密码学的角度谈了数字签名的安全性,并指出签名机制的设计从理论和实际应用的角度来看是完全不同的。因此,对于很多号称能够创造神奇效果的项目,用户在选择时应该更加警惕。同时,在他看来,比特币正在以惊人的速度发展,因此从技术角度来看,适当放慢速度并没有错。

加密货币中的“加密”:到底能给你带来什么保障

以下为演讲全文:

我没有准备PPT。我想让这个演示尽可能地非技术性加密货币,我试图剥夺自己在屏幕上写方程式的能力。我演讲的主题是为什么加密货币中的一切都是奇怪和困难的。从数学和科学的角度来看,什么是密码学?实际效果如何?

加密

从历史上看,密码学的目的是加密,就像试图想出一些随机的东西一样。这里的安全性很简单:如果你有一个密钥,那么你就可以解密一些东西,而使用安全模型或风险模型来描述它的想法并没有真正的意义。

加密货币_构建自己的加密货币_艾尔发加密数字货币

在现代,密码学已经取得了长足的进步,包括零知识证明。零知识证明由仅陈述输入而不透露输入细节的计算机程序证明。

数字签名和加密是相关的。签名类似于使用两个密钥(公钥和私钥)进行加密。任何拥有公钥的人都可以加密数据,任何拥有解密密钥或私钥的人都可以解密数据。这也意味着加密数据可以通过不安全的渠道发送。

数字签名

数字签名正好相反——只有拥有私钥的人才能生成签名,只有拥有公钥的人才能验证签名。如果要讨论这个方案的安全性,那就更难做也更难定义了。我将在学术背景下讨论数字签名,然后我将讨论随机数生成的实际问题,然后如果我有时间,我将讨论如何将其扩展到一个多重签名设置。

艾尔发加密数字货币_加密货币_构建自己的加密货币

没有密钥的人不能伪造消息的签名和公钥。在学术上,将其正式化是相当困难的。这里的形式化意味着做出明确定义的状态声明。

经过多年来寻找这些定义的多次尝试 - 我们得出的结论是,如果不存在可以支配的多项式概率时间算法,则数字签名方案是安全的。我们将绝对排除任何算法的存在(只要其界限合理),绝对不能伪造。即便如此,根据定义加密货币,也很难证明其安全性。在现实生活中,有一个人知道密钥,这个人应该能够生成签名。那么如何明确排除所有内容但仍包括特殊情况?

假设你在一场比赛中有一个对手,并且你的对手无法赢得以下比赛:我随机拿了一个私钥和一个公钥,我把公钥给了你的对手。如果他能生成一个签名,那么这个签名就是伪造的,这个方案是不安全的。

直觉上,这是有道理的。您生成一个随机密钥,而对手没有私钥。对手知道的唯一密钥是公钥。然而,这个想法是错误的。该方案的问题在于,攻击者对该公钥有大量签名,而像 GPG 这样的东西可能已经签署了电子邮件或过去在区块链上的比特币交易。这个公钥包含一堆签名。现有的签名方案对于可以看到公钥的对手是安全的,但对于看到签名的对手是不安全的。这不应该是它的工作方式,但它仍然是。这东西很难。有一个山寨币有这个问题。有很多人声称可以解决不可能的问题。但大多数人都在对你撒谎,这才是这篇演讲的真正目的。

加密货币_艾尔发加密数字货币_构建自己的加密货币

假设这个对手更强,他可以向挑战者索取信息,挑战者必须在信息上签字。现在,对手不仅可以伪造信息,而且如果我们提供几乎所有可能的信息。我们希望提供尽可能多的信息。因此,签署任意消息就足够了。当对手伪造消息时,他必须在新消息上生成签名。

这样安全吗?这在传统安全概念下是安全的,也称为在选择信息攻击下的存在不可伪造性。但在更复杂的系统中,由于几个原因,这并不安全。我们在比特币中发现,通过允许对手仅在新消息上提供签名,我们排除了对手可能使用现有签名并在保持其有效性的同时对其进行调整的可能性。这未在模型中捕获。一旦消息被签名,谁在乎对手可以为同一消息生成不同的签名?

在比特币中,我们使用的 ECDSA 和 txid 都是基于这些签名。因此,攻击者有能力更改签名,允许他们更改交易的 txid,这将保持交易有效,但会使引用该 txid 的任何交易无效,因为 txid 具有延展性。所以我们需要一个更强大的模型。

我们现在需要一个对手,假设如果它在消息上提供签名,则消息可以相同,但签名也必须始终相同。这称为“强签名”。这安全吗?没有。

加密货币_构建自己的加密货币_艾尔发加密数字货币

假设你有一个签名方案——假设你使用的是 Schnorr 签名,这些签名特别容易受到攻击,例如 1989 年的原始 Schnorr 算法。攻击者拿走了你的一个签名,并且他没有对签名执行签名取而代之的是,以保留消息有效性但更改公钥的方式调整签名。他将获取一个根据公钥验证的签名,并生成与第一个公钥相关联的签名。使用比特币,您可以在某种程度上生成代数相关的密钥,例如 bip32 分层确定性生成的密钥。

理论上,有人可以生成签名,其他人可以得到签名的交易并在另一笔交易上创建签名,这是对不同密钥的代数攻击。

实际上,这对比特币来说不是问题,因为根据比特币的设计,在比特币交易中签名的数据不仅包括有关交易的所有细节,还包括以前的交易(及其公钥)。所以结果是你得到了看起来像 Schnorr 签名的东西(除了公钥),但事实证明这比“强签名”更安全,“强签名”是签名消息上的零知识签名和相同的签名钥匙。这比我想谈的要复杂得多。

在每一步中,我都在强化安全的概念,彻底消除伪造的可能性。我们花了一些时间探索这个设计,研究伪造行为以及它在现实世界中的表现。对于签名,我能够在舞台上描述一场安全的比赛,而不必到处使用图表和箭头。多重签名更复杂。

艾尔发加密数字货币_构建自己的加密货币_加密货币

当你谈论零知识证明时——包含一个零知识证明和一个模拟器以及所有不同的规则——试图证明这些复杂系统的唯一性,部署更理想的模型等等,直到你得到具体的东西。然而,在现实生活中,拥有可证明的安全性具有巨大的价值。

可证明的安全性

接下来我想谈谈可证明安全性的概念,尽管我告诉过你这很难。其中之一是随机数生成的概念。我将把话题从定义安全切换到实际部署安全系统。

基于 ECDSA 或 Schnorr,生成这些签名需要生成一致的随机数据。均匀随机性意味着您可以选择所有可能的随机数——有效地介于 0 和某个固定的大素数之间。如果您未能随机生成数字,并且您在多个签名中重复使用相同的数字或相同的随机数,您的硬币将被盗。这种情况已经发生过几次,比如有人用这个小问题破解了 ps3。这发生在 2012 年的比特币上,一些安卓钱包重复使用 nonce 并生成了一个错误的随机数生成器。最后,很多人丢失了钥匙和硬币。

不是随机数被重用。随机nonce是存在的,但是有些软件生成的nonce在某种程度上是有偏差的,比如前几位总是0。即使和随机数无关,只要有足够的签名,泄漏就足够了你的私钥。所以我们有这些在学术模型中被证明是安全的签名方案,但它们总是需要一致的随机性。直觉告诉我们,随机是猜不出来的,但是这里随机和均匀随机没有区别。区分这两者足以破坏学术证明,而在实践中你会丢失钥匙和硬币。

总结

这些事情既困难又微妙,你不应该对声称创造惊人事物的新项目感到兴奋而怀疑。比特币发展非常迅速。我们需要放慢脚步,保持警惕。