用于跨越多个处理器的安全启动的系统和方法

文档序号:6454182阅读:452来源:国知局
专利名称:用于跨越多个处理器的安全启动的系统和方法
用于跨越多个处理器的安全启动的系统和方法技术领域本申请总体上涉及 一 种改进的数据处理系统和方法。更具体地, 本申请涉及用于跨越多个处理器的安全启动的系统和方法。
背景技术
由于我们的社会变得越来越依赖电子通信和信息存储,所以对数 字信息安全的关注也与日俱增,例如个人信息和数字权利管理(DRM)。而且,近年来计算机黑客和其他未授权入侵者进入计算机 系统的技巧也越发高明。结果,在用于计算装置的安全系统的发展中 投入了很多的努力,以便可以保护这种敏感的数字信息而不受未授权 访问的威月办。入侵者可以获得对计算系统的访问的 一种方法是通过电子接口和 其他可观察的电磁或热活动来观察计算系统的启动活动。通过按照这 种方式来观察启动活动,入侵者可以推断出启动处理器正输入和输出 什么数据信号,处理器上正运行什么加密算法等等。根据该信息,入 侵者可以检测到启动序列中可以进行未授权侵入的点。此外,利用其 中要求安全性密钥用以启动系统的安全启动序列,入侵者可以逆推出 启动处理器所使用的加密算法,以获得对安全性密钥的访问,并且从 而获得对计算系统的完全访问。由于计算系统的总体安全性经常取决 于启动处理的安全性,所以当入侵者获得对启动序列的访问时,整个 系统的安全性就处于危险当中。因此,提供 一 种增加监控处理器的启动序列的难度以便使系统更 安全而不受未授权入侵的威胁的装置和方法是有益的。
发明内容
示范性实施方式提供一种用于选择随机处理器来启动多处理器 系统以及用于提供跨越多个处理器的安全启动的系统和方法。通过使 得哪个处理器将用来启动多处理器系统随机化,来使未授权人员以击败系统的安全性为目的而监控电子接口 、热活动和其他电磁活动来获 得有关启动序列的信息的能力变得更加困难。例如,在多处理器系统 中,未来入侵者需要以多个不同的次数运行启动序列,同时监控单个 处理器以期望它可能被随机地选为启动处理器,或者未来入侵者需要 在启动时监控所有的处理器,以便确定哪个处理器是实际启动处理 器。这两种可选择方案都需要未来入侵者方付出相当大努力,这可以 用作在实际中试图监控该系统来获得启动序列信息的不利因素,或者 至少显著地延迟未来侵入者在危害系统时花费的时间。利用示范性实施例的机制,在多处理器系统(例如片上系统)上 提供普适逻辑,该普适逻辑控制多处理器系统的启动操作。普适逻辑 包括随机事件发生器,该随机事件发生器随机选择在多处理器系统中 的哪一个处理器将要成为启动处理器,该启动处理器运行启动代码, 以由此使该系统达到操作状态。根据对启动处理器的随机选择,设置 与启动处理器相关联的配置位,该配置位表示该处理器成为启动处理 器。此后,所选择的启动处理器被提供有为使多处理器系统安全启动 到操作状态所必需的安全性密钥。在某些示范性实施例中,当随机选择的处理器执行安全启动操作 时,多处理器系统中的其他处理器执行操作来对真正的安全启动操作进行掩码(mask)。该掩码包括执行其他代码序列而不是启动代码序 列,该其他代码序列使处理器生成电磁和/或热输出,其中如果该电磁 和/或热输出受到入侵者监控,则会使入侵者难以辨识哪一个处理器正 在执行实际的安全启动操作。代码内,该启动代码运行重复一个随机量的循环。按照这种方式,每 个处理器可以运行启动代码,但是具有不同的延迟量,从而使得生成 不同的电磁和热特征(signature)。从入侵者的角度来看,由于这种 掩码而使得很难从多处理器系统中的其他处理器中辨识实际启动处理器。在另 一 个示范性实施例中,由其他处理器执行的代码序列是与随 机选择的处理器所执行的相同的启动代码序列,但由其他处理器执行的代码序列具有伪(dummy)安全性密钥。因此,对于入侵者来说, 这些其他的处理器操作为以及看起来好像它们正在执行安全启动操 作一样。然而,如果监控这些处理器,就会识别出假电磁和热输出, 这使入侵者难以确定所监控的处理器是否为正在执行安全启动操作 的实际随机选择的处理器。在另 一个示范性实施例中,可以通过提供伪处理器来对随机选择 的启动处理器进行掩码。通过在伪处理器上运行不同于启动代码序列 的处理从而使系统上的攻击改向该伪处理器,使得从电磁、热等的监 控装置的角度来看,伪处理器看起来好像是唯一的。按照这种方式, 当入侵者试图通过避开安全机制来访问该系统时,该入侵者仅访问了 伪处理器而没有对多处理器系统的剩余部分进行实际的访问。在其他示范性实施例中,可以^争越多处理器系统中的多个处理器 来分布启动代码序列。通过跨越多处理器系统中的多个处理器来分布 启动代码序列,增加了必须被危害以便获得关于启动序列的完整信息 从而规避安全性措施的处理器的数目。因此,示范性实施例的分布式 启动操作比利用单个安全核的多处理器数据处理系统更安全。此外, 通过分布启动操作,如果启动操作的任何部分被危害,则启动操作都 会失败,从而阻止未授权个体规避系统的安全性。利用该示范性实施例,将启动代码序列划分成多个分区,以便可 以将每个分区提供给多处理器系统的不同处理器。当执行启动代码序 列的每个分区时,在启动代码序列可以在另一个处理器上进行之前, 该分区必须在其各自的处理器上正确地完成。利用安全通信机制来传 达对启动代码序列的先前分区的满意完成。该安全通信^L制可以包括 安全令牌,例如加密的密码或其他安全标识符,例如^>钥/私钥对,其 表示没有危害先前的会话。按照这种方式,创建必须令人满意地完成
相关的"会话"链。启动代码的分布式执行中所涉及的处理器可以是多处理器系统中 的所有处理器或者是多处理器系统中的处理器子集。例如,可以按分 布方式利用正如上述用于选择单个启动处理器的随机选择机制来随 机地选择将用于启动系统的多个启动处理器。而且,可以随机地选择 由处理器所执行的启动代码的特定分区,使得利用每个加电复位(POR)操作,相同的处理器可以执行或不执行与之前POR操作中相 同的启动代码分区。因此,可以对于分布式启动操作中涉及哪些处理 器以及每个处理器将执行哪些启动代码分区进行随机化。多处理器系统的其他处理器(也即,非启动处理器)可以在分布 式启动操作期间不执行任何操作,或者可以执行先前描述的各种掩码 示范性实施方式中 一 个或多个的掩码序列,以便对随机选择的处理器 子集上的启动代码执行进行掩码。换言之,本示范性实施方式的分布 式启动代码序列操作可以与先前描述的一个或多个示范性实施方式 相结合。在一个示范性实施方式中,提供一种在具有多个处理器的数据处 理系统中用于启动该^:据处理系统的方法。该方法可以包括将启动 代码划分为多个启动代码分区,以及在该数据处理系统的多个处理器 内的多个启动处理器的每一个中从所述多个启动代码分区载入启动 代码分区。多个启动代码分区可以在其各自相关联的启动处理器上作 为多个会话来执行,由此启动数据处理系统。启动代码分区的数目可 以等于启动处理器的数目。如果任何会话导致启动代码分区的不成功执行或折衷执行,则数据处理系统的启动可能失败。当每个启动代码分区在其相关联会话中的执行完成时,执行所述启动代码分区的多个处理器中的相关联启动处理器可以通过信号将启动代码分区的成功完成告知与启动代码序列中的下一启动代码分区相关联的另一启动处理器。在其各自相关联的启动处理器上执行多个启动代码分区可以包括在启动处理器之间的通信中使用安全机制,以确保多个启动代码分区 在其各自相关联的启动处理器上的非折衷执行。该安全机制可以至少包括以下各项中的一个在启动处理器之间传递安全令牌,在启动处 理器之间传递数字签名,使用密码,传递启动代码分区的校验和,或 者使用信号的公开密钥/私有密钥加密。该方法可以进一步包括从多个处理器中随机选择启动处理器,其 中启动处理器是多个处理器的子集。可以在未被随机选作启动处理器 的多个处理器的处理器上执行掩码。而且,该方法可以包括随机选择哪个启动代码分区与每个启动处 理器相关联。每个启动代码分区可以不同于其他启动代码分区。此外,可以将用于启动处理器上的启动代码分区执行的会话布置 为菊花链布置、环形布置或者主/从布置之一。数据处理系统可以是异 质的多处理器片上系统,其具有根据第 一指令集进行操作的第 一处理 器以及根据不同于该第 一指令集的第二指令集进行操作的 一 个或多 个第二处理器。在另一示范性实施方式中,提供一种数据处理系统,其包含多个 处理器,耦合至所述多个处理器的启动代码存储装置,以及耦合至所 述多个处理器的普适逻辑。启动代码存储装置可以存储被划分为多个 启动代码分区的启动代码。普适逻辑可以执行上文关于先前描述的示 范性方法实施方式而概括的各种操作及其组合。在又一示范性实施方式中,提供一种计算机程序产品,包括具有 计算机可读程序的计算机可用介质。当在数据处理系统上执行时,所 述计算机可读程序可以使该数据处理系统执行上文关于先前描述的示范性方法实施方式而概括的各种操作及其组合。将在以下本发明的示例性实施例的详细i兌明中描述本发明这些和 其他特征与优势,对于本领域普通技术人员来说,考虑这些详细描述 将使得本发明这些和其他特征与优势变得明显。


然而,在连同附图一起进行阅读时,参照以下示范性实施例的详细描 述,将更好地理解发明本身及其优选使用方式、进一步目的和优势,其中图1是其中可以实现示例性实施例的多处理器系统的示意性方框图;图2是描述根据一个示范性实施例的随机启动处理器选择机制的 主要操作部件的示意图;图3A是描述了根据一个示范性实施例的随机选择机制的示意图;图3B是根据一个示范性实施例的抖动的图形表示,其中该抖动 被引入到随机事件发生器的LFSR计数器的输入中;图3C是描述了一个示范性实施例的示意图,其中利用平行信号 线向处理器提供秘密密钥和多个随机生成的密钥值;图4A-4D是描述根据示范性实施例的用于对随机选择的启动处理 器的安全启动操作进行掩码的掩码操作的示意图;图5是概述了用于在多处理器系统中随机地选择一个处理器作为 启动处理器的示范性操作的流程图;图6是概述了根据一个示范性实施例的用于对启动代码序列进行 掩码的示范性操作的流程图;图7A是描述了根据一个示范性实施例配置成菊链或环形布置的 分布式启动操作的示意图;图7B是描述了根据一个示范性实施例配置成主/从布置的分布式 启动操作的示意图;以及图8是概述了根据 一 个示范性实施例用于分布式启动多处理器系 统的示范性操作的流程图。
具体实施方式
示范性实施例提供了 一种用于选择随机处理器来启动多处理器系 统的装置和方法。该示范性实施例可以供任何多处理器系统使用,可 以在其中选择一个处理器来启动多处理器系统。因此,示范性实施例
的机制适用于对称多处理器(SMP)系统、异构多处理器系统、非相干不平衡多处理器系统等等。一个可以在其中实现示范性实施例的多处理器系统是可从纽约阿芒克的国际商业机器公司获得的单元宽带引擎(CBE)。将参照CBE 体系结构来说明该示范性实施例,然而,应该理解,对示范性实施例 的说明仅仅是示范性的,而且并非旨在声明或暗示任何关于可以实现 示范性实施例的机制的多处理器系统的类型或结构的限定。在不脱离 本发明的精神和范围的情况下,可以对所述的CBE体系结构进行许 多修改。图1所示的示范性数据处理系统是单元宽带引擎(CBE)数据处理系 统的一个实例。虽然CBE将用于本发明优选实施例的说明中,但是 正如本领域技术人员在阅读以下描述后就会很容易理解的那样,本发 明并不局限于此。如图1所示,CBE 100包括电源处理器元件(PPE) U0和多个协 同处理器元件(SPE) 120-134,其中电源处理器元件(PPE) 110具 有电源处理器单元(PPU) 116及其L1和L2高速緩沖存储器112和 114,每个协同处理器元件(SPE) 120-134都具有它自己的协同处理 器单元(SPU) 140-154、存储器流量控制155-162、本地存储器或存 储器(LS) 163-170和总线接口单元(BIU单元)180-194,例如,该 总线接口单元可以是组合直接存储器访问(DMA)、存储器管理单 元(MMU)和总线接口单元。还提供了高宽带内部元件互连总线(EIB ) 196、总线接口控制器(BIC) 197和存储器接口控制器(MIC) 198。CBE 100可以是片上系统,以便可以在单个多处理器芯片上提供 图1所述的每个元件。此外,CBE 100是一种异构处理环境,其中每 个SPU都可以从系统内的每个其他SPU接收不同指令。而且,为SPU 而设置的指令不同于为PPU设置的指令,例如,PPU可以执行基于 简化指令系统计算机(RISC)的指令,而SPU执行单指令多数据 (SIMD)指令。 SPE 120-134通过EIB 196相互耦合并与L2高速緩沖存储器114 耦合。另外,SPE 120-134通过EIB 196与MIC 198和BIC 197耦合。 MIC 198提供到共享存储器199的通信接口 。举例来说,BIC 197在 CBE 100与其他外部总线和设备之间提供通信接口 ,例如 SouthBridgeTM通信处理器。PPE 110是双线程PPE 110。这种双线程PPE 110与8个SPE 120-134的组合使CBE 100能够处理IO个同时的线程和超过128个未 决存储器请求。PPE 110用作对于处理大部分计算工作负荷的其他8 个SPE 120-134的控制器。举例来说,PPE 110可用来运行传统4喿作 系统,而SPE 120-134进行矢量化浮点代码执行。SPE 120-134包括协同处理单元(SPU) 140-154、存储器流量控 制单元155-162、本地存储器或存储器163-170以及总线接口单元 180-194。在示范性实施例中,本地存储器或存储器163-170包括 256KB的指令和数据存储器,该指令和数据存储器对于PPE 110是可 见的并且可由软件直接进行寻址。PPE110可以向SPE 120-134加载小程序或线程,使SPE链接在 一起以处理复合操作中的每个步骤。例如,结合了 CBE100的机顶盒 可以加载用于读取DVD、视频和音频解码以及显示的程序,而且数 据将会挨个经过SPE,直至它最后在输出显示器上而结束。在4GHz 处,每个SPE 120-134利用具有类似性能水平的PPE 110给出理论上 为32 GELOPS的'性能。存储器流量控制单元(MFC) 155-162用作SPU与系统其他部分 和其他部件的接口。 MFC 155-162提供主要机制,用以在主存储器与 本地存储器163-170之间进行数据传输、保护和同步。逻辑上存在针 对处理器内的每个SPU的MFC。某些实现可以多个SPU之间共享单 个MFC的资源。在这种情况下,对于每个SPU来说,所有为MFC 定义的设备和命令都必须与软件独立地出现。将共享MFC的效果限 定为实现相关的设备和命令。示范性实施例提供了一种用于选择一个随机处理器(诸如SPE 120-134中的一个)来启动多处理器系统(例如CBE100)的设备和 方法。通过使将哪个SPE 120-134将用来启动CBE 100随机化,使未 授权人员为了击败CBE 100的安全性而监控电子接口 、热活动和其他 电磁活动来获得关于启动序列的信息的能力变得更加困难。利用示范性实施例的机制,在CBE 100上提供控制CBE 100的启 动操作的普适逻辑193。普适逻辑193包括随机事件发生器,它随机 地选^r哪一个SPE 120-134将会成为启动处理器,其中该启动处理器 运行启动代码,以由此使系统启动到操作状态。根据启动SPE 120-134 的随机选择,设置与所选择的SPE (例如SPE 120)相关联的配置位, 其表示SPE 120为实际启动处理器。此后,所选择的SPE 120被提供 有为使CBE 100安全启动到操作状态所必需的安全性密钥。当所选择 的SPE成功地完成安全启动过程时,该SPE将会从安全状态转变成 解锁状态,其中在安全状态期间,关闭MIC198、共享存储器199和 BIC 197的一部分(除了到图2中快速ROM 230的通信链路),并阻 止它们进行操作。 一旦安全SPE进入解锁状态,它将通过执行快速 ROM 230所-提供的加密的代码来初始化充分启用MIC 198、 BIC 197 (称为"训练"的处理)和所有其他处理器(SPE和PPE)的处理。对 于与用于单元宽带引擎中的安全启动处理有关的更多信息,请参考公 开号为No.20050021944的共同未决和普通转让的美国专利申请,在 此引用该专利申请作为参考。在某些示范性实施例中,当随机选择的SPE 120执行安全启动操 作时,其他SPE 122-134执行操作,来对实际的安全启动操作进行掩 码。该掩码包括执行其他代码序列而不是启动代码序列,该其他代码 序列使SPE 122-134能够生成电、电磁和/或热输出,其中当这些电、 电磁和/或热输出受到入侵者监控时会使入侵者难以辨识哪一个SPE 120-134正在执行实际的安全启动操作。迟元素,该启动代码运行重复了一个随机量的循环。添加这些随机延 迟元素,以便在启动处理器时,安全启动算法将以随机的方式进行改 变,以导致不同的电磁和热特征,从而使得难以随着时间变化来比较两个不同的启动操作。按照这种方式,每个SPE 120-134都可以运行 启动代码,但是具有不同的延迟量,从而导致生成不同的电磁和热特 征。而且,相同的SPE 120-134将会在每次它运行安全的启动代码时 生成不同的电磁和热特征。从入侵者的角度来看,由于这种掩码,使 得;[艮难/人CBE 100的其他处理器中辨识实际的启动SPE 120。在另一个实施例中,由其他SPE 122-134执行的代码序列是与随 机选择的SPE 120所执行的相同的启动代码序列,但由其他SPE 122-134执行的代码序列具有伪安全性密钥。因此,对于入侵者来说, 这些其他的SPE 122-134操作为并且看起来好像它们正在执行安全启 动操作一样。然而,如果监控SPE 122-134,则会识别到伪电、电不兹 和热输出,这使入侵者难以确定所监控的SPE是否为正在执行安全启 动才乘作的实际随机选择的SPE 120。在另一个示范性实施例中,可以通过提供一个伪SPE (未示出) 来对随机选择的启动SPE 120进行掩码。通过在伪SPE上运行不同于 启动代码序列的处理,从而使CBE 100上的攻击改向到该伪SPE,使 得从电磁、热等监控装置的角度来看,伪SPE看起来好像是唯一的。 按照这种方式,当入侵者试图通过避开安全机制来访问该系统时,该 入侵者只访问了伪SPE而没有对CBE100的剩余部分进行实际的访 问。而且,如果入侵者危害伪SPE而试图执行代码,则然后伪SPE 可以关闭CBE 100的剩余部分以防止进一步的4曼入意图。现在将更详细地描述上述每个示范性实施例。应当理解,虽然在 这里分开地描述了每个示范性实施例,但是可以按各种方式来组合示 范性实施例,以便获得多处理器系统(例如,CBE100)更大的安全 性。因此,被认为适合特定情况和多处理器环境的示范性实施例的任 何组合都在本发明的精神和范围内。图2是描述了根据一个示范性实施例的随机启动处理器选择机制 的主要操作部件的示意图。应该理解,为了简化示范性实施例的解释, 图24又仅详细地显示了多处理器系统中的一个处理器。然而,应该理
解,多处理器系统中的每个处理器都具有类似的元件配置,并且按照 与图2清楚示出的处理器相同的方式进行操作。在不脱离本发明精神 和范围的情况下,多处理器系统内可以包括任意数量的处理器。然而,为了解释示范性实施例,假设处理器的数目是如图1所示的CBE体 系结构中的8个。如图2所示,随机启动处理器选择机制的主要操作部件包括系统 控制器210、安全密钥存储器220、快速ROM 230和普适逻辑240。 在一个示范性实施例中,以图1的CBE体系结构作为示范,元件 210-240可以是在其中实现CBE体系结构的芯片上所提供的元件。也 就是说,可以将这些元件210-240整合到多处理器片上系统(SoC) 的逻辑中,因而可以在片上执行由这些元件210-240所执行的操作。 可替换地,也可以在片外提供一个或多个元件,例如,可以在片外提 供快速ROM 230。系统控制器210负责执行加电复位(POR)的初始操作,以使系 统电源达到一个可接受且稳定的水平。也就是说,正如现有技术中通 常已知的那样,系统控制器210负责提升电压,开启系统时钟,以及 为了使多处理器系统达到可以在其中开始启动操作的状态所需要的 其他初始操作。作为该POR操作的一部分,使处理器280-290达到一 种安全操作模式。在该安全操作模式中,在处理器以外无法访问该处 理器的本地存储器。 一旦完成这些初始操作且系统处于可接受电源状 态,系统控制器210就利用信号将"电源正常"状态通知给普适逻辑 240。响应于来自系统控制器210的"电源正常"信号,普适逻辑240开 始启动操作,用于使多处理器系统启动到操作状态,以便软件程序可 以开始执行。作为启动操作的一部分,普适逻辑240的随机事件发生 器242随机地选择其中一个处理器(例如处理器280)作为多处理器 系统的启动处理器。随机事件发生器242生成一个信号,其发送到多 处理器系统中的每个处理器。该信号仅仅对于选为启动处理器的处理 器在逻辑上为高。该信号有效地将随机选择的处理器280的配置位寄
存器250内的值设置成表示该处理器280为启动处理器的值,例如 "1"。其他处理器将使它们各自的配置位寄存器内的配置位值保持为 初始值,从而表示这些处理器不是针对多处理器系统的随机选择的启动处理器。在快速ROM 230中以加密的形式存储用于启动多处理器系统的 启动代码。可以将加密的启动代码232提供给每个处理器280-290。 也就是说,作为启动序列的一部分,每个处理器280-2卯都可以试图 从快速ROM230中读取加密的启动代码232。然而,由于仅仅随机选 择了其中一个处理器作为启动处理器,所以其中将只有一个处理器能够对加密的启动代码232进行解密并适当地执行启动代码,以便使多 处理器系统达到操作状态。这可以通过使用每个处理器中提供的选择 器260来实现,该选择器在秘密密钥和随机生成的密钥值之间进行选 择,其中秘密密钥是用来对加密的启动代码232进行解密的密钥值, 而随机生成的密钥值将不能对加密的启动代码232进行解密。利用配置位寄存器250存储器储的值来生成一个提供给选择器 260的选择器信号。例如,选择器260可以是多路转换器,它接收来 自于安全密钥存储器220的安全密钥(Skey)作为一个输入,它接收 来自于随机值发生器262的随机生成的密钥值作为第二输入,并接收 来自于配置位寄存器250的选择信号,该选择信号表示选择这两个输 入中的哪一个。如果配置位寄存器250存储一个表示该处理器是随机 选择的启动处理器的值,则选择Skey输入。如果配置位寄存器250 存储一个表示该处理器不是随机选择的启动处理器的值,则可由选择 器260选择该随机生成的密钥值输入。然后将所选择的密钥值输出到 SPE 270。SPE 270接收所选择的密钥值和加密的启动代码232。然后SPE 270试图对加密的启动代码232进行解密。如果所选择的密钥值是来 自于安全密钥存储器220的Skey,则SPE 270将能够适当地对加密的 启动代码232进行解密,并执行在其中的启动代码指令,以使系统达 到操作状态。如果所选择的密钥值不是来自于安全密钥存储器220的Skey,则解密将会失败,而且SPE 270将无法执行启动代码指令。可以利用多处理器系统所执行的每个加电复位(POR)操作来执 行上述随机选择一个启动处理器并且利用随机选择的启动处理器来 启动该多处理器系统的处理。因此,每当启动多处理器系统时,就会 从多个处理器中随机地选择一个不同的处理器作为启动处理器。结 果,潜在的系统入侵者将无法在之前就确定哪一个处理器是启动处理 器以及将多处理器系统的电磁和热状况的测量导向该特定处理器。相反,潜在的入侵者必须通过多处理器系统的多个启动操作来监 控单个处理器,以期望最后将选择该单个处理器作为用作启动处理器 的随机处理器,或者潜在的入侵者必须监控所有的处理器,从而识别 哪一个处理器是启动处理器,并试图通过测量其各自的电磁及热状况 来获得必要的信息。举例来说,在八处理器系统中,由于必须监控所 有8个处理器,所以使监控启动序列的难度增加了八倍。而且,需要 更多的探针和硬件来进行这种监控,从而增加了试图进行这种监控的 难度。图3A是描述了根据一个示范性实施例的随机选择机制的示意图。 如上所述,支持该示范性实施例的原理概念是从多个处理器中随机选 择一个处理器成为多处理器系统的启动处理器。为了进行该随机选 择,提供随机事件发生器和选择器机制。在示范性实施例中,在多处 理器系统的普适逻辑中提供随机事件发生器,并与每个处理器相关联 地提供选择器。图3A提供了对根据一个示范性实施例的随机事件发 生器和选择器的一个实现的描述。如图3A所示,举例来说,随机事件发生器310包括线性反馈移 位寄存器(LFSR)计数器320、环形振荡器330和选择器信号寄存器 /解码器340,其中随机事件发生器310可以对应于图2中的随机事件 发生器242。环形振荡器330是一种由奇数个非门组成的器件,这些 非门的输出在两个电压电平之间振荡。该非门或反相器以链状耦合, 将最后 一个反相器的输出反馈到第 一反相器中。 一连串奇数个反相器 的最后输出是第 一输入的逻辑非。在断言第 一输入之后的一段有限的
时间后断言该最后输出。该最后输出到输入的反馈导致不稳定的振 荡,它将根据随机因素而随时间改变,这些因素例如温度和电源上的 电磁噪声。连同时钟信号clk 一起将环形振荡器330的输出提供作为LFSR 计数器320的输入。LFSR计数器320是移位寄存器,其输入位是它 的以前状态的线性函数。单个位的唯一线性函数是异或和异或非 (inverse-XOR ),因此,LFSR是一种通过对整个移位寄存器值的某 些位进行异或操作(XOR)来驱动其输入位的移位寄存器。LFSR计数器320的初始值称为种子,而且由于寄存器的操作是 确定性的,所以完全由LFSR计tt器320目前(或以前)的状态来确 定LFSR计数器320所生成的序列值。带有精选的反馈功能的LFSR 计数器3 20可以生成出现随机和具有很长周期的序列位。在示范性实 施例中,使该随机性更加明显,因为到LFSR计数器320的输入是由 环形振荡器330所生成的振荡结果与环形振荡器330的频率和输入时 钟clk的频率之间的差异的乘积,其中环形振荡器330的频率和输入 时钟clk的频率4皮此独立的变化。LFSR计数器320接收来自于环形振荡器330的输出以及时钟信 号clk作为输入,并生成一个输出位流,其存储在选择器信号寄存器/ 解码器340内。环形振荡器330的反相器在到LFSR计数器320的输 出信号中引入延迟,因此,在环形振荡器330的频率与输入时钟clk 的频率之间就存在差异。如图3B所示,频率之间的差异引起到LFSR 计数器的输入中的抖动。该抖动提供一种随机性的度量,它使LFSR 计数器320所生成的输出随机化。在选择器信号寄存器/解码器340中存储LFSR计数器320的输出。 在所述实例中,LFSR计数器320是一个3位的计数器,它生成一个 3位的输出,其中解释该输出来对值l-8进行编码。选择器信号寄存 器/解码器340的解码器功能根据随机的3位的输入值选择8个唯一输 出中的一个。根据选择器信号寄存器340中所存储的位的状态,向各 种处理器(例如图1中的SPE0-SPE7 120-134 )的配置位寄存器输出 高或低状态信号,从而设置配置位寄存器内所存储的值,因此选择其 中一个处理器成为多处理器系统的启动处理器。一旦设置了配置位寄存器值,就使用这些值来向相应的选择器350-370提供选择器信号。如图3A所示,连同Skey输入和随机密钥 值输入一起向多路转换器352、 362、 372提供选择器信号。根据选择 器信号的状态,由每个多路转换器352、 362、 372选择Skey输入或 随机密钥值输入。可由一个或多个与上述用于选择启动处理器的随机值输入。也就是说,如上所述的类似的随机事件发生器配置可以用来 随机生成一个长度与Skey相同的密钥值。然后将这些随机密钥值输 入多^各转换器352、 362和372。设计系统,使得例如借助于上述解码器功能,输入到多路转换器 352、 362、 372中的选择器信号中只有一个选择器信号将选择Skey 输入,同时其他所有的选择器信号将选择一个随机密钥值输入。将来 自于多路转换器352、 362、 372的输出提供给相应的SPE,以便SPE 可以在随机选择的启动处理器的情况下利用这些输出对启动代码进 行解密并执行该启动代码,或者正如在多处理器系统中其他所有的处 理器的情况下,尝试对启动代码进行解密并且未能启动该多处理器系 统。应当理解,上述用于提供随机事件发生器和选择器的机制仅仅是 示范性的,而且并非旨在声明或暗示任何镇对可以用于示范性实施例 的随机事件发生器和选择器的类型的限制。例如,可以使用其他随机 事件发生器,而不使用图3A所示的环形振荡器和LFSR计数器布置。 例如,可以利用热传感器来测量热噪声,该热噪声然后可用来生成用 于选择其中一个处理器作为启动处理器的随机事件。类似地,可以利用量子点(q-dot)或半导体钠米晶体来测量量子源效应,其可用作用 于选择一个处理器作为启动处理器的随机源。在该示范性实施例中可 以使用任何强的随机源来提供处理器随机选择,其中该处理器用作多 处理器系统的启动处理器。
而且,应当理解,尽管图3A显示了具有5个反相器的环形振荡 器330,但是该示范性实施例并不局限于此。反而,在不脱离本发明 的精神和范围的情况下,可以使用任何数目的反相器,只要存在奇数 个反相器。实际上,为了在到LFSR计数器320的输入中提供附加的 抖动,对环形振荡器330中一连串的反相器添加附加的反相器是合乎 要求的,以便在输入时钟信号clk的频率和来自于环形振荡器330的 输入之间引入甚至更多差异。可以根据其中实现示范性实施例的特定 多处理器系统所要求的操作特性来选择差异的数量。而且,尽管图2和3A描述了由单独的随机密钥值发生器为每个 处理器生成随机密钥值,但是该示范性实施例并不局限于此。相反, 可以为所有处理器提供单个随机密钥值发生器,该随机密钥值发生器 生成一个或多个输入到处理器的随机密钥值。因此,举例来说,随机密钥值发生器可以生成提供给所有处理器的单个随机密钥值、对于每 个单个处理器的单独的随^L密钥值(例如,在此情况下,可以生成7个不同的随机密钥值)或者生成可以有选择地提供给多处理器系统的 各个处理器的任何数量的随机密钥值。在示范性实施例中,如图3C所示,可以提供多个随机密钥值发 生器390,其中每个随机密钥值发生器都输出一个不同的随机密钥值。 可替换地,如上所述,可以用单个随机密钥值发生器来代替这些单独 的随机密钥值发生器。可以连同来自于Skey存储器395的安全密钥 (Skey) —起提供这些随机密钥值作为多处理器系统中处理器(例如, SPE 393和SPE 394 )的选择器(例如,多路转换器391和392 )的输 入,其中该安全密钥(Skey )例如eFuse,它实际上用来对用于启动 多处理器系统的启动代码进行解密。如图所示,可以对随机生成的密 钥值和Skey值进行多路复用,并在8个相同的信号线上将它们提供 给每个多路转换器391和392,以便使入侵者更难以从密钥值存储器 395中分离出其中作为信号线的一条线路。可以向多路转换器391和392提供总共8个密钥值输入,而且可 以用来自于普适逻辑397中的随机事件发生器396的选择信号来选择8个输入中的一个。在此情况下,多路转换器391和392可以在Skey 输入和7个随机密钥值之间进行选4奪而不是简单地在Skey输入和一 个随机密钥值之间进行选择。因此,第一处理器可以在随机选择第一 处理器作为启动处理器的基础上选择Skey输入,第二处理器可以选 择第三随机密钥值,第三处理器可以选择第四随机密钥值,第五处理 器可以选择第一随机密钥值,以此类推。因此,每个处理器可以接收 不同的密钥值,或者是Skey或者是随机生成的密钥值。结果,对于 入侵者来说就变得难以在监控多处理器系统的总线业务量时辨识哪 一个密钥值是正确密钥值。还应当理解,如果是在单芯片上设计的话,优选地在其中提供多 处理器系统的陶瓷封装的较低层金属层或互连的最底层中提供图3A 和3C所示的机制。由于探测多处理器的电特征和热特征的能力目前 被限定在多处理器陶乾封装的上层,所以通过将这些元件放置在较低 层金属层中,使得探测这些元件的操作的能力变得更加困难。因此, 如果可能的话,对于未来的入侵者来说,要监控随机事件发生器和选困》偉的。利用上述机制,可以在多处理器系统的多个处理器内随机地选择 一个处理器来启动该多处理器系统。按照这种方式,使监控处理器的 电特征和热特征以便获得用来启动多处理器系统的秘密信息(例如秘密密钥)的能力变得更加困难,而且潜在地变成对那些希望访问多处 理器系统而没有得到授权的人员的不利因素。尽管上述用于随机选择 一 个处理器来启动多处理器系统的机制针 对监控启动序列提供了良好的保护,但是如果未授权个体足够有耐心 的话,他仍然有可能"攻击(hack)"该系统。为了使得基本上不可能 进行这样的监控,示范性实施例提供了附加的机制用以在随机选择的 处理器上对启动序列进行掩码,以便未授权个体无法辨识哪 一 个处理 器正确地执行用于启动多处理器系统的实际的启动序列。在一个示范性实施例中,掩码操作包括由每个未选为启动处理器
的处理器运行一个不同的指令集,从而生成掩码的电和热特征,它们 使得难以对启动处理器与该系统中的其他处理器进行辨识。由不同的列提供在与处理器相关联的存储器中,或者可以在处理器无法对启动 代码序列进行解密时可由该处理器访问。例如,可以在与每个处理器 相关联的本地存储器的安全部分中提供默认代码序列。可替换地,可以在片上或片外所提供的快速ROM或其他存储设备中提供默认代码序列。当处理器不能对从快速ROM中接收的实际的加密的启动代码进 行解密时,处理器默认返回本地存储器的安全部分,该安全部分使处 理器执行指令来对另 一 个处理器上正在执行的启动代码序列进行掩 码。该指令序列也许不生成任何可用的信息,而且可能仅仅用作掩码 功能。可替换地,举例来说,可以利用该指令序列来执行用于在启动 操作期间对系统进行监控的操作或其他有用的操作。在示范性实施例中,在每个非选择的处理器(例如非启动处理器) 上执行的代码是相同的。在其中由每个非选择的处理器所执行的代码 为相同的示范性实施例中,在这些非选择的处理器的每一个上运行的 代码优选为生成电和热特征文件(profile)的代码,这些特征文件相 似于实际启动代码但不提供任何安全信息,其中入侵者为了规避多处 理器系统的安全性就需要这些安全信息。这样的代码可以执行类似于 实际启动代码的操作,但不访问多处理器系统的敏感部分。实际上, 在 一 个示范性实施例中,用来启动多处理器系统的相同启动代码可由 非选择的处理器使用,但是非选择的处理器可访问安全密钥(Skey ), 而不可访问其它特^又信息。结果,这些非选择的处理器的热特征文件和总线业务量将近似于 实际启动序列。这样,从利用监控探针来监控热特征文件、总线业务 量等等的入侵者的角度来看,由于通过监控探针来看所有核都是相同 的,所以该入侵者将无法译码出哪一个核正在执行实际启动操作。这 种不明确性阻止了篡改,并使得更加难以分离出真正的启动代码序
列、秘密密钥信息等等。在其他示范性实施例中,每个非选择的处理器都可以执行不同的 指令集。通过在每个非选择的处理器上执行不同的指令集,在利用电 或热探针来监控这些处理器时,没有一个处理器看上去是唯一的。结 果,无法通过探针来识别诸如热特征文件或总线业务量那样的明显特 征以便识别哪一个处理器是启动处理器。可以为多处理器系统中每个处理器随机地选择这些不同的指令 集。因此,举例来说,可以随机地选择针对在片上存储设备(例如快速ROM等)上存储的代码序列的不同开始地址,并将该不同的开始 地址提供给多处理器系统的处理器。然后处理器开始执行在随机选择 的开始地址处的指令,从而生成不同的热特征文件和总线业务量,以 对实际启动代码序列进行掩码。一种为不同的处理器提供不同的代码序列的方法是提供启动代 码,该启动代码具有插入到其内的随机延迟元素。举例来说,这些延 迟元素可以是重复随机次数的循环。可以在随机选择的启动处理器所 运行的实际启动代码序列中以及在非选择的处理器所运行的启动代 码中提供这样的延迟元素。从监控处理器的热和总线业务量特性的入 侵者的角度来看,该随机延迟导致该启动代码"看上去"在每个处理器 上都不同。结果,入侵者不可能辨识出哪一个处理器正在运行启动多 处理器系统的实际启动代码。在另一个示范性实施例中,提供伪处理器,其中在入侵者监控伪 处理器时该伪处理器看起来像是唯一的。该示范性实施例是先前的实 施例的组合,其中随机地选择一个处理器作为启动处理器,从非选择 的处理器中选择 一 个处理器作为运行代码的伪处理器,该代码提供来 自于启动代码序列的唯一热和总线业务量特征文件,而其他处理器运 行尽可能对实际启动代码序列的热特征文件和总线业务量进行复制 的代码序列。按照这种方式,入侵者将从其他处理器中检测到唯一的 伪处理器,并推断该处理器正在运行实际启动代码序列。因此,入侵 者将它的攻击导向该伪处理器而不是实际启动处理器,其中从热特征
文件和总线业务量的观点来看,启动处理器看起来与其他处理器类 似。此外,如果入侵者试图运行启动或积极地干扰伪处理器,则伪处 理器就可以利用信号通知系统关闭。图4A-4D是描述根据示范性实施例的用于对随机选择的启动处理 器的安全启动操作进行掩码的掩码操作的示意图。图4A描述了第一 掩码操作,其中从监控探针角度来看与启动代码序列相同的代码运行 在每个非选择的处理器上。如图4A所示,例如借助于之前描述的机 制,随机地选择SPE0410作为多处理器系统400的启动处理器。因 此,SPE0 410接收秘密密钥,对来自于快速ROM的启动代码序列进 行解密,并执行为使多处理器系统400达到操作状态所要求的实际启 动代码操作。其他SPE (即SPE1-SPE7 412-424)执行从检测探针的 角度看起来好像启动代码序列的代码。如上所述,其他SPE412-424所运行的代码序列可以是在本地存 储器的安全部分中提供的默认代码序列,该安全部分使SPE 412-424 执行指令来对SPE0 410上正在执行的启动代码序列进行掩码。优选 地,在这些非选择的SPE 412-424中的每一个上运行的代码是生成电 和热特征文件的代码,其中所述电和热特征文件类似于实际启动代码 但并不提供任何秘密信息,其中入侵者为了规避多处理器系统的安全 性就需要秘密安全信息。这样的代码可以执行与实际启动代码的操作 相类似但并不访问多处理器系统400的敏感部分的操作。图4B描述了另一个示范性实施例,其中在每个非选择的处理器 上运行不同的随机选择的算法。如图4B所示,再次选择SPEO作为 启动处理器,并且因此,SPE0运行用于将多处理器系统400启动到 操作状态的启动代码。其他SPE412-424中的每一个都运行单独的随 机选择的算法,该算法在EIB上生成不同的热特征文件和不同的总线 业务量。因此,在与其他SPE 412-424中的每一个进行比较时,每个 SPE0-7看起来是唯一的。因此,不可能辨识出哪一个SPE0-7 412-424 是用于启动多处理器系统400的实际启动处理器。如上所述,可以为多处理器系统中的每个SPE 412-424随机地选 择这些不同的算法。因此,举例来说,可以随机地选择在片上存储设备(例如快速ROM等等)中存储的代码序列的不同开始地址,并将 该不同的开始地址提供给SPE 412-424。然后,SPE 412-424可以开始 执行在随机选择的开始地址处的指令,从而生成对实际启动代码序列 进行掩码的不同的热特征文件和总线业务量。可替换地,可以将启动代码提供给SPE 412-424中的每一个,其 中在启动代码内插入随机延迟元素。举例来说,这些延迟元素可以是 迭代随机次数的循环。从监控处理器的热和总线业务量特性的入侵者 的角度,该随机延迟导致启动代码"看上去,,在每个处理器上都不同。 结果,入侵者不可能辨识出哪一个处理器正在运行用于启动多处理器 系统的实际启动代码。图4C描述了另一个示范性实施例,其中提供一个伪处理器,可 以使入侵者的攻击改向到该伪处理器。如图4C所示,SPE0是随机选 择的启动处理器,它执行启动序列。正如上述参照图4A的实施例中 的那样,SPE1-SPE4 412-418和SPE6-SPE7 422-424运行从热和总线 业务量检测角度看起来像启动代码序列的代码。另一方面,SPE5 420 运行随机选择的算法,其中可以按照上述参照图4B所描述的类似方 式来随机地选择该算法。因此,从监控处理器410-424的特性的入侵者角度来看,所有 SPE0-SPE4 410-418和SPE6-SPE7 422-424看起来都在执行相同的代 码。然而,与其它SPE相比,SPE5 420看起来是唯一的。因此,希 望攻击多处理器系统的启动代码序列的入侵者会改向对SPE 5 420进 行攻击而不是实际启动处理器SPE0 410,这是因为对于入侵者来说 SPE5 420看起来是实际启动处理器。正如利用每个加电复位(POR)才喿作来随^L地选择实际启动处理 器,同样可以从非选择的处理器中随机地选择伪处理器。因此,利用 每个POR操作,可以选择不同的启动处理器和伪处理器,从而使入 侵者难以推断哪一个处理器正在执行实际启动序列,该实际启动序列可能会被危害以便获得对多处理器系统的访问。
为完整起见,图4D描述了之前上述的示范性实施例,其中由每 个处理器来执行用来启动该系统的启动代码。在该示范性实施例中, 只允许随机选择的启动处理器访问秘密密钥(Skey),而其他处理器 接收随机选择的密钥(Rkeyl-Rkey7)。每个处理器都试图利用提供 给它们的密钥(例如Skey或Rkey)来解码和执行该启动代码。只有 随机选择的启动处理器能正确地对启动代码进行解密并执行该启动 代码来使数据处理系统达到操作状态。然而,对于外部的监控器来说, 看起来好像所有处理器都在启动该系统,从而对实际启动处理器进行 掩码,这是因为每个处理器都执行类似的任务来试图解密和启动该系 统。也就是说,每个处理器都将生成类似的热和/或电特征,这使得未 来的入侵者利用检测探针等难以辨识哪 一 个处理器是实际启动处理 器。通过使用如示范性实施例中所提供的对启动处理器的随机选择和 对启动序列的掩码,对于到多处理器系统的未来入侵者来说,辨识哪 一个处理器正在执行启动代码序列就变得非常困难。因此,对于未来 入侵者来说,要监控处理器热特征文件和总线业务量并识别用于访问 加密的启动代码的秘密密钥信息就变得非常困难。此外,对于未来入 侵者来说,变得难以识别启动代码序列中可以侵入系统的位置。因此, 使多处理器系统更加安全而没有未授权访问启动序列的危险。图5-6是概述用于在多处理器系统内随机地选择一个处理器作为 启动处理器并对启动代码序列进行掩码的示范性操作的流程图。应当 理解,可以通过计算机程序指令来实现流程图示例中的每个块和流程 图示例中的块的组合。可以将这些计算机程序指令提供给处理器或其 他可编程数据处理装置来生成机器,以便在处理器或其他可编程数据 处理装置上执行的指令创建用于实现在流程图块中所指定功能的装 置。还可以在计算机可读存储器或存储介质中存储这些计算机程序指 令,其中计算机可读存储器或存储介质可以引导处理器或其他可编程 数据处理装置按照特定方式操作,以便存储在计算机可读存储器或存 储介质内的指令生成一个制造产品,包括指令装置,该指令装置实现 流程块内所指定的功能。因此,流程图示例的块支持用于执行指定功能的装置的组合、用 于执行指定功能的步骤的组合和用于执行指定功能的程序指令装置。 还应该理解,可由执行指定功能和步骤的基于专用硬件的计算机系统 或者通过专用硬件和计算机指令的组合来实现流程图示例中的每个 块和流程图示例中的块的组合。图5概述了 一种随机选择用于启动多处理器系统的启动处理器的示范性操作。如图5所示,该操作从系统控制器执行加电复位(POR) 操作开始(步骤510)。在执行初始POR操作之后,系统控制器向多 处理器系统的普适逻辑提供"电源正常,,信号(步骤520 ),以及普适 逻辑初始化一个随机启动操作(步骤530 )。普适逻辑从多个处理器中随机地选择一个处理器作为启动处理器 (步骤540)。然后普适逻辑根据该随机选择来设置处理器的配置位(步 骤550 )并利用信号通知处理器开始启动操作(步骤560)。快速ROM 向处理器提供加密的启动代码,而且从秘密密钥存储器和随机密钥发 生器向处理器提供密钥值(步骤570)。然后处理器根据它们的配置 位的设置来选择将由处理器使用的密钥(步骤580 )。处理器试图根 据所选择的密钥来对启动代码进行解密(步骤590)。该选择的处理 器利用秘密密钥对启动代码进行解密并启动该系统(步骤595 )。应 当注意,由所有其他非选择的处理器解密启动代码的试图将会失败, 而且只有该选择的处理器能够启动该系统,然后操作结束。图6是概述了根据一个示范性实施例对启动代码序列进行掩码的 示范性操作的流程图。举例来说,可以在多处理器系统的每个处理器 中执行图6所述的操作。如图6所示,处理器接收信号以开始启动操作(步骤610)。举 例来说,该步骤可以与图5中的步骤530相对应。处理器试图对启动 代码进行解密(步骤620),而且判断该解密意图是否失败(步骤630 )。 如果解密成功,即该处理器是随机选择的启动处理器,则执行启动代 码,以由此将多处理器系统启动到操作状态(步骤640)。 如果解密失败,则选择执行一个代码序列来对启动序列进行掩码(步骤650)。如上所述,取决于特定实施例,可以根据本地存储器的 安全部分中的默认代码序列、随机选择的开始地址、对具有随机延迟代码序列(步骤660),而且判断该系统是否处于操作状态,即是否 完成了启动序列(步骤670)。如果否,该操作就返回到步骤660并 继续运行掩码代码序列。如果该系统处于操作状态,则结束掩码代码 序列的执行(步骤680),并且操作终止。因此,上述示范性实施例提供了一种机制,利用该机制可以从多 个处理器中随机地选择一个处理器作为启动处理器,用以将多处理器 系统启动到操作状态。该示范性实施例还提了一种机制,用于对随机 选择的处理器正执行的启动代码序列进行掩码,以便使入侵者难以辨 识已经随机选择了哪个处理器来执行实际启动代码序列。利用这些机 制,通过使入侵者极难通过监控启动代码序列来实现对系统的访问而 使多处理器系统更加安全。相对于多处理器系统中单个处理器正执行的启动代码序列描述了 上述示范性实施例。然而,示范性实施例并不局限于此。如以下所描 述的,在其他示范性实施例中,可以在多处理器系统中的多个处理器 上来分配启动代码序列。通过在多处理器系统中的多个处理器上分配 启动代码序列,增加了必须被危害以便获得关于启动序列的完整信息 从而避开安全性测量的处理器的数目。因此,以下所描述的示范性实施例的分布式启动操作比利用单个 安全核的多处理器数据处理系统更为安全。此外,通过分布启动操作, 如果危害了启动操作的任何部分,则启动操作失败,从而防止未授权 个体规避系统的安全性。换言之,尽管未来的入侵者可以危害启动操 作的部分,但是该入侵者不能危害全部启动操作,因此不能获得对多 处理器数据处理系统的访问。利用该示范性实施例,将启动代码序列划分成多个分区,以便可 以将每个分区提供给多处理器系统的不同的处理器。当执行启动代码
序列的每个分区时,在启动代码序列可以在另一个处理器上进行之 前,该分区必须在其各自的处理器上正确地完成。利用安全通信机制 来传达对启动代码序列的先前分区的满意完成。该安全通信机制可以 包括一个安全令牌,例如加密的密码或其他安全标识符,例如公钥/ 私钥对,其表示先前的会话没有被危害。按照这种方式,创建必须令 人满意地完成的相关"会话"链。的所有处理器或者是多处理器系统中的处理器子集。例如,可以按分 布方式利用随机选择机制(例如上述用于选择单个启动处理器的随机 选择机制)来随机地选择将用于启动系统的多个启动处理器。而且, 可以随机地选择由处理器所执行的启动代码的特定分区,使得利用每个加电复位(POR )操作,相同的处理器可以执行或不4丸行与之前POR 操作中相同的启动代码分区。因此,可以针对分布式启动操作中涉及 哪些处理器以及每个处理器将执行哪些启动代码分区来进行随机化。 多处理器系统的其他处理器(即,非启动处理器)可以在分布式 启动操作期间不执行任何操作,或者可以执行上述各种掩码代码示范性实施例中的一个或多个掩码代码序列,以此对随机选择的处理器子 集上的启动代码执行进行掩码。换言之,在不脱离本发明精神和范围 的情况下,该示范性实施例的分布式启动代码序列操作可以与之前所 述的一个或多个示范性实施例相结合。图7A是描述根据一个示范性实施例配置为菊链或环形布置的分 布式启动操作的示意图。如图7A所示,提供多个处理器720-750, 用于启动多处理器数据处理系统。在所述实例中,在分布式启动操作 中利用了所有协处理器,即SPE,而控制处理器(例如PPE)不执行 该分布式启动代码。当然,在其他示范性实施例中,PPE也可以包括 在分布式启动操作中。而且,在其他示范性实施例中,正如之前所述 的,只有多处理器数据处理系统中的处理器子集可以用来执行分布式 启动操作。举例来说,可以将加密的启动代码710划分成可单独执行的分区,
即启动代码分区l至n,其中该加密的启动代码710可以存储在与多 处理器数据处理系统相关联的存储设备中,例如图2中的快速ROM 230。例如,可以提供这些分区作为加密的启动代码中的模块或子程 序,其中利用相同的加密算法和相同的秘密密钥(Skey)对它们分别 进行加密。优选地,启动代码分区的数目等于分布式启动操作中将涉 及的处理器的数目,即启动处理器的数目。然而,在某些示范性实施 例中,例如在环形布置的启动处理器中,启动代码分区的数目并不局 限于启动处理器的数目,而可以是少于或多于启动处理器数目的任意 多个分区。举例来说,在普适逻辑790的控制下执行分布式启动操作,该普 适逻辑790可以是图1中相同的普适逻辑193。举例来说,通过随机 事件发生器的用户,普适逻辑790可以随机地选择将用作启动处理器 的处理器720-750,以及可以随机地选4奪每个随才几选4奪的处理器 720-750将执行哪个分区。在这一实施例中,普适逻辑790可以跟踪 启动代码分区要执行的次序,以便利用安全通信机制来确保启动代码 序列的安全性,其中安全通信机制指示分布式启动操作的前一个会话 是否已经被危害。然而,为了该描述的简单起见,将假设在所述实 例中,在分布式启动操作中利用了多处理器系统的所有处理器或至少 协处理器,而且按相继次序向处理器720-750提供启动代码分区。普适逻辑790向处理器720-750提供选择器信号,用以选择每个 处理器720-750将要执行哪个启动代码分区。另外,普适逻辑790提 供密钥值选择器信号,用以使处理器720-750从Skey存储器中选择 Skey作为将用来对处理器720-750的相应启动代码分区进行解密的密 钥。举例来说,处理器720-750利用所提供的Skey对它们的启动代 码分区进行解密,以及然后借助于按照菊链体系结构的处理器 720-750的布置或者在普适逻辑790的控制下,以合适的序列执行启 动代码分区。在所述实例中,SPE0 720通过以下步骤开始分布式启动^f喿作对 其启动代码分区1进行解密,执行该启动代码分区,然后向SPE1 730 安全地传达启动代码分区1的成功完成。而且,可以在这些SPE之间 利用安全机制,用以表示没有危害先前的会话,即,包括先前的启动 代码分区的执行的会话。举例来说,该安全机制可以传送安全令牌、 数字签名、密码、先前启动代码分区的校验和,利用成功完成消息的 公钥/私钥加密,等等。任何可以用来传达是否危害了分布式启动操作 的先前会话的安全机制都旨在本发明的精神和范围内。在接收到启动代码分区1执行的成功和未危害的确认之后,SPE1 730可以对它的启动代码分区2进行解密,执行启动代码分区,然后 向SPE2 740传达其成功完成启动代码分区2。该处理可以继续进行, 直至利用信号通知了所有处理器它们已经完成了它们的分布式启动 操作部分而没有被危害。在这种启动代码分区相关链中的任何中断 (例如利用信号通知未成功的执行或者被危害的执行)都会导致启动 失败,其中可以利用信号通知系统控制器启动失败。 一旦成功地完成 了所有启动代码分区,该多处理器数据处理系统就处于操作状态,其 中可以在各个处理器上执行软件应用。上述示范性实施例利用了针对启动代码分区的处理器的菊链布 置,其中在处理器上执行该启动代码分区。在不脱离本发明的精神和 范围的情况下可以使用确保连续执行启动代码分区的其它布置。例 如,对上述菊链布置的扩展是提供一种针对分布式启动操作的处理器 的环形布置,以便最后一个的处理器(例如,SPE7 750 )反过来向第 一个处理器(例如,SPE0 720)传达其启动代码分区的^^行的成功的 和未受危害的完成,其中选择第一个处理器(例如,SPE0 720)作为 "主要"启动处理器。按照这种方式,可以在主要启动处理器处使用通 过环形布置从一个会话传送到下一个会话的安全机制来对整个分布 式启动操作的未被危害的执行进行检验,验证机制例如为安全令牌、 增加的计数值等等。而且,处理器的环形布置允许利用比启动处理器的数目多的启动 代码分区。因此,如果只选择多处理器数据处理系统中的处理器子集 作为启动处理器,则该处理器子集可以在针对分布式启动操作设置成
的环形布置时执行任意数目个启动代码分区。这不仅提供了普适逻辑790在多处理器数据处理系统中随机地选择哪些处理器将成为启动处 理器的能力,还提供了普适逻辑790随机地选择多少个处理器将在分 布式启动操作中作为启动处理器的能力。因此,在第一POR操作中, 可以选择四个处理器作为启动处理器,而在随后的POR操作中,可 以选择三个启动处理器。普适逻辑790可以包含用于随机地选择多个 处理器来将其选择为启动处理器的逻辑,然后如上所述,利用该逻辑 来控制对处理器的随机选择。另一种针对分布式启动操作的可能的启动处理器布置是提供了一 种主/从布置。图7B是描述根据一个示范性实施例配置为主/从布置的 分布式启动操作的示意图。如图7B所示,指定处理器760为主机处 理器。该处理器可以是其中的一个协处理器(例如,SPE)或控制处 理器(例如,PPE)。每个从处理器(例如,SPE0-SPE7 720-750 )都 负责以类似于图7A中所述的方式来完成它们的启动代码分区并向主 核安全地传达它们已经完成了执行和没有被危害。 一旦主处理器760 接收了来自每个从处理器720-750的信号,并确认它本身没有被危害, 则允许多处理器数据处理系统进入其中可以执行软件应用的操作状态。应当理解,尽管在这里描述了针对分布式启动操作的处理器菊链 布置、环形布置和主/从布置,但是本发明并不局限于这些所述的布置。 相反,在不脱离本发明的精神和范围的情况下,任何针对分布式启动 操作的处理器布置都可以与示范性实施例的机制 一 起使用。图8是概述了根据 一 个示范性实施例的用于多处理器系统的分布 式启动的示范性操作的流程图。如图8中所示,该操作从普适逻辑接 收来自于系统控制器的"电源正常"信号开始(步骤810)。普适逻辑 从多处理器数据处理系统中的多个处理器中选择处理器作为启动处 理器(步骤820 )。如上所述,这种选择会导致选择所有处理器或选 择多处理器数据处理系统中的处理器子集作为启动处理器。举例来 说,可以利用普适逻辑中的随机事件发生器来执行这种选择。 (步骤830)。由相关联的启动处理器执行下一个启动代码分区(步骤840)。启动处理器判定启动代码分区的执行是否成功和没有被危害 (步骤850)。如果否,则利用信号通知系统控制器启动失败(步骤860 ),并且#:作结束。如果启动代码分区成功地执行并且没有被危害,则启动处理器判 定是否已经成功地执行了所有启动代码分区(步骤870)。如果否, 则操作返回步骤840,并由其相关联的启动处理器来执行下一个启动 代码分区。如果成功地执行了所有的启动代码分区,则启动处理器利 用信号通知系统控制器数据处理系统的成功启动(步骤880),并且 操作结束。因此,如上所述,除了随机地选择单个启动处理器并对多处理器 数据处理系统中的其他处理器上的操作进行掩码之外,示范性实施例 还提供了用以在多个处理器上分布启动操作的机制。示范性实施例提 供了用于以下内容的机制随机地选择启动处理器;随机地选择要在 所选择的启动处理器上执行的启动代码分区;以确保各个启动处理器 执行启动代码分区的安全性。所有的这些机制旨在提高多处理器数据 处理系统的安全性,保护该系统不受启动操作的未授权监控的威胁。示范性实施例可以采用完全硬件的实施例、完全软件的实施例或 包含硬件和软件元素的实施例的形式。在优选的实施例中,可以通过 软件来实现本发明,它包括但不局限于固件、常驻软件、微代码等。此外,示范性实施例可以采用可通过计算机可用或计算机可读介 质访问的计算机程序产品的形式,该介质提供为计算机或任何指令执 行系统所使用或与其结合使用的程序代码。为了本描述目的,计算机 可用或计算机可读介质可以是任何包含、存储、传送、传播或传输程序的装置,该程序供指令执行系统、装置或设备使用或与其结合使用。 该介质可以是电、磁、光学、电磁、红外线或半导体系统(或装 置或设备)或者传播介质。计算机可读介质的实例包括半导体或固态 存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存
储器(ROM)、硬磁盘和光盘。光盘的当前实例包括致密盘-只读存 储器(CD-ROM)、致密盘-读/写(CD-R/W)和DVD。上述电路可以是集成电路芯片设计的一部分。可以利用图形计算 机编程语言来创建芯片设计,并在计算机存储介质(例如盘、磁带、 物理硬盘驱动器或诸如存储访问网络中的虚拟硬盘驱动器)中存储该 芯片设计。如果设计者不制造芯片或用来制造芯片的光刻掩模,则设 计者就可以直接或间接地通过物理装置(例如,通过提供存储该设计 的存储介质的副本)或电子地(例如,通过因特网)向这类实体发送 生成的设计。然后可以将所存储的设计转换成合适的形式(例如, GDSII),用于光刻掩模的制造,光刻掩模通常包括将在晶片上形成 的所讨论的芯片设计的多个副本。可以利用光刻掩模来限定将要蚀刻 或进行处理的晶片区域(和/或其上的层)。可由制造者按原始晶片的形式来分布生成的集成电路芯片(也 就是,作为具有多个非封装芯片的单个晶片)作为棵模,或者按照封 装的形式来分布生成的集成电路芯片。在后一种情况中,可以将芯片 安装在单芯片封装(例如,塑性载体,利用附着到主板或其他高层载 体的引线)或多芯片封装(例如,陶瓷载体,它具有表面互连结构和 埋藏的互连结构)内。然后,在任何情况下芯片都可以与其他芯片、 分立电路元件和/或其他作为(a)中间产品(例如主板)或(b)最终 产品的一部分的信号处理装置进行集成。最终产品可以是任何包括集 成电路芯片的产品,即从玩具和其他低端应用到具有显示器、键盘或 其他输入设备以及中央处理器的高级计算机产品。而且,在其中可以 配备集成电路芯片的最终产品可以包括游戏机、游戏控制台、手持计 算设备、个人数字助理、诸如无线电话等的通信装置、膝上型计算设 备、桌面型计算设备、服务器计算设备或任何其他计算设备。为了描述和说明目的已经提出了本发明的说明,而本发明的说 明并非旨在穷尽性的或着将本发明限制为所公开的形式。许多修改和 变化对本领域普通技术人员来说是明显的。选4奪和说明了实施例,以 便最佳地解释本发明地原理、特定应用,而且使本领域其他技术人员
能够理解针对具有各种修改的各种实施例的本发明,正如所述各种修 改适合于所考虑的特定用途。
权利要求
1. 一种与具有多个处理器的数据处理系统结合使用的用于启动所述数据处理系统的方法,包括将启动代码划分为多个启动代码分区;在所述数据处理系统的所述多个处理器中的多个启动处理器的每一个中从所述多个启动代码分区中载入启动代码分区;以及将所述多个启动代码分区作为多个会话在其各自相关联的启动处理器上执行,由此启动所述数据处理系统。
2. 根据权利要求1所述的方法,其中,当每个启动代码分区在其 相关联的会话中的执行完成时,执行所述启动代码分区的所述多个处 理器中的相关联启动处理器可进行操作以通过信号将所述启动代码 分区的成功完成告知与启动代码序列中的下一启动代码分区相关联 的另一启动处理器。
3. 根据权利要求1或权利要求2所述的方法,其中,在其各自相 关联的启动处理器上执行所述多个启动代码分区包括在启动处理器之间的通信中使用安全机制,以确保所述多个启动 代码分区在其各自相关联的启动处理器上的非折衷执行。
4. 根据权利要求3所述的方法,其中,所述安全机制至少包括以 下各项中的一个在启动处理器之间传递安全令牌,在启动处理器之 间传递数字签名,使用密码,传递启动代码分区的校验和,或者使用 信号的公开密钥/私有密钥加密。
5. 根据前述权利要求中任一项所述的方法,其中,启动代码分区 的数目等于启动处理器的数目。
6. 根据前述权利要求中任一项所述的方法,进一步包括 从所述多个处理器中随机选择所述启动处理器,其中所述启动处理器是所述多个处理器的子集。
7. 根据权利要求6所述的方法,进一步包括在未被随机选作启动处理器的所述多个处理器的处理器上执行掩码。
8. 根据前述权利要求中任一项所述的方法,进一步包括 随机选择哪个启动代码分区与每个启动处理器相关联,其中每个启动代码分区可以不同于其他启动代码分区。
9. 根据前述权利要求中任一项所述的方法,其中,用于所述启动 处理器上的启动代码分区执行的会话布置为菊花链布置、环形布置或 者主/从布置之一。
10. —种与包含多个处理器的数据处理系统结合使用的用于启动 所述数据处理系统的设备,包括用于将启动代码划分为多个启动代码分区的装置; 用于在所述数据处理系统的所述多个处理器中的多个启动处理 器的每一个中从所述多个启动代码分区中载入启动代码分区的装置;以及用于将所述多个启动代码分区作为多个会话在其各自相关联的 启动处理器上执行以由此启动所述数据处理系统的装置。
11. 根据权利要求10所述的设备,进一步包括用于当每个启动 代码分区在其各自相关联的会话中的执行完成时,通过执行所述启动 代码分区的所述多个处理器中的相关联启动处理器利用信号将所述 启动代码分区的成功完成告知与启动代码序列中的下一启动代码分 区相关联的另一启动处理器。
12. 根据权利要求10或者权利要求11所述的设备,进一步包括 用于在启动处理器之间的通信中使用安全机制以确保所述多个启动 代码分区的非折衷执行的装置。
13. 根据权利要求12所述的设备,其中,所述安全机制至少包括 以下各项中的一个在启动处理器之间传递安全令牌,在启动处理器 之间传递数字签名,使用密码,传递启动代码分区的校验和,或者使 用信号的公开密钥/私有密钥加密。
14. 根据权利要求10到13任一项所述的设备,其中,启动代码 分区的数目等于启动处理器的数目。
15. 根据权利要求10到14任一项所述的设备,进一步包括用于 从所述多个处理器中随机选择所述启动处理器的装置,并且其中所述 启动处理器是所述多个处理器的子集。
16. 根据权利要求15所述的设备,进一步包括用于在未被随机 选作启动处理器的所述多个处理器的处理器上执行掩码的装置。
17. 根据权利要求10到16任一项所述的设备,进一步包括用于 随机选择哪个启动代码分区与每个启动处理器相关联的装置,并且其 中每个启动代码分区可以不同于其他启动代码分区。
18. 根据权利要求10到17任一项所述的设备,其中,用于所述启 动处理器上的启动代码分区执行的会话被布置为菊花链布置、环形布 置或者主/从布置之一。
19. 一种包括程序代码装置的计算机程序,当所述程序在计算机 上运行时,所述程序代码装置适于执行根据权利要求1到9任一 项所述 的步骤。
全文摘要
提供一种用于跨越多个处理器的安全启动的系统和方法。通过该系统和方法,将启动代码划分为多个启动代码分区。将多处理器系统的处理器选为启动处理器,并且为每个处理器提供启动代码分区,以便按照预定的启动代码序列执行。每个处理器根据启动代码序列来执行其启动代码分区,并且将其启动代码分区的成功、未折衷执行通过信号告知给下一处理器。如果任何处理器都没有通过信号告知其启动代码分区的成功完成和/或未折衷执行,则启动操作失败。关于启动操作,例如可以按照菊花链、环形或者主/从布置来布置处理器。
文档编号G06F21/00GK101401103SQ200780008396
公开日2009年4月1日 申请日期2007年5月11日 优先权日2006年6月9日
发明者C·J·斯潘迪科, C·M·奥尼尔, J·J·德门特, J·N·戴尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1