阅读: 9
一、物理世界的时间胶囊
物理世界的时间胶囊,是指把物品封存在一个较小的空间(即称为“胶囊”),设定好未来开启的时间,只有到了预定的时间才能开启。一些设定时间比较长久的时间胶囊大多埋在地下或建筑物地基中。这里,我们介绍两个著名的时间胶囊。
- 纽约世博会时间胶囊
1938年9月23日,由美国西屋电气公司建造的“时间胶囊”被埋入了1939年纽约世博会举办地的地下,这个计划要到5000年后开启。它包含了物理学家爱因斯坦给5000年后人类的一封信《致后人书》。此外,在1964年纽约世博会,1970年日本大阪世博会上,也都埋下了时间胶囊。
- 乔布斯时间胶囊
1983年,在阿斯彭召开的一次设计者会议谢幕之后,会议组织者在当地埋藏了一个时间胶囊,官方称之为“Aspen Time Tube”。这个时间胶囊内的物品是由众多与会者共同捐献的,有魔方、姓名标签、穆迪·布鲁斯记录,甚至是啤酒等,但是由于前苹果CEO史蒂夫·乔布斯捐献了其在会议中展示的丽萨鼠标而最终以“乔布斯时间胶囊”命名[1]。乔布斯时间胶囊已按预定时间于埋藏30年后的2013年挖掘。
二、数字时间胶囊
前面介绍的都是物理世界的时间胶囊。物理世界的时间胶囊靠物理的约束来“保证”打开时间。胶囊中,也可以放置信函、书籍等内容。如何在数字世界实现时间胶囊,即给未来写信呢?物理的时间胶囊,在打开之前,我们是看不到里面的情况的。数字世界的时间胶囊也应该实现“打开”之前看不到其中的信息!这就要求在“到期”之前,接收方或任何其他的人无法解读出信息内容。从而实现“将信息发送到未来”的目的。这个概念最早由May于1993年在一个邮件列表中公开提出[2],May将其称为“随时间释放的密码”–Timed-Release Crypto。
事实上,有一些简单的方法可以实现“将信息发送到未来”的目的,例如,通过把密钥托管给可信第三方,在指定的时间由第三方将密钥提供给信息接收方即可。这种依靠第三方托管密钥的方法当然有其不足,因为托管方可能作恶,提前向信息接收者提供密钥或者公布密钥。本文将介绍,如何通过技术手段,实现除信息发送方外的其他任何人无法提前于指定时间从密文解密出明文信息。我们也可以将这一技术称为随时间释放的密码或延时揭秘(timed-release crypt)、时间胶囊(Time Capsule)、时间锁定加密(Time-lock encryption)等。
三、基于hash迭代的时间胶囊
本章讨论可具体实现的时间胶囊算法。
- 基本思想
要达到解密方不能提前解密,可以通过大量的计算来“消耗”解密方的时间,而且要使得即使是拥有大量计算资源的解密方也不可能提前解密出明文信息。当然,计算量的设计也要适中,如果只有拥有超级计算能力的人才能解密,则算法也不具有实际应用价值。
要做到拥有大量计算资源的人不具有明显优势,则算法应消除并行计算的优势,即设计为串行计算方式。这将使得任何人的计算都受到当前计算芯片能力的限制,而无法提前解密出信息。用Rivest[3]的话说就是一个妇女需要怀孕9个月才能生一个健康的宝宝,我们不能让两个妇女怀孕4.5月就生一个健康的宝宝。
(图片来自[3])
一个方法是直接设计一个串行的算法,而更好的方法是以一个串行的方法为基础,进行多轮的迭代,在上一轮没有完成前,无法开启下一轮,从而强制实现轮与轮之间的串行。多轮迭代的方法还有一个好处是,迭代轮数的调整正好对应所需时间的调整,非常灵活。
- 一个直观的解决方法
我们都知道,为了消除并行优势,就必须得采用串行或者迭代的方法,而hash函数的迭代运算正好满足这一要求[4]。假设,有消息m,我们选一个随机数r,然后对r做T次hash迭代,得到k:
(公式1)
然后以k作为加密密钥,对消息m进行加密,即:
(公式2)
得到密文c,这里的加密算法可以是任何安全的对称密码算法(注:当然,用非对称密码算法也是可以的,只是这时候k的计算需要与解密密钥相关,感兴趣的读者可以自行设计。),如国密算法的SM4、SM7等。然后把k销毁,并把(c,r,T)发送给接收方。则接收方由r和T通过(公式1)计算出k,然后以k为密钥解密密文c,即:
(公式3)
从而得到明文m。(注:事实上,如果k的长度等于消息m的长度,则加解密算法也可以直接用异或运算来代替,即将明文或密文与k异或即得密文或明文,如果k的长度大于m的长度,截取其与m等长的部分亦可。)
这里,T的大小可以根据需要调整,当T越大,则解密需要的时间就越长。
当然,对于同样的hash函数运算,在不同的软硬件上,其所需时间是不一样的。我们假设针对某个特定的hash函数,比如国密算法SM3,当前最快最高效的软硬件结合,在1秒内能够运行x次SM3运算,而我们需要设定的延迟时间为y(单位以秒计),于是设定T=x*y。则任何人不能以低于y的时间解密出明文,从而达到预定目的。
- 分析
上述方法看起来没有什么问题,然而,加密与解密信息所需的计算是相当的。解密需要多少计算量,加密也需要几乎同等的计算量。如图2所示,加密解密相当于在一个双向车道的道路上由一端到那一端,所经过的路径是等长的。
这在某些延迟时间不需要太长的应用中是可以接受的,如投标,通常只需要等待几小时或者几天开标。但是,对于那些要求延迟时间较长的应用,如遗嘱之类,是不合适的,因为没有人愿意花费数年或数十年的时间去加密一个遗嘱。
四、基于时间锁谜题的时间胶囊
上述基于hash迭代的时间胶囊,如果发送方希望接收方花多长时间解密,则自己也必须花多长时间来加密,这在实际应用中显然不合适。
Rivest等人[4]提出了使用“时间锁谜题”来实现时间胶囊的方法。假设消息发送方有待发送的明文消息m,其可以进行如下操作:
(1)类似于公钥密码算法RSA中的密钥生成方法,选择大素数p和q,计算n=p*q ;
(2)计算:
(公式4)
(公式5)
将(公式5)迭代计算T次(这里假设计算T次所需时间就是预设时间,T的大小可根据需要调整)即得:
(公式6)
(3)计算消息密文为明文与上述结果的异或:
(公式7)
(4)消息发送方将(n,T,c)发送给接收方,并销毁p,q和aT。
接收方收到(n,T,c)以后,按照公式(4)-(6)计算出aT,然后就可以计算密文c与aT的异或,即得明文:
(公式8)
按此方法,接收方计算aT的时间与T成正比,且只能是串行计算。
到这里,我们发现,消息发送方和接收方的计算量几乎是一样的,这与前面的hash迭代运算又有什么区别呢?事实上,由于发送方有关于p和q的信息,其不用照(公式5)那样计算T次,其有更为快速的方法计算出aT。设
(公式9)
我们知道,由欧拉定理,有:
(公式10)
其中,a为任何不等于p和q且小于n的正整数。
于是,消息发送方仅需通过如下2步计算,就可快速得到aT:
(2)* 计算:
(公式11)
(公式12)
注:(公式11)和(公式12)的关系成立,是因为由(公式11)可知存在某个x使得下式成立:
(公式13)
于是
(公式14)
由上述分析可知,发送方掌握了p和q的信息,其可以很容易的走“捷径”计算出密文,形象地表示如图3所示。而接收方,必须依照(公式5)按部就班地进行T次平方取模运算,形象地表示如图4所示,T的大小决定了接收方解密所需时间的长短。
因此,基于时间锁谜题的时间胶囊可以实现:1. 加密所需时间很短;2.解密所需时间(对应的计算量)由加密时设定。其较好的满足了时间胶囊的基本要求。
五、时间胶囊应用
时间胶囊有很多的应用场景,这里列举部分。
(1)遗嘱
例如,某人可能会提前立下遗嘱,而不愿意过早地暴露其遗嘱内容,担心会引起纠纷。
(2)投标
通常情况下,投标要求,一是必须在指定时间前提交投标,二是必须在指定时间后才公布投标内容。这中间会有一个时间差。现场投标可以通过物理检查的方法实现上述要求。但是电子投标的情况下,如果没有合适的安全措施,也许你的投标,会被人提前打开而泄露给你的竞争对手。通过时间胶囊,可以实现除加密者自己外没有人能够提前打开投标信息(如报价)。
(3)电子投票/选举
与投标类似,通常要求在特定的时间之前投出选票,但是不希望任何人在唱票之前获悉投票的内容。
其他应用还有抵押延迟支付、密钥托管等等。
除上述应用外,时间胶囊的思想还可以用于其他的一些密码学领域,如结合不经意传输(oblivious transfer)协议提高不经意传输的灵活性[5]。时间锁谜题也可以用于构造可验证延迟函数VDF,这是一种在区块链、博彩等领域具有广泛应用的延迟函数[6]。
六、时间胶囊的进一步发展
- 存在的问题
上述时间锁定方案简单易懂易实现,适合非专业人士理解,却也还存在实用性差等一些问题,例如:
(1)不能匿名(如无记名投票需要匿名性);
(2)解密需要大量的计算;
(3)接收方需要及时启动计算,否则不能在预定时间完成解密;
(4)设计时难以较为准确地估计敌手的计算能力,尤其是未来的计算能力。
关于延迟时间的设计,对于较为短期的,可以较为精确,对于时间较长的设计,由于对技术发展的预测可能与实际的发生之间存在偏差,则实际解密的时间可能与设计存在差异。例如,1999年,Rivest [7-8]给出了一个公开的时间锁加密挑战,其最初设计的目标是使得该挑战要经过35年才能被解密。而在挑战公开刚好20年后即2019被破解,其中一个破解者(个人)从2016年初开始,采用基于软件的方法,花了3年零三个月的时间,另一组破解者(团队)则通过FPGA的方法,花了2个月的时间破解。Rivest承认,在设计之初,未考虑到FPGA发展如此之快。2019年,Rivest又给出了一个新的挑战[8],感兴趣的可以尝试破解。
针对上述缺点,学术界提出了一些新的更先进更实用的方法,如采用基于时间服务器的方法[10]、基于身份的方法[11]等。感兴趣的读者可以进一步阅读相关文献。
- 结合存证更具应用潜力
前面讲到的投标和遗嘱等问题,都需要有相应的时间证明,比如,要求在某个时间点之前提交标书。而对于遗嘱,由于立遗嘱的人可能会修改遗嘱,当出现两份不一致的遗嘱时,需要以最新的遗嘱为准。这些都需要提供时间证明。因此,时间胶囊与存在性证明相结合是必然的。区块链天生就是个良好的无中心/无需可信第三方的存证平台,结合区块链的时间胶囊必定更具应用潜力,学界也提出了一些算法,例如[12-15],建议进一步阅读。
参考文献
[1] “乔布斯时间胶囊“,百度百科,访问时间:2021.08
[2] May, T.C.: Timed-release crypto (1993), 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 (1996).
[5] Ma Xu, Xu Lingling, Zhang Fangguo. Oblivious transfer with timed-release receiver’s privacy. Joumal of Systems and Software, 2011, 84(3): 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(4) (2020)
[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.
版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。