今天在想如何把很长文章保存在 blockchain 上时想到的,可否把很长的文字纯 SHA256 加密(非对称加密)后保存在比特币区块链的 coinbase 中
这样保证了:
① 可以保存无限长的富文本内容
② 目前来说无法解读
③ 无需保存任何秘钥
④ 数学角度来讲,未来 30-40 年可以被解密
所以用来存一些历史真相(现在的)会不会很有意思呢?
1
appppap 2017-02-15 17:23:14 +08:00 via iPhone
银行卡密码吗?里面几十万?
|
2
imlonghao673 2017-02-15 17:28:14 +08:00 via Android
Ethereum 的合约
写进去设置 30 年后的某个区块链之后才可以读取 |
3
hellojinjie 2017-02-15 17:29:40 +08:00 via Android
sha256 是摘要,不是加密啊
|
4
imlonghao673 2017-02-15 17:32:15 +08:00 via Android
删掉链
@imlonghao673 |
5
Cbdy 2017-02-15 17:39:26 +08:00 via Android
显然,这不是一个数学问题,而是一个物理问题
|
6
wevsty 2017-02-15 17:40:40 +08:00
SHA256 不是一种加密算法。
|
7
Kilerd 2017-02-15 17:46:32 +08:00 via iPhone
6666
连 hash 算法个加解密算法都分不清的人。嗯。。。。。。 |
8
ZRS 2017-02-15 17:50:04 +08:00
sha256 是摘要算法 不能复原..
|
9
Tuisku 2017-02-15 18:00:53 +08:00 via Android
SHA256 不能被“解密” 只能尝试碰撞 这个时间可能也许似乎 比较 长
|
10
vertigo OP |
12
vertigo OP @hellojinjie 大意了
|
13
ipconfiger 2017-02-15 18:23:08 +08:00
@vertigo 加密和摘要是两个不同的玩意儿, 能不能不要这么无知, 还开口闭口数学, 神啊, 降个雷劈死这个异端吧
|
14
panlilu 2017-02-15 18:26:40 +08:00
lz 你这个叫存在性证明,也就是说,藏好一篇文章,然后把文章的 hash 打入 blockchain ;在未来的某个时间点公布这个文章并找出这个藏好的 hash 就能证明这篇文章在以前的那个时间点就写好了。
至于你说的解密?。。这个和解密一点关系都没 |
15
dallaslu 2017-02-15 18:49:27 +08:00
|
16
flyingghost 2017-02-15 19:04:17 +08:00
|
17
limhiaoing 2017-02-15 19:06:46 +08:00 via iPhone
@dallaslu
怎么穷举?首先不知道原文长度,另外摘要算法是 1 对多的映射,得到相同的摘要也没办法证明它就是原文。。 |
18
myar 2017-02-15 20:00:55 +08:00
把信息刻盘,用最高航速向地外发射一颗探测器,并命令他五年后返航
|
19
vertigo OP |
20
vertigo OP @limhiaoing 仔细想了一下应该再加一个公开的格式,比如要保密的信息只能有正文(正文中不能有标点符号一律用空格)然后再 coinbase 中规定字数和段落数,这样穷举时难度低很多
|
22
rogerchen 2017-02-15 20:56:23 +08:00
hash ? mdzz ,还不如这个方案
http://baike.baidu.com/subview/4498321/4498321.htm |
23
vertigo OP @rogerchen 额,我的意思是保存一些奇特的内容,类似海贼王中的历史正文,保存这种敏感东西用任何公司都是不靠谱的
|
24
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 ……),啧啧啧,超强加密你能行…… |
25
am241 2017-02-15 22:31:19 +08:00 5
打印到纸上,和钴-60 放在一起,装进铁盒子焊死,或者封进混凝土里。
半衰期 5.2714 年,估计十年内放射性都还足够强到别人不愿意轻易打盒子的主意。。。 |
26
vertigo OP @bianhua 很靠谱的计算,谢谢你。这个方法所依靠就是人类计算能力的进步。随意能够稳定保持十年以上不解密。十年以后谁都可以解密
|
28
Perry 2017-02-16 01:46:40 +08:00 via iPhone
能有这么强大的计算机 NP 问题应该都能迎刃而解
|
29
Kirscheis 2017-02-16 03:11:45 +08:00 4
对于大多数摘要算法(除了少数特殊的映射),能找到无数个原文来产生这段摘要。楼上已经有好几个人说过了,不能准确地用摘要还原出原文:这并不是因为还有任何的技术难题(比如算法、算力等)没有克服,而是由摘要算法的数学本质决定的,因为在不可逆映射中失去了信息。也就是说,这个所谓的“不能”不是人类能力达不到的那种“不能”(比方说 po 主所说的目前比特币的挖矿难度),而是本质上不能(就像热力学定律那样)。参见信息论。
举个例子,我可以定义一个简单的摘要算法:将二进制流的所有位相加取 2 的模,这样的算法将每个有奇数个 1 的二进制文件映射为 1 ,有偶数个 1 的二进制文件映射为 0 。这完全符合一个摘要算法的定义,但仅仅从 0 或者 1 却很难确定输入的原文到底是什么。上面这个算法可以看作是常见的复杂的标准密码学摘要函数的简化版本,但是可以从中看出,对于大量信息,在经过摘要之后必定丢失大部分信息。 对于从摘要还原出来的信息,最好的情况是能够给出“一列”可能的原文,一般来说这些“原文”经过解码后,能够符合编码规范而且符合人类自然语言规律的那部分原文是极其稀疏的,这就是为什么虽然看上去从数学上来说不能确定原文,但有时候却能够从摘要中还原出原文。实际上是因为文字编码规范和自然语言规律作为外部的信息(即一个很强的约束条件)补充了摘要中失去的信息量。(比方说如果知道原文是 unicode 编码,而某个原文出现了 unicode 编码中暂时还未使用的码,那么这个原文肯定就是错误的,即含有冗余的编码起到了校验的作用。相比较,如果原文是采用 hoffman 编码或者其它的某种满射的编码,那么就无法用编码规范作为约束条件补充失去的信息了) 如果想要保存的信息能够还原出来,不应该依赖上面的那种运气好的情况。也就是说,要完全地保险,就不应该使用摘要函数,而应该使用加密。最简单的方法是用一个较弱的 aes 密钥和加密轮数,虽然很弱,但是在现阶段用超算也是需要几年才能爆破,而在将来则可以很低成本地解密。这样可以实现 po 主要求的多年后可以解密,但是势必要足够的空间来存储至少与原文信息量相等的信息,就很难存到 blockchain 了。 另外有一种使用摘要函数的同时保证信息一般能被还原出来的方法,就是使用一个具有很大的冗余校验(或者纠错码)的编码,冗余越大,信息被还原出来的可能性也就越大。当冗余很大的时候,信息被还原出来的概率就趋近 1 。(在冗余最大的情况下,把整个信息完全映成一个码,但这样做就失去了编码的意义,因为需要和原文一样大的空间存储编码规则。。)这种方法看似行不通,因为这样只是相当于压缩文件,但是如果存储的是一篇人类可读的文章,那么实际上存在一个在人类中广泛流传的具有很强的校验能力的编码:自然语言规则。这个编码因为所有人类都知道,所以一般不用特别地存储在什么地方。通过这个自然的编码,就可以实现很大程度上的压缩,也就可以放心地用摘要函数也不担心信息丢失。当然,还原出来的信息需要人类自己来校验,效率是比较低下的。 |
30
dreamcog 2017-02-16 04:20:26 +08:00 via iPhone
事实上有种简单的方法可以做到让一条信息几十年后才可以阅读。
1 )购买一台几十年续费的服务器。 2 ) Linux 上写一段程序在 ssh 的时候,检查时间,如果时间大于某个时间才允许登陆。 3 )把信息写到服务器上某个文本内 几十年后还用服务器吗? |
31
RqPS6rhmP3Nyn3Tm 2017-02-16 04:41:55 +08:00 via iPhone
最简单的方法,公证处证明,骑缝章,火漆印鉴封存,交给律师。
|
33
vertigo OP @Kirscheis 非常非常感谢!!!所以如果一定要这样做的话,首先要有一个极其严格编码及格式要求公之于众,这样能够很大限度上补足省却掉的信息么,再次感谢你的长文回复,非常受教
|
34
SharkIng 2017-02-16 06:46:39 +08:00
主要是这样做的意义何在?就拿 1L 的说法,银行卡密码里面 100 万(留给自己养老)也许 10 年后你取出来发现钱贬值了你可能连一碗面都买不了(过于夸张但是想想日元一碗面条好几百就可怕)
|
36
WildCat 2017-02-16 07:42:41 +08:00 via iPhone
有个简单粗暴的方法:买一台 vps 足够长的时间,公私钥登录,全盘加密,进去设置一个程序 x 年后给某个 email 发私钥,然后破坏掉本地私钥,断掉 ssh 。
|
37
MC 2017-02-16 09:09:09 +08:00
技术不懂,至于历史真相,你知道哪些?说来听听。
|
38
Macbooker 2017-02-16 09:14:13 +08:00 1
我想起上次这里有个程序员家里被盗了,问用什么监控方案好。于是一大群人讨论了半天,就远程访问、视频存储深入交换了意见。
我就问了一句:为什么不买财险? 说这件事只是想告诉楼主,程序员不见得一定要用代码解决问题。就像你这个需求,并没有说清存什么。但是公证处+律师+银行保管箱绝对比你琢磨什么加密算法靠谱的多。 |
39
panlilu 2017-02-16 10:00:43 +08:00 1
@Kirscheis
有一个办法,用一个密码字符串去加密那篇文章( PBKDF2 强加密),然后用一个较弱的 aes 密钥和加密轮数加密这个密码字符串。 破解的方法就是破解哪个密钥,这样同时也没有信息大小的限制。 信息本体可以存在类似于各种网盘,插入奇怪的视频在 p2p 网站上流传等,只要备份量足够也能保证十几年后不丢失。 |
40
gimp 2017-02-16 10:10:22 +08:00
我也觉得这是个物理问题... 而不是数学问题...
|
41
ipconfiger 2017-02-16 10:21:03 +08:00
看来卤煮仍然是处于一种自觉明白其实懵逼的状态而不能自拔
|
42
ipconfiger 2017-02-16 10:28:20 +08:00
想起了十几年前读书那会儿, 有个脑壳比较方的同学, 在学会了用 MD5 后开始钻研破 MD5 的密码, 有一次运气实在好碰巧碰撞了一个还正好是原文, 于是这位兄台的脑洞就开了, 惊呼找到了一个超级牛掰的压缩算法, 然后我丢了个 1G 的视频文件生成的 MD5 给他, 让他思考了一个学期的人生......
|
43
qianguozheng 2017-02-16 10:46:14 +08:00
区块链的发散思考阿。 可惜长文大神已经说明不能用在区块链了。
|
44
quxiangxuanqxx 2017-02-16 10:58:51 +08:00
把一个人弄死,然后几十年后,把他复活
|
45
imn1 2017-02-16 10:58:55 +08:00
|
46
SharkIng 2017-02-16 11:08:49 +08:00
@vertigo #35 保存历史的话也没有必要各种加密还要放在 Blockchain 中(隐藏)啊?还要是年内不能阅读。感觉除非是非常不想让人知道的事情,但是不想让人知道的话何必保留呢
|
47
qdwang 2017-02-16 11:14:40 +08:00
有可能碰撞成功的,是另一篇文章。。。这样没有做到原文唯一性
|
48
grayon 2017-02-16 11:48:22 +08:00
根据量子力学,要做到碰撞成功可以秒解,只不过要看你在不在那条世界线上了
|
49
dallaslu 2017-02-16 11:49:39 +08:00
|
50
macroideal 2017-02-16 11:49:49 +08:00 via iPhone
中国邮政 寄到南极 无人查收,再打回来
|
51
tabris17 2017-02-16 11:54:25 +08:00
散列算法不是加密算法
|
52
shower 2017-02-16 12:24:10 +08:00
原文是不唯一的啊,楼主脑子还是没转过来啊
|
53
54c3 2017-02-16 13:19:32 +08:00
|
55
Micky 2017-02-16 13:51:56 +08:00
那么,量子通信的应用离普通人还有多远?
基于个人判断,潘建伟给出了一个量子通信技术普及的“时间表”: 5 年左右很多机要部门开始用, 10 年左右金融业、银行等大机构开始使用, 15 年的时间或许走进千家万户。“届时,每个人的家里、手机上或许都会有一个量子加密晶片,银行转款、电子账户等的涉密操作,都不用担心被盗用或者攻击。” ---- 量子加解密还远吗,到时一切非量子的加密方案都不安全了 |
56
dallaslu 2017-02-16 14:46:33 +08:00
@vertigo 假设未来计算机性能大大提升,但算力仍然有限,那么你的摘要信息是否会被注意到呢?很有可能被淹没了。除非你能明确证明内容的价值,比如获得原文后,能得到大量的比特币奖励。
|
57
Yc1992 2017-02-16 15:28:49 +08:00
用公钥加密后再用一个口令(只有你自己知道,背下来)加密私钥,然后保证几十年都不会忘记那个口令即可,大猫同学觉得这样怎么样。
|
58
shyrock 2017-02-16 15:48:27 +08:00
这个问题很棒。
我认为理论上的必须几十年后才能解读的信息,必须绑定时间轴上几十年后的一个独一无二的特征,只有在那个时刻你获取了特征的数据,才能解读现在的信息。比方说你的信息是‘刷’‘牙’两个字,具体解读为‘刷牙’还是‘牙刷’依赖于 50 年后某期彩票大奖号码的奇偶校验值。 |
59
Reign 2017-02-16 15:57:24 +08:00
把这个字符串设置成密码,让你老婆用这个密码到银行存定期十几年,十几年后取完钱了让她告诉你密码
|
61
mikeven 2017-02-16 16:44:44 +08:00 via iPhone
写在纸上,,,用 ems 寄给自己。
|
62
rrfeng 2017-02-16 16:59:22 +08:00
这个问题是个好问题,可惜受限于楼主的知识水平……(不是讽刺和嘲笑
我觉得可以从 2 个角度来讨论: 1. 物理角度:造一个绝不可能在一定时间内被打开的装置。稳定计时装置是可以有的,放射性元素衰变就可以标记时间了。问题是怎么做到不能提前打开。 2. 算法角度:跟物理方式正好相反,如何确定某个事件一定在未来某时刻发生。 |
64
rekulas 2017-02-16 19:52:20 +08:00
目前的难度也是 08 年那时无法想象的
怎么得出来的? 上个世纪的号称很不安全的 md5 算法,现在都没任何超算敢去打击报复 |
65
am241 2017-02-16 20:12:21 +08:00
或者把非电子文本放到卫星上发射到一个绕日轨道上,然后卫星慢慢变轨回收。。。
就像隼鸟号一样。。。 也不排除这几年里忽然点出来 UFO 科技,不过总比破解各种加密算法难多了 |
66
abugs 2017-02-16 21:02:23 +08:00
加密!设置运行时间
|
67
jybox 2017-02-16 21:12:40 +08:00
问题是一个很有趣的问题,不过楼主的想法有两个问题:
一是很多人已经提过了,散列算法的解不是唯一的,你其实可以选择一个对称加密算法来做这个事情。 二是散列和对称加密都是可以并行计算的,也就是说如果有人有足够的计算力,靠堆机器,也是可以提前求得解的,可以考虑使用一种无法并行破解的算法来进行加密,这样只有单个 CPU 的计算能力达到一定程度才能解密,更符合楼主的初衷。 |
68
zts1993 2017-02-16 21:15:09 +08:00
所以我问一个为问题啊: 时间是什么?
|
69
vertigo OP @MC 程序员是来开发方法的啦,内容历史可以由任何人提交的。或者保存内容为类似中情局的『秘密档案』本身就是会在几十年后解密的。
|
70
vertigo OP @Macbooker 我也听过一个有趣的故事,联合利华买了几百万的设备保证香皂无空盒,乡镇企业买了大电风扇。这类问题解法的确无可厚非,但是如果家里东西不只是钱财呢?比如婚戒,比如过世亲人的遗物。保险应该没法找到吧。同理保存信息有无数种办法,这里只是考虑一个非常非常极端的方式
|
71
vertigo OP @ipconfiger 唔。。。。后面的改进型想法是给加密后的文章采取严格的格式,比如『押韵』,纵然对应非完全,也能很高概率地鉴别出来哪一个是真正原文。这个想法本身就是参考了跑彩虹表,目前机器跑出的彩红表小,但是如果未来呢?(我的意思不是破解 md5 , md5 应该没法破解吧
|
74
ilotuo 2017-02-17 01:03:14 +08:00
做一个密封铁盒 注明暴力开启会自爆.
里面放个低功耗单片机计时,时间到了锁从里面开. 关于暴力开启检测,可以用测气压,测气体等方法. 这样可以? 要保证数据安全就多做几个呗 |
75
ilotuo 2017-02-17 01:05:47 +08:00
理论上你所有加密方法都可能有设备被破坏导致数据丢失.
所以和我的方法风险是一样的. |
78
hww 2017-02-17 08:09:48 +08:00
以太坊能做到。
|
79
msg7086 2017-02-17 08:51:22 +08:00
「也能很高概率地鉴别出来哪一个是真正原文」
给你一亿篇文章,你给我鉴别下哪个是押韵的? 当然了,原文应该远远不止一亿种可能。 |
83
algas 2017-02-17 17:03:02 +08:00
LZ 你的问题很深刻,请容我思考个把月
|