一种混沌密码系统的硬件安全评估方法与流程

文档序号:18741625发布日期:2019-09-21 01:50阅读:261来源:国知局
一种混沌密码系统的硬件安全评估方法与流程

本发明涉及信息安全技术领域,着重研究混沌密码系统的硬件安全、探究经理论验证的混沌密码系统在运行时泄露的旁路信息能否被攻击者用来破解密码系统,具体是一种混沌密码系统的硬件安全评估方法。



背景技术:

随着信息技术的快速发展,国家、社会、个人与信息技术的联系日益紧密,因此信息安全变得尤为重要。对于国家而言信息安全关乎经济安全、社会稳定、军事安全等,对于个人而言信息安全关乎个人隐私,财产安全,人身安全等等。因此信息安全引起了人们的广泛关注,密码设计学和密码分析学作为信息安全领域内重要的学科取得了显著的发展。密码分析学主要包括通过数学方法的传统分析方案,以及旁路攻击等。

旁路攻击是指利用密码系统运行时泄露的能耗、声音、电磁等旁路信息对密码系统进行攻击的方法。相对于传统方法,它所用时间更短,计算复杂度更小,高级加密标准(Advanced Encryption Standard,简称AES),数据加密标准(Data Encryption Standard,简称DES)等经典密码算法可以通过旁路攻击的手段在较短的时间内破解,并且很多密码系统或处理器均存在旁路信息泄露的风险,英特尔和AMD两家处理器公司在2018年被曝出它们所生产的多款处理器存在被旁路攻击破解的风险。

混沌系统因其优良的非线性特性而被应用于密码系统中,研究者设计了很多性能优秀的混沌密码算法,但是对于密码系统而言,其安全性既与密码算法有关,又与算法的运行平台有关,而目前针对混沌密码系统的旁路攻击研究较少。混沌密码算法在硬件平台上运行时同样存在泄露旁路信息的可能,因此,对混沌密码系统进行旁路攻击测试,并设计具有防护策略的密码系统十分必要。



技术实现要素:

本发明的目的是针对现有技术的不足,而提供一种混沌密码系统的硬件安全评估方法。这种方法可以验证通过统计学测试的混沌密码系统的硬件安全性,验证密码系统是否存在被旁路攻击破解的可能,为密码系统的设计,分析与评测提供必要的方法和检测手段。

实现本发明目的的技术方案是:

一种混沌密码系统的硬件安全评估方法,包括如下步骤:

1)对应用代替-置换网络(Substitution-Permutation Network,简称SP)结构的混沌分组密码系统的结构进行分析,判断可能的旁路信息泄露:混沌分组密码的工作流程为:每组明文、密文和密钥均包含128比特,128比特的主密钥作为帐篷映射的参数,迭代帐篷映射多次并映射到整数域以生成轮密钥,在轮密钥相加运算之后,使用S-box查找表执行替换操作,然后执行GF(28)有限域加法、乘法和猫映射操作以满足扩散特性,其中GF(28)表示28阶的有限域,最后将这些步骤重复进行M次以确保安全性,过程为:

(1)生成轮密钥:假设混沌分组密码流程包含M轮迭代,对于每轮迭代,均使用16字节的轮密钥,这些轮密钥是基于帐篷映射生成的,帐篷映射可以表达为公式(1):

其中αi是混沌系统的参数,并且由主密钥生成,主密钥中的每个字节都通过以下方法转换为相应的αi如公式(2)所示:

αi=0.51+Ki/1000, (2),

其中主密钥的第i个字节记为Ki,i∈[1,16],为了确保轮密钥的随机性,对于每个参数αi,帐篷映射被迭代20次,对于第一个混沌系统参数α1,迭代帐篷映射f(x,α1)共20次以获得迭代结果xpara(1),其中初始值x0是0到1之间的十进制数,对于其余的每个参数αi,使用αi和前一个迭代结果xpara(i-1)分别作为参数和初始值,并迭代f(x,α)20次,这个过程可以表示为如公式(3)所示:

xpara(i)=f20(xpara(i-1),αi). (3),

最后,使用最终迭代结果xpara(16)和α16分别作为初始值和参数,迭代帐篷映射100+16M次以生成介于0和1之间的十进制数字序列,其中每个元素表示为xi,i∈[1,100+16M],为了保证随机性,前100个元素被丢弃,之后xi被量化以获得轮密钥的第i个字节ki,即如公式(4)所示:

ki=floor(xi×255), (4),

其中floor(x)函数返回不大于x的最大的整数;

(2)轮密钥同明文相加:在第一轮加密中,本步骤输出的第i个字节si可由第i个字节的明文ci和对应的轮密钥ki相异或得到如公式(5)所示:

si=ki⊕ci, (5),

其中ci是明文的i字节,在进行第2至M轮加密运算时,输出结果是相应的轮密钥与上一轮临时结果的异或值;

(3)字节替换操作:字节替换操作是通过S-box查找表进行数据替换来实现,有许多方法可以生成S-box,例如使用混沌系统,人工构造和数学构造等等;

(4)扩散操作:包括两个阶段的扩散操作,在第一阶段,扩散操作输入数据的第一个字节保持不变,随后的字节通过公式(6)得到:

Si+1=Si+1⊕Si, (6),

其中1≤i≤15,在第二阶段,由前一阶段产生的中间值的最后一个字节保持不变,之前的字节通过公式(7)得到:

(5)二维猫映射:为了改善算法的混淆和扩散性能,在本算法中引入了二维猫映射,二维猫映射被广泛用于扰乱方阵中的数据,如果输入不能重组为方阵,则可以使用一些填充方案,例如ANSI X.923,ISO10126,PKCS7等等,从扩散操作生成的中间值存储在4×4矩阵中,然后应用二维猫映射,该混沌映射如公式(8)所示:

其中N代表矩阵的大小,xn代表矩阵的原始列索引,yn代表原始行索引,在此操作之后,位于(xn,yn)的中间数据被转移到新位置(xn+1,yn+1);

(6)重复步骤(1)至步骤(5)共M次,完成密码算法的所有流程;

2)对SP结构中存在旁路信息泄露的环节进行对比,选取攻击点:当加密系统运行时,会生成一些中间数据,可以将轮密钥同明文相加的结果记为e′i,而字节替换操作的结果记为ei,并且它们和明文与密钥相关,比较e′i和ei这两个攻击点的效率时,将这两个点分别选作攻击点,计算不同的密钥对应的假设能耗同真实能耗之间的皮尔逊相关系数,分别得到它们作为攻击点时相关系数和密钥偏移量之间的关系图,由它们作为攻击点时相关系数和密钥偏移量之间的关系图发现:在使用e′i作为攻击点时,存在大量的错误密钥也可以获得较大的相关系数,而使用ei作为攻击点时,只有密钥为正确值,即偏移量为0时才会和实际能耗产生较大的相关系数,因此选择ei作为攻击点会更加有效;

3)对攻击点处产生的中间数据所对应的能耗信息进行建模:采用的能量消耗模型为汉明重量模型,在能量分析攻击中,两种常用的能耗模型分别是汉明重量模型和汉明距离模型,由于汉明距离模型在使用时需要攻击者获取系统前一状态和后一状态的信息,对攻击者而言难度较大,并且在微控制器中,预充电总线被广泛应用,预充电总线即在总线上所需传输的数据发生改变前,先将总线的所有比特置高或者置零,汉明重量模型就可以很好地刻画系统的能量消耗;

4)根据能耗模型对SP结构的混沌密码算法进行相关性能量分析攻击:

要进行相关能耗分析(Correlation Power Analysis,简称为CPA)攻击,首先需要随机生成明文,这些明文用作密码系统的输入,并收集它们相应的功耗数据,为了降低计算复杂度,根据攻击的密码算法,将128位密钥分成16个字节,密钥的每个字节都被单独攻击,然后使用明文和可能的密钥来产生假设的能耗,最后,计算实际能耗和假设能耗之间的相关性,对应于最大相关系数的可能密钥即为最可能正确的密钥,攻击的过程包括:

(1)随机生成明文:随机生成D组,每组I个字节的明文,并存储在矩阵C中,矩阵C的大小是D×I,其中I是每组明文中的字节数,符号cd,i表示第d组明文的第i个字节;

(2)收集能耗数据:总共D组的明文被用作密码系统的输入,在加密过程中,总计D组每组共J个采样点的功耗信息被存储在矩阵T中,矩阵T的大小是D×J,其中J是每个能耗信息的采样点数,元素td,j表示第d条功耗信息中的第j个采样点;

(3)计算假设能耗:将明文和密钥的所有可能值进行相加之后经过字节替换操作得到攻击点处的中间数据,根据汉明重量模型计算得到假设能耗。第d条明文的第i个字节记为cd,i,密钥ki的一个可能值记为s,密钥ki的每个可能值均与cd,i进行异或,然后对异或结果执行替换操作,计算其汉明重量可得假设能耗对剩余的部分重复类似的步骤以获得假设能耗矩阵Hi,假设能耗矩阵中的任意元素可由公式(9)计算得到:

其中矩阵Hi的第(d,s)个元素表示对应于第d组明文和第i个字节密钥的可能值s得到的假设能耗;

(4)计算实际能耗和假设能耗之间的相关性:相关矩阵Pi是计算矩阵Hi的每列与矩阵T的每列之间的相关系数得到的:

假设功耗矩阵Hi中的第s列和实际功耗矩阵T的第j列之间的皮尔逊相关系数是通过公式(10)计算得到的:

其中列向量表示Hi的第s列,列向量T:,j表示T的第j列,表示列向量与列向量T:,j之间的协方差,表示列向量的标准差,表示的平均值,表示由可能值s计算得到的假设功耗与实际功耗的第j个采样点之间的相关性,分别计算矩阵Hi的第s列和矩阵T的每一列之间的相关系数,并将结果存入矩阵Pi的第s行,通过重复类似的操作来获得完整的矩阵Pi,矩阵Pi中最大元素的行索引是ki的最佳猜测值,重复这些操作以获得轮密钥的每个字节的最佳猜测,然后获得所有轮密钥;

5)根据攻击结果,评估SP结构的混沌密码算法在硬件实现时的安全性。

步骤1)中所述的判断可能的旁路信息泄露为对同时涉及轮密钥和明文的中间数据进行审查,比如在SP结构的密码算法中,通常存在轮密钥的各个字节和明文的各个字节依次异或的操作,该环节所处理的数据同时和明文与密钥有关,所以该环节泄露的旁路信息可能被攻击者所利用。

本技术方案中:

对可能的旁路信息泄露环节进行对比,选择攻击效率更高的中间数据作为攻击点,因为多个环节所泄露的旁路信息均可以与明文和密钥相关,但是为了使攻击更加高效,需要对多个攻击点的效率进行对比,经过对比发现当攻击点选择在非线性操作之后时,攻击成功率较高,并且所需的明文数量较少。

常用的能耗模型为汉明重量模型和汉明距离模型,汉明距离模型可以比较准确地刻画芯片中从上一个状态到下一个状态之间转换的比特数,但是该模型需要攻击者明确获取电路的上个状态和下个状态,因此应用此模型对于攻击者而言难度较大,当密码系统使用预充电总线时,这时转换的比特数和所处理数据的汉明重量相关,而汉明重量是指中间数据中等于1的比特数,假设所处理的中间数据为x,则此时泄露的能量和数据的汉明重量即HW(x)相关。

通过能耗模型计算得到的假设能耗和实际能耗之间进行相关性计算,与真实能耗产生最大相关系数的假设能耗所对应的密钥可能值即为该轮密钥的最可能值。

对SP结构的混沌密码系统的安全性进行评估,对攻击时间进行对比,并且对不同密钥产对应的相关系数进行对比,分析攻击方案的有效性。

这种方法可以验证通过统计学测试的混沌密码系统的硬件安全性,验证密码系统是否存在被旁路攻击破解的可能,为密码系统的设计,分析与评测提供必要的方法和检测手段。

附图说明

图1为实施例中的SP结构的混沌分组密码系统框图;

图2为实施例中的密码算法的前两个步骤示意图;

图3为实施例中选择e′i作为攻击点时相关系数和密钥偏移量之间的关系图;

图4为实施例中选择ei作为攻击点时相关系数和密钥偏移量之间的关系图;

图5为实施例中计算假设能耗矩阵图;

图6为实施例中计算相关系数矩阵图;

图7为实施例中相关系数矩阵计算举例示意图;

图8为实施例中能耗曲线图。

具体实施方式

下面结合附图和实施例对本发明的内容作进一步的阐述,但不是对本发明的限定。

实施例:

1)对应用代替-置换网络结构的混沌分组密码系统的结构进行分析,判断可能的旁路信息泄露,混沌分组密码的工作流程如图1所示,其中每组明文、密文和密钥均包含128比特,128比特的主密钥作为帐篷映射的参数,迭代帐篷映射多次并映射到整数域以生成轮密钥,在轮密钥相加运算之后,使用S-box查找表执行替换操作,然后执行GF(28)有限域加法、乘法和猫映射操作以满足扩散特性,其中GF(28)表示28阶的有限域,最后将这些步骤重复进行M次以确保安全性,其具体过程为:

(1)生成轮密钥:假设混沌分组密码流程包含M轮迭代,对于每轮迭代,均使用16字节的轮密钥,这些轮密钥是基于帐篷映射生成的,帐篷映射可以表达为公式(1):

其中αi是混沌系统的参数,并且由主密钥生成,主密钥中的每个字节都通过以下方法转换为相应的αi如公式(2)所示:

αi=0.51+Ki/1000, (2),

其中主密钥的第i个字节记为Ki,i∈[1,16],为了确保轮密钥的随机性,对于每个参数αi,帐篷映射被迭代20次,对于第一个混沌系统参数α1,迭代帐篷映射f(x,α1)共20次以获得迭代结果xpara(1),其中初始值x0是0到1之间的十进制数,本例中被随机设置为0.5987,对于其余的每个参数αi,使用αi和前一个迭代结果xpara(i-1)分别作为参数和初始值,并迭代f(x,α)20次,这个过程可以表示为如公式(3)所示:

xpara(i)=f20(xpara(i-1),αi). (3),

最后,使用最终迭代结果xpara(16)和α16分别作为初始值和参数,迭代帐篷映射100+16M次以生成介于0和1之间的十进制数字序列,其中每个元素表示为xi,i∈[1,100+16M],为了保证随机性,前100个元素被丢弃,之后xi被量化以获得轮密钥的第i个字节ki,即如公式(4)所示:

ki=floor(xi×255), (4),

其中floor(x)函数返回不大于x的最大的整数;

(2)轮密钥同明文相加:在第一轮加密中,本步骤输出的第i个字节si可由第i个字节的明文ci和对应的轮密钥ki相异或得到如公式(5)所示:

si=ki⊕ci, (5),

其中ci是明文的i字节,在进行第2至M轮加密运算时,输出结果是相应的轮密钥与上一轮临时结果的异或值;

(3)字节替换操作:字节替换操作是通过S-box查找表进行数据替换来实现,有许多方法可以生成S-box,例如使用混沌系统,人工构造和数学构造等等,本例使用AES算法中的S-box,它通过数学方法生成;

(4)扩散操作:包括两个阶段的扩散操作,在第一阶段,扩散操作输入数据的第一个字节保持不变,随后的字节通过公式(6)得到:

Si+1=Si+1⊕Si, (6),

其中1≤i≤15,在第二阶段,由前一阶段产生的中间值的最后一个字节保持不变,之前的字节通过公式(7)得到:

(5)二维猫映射:为了改善算法的混淆和扩散性能,在本算法中引入了二维猫映射,二维猫映射被广泛用于扰乱方阵中的数据,如果输入不能重组为方阵,则可以使用一些填充方案,例如ANSI X.923,ISO10126,PKCS7等等,本例中,从扩散操作生成的中间值存储在4×4矩阵中,然后应用二维猫映射,该混沌映射如公式(8)所示:

其中N代表矩阵的大小,xn代表矩阵的原始列索引,yn代表原始行索引,在此操作之后,位于(xn,yn)的中间数据被转移到新位置(xn+1,yn+1);

(6)重复步骤(1)至步骤(5)共M次,完成密码算法的所有流程;

2)对SP结构中存在旁路信息泄露的环节进行对比,选取攻击点:密码算法中的前两个操作,即明文同轮密钥相加和字节替换操作如图2所示,当加密系统运行时,会生成一些中间数据,记为e′i和ei,并且它们和明文与密钥相关,为了比较e′i和ei这两个攻击点的效率,本例中,将这两个点分别选作攻击点,用不同的密钥计算得到的假设能耗同真实能耗之间计算皮尔逊相关系数,分别得到他们作为攻击点时相关系数和密钥偏移量之间的关系图,如图3、图4所示,从图3可以看出,在使用e′i作为攻击点时,存在大量的错误密钥也可以获得较大的相关系数,而对比图4,在使用ei作为攻击点时,只有密钥为正确值,即偏移量为0时才会和实际能耗产生较大的相关系数,因此选择ei作为攻击点会更加有效;

3)对攻击点处产生的中间数据所对应的能耗信息进行建模:采用的能量消耗模型为汉明重量模型,在能量分析攻击中,两种常用的能耗模型分别是汉明重量模型和汉明距离模型,由于汉明距离模型在使用时需要攻击者获取系统前一状态和后一状态的信息,对攻击者而言难度较大,并且在微控制器中,预充电总线被广泛应用,预充电总线即在总线上所需传输的数据发生改变前,先将总线的所有比特置高或者置零,汉明重量模型就可以很好地刻画系统的能量消耗,本例所用的Atmel XMEGA 128D4经过实验验证,可以使用汉明重量模型很好地将所处理的数据和能耗之间的关系描述出来,本例所采用的能量消耗模型为汉明重量模型;

4)根据能耗模型对SP结构的混沌密码算法进行相关性能量分析攻击:

要运行相关能耗分析攻击,首先需要随机生成明文,这些明文用作密码系统的输入,并收集它们相应的功耗数据,为了降低计算复杂度,根据本例攻击的密码算法,将128位密钥分成16个字节,密钥的每个字节都被单独攻击,然后使用明文和可能的密钥来产生假设的能耗,最后,计算实际能耗和假设能耗之间的相关性,对应于最大相关系数的可能密钥即为最可能正确的密钥,本例以攻击轮密钥的i个字节(即ki)为例,给出攻击的过程包括:

(1)随机生成明文:随机生成D组,每组I个字节的明文,并存储在矩阵C中,矩阵C的大小是D×I,其中I是每组明文中的字节数,符号cd,i表示第d组明文的第i个字节;

(2)收集能耗数据:总共D组的明文被用作密码系统的输入,在加密过程中,总计D组每组共J个采样点的功耗信息被存储在矩阵T中,矩阵T的大小是D×J,其中J是每个能耗信息的采样点数,元素td,j表示第d条功耗信息中的第j个采样点;将100组明文依次输入密码系统,并在密码系统运行过程中收集100组相应的能耗数据,每组数据包含3,000个采样点,一组能耗数据显示在图8中,这是在密码系统加密一组明文时获得的能耗曲线,对于总共100组明文,相应的能耗数据存储在矩阵T中,其中(d,j)个元素td,j表示加密第d组明文时的第j个采样点;

3)计算假设能耗:将明文和密钥的所有可能值进行相加之后经过字节替换操作得到攻击点处的中间数据,根据汉明重量模型计算得到假设能耗,第d条明文的第i个字节记为cd,i,密钥ki的一个可能值记为s,密钥ki的每个可能值均与cd,i进行异或,然后对异或结果执行替换操作,计算其汉明重量可得假设能耗对剩余的部分重复类似的步骤以获得假设能耗矩阵Hi,假设能耗矩阵中的任意元素可由公式(9)计算得到:

其中矩阵Hi的第(d,s)个元素表示对应于第d组明文和第i个字节密钥的可能值s得到的假设能耗;

(4)计算实际能耗和假设能耗之间的相关性:相关矩阵Pi是计算矩阵Hi的每列与矩阵T的每列之间的相关系数得到的,如图6所示:

假设功耗矩阵Hi中的第s列和实际功耗矩阵T的第j列之间的皮尔逊相关系数是通过公式(10)计算得到的:

其中列向量表示Hi的第s列,列向量T:,j表示T的第j列,表示列向量与列向量T:,j之间的协方差,表示列向量的标准差,表示的平均值,表示由可能值s计算得到的假设功耗与实际功耗的第j个采样点之间的相关性,为了清楚地理解矩阵Pi的生成过程,图7中给出了一个例子,它展示了计算生成矩阵Pi的第s行的过程,该行代表了从可能值s生成的假设功耗与实际功耗的每个采样点之间的相关性,分别计算矩阵Hi的第s列和矩阵T的每一列之间的相关系数,并将结果存入矩阵Pi的第s行,通过重复类似的操作来获得完整的矩阵Pi,矩阵Pi中最大元素的行索引是ki的最佳猜测值,重复这些操作以获得轮密钥的每个字节的最佳猜测,然后获得所有轮密钥;

5)根据攻击结果,评估SP结构的混沌密码算法在硬件实现时的安全性。

步骤1)中所述的判断可能的旁路信息泄露为对同时涉及轮密钥和明文的中间数据进行审查,比如在SP结构的密码算法中,通常存在轮密钥的各个字节和明文的各个字节依次异或的操作,该环节所处理的数据同时和明文与密钥有关,所以该环节泄露的旁路信息可能被攻击者所利用。

CPA攻击结果如表格1所示,每个ki的实际值和最佳猜测值均已给出。从表中可以看出密钥的最佳猜测值与真实值相等,并且表中还给出了取得最佳猜测值所对应的采样点,同时这些采样点也依次在图8中用圆点标明,对应于第二大相关系数的密钥可能值也给出了,其相关系数远低于最佳猜测值所对应的相关系数,表中显示能耗和正确的密钥猜测之间的相关系数约为0.8,能耗和不正确的密钥猜测之间的相关系数小于0.5,结果表明,使用CPA方法和汉明重量模型,可以得到正确的密钥,正确的密钥和不正确的密钥之间的差异是很明显的。

表格1 CPA对SP结构分组密码的攻击结果

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1