CN116049812B - 访问硬件资源的方法和电子设备 - Google Patents
访问硬件资源的方法和电子设备 Download PDFInfo
- Publication number
- CN116049812B CN116049812B CN202210740393.4A CN202210740393A CN116049812B CN 116049812 B CN116049812 B CN 116049812B CN 202210740393 A CN202210740393 A CN 202210740393A CN 116049812 B CN116049812 B CN 116049812B
- Authority
- CN
- China
- Prior art keywords
- tee
- hardware resource
- data
- target
- module
- 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
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/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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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
- 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
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- 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/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例适用于数据处理技术领域,提供一种访问硬件资源的方法和电子设备,用于电子设备,电子设备包括至少两个可信执行环境TEE,至少两个TEE包括第一TEE和第二TEE,第一TEE是指不具备访问目标硬件资源的权限的TEE,第二TEE是指具备访问目标硬件资源的权限的TEE,包括:第一TA向第二TA发送硬件资源共享请求,第二TA基于硬件资源共享请求,确定第一TEE为目标TEE,第二TA建立数据通道,第一TA通过数据通道访问目标硬件资源,获取密钥数据。这样使得在多TEE架构中的各TEE中运行的应用程序均能获取密钥数据的功能。
Description
技术领域
本申请涉及数据处理领域,并且更具体地,涉及一种访问硬件资源的方法和电子设备。
背景技术
在终端设备的使用过程中,应用程序需要访问目标硬件资源才能获取加解密所需密钥数据(密钥和硬件随机数)。其中,目标硬件资源可以包括TRNG,或者HUK。
应理解,访问目标硬件资源的权限通常只会释放给有限数量个应用程序。示例性的,访问目标硬件资源的权限释放给运行在可信执行环境(Trustedexecutionenvironment,TEE)的应用程序。随着终端技术的不断进步,多TEE架构成为了一种常见的架构。出于***安全的考虑,访问目标硬件资源的权限通常只会释放给一个TEE中运行的应用程序。其他TEE中运行的应用程序无法访问目标硬件资源,也无法获取密钥数据。
基于此,如何实现多TEE框架中每个TEE中运行的应用程序均能获取密钥数据成为了一个亟待解决的问题。
发明内容
本申请提供了一种访问硬件资源的方法,能够实现多TEE框架中每个TEE中运行的应用程序均能获取密钥数据的功能。
第一方面,提供了一种访问硬件资源的方法,该方法应用于电子设备,电子设备包括至少两个可信执行环境TEE,至少两个TEE包括第一TEE和第二TEE,第一TEE是指不具备访问目标硬件资源的权限的TEE,第二TEE是指具备访问目标硬件资源的权限的TEE,目标硬件资源是指获取密钥数据所需访问的硬件资源,密钥数据包括硬件随机数和安全密钥,该方法包括:
第一可信应用程序TA向第二可信应用程序TA发送硬件资源共享请求,第一TA是指运行在第一TEE中的应用程序,第二TA是指运行在第二TEE中的应用程序,硬件资源共享请求用于访问目标硬件资源;
第二TA基于硬件资源共享请求,确定第一TEE为目标TEE;
第二TA建立数据通道,数据通道用于在第一TEE中运行的应用程序访问目标硬件资源;
第一TA通过数据通道访问目标硬件资源,获取密钥数据。
本申请的实施例中所提供的访问硬件资源的方法,应用于电子设备,电子设备包括至少两个可信执行环境TEE,至少两个TEE包括第一TEE和第二TEE,第一TEE是指不具备访问目标硬件资源的权限的TEE,第二TEE是指具备访问目标硬件资源的权限的TEE,目标硬件资源是指获取密钥数据所需访问的硬件资源,密钥数据包括硬件随机数和安全密钥,该方法包括:第一TA向第二TA发送硬件资源共享请求,第二TA基于硬件资源共享请求,确定第一TEE为目标TEE,第二TA建立数据通道,第一TA通过数据通道访问目标硬件资源,获取密钥数据。其中,第一TA是指运行在第一TEE中的应用程序,第二TA是指运行在第二TEE中的应用程序,硬件资源共享请求用于访问目标硬件资源;数据通道用于在第一TEE中运行的应用程序访问目标硬件资源。这样使得运行在不具备访问目标硬件资源权限的第一TEE中的第一TA,能够通过数据通道访问目标硬件资源,相当于实现了在多TEE架构中的各TEE中运行的应用程序均能访问目标硬件资源,从而使得在多TEE架构中的各TEE中运行的应用程序均能获取密钥数据的功能。
在一个实施例中,硬件资源共享请求包括第一TEE的标识,第二TEE中包括第一模块,第一模块中存储有目标TEE的标识和第一数据,第一数据是指对目标TEE的标识进行哈希Hash处理得到的数据;第二TA基于硬件资源共享请求,确定第一TEE为目标TEE,包括:第二TA根据第一TEE的标识获取第二数据,第二数据是指对第一TEE的标识进行Hash处理得到的数据;在第一TEE的标识与目标TEE的标识匹配,且第一数据和第二数据相同的情况下,确定第一TEE为目标TEE。
其中,第二TA基于硬件资源共享请求,确定第一TEE为目标TEE的过程中,可以是第二TA基于第一TEE的标识和目标TEE的标识是否匹配,且第一数据和第二数据是否相同做出的判断;也可以是借助Hypervisor模块去确定第一TEE的标识和目标TEE的标识是否匹配,且第一数据和第二数据是否相同所做出的判断。本申请实施例对此不作限制。
本申请的实施例中,硬件资源共享请求包括第一TEE的标识,第二TEE中包括第一模块,第一模块中存储有目标TEE的标识和第一数据,第二TA根据第一TEE的标识获取第二数据,在第一TEE的标识与目标TEE的标识匹配,且第一数据和第二数据相同的情况下,确定第一TEE为目标TEE,其中,第一数据是指对目标TEE的标识进行哈希Hash处理得到的数据,第二数据是指对第一TEE的标识进行Hash处理得到的数据;这样使得第二TA建立的数据通道是在第一TEE是目标TEE的情况下建立的,也即是说,不是任意的TEE都能够通过数据通道访问目标硬件资源,只有目标TEE才能通过数据通道访问目标硬件资源,提高了访问目标硬件资源的安全性。
在一个实施例中,上述第二TA根据第一TEE的标识获取第二数据,包括:第二TA向Hypervisor模块发送第一TEE的标识;Hypervisor模块对第一TEE的标识进行Hash处理,得到第二数据;Hypervisor模块发送第二数据至第二TA。
在一个实施例中,上述第一可信应用程序TA发送硬件资源共享请求至第二可信应用程序TA,包括:第一TA向第一TEE中的第二模块发送第一TEE的标识;第二模块采用预设密钥对第一TEE的标识进行加密,得到硬件资源共享请求;第二模块将向第二TA发送硬件资源共享请求。
本申请的实施例中,硬件资源共享请求是密钥管理模块采用预设密钥对第一TEE的标识进行加密处理得到的,这样使得第一TEE和第二TEE之间传输的硬件资源共享请求是经过加密的数据,提高了第一TEE和第二TEE之间传输数据的安全性。
在一个实施例中,该方法还包括:第二TA采用预设密钥对硬件资源共享请求进行解密,得到第一TEE的标识。
本申请的实施例中,第二TA在接收到硬件资源共享请求之后,采用预设密钥对硬件资源共享请求进行解密得到第一TEE的标识,这样使得第一TEE和第二TEE之间传输的硬件资源共享请求是经过加密的数据,提高了第一TEE和第二TEE之间传输数据的安全性。
在一个实施例中,该方法还包括:第二TEE中的第三模块生成预设密钥;预设密钥用于对第一TEE的标识进行加密,得到硬件资源共享请求;第三模块向第一TEE中的第二模块发送预设密钥。
本申请的实施例中,用于对第一TEE的标识进行加解密的预设密钥是第二TEE中的第三模块生成的,这样使得第一TEE和第二TEE之间传输的硬件资源共享请求是由第二TEE中的模块生成的预设密钥进行加密的,避免了在其他TEE中的模块向第一TEE中的第二模块和第二TEE中的第二TA发送预设密钥的情况,进而降低了电子设备中不必要的数据传输,避免了***资源的浪费。
第二方面,提供了一种访问硬件资源的装置,包括用于执行第一方面中任一种方法的单元。该装置可以是终端设备,还可以是终端设备内的芯片。该装置可以包括输入单元和处理单元。
当该装置是终端设备时,该处理单元可以是处理器,该输入单元可以是通信接口;该终端设备还可以包括存储器,该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该终端设备执行第一方面中的任一种方法。
当该装置是终端设备内的芯片时,该处理单元可以是芯片内部的处理单元,该输入单元可以是输出接口、管脚或电路等;该芯片还可以包括存储器,该存储器可以是该芯片内的存储器(例如,寄存器、缓存等),也可以是位于该芯片外部的存储器(例如,只读存储器、随机存取存储器等);该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该芯片执行第一方面中的任一种方法。
在一种可能的实现方式中,存储器用于存储计算机程序代码;处理器,处理器执行该存储器所存储的计算机程序代码,当该存储器存储的计算机程序代码被执行时,该处理器用于执行:第一可信应用程序TA向第二可信应用程序TA发送硬件资源共享请求,第一TA是指运行在第一TEE中的应用程序,第二TA是指运行在第二TEE中的应用程序,硬件资源共享请求用于访问目标硬件资源;第二TA基于硬件资源共享请求,确定第一TEE为目标TEE;第二TA建立数据通道,数据通道用于在第一TEE中运行的应用程序访问目标硬件资源;第一TA通过数据通道访问目标硬件资源,获取密钥数据。
在一种可能的实现方式中,存储器用于存储计算机程序代码;处理器,处理器执行该存储器所存储的计算机程序代码,当该存储器存储的计算机程序代码被执行时,该处理器用于执行:第一可信应用程序TA向第二可信应用程序TA发送硬件资源共享请求,第一TA是指运行在第一TEE中的应用程序,第二TA是指运行在第二TEE中的应用程序,硬件资源共享请求用于访问目标硬件资源;第二TA基于硬件资源共享请求,确定第一TEE为目标TEE;第二TA建立数据通道,数据通道用于在第一TEE中运行的应用程序访问目标硬件资源;第一TA通过数据通道访问目标硬件资源,获取密钥数据。
第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被访问硬件资源装置运行时,使得该访问硬件资源装置执行第一方面中的任一种访问硬件资源的方法。
第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被访问硬件资源装置运行时,使得该访问硬件资源装置执行第一方面中的任一种装置方法。
本申请的实施例中所提供的访问硬件资源的方法应用于电子设备,电子设备包括至少两个可信执行环境TEE,至少两个TEE包括第一TEE和第二TEE,第一TEE是指不具备访问目标硬件资源的权限的TEE,第二TEE是指具备访问目标硬件资源的权限的TEE,目标硬件资源是指获取密钥数据所需访问的硬件资源,密钥数据包括硬件随机数和安全密钥,该方法包括:第一TA向第二TA发送硬件资源共享请求,第二TA基于硬件资源共享请求,确定第一TEE为目标TEE,第二TA建立数据通道,第一TA通过数据通道访问目标硬件资源,获取密钥数据。其中,第一TA是指运行在第一TEE中的应用程序,第二TA是指运行在第二TEE中的应用程序,硬件资源共享请求用于访问目标硬件资源;数据通道用于在第一TEE中运行的应用程序访问目标硬件资源。这样使得运行在不具备访问目标硬件资源权限的第一TEE中的第一TA,能够通过数据通道访问目标硬件资源,相当于实现了在多TEE架构中的各TEE中运行的应用程序均能访问目标硬件资源,从而使得在多TEE架构中的各TEE中运行的应用程序均能获取密钥数据的功能。
附图说明
图1是一种适用于本申请的电子设备的硬件***的示意图;
图2是一种适用于本申请的电子设备的软件***的示意图;
图3是本申请实施例提供的一种应用场景的示意图;
图4是本申请实施例提供的一种访问硬件资源的方法的流程示意图;
图5是本申请一个实施例中电子设备的结构示意图;
图6是本申请一个实施例中电子设备的结构示意图;
图7是一种适用于本申请实施例中的电子设备的结构示意图;
图8时本申请另一个实施例中访问硬件资源的方法的流程示意图;
图9是本申请另一个实施例中访问硬件资源的方法的流程示意图;
图10是本申请提供的一种访问硬件资源装置的示意图;
图11是本申请提供的一种访问硬件资源的电子设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者更多个该特征。
为了便于对本申请实施例的理解,首先对本申请实施例中涉及的相关概念进行简要说明。
1、可信执行环境(Trusted execution environment,TEE)
TEE是指终端设备中一个独立的安全运行环境,通常是指和富执行环境(Richexecution environment,REE)逻辑隔离的运行环境。TEE上定义了严格的保护措施,能够抵御常规REE侧易操守的软件攻击。因此TEE通常用于处理安全级别高的任务。
2、可信应用程序(TrustedApplication,TA)
TA通常是指在TEE上运行的应用程序。能够为运行在TEE之外的应用程序提供安全服务。
3、Hypervisor
运行在基础物理服务器和操作***之间的中间软件层,通过Hypervisor可以访问电子设备器上包括磁盘和内存在内的所有物理设备。Hypervisor协调硬件资源访问,各个虚拟机之间的防护。服务器启动后,Hypervisor会加载所有虚拟机客户端的操作***,为虚拟机分配内存、磁盘和网络等。基于Hypervisor的机制,电子设备可以支持多个TEE同时运行。
4、硬件随机数
在一种可能的情况下,电子设备需要通过硬件进行加密,通常需要获取随机数生成器生成的硬件随机数来进行加密。应理解,应用程序需要通过访问目标硬件资源才能获取硬件随机数。
本申请实施例提供的硬件资源共享方法,可以应用于电子设备。可选的,电子设备包括终端设备,终端设备也可以称为终端(terminal)、用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)等。终端设备可以是手机(mobile phone)、智能电视、穿戴式设备、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self-driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。本申请的实施例对终端设备所采用的具体技术和具体设备形态不做限定。
示例性的,图1示出了电子设备100的结构示意图。电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了***的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
需要说明的是,本申请实施例提到的任一电子设备可以包括电子设备100中更多或者更少的模块。
电子设备100的软件***可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android***为例,示例性说明电子设备100的软件结构。
图2是本申请实施例的电子设备100的软件结构框图。
电子设备100的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android***分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和***库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图2所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图2所示,应用程序框架层可以包括窗口管理器,内容提供器,视图***,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图***包括可视控件,例如显示文字的控件,显示图片的控件等。视图***可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在***顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓***的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
***库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子***进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动,Wi-Fi驱动等。
需要说明的是,本申请实施例提到的电子设备可以包括上述电子设备中更多或者更少的模块。例如,电子设备还可以包括存储器、计时器等。
下面结合附图对本申请实施例提供的应用场景进行说明。
随着终端技术的不断发展,多TEE架构成为了一种常见的架构。示例性的,如图3所示,电子设备中包括两个TEE,分别为第一TEE和第二TEE。其中,第一TEE是指没有访问目标硬件资源的权限的TEE,第二TEE是指有访问目标硬件资源的权限的TEE,目标硬件资源是指获取密钥数据所需访问的硬件资源,密钥数据包括硬件随机数和安全密钥。当运行在第一TEE中的第一TA需要获取密钥数据时,由于第一TEE没有访问目标硬件资源的权限,因此第一TA也没有访问目标硬件资源的权限。此时,第一TA可以向运行在第二TEE中的第二TA发送硬件资源共享请求,以建立一个数据通道,使得第一TA可以通过数据通道访问目标硬件资源,获取密钥数据。
应理解,上述为对应用场景的举例说明,并不对本申请的应用场景作任何限定。
下面结合图4至图9对本申请实施例提供的硬件资源共享方法进行详细描述。
本申请实施例提供的硬件资源共享方法可以应用在包括至少两个TEE的电子设备中。
示例性的,如图3所示,电子设备包括第一TEE、第二TEE和目标硬件资源,第一TEE可以是指没有访问目标硬件资源的权限的TEE,第二TEE可以是指有访问目标硬件资源的权限的TEE。目标硬件资源可以是指获取密钥数据所需访问的硬件资源,密钥数据可以包括硬件随机数和安全密钥。在第一TEE中运行的第一TA通过第一TEE和第二TEE之间的数据通道访问目标硬件资源,获取密钥数据。
下面结合图4对应用在图3所示的电子设备中的硬件资源共享方法进行详细描述。
图4为本申请一个实施例中提供的硬件资源共享方法的流程图,该方法应用于如图4所示的电子设备中,包括:
S101、第一TA发送硬件资源共享请求至第二TA。
应理解,第一TA是指运行在第一TEE中的可信应用程序。在第一TEE没有访问目标硬件资源的权限的情况下,其中运行的第一TA也没有访问目标硬件资源的权限。第二TA是指运行在第二TEE中的可信应用程序。
在一种可能的情况下,第一TA需要访问目标硬件资源去获取密钥数据,并通过密钥数据对目标数据进行加解密。由于第一TA没有访问目标硬件资源的权限,因此,第一TA可以向运行在第二TEE中的第二TA发送硬件资源共享请求,使得第一TA可以借助第二TEE访问目标硬件资源的权限,获取密钥数据。
其中,硬件资源共享请求用于请求访问目标硬件资源。目标硬件资源可以是指获取密钥数据所需访问的硬件资源。
示例性的,目标硬件资源可以包括真随机数生成器(True Random NumberGenerator,TRNG)和硬件Fuse介质。密钥数据可以包括硬件随机数和硬件唯一密钥(Hardware Unique Key,HUK)。其中,TRNG用来生成硬件随机数,HUK通常存储在硬件Fuse介质中,主要用于派生其他密钥。
S102、第二TA基于硬件资源共享请求确定第一TEE是目标TEE。
应理解,目标TEE可以是指可以与第二TEE之间建立数据通道的TEE。出于***安全的考虑,在电子设备中包括多个执行环境的情况下,不是所有的执行环境均有通过第二TEE访问目标硬件资源的权限。
示例性的,如图5所示,电子设备中有3个TEE,分别为TEE1、TEE2和TEE3,其中,TEE1是第一TEE,也即是不具备访问目标硬件资源的权限的TEE,TEE2是第二TEE,TEE3是第一TEE,也即是不具备访问目标硬件资源的权限的TEE。其中,TEE1是目标TEE,TEE1有通过第二TEE访问目标硬件资源的权限,TEE3不是目标TEE,因此TEE3没有通过第二TEE访问目标硬件资源的权限。
示例性的,如图6所示,电子设备中有2个TEE和一个富执行环境(Rich executionenvironment,REE)。其中,REE通常是指电子设备上通用的运行环境,是不具备特定安全功能的运行环境。例如,Andorid***、IOS***均属于REE。电子设备中的2个TEE和REE分别为TEE1、TEE2和REE1,其中,TEE1是第一TEE,TEE2是第二TEE。在TEE1是目标TEE的情况下,TEE1有通过第二TEE访问目标硬件资源的权限。因此TEE1有通过TEE2访问目标硬件资源的权限。REE1不是目标TEE,因此REE1没有通过第二TEE访问目标硬件资源的权限,因此REE1没有通过TEE2访问目标硬件资源的权限。
应理解,第二TA可以基于硬件资源共享请求中携带的信息,确定第一TEE是否为目标TEE。
可选地,硬件资源共享请求中携带第一TEE的标识,第二TEE中包括第一模块(也即是度量模块),第一模块中存储有目标TEE的标识。
示例性的,第二TA可以从硬件资源共享请求中获取第一TEE的标识,然后调用第一模块中存储的目标TEE的标识进行对比,在第一TEE的标识和目标TEE的标识相同的情况下,确定第一TEE是目标TEE。
示例性的,第二TA可以从硬件资源共享请求中获取第一TEE的标识,将第一TEE的标识发送给Hypervisor模块(图4中未示出)。Hypervisor模块调用第一模块中存储的目标TEE的标识,将目标TEE的标识与第一TEE的标识进行对比,在第一TEE的标识和目标TEE的标识相同的情况下,确定第一TEE是目标TEE,并向第二TA返回确认信息,该确认信息用于指示第一TEE是目标TEE。
可选地,硬件资源共享请求中携带第一TEE的标识,第二TEE中包括第一模块,第一模块中存储有目标TEE的标识和第一数据。
其中,第一数据是指对目标TEE的标识进行认证计算得到的计算结果,可以用于认证其他TEE是否为目标TEE。
可选地,认证计算可以是指哈希Hash处理。
应理解,哈希Hash处理可以是指采用Hash算法对数据进行处理。其中,Hash算法是指将一个标识转换为一个数据的算法,通常可以被用作数字签名来保证数据传递的安全性。
示例性的,第二TA可以从硬件资源共享请求中获取第一TEE的标识,其中,第一TEE的标识可以是字符串。第二TA采用Hash算法对第一TEE的标识进行运算,得到运算后的数据,也即是第二数据。第二TA将第二数据和第一数据进行比对。在第一数据和第二数据相同的情况下,则确定第一TEE即为目标TEE。或者,在第一数据和第二数据相同的情况下,再去比较第一TEE的标识和目标TEE的标识是否相同,并在第一TEE的标识和目标TEE的标识相同的情况下,确定第一TEE为目标TEE。
示例性的,第二TA可以从硬件资源共享请求中获取第一TEE的标识,并将第一TEE的标识发送给Hypervisor模块。其中,第一TEE的标识可以是字符串。Hypervisor模块采用Hash算法对第一TEE的标识进行运算,得到运算后的数据,也即是第二数据。Hypervisor模块调用第一模块中的第一数据,并将第二数据和第一数据进行比对。在第一数据和第二数据相同的情况下,则确定第一TEE即为目标TEE。或者,在第一数据和第二数据相同的情况下,再去比较第一TEE的标识和目标TEE的标识是否相同,并在第一TEE的标识和目标TEE的标识相同的情况下,确定第一TEE为目标TEE。Hypervisor模块在确定第一TEE为目标TEE的情况下,向第二TA发送确认信息,该确认信息用于指示第一TEE为目标TEE。
本申请的实施例中,硬件资源共享请求包括第一TEE的标识,第二TEE中包括第一模块,第一模块中存储有目标TEE的标识和第一数据,第二TA根据第一TEE的标识获取第二数据,在第一TEE的标识与目标TEE的标识匹配,且第一数据和第二数据相同的情况下,确定第一TEE为目标TEE,其中,第一数据是指对目标TEE的标识进行哈希Hash处理得到的数据,第二数据是指对第一TEE的标识进行Hash处理得到的数据;这样使得第二TA建立的数据通道是在第一TEE是目标TEE的情况下建立的,也即是说,不是任意的TEE都能够通过数据通道访问目标硬件资源,只有目标TEE才能通过数据通道访问目标硬件资源,提高了访问目标硬件资源的安全性。
S103、第二TA建立数据通道。
其中,数据通道可以用于在第一TEE中运行的应用程序访问目标硬件资源。
示例性的,第二TA在确定第一TEE是目标TEE的情况下,向Hypervisor模块发送允许第一TEE通过第二TEE访问目标硬件资源的消息。Hypervisor模块基于该消息,向第一TEE分配通过第二TEE访问目标硬件资源的***资源,这些***资源即为上述数据通道。
可选地,第二TEE中包括加解密引擎模块,加解密引擎模块可以是指第二TEE中用于访问目标硬件资源的模块。通常第二TEE之外的模块没有访问加解密引擎模块的权限。第二TA在确定第一TEE是目标TEE的情况下,向Hypervisor模块发送允许第一TEE通过第二TEE访问目标硬件资源的消息。Hypervisor模块基于该消息,向第一TEE分配允许访问加解密引擎模块的权限,以使第一TEE中的第一TA通过访问加解密引擎模块访问目标硬件资源。
S104、第一TA通过数据通道访问目标硬件资源,获取密钥数据。
应理解,第一TA通过数据通道访问目标硬件资源,可以是指在第一TA需要访问目标硬件资源获取密钥数据的情况下,第一TA通过数据通道向第二TA发送获取密钥数据的请求,第二TA基于该请求,访问目标硬件资源,获取密钥数据,然后再将密钥数据通过数据通道发送给第一TA。
本申请的实施例中所提供的访问硬件资源的方法应用于电子设备,电子设备包括至少两个可信执行环境TEE,至少两个TEE包括第一TEE和第二TEE,第一TEE是指不具备访问目标硬件资源的权限的TEE,第二TEE是指具备访问目标硬件资源的权限的TEE,目标硬件资源是指获取密钥数据所需访问的硬件资源,密钥数据包括硬件随机数和安全密钥,该方法包括:第一TA向第二TA发送硬件资源共享请求,第二TA基于硬件资源共享请求,确定第一TEE为目标TEE,第二TA建立数据通道,第一TA通过数据通道访问目标硬件资源,获取密钥数据。其中,第一TA是指运行在第一TEE中的应用程序,第二TA是指运行在第二TEE中的应用程序,硬件资源共享请求用于访问目标硬件资源;数据通道用于在第一TEE中运行的应用程序访问目标硬件资源。这样使得运行在不具备访问目标硬件资源权限的第一TEE中的第一TA,能够通过数据通道访问目标硬件资源,相当于实现了在多TEE架构中的各TEE中运行的应用程序均能访问目标硬件资源,从而使得在多TEE架构中的各TEE中运行的应用程序均能获取密钥数据的功能。
在一种可能的情况下,运行在第一TEE中的第一TA向运行在第二TEE中的第二TA发送硬件资源共享请求,是经过预设密钥进行加密的硬件资源共享请求,这样使得第一TEE和第二TEE之间传输的数据是经过加密的数据,提高了第一TEE和第二TEE之间传输数据的安全性。下面通过图7至图9所示的实施例来详细描述。
图7为本申请实施例提供的一种电子设备的结构示意图,如图7所示,电子设备包括第一TEE、第二TEE、Hypervisor模块和目标硬件资源,其中,第一TEE中运行有第一TA和密钥管理服务模块(也即是第二模块),第二TEE中运行有第二TA、度量模块(也即是第一模块)和加解密引擎(也即是第三模块)。在一种可能的情况下,第二TEE中还运行有密钥模块。第一TA通过密钥管理服务模块向第二TA发送硬件资源共享请求,第二TA基于硬件资源共享请求,通过加解密引擎模块建立数据通道,以使第一TA通过数据通道访问目标硬件资源,以获取密钥数据。
在一种可能的情况下,第二TA可以通过将第一TEE的标识和目标TEE的标识进行比较,以确定第一TEE是否为目标TEE。下面结合图8对应用在图7所示的电子设备中的硬件资源共享方法进行详细描述。
图8为本申请一个实施例中提供的硬件资源共享方法的流程图,该方法应用于如图7所示的电子设备中,包括:
S201、第一TA向密钥管理服务模块发送第一TEE的标识。
S202、密钥管理服务模块采用预设密钥对第一TEE的标识进行加密处理,得到硬件资源共享请求。
可选地,预设密钥可以是运行在第二TEE中的密钥模块生成的。密钥模块将预设密钥发送给密钥管理服务模块。当密钥管理服务模块接收到第一TEE的标识,采用预设密钥对第一TEE的标识进行加密处理,得到硬件资源共享请求。
示例性的,密钥模块生成预设密钥之后,立即向密钥管理服务模块发送预设密钥。
示例性的,密钥模块生成预设密钥之后,先将预设密钥存在密钥模块中。密钥管理服务模块在接收到第一TEE的标识之后,向密钥模块发送获取预设密钥的请求,密钥模块基于获取预设密钥的请求,向密钥管理服务模块发送该预设密钥。
本申请的实施例中,硬件资源共享请求是密钥管理模块采用预设密钥对第一TEE的标识进行加密处理得到的,这样使得第一TEE和第二TEE之间传输的硬件资源共享请求是经过加密的数据,提高了第一TEE和第二TEE之间传输数据的安全性。
S203、密钥管理服务模块向第二TA发送硬件资源共享请求。
S204、第二TA采用预设密钥对硬件资源共享请求进行解密,得到第一TEE的标识。
应理解,预设密钥存储在第二TEE中的密钥模块中,第二TA可以调用密钥模块中存储的预设密钥,进而采用预设密钥对硬件资源共享请求进行解密,得到第一TEE的标识。
S205、第二TA向Hypervisor模块发送第一TEE的标识。
S206、Hypervisor模块对第一TEE的标识进行Hash处理,得到第二数据。
S207、Hypervisor模块发送第二数据至第二TA。
S208、第二TA获取度量模块中存储的目标TEE的标识和第一数据。
S209、第二TA在第一TEE的标识与目标TEE的标识匹配,且第一数据和第二数据相同的情况下,确定第一TEE为目标TEE。
S210、第二TA建立数据通道。
S211、第一TA通过数据通道访问目标硬件资源,获取密钥数据。
本申请的实施例中,第二TA向Hypervisor模块发送第一TEE的标识,Hypervisor模块对第一TEE的标识进行Hash处理,得到第二数据,Hypervisor模块向第二TA发送第二数据,第二TA在第一TEE的标识与目标TEE的标识匹配,且第一数据和第二数据相同的情况下,确定第一TEE为目标TEE,然后,第二TA建立数据通道,以使第一TA通过数据通道访问目标硬件资源,获取密钥数据。这样使得运行在不具备访问目标硬件资源权限的第一TEE中的第一TA,能够通过第二TA确认其具备通过数据通道访问目标硬件资源的权限,相当于实现了在多TEE架构中的各TEE中运行的应用程序均能访问目标硬件资源,从而使得在多TEE架构中的各TEE中运行的应用程序均能获取密钥数据的功能。
在一种可能的情况下,第二TA可以通过Hypervisor模块来确定第一TEE是否为目标TEE。下面结合图9对应用在图7所示的电子设备中的硬件资源共享方法进行详细描述。
图9为本申请一个实施例中提供的硬件资源共享方法的流程图,该方法应用于如图7所示的电子设备中,包括:
S301、第一TA向密钥管理服务模块发送第一TEE的标识。
S302、密钥模块向密钥管理服务模块发送预设密钥。
S303、密钥管理服务模块采用预设密钥对第一TEE的标识进行加密处理,得到硬件资源共享请求。
S304、密钥管理服务模块向第二TA发送硬件资源共享请求。
S305、密钥模块向第二TA发送预设密钥。
S306、第二TA采用预设密钥对硬件资源共享请求进行解密,得到第一TEE的标识。
应理解,预设密钥存储在第二TEE中的密钥模块中,第二TA可以调用密钥模块中存储的预设密钥,进而采用预设密钥对硬件资源共享请求进行解密,得到第一TEE的标识。
S307、第二TA向Hypervisor模块发送第一TEE的标识。
S308、Hypervisor模块对第一TEE的标识进行Hash处理,得到第二数据。
S309、Hypervisor模块获取度量模块中存储的目标TEE的标识和第一数据。
S310、Hypervisor模块在第一TEE的标识与目标TEE的标识匹配,且第一数据和第二数据相同的情况下,确定第一TEE为目标TEE。
S311、Hypervisor模块向发送第二TA发送确认信息。
其中,确认信息用于指示第一TEE为目标TEE。
S312、第二TA基于确认信息建立数据通道。
S313、第一TA通过数据通道访问目标硬件资源,获取密钥数据。
本申请的实施例中,第二TA向Hypervisor模块发送第一TEE的标识,Hypervisor模块对第一TEE的标识进行Hash处理,得到第二数据,Hypervisor模块在第一TEE的标识与目标TEE的标识匹配,且第一数据和第二数据相同的情况下,确定第一TEE为目标TEE,然后,Hypervisor模块向发送第二TA发送确认信息,第二TA基于该确认信息建立数据通道,以使第一TA通过数据通道访问目标硬件资源,获取密钥数据。这样使得运行在不具备访问目标硬件资源权限的第一TEE中的第一TA,能够通过Hypervisor模块确认其具备通过数据通道访问目标硬件资源的权限,相当于实现了在多TEE架构中的各TEE中运行的应用程序均能访问目标硬件资源,从而使得在多TEE架构中的各TEE中运行的应用程序均能获取密钥数据的功能。
应该理解的是,虽然上述实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图10为本申请实施例提供的访问硬件资源装置的一种结构示意图。访问硬件资源装置应用于电子设备,电子设备包括至少两个可信执行环境TEE,至少两个TEE包括第一TEE和第二TEE,第一TEE是指不具备访问目标硬件资源的权限的TEE,第二TEE是指具备访问目标硬件资源的权限的TEE,目标硬件资源是指获取密钥数据所需访问的硬件资源,密钥数据包括硬件随机数和安全密钥。
应理解,访问硬件资源装置600可以执行图4至图9所示的访问硬件资源方法;访问硬件资源装置600包括:获取单元610和处理单元620。
处理单元620用于通过第一可信应用程序TA向第二可信应用程序TA发送硬件资源共享请求,第一TA是指运行在第一TEE中的应用程序,第二TA是指运行在第二TEE中的应用程序,硬件资源共享请求用于访问目标硬件资源;
处理单元620用于通过第二TA基于硬件资源共享请求,确定第一TEE为目标TEE;
处理单元620用于通过第二TA建立数据通道,数据通道用于在第一TEE中运行的应用程序访问目标硬件资源;
处理单元620用于通过第一TA通过数据通道访问目标硬件资源,获取密钥数据。
在一个实施例中,硬件资源共享请求包括第一TEE的标识,第二TEE中包括第一模块,第一模块中存储有目标TEE的标识和第一数据,第一数据是指对目标TEE的标识进行哈希Hash处理得到的数据;
处理单元620具体用于通过第二TA根据第一TEE的标识获取第二数据,第二数据是指对第一TEE的标识进行Hash处理得到的数据;在第一TEE的标识与目标TEE的标识匹配,且第一数据和第二数据相同的情况下,确定第一TEE为目标TEE。
在一个实施例中,处理单元620具体用于通过第二TA向Hypervisor模块发送第一TEE的标识;Hypervisor模块对第一TEE的标识进行Hash处理,得到第二数据;Hypervisor模块发送第二数据至第二TA。
在一个实施例中,处理单元620具体用于通过第一TA向第一TEE中的第二模块发送第一TEE的标识;第二模块采用预设密钥对第一TEE的标识进行加密,得到硬件资源共享请求;第二模块将向第二TA发送硬件资源共享请求。
在一个实施例中,处理单元620还用于通过第二TA采用预设密钥对硬件资源共享请求进行解密,得到第一TEE的标识。
在一个实施例中,处理单元620还用于通过第二TEE中的第三模块生成预设密钥;预设密钥用于对第一TEE的标识进行加密,得到硬件资源共享请求;第三模块向第一TEE中的第二模块发送预设密钥。
本实施例提供的访问硬件资源装置,用于执行上述实施例的访问硬件资源的方法,技术原理和技术效果相似,此处不再赘述。
需要说明的是,上述访问硬件资源装置600以功能单元的形式体现。这里的术语“单元”可以通过软件和/或硬件形式实现,对此不作具体限定。
例如,“单元”可以是实现上述功能的软件程序、硬件电路或二者结合。所述硬件电路可能包括应用特有集成电路(application specific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
因此,在本申请的实施例中描述的各示例的单元,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个模块中。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。需要说明的是,本申请实施例中模块的名称是示意性的,实际实现时对模块的名称不做限定。
图11示出了本申请提供的一种电子设备的结构示意图。图11中的虚线表示该单元或该模块为可选的。电子设备700可用于实现上述方法实施例中描述的访问硬件资源方法。
电子设备700包括一个或多个处理器701,该一个或多个处理器701可支持电子设备700实现方法实施例中的访问硬件资源方法。处理器701可以是通用处理器或者专用处理器。例如,处理器701可以是中央处理器(central processing unit,CPU)、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其它可编程逻辑器件,如分立门、晶体管逻辑器件或分立硬件组件。
处理器701可以用于对电子设备700进行控制,执行软件程序,处理软件程序的数据。电子设备700还可以包括通信单元705,用以实现信号的输入(接收)和输出(发送)。
例如,电子设备700可以是芯片,通信单元705可以是该芯片的输入和/或输出电路,或者,通信单元705可以是该芯片的通信接口,该芯片可以作为终端设备或其它电子设备的组成部分。
又例如,电子设备700可以是终端设备,通信单元705可以是该终端设备的收发器,或者,通信单元705可以是该终端设备的收发电路。
电子设备700中可以包括一个或多个存储器702,其上存有程序704,程序704可被处理器701运行,生成指令703,使得处理器701根据指令703执行上述方法实施例中描述的阻抗匹配方法。
可选地,存储器702中还可以存储有数据。可选地,处理器701还可以读取存储器702中存储的数据,该数据可以与程序704存储在相同的存储地址,该数据也可以与程序704存储在不同的存储地址。
处理器701和存储器702可以单独设置,也可以集成在一起;例如,集成在终端设备的***级芯片(system on chip,SOC)上。
示例性地,存储器702可以用于存储本申请实施例中提供的访问硬件资源方法的相关程序704,处理器701可以用于在进行访问硬件资源时调用存储器702中存储的访问硬件资源方法的相关程序704,执行本申请实施例的访问硬件资源方法;包括:通过第一可信应用程序TA向第二可信应用程序TA发送硬件资源共享请求,第一TA是指运行在第一TEE中的应用程序,第二TA是指运行在第二TEE中的应用程序,硬件资源共享请求用于访问目标硬件资源;第二TA基于硬件资源共享请求,确定第一TEE为目标TEE;第二TA建立数据通道,数据通道用于在第一TEE中运行的应用程序访问目标硬件资源;第一TA通过数据通道访问目标硬件资源,获取密钥数据。
本申请还提供了一种计算机程序产品,该计算机程序产品被处理器701执行时实现本申请中任一方法实施例所述的访问硬件资源方法。
该计算机程序产品可以存储在存储器702中,例如是程序704,程序704经过预处理、编译、汇编和链接等处理过程最终被转换为能够被处理器701执行的可执行目标文件。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时实现本申请中任一方法实施例所述的访问硬件资源方法。该计算机程序可以是高级语言程序,也可以是可执行目标程序。
该计算机可读存储介质例如是存储器702。存储器702可以是易失性存储器或非易失性存储器,或者,存储器702可以同时包括易失性存储器和非易失性存储器。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmableROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(randomaccess memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamicRAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的;例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式;例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种访问硬件资源的方法,其特征在于,所述方法应用于电子设备,所述电子设备包括至少两个可信执行环境TEE,所述至少两个TEE包括第一TEE和第二TEE,所述第一TEE是指不具备访问目标硬件资源的权限的TEE,所述第二TEE是指具备访问目标硬件资源的权限的TEE,所述目标硬件资源是指获取密钥数据所需访问的硬件资源,所述密钥数据包括硬件随机数和安全密钥,所述方法包括:
第一可信应用程序TA向第二可信应用程序TA发送硬件资源共享请求,所述第一可信应用程序TA是指运行在所述第一TEE中的应用程序,所述第二可信应用程序TA是指运行在所述第二TEE中的应用程序,所述硬件资源共享请求用于访问所述目标硬件资源;
所述第二可信应用程序TA基于所述硬件资源共享请求,确定所述第一TEE为目标TEE;
所述第二可信应用程序TA建立数据通道,所述数据通道用于在所述第一TEE中运行的应用程序访问所述目标硬件资源,其中,所述第二可信应用程序TA建立数据通道包括:所述第二可信应用程序TA向Hypervisor模块发送允许所述第一TEE通过所述第二TEE访问目标硬件资源的消息,所述Hypervisor模块基于该消息,向所述第一TEE分配通过所述第二TEE访问所述目标硬件资源的***资源;
所述第一可信应用程序TA通过所述数据通道访问所述目标硬件资源,获取所述密钥数据。
2.根据权利要求1所述的方法,其特征在于,所述硬件资源共享请求包括所述第一TEE的标识,所述第二TEE中包括第一模块,所述第一模块中存储有所述目标TEE的标识和第一数据,所述第一数据是指对所述目标TEE的标识进行哈希Hash处理得到的数据;
所述第二可信应用程序TA基于所述硬件资源共享请求,确定所述第一TEE为目标TEE,包括:
所述第二可信应用程序TA根据所述第一TEE的标识获取第二数据,所述第二数据是指对所述第一TEE的标识进行所述Hash处理得到的数据;
在所述第一TEE的标识与所述目标TEE的标识匹配,且所述第一数据和所述第二数据相同的情况下,确定所述第一TEE为所述目标TEE。
3.根据权利要求2所述的方法,其特征在于,所述第二可信应用程序TA根据所述第一TEE的标识获取第二数据,包括:
所述第二可信应用程序TA向Hypervisor模块发送所述第一TEE的标识;
所述Hypervisor模块对所述第一TEE的标识进行所述Hash处理,得到所述第二数据;
所述Hypervisor模块发送所述第二数据至所述第二可信应用程序TA。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述第一可信应用程序TA发送硬件资源共享请求至第二可信应用程序TA,包括:
所述第一可信应用程序TA向所述第一TEE中的第二模块发送所述第一TEE的标识;
所述第二模块采用预设密钥对所述第一TEE的标识进行加密,得到所述硬件资源共享请求;
所述第二模块将向所述第二可信应用程序TA发送所述硬件资源共享请求。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述第二可信应用程序TA采用所述预设密钥对所述硬件资源共享请求进行解密,得到所述第一TEE的标识。
6.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
所述第二TEE中的第三模块生成预设密钥;所述预设密钥用于对所述第一TEE的标识进行加密,得到所述硬件资源共享请求;
所述第三模块向所述第一TEE中的第二模块发送所述预设密钥。
7.一种访问硬件资源装置,其特征在于,所述装置包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,使得所述装置执行权利要求1至6中任一项所述的方法。
8.一种芯片,其特征在于,包括处理器,当所述处理器执行指令时,所述处理器执行如权利要求1至6中任一项所述的方法。
9.一种电子设备,其特征在于,所述电子设备包括处理器,所述处理器用于与存储器耦合,并读取存储器中的指令,并根据所述指令使得所述电子设备执行如权利要求1至6中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储了计算机程序,当所述计算机程序被处理器执行时,使得处理器执行权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210740393.4A CN116049812B (zh) | 2022-06-28 | 2022-06-28 | 访问硬件资源的方法和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210740393.4A CN116049812B (zh) | 2022-06-28 | 2022-06-28 | 访问硬件资源的方法和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116049812A CN116049812A (zh) | 2023-05-02 |
CN116049812B true CN116049812B (zh) | 2023-10-20 |
Family
ID=86127856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210740393.4A Active CN116049812B (zh) | 2022-06-28 | 2022-06-28 | 访问硬件资源的方法和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116049812B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101133396A (zh) * | 2005-01-24 | 2008-02-27 | 国际商业机器公司 | 用于在多处理器环境中管理对共享资源的存取的方法 |
CN106415564A (zh) * | 2014-06-05 | 2017-02-15 | 索尼公司 | 可信执行环境的动态配置 |
CN108549571A (zh) * | 2018-03-19 | 2018-09-18 | 沈阳微可信科技有限公司 | 一种适用于可信执行环境中的安全虚拟化方法 |
CN112613070A (zh) * | 2020-12-25 | 2021-04-06 | 南方电网深圳数字电网研究院有限公司 | 资源共享、访问方法、电子设备及计算机可读存储介质 |
CN114270778A (zh) * | 2019-08-19 | 2022-04-01 | 诺基亚技术有限公司 | 针对在可信执行环境中执行的可验证性 |
CN114584307A (zh) * | 2022-05-07 | 2022-06-03 | 腾讯科技(深圳)有限公司 | 一种可信密钥管理方法、装置、电子设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11328075B2 (en) * | 2019-01-04 | 2022-05-10 | Baidu Usa Llc | Method and system for providing secure communications between a host system and a data processing accelerator |
US20210374232A1 (en) * | 2020-05-28 | 2021-12-02 | Red Hat, Inc. | Data distribution using a trusted execution environment in an untrusted device |
-
2022
- 2022-06-28 CN CN202210740393.4A patent/CN116049812B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101133396A (zh) * | 2005-01-24 | 2008-02-27 | 国际商业机器公司 | 用于在多处理器环境中管理对共享资源的存取的方法 |
CN106415564A (zh) * | 2014-06-05 | 2017-02-15 | 索尼公司 | 可信执行环境的动态配置 |
CN108549571A (zh) * | 2018-03-19 | 2018-09-18 | 沈阳微可信科技有限公司 | 一种适用于可信执行环境中的安全虚拟化方法 |
CN114270778A (zh) * | 2019-08-19 | 2022-04-01 | 诺基亚技术有限公司 | 针对在可信执行环境中执行的可验证性 |
CN112613070A (zh) * | 2020-12-25 | 2021-04-06 | 南方电网深圳数字电网研究院有限公司 | 资源共享、访问方法、电子设备及计算机可读存储介质 |
CN114584307A (zh) * | 2022-05-07 | 2022-06-03 | 腾讯科技(深圳)有限公司 | 一种可信密钥管理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116049812A (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108595970B (zh) | 处理组件的配置方法、装置、终端及存储介质 | |
WO2020192447A1 (zh) | 一种文件访问权限认证方法及电子设备 | |
CN113032766B (zh) | 应用权限管理的方法和装置 | |
CN114489917B (zh) | 应用程序异常退出的处理方法、电子设备和可读存储介质 | |
US12008121B2 (en) | File processing method and terminal device | |
WO2019148397A1 (zh) | 分解敏感数据存储在不同应用环境中 | |
CN110677262B (zh) | 基于区块链的信息公证方法、装置及*** | |
CN115017534B (zh) | 文件处理权限控制方法、装置及存储介质 | |
CN115879088A (zh) | 权限检查的方法和电子设备 | |
CN113468606A (zh) | 一种应用程序的访问方法及电子设备 | |
CN117118598A (zh) | 一种数据分享的方法、电子设备及计算机集群 | |
CN116049812B (zh) | 访问硬件资源的方法和电子设备 | |
CN110602689A (zh) | 一种设备安全操作的方法和装置 | |
CN113938890B (zh) | 数据共享方法和终端设备 | |
US9135449B2 (en) | Apparatus and method for managing USIM data using mobile trusted module | |
CN115544586A (zh) | 用户数据的安全存储方法、电子设备及存储介质 | |
US11775657B2 (en) | Systems and methods for enhancing security of device-internal encryption with externally generated entropy | |
CN117492636A (zh) | 数据存储方法和电子设备 | |
CN113850633B (zh) | 信息推送方法和装置 | |
CN117492634A (zh) | 数据存储方法和电子设备 | |
CN117131519B (zh) | 一种信息的保护方法及设备 | |
CN117492635A (zh) | 数据存储方法和电子设备 | |
CN117668933A (zh) | 数据存储方法和电子设备 | |
CN117668932A (zh) | 数据存储方法和电子设备 | |
CN117131533A (zh) | 打开文件的方法和电子设备 |
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 |