1.一种检测和抵御差分故障攻击的方法,其特征在于,所述方法包括三部分:(1)构建冗余;
根据原始加密模块构建冗余加密模块;
(2)双重差分故障检测;
基于消息认证码方法检测冗余加密模块是否存在故障注入,并与原始加密模块对比检测原始加密模块是否存在故障注入,完成双重差分故障攻击或差分故障攻击检测;
(3)定位故障源及防护;
在确定存在差分故障注入后,基于密文差分值和感染函数检测目标算法的每一轮密文差分值,定位攻击者所注入的故障源,并使用随机数和感染函数对密文差分值进行隐藏实现防护。
2.根据权利要求1所述的检测和抵御差分故障攻击的方法,其特征在于:所述构建冗余,具体是对某一分组加密算法E进行完全复制为E',称E为原始加密模块,E'为冗余加密模块;对E和E'分别输入相同的明文P和密钥K进行加密,输出原始密文为C=EK(P),冗余密文为C'=E'K(P)。
3.根据权利要求1所述的检测和抵御差分故障攻击的方法,其特征在于:所述双重差分故障检测,具体过程如下:
(2.1)为检测在冗余加密中是否存在故障注入,在冗余加密模块中增加一个检测模块,用于消息认证码检测;
(2.2)在冗余加密前,冗余加密模块先采用哈希函数根据密钥K计算E'的明文P的消息认证码MAC,将MAC(P)发送给检测模块,由检测模块接收并保存MAC(P);冗余加密模块再将明文P与MAC(P)合并在一起记为x作为输入,进行冗余加密;
(2.3)检测模块从冗余加密模块获取进行冗余加密后的输入数据x',并对输入数据x'进行数据分离,由于不确定原始的明文信息P是否已经发生改变,将所分离的明文信息记为P',采用哈希函数和密钥K计算P'的MAC值,记为MAC(P');
(2.4)检测模块判断MAC(P)值与MAC(P')值是否一致,若两者相同,转(2.5);若两者不同,转(2.6);
(2.5)若MAC(P)=MAC(P'),表明冗余加密模块中信息P没有被篡改,没有被注入故障,从而进行正常的加密,在去除消息认证码后,输出冗余加密的密文C'=E'K(P),转(2.7);
(2.6)若MAC(P)≠MAC(P'),表明冗余加密模块中信息P被篡改,冗余加密模块中有故障注入,将存在故障注入的明文信息记为P',输出冗余加密的密文C'=E'K(P'),转(2.11);
(2.7)将原始加密密文C=EK(P)和冗余加密密文C'=E'K(P)进行异或,得出密文差分值C为原始密文,C'为冗余密文;
(2.8)判断Δ是否为0,若Δ=0,转(2.9);若Δ≠0,转(2.10);
(2.9)若Δ=0,说明原始加密算法E中也没有被注入故障,结束检测;
(2.10)若Δ≠0,说明原始加密算法E中被注入了故障,转(2.15);
(2.11)将原始加密密文C=EK(P)和冗余加密密文C'=E'K(P')进行异或,得出密文差分值
(2.12)判断Δ是否为0,若Δ=0,转(2.13);若Δ≠0,转(2.14);
(2.13)若Δ=0,说明原始加密算法E中被注入了与冗余加密算法E'相同的故障,即检测到双重故障,结束检测;
(2.14)若Δ≠0,说明原始加密算法E中没有被注入故障,故障只在冗余加密模块E'中存在;
(2.15)定位故障源及防护的操作,结束检测。
4.根据权利要求1所述的检测和抵御差分故障攻击的方法,其特征在于:所述定位故障源及防护,具体过程如下:
(3.1)设加密算法E的总轮数为r轮,从高往低依次检测加密算法E的每一轮,设置检测的轮数为i,i=r‑1;(3.2)计算第i轮的密文差分值 其中,Ci为原始加密算法E第i轮的加密密文,Ci'为冗余加密算法E'第i轮的加密密文;
(3.3)判断Δi是否为0,若Δi=0,转(3.4);若Δi≠0,转(3.5);
(3.4)若Δi=0,表明所注入的故障在第i+1轮,转(3.7);
(3.5)若Δi≠0,为防止攻击者获取密文差分值Δi进行差分故障攻击,将第i轮的密文感染值 输出并保存,其中,Ci为原始加密算法E第i轮正确加密的密文,Z(·)为感染函数,Δi为第i轮的密文差分值,αi和βi分别为第i轮的两个不同的随机值,i表示检测的轮数为第i轮;
(3.6)令i=i‑1,转(3.2);
(3.7)根据第i+1轮的密文差分值Δi+1的值进行比特查询,找到Δi+1中不为0的比特位n,即为加密算法E中被注入故障的比特位,确定定位结果;
(3.8)输出定位结果,即故障位于第i+1轮的第n个比特位;
(3.9)为避免攻击者获取进行故障注入后的密文差分值Δi+1,使用随机数和感染函数对Δi+1进行隐藏,输出第i+1轮的密文感染值 其中,Ci+1为原始加密算法E第i+1轮正确加密的密文,Z(·)为感染函数,Δi+1为原始加密算法E和冗余加密算法E'在第i+1轮的密文差分值,αi+1和βi+1分别为第i+1轮的两个不同的随机值,针对被隐藏后输出的密文感染值,攻击者将无法进行差分故障攻击,结束定位过程。