掌桥专利:专业的专利平台
掌桥专利
首页

具有电子设备安全启动的访问控制电路的非易失性存储器

文献发布时间:2024-04-18 19:58:21


具有电子设备安全启动的访问控制电路的非易失性存储器

相关申请的交叉引用

本申请要求于2022年5月27日提交的法国申请号2205096的优先权,该申请通过引用结合于此。

技术领域

本公开涉及用于电子电路的安全的方法和设备,特别是能够实现这种电路的安全启动的设备和方法。

背景技术

电子设备的启动(booting)基于诸如软件和/或固件代码的代码的执行。设备的启动顺序是一个重要步骤,必须只使用真实的代码和/或软件。

希望防止设备的攻击者将恶意代码和/或软件引入设备,并在启动顺序期间执行它们。然而,现有的解决方案在这方面往往效率低下。

发明内容

实施例提供了启动过程的安全性的改进,更具体地,提供了针对旨在执行恶意启动代码的攻击的保护的改进。

一个实施例克服了已知处理设备的全部或部分缺点。

一个实施例提供了一种启动电子设备的方法,包括:

-第一阶段,在该第一阶段期间,执行存储在非易失性存储器的第一不可变区域中的一个或多个第一代码,所述非易失性存储器还包括访问控制电路,所述访问控制电路被配置为在所述第一阶段期间禁止执行存储在所述非易失性存储器的第二区域中的任何代码;以及-第二阶段,在该第二阶段期间执行存储在所述第二区域中的一个或多个第二代码,所述访问控制电路被配置为在所述第二阶段期间禁止整体上对所述第一区域的任何访问。

根据一个实施例,第一区域和第二区域由包含在非易失性寄存器中的一个或多个地址定义。

根据一个实施例,通过将参考值存储到设备的易失性寄存器中来触发从第一阶段到第二阶段的转变。

根据一个实施例,访问控制电路还被配置为读取易失性寄存器的内容,并基于参考值禁止整体上对第一区域的任何访问,以及基于不同于参考值的值禁止执行存储在第二区域中的任何代码。

根据一个实施例,访问控制电路还被配置为在第一阶段期间授权从非易失性存储器区域的第二区域读取以及写入非易失性存储器区的第二区域。

根据一个实施例,将参考值存储到设备的易失性寄存器中是由存储在非易失性存储器中的第三代码的执行引起的。

根据一个实施例,第三代码存储在非易失性存储器的第一区域中。

根据一个实施例,第三代码存储在非易失性存储器的第三区域中。

根据一个实施例,用于控制对非易失性存储器的访问的电路被配置为授权对包含在第三区域中的代码的读取和执行的访问,并且在第一阶段期间和第二阶段期间总是禁止对写入第三区域的访问。

根据一个实施例,存储在第一区域中的第一代码是设备的启动代码。

根据一个实施例,存储在第二区域中的第二代码是应用代码。

一个实施例提供了一种包括访问控制电路的电子设备的非易失性存储器,所述访问控制电路被配置为:

-在执行存储在所述非易失性存储器的第一区域中的一个或多个第一代码的第一阶段期间,禁止执行存储在所述非易失性存储器的第二区域中的任何代码;以及

-在执行存储在第二区域中的一个或多个第二代码的第二阶段期间,禁止整体上对第一区域的任何访问。

根据一个实施例,上述存储器包括非易失性寄存器,第一区域和第二区域由包含在非易失性寄存器中的一个或多个地址定义。

一个实施例提供了一种电子设备,包括上述非易失性存储器和易失性寄存器,其中通过将参考值存储到易失性寄存器中来触发从第一阶段到第二阶段的转变。

根据一个实施例,访问控制电路还被配置为读取易失性寄存器的内容,并基于参考值禁止整体上对第一区域的任何访问,以及基于不同于参考值的值禁止执行存储在第二区域中的任何代码。

附图说明

上述特征和优点以及其他特征和优点将在参考附图以说明而非限制的方式给出的具体实施例的公开的其余部分中详细描述,其中:

图1示意性地示出了根据本公开的实施例的以块的形式的电子设备;

图2示出了根据本公开的实施例的在图1的设备的启动期间和之后可访问的存储器区域;

图3示出了根据本公开的另一个实施例的在图1的设备的启动期间和之后可访问的存储器区域;以及

图4是示出根据本公开的实施例的示例的电子设备的安全启动方法的操作的流程图。

具体实施方式

在各种附图中,相同的特征已经由相同的参考标记来指定。具体地,在各种实施例中共同的结构和/或功能特征可以具有相同的参考,并且可以设置相同的结构、尺寸和材料属性。

为了清楚起见,仅详细地说明和描述了对理解这里描述的实施例有用的步骤和元件。具体地,处理设备的设计是本领域技术人员公知的,并且在下面的描述中没有详细描述某些元件。

除非另有说明,当提到连接在一起的两个元件时,这表示没有除导体之外的任何中间元件的直接连接,并且当提到连接在一起的两个元件时,这表示这两个元件可以连接或者它们可以经由一个或多个其他元件连接。

在下面的公开中,除非另有说明,当提到绝对位置限定词时,例如术语“前”、“后”、“上”、“下”、“左”、“右”等。或者相对位置限定词,例如术语“上部”、“下部”、“向上”、“向下”等。或者方向限定词,例如“水平”、“垂直”等。参考附图中所示的方向。

除非另有说明,表述“大约”、“近似”、“基本上”和“按顺序”表示在10%以内,优选在5%以内。

图1非常示意性地示出了根据本公开的实施例的以块的形式的包括处理设备102的电子设备100。

电子设备100是例如电子板,例如微电路卡、计算机设备、微处理器电路等。

例如处理设备102包括非易失性存储器104(NV MEM),例如闪存。非易失性存储器104经由总线106耦合到通用处理器108(CPU)和易失性存储器110(RAM)。通用处理器108包括程序计数器114(PC),例如,程序计数器114(PC)包含由通用处理器108执行的指令的存储器地址或要执行的下一条指令的存储器地址。计数器的内容在指令执行时递增,并且根据程序计数器114的值,指令由通用处理器108顺序地执行。

处理设备102还包括寄存器112(寄存器)。

非易失性存储器104包括具有多个代码(例如启动代码)和/或存储在其中的数据的第一区域116(区域1),以及具有多个其他代码(例如应用代码)和/或存储在其中的其他数据的第二区域118(区域2)。包含在区域116和118中的代码的执行由程序计数器114协调。例如,区域116的内容是不可变的。在某些实施例中,非易失性存储器104还包括非易失性寄存器119(NV寄存器)。

在所描述的实施例中,对区域116和118的访问由访问控制电路120(访问控制)来调节。访问控制电路120被配置为在第一阶段期间禁止执行存储在第二区域118中的任何代码,该第一阶段是例如设备100的启动阶段。例如设备100的启动阶段包括执行存储在存储区域116中的代码中的一个或多个代码。例如,在对非易失性存储器104的请求期间,在访问用于执行的代码的第一阶段期间,访问控制电路120被配置为确定代码的地址是否形成第二区域118的一部分,并且如果是,则禁止对该代码的访问。例如,访问控制电路120被配置为将代码的地址与限定区域116、118之间边界的阈值地址进行比较。如果代码的地址低于阈值地址,则代码在区域116中,并且由访问控制电路120授权执行。如果该代码的地址大于阈值地址,则该代码在区域118中,并且该代码的执行被访问控制电路120拒绝。例如,阈值地址是区域116的最后一个地址,如果代码的地址等于阈值地址,则访问授权。在另一个示例中,阈值地址是区域118的第一地址,并且如果代码的地址等于阈值地址,则禁止访问。

在所描述的实施例中,访问控制电路120还被配置为在第二阶段期间禁止整体上对第一区域116的访问,该第二阶段例如是设备100的应用阶段。例如应用阶段包括执行存储在区域118中的代码中的一个或多个代码。例如,在对非易失性存储器104的请求期间以及在访问用于执行的代码的第二阶段期间,访问控制电路120被配置为确定代码的地址是否形成第一区域116的一部分,并且如果是,则禁止对该代码的访问。例如,访问控制电路120被配置为将代码的地址与上述相同的阈值地址进行比较。如果代码的地址低于阈值地址,则代码在区域116中,并且访问被访问控制电路120禁止。如果代码的地址大于阈值地址,则代码在区域118中,并且访问由访问控制电路120授权。例如,阈值地址是区域116的最后一个地址,如果代码的地址等于阈值地址,则禁止对代码的访问。在另一个示例中,阈值地址是区域118的第一地址,并且如果代码的地址等于阈值地址,则访问被授权。

根据一个实施例,访问控制电路120对区域116和118的访问的授权和/或拒绝由寄存器112中包含的值来调节。例如,访问控制电路120耦合到寄存器112,以读取存储在该寄存器中的值。寄存器112例如以易失性方式实现。

作为示例,当参考值存储在寄存器112中时,访问控制电路120被配置为禁止对区域116的任何访问。例如,当寄存器112为空或包含与参考值不同的值时,访问控制电路120被配置为授权执行存储在区域116中的代码以及写入和读取区域118,并禁止执行存储在区域118中的任何代码。

在某些情况下,由访问控制电路120用来区分形成第一区域116和第二区域118的一部分的地址的阈值地址是硬编码的值,因此在设备100的寿命期间不能修改该值。在其他示例中,阈值地址非易失性地存储在非易失性存储器104中,但是它是可配置的。例如,访问控制电路120进一步耦合到非易失性寄存器119,并且例如非易失性寄存器119包含能够定义区域116和118之间的边界的值。

图2示出了在设备100的启动阶段和应用阶段期间可访问的存储器区域。

图2中表示为空的区域是由访问控制电路120授权其访问以执行的存储器区域,而表示为满的区域是由访问控制电路120禁止其访问以执行的存储器区域。此外,图2中所示的箭头200示出了程序计数器114的内容的进展。图2所示的程序计数器114的值的进展不一定反映代码存储在非易失性存储器104中的存储器地址的物理顺序。实际上,根据程序计数器114的顺序一个接一个执行的两个指令不一定存储在非易失性存储器104的两个相邻存储器地址上,尽管为了清楚起见,这种情况在图2中示出。

在图2的左侧示出了当电子设备100处于启动阶段时非易失性存储器104的状态,并且更具体地示出了两个存储器区域116和118的状态。

在启动阶段,在寄存器112中默认不存储任何值或与参考值不同的值。然后访问控制电路120被配置为授权对区域116的访问。更具体地,访问控制电路120授权用于读取和执行存储在区域116中的数据和/或代码的访问。例如,写入区域116被访问控制电路120禁止。

例如,处理器108通过总线106控制存储在区域116中的代码的执行。然后将代码的存储器地址发送到访问控制电路120。由于参考值没有存储在寄存器112中,访问控制电路120授权访问以执行区116的代码。

例如,写入区域118的指令,例如,写入新的应用代码的指令,由程序计数器114协调。根据一个实施例,访问控制电路120被配置为当参考值未存储在寄存器112中时,授权向区域118的写入和从区域118的读取。换句话说,当设备100处于启动阶段时。然后由访问控制电路120授权新应用代码的写入。然而,访问控制电路120被配置为当参考值没有存储在寄存器112中时,禁止执行存储在区域118中的代码,并相应地禁止执行新应用代码。

当然,在另一个实施例中,当寄存器112为空或包含不同于参考值的值时,进一步禁止从区域118读取和/或写入区域118是可能的。当寄存器112为空或包含与参考值不同的值时,允许从区域118读取的优点在于,这使得区域116的代码能够在执行区域116的代码时读取和认证存储在区域118中的代码。

在寄存器112中的参考值的存储,以及相应地从启动阶段到应用阶段的转变,例如在执行存储在区域116中的存储指令期间执行。例如,存储指令对应于启动代码的最后一个指令,并在程序计数器114相对于启动阶段增加到最后一个值时被执行。启动代码的最后一个指令是例如位于区域116最末端。

在另一个示例中,在区域116、118之间的边界由寄存器119中的值定义的情况下,代码中没有存储指令,取而代之的是,在访问由寄存器119中包含的值定义的区域116的最后一个地址期间,例如控制电路120触发将参考值存储到寄存器112中。例如,存储在寄存器119中的阈值地址是区域116的最后一个地址,并且如果请求执行的代码的地址等于阈值地址,则访问控制电路120被配置为将参考值存储到寄存器112中。

在图2的右侧示出了在设备100的应用阶段期间非易失性存储器104的状态,具体是区域116和118的状态。参考值被存储在寄存器112中,访问控制电路120被配置为禁止整体上对区域116的任何访问,并且禁止对区域118的读取、写入和执行的访问。

当然,在另一个实施例中,在应用阶段期间仅授权对区域118的访问以执行是可能的。

图3类似于图2,但是示出了根据另一实施例的设备100在启动阶段和应用阶段期间可访问的存储器区域。

在图3所示的实施例中,非易失性存储器104还包括网关区域300,该网关区域300具有存储到其中的指令,该指令将参考值存储在寄存器112中。然后,访问控制电路120被配置为总是,即,无论寄存器112中包含的值是什么,授权对网关区域300的读取和执行的访问,并且总是禁止对其的写入访问。网关区域300的实现使得当寄存器112被更新时,例如,当参考值被存储到寄存器112中时,能够避免处理器108被阻塞。

例如,寄存器119包含形成实现网关区域的地址范围的地址。例如,寄存器119包含定义区域116和网关区域300之间边界的第一阈值地址和定义网关区域300和区域118之间边界的第二阈值地址。然后,寄存器119能够设置每个区域116、118和网关区域130的大小。

图4是示出根据本公开的实施例的示例的电子设备100的安全启动方法的操作的流程图。

在步骤401(复位)中,设备401被第一次开启或被复位,并且设备100进入启动阶段。程序计数器114被初始化为初始值,例如,零。默认情况下,寄存器112中不存储任何值或存储与参考值不同的值。例如,参考值在制造设备100时预先确定,并存储在非易失性存储器104或设备100的另一非易失性存储器中。然后,访问控制电路120被配置为授权读取和执行存储在非易失性存储器104的区域116中的代码,并禁止执行存储在区域118中的任何代码。

当非易失性存储器104进一步包括网关区域300时,访问控制电路120被配置为一旦实现步骤401就授权读取和执行存储在区域300中的数据和/或代码。例如,在网关区域300由存储在寄存器119中的值定义的情况下,访问控制电路120被配置为总是授权读取和执行存储在寄存器119中包含的两个阈值地址之间的数据和/或代码。

在步骤402(启动阶段),通用处理器108根据程序计数器114的递增顺序地执行存储在区域116中的启动代码。例如,如果攻击者成功地将程序计数器114的值修改为对应于存储在存储区域118中的指令的存储地址的值,访问控制电路120将不允许访问存储区域118执行该代码。

例如,当执行区域116的最后一个指令时,步骤402结束。在某些情况下,最后一个指令是存储指令。在示例中,存储指令位于区域116的末端,使得在存储执行之后,程序计数器114的值对应于区域118的指令。在另一个示例中,存储指令位于网关区域300中,并且在这种情况下,访问控制电路120将用于读取和执行的访问留给区域116直到存储指令的执行。在另一个示例中,不存在存储指令,并且访问控制电路120被配置为在请求访问区域116的最后一个地址或访问网关区域300中由寄存器119中包含的一个或多个值定义的地址期间,将参考值存储到寄存器112中。

在步骤403(切换代码的执行),在步骤402之后,参考值被存储在寄存器112中。参考值的存储或者由处理器108执行存储指令引起,或者由访问区域116的最后一个地址的请求引起,或者由访问网关区域300中的地址引起。在从寄存器112读取参考值之后,访问控制电路120被配置为禁止整体上对区域116的任何访问,并授权执行包含在区域118中的代码。

例如,当存储器进一步包括网关区域300时,访问控制电路120被配置为授权读取和执行该区域,即使参考值被存储在寄存器112中。此外,网关区域300例如是不可变的,无论设备100的阶段如何。换句话说,无论参考值是否存储在寄存器112中,访问控制电路120被配置为禁止向网关区域300写入。

在步骤403之后的步骤404(应用阶段),设备100进入应用阶段,并且例如存储在区域118中的代码,例如应用代码由处理器执行。例如,如果在错误或攻击之后,程序计数器114的值被修改以协调存储在区域116中的启动代码的执行,则访问控制电路120将禁止该操作。

尽管图4示出了区域116包含启动代码并且区域118包含应用代码的示例,但是当两个区域116和118包含启动代码时,可以实现本公开的实施例,以例如将设备100的启动序列分成两个阶段。除了两个区域116、118之外,还可能存在一个或多个其他区域,对它们的访问由访问控制电路120控制。例如,一个或多个其他区域包含启动代码和/或应用代码。

所描述的实施例的优点在于,它们防止在设备100的启动阶段期间执行可能是恶意的代码。因此,包括在启动阶段期间修改程序计数器114以协调先前存储在区域118中的代码的执行的任何毛刺型攻击被访问控制电路120阻止。

已经描述了各种实施例和变型。本领域技术人员将理解,这些不同实施例和变型的某些特征可以组合,并且本领域技术人员将想到其他变型。

最后,基于上面给出的功能指示,所描述的实施例和变化的实际实现在本领域技术人员的能力范围内。具体地,关于寄存器112的位置,它可以形成非易失性存储器104的整体部分。

相关技术
  • 具有安全读取的非易失性存储器装置
  • 具有安全提醒功能的电子设备、安全提醒方法和存储设备
  • 具有支持存储器操作的虚拟行的非易失性存储器
  • 具有受限尺寸的非易失性存储器
  • 具有带有可单独编程的安全访问特征的区域的非易失性存储器装置以及相关的方法和系统
  • 用于控制对电子设备的访问的具有电子锁的安全系统
技术分类

06120116484515