在没有填充的情况下实现 RSA 算法有什么风险?

RSA 算法代表 Rivest-Shamir-Adelman 算法。RSA 算法是最常用的公钥算法,该算法可用于加密和签名。

RSA 使用可变大小的加密块和可变大小的密钥。密钥对来自一个非常大的数字,比如 n,它是通过特殊规则选择的两个大素数的乘积。

公钥包含 n 并推导出 n 的一个因子,对手无法确定 n 的质因子,仅凭这些信息,RSA 算法就变得如此安全。

因此,当使用足够长的密钥时,通常认为它是安全的。

RSA 的安全性依赖于分解大整数的难度。

现在,填充只是填充数据结构的部分或任何其他通常由 1 位、空白或空字符组成的数据。填充使 RSA 算法更加安全,因为它用一些其他人难以理解的其他消息填充数据。

攻击

现在,在没有填充的情况下实施 RSA 存在许多风险,因为可能会发生以下攻击:

  • 前向搜索攻击- 消息文本可能是可预测的。攻击者可以通过加密所有可能的消息来解密文本消息,直到获得与原始消息文本的匹配项。这样攻击者就知道了对应的明文。因此,没有 Padding 的 RSA 在语义上是不安全的。

  • 通用模数攻击- 每个人都有可能获得相同的模数,但配对不同的密钥,然后在某些条件下,可以解密消息。

  • 低加密指数- 当使用低加密指数加密时,表示 e 和 m 的小值,me 的结果小于模数。在这种情况下,密文很容易解密。

  • RSA 具有两个密文的乘积等于各自明文的乘积的加密的性质。由于这种乘法特性,选择密文攻击是可能的。

填充通过在加密之前用随机值填充消息来解决所有这些问题,例如 m,它确保 m 不会落入不安全的明文范围,并且一旦填充,给定的消息文本将加密为难以理解的大量可能的密文.

实施RSA的风险

下面解释了在实际示例中实现 RSA 而不填充的风险:

让需要发送的秘密消息是“嗨,你好吗”。现在为了确保它的安全,让我们按特定顺序用其他一些字母替换每个字母,即将每个字母更改为字母中紧随其后的字母。

因此,我们的文本将类似于“ij, ipx bsf zpv”。现在攻击者有可能意识到该模式并翻译真实消息并读取机密消息。由于没有 Padding 的 RSA,这可能会发生。

因此,我们需要隐藏消息的结构以确保其安全。而这只能通过 Padding 来完成,其中添加随机数据以隐藏原始格式线索。