请说明 RSA 加密中常见的填充模式,并比较 PKCS1 与 OAEP 两种填充方式在机制和安全性上的主要差异。
考察说明
考查对 RSA 填充模式的理解,重点区分 PKCS1 与 OAEP 的机制和安全性差异。
回答思路
- 【回答框架 1】RSA 填充模式用于将明文转换为与模数等长的整数,并引入随机性,防止确定性加密导致的语义泄露。常见模式包括 PKCS1 v1.5 和 OAEP。
- 【回答框架 2】PKCS1 v1.5 填充格式为 0x00 0x02 后跟随机非零字节,再以 0x00 分隔明文,长度需满足要求。其结构简单,但存在 Bleichenbacher 攻击风险,即利用填充校验错误进行选择密文攻击,需谨慎实现。
- 【回答框架 3】OAEP 基于 Feistel 网络,使用哈希函数和掩码生成函数,将明文与随机种子混合,生成不可预测的填充。解密时通过逆运算恢复,并验证冗余信息,能有效抵抗选择密文攻击,安全性更高。
- 【回答框架 4】实际应用中,OAEP 是更安全的选择,推荐用于新系统;PKCS1 v1.5 因兼容性仍在使用,但必须确保实现不泄露填充错误细节。选择时需权衡安全性与兼容性。
- 【回答框架 5】两者均需注意明文长度限制:PKCS1 v1.5 最大明文长度为 k-11 字节,OAEP 为 k-2*hLen-2 字节,其中 k 为模数字节数,hLen 为哈希输出长度。
- 【关键点 1】PKCS1 v1.5 填充结构固定,存在 Bleichenbacher 攻击风险,需防御性实现。
- 【关键点 2】OAEP 引入随机性和冗余校验,提供更强的安全性,推荐用于新系统。
- 【关键点 3】明文长度限制不同:PKCS1 为 k-11,OAEP 为 k-2*hLen-2。
- 【关键点 4】填充模式影响密文随机性和安全性,选择需结合应用场景。
- 【易错点 1】不能将 PKCS1 填充错误信息泄露给攻击者,否则可能被利用进行 Bleichenbacher 攻击。
- 【易错点 2】OAEP 的哈希函数选择需一致,否则解密失败。
- 【易错点 3】忽略明文长度限制会导致加密失败或数据截断。