是否可以区分使用同一组中的不同加密算法加密的字符串?

时间:2015-03-12 20:29:21

标签: security machine-learning cryptography unsupervised-learning

是否可以区分使用不同加密算法加密的字符串?

如果我有一组来自不同加密算法的N个加密字符串(即来自AES的100个,来自tripleDES的150个......)我想知道是否有可能出现一种合理的错误字符串的聚类(即AES集群中的111,tripleDES集群中的139)也简化了加密的密钥或字符串是相同的,显然没有先验知识(即使有培训可以很有趣)。

有一些作品,论文,玩具示例吗?

谢谢

2 个答案:

答案 0 :(得分:1)

不,如果算法中没有严重的缺陷,就无法区分彼此。有关更详细的说明,请参阅herehere

答案 1 :(得分:1)

是的,您可以根据其密文来区分某些密码,但这并不适用于所有操作模式。

关键观察是AES和Triple DES具有128位和64位的不同块大小。这意味着7字节消息在3DES中长8字节,在AES中长16字节。但填充也在这方面起作用。如果明文大小是块大小的倍数,PKCS#5填充将添加整个填充块。这意味着对于3DES,8字节消息的长度为16字节,对于AES,长度为16字节。

例如:如果明文消息的长度均匀分布,则有50%的可能性可以区分两者,因为3DES可以有24字节的密文,但AES不能。或者换句话说,您可以在50%的时间内查看它是否是3DES,但您无法确定是否使用了AES。这个零填充的概率是相同的,但匹配长度略有不同。

这适用于欧洲央行,加拿大广播公司和其他一些国家。另一方面,在CTR模式下,不能使用密文的长度,因为密文的长度始终与明文的长度相同。 CTR模式本质上是一个流密码。

如果块大小没有区别,那么就无法区分它们,因为现代密码的设计方式与噪声无法区分。