将数据分割成更小的部分,然后使用 RSA 加密

joe*_*lrc 5 encryption cryptography rsa

我正在做一些需要加密大量数据的事情。

我知道这应该使用像 AES 这样的对称密钥加密系统而不是像 RSA 这样的公钥加密系统来完成,但我正在考虑使用 RSA 来完成,将数据分割成更小的部分,然后用相同的公钥。

除了性能考虑之外,这种方法安全吗?这种加密方式容易被破解吗?

rbr*_*ito 6

不,它不安全。

您本质上是使用 RSA 作为分组密码,正如您已经指出的那样,您可能应该在这个地方使用对称密码。

此外,正如 @Jamey 所指出的,这种相互独立地加密明文块/块的方案本质上类似于分组密码的电子密码书(ECB)操作模式。

在不使用其他任何东西的情况下,您提出的方案至少容易受到两种攻击:

  • 如果您的方案中没有包含任何其他信息以防止消息的重用,则为重放攻击。例如,攻击者记录了 Alice 和银行之间的所有加密流,并从她的账户中提取了 100.00 美元。

    在这种情况下,通过多次重放流,攻击者可以通过多次向银行发送流来使 Alice 破产,这样就可以了。

  • 选择明文攻击,因为块是独立的,在这种情况下攻击者的优势将为 1(尽可能高)。

确实,尝试提出自己的密码很有趣,但获得正确的安全性却很困难。没有完整性/认证就更是如此。


注意:由于人们似乎错过了我原来帖子中“不使用其他任何东西”的部分,因此我的答案不断被否决。

我想我应该明确指出,上面是关于“纯 RSA”或“教科书 RSA”的使用,其中不包括使用 RSA 密码的随机填充(“其他任何内容”)。

在实际应用中,“其他任何事情”是使用OAEP(一种用随机位简单填充原始消息的“更强形式”),如更新版本的PKCS#1标准中所包含的那样。

  • 对称密码和非对称密码都可能发生重放攻击。RSA PKCS#1 加密使用随机填充,因此 ECB 攻击不起作用。否则,您将无法使用相同的密钥加密多条消息。我认为选择的明文攻击也不起作用,但在我可以“得出”任何相关结论之前,我必须让我的大脑思考清楚。 (3认同)

Jam*_*arp 0

一般建议是这样的:如果你真的关心安全性,就不要发明新的密码系统;或者,如果必须的话,至少让严肃的密码学研究人员对其进行公开同行评审。

也就是说,我得到的最好的消息是,这听起来像是您将 RSA 视为一种分组密码,因此您可能希望使用标准分组密码模式。显而易见的事情,即使用相同的密钥分别加密每个块,听起来相当于电子密码本(ECB)模式,这是不安全的。也许您可以使用更好的模式之一,例如 CBC 和 RSA?

由于我们忽略了实际的性能问题,因此我将指出一个不同的实际考虑因素。RSA 的输入必须在 0<= <m范围内,其中是公钥参数之一。由于 的值必须是两个不同质数的乘积,因此它永远不可能是 2 的幂,因此将较大的消息分成适合 RSA 输入的块会有点混乱。mnnn

另外,不要忘记填充使用 RSA 加密的每条消息。

简而言之:不要为真正的项目这样做,但这是一个巧妙的思想实验。:-)

  • 请参阅我对 jbrito 的回答的评论。 (2认同)