CN112528288A - 可信应用的运行方法、信息处理和内存分配方法及装置 - Google Patents
可信应用的运行方法、信息处理和内存分配方法及装置 Download PDFInfo
- Publication number
- CN112528288A CN112528288A CN201910817794.3A CN201910817794A CN112528288A CN 112528288 A CN112528288 A CN 112528288A CN 201910817794 A CN201910817794 A CN 201910817794A CN 112528288 A CN112528288 A CN 112528288A
- Authority
- CN
- China
- Prior art keywords
- target
- operating system
- memory
- tee
- dynamic library
- 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.)
- Pending
Links
Images
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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2149—Restricted operating environment
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种可信应用程序的运行方法、信息处理方法、内存分配方法及装置,应用于部署有可信执行环境TEE和富执行环境REE的计算机***中,REE上部署有REE操作***,TEE上部署有TEE操作***,TEE操作***上运行一个或多个可信应用程序TA。以其中的一个目标TA为例,目标TA可以提供目标服务,TEE操作***可以启动目标TA,之后,目标TA可以响应于目标服务的运行请求,向TEE操作***发送对支持目标服务的目标动态库的加载请求,TEE操作***可以响应于该加载请求,将目标动态库加载到目标TA的内存空间中。这样,在目标TA运行目标服务之前,无需将用于支持目标服务的程序模块加载至TA的内存空间中,有利用减少TA的内存空间的浪费。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种可信应用程序的运行方法、信息处理方法、内存分配方法及装置。
背景技术
随着移动互联网的发展,智能终端设备的应用越来越广泛。为了提供智能终端设备的丰富功能和可扩展属性,并且保护用户隐私和信息安全,终端设备构建在提供开放式操作环境的富执行环境(rich execution envrironment,REE)和可信执行环境(trustedexecution environment,TEE)之上。REE也被称作一般运行环境,主要包括运行于通用处理器上的富操作***(rich operating system,Rich OS)和运行在Rich OS上的客户端应用程序(client application,CA)。TEE是运行于REE之外的独立运行环境,主要包括运行于可信操作***(trusted operating system,Trusted OS)和运行在Trusted OS上的可信应用程序(trusted application,TA),TEE与REE隔离。REE无法直接访问TEE的硬件和软件资源,例如TEE内存,二者只能通过授权的应用程序编程接口(application programminginterface,API)进行交互。因此TEE能够抵御在REE侧发生的软件攻击。
由于TA在实现某个功能时,需要运行TA的目标文件中代码段的部分代码,并且访问数据段的部分数据,因此,可以在逻辑上将该功能对应的程序段(包括代码和数据)称作该功能对应的程序模块。现有技术中,TEE操作***在启动TA的过程中,将TA的各个功能对应的程序模块均加载至TA的内存空间,TA在收到某个服务的运行请求时,可以利用支持该服务的各个程序模块运行该服务。
随着TEE内部署的TA不断增多,TA的功能不断增加,TEE操作***为TA分配的内存空间越来越大,TEE的安全内存作为TEE的一种有限的安全资源,面临着日趋严峻的挑战。而现有TA的运行方法中,TA可能未收到某个服务的运行请求,而支持该服务的各个程序模块均已被加载至TA的内存空间中,造成TA的内存空间的浪费,进一步增加了TEE的安全内存的压力。
发明内容
本申请实施例提供一种可信应用程序的运行方法、信息处理方法、内存分配方法及装置,用于节约TA的内存空间。
为了保护用户隐私和信息安全,部署有富执行环境(rich executionenvrironment,REE)和可信执行环境(trusted execution environment,TEE)的计算机***的应用越来越广泛,该计算机***的REE内部署有富操作***(rich operating system,Rich OS),或称REE操作***,该REE操作***内一般部署有一个或多个CA,该计算机***的TEE内部署有可信操作***(trusted operating system,Trusted OS),或称TEE操作***,该TEE操作***上一般部署有一个或多个TA,TA一般可以提供一个或多个服务。
以该TEE操作***中部署的某个TA(称作目标TA)和目标TA提供的某个服务(称作目标服务)为例,下面介绍本申请实施例第一方面提供的TA的运行方法。需要说明的是,本申请并不限定TEE操作***中部署的所有TA都按照本申请提供的方法运行。
目标TA运行目标服务的前提是,该TEE操作***启动目标TA,更具体的说法是,该TEE操作***启动目标TA的主进程,并且用于支持目标服务的程序模块(或者说目标TA运行目标服务时所需利用的程序模块)被加载至目标TA的内存空间中。
示例性的,TEE操作***在启动目标TA的过程中,可以将目标TA的目标文件加载至目标TA的内存空间,并创建目标TA的进程来执行该目标文件。该目标文件的类型可以为共享的目标文件(例如.so文件)或可执行文件(例如.os文件)或其他类型的文件,在本申请实施例中,不对该目标文件的具体类型进行限定。示例性的,在本申请实施例中,以目标文件为可执行文件为例,该目标文件保存了能够直接加载到内存中执行的二进制代码。动态库(一般为.so文件)和可执行文件(一般为.os文件)一般都是可执行和可链接格式(executable and linkable format,ELF)格式的文件。
本申请实施例中,在编译目标TA的目标文件时,未将支持目标服务的部分或全部程序模块复制到该目标文件中,而是将这部分程序模块单独编译为共享的目标文件,例如动态库,为了便于描述,将这部分程序模块编译得到的动态库称作目标动态库,目标动态库包括函数的代码,或者说包括符号(如变量或函数调用等)的定义,将目标动态库中的符号的引用(比如引用对象的标识)及其他登记信息(比如符号表和重定位信息等)添加在该目标文件中。TEE操作***可以响应于目标TA的创建请求启动目标TA;目标TA被启动后,可以接收CA或其他TA发送的目标服务的运行请求,或自发启动(或产生)目标服务的运行请求,之后,目标TA响应于该运行请求,可以向TEE操作***发送加载请求,该加载请求用于指示TEE操作***加载目标动态库。TEE操作***可以接收目标TA发送的该加载请求,响应于该加载请求,TEE操作***可以将目标动态库加载到目标TA的内存空间中,之后,目标TA可以利用自己的内存空间中的目标动态库运行目标服务。
下面对本申请实施例第一方面提供的TA的运行方法的有益效果进行分析:
1)本申请实施例第一方面提供的TA的运行方法中,TEE操作***可以在目标TA接收到目标服务的运行请求后,将用于支持目标服务的目标动态库加载至目标TA的内存空间,使目标TA利用目标动态库运行目标服务,这样,在TEE操作***启动目标TA的过程中,或者,在目标TA接收到目标服务的运行请求之前,无需将用于支持目标服务的程序模块加载至TA的内存空间中,有利用减少TA的内存空间的浪费。
2)由TEE操作***将目标动态库加载至目标TA中,无需为目标TA配置加载目标动态库的权限,例如具体的,无需为目标TA配置对目标存储区域进行访问和配置属性的权限,有利于提高TEE的安全性。其中,目标存储区域存储有目标动态库,为TEE的存储区域中目标TA的内存空间以外的其他存储空间。
需要说明的是,目标TA利用目标动态库运行目标服务,并不是限定目标TA仅利用目标动态库便可以运行目标服务,而是限定目标TA运行目标服务至少需要利用目标动态库。
前面所说的“目标TA运行目标服务的前提是,该TEE操作***启动目标TA”,不是限定目标TA运行目标服务的过程中,TEE操作***均需启动目标TA,而是限定,目标TA运行目标服务前,TEE操作***至少执行一次启动目标TA的步骤,使目标TA进入运行状态,可以接收或自发产生目标服务的运行请求。
TEE操作***将目标动态库加载到目标TA的内存空间的过程,作为举例,可以具体包括,TEE操作***将目标动态库映射或装载到目标TA的内存空间,之后进行符号解析和重定位,使目标动态库链接至该目标文件。其中,符号解析可以理解为将目标动态库中的符号的定义与目标文件中的符号的引用进行关联;重定位可以理解为根据目标动态库的内存位置将目标文件中的符号指向内存中的相应位置。在一些实现方式中,TEE操作***还可以对目标动态库对应的内存配置相应属性,例如,将目标动态库中代码段对应的内存配置为可执行属性,将目标动态库中数据段对应的内存配置为只读属性。
可以认为TEE的内存包括映射给TA的内存,在本申请实施例中可以称作TA的内存空间,或者称作TA的内存;TEE的内存还包括映射给TEE操作***的内存,在本申请实施例中可以称作TEE操作***的内存空间,或者称作TEE操作***内存;同样的,可以认为REE的内存包括映射给CA的内存,在本申请实施例中可以称作CA的内存空间,或者称作CA的内存;REE的内存还包括映射给REE操作***的内存,在本申请实施例中可以称作REE操作***的内存空间,或者称作REE操作***内存。在本申请部分实施例中,TA运行服务或被表述为TA执行服务,在本申请实施例中,可以认为运行服务和执行服务具有相同的含义。
基于本申请实施例第一方面提供的方法,在本申请实施例第一方面的第一种可能的实现方式中,在TEE操作***接收到该加载请求前,目标动态库已存储在TEE操作***的内存空间,TEE操作***响应于加载请求加载目标动态库到目标TA的内存空间中,可以包括:响应于该加载请求,TEE操作***可以从TEE操作***的内存空间加载目标动态库到目标TA的内存空间中,目标动态库加载至目标TA的内存空间的效率高,有利于提高目标服务的完成效率。
基于本申请实施例第一方面提供的方法,在本申请实施例第一方面的第二种可能的实现方式中,目标动态库可以存储在REE的存储设备(例如ROM)中,TEE操作***响应于加载请求加载目标动态库到目标TA的内存空间中,可以包括:响应于该加载请求,TEE操作***可以从REE操作***获取目标动态库,获取到目标动态库之后,TEE操作***可以将目标动态库加载到目标TA的内存空间中。
由于目标动态库可以存储在REE的存储设备中,有利于节约TEE的存储资源;TEE操作***可以在接收到该加载请求后,从REE操作***获取目标动态库,因此,若目标TA未接收到目标服务的运行请求,TEE操作***可以不用将目标动态库从REE的存储设备获取至TEE的存储设备中,有利于进一步节约TEE的存储资源。
在本申请实施例第一方面的第二种可能的实现方式中,目标动态库可以存储在REE的存储设备中,基于本申请实施例第一方面的第二种可能的实现方式,在本申请实施例第一方面的第三种可能的实现方式中,响应于该加载请求,TEE操作***从REE操作***获取目标动态库,可以包括:响应于该加载请求,TEE操作***可以向REE操作***发送目标动态库的传递请求,之后,TEE操作***可以接收REE操作***发送的目标动态库。
本实现方式中不限定TEE操作***发送的传递请求的具体内容及内容形式,只要REE操作***可以响应于该传递请求将目标动态库发送到TEE操作***即可,例如,该传递请求可以包括目标动态库的标识,REE操作***可以按照目标动态库的标识从REE的存储设备中查找目标动态库。
在本申请实施例第一方面的第二种可能的实现方式和第一方面的第三种可能的实现方式中,“TEE操作***可以从REE操作***获取目标动态库”,不是限定TEE操作***从REE操作***获取到可以直接加载到目标TA的内存空间的目标动态库,在一些实施方式中,TEE操作***可以对从REE操作***获取的信息进行处理后得到目标动态库,示例性的,由于REE的安全性较差,为了提高REE中保存的目标动态库的安全性,可以对目标动态库进行加密,得到加密文件,之后将加密文件保存在REE的存储设备中。基于本申请实施例第一方面的第二种可能的实现方式,在本申请实施例第一方面的第四种可能的实现方式中,响应于该加载请求,TEE操作***从REE操作***获取目标动态库可以包括:响应于目标TA发送的该加载请求,TEE操作***可以从REE操作***获取该加密文件,之后对加密文件进行解密,可以得到目标动态库。基于本申请实施例第一方面的第三种可能的实现方式,在本申请实施例第一方面的第五种可能的实现方式中,TEE操作***接收REE操作***发送的目标动态库,可以包括:TEE操作***接收REE操作***传递的该加密文件,之后,TEE操作***对该加密文件进行解密,得到目标动态库。
在本实现方式中,并不限定对加密文件解密得到的信息仅为目标动态库,因此,可以将对加密文件进行解密后的文件称作解密文件,该解密文件至少包括目标动态库,此外,在一些实现方式中,该解密文件还可以包括其他信息,例如在下文中的本申请第一方面的第九种可能的实现方式中,该解密文件还可以包括用于指示某个TA是否具有调用目标动态库的权限的信息,简称为目标权限信息。
为了提高目标动态库的安全性,除了将其加密存储在REE中,可选的,在一些实现方式中,还可以对目标动态库进行签名,对签名用于验证信息的真实性,对目标动态库进行加密和签名,示例性的,可以具体为:
1)对目标动态库进行加密得到加密信息,之后生成加密信息的签名。TEE操作***可以从REE操作***获取目标动态库对应的加密信息和标准签名,先验证加密信息的签名与标准签名是否一致,若不一致,则判定目标动态库不安全,获取目标动态库失败,若一致,再对加密信息进行解密,得到目标动态库。
或者,2)生成目标动态库的签名,之后对目标动态库和其签名进行加密得到加密信息。TEE操作***可以从REE操作***获取目标动态库对应的加密信息,对加密信息解密得到目标动态库和标准签名,TEE操作***可以验证目标动态库的签名与标准签名是否一致,若不一致,则判定目标动态库不安全,判定获取目标动态库失败,若一致,判定成功获取到目标动态库。
和前述本申请实施例第一方面的第二种可能的实现方式相似的,基于本申请实施例第一方面提供的方法或者本申请实施例第一方面的第一种可能的实现方式,在本申请实施例第一方面的第六种可能的实现方式中,目标动态库也可以存储在REE的存储设备中;不同点主要在于,前述本申请实施例第一方面的第二种可能的实现方式中,目标动态是由TEE操作***响应于目标TA发送的加载请求从REE操作***获取的,而在本申请实施例第一方面的第六种可能的实现方式中,目标动态库是由REE侧响应于目标TA发送的第一传递请求发送给TEE操作***的。下面对本申请实施例第一方面的第六种可能的实现方式中进行具体介绍。
在本申请实施例第一方面的第六种可能的实现方式中,REE侧包括REE操作***和向目标TA发送目标服务的运行请求的CA(本申请实施例中称作目标CA),REE操作***上部署的目标CA具有调用目标TA运行目标服务的权限,目标TA接收到目标CA发送的目标服务的运行请求后,可以向目标CA发送第一传递请求;响应于该第一传递请求,目标CA可以向REE操作***发送第二传递请求;响应于该第二传递请求,REE操作***可以将目标动态库发送给TEE操作***。下面介绍两种具体的实现方式:
1)为目标CA配置了访问REE的目标存储区域的权限,目标存储区域中存储有目标动态库,响应于第一传递请求,目标CA可以在目标存储区域中读取目标动态库,之后向REE操作***发送第二传递请求,响应于第二传递请求,REE操作***将目标CA读取的目标动态库发送给TEE操作***;
2)目标存储区域中存储有目标动态库,响应于第一传递请求,目标CA可以向REE操作***发送第二传递请求,响应于第二传递请求,REE操作***可以从目标存储区域中读取目标动态库,之后,将目标动态库发送给TEE操作***。
本实现方式中不限定第一传递请求和第二传递请求的具体内容及内容形式,只要目标CA可以响应于第一传递请求向REE操作***发送第二传递请求,并且,REE操作***可以响应于第二传递请求将目标动态库发送到TEE操作***即可。例如,第一传递请求和第二传递请求均可以包括目标动态库的标识,REE操作***可以按照目标动态库的标识从REE的存储设备中查找目标动态库。
基于本申请实施例第一方面或第一方面的第一种可能的实现方式至第一方面的第六种可能的实现方式中任意一种可能的实现方式,在本申请实施例第一方面的第七种可能的实现方式中,TEE操作***启动目标TA的过程中,可以将目标TA的目标文件加载至目标TA的内存空间,该目标文件中记录了目标TA在运行服务的过程中所需利用的各个动态库,例如记录了代表各个动态库的标识,目标文件中记录的各个动态库可以存储在REE中,以节约TEE的存储资源,TEE操作***启动目标TA的过程中,TEE操作***可以从该目标文件中读取一个或多个动态库的标识,之后从REE操作***获取相应的一个或多个动态库,并将获取到的各动态库存储在TEE操作***的内存空间中。
TEE操作***在启动目标TA的过程中获取的动态库可以为该目标文件中记录的全部动态库,或者,为了节约TEE的存储资源,也可以为该目标文件中记录的部分动态库。TEE操作***接收到目标动态库的加载请求时,若目标动态库已预先被存储在TEE操作***中,将会提高TEE操作***将目标动态库加载至目标TA的内存空间的效率。
若TEE操作***在启动目标TA的过程中仅预先获取目标文件中记录的部分动态库,为了提高预先获取的动态库被目标TA调用的几率,TEE操作***可以从目标文件中记录的各动态库中预测被调用的几率更高的一个或多个动态库,在启动目标TA的过程中获取预测到的相应动态库。
TEE中的不同TA之间是相互独立的,TA不能未经授权访问另一个TA的安全资源,目标动态库可被视为目标TA的安全资源,为了提高TEE的安全性,基于本申请实施例第一方面或第一方面的第一种可能的实现方式至第一方面的第六种可能的实现方式中任意一种可能的实现方式,在本申请实施例第一方面的第八种可能的实现方式中,TEE操作***可以为目标动态库设置目标权限信息,目标权限信息用于表示哪些TA具有调用目标动态库的权限,或者表示哪些TA不具有调用目标动态库的权限,示例性的,目标权限信息可以包括具有调用目标动态库的权限的TA的标识。响应于目标动态库的加载请求,TEE操作***加载目标动态库到目标TA的内存空间中,可以包括:响应于目标动态库的加载请求,TEE操作***根据该目标权限信息判断目标TA是否具有调用目标动态库的权限,基于所述目标TA具有调用所述目标动态库的权限,TEE操作***可以将目标动态库加载到所述目标TA的内存空间中。
基于本申请实施例第一方面的第八种可能的实现方式,在本申请实施例第一方面的第九种可能的实现方式中,为了防止目标权限信息被篡改,并且便于TEE操作***查找目标动态库对应目标权限信息,可以将目标权限信息与目标动态库共同加密为同一加密文件,TEE操作***需要获取目标动态库时,可以对该加密文件进行解密,得到的解密文件包括目标权限信息和目标动态库,之后,可选的,TEE操作***可以将目标权限信息和目标动态库关联存储在TEE操作***的内存空间中。
继续以该TEE操作***中部署的某个TA(称作目标TA)和目标TA提供的某个服务(称作目标服务)为例,介绍本申请实施例第二方面提供的TA的运行方法。
目标TA运行目标服务的前提是,该TEE操作***启动目标TA,更具体的说法是,该TEE操作***启动目标TA的主进程,并且用于支持目标服务的程序模块(或者说目标TA运行目标服务时所需利用的程序模块)被加载至目标TA的内存空间中。本申请实施例中,将支持目标服务的部分或全部程序模块封装为共享的目标文件,或者具体称作目标动态库。
在前述第一方面提供的TA的运行方法和第一方面的各个实现方式中,TEE操作***启动目标TA后,响应于目标服务的运行请求,目标TA向TEE操作***发送目标动态库的加载请求,响应于该加载请求,TEE操作***将目标动态库加载到目标TA的内存空间中;而在本申请实施例第二方面提供的TA的运行方法中,可以为目标TA配置加载动态库的权限,TEE操作***可以启动目标TA,之后,TEE操作***可以为目标TA提供目标动态库,响应于目标服务的运行请求,目标TA可以将目标动态库加载至目标TA的内存空间中,利用目标动态库运行目标服务。下面对本申请实施例第二方面提供的TA的运行方法的有益效果进行分析:
1)现有TA的运行方法中,TEE操作***在启动TA的过程中,将启动TA所需的程序段和TA能够实现的各个功能对应的程序模块均加载至TA的内存空间,和现有技术不同的是,本申请实施例第二方面提供的TA的运行方法中,TEE操作***可以在启动目标TA后,再为目标TA提供运行目标服务所需加载的目标动态库,从而有利于实现,在目标TA接收目标服务的运行请求之前,不将目标动态库加载至目标TA的内存空间中,在目标TA接收到目标服务的运行请求后,目标TA将TEE操作***提供的目标动态库加载至目标TA的内存空间,进而有利于减少TA的内存空间的浪费。
2)由目标TA加载目标动态库,有利于实现TEE中TA与TEE操作***的解耦,方便TA和TEE操作***的升级,并且,有利于减少TEE操作***的操作。
需要说明的是,目标TA利用目标动态库运行目标服务,并不是限定目标TA仅利用目标动态库便可以运行目标服务,而是限定目标TA运行目标服务至少需要利用目标动态库。
目标TA加载目标动态库的过程可以参考前述第一方面TEE操作***加载目标动态库的过程描述,此处不再赘述。作为举例,为目标TA配置加载动态库的权限,可以具体理解为,为目标TA配置对TEE的目标存储区域进行访问和配置属性(可执行或可读等)的权限,目标存储区域为保存目标动态库的存储区域。
TEE操作***为目标TA提供目标动态库,示例性的,可以理解为,目标TA所需加载的目标动态库库需要由TEE操作***获取,之后,目标TA将TEE操作***获取到的目标动态库加载至目标TA的内存空间;还可以理解为,目标TA需要访问TEE操作***的内存空间来将目标动态库加载到目标TA的内存空间;还可以理解为前两种实现方式的组合,例如,目标TA所需加载的目标动态库由TEE操作***获取,并且,由TEE操作***将获取到的目标动态库保存在TEE操作***的内存空间中等。下面提供的本申请第二方面的具体实现方式继续对“TEE操作***为目标TA提供目标动态库”进行介绍。
基于本申请实施例第二方面提供的方法,在本申请实施例第二方面的第一种可能的实现方式中,目标TA可以响应于目标服务的运行请求向TEE操作***发送获取请求,该获取请求用于指示TEE操作***获取该目标动态库;TEE操作***为目标TA提供目标动态库,可以包括:TEE操作***可以接收目标TA发送的获取请求,在接收到该获取请求之后,TEE操作***可以获取该目标动态库。TEE操作***获取到目标动态库之后,可以将目标动态库保存在TEE的内存中,例如保存在TEE的缓存中。在本实现方式中,TEE操作***可以在目标TA接收到目标服务的运行请求之后获取该目标动态库,有利于节约TEE的内存。
基于本申请实施例第二方面的第一种可能的实现方式,在本申请第二方面的第二种可能的实现方式中,目标动态库可以存储在REE的存储设备中,以节约TEE的存储资源,此时,TEE操作***获取目标动态库,可以包括:TEE操作***从REE操作***获取目标动态库。
在本申请第二方面的第二种可能的实现方式中,“TEE操作***可以从REE操作***获取目标动态库”,不是限定TEE操作***从REE操作***获取到可以直接加载到目标TA的内存空间的目标动态库,在一些实施方式中,TEE操作***可以对从REE操作***获取的信息进行处理后得到目标动态库,示例性的,由于REE的安全性较差,为了提高REE中保存的目标动态库的安全性,可以对目标动态库进行加密,得到加密文件,之后将加密文件保存在REE的存储设备中。例如,基于本申请实施例第二方面的第二种可能的实现方式,在本申请第二方面的第三种可能的实现方式中,TEE操作***从REE操作***获取目标动态库,可以包括:TEE操作***从REE操作***获取加密文件;TEE操作***对加密文件进行解密,得到解密文件,解密文件包括目标动态库。
为了提高目标动态库的安全性,除了将其加密存储在REE中,可选的,在一些实现方式中,还可以对目标动态库进行签名,对签名用于验证信息的真实性,对目标动态库进行加密和签名,示例性的,可以具体为:
1)对目标动态库进行加密得到加密信息,之后生成加密信息的签名。TEE操作***可以从REE操作***获取目标动态库对应的加密信息和标准签名,先验证加密信息的签名与标准签名是否一致,若不一致,则判定目标动态库不安全,获取目标动态库失败,若一致,再对加密信息进行解密,得到目标动态库。
或者,2)生成目标动态库的签名,之后对目标动态库和其签名进行加密得到加密信息。TEE操作***可以从REE操作***获取目标动态库对应的加密信息,对加密信息解密得到目标动态库和标准签名,TEE操作***可以验证目标动态库的签名与标准签名是否一致,若不一致,则判定目标动态库不安全,判定获取目标动态库失败,若一致,判定成功获取到目标动态库。
基于本申请实施例第二方面的第二种可能的实现方式,在本申请实施例第二方面的第四种可能的实现方式中,提供了TEE操作***从REE操作***获取目标动态库的一种具体方式,具体可以包括:TEE操作***向REE操作***发送目标动态库的传递请求,该传递请求包括目标动态库的标识,该传递请求用于指示REE操作***将目标动态库发送到TEE操作***,之后,TEE操作***可以接收REE操作***发送的目标动态库。
基于本申请实施例第二方面的第一种可能的实现方式,在本申请第二方面的第五种可能的实现方式中,目标动态库可以存储在REE的存储设备中,以节约TEE的存储资源,并且,目标服务的运行请求由部署在REE操作***的目标客户端应用程序CA发送,目标CA有调用目标服务的权限,响应于目标服务的运行请求,目标TA可以向目标CA发送第一传递请求,目标CA响应于第一传递请求可以向TEE操作***发送第二传递请求,响应于第二传递请求,REE操作***可以将目标动态库发送给TEE操作***,第二方面的第一种可能的实现方式中所说的“TEE操作***为目标TA提供目标动态库”,可以包括:TEE操作***接收REE操作***响应于第二传递请求发送的目标动态库。
基于本申请实施例第二方面或第二方面的任意一种可能的实现方式,在本申请第二方面的第六种可能的实现方式中,TEE操作***启动目标TA的过程中,可以将目标TA的目标文件加载至目标TA的内存空间,该目标文件中记录了目标TA在运行服务的过程中所需利用的各个动态库,例如记录了代表各个动态库的标识,目标文件中记录的各个动态库可以存储在REE中,以节约TEE的存储资源,TEE操作***启动目标TA的过程中,TEE操作***可以从该目标文件中读取一个或多个动态库的标识,之后从REE操作***获取相应的一个或多个动态库,并将获取到的各动态库存储在TEE操作***的内存空间中。
TEE操作***在启动目标TA的过程中获取的动态库可以为该目标文件中记录的全部动态库,或者,为了节约TEE的存储资源,也可以为该目标文件中记录的部分动态库。TEE操作***接收到目标动态库的加载请求时,若目标动态库已预先被存储在TEE操作***中,将会提高TEE操作***将目标动态库加载至目标TA的内存空间的效率。
若TEE操作***在启动目标TA的过程中仅预先获取目标文件中记录的部分动态库,为了提高预先获取的动态库被目标TA调用的几率,TEE操作***可以从目标文件中记录的各动态库中预测被调用的几率更高的一个或多个动态库,在启动目标TA的过程中获取预测到的相应动态库。
基于本申请实施例第二方面或第二方面的任意一种可能的实现方式,在本申请实施例第二方面的第七种可能的实现方式中,TEE操作***可以将目标动态库保存在TEE操作***的内存空间,目标TA可以通过访问TEE操作***的内存空间来加载目标动态库。为了提高TEE操作***的内存空间中信息的安全性,TEE操作***可以为TEE操作***的内存空间设置访问权限,例如,TEE操作***为目标TA提供目标动态库,可以包括:TEE操作***接收目标TA发送的访问请求,访问请求用于请求访问TEE操作***的内存空间;响应于目标TA的访问请求,TEE操作***可以判断目标TA是否具有访问TEE操作***的内存空间的权限,若判定目标TA具有访问TEE操作***的内存空间的权限,TEE操作***可以向目标TA发送允许访问信息,该允许访问信息用于通知目标TA访问TEE操作***的内存空间。目标TA接收到该允许访问信息后,便可以访问TEE操作***的内存空间,将其中的目标动态库加载至自己的内存空间。
基于本申请实施例第二方面的第七种可能的实现方式,在本申请实施例第二方面的第八种可能的实现方式中,为了进一步提高TEE操作***的内存空间中保存的目标动态库的安全,TEE操作***可以对目标动态库调用权限,那么目标TA发送的访问请求需要指示目标TA在TEE操作***中访问的具体文件,若目标TA的访问请求用于请求访问所述目标动态库,TEE操作***向目标TA发送允许访问信息可以具体包括:基于所述目标TA具有访问所述TEE操作***的内存空间的权限,TEE操作***判断目标TA是否具有调用目标动态库的权限,基于目标TA具有调用目标动态库的权限,TEE操作***向目标TA发送允许访问信息。
继续以该TEE操作***中部署的某个TA(称作目标TA)和目标TA提供的某个服务(称作目标服务)为例,介绍本申请实施例第三方面提供的TA的运行方法。
目标TA运行目标服务的前提是,该TEE操作***启动目标TA,更具体的说法是,该TEE操作***启动目标TA的主进程,并且用于支持目标服务的程序模块(或者说目标TA运行目标服务时所需利用的程序模块)被加载至目标TA的内存空间中。本申请实施例中,将支持目标服务的部分或全部程序模块封装为共享的目标文件,或者具体称作目标动态库。
和前述本申请实施例第二方面提供的方法类似,在本申请实施例第三方面提供的TA的运行方法中,可以为目标TA配置加载动态库的权限,响应于目标服务的运行请求,目标TA可以将目标动态库加载至目标TA的内存空间中,之后,可以利用目标动态库运行目标服务。下面对本申请实施例第三方面提供的TA的运行方法的有益效果进行分析:
1)现有TA的运行方法中,TEE操作***在启动TA的过程中,将启动TA所需的程序段和TA能够实现的各个功能对应的程序模块均加载至TA的内存空间,和现有技术不同的是,本申请实施例第二方面提供的TA的运行方法中,目标TA可以在接收到目标服务的运行请求之后,再将目标动态库加载至目标TA的内存空间中,那么,在接收到目标服务的运行请求之前,目标TA可以无需将目标动态库加载到目标TA的内存空间中,进而有利于减少目标TA的内存空间的浪费。
2)由目标TA加载目标动态库,有利于实现TEE中TA与TEE操作***的解耦,方便TA和TEE操作***的升级,并且,有利于减少TEE操作***的操作。
需要说明的是,目标TA利用目标动态库运行目标服务,并不是限定目标TA仅利用目标动态库便可以运行目标服务,而是限定目标TA运行目标服务至少需要利用目标动态库。
作为举例,为目标TA配置加载动态库的权限,可以具体理解为,为目标TA配置对TEE的目标存储区域进行访问和配置属性(可执行或可读等)的权限,目标存储区域为保存目标动态库的存储区域。
基于本申请实施例第三方面提供的方法,在本申请实施例第三方面的第一种可能的实现方式中,目标TA加载的目标动态库是由TEE操作***提供的,目标TA将目标动态库加载至目标TA的内存空间,可以具体指,目标TA将TEE操作***提供的目标动态库加载至目标TA的内存空间。
目标TA所需加载的目标动态库是由TEE操作***提供的,示例性的,可以理解为,目标TA所需加载的目标动态库库需要由TEE操作***获取,之后,目标TA将TEE操作***获取到的目标动态库加载至目标TA的内存空间;还可以理解为,目标TA所需加载的目标动态库被TEE操作***保存在TEE操作***的内存空间,目标TA需要访问TEE操作***的内存空间来将目标动态库加载到目标TA的内存空间;还可以理解为前两种实现方式的组合,例如,目标TA所需加载的目标动态库由TEE操作***获取,并且,由TEE操作***将获取到的目标动态库保存在TEE操作***的内存空间中等。关于TEE操作***为目标TA提供目标动态库可以参考前述本申请第二方面的相应实现方式进行理解,此处不再赘述。
目标TA将目标动态库加载到目标TA的内存空间的过程,作为举例,可以具体包括,目标TA将目标动态库映射或装载到目标TA的内存空间,对目标动态库中的符号进行解析和重定位,对目标动态库对应的内存配置相应属性,例如,将目标动态库中代码段对应的内存配置为可执行属性,将目标动态库中数据段对应的内存配置为只读。
基于本申请实施例第三方面的第一种可能的实现方式,在本申请实施例第三方面的第二种可能的实现方式中,目标TA加载目标动态库到所述目标TA的内存空间中,可以包括:目标TA可以向TEE操作***发送获取请求,该获取请求用于请求TEE操作***获取目标动态库;TEE操作***获取到目标动态库之后,目标TA可以将TEE操作***获取到的目标动态库加载到目标TA的内存空间中。由于目标TA可以在接收到目标服务的运行请求之后,请求TEE操作***获取目标动态库,因此,TEE操作***可以在目标TA接收到目标服务的运行请求后获取目标动态库,有利于节约TEE的内存。
基于本申请实施例第三方面的第二种可能的实现方式,在本申请实施例第三方面的第三种可能的实现方式中,目标动态库可以存储在REE的存储设备中,以节约TEE的存储资源,目标TA所需加载的目标动态库可以为所述TEE操作***从所述REE操作***获取的。
基于本申请实施例第三方面的第一种可能的实现方式,在本申请实施例第三方面的第四种可能的实现方式中,目标动态库可以存储在REE的存储设备中,以节约TEE的存储资源,并且,目标服务的运行请求由部署在REE操作***的目标客户端应用程序CA发送,目标CA有调用目标服务的权限,目标TA加载目标动态库到目标TA的内存空间中,可以包括:响应于目标服务的运行请求,目标TA可以向目标CA发送第一传递请求,目标CA响应于第一传递请求可以向TEE操作***发送第二传递请求,响应于第二传递请求,REE操作***可以将目标动态库发送给TEE操作***;之后,目标TA可以将TEE操作***接收到的目标动态库加载到目标TA的内存空间中。
基于本申请实施例第三方面的第一种至第四种可能的实现方式中任意一种可能的实现方式,在本申请实施例第三方面的第五种可能的实现方式中,TEE操作***为目标TA提供目标动态库可以理解为,TEE操作***将目标动态库保存在TEE操作***的内存空间,目标TA加载TEE操作***提供的目标动态库到目标TA的内存空间中,可以包括:目标TA从TEE操作***的内存空间加载目标动态库到目标TA的内存空间中。
基于本申请实施例第三方面的第五种可能的实现方式,在本申请实施例第三方面的第六种可能的实现方式中,TEE操作***可以将目标动态库保存在TEE操作***的内存空间,目标TA可以通过访问TEE操作***的内存空间来加载目标动态库。为了提高TEE操作***的内存空间中信息的安全性,TEE操作***可以为TEE操作***的内存空间设置访问权限,目标TA从TEE操作***的内存空间加载目标动态库到目标TA的内存空间中,可以包括:目标TA向TEE操作***发送访问请求,访问请求用于请求访问TEE操作***的内存空间,TEE操作***可以根据访问请求判断目标TA是否具有访问TEE操作***的内存空间的权限,若目标TA具有访问TEE操作***的内存空间的权限,TEE操作***可以向目标TA发送允许访问信息;基于目标TA接收到TEE操作***发送的允许访问信息,目标TA可以访问TEE操作***的内存空间,将其中的目标动态库加载到目标TA的内存空间中。
现有技术中,若TEE所需的文件保存在REE的存储设备中,可以由CA获取TEE所需的文件,之后将获取到的文件发送给TEE操作***。本申请实施例第四方面提供一种前述计算机***中的信息处理方法,为TEE操作***新增为TEE获取所需文件的功能,有利于降低CA的开发难度。具体的,响应于传递请求,REE操作***可以获取目标文件,之后,将获取到的目标文件发送给TEE操作***,其中,传递请求用于指示REE操作***将目标文件发送给TEE操作***。
基于第四方面提供的方法,在本申请实施例第四方面的第一种可能的实现方式中,传递请求中所指示的目标文件可以为目标动态库,目标动态库为目标TA运行目标服务所需调用的动态库,被存储在REE的存储设备中,目标TA为TEE操作***中部署的一个TA,目标服务为目标TA提供的一个服务。REE操作***可以为TEE操作***提供TA运行服务时所需调用的动态库,有利于实现将TA所需的程序段动态加载至TA的内存空间,从而有利于节约TA的内存空间。
基于第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,REE操作***接收到的传递请求可以为所述TEE操作***发送的。
基于第四方面的第一种可能的实现方式中,在第四方面的第三种可能的实现方式中,REE操作***接收到的传递请求可以为目标客户端应用程序CA发送的,目标CA有调用目标服务的权限。
本申请第四方面的第一种、第二种和第三种可能的实现方式可以参考前述本申请实施例第一方面至第四方面提供的相应方案进行理解,此处不再赘述。
部署有富执行环境REE和可信执行环境TEE的计算机***中,TEE和REE共享内存设备,一般会按照某个比例将部分内存分配给TEE,由TEE将这部分内存的属性配置为安全内存,供TEE中的进程使用;其他内存的属性为非安全内存,供REE中的进程使用。REE中的进程(比如REE操作***或CA)只能访问非安全内存,TEE中的进程(比如TEE操作***或TA)只能访问安全内存。现有技术采用在CA和TA进行业务逻辑上协同,在TA需要大内存的情况下,由CA向REE操作***申请内存,并将申请到的内存的信息(比如内存的地址)发送给TA,TEE操作***将该内存分配给该TA使用,若出现异常情况,例如CA异常被杀,那么REE操作***会将分配给CA的内存回收,由于该内存被TA占用,若REE操作***将该内存分配给REE操作***的其他进程使用,将引起内存访问异常,降低计算机***的稳定性。
为了减少内存访问异常,提高计算机***的稳定性,本申请实施例第五方面提供一种计算机***中的内存处理方法,该计算机***上所述REE内部署有REE操作***,该TEE内部署有TEE操作***,该TEE操作***上部署有一个或多个TA,本申请第五方面提供的内存分配方法可以包括:TEE操作***可以向REE操作***发送第一内存请求,该第一内存请求用于向TEE操作***申请内存;响应于该第一内存请求,REE操作***可以为TEE操作***分配内存(称作目标内存),并将内存分配信息发送给TEE操作***,该内存分配信息用于指示为TEE操作***分配内存为目标内存,示例性的,该内存分配信息可以包括目标内存的地址;TEE操作***可以将目标内存配置为安全内存。由于目标内存为REE操作***为TEE操作***分配的,TEE操作***出现异常的概率较低,因此不易引起内存访问异常,有利于提高计算机***的稳定性。
基于本申请实施例第五方面提供的方法,在本申请实施例第五方面的第一种可能的实现方式中,TEE操作***可以为TA向REE操作***申请内存,TEE操作***向REE操作***发送第一内存请求之前,内存分配方法还包括:TEE操作***获取目标TA发送的第二内存请求,目标TA为TEE操作***上部署的一个或多个TA中的任意一个TA,第二内存请求用于向TEE操作***申请内存。需要说明的是,本实现方式不限定TEE操作***获取到目标TA发送的第二内存请求时一定向REE操作***发送第一内存请求,例如,TEE操作***接收到第二内存请求后可以判断TEE的安全内存是否充足,若充足,可以将TEE的安全内存分配给目标TA,若不充足,则可以向REE操作***申请内存。
基于本申请实施例第五方面的第一种可能的实现方式,在本申请实施例第五方面的第二种可能的实现方式中,TEE操作***将目标内存配置为安全内存之后,内存分配方法还可以包括:TEE操作***将所述目标内存分配给所述目标TA。TEE操作***将目标内存分配给目标TA还可以理解为,TEE操作***将目标内存映射给目标TA。
基于第五方面的第一种或第二种可能的实现方式,在第五方面的第三种可能的实现方式中,目标服务为目标TA提供的服务,目标TA可以在接收到目标服务的运行请求之后,若目标TA的内存空间不足以运行目标服务,目标TA可以向TEE操作***发送第二内存请求,第二内存请求用于向TEE操作***申请目标TA运行目标服务所需的内存。
基于第五方面的第一种至第三种可能的实现方式中任意一种可能的实现方式,在第五方面的第四种可能的实现方式中,TEE操作***向REE操作***申请的内存可以大于目标TA向TEE操作***申请的内存,也就是说,第一内存请求申请的内存大于第二内存申请的内存,有利于减少目标TA向TEE操作***申请内存的次数,减少目标TA和TEE操作***的操作,节约计算机***的运算资源。
基于第五方面的第二种可能的实现方式,在第五方面的第五种可能的实现方式中,在TEE操作***将第一内存分配给目标TA之后,内存分配方法还可以包括:TEE操作***可以接收目标TA发送的内存释放请求(为了便于区分,将此处目标TA发送的内存释放请求称作TA内存释放请求),该TA内存释放请求用于请求TEE操作***释放目标内存;响应于TA内存释放请求,TEE操作***可以释放目标内存。TEE操作***释放目标内存可以理解为,TEE操作***取消目标内存和目标TA之间的映射。
基于第五方面的第五种可能的实现方式,在第五方面的第六种可能的实现方式中,在TEE操作***释放目标内存之后,内存分配方法还可以包括:TEE操作***将目标内存配置为非安全内存,之后,TEE操作***可以向REE操作***发送TEE内存释放请求,该TEE内存释放请求用于请求REE操作***释放目标内存。REE操作***接收到TEE内存释放请求后,可以释放目标内存,REE操作***释放目标内存可以理解为,REE操作***取消目标内存和TEE操作***之间的映射。
需要说明的,TEE操作***释放目标内存之后,目标内存处于空闲状态,TEE操作***可以不将目标内存再次分配给TEE中的进程使用,立即将目标内存配置为非安全内存,归还给REE操作***;或者,TEE操作***释放目标内存之后,TEE操作***可以将目标内存再次分配给TEE中的进程使用,延迟归还给REE操作***。
本申请实施例第五方面的第一种至第六种可能的实现方式中任意一种可能的实现方式,可以应用于前述本申请实施例第一方面的TA的运行方法中或第一方面的任意一种可能的实现方式中,或者应用于前述本申请实施例第二方面的TA的运行方法中或第二方面的任意一种可能的实现方式中,或者应用于前述本申请实施例第三方面的TA的运行方法中或第三方面的任意一种可能的实现方式中。
从功能模块的角度,本领域技术人员可以根据上述方法实施例分别对目标CA、REE操作***、TEE操作***和目标TA进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个功能模块中。上述集成的功能模块既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
示例性的,根据第一方面提供的方案,以采用集成的方式划分各个功能单元的情况下,本申请实施例第六方面提供一种TEE操作***,TEE操作***可以包括:启动模块,用于启动目标TA,所述目标TA为所述一个或多个TA中的任意一个TA;接收模块,用于接收所述目标TA响应于目标服务的运行请求发送的加载请求,所述加载请求用于指示加载目标动态库,其中,所述目标服务为所述目标TA提供的服务;加载模块,用于响应于所述加载请求,加载所述目标动态库到所述目标TA的内存空间中,所述目标动态库用于支持所述目标服务的运行。
在一种可能的实现方式中,所述加载模块用于:从所述TEE操作***的内存空间加载所述目标动态库到所述目标TA的内存空间中。
在一种可能的实现方式中,所述加载模块包括:TEE通信单元,用于从所述REE操作***获取所述目标动态库;动态库加载单元,用于将所述目标动态库加载到所述目标TA的内存空间中。
在一种可能的实现方式中,所述TEE通信单元用于:向所述REE操作***发送所述目标动态库的传递请求,所述传递请求包括所述目标动态库的标识,所述传递请求用于指示所述REE操作***将所述目标动态库发送到所述TEE操作***;接收所述REE操作***发送的所述目标动态库。
在一种可能的实现方式中,所述TEE通信单元用于:从所述REE操作***获取加密文件;对所述加密文件进行解密,得到解密文件,所述解密文件包括所述目标动态库。
在一种可能的实现方式中,所述启动模块用于:从所述REE操作***获取一个或多个动态库,并将所述一个或多个动态库存储在所述TEE操作***的内存空间中,其中,所述一个或多个动态库被记录在所述目标TA的目标文件中,可选的,所述目标文件为所述目标TA的可执行文件。
在一种可能的实现方式中,所述加载模块用于:根据目标权限信息判断所述目标TA是否具有调用所述目标动态库的权限;基于所述目标TA具有调用所述目标动态库的权限,将所述目标动态库加载到所述目标TA的内存空间中。
在一种可能的实现方式中于,所述TEE操作***还包括TEE内存模块,所述TEE内存模块用于:获取所述目标TA响应于所述目标服务的运行请求发送的内存请求,所述内存请求用于向所述TEE操作***申请运行所述目标服务所需的内存;响应于所述内存请求,向所述REE操作***获取内存分配信息,所述内存分配信息用于指示所述REE操作***将第一内存分配给所述TEE操作***;将所述第一内存分配给所述目标TA。
在一种可能的实现方式中,所述TEE内存模块具体用于:将所述第一内存配置为安全内存;将配置为安全内存的所述第一内存分配给所述目标TA。
在一种可能的实现方式中,所述TEE内存模块还用于:在将所述第一内存分配给所述目标TA之后,接收所述目标TA发送的TA内存释放请求,所述TA内存释放请求用于请求所述TEE操作***释放所述第一内存;响应于所述TA内存释放请求,释放所述第一内存。
在一种可能的实现方式中,所述TEE内存模块具体用于:将所述第一内存配置为非安全内存;释放被配置为非安全内存的所述第一内存。
在一种可能的实现方式中,所述TEE内存模块还用于:在释放所述第一内存之后,向所述REE操作***发送TEE内存释放请求,所述TEE内存释放请求用于请求所述REE操作***释放所述第一内存。
示例性的,根据发明内容中第二方面提供的方案,以采用集成的方式划分各个功能单元的情况下,本申请第七方面提供一种TEE操作***,TEE操作***可以包括:启动模块,用于启动目标TA,所述目标TA为所述一个或多个TA中的任意一个TA;动态库提供模块,用于为所述目标TA提供目标动态库,所述目标动态库由所述目标TA加载至所述目标TA的内存空间中,以支持所述目标TA运行目标服务,所述目标服务为所述目标TA提供的服务。
在一种可能的实现方式中,所述动态库提供模块可以包括:获取请求接收单元,用于接收所述目标TA响应于所述目标服务的运行请求发送的获取请求,所述获取请求用于指示所述TEE操作***获取所述目标动态库;动态库获取单元,用于响应于所述获取请求,获取所述目标动态库。
在一种可能的实现方式中,所述动态库获取单元用于从所述REE操作***获取所述目标动态库。
在一种可能的实现方式中,所述动态库获取单元具体用于:向所述REE操作***发送所述目标动态库的传递请求,所述传递请求包括所述目标动态库的标识,所述传递请求用于指示所述REE操作***将所述目标动态库发送到所述TEE操作***;接收所述REE操作***发送的所述目标动态库。
在一种可能的实现方式中,所述动态库获取单元具体用于:从所述REE操作***获取加密文件;对所述加密文件进行解密,得到解密文件,所述解密文件包括所述目标动态库。
在一种可能的实现方式中,所述动态库提供模块具体用于:接收所述REE操作***响应于第二传递请求发送的所述目标动态库,所述目标服务的运行请求由部署在所述REE操作***的目标客户端应用程序CA发送,所述目标CA有调用所述目标服务的权限,所述第二传递请求由所述目标CA响应于第一传递请求发送给所述REE操作***,所述第一传递请求由所述目标TA响应于所述目标服务的运行请求发送给所述目标CA。
在一种可能的实现方式中,所述启动模块包括:从所述REE操作***获取一个或多个动态库,并将所述一个或多个动态库存储在所述TEE操作***的内存空间中,其中,所述一个或多个动态库被记录在所述目标TA的目标文件中,可选的,所述目标文件为所述目标TA的可执行文件。
在一种可能的实现方式中,所述动态库提供模块包括:访问请求接收单元,用于接收所述目标TA发送的访问请求,所述访问请求用于请求访问所述TEE操作***的内存空间,所述目标动态库存储在所述TEE操作***的内存空间;允许信息发送单元,用于基于所述目标TA具有访问所述TEE操作***的内存空间的权限,向所述目标TA发送允许访问信息,所述允许访问信息用于通知所述目标TA访问所述TEE操作***的内存空间。
在一种可能的实现方式中,所述访问请求用于请求访问所述目标动态库;所述允许信息发送单元用于:基于所述目标TA具有访问所述TEE操作***的内存空间的权限,并且,基于所述目标TA具有调用所述目标动态库的权限,向所述目标TA发送所述应答信息。
示例性的,根据第三方面提供的方案,以采用集成的方式划分各个功能单元的情况下,本实施例八方面提供一种TA,该TA对应于第三方面方案中的目标TA,该TA可以包括:加载模块,用于响应于目标服务的运行请求,加载目标动态库到所述目标TA的内存空间中,所述目标TA为所述一个或多个TA中的任意一个TA,所述目标服务为所述目标TA提供的服务;服务运行模块,用于利用所述目标动态库运行所述目标服务。
在一种可能的实现方式中,所述目标动态库由所述TEE操作***提供给所述目标TA。
在一种可能的实现方式中,所述加载模块用于:向所述TEE操作***发送获取请求,所述获取请求用于请求所述TEE操作***获取所述目标动态库;将所述TEE操作***获取到的所述目标动态库加载到所述目标TA的内存空间中。
在一种可能的实现方式中,所述目标动态库为所述TEE操作***从所述REE操作***获取的。
在一种可能的实现方式中,所述加载模块用于:向目标客户端应用程序CA发送第一传递请求,所述目标CA部署在所述REE操作***中,并且有调用所述目标服务的权限,所述目标服务的运行请求由所述目标CA发送;将所述TEE操作***接收的所述目标动态库加载到所述目标TA的内存空间中,所述目标动态库由所述REE操作***响应于第二传递请求发送给所述TEE操作***,所述第二传递请求由所述目标CA响应于所述第一传递请求发送给所述REE操作***。
在一种可能的实现方式中,所述加载模块用于:从所述TEE操作***的内存空间加载所述目标动态库到所述目标TA的内存空间中。
在一种可能的实现方式中,所述加载模块具体用于:向所述TEE操作***发送访问请求,所述访问请求用于请求访问所述TEE操作***的内存空间,所述目标动态库存储在所述TEE操作***的内存空间中;基于接收到所述TEE操作***发送的允许访问信息,访问将所述TEE操作***的内存空间中的所述目标动态库,并将所述目标动态库加载到所述目标TA的内存空间中。
示例性的,根据第四方面提供的方案,以采用集成的方式划分各个功能单元的情况下,本申请实施例第九方面提供了一种REE操作***,该REE操作***可以包括:文件获取模块,用于响应于传递请求,获取目标文件,所述传递请求用于指示所述REE操作***将所述目标文件传递至所述TEE操作***;REE通信模块,用于将所述目标文件发送给所述TEE操作***。
在一种可能的实现方式中,所述目标文件为目标动态库,所述目标动态库用于加载至目标TA的内存空间中,以支持所述目标TA运行目标服务,所述目标服务为目标TA提供的服务,所述目标TA为所述TEE操作***上部署的一个或多个TA中的任意一个TA。
在一种可能的实现方式中,所述传递请求为所述TEE操作***发送的,或者,所述传递请求为目标客户端应用程序CA发送的,所述目标CA有调用所述目标服务的权限。
示例性的,根据第五方面提供的方案,以采用集成的方式划分各个功能单元的情况下,本申请实施例第十方面提供了一种TEE操作***,该TEE操作***可以包括:内存申请模块,用于向所述REE操作***发送第一内存请求,所述第一内存请求用于请求所述REE操作***为是TEE操作***分配内存;内存接收模块,用于接收所述REE操作***发送的内存分配信息,所述内存分配信息用于指示为所述TEE操作***分配的内存为目标内存;内存配置模块,用于将所述目标内存配置为安全内存。
在一种可能的实现方式中,所述内存申请模块还用于:
在向所述REE操作***发送第一内存请求之前,获取目标TA发送的第二内存请求,所述目标TA为所述TEE操作***上部署的一个或多个TA中的任意一个TA,所述第二内存请求用于向所述TEE操作***申请内存。
在一种可能的实现方式中,所述内存配置模块还用于:
在将所述目标内存配置为安全内存之后,将所述目标内存分配给所述目标TA。
在一种可能的实现方式中,所述第二内存请求为所述目标TA响应于目标服务的运行请求发送的,所述第二内存请求用于申请所述目标TA运行所述目标服务所需的内存,所述目标服务为所述目标TA提供的服务。
在一种可能的实现方式中,所述第一内存请求申请的内存大于所述第二内存申请的内存。
在一种可能的实现方式中,所述内存申请模块还用于:
在所述内存配置模块将所述第一内存分配给所述目标TA之后,接收所述目标TA发送的TA内存释放请求,所述TA内存释放请求用于请求所述TEE操作***释放所述目标内存;
响应于所述TA内存释放请求,释放所述目标内存。
在一种可能的实现方式中,所述内存配置模块还用于,在所述内存配置模块释放所述目标内存之后,将所述目标内存配置为非安全内存;
所述内存申请模块还用于向所述REE操作***发送TEE内存释放请求,所述TEE内存释放请求用于请求所述REE操作***释放所述目标内存。
本申请实施例第十一方面提供一种计算机设备,包括处理器和存储器,该处理器在运行所述存储器存储的计算机指令时,执行如本申请实施例第一方面或第一方面的任意一种可能的实现方式,或者执行如本申请实施例第二方面或第二方面的任意一种可能的实现方式,或者执行如本申请实施例第三方面或第三方面的任意一种可能的实现方式,或者执行如本申请实施例第四方面或第四方面的任意一种可能的实现方式,或者执行如本申请实施例第五方面或第五方面的任意一种可能的实现方式。
本申请实施例第十二方面提供了一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行如本申请实施例第一方面或第一方面的任意一种可能的实现方式,或者执行如本申请实施例第二方面或第二方面的任意一种可能的实现方式,或者执行如本申请实施例第三方面或第三方面的任意一种可能的实现方式,或者执行如本申请实施例第四方面或第四方面的任意一种可能的实现方式,或者执行如本申请实施例第五方面或第五方面的任意一种可能的实现方式。
本申请实施例第十三方面提供了一种计算机程序产品(或称计算机程序),包括指令,当所述指令在计算机上运行时,使得计算机执行如本申请实施例第一方面或第一方面的任意一种可能的实现方式,或者执行如本申请实施例第二方面或第二方面的任意一种可能的实现方式,或者执行如本申请实施例第三方面或第三方面的任意一种可能的实现方式,或者执行如本申请实施例第四方面或第四方面的任意一种可能的实现方式,或者执行如本申请实施例第五方面或第五方面的任意一种可能的实现方式。
由于本申请实施例提供的各装置可用于执行前述对应的实施例方法,因此本申请各装置实施例所能获得到的技术效果可参考前述对应的方法实施例,此处不再赘述。
附图说明
图1是终端设备的一个结构示意图;
图2A是现有技术中指纹TA的启动过程示意图;
图2B是现有技术中指纹TA执行指纹比对服务的过程示意图;
图2C是TA的内存结构示意图;
图3A是现有技术中指纹TA的内存结构示意图;
图3B是现有技术中REE的存储介质的内存结构示意图;
图3C是本申请实施例中指纹TA加载动态库1的示意图;
图4是本申请TA的运行方法一个实施例示意图;
图5是本申请TA的运行方法另一个实施例示意图;
图6是本申请REE操作***向TEE操作***传递动态库的方法一个实施例示意图;
图7是本申请REE操作***向TEE操作***传递动态库的方法另一个实施例示意图;
图8是现有内存分配方法的示意图;
图9是本申请内存分配方法一个实施例示意图;
图10是本申请TEE操作***一个实施例示意图;
图11是本申请TEE操作***另一个实施例示意图;
图12是本申请TA一个实施例示意图;
图13是本申请REE操作***一个实施例示意图;
图14是本申请TEE操作***另一个实施例示意图;
图15是本申请计算机设备一个实施例示意图。
具体实施方式
本申请实施例提供了一种可信应用程序的运行方法、信息处理方法、内存分配方法及装置。本申请实施例方法可以应用于计算机***,示例性的,该计算机***可以为终端设备,常见的终端设备例如包括:手机、平板电脑、台式电脑、可穿戴设备(例如智能手表)、智能家庭设备(例如智能音响或智能电视)、车载智能设备、无人驾驶设备、虚拟现实设备、增强现实设备、混合现实设备、以及人工智能设备等。下面以计算机***为终端设备为例,结合附图,对本申请的实施例进行描述。
随着移动互联网的发展,智能终端设备的应用越来越广泛。为了提供智能终端设备的丰富功能和可扩展属性,终端设备通常是构建在提供开放式操作环境的富执行环境(rich execution envrironment,REE)之上,REE也被称作一般运行环境,主要包括运行于通用处理器上的富操作***(rich operating system,Rich OS),或称REE操作***,和运行在REE操作***上的客户端应用程序(client application,CA)。但是,开放式的环境为信息泄露和恶意软件传播提供了通道,使终端设备暴露在不断增长的多种形式的攻击之下,导致终端设备的安全问题日益凸显。
为了保护用户隐私和信息安全,全球平台组织提出了可信执行环境(trustedexecution environment,TEE)标准。图1是终端设备的一个结构示意图,参考图1,终端设备构建在REE和TEE之上,TEE是运行于REE之外的独立运行环境,主要包括可信操作***(trusted operating system,Trusted OS),或称TEE操作***,和运行在TEE操作***上的一个或多个可信应用程序(trusted application,TA),TEE与REE隔离。在一种可能的实现方式中,可以由监控***(monitor***)完成处理器在REE操作***和TEE操作***之间的切换,当处理器上运行REE的进程时,TEE的进程被挂起,当处理器上运行TEE的进程时,REE的进程被挂起。运行在TEE操作***上的每一个TA都是独立的,TA不能未经授权访问另一个TA的安全资源。REE无法直接访问TEE的硬件和软件资源,二者只能通过授权的应用程序编程接口(application programming interface,API)进行交互,为了简化描述,本申请描述的TEE中的进程(比如TA的进程或TEE操作***的进程)和REE中的进程(比如CA的进程或REE操作***的进程)之间的交互,不再强调是通过API实现的。因此TEE能够抵御在REE侧发生的软件攻击。例如,终端设备的部分存储介质(称作TEE存储介质)被配置为安全属性,只能被TEE访问;终端设备的其他存储介质(称作REE存储介质)只能被REE访问。TEE存储介质包括TEE内存,TEE内存包括分配给TA的内存(TA内存)和TEE操作***的内存(TEE操作***内存)。需要说明的是,TEE存储介质和REE存储介质在物理上可能是分开的,也可能是集成在一起的。
CA可以通过调用TEE的API区访问TA,以调用TA执行安全服务,例如,CA可以请求TA提供与身份验证相关的服务。以该TA为指纹TA,用于执行指纹比对服务为例,下面对指纹TA执行指纹比对服务的过程进行介绍。
首先,对指纹TA的启动过程进行介绍。参考图2A,指纹TA的启动过程包括如下步骤:
201A、TEE操作***获取对指纹TA的创建请求,并获取CA2传递的指纹TA的目标文件;
假设CA2在运行过程中需要调用指纹TA执行指纹比对服务,而指纹TA尚未启动,CA2可以从REE的ROM中获取指纹TA的目标文件,向TEE操作***发送对指纹TA的创建请求,并将指纹TA的目标文件传递至TEE操作***。
202A、TEE操作***将指纹TA的目标文件存储在TEE文件管理子***中;
TEE操作***接收到CA2传递的指纹TA的目标文件后,可以将指纹TA的目标文件存储在TEE操作***内存中,示例性的,可以将指纹TA的目标文件存储在TEE文件管理子***中。
203A、TEE操作***将指纹TA的目标文件加载至指纹TA的内存中,并启动指纹TA的进程。
TEE操作***可以根据对指纹TA的创建请求为指纹TA分配内存,将指纹TA的目标文件加载至指纹TA的内存中,启动指纹TA,利用指纹TA的进程执行该目标文件。
TEE操作***启动指纹TA的进程后,指纹TA可以执行指纹比对服务,参考图2B,指纹TA执行指纹比对服务的过程包括如下步骤:
201B、指纹TA获取CA2发送的指纹比对服务的运行请求;
指纹TA启动后,CA2可以向指纹TA发送指纹比对服务请求,以请求指纹TA获取用户指纹,将用户指纹与标准指纹进行比对。
指纹TA获取到CA2发送的指纹比对服务请求后,可以利用指纹TA的目标文件执行指纹比对服务。参考图2C,TA的内存一般包括如下多个段:
1)栈(stack):用于存放TA的进程临时创建的局部变量;
2)堆(heap):用于存放TA的进程运行中被动态分配的内存段;
3)数据段(data segment):通常用来存放程序中已初始化的全局变量;
4)代码段(code segment):通常用来存放TA的目标文件中可执行代码。
TA的目标文件一般可以从逻辑上被认为包括目标TA运行服务时所利用的运行用程序段。TA一般需要利用多个功能来执行单个服务,TA在实现某个功能时,需要运行代码段的部分代码,并且访问数据段的部分数据,本申请实施例中,将该部分数据和该部分代码称作该功能对应的程序模块。由于TA通常具备多个功能,因此,可以认为TA的代码段和数据段中包括多个程序模块,每个程序模块对应于一个功能。
图2C中以指纹TA的代码段和数据段包括指纹比对服务所需的三个功能对应的程序模块为例,这三个程序模块分别为指纹模块、图像处理模块和比对模块,指纹TA利用这三个程序模块执行指纹比对服务的过程可以参考如下步骤202B至204B。
202B、指纹TA利用指纹模块调用指纹识别设备获取用户指纹;
203B、指纹TA利用图像处理模块对获取到的用户指纹进行图像处理;
204B、指纹TA利用比对模块对处理后的用户指纹与标准指纹进行比对,得到指纹比对服务的执行结果;
指纹比对服务的执行结果用于指示用户指纹与标准指纹是否一致。
205B、指纹TA将指纹比对服务的执行结果返回至CA2。
CA获取指纹比对服务的执行结果后,可以实现对当前用户的身份验证,根据身份验证结果接受或拒绝用户访问被保护内容(加密文档或付款界面等)的请求。
指纹模块对应的功能是驱动指纹识别设备检测用户的指纹,为了驱动不同厂家的指纹识别设备,需要编译不同的指纹模块。同一型号的不同终端设备可能采用不同厂家生产的不同型号的指纹识别设备,而同一型号的各个终端设备的镜像要求一致,因此,需要为该型号终端设备所采用的各个型号的指纹识别设备编译对应的指纹模块,假设有多个型号的指纹识别设备,以n代表型号的数目,那么需要在指纹TA的目标文件中加入n个指纹模块,假设n个指纹模块分别为指纹模块1、指纹模块2、……、指纹模块n。TEE操作***启动时,可以确定指纹识别设备的型号,从而确定该型号的指纹识别设备所对应的指纹模块,但是,由于各个指纹模块均被编译在指纹TA的目标文件中,因此,创建指纹TA时,仍然需要将所有指纹模块加载到TA的内存中,图3A为指纹TA的内存的结构。该型号的终端设备的出货量越大,n的数值越大,指纹TA的目标文件越大,指纹TA占用的TEE内存越大,造成TEE内存的浪费。
为了节约TEE内存,现有技术提出编译多个指纹TA的目标文件,每个指纹TA的目标文件添加一个型号的指纹识别设备对应的指纹模块,假设有n个型号的指纹识别设备,那么需要编译n个指纹TA的目标文件,并将编译的n个指纹TA的目标文件存储在REE存储介质中,图3B为REE存储介质中n个指纹TA(指纹TA1、指纹TA2、……、指纹Tan)的目标文件的示意图。TEE操作***启动时,可以确定指纹识别设备的型号,从而确定该型号的指纹识别设备所对应的指纹TA。编译后的n个指纹TA的目标文件存储在REE的存储设备中,比如,可以存储在REE的ROM中。由于不同的指纹TA之间存在大量重复的程序内容,例如stack、heap中的内容,以及代码段和数据段中的公用程序模块,比如图2B对应的实施例中的图像处理模块和比对模块,因此,会大量浪费REE的存储资源。
为了节约TEE的存储资源和REE的存储资源,继续以上述指纹比对服务的应用场景为例,本申请提出将指纹模块1至指纹模块n分别编译为单独的动态库,例如使用GNU编译器套件(GNU compiler collection,gcc)分别将指纹模块1至指纹模块n编译为动态库1至动态库n,编译时可以启动“-fPIC”选项,链接时使用“-share”;将各个动态库的相关信息(比如动态库中函数的标识或称符号等)嵌入到指纹TA的目标文件中。为了提高文件的安全性,可选的,可以分别对动态库1、动态库2、……、动态库n以及指纹TA的目标文件进行加密,或者进行加密和签名,得到动态库1的加密文件、动态库2的加密文件、……、动态库n的加密文件以及指纹TA的加密文件,将各加密文件存储在REE的存储设备中。信息的签名用于对信息进行验证,对信息进行加密和签名,示例性的,具体可以为先对信息进行加密,之后生成加密信息签名,或者,先生成信息的签名,之后对信息和其签名进行加密,在本申请提供的实施例中,以将TA所需调用的动态库加密签名后保存在REE的存储设备中为例,在实际应用中,REE中保存的动态库进也可以未经过加密签名,或者仅经过加密,但是未经过签名。图3C示出了指纹TA加载动态库1的示意图,图3C仅用于简洁的示出指纹TA加载动态库1的过程,图3C中省略的REE和TEE中的其他部分(比如REE操作***和TEE操作***等)可以参考图1进行理解。和为每个指纹模块均编译一个指纹TA相比,本申请有利于减少重复的程序内容,节约了REE的存储资源。继续参考图3C,REE可以将所用指纹识别设备的型号对应的动态库(假设为动态库1)的加密文件传递至TEE,TEE操作***对其解密验证后,将得到的动态库1加载至指纹TA的内存中,以使得指纹TA执行指纹比对服务。
下面对本申请提供的TA的运行方法进行具体介绍,下述方法实施例中提到的目标TA可以为、但不限定为上述指纹TA。
图4为本申请提供的TA的运行方法一个实施例示意图,参考图4,本申请TA的运行方法一个实施例可以包括如下步骤:
401、TEE操作***启动目标TA;
TEE操作***可以获取REE操作***传递的目标TA的加密文件,对目标TA的加密文件进行解密验证,得到目标TA的目标文件,在启动目标TA的过程中,将目标TA的目标文件加载至为目标TA分配的内存中,创建目标TA的进程执行目标文件中的代码段。
示例性的,CA需要调用目标TA的功能时,可以通过SDK提供的接口来请求TEE操作***创建目标TA,之后,CA使用libteec提供的opensession接口请求TEE操作***将目标TA在TEE中运行。
402、基于目标TA获取到目标服务的运行请求,目标TA向TEE操作***发送目标动态库的加载请求;
目标TA的进程启动后,可以被TEE中的其他TA或REE中的CA调用,来执行目标服务。假设目标TA需要利用目标功能来执行目标服务,本申请实施例中,可以将目标功能对应的代码段和数据段等封装为目标动态库,目标动态库的相关信息(比如符号的引用、符号表和重定位信息等)被嵌入到目标TA的目标文件中,目标TA在执行目标服务时可以调用目标动态库。
在本申请实施例中,可以将目标动态库的加密文件存储在REE的存储设备中,目标TA需要调用目标动态库时,可以向TEE操作***发送目标动态库的加载请求,加载请求中可以包括目标动态库的标识,或者,还可以包括目标TA的标识。示例性的,目标TA可以调用dlopen接口来请求TEE操作***加载目标动态库。
403、TEE操作***判断TEE操作***内存中是否存储有目标动态库,若否,则执行步骤404,若是,则执行步骤409;
TEE操作***接收到目标TA发送的加载请求后,可以利用目标动态库的标识,或利用目标动态库的标识和目标TA的标识,在TEE操作***内存中查找目标动态库,若TEE操作***内存中未存储有目标动态库,则可以执行步骤404,若TEE操作***内存中存储有目标动态库,则可以执行步骤409。
404、TEE操作***向REE操作***发送对目标动态库的传递请求;
基于TEE操作***内存中未存储目标动态库,TEE操作***可以向REE操作***发送对目标动态库的传递请求。假设REE操作***中的代理(agent)进程用于向TEE操作***传递动态库的加密文件,TEE操作***可以唤醒代理进程,向代理进程发送传递请求,传递请求可以包括目标动态库的标识,或者,包括目标动态库的标识和目标TA的标识。
405、REE操作***根据传递请求从REE的存储设备中获取目标动态库的加密文件;
动态库的加密文件均存储在REE的存储设备中,具体的,假设存储在vendor/bin目录下,代理进程可以根据目标动态库的标识,或者,根据目标动态库的标识和目标TA的标识在vendor/bin目录下查找目标动态库的加密文件。示例性的,为了唯一标识目标TA所需调用的目标动态库,目标动态库的加密文件的文件名可以为uuid1-fingerdriver1.so.sec,REE操作***可以根据接收到的传递请求中目标TA的标识“uuid1”和目标动态库的标识“fingerdriver1”在vendor/bin目录下查找到目标动态库的加密文件。
406、REE操作***将目标动态库的加密文件传递至TEE操作***;
例如,REE的代理进程在查找到目标动态库的加密文件后,可以将目标动态库的加密文件传递至TEE操作***。
407、TEE操作***对目标动态库的加密文件进行解密验证,得到目标动态库;
TEE操作***可以对目标动态库的加密文件进行解密,得到目标动态库,并对目标动态库进行签名验证。若通过验证,表明目标动态库未被修改,可以继续执行步骤408;若未通过验证表明目标动态库可能被修改,可以执行其他操作,例如再次执行步骤404。
408、TEE操作***将目标动态库存储在TEE操作***内存中;
TEE操作***得到目标动态库后,可以将目标动态库存储在TEE操作***内存(例如文件(file)***)中。
409、TEE操作***将目标动态库加载至目标TA的内存中;
现有动态链接技术中,一般为应用程序设置访问***内存的权限和配置自身内存属性的权限,使得应用程序可以将所需调用的动态库加载至自己的内存空间中,并为动态库配置相应属性。为应用程序配置访问***内存的权限和配置自身内存属性的权限,存在一定安全隐患,为了提高TEE的安全性,本申请实施例中,可以不为TA设置访问TEE操作***内存的权限和配置自身内存属性的权限,由TEE操作***将目标动态库加载至目标TA的内存中,该加载过程一般可以具体包括,TEE操作***将目标动态库映射或装载到目标TA的内存空间,进行符号解析和重定位,对目标动态库对应的内存配置相应属性,例如,将目标动态库中代码段对应的内存配置为可执行属性,将目标动态库中数据段对应的内存配置为只读。
410、目标TA利用目标动态库执行目标服务;
基于目标动态库被加载至目标TA的内存空间,目标TA可以利用目标动态库的功能执行目标服务。需要说明的是,目标TA可以利用目标动态库的功能执行目标服务,不是限定目标TA仅利用目标动态库便可以执行目标服务,而是用于限定目标TA至少需要利用目标动态库来执行目标服务,在实际应用中,除了利用目标动态库,目标TA还可以利用目标TA的目标文件中的内容,或者,利用其他动态库来执行目标服务。示例性的,目标TA可以调用dlsym接口来获取目标动态库中的函数的代码,完成后,可以调用dlclose接口结束调用。
TA的部分功能对应的程序段被单独封装为动态库,提高了TA加载策略的灵活性。在图4对应的实施例中,TA需要调用动态库时,TEE操作***可以向REE操作***获取动态库的加密文件,该加密文件通过解密验证后,TEE操作***可以将该动态库加载至TA的内存中,以使得TA执行动态库对应的功能。以前述指纹比对服务的应用场景为例,TEE操作***可以将指纹识别设备的型号所对应的动态库存储在TEE操作***内存中,而不获取其他型号对应的动态库,有利于减少TEE内存的浪费。并且,指纹TA运行的过程中,可能无需执行指纹比对服务,图4对应的实施例中,TEE操作***在接收到TA对目标动态库的加载请求时,才向REE获取目标动态库,将其加载至TA的内存中,有利于进一步节约TEE内存。
图4对应的实施例仅作为一种举例,在实际应用中,可以根据需要不执行步骤403至步骤408中的全部或部分步骤,例如,在步骤402后,直接执行步骤409。
在一种可能的实现方式中,TEE操作***将目标动态库存储在TEE操作***内存之后,TEE操作***在接收到其他TA对目标动态库的加载请求时,可以将目标动态库加载至其他TA的内存中。通过多个TA共享同一动态库,有利于进一步节约TEE的安全内存。
运行在TEE中的每一个TA都是独立的,TA不能未经授权访问另一个TA的安全资源,若将TA动态链接的动态库视为TA的安全资源,为了提高TEE的安全性,在一种可能的实现方式中,TEE操作***可以为目标动态库设置目标权限信息,目标权限信息用于表示哪些TA具有调用目标动态库的权限,或者表示哪些TA不具有调用目标动态库的权限;图4对应的方法实施例,在执行步骤408之后,在执行步骤409之前,还可以执行如下步骤:
411、TEE操作***根据目标权限信息判断目标TA是否具有调用目标动态库的权限,若是,则执行步骤409,若否,则执行步骤412;
基于TEE操作***获取到目标TA对目标动态库的加载请求,TEE操作***可以读取目标动态库的目标权限信息,根据目标权限信息判断目标TA是否具有调用目标动态库的权限,若具有该权限,则执行步骤409,若不具有该权限,则执行步骤412。
在一种可能的实现方式中,目标权限信息可以为具有调用目标动态库的权限的TA的标识。为了便于描述,将具有调用目标动态库的权限的TA的标识称作TA标识。
在一种可能的实现方式中,可以将TA标识添加至目标动态库的文件名中,那么,TEE操作***可以从目标动态库的文件名中读取TA标识,判断目标TA的标识与TA标识是否一致,若一致,则判定目标TA具有调用目标动态库的权限;若不一致,则判定目标TA不具有调用目标动态库的权限。
本申请实施例中,不限定目标动态库仅可以被单个TA调用,在一些应用场景中,可以被多个TA调用,那么目标权限信息包括多个TA标识,每个TA标识对应于一个可以调用该目标动态库的TA,这种情况下,目标TA的标识只要和其中的任意一个TA标识一致,便可以判定目标TA具有调用目标动态库的权限;若目标TA的标识和其中的所有TA标识均不一致,可以判定目标TA不具有调用目标动态库的权限。
412、TEE操作***执行其他操作。
若目标TA不具有调用目标动态库的权限,TEE操作***可以拒绝目标TA的对目标动态库的加载请求。
为了提高目标权限信息的安全性,在一种可能的实现方式中,可以对目标权限信息进行加密签名,此时,步骤407可以具体执行如下步骤:
4071、TEE操作***对目标动态库的加密文件进行解密验证,得到目标动态库和目标权限信息;
示例性的,在利用加密工具对目标动态库进行加密前,可以在加密工具的配置信息(manifest)中的“gpd.ta.service_name”字段配置可以调用目标动态库的TA的标识(简称TA标识),例如TA标识可以为uuid2,并将“gpd.ta.islib:”配置为“true”,以指示该目标动态库仅可以被该标识对应的TA调用。TEE操作***在对目标动态库的加密文件进行解密时,可以获取配置信息,从中提取TA标识,确定该目标动态库仅可以被该TA标识对应的TA运行。
步骤408可以具体执行如下步骤:
4081、TEE操作***将目标动态库和目标权限信息关联存储在TEE操作***内存中;
TEE操作***得到目标动态库和目标权限信息后,为了便于确定目标动态库的目标权限信息,可以将目标动态库和目标权限信息关联存储在TEE操作***内存(例如文件(file)***)中。示例性的,TEE操作***可以将目标权限信息添加至目标动态库的文件名中,以目标权限信息为uuid2为例,存储在TEE操作***内存中的目标动态库的文件名可以为“uuid2-fingerdriver1.so”,TEE操作***通过目标动态库的文件名便可以确定目标动态库对应的目标权限信息。
在图4对应的实施例中,为了提高TEE的安全性,不为TA设置访问TEE操作***内存的权限和配置自身内存属性的权限,由TEE操作***将目标动态库加载至目标TA的内存中,在本申请TA的运行方法另一个实施例中,也可以选择为TA设置访问TEE操作***内存的权限和配置自身内存属性的权限。参考图5,本申请TA的运行方法另一个实施例可以包括如下步骤:
501、TEE操作***启动目标TA的进程;
步骤501可以参考上述步骤401的描述进行理解,此处不再赘述。
502、基于获取到目标服务的运行请求,目标TA判断TEE操作***内存中是否存储有目标动态库,若否,则执行步骤503,若是,则执行步骤509;
假设目标TA需要利用目标动态库的功能来执行目标服务,基于目标TA获取到目标服务的运行请求,目标TA可以利用目标动态库的标识,或利用目标动态库的标识和目标TA的标识,在TEE操作***内存中查找目标动态库,若TEE操作***内存中未存储有目标动态库,则可以执行步骤503,若TEE操作***内存存储有目标动态库,则可以执行步骤509。
503、目标TA向TEE操作***发送目标动态库的获取请求;
基于TEE操作***内存中未存储有目标动态库,目标TA可以向TEE操作***发送目标动态库的获取请求,获取请求中可以包括目标动态库的标识,或者,还可以包括目标TA的标识。示例性的,目标TA可以调用dlopen接口来请求TEE操作***获取目标动态库,并将目标动态库存储在TEE操作***内存中。
504、TEE操作***向REE操作***发送对目标动态库的传递请求;
505、REE操作***根据传递请求从REE的存储设备中获取目标动态库的加密文件;
506、REE操作***将目标动态库的加密文件传递至TEE操作***;
507、TEE操作***对目标动态库的加密文件进行解密验证,得到目标动态库;
508、TEE操作***将目标动态库存储在TEE操作***内存中;
步骤504至步骤508可以参考上述步骤404至步骤408的描述,此处不再赘述。
509、目标TA将目标动态库加载至目标TA的内存中;
TEE操作***将目标动态库存储在TEE操作***内存之后,可以通知目标TA已获取到该目标动态库,目标TA可以将目标动态库加载至自己的内存中,该加载过程一般可以具体包括,目标TA将目标动态库映射或装载到目标TA的内存空间,对目标动态库中的符号进行解析和重定位,对目标动态库对应的内存配置相应属性,例如,将目标动态库中代码段对应的内存配置为可执行属性,将目标动态库中数据段对应的内存配置为只读。
510、目标TA利用目标动态库执行目标服务;
示例性的,目标TA可以调用dlsym接口来获取目标动态库中的函数的代码,完成后,可以调用dlclose接口结束调用。
图5对应的实施例仅作为一种举例,在实际应用中,可以根据需要不执行步骤502至步骤508中的全部或部分步骤,例如,在目标TA获取到目标服务的运行请求后,直接执行步骤509。
为了提高TEE的安全性,在一种可能的实现方式中,TEE操作***可以为目标动态库设置目标权限信息,目标权限信息用于表示哪些TA具有调用目标动态库的权限,或者表示哪些TA不具有调用目标动态库的权限。在步骤510之前,图5对应的方法实施例还可以包括如下步骤:
511、目标TA向TEE操作***发送对TEE操作***内存中目标动态库的访问请求;
基于TEE操作***将目标动态库存储在TEE操作***内存,目标TA可以向TEE操作***发送对TEE操作***内存中目标动态库的访问请求,该访问请求可以包括目标动态库的标识。
512、TEE操作***根据目标权限信息判断目标TA是否具有调用目标动态库的权限,若是,则执行步骤513,若否,则执行步骤514;
TEE操作***根据目标权限信息判断目标TA是否具有调用目标动态库的权限的方法可以参见前述步骤409的相关描述,此处不再赘述。
513、TEE操作***向目标TA发送目标动态库的允许访问信息;
基于目标TA获取到TEE操作***发送的目标动态库的允许访问信息,目标TA可以执行步骤509。
514、TEE操作***向目标TA发送目标动态库的拒绝访问通知;
基于目标TA获取到TEE操作***发送的目标动态库的拒绝访问通知,目标TA无法加载目标动态库,从而有利于防止不具有调用目标动态库的权限的TA加载目标动态库,防止目标动态库被泄露。
在一些实施例中,TEE操作***在接收到目标TA的访问请求后,还可以判断目标TA是否具有访问TEE操作***内存的权限,基于目标TA具有访问TEE操作***内存的权限,并且目标TA具有调用目标动态库的权限,TEE操作***才向目标TA发送目标动态库的允许访问信息。
在上述本申请TA的运行方法中,目标动态库是在目标TA启动后被加载至目标TA的内存中的。在一种可能的实现方式中,TEE操作***可以在目标TA初始化的过程中将目标动态库加载至目标TA的内存中,具体的,在目标TA初始化的过程,TEE操作***可以根据目标TA的目标文件中记录的动态库的标识,获取目标TA的目标文件中记录的全部或部分动态库(包括或不包括目标动态库),例如,可以参考步骤404至步骤408,TEE操作***将目标TA调用的全部或部分动态库存储在TEE操作***内存中;之后TEE操作***可以直接将各动态库加载至目标TA的内存中,或者,基于获取到目标TA发送的目标服务的加载请求,若目标动态库已被存储在TEE操作***内存中,则TEE操作***将目标动态库从TEE操作***内存中加载至目标TA的内存中。
由于目标TA获取到目标服务的运行请求前,目标动态库可能已经存储在TEE操作***内存中,甚至已经加载至目标TA的内存中,有利于提高目标服务的完成效率。
但是,TA一般根据所需执行的服务来调用相应的动态库,也就是说,目标TA在运行过程中可能不需要调用其目标文件中记录的部分动态库,而TEE操作***在目标TA初始化的过程中将目标TA可能会调用的各个动态库均加载至目标TA的内存中,容易造成TEE的安全内存的浪费。为了平衡内存资源和加载效率,TEE操作***可以从目标文件中记录的各动态库中预测被调用的几率更高的一个或多个动态库,在启动目标TA的过程中获取预测到的相应动态库。
在上述本申请TA的运行方法中,REE操作***是基于获取到TEE操作***发送的对目标动态库的传递请求来执行步骤405和步骤406的。在一种可能的实现方式中,即使REE操作***未获取到TEE操作***发送的对目标动态库的传递请求,REE操作***也可以主动执行步骤405和步骤406,将目标动态库的加密文件传递至TEE操作***,有利于减少REE与TEE之间的交互,节约终端设备的计算资源。
在一种可能的实现方式中,参考图6,REE操作***向TEE操作***传递动态库的一个实施例可以包括:
601、基于目标CA请求TEE操作***创建目标TA,目标CA获取目标TA所需调用的各动态库的标识;
可以将目标CA可能调用的TA的运行信息记录在目标CA的目标文件中,例如,可以将目标TA所需调用的各动态库的标识与目标TA的标识关联记录在目标CA的目标文件中,目标CA需要调用目标TA执行服务时,可以查找目标TA所需调用的各动态库的标识。
602、目标CA向REE操作***发送对动态库的传递请求,传递请求包括获取到的各动态库的标识;
603、REE操作***根据传递请求从REE的存储设备中获取各动态库的加密文件;
604、REE操作***将各动态库的加密文件传递至TEE操作***。
TEE操作***获取到TEE操作***传递的各动态库的加密文件后,可以对其解密验证,并将得到的各动态库存储在TEE操作***内存中。之后,TEE操作***可以在目标TA初始化的过程中,将各动态库加载至目标TA的内存中,或者,在获取到目标TA发送的目标动态库的加载请求时,将其中的目标动态库加载至目标TA的内存中,或者,目标TA可以自己将目标动态库加载至自己的内存中。
在一种可能的实现方式中,参考图7,REE操作***向TEE操作***传递动态库的方法另一个实施例可以包括:
701、目标CA向目标TA发送目标服务的运行请求;
基于目标TA已启动,目标CA可以请求目标TA执行目标服务。
702、目标TA向目标TA发送对目标动态库的第一传递请求;
目标TA基于获取到目标服务的运行请求,可以获取在执行目标服务时所需要调用的目标动态库的标识,向目标TA发送对目标动态库的传递请求,为了便于和其他传递请求区分开,将此处的传递请求称作第一传递请求,第一传递请求包括目标动态库的标识。
703、目标CA根据第一传递请求从REE的存储设备中获取目标动态库的加密文件;
可以为目标CA配置访问REE的存储设备的权限,响应于第一传递请求,目标CA可以根据第一传递请求从REE的存储设备中获取目标动态库的加密文件。
704、目标CA向REE操作***发送对目标动态库的第二传递请求;
目标CA获取到目标动态库的加密文件后,可以将加密文件进行缓存,并向REE操作***发送对目标动态库的第二传递请求,请求REE操作***将目标动态库发送至TEE操作***。为了便于区分,将此处的传递请求称作第二传递请求,第二传递请求可以包括目标动态库的标识。
705、REE操作***将目标动态库的加密文件传递至TEE操作***。
响应于第二传递请求,REE操作***可以将目标CA获取的加密文件传递至TEE操作***。
TEE操作***获取到TEE操作***传递的目标动态库的加密文件后,可以对其解密验证,并将得到的目标动态库存储在TEE操作***内存中,具体过程可以参考步骤407和步骤408的描述,此处不再赘述。之后,TEE操作***可以直接将目标动态库加载至目标TA的内存中,或者,在获取到目标TA发送的目标动态库的加载请求时,将TEE操作***内存中的目标动态库加载至目标TA的内存中,或者,若为TA设置了访问TEE操作***内存的权限和配置自身内存属性的权限,目标TA可以将目标动态库加载至自己的内存中。
在一种可能的实现方式中,也可以在目标CA的目标文件中可以记录目标TA执行目标服务时所需调用的目标动态库的标识,此时,目标CA需要请求目标TA执行目标服务时,可以无需目标TA发送传递请求便可以执行步骤。
TEE和REE共享内存设备,一般会按照某个比例将部分内存分配给TEE,由TEE将这部分内存的属性配置为安全内存,供TEE使用;其他内存的属性为非安全内存,供REE使用。REE只能访问非安全内存,TEE只能访问安全内存。CA调用TA执行的任务可能需要大量内存,比如人脸识别任务,TA在执行人脸识别任务时需要对大量的图形数据进行计算,产生大量的中间数据,需要较大的内存。
现有技术采用在CA和TA进行业务逻辑上协同,在TA需要大内存的情况下,由CA申请内存,并将其传递到TA,并由TA向TEE操作***申请将该内存配置为安全内存,并映射给该TA使用;在CA退出前,如果没有主动解除安全属性,比如CA出现异常被杀,那么REE操作***会将分配给CA的内存回收,并可能分配给REE操作***的其他进程使用,但是由于该内存的属性为安全内存,REE中的其他进程无法访问,从而导致稳定性异常。
参考图8,下面具体介绍现有内存分配方法,包括如下步骤:
801、目标CA获取REE操作***响应于目标CA的内存申请反馈的第一内存的地址信息;
目标CA发送的内存申请用于向REE操作***申请目标TA运行目标服务所需的内存。
802、目标CA将第一内存的地址信息和目标服务的运行请求发送给目标TA;
803、目标TA向TEE操作***发送安全属性配置请求,安全属性配置请求包括第一内存的地址信息;
804、TEE操作***根据安全属性配置请求将第一内存的属性修改为安全内存;
805、目标TA利用第一内存执行目标服务;
806、基于目标TA完成目标服务,目标TA向TEE操作***发送非安全属性配置请求,非安全属性配置请求包括第一内存的地址信息;
807、TEE操作***根据非安全属性配置请求将第一内存的属性修改为非安全内存;
808、基于目标TA完成目标服务,目标CA请求REE操作***释放第一内存。
现有内存分配方法一般存在以下问题:
1)TA执行任务需要大量内存时,TA所需的内存由CA向REE操作***申请,在TA完成任务时,由CA通知REE操作***释放相应的内存。若TA未完成任务,而CA异常被杀,REE操作***会释放分配给CA的内存,CA的内存释放与TEE的内存属性修改不同步,将导致内存属性配置问题,引起整机复位。
2)TA运行需要大量内存时,需要CA和TA之间进行大量的交互操作,CA和TA的开发流程复杂。
为了解决上述问题,本申请提供一种内存分配方法,参考图9,本申请内存分配方法一个实施例可以包括如下步骤:
901、目标TA获取目标CA发送的目标服务的运行请求;
902、目标TA向TEE操作***发送TA内存请求;
该TA内存请求可以用于申请目标服务所需的内存;
903、TEE操作***根据TA内存请求判断TEE操作***中可用的***内存是否充足,若否,则执行步骤904,若是,则执行步骤907;
904、TEE操作***向REE操作***发送TEE内存请求,TEE内存请求所申请的内存大小不小于TA内存请求所申请的内存;
或者,根据可用的安全内存的大小和TA内存请求申请的内存的大小确定TEE内存请求所申请的内存的大小。
905、REE操作***根据TEE内存请求将第一内存的地址信息传递至TEE操作***;
REE操作***可以向TEE操作***发送内存分配信息,该内存分配信息用于指示TEE操作***分配的内存为第一内存,在本申请实施例中,以内存分配信息为第一内存的地址信息为例。
906、TEE操作***将第一内存的属性配置为安全内存;
907、TEE操作***将第二内存分配给目标TA,第二内存的大小不小于TA内存请求所申请的内存;
908、目标TA利用第二内存执行目标服务;
909、基于目标TA完成目标服务,目标TA向TEE操作***发送TA内存释放请求,TA内存释放请求包括第二内存的地址信息;
910、TEE操作***根据TA内存释放请求释放第二内存;
911、基于第一内存空闲,TEE操作***将第一内存的属性配置为非安全内存;
912、TEE操作***请求REE操作***释放第一内存。
TEE操作***需要归还第一内存(即执行步骤911和步骤912),若第一内存大于第二内存,TEE操作***可以一次性归还第一内存,或者可以分多次归还第一内存。
关于TEE操作***归还第二内存:TEE操作***可以在步骤910之后立即归还第二内存(即执行步骤911和步骤912);或者,TEE操作***可以延迟归还第二内存,例如,TEE操作***可以判断REE传递的安全内存/或可用的安全内存是否充足,若充足,则立即归还,否则暂不归还;或者,TEE操作***可以将第二内存保留一定时长,若时长内未被使用,则归还。
本申请实施例有利于解决由CA为TA申请内存时导致的不稳定问题,并有利于降低TEE内存动态扩容方案的复杂度问题。
图9对应的实施例仅作为一种举例,在实际应用中,可以根据需要不执行步骤901、902、903和907至912中的全部或部分步骤。
上述主要从计算机***中的目标CA、REE操作***、TEE操作***和目标TA之间交互的角度对本申请实施例提供的方案进行了介绍。可以理解的是,上述目标CA、REE操作***、TEE操作***和目标TA,为了实现上述功能,包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的功能,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
从功能模块的角度,本领域技术人员可以根据上述方法实施例分别对目标CA、REE操作***、TEE操作***和目标TA进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个功能模块中。上述集成的功能模块既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
示例性的,根据发明内容中第一方面提供的方案,以采用集成的方式划分各个功能单元的情况下,图10示出了一种TEE操作***的结构示意图。如图10所示,本申请TEE操作***1000的一个实施例可以包括:
启动模块1010,用于启动目标TA,目标TA为一个或多个TA中的任意一个TA;
接收模块1020,用于接收目标TA响应于目标服务的运行请求发送的加载请求,加载请求用于指示加载目标动态库,其中,目标服务为目标TA提供的服务;
加载模块1030,用于响应于加载请求,加载目标动态库到目标TA的内存空间中,目标动态库用于支持目标服务的运行。
在一种可能的实现方式中,加载模块1030用于:
从TEE操作***的内存空间加载目标动态库到目标TA的内存空间中。
在一种可能的实现方式中,加载模块1030包括:
TEE通信单元,用于从REE操作***获取目标动态库;
动态库加载单元,用于将目标动态库加载到目标TA的内存空间中。
在一种可能的实现方式中,TEE通信单元用于:
向REE操作***发送目标动态库的传递请求,传递请求包括目标动态库的标识,传递请求用于指示REE操作***将目标动态库发送到TEE操作***;
接收REE操作***发送的目标动态库。
在一种可能的实现方式中,TEE通信单元用于:
从REE操作***获取加密文件;
对加密文件进行解密,得到解密文件,解密文件包括目标动态库。
在一种可能的实现方式中,启动模块1010用于:
从REE操作***获取一个或多个动态库,并将一个或多个动态库存储在TEE操作***的内存空间中,其中,一个或多个动态库被记录在目标TA的目标文件中,目标文件为目标TA的可执行文件。
在一种可能的实现方式中,加载模块1030用于:
根据目标权限信息判断目标TA是否具有调用目标动态库的权限;
基于目标TA具有调用目标动态库的权限,将目标动态库加载到目标TA的内存空间中。
在一种可能的实现方式中于,TEE操作***还包括TEE内存模块,TEE内存模块用于:
获取目标TA响应于目标服务的运行请求发送的内存请求,内存请求用于向TEE操作***申请运行目标服务所需的内存;
响应于内存请求,向REE操作***获取内存分配信息,内存分配信息用于指示REE操作***将第一内存分配给TEE操作***;
将第一内存分配给目标TA。
在一种可能的实现方式中,TEE内存模块具体用于:
将第一内存配置为安全内存;
将配置为安全内存的第一内存分配给目标TA。
在一种可能的实现方式中,TEE内存模块还用于:
在将第一内存分配给目标TA之后,接收目标TA发送的TA内存释放请求,TA内存释放请求用于请求TEE操作***释放第一内存;
响应于TA内存释放请求,释放第一内存。
在一种可能的实现方式中,TEE内存模块具体用于:
将第一内存配置为非安全内存;
释放被配置为非安全内存的第一内存。
在一种可能的实现方式中,TEE内存模块还用于:
在释放第一内存之后,向REE操作***发送TEE内存释放请求,TEE内存释放请求用于请求REE操作***释放第一内存。
示例性的,根据发明内容中第二方面提供的方案,以采用集成的方式划分各个功能单元的情况下,图11示出了一种TEE操作***的结构示意图。如图11所示,本申请TEE操作***1100的另一个实施例可以包括:
启动模块1110,用于启动目标TA,目标TA为一个或多个TA中的任意一个TA;
动态库提供模块1120,用于为目标TA提供目标动态库,目标动态库由目标TA加载至目标TA的内存空间中,以支持目标TA运行目标服务,目标服务为目标TA提供的服务。
在一种可能的实现方式中,动态库提供模块1120包括:
获取请求接收单元,用于接收目标TA响应于目标服务的运行请求发送的获取请求,获取请求用于指示TEE操作***获取目标动态库;
动态库获取单元,用于响应于获取请求,获取目标动态库。
在一种可能的实现方式中,动态库获取单元用于从REE操作***获取目标动态库。
在一种可能的实现方式中,动态库获取单元具体用于:
向REE操作***发送目标动态库的传递请求,传递请求包括目标动态库的标识,传递请求用于指示REE操作***将目标动态库发送到TEE操作***;
接收REE操作***发送的目标动态库。
在一种可能的实现方式中,动态库获取单元具体用于:
从REE操作***获取加密文件;
对加密文件进行解密,得到解密文件,解密文件包括目标动态库。
在一种可能的实现方式中,动态库提供模块1120具体用于:
接收REE操作***响应于第二传递请求发送的目标动态库,目标服务的运行请求由部署在REE操作***的目标客户端应用程序CA发送,目标CA有调用目标服务的权限,第二传递请求由目标CA响应于第一传递请求发送给REE操作***,第一传递请求由目标TA响应于目标服务的运行请求发送给目标CA。
在一种可能的实现方式中,启动模块1110包括:
从REE操作***获取一个或多个动态库,并将一个或多个动态库存储在TEE操作***的内存空间中,其中,一个或多个动态库被记录在目标TA的目标文件中,可选的,目标文件为目标TA的可执行文件。
在一种可能的实现方式中,动态库提供模块1120包括:
访问请求接收单元,用于接收目标TA发送的访问请求,访问请求用于请求访问TEE操作***的内存空间,目标动态库存储在TEE操作***的内存空间;
允许信息发送单元,用于基于目标TA具有访问TEE操作***的内存空间的权限,向目标TA发送允许访问信息,允许访问信息用于通知目标TA访问TEE操作***的内存空间。
在一种可能的实现方式中,访问请求用于请求访问目标动态库;
允许信息发送单元用于:
基于目标TA具有访问TEE操作***的内存空间的权限,并且,基于目标TA具有调用目标动态库的权限,向目标TA发送应答信息。
示例性的,根据发明内容中第三方面提供的方案,以采用集成的方式划分各个功能单元的情况下,图12示出了一种TA的结构示意图,本实施例中的TA对应于前述各方法实施例中的目标TA。如图12所示,本申请TA 1200的一个实施例可以包括:
加载模块1210,用于响应于目标服务的运行请求,加载目标动态库到目标TA的内存空间中,目标TA为一个或多个TA中的任意一个TA,目标服务为目标TA提供的服务;
服务运行模块1220,用于利用目标动态库运行目标服务。
在一种可能的实现方式中,目标动态库由TEE操作***提供给目标TA。
在一种可能的实现方式中,加载模块1210用于:
向TEE操作***发送获取请求,获取请求用于请求TEE操作***获取目标动态库;
将TEE操作***获取到的目标动态库加载到目标TA的内存空间中。
在一种可能的实现方式中,目标动态库为TEE操作***从REE操作***获取的。
在一种可能的实现方式中,加载模块1210用于:
向目标客户端应用程序CA发送第一传递请求,目标CA部署在REE操作***中,并且有调用目标服务的权限,目标服务的运行请求由目标CA发送;
将TEE操作***接收的目标动态库加载到目标TA的内存空间中,目标动态库由REE操作***响应于第二传递请求发送给TEE操作***,第二传递请求由目标CA响应于第一传递请求发送给REE操作***。
在一种可能的实现方式中,加载模块1210用于:
从TEE操作***的内存空间加载目标动态库到目标TA的内存空间中。
在一种可能的实现方式中,加载模块1210具体用于:
向TEE操作***发送访问请求,访问请求用于请求访问TEE操作***的内存空间,目标动态库存储在TEE操作***的内存空间中;
基于接收到TEE操作***发送的允许访问信息,访问将TEE操作***的内存空间中的目标动态库,并将目标动态库加载到目标TA的内存空间中。
示例性的,根据发明内容中第四方面提供的方案,以采用集成的方式划分各个功能单元的情况下,图13示出了一种REE操作***的结构示意图。如图13所示,本申请REE操作***1300的一个实施例可以包括:
文件获取模块1310,用于响应于传递请求,获取目标文件,传递请求用于指示REE操作***将目标文件传递至TEE操作***;
REE通信模块1320,用于将目标文件发送给TEE操作***。
在一种可能的实现方式中,目标文件为目标动态库,目标动态库用于加载至目标TA的内存空间中,以支持目标TA运行目标服务,目标服务为目标TA提供的服务,目标TA为TEE操作***上部署的一个或多个TA中的任意一个TA。
在一种可能的实现方式中,传递请求为TEE操作***发送的,或者,传递请求为目标客户端应用程序CA发送的,目标CA有调用目标服务的权限。
示例性的,根据发明内容中第五方面提供的方案,以采用集成的方式划分各个功能单元的情况下,图14示出了一种TEE操作***的结构示意图。如图14所示,本申请TEE操作***1400的另一个实施例可以包括:
内存申请模块1410,用于向REE操作***发送第一内存请求,第一内存请求用于请求REE操作***为是TEE操作***分配内存;
内存接收模块1420,用于接收REE操作***发送的内存分配信息,内存分配信息用于指示为TEE操作***分配的内存为目标内存;
内存配置模块1430,用于将目标内存配置为安全内存。
在一种可能的实现方式中,内存申请模块1410还用于:
在向REE操作***发送第一内存请求之前,获取目标TA发送的第二内存请求,目标TA为TEE操作***上部署的一个或多个TA中的任意一个TA,第二内存请求用于向TEE操作***申请内存。
在一种可能的实现方式中,内存配置模块1430还用于:
在将目标内存配置为安全内存之后,将目标内存分配给目标TA。
在一种可能的实现方式中,第二内存请求为目标TA响应于目标服务的运行请求发送的,第二内存请求用于申请目标TA运行目标服务所需的内存,目标服务为目标TA提供的服务。
在一种可能的实现方式中,第一内存请求申请的内存大于第二内存申请的内存。
在一种可能的实现方式中,内存申请模块1410还用于:
在内存配置模块1430将第一内存分配给目标TA之后,接收目标TA发送的TA内存释放请求,TA内存释放请求用于请求TEE操作***释放目标内存;
内存申请模块1410,还用于响应于TA内存释放请求,释放目标内存。
在一种可能的实现方式中,内存配置模块1430还用于,在内存配置模块1430释放目标内存之后,将目标内存配置为非安全内存;
内存申请模块,还用于向REE操作***发送TEE内存释放请求,TEE内存释放请求用于请求REE操作***释放目标内存。
本申请实施例还提供一种计算机***,该计算机***可以运行本申请提供的任一实施例方法,包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的功能,本申请计算机***能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
从功能模块的角度,本领域技术人员可以根据上述方法实施例计算机***进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个功能模块中。上述集成的功能模块既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
示例性的,本申请提供的计算机操作***可以包括上述REE操作***、TEE操作***、CA和TA中的一个或多个。
由于本申请实施例提供的各装置可用于执行前述对应的实施例方法,因此本申请各装置实施例所能获得到的技术效果可参考前述对应的方法实施例,此处不再赘述。
上述各模块可以指特定应用集成电路(application-specific integratedcircuit,ASIC),执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。图15为计算机设备1500的硬件结构示意图,在一个简单的实施例中,本领域的技术人员可以想到上述TEE操作***、REE操作***、TA、CA或操作***可以采用图15所示的形式。
该计算机设备1500可以包括:处理器射频(radio frequency,RF)电路1510、存储器1520、输入单元1530、显示单元1540、传感器1550、音频电路1560、无线保真(wirelessfidelity,WiFi)模块1570、处理器1580、以及电源1590等部件。
本领域技术人员可以理解,图15中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图15对计算机设备的各个构成部件进行具体的介绍:
RF电路1510可用于收发信息或通话过程中,信号的接收和发送,特别地,将网络侧设备的下行信息接收后,给处理器1580处理;另外,将设计上行的数据发送给网络侧设备。
通常,RF电路1510包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noise amplifier,LNA)、双工器等。
此外,RF电路1510还可以通过无线通信与网络和其他设备通信。
上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯***(global system of mobile communication,GSM)、通用分组无线服务(general packetradio service,GPRS)、码分多址(code division multiple access,CDMA)、宽带码分多址(wideband code division multiple access,WCDMA)、长期演进(long term evolution,LTE)、电子邮件、短消息服务(short messaging service,SMS)等。
存储器1520可用于存储软件程序以及模块,处理器1580通过运行存储在存储器1520的软件程序以及模块,从而执行计算机设备的各种功能应用以及数据处理。
存储器1520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器1520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1530可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。
具体地,输入单元1530可包括触控面板1531以及其他输入设备1532。触控面板1531,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1531上或在触控面板1531附近的操作),并根据预先设定的程式驱动相应的连接装置。除了触控面板1531,输入单元1530还可以包括其他输入设备1532。具体地,其他输入设备1532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1540可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元1540可包括显示面板1541,可选的,可以采用液晶显示器(liquidcrystal display,LCD)、有机发光二极管(organic light-emitting diode,OLED)等形式来配置显示面板1541。进一步的,触控面板1531可覆盖显示面板1541,当触控面板1531检测到在其上或附近的触摸操作后,传送给处理器1580以确定触摸事件的类型,随后处理器1580根据触摸事件的类型在显示面板1541上提供相应的视觉输出。虽然在图15中,触控面板1531与显示面板1541是作为两个独立的部件来实现计算机设备的输入和输入功能,但是在某些实施例中,可以将触控面板1531与显示面板1541集成而实现计算机设备的输入和输出功能。
计算机设备还可包括至少一种传感器1550,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1541的亮度,接近传感器可在计算机设备移动到耳边时,关闭显示面板1541和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别计算机设备姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于计算机设备还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1560、扬声器1561,传声器1562可提供用户与计算机设备之间的音频接口。音频电路1560可将接收到的音频数据转换后的电信号,传输到扬声器1561,由扬声器1561转换为声音信号输出;另一方面,传声器1562将收集的声音信号转换为电信号,由音频电路1560接收后转换为音频数据,再将音频数据输出处理器1580处理后,经RF电路1510以发送给比如另一设备,或者将音频数据输出至存储器1520以便进一步处理。
WiFi属于短距离无线传输技术,计算机设备通过WiFi模块1570可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图15示出了WiFi模块1570,但是可以理解的是,其并不属于计算机设备的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1580是计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器1520内的软件程序和/或模块,以及调用存储在存储器1520内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。处理器1580可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。虽然图中仅仅示出了一个处理器,该装置可以包括多个处理器或者处理器包括多个处理单元。具体的,处理器可以是一个单核处理器,也可以是一个多核或众核处理器。该处理器可以是ARM架构处理器。可选的,处理器1580可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1580中。
计算机设备还包括给各个部件供电的电源1590(比如电池),优选的,电源可以通过电源管理***与处理器1580逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。
尽管未示出,计算机设备还可以包括摄像头、蓝牙模块等,在此不再赘述。
本申请实施例提供的计算机设备可以为手机、平板电脑、台式电脑、可穿戴设备(例如智能手表)、智能家庭设备(例如智能音响或智能电视)、车载智能设备、无人驾驶设备、虚拟现实设备、增强现实设备、混合现实设备、以及人工智能设备等。
上述实施例,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机执行指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、***、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。在本申请实施例中,“多个”指两个或两个以上。
本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请的各实施例中,为了方面理解,进行了多种举例说明。然而,这些例子仅仅是一些举例,并不意味着是实现本申请的最佳实现方式。
以上对本申请所提供的技术方案进行了详细介绍,本申请中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (80)
1.一种可信应用程序TA的运行方法,其特征在于,应用于计算机***,所述计算机***上部署有富执行环境REE和可信执行环境TEE,所述REE内部署有REE操作***,所述TEE内部署有TEE操作***,所述TEE操作***上部署有一个或多个可信应用程序TA,所述方法包括:
所述TEE操作***启动目标TA,所述目标TA为所述一个或多个TA中的任意一个TA;
所述TEE操作***接收所述目标TA响应于目标服务的运行请求发送的加载请求,所述加载请求用于指示加载目标动态库,其中,所述目标服务为所述目标TA提供的服务;
响应于所述加载请求,所述TEE操作***加载所述目标动态库到所述目标TA的内存空间中,所述目标动态库用于支持所述目标服务的运行。
2.根据权利要求1所述的方法,其特征在于,所述TEE操作***加载所述目标动态库到所述目标TA的内存空间中,包括:
所述TEE操作***从所述TEE操作***的内存空间加载所述目标动态库到所述目标TA的内存空间中。
3.根据权利要求1所述的方法,其特征在于,所述TEE操作***加载所述目标动态库到所述目标TA的内存空间中,包括:
所述TEE操作***从所述REE操作***获取所述目标动态库,并将所述目标动态库加载到所述目标TA的内存空间中。
4.根据权利要求3所述的方法,其特征在于,所述TEE操作***从所述REE操作***获取所述目标动态库,包括:
所述TEE操作***向所述REE操作***发送所述目标动态库的传递请求,所述传递请求包括所述目标动态库的标识,所述传递请求用于指示所述REE操作***将所述目标动态库发送到所述TEE操作***;
所述TEE操作***接收所述REE操作***发送的所述目标动态库。
5.根据权利要求3所述的方法,其特征在于,所述TEE操作***从所述REE操作***获取所述目标动态库,包括:
所述TEE操作***从所述REE操作***获取加密文件;
所述TEE操作***对所述加密文件进行解密,得到解密文件,所述解密文件包括所述目标动态库。
6.根据权利要求1或2所述的方法,其特征在于,所述目标服务的运行请求由部署在所述REE操作***的目标客户端应用程序CA发送,所述目标CA有调用所述目标服务的权限,所述目标动态库由所述REE操作***响应于第二传递请求发送给所述TEE操作***,其中,所述第二传递请求由所述目标CA响应于第一传递请求发送给所述REE操作***,所述第一传递请求由所述目标TA响应于所述目标服务的运行请求发送给所述目标CA。
7.根据权利要求1至6中任意一项所述的方法,其特征在于,所述TEE操作***启动目标TA,包括:
所述TEE操作***从所述REE操作***获取一个或多个动态库,并将所述一个或多个动态库存储在所述TEE操作***的内存空间中,其中,所述一个或多个动态库被记录在所述目标TA的目标文件中。
8.根据权利要求1至7中任意一项所述的方法,其特征在于,所述TEE操作***加载所述目标动态库到所述目标TA的内存空间中,包括:
所述TEE操作***根据目标权限信息判断所述目标TA是否具有调用所述目标动态库的权限;
基于所述目标TA具有调用所述目标动态库的权限,所述TEE操作***将所述目标动态库加载到所述目标TA的内存空间中。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述方法还包括:
所述TEE操作***获取所述目标TA响应于所述目标服务的运行请求发送的内存请求,所述内存请求用于向所述TEE操作***申请运行所述目标服务所需的内存;
响应于所述内存请求,所述TEE操作***向所述REE操作***获取内存分配信息,所述内存分配信息用于指示所述REE操作***将第一内存分配给所述TEE操作***;
所述TEE操作***将所述第一内存分配给所述目标TA。
10.根据权利要求9所述的方法,其特征在于,所述第一内存大于所述内存请求所申请的内存。
11.根据权利要求9所述的方法,其特征在于,所述TEE操作***将所述第一内存分配给目标TA,包括:
所述TEE操作***将所述第一内存配置为安全内存;
所述TEE操作***将配置为安全内存的所述第一内存分配给所述目标TA。
12.根据权利要求9至11中任意一项所述的方法,其特征在于,在所述TEE操作***将所述第一内存分配给所述目标TA之后,所述方法还包括:
所述TEE操作***接收所述目标TA发送的TA内存释放请求,所述TA内存释放请求用于请求所述TEE操作***释放所述第一内存;
响应于所述TA内存释放请求,所述TEE操作***释放所述第一内存。
13.根据权利要求12所述的方法,其特征在于,所述TEE操作***释放所述第一内存,包括:
所述TEE操作***将所述第一内存配置为非安全内存;
所述TEE操作***释放被配置为非安全内存的所述第一内存。
14.根据权利要求12所述的方法,其特征在于,在所述TEE操作***释放所述第一内存之后,所述方法还包括:
所述TEE操作***向所述REE操作***发送TEE内存释放请求,所述TEE内存释放请求用于请求所述REE操作***释放所述第一内存。
15.一种可信应用程序TA的运行方法,其特征在于,应用于计算机***,所述计算机***上部署有富执行环境REE和可信执行环境TEE,所述REE内部署有REE操作***,所述TEE内部署有TEE操作***,所述TEE操作***上部署有一个或多个可信应用程序TA,所述方法包括:
所述TEE操作***启动目标TA,所述目标TA为所述一个或多个TA中的任意一个TA;
所述TEE操作***为所述目标TA提供目标动态库,所述目标动态库由所述目标TA加载至所述目标TA的内存空间中,以支持所述目标TA运行目标服务,所述目标服务为所述目标TA提供的服务。
16.根据权利要求15所述的方法,其特征在于,所述TEE操作***为所述目标TA提供所述目标动态库,包括:
所述TEE操作***接收所述目标TA响应于所述目标服务的运行请求发送的获取请求,所述获取请求用于指示所述TEE操作***获取所述目标动态库;
响应于所述获取请求,所述TEE操作***获取所述目标动态库。
17.根据权利要求16所述的方法,其特征在于,所述TEE操作***获取所述目标动态库,包括:
所述TEE操作***从所述REE操作***获取所述目标动态库。
18.根据权利要求17所述的方法,其特征在于,所述TEE操作***从所述REE操作***获取所述目标动态库,包括:
所述TEE操作***向所述REE操作***发送所述目标动态库的传递请求,所述传递请求包括所述目标动态库的标识,所述传递请求用于指示所述REE操作***将所述目标动态库发送到所述TEE操作***;
所述TEE操作***接收所述REE操作***发送的所述目标动态库。
19.根据权利要求17所述的方法,其特征在于,所述TEE操作***从所述REE操作***获取所述目标动态库,包括:
所述TEE操作***从所述REE操作***获取加密文件;
所述TEE操作***对所述加密文件进行解密,得到解密文件,所述解密文件包括所述目标动态库。
20.根据权利要求15所述的方法,其特征在于,所述TEE操作***为所述目标TA提供所述目标动态库包括:
所述TEE操作***接收所述REE操作***响应于第二传递请求发送的所述目标动态库,所述目标服务的运行请求由部署在所述REE操作***的目标客户端应用程序CA发送,所述目标CA有调用所述目标服务的权限,所述第二传递请求由所述目标CA响应于第一传递请求发送给所述REE操作***,所述第一传递请求由所述目标TA响应于所述目标服务的运行请求发送给所述目标CA。
21.根据权利要求15至20中任一项所述的方法,其特征在于,所述TEE操作***启动目标TA,包括:
所述TEE操作***从所述REE操作***获取一个或多个动态库,并将所述一个或多个动态库存储在所述TEE操作***的内存空间中,其中,所述一个或多个动态库被记录在所述目标TA的目标文件中。
22.根据权利要求15至21中任一项所述的方法,其特征在于,所述TEE操作***为所述目标TA提供所述目标动态库包括:
所述TEE操作***接收所述目标TA发送的访问请求,所述访问请求用于请求访问所述TEE操作***的内存空间,所述目标动态库存储在所述TEE操作***的内存空间;
基于所述目标TA具有访问所述TEE操作***的内存空间的权限,所述TEE操作***向所述目标TA发送允许访问信息,所述允许访问信息用于通知所述目标TA访问所述TEE操作***的内存空间。
23.根据权利要求22所述的方法,其特征在于,所述访问请求用于请求访问所述目标动态库;
所述TEE操作***向所述目标TA发送允许访问信息包括:
基于所述目标TA具有访问所述TEE操作***的内存空间的权限,并且,基于所述目标TA具有调用所述目标动态库的权限,所述TEE操作***向所述目标TA发送所述应答信息。
24.一种可信应用程序TA的运行方法,其特征在于,应用于计算机***,所述计算机***上部署有富执行环境REE和可信执行环境TEE,所述REE内部署有REE操作***,所述TEE内部署有TEE操作***,所述TEE操作***上部署有一个或多个TA,所述方法包括:
响应于目标服务的运行请求,目标TA加载目标动态库到所述目标TA的内存空间中,所述目标TA为所述一个或多个TA中的任意一个TA,所述目标服务为所述目标TA提供的服务;
所述目标TA利用所述目标动态库运行所述目标服务。
25.根据权利要求24所述的方法,其特征在于,所述目标TA加载目标动态库到所述目标TA的内存空间中,包括:
所述目标TA向所述TEE操作***发送获取请求,所述获取请求用于请求所述TEE操作***获取所述目标动态库;
所述目标TA将所述TEE操作***获取到的所述目标动态库加载到所述目标TA的内存空间中。
26.根据权利要求25所述的方法,其特征在于,所述目标动态库为所述TEE操作***从所述REE操作***获取的。
27.根据权利要求24所述的方法,其特征在于,所述目标TA加载目标动态库到所述目标TA的内存空间中,包括:
所述目标TA向目标客户端应用程序CA发送第一传递请求,所述目标CA部署在所述REE操作***中,并且有调用所述目标服务的权限,所述目标服务的运行请求由所述目标CA发送;
所述目标TA将所述TEE操作***接收的所述目标动态库加载到所述目标TA的内存空间中,所述目标动态库由所述REE操作***响应于第二传递请求发送给所述TEE操作***,所述第二传递请求由所述目标CA响应于所述第一传递请求发送给所述REE操作***。
28.根据权利要求24至27中任一项所述的方法,其特征在于,所述目标TA加载目标动态库到所述目标TA的内存空间中,包括:
所述目标TA从所述TEE操作***的内存空间加载所述目标动态库到所述目标TA的内存空间中。
29.根据权利要求28所述的方法,其特征在于,所述目标TA从所述TEE操作***的内存空间加载所述目标动态库到所述目标TA的内存空间中,包括:
所述目标TA向所述TEE操作***发送访问请求,所述访问请求用于请求访问所述TEE操作***的内存空间,所述目标动态库存储在所述TEE操作***的内存空间中;
基于接收到所述TEE操作***发送的允许访问信息,所述目标TA访问将所述TEE操作***的内存空间中的所述目标动态库,并将所述目标动态库加载到所述目标TA的内存空间中。
30.一种信息处理方法,其特征在于,应用于计算机***,所述计算机***上部署有富执行环境REE和可信执行环境TEE,所述REE内部署有REE操作***,所述TEE内部署有TEE操作***,所述方法包括:
响应于传递请求,所述REE操作***获取目标文件,所述传递请求用于指示所述REE操作***将所述目标文件传递至所述TEE操作***;
所述REE操作***将所述目标文件发送给所述TEE操作***。
31.根据权利要求30所述的方法,其特征在于,所述目标文件为目标动态库,所述目标动态库用于加载至目标TA的内存空间中,以支持所述目标TA运行目标服务,所述目标服务为目标TA提供的服务,所述目标TA为所述TEE操作***上部署的一个或多个TA中的任意一个TA。
32.根据权利要求31所述的方法,其特征在于,所述传递请求为所述TEE操作***发送的,或者,所述传递请求为目标客户端应用程序CA发送的,所述目标CA有调用所述目标服务的权限。
33.一种内存分配方法,其特征在于,应用于计算机***,所述计算机***上部署有富执行环境REE和可信执行环境TEE,所述REE内部署有REE操作***,所述TEE内部署有TEE操作***,其特征在于,所述方法包括:
所述TEE操作***向所述REE操作***发送第一内存请求,所述第一内存请求用于请求所述REE操作***为是TEE操作***分配内存;
所述TEE操作***接收所述REE操作***发送的内存分配信息,所述内存分配信息用于指示为所述TEE操作***分配的内存为目标内存;
所述TEE操作***将所述目标内存配置为安全内存。
34.根据权利要求33所述的方法,其特征在于,所述TEE操作***向所述REE操作***发送第一内存请求之前,所述方法还包括:
所述TEE操作***获取目标TA发送的第二内存请求,所述目标TA为所述TEE操作***上部署的一个或多个TA中的任意一个TA,所述第二内存请求用于向所述TEE操作***申请内存。
35.根据权利要求34所述的方法,其特征在于,所述TEE操作***将所述目标内存配置为安全内存之后,所述方法还包括:
所述TEE操作***将所述目标内存分配给所述目标TA。
36.根据权利要求34或35所述的方法,其特征在于,所述第二内存请求为所述目标TA响应于目标服务的运行请求发送的,所述第二内存请求用于申请所述目标TA运行所述目标服务所需的内存,所述目标服务为所述目标TA提供的服务。
37.根据权利要34至36中任一项所述的方法,其特征在于,所述第一内存请求申请的内存大于所述第二内存申请的内存。
38.根据权利要求35所述的方法,其特征在于,在所述TEE操作***将所述第一内存分配给所述目标TA之后,所述方法还包括:
所述TEE操作***接收所述目标TA发送的TA内存释放请求,所述TA内存释放请求用于请求所述TEE操作***释放所述目标内存;
响应于所述TA内存释放请求,所述TEE操作***释放所述目标内存。
39.根据权利要求38所述的方法,其特征在于,在所述TEE操作***释放所述目标内存之后,所述方法还包括:
所述TEE操作***将所述目标内存配置为非安全内存;
所述TEE操作***向所述REE操作***发送TEE内存释放请求,所述TEE内存释放请求用于请求所述REE操作***释放所述目标内存。
40.一种可信执行环境TEE操作***,其特征在于,所述TEE操作***部署于计算机***上的TEE中,所述计算机***上还部署有富执行环境REE,所述REE内部署有REE操作***,所述TEE操作***上部署有一个或多个TA,所述TEE操作***包括:
启动模块,用于启动目标TA,所述目标TA为所述一个或多个TA中的任意一个TA;
接收模块,用于接收所述目标TA响应于目标服务的运行请求发送的加载请求,所述加载请求用于指示加载目标动态库,其中,所述目标服务为所述目标TA提供的服务;
加载模块,用于响应于所述加载请求,加载所述目标动态库到所述目标TA的内存空间中,所述目标动态库用于支持所述目标服务的运行。
41.根据权利要求40所述的TEE操作***,其特征在于,所述加载模块用于:
从所述TEE操作***的内存空间加载所述目标动态库到所述目标TA的内存空间中。
42.根据权利要求40所述的TEE操作***,其特征在于,所述加载模块包括:
TEE通信单元,用于从所述REE操作***获取所述目标动态库;
动态库加载单元,用于将所述目标动态库加载到所述目标TA的内存空间中。
43.根据权利要求42所述的TEE操作***,其特征在于,所述TEE通信单元用于:
向所述REE操作***发送所述目标动态库的传递请求,所述传递请求包括所述目标动态库的标识,所述传递请求用于指示所述REE操作***将所述目标动态库发送到所述TEE操作***;
接收所述REE操作***发送的所述目标动态库。
44.根据权利要求42所述的TEE操作***,其特征在于,所述TEE通信单元用于:
从所述REE操作***获取加密文件;
对所述加密文件进行解密,得到解密文件,所述解密文件包括所述目标动态库。
45.根据权利要求40至44中任意一项所述的TEE操作***,其特征在于,所述启动模块用于:
从所述REE操作***获取一个或多个动态库,并将所述一个或多个动态库存储在所述TEE操作***的内存空间中,其中,所述一个或多个动态库被记录在所述目标TA的目标文件中。
46.根据权利要求40至45中任意一项所述的TEE操作***,其特征在于,所述加载模块用于:
根据目标权限信息判断所述目标TA是否具有调用所述目标动态库的权限;
基于所述目标TA具有调用所述目标动态库的权限,将所述目标动态库加载到所述目标TA的内存空间中。
47.根据权利要求40至46中任一项所述的TEE操作***,其特征在于,所述TEE操作***还包括TEE内存模块,所述TEE内存模块用于:
获取所述目标TA响应于所述目标服务的运行请求发送的内存请求,所述内存请求用于向所述TEE操作***申请运行所述目标服务所需的内存;
响应于所述内存请求,向所述REE操作***获取内存分配信息,所述内存分配信息用于指示所述REE操作***将第一内存分配给所述TEE操作***;
将所述第一内存分配给所述目标TA。
48.根据权利要求47所述的TEE操作***,其特征在于,所述TEE内存模块具体用于:
将所述第一内存配置为安全内存;
将配置为安全内存的所述第一内存分配给所述目标TA。
49.根据权利要求47或48所述的TEE操作***,其特征在于,所述TEE内存模块还用于:
在将所述第一内存分配给所述目标TA之后,接收所述目标TA发送的TA内存释放请求,所述TA内存释放请求用于请求所述TEE操作***释放所述第一内存;
响应于所述TA内存释放请求,释放所述第一内存。
50.根据权利要求49所述的TEE操作***,其特征在于,所述TEE内存模块具体用于:
将所述第一内存配置为非安全内存;
释放被配置为非安全内存的所述第一内存。
51.根据权利要求49所述的TEE操作***,其特征在于,所述TEE内存模块还用于:
在释放所述第一内存之后,向所述REE操作***发送TEE内存释放请求,所述TEE内存释放请求用于请求所述REE操作***释放所述第一内存。
52.一种可信执行环境TEE操作***,其特征在于,所述TEE操作***部署于计算机***上的TEE中,所述计算机***上还部署有富执行环境REE,所述REE内部署有REE操作***,所述TEE操作***上部署有一个或多个TA,所述TEE操作***包括:
启动模块,用于启动目标TA,所述目标TA为所述一个或多个TA中的任意一个TA;
动态库提供模块,用于为所述目标TA提供目标动态库,所述目标动态库由所述目标TA加载至所述目标TA的内存空间中,以支持所述目标TA运行目标服务,所述目标服务为所述目标TA提供的服务。
53.根据权利要求52所述的TEE操作***,其特征在于,所述动态库提供模块包括:
获取请求接收单元,用于接收所述目标TA响应于所述目标服务的运行请求发送的获取请求,所述获取请求用于指示所述TEE操作***获取所述目标动态库;
动态库获取单元,用于响应于所述获取请求,获取所述目标动态库。
54.根据权利要求53所述的TEE操作***,其特征在于,所述动态库获取单元用于从所述REE操作***获取所述目标动态库。
55.根据权利要求54所述的TEE操作***,其特征在于,所述动态库获取单元具体用于:
向所述REE操作***发送所述目标动态库的传递请求,所述传递请求包括所述目标动态库的标识,所述传递请求用于指示所述REE操作***将所述目标动态库发送到所述TEE操作***;
接收所述REE操作***发送的所述目标动态库。
56.根据权利要求54所述的TEE操作***,其特征在于,所述动态库获取单元具体用于:
从所述REE操作***获取加密文件;
对所述加密文件进行解密,得到解密文件,所述解密文件包括所述目标动态库。
57.根据权利要求52所述的TEE操作***,其特征在于,所述动态库提供模块具体用于:
接收所述REE操作***响应于第二传递请求发送的所述目标动态库,所述目标服务的运行请求由部署在所述REE操作***的目标客户端应用程序CA发送,所述目标CA有调用所述目标服务的权限,所述第二传递请求由所述目标CA响应于第一传递请求发送给所述REE操作***,所述第一传递请求由所述目标TA响应于所述目标服务的运行请求发送给所述目标CA。
58.根据权利要求52至57中任一项所述的TEE操作***,其特征在于,所述启动模块包括:
从所述REE操作***获取一个或多个动态库,并将所述一个或多个动态库存储在所述TEE操作***的内存空间中,其中,所述一个或多个动态库被记录在所述目标TA的目标文件中。
59.根据权利要求52至58中任一项所述的TEE操作***,其特征在于,所述动态库提供模块包括:
访问请求接收单元,用于接收所述目标TA发送的访问请求,所述访问请求用于请求访问所述TEE操作***的内存空间,所述目标动态库存储在所述TEE操作***的内存空间;
允许信息发送单元,用于基于所述目标TA具有访问所述TEE操作***的内存空间的权限,向所述目标TA发送允许访问信息,所述允许访问信息用于通知所述目标TA访问所述TEE操作***的内存空间。
60.根据权利要求59所述的TEE操作***,其特征在于,所述访问请求用于请求访问所述目标动态库;
所述允许信息发送单元用于:
基于所述目标TA具有访问所述TEE操作***的内存空间的权限,并且,基于所述目标TA具有调用所述目标动态库的权限,向所述目标TA发送所述应答信息。
61.一种可信应用程序TA,其特征在于,所述TA部署在可信执行环境TEE操作***上,所述TEE操作***部署在计算机***的TEE内,所述计算机***上还部署有富执行环境REE,所述REE内部署有REE操作***,所述TA包括:
加载模块,用于响应于目标服务的运行请求,加载目标动态库到所述目标TA的内存空间中,所述目标TA为所述一个或多个TA中的任意一个TA,所述目标服务为所述目标TA提供的服务;
服务运行模块,用于利用所述目标动态库运行所述目标服务。
62.根据权利要求61所述的TA,其特征在于,所述目标动态库由所述TEE操作***提供给所述目标TA。
63.根据权利要求62所述的TA,其特征在于,所述加载模块用于:
向所述TEE操作***发送获取请求,所述获取请求用于请求所述TEE操作***获取所述目标动态库;
将所述TEE操作***获取到的所述目标动态库加载到所述目标TA的内存空间中。
64.根据权利要求63所述的TA,其特征在于,所述目标动态库为所述TEE操作***从所述REE操作***获取的。
65.根据权利要求62所述的TA,其特征在于,所述加载模块用于:
向目标客户端应用程序CA发送第一传递请求,所述目标CA部署在所述REE操作***中,并且有调用所述目标服务的权限,所述目标服务的运行请求由所述目标CA发送;
将所述TEE操作***接收的所述目标动态库加载到所述目标TA的内存空间中,所述目标动态库由所述REE操作***响应于第二传递请求发送给所述TEE操作***,所述第二传递请求由所述目标CA响应于所述第一传递请求发送给所述REE操作***。
66.根据权利要求62至65中任一项所述的TA,其特征在于,所述加载模块用于:
从所述TEE操作***的内存空间加载所述目标动态库到所述目标TA的内存空间中。
67.根据权利要求66所述的TA,其特征在于,所述加载模块具体用于:
向所述TEE操作***发送访问请求,所述访问请求用于请求访问所述TEE操作***的内存空间,所述目标动态库存储在所述TEE操作***的内存空间中;
基于接收到所述TEE操作***发送的允许访问信息,访问将所述TEE操作***的内存空间中的所述目标动态库,并将所述目标动态库加载到所述目标TA的内存空间中。
68.一种富执行环境REE操作***,其特征在于,所述REE操作***部署于计算机***上的REE中,所述计算机***上还部署有可信执行环境TEE,所述TEE内部署有TEE操作***,所述REE操作***包括:
文件获取模块,用于响应于传递请求,获取目标文件,所述传递请求用于指示所述REE操作***将所述目标文件传递至所述TEE操作***;
REE通信模块,用于将所述目标文件发送给所述TEE操作***。
69.根据权利要求68所述的REE操作***,其特征在于,所述目标文件为目标动态库,所述目标动态库用于加载至目标TA的内存空间中,以支持所述目标TA运行目标服务,所述目标服务为目标TA提供的服务,所述目标TA为所述TEE操作***上部署的一个或多个TA中的任意一个TA。
70.根据权利要求69所述的REE操作***,其特征在于,所述传递请求为所述TEE操作***发送的,或者,所述传递请求为目标客户端应用程序CA发送的,所述目标CA有调用所述目标服务的权限。
71.一种可信执行环境TEE操作***,其特征在于,所述TEE操作***部署于计算机***上的TEE中,所述计算机***上还部署有富执行环境REE,所述REE内部署有REE操作***,所述TEE操作***包括:
内存申请模块,用于向所述REE操作***发送第一内存请求,所述第一内存请求用于请求所述REE操作***为是TEE操作***分配内存;
内存接收模块,用于接收所述REE操作***发送的内存分配信息,所述内存分配信息用于指示为所述TEE操作***分配的内存为目标内存;
内存配置模块,用于将所述目标内存配置为安全内存。
72.根据权利要求71所述的TEE操作***,其特征在于,所述内存申请模块还用于:
在向所述REE操作***发送第一内存请求之前,获取目标TA发送的第二内存请求,所述目标TA为所述TEE操作***上部署的一个或多个TA中的任意一个TA,所述第二内存请求用于向所述TEE操作***申请内存。
73.根据权利要求72所述的TEE操作***,其特征在于,所述内存配置模块还用于:
在将所述目标内存配置为安全内存之后,将所述目标内存分配给所述目标TA。
74.根据权利要求72或73所述的TEE操作***,其特征在于,所述第二内存请求为所述目标TA响应于目标服务的运行请求发送的,所述第二内存请求用于申请所述目标TA运行所述目标服务所需的内存,所述目标服务为所述目标TA提供的服务。
75.根据权利要72至74中任一项所述的TEE操作***,其特征在于,所述第一内存请求申请的内存大于所述第二内存申请的内存。
76.根据权利要求73所述的TEE操作***,其特征在于,所述内存申请模块还用于:
在所述内存配置模块将所述第一内存分配给所述目标TA之后,接收所述目标TA发送的TA内存释放请求,所述TA内存释放请求用于请求所述TEE操作***释放所述目标内存;
响应于所述TA内存释放请求,释放所述目标内存。
77.根据权利要求76所述的TEE操作***,其特征在于,所述内存配置模块还用于,在所述内存配置模块释放所述目标内存之后,将所述目标内存配置为非安全内存;
所述内存申请模块还用于向所述REE操作***发送TEE内存释放请求,所述TEE内存释放请求用于请求所述REE操作***释放所述目标内存。
78.一种计算机设备,其特征在于,包括处理器和存储器,该处理器在运行所述存储器存储的计算机指令时,执行如权利要求1至39中任一项所述的方法。
79.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至39中任一项所述的方法。
80.一种计算机程序产品,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至39中任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910817794.3A CN112528288A (zh) | 2019-08-30 | 2019-08-30 | 可信应用的运行方法、信息处理和内存分配方法及装置 |
PCT/CN2020/106685 WO2021036706A1 (zh) | 2019-08-30 | 2020-08-04 | 可信应用的运行方法、信息处理和内存分配方法及装置 |
EP20858803.8A EP4016347A4 (en) | 2019-08-30 | 2020-08-04 | TRUSTED APPLICATION METHOD AND APPARATUS AND INFORMATION PROCESSING AND STORAGE METHOD AND APPARATUS |
US17/682,034 US20220277108A1 (en) | 2019-08-30 | 2022-02-28 | Trusted Application Running Method, Information Processing Method, Memory Allocation Method, and Apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910817794.3A CN112528288A (zh) | 2019-08-30 | 2019-08-30 | 可信应用的运行方法、信息处理和内存分配方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112528288A true CN112528288A (zh) | 2021-03-19 |
Family
ID=74684453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910817794.3A Pending CN112528288A (zh) | 2019-08-30 | 2019-08-30 | 可信应用的运行方法、信息处理和内存分配方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220277108A1 (zh) |
EP (1) | EP4016347A4 (zh) |
CN (1) | CN112528288A (zh) |
WO (1) | WO2021036706A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113553204A (zh) * | 2021-09-16 | 2021-10-26 | 支付宝(杭州)信息技术有限公司 | 一种数据传输方法及装置 |
CN113645014A (zh) * | 2021-10-13 | 2021-11-12 | 北京创米智汇物联科技有限公司 | 基于智能安防设备的数据处理方法、设备及存储介质 |
CN114564150A (zh) * | 2022-02-28 | 2022-05-31 | 无锡江南计算技术研究所 | 动态链接模式片上存储器空间分配方法 |
WO2022228287A1 (zh) * | 2021-04-26 | 2022-11-03 | 华为技术有限公司 | 内存数据获取方法、装置及存储介质 |
WO2023123703A1 (zh) * | 2021-12-31 | 2023-07-06 | 展讯通信(上海)有限公司 | 图像隐私保护方法及装置 |
WO2024002124A1 (zh) * | 2022-06-30 | 2024-01-04 | 华为技术有限公司 | 远程证明方法、装置、***、存储介质及计算机程序产品 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111401901B (zh) * | 2020-03-23 | 2021-06-04 | 腾讯科技(深圳)有限公司 | 生物支付设备的认证方法、装置、计算机设备和存储介质 |
CN115048642B (zh) * | 2021-11-29 | 2023-04-25 | 荣耀终端有限公司 | 多可信执行环境下可信应用间的通信方法及电子设备 |
US20220092196A1 (en) * | 2021-12-08 | 2022-03-24 | Intel Corporation | Mechanism for secure library sharing |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106845285B (zh) * | 2016-12-28 | 2023-04-07 | 北京握奇智能科技有限公司 | 一种tee***与ree***配合以实现服务的方法及终端设备 |
CN107220189A (zh) * | 2017-03-14 | 2017-09-29 | 晨星半导体股份有限公司 | 内存空间管理及内存访问控制方法及装置 |
CN108959916B (zh) * | 2017-05-22 | 2022-01-14 | 华为技术有限公司 | 用于访问安全世界的方法、装置和*** |
-
2019
- 2019-08-30 CN CN201910817794.3A patent/CN112528288A/zh active Pending
-
2020
- 2020-08-04 EP EP20858803.8A patent/EP4016347A4/en active Pending
- 2020-08-04 WO PCT/CN2020/106685 patent/WO2021036706A1/zh unknown
-
2022
- 2022-02-28 US US17/682,034 patent/US20220277108A1/en active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022228287A1 (zh) * | 2021-04-26 | 2022-11-03 | 华为技术有限公司 | 内存数据获取方法、装置及存储介质 |
CN113553204A (zh) * | 2021-09-16 | 2021-10-26 | 支付宝(杭州)信息技术有限公司 | 一种数据传输方法及装置 |
CN113553204B (zh) * | 2021-09-16 | 2021-12-28 | 支付宝(杭州)信息技术有限公司 | 一种数据传输方法及装置 |
CN113645014A (zh) * | 2021-10-13 | 2021-11-12 | 北京创米智汇物联科技有限公司 | 基于智能安防设备的数据处理方法、设备及存储介质 |
WO2023123703A1 (zh) * | 2021-12-31 | 2023-07-06 | 展讯通信(上海)有限公司 | 图像隐私保护方法及装置 |
CN114564150A (zh) * | 2022-02-28 | 2022-05-31 | 无锡江南计算技术研究所 | 动态链接模式片上存储器空间分配方法 |
CN114564150B (zh) * | 2022-02-28 | 2024-03-22 | 无锡江南计算技术研究所 | 动态链接模式片上存储器空间分配方法 |
WO2024002124A1 (zh) * | 2022-06-30 | 2024-01-04 | 华为技术有限公司 | 远程证明方法、装置、***、存储介质及计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
US20220277108A1 (en) | 2022-09-01 |
EP4016347A4 (en) | 2022-10-05 |
WO2021036706A1 (zh) | 2021-03-04 |
EP4016347A1 (en) | 2022-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112528288A (zh) | 可信应用的运行方法、信息处理和内存分配方法及装置 | |
US9230085B1 (en) | Network based temporary trust extension to a remote or mobile device enabled via specialized cloud services | |
CN102640160B (zh) | 用于控制资源访问的方法和装置 | |
CN106598584B (zh) | 一种处理资源文件的方法、装置和*** | |
US11579899B2 (en) | Method and device for dynamically managing kernel node | |
KR101760822B1 (ko) | 보안을 구현하기 위한 방법, 방화벽, 단말 및 판독가능 저장 매체 | |
CN110457894B (zh) | root权限的分配方法、装置、存储介质及终端设备 | |
CN109416800B (zh) | 一种移动终端的认证方法及移动终端 | |
WO2015014185A1 (en) | Method, device and system for detecting malware in mobile terminal | |
WO2013075412A1 (zh) | 移动终端的安全控制方法及装置 | |
CN109964227A (zh) | 更新SELinux安全策略的方法及终端 | |
KR20150017844A (ko) | 페이지 구성 방법 및 이를 지원하는 전자 장치 | |
CN113032766A (zh) | 应用权限管理的方法和装置 | |
US9141428B2 (en) | Information processing apparatus and information processing method | |
KR101223981B1 (ko) | 안전한 애플리케이션 실행을 위한 가상화 장치, 서버 및 방법 | |
CN114844726B (zh) | 防火墙实现方法、芯片、电子设备及计算机可读存储介质 | |
CN113468606A (zh) | 一种应用程序的访问方法及电子设备 | |
CN114826785B (zh) | 一种动态防护方法、***级芯片、电子设备及介质 | |
US20230350738A1 (en) | Method for Reusing Shared Library and Electronic Device | |
CN111444539B (zh) | 一种权限处理方法、装置、存储介质及终端 | |
CN116415247A (zh) | 一种容器安全校验的方法及装置 | |
CN116089924A (zh) | 一种权限数据访问的方法、装置、计算机设备和存储介质 | |
US20160092672A1 (en) | System and method for securing inter-component communications in an operating system | |
CN110140124B (zh) | 分组应用使用同一密钥共享数据 | |
KR20140127124A (ko) | 시스템 자원에 대한 접근을 관리하는 전자 장치 |
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 |