CN104378196A - 加解密算法的安全执行方法和装置 - Google Patents

加解密算法的安全执行方法和装置 Download PDF

Info

Publication number
CN104378196A
CN104378196A CN201410642409.3A CN201410642409A CN104378196A CN 104378196 A CN104378196 A CN 104378196A CN 201410642409 A CN201410642409 A CN 201410642409A CN 104378196 A CN104378196 A CN 104378196A
Authority
CN
China
Prior art keywords
encryption
decryption
wheel
genuine
false
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410642409.3A
Other languages
English (en)
Inventor
谭洪贺
张斌
程家锐
王晓轩
韩扬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing KT Micro Ltd
Original Assignee
Beijing KT Micro Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing KT Micro Ltd filed Critical Beijing KT Micro Ltd
Priority to CN201410642409.3A priority Critical patent/CN104378196A/zh
Publication of CN104378196A publication Critical patent/CN104378196A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明涉及一种加解密算法的安全执行方法和装置。所述方法包括:设置n+m轮加解密轮计算的计算顺序,其中,所述n+m轮加解密轮计算包括n轮真的加解密轮计算和m轮假的加解密轮计算;根据所述计算顺序,执行所述n+m轮加解密轮计算;输出所述n轮真的加解密轮计算的结果作为所述加解密算法的结果;其中,n和m为自然数,每部分连续的假的加解密轮计算的轮数为大于或等于0并且小于或等于m的随机数。本发明可以增加攻击者对齐所有功耗曲线的难度,从而提高攻击者攻击成功的难度。

Description

加解密算法的安全执行方法和装置
技术领域
本发明涉及微电子领域,尤其涉及一种加解密算法的安全执行方法和装置。
背景技术
加解密算法在实现时,必须要考虑其安全性,必须要能够抵抗各种旁路攻击技术,尤其是差分功耗分析(Differential Power Attack,简称:DPA)攻击。
对安全芯片中的加解密算法进行DPA攻击时,首先要采集大量的加解密算法运行时的功耗曲线,然后通过分析和计算加解密算法在某一时刻的中间值,辅以适当的猜测,对所采集的功耗曲线进行分类统计和数学处理,攻击者可以攻击得出安全芯片中与加解密算法相关的重要秘密信息,即密钥。具体地,攻击者一般首先通过攻击加解密算法的第一轮计算过程,可以得到第一轮计算的轮密钥,然后根据第一轮的轮密钥再攻击第二轮计算过程,依次类推得到全部密钥,从而完成1次加解密计算。或者,攻击者也可以先攻击最后一轮,得到最后一轮的轮密钥,然后再攻击倒数第二轮。
但是,此种攻击方法有一个关键点,就是要将所采集得到的所有功耗曲线在时间轴上对齐。为了攻击第一轮,要将所采集到的所有第一轮计算过程在时间轴上对齐,为了攻击最后一轮,要将所采集到的所有最后一轮计算过程在时间轴上对齐,这样对所有功耗曲线进行的分类和统计分析才有意义。
如果能增加攻击者对齐所有功耗曲线的难度,或者降低功耗曲线的对齐比率,就可以增加攻击者攻击成功的难度。
发明内容
本发明提供一种加解密算法的安全执行方法和装置,用以增加攻击者对齐所有功耗曲线的难度,从而提高攻击者攻击成功的难度。
本发明提供一种加解密算法的安全执行方法,包括:
设置n+m轮加解密轮计算的计算顺序,其中,所述n+m轮加解密轮计算包括n轮真的加解密轮计算和m轮假的加解密轮计算;
根据所述计算顺序,执行所述n+m轮加解密轮计算;
输出所述n轮真的加解密轮计算的结果作为所述加解密算法的结果;
其中,n和m为自然数,每部分连续的假的加解密轮计算的轮数为大于或等于0并且小于或等于m的随机数。
本发明还提供一种加解密算法的安全执行装置,包括:
控制模块,用于设置n+m轮加解密轮计算的计算顺序,其中,所述n+m轮加解密轮计算包括n轮真的加解密轮计算和m轮假的加解密轮计算;
加解密模块,用于在所述控制模块的控制下,根据所述计算顺序,执行所述n+m轮加解密轮计算,输出所述n轮真的加解密轮计算的结果作为所述加解密算法的结果;
其中,n和m为自然数,每部分连续的假的加解密轮计算的轮数为大于或等于0并且小于或等于m的随机数。
本发明在包括n轮真的加解密轮计算的加解密算法的执行中插入了m轮假的加解密轮计算,加解密算法变成了n+m轮,这样,当攻击者使用DPA攻击加解密算法时,攻击者会从所采集得到的功耗曲线上发现n+m轮计算,而不是n轮,而且攻击者无法根据功耗曲线来区分n+m轮计算中哪些是真的哪些是假的,因此,攻击者只能将所有采集到的功耗曲线的n+m轮计算进行对齐。但是,由于插入了假的加解密轮计算,大大增加了攻击者对齐真的n轮功耗曲线的难度,提高了攻击者攻击成功的难度。此外,该方法将n轮真的加解密轮计算的结果作为加解密算法的结果,因此,对计算结果并没有影响。
附图说明
图1为本发明加解密算法的安全执行方法第一实施例的流程示意图;
图2为本发明加解密算法的安全执行方法第二实施例的流程示意图;
图3为本发明加解密算法的安全执行方法第二实施例中一个具体实例的时序图;
图4为本发明加解密算法的安全执行装置第一实施例的结构示意图;
图5为本发明加解密算法的安全执行装置第二实施例的结构示意图。
具体实施方式
下面结合说明书附图和具体实施方式对本发明作进一步的描述。
如图1所示,为本发明加解密算法的安全执行方法第一实施例的流程示意图,该实施例可以包括:
步骤11、设置n+m轮加解密轮计算的计算顺序,其中,n+m轮加解密轮计算包括n轮真的加解密轮计算和m轮假的加解密轮计算;
其中,m轮假的加解密轮计算具体在什么位置进行可以是设置为固定的位置,也可以设置为随机分配的位置;
步骤12、根据该计算顺序,执行n+m轮加解密轮计算;
其中,n和m为自然数,每部分连续的假的加解密轮计算的轮数为大于或等于0并且小于或等于m的随机数。n表示加解密算法标准规定的完成加解密轮计算所需的真的加解密轮计算的轮数,n为常数,采用的加解密算法不同,加解密轮计算的轮数n也会不同。例如:对于DES算法,n等于16,对于3DES算法,n等于48,对于AES算法,根据模式不同,n可以等于10、12或14;m表示在加解密算法执行过程中插入的假的加解密轮计算的轮数。例如:m=4,将4轮假的加解密计算分为两个部分,分别插入n轮真的加解密计算中的两个位置,这两个部分的长度可以为如下5种可能的组合中的一种:(4,0),(1,3),(2,2),(3,1),和(0,4)。另外一种极端的情况是,将m轮假的加解密轮计算划分为n+1部分,插入n轮真的加解密轮计算中,这样就是,轮换着进行假的加解密轮计算和真的加解密轮计算,每进行一轮真的加解密轮计算之前,先进行一部分假的加解密轮计算,最后一轮真的加解密轮计算之后再进行一部分假的加解密轮计算。
步骤13、输出n轮真的加解密轮计算的结果作为该加解密算法的结果。
具体地,在步骤12中,在n轮真的加解密轮计算的哪些位置插入假的加解密轮计算是预先确定好的,例如:n轮真的加解密轮计算之前、之间和之后的任意位置都可选,每个位置插入的假的加解密轮计算的轮数为随机产生的,并且各个位置插入的加解密轮计算的轮数总共为m轮。
在本实施例中,加解密算法指的是加密算法和/或解密算法。
本实施例在包括n轮真的加解密轮计算的加解密算法的执行中插入了m轮假的加解密轮计算,加解密算法变成了n+m轮,这样,当攻击者使用DPA攻击加解密算法时,攻击者会从所采集得到的功耗曲线上发现n+m轮计算,而不是n轮,而且攻击者无法根据功耗曲线来区分n+m轮计算中哪些是真的哪些是假的,因此,攻击者只能将所有采集到的功耗曲线的n+m轮计算进行对齐。但是,由于插入了假的加解密轮计算,大大增加了攻击者对齐真的n轮功耗曲线的难度,提高了攻击者攻击成功的难度。此外,该方法将n轮真的加解密轮计算的结果作为加解密算法的结果,因此,对计算结果并没有影响。
可选地,在本实施例中,每次执行加密算法的计算时,m可以不同,也可以相同。可选地,为了增加攻击的难度,m可以为随机数,即在每次执行加解密轮计算时,需要生成一个随机数m,这样进一步提高了加解密算法的安全性。
可选地,在本实施例中,每轮假的加解密轮计算具体可以为采用假的加解密轮计算参数进行加解密。可选地,假的加解密轮计算参数可以是假的加解密输入数据和假的轮密钥;或者,假的加解密输入数据和真的轮密钥;或者,真的加解密输入数据和假的轮密钥。例如:可以使用假的轮密钥来对假的明文输入进行一轮假的加密轮计算,也可以使用假的轮密钥来对真的明文输入进行一轮假的加密轮计算,或者使用真的轮密钥来对假的明文输入进行一轮假的加密轮计算。其中,假的轮密钥可以是固定的常数,也可以是随机数,也可以通过真的轮密钥的映射得到。假的加解密输入数据可以是固定的常数,也可以是随机数,也可以通过真的加解密输入数据的映射得到。需要说明的是,当加解密算法具体是加密算法时,加解密输入数据具体是明文,当加解密算法具体是解密算法时,加解密输入数据具体是密文。
可选地,为了增加攻击难度,每轮假的加解密轮计算采用的假的加解密轮计算参数可以不同。即,每轮假的加解密轮计算采用的假的轮密钥可以不同;和/或,每轮假的加解密轮计算采用的假的加解密输入数据可以不同。
如图2所示,为本发明加解密算法的安全执行方法第二实施例的流程示意图,在上一实施例的基础上,由于第一轮加解密轮计算和最后一轮加解密轮计算的安全性对整个加解密算法的安全性影响很大,所以本实施例重点保护第一轮加解密轮计算和最后一轮加解密轮计算,在第一轮真的加解密轮计算之前和最后一轮真的加解密轮计算之后插入假的加解密轮计算。
在图1所示结构示意图的基础上,步骤11具体可以为如下步骤:
步骤21、k轮假的加解密轮计算设置在n轮真的加解密轮计算之前,m-k轮假的加解密轮计算设置在n轮真的加解密轮计算之后。
在图1所示结构示意图的基础上,步骤12可以包括如下步骤:
步骤121、执行k轮假的加解密轮计算;
步骤122、执行n轮真的加解密轮计算;
步骤123、执行m-k轮假的加解密轮计算。
其中,m、n和k为自然数,k为大于或等于0并且小于或等于m的随机数。k用于控制真的加解密轮计算开始的位置,每次执行加解密算法时,k的值随机获得。
与现有技术中需要执行n轮计算的加解密算法相比,在本实施例中,在加解密算法的执行中增加了m轮假的加解密轮计算,加解密算法变成了n+m轮,并且,在m轮假的加解密轮计算中,k轮假的加解密轮计算在真的n轮加解密轮计算之前,m-k轮假的加解密轮计算在真正的n轮加解密轮计算之后。这样,当攻击者使用DPA攻击加解密算法时,攻击者会从所采集得到的功耗曲线上发现n+m轮计算,而不是n轮,而且攻击者无法根据功耗曲线来区分n+m轮计算中哪些是真的哪些是假的,因此,攻击者只能将所有采集到的功耗曲线的n+m轮计算进行对齐。但是,所有功耗曲线中只有1/(m+1)数量的功耗曲线的真实n轮计算是对齐的,也就是说,攻击者虽然采集得到了大量功耗曲线,但是只有其中的1/(m+1)数量的功耗曲线是有用的。换句话说,如果攻击者需要L条有用的功耗曲线才能进行攻击得到真的轮密钥,那么,获得的功耗曲线条数必须是原来的(m+1)倍,即(m+1)*L条,从而大大增加了攻击者对齐所有功耗曲线的难度,提高了攻击者攻击成功的难度。而该方法的计算量只有原有算法的(m+n)/n倍,对算法的性能影响不大。
下面通过一个详细实例介绍本实施例的方法。如图3所示,为本发明加解密算法的安全执行方法第二实施例中一个具体实例的时序图,本实例中,该算法为具体为DES加密算法,n的值定为16,m的值定为3,这样,k的值可以是0、1、2、3。
其中,图3(a)为k等于0时DES加密算法的执行过程。真的明文P和真的轮密钥key作为输入,在执行第1轮至第16轮真的加密轮计算之前,没有假的加密轮计算。输出16轮真的加密轮计算的结果作为密文C。在执行16轮真的加密轮计算之后再加入3轮假的加密轮计算。这3轮假的加密轮计算使用随机数据作为加密输入数据,分别使用常数FK1、FK2、FK3作为假的轮密钥对假的加密输入数据进行加密运算。
图3(b)为k等于1时DES加密算法的执行过程。在执行16轮真的加密轮计算之前,加入1轮假的加密轮计算,这1轮假的加密轮计算使用真的明文P作为真的加密输入数据,使用常数FK1作为假的轮密钥对真的加密输入数据进行加密轮运算。输出16轮真的加密轮计算的结果作为密文C。在16轮真的加密轮计算之后,加入2轮假的加密轮计算,这2轮假的加密轮计算使用随机数据作为假的加密输入数据,分别使用常数FK3、FK2作为假的轮密钥对假的加密输入数据进行加密运算。
图3(c)为k等于2时DES加密算法的执行过程。在16轮真的加密轮计算之前,加入2轮假的加密轮计算,这2轮假的加密轮计算使用真的明文P作为真的加密输入数据,分别使用常数FK2、FK3作为假的轮密钥对真的加密输入数据进行加密轮运算。输出16轮真的加密轮计算的结果作为密文C。在16轮真的加密轮计算之后,加入1轮假的加密轮计算,这1轮假的加密轮计算使用随机数据作为假的加密输入数据,使用常数FK1作为假的轮密钥对假的加密输入数据进行加密运算。
图3(d)为k等于3时DES加密算法的执行过程。在16轮真的加密轮计算之前,加入3轮假的加密轮计算,这3轮假的加密轮计算使用真的明文P作为加密输入数据,分别使用常数FK1、FK2、FK3作为假的轮密钥对真的加密输入数据进行加密运算。在16轮真的加密轮计算之后,没有假的加密轮计算。输出16轮真的加密轮计算的结果作为密文C。
根据图3所示,使用本发明的方法来执行DES算法进行加密时,有4种可能的执行情况,分别对应图3(a)、3(b)、3(c)和3(d),在执行的过程中时,随机选取的k值决定当前计算使用所述四种执行情况中的哪一种。
综上可知,在此实例中,与原来需要16轮计算的DES加密算法的执行相比,使用本发明方法执行的DES加密算法的计算轮数增加了3轮,变为19轮。并且,这3轮假的加密轮计算随机地分配在真的16轮加密轮计算之前或之后。当攻击者进行功耗分析攻击时,攻击者会从所采集得到的功耗曲线上发现19轮计算,而不是16轮。攻击者无法根据功耗曲线来区分19轮计算中哪些是真的哪些是假的。攻击者只能将所有采集到的功耗曲线的19轮计算进行对齐,那么,可见的结果就是,所有功耗曲线中只有1/4数量的功耗曲线的真的16轮计算是对齐的。也就是说,攻击者虽然采集得到了n条功耗曲线,但是,对第一轮计算进行功耗分析攻击时,只有其中的n/4条功耗曲线是有用的。对于没使用本发明方法的DES加密算法的执行过程,攻击者可能需要n条功耗曲线就可以攻击得到真的轮密钥。对于使用了本发明方法的DES加密算法的执行过程,攻击者要想成功攻击得到真的轮密钥,获得的功耗曲线条数必须是原来的4倍,即4n条。
进一步地,如果攻击者对第一轮计算进行攻击,那么,由于在假的加密轮计算中使用了假的轮密钥和真的明文,所以,攻击者使用DPA攻击的分析方法很可能攻击得到的是徦的轮密钥,即FK1、FK2、FK3
进一步地,考虑攻击者对第一轮轮密钥实施DPA攻击的过程,能够发现,对于某些算法,例如:DES算法、AES算法、SM4、SM1等加解密算法,攻击者攻击成功的概率大大降低1/4,。例如:DES算法的轮密钥为48比特,其中每6比特子轮密钥对应DES加密算法中的1个替换盒(SBOX)的计算。攻击者实施DPA攻击时,可以只对一个SBOX实施攻击,得到6比特子轮密钥。攻击者分别对8个SBOX实施攻击,就可以得到全部48比特轮密钥。例如,攻击者对DES算法的第一轮操作实施DPA攻击后,可以分别攻击得到如下8个对应SBOX1至SBOX8的概率最大的6比特子轮密钥:RK1 S1、RK1 S2、RK1 S3、RK1 S4、RK1 S5、RK1 S6、RK1 S7和RK1 S8,组合得到最有可能是第一轮轮密钥的RK1。针对使用了本发明方法的DES加密算法实现,攻击者在对第一轮加解密操作的SBOX1进行攻击时,由于图3所示的4种可能执行情况是等概率的,所以攻击者得到可能性相同的四个对应于SBOX1的6比特子轮密钥,分别为RK1 S1、FK1 S1、FK2 S1、和FK3 S1。即,对应SBOX1的6比特轮密钥,攻击者攻击成功的概率只有1/4。那么,对于48比特的第一轮轮密钥,由于每6比特都有四种等概率的可能攻击结果,所以组合后48比特的轮密钥共有48种可能,攻击者攻击成功的概率降到了1/48
综上可知,本实施例的方法可以有效地提高加解密算法执行的安全性。
可选地,在本实施例中,步骤11可以通过以下步骤实现:
步骤111、生成随机数k;
步骤112、对加解密轮计算的执行轮数进行计数;
具体地,轮计数值cnt的初始值为零,每完成一轮加解密轮计算,轮计数值cnt加1,当轮计数值cnt等于n+m时,轮计数值cnt清零;
步骤113、将加解密轮计算的执行轮数与k和k+n进行比较,根据比较结果,生成控制信号;
具体地,当k<cnt<=k+n时,生成控制信号为真,表示执行真的加解密轮计算,否则,生成控制信号为假,表示执行假的加解密轮计算。
步骤114、根据控制信号,生成真的加解密轮计算参数或假的加解密轮计算参数。
具体地,当控制信号为真时,生成的加解密轮计算参数为真的加解密轮计算参数,当控制信号为假时,生成的加解密轮计算参数为假的加解密轮计算参数。
步骤13具体可以为如下步骤:
步骤23、根据真的加解密轮计算参数或假的加解密计算参数,执行n+m轮加解密轮计算。
可选地,在步骤114中,当控制信号为真时,并且当k<cnt<=k+n时,计算cnt-k的值,表示当前执行的加解密轮计算实际是真的加解密轮计算中的第几轮,以便根据原始密钥和的加解密计算的执行轮数cnt-k,生成当前的第cnt-k轮真的加解密轮计算所需的真的轮密钥。当控制信号real_round为假时,可以对假的加解密输入数据和假的轮密钥、以及真的加解密输入数据和真的轮密钥进行混合组合,得到假的加解密轮计算参数,具体地,假的加解密轮计算参数可以为假的加解密输入数据和假的轮密钥;或者,真的加解密输入数据和假的轮密钥。
可选地,在步骤114中,即使在进行假的加解密轮计算时,还可以在cnt<=k时,根据原始密钥、k的值生成真的轮密钥,在k+n<cnt时,根据原始密钥、cnt-k-n的值,生成真的轮密钥,以便利用真的轮密钥与假的加解密输入数据进行组合得到假的加解密轮计算参数。
可选地,每轮假的加解密轮计算采用的假的加解密轮计算参数可以不同,从而进一步提高了算法的安全性。
如图4所示,为本发明加解密算法的安全执行装置第一实施例的结构示意图,该装置可以包括加解密模块41和控制模块42。
控制模块42用于设置n+m轮加解密轮计算的计算顺序,其中,n+m轮加解密轮计算包括n轮真的加解密轮计算和m轮假的加解密轮计算。加解密模块41在控制模块42的控制下,根据控制模块42设置好的计算顺序,执行n+m轮加解密轮计算,输出n轮真的加解密轮计算的结果作为该加解密算法的结果。
其中,n和m为自然数,每部分连续的假的加解密轮计算的轮数为大于或等于0并且小于或等于m的随机数。n表示加解密算法标准规定的完成加解密轮计算所需的真的加解密轮计算的轮数,n为常数,采用的加解密算法不同,加解密轮计算的轮数n也会不同。例如:对于DES算法,n等于16,对于3DES算法,n等于48,对于AES算法,根据模式不同,n可以等于10、12或14;m表示在加解密算法执行过程中插入的假的加解密轮计算的轮数。
本实施例在加解密算法的执行中插入了m轮假的加解密轮计算,加解密算法变成了n+m轮,这样,当攻击者使用DPA攻击加解密算法时,攻击者会从所采集得到的功耗曲线上发现n+m轮计算,而不是n轮,而且攻击者无法根据功耗曲线来区分n+m轮计算中哪些是真的哪些是假的,因此,攻击者只能将所有采集到的功耗曲线的n+m轮计算进行对齐。但是,由于插入了假的加解密轮计算,大大增加了攻击者对齐真的n轮功耗曲线的难度,提高了攻击者攻击成功的难度。
可选地,在本实施例中,为了增加攻击的难度,每次执行加密算法的计算时,m可以不同,也可以相同。可选地,m可以为随机数,这样,参见图4所示示意图,本实施例还可以包括随机数生成模块43,用于生成随机数m,将随机数m发送给控制模块42,这样进一步提高了加解密算法的安全性。
如图5所示,为本发明加解密算法的安全执行装置第二实施例的结构示意图,由于第一轮加解密轮计算和最后一轮加解密轮计算的安全性对整个加解密算法的安全性影响很大,所以本实施例重点保护第一轮加解密轮计算和最后一轮加解密轮计算,在第一轮真的加解密轮计算之前和最后一轮真的加解密轮计算之后插入假的加解密轮计算,在上一实施例的基础上,加解密模块41在控制模块42的控制下,依次执行k轮假的加解密轮计算、n轮真的加解密轮计算以及m-k轮假的加解密轮计算。
其中,k为小于或等于m的随机数,m和n是输入到控制模块42的参数,k为控制模块42生成的随机数。
在本实施例中,在控制模块42的控制下,在加解密模块41执行加解密算法的过程中增加了m轮假的加解密轮计算,加解密算法变成了n+m轮,并且,在m轮假的加解密轮计算中,k轮假的加解密轮计算在真的n轮加解密轮计算之前,m-k轮假的加解密轮计算在真正的n轮加解密轮计算之后。这样,当攻击者使用DPA攻击加解密算法时,攻击者会从所采集得到的功耗曲线上发现n+m轮计算,而不是n轮,而且攻击者无法根据功耗曲线来区分n+m轮计算中哪些是真的哪些是假的,因此,攻击者只能将所有采集到的功耗曲线的n+m轮计算进行对齐。但是,所有功耗曲线中只有1/(m+1)数量的功耗曲线的真实n轮计算是对齐的,也就是说,攻击者虽然采集得到了大量功耗曲线,但是只有其中的1/(m+1)数量的功耗曲线是有用的。换句话说,如果攻击者需要L条有用的功耗曲线才能进行攻击得到真的密钥,那么,获得的功耗曲线条数必须是原来的(m+1)倍,即(m+1)*L条,从而大大增加了攻击者对齐所有功耗曲线的难度,提高了攻击者攻击成功的难度。
可选地,在本实施例中,参见图5所示结构示意图,控制模块42可以包括随机数生成单元421、轮计数单元422、比较单元423和参数生成单元424。比较单元423与随机数生成单元421和轮计数单元422连接,参数生成单元424与比较单元423和轮计数单元422连接。
随机数生成单元421用于生成随机数k;轮计数单元422用于对加解密轮计算的执行轮数进行计数;比较单元423用于将加解密轮计算的执行轮数与k和k+n进行比较,根据比较结果,生成控制信号;参数生成单元424用于根据控制信号,生成真的加解密轮计算参数或假的加解密轮计算参数,将真的加解密轮计算参数或假的加解密轮计算参数发送给加解密模块41。加解密轮计算模块41根据真的加解密轮计算参数或假的加解密轮计算参数,执行加解密轮计算。
具体地,轮计数单元422的轮计数值cnt的初始值为零,每完成一轮加解密轮计算,轮计数值cnt加1,当轮计数值cnt等于n+m时,轮计数值cnt清零;比较单元423将轮计数值cnt与k和k+n进行比较,根据比较结果生成控制信号real_round,表示加解密模块41执行的是真的加解密轮计算还是假的加解密轮计算,具体地,当k<cnt<=k+n时,生成控制信号real_round为真,表示执行真的加解密轮计算,否则,生成控制信号real_round为假,表示执行假的加解密轮计算。当k<cnt<=k+n时,比较单元423还计算cnt-k的值,表示当前执行的加解密轮计算实际是真的加解密轮计算中的第几轮,并将cnt-k的值发送给参数生成单元424,以便参数生成单元424根据原始密钥生成当前的第cnt-k轮真的加解密轮计算所需的真的轮密钥。当控制信号real_round为真时,加解密轮计算参数生成单元424发送给加解密模块41的加解密轮计算参数为真的加解密轮计算参数,当控制信号real_round为假时,发送给加解密模块41的加解密轮计算参数为假的加解密轮计算参数。
可选地,参数生成单元424可以包括假参数生成子单元4241、真密钥生成子单元4242和参数控制子单元4243,真密钥生成子单元4242与轮计数单元422和比较单元423连接,参数控制子单元4243与假参数生成子单元4241和真密钥生成子单元4242连接。
假参数生成子单元4241用于生成假的加解密输入数据和假的轮密钥;真密钥生成子单元4242用于根据加解密轮计算的执行轮数和原始密钥,生成真的轮密钥;参数控制子单元4243用于接收假的加解密输入数据和假的轮密钥、真的轮密钥和真的加解密输入数据,根据控制信号,生成真的加解密轮计算参数或假的加解密轮计算参数。具体地,真密钥生成子单元4242基于加解密算法标准所规定的计算方法,根据原始密钥和真的加解密计算的执行轮数cnt-k,生成真的轮密钥。当控制信号real_round为假时,参数控制子单元4243对来自假参数生成子单元4241的假的加解密输入数据和假的轮密钥、以及真的加解密输入数据和来自真密钥生成子单元4242的真的轮密钥进行混合组合,得到假的加解密轮计算参数,具体地,假的加解密轮计算参数可以为假的加解密输入数据和假的轮密钥;或者,真的加解密输入数据和假的轮密钥。
可选地,比较单元423还可以在cnt<=k时,将k的值发送给真密钥生成子单元4242,在k+n<cnt时,将cnt-k-n的值发送给真密钥生成子单元4242,这样即使在进行假的加解密轮计算时,真密钥生成子单元4242也可以根据原始密钥、以及k或cnt-k-n的值,生成真的轮密钥,并将真的轮密钥发送给参数控制子单元4243,以便参数控制子单元4243利用真的轮密钥与假的加解密输入数据进行组合得到假的加解密轮计算参数。
可选地,每轮假的加解密轮计算采用的假的加解密轮计算参数可以不同,从而进一步提高了算法的安全性。
本实施例可以有效地提高加解密算法执行的安全性,且对加解密算法的执行性能影响不大。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。

Claims (10)

1.一种加解密算法的安全执行方法,其特征在于,包括:
设置n+m轮加解密轮计算的计算顺序,其中,所述n+m轮加解密轮计算包括n轮真的加解密轮计算和m轮假的加解密轮计算;
根据所述计算顺序,执行所述n+m轮加解密轮计算;
输出所述n轮真的加解密轮计算的结果作为所述加解密算法的结果;
其中,n和m为自然数,每部分连续的假的加解密轮计算的轮数为大于或等于0并且小于或等于m的随机数。
2.根据权利要求1所述的方法,其特征在于,所述执行所述n+m轮加解密轮计算包括:
执行k轮假的加解密轮计算;
执行所述n轮真的加解密轮计算;
执行m-k轮假的加解密轮计算;
其中,m、n和k为自然数,k为大于或等于0并且小于或等于m的随机数。
3.根据权利要求1或2所述的方法,其特征在于,m为随机数,所述方法还包括:
生成随机数m。
4.根据权利要求2所述的方法,其特征在于,所述设置n+m轮加解密轮计算的计算顺序包括:
生成随机数k;
对所述加解密轮计算的执行轮数进行计数;
将所述加解密轮计算的执行轮数与k和k+n进行比较,根据比较结果,生成控制信号;
根据所述控制信号,生成真的加解密轮计算参数或假的加解密轮计算参数。
5.根据权利要求4所述的方法,其特征在于,所述生成真的加解密轮计算参数或假的加解密轮计算参数包括:
生成假的加解密输入数据和假的轮密钥;
所述加解密轮计算的执行轮数和原始密钥,生成真的轮密钥;
基于所述假的加解密输入数据和假的轮密钥、所述真的轮密钥和真的加解密输入数据,根据所述控制信号,生成真的加解密轮计算参数或假的加解密轮计算参数;
根据所述计算顺序,执行所述n+m轮加解密轮计算具体为:根据所述真的加解密轮计算参数或所述假的加解密计算参数,执行所述n+m轮加解密轮计算;
其中,所述假的加解密轮计算参数包括:假的加解密输入数据和假的轮密钥;或者,假的加解密输入数据和真的轮密钥;或者,真的加解密输入数据和假的轮密钥。
6.一种加解密算法的安全执行装置,其特征在于,包括:
控制模块,用于设置n+m轮加解密轮计算的计算顺序,其中,所述n+m轮加解密轮计算包括n轮真的加解密轮计算和m轮假的加解密轮计算;
加解密模块,用于在所述控制模块的控制下,根据所述计算顺序,执行所述n+m轮加解密轮计算,输出所述n轮真的加解密轮计算的结果作为所述加解密算法的结果;
其中,n和m为自然数,每部分连续的假的加解密轮计算的轮数为大于或等于0并且小于或等于m的随机数。
7.根据权利要求6所述的装置,其特征在于,所述加解密模块在所述控制模块的控制下,依次执行k轮假的加解密轮计算、n轮真的加解密轮计算以及m-k轮假的加解密轮计算;
其中,k为小于或等于m的随机数。
8.根据权利要求6或7所述的装置,其特征在于,m为随机数,所述装置还包括:
随机数生成模块,用于生成随机数m,将所述随机数m发送给所述控制模块。
9.根据权利要求7所述的装置,其特征在于,所述控制模块包括:
随机数生成单元,用于生成随机数k;
轮计数单元,用于对所述加解密轮计算的执行轮数进行计数;
比较单元,用于将所述加解密轮计算的执行轮数与k和k+n进行比较,根据比较结果,生成控制信号;
加解密轮计算参数生成单元,用于根据所述控制信号,生成真的加解密轮计算参数或假的加解密轮计算参数,将所述真的加解密轮计算参数或所述假的加解密轮计算参数发送给所述加解密模块;
所述加解密模块用于根据所述真的加解密轮计算参数或所述假的加解密轮计算参数,执行加解密轮计算。
10.根据权利要求9所述的装置,其特征在于,所述加解密轮计算参数生成单元包括:
假参数生成子单元,用于生成假的加解密输入数据和假的轮密钥;
真密钥生成子单元,用于根据所述加解密轮计算的执行轮数和原始密钥,生成真的轮密钥;
参数控制子单元,用于接收所述假的加解密输入数据和假的轮密钥、所述真的轮密钥和真的加解密输入数据,根据所述控制信号,生成真的加解密轮计算参数或假的加解密轮计算参数;
其中,所述假的加解密轮计算参数包括:假的加解密输入数据和假的轮密钥;或者,假的加解密输入数据和真的轮密钥;或者,真的加解密输入数据和假的轮密钥。
CN201410642409.3A 2014-11-07 2014-11-07 加解密算法的安全执行方法和装置 Pending CN104378196A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410642409.3A CN104378196A (zh) 2014-11-07 2014-11-07 加解密算法的安全执行方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410642409.3A CN104378196A (zh) 2014-11-07 2014-11-07 加解密算法的安全执行方法和装置

Publications (1)

Publication Number Publication Date
CN104378196A true CN104378196A (zh) 2015-02-25

Family

ID=52556878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410642409.3A Pending CN104378196A (zh) 2014-11-07 2014-11-07 加解密算法的安全执行方法和装置

Country Status (1)

Country Link
CN (1) CN104378196A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104734842A (zh) * 2015-03-13 2015-06-24 上海交通大学 基于伪操作的电路旁路攻击抵御方法
CN104734845A (zh) * 2015-03-25 2015-06-24 上海交通大学 基于全加密算法伪操作的旁路攻击防护方法
CN107154843A (zh) * 2017-05-18 2017-09-12 北京万协通信息技术有限公司 一种抗功耗攻击的sm4算法的硬件实现系统
WO2018174819A1 (en) * 2017-03-20 2018-09-27 Nanyang Technological University Hardware security to countermeasure side-channel attacks
CN108650075A (zh) * 2018-05-11 2018-10-12 中国科学院信息工程研究所 一种抗侧信道攻击的软硬结合aes快速加密实现方法和系统
CN109450614A (zh) * 2018-09-20 2019-03-08 清华大学 一种适用于高速数据传输通路的加密和解密方法
CN111600873A (zh) * 2020-05-13 2020-08-28 江苏芯盛智能科技有限公司 防侧信道攻击方法及相关装置
US11258579B2 (en) * 2018-02-26 2022-02-22 Stmicroelectronics (Rousset) Sas Method and circuit for implementing a substitution table
US11265145B2 (en) 2018-02-26 2022-03-01 Stmicroelectronics (Rousset) Sas Method and device for performing substitution table operations
US11824969B2 (en) 2018-02-26 2023-11-21 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102447556A (zh) * 2010-10-14 2012-05-09 上海华虹集成电路有限责任公司 一种基于随机偏移的抗差分功耗分析des加密方法
CN102523085A (zh) * 2011-12-15 2012-06-27 北京握奇数据系统有限公司 数据加密方法、装置及智能卡
CN103023634A (zh) * 2012-12-05 2013-04-03 无锡华大国奇科技有限公司 一种防止差分功耗分析的des装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102447556A (zh) * 2010-10-14 2012-05-09 上海华虹集成电路有限责任公司 一种基于随机偏移的抗差分功耗分析des加密方法
CN102523085A (zh) * 2011-12-15 2012-06-27 北京握奇数据系统有限公司 数据加密方法、装置及智能卡
CN103023634A (zh) * 2012-12-05 2013-04-03 无锡华大国奇科技有限公司 一种防止差分功耗分析的des装置

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104734842B (zh) * 2015-03-13 2018-06-08 上海交通大学 基于伪操作的电路旁路攻击抵御方法
CN104734842A (zh) * 2015-03-13 2015-06-24 上海交通大学 基于伪操作的电路旁路攻击抵御方法
CN104734845B (zh) * 2015-03-25 2018-11-23 上海交通大学 基于全加密算法伪操作的旁路攻击防护方法
CN104734845A (zh) * 2015-03-25 2015-06-24 上海交通大学 基于全加密算法伪操作的旁路攻击防护方法
WO2018174819A1 (en) * 2017-03-20 2018-09-27 Nanyang Technological University Hardware security to countermeasure side-channel attacks
US11227071B2 (en) * 2017-03-20 2022-01-18 Nanyang Technological University Hardware security to countermeasure side-channel attacks
CN107154843A (zh) * 2017-05-18 2017-09-12 北京万协通信息技术有限公司 一种抗功耗攻击的sm4算法的硬件实现系统
US11258579B2 (en) * 2018-02-26 2022-02-22 Stmicroelectronics (Rousset) Sas Method and circuit for implementing a substitution table
US11265145B2 (en) 2018-02-26 2022-03-01 Stmicroelectronics (Rousset) Sas Method and device for performing substitution table operations
US11824969B2 (en) 2018-02-26 2023-11-21 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
CN108650075A (zh) * 2018-05-11 2018-10-12 中国科学院信息工程研究所 一种抗侧信道攻击的软硬结合aes快速加密实现方法和系统
CN108650075B (zh) * 2018-05-11 2020-09-08 中国科学院信息工程研究所 一种抗侧信道攻击的软硬结合aes快速加密实现方法和系统
CN109450614A (zh) * 2018-09-20 2019-03-08 清华大学 一种适用于高速数据传输通路的加密和解密方法
CN111600873A (zh) * 2020-05-13 2020-08-28 江苏芯盛智能科技有限公司 防侧信道攻击方法及相关装置

Similar Documents

Publication Publication Date Title
CN104378196A (zh) 加解密算法的安全执行方法和装置
US8942371B2 (en) Method and system for a symmetric block cipher using a plurality of symmetric algorithms
CN104410616B (zh) 数据加密、解密、传输方法和系统
US11546135B2 (en) Key sequence generation for cryptographic operations
US9648026B2 (en) Cryptographic method for securely exchanging messages and device and system for implementing this method
CN108964872B (zh) 一种基于aes的加密方法及装置
CN102880836A (zh) 安全装置
CN105051677A (zh) 用共享随机比特进行掩码
EP2698780A2 (en) Encryption processing device and method
CN105553638A (zh) 针对sm4一阶掩码算法的二阶频域能量分析攻击
CN103621007A (zh) 加密处理装置、加密处理方法和程序
CN103258312B (zh) 具有快速密钥流生成机制的数字图像加密方法
CN103020891A (zh) 一种基于复合混沌序列与移位的彩色图像加密方法
CN108429613A (zh) 一种基于en-present算法的电网信息加密方法
Mewada et al. Classification of efficient symmetric key cryptography algorithms
CN108242994A (zh) 密钥的处理方法和装置
EP1646174A1 (en) Method and apparatus for generating cryptographic sets of instructions automatically and code generation
EP3089398B1 (en) Securing a cryptographic device
CN101867471A (zh) 基于无理数的des认证加密算法
CN108199836B (zh) 一种密钥与设备绑定、解绑定的方法及装置
Charalampidis et al. A novel piecewise chaotic map for image encryption
Vohra et al. An efficient chaos-based optimization algorithm approach for cryptography
Aval et al. A simple method for image encryption using chaotic logistic map
CN114785479A (zh) 一种aes算法模块防攻击的系统及方法
CN104683095B (zh) 一种des加密方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150225

WD01 Invention patent application deemed withdrawn after publication