基于Cache的AES算法的安全评估方法和系统转让专利

申请号 : CN201710406297.5

文献号 : CN107085545A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李增局张策史汝辉石新凌陈百顺李文宝吴祥富李海滨安焘黄天宁蒋晓

申请人 : 北京智慧云测科技有限公司

摘要 :

本发明提供了基于Cache的AES算法的安全评估方法和系统,包括:获取主存地址与Cache地址间的空间映射,并确定Cache中所有缓存组的地址,缓存组包括被攻击缓存组;利用PRIME方式访问空间映射,清除并占用缓存组和地址;调用被攻击程序以使被攻击数据存入被攻击缓存组中;利用PROBE方式确定被攻击缓存组,并将所有缓存组的访问信息进行间隔储存,从而得到结果文件;根据结果文件分析轮密钥,并根据轮密钥反推高级加密标准AES密钥。本发明实现了利用Cache攻击的方法评估CPU在操作数据的过程中Cache命中或失效导致的硬件信息泄露,从而评判智能终端是否存在安全漏洞,弥补了硬件攻击的缺陷。

权利要求 :

1.一种基于Cache的AES算法的安全评估方法,其特征在于,包括:获取主存地址与高速缓冲存储器Cache地址间的空间映射,并确定所述Cache中所有缓存组的地址,所述缓存组包括被攻击缓存组;

利用填充PRIME方式访问所述空间映射,清除并占用所述缓存组和所述地址;

调用被攻击程序以使被攻击数据存入所述被攻击缓存组中;

利用探查PROBE方式确定所述被攻击缓存组,并将所述所有缓存组的访问信息进行间隔储存,从而得到结果文件;

根据所述结果文件分析轮密钥,并根据所述轮密钥反推高级加密标准AES密钥。

2.根据权利要求1所述的基于Cache的AES算法的安全评估方法,其特征在于,所述被攻击程序包括AES加密运算程序,所述地址包括被攻击地址,所述利用PROBE方式确定所述被攻击缓存组,并将所述所有缓存组的访问信息进行间隔储存,从而得到结果文件包括:预设访问次数,在所述AES加密运算程序执行完毕后,调用攻击程序访问所述被攻击地址并计时,所述计时采用linux C语言的计时函数;

根据存储器缺失Cache MISS效果记录所述所有缓存组的计时差别,得到所述访问信息;

重复进行所述攻击程序的调用直至满足所述访问次数,并将所述访问信息以单位时间的间隔进行存储,得到所述结果文件。

3.根据权利要求1所述的基于Cache的AES算法的安全评估方法,其特征在于,所述轮密钥包括猜测密钥值,所述根据所述结果文件分析轮密钥,并根据所述轮密钥反推AES密钥包括:利用区分器对所述结果文件进行相关性分析,得到AES使用的缓存大小Cache size,并区分所述Cache的命中操作和失效操作;

对所述结果文件进行轮运算分析得到所述猜测密钥值;

利用查表法对所述猜测密钥值进行运算得到查表中间值;

根据所述查表中间值和所述Cache size推断所述猜测密钥值是否正确;

如果正确,则得到所述AES密钥。

4.根据权利要求3所述的基于Cache的AES算法的安全评估方法,其特征在于,所述结果文件包括参考时间样本,所述利用区分器对所述结果文件进行相关性分析,得到AES使用的缓存大小Cache size,并区分所述Cache的命中操作和失效操作包括:分别计算所述被攻击数据对应的所述参考时间样本和其他时间样本的相关性系数;

设定比较阈值,判断所述相关性系数和所述比较阈值的大小;

如果所述相关性系数大于所述比较阈值,则归为同一操作组;

如果所述相关性系数小于所述比较阈值,则归为不同操作组;

将所述同一操作组和所述不同操作组对应的元素个数进行比较得到比值数据;

根据所述比值数据判断所述Cache size是否被所述AES使用;

如果所述Cache size被使用,则为所述命中操作。

5.根据权利要求3所述的基于Cache的AES算法的安全评估方法,其特征在于,所述对所述结果文件进行轮运算分析得到所述猜测密钥值包括:选取所述结果文件中相关性系数差别最大的所述被攻击数据;

将所述差别最大的被攻击数据反推回的序号设定为所述猜测密钥值,其中,所述猜测密钥值为第十轮轮运算的密钥值。

6.一种基于Cache的AES算法的安全评估系统,其特征在于,包括:获取单元,用于获取主存地址与Cache地址间的空间映射,并确定所述Cache中所有缓存组的地址,所述缓存组包括被攻击缓存组;

第一攻击单元,用于利用PRIME方式访问所述空间映射,清除并占用所述缓存组和所述地址;

调用单元,用于调用被攻击程序以使被攻击数据存入所述被攻击缓存组中;

第二攻击单元,用于利用PROBE方式确定所述被攻击缓存组,并将所述所有缓存组的访问信息进行间隔储存,从而得到结果文件;

分析单元,用于根据所述结果文件分析轮密钥,并根据所述轮密钥反推高级加密标准AES密钥。

7.根据权利要求6所述的基于Cache的AES算法的安全评估系统,其特征在于,所述被攻击程序包括AES加密运算程序,所述地址包括被攻击地址,所述第二攻击单元包括:预设访问次数,在所述AES加密运算程序执行完毕后,调用攻击程序访问所述被攻击地址并计时,所述计时采用linux C语言的计时函数;

根据Cache MISS效果记录所述所有缓存组的计时差别,得到所述访问信息;

重复进行所述攻击程序的调用直至满足所述访问次数,并将所述访问信息以单位时间的间隔进行存储,得到所述结果文件。

8.根据权利要求6所述的基于Cache的AES算法的安全评估系统,其特征在于,所述轮密钥包括猜测密钥值,所述分析单元包括:利用区分器对所述结果文件进行相关性分析,得到AES使用的缓存大小Cache size,并区分所述Cache的命中操作和失效操作;

对所述结果文件进行轮运算分析得到所述猜测密钥值;

利用查表法对所述猜测密钥值进行运算得到查表中间值;

根据所述查表中间值和所述Cache size推断所述猜测密钥值是否正确;

如果正确,则得到所述AES密钥。

9.根据权利要求8所述的基于Cache的AES算法的安全评估系统,其特征在于,所述结果文件包括参考时间样本,所述分析单元还包括:分别计算所述被攻击数据对应的所述参考时间样本和其他时间样本的相关性系数;

设定比较阈值,判断所述相关性系数和所述比较阈值的大小;

如果所述相关性系数大于所述比较阈值,则归为同一操作组;

如果所述相关性系数小于所述比较阈值,则归为不同操作组;

将所述同一操作组和所述不同操作组对应的元素个数进行比较得到比值数据;

根据所述比值数据判断所述Cache size是否被使用;

如果所述Cache size被使用,则为所述命中操作。

10.根据权利要求8所述的基于Cache的AES算法的安全评估系统,其特征在于,所述分析单元还包括:选取所述结果文件中相关性系数差别最大的所述被攻击数据;

将所述差别最大的被攻击数据反推回的序号设定为所述猜测密钥值,其中,所述猜测密钥值为第十轮轮运算的密钥值。

说明书 :

基于Cache的AES算法的安全评估方法和系统

技术领域

[0001] 本发明涉及计算机寄存器技术领域,尤其是涉及基于Cache的AES(Advanced Encryption Standard,高级加密标准)算法的安全评估方法和系统。

背景技术

[0002] 移动互联网的迅猛发展导致了智能终端的数量急剧增加,功能也日益增强。伴随着终端智能化及网络宽带化的趋势,移动互联网业务层出不穷,日益繁荣。但作为业务载体的智能终端却面临各种安全威胁,如恶意订购、盗取账户、监听通话等。与此同时,智能终端越来越多地涉及商业秘密和个人隐私等敏感信息,智能终端作为移动互联网业务最主要的载体,面临着严峻的安全挑战。
[0003] 智能终端操作系统比较繁多,内在的安全机制差异也很大,其结果是,不同厂商的智能终端面临的安全风险截然不同;甚至同样的操作系统,由于不同OEM(Original Equipment Manufacturer,原始设备制造商)对其安全加固程度不同,也呈现出不同的安全特性。
[0004] 目前对智能终端的安全评估主要集中在操作系统的漏洞分析上,大多是从系统层面分析操作系统的安全性,但对硬件安全的分析还鲜有提及。CPU(Central Processing Unit,中央处理器)及底层硬件的安全是整个智能终端系统安全的基础,CPU等硬件上如果出现漏洞,单靠软件是很难保证安全的。
[0005] 目前大部分的软件攻击方法只适用于对操作系统等软件的安全进行评估,因此在硬件攻击方面存在很大缺陷。

发明内容

[0006] 有鉴于此,本发明的目的在于提供基于Cache(Cache Memory,高速缓冲寄存器)的AES算法的安全评估方法和系统,利用Cache攻击的方法评估CPU在操作数据的过程中Cache命中或失效导致的硬件信息泄露,从而评判智能终端是否存在安全漏洞,弥补了硬件攻击的缺陷。
[0007] 第一方面,本发明实施例提供了基于Cache的AES算法的安全评估方法,包括:
[0008] 获取主存地址与Cache地址间的空间映射,并确定所述Cache中所有缓存组的地址,所述缓存组包括被攻击缓存组;
[0009] 利用PRIME方式访问所述空间映射,清除并占用所述缓存组和所述地址;
[0010] 调用被攻击程序以使被攻击数据存入所述被攻击缓存组中;
[0011] 利用PROBE方式确定所述被攻击缓存组,并将所述所有缓存组的访问信息进行间隔储存,从而得到结果文件;
[0012] 根据所述结果文件分析轮密钥,并根据所述轮密钥反推高级加密标准AES密钥。
[0013] 结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述被攻击程序包括AES加密运算程序,所述地址包括被攻击地址,所述利用PROBE方式确定所述被攻击缓存组,并将所述所有缓存组的访问信息进行间隔储存,从而得到结果文件包括:
[0014] 预设访问次数,在所述AES加密运算程序执行完毕后,调用攻击程序访问所述被攻击地址并计时,所述计时采用linux C语言的计时函数;
[0015] 根据Cache MISS效果记录所述所有缓存组的计时差别,得到所述访问信息;
[0016] 重复进行所述攻击程序的调用直至满足所述访问次数,并将所述访问信息以单位时间的间隔进行存储,得到所述结果文件。
[0017] 结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述轮密钥包括猜测密钥值,所述根据所述结果文件分析轮密钥,并根据所述轮密钥反推AES密钥包括:
[0018] 利用区分器对所述结果文件进行相关性分析,得到AES使用的缓存大小Cache size,并区分所述Cache的命中操作和失效操作;
[0019] 对所述结果文件进行轮运算分析得到所述猜测密钥值;
[0020] 利用查表法对所述猜测密钥值进行运算得到查表中间值;
[0021] 根据所述查表中间值和所述Cache size推断所述猜测密钥值是否正确;
[0022] 如果正确,则得到所述AES密钥。
[0023] 结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述结果文件包括参考时间样本,所述利用区分器对所述结果文件进行相关性分析,得到AES使用的缓存大小Cache size,并区分所述Cache的命中操作和失效操作包括:
[0024] 分别计算所述被攻击数据对应的所述参考时间样本和其他时间样本的相关性系数;
[0025] 设定比较阈值,判断所述相关性系数和所述比较阈值的大小;
[0026] 如果所述相关性系数大于所述比较阈值,则归为同一操作组;
[0027] 如果所述相关性系数小于所述比较阈值,则归为不同操作组;
[0028] 将所述同一操作组和所述不同操作组对应的元素个数进行比较得到比值数据;
[0029] 根据所述比值数据判断所述Cache size是否被所述AES使用;
[0030] 如果所述Cache size被使用,则为所述命中操作。
[0031] 结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述对所述结果文件进行轮运算分析得到所述猜测密钥值包括:
[0032] 选取所述结果文件中相关性系数差别最大的所述被攻击数据;
[0033] 将所述差别最大的被攻击数据反推回的序号设定为所述猜测密钥值,其中,所述猜测密钥值为第十轮轮运算的密钥值。
[0034] 第二方面,本发明实施例提供了基于Cache的AES算法的安全评估系统,包括:
[0035] 获取单元,用于获取主存地址与Cache地址间的空间映射,并确定所述Cache中所有缓存组的地址,所述缓存组包括被攻击缓存组;
[0036] 第一攻击单元,用于利用PRIME方式访问所述空间映射,清除并占用所述缓存组和所述地址;
[0037] 调用单元,用于调用被攻击程序以使被攻击数据存入所述被攻击缓存组中;
[0038] 第二攻击单元,用于利用PROBE方式确定所述被攻击缓存组,并将所述所有缓存组的访问信息进行间隔储存,从而得到结果文件;
[0039] 分析单元,用于根据所述结果文件分析轮密钥,并根据所述轮密钥反推高级加密标准AES密钥。
[0040] 结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述被攻击程序包括AES加密运算程序,所述地址包括被攻击地址,所述第二攻击单元包括:
[0041] 预设访问次数,在所述AES加密运算程序执行完毕后,调用攻击程序访问所述被攻击地址并计时,所述计时采用linux C语言的计时函数;
[0042] 根据Cache MISS效果记录所述所有缓存组的计时差别,得到所述访问信息;
[0043] 重复进行所述攻击程序的调用直至满足所述访问次数,并将所述访问信息以单位时间的间隔进行存储,得到所述结果文件。
[0044] 结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述轮密钥包括猜测密钥值,所述分析单元包括:
[0045] 利用区分器对所述结果文件进行相关性分析,得到AES使用的缓存大小Cache size,并区分所述Cache的命中操作和失效操作;
[0046] 对所述结果文件进行轮运算分析得到所述猜测密钥值;
[0047] 利用查表法对所述猜测密钥值进行运算得到查表中间值;
[0048] 根据所述查表中间值和所述Cache size推断所述猜测密钥值是否正确;
[0049] 如果正确,则得到所述AES密钥。
[0050] 结合第二方面的第二种可能的实施方式,本发明实施例提供了第二方面的第三种可能的实施方式,其中,所述结果文件包括参考时间样本,所述分析单元还包括:
[0051] 分别计算所述被攻击数据对应的所述参考时间样本和其他时间样本的相关性系数;
[0052] 设定比较阈值,判断所述相关性系数和所述比较阈值的大小;
[0053] 如果所述相关性系数大于所述比较阈值,则归为同一操作组;
[0054] 如果所述相关性系数小于所述比较阈值,则归为不同操作组;
[0055] 将所述同一操作组和所述不同操作组对应的元素个数进行比较得到比值数据;
[0056] 根据所述比值数据判断所述Cache size是否被使用;
[0057] 如果所述Cache size被使用,则为所述命中操作。
[0058] 结合第二方面的第二种可能的实施方式,本发明实施例提供了第二方面的第四种可能的实施方式,其中,所述分析单元还包括:
[0059] 选取所述结果文件中相关性系数差别最大的所述被攻击数据;
[0060] 将所述差别最大的被攻击数据反推回的序号设定为所述猜测密钥值,其中,所述猜测密钥值为第十轮轮运算的密钥值。
[0061] 本发明提供了基于Cache的AES算法的安全评估方法和系统,包括:获取主存地址与Cache地址间的空间映射,并确定Cache中所有缓存组的地址,缓存组包括被攻击缓存组;利用PRIME方式访问空间映射,清除并占用缓存组和地址;调用被攻击程序以使被攻击数据存入被攻击缓存组中;利用PROBE方式确定被攻击缓存组,并将所有缓存组的访问信息进行间隔储存,从而得到结果文件;根据结果文件分析轮密钥,并根据轮密钥反推高级加密标准AES密钥。本发明实现了利用Cache攻击的方法,评估CPU在操作数据的过程中Cache命中或失效导致的硬件信息泄露,从而评判智能终端是否存在安全漏洞,弥补了硬件攻击的缺陷。
[0062] 本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
[0063] 为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

[0064] 为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0065] 图1为本发明实施例提供的基于Cache的AES算法的安全评估方法流程图;
[0066] 图2为本发明实施例提供的步骤S104方法流程图;
[0067] 图3为本发明实施例提供的步骤S105方法流程图;
[0068] 图4为本发明实施例提供的步骤S301方法流程图;
[0069] 图5为本发明实施例提供的基于Cache的AES算法的安全评估系统结构示意图;
[0070] 图6为本发明实施例提供的Cache结构表;
[0071] 图7为本发明实施例提供的步骤S102的运行示意图;
[0072] 图8为本发明实施例提供的步骤S103的运行示意图;
[0073] 图9为本发明实施例提供的步骤S104的运行示意图;
[0074] 图10为本发明实施例提供的PRIME&PROBE过程示意图;
[0075] 图11为本发明实施例提供的AES算法加密过程示意图;
[0076] 图12为本发明实施例提供的密钥扩展过程示意图;
[0077] 图13为本发明实施例提供的AES攻击流程图。
[0078] 图标:
[0079] 10-获取单元;20-第一攻击单元;30-调用单元;40-第二攻击单元;50-分析单元。

具体实施方式

[0080] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0081] 目前,大部分的软件攻击方法只适用于对操作系统等软件的安全进行评估,因此在硬件攻击方面存在很大缺陷,基于此,本发明实施例提供的基于Cache的AES算法的安全评估方法和系统,可利用Cache攻击的方法评估CPU在操作数据的过程中Cache命中或失效导致的硬件信息泄露,从而评判智能终端是否存在安全漏洞,弥补了硬件攻击的缺陷。
[0082] 实施例一:
[0083] 图1为本发明实施例提供的基于Cache的AES算法的安全评估方法流程图。
[0084] 目前针对智能终端的安全评估,主要对象是操作系统及应用的安全,对底层硬件的安全没有关注。本发明通过利用CPU访问Cache时的信息泄露,来破解密码算法的密钥,从而评估CPU硬件的安全。需要说明的是,下文将对Cache攻击的原理进行阐述。基于现代的程序运行模式,程序在加载到CPU运行时具有局部性,即程序访问的局部性。在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次。因此,对这些地址的访问就自然地具有时间上集中分布的倾向。而对于数据的访问的集中性虽不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象,就称为程序访问的局部性。
[0085] 根据程序的局部性原理,可以在主存和CPU通用寄存器之间设置一个高速的容量相对较小的存储器,把正在执行的指令地址附近的一部分指令或数据从主存调入这个存储器,供CPU在一段时间内使用。这对提高程序的运行速度有很大的作用。这个介于主存和CPU之间的高速小容量存储器称作高速缓冲存储器(Cache)。系统正是依据此原理,不断地将与当前指令集相关联的一个不太大的后继指令集从内存读到Cache,然后再与CPU高速传送,从而达到速度匹配。CPU对存储器进行数据请求时,通常先访问Cache。由于局部性原理不能保证所请求的数据百分之百地在Cache中,这里便存在一个命中率。即CPU在任一时刻从Cache中可靠获取数据的几率。命中率越高,正确获取数据的可靠性就越大。
[0086] 一般来说,Cache的存储容量比主存的容量小得多,但不能太小,太小会使命中率太低;也没有必要过大,过大不仅会增加成本,而且当容量超过一定值后,命中率随容量的增加将不会有明显地增长。只要Cache的空间与主存空间在一定范围内保持适当比例的映射关系,Cache的命中率还是相当高的。常见CPU的L1Cache分为DCache(数据Cache)和ICache(指令Cache),在进行Cache攻击时主要着眼点在访问的数据层面,即通过某些数据是否被访问来进行相关信息的确定,最终达到敏感信获取或者密钥破解过程。但由于L1Cache的访问速度极快,对程序设计和计时要求都非常高,攻击难度较大,成功率将很难保证。因此本文选择L2Cache进行Cache访问信息收集及密钥破解。Cache的大小为基本存储单元为Cache行(Cache line)。存储系统把Cache和主存储器都划分为相同大小的行。Cache与主存储器交换数据是以行为基本单位进行的。每一个Cache行都对应于主存中的一个存储块(memory block)。组成结构如图6所示,每一行是一个SET组,每一个SET组包含16个line。
[0087] Cache行的大小通常是2L字节。通常情况下是16字节(4个字)和32字节(8个字)。如果Cache行的大小为2L字节,那么对主存的访问通常是2L字节对齐的。所以对于一个虚拟地址来说,它的bit[31∶L]位,是Cache行的一个标识。当CPU发出的虚拟地址的bit[31∶L]和Cache中的某行bit[31∶L]相同,那么Cache中包含CPU要访问的数据,即称为一次Cache命中。为了加快Cache访问的速度,又将多个Cache行划分成一个Cache组(Cache Set)。Cache组中包含的Cache行的个数通常也为2的N次方的倍数。为了方便起见,取N=S。这样,一个Cache组中就包含2S个Cache行。这时,虚拟地址中的bit[L+S-1∶L]为Cache组的标识。虚拟地址中余下的位bit[31∶L+S]成为一个Cache标(Cache-tag)。它标识了Cache行中的内容和主存间的对应关系。
[0088] 在Cache中采用地址映射将主存中的内容映射到Cache地址空间。具体的说,就是把存放在主存中的程序按照某种规则装入到Cache中,并建立主存地址到Cache地址之间的对应关系。而地址变换是指当程序已经装入到Cache后,在实际运行过程中,把主存地址变换成Cache地址。地址的映射和变换是密切相关的。采用什么样的地址映射方法,就必然有与之对应的地址变换。常用的地址映射和变换方式包括直接映射和变换方式、组相联映射和变换方式以及全相联和变换方式。目前在使用中最常见的是组相联的关联模式。在本次攻击过程中所使用的手机的CPU L2Cache为16路组相联,共512KB。
[0089] 根据Cache工作原理,同一条访问存储器的指令在目标数据不在Cache中时就会发生Cache失效,表现在程序的执行结果上就是较长运行时间或是较大能量的消耗,就一般的处理器来说命中的时间大概在几个纳秒之内,而失效的时间因为要访问主存,则需要几十个纳秒。因此如果能够确定在进行某种加密算法时存在访问信息泄露的现象,则在满足下列条件时即可进行加密算法的密钥破解,如表1所示。
[0090] 表1 Cache攻击条件表
[0091]
[0092] 参照图1,基于Cache的AES算法的安全评估方法包括:
[0093] 步骤S101,获取主存地址与Cache地址间的空间映射,并确定Cache中所有缓存组的地址,缓存组包括被攻击缓存组;
[0094] 步骤S102,利用PRIME方式访问空间映射,清除并占用缓存组和地址;
[0095] 具体地,本发明实施例所涉及的工具主要使用PRIME PROBE1的策略来实现表1中条件3的准备和条件4的计时操作。在进行PRIME PROBE的过程中首先需要通过PRIME的方式来尽可能的将Cache全部占用,进行驱逐,PRIME的过程图示如图7所示,通过攻击程序的主动作用,周期性地访问超过Cache上限的数据,确保Cache中所有的数据均为攻击程序地址空间的数据。
[0096] 这里,首先攻击程序映射了10M数据,对10M数据以LINE为单位查询所有虚拟地址所对应的物理地址,通过物理地址确定对应的SET号,并对同一SET号的虚拟地址进行统计记录,直到达到访问地址要求。在后续的PRIME PROBE过程中,通过操作不同SET所对应的虚拟地址实现PRIME和PROBE过程。
[0097] 在实际操作过程中针对具体的SET进行PRIME,此类设置经实验表明能够最为有效地反映出PRIME PROBE的效果。即为访问具体虚拟地址,并读出此地址的数据,实际上相当于执行了将本地值的数据缓存到Cache中的功能。
[0098] 步骤S103,调用被攻击程序以使被攻击数据存入被攻击缓存组中;
[0099] 具体地,通过进程调度来使被攻击程序正常运行,因此被攻击程序在进行加解密等敏感操作时必然会访问相关数据,此时会将不在Cache中的数据缓存到Cache中,运行过程如图8所示.
[0100] 步骤S104,利用PROBE方式确定被攻击缓存组,并将所有缓存组的访问信息进行间隔储存,从而得到结果文件;
[0101] 具体地,如图9所示,在被攻击程序敏感操作执行完成后,使用攻击程序访问所有之前缓存的地址并进行操作计时,如果此地址的数据已经被被攻击程序占用,那必然会产生Cache MISS效果因此计时会产生较为明显的差别,并能进行统计和区分。
[0102] 这里,然后执行AES加密过程(或其他被测算法),并在AES结束后针对某一SET进行PROBE过程,共针对此SET进行21次访问以能够明显的表现出PROBE的MISS时间。
[0103] 步骤S105,根据所述结果文件分析轮密钥,并根据轮密钥反推高级加密标准AES密钥。
[0104] 具体地,在表1中条件1满足的情况下,就能多次进行PBOBE统计,并根据统计结果查找是否存在联系的规律。以AES为例,其密钥将对查表的位置产生影响,而表数据在操作过程中会缓存在Cache中,必然在PROBE过程中对访问时间产生影响,因此通过统计分析过程可以在有限的采样中分析出密钥的相关信息。
[0105] 需要说明的是,在实际实验中PRIME&PROBE是逐次针对每一个SET进行的,具体流程图如图10所示。
[0106] 根据本发明的示例性实施例,被攻击程序包括AES加密运算程序,地址包括被攻击地址,利用PROBE方式确定被攻击缓存组,并将所有缓存组的访问信息进行间隔储存,从而得到结果文件包括:
[0107] 参照图2,步骤S201,预设访问次数,在AES加密运算程序执行完毕后,调用攻击程序访问被攻击地址并计时,计时采用linux C语言的计时函数;
[0108] 具体地,高精度计时是Cache分析中的一个需要解决的关键技术问题。目前,大部分智能终端的操作系统都是基于linux的,因此本发明中,高精度的解决方案是采用linux C语言的计时函数”clock_gettime”,计时的精度可以达到纳秒级别。理论上,Cache命中和失效会有明显的操作时间上的差异,但是在实际中,想要观察到这种差异还需考虑实验中的一个限制条件,由于是多核处理器的多任务操作系统,计时难免会受到操作系统调度的干扰,导致计时误差增大。要解决这个问题,一方面要想办法调高间谍程序和目标程序的优先级,尽量使其成为原子操作;另外一方面是要通过大量重复性的实验来统计分析如何选取合适的区分器来消弱这种误差的影响。
[0109] 因为Cache访问速度很快,为了统计计算代码执行时间达到CPU Cycle级别,也需要读取类似x86的TSC寄存器。在ARMv8中,有Performance Monitors Control Register系列寄存器,其中的PMCCNTR_EL0就类似于x86的TSC寄存器,通过此高精度的寄存器读取能够较为精确的反应实际的PROBE运行时间,在使用之前需要针对此寄存器进行初始化。
[0110] 步骤S202,根据Cache MISS效果记录所有缓存组的计时差别,得到访问信息;
[0111] 步骤S203,重复进行攻击程序的调用直至满足访问次数,并将访问信息以单位时间的间隔进行存储,得到结果文件。
[0112] 根据本发明的示例性实施例,轮密钥包括猜测密钥值,根据结果文件分析轮密钥,并根据轮密钥反推AES密钥包括:
[0113] 参照图3,步骤S301,利用区分器对结果文件进行相关性分析,得到AES使用的缓存大小Cache size,并区分Cache的命中操作和失效操作;
[0114] 具体地,要区分两种操作的执行时间就需要构造区分器,一般常用的区分器多以利用样本分布的期望和方差来构造,例如以不同分组的均值来区分命中或失效。本发明中使用相关性分析的方法来区分不同的操作,通过计算两个分组的分布的相关性系数,然后设定一个相关性系数的阈值,大于阈值的认为是统一操作,小于阈值的认为是不同的操作。这样可以大大降低由于各种干扰带来的误差对统计特征的影响。
[0115] 步骤S302,对结果文件进行轮运算分析得到猜测密钥值;
[0116] 步骤S303,利用查表法对猜测密钥值进行运算得到查表中间值;
[0117] 步骤S304,根据查表中间值和Cache size推断猜测密钥值是否正确;
[0118] 如果正确,则得到AES密钥。
[0119] 具体地,目前的智能终端的操作系统都有着很好的多任务管理机制,有着固定规律的实验操作行为在重复执行时,可能会被操作系统识别出某种模式,从而对实验进行干预来优化执行效率。这样就会对计时样本的统计特征带来一定的影响,导致无法满足样本的代表性和独立性。为了使得实际情况满足上述假设,在进行实验时,我们对实验数据和观测变量均进行了随机化,使得实验的操作行为无法被预测,操作系统便无法干预实验程序运行,以保证统计的时间数据样本满足要求代表性和独立性的要求。
[0120] 根据本发明的示例性实施例,结果文件包括参考时间样本,利用区分器对结果文件进行相关性分析,得到AES使用的缓存大小Cache size,并区分Cache的命中操作和失效操作包括:
[0121] 参照图4,步骤S401,分别计算被攻击数据对应的参考时间样本和其他时间样本的相关性系数;
[0122] 步骤S402,设定比较阈值,判断相关性系数和比较阈值的大小;
[0123] 步骤S4031,如果相关性系数大于比较阈值,则归为同一操作组;
[0124] 步骤S4032,如果相关性系数小于比较阈值,则归为不同操作组;
[0125] 步骤S404,将同一操作组和不同操作组对应的元素个数进行比较得到比值数据;
[0126] 步骤S405,根据比值数据判断Cache size是否被AES使用;
[0127] 步骤S406,如果Cache size被使用,则为命中操作。
[0128] 具体地,为对实验结果进行统计分析以及实验优化,本发明实施例提出了以下优化措施:
[0129] (1)使用大量重复实验降低误差:
[0130] 理论上,Cache命中和失效会有明显的操作时间上的差异,但是在实际中,想要观察到这种差异还需考虑实验中的几个限制条件,一是计时函数的精度问题,是否能够捕捉到这种差异;二是,由于是多核处理器的多任务操作系统,计时难免会受到操作系统调度的干扰,导致计时误差增大。
[0131] 使用高精度计时函数可以解决第一个问题,要解决第二个问题,一方面要想办法调高间谍程序和目标程序的优先级,尽量使其成为原子操作;另外一方面是要通过大量重复性的实验来统计分析如何选取合适的区分器来消弱这种误差的影响。
[0132] 为了研究第二个问题带来的影响,我们分别对相同和随机的数据进行大量重复性的实验,记录统计的时间样本,我们使用直方图对样本的分布进行刻画。直方图(Histogram)是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。通过直方图我们可以知道大体的概率密度函数。在刻画直方图时,组距的选择直接影响着对概率密度函数刻画的准确度,组距选为计时的最小单位精度可以最大限度的提高刻画精度。
[0133] 通过直方图的形状我们发现,相同数据操作时间的样本分布接近于正态分布,而不同数据的操作时间的样本分布没有明显的特征。对于两个不同的数据A和B,操作时间的直方图形状都接近于正态分布,但是中心值(u)存在着明显的差异。因此通过u的差距,理论上可以区分出Cache的命中和失效。
[0134] (2)采样随机数据和随机探测来去除干扰:
[0135] 假设样本满足代表性和独立性,代表性即每个样本均与总体同分布;独立性即为样本之间独立同分布。
[0136] 目前的智能终端的操作系统都有着很好的多任务管理机制,有着固定规律的实验操作行为在重复执行时,可能会被操作系统识别出某种模式,从而对实验进行干预来优化执行效率。这样就会对计时样本的统计特征带来一定的影响,导致无法满足样本的代表性和独立性。
[0137] 为了使得实际情况满足上述假设,在进行实验时,我们对实验数据和观测变量均进行了随机化,使得实验的操作行为无法被预测,操作系统便无法干预实验程序运行,以保证统计的时间数据样本满足要求。
[0138] 根据本发明的示例性实施例,对结果文件进行轮运算分析得到猜测密钥值包括:
[0139] 选取结果文件中相关性系数差别最大的被攻击数据;
[0140] 将差别最大的被攻击数据反推回的序号设定为猜测密钥值,其中,猜测密钥值为第十轮轮运算的密钥值。
[0141] 具体地,下文对AES密钥的破解方法进行详细叙述。智能终端上的AES算法主要是软件实现的,为了提高运算的速度,采用了空间换时间的策略:即AES的轮运算(字节替换、行移位、列变换)使用查表法实现,因为最后一轮没有字节替换操作,因此AES的加解密运算过程中,一共使用了两组表格,一组是前9轮使用的:Te0,Te1,Te2,Te3,一组是用于最后一轮的:Te4_1、Te4_2、Te4_3、Te4_4。有两个大的表T1和T4,T1表用于标准轮运算,T4表用于最后一轮运算。每个表均有256个元素,每个元素为4个字节,故表的大小均为256*4个字节。ARMv8的一个cache size的存储空间为64个字节,因此每个表格都需要16个cache size,一个cache size可以存储16个元素,因此当8bit数据的高4bit相同时,查表即会落到同一个cache size中。
[0142] 对同一个sbox进行查表时,对于同一密钥,不同的输入数据就会导致Cache的命中或失效,通过查表的中间数据与Cache命中或失效的联系,推断出密钥值。
[0143] 区分命中或失效两种操作是攻击成功的基础,因此需要构造合适的区分器,一般常用的区分器多以利用样本分布的期望和方差来构造,例如以不同分组的均值来区分命中或失效。本发明中使用相关性分析的方法来区分不同的操作,通过计算两个分组的分布的相关性系数,然后设定一个相关性系数的阈值,大于阈值的认为是同一操作,小于阈值的认为是不同的操作。这样可以大大降低由于各种干扰带来的误差对统计特征的影响。
[0144] 以某一个Cache size为例,分别计算数据00到FF对应的probe获得样本的分布,然后以00数据的分布为参考分布,计算其它数据对应的分布与参考分布之间的相关性系数。取一个相关性阈值的经验值rf,将相关性系数大于等于rf的分为一组,小于rf的分组为一组。计算两组元素个数的比值d,当d约等于16/240时,判断该Cache size被使用。
[0145] 理想情况下,大量随机数的prime+AES+probe的实验后,通过区分器处理可以发现:使用的cache size数量为16个,并且size号是连续的。但是由于在AES的运算过程中,Cache中除了需要存储Te4表外,可能还需要存储其它的中间变量,因此在实际评估实验中通过区分器识别出来被占用的Cache size可能约小于16个。
[0146] 通过区分器,可以判断出AES使用了哪些Cache size,然后通过猜测密钥值,与数据进行运算得到查表的中间值,对于使用了同一个Cache size的不同数据,查表的中间值的高4bite数据理论上相同,因此通过查表中间值的高位是否相同即可判断是否是正确的密钥猜测。
[0147] 通过区别器识别出的多个被使用的Cache size,每一个均可用于判断正确的密钥值,多个可以相互检验,以增加结果的稳定性。
[0148] 这里,为更好地展示AES攻击流程,以下对AES算法加密过程进行介绍。如图11所示,以128-bit密钥的AES/Rijndael算法为例。为优化软件执行性能,AES加密程序会预计算并存储4个大的查找表T0~T3。在完成前9轮针对T0~T3的4次查找后,还在最后的第10轮,对一个简化的表T4进行16次查找。为了进行整个10轮加密过程,还需要将128-bit的原始密钥扩展为176-byte;即11个被单独运用的16-byte密钥。为成功推出密钥扩展过程如图12所示。在密钥扩展过程中,轮密钥是由种子密钥扩展而成,因此,知道了种子密钥就知道了轮密钥。而知道某轮(假设第i轮)的轮密钥W[4i],W[4i+1],…,W[4i+Nb-1]。由密钥扩展方案的数学模型,不仅可以推导种子密钥,而且所有轮密钥都可以推出。
[0149] 以本发明实施例的实验环境下Nb=4,Nk=4为例说明:
[0150]
[0151] 可以看到在获取到最后一轮密钥后能够倒推出AES算法的原始密钥,因此结合AES的加密方式和密钥扩展规律,本Cache攻击系统采用的攻击模式为针对最后一轮密钥的攻击。
[0152] 实施例二:
[0153] 攻击流程可参照图13,整个攻击过程分为两个部分,第一部分需要在手机端运行,通过上文所描述的PRIME和PROBE的方式来获取一定数量的信息,简单可理解为信息采集过程。整个流程介绍如下:
[0154] (1)初始化阶段。申请空间映射并确定所有SET的虚拟地址,为PRIME和PROBE过程做好准备。
[0155] (2)PRIME阶段。本阶段通过访问实际映射,将L2Cache中缓存的的所有数据清除并占用。确保后续的加密操作对Cache的访问过程能够保留在Cache中以备后续使用。
[0156] (3)调用加密程序,在已知明文和密文的情况下进行AES加密运算。
[0157] (4)PROBE过程。在加密完成后通过PROBE过程来确定影响的SET,并将所有SET的访问信息以单位时间的间隔保存。在实际操作过程中,共分为16个区间进行保存。
[0158] (5)在执行本操作之前,可以设定针对某一SET共进行多少次访问,当达到总体次数后整个循环停止。
[0159] (6)将所有数据进行整理并存储为结果文件。
[0160] 攻击的第二个部分主要为分析过程,此过程可以在手机或者PC电脑上执行。攻击的模式是根据采集的数据分析第十轮的轮密钥,通过此密钥再反推出整个AES密钥。分析过程如下:
[0161] (1)在分析时需要一个字节一个字节分析,需要按照密文反推回第10轮的输入字节排序结果文件。
[0162] (2)然后根据所有的数据计算相关性。
[0163] (3)针对所有的数据的相关性进行分组。
[0164] (4)比较最终的结果,选取相关性差别最大一组数据,其反推回的序号值即为第10轮的密钥值。
[0165] 本发明提供了基于Cache的AES算法的安全评估方法和系统,包括:获取主存地址与Cache地址间的空间映射,并确定Cache中所有缓存组的地址,缓存组包括被攻击缓存组;利用PRIME方式访问空间映射,清除并占用缓存组和地址;调用被攻击程序以使被攻击数据存入被攻击缓存组中;利用PROBE方式确定被攻击缓存组,并将所有缓存组的访问信息进行间隔储存,从而得到结果文件;根据结果文件分析轮密钥,并根据轮密钥反推高级加密标准AES密钥。本发明实现了通过软件攻击的方法(Cache攻击)评估智能终端上运行的密码算法是否存在硬件的泄露,与传统的硬件安全评估方法相比,成本低,速度快,普适性强。因此,使用本发明可以快速检测出智能终端的密码算法是否存在安全漏洞,使用较小的代价阻止存在安全漏洞的终端流入市场。
[0166] 实施例三:
[0167] 图5为本发明实施例提供的基于Cache的AES算法的安全评估系统结构示意图。
[0168] 参照图5,基于Cache的AES算法的安全评估系统,包括:
[0169] 获取单元10,用于获取主存地址与Cache地址间的空间映射,并确定Cache中所有缓存组的地址,缓存组包括被攻击缓存组;
[0170] 第一攻击单元20,用于利用PRIME方式访问空间映射,清除并占用缓存组和地址;
[0171] 调用单元30,用于调用被攻击程序以使被攻击数据存入被攻击缓存组中;
[0172] 第二攻击单元40,用于利用PROBE方式确定被攻击缓存组,并将所有缓存组的访问信息进行间隔储存,从而得到结果文件;
[0173] 分析单元50,用于根据结果文件分析轮密钥,并根据轮密钥反推高级加密标准AES密钥。
[0174] 根据本发明的示例性实施例,被攻击程序包括AES加密运算程序,地址包括被攻击地址,第二攻击单元包括:
[0175] 预设访问次数,在AES加密运算程序执行完毕后,调用攻击程序访问被攻击地址并计时,计时采用linux C语言的计时函数;
[0176] 根据Cache MISS效果记录所有缓存组的计时差别,得到访问信息;
[0177] 重复进行攻击程序的调用直至满足访问次数,并将访问信息以单位时间的间隔进行存储,得到结果文件。
[0178] 根据本发明的示例性实施例,轮密钥包括猜测密钥值,分析单元包括:
[0179] 利用区分器对结果文件进行相关性分析,得到AES使用的缓存大小Cache size,并区分Cache的命中操作和失效操作;
[0180] 对结果文件进行轮运算分析得到猜测密钥值;
[0181] 利用查表法对猜测密钥值进行运算得到查表中间值;
[0182] 根据查表中间值和Cache size推断猜测密钥值是否正确;
[0183] 如果正确,则得到AES密钥。
[0184] 根据本发明的示例性实施例,结果文件包括参考时间样本,分析单元还包括:
[0185] 分别计算被攻击数据对应的参考时间样本和其他时间样本的相关性系数;
[0186] 设定比较阈值,判断相关性系数和比较阈值的大小;
[0187] 如果相关性系数大于比较阈值,则归为同一操作组;
[0188] 如果相关性系数小于比较阈值,则归为不同操作组;
[0189] 将同一操作组和不同操作组对应的元素个数进行比较得到比值数据;
[0190] 根据比值数据判断Cache size是否被使用;
[0191] 如果Cache size被使用,则为命中操作。
[0192] 根据本发明的示例性实施例,分析单元还包括:
[0193] 选取结果文件中相关性系数差别最大的被攻击数据;
[0194] 将差别最大的被攻击数据反推回的序号设定为猜测密钥值,其中,猜测密钥值为第十轮轮运算的密钥值。
[0195] 本发明实施例提供的基于Cache的AES算法的安全评估系统,与上述实施例提供的基于Cache的AES算法的安全评估方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。首先,本发明实施例通过利用CPU访问Cache时的信息泄露,来破解密码算法的密钥,从而实现了评估CPU硬件的安全;其次,关于高精度的解决方案本发明实施例采用linux C语言的计时函数”clock_gettime”,计时的精度可以达到纳秒级别;并且,本发明实施例一方面调高间谍程序和目标程序的优先级,尽量使其成为原子操作,另一方面通过大量重复性的实验来统计分析如何选取合适的区分器来消弱操作系统干扰的影响,结果可靠;另外,本发明实施例对实验数据和观测变量均进行了随机化,使得实验的操作行为无法被预测,操作系统便无法干预实验程序运行,以保证统计的时间数据样本满足要求代表性和独立性的要求;最后,本发明实施例通过计算样本概率分布之间的相关性系数来区分不同的操作,并且利用多组独立的密钥猜测结果进行相互校验以保证结果的正确性。
[0196] 本发明实施例所提供的基于Cache的AES算法的安全评估方法和系统以及系统的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0197] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0198] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0199] 最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。