技术领域
[0001] 本发明涉及数据加密技术领域,尤其涉及一种数据加密方法及数据加密设备。
相关背景技术
[0002] 为了抵御侧信道攻击(Side ChannelAttack,SCA),掩码技术,例如一阶和高阶掩码是一种通用并有效的方法,然而现有的抵御SCA的方案都是以牺牲芯片的性能或者面积为代价,在基于查找表的掩码方案中,循环移位S盒掩码方案(Rotating S-Box Masking,RSM)方案相比于其他方案具有较好的安全性和性能,是一个安全性和性能的折中方案,但对于一些对安全性有较高要求的或者面积受限的设备,RSM方案就很难应用。而基于S盒共用的掩码方案中,通过降低掩码S盒的数目,能够有效的降低占用的面积,但加密速度有所降低。
[0003] 公开号为CN106506142A的中国发明专利申请公开了一种能降低复杂度的AES一体化加解密器实现方法,该发明提供的加解密器中的数字单元使用双口RAM实现,其一个口用于接收行变换模块的输出,另一个口用于将数据输出到数据选择器,数据缓存单元的大小为32个字节,分成两个区域A和B,每个区域为16字节,在进行加解密操作时,数据缓存单元的两个区域采用乒乓球操作方式,从而避免前后两轮加密或者解密操作的数据冲突,进而提高对数据进行加密或者解密的速度,但可以看出,单向的加密过程速度并未得到显著的提高,其加密速度偏低。
[0004] 因此有必要提出一种提高加密速度的方法以解决现有技术中存在的上述问题。
具体实施方式
[0036] 为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。除非另外定义,此处使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本文中使用的“包括”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
[0037] 针对现有技术存在的问题,本发明的实施例提供了一种数据加密方法,参照图1,所述数据加密方法具有以下步骤:
[0038] S1:接收待加密数据、初始密钥值和掩码值,所述待加密数据异或所述掩码值后,再异或所述所述初始密钥值,生成异或掩码数据,此过程耗时为t;
[0039] S2:对所述异或掩码数据进行行变换处理,生成行变换数据,对所述第二变换数据进行拆分处理,生成第一拆分数据、第二拆分数据、第三拆分数据和第四拆分数据,此过程耗时为t;
[0040] S3:选择所述第一拆分数据进行再拆分处理,生成四组第一再拆分数据,随机对四组所述第一再拆分数据同时进行字节替换代处理,生成四组字节替代数据,对四组所述字节替代数据进行重组处理,生成重组数据,此过程耗时为t;
[0041] S4:对所述重组数据进行列混合处理,生成列混合数据,此过程耗时为t;
[0042] S5:接收所述列混合数据和密钥值,所述列混合数据异或所述密钥值,生成密钥加数据,此过程耗时为t;
[0043] S6:对所述密钥加数据进行掩码补偿处理,生成掩码补偿数据,此过程耗时为t;
[0044] S7:依次接收所述掩码补偿数据,对所述掩码补偿数据进行重排列处理,生成第一加密数据,以完成第1轮加密。
[0045] 本发明实施例中,所述待加密数据为m组,且在第一组所述待加密数据完成所述步骤S1并输出所述异或掩码数据后,接收并处理下一组所述待加密数据;
[0046] 当T时刻,接收所述第一拆分数据并开始执行所述步骤S3;
[0047] 当T+1t时刻,接收所述第二拆分数据并开始执行所述步骤S3;
[0048] 当T+2t时刻,接收所述第三拆分数据并开始执行所述步骤S3;
[0049] 当T+3t时刻,接收所述第四拆分数据并开始执行所述步骤S3。
[0050] 本发明一些实施例中,所述数据加密方法加密n轮完成加密,重复所述步骤S2-S7完成数据第2到n-1轮的加密过程。
[0051] 本发明的一些实施例中,所述第2到n-1轮的加密过程中,所述步骤S7的输出数据为所述步骤S2的输入数据。
[0052] 本发明的一些实施例中,所述第n轮数据加密过程依次完成所述步骤S2、所述步骤S3、所述步骤S5、所述步骤S6和所述步骤S7,输出密文。
[0053] 本发明的一些实施例中,所述第n轮数据加密过程中,所述密钥加数据先进行数据选择处理,再进行所述掩码补偿处理。
[0054] 本发明的一些实施例中,所述数据加密方法基于S盒共用的AES掩码算法。
[0055] 本发明的一些实施例中,所述AES掩码算法在所述密钥值长度为128位时,所述n=10,所述AES掩码算法在所述密钥值长度为192位时,所述n=12,所述AES掩码算法在所述密钥值长度为256位时,所述n=14。
[0056] 本发明的一些实施例中,所述t为一个时钟周期。
[0057] 本发明的一些实施例中,所述步骤S7中,同时对四组所述掩码补偿数据进行所述重排列处理。
[0058] 本发明的一些实施例中,所述掩码补偿处理对所述密钥加数据先添加新的掩码值,再去掉所述密钥加数据进行所述掩码补偿处理前携带的掩码值。
[0059] 本发明的一些实施例中,所述步骤S1和所述步骤S2之间、所述步骤S2和所述步骤S3之间、所述步骤S3和所述步骤S4之间、所述步骤S4和所述步骤S5之间、所述步骤S5和所述步骤S6之间以及所述步骤S6和所述步骤S7之间都会进行缓冲寄存处理。
[0060] 本发明实施例还提供了用于实现所述数据加密方法的数据加密装置,所述数据加密装置包括异或模块、行移位模块、拆分模块、选择模块、字节替代模块、列混合模块、密钥加模块、掩码补偿模块、重排列模块、密钥扩展模块、存储模块、重组模块和缓冲寄存器。
[0061] 本发明的一些实施例中,所述字节替代模块包括S盒,所述S盒的数量为四个。
[0062] 本发明的一些实施例中,所述缓冲寄存器包括第一缓冲寄存器、第二缓冲寄存器、第三缓冲寄存器、第四缓冲寄存器、第五缓冲寄存器和第六缓冲寄存器。
[0063] 图2为本发明一些实施例的数据加密装置的结构框图。参考图2,所述数据加密装置具有异或模块201、行移位模块203、拆分模块204、选择模块205、字节替代模块206、列混合模块208、密钥加模块209、掩码补偿模块210、重排列模块211、密钥扩展模块212、存储模块213、重组模块207、第一缓冲寄存器2021、第二缓冲寄存器2022、第三缓冲寄存器2023、第四缓冲寄存器2024、第五缓冲寄存器2025和第六缓冲寄存器2026,所述异或模块201用于对数据进行异或处理;所述行移位模块203用于对数据进行行变换处理;所述拆分模块204用于对数据进行拆分处理;所述选择模块205用于对多组数据进行选择,并进行再拆分处理;所述字节替代模块206用于对数据进行字节替代处理;所述列混合模块208用于对数据进行列混合处理;所述密钥加模块209用于对数据进行密钥加处理;所述掩码补偿模块210用于对数据进行掩码补偿处理;所述重排列模块211用于对数据进行重排列处理;所述密钥扩展模块212用于储存和传递初始密钥值和密钥值;所述存储模块213用于存储和传递掩码值;
所述重组模块207用于将数据进行重组处理;所述缓冲寄存器用于对数据的传输缓冲和寄存。
[0064] 参考图2,所述第一缓冲寄存器2021设置于所述异或模块201和行移位模块203之间,所述第二缓冲寄存器2022设置于所述行拆分模块204和所述选择模块205之间,所述第三缓冲寄存器2023设置于所述字节替代模块206和所述重组模块207之间,所述第四缓冲寄存器2024设置于所述列混合模块208和所述密钥加模块209之间,所述第五缓冲寄存器2025设置于所述密钥加模块209和所述掩码补偿模块210之间,所述第六缓冲寄存器2026设置于所述掩码补偿模块210和所述重排列模块211之间。
[0065] 本发明一些具体的实施例中,所述数据加密方法对10个128位待加密数据加密10轮。
[0066] 具体的,第1轮加密过程为:
[0067] S1a:第1个时钟周期所述异或模块接收第1个128位待加密数据、所述密钥扩展模块传递的初始密钥值和所述存储模块传递的掩码值,所述128位待加密数据先异或掩码值,再异或所述初始密钥值,生成128位异或掩码数据,并将所述128位异或掩码数据传递给所述第一缓冲寄存器内储存,第2个时钟周期所述异或模块接收并处理第2个128位待加密数据,第3个时钟周期所述异或模块接收并处理第3个128位待加密数据,以此类推,第10个时钟周期所述异或模块接收并处理第10个128待加密数据,其中,第2-10个时钟周期接收到的第9个128位待加密数据与第一个128位数据的后续处理过程相同,处理时间依次间隔3个时钟周期;
[0068] S2a:第2个时钟周期所述第一缓冲寄存器将所述128位异或掩码数据传递给所述行移位模块,所述行移位模块对所述128异或掩码数据进行行变换处理,生成128位行变换数据,所述拆分模块对所述128位行变换数据进行拆分处理,生成32位第一拆分数据、32位第二拆分数据,32位第三拆分数据,32位第四拆分数据,并传递到所述第二缓冲寄存器内储存;
[0069] S3a:第3个时钟周期所述选择模块从所述第二缓冲寄存器内随机选择32位第一拆分数据进行再拆分处理,生成四组8位第一再拆分数据,所述四组S盒随机对四组8位第一再拆分数据同时进行字节替代处理,生成四组8位字节替代数据,所述重组模块对四组8位字节替代数据进行所述重组处理,生成32位重组数据,并传递到所述第三缓冲寄存器内储存;
[0070] S4a:第4个时钟周期所述列混合模块接收32位重组数据进行所述列混合处理,生成32位列混合数据,并传递到所述第四缓冲寄存器内储存;
[0071] S5a:第5个时钟周期所述密钥加模块接收32位列混合数据和所述密钥扩展模块传递的密钥值,32列混合数据异或密钥值,生成32位密钥加数据,并传递到所述第五缓冲数据内储存;
[0072] S6a:第6个时钟周期所述掩码补偿模块接收32位密钥加数据和储存模块传递的掩码值,并进行掩码补偿处理,对32位密钥加数据添加存储模块传递的掩码值,再去掉32位密钥加数据在进行所述掩码补偿处理携带的掩码值,生成掩码补偿数据,并传递到所述第六缓冲数据内储存;
[0073] 其中,第4个时钟周期,对32位第二拆分数据进行所述步骤S3a;
[0074] 第5个时钟周期,对32位第二拆分数据进行所述步骤S4a,32位第三拆分数据进行所述步骤S3a;
[0075] 第6个时钟周期,对32位第二拆分数据进行所述步骤S5a,对32位第三拆分数据进行所述步骤S4a,对32位第四拆分数据进行所述步骤S3a;
[0076] 第7个时钟周期,对32位第二拆分数据进行所述步骤S6a,对32位第三拆分数据进行所述步骤S5a,对32位第四拆分数据进行所述步骤S4a;
[0077] 第8个时钟周期,对32位第三拆分数据进行所述步骤S6a,对32位第四拆分数据进行所述步骤S5a;
[0078] 第9个时钟周期,对32位第四拆分数据进行所述步骤S6a;
[0079] S7a:所述重排列模块依次接收四组掩码补偿模块,对四组掩码补偿数据进行重排列处理,生成128位第一加密数据,此过程不耗时钟周期,至此第9个时钟周期,第1个128位待加密数据完成第1轮加密。
[0080] 第13个时钟周期,第2个128位待加密数据完成第1轮加密;第17个时钟周期,第3个128位待加密数据完成第1轮加密;以此类推,第41个时钟周期,第9个128位待加密数据完成第1轮加密;第45个时钟周期,第10个128位待加密数据完成第1轮加密。
[0081] 第2轮加密过程为:
[0082] 第10个时钟周期,所述行移位模块接收第1个128位待加密数据第1轮加密生成的128位第一加密数据,开始第1个128位待加密数据的第2轮加密,第2轮加密共耗时8个时钟周期,第17个时钟周期完成第1个128位待加密数据的第2轮加密;以此类推,第46个时钟周期,所述行移位模块接收第10个128位待加密数据第1轮加密生成的128位第一加密数据,开始第10个128位待加密数据的第2轮加密,第2轮加密共耗时8个时钟周期,第53个时钟周期完成第10个128位待加密数据的第2轮加密;
[0083] 第3轮至第8轮的加密过程均匀第2轮加密过程相同;
[0084] 第9轮加密过程为:
[0085] 第66个时钟周期,所述行移位模块接收第1个128位待加密数据第8轮加密生成的128位第八加密数据,开始第1个128位待加密数据的第9轮加密,第9轮加密共耗时8个时钟周期,第73个时钟周期完成第1个128位待加密数据的第9轮加密;以此类推,第102个时钟周期,所述行移位模块接收第10个128位待加密数据第8轮加密生成的128位第八加密数据,开始第10个128位待加密数据的第9轮加密,第9轮加密共耗时8个时钟周期,第109个时钟周期完成第10个128位待加密数据的第9轮加密。
[0086] 第10轮加密过程为:
[0087] 第74个时钟周期所述行移位模块接收第1个128位待加密数据第9轮加密生成的128位第九加密数据,开始第1个128位待加密数据的第10轮加密,第10轮数据不经过列混合处理,第10轮加密共耗时7个时钟周期,第80个时钟周期完成第1个128位待加密数据的第10轮加密,输出密文。以此类推,第110个时钟周期,所述行移位模块接收第10个128位待加密数据第9轮加密生成的128位第九加密数据,开始第10个128位待加密数据的第10轮加密,第
10轮数据不经过列混合处理,第10轮加密共耗时7个时钟周期,第116个时钟周期完成第10个128位待加密数据的第10轮加密,输出密文。至此完成10个128位数据加密10轮共耗116个时钟周期。
[0088] 本发明实施例的所述数据加密方法对x个128位数据加密10轮的时钟周期为80+4*(x-1),现有技术中,x个128位数据加密10轮的时钟周期为80x。当x>1时,加速比,即(80*x)/(80+4*(x-1))大于1。可见,本发明实施例的所述数据加密方法能够提高加密速度。
[0089] 虽然在上文中详细说明了本发明的实施方式,但是对于本领域的技术人员来说显而易见的是,能够对这些实施方式进行各种修改和变化。但是,应理解,这种修改和变化都属于权利要求书中所述的本发明的范围和精神之内。而且,在此说明的本发明可有其它的实施方式,并且可通过多种方式实施或实现。