CN112817780B - 一种实现安全与高性能进程间通信的方法和系统 - Google Patents
一种实现安全与高性能进程间通信的方法和系统 Download PDFInfo
- Publication number
- CN112817780B CN112817780B CN202110136600.0A CN202110136600A CN112817780B CN 112817780 B CN112817780 B CN 112817780B CN 202110136600 A CN202110136600 A CN 202110136600A CN 112817780 B CN112817780 B CN 112817780B
- Authority
- CN
- China
- Prior art keywords
- enclave
- host
- monitor
- communication
- inter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种实现安全与高性能进程间通信的方法和系统,该方法包括:开发人员完成飞地进程Enclave开发,加载至计算系统;由计算系统加载宿主进程Host程序,启动飞地进程Enclave;宿主进程Host程序启动与飞地进程Enclave的通信,调用Monitor来请求进程间通信;Monitor确保接力页只有一个内存映射,将Monitor的所有权由宿主进程Host转移至飞地进程Enclave;飞地进程Enclave程序启动与另一飞地进程Enclave的进程间通信,Monitor建立飞地进程Enclave 1与Name Server的连接;飞地进程Enclave 1向Name Server请求飞地进程Enclave 2的Capability;Monitor重新映射接力页来实现飞地进程Enclave 1与飞地进程Enclave 2之间的消息传递。本发明使用接力页与软硬件协同提供完整性保护实现的在可信计算场景下,令飞地(Enclave)进程进行高性能进程间通信(IPC)。
Description
技术领域
本发明涉及可信计算技术领域,具体地,涉及一种实现安全与高性能进程间通信的方法和系统。
背景技术
可信计算技术:可信计算(Trusted Computing,TC)是一项由可信计算组(TrustedComputing Group,前称为TCPA)推动和开发的技术。这个术语来源于可信系统(可信系统),并且有其特定含义。确切而言,它意味着可以充分相信其行为会更全面地遵循设计,而执行设计者和软件编写者所禁止的行为的概率很低。可信计算环境下对系统安全性与进程间隔离要求更高,导致了高昂的进程间通信开销。
RISC-V:是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为开源软件运动相对应的一种“开源硬件”。该项目2010年始于加州大学柏克莱分校,但许多贡献者是该大学以外的志愿者和行业工作者。
PMP(Physical Memory Protection):PMP是RISC-V提供的内存隔离机制,由2个配置寄存器(64位,32位下4个)和16个地址寄存器组成。其功能是将内存划分成不同区域,只有具备该区域权限的进程可以访问相应区域,该机制的检查由硬件完成,所以性能较好,缺点是其保护的内存区域以及能创建的Enclave数量受到PMP寄存器数量的限制(16个)。
TEE(Trusted Execution Environment)技术:TEE的全称trusted executionenvironment,是主处理器的一个安全区域。它保证了内部加载的代码和数据在机密性和完整性方面受到保护。TEE作为一个隔离的执行环境,提供了一些安全特性,例如隔离执行、使用TEE执行的应用程序的完整性以及它们的数据的机密性。一般来说,TEE提供了一个执行空间,它为运行在设备上的可信应用程序提供了比富操作系统(OS)更高的安全性。使用TEE技术使得Host与Enclave的内存分别在不可信与可信分区中,这意味不进行特殊的优化,Host与Enclave之间的进程间通信就需要进行加密与数据拷贝,导致开销巨大。
Security Monitor:Security Monitor是运行在Machine Mode(RISC-V)的可信特权软件,通常是TCB(可信计算基)的组成部分。在TEE中,Monitor负责Enclave的创建与销毁,以及内存的分配,内存隔离(如使用RISC-V的PMP),本地验证,远程验证,Enclave管理,防御侧信道攻击等等功能。
Keystone是基于RISC-V的软硬件结合设计的TEE系统。Keystone在Machine Mode这一RISC-V的最高权限级中实现了一个Security Monitor,并利用PMP物理内存隔离技术来隔离操作系统和TEE程序。若无特殊设置,Machine Mode进程可以访问所有内存,而其他权限级的进程只能访问赋予自己的内存空间,无权访问其他内存空间。Keystone运行在Machine Mode的安全监控器会负责配置PMP寄存器,由于主机操作系统不可信,它在启动时会首先用PMP为自己的代码和数据隔离出一段不可信的操作系统无法访问的内存,用于保护自己不受攻击。在创建Enclave时也会利用PMP为Enclave隔离出一段安全的内存,从而实现Enclave之间的物理内存隔离。
IPC技术:进程间通信(Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法。IPC接口功能包括传递寄存器数据、内存数据、以及Capability等。进程是计算机系统分配资源的最小单位。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。通常,使用进程间通信的两个应用可以被分为客户端和服务器,客户端进程请求数据,服务端响应客户端的数据请求。有一些应用本身既是服务器又是客户端,这在分布式计算中,时常可以见到。这些进程可以运行在同一计算机上或网络连接的不同计算机上。但是进行数据拷贝的IPC效率低下,而共享内存的IPC方式存在安全隐患。
Capability技术:由Capability搭建的访问控制系统,Capability是一种记号(token),由它来指定一个Object,给予程序访问该对象并对其进行特定操作的权限。在IPC场景下,Monitor维护了call-cap和grant-cap,前者允许其他持有者与自己通信,后者赋予自己将自身持有的Capability转交他人的能力。在存在恶意Enclave的情况下,将自身Capability交给恶意Enclave会造成巨大的安全隐患。
零拷贝技术:零拷贝(Zero-copy)技术指在计算机执行操作时,CPU不需要先将数据从一个内存区域复制到另一个内存区域,从而可以减少上下文切换以及CPU的拷贝时间。它的作用是在数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现CPU的零参与,彻底消除CPU在这方面的负载。实现零拷贝用到的最主要技术是DMA数据传输技术和内存区域映射技术。但是零拷贝技术本身不是为TEE设计,直接将非安全页重新映射至安全页会造成严重的安全问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种实现安全与高性能进程间通信的方法和系统,使用接力页与软硬件协同提供完整性保护实现的在可信计算场景下,令飞地(Enclave)进程进行高性能进程间通信(IPC)。
根据本发明提供的一种实现安全与高性能进程间通信的方法和系统,所述方案如下:
第一方面,提供了一种实现安全与高性能进程间通信的方法,所述方法包括:
步骤S1:开发人员完成飞地进程Enclave开发,加载至计算系统;
步骤S2:由计算系统加载宿主进程Host程序,并且启动飞地进程Enclave;
步骤S3:宿主进程Host程序启动与飞地进程Enclave的通信,将信息放在接力页中,调用Monitor来请求进程间通信;
步骤S4:Monitor确保接力页只有一个内存映射,同时将Monitor的所有权由宿主进程Host转移至飞地进程Enclave;
若启用可选的内存加密,则利用新寄存器使接力页使用全局密钥进行加解密;
步骤S5:飞地进程Enclave程序处理完进程间通信IPC请求后返回,进程间通信IPC结束;
步骤S6:飞地进程Enclave程序启动与另一飞地进程Enclave的进程间通信,Monitor建立飞地进程Enclave 1与Name Server的连接;
步骤S7:飞地进程Enclave 1向Name Server请求飞地进程Enclave 2的Capability,获得Capability后即可与飞地进程Enclave 2进行进程间通信;
步骤S8:Monitor重新映射接力页来实现飞地进程Enclave 1与飞地进程Enclave2之间的消息传递;
若启用可选的内存加密,则利用新寄存器使接力页使用全局密钥进行加解密。
优选的,所述步骤1包括:由宿主进程Host向Monitor请求创建飞地进程Enclave,创建后需要校验Enclave Hash,校验通过后飞地进程Enclave创建完毕。
优选的,所述步骤2包括:将所述飞地进程Enclave的内存保护起来,只有飞地进程Enclave自身能访问,宿主进程Host无法访问飞地进程Enclave的数据。
优选的,所述步骤3包括:所述接力页在虚拟内存中只有一个映射的特殊物理页,Monitor会将接力页的虚拟地址映射在本发明的可选新寄存器Reg_hole_VA_start和Reg_hole_VA_size框定的范围内。
优选的,所述步骤4包括:Monitor保证所述接力页在虚拟内存中只有一个映射,并且将Monitor的所有权从宿主进程Host转移至飞地进程Enclave;
若启用可选的内存加密,Monitor会保证接力页的虚拟地址落在新寄存器Reg_hole_VA_start和Reg_hole_VA_size框定的范围内,在该范围内的页使用全局密钥进行加解密。
优选的,所述步骤5包括:飞地进程Enclave完成运行逻辑后挂起,控制流回到宿主进程Host,该步骤中的调度以及上下文切换由Monitor负责完成。
优选的,所述步骤6包括:所述Name Server为一个飞地进程Enclave,该飞地进程Enclave负责在飞地进程Enclave之间建立连接。
优选的,所述步骤7包括:Monitor提供call-cap与grant-cap两种Capability,前者赋予Enclave与其他Enclave通信的能力,后者赋予Enclave给出Capability的能力。
优选的,所述步骤8包括:利用所述接力页,在TEE(Trusted ExecutionEnvironment)场景下实现进程间通信IPC过程中零拷贝的进行消息传递,并引入一对新的寄存器,实现可选的数据完整性保护机制。
第二方面,提供了一种实现安全与高性能进程间通信的系统,所述系统包括:
模块M1:开发人员完成飞地进程Enclave开发,加载至计算系统;
模块M2:由计算系统加载宿主进程Host程序,并且启动飞地进程Enclave;
模块M3:宿主进程Host程序启动与飞地进程Enclave的通信,将信息放在接力页中,调用Monitor来请求进程间通信;
模块M4:Monitor确保接力页只有一个内存映射,同时将Monitor的所有权由宿主进程Host转移至飞地进程Enclave;
若启用可选的内存加密,则利用新寄存器使接力页使用全局密钥进行加解密;
模块M5:飞地进程Enclave程序处理完进程间通信IPC请求后返回,进程间通信IPC结束;
模块M6:飞地进程Enclave程序启动与另一飞地进程Enclave的进程间通信,Monitor建立飞地进程Enclave 1与Name Server的连接;
模块M7:飞地进程Enclave 1向Name Server请求飞地进程Enclave 2的Capability,获得Capability后即可与飞地进程Enclave 2进行进程间通信;
模块M8:Monitor重新映射接力页来实现飞地进程Enclave 1与飞地进程Enclave2之间的消息传递;
若启用可选的内存加密,则利用新寄存器使接力页使用全局密钥进行加解密。
与现有技术相比,本发明具有如下的有益效果:
1、将本发明与Keystone的进程间通信IPC方案进行对比,两者分别利用进程间通信IPC在宿主进程Host与飞地进程Enclave之间传递消息,消息大小分别为16KB,64KB,256KB,1M,4M;在此测试下,本发明相对于Keystone实现了35.99(传递16KB消息)~96.6倍(传递4MB消息)的性能提升;
2、本发明将接力页与物理页所有权转移技术的结合在一起,解决了现有进程间通信IPC方案造成的巨大数据拷贝开销,无法安全地转移物理页的所有权问题,带来了安全且高性能的进程间通信IPC实现;
3、本发明引入Reg_hole_VA_start和Reg_hole_VA_size这两个新寄存器,划定了一段,无论属于Host还是Enclave,硬件都会对其进行加密的地址;从而在体系结构的高度上实现了安全的高性能IPC;
4、基于现有飞地进程Enclave技术,能够兼容现有的飞地进程Enclave应用和现有飞地进程Enclave使用场景;
5、接力页通过Monitor来配置,可信的Monitor(在TCB内)保证了接力页逻辑的正确与安全;
6、Name Server机制借鉴现有微内核系统,存放于用户态飞地进程Enclave中,进一步缩减了Monitor的TCB与攻击面,实现了更小巧灵活的Monitor与更小的攻击面。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的工作流程图;
图2为本发明Host-Enclave通信的架构示意图;
图3为本发明Enclave-Enclave通信的架构示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明实施例提供了一种实现安全与高性能进程间通信的方法,使用接力页与软硬件协同提供完整性保护实现的在可信计算场景下,令飞地进程Enclave进行高性能进程间通信IPC的方法包括:宿主进程Host与飞地进程Enclave进行进程间通信,以及飞地进程Enclave与飞地进程Enclave之间进行进程间通信两个部分。
Monitor指运行在Machine Mode(RISC-V)的可信特权软件,通常是TCB(可信计算基)的组成部分。在TEE中,Monitor负责飞地进程Enclave的创建与销毁,以及内存的分配,内存隔离(如使用RISC-V的PMP),本地验证,远程验证,飞地进程Enclave管理,防御侧信道攻击等等功能。
零拷贝消息传递指在进程间通信时使用所有权转移或者重映射(取消存放进程间通信IPC消息的页在宿主进程Host中的映射,并将其重新映射到飞地进程Enclave中)等方法进行数据页在宿主进程Host与其飞地进程Enclave以及不同飞地进程Enclave间的转移。
所有权转移机制是指在Monitor中维护了一个物理页所有权表(bitmap),这个表中记载了每个物理页是安全内存还是非安全内存。利用此表,Monitor就可以实现4KB粒度的物理内存隔离。物理页所有权表被放在由PMP隔离出来的内存中,只有Monitor能够访问,任何用户态(User)与系统态(OS内核)尝试访问该表都会下陷至Monitor,从而保证了物理页所有权表本身的安全。本发明利用所有权转移和重映射技术避免了数据页的拷贝操作,大大提高了进程间通信IPC的性能。举例来说,在宿主进程Host与飞地进程Enclave间进程间通信IPC时,通过所有权转移来实现零拷贝的消息传递;在不同飞地进程Enclave间进行进程间通信IPC时,使用重映射来实现零拷贝的消息传递。
如图1所示,以下将通过具体实施例来详细描述本发明进行高性能进程间通信IPC的方法。
开发人员完成飞地进程Enclave开发后,加载至计算系统,由宿主进程Host向Monitor请求创建飞地进程Enclave,创建后需要校验Enclave Hash,校验通过后飞地进程Enclave创建完毕。
由计算系统加载宿主进程Host程序,并且启动飞地进程Enclave,将飞地进程Enclave的内存保护起来,只有飞地进程Enclave自身能访问,宿主进程Host无法访问飞地进程Enclave的数据。如图2所示,宿主进程Host发起向飞地进程Enclave的进程间通信IPC调用,将消息放在接力页中,下陷至Monitor,由Monitor负责接力页的所有权转换,即在将该页从宿主进程Host内存中解映射,再将其映射在飞地进程Enclave内存中,同时在物理页所有权表中将该页的所有权从宿主进程Host改为飞地进程Enclave。
宿主进程Host程序启动与飞地进程Enclave的通信,将信息放在特殊的接力页中,调用Monitor来请求进程间通信,接力页在虚拟内存中只有一个映射的特殊物理页,Monitor会将接力页的虚拟地址映射在本发明的可选新寄存器Reg_hole_VA_start和Reg_hole_VA_size框定的范围内。Monitor完成接力页的所有权转换后调度Client Enclave。Client Enclave完成Host-Enclave IPC,开始发起Enclave-Enclave IPC。首先向NameServer请求Server Enclave的call-cap。Name Server收到Client Enclave的请求,将Server Enclave的call-cap传给Client Enclave。Client Enclave获得Server Enclave的call-cap,进而向Server Enclave发起连接,连接完成后即可开始IPC通信。
Monitor确保接力页只有一个内存映射,同时将Monitor的所有权由宿主进程Host转移至飞地进程Enclave。若启用可选的内存加密,Monitor会保证接力页的虚拟地址落在新寄存器Reg_hole_VA_start和Reg_hole_VA_size框定的范围内,(这两个寄存器只在开启可选的内存加密功能时才启用)。在该范围内的页使用全局密钥进行加解密;若启用可选的内存加密,则利用新寄存器使接力页使用全局密钥(只有硬件可见)而不是Per-Enclave密钥进行加解密。
飞地进程Enclave程序处理完进程间通信IPC请求后返回,进程间通信IPC结束,飞地进程Enclave完成运行逻辑后挂起,控制流回到宿主进程Host,该步骤中的调度以及上下文切换由Monitor负责完成。
飞地进程Enclave程序启动与另一飞地进程Enclave的进程间通信,Monitor建立飞地进程Enclave 1与Name Server的连接,Name Server为一个特殊的飞地进程Enclave,该飞地进程Enclave负责在飞地进程Enclave之间建立连接。即类似微内核将部分逻辑放在用户态以此减少Monitor可信基(TCB)的方法。Name Server技术为一个特殊的飞地进程Enclave,这个飞地进程Enclave具有为其他飞地进程Enclave建立IPC通信的能力。具体来说,如图3所示,在Server Enclave(IPC服务方)启动时,会自动与Name Server建立连接。同时,Server Enclave会将自己的grant-cap交给Name Server来注册自己的服务。当宿主进程Host创建一个Client Enclave时,Monitor会为这个飞地进程Enclave与Name Server建立连接,此时,Client Enclave就可以向Name Server请求Server Enclave的call-cap来与之通信。
飞地进程Enclave 1向Name Server请求飞地进程Enclave 2的Capability,获得Capability后即可与飞地进程Enclave 2进行进程间通信,Monitor提供call-cap与grant-cap两种Capability,前者赋予Enclave与其他Enclave通信的能力,后者赋予Enclave给出Capability的能力。本实施例中,Capability技术由Monitor维护,分为call-cap和grant-cap,每个飞地进程Enclave都具有这两个Capability。具体来说,当飞地进程Enclave A将call-cap给与飞地进程Enclave B时,意味着飞地进程Enclave A允许飞地进程Enclave B与之通信;而grant-cap允许飞地进程Enclave将自己的call-cap或者grant-cap移交给其他飞地进程Enclave。
Monitor重新映射接力页来实现飞地进程Enclave 1与飞地进程Enclave 2之间的消息传递;若启用可选的内存加密,则利用新寄存器使接力页使用全局密钥(只有硬件可见)而不是Per-Enclave密钥进行加解密。利用所述接力页,在TEE(Trusted ExecutionEnvironment)场景下实现进程间通信IPC过程中零拷贝的进行消息传递,并引入一对新的寄存器,实现可选的数据完整性保护机制。
本发明还借助Name Server Enclave将Enclave间的连接管理放到用户态,从而有效减小了系统的可信基(TCB),进而保证了更高的系统安全性。
本发明实施例提供了一种实现安全与高性能进程间通信的方法,将接力页与物理页所有权转移技术相融合,提出的接力页技术为在虚拟内存中只有一个映射的特殊物理页,这些页由Host申请时属于不可信内存,由Enclave申请时属于可信内存。Monitor负责维护接力页,并确保其在虚拟内存中只有一处映射,从而避免了在转移接力页所有权时,因为该页被映射到多个虚拟地址而产生的安全问题。同时避免了在接力页存在多个虚拟地址映射的情况下,转移所有权需要一一解映射带来的额外开销。而通过接力页传递的IPC消息,不存在拷贝开销,由此实现了零拷贝的高性能IPC。
本发明引入Reg_hole_VA_start和Reg_hole_VA_size这两个新寄存器,前者标记了起始虚拟地址,后者存放了该段内存区域的大小。具体来说,当开启内存加密功能时,硬件只对属于Enclave的内存进行加密,而属于Host的内存并不会被加密。而对于Reg_hole_VA_start和Reg_hole_VA_size所划定的区域中的页,无论属于Host还是Enclave,硬件都会对其进行加密,并且该加密使用一把单独的密钥,而非每个Enclave所独有的密钥。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种实现安全与高性能进程间通信的方法,其特征在于,所述方法包括:
步骤S1:开发人员完成飞地进程Enclave开发,加载至计算系统;
步骤S2:由计算系统加载宿主进程Host程序,并且启动飞地进程Enclave;
步骤S3:宿主进程Host程序启动与飞地进程Enclave的通信,将信息放在接力页中,调用Monitor来请求进程间通信;
步骤S4:Monitor确保接力页只有一个内存映射,同时将Monitor的所有权由宿主进程Host转移至飞地进程Enclave;
若启用可选的内存加密,则利用新寄存器使接力页使用全局密钥进行加解密;
步骤S5:飞地进程Enclave程序处理完进程间通信IPC请求后返回,进程间通信IPC结束;
步骤S6:飞地进程Enclave程序启动与另一飞地进程Enclave的进程间通信,Monitor建立飞地进程Enclave 1与Name Server的连接;
步骤S7:飞地进程Enclave 1向Name Server请求飞地进程Enclave 2的Capability,获得Capability后即可与飞地进程Enclave 2进行进程间通信;
步骤S8:Monitor重新映射接力页来实现飞地进程Enclave 1与飞地进程Enclave2之间的消息传递;
若启用可选的内存加密,则利用新寄存器使接力页使用全局密钥进行加解密。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1包括:由宿主进程Host向Monitor请求创建飞地进程Enclave,创建后需要校验Enclave Hash,校验通过后飞地进程Enclave创建完毕。
3.根据权利要求1所述的方法,其特征在于,所述步骤S2包括:将所述飞地进程Enclave的内存保护起来,只有飞地进程Enclave自身能访问,宿主进程Host无法访问飞地进程Enclave的数据。
4.根据权利要求1所述的方法,其特征在于,所述步骤S3包括:所述接力页在虚拟内存中只有一个映射的特殊物理页,Monitor会将接力页的虚拟地址映射在本发明的可选新寄存器Reg_hole_VA_start和Reg_hole_VA_size框定的范围内。
5.根据权利要求1所述的方法,其特征在于,所述步骤S4包括:Monitor保证所述接力页在虚拟内存中只有一个映射,并且将Monitor的所有权从宿主进程Host转移至飞地进程Enclave;
若启用可选的内存加密,Monitor会保证接力页的虚拟地址落在新寄存器Reg_hole_VA_start和Reg_hole_VA_size框定的范围内,在该范围内的页使用全局密钥进行加解密。
6.根据权利要求1所述的方法,其特征在于,所述步骤S5包括:飞地进程Enclave完成运行逻辑后挂起,控制流回到宿主进程Host,该步骤中的调度以及上下文切换由Monitor负责完成。
7.根据权利要求1所述的方法,其特征在于,所述步骤S6包括:所述Name Server为一个飞地进程Enclave,该飞地进程Enclave负责在飞地进程Enclave之间建立连接。
8.根据权利要求1所述的方法,其特征在于,所述步骤S7包括:Monitor提供call-cap与grant-cap两种Capability,前者赋予Enclave与其他Enclave通信的能力,后者赋予Enclave给出Capability的能力。
9.根据权利要求1所述的方法,其特征在于,所述步骤S8包括:利用所述接力页,在TEE(Trusted Execution Environment)场景下实现进程间通信IPC过程中零拷贝的进行消息传递,并引入一对新的寄存器,实现可选的数据完整性保护机制。
10.一种实现安全与高性能进程间通信的系统,其特征在于,所述系统包括:
模块M1:开发人员完成飞地进程Enclave开发,加载至计算系统;
模块M2:由计算系统加载宿主进程Host程序,并且启动飞地进程Enclave;
模块M3:宿主进程Host程序启动与飞地进程Enclave的通信,将信息放接力页中,调用Monitor来请求进程间通信;
模块M4:Monitor确保接力页只有一个内存映射,同时将Monitor的所有权由宿主进程Host转移至飞地进程Enclave;
若启用可选的内存加密,则利用新寄存器使接力页使用全局密钥进行加解密;
模块M5:飞地进程Enclave程序处理完进程间通信IPC请求后返回,进程间通信IPC结束;
模块M6:飞地进程Enclave程序启动与另一飞地进程Enclave的进程间通信,Monitor建立飞地进程Enclave 1与Name Server的连接;
模块M7:飞地进程Enclave 1向Name Server请求飞地进程Enclave 2的Capability,获得Capability后即可与飞地进程Enclave 2进行进程间通信;
模块M8:Monitor重新映射接力页来实现飞地进程Enclave 1与飞地进程Enclave2之间的消息传递;
若启用可选的内存加密,则利用新寄存器使接力页使用全局密钥进行加解密。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110136600.0A CN112817780B (zh) | 2021-02-01 | 2021-02-01 | 一种实现安全与高性能进程间通信的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110136600.0A CN112817780B (zh) | 2021-02-01 | 2021-02-01 | 一种实现安全与高性能进程间通信的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112817780A CN112817780A (zh) | 2021-05-18 |
CN112817780B true CN112817780B (zh) | 2022-03-11 |
Family
ID=75861119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110136600.0A Active CN112817780B (zh) | 2021-02-01 | 2021-02-01 | 一种实现安全与高性能进程间通信的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817780B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113239347B (zh) * | 2021-06-18 | 2022-06-28 | 上海交通大学 | 一种适用于tee安全应用实例的启动方法及装置 |
CN113609494A (zh) * | 2021-08-10 | 2021-11-05 | 上海交通大学 | 适用于高性能场景下可信计算的软硬件系统及架构方法 |
CN116257368A (zh) * | 2021-12-10 | 2023-06-13 | 华为技术有限公司 | 一种计算机系统中的通信方法及相关产品 |
CN114722404B (zh) * | 2022-06-09 | 2022-10-14 | 睿思芯科(深圳)技术有限公司 | 基于risc-v实现任意数量eapp的方法、系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107544918A (zh) * | 2017-08-17 | 2018-01-05 | 致象尔微电子科技(上海)有限公司 | 一种内存页共享方法 |
CN109002706A (zh) * | 2018-06-08 | 2018-12-14 | 中国科学院计算技术研究所 | 一种基于用户级页表的进程内数据隔离保护方法和系统 |
CN109643290A (zh) * | 2016-10-01 | 2019-04-16 | 英特尔公司 | 用于具用扩展分段的面向对象的存储器管理的技术 |
CN111651778A (zh) * | 2020-05-26 | 2020-09-11 | 上海交通大学 | 基于risc-v指令架构的物理内存隔离方法 |
CN111858004A (zh) * | 2020-07-21 | 2020-10-30 | 中国人民解放军国防科技大学 | 基于tee扩展的计算机安全世界实时应用动态加载方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10372945B2 (en) * | 2017-01-24 | 2019-08-06 | Microsoft Technology Licensing, Llc | Cross-platform enclave identity |
US10671737B2 (en) * | 2017-11-10 | 2020-06-02 | Intel Corporation | Cryptographic memory ownership table for secure public cloud |
-
2021
- 2021-02-01 CN CN202110136600.0A patent/CN112817780B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109643290A (zh) * | 2016-10-01 | 2019-04-16 | 英特尔公司 | 用于具用扩展分段的面向对象的存储器管理的技术 |
CN107544918A (zh) * | 2017-08-17 | 2018-01-05 | 致象尔微电子科技(上海)有限公司 | 一种内存页共享方法 |
CN109002706A (zh) * | 2018-06-08 | 2018-12-14 | 中国科学院计算技术研究所 | 一种基于用户级页表的进程内数据隔离保护方法和系统 |
CN111651778A (zh) * | 2020-05-26 | 2020-09-11 | 上海交通大学 | 基于risc-v指令架构的物理内存隔离方法 |
CN111858004A (zh) * | 2020-07-21 | 2020-10-30 | 中国人民解放军国防科技大学 | 基于tee扩展的计算机安全世界实时应用动态加载方法及系统 |
Non-Patent Citations (1)
Title |
---|
基于AMD硬件内存加密机制的关键数据保护方案;吴宇明等;《信息安全学报》;20180131;第3卷(第1期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112817780A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11836276B2 (en) | Peripheral device with resource isolation | |
CN112817780B (zh) | 一种实现安全与高性能进程间通信的方法和系统 | |
EP3629540B1 (en) | Apparatus and method for secure memory access using trust domains | |
CN111651778B (zh) | 基于risc-v指令架构的物理内存隔离方法 | |
JP5989862B2 (ja) | セキュアなバーチャルマシン間の共有メモリ通信のためのコンピューティング装置、方法及び機械可読記憶媒体 | |
EP3842973B1 (en) | Security schemes for multiple trusted-execution-environments (tees) and multiple rich-execution-environments (rees) | |
WO2017133203A1 (zh) | 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置 | |
JP5153887B2 (ja) | プロセッサから周辺機器へのセキュア動作モードアクセス特権の譲渡のための方法及び装置 | |
CN105184147B (zh) | 云计算平台中的用户安全管理方法 | |
KR102105760B1 (ko) | 하드웨어 보안 기술 기반 gpu 컴퓨팅 보호 기법 | |
CN111949369B (zh) | 面向图形处理器的可信执行环境构建方法及系统 | |
CN113239329B (zh) | 一种用于移动端应用程序的可信执行环境的实现系统 | |
KR20130000253A (ko) | 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법 | |
Deng et al. | Strongbox: A gpu tee on arm endpoints | |
CN110851885A (zh) | 嵌入式系统安全防护架构体系 | |
Schnarz et al. | Towards attacks on restricted memory areas through co-processors in embedded multi-os environments via malicious firmware injection | |
CN113239347B (zh) | 一种适用于tee安全应用实例的启动方法及装置 | |
CN117494108B (zh) | 可信执行环境实现方法、计算机设备及存储介质 | |
CN117708832A (zh) | 高性能异构可信执行环境实现方法及系统 | |
US20230267196A1 (en) | Confidential Computing with Device Memory Isolation | |
Yu | An I/O Separation Model and its Applications to On-Demand I/O on Commodity Platforms | |
US20230098288A1 (en) | Apparatus and method for role-based register protection for tdx-io | |
Gutstein | Towards Efficient and Effective IOMMU-based Protection from DMA Attacks | |
CN116823585A (zh) | Gpu可信执行环境的构建方法、gpu可信计算执行方法及装置 | |
CN116579030A (zh) | 一种扩展物联网设备上安全资源的内存优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |