发明内容
有鉴于此,本公开实施例提供一种处理单元、片上系统、电子设备和物联网设备,以降低设计和开发成本。
第一方面,本公开实施例提供一种处理单元,包括安全信息存储单元和安全逻辑存储单元,所述安全逻辑存储单元用于存储第一硬件逻辑,所述安全信息存储单元用于存储安全服务程序中的安全函数的安全信息码,所述安全信息码包括所述安全函数的第一入口地址和第一验证码,
其中,所述处理单元在执行所述安全服务程序时,执行所述第一硬件逻辑,从而实现以下操作:
将所述安全函数的第一程序指针与所述第一入口地址进行比较;
如果所述第一程序指针与所述第一入口地址一致,则为所述安全函数生成第二验证码,将所述第一验证码与所述第二验证码比较,根据比较结果确定所述处理单元是否执行所述安全函数。
可选地,所述安全信息码还包括:所述安全函数的调用者的第二入口地址,
则所述第一硬件逻辑被所述处理单元执行时,还实现以下操作:
将第二程序指针与所述第二入口地址相比较,所述第二程序指针为指向所述第一程序指针的调用者的程序指针;
则所述根据比较结果确定所述处理单元是否执行所述安全函数还包括:
根据所述第二程序指针与所述第二入口地址的比较结果结合所述第一验证码与所述第二验证码的比较结果确定所述处理单元是否执行所述安全函数。
可选地,所述安全函数包括打桩指令,所述第一验证码和所述第二验证码均根据所述打桩指令构建而成。
可选地,所述处理单元为微控制芯片。
第二方面,本公开实施例提供一种电子设备,包括:
上述任一项所述的处理单元,
与所述处理单元耦接的存储器。
可选地,所述存储器用于安全服务程序和安全信息初始化程序的可执行代码,所述安全信息初始化程序在被所述处理单元执行时,从所述存储器将所述安全函数的安全信息码加载到所述安全信息存储单元中。
可选地,编译器在对所述安全服务程序的源代码进行编译时,生成所述安全服务程序中的安全函数的安全信息码和所述安全信息初始化程序,并将所述安全函数的安全信息码存储在所述存储器中。
可选地,所述编译器的可执行代码被构建为所述存储器中的固件。
可选地,所述编译器在编译时,在所述安全函数随机插入打桩指令,所述第一验证码和所述第二验证码均根据所述打桩指令生成。
可选地,所述编译器在编译时,根据预定义的安全标识从所述安全服务程序中识别出所述安全函数。
第三方面,本公开实施例提供一种片上系统,包括:
上述任一项所述的处理单元,
与所述处理单元耦接的存储器,
其中,所述存储器用于存储安全服务程序和安全信息初始化程序的可执行代码,所述安全信息初始化程序在被所述处理单元执行时,从所述存储器将所述安全函数的安全信息码加载到所述安全信息存储单元中。
第四方面,本公开实施例提供一种物联网设备,包括:
上述任一项所述的处理单元,
与所述处理单元耦接的存储器,
其中,所述存储器用于存储安全服务程序和安全信息初始化程序的可执行代码,所述安全信息初始化程序在被所述处理单元执行时,从所述存储器将所述安全函数的安全信息码加载到所述安全信息存储单元中。
第五方面,本公开实施例提供一种数据处理方法,包括由处理器执行的第一计算机可执行指令和硬件逻辑,所述处理器中设置有安全信息存储单元和安全逻辑存储单元,所述硬件逻辑存储在所述安全逻辑存储单元中,
所述第一计算机可执行指令被执行时,完成以下操作:
为安全服务程序中的安全函数生成安全信息码,并将所述安全信息码存储到所述安全信息存储单元中,所述安全信息码包括所述安全函数的第一入口地址和第一验证码,
其中,所述硬件逻辑被执行时,完成以下操作:
将所述安全函数的第一程序指针与所述第一入口地址进行比较;
如果所述第一程序指针与所述第一入口地址一致,则为所述安全函数生成第二验证码,将所述第一验证码与所述第二验证码比较,根据比较结果确定所述处理单元是否执行所述安全函数。
本公开实施例提供的处理单元,内置有存储安全信息码的安全信息存储单元和存储第一硬件逻辑的安全逻辑存储单元,在处理单元执行安全函数之前,通过第一硬件逻辑来实现以下操作:基于安全信息码对其进行校验,并基于校验结果确定处理单元是否执行安全函数。这种安全方案技术实现上相对简单,制造成本上也相对较低,并且也能在一定程度上满足安全需求,因此适合绝大多数的MCU级别的物联网设备。而对于安全级别要求高的电子设备,还可以更加的灵活地将其与其他的TEE/SE安全方案结合使用。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中使用以下术语。
软件程序:采用高抽象层次的设计语言例如C/C++/SystemC/JAVA/python编写的程序文件,其代码需要经过编译或转换后成为二进制语言后,才能够被计算机的指令集解析并执行。
硬件逻辑:在集成电路设计的寄存器传输级(register-transfer level,RTL),IC是由一组寄存器以及寄存器之间的逻辑操作构成。之所以如此,是因为绝大多数的电路都可以被看成由寄存器来存储二进制数据、由寄存器之间的逻辑操作来完成数据的处理,数据处理的流程由时序状态机来控制,这些处理和控制可以用硬件描述语言编写的硬件逻辑表征。
TEE(Trust Execution Environment,可信执行环境):利用处理器的安全机制,将处理器的执行环境划分为可信执行环境和丰富执行环境,将密钥和敏感数据以及访问指令都放在可信执行环境里,防止丰富执行环境(Rich Execution Environment,REE)的用户直接访问,从而保证了密钥和敏感数据的安全性。但TEE技术需要对处理器做很大的改动,同时还要结合SoC芯片的总线、外设、DMA等IP的安全设计,复杂度大,对开发者来说,需要全方位了解系统的安全机制才能进行安全应用开发,因此开发难度很大。
SE(Secure element,安全要素):一种安全芯片,具有很高的安全性,可以防护物理攻击,侧信道攻击等,一般具备CC EAL4+安全认证。SE技术具有很高的安全性,能够防护浸入式攻击和半侵入式攻击,一般用于用户安全等级很高的设备,
比如,手机支付,金融卡等。
固件(Firmware):是指通过硬编码写入到只读存储器中的软件程序。早期固件的软件程序一旦写入就无法修改,后来提供可重复写入的可编程可擦除只读存储器,可多次通过硬编码刷写软件程序。
系统概述
图1示出本公开实施例的电子设备的示意图框图。图1中示出的电子设备1000旨在示出一个或多个电子设备的至少部分组件,在本公开的其他实施例中,可以省略图1示出的部分组件或以不同的架构实现各组件之间的连接,也可以包括图1中未示出的一些硬件和/或软件模块,图1中示出的两个或两个以上的组件也可以在软件体系和/或硬件体系上被合成为一个组件。
在一些实施例中,电子设备1000可以应用于移动设备、手持式设备或嵌入式设备中,例如应用于采用5G技术的智能手机或自动驾驶车辆的处理平台中。电子设备1000还可以应用于物联网设备、可穿戴设备(诸如智能手表、智能眼镜等设备),也可以是电视、机顶盒等设备。
如图1所示,电子设备1000可以包括一个或多个处理器1100。例如,电子设备1000可以是包含至少一个处理器的终端系统、包含多个处理器的工作站系统或包含大量处理器或处理器核的服务器系统。电子设备1000中的一个或多个处理器1100可以是分别独立封装的芯片,也可以是集成于片上系统(System of Chip,SoC)中的集成电路。处理器1100可以是中央处理器、图形处理器和物理处理器、微控制器、微处理器等。
如图1所示,电子设备1000还包括总线1200,处理器1100可以与一个或多个总线1200耦合。总线1200用于在处理器1100与电子设备1000中的其他部件之间传输信号,例如传输地址、数据或控制信号等。总线1200可以是处理器总线,例如为直接媒体接口(DirectMedia Interface,DMI)总线,然而本公开实施例的接口总线1200不限于采用DMI总线作为接口总线,还可以包括一个或多个互连总线,例如:基于外设部件互连标准(PeripheralComponent Interconnect,PCI)的总线、存储器总线或其他类型的总线。
在一些实施例中,如图1所示,电子设备1000还包括存储器1300。存储器1300作为电子设备的主存,可以是动态随机存取存储器(Dynamic Random Access Memory,DRAM)、静态随机存取存储器(Static Random-Access Memory,SRAM)或其他具有存储能力的模块。在一些实施例中,存储器1300可以用于存储数据信息和指令信息,以供一个或多个处理器1100在执行应用程序或进程时使用。除此之外,电子设备1000还可以包括一个或多个存储设备1800,作为辅助存储器提供额外的存储空间。
电子设备1000也可以经由总线1200耦合到显示设备1400,例如阴极射线管(CRT)、液晶显示器(LCD)或有机发光二极管(OLED)阵列,以显示用户需要了解的信息。
在一些实施例中,电子设备1000可以包括输入设备1500,例如为键盘、鼠标、触控面板等设备,用于将用户操作对应的信息经总线1200传送给相应的处理器1100。电子设备1000还可以包括采集设备1700,可以耦合到总线1200以传送有关图像/声音等可被采集的信息相关的指令和数据。采集设备1700例如为麦克风和/或用于采集图像的摄像机或照相机等设备。输入设备1500和采集设备1700提供的数据可以被存储在存储设备1300的相应存储区域,输入设备1500和采集设备1700提供的指令可以被相应的处理器1100执行。
电子设备1000可以进一步包括网络接口1700,以使系统可以访问网络,网络例如为局域网(LAN)、广域网(WAN)、城域网(MAN)、个人区域网络(PAN)、蓝牙、云网络、移动网络(例如长期演进Long Term Evolution,LTE)网络、3G网络、4G网络或5G网络等)、内联网、因特网等。网络接口1700可以包括具有至少一个天线的无线网络接口和/或经由网络电缆通信的有线网络接口,网络电缆可以是以太网电缆、同轴电缆、光纤电缆、串行电缆或并行电缆。
网络接口1700例如可以根据IEEE 802.11b和/或802.11g标准提供对LAN的访问,也可以根据蓝牙标准提供对个人局域网络的访问,也可以支持其他无线网络接口和/或协议,包括现有的通信标准和未来的通信标准。网络接口1700还可以利用时分多址(TDMI)协议、全球移动通信系统(GSM)协议、码分多址(CDMA)协议和/或其他类型的无线通信协议等。
上文以及图1仅仅是示例性的描述电子设备,而不用于限制电子设备1000的具体组成。在可选的实施例中,该电子可以增加或减少部分组件,例如输出设备、网络接口,再例如,该电子设备可以是片上系统,在片上系统中,处理器的频率和规格都为低配状态,其他组件的功能也会缩减或多个组件集成为一个组件。
上述电子设备可以是价格和资源都比较丰富的电子设备,在此类设备中,既可以采用TEE和SE这种传统的安全机制,也可以采用本公开实施例提供的安全方案,这类电子设备例如云服务器、台式机。上述电子设备还可以是低价格和低资源的电子设备,此类设备由于对成本敏感,因此需要结合成本来选择合适的安全机制,因此更适用于采用本公开实施例提供的安全方案,这类电子设备例如为人脸识别设备、电子支付设备、车载设备。
处理器
图2是本公开一实施例提供的处理器的示意性框图。
如图2所示,处理器1100可以包括用于处理指令的一个或多个处理器核101,指令的处理和执行是可以被用户(例如通过应用程序)和/或系统平台控制的。不同的处理器核101可以各自处理不同的指令集。在一些实施例中,处理器核101还可以包括其他处理模块,例如数字信号处理器(Digital Signal Processor,DSP)等。作为一种示例,图2中示出了处理器核1至m,m是非0的自然数。
如图2所示,处理器1100可以包括高速缓存器,且根据不同架构,处理器1100中的高速缓存器可以是位于各个处理器核101之内和/或之外的单个或多级的内部高速缓存器(如图2示出的高速缓存器L1至L2),也可以包括面向指令的指令高速缓存和面向数据的数据高速缓存。在一些实施例中,处理器1100中的各个部件可以共享至少一部分的高速缓存器。处理器1100还可以包括外部高速缓存(未示出),其他高速缓存结构也可以作为处理器1100的外部高速缓存。
如图2所示,处理器1100可以包括寄存器堆104(Register File),寄存器堆104可以包括用于存储不同类型的数据和/或指令的多个寄存器,这些寄存器可以是不同类型的。例如,寄存器堆104可以包括:整数寄存器、浮点寄存器、状态寄存器、指令寄存器和指针寄存器等。寄存器堆104中的寄存器可以选用通用寄存器来实现,也可以根据处理器1100的实际需求采用特定的设计。
在一些实施例中,处理器1100可以包括内存管理单元(Memory Management Unit,MMU)。内存管理单元用于实现虚拟地址到物理地址的转译。但图上示出的实施例并没有包括内存管理单元,这意味着在实施数据和指令传输时,以物理地址作为访问地址,由此不需要实现虚拟地址到物理地址的转译。
在一些实施例中,内部互连结构用于将内存管理单元105经由片上系统的内部总线与其他处理器核交互,或直接与片上系统内的其他模块相连以实现信号交换。
如图2所示,处理器核101中包含取指令单元106、指令译码单元107、加载存储单元108和指令执行单元109。
取指令单元106可以从处理器核200内部的指令高速缓存L1或外部的存储器中,根据程序指针(程序PC)获取指令包。在一些实施例中,取指令单元106还可以包括一个预译码单元,用于对指令包内的各个指令进行预译码以确定各个指令的指令类型。例如,指令类型可以是通常指令和访存指令中的一种,这里的访存指令包括存储指令(store指令)和载入指令(load指令),通常指令可以是除访存指令之外的其他指令,包括分支指令、数据传送指令等。预译码模块根据指令类型进行不同操作。
指令译码单元108根据封装在处理器核内的指令集对当前指令进行译码,通过译码得到当前指令的操作码、源寄存器、目的寄存器和立即数。封装在处理器核内的指令集由处理器的生产厂商决定。在一些实施例中,指令集可以支持复杂指令集计算(ComplexInstruction Set Computing,CISC)、精简指令集计算(Reduced Instruction SetComputing,RISC)或基于超长指令字(Very Long Instruction Word,VLIW)的计算。对于软件程序,研发人员使用编译器将源代码编译为指令集支持的二进制指令并由指令译码单元108进行译码,如果二进制指令不被指令集理解,则指令译码失败。
加载存储单元108是一种面向访存指令(加载指令或存储指令)的指令执行单元。加载存储单元108可以用于根据加载指令获取高速缓存器和/或存储器1300中的数据信息,并将该数据信息加载到处理器1100内相应的寄存器中;加载存储单元108也可以根据存储指令将相应寄存器中的数据信息存储到高速缓存器和/或存储器1300中。寄存器例如包括:寄存器堆104中的地址寄存器、步进寄存器以及地址掩码寄存器等。
指令执行单元203可以包括多个硬件上的执行单元。这些执行单元根据译码结果执行各种运算并将执行结果(例如各种运算的计算结果存储在寄存器中)写入到处理器核内部的数据高速缓存或外部的存储器中。
在此基础上,图2所示的电子设备还增加与本公开实施例提供的安全方案相关的其他组件。如图2所示,存储器1300存储各种软件程序(包括源代码和可执行代码)102,结合图3所示,各种软件程序中包括安全服务程序1021。安全服务程序1021的安全函数10211是访问密钥和敏感数据的函数,因此处理器需要在安全服务程序1021被执行时对安全函数10211进行身份验证。各种软件程序还包括安全码生成程序1022,该程序用于为安全函数10211生成安全信息码1031,并将安全信息码1031存储到安全信息存储单元103中。安全信息码1031至少包括安全函数10211的入口地址和验证码。
如图2和3所示,处理器核101包括安全逻辑存储单元105,用于存储为安全方案设计的一组硬件逻辑1051,硬件逻辑1051被处理器执行时,根据安全信息存储单元103存放的安全信息码1031对安全函数10211进行身份验证。这里安全逻辑存储单元105和安全信息存储单元103为包括寄存器在内的、各种可用于处理器内部的硬件存储单元。
基于上述处理器,本公开实施例提供的安全方案的处理流程如下所述:首先,取指令单元106从存储器1300获取安全码生成程序1022的可执行代码,由指令译码单元107对其进行译码,由指令执行单元109对其进行执行,最终指令执行单元109为安全函数10211生成安全信息码1031并存储在安全信息存储单元103中。然后当处理器开始执行安全服务程序1021时,同样,取指令单元106从存储器1300获取并执行安全服务程序1021的可执行代码时,从安全逻辑存储单元105读取硬件逻辑1051并执行之,以实现对安全函数的身份验证。第一可选方式中,取指令单元107或指令译码单元108针对每个当前的程序指令都会执行一次硬件逻辑1051。第二可选方式中,取指令单元106将每个当前的程序指针与安全信息存储单元103中的安全函数10211的入口地址进行比较,当判定某个程序指针与入口地址相同时,暂时缓存相应指令并转去执行硬件逻辑1051。
硬件逻辑1051执行的操作包括:将输入的当前的程序指针与安全信息存储单元103中的安全函数的入口地址进行比较,如果当前的程序指针与安全信息存储单元103中的安全函数的入口地址一致,则实时生成验证码,将实时生成的验证码与安全信息存储单元103中的安全函数的验证码进行比较,如果一致,说明安全函数的身份验证通过,处理器核101可继续执行安全函数,如果不一致,如果采用第一可选方式,则说明:当前的程序指针不是安全函数的程序指针,可返回处理器执行后续的可执行代码,或者说明安全函数的程序指针被篡改,系统可报错;如果是第二可选方式,则说明安全函数的程序指针被篡改,系统可报错。
在一些实施例中,安全码生成程序1022包括编译器10221和安全信息初始化程序10222两个软件程序。编译器10221用于在编译阶段,对安全函数10211进行识别,并生成安全信息码1031和安全信息初始化程序10222,安全信息码1031和安全信息初始化程序10222刚生成时被存储在存储器1300中。安全信息初始化程序也是一种软件程序,用于从存储器1300中将安全信息码1031加载到安全信息存储单元103中。
在一些实施例中,安全信息码1031还包括安全函数的调用者的入口地址。可选地,如果安全码生成程序1022分为编译器10221和安全信息初始化程序10222,则编译器10221在编译源代码时得到包含安全函数的调用者的入口地址的安全信息码1031,并存储到存储器1300,而由安全信息初始化程序执行时,从存储器1300中将安全信息码1031加载到安全信息存储单元103。
在一些实施例中,安全信息码1031为二进制码,安全函数的入口地址存放在安全信息码1031的固定比特位(例如高16位为入口地址),这样处理器比较程序指针和入口地址时,固定比较例如高16位的二进制码,比较效率很高,不会对处理器性能造成负担。
在一些实施例中,编译器10221支持安全标识管理器,用于识别安全服务程序的安全函数,并且会自动计算每一个安全函数的安全信息码。编译器10221可自动随机插入打桩指令,并基于打桩指令为安全函数计算验证码,从而保证整个调用流程的完整性,同时,会自动生成一个安全信息初始化程序10222。验证码的计算方法可以扩展和更新。并根据处理器硬件实际情况选择,例如采用CRC32或HASH计算出验证码。
在一些实施例中,编译器10221和安全信息初始化程序10222两个软件程序都固化为固件,或者仅仅将编译器固化为固件。由于编译器10221为安全函数10211随机地生成安全信息码,因此即使是同一个安全函数,每次得到的安全信息码也不相同,这样能够加大安全信息码的安全性,增加破坏难度。
图4是一段源代码的示例图。如图所示,首先假定安全标识是"secure_api",图中的check_user_password为设定的安全函数,该安全函数被my_check函数调用。init_secure_api_info函数是编译器自动生成的安全信息初始化函数,在system_in it里调用初始化。在编译链接过程中,基于"secure_api"定位到check_user_passw ord,然后check_user_password被自动插入打桩指令,编译器基于打桩指令计算验证码,最后生成check_user_password的安全信息码,安全信息码包括check_user_password的入口地址、调用者的入口地址(也就是my_check里的第二条语句的地址)和验证码,最后生成init_secure_api_info函数。编译完成之后,得到可执行代码,可执行代码由处理器执行,当执行到my_check要调用check_user_password的时候,处理器会基于check_user_password的安全信息码对check_user_password进行验证。具体规则如下:
1.按照程序指针和安全信息码里的入口地址判断当前函数是否是安全函数,如果是,进入2,否则继续执行。
2.按照安全信息码里的调用者的入口地址来判断调用者身份是否合法,如果是,进入3,否则触发总线异常,进入总线异常处理函数。
3.通过实时计算当前函数的验证码并比对安全信息码里的函数的验证码来判断安全函数是否被篡改,如果不是,开始执行安全函数,否则触发总线异常,进入总线异常处理函数。
在本示例中,当check_user_password函数里的调用函数my_check为合法调用者,check_user_password的入口地址和取指令单元得到的当前的程序指针一致,且check_user_password的实时生成的验证码与安全信息存储单元103预先存储的ch eck_user_password的验证码一致时,则check_user_password可被执行,只要有一项不符,都会进入总线异常处理函数。考虑各种攻击情况或非法调用情况:
情况1:check_user_password被篡改,在执行的过程中,按照规则3会被校验出错,进入总线异常处理函数。
情况2:攻击者在内存里调用check_user_password函数,在执行过程中,按照规则2会被验证出身份不合法,进入总线异常处理函数。
情况3:在特殊的情况下,处理器突然从check_user_password函数中的某处开始执行,会被自动插入的打桩指令判断出来,进入总线异常处理函数。
其他情况,例如攻击者知道安全函数,还能够拿到对应的编译器,还能将硬件逻辑写入到处理器中,这些情况对攻击者来说实施成本太高,基本上不具有应用价值。也就是说,对应大多数常见的攻击手段,上述实施例提供的安全方案都能够阻止。
数据处理方法
本公开还提供一种数据处理方法,该方法包括以下步骤。
在步骤S501中,为安全服务程序中的安全函数生成安全信息码,并将安全信息码保存在处理器中。
在步骤S502中,在使用处理器执行安全服务程序时,将程序指针与处理器中的每个安全函数的入口地址进行比较。
在步骤S503中,判断程序指针与入口地址是否相同,如果相同,则执行步骤S504,否则执行步骤S508。
在步骤S504中,为安全函数实时生成验证码,将实时生成的验证码与预存储在处理器中的验证码比较。
在步骤S505中,判断实时生成的验证码与预存储在处理器中的验证码是否相同。如果相同,则执行步骤S506,否则执行步骤S507。
在步骤S506中,由处理器执行安全函数。
在步骤S507中,总线告警。
在步骤S508中,确定不是安全函数或者确定安全函数被篡改,需要进行总线告警。
在上述实施例中,将安全函数的安全信息码存储到处理器中,并由处理器在执行安全函数之前,对安全函数进行身份验证,以此保证安全函数的安全性。
在本实施例中,对安全函数进行身份验证包括对安全函数的入口地址和安全函数的验证码进行验证。在进一步的实施例,对安全函数进行身份验证还包括:对调用安全函数的调用者的入口地址进行验证。安全函数是安全服务程序中直接访问访问密钥和敏感数据的函数。
在进一步的实施例中,上述步骤实现为软件语言编程实现的安全码生成程序和采用硬件语言编程实现的硬件逻辑,且硬件逻辑嵌入到处理器中,安全码生成程序为安全服务程序中的安全函数生成安全信息码并存储到处理器中,而硬件逻辑则在处理器执行安全服务程序时被触发执行,通过硬件逻辑实现对安全函数的上述身份验证。
在进一步的实施例中,软件语言编程实现的安全码生成程序包括两个部分:编译器和安全信息初始化程序。编译器用于编译安全服务程序的源代码时,识别其中的安全函数,生成安全函数的安全信息码,并存储在存储器中。安全信息初始化程序则负责从存储器将安全信息码加载到处理器中。进一步地,安全信息初始化程序由编译器在编译安全服务程序的源代码时生成。
在进一步的实施例中,编译器在编译时,在安全函数随机插入打桩指令,并根据打桩指令生成安全函数的验证码,同时,处理器在执行安全函数之前,根据取指令单元获取到的安全函数中的打桩指令为安全函数实时生成新的验证码。
本公开实施例提供的数据处理方法,能够快速有效地安全函数的合法性,具备很高的实时性。对于物联网中的常见的攻击手段,能够有效保护密钥和敏感数据。此外,本申请还公开了一种计算机可读存储介质,用于实现本文所述的各种方法。
本公开实施例的商业价值
本公开实施例提供的安全方案比传统的TEE和SE方案实现的成本更低,因此适合低成本、低资源的电子设备,也相应地具有商业价值和经济价值。
需要领会,以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本说明书的实施例存在许多变型。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。文中使用第一和第二(例如第一入口地址和第二入口地址)仅用于区分不同目标,而不是两者之间存在等级或重要性等方面上的区分,例如本文中的第一入口地址是指安全函数的入口地址,第二入口地址则指示调用安全函数的函数的入口地址。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。