通俗讲解 · 第 4 部分,共 7 部分
把文件密封起来,「等人认领」

一份普通的 Label 309 证明,把日期盖在指纹上,向全世界表明某样东西在某个时刻之前就已存在。但有时候,你在意的不只是时间,还想把真正的内容分享出去,只不过只分享给某一个特定的人,而且一刻也不早于对方自己选择打开它的那一刻。
Label 309 把这种做法称为密封证明,它恰好能做到这一点。你可以把一份打乱过的文件公开发布出去,指明发给一个或多个特定的人,再给它盖上一个公开的日期。所有人都能看到有样东西被密封了,以及究竟发生在什么时候,但内容会一直锁着,直到那个对的人用自己的密钥把它打开。
公共广场上的一只上锁箱子
设想一只结实、上了锁的箱子,被放在熙熙攘攘的广场正中央。任何路过的人都看得见它,也都能读到它出现的时间。他们可以把它拿起来、摇一摇、从各个角度打量,可这些都帮不上忙,没有那把对的钥匙,箱子就是打不开。
一份密封的 Label 309 证明就是这个样子:打乱过的内容就是那只箱子,公开的时间戳就是它被放到广场上的那一刻,而钥匙只属于你为之密封的那个人。
正是靠这种方式,一项发现可以在发表前先分享给合著者,一份食谱可以交给生意上的合伙人,一项发明可以向律师披露,一份机密合同可以递交给对方,每一份都盖着谁也伪造不了的日期,却只有那些本该读到它的人才读得了。
日期是公开的,内容是私密的
一份密封证明的两个部分,存放在完全不同的地方,而这正是它的精髓所在。
- 日期是给所有人看的。 它就存在 Cardano 区块链上、归在标签 309 之下,和任何一份普通证明所用的那份防篡改记录一模一样。谁也没法挪动它、倒填日期,或是悄悄把它抹掉。
- 内容只给特定的人看。 打乱过的文件本身单独存放,放在 Arweave 或 IPFS 这类永久的、内容寻址的存储上,对没有配对密钥的人来说,它就是一堆乱码。区块链上只保存一小份锁住的密钥副本,每位接收方一份:从不保存文件本身,也从不保存他们的姓名。
文件只加密一次,随后那一把锁会分别为你要发送的每一个人各包裹一份。所以一个路人能知道的,就只有一件事:某个时刻出现了一条密封的消息。他读不了它,记录上也没有任何名字能告诉他这是发给谁的。
一直「等人认领」
接下来这部分巧妙得不动声色。箱子上没有任何名牌,没有一栏「收件人」供陌生人、甚至供接收方本人去读。Label 309 在记录里根本不写接收方地址,这条消息就这样公开地等在那儿,像一封寄存在邮局、等对的人来取的信。
那个人又怎么知道有条消息正等着自己呢?他只需拿自己的密钥,去逐一试开每一份锁住的副本。要是有一份开了,那这条消息从头到尾就是给他的;要是一份都开不了,他什么也不会知道,甚至不会知道自己曾经有可能是接收方。只有本就该读它的人,仅凭试一试,就会发现它。(这里有一点要说精确:用经典锁时,哪怕一个陌生人手里已经握着某位疑似读者那一模一样的地址,也仍然无法确认某份副本就是发给他的;默认的后量子锁对普通旁观者隐藏的东西完全一样,但并不额外许下这一条更强的承诺。更完整的说明见 谁能读到它。)
多个人,多把密钥
你不必每次只为一个人密封文件,也可以把同一份密封证明同时发给好几个人,比如一位合著者和一位编辑,两位合伙人,或是一位客户和他的律师。
每个人都用自己的密钥来打开它。他们不共用某个秘密,也从不会看到彼此的密钥。在记录发布之前,那些锁住的副本甚至会被随机打乱顺序,于是一位接收方打开箱子之后,对还有谁被邀请进来一无所知,连这组人是怎么排列的都看不出。每位读者都有一条属于自己、安静而私密的进入方式。