RSA-OAEP(RSA最优非对称加密填充)算法
字数 1280 2025-10-29 11:32:03
RSA-OAEP(RSA最优非对称加密填充)算法
题目描述:
RSA-OAEP是一种结合RSA加密与OAEP填充的算法,用于解决基础RSA的确定性加密缺陷(如对明文模式的可预测性)。OAEP通过随机化填充增强安全性,确保即使重复加密同一明文,密文也不同。要求解释OAEP的填充结构、加密解密步骤,以及如何通过哈希函数和掩码生成函数实现语义安全。
解题过程:
1. 基础概念
- 问题:基础RSA加密若直接对明文操作,相同明文总生成相同密文,易受选择明文攻击。
- OAEP目标:引入随机数,使加密结果随机化,同时通过填充结构抵御部分攻击(如CCA2)。
2. OAEP填充结构
填充过程将明文转换为固定长度的“填充后消息”,再交由RSA加密:
-
输入参数:
- 明文
M(长度需小于RSA模数位数,如2048位) - 随机数
r(长度由哈希函数决定,如SHA-1为160位) - 哈希函数
H(如SHA-256) - 掩码生成函数
MGF(通常基于哈希函数构造)
- 明文
-
步骤:
- 扩展明文:将明文
M填充至固定长度k - hLen - 1(其中k为RSA模数字节数,hLen为哈希输出长度)。填充格式为PS || 0x01 || M,其中PS为全零字节串,确保长度匹配。 - 生成随机数:生成随机种子
r。 - 掩码计算:
- 用
MGF(r, k - hLen - 1)对扩展明文掩码,得到 maskedMessage。 - 用
MGF(maskedMessage, hLen)对种子r掩码,得到 maskedSeed。
- 用
- 拼接最终消息:结构为
maskedSeed || maskedMessage。
- 扩展明文:将明文
3. 加密过程
- 对明文
M执行OAEP填充,得到消息EM。 - 将
EM视为大整数,使用RSA公钥(e, n)计算密文:
\[ C = EM^e \mod n \]
4. 解密过程
- 使用RSA私钥
(d, n)解密密文:
\[ EM = C^d \mod n \]
- 反掩码操作:
- 从
EM分离 maskedSeed 和 maskedMessage。 - 计算
r = maskedSeed ⊕ MGF(maskedMessage, hLen)。 - 恢复扩展明文:
DB = maskedMessage ⊕ MGF(r, k - hLen - 1)。
- 从
- 验证填充:检查
DB格式是否为PS || 0x01 || M(PS为全零,结尾为0x01)。若无效则拒绝解密,防止填充预言攻击。
5. 安全性关键点
- 随机数
r:确保相同明文生成不同密文,实现语义安全。 - MGF函数:通过哈希链扩展短种子为长掩码,避免直接重复哈希。
- 填充验证:解密时严格检查格式,抵御攻击者通过错误密文探知明文信息。
总结:RSA-OAEP通过随机化填充和双向掩码操作,将RSA提升为适应性选择密文安全(CCA2)的加密方案,广泛应用于TLS、PGP等标准中。