沒有基礎半群的密鑰交換
我想知道是否對使用半組的 2 條消息中的 2 方密鑰交換進行完美前向保密的一般重新制定。我正在尋找可以討論這種方法的參考資料。我試圖證明我可能被誤導的直覺,它告訴我每 2 方密鑰交換都需要一個潛在的半群錯誤,但到目前為止我失敗了。直覺是,如果我們想處理 2 條消息:
從 A 向 B 發送消息,B 派生最終密鑰並將消息從 B 發送到 A 並且 A 派生相同的最終密鑰,我們需要這樣的關係。
我們需要三個操作,
(opAinit,opB,opAfin)
例如opAinit : seed1 -> (shareA,msg1)
,和以下來保持, where 。這總是可以變成一個潛在的半群嗎?我認為應該有可能以某種方式將不同的操作和域/協域粘合到一個半組操作中。opB : seed2 -> msg1 -> (msg2,key)``opAfin : shareA -> msg2 -> key``opAfin (fst (opAinit(seed1)),fst(opbres)) = opB (snd(opbres))``opbres=opB(seed2,snd(opAinit(seed1))
這總是可以變成一個潛在的半群嗎?我認為應該有可能以某種方式將不同的操作和域/協域粘合到一個半組操作中。
事實並非如此,因為沒有理由期望能夠執行協議中列出的操作以外的任何操作;特別是,人們不會期望能夠像在半群中所期望的那樣連接操作。
例如,下面是一種將公鑰加密方法(例如 RSA)轉換為密鑰交換方法的簡單方法:
- Alice 生成一個公鑰/私鑰對 $ pub_A, priv_A $ ,並且還選擇了一個隨機數 $ n_A $ ; 她發送 $ pub_A $ 和 $ n_A $ 給鮑勃
- Bob 選擇一個隨機數 $ n_B $ ; 他用 $ pub_A $ , 並發送 $ Enc_{pub_A}(n_B) $ 給愛麗絲
- 愛麗絲使用 $ priv_A $ 解密密文以恢復 $ n_B $
- 然後,Alice 和 Bob 都計算 $ h( n_A, n_B ) $ 獲取共享密鑰。
在這種情況下,私有值是 $ priv_A $ 和 $ n_B $ ; 交換的消息是值 $ pub_A, n_A $ , 和 $ Enc_{Pub_A}(n_B) $ . 完全不清楚有人如何定義一個將採用不相關的消息/私有值對的運算符(例如 $ priv_A $ 和 $ Enc_{Pub_C}(n_D) $ ,您可以考慮所有四個可能的對),並將它們組合成一個有意義的值。