4

我正在考虑以下内容:我有一些数据流,我想尽可能地保护它们——应用一些 IV 的 AES,然后是一些 IV 的 Blowfish,最后再应用一些 AES 是否有意义四?

加密/解密过程将被隐藏(甚至可以防止调试),因此很难猜测使用了哪种加密方法和什么 IV(但是,我知道这个加密链的力量不能依赖关于这个事实,因为每个针对调试的保护在一段时间后都会被破坏)。

我有这方面的计算机能力(数据量不是那么大)所以问题只是它是否值得实施。例如,TripleDES 的工作方式非常相似,使用三个 IV 和加密/解密/加密方案,因此它可能并非完全是胡说八道。另一个问题是,当我对第 1 部分和第 3 部分使用相同的 IV,甚至对所有三个部分使用相同的 IV 时,我会降低多少安全性?

我欢迎有关此主题的任何提示

4

14 回答 14

11

我不确定这个特定的组合,但是除非已经对特定的组合进行了广泛的研究,否则混合这样的东西通常是一个坏主意。有可能数学变换实际上会相互抵消,最终结果会更容易破解。AES 或 Blowfish 的单遍应该绰绰有余。

更新:从我下面的评论中......</p>

以 TripleDES 为例:想想世界上最好的密码学家花了多少时间和精力来创建这种组合(请注意,DoubleDES 有一个漏洞),尽管有 192 位密钥,但他们能做的最好的事情是 112 位安全性。

更新 2:我必须同意 Diomidis 的观点,即 AES不可能成为您系统中的薄弱环节。系统的几乎所有其他方面都比 AES 更容易受到损害。

更新 3:根据您对流的处理,您可能只想使用TLS(SSL 的后继者)。我推荐Practical Cryptography了解更多细节——它在解决您需要解决的许多问题方面做得非常好。除其他事项外,它还讨论了流密码,它可能比 AES 更合适,也可能不更合适(因为 AES 是一种分组密码,并且您特别提到您有一个要加密的数据流)。

于 2008-09-23T09:58:51.323 回答
4

我认为通过在与第一个非常不同的另一个加密算法之上应用一种加密算法,您没有什么可以放松的。然而,我会警惕在第一轮之上运行第二轮相同的算法,即使你在两者之间运行了另一个。两次运行之间的交互可能会打开一个漏洞。

话虽如此,我认为您在加密部分上苦恼了太多。大多数数据泄露不是通过破坏行业标准加密算法(如 AES)而发生的,而是通过系统中的其他弱点发生的。我建议花更多时间研究密钥管理、未加密数据的处理、算法实施中的弱点(泄露数据或密钥的可能性)以及更广泛的系统问题,例如,你在做什么数据备份。

于 2008-09-23T10:03:15.307 回答
4

黑客总是会攻击链中最薄弱的元素。因此,使强元素变得更强大几乎没有什么帮助。使用 128 位密钥长度已经不可能破解 AES 加密。河豚也是如此。选择更大的密钥长度会变得更加困难,但实际上 128 位迄今为止从未被破解(并且可能不会在未来 10 或 20 年内)。所以这种加密可能不是最弱的元素,那么为什么要让它变得更强呢?它已经很强大了。

想想还有什么可能是最弱的元素?四号?实际上,我不会浪费太多时间来选择或隐藏它。最弱的密钥通常是加密密钥。例如,如果您正在加密存储到磁盘的数据,但您的应用程序需要读取这些数据,您的应用程序需要知道 IV 并且它需要知道加密密钥,因此它们都需要二进制文件中。这实际上是最弱的元素。即使您采用 20 种加密方法并将它们链接到您的数据上,所有 20 种的 IV 和加密密钥也需要在二进制文件中,如果黑客可以提取它们,那么您使用 20 种而不是 1 种加密方法这一事实提供了零额外安全。

由于我仍然不知道整个过程是什么(谁加密数据,谁解密数据,数据存储在哪里,如何传输,谁需要知道加密密钥等等),所以很难说最弱的元素到底是什么,但我怀疑 AES 或 Blowfish 加密本身是你最弱的元素。

于 2008-09-23T10:44:00.153 回答
1

您试图保护您的数据免受谁的侵害?你的兄弟,你的竞争对手,你的政府,还是外星人?

其中每一个都有不同的级别,您可以在有意义的预算(时间/现金)内认为数据“尽可能安全”

于 2008-09-23T09:58:39.903 回答
1

我不会依赖于掩盖您正在使用的算法。这种“默默无闻的安全”不会长期有效。反编译代码是揭示您正在使用的加密货币的一种方式,但通常人们不会长期保留这样的秘密。这就是为什么我们首先拥有私钥/公钥加密。

于 2008-09-23T10:11:57.657 回答
0

此外,不要浪费时间混淆算法 - 应用基尔霍夫原理,并记住 AES 就其本身而言,在大量需要“安全”数据的地方使用(并承认使用)。

于 2008-09-23T10:00:28.293 回答
0

Damien:你说得对,我应该写得更清楚。我说的是竞争对手,它是用于商业用途的。所以有有意义的预算可用,但我不想在不确定我知道为什么这样做的情况下实施它:)

汉克:是的,这也是我害怕的。最支持这个想法的来源是 TripleDES。另一方面,当我使用一种算法加密某些数据,然后应用另一种算法时,如果整个加密的“力量”小于使用独立算法,那将是非常奇怪的。但这并不意味着它不能相等......这就是我要求一些提示的原因,这不是我的知识领域......

于 2008-09-23T10:05:36.517 回答
0

Diomidis:这基本上是我的观点,但我的同事试图让我相信它确实“增强”了安全性。我的建议是使用更强的加密密钥,而不是一个接一个的算法,而不需要任何思考或深入了解我在做什么。

于 2008-09-23T10:10:13.793 回答
0

@Miro Kropacek - 你的同事正试图通过 Voodoo 来增加安全性。相反,尝试构建一些可以分析缺陷的简单东西——比如只使用 AES。

我猜是他(她?)建议通过调试保护来增强安全性......

于 2008-09-23T10:14:11.660 回答
0

如果您使用不同的 IV 和密钥进行多次加密,实际上不会降低安全性,但安全性的提升可能远低于您的预期:在 2DES 的示例中,中间相遇攻击意味着它的难度只有两倍,而不是平方难度。

不过,总的来说,如果您需要更高的安全性,坚持使用单一的知名算法并增加密钥长度会更安全。将编写密码系统留给专家(我不认为自己是其中之一)。

于 2008-09-23T10:32:22.663 回答
0

加密两次比加密一次更安全,尽管一开始可能不清楚。

直观地说,使用相同的算法加密两次似乎没有提供额外的保护,因为攻击者可能会找到一个从最终密文一直解密回明文的密钥。... 但这种情况并非如此。

例如,我从明文A开始并使用密钥K1对其进行加密以获得B。然后我用密钥K2加密B以获得C

直观地说,假设很可能有一个密钥K3,我可以用它来加密A并直接获取C ,这似乎是合理的。如果是这种情况,那么使用暴力破解的攻击者最终会偶然发现K3并能够解密C,结果是额外的加密步骤没有增加任何安全性。

但是,这种密钥不太可能存在(对于任何现代加密方案)。(当我在这里说“极不可能”时,我的意思是普通人会用“不可能”这个词来表达)。

为什么?
将密钥视为提供从明文到密文的映射的函数。
如果我们的密钥长度都是KL位,那么就有 2^KL 这样的映射。但是,如果我每个使用 2 个KL
位 的密钥,这会给我 (2^KL)^2 映射。 并非所有这些都可以等同于单阶段加密。

如果使用 2 种不同的算法,加密两次的另一个优点是,如果在其中一种算法中发现漏洞,另一种算法仍然提供一些安全性。

正如其他人所指出的,暴力破解密钥通常是最后的手段。攻击者通常会尝试在其他某个时间点破坏该过程(例如,使用社会工程来发现密码短语)。

另一种提高安全性的方法是简单地使用更长的密钥和一种加密算法。

...随时纠正我的数学!

于 2008-09-24T11:07:31.527 回答
0

是的,它可能是有益的,但在大多数情况下可能会矫枉过正。此外,正如汉克所说,某些组合实际上会削弱您的加密。

TrueCrypt 提供了许多组合加密算法,例如 AES-Twofish-Serpent。当然,使用它们时会有性能损失。

于 2008-09-24T15:03:52.720 回答
0

更改算法并不能提高质量(除非您希望算法被破坏),它仅与密钥/块长度和混淆方面的一些优势有关。多次这样做很有趣,因为即使第一个密钥泄露,生成的数据也无法与随机数据区分开来。有些块大小在给定平台上处理得更好(例如寄存器大小)。

攻击质量加密算法只能通过暴力破解,因此取决于您可以花费的计算能力。这意味着最终您只能增加某人需要解密它的可能平均时间。

如果数据具有真正的价值,他们最好不要攻击数据,而是攻击密钥持有者......

于 2008-09-24T17:36:30.357 回答
-1

我同意上面所说的。多个阶段的加密不会给您带来太多收益。如果您使用的是“安全”算法,那么几乎不可能破解。在某些标准流模式下使用 AES。见http://csrc.nist.gov/groups/ST/toolkit/index.html对于接受的密码和模式。如果使用得当,该网站上推荐的任何内容都应该足够安全。如果您想更加安全,请使用 AES 256,尽管 128 仍然应该足够了。最大的风险不是针对算法本身的攻击,而是针对密钥管理的攻击或侧信道攻击(取决于应用程序和使用情况,这可能是也可能不是风险)。如果您的应用程序容易受到密钥管理攻击或旁道攻击,那么您应用多少级别的加密实际上并不重要。这就是我要集中精力的地方。

于 2008-09-28T14:05:48.293 回答