Key-Exchange

沒有基礎半群的密鑰交換

  • May 26, 2019

我想知道是否對使用半組的 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) $ ,您可以考慮所有四個可能的對),並將它們組合成一個有意義的值。

引用自:https://crypto.stackexchange.com/questions/70835