Keys

派生共享密鑰與不同密鑰?

  • November 21, 2011

我見過很多兩方應用程序從各方創建的不同密鑰中派生出一個共享密鑰。

為什麼採用這種技術?為每一方使用這兩個不同的密鑰不是更好嗎(雙方都知道這兩個密鑰,但每個密鑰都用於加密和解密創建它的一方的消息)?

例如,我見過使用它的套接字伺服器。假設有 2 個伺服器正在執行。兩台伺服器都發送一個隨機的 256 位密鑰,用對方的 RSA 公鑰加密。這導致兩個伺服器現在都知道 2 個不同的密鑰。然後兩個伺服器對這兩個密鑰進行異或運算以得出一個公共密鑰。為什麼這樣做而不是像我上面描述的那樣使用兩個鍵?

對於雙向 RSA 交換的範例協議,將兩個密鑰合二為一可以防止一些弱點:

  • 通過組合來自雙方的隨機數,結果是真正隨機的,即使其中一個具有弱或受損的隨機源。
  • 如果其中一個私鑰被洩露,在您的協議中,攻擊者可以讀取流向其所有者的所有數據。如果我們通過 XOR 將隨機數據與其他隨機數據組合以導出會話密鑰,那麼攻擊者仍然不知道生成的密鑰,並且她無法讀取任何內容。

當然,對於實際的加密(和身份驗證,即 MAC 密鑰),您不應該直接使用這個組合的主密鑰,而是從中派生不同的密鑰用於不同的目的。這避免了一些重放攻擊。

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