全部文章

阅读约 6 分钟

启用、停用、删除:每种身份状态分别意味着什么

停用或删除 CardanoWall 身份,只会改变你的账户如何使用它,而绝不会改变已经发布到 Cardano 上的记录的密码学有效性。

CardanoWall 为你账户里的每个身份赋予一个生命周期状态,用来控制该身份可以如何使用。**「启用」表示完全可用。「停用」表示该身份仍然列在账户里、仍能解密,但在你的账户中无法再用于新的签名、发布和发送。「删除」**根本不是一种状态——它是一个动作,会把该身份与你的账户解除关联,并把它在加密保险库中的条目移除;重新导入已保存的身份种子即可恢复访问。

这些账户层面的动作没有一个会改写区块链。你已经发布的证明会永远保持有效、可验证,无论发布它的身份处于哪种状态。

身份为什么要有生命周期?

因为密码学和账户是两个不同的层,而其中只有一个是永久的。

CardanoWall 身份建立在 Label 309 标准之上,在这个标准里,身份就是一件确切的东西:一个 32 字节的身份种子,以及由它派生出来的密钥。这个绑定是不可变的——一个种子就是一个身份,贯穿该身份的整个生命周期。不存在「在同一身份下轮换密钥」这回事。(如果这个概念对你还很陌生,可以先读 你的身份就是一个种子。)

但一个托管产品仍然要回答密码学无法回答的日常账户问题:

  • 这个身份是否还能用于新的记录?
  • 它是否还要为旧记录保持可见?
  • 它是否要继续解密收到的封存记录?
  • 它是否还要保持关联在这个账户上?
  • 在依赖一个旧身份之前,是否应该提醒用户?

生命周期状态在不触碰种子的前提下回答了这些产品层面的问题。它们是叠加在一个永不移动的密码学事实之上的账户记账。

启用状态的身份能做什么?

启用就是正常使用。一个启用的身份可以:

  • 签署新记录;
  • 发布证明;
  • 发送封存记录;
  • 解密发给它的封存记录;
  • 出现在身份切换器中;
  • 同步收件箱状态;
  • 在编辑器中被选用。

大多数身份在大部分时间里都处于启用状态。另外两种状态,是你针对某个特定身份所做的有意选择。

停用一个身份会做什么?

停用的含义是:在这个账户中,不要再用这个身份创作新内容。

被停用的身份仍然留在账户里,并保留它的读取权限。它仍然可以解密封存记录——包括在你停用它之后才送达的记录。它做不到的,是在你重新启用它之前,从该账户进行签名、发布或发送。这一点由服务端强制执行,而不只是把按钮置灰:发布路径在做任何事情之前,都会先检查该身份的状态。

在以下情形下,停用是正确的工具:

  • 团队正在切换到一个替换身份;
  • 某个密钥可能已经旧了,但尚未确认遭到泄露;
  • 某个身份应当暂时转为只读;
  • 某个工作流被暂停;
  • 一个共享身份应当停止从某个特定账户发布。

停用完全可逆。重新启用会把同一个开关拨回去,恢复完全可用。

为什么被停用的身份仍然能解密?

因为停用是你的账户知道、而发送方不知道的事情。

这个状态保存在 CardanoWall 的记录里,从不上链,也从不进入 Label 309 的链上传输格式。一个已经持有你接收地址的发送方,仍然可以向它加密一条封存记录,而只要这条记录在其他方面格式良好,Cardano 就会接受它。链上没有任何信号会告诉发送方停下来。

所以,只要你的账户仍然持有种子,它就仍然能打开送达的内容。阻止解密只会惩罚接收方,并可能让真正重要的入站证据丢失,却完全无法阻止发送方。因此停用把界限划在真正有用的地方:它阻止新的创作,而保留读取权限不变。

删除一个身份会做什么?

删除会把该身份从这个账户中移除——仅此而已。

当你删除一个身份时,两件事会一起发生。账户与身份之间的关联被移除,同时该身份的种子条目从你账户的加密保险库中移除,而保险库会重新加密给其余身份。关联会先被删去,因此即便保险库的重写需要重试,该身份也会立即从列表中消失、发布门禁也会立即关闭;一个背后没有关联的保险库条目是惰性的。

在此之后,这个账户就再也无法解锁或使用该身份——除非用户重新导入已保存的身份种子。

删除有意不去触碰的内容:

  • 它不会触碰任何其他账户与同一身份的关联。每个持有该身份的账户都保留自己独立的副本,所以你与同事共享的身份在他们的账户里照常可用。
  • 它不会从区块链上删除任何东西。
  • 它不会删除该身份已经发布的记录。

删除是这个账户对该身份保管权的终点。不存在「在所有地方销毁这个身份」的按钮,也不可能有这样的按钮——种子的每一个持有者都对它保有完全的掌控权,而 Cardano 上已签名的证明是永久的。

删除可以撤销吗?

可以——前提是你保存了种子。

因为身份种子就是身份,重新导入相同的种子会重建出完全相同的一对公私钥。账户随后就能再次关联到那个身份。在这一步中,CardanoWall 要求你证明自己确实持有种子(通过用种子派生的密钥签署一次性挑战),而不仅仅是知道公钥——公钥对任何人都是可见的。一旦这个证明通过校验,关联就会被恢复。

如果你没有保存种子,删除就可能让封存内容从那个账户永久无法读取。这正是为什么删除警告应当直白:只有在种子已备份到你掌控之处、或者你确实能接受从这个账户失去未来访问权时,才执行删除。(为什么身份种子依然重要 对此有更深入的讲解。)

生命周期状态会影响你已经发布的证明吗?

不会。这正是关键所在。

一份已发布的证明仅凭公开的链上数据就能验证。如果一条记录由某个身份签署,那么这个签名就是关于这些字节的一个数学事实——没有任何 CardanoWall 账户状态能让它消失。验证方直接从交易元数据中解析出签名者的公钥,并对照公开材料进行核验;过程中不会访问任何 CardanoWall 服务器,因此也读不到任何账户状态。

这对存在性证明(Proof of Existence)至关重要。它的承诺是:一条已发布的记录能够经受住服务状态、账户状态、乃至供应商本身的变动——你不必信任 CardanoWall 的服务器、域名或它是否持续存在,就能验证它。你的界面或许会显示某个身份在你的账户中已被停用或删除,但无论如何,验证方对待链上记录的方式都完全一致。(一份证明仍然有其局限值得理解——参见 证明不能证明什么。)

如果种子遭到泄露怎么办?

创建一个新身份。不要只依赖停用。

停用是服务层的控制手段,而不是密码学意义上的吊销。如果有人拿到了种子,他们仍然可以在你的账户之外、乃至完全在 CardanoWall 之外使用那个身份——种子在任何符合标准的工具中都能用,整个过程无需任何服务介入。在你的账户中拨动一个状态,对此毫无作用。

对于疑似种子泄露的情形:

  • 创建一个新身份,并保存新种子;
  • 在你的账户中停用旧身份;
  • 停止在公开场合宣传旧的接收地址;
  • 通过人们信任、能联系到你的渠道,重新发布新的公钥;
  • 在重要的场合,用新身份签署、发布能够取代受影响记录的新记录。

旧身份无法被「恢复未泄露」。种子是唯一曾赋予对它掌控权的东西,而泄露的秘密始终是泄露的。这与 移除通行密钥并不具有追溯效力 是同一个道理:服务层的动作可以切断未来的访问,却无法回到过去、撤销已经发生的暴露。

团队应该怎样使用这些状态?

把生命周期状态当作策略,而不是种子保管的替代品。

团队应当事先决定,一个身份在什么时候是:

  • 在日常工作中处于启用状态;
  • 在项目结束后被停用;
  • 在泄露调查期间被停用;
  • 在某位成员离开后从其账户中删除;
  • 在种子暴露后用一个新身份替换。

这些状态唯一做不到的,是吊销对种子的知悉。一位已离开、却仍持有那 32 字节的成员,对一个共享身份保有完全的掌控权,无论任何账户做什么都改变不了。把他们排除在外,意味着替换这个身份——一个只与留下来的人共享的全新种子——而不是停用旧的那个。共享团队身份 讲述了在多人之间运行同一个身份的取舍。

最安全的默认做法是什么?

先停用,再删除。

当你拿不准时,停用是更温和的选择。身份保持可见、继续解密,但新的使用被阻止,而你随时可以重新启用。什么也不会丢失。

只有在你确信以下至少一条成立时,才执行删除:

  • 种子已经备份在 CardanoWall 之外的某处;或
  • 这个身份确实不再需要了;或
  • 这个账户就是不该再拥有它的访问权了。

在没有种子备份的情况下删除,是人们把自己挡在自己封存内容之外、再也无法打开它最常见的原因。

简短版本

启用表示正常使用。停用表示在这个账户中只读——它仍然解密,但无法签名、发布或发送。删除表示与这个账户解除关联、并从它的保险库中移除,只能通过重新导入种子来恢复。

这些状态帮助你在 CardanoWall 内部管理身份。它们不会改变已经写入 Cardano 的密码学事实。身份种子始终是最后的恢复路径——所以在删除任何东西之前,先把它保存好。

延伸阅读

cardanowall-guidesidentitylifecycle