Rsa

RSA - 是什麼阻止某人使用相同的密文來模仿私鑰持有者?

  • June 17, 2019

我最近研究了 RSA 的基礎知識,並認為我了解它是如何工作的。但是,我似乎無法弄清楚一個基本問題。如果有人收到給定消息的密文,如何阻止他們向網路中的其他節點發送相同的消息/密文並偽裝成私鑰持有者?

例如,假設 Alice 是一位將軍,指揮士兵 Bob、Sue 和 Jerry。Alice 生成私鑰 (n, d) 和公鑰 (n, e) 並將 (n, e) 發送給所有士兵。士兵們每天都在等待愛麗絲的指令,要麼是“攻擊”,要麼是“不要攻擊”。Alice 通過 RSA 將加密消息“攻擊”作為密文發送給所有士兵。現在假設其中一名士兵是惡意的,並且已經黑了 Alice 的傳遞方式(例如電子郵件),但沒有黑她的私鑰。並在另一天向所有其他士兵發送相同的“攻擊”加密密碼文本。什麼可以防止這種情況發生(即使您使用填充總是會導致解密消息“攻擊”)?

我想一種方法是為所有消息添加時間戳,士兵必須確保日期與當天匹配。但是,僅通過密文就可以向其他人發送相同的確切消息似乎仍然不正確……或者我錯過了什麼?

如果 Alice 發送加密消息,那麼她的公鑰根本不涉及。她為每個收件人的資訊加密 $ (n, e) $ 單獨配對,並向他們發送量身定制的消息。

實際上,她可能會發送使用 AES 加密的消息,並且僅使用 RSA 向每個收件人發送他們的解密密鑰副本,即 PKCS#7 的 EnvelopedData。

在這個方案中,接收者無法知道消息實際上來自 Alice。她需要做的是簽署消息(加密後,以獲得最佳結果),該消息確實使用她的私鑰。

在這一點上,正如您所觀察到的,仍然有一個重播向量。因此,消息需要包含某種方式來辨識其新鮮度。單調時間戳是一種簡單的方法,單調消息計數器是另一種方法,或者是共享程式碼書中的某種預先安排的關鍵字(如果您喜歡奇思妙想)。

所以收件人會:

  • 使用 Alice 的公鑰驗證密文和加密密鑰的完整性。(證明它是由 Alice 發送的)
  • 使用他們的私鑰解密/派生消息加密密鑰。
  • 解密密文以顯示原始消息。
  • 驗證時間戳/計數器。(證明不是重播)
  • 對內容做出適當的回應。

時間戳可能已簽名但未加密,它僅取決於它本身是否是敏感數據。

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