一种容器安全校验的方法及装置与流程

未命名 07-14 阅读:108 评论:0


1.本技术涉及安全技术领域,尤其涉及一种容器安全校验的方法及装置。


背景技术:

2.目前,越来越多的电子设备用户对电子设备的安全性越发关注。现有技术提出一种容器技术,该技术架构中,电子设备可以创建多个容器,通常,一个容器中可以运行有多个应用程序。不同容器中的应用程序使用不同的软硬件资源,因此,能够为电子设备上运行的应用程序提供隔离环境,以确保应用程序之间相互不干扰。
3.虽然容器技术能够使得应用程序之间彼此不干扰,避免应用程序之间因资源竞争等因素导致的安全风险,但是,在某些场景中,电子设备的安全风险仍然较高。比如,一旦攻击者攻破操作系统,就可以对容器发起攻击,进而借助容器实现对电子设备的进一步攻击,导致目前的电子设备的安全性仍然较低。


技术实现要素:

4.本技术提供容器安全校验的方法及装置,可以提升电子设备的安全性。
5.为了实现上述目的,本技术实施例提供了以下技术方案:
6.第一方面,提供容器安全校验的方法,该方法可以应用于包括可信执行环境tee和富执行环境ree的电子设备,所述ree中运行有富执行环境操作系统ree os和容器,所述方法包括:
7.所述tee通过所述ree os接收来自所述容器的调用请求,并通过所述ree os获取所述容器的信息。之后,所述tee根据所述容器的信息以及所述调用请求,对所述容器进行安全校验,在所述容器的安全校验通过的情况下,所述tee调用所述安全服务,并向所述容器发送调用所述安全服务得到的相关数据。
8.所述容器的信息包括如下任一项或多项信息:所述容器的镜像的路径、所述容器的镜像的摘要值;所述调用请求用于请求调用所述安全服务。
9.与现有技术中容器运行在安全性相对较弱的ree侧,容易遭受攻击而导致电子设备的安全性较差相比,通过本技术实施例的技术方案,能够对容器进行安全校验,因此,能够尽可能提升容器的安全性,避免因容器被攻击导致的安全风险。此外,借助tee中的代理模块对容器进行安全校验,能够依赖tee的环境安全性,进一步提升安全校验的可靠性,以降低电子设备的安全风险。
10.也就是说,电子设备能够通过tee侧为ree侧容器提供安全防护,确保恶意的容器无法通过安全校验,也就无法使用tee侧的安全能力,进而能够避免攻击者通过恶意容器攻击电子设备,提升电子设备的安全性。
11.在一种可能的设计中,所述方法还包括:
12.在对所述容器进行安全校验,且所述容器的安全校验通过之后,所述方法还包括:
13.所述tee从所述ree os接收所述容器所在的运行环境的信息;所述运行环境是所
述ree中的运行环境;
14.所述tee根据所述运行环境的信息,对所述运行环境进行安全校验。
15.也就是说,tee不仅可以对容器的安全性进行校验,还可以对容器所在环境的安全性进行校验,以便进一步提升电子设备的安全性。
16.这里,以先进行容器校验,后进行运行环境为例进行说明,在另一些实施例中,也可以先校验运行环境,后校验容器。
17.在一种可能的设计中,所述方法还包括:
18.所述tee通过所述ree os获取所述容器的信息之前,所述tee向所述ree os发送第一指示信息,所述第一指示信息用于获取所述容器的信息。
19.在一种可能的设计中,所述方法还包括:存储所述容器对应的安全校验结果,和/或,存储所述运行环境对应的安全校验结果。如此,电子设备可以根据存储的安全校验结果,进行后续操作。比如,若容器的安全校验通过,且容器所在环境的安全校验通过,则允许容器调用安全服务。
20.可选的,存储安全校验结果,可以适用于各种场景,比如但不限于:待创建容器、容器调用安全服务等场景。
21.在一种可能的设计中,所述镜像的相关信息还包括:所述镜像的认证信息,所述认证信息用于校验所述镜像是否可信。
22.第二方面,提供一种容器安全校验的方法,应用于包括可信执行环境tee和富执行环境ree的电子设备,所述ree中运行有容器,所述tee中运行有安全服务,所述方法包括:
23.所述容器生成调用请求,所述调用请求用于请求调用所述安全服务;
24.所述容器向所述tee发送所述调用请求,以使得所述tee使用所述容器的信息对所述容器进行安全校验;
25.在所述容器的安全校验通过的情况下,所述容器接收来自所述tee的调用安全服务得到的相关数据。
26.在一种可能的设计中,所述ree中还运行有容器引擎,所述容器包括tee套接字以及tee客户端应用程序编程接口api,所述容器向所述tee发送所述调用请求,包括:
27.所述容器通过所述tee套接字向所述tee客户端api发送所述调用请求,以使得所述tee客户端api向所述容器引擎发送所述调用请求,并由所述容器引擎向所述tee发送所述调用请求。
28.第三方面,提供一种容器安全校验的方法,应用于包括可信执行环境tee和富执行环境ree的电子设备,所述ree中运行有容器和可行执行环境操作系统ree os,所述方法包括:
29.所述ree os获取所述容器的信息;所述容器的信息包括如下任一项或多项信息:所述容器的镜像的路径、所述容器的镜像的摘要值;
30.所述ree os向所述tee发送所述容器的信息,以使得所述tee根据所述容器的信息对所述容器进行安全校验。
31.在一种可能的设计中,所述ree os获取所述容器的信息,包括:
32.所述ree os扫描所述ree的相关内存,并从所述ree的相关内存中获取所述容器的信息。
33.在一种可能的设计中,所述ree os获取所述容器的信息,包括:
34.所述ree os检测所述容器的相关事件,并根据所述事件获取所述容器的信息。
35.在一种可能的设计中,所述ree os获取所述容器的信息,包括:
36.所述ree os检测所述容器的相关进程,并根据所述进程获取所述容器的信息。
37.在一种可能的设计中,所述方法还包括:
38.所述ree os向所述tee发送所述容器所在的运行环境的信息,以使得所述tee根据所述运行环境的信息,对所述运行环境进行安全校验;所述运行环境是所述ree中的运行环境。
39.在一种可能的设计中于,所述ree os从所述tee接收第一指示信息,所述第一指示信息用于获取所述容器的信息。
40.在一种可能的设计中,所述ree os包括驱动模块tzdriver;
41.所述ree os获取容器的信息,包括:所述ree os通过所述tzdriver获取所述容器的信息。
42.其中,由于ree os获取容器的信息,是借助tzdriver实现的,使得安全校验的可信计算基(trusted computing base,tcb)不依赖于整个ree os,而是可以仅依赖ree os中的部分功能模块(比如tzdriver)以及tee侧的部分功能模块。因此,如果确保tzdriver以及tee侧相应功能模块是可信的,则安全校验的结果通常就是可信的,无需保证整个ree os均为可信的。
43.可选的,所述ree os通过驱动模块扫描所述ree的相关内存,并从所述ree的相关内存中获取所述容器的信息;
44.和/或,所述ree os通过驱动模块检测所述容器的相关事件,并根据所述事件获取所述容器的信息;
45.和/或,所述ree os通过驱动模块检测所述容器的相关进程,并根据所述进程获取所述容器的信息。
46.在一种可能的设计中,所述方法还包括:所述ree os获得所述容器所在的环境的信息;所述环境的信息用于对所述环境进行安全校验。
47.第四方面,提供一种容器安全校验的方法,应用于包括可信执行环境tee和富执行环境ree的电子设备,所述ree中运行有可行执行环境操作系统ree os和容器,所述方法包括:
48.所述电子设备通过所述ree os接收来自容器的调用请求,所述调用请求用于请求调用所述安全服务;
49.所述电子设备通过所述ree os获取容器的信息;所述容器的信息包括如下任一项或多项信息:所述容器的镜像的路径、所述容器的镜像的摘要值;
50.所述电子设备通过tee,根据所述容器的信息以及所述调用请求,对所述容器进行安全校验。
51.在一种可能的设计中,所述方法还包括:
52.所述电子设备通过所述ree os获取所述容器所在的环境的信息;
53.所述电子设备根据所述环境的信息,对所述环境进行安全校验。
54.在一种可能的设计中,所述方法还包括:
55.所述电子设备获取第一指示信息,所述第一指示信息用于对所述容器进行安全校验。
56.在一种可能的设计中,所述方法还包括:所述电子设备存储所述容器对应的安全校验结果,和/或,存储所述环境对应的安全校验结果。
57.第五方面,提供一种容器安全校验的方法,应用于容器已被创景,或未被创建的场景,应用于包括可信执行环境tee和富执行环境ree的电子设备,所述tee中运行有可信执行环境操作系统tee os,所述ree中运行有富执行环境操作系统ree os,所述方法包括:
58.所述tee从所述ree os接收容器的信息;所述容器的信息包括如下任一项或多项信息:所述镜像的路径、所述镜像的摘要值;所述容器可运行在所述ree中;
59.所述tee根据所述容器的信息,对所述容器进行安全校验。
60.在一种可能的设计中,在所述容器未被创建的情况下,在对所述容器进行安全校验之前,所述方法还包括:
61.所述tee从所述ree os接收所述容器所在的启动环境的信息;所述启动环境是所述ree中的启动环境;
62.所述tee根据所述启动环境的信息,对所述启动环境进行安全校验;
63.对所述容器进行安全校验,包括:在所述启动环境的安全校验通过之后,对所述容器进行安全校验。
64.也就是说,tee不仅对容器进行安全校验,还对容器的启动环境进行校验,能够提升电子设备的安全性。
65.这里,以先进行容器校验,后进行启动环境为例进行说明,在另一些实施例中,也可以先校验启动环境,后校验容器。
66.或者,在所述容器已被创建的情况下,所述tee从所述ree os接收所述容器所在的运行环境的信息;所述环境是所述ree中的运行环境;
67.所述tee根据所述运行环境的信息,对所述运行环境进行安全校验
68.在一种可能的设计中,tee从所述ree os接收第二指示信息,所述第二指示信息用于对所述容器进行安全校验。意味着,tee可以主动发起对容器的安全校验流程。
69.当然,tee也可以通过ree os接收来自容器的调用请求,以触发tee对容器进行安全校验。该方式可视为tee对容器的被动校验。
70.在上述任意方面的任意可能的设计中,所述容器的信息还包括如下任一项或多项:所述容器执行系统调用的信息、所述容器访问文件系统的信息、所述容器访问输入输出io设备的信息、所述容器执行中断请求的信息、所述容器读取内存的信息、所述容器调用io设备驱动的信息、所述镜像的认证信息;所述认证信息用于校验所述镜像是否可信。
71.在上述任意方面的任意可能的设计中,所述进行安全校验得到的安全校验结果包括:所述容器的标识以及用于指示所述安全校验是否通过的信息。
72.在上述任意方面的任意可能的设计中,所述运行环境的信息包括如下任一项或多项信息:所述容器对应的命名空间的信息、所述容器的网络配置、所述容器的安全策略。
73.第六方面,本技术提供一种用于容器安全校验的装置,该装置具有实现如上述任意方面及其中任一种可能的实现方式中的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
示例性的,该装置包括上述任意方面中任意设计的代理模块。示例性的,该装置包括上述任意方面中任意设计的ree os。
74.第七方面,本技术提供一种电子设备,该电子设备可以包括:一个或多个处理器;其中,一个或多个处理器包括可信执行环境tee和富执行环境ree,tee为ree提供安全服务;
75.tee中包含可信执行环境操作系统tee os,ree中包含富执行环境操作系统ree os。存储器;以及一个或多个计算机程序。其中一个或多个计算机程序被存储在存储器中,一个或多个计算机程序包括指令。当指令被一个或多个处理器执行时,使得电子设备执行如上述第三方面至第四方面,以及其中任一种可能的实现方式中所述的方法。
76.第八方面,本技术提供一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如上述第一方面至第四方面,以及其中任一种可能的实现方式中所述的方法。
77.第九方面,本技术提供一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行如上述第一方面至第四方面,以及其中任一种可能的实现方式中所述的方法。
78.第十方面,提供一种电路系统,电路系统包括处理电路,处理电路被配置为执行如上述第一方面至第四方面,以及其中任一种可能的实现方式中所述的方法。
79.第十一方面,本技术实施例提供一种芯片系统,包括至少一个处理器和至少一个接口电路,至少一个接口电路用于执行收发功能,并将指令发送给至少一个处理器,当至少一个处理器执行指令时,至少一个处理器执行如上述第一方面至第四方面,以及其中任一种可能的实现方式中所述的方法。
80.第十二方面,本技术实施例提供一种系统,包括上述任意方面的任意设计中的tee以及ree。
附图说明
81.图1为容器与虚拟机的架构示意图;
82.图2为docker技术的架构示意图;
83.图3为软件防护扩展技术的架构示意图;
84.图4为本技术实施例提供的电子设备的架构示意图;
85.图5、图6为本技术实施例提供的电子设备的结构示意图;
86.图7为本技术实施例提供的电子设备的又一架构示意图;
87.图8-图13为本技术实施例提供的容器的安全校验方法的示意图;
88.图14为本技术实施例提供的一种用于实现容器安全校验的装置的结构示意图;
89.图15为本技术实施例提供的一种芯片系统的结构示意图。
具体实施方式
90.首先,对本技术实施例涉及的一些技术术语进行介绍:
91.一、容器(container)技术
92.该技术中,可以基于操作系统级虚拟化(os-level virtualization)技术所创建的用户空间实例,创建的用户空间实例称为容器。容器内可运行有应用程序(app)。不同容
器内运行的应用程序,通常使用不同的软硬件资源,以使得应用程序之间的资源隔离,提升应用程序的安全性。软硬件资源包括但不限于如下任一种或多种:中央处理单元(central processing unit,cpu)、内存、cache、寄存器、外设、cpu运行时、输入输出(input output,io)、网络、网络带宽、文件系统、进程、用户、主机名。示例性的,app1、app2运行在容器1内,app3运行在容器2内,系统允许容器1使用资源1,允许容器2使用资源2。那么,app1、app2可使用资源1中的部分资源,app3可使用资源2中的部分资源。
93.可选的,容器技术中赖以实现资源隔离的内核特性是命名空间(namespace)。将在下文中展开命名空间的具体介绍。
94.容器引擎(container engine):作为实现操作系统级虚拟化的关键引擎,容器引擎运行在用户空间内,并通过调用操作系统内核的能力来创建与管理容器。主流的容器引擎包括docker、lxc与rkt。
95.1.1docker架构
96.这里,以docker为例对容器技术的架构进行介绍。图2展示了docker的逻辑架构图。该架构包括第一电子设备、第二电子设备。
97.可选的,第一电子设备中的docker组件包括:
98.客户端(docker client):用户使用docker client与docker的守护进程(daemon)进行交互。
99.可选的,用户可以向docker client输入命令行,触发docker client向docker daemon发送消息。可选的,该消息用于请求目标操作。可选的,目标操作包括但不限于如下任一种或多种:对容器的操作(如启动、挂起、关闭等)、对镜像的操作等(如构建(build)镜像、拉取(pull)镜像等)。
100.或者,可以通过调用docker client的应用程序编程接口(application programming interface,api),触发docker client向docker daemon发送相应消息。
101.docker的守护进程(daemon):通常运行在用户空间,用来接收基于命令行或者api的消息。在一些示例中,docker daemon相当于图1所示container架构中的container engine。
102.可选的,docker daemon与docker client通常运行在同一主机或设备上。
103.在本技术实施例中,主机还可以称为设备。
104.第二电子设备中运行有库(docker hub),该库用来存储与拉取已被认可的容器镜像。可选的,第二电子设备可以是服务器。
105.在一些示例中,如图2所示,若docker daemon接收来自docker client的消息后,确定需构建镜像,则根据该消息构建相应镜像(比如构建图2所示镜像1)。可选的,docker daemon可以将镜像存储在本地,和/或,将镜像推(push)到第二电子设备(比如服务器)的库中。
106.在一些示例中,如图2所示,若docker daemon接收来自docker client的消息后,确定需拉取镜像,则根据该消息从库中拉取镜像(比如拉取镜像2)。
107.在一些示例中,如图2所示,若docker daemon接收来自docker client的消息后,确定需创建并运行容器,则根据该消息以及获得的镜像,创建镜像对应的容器(比如根据图2所示镜像2构建并运行容器2)。
108.1.2的容器安全相关机制
109.容器的安全性保障依赖于host os内核提供的机制,具体包括但不限于如下任一项或多项机制:
110.命名空间:作为内核提供的一种内核特性,是操作系统级虚拟化技术所依赖的关键能力。一个命名空间内的应用程序无法看到其他namespace内的信息。命名空间内的信息例如可以但不限于是:命名空间内允许使用的文件系统、网络、进程、用户、主机名等信息。
111.作为一种可能的实现方式,命令空间机制中,通过一些相关组件/资源进行分区,使得不同命名空间内的进程看到不同的组件/资源分区,从而实现资源隔离。可选的,相关组件/资源包括但不限于文件系统、进程、用户、主机名以及其他组件。
112.作为一种可能的实现方式,容器引擎可以调用操作系统内核接口,来为容器创建不同的命名空间,从而实现对系统资源的隔离与虚拟化。
113.控制组(control groups,cgroups):控制组是控制系统资源的使用情况以及资源使用上限的内核特性。控制组所控制的系统资源包括但不限于如下任一项或多项:cpu运行时、系统内存、输入输出以及网络带宽。
114.在一些示例中,控制组机制可以用来防止某些进程过度使用系统资源,从而导致其他进程的可用资源耗尽。
115.权能(capability):cpu具有不同的运行特权。不同特权下允许的操作不同。示例性的,对获得root特权的root用户,系统默认赋予所有特权操作。对于非root用户,允许使用权能来获得某个特权操作的权限。再示例性的,权能允许容器内的应用程序获取某方面特权而受到其他特权的约束。例如,web服务器可能需要获取端口绑定的特权,但无法执行其他特权操作。权能对于保护承载容器的宿主系统以防止恶意容器破坏是有效的。
116.安全计算模式(secure computation mode,seccomp):seccomp是用来过滤系统调用的内核特性。其能够用来限制容器所能执行的系统调用,从而有助于防止容器对内核的攻击。
117.安全边界:可以通过部署安全边界区分可信任部分和不可信任部分,对于安全边界内的模块是可信的,安全边界外的模块是不可信的。
118.由于所有的容器共享整个平台的操作系统内核,其安全性能相对于vm级的虚拟化技术在隔离等方面存在不足。容器面对的安全问题具体体现在如下几方面:
119.不可信的容器的镜像:一个不可信的镜像可能包含有漏洞扫描器,漏洞扫描器可以用来扫描目标容器平台上的所有镜像,以便寻找平台上的漏洞,并利用漏洞来进行攻击。
120.拒绝服务攻击:在一些情况下,合法用户无法对部分或者全部系统进行访问,这种导致系统拒绝合法用户的合法访问的攻击,称为拒绝服务攻击。在一些示例中,攻击者可以攻击容器,使得受攻击的容器使用或消耗大量的系统资源,并借此影响、干扰其他容器,使得其他容器的性能下降,系统出现问题,拒绝合法用户的合法访问。
121.容器之间网络资源的弱隔离:在一些情况下,如果恶意的容器能够访问其他容器的网络,那么该恶意容器将能够轻易地进行端口或漏洞扫描,并以发现的具有漏洞的容器来作为攻击目标。被攻破的容器可能大量使用网络,从而造成其他容器的性能下降。在另一些情况下,网络资源的弱隔离还可能导致中间人攻击。
122.不安全的容器运行时:攻击者可能利用运行时的脆弱性或者配置问题,攻击其他
容器。例如,cve-2014-9357与cve-2014-6407能够实现远程代码执行攻击(remote command/code execute,rce)。
123.容器逃逸攻击:容器所使用的是隔离技术,使得容器内的进程无法看到外面的进程,但如果通过一定攻击手段,使得容器可以访问到外面的资源,甚至是获得了宿主主机的权限,这就叫做“容器逃逸”。在该漏洞,使得容器能够攻击承载该容器的宿主系统,并导致一些列的问题,比如导致远程代码执行攻击或者最终攻破宿主系统。再比如,容器对主机文件系统的错误挂载还可能导致数据篡改。
124.在一些示例中,为了防止容器遭受攻击,容器应该拥有尽量少的权限,而且容器所造成的文件系统变化应当被局限在特定的存储卷中。
125.二、虚拟机(virtual machine,vm)技术:该技术中,可以基于hypervisor虚拟化技术创建彼此独立的虚拟计算机,创建的虚拟计算机可简称为虚拟机。虚拟机内可运行用应用程序。不同虚拟机内运行的应用程序,通常使用不同的软硬件资源。
126.2.1虚拟机安全的相关机制
127.名为“a virtual machine introspection based architecture for intrusion detection”的论文中,提出了虚拟机自省(virtual machine introspection,vmi)的概念,用于提升虚拟机的安全性。该论文中提及:以分析虚拟机中运行的软件为目的,在虚拟机外部监测虚拟机内部运行状态的方法,称为vmi。随着对vmi的研究,目前vmi技术更加成熟。该技术中,可以通过一个虚拟机检测、监控其他的虚拟机的运行状态等数据。
128.在一些示例中,vmi技术可以划分为以下三类:
129.内存自省:虚拟机的内存自省主要是完成动态内存分析。通常,虚拟机运行时,重要数据都保存在内存中。可选的,内存中主要保存着进程控制块(process control blocks,pcbs)、寄存器、可加载的内核模块、内核的数据结构和页表信息等。可选的,内存中还包含要被执行的进程的数据段和代码段。
130.通过检测内存中的数据内容,可以恢复一些和系统有关的信息。被恢复的系统相关信息,可以用来对虚拟机进行入侵检测和进程分析等。
131.示例性的,可以在安全虚拟机中有效的监控目标虚拟机的底层状态数据(存储在内存中),并根据目标虚拟机的底层状态数据对目标虚拟机的安全性进行检测或干预目标虚拟机的内部运行状态。其中,目标虚拟机的底层状态数据包括但不限于:cpu、寄存器、i/o控制器寄存器、内存、大容量存储设备以及虚拟bios。
132.以安全虚拟机从内存获得的底层状态数据为二进制串01100

1001(共48比特)为例,安全虚拟机还需将该二进制形式的底层状态数据转换为高层信息,即进行语义重构。
133.在一些示例中,在进行语义重构时需要借助一些软硬件知识,这些软硬件知识可称为语义知识。仍举上述例子,在对01100

1001进行语义重构时,可以借助内核数据结构task_struct等知识,获知二进制串的高层语义是进程标识(process identification,pid)1068对应的进程名getty。安全虚拟机可以根据该高层语义对目标虚拟机进行安全性检测或其他操作。
134.系统事件自省:面向系统事件的自省包括系统调用自省、中断请求自省和i/o设备驱动的自省。其中,系统调用是用户程序向操作系统内核请求进行服务的一种方式。系统调用在一些事件中具有重要的地位,这些事件例如包括但不限于:文件交换、读取内存、读取
页表、和中断请求处理、系统调用。
135.动态进程自省:虚拟机中的许多域都被限定于只能检测特定的某些进程。然而,进程可以涉及到很多方面,比如,对于合法的代码来说,进程包括api函数、用户应用程序和测试代码。对于非法的代码来说,进程又包括恶意软件。对于进程信息的自省,应当在进程整个运行周期的任何时间点都能够进行。同时,进程自省,还要能够检测到一个模块或者一段代码进行的文件调用事件。
136.在一些示例中,进程自省可用来进行代码分析,比如,用于对恶意代码的执行行为进行分析和检测。
137.总体而言,虚拟化环境中,可以通过自省技术得到较为丰富的虚拟机相关信息,并在不同的方向上进行应用,例如应用在如下几个方面:
138.检测虚拟机的内存泄漏状态:内存泄露,是指由于某种原因,程序未释放或无法释放该程序中已动态分配的内存,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
139.虚拟机运行时,内存在不同程度上有泄露的风险,如果泄露累积到一定程度,会将所有内存最终耗尽,造成计算机安全事故。由于虚拟机自省技术对虚拟机的内存状态具有监控能力,因此可以通过虚拟机自省对内存进行实时监控,以检测虚拟机内的进程对消耗的内存大小,从而判断该进程是否故意造成虚拟机的内存泄露。
140.实现虚拟机的入侵检测:根据虚拟机自省获取的虚拟机信息,可以实现入侵检测。相较于传统的入侵检测,通过虚拟机自省实现入侵检测,其优势在于信息捕获工具运行在虚拟机外,无需在每个虚拟机中都部署,增强了隐蔽性和抵抗攻击的能力。
141.在某些情况下,攻击者可能在虚拟机内植入了攻击代码或模块,且采用一些技术手段将该模块隐藏。由于被隐藏模块的一些信息通常会存储在内存中,因此,可以通过内存自省实现入侵检测,检测出被隐藏的模块。在另一些方案中,还可以通过内存自省技术,判断网卡实现模式以及其他功能。
142.度量虚拟机的完整性:在某些攻击场景中,恶意软件会篡改虚拟机内的软件,因此,度量虚拟机的完整性,将有助于判断虚拟机是否被攻击。vim可以利用虚拟化技术的强隔离性,达到度量模块和被度量对象的分离,并能够从虚拟机外部对虚拟机的完整性进行度量。可选的,度量对象包括但不限于如下任一项或多项:进程、内核模块、动态链接库。
143.2.2虚拟机与容器机制的异同
144.图1示出了基于容器与虚拟机的示例性系统架构。在vm架构中,为虚拟机创建独立的虚拟机操作系统(guest os),不同虚拟机运行在相互独立的guest os中。hypervisor负责虚拟化cpu、内存、io等资源,不同guest os使用不同的资源,以实现虚拟机之间的资源隔离。vm技术中,在启动多个vm的场景中,需要启动多vm各自对应的guest os,即需要启动多个guest os,因此,系统引导时间较长,并且,后续,多个guest os运行的资源消耗也相应较多。
145.在container架构中,没有guest os的概念,多个container可以共用(也成共享)底层的主机操作系统(host os)。一方面,由于不同容器共享主机的资源,因此,容器之间的隔离性相较于虚拟机之间的资源隔离性更弱。再一方面,运行在container上的应用程序,可以直接使用主机的资源,或者说支持在host os内核之上直接运行容器内的应用,无需
hypervisor实现资源的虚拟化。因此,相较于vm技术,container技术的cpu、内存利用率更高。再一方面,container直接利用底层的host os,无需启动及运行多个guest os,因此,启动效率较高,运行时消耗资源较少,更加轻量级。例如,使用docker技术,能够在几秒钟之内启动大量的容器。
146.此外,容器技术支持将应用的代码以及相应依赖打包到镜像文件(image)中,并可以从镜像文件创建、启动一个容器。对于一个镜像,可指定一些配置,来启动容器,能够支持快速交付和部署。
147.三、的软件防护扩展(software guard extensions,sgx)技术
148.sgx是一种安全防护技术。图3示出了基于sgx技术的一种cpu架构,该技术提供用户态的可信执行环境(或称为安全环境),即enclave,安全边界只包含cpu和它自身,即仅信任cpu和自身,不信任其他模块,可以抵御高权限的攻击(比如可以抵御来自操作系统的攻击)。用户可以把敏感业务部署在enclave中运行。
149.可信执行环境更安全的原因之一是,可信执行环境其中运行的软件比较小,代码越少,攻击范围越小。即,sgx技术架构中,可信执行环境往往是被裁剪的,功能受限的环境,这样,一旦该可信执行环境用来运行业务,会导致可信执行环境中运行的软件变大,这样就降低了该可信执行环境的安全。可见,虽然能够一定程度上提升业务运行的安全性,但是,在运行较多业务时,可信执行环境的安全性反而降低,进而导致业务运行的安全性可能无法保证。
150.四、的信任区(trustzone)技术
151.当前,较多的移动终端运行arm cpu上,部分服务器运行在arm cpu上。为了提升系统的安全性,arm cpu上可以应用信任区技术作为系统级解决方案。
152.信任区技术是在armv6的版本中被引入的。图4示出了基于信任区技术的cpu的一种架构。其中,基于信任区技术的电子设备(例如:手机,平板电脑等)系统资源划分为两个世界,非安全世界(normal world)和安全世界(secure world)。非安全世界中运行有富执行环境(rich execution environment,ree)。安全世界中运行有可信执行环境(trusted execution environment,tee)。
153.其中,ree也称为普通执行环境,包括运行在通用处理器上的富执行环境操作系统(rich execution environment operating system,ree os)及客户端应用(client application,ca)。
154.需要说明的是,ree并不是指运行在其中的操作系统或者软件是恶意的,而是ree的安全性比tee低。通常,cpu工作在ree时,tee的资源(如寄存器、内存、cache、外设等)是被禁止访问的,一旦cpu试图访问tee的资源,系统将会直接崩溃。
155.在一些示例中,可以将容器部署在ree中,并在容器内部署相应的用户应用程序。
156.tee也称为安全执行环境,可以运行可信执行环境操作系统(trusted execution environment operating system,tee os),为ca提供可信赖的安全服务(例如指纹比对服务,密码校验服务,人脸比对服务等),这些安全服务可以以可信应用(trust application,ta)的形式运行在tee os上。
157.tee可被应用于如下一项或多项用途:1、内容保护机制:对于一些高清电影、音乐等,防止被盗用。2、移动金融服务:手机支付等。3、认证:指纹识别、面部识别等。4、企业或者
政府,机密信息的保护。
158.cpu工作在tee时,它既可以访问ree的资源,又可以访问tee的资源。tee能够提供系统级的安全服务。
159.作为一种可能的实现方式,信任区机制可以通过配置信任区地址空间控制(trustzone address space contoller,tzasc)寄存器和信任区存储适配(trustzone memory adapter,tzma)寄存器,把安全敏感的内存设置为安全内存(secure memory),如此,ree就无法对这片内存进行访问。
160.五、基于信任区的容器隔离性增强系统
161.专利cn108733455b提出了一种基于信任区的容器隔离性增强方法。该方法的核心思想是:将ree的页表管理等机制移到tee,使得ree os无法访问ree的内存,攻击者无法通过ree中的页表读写容器的内存与寄存器等,如此,即便ree os被攻破,也无法访问容器内的数据,从而为ree的容器提供可信执行环境。
162.该方法中,需要对ree os内核进行定制修改,以移除其对容器所在内存的页表等的控制,还需要对tee os内核进行定制修改,以接管ree os内核的部分功能。修改内核的技术难度大,且实现复杂。
163.此外,容器在运行时,需要内存相关的一些操作,比如分配内存、权限的操作。比如,以分配内存操作为例,通常由ree os截取容器的内存分配请求,并传递到tee侧模块,由tee侧模块为容器分配内存,再由tee侧模块将已分配内存的消息通知给ree侧模块。可见,容器进行与操作系统有关的操作过程中,ree侧模块与tee侧模块需频繁交互,导致较多性能开销。再例如,在上下文切换场景中,cpu运行某个容器,之后,cpu需要运行其他进程,那么,cpu需要切换上下文,保存之前运行的容器的相关信息,以便后续根据保存的信息重新调度该容器。在该方案中,一旦发生上下文切换,cpu将运行在tee,执行相关信息的保存等操作,性能开销较高。
164.本技术的说明书以及附图中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理。“第一”、“第二”等字样可以对功能和作用基本相同的相同项或相似项进行区分。例如,第一设备和第二设备仅仅是为了区分不同的设备,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
[0165]“至少一个”是指一个或者多个,“多个”是指两个或两个以上。
[0166]“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
[0167]
此外,本技术的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0168]
需要说明的是,本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例
证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
[0169]
本技术的说明书以及附图中“的(英文:of)”,相应的“(英文corresponding,relevant)”和“对应的(英文:corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
[0170]
本技术描述的系统架构及业务场景是为了更加清楚的说明本技术的技术方案,并不构成对于本技术提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本技术提供的技术方案对于类似的技术问题,同样适用。
[0171]
当需要使用容器时,为了提升容器的安全性,本技术实施例提供一种容器保护的方法。该方法可应用在包括tee和ree的电子设备中。该方法可应用于各种场景,场景包括但不限于云原生(cloud native)场景。
[0172]
可选的,本技术实施例提及的电子设备包括但不限于服务器、智能手机、平板、物联网(internet of things,iot)设备等。
[0173]
以电子设备为手机为例,请参考图5,为本技术实施例提供的手机的一种示例性结构示意图。如图5所示,电子设备100可以包括:处理器,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。
[0174]
其中,上述传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l和骨传导传感器180m等传感器。
[0175]
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0176]
处理器可以包括一个或多个处理单元,例如:处理器可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0177]
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
[0178]
处理器中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器中的存储器为高速缓冲存储器。该存储器可以保存处理器刚用过或循环使用的指令或数据。如
果处理器需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器的等待时间,因而提高了系统的效率。
[0179]
在一些实施例中,处理器可以包括一个或多个接口。
[0180]
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。
[0181]
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
[0182]
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
[0183]
移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g/6g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。
[0184]
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。
[0185]
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器。无线通信模块160还可以从处理器接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
[0186]
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
[0187]
电子设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
[0188]
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,电子设备100可以包括1个或n个显示屏194,n为大于1的正整数。
[0189]
电子设备100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。
[0190]
isp用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头193中。
[0191]
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,电子设备100可以包括1个或n个摄像头193,n为大于1的正整数。
[0192]
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
[0193]
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
[0194]
npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
[0195]
外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
[0196]
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据
区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
[0197]
在本技术的一些实施例中,存储器可以存储有容器的信息。包括但不限于:ree内核为容器提供的namespace序号、ree内核为容器提供的访问控制策略、容器的镜像文件的路径、摘要值、容器的启动参数。
[0198]
电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
[0199]
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。
[0200]
扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170a收听音乐,或收听免提通话。
[0201]
受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170b靠近人耳接听语音。
[0202]
麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170c发声,将声音信号输入到麦克风170c。电子设备100可以设置至少一个麦克风170c。
[0203]
耳机接口170d用于连接有线耳机。耳机接口170d可以是usb接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,omtp)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the usa,ctia)标准接口。
[0204]
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
[0205]
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
[0206]
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
[0207]
sim卡接口195用于连接sim卡。sim卡可以通过插入sim卡接口195,或从sim卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口195可以支持nano sim卡,micro sim卡,sim卡等。同一个sim卡接口195可以同时插入多张卡。多张卡的类型可以相同,也可以不同。sim卡接口195也可以兼容不同类型的sim卡。sim卡接口195也可以兼容外部存储卡。电子设备100通过sim卡和网络交互,实现通话以及数据通信等功能。
[0208]
示例性的,图5仅以电子设备100举例说明本技术实施例中电子设备的结构,但并不构成对电子设备结构、形态的限制。本技术实施例对电子设备的结构、形态不做限制。示
例性的,图6示出了电子设备的另一种示例性结构。如图6所示,电子设备包括:处理器501、存储器502、收发器503。处理器501、存储器502的实现可参见电子设备100的处理器、存储器的实现。收发器503,用于电子设备与其他设备交互。收发器503可以是基于诸如wi-fi、蓝牙或其他通信协议的器件。
[0209]
在本技术另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者替换某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0210]
图7为本技术实施例提供的电子设备可以包括的一种信任区框架结构示意图。
[0211]
示例性的,电子设备包括硬件平台201,arm可信固件(arm trusted firmware,atf)202,以及基于硬件平台201和arm可信固件202的富执行环境(ree)203和可信执行环境(tee)204。
[0212]
该电子设备包括tee、ree。
[0213]
其中,ree中包括容器、容器引擎、ree os。
[0214]
容器:容器中运行有一个或多个客户端应用(比如图7所示的应用a、b),客户端应用可以对ta进行调用,以获取安全服务。客户端应用通常运行在用户态。相比于目前的sgx架构中业务运行在可信执行环境中,本技术实施例中,容器运行在ree,没有运行在tee侧,因此对tee的性能没有影响,tee能够为容器提供高性能的安全服务。
[0215]
需要说明的是,在创建容器之前,ree中运行有客户端,用于可以通过客户端输入创建容器的命令,以使得容器引擎创建容器。创建容器之后,容器内运行的应用程序称为ca。即,客户端可视为容器创建之前,运行在ree中的应用程序,ca可视为容器创建之后,运行在容器内的应用程序。
[0216]
容器引擎:可以通过调用操作系统内核的能力来创建与管理容器。容器引擎中包括teecd进程,teecd进程可以用于ree os与ree os之间进行通信。
[0217]
相关技术中,容器通常不具有调用容器引擎的能力,本技术实施例中,通过在容器中新增tee套接字以及tee客户端api,打通容器到容器引擎(teecd)之间的通路,使得容器具有调用容器引擎的能力,进而容器可以通过容器引擎向tee发送用于请求调用安全服务的请求消息,以便触发tee对容器进行安全校验。
[0218]
ree os:包括ree内核。可以通过tee客户端(client)api、tee套接字(socket)、teecd与tee os进行通信。可选的,运行在ree的客户端应用可以通过调用tee client api与运行在tee的可信应用进行通信,以获取相应安全服务。
[0219]
ree os还包括信任区驱动模块(trustzone driver,tzdriver)。该驱动模块是tee os在ree内核中的驱动,可以用来完成ree os与tee os之间的通信。本技术实施例中,驱动模块可以用于对容器的完整性进行验证或校验。还可以用于对容器所在的环境进行验证。如此,能够避免创建危险容器,或避免危险容器或处于危险环境中的容器调用安全服务,进而提升电子设备的安全性。
[0220]
ree os可以为上层的客户端应用提供接口或系统调用,以实现客户端应用的相应功能。示例性的,ree os提供unshare系统调用(syscall)或unshare接口。容器引擎接收到来自客户端应用的申请创建容器的命令,调用该unshare接口或执行unshare系统调用,以便通知ree os,需要创建容器。ree os获知需要创建容器之后,可以为该待创建的容器创建
命名空间。如此,在创建容器之后,该容器内的客户端应用可以运行在该命名空间中,以便与其他命名空间中的客户端应用相互隔离。
[0221]
tee中包括安全服务、容器证明代理(代理证明模块或代理模块或其他名称)、tee os。tee os中包括安全内核。
[0222]
安全服务:实现了安全业务逻辑,用来为ree内运行的容器提供安全服务。可选的,安全服务包括但不限于密钥管理(key management)、密钥计算、安全存储(storage)、安全时钟、可信显示等安全敏感的服务。安全服务可以以可信应用的形式运行在tee中,一个可信应用可与ree中的客户端应用或tee中的其它可信应用交互。
[0223]
其中,密钥,可以作为访问敏感数据的凭证。为容器存储相应的访问凭证,在容器是可信任的情况下,容器可适用相应密钥访问一些数据。在容器是不可信的情况下,系统将撤销该容器的密钥,因此,该容器将无法访问一些敏感数据。
[0224]
容器证明代理(container attestation agent):通常运行在用户态,根据容器的信息和/或容器的环境信息,完成对ree内容器的环境的安全性判断,和/或完成对容器的安全性判断。“容器证明代理”中包含容器镜像的指纹库(fingerprinter)。可选的,该指纹库包括一些可信的镜像(如官方镜像)的指纹。开发者也可根据需要,使用自己的指纹库。用户可以使用容器镜像签名技术,对镜像进行处理,得到用于验证镜像是否可信的认证信息。可选的,该认证信息可以但不限于是该镜像的数字指纹信息。
[0225]
安全内核:可以提供诸如tee internal api的一些api,可信应用通过调用这些api,使用tee提供的安全存储、密码计算、安全时间和可信显示等安全服务。
[0226]
在一些方案中,ca在调用ta时,tee可以对ca的身份信息进行校验。比如,校验ca是否具有tee分发的签名信息,若签名信息正确,说明ca的身份是正确的,则tee允许ca调用ta。该方案,虽然能够在一定程度上确保ca身份的正确性,但是,该ca可能是被攻击的ca,其代码有可能已被攻击者篡改,但攻击者为了绕过系统的安全防护机制,使用了原来的签名信息。这种情况下,系统很难发现身份正确的ca是否安全,即很难发现该ca是否已被攻击,由此,系统潜在的安全风险较高。
[0227]
为此,本技术实施例提供一种容器安全校验方法,以容器为粒度进行校验。当检测到容器相关的请求,比如创建容器的请求,调用安全服务的请求时,可以获取容器的信息(容器的镜像的路径、所述镜像的摘要值),并根据容器的信息对容器进行安全校验,以便确定该容器的完整性,即确定该容器是否已被篡改。可见,本技术实施例的技术方案,不再局限于验证ca的身份信息,而是考虑验证ca所在容器的完整性。若容器是完整的,即没有被篡改,则说明该容器没有被攻击,能够尽可能避免危险容器调用安全服务带来的安全风险,提升电子设备的安全性。
[0228]
本技术实施例的技术方案可以应用在各种需要保护容器安全的场景中。比如但不限于创建容器的场景、容器调用安全服务的场景、tee主动检测容器安全性的场景。
[0229]
如图8所示,在创建容器的场景中,本技术实施例提供容器的安全创建方法,该方法包括如下步骤:
[0230]
s101、容器引擎从客户端接收用于指示创建容器的第一请求。
[0231]
需要说明的是,本技术实施例中,提及某个消息用于某个用途,指的是并非该消息是专用于该用途的消息,该消息还可能具有其他用途。
[0232]
示例性的,容器引擎比如可以但不限于是图2所示的docker daemon,客户端比如可以但不限于是图2所示的docker client。用户通过客户端与容器引擎进行交互的过程可参见图2对应的文字描述,这里不再赘述。
[0233]
s102、容器引擎向ree os第一请求。
[0234]
s103、ree os创建命名空间。
[0235]
容器引擎从客户端接收用于创建容器的第一请求之后,需要请求ree os为待创建的容器创建新的命名空间。例如,容器引擎向ree os发送第一请求,以便请求调用unshare接口创建命名空间。ree os接收到该第一请求之后,控制cpu进入内核模式,并创建新的命名空间,以便为容器创建隔离环境。处理完系统调用之后,ree os控制cpu返回用户模式,执行用户代码。
[0236]
除了用于创建命名空间之外,本技术实施例中,ree os还用于对容器的完整性度量,以确保待创建的容器是合法容器。作为一种可能的实现方式,ree os创建命名空间之后,调用驱动模块,以触发驱动模块执行完整性度量,以检测待创建容器的完整性。
[0237]
s104、ree os调用驱动模块获取容器的信息。
[0238]
ree os创建命名空间后,调用驱动模块获取容器的信息。作为一种可能的实现方式,驱动模块对ree os相关的内存进行扫描,获取到待创建容器的信息。待创建容器的信息包括但不限于如下任一项或多项:待创建容器的镜像的相关信息。镜像的相关信息包括:文件的路径、镜像文件的摘要值。该一项或多项信息可以称为容器的完整性度量信息,用于度量容器的完整性与安全性。
[0239]
可选的,待创建容器的信息还可以包括待创建容器的启动环境参数。待创建容器的启动环境参数包括但不限于如下任一项或多项:容器网络配置、容器的安全策略。容器的网络配置包括但不限于:容器开放的端口、容器是否可以联网、容器的网络资源。待创建容器的安全策略包括但不限于如下任一种或多种策略:ree os为待创建容器提供的命名空间的序号、强制访问控制(mandatory access control,mac)策略、安全计算模式、权能等。容器的启动环境参数,用于度量容器启动环境的安全性。
[0240]
可选的,ree os相关的内存包括但不限于代码段和数据段。其中,代码段包括但不限于ree os的代码段和驱动代码段。
[0241]
作为另一种可能的实现方式,所述ree os检测所述目标容器相关的事件,并根据所述事件获得所述目标容器的信息。通过该方式可获得的目标容器信息包括如下任一项或多项:容器执行系统调用的信息、容器访问文件系统的信息、容器访问io设备的信息、容器执行中断请求的信息、容器读取内存的信息、容器调用io设备驱动的信息。
[0242]
容器执行系统调用,指的是容器调用rre os。类似的,容器访问文件系统,指的是容器访问ree侧的文件系统;容器访问io设备,指的是访问ree侧的io设备;容器执行中断请求,指的是在ree侧执行中断请求;读取内存,指的是读取ree侧的内存;调用io设备驱动,指的是调用ree侧的io设备驱动。
[0243]
作为另一种可能的实现方式,所述ree os检测所述目标容器相关的进程,并根据所述进程获得所述目标容器的信息。相应的,通过该方式可获得的目标容器信息包括但不限于如下任一项或多项:所述目标容器相关的代码段、所述目标容器相关的数据段。
[0244]
或者,驱动模块还可以通过扫描ree os相关内存、检测容器相关的事件、检测容器
相关的进程,上述多种方式的组合方式获得容器的一种或多种信息,本技术实施例对获得容器信息的方式不进行限制。并且,容器的信息并不局限于本文列举的一种或多种,还可以为其他,只要能验证容器的完整性。
[0245]
可选的,可以通过安全启动过程确保驱动模块的合法、安全性,以便保证所获取的容器信息的准确性。
[0246]
s105、驱动模块向注册模块发送容器的信息。
[0247]
本技术实施例中,驱动模块在对容器进行完整性度量,获得容器的信息之后,需要根据容器的信息,对容器的安全性进行校验。作为一种可能的实现方式,驱动模块将容器的信息发送给tee的注册模块,由注册模块完成安全校验(也称为安全评估,安全验证或其他名称)。
[0248]
s106、驱动模块向注册模块发送第一请求。
[0249]
其中,第一请求携带第二指示信息,用于请求对容器进行安全校验。
[0250]
s107、注册模块根据容器的信息,对容器进行安全校验。
[0251]
作为一种可能的实现方式,注册模块从驱动模块接收第一请求(用于请求创建容器)之后,根据容器的信息,以及镜像的指纹库,对待创建的容器进行安全校验,或者,对容器的安全性进行校验。示例性的,注册模块根据待创建容器的镜像文件的相关信息,比如镜像的路径、镜像文件的摘要值、镜像文件的指纹库,对待创建容器的安全性进行校验。
[0252]
在一些实施例中,容器的镜像的认证信息(比如但不限于指纹信息)也可以包含在容器的信息中。
[0253]
可选的,驱动模块向注册模块发送的容器信息可以是二进制信息,注册模块接收到二级制信息之后,可进行语义重构,得到容器信息对应的确切语义。
[0254]
可选的,注册模块维护待创建的容器的元数据。元数据包括但不限于容器内的进程id。
[0255]
由于注册模块位于tee侧,相较于ree侧的模块,tee侧的注册模块的运行环境更为安全,因此,可提升安全校验结果的可信度。
[0256]
s108、注册模块存储安全校验的结果。
[0257]
可选的,所述安全校验的结果包括:所述容器的标识以及用于指示所述安全校验是否通过的信息。可选的,安全校验的结果还可以包括容器的命名空间的标识。
[0258]
后续,可以根据安全校验的结果,对相应容器进行相应操作。比如,对于安全校验没有通过的容器,禁止该容器内的应用程序调用安全服务。对于安全校验通过的容器,允许该容器内的应用程序调用安全服务。
[0259]
s109、安全校验通过的情况下,注册模块向容器引擎发送第一响应。
[0260]
其中,s109是可选步骤,第一响应用于指示安全校验通过(安全校验成功)或者用于指示创建相应容器,意味着,容器的安全性或可靠性较高,创建该容器通常不会提升系统的安全风险。
[0261]
可选的,注册模块经由tee os向ree os发送第一响应,ree os将第一响应转发给容器引擎。
[0262]
可选的,安全校验没有通过的情况下,注册模块向容器引擎发送第二响应,用于指示安全校验没有通过。
[0263]
s110、容器引擎创建容器。
[0264]
在一些实施例中,若容器引擎从注册模块接收第一响应,则意味着待创建容器的安全校验通过,意味着,创建该容器通常不会提升系统的安全风险,那么,ree内运行的容器引擎根据用户的容器创建请求,以及相应创建逻辑创建该容器。
[0265]
在另一些实施例中,若在预设时间段内,容器引擎没有从注册模块接收用于指示禁止创建容器的信息(比如第二响应),则容器引擎可以创建容器。
[0266]
除了对容器自身的安全性进行验证,在另一些实施例中,注册模块还可以对容器的启动环境进行安全验证。如图9所示,即在图8所示的步骤s107之后,注册模型还可以执行:
[0267]
s201、在对容器的安全校验通过的情况下,根据容器的环境的信息,对容器的环境进行安全校验
[0268]
本技术实施例中,容器的环境包括但不限于容器启动时容器所在的环境(简称为启动环境)以及容器运行时容器所在的环境(简称运行环境)。容器在ree侧中的环境包括但不限于:操作系统为容器提供的资源、操作系统为容器提供的安全特性。该环境是ree中的部分环境。
[0269]
以容器尚未创建为例,作为一种可能的实现方式,注册模块可以扫描ree os相关的内存,并从该内存中获得容器的启动环境的信息,据此对容器的启动环境进行安全校验。示例性的,在某些场景中,操作系统可能是恶意的,或操作系统已被攻击,则操作系统为容器提供的资源可能产生问题,通过上述方法,驱动模块扫描内存获得容器的启动环境参数,并向注册模块发送该容器的启动环境参数,注册模块根据该容器的启动环境参数发现ree os之前为容器配置的资源并没有分配给该容器,那么,注册模块可以据此确定ree os为容器提供的环境是有问题的,对容器启动的安全校验不通过。此种情况下,注册模块拒绝创建容器的请求。反之,在对容器的启动环境的安全校验通过的情况下,注册模块执行步骤s202。
[0270]
s202、注册模块存储安全校验的结果。
[0271]
安全校验的结果包括但不限于如下任一项或多项:容器的标识、容器的命名空间的标识、用于指示安全校验是否通过的信息。
[0272]
s203、对容器的环境的安全校验通过的情况下,注册模块向容器引擎发送第三响应。
[0273]
其中,第三响应用以向容器引擎指示容器以及容器的启动环境均安全。s203作为可选步骤。
[0274]
可选的,对容器的启动环境的安全校验未通过的情况下,注册模块向容器引擎发送第四响应,用于指示容器的启动环境不安全,或启动环境的完整性存在问题。
[0275]
在一些实施例中,容器引擎在接收到第三响应之后,确定容器以及容器的启动环境均安全,因此,可以根据客户端的容器创建请求,创建相应容器。
[0276]
在另一些实施例中,若在预设时间段内,容器引擎没有接收用于禁止创建容器的消息(比如第四响应),则容器引擎创建相应容器。
[0277]
本技术实施例还提供一种可提升容器安全性的方法,容器可以调用tee的安全服务。如图10所示,该方法包括如下步骤:
[0278]
s301、客户端应用向tee套接字发送第二请求。
[0279]
其中,第二请求用于请求使用tee的安全服务。
[0280]
本技术实施例中,客户端应用在调用tee的安全服务时,需要向tee发送第二请求。作为一种可能的实现方式,客户端应用通过tee套接字、tee客户端api以及teecd向驱动模块发送第二请求,再由驱动模块向tee的评估模块发送第二请求。
[0281]
s302、tee套接字向tee客户端api发送第二请求。
[0282]
s303、tee客户端api向teecd发送第二请求。
[0283]
容器通过tee套接字、tee客户端api打通到容器引擎的通路之后,tee客户端api可以与容器引擎交互。比如,向容器引擎中的teecd发送第二请求(即调用请求)。
[0284]
s304、teecd向驱动模块发送第二请求。
[0285]
可以理解,基于容器引擎可以与tee交互,容器引擎中的teecd可以向tee中的驱动模块发送第二请求。
[0286]
s305、驱动模块获取容器的信息。
[0287]
作为一种可能的实现方式,ree os的驱动模块执行完整性度量,可以扫描ree os相关的内存,并获取如下任一项或多项容器的信息:该容器所在的命名空间的标识,容器的镜像文件的路径、镜像文件的摘要值。
[0288]
可选的,驱动模块执行完整性度量,还可以从内存中读取如下任一项或多项容器的信息:该容器在命名空间内运行的进程的信息、ree os对该容器设置/提供的运行环境参数。
[0289]
可选的,容器的运行环境参数(即环境的信息)包括但不限于如下任一项或多项:容器的安全策略、容器开放的端口信息、容器的网络配置、容器对应的命名空间的信息。
[0290]
s306、驱动模块向评估模块发送容器的信息。
[0291]
s307、驱动模块向评估模块发送第二请求。
[0292]
其中,第二请求携带第二指示信息,以使得代理模块对容器进行安全校验。
[0293]
s308、评估模块根据容器的信息,对容器进行安全校验。
[0294]
作为一种可能的实现方式,评估模块接收第二请求(用于请求安全服务)之后,根据容器的信息、镜像的指纹库验证容器的安全性。示例性的,评估模块根据容器的镜像文件的路径、镜像文件的摘要值、镜像文件的指纹库,对容器的安全性进行校验。
[0295]
可选的,在对容器的安全校验通过的情况下,评估模块对容器的运行环境进行校验。可选的,评估模块获得容器的运行环境的信息,并根据运行环境的信息对容器的运行环境进行校验。
[0296]
s309、安全校验通过的情况下,响应于客户端应用的第二请求,评估模块调用安全服务。
[0297]
其中,第二请求用于请求调用安全服务。
[0298]
在一些实施例中,对容器的安全校验通过的情况下,响应于客户端应用的第二请求,评估模块调用安全服务。
[0299]
在另一些实施例中,对容器的安全校验通过,且,对容器的运行环境的安全校验通过的情况下,响应于客户端应用的第二请求,评估模块调用安全服务。
[0300]
反之,若安全校验没有通过,说明容器的安全性不佳,有可能导致系统安全风险,
因此,评估模块不响应来自客户端应用的第二请求。
[0301]
可选的,在安全校验通过的情况下,评估模块(或代理模块中的其他模块)向ree os反馈响应,该响应是调用所述安全服务得到的相关数据。
[0302]
示例性的,若请求调用的安全服务为密钥管理服务,则tee确定容器安全之后,可以向容器反馈密钥管理相关的数据,比如密钥。再示例性的,若请求调用的安全服务为安全时钟服务,则tee确定容器安全之后,可以向容器反馈安全时钟相关的数据,比如系统当前的时间。
[0303]
本技术实施例还提供一种可提升容器安全性的方法,该方法中,tee可主动对容器的安全性进行校验,在确定容器不是恶意容器的情况下,tee可以允许该容器调用安全服务。具体的,如图11,该方法可包括如下步骤:
[0304]
s401、评估模块向驱动模块发送第三请求。
[0305]
其中,第三请求(可以携带第一指示信息)用于获取容器的信息。
[0306]
s402、驱动模块根据第三请求,获取容器的信息。
[0307]
可选的,驱动模块获取容器信息的方式可参见上述实施例,比如,参见上述步骤s305中相关描述。
[0308]
s403、驱动模块向评估模块发送容器的信息。
[0309]
s404、评估模块根据容器的信息,对容器进行安全校验。
[0310]
该步骤的具体实现可参见上述实施例,比如,参见上述步骤s307、s206的相关描述。
[0311]
可选的,评估模块还可以获得容器的运行环境的信息,并根据运行环境的信息,对运行环境进行安全校验。
[0312]
s405、评估模块存储安全校验的结果。
[0313]
其中,安全校验的结果表征该容器是否通过安全校验。可选的,安全校验的结果还用于表征容器所在的环境是否通过安全校验。
[0314]
作为一种可能的实现方式,评估模块存储安全校验的结果,可以指评估模块将安全校验的结果存储在自身,或者,评估模块将安全校验的结果存储在其他模块中。
[0315]
后续,若某个容器内的进程向tee申请调用安全服务,则tee可查询相应存储模块,若查询到已存储的该容器对应的安全校验的结果,且该安全校验的结果指示该容器已通过安全校验,则tee允许该容器内的进程调用安全服务。反之,若安全校验的结果指示该容器未通过安全校验,则tee禁止该容器内的进程调用安全服务。若tee在相应存储模块中没有查询到该容器对应的安全校验的结果,则tee采用前述实施例的方法(比如图8或图9或图10对应的实施例)对该容器进行安全校验,并在该容器的安全校验通过(即校验失败)时,允许该容器内的进程调用安全服务。
[0316]
可选的,评估模块还可以执行如下步骤s406:
[0317]
s406、在安全校验未通过的情况下,评估模块执行第一操作。
[0318]
可选的,第一操作包括(但不限于)发送告警通知、执行密钥撤销、拒绝该容器内的进程调用安全服务。
[0319]
示例性的,安全校验没有通过,说明容器不可信,那么,评估模块可以向容器引擎发送告警通知,以指示容器是不可信的。容器引擎可根据告警通知,拒绝客户端应用的安全
服务调用请求。
[0320]
再示例性的,若对容器的安全校验没有通过,那么,评估模块将撤销为该容器管理的密钥,使得该容器无法凭借密钥访问一些敏感数据。或者,评估模块可以指示tee中的其他模块执行密钥撤销操作。
[0321]
再示例性的,若对容器的安全校验没有通过,那么,评估模块将禁止该容器内的全部进程调用安全服务。比如,当确定某个容器不可信时,若该容器内的进程想获取系统时间,则评估模块拒绝为该进程提供系统时间。
[0322]
需要说明的是,上述方法流程中的步骤仅是示例性的。其中某些步骤还可以替换为其他步骤,或者增加或减少部分步骤。
[0323]
上述各方法实施例的流程中的一些操作任选地被组合,并且/或者一些操作的顺序任选地被改变。
[0324]
并且,各流程的步骤之间的执行顺序仅是示例性的,并不构成对步骤之间执行顺序的限制,各步骤之间还可以是其他执行顺序。并非旨在表明执行次序是可以执行这些操作的唯一次序。本领域的普通技术人员会想到多种方式来对本文的操作进行重新排序。另外,应当指出的是,对于某个方法来说,本文结合本文的其他方法的其他过程的细节同样以类似的方式适用于上文结合该方法。示例性的,图8等方法中,tee获取容器的信息,可以是在s103之后,即检测到第一请求之后,也可以是在检测到第一请求之前,电子设备的tee预先获取容器的信息,以便后续进行安全校验使用。
[0325]
图12示出了本技术实施例的容器安全校验方法的又一方法流程。该方法包括:
[0326]
s501、电子设备获取容器的信息。
[0327]
可选的,电子设备通过ree os获取容器的信息。具体的实现方式可参见上述实施例,这里不再赘述。
[0328]
s502、电子设备根据容器的信息,对容器进行安全校验。
[0329]
具体的安全校验方式,可参见上述实施例,不再赘述。
[0330]
图13示出了本技术实施例提供的又一种容器安全校验的方法,该方法可以应用于包括tee和ree的电子设备,所述ree中运行有ree os、容器和容器引擎,所述tee中运行有tee os以及安全服务。如图13,该方法包括:
[0331]
s601、所述容器生成调用请求。
[0332]
其中,所述调用请求用于请求调用所述安全服务。示例性的,该调用请求可以为图10所示的第二请求。
[0333]
可选的,调用请求可以由容器生成,也可以由容器中请求调用安全服务的客户端应用生成。
[0334]
s602、所述容器向所述tee发送所述调用请求。
[0335]
作为一种可能的实现方式,所述容器向所述tee发送所述调用请求,可以实现为:所述容器通过所述容器引擎向所述tee发送所述调用请求。具体的,如图7所示,容器通过tee套接字、tee客户端api调用容器引擎,由容器引擎向tee发送调用请求。
[0336]
作为一种可能的实现方式,如图7所示,容器引擎向tee发送调用请求,可以实现为:容器引擎调用ree os的驱动模块,驱动模块调用atf,atf再调用tee os,如此,调用请求可以由容器引擎经驱动模块、atf到达tee os。tee通过ree侧的os(ree os)接收来自容器的
调用请求。
[0337]
可选的,该步骤还可以由容器中请求调用安全服务的客户端应用执行。
[0338]
s603、所述tee通过所述ree os获取所述容器的信息。
[0339]
tee获取容器信息的方式可参见上述实施例,这里不再赘述。
[0340]
s604、所述tee根据容器的信息以及调用请求,对所述容器进行安全校验。
[0341]
具体的安全校验方法可参见上述实施例(比如图8-图12对应的实施例),这里不再赘述。
[0342]
可选的,tee还可以对容器所在的环境进行校验,校验的具体方式可参见上述实施例,这里不再赘述。
[0343]
s605、在所述容器的安全校验通过的情况下,tee调用安全服务。
[0344]
s606、tee向容器发送调用安全服务得到的相关数据。
[0345]
相应的,所述容器从所述tee接收调用安全服务得到的相关数据。
[0346]
作为一种可能的实现方式,所述容器从所述tee接收调用安全服务得到的相关数据,包括:
[0347]
所述容器通过所述容器引擎从所述tee接收所述相关数据。
[0348]
相比于相关技术中基于容器需要与外界隔离的技术偏见,未赋予容器与外界通信的能力,比如容器不具有调用tee的能力,导致容器无法调用tee的安全服务,本技术实施例的技术方案,容器能够借助ree中的容器引擎与tee交互,具体的,容器通过容器引擎向tee发送用于请求调用安全服务的请求消息,如此一来,能够触发tee对容器进行安全校验,并在安全校验通过的情况下,允许容器调用安全服务,进而提升容器获得服务的安全性。可见,能够克服目前认为容器与外界通信使得容器的安全性低的技术偏见,既能使得容器与外界通信,又能提升容器获得服务的安全性。
[0349]
图14示出了上述实施例中所涉及的用于实现容器安全校验的装置的一种可能的结构示意图。包括:处理单元1101,存储单元1102,发送单元1103,接收单元1104。该装置可以为代理模块,或ree os,或电子设备,或其他形态的装置。
[0350]
以该装置为包括代理模块的装置为例,处理单元1101,用于支持装置执行图8中的步骤s107,图9中的步骤s201,和/或用于本文所描述的技术的其它过程。
[0351]
以该装置为包括ree os的装置为例,处理单元1101,用于支持装置执行图8中的步骤s103、s104,和/或用于本文所描述的技术的其它过程。
[0352]
以该装置为电子设备为例,处理单元1101,用于支持装置执行图12中的步骤s501、s502,和/或用于本文所描述的技术的其它过程。
[0353]
可选的,处理单元可以实现为图6或图5所示的处理器。
[0354]
存储单元1102,用于支持装置存储安全校验的结果,和/或用于本文所描述的技术的其它过程。
[0355]
可选的,存储单元可以实现为图6或图5所示的相关功能单元(比如存储器)。
[0356]
以该装置是包括代理模块的装置,发送单元1103,用于支持装置执行图8中的步骤s109,图11中的步骤s401,和/或用于本文所描述的技术的其它过程。接收单元1104,用于支持装置执行图8中的步骤s106和步骤s105,图9中的步骤s307,图11中的s403,和/或用于本文所描述的技术的其它过程。
[0357]
以该装置是包括ree os的装置,发送单元1103,用于支持装置执行图8中的步骤s106和步骤s105,和/或用于本文所描述的技术的其它过程。接收单元1104,用于支持装置执行图11中的s401,和/或用于本文所描述的技术的其它过程。
[0358]
可选的,发送单元和/或接收单元可以实现为图6或图5所示的相关单元(比如收发器)。
[0359]
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能单元的功能描述,在此不再赘述。
[0360]
本技术实施例还提供一种芯片系统,如图15所示,该芯片系统包括至少一个处理器1201和至少一个接口电路1202。处理器1201和接口电路1202可通过线路互联。例如,接口电路1202可用于从其它装置接收信号。又例如,接口电路1202可用于向其它装置(例如处理器1201)发送信号。示例性的,接口电路1202可读取存储器中存储的指令,并将该指令发送给处理器1201。当所述指令被处理器1201执行时,可使得电子设备执行上述实施例中的方法中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本技术实施例对此不作具体限定。
[0361]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的方法。
[0362]
本技术实施例还提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的方法。
[0363]
另外,本技术的实施例还提供一种装置,该装置具体可以是组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使装置执行上述各方法实施例中的方法。
[0364]
其中,本技术实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
[0365]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0366]
在本技术所提供的几个实施例中,应该理解到,所揭露的方法,可以通过其它的方式实现。例如,以上所描述的电子设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0367]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目
的。
[0368]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0369]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序指令的介质。
[0370]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种容器安全校验的方法,其特征在于,应用于包括可信执行环境tee和富执行环境ree的电子设备,所述ree中运行有富执行环境操作系统ree os和容器,所述方法包括:所述tee通过所述ree os接收来自所述容器的调用请求;所述调用请求用于请求调用所述安全服务;所述tee通过所述ree os获取所述容器的信息;所述容器的信息包括如下任一项或多项信息:所述容器的镜像的路径、所述容器的镜像的摘要值;所述tee根据所述容器的信息以及所述调用请求,对所述容器进行安全校验;在所述容器的安全校验通过的情况下,所述tee调用所述安全服务,并向所述容器发送调用所述安全服务得到的相关数据。2.根据权利要求1所述的方法,其特征在于,所述容器的信息还包括如下任一项或多项:所述容器执行系统调用的信息、所述容器访问文件系统的信息、所述容器访问输入输出io设备的信息、所述容器执行中断请求的信息、所述容器读取内存的信息、所述容器调用io设备驱动的信息、所述镜像的认证信息;所述认证信息用于校验所述镜像是否可信。3.根据权利要求1或2所述的方法,其特征在于,所述进行安全校验得到的安全校验结果包括:所述容器的标识以及用于指示所述安全校验是否通过的信息。4.根据权利要求1-3任一项所述的方法,其特征在于,在对所述容器进行安全校验,且所述容器的安全校验通过之后,所述方法还包括:所述tee从所述ree os接收所述容器所在的运行环境的信息;所述运行环境是所述ree中的运行环境;所述tee根据所述运行环境的信息,对所述运行环境进行安全校验。5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:所述tee通过所述ree os获取所述容器的信息之前,所述tee向所述ree os发送第一指示信息,所述第一指示信息用于获取所述容器的信息。6.根据权利要求4所述的方法,其特征在于,所述方法还包括:存储所述容器对应的安全校验结果,和/或,存储所述运行环境对应的安全校验结果。7.一种容器安全校验的方法,其特征在于,应用于包括可信执行环境tee和富执行环境ree的电子设备,所述ree中运行有容器,所述tee中运行有安全服务,所述方法包括:所述容器生成调用请求,所述调用请求用于请求调用所述安全服务;所述容器向所述tee发送所述调用请求,以使得所述tee使用所述容器的信息对所述容器进行安全校验;在所述容器的安全校验通过的情况下,所述容器接收来自所述tee的调用安全服务得到的相关数据。8.根据权利要求7所述的方法,其特征在于,所述ree中还运行有容器引擎,所述容器包括tee套接字以及tee客户端应用程序编程接口api,所述容器向所述tee发送所述调用请求,包括:所述容器通过所述tee套接字向所述tee客户端api发送所述调用请求,以使得所述tee客户端api向所述容器引擎发送所述调用请求,并由所述容器引擎向所述tee发送所述调用请求。9.一种容器安全校验的方法,其特征在于,应用于包括可信执行环境tee和富执行环境
ree的电子设备,所述ree中运行有容器和可行执行环境操作系统ree os,所述方法包括:所述ree os获取所述容器的信息;所述容器的信息包括如下任一项或多项信息:所述容器的镜像的路径、所述容器的镜像的摘要值;所述ree os向所述tee发送所述容器的信息,以使得所述tee根据所述容器的信息对所述容器进行安全校验。10.根据权利要求9所述的方法,其特征在于,所述ree os获取所述容器的信息,包括:所述ree os扫描所述ree的相关内存,并从所述ree的相关内存中获取所述容器的信息。11.根据权利要求9或10所述的方法,其特征在于,所述ree os获取所述容器的信息,包括:所述ree os检测所述容器的相关事件,并根据所述事件获取所述容器的信息。12.根据权利要求9-11中任一项所述的方法,其特征在于,所述ree os获取所述容器的信息,包括:所述ree os检测所述容器的相关进程,并根据所述进程获取所述容器的信息。13.根据权利要求9-12中任一项所述的方法,其特征在于,所述容器的信息还包括如下任一项或多项:所述容器执行系统调用的信息、所述容器访问文件系统的信息、所述容器访问输入输出io设备的信息、所述容器执行中断请求的信息、所述容器读取内存的信息、所述容器调用io设备驱动的信息、所述镜像的认证信息;所述认证信息用于校验所述镜像是否可信。14.根据权利要求9-13任一项所述的方法,其特征在于,所述进行安全校验得到的安全校验结果包括:所述容器的标识以及用于指示所述安全校验是否通过的信息。15.根据权利要求9-14任一项所述的方法,其特征在于,所述方法还包括:所述ree os向所述tee发送所述容器所在的运行环境的信息,以使得所述tee根据所述运行环境的信息,对所述运行环境进行安全校验;所述运行环境是所述ree中的运行环境。16.根据权利要求9-15任一项所述的方法,其特征在于,所述方法还包括:所述ree os从所述tee接收第一指示信息,所述第一指示信息用于获取所述容器的信息。17.根据权利要求9-16中任一项所述的方法,其特征在于,所述ree os包括驱动模块tzdriver;所述ree os获取容器的信息,包括:所述ree os通过所述tzdriver获取所述容器的信息。18.一种容器安全校验的方法,其特征在于,应用于包括可信执行环境tee和富执行环境ree的电子设备,所述ree中运行有可行执行环境操作系统ree os和容器,所述tee中运行有安全服务,所述方法包括:所述电子设备通过所述ree os接收来自容器的调用请求,所述调用请求用于请求调用所述安全服务;所述电子设备通过所述ree os获取容器的信息;所述容器的信息包括如下任一项或多项信息:所述容器的镜像的路径、所述容器的镜像的摘要值;所述电子设备通过tee,根据所述容器的信息以及所述调用请求,对所述容器进行安全
校验。19.一种容器安全校验的装置,其特征在于,用于实现如权利要求1-6中任一项所述的方法,或用于实现如权利要求7或8所述的方法,或用于实现如权利要求9-17中任一项所述的方法,或用于实现如权利要求18所述的方法。20.一种容器安全校验的电子设备,其特征在于,包括权利要求19所述的装置。21.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-6中任一项所述的方法,或执行如权利要求7或8所述的方法,或执行如权利要求9-17中任一项所述的方法,或执行如权利要求18所述的方法。22.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求1-6中任一项所述的方法,或执行如权利要求7或8所述的方法,或执行如权利要求9-17中任一项所述的方法,或执行如权利要求18所述的方法。

技术总结
一种容器安全校验的方法及装置,涉及安全技术领域,可以提升电子设备的安全性。该方法应用于包括可信执行环境TEE和富执行环境REE的电子设备,所述REE中运行有富执行环境操作系统REE OS和容器,所述方法包括:所述TEE通过所述REE OS接收来自所述容器的调用请求;所述调用请求用于请求调用所述安全服务;所述TEE通过所述REE OS获取所述容器的信息;所述容器的信息包括如下任一项或多项信息:所述容器的镜像的路径、所述容器的镜像的摘要值;所述TEE根据所述容器的信息以及所述调用请求,对所述容器进行安全校验;在所述容器的安全校验通过的情况下,所述TEE调用所述安全服务,并向所述容器发送调用所述安全服务得到的相关数据。容器发送调用所述安全服务得到的相关数据。容器发送调用所述安全服务得到的相关数据。


技术研发人员:罗武 马长宝 章张锴 陆成刚
受保护的技术使用者:华为技术有限公司
技术研发日:2021.12.31
技术公布日:2023/7/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐