参数化S盒生成方法、装置、设备及存储介质转让专利

申请号 : CN202110559271.0

文献号 : CN113328848B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 贾珂婷王小云尤启迪

申请人 : 清华大学

摘要 :

本申请涉及一种参数化S盒生成方法、装置、设备及存储介质,所述方法包括:获取S盒调用参数序列、S盒的目标数量以及多组预设S盒生成参数;根据S盒调用参数序列、S盒的目标数量,从多组预设S盒生成参数中确定目标生成参数;根据目标生成参数,生成目标S盒;根据S盒调用参数序列、目标S盒,得到与S盒调用参数序列对应的目标S盒组合。本申请实施例提供的技术方案可以降低以S盒生成方法构造动态参数生成的S盒组合对计算机资源的占用率。

权利要求 :

1.一种参数化S盒生成方法,其特征在于,所述方法包括:获取S盒调用参数序列、S盒的目标数量以及多组预设S盒生成参数;每组所述预设S盒生成参数可用于生成至少一个所述S盒;

根据所述S盒调用参数序列、所述S盒的目标数量,从所述多组预设S盒生成参数中确定目标生成参数;根据所述目标生成参数,生成目标S盒;

根据所述S盒调用参数序列、所述目标S盒,得到与所述S盒调用参数序列对应的目标S盒组合;

将所述S盒调用参数序列划分为参数组合;所述参数组合的数目与所述S盒调用参数序列的比特数、所述S盒的目标数量之商相同;

基于所述参数组合与所述目标S盒之间的对应关系,得到与所述S盒调用参数序列对应的目标S盒组合。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取至少一个初始S盒以及预设的参数集;所述预设的参数集用于对所述初始S盒进行转换;所述预设的参数集包括多组第一参数和第二参数;

根据各组所述第一参数、所述第二参数以及所述初始S盒,生成多组预设S盒;所述预设S盒为所述初始S盒的等价类S盒;

将所述多组预设S盒对应的第一参数、第二参数,作为所述预设S盒的生成参数进行存储,得到多组预设S盒生成参数。

3.根据权利要求2所述的方法,其特征在于,所述将所述多组预设S盒对应的第一参数、第二参数,作为所述预设S盒的生成参数进行存储,得到多组预设S盒生成参数,包括:从所述多组预设S盒中确定有效S盒,将所述有效S盒对应的第一参数、第二参数作为所述有效S盒的生成参数进行存储,得到多组有效S盒生成参数。

4.根据权利要求1所述的方法,其特征在于,所述根据所述S盒调用参数序列、所述S盒的目标数量,从所述多组预设S盒生成参数中确定目标生成参数,包括:根据所述S盒调用参数序列、所述S盒的目标数量,计算候选S盒的数量;

根据所述候选S盒的数量,从所述多组预设S盒的生成参数中确定目标生成参数;所述目标生成参数的数量与所述候选S盒的数量一致。

5.根据权利要求1所述的方法,其特征在于,所述根据所述目标生成参数,生成目标S盒,包括:将初始S盒的输入值分别与所述目标生成参数中的各组第一参数进行异或运算,得到第一运算结果;

将各组所述第一运算结果分别与所述目标生成参数中的各组第二参数进行异或运算,得到所述输入值对应的输出值;

根据所述输入值和所述输出值,生成所述目标S盒;所述目标S盒的数量与候选S盒的数量一致。

6.根据权利要求5所述的方法,其特征在于,所述根据所述预设数目组目标生成参数,生成目标S盒,还包括:将所述初始S盒的输入值与预设的第一位置换矩阵相乘,得到第二运算结果;

将各组所述第二运算结果分别与所述目标生成参数中的各组第一参数进行异或运算,得到第三运算结果;

将所述第三运算结果与预设的第二位置换矩阵相乘,得到第四运算结果;

将所述第四运算结果分别与所述目标生成参数中的各组第二参数进行异或运算,得到所述输入值对应的输出值;

根据所述输入值和所述输出值,生成所述目标S盒;所述目标S盒的数量与所述候选S盒的数量一致。

7.一种参数化S盒生成装置,其特征在于,所述装置包括:第一获取模块,用于获取S盒调用参数序列、S盒的目标数量以及多组预设S盒生成参数;每组所述预设S盒生成参数可用于生成至少一个所述S盒;

第一生成模块,用于根据所述S盒调用参数序列、所述S盒的目标数量,从所述多组预设S盒生成参数中确定目标生成参数;根据所述目标生成参数,生成目标S盒;

确定模块,用于将所述S盒调用参数序列划分为参数组合;所述参数组合的数目与所述S盒调用参数序列的比特数、所述S盒的目标数量之商相同;基于所述参数组合与所述目标S盒之间的对应关系,得到与所述S盒调用参数序列对应的目标S盒组合。

8.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至6任一项所述的方法的步骤。

9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的方法的步骤。

说明书 :

参数化S盒生成方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及通信加密技术领域,特别是涉及一种参数化S盒生成方法、装置、设备及存储介质。

背景技术

[0002] 分组密码是一类重要的对称密码算法,在网络通信中发挥着不可替代的作用。国内外现有分组密码算法的设计主要采用香农1949年提出的“混淆”+“扩散”原则,通过分组密码算法中的“混淆”和“扩散”部件使得明文、密文和密钥之间的关系异常复杂,以至于攻击者无法从密文得到明文的任何信息、或者从明密文对得到密钥的任何信息。其中,“混淆”部件普遍采用非线性置换S盒(Substitution Box)。S盒是绝大多数密码算法中关键的非线性部件,通过S盒组合作为非线性层,其密码性质几乎决定了整个密码算法的安全强度,也极大影响整个算法的“混淆”效果。
[0003] 为了提高整个密码算法的安全强度,通常可以选择多个不同的S盒实现,但同时,要对生成的多个S盒进行存储,随着S盒数量的增多,所占用的存储资源也随着增加。例如,对于生成一个4比特的S盒,就需要存储16个数,且每个数都是4位。因而,现有的参数化S盒生成方法存在计算机资源占用率高的问题。

发明内容

[0004] 基于此,本申请实施例提供了一种参数化S盒生成方法、装置、设备及存储介质,可以降低以S盒生成方法构造动态参数生成S盒组合对计算机资源的占用率。
[0005] 第一方面,提供了一种参数化S盒生成方法,该方法包括:
[0006] 获取S盒调用参数序列、S盒的目标数量以及多组预设S盒生成参数;每组预设S盒生成参数可用于生成至少一个S盒;根据S盒调用参数序列、S盒的目标数量,从多组预设S盒生成参数中确定目标生成参数;根据目标生成参数,生成目标S盒;根据S盒调用参数序列、目标S盒,得到与S盒调用参数序列对应的目标S盒组合。
[0007] 在其中一个实施例中,上述方法还包括:
[0008] 获取至少一个初始S盒以及预设的参数集;预设的参数集用于对初始S盒进行转换;预设的参数集包括多组第一参数和第二参数;根据各组第一参数、第二参数以及初始S盒,生成多组预设S盒;预设S盒为初始S盒的等价类S盒;将多组预设S盒对应的第一参数、第二参数,作为预设S盒的生成参数进行存储,得到多组预设S盒生成参数。
[0009] 在其中一个实施例中,将多组预设S盒对应的第一参数、第二参数,作为预设S盒的生成参数进行存储,得到多组预设S盒生成参数,包括:
[0010] 从多组预设S盒中确定有效S盒,将有效S盒对应的第一参数、第二参数作为有效S盒的生成参数进行存储,得到多组有效S盒生成参数。
[0011] 在其中一个实施例中,根据S盒调用参数序列、S盒的目标数量,从多组预设S盒生成参数中确定目标生成参数,包括:
[0012] 根据S盒调用参数序列、S盒的目标数量,计算候选S盒的数量;根据候选S盒的数量,从多组预设S盒的生成参数中确定目标生成参数;目标生成参数的数量与候选S盒的数量一致。
[0013] 在其中一个实施例中,根据目标生成参数,生成目标S盒,包括:
[0014] 将初始S盒的输入值分别与目标生成参数中的各组第一参数进行异或运算,得到第一运算结果;将各组第一运算结果分别与目标生成参数中的各组第二参数进行异或运算,得到输入值对应的输出值;根据输入值和输出值,生成目标S盒;目标S盒的数量与候选S盒的数量一致。
[0015] 在其中一个实施例中,根据预设数目组目标生成参数,生成目标S盒,还包括:
[0016] 将初始S盒的输入值与预设的第一位置换矩阵相乘,得到第二运算结果;将各组第二运算结果分别与目标生成参数中的各组第一参数进行异或运算,得到第三运算结果;将第三运算结果与预设的第二位置换矩阵相乘,得到第四运算结果;将第四运算结果分别与目标生成参数中的各组第二参数进行异或运算,得到输入值对应的输出值;根据输入值和输出值,生成目标S盒;目标S盒的数量与候选S盒的数量一致。
[0017] 在其中一个实施例中,根据S盒调用参数序列、预设数目个目标S盒,得到与S盒调用参数序列对应的目标S盒组合,包括:
[0018] 将S盒调用参数序列划分为参数组合;参数组合的数目与S盒调用参数序列的比特数、S盒的目标数量之商相同;基于参数组合与目标S盒之间的对应关系,得到与S盒调用参数序列对应的目标S盒组合。
[0019] 第二方面,提供了一种参数化S盒生成装置,该装置包括:
[0020] 第一获取模块,用于获取S盒调用参数序列、S盒的目标数量以及多组预设S盒生成参数;每组预设S盒生成参数可用于生成至少一个S盒;
[0021] 第一生成模块,用于根据S盒调用参数序列、S盒的目标数量,从多组预设S盒生成参数中确定目标生成参数;根据目标生成参数,生成目标S盒;
[0022] 确定模块,用于根据S盒调用参数序列、目标S盒,得到与S盒调用参数序列对应的目标S盒组合。
[0023] 第三方面,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时实现上述第一方面任一实施例中的方法步骤。
[0024] 第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面任一实施例中的方法步骤。
[0025] 上述参数化S盒生成方法、装置、设备及存储介质,通过获取S盒调用参数序列、S盒的目标数量以及多组预设S盒生成参数;根据S盒调用参数序列、S盒的目标数量,从多组预设S盒生成参数中确定目标生成参数;根据目标生成参数,生成目标S盒;根据S盒调用参数序列、目标S盒,得到与S盒调用参数序列对应的目标S盒组合。在本申请实施例提供的技术方案中,由于对生成的S盒,仅需要存储多组生成参数,根据多组生成参数就可以生成对应的S盒,不需要将所有S盒的数据都进行存储,节省了存储空间,从而降低了对计算机资源的占用率。

附图说明

[0026] 图1为本申请实施例提供的一种计算机设备的框图;
[0027] 图2为本申请实施例提供的一种参数化S盒生成方法的流程图;
[0028] 图3为本申请实施例提供的一种参数化S盒生成方法的流程图;
[0029] 图4为本申请实施例提供的一种参数化S盒生成方法的流程图;
[0030] 图5为本申请实施例提供的一种参数化S盒生成方法的流程图;
[0031] 图6为本申请实施例提供的一种参数化S盒生成方法的流程图;
[0032] 图7为本申请实施例提供的一种参数化S盒生成方法的流程图;
[0033] 图8为本申请实施例提供的一种参数化S盒生成装置的框图。

具体实施方式

[0034] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0035] 本申请提供的参数化S盒生成方法可以应用于计算机设备中,计算机设备可以是服务器,也可以是终端,其中,服务器可以为一台服务器也可以为由多台服务器组成的服务器集群,本申请实施例对此不作具体限定,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。
[0036] 以计算机设备是服务器为例,图1示出了一种服务器的框图,如图1所示,服务器可以包括通过系统总线连接的处理器和存储器。其中,该服务器的处理器用于提供计算和控制能力。该服务器的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序以及数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机程序被处理器执行时以实现一种参数化S盒生成方法。
[0037] 本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,可选地服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0038] 需要说明的是,本申请实施例的执行主体可以是计算机设备,也可以是参数化S盒生成装置,下述方法实施例中就以计算机设备为执行主体进行说明。
[0039] 在一个实施例中,如图2所示,其示出了本申请实施例提供的一种参数化S盒生成方法的流程图,该方法可以包括以下步骤:
[0040] 步骤220、获取S盒调用参数序列、S盒的目标数量以及多组预设S盒生成参数;每组预设S盒生成参数可用于生成至少一个S盒。
[0041] 其中,S盒调用参数序列是用于调用S盒的动态参数,S盒调用参数序列可采用预设比特数的二进制数表示,例如,S盒调用参数序列可以是32比特的参数序列,也可以是64比特的参数序列,还可以是其它比特数的参数序列;S盒调用参数序列的比特数不超过最大比特数,最大比特数可以通过预设S盒生成参数的组数和S盒的目标数量确定。
[0042] S盒的目标数量是不同的分组密码结构在算法实现时,需要使用到的S盒数量,S盒的目标数量可以通过分组密码的长度n和S盒的比特数m共同确定,例如,分组密码结构为Feistel结构,分组密码长度n=128,S盒的比特数m=4,那么S盒的目标数量为n/2m=16;分组密码结构为替换‑置换网络(SPN)结构,分组密码长度n=128,S盒的比特数m=4,那么S盒的目标数量为n/m=32;对于其他分组密码结构也有其对应的S盒的目标数量的计算方式,在此不一一举例说明。
[0043] 多组预设S盒生成参数是用于生成多组S盒的参数,每组预设S盒生成参数可用于生成至少一个S盒,每组生成参数可以包括至少一个参数。预设S盒生成参数可以是根据预设的S盒的比特数确定的固定位的常数,也可以是人为设定的固定常数,例如,预设的S盒的比特数为4比特,则预设S盒生成参数可以是0‑15之间的常数,且每个数均为4位。
[0044] 步骤240、根据S盒调用参数序列、S盒的目标数量,从多组预设S盒生成参数中确定目标生成参数;根据目标生成参数,生成目标S盒。
[0045] 其中,在获取到S盒调用参数序列以及S盒的目标数量后,可以从多组预设S盒生成参数中确定出目标生成参数,目标生成参数是用于生成目标S盒的参数。可以是根据S盒调用参数序列以及S盒的目标数量,将多组预设S盒生成参数全部作为目标生成参数,从而根据目标生成参数生成目标S盒;也可以是通过S盒调用参数序列以及S盒的目标数量,计算得到候选S盒,候选S盒是多组预设S盒中的一部分,最后将候选S盒的生成参数作为目标生成参数,从而根据目标生成参数生成目标S盒。
[0046] 步骤260、根据S盒调用参数序列、目标S盒,得到与S盒调用参数序列对应的目标S盒组合。
[0047] 其中,可以根据不同S盒调用参数序列与目标S盒之间的对应关系,确定出获取到的S盒调用参数序列对应的目标S盒组合;还可以是根据预设比特数的参数组合与目标S盒之间的对应关系,将获取到的S盒调用参数序列划分为等长的参数组合后,确定出获取到的S盒调用参数序列对应的目标S盒组合,还可以是对S盒调用参数序列进行其他处理后,确定出S盒调用参数序列对应的目标S盒组合。
[0048] 本实施例中,通过获取S盒调用参数序列、S盒的目标数量以及多组预设S盒生成参数;根据S盒调用参数序列、S盒的目标数量,从多组预设S盒生成参数中确定目标生成参数;根据目标生成参数,生成目标S盒;根据S盒调用参数序列、目标S盒,得到与S盒调用参数序列对应的目标S盒组合。由于对生成的S盒,仅需要存储多组生成参数,根据多组生成参数就可以生成对应的S盒,不需要将所有S盒的数据都进行存储,节省了存储空间,从而降低了对计算机资源的占用率。
[0049] 在一个实施例中,如图3所示,其示出了本申请实施例提供的一种参数化S盒生成方法的流程图,具体涉及的是得到多组预设S盒生成参数的一种可能的过程,该方法可以包括以下步骤:
[0050] 步骤320、获取至少一个初始S盒以及预设的参数集;预设的参数集用于对初始S盒进行转换;预设的参数集包括多组第一参数和第二参数。
[0051] 步骤340、根据各组第一参数、第二参数以及初始S盒,生成多组预设S盒;预设S盒为初始S盒的等价类S盒。
[0052] 步骤360、将多组预设S盒对应的第一参数、第二参数,作为预设S盒的生成参数进行存储,得到多组预设S盒生成参数。
[0053] 其中,初始S盒为现有分组密码算法中已采用的安全S盒,初始S盒可以有一个,也可以有多个。预设的参数集是生成等价类S盒的生成参数集合,即预设的参数集可以对初始S盒进行转换。预设的参数集可以包括多组第一参数和第二参数,由于在对初始S盒进行等价类转换时可以采用不同的转换方式,因而,可以直接根据各组第一参数、第二参数以及初始S盒,生成多组预设S盒;也可以对各组第一参数、第二参数进行数学运算后,采用各组运算结果以及初始S盒,生成多组预设S盒;还可以根据对各组第一参数、第二参数进行其他方式的等价变换后,根据变换结果以及初始S盒生成多组预设S盒,本实施例对此不作具体限定。
[0054] 将多组预设S盒对应的第一参数、第二参数,作为预设S盒的生成参数进行存储,得到多组预设S盒生成参数。可以直接将所有组的预设S盒对应的第一参数、第二参数,作为预设S盒的生成参数进行存储;也可以是对各组预设S盒对应的第一参数、第二参数根据实际需求进行筛选后,将剩余的预设S盒对应的第一参数、第二参数,作为预设S盒的生成参数进行存储;还可以是通过其他方式对多组预设S盒对应的第一参数、第二参数进行处理后,再作为预设S盒的生成参数进行存储,从而得到多组预设S盒生成参数,本实施例对此不作具体限定。
[0055] 本实施例中,通过获取至少一个初始S盒以及预设的参数集;预设的参数集用于对初始S盒进行转换;根据各组第一参数、第二参数以及初始S盒,生成多组预设S盒;将多组预设S盒对应的第一参数、第二参数,作为预设S盒的生成参数进行存储,得到多组预设S盒生成参数。通过多组预设S盒生成参数可以生成大量的S盒,扩大了分组密码算法选取S盒的范围,进一步提高了分组密码算法的安全强度。
[0056] 在一个实施例中,在生成的S盒中还可能包括弱S盒,为了保证分组密码的安全强度,可选地,可以从多组预设S盒中确定有效S盒,将有效S盒对应的第一参数、第二参数作为有效S盒的生成参数进行存储,得到多组有效S盒生成参数。
[0057] 其中,有效S盒是生成的多组预设S盒中安全强度高的S盒,将有效S盒对应的第一参数、第二参数作为有效S盒的生成参数进行存储,从而得到多组有效S盒生成参数。在从多组预设S盒中确定有效S盒时,可以针对每组S盒,通过验证输入和输出是否相同,即针对每组S盒进行固定点检查,如果存在一个输入x0,其对应的输出也是x0,则排除这样的S盒,并去除该S盒对应的第一参数和第二参数,从而剩下的S盒即为有效S盒,再将有效应的第一参数、第二参数作为有效S盒的生成参数进行存储,最终得到多组有效S盒生成参数。
[0058] 本实施例中,通过从多组预设S盒中确定有效S盒,将有效S盒对应的第一参数、第二参数作为有效S盒的生成参数进行存储,得到多组有效S盒生成参数,保证有效S盒都是安全强度高的S盒,从而保证了分组密码的安全强度。
[0059] 在一个实施例中,如图4所示,其示出了本申请实施例提供的一种参数化S盒生成方法的流程图,具体涉及的是从多组预设S盒的生成参数中确定目标生成参数的一种可能的过程,该方法可以包括以下步骤:
[0060] 步骤420、根据S盒调用参数序列、S盒的目标数量,计算候选S盒的数量。
[0061] 步骤440、根据候选S盒的数量,从多组预设S盒的生成参数中确定目标生成参数;目标生成参数的数量与候选S盒的数量一致。
[0062] 其中,候选S盒是目标S盒组合中,每个S盒的可选择范围。根据S盒调用参数序列、S盒的目标数量,可以计算出候选S盒的数量t,例如,S盒调用参数序列为32比特的序列,S盒的目标数量为16,可以根据等式t^16=2^{32}计算出t=4,即候选S盒的数量为4。
[0063] 再根据候选S盒的数量,从多组预设S盒的生成参数中确定目标生成参数,目标生成参数的数量与候选S盒的数量一致。根据候选S盒的数量,可以从多组预设S盒的生成参数中任意确定出相同数量组目标生成参数,也可以从多组预设S盒的生成参数中按参数的大小顺序,依次选择出相同数量组目标生成参数,还可以根据其他方式从多组预设S盒的生成参数中确定目标生成参数。
[0064] 本实施例中,通过根据S盒调用参数序列、S盒的目标数量,计算候选S盒的数量;根据候选S盒的数量,从多组预设S盒的生成参数中确定目标生成参数;可以根据实际分组密码算法的运算需求,确定候选S盒的范围,从而便于算法调用对应的S盒。
[0065] 在一个实施例中,如图5所示,其示出了本申请实施例提供的一种参数化S盒生成方法的流程图,具体涉及的是根据目标生成参数生成目标S盒的一种可能的过程,该方法可以包括以下步骤:
[0066] 步骤520、将初始S盒的输入值分别与目标生成参数中的各组第一参数进行异或运算,得到第一运算结果。
[0067] 步骤540、将各组第一运算结果分别与目标生成参数中的各组第二参数进行异或运算,得到输入值对应的输出值。
[0068] 步骤560、根据输入值和输出值,生成目标S盒;目标S盒的数量与候选S盒的数量一致。
[0069] 其中,可以通过公式(1),根据目标生成参数生成目标S盒。第一运算结果为初始S盒的输入值x与目标生成参数中的各组第一参数a进行异或运算的结果;再通过初始S盒查找第一运算结果对应的输出值后,分别与目标生成参数中的各组第二参数b进行异或运算,从而得到输入值对应的输出值;最后通过公式(2)建立目标S盒输入值和输出值的对应关系,从而可以根据输入值和输出值生成目标S盒,目标S盒的数量与候选S盒的数量一致,例如,候选S盒的数量为4,则生成目标S盒的目标生成参数就为4组,从而目标S盒的数量也为4。
[0070]
[0071] y’=S’(x)                           (2)
[0072] 本实施例中,将初始S盒的输入值分别与目标生成参数中的各组第一参数进行异或运算,得到第一运算结果;将各组第一运算结果分别与目标生成参数中的各组第二参数进行异或运算,得到输入值对应的输出值;根据输入值和输出值,生成目标S盒。通过第一参数、第二参数对初始S盒进行变换,就可以得到与初始S盒等价的目标S盒,计算方式简单,便于得到多个与初始S盒同一类的目标S盒,提高了生成目标S盒的效率。
[0073] 在一个实施例中,如图6所示,其示出了本申请实施例提供的一种参数化S盒生成方法的流程图,具体涉及的是根据目标生成参数生成目标S盒的另一种可能的过程,该方法可以包括以下步骤:
[0074] 步骤610、将初始S盒的输入值与预设的第一位置换矩阵相乘,得到第二运算结果。
[0075] 步骤620、将各组第二运算结果分别与目标生成参数中的各组第一参数进行异或运算,得到第三运算结果。
[0076] 步骤630、将第三运算结果与预设的第二位置换矩阵相乘,得到第四运算结果。
[0077] 步骤640、将第四运算结果分别与目标生成参数中的各组第二参数进行异或运算,得到输入值对应的输出值。
[0078] 步骤650、根据输入值和输出值,生成目标S盒;目标S盒的数量与候选S盒的数量一致。
[0079] 其中,可以通过公式(3),根据目标生成参数生成目标S盒。第二运算结果为将初始S盒的输入值x与预设的第一位置换矩阵M相乘的结果;再通过将各组第二运算结果分别与目标生成参数中的各组第一参数a进行异或运算,得到第三运算结果;通过初始S盒查找第三运算结果对应的输出值后,与预设的第二位置换矩阵相乘,得到第四运算结果;最后将第四运算结果分别与目标生成参数中的各组第二参数b进行异或运算,得到输入值对应的输出值,第一位置换矩阵和第二位置换矩阵可以相同,也可以不同。最后通过公式(4)建立目标S盒输入值和输出值的对应关系,从而可以根据输入值和输出值生成目标S盒,目标S盒的数量与候选S盒的数量一致。
[0080]
[0081] y’=S’(x)                           (4)
[0082] 本实施例中,通过将初始S盒的输入值与预设的第一位置换矩阵相乘,得到第二运算结果;将各组第二运算结果分别与目标生成参数中的各组第一参数进行异或运算,得到第三运算结果;将第三运算结果与预设的第二位置换矩阵相乘,得到第四运算结果;将第四运算结果分别与目标生成参数中的各组第二参数进行异或运算,得到输入值对应的输出值;根据输入值和输出值,生成目标S盒;目标S盒的数量与候选S盒的数量一致。由于在生成目标S盒时增加了位置换矩阵,可以生成更多的目标S盒,从而可以扩大S盒调用参数序列的参数空间,从而可以选择出更多的S盒来增强分组密码的安全强度。
[0083] 在一个实施例中,如图7所示,其示出了本申请实施例提供的一种参数化S盒生成方法的流程图,具体涉及的是得到与S盒调用参数序列对应的目标S盒组合的一种可能的过程,该方法可以包括以下步骤:
[0084] 步骤720、将S盒调用参数序列划分为参数组合;参数组合的数目与S盒调用参数序列的比特数、S盒的目标数量之商相同。
[0085] 步骤740、基于参数组合与目标S盒之间的对应关系,得到与S盒调用参数序列对应的目标S盒组合。
[0086] 其中,参数组合是对S盒调用参数序列进行比特数划分后得到的多组参数形成的组合,每个参数组合的长度可以是相同的,参数组合的数目与S盒调用参数序列的比特数、S盒的目标数量之商相同,再基于参数组合与目标S盒之间的对应关系,得到与S盒调用参数序列对应的目标S盒组合。例如,S盒调用参数序列为32比特的参数序列,即S盒调用参数序列的比特数为32,S盒的目标数量为16,S盒调用参数序列的比特数、S盒的目标数量之商2,那么参数组合的数目即为2,也就是将32比特的S盒调用参数序列划分为16份,每份2比特;参数组合可以包括00、01、10、11这四类,每一类对应一个目标S盒,由于S盒调用参数序列也是由这四类参数组合形成的序列,从而就可以得到与S盒调用参数序列对应的目标S盒组合。
[0087] 本实施例中,通过将S盒调用参数序列划分为参数组合;基于参数组合与目标S盒之间的对应关系,得到与S盒调用参数序列对应的目标S盒组合。由于通过调用参数序列就可以获取到对应的多个S盒,提高了确定目标S盒组合的灵活性与便捷性。
[0088] 在一个实施例中,以分组密码的结构为Feistel结构进行说明,其中,分组密码的长度n=128,并选用比特数为m=4的S盒,初始S盒如表1所示:
[0089] 表1
[0090]3 13 15 10 0 7 12 1 4 2 9 5 11 14 6 8
[0091] 根据公式 得到初始S盒的等价类作为多组预设S盒,其中,a和b均为0‑15之间的常数;从多组预设S盒中确定有效S盒,将有效S盒对应的第一参数a、第二参数b作为有效S盒的生成参数进行存储,得到多组有效S盒生成参数,经过筛选后,得到64组(a,b),0<=a<16,每个a下面有4个b的值,包括b=0,1,5,15。
[0092] S盒的目标数量为n/2m=16,此时S盒调用参数序列的参数规模T=t^16,其中,t为候选S盒的数量。由于t最大取值为64,可得到S盒调用参数序列的最大参数规模为64^{16}=2^{96},此时,在选取S盒调用参数序列时,不超过最大参数规模即可,例如,S盒调用参数序列的参数规模可以选取T=2^{32},从而联立t^16=2^{32},可以计算得到t=4,即候选S盒的数量为4,再从多组预设S盒的生成参数中确定4组目标生成参数,可以选择a=0,b=0,1,5,15这四组参数。
[0093] 将32比特的S盒调用参数序列划分为参数组合,S盒的目标数量为16,S盒调用参数序列的比特数、S盒的目标数量之商2,那么参数组合的数目即为2,也就是将32比特的S盒调用参数序列划分为16份,每份2比特,根据这两比特的值选择4个S盒,即设定参数组合与目标S盒之间的对应关系为:
[0094] 00:对应a=0,b=0;01:对应a=0,b=1;10:对应a=0,b=5;11:对应a=0,b=15。
[0095] 若T=(00011011000110110001101100011011),即每两位划分为一个参数组合,从而有16个参数组合,再根据参数组合与目标S盒之间的对应关系,确定出16个目标S盒,作为S盒调用参数序列对应的目标S盒组合。
[0096] 应该理解的是,虽然图2‑7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2‑7中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0097] 请参考图8,其示出了本申请实施例提供的一种参数化S盒生成装置800的框图。如图8所示,该参数化S盒生成装置800可以包括:第一获取模块802、第一生成模块804和确定模块806,其中:
[0098] 第一获取模块802,用于获取S盒调用参数序列、S盒的目标数量以及多组预设S盒生成参数;每组预设S盒生成参数可用于生成至少一个S盒;
[0099] 第一生成模块804,用于根据S盒调用参数序列、S盒的目标数量,从多组预设S盒生成参数中确定目标生成参数;根据目标生成参数,生成目标S盒;
[0100] 确定模块806,用于根据S盒调用参数序列、目标S盒,得到与S盒调用参数序列对应的目标S盒组合。
[0101] 在一个实施例中,上述参数化S盒生成装置800还可以包括:第二获取模块808、第二生成模块810和存储模块812,其中:
[0102] 第二获取模块808,用于获取至少一个初始S盒以及预设的参数集;所述预设的参数集用于对所述初始S盒进行转换;所述预设的参数集包括多组第一参数和第二参数;
[0103] 第二生成模块810,用于根据各组所述第一参数、所述第二参数以及所述初始S盒,生成多组预设S盒;所述预设S盒为所述初始S盒的等价类S盒;
[0104] 存储模块812,用于将所述多组预设S盒对应的第一参数、第二参数,作为所述预设S盒的生成参数进行存储,得到多组预设S盒生成参数。
[0105] 在一个实施例中,上述存储模块812包括确定单元,确定单元用于从所述多组预设S盒中确定有效S盒,将所述有效S盒对应的第一参数、第二参数作为所述有效S盒的生成参数进行存储,得到多组有效S盒生成参数。
[0106] 在一个实施例中,上述第一生成模块804包括:计算单元和确定单元,其中,计算单元用于根据所述S盒调用参数序列、所述S盒的目标数量,计算候选S盒的数量;确定单元用于根据所述候选S盒的数量,从所述多组预设S盒的生成参数中确定目标生成参数;所述目标生成参数的数量与所述候选S盒的数量一致。
[0107] 在一个实施例中,上述第一生成模块804还包括:第一运算单元、第二运算单元和第一生成单元,其中,第一运算单元用于将所述初始S盒的输入值分别与所述目标生成参数中的各组第一参数进行异或运算,得到第一运算结果;第二运算单元用于将各组所述第一运算结果分别与所述目标生成参数中的各组第二参数进行异或运算,得到所述输入值对应的输出值;第一生成单元用于根据所述输入值和所述输出值,生成所述目标S盒;所述目标S盒的数量与所述候选S盒的数量一致。
[0108] 在一个实施例中,上述第一生成模块804还包括:第三运算单元、第四运算单元、第五运算单元、第六运算单元和第二生成单元,其中,第三运算单元用于将所述初始S盒的输入值与预设的第一位置换矩阵相乘,得到第二运算结果;第四运算单元用于将各组所述第二运算结果分别与所述目标生成参数中的各组第一参数进行异或运算,得到第三运算结果;第五运算单元用于将所述第三运算结果与预设的第二位置换矩阵相乘,得到第四运算结果;第六运算单元用于将所述第四运算结果分别与所述目标生成参数中的各组第二参数进行异或运算,得到所述输入值对应的输出值;第二生成单元用于根据所述输入值和所述输出值,生成所述目标S盒;所述目标S盒的数量与所述候选S盒的数量一致。
[0109] 在一个实施例中,上述确定模块806包括划分单元和确定单元,其中,划分单元用于将所述S盒调用参数序列划分为参数组合;所述参数组合的数目与所述S盒调用参数序列的比特数、所述S盒的目标数量之商相同;确定单元用于基于所述参数组合与所述目标S盒之间的对应关系,得到与所述S盒调用参数序列对应的目标S盒组合。
[0110] 关于参数化S盒生成装置的具体限定可以参见上文中对于参数化S盒生成方法的限定,在此不再赘述。上述参数化S盒生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块的操作。
[0111] 在本申请的一个实施例中,提供了一种计算机设备,该计算机设备包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
[0112] 获取S盒调用参数序列、S盒的目标数量以及多组预设S盒生成参数;每组预设S盒生成参数可用于生成至少一个S盒;根据S盒调用参数序列、S盒的目标数量,从多组预设S盒生成参数中确定目标生成参数;根据目标生成参数,生成目标S盒;根据S盒调用参数序列、目标S盒,得到与S盒调用参数序列对应的目标S盒组合。
[0113] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0114] 获取至少一个初始S盒以及预设的参数集;预设的参数集用于对初始S盒进行转换;预设的参数集包括多组第一参数和第二参数;根据各组第一参数、第二参数以及初始S盒,生成多组预设S盒;预设S盒为初始S盒的等价类S盒;将多组预设S盒对应的第一参数、第二参数,作为预设S盒的生成参数进行存储,得到多组预设S盒生成参数。
[0115] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0116] 从多组预设S盒中确定有效S盒,将有效S盒对应的第一参数、第二参数作为有效S盒的生成参数进行存储,得到多组有效S盒生成参数。
[0117] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0118] 根据S盒调用参数序列、S盒的目标数量,计算候选S盒的数量;根据候选S盒的数量,从多组预设S盒的生成参数中确定目标生成参数;目标生成参数的数量与候选S盒的数量一致。
[0119] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0120] 将初始S盒的输入值分别与目标生成参数中的各组第一参数进行异或运算,得到第一运算结果;将各组第一运算结果分别与目标生成参数中的各组第二参数进行异或运算,得到输入值对应的输出值;根据输入值和输出值,生成目标S盒;目标S盒的数量与候选S盒的数量一致。
[0121] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0122] 将初始S盒的输入值与预设的第一位置换矩阵相乘,得到第二运算结果;将各组第二运算结果分别与目标生成参数中的各组第一参数进行异或运算,得到第三运算结果;将第三运算结果与预设的第二位置换矩阵相乘,得到第四运算结果;将第四运算结果分别与目标生成参数中的各组第二参数进行异或运算,得到输入值对应的输出值;根据输入值和输出值,生成目标S盒;目标S盒的数量与候选S盒的数量一致。
[0123] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0124] 将S盒调用参数序列划分为参数组合;参数组合的数目与S盒调用参数序列的比特数、S盒的目标数量之商相同;基于参数组合与目标S盒之间的对应关系,得到与S盒调用参数序列对应的目标S盒组合。
[0125] 本申请实施例提供的计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
[0126] 在本申请的一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0127] 获取S盒调用参数序列、S盒的目标数量以及多组预设S盒生成参数;每组预设S盒生成参数可用于生成至少一个S盒;根据S盒调用参数序列、S盒的目标数量,从多组预设S盒生成参数中确定目标生成参数;根据目标生成参数,生成目标S盒;根据S盒调用参数序列、目标S盒,得到与S盒调用参数序列对应的目标S盒组合。
[0128] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0129] 获取至少一个初始S盒以及预设的参数集;预设的参数集用于对初始S盒进行转换;预设的参数集包括多组第一参数和第二参数;根据各组第一参数、第二参数以及初始S盒,生成多组预设S盒;预设S盒为初始S盒的等价类S盒;将多组预设S盒对应的第一参数、第二参数,作为预设S盒的生成参数进行存储,得到多组预设S盒生成参数。
[0130] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0131] 从多组预设S盒中确定有效S盒,将有效S盒对应的第一参数、第二参数作为有效S盒的生成参数进行存储,得到多组有效S盒生成参数。
[0132] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0133] 根据S盒调用参数序列、S盒的目标数量,计算候选S盒的数量;根据候选S盒的数量,从多组预设S盒的生成参数中确定目标生成参数;目标生成参数的数量与候选S盒的数量一致。
[0134] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0135] 将初始S盒的输入值分别与目标生成参数中的各组第一参数进行异或运算,得到第一运算结果;将各组第一运算结果分别与目标生成参数中的各组第二参数进行异或运算,得到输入值对应的输出值;根据输入值和输出值,生成目标S盒;目标S盒的数量与候选S盒的数量一致。
[0136] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0137] 将初始S盒的输入值与预设的第一位置换矩阵相乘,得到第二运算结果;将各组第二运算结果分别与目标生成参数中的各组第一参数进行异或运算,得到第三运算结果;将第三运算结果与预设的第二位置换矩阵相乘,得到第四运算结果;将第四运算结果分别与目标生成参数中的各组第二参数进行异或运算,得到输入值对应的输出值;根据输入值和输出值,生成目标S盒;目标S盒的数量与候选S盒的数量一致。
[0138] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0139] 将S盒调用参数序列划分为参数组合;参数组合的数目与S盒调用参数序列的比特数、S盒的目标数量之商相同;基于参数组合与目标S盒之间的对应关系,得到与S盒调用参数序列对应的目标S盒组合。
[0140] 本实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
[0141] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0142] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0143] 以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。