CN116755845A - 数据处理方法和装置 - Google Patents
数据处理方法和装置 Download PDFInfo
- Publication number
- CN116755845A CN116755845A CN202311064524.2A CN202311064524A CN116755845A CN 116755845 A CN116755845 A CN 116755845A CN 202311064524 A CN202311064524 A CN 202311064524A CN 116755845 A CN116755845 A CN 116755845A
- Authority
- CN
- China
- Prior art keywords
- access control
- control attribute
- storage space
- access
- application instance
- 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
- 238000003672 processing method Methods 0.000 title abstract description 10
- 238000000034 method Methods 0.000 claims abstract description 41
- 230000004044 response Effects 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 110
- 230000015654 memory Effects 0.000 claims description 89
- 230000002085 persistent effect Effects 0.000 claims description 9
- 238000007726 management method Methods 0.000 claims description 8
- 238000013500 data storage Methods 0.000 claims description 7
- 230000008676 import Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 229910052799 carbon Inorganic materials 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- JEIPFZHSYJVQDO-UHFFFAOYSA-N iron(III) oxide Inorganic materials O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请一个或多个实施例提供一种数据处理方法和装置,该方法包括:基于WebAssembly应用模块创建第一应用实例,为第一应用实例中的数据分配第一安全存储空间中的第一存储子空间,并为第一存储子空间设置第一访问控制属性;在虚拟机中执行第一应用实例,为第一应用实例中的变量分配第一安全存储空间中的第二存储子空间,并为第二存储子空间设置第一访问控制属性,以及将虚拟机对应的访问控制属性更新为第一访问控制属性;在虚拟机中响应于针对第二安全存储空间的访问操作,确定第一访问控制属性与第二安全存储空间的第二访问控制属性是否相关联,如果第一访问控制属性与第二访问控制属性相关联,执行访问操作。
Description
技术领域
本申请一个或多个实施例涉及计算机技术领域,尤其涉及一种数据处理方法和装置。
背景技术
WebAssembly是一种新的编码格式,其类似于一种低级的汇编语言,但是可以提供新的性能特性和效果。WebAssembly设计的目的是为高级语言(例如:C、C++、Rust等)提供一个高效的编译目标。
模块是WebAssembly程序编译、传输和加载的单位。基于高级语言编写的程序(例如:应用程序、程序库、系统函数等)的程序代码,可以被编译成WebAssembly程序模块。WebAssembly程序模块实际上是一种以WebAssembly二进制文件的形式呈现的字节码,可以被加载到WebAssembly虚拟机中,由WebAssembly虚拟机解释成机器码并执行。WebAssembly二进制文件通常以.wasm作为文件后缀。
资源受限设备通常是指电量供应有限、计算能力有限以及存储容量有限的电子设备,包括智能卡、安全元件(Secure Element,SE)、物联网设备等。也即,资源受限设备的非易失性存储器(Non-Volatile Memory,NVM)资源有限,一般大小为几十kB至几百kB,最大为几MB;资源受限设备的随机存取存储器(Random Access Memory,RAM)资源也有限,一般为几kB至几十kB。
由于资源受限设备的NVM资源和RAM资源有限,通常不能将标准的WebAssembly技术直接应用于资源受限设备,而是需要进行相应的优化。
发明内容
本申请一个或多个实施例提供技术方案如下:
本申请提供一种数据处理方法,所述方法包括:
基于WebAssembly应用模块创建第一应用实例,为所述第一应用实例中的数据分配第一安全存储空间中的第一存储子空间,并为所述第一存储子空间设置第一访问控制属性;
在WebAssembly虚拟机中执行所述第一应用实例,为所述第一应用实例中的变量分配所述第一安全存储空间中的第二存储子空间,并为所述第二存储子空间设置所述第一访问控制属性,以及将所述WebAssembly虚拟机对应的访问控制属性更新为所述第一访问控制属性;
在所述WebAssembly虚拟机中响应于针对第二安全存储空间的访问操作,确定所述第一访问控制属性与所述第二安全存储空间的第二访问控制属性是否相关联,如果所述第一访问控制属性与所述第二访问控制属性相关联,执行所述访问操作。
本申请还提供一种数据处理装置,所述装置包括:
第一分配单元,用于基于WebAssembly应用模块创建第一应用实例,为所述第一应用实例中的数据分配第一安全存储空间中的第一存储子空间,并为所述第一存储子空间设置第一访问控制属性;
第二分配单元,用于在WebAssembly虚拟机中执行所述第一应用实例,为所述第一应用实例中的变量分配所述第一安全存储空间中的第二存储子空间,并为所述第二存储子空间设置所述第一访问控制属性,以及将所述WebAssembly虚拟机对应的访问控制属性更新为所述第一访问控制属性;
访问单元,用于在所述WebAssembly虚拟机中响应于针对第二安全存储空间的访问操作,确定所述第一访问控制属性与所述第二安全存储空间的第二访问控制属性是否相关联,如果所述第一访问控制属性与所述第二访问控制属性相关联,执行所述访问操作。
本申请还提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如上述任一项所述方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一项所述方法的步骤。
在上述技术方案中,针对基于WebAssembly应用模块创建的应用实例,可以为该应用实例中的数据和变量分配安全存储空间,并为该应用实例的安全存储空间设置访问控制属性;在WebAssembly虚拟机中执行该应用实例时,可以将该WebAssembly虚拟机对应的访问控制属性更新为该应用实例的安全存储空间的访问控制属性。在这种情况下,可以在该WebAssembly虚拟机中响应于针对待访问的安全存储空间的访问操作,确定该应用实例的安全存储空间的访问控制属性,与待访问的安全存储空间的访问控制属性是否相关联,如果两个访问控制属性相关联,则可以执行该访问操作。
采用上述方式,对于一个应用实例而言,在这个应用实例运行时,仅能访问其访问控制属性与这个应用实例的安全存储空间的访问控制属性相关联的部分安全存储空间,而无法访问其访问控制属性与这个应用实例的安全存储空间的访问控制属性不相关联的其他安全存储空间,由此可以实现应用实例的独立性,从而可以保证应用实例的安全性。
附图说明
下面将对示例性实施例的描述中所需要使用的附图进行说明,其中:
图1是本申请一示例性实施例示出的一种数据处理方法的流程图;
图2是本申请一示例性实施例示出的一种设备的结构示意图;
图3是本申请一示例性实施例示出的一种数据处理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或者相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请一个或多个实施例相一致的所有实施方式。相反,它们仅是与本申请一个或多个实施例的一些方面相一致的例子。
需要说明的是,在其他实施例中并不一定按照本申请示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本申请所描述的更多或者更少。此外,本申请中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本申请中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
为了便于理解,下面先对标准的WebAssembly二进制文件的数据格式进行简要说明。
WebAssembly程序模块包含其程序代码中的函数、表、内存、全局变量、导入信息、导出信息等;另外,还包含内存和表的初始化数据以及模块的入口函数。
作为WebAssembly程序模块的呈现形式的WebAssembly二进制文件一共有11种数据段,分别为类型段、导入段、函数段、表段、内存段、全局段、导出段、起始段、元素段、代码段、数据段和自定义段。其中:
(1)类型段
类型段存储模块使用到的所有函数类型。
(2)导入段和导出段
导入段存储模块所有的导入项目(例如:导入函数的函数名称、与导入函数对应的模块名称),导出段存储模块所有的导出项目(例如:导出函数的函数名称和函数索引)。多个模块可以通过导入项目和导出项目链接在一起。一个模块可以根据该模块包含的导入段中与导入函数对应的模块名称以及导入函数的函数名称,确定该模块需要调用的其他模块以及其他模块中的函数;相应地,一个模块可以对外提供该模块包含的导出段中的导出函数的函数名称,从而使其他模块可以通过将导出函数的函数名称以及该模块的模块名称(通常存储在自定义段中)添加到其他模块包含的导入段中,调用该模块中的导出函数。
(3)函数段和代码段
模块内的函数信息分开存储在函数段和代码段中。函数段存储模块内所有函数对应类型索引,代码段存储模块内所有函数的局部变量信息和字节码。函数段和代码段存储的项目数量一致,且一一对应。
(4)表段和元素段
表段存储模块内定义的所有表,元素段存储表初始化数据。
(5)内存段和数据段
内存段存储模块内定义的所有内存,数据段存储常量和内存初始化数据。
(6)全局段
全局段存储模块内定义的所有全局变量信息。
(7)起始段
起始段存储模块的入口函数索引。
(8)自定义段
自定义段存储自定义信息,包括模块名称、数据段属性等。自定义段还包含namesection字段,该字段中存储函数名、局部变量名等调试信息和第三方扩展信息。
在标准的WebAssembly技术中,通常会在资源受限设备上部署WebAssembly虚拟机,使得资源受限设备可以通过WebAssembly虚拟机执行WebAssembly程序模块。在加载并执行一个WebAssembly程序模块过程中,需要为这个WebAssembly程序模块分配线性内存,来存储这个WebAssembly程序模块中的内存数据(例如:全局变量、局部结构类型变量等)。线性内存是资源受限设备的内存(即RAM资源)中的一个内存块,其实际的物理地址对WebAssembly程序模块不可见。此外,还需要从资源受限设备的NVM资源中为这个WebAssembly程序模块分配一部分NVM资源,来存储这个WebAssembly程序模块中的数据(不属于内存数据的其他数据)和文件(被组织成文件的数据)。
然而,标准的WebAssembly技术中WebAssembly程序模块的独立性较差,即不同的WebAssembly程序模块之间并未进行有效的隔离。在这种情况下,针对一个WebAssembly程序模块中的变量、数据、文件的访问,很容易被转化为针对另一个WebAssembly程序模块中的变量、数据、文件的攻击,从而威胁到另一个WebAssembly程序模块的安全。
本申请提供一种针对标准的WebAssembly技术进行优化的技术方案,以保证WebAssembly程序模块的独立性和安全性。
请参考图1,图1是本申请一示例性实施例示出的一种数据处理方法。
在本实施例中,上述数据处理方法可以应用于任意一个电子设备上搭载的WebAssembly虚拟机。其中,该电子设备可以是智能卡、安全元件(Secure Element,SE)、物联网设备等资源受限设备;或者,该电子设备可以是其他具有NVM资源且具有一定的计算能力的设备,例如:包含一台独立的物理主机的服务器、由多台互相独立的物理主机构成的服务器集群、台式计算机、笔记本电脑、掌上电脑(PDAs,Personal Digital Assistants)等。
需要说明的是,上述电子设备上还可以搭载非易失性存储器(NVM)和易失性存储器(例如:RAM)。作为WebAssembly程序模块的呈现形式的WebAssembly二进制文件可以被存储在该非易失性存储器中。在由该电子设备上搭载的WebAssembly虚拟机加载WebAssembly程序模块时,具体可以由该WebAssembly虚拟机从该非易失性存储器中读取WebAssembly二进制文件,并将WebAssembly二进制文件解释成机器码;而在由该WebAssembly虚拟机执行WebAssembly的程序模块时,具体可以由该WebAssembly虚拟机执行对WebAssembly二进制文件进行解释得到的机器码。在标准的WebAssembly技术中,需要为WebAssembly程序模块分配一个易失性存储空间,用于存储WebAssembly程序模块中的内存数据,并为WebAssembly程序模块分配一个非易失性存储空间,用于存储WebAssembly程序模块中的数据和文件。
在实际应用中,WebAssembly虚拟机可以基于软件方式来实现,非易失性存储器和易失性存储器则可以是作为电子设备的组成部分的硬件。
上述数据处理方法可以包括以下步骤:
步骤101:基于WebAssembly应用模块创建第一应用实例,为所述第一应用实例中的数据分配第一安全存储空间中的第一存储子空间,并为所述第一存储子空间设置第一访问控制属性。
需要说明的是,WebAssembly程序模块可以包括WebAssembly应用模块、WebAssembly库模块。其中,WebAssembly应用模块可以是通过对基于高级语言编写的应用程序进行编译得到的WebAssembly程序模块;WebAssembly库模块可以是通过对基于高级语言编写的程序库进行编译得到的WebAssembly程序模块。该程序库中的程序可以作为系统程序,此时WebAssembly库模块可以被称为WebAssembly系统库模块,系统库模块的代码与虚拟机解释器代码(或者操作系统代码)一起编译。
基于一个WebAssembly应用模块可以创建多个应用实例,通过分别运行这多个应用实例可以实现相同的功能,但通常分别为这多个应用实例分配的易失性存储空间和非易失性存储空间不同。因此,虽然这多个应用实例是基于同一个WebAssembly应用模块创建的,但实际上是不同的应用实例。
在本实施例中,上述电子设备首先可以获取到任意一个待运行的WebAssembly应用模块。
在实际应用中,在一个例子中,上述电子设备必须将编译功能分离,由设备外的其他设备完成编译。外部设备对基于高级语言编写的程序(例如:应用程序、程序库等)的程序代码进行编译,得到WebAssembly程序模块。
在另一个例子中,上述电子设备可以接收由其他设备发送的WebAssembly程序模块,并对该程序模块进行存储。
在获取到上述WebAssembly应用模块的情况下,可以基于该WebAssembly应用模块创建应用实例(可称为第一应用实例)。在创建该第一应用实例时,可以将该第一应用实例的应用实例标识(AID)、权限、所关联的WebAssembly应用模块的应用模块标识、应用实例所有者等信息记录到注册表中,使得后续可以利用注册表中记录的相关信息运行该第一应用实例。其中,一个应用实例的相关信息形成注册表中的一个注册表条目;注册表中不同的注册表条目可以记录不同的应用实例的相关信息。
在实际应用中,应用实例标识可以是顺序编码,例如:每个应用实例可以根据用于记录自己的相关信息的注册表条目在注册表中的顺序,获得自己的编码。或者,应用实例标识也可以是注册表条目的引用信息,例如:每个应用实例可以将用于记录自己的相关信息的注册表条目的引用信息,作为自己的应用实例标识。
此外,在创建上述第一应用实例时,可以为该第一应用实例中的数据分配存储子空间(可称为第一存储子空间),并为该第一存储子空间设置访问控制属性(可称为第一访问控制属性)。需要说明的是,该第一存储子空间与下述第二存储子空间共同作为该第一应用实例的安全存储空间(可称为第一安全存储空间)。
在一些实施例中,一个应用实例中的数据可以包括用于创建这个应用实例的WebAssembly应用模块中的临时数据、持久性数据、文件形式的数据(即被组织成文件的数据);为这个应用实例中的数据分配的安全存储空间中的存储子空间可以包括:用于存储所述临时数据的易失性临时数据存储空间、用于存储所述持久性数据的非易失性存储空间(堆)、用于存储所述文件形式的数据的非易失性存储空间(堆)。
相应地,在一些实施例中,在为上述第一应用实例中的数据分配上述第一安全存储空间中的上述第一存储子空间时,具体可以调用WebAssembly系统库模块中的API(Application Programming Interface,应用程序编程接口)函数(可称为第一API函数),通过执行该第一API函数,从作为内存的易失性存储空间中为上述临时数据分配用于存储所述临时数据的易失性临时数据存储空间,并从非易失性存储空间中为上述持久性数据分配用于存储所述持久性数据的非易失性存储空间(堆),以及从非易失性存储空间中为上述文件形式的数据分配用于存储所述文件形式的数据的非易失性存储空间(堆)。
在实际应用中,上述WebAssembly系统库模块中的API函数可以属于该WebAssembly系统库模块中的导出函数。
需要说明的是,上述WebAssembly系统库模块中的上述第一API函数还可以返回所分配的存储空间的引用信息。其中,一个存储空间的引用信息可以是这个存储空间的起始地址的相关信息;例如,一个存储空间的引用信息可以是一个大小为4字节或2字节的数值,这个数值=这个存储空间的起始地址-堆起始地址。
在实际应用中,可以将标准的WebAssembly技术中的数据分成变量和非变量,数据中的变量保持存储在线性内存和辅助栈中,而数据中的非变量则作为临时数据存储在易失性临时数据存储空间和非易失性存储空间(堆)中。
在一些实施例中,为一个应用实例的安全存储空间设置的访问控制属性可以包括这个应用实例的应用实例标识,和/或用于创建这个应用实例的WebAssembly应用模块的应用模块标识。以上述第一应用实例为例,上述第一访问控制属性可以包括该第一应用实例的应用实例标识,和/或上述WebAssembly应用模块的应用模块标识。
在实际应用中,对于一个应用实例而言,可以将这个应用实例的安全存储空间的访问控制属性,与用于记录这个应用实例的相关信息的注册表条目建立关联。相应地,这个应用实例中的每个新创建的数据/文件,都可以被设置与用于记录这个应用实例的相关信息的注册表条目关联的访问控制属性,由此保证为这个应用实例中的数据/文件设置了相同的访问控制属性。其中,应用实例中的数据/文件可以与为其设置的访问控制属性一起存放,也可以将应用实例中的数据/文件的访问控制属性存放在单独的存储空间中;如果访问控制属性被存放在单独的存储空间中,则需要将应用实例中的数据/文件与为其设置的访问控制属性建立关联,例如:可以将用于存储应用实例中的数据/文件的存储空间的起始地址存放在用于存储为其设置的访问控制属性的存储空间中。
步骤102:在WebAssembly虚拟机中执行所述第一应用实例,为所述第一应用实例中的变量分配所述第一安全存储空间中的第二存储子空间,并为所述第二存储子空间设置所述第一访问控制属性,以及将所述WebAssembly虚拟机对应的访问控制属性更新为所述第一访问控制属性。
在本实施例中,在创建了上述第一应用实例的情况下,可以在上述WebAssembly虚拟机中执行该第一应用实例。在该WebAssembly虚拟机中开始执行该第一应用实例时,可以为该第一应用实例中的变量分配存储子空间(可称为第二存储子空间),并为该第二存储子空间设置上述第一访问控制属性,例如:可以确定与用于记录该第一应用实例的相关信息的注册表条目关联的访问控制属性为第一访问控制属性,从而可以为该第二存储子空间设置该第一访问控制属性。需要说明的是,该第二存储子空间与上述第一存储子空间共同作为上述第一安全存储空间。
在一些实施例中,一个应用实例中的变量可以包括用于创建这个应用实例的WebAssembly应用模块中的全局变量、局部结构类型变量;为这个应用实例中的变量分配的安全存储空间中的存储子空间可以包括:用于存储所述全局变量的线性内存;用于存储所述局部结构类型变量的辅助栈。其中,线性内存和辅助栈均为内存的易失性存储空间。
相应地,在一些实施例中,在为上述第一应用实例中的变量分配上述第一安全存储空间中的上述第二存储子空间时,具体可以从作为内存的易失性存储空间中为上述全局变量分配上述线性内存,并从作为内存的易失性存储空间中为上述局部结构类型变量分配上述辅助栈。
此外,在上述WebAssembly虚拟机中准备开始执行上述第一应用实例时,可以注册表中记录的该第一应用实例的相关信息,将该WebAssembly虚拟机对应的访问控制属性更新为该第一应用实例的安全存储空间的上述第一访问控制属性。
在一些实施例中,上述WebAssembly虚拟机可以包含用于并行运行应用实例的若干逻辑通道。通常,一个逻辑通道用于运行一个应用实例;在一个逻辑通道中准备开始执行一个应用实例时,可以将这个逻辑对应的访问控制属性更新为这个应用实例的安全存储空间的访问控制属性。也即,该WebAssembly虚拟机对应的访问控制属性,实际上是该WebAssembly虚拟机包含的若干逻辑通道分别对应的访问控制属性。在这种情况下,在将该WebAssembly虚拟机对应的访问控制属性更新为所述上述第一访问控制属性时,具体可以将用于运行上述第一应用实例的逻辑通道对应的访问控制属性更新为该第一访问控制属性。
步骤103:在所述WebAssembly虚拟机中响应于针对第二安全存储空间的访问操作,确定所述第一访问控制属性与所述第二安全存储空间的第二访问控制属性是否相关联,如果所述第一访问控制属性与所述第二访问控制属性相关联,执行所述访问操作。
需要说明的是,在上述第一应用实例运行时,与该WebAssembly虚拟机(或者该WebAssembly虚拟机包含的用于运行该第一应用实例的逻辑通道)对应的访问控制属性保持为上述第一访问控制属性。
在本实施例中,可以在上述WebAssembly虚拟机中响应于针对任意一个安全存储空间(可称为第二安全存储空间)的访问操作,确定与该WebAssembly虚拟机(或者该WebAssembly虚拟机包含的用于运行该第一应用实例的逻辑通道)对应的上述第一访问控制属性与为该第二安全存储空间设置的访问控制属性(可称为第二访问控制属性)是否相关联。如果该第一访问控制属性与该第二访问控制属性相关联,则可以执行该访问操作,来访问该第二安全存储空间,具体可以访问该第二安全存储空间中存储的变量、数据/文件等。
实际上,在一个应用实例运行时,可能需要访问这个应用实例的安全存储空间,也可能需要访问其他应用实例的安全存储空间。下面以上述第一应用实例为例,分别对这两种可能进行描述。
(1)在上述第一应用实例运行时,访问该第一应用实例的上述第一安全存储空间。
在一些实施例中,在确定上述第一访问控制属性与上述第二安全存储空间的上述第二访问控制属性是否相关联时,具体可以确定该第一访问控制属性与该第二访问控制属性是否匹配;此时,如果该第一访问控制属性与该第二访问控制属性匹配(例如:该第一访问控制属性的数值与该第二访问控制属性的数值相等),则可以认为该第二安全存储空间实际上是上述第一应用实例的上述第一安全存储空间,因此可以执行针对该第一安全存储空间(即该第二安全存储空间)的访问操作,来访问该第一安全存储空间。
需要说明的是,由于用于运行上述第一应用实例的逻辑通道对应的访问控制属性为上述第一访问控制属性,而用于运行其他应用实例的逻辑通道对应的访问控制属性则不为该第一访问控制属性,在这种可能下,就只有在用于运行该第一应用实例的逻辑通道中可以执行针对该第一应用实例的上述第一安全存储空间的访问操作,来访问该第一安全存储空间。
也即,一个应用实例通常只能访问自己的安全存储空间,而无法随意地访问其他应用实例的安全存储空间,由此实现了应用实例的独立性,从而保证了应用实例的安全性。
在实际应用中,可以通过执行load/store字节码,访问上述第一应用实例的上述第一安全存储空间中的上述第二存储子空间。而在访问上述第一应用实例的上述第一安全存储空间中的上述第一存储子空间时,则具体可以调用上述WebAssembly系统库模块中相应的API函数,通过执行该API函数,访问该第一存储子空间。
在一些实施例中,在确定上述第一访问控制属性与上述第二访问控制属性匹配的情况下,在执行针对上述第二安全存储空间的访问操作之前,可以先进一步确定该访问操作包含的访问地址是否超出该第二安全存储空间的边界,如果该访问地址未超出该第二安全存储空间的边界,则可以执行该访问操作。
进一步地,在一些实施例中,在确定上述访问操作包含的访问地址是否超出上述第二安全存储空间的边界时,由于该访问操作包含的访问地址具体可以是针对用于存储上述全局变量的上述线性内存的地址偏移,就可以基于针对该线性内存的地址偏移确定针对该线性内存的访问地址,并确定该访问地址是否超出该线性内存的边界。
并且,在一些实施例中,在确定上述访问操作包含的访问地址是否超出上述第二安全存储空间的边界时,由于该访问操作包含的访问地址具体可以是存储空间的引用信息,一个存储空间的引用信息可以是这个存储空间的地址的相关信息,可以基于该存储空间的引用信息,确定该访问操作对应的存储空间的起始地址,从而可以基于该起始地址,以及该访问操作还包含的地址偏移和数据长度,确定针对该访问操作对应的该存储空间的访问地址的范围,并确定该访问地址的范围是否超出该存储空间的边界。
(2)在上述第一应用实例运行时,访问其他应用实例的上述第二安全存储空间。
需要说明的是,一个应用实例通常需要通过调用其他应用实例(以应用实例X表示)中的函数,由应用实例X中的函数来访问应用实例X的安全存储空间。也即,一个应用实例通过这类函数,向其他应用实例提供安全存储空间的共享服务,此时这类函数可以被称为共享服务函数。
在实际应用中,一个应用实例中的函数实际上是用于创建这个应用实例的WebAssembly应用模块中的函数。
WebAssembly应用模块中的共享服务函数可以属于该WebAssembly应用模块中的导出函数。WebAssembly应用模块中的共享服务函数可以由该WebAssembly应用模块声明。例如,可以在该WebAssembly应用模块的导出段中添加与一个导出函数对应的声明信息,该声明信息表示这个导出函数作为一个共享服务函数。WebAssembly应用模块中未声明为共享服务函数的其他函数不提供安全存储空间的共享服务。
在一些实施例中,在确定上述第一访问控制属性与上述第二安全存储空间的上述第二访问控制属性是否相关联时,具体可以确定针对该第二安全存储空间的上述访问操作是否满足该第一访问控制属性、该第二访问控制属性、共享许可信息的关联关系;此时,如果该访问操作满足该关联关系,则可以认为与该第二安全存储空间对应的应用实例(可称为第二应用实例)许可该第一应用实例访问该第二应用实例的该第二安全存储空间,因此可以执行针对该第二安全存储空间的访问操作,来访问该第二安全存储空间。
具体地,上述第一访问控制属性、上述第二访问控制属性、上述共享许可信息的关联关系可以表示上述第二应用实例许可上述第一应用实例访问该第二应用实例的上述第二安全存储空间中存储的被设置了共享属性的数据和变量,而该第二安全存储空间中存储的未被设置共享属性的数据和变量则不允许除该第二应用实例之外的其他应用实例访问。
相应地,在一些实施例中,对于一个应用实例而言,可以调用上述WebAssembly系统库模块中的API函数(可称为第三API函数),通过执行该第三API函数,为该应用实例的安全存储空间中存储的部分数据和部分变量设置共享属性。其中,这部分数据和这部分变量可以通过应用编程指定,也可以由系统指定,本申请对此不作限制。
在一些实施例中,如果针对上述第二安全存储空间的上述访问操作满足上述第一访问控制属性、上述第二访问控制属性、上述共享许可信息的关联关系,则可以执行该访问操作,具体可以调用该第二安全存储空间对应的上述第二应用实例中的共享服务函数,由该第二应用实例中的该共享服务函数针对该第二安全存储空间中存储的被设置了共享属性的数据和变量进行访问。
在一些实施例中,如果针对上述第二安全存储空间的上述访问操作不满足上述第一访问控制属性、上述第二访问控制属性、上述共享许可信息的关联关系,则可以调用上述WebAssembly系统库模块中的API函数(可称为第二API函数),通过执行该第二API函数,先根据应用实例标识查找到与该第二安全存储空间对应的上述第二应用实例,再查找到该第二应用实例中的用于共享许可的函数(可称为共享许可函数)时,进一步调用该第二应用实例中的该共享许可函数,通过执行该共享许可函数,许可上述第一应用实例访问该第二安全存储空间中存储的被设置了共享属性的数据和变量。
需要说明的是,如果上述WebAssembly系统库模块中的上述第二API函数未查找到上述第二应用实例,或者未查找到该第二应用实例中的上述共享许可函数,则会返回共享服务被拒绝的信息。
在实际应用中,一个应用实例中的共享许可函数可以被记录到注册表中,即可以与这个应用实例的其他相关信息一起形成注册表中一个用于记录这个应用实例的相关信息的注册表条目。或者,各个应用实例中的共享许可函数可以存储在系统的共享服务管理信息中。在这种情况下,如果上述WebAssembly系统库模块中的上述第二API函数可以在注册表或系统的共享服务管理信息中查找上述第二应用实例中的上述共享许可函数。
后续,可以由上述WebAssembly系统库模块中的上述第二API函数获取上述第二应用实例中的上述共享许可函数返回的上述共享许可信息,并获取该第二API函数返回的该共享许可信息,从而可以存储上述第一访问控制属性、上述第二访问控制属性、该共享许可信息的关联关系。
在获得了上述共享许可信息后,也可以调用上述第二安全存储空间对应的上述第二应用实例中的共享服务函数,由该第二应用实例中的该共享服务函数针对该第二安全存储空间中存储的被设置了共享属性的数据和变量进行访问。共享服务函数是由第二应用实例所在的应用模块声明在“导出段”的函数;未被声明导出的函数,不可以被其他模块调用。
也即,一个应用实例可以访问被许可了的部分应用实例的安全存储空间,但无法访问未被许可的其他应用实例的安全存储空间,由此实现了应用实例的独立性,从而保证了应用实例的安全性。
如前所述,在一些实施例中,上述WebAssembly虚拟机可以包含用于并行运行应用实例的若干逻辑通道。在这种情况下,可以将用于运行上述第一应用实例的逻辑通道对应的访问控制属性更新为上述第一访问控制属性。
相应地,在一些实施例中,表示一个应用实例(以应用实例Y表示)被另一个应用实例(以应用实例X表示)许可了访问应用实例X的安全存储空间的共享许可信息,可以存储在用于运行应用实例Y的逻辑通道中。例如,在确定上述访问操作是否满足上述第一访问控制属性、上述第二安全存储空间的上述第二访问控制属性、上述共享许可信息的关联关系时,具体可以确定用于运行上述第一应用实例的逻辑通道的管理信息是否包含该第一访问控制属性、该第二访问控制属性、该共享许可信息的关联关系;此时,如果该逻辑通道的管理信息包含该关联关系,则可以执行所述访问操作;当出现逻辑通道上的应用被弃选、有其他应用被重新选择、或者设备复位的情况,该逻辑通道上的所有上述信息都被清除。
在一些实施例中,在上述第一应用实例运行时,如前所述,与上述WebAssembly虚拟机(或者上述WebAssembly虚拟机包含的用于运行该第一应用实例的逻辑通道)对应的访问控制属性保持为上述第一访问控制属性;然而,在执行上述WebAssembly系统库模块中的某些特殊API函数时,可以将与该WebAssembly虚拟机(或者该WebAssembly虚拟机包含的用于运行该第一应用实例的逻辑通道)对应的访问控制属性由该第一访问控制属性更新为系统访问控制属性。
需要说明的是,上述系统访问控制属性为最高等级的访问控制属性。也即,当与上述WebAssembly虚拟机或一个逻辑通道对应的访问控制属性为该系统访问控制属性时,可以在该WebAssembly虚拟机或该逻辑通道中访问全部易失性存储空间和全部非易失性存储空间。
相应地,在执行完上述WebAssembly系统库模块中的任意一个API函数后,可以重新将与该WebAssembly虚拟机(或者该WebAssembly虚拟机包含的用于运行该第一应用实例的逻辑通道)对应的访问控制属性由上述系统访问控制属性更新为上述第一访问控制属性。
在一些实施例中,还可以从作为内存的易失性存储空间中分配一个未被设置访问控制属性的内存块,作为全局内存。其中,全局内存可以用于存储被所有应用实例共享的全局数据等。对于该全局内存而言,由于该全局内存未被设置访问控制属性,就可以在上述WebAssembly虚拟机中响应于针对该全局内存的访问操作,直接执行所述访问操作。
在上述实施例中,针对基于WebAssembly应用模块创建的应用实例,可以为该应用实例中的数据和变量分配安全存储空间,并为该应用实例的安全存储空间设置访问控制属性;在WebAssembly虚拟机中执行该应用实例时,可以将该WebAssembly虚拟机对应的访问控制属性更新为该应用实例的安全存储空间的访问控制属性。在这种情况下,可以在该WebAssembly虚拟机中响应于针对待访问的安全存储空间的访问操作,确定该应用实例的安全存储空间的访问控制属性,与待访问的安全存储空间的访问控制属性是否相关联,如果两个访问控制属性相关联,则可以执行该访问操作。
采用上述方式,对于一个应用实例而言,在这个应用实例运行时,仅能访问其访问控制属性与这个应用实例的安全存储空间的访问控制属性相关联的部分安全存储空间,而无法访问其访问控制属性与这个应用实例的安全存储空间的访问控制属性不相关联的其他安全存储空间,由此可以实现应用实例的独立性,从而可以保证应用实例的安全性。
与前述数据处理方法的实施例相对应,本申请还提供了数据处理装置的实施例。
请参考图2,图2是本申请一示例性实施例示出的一种设备的结构示意图。在硬件层面,该设备包括处理器201、内部总线202、网络接口203、内存204以及非易失性存储器205,当然还可能包括所需要的其他硬件。本申请一个或多个实施例可以基于软件方式来实现,比如由处理器201从非易失性存储器205中读取对应的计算机程序到内存204中然后运行。当然,除了软件实现方式之外,本申请一个或多个实施例并不排除其他实现方式,比如逻辑器件或者软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑模块,也可以是硬件或者逻辑器件。
请参考图3,图3是本申请一示例性实施例示出的一种数据处理装置的框图。
上述数据处理装置可以应用于图2所示的设备,以实现本申请的技术方案。其中,该数据处理装置可以包括:
第一分配单元301,用于基于WebAssembly应用模块创建第一应用实例,为所述第一应用实例中的数据分配第一安全存储空间中的第一存储子空间,并为所述第一存储子空间设置第一访问控制属性;
第二分配单元302,用于在WebAssembly虚拟机中执行所述第一应用实例,为所述第一应用实例中的变量分配所述第一安全存储空间中的第二存储子空间,并为所述第二存储子空间设置所述第一访问控制属性,以及将所述WebAssembly虚拟机对应的访问控制属性更新为所述第一访问控制属性;
访问单元303,用于在所述WebAssembly虚拟机中响应于针对第二安全存储空间的访问操作,确定所述第一访问控制属性与所述第二安全存储空间的第二访问控制属性是否相关联,如果所述第一访问控制属性与所述第二访问控制属性相关联,执行所述访问操作。
可选地,所述确定所述第一访问控制属性与所述第二安全存储空间的第二访问控制属性是否相关联,如果所述第一访问控制属性与所述第二访问控制属性相关联,执行所述访问操作,包括:
确定所述第一访问控制属性与所述第二安全存储空间的第二访问控制属性是否匹配,如果所述第一访问控制属性与所述第二访问控制属性匹配,执行所述访问操作。
可选地,所述如果所述第一访问控制属性与所述第二访问控制属性匹配,执行所述访问操作,包括:
如果所述第一访问控制属性与所述第二访问控制属性匹配,进一步确定所述访问操作包含的访问地址是否超出所述第二安全存储空间的边界,如果所述访问地址未超出所述第二安全存储空间的边界,执行所述访问操作。
可选地,所述第一应用实例中的数据包括所述WebAssembly应用模块中的临时数据、持久性数据和文件形式的数据;
所述第一应用实例中的变量包括所述WebAssembly应用模块中的全局变量和局部结构类型变量;
所述第一安全存储空间包括:用于存储所述全局变量的内存空间;用于存储所述局部结构类型变量的内存空间;用于存储所述临时数据的易失性临时数据存储空间;用于存储所述持久性数据的非易失性存储空间(堆);用于存储所述文件形式的数据的非易失性存储空间(堆)。
可选地,所述为所述第一应用实例中的变量分配所述第一安全存储空间中的第二存储子空间,包括:
从作为内存的易失性存储空间中为所述全局变量分配线性内存,并从所述内存的易失性存储空间中为所述局部结构类型变量分配辅助栈。
可选地,所述确定所述访问操作包含的访问地址是否超出所述第二安全存储空间的边界,包括:
基于所述访问操作包含的针对所述线性内存的地址偏移确定访问地址,并确定所述访问地址是否超出所述线性内存的边界。
可选地,所述为所述第一应用实例中的数据分配第一安全存储空间中的第一存储子空间,包括:
调用WebAssembly系统库模块中的第一API函数,由所述第一API函数从临时数据的易失性存储空间中为所述临时数据分配用于存储所述临时数据的易失性临时数据存储空间,并从非易失性存储空间中为所述持久性数据分配用于存储所述持久性数据的非易失性存储空间(堆),以及从所述非易失性存储空间中为所述文件形式的数据分配用于存储所述文件形式的数据的非易失性存储空间(堆);
获取所述WebAssembly系统库模块中的所述第一API函数返回的所分配的存储空间的引用信息;其中,所述引用信息为所述存储空间的起始地址的相关信息。
可选地,所述确定所述访问操作包含的访问地址是否超出所述第二安全存储空间的边界,包括:
基于所述访问操作包含的存储空间的引用信息,确定所述访问操作对应的存储空间的起始地址;
基于所述起始地址,以及所述访问操作包含的地址偏移和数据长度确定访问地址,并确定所述访问地址是否超出所述访问操作对应的存储空间的边界。
可选地,所述确定所述第一访问控制属性与所述第二安全存储空间的第二访问控制属性是否相关联,如果所述第一访问控制属性与所述第二访问控制属性相关联,执行所述访问操作,包括:
确定所述访问操作是否满足所述第一访问控制属性、所述第二安全存储空间的第二访问控制属性、共享许可信息的关联关系,如果满足所述关联关系,执行所述访问操作。
可选地,所述执行所述访问操作,包括:
调用所述第二安全存储空间对应的第二应用实例中的共享服务函数,由所述共享服务函数针对所述第二安全存储空间中存储的被设置了共享属性的数据和变量进行访问。
可选地,所述装置还包括:
第一调用单元,用于调用WebAssembly系统库模块中的第二API函数,由所述第二API函数在查找到所述第二安全存储空间对应的第二应用实例中的共享许可函数时,进一步调用所述第二应用实例中的所述共享许可函数,由所述共享许可函数许可所述第一应用实例访问所述第二安全存储空间中存储的被设置了共享属性的数据和变量,并获取所述第二应用实例中的所述共享许可函数返回的所述共享许可信息;
存储单元,用于获取所述WebAssembly系统库模块中的所述第二API函数返回的所述共享许可信息,并存储所述第一访问控制属性、所述第二访问控制属性、所述共享许可信息的关联关系。
可选地,所述装置还包括:
第二调用单元,用于调用WebAssembly系统库模块中的第三API函数,为所述第二安全存储空间中存储的指定的数据和变量设置共享属性。
可选地,所述WebAssembly虚拟机包含用于并行运行应用实例的若干逻辑通道;
所述将所述WebAssembly虚拟机对应的访问控制属性更新为所述第一访问控制属性,包括:
将用于运行所述第一应用实例的逻辑通道对应的访问控制属性更新为所述第一访问控制属性。
可选地,所述确定所述访问操作是否满足所述第一访问控制属性、所述第二安全存储空间的第二访问控制属性、共享许可信息的关联关系,如果满足所述关联关系,执行所述访问操作,包括:
确定用于运行所述第一应用实例的逻辑通道的管理信息是否包含所述第一访问控制属性、所述第二安全存储空间的第二访问控制属性、共享许可信息的关联关系,如果所述逻辑通道的管理信息包含所述关联关系,执行所述访问操作。
可选地,所述装置还包括:
第一更新单元,用于在执行WebAssembly系统库模块中的API函数时,将所述WebAssembly虚拟机对应的访问控制属性由所述第一访问控制属性更新为系统访问控制属性;
第二更新单元,用于在执行完所述WebAssembly系统库模块中的所述API函数后,将所述WebAssembly虚拟机对应的访问控制属性由所述系统访问控制属性更新为所述第一访问控制属性。
可选地,所述装置还包括:
第二访问单元,用于在所述WebAssembly虚拟机中响应于针对全局内存的访问操作,执行所述访问操作;其中,所述全局内存为从作为内存的易失性存储空间中分配的未被设置访问控制属性的内存块。
可选地,所述第一访问控制属性包括所述第一应用实例的应用实例标识和/或所述WebAssembly应用模块的应用模块标识。
对于装置实施例而言,其基本对应于方法实施例,因此相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请的技术方案的目的。
上述实施例阐明的系统、装置、模块或者单元,具体可以由计算机芯片或者实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或者闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或者技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或者其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或者其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或者其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或者其他磁性存储设备或者任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确存储的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本申请特定实施例进行了描述。其他实施例在本申请的范围内。在一些情况下,在本申请中记载的动作或者步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本申请一个或多个实施例中所使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。术语“和/或”是指并包含一个或多个相关联的存储项目的任何或者所有可能组合。
在本申请一个或多个实施例中所使用的术语“一个实施例”、“一些实施例”、“示例”、“具体示例”或者“一种实施方式”等的描述意指结合该实施例所描述的具体特征或者特点包含于本申请的至少一个实施例中。对这些术语的示意性描述不必须针对相同的实施例。而且,所描述的具体特征或者特点可以在本申请一个或多个实施例中以合适的方式结合。此外,在不相互矛盾的情况下,可以将不同的实施例以及不同实施例中的具体特征或者特点进行结合。
应当理解,尽管在本申请一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或者“当……时”或者“响应于确定”。
以上所述仅为本申请一个或多个实施例的较佳实施例而已,并不用以限制本申请一个或多个实施例,凡在本申请一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请一个或多个实施例保护的范围之内。
Claims (20)
1.一种数据处理方法,所述方法包括:
基于WebAssembly应用模块创建第一应用实例,为所述第一应用实例中的数据分配第一安全存储空间中的第一存储子空间,并为所述第一存储子空间设置第一访问控制属性;
在WebAssembly虚拟机中执行所述第一应用实例,为所述第一应用实例中的变量分配所述第一安全存储空间中的第二存储子空间,并为所述第二存储子空间设置所述第一访问控制属性,以及将所述WebAssembly虚拟机对应的访问控制属性更新为所述第一访问控制属性;
在所述WebAssembly虚拟机中响应于针对第二安全存储空间的访问操作,确定所述第一访问控制属性与所述第二安全存储空间的第二访问控制属性是否相关联,如果所述第一访问控制属性与所述第二访问控制属性相关联,执行所述访问操作。
2.根据权利要求1所述的方法,所述确定所述第一访问控制属性与所述第二安全存储空间的第二访问控制属性是否相关联,如果所述第一访问控制属性与所述第二访问控制属性相关联,执行所述访问操作,包括:
确定所述第一访问控制属性与所述第二安全存储空间的第二访问控制属性是否匹配,如果所述第一访问控制属性与所述第二访问控制属性匹配,执行所述访问操作。
3.根据权利要求2所述的方法,所述如果所述第一访问控制属性与所述第二访问控制属性匹配,执行所述访问操作,包括:
如果所述第一访问控制属性与所述第二访问控制属性匹配,进一步确定所述访问操作包含的访问地址是否超出所述第二安全存储空间的边界,如果所述访问地址未超出所述第二安全存储空间的边界,执行所述访问操作。
4.根据权利要求3所述的方法,所述第一应用实例中的数据包括所述WebAssembly应用模块中的临时数据、持久性数据和文件形式的数据;
所述第一应用实例中的变量包括所述WebAssembly应用模块中的全局变量和局部结构类型变量;
所述第一安全存储空间包括:用于存储所述全局变量的内存空间;用于存储所述局部结构类型变量的内存空间;用于存储所述临时数据的易失性临时数据存储空间;用于存储所述持久性数据的非易失性存储空间;用于存储所述文件形式的数据的非易失性存储空间。
5.根据权利要求4所述的方法,所述为所述第一应用实例中的变量分配所述第一安全存储空间中的第二存储子空间,包括:
从作为内存的易失性存储空间中为所述全局变量分配线性内存,并从所述内存的易失性存储空间中为所述局部结构类型变量分配辅助栈。
6.根据权利要求5所述的方法,所述确定所述访问操作包含的访问地址是否超出所述第二安全存储空间的边界,包括:
基于所述访问操作包含的针对所述线性内存的地址偏移确定访问地址,并确定所述访问地址是否超出所述线性内存的边界。
7.根据权利要求4所述的方法,所述为所述第一应用实例中的数据分配第一安全存储空间中的第一存储子空间,包括:
调用WebAssembly系统库模块中的第一API函数,由所述第一API函数从临时数据的易失性存储空间中为所述临时数据分配用于存储所述临时数据的易失性临时数据存储空间,并从非易失性存储空间中为所述持久性数据分配用于存储所述持久性数据的非易失性存储空间,以及从所述非易失性存储空间中为所述文件形式的数据分配用于存储所述文件形式的数据的非易失性存储空间;
获取所述WebAssembly系统库模块中的所述第一API函数返回的所分配的存储空间的引用信息;其中,所述引用信息为所述存储空间的起始地址的相关信息。
8.根据权利要求7所述的方法,所述确定所述访问操作包含的访问地址是否超出所述第二安全存储空间的边界,包括:
基于所述访问操作包含的存储空间的引用信息,确定所述访问操作对应的存储空间的起始地址;
基于所述起始地址,以及所述访问操作包含的地址偏移和数据长度确定访问地址,并确定所述访问地址是否超出所述访问操作对应的存储空间的边界。
9.根据权利要求1所述的方法,所述确定所述第一访问控制属性与所述第二安全存储空间的第二访问控制属性是否相关联,如果所述第一访问控制属性与所述第二访问控制属性相关联,执行所述访问操作,包括:
确定所述访问操作是否满足所述第一访问控制属性、所述第二安全存储空间的第二访问控制属性、共享许可信息的关联关系,如果满足所述关联关系,执行所述访问操作。
10.根据权利要求9所述的方法,所述执行所述访问操作,包括:
调用所述第二安全存储空间对应的第二应用实例中的共享服务函数,由所述共享服务函数针对所述第二安全存储空间中存储的被设置了共享属性的数据和变量进行访问。
11.根据权利要求10所述的方法,所述方法还包括:
调用WebAssembly系统库模块中的第二API函数,由所述第二API函数在查找到所述第二安全存储空间对应的第二应用实例中的共享许可函数时,进一步调用所述第二应用实例中的所述共享许可函数,由所述共享许可函数许可所述第一应用实例访问所述第二安全存储空间中存储的被设置了共享属性的数据和变量,并获取所述第二应用实例中的所述共享许可函数返回的所述共享许可信息;
获取所述WebAssembly系统库模块中的所述第二API函数返回的所述共享许可信息,并存储所述第一访问控制属性、所述第二访问控制属性、所述共享许可信息的关联关系。
12.根据权利要求10所述的方法,所述方法还包括:
调用WebAssembly系统库模块中的第三API函数,为所述第二安全存储空间中存储的指定的数据和变量设置共享属性。
13.根据权利要求9所述的方法,所述WebAssembly虚拟机包含用于并行运行应用实例的若干逻辑通道;
所述将所述WebAssembly虚拟机对应的访问控制属性更新为所述第一访问控制属性,包括:
将用于运行所述第一应用实例的逻辑通道对应的访问控制属性更新为所述第一访问控制属性。
14.根据权利要求13所述的方法,所述确定所述访问操作是否满足所述第一访问控制属性、所述第二安全存储空间的第二访问控制属性、共享许可信息的关联关系,如果满足所述关联关系,执行所述访问操作,包括:
确定用于运行所述第一应用实例的逻辑通道的管理信息是否包含所述第一访问控制属性、所述第二安全存储空间的第二访问控制属性、共享许可信息的关联关系,如果所述逻辑通道的管理信息包含所述关联关系,执行所述访问操作。
15.根据权利要求7、11、12中任一所述的方法,所述方法还包括:
在执行WebAssembly系统库模块中的API函数时,将所述WebAssembly虚拟机对应的访问控制属性由所述第一访问控制属性更新为系统访问控制属性;
在执行完所述WebAssembly系统库模块中的所述API函数后,将所述WebAssembly虚拟机对应的访问控制属性由所述系统访问控制属性更新为所述第一访问控制属性。
16.根据权利要求1所述的方法,所述方法还包括:
在所述WebAssembly虚拟机中响应于针对全局内存的访问操作,执行所述访问操作;其中,所述全局内存为从作为内存的易失性存储空间中分配的未被设置访问控制属性的内存块。
17.根据权利要求1所述的方法,所述第一访问控制属性包括所述第一应用实例的应用实例标识和/或所述WebAssembly应用模块的应用模块标识。
18.一种数据处理装置,所述装置包括:
第一分配单元,用于基于WebAssembly应用模块创建第一应用实例,为所述第一应用实例中的数据分配第一安全存储空间中的第一存储子空间,并为所述第一存储子空间设置第一访问控制属性;
第二分配单元,用于在WebAssembly虚拟机中执行所述第一应用实例,为所述第一应用实例中的变量分配所述第一安全存储空间中的第二存储子空间,并为所述第二存储子空间设置所述第一访问控制属性,以及将所述WebAssembly虚拟机对应的访问控制属性更新为所述第一访问控制属性;
访问单元,用于在所述WebAssembly虚拟机中响应于针对第二安全存储空间的访问操作,确定所述第一访问控制属性与所述第二安全存储空间的第二访问控制属性是否相关联,如果所述第一访问控制属性与所述第二访问控制属性相关联,执行所述访问操作。
19.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1至17中任一项所述的方法。
20.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1至17中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311064524.2A CN116755845B (zh) | 2023-08-22 | 2023-08-22 | 数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311064524.2A CN116755845B (zh) | 2023-08-22 | 2023-08-22 | 数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116755845A true CN116755845A (zh) | 2023-09-15 |
CN116755845B CN116755845B (zh) | 2023-11-14 |
Family
ID=87955655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311064524.2A Active CN116755845B (zh) | 2023-08-22 | 2023-08-22 | 数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116755845B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693188A (zh) * | 2005-12-30 | 2012-09-26 | 英特尔公司 | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 |
CN105701424A (zh) * | 2014-11-29 | 2016-06-22 | 华为技术有限公司 | 一种创建存储单元的方法和控制器 |
US20210182423A1 (en) * | 2019-01-31 | 2021-06-17 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for storing pii information via a metadata driven blockchain using distributed and decentralized storage for sensitive user information |
CN113946602A (zh) * | 2021-10-27 | 2022-01-18 | 中国建设银行股份有限公司 | 数据查找方法、装置、设备和介质 |
CN115408099A (zh) * | 2022-07-11 | 2022-11-29 | 北京握奇智能科技有限公司 | 一种虚拟机数据访问方法、存储介质及装置 |
US20230100873A1 (en) * | 2022-12-05 | 2023-03-30 | Intel Corporation | Memory tagging and tracking for offloaded functions and called modules |
CN116070201A (zh) * | 2022-12-22 | 2023-05-05 | 北京握奇数据股份有限公司 | 数据管理的方法、系统、电子设备及介质 |
-
2023
- 2023-08-22 CN CN202311064524.2A patent/CN116755845B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693188A (zh) * | 2005-12-30 | 2012-09-26 | 英特尔公司 | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 |
CN105701424A (zh) * | 2014-11-29 | 2016-06-22 | 华为技术有限公司 | 一种创建存储单元的方法和控制器 |
US20210182423A1 (en) * | 2019-01-31 | 2021-06-17 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for storing pii information via a metadata driven blockchain using distributed and decentralized storage for sensitive user information |
CN113946602A (zh) * | 2021-10-27 | 2022-01-18 | 中国建设银行股份有限公司 | 数据查找方法、装置、设备和介质 |
CN115408099A (zh) * | 2022-07-11 | 2022-11-29 | 北京握奇智能科技有限公司 | 一种虚拟机数据访问方法、存储介质及装置 |
US20230100873A1 (en) * | 2022-12-05 | 2023-03-30 | Intel Corporation | Memory tagging and tracking for offloaded functions and called modules |
CN116070201A (zh) * | 2022-12-22 | 2023-05-05 | 北京握奇数据股份有限公司 | 数据管理的方法、系统、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116755845B (zh) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6799173B2 (en) | Method and apparatus for sharing code containing references to non-shared objects | |
US20110154378A1 (en) | Api namespace virtualization | |
US9563446B2 (en) | Binary file generation | |
KR20160123370A (ko) | 파일 액세스 방법 및 관련 기기 | |
CN116680015B (zh) | 函数调用方法、装置、电子设备及可读存储介质 | |
US20190087208A1 (en) | Method and apparatus for loading elf file of linux system in windows system | |
CN116661910B (zh) | 一种应用调用的方法及装置 | |
US20120011512A1 (en) | Minimizing overhead in resolving operating system symbols | |
US11880298B2 (en) | Allocation of memory within a data type-specific memory heap | |
CN113468079B (zh) | 内存访问方法及装置 | |
CN116700629B (zh) | 数据处理方法和装置 | |
CN116680014B (zh) | 数据处理方法和装置 | |
CN113485716B (zh) | 防内存越界的程序编译方法及装置 | |
US20140289739A1 (en) | Allocating and sharing a data object among program instances | |
CN116755845B (zh) | 数据处理方法和装置 | |
CN109409037B (zh) | 一种数据混淆规则的生成方法、装置及设备 | |
EP4020297A1 (en) | Method for managing a volatile memory and java card device | |
CN117785728A (zh) | 数据处理方法和装置 | |
CN117251234B (zh) | 基于补丁的函数调用方法及装置 | |
KR101140522B1 (ko) | 객체 관리 시스템 및 방법 | |
CN116700841B (zh) | 一种原生api调用的方法及装置 | |
CN113849811A (zh) | 一种共享虚拟资源分析方法及装置 | |
CN116700840B (zh) | 文件执行方法、装置、电子设备及可读存储介质 | |
CN116955209B (zh) | WebAssembly虚拟机的测试方法和装置 | |
CN111367836B (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 |