Padding

如果 OAEP 將隨機性引入加密,如何解密密文?

  • February 21, 2019

我正在研究 OAEP,看到我們引入了一個隨機值 $ r $ 在計算填充時。見下圖來自維基百科

那麼,如果我們在加密中添加隨機性,那麼這個密文如何映射到明文呢?我理解明文 $ m $ 被映射到眾多 $ c_i $ ?

還要解密,難道我們不需要知道 $ r $ ? 在這種情況下 $ r $ 成為一把鑰匙 https://en.wikipedia.org/wiki/Optimal_asymmetric_encryption_padding

要解密密文,您肯定需要恢復隨機令牌 $ r $ . 但 $ r = Y \oplus H(X) $ . 然後知道 $ r $ 填充的消息可以恢復為 $ m0\dots0 = X \oplus G(r) $ . 解密器只需要知道隨機令牌的大小 $ r $ 這通常是標準的一部分。當然,標準必須定義 $ F $ 和 $ G $ 功能以及如何填充消息。填充過程必須使得解密後取消填充的消息具有確定性和唯一性。

加密過程中添加的隨機性使得可以訪問加密預言(或觀察大量消息及其影響)的攻擊者無法創建對應的字典 $ (m_i, c_i)_{i\in S} $ 在哪裡 $ c_i = Enc(m_i) $ . Goldwasser 和 Micali 的論文“機率加密”(Shafi Goldwasser 和 Silvio Micali,機率加密,電腦和系統科學雜誌特刊,第 28 卷,第 2 期,第 270 頁)首次定義了該屬性-299,1984 年 4 月)

你是對的,在解密中我們需要知道 $ r $ ,但是這可以很容易地從單獨的密文中恢復,實際上, $ r = Y \oplus H(X) $ 和兩者 $ X,Y,H $ 是已知的。然後消息可以恢復為 $ m00..0 = X \oplus G(r) $

現在,您可能想知道如何從零開始,或者等效地,解密器如何區分 $ X $ 和 $ Y $ . 好吧,其實真正的 OAEP 比維基百科的圖要復雜:來自 PKCS#1 的 OAEP 填充

這裡, $ lHash $ 是標籤的雜湊, $ PS $ 是要填充的零八位字節, $ 01 $ 是一個 $ 0x01 $ 字節用於刪除 $ PS $ 填充和 $ M $ 是原始消息。

的大小 $ seed $ 和 $ lHash $ 僅取決於所選散列函式的輸出大小,解密器應知道該大小。

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