关于可重复使用地址的提案——第2部分

关于可重复使用地址的提案——第2部分

在这篇博文的第一部分中,我们讨论了引入可重用地址的目的。此外,我们提出在协议级别实现该功能的原因。在博文的这一部分,我们概述了我们的基本提案。

在您阅读本文之前,我们建议您首先了解IOTA种子如何用于生成和验证地址,相关文章请阅读Koen Maris和Eric Hop的一部分深度文章。对于本文,我们假设我们可以生成几乎无限数量的公钥/私钥对。

目前的方法(回顾)

每当我们从其中一个地址发出付款时,我们都会使用属于该地址的私钥对发出的信息进行签名。 节点可以通过根据地址本身验证交易签名来验证花费是由地址所有者发出的。 由于IOTA使用抗量子的签名方案,因此每当我们签署交易时,我们都会泄露私钥的某个部分。 这意味着我们不能多次使用同一个私钥,否则会损害该地址上的资金安全。

为了解决这个问题,我们建议用户:

  1. 永远不要使用同一地址发送两次以上的交易
  2. 在地址上支出小额资金时,所有的剩余资金应该同时发送到新地址(称为剩余地址)。从而允许将来从剩余地址安全地支出剩余资金。

IOTA钱包软件在后台自动处理以上要求,以便用户的资金保持安全。

关于可重复使用地址的提案——第2部分
当Alice从一个地址发送资金时,她的IOTA钱包会自动将该地址上的所有剩余资金移动到她钱包中新的安全的“剩余”地址,以便将来可以安全地支出。
关于可重复使用地址的提案——第2部分
确认支出后,剩余资金将存放在新的未发送过资金的地址上。这种机制以非常有效的方式确保了支出方的资金。但是,如果有人将资金发送到已经支出过的地址(由于发送方的失误,或者由于竞争条件,如前一篇文章中所讨论的那样),接收方可能仍然存在这种问题。

关于可重复使用地址的提案——第2部分

在这个例子中,Alice已经从一个地址向Bob发送了钱。 不幸的是,Dave随后将资金发送到这个已经使用过的地址。关于可重复使用地址的提案——第2部分

此地址的资金便不再安全,因为此地址的私钥已经部分暴露。请注意,Alice(接收方)无法阻止Dave将资金发送到不安全的地址。

新思路(我们的提案)

考虑到在不破坏IOTA的非常基本特征(即抗量子)的情况下,我们不能改变签名方案,我们必须设计另一种方法来为来自同一地址的连续支出行为使用新的私钥。

考虑到新的私钥始终与新的公钥相关联,这实际上意味着我们必须:

  • 逻辑上将地址与用于验证交易签名的公钥分开。
  • 引入一种方法来更改与地址关联的公钥,用于每次支出。

为实现这一目标,我们建议:

  1. 在交易元数据中引入新字段,允许我们更新地址的公钥并通知网络有关此更改的信息。
  2. 必须根据此不同的公钥而不是地址本身来验证此地址的下一次支出。

对于每笔支出,我们将生成一个新的公钥/私钥对,用于授权该地址的下一个花费,下一笔交易的公钥由当前交易的元数据设置。 发送交易的算法可归纳如下:

资金支出(来自某地址的第n次)

  1. 构建交易。
  2. 为下一次支出生成新的公钥/私钥对(pubkey_n,privkey_n)。
  3. 通过设置相应的字段,在交易元数据中包括新生成的密钥对的公钥:nextpubkey = pubkey_n。
  4. 使用属于上一个交易设置的公钥和私钥对交易进行签名:privkey_n-1(注意:第一笔支出将使用属于该地址的私钥)
  5. 广播交易。

关于可重复使用地址的提案——第2部分

涉及从可重复使用的地址发送的步骤。关于可重复使用地址的提案——第2部分

所有剩余资金都保留在同一地址,而不是移到剩余地址。 将来向这个地址汇款仍然是安全的。为了能够以这种方式处理事务,节点将只需在其分类帐状态中存储每个地址的附加字段,并在确认新的支出时更改更新的公钥。

分类帐状态将从按照以下模式更改:

关于可重复使用地址的提案——第2部分

变为:

关于可重复使用地址的提案——第2部分

注意:

  • 如果我们还没有从地址中支出资金,公钥就是地址本身(参见示例中的AddressA)。
  • KeyB7表示地址B的第7个公钥。
  • KeyX9表示地址X的第9个公钥。

打个比方

IOTA目前签署付款的方法可以与您家用钻石制作的门进行比较。它们非常安全,但遗憾的是它们也是透明的。 因此,每当您使用钥匙离开房子走向银行时,在外面等待的人可以“看到”您用来打开门的钥匙的一小部分。 在某些时候,他们可能会看到足以伪造密钥并访问您地址的内容。

为了防止这种情况发生,我们目前将我们所有的财物带到一个新的剩余地址(带有一个新的锁和一个新密钥),并且永远不会返回我们的旧地址。

相比之下,这种新方法相当于您在出门进行后“更换锁”的行为。 因此,即使有人看到您的旧密钥,他们也无法访问您的资金。此外,您还可以获得稳定的地址,以便人们向您发送信息或资金。

非常棒,让我们用起来吧! 等一下! 还没那么快......

虽然我们提出的解决方案确实解决了地址重用的问题,但它也衍生了一些新问题。

本博文的最后部分将研究这些问题并讨论他们的解决方案。 且听下回分解!

 

原文链接:https://blog.iota.org/a-proposal-for-reusable-addresses-part-2-d83d328ff1b3

tigermumu

专栏作者:tigermumu

个人简介:坚定不移的贯彻以推广和普及IOTA为核心一百年不动摇

作者邮箱 作者主页 Ta的文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注