V神提出新型密鑰分享方案,可用於腦錢包和社交恢復設計應用

註:原文作者是以太坊聯合創始人Vitalik Buterin,在這篇文章中,他描述了一種新型的M-of-N密鑰分享方案,並提出了腦錢包和社交恢復設計的兩種應用案例。

V神提出新型密鑰分享方案,可用於腦錢包和社交恢復設計應用

假設你希望生成一個秘密 s,而s可通過將N個密鑰分享中的M個放在一起來恢復,其中所有N個密鑰分享是預先知道的。那麼這種方案有兩個用例:

  1. 一種腦錢包,其中N個密鑰分享是N個安全問題的答案,並且你希望僅通過M個安全問題的答案就可以恢復資金(單獨的安全問題會很糟糕,但如果你將20個安全問題組合起來,你可以獲得相當多的熵);
  2. 一種社交恢復設計,其中你希望使用閾值解密而不是智能合約錢包,因為你正在嘗試恢復訪問私人數據,而不是加密貨幣,並且你希望你的恢複合作夥伴能夠使用他們已經擁有的密鑰(以減少有丟失這些密鑰的風險);

普通的 M-of-N 密鑰分享方案不適用於這些用例中的任何一個,因為它只允許預先選擇 M 個密鑰分享,剩餘的 (N-M) 個密鑰分享必須使用一種確定性算法從原始的M個中產生,並且看起來像隨機數據(在腦錢包的情況下,它們不適合作為安全問題的答案,在社交恢復的情況下,需要用戶使用特殊軟件來存儲它們,而不是從現有的HD錢包中衍生出來)。

所以這就是我們要去改進的,我們制定了一個 N-of-(2N-M) 閾值方案,從原N個密鑰分享生成( N-M) 個附加密鑰分享。然後我們在區塊鏈上發布所有N-M 個附加密鑰分享。如果需要,在社會恢復案例中,人們可以簡單地給每個參與者一份所有附加密鑰分享的副本。這會導致附加密鑰分享變成有效的公共信息:它們丟失的風險可以忽略不計,但任何攻擊者都會擁有它們。而結果是,在未發布的 N個密鑰分享中,只要有M個密鑰分享與 N-M 個附加密鑰分享結合併揭示數據,我們就有了一個M-of-N方案,這正是我們想要的。

2021年7月18日更新:社交恢復用例的替代機制

在社交恢復用例中,我們希望設置過程儘可能簡單,因為用戶是懶惰傾向的,如果設置困難,他們將不可避免地選擇不安全的小型恢復夥伴集。這意味着以去中心化方式生成密鑰分享所需的分佈式密鑰生成 (DKG) 可能是一個壞主意,因為它需要 2 輪通信(這意味着額外的區塊鏈交易或每個人同時在線並擁有同步通信通道)。

相反,我們可以利用賬戶持有人自己擁有他們的私鑰這一事實。他們可以簡單地向每個恢復夥伴詢問他們的公鑰(例如,通過 pk = G * hash(ecdsa_sign(msk, nonce)),其中 msk 是恢復夥伴的主要密鑰),然後在鏈上發布一筆包含 nonce 的交易,並為每個 i 加密(share_i, pk_i) (註:其中 share_i 是第 i 個密鑰分享,pk_i 是第 i 個參與者的公鑰)。

如果我們避免重複使用nonce隨機數,從而不重用密鑰(例如,設置nonce = hash(secret, maddr_1 ... maddr_n),其中secret是放入恢復的值,maddr_i是第i個恢復夥伴的地址,應該就足夠了),我們可以使用基礎的Diffie-Hellman加密算法進行加密,這意味着僅具有 32 * (n+1) 個字節calldata數據的單筆交易,就足以保存恢複信息。

對此方案,ethresear.ch 論壇成員kelvin評論稱:

V神提出新型密鑰分享方案,可用於腦錢包和社交恢復設計應用

“這很有趣! 我猜在社交恢復設計中,N個參與者會給他們的私鑰附加一些公共鹽(salt,指通過在密碼任意固定位置插入特定的字符串),然後將其哈希生成N個預先知道的密鑰分享?
否則他們將不願意泄露自己的密鑰分享,以讓N−M個附加密鑰分享被計算,並且他們還必須透露 M 個密鑰才能恢復秘密。
此外,你認為人們會用這種方式來分發哪些類型的私人數據呢?

而Vitalik則回復稱:

V神提出新型密鑰分享方案,可用於腦錢包和社交恢復設計應用

“1、實際上,他們會使用 hash(ecdsa_sign(key, salt))作為哈希函數來生成子密鑰,因為 ecdsa_sign 方法在 web3 API 中公開並且具有標準化的確定性輸出。 但這是一個實現細節, 效果是一樣的。
2、我只是在考慮‘以太坊電子郵件’以及像Status這樣的去中心化消息傳遞應用的加密密鑰。另一個用例當然是其他區塊鏈的私鑰。
”。

本文鏈接:https://www.8btc.com/article/6663029

轉載請註明文章出處

(0)
上一篇 2021-07-20 11:35
下一篇 2021-07-20 12:17

相关推荐