免費工具

把秘密拆成幾份

助記詞是個矛盾:只留一份會丟,留很多份每一份都是風險。這個頁面把秘密切成幾份,任意 K 份能把它拼回來,少於 K 份則對它一無所知。三份交給三個信得過的人,任意兩份就能還原,而任何一個人單獨什麼也做不了。

全部在瀏覽器裡計算:秘密和各份都不會發往任何地方。

秘密和各份都不會發往任何地方:所有數學運算都在這個標籤頁裡完成。

原理

Shamir 方案。秘密的每一個位元組都藏進一個多項式:常數項就是這個位元組,其餘係數隨機,次數比門檻小一。第 x 份是多項式在點 x處的值。經過任意 K 個點的所需次數的多項式恰好只有一個,所以 K 份能唯一確定原始位元組。而經過 K−1 個點的這類多項式有無窮多個,所有常數項等機率,這就是為什麼少於 K 份什麼也說明不了。

全部在 GF(256) 域裡計算,和 AES 內部用的是同一個。位元組還是位元組,各份都很短,寫在紙上是現實的。

怎麼用才合理

家庭保管最實用的方案是三份、門檻兩份。一份自己留著,一份給親屬,一份放銀行保險箱或交給第二個信得過的人。自己那份丟了,用剩下兩份還原。被偷了一份,小偷什麼也拿不到,連提示都沒有。

不要做的事:把兩份放在同一個地方(這和只留一份一樣),以及把門檻設成和份數相等(那樣丟任何一份就是丟了秘密)。

相關工具: 助記詞檢查, 用密碼加密檔案加密文字.

這些我們一樣都不儲存

秘密、各份、密碼都不儲存,就像 VPN 本身不儲存訪問日誌一樣。真要交,也沒有什麼可交。

原理 →

常見問題

guest@404vpn:~$ cat secret-split-faq.md
[01] $ 這比直接把助記詞剪成三段好在哪?
> 因為普通助記詞的一段已經是答案的一部分:十二個詞有了八個,剩下的就能窮舉出來。這裡每一份單獨看對秘密什麼都說明不了:在湊夠所需份數之前,連原文的長度都無法確定。這是這套方案的數學性質,不是承諾。
[02] $ 該拆成幾份、要求幾份?
> 家庭保管通常拆三份、門檻設為兩份:丟了一份還能還原,被偷一份小偷什麼也拿不到。門檻等於份數(三份取三份)很危險:丟了任何一份就等於永遠丟了秘密。
[03] $ 這幾份該放在哪?
> 分開放,放在不同的地方,這就是全部意義。兩份放在同一個保險櫃裡,和只留一份沒有區別。每一份都可以寫在紙上:它們很短,由普通字母和數字組成。
[04] $ 要是某一份壞了,或者是別的秘密的?
> 我們會發現。拆分之前會在秘密後面附上它雜湊的兩個位元組,拼合時會檢查。如果幾份不是來自同一個秘密,或者其中一份壞了,頁面會說出來,而不是交給你一堆像模像樣的垃圾。
[05] $ 你們能看到我的秘密嗎?
> 看不到。拆分和拼合時頁面一個網路請求都不發,所有數學運算都在你的標籤頁裡進行。在開發者工具的“網路”標籤裡就能看到。