通俗讲解

通俗讲解 · 第 4 部分,共 7 部分

把文件密封起来,「等人认领」

一份普通的 Label 309 证明,把日期盖在指纹上,向全世界表明某样东西在某个时刻之前就已存在。但有时候,你在意的不只是时间,还想把真正的内容分享出去,只不过只分享给某一个特定的人,而且一刻也不早于对方自己选择打开它的那一刻。

Label 309 把这种做法称为密封证明,它恰好能做到这一点。你可以把一份打乱过的文件公开发布出去,指明发给一个或多个特定的人,再给它盖上一个公开的日期。所有人都能看到有样东西被密封了,以及究竟发生在什么时候,但内容会一直锁着,直到那个对的人用自己的密钥把它打开。

公共广场上的一只上锁箱子

设想一只结实、上了锁的箱子,被放在熙熙攘攘的广场正中央。任何路过的人都看得见它,也都能读到它出现的时间。他们可以把它拿起来、摇一摇、从各个角度打量,可这些都帮不上忙,没有那把对的钥匙,箱子就是打不开。

一份密封的 Label 309 证明就是这个样子:打乱过的内容就是那只箱子,公开的时间戳就是它被放到广场上的那一刻,而钥匙只属于你为之密封的那个人。

正是靠这种方式,一项发现可以在发表前先分享给合著者,一份食谱可以交给生意上的合伙人,一项发明可以向律师披露,一份机密合同可以递交给对方,每一份都盖着谁也伪造不了的日期,却只有那些本该读到它的人才读得了。

日期是公开的,内容是私密的

一份密封证明的两个部分,存放在完全不同的地方,而这正是它的精髓所在。

  • 日期是给所有人看的。 它就存在 Cardano 区块链上、归在标签 309 之下,和任何一份普通证明所用的那份防篡改记录一模一样。谁也没法挪动它、倒填日期,或是悄悄把它抹掉。
  • 内容只给特定的人看。 打乱过的文件本身单独存放,放在 Arweave 或 IPFS 这类永久的、内容寻址的存储上,对没有配对密钥的人来说,它就是一堆乱码。区块链上只保存一小份锁住的密钥副本,每位接收方一份:从不保存文件本身,也从不保存他们的姓名。

文件只加密一次,随后那一把锁会分别为你要发送的每一个人各包裹一份。所以一个路人能知道的,就只有一件事:某个时刻出现了一条密封的消息。他读不了它,记录上也没有任何名字能告诉他这是发给谁的。

一直「等人认领」

接下来这部分巧妙得不动声色。箱子上没有任何名牌,没有一栏「收件人」供陌生人、甚至供接收方本人去读。Label 309 在记录里根本不写接收方地址,这条消息就这样公开地等在那儿,像一封寄存在邮局、等对的人来取的信。

那个人又怎么知道有条消息正等着自己呢?他只需拿自己的密钥,去逐一试开每一份锁住的副本。要是有一份开了,那这条消息从头到尾就是给他的;要是一份都开不了,他什么也不会知道,甚至不会知道自己曾经有可能是接收方。只有本就该读它的人,仅凭试一试,就会发现它。(这里有一点要说精确:用经典锁时,哪怕一个陌生人手里已经握着某位疑似读者那一模一样的地址,也仍然无法确认某份副本就是发给他的;默认的后量子锁对普通旁观者隐藏的东西完全一样,但并不额外许下这一条更强的承诺。更完整的说明见 谁能读到它。)

多个人,多把密钥

你不必每次只为一个人密封文件,也可以把同一份密封证明同时发给好几个人,比如一位合著者和一位编辑,两位合伙人,或是一位客户和他的律师。

每个人都用自己的密钥来打开它。他们不共用某个秘密,也从不会看到彼此的密钥。在记录发布之前,那些锁住的副本甚至会被随机打乱顺序,于是一位接收方打开箱子之后,对还有谁被邀请进来一无所知,连这组人是怎么排列的都看不出。每位读者都有一条属于自己、安静而私密的进入方式。

哪些是公开的,哪些不是

一份密封的 Label 309 证明向世人展示的,只有某条消息在某个时刻存在,再加上内容的指纹和大致有多少位接收方,仅此而已。在那把对的钥匙打开箱子之前,内容始终读不了,记录上也始终不会出现任何接收方的地址。而且,由于记录始终对明文的指纹作出承诺,打开它的接收方就能证明究竟是哪份内容被打上了时间戳。关于谁能读、谁读不了这些文件(包括经典锁与后量子锁之间唯一有差别的那条隐私保证),参见 谁能读到它;关于完整的构造方式,参见技术说明