UID 1615327 性别 保密 经验 EP 铁粒 粒 回帖 0 主题 精华 在线时间 小时 注册时间 2024-2-21 最后登录 1970-1-1
本帖最后由 teddyxlandlee 于 2024-8-23 01:10 编辑
开门见山地说罢:我想做一个小网站,平时想起来可以写几句话传上去,等到 XXXX 年 XX 月 XX 日之前才能解密。
想到这个有一个缘由——我刚把我内加密网盘 的网页端 上传工具做了出来。
加上“网页端”这个定语,是因为之前早就做出了Python版本的上传工具 ,但是在一没运行环境、二没GitHub Token的手机、公共电脑等场景下,这玩意就是个废。
——而网页端用TOTP(就是2步验证用的6位验证码,30s一刷新的)代替了GitHub Token,实现方法是在中间加了一层Netlify Functions作验证和中转。并且把上传工具搬到浏览器上之后,原始数据仍然不会泄漏——文件依然是在本地加密,Netlify Functions只是用来把加密后的文件放在该放的位置罢了。
铺垫这么多,意思就是说:『时间胶囊』的每个信息,也将在加密后再上传给服务器。
不同的是,加密网盘用的是Salsa20对称加密 ,而时间胶囊用的是RSA非对称加密 。
并且更特殊的是,我不想让任何人在 XXXX 年 XX 月 XX 日之前获取 RSA 私钥,包括我自己 。
为了达成这个目的(RSA 私钥保密),我求助了 GitHub,它给我扯什么区块链balabala一大堆,我也搞不出来。
然后我想到了一个简单粗暴的办法(要不是我明年高考,依照我的性子肯定会把这玩意整出来):GitHub 死账号 ,即配置好 Secrets 后把账号密码、两步验证什么的一切登录凭证统统扔掉。
具体步骤如下:参照对称加密网盘的设计,设计非对称加密网盘及其上传前端。(不同之处在于使用非对称加密)
——这一步甚至可以复用加密网盘的设施,调用upload.js 上传后,把下载链接(含对称密钥)用RSA加密上传给时光胶囊。 预留出用来下载的网页,它会尝试从指定位置下载RSA私钥。——当然如果404了就说明时辰未到,私钥还藏着呢。 开一个GitHub新号,创建一个仓库,里面就写一个workflow,通过cron触发。
由于cron只能判断到月、日、星期几,所以触发成功后加个年份的判定。 把RSA私钥存到该仓库的Secrets中;于此同时在Secrets中存一个GitHub Token(大号的),这个Token用来向大号的某个仓库上传文件(就是用来上传RSA私钥的),该仓库会被部署到 Netlify 上,CORS 暴露给前述用来下载的网页。 在workflow中配置,满足触发条件时,用上述 Token,把 Secrets 中存的 RSA 私钥上传到上述仓库。 配置成功后,把该账号的登录凭证统统销毁 ,这样即使中间反悔了,也没法去改workflow上的触发条件。
如果这个账号以后还想用的话,可以用自己的GPG公钥把登录凭证信息加密一份(相当于RSA外面套一层GPG),就通过这个时间胶囊上传。这样,到了 XXXX 年 XX 月 XX 日,还可以把登录凭证下载回来,并且账号不会被盗。
差不多说这些罢。如果咱们坛U中有意愿把这玩意搞出来的,可以给我发Email ,极大概率不会及时看。上次 说的加密Markdown 、网页端上传 等等,竟然都一一做出来了,甚至用类似的技术,顺带着搞了个Ender Ephemeral ,可以用来把想到的各种废话传到EPX 推荐资源包 的 #whisper-1 频道。再也不魔芋了呜呜呜呜呜呜呜呜
哦对,顺带着把开发网页端上传用到的 s7c7icu URL 转码器(s7c7icu URL 还可以用来在前述加密Markdown中插入加密图片,所以非开发者或许也能用到)、JWT Secret 生成器、TOTP Secret 生成器等工具打包成了一个网页 ,希望对你有用,没用也拉倒
注:以上内容的 BBCode 源代码已上传至 加密网盘 ,有兴趣的可以下载尝试,想研究原理的就去研究罢。
最后……祝大家诸事顺利罢!