Rsa

OAEP 如何提高 RSA 的安全性?

  • May 17, 2013

用於 RSA 加密的 OAEP 算法的核心是加密雜湊函式 $ H $ 和 $ G $ .

每個人(也是對手)都知道這些功能嗎?

  • **如果是:**如果他可以解碼填充並閱讀消息,它對安全性有何幫助?
  • **如果否:**這些功能需要哪些知識?是否事先交換過鑰匙或其他東西?它們與接收者私鑰有關嗎?

嗯,是的,每個人(或者至少每個可以使用公鑰的人)都知道雜湊函式 H 和 G;所以我們可以假設對手也知道他們。

你問:

**如果是:**如果他可以解碼填充並閱讀消息,它對安全性有何幫助?

好吧,他無法解碼填充;密文已使用 RSA 加密,他沒有私鑰;所以他無法獲得填充版本。

以下是 OAEP 的工作方式;你接收明文消息 $ m $ 發送,你選擇一個隨機值 $ r $ ,併計算函式:

$ Padded = OAEP(m, r) $

(H 和 G 作為 OAEP 的一部分)。然後,一旦我們有了它,我們就使用基本的 RSA 公開操作(使用公鑰)對其進行加密:

$ Ciphertext = RSA(PublicKey, Padded) $

這 $ Ciphertext $ 是實際發送的;因為它是使用 RSA 加密的,所以攻擊者無法恢復 $ Padded $ .

那麼,如果 OAEP 操作不能阻止攻擊者以這種直接的方式解密密文,那它為什麼會存在呢?

好吧,原始 RSA 有一些令人討厭的屬性(稱為同胚屬性),即:

$ RSA(k, A) \times RSA(k, B) = RSA(k, A\times B) $

(在哪裡 $ \times $ 是隱式模公鑰模數)。

由於這個特性,使用原始 RSA 直接加密明文幾乎總是錯誤的做法;有一些巧妙的方法可以使用這個同胚屬性來恢復明文。

OAEP 函式所做的是嘗試在明文和填充版本之間模擬隨機函式;因為我們用有效的隨機文本呈現原始 RSA 操作,所以這些同胚屬性是無關緊要的。

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