一种抗侧信道分析的大数相减方法

文档序号:10660583阅读:297来源:国知局
一种抗侧信道分析的大数相减方法
【专利摘要】本发明公开了一种抗侧信道分析的大数相减方法,涉及智能卡安全领域,包括对被减数和减数的原数据按同一规则随机分段,并在每两段之间和原数据前、后分别添加随机长度的随机数,然后对添加随机数后的被减数与减数进行大数相减操作,得到相减结果后去除添加的随机数,恢复被减数与减数真实的相减结果。本发明对减数和被减数进行随机分段,并在两段之间以及原数据的前、后分别添加随机长度的随机数,而且对添加的各段随机数的头尾两个字节的值进行限制,再进行通常的大数相减操作,最后恢复出真实的相减结果。由于其运行时分段随机,填充随机数长度随机,从而阻止了借位攻击同时也阻止了各种以获取指数为目标的攻击方法。
【专利说明】
一种抗侧信道分析的大数相减方法
技术领域
[0001]本发明涉及智能卡安全领域,具体涉及一种抗侧信道分析的大数相减方法。
【背景技术】
[0002]智能卡的应用日益广泛,其安全问题显得更加重要,尤其是在金融应用领域。智能卡除了面临传统的密码学攻击外,还面临侧信道攻击的威胁。侧信道攻击的主要方法之一就是能耗分析,如差分能耗分析,相关能耗分析,模板攻击等。
[0003]RSA公钥加密算法是应用广泛的公钥算法,可以用于数据加密解密或签名验签。在侧信道安全领域,在做解密运算时需要对私钥的模幂运算过程m = Cd modN进行防护,以抗侧信道攻击去获得d。为此,人们提出了多种防护方案,其中一种方法如下:为了求取m先计算temp = cd—^ modN,然后计算m = tempXcr modN,其中r是小于d的正随机数,以此抵抗各种以获取指数为目标的攻击方法。然而该方案的防护方法中d-r的运算却是不安全的,容易遭受借位攻击方法的进攻。

【发明内容】

[0004]针对现有技术中存在的缺陷,本发明的目的在于提供一种抗侧信道分析的大数相减方法,用于提高d-r运算的安全性。
[0005]为达到以上目的,本发明采取的技术方案是:一种抗侧信道分析的大数相减方法:对被减数和减数的原数据按同一规则随机分段,并在每两段之间和原数据前、后分别添加随机长度的随机数,然后对添加随机数后的被减数与减数进行大数相减操作,得到相减结果后去除添加的随机数,恢复被减数与减数真实的相减结果。
[0006]在上述技术方案的基础上,其步骤包括:
[0007]SI,对被减数和减数的原数据按同一规则随机分段;
[0008]S2,在被减数和减数的每两段之间和原数据前、后分别添加随机长度的随机数;
[0009]S3,对添加的每段随机数首字节进行处理以保证被减数添加的每个随机数的首字节的数值大于减数对应位置添加的随机数的首字节的数值,并对每段随机数的尾字节进行相同处理;
[0010]S4,对添加随机数后的被减数与减数进行大数相减操作,得到待处理的相减结果;
[0011]S5,对待处理的相减结果进行修正,并从待处理的相减结果中去除添加的随机数,得出被减数与减数真实的相减结果。
[0012]在上述技术方案的基础上,步骤SI步骤如下:
[0013]SlOl,设置被减数分段规则中每段的最大长度和最大分段数;
[0014]S102,在上述最大长度范围内任选一个数值作为分段的实际长度对被减数进行分段,不断重复上述操作直至各段实际长度之和大于或等于被减数原数据长度,或者直至实际分段数大于或等于最大分段数;
[0015]S103,调整分段后最后一段的数据长度,使各段实际长度之和等于被减数和减数的原数据长度,调整后最后一段的数据长度作为其实际长度;
[0016]S104,按照被减数分段时的各段实际长度和实际段数对减数进行分段。
[0017]在上述技术方案的基础上,步骤S2步骤如下:
[0018]S201,设置添加随机数的随机数最大长度;
[0019]S202,在被减数和减数的每两段之间和原数据前、后分别添加随机数,在上述随机数最大长度范围内任选一个数值作为每段添加的随机数的实际长度。
[0020]在上述技术方案的基础上,步骤S3步骤如下:
[0021]S301,判断被减数添加的每个随机数的首字节的数值是否大于减数对应位置添加的随机数的首字节的数值,若不大于,则进入步骤S302;若大于,则进入步骤S303;
[0022]S302,将减数里添加的随机数的首字节多次减去被减数对应位置添加的随机数的首字节,直至减数里该首字节的数值小于被减数里对应位置首字节的值为止;
[0023]S303,判断被减数添加的每个随机数的尾字节的数值是否大于减数对应位置添加的随机数的尾字节的数值,若不大于,则进入步骤S304;若大于,则进入步骤S305;
[0024]S304,将减数里添加的随机数的尾字节多次减去被减数对应位置添加的随机数的尾字节,直至减数里该尾字节的数值小于被减数里对应位置尾字节的值为止;
[0025]S305,随机数添加完成。
[0026]在上述技术方案的基础上,步骤S5步骤如下:
[0027]S501,判断待处理结果中每段添加的随机数的尾字节对应的数值是否等于该段被减数中随机数尾字节与减数中随机数尾字节单独相减的数值;若否,则进入步骤S502;若是,则进入步骤S503;
[0028]S502,对于所有随机数的尾字节对应的待处理结果中的数值不等于该段被减数中随机数尾字节与减数中随机数尾字节单独相减的数值的随机数,对该随机数的前一字节的数值进行修正:将待处理结果中该随机数的前一字节的数值减去I作为此字节真实值;
[0029]S503,从待处理的相减结果中去除添加的随机数字节,即得被减数与减数真实的相减结果。
[0030]与现有技术相比,本发明的优点在于:
[0031]本发明对减数和被减数进行随机分段,并在两段之间以及原数据的前、后分别添加随机长度的随机数,而且对添加的各段随机数的头尾两个字节的值进行限制,然后再进行通常的大数相减操作,得到相减结果后恢复出真实的相减结果。由于其运行时分段随机,填充随机数长度随机,使得借位攻击所依赖的条件不再成立,即无法统计固定的私钥在减去不同随机数时出现的借位情况,从而阻止了借位攻击同时也阻止了各种以获取指数为目标的攻击方法,从而保证RSA公钥加密算法的抗侧信道安全。
【附图说明】
[0032]图1为本发明实施例中抗侧信道分析的大数相减方法的流程示意图;
[0033]图2为本发明实施例中抗侧信道分析的大数相减方法的步骤SI流程示意图;
[0034]图3为本发明实施例中抗侧信道分析的大数相减方法的步骤S2流程示意图;
[0035]图4为本发明实施例中抗侧信道分析的大数相减方法的步骤S3流程示意图;
[0036]图5为本发明实施例中抗侧信道分析的大数相减方法的步骤S5流程示意图。
【具体实施方式】
[0037]以下结合附图及实施例对本发明作进一步详细说明。
[0038]参见图1所示,本发明实施例提供一种抗侧信道分析的大数相减方法,对被减数和减数的原数据按同一规则随机分段,并在每两段之间和原数据前、后分别添加随机长度的随机数,然后对添加随机数后的被减数与减数进行大数相减操作,得到相减结果后去除添加的随机数,恢复被减数与减数真实的相减结果。
[0039]参见图1所示,其步骤包括:
[0040]SI,对被减数和减数的原数据按同一规则随机分段;
[0041]S2,在被减数和减数的每两段之间和原数据前、后分别添加随机长度的随机数;
[0042]S3,对添加的每段随机数首字节进行处理以保证被减数添加的每个随机数的首字节的数值大于减数对应位置添加的随机数的首字节的数值,并对每段随机数的尾字节进行相同处理;
[0043]S4,对添加随机数后的被减数与减数进行大数相减操作,得到待处理的相减结果;
[0044]S5,对待处理的相减结果进行修正,并从待处理的相减结果中去除添加的随机数,得出被减数与减数真实的相减结果。
[0045]步骤SI步骤如下:
[0046]SlOl,设置被减数分段规则中每段的最大长度和最大分段数;
[0047]S102,在上述最大长度范围内任选一个数值作为分段的实际长度对被减数进行分段,不断重复上述操作直至各段实际长度之和大于或等于被减数原数据长度或者实际分段数大于或等于最大分段数;
[0048]S103,调整分段后最后一段的数据长度,使各段实际长度之和等于被减数和减数的原数据长度,调整后最后一段的数据长度作为其实际长度;
[0049]S104,按照被减数分段时的各段实际长度和实际段数对减数进行分段。
[0050]例如,设被减数和减数长度为length= 32字节,设被减数每段的最大长度为16,设最大分段数为32。在0-16范围内,任选一个数值作为分段的实际长度对被减数进行分段,不断重复上述操作直至各段实际长度之和大于或等于被减数原数据长度或者实际分段数大于或等于最大分段数,分成如下长度的各段:第I段:2字节,第2段:9字节,第3段:5字节,第4段:13字节,第5段:5字节。将最后一段的长度调整为3字节。按照被减数分段时的各段实际长度和实际段数对减数进行分段。
[0051 ] 步骤S2步骤如下:
[0052]S201,设置添加随机数的随机数最大长度;
[0053]S202,在被减数和减数的每两段之间和原数据前、后分别添加随机数,在上述随机数最大长度范围内任选一个数值作为每段添加的随机数的实际长度。
[0054]假设在上述实例中,允许将被减数和减数的原数据填充至原长度的4倍大小,则此处可以取每段随机数长度上限为32*(4-1)/5?19字节,即每段随机数长度不超过19个字节。在1-19范围内取6个随机数,作为每段添加的随机数的长度。例如:第I个随机数:6字节,第2个随机数:5字节,第3个随机数:1字节,第4个随机数:3字节,第5个随机数:4字节,第6个随机数:2字节。
[0055]步骤S3步骤如下:
[0056]S301,判断被减数添加的每个随机数的首字节的数值是否大于减数对应位置添加的随机数的首字节的数值,若不大于,则进入步骤S302后再进入步骤S303;若大于,则直接进入步骤S303;
[0057]S302,将减数里添加的随机数的首字节多次减去被减数对应位置添加的随机数的首字节,直至减数里该首字节的数值小于被减数里对应位置首字节的值为止;
[0058]S303,判断被减数添加的每个随机数的尾字节的数值是否大于减数对应位置添加的随机数的尾字节的数值,若不大于,则进入步骤S304后再进入步骤S305;若大于,则直接进入步骤S305;
[0059]S304,将减数里添加的随机数的尾字节多次减去被减数对应位置添加的随机数的尾字节,直至减数里该尾字节的数值小于被减数里对应位置尾字节的值为止;
[0060]S305,完成添加的随机数处理。
[0061]假设在上述实例中,原数据中被减数某两段间插入了3字节随机数rl、r2、r3,减数相同位置插入了 3字节随机数r4、r5、r6。判断rl是否大于r4,若不大于,则将r4多次减去rl,直至r4〈rI ;判断r3是否大于r6,若不大于,则将r6多次减去r3,直至r6〈r3。
[0062]步骤S5步骤如下:
[0063]S501,判断待处理结果中每段添加的随机数的尾字节对应的数值为是否等于该段被减数中随机数尾字节与减数中随机数尾字节单独相减的数值;若否,则进入步骤S502;若是,则进入步骤S503;
[0064]S502,对于所有随机数的尾字节对应的待处理结果中的数值不等于该段被减数中随机数尾字节与减数中随机数尾字节单独相减的数值的随机数,对该随机数的前一字节的数值进行修正:将待处理结果中该随机数的前一字节的数值减去I作为此字节真实值;
[0065]S503,从待处理的相减结果中去除添加的随机数字节,即得被减数与减数真实的相减结果。
[0066]假设在上述实例中,设原数据中被减数某两段间插入了3字节随机数rl、r2、r3,减数相同位置插入了 3字节随机数r4、r5、r6,设该随机数前一字节为a,该随机数后一字节为b,设大数相减的待处理结果中r3和r6对应的字节的数值为N:若N=r3-r6,说明大数相减时b没有向随机数尾字节借位,a即为随机数前一字节真实值,从待处理的相减结果中去除添加的随机数字节,即得被减数与减数真实的相减结果;若N#r3-r6,说明大数相减时b曾向随机数尾字节借位,则将a-Ι作为随机数前一字节真实值,再从待处理的相减结果中去除添加的随机数字节,即得被减数与减数真实的相减结果。
[0067]本发明对减数和被减数进行随机分段,并在两段之间以及原数据的前、后分别添加随机长度的随机数,而且对添加的各段随机数的头尾两个字节的值进行限制,然后再进行通常的大数相减操作,最后恢复出真实的相减结果。由于其运行时分段随机,填充随机数长度随机,使得借位攻击所依赖的条件不再成立,即无法统计固定的私钥在减去不同随机数时出现的借位情况,从而阻止了借位攻击同时也阻止了各种以获取指数为目标的攻击方法,从而保证RSA公钥加密算法的抗侧信道安全。
[0068]本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
【主权项】
1.一种抗侧信道分析的大数相减方法,其特征在于: 对被减数和减数的原数据按同一规则随机分段,并在每两段之间和原数据前、后分别添加随机长度的随机数,然后对添加随机数后的被减数与减数进行大数相减操作,得到相减结果后去除添加的随机数,恢复被减数与减数真实的相减结果。2.如权利要求1所述的一种抗侧信道分析的大数相减方法,其特征在于,其步骤包括: SI,对被减数和减数的原数据按同一规则随机分段; S2,在被减数和减数的每两段之间和原数据前、后分别添加随机长度的随机数; S3,对添加的每段随机数首字节进行处理以保证被减数添加的每个随机数的首字节的数值大于减数对应位置添加的随机数的首字节的数值,并对每段随机数的尾字节进行相同处理; S4,对添加随机数后的被减数与减数进行大数相减操作,得到待处理的相减结果; S5,对待处理的相减结果进行修正,并从待处理的相减结果中去除添加的随机数,得出被减数与减数真实的相减结果。3.如权利要求1所述的一种抗侧信道分析的大数相减方法,其特征在于:步骤SI步骤如下: SlOl,设置被减数分段规则中每段的最大长度和最大分段数; S102,在上述最大长度范围内任选一个数值作为分段的实际长度对被减数进行分段,不断重复上述操作直至各段实际长度之和大于或等于被减数原数据长度,或者直至实际分段数大于或等于最大分段数; S103,调整分段后最后一段的数据长度,使各段实际长度之和等于被减数和减数的原数据长度,调整后最后一段的数据长度作为其实际长度; S104,按照被减数分段时的各段实际长度和实际段数对减数进行分段。4.如权利要求1所述的一种抗侧信道分析的大数相减方法,其特征在于:步骤S2步骤如下: S201,设置添加随机数的随机数最大长度; S202,在被减数和减数的每两段之间和原数据前、后分别添加随机数,在上述随机数最大长度范围内任选一个数值作为每段添加的随机数的实际长度。5.如权利要求1所述的一种抗侧信道分析的大数相减方法,其特征在于:步骤S3步骤如下: S301,判断被减数添加的每个随机数的首字节的数值是否大于减数对应位置添加的随机数的首字节的数值,若不大于,则进入步骤S302;若大于,则进入步骤S303; S302,将减数里添加的随机数的首字节多次减去被减数对应位置添加的随机数的首字节,直至减数里该首字节的数值小于被减数里对应位置首字节的值为止; S303,判断被减数添加的每个随机数的尾字节的数值是否大于减数对应位置添加的随机数的尾字节的数值,若不大于,则进入步骤S304;若大于,则进入步骤S305; S304,将减数里添加的随机数的尾字节多次减去被减数对应位置添加的随机数的尾字节,直至减数里该尾字节的数值小于被减数里对应位置尾字节的值为止; S305,随机数添加完成。6.如权利要求1所述的一种抗侧信道分析的大数相减方法,其特征在于:步骤S5步骤如下: S501,判断待处理结果中每段添加的随机数的尾字节对应的数值是否等于该段被减数中随机数尾字节与减数中随机数尾字节单独相减的数值;若否,则进入步骤S502;若是,则进入步骤S503; S502,对于所有随机数的尾字节对应的待处理结果中的数值不等于该段被减数中随机数尾字节与减数中随机数尾字节单独相减的数值的随机数,对该随机数的前一字节的数值进行修正:将待处理结果中该随机数的前一字节的数值减去I作为此字节真实值; S503,从待处理的相减结果中去除添加的随机数字节,即得被减数与减数真实的相减结果。
【文档编号】H04L9/08GK106027236SQ201610338796
【公开日】2016年10月12日
【申请日】2016年5月20日
【发明人】熊传光, 胡瑞璟, 丁峰, 孟庆树, 何述超
【申请人】武汉天喻信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1