CN116933271A - 数据处理方法、装置、设备和存储介质 - Google Patents
数据处理方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN116933271A CN116933271A CN202310967247.XA CN202310967247A CN116933271A CN 116933271 A CN116933271 A CN 116933271A CN 202310967247 A CN202310967247 A CN 202310967247A CN 116933271 A CN116933271 A CN 116933271A
- Authority
- CN
- China
- Prior art keywords
- memory
- program
- page
- memory page
- virtual
- 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.)
- Granted
Links
- 238000003860 storage Methods 0.000 title claims abstract description 15
- 238000003672 processing method Methods 0.000 title claims abstract description 6
- 238000013507 mapping Methods 0.000 claims abstract description 103
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000012545 processing Methods 0.000 claims description 32
- 230000004044 response Effects 0.000 claims description 22
- 230000002159 abnormal effect Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 3
- 238000012986 modification Methods 0.000 claims description 3
- 230000004048 modification Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 24
- 238000005516 engineering process Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 15
- 230000006870 function Effects 0.000 description 13
- 238000007726 management method Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 238000002955 isolation Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 7
- 230000008531 maintenance mechanism Effects 0.000 description 5
- 244000035744 Hura crepitans Species 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- JEIPFZHSYJVQDO-UHFFFAOYSA-N iron(III) oxide Inorganic materials O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本公开的实施例提供了一种数据处理方法、装置、设备和存储介质。该方法包括:在可信执行环境中,初始化第一程序和与第一程序不同的第二程序;分别为第一程序和第二程序分配第一内存空间和第二内存空间,其中第一内存空间为线性内存地址空间,并且包括至少包括第一内存页;并且其中第二内存空间为线性内存地址空间,并且包括至少包括第二内存页,第二内存页与第一内存页不同;将第一内存空间的第一内存页映射至可信执行环境的虚拟地址空间中的第一虚拟内存页;以及将第二内存空间的第二内存页映射至虚拟地址空间中的第一虚拟内存页。
Description
技术领域
本公开的示例实施例总体涉及计算机领域,特别地涉及基于可信执行环境的数据处理方法、装置、设备和计算机可读存储介质。
背景技术
可信执行环境(Trusted execution environment,TEE)通过软硬件方法在中央处理器中构建一个安全区域,能够为运行在其中的程序提供一个具备机密性和完整性保护的独立执行环境。在可信执行环境中,程序运行代码和机密数据可以被维护在一块加密的隔离内存中,并在加密内存中完成计算,整个计算过程对外部不可见,以此方式来实现数据的保护。换言之,不同的程序可以以彼此隔离的方式在可信执行环境被运行。这种隔离性在保证数据安全的同时,也增加了程序间分享数据间的复杂度。因此,如何在可信执行环境中快捷高效地实现内存的共享以实现程序间的数据共享是当前亟待解决的技术问题。
发明内容
在本公开的第一方面,提供了一种数据处理方法,包括:在可信执行环境中,初始化第一程序和与第一程序不同的第二程序;分别为第一程序和第二程序分配第一内存空间和第二内存空间;其中,第一内存空间对第一程序可见并且对第二程序不可见,并且第二内存空间对第二程序可见并且对第一程序不可见;其中,第一内存空间为线性内存地址空间,并且包括至少包括第一内存页;并且其中,第二内存空间为线性内存地址空间,并且包括至少包括第二内存页,第二内存页与第一内存页不同;将第一内存空间的第一内存页映射至可信执行环境的虚拟地址空间中的第一虚拟内存页;以及将第二内存空间的第二内存页映射至虚拟地址空间中的第一虚拟内存页。
在本公开的第二方面,提供了一种数据处理装置,包括:程序初始化模块,被配置为:在可信执行环境中,初始化第一程序和与第一程序不同的第二程序;内存分配模块,被配置为分别为第一程序和第二程序分配第一内存空间和第二内存空间;其中,第一内存空间对第一程序可见并且对第二程序不可见,并且第二内存空间对第二程序可见并且对第一程序不可见;其中,第一内存空间为线性内存地址空间,并且包括至少包括第一内存页;并且其中,第二内存空间为线性内存地址空间,并且包括至少包括第二内存页,第二内存页与第一内存页不同;第一映射模块,被配置为将第一内存空间的第一内存页映射至可信执行环境的虚拟地址空间中的第一虚拟内存页;以及第二映射模块,被配置为将第二内存空间的第二内存页映射至虚拟地址空间中的第一虚拟内存页。
在本公开的第三方面,提供了一种电子设备。该设备包括至少一个处理单元;以及至少一个存储器,至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令。指令在由至少一个处理单元执行时使电子设备执行第一方面的方法。
在本公开的第四方面,提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,计算机程序可由处理器执行以实现第一方面的方法。
应当理解,本内容部分中所描述的内容并非旨在限定本公开的实施例的关键特征或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的描述而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了本公开的实施例能够在其中实现的示例环境的示意图;
图2示出了根据本公开的一些实施例的数据处理方法的流程图;
图3示出了根据本公开的一些实施例的内存映射的框图;
图4示出了根据本公开的一些实施例的程序地址的框图;
图5示出了根据本公开的一些实施例的共享内存映射方法的流程图;
图6示出了根据本公开的一些实施例的另一内存映射框图;
图7示出了根据本公开的一些实施例的数据处理装置的示意性结构框图;以及
图8示出了其中可以实施本公开的一个或多个实施例的电子设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中示出了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“一些实施例”应当理解为“至少一些实施例”。下文还可能包括其他明确的和隐含的定义。
在本文中,除非明确说明,“响应于A”执行一个步骤并不意味着在“A”之后立即执行该步骤,而是可以包括一个或多个中间步骤。
可以理解的是,本技术方案所涉及的数据(包括但不限于数据本身、数据的获取或使用)应当遵循相应法律法规及相关规定的要求。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当根据相关法律法规通过适当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限制性的实施例,响应于接收到用户的主动请求,向用户发送提示信息的方式,例如可以是弹出窗口的方式,弹出窗口中可以以文字的方式呈现提示信息。此外,弹出窗口中还可以承载供用户选择“同意”或“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实施例构成限定,其他满足相关法律法规的方式也可应用于本公开的实施例中。
近年来,虚拟机技术得到了广泛地应用。为了优化虚拟机的处理,提出了一种适用于虚拟机场景的二进制指令集,即,WebAssembly(在本公开中,将其简称为Wasm)。
Wasm技术具有较好的隔离性。具体而言,一个基于Wasm技术的虚拟机内可以同时执行多个Wasm程序。每个Wasm程序拥有独立的线性内存地址空间。在这种情况下,每个Wasm程序只能访问自身线性内存地址空间内的数据,而无法观察、干扰其他Wasm程序的执行流和数据流等。
此外,Wasm技术属于轻量级指令集。具体而言,Wasm程序具有体积小、冷启动速度快以及对系统资源的消耗低的特点。进一步地,Wasm技术具有较好的可移植性,可作为其他高级语言的编译目标。具体而言,Wasm指令是一种二进制格式并且不限定开发语言。在这种情况下,使用高级语言编写的程序可以被编译成Wasm字节码以在Wasm虚拟机中被运行。目前对Wasm指令支持较为成熟的语言包括C、C++、Rust等。
由于Wasm技术属于轻量级指令集,并且具有较好的可移植性和隔离性,因此,除浏览器场景外,Wasm技术被越来越多地应用于需要支持多语言多租户的程序的应用场景。
然而,Wasm技术良好的隔离性在增强数据安全性的同时,也让Wasm程序间的数据交换变得更为复杂。如上所讨论的。Wasm程序在运行时,每个Wasm程序只能访问到自身的线性内存地址空间而无法访问自身线性内存地址空间之外的任何区域。在这种限制下,如果两个Wasm程序之间要想交换数据,通常只能通过内存复制的方式将数据从一个Wasm程序的线性内存地址空间复制到另一个Wasm程序的线性内存地址空间中,这导致交换在Wasm程序间交换数据的效率很低。
在一些实施例中,可以通过内存重映射技术来实现共享内存以提高交换数据的效率。具体而言,内存重映射技术是指通过改变操作系统的地址翻译流程,将一个虚拟地址指向的物理内存空间重映射至另一片物理内存空间。例如,虚拟地址原本指向物理地址,可以对虚拟地址/>进行重映射,使其指向物理地址/>。这样程序可以通过访问实现对物理地址/>的访问。
在一些实施例中,通过将不同Wasm程序的线性内存地址空间中的一组连续虚拟地址重映射至共享数据区,可以实现内存共享。例如,第一Wasm程序期望将其线性内存地址空间中的一段内存区域,分享给第二Wasm程序和第三Wasm程序。第二Wasm程序和第三Wasm程序可以将其各自的线性内存地址空间中的一段未使用的且满足共享内存长度的虚拟地址空间映射至/>所对应的物理内存区域。因此,通过内存重映射技术可以在Wasm程序间实现内存共享,从而避免通过内存复制来实现数据共享所带来的额外系统开销。
近年来,为了提高数据的安全性,可信执行环境技术也被广泛应用于虚拟机的管理和维护场景。可信执行环境技术通过软硬件方法在中央处理器中构建一个安全区域,能够为运行在其中的程序提供一个具备机密性和完整性保护的独立执行环境。
在一些实施例中,可信执行环境可以实现进程级别的保护。具体而言,在可信执行环境中,程序运行代码和机密数据可以被维护在一块加密的隔离内存中,并在加密的隔离内存中完成计算,整个计算过程对外部不可见,即使是具有更高特权级的操作系统也无法看到加密的隔离内存中的执行流和机密数据。
在一些实施例中,由于Wasm技术可以实现更安全的内存隔离并未可以很好地支持多语言的架构,可以将Wasm技术应用于可信执行环境中,以通过Wasm技术来更方便、快速地构建轻量级的可信数据沙箱。在将Wasm技术应用于可信执行环境时,Wasm技术的内存安全特性限制了Wasm程序不能访问沙箱以外的地址空间,并且必须调用受到系统监管的应用程序编程接口来访问系统资源,这使得运行在可信执行环境内的Wasm程序具有双向沙箱的隔离保护。以此方式,可以有效地支持基于可信执行环境的隐私计算和云代理计算场景,并且可以打造公有云机密计算服务,诸如,功能即服务(Function as a Service,FaaS)。
在一些实施例中,基于软件故障隔离(Software-based fault isolation,SFI)的技术可以使得运行在同一系统内的多个Wasm程序之间互不干扰,互不可见。在该方案中,要求系统为每个Wasm程序设置连续且独立的线性内存地址空间,并限制每个Wasm程序只能访问自己的线性内存地址空间。然而,该线性内存管理机制导致对于共享内存的支持明显不足。具体而言,在使用线性内存模型时,多个Wasm程序的内存共享主要依赖于内存重映射技术。但是基于内存重映射的共享内存通用性不强,例如,无法支持用户态可信执行环境。这是因为用户态可信执行环境并不信任操作系统管理的页表,因此不允许操作系统对可信执行环境的内存页进行重映射。此外,上述内存管理机制也无法实现细粒度的内存访问控制。在这种情况下,共享内存通常被设置为可读写的,而无法限定某个共享内存块对于一些Wasm程序只读,同时对于另一些Wasm程序可读写。
更重要的是,上述内存管理机制的安全性不够强。具体而言,Wasm程序的共享内存中的所有区域都是可读写的,不能单独配置只读权限,导致已有页表可以通过缓冲区溢出攻击来修改Wasm程序的常量变量,从而改变程序执行流。
为了解决上述问题中的至少部分,本公开提出了一种基于可信执行环境的数据处理方案。该方案包括:在可信执行环境中,初始化第一程序和与第一程序不同的第二程序;分别为第一程序和第二程序分配第一内存空间和第二内存空间,其中第一内存空间为线性内存地址空间,并且包括至少包括第一内存页;并且其中第二内存空间为线性内存地址空间,并且包括至少包括第二内存页,第二内存页与第一内存页不同;将第一内存空间的第一内存页映射至可信执行环境的虚拟地址空间中的第一虚拟内存页;以及将第二内存空间的第二内存页映射至虚拟地址空间中的第一虚拟内存页。以此方式,可以在彼此隔离的线性内存间地址空间之实现共享内存。
示例环境
图1示出了本公开的实施例能够在其中实现的示例环境100的示意图。如图1所示,示例环境100可以包括计算设备110。如图1所示,计算设备110可以被部署有可信执行环境150。在该可信执行环境150中,可以运行一个或多个虚拟机160。
虚拟机160上可以运行有多个程序,如图1所示的第一程序170-1和第二程序170-2。为便于讨论,第一程序170-1和第二程序170-2可以被统称为程序170。
程序170的一个示例是Wasm程序,可信执行环境150的一个示例是基于用户态的可信执行环境,诸如,基于软件防护扩展(Software Guard Extensions,SGX)的可信执行环境。
Wasm程序具有解释器(Interpreter)、预先编译(Ahead Of Time,AOT)以及即时编译(Just In Time,JIT)三种运行模式。当Wasm运行在解释器模式时,需要逐一解释Wasm指令,并在虚按机160上执行对应操作。当Wasm运行在预先编译(Ahead-Of-Time,AOT)模式时,可以提前以类似于C++程序的编译步将Wasm字节码转换成机器码。经过预先编译的Wasm程序并不是一个可以直接运行的可执行文件,需要在运行时进行加载。当Wasm运行在即时编译模式时,其整体上还是解释执行,但会对频繁运行的代码进行编译以生成机器码来加速运行。
进一步地,程序170在运行时,可以被分配有彼此隔离的线性内存地址空间,每个线性内存地址空间可以包括有多个内存页,多个内存页中的至少部分页可以被映射至虚拟地址空间190的虚拟内存页上。如图1所示,第一程序170-1被分配有第一内存空间180-1,第二程序170-2被分配有第二内存空间180-2。
接下来,以预先编译模式为例,来描述Wasm程序的地址映射机制。在Wasm程序执行时,可以使用32位地址去访问64位的虚拟内存地址。进一步地,Wasm程序只能看到32位的地址,把这种地址称为Wasm地址/程序地址,其取值区间为[0,4294967296],其中4294967296为32位无符号整数的最大值。在Wasm程序运行时,需要将Wasm地址转换为虚拟内存地址。从Wasm地址到虚拟地址的地址翻译流程如下所述。
在一些实施例中,Wasm程序在运行时,会被分配有大小为的线性虚拟内存。这段连续的线性虚拟内存被表示为/>,其中/>为线性虚拟内存的起始虚拟内存地址。当Wasm程序访问线性内存时,Wasm地址/>到虚拟地址/>的映射为。
由于Wasm程序在运行时使用了连续的虚拟地址作为Wasm程序的线性内存,整个翻译流程只要将Wasm地址和线性内存的起始地址相加即可,地址翻译流程变得非常简洁。
在一些实施例中,计算设备110可以是任意类型的移动终端、固定终端或便携式终端,包括移动手机、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、媒体计算机、多媒体平板、个人通信系统(PCS)设备、个人导航设备、个人数字助理(PDA)、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者前述各项的任意组合,包括这些设备的配件和外设或者其任意组合。在一些实施例中,客户端设备120也能够支持任意类型的针对用户的接口(诸如“可佩戴”电路等)。
备选地,在一些实施例中,计算设备110可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络、以及大数据和人工智能平台等基础云计算服务的云服务器。计算设备110例如可以包括计算系统/服务器,诸如大型机、边缘计算节点、云环境中的计算设备,等等。
应当理解,仅出于示例性的目的描述环境100中各个元素的结构和功能,而不暗示对于本公开的范围的任何限制。换言之,环境100中的元素的结构、功能、数量和链接关系可以根据实际需要而发生改变。本公开在此方面不受限制。
示例方法
图2示出根据本公开的一些实施例的数据处理过程200的流程图。为便于讨论,参考图1的环境100进行讨论。数据处理过程200可以被实现在计算设备110处。进一步地,当程序170为Wasm程序时,过程200可以由“Wasm运行时(Runtime)”来执行。
在如下的一些示例实施例中,Wasm程序将被作为第一程序170-1/第二程序170-2的示例,基于软件防护扩展(SGX)的可信执行环境将被作为可信执行环境150的示例。应当理解,上述示例不能理解为对本公开保护范围的限定。在其他实施例中,第一程序170-1/第二程序170-2可以为其他具有良好隔离性的指令程序,可信执行环境150可以为其他用户态可信执行环境。本公开的保护范围在此方面不受限制。
在一些实施例中,第二内存空间180-2与第一内存空间相互隔离。此外,第一内存空间180-1对第二程序170-2不可见,并且第二内存空间180-2对第一程序170-1不可见。
在框210,在可信执行环境150中,计算设备110初始化第一程序170-1和第二程序170-2。
在框220,计算设备110分别为第一程序170-1和第二程序170-2分配第一内存空间180-1和第二内存空间180-2。
在一些实施例中,第一内存空间180-1为线性内存地址空间,并且包括至少包括第一内存页。
在一些实施例中,第二内存空间180-2为线性内存地址空间,并且包括至少包括第二内存页,第二内存页与第一内存页不同。
在框230,计算设备110将第一内存空间180-1的第一内存页映射至可信执行环境的虚拟地址空间190中的第一虚拟内存页。
在框240,计算设备110将第二内存空间180-2的第二内存页映射至虚拟地址空间190中的第一虚拟内存页。
可见,通过把分配给程序170的线性内存地址空间以内存页为单位进行划分,并且以内存页为单元映射至虚拟内存页上,可以在可信执行环境中建立基于分页的内存管理和维护机制。以此方式,可以在彼此隔离的线性内存地址空间之间实现共享内存。
在一些实施例中,第一内存空间180-1还包括第三内存页和第四内存页,其中第三内存页和第四内存页为第一内存空间180-1中的两个连续内存页。计算设备110将第一内存空间180-1的第三内存页映射至虚拟地址空间190中的第二虚拟内存页,并且将第一内存空间180-1的第四内存页映射至可虚拟地址空间190中的第三虚拟内存页,其中第二虚拟内存页和第三虚拟内存页在虚拟地址空间190中不连续。
参考图3以更好地理解上述过程,其中图3示出了根据本公开的一些实施例的内存映射300的框图。为便于讨论,参考图1的环境100进行讨论。
在图3实施例中,第一内存空间180-1被分配给第一程序170-1,其包括第一内存页310、第三内存页311以及第四内存页312等。第二内存空间180-2被分配给第一程序170-2,其包括第二内存页320等。
计算设备110负责维护虚拟地址空间190,虚拟地址空间190包括第一虚拟内存页330、第二虚拟内存页331、第三虚拟内存页332等。当第一程序170-1(或第二程序170-2)需要使用第一内存空间180-1/第二内存空间180-2时,由计算设备110来负责建立/维护/解释第一内存空间180-1/第二内存空间180-2到虚拟地址空间190的映射。
如图3所示,第一程序170-1的第一内存页310和第二程序170-2的第二内存页320均被映射至了第一虚拟内存页330。换句话说,根据本公开的一些实施例中,可以通过修改地址映射/翻译过程来实现共享内存。
进一步地,在图3的特定实施例中,第一内存页310和第二内存页320可以被称为共享内存页;由于第三内存页311和第四内存页312不与其他程序共享,因此第三内存页311和第四内存页312也可以被称为第一程序170-1的私有内存页。
在图3中,第三内存页311和第四内存页在第一内存空间180-1中连续。在操作中,第三内存页311和第四内存页被分别映射至第二虚拟内存页331和第三虚拟内存页332。
以此方式,线性内存地址空间中的连续内存页可以以非线性的方式映射至虚拟地址空间190的非连续虚拟内存页上。以此方式,内存映射的方式将更加灵活。
根据本公开的一些实施例,可以通过页表的方式来对系统中的内存页进行管理和维护。接下来,将结合示例实施例对如何设计和维护页表进行描述。
在一些实施例中,可以将线性内存地址空间的内存大小设置为预定内存块的整数倍。例如,当程序170为Wasm程序时,分配给程序170的线性内存地址空间的大小可以为65536字节(即,64KB)的整数倍。
参见图4,示出了根据本公开的一些实施例的程序地址400的框图。在图4的特定实施例中,每个内存页的大小为64KB,则对于32位的程序地址而言,高/低16位可以被作为内存页索引,低/高16位可以作为页内偏移量。
在一些实施例中,计算设备110可以为第一程序170-1生成第一映射表,其中第一映射表包括至少一个页表条目。进一步地,每个页表条目与第一内存空间180-1中的一个相应的内存页相对应并且指示以下至少一项:相应的内存页是否已经被映射至虚拟地址空间190中的一虚拟内存页,或与相应的内存页相对应的虚拟内存页的在虚拟地址空间190中的虚拟地址信息。
继续参考图3。在图3中,第一映射表可以包括与第一内存页310相对应的第一页表条目,其中第一页表条目包括以下至少一项:第一信息,第一信息指示第一内存页310已经被映射至第一虚拟内存页330,以及第二信息,第二信息指示标识第一虚拟内存页330的第一虚拟地址。
在程序170为Wasm程序的示例实施例中,可以将Wasm程序的Wasm地址与虚拟地址的映射关系储存在该页表中,即,存储Wasm程序的内存页信息与虚拟内存页的映射关系。
进一步地,在Wasm程序被分配的最大内存为4G并且每个内存页为64KB的情况下,每个Wasm程序最多可以被分配有65536个内存页(因为64KB * 65536 = 4GB)。在这种情况下,每个页表中可以包括最多65536个页表条目,每个页表条目里面存储与一个内存页相对应的信息。在一些实施例中,每个页表条目可以包括第一信息,该参数可以为一布尔值,用来表示该Wasm内存页是否已经与一个虚拟内存页相绑定,或者Wasm内存页的起始地址是否已经与一个虚拟内存页的起始地址相绑定。如果一个Wasm内存页已经与一个虚拟内存页相绑定,则该第一信息值为true,对应的页表条目可以被称为已映射页表条目。相应地,如果一个Wasm内存页尚未与一个虚拟内存页相绑定,则该第一信息值为false,对应的页表条目可以被称为未映射页表条目。备选地,每个页表条目还可以包括第二信息,在第一信息为true/一个Wasm内存页已经与一个虚拟内存页相绑定的情况下,该第二信息指示该Wasm内存页所绑定的虚拟内存页的起始地址。
以此方式,内存页的映射关系可以通过页表来单独维护,降低了内存页维护的成本,提高了内存页维护的效率。
进一步地,可以通过动态修改页表的方式来实现内存的动态分配。具体而言,当计算设备110加载一个程序170时,会为该程序创建页表,在执行过程中,页表中的至少一个页表条目可以被动态修改,即,将未映射的内存页映射至对应的虚拟内存页上。
在一些实施例中,响应于第一程序170-1被运行,计算设备110为第一程序170-1生成第一映射表,其中第一映射表具有预设数目的页表条目,例如,等于(或小于)65536个页表条目。
进一步地,响应于检测到针对第一程序170-1的增加内存指令,计算设备110在第一映射表中修改至少一个页表条目以指示第一内存空间180-1中的至少一个新分配的内存页与虚拟地址空间190中的至少一个虚拟内存页的映射关系。
附加地,在程序170释放之前,可以允许程序170释放之前已经建立的映射。例如,程序170可以调用系统提供的映射释放接口,按照程序170的要求释放一部分内存页映射。
以Wasm程序为例进行进一步描述。Wasm程序字节码指定了其初始内存大小和最大内存大小,因此创建页表时,计算设备110可以首先映射部分Wasm页到虚拟内存一页,以满足程序初始内存大小需求,例如,创建65536个页表条目的页表,将其中的4096个条目修改为已映射条目。
后续如果Wasm程序有内存增长需求,则通过Wasm内存增长指令来建立更多的映射以实现内存扩容,即通过将未映射页表条目修改为已映射页表条目。相应地,在Wasm程序释放前,Wasm程序也可以调用系统指令来释放已映射页表条目。
以此方式,系统的内存可以根据需要按需分配,并且可以在不需要时及时释放,由此提高了系统资源的利用率。
根据本公开的一些实施例,可以为不同的内存页配置不同的读写权限。当内存页为共享内存页时,可以有效地提高数据管理的安全性。
在一些实施例中,第一映射表包括第一子映射表和/或第二子映射表。第一子映射表包括至少一个第一页表条目,该至少一个第一页表条目与第一程序170-1具有只读权限的至少一个内存页相对应。相应地,第二子映射表包括至少一个第二页表条目,该至少一个第二页表条目与第一程序170-1具有写权限的至少一个内存页相对应。
在另一些实现内存页读写权项控制的实施例中,每个页表条目出包括第一信息和第二信息外,还可以包括第三信息,第三信息指示相应程序针对该页表条目所对应的内存页的读写权限信息。
依然以Wasm程序为例描述读写控制权项的实施例。在一些实施例中,当多个Wasm程序互相共享内存时,需要对共享内存的写权限进行限制,以防止无关程序对共享内存做修改。
然而,传统的方案无法实现对共享内存实现读写控制。具体而言,在传统的方案中,权限控制对所有的Wasm程序生效。因此在传统方案中,当一个Wasm程序获得一块共享内存的访问权限时,它同时拥有读写权限。在这种限制下,Wasm程序也无法限制另一个Wasm程序只能读取共享内存,因为在传统的方案中,如果共享内存页被设置为只读时,系统内的所有Wasm程序都无法获得写权限。
根据本公开的基于分页的内存管理和维护机制,可以通过设立读页表(即,第一子映射表)和写页表(即,第二子映射表)来优化内存访问控制。具体而言,计算设备110为每个Wasm程序维护两个单级页表,也即读页表和写页表。读页表记录了程序有只读权限的地址映射,写页表则记录程序有写权限的地址映射;当Wasm程序执行读内存指令时,使用读页表进行地址翻译,当Wasm程序写内存时,则使用写页表进行地址翻译。以此方式,可以实现一个Wasm程序对不同内存页读/写的访问控制。
根据本公开的基于分页的内存管理和维护机制,还可以在内存页粒度上修改程序地址到虚拟地址的映射关系,从而很方便地实现跨程序的共享内存。接下来,将参考图5进一步描述夸程序的共享内存的创建。图5示出了根据本公开的一些实施例的共享内存映射方法500的流程图。在图5的实施例中,计算设备110已经将第一内存页映射至第一虚拟内存页。
在框510,在第一程序运行期间,计算设备110检测由第一程序170-1发起的创建共享内存的请求,该共享内存创建请求指示第一内存页的第一内存地址信息、第一程序针对第一内存页所设置的读写权限信息以及第一内存页的第一标识信息。
在框520,响应于检测到由第二程序170-2发起的查询共享内存的请求,计算设备110向第二程序170-2返回共享内存的标识信息列表,该标识信息列表包括第一内存页的第一标识信息。
在框530,计算设备110检测由第二程序170-2发起的共享内存映射请求,该共享内存映射请求指示第二内存页的第二内存地址信息以及第一内存页的第一标识信息。
在框540,响应于检测到共享内存映射请求,计算设备110将第二内存页映射至第一虚拟内存页。
依然以Wasm程序为例来进行描述。在一些实施例中,第一Wasm程序可以调用预设函数来创建共享内存页,该预设函数的输入参数可以包括:1)指示第一Wasm程序期望共享的一段共享内存的信息;2)指示这块共享区域的访问控制策略的信息,也即其他Wasm程序对这块区域的读写权限;2)用于标识这段共享内存的标识。作为示例,第一Wasm程序期望共享第一内存页,并限制其他Wasm程序不能修改第一内存页的内容,并设置第一内存页的标识为“1”。
第二Wasm程序可以发送共享内存查询请求。计算设备110向第二Wasm程序返回一个列表,该列表中存放了当前所存在的共享内存区域的标识,例如,第一内存页的标识“1”。
第二Wasm程序可以通过发送共享内存映射请求来将自己线性内存地址空间内的一内存区域重映射至相应的共享内存。例如,第二Wasm程序期望将自己的第二内存页映射至第一Wasm程序的第一内存页,则第二Wasm程序发送指示第二内存页地址和第一内存页标识“1”的共享内存映射请求。计算设备110可以将第二内存页映射至第一虚拟内存页,即,与第一内存页对应的虚拟内存页。
以此方式,可以在不引入过多开销的前提下,方便快捷地实现内存共享,并且可以实现不同Wasm程序享有不同的读写权限控制。
此外,为了进一步提高数据的安全性,计算设备110可以设置边界检查规则,以避免程序170的越界访问。具体而言,计算设备110会对每一次针对线性内存地址空间发起的访问进行边界检查,以确保一个程序只能访问自己的线性内存地址空间。
在分页内存管理模式下,可以使用异常内存页来辅助实现边界检查。参考图6,其示出了根据本公开的一些实施例的另一内存映射600的框图。
在一些实施例中,计算设备110检测由第一程序170-1发起的数据的访问请求。响应于检测到由第一程序170-1发起的数据的访问请求,计算设备110确定该数据所对应的内存地址是否在第一内存空间180-1内,如果内存地址不在第一内存空间180-1内,则将该内存地址映射至虚拟地址空间190的异常虚拟内存页610。
以Wasm程序为例,计算设备110可以为每个Wasm程序单独维护一个64KB大小的内存区域,称为异常内存页。在一些实施例中,计算设备110预先将未映射页表项中的虚拟内存页的地址修改为指向异常内存页的虚拟内存地址。因此,当Wasm程序访问未映射的内存页时,实际上访问的是自己的异常内存页。
以此方式,在内存访问合法的情况下,异常内存页永远不会被访问到,只有当内存越界时,异常内存页才会被访问。由于异常内存页内不存放任何有意义的信息,因此越界访问时仅能接触异常内存页而并不会影响Wasm原有的沙箱设计。
根据本公开的一些实施例,提出了一种分页内存管理方法,尤其适用于基于Wasm的SGX环境。本公开的分页内存管理能够有效解决线性内存模型共享内存支持不足、无法灵活设置只读权限的缺点。
此外,根据本公开的基于分页的内存管理和维护机制,Wasm程序的线性内存所对应的虚拟地址可以是非连续的,并且支持通过在页表上建立或取消相应映射来动态地增加或减少线性内存。
更要的是,根据本公开的基于分页的内存管理和维护机制实现的共享内存方案,通用性更强(适用于包括SGX在内的多种类型的可信执行环境),而且能在多个程序间对共享内存区域实现灵活的读写权限控制。
示例装置和设备
图7示出了根据本公开的某些实施例的数据处理装置700的示意性结构框图。装置700可以被实现为或者被包括在计算设备110中。装置700中的各个模块/组件可以由硬件、软件、固件或者它们的任意组合来实现。
如图7所示,装置700包括:程序初始化模块710,被配置为:在可信执行环境中,初始化第一程序和与第一程序不同的第二程序;内存分配模块720,被配置为分别为第一程序和第二程序分配第一内存空间和第二内存空间;其中,第一内存空间对第一程序可见并且对第二程序不可见,并且第二内存空间对第二程序可见并且对第一程序不可见;其中,第一内存空间为线性内存地址空间,并且包括至少包括第一内存页;并且其中,第二内存空间为线性内存地址空间,并且包括至少包括第二内存页,第二内存页与第一内存页不同;第一映射模块730,被配置为将第一内存空间的第一内存页映射至可信执行环境的虚拟地址空间中的第一虚拟内存页;以及第二映射模块740,被配置为将第二内存空间的第二内存页映射至虚拟地址空间中的第一虚拟内存页。
在一些实施例中,装置700还包括越界检查模块,被配置为响应于检测到由第一程序发起的数据的访问请求,确定数据所对应的内存地址是否在第一内存空间内;以及根据确定内存地址不在第一内存空间内,将内存地址映射至虚拟地址空间的异常虚拟内存页。
在一些实施例中,装置700还包括:页表生成模块,被配置为:为第一程序生成第一映射表,第一映射表包括至少一个页表条目,每个页表条目与第一内存空间中的一个相应的内存页相对应并且指示以下至少一项:相应的内存页是否已经被映射至虚拟地址空间中一虚拟内存页,或与相应的内存页相对应的虚拟内存页的在虚拟地址空间中的虚拟地址信息。
在一些实施例中,页表生成模块还被配置为:响应于检测到第一程序被初始化,为第一程序生成第一映射表,第一映射表具有预设数目的页表条目。装置700还包括:内存修改模块,被配置为响应于检测到针对第一程序的增加内存指令,在第一映射表中修改至少一个页表条目以指示第一内存空间中的至少一个新分配的内存页与虚拟地址空间中的至少一个虚拟内存页的映射关系。
在一些实施例中,第一映射表包括与第一内存页相对应的第一页表条目,第一映射表条目包括以下至少一项:第一信息,第一信息指示第一内存页已经被映射至第一虚拟内存页,第二信息,第二信息指示标识第一虚拟内存页的第一虚拟地址,以及第三信息,第三信息指示第一程序针对第一内存页的读写权限信息。
在一些实施例中,第一映射表包括以下至少一项:第一子映射表,第一子映射表包括至少一个第一页表条目,至少一个第一页表条目与第一程序具有只读权限的至少一个内存页相对应;第二子映射表,第二子映射表包括至少一个第二页表条目,至少一个第二页表条目与第一程序具有写权限的至少一个内存页相对应。
在一些实施例中,第一内存空间还包括第三内存页和第四内存页,第三内存页和第四内存页为第一内存空间中的两个连续内存页,装置700还包括:第二映射模块,被配置为将第三内存页映射至虚拟地址空间中的第二虚拟内存页;以及第三映射模块,被配置为将第四内存页映射至虚拟地址空间中的第三虚拟内存页,第二虚拟内存页和第三虚拟内存页在虚拟地址空间中不连续。
在一些实施例中,装置700还包括:共享请求检测模块,被配置为:在第一程序运行期间,检测由第一程序发起的创建共享内存的请求,创建共享内存的请求指示如下信息:第一内存页的第一内存地址信息、第一程序针对第一内存页所设置的读写权限信息以及第一内存页的第一标识信息;共享内存查询请求处理模块,被配置为:响应于检测到由第二程序发起的查询共享内存的请求,向第二程序返回在可信执行环境中的共享内存的标识信息列表,标识信息列表包括第一内存页的第一标识信息;共享内存映射请求处理模块,被配置为:检测由第二程序发起的共享内存映射请求,共享内存映射请求指示第二内存页的第二内存地址信息以及第一内存页的第一标识信息;以及共享内存映射模块,被配置为:响应于检测到共享内存映射请求,将第二内存页映射至第一虚拟内存页。
图8示出了其中可以实施本公开的一个或多个实施例的电子设备800的框图。应当理解,图8所示出的电子设备800仅仅是示例性的,而不应当构成对本文所描述的实施例的功能和范围的任何限制。图8所示出的电子设备800可以用于实现图1的计算设备110。
如图8所示,电子设备800是通用电子设备或计算设备的形式。电子设备800的组件可以包括但不限于一个或多个处理器或处理单元810、存储器820、存储设备830、一个或多个通信单元840、一个或多个输入设备850以及一个或多个输出设备860。处理单元810可以是实际或虚拟处理器并且能够根据存储器820中存储的程序来执行各种处理。在多处理器系统中,多个处理单元并行执行计算机可执行指令,以提高电子设备800的并行处理能力。
电子设备800通常包括多个计算机存储介质。这样的介质可以是电子设备800可访问的任何可以获取的介质,包括但不限于易失性和非易失性介质、可拆卸和不可拆卸介质。存储器820可以是易失性存储器(例如寄存器、高速缓存、随机访问存储器(RAM))、非易失性存储器(例如,只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存)或它们的某种组合。存储设备830可以是可拆卸或不可拆卸的介质,并且可以包括机器可读介质,诸如闪存驱动、磁盘或者任何其他介质,其可以能够用于存储信息和/或数据(例如用于训练的训练数据)并且可以在电子设备800内被访问。
电子设备800可以进一步包括另外的可拆卸/不可拆卸、易失性/非易失性存储介质。尽管未在图8中示出,可以提供用于从可拆卸、非易失性磁盘(例如“软盘”)进行读取或写入的磁盘驱动和用于从可拆卸、非易失性光盘进行读取或写入的光盘驱动。在这些情况中,每个驱动可以由一个或多个数据介质接口被连接至总线(未示出)。存储器820可以包括计算机程序产品825,其具有一个或多个程序模块,这些程序模块被配置为执行本公开的各种实施例的各种方法或动作。
通信单元840实现通过通信介质与其他电子设备进行通信。附加地,电子设备800的组件的功能可以以单个计算集群或多个计算机器来实现,这些计算机器能够通过通信连接进行通信。因此,电子设备800可以使用与一个或多个其他服务器、网络个人计算机(PC)或者另一个网络节点的逻辑连接来在联网环境中进行操作。
输入设备850可以是一个或多个输入设备,例如鼠标、键盘、追踪球等。输出设备860可以是一个或多个输出设备,例如显示器、扬声器、打印机等。电子设备800还可以根据需要通过通信单元840与一个或多个外部设备(未示出)进行通信,外部设备诸如存储设备、显示设备等,与一个或多个使得用户与电子设备800交互的设备进行通信,或者与使得电子设备800与一个或多个其他电子设备通信的任何设备(例如,网卡、调制解调器等)进行通信。这样的通信可以经由输入/输出(I/O)接口(未示出)来执行。
根据本公开的示例性实现方式,提供了一种计算机可读存储介质,其上存储有计算机可执行指令,其中计算机可执行指令被处理器执行以实现上文描述的方法。根据本公开的示例性实现方式,还提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括计算机可执行指令,而计算机可执行指令被处理器执行以实现上文描述的方法。
这里参照根据本公开实现的方法、装置、设备和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各个实现方式。
Claims (18)
1.一种数据处理方法,包括:
在可信执行环境中,初始化第一程序和与所述第一程序不同的第二程序;
分别为所述第一程序和所述第二程序分配第一内存空间和第二内存空间;
其中,所述第一内存空间对所述第一程序可见并且对所述第二程序不可见,并且所述第二内存空间对所述第二程序可见并且对所述第一程序不可见;
其中,所述第一内存空间为线性内存地址空间,并且包括至少包括第一内存页;并且
其中,所述第二内存空间为线性内存地址空间,并且包括至少包括第二内存页,所述第二内存页与所述第一内存页不同;
将所述第一内存空间的所述第一内存页映射至所述可信执行环境的虚拟地址空间中的第一虚拟内存页;以及
将所述第二内存空间的第二内存页映射至所述虚拟地址空间中的所述第一虚拟内存页。
2. 根据权利要求1所述的方法,还包括:
响应于检测到由所述第一程序发起的数据的访问请求,确定所述数据所对应的内存地址是否在所述第一内存空间内;以及
根据确定所述内存地址不在所述第一内存空间内,将所述内存地址映射至所述虚拟地址空间的异常虚拟内存页。
3.根据权利要求1所述的方法,还包括:
为所述第一程序生成第一映射表,所述第一映射表包括至少一个页表条目,每个页表条目与所述第一内存空间中的一个相应的内存页相对应并且指示以下至少一项:
所述相应的内存页是否已经被映射至所述虚拟地址空间中的一虚拟内存页,或
与所述相应的内存页相对应的虚拟内存页的在所述虚拟地址空间中的虚拟地址信息。
4.根据权利要求3所述的方法,其中为所述第一程序生成所述第一映射表包括:
响应于检测到所述第一程序被初始化,为所述第一程序生成所述第一映射表,所述第一映射表具有预设数目的页表条目;
并且所述方法还包括:
响应于检测到针对所述第一程序的增加内存指令,在所述第一映射表中修改至少一个页表条目以指示所述第一内存空间中的至少一个新分配的内存页与所述虚拟地址空间中的至少一个虚拟内存页的映射关系。
5.根据权利要求3所述的方法,其中所述第一映射表包括与所述第一内存页相对应的第一页表条目,所述第一页表条目包括以下至少一项:
第一信息,所述第一信息指示所述第一内存页已经被映射至第一虚拟内存页,
第二信息,所述第二信息指示标识所述第一虚拟内存页的第一虚拟地址,以及
第三信息,所述第三信息指示所述第一程序针对所述第一内存页的读写权限信息。
6. 根据权利要求3所述的方法,其中所述第一映射表包括以下至少一项:
第一子映射表,所述第一子映射表包括至少一个第一页表条目,所述至少一个第一页表条目与所述第一程序具有只读权限的至少一个内存页相对应;以及
第二子映射表,所述第二子映射表包括至少一个第二页表条目,所述至少一个第二页表条目与所述第一程序具有写权限的至少一个内存页相对应。
7. 根据权利要求1所述的方法,其中所述第一内存空间还包括第三内存页和第四内存页,所述第三内存页和所述第四内存页为所述第一内存空间中的两个连续内存页,所述方法还包括:
将所述第一内存空间的所述第三内存页映射至所述虚拟地址空间中的第二虚拟内存页;以及
将所述第四内存页映射至所述虚拟地址空间中的第三虚拟内存页,所述第二虚拟内存页和所述第三虚拟内存页在所述虚拟地址空间中不连续。
8.根据权利要求1所述的方法,还包括:
在所述第一程序运行期间,检测由所述第一程序发起的创建共享内存的请求,所述创建共享内存的请求指示如下信息:所述第一内存页的第一内存地址信息、所述第一程序针对所述第一内存页所设置的读写权限信息以及所述第一内存页的第一标识信息;
响应于检测到由所述第二程序发起的查询共享内存的请求,向所述第二程序返回在所述可信执行环境中的共享内存的标识信息列表,所述标识信息列表包括所述第一内存页的所述第一标识信息;
检测由所述第二程序发起的共享内存映射请求,所述共享内存映射请求指示所述第二内存页的第二内存地址信息以及所述第一内存页的所述第一标识信息;以及
响应于检测到所述共享内存映射请求,将所述第二内存页映射至所述第一虚拟内存页。
9.一种数据处理装置,包括:
程序初始化模块,被配置为:在可信执行环境中,初始化第一程序和与所述第一程序不同的第二程序;
内存分配模块,被配置为分别为所述第一程序和所述第二程序分配第一内存空间和第二内存空间;其中,所述第一内存空间对所述第一程序可见并且对所述第二程序不可见,并且所述第二内存空间对所述第二程序可见并且对所述第一程序不可见;其中,所述第一内存空间为线性内存地址空间,并且包括至少包括第一内存页;并且其中,所述第二内存空间为线性内存地址空间,并且包括至少包括第二内存页,所述第二内存页与所述第一内存页不同;
第一映射模块,被配置为将所述第一内存空间的所述第一内存页映射至所述可信执行环境的虚拟地址空间中的第一虚拟内存页;以及
第二映射模块,被配置为将所述第二内存空间的第二内存页映射至所述虚拟地址空间中的所述第一虚拟内存页。
10. 根据权利要求9所述的装置,还包括越界检查模块,被配置为:
响应于检测到由所述第一程序发起的数据的访问请求,确定所述数据所对应的内存地址是否在所述第一内存空间内;以及
根据确定所述内存地址不在所述第一内存空间内,将所述内存地址映射至所述虚拟地址空间的异常虚拟内存页。
11.根据权利要求9所述的装置,还包括页表生成模块,被配置为:
为所述第一程序生成第一映射表,所述第一映射表包括至少一个页表条目,每个页表条目与所述第一内存空间中的一个相应的内存页相对应并且指示以下至少一项:
所述相应的内存页是否已经被映射至所述虚拟地址空间中的一虚拟内存页,或
与所述相应的内存页相对应的虚拟内存页的在所述虚拟地址空间中的虚拟地址信息。
12.根据权利要求11所述的装置,其中所述页表生成模块还被配置为:
响应于检测到所述第一程序被初始化,为所述第一程序生成所述第一映射表,所述第一映射表具有预设数目的页表条目;
并且所述装置还包括:
内存修改模块,被配置为响应于检测到针对所述第一程序的增加内存指令,在所述第一映射表中修改至少一个页表条目以指示所述第一内存空间中的至少一个新分配的内存页与所述虚拟地址空间中的至少一个虚拟内存页的映射关系。
13.根据权利要求11所述的装置,其中所述第一映射表包括与所述第一内存页相对应的第一页表条目,所述第一页表条目包括以下至少一项:
第一信息,所述第一信息指示所述第一内存页已经被映射至第一虚拟内存页,
第二信息,所述第二信息指示标识所述第一虚拟内存页的第一虚拟地址,以及
第三信息,所述第三信息指示所述第一程序针对所述第一内存页的读写权限信息。
14. 根据权利要求11所述的装置,其中所述第一映射表包括以下至少一项:
第一子映射表,所述第一子映射表包括至少一个第一页表条目,所述至少一个第一页表条目与所述第一程序具有只读权限的至少一个内存页相对应;以及
第二子映射表,所述第二子映射表包括至少一个第二页表条目,所述至少一个第二页表条目与所述第一程序具有写权限的至少一个内存页相对应。
15. 根据权利要求9所述的装置,其中所述第一内存空间还包括第三内存页和第四内存页,所述第三内存页和所述第四内存页为所述第一内存空间中的两个连续内存页,所述装置还包括:
第二映射模块,被配置为将所述第三内存页映射至所述虚拟地址空间中的第二虚拟内存页;以及
第三映射模块,被配置为将所述第四内存页映射至所述虚拟地址空间中的第三虚拟内存页,所述第二虚拟内存页和所述第三虚拟内存页在所述虚拟地址空间中不连续。
16.根据权利要求9所述的装置,还包括:
共享请求检测模块,被配置为:在所述第一程序运行期间,检测由所述第一程序发起的创建共享内存的请求,所述创建共享内存的请求指示如下信息:所述第一内存页的第一内存地址信息、所述第一程序针对所述第一内存页所设置的读写权限信息以及所述第一内存页的第一标识信息;
共享内存查询请求处理模块,被配置为:响应于检测到由所述第二程序发起的查询共享内存的请求,向所述第二程序返回在所述可信执行环境中的共享内存的标识信息列表,所述标识信息列表包括所述第一内存页的所述第一标识信息;
共享内存映射请求处理模块,被配置为:检测由所述第二程序发起的共享内存映射请求,所述共享内存映射请求指示所述第二内存页的第二内存地址信息以及所述第一内存页的所述第一标识信息;以及
共享内存映射模块,被配置为:响应于检测到所述共享内存映射请求,将所述第二内存页映射至所述第一虚拟内存页。
17.一种电子设备,包括:
至少一个处理单元;以及
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令在由所述至少一个处理单元执行时使所述电子设备执行根据权利要求1至8中任一项所述的方法。
18.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据权利要求1至8中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310967247.XA CN116933271B (zh) | 2023-08-02 | 2023-08-02 | 数据处理方法、装置、设备和存储介质 |
PCT/CN2024/108590 WO2025026327A1 (zh) | 2023-08-02 | 2024-07-30 | 数据处理方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310967247.XA CN116933271B (zh) | 2023-08-02 | 2023-08-02 | 数据处理方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116933271A true CN116933271A (zh) | 2023-10-24 |
CN116933271B CN116933271B (zh) | 2024-12-13 |
Family
ID=88387734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310967247.XA Active CN116933271B (zh) | 2023-08-02 | 2023-08-02 | 数据处理方法、装置、设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116933271B (zh) |
WO (1) | WO2025026327A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2025026327A1 (zh) * | 2023-08-02 | 2025-02-06 | 北京火山引擎科技有限公司 | 数据处理方法、装置、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110119302A (zh) * | 2019-04-23 | 2019-08-13 | 上海隔镜信息科技有限公司 | 虚拟机监视器以及虚拟可信执行环境构建方法 |
US20200285594A1 (en) * | 2019-03-08 | 2020-09-10 | International Business Machines Corporation | Sharing secure memory across multiple security domains |
CN115098279A (zh) * | 2022-06-28 | 2022-09-23 | 蚂蚁区块链科技(上海)有限公司 | 内存地址的共享访问方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107038128B (zh) * | 2016-02-03 | 2020-07-28 | 华为技术有限公司 | 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置 |
CN109460373B (zh) * | 2017-09-06 | 2022-08-26 | 阿里巴巴集团控股有限公司 | 一种数据共享方法、终端设备和存储介质 |
CN116108454B (zh) * | 2023-04-06 | 2023-06-30 | 支付宝(杭州)信息技术有限公司 | 内存页面管理方法及装置 |
CN116933271B (zh) * | 2023-08-02 | 2024-12-13 | 北京火山引擎科技有限公司 | 数据处理方法、装置、设备和存储介质 |
-
2023
- 2023-08-02 CN CN202310967247.XA patent/CN116933271B/zh active Active
-
2024
- 2024-07-30 WO PCT/CN2024/108590 patent/WO2025026327A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200285594A1 (en) * | 2019-03-08 | 2020-09-10 | International Business Machines Corporation | Sharing secure memory across multiple security domains |
CN110119302A (zh) * | 2019-04-23 | 2019-08-13 | 上海隔镜信息科技有限公司 | 虚拟机监视器以及虚拟可信执行环境构建方法 |
CN115098279A (zh) * | 2022-06-28 | 2022-09-23 | 蚂蚁区块链科技(上海)有限公司 | 内存地址的共享访问方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2025026327A1 (zh) * | 2023-08-02 | 2025-02-06 | 北京火山引擎科技有限公司 | 数据处理方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2025026327A1 (zh) | 2025-02-06 |
CN116933271B (zh) | 2024-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10564997B2 (en) | Computing system for securely executing a secure application in a rich execution environment | |
JP4237190B2 (ja) | 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム | |
US7490191B2 (en) | Sharing information between guests in a virtual machine environment | |
US9355262B2 (en) | Modifying memory permissions in a secure processing environment | |
US8661181B2 (en) | Memory protection unit in a virtual processing environment | |
CN109359487B (zh) | 一种基于硬件隔离的可扩展安全影子存储及标签管理方法 | |
US20140108701A1 (en) | Memory protection unit in a virtual processing environment | |
CN109002706A (zh) | 一种基于用户级页表的进程内数据隔离保护方法和系统 | |
US10664304B2 (en) | Application memory protection using an extended page table switching virtual machine function | |
US10140148B1 (en) | Copy based IOMMU emulation for out-of-process emulated devices | |
US8458434B2 (en) | Unified virtual contiguous memory manager | |
WO2025026327A1 (zh) | 数据处理方法、装置、设备和存储介质 | |
WO2022100693A1 (zh) | 一种地址转换关系的配置方法及计算机系统 | |
CN104298519B (zh) | 用于配置操作系统的装置及其方法 | |
US20060143411A1 (en) | Techniques to manage partition physical memory | |
US20200201691A1 (en) | Enhanced message control banks | |
CN118395421A (zh) | 一种基于多内核页表模板的内核数据隔离方法及系统 | |
US20210334220A1 (en) | Memory access control | |
EP4254203A1 (en) | Device memory protection for supporting trust domains | |
US12019733B2 (en) | Compartment isolation for load store forwarding | |
KR20250020452A (ko) | 가상 머신 리소스의 소프트웨어 격리 | |
US20190102321A1 (en) | Techniques to provide access protection to shared virtual memory | |
CN112631720B (zh) | 内存控制方法、介质及设备 | |
US20220222340A1 (en) | Security and support for trust domain operation | |
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 |