定义


E:AES加密
D:AES解密
x:纯文本
y:加密文本
k:密钥

在原始AES密码中,


加密:y = E(x,k)
解密:x = D(y,k)

然后我如下定义“反向AES密码”。


加密:y = D(x,k)
解密:x = E(y ,k)

“反向AES密码”是否可以像原始AES一样安全?
,或者,但是强度不能简单地与AES媲美吗?
,还是不安全?

或者,有谁知道任何可以如上所述使用并且可以安全且实用的AES密码?

评论

请注意,通常,加密例程将填充您的数据以使其大小正确,而解密例程将检查该填充是否“正确”并将其删除。

我很确定它是安全的,但我标记为将其转移到此站点。我无法在此站点或互联网上找到决定性的答案。

@xanatos我想我们在这里谈论的是单块加密,否则问题应该包含操作模式和填充模式。

我想指出的是,您的结构的正确性(E(D(m,k),k)= m∀m)并不是那么明显;有些密码系统无法正常工作。在此给出正确性的原因是,分组密码是置换并且因此是双射的。因此,每个左逆也是一个右逆。

#1 楼

首先,我假设我们正在谈论的是精确加密/解密128位数据,即AES的块大小。否则,您将需要指定一种操作模式-并且,如果您的数据长度不是块大小的整数倍,那将更加难以处理。因此,我假设我们正在处理单个块。 (如果使用的是操作模式,则以下内容将不适用;有关更多详细信息,请参见其他答案。)

AES模拟了一种称为伪随机置换(PRP)的理论构造。本质上,这意味着如果我们建立一个游戏,给我们提供多项式时间限制的对手访问权,则(1)一个计算真实随机排列的oracle或(2)一个计算伪随机排列的oracle(随机选择)密钥),那么对手就无法确定他们获得了哪些访问权限,并且具有不可忽视的优势。 (他们总是可以猜测一个或另一个,因此他们有50%的机会猜对了; PRP安全要求指出的是,他们不能获得超过50%的任何不可忽略的机会。)

PRP有一个更强的概念,即强伪随机排列。在功能强大的PRP游戏中,不仅让对手访问计算有问题的排列的oracle:还使他们可以访问排列的逆。就分组密码而言,这意味着它们不仅可以访问加密预言,还可以访问解密预言。

就我们所知,AES确实是一个强大的PRP,因此对于单个块,交换加密和解密功能应该没问题。然后,您可以在其他分组密码操作模式中使用它。例如,

#2 楼

好吧,事实证明这取决于您所说的“ AES密码”的含义。

如果您正在谈论分组密码原语,也就是说,如果您通过采用AES定义备用分组密码,并交换“加密”和“解密”方向,那么,替代分组密码与AES一样强大。它可以在我们通常与AES一起使用的任何操作模式下使用,并且也可以正常工作。实际上,如果我们有证据表明您的分组密码有任何特定的弱点,那将立即转化为AES内部的弱点。 ,并使用“解密”模式进行加密,根据模式的不同,您可能会遇到意想不到的问题(或者它可能根本无法工作;它不适用于任何身份验证加密模式)。对于CBC模式,是的,您可能会遇到问题(有关扩展讨论,请参阅下面的内容);对于CTR(计数器)模式,您不需要(实际上,加密和解密是完全相同的操作,因此交换两者并不会真正改变任何内容)。

现在,关于CBC模式和您可能会遇到的弱点:

加密期间的CBC模式不受选择的明文攻击的影响(假设IV是随机选择的);也就是说,如果攻击者指定了明文,然后检查了加密的密文,则(很有可能)没有给他有关他可能拥有的任何其他密文的信息。实际上,即使您猜测出受攻击的密文可能是确切的纯文本,并要求对其进行加密,生成的密文也将与他已经拥有的密文无关(很有可能)。这是因为IV充当整个消息的随机化器。

对于解密模式下的CBC模式,情况并非如此。 IV仅影响第一个块;因此(在此模型中)如果攻击者提交了猜测的纯文本,则它将是完全相同的密文(可能是第一个块除外);因此,在此模型中CBC模式解密不安全。之所以使用,是因为我们在消息中添加了消息身份验证代码;如果攻击者提交自己的密文,则MAC将失败,因此他将不会学到任何东西。但是,如果您使用CBC模式解密来“加密”,则我们没有MAC。