当前位置: 首页 > news >正文

Scotch: Combining SGX and SMM to Monitor Cloud Resource Usage【TEE的应用】

目录

  • 摘要
  • 引言
    • 贡献
  • 背景
  • SMM
    • Xen Credit Scheduler与资源核算
    • SGX
  • 威胁模型
    • Scheduler attacks
    • Resource interference attacks
    • VM Escape attacks
  • 架构
    • Resource Accounting Workflow
    • Cost of Accounting
  • 具体的部署和评估见论文
  • 相关工作
    • Resource Accounting
    • 基于SMM的方法
    • 基于SGX的系统
    • 其他VM多租户研究
  • 未来工作
  • 结语

作者:Kevin Leach, Fengwei Zhang, and Westley Weimer
发布:RAID
时间:2017

1、系统管理存在调度上的逻辑漏洞,导致资源分配失衡
2、SMM保证SGX在底层的信任以及透明跟踪(即不留痕迹)
3、Scotch把资源分配变得更加准确和透明,并不区分恶意和良性

摘要

对基于云的服务的日益依赖导致人们越来越关注云安全。云提供商必须处理客户对其云基础设施整体安全性的担忧。特别是,越来越多的云攻击以云环境中的资源分配为目标。例如,攻击者可以利用系统管理程序调度程序中的漏洞,有效地从同一系统管理程序上的其他良性guests窃取CPU时间

在本文中,我们介绍了Scotch,一个在系统管理程序中透明、准确地核算资源消耗的系统。通过将基于x86的系统管理模式与Intel Software Guard Extensions相结合,我们可以确保会计信息的完整性,即使系统管理程序已被逃逸的恶意访客破坏。我们展示了我们可以计算每个任务切换和I/O中断的资源,为在系统管理程序上运行的每个guest提供了丰富详细的资源消耗信息。我们表明,使用我们的系统会产生较小但可管理的开销——每个任务切换或I/O中断大约1μs。我们进一步讨论了通过以随机间隔执行会计可以为我们提出的系统带来的性能改进。最后,我们讨论了这种方法对多种基于云的资源攻击的可行性。

引言

软件和基础设施即服务的日益普及导致了云计算市场的增长。2016年,云计算基础设施的支出预计将达到380亿美元[14]。同时,国家漏洞数据库显示,Xen中有226个安全漏洞,VMWare ESX有99个漏洞,KVM管理程序有98个漏洞[29]。因此,人们对云环境中的安全漏洞更加担忧[20,26]。

此类漏洞已经导致与云资源分配不当有关的漏洞利用。例如,资源释放攻击[35]允许恶意VM访客从受害VM获取一个资源(例如,更多的CPU时间)。类似地,系统管理程序调度器中的漏洞也有记录[32,49]。虚拟机监控程序漏洞可能允许恶意客户免费或以受害者为代价获取云资源。因此,云提供商需要保证使用其基础设施向客户提供服务水平和计费责任[24]。

云提供商利用虚拟化平台,如Xen系统管理程序[18]。资源分配由系统管理程序根据与客户的服务级别相对应的提供商的配置来执行。例如,云提供商可能会为支付更多资金的客户提供更多的CPU时间——这一策略将由系统管理程序的调度器强制执行。然而,利用虚拟机监控程序中漏洞的恶意客户可能能够规避此策略,从而获得比其服务级别所要求的更多的资源。

在本文中,我们介绍了Scotch(安全通信目标,透明云健康),这是一种利用两个x86功能来准确计算虚拟机消耗的资源的技术:系统管理模式(SMM)和软件保护扩展(SGX)。SMM允许对底层操作系统、系统管理程序和guest中的CPU寄存器和内存进行透明访问。SGX允许创建被称为飞地的加密区域,将关键执行与可能受损的系统管理程序或操作系统隔离开来。我们可以使用SMM来跟踪每个访客消耗的资源,以便1)潜在的恶意访客不知道,2)我们可以检测以前未检测到的资源计费攻击。当SMM异步测量资源使用情况时,可以使用SGX将这些信息安全地传递到单个用户空间飞地。SMM和SGX的这种新颖组合实现了一种在虚拟化环境中准确测量和安全通信资源使用信息的新方法。

我们评估了一个基于Xen系统管理程序的技术原型。我们展示了我们的技术大约需要1μs来检查每个上下文切换和中断期间的资源使用情况。我们还展示了如何通过随机选择检查资源消耗的间隔,在多个上下文切换和中断中分摊这种固定的1μs成本。接下来,我们将讨论恶意访客可能窃取的资源数量与我们的技术所产生的开销之间的权衡。最后,我们讨论了Scotch能够提供准确资源会计信息的攻击类型,而其他方法则无法提供。我们注意到,Scotch不会自动决定是否发生恶意活动;对这些技术进行直接的比较研究仍然是未来的工作

贡献

一种准确透明地测量在系统管理程序下运行的guest虚拟机消耗的系统资源的技术
一种采用Xen所提出技术的原型实现
以及一种对所提出技术原型测量精度和开销的实验评估。

背景

在本节中,我们将讨论与我们提出的技术相关的三个主题。首先,我们介绍了系统管理模式,这是一种内置于基于x86的CPU中的特殊执行模式,允许透明、隔离的执行。其次,我们讨论了Xen虚拟机监控程序以及恶意客户可能利用其获取或滥用云资源的漏洞类型。第三,我们介绍了Intel Software Guard eXtensions(SGX),这是实现我们方法的另一组指令。

SMM

系统管理模式(SMM)是所有x86体系结构中可用的CPU模式。它类似于真实模式和保护模式。最初设计用于促进功率控制,最近的工作利用SMM进行系统自检[28,43]、调试[45]和其他安全任务[44,46]。简而言之,CPU在系统管理中断(SMI)时进入SMM。在SMM中,CPU执行系统管理处理器(SMI处理器),这是一段特殊的代码,从基本输入/输出系统(BIOS)固件加载到系统管理RAM(SMRAM)中,系统管理RAM是系统内存的一个隔离区域[6]。在完成SMI处理程序的执行后,CPU将在保护模式下恢复执行。

我们使用SMM作为一个可信赖的执行环境来实现我们的资源会计功能。自386以来,SMM已在所有x86平台上可用,因此它可广泛用于商品系统。此外,当SMI处理程序执行时,底层操作系统基本上是暂停的。这种孤立的执行为操作系统提供了透明度。我们信任SMM主要有两个原因:1)SMRAM可以被视为安全存储,因为它无法通过保护模式和真实模式访问;2)SMI处理程序只需要一个小的可信代码库,因为它存储在BIOS中,并且在正确配置后无法在引导后进行修改。

SMI处理程序作为BIOS的一部分存储。通常,供应商提供特定于其平台的SMI处理程序代码。系统通电后,BIOS在加载操作系统之前将SMI处理程序代码加载到SMRAM中。加载SMI处理程序后,BIOS通过锁定SMRAM来防止对SMI处理软件的进一步修改。在英特尔和AMD平台上,这是使用一次写入特定型号寄存器(MSR)实现的;在设置特定比特时,不能对SMRAM(或相关联的MSR)进行其他改变。因此,即使系统管理程序完全受损,执行资源核算任务的底层SMI处理程序也将保持不变。默认情况下,SMI处理程序加载到一个4KB的内存区域,称为ASEG段。或者,我们可以将SMI处理程序加载到另一个名为TSEG的内存段中,以分配更多的空间,通常高达8MB。

最后,由于SMRAM在硬件中是隔离的(即,除非CPU处于SMM中,否则MMU无法对其进行映射),因此假设的DMA攻击将无法破坏存储在SMRAM中的资源计费信息。

Xen Credit Scheduler与资源核算

Xen[18]是一个广泛部署的开源系统管理程序。Xen负责多路复用多个独立的客户虚拟机。在云环境中,客户可以根据支付的费用访问具有不同配置的客户虚拟机。例如,客户可能会为配置有更多内存、磁盘空间或标称CPU时间的VM向云提供商支付更多费用。

默认情况下,Xen使用Xen Credit Scheduler[1]来管理CPU时间。信用调度程序为每个需要CPU时间的虚拟CPU(VCPU)分配虚拟信用。根据支付的服务水平,每个VCPU可以获得更多或更少的积分。也就是说,调度器可以根据CPU时间的计费量,将更多的信用分配给一个客户的VCPU,而不是另一个客户。每次上下文切换,调度器都会部分基于VCPU当前拥有的信用数量来决定下一个运行哪个VCPU。虽然Xen还可以使用其他调度器运行(Cherkasova等人[13]提供了一个比较),但Credit调度器是最常用的调度器。

至关重要的是,Xen以一定的时间间隔运行一个助手函数(在sched-credit.cfile中burn_credits),从当前执行的VCPU中扣除信用。简而言之,此函数通过轮询当前执行的上下文来估计一段时间内CPU的使用情况。第7节中讨论的先前研究[24,32,49]已经探讨了与该近似值相关的漏洞。如果恶意访客知道执行burn_credits的间隔,那么访客可以精确地测量时间,并在计入信用之前产生CPU。这样一来,恶意攻击者可能会在不收取费用的情况下使用CPU时间。

此外,Xen在内存中维护每个客户的信用信息(和其他元数据)。逃离虚拟机[15]的访客可能会更改此类数据,从而产生不正确的记账(以及后来的计费)信息。例如,通过更快地从善意的受害者客人身上扣除积分,受害者的CPU消耗量可以超过其实际消耗量。

SGX

Intel SGX是另一组允许在用户空间中创建包围区的新指令集[23]。这些包围区是无法从包围区上下文外部访问的加密内存区域(代码和数据)。SGX允许安全地进行计算,即使操作系统或系统管理程序是恶意的。

SGX旨在确保本地计算的安全;I/O指令在飞地内是非法的。相反,基于SGX的应用程序必须调用(通过OCALL)切换到不受信任的操作系统代码,以代表飞地执行I/O。因此,SGX应用程序无法安全地监控系统上发生的其他活动(例如,通过共享内存或设备I/O)。在本文中,我们使用SMM来测量系统范围内的使用情况,然后通过SGX飞地应用程序将这些信息报告给最终用户

威胁模型

在本节中,我们将讨论Scotch能够可靠应对的三种类型的攻击:1)调度程序攻击,2)资源干扰攻击,以及3)虚拟机逃逸攻击。这些攻击在表达能力和对系统管理程序的损害方面都有所增加。

Scheduler attacks

我们认为攻击者能够利用虚拟机监控程序调度程序中的漏洞,以牺牲受害虚拟机为代价,为恶意虚拟机获取系统资源。这种方法允许攻击者阻止受害者访问合法的资源,还允许攻击者免费执行昂贵的计算。
图1

图1a显示了非攻击场景,即两个良性的CPU绑定虚拟机在一个物理CPU上竞争CPU时间的潜在时间表。guest 1和2都有相同的时间,当VMM评估要向哪个VM计费时,每个guest 都会被计费其CPU时间的公平份额。然而,如图1b中的攻击场景所示,当VMM试图评估哪个guest 正在运行时,恶意guest 可能会在精确的时间屈服,以避免发生这种情况。因此,恶意虚拟机可能看起来永远不会占用CPU时间。周等人[49]表明,在适当的条件下,这种攻击可以消耗绝大多数CPU时间。

Resource interference attacks

资源干扰攻击是通过利用虚拟机多租户进行的。也就是说,单个虚拟机管理程序上的所有虚拟机guest 都必须共享底层物理资源(例如只有一条系统总线)。聪明的攻击者虚拟机可以执行精确计算的工作负载,这些工作负载可能会影响其他受害者虚拟机的性能,或者只是提高其自身的性能。例如,资源释放攻击[35]通过强制受害者虚拟机释放资源供攻击者使用来工作。例如,受害者可能正在运行Web服务器,在这种情况下,攻击者可以向受害者发送大量请求,导致其阻塞I/O,并为攻击者释放CPU时间。在本文中,我们认为攻击者能够以这种方式降低受害者-访客的性能。

VM Escape attacks

虚拟化技术(如Xen)名义上将客户虚拟机彼此隔离。事实上,通过全硬件虚拟化,每个客户都相信自己可以控制整个系统。然而,漏洞不可避免地会进入管理程序,使恶意访客能够逃离虚拟化环境,并在管理程序上下文中执行任意代码[15,27]。自然,此类攻击可能会对云提供商产生毁灭性影响,可能会将私人或有价值的数据暴露给攻击者。在本文中,我们考虑了一个能够逃离来宾上下文并接管VMM的攻击者【我们假设攻击者在逃离来宾虚拟机环境后可以获得ring 0(即内核)权限】。

在本文中,我们不认为VM会逃脱完全禁用系统的攻击。例如,虚拟机转义攻击很可能会危及系统管理程序并停止执行所有guest,或者攻击者可能试图禁用SMI处理程序中与远程系统的网络通信。这类拒绝服务(DoS)攻击通常会在超时时被检测到,超出了这项工作的范围。相反,我们考虑的是escape攻击,即攻击者能够破坏与资源使用相关的数据结构

架构

Scotch架构的目标是为云计算系统提供准确透明的资源核算。这是通过资源核算代码来完成的,该代码测量驻留在系统管理程序上的每个访客在每次任务切换和中断期间消耗的资源。我们利用硬件支持提供不可篡改的会计代码和数据存储,以及基于篡改事件的调用。
图2

图2展示了我们的系统架构。我们的方法中有两个或多个系统。首先,一个或多个受保护系统运行虚拟机监视器(VMM)软件,该软件能够托管多个善意或恶意的VM访客。每个受保护系统都可靠地收集关于每个访客的资源消耗信息,并定期将这些信息报告给SGX飞地。SGX飞地存储受保护系统上虚拟机的所有资源消耗信息,以便以恶意访客、操作系统或系统管理程序无法读取或篡改的方式进行进一步处理或分析。在我们实现的Scotch原型中,我们考虑了一台带有一个SGX飞地的受保护机器。

Resource Accounting Workflow

图2中描述的受保护机器负责收集关于每个VM客户机的可靠且防篡改的资源消耗信息,无论是恶意的还是良性的。为了实现这一目标,我们将讨论受保护系统为确保资源会计信息的完整性而采取的五个步骤(图2中标记为1-5)。

在步骤1中,VMM由VM guest通过抢占或超级调用来为I/O请求提供服务。使用硬件支持(见第5节),我们捕获所有此类事件,并执行我们的自定义资源会计代码(表示为步骤2)。请注意,虚拟机客户可能是恶意的,也可能是善意的——我们的方法没有区别,因为我们只是计算准确和防篡改的资源核算,以便善意的客户最终被告知实际消耗的资源

在上下文切换期间,步骤2调用SMI,导致我们的记帐代码在SMI处理程序中运行。使用进一步的硬件支持,我们可以将某些类型的I/O和事件中断转换为SMI。例如,当虚拟机的时间段过去时,计时器会引发一个中断,告诉VMM更换guest。在Scotch中,我们将这种中断改为调用SMI。调用SMI对于我们的系统提供的会计信息的持续可靠性至关重要

在步骤3中,我们的记帐代码记录下一个VM guest将运行的VM,以及自上次执行代码(即上次上下文切换事件)以来经过的时间。这些信息记录在系统内存的一个隔离区域中,系统管理程序(或来宾)上下文无法访问该区域。对于I/O事件,我们记录有关正在执行的I/O类型的信息。为了记录CPU时间之外的资源消耗,捕获这些I/O事件可以让我们推断guest是在消耗磁盘还是网络。

在步骤4中,我们的会计代码完成执行并将控制权转回guest。我们不会将控制权交还给系统管理程序,因为受损的系统管理程序可能会更改任务切换事件的结果(参见检查时间到使用时间攻击)。例如,在上下文切换期间,系统管理程序调度程序将选择要运行的新guest 。如果在系统管理程序最终确定调度决策之前执行资源记帐,那么受损的系统管理程序可能会欺骗下一个将运行的guest,执行记帐,然后运行不同的guest。相反,在Scotch中,我们在控制权转移到guest之前调用资源会计代码。在我们的会计代码完成后,控制权直接流向正确的guest。

最后,步骤5表示偶尔完成的任务。逃到系统管理程序的恶意guest可能会损坏数据。特别是,如果这样的攻击者试图隐藏他们消耗的资源,他们可能会破坏我们用来测量每个guest消耗资源的时间的系统管理程序上的计时器。在这种情况下,我们可以使用SMI处理程序代码(步骤2)偶尔从受信任的远程服务器请求时间信息(参见Spectre[43])。

Cost of Accounting

回想一下,我们的方法调用SMI来可靠地执行我们的资源会计代码。SMI的调用和资源核算代码本身都会在系统管理程序上产生开销。这反过来又会影响系统上guest的性能,即使没有恶意guest在运行。例如,假设一个CPU绑定的工作负载,其中所有guest都消耗了他们分配的所有时间量,添加我们的资源核算代码本质上增加了完成上下文切换所需的时间。因此,部署Scotch意味着接受相关的性能损失,以便获得高精度、防篡改的资源会计信息。

正如我们在第6节中所讨论的,我们还考虑了一种替代方案,通过在不同的时间间隔调用我们的代码来减轻性能影响。理想情况下,我们会在每个可能的任务切换和I/O中断事件上调用我们的记帐代码。然而,我们可以选择每x个这样的事件调用我们的代码,其中x是从1到某个最大间隔的某个随机间隔。从本质上讲,每次发生中断或任务切换时,我们都会掷硬币决定是否调用我们的资源会计代码。这需要将这样的决策代码添加到系统管理程序中,恶意的、转义的guest可能会注意到(或更改)这些代码。然而,我们提出这种方法是为了显著提高不同工作负载的性能。此选项允许云提供商权衡资源核算粒度和开销

具体的部署和评估见论文

相关工作

在本节中,我们讨论了四个主要的相关工作领域:1)提出帮助云提供商为其客户保证特定服务级别的资源会计技术,2)基于SMM的系统保护技术,3)基于SGX的系统保护技巧,以及4)其他多租户虚拟化研究。

Resource Accounting

Chen等人[12]提出了Alibi,一种可验证的资源会计系统。它在服务提供商的软件平台下放置了一个参考监视器(即嵌套虚拟化)。Jin等人[24]提出了另一种可验证的资源核算机制,用于CPU和内存分配,即使在系统管理程序受损的情况下也是如此。与我们的系统类似,他们的方法也使用SMM作为可信的执行环境来计算资源使用情况。然而,我们的系统在以下方面与以前的工作不同:

1、 通过在每次上下文切换和中断时调用我们的资源核算代码,我们可以为每个guest导出一个细粒度的资源使用情况报告。这使得能够快速识别资源使用方面的差异。相比之下,Jin等人采用了一种轮询技术,该技术需要在得出结论之前运行很长一段时间的分析——如果攻击者试图通过窃取更少的资源来隐身,我们的方法可以用于更快地识别此类行为,可能在几次上下文切换内,具体取决于工作负载。

2、此外,调用资源记帐代码的方式保证了我们不会错过瞬态事件——其他使用轮询进行资源审计的技术可能会错过了解其轮询行为的恶意访客。例如,Wang等人[38]对基于轮询的SMM系统的逃避攻击(即瞬态攻击)进行了系统分析。在这种攻击中,对手可以通过研究其轮询行为来规避防御机制。使用Scotch,如果恶意客户想要CPU时间,控制权必须在某个时刻转移到它,此时我们的SMI处理程序将被调用。

然而,这种保证是以性能为代价的。如第6节所述,我们的资源核算代码在每个任务切换和I/O事件中会产生额外的1μs。我们可以根据最终用户的需求进行调整,而不是以随机间隔调用我们的代码来分摊1μs的成本。最终,1μs的成本对应于最坏情况下0.033%的额外开销,这对于大多数应用来说可能足够低。

3、Scotch不需要嵌套的虚拟化,并在SMM中保留了一个小型的可信代码库(TCB)。相比之下,Alibi[12]带来了更高的开销,大约6%的CPU和700%的I/O,其中大部分是由于嵌套虚拟化。此外,Alibi集成了KVM代码库,显著提高了TCB。

4、最后,Scotch能够在存在能够逃离虚拟化环境的恶意guest的情况下报告准确的会计信息。逃脱的访客可能能够更改系统管理程序记录的资源使用信息(例如,Xen调度器中消耗的信用,以隐藏消耗的CPU时间中的异常情况)。但是,当我们将这些信息存储在SMRAM中时,我们可以在不依赖于存储在系统管理程序中的数据结构的情况下导出资源使用情况的准确报告。

除了学术界的工作外,还引入了几个用于资源核算的工业系统[4,31,36]。例如,亚马逊AWS提供了一种名为CloudWatch[4]的工具,这是一种针对AWS云资源的监控服务,为云应用程序消耗的资源提供全系统的可见性。

基于SMM的方法

据我们所知,只有Jin等人[24]提出了一种基于SMM的云资源会计技术。他们的方法被称为硬件辅助资源会计(HRA)。这种技术受到其对随机轮询的依赖性的限制。通过对当前正在执行的VCPU(以及哪个VM来宾)进行采样,HRA依赖于大样本量来近似VM运行时间的甘特图。此外,HRA依赖于系统管理程序中的数据结构来粗略估计内存消耗。相反,通过测量每个上下文切换和中断的资源消耗,Scotch可以快速确定准确的资源消耗信息。

此外,还有其他几个基于SMM的系统没有直接用于安全报告系统管理程序资源消耗。相反,这些系统专注于检测恶意活动[43],向操作系统隐藏击键[44],并保护外围设备[46]。此外,HyperCheck[47]和HyperSentry[8]等系统已用于验证正在运行的系统管理程序的完整性。最后,MalT[45]提出了一个透明的远程调试框架,用于分析能够逃离虚拟机或扎根系统的隐形恶意软件或攻击。除了使用SMM进行防御外,攻击者还将其用于恶意目的,如实现隐秘的rootkit[19,33]。例如,美国国家安全局(NSA)使用SMM构建高级rootkit,如用于Dell的Deitybounce和用于HP Proliant服务器的Ironchef[2]。

基于SGX的系统

以前基于SGX的系统,如Haven[10],将系统库和库操作系统移植到SGX飞地中,从而形成一个大型TCB。Arnatov等人[7]提出了SCONE,这是Docker的一种安全容器机制,使用SGX保护容器进程免受外部攻击。Hunt等人[21]开发了Ryoan,这是一种基于SGX的分布式沙盒,使用户能够在数据处理服务中对其数据保密。这两篇论文没有提出减少飞地内计算的攻击面或减少SGX寻呼带来的性能开销的技术。Schuster等人[34]开发了VC3,这是一个基于SGX的可信执行环境,用于在云中执行MapReduce计算。

其他VM多租户研究

张等人[48]提出了一类多租户云服务器中的内存拒绝服务攻击,表明恶意虚拟机可能会在基于存储和基于调度的资源中引起争用,从而导致受害虚拟机的性能显著下降。Bates等人[9]讨论了使用侧信道攻击来恢复关于共同驻留的VM guest的私人信息。类似地,Inci等人[22]利用侧信道信息从受害者客户那里获取RSA密钥。本文并没有解决这类攻击。相反,我们关注的是攻击者以牺牲受害者guest为代价,主动尝试为自己消耗更多资源的场景

未来工作

在第3节中,我们讨论了三类攻击,其中Scotch可以提供准确的资源会计信息。然而,我们也讨论了移植攻击,在这种攻击中,逃逸的VM guest将恶意代码移动到受害者guest中,以便受害者代表恶意guest计算和访问资源。Scotch和类似的会计系统目前无法帮助检测此类攻击,也无法自动判断是否存在恶意攻击活动发生。即使有完全准确的资源消耗信息,在这种情况下,受害者虚拟机也会像正常情况一样消耗资源,因此受害者最终会因攻击者发起的工作而被收取费用。我们认为,此类攻击需要检测逃逸本身(即,检测导致guest逃离虚拟化环境的漏洞或利用漏洞),或者检测良性guest执行的正常工作负载的差异。未来,我们希望将这种检测方法纳入Scotch中。

此外,我们将Scotch视为开发一种保护中断和外围I/O的通用方法的种子。目前,SGX不支持飞地范围之外的任何形式的安全通信。现有的工作,如SGXIO[40],已经调查了与外围设备的可信I/O路径。Scotch可以针对类似的应用程序——通过在SMM中与外围设备交互,我们有机会在潜在的恶意设备上验证固件,而SGXIO需要信任包含驱动程序的系统管理程序。我们打算探索使用Scotch的SMM和SGX组合来保护I/O

结语

基于云的虚拟化服务越来越受欢迎,再加上管理程序中越来越多的安全漏洞,迫切需要准确透明的虚拟机资源核算。我们介绍了Scotch,它是一种在基于x86的系统上使用系统管理模式的体系结构,以一种不能被受损的guest或系统管理程序篡改的隔离方式执行资源核算和存储信息。通过计算每个任务切换和I/O中断处的资源,我们的系统在存在某些类型的攻击时是准确的,例如调度程序攻击和资源干扰攻击。Scotch产生的结果与实际情况不到2%,同时在指示性工作负载上产生了0.0016%的开销。由于SMRAM是孤立的,Scotch甚至可以在虚拟机逃避攻击时提供准确的信息。总体而言,Scotch为虚拟机来宾提供了透明、准确的资源核算。

相关文章:

Scotch: Combining SGX and SMM to Monitor Cloud Resource Usage【TEE的应用】

目录 摘要引言贡献 背景SMMXen Credit Scheduler与资源核算SGX 威胁模型Scheduler attacksResource interference attacksVM Escape attacks 架构Resource Accounting WorkflowCost of Accounting 具体的部署和评估见论文相关工作Resource Accounting基于SMM的方法基于SGX的系统…...

腾讯mini项目-【指标监控服务重构】2023-08-19

今日已办 benchmark How can we create a configuration for gobench with -benchmem – IDEs Support (IntelliJ Platform) | JetBrains 本机进行watermill-benchmark 使用 apifox 自动化测试上报固定数量的消息 启动watermill-pub/sub的 benchmark 函数 func BenchmarkPu…...

go实现grpc-快速开始

准备工作 Go, 最新版的 如果不会安装看Getting Started. Protocol buffer compiler, protoc, version 3. 想要安装, 请读Protocol Buffer Compiler Installation. 为 protocol compiler安装Go plugins: 想要安装运行以下命令: $ go install google.golang.org/protobuf/cmd/…...

linux上的init 0-6指令作用以及一些快捷键和系统指令

目录 linux上的init 0-6指令作用 CtrlAltF1-F7作用 Linux常用系统指令 查看linux内核版本 ubuntu和centos查看系统版本信息以及硬件信息 linux上的init 0-6指令作用 在Linux系统中,运行级别(也称为init级别)用来表示系统的不同状态或操作…...

Mixin 混入

Mixin 混入 混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。 怎么理解呢,就是每一个组件都会有一…...

pycharm快捷键

CtrlAltL 代码规范化 CtrlHome 回到代码最开始 CtrlEnd 回到代码最后面 shift回车 鼠标任意位置的下一行 altj 一直按可以选中相同的变量 alt鼠标左键 可以选择多个需要修改的变量或值 将光标放在某一行,home到最前面,end到最后…...

【面试刷题】——Linux基础命令

Linux基础命令是在Linux操作系统中执行常见任务的一组命令。以下是一些常用的Linux基础命令,它们用于管理文件系统、执行系统任务、查看文件内容等。 文件和目录操作: ls: 列出目录中的文件和子目录。 pwd: 显示当前工作目录的路径。 cd: 更改当前工作…...

第四步 Vue2 配置ESLint

ESLint 是一个广泛使用的 JavaScript 代码检查工具,可以帮助开发者在编写代码时发现并修复潜在的问题和错误。 在 第一步 创建工程 时虽然已经选择了包含 ESLint 预设配置,但还需要做一些调整,让我们使用起来能够更加的丝滑。 vue.config.j…...

[.NET学习笔记] - Thread.Sleep与Task.Delay在生产中应用的性能测试

场景 有个Service类,自己在内部实现生产者/消费者模式。即多个指令输入该服务后对象后,Service内部有专门的消费线程执行传入的指令。每个指令的执行间隔为1秒。这里有两部分组成, 工作线程的载体。new Thread与Task.Run。执行等待的方法。…...

【单线图的系统级微电网仿真】基于 PQ 的可再生能源和柴油发电机组微电网仿真(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

人脸识别技术应用安全管理规定(试行)|企业采用人脸打卡方式,这4条规定值得关注

近日,为规范人脸识别技术应用,国家互联网信息办公室起草了,并向全社会公开征求意见。该规定一共列举了25条,企业如借助人脸识别技术采集考勤打卡数据,以下4条规定值得关注。 第四条 只有在具有特定的目的和充分的必要…...

leetcode 817. 链表组件(java)

链表组件 题目描述HashSet 模拟 题目描述 给定链表头结点 head,该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 nums,该列表是上述链表中整型值的一个子集。 返回列表 nums 中组件的个数,这里对组件的定义为:链表中一段…...

分布式事务基础理论

基础概念 什么是事务 什么是事务?举个生活中的例子:你去小卖铺买东西,“一手交钱,一手交货”就是一个事务的例子,交钱和交货必 须全部成功,事务才算成功,任一个活动失败,事务将撤销…...

《打造高可用PostgreSQL:策略与工具》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…...

【八大经典排序算法】快速排序

【八大经典排序算法】快速排序 一、概述二、思路实现2.1 hoare版本2.2 挖坑法2.3 前后指针版本 三、优化3.1 三数取中3.1.1 最终代码3.1.2 快速排序的特性总结 四、非递归实现快排 一、概述 说到快速排序就不得不提到它的创始人 hoare了。在20世纪50年代,计算机科学…...

vue 父组件给子组件传递一个函数,子组件调用父组件中的方法

vue 中父子组件通信,props的数据类型可以是 props: {title: String,likes: Number,isPublished: Boolean,commentIds: Array,author: Object,callback: Function,contactsPromise: Promise // or any other constructor }在父组件中,我们在子组件中给他…...

docker 获取Nvidia 镜像 | cuda |cudnn

本文分享如何使用docker获取Nvidia 镜像,包括cuda10、cuda11等不同版本,cudnn7、cudnn8等,快速搭建深度学习环境。 1、来到docker hub官网,查看有那些Nvidia 镜像 https://hub.docker.com/r/nvidia/cuda/tags?page2&name11.…...

uTool快捷指令

send("************"); quickcommand.sleep(200); keyTap("enter");...

R reason ‘拒绝访问‘的解决方案

Win11系统 安装rms的时候报错&#xff1a; Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck vI[[j]]) : namespace Matrix 1.5-4.1 is already loaded, but > 1.6.0 is required## 安装rms的时候报错&#xff0c;显示Matrix的版本太低…...

许战海战略文库|品类缩量时代:制造型企业如何跨品类打造份额产品?

所有商业战略的本质是围绕着竞争优势与竞争效率展开的。早期&#xff0c;所有品牌立足于从局部竞争优势出发。因此,品牌创建初期大多立足于单个品类。后期增长受限,就要跨品类持续扩大竞争优势&#xff0c;将局部竞争优势转化为长期竞争优势&#xff0c;如果固化不前很难获得增…...

BIT-4-数组

一维数组的创建和初始化一维数组的使用 一维数组在内存中的存储 二维数组的创建和初始化二维数组的使用二维数组在内存中的存储 数组越界数组作为函数参数数组的应用实例1&#xff1a;三子棋 数组的应用实例2&#xff1a;扫雷游戏 1. 一维数组的创建和初始化 1.1 数组的创建 …...

L9945的H桥续流模式

在H桥的配置中&#xff0c;包括两种续流模式&#xff1a;主动续流和被动续流。 一个L9945可输出两个H桥驱动。HB1在CMD3中配置&#xff0c;HB2在CMD7中配置。 主动续流&#xff1a;通过Q3的MOS的二极管来续流 被动续流&#xff1a;通过Q3外部的二极管来续流...

Ubuntu20.04安装Nvidia显卡驱动、CUDA11.3、CUDNN、TensorRT、Anaconda、ROS/ROS2

1.更换国内源 打开终端&#xff0c;输入指令&#xff1a; wget http://fishros.com/install -O fishros && . fishros 选择【5】更换系统源&#xff0c;后面还有一个要输入的选项&#xff0c;选择【0】退出&#xff0c;就会自动换源。 2.安装NVIDIA驱动 这一步最痛心…...

linux下使用crontab定时器,并且设置定时不执行的情况,附:项目启动遇到的一些问题和命令

打开终端&#xff0c;以root用户身份登录。 运行以下命令打开cron任务编辑器&#xff1a; crontab -e 如果首次编辑cron任务&#xff0c;会提示选择编辑器。选择你熟悉的编辑器&#xff0c;比如nano或vi&#xff0c;并打开相应的配置文件。 在编辑器中&#xff0c;添加一行类…...

linux下二进制安装docker最新版docker-24.0.6

一.基础环境 本次实操是公司技术培训下基于centos7.9操作系统安装docker最新版docker-24.0.6&#xff0c;下载地址是&#xff1a;https://download.docker.com/linux/static/stable/x86_64/docker-24.0.6.tgz 二. 下载Docker压缩包 mkdir -p /opt/docker-soft cd /opt/docker…...

计算机视觉 01(介绍)

一、深度学习 1.1 人工智能 1.2 人工智能&#xff0c;机器学习和深度学习的关系 机器学习是实现人工智能的一种途径&#xff0c;深度学习是机器学习的一个子集&#xff0c;也就是说深度学习是实现机器学习的一种方法。与机器学习算法的主要区别如下图所示[参考&#xff1a;黑…...

Java下部笔记

目录 一.双列集合 1.Map 2.Map的遍历方式 3.可变参数 4.Collection中的默认方法 5.不可变集合&#xff08;map不会&#xff09; 二.Stream流 1.获取stream流 2.中间方法 3.stream流的收集操作 4.方法引用 1.引用静态方法 2.引用成员方法 3.引用构造方法 4.使用类…...

链表基本操作

单链表简介 单链表结构 头指针是指向链表中第一个结点的指针 首元结点是指链表中存储第一个数据元素a1的结点 头结点是在链表的首元结点之前附设的一个结点&#xff1b;数据域内只放空表标志和表长等信息 单链表存储结构定义&#xff1a; typedef struct Lnode { ElemTyp…...

Linux学习笔记-Ubuntu系统下配置用户ssh只能访问git仓库

目录 一、基本信息1.1 系统信息1.2 git版本[^1]1.2.1 服务器端git版本1.2.2 客户端TortoiseGit版本1.2.3 客户端Git for windows版本 二、创建git用户和群组[^2]2.1 使用groupadd创建群组2.2 创建git用户2.2.1 使用useradd创建git用户2.2.2 配置新建的git用户ssh免密访问 2.3 创…...

央媒发稿不能改?媒体发布新闻稿有哪些注意点

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 “央媒发稿不能改”是媒体行业和新闻传播领域的普遍理解。央媒&#xff0c;即中央主要媒体&#xff0c;是权威性的新闻源&#xff0c;当这些媒体发布新闻稿或报道时&#xff0c;其他省、…...

模板网站制作公司/福建百度推广

一、LibCurl基本编程框架libcurl是一个跨平台的网络协议库&#xff0c;支持http, https,ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权&#xff0c;HTTP POST,HTTP PUT, FTP 上传, HTTP基本表单上传&#xff0c;代理&#xff0c;cookies,和用户…...

环保业网站建设的策划/提高工作效率的工具

冷水江免费上门监控安装店 [sw888lsa]、系统集成&#xff1a;楼宇自控、电话交换机、机房工程、监控系统、防盗报警、公共广播、门禁系统、楼宇对讲、一卡通、停车管理、消防系统。、网络维护&#xff1a;WIFI覆盖&#xff0c;机房建设&#xff0c;机房维护&#xff0c;服务器维…...

医院做网站需要去备案/长沙网站推广排名优化

2019独角兽企业重金招聘Python工程师标准>>> 一、Ansible 管理命令 Ansible 管理命令有如下几个&#xff1a; &#xff08;1&#xff09;ansible&#xff1a;这个命令是日常工作中使用率非常高的命令之一&#xff0c;主要用于临时一次性操作&#xff1b; &#xf…...

在别人网站上建设频道或栏目相关法律规定/得物app的网络营销分析论文

https://edu.hellobi.com/course/37/lessons 手把手教你使用开源ETL工具kettle 注重实际应用的kettle视频&#xff01;QQ交流群&#xff1a;284766906 http://www.kettle.net.cn/...

兖州网站建设/百度竞价托管外包

作者&#xff1a;PeterXu 来源&#xff1a;Blog.CSDN Blog: http://blog.csdn.net/peterreg/版权声明&#xff1a;原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。本文地址&#xff1a;http://b…...

网站建设工作室简介/俄罗斯搜索引擎yandex官网入口

一、查看并配置环境变量 ①在控制面板——系统与安全——系统&#xff0c;点击远程设置弹出“系统属性”的弹框&#xff0c;选择“高级”&#xff0c;就可以找到“环境变量”&#xff08;win10用户可以直接用Cortana搜索“编辑系统环境变量”&#xff09; ②在系统变量中添加…...