[发明专利]高速缓存线转储清除操作的选择性执行在审
申请号: | 201910457445.5 | 申请日: | 2019-05-29 |
公开(公告)号: | CN110661768A | 公开(公告)日: | 2020-01-07 |
发明(设计)人: | V.苏霍姆利诺夫;K.多希 | 申请(专利权)人: | 英特尔公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;G06F3/06 |
代理公司: | 72001 中国专利代理(香港)有限公司 | 代理人: | 周学斌;申屠伟进 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 高速缓存线 操作存储 高速缓存 电路 寄存器 禁用 转储 高速缓存电路 选择性执行 防止攻击 信道攻击 已知状态 时序 处理器 写回 降级 | ||
本公开涉及高速缓存线转储清除操作的选择性执行,并且涉及包括选择性地启用/禁用高速缓存线转储清除(CLFLUSH)操作的高速缓存操作存储电路的系统和方法。高速缓存操作存储电路还可以选择性地用一个或多个代替操作来代替CLFLUSH操作,该代替操作提供类似的功能但是有益且有利地防止攻击者在基于时序的侧信道攻击(例如Spectre或Meltdown)期间将处理器高速缓存电路置于已知状态。高速缓存操作存储电路包括:模型特定寄存器(MSR),其包含被用来确定是否启用/禁用CLFLUSH功能的信息。高速缓存操作存储电路可以包括:模型特定寄存器(MSR),其包含下述信息:该信息被用来选择适当的代替操作(诸如高速缓存线降级(CLDEMOTE)和/或高速缓存线写回(CLWB))以选择性地代替CLFLUSH操作。
技术领域
本公开涉及计算机安全,具体地涉及检测和/或防止侧信道(side-channel)攻击。
背景技术
侧信道攻击在2018年初获得了广泛的恶名。侧信道攻击包括基于从计算机系统的实现方式获得的信息而不是基于所实现的算法本身的弱点的任何攻击。这样的侧信道攻击可以使用时序信息、功耗、电磁泄漏或甚至声音作为额外的信息源,其被利用来从系统获得信息和/或数据。侧信道攻击包括Spectre和Meltdown,它们二者都依赖于推断数据源于高速缓存的位置还是未高速缓存的位置。在很大程度上,确定数据源于何处依赖于事件(诸如来自存储器空间的负载)的精确时序。
现代操作系统将内核映射到由处理器执行的每个进程的地址空间。使用处理器的管理程序位(supervisor bit)来限制对内核空间的访问,该管理程序位被设置成允许内核访问内核空间,并且被重置成阻挡或禁止用户访问内核空间。Meltdown克服了这种存储器隔离,由此允许用户进程读取执行该用户进程的机器的整个内核存储器。Meltdown依赖于无序执行来从内核空间获取数据。支持无序执行的CPU在下述程度上推测性地支持运行操作:在CPU明确指令是否有效且已提交之前,处理器的无序逻辑对指令进行处理。Meltdown通过使处理器执行多个指令来从受保护的内核空间读取信息,该多个指令诸如是:
data=getByte(kernelAddress)
variable=probeArray(data)
由于禁止读取内核存储器,“getByte”指令最终将失败。然而,同时访问“probeArray”中的元素将会把数据从“probeArray”拉入到高速缓存中。通过对高速缓存中从0到255的地址处的读取进行时序确定,攻击者能够推断出“kernelAddress”的内容。
例如,在转储清除高速缓存之后,Meltdown攻击者从内核存储器中的第一个地址取回值“01000000”(二进制的“64”)。在处理器生成对来自内核存储器的未授权读取的例外之前,攻击者使用所取回的内核数据作为索引来访问位于用户空间中的已知数组中的元素“64”。处理器对数组元素64的值进行取回,并且将该值加载到高速缓存中。然后,攻击者尝试从数组中读取每个元素——针对元素0-63和65-255的访问时间将相对较长,因为数据是从主存储器中取回的。然而,针对元素64的访问时间将是相当更短的,因为仅需要从高速缓存中取回该数据。由此,攻击者可以推断出内核存储器中的第一个地址的数据为“0100000”。通过针对内核存储器中的每个位置实行该动作,攻击者能够读取内核存储器的内容。
第一类的Spectre攻击利用CPU的分支目标误预测来将数据从存储器读取到高速缓存中。在检测到误预测时,CPU清除来自流水线的数据,但是留下被读取到高速缓存中的数据。然后可以使用隐蔽侧信道来从高速缓存获得残留数据。在这类攻击中,攻击者训练系统中的分支预测器来取得特定分支。例如,使用以下指令,攻击者可以通过提供始终小于“array1”的大小的“x”的值来训练系统。因此,攻击者基于分支在历史上已经为真的假设来训练系统推测性地执行后续指令:
if(x<array1.size()){
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英特尔公司,未经英特尔公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910457445.5/2.html,转载请声明来源钻瓜专利网。