是否存在一种方案可以在指定时间解锁压缩文件?

2021-01-31 22:29:41 +08:00
 milukun

刚才在解压一个 zip 的时候在想,压缩文件可以添加密码,可以防止非法获得文件的人解压。

但是如果里面放了一些存在实效性的内容,过了某个日期后,是否被无关人获得便无所谓了;或者说就是希望在某个时间后,文件可自动解锁

不纠结于 zip 、rar 等格式,只解决“指定时间后”便可以通畅访问文件。

🤔感觉需要考虑有网络、无网络、时间是否存在欺骗等问题。存在完美的方案吗?

p.s 如果你说发一个带密码的 zip,然后指定时间发条动态宣布密码,当我没问...可以关掉了(极端一点,因为你无法保证持有密码的人是否能持久化到那个时候😂)

2562 次点击
所在节点    问与答
38 条回复
wangxiyu191
2021-01-31 23:56:23 +08:00
需要一个当前时间点只有你知道,在指定时间之后所有人都能知道的信息。因为要保证严格遵守时间,所以感觉像 17 楼那样从物理这种基础层面找解决方案比较靠谱。毕竟能保证不被其他东西影响,仅和时间精确相关的东西真不多。。。。
neteroster
2021-01-31 23:57:13 +08:00
#17 说的方案也很有意思。其实都是利用强大的「第三方」做一种「保证」。对于我的例子,利用的是计算的复杂性,对于 #17,则是光速这个物理边界。
milukun
2021-02-01 00:19:09 +08:00
@felixcode #18 无法保证服务器不提前泄漏密码,或者到时间故意不发布密码。也就是说中心化的服务器无法解决可信度问题 🤔 因而真正有这个需求的用户并不会使用这个方案。
Hconk
2021-02-01 00:24:38 +08:00
lz 这个问题还挺有意思的,谷歌查了下在 stackoverflow 上有过相关的讨论。
链接: https://crypto.stackexchange.com/questions/606/time-capsule-cryptography

其中有个答案提到了这么一篇文章: https://www.gwern.net/Self-decrypting%20files

文章比较长,只看了个大概,有不少相关的论文对这个问题做过研究。
主要的思路可能还是从密码学角度对复杂问题的计算耗时进行估计,然后通过对这个复杂问题的难度进行控制,从而控制时间。
其中提到了一些尝试利用区块链与智能合约的技术,一个是区块链类似的链式 hash 对数据进行加密,以防止被分布式破解,这块没太看懂,可能理解有误。

一个是利用智能合约从经济惩罚的角度进行,通过在多个持有私钥的人存储一定加密货币到智能合约,如果有人提前泄漏则除了这个私钥存入的货币被销毁,其他人的原路返回,在时间到期之后所有人需要公开私钥以赎回货币并可以附带一些奖励,如果到期不公开则存入的货币将被销毁。

因为上面的文章太长,而且提到了很多东西,如果理解有误欢迎指出。有时间了再仔细看一遍。
bipy
2021-02-01 00:29:51 +08:00
随便想的:利用不同元素半衰期来计时
再胡说八道一些:如果世间一切过程均可模拟,那用代码完整模拟元素衰变
jybox
2021-02-01 00:38:21 +08:00
@neteroster

我也是想到了这个,这个概念可以叫「密码学时间胶囊( Time Capsule Crypto-Puzzle )」,实际上 RSA 算法的发明者之一就在 1999 年发布了这样一个时间胶囊:

https://people.csail.mit.edu/rivest/lcs35-puzzle-description.txt

最后在 20 年后的 2019 被人解开:

https://en.wikipedia.org/wiki/LCS35
jybox
2021-02-01 00:41:05 +08:00
发布这个时间胶囊时,预估的是 35 年后解开。
nvkou
2021-02-01 00:46:53 +08:00
要不就不用时间做铆钉。比如累计运行时间?也不用累死机器做强度高的运算,我就运行后台 cpu 时间片就行了。关机待机当然就不计入。除非联网修订统计量
imn1
2021-02-01 00:56:24 +08:00
跳出 zip 就有方案了
xianxiaobo
2021-02-01 09:05:30 +08:00
@touchwithe 从科幻的角度破解一下,假如坐飞船飞向这个遥远的星球,就能提前获得反射回波了。飞船飞的越快,提前获得的越早。
hikari2
2021-02-01 09:13:32 +08:00
设置版权可以么,版权到期后免费
shenlanAZ
2021-02-01 10:17:20 +08:00
关键字 “熵增” ,观测在密码密码有效期内的人类极其难以操作的物质的熵。
Hxu2M811KVSJqN75
2021-02-01 10:44:55 +08:00
自己找一台云服务器,部署一个 Web 服务。 然后拿当前时间和密钥运算,每 15 分钟或者 1 小时刷新输出一个哈希值。

要加密的区域,有个解密服务进程一直运行(也可以做成 cron 任务),定时检测那个云服务器上的 Web 输出的哈希值, 与自己预设的时间密钥运算后的哈希值一致,则自动进行解密。
Flymachine
2021-02-01 11:14:23 +08:00
这个问题在于是否存在一个可信的来源保证时间节点判断的准确性。
然而这太难了
NastyAir
2021-02-01 11:16:25 +08:00
这个问题比较有意思,这里初步有两个思路
1.在线服务器,将部分数据存储到服务器,通过服务器来判断时间。
2.离线
a)使用一个类似于加密狗之类的设备,通过这个设备来判断时间,不过这种方案修改本地时间就无效了。
b)定制一个固定时间的存储设备,超过存储时间存储介质就物理损坏。这个存储设备空间可以相对较小,只存储部分数据。
zerofancy
2021-02-01 12:36:17 +08:00
自动拉取一个开源项目的最新版本二进制,通过签名校验是否真实,通过大小确定大概时间。
著名的开源项目总是越发展越复杂吧……虽然这不确定性很高
liuzhaowei55
2021-02-01 13:02:02 +08:00
在指定时间后可以获取密码,还是需要有一个自己信任的第三方来操作
milukun
2021-02-01 15:02:56 +08:00
@bipy #25 哈哈 模拟元素衰变 👍

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/750085

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX