发送者对消息加密后,任何人都无法立即解密,必须经过预定的时间才能解开,从而将消息发送到未来。
之前分享过一个简易版,那个版本加密需要花费和解密同样的时间,因此几乎没有可玩性。
最近更新了下算法,加密过程支持多线程,并且支持 GPU 加速,从而可利用显卡的并行能力提速几十到几百倍。当然,解密过程仍然只能 CPU 单线程,确保解密不会被加速。具体原理可参考文档。
https://github.com/EtherDream/timelock/blob/main/README-zh.md
不过这个版本也有个缺陷,由于加密结果需要保存每个线程的种子信息,而 GPU 通常有几千个线程,导致结果会非常大。即使降低一些安全性用较短的种子,结果也有 10KB 甚至更长,导致通过 URL 分享很困难,至少在聊天软件无法分享,只能通过文章或论坛里的超链接分享。
另外出于兼容性目前仍使用 WebGL2 的 GPGPU 方案,之后再改成 WebGPU 。(不知 WebGPU 稳定性方面是否更高,目前 WebGL2 加密时进行频繁界面操作经常会崩溃)
如果算法和程序没问题的话,之后再约定时间点发一些拼 CPU 性能的活动,第一个解密成功的可以领取奖励,鼓励大家升级 CPU 硬件~