噴泉碼和多項式秘密共享之間的功能區別是什麼?
據我了解,噴泉程式碼允許通過發送(沒有損壞或失敗)使用機率函式生成的數據塊來重建一組數據(例如 64 位字),其好處是由於通過不可靠的通道發送的塊的無限供應,只要接收到成功發送塊的門檻值(例如超過 64 位的編碼數據),客戶端就可以在不知道丟包的情況下重建數據。
多項式秘密共享將一段數據拆分為多個份額,這樣如果提供了份額的最小門檻值,則可以重建數據。可以生成無限數量的股票。例如,這可以用於將秘密拆分到多個位置以提供冗餘和/或安全性。
這些算法的實際實現是不同的,但它們在功能上有何不同?為什麼一個不能換成另一個?
考慮當我們為一個秘密建構 Shamir 的秘密共享方案時會發生什麼 $ s $ 和重建門檻值 $ t=4 $ . 我們的多項式將是度數 $ t - 1 $ 和 $ a_i $ 是隨機係數:
$$ f(x) = s + a_1x + a_2x^2 + a_3x^3 $$
股份為 $ n $ 球員由 $ f(1), f(2), \dots f(n) $ . 任何 $ t \ge 4 $ 的玩家可以重建多項式 $ f(x) $ 並且可以恢復秘密為 $ s = f(0) $ , 但任何 $ t < 4 $ 的玩家沒有足夠的資訊,因此對秘密一無所知 $ s $ .
我們可以通過改變視角來使用這種與噴泉程式碼完全相同的技術。而不是秘密 $ s $ ,我們有一條消息 $ m $ :
$$ g(x) = m + a_1x + a_2x^2 + a_3x^3 $$
而不是給每個玩家 $ n $ 股份 $ f(n) $ ,我們廣播了一系列區塊 $ g(1), g(2), \dots $ 給玩家。一旦玩家收到 $ t \ge 4 $ 消息塊,它們有足夠的資訊來重構多項式 $ g(x) $ 並且可以將原始消息恢復為 $ m = g(0) $ . 通過選擇足夠大的有限域,可以生成非常大量的唯一消息塊。
出於效率原因,實用的噴泉碼通常基於低密度奇偶校驗碼,但我希望這個例子有助於說明在許多方面糾錯碼和秘密共享方案只是對同一基本概念的兩種解釋。