為什麼 Shamir Secret Sharing 對開箱即用的活躍對手不安全?
這種線性秘密共享方案允許我們在 n 方之間共享一個秘密,這樣只有誠實的多數才能重建它。
我理解——因為我不允許使用者證明共享的真實性或它們重建的價值(例如使用 VSS 或某種同態 MAC)——它們僅在半誠實的情況下是安全的。然而,在我看來,這個問題更多地與完整性有關,因為即使對手發送了不正確的共享,輸出也是不可預測的,而且據我所知,與隨機性無法區分。
如果是這樣的話,有沒有辦法讓主動的對手通過偏離協議來學習一些東西,即關於誠實方私人輸入的資訊?如果是這樣,那會是什麼?
這是對開箱即用 SSS 隱私的主動攻擊。對於這次攻擊,我們假設攻擊者(沒有有效共享)被允許參與(使用 $ T-1 $ 擁有誠實密鑰共享的朋友),共同使用協議來恢復“共享秘密”(這可能不是真正的共享秘密);我們假設這個共享秘密恢復過程是通過某種 MPC 安全方法完成的,因此攻擊者除了最終值之外什麼也沒有學到。我們還假設每個人的 $ x $ 座標是公開的。
首先,攻擊者選擇一個值 $ x_a $ 這是一個 $ x $ 座標不是 $ x $ - 其他人共享的座標。如果經銷商要與該經銷商產生份額 $ x_a $ 值,它會產生一個 $ y $ -我們將呼叫的座標 $ y_a $ ; 顯然,攻擊者不知道這一點 $ y_a $ 價值。
然後,攻擊者得到一組 $ T-1 $ 朋友,並讓他們使用他們的份額恢復共享的秘密值(攻擊者將貢獻該值 $ (x_a, 0) $ ; (實際上,一個非零值 $ y $ 座標會起作用,但會使解釋稍微複雜一些);他們將通過 SSS 恢復過程,並獲得一個我們將表示為的值 $ S_0 $ .
如果我們稱真正的共享秘密 $ S $ ,那麼攻擊者所能做的就是推導出一個值 $ T_0 $ (這取決於 $ x $ -他和他的朋友的座標),並推導出線性方程:
$$ S = T_0 y_a + S_0 $$ 這是一個有兩個未知數的線性方程( $ S, y_a $ ), 和 $ T_0 \ne 0 $ ,因此攻擊者無法獲得任何關於 $ s $ 從中。這也可以從 SSS 的安全屬性中得出;攻擊者和他的 $ T-1 $ 朋友只有 $ T-1 $ 有效股份,因此他們當然無法收回 $ S $ .
然後攻擊者所做的就是將一組不同的 $ T-1 $ 朋友(可能有一些重疊,但必須至少有一個不同),然後再次做同樣的事情(攻擊者使用相同的 $ (x_a, 0) $ 分享。他們做同樣的事情,推導出一個“共享秘密”值 $ S_1 $ ,攻擊者最終得到第二個線性方程:
$$ S = T_1 y_a + S_1 $$ 現在,如果 $ T_0 \ne T_1 $ (如果兩組朋友不同,這很可能),攻擊者在兩個未知數中有兩個線性方程;解決這個問題很簡單 $ S $ .