一种故障攻击检测电路及故障攻击防护方法与流程

文档序号:15566949发布日期:2018-09-29 03:33阅读:267来源:国知局

本发明涉及密码算法领域,具体涉及一种基于轮级冗余原理设计的防护电路,用于抵抗piccolo加密算法的故障攻击。



背景技术:

智能卡等密码设备在电信、金融、企业安全和政府等各种行业部门中得以广泛应用,其安全的重要性不言而喻。而piccolo算法作为一种轻量级分组密码,则广泛用于便携式智能卡等密码设备。

在攻击安全芯片的方法当中,故障攻击对密码设备存在更大的威胁。故障攻击主要通过有效的注入手段在电路中诱导寄存器或线发生错误,使密码芯片中的寄存器或线在加解密过程中产生随机错误,某些输出比特从原来的0变成l或l变成0。对安全芯片输出的密文经过数学统计和分析,最终攻击获取到密钥信息,这种攻击方式对硬件和软件实现的密码算法都具有威胁性。由于故障攻击的种类具有多样性,严重威胁密码芯片的安全,因此亟需对安全芯片进行故障自检及故障防护的技术进行研究。

而现有技术中对安全芯片大多使用基于piccolo算法的轮函数模块实现,具体参见图2和图3,但现有技术中不存在对安全芯片中的基于piccolo算法的轮函数模块进行攻击检测及故障防护的技术,因此,无法对基于piccolo算法的轮函数模块进行攻击检测及故障防护。故,以上问题亟需解决。



技术实现要素:

本发明是为了解决现有技术中无法对安全芯片中基于piccolo算法的轮函数模块进行攻击检测及故障防护的问题,本发明提供了一种故障攻击检测电路及故障攻击防护方法。

故障攻击检测电路,该检测电路用于对基于piccolo算法的轮函数模块进行故障攻击检测,所述基于piccolo算法的轮函数模块包括两个f函数模块、两个异或运算器和轮置换rp函数模块;

检测电路包括5个检测模块分别为检测模块f1至f5;

检测模块f1用于对轮函数模块中的第一个f函数模块及该模块所在的第[0:15]位数据传输支路进行攻击检测;

检测模块f2用于对轮函数模块中的第一个异或运算器及该异或运算器所在的第[16:31]位数据传输支路进行攻击检测;

检测模块f3用于对轮函数模块中的第二个f函数模块及该模块所在的第[32:47]位数据传输支路进行攻击检测;

检测模块f4用于对轮函数模块中的第二个异或运算器及该异或运算器所在的第[48:63]位数据传输支路进行攻击检测;

检测模块f5用于对轮函数模块中的轮置换rp函数模块进行攻击检测。

优选的是,

检测模块f1包括校验寄存器x0、存储寄存器x0、1号异或运算器和1号f′函数模块;

校验寄存器x0的数据输出端与1号异或运算器的第一输入端连接;

存储寄存器x0的输出端与第一个f函数模块的输入端和轮置换rp函数模块的第一输入端同时连接;

第一个f函数模块的输出端与1号f′函数模块的输入端连接,1号f′函数模块的输出端与1号异或运算器的第二输入端连接;

1号异或运算器输出的数据作为检测模块f1的输出数据;

检测模块f2包括校验寄存器x1、存储寄存器x1、2号异或运算器;

校验寄存器x1的数据输出端与2号异或运算器的第一输入端连接,2号异或运算器的第二输入端与第一个f函数模块的输出端连接;

存储寄存器x1的输出端与轮函数模块中的第一个异或运算器的第一输入端连接,轮函数模块中的第一个异或运算器的第二输入端与第一个f函数模块的输出端连接;

2号异或运算器的第三输入端和轮函数模块中的第一个异或运算器的第三输入端均用于接收密钥信号rk2i;其中,rk2i表示第i轮密钥信号,i为整数;

轮函数模块中的第一个异或运算器的输出端与2号异或运算器的第四输入端和轮置换rp函数模块的第二输入端同时连接;

2号异或运算器输出的数据作为检测模块f2的输出数据;

检测模块f3包括校验寄存器x2、存储寄存器x2、3号异或运算器和2号f′函数模块;

校验寄存器x2的数据输出端与3号异或运算器的第一输入端连接;

存储寄存器x2的输出端与第二个f函数模块的输入端和轮置换rp函数模块的第三输入端同时连接;

第二个f函数模块的输出端与2号f′函数模块的输入端连接,2号f′函数模块的输出端与3号异或运算器的第二输入端连接;

3号异或运算器输出的数据作为检测模块f3的输出数据;

检测模块f4包括校验寄存器x3、存储寄存器x3、4号异或运算器;

校验寄存器x3的数据输出端与4号异或运算器的第一输入端连接,4号异或运算器的第二输入端与第二个f函数模块的输出端连接;

存储寄存器x3的输出端与轮函数模块中的第二个异或运算器的第一输入端连接,轮函数模块中的第二个异或运算器的第二输入端与第二个f函数模块的输出端连接;

轮函数模块中的第二个异或运算器的第三输入端和4号异或运算器的第三输入端均用于接收密钥信号rk2i+1;其中,rk2i+1表示第i轮密钥信号;

轮函数模块中的第二个异或运算器的输出端与4号异或运算器的第四输入端和轮置换rp函数模块的第四输入端同时连接;

4号异或运算器输出的数据作为检测模块f4的输出数据;

检测模块f5包括5号异或运算器;

5号异或运算器的第一输入端与轮置换rp函数模块的第一输入端连接;

5号异或运算器的第二输入端与轮置换rp函数模块的第二输入端连接;

5号异或运算器的第三输入端与轮置换rp函数模块的第三输入端连接;

5号异或运算器的第四输入端与轮置换rp函数模块的第四输入端连接;

5号异或运算器的第五输入端与轮置换rp函数模块的第一输出端、校验寄存器x0的数据输入端和存储寄存器x0的数据输入端同时连接;

5号异或运算器的第六输入端与轮置换rp函数模块的第二输出端、校验寄存器x1的数据输入端和存储寄存器x1的数据输入端同时连接;

5号异或运算器的第七输入端与轮置换rp函数模块的第三输出端、校验寄存器x2的数据输入端和存储寄存器x2的数据输入端同时连接;

5号异或运算器的第八输入端与轮置换rp函数模块的第四输出端、校验寄存器x3的数据输入端和存储寄存器x3的数据输入端同时连接;

5号异或运算器输出的数据作为检测模块f5的输出数据。

一种故障攻击防护方法,该方法是基于所述的检测电路实现的,且检测电路共对初始数据进行25轮加密运算;故障攻击防护方法包括如下步骤:

步骤一,检测电路进行第一轮加密运算时;

校验寄存器x0和存储寄存器x0均用于接收初始数据中的第[0:15]位数据;

校验寄存器x1和存储寄存器x1均用于接收初始数据中的第[16:31]位数据;

校验寄存器x2和存储寄存器x2均用于接收初始数据中的第[32:47]位数据;

校验寄存器x3和存储寄存器x3均用于接收初始数据中的第[48:63]位数据;

步骤二,对检测模块f1至f5输出的16位数据进行按位异或处理,若任意一位的数值为1时,停止加密运算,执行步骤四;若16位数据中每一位的数值均为0,则执行步骤三;

步骤三,i=i+1,判断i是否大于25,

结果为是,将上一轮加密运算中轮置换rp函数模块输入的64位数据作为加密后的密文输出,结束;

结果为否,将上一轮置换rp函数模块输出的第[0:15]位数据x0_next(wire)、第[16:31]位数据x1_next(wire)、第[32:47]位数据x2_next(wire)和第[48:63]位数据x3_next(wire)分别作为下一轮加密运算中检测模块f1、检测模块f2、检测模块f3和检测模块f4的输入,执行步骤二;

i的初值为1;

步骤四,轮置换rp函数模块输出64位均为0的密文,检测电路完成对初始数据的加密运算。

本发明带来的有益效果是,本发明主要对由基于piccolo算法的轮函数模块构成的智能卡设备的故障攻击进行检测,本发明所述对基于piccolo算法的轮函数模块进行攻击检测的电路的设计及对基于piccolo算法的轮函数模块进行故障防护的方法设计的核心是检测使用冗余技术构成的检测电路中是否存在寄存器或线性值翻转跳变,当出现寄存器或线性值翻转跳变时(即:出现错误时),停止加密并输出无效密文,使攻击方无法从无效密文中获得正确的密钥,从而可提高故障攻击的难度。

本发明的技术核心实质是在硬件电路中增加攻击检测电路,对基于piccolo算法的轮函数模块构成的智能卡设备进行攻击检测和故障防护,其基于piccolo算法的轮函数模块为被检测的对象,其安全性决定整体密码算法的安全能力,本发明为piccolo轻量级密码算法芯片的安全提供保障。

附图说明

图1为本发明所述故障攻击检测电路的逻辑框图;x0_f(wire)表示存储寄存器x0与轮置换rp函数模块之间线路上传输的第[0:15]位数据,x1_f(wire)表示存储寄存器x1与轮置换rp函数模块之间线路上传输的第[16:31]位数据,x2_f(wire)表示存储寄存器x2与轮置换rp函数模块之间线路上传输的第[32:47]位数据,x3_f(wire)表示存储寄存器x3与轮置换rp函数模块之间线路上传输的第[48:63]位数据;

图2为现有技术中的基于piccolo算法的轮函数模块的结构示意图;

图3为现有技术中的基于piccolo算法的轮函数模块进行加密运算时的逻辑框图。

具体实施方式

具体实施方式一:参见图1说明本实施方式,本实施方式所述故障攻击检测电路,该检测电路用于对基于piccolo算法的轮函数模块进行故障攻击检测,所述基于piccolo算法的轮函数模块包括两个f函数模块、两个异或运算器和轮置换rp函数模块;

检测电路包括5个检测模块分别为检测模块f1至f5;

检测模块f1用于对轮函数模块中的第一个f函数模块及该模块所在的第[0:15]位数据传输支路进行攻击检测;

检测模块f2用于对轮函数模块中的第一个异或运算器及该异或运算器所在的第[16:31]位数据传输支路进行攻击检测;

检测模块f3用于对轮函数模块中的第二个f函数模块及该模块所在的第[32:47]位数据传输支路进行攻击检测;

检测模块f4用于对轮函数模块中的第二个异或运算器及该异或运算器所在的第[48:63]位数据传输支路进行攻击检测;

检测模块f5用于对轮函数模块中的轮置换rp函数模块进行攻击检测。

本实施方式中,基于piccolo算法的轮函数模块可对64位数据进行25轮加密,外来攻击主要对轮函数模块所在线路中的寄存器或线路进行攻击,寄存器或线路中任意一方因受到攻击,都会使其相应的传输数据产生跳变或翻转,本发明可对基于piccolo算法的轮函数模块所在支路上的寄存器及其该模块中的所有线路进行攻击检测及防护。

本发明提出的是一种基于轮级冗余的防护故障攻击的方案,冗余的实质就是在硬件电路中增加检错模块,而应用于轮级是因为轮函数模块在整个算法中是至关重要的,其任何缺陷都会影响到整体的安全性。如果基于piccolo算法的轮函数模块所在线路中的寄存器在轮加密过程中发生的跳变或翻转,都能通过相应的检测模块被检测到,此时,立刻停止加密运算,并输出无效密文,就可提高故障攻击的难度。如果基于piccolo算法的轮函数模块所在线路上传输的数据在轮加密过程中发生的跳变或翻转,都能通过相应的检测模块被检测到,此时,立刻停止加密运算,并输出无效密文,就可提高故障攻击的难度。

本发明通过5个检测模块对基于piccolo算法的轮函数模块中的寄存器及线型数据进行冗余电路检测。

f函数模块的功能为通过非线性映射关系对数据进行保护,达到加密数据的效果;

轮置换rp函数模块的功能为实现线性调整数据顺序,以达到加密数据的效果;rp的英文全称为roundpermutation。

具体实施方式二:参见图1说明本实施方式,本实施方式与具体实施方式一所述的故障攻击检测电路的区别在于,

检测模块f1包括校验寄存器x0、存储寄存器x0、1号异或运算器和1号f′函数模块;

校验寄存器x0的数据输出端与1号异或运算器的第一输入端连接;

存储寄存器x0的输出端与第一个f函数模块的输入端和轮置换rp函数模块的第一输入端同时连接;

第一个f函数模块的输出端与1号f′函数模块的输入端连接,1号f′函数模块的输出端与1号异或运算器的第二输入端连接;

1号异或运算器输出的数据作为检测模块f1的输出数据;

检测模块f2包括校验寄存器x1、存储寄存器x1、2号异或运算器;

校验寄存器x1的数据输出端与2号异或运算器的第一输入端连接,2号异或运算器的第二输入端与第一个f函数模块的输出端连接;

存储寄存器x1的输出端与轮函数模块中的第一个异或运算器的第一输入端连接,轮函数模块中的第一个异或运算器的第二输入端与第一个f函数模块的输出端连接;

2号异或运算器的第三输入端和轮函数模块中的第一个异或运算器的第三输入端均用于接收密钥信号rk2i;其中,rk2i表示第i轮密钥信号,i为整数;

轮函数模块中的第一个异或运算器的输出端与2号异或运算器的第四输入端和轮置换rp函数模块的第二输入端同时连接;

2号异或运算器输出的数据作为检测模块f2的输出数据;

检测模块f3包括校验寄存器x2、存储寄存器x2、3号异或运算器和2号f′函数模块;

校验寄存器x2的数据输出端与3号异或运算器的第一输入端连接;

存储寄存器x2的输出端与第二个f函数模块的输入端和轮置换rp函数模块的第三输入端同时连接;

第二个f函数模块的输出端与2号f′函数模块的输入端连接,2号f′函数模块的输出端与3号异或运算器的第二输入端连接;

3号异或运算器输出的数据作为检测模块f3的输出数据;

检测模块f4包括校验寄存器x3、存储寄存器x3、4号异或运算器;

校验寄存器x3的数据输出端与4号异或运算器的第一输入端连接,4号异或运算器的第二输入端与第二个f函数模块的输出端连接;

存储寄存器x3的输出端与轮函数模块中的第二个异或运算器的第一输入端连接,轮函数模块中的第二个异或运算器的第二输入端与第二个f函数模块的输出端连接;

轮函数模块中的第二个异或运算器的第三输入端和4号异或运算器的第三输入端均用于接收密钥信号rk2i+1;其中,rk2i+1表示第i轮密钥信号;

轮函数模块中的第二个异或运算器的输出端与4号异或运算器的第四输入端和轮置换rp函数模块的第四输入端同时连接;

4号异或运算器输出的数据作为检测模块f4的输出数据;

检测模块f5包括5号异或运算器;

5号异或运算器的第一输入端与轮置换rp函数模块的第一输入端连接;

5号异或运算器的第二输入端与轮置换rp函数模块的第二输入端连接;

5号异或运算器的第三输入端与轮置换rp函数模块的第三输入端连接;

5号异或运算器的第四输入端与轮置换rp函数模块的第四输入端连接;

5号异或运算器的第五输入端与轮置换rp函数模块的第一输出端、校验寄存器x0的数据输入端和存储寄存器x0的数据输入端同时连接;

5号异或运算器的第六输入端与轮置换rp函数模块的第二输出端、校验寄存器x1的数据输入端和存储寄存器x1的数据输入端同时连接;

5号异或运算器的第七输入端与轮置换rp函数模块的第三输出端、校验寄存器x2的数据输入端和存储寄存器x2的数据输入端同时连接;

5号异或运算器的第八输入端与轮置换rp函数模块的第四输出端、校验寄存器x3的数据输入端和存储寄存器x3的数据输入端同时连接;

5号异或运算器输出的数据作为检测模块f5的输出数据。

原理说明:攻击者人为改变芯片外部环境或诱导芯片内部区域发生改变,会使芯片内部的寄存器或线发生值的跳变,即产生故障。

寄存器故障检测主要检测电路中所有的寄存器是否发生故障,通过判断检测模块f1至f5中的异或运算器的16位输出是否全为0,若全为0,证明电路中无故障;若任意一位的数值为1,则证明电路中有故障。

寄存器故障检测:芯片外部环境的改变,导致芯片内部寄存器产生跳变,使其发生故障,如芯片中的一个存储寄存器x0发生故障,则存储寄存器x0的16位输出数据发生改变,即第一个f函数模块的输入数据发生改变,经过第一个f函数模块和1号f′函数模块,使得1号异或运算器的第二输入端上的数据发生改变,此时1号异或运算器两个输入端数据不相同,检测模块f1输出的16位数据不全为0,证明电路中存在故障;电路中无故障时,存储寄存器x0和校验寄存器x0的输出数据相同,即1号异或运算器两个输入端数据相同,检测模块f1输出的16位数据全为0,证明电路中不存在故障。

线型故障检测主要检测电路中所有连接线是否发生故障,通过判断检测模块f1至f5的异或运算器的16位输出是否全为0,若全为0,证明电路中无故障;若任意一位的数值为1,则证明电路中有故障。

线型故障检测:芯片外部环境的改变,导致芯片内部连接线产生跳变,使其发生故障,如轮置换rp函数模块的第一输出端上的数据发生故障,即x0_next数据发生改变,此时经过5号异或运算器运算,得到检测模块f1输出的16位数据不全为0,证明电路中存在故障。

每个检测模块中的校验寄存器和存储寄存器均可进行相互检验。

f′函数为f函数的逆函数,f′函数模块用于实现f函数的逆变换求解,完成存储寄存器数据的恢复,从而达到检测校验数据的目的。

具体实施方式三:参见图1说明本实施方式,本实施方式所述一种故障攻击防护方法,该方法是基于具体实施方式二所述的检测电路实现的,且检测电路共对初始数据进行25轮加密运算;故障攻击防护方法包括如下步骤:

步骤一,检测电路进行第一轮加密运算时;

校验寄存器x0和存储寄存器x0均用于接收初始数据中的第[0:15]位数据;

校验寄存器x1和存储寄存器x1均用于接收初始数据中的第[16:31]位数据;

校验寄存器x2和存储寄存器x2均用于接收初始数据中的第[32:47]位数据;

校验寄存器x3和存储寄存器x3均用于接收初始数据中的第[48:63]位数据;

步骤二,对检测模块f1至f5输出的16位数据进行按位异或处理,若任意一位的数值为1时,停止加密运算,执行步骤四;若16位数据中每一位的数值均为0,则执行步骤三;

步骤三,i=i+1,判断i是否大于25,

结果为是,将上一轮加密运算中轮置换rp函数模块输入的64位数据作为加密后的密文输出,结束;

结果为否,将上一轮置换rp函数模块输出的第[0:15]位数据x0_next(wire)、第[16:31]位数据x1_next(wire)、第[32:47]位数据x2_next(wire)和第[48:63]位数据x3_next(wire)分别作为下一轮加密运算中检测模块f1、检测模块f2、检测模块f3和检测模块f4的输入,执行步骤二;

i的初值为1;

步骤四,轮置换rp函数模块输出64位均为0的密文,检测电路完成对初始数据的加密运算。

本实施方式中,当出现寄存器或线型值翻转跳变时(即:出现错误时),停止加密并输出无效密文,使攻击方无法从无效密文中获得正确的密钥,从而可提高故障攻击的难度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1