法律状态公告日
法律状态信息
法律状态
2017-08-01
授权
授权
2014-12-17
实质审查的生效 IPC(主分类):H04L9/32 申请日:20140604
实质审查的生效
2014-11-19
公开
公开
技术领域
本发明主要应用于信息安全技术领域,具体涉及检测MD4散列函数是否抵 御到差分故障攻击的方法,主要应用于MD4散列函数的安全性防御与评估。
背景技术
在实际应用领域中,散列函数在电子签名、消息认证、身份识别上有着广泛 的商业应用,传统的单纯从散列函数算法的数学结构分析研究已经不足以应对当 前复杂的互联网环境。
旁路攻击作为散列函数分析研究的重要方式,是指绕过对散列函数的繁琐分 析,利用散列函数算法的硬件实现的运算中泄露的信息,如执行时间、功耗、电 磁辐射等,结合统计理论快速的破解散列函数系统。作为旁路攻击的一种重要且 有效攻击方式,故障攻击凭借着出色的攻击能力和简单的软件实现等特点已经引 起国内外的广泛关注。因此散列函数在实际应用中是否受到差分故障攻击直接影 响着相应的商业应用产品的安全性。
发明内容
本发明所要解决的技术问题是现有检测技术不能检测MD4散列函数是否受 到差分故障攻击,无法确保MD4散列函数的安全性。
在差分故障攻击过程中,利用输出差分ΔY推导得到输入消息M,而导入故 障的位置,对输出差分ΔY有着重要的影响,只有在有效位置导入故障得到的输 出差分ΔY才能推导出输入消息M。如果故障导入在无效位置,则MD4散列函 数对差分故障攻击是安全的。
为了解决上述问题,基于以上思路,本发明提供了一种检测MD4散列函数 抵御差分故障攻击的方法,其特征在于,包括以下步骤:
步骤1):将随机生成MD4散列函数的输入消息,保存在M中;
步骤2):使用MD4散列函数处理输入消息M,得到正确输出结果Y;
步骤3):再次使用MD4散列函数对输入消息M进行处理,并在处理过程 中实施故障导入;得到故障导入后的错误输出结果Y*;
步骤4):基于所获取到的正确和错误输出结果,计算输出差分ΔY;
步骤5):根据输出差分值ΔY,确定MD4散列函数是否受到差分故障攻击 以及故障所导入的位置。
优选地,所述步骤3)的具体方法如下:
步骤i:将消息M做为MD4散列函数的输入;
步骤ii:在MD4散列函数处理M过程中,导入随机故障,影响MD4散列 函数的正常处理操作;
步骤iii:在导入故障后,记录MD4散列函数处理的输出结果Y*。
进一步地,所述步骤ii导入随机故障的具体方法为:
步骤a):分析MD4散列函数处理流程,找出有效故障的导入位置;
步骤b):在MD4散列函数处理过程中,利用电磁脉冲、激光辐射等手段, 导入随机故障;
步骤c):采用仿真技术模拟步骤b)所述电磁脉冲、激光辐射等导入故障手 段;
步骤d):记录输出结果,保存在Y*中。
更进一步地,所述步骤a)具体为:根据差分故障攻击原理以及MD4散列 函数处理流程,找出MD4散列函数中的有效故障的位置。
优选地,所述步骤4)的具体计算方法为:
对于获取的正确输出Y和错误输出Y*,计算输出差分值其中代表异或操作;
输出差分ΔY为128比特,将ΔY用(ΔY0,ΔY1,ΔY2,ΔY3)表示,其中 ΔY0,ΔY1,ΔY2和ΔY3均为32比特,即
优选地,所述步骤5)的具体检测判断的方法为:
(I)有效故障:若ΔY0、ΔY1和ΔY2≠0时,故障导入在γ46,当前导入故障为有 效故障;
(II)无效故障:
(1)当ΔY=0时,则导入的故障值和导入故障位置上正确值相同,导入位置为 任意位置;
(2)当ΔY≠0时:
(a)若(ΔY0,ΔY1,ΔY2,ΔY3)中只有一个不为0,
①若ΔY0≠0时,故障导入在α48;
②若ΔY1≠0时,故障导入在α47或者β48;
③若ΔY2≠0时,故障导入在γ48;
④若ΔY3≠0时,故障导入在ε48;
(b)若(ΔY0,ΔY1,ΔY2,ΔY3)有两个不为0,
①若ΔY0和ΔY1≠0时,故障导入在ε47;
②若ΔY1和ΔY2≠0时,故障导入在β47或者α46或者ε46;
③若ΔY1和ΔY3≠0时,故障导入在γ47;
(c)若(ΔY0,ΔY1,ΔY2,ΔY3)有三个不为0,
①若ΔY1、ΔY2和ΔY3≠0时,故障导入在β46或者α45或者γ45或者ε45;
(d)若(ΔY0,ΔY1,ΔY2,ΔY3)四个均不为0,故障导入在β45或β45之前任意位置。
根据最后得出的检测结果,确定MD4散列函数是否受到差分故障攻击,以 及故障所导入的位置。
本发明提供的检测MD4散列函数是否受到差分故障攻击的基本方法,将 MD4散列函数对差分故障攻击的抵御能力简化为对输出结果的判断,可以帮助 快速、准确的测评MD4散列函数相关产品的安全性,对散列函数及其相关安全 系统的防御和评估提供了更积极的意义和保障。
附图说明
图1为本发明的检测MD4散列函数模块是否受到差分故障攻击的方法的流 程图;
图2为差分故障攻击的的原理图;
图3为差分故障攻击中导入随机故障获得对应输出的基本配置图。
具体实施方式
为使本发明更明显易懂,兹以优选实施例,并配合附图作详细说明如下。
实施例
检测MD4散列函数模块是否受到差分故障攻击的方法,包括:
1)将随机生成MD4散列函数的输入消息,保存在M中;
2)使用MD4散列函数处理输入消息M,得到正确输出结果Y;
3)再次使用MD4散列函数对输入消息M进行处理,并在处理过程中实施 故障导入;得到故障导入后的输出结果Y*;
4)基于所获取到的正确和错误输出结果,计算输出差分ΔY;
5)根据输出差分值ΔY,确定MD4散列函数是否受到差分故障攻击以及故 障所导入的位置。
如图1所示,其具体的流程方法如下:
S101:随机生成输入消息M;
S102:MD4散列函数处理消息M,获取正确输出Y;
S103:在MD4处理过程中,实施故障导入,获取错误输出Y*;
S104:计算输出差分,即
S105:基于输出差分,确定MD4散列函数是否受到差分故障攻击以及故障 导入的位置;
其中步骤S103是通过故障导入,获取错误输出的过程,即实施差分故障攻 击的过程。其具体原理如图2所示,包括如下步骤:
a)确定有效故障位置。确定有效故障导入位置包含如下步骤:
从MD4散列函数处理过程中,观察到每一步都只针对模块β进行相应的处 理。根据图2所示,可以推导得β48为:
β48=(α47+f47(γ48,ε48,α48)+Ψ[R(47)]+λ47)<<<s[47],
对MD4算法的正确输出Y为:
Y=(Y0,Y1,Y2,Y3) =(α48+α0,β48+β0,γ48+γ0,ε48+ε0),
将已知的初始值(α0,β0,γ0,ε0)代入上述等式,可得最后一步的输出值为 (α48,β48,γ48,ε48)。
根据消息处理过程,得如下关系式:
β47=γ48,
γ47=ε48,
ε47=α48,
R(47)=15
以及
s[47]=15。
将上述式子代入β48的等式中,可推导得:
β48=(α47+f47(γ48,ε48,α48)+Ψ[R(47)]+λ47)<<<s[47]
观察可得,在上述等式中,只有两个未知量Ψ[R(47)]和α47。而最终的目的是 要恢复Ψ[R(47)]。若可以求得α47的值,则Ψ[R(47)]可以通过下述等式求解:
Ψ[R(47)]=((β48-γ48)<<<(32-s[47]))-α47-f47(β47,γ47,ε47)-λ47,
通过MD4处理过程可以得知α47=ε46。那么获得α47的值等同于求解ε46。可 知在倒数第2轮γ46导入故障,获得ε46,即可求得当前轮所使用的子消息Ψ[R(47)]。 因此有效故障位置为γ46。
b)在MD4散列函数处理过程中,利用电磁脉冲、激光辐射等手段,导入随 机故障;
c)采用仿真技术模拟步骤b)所述电磁脉冲、激光辐射等导入故障手段;
d)记录输出结果,保存在Y*中;
步骤d)记录输出结果,需要搭建一套记录输出的测量环境。
测量配置的主要部件包括:电磁脉冲设备,激光设备,加压设备和一台PC, 如图3所示,用PC输入消息以及记录输出值,根据PC记录的输出值,计算输 出差分。
具体检测判断的方法如下:
(I)有效故障:若ΔY0、ΔY1和ΔY2≠0时,故障导入在γ46,当前导入故障为有 效故障;
(II)无效故障:
(1)当ΔY=0时,则导入的故障值和导入故障位置上正确值相同,导入位置为 任意位置;
(2)当ΔY≠0时:
(a)若(ΔY0,ΔY1,ΔY2,ΔY3)中只有一个不为0,
①若ΔY0≠0时,故障导入在α48;
②若ΔY1≠0时,故障导入在α47或者β48;
③若ΔY2≠0时,故障导入在γ48;
④若ΔY3≠0时,故障导入在ε48;
(b)若(ΔY0,ΔY1,ΔY2,ΔY3)有两个不为0,
①若ΔY0和ΔY1≠0时,故障导入在ε47;
②若ΔY1和ΔY2≠0时,故障导入在β47或者α46或者ε46;
③若ΔY1和ΔY3≠0时,故障导入在γ47;
(c)若(ΔY0,ΔY1,ΔY2,ΔY3)有三个不为0,
①若ΔY1、ΔY2和ΔY3≠0时,故障导入在β46或者α45或者γ45或者ε45;
(d)若(ΔY0,ΔY1,ΔY2,ΔY3)四个均不为0,故障导入在β45或β45之前任意位置。
差分故障攻击过程依据上述检测判断的方法可知,当ΔY0、ΔY1和ΔY2≠0时, 故障导入在γ46为有效故障,其故障扩散影响如图2所示,此时导入故障对散列 函数模块构成威胁,即可通过差分故障攻击恢复出敏感信息。若导入故障为无效 故障则不会对该散列函数模块的安全性造成影响,通过我们的检测结论,不仅仅 可以确定散列函数模块在差分故障攻击下的安全性,同时也能部分的确定故障所 导入的位置。
尽管已经描述了本发明的具体实施例,但是本领域技术人员应当清楚,在不 脱离本发明实质的范围内,可以对上述方法进行各种修改或变形。
例如,更换表示符号,将MD4散列函数中对32比特长整数循环左移k位, 替换为等价形式的循环右移32-k位。
机译: 椭圆曲线指数可抵御差分故障攻击
机译: 椭圆曲线指数可抵御差分故障攻击
机译: 椭圆曲线指数可抵御差分故障攻击