PKCS 1.5 填充是否使攻击者可以提取私钥?在身份验证上下文中使用 PKCS 1.5 是否安全?

信息安全 验证 RSA pkcs1
2021-09-08 07:30:16

我目前正在为 Android 编写一个基于 RSA 的身份验证应用程序,即使您可以物理访问没有锁屏/PIN 的手机,也应该无法复制。

但是,由于 bouncycastle 实现中的错误,手机内部的 HSM 确保私钥永远不会离开存储,只能“使用”,仅支持 PKCS 1.5 填充。

加密的消息每次都会不同(随机数),因此不可能观察到两个加密消息在网络上是相同的。

攻击者或对手虽然无法访问手机,但也无法访问填充预言机。该应用程序的工作原理是让用户扫描一个加密的 QR,然后这个加密的 QR 解密成一个 OTP 代码。是的,攻击者可以在网络钓鱼页面或被劫持的连接上显示包含填充错误的二维码,并观察用户是否继续进行身份验证(输入有效的 OTP),但我在某些页面上读到的是填充预言攻击需要对填充进行数百万次“测试”。

当攻击者或对手确实可以访问手机时,攻击者可以将手机本身用作填充预言机,而且,当可以访问手机时,攻击者仍然可以使用该应用程序解密任意消息。

必须满足的安全目标是:

  • 虽然攻击者无权访问手机,但攻击者应该无法进行身份验证。

  • 如果攻击者确实可以访问手机,即使是很长时间,他也应该能够进行身份验证,但不能提取私钥。

  • 当攻击者不再有权访问电话时,例如,如果攻击者是之前被解雇的员工,然后上交了电话,则攻击者应该不再能够进行身份验证,即使他以前确实有权访问手机,即使安全硬件内部的密钥对也没有改变。

在此页面上,答案提到可以通过安装填充预言攻击来提取私钥: OAEP 在 RSA 中解决了哪些特定的填充弱点?

但是,维基百科页面没有提到私钥的泄露:https ://en.wikipedia.org/wiki/Padding_oracle_attack

但是维基百科页面提到,使用填充预言,攻击者能够通过检查填充预言回复来解密任意消息,而无需访问解密引擎的密钥或明文输出。但是,在这种情况下,当攻击者确实可以访问填充预言时,攻击者也可以访问明文输出,反之亦然,这意味着当攻击者确实可以访问解密引擎时,已经可以解密任意消息,而不必诉诸填充预言机攻击。

这两件事是完全不同的,因为有了私钥,攻击者可以在他不再访问 padding oracle 的情况下进行解密,但是如果 padding oracle 只能用于解密消息,那么 padding oracle 就变得无用了在这种情况下对攻击者来说,因为当攻击者不再具有padding oracle访问权限时,他就无法再进行解密,并且达到了安全目标。

我的问题是:

1:在这种情况下使用PKCS 1.5安全吗?

2:真的可以使用填充预言提取私钥,还是填充预言只允许任意消息解密?两篇链接的文章在这方面模棱两可。

1个回答

在这种情况下使用 PKCS 1.5 是否安全?

我不能在这里回答“不”。出于任何实际目的,建议避免“在这种情况下安全”。例如,如果您只关心保护私钥(而不是消息本身的机密性),为什么还要使用 RSA 加密?此外,如果 BouncyCastle 尚未修复该错误 - 很可能很快就会修复它(顺便说一下,你报告了吗?)。

是否真的可以使用填充预言提取私钥,或者填充预言是否只允许任意消息解密?

不,RSA Padding Oracle 只允许任意消息解密(我们不是在谈论定时攻击等)。所以 RSA 私钥在手机的 HSM 中是安全的。

CRYPTO'12论文是有关将填充甲骨文密钥包装-一个键被“包装”(又名RSA加密),通过令牌,和“展开”有(又名解密和使用准备在此标记)。将此攻击应用于普通加密/解密是没有意义的,因为如果您拥有设备(您的手机、您的加密令牌)和 PIN - 您可以告诉设备解密您在一个请求中获得的任何密文,不需要一点一点的撬开。

另外,您会考虑基于签名而不是解密的身份验证方案吗?

更新

我之所以选择基于解密而不是签名的身份验证方案,是因为签名变得很大,只要密钥。

对于 RSA 加密,密文与密钥(模数)一样大,就像在 RSA 签名中一样(出于同样的原因 - 这就是填充的用途)。但我想这并不重要,因为它是作为二维码扫描传递给手机的……?

但系统也需要在没有任何网络连接的情况下工作,因此我将系统基于加密的二维码,解密为一个简单的 OTP 字符串,在服务器上输入

根据您的评论,您的意思是手机本身可能未连接,即它无法对 QR 扫描的内容做出反应。它只是显示结果(大概是用户可以轻松输入的相当短的内容)。

在您描述的用例中,我想没关系。而且您的私钥无论如何都不会暴露。尽管我想知道您的公钥将如何从手机传输到服务器,服务器将使用它来加密此特定客户端的 OTP(因此您的手机在某个时间点需要一些连接)。