安全运行时系统和方法与流程

文档序号:29810168发布日期:2022-04-27 03:39阅读:133来源:国知局
安全运行时系统和方法与流程

1.本公开涉及用于计算环境中的安全运行时系统和方法。


背景技术:

2.基于云的计算环境已改变了传统方式来保障各种计算装置和企业的安全。随着计算和数据存储活动由远程装置执行,出现了安全和隐私问题,因为远程装置通常由另一个组织架构进行控制并且相比于本体装置可为较不安全的。
3.现有系统加密了存储数据,并且在通信至另一装置或系统之前加密了数据。然而,当数据由应用程序或其它进程使用时,这些现有系统通常未加密该数据。当数据由应用程序或进程使用时,该数据通常需要进行解密以用于运行时处理。这种解密数据在运行时期间通过有可能将解密数据暴露于未授权用户或未授权系统而呈现出安全问题。
4.因此,需要的是一种改善方式,以用于在运行时处理期间保障数据的安全。
附图说明
5.参考以下附图描述本公开的非限制性和非穷举性实施例,其中类似附图标号指代各个图中的类似部分,除非另外指明。
6.图1为示出实例环境的框图,所描述系统和方法在该实例环境中实施。
7.图2示出了安全运行时结构的一个实施例。
8.图3示出了实施安全运行时结构的主机os的一个实施例。
9.图4示出了用于在安全运行时中设置应用程序的方法的一个实施例。
10.图5示出了用于在安全运行时中执行应用程序的方法的一个实施例。
11.图6为框图,示出了访问相同数据的多个机器和多个安全隔区的一个实施例。
12.图7示出了计算装置的实例框图。
具体实施方式
13.在下述公开内容中,参考了附图,这些附图形成了本文的一部分,并且在附图中以说明方式示出了其中本公开可付诸实践的具体实施方式。应当理解,可利用其它实施方式并且可做出结构变化,而不脱离本公开的范围。说明书对“一种实施例”、“一个实施例”、“一个实例实施例”等的引用指示,所描述的实施例可包括特定特征、结构或特性,但每个实施例可不必然地包括该特定特征、结构或特性。此外,此类短语不必然地指代相同实施例。另外,当特定特征、结构或特性结合一个实施例进行描述时,据认为,本领域的技术人员将知道结合其它实施例来影响此类特征、结构或特性,无论是否明确地描述。
14.本文所公开的系统、装置和方法的实施方式可包括或利用包括计算机硬件的专用或通用计算机,诸如,例如一个或多个处理器和系统存储器,如本文所讨论。本公开范围内的实施方式还可包括物理和其它计算机可读介质,以用于承载或存储计算机可执行指令和/或数据结构。此类计算机可读介质可为任何可用介质,该可用介质可由通用或专用计算
机系统来访问。存储计算机可执行指令的计算机可读介质为计算机存储介质(装置)。承载计算机可执行指令的计算机可读介质为传输介质。因此,通过实例和非限制的方式,本公开的实施方式可包括至少两种明显不同类型的计算机可读介质:计算机存储介质(装置)和传输介质。
15.计算机存储介质(装置)包括ram、rom、eeprom、cd-rom、固态驱动器("ssd")(例如,基于ram)、闪存、相变存储器("pcm")、其它类型的存储器、其它光盘存储、磁盘存储或其它磁性存储装置,或任何其它介质,该其它介质可用于存储计算机可执行指令或数据结构形式的期望程序代码器具并且可由通用或专用计算机来访问。
16.本文所公开的装置、系统和方法的实施方式可经由计算机网络进行通信。“网络”定义为一个或多个数据链接,该一个或多个数据链接允许电子数据在计算机系统和/或模块和/或其它电子装置之间的传输。当信息经由网络或另一种通信连接部(硬连线、无线,或硬连线或无线的组合)传递或提供至计算机时,该计算机将连接部正确地视为传输介质。传输介质可包括网络和/或数据链接,该网络和/或数据链接可用于承载计算机可执行指令或数据结构形式的期望程序代码器具并且可由通用或专用计算机来访问。上述的组合还应包含在机器可读介质的范围内。
17.计算机可执行指令包括例如指令和数据,该指令和数据当在处理器处执行时引起通用计算机、专用计算机或专用处理装置来执行特定功能或功能组。计算机可执行指令可为例如二进制文件、中间格式指令,诸如汇编语言或甚至源代码。尽管主题以特定于结构特征和/或方法动作的语言进行描述,但是应当理解,附属权利要求书所限定的主体非必然地限于本文所描述的特征或动作。相反,所描述特征和动作公开为实现权利要求的实例形式。
18.本领域的技术人员将理解,本公开在具有多种类型的计算机系统配置的网络计算环境中付诸实践,包括个人计算机、台式计算机、膝上型计算机、信息处理器、手持装置、多处理器系统、基于微处理器或可编程消费电子产品、网络pc、微型计算机、大型计算机、移动电话、pda、平板、传呼机、路由器、交换机、各种存储装置等。本公开还可在分布式系统环境中付诸实践;在该分布式系统环境中,本地和远程计算机系统(它们通过网络进行链接(通过硬线数据链接、无线数据链接,或通过硬线和无线数据链接的组合)均执行任务。在分布式系统环境中,程序模块可位于本地和远程存储器存储装置两者中。
19.此外,在适当情况下,本文所描述的功能可在以下项的一者或多者中执行:硬件、软件、固件、数据组件,或模拟组件。例如,一个或多个专用集成电路(asic)可编程成执行本文所描述的系统和过程的一者或多者。某些术语在整个描述和权利要求书中用于指代特定系统组件。如本领域技术人员将理解,组件可通过不同名称来指代。本文档非旨在区分名称不同但功能相同的组件。
20.本公开的至少一些实施例涉及计算机程序产品,该计算机程序产品包括存储于任何计算机可用介质上的此类逻辑(例如,软件的形式)。此类软件当在一个或多个数据处理装置中执行时引起装置如本文所描述进行操作。
21.本文所描述的系统和方法向一个或多个应用程序和与这些应用程序相关联的数据提供了安全性。在一些实施例中,应用程序和其数据的安全性取决于该应用程序所驻留其上的层的安全性。
22.在一些实施方式中,应用程序在由管理程序所管理的容器或虚拟机(vm)中执行。
管理程序在主机操作系统(os)的顶部上运行,该主机操作系统可在云提供商的物理机器中操作。在这种类型的实施方式中,应用程序在容器或vm中暴露于威胁。应用程序还必须信任it堆栈,该it堆栈包括管理程序、主机os和物理机器。例如,应用程序暴露于未授权用户,该未授权用户获得了对于vm的根访问、对于管理程序进程的访问、对于主机os的特权访问(其允许对于管理程序的访问),或对于物理机器的访问,这允许未授权用户访问执行客户端任务的进程,访问其存储器空间,和访问所处理数据。
23.通过提供所需基元来建立并验证信任,本文所描述的系统和方法建立了外包或未受信基础架构中的信任。特别地,所描述安全运行时系统和方法通过创建受信执行环境(tee)而确保运行时环境。这些系统和方法通过防止未授权用户查看受保护数据或修改数据而提供隐私。
24.本文所描述的系统和方法提供了安全运行时,该安全运行时防止未授权用户或系统访问应用程序、应用程序代码,或与应用程序相关联的数据。另外,安全运行时允许未修改的应用程序利用受信执行环境。这消除了用以特别地修改应用程序的需求,以从受信执行环境获益。所描述系统和方法还可防止未授权用户或系统篡改应用程序的执行。例如,在基于云的环境中,远程客户端可将敏感工作负载部署于安全运行时中,并且远程客户端经由安全信道与安全运行时通信。安全信道通常为验证的和加密的。这种配置提供了一定水平的信任,因此远程客户端可确认它正与安全运行时通信。另外,这种配置防止篡改应用程序或数据的执行。
25.在一些实施例中,所描述的系统和方法提供了利用安全隔区(secure enclave)的应用程序和数据安全性,该安全隔区已由硬件制造商引入至许多处理器中。例如,一些安全隔区允许应用程序在与主机隔离的环境中执行,但在相同物理机器上执行。在一些实施方式中,安全隔区为存储器的加密分区。特定安全隔区利用硬件处理器内的信任根和应用程序隔离来保护该应用程序和其敏感数据。安全隔区支持应用程序的执行,使得其内容和数据为其它用户、系统或实体不可访问的。安全隔区阻止了用户在访客os、管理程序或主机os上对于应用程序或数据的访问。因此,替代创建vm或主机周围的安全周界,安全隔区利用明确定义的硬件保证而提供独立应用程序周围的安全周界。
26.在一些实施例中,由硬件制造商所提供的安全隔区需要对于复杂设计细节和密码学概念的相当理解。在特定情况下,为使现有应用程序利用安全隔区,它们可需要重新架构和重构。
27.在一些实施例中,本文所描述的系统和方法通过使用api(应用编程接口)抽象掉低级别细节而简化了安全隔区的利用。这些系统和方法允许系统(例如,企业)安全地运行现有应用程序,而无需远程安全隔区内侧的修改。本文所讨论的安全运行时系统提供了平台以用于公共云环境中的安全和私有计算。例如,安全运行时系统允许企业在公共云基础架构上执行应用程序,同时维持应用程序和其相关数据的保密性和完整性。因此,在公共云基础架构上执行应用程序的实体可信任其它不可信公共云,该不可信公共云了解到应用程序和数据为安全的。
28.图1为示出实例环境100的框图,所描述系统和方法在实例环境100中实施。远程系统102经由数据通信网络116联接至一个或多个授权用户118、一个或多个未授权用户120,和一个或多个计算系统122。数据通信网络116包括利用任何通信协议的任何类型的网络拓
扑结构。此外,数据通信网络116可包括两个或更多个通信网络的组合。在一些实施例中,数据通信网络116包括蜂窝通信网络、互联网、局域网络、广域网络或任何其它通信网络。
29.计算系统122包括任何类型的计算装置,该计算装置与远程系统102进行交互。在一些实施例中,远程系统102可为基于云的计算系统,该基于云的计算系统由计算系统122可访问以代表计算系统122执行各种操作。在一些实施例中,远程系统102包括安全运行时104和存储静态数据的数据存储装置108。远程系统102还可包括一个或多个虚拟机,这些虚拟机由一个或多个服务器114进行托管或在一个或多个服务器114上实施,这些虚拟机的每一者实施一个或多个操作系统110并且实施一个或多个管理程序112。
30.安全运行时104在公共云环境中提供了用于安全和私有计算的平台。安全运行时104可包括运行时模块106,如本文所讨论。在一些实施例中,安全运行时104确保了在主机上的独立安全隔区内侧运行的运行时服务器应用程序(和相关联数据)。安全运行时104还通过使与应用程序相关联的存储器与在主机上运行的其它部件和进程隔离而提供存储器隔离。这种隔离还包括使存储器与操作系统隔离。在一些实施例中,当数据未加密时,与特定应用程序相关联的数据停留于安全隔区内。在数据通信离开安全隔区之前,该数据始终进行加密。此外,其它系统和用户不可访问存储器,即使它们具有对于主机系统的根或物理访问。
31.在一些实施例中,安全运行时104还确保了对于后端服务器应用程序的受信信道,该受信信道通过验证预期代码在预期受信执行环境中执行而提供安全性。此外,远程认证的使用向计算系统122和其它企业提供了密码保证:其客户端与远程系统102直接地通信并且其它实体、系统或用户不可访问这些应用程序和其相关联数据。
32.图2示出了安全运行时结构200的一个实施例。安全运行时202包括任何数量的应用程序204、206和208。在一些实施例中,每个应用程序204、206和208在独立隔区中执行。在其它实施例中,应用程序204、206和208的两者或更多者在相同安全隔区中执行。在特定实施方式中,对于利用共享存储器并且编译为位置独立代码(pic)的应用程序,所描述系统和方法可在单个安全隔区中运行两个进程。安全运行时202还包括安全应用程序加载器210(还称为“路由器”)和os桥212。在一些实施例中,安全应用程序加载器210能够在隔离和屏蔽环境中运行二进制可执行文件。安全应用程序加载器210可将每个应用程序204至208连同所有的库一起加载至安全运行时202,每个应用程序根据这些库来执行。
33.隔离层214位于安全运行时202和未受信主机os 216之间。这种隔离层214操作用以使应用程序204,206和208与未受信主机os 216隔离。尽管隔离层214单独地示出于图2中,但是其表示由具体硬件处理器所提供的底层硬件或虚拟化技术。隔离层214非必然地为具体实体。相反,隔离层214表示通过以某种方式(应用程序在隔区中执行并且应用程序与任何其它执行内容隔离)加载应用程序的技术所提供的隔离。在一些实施例中,隔离层214基于硬件特征,这些硬件特征提供了硬件级安全性和隐私。实例硬件特征包括sgx(软件防护扩展)和sev(安全加密虚拟化)。
34.如本文所讨论,每个应用程序204至208可创建隔离加密存储器区域,该隔离加密存储器区域对于内核为不可访问的(或不可视的)。在一些实施例中,本文所描述的系统和方法对于每个应用程序204至208创建了小内核,该小内核提供了每个应用程序所需的os服务,但在安全隔区内执行。例如,os桥212可将os服务提供至应用程序204至208。这些os服务
可包括写入至磁盘或其它存储系统,启动网络连接,以及其它类型的系统调用。此外,os桥212可对于安全运行时202内的应用程序204至208所使用的数据和其它信息进行加密。
35.在一些实施例中,安全运行时结构200用作基于云的后端系统,该基于云的后端系统提供了例如计算系统122和远程系统102之间的工作负载的无缝迁移。在具体实施方式中,安全运行时结构200包括支持高级语言运行时的一个或多个“所包围”应用程序,这提供了简单性和通用功能性以用于处理数据。这允许安全网络服务器将敏感内容以某种方式(防止基于云的系统操作者访问该内容或其它数据)直接地服务至授权用户118。
36.如本文所讨论,安全运行时202允许敏感应用程序在远程位置和公共云内安全地执行。安全运行时202通过避免对于刚性服务器安全区的需求而提供灵活性,同时使对于硬件安全模块的依赖最小化。在一些实施例中,安全运行时202允许未修改应用程序的安全部署,包括多个安全隔区之间的安全通信、资源分配和监测。
37.在一些实施方式中,安全运行时202通过在安全隔区内侧执行应用程序而针对“零时差攻击”进行保护。这些应用程序受保护而免于恶意软件以升级特权渗透主机。因此,安全运行时202提供了单个执行应用程序周围的周界,而不是虚拟机或主机周围的较大周界。
38.在特定实施例中,安全运行时202通过安全性和操作灵活性而向私人托管云和数据中心提供了益处。例如,安全运行时202允许远程客户端与安全微服务直接地通信,这减少了关键操作问题。在一些实施例中,安全运行时202还避免了对于刚性安全区的需求,该刚性安全区可导致过度规定或利用不足的服务器基础架构。本文所描述的系统和方法允许以最佳服务器利用率的灵活服务器部署以降低it基础架构和操作成本。
39.在一些实施例中,本文所描述的系统和方法可与支持安全隔区的任何硬件装置一起工作。这些系统和方法提供了共同api,该共同api与任何制造商的任何硬件装置一起工作。共同api的使用简化了系统的创建和管理,这些系统支持一个或多个应用程序在安全隔区中的执行。不同于学习与每种类型的硬件装置相关联的具体技术,共同api允许开发者、系统管理员或其他个人或实体学习在所有硬件装置上工作的单个api。
40.在一些实施例中,呈现至多个应用程序的共同api为本机os api,诸如系统调用api。系统调用由二进制可执行文件用于从os请求服务,该os正运行该二进制可执行文件。本文所描述的系统和方法拦截了这些系统调用,并根据所请求的操作类型将它们传递至os或以特殊方式处理它们。实例操作包括文件操作,其中利用运行时的用户可选择对由应用程序以某种方式(对于该应用程序透明)所访问或创建的某些文件进行加密/解密。另一实例操作为网络通信,其中许多应用程序未提供用于加密其网络通信的内置支持。所描述系统和方法拦截了经由套接字/管道的通信,并且在用户请求的情况下对其进行实时加密。最后,应用程序通常需要可靠熵源,并且将指代操作系统。然而,破坏操作系统可有意地提供低熵结果。因此,运行时安全解决方案提供了由受信执行环境所生成的高熵随机输入。
41.在虚拟化环境中,系统调用可由管理程序拦截,并且经由超级调用传递至主机os,该超级调用为访客虚拟机和在主机上运行的部分管理程序之间的接口。在这些虚拟化环境中,本文所描述的系统和方法通过在管理程序内执行应用程序并将系统调用指令处理为特权指令而拦截系统调用,该特权指令由访客内核捕获,该访客内核可在内部处理该特权指令或将其传递至管理程序。
42.在一些实施例中,通过拦截系统调用,所描述系统和方法不需要特定应用程序适
应以在不同硬件类型或不同管理程序平台的顶部上运行。
43.任何数量的方法可用于拦截系统调用。例如,系统调用可利用glibc的补丁版本、由许多linux应用程序所用的库进行拦截。其它方法包括处理sigill信号以拦截源自隔区内的系统调用。
44.在一些实施例中,系统调用在隔区的语境中为非法的,并且引起执行故障,该执行故障由故障处理程序进行拦截(例如,故障处理程序与本文所描述的系统和方法相关联)。例如,应用程序可静态地链接,并且直接地请求系统调用指令,使得与补丁libc的静态链接以直接地链接系统调用指令(通过利用执行故障)来替换。故障处理程序代表指示对于隔区内侧的受信处理程序进行尝试的系统调用的信号。这个受信处理程序根据系统调用的类型而处理系统调用。例如,受信处理程序可1)代表对于os的系统调用,或2)在数据离开隔区至os之前将该数据加密。
45.在一些实施例中,所描述系统和方法实施了系统调用拦截优化。一种基于故障的拦截方法引起特定性能损失,因为其引起隔区退出。这通过在运行时中二进制重写和以跳转(将执行重新指引至特定系统调用处理代码的一组指令)替换原始系统调用指令进行优化。这种方式需要对于编译器或libc库(其请求系统调用指令)的修改。例如,在go语言的情况下,go编译器源代码修改为包括每个系统调用指令之后的11个nop指令,这对于由本文所描述系统和方法所执行的二进制重写留下了足够空间。在动态链接应用程序(其与标准libc库链接)的情况下,这些系统和方法以通过包括每个系统调用指令之后的nop的类似方式修改了glibc。这种方式导致了简单补丁,该简单补丁允许系统和方法以对于代码的最小改变支持多个版本的glibc或go。
46.为使操作系统适当地模仿在本文所讨论环境的一者中运行的应用程序,所描述系统和方法表现出在堆栈管理方面的相同语义。当应用程序正常地请求系统调用时,其可预期堆栈未改变,直至该系统调用的返回。然而,一些现有库操作系统未适当地处理这个细节,该细节可导致故障。为提供适当语义,所描述系统和方法1)一旦请求系统调用指令则切换至不同堆栈,2)在该独立堆栈上执行系统调用服务,3)在返回至应用程序之前切换回原始堆栈。
47.图3示出了实施安全运行时结构300的主机os的一个实施例。访客os 302包括安全运行时304,安全运行时304具有在安全运行时304内执行的第一应用程序306。第二应用程序308在访客os 302内执行。如图3所示,应用程序306在安全运行时304内执行,并且因此,受保护而免于由其它应用程序308访问其数据的任何恶意尝试,其它应用程序308未在安全运行时304内执行。
48.在图3的实例中,管理程序310联接至访客os 302。此外,信任根312与硬件部件或装置314相关联。信任根为硬件314的受信计算模块中的函数或代码组,并且始终受信于os。图3的实例表示安全隔区的配置,其中信任根312通过硬件314的制造商来提供。在配置为虚拟隔区的其它实施例中,信任根312与管理程序310相关联。
49.图4示出了用于在安全运行时中设置应用程序的方法400的一个实施例。初始地,安全应用程序加载器(例如,图2的安全应用程序加载器210)将系统调用拦截层加载402于os桥中(例如,图2的os桥212)。安全应用程序加载器还加载404了隔区中elf/pe(可执行和可链接格式/可移植式可执行)加载器。随着安全应用程序加载406了elf/pe二进制文件,方
法400持续。安全应用程序加载器还加载408了动态链接(共享)库(dll/so(动态链接库/共享对象))。安全应用程序加载器然后使隔区初始化410,并且使安全运行时或隔区中的应用程序初始化412。
50.在一些实施例中,存在位于安全隔区外侧的加载器,该加载器加载了隔区内容。在此时,应用程序未准备执行,因为链接、重新定位和由加载器所执行的所有工作尚未执行。为执行这些活动,受信加载器加载至安全隔区中。受信加载器采用了应用程序二进制文件,并且以类似于操作系统加载器所执行的方式加载了该应用程序二进制文件。这允许所描述系统和方法将常规elf/pe二进制文件加载至安全隔区中,并且对其进行测量和认证,无关于存储器中的代码和数据在加载之后的最终布局(其每次可为不同的)。
51.图5示出了用于在安全运行时中执行应用程序的方法500的一个实施例。初始地,安全运行时执行502了应用程序(例如,图2的应用程序204至208)。应用程序将系统调用发送504至故障处理程序,然后故障处理程序将系统调用通信506至安全运行时。安全运行时处理508了所接收系统调用并且生成了系统调用结果。安全运行时通过将系统调用结果返回510至应用程序而持续。
52.在一些实施例中,对于故障处理程序存在两个部分。初始地,故障导致调用安全区外故障处理程序。该处理程序可在安全隔区内侧恢复执行,该安全隔区调用了有效地用作受信故障处理程序的函数;但其不可直接地请求,因为硬件处理器未支持受信故障处理。在其它情形下,故障处理程序完全地处于安全运行时内侧。
53.在一些实施例中,所描述系统和方法通过支持由应用程序所用的所有系统调用并正确地处理它们而模拟底层os,使得该应用程序具有所有所需os支持。
54.在一些实施例中,机密数据的规定通过利用公共秘钥加密该数据来进行,该公共秘钥由安全隔区内侧的安全运行时来生成。对应私人秘钥利用对称秘钥(其衍生于隔区内)进行密封,并且绑定至机器和应用程序身份两者。
55.图6为框图,示出了访问相同数据的多个机器和多个安全隔区的实施例600。例如,第一机器602具有第一安全隔区608,并且第二机器604具有第二安全隔区612。在一些实施例中,第一机器602和第二机器604为处理器、计算装置,或能够实施安全隔区的任何其它装置或系统。如图6所示,第一机器602具有相关联公共秘钥610,并且第二机器604具有相关联公共秘钥614。
56.系统或装置606包括客户端616,并且与第一机器602和第二机器604通信。如图6所示,第一机器602和第二机器604两者可访问系统或装置618上的数据620。系统/装置606和618可为任何类型的处理器、计算装置等。
57.图6的实施例将额外间接层引入至数据加密中。替代利用一次性随机秘钥,该一次性随机秘钥加密了数据并且自身利用rsa公共秘钥(例如,rsa-kem)进行加密,图6的实施例对于多个安全隔区(例如,第一安全隔区608和第二安全隔区612)规定了等同加密秘钥。多个安全隔区可为相同机器上的不同安全隔区、不同机器上的类似安全隔区,或不同机器上的不同安全隔区。在由所有不同安全隔区所导出并认证的公共秘钥的条件下,等同加密秘钥对秘钥进行加密。
58.在一些实施例中,所描述系统和方法实施了拜占庭容错(bft)协议。bft为分布式协议的属性,该属性保证了诚实各方查看相同状态,尽管对等网络中存在攻击者。本文所描
述的方法和系统将认证整合至标准传输层安全(tls)验证中,这允许运行节点网络而无需修改具体源代码。
59.在一些实施例中,所描述系统和方法使用了应用程序认证,该应用程序认证允许应用程序对于特定系统进行自行验证,诸如与该应用程序行进交互的远程系统。在特定实施方式中,系统和方法规定了特定机密,该特定机密用于利用tls而验证应用程序。例如,运行时可以命令行参数来执行,该命令行参数生成了非对称加密密钥对。私人秘钥存储成使得,其仅对于相同机器上的相同隔区为可访问的。这通过以下方式来实现:利用aes-gcm(高级加密标准
‑‑
伽罗瓦/计数器模式)验证的加密方式而将私人秘钥以密封秘钥进行加密。因为密钥推导发生在将隔区初始化之后,所以所描述系统和方法能够在mrenclave策略条件下推导密封秘钥,从而确保仅相同隔区(运行时+应用程序+配置的组合)将能够推导相同密封秘钥并且解密所持久存储的私人秘钥。所加密私人秘钥可持久地存储于任何存储装置中。公共秘钥以明码方式输出,并且可由任何客户端用于加密数据,该数据可仅由该隔区进行解密。
60.在启动时,运行时尝试检索私人秘钥,并且如果此类文件存在,那么将尝试利用对称密封秘钥将其解密。如果私人秘钥成功地检索出,那么其将在隔区内存储为数据解密秘钥,该数据解密秘钥将用于解密客户端的机密输入数据和配置。
61.在一些实施例中,公共秘钥散列包括为作为认证引证的一部分的定制数据,该认证引证可利用认证服务或利用由硬件供应商所提供的公共秘钥进行证实。证实由运行时所输出的公共秘钥散列成认证引证所包括的数值允许证实公共秘钥的真实性。另外,对应私人秘钥为仅对于隔区可访问的,该隔区生成了认证引证。
62.为允许通过多个应用程序(这些应用程序通过相同组织架构进行部署)或通过新版本的部署应用程序访问数据,系统和方法提供了一种规定数据的另选方式。例如,除了先前所生成rsa密钥,运行时还生成了第二rsa密钥。系统和方法输出了公共秘钥,利用mrsigner策略而密封了对应私人秘钥,并且持久地存储于任何存储中。
63.在一些实施例中,本文所描述的系统和方法对于连接客户端提供了服务验证。系统和方法向客户端证明:其正与真实服务通信,该真实服务在安全隔区内的安全运行时内侧执行。
64.在一些实施例中,当在安全隔区内执行应用程序时,系统和方法确保了,仅特定应用程序(在安全隔区中执行)能够对于客户端进行成功地认证。例如,系统和方法可提供下述安全保证:
65.1、与正确版本服务的通信。
66.2、确保该服务受到本文所描述的最新版本的安全运行时的保护。
67.3、确保在后端使用最新版本的安全隔区系统。
68.在特定实施方式中,系统和方法利用了安全隔区的硬件支持秘钥推导和密封能力:仅与本文所讨论的安全运行时一起运行的服务实例可成功地与其客户端建立信任。系统和方法依靠pki(公共秘钥基础架构)来确保,客户端仅信任真实和受保护服务实例。在一些实施例中,生成了密钥对,并且公共秘钥分布(以x.509证书的形式)至客户端。当客户端初始化对于服务的tls连接时,它们利用公共秘钥对该tls连接进行验证。成功验证确保了,另一端上的服务访问对应私人秘钥。因此,所描述系统和方法保证了,服务正与最新版本的
安全运行时一起运行,并且最新版本的安全隔区可访问私人秘钥。为保证机密材料(诸如tls私人秘钥)未暴露,系统和方法可强制要求,该机密材料仅出于其原始目的进行访问。例如,本文所描述的系统和方法可具有用于不同文件角色的独立加密秘钥。
69.所描述系统和方法可用于利用安全运行时来实施数据库(或数据库服务),同时在存储器中情形以及静态数据两者中保护该数据库。这可防止存储器转储对于数据库的攻击,以及读取存储后端。通过在安全隔区中运行整个数据库(或数据库服务),相比于记录基础上的加密,系统和方法允许使用复杂查询和运行存储过程;该记录基础需要解密客户端侧上的数据并且较不适合于复杂查询,该复杂查询通常需要查询引擎查看数据。
70.所描述系统和方法可用于实施服务网状结构。服务网状结构中的常用组件为边车代理,该边车代理向应用程序提供了tls终端。实例包括lyft的envoy代理和hashicorp的consul代理。这些边车代理需要访问对应于tls证书的私人秘钥。如果这对于对手为可访问的,那么私人秘钥允许攻击者执行欺骗服务的虚假验证。本文所描述的系统和方法向这些边车代理和包含tls私人秘钥的文件提供了针对根级攻击者的运行时和静态保护。
71.所描述系统和方法也为与区块链技术和环境一起可用的。区块链包含由用户或保管服务机构所批准的签名交易,该用户或保管服务机构通过拥有签名秘钥而控制其资产。对于签署交易的主机(无论其是否包含私人秘钥自身,或连接并授权以访问存储该秘钥的硬件安全模块)的对手访问可允许窃取这些资产/加密货币或可批准区块链上的恶意交易。通过执行在安全运行时中批准/发布交易的应用程序,即使在主机受损和对于机器的对手根级访问的情况下,所描述系统和方法能够保护资产/加密货币。
72.图7示出了计算装置700的实例框图。计算装置700可用于执行各种过程,诸如本文所讨论的那些。例如,计算装置700可执行本文所讨论计算装置和系统的函数或方法的任一者。计算装置700可执行如本文所讨论的各种函数,并且可执行一个或多个应用程序,诸如本文所描述的应用程序或功能性。计算装置700可为各种各样的计算装置的任一者,诸如台式计算机、笔记本计算机、服务器计算机、手持式计算机、平板计算机、可穿戴装置等。
73.计算装置700包括一个或多个处理器702、一个或多个存储器装置704、一个或多个接口706、一个或多个大容量存储装置708、一个或多个输入/输出(i/o)装置710和显示装置730,它们均联接至总线712。处理器702包含一个或多个处理器或控制器,这些处理器或控制器执行存储于存储器装置704和/或大容量存储装置708中的指令。处理器702还可包括各种类型的计算机可读介质,诸如缓存存储器。
74.存储器装置704包括各种计算机可读介质,诸如易失性存储器(例如,随机存取存储器(ram)714)和/或非易失性存储器(例如,只读存储器(rom)716)。存储器装置704还可包括可重写rom,诸如闪存存储器。
75.大容量存储装置708包括各种计算机可读介质,诸如磁带、磁盘、光盘、固态存储器(例如,闪存存储器)等。如图7所示,特定大容量存储装置为硬盘驱动器724。各种驱动器还可包括于大容量存储装置708中以允许自和/或至各种计算机可读介质的读取和/或写入。大容量存储装置708包括可移除介质726和/或不可移除介质。
76.i/o装置710包括各种装置,这些装置允许数据和/或其它信息输入至或接收自计算装置700。示例i/o装置710包括光标控制装置、键盘、小键盘、麦克风、显示屏或其它显示装置、扬声器、打印机、网络接口卡、调制解调器等。
77.显示装置730包括能够将信息显示至计算装置700的一个或多个用户的任何类型的装置。显示装置730的实例包括显示屏、显示终端、视频投影装置等。
78.接口706包括各种接口,这些接口允许计算装置700与其它系统、装置或计算环境进行交互。实例接口706可包括任何数量的不同网络接口720,诸如对于局域网(lan)、广域网(wan)、无线网络和互联网的接口。其它接口包括用户接口718和外围装置接口722。接口706还可包括一个或多个用户接口元件718。接口706还可包括一个或多个外围接口,诸如用于打印机、指向装置(鼠标、轨迹板,或本领域技术人员现已知或后来发现的任何合适的用户接口)、键盘等的接口。
79.总线712允许处理器702、存储器装置704、接口706、大容量存储装置708和i/o装置710彼此通信,以及与联接至总线712的其它装置或组件进行通信。总线712表示数种类型的总线结构的一者或多者,诸如系统总线、pci总线、ieee总线、usb总线等。
80.出于说明的目的,程序和其它可执行程序组件在本文示为离散块,但应当理解,此类程序和组件可在计算装置700的不同存储组件中驻留不同时间,并且由处理器702执行。另选地,本文所描述的系统和过程可在硬件,或在硬件、软件和/或固件的组合中实施。例如,一个或多个专用集成电路(asic)可编程成执行本文所描述的系统和过程的一者或多者。
81.虽然本文描述了本公开的各种实施例,但是应当理解,它们通过仅实例和非限制的方式来呈现。对相关领域的技术人员将显而易见的是,可在其中做出形式和细节的各种变化而不脱离本公开的精神和范围。因此,本公开的广度和范围不应受限于所描述示例性实施例的任一者,而是应仅根据下述权利要求和其等同物来限定。本文的描述出于说明和描述的目的来呈现。该描述非旨在为穷尽的,或非旨在将本公开限制于所公开的精确形式。鉴于所公开教导内容,许多修改和变型为可能的。另外,应注意,本文所讨论的另选实施方式的任一者或全部可以任何需要组合来使用以形成本公开的额外混合实施方式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1