header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP
Partnered With:

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

閱讀本文需 7 分鐘
V神描述了一種新型的M-of-N密鑰分享方案,並提出了腦錢包和社交恢復設計的兩種應用案例。
原文標題:《M-of-N secret sharing with pre-known shares》
原文作者:Vitalik Buterin
原文編譯:隔夜的粥,巴比特



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


假設你希望生成一個祕密 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 評論稱:




「這很有趣!我猜在社交恢復設計中,N 個參與者會給他們的私鑰附加一些公共鹽(salt,指通過在密碼任意固定位置插入特定的字符串),然後將其哈希生成 N 個預先知道的密鑰分享呢。


否則他們將不願意泄露自己的密鑰分享,以讓 N−M 個附加密鑰分享被計算,並且他們還必須透露 M 個密鑰才能恢復祕密。


此外,你認爲人們會用這種方式來分發哪些類型的私人數據呢。」


而 Vitalik 則回覆稱:




「實際上,他們會使用 hash(ecdsa_sign(key, salt)) 作爲哈希函數來生成子密鑰,因爲 ecdsa_sign 方法在 web3 API 中公開並且具有標準化的確定性輸出。但這是一個實現細節,效果是一樣的。


我只是在考慮『以太坊電子郵件』以及像 Status 這樣的去中心化消息傳遞應用的加密密鑰。另一個用例當然是其他區塊鏈的私鑰。」


原文鏈接



歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交