发明内容
本说明书提出一种数据隔离方法,应用于终端设备;其中,所述终端设备搭载了虚拟机管理器;以及,运行在由所述虚拟机管理器管理的第一虚拟机上的用户操作系统,和运行在由所述虚拟机程序管理的第二虚拟机上的可信执行环境;所述可信执行环境包括用于存储所述终端设备采集到的用户数据的安全内存空间;所述方法包括:
响应于所述用户操作系统中的用户应用触发的数据采集指令,调用所述终端设备搭载的数据采集硬件采集用户数据;其中,所述数据采集硬件搭载了第一MMU和DMA;所述用户操作系统维护了与所述安全内存空间对应的句柄;
在所述用户操作系统中查询所述句柄指向的第一虚拟内存地址,并由所述第一MMU对所述第一虚拟内存地址进行一级地址映射,将所述第一虚拟内存地址转换为第二虚拟内存地址;
将所述第二虚拟内存地址进一步提交至所述虚拟机管理器,由所述虚拟机管理器控制所述终端设备搭载的第二MMU对所述第二虚拟内存地址进行二级地址映射,将所述第二虚拟内存地址转换为所述安全内存空间的物理内存地址;
所述DMA基于所述安全内存空间的物理内存地址将所述用户数据写入所述安全内存空间,以由所述可信执行环境中的可信应用对所述用户数据进行安全处理。
可选的,所述方法还包括:
所述第一虚拟机对应的虚拟机进程,获取所述第二虚拟机对应的虚拟机进程,通过共享内存的方式传递的与所述安全内存空间对应的句柄;
在所述用户操作系统中维护所述句柄,并将所述句柄指向为所述用户应用对应的应用进程分配的所述第一虚拟内存地址。
可选的,所述第一虚拟机对应的虚拟机进程,获取所述第二虚拟机对应的虚拟机进程,通过共享内存的方式传递的与所述安全内存空间对应的句柄,包括:
所述虚拟机管理器为所述第一虚拟机对应的虚拟机进程,和所述第二虚拟机对应的虚拟机进程,创建共享内存;
所述第二虚拟机对应的虚拟进程将与所述安全内存空间对应的句柄写入所述共享内存;以及,所述第一虚拟机对应的虚拟进程从所述共享内存中读取所述句柄。
可选的,所述将所述第二虚拟内存地址进一步提交至所述虚拟机管理器,包括:
所述DMA基于所述第二虚拟内存地址向所述安全内存空间写入所述用户数据;
响应于所述DMA向所述安全内存空间写入所述用户数据的写入失败事件,将所述第二虚拟内存地址进一步提交至所述虚拟机管理器。
可选的,所述虚拟机管理器为hypervisor。
可选的,所述虚拟机管理器为Type1hypervisor。
可选的,所述用户数据包括用户面部图像数据;所述安全处理包括针对用户进行人脸识别。
可选的,所述数据采集硬件包括相机硬件;所述相机硬件包括摄像头模组和与摄像头模组连接的SOC主芯片;SOC主芯片包括图像处理芯片和所述第二MMU;所述图像处理芯片包括所述第一MMU和所述DMA。可选的,所述用户数据包括用户指纹数据;所述安全处理包括针对用户进行指纹识别。
可选的,所述用户数据包括用户语音数据;所述安全处理包括针对用户进行声纹识别。
本说明书还提出一种数据隔离装置,应用于终端设备;其中,所述终端设备搭载了虚拟机管理器;以及,运行在由所述虚拟机管理器管理的第一虚拟机上的用户操作系统,和运行在由所述虚拟机程序管理的第二虚拟机上的可信执行环境;所述可信执行环境包括用于存储所述终端设备采集到的用户数据的安全内存空间;所述装置包括:
采集模块,响应于所述用户操作系统中的用户应用触发的数据采集指令,调用所述终端设备搭载的数据采集硬件采集用户数据;其中,所述数据采集硬件搭载了第一MMU和DMA;所述用户操作系统维护了与所述安全内存空间对应的句柄;
第一映射模块,在所述用户操作系统中查询所述句柄指向的第一虚拟内存地址,并由所述第一MMU对所述第一虚拟内存地址进行一级地址映射,将所述第一虚拟内存地址转换为第二虚拟内存地址;
第二映射模块,将所述第二虚拟内存地址进一步提交至所述虚拟机管理器,由所述虚拟机管理器控制所述终端设备搭载的第二MMU对所述第二虚拟内存地址进行二级地址映射,将所述第二虚拟内存地址转换为所述安全内存空间的物理内存地址;
写入模块,控制所述DMA基于所述安全内存空间的物理内存地址将所述用户数据写入所述安全内存空间,以由所述可信执行环境中的可信应用对所述用户数据进行安全处理。
可选的,所述装置还包括:
获取模块,所述第一虚拟机对应的虚拟机进程,获取所述第二虚拟机对应的虚拟机进程,通过共享内存的方式传递的与所述安全内存空间对应的句柄;
维护模块,在所述用户操作系统中维护所述句柄,并将所述句柄指向为所述用户应用对应的应用进程分配的所述第一虚拟内存地址。
可选的,所述获取模块:
所述虚拟机管理器为所述第一虚拟机对应的虚拟机进程,和所述第二虚拟机对应的虚拟机进程,创建共享内存;
所述第二虚拟机对应的虚拟进程将与所述安全内存空间对应的句柄写入所述共享内存;以及,所述第一虚拟机对应的虚拟进程从所述共享内存中读取所述句柄。
可选的,所述第二映射模块:
所述DMA基于所述第二虚拟内存地址向所述安全内存空间写入所述用户数据;
响应于所述DMA向所述安全内存空间写入所述用户数据的写入失败事件,将所述第二虚拟内存地址进一步提交至所述虚拟机管理器。
可选的,所述虚拟机管理器为hypervisor。
可选的,所述虚拟机管理器为Type1hypervisor。
可选的,所述用户数据包括用户面部图像数据;所述安全处理包括针对用户进行人脸识别。
可选的,所述数据采集硬件包括相机硬件;所述相机硬件包括摄像头模组和与摄像头模组连接的SOC主芯片;SOC主芯片包括图像处理芯片和所述第二MMU;所述图像处理芯片包括所述第一MMU和所述DMA。可选的,所述用户数据包括用户指纹数据;所述安全处理包括针对用户进行指纹识别。
可选的,所述用户数据包括用户语音数据;所述安全处理包括针对用户进行声纹识别。
通过以上技术方案,一方面,由于虚拟机之间具有天然的隔离属性;因此,通过并将终端搭载的用户操作系统和TEE,分别运行在由虚拟机管理器管理的虚拟机上,可以实现用户操作系统和TEE之间在根本上的系统隔离,使得用户操作系统无法直接访问TEE中的安全内存空间;
另一方面,由于终端在将采集到的用户数据写入到TEE中的安全内存空间时,用户操作系统除了需要基于数据采集硬件搭载的第一MMU,对与上述安全内存空间对应的目标句柄所指向的第一虚拟内存地址进行第一级地址映射,将上述第一虚拟内存地址转换为第二虚拟内存地址以外,还需要由虚拟机管理器控制终端设备搭载的第二MMU对上述第二虚拟内存地址进行第二级地址映射,才能够得到上述安全内存空间对应的真实物理内存地址;因此,上述安全内存空间对应的真实物理内存地址,不会直接暴露给上述用户操作系统中的用户应用,进而从根本上隔离了上述用户操作系统中的用户态应用进程,通过采集硬件搭载的DMA直接向上述安全内存空间写入用户数据的权限,可以对非法用户通过攻破用户操作系统中的用户应用,对上述安全内存空间中写入的用户数据进行更改的攻击的行为进行有效防护。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
请参见图1,图1为本说明示出的一种终端设备的系统架构图。
如图1所示,在一些场景下,通常会在终端设备搭载的用户操作系统的基础上,单独创建一个与用户操作系统保持隔离的TEE(Trusted Execution Environment,可信执行环境)。
其中,在上述TEE中,可以搭建一个与用户操作系统保持隔离的安全操作系统,在安全操作系统中运行可信应用;还可以在TEE中单独开辟一块内存空间作为安全内存空间,用于存储用户在用户操作系统中采集到的用户数据
请继续参见图1,以上述用户数据为用户的面部图像数据为例,用户可以在用户操作系统中,通过用户操作系统中的用户应用,来调用终端设备搭载的相机硬件,采集用户的面部图像数据,再通过相机硬件中搭载的硬件内存访问部件(比如DMA),将采集到的面部图像数据写入TEE中的安全内存空间中。
当采集到的面部图像数据写入TEE中的安全内存空间中之后,安全操作系统中的可信应用,可以基于安全内存空间中写入的面部图像数据,对上述用户进行人脸识别处理。
在图1示出的系统架构中,一方面,虽然终端设备搭载的用户操作系统,和TEE之间处于一种相对隔离的状态,但在这种相对隔离的状态下,用户操作系统通过共享内存的方式,可能仍然直接访问到上述TEE中的安全内存空间中写入的用户数据;
另一方面,虽然终端设备搭载的用户操作系统,和TEE之间处于一种相对隔离的状态,但用户操作系统中的用户应用,仍然能通过数据采集硬件搭载的硬件内存访问部件,直接访问到上述安全内存空间;因此,上述安全内存空间的真实物理内存地址,仍然可能暴露给用户操作系统中的用户态应用进程,使得非法用户仍然可能通过攻破用户操作系统中的用户应用,对上述安全内存空间中写入的用户数据进行更改。
有鉴于此,本说明书提出一种在图1示出的系统架构的基础上,从根本上实现用户操作系统与TEE之间的数据隔离的技术方案。
在实现时,终端设备可以搭载虚拟机管理器,通过搭载的虚拟机管理器对终端设备的硬件资源进行虚拟化处理,将终端设备虚拟化为若干台虚拟机。上述用户操作系统,可以运行在由上述虚拟机管理器管理的第一虚拟机上;上述TEE,可以运行在由上述虚拟机管理器管理的第二虚拟机上。
响应于所述用户操作系统中的用户应用触发的数据采集指令,调用所述终端设备搭载的数据采集硬件采集用户数据;其中,所述数据采集硬件搭载了第一MMU和DMA;所述用户操作系统维护了与所述安全内存空间对应的目标句柄;
在所述用户操作系统中查询所述目标句柄指向的第一虚拟内存地址,并由所述第一MMU对所述第一虚拟内存地址进行一级地址映射,将所述第一虚拟内存地址转换为第二虚拟内存地址;
其中,在上述用户操作系统中,可以维护TEE中的安全内存空间对应的目标句柄(handle);
例如,在实现时,上述第二虚拟机对应的虚拟机进程,可以在虚拟机管理器的控制下,通过共享内存的方式,将上述安全内存空间对应的目标句柄,传递给上述第一虚拟机对应的虚拟机进程。而上述用户操作系统,可以在上述用户操作系统的系统内核中维护上述目标句柄,将该目标句柄分配给与上述用户应用对应的用户进程(用户态应用进程),并将该目标句柄指向该用户操作系统为上述用户应用对应的用户进程,分给的第一虚拟内存地址。
当用户通过上述用户操作系统中的用户应用触发了数据采集时,上述用户操作系统的系统内核,可以响应上述用户应用触发的数据采集指令,调用终端设备搭载的数据采集硬件采集用户数据;其中,上述数据采集硬件可以搭载第一MMU和DMA;
当采集到用户数据后,上述用户操作系统的系统内核,可以获取分配给与上述用户应用对应的用户进程的上述目标句柄,并在用户操作系统中查询上述目标句柄指向的第一虚拟内存地址。
当查询到上述目标句柄指向的第一虚拟内存地址之后,上述用户操作系统的系统内核,可以控制上述数据采集硬件搭载的第一MMU,对上述第一虚拟内存地址进行第一级地址映射,将上述第一虚拟内存地址转换为第二虚拟内存地址;
其中,需要说明的是,在本说明书中,通过上述第一MMU执行的第一级地址映射,将上述第一虚拟内存地址转换后的内存地址,并不是上述安全内存空间真实的物理内存地址,仍然是一个虚拟内存地址。
进一步的,上述第一MMU在完成第一级地址映射后,可以将得到的上述第二虚拟内存地址进一步提交至虚拟机管理器,由上述虚拟机管理器控制终端设备搭载的第二MMU对该第二虚拟内存地址进行二级地址映射,将该第二虚拟内存地址转换为上述安全内存空间真实的物理内存地址。
当完成上述第二级地址映射后,上述数据采集硬件搭载的DMA,可以基于上述安全内存空间真实的物理内存地址,将采集到的用户数据,写入上述安全内存空间,由上述TEE中的安全操作系统中的可信应用,进一步对该用户数据进行安全处理;
在以上技术方案中,一方面,由于虚拟机之间具有天然的隔离属性;因此,通过并将终端搭载的用户操作系统和TEE,分别运行在由虚拟机管理器管理的虚拟机上,可以实现用户操作系统和TEE之间在根本上的系统隔离,使得用户操作系统无法直接访问TEE中的安全内存空间;
另一方面,由于终端在将采集到的用户数据写入到TEE中的安全内存空间时,用户操作系统除了需要基于数据采集硬件搭载的第一MMUMMU,对与上述安全内存空间对应的目标句柄所指向的第一虚拟内存地址进行第一级地址映射,将上述第一虚拟内存地址转换为第二虚拟内存地址以外,还需要由虚拟机管理器控制终端设备搭载的第二MMU对上述第二虚拟内存地址进行第二级地址映射,才能够得到上述安全内存空间对应的真实物理内存地址;因此,上述安全内存空间对应的真实物理内存地址,不会直接暴露给上述用户操作系统中的用户应用,进而从根本上隔离了上述用户操作系统中的用户态应用进程,通过采集硬件搭载的DMA直接向上述安全内存空间写入用户数据的权限,可以对非法用户通过攻破用户操作系统中的用户应用,对上述安全内存空间中写入的用户数据进行更改的攻击的行为进行有效防护。
请参见图2,图2是一示例性实施例提供的一种数据隔离方法的流程图。如图2所示,该方法应用于终端设备;其中,该终端设备搭载了虚拟机管理器;以及,运行在由该虚拟机管理器管理的第一虚拟机上的用户操作系统,和运行在由该虚拟机程序管理的第二虚拟机上的可信执行环境;所述可信执行环境包括用于存储上述终端设备采集到的用户数据的安全内存空间;所述方法包括以下步骤:
步骤202,响应于所述用户操作系统中的用户应用触发的数据采集指令,调用所述终端设备搭载的数据采集硬件采集用户数据;其中,所述数据采集硬件搭载了第一MMU和DMA;所述用户操作系统维护了与所述安全内存空间对应的目标句柄;
步骤204,在所述用户操作系统中查询所述目标句柄指向的第一虚拟内存地址,并由所述第一MMU对所述第一虚拟内存地址进行一级地址映射,将所述第一虚拟内存地址转换为第二虚拟内存地址;
步骤206,所述第一MMU将所述第二虚拟内存地址进一步提交至所述虚拟机管理器,由所述虚拟机管理器控制所述终端设备搭载的第二MMU对所述第二虚拟内存地址进行二级地址映射,将所述第二虚拟内存地址转换为所述安全内存空间的物理内存地址;
步骤208,所述DMA基于所述安全内存空间的物理内存地址将所述用户数据写入所述安全内存空间,以由所述可信执行环境中的可信应用对所述用户数据进行安全处理。
上述虚拟管理器(Virtual Machine Manager),包括任意形态的用于对终端设备进行虚拟化处理,并对虚拟化得到的虚拟机进行管理的虚拟机管理程序;
例如,在示出的一种实施方式中,上述虚拟管理器具体可以是hypervisor。其中,hypervisor一种运行在终端设备的底层硬件和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。
上述可信执行环境(Trusted Execution Environment),是指与终端设备上搭载的通用操作系统并行运行的,与上述通用操作系统保持隔离的一个独立的安全执行环境,该安全执行环境用于为终端设备上搭载的通用执行环境提供安全服务。
其中,在终端设备上搭载TEE所采用的技术方案,在本说明书中不进行特别限定,本领域技术人员可以基于实际的需求,进行灵活的选择。
例如,在实现时,可以采用ARM公司的TrustZone架构,在终端设备上搭载TEE环境。TrustZone架构是ARM公司提出的一种硬件级的安全运行解决方案。TrustZone架构将系统分为了TEE和REE(Rich Execution Environment)两个区域,REE中运行着终端设备搭载的通用操作系统(比如Android系统).而TEE有独立的运算、存储资源,与REE完全隔离开。所有需要保密的操作(如指纹识别、密码处理、数据加解密、安全认证等),在TEE中执行(如指纹识别、密码处理、数据加解密、安全认证等),其余的不需要保密的操作在REE中执行。
上述MMU(Memory Management Unit,内存管理单元),它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,主要负责将虚拟内存地址映射为物理内存地址;
例如,设备的内存资源通常是以页表(page table)的形式进行管理,在页表中记录虚拟内存地址和物理内存地址的映射关系;用户态进程通常使用虚拟内存地址来访问设备的内存,内核态进程使用物理内存地址来访问设备的内存。因此,用户态进程在访问设备的内存时,需要通过MMU来查询页表,将虚拟内存地址转换为物理内存地址。
上述DMA(Direct Memory Access,直接内存存取),用于将数据从一个地址空间,复制到另一个地址空间;例如,在本说明书中,上述数据采集硬件中搭载的DMA,负责将该数据采集硬件采集到的用户数据,从该数据采集硬件的缓存空间中,复制到在上述TEE中开辟的安全内存空间。
上述用户数据,包括任意形式的,需要写入TEE侧的安全内存空间,由上述TEE侧的安全操作系统中的可信应用进行进一步的安全处理的用户隐私数据;
例如,在实际应用中,上述用户数据可以是需要写入TEE侧的安全内存空间,由上述TEE侧的安全操作系统中的可信应用进行人脸识别处理的,用户面部图像数据。
当然,在实际应用中,上述用户数据除了可以是用户面部图像数据以外,也可以是需要写入TEE侧的安全内存空间,由上述TEE侧的安全操作系统中的可信应用进行指纹识别处理的用户指纹数据;或者,也可以是需要写入TEE侧的安全内存空间,由上述TEE侧的安全操作系统中的可信应用进行声纹识别处理的用户语音数据,等等。在本说明书中不再进行一一列举。
以下将以上述用户数据为用户面部图像数据,以及上述虚拟机管理器为hypervisor为例,对本说明书进行详细说明。
请参见图3,图3为本说明示出的另一种终端设备的系统架构图。
如图3所示,仍然可以在终端设备搭载的用户操作系统的基础上,单独创建一个与用户操作系统保持隔离的TEE;例如,可以采用ARM公司的TrustZone架构,来创建TEE;
其中,基于TrustZone架构来创建TEE的具体实施细节,在本说明书中不再进行详述,本领域技术人员可以参考相关技术中的记载。
一方面,可以在TEE中,可以进一步搭建一个与用户操作系统保持隔离的安全操作系统(secure OS);
在实现时,可以通过在TEE中搭载微内核的操作系统内核的方式,在TEE的安全环境中,构建一个独立运行的小型安全操作系统。
其中,需要说明的是,在TEE中搭载的操作系统内核的具体类型,在本说明书中不进行特别限定;例如,可以是基于Zircon的操作系统内核。
另一方面,还可以在TEE中开辟一块安全内存空间作为用户操作系统中的相机应用的图像缓存区,用于存储用户通过用户操作系统中的相机应用(即上述用户应用),调用终端设备搭载的相机硬件(即上述数据采集硬件)采集到的用户面部图像数据。
其中,上述相机应用,可以是指用户操作系统中的相机APP,也可以其他类型的能够唤醒终端设备的相机硬件采用用户的面部图像数据的APP;比如,具有刷脸支付功能的支付APP等,在本说明书中不进行特别限定。
请继续参见图3,在本说明书中,终端设备上还可以搭载基于hypervisor的虚拟机管理器,并通过hypervisor对终端设备的硬件资源进行虚拟化处理,将终端设备虚拟化为若干台虚拟机。
其中,hypervisor包含type1和type2两种模式。type1hypervisor,是直接运行在硬件设备之上的。而type2hypervisor,则是运行在硬件设备现有的操作系统之上的。
由于直接运行在硬件设备之上的hypervisor,与运行在硬件设备现有的操作系统之上的hypervisor的相比,具有性能上的优势;因此,如图3所示,在本说明书中,可以在终端设备上可以搭载基于type1hypervisor的虚拟机管理器,对终端设备进行虚拟化处理。
请继续参见图3,当针对上述终端设备的虚拟化处理完成后,可以将将上述用户操作系统,运行在由hypervisor管理的第一虚拟机(记为VM0)上,并将上述TEE,运行在由上hypervisor管理的第二虚拟机(记为VM1)上。
当然,在实际应用中,可以基于实际的需求,在上述终端上创建多个与用户操作系统保持隔离的TEE;在这种情况下,可以针对上述终端设备进行虚拟机化处理,将上述终端设备虚拟化为多台虚拟机,并将上述多个TEE分别运行在一个独立的虚拟机之上,在本说明书中不进行特别限定。
由于虚拟机之间具有天然的隔离属性;例如,虚拟机之间无法直接进行通信,必须在虚拟机管理器的控制和调度之下,才能够进行通信;因此,通过这种方式,可以实现用户操作系统和TEE之间在根本上的系统隔离,使得用户操作系统无法直接访问TEE中的安全内存空间;
例如,采用图1示出的系统架构,用户操作系统和TEE本质上仍然是处于一种相对隔离的状态;而采用如3示出的系统架构,用户操作系统和TEE之间的通信,则转变成了两个虚拟机进程在虚拟机管理器的严格控制和管理之下的通信,因此从根本上实现了用户操作系统和TEE之间的系统隔离。
在本说明书中,在上述用户操作系统中,可以维护在TEE中开辟的安全内存空间对应的句柄(handle)。句柄是一种指向一个内存空间的特殊指针。
例如,如图3所示,在实现时,可以将上安全内存空间划分为若干个缓存区,在上述用户操作系统中来维护各个缓存区对应的句柄。
其中,需要说明的是,上述用户操作系统中维护的,上述安全内存空间对应的句柄,具体可以是由上述TEE,通过虚拟机之间的通信方式,返回给上述用户操作系统的。
当然,在实际应用中,上述用户操作系统中维护的,上述安全内存空间对应的句柄,具体也可以是用户手动配置在上述用户操作系统中的,在本说明书中不进行特别限定。
在示出的一种实施方式中,上述安全内存空间对应的句柄,具体可以是上述VM1对应的虚拟机进程,在hypervisor的控制下,通过共享内存的方式,传递给上述VM0对应的虚拟机进程的。
具体地,当在TEE中成功开辟了一块内存空间作为安全内存空间之后,上述VM1对应的虚拟机进程,可以请求hypervisor为VM0和VM1创建一块用于存储句柄的共享内存。
例如,hypervisor可以在终端设备的物理内存中分配一段物理内存,作为共享内存,然后将这段物理内存的物理内存地址,分别映射到VM0和VM1对应的虚拟机进程各自的进程地址空间,使得VM0对应的虚拟机进程,可以实时的看到VM1对应的虚拟机进程写入该物理内存的共享数据。
进一步的,VM1对应的虚拟机进程,可以将上述安全内存空间的句柄,写入上述共享内存;相应的,VM0对应的虚拟机进程,可以在实时的查看到VM1对应的虚拟机进程写入共享内存的句柄后,可以从该共享内存中读取上述安全内存空间的句柄。
在本说明书中,当VM1对应的虚拟机进程,在hypervisor的控制下,通过共享内存的方式,将上述安全内存空间对应的句柄,传递给上述VM0对应的虚拟机进程之后,上述用户操作系统,可以在系统内核中维护该句柄。
其中,需要说明的是,对于上述用户操作系统中的用户应用对应的用户进程(用户态应用进程)而言,通常会由操作系统为其统一分配可以使用的虚拟地址;因此,当VM1对应的虚拟机进程,在hypervisor的控制下,通过共享内存的方式,将上述安全内存空间对应的句柄,传递给上述VM0对应的虚拟机进程之后,上述用户操作系统,还可以将上述安全内存空间对应的句柄,分配给与上述用户应用对应的用户进程,并将该句柄指向该用户操作系统为上述用户应用对应的用户进程,分配的第一虚拟内存地址。
也即,在本说明书中,上述安全内存空间对应的句柄,在TEE中的安全操作系统中,指向上述安全内存空间的物理内存地址;而在上述用户操作系统中,指向上述用户操作系统为上述用户应用分配的第一虚拟内存地址。
请继续参加图3,在本说明书中,上述终端设备上可以搭载第一MMU和第二MMU。
其中,上述第一MMU负责一级地址映射,将上述安全内存空间对应的句柄所指向的第一虚拟地址,转换成为“物理地址”;
需要说明的是,为了避免将上述安全内存空间真实的物理内存地址暴露给上述用户操作系统中的用户态进程,通过上述第一MMU执行的第一级地址映射,将上述第一虚拟内存地址转换后的内存地址,并不是上述安全内存空间真实的物理内存地址,仍然是一个虚拟内存地址。
上述第二MMU负责二级地址映射,将上述安全内存空间对应的句柄经过一级地址映射转换后的第二虚拟内存地址,进一步转换成为上述安全内存空间真实的物理内存地址。
其中,在示出的一种实施方式中,请参见图3,对于传统的相机硬件而言,通常包括摄像头模组(camera sensor)和与摄像头模组连接的SOC主芯片。而SOC主芯片中,包括图像处理芯片(ISP)和SMMU(第二MMU)。也即,图像处理芯片和SMMU是集成在同一个SOC主芯片中的两个并列的子芯片。而在图像处理芯片的内部,也会进一步集成一个MMU(第一MMU)和DMA。
因此,在本说明书中,可以复用传统的相机硬件的SOC主芯片中集成的SMMU,来执行二级地址映射,将上述第二虚拟内存地址,进一步转换成为上述安全内存空间真实的物理内存地址。
通过这种方式,可以最大程度的复用相机硬件现有的硬件,而不需要引入新的硬件,因此可以最大程度的降低硬件上的依赖,提升本申请的技术方案的通用性。
在本说明书中,用户可以通过操作上述用户操作系统中的相机应用,来触发调用终端设备底层的相机硬件,完成用户面部图像数据的采集;
例如,在上述相机应用的用户界面中,可以提供一个用户唤醒人脸识别的功能按钮;比如,该功能按钮具体可以是一个“刷脸支付”的功能按钮;用户可以通过诸如点击等操作方式,来触发该功能按钮,向上述用户操作系统的系统内核触发一个数据采集指令,来唤醒并调用终端设备底层的相机硬件,采集用户的面部图像数据。
而上述用户操作系统的系统内核,可以在用户通过上述用户操作系统中的相机应用触发了数据采集时,响应上述相机应用触发的数据采集指令,调用终端设备搭载的相机硬件采集用户的面部图像数据;
当采集到用户的面部图像数据后,上述用户操作系统的系统内核,可以进一步获取分配给与上述相机应用对应的用户进程的句柄(即上述安全内存空间对应的句柄),并在用户操作系统中查询该句柄指向的第一虚拟内存地址。
其中,查询句柄指向的虚拟内存地址,即为在系统中“解释”该句柄的过程。
在实现时,上述用户操作系统的系统内核在维护上述句柄时,可以基于进程ID、为该进程分配的句柄、和该句柄所指向的虚拟地址等信息,来创建句柄表;进而,系统可以通过查询句柄表,来获取句柄所指向的虚拟地址,完成针对该句柄的“解释”过程。
当查询到该句柄指向的第一虚拟内存地址之后,上述用户操作系统的系统内核,可以控制上述相机硬件中搭载的第一MMU,对上述第一虚拟内存地址进行第一级地址映射,将上述第一虚拟内存地址转换为第二虚拟内存地址;
例如,hypervisor为上述用户操作系统对应的虚拟机进程,分配的物理内存,可以以页表的形式进行管理。在该页表中可以维护为上述用户应用分配的第一虚拟地址和对应的“物理地址”之间的映射关系。其中,如前所述,为避免直接将上述安全内存空间真实的物理地址暴露给上述用户操作系统中的用户态进程,与上述第一虚拟地址存在映射关系的“物理地址”,仍然为一个虚拟地址(即上述第二虚拟内存地址)。在这种情况下,上述相机硬件中搭载的第一MMU,可以通过查询hypervisor为上述用户操作系统对应的虚拟机进程,分配的物理内存中存储的页表,来获得与上述第一虚拟地址存在映射关系的第二虚拟内存地址。
请继续参见图3,进一步的,上述第一MMU在完成第一级地址映射后,可以将得到的上述第二虚拟内存地址进一步提交至hypervisor。
在示出的一种实施方式中,当在上述用户操作系统中,完成针对上述安全内存空间对应的句柄所指向的第一虚拟地址的第一级地址映射之后,由于在本说明书中,上述安全内存空间真实的物理内存地址,是完全不会暴露给上述用户操作系统中的用户态进程的;因此;对于上述用户操作系统而言,在完成第一级地址映射后,即可以认为经过第一级地址映射转换后的第二虚拟内存地址为上述安全内存空间真实的物理内存地址;
在这种情况下,可以直接将该第二虚拟内存地址上送至总线,而上述相机硬件中的DMA可以读取上送总线的上述第二虚拟内存地址,尝试基于该第二虚拟内存地址向TEE一侧的安全内存空间写入采集到的用户面部图像数据。
由于上述第二虚拟地址,并不是上述安全内存空间真实的物理内存地址;因此,DMA本次会写入失败。
相应的,上述用户操作系统的系统内核,在监听到上述DMA本次向上述安全内存空间写入数据的写入失败事件后,可以响应该写入失败事件,进一步控制上述相机硬件中的第一MMU将上述第二虚拟内存地址,进一步提交至hypervisor。
当然,在实际应用中,上述第一MMU在完成第一级地址映射后,上述DMA也可以不尝试基于上述第二虚拟内存地址,向上述安全内存空间写入采集到的数据,而是直接将上述第二虚拟内存地址进一步提交至hypervisor,在本说明书中不进行特别限定。
请继续参见图3,hypervisor在收到上述第一MMU提交的上述第二虚拟内存地址后,可以控制上述终端设备搭载的第二MMU,对上述第二虚拟内存地址进行二级地址映射,将上述第二虚拟内存地址转换为上述安全内存空间的物理内存地址;
例如,hypervisor为上述TEE对应的虚拟机进程,分配的物理内存,仍然可以以页表的形式进行管理。在该页表中可以维护为上述TEE中的安全操作系统中的可信应用分配的第二虚拟地址和上述安全内存空间真实的物理内存地址之间的映射关系。
在这种情况下,hypervisor可以控制上述第二MMU,通过查询hypervisor为上述TEE对应的虚拟机进程,分配的物理内存中存储的页表,来获得与上述第二虚拟地址存在映射关系的上述安全内存空间真实的物理内存地址。
请继续参见图3,当hypervisor控制上述第二MMU,完成针对上述第二虚拟地址的第二级地址映射之后,可以直接将经过第二级地址映射,得到的上述安全内存空间真实的物理内存地址上送至总线;而上述相机硬件中的DMA可以读取上送总线的上述安全内存空间真实的物理内存地址,基于该物理内存地址向TEE一侧的安全内存空间写入采集到的用户的面部图像数据。
由于本次尝试向上述安全内存空间中写入数据时采用的是经过第二级地址映射,得到的上述安全内存空间真实的物理内存地址;因此,上述DMA可以将相机硬件采集到的用户的面部图像数据,成功写入上述安全内存空间。
进一步的,当用户的面部图像数据被成功写入上述安全内存空间后,上述TEE中的安全操作系统中的人脸识别应用(即上述可信应用),可以基于写入上述安全内存空间的用户面部图像数据,对上述用户进行人脸识别处理(即上述安全处理)。
在本说明书中,用户也可以通过操作上述用户操作系统中的相机应用,来访问已经写入上述安全内存空间的用户面部图像数据。
而上述用户操作系统的系统内核,可以在用户通过上述用户操作系统中的相机应用触发了针对已写入上述安全内存空间的用户面部图像数据的访问操作时,响应上述相机应用触发的数据访问指令,进一步获取分配给与上述相机应用对应的用户进程的句柄,并在用户操作系统中查询该句柄指向的第一虚拟内存地址。
在查询到上述第一虚拟内存地址后,执行以上描述的两级地址映射,先控制上述相机硬件中搭载的第一MMU,对上述第一虚拟内存地址进行第一级地址映射,将上述第一虚拟内存地址转换为第二虚拟内存地址;进一步的,再控制上述终端设备搭载的第二MMU,对上述第二虚拟内存地址进行第二级地址映射,将上述第二虚拟内存地址转换为上述安全内存空间真实的物理内存地址,具体的实施细节不再赘述,使得上述相机硬件搭载的DMA可以基于上述安全内存空间真实的物理内存地址,从上述安全内存空间中读取已写入的用户面部图像数据,然后将读取到的用户面部图像数据,返回给上述相机应用。
其中,需要说明的是,对于写入上述安全内存空间的用户面部图像数据,由于其本身是用户隐私数据,因此用户通过相机应用直接访问写入上述安全内存空间的用户面部图像数据的行为,通常是不被允许的。
在实际应用中,上述用户操作系统可以默认关闭用户态进程,从上述安全内存空间访问数据的权限;或者,在另一种情况下,从上述安全内存空间读出的数据,可以默认由TEE进行加密处理,使得上述用户操作系统中的用户态进程,仅能读取到写入上述安全内存空间的数据对应的密文数据,从而可以最大程度的保障用户隐私数据不泄露。
在以上实施例中,以上述用户数据为用户面部图像数据为例进行了详细描述。需要强调的是,在实际应用中,上述用户数据具体也可以是用户指纹数据,用户语音数据等等。相应的,上述可信应用对上述用户数据的安全处理,也可以是指纹识别处理,声纹识别处理等等。
对于上述用户数据为用户指纹数据或者用户语音数据的情形,本说明书不再对具体的实施细节进行详述,本领域技术人员可以基于以上实施例披露的实施细节进行等同实施。
在以上技术方案中,一方面,由于虚拟机之间具有天然的隔离属性;因此,通过并将终端搭载的用户操作系统和TEE,分别运行在由虚拟机管理器管理的虚拟机上,可以实现用户操作系统和TEE之间在根本上的系统隔离,使得用户操作系统无法直接访问TEE中的安全内存空间;
另一方面,由于终端在将采集到的用户数据写入到TEE中的安全内存空间时,用户操作系统除了需要基于数据采集硬件搭载的第一MMU,对与上述安全内存空间对应的目标句柄所指向的第一虚拟内存地址进行第一级地址映射,将上述第一虚拟内存地址转换为第二虚拟内存地址以外,还需要由虚拟机管理器控制终端设备搭载的第二MMU对上述第二虚拟内存地址进行第二级地址映射,才能够得到上述安全内存空间对应的真实物理内存地址;因此,上述安全内存空间对应的真实物理内存地址,不会直接暴露给上述用户操作系统中的用户应用,进而从根本上隔离了上述用户操作系统中的用户态应用进程,通过采集硬件搭载的DMA直接向上述安全内存空间写入用户数据的权限,可以对非法用户通过攻破用户操作系统中的用户应用,对上述安全内存空间中写入的用户数据进行更改的攻击的行为进行有效防护。
与上述方法实施例相对应,本申请还提供了装置的实施例。
与上述方法实施例相对应,本说明书还提供了一种数据隔离装置的实施例。本说明书的数据隔离装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本说明书的数据隔离装置所在电子设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括诸如相机硬件等其他硬件,对此不再赘述。
图5是本说明书一示例性实施例示出的一种数据隔离装置的框图。
请参考图5所述数据隔离装置50可以应用在前述图4所示的电子设备中,其中,所述终端设备搭载了虚拟机管理器;以及,运行在由所述虚拟机管理器管理的第一虚拟机上的用户操作系统,和运行在由所述虚拟机程序管理的第二虚拟机上的可信执行环境;所述可信执行环境包括用于存储所述终端设备采集到的用户数据的安全内存空间;所述装置包括:
采集模块501,响应于所述用户操作系统中的用户应用触发的数据采集指令,调用所述终端设备搭载的数据采集硬件采集用户数据;其中,所述数据采集硬件搭载了第一MMU和DMA;所述用户操作系统维护了与所述安全内存空间对应的句柄;
第一映射模块502,在所述用户操作系统中查询所述句柄指向的第一虚拟内存地址,并由所述第一MMU对所述第一虚拟内存地址进行一级地址映射,将所述第一虚拟内存地址转换为第二虚拟内存地址;
第二映射模块503,将所述第二虚拟内存地址进一步提交至所述虚拟机管理器,由所述虚拟机管理器控制所述终端设备搭载的第二MMU对所述第二虚拟内存地址进行二级地址映射,将所述第二虚拟内存地址转换为所述安全内存空间的物理内存地址;
写入模块504,控制所述DMA基于所述安全内存空间的物理内存地址将所述用户数据写入所述安全内存空间,以由所述可信执行环境中的可信应用对所述用户数据进行安全处理。
在本实施例中,所述装置50还包括:
获取模块505(图5中未示出),所述第一虚拟机对应的虚拟机进程,获取所述第二虚拟机对应的虚拟机进程,通过共享内存的方式传递的与所述安全内存空间对应的句柄;
维护模块506(图5中未示出),在所述用户操作系统中维护所述句柄,并将所述句柄指向为所述用户应用对应的应用进程分配的所述第一虚拟内存地址。
在本实施例中,所述获取模块505:
所述虚拟机管理器为所述第一虚拟机对应的虚拟机进程,和所述第二虚拟机对应的虚拟机进程,创建共享内存;
所述第二虚拟机对应的虚拟进程将与所述安全内存空间对应的句柄写入所述共享内存;以及,所述第一虚拟机对应的虚拟进程从所述共享内存中读取所述句柄。
在本实施例中,所述第二映射模块503:
所述DMA基于所述第二虚拟内存地址向所述安全内存空间写入所述用户数据;
响应于所述DMA向所述安全内存空间写入所述用户数据的写入失败事件,将所述第二虚拟内存地址进一步提交至所述虚拟机管理器。
在本实施例中,所述虚拟机管理器为hypervisor。
在本实施例中,所述虚拟机管理器为Type1hypervisor。
在本实施例中,所述用户数据包括用户面部图像数据;所述安全处理包括针对用户进行人脸识别。
在本实施例中,所述数据采集硬件包括相机硬件;所述相机硬件包括摄像头模组和与摄像头模组连接的SOC主芯片;SOC主芯片包括图像处理芯片和所述第二MMU;所述图像处理芯片包括所述第一MMU和所述DMA。在本实施例中,所述用户数据包括用户指纹数据;所述安全处理包括针对用户进行指纹识别。
在本实施例中,所述用户数据包括用户语音数据;所述安全处理包括针对用户进行声纹识别
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。