如何偽造Shamir秘密份額?
在這個網站上,我們有很多關於 Shamir 秘密分享的問題和答案。我們明確表示,Shamir 秘密共享不保證完整性。當我們想要完整性時,我們需要使用可驗證的門檻值方案。但從未解釋過惡意秘密是如何真正偽造的。
考慮一個簡單的方案設置,具有 2 個份額和門檻值 $ k = 2 $ . 假設對手知道秘密消息 $ m $ 並分享 1(但不分享 2)。股票估值為 $ x_1 = 1, x_2 = 2 $ .
對手如何偽造選定的秘密 $ m’ $ ?
邁克的回答是正確的;然而事實證明,對於 $ k>2 $ ,攻擊者可以做得更好。
假設攻擊者知道:
- 實際共享的秘密
- 他的正確份額
- 這 $ x $ - 將參與重組的每個人的座標
然後,他可以修改他的份額以使重新組合的秘密成為他想要的任何值(在有限域內)。如果 $ k > 2 $ ,他將無法獲得足夠的資訊來恢復多項式;但是他不需要那個。
假設攻擊者擁有份額 1(因此他知道 $ y_1 $ ),他知道每個人的 x 座標 $ x_1, x_2, …, x_k $ , 秘密 $ S $ ,並且想要修改他的共享,以便洩露的秘密將是 $ S’ $ .
他所做的是修改他的份額
$$ y’1 = y_1 + (S’ - S)\prod{j=2}^{k}\frac{x_j - x_1}{x_j} $$ 這是它的工作原理;Shamir 的重組階段可以概括為:
$$ S = \sum_{i=1}^k \ y_i \prod_{j=1, j \ne i}^{k}\frac{x_j}{x_j - x_i} $$ 通過包含他修改後的共享,攻擊者將其更改為:
$$ \left(y_1 + (S’ - S)\prod_{j=2}^{k}\frac{x_j - x_1}{x_j}\right)\prod_{j=2}^{k}\frac{x_j}{x_j - x_1} + \sum_{i=2}^k \ y_i \prod_{j=1, j \ne i}^{k}\frac{x_j}{x_j - x_i} $$ 這是
$$ (S’ - S)\prod_{j=2}^{k}\frac{x_j - x_1}{x_j}\prod_{j=2}^{k}\frac{x_j}{x_j - x_1} + \sum_{i=1}^k \ y_i \prod_{j=1, j \ne i}^{k}\frac{x_j}{x_j - x_i} $$ 這簡化為 $ S’ $