Shamir 文件分片

任意文件 → n 个分片 + 1 个密文;凑齐任意 k 片 → 原文件回来。
全程浏览器本地计算,不发送、不存储任何数据。

AES-256-GCM k-of-n Shamir 零上传

① 选择密文文件

拖入密文(.tscf)或分片文本(可多选),或点击选择

② 导入分片

这是什么?怎么用?

拆分:选一个或多个文件(每个文件 = 一层),给每层设 k,点「拆分」。得到 1 个密文 + n 个分片。密文随便放(网盘/U 盘/公共存储),n 个分片交给 n 个人(或自己多处保管)。

恢复:先选密文(会提示需要几片),再交出分片,点「恢复」。够哪一层的 k 就解到哪一层,不够的层会显示还差几片。

多层嵌套、假文件、密码学原理……都收在下面的细节里,想深究再展开。

细节与原理

多层:第 1 层是门槛最低的文件,第 2、3… 层套在它里面,需要更多片才能继续往下解。凑够第 1 层的 k 片只能拿到第 1 层;多凑几片才轮到第 2 层。

假文件:只能加一层,且必定是最后一层。它长得和真文件一模一样,但拆分时"分片共享的密钥"和"加密用的密钥"不是同一把——所以就算凑够它标注的 k 片,插出来的密钥也打不开它,只能得到解密失败。它的 k 可以设到 n 以上(那样连凑都凑不齐)。同时密钥串会被补到 32(或 256)组:多出来的假密钥组没有对应密文,只是让人看不出里面到底套了几层。

原理:每一层各生成一个 32 字节随机 key,用 AES-256-GCM 加密该层明文;Shamir 秘密共享(secp256k1 基域 GF(p),p = 2²⁵⁶−2³²−977)把每层的 key 拆成 k-of-n,所有层共用同一套坐标。所以分片极小,文件本身不分片。

隐私:整页单文件、无后端、无统计,可另存到本地断网使用。唯一例外是勾选了 OpenTimestamps 存证(会把文件哈希发给公共日历)和点击「在线验证」(会向区块数据源查询)。

源码:tdstud1o/tool · shamir · 博客:没人砌的那堵墙,砌好了