我有一些 base-64 编码的加密数据,并注意到大量重复。在(大约)200 个字符长的字符串中,某个 base-64 字符在几个单独的重复运行中最多重复 7 次。
这是加密存在问题的危险信号吗?根据我的理解,即使明文是完全一致的,加密数据也不应该出现明显的重复(即即使我加密了 2 GB 的只有字母 A 的内容,在加密版本中也不应该出现明显的重复)。
我有一些 base-64 编码的加密数据,并注意到大量重复。在(大约)200 个字符长的字符串中,某个 base-64 字符在几个单独的重复运行中最多重复 7 次。
这是加密存在问题的危险信号吗?根据我的理解,即使明文是完全一致的,加密数据也不应该出现明显的重复(即即使我加密了 2 GB 的只有字母 A 的内容,在加密版本中也不应该出现明显的重复)。
根据二项式分布,您会看到一组 64 个字符中的一个字符在 200 个随机字符系列中出现七次的几率约为 2.5%。这是一个很小的机会,但不容忽视。有了更多信息,您可能会将您的置信度从 97.5% 提高到非常接近 100% 的程度……或者发现密文确实是均匀分布的。
您说在几个单独的重复运行中“字符最多重复7 次”。没有足够的信息来说明密文是否有偏见。相反,告诉我们字符出现的总次数,以及密文字符的总数。例如,“它在 1000 次运行中总共出现了 3125 次,每次运行 200 个字符。”
此外,您需要确保您谈论的是密码的原始输出。密文通常被封装在一个“信封”中,就像加密消息语法所定义的那样。当然,这种封闭结构将具有可预测的模式。
好吧,我想这取决于。如果重复代表相同的数据,一般来说重复是一件坏事。
考虑到您正在对其进行编码,您是否查看了数据以查看是否有在这些计数中重复的内容?
为了更好地理解,您必须知道它使用哪种加密。他们重复可能只是巧合。
但是,如果重复来自相同的数据,那么它可能是一个危险信号,因为可以使用频率计数来对其进行解码。
您使用的是哪种加密方式?自制还是一些行业标准?
这取决于您如何加密数据。
Base64 编码字符串可能算作轻度混淆,但它不是加密。Base64 编码的目的是允许将任何类型的二进制数据编码为安全的 ASCII 字符串。