我们可以自己制作DES中的S盒、初始置换、逆置换和其他表吗?这样还有效吗,还是应该使用提供的?

0 投票
2 回答
1472 浏览
提问于 2025-04-16 13:16

我正在尝试自己做一个DES的实现!

但是我在实现过程中遇到了困难。

我使用了所有的表格,比如初始置换表、扩展置换表、置换函数表、PC-1、PC-2,还有我自己随机生成的所有S盒。

我们应该使用DES提供的S盒,还是可以自己创建呢?

2 个回答

1

如果没有原来的S-盒,DES可能会不安全。顺便提一下,美国国家安全局(NSA)对这些S-盒进行了改进,让它们更能抵抗一种叫做差分密码分析的攻击,而当时普通人对这种攻击还不知道。

另一方面,如果你想使用用户自己生成的S-盒,可以考虑使用俄罗斯的加密算法GOST 28147-89(在《应用密码学》中第14.1节提到),它允许用户提供自己的S-盒。

5

密码学的第一条规则是:绝对不要自己发明任何东西! 除非你有博士学位和多年的经验,否则你肯定会制造出巨大的安全漏洞。事实上,历史证明,即使是那些有博士学位和多年经验的人也常常会犯安全错误。当然,你可以出于兴趣和学习的目的去尝试,但请千万不要考虑把这些东西用在实际的项目中。抱歉说得这么消极,但这就是现实(顺便说一下,我自己也绝对不应该去发明任何与密码学相关的东西)。

当你要实现一个真正的安全专家发明的东西(并且普遍认为是安全的)时,仍然有很多陷阱需要注意,特别是旁路攻击。不过,再次强调,出于乐趣和学习去实现这些东西当然是好事。

具体到DES算法,S盒的内容是算法的一部分,不能随意更改,否则就会失去与所有其他DES加密数据的兼容性。

撰写回答