Rsa
OAEP 如何提高 RSA 的安全性?
用於 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 操作,所以這些同胚屬性是無關緊要的。