Wallets

關於 m-of-n 論文種子片語的現有研究

  • November 23, 2020

我有興趣設計一種協議,該協議將加密錢包的種子片語儲存在 N 張單獨的紙(或金屬!)上,其中任何 M 張紙都可以重建種子片語,但少於 M 不能。

我希望整個方案都是您可以手動完成的,因為出於安全原因,這些助記詞不應觸及通用電腦。

具體來說:是否存在將論文助記詞拆分為單獨部分的方案?

理想情況下,我正在尋找一種僅使用手動計算的方案,而不是您必須在電腦上進行的數學運算。

我不是在尋找“多重簽名”方案。我想要的是一種方案來儲存單個確定性錢包(可能是諸如 Trezor 或 Ledger 之類的硬體錢包)的種子,但以分佈式方式在紙上。目標是人們可以將這些元件分發給各種受信任的聯繫人、保險箱、保險箱等,並且不會因失去其中一個元件或某個元件受到損害而容易受到單點故障的影響。

所以,這個問題有兩個答案。我將分別列出它們。

(1) Trezor 公司已在其新的 Model T 硬體錢包中實施了 Shamir Backup:

https://blog.trezor.io/shamir-backup-a-new-security-standard-3aa42a6ebb5f

https://github.com/satoshilabs/slips/blob/master/slip-0039.md

出於實際目的,如果您已經信任硬體錢包按預期執行,這可能是最好的做法。

第二個答案:如果 M 和 N 很小,可以完全手動進行 M-of-N 秘密共享,也許使用老式袖珍計算器。

例如,如果 N=3 和 M=2,您將創建三個 2-of-2 方案。

使用對字數取模的加法可以很容易地製作出一個 2-of-2 方案。對於 BIP-0039 單詞,這是添加 mod 2048。

要隱藏單詞“volcano”(BIP-0039 列表中的單詞編號 1965,從 0 開始索引時),您生成一個隨機數,例如 376(“congress”),然後計算 1965-376 mod 2048 = 1589 (“店鋪”)。

現在“國會”寫在一張紙上,“商店”寫在另一張紙上。要獲得真正的單詞——“火山”——你需要兩張紙。只有一張紙給你完全沒有資訊。

您創建三個這樣的方案,總共六張紙。每個 2-of-2 方案都分為三個部分中的兩個,因此每個部分都有兩張紙,就像三角形的邊一樣。

對於 2-of-4 方案,您將創建 6 個 2-of-2 方案,依此類推。這些“微不足道的”2-of-N 秘密共享方案看起來像是 N 個頂點上的完整圖。

完整的圖表

對於 3-of-N 瑣碎秘密共享的工作方式類似,但您的 2-of-2 方案通過相同方法替換為 3-of-3 方案(3 個數字加起來為秘密數,模 2048)。

隨著 M 和 N 的增長,子方案的數量增長為N Choose M,並且紙張數量是其兩倍,因此這只適用於 M 和 N 較小的情況。例如,2 of 5 方案需要 20 張紙,每個片段有 4 張紙。這是可以手工完成的,但可能代表了人們會煩惱的上限。

引用自:https://ethereum.stackexchange.com/questions/90446