CN114048472B - 基于线性码掩码和位切片技术的抗旁路攻击的防御方法 - Google Patents

基于线性码掩码和位切片技术的抗旁路攻击的防御方法 Download PDF

Info

Publication number
CN114048472B
CN114048472B CN202210047078.3A CN202210047078A CN114048472B CN 114048472 B CN114048472 B CN 114048472B CN 202210047078 A CN202210047078 A CN 202210047078A CN 114048472 B CN114048472 B CN 114048472B
Authority
CN
China
Prior art keywords
bit
vector
matrix
domain
dimensional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN202210047078.3A
Other languages
English (en)
Other versions
CN114048472A (zh
Inventor
张帆
吴茜眉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN202210047078.3A priority Critical patent/CN114048472B/zh
Publication of CN114048472A publication Critical patent/CN114048472A/zh
Application granted granted Critical
Publication of CN114048472B publication Critical patent/CN114048472B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种基于线性码掩码和位切片技术的抗旁路攻击的防御方法。线性码掩码是一类具有复杂代数计算的掩码。相对于布尔掩码,线性码掩码具有更高的安全性,可以更加有效地抵御旁路攻击,但是其实现起来更复杂,需要的开销和计算成本也更高,因此不利于应用到各类小型嵌入式设备。基于此,本发明将线性码掩码和位切片技术相结合,提出了一种可以灵活适配于各类嵌入式设备,通用的基于线性码掩码的抗旁路攻击的防御方法。该方法可以灵活地与各类分组密码相结合,且开销较低,实现简便,可以有效满足加密电子设备的抗旁路攻击的安全需要。

Description

基于线性码掩码和位切片技术的抗旁路攻击的防御方法
技术领域
本发明属于旁路安全领域,尤其涉及一种基于线性码掩码和位切片技术的抗旁路攻击的防御方法。
背景技术
传统旁路攻击对现有的加密设备来说是一个潜在的重大威胁,尤其是对于那些基本没有保护措施的小型嵌入式设备。电子设备在运行过程中的各种被动泄露都会让具有旁路攻击技术的攻击者有机可乘,这些泄露包括时间、功耗、电磁辐射和温度等。为了抵御此类威胁,各类保护策略在过去十几年间被相继提出,其中影响力比较大且被认为比较有效的一类策略被称作“掩码”。“掩码”是指将算法运行过程中的敏感变量x拆分为n个“分摊”变量,使得通过任意其中d(d<n)个“分摊”变量无法得知敏感变量x的信息。我们将敏感变量x到n个分摊变量的映射称为编码函数。此外,掩码方案还需给出分摊变量在掩码域内的计算,保证最终得到的结果是正确的,分摊变量在掩码域内的计算称为私有计算。应该说,一个完整的掩码方案由一个安全的编码函数和一个执行私有计算的策略组成。
布尔掩码是最简单也最易实现的掩码方案,因为它的编码函数仅由异或运算组成。除了异或运算,编码函数还可由更复杂的代数运算组成,比如乘法掩码、仿射掩码和多项式掩码。更复杂的代数运算意味着相较于布尔掩码更小的泄露,因此也更加安全。近年来,线性代码也被引入掩码领域。由此,直接求和掩码方案将编码函数的形式一般化为z=xG+yH,其中zxy分别表示掩码变量、敏感变量和掩码,G和H分别为线性码的生成矩阵。直接求和掩码方案已被证明是布尔掩码和内积掩码的泛化形式。比直接求和掩码更加泛化的形式是基于线性码的掩码方案,该掩码方案可以转化为特定的主流掩码方案,比如布尔掩码、内积掩码等,且具有一个有效的计算框架对掩码域内的分摊变量进行私有计算。基于线性码的掩码方案不仅具有更强的抗旁路攻击的防御能力,由于其线性码特性还具有抗故障注入攻击的潜力,因此具有无限潜力。但是,基于线性码的掩码方案成本开销过大,需要较高的计算资源,对小型嵌入式设备并不适用;另一方面,目前基于线性码的掩码方案仅基于理论推导,缺少具体的实现方法,离实践和工程应用还有一定的距离。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于线性码掩码和位切片技术的抗旁路攻击的防御方法。
本发明的目的是通过以下技术方案来实现的:一种基于线性码掩码和位切片技术的抗旁路攻击的防御方法,包括以下步骤:
步骤一:输入长度为l的待加密的明文信息;将明文信息分组,得到l/k个长度为k的明文向量x i ,输入编码函数f Enc,得到掩码向量群
Figure DEST_PATH_IMAGE001
;1≤il/k;
步骤二:将步骤一得到的掩码向量群
Figure 258896DEST_PATH_IMAGE001
,转换为域内位切片形式的掩码向量群
Figure 278805DEST_PATH_IMAGE002
步骤三:将步骤二得到的位切片形式的掩码向量群
Figure 812554DEST_PATH_IMAGE002
,作为掩码域内的分组加密算法的输入,得到掩码域内的加密结果
Figure DEST_PATH_IMAGE003
;掩码域内的分组加密算法由三个模块按一定规则组成,分别为:位切片形式的掩码域内哈达玛乘法模块、位切片形式的掩码域内等量线性转换模块、位切片形式的掩码域内非等量线性转换模块;位切片形式的掩码域内乘法模块用于实现分组加密算法中两个域内向量的哈达玛乘法;位切片形式的掩码域内等量线性转换模块用于实现分组加密算法域内向量满足映射f BSL:Fk→Fk的线性转换;位切片形式的掩码域内非等量线性转换模块用于实现分组加密算法中域内向量满足映射
Figure 883409DEST_PATH_IMAGE004
的线性转换;F表示伽罗华域,Fk
Figure DEST_PATH_IMAGE005
Figure 990469DEST_PATH_IMAGE006
表示元素数为k、kl 1、kl 2的域内向量;
步骤四:将步骤三得到的加密结果
Figure 763253DEST_PATH_IMAGE003
,分别输入译码函数f Dec,最终输出明文信息对应的密文。
进一步地,编码函数f Enc输出的掩码向量
Figure 835114DEST_PATH_IMAGE001
Figure 478585DEST_PATH_IMAGE008
其中,r i 为随机生成的m维域内向量;A为n×n的生成矩阵,n=k+m为目标电子加密设备的寄存器位数;生成矩阵A=[G1,G2;H1,H2];G1为k×k的单位矩阵,G2为k×m的零矩阵;H1为m×k的自定义矩阵;H2为m×m的单位矩阵。
进一步地,域内向量q转换为域内位切片形式向量q p ,具体为:n维向量q包括n个元素,每个元素包括8个位值,将所有位值存入8个寄存器,得到向量q p ;其中,8个寄存器对应存储8个位值,每个寄存器存储特定位的值;n位寄存器的最高位至最低位依次对应存储向量q中排序1~n的元素的位值。
进一步地,位切片形式的掩码域内哈达玛乘法模块,包括以下子步骤:
(1.1)构造位切片形式的
Figure DEST_PATH_IMAGE009
矩阵群、第一随机矩阵
Figure 423539DEST_PATH_IMAGE010
和第二随机矩阵
Figure DEST_PATH_IMAGE011
;1≤i m≤n;
(1.2)输入为位切片形式的n维掩码域内向量
Figure 496668DEST_PATH_IMAGE012
Figure DEST_PATH_IMAGE013
,满足
Figure 637800DEST_PATH_IMAGE014
Figure DEST_PATH_IMAGE015
,设定循环计数iBSMuL=1;
(1.3)计算向量
Figure 948826DEST_PATH_IMAGE012
中第iBSMuL个元素,与向量
Figure 782790DEST_PATH_IMAGE013
中每个元素的乘积,得到一个位切片形式的n维域内向量
Figure 277969DEST_PATH_IMAGE016
;具体地,取出存储
Figure 426054DEST_PATH_IMAGE012
的8个寄存器的第iBSMuL位,并将其复制到对应寄存器的每一位得到
Figure DEST_PATH_IMAGE017
,将
Figure 840854DEST_PATH_IMAGE017
Figure 596452DEST_PATH_IMAGE013
作为位切片形式的哈达玛乘法的输入,得到向量
Figure 565545DEST_PATH_IMAGE016
(1.4)将
Figure 517320DEST_PATH_IMAGE010
矩阵的第iBSMuL行向量与
Figure 6202DEST_PATH_IMAGE016
异或,得到位切片形式的n维向量
Figure 650810DEST_PATH_IMAGE018
(1.5)计算
Figure 638357DEST_PATH_IMAGE018
与位切片形式的n×k矩阵
Figure DEST_PATH_IMAGE019
的乘积,得到位切片形式的n维向量
Figure 206873DEST_PATH_IMAGE020
Figure 609648DEST_PATH_IMAGE018
Figure 159578DEST_PATH_IMAGE019
每一列的乘积涉及位切片形式的哈达玛乘法以及对应的累加操作;具体地,
Figure 103263DEST_PATH_IMAGE018
Figure 396841DEST_PATH_IMAGE019
每一列的位切片形式的哈达玛乘法的结果,存储在8个n位寄存器里,将8个寄存器分别向左移n/2位并与其左移前的值异或,再向左移n/4位后与这次左移前的值异或,以此类推,直至向左移1位后与最后一次左移前的值异或;此时得到的左移异或结果的每个位值位于对应8个寄存器的最高位;
Figure 860315DEST_PATH_IMAGE020
对应的寄存器的第1高位至第k高位,依次存储
Figure 846725DEST_PATH_IMAGE019
中第1~k列对应的左移异或结果;
(1.6)将
Figure 74444DEST_PATH_IMAGE011
矩阵的第iBSMuL行向量与
Figure 922446DEST_PATH_IMAGE020
异或,得到位切片形式的n维向量
Figure DEST_PATH_IMAGE021
;若iBSMuL=1,则令
Figure 20852DEST_PATH_IMAGE022
;若iBSMuL>1,则更新
Figure DEST_PATH_IMAGE023
(1.7)更新iBSMuL=iBSMuL+1;如果iBSMuL≤n,则跳转至步骤(1.3),否则输出位切片形式的n维向量
Figure 460055DEST_PATH_IMAGE024
,满足
Figure DEST_PATH_IMAGE025
Figure 643911DEST_PATH_IMAGE026
,⊙表示位切片形式的哈达玛乘法。
进一步地,位切片形式的掩码域内等量线性转换模块,包括以下子步骤:
(2.1)构造位切片形式的
Figure 544871DEST_PATH_IMAGE009
矩阵群和第二随机矩阵
Figure DEST_PATH_IMAGE027
;1≤i m≤n;
(2.2)输入为位切片形式的n维掩码域内向量
Figure 511166DEST_PATH_IMAGE028
,满足
Figure DEST_PATH_IMAGE029
,设定循环计数iBSL=1;
(2.3)计算
Figure 370537DEST_PATH_IMAGE028
的第iBSL个变量与([1k,0m]A)p中每个变量的乘积,最终得到一个位切片形式的n维向量
Figure 261264DEST_PATH_IMAGE030
;具体地,取出存储
Figure 700336DEST_PATH_IMAGE028
的8个寄存器的第iBSL位,并将其复制到对应寄存器的每一位得到
Figure DEST_PATH_IMAGE031
,将
Figure 507755DEST_PATH_IMAGE031
和([1k,0m]A)p作为位切片形式的哈达玛乘法的输入,得到向量
Figure 757601DEST_PATH_IMAGE030
;其中,1k表示元素全为1的k维行向量;0m表示m维零向量,右上角标p表示矩阵的行向量为位切片形式的向量;
(2.4)计算
Figure 384892DEST_PATH_IMAGE030
与位切片形式的矩阵n×k矩阵
Figure 627654DEST_PATH_IMAGE032
的乘积,得到非位切片形式的k维向量t2BSL
Figure 837050DEST_PATH_IMAGE030
Figure 507066DEST_PATH_IMAGE032
每一列的乘积涉及到位切片形式的哈达玛乘法以及对应的累加操作;具体地,
Figure 356073DEST_PATH_IMAGE030
Figure 402526DEST_PATH_IMAGE032
每一列的位切片形式的哈达玛乘法的结果,存储在8个n位寄存器里,将8个寄存器分别向左移n/2位并与其左移前的值异或,再向左移n/4位后与这次左移前的值异或,以此类推,直至向左移1位与最后一次左移前的值异或;此时得到的左移异或结果的每一个位值位于对应8个寄存器的最高位;
将8个寄存器最高位的位值分别存储于另一个寄存器的低8位;矩阵
Figure 401182DEST_PATH_IMAGE032
1~k列对应的k个寄存器的低8位依次组成k维向量t2BSL
(2.5)将t2BSL作为线性转换函数f BSL的输入,得到k维向量t3BSL,给t3BSL串联一个m维的零向量得到n维向量t4BSL,并转换为位切片形式
Figure DEST_PATH_IMAGE033
;若此时iBSL=1,则在转换前更新
Figure 773257DEST_PATH_IMAGE034
;其中,c是线性函数f BSL的k维常向量,0m表示m维零向量;
(2.6)将
Figure 109561DEST_PATH_IMAGE027
矩阵的第iBSL行向量与
Figure 444858DEST_PATH_IMAGE033
异或,得到位切片形式的n维向量
Figure DEST_PATH_IMAGE035
;若iBSL=1,则令
Figure 143693DEST_PATH_IMAGE036
;若iBSL>1,则更新
Figure DEST_PATH_IMAGE037
(2.7)更新iBSL=iBSL+1;如果iBSL≤n,则跳转至步骤(2.3),否则输出为位切片形式的n维向量
Figure 437402DEST_PATH_IMAGE038
,满足
Figure DEST_PATH_IMAGE039
且zBSL=f BSL(xBSL)。
进一步地,位切片形式的掩码域内非等量线性转换模块,包括以下子步骤:
(3.1)构造位切片形式的
Figure 57739DEST_PATH_IMAGE009
矩阵群和第二随机矩阵群
Figure 665569DEST_PATH_IMAGE040
;1≤im≤n,1≤jj≤l 2
(3.2)输入为l 1个位切片形式的n维掩码域内向量
Figure DEST_PATH_IMAGE041
,满足
Figure 687752DEST_PATH_IMAGE042
,1≤ii≤l 1,设定循环计数iBSLs=1;
(3.3)分别计算
Figure 870472DEST_PATH_IMAGE041
的第iBSLs个变量与([1k,0m]A)p中每个变量的乘积,最终得到位切片形式的n维向量群
Figure DEST_PATH_IMAGE043
,1≤iil 1;具体地,取出存储
Figure 257066DEST_PATH_IMAGE041
的8个寄存器的第iBSLs位,并将其复制到对应寄存器的每一位得到
Figure 386696DEST_PATH_IMAGE044
,将
Figure 279697DEST_PATH_IMAGE044
和([1k,0m]A)p作为位切片形式的哈达玛乘法的输入,得到向量
Figure 633318DEST_PATH_IMAGE043
;其中,1k表示元素全为1的k维行向量;0m表示m维零向量,右上角标p表示矩阵的行向量为位切片形式的向量;
(3.4)分别计算
Figure 431510DEST_PATH_IMAGE043
与位切片形式的矩阵n×k矩阵
Figure DEST_PATH_IMAGE045
的乘积,得到非位切片形式的k维向量群t2 ii ,1≤iil 1
Figure 177880DEST_PATH_IMAGE043
Figure 377917DEST_PATH_IMAGE045
每一列的乘积涉及到位切片形式的哈达玛乘法以及对应的累加操作;具体地,
Figure 902439DEST_PATH_IMAGE043
Figure 187927DEST_PATH_IMAGE045
每一列的位切片形式的哈达玛乘法的结果,存储在8个n位寄存器里,将8个寄存器分别向左移n/2位并与其左移前的值异或,再向左移n/4位后与这次左移前的值异或,以此类推,直至向左移1位与最后一次左移前的值异或;此时得到的左移异或结果的每一个位值位于对应8个寄存器的最高位;
将8个寄存器最高位的位值分别存储于另一个寄存器的低8位;矩阵
Figure 472409DEST_PATH_IMAGE045
1~k列对应的k个寄存器的低8位依次组成k维向量t2 ii
(3.5)将l 1t2 ii 串联作为线性映射f BSLs的输入,得到非位切片形式的掩码域内kl 2维向量t3BSLs;将t3BSLs分割为l 2个k维向量,并分别串联一个
Figure 323690DEST_PATH_IMAGE046
维零向量,得到l 2个n维向量t4 jj ;再转换为位切片形式得到
Figure DEST_PATH_IMAGE047
(3.6)将
Figure 298075DEST_PATH_IMAGE040
的第iBSLs行向量分别与
Figure 70859DEST_PATH_IMAGE047
一一异或得到
Figure 142720DEST_PATH_IMAGE048
;若iBSLs=1,则令
Figure DEST_PATH_IMAGE049
;若iBSLs>1,则更新
Figure 333661DEST_PATH_IMAGE050
(3.7)更新iBSLs=iBSLs+1;如果iBSLs≤n,则跳转至步骤(3.3),否则输出为l 2个位切片形式的n维向量
Figure DEST_PATH_IMAGE051
,满足
Figure 731145DEST_PATH_IMAGE052
,且
Figure DEST_PATH_IMAGE053
进一步地,位切片形式的哈达玛乘法,包括以下子步骤:
(a)输入为两个位切片形式的n维向量
Figure 804274DEST_PATH_IMAGE054
Figure DEST_PATH_IMAGE055
;其中,
Figure 210984DEST_PATH_IMAGE056
Figure DEST_PATH_IMAGE057
表示
Figure 256432DEST_PATH_IMAGE054
Figure 293658DEST_PATH_IMAGE055
中编号为i xi y的寄存器的值;0≤i x≤7,0≤i y≤7;
(b)选取8个寄存器RJ H,将其值清0;
(c)设定IH=0;
(d)设定JH=0;
(e)更新寄存器
Figure 775455DEST_PATH_IMAGE058
Figure DEST_PATH_IMAGE059
表示异或;
(f)更新JH=JH+1;如果JH<8,则跳转至步骤(e),否则继续步骤(g);
(g)令
Figure 468080DEST_PATH_IMAGE060
,并令向量
Figure 351722DEST_PATH_IMAGE054
中n个元素的8个位值都向左移1位;
(h)更新
Figure DEST_PATH_IMAGE061
Figure 904058DEST_PATH_IMAGE062
Figure DEST_PATH_IMAGE063
Figure 404309DEST_PATH_IMAGE064
(i)令向量
Figure 372396DEST_PATH_IMAGE055
中n个元素的8个位值都向右移1位;
(j)更新IH=IH+1;如果IH<8,则跳转至步骤(d),否则输出位切片形式的n维向量
Figure DEST_PATH_IMAGE065
,满足
Figure 376124DEST_PATH_IMAGE066
Figure 20732DEST_PATH_IMAGE065
存储于步骤(b)选取的8个寄存器RJ H中。
进一步地,位切片形式的
Figure 227854DEST_PATH_IMAGE009
矩阵群由矩阵群
Figure DEST_PATH_IMAGE067
转换得到,其中:
Figure 514479DEST_PATH_IMAGE068
Figure DEST_PATH_IMAGE069
Figure 471850DEST_PATH_IMAGE070
其中,A-1[
Figure DEST_PATH_IMAGE071
,1:k]表示矩阵A-1的第1列到第k列,
Figure 552938DEST_PATH_IMAGE072
表示n×m的零矩阵;
Figure DEST_PATH_IMAGE073
表示矩阵
Figure 778514DEST_PATH_IMAGE074
的第i m行;E为n2×n的域内矩阵,由n个n2维的特殊列向量
Figure DEST_PATH_IMAGE075
串联而成,
Figure 603251DEST_PATH_IMAGE075
表示第ie个元素的值为1其余元素均为0的向量,i e=nj e+j e+1,0≤je≤n;
Figure 66724DEST_PATH_IMAGE076
表示矩阵
Figure DEST_PATH_IMAGE077
的第1列到第k列。
进一步地,位切片形式的第一随机矩阵
Figure 584293DEST_PATH_IMAGE078
由第一随机矩阵
Figure DEST_PATH_IMAGE079
转换得到,其中:
Figure DEST_PATH_IMAGE081
式中,R1表示n×m的域内随机矩阵;
位切片形式的第二随机矩阵
Figure 359482DEST_PATH_IMAGE082
由第二随机矩阵
Figure DEST_PATH_IMAGE083
转换得到,其中:
Figure DEST_PATH_IMAGE085
式中,R2表示n×m的域内随机矩阵。
进一步地,译码函数f Dec的输入为位切片形式的n维掩码域内向量
Figure 266871DEST_PATH_IMAGE003
,将其转换为非位切片形式的n维掩码域内向量
Figure 99698DEST_PATH_IMAGE086
,输出为
Figure DEST_PATH_IMAGE087
;A-1[*,1:k]表示矩阵A-1第1列到第k列。
本发明的有益效果是:本发明将具有较强抗旁路攻击防御能力的线性码掩码和位切片技术相结合,设计了一套开销较小、针对分组密码的通用掩码防御方案。本发明可以灵活适配于各类电子加密设备。本发明易于实现、开销较小且非常灵活,大大提高了高复杂度的掩码方案应用于小型嵌入式设备的可能性,提高了小型嵌入式设备的抗旁路攻击能力。
附图说明
图1是线性码的生成矩阵A示意图;
图2是域内n=32位向量的位切片表现形式示意图;其中,R0、R7分别表示编号为0、7的寄存器;rx,0≤x≤31表示向量的元素;
Figure 538900DEST_PATH_IMAGE088
表示向量元素rx的第i位的值。
具体实施方式
下面根据附图详细说明本发明。
本发明是一种基于线性码掩码和位切片技术的抗旁路攻击的防御方法,适用于任何分组加密算法,且可灵活适配各类电子加密设备;包括以下步骤:
步骤一:输入长度为l的待加密的明文信息。将明文信息分组,得到l/k个长度为k的明文向量x i ,输入编码函数f Enc,得到掩码向量群
Figure 926019DEST_PATH_IMAGE001
。k为l的因数,具体数值由用户根据安全需要自定义;1≤i≤l/k。
编码函数
Figure DEST_PATH_IMAGE089
输出的向量
Figure 358138DEST_PATH_IMAGE001
为:
Figure 796204DEST_PATH_IMAGE008
其中,r i 为长度为m的伽罗华域内(以下简称域内)向量,向量元素随机生成。A为行数为n列数为n的生成矩阵,n=k+m=2x为目标电子加密设备的寄存器位数。如图1所示,A=[G1,G2;H1,H2]由4个子矩阵构成,分别为:行数为k列数为k的单位矩阵G1;行数为k列数为m的零矩阵G2;行数为m列数为k的矩阵H1;行数为m列数为m的单位矩阵H2。H1矩阵的值由用户根据安全需要自定义。
步骤二:将步骤一中编码函数f Enc输出的n维掩码向量群
Figure 124417DEST_PATH_IMAGE001
,转换为伽罗华域内位切片形式的掩码向量群
Figure 61149DEST_PATH_IMAGE002
如图2所示,一个n维向量的位切片形式由8个寄存器组成,向量
Figure 985373DEST_PATH_IMAGE001
包括n个元素,每个元素包括8个位值,每个寄存器存储向量内n个元素中某一特定位的值,按照元素在向量中1~n的排序,将元素的8个位值从寄存器的最高位依次存至最低位。具体地,向量第1个元素的值的8个位的位值,分别存入这8个寄存器的最高位,再依次存入各元素的位值,直至第
Figure 527213DEST_PATH_IMAGE090
个元素8个位的位值分别存入这8个寄存器的最低位;R7存储每个元素的最高位,R6存储每个元素的第二高位,依次类推直至R0存储每个元素的最低位。
步骤三:将步骤二得到的位切片形式的掩码向量群
Figure 26328DEST_PATH_IMAGE002
,作为掩码域内的分组加密算法的输入,得到掩码域内的加密结果
Figure 653618DEST_PATH_IMAGE003
掩码域内的分组加密算法由掩码域内的三个模块按一定规则组成。这三个模块分别为位切片形式的掩码域内哈达玛乘法BSMuL模块、位切片形式的掩码域内等量线性转换BSL模块、位切片形式的掩码域内非等量线性转换BSLs模块。每个模块为一种运算,根据分组加密算法的具体算法,每个模块可以多次调用,并进行特定顺序的组合,最后按照组合顺序执行。
(a)BSMuL模块主要实现分组加密算法中两个域内向量的哈达玛乘法。
BSMuL模块为本发明的核心之一,其输入为两个位切片形式的维度均为
Figure DEST_PATH_IMAGE091
的掩码域内向量
Figure 972080DEST_PATH_IMAGE012
Figure 571688DEST_PATH_IMAGE013
,满足
Figure 789174DEST_PATH_IMAGE014
Figure 903760DEST_PATH_IMAGE015
,其输出为
Figure 684635DEST_PATH_IMAGE092
,满足
Figure 935487DEST_PATH_IMAGE025
Figure 323875DEST_PATH_IMAGE026
Figure DEST_PATH_IMAGE093
表示哈达玛乘法。
包括以下子步骤:
a.1)构造位切片形式的矩阵群
Figure 456916DEST_PATH_IMAGE009
和两个随机矩阵
Figure 792213DEST_PATH_IMAGE010
Figure 163152DEST_PATH_IMAGE011
;1≤im≤n。
a.1.1)构造矩阵群
Figure 909391DEST_PATH_IMAGE067
和两个随机矩阵
Figure 264149DEST_PATH_IMAGE094
Figure DEST_PATH_IMAGE095
矩阵群
Figure 196945DEST_PATH_IMAGE067
的计算公式为:
Figure 422390DEST_PATH_IMAGE068
Figure 621421DEST_PATH_IMAGE069
Figure 932317DEST_PATH_IMAGE070
其中,矩阵A-1表示生成矩阵A的一般逆矩阵,A-1[
Figure 858685DEST_PATH_IMAGE071
,1:k]表示矩阵A-1的第1列到第k列,
Figure 938636DEST_PATH_IMAGE072
表示行数为n列数为m的零矩阵。×表示矩阵的外积;
Figure 42990DEST_PATH_IMAGE073
表示矩阵
Figure 841181DEST_PATH_IMAGE074
的第im行;E为一个行数为n2列数为n的域内矩阵,它是由n个维度为n2的特殊列向量
Figure 571240DEST_PATH_IMAGE075
串联而成,
Figure 771277DEST_PATH_IMAGE075
表示该向量在第ie个元素处的值为1,其余元素均为0,ie=nje+je+1,0≤je≤n。
Figure 46532DEST_PATH_IMAGE076
表示矩阵
Figure 128757DEST_PATH_IMAGE077
的第1列到第k列。
第一随机矩阵
Figure 396928DEST_PATH_IMAGE094
的计算公式为:
Figure DEST_PATH_IMAGE097
其中,
Figure 730432DEST_PATH_IMAGE098
表示行数为n列数为m的域内随机矩阵,即矩阵元素为域内元素的随机数。右上角标T表示矩阵的转置。
第二随机矩阵
Figure 425856DEST_PATH_IMAGE095
的计算公式为:
Figure 464219DEST_PATH_IMAGE100
其中,
Figure DEST_PATH_IMAGE101
也表示行数为n列数为m的域内随机矩阵。
a.1.2)将步骤a.1.1)构造的矩阵的每一行向量,根据步骤二转换为对应的位切片形式。
a.2)输入为位切片形式的维度均为n的掩码域内向量
Figure 552392DEST_PATH_IMAGE012
Figure 461442DEST_PATH_IMAGE013
,满足
Figure 327767DEST_PATH_IMAGE014
Figure 135317DEST_PATH_IMAGE015
,设定循环计数iBSMuL=1。
a.3)计算向量
Figure 479711DEST_PATH_IMAGE012
中第iBSMuL个变量,与向量
Figure 508847DEST_PATH_IMAGE013
中每个变量的乘积,最终得到一个由位切片形式表示的维度为
Figure 562384DEST_PATH_IMAGE091
的域内向量
Figure 44181DEST_PATH_IMAGE016
取出存储
Figure 254583DEST_PATH_IMAGE012
的8个寄存器的第iBSMuL位,并将其复制到对应寄存器的每一位得到
Figure 886028DEST_PATH_IMAGE017
。将
Figure 359735DEST_PATH_IMAGE017
Figure 328828DEST_PATH_IMAGE013
作为位切片形式的哈达玛乘法的输入,得到输出结果为位切片形式的
Figure 280603DEST_PATH_IMAGE091
维向量
Figure 769484DEST_PATH_IMAGE016
其中,位切片形式的哈达玛乘法为本发明的核心之一,包括以下步骤:
a.3.1)输入为两个维度均为
Figure 210830DEST_PATH_IMAGE091
的位切片形式的向量
Figure 667219DEST_PATH_IMAGE054
Figure 173418DEST_PATH_IMAGE055
;此处对应
Figure 766073DEST_PATH_IMAGE017
Figure 581583DEST_PATH_IMAGE013
。其中,
Figure 259689DEST_PATH_IMAGE056
Figure 569578DEST_PATH_IMAGE057
表示位切片表现形式中编号为ix、iy的寄存器的值;0≤ix≤7,0≤iy≤7。
a.3.2)选取8个寄存器RJ H,将其值清0。
a.3.3)设定IH=0。
a.3.4)设定JH=0。
a.3.5)更新寄存器
Figure 282319DEST_PATH_IMAGE058
Figure 3151DEST_PATH_IMAGE059
表示异或。
a.3.6)更新JH=JH+1。如果JH<8,则跳转至步骤a.3.5),否则继续执行步骤a.3.7)。
a.3.7)令
Figure 434132DEST_PATH_IMAGE060
,并令
Figure 75942DEST_PATH_IMAGE102
Figure 643189DEST_PATH_IMAGE102
表示位切片形式的向量
Figure 800501DEST_PATH_IMAGE054
中n个元素的8位变量都向左移1位;存储最低位的寄存器清零。例如,
Figure 203932DEST_PATH_IMAGE054
的8个寄存器为Rx0~Rx7,将Rx6的值赋给Rx7,Rx5的值赋给Rx6,继续直至Rx0的值赋给Rx1,最后清零Rx0。
a.3.8)更新
Figure 104892DEST_PATH_IMAGE061
Figure 526646DEST_PATH_IMAGE062
Figure 402329DEST_PATH_IMAGE063
Figure 542323DEST_PATH_IMAGE064
a.3.9)令
Figure DEST_PATH_IMAGE103
Figure 778132DEST_PATH_IMAGE103
表示位切片形式的向量
Figure 805125DEST_PATH_IMAGE055
中n个元素的8位变量都向右移1位;存储最高位的寄存器清零。例如,
Figure 304240DEST_PATH_IMAGE055
的8个寄存器为Ry0~Ry7,将Ry1的值赋给Ry0,Ry2的值赋给Ry1,继续直至Ry7的值赋给Ry6,最后清零Ry7。
a.3.10)更新IH=IH+1。如果IH<8,则跳转至步骤a.3.4),否则哈达玛乘法运算结束,输出为位切片形式的n维向量
Figure 931530DEST_PATH_IMAGE065
Figure 174293DEST_PATH_IMAGE065
的值存储于步骤a.3.2)选取的8个寄存器RJ H中,且满足
Figure 115179DEST_PATH_IMAGE104
Figure DEST_PATH_IMAGE105
Figure 316354DEST_PATH_IMAGE106
Figure DEST_PATH_IMAGE107
分别为非位切片形式的向量
Figure 712831DEST_PATH_IMAGE065
Figure 228126DEST_PATH_IMAGE054
Figure 744558DEST_PATH_IMAGE055
。此处
Figure 336208DEST_PATH_IMAGE065
对应
Figure 734828DEST_PATH_IMAGE016
a.4)将
Figure 319393DEST_PATH_IMAGE010
矩阵的第iBSMuL行向量与
Figure 441064DEST_PATH_IMAGE016
异或,得到位切片形式的n维向量
Figure 452882DEST_PATH_IMAGE018
,即两组个数为8的寄存器群按照寄存器编号一一异或;寄存器编号对应向量各元素8个位值的特定位。
a.5)计算
Figure 276482DEST_PATH_IMAGE018
与位切片形式表示的矩阵
Figure 399158DEST_PATH_IMAGE019
(im=iBSMuL)的乘积,得到位切片形式表示的n维向量
Figure 395844DEST_PATH_IMAGE020
Figure 578563DEST_PATH_IMAGE019
是一个行数为n列数为k的矩阵;因此,
Figure 951776DEST_PATH_IMAGE018
Figure 628876DEST_PATH_IMAGE019
每一列的乘积,涉及到位切片形式的哈达玛乘法以及对应的累加操作。
Figure 708827DEST_PATH_IMAGE018
Figure 62448DEST_PATH_IMAGE019
每一列的位切片形式的哈达玛乘法的结果,存储在8个
Figure 860640DEST_PATH_IMAGE091
位寄存器里,将8个寄存器分别向左移n/21位,并与其左移前的值异或,异或得到的值再向左移n/22位后与这次左移前的值异或,以此类推,直至向左移n/2x=1位再与这次左移前的值异或,这样累加操作便完成,且累加结果的每一个位值位于对应8个寄存器的最高位。
然后将累加结果按照对应
Figure 341431DEST_PATH_IMAGE019
中第1~k列同步移到
Figure 275889DEST_PATH_IMAGE020
对应的寄存器的第1高位至第k高位。例如,
Figure 65991DEST_PATH_IMAGE018
Figure 351478DEST_PATH_IMAGE019
第1列的乘积结果移到最高位,与第2列的乘积结果移到第2高位,以此类推,与第
Figure 370381DEST_PATH_IMAGE108
列的乘积结果移到第k高位;8个寄存器剩余的位置清零。
a.6)将
Figure 221662DEST_PATH_IMAGE011
矩阵的第iBSMuL行向量,与向量
Figure 182665DEST_PATH_IMAGE020
异或,得到位切片形式的n维向量
Figure 437673DEST_PATH_IMAGE021
。若iBSMuL=1,则令
Figure 509534DEST_PATH_IMAGE022
;若iBSMuL>1,则更新
Figure 684163DEST_PATH_IMAGE023
a.7)更新iBSMuL=iBSMuL+1。如果iBSMuL≤n,则跳转至步骤a.3),否则BSMuL模块完成,输出为位切片形式的n维向量
Figure 550488DEST_PATH_IMAGE024
,满足
Figure 561301DEST_PATH_IMAGE025
,且
Figure 905694DEST_PATH_IMAGE026
(b)BSL模块主要实现分组加密算法中域内向量满足映射Fk→Fk的线性转换。F表示伽罗华域,Fk表示元素数为k的域内向量。
BSL模块为本发明的核心之一,其输入为位切片形式的维度为
Figure 934830DEST_PATH_IMAGE091
的掩码域内向量
Figure 972056DEST_PATH_IMAGE028
,满足
Figure 266903DEST_PATH_IMAGE029
,其输出为
Figure DEST_PATH_IMAGE109
,满足
Figure 493616DEST_PATH_IMAGE039
且zBSL=f BSL(xBSL),f BSL是满足映射Fk→Fk的线性函数。
BSL模块为本发明的核心之一,包括以下子步骤。
b.1)构造位切片形式的
Figure 377258DEST_PATH_IMAGE009
矩阵群和第二随机矩阵
Figure 850965DEST_PATH_IMAGE027
Figure 820058DEST_PATH_IMAGE009
矩阵群构造方式同步骤a.1)。
Figure 254057DEST_PATH_IMAGE110
矩阵的计算公式为:
Figure 257785DEST_PATH_IMAGE112
其中,R2BSL表示行数为n列数为m的域内随机矩阵,即矩阵元素为域内元素的随机数。将矩阵
Figure 636814DEST_PATH_IMAGE110
的每一行向量转换为对应的位切片形式
Figure 93203DEST_PATH_IMAGE027
b.2)输入为位切片形式的维度为
Figure 599401DEST_PATH_IMAGE091
的掩码域内向量
Figure 457636DEST_PATH_IMAGE028
,满足
Figure 273145DEST_PATH_IMAGE029
,设定循环计数iBSL=1。
b.3)计算
Figure 216831DEST_PATH_IMAGE028
的第iBSL个变量,与([1k,0m]A)p中每个变量的乘积,最终得到一个由位切片形式表示的维度为
Figure 261141DEST_PATH_IMAGE091
的域内向量
Figure DEST_PATH_IMAGE113
。其中,1k表示维度为k,元素全为1的行向量;0m表示维度为
Figure 505041DEST_PATH_IMAGE046
的零向量,右上角标p表示矩阵的行向量为位切片形式的向量。
取出存储
Figure 491451DEST_PATH_IMAGE028
的8个寄存器的第iBSL位,并将其复制到对应寄存器的每一位得到
Figure 673165DEST_PATH_IMAGE114
,将
Figure 567172DEST_PATH_IMAGE114
和([1k,0m]A)p作为位切片形式的哈达玛乘法的输入,得到结果
Figure 134419DEST_PATH_IMAGE030
;位切片形式的哈达玛乘法运算同步骤a.3)。
b.4)计算
Figure 39534DEST_PATH_IMAGE030
与位切片形式表示的n×k矩阵
Figure 957811DEST_PATH_IMAGE032
的乘积,得到非位切片形式的k维向量t2BSL
Figure 593192DEST_PATH_IMAGE030
Figure 280525DEST_PATH_IMAGE032
每一列的乘积涉及到位切片形式的哈达玛乘法以及对应的累加操作。
哈达玛乘法的结果存储在8个n位寄存器里,将8个寄存器分别向左移n/2位并与其左移前的值异或,异或得到的值再向左移n/4位后与这次左移前的值异或,以此类推,直至向左移1位后再与这次左移前的值异或,这样累加操作便完成,且累加结果的每一个位值位于对应8个寄存器的最高位。
将8个寄存器最高位的位值分别存储于另一个寄存器的低8位的相应位置。本实施例中,8个寄存器中存储向量元素的最高位至最低位按照顺序存入另一个寄存器中低8位的最高位至最低位;具体地,将8个寄存器中存储向量元素最高位的R7的最高位存入寄存器低8位的最高位,将8个寄存器中存储向量元素第二最高位的R6的最高位存入寄存器低8位的第二高位,依此类推直至将8个寄存器中存储向量元素最低位的R0的最高位存入寄存器低8位的最低位。
矩阵
Figure 359471DEST_PATH_IMAGE032
的1~k列,对应得到的k个寄存器的低8位依次组成k维向量t2BSL
b.5)将t2BSL作为线性转换函数f BSL的输入,得到k维向量t3BSL。给t3BSL串联一个维度为m的零向量得到t4BSL。后将n维向量t4BSL转换为位切片形式的
Figure 233886DEST_PATH_IMAGE033
若此时iBSL=1,则先更新
Figure 938537DEST_PATH_IMAGE034
,再将其转换为位切片形式
Figure 480376DEST_PATH_IMAGE033
。其中,c是维度为k的线性函数f BSL的常向量,0m表示维度为m的零向量。
b.6)将
Figure 730223DEST_PATH_IMAGE027
矩阵的第iBSL行向量与
Figure 357514DEST_PATH_IMAGE033
异或,得到位切片形式的n维向量
Figure 334697DEST_PATH_IMAGE035
。若iBSL=1,则令
Figure 996623DEST_PATH_IMAGE036
;若iBSL>1,则更新
Figure 417371DEST_PATH_IMAGE037
b.7)更新iBSL=iBSL+1,如果iBSL≤n,则跳转至步骤b.3);否则BSL模块完成,输出为位切片形式的n维向量
Figure 328695DEST_PATH_IMAGE038
,满足
Figure 109569DEST_PATH_IMAGE039
且zBSL=f BSL(xBSL)。
(c)BSLs模块主要实现分组加密算法中域内向量满足映射
Figure DEST_PATH_IMAGE115
的线性转换。
Figure 904962DEST_PATH_IMAGE005
Figure 745879DEST_PATH_IMAGE006
表示元素数为kl 1、kl 2的域内向量,l 1l 2由用户根据函数需要自定义。
BSLs模块为本发明的核心之一,其输入为l 1个位切片形式的维度均为
Figure 82183DEST_PATH_IMAGE091
的掩码域内向量
Figure 417480DEST_PATH_IMAGE041
,满足
Figure 788419DEST_PATH_IMAGE116
,1≤ii≤l 1;其输出为l 2个位切片形式的维度均为n的
Figure DEST_PATH_IMAGE117
,1≤jj≤l 2,满足
Figure 331396DEST_PATH_IMAGE052
,1≤jj≤l 2
Figure 905727DEST_PATH_IMAGE053
f BSLs是满足映射
Figure 293983DEST_PATH_IMAGE115
的域内线性函数。
BSLs模块为本发明的核心之一,包括以下子步骤:
c.1)构造位切片形式的
Figure 316166DEST_PATH_IMAGE009
矩阵群和第二随机矩阵群
Figure 249618DEST_PATH_IMAGE040
,1≤jj≤l 2
Figure 826093DEST_PATH_IMAGE009
矩阵群构造方式同步骤a.1)。
Figure 752461DEST_PATH_IMAGE118
矩阵群的计算公式为:
Figure 832412DEST_PATH_IMAGE120
其中,
Figure DEST_PATH_IMAGE121
表示行数为n列数为m的域内随机矩阵,即矩阵元素为域内元素的随机数。将各
Figure 464994DEST_PATH_IMAGE118
矩阵的每一行向量转换为对应的位切片形式
Figure 263186DEST_PATH_IMAGE040
c.2)输入为l 1个位切片形式的维度均为n的掩码域内向量
Figure 727665DEST_PATH_IMAGE041
,满足
Figure 678435DEST_PATH_IMAGE116
,1≤ii≤l 1,设定循环计数iBSLs=1。
c.3)将l 1
Figure 265274DEST_PATH_IMAGE041
分别作为步骤b.3)的输入,得到位切片形式的掩码域内维度均为n的向量群
Figure 285183DEST_PATH_IMAGE043
,1≤ii≤l 1
具体地,分别计算
Figure 569665DEST_PATH_IMAGE041
的第iBSLs个变量与([1k,0m]A)p中每个变量的乘积,最终得到位切片形式的n维向量群
Figure 624208DEST_PATH_IMAGE043
,1≤ii≤l 1;具体地,取出存储
Figure 319632DEST_PATH_IMAGE041
的8个寄存器的第iBSLs位,并将其复制到对应寄存器的每一位得到
Figure 826837DEST_PATH_IMAGE044
,将
Figure 649430DEST_PATH_IMAGE044
和([1k,0m]A)p作为位切片形式的哈达玛乘法的输入,得到向量
Figure 558480DEST_PATH_IMAGE043
;其中,1k表示元素全为1的k维行向量;0m表示m维零向量,右上角标p表示矩阵的行向量为位切片形式的向量。
c.4)将l 1
Figure 690385DEST_PATH_IMAGE043
作为步骤b.4)的输入,得到非位切片形式的掩码域内维度均为k的向量群t2 ii ,1≤ii≤l 1
分别计算
Figure 229426DEST_PATH_IMAGE043
与位切片形式的矩阵n×k矩阵
Figure 104978DEST_PATH_IMAGE045
的乘积,得到非位切片形式的k维向量群t2 ii ,1≤iil 1
Figure 134114DEST_PATH_IMAGE043
Figure 171340DEST_PATH_IMAGE045
每一列的乘积涉及到位切片形式的哈达玛乘法以及对应的累加操作;具体地,
Figure 669448DEST_PATH_IMAGE043
Figure 817533DEST_PATH_IMAGE045
每一列的位切片形式的哈达玛乘法的结果,存储在8个n位寄存器里,将8个寄存器分别向左移n/2位并与其左移前的值异或,再向左移n/4位后与这次左移前的值异或,以此类推,直至向左移1位与最后一次左移前的值异或;此时得到的左移异或结果的每一个位值位于对应8个寄存器的最高位。
将8个寄存器最高位的位值分别存储于另一个寄存器的低8位。
矩阵
Figure 701175DEST_PATH_IMAGE045
的1~k列,对应得到的k个寄存器的低8位依次组成k维向量t2 ii
c.5)将l 1t2 ii 串联,作为线性函数
Figure 909303DEST_PATH_IMAGE122
的输入,得到非位切片形式的掩码域内维度为kl 2的向量t3BSLs。将t3BSLs分割为l 2个k维向量,分别给这l 2个向量串联一个m维零向量,得到l 2个n维向量t4 jj 。再将其转换为对应的位切片形式得到
Figure 629128DEST_PATH_IMAGE047
,1≤jj≤l 2
c.6)对应地,将l 2
Figure 846483DEST_PATH_IMAGE040
的第iBSLs行向量,分别与l 2
Figure 381370DEST_PATH_IMAGE047
,一一异或,得到
Figure 229240DEST_PATH_IMAGE048
,1≤jj≤l 2。若iBSLs=1,则令
Figure 233099DEST_PATH_IMAGE049
;若iBSLs>1,则更新
Figure 988565DEST_PATH_IMAGE050
c.7)更新iBSLs=iBSLs+1,如果iBSLs≤n,则跳转至步骤c.3);否则BSLs模块完成,输出为l 2个位切片形式的n维向量
Figure 846800DEST_PATH_IMAGE051
Figure DEST_PATH_IMAGE123
,满足
Figure 941270DEST_PATH_IMAGE052
,1≤jj≤l 2
Figure 619376DEST_PATH_IMAGE053
步骤四:将加密结果
Figure 178534DEST_PATH_IMAGE003
,1≤i≤l/k,分别作为译码函数f Dec的输入,最终输出为明文信息对应的密文。
译码函数f Dec的输入为位切片形式的长度为n的掩码域内向量
Figure 642007DEST_PATH_IMAGE003
。译码函数f Dec首先将其转换为非位切片形式的长度为n的掩码域内向量
Figure 362839DEST_PATH_IMAGE086
;然后计算
Figure 793820DEST_PATH_IMAGE124
得到最终的译码结果,A-1[*,1:k]表示矩阵A-1的第1到k列,A-1为矩阵A的逆矩阵。
其中,位切片形式的n维掩码域内向量转换为非位切片形式为:将位切片形式的向量的8个寄存器中同一位置的8个位值组成一个元素,且位值在寄存器中的排位对应元素在向量中的排位。具体地,8个寄存器的最高位存储了n个元素中的第1个元素,8个寄存器的最低位存储了n个元素中的第n个元素;将这8个寄存器同一位置的位值分别存储到另一个寄存器低8位的相应位置。如图2所示,8个寄存器中R7存储了元素的最高位,R0存储了元素的最低位,则将R7中的位值存储到另一个寄存器R中的低8位的最高位,而R0中的位值存储到寄存器R中的低8位的最低位;n个元素总共需要n个寄存器来存储,这样便转换为了非位切片形式。

Claims (6)

1.一种基于线性码掩码和位切片技术的抗旁路攻击的防御方法,其特征在于,包括以下步骤:
步骤一:输入长度为l的待加密的明文信息;将明文信息分组,得到l/k个长度为k的明文向量xi,输入编码函数fEnc,得到掩码向量群
Figure FDA0003520797330000011
1≤i≤l/k;
步骤二:将步骤一得到的掩码向量群
Figure FDA0003520797330000012
转换为域内位切片形式的掩码向量群
Figure FDA0003520797330000013
步骤三:将步骤二得到的位切片形式的掩码向量群
Figure FDA0003520797330000014
作为掩码域内的分组加密算法的输入,得到掩码域内的加密结果
Figure FDA0003520797330000015
掩码域内的分组加密算法由三个模块按一定规则组成,分别为:位切片形式的掩码域内哈达玛乘法模块、位切片形式的掩码域内等量线性转换模块、位切片形式的掩码域内非等量线性转换模块;
位切片形式的掩码域内乘法模块,用于实现分组加密算法中两个域内向量的哈达玛乘法;包括以下子步骤:
(1.1)构造位切片形式的
Figure FDA0003520797330000016
矩阵群、第一随机矩阵
Figure FDA0003520797330000017
和第二随机矩阵
Figure FDA0003520797330000018
1≤im≤n;
(1.2)输入为位切片形式的n维掩码域内向量
Figure FDA0003520797330000019
Figure FDA00035207973300000110
满足
Figure FDA00035207973300000111
Figure FDA00035207973300000112
设定循环计数iBSMuL=1;
(1.3)计算向量
Figure FDA00035207973300000113
中第iBSMuL个元素,与向量
Figure FDA00035207973300000114
中每个元素的乘积,得到一个位切片形式的n维域内向量
Figure FDA00035207973300000115
具体地,取出存储
Figure FDA00035207973300000116
的8个寄存器的第iBSMuL位,并将其复制到对应寄存器的每一位得到
Figure FDA00035207973300000117
Figure FDA00035207973300000118
Figure FDA00035207973300000119
作为位切片形式的哈达玛乘法的输入,得到向量
Figure FDA00035207973300000120
(1.4)将
Figure FDA00035207973300000121
矩阵的第iBSMuL行向量与
Figure FDA00035207973300000122
异或,得到位切片形式的n维向量
Figure FDA00035207973300000123
(1.5)计算
Figure FDA00035207973300000124
与位切片形式的n×k矩阵
Figure FDA00035207973300000125
的乘积,得到位切片形式的n维向量
Figure FDA00035207973300000126
Figure FDA00035207973300000127
Figure FDA00035207973300000128
每一列的乘积涉及位切片形式的哈达玛乘法以及对应的累加操作;具体地,
Figure FDA00035207973300000129
Figure FDA00035207973300000130
每一列的位切片形式的哈达玛乘法的结果,存储在8个n位寄存器里,将8个寄存器分别向左移n/2位并与其左移前的值异或,再向左移n/4位后与这次左移前的值异或,以此类推,直至向左移1位后与最后一次左移前的值异或;此时得到的左移异或结果的每个位值位于对应8个寄存器的最高位;
Figure FDA00035207973300000131
对应的寄存器的第1高位至第k高位,依次存储
Figure FDA00035207973300000132
中第1~k列对应的左移异或结果;
(1.6)将
Figure FDA00035207973300000133
矩阵的第iBSMuL行向量与
Figure FDA00035207973300000134
异或,得到位切片形式的n维向量
Figure FDA0003520797330000021
若iBSMuL=1,则令
Figure FDA0003520797330000022
若iBSMuL>1,则更新
Figure FDA0003520797330000023
Figure FDA0003520797330000024
(1.7)更新iBSMuL=iBSMuL+1;如果iBSMuL≤n,则跳转至步骤(1.3),否则输出位切片形式的n维向量
Figure FDA0003520797330000025
满足
Figure FDA0003520797330000026
且zBSMuL=xBSMuL⊙yBSMuL,⊙表示位切片形式的哈达玛乘法;
位切片形式的掩码域内等量线性转换模块,用于实现分组加密算法域内向量满足映射fBSL:Fk→Fk的线性转换;包括以下子步骤:
(2.1)构造位切片形式的
Figure FDA0003520797330000027
矩阵群和第二随机矩阵
Figure FDA0003520797330000028
1≤im≤n;
(2.2)输入为位切片形式的n维掩码域内向量
Figure FDA0003520797330000029
满足
Figure FDA00035207973300000210
设定循环计数iBSL=1;
(2.3)计算
Figure FDA00035207973300000211
的第iBSL个变量与([1k,0m]A)p中每个变量的乘积,最终得到一个位切片形式的n维向量
Figure FDA00035207973300000212
具体地,取出存储
Figure FDA00035207973300000213
的8个寄存器的第iBSL位,并将其复制到对应寄存器的每一位得到
Figure FDA00035207973300000214
Figure FDA00035207973300000215
和([1k,0m]A)p作为位切片形式的哈达玛乘法的输入,得到向量
Figure FDA00035207973300000216
其中,1k表示元素全为1的k维行向量;0m表示m维零向量,右上角标p表示矩阵的行向量为位切片形式的向量;
(2.4)计算
Figure FDA00035207973300000217
与位切片形式的矩阵n×k矩阵
Figure FDA00035207973300000218
的乘积,得到非位切片形式的k维向量t2BSL
Figure FDA00035207973300000219
Figure FDA00035207973300000220
每一列的乘积涉及到位切片形式的哈达玛乘法以及对应的累加操作;具体地,
Figure FDA00035207973300000221
Figure FDA00035207973300000222
每一列的位切片形式的哈达玛乘法的结果,存储在8个n位寄存器里,将8个寄存器分别向左移n/2位并与其左移前的值异或,再向左移n/4位后与这次左移前的值异或,以此类推,直至向左移1位与最后一次左移前的值异或;此时得到的左移异或结果的每一个位值位于对应8个寄存器的最高位;
将8个寄存器最高位的位值分别存储于另一个寄存器的低8位;矩阵
Figure FDA00035207973300000223
列对应的k个寄存器的低8位依次组成k维向量t2BSL
(2.5)将t2BSL作为线性转换函数fBSL的输入,得到k维向量t3BSL,给t3BSL串联一个m维的零向量得到n维向量t4BSL,并转换为位切片形式
Figure FDA00035207973300000224
若此时iBSL=1,则在转换前更新
Figure FDA00035207973300000225
其中,c是线性函数fBSL的k维常向量,0m表示m维零向量;
(2.6)将
Figure FDA00035207973300000226
矩阵的第iBSL行向量与
Figure FDA00035207973300000227
异或,得到位切片形式的n维向量
Figure FDA00035207973300000228
若iBSL=1,则令
Figure FDA00035207973300000229
若iBSL>1,则更新
Figure FDA00035207973300000230
(2.7)更新iBSL=iBSL+1;如果iBSL≤n,则跳转至步骤(2.3),否则输出为位切片形式的n维向量
Figure FDA00035207973300000231
满足
Figure FDA00035207973300000232
且zBSL=fBSL(xBSL);
位切片形式的掩码域内非等量线性转换模块,用于实现分组加密算法中域内向量满足映射
Figure FDA0003520797330000031
的线性转换;F表示伽罗华域,Fk
Figure FDA0003520797330000032
表示元素数为k、kl1、kl2的域内向量;包括以下子步骤:
(3.1)构造位切片形式的
Figure FDA0003520797330000033
矩阵群和第二随机矩阵群
Figure FDA0003520797330000034
1≤im≤n,1≤jj≤l2
(3.2)输入为l1个位切片形式的n维掩码域内向量
Figure FDA0003520797330000035
满足
Figure FDA0003520797330000036
1≤ii≤l1,设定循环计数iBSLs=1;
(3.3)分别计算
Figure FDA0003520797330000037
的第iBSLs个变量与([1k,0m]A)p中每个变量的乘积,最终得到位切片形式的n维向量群
Figure FDA0003520797330000038
1≤ii≤l1;具体地,取出存储
Figure FDA0003520797330000039
的8个寄存器的第iBSLs位,并将其复制到对应寄存器的每一位得到
Figure FDA00035207973300000310
Figure FDA00035207973300000311
和([1k,0m]A)p作为位切片形式的哈达玛乘法的输入,得到向量
Figure FDA00035207973300000312
其中,1k表示元素全为1的k维行向量;0m表示m维零向量,右上角标p表示矩阵的行向量为位切片形式的向量;
(3.4)分别计算
Figure FDA00035207973300000313
与位切片形式的矩阵n×k矩阵
Figure FDA00035207973300000314
的乘积,得到非位切片形式的k维向量群t2ii,1≤ii≤l1
Figure FDA00035207973300000315
Figure FDA00035207973300000316
每一列的乘积涉及到位切片形式的哈达玛乘法以及对应的累加操作;具体地,
Figure FDA00035207973300000317
Figure FDA00035207973300000318
每一列的位切片形式的哈达玛乘法的结果,存储在8个n位寄存器里,将8个寄存器分别向左移n/2位并与其左移前的值异或,再向左移n/4位后与这次左移前的值异或,以此类推,直至向左移1位与最后一次左移前的值异或;此时得到的左移异或结果的每一个位值位于对应8个寄存器的最高位;
将8个寄存器最高位的位值分别存储于另一个寄存器的低8位;矩阵
Figure FDA00035207973300000319
列对应的k个寄存器的低8位依次组成k维向量t2ii
(3.5)将l1个t2ii串联作为线性映射fBSLs的输入,得到非位切片形式的掩码域内kl2维向量t3BSLs;将t3BSLs分割为l2个k维向量,并分别串联一个m维零向量,得到l2个n维向量t4jj;再转换为位切片形式得到
Figure FDA00035207973300000320
(3.6)将
Figure FDA00035207973300000321
的第iBSLs行向量分别与
Figure FDA00035207973300000322
一一异或得到
Figure FDA00035207973300000323
若iBSLs=1,则令
Figure FDA00035207973300000324
若iBSLs>1,则更新
Figure FDA00035207973300000325
(3.7)更新iBSLs=iBSLs+1;如果iBSLs≤n,则跳转至步骤(3.3),否则输出为l2个位切片形式的n维向量
Figure FDA00035207973300000326
满足
Figure FDA00035207973300000327
Figure FDA00035207973300000328
其中,位切片形式的哈达玛乘法,包括以下子步骤:
(a)输入为两个位切片形式的n维向量
Figure FDA00035207973300000329
Figure FDA00035207973300000330
其中,
Figure FDA00035207973300000331
表示
Figure FDA00035207973300000332
Figure FDA00035207973300000333
中编号为ix、iy的寄存器的值;0≤ix≤7,0≤iy≤7;
(b)选取8个寄存器RJH,将其值清0;
(c)设定IH=0;
(d)设定JH=0;
(e)更新寄存器
Figure FDA0003520797330000041
Figure FDA0003520797330000042
表示异或;
(f)更新JH=JH+1;如果JH<8,则跳转至步骤(e),否则继续步骤(g);
(g)令
Figure FDA0003520797330000043
并令向量
Figure FDA0003520797330000044
中n个元素的8个位值都向左移1位;
(h)更新
Figure FDA0003520797330000045
Figure FDA0003520797330000046
(i)令向量
Figure FDA0003520797330000047
中n个元素的8个位值都向右移1位;
(j)更新IH=IH+1;如果IH<8,则跳转至步骤(d),否则输出位切片形式的n维向量
Figure FDA0003520797330000048
满足
Figure FDA0003520797330000049
Figure FDA00035207973300000410
存储于步骤(b)选取的8个寄存器RJH中;
步骤四:将步骤三得到的加密结果
Figure FDA00035207973300000411
分别输入译码函数fDec,最终输出明文信息对应的密文。
2.根据权利要求1所述基于线性码掩码和位切片技术的抗旁路攻击的防御方法,其特征在于,编码函数fEnc输出的掩码向量
Figure FDA00035207973300000412
Figure FDA00035207973300000413
其中,ri为随机生成的m维域内向量;A为n×n的生成矩阵,n=k+m为目标电子加密设备的寄存器位数;生成矩阵A=[G1,G2;H1,H2];G1为k×k的单位矩阵,G2为k×m的零矩阵;H1为m×k的自定义矩阵;H2为m×m的单位矩阵。
3.根据权利要求2所述基于线性码掩码和位切片技术的抗旁路攻击的防御方法,其特征在于,域内向量q转换为域内位切片形式向量qp,具体为:n维向量q包括n个元素,每个元素包括8个位值,将所有位值存入8个寄存器,得到向量qp;其中,8个寄存器对应存储8个位值,每个寄存器存储特定位的值;n位寄存器的最高位至最低位依次对应存储向量q中排序1~n的元素的位值。
4.根据权利要求1所述基于线性码掩码和位切片技术的抗旁路攻击的防御方法,其特征在于,位切片形式的
Figure FDA00035207973300000414
矩阵群由矩阵群
Figure FDA00035207973300000415
转换得到,其中:
Figure FDA00035207973300000416
其中,A-1[*,1:k]表示矩阵A-1的第1列到第k列,On×m表示n×m的零矩阵;
Figure FDA00035207973300000417
表示矩阵
Figure FDA00035207973300000418
的第im行;E为n2×n的域内矩阵,由n个n2维的特殊列向量
Figure FDA00035207973300000419
串联而成,
Figure FDA00035207973300000420
表示第ie个元素的值为1其余元素均为0的向量,ie=nje+je+1,0≤je≤n;
Figure FDA00035207973300000421
表示矩阵
Figure FDA00035207973300000422
的第1列到第k列。
5.根据权利要求1所述基于线性码掩码和位切片技术的抗旁路攻击的防御方法,其特征在于:
位切片形式的第一随机矩阵
Figure FDA0003520797330000051
由第一随机矩阵
Figure FDA0003520797330000052
转换得到,其中:
Figure FDA0003520797330000053
式中,R1表示n×m的域内随机矩阵;
位切片形式的第二随机矩阵
Figure FDA0003520797330000054
由第二随机矩阵
Figure FDA0003520797330000055
转换得到,其中:
Figure FDA0003520797330000056
式中,R2表示n×m的域内随机矩阵。
6.根据权利要求3所述基于线性码掩码和位切片技术的抗旁路攻击的防御方法,其特征在于,译码函数fDec的输入为位切片形式的n维掩码域内向量
Figure FDA0003520797330000057
将其转换为非位切片形式的n维掩码域内向量
Figure FDA0003520797330000058
输出为
Figure FDA0003520797330000059
A-1[*,1:k]表示矩阵A-1第1列到第k列。
CN202210047078.3A 2022-01-17 2022-01-17 基于线性码掩码和位切片技术的抗旁路攻击的防御方法 Expired - Fee Related CN114048472B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210047078.3A CN114048472B (zh) 2022-01-17 2022-01-17 基于线性码掩码和位切片技术的抗旁路攻击的防御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210047078.3A CN114048472B (zh) 2022-01-17 2022-01-17 基于线性码掩码和位切片技术的抗旁路攻击的防御方法

Publications (2)

Publication Number Publication Date
CN114048472A CN114048472A (zh) 2022-02-15
CN114048472B true CN114048472B (zh) 2022-06-24

Family

ID=80196603

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210047078.3A Expired - Fee Related CN114048472B (zh) 2022-01-17 2022-01-17 基于线性码掩码和位切片技术的抗旁路攻击的防御方法

Country Status (1)

Country Link
CN (1) CN114048472B (zh)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9423820B2 (en) * 2013-07-31 2016-08-23 Fairchild Semiconductor Corporation Complimentary bit slicing side channel attack defense
CN106059746B (zh) * 2016-07-22 2019-04-12 武汉大学 一种抗任意阶侧信道攻击的掩码防护方法及系统
CN106452789B (zh) * 2016-11-02 2019-06-18 北京宏思电子技术有限责任公司 一种多方位防侧信道攻击的签名方法
EP3422176A1 (en) * 2017-06-28 2019-01-02 Gemalto Sa Method for securing a cryptographic process with sbox against high-order side-channel attacks
CN107294700B (zh) * 2017-08-22 2019-11-08 兆讯恒达微电子技术(北京)有限公司 防御旁路攻击的与逻辑电路装置及处理方法
US11216594B2 (en) * 2019-06-28 2022-01-04 Intel Corporation Countermeasures against hardware side-channel attacks on cryptographic operations
US11507699B2 (en) * 2019-09-27 2022-11-22 Intel Corporation Processor with private pipeline
CN111931176B (zh) * 2020-09-29 2021-01-22 网御安全技术(深圳)有限公司 防御侧信道攻击的方法、装置及可读存储介质
CN112929161B (zh) * 2021-01-22 2022-01-07 西安电子科技大学 即插即用型参考系无关的双场量子密钥分发协议实现方法

Also Published As

Publication number Publication date
CN114048472A (zh) 2022-02-15

Similar Documents

Publication Publication Date Title
Dubrova et al. Breaking a fifth-order masked implementation of crystals-kyber by copy-paste
Golić et al. Multiplicative masking and power analysis of AES
CN109791517B (zh) 保护并行乘法运算免受外部监测攻击
KR100610367B1 (ko) 정보 누출 공격을 방지하기 위한 갈로아 필드 상의 곱셈방법 및 장치, 역변환 장치 그리고 aes 바이트 치환연산장치
EP2195761B1 (en) Substitution table masking for cryptographic processes
CN104094553B (zh) 防侧信道攻击的加密方法和装置
KR20180002069A (ko) 부채널 분석에 대응한 보호 방법 및 장치
CN110071794B (zh) 一种基于aes算法的信息加密方法、系统及相关组件
CN1989726A (zh) 用于执行加密计算的方法和装置
JP2015191106A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
US20110170685A1 (en) Countermeasure method and devices for asymmetric encryption with signature scheme
CN101674180A (zh) 一种伪随机序列产生方法及加密方法
CN106330424A (zh) 基于sm3算法的密码模块的防攻击方法及装置
CN114048472B (zh) 基于线性码掩码和位切片技术的抗旁路攻击的防御方法
CN109936437B (zh) 一种基于d+1阶掩码的抗功耗攻击方法
CN109543467A (zh) 一种具有多个硬件ip核的芯片防护方法
Fukushima et al. Fault injection attack on Salsa20 and ChaCha and a lightweight countermeasure
Song et al. Secure and fast implementation of ARX-Based block ciphers using ASIMD instructions in ARMv8 platforms
CN107231229B (zh) 一种用于保护sm4密码芯片的低熵掩码泄露防护方法及其实现系统
US10341089B2 (en) High-speed AES with transformed keys
Matsumoto et al. CryptMT stream cipher version 3
CN109714152B (zh) 基于大型仿射编码的白盒aes加密方法
RU2188513C2 (ru) Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки
KR100350207B1 (ko) 디지털 데이터의 엘-비트 입력 블록들을 엘-비트 출력비트들로 암호 변환하는 방법
Krömer et al. An acceleration of quasigroup operations by residue arithmetic

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20220624