通俗讲解 · 第 3 部分,共 7 部分
你的密钥,一文说清

在你做出的每一个签名、收到的每一份密封文件背后,都只有一个小小的秘密。你不必管理满满一抽屉、每项任务各配一个的密码。在 Label 309 中,你只持有一样东西,一个主种子,仅仅 32 个随机字节,其余一切都由它推算而来。
可以把它想象成锁匠手里那把老式的总钥匙,用它能配出几把各有用途的钥匙。总钥匙由你自己锁好、收着,配出来的每一把各管一件事。你从不把总钥匙交出去,也永远不必这么做。
一个秘密,几样活儿
你的主种子,不过是一串别人都没有的随机数字。它本身并不绑定任何特定任务。你的设备会悄悄从它推算出你真正用到的那些密钥,每一次都从同一个种子出发,算出来的都是同样的密钥。Label 309 恰好推算出三把:
- 一把用于签名,在记录上盖上你个人的印章,让任何人都能看出它确实出自你手。(这一把用的是 Ed25519,正是 Cardano 钱包早已在用的那种签名。)
- 一把用于接收普通的密封文件,让别人能以一种只有你才解得开的方式把文件锁上。
- 一把用于接收面向未来的密封文件,思路相同,只是用上了后量子安全的密码学(详见 面向未来,抵御量子计算机)。
你不必分别生成这几把密钥,也不必一把把记下来。它们都以完全相同的方式,从同一个主种子推算出来,每次都一样。只要重现种子,就能重现其中每一把;一旦丢了种子,它们也就再也找不回来,所以它是最值得你格外守护的那一样东西。(至于种子怎么存放、怎么解锁,则交由各个应用自己决定,标准只规定密钥如何从它推算出来。)
可以分享出去的公钥
接下来这部分常常出乎人们意料。上面那几把工作密钥,每一把都由两个相互配对的部分组成:一半是私钥,一半是公钥。
私钥那一半始终留在你手里,和种子放在一起,从不离手。正是它们让你真正能够签名、能够打开密封的文件。
公钥那一半则不同,它们天生就是用来分享的。可以把公钥那一半看作你的地址。Label 309 甚至把用来接收的公钥写成了友好、可以直接复制粘贴的形式(它们以 age1… 开头,后量子那把则以 age1pqc… 开头)。你可以把它递给任何人,发到任何地方,印在名片上。有了它,别人就能:
- 核对你的印章。 当你为一份记录签名时,任何手里有你公钥那一半的人,都能确认这个签名确实出自你。
- 给你发来密封的东西。 任何拿到你公钥那一半的人,都能把文件锁起来,让它只有你配对的那一半私钥才解得开。
他们能做的也就这些了。公钥那一半无法用来伪造你的印章,也打不开任何密封给你的东西。把它交出去,跟把门牌地址告诉别人一样安全:别人可以给你寄信,却既搬不进你家,也没法冒你的名签字。
为什么要拆成几样不同的活儿
你可能会纳闷,为什么签名用一把密钥、接收密封文件又另用不同的密钥,而不是一把通用钥匙搞定一切。
道理和你不会拿同一把钥匙去开大门、开车、开保险柜一样。Label 309 在密码学层面把这几件事彼此隔开,这样某一把出了问题,也绝不会牵连其余几把。证明某样东西出自你手的那把密钥,和让别人给你发私密文件的那几把密钥,被严严实实地隔开了。它们全都追溯到同一个种子,却各自独立成立。
这样也让你为将来做好了准备。如果许多年后出现了一种更好的「锁」,你的设备可以从同一个种子推算出一把新密钥,不必拿一个全新的秘密从头来过。后量子接收密钥正是这样加进来的:同一个种子,无非多算出一把密钥。
唯一要看好的那样东西
看好主种子和私钥那一半;公钥那一半尽管自由分享。公钥那一半让全世界都能核对你的印章、给你发密封文件,却永远无法冒充你,也读不了你的信件。如果你想了解精确的运作机制,密钥参考文档把它们写得清清楚楚。