RSA CCA 和 CPA 的标准方案是否安全?

信息安全 RSA
2021-09-09 10:20:34

我正在查看信息安全课程中的旧测试 - 并且有一个关于 RSA 的 CCA 和 CPA 安全性的问题。

我似乎无法理解如何表现出不安全感或证明这一点的安全性。(这不是作业题,仅供个人理解)

问题如下(与基本方案 RSA 相关):
对于CPA secure,是否存在算法A使得给定一些密文c,选择 m 明文 pt 1,pt 2,pt 3,pt 4,...,得到他们的密文,然后返回给定密文c的明文p

对于CCA 安全,是否存在算法B使得给定一些密文c,选择 m 个密文 ct 1 ,ct 2 ,ct 3 ,ct 4 ,... ,获取它们适当的明文,并返回正确的p密文c

1个回答

您的“基本 RSA”可能不是PKCS#1中指定的标准 RSA,而是所谓的“教科书 RSA”,这是不安全的,因为它被简化为核心模幂运算并且不包括必不可少的填充。

在“教科书 RSA”中,公钥由n(模数)和e(公共指数)组成。私钥是d(私人指数)。明文是整数模nm的加密m e mod n解密是通过提高d次幂来获得的,因为(m e ) d = m mod n对于0n-1范围内所有整数m 。

事实上,教科书 RSA 对选择的密文攻击并不安全,原因如下:对于模数n和所有消息mm',您有:

(mm') e = (m e )(m' e ) mod n

换句话说,产品的加密是加密的产品。在 CCA 设置中:

  • 有一条消息m及其密文c = m e mod n攻击者知道c并想找到m
  • 攻击者被允许获得他选择的密文的解密,只要它们都不等于c
  • 攻击者生成一个随机m'(模n)并计算c' = m' e mod n
  • 攻击者要求解密cc' mod n:这是一个整数模n,与c不同,因此攻击者得到响应。
  • 响应必然等于mm' mod n攻击者知道m'(他自己选择),所以他很容易计算出m 。

至于选择的明文攻击如果要提供任何安全性,非对称加密必然对 CPA 是安全的。事实上,加密使用的公钥是公开的,因此每个人都知道,包括攻击者。如果攻击者想要加密他选择的一些消息,那么他……就这么做了。他不需要私钥所有者的任何帮助,因为加密只使用公共元素。

如果教科书 RSA 对 CPA 不安全,那么带有填充的标准RSA 也会很弱:使用他的破坏方法,攻击者将恢复填充的消息,并从中获得未填充的消息。

现在这并不意味着教科书 RSA对无法获得自定义密文解密的攻击者是安全的。教科书 RSA (至少)存在以下非常严重的问题:

  • 如上所述,它对 CCA 是不安全的。
  • 如果消息是一个小整数,那么 RSA 问题可能会变得很容易。例如,如果m是 200 位整数并且公共指数是e = 3,则m e是 600 位整数,而模数通常更大(至少 1024 位)。这意味着可以使用简单的非模立方根(这很容易)来恢复m 。
  • 教科书 RSA 是确定性的;因此,如果消息本身可以进行暴力破解(例如,它是密码),则可以通过尝试潜在的消息值直到找到匹配项来恢复它。

PKCS#1 中指定的标准填充解决了这些问题:填充确保填充的整数足够大;填充包括随机字节。旧式 PKCS#1 填充(称为“v1.5”)实际上对 CCA 的攻击力不是很强,尽管在正确使用时它仍然可以说是不错的,就像在 SSL 中一样(它要求 SSL 服务器在解密时抱怨)客户端发送的内容没有语法上有效的填充)。新型 PKCS#1 填充(称为“OAEP”)是强大的(甚至“被证明是强大的”以获得适当的“证明”的含义)。