一种基于SM3密码杂凑算法的抗旁路攻击方法

文档序号:33713906发布日期:2023-04-01 03:01阅读:83来源:国知局
一种基于SM3密码杂凑算法的抗旁路攻击方法
一种基于sm3密码杂凑算法的抗旁路攻击方法
技术领域
1.本发明涉及信息安全技术领域,特别涉及一种基于sm3密码杂凑算法的抗旁路攻击方法。


背景技术:

2.密码杂凑算法被广泛应用于数字签名和验证、消息认证码的生成和验证以及随机数的生成等方面,满足了多种密码应用的安全需求。其中,sm3密码算法是我国唯一的密码杂凑算法,应用较为广泛。
3.旁路攻击又称侧信道攻击,是指攻击者通过采集并分析加密设备运行过程中产生的各种泄漏的侧信道信息获取密文信息的方法,主要包括计时攻击、功耗攻击、电磁攻击、故障注入攻击等。
4.现有密码算法的防护是采用全掩码的方式进行防护,硬件资源消耗较大;并且没有针对运行过程中对其进行故障攻击的校验装置,对故障注入无法进行检测,有被攻击的风险。


技术实现要素:

5.为了解决上述技术问题,本发明提供一种硬件资源消耗小、安全可靠的基于sm3密码杂凑算法的抗旁路攻击方法。
6.本发明解决上述技术问题的技术方案是:一种基于sm3密码杂凑算法的抗旁路攻击方法,包括以下步骤:
7.步骤一:采用时间冗余的方式进行错误检测,防止加密过程中算法受到故障注入的攻击;
8.步骤二:利用随机掩码对第一个消息块进行掩码防护,防止侧信道信息的泄露。
9.上述基于sm3密码杂凑算法的抗旁路攻击方法,所述步骤一具体过程为:
10.1-1)通过设置两条相同的路径,分别为加密轮和冗余轮,把加密轮和冗余轮经过填充的明文消息m'按512比特都分成n个消息块,m'=b(0)b(1)
·····
b(n-1),b(0)为消息m'对消息的第一个分组,称为第1个消息块。对加密轮和冗余轮的第1个消息块引入不同的随机掩码值m1和m2,以防止在第1个消息摘要运算过程中受到同位置的同步故障注入;
11.1-2)第一个消息块摘要运算结束之后,加密轮、冗余轮分别用掩码修正值m1'、m2'进行解掩码,其中掩码修正值m1'、m2'分别为m1、m2经过摘要运算的输出,解掩码操作为掩码修正值与第一个消息块的输出进行异或操作;
12.1-3)将加密轮和冗余轮修正后的结果进行异或操作进行比较,若不一致算法遭受故障注入攻击,error信号拉高报警,若一致error信号为低电平信号,证明第一个消息块未遭受故障注入攻击,检测成功,允许进入下一个消息块进行摘要运算;
13.1-4)经m1'和m2'修正的中间变量作为下一个消息块的iv初始值继续进行后续的迭代压缩,将后续加密轮和冗余轮每一个消息块的输出都进行异或运算,直到完成所有的
摘要运算输出杂凑值1和杂凑值2,若error信号一直为低电平信号,证明算法未遭受故障注入攻击,反之结果不一致算法遭受故障注入攻击,error信号拉高报警;若某一时刻的error信号拉高,可知上一个消息块遭受到故障注入攻击。
14.上述基于sm3密码杂凑算法的抗旁路攻击方法,所述步骤二具体过程为:
15.每一个消息块的长度为512bit,随机数发生器产生512bit的随机掩码m与第1个消息块b(0)进行异或,异或的结果b'(0)经过消息拓展、迭代压缩后输出v'(1),掩码m经过消息拓展、迭代压缩后的输出为m_v'(1),即步骤一所述的掩码修正值m';将v'(1)与m_v'(1)进行异或输出v(1),作为下一个消息块的iv初始值进行迭代压缩;通过对第1个消息块引入随机掩码值进行掩码防护,避免运行过程中出现真实的中间值。
16.本发明的有益效果在于:本发明提出的抗旁路攻击方法中,为抵抗故障注入的攻击采用时间冗余的方式进行错误检测,引入冗余轮的设计,对其加密轮和冗余轮第一个消息块修正后的结果以及后续每一个消息块的输出都进行异或运算,若加密轮与冗余轮的输出一致error信号为低电平信号,证明算法未遭受故障注入攻击,反之,结果不一致算法遭受故障注入攻击,error信号拉高报警;为防止侧信道信息泄露,针对加密轮和冗余轮消息明文的第1个消息块引入了不同的随机掩码值进行防护,并对其输出进行掩码修正后的结果作为下一个消息块的iv初始值,避免了第1个消息块摘要运算过程中受到同位置的同步故障注入,由于对消息不是采用全掩码防护的方式,而是对第1个消息块进行掩码防护,不仅防止了侧信道信息的泄露还减小了硬件资源的消耗。
附图说明
17.图1为本发明的流程图。
18.图2为本发明实施例中对消息的第1个消息块b(0)进行掩码防护的流程图。
具体实施方式
19.下面结合附图和实施例对本发明专利做进一步的说明。
20.一种基于sm3密码杂凑算法的抗旁路攻击方法,包括以下步骤:
21.步骤一:采用时间冗余的方式进行错误检测,防止加密过程中算法受到故障注入的攻击。
22.步骤二具体过程为:
23.1-1)如图1所示,通过设置两条相同的路径,分别为加密轮和冗余轮,把加密轮和冗余轮经过填充的明文消息m'按512比特都分成n个消息块,m'=b(0)b(1)
·····
b(n-1),b(0)为消息m'对消息的第一个分组,称为第1个消息块;对加密轮和冗余轮的第1个消息块引入不同的随机掩码值m1和m2,以防止在第1个消息摘要运算过程中受到同位置的同步故障注入。
24.1-2)第一个消息块摘要运算结束之后,加密轮、冗余轮分别用掩码修正值m1'、m2'进行解掩码,其中掩码修正值m1'、m2'分别为m1、m2经过摘要运算的输出,解掩码操作为掩码修正值与第一个消息块的输出进行异或操作;
25.1-3)将加密轮和冗余轮修正后的结果进行异或操作进行比较,若不一致算法遭受故障注入攻击,error信号拉高报警,若一致error信号为低电平信号,证明第一个消息块未
遭受故障注入攻击,检测成功,允许进入下一个消息块进行摘要运算;
26.1-4)经m1'和m2'修正的中间变量作为下一个消息块的iv初始值继续进行后续的迭代压缩,这里的iv初始值是上一个消息块的摘要输出,然后作为下一个消息块的iv初值;将后续加密轮和冗余轮每一个消息块的输出都进行异或运算,直到完成所有的摘要运算输出杂凑值1和杂凑值2,若error信号一直为低电平信号,证明算法未遭受故障注入攻击,反之结果不一致算法遭受故障注入攻击,error信号拉高报警;若某一时刻的error信号拉高,可知上一个消息块遭受到故障注入攻击。
27.步骤二:利用随机掩码对第一个消息块进行掩码防护,防止侧信道信息的泄露。
28.步骤二具体过程为:
29.如图2所示,每一个消息块的长度为512bit,随机数发生器产生512bit的随机掩码m与第1个消息块b(0)进行异或,异或的结果b'(0)经过消息拓展、迭代压缩后输出v'(1),掩码m经过消息拓展、迭代压缩后的输出为m_v'(1),即步骤一所述的掩码修正值m';将v'(1)与m_v'(1)进行异或输出v(1),作为下一个消息块的iv初始值进行迭代压缩;通过对第1个消息块引入随机掩码值进行掩码防护,避免运行过程中出现真实的中间值,有效防止侧信道信息的泄露,保证消息的安全性。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1