[另类想法] 如何保证一条消息十几年后才能被读取

2017-02-15 17:17:17 +08:00
 vertigo

今天在想如何把很长文章保存在 blockchain 上时想到的,可否把很长的文字纯 SHA256 加密(非对称加密)后保存在比特币区块链的 coinbase 中

这样保证了:

① 可以保存无限长的富文本内容

② 目前来说无法解读

③ 无需保存任何秘钥

④ 数学角度来讲,未来 30-40 年可以被解密

所以用来存一些历史真相(现在的)会不会很有意思呢?

9022 次点击
所在节点    分享创造
84 条回复
vertigo
2017-02-15 20:52:54 +08:00
@myar 哈哈哈哈哈想起了前段时间看到的『四轴飞行器捕获器』,活捉
rogerchen
2017-02-15 20:56:23 +08:00
hash ? mdzz ,还不如这个方案
http://baike.baidu.com/subview/4498321/4498321.htm
vertigo
2017-02-15 21:08:01 +08:00
@rogerchen 额,我的意思是保存一些奇特的内容,类似海贼王中的历史正文,保存这种敏感东西用任何公司都是不靠谱的
bianhua
2017-02-15 21:27:02 +08:00
如果你的条件是让消息在几十年之后才能取出( T > N ),而不是( T = N )的话, SHA256 是可以到的,不需要其他手段比如区块链。

考虑到 SHA256 的碰撞率大概是 2^(n/2)( https://crypto.stackexchange.com/questions/3049/are-there-any-known-collisions-for-the-sha-1-2-family-of-hash-functions ),如果你“加密”一条信息( 0~(2^64)-1 之间任意字节长),如果要暴力破解的话,需要也就是至多 2^(((2^64)-1)/2)次尝试。

假定计算机计算一次 SHA256 需要 10 毫秒(也就是一秒计算 100 个,一天 8640000 个,一年 3153600000 个),你大概需要……嗯, 10^(10^18.4434 ……)年(被省略的那些几十亿年已经不重要了,真的)。

这当然远远大于十几年。别忘了,你可以通过控制消息长度的方法来改变“解密”所需的时间,所以 SHA256 “加密”方法是可行的。

当然,这样也会有意外的情况,比如在这十几年间,有人发明了量子计算机(可以立即解出结果),或者(更可能的)有人发现了更快的 SHA256 碰撞算法(能赶在宇宙毁灭之前“解密”)。

小提示:根据当前的估计,宇宙约共有 10^82 个原子, 10^(10^18.4434 ……),啧啧啧,超强加密你能行……
am241
2017-02-15 22:31:19 +08:00
打印到纸上,和钴-60 放在一起,装进铁盒子焊死,或者封进混凝土里。
半衰期 5.2714 年,估计十年内放射性都还足够强到别人不愿意轻易打盒子的主意。。。
vertigo
2017-02-16 00:29:19 +08:00
@bianhua 很靠谱的计算,谢谢你。这个方法所依靠就是人类计算能力的进步。随意能够稳定保持十年以上不解密。十年以后谁都可以解密
vertigo
2017-02-16 00:29:46 +08:00
@am241 解铃还须系铃人,谁装进去的谁就有办法拿出来啊
Perry
2017-02-16 01:46:40 +08:00
能有这么强大的计算机 NP 问题应该都能迎刃而解
Kirscheis
2017-02-16 03:11:45 +08:00
对于大多数摘要算法(除了少数特殊的映射),能找到无数个原文来产生这段摘要。楼上已经有好几个人说过了,不能准确地用摘要还原出原文:这并不是因为还有任何的技术难题(比如算法、算力等)没有克服,而是由摘要算法的数学本质决定的,因为在不可逆映射中失去了信息。也就是说,这个所谓的“不能”不是人类能力达不到的那种“不能”(比方说 po 主所说的目前比特币的挖矿难度),而是本质上不能(就像热力学定律那样)。参见信息论。

举个例子,我可以定义一个简单的摘要算法:将二进制流的所有位相加取 2 的模,这样的算法将每个有奇数个 1 的二进制文件映射为 1 ,有偶数个 1 的二进制文件映射为 0 。这完全符合一个摘要算法的定义,但仅仅从 0 或者 1 却很难确定输入的原文到底是什么。上面这个算法可以看作是常见的复杂的标准密码学摘要函数的简化版本,但是可以从中看出,对于大量信息,在经过摘要之后必定丢失大部分信息。

对于从摘要还原出来的信息,最好的情况是能够给出“一列”可能的原文,一般来说这些“原文”经过解码后,能够符合编码规范而且符合人类自然语言规律的那部分原文是极其稀疏的,这就是为什么虽然看上去从数学上来说不能确定原文,但有时候却能够从摘要中还原出原文。实际上是因为文字编码规范和自然语言规律作为外部的信息(即一个很强的约束条件)补充了摘要中失去的信息量。(比方说如果知道原文是 unicode 编码,而某个原文出现了 unicode 编码中暂时还未使用的码,那么这个原文肯定就是错误的,即含有冗余的编码起到了校验的作用。相比较,如果原文是采用 hoffman 编码或者其它的某种满射的编码,那么就无法用编码规范作为约束条件补充失去的信息了)

如果想要保存的信息能够还原出来,不应该依赖上面的那种运气好的情况。也就是说,要完全地保险,就不应该使用摘要函数,而应该使用加密。最简单的方法是用一个较弱的 aes 密钥和加密轮数,虽然很弱,但是在现阶段用超算也是需要几年才能爆破,而在将来则可以很低成本地解密。这样可以实现 po 主要求的多年后可以解密,但是势必要足够的空间来存储至少与原文信息量相等的信息,就很难存到 blockchain 了。

另外有一种使用摘要函数的同时保证信息一般能被还原出来的方法,就是使用一个具有很大的冗余校验(或者纠错码)的编码,冗余越大,信息被还原出来的可能性也就越大。当冗余很大的时候,信息被还原出来的概率就趋近 1 。(在冗余最大的情况下,把整个信息完全映成一个码,但这样做就失去了编码的意义,因为需要和原文一样大的空间存储编码规则。。)这种方法看似行不通,因为这样只是相当于压缩文件,但是如果存储的是一篇人类可读的文章,那么实际上存在一个在人类中广泛流传的具有很强的校验能力的编码:自然语言规则。这个编码因为所有人类都知道,所以一般不用特别地存储在什么地方。通过这个自然的编码,就可以实现很大程度上的压缩,也就可以放心地用摘要函数也不担心信息丢失。当然,还原出来的信息需要人类自己来校验,效率是比较低下的。
dreamcog
2017-02-16 04:20:26 +08:00
事实上有种简单的方法可以做到让一条信息几十年后才可以阅读。
1 )购买一台几十年续费的服务器。
2 ) Linux 上写一段程序在 ssh 的时候,检查时间,如果时间大于某个时间才允许登陆。
3 )把信息写到服务器上某个文本内

几十年后还用服务器吗?
RqPS6rhmP3Nyn3Tm
2017-02-16 04:41:55 +08:00
最简单的方法,公证处证明,骑缝章,火漆印鉴封存,交给律师。
binux
2017-02-16 04:52:43 +08:00
@dreamcog #30 修改服务器时间。
vertigo
2017-02-16 05:20:44 +08:00
@Kirscheis 非常非常感谢!!!所以如果一定要这样做的话,首先要有一个极其严格编码及格式要求公之于众,这样能够很大限度上补足省却掉的信息么,再次感谢你的长文回复,非常受教
SharkIng
2017-02-16 06:46:39 +08:00
主要是这样做的意义何在?就拿 1L 的说法,银行卡密码里面 100 万(留给自己养老)也许 10 年后你取出来发现钱贬值了你可能连一碗面都买不了(过于夸张但是想想日元一碗面条好几百就可怕)
vertigo
2017-02-16 07:32:01 +08:00
@SharkIng 保存很重要的史实,历史应该算很重要的事情吧
WildCat
2017-02-16 07:42:41 +08:00
有个简单粗暴的方法:买一台 vps 足够长的时间,公私钥登录,全盘加密,进去设置一个程序 x 年后给某个 email 发私钥,然后破坏掉本地私钥,断掉 ssh 。
MC
2017-02-16 09:09:09 +08:00
技术不懂,至于历史真相,你知道哪些?说来听听。
Macbooker
2017-02-16 09:14:13 +08:00
我想起上次这里有个程序员家里被盗了,问用什么监控方案好。于是一大群人讨论了半天,就远程访问、视频存储深入交换了意见。

我就问了一句:为什么不买财险?

说这件事只是想告诉楼主,程序员不见得一定要用代码解决问题。就像你这个需求,并没有说清存什么。但是公证处+律师+银行保管箱绝对比你琢磨什么加密算法靠谱的多。
panlilu
2017-02-16 10:00:43 +08:00
@Kirscheis
有一个办法,用一个密码字符串去加密那篇文章( PBKDF2 强加密),然后用一个较弱的 aes 密钥和加密轮数加密这个密码字符串。
破解的方法就是破解哪个密钥,这样同时也没有信息大小的限制。

信息本体可以存在类似于各种网盘,插入奇怪的视频在 p2p 网站上流传等,只要备份量足够也能保证十几年后不丢失。
gimp
2017-02-16 10:10:22 +08:00
我也觉得这是个物理问题... 而不是数学问题...

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

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

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

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

© 2021 V2EX