首页> 中国专利> 用于在虚拟化系统操作与非虚拟化系统操作之间切换的方法

用于在虚拟化系统操作与非虚拟化系统操作之间切换的方法

摘要

提供了一种由嵌入式系统执行的方法,该嵌入式系统由CPU控制并且能够作为虚拟化系统在管理程序的监督下操作,或者作为非虚拟化系统在操作系统的监督下操作。如果嵌入式系统不需要执行任何安全关键功能,则在正常模式下运行该嵌入式系统,其中,在操作系统的监督下执行正常模式运行。如果嵌入式系统需要执行安全关键功能,则由操作系统通过将嵌入式系统的运行从操作系统移交到管理程序,来将嵌入式系统的运行从正常模式切换到保护模式,其中,在管理程序的监督下执行保护模式运行,并且当嵌入式系统不再需要执行安全关键功能时,在管理程序的监督下,将嵌入式系统的运行从保护模式切换到正常模式。

著录项

  • 公开/公告号CN103430185A

    专利类型发明专利

  • 公开/公告日2013-12-04

    原文格式PDF

  • 申请/专利权人 瑞典爱立信有限公司;

    申请/专利号CN201180069415.9

  • 发明设计人 克里斯蒂安·耶尔曼;

    申请日2011-03-22

  • 分类号G06F21/74(20130101);

  • 代理机构11021 中科专利商标代理有限责任公司;

  • 代理人王玮

  • 地址 瑞典斯德哥尔摩

  • 入库时间 2024-02-19 22:01:39

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-10-26

    授权

    授权

  • 2014-03-19

    实质审查的生效 IPC(主分类):G06F21/74 申请日:20110322

    实质审查的生效

  • 2013-12-04

    公开

    公开

说明书

技术领域

本发明涉及用于在包括一个或更多个CPU的系统上实现虚拟化 的方法、用于执行这种方法的计算机程序、以及包括这种计算机程序 的计算机程序产品。

背景技术

当提到各种类型的消费电子设备(例如,移动电话和智能电话、 媒体播放器、家用网关以及各种类型的网络化传感器)的设计时,安 全性已经成为主要区别。类似地,不同类型的嵌入式系统用于在车辆 和控制系统(例如,发电厂控制系统)中控制在移动网络和固定网络 二者中应用的各种类型的安全关键功能。

针对嵌入式系统的安全性考虑的范围可能从需要例如高正常运 行时间、鲁棒运行和可靠的网络接入的可靠性到免受包括例如病毒和 特洛伊木马的软件攻击的高效保护。

当前所体验的可以涉及嵌入式软件域中关于开放软件的服务数 量和利用率的增强。然而,开放软件平台和操作系统也问欺骗的攻击 者提供了更多的自由度和能力,这尤其是因为源代码文档和常见的黑 客工具正在变得越来越容易得到。因此,如今我们还看到对移动病毒 和网络攻击揭露的增加,尤其是以移动设备和敏感基础设施的嵌入式 设备为目标的移动病毒和网络攻击。因此,可以预期将来对所有类型 的嵌入式系统日益增加的威胁。

此外,越来越期望对在各种类型的嵌入式设备上运行的大型开放 软件系统进行频繁更新。为了更好地保护这些系统,非常需要进行划 分以将安全关键功能或服务与非安全关键功能/服务进行隔离,并且还 非常需要对安全系统特性提供可靠的监控。

虚拟化是使用管理程序(可以备选地称作虚拟机监控器(VMM)) 使嵌入式设备不仅能够加强硬件并且依比例决定容量以满足变化的负 载、而且还能够容纳(host)一个或更多个操作系统(OS)和伴随的 软件栈的技术。

此外,当管理程序在设备上以最高特权运行级别在基本硬件保护 机制(其通常在大多数平台上是可用的)的帮助下运行时,管理程序 提供了用于对与安全关键功能相关联的安全关键数据进行安全隔离并 且监控安全关键功能的有效方法。由于管理程序通常完全控制内存使 用和对它驻留在的平台上的硬件资源的访问,因此它有能力将安全关 键功能(作为通常被称作虚拟机的机器运行)与非安全关键功能进行 隔离。此外,管理程序可以确保非安全关键功能不会访问敏感存储区 域或者硬件外围设备。此外,管理程序通常还完全控制被允许在平台 上的安全运行区域和非安全运行区域之间移动的所有信息。

通过使用管理程序获得的虚拟化是一种传统的技术,在20世纪 80年代和90年代期间几乎放弃该技术以后,当由VMware引入了通 过二进制变换实现的虚拟化时,重新发现了该技术。可以在2011-03-17 可用的htt://www.vmware.com处找到与虚拟化和虚拟平台有关的更 多信息。

在下文所描述的上下文中,将虚拟化技术称作包括OS的整个软 件系统运行在管理程序之上的方法,这给客户机造成实际上直接运行 在真实的硬件上的错觉。这种虚拟化应用通常还称作系统虚拟化。

可以通过使用管理程序利用不同的方法来实现虚拟化,所述方法 例如是二进制变换、硬件辅助的基于x86架构的虚拟化(其使多个OS 能够以安全且有效的方式同时共享x86处理器资源)、或者半虚拟化, 在半虚拟化中,实际的客户代码被修改为使得能够使用更安全或更容 易虚拟化和/或改善性能的不同接口。目前,在大多数嵌入式架构中仍 然缺乏针对虚拟化的高级硬件支持,从而使得半虚拟化或二进制变换 成为进行虚拟化的最可行的方法。用于嵌入式系统的虚拟化解决方案 的公知示例包括RedBend软件管理程序(其可以在2011-03-17的 www.redbend.com得到)和OKL4安全内核(其可以在2011-03-17的 www.ok-labs.com/products/ok14-microvisor得到)。在J-YHwang等的 “XenonARM:SystemVirtualizationusingXenHypervisorfor ARM-basedSecureMobilePhones”,5thIEEEConsumerCommunications  and Network Conference中也描述系统虚拟化。

在上文给出的示例中,均没有介绍完全用于安全目的的管理程序, 而是用于更一般的目的,这提供了在新硬件上运行传统软件的可能性 和/或在相同的硬件上并行地运行多个OS的可能性。

与纯虚拟化技术相比,有关的但不同的方法是ARMTrustZone技 术,可以在 htt://www.arm.com/products/processors/technoloies/trustzone.php得到 该技术,ARMTrustZone技术描述了适合于ARMll和ARMCortex嵌 入式处理器的解决方案。TrustZone提供了对在单个真实内核上创建两 个安全隔离的虚拟内核或“世界”的支持,其中,一个世界被认为是 安全的,而另一世界是正常的。TrustZone通过硬件中断和所谓的“监 控”模式来管理这两个世界之间的过渡,这防止了当前的状态或数据 从安全世界泄露到正常世界。可以向每一个世界分配包括存储器和外 围设备的系统硬件。

通过向上文提到的嵌入式系统引入管理程序实现的安全性优点 要以性能损失为代价。高级硬件虚拟化支持或半虚拟化的广泛使用可 以减小这种性能损失,但是不能完全消除这种性能损失。然而,由于 有效的软件移植的需要,因此希望可以尽量避免半虚拟化。类似地, 即使在高级硬件虚拟化的情况下,性能损失也可能是不可接受的。具 体地说,在具有非常有限的容量的极小嵌入式系统中,这是相当大的 问题。另一方面,安全关键功能通常并不连续地运行,而是通常仅需 要偶尔执行系统上的一个或更多个关键任务。因此,期望将虚拟化系 统的使用限制或约束到这种系统有益的时机。

发明内容

本发明的目的是解决上文提到的问题中的至少一个问题。更具体 地,本发明的目的是提供一种使系统能够切换到保护模式的方法,从 而允许将安全关键功能与非安全关键功能以及其它安全关键功能隔离 地执行,并且只有安全关键功能需要保持在保护模式中,才维持在保 护模式中。可以通过发起重启的方式执行模式切换,该模式切换当执 行时包括根据某些预定条件发起的模式切换过程。如果这种重启过程 的数量是有限的(通常是这种情况,这是因为嵌入式系统通常仅在某 些时机需要安全关键功能),则可以改善系统性能。

根据一个方面,提供了一种由嵌入式系统执行的方法,所述嵌入 式系统由CPU控制并且能够作为虚拟化系统在管理程序的监督下操 作或者作为非虚拟化系统在操作系统的监督下操作。该方法包括:如 果所述嵌入式系统不需要执行任何安全关键功能,则在正常模式中运 行所述嵌入式系统,其中,在所述操作系统的监督下执行所述正常模 式运行;如果所述嵌入式系统需要安全关键功能执行,则由所述操作 系统通过将所述嵌入式系统的运行从所述操作系统切换到管理程序, 来将所述嵌入式系统的所述运行从正常模式移交到保护模式,其中, 在所述管理程序的监督下执行保护模式运行,以及当所述嵌入式系统 不再需要所述安全关键助能执行时,在所述管理程序的监督下,将所 述嵌入式系统从保护模式切换到正常模式。

根据备选的实施例,在嵌入式系统需要安全关键功能执行的情况 下,以保护模式执行嵌入式系统。如果嵌入式系统不再需要安全关键 功能执行,则管理程序通过将嵌入式系统的运行从管理程序到操作系 统,来将嵌入式系统从保护模式切换到正常模式。

通过应用上述实施例中的任意一个实施例,当嵌入式系统需要时, 该系统将能够选择在保护模式中运行,并且当不再需要在保护模式中 运行,即,在管理程序的监督下运行系统时,返回保护模式。通过将 在保护模式中运行系统的时机限制为当被认为是必要时的时机,可以 改善系统性能。

在执行模式切换步骤(即,改变模式)之前,发起所述嵌入式系 统的重启,其中,所述切换步骤是作为执行所述重启的一部分来执行 的。

因此,重启过程可以被配置为使得通过发起重启,直到满足被预 先定义为形成重启的一部分的特定条件,才执行模式切换。

重启可以包括读取模式状态寄存器的内容,所述内容包含所述系 统的当前模式状态,以及对所述模式状态寄存器中寄存的所述模式状 态进行切换。

所述方法通常还包括以下步骤:如果所述模式状态寄存器的所述 模式状态被设置为保护模式,则基于从过渡加密模块得到的至少一个 芯片唯一密钥,来对与所述管理程序、所述安全关键功能相关联的代 码和相关联的数据进行解密和完整性验证,或者如果所述模式状态寄 存器的所述模式状态被设置为正常模式,则禁止对芯片唯一密钥中的 任何一个进行访问。

根据一个实施例,所述重启是由除了安全关键功能以外的功能发 起的。

由在所述嵌入式系统上运行的功能发起的重启可以包括:询问过 渡寄存器;对所述模式状态寄存器进行解锁;将所述过渡寄存器的所 述模式状态插入所述模式状态寄存器,以及对所述模式状态寄存器进 行锁定,从而禁止对所述模式状态寄存器进行任何修改,直到发起另 一重启为止。

上述重启通常是软重启,从而允许相对快速地重启,这是因为在 所述重启期间保存了大多数易失性存储器的内容。

根据另一实施例,所述重启是由所述嵌入式系统的管理程序保护 单元独立于所述过渡寄存器的所述当前模式状态发起的。这种管理程 序保护单元可以是例如看门狗定时器。

适合于执行根据上述实施例中的任意一个实施例的方法的嵌入 式系统可以备选地包括两个或更多个CPU,所述CPU之一在不同的 模式之间进行切换期间扮演监督角色。在这种场景中,一个或更多个 CPU可以参与模式切换过程,使得仅当所有管理程序部准许时(即, 当没有管理程序仍然参与安全关键功能的任何执行时),才执行从保护 模式到正常模式的切换。

根据另一方面,通过执行包括计算机可读代码装置的计算机程序 来执行根据上文提到的实施例中的任意一个实施例的方法。当在CPU 可控的嵌入式系统上执行这种计算机可读代码装置时,如果嵌入式系 统不需要执行任何安全关键功能,则该计算机可读代码装置使嵌入式 系统以正常模式运行。

如果嵌入式系统需要执行安全关键功能,则该计算机可读代码装 置取而代之地通过指示所述操作系统通过将所述嵌入式系统的运行从 所述操作系统移交到管理程序,使以正常模式运行的所述嵌入式系统 切换到以保护模式运行,来使所述嵌入式系统在保护模式中运行,其 中,在所述管理程序的监督下执行保护模式运行。此外,当所述嵌入 式系统不再需要执行所述安全关键功能时,计算机可读代码装置通过 在所述管理程序的监督下,将所述嵌入式系统从保护模式切换到正常 模式,来使所述嵌入式系统返回到以正常模式运行。

计算机可读代码装置可以被配置为使得当在所述嵌入式系统上 执行计算机可读代码装置时,计算机可读代码装置使得在所述切换步 骤之前发起对所述嵌入式系统的重启,其中,所述切换步骤是作为执 行所述重启的一部分来执行的。

计算机可读代码装置还可以被配置为使得当在所述嵌入式系统 上执行计算机可读代码装置时,计算机可读代码装置使得所述系统读 取模式状态寄存器的内容,其中,所述内容包含所述系统的当前模式 状态,以及对所述模式状态寄存器中寄存的所述模式状态进行切换。

此外,执行计算机可读代码可以使过渡加密模块执行以下操作: 如果所述模式状态寄存器的所述模式状态被设置为保护模式,则基于 至少一个芯片唯一密钥,来对与所述管理程序、所述安全关键功能相 关联的代码和相关联的数据来进行解密和完整性验证,或者如果所述 模式状态寄存器的所述模式状态被设置为正常模式,则禁止访问任何 芯片唯一密钥。

当在所述嵌入式系统上执行所述计算机可读代码装置时,所述计 算机可读代码装置响应于从除了安全关键功能以外的功能接收到对执 行所述安全关键功能的请求而发起重启。根据一个实施例,在重启期 间,计算机可读代码装置可以使所述嵌入式系统询问过渡寄存器;对 所述模式状态寄存器进行解锁;将所述过渡寄存器的所述模式状态插 入所述模式状态寄存器中,以及对所述模式状态寄存器进行锁定,从 而禁止对所述模式状态寄存器进行任何修改,直到发起另一重启为止。

根据另一实施例,所述计算机可读代码装置可以响应于从所述嵌 入式系统的管理程序保护单元接收到请求来发起重启,而与所述过渡 寄存器的所述当前模式状态无关。

根据另一方面,提供了一种计算机程序产品,包括根据前述实施 例中的任意一个的计算机可读装置和计算机程序,其中,所述计算机 程序被存储在所述计算机可读装置上。

根据另一方面,提供了一种包括计算机程序产品的嵌入式系统, 所述计算机程序产品包括根据前述实施例中的任意一个的计算机可读 装置和计算机程序,其中,所述计算机程序被存储在所述计算机可读 装置上。

附图说明

当结合附图一起阅读时,根据所公开的实施例的以下详细描述, 将更容易理解所公开的方法和布置的目的、优点和效果以及不同的特 征,在附图中:

图1是在表示非虚拟化状态的正常模式与表示虚拟化状态的保护 模式之间切换的简化模式状态方案示意图。

图2a和图2b是可以在其上执行双模式机制的系统的分层方法的 示意图。

图3是根据一个实施例描述了单片系统(SoC)(或称系统级芯片) 架构的简化框图方案。

图4是示出了根据一个场景用于在不同的正常模式与保护模式之 间切换的方法的流程图。

图5是示出了根据另一场景用于在正常模式与保护模式之间切换 的方法的另一流程图。

图6a和图6b是示出了在冷重启运行期间可以如何在正常模式与 保护模式之间执行切换(反之亦然)的相关联的流程图。

图7是示出了根据一个实施例可以如何从保护模式切换到正常模 式的另一流程图。

图8a和图8b是示出了根据另一实施例可以如何从正常模式切换 到保护模式(反之亦然)的流程图。

图9是被配置为执行模式切换机制的一组功能的示意图。

具体实施方式

本文涉及用于通过使系统能够在虚拟化模式(由于当进入该模式 时激活了管理程序,因此在下文中称作保护模式)与非虚拟化模式(在 下文中称作正常模式)之间切换来改善能够作为虚拟化系统或非虚拟 化系统进行操作的系统的性能的方法和机制,其中,仅当需要以安全 方式执行一个或更多个安全关键功能时才以保护模式运行该系统,而 在确定不再需要执行任何安全关键功能时,在没有任何管理程序参与 的情况下,系统以正常模式运行。

为了获得仅当系统实际需要时才选择保护模式的方法,根据图1, 系统的可执行代码适合于:当请求安全关键助能时,通过“唤醒”专 用管理程序来发起从正常模式100向保护模式101的切换,并且将系 统从保护模式101切换回正常模式100,即,当不再需要安全关键功 能时可操作的模式。其中,只要系统保持在保护模式中,专用管理程 序就监督系统的运行。在前一种场景下,包括用于运行管理程序的可 执行代码被配置为:发起从OS到管理程序的切换,使得在切换之后, 在管理程序而不是OS的监督下运行系统,这允许通过管理程序独立 地运行安全关键功能,而在后一种场景下,取而代之地发起从管理程 序到OS的切换,使得在切换之后,仅在OS的监督下运行系统,而 无需任何管理程序的任何参与。

与引导程序过程的执行相关联地执行模式之间的切换,在下文中, 引导程序过程称作重启,即,在系统上发起的芯片复位,如下面根据 备选的实施例更详细描述的。当已经在保护模式中成功地重启系统时, 将问每一个CPU或CPU内核提供在最高特权模式下运行的专用管理 程序。稍后,这些管理程序之一可以基于触发来确定不再需要保护模 式,因而请求另一系统重启,其通常具有软重启的形式,如果成功地 执行另一系统重启,则将导致系统从保护模式去往正常模式。如果取 而代之地首先在正常模式中重启系统,则通常正在系统中的任意一个 CPU上不运行管理程序。

通过应用有效的模式切换方法,使得系统在保护模式中运行的持 续时间受到限制,可以在对系统造成非常小的性能影响的情况下执行 安全关键功能。这通常以软复位为代价,每当需要安全关键功能时, 或者更具体地,每当启动提供安全关键功能执行的触发时,部需要该 软复位。然而,与如果系统在一个或更多个管理程序一直存在的情况 下运行(即,如果系统一直作为虚拟化系统运行)相比,如果触发安 全关键功能执行的时机相对较少发生,则这种方法将具备优选的优越 性能。

此外,可以在大量不同的嵌入式硬件架构上执行所提出的方法, 除了添加少量寄存器和用于对与管理程序、安全关键功能相关联的代 码和任何相关联的数据实现加密和完整性核查的功能以外,无需对现 有的架构进行任何显著的修改。然而,对于实现所提出的方法所需的 大多数功能将依赖于现有的硬件和软件实现功能、以及对启动代码的 一些调整和与系统的每一个CpU相关联地实现专用管理程序功能的 管理程序代码的插入。

与先前描述的建立在ARMTrustZone周围的备选架构相比,所提 出的基于管理程序的备选方式的主要优点在于:更小的硬件可信计算 基(TCB)、支持多个安全运行域(其中每一个与运行在管理程序之上 的相应的安全关键功能相关联)、以及在完全不需要硬件改变或调整的 情况下在很多不同类型的嵌入式架构上运行的可能性。此外,管理程 序实现了对非可信域的安全干预和监控,这在“TrustZone”架构中是 不可能的。可以在Seshadri等的“ATinyHypervisortoprovideLifetime KerneiCodeIntegrityforCommodityOSes”,Proceedingsofthe21stSymposiumonOperatingSystemPrinciples(SOSP2007),October2007 和X.Chen等的“Overshadow:Avirtualization-BasedApproachto RetrofittingProtectioninCommodityOperatingSystems”,Proceedingsof the13thAnnualInternationalACMConferenceon ArchitecturalSupport forProgrammingLanguagesandOperatingSystems(ASPLOS),March 2008中找到与这些方面有关的更多信息。

图2a是与两个不同的CPU(CPU1和CPU2)相关联的相应的协 议栈的分层方法的示意图,其中,CPU1和CPU2驻留在诸如单片系 统(SoC)等的系统200上,并且被布置为管理共享内部功能单元, 以及外部源。在这里,这些共享内部功能单元是由以下各项来表示的: 内部存储器201、直接存储器访问(DMA)202、中断控制器203、模 式状态寄存器204、过渡寄存器205和存储控制器206),外部源由外 部存储器207来表示。

当对系统应用本文提出的双模式方法时,图2a可以被看作正常 模式操作的典型表示,其描述了对应用(在这里由运行在相应的应用 框架209a、209b之上的应用208a、208b表示)和OS(在这里,由图 中的Linux内核210a、210b或者任何其它OS表示)的传统执行。

图2b是取而代之地在保护模式中运行的系统的相应的典型表示。 与图2a相比,每一个CpU(CpU1和CPU2)现在具有在系统上运行 的相应的管理程序(管理程序1和管理程序2),其中,管理程序2通 常仅是管理程序1的另一实例。此外,由于管理程序2管理安全关键 功能(在这里,由安全关键功能1和安全关键功能2表示),因此这些 功能在保护模式中运行,当在该管理程序的监督下执行这些功能时, 这些功能将相对于彼此被隔离和封装,从而实现对安全关键数据和与 执行每一个相应的功能相关联的代码的安全处理。

此外,管理程序1和管理程序2确保由安全关键功能1使用的安 全敏感存储器将不会被安全关键功能2访问,反之亦然,并且甚至更 重要的是,当系统在正常模式中运行时,安全关键功能1和安全关键 功能2均不会被OS访问,在本情况中,OS是分别在CPU1和CPU2 上运行的Linux系统。管理程序还确保由安全关键功能中的任意一个 使用的任何安全敏感外围设备不会被Linux系统访问。在本示例中, 仅管理程序2执行安全关键功能。然而,只要系统保持在保护模式中, 则只要被触发,该管理程序就可以相应地执行这种服务。

在嵌入式系统包括多个CPU的情况下,所提出的模式切换方法 可以仅应用于CPU的子组。通常在重启代码中预先定义了在切换中涉 及哪些CPU(和相关联的管理程序)。在这种情况下,重启代码还可 以包括委派特定的CPU的管理程序作为主管理程序(即,协调参与重 启过程的管理程序的管理程序)的指令。

图3是示出了嵌入式系统300或者更具体地SoC的简化框图方案, 其中,嵌入式系统300被配置为执行诸如在上文中概括地描述并且在 下文中更详细描述的方法等的方法。虽然图3中描述的SoC被配置为 经由3G/4G调制解调器提供3G/4G功能,但是本文描述的机制可以应 用于任意一种系统,具体地,任意一种嵌入式系统,包括:至少一个 安全关键服务可以在其上运行的一个或更多个CPU。SoC被连接到各 种外部实体,在这里,这些外部实体是由USIM、RAM、闪存存储器、 USB和LCD来表示的,并且即使包括了两个CPU(CPU1和CPU2) 以及一个GPU(图形处理单元),SoC也可以备选地包括一个或者甚 至更多个CPU,其中每一个CPU能够在正常模式或保护模式中操作。 除了诸如图3的存储控制器、中断控制器、ROM、DMA等的传统的 助能单元以外,SoC还装备有特别适合于所提出的模式切换机制的功 能单元。

所描述的SoC包括两个不同的寄存器,其通常被配置为片装易失 性存储器。这些寄存器之一被称作模式状态寄存器301,其被配置为 保存SoC的当前模式,即,保护模式或正常模式。在重启过程期间执 行的启动代码通常被配置为使得模式状态寄存器301的内容可以仅在 重启过程的早期改变。更具体地,启动代码被配置为使得在重启过程 期间,在系统即将被切换到管理程序或操作系统之前,启动代码锁定 模式状态寄存器301。通常可以通过激活粘结位(sticky bit)来锁定模 式状态寄存器301,然后可以通过触发对重启进行触发来对模式状态 寄存器301进行解锁。

可以由重启代码来确定重启进入哪一个模式以及因此将模式状 态寄存器301设置为哪一种模式。在整个硬件复位(通常称作冷复位、 冷引导程序或冷重启)的情况下,将通过重启配置来提供优选的默认 模式值。更具体地,根据启动代码及其重启配置来确定系统是否将在 冷复位以后立即准备处理安全关键功能。

与冷重启不同,在软复位(也称作热引导程序或热重启)的情况 下,保存大多数易失性存储器的内容,从而导致与在整个冷复位期间 相比更快的复位过程。在软复位期间,将被放入模式状态寄存器301 中的值是由在另一专用寄存器(在这里,称作过渡寄存器302)中提 供的值来确定的。过渡寄存器302由更高层软件使用以在软复位时以 信号形式问启动代码发送期望的模式。

当在保护模式中运行时,管理程序将能够对安全关键功能,即, 在系统上运行的软件功能以及相关联的处理敏感数据(例如,加密密 钥、用户名、密码、私人信息)进行控制,并且将能够保护系统免受 对保存与这种功能相关联的数据的存储单元的非法存取。

可以通过使用正常存储管理单元(MMU)或存储保护单元(MPU) 来实现这一点,这是因为管理程序是在系统中运行的、有特权配置(即, 设置)针对系统中的MMU或MPU的存取域和约束的唯一软件。如 果可应用,则也可以使用诸如I/OMMU等的额外硬件保护支持来保 护对诸如智能卡、安全模块、敏感外部存储器之类的安全关键外围设 备的访问,这是因为管理程序将是在系统中运行的、有特权配置I/O MMU(如果该实体存储的话)的唯一软件。

MMU或MPU还用于确保当在保护模式中运行时,可以仅由管理 程序或管理程序保护单元(即,使其存储器受到在系统上运行的管理 程序保护的单元,其可以用于迫使系统进入保护模式)来发起经由软 复位执行的至正常模式的状态改变。管理程序保护单元的一个示例是 看门狗定时器(WDT)。WDT是通常在嵌入式系统中使用以通过提供 用于在软件故障的情况下发起重启的选项来使系统自恃的定时器。

实现在嵌入式系统上的传统WDT自动地检测软件异常,并且如 果检测到软件异常,则复位CPU。WDT以从初始值开始倒计时的计 数器为基础。嵌入式系统的软件选择计数器的初始值并且周期性地重 启计数器。如果计数器在软件重启它之前达到零,则推测软件发生故 障并且重启CPU。WDT可以实现为CPU外部的单独的硬件单元,或 者包含在与CPU相同的芯片中。在Murphy等的“Watchdog Timers” EmbeddedSystemsProgramming,October2001,pp79-80中描述了传统 的WDT。

在嵌入式系统处于保护模式的情况下,如果系统错误地陷入保护 模式中,则WDT可以用于重启系统。

在嵌入式系统处于正常模式的情况下,WDT还可以用于迫使系 统定期地进入保护模式,从而提供特定的安全关键功能执行。在后一 种情况下,WDT连接到模式状态寄存器,使得它以预定的时间间隔 将模式状态寄存器设置为保护模式并且发起重启。因此,系统将重启 进入保护模式,而不论过渡寄存器中的当前内容如何。

图3包括WDT303,其被连接到模式状态寄存器301,使得可以 仅当模式状态寄存器301处于保护模式时才对WDT303进行复位。因 此,WDT将在处于保护模式中时重复地复位。如果在运行WDT303 期间,WDT寄存器(末示出)不能保持起作用,即,在WDT303达 到零值之前向WDT303写入复位请求,则WDT303通过问一个或更 多个CPU下发平台复位信号来进行响应,这导致重启进入保护模式, 在保护模式中,针对该过程中涉及的每一个CPU将存在相应的管理程 序。

可以通过将WDT的计数器设置为适当的值来确定用于迫使系统 进入保护模式的间隔,并且通常在重启代码中预先配置该间隔。以正 常模式执行的代码无权输入该值。仅可以通过以保护模式执行的代码 或者通过重启代码来完成该操作。

此外,SoC300包括过渡加密模块304(过渡加密模块),其有权 访问一个或更多个芯片唯一密钥305,所述一个或更多个芯片唯一密 钥305用于在通常将管理程序和安全关键功能装载到芯片内部或外部 RAM中之前,对与相应的一个或更多个管理程序、安全关键功能相 关联的代码和相关联的数据进行解密和完整性核查。通过使模式状态 寄存器连接到过渡加密模块304,可以(例如,通过维持状态控制机) 防止过渡加密模块304在模式状态寄存器301被设置为正常模式时使 用任何芯片唯一密钥305。

为了说明如何与执行重启过程相关联地使用上述组件(具体地说, 两个寄存器),下面更详细地描述三个不同的场景。

首先,将描述分别在正常模式与保护模式之间切换(因此,在 OS的监督下运行系统与在管理程序的监督下运行系统之间切换)(反 之亦然)的一般原则。将理解的是,下文描述的被配置为在不同的模 式之间执行所描述的切换的重启过程仅描述了重启系统的一种可能的 方式,并且应该理解的是,根据上文所描述的基本原理来应用备选的 重启序列对于本领域任何技术人员而言是显而易见的。

图4是示出了根据第一实施例的方法的流程图,在该第一实施例 中,在正常模式中发起系统运行,如第一步骤4:1中所指示的。如下 一个步骤4:2所示,只要不需要安全关键功能,即,在除了所需的安 全关键功能以外的功能调用去往保护模式的切换之前或者在管理程序 保护单元迫使系统进入保护模式之前,运行以正常模式继续。在后一 种情况下,管理程序保护单元通常还同时触发特定的安全关键功能的 执行。

然而,如果系统需要安全关键助能,则通常通过发起系统软重启 来执行从正常模式切换到保护模式的过程,如果该操作成功,则它将 导致将通过OS运行系统切换或转换至通过管理程序运行系统。如果 系统包括多个CpU,则将针对每一个CPU执行从OS到相应的管理程 序的切换。使用另一步骤4:3指示准备执行安全关键功能的模式切换。

在成功地从正常模式转换为保护模式之后,系统继续以保护模式 运行,如步骤4:4中所指示的。然而,根据下一个步骤4:5,只有系统 需要安全关键功能或者(如果多于一个安全关键功能在系统上运行) 更多个安全关键功能,才继续以保护模式运行。更具体地,当不再需 要安全关键功能在系统上运行时,可以发起返回正常模式的另一切换, 如步骤4:6中所指示的。在该阶段,系统将不需要管理程序,并且在 已经从系统的存储器中移除了安全关键数据以后,以传统的方式在OS 的监督下开始系统运行,直到在系统处触发另一模式切换为止。

图5是示出了取而代之地由保护模式中的系统运行(如在第一步 骤5:1中所指示的)发起的场景的另一流程图,只有一个或更多个安 全关键功能需要,才必须维持该场景,如下一个步骤5:2中所指示的。 后面的步骤5:4-5:9对应于图4中的步骤4:1-4:6。可以通过执行冷重 启(即,系统的整个硬件复位)来发起根据图5执行的场景,其中, 默认系统被设置为以保护模式运行开始。

为了进一步说明可以如何以有效的方式执行模式之间的过渡,将 分别参照图6a、图6b、图7、图8a和图8b来更详细地描述不同的模 式切换场景。

可以根据图6a的流程图并且如果需要的话还根据图6b来执行被 配置为应用上文所描述的模式切换构思的冷启动。可以通过对系统进 行任意一种冷重启激活来触发该过程,在这里,如图6a的步骤6:1所 指示的。这种触发还对模式状态寄存器进行解锁,即,直到发起重启, 才对最初被锁定的模式状态寄存器进行解锁,从而使得能够从重启一 开始就改变该寄存器的内容,直到寄存器被再次锁定为止。冷重启包 括执行启动代码,该启动代码通常包括初始的第一部分(其在这里被 称作第一阶段启动代码,如步骤6:2中所指示的)和第二部分(其在 这里被称作第二阶段启动代码,通常是由第一阶段启动代码将第二阶 段启动代码与有关的重启配置一起装载,如另一步骤63中所指示的, 并且在下一个步骤6:4中读取和验证重启配置)。至少对第二阶段启动 代码进行完整性保护,并且通常使用与存储在写入保护存储器(例如, ROM、或者诸如电容丝寄存器等的硬件寄存器)中的公共密钥相对应 的公共密钥标签来保护重启配置。

在下一个步骤6:5中,第一阶段启动代码根据已经在重启配置中 预先定义的模式来将默认模式(即,正常模式或保护模式)写入模式 状态寄存器中,此后,对模式状态寄存器进行锁定,如下一个步骤6:6 中所指示的。将保持对模式状态寄存器进行锁定,使得其内容不能改 变,直到发起另一冷重启或软重启为止。

在下一个步骤6:7中,通常在已经执行表示一个或更多个中间启 动阶段(末示出)的启动代码以后,发起对第二阶段启动代码的一部 分(其在这里被称作过渡阶段启动代码)的执行。在下一个步骤6:8 中,过渡阶段启动代码读取模式状态寄存器的内容,即,先前在步骤 6:5中由第一阶段启动代码写入或插入模式状态寄存器中的默认值。

如果模式状态寄存器指示“正常模式”,即,认为系统不需要在 系统硬件复位时执行任何安全关键功能,如跟随步骤6:9之后的右侧 分支所指示的,则过渡阶段启动代码启动重启配置中所指示的OS, 并且将运行切换到该OS,如在步骤6:10中所指示的,即,系统的运 行在正常模式中继续。如果取而代之地将“保护模式”作为默认模式 寄存在模式状态寄存器中,则跟随步骤6:9之后的左侧分支将取而代 之地开始,其中,在图6a中该左侧分支被表示为“A”并且将参照图 6b对该左侧分支进行更详细地描述。

过程“A”将以过渡启动代码对与管理程序或(在多个CPU的情 况下)多个管理程序相关联的代码以及管理程序关联代码和相关联的 数据(即,对于在系统上实现一个或更多个管理程序必需的数据和代 码)进行解密和完整性验证而开始,如在步骤6:11中所指示的。

如果在步骤6:11中执行的对管理程序的验证成功,则过渡启动代 码将运行切换到管理程序,该管理程序将在最高特权模式中运行,如 步骤6:13中所指示的,即,执行在保护模式中继续。

在多个CPU的情况下,过渡启动代码获取管理程序代码并且针 对每一个CPU将运行切换到一个管理程序,或者如果(例如,由于在 重启代码中的预先配置)将仅涉及CpU的子组,则过渡启动代码将运 行切换到该子组的管理程序。

另一方面,如果在步骤6:11中执行的验证失败,则过程以跟随步 骤6:12之后的右侧分支继续,其中,在未能切换到管理程序或者多个 管理程序的情况下,该右侧分支根据下面将描述的过程来提供回退过 程,从而允许系统恢复,这将取而代之地导致针对系统预先定义的OS 来运行系统。

在步骤6:14,过渡启动代码清除所有管理程序关联数据和代码。 在下一个步骤6:15,过渡启动代码将“正常模式”写入过渡寄存器, 此后,过渡寄存器发起软重启,如使用下面的步骤6:16-6:20所描述的, 该过程以将运行切换到OS来结束,如步骤6:21中所指示的。

如上所述,软重启是在保持系统的易失性存储器的相当大量的内 容从而提供相对快速的重启过程的情况下对系统的重启,而无需从系 统的非易失性存储器重新装载所有程序和数据(如在冷重启期间所需 要的)。软重启包括复位模式状态寄存器(如步骤6:16所指示的),开 始执行过渡启动代码(如在步骤3:17中所指示的),通过启动代码读 取过渡寄存器的内容(如步骤6:18所指示的),将过渡寄存器的模式 状态写入(即,在当前情况下,将“正常模式”写入)模式状态寄存 器中(如步骤6:19所指示的),以及在启动代码完全根据模式状态寄 存器中寄存的模式将系统的运行切换到OS之前(如步骤6:21中所指 示的),锁定模式状态寄存器(如步骤6:20中所指示的)。

使用所提出的方法的一个很大的优点在于,它将有效地使系统能 够在不再有必要在保护模式中运行时停止在保护模式中运行。当系统 在保护模式中开始运行并且系统不再需要安全关键功能时,系统通常 将被配置为发起从保护模式到正常模式的过渡。可以通过最初发起到 保护模式的切换的功能(通常通过发送至管理程序从而发起重启的超 级调用)来触发这种过渡。备选地,从管理程序保护单元提供的中断 可以请求到正常模式的切换。

现在将参照图7的流程图来描述根据一个实施例假设嵌入式系统 在保护模式中运行作为前提条件的过程。在图7的第一步骤(步骤7:1) 中,使管理程序知晓不再需要安全关键功能,并且管理程序因此而停 止安全关键功能,并且通过擦除与安全关键功能和管理程序相关联的 所有安全敏感数据或者通过将数据复制回非易失性完整性和机密性保 护存储设备来清除系统的有关存储区域。步骤7:2指示该过程。

本情形说明了涉及仅一个CPU和一个相关联的管理程序的场景。 在两个或更多个CPU的情况下,这些CPU中的每一个CPU或者这些 CPU的预先定义的于组中的每一个CPU将具有相关联的管理程序, 并且在切换到正常模式的情况下,问所有其它管理程序通知进行中的 模式切换。如果所有管理程序确认所需的切换,则在这里被称作主管 理程序的管理程序可以立即继续发起的过程。如果(例如,由于安全 关键功能仍然在另一CPU上运行)末由所有其它管理程序进行确认, 则主管理程序可以进入特殊等待模式,在该特殊等待模式中,主管理 程序保持直到它接收到任何丢失的确认,即,所有管理程序准备离开 保护模式为止。

在下一个步骤7:3中,管理程序,或者在多个管理程序的情况下 的主管理程序,将“正常模式”写入过渡寄存器,在后续步骤7:4-7:8 中,发起与图6b中的步骤6:16-6:20相对应的软重启。根据图6b,图 7的软重启以将运行切换到OS来结束,如步骤7:9所指示的。

当取而代之地系统开始运行并且需要一个或更多个安全关键功 能时,将开始从正常模式到保护模式的过渡。现在将参照图8a的流程 图继续根据图8b来描述根据一个实施例的该过程。

在图8a的步骤8:1中,从需要安全关键功能执行的功能开始,在 当前以正常模式运行的系统中请求安全关键功能,这导致请求功能, 如步骤8:2中所指示的。备选地,管理程序保护单元将“保护模式” 写入过渡寄存器中。此外,可以将与所请求的安全功能有关的信息及 其相关联的参数提供给过渡寄存器,如步骤8:3中所指示的,使得可 以识别相应的安全关键功能,然后是在步骤8:4处发起的并且导致图 8b的分支中的任意一个的软重启。

为了提供所需的模式改变,启动代码通过首先复位(并且因此解 锁)模式状态寄存器(如在步骤8:4中所指示的)来执行软重启,然 后发起对过渡启动代码的执行,如另一步骤8:5中所指示的。然后, 过渡启动代码被配置为读取过渡寄存器的当前内容,如步骤8:6中所 指示的,然后在对寄存器进行锁定(如步骤8:8中所指示的)之前, 将过渡寄存器的内容(在该情况下,“保护模式”)写入模式状态寄存 器,如步骤8:7中所指示的。

在下一个步骤8:9中,如上所述,过渡启动代码通常通过激活过 渡加密模块并且使用一个或更多个芯片唯一密钥,来对与管理程序相 关联的代码和相关联的数据进行解密和完整性验证,从而保护重启代 码对管理程序的装载。

如果在步骤8:9中执行的验证过程成功,如使用紧随图8b的步骤 8:10之后的左侧分支所指示的,则过渡启动代码通过将系统的运行从 OS切换到管理程序来切换到保护模式运行,如步骤8:11中所指示的。 在已经完成切换并且管理程序开始运行以后,管理程序将对安全关键 功能代码进行解密和验证(如在步骤8:12中所指示的),从而确保以 与步骤8:9中执行的对管理程序代码的保护相对应的方式保护与安全 关键功能相关联的代码。一且确定对安全关键功能代码进行成功的解 密和验证,就可以执行安全关键功能,如在步骤8:13中所指示的。当 完成对安全关键功能的执行时,在执行期间创建的数据被存储在保护 存储区域上,可以与功能的后续执行相关联地从该保护存储区域访问 安全关键功能。

如果步骤8:10中的验证不成功,则取而代之地执行根据步骤 8:14-8:17(其与图6b的步骤6:14-6:21相对应)的回退过程,该回退 过程以过渡启动代码将运行切换到OS而结束。

上文所述的模式切换方法可以作为计算机程序实现在可以由 CPU控制的嵌入式系统中,该计算机程序包括计算机可读代码装置, 当在嵌入式系统上执行该计算机可读代码装置时,该计算机可读代码 装置使嵌入式系统根据上述实施例中的任意一个实施例,响应于由安 全关键助能或由管理程序保护单元引起的触发,而在模式之间切换。 因此,计算机程序可以被描述为构成可以由每一个相应的CPU访问和 执行的不同功能。

图9是形成嵌入式系统(例如,图3的嵌入式系统/SoC300)的 一部分的装置900的简化示意图。装置900包括CPU901,其可以例 如表示图3的CPU1或CPU2中的任意一个。CPU901被连接到携带 计算机程序903的计算机程序产品902,其中,计算机程序产品902 包括其上存储有计算机程序903的计算机可读介质。图9的计算机程 序903被配置为构造在多个计算机程序模块903a-903d中的计算机程 序代码。

重启模块903a被配置为按需要,即,响应于上文所描述的触发 备选形式中的任意一个来执行重启过程。与图3中的模块403相对应 的过渡加密模块903b被配置为与问保护模式的切换相关联地对与相 应的安全关键功能执行相关联的任何安全关键功能代码和数据以及管 理程序代码进行解密和完整性核查。寄存器功能902被配置为对在重 启执行期间使用的寄存器(例如,图3的模式状态寄存器301和过渡 寄存器302)的更新进行管理,其是与重启执行和切换功能903相关 联地执行的,其中,切换功能903被配置为执行模式之间的切换,作 为进行中的重启执行的一部分。

计算机程序产品902可以是ROM。备选地,计算机程序产品902 可以是EEPROM(电可擦除可编程ROM)、RAM(随机存取存储器)、 或闪存存储器中的任意一个。还将理解的是,计算机程序903不限于 上文所描述的配置,而是只要所描述的功能和方法是可执行的,就可 以备选地由模块的另一组合来配置。图9还示出了安全关键功能904, 其可以例如与图2b的安全关键功能1或安全关键功能2中的任意一个 相对应,以及管理程序保护单元905,其可以例如与图3的WDT303 相对应,其中,安全关键功能904和管理程序保护单元905中的任意 一个能够通过发起重启执行来触发模式切换。

可以理解,诸如过渡寄存器、过渡加密模块和模式状态寄存器之 类的实体的选择和命名仅是为了举例说明的目的,其它备选方式的实 体配置和命名也是可能的。

此外,可以理解,本公开中描述的单元和模块将被认为是逻辑实 体,但不一定是单独的物理实体。备选地,上文所描述的模块(过渡 加密模块304、903b)中的一个或更多个可以被至少部分地配置为硬 件电路。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号