security - 64 位 RC2 的安全性如何?

标签 security encryption rc2-cipher

在加密中,如果两个对称算法的 key 大小相等,它们的安全性是否会被认为是相等的? (即 64 位 RC2 算法是否提供与 64 位 AES 算法相同的安全性?)

使用 64 位 RC2 算法有多安全(或不安全)?

我预计暴力攻击需要多长时间才能破解这种加密?

使用此算法可以保护哪些类型的数据? (例如,我猜信用卡信息不能用这个算法加密,因为算法不够安全)。

最佳答案

一般来说,等效的 key 大小并不意味着等效的安全性,原因有很多:

首先,只是某些算法已知攻击而其他算法不知道的情况。 key 的大小只是破解密码所需努力的上限;在最坏的情况下,您始终可以尝试所有可能的 key 并在检查一半 key 空间后(平均)成功。这并不意味着这是最好的攻击方式。这是一个示例:具有 128 位 key 的 AES 使用 10 轮。如果您使用 AES 和 128 位 key ,但只使用一轮,即使 key 大小相同,它也很容易被破解。对于许多算法,已知的攻击可以在搜索整个关键空间时更快地破坏算法。

在分组密码的情况下,还有其他考虑因素。这是因为分组密码以比特 block 的形式处理数据。在您开始加密大量数据后,有各种组合属性开始发挥作用。例如,使用常见的 CBC 模式,在加密大约 2^(n/2) 个 block 后开始遇到问题(这个问题是 CBC 固有的)。对于像 RC2 这样的 64 位密码,这意味着 2^32 个 64 位 block ,或 32 GiB,虽然很大很容易想象(例如,你用它加密磁盘镜像)。而对于像 AES 这样的 128 位密码,问题仅在大约 2^64 个 128 位 block 或大约 295 艾字节后才开始出现。在这种情况下,使用 64 位 key 的 AES 实际上比使用 64 位 key 的 RC2 安全得多。

在这里,我们得到答案的认识论部分:即使没有已知的攻击,也不意味着没有攻击可能。 RC2比较老,很少用;即使它是一个相当流行的密码,对它的分析也比 DES 少得多。在过去的 5 年中,很可能没有人费心回过头来研究如何使用最新的攻击技术来破解 RC2,这仅仅是因为在现代公共(public)密码学研究所依据的相对学术的“发布或灭亡”模型中,存在获得的 yield 更少;如果您正在寻求任期(或希望提高您的声誉以获得更多咨询工作)发布攻击 AES 的微小改进,这比彻底拆除 RC2 要好得多,因为没有人再使用它了。

使用 64 位 key ,您会立即将自己限制在该上限,而 2^64 的工作量确实很低;可能不仅对情报机构,甚至对规模合理的公司(或僵尸网络牧民)都触手可及。

最后,我要指出的是,RC2 被设计为在 286/386 时代的处理器上运行得很快。在现代机器上,它比过去 10 年设计的 AES 或类似密码慢很多(大约 4-6 倍)。

我真的看不出将 RC2 用于任何事情的任何好处,我能想象的唯一有意义的用途是与某些古老的(计算机时间)系统兼容。使用 AES(或其他 4 个 AES 决赛入围者之一,如果必须)。

关于security - 64 位 RC2 的安全性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3670058/

相关文章:

ios - 在 iOS 中使用 CFB8 和无填充的 3DES 加密?

java - 将短字符串加密/保护为长字符串

Node.JS RC2-CBC 加密和解密密码与 C# 不匹配

asp.net - ASP.NET 4 网站是否需要额外的 XSS 安全性?

linux - 在我的服务器上运行其他人代码(沙盒)的安全方式?

PHP 防止注销后返回页面

javascript - 如何执行具有可操作反馈的跨站点脚本攻击测试?

java - 加密NULL

java - 解密java中在php中使用AES加密的字符串