Rsa

密鑰交換和中間人問題。安全解決方案

  • February 4, 2016

我正在嘗試設計 MiTM 保護的密鑰交換算法。例如,我正在使用 RSA 非對稱密鑰。

Alice 和 Bob 分別擁有自己的一對密鑰。他們應該能夠交換公鑰。在現實生活中的實現中會有一個中繼第三方,如果沒有直接連接的方式,它應該只允許 Alice 和 Bob 交換消息。然而,這個中繼方可能會被 Eve 破壞,她將擁有自己的一對密鑰,在交換期間接受 Alices 和 Bobs 的公鑰,然後將她的公鑰發送出去。因此,所有加密的消息都將被 Eve 解密、讀取、再次加密並進一步發送,從而破壞整個密鑰交換過程。

顯然,Trent 可以在密鑰發送給接收者之前簽署密鑰,然後在收到密鑰之後驗證簽名。但是我覺得這個模式也有一個缺陷,因為 Eve 可以通過某種方式獲得由 Trent 簽名的公鑰。

有沒有辦法確保如果 Trent 沒有被洩露(意味著它不是偽裝成 Trent 的人),我們可以確保密鑰交換安全?

想到的是,任何一方都可以擁有有關 Trent 的資訊(證書、公鑰或類似的東西),他們可以使用這些資訊確保他們與 Trent 通信,而 Trent 會向他們收到密鑰的每一方確認。這個架構是否有缺陷或我沒有註意到的任何問題?

你是對的,如果會話公鑰不是由各方都知道的長期私鑰簽名的,則可以替換它們。

你想要做的不是讓 Trent 做任何事情,而是成為一個中繼,那麼你需要在兩方之間使用新的隨機密鑰對進行標準的密鑰交換過程。然後,一旦各方都擁有公鑰,他們就可以生成密鑰對以及素數/指數和任何其他公共數據的身份驗證雜湊。在密鑰交換完成並生成會話密鑰後,您需要一些方法來比較它們,即使它是一個不安全的通道,只要該比較不能被修改。

幾個程序使用這種方法或一個類似的方法。我在 IRC 上使用了一個,IRC 伺服器代替了 Trent。顯而易見的替代方案是僅用於簽署會話公鑰的已知長期密鑰。

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