Cryptography 使用不同密钥解密相同密码文本(AES)

Cryptography 使用不同密钥解密相同密码文本(AES),cryptography,encryption,Cryptography,Encryption,假设我有一个密钥-k和纯文本p。然后我使用密钥k用AES加密p: C=AES_k(p) 现在让我们假设我选择了另一个纯文本-p*。这个纯文本与p无关,我选择它成为我想要的任何东西 有没有可能找到一个密钥-k*,这样当我用k*解密C时,我会得到p* 意思是: D_k*(AES_k(P))=P*这对于您选择的任何纯文本都不可能。能够将密文解密为任意明文意味着称为“完美安全”(或“完美保密”) 例如,如果我有密码ADGWTX,并且我知道它是使用简单的XOR和一个6个字母的密钥加密的,如果没有关于密钥的

假设我有一个密钥-k和纯文本p。然后我使用密钥k用AES加密p:

C=AES_k(p)

现在让我们假设我选择了另一个纯文本-p*。这个纯文本与p无关,我选择它成为我想要的任何东西

有没有可能找到一个密钥-k*,这样当我用k*解密C时,我会得到p*

意思是:
D_k*(AES_k(P))=P*

这对于您选择的任何纯文本都不可能。能够将密文解密为任意明文意味着称为“完美安全”(或“完美保密”)

例如,如果我有密码ADGWTX,并且我知道它是使用简单的XOR和一个6个字母的密钥加密的,如果没有关于密钥的更多信息,我仍然无法破解它。因为一把钥匙会让我逃跑,而另一把钥匙会让我攻击


完美的安全性是“一次性键盘”(one-time pad)的一项功能,但不是AES。

我认为钥匙不一定存在。键定义块中所有可能值的排列。对于128位块大小,有(2^128)!可能的排列。对于256位密钥,有2^256个可能的密钥。这大大少于排列的数量,因此不是每个排列都可以指定。我认为——虽然我当然不能证明,甚至不能争辩——这意味着可能没有一种可指定的排列方式将你选择的第二个明文映射到密文


如果确实存在这种排列,我认为很难找到。如果简单的话,已知的明文攻击密码将是微不足道的。

我在这里假设明文和密文p、p*和C都是128位块

如果你的密钥k和k*有128位长度(即你使用的是AES-128),那么,概率大约为36.8%,则没有解决方案:更正式地,如果考虑C和P*(2256个组合)的所有可能值的集合,那么对于它们中的E-1,则没有K *,因此AESYK* *(P*)=C.

这源于这样的想法,即对于给定的p*值,将k*转换为AES_k*(p*)的函数应表现为随机函数,并且从一组大小N到一组相同大小N的随机函数的平均覆盖范围为目标集的1-e-1。这里,对于给定的P*,128位字中约有63.2%是使用128位密钥对P*进行AES加密的可能输出

另一方面,如果您允许k*更宽(AES也接受192位和256位密钥),那么您的方程应该有很多解k*

无论如何,实际查找k*(即使是192位或256位k*)应该是不可行的,因为工作系数接近2128个操作。能够用比这更少的工作量找到k*可以被视为AES中的一个结构性缺陷。对P和k的了解毫无帮助:对于给定的128位密文C,很容易找到匹配对(P,k)


注意:如果您使用AES并交换明文和密钥的角色,那么您将获得具有有限输入和128位输出的哈希函数的粗略模拟。您所要求的是对该散列函数进行预映像攻击的可行性。

有可能获得k*并解密C以获得明文p*,但只有通过使用另一种类型的密码(如vernam密码)对其进行解密

你可以得到k*,这样D_k*(AES_k(p))产生你的p*

你只要做:p*^C就可以得到你的k* 然后,如果解密:k*^C,则得到P*(假设C和P*大小相等)

但是如果p*的大小小于C,那么它将产生一个重复的p*

^:按位异或


我不确定这是否是你想要的,你没有提到你也想用AES解密它。

你真的在问是否有可能找到密钥,或者更简单地说,是否存在这样一个密钥?两者-我感兴趣的是这样一个密钥是否存在,然后如果有任何有效的方法产生它,它是否存在(考虑所有可能的选择,试图发现这是不可行的)。我同意密钥不一定存在,但我认为AES-128可能存在,AES-192可能有2^64个这样的密钥,AES-256可能有2^128个这样的密钥。他只限制了结果置换的一个条目。@GregS根本不可能存在-合理大小的可能明文数量非常多y、 远远大于键的数量。@尼克·约翰逊:我假设它是一个单独的块,这个答案也是如此。一个单独的随机键映射P*到C的概率约为2^(-128)尼克·约翰逊:我想你指的是排列的数量,而不是块的数量。但是@GregS是对的,因为我们只关心排列中的一点,它存在的几率比我建议的要大得多。不过,你仍然找不到它的钥匙。@Tom Anderson:我相信你的意思是说“128!可能的排列。”你能提供一个提示,说明如何计算随机函数的1-e^-1平均覆盖率吗?