处理系统、集成电路和微控制器的制作方法

文档序号:19890308发布日期:2020-02-11 10:44阅读:179来源:国知局
处理系统、集成电路和微控制器的制作方法

本实用新型一般涉及处理系统,并且在特定实施例中涉及处理系统、集成电路和微控制器。



背景技术:

图1示出了典型的数字处理系统10,诸如嵌入式系统或集成电路,例如现场可编程门阵列(fpga)、数字信号处理器(dsp)或微控制器(例如,专用于汽车市场)。

在所考虑的示例中,处理系统10包括至少一个处理器102,诸如通过软件指令编程的通常是中央处理单元(cpu)的微处理器。通常,由处理器102执行的软件存储在程序存储器104中,诸如非易失性存储器、闪存存储器或eeprom。通常,存储器104可以与处理器102集成在单个集成电路中,或者存储器104可以是单独的集成电路的形式并且例如经由印刷电路板的迹线连接到处理器102。因此,通常存储器104包含用于处理器102的固件,其中术语固件包括微处理器的软件和如fpga的可编程逻辑电路的编程数据。

通常,处理器102和存储器104可以经由任何合适的通信系统(例如总线系统120)交换数据。

在所考虑的示例中,处理器102可以具有关联的一个或多个资源。

例如,在图1中示出了密码协处理器108,其可用于加密和/或解密数据。具体地,在所考虑的示例中,密码协处理器108包括密码处理电路112和寄存器接口110。具体地,密码处理电路112通常被布置为通过一个或多个密码密钥处理数据(诸如加密或解密数据)。因此,寄存器接口110可用于向密码处理电路112提供以下数据:一个或多个密码密钥;标识待处理的数据的数据,诸如直接待处理的数据或包含待处理的数据的存储器位置(例如,在易失性存储器114中)的地址。

其他可能的资源106可以包括以下项中的一项或多项:用于将内部或外部存储器104连接到总线系统120的通信接口106a;一个或多个其他通信接口106b,例如通用异步接收器/发送器(uart)、串行外围接口总线(spi)、内部集成电路(i2c)、控制器局域网(can)总线、以太网和/或调试接口;和/或一个或多个模数和/或数模转换器106c;和/或一个或多个专用模拟和/或数字硬件电路106d,例如:一个或多个专用数字组件,如硬件定时器和/或计数器;和/或一个或多个模拟组件,例如比较器、如温度传感器的传感器等;和/或一个或多个混合信号分量,例如pwm(脉宽调制)驱动器。

因此,数字处理系统10可以支持不同的功能。例如,处理器102的行为由存储在存储器104中的固件确定,例如,由处理器102执行的软件指令。因此,通过安装不同的固件,相同的硬件(微控制器)可以被用于不同的应用。

在许多应用中,确实使用两个固件:引导固件(所谓的引导加载程序)bl,其在处理系统的启动时运行并用于初始化/设置处理系统10;以及应用固件fw,一旦执行了引导固件,该应用固件就会运行。

例如,引导固件可以被用于配置各种资源106。

具体地,引导固件bl可以被用于向密码协处理器108提供一个或多个密码密钥,即,引导加载程序bl包括用于将一个或多个密码密钥存储到寄存器接口110的软件指令。相反,一旦启动应用固件fw,该固件fw就可以使用密码协处理器108来处理数据,即固件fw包括用于请求执行由密码协处理器108提供的一个或多个密码处理操作的一个或多个软件指令,密码协处理器108又使用已经存储到寄存器接口110的一个或多个密码密钥。因此,以这种方式,应用固件fw本身不包含一个或多个密码密钥。例如,这具有可以更新应用固件fw而不必在应用固件fw内包括一个或多个密码密钥的优势。

通常,寄存器接口110被配置为使得一个或多个密码密钥可以写入相应的寄存器位置,但是不可以读取相应的寄存器位置,即,寄存器接口110被配置为禁止应用固件fw对包含一个或多个密码密钥的位置的访问。因此,以这种方式,应用固件fw也不可以访问存储到寄存器接口110的一个或多个密码密钥。

因此,图1中所示的解决方案提供了有效的解决方案,使得保持对一个或多个密码密钥的保密,而应用固件fw不能访问一个或多个密码密钥。实际上,通常引导加载程序bl也存储在非易失性存储器104内的无法由应用固件fw访问的存储器位置中,即处理系统10被配置为禁止应用固件fw访问存储器104中的包含引导加载程序bl的存储器位置。



技术实现要素:

本公开的实施例涉及具有密码协处理器的处理系统,例如微控制器。

本发明人已经观察到,经由引导加载程序对一个或多个密码密钥的配置阶段与应用固件的这种严格分离也可能产生一些问题。例如,应用固件fw无法验证一个或多个密码密钥是否已被正确加载到寄存器接口110。

鉴于以上所述,本公开的各种实施例提供了用于验证/证实包括一个或多个密码密钥的安全配置的解决方案。

一个或多个实施例通过具有如下具体阐述的特征的处理系统来实现这一点。此外,实施例涉及相关的集成电路和微控制器。

如前所述,本说明书的各种实施例涉及处理系统。在各种实施例中,处理系统包括总线系统、连接到总线系统的处理单元和非易失性存储器,所述非易失性存储器被配置为存储将由处理单元执行的至少一个固件。

在各种实施例中,处理系统(例如集成电路)还包括连接到总线系统的协处理器,其中协处理器包括:寄存器接口,包括多个寄存器;以及处理电路,被配置为根据存储到所述多个寄存器中的数据执行至少一个处理操作。具体来说,所述多个寄存器包括:第一组寄存器,被配置为存储第一组配置信息;以及第二组寄存器,被配置为存储第二组配置信息。

例如,在各种实施例中,处理电路是密码处理电路,其被配置为根据至少一个密码密钥执行密码操作。在这种情况下,第一组寄存器可以被布置为存储至少一个密码密钥。相反,第二组寄存器可以包括:至少一个寄存器,用于存储待由密码处理电路处理的数据和/或至少一个寄存器,用于存储包含待由密码处理电路处理的数据的地址。

例如,在各种实施例中,协处理器已关联用于将(例如外部)存储器与总线系统对接的通信接口。在这种情况下,协处理器可以被配置为分析经由通信接口在存储器和总线系统之间交换的通信,以便检测对属于存储器的给定存储器区域的给定存储器位置的读取操作。具体地,在这种情况下,协处理器可以经由通信接口从存储器读取存储到给定存储器位置的数据,并利用存储在第一组寄存器中的密码密钥解密所读取的数据。例如,以这种方式,经加密的应用固件可以从存储器被读取、由协处理器解密并由处理单元执行。

在各种实施例中,第一组寄存器的配置由硬件或软件引导加载程序执行。在这种情况下,为了禁止访问第一组寄存器,寄存器接口可以被配置为根据锁定信号选择性地禁止对第一组寄存器的写入和/或读取访问。例如,锁定信号可以由硬件或软件引导加载程序设置。

因此,以这种方式,不能验证写入第一组寄存器的数据。类似地,当将错误的配置存储到第一组寄存器时,可能无法解密应用固件。

为了仍允许验证配置,在各种实施例中,寄存器接口被布置成根据至少写入第一组寄存器的数据来计算循环冗余校验值。

具体地,在各种实施例中,寄存器接口包括总线接口,该总线接口被配置为监视经由总线系统发送到寄存器接口的写入请求。具体地,写入请求包括目标地址和要写入的数据,其中多个寄存器中的每个寄存器与相应的地址相关联。因此,总线接口可以被配置为当写入请求的目标地址对应于与相应寄存器相关联的地址时,为多个寄存器中的每个寄存器设置相应的寄存器选择信号,其中每个寄存器被配置为当相应的寄存器选择信号被设置时存储待写入的数据。此外,寄存器接口包括循环冗余校验计算电路,其被配置为至少根据待写入第一组寄存器的数据来计算循环冗余校验值。因此,通过验证循环冗余校验值,可以验证存储到第一组寄存器的数据是否有效。

在各种实施例中,对循环冗余校验值的访问受到掩蔽(masking)电路的限制。具体地,在各种实施例中,掩蔽电路被配置为监视与第一组寄存器的寄存器相关联的寄存器选择信号,以便确定已经存储数据的寄存器的序列。接下来,掩蔽电路将寄存器序列与参考序列进行比较。当比较表明寄存器序列对应于参考序列时,掩蔽电路可以将计算的循环冗余校验值提供给总线接口。相反,当比较表明寄存器序列不对应于参考序列时,掩蔽电路可以禁止访问计算的循环冗余校验值并提供独立于计算的循环冗余校验值的值到总线接口,例如固定的默认值或随机值。

根据本申请的一个方面,提供一种处理系统,其特征在于,包括:非易失性存储器,被配置为存储由耦合到总线系统的处理器执行的固件;耦合到所述总线系统的协处理器,其中所述协处理器包括:寄存器接口,所述寄存器接口包括多个寄存器;以及处理电路,所述处理电路被配置为根据存储在所述多个寄存器中的数据执行处理操作,其中所述多个寄存器包括:第一组寄存器,被配置为存储第一组配置信息;以及第二组寄存器,被配置为存储第二组配置信息,其中,所述寄存器接口包括:总线接口,被配置为监视经由所述总线系统发送到所述寄存器接口的写入请求,其中所述写入请求包括目标地址和待写入的数据,其中所述多个寄存器中的每个寄存器与相应的地址相关联,其中所述总线接口被配置为当写入请求的目标地址对应于与相应的寄存器相关联的地址时,为所述多个寄存器中的每个寄存器设置相应的寄存器选择信号,其中每个寄存器被配置为当相应的所述寄存器选择信号被设置时存储所述待写入的数据;循环冗余校验计算电路,被配置为根据待写入到所述第一组寄存器的数据来计算循环冗余校验值;以及掩蔽电路,被配置为:监视与所述第一组寄存器的寄存器相关联的所述寄存器选择信号,以便确定已存储数据的寄存器序列;将所述寄存器序列与参考序列进行比较;当所述比较表明所述寄存器序列对应于所述参考序列时,将所计算的所述循环冗余校验值提供给所述总线接口;以及当所述比较表明所述寄存器序列不对应于所述参考序列时,将与所计算的所述循环冗余校验值无关的值提供给所述总线接口。

在一个实施例中,所述循环冗余校验计算电路包括:寄存器或锁存器,用于存储所计算的所述循环冗余校验值;xor门,被配置为通过组合待写入所述第一组寄存器的数据和存储在所述寄存器或所述锁存器中的所述循环冗余校验值来产生信号;以及组合逻辑电路,被配置为根据由所述xor门产生的所述信号来产生所计算的所述循环冗余校验值。

在一个实施例中,所述循环冗余校验计算电路包括用于根据所述寄存器选择信号来选择参考信号的多路复用器,并且其中所述xor门被配置为通过组合待写入所述第一组寄存器的数据、存储在所述寄存器或所述锁存器中的所述循环冗余校验值和所选择的所述参考信号来产生所述信号。

在一个实施例中,所述处理电路是密码处理电路,所述密码处理电路被配置为根据至少一个密码密钥执行密码操作,并且其中,所述第一组寄存器被配置为存储所述至少一个密码密钥。

在一个实施例中,所述非易失性存储器被布置为存储引导加载程序固件,所述引导加载程序固件被配置为将密码密钥存储到所述第一组寄存器。

在一个实施例中,所述第二组寄存器包括:用于存储待由所述密码处理电路处理的数据的寄存器;和/或用于存储包含待由所述密码处理电路处理的所述数据的地址的寄存器。

在一个实施例中,所述协处理器关联有用于将存储器与所述总线系统对接的通信接口,其中,所述协处理器被配置为:分析经由所述通信接口在所述存储器和所述总线系统之间交换的通信,以便检测对属于所述存储器的给定存储器区域的给定存储器位置的写入操作,以及利用存储在所述第一组寄存器中的密码密钥对与所述写入操作一起接收的数据进行加密,并经由所述通信接口将所加密的所述数据存储到所述给定存储器位置。

在一个实施例中,所述协处理器关联有用于将存储器与所述总线系统对接的通信接口,其中,所述协处理器被配置为:分析经由所述通信接口在所述存储器和所述总线系统之间交换的通信,以便检测对属于所述存储器的给定存储器区域的给定存储器位置的读取操作,经由所述通信接口从所述存储器读取存储在所述给定存储器位置的数据,并利用存储在所述第一组寄存器中的密码密钥来解密或加密所读取的数据。

在一个实施例中,所述存储器对应于所述非易失性存储器或另外的非易失性存储器,并且所述存储器区域对应于用于存储待由所述处理器执行的应用固件的存储器区域。

在一个实施例中,所述寄存器接口被配置为根据锁定信号选择性地禁止对所述第一组寄存器的写入和/或读取访问。

根据本申请的另一方面,提供一种集成电路,其特征在于,包括:寄存器接口,包括多个寄存器;总线接口,被配置为:监视发送到所述寄存器接口的写入请求,其中所述写入请求包括目标地址和待写入的数据,接收待写入所述多个寄存器的所述数据和寄存器选择信号,所述寄存器选择信号用于选择所述多个寄存器中的相应寄存器;监视电路,被配置为监视所述总线接口和所述多个寄存器之间的所述寄存器选择信号,以便确定待写入所述多个寄存器的所述数据何时有效。

在一个实施例中,所述监视电路被配置为:根据待写入的所述数据来计算循环冗余校验值,通过验证所述循环冗余校验值,确定待写入所述多个寄存器的所述数据何时有效,以及限制对所述循环冗余校验值的访问。

在一个实施例中,所述多个寄存器中的每个寄存器与相应的地址相关联,其中所述总线接口被配置为当所述写入请求的目标地址对应于与相应的寄存器相关联的地址时,为所述多个寄存器中的每个寄存器设置相应的寄存器选择信号,其中每个寄存器被配置为当相应的所述寄存器选择信号被设置时存储待写入的所述数据;以及其中所述监视电路被配置为:监视与所述多个寄存器相关联的所述寄存器选择信号,以便确定已经存储数据的寄存器序列;将所述寄存器序列与参考序列进行比较;当所述比较表明所述寄存器序列对应于所述参考序列时,将所计算的所述循环冗余校验值提供给所述总线接口;以及当所述比较表明所述寄存器序列不对应于所述参考序列时,将与所计算的所述循环冗余校验值无关的值提供给所述总线接口。

根据本申请的又一方面,提供一种微控制器,其特征在于,包括上述的集成电路。

本公开的各种实施例提供了用于验证/证实包括一个或多个密码密钥的安全配置的解决方案。

附图说明

现在将参考附图来描述本公开的实施例,附图仅仅是通过非限制性示例的方式提供,并且其中:

图1示出了电子处理系统的例子;

图2a至图2c示出了包括密码协处理器的电子处理系统的实施例,该密码协处理器包括寄存器接口和处理电路;

图3a和图3b示出了图2a至图2c的寄存器接口的实施例;

图4示出了图3a或图3b的寄存器接口的实施例;

图5a和图5b示出了图2a至图2c的寄存器接口的另外的实施例;以及

图6和图7示出了用于图5a或图5b的寄存器接口的crc计算电路的实施例。

具体实施方式

在以下描述中,给出了许多具体细节以提供对实施例的透彻理解。可以在没有一个或多个具体细节的情况下或者利用其他方法、组件、材料等来实现实施例。在其他情况下,未详细示出或描述公知的结构、材料或操作以避免模糊实施例的内容。

贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在至少一个实施例中。因此,贯穿本说明书在各个地方出现的用语“在一个实施例中”或“在实施例中”不一定都指的是同一实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。

这里提供的标题仅是为了方便,并不解释实施例的范围或含义。

在下面的图2至图7中,已经参考图1描述的部件、元件或组件由先前在这些图中使用的相同参考标记表示;在下文中将不再重复对这些先前描述的元件的描述,以免使本说明书不清楚。

如前面参考图1所述,典型的处理系统10a包括:处理器102,例如微处理器,例如基于stm32的微处理器;非易失性存储器104,被配置成存储处理器102的固件;以及密码协处理器108。

可选地,处理系统10还可以包括一个或多个其他资源106。因此,图1和图2的一般描述完全适用于根据本说明书的处理系统。

图2a示出了处理系统10a的第一实施例。在所考虑的实施例中,处理系统10a还包括易失性存储器,例如随机存取存储器(ram),用于存储处理器102和/或协处理器108的处理的临时结果。

在所考虑的实施例中,各种块102、104、106、108和114连接到包括一个或多个通信总线的总线系统120,例如高级微控制器总线架构(amba)或amba高性能总线(ahb)。例如,许多基于stm32的微控制器包括总线矩阵,例如ahb总线矩阵。具体地,在这种情况下,总线系统120包括多个通信总线,并且每个组件可以选择性地连接到这些通信总线中的一个或多个通信总线。例如,以这种方式可以实现并行通信,例如用于经由第一总线实现对存储器114的直接存储器访问(dma)而经由第二总线交换命令。

在所考虑的实施例中,密码协处理器108包括密码处理电路112和寄存器接口110a。具体地,在所考虑的实施例中,密码处理电路112被配置为通过一个或多个密码密钥处理数据,例如加密或解密数据。相反,寄存器接口110a被布置成向密码处理电路112提供以下数据:一个或多个密码密钥;标识待处理的数据的数据,例如直接待处理的数据或包含待处理的数据的存储器位置(例如,在易失性存储器114中)的地址。

在所考虑的实施例中,上述块经由总线系统120彼此连接,总线系统120包括一个或多个通信总线,例如一个或多个ahb总线。

如前所述,在各种实施例中,密码协处理器108包括:寄存器接口110,被配置为经由总线系统120接收配置数据并提供用于验证/证实配置的状态数据;以及硬件密码处理电路112,被配置成根据提供给寄存器接口110的配置数据来执行一个或多个相应的处理操作。

图2b示出了处理系统10a的第二实施例。具体地,在所考虑的实施例中,(内部或外部)存储器104经由通信接口106a连接到总线系统120。例如,接口106a可以被配置为将总线系统120的ahb通信转换为存储器104的外部存储器接口(emif)通信。

此外,图2b示出了密码协处理器108可以使用接口106a来访问存储器104。具体地,在所考虑的实施例中,寄存器接口110a可以被用于配置存储器104中可以包含加密数据的一个或多个存储器区域(例如,通过指定相应的开始和结束地址)。此外,当经由协处理器108对存储器104执行读取请求时,协处理器108可以分析通信。例如,这种读取请求可以经由总线系统120存储到协处理器108的寄存器接口110。具体地,当协处理器108检测到对不属于这些存储器区域之一的存储地址的读取访问时(例如,通过将相应地址与存储器区域的起始和结束地址进行比较),协处理器108可以经由通信接口106a转发读取请求到存储器104,并将从存储器104读取的数据返回到总线系统120。相反,当协处理器108检测到对属于这些存储器区域之一的存储地址的读取访问时(例如,通过将相应的地址与存储器区域的起始和结束地址进行比较),协处理器108可以经由接口106a转发读取请求到存储器104。然而,从存储器104读取的(加密)数据不直接传输到总线系统120,而是密码处理电路112被用于解密从存储器104读取的数据,并且将解密的数据返回到总线系统120。因此,一旦指定了一个或多个存储器区域,数据解密对处理器102是透明的。

类似地,协处理器108可以分析经由总线系统120和存储器104/104b之间的通信接口106a交换的通信,以便检测对属于存储器104/104b的给定存储器区域的给定存储器位置的写入操作。在这种情况下,协处理器108可以利用密码密钥对经由写入操作接收的数据进行加密,并经由通信接口106a将加密数据存储到给定的存储器位置。

例如,在意大利专利申请102018000003373中描述了这种解决方案,该专利申请通过引用结合在此。

图2c示出了也可以组合上述实施例。具体地,在所考虑的实施例中,根据图2a,第一存储器104a(例如,内部存储器)直接连接到总线系统120。此外,根据图2b,第二存储器104b(例如,外部存储器)经由协处理器108和接口106a连接到总线系统120。因此,以这种方式,存储器104b(或其至少给定的存储器区域)可以包含加密数据,并且接口106a与密码协处理器108一起可以被用于解密这些数据。

在图2a和图2b所示的实施例中,存储器104因此可以包括引导固件/引导加载程序bl和应用固件fw。例如,当使用单个(例如集成的)非易失性存储器104时,这可能是有用的。相反,在图2c所示的实施例中,处理系统10a可以被配置为将引导固件/引导加载程序bl存储在(例如内部)存储器104a中并将应用固件fw存储在(例如外部)存储器104b中。

具体地,同样在这种情况下,引导固件bl可以被用于向密码协处理器108提供一个或多个密码密钥,即引导加载程序bl包括用于将一个或多个密码密钥存储到寄存器接口110的软件指令。相反,一旦启动应用固件fw,该固件fw可以使用密码协处理器108来处理数据,即固件fw包括用于请求执行由协处理器108提供的一个或多个密码处理操作的一个或多个软件指令,协处理器108又使用已经存储到寄存器接口110的一个或多个密码密钥。因此,以这种方式,应用固件fw本身不包含一个或多个密码密钥。例如,这具有可以更新应用固件fw而不必在应用固件fw内包括一个或多个密码密钥的优势。

而且,在图2b和图2c所示的实施例中,应用固件本身也可以以加密的形式被存储。具体地,通过在寄存器接口110中配置被布置成存储应用固件fw的存储器区域(在存储器104或存储器104b中),协处理器108在经由接口106a从存储器104(图2b)或104b(图2c)读取固件fw的同时自动解密应用固件fw。因此,以这种方式,应用固件fw可以保持秘密,并且经认证的应用固件(用正确的密码密钥加密)可以由处理器102执行。例如,这对于图2c中所示的布置可能特别有用,其中存储器104b可以在包括处理系统10a的其他组件(102、104a、106、108、114、120)的集成电路外部,而它可以相当容易地拦截/修改接口106a和外部存储器104b之间的通信。

因此,接口106a被配置为将存储器104/104b与总线系统120对接。然而,在所考虑的实施例中,协处理器108的操作类似于传递到存储器104/104b的业务的嗅探器,可能拦截通信以便解密从存储器104/104b读取的数据。因此,通常,协处理器108还可以被用于对接其他资源而不仅仅是存储器。

图3a示出了协处理器108的寄存器接口110的可能实施例。

在所考虑的实施例中,寄存器接口110包括寄存器库1106,寄存器库1106包括多个寄存器reg0至regn。例如,每个寄存器reg0至regn可以包括给定数量的位,例如16、32或64位。

此外,在所考虑的实施例中,寄存器接口110包括总线接口1102,总线接口1102被配置为管理总线系统120和寄存器库1106之间的数据交换。

例如,如图3a中示意性所示,总线接口1102(例如ahb接口)可以包括第一电路1108,第一电路1108被配置为监视经由总线系统120发送到寄存器接口110的写入请求。响应于写入请求,第一电路1108可以将地址信号adr提供给地址解码器1104并将数据信号w_data提供给寄存器库1106。

例如,地址解码器1104可以被配置成根据地址信号adr为寄存器reg0至regn生成多个寄存器选择信号wr_reg0至wr_regn,为每个寄存器生成一个寄存器选择信号。例如,以这种方式,相应的地址可以与寄存器reg0至regn中的每一个寄存器相关联,并且当地址信号adr的值对应于与相应寄存器reg0至regn相关联的地址时,地址解码器1104可以设置相应的寄存器选择信号wr_reg0至wr_regn到给定的逻辑电平(通常为高)。

因此,当与给定寄存器reg0至regn相关联的寄存器选择信号wr_reg0至wr_regn被设置为给定逻辑电平(例如,高)时,相应的寄存器可以存储经由信号w_data提供的数据。因此,通常寄存器reg0至regn具有与数据信号w_data相同(或可能小于)的位数。

在各种实施例中,寄存器接口110还可以支持读取请求。具体地,响应于读取请求,第一电路1108可以再次将地址信号adr提供给地址解码器1104,因此当地址对应于与相应寄存器reg0至regn相关联的地址时,可以再次设置寄存器选择信号wr_reg0至wr_regn中的一个为给定的逻辑值。因此,在所考虑的实施例中,信号r_data被设置为寄存器选择信号wr_reg0至wr_regn具有给定的逻辑值的寄存器reg0至regn的内容。例如,多路复用器可用于此目的。本领域技术人员将理解,通常使用附加信号wr来发信号通知是否必须执行读取或写入操作。或者,单独的寄存器选择信号可被用于读取和写入操作,或每个寄存器选择信号wr_reg0至wr_regn可以包括两位。

在所考虑的实施例中,第一电路1108因此可以被配置为监视发送到寄存器接口110的读取请求,经由地址解码器1104生成寄存器选择信号wr_reg0至wr_regn之一,并提供经由寄存器选择信号wr_reg0至wr_regn选择的数据r_data到总线120。

通常,读取操作完全是可选的,并且寄存器接口110也可以仅支持写入操作或仅寄存器reg0至regn的子集可以支持读取操作。实际上,从安全的角度来看,对存储在寄存器reg0至regn中的安全相关配置数据的读取访问应该被禁止。

图3b示出了修改的实施例,其中寄存器库1106在输入处接收锁定信号lock。

具体地,在各种实施例中,寄存器reg0至regn包括至少两组寄存器:第一组寄存器,被配置为存储安全配置信息,包括一个或多个密码密钥;第二组寄存器,被配置为存储标识待处理的数据和(在密码处理器108支持多个操作的情况下)待执行的操作的数据。

因此,锁定信号lock可以被用于向寄存器接口110发信号通知是否允许对存储有安全配置信息(具体是密码密钥)的第一组寄存器进行写入和/或读取访问。

例如,在所考虑的实施例中,锁定信号lock包括单个全局锁定位,其禁止对第一组寄存器的所有寄存器的写入访问(以及如果支持则还包括读取访问)。然而,通常,锁定信号lock还可以包括多个位,用于:分别禁止单独的写入和读取访问,例如通过使用两个单独的位;和/或禁止单独访问第一组寄存器的寄存器的子集。

例如,在各种实施例中,第一组寄存器的每个寄存器可以与以下项相关联:用于禁止对相应寄存器的写入和读取访问二者的单个位;或分别用于禁止对相应寄存器的写入和读取访问的两个相应的位。

因此,在各种实施例中,寄存器接口110(例如,寄存器库1106)被配置为根据lock信号选择性地禁止读取和/或写入操作,从而限制对被配置为存储安全配置信息的寄存器的访问。

基于具体实现,可以以各种方式设置锁定信号lock,例如:通过使用寄存器库1106中的一个或多个寄存器reg0至regn中的一个或多个位,例如通过将相应的寄存器和相应的地址分配给锁定信号lock;通过将一个或多个锁定信号包括在经由总线系统120交换的通信的报头信息中。

如关于图2a至图2c所描述的,处理系统10a具体是处理器102可以被配置为支持两个固件:一旦处理系统10被接通就执行的引导加载程序固件bl;一旦引导加载程序固件bl的执行终止就执行的应用固件fw。

例如,为了执行应用固件,引导加载程序固件bl的最后指令可以是向对应于应用固件fw的第一地址的给定存储地址的跳转指令。

如前所述,在这种情况下,引导加载程序bl可以包括用于将一个或多个密码密钥存储到接口110的软件指令。此外,当使用图2b和图2c中所示的架构时,引导加载程序bl可以包括用于经由寄存器接口110配置可能包括加密数据的存储器范围的软件指令,例如用于存储加密的应用固件的存储器区域。

例如,图4示出了寄存器库1106的寄存器reg0至regn的组织的实施例。

具体地,在所考虑的实施例中,寄存器库1106包括多个寄存器,被配置为存储至少一个密码密钥key。

具体地,密码密钥通常具有128位或其倍数,例如256位、512位或1024位。相反地,典型处理器102是基于32位或64位的通信。因此,可以通过顺序地将密码密钥的位写入多个寄存器来存储每个密码密钥。优选地,寄存器具有顺序地址。

例如,在所考虑的实施例中,寄存器库1106至少包括:第一组寄存器key0_1至key0_m,用于存储第一密码密钥key0;和第二组寄存器key1_1至key1_m,用于存储第二密码密钥key1。通常,寄存器库1106还可以包括用于存储其他密码密钥的其他寄存器。

通常,密码密钥还可以关联其他安全配置数据,例如指定操作的配置数据,其可以利用给定的密码密钥来执行。例如,在所考虑的实施例中,这些配置数据存储在一个或多个寄存器key_cfg中。通常,这些配置数据也可以与密码密钥一起存储。

当使用图2b或图2c所示的架构时,寄存器库1106还可以包括一个或多个用于指定存储器区域mema的寄存器,当对属于相应存储器区域mema的存储器位置执行读取操作时应自动解密该存储器区域mema。例如,在所考虑的实施例中,寄存器库1106包括用于指定第一存储器起始地址的一个或多个寄存器start_1,并且包括用于指定第一存储器结束地址的一个或多个寄存器end_1,由此定义第一存储器区域mema_1。通常,寄存器库还可以包括用于指定另外的存储器区域的其他寄存器,并且标识给定存储器区域mema的一个或多个数据可以是硬连线的。在各种实施例中,每个存储器区域mema还可以关联有寄存器,用于存储密码密钥key0、key1等的索引以用于相应存储器区域mema的解密。

在所考虑的实施例中,寄存器库1106还包括一个或多个寄存器,用于存储标识待处理的数据的数据。

例如,在各种实施例中,寄存器库1106包括多个寄存器dat_1至dat_k,用于直接存储待由密码电路112处理的数据data。

备选地或附加地,寄存器库1106可以包括一个或多个寄存器dadr_1至dadr_1,用于存储例如在存储器114中的包含待处理的数据的存储器(起始)地址。通常,寄存器库1106还可以包括用于存储待处理的数据量的寄存器。

在所考虑的实施例中,存储到寄存器库1106的各种数据(即,密钥寄存器、数据寄存器和/或数据地址寄存器)被提供给密码处理电路112。

具体地,在所考虑的实施例中,密码处理电路112支持多个处理操作,例如数据加密和解密。通常,密码处理电路112还可以支持不同的模式,例如不同的链接模式,如电子密码本(ecb)、密码块链接(cbc)、计数器(ctr)等。根据实施例,寄存器库1106包括至少一个操作寄存器op,用于指定待执行的操作以及与待执行的操作相关联的可能的附加配置数据,诸如待使用的密码密钥的索引。

因此,在所考虑的实施例中,密钥寄存器key0_1至key0_m、key1_1至key1_m等、可选密钥配置寄存器key_cfg和可选存储器区域寄存器mema对应于被配置为存储安全配置信息的第一组寄存器set1。相反,操作寄存器op和数据寄存器dat_1至dat_k和/或数据地址寄存器dadr_1至dadr_1对应于第二组寄存器set2,其被配置为存储标识待处理的数据和待执行的处理操作的数据。

因此,在所考虑的实施例中,引导加载程序固件bl可被用于将一个或多个密码密钥存储到密钥寄存器key0_1至key0_m、key1_1至key1_m等。此外,引导加载程序固件bl可以设置锁定信号lock(参见图3b),以便禁止访问密钥寄存器key0_1至key0_m、key1_1至key1_m等的一个或多个密码密钥。一般来说,并非所有的密钥寄存器key0_1至key0_m、key1_1至key1_m等都必须被“锁定”,只有那些已经由引导加载程序bl编程的寄存器应被配置为禁止读取并且优选地还禁止写入访问。

因此,在各种实施例中,应用固件fw可以通过以下方式执行密码操作:a)经由数据寄存器dat_1至dat_k或地址寄存器dadr_1至dadr_l提供数据到密码处理电路112,和b)经由操作寄存器op请求执行给定的处理操作(例如数据加密或解密),可以在密钥寄存器key0_1至key0_m、key1_1至key1_m等中指定密码密钥的索引。

相反,在图2b和图2c所示的架构中,引导加载程序固件bl还可以配置存储器区域寄存器,以便用发信号通知应用固件fw以加密形式存储到给定的存储器区域。因此,当经由密码协处理器108读取应用固件fw时,密码处理电路112将确定相应的读取请求访问存储加密数据的存储器区域。

例如,处理器102可以通过将地址存储到寄存器接口110的地址寄存器dadr_1至dadr_l来向密码处理电路112提供读取操作的地址。因此,处理电路112可以分析存储到地址寄存器dadr_1至dadr_l的地址并判断该地址是否属于由存储器区域寄存器mema指定的存储器区域。

具体地,当地址不属于所述存储器区域之一时,密码处理电路112可以将读取请求转发到接口106a,从而从存储器104/104b读取相应的数据。此外,从存储器104/104b读取的数据经由总线系统120提供给处理器102。

相反,当地址属于所述存储器区域之一时,密码处理电路112可以再次将读请求转发到接口106a,从而从存储器104/104b读取相应的数据。然而,在这种情况下,密码处理电路112对从存储器104/104b读取的数据进行解密,并经由总线系统120将解密的数据提供给处理器102。

通常,存储器区域寄存器mema的使用完全是可选的,因为返回到对存储到地址寄存器dadr_1至dadr_l的地址的读取请求的所有数据都可以被解密。

然而,在上述实施例中,当发生一些故障时,例如加密数据不能被解密时,几乎不可能验证故障的起因。例如,由于应用固件fw未被授权访问引导加载程序固件bl和第一组寄存器set1(因为经由锁定信号lock不可能或禁止对第一组寄存器set1的读取访问),应用固件fw无法验证引导加载程序固件bl是否错误/损坏或者是否使用了错误的安全配置(如编程到该组寄存器set1),例如是否编程了错误的密码密钥。此外,在图2b和图2c所示的架构中,应用固件fw甚至可能根本不被解密,例如因为已经编程了错误的密码密钥或者缺少某些配置,例如存储器区域mema的配置。

图5a示出了寄存器接口110的实施例,其允许验证存储到第一组寄存器set1的安全配置是否正确。

具体地,在所考虑的实施例中,总线接口1102再次提供要写入寄存器库1106的数据w_data和用于选择寄存器库1106中相应的寄存器reg0至regn的寄存器选择信号wr_reg0至wr_regn。

图5a还示出了用于产生锁定信号lock的实施例。具体地,在所考虑的实施例中,总线接口1102被配置为提供写入和/或读取配置信号wr_cfg。例如,在各种实施例中,信号wr_cfg包括两个位sel_cfg(0)和sel_cfg(1),用于分别设置写入和读取配置。例如,信号wr_cfg可以根据总线120上的通信的报头数据或通过将给定地址与写入和/或读取配置信号wr_cfg相关联来生成。

在所考虑的实施例中,信号wr_cfg被提供给存储电路1110,存储电路1110被配置为根据信号wr_cfg产生锁定信号lock。

例如,在所考虑的实施例中,总线接口1102可以仅将数据写入寄存器库1106,但是总线接口1102不能从寄存器库1106读取数据。在这种情况下,锁定信号lock的单个位就足以锁定对第一组寄存器set1的寄存器的写入访问。

具体地,在所考虑的实施例中,信号wr_cfg和lock具有相同的位数。此外,在所考虑的实施例中,存储电路1110基本实现一次写入存储元件。

具体地,信号wr_cfg的每个位可以被设置为第一逻辑电平(通常为低)或第二逻辑电平(通常为高)。因此,一旦信号wr_cfg的给定位被设置为第二逻辑电平,即使当信号wr_cfg的位的值再次变为第一逻辑电平时,锁定信号lock的相应位也被设置并保持设置。例如,假设当位值为高时设置位,则可以将锁定信号lock的每个位和信号wr_cfg的对应位提供给or门1112。此外,or门1112的输出被提供给寄存器1114,寄存器1114存储由or门1112提供的值。因此,一旦设置了寄存器1114的给定位(对应于锁定信号lock的相应位),就独立于信号wr_cfg的相应位的值来保持该位的值。

在所考虑的实施例中,增加了另一个监视电路1116。具体地,监视电路1116被配置为监视总线接口1102和寄存器库1106之间的通信,并根据提供给寄存器库1106的数据w_data计算控制信号。具体地,在所考虑的实施例中,监视电路1116也为此监视寄存器选择信号wr_reg0至wr_regn以确定数据w_data何时有效。

例如,在各种实施例中,监视电路1116被配置为根据发送到寄存器库1106的数据w_data来连续地计算crc值。通常,监视电路1116可以被配置为不根据所有数据w_data计算crc,而是仅根据存储到属于第一组寄存器set1的寄存器或属于第一组寄存器set1的寄存器的子集的数据w_data来计算crc。

因此,在所考虑的实施例中,引导加载程序bl可以顺序地将一个或多个密码密钥的位存储到密钥寄存器key0_1至key0_m、key1_1至key1_m等,可以设置可选的其他安全配置数据key_cfg和/或存储器区域配置数据mema,并且例如通过设置信号wr_cfg来设置锁定信号lock。在将数据写入寄存器库1106时,具体是用于存储第一组配置数据set1的寄存器时,监视电路1116因此将至少根据密码密钥的位来计算crc值。如前所述,还可以针对配置数据key_cfg和/或mema来计算值crc。通常,不需要为寄存器组set1的所有寄存器顺序计算值crc,但是也可以仅针对寄存器组set1的寄存器的子集计算值crc,例如通过为寄存器key0_1至key0_m计算值crc并为寄存器key1_1到key1_m计算新值crc。

因此,引导加载程序固件和/或应用固件fw可以访问总线接口1102以便读取值crc并将值crc与期望值进行比较,以便确定是否已经向寄存器库1106提供了正确的安全配置。附加地或备选地,还可以经由处理系统10a的调试接口来读取值crc。

例如,在各种实施例中,crc值具有8位。然而,也可以执行更长的位序列和不同的计算,以便计算安全配置信息的位的值,例如哈希函数。然而,本发明人已经观察到crc值的位数不应太小以使得信号crc的内容不显著。类似地,crc值的位数不应太高,从而可能提供关于密码密钥值的信息。因此,具有8位到128位之间、优选地在8位到32位之间的信号crc可适用于大多数密码应用。

在各种实施例中,监视电路1116还可以限制经由总线接口1102对信号crc的访问,从而限制值crc的读回。

例如,在各种实施例中,当尚未设置锁定信号lock时,监视电路1116可以禁止信号crc的读取。实际上,如前所述,一旦已经将安全配置提供给寄存器接口112,引导加载程序bl就应该设置锁定信号lock。

附加地或备选地,监视电路1116可以监视寄存器选择信号wr_reg0至wr_regn,具体是与寄存器组set1的寄存器相关联的信号,以便确定密码密钥的比特是否已经以正确的顺序写入。实际上,如前所述,密码密钥通常具有比寄存器库中的寄存器更多的位,并且需要多个密钥寄存器以便存储每个密码密钥。类似地,寄存器库可以被配置为提供多个密码密钥(参见图4)。因此,监视电路1116可以确定密钥寄存器key0_1至key0_m、key1_1至key1_m等是否已按正确顺序被写入。例如,监视电路1116可以在密钥寄存器被无序写入时禁止信号crc的读取,例如因为寄存器key0_m已经在寄存器key0_1之前被写入和/或寄存器key1_1已经在寄存器key0_1之前被写入。

因此,在所考虑的实施例中,仅当通过对寄存器接口110访问的给定参考序列配置了密码密钥时,才可以读取值crc。相反,来自预期序列的密码密钥的不同写入序列保持值crc秘密。例如,在这种情况下,监视电路1116可以提供默认值,例如将所有位设置为“0”。

此外,通过使用具有有限位数的值crc,值crc不能被用于获取原始密码密钥,从而保证高安全性标准。

优选地,寄存器接口110被配置为根据例如具有单个位的锁定信号lock,禁止对寄存器的写入访问(并且如果支持,禁止读取访问),当该位被设置为“1”时禁止对第一组寄存器set1的寄存器的进一步写入访问。因此,可以禁止应用固件fw对密钥寄存器的附带写入操作。

图5b示出了一个实施例,其中处理系统10a包括篡改检测电路,其被配置为生成篡改信号tamp。

在这种情况下,监视电路1116和/或寄存器库1106可以被配置为禁止访问存储的数据和/或重置数据,例如可以重置寄存器库1106的寄存器并且可以响应于信号tamp来重置值crc。

图6示出了监视电路1116的实施例。

在所考虑的实施例中,监视电路1116包括循环冗余校验(crc)计算电路1120-1124和隐藏或掩蔽电路1126。

具体地,crc计算电路被配置为根据数据信号w_data和内部crc信号crc_int的先前值来计算内部crc信号crc_int。为此例如,在所考虑的实施例中,crc计算电路包括:一组xor门1120用于在输入处接收数据信号w_data和内部crc信号crc_int;组合逻辑电路1122,被配置为根据xor门1120的输出处的信号来计算crc值;以及寄存器1124,被配置为通过响应于时钟信号(未示出)存储由组合逻辑电路1122计算的crc值来提供内部crc信号crc_int。

因此,在所考虑的实施例中,根据前一时钟周期处的值crc_int的值和数据w_data来计算内部crc值crc_int。

在各种实施例中,xor门1120还可以接收(除了信号w_data和crc_int之外)参考值。例如,在图6所示的实施例中,监视电路1116包括在输入处接收多个参考信号ref0至refn的多路复用器,该多个参考信号的数量对应于由监视电路1116监视的寄存器选择信号wr_reg0至wr_regn的数量。

此外,在所考虑的实施例中,监视电路1116包括用于根据寄存器选择信号wr_reg0至wr_regn来选择这些参考信号ref0至refn之一的多路复用器,例如当寄存器选择信号wr_reg0被设置为高时的参考信号ref0等。

一般来说,参考信号ref0至refn可以被硬连线或存储在可由处理器102编程的寄存器中。

例如,当数据信号w_data和crc值crc_int具有不同的位数时,参考信号ref0至refn可能是有用的。例如,如前所述,数据信号w_data可以具有32位,而crc值crc_int可以仅具有8位。以这种方式,所选择的参考信号可以被用于至少部分地填充数据信号w_data或crc值crc_int的缺失位。例如,在各种实施例中,使用32个xor门1120,其可以在输入处接收:32位的数据信号w_data(31:0);和由所选参考信号refx和crc值crc_int组成的32位序列,例如:对于具有8位的参考信号,refx(7:0)&crc_int(7:0)&refx(7:0)&crc_int(7:0)。

因此,在这种情况下,组合逻辑电路1122可以在xor门1120(例如具有32位)的输出处组合信号,并确定具有crc值crc_int的位数的信号。例如,在各种实施例中,组合逻辑电路1122根据异步传输模式(atm)协议计算8位crc值。

隐藏或掩蔽电路1126被配置为选择性地将信号crc设置为内部信号crc_int。

因此,在所考虑的实施例中,由块1118、1120、1122和1124组成的crc计算电路根据数据信号w_data提供计算的内部crc值。然而,该值不直接提供给总线接口,而是隐藏或掩蔽电路被配置为选择性地将信号crc_int转发到总线接口或例如通过提供默认值来掩蔽信号crc_int。

具体地,在所考虑的实施例中,电路1126被配置为监视寄存器选择信号wr_reg0至wr_regn,特别是与第一组寄存器set1的寄存器相关联的寄存器选择信号,以便确定安全配置数据是否已经以正确的顺序被写入寄存器库1106。

例如,图7示出了掩蔽电路1126的实施例。

在所考虑的实施例中,电路1126示意性地包括由有限状态机(fsm)1128驱动的开关sw,以便选择性地将信号crc设置为信号crc_int。

在所考虑的实施例中,fsm1128被配置为监视寄存器选择信号wr_reg0至wr_regn以确定写入序列并将写入序列与参考序列ref_seq进行比较。例如,在各种实施例中,fsm1128被配置为:当第一组set1的寄存器(具体是用于存储密码密钥的寄存器)已经被写入有请求序列ref_seq时,经由开关sw将信号crc设置为信号crc_int。

例如,在实际实现中,开关sw可以用寄存器或锁存器实现,其被选择性地使能以存储值crc_int。因此,在这种情况下,给定地址可以与存储值crc的寄存器/锁存器相关联,并且可以通过对与存储值crc的寄存器/锁存器相关联的地址执行读取请求来读取值crc。例如,当使用缓冲写入通信时(例如,ambaaxi-3、4总线标准),该解决方案可能是合适的。在这种情况下,处理器102可以通过周期性地对与存储值crc的寄存器/锁存器相关联的地址执行读取请求来验证配置阶段的完成。

附加地或备选地,寄存器接口110可以在寄存器选择信号wr_reg0至wr_regn的序列对应于参考序列ref_seq时自动返回值crc。例如,当使用ahb总线120时,可以在响应于参考序列ref_seq中最后一个寄存器的写入请求而返回的分组的报头数据中返回值crc。

通常,参考序列ref_seq也可以被硬连线或存储在可由处理器102编程的寄存器中。例如,当使用硬连线的参考序列ref_seq时,电路1126可以用有限状态机实现,该有限状态机响应于寄存器选择信号wr_reg0至wr_regn而前进通过给定数量的状态。具体来说,如果寄存器选择信号wr_reg0至wr_regn以正确的序列被设置,则状态机按顺序通过状态序列演变。通常,在这种情况下,值crc可以对应于值crc_int,或者一旦已经写入完整的安全配置数据序列和/或已经设置了锁定信号lock,则值crc可以仅被设置为值crc_int。

相反,如果寄存器选择信号wr_reg0至wr_regn以不正确的序列被设置,则状态机可以执行到错误状态的转变,在所述错误状态中信号crc被设置为默认值。通常,默认值可以是独立于值crc_int的任何值。因此,默认值可以不必是固定值,例如将所有位设置为“0”,但是默认值也可以是随机值。

在所考虑的实施例中,因此可以通过将计算的crc值crc与预期/参考crc值进行比较来验证安全配置的正确性。例如,当crc值对应时,可以认为协处理器108的安全配置是正确的,并且可以在协处理器108外部例如在应用固件fw中找到可能的故障。

在各种实施例中,有限状态机1128还可以监视第一组寄存器set1的配置的数量,具体是使用不正确的序列ref_seq的配置的数量,其可以是强力尝试获取正确序列的指示符。例如,在各种实施例中,一旦fsm1128确定已经执行了给定的最大数量的错误配置,则有限状态机1128可以触发锁定,禁止进一步访问值crc_int和/或锁定寄存器库1106。类似地,有限状态机1128还可以监视第一组寄存器set1的使用正确序列ref_seq的配置的数量。例如,在各种实施例中,一旦fsm1128确定已经执行了给定的最大数量的正确配置,状态机1128就可以触发锁定,从而禁止进一步访问值crc_int和/或锁定寄存器库1106。因此,在所考虑的实施例中,可以通过重置处理系统10a来执行进一步的配置,从而重置临时存储的正确和/或错误配置的数量的值。通常,正确和/或不正确配置的数量也可以以永久方式被存储。

当然,在不损及本实用新型原理的情况下,实施例和构造的细节可以相对于这里纯粹作为示例描述和说明的内容而广泛变化,而不脱离如由随后的权利要求限定的本实用新型的范围。

例如,虽然前面的实施例涉及密码协处理器108的安全配置数据,但是前面描述的寄存器接口110也可以与其中必须保持第一组配置数据set1秘密的其他协处理器组合使用,同时应给出验证是否已将正确的配置数据存储到寄存器接口的可能性。

此外,在前面描述的实施例中,安全配置数据经由处理器102执行的引导加载程序固件被存储到第一组寄存器set1。然而,通常,第一组寄存器set1的配置也可以由专用硬件模块执行,该专用硬件模块例如直接从非易失性存储器104(图2a和图2b)或104a(图2c)读取相应的配置数据。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1