我正在尝试构建自己的 DES 实现!但我没有成功实施
我使用所有表,如 Initail permutation、Expansion Permutation table、Permutation function table、PC-1、PC-2 和我自己的随机位位置的所有 s-box。
我们应该使用DES提供的S-Boxes还是我们可以自己创建?
我正在尝试构建自己的 DES 实现!但我没有成功实施
我使用所有表,如 Initail permutation、Expansion Permutation table、Permutation function table、PC-1、PC-2 和我自己的随机位位置的所有 s-box。
我们应该使用DES提供的S-Boxes还是我们可以自己创建?
密码学的第一条规则:永远不要自己发明任何东西!除非您拥有博士学位和多年经验,否则您最终会制造出巨大的安全漏洞。事实上,历史表明,即使是拥有博士学位和多年经验的人也经常犯安全错误。当然,你可以为了乐趣和教育体验而这样做,但请不要考虑将它的任何内容投入生产。很抱歉这么消极,但这就是现实(而且,为了记录,我也是一个永远不应该自己发明任何与密码学相关的人)。
当涉及到由真正的安全专家发明的东西的实施(并且通常被认为是安全的)时,仍然有许多陷阱需要进入,特别是边信道攻击。但同样,为了乐趣和学习而实施它当然是一件好事。
具体到 DES 时,S-box 的内容是算法本身的一部分,不能更改,否则也会失去与所有其他 DES 加密数据的兼容性。
没有原始 S-Box 的 DES 可能是不安全的。BTW NSA 增强了它们,使它们更能抵抗差分密码分析,这在当时的平民世界中是未知的。
OTOH,如果您想要用户生成的 S-Box,您可以使用俄罗斯密码 GOST 28147-89(应用密码学中的 14.1),它使用用户提供的 S-Box。