Encryption

如果其中一個密鑰是公開的,非對稱加密如何安全?

  • February 6, 2021

讓我們假設 $ A $ 正在發送消息 $ m $ 至 $ B $ 使用非對稱密碼學。

為保證消息的真實性, $ A $ 加密 $ m $ 和 $ A $ 的私鑰: $ E(m, k_A) = m_A $ .

然後, $ A $ 發送 $ m_A $ 至 $ B $ .

$ B $ 可以檢查 $ m_A $ 被發送 $ A $ 使用 $ A $ 的公鑰 $ p_A $ , 通過做 $ D(m, p_A) = m $ .

如果公鑰 $ p_A $ 根據定義,是public,如果攻擊者截獲通信並獲取 $ m_A $ ,他很容易找到 $ m $ .

在這些條件下,非對稱密碼學如何安全?

在這些條件下,非對稱密碼學如何安全?

好吧,您有點概述(但請參閱 kelalaka 的更正)您將如何使用非對稱加密進行身份驗證;也就是說,要確保消息實際上是從 $ A $ .

您問“這如何提供隱私?”。答案當然是“如果這就是你所做的一切,它不會”。

如果我們想做隱私,也就是生成一條加密消息,只 $ B $ 可以讀的是 $ A $ 加密 $ m $ 和 $ B $ 的公鑰,即 $ E(m, p_B) = m_A $ . 然後我們發送 $ m_A $ 至 $ B $ . $ B $ 然後可以獲取他的私鑰併計算 $ D(m_A, k_B) = m $ ,恢復原始消息。沒有其他人可以閱讀該消息,因為只有 $ B $ 知道 $ k_B $ ,這是解密消息所必需的。

兩個注意事項:

  • 如果我們需要同時提供兩種身份驗證(僅 $ A $ 可以生成消息)和隱私(僅 $ B $ 可以閱讀消息),我們兩者都做; $ A $ 可能會生成密文 $ E(m, p_B) = m_A $ , 然後用他的私鑰簽名 $ Sign( m_A, k_A ) = s_A $ 然後發送兩個 $ m_A $ 和 $ s_A $ . $ B $ 然後可以驗證簽名(與 $ A $ 的公鑰),然後解密消息(用 $ B $ 的私鑰)。
  • 在實踐中,如果我們需要對長消息進行加密,我們一般會選擇一個隨機的對稱密鑰(也就是短消息),然後使用公鑰加密密鑰,然後使用對稱密鑰對消息進行加密。對稱加密比公鑰加密更有效,因此與多次使用公鑰加密方法來加密消息相比,這是一個顯著的性能提升。

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