基于可重构阵列实现分组密码算法的方法及装置与流程

文档序号:17892014发布日期:2019-06-13 15:43阅读:130来源:国知局
基于可重构阵列实现分组密码算法的方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种基于可重构阵列实现分组密码算法shacal-2的方法及装置。



背景技术:

分组密码算法shacal-2算法的实现一般采用两种方案:一是在通用微处理器上实现,虽然其使用灵活,便于更新,但限制与微处理器本身的运行性能相对低下,使得shacal-2的性能远远不能满足要求;二是在专用asic(applicationspecificintegratedcircuit,集成电路)上实现,正好相反,其性能很高,但是其灵活性很差,当需要更换算法时,就不得不更换芯片,这使得使用成本很高。

另外,相关技术中对实现shacal-2算法还未能满足当前的需求,也未能满足行业的需求,亟待解决。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的一个目的在于提出一种基于可重构阵列实现分组密码算法shacal-2的方法,该方法具有高性能、高速度,又具有高度通用性和强大的可编程功能,弥补了传统方法的缺陷,进而降低成本,满足shacal-2算法的性能要求。

本发明的另一个目的在于提出一种基于可重构阵列实现分组密码算法shacal-2的装置。

为达到上述目的,本发明一方面提出了基于可重构阵列实现分组密码算法shacal-2的方法,包括以下步骤:将分组密码算法shacal-2映射为多个分组密码子算法,并生成与所述多个分组密码子算法中的各个分组密码子算法一一对应的配置信息;根据所述配置信息配置所述可重构阵列,并从输入先入先出寄存器读取待加密数据,对所述待加密数据进行加密运算获得加密密文,将所述加密密文发送至输出先入先出寄存器。

本发明实施例的基于可重构阵列实现分组密码算法shacal-2的方法,通过采用可重构阵列弥补微处理器运行性能低下和asic灵活性差的问题,使得分组密码算法shacal-2的性能满足要求,且在更换算法时也避免更换芯片的问题,减少不必要的成本价格。

另外,根据本发明上述实施例的基于可重构阵列实现分组密码算法shacal-2的方法还可以具有以下附加的技术特征:

进一步地,在本发明的一个实施例中,所述多个分组密码子算法包括:第一分组密码子算法用于对所述待加密数据进行初始化;第二分组密码子算法用于使用64轮压缩函数对初始化后的待加密数据进行加密运算并生成所述加密密文;第三分组加密子算法用于将所述加密密文输出至所述输出先入先出寄存器。

可选地,在本发明的一个实施例中,第一分组密码子算法具体用于:将所述待加密数据载入至所述可重构阵列,进行数据大小端转换操作获得第一数据转换结果,并将所述第一数据转换结果写入存储器,完成对所述待加密数据的初始化。

进一步地,在本发明的一个实施例中,所述第二分组密码子算法具体用于:读取所述存储器中所述第一数据转换结果,将所述第一数据转换结果与所述配置信息载入所述可重构阵列进行加密运算,获得第一加密结果并将所述加密结果存入所述存储器。

进一步地,在本发明的一个实施例中,所述第三分组加密子算法具体用于:读取所述第一加密结果并将所述第一加密结果输入至所述可重构阵列进行数据大小端转换操作获得所述加密密文,并将所述加密密文输出至所述输出先入先出寄存器。

为达到上述目的,本发明另一方面提出了一种基于可重构阵列实现分组密码算法shacal-2的装置,包括:映射模块,用于将分组密码算法shacal-2映射为多个分组密码子算法,并生成与所述多个分组密码子算法中的各个分组密码子算法一一对应的配置信息;配置模块,用于根据所述配置信息配置所述可重构阵列,并从所述输入先入先出寄存器读取待加密数据;加密模块,用于将所述待加密数据进行加密运算获得加密密文,将所述加密密文发送至所述输出先入先出寄存器。

本发明实施例的基于可重构阵列实现分组密码算法shacal-2的装置,通过采用可重构阵列弥补微处理器运行性能低下和asic灵活性差的问题,使得分组密码算法shacal-2的性能满足要求,且在更换算法时也避免更换芯片的问题,减少不必要的成本价格。

另外,根据本发明上述实施例的基于可重构阵列实现分组密码算法shacal-2的装置还可以具有以下附加的技术特征:

进一步地,在本发明的一个实施例中,所述多个分组密码子算法包括:第一分组密码子算法用于对所述待加密数据进行初始化;第二分组密码子算法用于使用64轮压缩函数对初始化后的待加密数据进行加密运算并生成所述加密密文;第三分组加密子算法用于将所述加密密文输出至所述输出先入先出寄存器。

进一步地,在本发明的一个实施例中,所述第一分组密码子算法具体用于:将所述待加密数据载入至所述可重构阵列,以进行数据大小端转换操作获得第一数据转换结果,并将所述第一转换结果写入存储器,完成对所述待加密数据的初始化。

可选地,在本发明的一个实施例中,所述第二分组密码子算法具体用于:从所述存储器读取所述第一数据转换结果,将所述第一数据转换结果与所述配置信息载入所述可重构阵列进行加密运算,获得第一加密结果并将所述加密结果存入所述存储器。

进一步地,在本发明的一个实施例中,所述第三分组加密子算法具体用于:读取所述第一加密结果并将所述第一加密结果输入至所述可重构阵列进行数据大小端转换操作获得所述加密密文,并将所述加密密文输出至所述输出先入先出寄存器。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为根据本发明实施例的基于可重构阵列实现分组密码算法shacal-2的方法流程图;

图2为根据本发明实施例的分组密码算法shacal-2数学模型示意图;

图3为根据本发明具体实施例中第一分组加密子算法在可重构阵列上的映射关系图;

图4为根据本发明具体实施例中第二分组加密子算法在可重构阵列上的映射关系图;

图5为根据本发明具体实施例中第三分组加密子算法在可重构阵列上的映射关系图;

图6为根据本发明实施例的基于可重构阵列实现分组密码算法shacal-2的装置结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参照附图描述根据本发明实施例提出的基于可重构阵列实现分组密码算法的映射方法及装置,首先将参照附图描述根据本发明实施例提出的基于可重构阵列实现分组密码算法的映射方法。

图1是本发明一个实施例的基于可重构阵列实现分组密码算法shacal-2的方法流程图。

如图1所示,该基于可重构阵列实现分组密码算法shacal-2的方法包括以下步骤:

在步骤s101中,将分组密码算法shacal-2映射为多个分组密码子算法,并生成与多个分组密码子算法中的各个分组密码子算法一一对应的配置信息。

需要说明的是,shacal-2算法是2003年nessie宣布第二阶段的终选算法之一,其分组长度为256bit,密钥长度为512bit,迭代次数为64轮,安全性在当时被认为是最高的。

举例而言,如图2所示,shacal-2算法数学模型中ff和gg函数计算过程为:

t1=h+∑1(ei)+ch(ei,fi,gi)+cnsti+wi

t2=∑0(ai)+maj(ai,bi,ci)

hi+1=gi

gi+1=fi

fi+1=ei

ei+1=di+t1

di+1=ci

ci+1=bi

bi+1=ai

ai+1=t1+t2

式中cnsti是常数,将第64轮的输出a63,b63,c63,d63,e63,f63,g63和h63串接,组成最终输出的密文。

具体地,符号和算子的说明如下表1:

进一步地,本发明实施例中的多个分组密码子算法包括:第一分组密码子算法、第二分组密码子算法和第三分组加密子算法。

其中,第一分组密码子算法用于对待加密数据进行初始化;第二分组密码子算法用于使用64轮压缩函数对初始化后的待加密数据进行加密运算并生成加密密文;第三分组加密子算法用于将加密密文输出至输出先入先出寄存器。

需要说明的是,为完成shacal-2算法的映射,在映射过程中将输入ram(存储器)数据、sbox(查找表)数据以及bfu(可重构处理器算子)、benes(比特置换)、sbox的配置数据。

在步骤s102中,根据配置信息配置可重构阵列,并从输入先入先出寄存器读取待加密数据,对待加密数据进行加密运算获得加密密文,将加密密文发送至输出先入先出寄存器

需要说明的是,可重构阵列包含:m1个计算阵列子块,每个子块有m2行,每行有m3个算子、m4个加法运算、m5个移位运算算子、m6个逻辑运算算子、m7个查找表和m8个比特置换,上述的算子可以根据配置信息动态的调整,以完成不同的算法运算。其中,m1~m8均取整数。

具体来讲,加法运算为可实现模28、216、232和(232-1)的加法,移位运算算子为可实现32bit数据任意位数的移位和循环移位,逻辑运算算子可实现多个数据间的与、或、非组合运算,查找表可实现4->4、6->4、8->8、8->32、9->9的查表操作,比特置换可实现128bit数据内任意比特置换。

其中,根据从输入先入先出寄存器ififo输入待加密数据,通过可重构阵列读取待加密数据并通过64轮压缩函数计算获得加密密文,最后从输出先入先出寄存器ofifo输出。

下面结合具体实施例对本发明实施例的基于可重构阵列实现分组密码算法shacal-2的方法进行详细描述。

步骤1,分析shacal-2算法,结合可重构阵列的特点,人根据各个分组密码子算法映射在可重构阵列上的算法形成映射关系图;

步骤2,根据映射关系图生成配置信息;

步骤3,将配置信息和待加密数据存入相应的存储器中;

步骤4,解析配置信息,根据解析后的配置信息配置可重构阵列对待加密数据进行加密运算获得加密密文,计算结束后,将所述加密密文输出至ofifo。

进一步地,各个分组密码子算法与可重构阵列的各个映射关系对应一种配置信息,在可重构阵列中通过解析这些配置信息可以完成该算法的映射(在映射过程中,输入ram数据、sbox数据以及bfu、benes、sbox的配置数据)。完成可重构处理器的配置后,向可重构阵列相应的寄存器写入特定的值,启动阵列开始运算并将运算加密后的数据发送至输出先入先出寄存器。

可以理解的是,根据shacal-2算法数学模型与可重构阵列的映射关系将其划分为如下3张图来进行映射:

第一映射关系图:从输入先入先出寄存器读取数据并存入存储器中,循环次数设置为1。

第二映射关系图:从存储器中读取数据进行64轮循环计算,将结果再次写入到mem中,循环次数设置为64。

第三映射关系图:从存储器读入结果输出至输出先入先出寄存器,循环次数设置为1。

进一步地对所述映射关系图中的映射流程进行说明:

图3为第一映射关系图,具体映射流程如下:

1)从输入先入先出寄存器301读取待加密数据,分别载入到第一比特置换算子302和第二比特置换算子303,进行数据大小端转换操作,结果为x0~x3输出至存储器306;

2)将x0~x3从缓存单元载入第一逻辑运算算子304和第二逻辑运算算子305,不进行运算,仅将x0~x3写入到存储器306中;

3)将寄存器rch0初始值设为0。

图4为第二映射关系图,具体映射流程如下:

1)从存储器306中读取e载入第一移动运算算子411,功能配置为(e>>>6)^(e>>>11),结果为e1输出至存储器306;

2)从存储器306中读v取e载入第二移动运算算子412,功能配置为(e>>>25),结果为e2输出至存储器306;

3)从存储器306中读取e,f,g载入第一逻辑运算算子413和第二逻辑运算算子414,功能配置为(e&f)^(e&g),结果为ch输出至存储器306;

4)将e1,e2,ch从缓存单元载入第一加法运算算子415,功能配置为e1^e2+ch,结果为ee_ch输出至缓存单元;

5)从存储器306中读取h,k载入第二加法运算算子416,功能配置为h+k,结果输出至寄存器r8

6)将ee_ch、r8从存储器306载入第二加法运算算子416,功能配置为ee_ch+r8,结果输出至寄存器r0;

7)从存储器306中读取a载入第一移位运算算子421,功能配置为(a>>>2)^(a>>>13),结果为a1输出至存储器306;

8)从存储器306中读取a载入第二移位运算算子422,功能配置为(a>>>22),结果为a2输出至存储器306;

9)从存储器306中读取a,b,c载入第一逻辑运算算子423、第二逻辑运算算子424和第三逻辑运算算子425,功能配置为(a&b)^(a&c)^(b&c),结果为maj输出至存储器306;

10)将a1,a2从存储器306载入第一逻辑运算算子423,功能配置为a1^a2,结果为ea输出至存储器306;

11)将maj,ea从存储器306载入第一加法运算算子426,功能配置为maj+ea,结果为t2输出至存储器306;

12)将maj_ea,r0从存储器306载入第二加法运算算子427,功能配置为maj_ea+r0,结果为更新后的a值,重新写入到原a值地址处;

13)将d,r0从存储器306载入第一加法运算算子431,功能配置为d+r0,结果为更新后的e值,重新写入到原e值地址处;

14)从存储器306读取g,直接写入原h值地址处;

15)从存储器306读取f,直接写入原g值地址处;

16)从存储器306读取e,直接写入原f值地址处;

17)从存储器306读取c,直接写入原d值地址处;

18)从存储器306读取b,直接写入原c值地址处;

19)从存储器306读取a,直接写入原b值地址处。

图5为第三映射关系图,具体映射流程如下:

1)分别从存储器306读取a~h的值输入到第一至第四比特置换算子501-504进行大小端转换操作,结果输出至输出先入先出寄存器505。

根据本发明实施例提出的基于可重构阵列实现分组密码算法的方法,通过采用可重构阵列弥补微处理器运行性能低下和asic灵活性差的问题,使得shacal-2算法的性能满足要求,且在更换算法时也避免更换芯片的问题,减少不必要的成本价格。

其次参照附图描述根据本发明实施例提出的基于可重构阵列实现分组密码算法的装置。

图6是本发明一个实施例的基于可重构阵列实现分组密码算法shacal-2的装置结构示意图。

如图6所示,该基于可重构阵列实现分组密码算法shacal-2的装置10包括:映射模块100、配置模块200和加密模块300。

其中,映射模块100用于将分组密码算法shacal-2映射为多个分组密码子算法,并生成与多个分组密码子算法中的各个分组密码子算法一一对应的配置信息。配置模块200用于根据配置信息配置可重构阵列,并从输入先入先出寄存器读取待加密数据。加密模块300用于将待加密数据进行加密运算获得加密密文,将加密密文发送至输出先入先出寄存器。

进一步地,在映射过程中,多个分组密码子算法包括:第一分组密码子算法,用于对待加密数据进行初始化;第二分组密码子算法,用于使用64轮压缩函数对初始化后的待加密数据进行加密运算并生成加密密文;第三分组加密子算法,用于将加密密文输出至输出先入先出寄存器。

进一步地,在本发明的一个实施例中,第一分组密码子算法具体用于:将待加密数据载入至可重构阵列,进行数据大小端转换操作获得第一数据转换结果,并将第一转换结果写入存储器,完成对待加密数据的初始化。

进一步地,在本发明的一个实施例中,第二分组密码子算法具体用于:从存储器读取第一数据转换结果,将第一数据转换结果与配置信息载入可重构阵列进行加密运算,获得第一加密结果并将加密结果存入存储器。

进一步地,在本发明的一个实施例中,第三分组加密子算法具体用于:读取第一加密结果并将第一加密结果输入至可重构阵列进行数据大小端转换操作获得加密密文,并将加密密文输出至输出先入先出寄存器。

需要说明的是,前述对基于可重构阵列实现分组密码算法的映射方法实施例的解释说明也适用于该装置,此处不再赘述。

根据本发明实施例提出的基于可重构阵列实现分组密码算法shacal-2的装置,通过采用可重构阵列弥补微处理器运行性能低下和asic灵活性差的问题,使得shacal-2算法的性能满足要求,且在更换算法时也避免更换芯片的问题,减少不必要的成本价格。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1