4.4 S - 盒
S - 盒的设计准则
- 每个 S - 盒都有 6 个输入位和 4 个输出位。
- 任何一个输出位都不应该太接近于输入位的线性组合。
- 如果输入的最高位和最低位都是固定的,只有中间的 4 个位是可变的,则每个可能的 4 位输出值都必须只出现一次。
- 对于 S - 盒的两个输入,如果仅有 1 位不同,则输出必须至少有两位不同。
- 对于 S - 盒的两个输入,如果只有中间两位不同,则输出必须至少有两位不同。
- 对于 S - 盒的两个输入,如果开头的两位不同,但最后两位相同,则输出必须不同。
- 对于任意有 6 位非零差分的输入对,32 对输入中至多有 8 对有相同的输出差分。
- 8 个 S - 盒对应的 32 位输出冲突(零输出差异)只有在三个相邻的 S - 盒的情况下才有可能。
S - 盒是 DES 中最重要的元素,因为 S - 盒在密码中引入了非线性,即:S(a)\oplus S(b)\neq S(a\oplus b)
如果没有非线性构造元件,攻击者很容易就可以使用一个线性等式系统来表示 DES 的输入和输出;其中该系统的密钥位是已知的。这样的系统很容易被破解。然而,人们通常会精心设计 S - 盒,以便可以抵御各种高级的数学攻击,尤其是差分密码分析。