1.一种SM4防故障攻击方法,其特征在于,所述方法包括:将主密钥在两个主密钥寄存器中各存储一次;对所述两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥;将所述两个轮密钥一一对应存储到两个轮密钥寄存器中;使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击。
2.根据权利要求1所述的SM4防故障攻击方法,其特征在于,所述两个主密钥寄存器包括第一主密钥寄存器和第二主密钥寄存器;所述两个轮密钥包括第一轮密钥和第二轮密钥;所述两个轮密钥寄存器包括存储所述第一轮密钥的第一轮密钥寄存器和存储所述第二轮密钥的第二轮密钥寄存器。
3.根据权利要求2所述的SM4防故障攻击方法,其特征在于,所述对两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥,包括:在第一个分组数据进行第一次运算前对所述第一主密钥寄存器中的主密钥进行密钥编排,得到所述第一轮密钥;在第一个分组数据进行第二次运算前对所述第二主密钥寄存器中的主密钥进行密钥编排,得到所述第二轮密钥。
4.根据权利要求2所述的SM4防故障攻击方法,其特征在于,所述对两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥,包括:在第一个分组数据进行第一次运算时对所述第一主密钥寄存器中的主密钥进行密钥编排,得到所述第一轮密钥;在第一个分组数据进行第二次运算时对所述第二主密钥寄存器中的主密钥进行密钥编排,得到所述第二轮密钥。
5.根据权利要求3或4所述的SM4防故障攻击方法,其特征在于,所述使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击,包括:使用所述第一轮密钥寄存器中的所述第一轮密钥对输入的分组数据进行正运算,得到正运算结果;使用所述第二轮密钥寄存器中的所述第二轮密钥以及所述正运算结果进行逆运算,得到逆运算结果;比较所述逆运算结果与正运算输入的所述分组数据是否相同:若是,则判定未受到故障攻击,并输出正运算结果,同时返回加密成功信息;若否,则判定受到故障攻击,返回加密错误提示。
6.根据权利要求3或4所述的SM4防故障攻击方法,其特征在于,所述使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击,包括:使用所述第一轮密钥寄存器中的所述第一轮密钥对输入的分组数据进行第一次正运算,得到第一正运算结果;使用所述第二轮密钥寄存器中的所述第二轮密钥对输入的分组数据进行第二次正运算,得到第二正运算结果;比较所述第一正运算结果与所述第二正运算结果是否相同:若是,则判定未受到故障攻击,输出任一正运算结果,同时返回加密成功信息;若否,则判定受到故障攻击,返回加密错误提示。
7.一种SM4防故障攻击装置,其特征在于,所述装置包括:两个主密钥寄存器,各用于存储一次主密钥;两个轮密钥寄存器,用于一一对应存储所述两个主密钥寄存器中存储的所述主密钥进行相同的密钥编排得到的两个轮密钥;防故障攻击模块,用于使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击。