掌桥专利:专业的专利平台
掌桥专利
首页

数据存储方法和电子设备

文献发布时间:2024-04-18 20:01:23


数据存储方法和电子设备

技术领域

本申请涉及数据处理领域,并且更具体地,涉及一种数据存储方法和电子设备。

背景技术

重放保护内存块(Replay Protected Memory Block,RPMB)通常是指存储器中一个单独的物理分区,常常用来存储密钥等敏感数据。其中,存储器可以包括通用文件存储器(Universal Flash Storage,UFS),和嵌入式多媒体存储卡(Embedded Multi Media Card,eMMC)。在向RPMB写入数据时,可信执行环境(Trusted execution environment,TEE)会采用安全密钥(Secure Key)来对待存储数据进行计算生成第一认证数据,然后将待存储数据和第一认证数据一起发送给RPMB,RPMB接收到以上数据,同样的,RPMB使用同样的认证算法使用安全密钥(Secure Key)对待存储数据进行计算生成第二认证数据,若第一认证数据和第二认证数据相同,则存储上述待存储数据。

随着终端技术的不断进步,多可信执行环境(Trustedexecution environment,TEE)架构成为了一种常见的架构。通常,Secure Key只能存储在一个TEE中。在终端设备采用多TEE框架的情况下,由于Secure Key只能存储在一个TEE中,其他的TEE无法调用SecureKey对数据进行计算得到第一认证数据,因此使得RPMB无法完成对待存储数据的认证,导致RPMB无法存储待写入的数据,进而导致无法实现每个TEE均能向RPMB写入数据的功能。

基于此,如何实现多TEE框架中每个TEE均能向RPMB写入数据成为了一个亟待解决的问题。

发明内容

本申请提供了一种数据存储方法,能够实现多TEE框架中每个TEE均能向RPMB写入数据的功能。

第一方面,提供了一种数据存储方法,该方法应用于包括至少两个可信执行环境TEE的电子设备中,至少两个TEE包括第一TEE和第二TEE,第一TEE是指未存储安全密钥的TEE,第二TEE是指存储安全密钥的TEE,该方法包括:

第一可信应用程序TA发送待存储数据至第二可信应用程序TA,第一TA是指运行在第一TEE上的可信应用程序,第二TA是指运行在第二TEE中的可信应用程序;

第二TA采用安全密钥对待存储数据进行认证计算,得到第一认证数据;

第二TA根据第一认证数据和待存储数据得到第一数据包;

第二TA发送第一数据包至重放保护内存块RPMB;

RPMB存储第一数据包中的待存储数据。

本申请的实施例中提供的数据存储方法应用于包括至少两个TEE的电子设备中,至少两个TEE包括第一TEE和第二TEE,第一TEE是指未存储安全密钥的TEE,第二TEE是指存储安全密钥的TEE,该方法包括:第一TA发送待存储数据至第二TA,第一TA是指运行在第一TEE上的可信应用程序,第二TA是指运行在第二TEE中的可信应用程序;第二TA采用安全密钥对待存储数据进行计算,得到第一认证数据,并根据第一认证数据和待存储数据得到第一数据包;第二TA发送第一数据包至重放保护内存块RPMB;RPMB存储采用安全密钥对第一数据包进行计算认证,并在认证通过的情况下存储第一数据包中的待存储数据。也即是说,在本申请的实施例中,由于第一TEE中未存储安全密钥,因此若第一TEE中运行的第一TA需要向RPMB存储待存储数据时,第一TA无法获取安全密钥对待存储数据进行认证计算,导致第一TA无法直接将待存储数据存储至RPMB;同时,由于第二TEE中存储安全密钥,第一TEE中的第一TA可以通过将待存储数据发送至第二TEE中的第二TA,使得第二TA采用存储的安全密钥对待存储数据进行认证计算得到第一认证数据,并根据第一认证数据和待存储数据生成第二数据包,第二TA可以并向RPMB发送第二数据包,使得未存储安全密钥的第一TEE中的待存储数据存储至RPMB;从而实现电子设备中多TEE运行时任意一个TEE均能向RPMB存储数据。

结合第一方面,在第一方面的某些实现方式中,第一TEE中运行的第一可信应用程序TA发送待存储数据至第二TEE中运行的第二可信应用程序TA,包括:

第一TA发送待存储数据至富执行环境REE中运行的客户端应用程序CA;

CA发送待存储数据至第二TA。

本申请的实施例中,第一TA发送待存储数据给第二TA的过程中,是先将待存储数据发送给REE中运行的CA,然后通过CA将待存储数据转发给第二TA,这样使得第一TA向第二TA发送待存储数据时,可以使用现有的REE与第一TEE之间的数据通道,和,REE和第二TEE之间的数据通道即可实现,无需额外建立第一TEE与第二TEE之间的数据通道。也即是说,通过REE中运行的CA将待存储数据转发给第二TA,可以使得第一TA通过现有的数据通道向第二TA进行数据传输,避免了新建数据通道带来的数据传输不稳定的情况。

结合第一方面,在第一方面的某些实现方式中,第一TA发送待存储数据至富执行环境REE中运行的客户端应用程序CA,包括:

第一TA将采集得到的待存储数据发送至内核kernel;

kernel将待存储数据发送给CA。

本申请的实施例中,第一TA、第二TA和运行在REE中的CA之间进行的数据传输,均需要通过kernel进行转发,相当于通过kernel实现了不同的执行环境之间的数据传输。使得在第一TEE中未存储有安全密钥的情况下,第一TA可以通过kernel将待存储数据发送给第二TEE中的第二TA,以使第二TA采用安全密钥对待存储数据进行计算,得到第一认证数据,并根据第一认证数据和待存储数据得到第一数据包;第二TA发送第一数据包至重放保护内存块RPMB;RPMB存储采用安全密钥对第一数据包进行计算认证,并在认证通过的情况下存储第一数据包中的待存储数据。也即是说,在采用至少两个TEE的电子设备中,运行在未存储安全密钥的第一TEE中的第一TA,可以通过kernel将待存储数据发送给运行在存储有安全密钥的第二TEE中的第二TA,并通过第二TA采用安全密钥对待存储数据进行计算,得到第一认证数据,并根据第一认证数据和待存储数据得到第一数据包,进而通过kernel将第一数据包发送给RPMB进行存储,使得运行在未存储安全密钥的第一TEE中的第一TA也能将待存储数据存储在RPMB中,相当于实现了多TEE架构中每个TEE中运行的应用程序均能向RPMB写入数据的功能。

结合第一方面,在第一方面的某些实现方式中,RPMB存储第一数据包中的待存储数据,包括:

RPMB基于安全密钥对第一数据包进行校验;

RPMB在校验通过的情况下,存储第一数据包中的待存储数据。

本申请的实施例中,当RPMB接收到第一数据包时,可以采用安全密钥对第一数据包进行校验,并在校验通过的情况下,才将待存储数据存储至RPMB中,也即是说,存储在RPMB中的数据均需要先经过安全密钥进行校验,然后才能存储在RPMB中,这样能够有效的避免未知来源的数据对存储在RPMB中的数据进行攻击,提高了RPMB中存储数据的安全性。

结合第一方面,在第一方面的某些实现方式中,该方法还包括:

RPMB向第二TA发送响应信息,响应信息用于指示待存储数据已存储至RPBM。

本申请的实施例中,RPMB存储待存储数据之后,还会向第二TA返回用于指示待存储数据已经被成功存储的响应信息,使得第二TA在接收到响应信息之后,无需再次向RPMB发送第一数据包,避免了第二TA与PRMB之间不必要的数据传输。

结合第一方面,在第一方面的某些实现方式中,该方法还包括:

RPMB基于存储的待存储数据更新RPMB中的计数值,得到更新后的计数值。

应理解,响应信息中可以包括更新后的计数值,更新后的计数值是RPMB基于存储的待存储数据更新得到的计数值。

示例性的,更新后的计数值是RPMB在存储待存储数据之后,对当前的计数值加1得到的。

结合第一方面,在第一方面的某些实现方式中,该方法还包括:

第二TA向第一TA发送响应信息。

本申请的实施例中,在RPMB基于存储的待存储数据向第二TA返回响应信息的情况下,第二TA还会将接收到响应信息发送给第一TA,这样使得第一TA在接收到响应信息之后,无需再次向第二TA发送待存储数据,避免了第一TA和第二TA之间不必要的数据传输导致的资源浪费。

结合第一方面,在第一方面的某些实现方式中,第二TA向第一TA发送响应信息,包括:

第二TA向内核kernel发送响应信息;

kernel向运行在REE中的CA发送响应信息;

CA向第一TA发送响应信息。

结合第一方面,在第一方面的某些实现方式中,待存储数据为第一TA调用第一传感器采集得到的数据。

结合第一方面,在第一方面的某些实现方式中,第一传感器包括指纹传感器。

结合第一方面,在第一方面的某些实现方式中,该方法还包括:

运行在REE中的CA在检测到第一操作的情况下,向第一TA发送指纹数据获取请求,第一操作用于指示获取指纹数据;

第一TA响应于指纹数据获取请求,调用指纹传感器采集指纹数据,并根据指纹数据得到待存储数据。

第二方面,提供了一种数据存储装置,包括用于执行第一方面中任一种方法的单元。该装置可以是服务器,也可以是终端设备,还可以是终端设备内的芯片。该装置可以包括获取单元和处理单元。

当该装置是终端设备时,该处理单元可以是处理器,该输入单元可以是通信接口;该终端设备还可以包括存储器,该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该终端设备执行第一方面中的任一种方法。

当该装置是终端设备内的芯片时,该处理单元可以是芯片内部的处理单元,该输入单元可以是输出接口、管脚或电路等;该芯片还可以包括存储器,该存储器可以是该芯片内的存储器(例如,寄存器、缓存等),也可以是位于该芯片外部的存储器(例如,只读存储器、随机存取存储器等);该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该芯片执行第一方面中的任一种方法。

在一种可能的实现方式中,存储器用于存储计算机程序代码;处理器,处理器执行该存储器所存储的计算机程序代码,当该存储器存储的计算机程序代码被执行时,该处理器用于执行:

第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被数据存储装置运行时,使得该数据存储装置执行第一方面中的任一种数据存储方法。

第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被数据存储装置运行时,使得该数据存储装置执行第一方面中的任一种数据存储方法。

本申请的实施例中提供的数据存储方法应用于包括至少两个TEE的电子设备中,至少两个TEE包括第一TEE和第二TEE,第一TEE是指未存储安全密钥的TEE,第二TEE是指存储安全密钥的TEE,该方法包括:第一TA发送待存储数据至第二TA,第一TA是指运行在第一TEE上的可信应用程序,第二TA是指运行在第二TEE中的可信应用程序;第二TA采用安全密钥对待存储数据进行计算,得到第一认证数据,并根据第一认证数据和待存储数据得到第一数据包;第二TA发送第一数据包至重放保护内存块RPMB;RPMB存储采用安全密钥对第一数据包进行计算认证,并在认证通过的情况下存储第一数据包中的待存储数据。也即是说,在本申请的实施例中,由于第一TEE中未存储安全密钥,因此若第一TEE中运行的第一TA需要向RPMB存储待存储数据时,第一TA无法获取安全密钥对待存储数据进行认证计算,导致第一TA无法直接将待存储数据存储至RPMB;同时,由于第二TEE中存储安全密钥,第一TEE中的第一TA可以通过将待存储数据发送至第二TEE中的第二TA,使得第二TA采用存储的安全密钥对待存储数据进行认证计算得到第一认证数据,并根据第一认证数据和待存储数据生成第二数据包,第二TA可以并向RPMB发送第二数据包,使得未存储安全密钥的第一TEE中的待存储数据存储至RPMB;从而实现电子设备中多TEE运行时任意一个TEE均能向RPMB存储数据。

附图说明

图1是一种RPMB写入数据的流程示意图;

图2是一种适用于本申请的电子设备的硬件系统的示意图;

图3是一种适用于本申请的电子设备的软件系统的示意图;

图4是本申请实施例提供的一种应用场景的示意图;

图5是本申请实施例提供的一种数据存储的电子设备的示意图;

图6是本申请实施例提供的一种数据存储方法的流程示意图;

图7是本申请实施例提供的另一种数据存储的电子设备的示意图;

图8是本申请实施例提供的另一种数据存储方法的流程示意图;

图9是本申请实施例提供的另一种数据存储的电子设备的示意图;

图10是本申请实施例提供的另一种数据存储方法的流程示意图;

图11是本申请实施例提供的一种第一数据包的数据格式的示意图;

图12是本申请提供的一种电子设备的示意图;

图13是本申请提供的一种数据存储的电子设备的示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。

以下,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者更多个该特征。

为了便于理解,示例的给出部分与本申请实施例相关概念的说明以供参考。

1、RPMB

RPMB是指存储器中中一个独立的物理分区,通常用于存储有防止非法篡改需求的数据,例如手机上指纹支付相关的公钥、序列号等。通常,RPMB会对写入操作进行鉴权,但是读取操作并不需要鉴权。

应理解,在生产电子设备的过程中,会为每一个电子设备生成一个唯一的安全密钥,并将该安全密钥烧写到电子设备的存储器中一次性可编程(One Time Programmable,OTP)区域中。其中,OTP区域是指只能烧写一次的区域。同时电子设备的主机Host会在安全的执行环境(例如,TEE)中存储该安全密钥。Host在向RPMB写入数据时,RPMB可以采用该安全密钥进行鉴权。

示例性的,以主机Host(TEE中的可信应用程序TA)向设备Device(例如,UFS)写入数据为例进行说明。

如图1所示,Host发送读取计数值Write Cnt请求和一个随机数给Device,以获取Device中的计数值Write Cnt。Device在接收到读取计数值Write Cnt请求之后,采用安全密钥对计数值Write Cnt和随机数进行HMAC计算后生成第一MAC,然后Device将Write Cnt、随机数和第一MAC填充到RPMB数据包对应区域,生成RPMB数据包,并将RPMB数据包发送给Host。Host在接收到RPMB数据包时,采用安全密钥对RPMB数据包中的Write Cnt和随机数进行HMAC计算,得到第二MAC,对比第一MAC和第二MAC的数值是否一致,并在第一MAC和第二MAC数值一致的情况下,对比Host发送给Device的随机数和RPMB数据包中的随机数是否一致,并在Host发送给Device的随机数和RPMB数据包中的随机数一致的情况下,确定RPMB数据包中的Write Cnt可信。

进一步地,Host采用安全密钥对待存储数据的目的地址、待存储数据和Write Cnt进行HMAC计算,得到第三MAC,并将第三MAC填充到RPMB数据包中的MAC区域,得到更新后的RPMB数据包,然后将更新后的RPMB数据包发送给Device。Device接收到的更新后的RPMB数据包,使用安全密钥对待存储数据的目的地址、待存储数据和Write Cnt进行HMAC计算后得到第四MAC,将第四MAC与第三MAC进行比较,在第四MAC和第三MAC一致的情况下,对比更新后的RPMB数据包中的Write Cnt和Device中的Write Cnt是否一致,并在更新后的RPMB数据包中的Write Cnt和Device中的Write Cnt一致的情况下,将更新后的RPMB数据包中的待存储数据存储到待存储数据对应的目的地址中,并且将Device中的Write Cnt进行加1操作,得到更新后的Write Cnt。

2、可信执行环境(Trusted execution environment,TEE)

TEE是指终端设备中一个独立的安全运行环境,通常是指和富执行环境(Richexecution environment,REE)逻辑隔离的运行环境。TEE上定义了严格的保护措施,能够抵御常规REE侧易操守的软件攻击。因此TEE通常用于处理安全级别高的任务。

3、富执行环境(Rich execution environment,REE)

REE通常是指终端设备上通用的运行环境,是不具备特定安全功能的运行环境。例如,Andorid系统、IOS系统均属于REE。

TEE和REE之间相互隔离,通常REE无法直接访问TEE的硬件和软件资源,只能通过授权的应用程序编程接口进行交互。

4、可信应用程序(Trusted Application,TA)

TA通常是指在TEE上运行的应用程序。能够为运行在TEE之外的应用程序提供安全服务。

5、客户端应用程序(Client Application,CA)

CA通常是指在REE上运行的应用程序。

6、Hypervisor模块

Hypervisor模块是指运行在基础物理服务器和操作系统之间的中间软件层,通过Hypervisor模块可以访问电子设备器上包括磁盘和内存在内的所有物理设备。Hypervisor模块协调硬件资源访问,各个虚拟机之间的防护。服务器启动后,Hypervisor模块会加载所有虚拟机客户端的操作系统,为虚拟机分配内存、磁盘和网络等。基于Hypervisor的机制,电子设备可以支持多个TEE同时运行。

7、ATF

ATF(

本申请实施例提供的数据存储方法,可以应用于电子设备。可选的,电子设备包括终端设备,终端设备也可以称为终端(terminal)、用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)等。终端设备可以是手机(mobilephone)、智能电视、穿戴式设备、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self-driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。本申请的实施例对终端设备所采用的具体技术和具体设备形态不做限定。

示例性的,图2示出了电子设备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的等待时间,因而提高了系统的效率。

指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。

可选地,电子设备中的存储器包括eMMC和通用文件存储器(Universal FileStore,UFS)。其中,存储器中的RPMB通常用于存储有保密需求的数据,在向RPMB中写入数据时,需要通过预先存储的安全密钥进行加密。RPMB用其上存储的安全密钥对写入数据进行校验,在校验通过后,再将写入数据存储在RPMB上。

需要说明的是,本申请实施例提到的任一电子设备可以包括电子设备100中更多或者更少的模块。

电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。

图3是本申请实施例的电子设备100的软件结构框图。

电子设备100的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。

应用程序层可以包括一系列应用程序包。

如图3所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。

应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。

如图3所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。

窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。

内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。

视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。

电话管理器用于提供电子设备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架构成为了一种常见的架构。示例性的,如图4所示,终端设备中包括两个TEE、一个REE和RPMB,分别为第一TEE、第二TEE、REE和RPMB。其中,第一TEE中未存储安全密钥,第二TEE存储安全密钥。在第一TEE中运行的第一TA需要向RPMB中写入数据的情况下,第一TEE中运行的第一TA可以将待存储数据发送给第二TEE中运行的第二TA,第二TA采用第二TEE中存储的安全密钥对待存储数据进行加密,并将加密后的数据发送给RPMB进行存储。

其中,待存储数据可以是第一TA调用第一传感器采集得到的数据。示例性的,第一传感器是指纹传感器,待存储数据可以是指第一TA调用指纹传感器采集的指纹数据。

通常指纹数据用于对终端设备中进行加解密,因此需要将指纹数据存储至安全区域,例如RPMB中。在第一TA中没有存储RPMB中用于校验写入RPMB中数据的安全密钥的情况下,可以通过第一TEE、第二TEE和REE之间数据通道进行传输。

应理解,上述为对应用场景的举例说明,并不对本申请的应用场景作任何限定。

下面结合图5至图11对本申请实施例提供的数据存储方法进行详细描述。

本申请实施例所提供的数据存储方法可以应用在包括至少两个TEE的电子设备中。

示例性的,如图5所示,电子设备包括第一TEE和第二TEE,第一TEE是指未存储安全密钥的TEE,第二TEE是指存储安全密钥的TEE,在第一TEE中运行的第一TA将待存储数据发送给在第二TEE中运行的第二TA,第二TA采用安全密钥对待存储数据进行加密认证。第二TA将待存储数据和进行加密认证后得到的第一认证数据发送给RPMB。

下面结合图6对应用在图5所示的电子设备的数据存储方法进行详细描述。

图6为本申请一个实施例中提供的数据存储方法的流程示意图,如图6所示,该方法应用于如图5所示的电子设备中。该方法包括:

S101、第一TA发送待存储数据至第二TA。

应理解,在生产线生产电子设备时,会向电子设备中的存储器中烧写安全密钥,同时,将该安全密钥写入TEE中,以使TEE在向RPMB写入数据时,可以采用安全密钥对待存储数据进行加密。在电子设备包括至少两个TEE的情况下,为了避免多个TEE同时向RPMB中写入数据导致计数器冲突的情况,通常只会将安全密钥写入一个TEE中。

应理解,安全密钥可以被存储在至少两个TEE中的任一个。

示例性的,至少两个TEE包括第一TEE和第二TEE,其中第一TEE是指未存储安全密钥的TEE,第二TEE是指存储安全密钥的TEE。

应理解,在第一TEE中运行的第一TA需要向RPMB中写入数据的情况,由于第一TEE中未存储安全密钥。因此第一TA无法采用安全密钥对待存储数据进行加密,进而使得第一TA无法直接将待存储数据发送至RPMB存储。

其中,第一TA可以是指运行在第一TEE中的可信应用程序。

在这种情况下,第一TA可以将待存储数据发送给第二TEE中运行的第二TA。

其中,待存储数据可以是指第一TEE上的第一TA采集得到的数据。

示例性的,第一TEE中的第一TA是需要指纹数据进行加解密的应用程序。待存储数据可以是指第一TA通过指纹采集器采集得到的指纹数据。

示例性的,第一TEE中的第一TA是需要声音数据进行加解密的应用程序。待存储数据可以是指第一TA通过麦克风采集得到的声音数据。

示例性的,第一TEE中的第一TA是需要字符密码进行加解密的应用程序。待存储数据可以是指第一TA通过接收用户在显示屏上的点击操作得到的字符数据。

示例性的,第一TEE中的第一TA是需要眼纹数据进行加解密的应用程序。待存储数据可以是指第一TA通过摄像头采集得到的眼纹数据。

示例性的,第一TEE中的第一TA是需要人脸进行加解密的应用程序。待存储数据可以是指第一TA通过摄像头采集得到的人脸数据。

示例性的,第一TA也可以是向CA提供安全服务的应用程序,待存储数据可以是指CA向第一TA发送的密码数据,包括且不限于上述指纹数据、声音数据、字符数据、眼纹数据和人脸数据。

第一TA在将待存储数据发送给第二TA的过程中,可选地,第一TA将待存储数据发送给REE中运行的CA,CA将待存储数据发送给第二TA。

其中,REE中的CA是指REE中运行的客户端应用程序。

在一种可能的情况下,第一TEE中的第一TA还可以先将待存储数据发送到内核kernel,通过kernel将待存储数据发送到REE中的CA。

其中,第二TA是指运行在第二TEE中的可信应用程序。

示例性的,REE中的CA发送待存储数据至第二TEE中的第二TA的过程中,可以是REE中的CA将待存储数据发送至kernel,再由kernel将待存储数据发送给第二TEE中的第二TA。

S102、第二TA采用安全密钥对待存储数据进行计算,得到第一认证数据,并根据第一认证数据和待存储数据生成第一数据包。

其中,第二TA可以采用安全密钥通过哈希运算消息认证码(Hash-based MessageAuthentication Code,HMAC)对待存储数据进行加密。其中,HMAC是一种基于Hash函数和密钥进行消息认证的方法,是当前许多安全协议所选用的提供认证服务的方式,应用十分广泛,例如,在互联网安全协议(Internet Protocol Security,IPSec)和其他网络协议(例如SSL)中,HMAC都有广泛应用,并且经受住了多种形式攻击的考验。基于此,HMAC也可以被称为现有的Internet安全标准。

可选地,第二TA还可以采用安全密钥通过密码块链接消息验证码(Cipher BlockChaining-Message Authentication Code,CMAC)对待存储数据进行计算,得到第一认证数据。

S103、第二TA发送第一数据包至RPMB。

可选地,第二TA可以通过kernel将第一数据包发送给RPMB。

示例性的,第二TEE中的第二TA可以将第一数据包发送给kernel,kernel再将第一数据包发送给RPMB。

S104、RPMB基于第一数据包进行计算认证,并在认证通过的情况下存储第一数据包中的待存储数据。

可选地,RPMB在存储待存储数据时,需要先使用安全密钥对待存储数据进行计算得到第二认证数据,并在第一认证数据和第二认证数据相同的情况下,确定第一数据包认证通过,存储待存储数据。

本申请的实施例中提供的数据存储方法,应用于包括至少两个TEE的电子设备中,至少两个TEE包括第一TEE和第二TEE,第一TEE是指未存储安全密钥的TEE,第二TEE是指存储安全密钥的TEE,该方法包括:第一TA发送待存储数据至第二TA,第一TA是指运行在第一TEE上的可信应用程序,第二TA是指运行在第二TEE中的可信应用程序;第二TA采用安全密钥对待存储数据进行计算,得到第一认证数据,并根据第一认证数据和待存储数据得到第一数据包;第二TA发送第一数据包至重放保护内存块RPMB;RPMB存储采用安全密钥对第一数据包进行计算认证,并在认证通过的情况下存储第一数据包中的待存储数据。也即是说,在采用至少两个TEE的电子设备中,运行在未存储安全密钥的第一TEE中的第一TA可以将待存储数据发送给运行在存储有安全密钥的第二TEE中的第二TA,并通过第二TA采用安全密钥对待存储数据计算认证得到第一认证数据,并根据第一认证数据和待存储数据生成第一数据包,进而使得RPMB在接收到第一数据包之后,可以采用安全密钥对第一数据包进行计算认证,并在认证通过的情况下存储第一数据包中的待存储数据,相当于实现了多TEE架构中每个TEE中运行的应用程序均能向RPMB写入数据的功能。

在一种可能的情况下,第一TEE、第二TEE和RPMB之间进行的数据传输,可以通过内核kernel和运行在REE中的CA来进行。同时,在RPMB存储了加密后的数据之后,还可以对当前的计数值加一,得到更新后的计数值,然后将更新后的计数值返回给第一TEE和第二TEE,以使第一TEE或第二TEE基于响应信息,确定待存储数据已经存储至RPMB中,因此第一TEE和第二TEE无需再次向RPMB发送数据,避免了第一TEE、第二TEE、kernel、REE和RPMB不必要的数据传输,进而避免了资源浪费。下面通过图7和图8所示的实施例来详细描述。

示例性的,本申请实施例所提供的数据存储方法可以应用在如图7所示的电子设备中。如图7所示,电子设备包括第一TEE、第二TEE、kernel、REE和RPMB。其中,第一TEE是指未存储安全密钥的TEE,第二TEE是指存储安全密钥的TEE。在第一TEE中运行的第一TA将待存储数据发送给在REE中运行的CA,CA将待存储数据发送给在第二TEE中运行的第二TA,第二TA采用安全密钥对待存储数据进行加密,得到加密后的数据。第二TA将加密后的数据发送给kernel。kernel将加密后的数据发送给RPMB。RPMB存储加密后的数据。

下面结合图8对应用在图7所示的电子设备的数据存储方法进行详细描述。

图8为本申请一个实施例中提供的数据存储方法的流程示意图,该方法应用于图7所示的电子设备。如图8所示,该方法包括:

S201、第一TA发送待存储数据至kernel。

其中,第一TA是指在第一TEE中运行的可信信用程序。

应理解,Kernel是指操作系统中的核心组件,是计算机物理硬件与其上运行的进程之间的主要接口。Kernel中可以包括多个模块。

示例性的,Kernel中包括TEE tz驱动模块、存储设备驱动模块、Hypervisor模块和ATF模块。

S202、kernel将待存储数据发送给在REE中运行的CA。

其中,在REE中运行的CA可以是指TEE代理模块,

示例性的,在REE中运行的CA可以包括第一TEE代理CA和第二TEE代理CA。

S203、CA将待存储数据发送给kernel。

S204、kernel将待存储数据发送给第二TA。

本申请的实施例中,第一TA发送待存储数据给第二TA的过程中,是先将待存储数据发送给REE中运行的CA,然后通过CA将待存储数据转发给第二TA,这样使得第一TA向第二TA发送待存储数据时,可以使用现有的REE与第一TEE之间的数据通道,和,REE和第二TEE之间的数据通道即可实现,无需额外建立第一TEE与第二TEE之间的数据通道。也即是说,通过REE中运行的CA将待存储数据转发给第二TA,可以使得第一TA通过现有的数据通道向第二TA进行数据传输,避免了新建数据通道带来的数据传输不稳定的情况。

S205、第二TA采用安全密钥对待存储数据进行计算到第一认证数据,并根据第一认证数据和待存储数据生成第一数据包。

S206、第二TA将第一数据包发送给kernel。

S207、kernel将第一数据包发送给RPMB。

本申请的实施例中,第一TA、第二TA和运行在REE中的CA之间进行的数据传输,均需要通过kernel进行转发,相当于通过kernel实现了不同的执行环境之间的数据传输。使得在第一TEE中未存储有安全密钥的情况下,第一TA可以通过kernel将待存储数据发送给第二TEE中的第二TA,以使第二TA采用安全密钥对待存储数据进行计算,得到第一认证数据,并根据第一认证数据和待存储数据得到第一数据包;第二TA发送第一数据包至重放保护内存块RPMB;RPMB存储采用安全密钥对第一数据包进行计算认证,并在认证通过的情况下存储第一数据包中的待存储数据。也即是说,在采用至少两个TEE的电子设备中,运行在未存储安全密钥的第一TEE中的第一TA,可以通过kernel将待存储数据发送给运行在存储有安全密钥的第二TEE中的第二TA,并通过第二TA采用安全密钥对待存储数据进行计算,得到第一认证数据,并根据第一认证数据和待存储数据得到第一数据包,进而通过kernel将第一数据包发送给RPMB进行存储,使得运行在未存储安全密钥的第一TEE中的第一TA也能将待存储数据存储在RPMB中,相当于实现了多TEE架构中每个TEE中运行的应用程序均能向RPMB写入数据的功能。

S208、RPMB采用安全密钥对第一数据包进行校验,并在校验通过后,执行S209。

S209、RPMB存储待存储数据。

本申请的实施例中,当RPMB接收到第一数据包时,可以采用安全密钥对第一数据包进行校验,并在校验通过的情况下,才将待存储数据存储至RPMB中,也即是说,存储在RPMB中的数据均需要先经过安全密钥进行校验,然后才能存储在RPMB中,这样能够有效的避免未知来源的数据对存储在RPMB中的数据进行攻击,提高了RPMB中存储数据的安全性。

S210、RPMB发送响应信息给kernel。

其中,响应信息用于指示所述待存储数据已存储至所述RPBM。

响应信息中可以包括更新后的计数值,更新后的计数值是RPMB基于存储的待存储数据更新得到的计数值。示例性的,更新后的计数值是RPMB在存储待存储数据之后,对当前的计数值加1得到的。

S211、kernel将响应信息发送给第二TEE中运行的第二TA。

本申请的实施例中,RPMB存储待存储数据之后,还会向第二TA返回用于指示待存储数据已经被成功存储的响应信息,使得第二TA在接收到响应信息之后,无需再次向RPMB发送第一数据包,避免了第二TA与PRMB之间不必要的数据传输。

S212、第二TA将响应信息发送给kernel。

S213、kernel将响应信息发送给REE中运行的CA。

S214、REE中运行的CA将响应信息发送给kernel。

S215、kernel将响应信息发送给第一TEE中运行的第一TA。

本申请的实施例中,在RPMB基于存储的待存储数据向第二TA返回响应信息的情况下,第二TA还会将接收到响应信息发送给第一TA,这样使得第一TA在接收到响应信息之后,无需再次向第二TA发送待存储数据,避免了第一TA和第二TA之间不必要的数据传输导致的资源浪费。

在一种可能的情况下,待存储数据可以是指纹传感器采集的数据。运行在Android系统的中CA,在接收到用户发起的指纹注册请求的情况下,向第一TEE中的指纹TA(第一TA)发送指纹注册请求,指纹TA基于指纹注册请求,调用指纹传感器,采集指纹数据,并将采集的指纹数据发送给指纹TA。下面通过图9和图10来详细说明指纹TA如何将指纹传感器采集得到的指纹数据存储至RPMB中。

应理解,电子设备可以分为四种运行等级,分别为EL0、EL1、EL2和EL3。其中,应用程序的运行等级为ELO,驱动的运行等级为EL1,Hypervisor模块的运行等级为EL2,ATF模块的运行等级为EL3。

示例性的,本申请实施例所提供的数据存储方法可以应用在如图9所示的电子设备中。其中,Android中运行指纹CA、第一TEE代理CA和第二TEE代理CA。第一TEE中运行有指纹TA和第一RPMB服务模块。第二TEE中运行有代理TA和第二RPMB服务模块。其中,第二RPMB服务模块中存储有安全密钥。应理解,指纹CA、第一TEE代理CA、第二TEE代理CA、指纹TA、第一RPMB服务模块、代理TA和第二RPMB服务模块的运行等级为EL0。Kernel中包括存储设备驱动模块、第二TEE tz驱动模块、第一TEE tz驱动模块、Hypervisor模块和ATF模块,其中,存储设备驱动模块、第二TEE tz驱动模块和第一TEE tz驱动模块的运行等级为EL1。Hypervisor模块的运行等级为EL2。ATF模块的运行等级为EL3。如图9所示,电子设备中运行Android(REE)、第一TEE(第一TEE)和第二TEE(第二TEE),其中,第一TEE中未存储安全密钥,第二TEE存储安全密钥。Android中运行的指纹CA在接收到指纹注册操作的情况下,可以向第一TEE中的指纹TA发送指纹注册请求。指纹TA响应于指纹注册请求,调用指纹传感器采集指纹数据,然后通过Android中运行的代理CA将指纹数据发送给第二TEE中运行的代理TA,进而通过代理TA对指纹数据进行计算认证得到第一认证数据,并根据第一认证数据和待存储数据生成第一数据包。代理TA再通过kernel中的Hypervisor模块、ATF模块、驱动模块将第一数据包发送给RPMB。

下面结合图10对应用在图9所示的电子设备中的数据存储方法进行详细描述。

图10为本申请实施例提供的另一种数据存储方法的流程示意图,该方法应用于如图9所述的电子设备中,包括:

S301、响应于指纹注册操作,运行在Android(REE)中的指纹CA向kernel中第一TEEtz驱动模块发送指纹注册请求。

S302、第一TEE tz驱动模块向Hypervisor模块发送指纹注册请求。

S303、Hypervisor模块向第一TEE(第一TEE)中的指纹TA(第一TA)发送指纹注册请求。

S304、指纹TA响应于指纹注册请求,调用指纹传感器,采集指纹数据(待存储数据)。

S305、指纹TA将指纹数据和RPMB写入请求类型发送给第一TEE中的第一RPMB服务模块。

S306、第一TEE中的第一RPMB服务模块使用第一安全密钥对指纹数据和RPMB写入请求进行加密,得到第一加密数据,并在第一加密数据中增加第二TEE(第二TEE)RPMB的操作请求类型,生成第二数据包。

应理解,第一安全密钥是第一TEE与第二TEE中用于加解密的安全密钥,与RPMB的安全密钥不相同。由于第一TEE中运行的指纹TA需要通过Andriod中运行的CA将指纹数据转发给第二TEE中运行的代理TA,为了保证指纹数据在Andriod中运行的CA中的安全性,因此,可以采用第一安全密钥对指纹数据进行加密,以保证指纹数据的安全性。

可选地,所生成的第一数据包中还可以包括RPMB操作cmd id和RPMB写入cmd id,其中,RPMB操作cmd id用于表示当前数据对应的操作是RPMB操作。以使应用程序基于RPMB操作cmd id确认第一数据包中的指纹数据对应的操作为RPMB操作。RPMB写入cmd id用于表示当前数据对应的操作是写入RPMB的操作。当RPMB设备接收到第一数据包之后,可以基于RPMB写入cmd id,确定第一数据包中的指纹数据为写入RPMB的数据。

示例性的,第二数据包的数据格式可以如图11所示,包括RPMB操作cmd id、RPMB写入cmd id、RPMB data的数据量和RPMB data。其中,RPMB data可以是指纹数据。

可选地,所生成的第二数据包中还可以包括第一TEE的VM id。

应理解,Hypervisor模块会给不同的虚拟机赋予一个VM id。第一TEE的VM id是Hypervisor模块赋予第一TEE的VM id,用于表示第一TEE。

S307、第一TEE中的第一RPMB服务模块将第二数据包发送给kernel中的Hypervisor模块。

S308、Hypervisor模块将第二数据包发送给kernel中的第一TEE tz驱动。

S309、kernel中的第一TEE tz驱动模块将第二数据包发送给Android中的第一TEE代理CA。

S310、第一TEE代理CA将第二数据包发送给Android中的第二TEE代理CA。

S311、Android中的第二TEE代理CA将第二数据包发送给kernel中的第二TEE tz驱动模块。

S312、kernel中的第二TEE tz驱动模块将第二数据包发送给kernel中Hypervisor模块。

S313、Hypervisor模块根据第二数据包中的VM id,将第二数据包发送给kernel中的ATF模块。

S314、ATF模块将第二数据包发送给第二TEE中运行的代理TA(第二TA)。

S315、代理TA根据第二数据包中的RPMB写入请求的类型,使用第一安全密钥对第二数据包中的第一加密数据进行解密,得到指纹数据和RPMB写入请求。

S316、代理TA将解密后得到的指纹数据和RPMB写入请求发送给第二TEE中运行的第二RPMB服务模块。

S317、第二TEE中运行的第二RPMB服务模块根据指纹数据和RPMB写入请求生成第一数据包。

其中,第二RPMB服务模块可以采用第二安全密钥对指纹数据进行认证计算,得到第一认证数据,然后根据第一认证数据、指纹数据和RPMB写入请求生成第一数据包。

应理解,第二安全密钥是RPMB用于校验存储RPMB数据的安全密钥。其中,第一数据包是写入RPMB的数据包。

S318、第二RPMB服务模块将第一数据包发送给ATF模块。

S319、ATF模块将第一数据包发送给Hypervisor模块。

S320、Hypervisor模块将第一数据包发送给第二TEE tz驱动模块。

S321、第二TEE tz驱动模块将第一数据包发送给存储设备驱动模块。

示例性的,存储设备驱动模块是指eMMC驱动模块。

示例性的,存储设备驱动模块是指UFS驱动模块。

S322、存储设备驱动模块将第一数据包发送给RPMB。

本申请的实施例中,运行在第一TEE中的指纹TA将指纹数据通过运行在Andriod中的第一TEE代理CA和第二TEE代理CA转发给运行在第二TEE中的代理TA,再由代理TA将指纹数据发送给第二TEE中的第二RPMB服务模块,使得存储有安全密钥的第二RPMB服务模块可以对指纹数据进行认证计算,得到第一认证数据,然后根据第一认证数据、指纹数据和RPMB写入请求生成第一数据包,再通过ATF模块、Hypervisor模块、第二TEE tz驱动模块和存储设备驱动模块将第一数据包发送给RPMB,RPMB采用安全密钥对第一数据包进行校验,并在校验通过的情况下存储第一数据包中的指纹数据。这样使得未存储安全密钥的第一TEE中的指纹TA也可以通过上述数据通道将指纹数据存储在RPMB中,也即是说,采用本申请实施例提供的数据存储方法,实现了多TEE架构中每个TEE中运行的应用程序均能向RPMB写入数据的功能。

应该理解的是,虽然上述实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

图12为本申请实施例提供的电子设备的一种结构示意图。

应理解,电子设备可以执行图5至图11所示的数据存储方法;电子设备包括:获取单元610和处理单元620。

处理单元620用于控制第一可信应用程序TA发送待存储数据至第二可信应用程序TA,第一TA是指运行在第一TEE上的可信应用程序,第二TA是指运行在第二TEE中的可信应用程序;第二TA采用安全密钥对待存储数据进行认证计算,得到第一认证数据;第二TA根据第一认证数据和待存储数据得到第一数据包;第二TA发送第一数据包至重放保护内存块RPMB;RPMB存储第一数据包中的待存储数据。

可选地,作为一个实施例,处理单元620具体用于控制第一TA发送待存储数据至富执行环境REE中运行的客户端应用程序CA;CA发送待存储数据至第二TA。

可选地,作为一个实施例,处理单元620具体用于控制第一TA将采集得到的待存储数据发送至内核kernel;kernel将待存储数据发送给CA。

可选地,作为一个实施例,处理单元620具体用于控制RPMB基于安全密钥对第一数据包进行校验;RPMB在校验通过的情况下,存储第一数据包中的待存储数据。

可选地,作为一个实施例,处理单元620具体用于控制RPMB向第二TA发送响应信息,响应信息用于指示待存储数据已存储至RPBM。

可选地,作为一个实施例,处理单元620具体用于控制RPMB基于存储的待存储数据更新RPMB中的计数值,得到更新后的计数值。

可选地,作为一个实施例,处理单元620具体用于控制第二TA向第一TA发送响应信息。

可选地,作为一个实施例,处理单元620具体用于控制第二TA向内核kernel发送响应信息;kernel向运行在REE中的CA发送响应信息;CA向第一TA发送响应信息。

可选地,作为一个实施例,待存储数据为第一TA调用第一传感器采集得到的数据。

可选地,作为一个实施例,第一传感器包括指纹传感器。

可选地,作为一个实施例,处理单元620具体用于控制运行在REE中的CA在检测到第一操作的情况下,向第一TA发送指纹数据获取请求,第一操作用于指示获取指纹数据;第一TA响应于指纹数据获取请求,调用指纹传感器采集指纹数据,并根据指纹数据得到待存储数据。

本实施例提供的电子设备,用于执行上述实施例的数据存储方法,技术原理和技术效果相似,此处不再赘述。

需要说明的是,上述电子设备以功能单元的形式体现。这里的术语“单元”可以通过软件和/或硬件形式实现,对此不作具体限定。

可以理解的是,为了实现上述功能,电子设备包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个模块中。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。需要说明的是,本申请实施例中模块的名称是示意性的,实际实现时对模块的名称不做限定。

例如,“单元”可以是实现上述功能的软件程序、硬件电路或二者结合。所述硬件电路可能包括应用特有集成电路(application specific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。

因此,在本申请的实施例中描述的各示例的单元,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

图13示出了本申请提供的一种电子设备的结构示意图。图13中的虚线表示该单元或该模块为可选的。电子设备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采用安全密钥对待存储数据进行认证计算,得到第一认证数据;第二TA根据第一认证数据和待存储数据得到第一数据包;第二TA发送第一数据包至重放保护内存块RPMB;RPMB存储第一数据包中的待存储数据。

本申请还提供了一种计算机程序产品,该计算机程序产品被处理器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可以是单个,也可以是多个。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的;例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式;例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 一种机载1394总线两节点断连的接头结构
  • 一种电子式机载1394总线三节点断连装置
技术分类

06120116553097