全部文章

阅读约 5 分钟

有了通行密钥,为什么身份种子依然重要

是的,即便你已经设置了通行密钥,仍然需要保存好身份种子。通行密钥只是日常解锁的便利手段;身份种子才是可携带的身份,它能在 CardanoWall、CLI、SDK 以及任何 Label 309 工具之间通用。

是的,即便你新增了通行密钥,仍然需要保存好身份种子。

通行密钥负责日常解锁,而身份种子本身就是你的身份。只要保存好种子,你就能在任何地方重建同一个 Label 309 身份:在 CardanoWall 中、在开源的命令行工具中、在各个 SDK 中,以及在任何实现了该标准的其他软件中。一旦你同时丢失了种子所有解锁保险库的途径,这个身份就再也无法使用了。

这并不是疏漏,而是「CardanoWall 从不托管你的身份」这一设计的直接结果。如果某个服务能够凭空把身份还给你,那它同样有能力冒充你。

什么是身份种子?

身份种子是一份 32 字节的秘密。每个 Label 309 工具都会从这一个值出发,确定性地派生出你身份所用的各项密钥,用来:

  • 为存在性证明记录签名;
  • 在经典接收地址上接收封存记录;
  • 在可选的后量子接收地址上接收封存记录;
  • 解密发给该身份的记录;
  • 在把身份导入新账户时,证明你确实持有该身份。

种子是这一切可携带的根。它不是 Cardano 钱包助记词。它不持有任何 ADA,不掌控任何资金,也不是支付钱包。它只是一个 Label 309 身份的根,别无其他。想更完整地了解身份如何从这 32 字节生长出来,参见你的身份就是一份种子

CardanoWall 为什么不干脆替我把种子藏起来?

因为彻底替你藏起来,就意味着这个服务掌握了替你恢复身份的权力,而这恰恰是整套设计拒绝扮演的角色。

如果 CardanoWall 能够在没有种子的情况下重置或重建你的身份,它就必须持有某个足以代你行事的秘密。这个秘密会让服务变成托管方:一个可能被攻破、被传唤、或干脆被关停的单点,一旦失守,你的身份也随之消失。

所以这种切分是刻意为之。CardanoWall 可以提供一个加密保险库,通行密钥可以打开这个保险库。但保险库只是便利层,而种子才是完全属于你自己的东西。

那通行密钥到底起什么作用?

它只负责打开便利保险库,仅此而已。

保存好种子之后,你就可以新增一个通行密钥。通行密钥让你的浏览器无需每次都粘贴种子,就能解锁加密的身份保险库。正是这一点让日常工作保持顺畅:

  • 为记录签名;
  • 解密收到的封存记录;
  • 在多个身份之间切换;
  • 撰写封存消息;
  • 在另一台已登录的设备上解锁,由你的通行密钥服务商同步过去;
  • 笔记本电脑丢失后重新登录,前提是你的通行密钥已同步。

保险库本身存放的是加密后的密文,而非明文种子,而且它只面向你的通行密钥寻址,因此服务无法读取它。想完整了解通行密钥能解锁什么、又不能做什么,参见通行密钥如何保护你的身份保险库

问题在于适用范围:一个通行密钥只绑定一个账户、一种平台环境,而种子不受此限。

种子能做哪些通行密钥做不到的事?

它能把身份带到任何地方。有了种子,你可以:

  • 把身份导入一个新的 CardanoWall 账户;
  • 把它带入其他 Label 309 软件;
  • 在命令行工具中使用它;
  • 在某个实现了该标准的第三方工具中使用它;
  • 有意地共享一个团队身份;
  • 在托管保险库不可用时重新登录;
  • 确认派生出的公钥与你预期的身份相符。

通行密钥解锁的是某一个账户的保险库,而种子重建的是身份本身。正因如此,CardanoWall 把种子视为权威备份,把通行密钥视为叠加在其上的缓存。

如果我丢失了种子会怎样?

这取决于你手上还剩下什么。

如果你仍有一个可用的通行密钥,且托管保险库在线,那就没问题:你可以打开身份,经过一道重新认证的步骤,从设置中再次显示种子。请把这当作终于该把它妥善保存到某个持久之处的时刻。

如果你同时丢失了种子每一种保险库解锁要素,这个身份就无法再使用了。你无法再用它为新记录签名,无法解密发给它的封存记录——包括丢失之后才到达的那些。而且 CardanoWall 没有任何人能重置它,因为 CardanoWall 没有任何人持有它。

你已经发布的证明则是另一回事。它们依然可以验证,因为验证只依赖公开数据:Cardano 上的交易元数据,以及在需要时的内容字节。种子的丢失,丝毫不会推翻你已经发布的证明。

如果有人窃取了种子会怎样?

把这个身份视为已泄露,并将其替换。

任何持有种子的人都能派生出同样的私钥。他们可以用你的身份签名,并解密发给该身份的封存记录,无论是过去的还是将来的。一旦种子被别人知道,就再也没有办法收回。

应对之道不是在同一个身份里「更换种子」。一份种子永久对应一个身份。正确的做法是:

  • 创建一个新身份;
  • 保存新种子;
  • 通过人们信任的渠道发布或分发新的公钥;
  • 在服务中停用旧身份;
  • 不再使用旧的接收地址;
  • 在有帮助的场合,发布取代旧记录的新记录。

正因如此,种子值得像对待任何其他高价值秘密一样小心保管。停用旧身份与删除旧身份之间的区别,值得你在真正需要之前就先弄清楚;参见活跃、已停用、已删除

我应该把种子存在哪里?

存在你本来就信任、用于长期保管秘密的地方。可取的选择包括:

  • 一款口碑良好的密码管理器;
  • 一份离线的加密归档;
  • 存放在安全场所的纸质副本;
  • 一套企业级的秘密管理流程;
  • 用于共享团队身份时,办公室保险箱里的一个封存信封。

避开那些容易让秘密泄露的地方:

  • 手机相册里的截图;
  • 普通的、未加密的笔记;
  • 聊天消息;
  • 邮件草稿;
  • 问题追踪系统或 wiki;
  • 公开文档;
  • 任何你可能下意识粘贴钱包助记词的地方。

合适的保护级别应与身份的价值相匹配。一个用完即弃的测试身份,和一个新闻编辑室的共享身份,不该用同样的方式来保管。

种子是钱包助记词吗?

不是,而且 CardanoWall 特意把两者区分得很清楚。

CardanoWall 刻意不为身份采用钱包式的单词列表。Label 309 身份种子以一段带校验和的字符串呈现,看上去与加密货币钱包备份毫无相似之处,正是为了让你不会把两者混淆。这个校验和能识别出输入错误与截断,却不必借用那种人们一看就联想到资金的单词网格格式。

切勿把 Cardano 钱包助记词粘贴到 CardanoWall。它不需要,也从不索取。身份种子只用于你的 Label 309 身份,仅此而已。

我应该多久接触一次种子?

越少越好。健康的模式是:

  1. 创建或导入身份;
  2. 保存种子;
  3. 新增一个通行密钥;
  4. 日常解锁都用通行密钥;
  5. 只在迁移、恢复或审计身份时,才显示或重新输入种子。

这样既能让种子真正可携带,又不至于让你每天都去摆弄一份原始秘密。日常之中,你只需轻点通行密钥;种子则安全地在后台等候。

简短版

身份种子就是身份,通行密钥只是便利解锁。

在你开始依赖某个身份之前,就先保存好种子。用通行密钥让日常工作保持顺畅。让种子远离不受信任的设备,也永远不要把它和钱包助记词混为一谈。如果 CardanoWall 能每天帮到你,却依然无法替代你的种子,那这套模型正按设计运转。

延伸阅读

cardanowall-guidesidentitypasskeys