电子设备的制作方法

文档序号:18147651发布日期:2019-07-13 08:13阅读:415来源:国知局
电子设备的制作方法

本公开总体上涉及信息的加密和解密,并且在特定实施例中涉及用于在集成电路的外部存储器中写入加密信息集合(例如,程序代码)的设备和相应的集成电路。



背景技术:

将加密的程序代码存储在包含处理单元的集成电路外部的外部存储器中使得加密和存储过程更容易受到特别地尝试取回加密密钥的故障注入攻击的影响。

因此,需要使这种加密和存储过程在面对这种攻击时更加鲁棒。

此外,期望鲁棒性增加以与加密过程的低延迟兼容,尤其是当该过程在运行中(on the fly)被执行时。



技术实现要素:

根据本公开的实施例提供了满足这种鲁棒性需求同时提供低延迟的电子设备。

在一个方面,提供了一种电子设备,其包括集成电路和在所述集成电路外部的外部存储器,所述集成电路包括:处理单元;信息输入,用于接收要被写入所述外部存储器并且要由所述处理单元处理的信息集合;生成电路,被配置为生成加密密钥;寻址电路,被配置为针对旨在被写入所述外部存储器的每个信息项生成所述外部存储器的地址,并且在将所述信息集合写入所述外部存储器的过程中不生成同一地址两次;第一加密/解密电路,被配置为使用所述加密密钥来对所述地址执行第一加密以获得加密的地址;第二加密/解密电路,被配置为使用所述加密的地址对所述信息项执行第二加密以获得加密的信息项;以及写入电路,被配置为将所述加密的信息项写入所述外部存储器的所述地址处。

在写入过程期间,所述寻址电路被配置为生成初始地址,并且在将信息项写入到所述外部存储器的每个操作之后递增所述地址。

所述寻址电路被配置为将所述信息集合写入所述外部存储器的地址范围中,并且响应于确定所述地址范围的所有地址已经在写入过程中被使用而禁止任何新的寻址。

所述生成电路被配置为以随机方式生成所述加密密钥。

所述生成电路被配置为在每个新的写入过程之前生成新的加密密钥。

所述第二加密/解密电路包括异或运算器。

所述第二加密/解密电路包括被配置为根据加扰码来修改所述异或运算器的输入的加扰电路。

所述处理单元包括微控制器。

所述信息集合包括程序代码,所述程序代码包括代码数据并且旨在由所述处理单元运行。

所述集成电路进一步包括被配置为存储所述加密密钥的内部存储器。

响应于所述外部存储器包含加密的信息项,所述第一加密/解密电路被配置为从所述内部存储器中提取所述加密密钥并且使用所述加密密钥来加密要读取信息项的每个地址,其中所述集成电路进一步包括被配置为读取在所述外部存储器中的所述地址处的所述加密的信息项的读取电路,并且其中所述第二加密/解密电路被配置为利用所述加密的地址解密所读取的加密的信息项,并且向所述处理单元的寄存器传送所解密的代码数据。

通过在写入信息(例如,程序代码)的过程期间防止存储器在同一地址处被写入两次,可以防止恶意第三方修改写入过程以在同一地址处连续写入多个不同数据以获得加密密钥。

可以在运行中写入鲁棒地加密的信息集合(例如,程序代码),这种生成地址的操作被配置为使得存储器在写入过程期间不能在同一地址处被写入两次,以对写入过程的延迟影响很小或甚至没有影响。

在初始地址处写入第一信息项,然后在每个写入数据的操作之后递增地址。

以严格递增模式写入存储器仅是一个非限制性示例。

例如,完全可能提供存储所使用的连续地址的表和在当前地址处寻址存储器之前检查该地址是否已在表中的电路。

此外,当该信息集合(例如,程序代码)旨在被写入存储器的地址范围中时,特别有利的是,一旦在写入过程中使用了该范围的所有地址,则禁止使用刚才使用过的加密密钥在存储器中写入的任何新的操作。

除了可以有利地随机生成加密密钥的这一事实之外,优选的是,仍然为了增加写入该信息集合(例如,程序代码)稳健性,在每个新的写入过程之前(例如,当程序代码要被修改或更新时)生成新的加密密钥。

外部存储器可以是易失性存储器或非易失性存储器,例如闪存。

此外,有利的是,为了解密该信息集合(例如,存储器代码),将加密密钥存储在集成电路内部的内部存储器中,例如存储在受保护的存储器中。

根据本公开的实施例的电子设备在满足鲁棒性需求同时提供低延迟。

附图说明

通过研究完全非限制性实现模式和实施例的详细描述以及附图,本公开的其他优点和特征将变得很清楚,在附图中:

图1至图6示意性地示出了本公开的实现和实施例。

具体实施方式

在下文中,作为非限制性示例,假定旨在加密存储在外部存储器中的信息的集合是程序代码,尽管该信息也可以是数据。

在图1中,附图标记1表示包括集成电路10和在集成电路10外部的存储器11的设备。

存储器11旨在存储旨在由集成电路的处理单元100运行的加密程序代码110。该处理单元可以例如是微控制器,诸如由STMicroelectronics销售的系列的微控制器。

外部存储器11可以是随机存取存储器或只读存储器,例如闪存。

集成电路10包括用于接收要加密写入外部存储器11中的程序代码的代码输入107。

设备1还在集成电路10内包括被配置为生成加密密钥的生成电路101。该加密密钥RD可以在写入程序代码的过程开始时随机生成。在这种情况下,优选地,每当重复写入程序代码的过程时,例如在修改或更新程序代码时,有利地可以生成针对当前正在进行的写入过程有效的新的加密密钥。

这种生成电路101在结构上是常规的并且是在本领域中已知的结构。

集成电路10还包括寻址电路102,寻址电路102被配置为针对旨在写入存储器11中的每个代码数据而生成存储器的地址,并且在写入程序代码的过程中不生成同一地址两次。

下面将更详细地重新讨论寻址电路102的示例性结构。

集成电路10还包括第一加密/解密电路103,例如执行AES或DES类型的对称加密算法的电路,第一加密/解密电路103被配置为执行使用密钥来加密要写入代码数据的地址以获得加密地址的第一操作。

集成电路10还包括被配置为执行通过使用加密地址来加密代码数据的第二操作的第二加密/解密电路104。

如上所述,下面将详细描述这种第二加密/解密电路104的示例性结构。

集成电路10还包括被配置为将加密代码数据写入相应的地址的写入电路105,写入电路105在结构上是常规的并且本身是已知的。

在将程序代码加载到处理单元100的指令寄存器1000中的上下文中,集成电路10还包括被配置为读取包含在外部存储器11中的加密的程序代码数据110的读取电路106,读取电路106在结构上是常规的并且本身是已知的。

现在更具体地参考图2来描述用于在外部存储器11中加密和存储程序代码的方法的一种实现模式。

这里假定代码数据MCi(其可以是数字字)将在外部存储器中被存储在地址ADRi处。

在步骤S20中,生成电路101例如随机地生成加密密钥RD。

加密密钥RD可以有利地被存储(步骤S27)在集成电路10的内部存储器109(图1)中,例如受保护的只读存储器。

应当注意,该存储操作可以在将程序代码写入外部存储器11中的过程的开始、期间或结束时被执行。

在步骤S21中,第一加密/解密电路103使用加密密钥RD来加密地址ADRi以提供加密的地址ADRCi。

接下来,在步骤S22中,第二加密/解密电路104利用加密的地址ADRCi来加密代码数据MCi以提供加密的代码数据MCCi。

然后,写入电路105将加密的数据MCCi写入(步骤S23)存储器11中的地址ADRi。

针对下一地址重复上述过程,直到针对存储程序代码而提供的地址范围已经填满(步骤S24和S26)。

相反地,在已经到达在步骤S24中由针对索引i的值N表示的地址范围的结束的情况下,写入过程停止,并且使用刚才使用过的加密密钥RD在外部存储器11中写入的任何新的操作被禁止。

此外,在步骤S26中,从地址ADRi移动到下一地址ADRi+1,生成下一地址,使得存储器不能在同一地址写入两次。

如图3所示,执行该功能的一种特别简单的方法包括使用硬件计数器用于寻址电路102的结构,使得地址ADRi+1等于例如地址ADRi递增1(步骤S30)。一旦计数器已达到与地址范围的结束相对应的其计数值,处理单元就防止在外部存储器中写入的任何新的操作。

因此,如果恶意第三方尝试使用上述加密过程在存储器中的同一地址处连续地存储多个数据,则恶意第三方将不成功,因为不可能在同一地址处写入两个连续的数据项,如上所述。

因此,恶意第三方尝试获得加密密钥将更加困难或甚至不可能。

现在参考图4来描述用于运行存储在外部存储器11中的程序代码的方法。

更具体地,针对存储在存储器11中的地址ADRi处的加密的代码数据MCCi,读取电路在步骤S40中提取该数据。

此外,第一加密电路103使用在步骤S41中从受保护存储器109中提取的加密密钥RD来加密地址ADRi。

然后获得加密的地址ADRCi,解密电路104使用该加密的地址ADRCi来在S43处对加密的代码数据MCCi进行解密,以便传送未加密的代码数据MCi。

然后,由第二加密/解密电路104向处理单元的指令寄存器1000直接传送该代码数据(步骤S44)。

如图5所示,第二加密/解密电路104可以包括异或运算器1040,其接收每个代码数据MCi(或每个加密的代码数据MCCi)的比特和相应的加密的地址ADRCi的比特作为输入,以传送加密的代码字MCCi(或未加密的代码字MCi)。

作为变型,如图6所示,第二加密/解密电路104可以包括加扰电路1041,其被配置为根据加扰码CDS来修改异或运算器1040的输入。

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