时间胶囊,意在信息被加密后,必须在特定的时间过后才能实现解密,而无论解密方或攻击者拥有多少计算资源。
一、物理世界的时间胶囊物理世界的时间胶囊,是指把物品封存在一个较小的空间(即称为“胶囊”),设定好未来开启的时间,只有到了预定的时间才能开启。一些设定时间比较长久的时间胶囊大多埋在地下或建筑物地基中。这里,我们介绍两个著名的时间胶囊。
1.1 纽约世博会时间胶囊
1938年9月23日,由美国西屋电气公司建造的“时间胶囊”被埋入了1939年纽约世博会举办地的地下,这个计划要到5000年后开启。它包含了物理学家爱因斯坦给5000年后人类的一封信《致后人书》。此外,在1964年纽约世博会,1970年日本大阪世博会上,也都埋下了时间胶囊。
1.2 乔布斯时间胶囊
1983年,在阿斯彭召开的一次设计者会议谢幕之后,会议组织者在当地埋藏了一个时间胶囊,官方称之为“Aspen Time Tube”。这个时间胶囊内的物品是由众多与会者共同捐献的,有魔方、姓名标签、穆迪·布鲁斯记录,甚至是啤酒等,但是由于前苹果CEO史蒂夫·乔布斯捐献了其在会议中展示的丽萨鼠标而最终以“乔布斯时间胶囊”命名[1]。乔布斯时间胶囊已按预定时间于埋藏30年后的2013年挖掘。
二、数字时间胶囊前面介绍的都是物理世界的时间胶囊。物理世界的时间胶囊靠物理的约束来“保证”打开时间。胶囊中,也可以放置信函、书籍等内容。如何在数字世界实现时间胶囊,即给未来写信呢?物理的时间胶囊,在打开之前,我们是看不到里面的情况的。数字世界的时间胶囊也应该实现“打开”之前看不到其中的信息!这就要求在“到期”之前,接收方或任何其他的人无法解读出信息内容。从而实现“将信息发送到未来”的目的。这个概念最早由May于1993年在一个邮件列表中公开提出[2],May将其称为“随时间释放的密码”--Timed-Release Crypto。
事实上,有一些简单的方法可以实现“将信息发送到未来”的目的,例如,通过把密钥托管给可信第三方,在指定的时间由第三方将密钥提供给信息接收方即可。这种依靠第三方托管密钥的方法当然有其不足,因为托管方可能作恶,提前向信息接收者提供密钥或者公布密钥。本文将介绍,如何通过技术手段,实现除信息发送方外的其他任何人无法提前于指定时间从密文解密出明文信息。我们也可以将这一技术称为随时间释放的密码或延时揭秘(timed-release crypt)、时间胶囊(Time Capsule)、时间锁定加密(Time-lock encryption)等。
三、基于hash迭代的时间胶囊本章讨论可具体实现的时间胶囊算法。
3.1 基本思想
要达到解密方不能提前解密,可以通过大量的计算来“消耗”解密方的时间,而且要使得即使是拥有大量计算资源的解密方也不可能提前解密出明文信息。当然,计算量的设计也要适中,如果只有拥有超级计算能力的人才能解密,则算法也不具有实际应用价值。
要做到拥有大量计算资源的人不具有明显优势,则算法应消除并行计算的优势,即设计为串行计算方式。这将使得任何人的计算都受到当前计算芯片能力的限制,而无法提前解密出信息。用Rivest[3]的话说就是一个妇女需要怀孕9个月才能生一个健康的宝宝,我们不能让两个妇女怀孕4.5月就生一个健康的宝宝。
然后以k作为加密密钥,对消息m进行加密,即:
c=E_k (公式2)
得到密文c,这里的加密算法可以是任何安全的对称密码算法(注:当然,用非对称密码算法也是可以的,只是这时候k的计算需要与解密密钥相关,感兴趣的读者可以自行设计。),如国密算法的SM4、SM7等。然后把k销毁,并把(c,r,T)发送给接收方。则接收方由r和T通过(公式1)计算出k,然后以k为密钥解密密文c,即:
m=D_k (公式3)
从而得到明文m。(注:事实上,如果k的长度等于消息m的长度,则加解密算法也可以直接用异或运算来代替,即将明文或密文与k异或即得密文或明文,如果k的长度大于m的长度,截取其与m等长的部分亦可。)
这里,T的大小可以根据需要调整,当T越大,则解密需要的时间就越长。
当然,对于同样的hash函数运算,在不同的软硬件上,其所需时间是不一样的。我们假设针对某个特定的hash函数,比如国密算法SM3,当前最快最高效的软硬件结合,在1秒内能够运行x次SM3运算,而我们需要设定的延迟时间为y(单位以秒计),于是设定T=x*y。则任何人不能以低于y的时间解密出明文,从而达到预定目的。
3.3 分析
上述方法看起来没有什么问题,然而,加密与解密信息所需的计算是相当的。解密需要多少计算量,加密也需要几乎同等的计算量。如图2所示,加密解密相当于在一个双向车道的道路上由一端到那一端,所经过的路径是等长的。
将(公式5)迭代计算T次(这里假设计算T次所需时间就是预设时间,T的大小可根据需要调整)即得:
其中,a为任何不等于p和q且小于n的正整数。
于是,消息发送方仅需通过如下2步计算,就可快速得到aT:* 计算:
b=2^T mod ∅ (公式11)
a_T=2^b mod n (公式12)
注:(公式11)和(公式12)的关系成立,是因为由(公式11)可知存在某个x使得下式成立:
2^T=x*∅+b (公式13)
于是
(2)投标
通常情况下,投标要求,一是必须在指定时间前提交投标,二是必须在指定时间后才公布投标内容。这中间会有一个时间差。现场投标可以通过物理检查的方法实现上述要求。但是电子投标的情况下,如果没有合适的安全措施,也许你的投标,会被人提前打开而泄露给你的竞争对手。通过时间胶囊,可以实现除加密者自己外没有人能够提前打开投标信息(如报价)。
(3)电子投票/选举
与投标类似,通常要求在特定的时间之前投出选票,但是不希望任何人在唱票之前获悉投票的内容。
其他应用还有抵押延迟支付、密钥托管等等。
除上述应用外,时间胶囊的思想还可以用于其他的一些密码学领域,如结合不经意传输(oblivious transfer)协议提高不经意传输的灵活性[5]。时间锁谜题也可以用于构造可验证延迟函数VDF,这是一种在区块链、博彩等领域具有广泛应用的延迟函数[6]。
六、时间胶囊的进一步发展6.1 存在的问题
上述时间锁定方案简单易懂易实现,适合非专业人士理解,却也还存在实用性差等一些问题,例如:
(1)不能匿名(如无记名投票需要匿名性);
(2)解密需要大量的计算;
(3)接收方需要及时启动计算,否则不能在预定时间完成解密;
(4)设计时难以较为准确地估计敌手的计算能力,尤其是未来的计算能力。
关于延迟时间的设计,对于较为短期的,可以较为精确,对于时间较长的设计,由于对技术发展的预测可能与实际的发生之间存在偏差,则实际解密的时间可能与设计存在差异。例如,1999年,Rivest [7-8]给出了一个公开的时间锁加密挑战,其最初设计的目标是使得该挑战要经过35年才能被解密。而在挑战公开刚好20年后即2019被破解,其中一个破解者(个人)从2016年初开始,采用基于软件的方法,花了3年零三个月的时间,另一组破解者(团队)则通过FPGA的方法,花了2个月的时间破解。Rivest承认,在设计之初,未考虑到FPGA发展如此之快。2019年,Rivest又给出了一个新的挑战[8],感兴趣的可以尝试破解。
针对上述缺点,学术界提出了一些新的更先进更实用的方法,如采用基于时间服务器的方法[10]、基于身份的方法[11]等。感兴趣的读者可以进一步阅读相关文献。
6.2 结合存证更具应用潜力
前面讲到的投标和遗嘱等问题,都需要有相应的时间证明,比如,要求在某个时间点之前提交标书。而对于遗嘱,由于立遗嘱的人可能会修改遗嘱,当出现两份不一致的遗嘱时,需要以最新的遗嘱为准。这些都需要提供时间证明。因此,时间胶囊与存在性证明相结合是必然的。区块链天生就是个良好的无中心/无需可信第三方的存证平台,结合区块链的时间胶囊必定更具应用潜力,学界也提出了一些算法,例如[12-15],建议进一步阅读。
参考文献
[1] “乔布斯时间胶囊“,百度百科,访问时间:2021.08
[2] May, T.C.: Timed-release crypto , http://cypherpunks.venona.com/date/ 1993/ 02/ msg00129.html. 访问时间:2021.08
[3] Rivest, R.L. LCS35 Time Lock Crypto Puzzle.,https://people.csail.mit.edu/rivest /pubs/ Riv19f.ppt 。访问时间:2021.08
[4] Rivest, R.L., Shamir, A.,Wagner, D.A.: Time-lock puzzles and timed-release crypto. Massachusetts Institute of Technology .
[5] Ma Xu, Xu Lingling, Zhang Fangguo. Oblivious transfer with timed-release receiver's privacy. Joumal of Systems and Software, 2011, 84: 460-464.
[6] Krzysztof Pietrzak, Simple Verifiable Delay Functions, https://eprint.iacr.org/2018/627.pdf.
[7] https://people.csail.mit.edu/rivest/lcs35-puzzle-description.txt, 访问时间:2021.08
[8] Lcs35 https://github.com/supranational/lcs35, 访问时间:2021.08
[9] Rivest, R.L., Description of the CSAIL2019 Time Capsule Crypto-Puzzle, https://people.csail.mit.edu/rivest/pubs/Riv19f.new-puzzle.pdf, 访问时间:2021.08
[10] Ian F. Blake and Aldar C-F. Chan, Scalable, Server-Passive, User-Anonymous Timed Release Public Key Encryption from Bilinear Pairing, https://eprint.iacr.org/2004/211,访问时间:2021.08
[11] Aldar C.F. Chan,Ian F. Blake, Scalable, Server-Passive, User-Anonymous Timed Release Cryptography, DOI:10.1109/ICDCS.2005.72
[12] Chae, S.W., Kim, J.I., Park, Y.: Practical time-release blockchain. Electronics 9
[13] Jie Xiong and Qi Wang, Anonymous Auction Protocol based On Time-released Encryption Atop Consortium Blockchain, IJAIT. Vol. 9, No.1, 2019.
[14] Wei-Jr Lai, Chih-Wen Hsueh, Ja-Ling Wu, A Fully Decentralized Time-Lock Encryption System on Blockchain, 2019 IEEE International Conference on Blockchain, DOI 10.1109/Blockchain.2019.00047
[15] Lijiao Chen, Kewei Lv and Dequan Li, Attack on Practical Time-Release Blockchain, to be published.