是否可以区分使用同一组中的不同密码算法加密的字符串?
Is possible to distinguish strings encrypted with different cryptography algorithms that are in the same set?
是否可以区分使用不同密码算法加密的字符串?
如果我有一组来自不同加密算法的 N 个加密字符串(即 100 个来自 AES,150 个来自 tripleDES,等等...)我想知道是否有合理的错误字符串的某种集群(即 AES 集群中的 111,tripleDES 集群中的 139)还简化了加密的密钥或字符串是相同的,并且显然没有先验知识(即使有一个培训可能很有趣)。
有一些作品、论文、玩具示例吗?
谢谢
是的,您可以根据密文区分一些密码,但这并不适用于所有操作模式。
主要观察结果是 AES 和 Triple DES 的块大小不同,分别为 128 位和 64 位。这意味着 7 字节的消息在 3DES 中为 8 字节长,在 AES 中为 16 字节长。但是填充在这方面也有一定的作用。如果明文大小是块大小的倍数,PKCS#5 填充将添加整个填充块。这意味着 8 字节的消息对于 3DES 将是 16 字节长,对于 AES 将是 16 字节长。
例如:如果明文消息的长度均匀分布,那么你有50%的机会可以区分两者,因为3DES可以有24字节的密文,而AES则不能。或者换句话说,您可以在 50% 的时间内查明它是否是 3DES,但您不能确定是否使用了 AES。这个补零的概率是一样的,只是匹配长度略有不同。
欧洲央行、加拿大央行和其他一些机构也是如此。另一方面,在 CTR 模式下,不能使用密文的长度,因为密文的长度始终与明文的长度相同。 CTR模式本质上是一种流密码。
如果块大小没有差异,则无法区分它们,因为现代密码的设计方式无法与噪声区分开来。
是否可以区分使用不同密码算法加密的字符串?
如果我有一组来自不同加密算法的 N 个加密字符串(即 100 个来自 AES,150 个来自 tripleDES,等等...)我想知道是否有合理的错误字符串的某种集群(即 AES 集群中的 111,tripleDES 集群中的 139)还简化了加密的密钥或字符串是相同的,并且显然没有先验知识(即使有一个培训可能很有趣)。
有一些作品、论文、玩具示例吗?
谢谢
是的,您可以根据密文区分一些密码,但这并不适用于所有操作模式。
主要观察结果是 AES 和 Triple DES 的块大小不同,分别为 128 位和 64 位。这意味着 7 字节的消息在 3DES 中为 8 字节长,在 AES 中为 16 字节长。但是填充在这方面也有一定的作用。如果明文大小是块大小的倍数,PKCS#5 填充将添加整个填充块。这意味着 8 字节的消息对于 3DES 将是 16 字节长,对于 AES 将是 16 字节长。
例如:如果明文消息的长度均匀分布,那么你有50%的机会可以区分两者,因为3DES可以有24字节的密文,而AES则不能。或者换句话说,您可以在 50% 的时间内查明它是否是 3DES,但您不能确定是否使用了 AES。这个补零的概率是一样的,只是匹配长度略有不同。
欧洲央行、加拿大央行和其他一些机构也是如此。另一方面,在 CTR 模式下,不能使用密文的长度,因为密文的长度始终与明文的长度相同。 CTR模式本质上是一种流密码。
如果块大小没有差异,则无法区分它们,因为现代密码的设计方式无法与噪声区分开来。