一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于数据地址混合加密的存储器加密电路

2022-08-31 03:41:17 来源:中国专利 TAG:


1.本技术涉及数据加密技术领域,尤其涉及一种基于数据地址混合加密的存储器加密电路。


背景技术:

2.存储器是许多存储单元的集合,每个存储单元都对应有一个地址。访问存储器的过程即按存储单元的地址存放或者读取各类数据的过程,通过对存储单元的地址进行加密以及对存储的数据进行加密,可实现信息保密。
3.为了能够对不同长度的存储器地址进行加密,目前所使用的地址加密电路包括三个加密模块,初始的存储单元地址依次经过这三个加密模块处理后,得到地址密文。该地址加密电路能够改变加密模式以适应任意宽度的存储单元地址,复用性强。在对存储器数据进行加密时,目前常使用prince算法进行加密,该prince算法能够在单一时钟周期内对数据完成加密,其明文分组长度为64bit,密钥长度为128bit,前后分别进行一次白化密钥,中间为固定轮数的纯组合轮函数结构。
4.目前在对存储单元的地址及数据进行加密时,各自使用独立的地址加密电路和独立的数据加密电路完成,安全性能较低,例如在针对不同存储单元进行加密时,若它们所存储的数据相同,即使它们地址的加密结果不同,但数据加密结果依然是相同的,容易被破解。


技术实现要素:

5.为了解决目前在对存储单元的地址及数据进行加密时,各自使用独立的地址加密电路和独立的数据加密电路完成,安全性能较低的技术问题,本技术通过以下实施例公开了一种基于数据地址混合加密的存储器加密电路。
6.本技术第一方面公开了一种基于数据地址混合加密的存储器加密电路,包括:地址加密模块、数据加密模块、数据解密模块、地址密钥生成模块、数据密钥生成模块、第一地址宽度调整模块、第二地址宽度调整模块及轮函数使能控制器;
7.所述地址加密模块用于接收所述地址密钥生成模块发送的地址密钥,并根据所述地址密钥对接收到的地址明文进行加密处理,然后输出地址密文至存储器,所述地址明文与所述地址密文的长度一致;
8.所述数据加密模块用于接收所述数据密钥生成模块发送的数据密钥,并根据所述数据密钥对接收到的数据明文进行加密处理,然后输出数据密文至所述存储器,所述数据明文与所述数据密文的长度一致;
9.所述数据加密模块包括依次连接的起始白化加密单元、第一地址轮函数加密单元、基本轮函数加密单元、轮数可变轮函数加密单元、第二地址轮函数加密单元及结束白化加密单元;
10.所述数据解密模块的运算过程与所述数据加密模块的运算过程相逆,所述数据解
密模块包括依次相接的起始白化解密单元、第二地址轮函数解密单元、轮数可变轮函数解密单元、基本轮函数解密单元、第一地址轮函数解密单元及结束白化解密单元;
11.所述第一地址宽度调整模块的输出端分别接至所述第一地址轮函数加密单元的输入端及所述第一地址轮函数解密单元的输入端,所述第一地址宽度调整模块用于将接收到的所述地址明文宽度调整预设宽度,获取第一地址数组,并将所述第一地址数组输出至所述第一地址轮函数加密单元及所述第一地址轮函数解密单元,所述预设宽度为所述数据明文的宽度;
12.所述第二地址宽度调整模块的输入端接至所述地址加密模块的输出端,所述第二地址宽度调整模块的输出端分别接至所述第二地址轮函数加密单元的输入端及所述第二地址轮函数解密单元的输入端;所述第二地址宽度调整模块用于将所述地址密文的宽度调整为所述预设宽度,获取第二地址数组,并将所述第二地址数组输出至所述第二地址轮函数加密单元及所述第二地址轮函数解密单元;
13.所述轮数可变轮函数加密单元包括多个依次相接的轮函数加密子单元,所述轮数可变轮函数解密单元包括多个依次相接的轮函数解密子单元;所述轮函数加密子单元的总个数与所述轮函数解密子单元的总个数相同;
14.所述轮函数使能控制器的输入端接至所述地址加密模块的输出端,所述轮函数使能控制器的输出端分别接至每个所述轮函数加密子单元及每个所述轮函数解密子单元,所述轮函数使能控制器用于根据所述地址密文生成控制信号,以控制每个所述轮函数加密子单元及每个所述轮函数解密子单元的输出。
15.可选的,每个所述轮函数加密子单元包括一个轮函数计算子单元和一个二路选择器,二路选择器包括两个输入端与一个输出端,其中一个输入端接至所述轮函数计算子单元的输出端,另一个输入端与所述轮函数计算子单元的输入端共同作为所述轮函数加密子单元的输入端,输出端作为所述轮函数加密子单元的输出端;
16.所述轮函数使能控制器的输出端接至每个所述轮函数加密子单元中的二路选择器,所述轮函数使能控制器所生成的控制信号用于控制所述轮函数加密子单元中的二路选择器输出所述轮函数计算子单元的输出数据,或者,直接输出所述轮函数加密子单元的输入数据。
17.可选的,每个所述轮函数解密子单元包括一个轮函数逆计算子单元和一个二路选择器,二路选择器包括两个输入端与一个输出端,其中一个输入端接至所述轮函数逆计算子单元的输出端,另一个输入端与所述轮函数逆计算子单元的输入端共同作为所述轮函数解密子单元的输入端,输出端作为所述轮函数解密子单元的输出端;
18.所述轮函数使能控制器的输出端还接至每个所述轮函数解密子单元中的二路选择器,所述轮函数使能控制器所生成的控制信号还用于控制所述轮函数解密子单元中的二路选择器输出所述轮函数逆计算子单元的输出数据,或者,直接输出所述轮函数解密子单元的输入数据。
19.可选的,所述轮函数使能控制器在根据所述地址密文生成控制信号时,用于执行以下步骤:
20.判断所述地址密文的长度是否为最大轮数的整数倍,所述最大轮数为所述轮数可变轮函数加密子单元的总个数;
21.若判断结果为否,则对所述地址密文进行高位补零,直至所述地址密文的长度为所述最大轮数的整数倍;
22.若判断结果为是,则根据所述最大轮数及所述地址密文,获取所述控制信号,所述控制信号包括多个选择信号,所述多个选择信号分别与多个所述轮函数加密子单元正向一一对应,所述多个选择信号分别与多个所述轮函数解密子单元逆向一一对应。
23.可选的,所述根据所述最大轮数及所述地址密文,获取所述控制信号,包括:
24.通过以下公式进行矩阵计算,获取所述控制信号:
[0025][0026]
其中,round_en[0]、round_en[1]、

、round_en[x-1]表示所述控制信号,x表示所述最大轮数,m表示所述地址密文的长度,cipher_addr'[]表示所述地址密文的信号。
[0027]
可选的,所述第一地址宽度调整模块在将接收到的所述地址明文宽度调整预设宽度,获取第一地址数组时,用于执行以下步骤:
[0028]
对所述地址明文进行重复组合,直至组合得到的地址明文数组宽度大于或等于所述预设宽度;其中,若所述地址明文数组宽度等于所述预设宽度,则将所述地址明文数组设为所述第一地址数组;若所述地址明文数组宽度大于所述预设宽度,则将多余部分删除,将剩下的地址明文数组设为所述第一地址数组;
[0029]
所述第二地址宽度调整模块在将所述地址密文的宽度调整为所述预设宽度,获取第二地址数组时,用于执行以下步骤:
[0030]
对所述地址密文进行重复组合,直至组合得到的地址密文数组宽度大于或等于所述预设宽度;其中,若所述地址密文数组宽度等于所述预设宽度,则将所述地址密文数组设为所述第二地址数组;若所述地址密文数组宽度大于所述预设宽度,则将多余部分删除,将剩下的地址密文数组设为所述第二地址数组。
[0031]
可选的,所述第一地址轮函数加密单元包括依次相接的第一s盒混淆子单元、第一m层矩阵线性变换子单元以及第一异或子单元;
[0032]
所述第一异或子单元用于对所述第一m层矩阵线性变换子单元的输出结果与预设的第二常数执行异或运算,然后将异或运算得到的结果与所述第一地址数组再次执行异或运算;
[0033]
所述第二地址轮函数加密单元包括依次相接的第二s盒混淆子单元、第二m层矩阵线性变换子单元以及第二异或子单元;
[0034]
所述第二异或子单元用于对所述第二m层矩阵线性变换子单元的输出结果与预设的第三常数执行异或运算,然后将异或运算得到的结果与所述第二地址数组再次执行异或运算。
[0035]
可选的,所述数据密钥生成模块用于生成第一数据密钥、第二数据密钥、第三数据密钥及第四数据密钥,并将所述第一数据密钥发送至所述结束白化加密单元,将所述第三数据密钥发送至所述起始白化加密单元,将所述第二数据密钥分别发送至所述起始白化加密单元、所述基本轮函数加密单元、所述轮数可变轮函数加密单元及所述结束白化加密单元;
[0036]
所述数据密钥生成模块还用于将所述第一数据密钥发送至所述起始白化解密单元,以及将所述第三数据密钥发送至所述结束白化解密单元,以及将所述第四数据密钥分别发送至所述起始白化解密单元、所述轮数可变轮函数解密单元、所述基本轮函数解密单元及所述结束白化解密单元。
[0037]
可选的,所述数据密钥生成模块用于对输入的初始数据密钥进行高低位均分,得到所述第一数据密钥及所述第二数据密钥,然后针对所述第一数据密钥进行行移位处理得到所述第三数据密钥,针对所述第二数据密钥与预设的第一常数进行异或处理得到所述第四数据密钥。
[0038]
可选的,所述基本轮函数加密单元包括五个基本轮函数加密子单元;所述基本轮函数解密单元包括五个基本轮函数解密子单元;
[0039]
所述轮数可变轮函数加密单元包括四个依次相接的轮函数加密子单元;所述轮数可变轮函数解密单元包括四个依次相接的轮函数解密子单元。
[0040]
本技术公开了一种基于数据地址混合加密的存储器加密电路,包括包括:地址加密模块、数据加密模块、数据解密模块、地址密钥生成模块、数据密钥生成模块、第一地址宽度调整模块、第二地址宽度调整模块及轮函数使能控制器;通过第一地址宽度调整模块、第二地址宽度调整模块及轮函数使能控制器将地址加密部分和数据加密部分进行结合,结合后的加密电路仍基于纯组合逻辑,能够在单一时钟内完成加密,具备良好的实时性。轮函数使能控制器能够根据地址密文生成的控制信号,控制轮数可变轮函数加密单元的轮函数加密结构,使得地址信息能够控制参与加密的轮函数个数,即使在数据明文相同的条件下,不同的存储器地址空间得到的数据加密结果仍然不同,提高了安全性能。
附图说明
[0041]
为了更清楚地说明本技术的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0042]
图1为本技术实施例公开的一种基于数据地址混合加密的存储器加密电路的结构示意图;
[0043]
图2为本技术实施例公开的一种基于数据地址混合加密的存储器加密电路中,地址加密模块的结构示意图;
[0044]
图3为本技术实施例公开的一种基于数据地址混合加密的存储器加密电路中,数据密钥生成模块生成各数据密钥的原理示意图;
[0045]
图4为本技术实施例公开的一种基于数据地址混合加密的存储器加密电路中,数据密钥生成模块执行行移位处理的原理示意图;
[0046]
图5为本技术实施例公开的一种基于数据地址混合加密的存储器加密电路中,第一地址轮函数加密单元及第二地址轮函数加密单元的结构示意图;
[0047]
图6为本技术实施例公开的一种基于数据地址混合加密的存储器加密电路中,基本轮函数加密单元的结构示意图;
[0048]
图7为本技术实施例公开的一种基于数据地址混合加密的存储器加密电路中,基本轮函数加密子单元的结构示意图;
[0049]
图8为本技术实施例公开的一种基于数据地址混合加密的存储器加密电路中,轮数可变轮函数加密单元的结构示意图;
[0050]
图9为本技术实施例公开的一种基于数据地址混合加密的存储器加密电路中,第一地址轮函数解密单元及第二地址轮函数解密单元的结构示意图;
[0051]
图10为本技术实施例公开的一种基于数据地址混合加密的存储器加密电路中,基本轮函数解密单元的结构示意图;
[0052]
图11为本技术实施例公开的一种基于数据地址混合加密的存储器加密电路中,基本轮函数解密子单元的结构示意图;
[0053]
图12为本技术实施例公开的又一种基于数据地址混合加密的存储器加密电路的结构示意图。
具体实施方式
[0054]
为了解决目前在对存储单元的地址及数据进行加密时,各自使用独立的地址加密电路和独立的数据加密电路完成,安全性能较低的技术问题,本技术通过以下实施例公开了一种基于数据地址混合加密的存储器加密电路。
[0055]
参见图1所示,本技术第一实施例公开了一种基于数据地址混合加密的存储器加密电路,包括:地址加密模块、数据加密模块、数据解密模块、地址密钥生成模块、数据密钥生成模块、第一地址宽度调整模块、第二地址宽度调整模块及轮函数使能控制器。
[0056]
对于本实施例公开的基于数据地址混合加密的存储器加密电路,主要分为地址部分及数据部分,数据部分又分为数据加密部分及数据解密部分,其中,地址部分对应地址密钥生成模块及地址加密模块,数据加密部分对应数据加密模块及数据密钥生成模块,数据解密部分对应数据解密模块及数据密钥生成模块。通过第一地址宽度调整模块、第二地址宽度调整模块及轮函数使能控制器将地址部分与数据部分进行结合,使地址信息参与到数据加密部分的控制,从而使本技术具有更好的实时性和安全性。
[0057]
以下分别针对地址部分、数据加密部分及数据解密部分对本方案进行介绍。
[0058]
一、地址部分(包括地址密钥生成模块及地址加密模块)
[0059]
所述地址加密模块用于接收所述地址密钥生成模块发送的地址密钥,并根据所述地址密钥对接收到的地址明文进行加密处理,然后输出地址密文至所述存储器,所述地址明文与所述地址密文的长度一致。
[0060]
参见图2,所述地址密钥生成模块用于生成第一地址密钥、第二地址密钥及第三地址密钥发送至地址加密模块。地址加密模块的输入为:地址明文、第一地址密钥、第二地址密钥及第三地址密钥,输出为:地址密文。所述地址加密模块包括第一加密单元、第二加密单元及第三加密单元,所述第一加密单元与所述第二加密单元均接入地址加密控制信号以及均包括多种加密模式,其中,不同的加密模式用于加密不同宽度的地址,所述地址加密控制信号根据所述地址明文的宽度预先设定。
[0061]
所述地址密钥生成模块还用于将所述第一地址密钥发送至所述第一加密单元,将所述第二地址密钥发送至所述第二加密单元及第三加密单元,将所述第三地址密钥发送至所述第三加密单元。
[0062]
所述第一加密单元包括行波进位加法器;所述第二加密单元包括置位网络;其中
置位网络(permutation based address encryption,即pae)为核心的地址加密组件。
[0063]
所述第一加密单元用于根据所述地址加密控制信号,切换当前的加密模式,并在完成切换的加密模式下,对所述地址明文以及所述第一地址密钥进行相加,获取第一加密地址,然后将所述第一加密地址发送至所述第二加密单元。
[0064]
所述第二加密单元用于根据所述地址加密控制信号,切换当前的加密模式,并在完成切换的加密模式下,根据所述第二地址密钥,对所述第一加密地址中的每一位进行非线性置换,获取第二加密地址,然后将所述第二加密地址发送至所述第三加密单元。
[0065]
所述第三加密单元用于先对第二地址密钥与第三地址密钥进行相加运算,得到第四地址密钥,然后对所述第二加密地址及所述第四地址密钥进行异或运算,获取最终加密地址。
[0066]
需要说明的是,有关地址加密模块及置位网络的内容为现有技术,具体请参见申请号为cn202010490284.2,名称为“地址加密电路、地址加密方法及置位网络”的发明专利申请,此处不再赘述。
[0067]
二、数据加密部分(包括数据加密模块及数据密钥生成模块,为了便于理解,将第一地址宽度调整模块、第二地址宽度调整模块及轮函数使能控制器共同放入该部分进行解释)
[0068]
所述数据密钥生成模块用于对输入的初始数据密钥进行高低位均分,得到所述第一数据密钥key0及所述第二数据密钥key1,然后针对所述第一数据密钥key0进行行移位处理得到所述第三数据密钥key0’,针对所述第二数据密钥key1与预设的第一常数进行异或处理得到所述第四数据密钥key1’。
[0069]
在一种实现方式中,参见图3,数据密钥生成模块的外部输入为128比特的初始数据密钥,外部输出分别为64比特的key0,key0’,key1,key1’。对于输入的128比特初始数据密钥,首先将其由高位至低位分为两部分64比特子密钥,分别作为key0和key1。
[0070]
然后,针对key1与第一常数α进行异或操作,生成key1’,即key1’=key1

α。所述第一常数α为由随机数生成器生成的64比特随机常数,α=0xdf875abff2a714e5。
[0071]
接着,对key0执行行移位操作得到置换后的key0’。由于key0和key0’都参与密钥白化阶段(即起始白化加密单元及结束白化加密单元)的异或运算,进行行移位操作的目的是抵御攻击者进行“去壳操作”,使攻击者即使根据key0或key0’的部分密钥位也难以推算出全部密钥。
[0072]
本实施例中,行移位操作的具体结构如图4所示。行移位操作包括两个阶段:第一阶段对64比特的key0执行逻辑右移3位操作(图4中的》》》3),目的是打乱4比特对齐。第二阶段将逻辑右移后的64比特输出,由高位至低位依次分为16个半字节,共16组,每组4比特,并执行比特置换。该比特置换方式亦应用于aes加密算法的行移位操作,具备很好的置换效果。对半字节进行置换后,将每组的输出拼接,得到64比特的key0’。
[0073]
数据密钥生成模块生成第一数据密钥key0、第二数据密钥key1、第三数据密钥key0’及第四数据密钥key1’之后,将这四个数据密钥发送至所述数据加密模块。
[0074]
所述数据加密模块用于接收所述数据密钥生成模块发送的数据密钥,并根据所述数据密钥对接收到的数据明文进行加密处理,然后输出数据密文至所述存储器,所述数据明文与所述数据密文的长度一致。
[0075]
所述数据加密模块包括依次连接的起始白化加密单元、第一地址轮函数加密单元、基本轮函数加密单元、轮数可变轮函数加密单元、第二地址轮函数加密单元及结束白化加密单元。
[0076]
具体的,数据密钥生成模块将所述第一数据密钥key0发送至所述结束白化加密单元,将所述第三数据密钥key0’发送至所述起始白化加密单元,将所述第二数据密钥key1分别发送至所述起始白化加密单元、所述基本轮函数加密单元、所述轮数可变轮函数加密单元及所述结束白化加密单元。
[0077]
本实施例中,数据加密模块主要分为四个阶段:密钥白化阶段(对应为起始白化加密单元及结束白化加密单元),地址轮函数加密阶段(对应为第一地址轮函数加密单元及第二地址轮函数加密单元),基本轮函数加密阶段(对应为基本轮函数加密单元)和轮数可变轮函数加密阶段(对应为轮数可变轮函数加密单元)。
[0078]
密钥白化阶段位于数据加密模块的起始和结束部分,分别为起始白化加密单元与结束白化加密单元,均用于对前一阶段的信号执行异或操作,目的是增加密钥位数,从而更好地抵御暴力破解攻击。在起始白化加密单元中,用于参与异或运算的信号为key1和key0’。在结束白化加密单元中,用于参与异或运算的信号为key1和key0。即:rplain输入=数据明文

key1

key0’,数据密文=rcipher输出

key1

key0。其中,rplain表示第一地址轮函数加密单元,rcipher表示第二地址轮函数加密单元。
[0079]
本实施例中,原始的地址明文和地址密文宽度为n比特,而轮函数的输入信号必须与分组加密宽度相匹配,即为64比特,因此采用第一地址宽度调整模块及第二地址宽度调整模块分别对原始地址明文和地址密文进行宽度调整,得到第一地址数组和第二地址数组。
[0080]
所述第一地址宽度调整模块用于将接收到的所述地址明文宽度调整预设宽度,即,将地址明文宽度调整为数据明文的宽度,获取第一地址数组,并将所述第一地址数组输出至所述第一地址轮函数加密单元。
[0081]
所述第二地址宽度调整模块的输入端接至所述地址加密模块的输出端,所述第二地址宽度调整模块用于将所述地址密文的宽度调整为所述预设宽度,即,将地址密文宽度调整为数据明文的宽度,获取第二地址数组,并将所述第二地址数组输出至所述第二地址轮函数加密单元。
[0082]
所述第一地址宽度调整模块在将接收到的所述地址明文宽度调整预设宽度,获取第一地址数组时,用于执行以下步骤:
[0083]
对所述地址明文进行重复组合,直至组合得到的地址明文数组宽度大于或等于所述预设宽度。若所述地址明文数组宽度等于所述预设宽度,则将所述地址明文数组设为所述第一地址数组。若所述地址明文数组宽度大于所述预设宽度,则将多余部分删除,将剩下的地址明文数组设为所述第一地址数组。
[0084]
所述第二地址宽度调整模块在将所述地址密文的宽度调整为所述预设宽度,获取第二地址数组时,用于执行以下步骤:
[0085]
对所述地址密文进行重复组合,直至组合得到的地址密文数组宽度大于或等于所述预设宽度。若所述地址密文数组宽度等于所述预设宽度,则将所述地址密文数组设为所述第二地址数组。若所述地址密文数组宽度大于所述预设宽度,则将多余部分删除,将剩下
的地址密文数组设为所述第二地址数组。
[0086]
在一种实现方式中,将原始地址明文或原地址密文信号进行重复组合,直至信号宽度大于或等于64比特,若大于64比特则溢出部分舍去,即可实现将地址明文或地址密文宽度调整为64比特的目的。
[0087]
所述第一地址宽度调整模块的输出端接至所述第一地址轮函数加密单元的输入端,所述第二地址宽度调整模块的输出端接至所述第二地址轮函数加密单元的输入端。
[0088]
地址轮函数加密阶段中,第一地址轮函数加密单元采用经过宽度调整的地址明文(即第一地址数组)作为输入,第二地址轮函数加密单元采用经过宽度调整的地址密文(即第二地址数组)作为输入,使地址信息参与到轮函数的加密过程,因此即使数据明文相同,存储在不同存储器地址空间的数据得到的加密结果仍然不同,大大提高了数据密文的破解难度。
[0089]
本实施例中,将第一地址数组参与的第一地址轮函数加密单元定义为rplain,将第二地址数组参与的第一地址轮函数加密单元定义为rcipher。
[0090]
第一地址轮函数加密单元rplain主要执行运算包括s盒混淆、m层矩阵线性变换、与第二常数rcplain的异或运算以及与第一地址数组的异或运算。第一地址轮函数加密单元包括依次相接的第一s盒混淆子单元、第一m层矩阵线性变换子单元以及第一异或子单元。其中所述第一异或子单元用于对所述第一m层矩阵线性变换子单元的输出结果与预设的第二常数执行异或运算,然后将异或运算得到的结果与所述第一地址数组再次执行异或运算。
[0091]
第二地址轮函数加密单元rcipher主要执行运算包括s盒混淆、m层矩阵线性变换、与第三常数rccipher的异或运算以及与第二地址数组的异或运算。第二地址轮函数加密单元包括依次相接的第二s盒混淆子单元、第二m层矩阵线性变换子单元以及第二异或子单元。其中所述第二异或子单元用于对所述第二m层矩阵线性变换子单元的输出结果与预设的第三常数执行异或运算,然后将异或运算得到的结果与所述第二地址数组再次执行异或运算。
[0092]
第一地址轮函数加密单元rplain/第二地址轮函数加密单元rcipher的结构如图5所示,其中s盒表示第一s盒混淆子单元/第二s盒混淆子单元,m层表示第一m层矩阵线性变换子单元/第二m层矩阵线性变换子单元,s盒与m层结构与现有prince算法中采用的设计方法相同,故不再赘述。第二常数rcplain、第三常数rccipher为固定的64比特随机数,由芯片内置的真随机数生成器(true random number generator,即trng)导出,根据硬件电路所处的物理环境而随机决定。
[0093]
基本轮函数加密阶段中,所述基本轮函数加密单元包括多个基本轮函数加密子单元。本实施例中,所述基本轮函数加密单元包括五个基本轮函数加密子单元,参见图6,五个基本轮函数加密子单元分别为r0、r1、r2、r3、r4。每个基本轮函数加密子单元ri的具体结构如图7所示,每个基本轮函数加密子单元主要执行的运算包括s盒混淆、m层矩阵线性变换、与第四常数rci(参见图6中的rc0、rc1、rc2、rc3及rc4)的异或运算以及与第二数据密钥key1的异或运算。其中第四常数rci为固定的64比特随机数,同样由trng生成。
[0094]
轮数可变轮函数加密阶段中,所述轮数可变轮函数加密单元包括多个依次相接的轮函数加密子单元。所述轮函数使能控制器的输入端接至所述地址加密模块的输出端,所
述轮函数使能控制器的输出端分别接至每个所述轮函数加密子单元,所述轮函数使能控制器用于根据所述地址密文生成控制信号,以控制每个所述轮函数加密子单元的输出。
[0095]
每个所述轮函数加密子单元包括一个轮函数计算子单元和一个二路选择器,二路选择器包括两个输入端与一个输出端,其中一个输入端接至所述轮函数计算子单元的输出端,另一个输入端与所述轮函数计算子单元的输入端共同作为所述轮函数加密子单元的输入端,输出端作为所述轮函数加密子单元的输出端。
[0096]
所述轮函数使能控制器的输出端接至每个所述轮函数加密子单元中的二路选择器,所述轮函数使能控制器所生成的控制信号用于控制所述轮函数加密子单元中的二路选择器输出所述轮函数计算子单元的输出数据,或者,直接输出所述轮函数加密子单元的输入数据。
[0097]
每个轮函数加密子单元的输出由二路选择器(二选一多路选择器)进行使能控制。二路选择器能够选择加密时,是经过或者绕过轮函数计算子单元的加密,决定了参与加密的轮函数计算子单元的个数。二路选择器的控制信号是基于地址密文所生成的,即使在数据明文相同的条件下,不同的存储单元地址能够生成不同控制信号,这会使得参与加密的轮函数计算子单元的个数不同,因此不同存储单元地址空间得到的数据加密结果也会不同,相比于原始的prince算法中轮数固定的结构,本方案既提高了安全性能,而且避免了所有轮函数均参与加密所造成的高延时和高硬件开销问题。
[0098]
本实施例中,轮数可变轮函数加密单元总共由四轮可控制使能的轮函数加密子单元组成,即包括四个依次相接的轮函数加密子单元。参见图8所示,其中mux表示二路选择器。每个轮函数计算子单元的结构与基本轮函数加密子单元相同,结构参见图7所示,四个轮函数计算子单元同样可用ri表示,依次为r5、r6、r7、r8。
[0099]
进一步的,所述轮函数使能控制器在根据所述地址密文生成控制信号时,用于执行以下步骤:
[0100]
判断所述地址密文的长度是否为最大轮数的整数倍,所述最大轮数为所述轮数可变轮函数加密子单元的总个数。
[0101]
若判断结果为否,则对所述地址密文进行高位补零,直至所述地址密文的长度为所述最大轮数的整数倍。
[0102]
若判断结果为是,则根据所述最大轮数及所述地址密文,获取所述控制信号,所述控制信号包括多个选择信号,所述多个选择信号分别与多个所述轮函数加密子单元正向一一对应。
[0103]
进一步的,所述根据所述最大轮数及所述地址密文,获取所述控制信号,包括:
[0104]
通过以下公式进行矩阵计算,获取所述控制信号:
[0105][0106]
其中,round_en[0]、round_en[1]、

、round_en[x-1]表示所述控制信号,x表示所述最大轮数,m表示所述地址密文的长度,cipher_addr'[]表示所述地址密文的信号。
[0107]
本技术实施例中,轮数可变轮函数加密单元由四轮可控制使能的轮函数加密子单元组成,则轮函数使能控制器生成的控制信号为四比特信号,对应四个一比特的选择信号:
round_en[0]、round_en[1]、round_en[2]及round_en[3],控制信号由地址密文经过轮函数使能控制器按如下操作产生:
[0108]
1)对n比特的地址密文进行四位对齐,对齐之后得到m比特的密文地址(若n已为4的倍数则跳过此步)。定义地址密文信号为cipher_addr[n:0],对齐后的地址密文信号为cipher_addr’[m:0](m为4的倍数且n≤m<n 4),对齐方法为cipher_addr’[m:0]={(m-n){1’b0},cipher_addr[n:0]},即对地址密文信号的高位补零,直至总位数是4的倍数。
[0109]
2)执行如下矩阵运算得到控制信号,其中,x取值为4,即有四个轮函数加密子单元,m表示所述地址密文的长度,cipher_addr'[]表示所述地址密文的信号。
[0110][0111]
上述生成的控制信号,使地址信息参与数据加密的过程,增加破解难度;另一方面允许部分地址空间使用较少的轮函数加密,从而在保证安全性的同时降低电路的延时,增强电路的实时性。
[0112]
三、数据解密部分(包括数据解密模块及数据密钥生成模块)
[0113]
所述数据解密模块的运算过程与所述数据加密模块的运算过程相逆,所述数据解密模块用于接收所述数据密文,然后对所述数据密文进行解密处理,得到数据明文。
[0114]
所述数据解密模块包括依次相接的起始白化解密单元、第二地址轮函数解密单元、轮数可变轮函数解密单元、基本轮函数解密单元、第一地址轮函数解密单元及结束白化解密单元。
[0115]
所述数据密钥生成模块还用于将所述第一数据密钥key0发送至所述起始白化解密单元,以及将所述第三数据密钥key0’发送至所述结束白化解密单元,以及将所述第四数据密钥key1’分别发送至所述起始白化解密单元、所述轮数可变轮函数解密单元、所述基本轮函数解密单元及所述结束白化解密单元。
[0116]
同样的,数据解密模块也分为四个阶段:密钥白化阶段(对应为起始白化解密单元及结束白化解密单元),地址轮函数解密阶段(对应为第一地址轮函数解密单元及第二地址轮函数解密单元),基本轮函数解密阶段(对应为基本轮函数解密单元)和轮数可变轮函数解密阶段(对应为轮数可变轮函数解密单元)。
[0117]
数据解密的密钥白化和数据加密部分相似,区别在于参与异或运算的key1调整为key1’,其中key1’=key1

α。
[0118]
地址轮函数解密阶段是地址轮函数加密阶段的逆运算。所述第一地址宽度调整模块的输出端还接至所述第一地址轮函数解密单元的输入端,所述第一地址宽度调整模块还用于将所述第一地址数组输出至所述第一地址轮函数解密单元。
[0119]
第二地址宽度调整模块的输出端还接至所述第二地址轮函数解密单元的输入端。所述第二地址宽度调整模块还用于将所述第二地址数组输出至所述第二地址轮函数解密单元。
[0120]
本实施例中,将第一地址数组参与的第一地址轮函数解密单元定义为rplain-1
,将第二地址数组参与的第一地址轮函数解密单元定义为rcipher-1
,具体结构如图9所示。其中逆s盒为s盒的逆变换,逆m层采用m层变换矩阵的逆矩阵,rcplain’=rcplain

α,
rccipher’=rccipher

α。
[0121]
基本轮函数解密阶段中,所述基本轮函数解密单元包括多个基本解密子单元。本实施例中,所述基本轮函数加密单元包括五个基本轮函数加密子单元,对应的,所述基本轮函数解密单元包括五个基本轮函数解密子单元。参见图10,五个基本轮函数解密子单元分别为r0-1
、r1-1
、r2-1
、r3-1
、r4-1

[0122]
每个基本轮函数解密单元的结构如图11所示,其中rci’=rci

α,key1’=key1

α。不同基本轮函数解密单元对应的第四常数rci’分别为rc0’、rc1’、rc2’、rc3’、rc4’。利用信号在64比特二元域中的加法特性,能够使解密过程中所有的第一常数α被抵消,从而完成解密操作。而通过将第四常数rc和密钥key1与常数α进行异或,使得加密和解密的输入信号互不相同,有效增加了破解难度。
[0123]
轮数可变轮函数解密阶段中,所述轮数可变轮函数解密单元包括多个依次相接的轮函数解密子单元,所述轮函数加密子单元的总个数与所述轮函数解密子单元的总个数相同。所述轮函数使能控制器的输出端分别接至每个所述轮函数解密子单元。每个轮函数逆计算子单元的结构与基本轮函数解密子单元的相同,即图11所示。
[0124]
每个所述轮函数解密子单元包括一个轮函数逆计算子单元和一个二路选择器,二路选择器包括两个输入端与一个输出端,其中一个输入端接至所述轮函数逆计算子单元的输出端,另一个输入端与所述轮函数逆计算子单元的输入端共同作为所述轮函数解密子单元的输入端,输出端作为所述轮函数解密子单元的输出端。轮函数逆计算子单元的计算过程与轮函数计算子单元的计算过程相逆。
[0125]
所述轮函数使能控制器的输出端接至每个所述轮函数解密子单元中的二路选择器,所述轮函数使能控制器所生成的控制信号还用于控制所述轮函数解密子单元中的二路选择器输出所述轮函数逆计算子单元的输出数据,或者,直接输出所述轮函数解密子单元的输入数据。
[0126]
本技术实施例中,轮数可变轮函数加密单元由四轮可控制使能的轮函数加密子单元组成,则轮数可变轮函数解密单元也包括四个依次相接的轮函数解密子单元。
[0127]
图12为本实施例提供的基于数据地址混合加密的存储器加密电路具体的结构图。从图中可以看出,轮函数使能控制器所生成的控制信号round_en[0]、round_en[1]、round_en[2]及round_en[3]分别正向接至四个轮函数加密子单元中的二路选择器,同时又分别反向接至四个轮函数解密子单元中的二路选择器,即第一个选择信号接至轮数可变轮函数加密单元中的第一个轮函数加密子单元,同时接至轮数可变轮函数解密单元中的第四个轮函数解密子单元。
[0128]
上述实施例中,各预设常数的取值参见下表所示:
[0129]
[0130][0131]
本技术针对存储器的实时加密应用场景,提出了一种数据地址混合加密的加密电路,采用了纯组合逻辑的数据地址混合加密的存储器实时加密解决方案,提出了轮数可变的轮函数加密结构,提出了地址控制的轮函数部件,使地址信息与数据加密有机融合,在低延时的条件下提供了高安全性的存储器保护措施。
[0132]
本发明提供了数据地址混合的加密方案,而非单一的数据加密或地址加密,保持了方案的实时性,增强了加密方案的安全性能。与prince数据加密算法相比,本算法提出的轮数可变轮函数加密方法和地址轮函数加密组件能够使地址信息参与到数据加密部分的控制,并允许部分地址空间使用较少的轮函数个数,从而使本发明具有更好的实时性和安全性。
[0133]
以上结合具体实施方式和范例性实例对本技术进行了详细说明,不过这些说明并不能理解为对本技术的限制。本领域技术人员理解,在不偏离本技术精神和范围的情况下,可以对本技术技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本技术的范围内。本技术的保护范围以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献