【发明授权】抵御旁路攻击的系统_四川长虹电器股份有限公司_201811494689.2 

申请/专利权人:四川长虹电器股份有限公司

申请日:2018-12-07

发明/设计人:张福健

公开(公告)日:2020-10-23

代理机构:成都虹桥专利事务所(普通合伙)

公开(公告)号:CN109257395B

代理人:陈立志

主分类号:H04L29/06(20060101)

地址:621000 四川省绵阳市高新区绵兴东路35号

分类号:H04L29/06(20060101);H04L9/30(20060101);H04L9/00(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.10.23#授权;2019.02.22#实质审查的生效;2019.01.22#公开

摘要:本发明涉及计算机软件信息安全技术领域,公开了一种抵御旁路攻击的系统,用以防止攻击者从功耗曲线内获取密码运算信息,并给予其伪造的密码算法运算特征。本发明,包括运算模块、功耗控制模块和运算混淆模块,运算模块为功耗控制模块提供输入,功耗控制模块为运算混淆模块提供输入;系统在算法运行时,由功耗控制模块协调运算模块和混淆模块,使系统产生的算法功耗曲线为运算模块和混淆模块共同运算产生的伪功耗曲线。本发明适用于旁路攻击防御。

主权项:1.抵御旁路攻击的系统,其特征在于,包括运算模块、功耗控制模块和运算混淆模块,运算模块为功耗控制模块提供输入,功耗控制模块为运算混淆模块提供输入;功耗控制模块预置有在其芯片各种密钥情况下的功耗曲线和密钥比特对芯片功耗影响的对照表;系统在算法运行时,由功耗控制模块协调运算模块和混淆模块,使系统产生的算法功耗曲线为运算模块和混淆模块共同运算产生的伪功耗曲线,产生伪功耗曲线的算法流程如下:S1:在功耗控制模块得到应用密钥后,根据预置的功耗曲线和对照表计算出模拟功耗曲线;S2:根据模拟功耗曲线和选择的伪功耗曲线得到混淆模块应产生的功耗曲线,从而计算出混淆模块的执行参数;其中,所选择的伪功耗曲线为与真实功耗曲线相近或相同的功耗曲线,若步骤S2选择的伪功耗曲线为与真实功耗曲线不相近或不相同,则需对伪功耗曲线进行压缩或扩展,以使得伪功耗曲线与真实功耗曲线相近或相同;S3:功耗控制模块将执行参数传递给混淆模块后,同时运行运算模块和混淆模块直至运算结束。

全文数据:抵御旁路攻击的系统技术领域本发明涉及计算机软件信息安全技术领域,特别涉及抵御旁路攻击的系统。背景技术随着网络技术的快速发展,网络信息技术已深入我们的生活,在带来便利的同时,也造成了一定的风险。我们在信息传输时对信息往往要做加密处理,增加敏感信息的机密性。信息的安全性取决于加密密钥的安全存储能力。一旦密钥被获取,信息就能被第三方得到。针对密钥的生成、存储及更换密码学家设计了很多安全体系来保护。从明密文对和穷举攻击来看,攻破类似于AES、ECC算法所需的时间以百年计。但密码算法在芯片内运行的功耗却暴露了其密码特征和密钥的相关信息,给攻击者带来了快捷的破译密钥的方法。利用密码运算的功耗值,攻击者可以在短时间内推断出密码算法和使用的密钥数据。发明内容本发明要解决的技术问题是:提出一种抵御旁路攻击的系统,用以防止攻击者从功耗曲线内获取密码运算信息,并给予其伪造的密码算法运算特征。为解决上述问题,本发明采用的技术方案是:抵御旁路攻击的系统,包括运算模块、功耗控制模块和运算混淆模块,运算模块为功耗控制模块提供输入,功耗控制模块为运算混淆模块提供输入;功耗控制模块预置有在其芯片各种密钥情况下的功耗曲线和密钥比特对芯片功耗影响的对照表;系统在算法运行时,由功耗控制模块协调运算模块和混淆模块,使系统产生的算法功耗曲线为运算模块和混淆模块共同运算产生的伪功耗曲线,产生伪功耗曲线的算法流程如下:S1:在功耗控制模块得到应用密钥后,根据预置的功耗曲线和对照表计算出模拟功耗曲线;S2:根据模拟功耗曲线和选择的伪功耗曲线得到混淆模块应产生的功耗曲线,从而计算出混淆模块的执行参数;S3:功耗控制模块将执行参数传递给混淆模块后,同时运行运算模块和混淆模块直至运算结束。如果攻击者发现功耗曲线不符合算法特征,例如使用ECC的曲线伪造AES功耗曲线,那么就看不到多轮加密,很容易猜测到密码芯片伪造了功耗曲线,并不会给攻击者带来损失,起不到欺骗的目的。因此步骤S2选择的伪功耗曲线可以尽量与真实功耗曲线相近或相同的功耗曲线。若步骤S2选择的伪功耗曲线为与真实功耗曲线不相近或不相同,则需对伪功耗曲线进行压缩或扩展,以使得伪功耗曲线与真实功耗曲线相近或相同。进一步的,产生伪功耗曲线时,应该随机选取密钥,且伪密钥值的汉明重量接近于真实密钥汉明重量。相同汉明重量时,计算复杂性相近,运算时间相近,因此更具有欺骗性。本发明的有益效果是:1、能够有效的抵抗功耗分析,欺骗攻击者给予其伪功耗特征;2、不改动现有代码的前提下即可实现,不影响代码冗余度和可读性;无论软件实现的代码还是硬件实现的逻辑都可以通过该设计防止旁路攻击和欺骗攻击者,该设计的优点是和算法工程弱相关,不必修改算法工程源码,算法开发工程师不必刻意制定规则来避免功耗分析。附图说明图1为本发明的系统运行状态图;图2为本发明的算法流程。具体实施方式本发明主要在原有运算模块的基础上增加两个模块,来保证密码芯片输出的功耗为伪功耗,从而在不修改运算模块代码实现的前提下防止旁路攻击和欺骗攻击者,提高算法芯片的安全能力。新增的两个模块分别是功耗控制模块和运算混淆模块。运算模块为功耗控制模块提供输入,功耗控制模块为运算混淆模块提供输入。运算模块版本确定后,功耗控制模块在初次运行时,需要确定两个要素:1、伪算法功耗曲线的确定,通过功耗采集,我们可以获取大量的功耗曲线,伪算法功耗曲线的选取有两个原则:选择相近或相同算法,即使用算法为分组算法,那么伪算法尽量也选择分组算法,算法越相近其产生的功耗曲线差异性越小,否则要经过曲线的压缩或扩展。现代密码体系是唯密钥安全的,算法的选择会增加攻击者破译难度,但更多情况下攻击者已知晓密码算法类型,所不知道的仅是密钥,如果攻击者发现功耗曲线不符合算法特征,例如使用ECC的曲线伪造AES功耗曲线,那么就看不到多轮加密,很容易猜测到密码芯片伪造了功耗曲线,并不会给攻击者带来损失,起不到欺骗的目的。随机选取密钥且尽量保证伪密钥值的汉明重量接近于真实密钥汉明重量,功耗曲线在最小单元内的差别取决于密钥流中比特位的数值,所以理论上在密钥具有相同汉明重量时,计算复杂性相近,运算时间相近。2、运算混淆模块内含多种基本运算单元。以含有大数加和大数乘运算为例,其中大数加运算功耗记为Padd,大数乘运算功耗记为Pmul,根据t时刻需产生的功耗值,可以得出在t时刻阶段,需进行的大数乘运算的次数n=PsPmul,需要进行大数加运算的次数在实际使用过程中,由功耗控制模块协调运算模块和混淆模块,使其产生的曲线为伪算法功耗曲线。旁路攻击者得到的功耗曲线为运算模块和混淆模块共同运算产生的功耗,该功耗值曲线中的密码特征是伪造的,所以推断出的密钥只可能是错误的。所以,该方法可以防御旁路攻击并且欺骗攻击者。关于伪功耗曲线某点值的选取可以按照不同的精确度给出不一样的运算组合,精确度的选取作为混淆模块的输入,并决定混淆模块的基本单元。假设其基本单元为{P0,P1,P2…Pn},那么,对于运算模块产生的功耗Pt都存在{a0,a1,a2…an}使得Ps=Pt'+Pmax-Pt=a0P0+a1P1+…anPn,其中ai为自然数,0≤i≤n。本发明在具体实施例时,如图1和2所示,其产生伪功耗曲线的具体过程如下:S1、功耗控制模块在出厂前预置其芯片在各种密钥情况下的功耗曲线和密钥比特对芯片功耗影响的对照表;S2:在功耗控制模块得到应用密钥后,根据预置的功耗曲线和对照表计算出模拟功耗曲线;S3:根据模拟功耗曲线和选择的伪功耗曲线得到混淆模块应产生的功耗曲线,从而计算出混淆模块的执行参数;S4:功耗控制模块将执行参数传递给混淆模块后,同时运行运算模块和混淆模块直至运算结束。

权利要求:1.抵御旁路攻击的系统,其特征在于,包括运算模块、功耗控制模块和运算混淆模块,运算模块为功耗控制模块提供输入,功耗控制模块为运算混淆模块提供输入;功耗控制模块预置有在其芯片各种密钥情况下的功耗曲线和密钥比特对芯片功耗影响的对照表;系统在算法运行时,由功耗控制模块协调运算模块和混淆模块,使系统产生的算法功耗曲线为运算模块和混淆模块共同运算产生的伪功耗曲线,产生伪功耗曲线的算法流程如下:S1:在功耗控制模块得到应用密钥后,根据预置的功耗曲线和对照表计算出模拟功耗曲线;S2:根据模拟功耗曲线和选择的伪功耗曲线得到混淆模块应产生的功耗曲线,从而计算出混淆模块的执行参数;S3:功耗控制模块将执行参数传递给混淆模块后,同时运行运算模块和混淆模块直至运算结束。2.如权利要求1所述的抵御旁路攻击的系统,其特征在于,步骤S2选择的伪功耗曲线为与真实功耗曲线相近或相同的功耗曲线。3.如权利要求1所述的抵御旁路攻击的系统,其特征在于,若步骤S2选择的伪功耗曲线为与真实功耗曲线不相近或不相同,则需对伪功耗曲线进行压缩或扩展,以使得伪功耗曲线与真实功耗曲线相近或相同。4.如权利要求2或3所述的抵御旁路攻击的系统,其特征在于,产生伪功耗曲线时,随机选取密钥,且伪密钥值的汉明重量接近于真实密钥汉明重量。

百度查询: 四川长虹电器股份有限公司 抵御旁路攻击的系统