基于循环移位和异或运算构造密码结构模型的方法与流程

    专利2022-07-08  97


    本发明涉及密码算法
    技术领域
    ,具体涉及基于循环移位和异或运算构造密码结构模型的方法。
    背景技术
    :线性变换常用于密码算法的扩散层,为密码算法提供良好的扩散性质,保障密码算法抵抗差分和线性等攻击方法的安全性。在spn(substitutionpermutationnetwork)、feistel等密码结构中,扩散层主要用于将混淆层的局部非线性等密码学特性扩散到更多的整体分组中。线性扩散部件设计的好坏直接影响密码算法的安全性和效率。构造结构简单且分支数较大的线性变换是密码算法设计中非常重要的环节。另一方面,在密码算法的设计中,密码算法的实现速度也是非常重要的考量因素,设计结构简洁、易于实现的密码部件也是密码算法设计的主要目标之一。目前,在很多密码算法的设计方案中,扩散层通常采用线性mds变换(矩阵)等结构,如果代数结构或模型相对复杂,则实现不够简单,线性mds变换(矩阵)的实现性能将直接影响分组密码的实现性能。因此在密码算法的设计中,寻找分支数较大且便于软硬件实现的线性扩散层部件,对设计安全高效的密码算法具有重要意义。对于分支数,按照如下方式进行定义b=min{w(α) w(aα)|α∈gf(2n)m\{0}}其中,b代表分支数,f(α)=aα是gf(2n)m上定义的线性变换;α=(α1,α2,…,αm)∈gf(2n)m,w(α)表示α=(α1,α2,…,αm)中的非0元个数。因此,为了满足更高的分组密码实现性能,以及提高密码算法的安全和高效性,需要提出更为合理的技术方案,解决现有技术中存在的技术问题。技术实现要素:为了克服上述内容中提到的现有技术存在的缺陷,本发明提供了基于循环移位和异或运算构造密码结构模型的方法,旨在以简洁的方式获得更多分支数的线性变换,降低密码算法中的实现成本,便于软硬件实现,提高分组密码的实现性能和密码算法的安全性与效率。为了实现上述目的,本发明具体采用的技术方案是:基于循环移位和异或运算构造密码结构模型的方法,包括:选定密码扩散层结构进行结构分析;在选定密扩散层结构基础上进行模型结构设计;对设计的模型分支数进行计算;根据计算结果分析设计模型的复杂程度,并从中选择最优模型;其中,将选定的密码扩散层结构作为基础,取变换模型作为双线输入量,进行分支数为四的若干矩阵变换、循环移位和异或运算变换,得到更高分支数的线性变换模型双线输出量,以完成线性变换并构造密码结构模型。上述公开的构造密码结构模型的方法,通过对现有的密码扩散层结构进行改进,在扩散层结构上进行矩阵变换、循环移位和异或运算变换,将密码扩散层的分支数提高,使线性变换的分支数达到实际密码算法设计中的使用要求,同时不低于现有公开结果。进一步的,上述公开的方法中,涉及矩阵变换,具体涉及分支数为四的线性变换,具体采用如下如下矩阵aa,b,c,d∈{0,1},a b c d=3,b=0设则y=a(x)运算如下:进一步的,根据不同的循环位移和异或运算方案,可得出不同的密码模型,此处提出一种具体可行的方案:进行三次循环移位和两次异或运算,得到最大分支数为五的线性变换模型。具体方法如下:y0=(a(x1)<<<i)⊕a(x0)y1=(a(x1)<<<j)⊕(a(x0)<<<k)其中,x0和x1分别为双线输入的两个输入量,y0和y1分别为对应的两个输出量。在这种方案中,得到的分支数为五的线性变换模型数有30720组。再进一步,此处举出另一种循环移位和异或运算方案,具体进行三次循环移位和三次异或运算,得到最大分支数为六的线性变换模型。具体方法如下:y0=(a(x0)⊕(a(x1)<<<i))⊕((a(x0)⊕(a(x1)<<<i))<<<k)⊕(a(x1)<<<j)y1=((a(x0)⊕(a(x1)<<<i))<<<k)⊕(a(x1)<<<j)其中,x0和x1分别为双线输入的两个输入量,y0和y1分别为对应的两个输出量。在这种方案中,得到的分支数为六的线性变换模型数有6272组。在进一步,此处举出另一种循环移位和异或运算方案,具体进行两次循环移位和三次异或运算,得到最大分支数为六的线性变换模型,具体方法如下:y0=(a(x0)⊕a(x1))⊕((a(x1)⊕((a(x0)⊕a(x1))<<<i))<<<j)y1=a(x1)⊕((a(x0)⊕a(x1))<<<i)其中,x0和x1分别为双线输入的两个输入量,y0和y1分别为对应的两个输出量。在这种方案中,得到的分支数为六的线性变换模型有196组。在进一步,此处举出另一种循环移位和异或运算方案,具体进行两次循环移位和四次异或运算,得到最大分支数为六的线性变换模型,具体方法如下:y0=((((a(x0)⊕a(x1))<<<i)⊕a(x1))<<<j)⊕(a(x0)⊕a(x1))y1=((((a(x0)⊕a(x1))<<<i)⊕a(x1))<<<j)⊕(((((a(x0)⊕a(x1))<<<i)⊕a(x1))<<<j)⊕(a(x0)⊕a(x1)))其中,x0和x1分别为双线输入的两个输入量,y0和y1分别为对应的两个输出量。在这种方案中,得到的分支数为六的线性变换模型有612组。进一步的,上述公开的四种密码模型中,第三种模型可的分支数为六且数据组数最少,结构简洁,可作为最优项。进一步的,上述公开的构建密码模型的方法中,可采用多种现有的扩散层模型作为选定模型,此处举出一种可行的方案,具体的:在camellia算法的扩散层结构基础上进行矩阵变换、循环移位和异或运算变换。进一步的,上述公开的构建密码模型的方法中,在经过扩散层结构的冲重新设计后,计算得到的线性变换模型分支数,可采用多种方式,此处基于现有数学最优值求解方法将模型中代数结构的分支数转化为sat求解问题,结合cplex等辅助软件进行分析、测试、验证,获得目标模型的分支数。与现有技术相比,本发明具有的有益效果是:本发明公开的构造密码结构模型的方法,基于已有密码扩散层结构设计密码算法线性扩散层,采用异或和循环移位等基本运算,结构简洁,使得实现简单、高效,构造的线性变换分支数达到实际密码算法设计中的使用要求,同时不低于现有公开结果,具有较好的实际应用价值。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅表示出了本发明的部分实施例,因此不应看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。图1为本发明的原理过程示意图。图2为实施例1中公开的密码模型原理结构示意图。图3为实施例2中公开的密码模型原理结构示意图。图4为实施例3中公开的密码模型原理结构示意图。图5为实施例4中公开的密码模型原理结构示意图。具体实施方式下面结合附图及具体实施例对本发明做进一步阐释。在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。本文公开的特定结构和功能细节仅用于描述本发明的示例实施例。然而,可用很多备选的形式来体现本发明,并且不应当理解为本发明限制在本文阐述的实施例中。实施例1本实施例针对现有密码算法的设计方案中代数结构或模型相对复杂,则实现不够简单,影响分组密码的实现性能的现象,对密码算法的设计方案进行优化,以提出分支数较大且便于软硬件实现的线性扩散层部件,从而得到安全高效的密码结构模型。具体的,如图1、图2所示,本实施例公开的技术方案如下:基于循环移位和异或运算构造密码结构模型的方法,包括:s01:选定密码扩散层结构进行结构分析;s02:在选定密扩散层结构基础上进行模型结构设计;s03:对设计的模型分支数进行计算;s04:根据计算结果分析设计模型的复杂程度,并从中选择最优模型;其中,将选定的密码扩散层结构作为基础,取变换模型作为双线输入量,进行分支数为四的若干矩阵变换、循环移位和异或运算变换,得到更高分支数的线性变换模型双线输出量,以完成线性变换并构造密码结构模型。上述公开的构造密码结构模型的方法,通过对现有的密码扩散层结构进行改进,在扩散层结构上进行矩阵变换、循环移位和异或运算变换,将密码扩散层的分支数提高,使线性变换的分支数达到实际密码算法设计中的使用要求,同时不低于现有公开结果。上述公开的方法中,涉及矩阵变换,具体涉及分支数为四的线性变换,具体采用如下矩阵aa,b,c,d∈{0,1},a b c d=3,b=0设则y=a(x)运算如下:根据不同的循环位移和异或运算方案,可得出不同的密码模型,本实施例提出一种具体可行的方案:进行三次循环移位和两次异或运算,得到最大分支数为五的线性变换模型。具体方法如下:y0=(a(x1)<<<i)⊕a(x0)y1=(a(x1)<<<j)⊕(a(x0)<<<k)其中,⊕表示异或运算,<<<i表示向左移i位,>>>i表示向右移i位,x0和x1分别为双线输入的两个输入量,y0和y1分别为对应的两个输出量。在这种方案中,得到的分支数为五的线性变换模型数有30720组。上述公开的构建密码模型的方法中,可采用多种现有的扩散层模型作为选定模型,本实施例举出一种可行的方案,具体的:在camellia算法的扩散层结构基础上进行矩阵变换、循环移位和异或运算变换。上述公开的构建密码模型的方法中,在经过扩散层结构的冲重新设计后,计算得到的线性变换模型分支数,可采用多种方式,此处基于现有数学最优值求解方法将模型中代数结构的分支数转化为sat求解问题,结合cplex等辅助软件进行分析、测试、验证,获得目标模型的分支数。实施例2本实施例提出了基于循环移位和异或运算构造密码结构模型的方法,与实施例1中不同的地方在于,本实施例在实施例1的基础上,对循环位移和异或运算变换提出了不同的设计方案,具体如下:如图3所示,本实施例中,具体进行三次循环移位和三次异或运算,得到最大分支数为六的线性变换模型。具体方法如下:y0=(a(x0)⊕(a(x1)<<<i))⊕((a(x0)⊕(a(x1)<<<i))<<<k)⊕(a(x1)<<<j)y1=((a(x0)⊕(a(x1)<<<i))<<<k)⊕(a(x1)<<<j)其中,x0和x1分别为双线输入的两个输入量,y0和y1分别为对应的两个输出量。在这种方案中,得到的分支数为六的线性变换模型数有6272组。本实施例中未提及的其他步骤和方法与实施例1中相同,此处就不再赘述。实施例3本实施例提出了基于循环移位和异或运算构造密码结构模型的方法,与实施例1中不同的地方在于,本实施例在实施例1的基础上,对循环位移和异或运算变换提出了不同的设计方案,具体如下:如图4所示,本实施例中具体进行两次循环移位和三次异或运算,得到最大分支数为六的线性变换模型,具体方法如下:y0=(a(x0)⊕a(x1))⊕((a(x1)⊕((a(x0)⊕a(x1))<<<i))<<<j)y1=a(x1)⊕((a(x0)⊕a(x1))<<<i)其中,x0和x1分别为双线输入的两个输入量,y0和y1分别为对应的两个输出量。在这种方案中,得到的分支数为六的线性变换模型有196组。具体的,在本实施例中,对i、j遍历所得到的196组最大分支数为六的线性变换结构如下表所示:ij数量90,1--6,8--1413100,1--5,7--13,3113110,1--4,6—12,30,3117120,1—3,5—11,29--3113130,1,2,4—10,28—3113140,1,3—9,27—3113150,2—8,26—3113170,1—6,24—3013180,1—5,23—29,3113190,1—4,22—28,30,3113200,1—3,21—27,29—3113210,1,2,20—26,28—3113220,1,19—25,27—3113230,18—24,26—3113本实施例中未提及的其他步骤和方法与实施例1中相同,此处就不再赘述。实施例4本实施例提出了基于循环移位和异或运算构造密码结构模型的方法,与实施例1中不同的地方在于,本实施例在实施例1的基础上,对循环位移和异或运算变换提出了不同的设计方案,具体如下:如图5所示,本实施例中,具体进行两次循环移位和四次异或运算,得到最大分支数为六的线性变换模型,具体方法如下:y0=((((a(x0)⊕a(x1))<<<i)⊕a(x1))<<<j)⊕(a(x0)⊕a(x1))y1=((((a(x0)⊕a(x1))<<<i)⊕a(x1))<<<j)⊕(((((a(x0)⊕a(x1))<<<i)⊕a(x1))<<<j)⊕(a(x0)⊕a(x1)))其中,x0和x1分别为双线输入的两个输入量,y0和y1分别为对应的两个输出量。在这种方案中,得到的分支数为六的线性变换模型有612组。本实施例中未提及的其他步骤和方法与实施例1中相同,此处就不再赘述。以上即为本发明列举的实施方式,但本发明不局限于上述可选的实施方式,本领域技术人员可根据上述方式相互任意组合得到其他多种实施方式,任何人在本发明的启示下都可得出其他各种形式的实施方式。上述具体实施方式不应理解成对本发明的保护范围的限制,本发明的保护范围应当以权利要求书中界定的为准,并且说明书可以用于解释权利要求书。当前第1页1 2 3 
    技术特征:

    1.基于循环移位和异或运算构造密码结构模型的方法,其特征在于,包括:

    选定密码扩散层结构进行结构分析;

    在选定密扩散层结构基础上进行模型结构设计;

    对设计的模型分支数进行计算;

    根据计算结果分析设计模型的复杂程度,并从中选择最优模型;

    其中,将选定的密码扩散层结构作为基础,取变换模型作为双线输入量,进行分支数为四的若干矩阵变换、循环移位和异或运算变换,得到更高分支数的线性变换模型双线输出量,以完成线性变换并构造密码结构模型。

    2.根据权利要求1所述的基于循环移位和异或运算构造密码结构模型的方法,其特征在于:进行分支数为四的矩阵变换时采用如下矩阵a

    a,b,c,d∈{0,1},a b c d=3,b=0

    则y=a(x)运算如下:

    3.根据权利要求1所述的基于循环移位和异或运算构造密码结构模型的方法,其特征在于,进行三次循环移位和两次异或运算,得到最大分支数为五的线性变换模型,具体方法如下:

    y0=(a(x1)<<<i)⊕a(x0)

    y1=(a(x1)<<<j)⊕(a(x0)<<<k)

    其中,x0和x1分别为双线输入的两个输入量,y0和y1分别为对应的两个输出量。

    4.根据权利要求1所述的基于循环移位和异或运算构造密码结构模型的方法,其特征在于,进行三次循环移位和三次异或运算,得到最大分支数为六的线性变换模型,具体方法如下:

    y0=(a(x0)⊕(a(x1)<<<i))⊕((a(x0)⊕(a(x1)<<<i))<<<k)⊕(a(x1)<<<j)

    y1=((a(x0)⊕(a(x1)<<<i))<<<k)⊕(a(x1)<<<j)

    其中,x0和x1分别为双线输入的两个输入量,y0和y1分别为对应的两个输出量。

    5.根据权利要求1所述的基于循环移位和异或运算构造密码结构模型的方法,其特征在于,进行两次循环移位和三次异或运算,得到最大分支数为六的线性变换模型,具体方法如下:

    y0=(a(x0)⊕a(x1))⊕((a(x1)⊕((a(x0)⊕a(x1))<<<i))<<<j)

    y1=a(x1)⊕((a(x0)⊕a(x1))<<<i)

    其中,x0和x1分别为双线输入的两个输入量,y0和y1分别为对应的两个输出量。

    6.根据权利要求1所述的基于循环移位和异或运算构造密码结构模型的方法,其特征在于,进行两次循环移位和四次异或运算,得到最大分支数为六的线性变换模型,具体方法如下:

    y0=((((a(x0)⊕a(x1))<<<i)⊕a(x1))<<<j)⊕(a(x0)⊕a(x1))

    y1=((((a(x0)⊕a(x1))<<<i)⊕a(x1))<<<j)⊕(((((a(x0)⊕a(x1))<<<i)⊕a(x1))<<<j)⊕(a(x0)⊕a(x1)))

    其中,x0和x1分别为双线输入的两个输入量,y0和y1分别为对应的两个输出量。

    7.根据权利要求1~6中任一项所述的基于循环移位和异或运算构造密码结构模型的方法,其特征在于:在camellia算法的扩散层结构基础上进行矩阵变换、循环移位和异或运算变换。

    8.根据权利要求1~6中任一项所述的基于循环移位和异或运算构造密码结构模型的方法,其特征在于:采用sat求解方式计算经过矩阵变换、循环移位和异或运算变换后得到模型的分支数。

    技术总结
    本发明涉及密码算法技术领域,具体涉及基于循环移位和异或运算构造密码结构模型的方法,基于已有密码扩散层结构设计密码算法线性扩散层,采用异或和循环移位等基本运算得到更新的密码结构模型,新的密码结构简洁,使得实现简单、高效,构造的线性变换分支数达到实际密码算法设计中的使用要求,同时不低于现有公开结果,具有较好的实际应用价值。

    技术研发人员:李枫;张文政;苗旭东;董新锋
    受保护的技术使用者:中国电子科技集团公司第三十研究所
    技术研发日:2020.12.02
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-21058.html

    最新回复(0)