CN113239329B - 一种用于移动端应用程序的可信执行环境的实现系统 - Google Patents
一种用于移动端应用程序的可信执行环境的实现系统 Download PDFInfo
- Publication number
- CN113239329B CN113239329B CN202110440695.5A CN202110440695A CN113239329B CN 113239329 B CN113239329 B CN 113239329B CN 202110440695 A CN202110440695 A CN 202110440695A CN 113239329 B CN113239329 B CN 113239329B
- Authority
- CN
- China
- Prior art keywords
- execution environment
- trusted execution
- module
- world
- application program
- 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.)
- Active
Links
- 230000002093 peripheral effect Effects 0.000 claims abstract description 161
- 238000012795 verification Methods 0.000 claims abstract description 30
- 230000015654 memory Effects 0.000 claims description 77
- 238000004891 communication Methods 0.000 claims description 21
- 238000011161 development Methods 0.000 claims description 20
- 238000013507 mapping Methods 0.000 claims description 15
- 238000000034 method Methods 0.000 claims description 13
- 230000007246 mechanism Effects 0.000 claims description 12
- 238000002955 isolation Methods 0.000 claims description 11
- 230000006978 adaptation Effects 0.000 claims description 6
- 238000004806 packaging method and process Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims description 3
- 238000009434 installation Methods 0.000 claims description 3
- 230000008859 change Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000005206 flow analysis Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开一种用于移动端应用程序的可信执行环境的实现系统,其特征在于,包括移动端设备侧和应用程序开发者侧;所述移动端设备侧包括普通世界非安全敏感环境、普通世界可信执行环境和安全世界;所述普通世界非安全敏感环境包括不可信操作系统、可信执行环境管理模块和非安全敏感应用程序;所述普通世界可信执行环境包括安全操作系统、系统管理模块和安全敏感应用程序;所述安全世界包括可信操作系统、完整性验证模块、可信应用程序、EL3安全监视器;所述EL3安全监视器包括ARM可信固件、中断管理模块、页表管理模块、系统启动模块、系统关闭模块、外设访问模块、资源调整模块;所述应用程序开发者侧包括应用程序拆分模块、库生成模块。
Description
技术领域
本发明涉及一种用于移动端应用程序的可信执行环境的实现系统,属于移动端设备用户隐私和数据安全技术领域。
背景技术
随着移动端设备和移动端应用程序的迅速发展,移动端计算已经显著改变了人们的日常生活,使得人们的生活越来越方便。但是移动端的迅猛发展,使得用户隐私以及公司机密数据的宝贵价值愈发显现了出来,吸引了很多恶意攻击者来窃取用户隐私或机密数据。因此,移动端计算的安全性变得愈加重要。
作为移动端芯片主力的ARM,在2003年推出了ARM平台的可信执行环境TrustZone。可信执行环境是处理器中的安全区域,它保证加载到其中的代码和数据在保密性和完整性方面受到保护。TrustZone正是基于硬件机制保护的可信执行环境,可以用来保护移动端计算的安全性。TrustZone将片上系统(System on Chip)的资源分成两个隔离的世界,即普通世界(Normal World)和安全世界(Secure World),以安全地管理处理器、内存和外部设备。其中普通世界只能访问普通世界的资源,不能访问安全世界的资源;而安全世界可以访问普通世界和安全世界的资源。在支持TrustZone的ARM芯片中,有着不同的特权级和执行模式,普通世界中有EL0(运行用户程序)、EL1(运行操作系统)、EL2(运行虚拟机管理程序);安全世界中有EL0(运行可信应用程序)、EL1(运行可信操作系统);EL3(运行可信固件)是最高特权级,负责中断处理、普通世界和安全世界之间的切换等。因为安全世界可以访问普通世界的资源,安全世界相比普通世界具有更高的权限,如果安全世界被滥用,则可能会引发严重的安全问题。因此往往只有移动端设备厂商才能控制安全世界,安全世界的程序往往在设备出厂后不再更改,厂商可以利用安全世界进行可信计算,但是移动端普通应用程序往往很难使用安全世界来保护自己的隐私和机密数据。除此之外,安全世界的资源非常有限,例如可以使用的内存非常小;并且安全世界的可信操作系统往往非常简洁,支持的功能非常有限,使得实现复杂的可信应用程序非常困难,这是因为系统越复杂,那么存在漏洞的可能性就会越大,而如果系统非常简洁,就有可能通过形式化验证等方法验证系统的安全性。
近年来移动端应用程序在飞速发展,现在的移动端应用程序生态已经百花齐放,在当前移动端场景下,移动端应用程序已经成为激烈的商业竞争的关键渠道。从安全的角度出发,越来越多的移动端应用程序迫切希望能够得到可信执行环境级别的保护,使得它们能够防御来自恶意软件或者被攻破的操作系统的攻击。然而,TrustZone一直存在着用户使用门槛高的难题,在很多移动端设备中,TrustZone并没有被使用、甚至是完全空白的,只有非常少的应用程序能在厂商的严格控制之下使用TrustZone。这显然无法满足当今移动端应用程序的安全需求。TrustZone在ARM v8.4标准中引入了对TrustZone安全世界的虚拟化支持,使得安全世界中支持EL2,从而能够为应用程序提供虚拟可信执行环境。这一特性可以一定程度上降低TrustZone的使用门槛,但是依然面临着安全世界资源受限、功能受限的问题;另外,这一特性目前仅仅出现在了ARM v8.4标准中,目前尚未发布支持该特性的硬件,所以目前无法用来解决移动端应用程序面临的严峻安全问题。
因此,目前TrustZone对移动端应用程序并不足够友好,而移动端应用程序又迫切希望能够得到可信执行环境级别的保护,因此需要一种用于移动端应用程序的可信执行环境的实现系统。
发明内容
发明目的:针对现有技术中存在的问题与不足,本发明提供一种用于移动端应用程序的可信执行环境的实现系统,以开发者为中心,能够极大地降低应用程序开发者使用可信执行环境的使用门槛;也解决了传统TrustZone架构面临的资源受限、功能受限的问题;该方法足够轻量,使得该方法实现的可信执行环境非常高效。
技术方案:一种用于移动端应用程序的可信执行环境的实现系统,包括移动端设备侧和应用程序开发者侧;所述移动端设备侧包括普通世界非安全敏感环境、普通世界可信执行环境和安全世界;所述普通世界非安全敏感环境包括不可信操作系统、可信执行环境管理模块和非安全敏感应用程序;所述普通世界可信执行环境包括安全操作系统、系统管理模块和安全敏感应用程序;所述安全世界包括可信操作系统、完整性验证模块、可信应用程序、EL3安全监视器(secure monitor);所述EL3安全监视器包括ARM可信固件、中断管理模块、页表管理模块、系统启动模块、系统关闭模块、外设访问模块、资源调整模块。所述应用程序开发者侧包括应用程序拆分模块、库生成模块。
所述不可信操作系统是运行在普通世界非安全敏感环境的操作系统,主要负责为应用程序提供运行环境。
所述可信执行环境管理模块是不可信操作系统中的内核模块,负责管理普通世界可信执行环境的资源,负责加载普通世界可信执行环境的镜像、维护元数据以及预分配资源,负责与普通世界可信执行环境之间的通信、外设切换、资源调整。
所述非安全敏感应用程序是不可信操作系统中的应用程序的非安全敏感部分,需要使用普通世界可信执行环境的应用程序,将被拆分为两部分,非安全敏感部分和安全敏感部分,分别对应非安全敏感应用程序和安全敏感应用程序。
所述普通世界可信执行环境是安全敏感代码的执行环境,运行在普通世界中,与普通世界非安全敏感环境是隔离的;普通世界可信执行环境可以同时并行运行多个,每个普通世界可信执行环境之间也是隔离的;每个普通世界可信执行环境都会至少独占一个处理器核和一块内存区域。
所述安全操作系统是运行在普通世界可信执行环境的操作系统,主要负责为安全敏感应用程序提供运行环境。
所述系统管理模块是运行在安全操作系统中的内核模块,负责与普通世界非安全敏感环境之间的通信、文件IO、外设切换、资源调整、系统关闭。
所述安全敏感应用程序是运行在安全操作系统中的应用程序的安全敏感部分,与非安全敏感应用程序一一对应。
所述可信操作系统是运行在安全世界的操作系统,由设备厂商安装,主要负责为可信应用程序提供运行环境。
所述完整性验证模块是运行在可信操作系统中的内核模块,负责密钥存储、在普通世界可信执行环境启动前检查其镜像完整性。
所述可信应用程序是运行在可信操作系统中的应用程序,由设备厂商安装。
所述ARM可信固件(ARM Trusted Firmware)运行在EL3中,具有最高权限,主要负责安全世界的配置、普通世界和安全世界之间的切换等。
所述中断处理模块运行在ARM可信固件中,负责处理EL3中接收到的中断。
所述页表管理模块运行在ARM可信固件中,负责管理EL2页表,为普通世界可信执行环境提供安全隔离。
所述系统启动模块运行在ARM可信固件中,负责启动普通世界可信执行环境。
所述系统关闭模块运行在ARM可信固件中,负责关闭普通世界可信执行环境并清除运行痕迹。
所述外设访问模块运行在ARM可信固件中,负责管理普通世界可信执行环境的外设安全访问。
所述资源调整模块运行在ARM可信固件中,负责普通世界可信执行环境的动态资源调整。
所述应用程序拆分模块是应用程序开发工具,负责将应用程序自动拆分成安全敏感部分和非安全部分。
所述库生成模块是应用程序开发工具,负责为拆分后的应用程序自动生成使用普通世界可信执行环境的动态库,并分别将安全敏感部分和非安全部分代码重新打包。
所述普通世界可信执行环境的安全性是通过硬件机制来保证的。普通世界可信执行环境与普通世界非安全敏感环境是隔离的,普通世界可信执行环境可以同时并行运行多个,不同普通世界可信执行环境之间也是隔离的。本发明利用了已有的ARM硬件特性,包括二阶段页表(2 stage page table)、EL3以及安全世界。每个普通世界可信执行环境独占资源,拥有各自的处理器核和内存区域,这些独占资源只能被所属的普通世界可信执行环境所访问。隔离是使用二阶段页表实现的,由页表管理模块负责启用和管理二阶段页表。页表管理模块为普通世界非安全敏感环境和普通世界可信执行环境分别配置各自的二阶段页表,从而保证普通世界非安全敏感环境和普通世界可信执行环境只能访问属于自己的资源。
所述普通世界非安全敏感环境和普通世界可信执行环境之间需要进行通信来完成基本功能。普通世界非安全敏感环境和普通世界可信执行环境之间通过共享内存通信。可信执行环境管理模块会维护一个共享内存池,当启动新的普通世界可信执行环境时,可信执行环境管理模块从共享内存池中分配一块专用的共享内存用来通信。每个普通世界可信执行环境只能访问属于自己的共享内存,共享内存的访问隔离通过二阶段页表实现。
所述普通世界可信执行环境的生命周期包括初始化、启动、关闭,还可能包括外设安全访问、资源动态调整。
所述初始化是指应用程序开发者开发使用普通世界可信执行环境的应用程序,包括两种情况,一是从零开始开发使用普通世界可信执行环境的应用程序,二是适配现有应用程序。如果是从零开始开发的应用程序,则可以直接使用库生成模块提供的动态库进行应用程序开发;如果是适配现有应用程序,则可以使用本发明提供的应用程序开发工具实现。所述应用程序开发工具是一个自动化开发工具,负责将普通应用程序自动适配到普通世界可信执行环境。应用程序开发工具包括应用程序拆分模块和库生成模块。应用程序拆分模块能够将已有应用程序自动拆分为安全敏感部分和非安全部分,库生成模块能够生成用于非安全敏感应用程序和安全敏感应用程序之间通信的动态链接库。然后将拆分后的应用程序重新打包,最终获得适配后的应用程序。适配应用程序具体包括以下步骤:
步骤201,开发者使用应用程序开发工具适配应用程序;
步骤202,开发者准备一个配置文件,用来描述安全敏感代码的入口点,例如包含安全敏感代码的函数的函数名;
步骤203,根据该配置文件,应用程序拆分模块从应用程序中提取安全敏感代码,将应用程序拆分成安全敏感部分和非安全敏感部分;
步骤204,库生成模块生成一个用于通信的动态链接库,负责安全敏感代码和非安全敏感代码之间的通信;
步骤205,将动态链接库和非安全敏感代码部分打包成非安全敏感应用程序;
步骤206,将安全敏感代码部分编译成可执行程序,与安全操作系统一起打包并加密、签名,生成普通世界可信执行环境的镜像文件;(安装应用程序时,解密密钥和签名将会被安全存储在安全世界的完整性验证模块中,镜像文件则存储在普通世界不可信操作系统的文件系统中)
步骤207,流程结束。
所述启动是指启动普通世界可信执行环境来运行安全敏感应用程序。启动首先会构建普通世界可信执行环境,在普通世界可信执行环境中启动安全操作系统,并在安全操作系统中运行安全敏感应用程序。启动具体包括以下步骤:
步骤301,非安全敏感应用程序请求调用安全敏感代码;
步骤302,如果是第一次调用,则创建普通世界可信执行环境来运行安全敏感应用程序,进入步骤303;如果不是第一次调用,安全敏感应用程序已经正在运行中,则进入步骤311;
步骤303,非安全敏感应用程序向可信执行环境管理模块发出请求,请求启动普通世界可信执行环境;
步骤304,可信执行环境管理模块为普通世界可信执行环境预分配资源,即分配处理器核和内存,将普通世界可信执行环境的镜像文件加载到预分配的内存中,并向系统启动模块发出请求,请求隔离、验证并启动普通世界可信执行环境;
步骤305,系统启动模块通过页表管理模块修改二阶段页表,将分配的内存与普通世界非安全敏感环境隔离,向完整性验证模块发出请求,请求完整性验证模块验证内存中镜像文件的完整性;
步骤306,完整性验证模块通过安装应用程序时保存的签名和解密密钥,验证内存中镜像文件的完整性,如果完整性验证成功,进入步骤308;如果完整性验证失败,进入步骤307;
步骤307,完整性验证失败,系统启动模块通过页表管理模块修改二阶段页表,解除隔离,启动失败,进入步骤312;
步骤308,完整性验证模块解密内存中的镜像文件;
步骤309,系统启动模块启动预分配的处理器核,运行安全操作系统;
步骤310,安全操作系统运行安全敏感应用程序;
步骤311,安全敏感应用程序执行安全敏感代码,并返回结果给非安全敏感应用程序;
步骤312,流程结束。
所述关闭是指安全敏感应用程序运行完毕后安全关闭普通世界可信执行环境。关闭具体包括以下步骤:
步骤401,安全敏感应用程序运行完毕,开始关闭流程;
步骤402,安全敏感应用程序向系统管理模块发出请求,请求关闭普通世界可信执行环境;
步骤403,系统管理模块通知可信执行环境管理模块启动关闭流程;
步骤404,系统管理模块向系统关闭模块发出请求,请求关闭普通世界可信执行环境;
步骤405,系统关闭模块关闭安全操作系统,并清除运行痕迹;
步骤406,可信执行环境管理模块向系统关闭模块发出请求,请求释放普通世界可信执行环境的资源;
步骤407,系统关闭模块解除普通世界可信执行环境的隔离,将资源归还给普通世界非安全敏感环境;
步骤408,可信执行环境管理模块将归还的资源重新添加到普通世界非安全敏感环境中;
步骤409,流程结束。
所述外设安全访问是指普通世界可信执行环境安全地访问外设。如果外设同时被普通世界非安全敏感环境和普通世界可信执行环境访问,或者同时被多个普通世界可信执行环境访问,那么外设访问是不安全的,因为可能会被其他人窥探到外设中的行为和数据。普通世界可信执行环境支持安全地访问外设,可以保证当普通世界可信执行环境访问外设时,其他环境无法访问该外设,从而避免攻击者窃听或篡改外设。外设安全访问是通过控制二阶段页表实现的,只有当前要进行外设访问的一方才能拥有外设内存地址的二阶段页表映射。默认情况下普通世界非安全敏感环境持有所有外设,如果普通世界可信执行环境需要外设安全访问,需要发出外设安全访问请求,成功请求到外设后,才能进行外设安全访问。外设安全访问具体包括以下步骤:
步骤501,安全敏感应用程序准备访问外设;
步骤502,系统管理模块向可信执行环境管理模块发出请求,请求使用该外设;
系统503,可信执行环境管理模块检查该外设是否可用,如果该外设不可用,本次外设安全访问失败,进入步骤508;如果该外设可用,进入步骤504;
步骤504,可信执行环境管理模块暂时禁用该外设,并向外设访问模块发出请求,请求将该外设分配给普通世界可信执行环境使用;
步骤505,外设访问模块借助页表管理模块修改该外设对应的二阶段页表,取消该外设在非安全敏感环境中的二阶段页表映射,仅把该外设映射到对应普通世界可信执行环境的二阶段页表中;
步骤506,系统管理模块加载该外设,使得该外设可用;
步骤507,安全敏感应用程序访问外设;
步骤508,安全敏感应用程序访问外设结束,准备释放外设;
步骤509,系统管理模块向外设访问模块发出请求,请求释放该外设;
步骤510,外设访问模块清除外设使用痕迹,借助页表管理模块修改该外设对应的二阶段页表,取消该外设在普通世界可信执行环境中的二阶段页表映射,仅把该外设映射到普通世界非安全敏感环境的二阶段页表中;
步骤511,系统管理模块通知可信执行环境管理模块重新启用该外设;
步骤512,流程结束。
所述资源动态调整是指普通世界可信执行环境根据工作负载需求的变化来动态调整资源,资源包括处理器核和内存。在工作负载较高时,系统管理模块可以向可信执行环境管理模块请求增加处理器核或增加内存大小;在工作负载由高变低时,系统管理模块可以将之前新增的处理器核或内存归还回去。资源动态调整的安全性是通过二阶段页表保证的,动态调整的资源,其对应的二阶段页表会随之修改,从而确保这些资源仅能被资源申请方访问。资源动态调整具体包括以下步骤:
步骤601,系统管理模块请求动态增加资源;
步骤602,系统管理模块向可信执行环境管理模块发出请求,请求增加资源;
步骤603,可信执行环境管理模块检查是否有可用资源,如果没有可用的资源,则动态增加资源失败,进入步骤612;
步骤604,可信执行环境管理模块向资源调整模块发出请求,请求检查这些资源是否安全可用;
步骤605,资源调整模块检查这些资源是否安全可用,如果资源安全可用,则进入步骤606;否则,动态增加资源失败,进入步骤612;
步骤606,资源调整模块通过页表管理模块修改这些资源的二阶段页表,取消这些资源在非安全敏感环境中的二阶段页表映射,仅映射到对应普通世界可信执行环境的二阶段页表中;
步骤607,系统管理模块正式添加这些资源到安全操作系统中,使用这些资源实现加速计算;
步骤608,如果安全操作系统不再需要这些资源,进入步骤609;否则进入步骤612;
步骤609,系统管理模块向资源调整模块发出请求,请求释放资源;
步骤610,资源调整模块清除资源使用痕迹,通过页表管理模块修改这些资源的二阶段页表,取消这些资源在普通世界可信执行环境中的二阶段页表映射,仅映射到普通世界非安全敏感环境的二阶段页表中;
步骤611,系统管理模块通知可信执行环境管理模块回收资源;
步骤612,流程结束。
有益效果:与现有技术相比,本发明提供的用于移动端应用程序的可信执行环境的实现系统,实现了以开发者为中心的轻量级可信执行环境;所述可信执行环境基于硬件机制实现隔离,可以保证可信执行环境与其他环境是安全隔离的;通过外设安全访问机制,可以安全高效地访问外设;在启动可信执行环境之前,验证其完整性,保证可信执行环境的安全启动;可以同时运行多个可信执行环境,最大限度满足多个应用程序的安全需求;可信执行环境能够动态调整资源,以动态适应应用程序的工作负载;通过本发明提供的开发者工具,可以轻松地开发使用可信执行环境的应用程序,或者将已有应用程序轻松适配到可信执行环境中。本发明可应用于移动设备、边缘计算设备、物联网设备等诸多领域,具有广泛的应用前景。
附图说明
图1为本发明所述的系统架构示意图;
图2为本发明所述的应用程序开发工具使用流程图;
图3为本发明所述的启动普通世界可信执行环境的流程图;
图4为本发明所述的关闭普通世界可信执行环境的流程图;
图5为本发明所述的外设安全访问的流程图;
图6为本发明所述的资源动态调整的流程图;
图7为本发明所述的外设安全访问的示意图;
图8为本发明所述的内存分布示意图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
如图1所示,用于移动端应用程序的可信执行环境的实现系统,实现包括移动端设备侧和应用程序开发者侧;移动端设备侧包括普通世界非安全敏感环境、普通世界可信执行环境、安全世界;普通世界非安全敏感环境包括不可信操作系统、可信执行环境管理模块、非安全敏感应用程序;普通世界可信执行环境包括安全操作系统、系统管理模块、安全敏感应用程序;安全世界包括可信操作系统、完整性验证模块、可信应用程序、EL3安全监视器;EL3安全监视器包括ARM可信固件、中断管理模块、页表管理模块、系统启动模块、系统关闭模块、外设访问模块、资源调整模块。应用程序开发者侧包括应用程序拆分模块、库生成模块。
在本实施例中,不可信操作系统为安卓操作系统;非安全敏感应用程序是安卓应用程序;安全操作系统是精简后的Linux操作系统;可信操作系统是OP-TEE操作系统;ARM可信固件是ARM官方提供的底层固件参考实现ARM Trusted Firmware;中断处理模块、页表管理模块、系统启动模块、系统关闭模块、外设访问模块和资源调整模块,均是对ARM可信固件的修改补丁;应用程序拆分模块是基于Java优化框架Soot实现。
普通世界可信执行环境的安全性是通过硬件机制来保证的。普通世界可信执行环境与普通世界非安全敏感环境是隔离的,普通世界可信执行环境可以同时并行运行多个,不同普通世界可信执行环境之间也是隔离的。本发明利用了已有的ARM硬件特性,包括二阶段页表、EL3以及安全世界。每个普通世界可信执行环境独占资源,拥有各自的处理器核和内存区域,这些独占资源只能被所属的普通世界可信执行环境所访问。隔离是使用二阶段页表实现的,由页表管理模块负责启用和管理二阶段页表。页表管理模块为普通世界非安全敏感环境和普通世界可信执行环境分别配置各自的二阶段页表,从而保证普通世界非安全敏感环境和普通世界可信执行环境只能访问属于自己的资源。
在本实施例中,二阶段页表由EL3中的页表管理模块控制,在不可信操作系统启动之前,页表管理模块会预留一块内存区域用来存储二阶段页表,页表管理模块会控制普通世界非安全敏感环境和普通世界可信执行环境的二阶段页表,普通世界非安全敏感环境和普通世界可信执行环境均只能访问二阶段页表已经被映射的内存地址。
普通世界非安全敏感环境和普通世界可信执行环境之间需要进行通信来完成基本功能。普通世界非安全敏感环境和普通世界可信执行环境之间通过共享内存通信。可信执行环境管理模块会维护一个共享内存池,当启动新的普通世界可信执行环境时,可信执行环境管理模块从共享内存池中分配一块专用的共享内存用来通信。每个普通世界可信执行环境只能访问属于自己的共享内存,共享内存的访问隔离通过二阶段页表实现。
具体的通信通知方式可以通过轮询共享内存、使用核间中断实现或其他方法实现,本实施例使用核间中断来通知,以告知对方共享内存中有请求、或已收到请求。其他环境与ARM可信固件中的模块的通信,是通过SMC中断实现的,由ARM可信固件中的中断处理模块处理SMC中断,解析中断内容,再将其中的请求转发给对应模块。
普通世界可信执行环境的生命周期包括初始化、启动、关闭,还可能包括外设安全访问、资源动态调整。
初始化是指应用程序开发者开发使用普通世界可信执行环境的应用程序,包括两种情况,一是从零开始开发使用普通世界可信执行环境的应用程序,二是适配现有应用程序。如果是从零开始开发的应用程序,则可以直接使用库生成模块提供的动态库进行应用程序开发;如果是适配现有应用程序,则可以使用本发明提供的应用程序开发工具实现。应用程序开发工具是一个自动化开发工具,负责将普通应用程序自动适配到普通世界可信执行环境。应用程序开发工具包括应用程序拆分模块和库生成模块。
应用程序拆分模块能够将已有应用程序自动拆分为安全敏感部分和非安全部分。应用程序拆分模块是基于Java优化框架Soot实现的,其中Soot是一个面向安卓应用的代码静态分析和代码插桩的工具。应用程序拆分模块首先反编译应用程序,并定位应用程序中的所有安全敏感代码入口点;随后构建应用程序的调用图(call graph),从这些入口点开始遍历所有可到达的代码,并执行后向数据流分析(backward data-flow analysis),从而维护遍历到的代码的依赖项;通过递归地执行后向数据流分析,最终找出所有的安全敏感代码。
库生成模块能够生成用于非安全敏感应用程序和安全敏感应用程序之间通信的动态链接库,该动态链接库包含两部分,第一部分是启动普通世界可信执行环境的代码,默认情况下会使用1个处理器核和256MB内存来启动普通世界可信执行环境;第二部分是生成替换安全敏感代码入口点的代码,根据原本对安全敏感代码的调用,生成对安全敏感应用程序的远程调用,例如,安全敏感代码入口点为“org.tensorflow.lite.Interpreter:public void run(Bytebuffer input, byte[] output);”,则生成“public staticnative byte[] nativeRun(ByteBuffer input)”。
如图2所示,适配应用程序具体包括以下步骤:
步骤201,开发者使用应用程序开发工具适配应用程序;
步骤202,开发者准备一个配置文件,用来描述安全敏感代码的入口点,入口点以“类名:函数名”的格式,每行一个入口点,例如“org.tensorflow.lite.Interpreter:public void run(Bytebuffer input, byte[] output)”;
步骤203,根据该配置文件,应用程序拆分模块从应用程序中提取安全敏感代码,将应用程序拆分成安全敏感部分和非安全敏感部分;
步骤204,库生成模块生成一个用于通信的动态链接库,负责安全敏感代码和非安全敏感代码之间的通信;
步骤205,将动态链接库和非安全敏感部分打包成非安全敏感应用程序;
步骤206,将安全敏感部分编译成可执行程序,与安全操作系统一起打包并加密、签名,生成普通世界可信执行环境的镜像文件;(安装应用程序时,解密密钥和签名将会被安全存储在安全世界的完整性验证模块中,镜像文件则存储在普通世界不可信操作系统的文件系统中)
步骤207,流程结束。
如图3所示,启动是指启动普通世界可信执行环境来运行安全敏感应用程序。启动首先会构建普通世界可信执行环境,在普通世界可信执行环境中启动安全操作系统,并在安全操作系统中运行安全敏感应用程序。启动具体包括以下步骤:
步骤301,非安全敏感应用程序请求调用安全敏感代码;
步骤302,如果是第一次调用,则创建普通世界可信执行环境来运行安全敏感应用程序,进入步骤303;如果不是第一次调用,安全敏感应用程序已经正在运行中,则进入步骤311;
步骤303,非安全敏感应用程序向可信执行环境管理模块发出请求,请求启动普通世界可信执行环境;
步骤304,可信执行环境管理模块为普通世界可信执行环境预分配资源,即分配处理器核和内存,将普通世界可信执行环境的镜像文件加载到预分配的内存中,并向系统启动模块发出请求,请求隔离、验证并启动普通世界可信执行环境;
步骤305,系统启动模块通过页表管理模块修改二阶段页表,将分配的内存与普通世界非安全敏感环境隔离,向完整性验证模块发出请求,请求完整性验证模块验证内存中镜像文件的完整性;
步骤306,完整性验证模块通过安装应用程序时保存的签名和解密密钥,验证内存中镜像文件的完整性,如果完整性验证成功,进入步骤308;如果完整性验证失败,进入步骤307;
步骤307,完整性验证失败,系统启动模块通过页表管理模块修改二阶段页表,解除隔离,启动失败,进入步骤312;
步骤308,完整性验证模块解密内存中的镜像文件;
步骤309,系统启动模块启动预分配的处理器核,运行安全操作系统;
步骤310,安全操作系统运行安全敏感应用程序;
步骤311,安全敏感应用程序执行安全敏感代码,并返回结果给非安全敏感应用程序;
步骤312,流程结束。
如图4所示,关闭是指安全敏感应用程序运行完毕后安全关闭普通世界可信执行环境。关闭具体包括以下步骤:
步骤401,安全敏感应用程序运行完毕,开始关闭流程;
步骤402,安全敏感应用程序向系统管理模块发出请求,请求关闭普通世界可信执行环境;
步骤403,系统管理模块通知可信执行环境管理模块启动关闭流程;
步骤404,系统管理模块向系统关闭模块发出请求,请求关闭普通世界可信执行环境;
步骤405,系统关闭模块关闭安全操作系统,并清除运行痕迹;
步骤406,可信执行环境管理模块向系统关闭模块发出请求,请求释放普通世界可信执行环境的资源;
步骤407,系统关闭模块解除普通世界可信执行环境的隔离,将资源归还给普通世界非安全敏感环境;
步骤408,可信执行环境管理模块将归还的资源重新添加到普通世界非安全敏感环境中;
步骤409,流程结束。
如图5所示,外设安全访问是指普通世界可信执行环境安全地访问外设。如果外设同时被普通世界非安全敏感环境和普通世界可信执行环境访问,或者同时被多个普通世界可信执行环境访问,那么外设访问是不安全的,因为可能会被其他人窥探到外设中的行为和数据。普通世界可信执行环境支持安全地访问外设,可以保证当普通世界可信执行环境访问外设时,其他环境无法访问该外设,从而避免攻击者窃听或篡改外设。
外设安全访问是通过控制二阶段页表实现的,二阶段页表能够实现内存隔离,而ARM芯片中采用内存映射IO(Memory Mapped IO, MMIO),因此可以通过控制二阶段页表来实现IO隔离。普通世界非安全敏感环境和普通世界可信执行环境运行在不同的处理器核上,不同的处理器核可以设置不同的二阶段页表。通过修改二阶段页表,使得只有当前要进行外设访问的一方才能拥有外设内存地址的二阶段页表映射,从而确保外设访问是安全的。例如,如图7所示,有三个外设(外设1、外设2、外设3),外设通过内存上的IO地址空间来访问,外设访问模块通过页表管理模块来控制二阶段页表。普通世界非安全敏感环境和普通世界可信执行环境运行在不同的处理器上,外设访问模块为普通世界非安全敏感环境和普通世界可信执行环境设置了不同的二阶段页表。初始情况下,三个外设均只被映射到了普通世界非安全敏感环境的二阶段页表中,普通世界可信执行环境无法访问这些外设;当普通世界可信执行环境申请安全访问外设3后,外设3将被从普通世界非安全敏感环境的二阶段页表中取消映射,并被映射到普通世界可信执行环境的二阶段页表中,此时普通世界非安全敏感环境无法访问外设3,只有该普通世界可信执行环境能够访问外设3,从而保证外设访问的安全性。
默认情况下普通世界非安全敏感环境持有所有外设,如果普通世界可信执行环境需要外设安全访问,需要发出外设安全访问请求,成功请求到外设后,才能进行外设安全访问。外设安全访问具体包括以下步骤:
步骤501,安全敏感应用程序准备访问外设;
步骤502,系统管理模块向可信执行环境管理模块发出请求,请求使用该外设;
系统503,可信执行环境管理模块检查该外设是否可用,如果该外设不可用,本次外设安全访问失败,进入步骤508;如果该外设可用,进入步骤504;
步骤504,可信执行环境管理模块暂时禁用该外设,并向外设访问模块发出请求,请求将该外设分配给普通世界可信执行环境使用;
步骤505,外设访问模块借助页表管理模块修改该外设对应的二阶段页表,取消该外设在非安全敏感环境中的二阶段页表映射,仅把该外设映射到对应普通世界可信执行环境的二阶段页表中;
步骤506,系统管理模块加载该外设,使得该外设可用;
步骤507,安全敏感应用程序访问外设;
步骤508,安全敏感应用程序访问外设结束,准备释放外设;
步骤509,系统管理模块向外设访问模块发出请求,请求释放该外设;
步骤510,外设访问模块清除外设使用痕迹,借助页表管理模块修改该外设对应的二阶段页表,取消该外设在普通世界可信执行环境中的二阶段页表映射,仅把该外设映射到普通世界非安全敏感环境的二阶段页表中;
步骤511,系统管理模块通知可信执行环境管理模块重新启用该外设;
步骤512,流程结束。
如图6所示,资源动态调整是指普通世界可信执行环境根据工作负载需求的变化来动态调整资源,资源包括处理器核和内存。在工作负载较高时,系统管理模块可以向可信执行环境管理模块请求增加处理器核或增加内存大小;在工作负载由高变低时,系统管理模块可以将之前新增的处理器核或内存归还回去。资源动态调整的安全性是通过二阶段页表保证的,动态调整的资源,其对应的二阶段页表会随之修改,从而确保这些资源仅能被资源申请方访问。资源动态调整具体包括以下步骤:
步骤601,系统管理模块请求动态增加资源;
步骤602,系统管理模块向可信执行环境管理模块发出请求,请求增加资源;
步骤603,可信执行环境管理模块检查是否有可用资源,如果没有可用的资源,则动态增加资源失败,进入步骤612;
步骤604,可信执行环境管理模块向资源调整模块发出请求,请求检查这些资源是否安全可用;
步骤605,资源调整模块检查这些资源是否安全可用,如果资源安全可用,则进入步骤606;否则,动态增加资源失败,进入步骤612;
步骤606,资源调整模块通过页表管理模块修改这些资源的二阶段页表,取消这些资源在非安全敏感环境中的二阶段页表映射,仅映射到对应普通世界可信执行环境的二阶段页表中;
步骤607,系统管理模块正式添加这些资源到安全操作系统中,使用这些资源实现加速计算;
步骤608,如果安全操作系统不再需要这些资源,进入步骤609;否则进入步骤612;
步骤609,系统管理模块向资源调整模块发出请求,请求释放资源;
步骤610,资源调整模块清除资源使用痕迹,通过页表管理模块修改这些资源的二阶段页表,取消这些资源在普通世界可信执行环境中的二阶段页表映射,仅映射到普通世界非安全敏感环境的二阶段页表中;
步骤611,系统管理模块通知可信执行环境管理模块回收资源;
步骤612,流程结束。
针对不同的资源,本实施例使用了不同的调整机制,包括动态内存调整机制和动态处理器核调整机制。图8所示的是动态内存调整方案的内存分布示意图,当要启动新的普通世界可信执行环境时,可信执行环境管理模块将分配一定大小的连续内存,并预留内存末尾的连续内存作为潜在的动态内存。当普通世界可信执行环境需要增加或减少内存时,动态内存调整机制会保持普通世界可信执行环境的内存一直是物理连续的,每次增加或减少内存均已固定大小的内存块为基本单位,且每次只能在普通世界可信执行环境的内存区域末尾增加或减少内存块,从而保证普通世界可信执行环境的内存一直是物理连续的。增加和减少内存具体通过Linux hotplug机制实现。
普通世界可信执行环境启动时默认只有一个处理器核,根据后续的工作负载状态,普通世界可信执行环境可以请求增加更多的处理器核。增加和减少处理器核具体可以通过Linux hotplug机制实现。
综上,本发明提供了一种用于移动端应用程序的以开发者为中心的轻量级可信执行环境的实现系统。此项技术可应用于移动设备、边缘计算设备、物联网设备等诸多领域,具有广泛的应用前景。例如,在移动设备领域,可将本发明系统应用于基于ARM处理器的手机中,这样手机中的应用程序就能使用本系统进行安全计算,比如计算深度学习模型,在获得安全性的同时也保持了高效率,以及可以进行安全外设访问和动态资源调整。因此,本技术具有很高的推广价值。
Claims (9)
1.一种用于移动端应用程序的可信执行环境的实现系统,其特征在于,包括移动端设备侧和应用程序开发者侧;所述移动端设备侧包括普通世界非安全敏感环境、普通世界可信执行环境和安全世界;所述普通世界非安全敏感环境包括不可信操作系统、可信执行环境管理模块和非安全敏感应用程序;所述普通世界可信执行环境包括安全操作系统、系统管理模块和安全敏感应用程序;所述安全世界包括可信操作系统、完整性验证模块、可信应用程序、EL3安全监视器;所述EL3安全监视器包括ARM可信固件、中断管理模块、页表管理模块、系统启动模块、系统关闭模块、外设访问模块、资源调整模块;所述应用程序开发者侧包括应用程序拆分模块、库生成模块;所述普通世界可信执行环境的生命周期包括初始化、启动、关闭,还包括外设安全访问、资源动态调整;
启动具体包括以下步骤:
步骤301,非安全敏感应用程序请求调用安全敏感代码;
步骤302,如果是第一次调用,则创建普通世界可信执行环境来运行安全敏感应用程序,进入步骤303;如果不是第一次调用,安全敏感应用程序已经正在运行中,则进入步骤311;
步骤303,非安全敏感应用程序向可信执行环境管理模块发出请求,请求启动普通世界可信执行环境;
步骤304,可信执行环境管理模块为普通世界可信执行环境预分配资源,即分配处理器核和内存,将普通世界可信执行环境的镜像文件加载到预分配的内存中,并向系统启动模块发出请求,请求隔离、验证并启动普通世界可信执行环境;
步骤305,系统启动模块通过页表管理模块修改二阶段页表,将分配的内存与普通世界非安全敏感环境隔离,向完整性验证模块发出请求,请求完整性验证模块验证内存中镜像文件的完整性;
步骤306,完整性验证模块通过安装应用程序时保存的签名和解密密钥,验证内存中镜像文件的完整性,如果完整性验证成功,进入步骤308;如果完整性验证失败,进入步骤307;
步骤307,完整性验证失败,系统启动模块通过页表管理模块修改二阶段页表,解除隔离,启动失败,进入步骤312;
步骤308,完整性验证模块解密内存中的镜像文件;
步骤309,系统启动模块启动预分配的处理器核,运行安全操作系统;
步骤310,安全操作系统运行安全敏感应用程序;
步骤311,安全敏感应用程序执行安全敏感代码,并返回结果给非安全敏感应用程序;
步骤312,流程结束。
2.根据权利要求1所述的用于移动端应用程序的可信执行环境的实现系统,其特征在于,所述不可信操作系统是运行在普通世界非安全敏感环境的操作系统,为应用程序提供运行环境;
所述可信执行环境管理模块是不可信操作系统中的内核模块,负责管理普通世界可信执行环境的资源,负责加载普通世界可信执行环境的镜像、维护元数据以及预分配资源,负责与普通世界可信执行环境之间的通信、外设切换、资源调整;
所述非安全敏感应用程序是不可信操作系统中的应用程序的非安全敏感部分,需要使用普通世界可信执行环境的应用程序,将被拆分为两部分,非安全敏感部分和安全敏感部分,分别对应非安全敏感应用程序和安全敏感应用程序。
3.根据权利要求1所述的用于移动端应用程序的可信执行环境的实现系统,其特征在于,所述普通世界可信执行环境是安全敏感代码的执行环境,运行在普通世界中,与普通世界非安全敏感环境是隔离的;普通世界可信执行环境可以同时并行运行多个,每个普通世界可信执行环境之间也是隔离的;每个普通世界可信执行环境都会至少独占一个处理器核和一块内存区域;
所述安全操作系统是运行在普通世界可信执行环境的操作系统,为安全敏感应用程序提供运行环境;
所述系统管理模块是运行在安全操作系统中的内核模块,负责与普通世界非安全敏感环境之间的通信、文件IO、外设切换、资源调整、系统关闭;
所述安全敏感应用程序是运行在安全操作系统中的应用程序的安全敏感部分,与非安全敏感应用程序一一对应。
4.根据权利要求1所述的用于移动端应用程序的可信执行环境的实现系统,其特征在于,所述可信操作系统是运行在安全世界的操作系统,由设备厂商安装,为可信应用程序提供运行环境;
所述完整性验证模块是运行在可信操作系统中的内核模块,负责密钥存储、在普通世界可信执行环境启动前检查其镜像完整性;
所述可信应用程序是运行在可信操作系统中的应用程序,由设备厂商安装;
所述ARM可信固件运行在EL3中,具有最高权限,主要负责安全世界的配置、普通世界和安全世界之间的切换;
所述中断处理模块运行在ARM可信固件中,负责处理EL3中接收到的中断;
所述页表管理模块运行在ARM可信固件中,负责管理EL2页表,为普通世界可信执行环境提供安全隔离;
所述系统启动模块运行在ARM可信固件中,负责启动普通世界可信执行环境;
所述系统关闭模块运行在ARM可信固件中,负责关闭普通世界可信执行环境并清除运行痕迹;
所述外设访问模块运行在ARM可信固件中,负责管理普通世界可信执行环境的外设安全访问;
所述资源调整模块运行在ARM可信固件中,负责普通世界可信执行环境的动态资源调整;
所述应用程序拆分模块是应用程序开发工具,负责将应用程序自动拆分成安全敏感部分和非安全部分;
所述库生成模块是应用程序开发工具,负责为拆分后的应用程序自动生成使用普通世界可信执行环境的动态库,并分别将安全敏感部分和非安全部分代码重新打包。
5.根据权利要求1所述的用于移动端应用程序的可信执行环境的实现系统,其特征在于,所述普通世界可信执行环境的安全性是通过硬件机制来保证的;普通世界可信执行环境与普通世界非安全敏感环境是隔离的,普通世界可信执行环境能同时并行运行多个,不同普通世界可信执行环境之间也是隔离的;每个普通世界可信执行环境独占资源,拥有各自的处理器核和内存区域,这些独占资源只能被所属的普通世界可信执行环境所访问;隔离是使用二阶段页表实现的,由页表管理模块负责启用和管理二阶段页表;页表管理模块为普通世界非安全敏感环境和普通世界可信执行环境分别配置各自的二阶段页表,从而保证普通世界非安全敏感环境和普通世界可信执行环境只能访问属于自己的资源;
所述普通世界非安全敏感环境和普通世界可信执行环境之间通过共享内存通信;可信执行环境管理模块会维护一个共享内存池,当启动新的普通世界可信执行环境时,可信执行环境管理模块从共享内存池中分配一块专用的共享内存用来通信;每个普通世界可信执行环境只能访问属于自己的共享内存,共享内存的访问隔离通过二阶段页表实现。
6.根据权利要求1所述的用于移动端应用程序的可信执行环境的实现系统,其特征在于,所述普通世界可信执行环境的生命周期包括初始化、启动、关闭,还包括外设安全访问、资源动态调整;
所述初始化是指应用程序开发者开发使用普通世界可信执行环境的应用程序,包括两种情况,一是从零开始开发使用普通世界可信执行环境的应用程序,二是适配现有应用程序;如果是从零开始开发的应用程序,则直接使用库生成模块提供的动态库进行应用程序开发;如果是适配现有应用程序,则使用应用程序开发工具实现;所述应用程序开发工具是一个自动化开发工具,负责将普通应用程序自动适配到普通世界可信执行环境;应用程序开发工具包括应用程序拆分模块和库生成模块;应用程序拆分模块能够将已有应用程序自动拆分为安全敏感部分和非安全部分,库生成模块能够生成用于非安全敏感应用程序和安全敏感应用程序之间通信的动态链接库;然后将拆分后的应用程序重新打包,最终获得适配后的应用程序;
所述启动是指启动普通世界可信执行环境来运行安全敏感应用程序;启动首先会构建普通世界可信执行环境,在普通世界可信执行环境中启动安全操作系统,并在安全操作系统中运行安全敏感应用程序;
所述关闭是指安全敏感应用程序运行完毕后安全关闭普通世界可信执行环境;
所述外设安全访问是指普通世界可信执行环境安全地访问外设;如果外设同时被普通世界非安全敏感环境和普通世界可信执行环境访问,或者同时被多个普通世界可信执行环境访问,那么外设访问是不安全的;普通世界可信执行环境支持安全地访问外设,当普通世界可信执行环境访问外设时,其他环境无法访问该外设;外设安全访问是通过控制二阶段页表实现的,只有当前要进行外设访问的一方才能拥有外设内存地址的二阶段页表映射;默认情况下普通世界非安全敏感环境持有所有外设,如果普通世界可信执行环境需要外设安全访问,需要发出外设安全访问请求,成功请求到外设后,才能进行外设安全访问;
所述资源动态调整是指普通世界可信执行环境根据工作负载需求的变化来动态调整资源,资源包括处理器核和内存;在工作负载较高时,系统管理模块可以向可信执行环境管理模块请求增加处理器核或增加内存大小;在工作负载由高变低时,系统管理模块可以将之前新增的处理器核或内存归还回去;资源动态调整的安全性是通过二阶段页表保证的,动态调整的资源,其对应的二阶段页表会随之修改,从而确保这些资源仅能被资源申请方访问。
7.根据权利要求6所述的用于移动端应用程序的可信执行环境的实现系统,其特征在于,适配应用程序具体包括以下步骤:
步骤201,开发者使用应用程序开发工具适配应用程序;
步骤202,开发者准备一个配置文件,用来描述安全敏感代码的入口点;
步骤203,根据该配置文件,应用程序拆分模块从应用程序中提取安全敏感代码,将应用程序拆分成安全敏感部分和非安全敏感部分;
步骤204,库生成模块生成一个用于通信的动态链接库,负责安全敏感代码和非安全敏感代码之间的通信;
步骤205,将动态链接库和非安全敏感代码部分打包成非安全敏感应用程序;
步骤206,将安全敏感代码部分编译成可执行程序,与安全操作系统一起打包并加密、签名,生成普通世界可信执行环境的镜像文件;
步骤207,流程结束。
8.根据权利要求6所述的用于移动端应用程序的可信执行环境的实现系统,其特征在于,所述关闭具体包括以下步骤:
步骤401,安全敏感应用程序运行完毕,开始关闭流程;
步骤402,安全敏感应用程序向系统管理模块发出请求,请求关闭普通世界可信执行环境;
步骤403,系统管理模块通知可信执行环境管理模块启动关闭流程;
步骤404,系统管理模块向系统关闭模块发出请求,请求关闭普通世界可信执行环境;
步骤405,系统关闭模块关闭安全操作系统,并清除运行痕迹;
步骤406,可信执行环境管理模块向系统关闭模块发出请求,请求释放普通世界可信执行环境的资源;
步骤407,系统关闭模块解除普通世界可信执行环境的隔离,将资源归还给普通世界非安全敏感环境;
步骤408,可信执行环境管理模块将归还的资源重新添加到普通世界非安全敏感环境中;
步骤409,流程结束。
9.根据权利要求6所述的用于移动端应用程序的可信执行环境的实现系统,其特征在于,外设安全访问具体包括以下步骤:
步骤501,安全敏感应用程序准备访问外设;
步骤502,系统管理模块向可信执行环境管理模块发出请求,请求使用该外设;
系统503,可信执行环境管理模块检查该外设是否可用,如果该外设不可用,本次外设安全访问失败,进入步骤508;如果该外设可用,进入步骤504;
步骤504,可信执行环境管理模块暂时禁用该外设,并向外设访问模块发出请求,请求将该外设分配给普通世界可信执行环境使用;
步骤505,外设访问模块借助页表管理模块修改该外设对应的二阶段页表,取消该外设在非安全敏感环境中的二阶段页表映射,仅把该外设映射到对应普通世界可信执行环境的二阶段页表中;
步骤506,系统管理模块加载该外设,使得该外设可用;
步骤507,安全敏感应用程序访问外设;
步骤508,安全敏感应用程序访问外设结束,准备释放外设;
步骤509,系统管理模块向外设访问模块发出请求,请求释放该外设;
步骤510,外设访问模块清除外设使用痕迹,借助页表管理模块修改该外设对应的二阶段页表,取消该外设在普通世界可信执行环境中的二阶段页表映射,仅把该外设映射到普通世界非安全敏感环境的二阶段页表中;
步骤511,系统管理模块通知可信执行环境管理模块重新启用该外设;
步骤512,流程结束;
所述资源动态调整具体包括以下步骤:
步骤601,系统管理模块请求动态增加资源;
步骤602,系统管理模块向可信执行环境管理模块发出请求,请求增加资源;
步骤603,可信执行环境管理模块检查是否有可用资源,如果没有可用的资源,则动态增加资源失败,进入步骤612;
步骤604,可信执行环境管理模块向资源调整模块发出请求,请求检查这些资源是否安全可用;
步骤605,资源调整模块检查这些资源是否安全可用,如果资源安全可用,则进入步骤606;否则,动态增加资源失败,进入步骤612;
步骤606,资源调整模块通过页表管理模块修改这些资源的二阶段页表,取消这些资源在非安全敏感环境中的二阶段页表映射,仅映射到对应普通世界可信执行环境的二阶段页表中;
步骤607,系统管理模块正式添加这些资源到安全操作系统中,使用这些资源加速计算
步骤608,如果安全操作系统不再需要这些资源,进入步骤609;否则进入步骤612;
步骤609,系统管理模块向资源调整模块发出请求,请求释放资源;
步骤610,资源调整模块清除资源使用痕迹,通过页表管理模块修改这些资源的二阶段页表,取消这些资源在普通世界可信执行环境中的二阶段页表映射,仅映射到普通世界非安全敏感环境的二阶段页表中;
步骤611,系统管理模块通知可信执行环境管理模块回收资源;
步骤612,流程结束。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2021104157295 | 2021-04-19 | ||
CN202110415729 | 2021-04-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113239329A CN113239329A (zh) | 2021-08-10 |
CN113239329B true CN113239329B (zh) | 2024-03-19 |
Family
ID=77129016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110440695.5A Active CN113239329B (zh) | 2021-04-19 | 2021-04-23 | 一种用于移动端应用程序的可信执行环境的实现系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113239329B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113868676B (zh) * | 2021-08-30 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 在arm平台基于固件实现可信密码模块的方法及装置 |
CN113703924A (zh) * | 2021-09-22 | 2021-11-26 | 上海交通大学 | 基于可信执行环境的安全虚拟机系统设计方法及系统 |
CN114327791B (zh) * | 2022-03-03 | 2022-06-10 | 阿里云计算有限公司 | 基于虚拟化的可信计算度量方法、装置、设备和存储介质 |
CN114491565B (zh) * | 2022-03-31 | 2022-07-05 | 飞腾信息技术有限公司 | 固件安全启动方法、装置、计算设备和可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014021919A2 (en) * | 2012-08-03 | 2014-02-06 | North Carolina State University | Methods, systems, and computer readable medium for active monitoring, memory protection and integrity verification of target devices |
CN106650514A (zh) * | 2016-10-13 | 2017-05-10 | 中国科学院信息工程研究所 | 一种基于TrustZone技术的安全输入系统与方法 |
US10108800B1 (en) * | 2017-01-10 | 2018-10-23 | Gbs Laboratories, Llc | ARM processor-based hardware enforcement of providing separate operating system environments for mobile devices with capability to employ different switching methods |
CN109948354A (zh) * | 2019-03-19 | 2019-06-28 | 南京大学 | 一种跨平台使用硬件隔离环境对文件进行加密校验的方法 |
WO2020074354A1 (de) * | 2018-10-10 | 2020-04-16 | Technische Universität Darmstadt | Verfahren und vorrichtung zur isolation von sensiblem nicht-vertrauenswürdigem programmcode auf mobilen endgeräten |
WO2020161622A1 (en) * | 2019-02-05 | 2020-08-13 | Rezilion Ltd | Automatic mitigation of corrupted or compromised compute resources |
CN112685101A (zh) * | 2020-12-31 | 2021-04-20 | 支付宝(杭州)信息技术有限公司 | 面向可信执行环境的系统调用处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2568527B (en) * | 2017-11-20 | 2020-04-15 | Trustonic Ltd | Address layout varying process |
-
2021
- 2021-04-23 CN CN202110440695.5A patent/CN113239329B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014021919A2 (en) * | 2012-08-03 | 2014-02-06 | North Carolina State University | Methods, systems, and computer readable medium for active monitoring, memory protection and integrity verification of target devices |
CN106650514A (zh) * | 2016-10-13 | 2017-05-10 | 中国科学院信息工程研究所 | 一种基于TrustZone技术的安全输入系统与方法 |
US10108800B1 (en) * | 2017-01-10 | 2018-10-23 | Gbs Laboratories, Llc | ARM processor-based hardware enforcement of providing separate operating system environments for mobile devices with capability to employ different switching methods |
WO2020074354A1 (de) * | 2018-10-10 | 2020-04-16 | Technische Universität Darmstadt | Verfahren und vorrichtung zur isolation von sensiblem nicht-vertrauenswürdigem programmcode auf mobilen endgeräten |
WO2020161622A1 (en) * | 2019-02-05 | 2020-08-13 | Rezilion Ltd | Automatic mitigation of corrupted or compromised compute resources |
CN109948354A (zh) * | 2019-03-19 | 2019-06-28 | 南京大学 | 一种跨平台使用硬件隔离环境对文件进行加密校验的方法 |
CN112685101A (zh) * | 2020-12-31 | 2021-04-20 | 支付宝(杭州)信息技术有限公司 | 面向可信执行环境的系统调用处理方法及装置 |
CN114661380A (zh) * | 2020-12-31 | 2022-06-24 | 支付宝(杭州)信息技术有限公司 | 面向可信执行环境的系统调用处理方法及装置 |
Non-Patent Citations (3)
Title |
---|
App Developer Centric Trusted Execution Environment;Lizhi Sun 等;网页公开:https://arxiv.org/pdf/2102.02465v1.pdf;第1-14页 * |
LEAP: TrustZone Based Developer-Friendly TEE for Intelligent Mobile Apps;Lizhi Sun 等;IEEE Transaction on Mobile Computing;全文 * |
基于TrustZone的开放环境中敏感应用防护方案;张英骏;冯登国;秦宇;杨波;;计算机研究与发展(第10期);第168-183页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113239329A (zh) | 2021-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113239329B (zh) | 一种用于移动端应用程序的可信执行环境的实现系统 | |
US11055438B2 (en) | Methods for restricting resources used by a program based on entitlements | |
KR101565230B1 (ko) | 샌드박스에 참조들을 유지하는 시스템 및 방법 | |
CN108475217B (zh) | 用于审计虚拟机的系统及方法 | |
CN109918919B (zh) | 认证变量的管理 | |
EP3047375B1 (en) | Virtual machine manager facilitated selective code integrity enforcement | |
US8893306B2 (en) | Resource management and security system | |
US10360386B2 (en) | Hardware enforcement of providing separate operating system environments for mobile devices | |
KR20040097251A (ko) | 플랫폼 구성 레지스터를 리세트하기 위한 시스템 및 방법 | |
AU2012262867A1 (en) | System and method for preserving references in sandboxes | |
TW201337736A (zh) | 用以取用基本輸入輸出系統的功能之以網路為基礎的介面 | |
JP2022541796A (ja) | セキュアランタイムシステム及び方法 | |
CN112817780B (zh) | 一种实现安全与高性能进程间通信的方法和系统 | |
CN112818327A (zh) | 基于TrustZone的用户级代码和数据安全可信保护方法及装置 | |
Lee et al. | SofTEE: Software-based trusted execution environment for user applications | |
Fleischer et al. | Memory corruption attacks within Android TEEs: A case study based on OP-TEE | |
Schiffman et al. | The smm rootkit revisited: Fun with usb | |
Sensaoui et al. | An in-depth study of MPU-based isolation techniques | |
Bousquet et al. | Mandatory access control for the android dalvik virtual machine | |
US20230074455A1 (en) | System and method for monitoring delivery of messages passed between processes from different operating systems | |
CN117034330B (zh) | 基于macOS的安全防护方法、设备及存储介质 | |
US11687629B2 (en) | Method for data protection in a data processing cluster with authentication | |
US11687376B2 (en) | Method for data protection in a data processing cluster with dynamic partition | |
US11748484B2 (en) | Tri-level secure separation kernel | |
Sabanal et al. | Playing in the Reader X sandbox |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |