如何為 2-of-3 秘密共享建構 27x27 直板?
在 security.stackexchange 上對這篇文章的回答中,有人描述瞭如何使用鉛筆和紙,使用 tabula recta 進行 2-of-3 秘密共享。但我不明白他是如何創建他的桌子的,雖然我可以看到某種模式,但我無法在緊要關頭重建它。
我的另一個問題是,這種共享方案資訊在理論上是否安全?是否有任何個人共享單獨提供有關該秘密的任何資訊?
我們首先編寫一個秘密 $ k\in{0,1,2} $ 作為三股 $ x $ , $ y $ , $ z $ 經過
- 選擇分享 $ x $ 均勻隨機地 $ \in{0,1,2} $
- 選擇分享 $ y $ 作為 $ (x-k)\bmod 3 $
- 選擇分享 $ z $ 作為 $ (y-k)\bmod 3 $
一股沒有給出任何線索 $ k $ , 但我們可以恢復 $ k $ 來自任意兩股:
- 從 $ x $ 和 $ y $ 作為: $ k=(x-y)\bmod 3 $
- 從 $ y $ 和 $ z $ 作為: $ k=(y-z)\bmod 3 $
- 從 $ z $ 和 $ x $ 作為: $ k=(z-x)\bmod 3 $
注意:根據模算術的標準符號,對於 $ n>0 $ , 數量 $ i\bmod n $ 被定義為 $ j $ 和 $ 0\le j<n $ 這樣 $ i-j $ 是的倍數 $ n $ .
我們需要搬運的桌子有 $ k=(x-y)\bmod 3 $ 在列 $ x $ 和線條 $ y $ , 那是:
| 0 1 2 ----+---------- - 0 | 0 1 2 - 1 | 2 0 1 - 2 | 1 2 0
現在,如果秘密由兩個數字組成 $ {0,1,2} $ ,我們可以將其表示為三個份額,每個份額為兩位數 $ {0,1,2} $ ,通過對秘密的每個數字使用上述方法,為三個共享中的每一個生成相應的數字。
我們可以通過建構下表來簡化此操作,其中結果的每個數字都是通過將前一個表應用於每個輸入的相應數字來獲得的:
| 00 01 02 10 11 12 20 21 22 -----+------------------------------------- - 00 | 00 01 02 10 11 12 20 21 22 - 01 | 02 00 01 12 10 11 22 20 21 - 02 | 01 02 00 11 12 10 21 22 20 - 10 | 20 21 22 00 01 02 10 11 12 - 11 | 22 20 21 02 00 01 12 10 11 - 12 | 21 22 20 01 02 00 11 12 10 - 20 | 10 11 12 20 21 22 00 01 02 - 21 | 12 10 11 22 20 21 02 00 01 - 22 | 11 12 10 21 22 20 01 02 00
然後我們可以將兩位數對替換為 $ 3^2=9 $ 字母
A
..I
(在行和列索引中,以及表本身),我們得到:| A B C D E F G H I -----+------------------------------------- - A | A B C D E F G H I - B | C A B F D E I G H - C | B C A E F D H I G - D | G H I A B C D E F - E | I G H C A B F D E - F | H I G B C A E F D - G | D E F G H I A B C - H | F D E I G H C A B - I | E F D H I G B C A
我們可以對由三位數字組成的秘密做同樣的事情,然後將三位三元組替換為 $ 3^3=27 $ 標誌:字母
A
..Z
和.
. 這就是我的答案中的表格的構造方式。的映射 $ 3^3=27 $ 三位數的字母是任意的。我們將獲得一個同樣適用於任何映射的表。我們還可以按方便的順序重新排列行和列,例如按字母順序。這允許生成不同的易於使用的表,它們也同樣有效。
我們還可以擴展到 $ 3^4=81 $ 符號,允許大小寫、數字和 19 個印刷符號(但如果這些符號最終被列印,字型必須允許辨識
O
和0
,l
和1
)。