数据的 DES、三重 DES、AES、河豚加密的比较

Posted

技术标签:

【中文标题】数据的 DES、三重 DES、AES、河豚加密的比较【英文标题】:Comparison of DES, Triple DES, AES, blowfish encryption for data 【发布时间】:2011-07-30 02:21:30 【问题描述】:

有没有人比较这些加密算法的优缺点?

【问题讨论】:

这个问题更适合:security.stackexchange.com 也许你的意思是crypto.stackexchange.com? :) 【参考方案1】:

使用 AES。

更多细节:

DES 是七十年代的旧“数据加密标准”。它的密钥长度太短,无法保证适当的安全性(56 个有效位;这可能是暴力破解的,正如 more than ten years ago 所证明的那样)。此外,DES 使用 64 位块,这在使用相同密钥加密数 GB 数据时会引发一些潜在问题(现在 1 GB 并没有那么大)。 3DES 是一种重用 DES 实现的技巧,通过级联 DES 的三个实例(具有不同的密钥)。 3DES 被认为是安全的,至少达到“2112”的安全性(这是相当多的,并且在“用当今的技术无法破解”的领域中相当远)。但它很慢,尤其是在软件方面(DES 是为高效的硬件实现而设计的,但它在软件方面很糟糕;而 3DES 的速度是后者的三倍)。 Blowfish 是 Bruce Schneier 提出的分组密码,并部署在一些软件中。 Blowfish 可以使用巨大的密钥并且被认为是安全的,除了它的块大小是 64 位,就像 DES 和 3DES 一样。 Blowfish 在软件方面是高效的,至少在某些软件平台上是这样(它使用依赖于键的查找表,因此性能取决于平台如何处理内存和缓存)。 AES 是 DES 的继承者,作为美国联邦组织的标准对称加密算法(也作为几乎所有其他人的标准)。 AES 接受 128、192 或 256 位的密钥(128 位已经非常牢不可破),使用 128 位块(所以没有问题),并且在软件和硬件方面都很高效。它是通过几年来数百名密码学家参与的公开竞争选出的。基本上,你没有比这更好的了。

因此,如有疑问,请使用 AES。

请注意,块密码是一个加密“块”(使用 AES 的 128 位数据块)的盒子。加密可能超过 128 位的“消息”时,必须将消息拆分成块,而实际拆分的方式称为mode of operation 或“链接”。朴素模式(简单拆分)被称为 ECB 并且存在问题。正确使用分组密码并不容易,而且比在 AES 或 3DES 之间进行选择更重要。

【讨论】:

有点疯狂,我几乎总是推荐 AES256 天哪,美国国家安全局可以在 1976 年破解 DES,但一直鼓励使用它直到 2002 年!叫我偏执狂,但我害怕推动 AES【参考方案2】:

除 AES 和 Blowfish 外,所有这些方案都存在已知漏洞,不应使用。 但是,Blowfish 已被 Twofish 取代。

【讨论】:

【参考方案3】:

所描述的加密方法是对称密钥分组密码。

数据加密标准 (DES) 是其前身,使用 56 位密钥加密 64 位块中的数据。每个区块都被隔离加密,这是一个安全漏洞。

三重 DES 通过对每个块应用三个 DES 操作来扩展 DES 的密钥长度:使用密钥 0 的加密、使用密钥 1 的解密和使用密钥 2 的加密。这些密钥可能是相关的。

在与传统商业产品和服务交互时通常会遇到 DES 和 3DES。

AES 被认为是继任者和现代标准。 http://en.wikipedia.org/wiki/Advanced_Encryption_Standard

我认为不鼓励使用 Blowfish。

强烈建议您不要尝试实现自己的加密,而是使用高级实现,例如 GPG 用于静态数据或 SSL/TLS 用于传输数据。这是一个关于加密漏洞的精彩视频http://rdist.root.org/2009/08/06/google-tech-talk-on-common-crypto-flaws/

【讨论】:

为什么不鼓励使用河豚?那不是最安全的吗? @yogsma:Blowfish 的块大小只有 64 位(因为它是作为协议中 DES 的替代品),因此在使用相同的数据加密一些 GB 数据后会出现问题键。 @rohannes,为什么不鼓励使用 BlowFish,我在某处读到 BlowFish 的性能比 AES 好,请查看 brighthub.com 上的这篇文章【参考方案4】:

AES 是一种对称加密算法,而 RSA 是一种非对称(或公钥)加密算法。加密和解密在 AES 中使用单个密钥完成,而在 RSA 中使用单独的密钥(公钥和私钥)。 128 位 AES 密钥的强度大致相当于 2600 位 RSA 密钥。

【讨论】:

您能否提供支持此答案的数学或来源?我很想知道您是如何得出 128 位 AES 大致相当于 2600 位 RSA 的结论(我意识到这是一个旧答案) @RussellUhl - 我同意这些数字的历史是一个有趣的问题,即使在沉默了两年之后也是如此。 :) 这些数字似乎可以从这篇 PDF 论文中推导出来:eprint.iacr.org/2013/635.pdf,标题为 Universal security - from bits and mips to pools, lakes – and beyond【参考方案5】:

虽然 TripleDESCryptoServiceProvider 是一种安全又好的方法,但是它太慢了。如果你想参考 MSDN,你会得到建议你使用 AES 而不是 TripleDES。请检查以下链接: http://msdn.microsoft.com/en-us/library/system.security.cryptography.tripledescryptoserviceprovider.aspx 你会在备注部分看到这个注意:

注意 一种较新的对称加密算法,高级加密 标准 (AES),可用。考虑使用 AesCryptoServiceProvider 类而不是 TripleDESCryptoServiceProvider 类。采用 TripleDESCryptoServiceProvider 仅用于与旧版兼容 应用程序和数据。

祝你好运

【讨论】:

这很有趣,因为微软仍在他们的一些产品中积极使用 TripleDES 进行加密 (en.wikipedia.org/wiki/Triple_DES#Usage) @Tom 你说得对,但不要忘记许多软件使用旧技术,这需要时间来适应新方法。特别是对于像微软这样的大公司,虽然我同意你关于需要更新的观点,当我们公司建议一些事情并做其他事情时,这很糟糕。 微软因向后兼容而臭名昭著。他们对 TripleDES 的使用直接属于“仅用于与遗留应用程序和数据的兼容性”。【参考方案6】:

AES 是当前接受使用的标准算法(因此称为高级加密标准)。

其余的都没有。

【讨论】:

因此得名?那么名称“AES”如何表明应该使用它? 数据加密标准怎么样?您的逻辑“名称中有 - 因此这是应该使用的”是有很大缺陷的。【参考方案7】:
                DES                               AES
Developed       1977                              2000
Key Length      56 bits                           128, 192, or 256 bits
Cipher Type     Symmetric                         Symmetric
Block Size      64 bits                           128 bits
Security        inadequate                        secure
Performance     Fast                              Slow

【讨论】:

AES 比 3DES 快,尤其是在支持 AES-NI 的 CPU 上。 (但即使没有 - DES 是为快速硬件实现而设计的,而不是软件实现)(普通DES is slightly faster on some benchmarks,但 56 位密钥使其不适合任何当前使用)【参考方案8】:

DES 是七十年代的旧“数据加密标准”。

【讨论】:

【参考方案9】:

除 AES 和 Blowfish 外,所有这些方案都存在已知漏洞,不应使用。

如果包装好,它们实际上都可以安全使用。

Here 是 AES 包装的一个示例。

【讨论】:

以上是关于数据的 DES、三重 DES、AES、河豚加密的比较的主要内容,如果未能解决你的问题,请参考以下文章

AES DES加密有啥区别啊?

Big-O 表示法:加密算法

除了DES,AES,还有哪更强的加密算法吗?哪个更好些?

三重Des对称加密在AndroidIos 和Java 平台的实现

具有 2 个不同密钥的 Java 三重 DES 加密

AES和DES的比较