用于在虚拟化系统操作与非虚拟化系统操作之间切换的方法
【专利摘要】提供了一种由嵌入式系统执行的方法,该嵌入式系统由CPU控制并且能够作为虚拟化系统在管理程序的监督下操作,或者作为非虚拟化系统在操作系统的监督下操作。如果嵌入式系统不需要执行任何安全关键功能,则在正常模式下运行该嵌入式系统,其中,在操作系统的监督下执行正常模式运行。如果嵌入式系统需要执行安全关键功能,则由操作系统通过将嵌入式系统的运行从操作系统移交到管理程序,来将嵌入式系统的运行从正常模式切换到保护模式,其中,在管理程序的监督下执行保护模式运行,并且当嵌入式系统不再需要执行安全关键功能时,在管理程序的监督下,将嵌入式系统的运行从保护模式切换到正常模式。
【专利说明】用于在虚拟化系统操作与非虚拟化系统操作之间切换的方法
【技术领域】
[0001]本发明涉及用于在包括一个或更多个CPU的系统上实现虚拟化的方法、用于执行这种方法的计算机程序、以及包括这种计算机程序的计算机程序产品。
【背景技术】
[0002]当提到各种类型的消费电子设备(例如,移动电话和智能电话、媒体播放器、家用网关以及各种类型的网络化传感器)的设计时,安全性已经成为主要区别。类似地,不同类型的嵌入式系统用于在车辆和控制系统(例如,发电厂控制系统)中控制在移动网络和固定网络二者中应用的各种类型的安全关键功能。
[0003]针对嵌入式系统的安全性考虑的范围可能从需要例如高正常运行时间、鲁棒运行和可靠的网络接入的可靠性到免受包括例如病毒和特洛伊木马的软件攻击的高效保护。
[0004]当前所体验的可以涉及嵌入式软件域中关于开放软件的服务数量和利用率的增强。然而,开放软件平台和操作系统也问欺骗的攻击者提供了更多的自由度和能力,这尤其是因为源代码文档和常见的黑客工具正在变得越来越容易得到。因此,如今我们还看到对移动病毒和网络攻击揭露的增加,尤其是以移动设备和敏感基础设施的嵌入式设备为目标的移动病毒和网络攻击。因此,可以预期将来对所有类型的嵌入式系统日益增加的威胁。
[0005]此外,越来越期望对在各种类型的嵌入式设备上运行的大型开放软件系统进行频繁更新。为了更好地保护这些系统,非常需要进行划分以将安全关键功能或服务与非安全关键功能/服务进行隔离,并且还非常需要对安全系统特性提供可靠的监控。
[0006]虚拟化是使用管理程序(可以备选地称作虚拟机监控器(VMM))使嵌入式设备不仅能够加强硬件并且依比例决定容量以满足变化的负载、而且还能够容纳(host) —个或更多个操作系统(OS)和伴随的软件栈的技术。
[0007]此外,当管理程序在设备上以最高特权运行级别在基本硬件保护机制(其通常在大多数平台上是可用的)的帮助下运行时,管理程序提供了用于对与安全关键功能相关联的安全关键数据进行安全隔离并且监控安全关键功能的有效方法。由于管理程序通常完全控制内存使用和对它驻留在的平台上的硬件资源的访问,因此它有能力将安全关键功能(作为通常被称作虚拟机的机器运行)与非安全关键功能进行隔离。此外,管理程序可以确保非安全关键功能不会访问敏感存储区域或者硬件外围设备。此外,管理程序通常还完全控制被允许在平台上的安全运行区域和非安全运行区域之间移动的所有信息。
[0008]通过使用管理程序获得的虚拟化是一种传统的技术,在20世纪80年代和90年代期间几乎放弃该技术以后,当由VMware引入了通过二进制变换实现的虚拟化时,重新发现了该技术。可以在2011-03-17可用的htt: //www.vmware.com处找到与虚拟化和虚拟平台有关的更多彳目息。
[0009]在下文所描述的上下文中,将虚拟化技术称作包括OS的整个软件系统运行在管理程序之上的方法,这给客户机造成实际上直接运行在真实的硬件上的错觉。这种虚拟化应用通常还称作系统虚拟化。
[0010]可以通过使用管理程序利用不同的方法来实现虚拟化,所述方法例如是二进制变换、硬件辅助的基于X86架构的虚拟化(其使多个OS能够以安全且有效的方式同时共享x86处理器资源)、或者半虚拟化,在半虚拟化中,实际的客户代码被修改为使得能够使用更安全或更容易虚拟化和/或改善性能的不同接口。目前,在大多数嵌入式架构中仍然缺乏针对虚拟化的高级硬件支持,从而使得半虚拟化或二进制变换成为进行虚拟化的最可行的方法。用于嵌入式系统的虚拟化解决方案的公知示例包括RedBend软件管理程序(其可以在2011-03-17的www.redbend.com得到)和0KL4安全内核(其可以在2011-03-17 的 www.0k-labs.com/products/okH-microvisor 得至丨丨)。在 J-YHwang 等的“XenonARM:SystemVirtualizationusingXenHypervisorforARM-basedSecureMobiIePhoneS^,5thIEEEConsumerCommunications and Network Conference 中也描述系统虚拟化。
[0011]在上文给出的示例中,均没有介绍完全用于安全目的的管理程序,而是用于更一般的目的,这提供了在新硬件上运行传统软件的可能性和/或在相同的硬件上并行地运行多个OS的可能性。
[0012]与纯虚拟化技术相比,有关的但不同的方法是ARMTrustZone技术,可以在htt: //www.arm, com/products/processors/technoloies/trustzone.php 得至丨J 该技术,ARMTrustZone技术描述了适合于ARMll和ARMCortex嵌入式处理器的解决方案。TrustZone提供了对在单个真实内核上创建两个安全隔离的虚拟内核或“世界”的支持,其中,一个世界被认为是安全的,而另一世界是正常的。TrustZone通过硬件中断和所谓的“监控”模式来管理这两个世界之间的过渡,这防止了当前的状态或数据从安全世界泄露到正常世界。可以向每一个世界分配包括存储器和外围设备的系统硬件。
[0013]通过向上文提到的嵌入式系统引入管理程序实现的安全性优点要以性能损失为代价。高级硬件虚拟化支持或半虚拟化的广泛使用可以减小这种性能损失,但是不能完全消除这种性能损失。然而,由于有效的软件移植的需要,因此希望可以尽量避免半虚拟化。类似地,即使在高级硬件虚拟化的情况下,性能损失也可能是不可接受的。具体地说,在具有非常有限的容量的极小嵌入式系统中,这是相当大的问题。另一方面,安全关键功能通常并不连续地运行,而是通常仅需要偶尔执行系统上的一个或更多个关键任务。因此,期望将虚拟化系统的使用限制或约束到这种系统有益的时机。
【发明内容】
[0014]本发明的目的是解决上文提到的问题中的至少一个问题。更具体地,本发明的目的是提供一种使系统能够切换到保护模式的方法,从而允许将安全关键功能与非安全关键功能以及其它安全关键功能隔离地执行,并且只有安全关键功能需要保持在保护模式中,才维持在保护模式中。可以通过发起重启的方式执行模式切换,该模式切换当执行时包括根据某些预定条件发起的模式切换过程。如果这种重启过程的数量是有限的(通常是这种情况,这是因为嵌入式系统通常仅在某些时机需要安全关键功能),则可以改善系统性能。
[0015]根据一个方面,提供了一种由嵌入式系统执行的方法,所述嵌入式系统由CPU控制并且能够作为虚拟化系统在管理程序的监督下操作或者作为非虚拟化系统在操作系统的监督下操作。该方法 包括:如果所述嵌入式系统不需要执行任何安全关键功能,则在正常模式中运行所述嵌入式系统,其中,在所述操作系统的监督下执行所述正常模式运行;如果所述嵌入式系统需要安全关键功能执行,则由所述操作系统通过将所述嵌入式系统的运行从所述操作系统切换到管理程序,来将所述嵌入式系统的所述运行从正常模式移交到保护模式,其中,在所述管理程序的监督下执行保护模式运行,以及当所述嵌入式系统不再需要所述安全关键助能执行时,在所述管理程序的监督下,将所述嵌入式系统从保护模式切换到正常模式。
[0016]根据备选的实施例,在嵌入式系统需要安全关键功能执行的情况下,以保护模式执行嵌入式系统。如果嵌入式系统不再需要安全关键功能执行,则管理程序通过将嵌入式系统的运行从管理程序到操作系统,来将嵌入式系统从保护模式切换到正常模式。
[0017]通过应用上述实施例中的任意一个实施例,当嵌入式系统需要时,该系统将能够选择在保护模式中运行,并且当不再需要在保护模式中运行,即,在管理程序的监督下运行系统时,返回保护模式。通过将在保护模式中运行系统的时机限制为当被认为是必要时的时机,可以改善系统性能。
[0018]在执行模式切换步骤(S卩,改变模式)之前,发起所述嵌入式系统的重启,其中,所述切换步骤是作为执行所述重启的一部分来执行的。
[0019]因此,重启过程可以被配置为使得通过发起重启,直到满足被预先定义为形成重启的一部分的特定条件,才执行模式切换。
[0020]重启可以包括读取模式状态寄存器的内容,所述内容包含所述系统的当前模式状态,以及对所述模式状态寄存器中寄存的所述模式状态进行切换。
[0021]所述方法通常还包括以下步骤:如果所述模式状态寄存器的所述模式状态被设置为保护模式,则基于从过渡加密模块得到的至少一个芯片唯一密钥,来对与所述管理程序、所述安全关键功能相关联的代码和相关联的数据进行解密和完整性验证,或者如果所述模式状态寄存器的所述模式状态被设置为正常模式,则禁止对芯片唯一密钥中的任何一个进行访问。
[0022]根据一个实施例,所述重启是由除了安全关键功能以外的功能发起的。
[0023]由在所述嵌入式系统上运行的功能发起的重启可以包括:询问过渡寄存器;对所述模式状态寄存器进行解锁;将所述过渡寄存器的所述模式状态插入所述模式状态寄存器,以及对所述模式状态寄存器进行锁定,从而禁止对所述模式状态寄存器进行任何修改,直到发起另一重启为止。
[0024]上述重启通常是软重启,从而允许相对快速地重启,这是因为在所述重启期间保存了大多数易失性存储器的内容。
[0025]根据另一实施例,所述重启是由所述嵌入式系统的管理程序保护单元独立于所述过渡寄存器的所述当前模式状态发起的。这种管理程序保护单元可以是例如看门狗定时器。
[0026]适合于执行根据上述实施例中的任意一个实施例的方法的嵌入式系统可以备选地包括两个或更多个CPU,所述CPU之一在不同的模式之间进行切换期间扮演监督角色。在这种场景中,一个或更多个CPU可以参与模式切换过程,使得仅当所有管理程序部准许时(即,当没有管理程序仍然参与安全关键功能的任何执行时),才执行从保护模式到正常模式的切换。[0027]根据另一方面,通过执行包括计算机可读代码装置的计算机程序来执行根据上文提到的实施例中的任意一个实施例的方法。当在CPU可控的嵌入式系统上执行这种计算机可读代码装置时,如果嵌入式系统不需要执行任何安全关键功能,则该计算机可读代码装置使嵌入式系统以正常模式运行。
[0028]如果嵌入式系统需要执行安全关键功能,则该计算机可读代码装置取而代之地通过指示所述操作系统通过将所述嵌入式系统的运行从所述操作系统移交到管理程序,使以正常模式运行的所述嵌入式系统切换到以保护模式运行,来使所述嵌入式系统在保护模式中运行,其中,在所述管理程序的监督下执行保护模式运行。此外,当所述嵌入式系统不再需要执行所述安全关键功能时,计算机可读代码装置通过在所述管理程序的监督下,将所述嵌入式系统从保护模式切换到正常模式,来使所述嵌入式系统返回到以正常模式运行。
[0029]计算机可读代码装置可以被配置为使得当在所述嵌入式系统上执行计算机可读代码装置时,计算机可读代码装置使得在所述切换步骤之前发起对所述嵌入式系统的重启,其中,所述切换步骤是作为执行所述重启的一部分来执行的。
[0030]计算机可读代码装置还可以被配置为使得当在所述嵌入式系统上执行计算机可读代码装置时,计算机可读代码装置使得所述系统读取模式状态寄存器的内容,其中,所述内容包含所述系统的当前模式状态,以及对所述模式状态寄存器中寄存的所述模式状态进行切换。
[0031]此外,执行计算机可读代码可以使过渡加密模块执行以下操作:如果所述模式状态寄存器的所述模式状态被设置为保护模式,则基于至少一个芯片唯一密钥,来对与所述管理程序、所述安全关键功能相关联的代码和相关联的数据来进行解密和完整性验证,或者如果所述模式状态寄存器的所述模式状态被设置为正常模式,则禁止访问任何芯片唯一密钥。
[0032]当在所述嵌入式系统上执行所述计算机可读代码装置时,所述计算机可读代码装置响应于从除了安全关键功能以外的功能接收到对执行所述安全关键功能的请求而发起重启。根据一个实施例,在重启期间,计算机可读代码装置可以使所述嵌入式系统询问过渡寄存器;对所述模式状态寄存器进行解锁;将所述过渡寄存器的所述模式状态插入所述模式状态寄存器中,以及对所述模式状态寄存器进行锁定,从而禁止对所述模式状态寄存器进行任何修改,直到发起另一重启为止。
[0033]根据另一实施例,所述计算机可读代码装置可以响应于从所述嵌入式系统的管理程序保护单元接收到请求来发起重启,而与所述过渡寄存器的所述当前模式状态无关。
[0034]根据另一方面,提供了一种计算机程序产品,包括根据前述实施例中的任意一个的计算机可读装置和计算机程序,其中,所述计算机程序被存储在所述计算机可读装置上。
[0035]根据另一方面,提供了一种包括计算机程序产品的嵌入式系统,所述计算机程序产品包括根据前述实施例中的任意一个的计算机可读装置和计算机程序,其中,所述计算机程序被存储在所述计算机可读装置上。
【专利附图】
【附图说明】
[0036]当结合附图一起阅读时,根据所公开的实施例的以下详细描述,将更容易理解所公开的方法和布置的目的、优点和效果以及不同的特征,在附图中:[0037]图1是在表示非虚拟化状态的正常模式与表示虚拟化状态的保护模式之间切换的简化模式状态方案示意图。
[0038]图2a和图2b是可以在其上执行双模式机制的系统的分层方法的示意图。
[0039]图3是根据一个实施例描述了单片系统(SoC)(或称系统级芯片)架构的简化框图方案。
[0040]图4是示出了根据一个场景用于在不同的正常模式与保护模式之间切换的方法的流程图。
[0041]图5是示出了根据另一场景用于在正常模式与保护模式之间切换的方法的另一流程图。
[0042]图6a和图6b是示出了在冷重启运行期间可以如何在正常模式与保护模式之间执行切换(反之亦然)的相关联的流程图。
[0043]图7是示出了根据一个实施例可以如何从保护模式切换到正常模式的另一流程图。
[0044]图8a和图Sb是示出了根据另一实施例可以如何从正常模式切换到保护模式(反之亦然)的流程图。
[0045]图9是被配置为执行模式切换机制的一组功能的示意图。
【具体实施方式】
[0046]本文涉及用于通过使系统能够在虚拟化模式(由于当进入该模式时激活了管理程序,因此在下文中称作保护模式)与非虚拟化模式(在下文中称作正常模式)之间切换来改善能够作为虚拟化系统或非虚拟化系统进行操作的系统的性能的方法和机制,其中,仅当需要以安全方式执行一个或更多个安全关键功能时才以保护模式运行该系统,而在确定不再需要执行任何安全关键功能时,在没有任何管理程序参与的情况下,系统以正常模式运行。
[0047]为了获得仅当系统实际需要时才选择保护模式的方法,根据图1,系统的可执行代码适合于:当请求安全关键助能时,通过“唤醒”专用管理程序来发起从正常模式100向保护模式101的切换,并且将系统从保护模式101切换回正常模式100,S卩,当不再需要安全关键功能时可操作的模式。其中,只要系统保持在保护模式中,专用管理程序就监督系统的运行。在前一种场景下,包括用于运行管理程序的可执行代码被配置为:发起从OS到管理程序的切换,使得在切换之后,在管理程序而不是OS的监督下运行系统,这允许通过管理程序独立地运行安全关键功能,而在后一种场景下,取而代之地发起从管理程序到OS的切换,使得在切换之后,仅在OS的监督下运行系统,而无需任何管理程序的任何参与。
[0048]与引导程序过程的执行相关联地执行模式之间的切换,在下文中,引导程序过程称作重启,即,在系统上发起的芯片复位,如下面根据备选的实施例更详细描述的。当已经在保护模式中成功地重启系统时,将问每一个CPU或CPU内核提供在最高特权模式下运行的专用管理程序。稍后,这些管理程序之一可以基于触发来确定不再需要保护模式,因而请求另一系统重启,其通常具有软重启的形式,如果成功地执行另一系统重启,则将导致系统从保护模式去往正常模式。如果取而代之地首先在正常模式中重启系统,则通常正在系统中的任意一个CPU上不运行管理程序。[0049]通过应用有效的模式切换方法,使得系统在保护模式中运行的持续时间受到限制,可以在对系统造成非常小的性能影响的情况下执行安全关键功能。这通常以软复位为代价,每当需要安全关键功能时,或者更具体地,每当启动提供安全关键功能执行的触发时,部需要该软复位。然而,与如果系统在一个或更多个管理程序一直存在的情况下运行(即,如果系统一直作为虚拟化系统运行)相比,如果触发安全关键功能执行的时机相对较少发生,则这种方法将具备优选的优越性能。
[0050]此外,可以在大量不同的嵌入式硬件架构上执行所提出的方法,除了添加少量寄存器和用于对与管理程序、安全关键功能相关联的代码和任何相关联的数据实现加密和完整性核查的功能以外,无需对现有的架构进行任何显著的修改。然而,对于实现所提出的方法所需的大多数功能将依赖于现有的硬件和软件实现功能、以及对启动代码的一些调整和与系统的每一个CpU相关联地实现专用管理程序功能的管理程序代码的插入。
[0051]与先前描述的建立在ARMTrustZone周围的备选架构相比,所提出的基于管理程序的备选方式的主要优点在于:更小的硬件可信计算基(TCB)、支持多个安全运行域(其中每一个与运行在管理程序之上的相应的安全关键功能相关联)、以及在完全不需要硬件改变或调整的情况下在很多不同类型的嵌入式架构上运行的可能性。此外,管理程序实现了对非可信域的安全干预和监控,这在“TrustZone”架构中是不可能的。可以在Seshadri等的 “ATinyHypervisortoprovideLifetimeKerneiCodelntegrityforCommodityOSes,,,Proceedingsofthe2IstSymposiumonOperatingSystemPrincipIes(S0SP2007),0ctober2007和X.Chen 等的“Overshadow:Avirtualization-BasedApproachtoRetrofittingProtectioninCommodityOperatingSystems,,,Proceedingsofthe 13thAnnualInternationalACMConferenceon ArchitecturalSupportforProgrammingLanguagesandOperatingSystems (ASPLOS),March2008中找到与这些方面有关的更多信息。
[0052]图2a是与两个不同的CPU (CPUI和CPU2)相关联的相应的协议栈的分层方法的示意图,其中,CPUl和CPU2驻留在诸如单片系统(SoC)等的系统200上,并且被布置为管理共享内部功能单元,以及外部源。在这里,这些共享内部功能单元是由以下各项来表示的:内部存储器201、直接存储器访问(DMA) 202、中断控制器203、模式状态寄存器204、过渡寄存器205和存储控制器206),外部源由外部存储器207来表示。
[0053]当对系统应用本文提出的双模式方法时,图2a可以被看作正常模式操作的典型表示,其描述了对应用(在这里由运行在相应的应用框架209a、209b之上的应用208a、208b表示)和OS (在这里,由图中的Linux内核210a、210b或者任何其它OS表示)的传统执行。
[0054]图2b是取而代之地在保护模式中运行的系统的相应的典型表示。与图2a相比,每一个CpU(CpUl和CPU2)现在具有在系统上运行的相应的管理程序(管理程序I和管理程序2),其中,管理程序2通常仅是管理程序I的另一实例。此外,由于管理程序2管理安全关键功能(在这里,由安全关键功能I和安全关键功能2表示),因此这些功能在保护模式中运行,当在该管理程序的监督下执行这些功能时,这些功能将相对于彼此被隔离和封装,从而实现对安全关键数据和与执行每一个相应的功能相关联的代码的安全处理。
[0055]此外,管理程序I和管理程序2确保由安全关键功能I使用的安全敏感存储器将不会被安全关键功能2访问,反之亦然,并且甚至更重要的是,当系统在正常模式中运行时,安全关键功能I和安全关键功能2均不会被OS访问,在本情况中,OS是分别在CPUl和CPU2上运行的Linux系统。管理程序还确保由安全关键功能中的任意一个使用的任何安全敏感外围设备不会被Linux系统访问。在本示例中,仅管理程序2执行安全关键功能。然而,只要系统保持在保护模式中,则只要被触发,该管理程序就可以相应地执行这种服务。
[0056]在嵌入式系统包括多个CPU的情况下,所提出的模式切换方法可以仅应用于CPU的子组。通常在重启代码中预先定义了在切换中涉及哪些CPU(和相关联的管理程序)。在这种情况下,重启代码还可以包括委派特定的CPU的管理程序作为主管理程序(即,协调参与重启过程的管理程序的管理程序)的指令。
[0057]图3是示出了嵌入式系统300或者更具体地SoC的简化框图方案,其中,嵌入式系统300被配置为执行诸如在上文中概括地描述并且在下文中更详细描述的方法等的方法。虽然图3中描述的SoC被配置为经由3G/4G调制解调器提供3G/4G功能,但是本文描述的机制可以应用于任意一种系统,具体地,任意一种嵌入式系统,包括:至少一个安全关键服务可以在其上运行的一个或更多个CPU。SoC被连接到各种外部实体,在这里,这些外部实体是由USM、RAM、闪存存储器、USB和LCD来表示的,并且即使包括了两个CPU(CPU1和CPU2)以及一个GPU (图形处理单元),SoC也可以备选地包括一个或者甚至更多个CPU,其中每一个CPU能够在正常模式或保护模式中操作。除了诸如图3的存储控制器、中断控制器、ROM、DMA等的传统的助能单元以外,SoC还装备有特别适合于所提出的模式切换机制的功能单
J Li ο
[0058]所描述的SoC包括两个不同的寄存器,其通常被配置为片装易失性存储器。这些寄存器之一被称作模式状态寄存器301,其被配置为保存SoC的当前模式,即,保护模式或正常模式。在重启过程期间执行的启动代码通常被配置为使得模式状态寄存器301的内容可以仅在重启过程的早期改变。更具体地,启动代码被配置为使得在重启过程期间,在系统即将被切换到管理程序或操作系统之前,启动代码锁定模式状态寄存器301。通常可以通过激活粘结位(sticky bit)来锁定模式状态寄存器301,然后可以通过触发对重启进行触发来对模式状态寄存器301进行解锁。
[0059]可以由重启代码来确定重启进入哪一个模式以及因此将模式状态寄存器301设置为哪一种模式。在整个硬件复位(通常称作冷复位、冷引导程序或冷重启)的情况下,将通过重启配置来提供优选的默认模式值。更具体地,根据启动代码及其重启配置来确定系统是否将在冷复位以后立即准备处理安全关键功能。
[0060]与冷重启不同,在软复位(也称作热引导程序或热重启)的情况下,保存大多数易失性存储器的内容,从而导致与在整个冷复位期间相比更快的复位过程。在软复位期间,将被放入模式状态寄存器301中的值是由在另一专用寄存器(在这里,称作过渡寄存器302)中提供的值来确定的。过渡寄存器302由更高层软件使用以在软复位时以信号形式问启动代码发送期望的模式。
[0061]当在保护模式中运行时,管理程序将能够对安全关键功能,S卩,在系统上运行的软件功能以及相关联的处理敏感数据(例如,加密密钥、用户名、密码、私人信息)进行控制,并且将能够保护系统免受对保存与这种功能相关联的数据的存储单元的非法存取。
[0062]可以通过使用正常存储管理单元(MMU)或存储保护单元(MPU)来实现这一点,这是因为管理程序是在系统中运行的、有特权配置(即,设置)针对系统中的MMU或MPU的存取域和约束的唯一软件。如果可应用,则也可以使用诸如I/0MMU等的额外硬件保护支持来保护对诸如智能卡、安全模块、敏感外部存储器之类的安全关键外围设备的访问,这是因为管理程序将是在系统中运行的、有特权配置I/OMMU(如果该实体存储的话)的唯一软件。
[0063]MMU或MPU还用于确保当在保护模式中运行时,可以仅由管理程序或管理程序保护单元(即,使其存储器受到在系统上运行的管理程序保护的单元,其可以用于迫使系统进入保护模式)来发起经由软复位执行的至正常模式的状态改变。管理程序保护单元的一个示例是看门狗定时器(WDT)。WDT是通常在嵌入式系统中使用以通过提供用于在软件故障的情况下发起重启的选项来使系统自恃的定时器。
[0064]实现在嵌入式系统上的传统WDT自动地检测软件异常,并且如果检测到软件异常,则复位CPU。WDT以从初始值开始倒计时的计数器为基础。嵌入式系统的软件选择计数器的初始值并且周期性地重启计数器。如果计数器在软件重启它之前达到零,则推测软件发生故障并且重启CPU。WDT可以实现为CPU外部的单独的硬件单元,或者包含在与CPU 相同的芯片中。在 Murphy 等的 “Watchdog Timers ” EmbeddedSystemsProgramming,0ctober2001, pp79_80 中描述了传统的 WDT。
[0065]在嵌入式系统处于保护模式的情况下,如果系统错误地陷入保护模式中,则WDT可以用于重启系统。
[0066]在嵌入式系统处于正常模式的情况下,WDT还可以用于迫使系统定期地进入保护模式,从而提供特定的安全关键功能执行。在后一种情况下,WDT连接到模式状态寄存器,使得它以预定的时间间隔将模式状态寄存器设置为保护模式并且发起重启。因此,系统将重启进入保护模式,而不论过渡寄存器中的当前内容如何。
[0067]图3包括WDT303,其被连接到模式状态寄存器301,使得可以仅当模式状态寄存器301处于保护模式时才对WDT303进行复位。因此,WDT将在处于保护模式中时重复地复位。如果在运行WDT303期间,WDT寄存器(末示出)不能保持起作用,即,在WDT303达到零值之前向WDT303写入复位请求,则WDT303通过问一个或更多个CPU下发平台复位信号来进行响应,这导致重启进入保护模式,在保护模式中,针对该过程中涉及的每一个CPU将存在相应的管理程序。
[0068]可以通过将WDT的计数器设置为适当的值来确定用于迫使系统进入保护模式的间隔,并且通常在重启代码中预先配置该间隔。以正常模式执行的代码无权输入该值。仅可以通过以保护模式执行的代码或者通过重启代码来完成该操作。
[0069]此外,SoC300包括过渡加密模块304 (过渡加密模块),其有权访问一个或更多个芯片唯一密钥305,所述一个或更多个芯片唯一密钥305用于在通常将管理程序和安全关键功能装载到芯片内部或外部RAM中之前,对与相应的一个或更多个管理程序、安全关键功能相关联的代码和相关联的数据进行解密和完整性核查。通过使模式状态寄存器连接到过渡加密模块304,可以(例如,通过维持状态控制机)防止过渡加密模块304在模式状态寄存器301被设置为正常模式时使用任何芯片唯一密钥305。
[0070]为了说明如何与执行重启过程相关联地使用上述组件(具体地说,两个寄存器),下面更详细地描述三个不同的场景。
[0071]首先,将描述分别在正常模式与保护模式之间切换(因此,在OS的监督下运行系统与在管理程序的监督下运行系统之间切换)(反之亦然)的一般原则。将理解的是,下文描述的被配置为在不同的模式之间执行所描述的切换的重启过程仅描述了重启系统的一种可能的方式,并且应该理解的是,根据上文所描述的基本原理来应用备选的重启序列对于本领域任何技术人员而言是显而易见的。
[0072]图4是示出了根据第一实施例的方法的流程图,在该第一实施例中,在正常模式中发起系统运行,如第一步骤4:1中所指示的。如下一个步骤4:2所示,只要不需要安全关键功能,即,在除了所需的安全关键功能以外的功能调用去往保护模式的切换之前或者在管理程序保护单元迫使系统进入保护模式之前,运行以正常模式继续。在后一种情况下,管理程序保护单元通常还同时触发特定的安全关键功能的执行。
[0073]然而,如果系统需要安全关键助能,则通常通过发起系统软重启来执行从正常模式切换到保护模式的过程,如果该操作成功,则它将导致将通过OS运行系统切换或转换至通过管理程序运行系统。如果系统包括多个CpU,则将针对每一个CPU执行从OS到相应的管理程序的切换。使用另一步骤4:3指示准备执行安全关键功能的模式切换。
[0074]在成功地从正常模式转换为保护模式之后,系统继续以保护模式运行,如步骤4:4中所指示的。然而,根据下一个步骤4:5,只有系统需要安全关键功能或者(如果多于一个安全关键功能在系统上运行)更多个安全关键功能,才继续以保护模式运行。更具体地,当不再需要安全关键功能在系统上运行时,可以发起返回正常模式的另一切换,如步骤4:6中所指示的。在该阶段,系统将不需要管理程序,并且在已经从系统的存储器中移除了安全关键数据以后,以传统的方式在OS的监督下开始系统运行,直到在系统处触发另一模式切换为止。
[0075]图5是示出了取而代之地由保护模式中的系统运行(如在第一步骤5:1中所指示的)发起的场景的另一流程图,只有一个或更多个安全关键功能需要,才必须维持该场景,如下一个步骤5:2中所指示的。后面的步骤5:4-5:9对应于图4中的步骤4:1-4:6。可以通过执行冷重启(即,系统的整个硬件复位)来发起根据图5执行的场景,其中,默认系统被设置为以保护模式运行开始。
[0076]为了进一步说明可以如何以有效的方式执行模式之间的过渡,将分别参照图6a、图6b、图7、图8a和图8b来更详细地描述不同的模式切换场景。
[0077]可以根据图6a的流程图并且如果需要的话还根据图6b来执行被配置为应用上文所描述的模式切换构思的冷启动。可以通过对系统进行任意一种冷重启激活来触发该过程,在这里,如图6a的步骤6:1所指示的。这种触发还对模式状态寄存器进行解锁,即,直到发起重启,才对最初被锁定的模式状态寄存器进行解锁,从而使得能够从重启一开始就改变该寄存器的内容,直到寄存器被再次锁定为止。冷重启包括执行启动代码,该启动代码通常包括初始的第一部分(其在这里被称作第一阶段启动代码,如步骤6:2中所指示的)和第二部分(其在这里被称作第二阶段启动代码,通常是由第一阶段启动代码将第二阶段启动代码与有关的重启配置一起装载,如另一步骤63中所指示的,并且在下一个步骤6:4中读取和验证重启配置)。至少对第二阶段启动代码进行完整性保护,并且通常使用与存储在写入保护存储器(例如,ROM、或者诸如电容丝寄存器等的硬件寄存器)中的公共密钥相对应的公共密钥标签来保护重启配置。
[0078]在下一个步骤6:5中,第一阶段启动代码根据已经在重启配置中预先定义的模式来将默认模式(即,正常模式或保护模式)写入模式状态寄存器中,此后,对模式状态寄存器进行锁定,如下一个步骤6:6中所指示的。将保持对模式状态寄存器进行锁定,使得其内容不能改变,直到发起另一冷重启或软重启为止。
[0079]在下一个步骤6:7中,通常在已经执行表示一个或更多个中间启动阶段(末示出)的启动代码以后,发起对第二阶段启动代码的一部分(其在这里被称作过渡阶段启动代码)的执行。在下一个步骤6:8中,过渡阶段启动代码读取模式状态寄存器的内容,SP,先前在步骤6:5中由第一阶段启动代码写入或插入模式状态寄存器中的默认值。
[0080]如果模式状态寄存器指示“正常模式”,即,认为系统不需要在系统硬件复位时执行任何安全关键功能,如跟随步骤6:9之后的右侧分支所指示的,则过渡阶段启动代码启动重启配置中所指示的OS,并且将运行切换到该OS,如在步骤6:10中所指示的,即,系统的运行在正常模式中继续。如果取而代之地将“保护模式”作为默认模式寄存在模式状态寄存器中,则跟随步骤6:9之后的左侧分支将取而代之地开始,其中,在图6a中该左侧分支被表示为“A”并且将参照图6b对该左侧分支进行更详细地描述。
[0081]过程“A”将以过渡启动代码对与管理程序或(在多个CPU的情况下)多个管理程序相关联的代码以及管理程序关联代码和相关联的数据(即,对于在系统上实现一个或更多个管理程序必需的数据和代码)进行解密和完整性验证而开始,如在步骤6:11中所指示的。
[0082]如果在步骤6:11中执行的对管理程序的验证成功,则过渡启动代码将运行切换到管理程序,该管理程序将在最高特权模式中运行,如步骤6:13中所指示的,即,执行在保护模式中继续。
[0083]在多个CPU的情况下,过渡启动代码获取管理程序代码并且针对每一个CPU将运行切换到一个管理程序,或者如果(例如,由于在重启代码中的预先配置)将仅涉及CpU的子组,则过渡启动代码将运行切换到该子组的管理程序。
[0084]另一方面,如果在步骤6:11中执行的验证失败,则过程以跟随步骤6:12之后的右侧分支继续,其中,在未能切换到管理程序或者多个管理程序的情况下,该右侧分支根据下面将描述的过程来提供回退过程,从而允许系统恢复,这将取而代之地导致针对系统预先定义的OS来运行系统。
[0085]在步骤6:14,过渡启动代码清除所有管理程序关联数据和代码。在下一个步骤6:15,过渡启动代码将“正常模式”写入过渡寄存器,此后,过渡寄存器发起软重启,如使用下面的步骤6:16-6:20所描述的,该过程以将运行切换到OS来结束,如步骤6:21中所指示的。
[0086]如上所述,软重启是在保持系统的易失性存储器的相当大量的内容从而提供相对快速的重启过程的情况下对系统的重启,而无需从系统的非易失性存储器重新装载所有程序和数据(如在冷重启期间所需要的)。软重启包括复位模式状态寄存器(如步骤6:16所指示的),开始执行过渡启动代码(如在步骤3:17中所指示的),通过启动代码读取过渡寄存器的内容(如步骤6:18所指示的),将过渡寄存器的模式状态写入(即,在当前情况下,将“正常模式”写入)模式状态寄存器中(如步骤6:19所指示的),以及在启动代码完全根据模式状态寄存器中寄存的模式将系统的运行切换到OS之前(如步骤6:21中所指示的),锁定模式状态寄存器(如步骤6:20中所指示的)。
[0087]使用所提出的方法的一个很大的优点在于,它将有效地使系统能够在不再有必要在保护模式中运行时停止在保护模式中运行。当系统在保护模式中开始运行并且系统不再需要安全关键功能时,系统通常将被配置为发起从保护模式到正常模式的过渡。可以通过最初发起到保护模式的切换的功能(通常通过发送至管理程序从而发起重启的超级调用)来触发这种过渡。备选地,从管理程序保护单元提供的中断可以请求到正常模式的切换。
[0088]现在将参照图7的流程图来描述根据一个实施例假设嵌入式系统在保护模式中运行作为前提条件的过程。在图7的第一步骤(步骤7:1)中,使管理程序知晓不再需要安全关键功能,并且管理程序因此而停止安全关键功能,并且通过擦除与安全关键功能和管理程序相关联的所有安全敏感数据或者通过将数据复制回非易失性完整性和机密性保护存储设备来清除系统的有关存储区域。步骤7:2指示该过程。
[0089]本情形说明了涉及仅一个CPU和一个相关联的管理程序的场景。在两个或更多个CPU的情况下,这些CPU中的每一个CPU或者这些CPU的预先定义的于组中的每一个CPU将具有相关联的管理程序,并且在切换到正常模式的情况下,问所有其它管理程序通知进行中的模式切换。如果所有管理程序确认所需的切换,则在这里被称作主管理程序的管理程序可以立即继续发起的过程。如果(例如,由于安全关键功能仍然在另一 CPU上运行)末由所有其它管理程序进行确认,则主管理程序可以进入特殊等待模式,在该特殊等待模式中,主管理程序保持直到它接收到任何丢失的确认,即,所有管理程序准备离开保护模式为止。
[0090]在下一个步骤7:3中,管理程序,或者在多个管理程序的情况下的主管理程序,将“正常模式”写入过渡寄存器,在后续步骤7:4-7:8中,发起与图6b中的步骤6:16-6:20相对应的软重启。根据图6b,图7的软重启以将运行切换到OS来结束,如步骤7:9所指示的。
[0091]当取而代之地系统开始运行并且需要一个或更多个安全关键功能时,将开始从正常模式到保护模式的过渡。现在将参照图8a的流程图继续根据图Sb来描述根据一个实施例的该过程。
[0092]在图8a的步骤8:1中,从需要安全关键功能执行的功能开始,在当前以正常模式运行的系统中请求安全关键功能,这导致请求功能,如步骤8:2中所指示的。备选地,管理程序保护单元将“保护模式”写入过渡寄存器中。此外,可以将与所请求的安全功能有关的信息及其相关联的参数提供给过渡寄存器,如步骤8:3中所指示的,使得可以识别相应的安全关键功能,然后是在步骤8:4处发起的并且导致图Sb的分支中的任意一个的软重启。
[0093]为了提供所需的模式改变,启动代码通过首先复位(并且因此解锁)模式状态寄存器(如在步骤8:4中所指示的)来执行软重启,然后发起对过渡启动代码的执行,如另一步骤8:5中所指示的。然后,过渡启动代码被配置为读取过渡寄存器的当前内容,如步骤8:6中所指示的,然后在对寄存器进行锁定(如步骤8:8中所指示的)之前,将过渡寄存器的内容(在该情况下,“保护模式”)写入模式状态寄存器,如步骤8:7中所指示的。
[0094]在下一个步骤8:9中,如上所述,过渡启动代码通常通过激活过渡加密模块并且使用一个或更多个芯片唯一密钥,来对与管理程序相关联的代码和相关联的数据进行解密和完整性验证,从而保护重启代码对管理程序的装载。
[0095]如果在步骤8:9中执行的验证过程成功,如使用紧随图8b的步骤8:10之后的左侧分支所指示的,则过渡启动代码通过将系统的运行从OS切换到管理程序来切换到保护模式运行,如步骤8:11中所指示的。在已经完成切换并且管理程序开始运行以后,管理程序将对安全关键功能代码进行解密和验证(如在步骤8:12中所指示的),从而确保以与步骤8:9中执行的对管理程序代码的保护相对应的方式保护与安全关键功能相关联的代码。一且确定对安全关键功能代码进行成功的解密和验证,就可以执行安全关键功能,如在步骤8:13中所指示的。当完成对安全关键功能的执行时,在执行期间创建的数据被存储在保护存储区域上,可以与功能的后续执行相关联地从该保护存储区域访问安全关键功能。
[0096]如果步骤8:10中的验证不成功,则取而代之地执行根据步骤8:14-8:17(其与图6b的步骤6:14-6:21相对应)的回退过程,该回退过程以过渡启动代码将运行切换到OS而结束。
[0097]上文所述的模式切换方法可以作为计算机程序实现在可以由CPU控制的嵌入式系统中,该计算机程序包括计算机可读代码装置,当在嵌入式系统上执行该计算机可读代码装置时,该计算机可读代码装置使嵌入式系统根据上述实施例中的任意一个实施例,响应于由安全关键助能或由管理程序保护单元引起的触发,而在模式之间切换。因此,计算机程序可以被描述为构成可以由每一个相应的CPU访问和执行的不同功能。
[0098]图9是形成嵌入式系统(例如,图3的嵌入式系统/SoC300)的一部分的装置900的简化示意图。装置900包括CPU901,其可以例如表示图3的CPUl或CPU2中的任意一个。CPU901被连接到携带计算机程序903的计算机程序产品902,其中,计算机程序产品902包括其上存储有计算机程序903的计算机可读介质。图9的计算机程序903被配置为构造在多个计算机程序模块903a-903d中的计算机程序代码。
[0099]重启模块903a被配置为按需要,即,响应于上文所描述的触发备选形式中的任意一个来执行重启过程。与图3中的模块403相对应的过渡加密模块903b被配置为与问保护模式的切换相关联地对与相应的安全关键功能执行相关联的任何安全关键功能代码和数据以及管理程序代码进行解密和完整性核查。寄存器功能902被配置为对在重启执行期间使用的寄存器(例如,图3的模式状态寄存器301和过渡寄存器302)的更新进行管理,其是与重启执行和切换功能903相关联地执行的,其中,切换功能903被配置为执行模式之间的切换,作为进行中的重启执行的一部分。
[0100]计算机程序产品902可以是ROM。备选地,计算机程序产品902可以是EEPROM (电可擦除可编程ROM)、RAM(随机存取存储器)、或闪存存储器中的任意一个。还将理解的是,计算机程序903不限于上文所描述的配置,而是只要所描述的功能和方法是可执行的,就可以备选地由模块的另一组合来配置。图9还示出了安全关键功能904,其可以例如与图2b的安全关键功能I或安全关键功能2中的任意一个相对应,以及管理程序保护单元905,其可以例如与图3的WDT303相对应,其中,安全关键功能904和管理程序保护单元905中的任意一个能够通过发起重启执行来触发模式切换。
[0101]可以理解,诸如过渡寄存器、过渡加密模块和模式状态寄存器之类的实体的选择和命名仅是为了举例说明的目的,其它备选方式的实体配置和命名也是可能的。
[0102]此外,可以理解,本公开中描述的单元和模块将被认为是逻辑实体,但不一定是单独的物理实体。备选地,上文所描述的模块(过渡加密模块304、903b)中的一个或更多个可以被至少部分地配置为硬件电路。
【权利要求】
1.一种由嵌入式系统执行的方法,所述嵌入式系统由CPU控制并且能够作为虚拟化系统在管理程序的监督下操作,或者作为非虚拟化系统在操作系统的监督下操作,所述方法包括以下步骤: -如果所述嵌入式系统不需要执行任何安全关键功能,则在正常模式中运行所述嵌入式系统,其中,在所述操作系统的监督下执行所述正常模式运行; -如果所述嵌入式系统需要执行安全关键功能,则由所述操作系统通过将所述嵌入式系统的运行从所述操作系统移交到所述管理程序,来将所述嵌入式系统的所述运行从正常模式切换到保护模式,其中,在所述管理程序的监督下执行保护模式运行,以及 -当所述嵌入式系统不再需要执行所述安全关键功能时,在所述管理程序的监督下,将所述嵌入式系统从保护模式切换到正常模式。
2.一种由嵌入式系统执行的方法,所述嵌入式系统由CPU控制并且能够作为虚拟化系统在管理程序的监督下操作,或者作为非虚拟化系统在操作系统的监督下操作,所述方法包括以下步骤: -如果所述嵌入 式系统需要执行安全关键功能,则在保护模式中运行所述嵌入式系统,其中,在管理程序的监督下执行所述保护模式运行,以及 -如果所述嵌入式系统不再需要执行安全关键功能,则由所述管理程序通过将所述嵌入式系统的所述运行从所述管理程序移交到所述操作系统,来将所述嵌入式系统从保护模式切换到正常模式,其中,在所述操作系统的监督下执行所述正常模式运行。
3.根据权利要求1或2所述的方法,还包括以下步骤:在执行所述切换步骤之前,发起所述嵌入式系统的重启,其中,所述切换步骤是作为执行所述重启的一部分来执行的。
4.根据权利要求3所述的方法,其中,所述重启包括: -读取模式状态寄存器的内容,所述内容包含所述系统的当前模式状态,以及 -对所述模式状态寄存器中寄存的所述模式状态进行所述切换。
5.根据权利要求4所述的方法,还包括以下步骤: -如果所述模式状态寄存器的所述模式状态被设置为保护模式,则基于从过渡加密模块得到的至少一个芯片唯一密钥,来对与所述管理程序、所述安全关键功能相关联的代码和相关联的数据进行解密和完整性验证,或者如果所述模式状态寄存器的所述模式状态被设置为正常模式,则禁止对任何芯片唯一密钥进行访问。
6.根据权利要求3、4或5所述的方法,其中,所述重启是由除所述安全关键功能之外的功能发起的。
7.根据权利要求6所述的方法,包括以下初始重启步骤: -询问过渡寄存器; -对所述模式状态寄存器进行解锁; -将所述过渡寄存器的所述模式状态插入所述模式状态寄存器中,以及 -对所述模式状态寄存器进行锁定,从而禁止对所述模式状态寄存器进行任何修改,直到发起另一重启为止。
8.根据权利要求7所述的方法,其中,所述重启是软重启。
9.根据权利要求3或4所述的方法,其中,所述重启是由所述嵌入式系统的管理程序保护单元发起的,与所述过渡寄存器的所述当前模式状态无关。
10.根据权利要求9所述的方法,其中,所述管理程序保护单元是看门狗定时器。
11.根据前述权利要求中任意一项所述的方法,其中,所述嵌入式系统包括两个或更多个CPU,所述CPU之一在不同模式之间的所述切换期间起到监督作用。
12.—种计算机程序,包括计算机可读代码装置,当在嵌入式系统上执行所述计算机可读代码装置时,所述计算机可读代码装置使所述嵌入式系统执行以下操作,其中,所述嵌入式系统能够由CPU控制并且能够作为虚拟化系统在管理程序的监督下操作,或者作为非虚拟化系统在操作系统的监督下操作: -如果所述嵌入式系统不需要执行安全关键功能,则在正常模式中运行,其中,在所述操作系统的监督下执行所述正常模式运行; -如果所述嵌入式系统需要执行安全关键功能,则通过以下方式在保护模式中运行:指示所述操作系统通过将所述嵌入式系统的运行从所述操作系统切换到管理程序,来使所述嵌入式系统从在正常模式中运行切换到在保护模式中运行,其中,在所述管理程序的监督下执行保护模式运行,以及 -当所述嵌入式系统不再需要执行所述安全关键功能时,通过在所述管理程序的监督下,将所述嵌入式系统从保护模式切换到正常模式,来返回在正常模式中运行。
13.根据权利要求12所述的计算机程序,包括计算机可读代码装置,当在所述嵌入式系统上执行所述计算 机可读代码装置时,所述计算机可读代码装置在所述切换步骤之前发起对所述嵌入式系统的重启,其中,所述切换步骤是作为执行所述重启的一部分来执行的。
14.根据权利要求13所述的计算机程序,包括计算机可读代码装置,当在所述嵌入式系统上执行所述计算机可读代码装置时,所述计算机可读代码装置使所述系统读取模式状态寄存器中包含所述系统的当前模式状态的内容,以及对所述模式状态寄存器中寄存的所述模式状态进行切换。
15.根据权利要求13或14所述的计算机程序,包括计算机可读代码装置,当在所述嵌入式系统上执行所述计算机可读代码装置时,所述计算机可读代码装置使过渡加密模块执行以下操作: 如果所述模式状态寄存器的所述模式状态被设置为保护模式,则基于至少一个芯片唯一密钥,来对与所述管理程序、所述安全关键功能相关联的代码和相关联的数据进行解密和完整性验证,而如果所述模式状态寄存器的所述模式状态被设置为正常模式,则禁止对任何芯片唯一密钥进行访问。
16.根据权利要求13、14或15所述的计算机程序,包括计算机可读代码装置,当在所述嵌入式系统上执行所述计算机可读代码装置时,所述计算机可读代码装置响应于从除安全关键功能以外的功能接收到对执行所述安全关键功能的请求而发起重启。
17.根据权利要求16所述的计算机程序,包括计算机可读代码装置,当在所述嵌入式系统上执行所述计算机可读代码装置时,所述计算机可读代码装置使所述系统执行以下操作: -询问过渡寄存器; -对所述模式状态寄存器进行解锁; -将所述过渡寄存器的所述模式状态插入所述模式状态寄存器中,以及 -对所述模式状态寄存器进行锁定,从而禁止对所述模式状态寄存器进行任何修改,直到发起另一重启为止。
18.根据权利要求17所述的计算机程序,包括计算机可读代码装置,当在所述嵌入式系统上执行所述计算机可读代码装置时,所述计算机可读代码装置响应于从所述嵌入式系统的管理程序保护单元接收到请求来发起重启,而与所述过渡寄存器的所述当前模式状态无关。
19.一种计算机程序产品,包括计算机可读装置和根据权利要求12至18中任意一项所述的计算机程序,所述计算机程序被存储在所述计算机可读装置上。
20.一种包括计算机程序产品的嵌入式系统,所述计算机程序产品包括计算机可读装置和根据权利要求12至19中任意一项所述的计算机程序,所述计算机程序被存储在所述计算机可 读装置上。
【文档编号】G06F21/74GK103430185SQ201180069415
【公开日】2013年12月4日 申请日期:2011年3月22日 优先权日:2011年3月22日
【发明者】克里斯蒂安·耶尔曼 申请人:瑞典爱立信有限公司