集成电路外部存储器中写加密信息集合的方法和集成电路与流程

文档序号:17952842发布日期:2019-06-19 00:11阅读:492来源:国知局
集成电路外部存储器中写加密信息集合的方法和集成电路与流程

本申请要求于2017年12月11日提交的法国申请no.1761921的权益,该申请通过引用并入本文。

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



背景技术:

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

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

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



技术实现要素:

根据一个实施例,提供了满足这种鲁棒性需求同时提供低延迟的措施。

根据一个方面,因此提供了一种用于写入特别是在运行中的信息的方法,该信息例如是旨在由集成电路的处理单元(例如,微控制器)运行的程序代码,写入操作在集成电路外部的外部存储器中执行。

该方法包括,在开始写入信息的过程之前,在集成电路内例如但非限制地是随机地生成加密密钥。

该方法还包括在写入过程期间,针对旨在被写入存储器的地址处的每个信息项(例如,代码数据),使用密钥通过第一加密/解密电路(例如,执行aes类型的对称加密算法的电路)来在集成电路内加密该地址以获得加密分析的第一操作。

该方法还包括使用加密的地址使用第二加密/解密电路来在集成电路内加密信息项的第二操作、以及将加密的信息项写入该地址处的操作,存储器不能够在写入过程期间在同一地址处被写入两次。

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

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

在写入过程期间防止存储器在同一地址处被写入两次的一种特别简单的方法包括:在初始地址处写入第一信息项,然后在每个写入数据的操作之后递增地址。

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

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

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

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

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

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

根据另一方面,提供了一种用于处理特别是在运行中的信息集合的方法,例如,一种用于由集成电路的处理单元运行程序代码的方法,该信息集合(例如,程序代码的代码数据)已经根据如上定义的方法被写入集成电路外部的外部存储器中。

然后,针对存储在外部存储器的地址处并且旨在被加载到处理单元中的每个信息项,该处理方法包括使用密钥通过第一加密/解密电路来在集成电路内加密该地址以获得加密的地址的第一操作、读取在外部存储器中存储在该地址处的加密的信息项的操作、使用加密的地址使用第二加密/解密电路来在集成电路内解密加密的信息项的操作、以及将解密的数据加载到处理单元的寄存器中的操作。如果信息项是数据,则该寄存器可以是数据寄存器,或者如果信息项是程序代码的指令或代码数据,则该寄存器可以是指令寄存器。

根据另一方面,提供了一种设备,其包括包含处理单元的集成电路和在集成电路外部的外部存储器。该集成电路包括:用于接收信息集合(例如,程序代码)的信息输入,该信息集合旨在被写入外部存储器中以便稍后由处理单元处理,例如运行;被配置为生成加密密钥的生成电路;被配置为针对旨在被写入存储器中的每个信息项而生成存储器的地址并且在写入程序代码的过程中不生成同一地址两次的寻址电路;被配置为执行使用密钥来加密地址以获得加密的地址的第一操作的第一加密/解密电路;被配置为执行使用加密的地址来加密信息项的第二操作的第二加密/解密电路;以及被配置为在该地址处写入加密的信息项的写入电路。

根据一个实施例,在写入过程期间,寻址电路被配置为生成初始地址并且在写入信息项的每个操作之后递增地址。

根据一个实施例,寻址电路被配置为将该信息集合写入存储器的地址范围中,并且一旦在写入过程中已使用了该范围的所有地址,就防止任何新的寻址。

根据一个实施例,生成电路被配置为以随机方式生成加密密钥。

根据一个实施例,生成电路被配置为在每个新的写入过程之前生成新的加密密钥。

根据一个实施例,第二加密/解密电路包括异或运算器。

根据一个实施例,第二加密/解密电路包括被配置为根据加扰码来修改异或运算器的输入的加扰电路。

根据一个实施例,该设备进一步包括在集成电路内部的被配置为存储加密密钥的内部存储器(例如,受保护的存储器)。

根据一个实施例,当外部存储器包含信息项(例如,加密的代码数据)时,第一加密/解密电路被配置为从内部存储器中提取加密密钥并且使用加密密钥来加密要读取信息项的每个地址,该集成电路包括被配置为在外部存储器中在该地址处读取加密的信息项的读取电路,并且第二加密/解密电路被配置为利用加密的地址来对所读取的加密的信息项进行解密,并且向处理单元的指令寄存器传送解密的信息项。

附图说明

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

图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 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1