1.一种检测RIPEMD-160算法抵御差分故障攻击的方法,其特征在于,包括以下步骤:
步骤1:随机生成要处理的明文消息X;
步骤2:利用RIPEMD-160算法处理明文消息X,RIPEMD-160算法对消息按512比特长的分组为单位进行处理,总共由5轮运算组成,每一轮都对缓存区进行16步迭代运算,输出为160比特的杂凑值,将得到的正确输出Y和错误输出Y*保存于160比特的缓存区中,其中,缓存区用5个32比特长的寄存器A,B,C,D,E表示;
步骤3:计算正确输出Y和错误输出Y*的差分值ΔY,令ΔY=(ΔY0,ΔY1,ΔY2,ΔY3,ΔY4),保存于5个32比特长的寄存器A,B,C,D,E表示的缓存区中,ΔY0,ΔY1,ΔY2,ΔY3,和ΔY4均为32比特,分别代表缓存区中最后一轮输出结果的差分;
步骤4:分析差分值ΔY,判断RIPEMD-160算法是否受到差分故障攻击的影响,并推导出故障导入的位置,分析其有效性,令Ai,Bi,Ci,Di,Ei分别为第i步迭代运算缓存区的寄存器A,B,C,D,E中的值,i∈[1,80],则具体方法为:
(1)有效故障:
I)当ΔY0、ΔY1、ΔY2、ΔY3≠0时,故障导入的位置为C77;
11)当ΔY1、ΔY2、ΔY3、ΔY4≠0时,故障导入的位置为B77;
III)当ΔY0、ΔY1、ΔY2、ΔY3、ΔY4中均不为0时,故障导入的位置为B76以及B76之前的任何位置;
(2)无效故障:
I)当ΔY=0时,说明导入的故障值等于当前位置上的原值,相当于没有导入故障,故障无效;
II)当ΔY≠0时:
(i)当ΔY0、ΔY1、ΔY2、ΔY3、ΔY4中有且仅有一个不为0时:
a)当ΔY0≠0时,故障导入的位置为A80;
b)当ΔY1≠0时,故障导入的位置为B80或E80;
c)当ΔY2≠0时,故障导入的位置为C80;
d)当ΔY3≠0时,故障导入的位置为D80;
e)当ΔY4≠0时,故障导入的位置为E80。
(ii)当ΔY0、ΔY1、ΔY2、ΔY3、ΔY4中只有两个同时不为0时,
a)当ΔY1≠0且ΔY0≠0时,故障导入的位置为E79;
b)当ΔY1≠0且ΔY2≠0时,故障导入的位置为B79;
c)当ΔY1≠0且ΔY3≠0时,故障导入的位置为C79;
d)当ΔY1≠0且ΔY4≠0时,故障导入的位置为D79;
(iii)当ΔY0、ΔY1、ΔY2、ΔY3、ΔY4中只有三个同时不为0时,
a)当ΔY0、ΔY1、ΔY2≠0时,故障导入的位置为D78;
b)当ΔY1、ΔY2、ΔY3≠0时,故障导入的位置为B78;
c)当ΔY1、ΔY2、ΔY4≠0时,故障导入的位置为C78。
2.如权利要求1所述的一种检测RIPEMD-160算法抵御差分故障攻击的方法,其特征在于,在所述步骤2中,在用RIPEMD-160算法对明文消息X处理的过程中,使用两种实验环境控制从而得到正确输出Y和错误输出Y*,具体步骤如下:
步骤2.1:输入明文消息X,保证实验环境不受其他任何不相关事物的干扰,让RIPEMD-160算法能够正确无误地进行,从而得到正确输出Y;
步骤2.2:重新输入明文消息X,再次用RIPEMD-160算法对其加密处理,同时借助其他物理设备改变运行环境,诱导产生故障来干扰RIPEMD-160算法的处理过程,从而得到错误输出Y*。
3.如权利要求2所述的一种检测RIPEMD-160算法抵御差分故障攻击的方法,其特征在于,在所述步骤2.2中,改变运行环境诱导产生故障的方法包括:改变时钟、电压、湿度、辐射、压力、光和涡电流,将故障随机地导入RIPEMD-160算法处理过程,以得到错误输出Y*。