在密码学中 ,最优非对称加密填充 (英语:Optimal Asymmetric Encryption Padding ,缩写:OAEP )是一种经常与RSA加密 一起使用的填充方案 。OAEP由Mihir Bellare 和Phillip Rogaway 发明[ 1] ,随后在PKCS#1 v2 和RFC 2437中得到标准化。
OAEP算法是费斯妥密码 的一种形式,它使用一对随机预言 G和H在进行非对称加密 之前处理明文。OAEP与任何安全的陷门单向置换
f
{\displaystyle f}
结合使用在随机预言模型 中被证明是一种在选择明文攻击 (IND-CPA )下语义安全 的组合方案。当使用某些陷门置换(如RSA)实现时,OAEP也被证明可以抵抗选择密文攻击 。OAEP可用于构建全有或全无转换 (all-or-nothing transform)。
OAEP满足以下两个目标:
添加随机性元素,这可用于将确定性加密 方案(如传统 RSA )转变为概率加密 方案。
通过确保无法反转陷门单向置换
f
{\displaystyle f}
,从而无法恢复明文的任何部分,来防止密文的部分解密(或造成其他信息泄漏)。
当OAEP与任何陷门置换一起使用时,OAEP的原始版本(Bellare/Rogaway, 1994)在随机预言机模型中显示了一种“明文知晓性 ”的形式(他们声称这意味着对选择密文攻击 是安全的)。然而随后的结果与这一点相抵触,表明OAEP仅是IND-CCA1 安全的。但是与RSA-OAEP的情况一样,当将OAEP与使用标准加密指数的RSA置换一起使用时,在随机预言模型中 证明了原始方案是IND-CCA2 安全的。[ 2] Victor Shoup 提供了一种改进的方案(称为OAEP+),该方案可与任何陷门单向置换配合使用,以解决此问题。[ 3] 近期的研究表明,在标准模型 中(即当哈希函数未建模为随机预言时),无法在假定RSA问题的难度下证明RSA-OAEP具有IND-CCA2安全性。[ 4] [ 5]
算法
OAEP 是一种费斯妥密码
在图中,
n 是 RSA 模数的位数。
k 0 和 k 1 是协议中的固定整数。
m 是n -k0 -k 1 位长的明文消息
G 和 H 是随机预言 ,如加密散列函数 。
⊕ 是异或运算。
编码过程包括如下步骤:
用 k 1 位长的 0 将消息填充至 n - k 0 位的长度。
随机生成 k 0 位长的串 r
用 G 将k 0 位长的 r 扩展至 n - k 0 位长。
X = m 00...0 ⊕ G (r )
H 将 n - k0 位长的 X 缩短至 k 0 位长。
Y = r ⊕ H (X )
输出为 X || Y ,在图中 X 为最左边的块,Y 位最右边的块。
随后可以使用 RSA 加密编码的消息,使用 OAEP 可以避免 RSA 的确定性。
解码过程包括如下步骤:
恢复随机串 r 为 Y ⊕H (X )
恢复消息 m 00...0 为 X ⊕ G (r )
安全性
“全有或全无 ”的安全性基于以下事实:要恢复 m ,必须完整地恢复 X 和 Y。 从 Y 中恢复 r 需要 X ,而从 X 中恢复 m 需要 r 。由于加密哈希的任何更改的位都完全改变了结果,因此整个 X 和整个 Y 必须都被完全恢复。
实现
在 PKCS#1 标准中,随机预言 G 和 H 是相同的。但 PKCS#1 标准进一步要求随机预言应是具有合适散列函数的 MGF1 。[ 6]
参见
参考文献
^ M. Bellare , P. Rogaway . Optimal Asymmetric Encryption -- How to encrypt with RSA . Extended abstract in Advances in Cryptology - Eurocrypt '94 Proceedings, Lecture Notes in Computer Science Vol. 950, A. De Santis ed, Springer-Verlag , 1995. full version (pdf) (页面存档备份 ,存于互联网档案馆 )
^ Eiichiro Fujisaki, Tatsuaki Okamoto, David Pointcheval, and Jacques Stern . RSA-- OAEP is secure under the RSA assumption . In J. Kilian, ed., Advances in Cryptology -- CRYPTO 2001, vol. 2139 of Lecture Notes in Computer Science, SpringerVerlag, 2001. full version (pdf) (页面存档备份 ,存于互联网档案馆 )
^ Victor Shoup. OAEP Reconsidered . IBM Zurich Research Lab, Saumerstr. 4, 8803 Ruschlikon, Switzerland. September 18, 2001. full version (pdf) (页面存档备份 ,存于互联网档案馆 )
^ P. Paillier and J. Villar, Trading One-Wayness against Chosen-Ciphertext Security in Factoring-Based Encryption , Advances in Cryptology -- Asiacrypt 2006.
^ D. Brown, What Hashes Make RSA-OAEP Secure? (页面存档备份 ,存于互联网档案馆 ), IACR ePrint 2006/233.
^ Brown, Daniel R. L. What Hashes Make RSA-OAEP Secure? (PDF) . IACR Cryptology ePrint Archive. 2006 [2019-04-03 ] . (原始内容存档 (PDF) 于2016-07-22) (英语) .