S盒是构成分组密码算法重要的非线性部件.利用交换S盒两个输出向量来达到提高其非线性度的思想,提出一个通过交换S盒3个输出向量来提高其非线性度的方法,即三点爬山法.该方法简洁且执行效率较高,而且在WilliamMillan两点爬山法不能提高S盒非线性度的情况下,能进一步改进非线性度.在此基础上,提出一个基于爬山算法的S盒优化算法,弥补了原有算法不能进一步改善非线性度的缺陷.对一些小变量S盒的实验结果验证了该算法的正确性和高效性.
An S-box is an important nonlinear component of block cipher algorithms. Using the idea of swapping two output vectors to increase nonlinearity of the S-Boxes, we propose a method for improving the nonlinearity by swapping three output vectors, namely, a new three-point hill-climbing algorithm. This method is simple and more efficient in implementation. Moreover, it could further improve the nonlinearity when William Millan's two-point hill-climbing could not. On the basis of this, an optimization algorithm based on the hill-climbing algorithm for improving the nonlinearity of the S-Boxes is presented, which overcomes the disadvantage of existing algorithms that cannot improve the nonlinearity further. Numerical results of testing for some small variables S-Boxes show the correctness and efficiency of the proposed algorithm.