具体实施方式
现在将详细参考本公开的具体实施例,在附图中例示了本公开的示例。尽管将结合具体实施例描述本公开,但将理解,不是想要将本公开限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本公开的精神和范围内包括的变更、修改和等价物。应注意,本文描述的方法操作都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
为了使本领域技术人员更好地理解本公开,下面结合附图和具体实施方式对本公开作进一步详细说明。
注意,接下来要介绍的示例仅是具体的示例,而不作为限制本公开的实施例必须为示出和描述的具体的外形、硬件、连接关系、操作、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本公开的构思来构造本说明书中未提到的更多实施例。
本公开中使用的术语是考虑到关于本公开的功能而在本领域中当前广泛使用的那些通用术语,但是这些术语可以根据本领域普通技术人员的意图、先例或本领域新技术而变化。此外,特定术语可以由申请人选择,并且在这种情况下,其详细含义将在本公开的详细描述中描述。因此,说明书中使用的术语不应理解为简单的名称,而是基于术语的含义和本公开的总体描述。
本公开中使用了流程图来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,根据需要,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
首先对本申请涉及的相关术语进行解释:
普通执行环境(REE,Rich Execution Environment),也称为丰富执行环境,可以基于SoC上的普通区域,运行传统的OS、普通程序并存储普通信息。
可信执行环境(TEE,Trusted Execution Environment),基于片上系统(SoC,System on Chip)上的安全区域,提供了隔离执行、安全通信、安全存储等功能,保证TEE内敏感信息的完整性、机密性及可用性,并且为丰富执行环境(REE)提供安全服务。
密码引擎单元,可以响应于来自执行环境的访问请求而进行相应的密码运算,例如包括对数据进行加密或解密或其他相关操作。
访问请求,可以是TEE、REE或其他执行环境内的软件或应用针对密码引擎单元发起的请求,包括但不限于加密请求、解密请求、以及与加密请求和解密请求相关的签名请求、验签请求、密钥派生请求等。
计算机系统可以支持多种执行环境,例如TEE、REE或其他执行环境,这些环境都有访问和使用密码引擎单元的需求。如果为每个执行环境提供一套密码引擎单元,将导致性能浪费、成本高、功耗高等问题。如果为这些执行环境提供一套密码引擎单元,存在需要让密码引擎单元甚至整个计算机系统区分访问请求来自哪一个具体执行环境的安全性的需要,以便与具体执行环境的安全性相对应地执行该访问请求所要求的密码运算,以保证执行密码运算的安全性。
而且,由于多个执行环境的安全性可能不同,因此如果来自这些执行环境的访问请求都能同时使用一套密码引擎单元,则可能来自安全性较低的执行环境的恶意访问请求能够得知正在密码引擎单元中执行来自安全性较高的访问请求的密码运算的运算过程,存在安全隐患。
另外,由于为了执行访问请求要求的密码运算,需要存放执行密码运算所需的数据、例如对其执行密码运算的对象数据以及密码运算本身的属性信息(例如,密码运算的类型、密钥等),如果用共享的存储区域来存储这些所需的数据,则来自安全性较高的执行环境的访问请求要求的密码运算所需的数据可能被恶意访问和篡改。
图1示出了根据本公开的实施例的微处理器100的示意图。图1仅示出了用于描述的主要单元,可以理解的是,微处理器100可以包括更多其它单元。微处理器100可以是片上系统(SoC)或其一部分,或者是能够进行逻辑运算和数据处理的其他合适的系统或其一部分。
参考图1,微处理器100可以包括密码引擎单元102和控制单元104。
密码引擎单元102可以被配置为执行密码算法。例如,密码引擎单元102可以执行加密算法、解密算法或其他算法,以便对数据进行密码运算。
密码算法例如是对称算法、非对称算法、哈希算法或其他密码算法。对称算法是指加密和解密使用相同密钥的加密算法。数据发送方使用密钥将明文加密后发送,数据接收方接收到数据后使用相同的密钥将密文恢复为明文。在对称算法中,由于发送方和接收方使用相同的密钥对数据进行加解密,加密的安全性不仅取决于加密算法本身,密钥的安全性同样重要。对称算法可以包括SM4国家密码、AES128、AES192、AES256等(AES为高级加密标准(Advanced Encryption Standard)的缩写)。非对称算法是指加密和解密使用不同密钥的加密算法。非对称算法采用的两个密钥分别称为公开密钥(公钥)和私有密钥(私钥),公钥与私钥成对出现。如果用公钥(私钥)对数据进行加密,只有用对应的私钥(公钥)才能解密。非对称算法可以包括Elgamal算法、RSA(Rivest, Shamir and Adleman)算法等。哈希算法是把任意长的输入消息串变化成固定长的输出串的一种函数。哈希算法生成哈希值的过程是单向的,逆向操作难以完成,而且碰撞(两个不同的输入产生相同的哈希值)发生的机率非常小。
控制单元104与密码引擎单元102连接,用于控制密码引擎单元102的操作。控制单元104可以被配置为:接收来自第一执行环境的访问请求,访问请求要访问密码引擎单元102来执行密码算法,该访问请求至少包括标识信息,标识信息与第一执行环境相关,第一执行环境为N个执行环境中的一个执行环境,N为大于或等于1的整数;基于标识信息,指示密码引擎单元执行访问请求需要执行的密码算法。
由上可知,本公开的实施例提供的微处理器100可以接收来自不同执行环境的访问请求,并且可以基于标识信息区分访问请求来自的执行环境,例如可信执行环境和普通执行环境或其他执行环境。如此,来自不同的执行环境的访问请求可以基于相应的安全架构来安全地执行。
在一些实施例中,N个执行环境包括可信执行环境TEE、普通执行环境REE、安全子系统(也可称为安全元件(Secure Element),简称SE)中的至少一个。一般情况下,在安全子系统SE中的应用的安全性要高于TEE中的应用,更高于REE中的应用。需要说明的是,本公开所描述的技术方案不限于这些执行环境,还可以包括安全性相同或不同的其他执行环境。以这种方式,本公开的微处理器100可以适用于多种执行环境,并能满足不同执行环境发起的访问请求。
图2示出了根据本公开的实施例的另一微处理器200的示意图,该微处理器200可以是微处理器100的更详细的示意图。
参见图2,与微处理器100相比,微处理器200还包括与控制单元104相连接的一个或多个缓存器单元,例如缓存器单元206和缓存器单元208。可以理解的是,缓存器单元的数量可以改变,例如微处理器200可以包括三个或更多个缓存器单元。
多个缓存器单元相互分离,例如,缓存器单元206和缓存器单元208相互分离。这里的“分离”可以理解为物理或逻辑分离。在物理上,缓存器单元206和缓存器单元208可以相互远离。在逻辑上,缓存器单元206和缓存器单元208可以具有分离的逻辑地址。
多个缓存器单元中的第一缓存器单元与N个执行环境中的第一执行环境相对应。
这里的对应可以指,来自一个执行环境的访问请求在执行过程中所需的数据、执行过程的中间数据和所得到的结果数据都被存储在与该执行环境相对应的缓存器单元中,而不会被存储在其它缓存器单元中。以这种方式,在微处理器中,针对每个执行环境均设置有各自的缓存器单元,避免了多个执行环境共用一个缓存器单元,保障了数据的安全性。
例如,在M=N的情况下,M个缓存器单元与N个执行环境可以一一对应。作为示例,可以提供三个(M=3)缓存器单元,三个(N=3)执行环境可以是REE、TEE和SE,则三个缓存器单元中的第一缓存器单元与REE相对应,三个缓存器单元中的第二缓存器单元与TEE相对应,三个缓存器单元中的第三缓存器单元与SE相对应。
又例如,在N>1、M>1且N<M的情况下,即,此时执行环境的数量N小于缓存器单元的数量M,M个缓存器单元中的N个缓存器单元可以与N个执行环境一一对应。作为示例,可以提供三个缓存器单元(M=3),两个执行环境(N=2)可以是REE和TEE,则三个缓存器单元中的第一缓存器单元与REE相对应,三个缓存器单元中的第二缓存器单元与TEE相对应。而其它缓存器单元可以用作其它用途,或者备用以适应未来的多种新执行环境。或者,至少1个缓存器单元与一个执行环境相对应,例如2个、3个缓存器单元与一个执行环境相对应等等。而当未来加入新执行环境时,再将其他缓存器单元中的一个缓存器单元与该新执行环境相对应,以增加该微处理器的兼容性。以这种方式,在缓存器单元的数量多于执行环境的数量的情况下,每个执行环境均有各自的数据缓存器单元,避免了多个执行环境共用一个缓存器单元,保障了数据的安全性,同时又为未来兼容更多执行环境做准备。
再例如,在N>1、M>1且N>M的情况下,即,此时执行环境的数量N大于缓存器单元的数量M,N个执行环境中的一个或多个执行环境对应于M个缓存器单元中的一个缓存器单元。作为示例,可以提供两个缓存器单元(M=2),三个执行环境可以是REE、TEE和SE(N=3),则两个缓存器单元中的第一缓存器单元与REE相对应,两个缓存器单元中的第二缓存器单元与TEE和SE相对应。以这种方式,在缓存器单元的数量少于执行环境的数量的情况下,可以几个执行环境共用一个缓存器单元,实现有限的数据缓存器单元可以适用于多个执行环境。
另外,这里的共用一个缓存器单元的几个执行环境的优先级的差异度可以小于预设阈值,例如,根据实际的使用场景,可以为每个执行环境设置相应的优先级值以指示各个环境的优先级。例如,优先级值为0-1,并且数值越大优先级越高。作为示例,在对微处理器有安全性要求的情况下,REE的优先级值可以被设置为0.1,TEE的优先级值可以被设置为0.8,SE的优先级值可以被设置为0.9,并且预设阈值可以是0.5。在这种情况下,TEE的优先级与SE的优先级的差异度为0.1并且小于预设阈值0.5,因此TEE和SE可以对应于一个缓存器单元,REE可以对用于另一缓存器单元,如此,可以在有限的缓存器单元的情况下满足计算机的安全性要求。作为另一示例,在对微处理器有及时性要求的情况下,REE的优先级值可以被设置为0.9,TEE的优先级值可以被设置为0.7,SE的优先级值可以被设置为0.1,并且预设阈值可以是0.5。在这种情况下,REE的优先级与TEE的优先级的差异度为0.2并且小于预设阈值0.5,因此REE和TEE可以对应于一个缓存器单元,SE可以对应于另一缓存器单元,如此,可以在有限的缓存器单元的情况下满足计算机的及时性要求。各个环境的优先级值以及预设阈值可以根据具体的使用场景而改变,另外也可以通过其他方式来度量执行环境的优先级的差异度。以这种方式,可以解决在硬件上只有有限的缓存器单元的情况下如何兼容更多执行环境的问题并且使得微处理器满足性能要求。
可以理解的是,本公开不限于在此举例的对应关系,缓存器单元和执行环境还可以存在其他的对应关系。
继续参考图2,图2示出了2个缓存器单元,例如,2个缓存器单元可以具体为缓存器单元206和缓存器单元208,其中,缓存器单元206可以与TEE执行环境相对应,缓存器单元208可以与REE环境相对应。
由于缓存器单元与对应的执行环境相对应,因此标识信息还可以用于标识与第一执行环境对应的第一缓存器单元。例如,控制单元104可以基于来自第一执行环境的访问请求中的标识信息确定与第一执行环境对应的第一缓存器单元,用来存储执行该访问请求的密码算法所需的数据、执行过程的中间数据和所得到的结果数据。
控制单元104可以具体被配置为基于标识信息,在第一执行环境对应的第一缓存器单元中获取访问请求所需的数据。例如,继续参考图2,当控制单元接收到来自TEE执行环境的TEE访问请求时,控制单元可以基于标识信息在TEE对应的缓存器单元206中获取访问请求所需的数据。这里,访问请求所需的数据可以包括访问请求携带的数据或与访问请求相关的数据。例如,访问请求所需的数据可以包括密码算法信息,所述密码算法信息包括对象数据的地址和对象数据的密码算法的属性信息。对象数据是密码算法所针对的数据,即对什么数据执行例如非对称密码算法,即要被加密或解密的数据,而对象数据的密码算法的属性信息可以是非对称密码算法所采用的非对称密钥、密钥的长度、或与密码算法本身相关的其他信息等。进一步地,控制单元104可以基于所需的数据,指示密码引擎单元102执行访问请求需要执行的密码算法。
以这种方式,多个缓存器单元被相互隔离,并且用于各自的执行环境,保证了执行密码算法所需的数据、执行过程的中间数据和所得到的结果数据等的安全性。
图3示出了根据本公开的实施例的又一微处理器300的示意图,该微处理器300可以是微处理器200更详细的示意图。
参考图3,与微处理器200相比,微处理器300中的缓存器单元还包括寄存器和存储器,其可以以数据缓存器组、例如数据缓存器组310和数据缓存器组312的形式来提供。例如一个缓存器单元包括至少一个数据缓存器组,一个数据缓存器组包括(一个或多个)寄存器和(一个或多个)存储器。
寄存器可以用于寄存密码算法信息,密码算法信息为执行密码算法所需的信息。
存储器用于存储对象数据,对象数据是执行密码算法所需的要被加密或解密的数据。在一些实施例中,存储器可以是先进先出(First Input First Output,FIFO)存储器,以使得先缓存的数据先被密码引擎单元处理,以实现高性能的数据缓存。然而实施例不限于此,存储器可以是其他存储器。
如图3所示,缓存器单元206和缓存器单元208各自可以包括一个或多个数据缓存器组,一个数据缓存器组可以被指定专用于一种/类密码算法,例如专用于非对称密码算法,以这种方式可以用不同的数据缓存器组提供不同的丰富的密码算法,使得不同密码算法之间不共用一个数据缓存器组,同样也保持了不同密码算法之间的独立性和安全性。这还将在下面参照图4的实施例中详细描述。
在一个实施例中,在来自第一执行环境的访问请求中除了包括标识信息用来标识第一执行环境和对应的第一缓存器单元以外,还可以包括寄存器地址信息,寄存器地址信息用于指示该第一缓存器单元中的(一个数据缓存器组中的)寄存器的地址,寄存器用于寄存密码算法信息。例如,根据要执行的非对称密码算法来事先规定某个寄存器寄存执行该非对称密码算法的密码算法信息,从而获得该某个寄存器的地址作为寄存器地址信息。执行环境中的软件可以根据寄存器地址信息来确定要寄存该非对称密码算法的寄存器并根据访问请求中携带的该寄存器地址信息来配置确定的寄存器,使得寄存器寄存有执行该非对称密码算法的密码算法信息。当然非对称密码算法仅是密码算法的一个例子,实际上,密码算法信息可以是执行任何密码算法所需的信息,并且可以包括对象数据的地址和对象数据的密码算法的属性信息,对象数据是密码算法所针对的数据,例如用非对称密码算法加密或解密的数据等。如此,通过访问请求中包括的寄存器地址信息,控制单元104可以得知寄存了密码算法信息的寄存器的地址,从而寻址到该寄存器以得知包括对象数据的地址和密码算法的属性信息的密码算法信息。
因此,控制单元104可以被进一步配置为:基于对象数据的地址,提取对象数据,并将对象数据存储在第一缓存器单元中的(一个数据缓存器组中的)存储器中,其中对象数据的地址是通过寄存器地址信息确定的;指示密码引擎单元基于密码算法的属性信息,来对对象数据执行访问请求需要执行的密码算法,其中密码算法的属性信息是通过寄存器地址信息确定的。
以这种方式,可以基于寄存器地址信息来选择确定的数据缓存器单元中的(一个数据缓存器组中的)寄存器,进而执行与该寄存器相对应的密码算法,从而可以有针对性地根据访问请求携带的寄存器地址信息来调度相应的密码算法,同时可以在访问请求中不需要额外的信息来指示密码算法的类型,只需要寄存器地址信息即可确定指定专用于某一密码算法类型的寄存器。
由上可知,本公开的实施例提供的微处理器300可以执行多种执行环境发起的访问请求,并且能够保证数据的安全性和提高微处理器性能。例如,执行环境可以将与访问请求相对应的数据存储至专用于该执行环境的缓存器单元中,其中对应于不同执行环境的缓存器单元相互分离,实现了不同执行环境的密码算法的安全隔离,提升了安全性。又例如,专用于每个执行环境的缓存器单元中的每个数据缓存器组专用于某一密码算法,即一个数据缓存器组专用于缓存一种密码算法所需的数据,可以提高微处理器的运算性能。
在一些实施例中,标识信息可以是如下情况中的一种:
在一个实施例中,标识信息可以是第一执行环境的标识符,标识信息直接标识第一执行环境。不同执行环境有不同的标识符。例如,第一执行环境的标识符是REE,标识信息就是REE,或者可以以不同的字段来标识,例如0标识REE,1标识TEE等,例如标识信息是0。如此可以基于该标识符来标识访问请求来自的执行环境。
在一个实施例中,标识信息可以是发出访问请求的源地址信息,其中源地址信息与第一执行环境对应。例如,标识信息可以是源地址信息,比如发出访问请求的IP地址或者硬件地址。然而实施例不以此为限制,只要该源地址信息与发出该访问请求的来源相关,且与执行环境相对应即可。在这种情况下,可以采用映射表的方式来指示源地址信息与执行环境之间的映射关系,而控制单元仍然可以通过该映射表来得知携带标识信息的访问请求所对应的执行环境。如此,可以在不改变访问请求本身的字段协议的情况下,来实现访问请求与执行环境的对应。
在一个实施例中,标识信息可以是访问请求的标识符,其中访问请求的标识符与第一执行环境对应。例如,标识信息可以是访问请求的ID号,例如访问请求本身的序列号。然而实施例不以此为限制,只要访问请求的标识符与执行环境相对应。在这种情况下,可以采用映射表的方式来指示访问请求的标识符与执行环境之间的映射关系。而控制单元仍然可以通过该映射表来得知携带标识信息的访问请求所对应的执行环境。如此,可以在不改变访问请求本身的字段协议的情况下,来实现访问请求与执行环境的对应。
在一些实施例中,微处理器100还可以包括与控制单元104连接的直接存储器访问(Direct Memory Access,DMA)单元(参见图4),并且控制单元104还可以被配置为:指示直接存储器访问DMA单元来传输执行密码算法所需的数据,例如对象数据;或者指示直接存储器访问DMA单元来传输执行访问请求的密码算法的结果。以这种方式,可以提高数据和密码运算结果的传输速度,降低了控制单元104用于传输数据和密码运算结果的开销,并且提高了数据和密码运算结果的传输的安全性。
由于计算机系统支持的TEE、REE、以及可能的安全子系统SE或其他执行环境都有使用密码引擎单元的需求。如果为每一个执行环境提供一套密码引擎单元,将导致性能浪费、成本高、功耗高等问题。因此,参考图1,在本公开的实施例中,可以多个执行环境共享密码引擎单元102,由此可以处理不同执行环境发起的访问请求。然而,密码引擎单元102同一时间只能执行一种密码算法,当不同执行环境发起的访问请求同时访问密码引擎单元102或在一个访问请求还没有执行完的时候发起另一访问请求时可能导致密码引擎单元102、微处理器100甚至整个计算机系统的崩溃,或者引起严重的安全或密码泄露隐患。
因此,本公开的实施例还提供了一种微处理器,以避免分别来自不同执行环境的多个访问请求之间的冲突。这里的冲突可以指分别来自不同执行环境的多个访问请求需要在同一时间占用或使用密码引擎单元的计算资源。可以理解的是,该微处理器可以与微处理器100的硬件结构一致。因此,该实施例可以在微处理器100至300的基础上实施,以作为微处理器100至300的改进,也可以在微处理器100中单独实施。下面将参照微处理器100来描述该实施例。
继续参考图1,微处理器100可以包括密码引擎单元102和控制单元104。
密码引擎单元102可以被配置为执行密码算法。控制单元104与密码引擎单元102相连接,其中控制单元104可以被配置为:接收多个访问请求,多个访问请求分别来自多个执行环境;响应多个访问请求中的一个访问请求,以指示密码引擎单元执行密码算法。
由上可知,本公开的实施例提供的微处理器100可以避免分别来自不同执行环境的多个访问请求之间的冲突,例如这里的冲突是指分别来自不同执行环境的多个访问请求需要在同一时间占用或使用密码引擎单元的计算资源,从而避免了密码引擎单元的崩溃,提高了微处理器的可靠性。此外,在某一时刻,密码引擎单元的仅能被来自单个执行环境的一个访问请求所访问,而不能被来自其他执行环境下的访问请求所同时访问,保证了来自该单个执行环境的访问请求的相关的数据的安全性。
在一些实施例中,控制单元104可以存储有多个执行环境各自的优先级;控制单元104可以具体被配置为:基于优先级来优先响应来自优先级最高的执行环境的访问请求。以这种方式,可以基于不同访问请求之间的优先级来避免不同执行环境的访问请求同时访问密码引擎单元而带来的冲突。这里的优先级可以与执行环境的安全性高低相关。例如REE环境的安全性最低,因此其优先级最低,TEE环境的安全性较高,其优先级较高,而安全子系统SE的安全性最高,其优先级最高。当然优先级的设置不限于此,可以根据其他考虑来设置各个不同执行环境的优先级。
具体地,多个访问请求可以包括第一访问请求和第二访问请求,第一访问请求来自于第一执行环境,第二访问请求来自于第二执行环境,假设第一执行环境的优先级高于第二执行环境,例如第一执行环境是TEE环境,而第二执行环境是REE执行环境;控制单元104可以被配置为:优先响应第一访问请求,即来自TEE环境的访问请求。例如,当冲突是同时接收到第一访问请求和第二访问请求时,控制单元104可以优先响应第一访问请求。又例如,当冲突是密码引擎单元102正在执行第一访问请求的密码算法时接收到第二访问请求时,由于第一执行环境的优先级较高,控制单元104可以继续执行第一访问请求的密码算法,而暂不执行第二访问请求,直到第一访问请求执行完毕。再例如,当冲突是密码引擎单元102正在执行第二访问请求的密码算法时接收到第一访问请求时,由于第一执行环境的优先级较高,控制单元104可以优先响应第一访问请求,而中止或终止第二访问请求的执行,直到第一访问请求执行完毕,再继续执行第二访问请求或不再执行第二访问请求。
以这种方式,可以优先执行优先级高的访问请求。例如,第一执行环境可以是TEE,第二执行环境可以是REE,并且第一访问请求的优先级高于第二访问请求的优先级,因此可以优先执行具有较高安全要求的第一访问请求,以符合实际的使用需要。
在一些实施例中,多个访问请求包括第一访问请求和第二访问请求,第一访问请求来自于第一执行环境,第二访问请求来自于第二执行环境,第一执行环境的优先级高于第二执行环境;控制单元被配置为:判断第一访问请求需要执行的密码算法是否完成执行;响应于第一访问请求的密码算法完成执行,响应第二访问请求,以通过密码引擎单元执行第二访问请求需要执行的密码算法。
在该实施例中,当密码引擎单元102正在执行第一访问请求的密码算法时接收到第二访问请求时,密码引擎单元102可以继续执行第一访问请求的密码算法,并且控制单元104例如可以通过(例如,定时或适时地)监测密码引擎单元102对应的状态机来判断第一访问请求的密码算法的执行是否完成,并且直到第一访问请求的密码算法执行完成才响应第二访问请求。以这种方式,由于第一执行环境的优先级高于第二执行环境的优先级,在得到第一访问请求的密码算法的密码运算结果后才响应第二访问请求,从而保证了数据的安全性。
可以理解的是,存在以下情况:多个访问请求包括第一访问请求和第二访问请求,第一访问请求来自于第一执行环境,第二访问请求来自于第二执行环境,第一执行环境的优先级低于第二执行环境,并且当正在执行第一访问请求的密码算法时接收到第二访问请求。在这种情况下,如果基于第二执行环境优先级高而直接响应第二执行环境将导致如下问题:在执行第一访问请求中已经生成的数据(也称为中间数据,包括中间密码结果及其他相关数据)将被删除,以为执行第二访问请求做准备,这会造成已经生成的数据被浪费,从而造成计算资源的浪费,且如果没有对第一访问请求的中间密码结果做缓存,将导致第一访问请求错误或者丢失,甚至可能导致整个微处理器功能紊乱。
因此,在一些实施例中,多个访问请求包括第一访问请求和第二访问请求,第一访问请求来自于第一执行环境,第二访问请求来自于第二执行环境,第一执行环境的优先级低于第二执行环境,控制单元104可以被配置为:判断第一访问请求得到的中间密码运算结果是否完成存储;响应于中间密码运算结果存储完成,响应第二访问请求,以通过密码引擎单元执行第二访问请求需要执行的密码算法。
在该实施例中,当正在执行第一访问请求的密码算法时接收到第二访问请求,即使第一执行环境的优先级低于第二执行环境的优先级,密码引擎单元102可以继续执行第一访问请求的密码算法直到第一访问请求的密码算法的中间密码运算结果存储完成,而控制单元104例如可以通过(例如,定时或适时地)监测密码引擎单元102对应的状态机来判断第一访问请求的密码算法的中间密码运算结果是否存储完成,并且直到第一访问请求的密码算法的中间密码运算结果的存储完成才响应第二访问请求。以这种方式,首先,在得到第一访问请求的密码算法的中间密码运算结果后才响应第二访问请求,从而保证了数据的安全性以及优先级更高的第二访问请求被响应的及时性。其次,第一访问请求的执行过程中生成的中间密码运算结果可以被存储且可以在第二访问请求执行完毕之后继续使用,从而也避免了计算资源的浪费。另外,第二访问请求可以不必等到第一密码算法完全执行完成,而是等到第一密码算法的中间密码运算结果已经被存储即可被响应,减少了第二访问请求的等待时间,提高了微处理器的性能。
图4示出了根据本公开的实施例的又一微处理器400的示意图。图4的微处理器400可以是微处理器100至300更详细的示例,并且还示出了其他结构以便于示例性地描述微处理器400的应用示例。
图4示出微处理器400和其上的执行环境420。图4仅示出了用于描述的主要单元和结构,可以理解的是,微处理器400和执行环境420可以包括更多或更少的单元。
在图4中,执行环境420可以包括TEE 422和REE 424,TEE 422和REE 424各自可以包括软件,例如应用、操作系统等。当然执行环境的数量和类型仅是示例,而不限于此。例如,TEE 422中的应用可以发起针对密码引擎单元102的TEE访问请求以要求执行一种密码算法,REE 424中的应用可以发起针对密码引擎单元102的REE访问请求以要求执行相同或不同的另一种密码算法。
微处理器400包括密码引擎单元102、控制单元104、对应于TEE的TEE缓存器单元406、对应于REE的REE缓存器单元408、以及DMA单元410。TEE缓存器单元406、REE缓存器单元408可以分别对应于上文结合图2描述的缓存器单元206、缓存器单元208。
密码引擎单元102可以存储有一种或多种密码算法,例如对称算法、非对称算法、哈希算法或其他密码算法。密码引擎单元102可以在控制单元104的控制下调度这些密码算法来对接收到的数据(例如,上文中的对象数据)执行密码算法。
TEE缓存器单元406和REE缓存器单元408相互分离,以实现不同执行环境的安全隔离。例如,缓存器单元406和缓存器单元408相互分离。这里的“分离”可以理解为物理或逻辑分离。在物理上,缓存器单元406和缓存器单元408可以相互远离。在逻辑上,缓存器单元406和缓存器单元408可以具有分离的逻辑地址。
TEE缓存器单元406和REE缓存器单元408可以分别包括至少一个数据缓存器组,一个数据缓存器组对应于一种密码算法。例如,TEE缓存器单元406可以包括数据缓存器组4061、4062和4063,并且数据缓存器组4061、4062和4063分别对应于对称算法、非对称算法和哈希算法。REE缓存器单元408可以包括数据缓存器组4081、4082和4083,并且数据缓存器组4081、4082和4083分别对应于对称算法、非对称算法和哈希算法。以这种方式,各个数据缓存器组专用于各自的密码算法,并且各个数据缓存器组相互独立,可以避免相互干扰、提高执行访问请求的效率。
数据缓存器组4061、4062、4063、4081、4082和4083每个有各自的寄存器和存储器。寄存器和缓存器的数量可以根据密码算法的需要和对象数据的大小来调整,本公开不对此进行限制。可以给各个存储器和各个寄存器进行编号,相同编号的寄存器可以专用于相同的某种密码算法。例如,相同密码算法的两个数据缓存器组,如TEE 422下用于存储要采用对称算法对其加密的对象数据的数据缓存器组4061和REE下用于存储要采用对称算法对其加密的对象数据的数据缓存器组4081的类型和结构可以是一样的。以这种方式,不同执行环境下专用于相同密码算法的数据缓存器组可以采用相同编号的寄存器,从而简化了数据缓存器组的设计和制造。对于不同密码算法的不同数据缓存器组,例如专用于对称算法的数据缓存器组4061和专用于非对称算法的数据缓存器组4062的寄存器的编号一般不同,以对应于不同的密码算法。而存储器的编号可以相同或不同,例如对存储器中存储的同一对象数据进行不同的密码算法,例如既要对其执行对称算法,又要对其执行非对称算法。因此,同一缓存器单元中的多个数据缓存器组中的存储器可以是同一存储器,也可以是分离的存储器。
寄存器可以充当执行环境内的软件与控制单元104的接口。例如,软件可以基于访问请求来配置相应的寄存器,该过程可以理解为控制单元104接收访问请求的过程或其一部分。配置后的寄存器具有相应的密码算法信息,这里的密码算法信息也可以称为寄存器信息。控制单元104进而可以基于密码算法信息来控制其他相关的单元(例如DMA单元410、存储器1至3或密码引擎单元102等)的工作以执行访问请求。
例如,TEE 422可以发起利用对称算法来加密对象数据的TEE访问请求,并且可以基于该TEE访问请求配置与对称算法相对应的寄存器,例如数据缓存器组4061中的寄存器1,从而使得该寄存器1具有相应的密码算法信息,控制单元104进而可以基于密码算法信息来控制其他单元的工作。这里的密码算法信息可以是控制单元104为执行访问请求而控制其他模块所需的信息,例如包括但不限于对象数据的地址/大小、密码算法的属性信息(例如,密码算法的选择或调用、算法模式的选择、密码引擎单元的启动等)。
可以理解的是,根据实际使用的密码算法信息的需要,图4中示出的寄存器1至3可以被提供为寄存器组1至3,例如寄存器1被提供为寄存器组1。寄存器组可以包括分别指示对象数据的地址/大小的寄存器、指示某类密码算法下的具体算法的寄存器、指示密钥的寄存器、以及指示启动密码引擎单元执行密码运算的寄存器等多个寄存器。每个寄存器在软件的配置下寄存有相应的配置信息。例如,寄存器组1至3专用于一种或一类密码算法,并且其中可以包括指示某类密码算法中的具体算法的寄存器(可以称为算法选择寄存器),可以经由软件配置而寄存有相应的值,该值可以指示某类密码算法中的具体密码算法。作为示例,数据缓存器组4061专用于对称算法,寄存器1可以包括算法选择寄存器,该算法选择寄存器可以通过软件、基于访问请求来配置而寄存有相应的值,例如值0对应于对称算法SM4国家密码,值1对应于对称算法AES128(AES为高级加密标准(Advanced EncryptionStandard)的缩写),值2对应于对称算法AES192,值3对应于对称算法AES256等。其他寄存器可以类似地或不同地配置而具有相应的密码算法信息。
存储器可以用于存储对象数据。例如,数据缓存器组4061中的存储器1用于缓存针对TEE访问请求的采用对称算法对其加密/解密的对象数据,数据缓存器组4081中的存储器1用于存储针对REE访问请求的采用对称算法对其加密/解密的对象数据,数据缓存器组4062中的存储器2用于存储针对TEE访问请求的采用非对称算法对其加密/解密的对象数据,数据缓存器组4082中的存储器2用于存储针对REE访问请求的采用非对称算法对其加密/解密的对象数据,数据缓存器组4063中的存储器3用于存储针对TEE访问请求的采用哈希算法对其加密/解密的对象数据,数据缓存器组4083中的存储器3用于存储针对REE访问请求的采用哈希算法对其加密/解密的对象数据。存储器可以是FIFO存储器、静态随机存取存储器(Static Random-Access Memory,SRAM)或者能够缓存数据的其他存储器。
如上所述,各个数据缓存器组具有各自的寄存器和存储器,可以降低微处理器的设计复杂度,各个数据缓存器组相互独立,可以避免相互干扰、提高执行访问请求的效率。
DMA单元410可以用于将对象数据从例如微处理器400外部的存储设备传输至对应的数据缓存器组中的存储器中,或者将密码运算的结果传输至微处理器400外部的存储设备。例如,DMA单元410可以根据密码算法信息来主动传输对象数据,这样既可以释放控制单元的运算能力,又可以提升数据传输的速度,并且还可以提高数据传输的安全性。在实际应用中,由于DMA单元410读取数据存在一定的延迟,需要在密码引擎单元102执行密码算法的同时在数据缓存器组的存储器中存储有一些参与密码算法的数据,若不存储参与密码算法的数据,则会使得密码引擎单元102存在一定的空闲期,从而导致密码引擎的利用率较低,因此可以在密码引擎单元102执行密码算法之前执行对象数据的传输。
基于图4所示的微处理器400的各个单元的描述,微处理器400的处理访问请求的工作流程可以如下:执行环境420(如REE 422或TEE 424)中的软件基于访问请求配置相应的寄存器,触发控制单元104开始工作,控制单元104触发DMA单元410,DMA单元410读取对象数据,将读取到的对象数据存储至数据缓存器组中的存储器中,控制单元104检测到存储器的数据非空,开始从存储器中读出对象数据,并按照密码算法的需求组织对象数据送入密码引擎单元102,等待获取密码算法的密码运算结果,然后在控制单元104的控制下存储密码运算结果或者直接将密码运算结果写到外部缓存中,重复上述动作,直到密码运算全部完成。
因此,本公开的实施例提供的微处理器400可以执行来自不同执行环境的访问请求,并且能够保证数据的安全性和提高微处理器性能。
需要注意的是,图4所示的微处理器400的具体结构仅仅是为方便说明而列举的示例。在特定的环境下,可以对该结构做出改变和修改而不脱离本公开的保护范围。例如,可以根据密码算法的数量设置不同数量的数据缓存器组,并且专用于各个执行环境的数据缓存器组的数量、结构等可以相同或不同;DMA单元410可以不是必须的,并且可以采用其他技术来传输执行密码算法所需的数据或密码算法的密码运算结果,等等。
与参考图1至图3描述微处理器100至300类似地,微处理器400也可以解决不同执行环境同时访问密码引擎单元带来的冲突问题。
继续参考图4,在一些实施例中,当仅接收到TEE访问请求时,控制单元104可以基于响应TEE访问请求,以指示密码引擎单元102执行TEE访问请求需要执行的密码算法;当仅接收到REE访问请求时,控制单元104可以基于响应REE访问请求,以指示密码引擎单元102执行REE访问请求需要执行的密码算法。在这种情况下,两个访问请求不存在冲突。
在一些实施例中,控制单元104可以在某一时刻或一段时间内同时接收TEE访问请求和REE访问请求。此时,两个访问请求存在冲突的可能性,例如,同时接到TEE访问请求和REE访问请求,或者密码引擎单元102正在执行TEE访问请求和REE访问请求中的一个访问请求的密码算法时接收到另一访问请求时。然后,控制单元可以响应TEE访问请求和REE访问请求之一,例如TEE访问请求,并根据TEE访问请求执行密码算法。
在一些实施例中,控制单元104可以存储有TEE访问请求和REE访问请求的优先级,并且控制单元104可以被配置为:基于该优先级来优先响应来自优先级最高的执行环境的访问请求。例如,优先级可以与安全性相关,这样,TEE访问请求的优先级高于REE访问请求优先级,因此控制单元104可以优先响应TEE访问请求。可以理解的是,虽然本文的优先级以安全性的优先级来描述,即TEE的优先级高于REE的优先级,然而优先级还可以指时间上的优先级或其他性能要求的优先级。因此,在一些情况下,优先级也可以为TEE访问请求的优先级低于REE访问请求优先级,则控制单元104可以优先响应执行REE访问请求。
在一些实施例中,当密码引擎单元102正在执行TEE访问请求需要执行的密码算法时接收到REE访问请求,控制单元104可以被配置为:判断TEE访问请求需要执行的密码算法是否完成执行;响应于TEE访问请求需要执行的密码算法完成执行,响应REE访问请求,以通过密码引擎单元102执行REE访问请求需要执行的密码算法。另外,控制单元104可以被配置为响应于TEE访问请求需要执行的密码算法未完成执行,继续执行TEE访问请求需要执行的密码算法,直到完成执行。
在一些实施例中,当密码引擎单元102正在执行REE访问请求需要执行的密码算法时接收到TEE访问请求,控制单元104可以被配置为:判断REE访问请求需要执行的密码算法得到的中间密码运算结果是否完成存储;响应于中间密码运算结果完成存储,响应TEE访问请求,以通过密码引擎单元102执行TEE访问请求需要执行的密码算法。另外,控制单元104可以被配置为响应于中间密码运算结果是否未完成存储,继续执行REE访问请求需要执行的密码算法,直到完成存储。另外,控制单元104还可以被配置为:判断TEE访问请求需要执行的密码算法是否完成执行;响应于TEE访问请求的密码算法完成执行,指示密码引擎单元102基于存储的中间密码运算结果继续执行REE访问请求的密码算法。
需要注意的是,虽然以上结合图4描述的实施例中描述了两个执行环境,但是可以理解的是,本公开的实施例还可以应用于更多个执行环境。例如包括TEE、REE和SE的三体系执行环境,并且可以相应地设置对应于SE的缓存器单元。
结合图4描述的实施例所提供的微处理器400可以是图1至图3描述的微处理器100至300的更详细的示例,并且微处理器100-300的优点可以映射到微处理器400中,在此不再赘述。
计算机系统存在支持至少一个执行环境来使用密码引擎单元执行密码算法的需求,由于为了执行访问请求要求的密码运算,需要存放执行密码运算所需的数据、例如对其执行密码运算的对象数据以及密码运算本身的属性信息(例如,密码运算的类型、密钥等),如果用共享的存储区域来存储这些所需的数据,则来自安全性较高的执行环境的访问请求要求的密码运算所需的数据可能被恶意访问和篡改。因此,需要为每个执行环境提供相应的架构,以安全地指示密码引擎单元执行密码算法。
图5示出了根据本公开的实施例的又一微处理器500的示意图。
参见图5,微处理器500可以包括:密码引擎单元102、控制单元104以及M个缓存器单元,M为大于或等于1的整数(图中仅示出为缓存器单元506)。
密码引擎单元102可以被配置为执行密码算法。
M个缓存器单元可以被配置为缓存所对应的执行环境的访问请求所需的数据。例如,缓存器单元506可以对应于REE环境,并且可以被配置为缓存REE的访问请求所需的数据。
控制单元104可以连接于密码引擎单元102和M个缓存器单元,并且控制单元104可以被配置为:接收来自第一执行环境的访问请求,访问请求要访问密码引擎单元来执行密码算法;第一执行环境为N个执行环境中的一个执行环境,N为大于或等于1的整数;基于访问请求,指示密码引擎单元利用第一执行环境对应的缓存器单元中缓存的所需的数据执行访问请求需要执行的密码算法。
由上可知,执行环境的访问请求所需的数据被存储在相应的缓存器单元中,使得可以针对性的存储所需的数据,保证了数据的安全性,从而可以安全地指示密码引擎单元执行密码算法。
在一些实施例中,在M大于1的情况下,M个缓存器单元相互分离。以这种方式,M个缓存器单元中的数据被相互隔离,保证了数据的安全性。
在一些实施例中,在M=N的情况下,M个缓存器单元与N个执行环境一一对应。以这种方式,每个执行环境均有各自的数据缓存器单元,避免了多个执行环境共用一个缓存器单元,保障了数据的安全性。
在一些实施例中,在N>1、M>1且N<M的情况下,M个缓存器单元中的N个缓存器单元与N个执行环境一一对应。以这种方式,在缓存器单元的数量多于执行环境的数量的情况下,每个执行环境均有各自的数据缓存器单元,避免了多个执行环境共用一个缓存器单元,保障了数据的安全性。
在一些实施例中,在N>1、M>1且N>M的情况下,N个执行环境中的一个或多个执行环境对应于M个缓存器单元中的一个缓存器单元。以这种方式,在缓存器单元的数量少于执行环境的数量的情况下,可以多个执行环境共用一个缓存器单元,实现有限的数据缓存器单元可以适用于多个执行环境。另外,这里的对应于所述M个缓存器单元中的一个缓存器单元的多个执行环境可以具有相同或相近优先级,例如具有相同或相近的安全性的优先级,从而提高数据的安全性。
以这种方式,多个缓存器单元被相互隔离,并且用于多种执行环境,保证了执行密码算法所需的数据、执行过程的中间数据和所得到的结果数据的安全性。
可以理解的是,结合图5描述的微处理器500的实施例可以单独实施,也可以在图1至图4描述的微处理器100至400中实施,并且其技术效果可以同样映射到微处理器100至400中,在此不再赘述。
图6示出了根据本公开的实施例的数据处理方法的流程图。
具体地,本公开的实施例还提供了一种数据处理方法,用于微处理器,微处理器包括密码引擎单元和控制单元,数据处理方法包括由控制单元(例如控制单元104)执行如图6所示的步骤S602~S604。
在步骤S602中,控制单元接收来自第一执行环境的访问请求,访问请求要访问密码引擎单元来执行密码算法,访问请求至少包括标识信息,标识信息与第一执行环境相关,第一执行环境为N个执行环境中的一个执行环境,N为大于或等于1的整数;
在步骤604中,控制单元基于标识信息,指示密码引擎单元执行访问请求需要执行的密码算法。
由上可知,本公开的实施例提供的微处理器100可以接收来自不同执行环境的访问请求,并且可以基于标识信息区分访问请求来自的执行环境,例如可信执行环境和普通执行环境或其他执行环境。如此,来自不同的执行环境的访问请求可以基于相应的安全架构来安全地执行。
在一些实施例中,微处理器还包括与控制单元相连接的多个缓存器单元,多个缓存器单元相互分离,多个缓存器单元中的第一缓存器单元与N个执行环境中的第一执行环境相对应;标识信息还用于标识第一执行环境对应的第一缓存器单元;其中,基于标识信息,指示密码引擎单元执行访问请求需要执行的密码算法,包括:基于标识信息,在第一执行环境对应的第一缓存器单元中获取访问请求所需的数据;基于所需的数据,指示密码引擎单元执行访问请求需要执行的密码算法。以这种方式,多个缓存器单元被相互隔离,并且用于各自的执行环境,保证了执行密码算法所需的数据、执行过程的中间数据和所得到的结果数据等的安全性。
在一些实施例中,访问请求还包括寄存器地址信息,寄存器地址信息用于指示第一缓存器单元中的寄存器的地址,寄存器用于寄存密码算法信息,密码算法信息包括对象数据的地址和对象数据的密码算法的属性信息,对象数据是密码算法所针对的数据;其中,基于所需的数据,指示密码引擎单元执行访问请求需要执行的密码算法,包括:基于对象数据的地址,提取对象数据,并将对象数据存储在第一缓存器单元中的存储器中,其中对象数据的地址是通过寄存器地址信息确定的;指示密码引擎单元基于密码算法的属性信息,来对对象数据执行访问请求需要执行的密码算法,其中密码算法的属性信息是通过寄存器地址信息确定的。以这种方式,可以基于寄存器地址信息来选择确定的缓存器单元中的寄存器,进而执行与该寄存器相对应的密码算法,从而可以有针对性地根据访问请求携带的寄存器地址信息来调度相应的算法。
在一些实施例中,标识信息是如下情况中的一种:标识信息是第一执行环境的标识符;标识信息是发出访问请求的源地址信息,其中源地址信息与第一执行环境对应;标识信息是访问请求的标识符,其中访问请求的标识符与第一执行环境对应。以这种方式,可以提供丰富的标识信息的方式。
在一些实施例中,在N大于1的情况下,数据处理方法还包括由控制单元执行以下操作:接收多个访问请求,多个访问请求来自N个执行环境;响应多个访问请求中的一个访问请求,并根据访问请求中携带的标识信息指示密码引擎单元执行密码算法。以这种方式,可以避免分别来自不同执行环境的多个访问请求之间的冲突,并且保证了来自该单个执行环境的访问请求的相关的数据的安全性。
在一些实施例中,控制单元存储有N个执行环境各自对应的优先级,其中,响应多个访问请求中的一个访问请求包括:基于优先级来优先响应来自优先级最高的执行环境的访问请求。以这种方式,可以基于不同访问请求之间的优先级来避免不同执行环境的访问请求同时访问密码引擎单元而带来的冲突,在保证微处理器的安全性的同时,提高了实用性。
在一些实施例中,多个访问请求包括第一访问请求和第二访问请求,第一访问请求来自于第一执行环境,第二访问请求来自于第二执行环境,第一执行环境的优先级高于第二执行环境,其中,响应多个访问请求中的一个访问请求,包括:判断第一访问请求需要执行的密码算法是否完成执行;响应于第一访问请求的密码算法完成执行,响应第二访问请求,以通过密码引擎单元执行第二访问请求需要执行的密码算法。以这种方式,在得到第一访问请求的密码算法的密码运算结果后才响应第二访问请求,从而保证了数据的安全性。
在一些实施例中,多个访问请求包括第一访问请求和第二访问请求,第一访问请求来自于第一执行环境,第二访问请求来自于第二执行环境,第一执行环境的优先级低于第二执行环境,其中,响应多个访问请求中的一个访问请求,包括:判断第一访问请求得到的中间密码运算结果是否完成存储;响应于中间密码运算结果存储完成,响应第二访问请求,以通过密码引擎单元执行第二访问请求需要执行的密码算法。以这种方式,首先,在得到第一访问请求的密码算法的中间密码运算结果后才响应第二访问请求,从而保证了数据的安全性。其次,第二访问请求可以不必等到第一密码算法执行完成,而是等到第一密码算法的中间密码运算结果已经被存储即可被响应,减少了第二访问请求的等待时间,提高了微处理器的性能。
在一些实施例中,数据处理方法还包括由控制单元执行以下操作:判断第二访问请求需要执行的密码算法是否完成执行;响应于第二访问请求的密码算法完成执行,指示密码引擎单元基于存储的中间密码运算结果继续执行第一访问请求的密码算法。以这种方式,生成的中间密码运算结果可以被存储且可以继续使用,从而避免了计算资源的浪费。
在一些实施例中,N个执行环境包括可信执行环境TEE和普通执行环境REE中的至少一个。以这种方式,本公开的实施例可以适用于多种执行环境,通过本申请描述的微处理器,可以有针对性的满足不同执行环境的访问请求。
在一些实施例中,微处理器还包括直接存储器访问DMA单元,数据处理方法还包括由控制单元执行以下操作:指示直接存储器访问DMA单元来传输执行密码算法所需的要被加密或解密的数据;或者指示直接存储器访问DMA单元来传输执行访问请求的密码算法的结果。以这种方式,既可以释放控制单元的运算能力,又可以提升数据传输的速度,并且还可以提高数据传输的安全性。
上述结合图6描述的数据处理方法及其附加方面可以应用于参考图1至4描述的微处理器100至400中,并且参照图1至图4描述的实施例的技术效果可以映射到上述处理方法及其附加方面,在此不再赘述。当然,上述处理方法及其附加方面也可以部分或全部地应用于参照图5描述的微处理器500中。
图7示出了根据本公开的实施例的另一数据处理方法的流程图。
具体地,本公开的实施例还提供了一种数据处理方法,应用于微处理器,微处理器包括:密码引擎单元,被配置为执行密码算法;M个缓存器单元,M个缓存器单元被配置为缓存所对应的执行环境的访问请求所需的数据,M为大于或等于1的整数;控制单元,连接于密码引擎单元和M个缓存器单元,并且数据处理方法包括由控制单元执行如图7所示的步骤S702~S704:
在步骤S702中,控制单元接收来自第一执行环境的访问请求,访问请求要访问密码引擎单元来执行密码算法;第一执行环境为N个执行环境中的一个执行环境,N为大于或等于1的整数;
在步骤S704中,控制单元基于访问请求,指示密码引擎单元利用第一执行环境对应的缓存器单元中缓存的所需的数据执行访问请求需要执行的密码算法。
由上可知,执行环境的访问请求所需的数据被存储在相应的缓存器单元中,使得可以针对性的存储所需的数据,保证了数据的安全性,从而可以安全地指示密码引擎单元执行密码算法。
在一些实施例中,在M大于1的情况下,M个缓存器单元相互分离。以这种方式,M个缓存器单元中的数据被相互隔离,保证了数据的安全性。
在一些实施例中,在M=N的情况下,M个缓存器单元与N个执行环境一一对应。以这种方式,每个执行环境均有各自的数据缓存器单元,避免了多个执行环境共用一个缓存器单元,保障了数据的安全性。
在一些实施例中,在N>1、M>1且N<M的情况下,M个缓存器单元中的N个缓存器单元与N个执行环境一一对应。以这种方式,在缓存器单元的数量多于执行环境的数量的情况下,每个执行环境均有各自的数据缓存器单元,避免了多个执行环境共用一个缓存器单元,保障了数据的安全性。
在一些实施例中,在N>1、M>1且N>M的情况下,N个执行环境中的一个或多个执行环境对应于M个缓存器单元中的一个缓存器单元。以这种方式,在缓存器单元的数量少于执行环境的数量的情况下,可以多个执行环境共用一个缓存器单元,实现有限的数据缓存器单元可以适用于多个执行环境。
在一些实施例中,与一个缓存器单元对应的多个执行环境的优先级的差异度小于预设阈值。以这种方式,可以解决在硬件上只有有限的缓存器单元的情况下如何兼容更多执行环境的问题并且使得微处理器满足性能要求。
在一些实施例中,N个执行环境包括可信执行环境TEE、普通执行环境REE和安全子系统SE中的至少一个。以这种方式,本公开的实施例可以适用于多种执行环境,通过本申请描述的微处理器,可以有针对性的满足不同执行环境的访问请求。
在一些实施例中,微处理器还包括直接存储器访问DMA单元,数据处理方法还包括由控制单元执行以下操作:指示直接存储器访问DMA单元来传输执行密码算法所需的要被加密或解密的数据;或者指示直接存储器访问DMA单元来传输执行访问请求的密码算法的结果。以这种方式,既可以释放控制单元的运算能力,又可以提升数据传输的速度,并且还可以提高数据传输的安全性。
上述结合图7描述的数据处理方法及其附加方面可以至少应用于参考图5描述的微处理器500中,并且参照图5描述的实施例的技术效果可以映射到上述数据处理方法及其附加方面,在此不再赘述。当然,上述处理方法及其附加方面也可以部分或全部地应用于参照图1-图4描述的微处理器100-400中。
图8示出了根据本公开的实施例的又一数据处理方法的流程图。
具体地,本公开的实施例还提供了一种数据处理方法,应用于微处理器,微处理器包括:密码引擎单元,被配置为执行密码算法;控制单元,与密码引擎单元相连接,数据处理方法包括由控制单元执行如图8所示的步骤。
在步骤S802中,控制单元接收多个访问请求,多个访问请求分别来自多个执行环境。
在步骤S804中,控制单元响应多个访问请求中的一个访问请求,以指示密码引擎单元执行密码算法。
由上可知,可以仅响应所述多个访问请求中的一个访问请求,可以避免分别来自不同执行环境的多个访问请求之间的冲突,例如这里的冲突是指分别来自不同执行环境的多个访问请求需要在同一时间占用或使用密码引擎单元的计算资源,从而避免了密码引擎单元的崩溃,提高了微处理器的可靠性。此外,在某一时刻,密码引擎单元的仅能被来自单个执行环境的访问请求所访问,而不能被来自其他执行环境下的访问请求所访问,保证了来自该单个执行环境的访问请求的相关的数据的安全性。
在一些实施例中,控制单元存储有多个执行环境各自的优先级,其中,响应多个访问请求中的一个访问请求包括:基于优先级来优先响应来自优先级最高的执行环境的访问请求。以这种方式,可以基于不同访问请求之间的优先级来避免不同执行环境的访问请求同时访问密码引擎单元而带来的冲突,在保证微处理器的安全性的同时,提高了实用性。
在一些实施例中,多个访问请求包括第一访问请求和第二访问请求,第一访问请求来自于第一执行环境,第二访问请求来自于第二执行环境,第一执行环境的优先级高于第二执行环境,其中,响应多个访问请求中的一个访问请求包括:判断第一访问请求需要执行的密码算法是否完成执行;响应于第一访问请求的密码算法完成执行,响应第二访问请求,以通过密码引擎单元执行第二访问请求需要执行的密码算法。以这种方式,在得到第一访问请求的密码算法的密码运算结果后才响应第二访问请求,从而保证了数据的安全性。
在一些实施例中,多个访问请求包括第一访问请求和第二访问请求,第一访问请求来自于第一执行环境,第二访问请求来自于第二执行环境,第一执行环境的优先级低于第二执行环境,其中,响应多个访问请求中的一个访问请求包括:判断第一访问请求得到的中间密码运算结果是否完成存储;响应于中间密码运算结果存储完成,响应第二访问请求,以通过密码引擎单元执行第二访问请求需要执行的密码算法。以这种方式,首先,在得到第一访问请求的密码算法的中间密码运算结果后才响应第二访问请求,从而保证了数据的安全性。其次,第二访问请求可以不必等到第一密码算法执行完成,而是等到第一密码算法的中间密码运算结果已经被存储即可被响应,减少了第二访问请求的等待时间,提高了微处理器的性能。
在一些实施例中,数据处理方法还包括由控制单元执行以下操作:判断第二访问请求需要执行的密码算法是否完成执行;响应于第二访问请求的密码算法完成执行,指示密码引擎单元基于存储的中间密码运算结果继续执行第一访问请求的密码算法。以这种方式,生成的中间密码运算结果可以被存储且可以继续使用,从而避免了计算资源的浪费。
在一些实施例中,多个执行环境包括可信执行环境TEE、普通执行环境REE和安全子系统SE中的至少一个。以这种方式,本公开的实施例可以适用于多种执行环境,通过本申请描述的微处理器,可以有针对性的满足不同执行环境的访问请求。
在一些实施例中,微处理器还包括直接存储器访问DMA单元,数据处理方法还包括由控制单元执行以下操作:指示直接存储器访问DMA单元来传输执行密码算法所需的数据;或者指示直接存储器访问DMA单元来传输执行访问请求的密码算法的结果。以这种方式,既可以释放控制单元的运算能力,又可以提升数据传输的速度,并且还可以提高数据传输的安全性。
上述结合图8描述的数据处理方法及其附加方面可以至少应用于参考图2描述的微处理器200中,并且参照图2描述的实施例的技术效果可以映射到上述数据处理方法及其附加方面,在此不再赘述。当然,上述处理方法及其附加方面也可以部分或全部地应用于参照图1描述的微处理器100中或者参照图2至图5描述的微处理器300至500中。
虽然结合具体的附图描述了微处理器和数据处理方法,但是可以理解的是,这些微处理器和这些数据处理方法的各个方面可以被组合,并且可以相互适用。
图9示出了根据本公开的实施例的电子设备的示意图。
参考图9,电子设备900可以包括各种组件902、904。如图9所示,电子设备900可以包括一个或多个处理器902和一个或多个存储器904。可以设想,电子设备900可以根据需要而包含其他组件。
电子设备900可以装载并因此包括一个或多个应用。这些应用是指令集(例如,计算机程序代码),当被一个或多个处理器902读取时,这些指令集控制电子设备900的操作。为此,一个或多个存储器904可以包括可由一个或多个处理器902执行的指令/数据,由此电子设备900可执行根据本公开至少一实施例中所公开的方法。
图10示出了根据本公开的实施例的计算机可读存储介质的示意图。在该示例中计算机可读存储介质1000是数据盘的形式。然而实施例不限于此,计算机可读存储介质1000也可以是其他介质,诸如光盘、数字视频盘、闪存或其他常用的存储器技术。在一个实施例中,数据盘1000是磁性数据存储盘。数据盘1000被配置为携带指令1002,该指令1002可以被读取或加载到诸如图9所示的电子设备900的存储器904中。当电子设备900的处理器902执行该指令时,使得电子设备900执行根据本公开至少一实施例中所公开的方法。
图10示出了根据本公开的实施例的计算机可读存储介质的示意图。在该示例中计算机可读存储介质1000是数据盘的形式。然而实施例不限于此,计算机可读存储介质1000也可以是其他介质,诸如光盘、数字视频盘、闪存或其他常用的存储器技术。在一个实施例中,数据盘1000是磁性数据存储盘。数据盘1000被配置为携带指令1002,该指令1002可以被加载到诸如图9所示的电子设备900的存储器904中。当电子设备900的处理器902执行该指令时,使得电子设备900执行根据本公开至少一实施例中所公开的方法。
本公开的保护范围的示例性条款如下:
条款1A. 一种微处理器,包括:
密码引擎单元,被配置为执行密码算法;
控制单元,与所述密码引擎单元相连接,其中,所述控制单元被配置为:
接收来自第一执行环境的访问请求,所述访问请求要访问所述密码引擎单元来执行密码算法,所述访问请求至少包括标识信息,所述标识信息与所述第一执行环境相关,所述第一执行环境为N个执行环境中的一个执行环境,所述N为大于或等于1的整数;
基于所述标识信息,指示所述密码引擎单元执行所述访问请求需要执行的密码算法。
条款2A. 根据条款1A所述的微处理器,其中,所述微处理器还包括与控制单元相连接的多个缓存器单元,所述多个缓存器单元相互分离,所述多个缓存器单元中的第一缓存器单元与所述N个执行环境中的第一执行环境相对应,所述标识信息还用于标识所述第一执行环境对应的第一缓存器单元;所述控制单元具体被配置为:
基于所述标识信息,在所述第一执行环境对应的第一缓存器单元中获取所述访问请求所需的数据;
基于所述所需的数据,指示所述密码引擎单元执行所述访问请求需要执行的密码算法。
条款3A. 根据条款2A所述的微处理器,其中,所述访问请求还包括寄存器地址信息,所述寄存器地址信息用于指示所述第一缓存器单元中的寄存器的地址,所述寄存器用于寄存密码算法信息,所述密码算法信息包括对象数据的地址和所述对象数据的密码算法的属性信息,所述对象数据是所述密码算法所针对的数据;所述控制单元被配置为:
基于所述对象数据的地址,提取所述对象数据,并将所述对象数据存储在所述第一缓存器单元中的存储器中,其中所述对象数据的地址是通过所述寄存器地址信息确定的;
指示所述密码引擎单元基于所述密码算法的属性信息,来对所述对象数据执行所述访问请求需要执行的密码算法,其中所述密码算法的属性信息是通过所述寄存器地址信息确定的。
条款4A. 根据条款1A -3A中任一项所述微处理器,其中,所述标识信息是如下情况中的一种:
所述标识信息是所述第一执行环境的标识符;
所述标识信息是发出所述访问请求的源地址信息,其中所述源地址信息与所述第一执行环境对应;
所述标识信息是所述访问请求的标识符,其中所述访问请求的标识符与所述第一执行环境对应。
条款5A. 根据条款1A所述微处理器,其中,在N大于1的情况下,所述控制单元还被配置为:
接收多个访问请求,所述多个访问请求来自所述N个执行环境;
响应所述多个访问请求中的一个访问请求,并根据所述访问请求中携带的标识信息指示所述密码引擎单元执行密码算法。
条款6A.根据条款5A所述的微处理器,其中,所述控制单元存储有所述N个执行环境各自对应的优先级;所述控制单元被配置为:
基于所述优先级来优先响应来自优先级最高的执行环境的访问请求。
条款7A.根据条款5A所述的微处理器,其中,所述多个访问请求包括第一访问请求和第二访问请求,所述第一访问请求来自于第一执行环境,所述第二访问请求来自于第二执行环境,所述第一执行环境的优先级高于所述第二执行环境,所述控制单元被配置为:
判断所述第一访问请求需要执行的密码算法是否完成执行;
响应于所述第一访问请求的密码算法完成执行,响应所述第二访问请求,以通过所述密码引擎单元执行所述第二访问请求需要执行的密码算法。
条款8A. 根据条款5A所述的微处理器,其中,所述多个访问请求包括第一访问请求和第二访问请求,所述第一访问请求来自于第一执行环境,所述第二访问请求来自于第二执行环境,所述第一执行环境的优先级低于所述第二执行环境,所述控制单元被配置为:
判断所述第一访问请求得到的中间密码运算结果是否完成存储;
响应于所述中间密码运算结果存储完成,响应所述第二访问请求,以通过所述密码引擎单元执行所述第二访问请求需要执行的密码算法。
条款9A. 根据条款8A所述的微处理器,其中,所述控制单元还被配置为:
判断所述第二访问请求需要执行的密码算法是否完成执行;
响应于所述第二访问请求的密码算法完成执行,指示所述密码引擎单元基于存储的所述中间密码运算结果继续执行所述第一访问请求的密码算法。
条款10A. 根据前述条款1A -9A中任一项所述的微处理器,其中,所述N个执行环境包括可信执行环境TEE、普通执行环境REE、安全子系统SE中的至少一个。
条款11A. 根据前述条款1A -9A中任一项所述的微处理器,其中所述微处理器还包括直接存储器访问DMA单元,所述控制单元被配置为:
指示所述直接存储器访问DMA单元来传输执行所述密码算法所需的数据;或者
指示所述直接存储器访问DMA单元来传输执行所述访问请求的密码算法的结果。
条款12A. 一种数据处理方法,应用于微处理器,所述微处理器包括密码引擎单元和控制单元,所述数据处理方法包括由所述控制单元执行以下操作:
接收来自第一执行环境的访问请求,所述访问请求要访问所述密码引擎单元来执行密码算法,所述访问请求至少包括标识信息,所述标识信息与所述第一执行环境相关,所述第一执行环境为N个执行环境中的一个执行环境,所述N为大于或等于1的整数;
基于所述标识信息,指示所述密码引擎单元执行所述访问请求需要执行的密码算法。
条款13A. 根据条款12A所述的数据处理方法,其中,所述微处理器还包括与控制单元相连接的多个缓存器单元,所述多个缓存器单元相互分离,所述多个缓存器单元中的第一缓存器单元与所述N个执行环境中的第一执行环境相对应;所述标识信息还用于标识所述第一执行环境对应的第一缓存器单元;其中,所述基于所述标识信息,指示所述密码引擎单元执行所述访问请求需要执行的密码算法,包括:
基于所述标识信息,在所述第一执行环境对应的第一缓存器单元中获取所述访问请求所需的数据;
基于所述所需的数据,指示所述密码引擎单元执行所述访问请求需要执行的密码算法。
条款14A 根据条款13A所述的数据处理方法,其中,所述访问请求还包括寄存器地址信息,所述寄存器地址信息用于指示所述第一缓存器单元中的寄存器的地址,所述寄存器用于寄存密码算法信息,所述密码算法信息包括对象数据的地址和所述对象数据的密码算法的属性信息,所述对象数据是所述密码算法所针对的数据;其中,所述基于所述所需的数据,指示所述密码引擎单元执行所述访问请求需要执行的密码算法,包括:
基于所述对象数据的地址,提取所述对象数据,并将所述对象数据存储在所述第一缓存器单元中的存储器中,其中所述对象数据的地址是通过所述寄存器地址信息确定的;
指示所述密码引擎单元基于所述密码算法的属性信息,来对所述对象数据执行所述访问请求需要执行的密码算法,其中所述密码算法的属性信息是通过所述寄存器地址信息确定的。
条款15A. 根据条款12A -14A中任一项所述数据处理方法,其中,所述标识信息是如下情况中的一种:
所述标识信息是所述第一执行环境的标识符;
所述标识信息是发出所述访问请求的源地址信息,其中所述源地址信息与所述第一执行环境对应;
所述标识信息是所述访问请求的标识符,其中所述访问请求的标识符与所述第一执行环境对应。
条款16A. 根据条款12A所述的数据处理方法,其中,在N大于1的情况下,所述数据处理方法还包括由所述控制单元执行以下操作:
接收多个访问请求,所述多个访问请求来自所述N个执行环境;
响应所述多个访问请求中的一个访问请求,并根据所述访问请求中携带的标识信息指示所述密码引擎单元执行密码算法。
条款17A.根据条款16A所述的数据处理方法,其中,所述控制单元存储有所述N个执行环境各自对应的优先级,其中,所述响应所述多个访问请求中的一个访问请求包括:
基于所述优先级来优先响应来自优先级最高的执行环境的访问请求。
条款18A.根据条款16A所述的数据处理方法,其中,所述多个访问请求包括第一访问请求和第二访问请求,所述第一访问请求来自于第一执行环境,所述第二访问请求来自于第二执行环境,所述第一执行环境的优先级高于所述第二执行环境,其中,所述响应所述多个访问请求中的一个访问请求,包括:
判断所述第一访问请求需要执行的密码算法是否完成执行;
响应于所述第一访问请求的密码算法完成执行,响应所述第二访问请求,以通过所述密码引擎单元执行所述第二访问请求需要执行的密码算法。
条款19A. 根据条款16A所述的数据处理方法,其中,所述多个访问请求包括第一访问请求和第二访问请求,所述第一访问请求来自于第一执行环境,所述第二访问请求来自于第二执行环境,所述第一执行环境的优先级低于所述第二执行环境,其中,所述响应所述多个访问请求中的一个访问请求,包括:
判断所述第一访问请求得到的中间密码运算结果是否完成存储;
响应于所述中间密码运算结果存储完成,响应所述第二访问请求,以通过所述密码引擎单元执行所述第二访问请求需要执行的密码算法。
条款20A. 根据条款19A所述的数据处理方法,其中,所述数据处理方法还包括由所述控制单元执行以下操作:
判断所述第二访问请求需要执行的密码算法是否完成执行;
响应于所述第二访问请求的密码算法完成执行,指示所述密码引擎单元基于存储的所述中间密码运算结果继续执行所述第一访问请求的密码算法。
条款21A. 根据前述条款12A-20A中任一项所述的数据处理方法,其中,所述N个执行环境包括可信执行环境TEE和普通执行环境REE中的至少一个。
条款22A. 根据前述条款12A-20A中任一项所述的数据处理方法,其中,所述微处理器还包括直接存储器访问DMA单元,所述数据处理方法还包括由所述控制单元执行以下操作:
指示所述直接存储器访问DMA单元来传输执行所述密码算法所需的要被加密或解密的数据;或者
指示所述直接存储器访问DMA单元来传输执行所述访问请求的密码算法的结果。
条款23A.一种电子设备,包括:
存储器,用于存储指令;
处理器,用于读取所述存储器中的指令,并执行如条款12A-22A中任一项所述的数据处理方法。
条款24A.一种计算机可读存储介质,其上存储有指令,
其中,所述指令在被处理器执行时,使得所述处理器执行如条款12A-22A中任一项所述的数据处理方法。
条款1B. 一种微处理器,包括:
密码引擎单元,被配置为执行密码算法;
M个缓存器单元,所述M个缓存器单元被配置为缓存所对应的执行环境的访问请求所需的数据,所述M为大于或等于1的整数;
控制单元,连接于所述密码引擎单元和所述M个缓存器单元,并且
所述控制单元被配置为:
接收来自第一执行环境的访问请求,所述访问请求要访问所述密码引擎单元来执行密码算法;所述第一执行环境为N个执行环境中的一个执行环境,所述N为大于或等于1的整数;
基于所述访问请求,指示所述密码引擎单元利用所述第一执行环境对应的缓存器单元中缓存的所需的数据执行所述访问请求需要执行的密码算法。
条款2B. 根据条款1B所述的微处理器,其中,在M大于1的情况下,所述M个缓存器单元相互分离。
条款3B. 根据条款1B-2B中任一项所述的微处理器,其中,在M=N的情况下,所述M个缓存器单元与所述N个执行环境一一对应。
条款4B. 根据条款1B-2B中任一项所述的微处理器,其中,在N>1、M>1且N<M的情况下,所述M个缓存器单元中的N个缓存器单元与所述N个执行环境一一对应。
条款5B. 根据条款1B-2B中任一项所述的微处理器,其中,在N>1、M>1且N>M的情况下,所述N个执行环境中的一个或多个执行环境对应于所述M个缓存器单元中的一个缓存器单元。
条款6B. 根据条款5B所述的微处理器,其中,与一个缓存器单元对应的多个执行环境的优先级的差异度小于预设阈值。
条款7B. 根据条款1B-6B中任一项所述的微处理器,其中,所述N个执行环境包括可信执行环境TEE、普通执行环境REE和安全子系统SE中的至少一个。
条款8B. 根据条款1B-6B中任一项所述的微处理器,其中,所述微处理器还包括直接存储器访问DMA单元,所述控制单元还被配置为:
指示所述直接存储器访问DMA单元来传输执行所述密码算法所需的数据;或者
指示所述直接存储器访问DMA单元来传输执行所述访问请求的密码算法的结果。
条款9B. 一种数据处理方法,应用于微处理器,所述微处理器包括:
密码引擎单元,被配置为执行密码算法;
M个缓存器单元,所述M个缓存器单元被配置为缓存所对应的执行环境的访问请求所需的数据,所述M为大于或等于1的整数;
控制单元,连接于所述密码引擎单元和所述M个缓存器单元,并且
所述数据处理方法包括由所述控制单元执行以下操作:
接收来自第一执行环境的访问请求,所述访问请求要访问所述密码引擎单元来执行密码算法;所述第一执行环境为N个执行环境中的一个执行环境,所述N为大于或等于1的整数;
基于所述访问请求,指示所述密码引擎单元利用所述第一执行环境对应的缓存器单元中缓存的所需的数据执行所述访问请求需要执行的密码算法。
条款10B. 根据条款9B所述的数据处理方法,其中,在M大于1的情况下,所述M个缓存器单元相互分离。
条款11B. 根据条款9B-10B中任一项所述的数据处理方法,其中,在M=N的情况下,所述M个缓存器单元与所述N个执行环境一一对应。
条款12B. 根据条款9B-10B中任一项所述的数据处理方法,其中,在N>1、M>1且N<M的情况下,所述M个缓存器单元中的N个缓存器单元与所述N个执行环境一一对应。
条款13B. 根据条款9B-10B中任一项所述的数据处理方法,其中,在N>1、M>1且N>M的情况下,所述N个执行环境中的一个或多个执行环境对应于所述M个缓存器单元中的一个缓存器单元。
条款14B. 根据条款13B所述的数据处理方法,其中,与一个缓存器单元对应的多个执行环境的优先级的差异度小于预设阈值。
条款15B. 根据条款9B-14B中任一项所述的数据处理方法,其中,所述N个执行环境包括可信执行环境TEE、普通执行环境REE和安全子系统SE中的至少一个。
条款16B. 根据条款9B-14B中任一项所述的数据处理方法,其中,所述微处理器还包括直接存储器访问DMA单元,所述数据处理方法还包括由所述控制单元执行以下操作:
指示所述直接存储器访问DMA单元来传输执行所述密码算法所需的要被加密或解密的数据;或者
指示所述直接存储器访问DMA单元来传输执行所述访问请求的密码算法的结果。
条款17B.一种电子设备,包括:
存储器,用于存储指令;
处理器,用于读取所述存储器中的指令,并执行如条款9B-16B中任一项所述的数据处理方法。
条款18B.一种计算机可读存储介质,其上存储有指令,
其中,所述指令在被处理器读取时,使得所述处理器执行如条款9B-16B 中任一项所述的数据处理方法。
条款1C. 一种微处理器,包括:
密码引擎单元,被配置为执行密码算法;
控制单元,与所述密码引擎单元相连接,其中所述控制单元被配置为:
接收多个访问请求,所述多个访问请求分别来自多个执行环境;
响应所述多个访问请求中的一个访问请求,以指示所述密码引擎单元执行密码算法。
条款2C. 根据条款1C所述的微处理器,其中,所述控制单元存储有所述多个执行环境各自的优先级;所述控制单元具体被配置为:
基于所述优先级来优先响应来自优先级最高的执行环境的访问请求。
条款3C.根据条款1C所述的微处理器,其中,所述多个访问请求包括第一访问请求和第二访问请求,所述第一访问请求来自于第一执行环境,所述第二访问请求来自于第二执行环境,所述第一执行环境的优先级高于所述第二执行环境;所述控制单元被配置为:
判断所述第一访问请求需要执行的密码算法是否完成执行;
响应于所述第一访问请求的密码算法完成执行,响应所述第二访问请求,以通过所述密码引擎单元执行所述第二访问请求需要执行的密码算法。
条款4C. 根据条款1C所述的微处理器,其中,所述多个访问请求包括第一访问请求和第二访问请求,所述第一访问请求来自于第一执行环境,所述第二访问请求来自于第二执行环境,所述第一执行环境的优先级低于所述第二执行环境,所述控制单元被配置为:
判断所述第一访问请求得到的中间密码运算结果是否完成存储;
响应于所述中间密码运算结果存储完成,响应所述第二访问请求,以通过所述密码引擎单元执行所述第二访问请求需要执行的密码算法。
条款5C. 根据条款4C所述的微处理器,其中,所述控制单元还被配置为:
判断所述第二访问请求需要执行的密码算法是否完成执行;
响应于所述第二访问请求的密码算法完成执行,指示所述密码引擎单元基于存储的所述中间密码运算结果继续执行所述第一访问请求的密码算法。
条款6C. 根据前述条款1C-5C中任一项所述的微处理器,其中,所述多个执行环境包括可信执行环境TEE、普通执行环境REE和安全子系统SE中的至少一个。
条款7C. 根据前述条款1C-5C中任一项所述的微处理器,其中,所述微处理器还包括直接存储器访问DMA单元,所述控制单元被配置为:
指示所述直接存储器访问DMA单元来传输执行所述密码算法所需的数据;或者
指示所述直接存储器访问DMA单元来传输执行所述访问请求的密码算法的结果。
条款8C. 一种数据处理方法,应用于微处理器,所述微处理器包括:
密码引擎单元,被配置为执行密码算法;
控制单元,与所述密码引擎单元相连接,所述数据处理方法包括由所述控制单元执行以下操作:
接收多个访问请求,所述多个访问请求分别来自多个执行环境;
响应所述多个访问请求中的一个访问请求,以指示所述密码引擎单元执行密码算法。
条款9C. 根据条款8C所述的数据处理方法,其中,所述控制单元存储有所述多个执行环境各自的优先级,其中,所述响应所述多个访问请求中的一个访问请求包括:
基于所述优先级来优先响应来自优先级最高的执行环境的访问请求。
条款10C.根据条款8C所述的数据处理方法,其中,所述多个访问请求包括第一访问请求和第二访问请求,所述第一访问请求来自于第一执行环境,所述第二访问请求来自于第二执行环境,所述第一执行环境的优先级高于所述第二执行环境,其中,所述响应所述多个访问请求中的一个访问请求包括:
判断所述第一访问请求需要执行的密码算法是否完成执行;
响应于所述第一访问请求的密码算法完成执行,响应所述第二访问请求,以通过所述密码引擎单元执行所述第二访问请求需要执行的密码算法。
条款11C. 根据条款8C所述的数据处理方法,其中,所述多个访问请求包括第一访问请求和第二访问请求,所述第一访问请求来自于第一执行环境,所述第二访问请求来自于第二执行环境,所述第一执行环境的优先级低于所述第二执行环境,其中,所述响应所述多个访问请求中的一个访问请求包括:
判断所述第一访问请求得到的中间密码运算结果是否完成存储;
响应于所述中间密码运算结果存储完成,响应所述第二访问请求,以通过所述密码引擎单元执行所述第二访问请求需要执行的密码算法。
条款12C. 根据条款11C所述的数据处理方法,其中,所述数据处理方法还包括由所述控制单元执行以下操作:
判断所述第二访问请求需要执行的密码算法是否完成执行;
响应于所述第二访问请求的密码算法完成执行,指示所述密码引擎单元基于存储的所述中间密码运算结果继续执行所述第一访问请求的密码算法。
条款13C. 根据前述条款8C-12C中任一项所述的数据处理方法,其中,所述多个执行环境包括可信执行环境TEE、普通执行环境REE和安全子系统SE中的至少一个。
条款14C. 根据前述条款8C-12C中任一项所述的数据处理方法,其中,所述微处理器还包括直接存储器访问DMA单元,所述数据处理方法还包括由所述控制单元执行以下操作:
指示所述直接存储器访问DMA单元来传输执行所述密码算法所需的数据;或者
指示所述直接存储器访问DMA单元来传输执行所述访问请求的密码算法的结果。
条款15C.一种电子设备,包括:
存储器,用于存储指令;
处理器,用于读取所述存储器中的指令,并执行如权利要求8C-14C中任一项所述的数据处理方法。
条款16C.一种计算机可读存储介质,其上存储有指令,
其中,所述指令在被处理器读取时,使得所述处理器执行如条款8C-14C中任一项所述的数据处理方法。
在上文的详细描述中,出于解释而非限制的目的,阐述了具体细节,以便提供对本公开中描述的各个方面和实施例的透彻理解。在一些情况下,省略了对众所周知的设备、组件、电路和方法的详细描述,以免用不必要的细节来模糊本文公开的实施例的描述。本文列举本文公开的原理、方面和实施例的所有声明,以及其具体示例,旨在涵盖其结构等同物和功能等同物两者。另外,这种等同物旨在包括当前已知的等同物以及将来开发的等同物,即,开发的执行相同功能的任何元件,而不管结构如何。因此,例如,可以理解,本文的框图可以表示体现所描述的实施例的原理的说明性电路系统或其他功能单元的概念图。类似地,可以理解,任何流程图等表示各种过程,这些过程可以基本上在计算机可读存储介质中表示,并且由计算机或处理器执行,无论是否明确示出了这样的计算机或处理器。包括功能块的各种元件的功能可以通过使用硬件(诸如电路硬件和/或能够以存储在上述计算机可读存储介质上的编码指令的形式执行软件的硬件)来提供。因此,这样的功能和所示的功能块将被理解为是硬件实施的和/或计算机实施的,因此是机器实施的。就硬件实施方式而言,功能块可以包括或涵盖但不限于数字信号处理器(digital signal processor,DSP)硬件、精简指令集处理器、硬件(例如,数字或模拟)电路系统,包括但不限于(多个)专用集成电路(application specific integrated circuit,ASIC)和/或(多个)现场可编程门阵列(field programmable gate array,FPGA),以及(在适当的情况下)能够执行这些功能的状态机。就计算机实施方式而言,计算机通常被理解为包括一个或多个处理器或一个或多个控制器。当由计算机或处理器或控制器提供时,功能可以由单个专用计算机或处理器或控制器、单个共享计算机或处理器或控制器、或多个单独的计算机或处理器或控制器提供,其中一些可以是共享的或分布式的。此外,术语“处理器”、“控制器”、“控制逻辑”或“控制逻辑”的使用也可以被解释为指代能够执行这样的功能和/或执行软件的其他硬件,诸如上面列举的示例硬件。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,该模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框/操作中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框/操作实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框/操作、以及框图和/或流程图中的方框/操作的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本公开实施例的所描述的至少一项功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一个计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例的方法的全部或部分操作。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如第一、第二等的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且进一步包括没有明确列出的其他要素,或者是进一步包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所附权利要求及其等同物的保护范围为准。