S盒在DES算法中起什么作用?
在DES中,它是由美国国家标准与技术研究院(NIST)引入的对称密钥分组密码。DES于1977年1月在《联邦公报》中作为FIPS 46发布。
NIST可以将DES表示为在非机密软件中使用的标准。由于其发布,DES已成为使用最广泛的对称密钥分组密码。NIST后来发布了一个新标准(FIPS 46-3),该标准确认了将来软件中使用三重DES(重复DES密码三次)。
DES具有64位分组大小,并在实现过程中需要56位密钥(从完整的64位密钥中剥夺了8个奇偶校验位)。DES是一种对称密码系统,特别是16轮Feistel密码。
要进行加密的分组会经过初始置换IP,然后进行复杂的密钥相关计算,最后进行置换,该置换是初始置换IP−1的反置换。
置换是由一个函数实现的操作,该函数将第j个位置的元素更改为第k个位置。密钥相关的计算可以用一个称为密码函数的函数f和一个称为密钥调度函数的函数KS来简单表示。
S盒在函数F中的作用是替换包括一组八个S盒。每个S盒都以6位作为输入并生成4位输出,如下所示:输入到盒Si的第一位和最后一位形成一个2位二进制数,用于选择由Si表中四行表示的四个替换之一。
中间四位选择十六列之一。然后将由行和列选择的单元格中的十进制值转换为其4位表示形式以生成输出。例如,在S1中,对于输入011001,行是01,列是1100。行1,列12中的值为9,因此输出为1001。
S盒的原理如下:
每个S盒必须有6位的输入和4位的输出。
S盒的任何输出位都不应该太接近输入位的线性函数。(S盒是DES中唯一的非线性元素,它们的非线性是算法的强度。)
S盒的每个“行”都应包含所有可能的输出。(这使输出随机化。)
如果两个输入到S盒的输入实际上只在一个比特上不同,则它们的输出必须至少在两个比特上不同。
如果两个输入到S盒的输入在中间两位上特别不同,则它们的输出应至少在两位上不同。
如果两个输入到S盒的输入在其前两位上不同并且在其后两位上相同,则这两个输出应不同。