CN112818327A - 基于TrustZone的用户级代码和数据安全可信保护方法及装置 - Google Patents

基于TrustZone的用户级代码和数据安全可信保护方法及装置 Download PDF

Info

Publication number
CN112818327A
CN112818327A CN202110217365.XA CN202110217365A CN112818327A CN 112818327 A CN112818327 A CN 112818327A CN 202110217365 A CN202110217365 A CN 202110217365A CN 112818327 A CN112818327 A CN 112818327A
Authority
CN
China
Prior art keywords
secure
code
user
application program
operating system
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
Application number
CN202110217365.XA
Other languages
English (en)
Inventor
董攀
夏***
马俊
黄辰林
谭郁松
丁滟
任怡
谭霜
李宝
张建锋
秦莹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202110217365.XA priority Critical patent/CN112818327A/zh
Publication of CN112818327A publication Critical patent/CN112818327A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/53Monitoring 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于TrustZone的用户级代码和数据安全可信保护方法及装置,本发明将关键代码通过加密存储在受保护的内存区域内,只有用户可以加载和访问属于自己的关键代码和数据,其它包括特权软件在内的程序都无法访问用户的关键代码。同时,利用TrustZone实现非安全态用户和安全态用户代码的相互调用,非安全态用户调用安全态用户代码实现安全存储和加密等安全操作,安全态用户调用非安全态用户代码完成中断、***调用等非安全操作,将每个操作区分开来,解决了操作***等特权软件不可信、非安全代码对安全态的威胁等问题。

Description

基于TrustZone的用户级代码和数据安全可信保护方法及 装置
技术领域
本发明涉及计算机操作***领域,具体涉及一种基于TrustZone的用户级代码和数据安全可信保护方法及装置,用于基于TrustZone实现用户级代码和数据的安全隔离和非安全态用户代码和安全态用户代码的相互调用。
背景技术
TrustZone是由ARM为提高***安全性而提出的一项由软硬件共同支撑的技术。硬件上,TrustZone在***总线上针对每一个信道的读写增加了一个额外的控制信号位,称为NS(Non-Secure)位,可以通过NS位将内存等资源划分为安全态和非安全态。非安全态只能访问非安态的***资源,而安全态可以访问所有资源。TrustZone通过总线控制和TZASC、TZMA、TZPC等辅助控制器实现对内存、IO等资源的安全隔离。TrustZone使能后,物理处理器能够在两种安全模态之间切换,分别定义为常态(normal world,运行主机OS)和安全态(secure world,运行TEE OS)。运行在安全态以及非安全态的软硬件环境分别称为TEE(Trusted Execution Environment)环境和REE(Rich Execution Environment)环境。TEE和REE之间通过监控模式进行安全隔离,***通过安全监控模式调用(Secure MonitorCall,smc)指令实现安全状态和非安全状态之间的切换。软件上,TrustZone的安全资源由可信的操作***(TEE_OS)进行调度和分配,TEE_OS运行在TEE环境,当非安全态发出请求后,通过安全监控模式调用将请求发给TEE_OS,由TEE_OS将请求发送给对应的安全应用程序进行响应执行。
为了确保TEE_OS可信,TrustZone启动过程采用可信链思想,ARM提供了可信任固件(ARM Trusted Firmware,ATF),ATF源代码分为bl1、bl2、bl31、bl32、bl33部分,其中bl32和bl33分别用于加载TEE和REE侧的镜像。整个TrustZone的可信源点是CPU,可信基是Rootof Trust Public Key(ROTPK),烧录在CPU内部一个只能一次写入的模块内(受信任的根密钥存储寄存器)。TrustZone启动过程中,在加载下一个阶段的镜像之前需要对被加载的镜像文件进行电子验签,只有签名验证通过之后,对应的镜像才会被加载到内存中,然后***才会进行下一步的运行。整个可信链中,只要有一个步骤出现错误,就会导致***挂死。通过可信链的思想,确保TEE_OS的可信度和完整性。
TrustZone完整的运行机制如图1所示,TrustZone技术实现的应用分为安全应用程序(trusted application,TA)和非安全应用程序(client application,CA),CA运行在REE环境,执行非安全操作,TA运行在TEE环境,执行安全操作。CA通过特定API接口发起***调用,linux驱动接受请求,通过SMC切换至内核态TEE_OS进行线程处理,由TEE_OS加载TA镜像,同时加载TA运行所需要的的数据资源,TA响应CA的请求,进行相关的安全操作。在整个过程中,对于用户而言,TEE_OS完全可信,任何敏感保密的操作都可以交给TEE_OS去完成。
TrustZone启动之后,TEE_OS作为可信***,对所有的安全资源进行管理和调度。对于用户而言,将关键代码和私密数据放置在TEE侧,可以隔绝非安全的访问,从而保证了代码和数据的安全。但是TEE_OS在运行过程中的状态会动态变化,基于可信链的启动是对TEE_OS静态的度量,现在的攻击手段层出不穷,比如侧信道攻击、缓冲区溢出攻击、钓鱼攻击等等。这些攻击方式一旦成功,可以获得***的最高权限,对于用户而言,如果TEE_OS被攻陷,那么存放在TEE侧的代码和数据,将面临着被窃取的风险。
为了解决可信问题,Intel提出了SGX技术(Intel Software Guard Extensions)。SGX技术在原有的Intel平台基础上,增加EPC(enclave page cache)和EPCM(enclave pagecache map)硬件组件,enclave是应用程序地址空间上一段受保护的区域。SGX技术设计是在内存上划分一段受保护的区域PRM(Processor Reserved Memory),PRM用于存储EPC和EPCM的内容,PRM、EPC和EPCM的关系如图2所示。EPC由若干个4KB大小的页组成,用来存储应用的隐私数据和安全操作的代码,EPCM设计用来记录EPC和enclave的对应关系。
SGX技术将一个应用程序分成两个部分:安全应用部分和非安全应用部分。每个应用在创建运行时,会在PRM上创建一个enclave用于存放安全应用部分程序的代码和隐私数据,存放在enclave中的数据,只能被enclave的内部的函数进行访问和调用,其它特权或者恶意软件都无法访问。非安全应用程序和安全应用程序可以通过统一的调用接口互相调用,用于完成不同的功能。不同应用创建的enclave之间相互隔离,即使操作***被攻陷,SGX依旧可以确保用户代码和数据的完整性和可信度。
SGX技术和TrustZone技术的区别在于:第一,TrustZone设计的目的是提供一个大的安全隔离环境,用于保护***数据;而SGX设计的目的是为应用提供安全执行环境,用于保护用户数据。第二,TrustZone基于软硬件实现,而SGX全硬件实现。第三,TrustZone提供服务的方式是CA发起请求,由TEE_OS对请求进行响应并回复;SGX的安全程序部分和非***分程序可以相互调用。
TrustZone提供TEE_OS管理TEE环境的资源,对于用户而言,把用户的私密数据和安全应用程序交给TEE_OS进行管理和访问的前提是TEE_OS必须可信,虽然TEE_OS采用可信链的方式进行加载,加载的TEE_OS是可信的,但是在运行的过程中,缺少对TEE_OS的检测和度量,如果TEE_OS遭受攻击甚至被攻陷,那么用户的私密数据和安全应用程序也不再安全。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于TrustZone的用户级代码和数据安全可信保护方法及装置,本发明将关键代码通过加密存储在受保护的内存区域内,只有用户可以加载和访问属于自己的关键代码和数据,其它包括特权软件在内的程序都无法访问用户的关键代码。同时,利用TrustZone实现非安全态用户和安全态用户代码的相互调用,非安全态用户调用安全态用户代码实现安全存储和加密等安全操作,安全态用户调用非安全态用户代码完成中断、***调用等非安全操作,将每个操作区分开来,解决了操作***等特权软件不可信的问题。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于TrustZone的用户级代码和数据安全可信保护方法,包括位于安全操作***中的安全应用程序代码调用位于通用操作***中的非安全应用程序代码的步骤:
A1)安全应用程序代码调用专用的***调用接口,以通过安全操作***中的驱动程序向监控器发起非安全操作调用请求;
A2)监控器利用安全监控模式将非安全操作调用请求调用进入到内核态的通用操作***;
A3)内核态的通用操作***加载非安全操作调用请求对应的目标非安全应用程序代码,目标非安全应用程序代码进行对应的非安全操作,且在完成相应的工作之后将操作结果通过监控器返回给发起非安全操作调用请求的安全应用程序代码。
可选地,步骤A1)中的专用的***调用接口可用的调用接口函数包括返回接口函数return、获取密钥接口函数getkey及外部调用接口函数outcall,其中返回接口函数return用于向非安全应用程序代码传递数据,所述获取密钥函数getkey用于安全应用程序代码获取密钥,所述外部调用接口函数outcall用于安全应用程序代码调用非安全应用程序代码中封装的函数。
可选地,步骤A1)中通过安全操作***中的驱动程序向监控器发起非安全操作调用请求之前,还包括对专用的***调用接口调用进行形式化验证和安全检查的步骤。
可选地,步骤A1)中调用专用的***调用接口时,若专用的***调用接口的调用命令中包含传递的字符串或者数组,且调用命令中包含字符串或者数组的地址声明以及传递字符串或者数组的长度;所述进行形式化验证和安全检查包括:读取调用命令中传递的字符串或者数组的长度,并判断传递的字符串或者数组的长度、传递中声明的长度是否不同,若不同则判定传递异常的值,结束并退出;否则通过安全操作***中的驱动程序向监控器发起非安全操作调用请求。
可选地,步骤A3)中内核态的通用操作***加载非安全操作调用请求对应的目标非安全应用程序代码之后,还包括跟随目标非安全应用程序代码启动一个对应的监听线程,且每一个非安全应用程序代码的监听线程具有与该非安全应用程序代码对应的标识,所述监听线程用于监听来自安全应用程序代码的非安全操作调用请求;若监听线程监听到来自安全应用程序代码的非安全操作调用请求,则监听线程产生新的线程去执行调用请求,新的线程完成对应任务之后随即销毁,监听线程继续监听任务,当用户程序执行退出之后,销毁监听线程。
可选地,还包括位于通用操作***中的非安全应用程序代码调用位于安全操作***中的安全应用程序代码的步骤:
B1)非安全应用程序代码执行ioctl***调用,通过通用操作***中的驱动程序向监控器发起安全操作调用请求;
B2)监控器利用安全监控模式将安全操作调用请求调用进入到内核态的安全操作***;
B3)内核态的安全操作***加载安全操作调用请求对应的目标安全应用程序代码,目标安全应用程序代码进行对应的安全操作,且在完成相应的工作之后将操作结果通过监控器返回给发起安全操作调用请求的非安全应用程序代码。
可选地,所述位于安全操作***中的安全应用程序代码调用位于通用操作***中的非安全应用程序代码之前还包括加载用户程序的步骤:
C1)判断待加载的用户程序是否包含声明的安全应用程序代码以及非安全应用程序代码,若包含安全应用程序代码以及非安全应用程序代码,则跳转下一步;
C2)把用户程序中的非安全应用程序代码加载到通用操作***,把用户程序中的安全应用程序代码加载到安全操作***。
可选地,所述加载用户程序之前包括编写用户程序的步骤,且编写用户程序的步骤包括:
D1)在待编写的用户程序中声明安全应用程序代码以及非安全应用程序代码;
D2)将该用户程序中的功能操作划分为安全操作和非安全操作,其中安全操作是指涉及到用户隐私数据处理的操作,非安全操作是指不涉及到隐私数据处理的操作;
D3)将安全操作放在安全应用程序代码中、非安全操作放在非安全应用程序代码中。
此外,本发明还提供一种基于TrustZone的用户级代码和数据安全可信保护装置,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述基于TrustZone的用户级代码和数据安全可信保护方法的步骤,或者所述存储器中存储有被编程或配置以执行所述基于TrustZone的用户级代码和数据安全可信保护方法的计算机程序。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述基于TrustZone的用户级代码和数据安全可信保护方法的计算机程序。
和现有技术相比,本发明具有下述优点:
1、本发明将关键代码通过加密存储在受保护的内存区域内,只有用户可以加载和访问属于自己的关键代码和数据,其它包括特权软件在内的程序都无法访问用户的关键代码。本发明降低了信任源点,本发明的信任源点为低特权级的用户态应用程序,每个应用程序分为两个部分:安全应用程序代码和非安全应用程序代码。操作***可以访问非安全应用程序代码的代码和数据,但是不能访问安全应用程序代码,非安全应用程序代码的数据和代码只有内部的函数可以访问和使用,对于每个应用而言,将隐私数据和代码存放于安全应用部分是可信的。
2、本发明利用TrustZone实现非安全态用户和安全态用户代码的相互调用,非安全态用户调用安全态用户代码实现安全存储和加密等安全操作,安全态用户调用非安全态用户代码完成中断、***调用等非安全操作,将每个操作区分开来,解决了操作***等特权软件不可信的问题,解决了安全应用程序与不安全的操作***交互的问题,对接口进行严格的形式化验证,确保接口的安全性。
附图说明
图1为现有技术中TrustZone完整的运行机制示意图。
图2为现有技术中PRM、EPC和EPCM的关系示意图。
图3为本发明实施例中的运行机制示意图。
图4为本发明实施例中的***结构示意图。
具体实施方式
如图3和图4所示,本实施例基于TrustZone的用户级代码和数据安全可信保护方法,包括位于安全操作***中的安全应用程序代码调用位于通用操作***中的非安全应用程序代码的步骤:
A1)安全应用程序代码调用专用的***调用接口,以通过安全操作***中的驱动程序向监控器发起非安全操作调用请求;
A2)监控器利用安全监控模式将非安全操作调用请求调用进入到内核态的通用操作***;
A3)内核态的通用操作***加载非安全操作调用请求对应的目标非安全应用程序代码,目标非安全应用程序代码进行对应的非安全操作,且在完成相应的工作之后将操作结果通过监控器返回给发起非安全操作调用请求的安全应用程序代码。
如图3和图4所示,本实施例中拥有TrustZone支持的ARM平台在TEE(TrustedExecution Environment,可信执行环境)侧运行安全操作***(简称TEE_OS)并提供安全应用支持,在REE(Rich Execution Environment,普通执行环境)侧运行通用操作***(本实施例中具体为linux)。本实施例方法将用户的程序分为两个部分:安全应用程序代码、非安全应用程序代码,不涉及到隐私数据处理的非安全应用程序代码放在REE侧,涉及到用户隐私数据的安全应用程序代码放在TEE侧,利用TrustZone的安全隔离环境保证关键代码和隐私数据的安全性,从而在具备TEE扩展的计算平台上,为用户级代码和数据提供安全可信的服务,以及实现非安全态用户代码和安全态用户代码的相互调用。
本实施例包括精简传统***结构,只允许保留专用的***调用接口。本实施例中,步骤A1)中的专用的***调用接口可用的调用接口函数包括返回接口函数return、获取密钥接口函数getkey及外部调用接口函数outcall,其中返回接口函数return用于向非安全应用程序代码传递数据,所述获取密钥函数getkey用于安全应用程序代码获取密钥,所述外部调用接口函数outcall用于安全应用程序代码调用非安全应用程序代码中封装的函数。
本实施例中,步骤A1)中通过安全操作***中的驱动程序向监控器发起非安全操作调用请求之前,还包括对专用的***调用接口调用进行形式化验证和安全检查的步骤。
本实施例中,步骤A1)中调用专用的***调用接口时,若专用的***调用接口的调用命令中包含传递的字符串或者数组,且调用命令中包含字符串或者数组的地址声明以及传递字符串或者数组的长度;所述进行形式化验证和安全检查包括:读取调用命令中传递的字符串或者数组的长度,并判断传递的字符串或者数组的长度、传递中声明的长度是否不同,若不同则判定传递异常的值,结束并退出;否则通过安全操作***中的驱动程序向监控器发起非安全操作调用请求。以outcall调用为例,outcall为TA调用CA的接口,为了确保调用的可靠性,设计时首先要考虑接口的逻辑性,利用形式化验证方法检测***接口是否达到预期期望,同时,要对outcall传递的参数进行严格的检查。在本实施例中,对于字符串或者数组的传递,需要声明字符串或者数组的地址,同时需要该字符串或数组的长度,防止异常的值传递。具体的参数检查实现以伪代码表述如下:
Figure BDA0002954334300000061
本例子以一个参数为例,对传递的参数进行检查,发现参数不符合规范,则触发参数异常处理函数进行异常处理,参数检查通过之后才可以进行后续的操作。
本实施例中,步骤A3)中内核态的通用操作***加载非安全操作调用请求对应的目标非安全应用程序代码之后,还包括跟随目标非安全应用程序代码启动一个对应的监听线程,且每一个非安全应用程序代码的监听线程具有与该非安全应用程序代码对应的标识,所述监听线程用于监听来自安全应用程序代码的非安全操作调用请求;若监听线程监听到来自安全应用程序代码的非安全操作调用请求,则监听线程产生新的线程去执行调用请求,新的线程完成对应任务之后随即销毁,监听线程继续监听任务,当用户程序执行退出之后,销毁监听线程。
如图3和图4所示,本实施例还包括位于通用操作***中的非安全应用程序代码调用位于安全操作***中的安全应用程序代码的步骤:
B1)非安全应用程序代码执行ioctl***调用,通过通用操作***中的驱动程序向监控器发起安全操作调用请求;
B2)监控器利用安全监控模式将安全操作调用请求调用进入到内核态的安全操作***;
B3)内核态的安全操作***加载安全操作调用请求对应的目标安全应用程序代码,目标安全应用程序代码进行对应的安全操作,且在完成相应的工作之后将操作结果通过监控器返回给发起安全操作调用请求的非安全应用程序代码。
本实施例中,位于安全操作***中的安全应用程序代码调用位于通用操作***中的非安全应用程序代码之前还包括加载用户程序的步骤:
C1)判断待加载的用户程序是否包含声明的安全应用程序代码以及非安全应用程序代码,若包含安全应用程序代码以及非安全应用程序代码,则跳转下一步;
C2)把用户程序中的非安全应用程序代码加载到通用操作***,把用户程序中的安全应用程序代码加载到安全操作***。
本实施例中,加载用户程序之前包括编写用户程序的步骤,且编写用户程序的步骤包括:
D1)在待编写的用户程序中声明安全应用程序代码以及非安全应用程序代码;
D2)将该用户程序中的功能操作划分为安全操作和非安全操作,其中安全操作是指涉及到用户隐私数据处理的操作,非安全操作是指不涉及到隐私数据处理的操作;
D3)将安全操作放在安全应用程序代码中、非安全操作放在非安全应用程序代码中。
安全操作***中TA(安全应用程序)的***调用有很多种,本实施例中通过取消TA大部分的***调用接口,下调TA运行的特权级,使得TA的大部分操作不需要安全操作***(TEE_OS)的参与,减少TA和TEE_OS的交互,确保TA运行的独立性,不会受到其它特权应用的干扰。同时,保留的***调用接口尽可能少,***调用接口越多,对于***调用接口的监控难度越大。在进行***调用时,本实施例通过对***调用接口进行检查和形式化验证,防止***调用接口被更改或者其它的安全问题。在非安全应用程序代码调用安全应用程序代码的基础上,实现安全应用程序代码调用非安全应用程序代码的功能。自定义的***调用的作用突出,一方面自定义的***调用针对性强,只有对应的安全应用程序代码可以使用,确保安全应用程序代码之间的独立性;另一方面使用自定义的***调用接口,调用非安全应用程序代码,利用非安全应用程序代码去进行***调用,从而减少安全应用程序代码与TEE_OS的交互。本实施例中,非安全应用程序代码调用安全应用程序代码对数据进行加密,安全应用程序代码提供通过所设计的专用接口outcall调用非安全态用户代码进行打印输出密文,从而能够避免安全应用程序代码直接进行***调用打印机进行打印,减少安全态用户代码与特权软件的交互,从而提高了***的可靠性。
如图3和图4所示,本实施例中,安全应用程序代码提供通过所设计的专用接口调用outcall非安全应用程序代码时,安全操作***首先针对***调用接口进行形式化检查,同时会对传递的参数如字符串或者数组进行参数检查,如果验证通过,则响应安全应用程序代码的调用,否则拒绝安全应用程序代码的调用。调用请求成功后,安全应用程序代码利用非安全应用程序代码完成非安全操作,操作完成后并将结果返回给安全应用程序代码。非安全应用程序代码中增加监听线程,监听线程用于监听来自安全操作***中安全应用程序代码的调用请求,每个安全应用程序代码对应一个特定标识,监听线程识别与非安全应用程序代码对应的安全应用程序代码的标识,完成安全应用程序代码指定的请求任务。本实施例中,非安全应用程序代码增加安全监听节点用于监听安全操作***中安全应用的调用请求,对调用请求的标识进行区分,每一个安全应用程序代码都对应一个调用请求标识,通过不同的调用请求标识确定不同的***调用,完成指定请求任务。本实例中,在非安全应用程序代码中增加新的设备号,监听调用请求,对调用请求的标识进行区分,每一个安全应用程序代码都对应一个调用请求标识,通过不同的调用请求标识确定不同的***调用。本实施例中,非安全应用程序代码所在的通用操作***中针对安全监听节点启动有监听线程,当非安全应用程序代码开始运行时,监听线程也随之运行,通过监听线程读取安全应用程序代码的调用请求,一旦监听到调用请求,监听线程产生新的线程去执行调用请求,新的线程完成对应任务后随即销毁,监听线程继续监听任务,当用户程序执行退出之后,销毁监听线程。综上所述,本实施例方法对安全隔离环境进一步划分,把对***级的隔离划分为应用级的隔离,用户的安全应用程序和数据存储在各自的应用级隔离范围内,防止私密数据被窃取。不同的应用级隔离之间不能相互访问,同时用户只能调用自己的应用级隔离范围内的功能,确保数据的安全。取消安全隔离环境原有的***调用,设计统一的***调用接口,实现安全应用程序和非安全应用程序相互调用的功能。非安全应用程序通过统一的***调用接口调用安全应用程序进行安全操作,确保操作的可靠性;安全应用程序通过统一的***调用接口调用非安全应用程序进行***调用等功能,安全应用程序的操作全部为应用级操作,不直接进行***调用操作,当需要进行***级调用时,通过统一的***调用接口调用非安全应用程序去执行相关操作,避免安全应用程序与操作***进行交互。对设计的***调用接口进行严格的形式化验证和检查,取消原有***调用的目的是避免安全应用程序与操作***的交互,对设计的***调用接口进行形式化验证的目的是为了防止***调用接口被篡改、传递的函数值或者地址被替换,保证***调用的安全性和可靠性。本实施例将关键代码通过加密存储在受保护的内存区域内,只有用户可以加载和访问属于自己的关键代码和数据,其它包括特权软件在内的程序都无法访问用户的关键代码。同时,利用TrustZone实现非安全态用户和安全态用户代码的相互调用,非安全态用户调用安全态用户代码实现安全存储和加密等安全操作,安全态用户调用非安全态用户代码完成中断、***调用等非安全操作,将每个操作区分开来,解决了操作***等特权软件不可信的问题。
此外,本实施例还提供一种基于TrustZone的用户级代码和数据安全可信保护装置,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行前述基于TrustZone的用户级代码和数据安全可信保护方法的步骤,或者所述存储器中存储有被编程或配置以执行前述基于TrustZone的用户级代码和数据安全可信保护方法的计算机程序。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述基于TrustZone的用户级代码和数据安全可信保护方法的计算机程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种基于TrustZone的用户级代码和数据安全可信保护方法,其特征在于,包括位于安全操作***中的安全应用程序代码调用位于通用操作***中的非安全应用程序代码的步骤:
A1)安全应用程序代码调用专用的***调用接口,以通过安全操作***中的驱动程序向监控器发起非安全操作调用请求;
A2)监控器利用安全监控模式将非安全操作调用请求调用进入到内核态的通用操作***;
A3)内核态的通用操作***加载非安全操作调用请求对应的目标非安全应用程序代码,目标非安全应用程序代码进行对应的非安全操作,且在完成相应的工作之后将操作结果通过监控器返回给发起非安全操作调用请求的安全应用程序代码。
2.根据权利要求1所述的基于TrustZone的用户级代码和数据安全可信保护方法,其特征在于,步骤A1)中的专用的***调用接口可用的调用接口函数包括返回接口函数return、获取密钥接口函数getkey及外部调用接口函数outcall,其中返回接口函数return用于向非安全应用程序代码传递数据,所述获取密钥函数getkey用于安全应用程序代码获取密钥,所述外部调用接口函数outcall用于安全应用程序代码调用非安全应用程序代码中封装的函数。
3.根据权利要求1所述的基于TrustZone的用户级代码和数据安全可信保护方法,其特征在于,步骤A1)中通过安全操作***中的驱动程序向监控器发起非安全操作调用请求之前,还包括对专用的***调用接口调用进行形式化验证和安全检查的步骤。
4.根据权利要求3所述的基于TrustZone的用户级代码和数据安全可信保护方法,其特征在于,步骤A1)中调用专用的***调用接口时,若专用的***调用接口的调用命令中包含传递的字符串或者数组,且调用命令中包含字符串或者数组的地址声明以及传递字符串或者数组的长度;所述进行形式化验证和安全检查包括:读取调用命令中传递的字符串或者数组的长度,并判断传递的字符串或者数组的长度、传递中声明的长度是否不同,若不同则判定传递异常的值,结束并退出;否则通过安全操作***中的驱动程序向监控器发起非安全操作调用请求。
5.根据权利要求1所述的基于TrustZone的用户级代码和数据安全可信保护方法,其特征在于,步骤A3)中内核态的通用操作***加载非安全操作调用请求对应的目标非安全应用程序代码之后,还包括跟随目标非安全应用程序代码启动一个对应的监听线程,且每一个非安全应用程序代码的监听线程具有与该非安全应用程序代码对应的标识,所述监听线程用于监听来自安全应用程序代码的非安全操作调用请求;若监听线程监听到来自安全应用程序代码的非安全操作调用请求,则监听线程产生新的线程去执行调用请求,新的线程完成对应任务之后随即销毁,监听线程继续监听任务,当用户程序执行退出之后,销毁监听线程。
6.根据权利要求1所述的基于TrustZone的用户级代码和数据安全可信保护方法,其特征在于,还包括位于通用操作***中的非安全应用程序代码调用位于安全操作***中的安全应用程序代码的步骤:
B1)非安全应用程序代码执行ioctl***调用,通过通用操作***中的驱动程序向监控器发起安全操作调用请求;
B2)监控器利用安全监控模式将安全操作调用请求调用进入到内核态的安全操作***;
B3)内核态的安全操作***加载安全操作调用请求对应的目标安全应用程序代码,目标安全应用程序代码进行对应的安全操作,且在完成相应的工作之后将操作结果通过监控器返回给发起安全操作调用请求的非安全应用程序代码。
7.根据权利要求1所述的基于TrustZone的用户级代码和数据安全可信保护方法,其特征在于,所述位于安全操作***中的安全应用程序代码调用位于通用操作***中的非安全应用程序代码之前还包括加载用户程序的步骤:
C1)判断待加载的用户程序是否包含声明的安全应用程序代码以及非安全应用程序代码,若包含安全应用程序代码以及非安全应用程序代码,则跳转下一步;
C2)把用户程序中的非安全应用程序代码加载到通用操作***,把用户程序中的安全应用程序代码加载到安全操作***。
8.根据权利要求7所述的基于TrustZone的用户级代码和数据安全可信保护方法,其特征在于,所述加载用户程序之前包括编写用户程序的步骤,且编写用户程序的步骤包括:
D1)在待编写的用户程序中声明安全应用程序代码以及非安全应用程序代码;
D2)将该用户程序中的功能操作划分为安全操作和非安全操作,其中安全操作是指涉及到用户隐私数据处理的操作,非安全操作是指不涉及到隐私数据处理的操作;
D3)将安全操作放在安全应用程序代码中、非安全操作放在非安全应用程序代码中。
9.一种基于TrustZone的用户级代码和数据安全可信保护装置,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~8中任意一项所述基于TrustZone的用户级代码和数据安全可信保护方法的步骤,或者所述存储器中存储有被编程或配置以执行权利要求1~8中任意一项所述基于TrustZone的用户级代码和数据安全可信保护方法的计算机程序。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有被编程或配置以执行权利要求1~8中任意一项所述基于TrustZone的用户级代码和数据安全可信保护方法的计算机程序。
CN202110217365.XA 2021-02-26 2021-02-26 基于TrustZone的用户级代码和数据安全可信保护方法及装置 Pending CN112818327A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110217365.XA CN112818327A (zh) 2021-02-26 2021-02-26 基于TrustZone的用户级代码和数据安全可信保护方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110217365.XA CN112818327A (zh) 2021-02-26 2021-02-26 基于TrustZone的用户级代码和数据安全可信保护方法及装置

Publications (1)

Publication Number Publication Date
CN112818327A true CN112818327A (zh) 2021-05-18

Family

ID=75864064

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110217365.XA Pending CN112818327A (zh) 2021-02-26 2021-02-26 基于TrustZone的用户级代码和数据安全可信保护方法及装置

Country Status (1)

Country Link
CN (1) CN112818327A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113343234A (zh) * 2021-06-10 2021-09-03 支付宝(杭州)信息技术有限公司 对代码安全性进行可信检查的方法及装置
CN113486411A (zh) * 2021-07-19 2021-10-08 上海擎昆信息科技有限公司 一种安全芯片及其设计方法、初始化方法
CN113868676A (zh) * 2021-08-30 2021-12-31 苏州浪潮智能科技有限公司 在arm平台基于固件实现可信密码模块的方法及装置
CN114091023A (zh) * 2021-11-23 2022-02-25 国汽智控(北京)科技有限公司 可执行文件的检查方法、装置、设备和存储介质
CN114491565A (zh) * 2022-03-31 2022-05-13 飞腾信息技术有限公司 固件安全启动方法、装置、计算设备和可读存储介质
CN117744067A (zh) * 2024-02-21 2024-03-22 北京象帝先计算技术有限公司 访问空间切换方法、装置、处理器、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012106097A2 (en) * 2011-02-04 2012-08-09 Motorola Mobility, Inc. Method and apparatus for managing security state transitions
US20140259101A1 (en) * 2013-03-07 2014-09-11 Qualcomm Incorporated Apparatus and method for inheriting a non-secure thread context
CN105260663A (zh) * 2015-09-15 2016-01-20 中国科学院信息工程研究所 一种基于TrustZone技术的安全存储服务***及方法
US20180232540A1 (en) * 2017-02-13 2018-08-16 Samsung Electronics Co., Ltd. Method and apparatus for operating multi-processor system in electronic device
CN109558211A (zh) * 2018-11-27 2019-04-02 上海瓶钵信息科技有限公司 保护可信应用与普通应用的交互完整性和保密性的方法
CN109960582A (zh) * 2018-06-19 2019-07-02 华为技术有限公司 在tee侧实现多核并行的方法、装置及***
CN112329019A (zh) * 2020-11-02 2021-02-05 歌尔科技有限公司 基于TrustZone的编程方法、终端设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012106097A2 (en) * 2011-02-04 2012-08-09 Motorola Mobility, Inc. Method and apparatus for managing security state transitions
US20140259101A1 (en) * 2013-03-07 2014-09-11 Qualcomm Incorporated Apparatus and method for inheriting a non-secure thread context
CN105260663A (zh) * 2015-09-15 2016-01-20 中国科学院信息工程研究所 一种基于TrustZone技术的安全存储服务***及方法
US20180232540A1 (en) * 2017-02-13 2018-08-16 Samsung Electronics Co., Ltd. Method and apparatus for operating multi-processor system in electronic device
CN109960582A (zh) * 2018-06-19 2019-07-02 华为技术有限公司 在tee侧实现多核并行的方法、装置及***
CN109558211A (zh) * 2018-11-27 2019-04-02 上海瓶钵信息科技有限公司 保护可信应用与普通应用的交互完整性和保密性的方法
CN112329019A (zh) * 2020-11-02 2021-02-05 歌尔科技有限公司 基于TrustZone的编程方法、终端设备及存储介质

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113343234A (zh) * 2021-06-10 2021-09-03 支付宝(杭州)信息技术有限公司 对代码安全性进行可信检查的方法及装置
WO2022257722A1 (zh) * 2021-06-10 2022-12-15 支付宝(杭州)信息技术有限公司 对代码安全性进行可信检查的方法及装置
CN113486411A (zh) * 2021-07-19 2021-10-08 上海擎昆信息科技有限公司 一种安全芯片及其设计方法、初始化方法
CN113486411B (zh) * 2021-07-19 2024-05-14 上海擎昆信息科技有限公司 一种安全芯片及其设计方法、初始化方法
CN113868676A (zh) * 2021-08-30 2021-12-31 苏州浪潮智能科技有限公司 在arm平台基于固件实现可信密码模块的方法及装置
CN113868676B (zh) * 2021-08-30 2023-11-03 苏州浪潮智能科技有限公司 在arm平台基于固件实现可信密码模块的方法及装置
CN114091023A (zh) * 2021-11-23 2022-02-25 国汽智控(北京)科技有限公司 可执行文件的检查方法、装置、设备和存储介质
CN114491565A (zh) * 2022-03-31 2022-05-13 飞腾信息技术有限公司 固件安全启动方法、装置、计算设备和可读存储介质
CN114491565B (zh) * 2022-03-31 2022-07-05 飞腾信息技术有限公司 固件安全启动方法、装置、计算设备和可读存储介质
CN117744067A (zh) * 2024-02-21 2024-03-22 北京象帝先计算技术有限公司 访问空间切换方法、装置、处理器、设备及存储介质

Similar Documents

Publication Publication Date Title
TWI570589B (zh) 用以提供受信任計算之裝置
CN112818327A (zh) 基于TrustZone的用户级代码和数据安全可信保护方法及装置
US8640194B2 (en) Information communication device and program execution environment control method
US8458791B2 (en) Hardware-implemented hypervisor for root-of-trust monitoring and control of computer system
EP3761208B1 (en) Trust zone-based operating system and method
US20210124824A1 (en) Securing secret data embedded in code against compromised interrupt and exception handlers
US10095862B2 (en) System for executing code with blind hypervision mechanism
US6986006B2 (en) Page granular curtained memory via mapping control
US8893306B2 (en) Resource management and security system
US8495750B2 (en) Filesystem management and security system
US8327415B2 (en) Enabling byte-code based image isolation
CN111353162B (zh) 基于TrustZone分核异步执行的主动可信计算方法及***
CN108154032B (zh) 具有内存完整性保障功能的计算机***信任根构建方法
JPWO2006134691A1 (ja) 情報処理装置、復旧装置、プログラム及び復旧方法
US10108800B1 (en) ARM processor-based hardware enforcement of providing separate operating system environments for mobile devices with capability to employ different switching methods
JP6370098B2 (ja) 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
KR102105760B1 (ko) 하드웨어 보안 기술 기반 gpu 컴퓨팅 보호 기법
EP3961446B1 (en) Method and apparatus for securely entering trusted execution environment in hyper-threading scenario
Lee et al. SofTEE: Software-based trusted execution environment for user applications
Zaidenberg Hardware rooted security in industry 4.0 systems
Dubrulle et al. Blind hypervision to protect virtual machine privacy against hypervisor escape vulnerabilities
EP3314516B1 (en) System management mode privilege architecture
CN117708832A (zh) 高性能异构可信执行环境实现方法及***
RU2609761C1 (ru) Способ выполнения кода в режиме гипервизора
CN115905108A (zh) 一种用于risc-v芯片的iopmp架构实现方法

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