以下问题纯属理论性质。我没有应用程序。


是否存在使AES成为身份功能的密钥?
是否存在使AES成为某些身份功能的密钥
输入?
是否知道这样的密钥是否可能存在?
这样的密钥是否被其他密码知道?

例如,我想用“ Hello StackExchg”加密带有所述密钥和密文的AES应该再次为“ Hello StackExchg”。

当我用完美的一次性密码加密“ Hello StackExchg”时,有可能再次得到的密文“ Hello StackExchg”。这种可能性必须存在(尽管它实际上很小),否则,密文将不是完全随机的,而是取决于明文。一次性键盘的对应密钥为全零。

评论

您是在问这对于单个固定输入还是全部输入都适用?

请澄清您的要求。您是否在询问是否存在密钥k和明文x这样E_k(x)= x?还是您在问是否存在一个密钥k,使得所有x都为E_k(x)= x?

#1 楼

在“理想密码”模型中,块密码是输入块空间的排列,在所有此类排列中均是选择的。经过加密的纯文本是排列的固定点;预计所有置换中约有63.21%具有至少一个固定点(没有固定点的置换称为重排)。

因此,假设AES是理想密码,则它是预计在大约三分之二的可能密钥中,将至少有一个明文块被自身加密。

现在,发现固定点是另一回事了;实际上,我们期望不能轻易找到该固定点,甚至无法确定它是否存在-“道德”原因是,在随机排列中找到固定点需要准确地将其击中,这类似于蛮力在整个输入空间上施加力,对于AES,大小为2128。换句话说,如果我们可以找到固定点或什至(非建设性地)证明任何特定密钥的存在或不存在,则这意味着我们可以将AES与理想密码模型区分开,这将令人担忧。

(另请参见关于crypto.SE的答案。)

注意:尽管大多数AES密钥应至少具有一个固定点,但强烈希望有没有将AES转换为身份功能的密钥(即所有纯文本均为固定点):共有128个!可能的排列,一个比2256 + 2192 + 2128可能的AES密钥大的数字,因此标识排列不太可能与一个密钥相对应。但是话又说回来,我们不希望能够证明这一点。

评论


$ \ begingroup $
我怀疑有人可以为最后一段创建一个挥手的“证明”。假设AES密钥X的固定点为纯文本Y(其中Y至少与密钥大小一样大)。如果更改了Y的任何给定位,则要使X成为身份密钥,必须更改Y的完全相同的位(但没有其他位)。但是,通过观察AES的“搅拌”是如何工作的,改变输入的任何一位会完全改变输出的同一位(也只有该位)是不正确的。因此,X不能是身份密钥。
$ \ endgroup $
–有资格
16年4月13日在8:13

$ \ begingroup $
@abligh听起来像是对这个问题的合理答案。
$ \ endgroup $
–用户
16年4月13日在14:45

$ \ begingroup $
@MichaelKjörling我已经将其转换为答案。托马斯虽然完成了大部分工作!
$ \ endgroup $
–有资格
16年4月13日在16:36

$ \ begingroup $
@abligh:这不能证明没有密钥可以使AES成为身份。可以证明两轮之后,AES不是一个身份,但是AES有10-14轮;当您进入第三轮比赛时会发生什么事很难建模。现在,不太可能有一个AES密钥,但这基本上就是Thomas所说的...
$ \ endgroup $
–雨披
16年4月13日在19:37

#2 楼


是否有使AES成为身份功能的密钥?


不,可能不是。这意味着将在可能的几乎无限排列中选择正确的排列。


是否存在使AES成为某些输入的标识函数的密钥? br />

这种可能性更大,但要找到它并不容易。


是否知道这样的键是否可能存在?


据我所知。但是我无法回答地球上其他人口的问题。


这样的密钥是否为其他密码所熟知?


您可能正在寻找的是

Enigma已经具有避免将明文加密为相同密文的特定方法。如果现代分组密码具有可导致身份功能的密钥,则该现代分组密码将被视为已破坏。现代的分组密码不应具有较弱的密钥。即使仅针对该密钥,输出也将明显区别于随机数。

现在,单个纯文本将产生相同密文的机会当然与要加密的大小有关。对于像AES这样的块密码,它将是块大小。很容易看出,给定特定密钥,特定明文以$ 1 / {2 ^ {n}} $的确定性对其自身进行加密的机会。

还有$ 2 ^ {n} $可能的纯文本,当然还有$ 2 ^ {k} $个键(其中$ n $是块大小,$ k $是键大小)。这意味着,很可能存在一个密钥/明文组合,这将导致置换在明文和密文之间具有相同关系的地方同时存在。

麻烦之处在于,通常以一种很难找到这种组合的方式来构造分组密码。当然,对于具有某种弱密钥的DES,双DES将是创建类似于身份函数的分组密码的主要候选者。您只需使用已知的弱密钥和presto:身份功能进行两次加密。

AES竞赛要求候选人拥有完全随机的密钥,并且-当然,没有弱密钥[需要引用]。将其与相对较大的块大小/密钥大小结合使用,甚至可能需要花费大量的搜索才能找到具有单个“身份关系”的密钥。

评论


$ \ begingroup $
好吧,这个答案只是等待被数学上更倾向于的答案所掩盖,但是我希望它至少提供一个“普通英语”的Jip和Janneke答案(Louis van Gaal至少会称它为英语翻译当然是用简单/简单的语言进行的解释)。
$ \ endgroup $
–马腾·博德威斯♦
16-2-23在14:41



$ \ begingroup $
“现代的分组密码如果具有可导致身份功能的密钥,则将被视为已破译。”为什么呢。
$ \ endgroup $
– Biv
16-2-23在14:47

$ \ begingroup $
几乎无限的可能排列。选择一个确切的身份函数将意味着将为此而构造密码。在功能上,您肯定会遇到一个问题,即密码被用于构造其他原语,例如哈希函数,DRBG等。当然,除了令人费解的问题,某些明文实际上并未进行加密。
$ \ endgroup $
–马腾·博德威斯♦
16-2-23在15:01

$ \ begingroup $
好像是“不要选那个钥匙”的情况。我们不认为RSA仅仅因为某些numbskull可以将公共指数设置为1而被破坏。
$ \ endgroup $
– user2357112支持Monica
16-2-23在19:38

$ \ begingroup $
那将是无效的密钥对。 AES除了密钥大小以外,没有任何无效值。因此,您不会考虑这种愚蠢。当然,您仍然可以使用全零密钥,但是在查看密文时看不到它。
$ \ endgroup $
–马腾·博德威斯♦
16-2-23在19:46



#3 楼

我已经将我的评论转换为答案。

Thomas Pornin准确地阐明了为什么AES中可能存在固定点(对于给定的密钥K,存在一个明文等于密文) 。

让我解释一下为什么在所有纯文本输入的明文等于密文的情况下,没有密钥K(即没有身份密钥)。这不是一个完全严格的证明,但是此评论得到了一些好评,因此我将其作为一个答案,与托马斯的答案一起阅读。是一个纯文本P,它等于密文C。如果K是一个身份密钥,那么您必须能够修改P的任何给定位,并且它必须以相同的方式修改密文C(否则K不会是一个身份键,因为P和C会有所不同)。但是,AES的一个已知属性是将纯文本修改一位会影响密文超过一位。从本质上讲,这是Rijndael S-Boxes的属性,在其中构建了AES,并且存在多个回合。一种设计标准是,纯文本中的单个位更改可能会影响密码文本中的每个位;对于所有不受影响的对象,其概率为2 ^ 1(地穴文本中的位数)。假设密码文本中的位数很大(即比密钥中的位数大得多),这意味着确实不可能有一个身份映射适用于给定长度的密码文本。由于真正的身份密钥必须对任意(无限长)长度的纯文本和加密文本起作用,因此实际上这意味着没有身份密钥。

该证据并不完全严格,因为它依赖于AES满足其设计标准,但“应该”。

简而言之:如果AES可以完成AES应该做的事情,那么几乎不可能存在一个身份密钥。如果AES不执行应做的工作,那么我们担心的不只是身份密钥。

评论


$ \ begingroup $
我认为您不能严格地推断“ AES的一个已知特性是,将纯文本修改一点会影响密文超过一位”。对于单个回合来说确实如此,但是我看不到它如何扩展到许多回合。实际上,该属性似乎不太可能成立。
$ \ endgroup $
–fgrieu♦
16-4-13在17:14



$ \ begingroup $
@fgrieu如果它在第一轮中影响多个位,那么又如何在接下来的回合中不影响多个位呢?
$ \ endgroup $
–有资格
16年4月13日在17:36

$ \ begingroup $
@abligh,随后的回合可能会撤消前一轮的更改。因此,您无法保证。
$ \ endgroup $
–mikeazo
16-4-13在17:46



$ \ begingroup $
@mikeazo从理论上讲,但是正如我所说的,“此证明...依赖于AES满足其设计标准”,其中之一是最小化Rijndael S-Box的输入和输出位的相关性,以及每一步的线性度。因此,尽管有可能一轮可能(完全)撤消前一轮,但它绝对不可能(如我所估计的那样)-只需一点区别就可以使密钥成为身份密钥。如果某个密钥具有每个回合都将上一轮反向的属性,则意味着AES具有一些非常弱的密钥-与重新设计的假设相反。
$ \ endgroup $
–有资格
16年4月13日在17:59

$ \ begingroup $
这不是严格的证明。
$ \ endgroup $
– kodlu
16年4月18日在0:26