在私鑰持有者不知道密鑰碎片的情況下拆分私鑰?
是否可以將私鑰拆分為碎片並將碎片分發給密鑰持有者,這樣 (1) n 個密鑰碎片中的 k 個需要恢復私鑰,以及 (2) 私鑰持有者不知道密鑰碎片是什麼?
我正在考慮這樣一種情況,即信任許多密鑰持有者來保守他們的密鑰分片的秘密。然後,如果密鑰碎片洩露,我們想知道應該歸咎於哪個密鑰持有者。在這種情況下,如果原始私鑰持有者也知道密鑰分片,那麼我們就無法知道是誰洩露了密鑰分片。
讓 $ E $ 是一條安全的橢圓曲線,並且 $ G $ 是有順序的基點 $ \ell $ .
- $ (n,n) $ 方案:
$ n $ 密鑰持有者每個人隨機選擇一個私鑰 $ x_i $ , 計算一個公鑰 $ X_i = [x_i]G $ 和雜湊承諾 $ H(X_i) $ .
密鑰持有者首先交換雜湊承諾,只有當所有雜湊承諾都被共享後,他們才會相互共享他們的公鑰。
然後使用 ECIES 和聯合公鑰對秘密進行加密 $ \sum_{i=1}^n X_i $ .
只有當所有密鑰持有者聚在一起組合他們的私鑰以建立聯合私鑰時,才能解密該秘密$$ \sum_{i=1}^n x_i \bmod \ell $$對應於聯合公鑰。
如果有人洩露了他們的私鑰,可以很容易地觀察到該私鑰與哪個公鑰相關聯。
- $ (n,k) $ , $ k $ -門檻方案:
對於每一個可能的選擇 $ k $ 的 $ n $ 私鑰(總可能性的數量將是二項式係數 $ \binom{n}{k} $ ),使用由該公鑰組合的總和形成的聯合公鑰加密秘密。
可以使用協調器來減少各方之間所需的通信數量。發送給協調者的所有消息都需要由每個私鑰持有者完善的通用通信公鑰簽名(這與在此方案中為每個私鑰持有者生成的公鑰不同)。中繼的資訊(例如中繼的承諾和中繼的公鑰)將保留生成它的一方的簽名,因此接收者不必信任協調者。
協議的關鍵協議階段總共需要 $ 5n $ 通訊如下:
- 協調器生成消息 $ m $ 包含一個 nonce,它標識協議的這個特定呼叫,並發送 $ m $ 給每個私鑰持有者。在此之後任何一方傳輸的所有通信必須包括 $ m $ 這樣就不能在協議的呼叫之間混合和匹配通信。所有私鑰持有者必須記住每個使用的 nonce,以避免為相同的 nonce 值提供兩個不同的響應(在協議的同一階段)。
- 所有私鑰持有者將他們的承諾發送給協調者
- 協調者將承諾的集合傳輸給每個私鑰持有者
- 每個私鑰持有者將他們的公鑰傳輸給協調者
- 協調器將公鑰的集合傳輸給每個私鑰持有者。
當秘密持有者準備加密一個秘密時,它將用聯合公鑰加密並傳輸給所有人 $ n $ 私鑰持有者,因此需要進一步 $ n $ 通訊。與之前的所有步驟一樣,消息 $ m $ 包含 nonce 是為了將此通信綁定到該協議的此特定呼叫。