RSA-OAEP和RSA-PKCS1.5之间的区别

时间:2018-06-28 00:50:33

标签: encryption cryptography rsa padding

RSA-OAEP和RSA-PKCS1.5有什么区别? 我的理解是它们都是RSA加密,但是使用不同的填充方案。 一个相对于另一个的优势是什么? 如果我生成RSA 2048海盗和公钥对,是否可以使用同一密钥对加密和解密OAEP填充与PKCS1.5填充的消息?

2 个答案:

答案 0 :(得分:3)

至少要全面一点,但要尽量简单,答案可以在What is RSA OAEP & RSA PSS in simple terms (InfoSec.SE)

中找到

您从InfoSec.SE的答案中询问了What is the advantage of one over the other?

  

这次出了什么问题?

     

事实证明,错误答案可以“成功解密”。任何消息C都可以对任何带有奇数的4096位密钥k有效

1/256 * 1/256 * (255/256)^8 * (1 - (255/256)^502)
     

(“第一个字节为零”,“第二个字节为2”,“ 8个字节内没有零”,“最终出现零”)

0.004 * 0.004 * 0.996^8 * (1 - 0.996^502)
0.004 * 0.004 * 0.969 * (1 - 0.140)
0.004 * 0.004 * 0.969 * 0.860
1.27e-5
     

因此,每78,000条消息中大约有1条是“有效”的,但是是错误的。这可能会使Bob感到困惑,并使他说些愚蠢的话作为回应。如果夏娃(空余时间比马洛里更多)希望她现在可以开始发送鲍勃聪明的胡言乱语,并观察他说自己感到困惑的时间,那么最终夏娃可以弄清楚原来的信息是什么。 (Bleichenbacher attack (Crypto.SE)

您还问了can I use the same key pair to encrypt and decrypt a message that is OAEP padded vs PKCS1.5 padded?

如果您的意思是“软件会让我来吗?”答案是肯定的。如果您是说“这是个好主意吗?”,那么在FIPS 186-4第5.1节中,美国政府的要求是

  

用于数字签名的RSA密钥对只能用于一种数字签名方案(例如ANS X9.31,RSASSA-PKCS1 v1.5或RSASSA-PSS;请参见5.4和5.5节)。此外,RSA数字签名密钥对不得用于其他目的(例如,密钥建立)。

因此,该文档的作者至少建议不要对OAEP和PKCS1.5使用相同的密钥。

IETF RFC 8017 section 6不建议这样做:

  

通常的良好加密做法是使用给定的RSA密钥      配对只有一种方案。这就避免了存在漏洞的风险      一种方案可能损害另一种方案的安全性,并且可能      对维持可证明的安全性至关重要。 [...]

     

说明与使用RSA密钥对有关的风险      在多个方案中,假设在两个方案中都使用了RSA密钥对      RSAES-OAEP(第7.1节)和RSAES-PKCS1-v1_5。虽然RSAES-OAEP      本身会抵抗攻击,对手可能会利用      执行RSAES-PKCS1-v1_5的弱点来恢复      使用任何一种方案加密的邮件。

答案 1 :(得分:1)

PKCS#1 ....请参见https://tools.ietf.org/html/rfc3447#page-23

区别的真正非常简短的细分:

PKCS1.5或更正式的形式是EME-PKCS1-v1_5定义了一个仅附加到消息M的填充,主要由与消息长度有关的随机字节组成...

意味着:如果“ MESSAGE”进入PKCS1.5,您将获得类似“ MESSAGE#GARBAGE#”的信息

注意:如果随机部分中的某些位发生更改,则不会真正影响解密操作...出于密码原因,这是错误的,但这超出了SO的范围...为此到https://crypto.stackexchange.com/

OAEP:定义一个全有或全无操作,以根据消息M和随机数r产生伪随机消息M'。

您需要M'的每一端恢复r和解码M

EME-PKCS1-V1_5应该被视为不安全且已弃用