S盒演化生成器及生成方法 【技术领域】
本发明属于信息安全应用领域,特别涉及S盒演化生成器及生成方法。
背景技术
密码是信息安全的关键所在,如何设计安全的密码机制是密码学所研究的重点。密码可分为对称密码和非对称密码。对称密码又可以分为流密码、分组密码以及hash算法。S盒在流密码,分组密码以及hash函数等对称密码的设计里有重要应用,是主要的非线性变换部件。在设计S盒时,主要考虑S盒的非线性度,差分均匀性,以及代数免疫度等密码学指标。
现有技术中,S盒的设计有如下一些方法:传统上,密码学家会根据一些数学函数来设计具有密码学意义的S盒,但这种方法对设计者提出了很高的要求,设计出的盒子的种类有限。另外一种方法是随机生成S盒,然后进行密码学评价,进行取舍。这种方法的效率很低。第三种方法是对数学方法设计的S盒进行一定的修改作为实用的S盒。近来,演化方式被引入密码函数的设计中,该种方法具有并行化,自动化的特点,但从公开的文献看,目前大部分演化方式设计的S盒的密码学指标不够理想或者效率不高。
【发明内容】
本发明目的在于针对现有技术的不足,提出能够高效率高质量生成S盒的S盒演化生成器,及相应生成方法。
本发明提供的S盒演化生成器技术方案为:设有随机源、两个以上不同变换部件、密码学指标计算判断部件、阀值判断器和缓存器;
所述缓存器中的存储内容按照随机源生成的随机数分配输送到变换部件之一,变换部件的变换结果输送到缓存器和密码学指标计算判断部件;
当密码学指标计算判断部件对变换结果计算得到的指标判断为合格时,密码学指标计算判断部件向缓存器发出控制命令,缓存器输出存储内容作为演化生成的S盒;
当密码学指标计算判断部件对变换结果计算得到的指标判断为不合格时,密码学指标计算判断部件将记载的变换次数送到阀值判断器;阀值判断器根据变换次数判断并发出控制信号到缓存器,令缓存器重置存储内容为单位变换或者按照随机源生成的随机数分配输送到变换部件之一继续演化。
而且,所述随机源采用真随机数发生器或伪随机数发生器实现。
而且,采用三个变换部件,包括乘变换部件、加变换部件和逆变换部件。
本发明还提供了S盒生成方法,包括以下步骤:
步骤1,缓存器中的存储内容初始化为单位置换;
步骤2,随机源生成随机数,根据随机数的取值,缓存器中的存储内容送入变换部件之一;
步骤3,经过变换部件之一的变换后,变换结果送入缓存器,同时送入密码学指标计算判断部件进行密码学指标的计算并判断变换结果的指标是否合格;
如果变换结果的密码学指标合格,则变换次数清零,输出变换结果作为演化生成的S盒;
如果变换结果的密码学指标不合格,则变换次数加1;然后在阈值判断器内,比较变换次数和预设的阈值,若变换次数小于阈值则返回步骤2继续演化,直到变换次数达到阈值则重置缓存器的内容为单位置换。
而且,阀值预设为5000。
而且,如果变换结果的密码学指标合格,在输出演化生成的S盒同时,重新从步骤2开始执行目标为生成新S盒的演化。
本发明配合密码学指标的考察,通过随机源对S盒进行随机变换,从而实现演化。由于通过随机数决定基本变换的复合过程,可以快速产生大量随机分布且具有很好密码学性质的s盒。具体来说,本发明技术方案有以下优点:
1.可以快速生成具有好的密码学性质的S盒,包括具有很好的非线性度和差分均匀性,具有好的代数免疫度等密码学指标。
2.所生成的S盒在具有好的密码学性质的同时,分布具有随机性,而不像数学方法那样,具有确定性。
3.可以用软硬件方法来实现,生成S盒的效率很高。16元输入输出以下(含16)的情况,生成S盒的时间以分钟为单位来度量。
4.S盒演化生成器可以单独使用,用来生成S盒,供对称密码机制使用作为密码部件。由于所生成S盒分布的随机性,也可以作为可重构密码的构成部件,为可重构密码实时提供非线性部件。
【附图说明】
图1为本发明实施例的原理示意图。
【具体实施方式】
以下结合附图详细说明本发明的技术方案:
本发明实施例设有随机源1、三个变换部件(即乘变换部件2、加变换部件3和逆变换部件4)、密码学指标计算判断部件5、阀值判断器6和缓存器7。因为缓存器7中的存储内容要按照随机源1生成的随机数分配输送到乘变换部件2、加变换部件3和逆变换部件4之一,因此本发明实施例的随机源1要提供3个不同值地随机数,一般取0、1、2。可以指定当随机源1产生的随机数为0时,缓存器7中的存储内容输送到乘变换部件2进行常数乘法变换,常数取相应域的一个本原元;当随机源1产生的随机数为1时,缓存器7中的存储内容输送到加变换部件3进行加1变换;当随机源1产生的随机数为2时,缓存器7中的存储内容输送到逆变换部件4进行逆变换。乘变换部件2、加变换部件3或逆变换部件4的变换结果输送到缓存器7和密码学指标计算判断部件5,在密码学指标计算判断部件5中将变换结果作为一个S盒计算其密码学指标并进行判断。
当密码学指标计算判断部件5对变换结果计算得到的指标判断为合格时,密码学指标计算判断部件5向缓存器7发出控制命令,缓存器7输出存储内容作为演化生成的S盒;当密码学指标计算判断部件5对变换结果计算得到的指标判断为不合格时,密码学指标计算判断部件5将记载的变换次数送到阀值判断器6;阀值判断器6根据变换次数判断并发出控制信号到缓存器7,令缓存器7重置存储内容为单位变换、或者按照随机源1生成的随机数将存储内容分配输送到乘变换部件2、加变换部件3和逆变换部件4之一继续演化。
具体实施时,本发明提供的这种S盒演化生成器既可以利用计算机等设备进行软件实现,也可以硬件实现,或软硬件结合实现。随机源1采用真随机数发生器或伪随机数发生器实现均可,例如RC4算法。密码学指标计算判断部件5具体计算哪些密码学指标可以根据对S盒的密码学性质需要设定,该部分可参考现有技术实现。密码学指标计算判断部件5记载变换次数的功能可通过内置计数器实现。为了便于多次使用生成S盒,可以在密码学指标计算判断部件5对变换结果计算得到的指标判断为合格时,将计数器清零。一般来说,采用三个变换部件已经足够令所生成的S盒具有良好的分布随机性。具体实施时也可采用更多不同的变换部件来实现基础变换,随机源1生成的随机数应与变换部件个数相应,以便分配变换工作。
为了更清晰地说明用本发明S盒演化生成器实现的S盒生成过程,本发明提供了实施例的步骤说明:
步骤1,缓存器7中的存储内容初始化为单位置换;在初始化情况下,变换次数也为零(count=0);
步骤2,随机源1生成随机数,根据随机数的取值,缓存器7中的存储内容送入乘变换部件2、加变换部件3和逆变换部件4之一;
步骤3,经过乘变换部件2、加变换部件3和逆变换部件4之一的变换后,变换结果送入缓存器7,同时送入密码学指标计算判断部件5进行密码学指标的计算并判断变换结果的指标是否合格;
如果变换结果的密码学指标合格,则变换次数清零(count=0),输出变换结果作为演化生成的S盒;
如果变换结果的密码学指标不合格,则变换次数加1(count++);然后在阈值判断器6内,比较变换次数和预设的阈值,若变换次数小于阈值则返回步骤2继续演化。经过步骤2、3的不断变换和判断,直到步骤3中判断出变换结果的密码学指标合格,最后所得变换结果是能够满足需求的S盒。并且为了效率起见,若变换次数达到阈值(count=阈值)则重置缓存器7的内容为单位置换,以防止无效演化。
在已经得到的合格S盒基础上继续进行演化,可以得到更多的S盒。本发明提出在步骤3输出S盒后仍然继续演化:如果变换结果的密码学指标合格,在输出演化生成的S盒同时,重新从步骤2开始执行目标为生成新S盒的演化。值得注意的是,此时缓存器7中的存储内容不需初始化,进一步变换演化的对象就是其中所存的上次变换的变换结果,也就是被输出的S盒。而计数器可以初始化清零,以便准确地反应无效演化次数。在获取下一个S盒后,还可以该S盒作为基础更进一步演化。因此本发明可以用来自动生成多个S盒。具体实施时,可以通过指定所需生成的合格S盒个数或者整体运行时间来结束自动演化过程。
本发明建议预设阀值为5000,既能保证演化充分,又能保证生成S盒的过程控制在分钟为单位来度量的时间内。也可以根据效率要求预先设定为该数量级的经验值。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明做出任何的修改和改变,都应落入本发明的保护范围。