基于行为的Cache攻击检测方法与流程

文档序号:15616098发布日期:2018-10-09 21:25阅读:223来源:国知局
本发明涉及cache攻击检测领域,具体涉及到利用进程访问cache的行为差异,结合机器学习中的bp神经网络分类技术来进行cache攻击检测的方法。
背景技术
:随着计算机的广泛使用,计算机信息传递、存储的安全问题已成为了人们密切关注的问题,为了保障信息的安全性,许多信息都会经过加密系统进行加密处理。在这些加密系统执行过程中,物理设备会因为不同的指令操作而表现出不同的特性,例如指令执行时间的长短,耗电量的增减等,这些信息,泄露了密钥或者其他与加密相关的信息。这种通过获取实现加密系统的物理平台所泄露的信息,从而恢复加密密钥的攻击方式称为旁路攻击。cache攻击是一种新型的旁路攻击,它利用现代cpu系统中cache与内存之间的结构特性,来获取加密系统执行加密算法时,所泄露的高速缓存(cache)的行为信息,通过分析这些信息来进行攻击。cache攻击的一个重要的应用是利用现代处理器的存储设计的特点来获取加密密钥,在执行加密过程中,处理器的组件会产生与执行时间和功耗有关的数据变量,这些变量会直接给出密码值或者泄露系统的敏感信息。这种攻击因为具有实现成本低、攻击效果好的特点,所以被广泛应用,例如,监听键盘的输入,窃取密钥等,对计算机信息安全产生了巨大的威胁。cache是处于cpu与内存之间的一级存储器,虽然容量比内存小,但其读取速度比内存要快很多,所以cpu访问cache所花费的时间比访问内存要少。cache的结构有三层,l1级,l2级和l3级cache,l3级cache中包含了l1和l2级cache中的所有内容,并且l3级cache被所有处理器共享,攻击中利用的cache是l3级cache。cache中存储的是被频繁访问的内存位置的内容。当cpu需要读取数据a时,首先去cache中查找,若a在cache中,称cache命中,直接访问cache,读取a;反之,若a不在cache中,则称为cache失效,此时cpu需要到内存中去查找a,并将a复制到cache中,cache缺失时cpu读取操作所花费的时间比cache命中时明显要长。cache攻击监测受害者进程,分析受害者进程访问cache时所泄露出的信息,从而得到可以恢复密钥信息的存储位置,实现攻击。近年来,对于这类攻击的检测方法主要分为两类,第一类是基于签名的方法;这种方法通过对攻击的大量分析,得出一个经验阈值,根据这个阈值来判断进程是否为攻击者,这种方法只适用于检测已知的攻击类型。第二类是基于异常检测的方法,首先定义“正常”情况的数据模型,然后用待测样本与数据模型匹配,若匹配,则说明待测样本属于“正常”情况;不匹配,则说明待测样本为“异常”情况。这种方法虽然既可以识别已知的攻击类型也可以识别未知的攻击类型,但是,由于异常算法使用的“正常”和“异常”样本的数量差较大(如1000个“正常”,10个“异常”),导致算法对“异常”样本特征认识不足,从而出现将“异常”样本划分为“正常”样本的情况。基于此背景,本方法提出一种基于行为的检测技术,通过对攻击进程以及其他良性进程的行为分析,发现攻击进程在攻击过程中,访问cache的行为与其他良性进程有较大的差异,因此可以将进程访问cache的行为作为区分攻击和良性进程的依据。进程访问cache的行为可以通过计算机系统上的硬件性能事件来表征。硬件性能事件是处理器上一组事件用于反映微处理器各个部件在执行程序时的性能情况,例如事件inst_retired,表示程序执行完成后的各类指令的总数。这些硬件事件可以通过访问计算机上的硬件性能计数器来获取。硬件性能计数器是几乎所有微处理器上都存在的一组寄存器,用于计算硬件性能事件发生的次数或者记录计算机的性能状况。本方法利用硬件性能计数器,统计进程的cache访问相关的事件发生的次数,如进程访问最后一级cache的次数,进程执行的指令总数等,通过这些信息可以得知进程访问cache的行为。随后,利用bp神经网络算法学习进程对cache的访问行为,构建分类检测模型,将系统上的进程分为良性和攻击进程,从而检测出攻击进程。bp神经网络具有较强的自学习及自适应能力,适用于解决数据为数值型的二分类问题,符合本发明的需求,因此,本发明选择bp神经网络算法来构建分类模型。bp神经网络其结构如图1所示,一般由三层构成,输入、输出和隐层,每层是由多个为节点组成,每个节点相当于一个处理单元,其结构如图2所示,初始时会对每个节点赋予权重和初始值,节点会根据权重和初始值对接收的数据进行处理计算后输出。bp神经网络算法包含两个阶段,正向传播和反向传播。正向传播是从输入层经隐层到输出层的过程,在隐层中会计算各层节点的输出值;反向传播,首先将输出层输出的实际结果与期望的输出结果进行比较,如果未能达到期望的输出,则反向计算隐层和输入层的期望输出值与实际输出值之间的误差,然后依据误差,修正前一层的神经元连接权值,使得误差趋向最小或者达到预设的误差范围。技术实现要素:本发明针对目前cache攻击的严重和迫切性,提出一种基于行为的cache攻击检测方法,核心思想是通过分析提取cache攻击的攻击行为,然后利用bp神经网络学习技术学习cache攻击的行为,构建分类器对系统正在运行的进程进行分类,从而检测出攻击进程。本发明提供了一种检测cache攻击的方法,方法实现的架构如图3所示,其中数据收集模块用于收集进程访问cache的行为数据、预处理模块,用于对数据进行归一化处理、检测模型训练模块,主要用于进行特征选择和训练bp网络模型操作、攻击检测模块,利用训练完成的检测模型对系统上的进程进行检测。方法实现主要包含以下步骤:1.数据收集数据收集的对象是与进程访问cache行为相关的硬件性能事件。这些硬件性能事件能够表示进程在执行阶段是否访问了cache以及访问cache时是否发生了cache缺失或者命中,这些事件发生的次数可以通过配置计算机上的硬件性能计数器来统计。硬件性能计数器会统计进程在执行期间,事件发生的次数,对应事件发生一次,硬件性能计数器的值自动加1。硬件性能计数器的值通过访问负责管理硬件性能计数器的性能监测单元来获取,性能监测单元只能通过专门的性能分析工具来访问,对于不同的操作系统来说,性能分析的工具有所不同,windows常用的性能分析工具是vtunes,linux上常使用的是perf,papi等。数据收集主要可以分为两个步骤,首先确定要收集的硬件性能事件集以及需要进行数据收集的目标进程,然后为这些事件配置硬件性能计数器,最后通过性能分析工具访问性能监测单元,获取每个进程的性能事件的信息。本发明采用的监督式的bp神经网络算法所以需要收集两种类别的进程的数据,一类是攻击进程,一类是良性进程。数据集中的每条数据在机器学习中称为一个样本,所收集进程的每个与cache访问相关的硬件性能事件称为特征。2.预处理数据预处理主要对数据进行清理和特征归一化操作。数据收集时,不能保证全部的数据都是有效的,数据集中可能存在与错误或者冗余的数据,这些垃圾数据会影响检测的性能,得出误导性的结论,所以需要对数据进行数据清理操作,主要是是删除全0和冗余的数据。预处理最核心的步骤是特征归一化处理。特征归一化指将数据集中的特征值的取值范围限制在指定范围内的过程,一般是[0,1]区间内。数据集中,每个特征都有自己的单位和取值范围,在实际算法执行中,数据范围大的特征在运算中发挥的作用可能比范围小的特征要大得多,因此为了使得每个特征都处于同一数量级下,需要对数据进行归一化处理。处理使用的方法是最大最小规范化,对数据进行线性变换的方式如下所示:其中x*为归一化后的数据,x表示归一化前的数据,xmin表示样本数据的最小值,xmax表示样本数据最大值。3.特征选择通过数据收集阶段收集的特征比较多,但是,并不是每个事件都能够描述缓存攻击的行为,与缓存攻击的检测有关,这些不相关的事件会对检测的精确度产生干扰,此外,收集过多的特征会为计算机系统带来不必要的开销,影响系统运行的效率,因此需要通过特征选择阶段,对特征进行筛选,找出最能代表攻击行为的特征。特征选择使用的方法是基于fisherscore的过滤法,其核心思想是计算每个特征的f-score值,然后由大到小排序选择特征。对于一个特征来说,可以根据不同类别样本的平均值与标准差之间的差异,来判断其是否具有鉴别能力,对于同一类别的样本来说,标准差与平均值之间差异要尽可能的小,对于不同类别的样本来说,标准差与平均值之间的差异要尽可能大,这样的特征才能够训练出有效的检测模型。本文使用f-score来衡量标准差与平均值之间的差异程度,即衡量特征的鉴别能力。特征的f-score值越大表明该特征在正负样本中的区别越明显,则越能区分两个样本。fisher-score的计算方式如下所示:其中,fi表示样本的第i个特征,f(fi)为样本fi的f-score值,μfi,p和μfi,n分别表示第i个特征在正样本集和负样本集中的平均值,和分别表示第i个特征在正负样本集中的方差,计算方式为:其中fj,i表示第i个特征在样本j中的值。由公式(2)可以得出,对于特征i,其在正负样本之中的差异越大,f(fi)的值越大,特征i对于区分正负样本就越重要。本系统中的各个特征的f-score计算流程如下,首先计算各个特征在正样本集中的均值与方差,然后计算特征在负样本集中的均值与方差,计算特征在整个样本集中的均值,最后根据公式(2)得出f-score值。最后计算f-score的平均值,作为特征选择的阈值,将大于阈值的特征构成的集合作为训练的特征集。在本发明选用f-score值大于平均值的特征作为分类检测的特征,分别是进程执行的总指令条数、最后一级缓存访问的次数以及最后以及缓存发生失效的次数。4.bp模型训练本发明使用优化后的bp神经网络算法来构建攻击检测模型,模型会将系统上的进程分为攻击进程和良性进程两个类别,从而实现攻击的检测。模型构建的过程实质就是使用收集的数据集样本训练神经网络分类器的过程,主要包含以下几个步骤:(1)确定神经网络的结构。网络结构需要确定4个参数,网络层数、输入层节点数、输出层节点数以及隐层节点数。●网络层数。神经网络必须包含输入和输出层。根据kolmogorov理论:任何一个连续函数都可以用一个三层神经网络来精确实现。隐层数量越多,反向传播的过程越复杂,网络训练的时间越长。因此本发明选用三层结构的网络模型;●输入层节点数。输入节点的个数与输入的特征的数量相同,本发明中的输入特征数为3,因此输入神经元的个数为3;●输出层节点数。输出层节点个数与需要分类的类别数目相同,本文将进程分为攻击和良性两类,所以输出层的节点数为2;●隐层节点数。隐层节点数选择较为复杂,首先根据经验公式确定隐层节点个数的取值范围,然后在实际的网络训练过程中,根据网络的训练效果,确定最后的最优值。隐层节点的选择的经验公式为:其中n表示隐层节点个数,nin表示输入层节点个数,nout表示输出层节点个数,α是一个常数,取值范围在1~10之间,由此可以得到本发明中的隐层节点的取值范围在4~14之间,最终确切的隐层节点个数需要通过对bp网络进行实际的训练之后来获取,训练中使用不同的隐层节点数,观察网络的训练次数,能够使得网络的训练次数不在变化,趋于稳定的节点数为最终的节点个数。(2)选择激活函数。激活函数作用是计算隐层以及输出层的节点的输入与输出,样本特征值和输入层与隐层节点的连接权值,通过激活函数计算后得到的结果为隐层节点的输入值,再次利用激活函数,将隐层的输入值和隐层与输出层的节点连接权值作为激活函数的输入,得到的结果为输出层的输出。本发明选择sigmoid函数作为激活函数,它是常用的bp神经网络的激活函数,其表达式如下所示:f(x)=1/(1+e-x)(5)选择sigmoid型函数的原因是,在网络结构相同的情况下,s型函数收敛速度更快,需要训练的时间更短,符合本发明需要快速训练检测要求。(3)初始化权重值。权重指的是每层节点之间的连接权重,在网络训练之前,权重值需要随机的设置,本发明将节点的连接初值权重设置为区间(-1,1)内的随机数。在后续的训练过程中,网络会根据训练样本的实际输出与期望输出不断调整权重值,直至权重值稳定,此时可认为网络收敛,训练结束。(4)训练网络。网络模型及网络参数确定之后,开始利用收集的样本集合训练网络,具体的训练流程如图4所示,主要包含以下步骤:步骤1:随机选择一个样本输出至网络中,将进程访问缓存特征的3个值分别赋值给输入层的3个节点,如果样本是缓存攻击样本则期望输出为0,若为良性进程样本,期望输出为1;步骤2:计算每层的输出,包含输入层至隐层以及隐层到输出层的输出;首先需要通过激活函数计算各神经元的输出,计算方式为:其中,hj表示神经元的输出,wij表示前一层第i个神经元到后一层的第j个神经元的连接权值,xi表示前一层的第i个神经元的输入。然后将该层神经元的输出累加,得到该层的输出。步骤3:计算实际输出与期望输出的误差,计算方式为:其中ep表示第p个样本的误差,yk表示第k个神经元的实际输出,uk表示第k个神经元的期望输出。总样本误差为各个样本误差的累加值。步骤4:计算方向传播误差信号,计算方式为:δq=uq(1-uq)(yq-uq)(8)其中,uq表示输出神经元的第q个节点的期望输出,yq表示第q个节点的实际输出。步骤5:调整连接权值,以调整第q个输出节点uq与第p个隐层节点hq的连接权值wpq调整方式为:wpq=wpq+αδquq(9)其中,α为学习率,δq上一步计算出的传播误差信号。步骤6:此时完成一次训练,判断是否满足误差要求或者达到了最大训练的次数,如果是,则停止训练,否则跳转到起始步,重新输入样本进行训练。5.攻击检测攻击检测流程如图5所示,首先更新运行系统上的进程列表,并为需要收集的每个事件配置设置性能计数器,然后开始周期性的读取性能计数器的值,并将读取数据进行预处理后,输入到训练完成的bp网络检测模型中,bp网络模型会对输入的数据类别进行预测,并输出预测结果,如果是cache攻击则向系统发出警告,该进程为cache攻击进程,否则继续进行检测。附图说明图1:神经网络结构图图2:神经元结构图图3:方法实现架构图图4:神经网络训练流程图图5:检测流程图图6:f-score排序图具体实施方式本发明的硬件环境主要是一台pc主机,pc主机的cpu为intel(r)core(tm)i5-4590,3.30ghz;软件环境为:ubuntu14.04,64位操作系统,使用工具matlab8.6.0训练神经网络,实验过程中需要重现cache攻击加密系统的过程,以测试系统的检测能力,加密系统需要使用openssl库。同时本发明通过配置并访问硬件性能计数器的方式来收集数据,因此必须配置有可用的硬件性能计数器。开发过程中具体的软硬件环境要求如表1所示表1开发环境配置表1.bp网络训练(1)算法描述算法步骤:1)随机初始化网络权值和神经元阈值;2)前向传播:根据固定公式计算隐层神经元和输出层神经元的输入输出;3)后向传播:根据公式修正权值和阈值。其伪代码如下:2.实例说明以在linux系统上,检测flush+reload攻击gpg签名为例,详述攻击检测过程。1、数据收集。本发明将cache攻击程序定义为正样本,将正常程序定义为负样本。首先需要确定运行平台所支持的与cache相关的硬件性能事件,在终端使用papi_avail命令查看,本发选用的平台上可用的硬件性能事件如表1所示。然后为硬件能事件配置硬件性能计数器。对于正样本数据,收集流程如下,首先需要在计算机上创建gpg加密进程,然后运行flush+reload攻击进程,利用数据收集工具读取攻击进程中的硬件计数器中的信息。负样本数据包括在无攻击的情况下进行gpg对pdf文件签名的进程数据以及一些常用的linux命令包括cd、mv、cp、apt-get、ls、pwd等。事件名称说明/次事件名称说明/次papi_l1_tcml1级缓存未命中papi_l2_ichl2级指令缓存命中papi_l1_tchl1级数据缓存命中papi_l2_dcrl2级数据缓存读papi_l1_tchl1级缓存命中papi_tot_ins总指令执行papi_l1_icml1级指令缓存未命中papi_l2_dcml2级数据缓存未命中papi_l1_tcal1级缓存存取papi_l2_dcal2级数据缓存存取papi_l3_tchl3级缓存命中papi_l2_tcal2级缓存存取papi_l3_tcal3级缓存存取papi_tot_cyc总共执行的周期papi_l3_tcml3级缓存未命中表1硬件性能事件表2、预处理。预处理主要是对数据进行归一化处理。选取部分特征值的原始数据及特征归一化后的数据对照,如表2所示,经过预处理之后的数据取值范围在[0,1]区间。特征原始数据归一化数据总指令条数506560.6854l3cache访问次数32510.7583l3cache缺失次数310.5462表2归一化结果表3、特征选择。特征选择阶段计算所有特征的f-score值,以及这些特征f-score值的平均值,各个特征的f-score值及其计算的中间量如表3所示。表3f-score计算结果表4、bp模型训练。经过预处理后及特征选择后,确定的训练样本数为8893个,其中恶意进程的样本数目是是4857个,良性进程样本是4136个。从训练集中选取889个作为测试集。分类的结果是两类记为攻击进程和良性进程。模型检测的效果使用三个参数来评估,第一个是攻击检出率ptp,表示实际检测出的攻击样本占总的攻击样本的比例;第二个是误报率pfp,表示将良性进程当成攻击进程的比率;第三个参数为精确率pre表示正确分类的样本比例。经过测试分类检测模型结果如表4所示,精确率为0.98说明分类检测模型可以将系统上进程进行正确的分类,那么也能够有效的实现cache攻击的检测。评估标准ptppfpprebp检测模型0.9700.0120.980表4分类测试结果表。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1