在没有填充的情况下实现 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,ipxbsfzpv”。现在攻击者有可能意识到该模式并翻译真实消息并读取机密消息。由于没有Padding的RSA,这可能会发生。
因此,我们需要隐藏消息的结构以确保其安全。而这只能通过Padding来完成,其中添加随机数据以隐藏原始格式线索。