首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增加三重DES的并行化

增加三重DES的并行化
EN

Cryptography用户
提问于 2022-03-08 05:57:50
回答 1查看 116关注 0票数 1

三重DES使用第一个密钥,然后是第二个密钥,然后是第三个密钥。两把钥匙坐着等着。为什么不同时加密这三个密钥呢?

您接受192位明文(三个64位子块),并通过MDS矩阵运行整个192位作为预步骤。然后,并行地使用第一个密钥加密第一个块,用第二个密钥加密第二个块,用第三个密钥对第三个块进行加密。

你重复192位MDS矩阵。然后,并行地用第一个密钥加密第三个块,用第二个密钥加密第一个块,用第三个密钥加密第二个块。

你重复192位MDS矩阵。然后,并行地用第一个密钥加密第二个块,用第二个密钥加密第三个块,用第三个密钥加密第一个块。

Block1 = Key1,Key2,Key3

Block2 = Key2,Key3,Key1

Block3 = Key3,Key1,Key2

使用第三个密钥、第二个密钥和第一个密钥进行加密与使用第一个密钥、第二个密钥和第三个密钥加密没有什么不同,因此安全性不会丢失。这也将是抵抗64位块大小的攻击。并行加密所有三个密钥会带来多大的实际性能提高?它会使实现复杂化到不值得的程度吗?

EN

回答 1

Cryptography用户

发布于 2022-03-08 22:13:01

这实际上是一个192位的分组密码,改变任何一位输入都会对所有192位的输出产生不可预测的影响。一些注意事项:

  • 192是一个奇数大小的分组密码;如果我是设计师,我会很想增加另一条车道,使它成为256位分组密码。
  • 最初的MDS在密码学上是毫无意义的--它是一个公共操作,所以密码分析人员可以很容易地将其分解出来。
  • 乍一看,在层间旋转键似乎不会得到任何结果;第二层特定DES的输入是前一层所有三个DES输出的线性函数。从某种意义上说,特定层上的所有三个DES函数都是等价的;我会将其简化为每个级别"key 1,key 2,key 3“(如果您遵循上面256位块的想法,可能会添加"key 4”)。
  • “使用第三个密钥,第二个密钥,然后第一个密钥加密与使用第一个密钥、第二个密钥、然后第三个密钥加密没有什么不同,所以安全性不会丢失。”--抓住它,在中间增加操作会影响安全性,这样就可以减少安全性。它可能是安全的(也就是说,至少和常规的3 3DES一样安全),但是这是需要显示的东西,而不仅仅是假设。
  • 我想到的最好的攻击(这不是证明没有更好的攻击):一种基于饱和的方法(在这种方法中,两个输入块保持不变,并循环第三个块的所有可能性--是的,这是输入块的2^{64}块);在第二个MDS矩阵之后,最后一轮DES块输入的所有2^{64}块的总和将为0--这将允许您测试DES密钥的猜测,而代价是2^{64}试验解密,也就是说,2^{120}解密需要进行全面搜索。它是未知的,如果你能做一个更有效的攻击。

至于性能,那将很大程度上取决于硬件(性能总是如此)--显然,如果您有一个软件实现一次只能执行一个DES操作,那么您的速度不会比正常的3 DES快(而且实际上要慢一点;这都是因为中间IP/FP操作和MDS操作)。假设您的硬件可以并行执行多个DES操作,那么您可能会获得一些增益--但是(进行BOTE计算)加密48个字节将需要6个(3x并行) DES操作;用AES加密相同的48个字节将需要3个AES操作--我预计后者会更快。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/98997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档