硬件和软件关联和认证的制作方法

文档序号:6533353阅读:263来源:国知局
硬件和软件关联和认证的制作方法
【专利摘要】通过在启动时间时从外部存储器加载安全代码并且使用认证密钥对程序代码进行认证来完成硬件和软件的认证和关联。当认证了该安全代码后,可以获得对全硬件和软件功能性的访问。然而,如果安全代码的认证失败,则执行向硬件和软件资源提供受限功能性的不安全代码。
【专利说明】硬件和软件关联和认证
[0001] 相关申请的夺叉引用
[0002] 本申请是2012年3月22日(22. 03. 2012)提交的美国SN13/427, 148的继续申请 并要求保护其优先权,该申请的整体教导通过引用结合于此。

【技术领域】

【背景技术】
[0003] 装置克隆和未经授权的产品生产会对公司的收入和品牌资产造成损失。此类克隆 活动影响原始设备制造商(OEM)的研究和开发,从而以更低的成本提供相似和具有竞争力 的产品。自然,这给OEM的利润和品牌资产造成重大损失。例如,依赖盗取的硬件设计和克 隆系统的非品牌系统(其通常构建质量较低)可以用于以减低的成本与OEM进行竞争。此 类克隆系统的制造商还经常从原始产品复制软件并以非常低的成本提供完整的系统(例 如,非品牌服务器和路由器)。
[0004] 除了利润损失以外,未经授权的产品生产会引起OEM的商业模式的中断。例如,黑 客可以改变现有系统的功能性,从而运转和执行使OEM的商业模式中断的非预期功能。进 一步地,承包商会过度构建OEM的订单以外的设备并且用同一品牌但更低的价格销售未经 授权的设备,并且没有给OEM带来收入。
[0005] 可信计算组织(TCG)是一个包括组件供应商、软件开发商、系统供应商以及网络 和基础设施公司的行业组织,该组织开发和支持用于跨多个平台类型的可信计算的开放行 业规范。TCG定义了存储密钥、密码和数字证书的微控制器的可信平台模块(TPM)规范。通 过安全TCG子系统保护安全工艺(如数字签名和密钥交换)。如果启动顺序不是和预期的 一样,则会拒绝对平台中的数据和秘密的访问。由此使如安全电子邮件、安全网络访问和本 地数据保护等关键应用和能力更加安全得多。TPM不能够控制被执行的软件。TCG子系统通 过存储和报告运行时间之前的配置信息可以仅充当更高级服务和应用的'从属(slave)'。 其他应用确定用此信息来完成什么。TCG构建块从不可以控制系统或报告正在运行的应用 的状态。


【发明内容】

[0006] 本发明的不例实施例中的一种方法和相应的装置通过在启动时间时从一个外部 存储器加载一个安全代码以及使用一个与设备相关联的认证密钥对该安全代码进行认证 并且在该安全代码的认证失败的情况下执行一个不安全代码来认证该安全代码并使其与 该设备相关联。
[0007] 在某些实施例中,该外部存储器可以是不安全存储器、可重编程闪速存储器、或只 读存储器(ROM)中的至少一个。
[0008] 在某些实施例中,该安全代码可以存储在该设备的一个内部存储器中。可以使用 来自一个ROM的多个指令存储该安全代码。在认证了该安全代码的情况下,可以执行该安 全代码。在某些实施例中,在认证了该安全代码的情况下,可以执行来自该内部存储器的该 安全代码。在某些实施例中,在认证了该安全代码的情况下,可以进一步认证该安全代码的 执行触发的多个程序。
[0009] 在某些实施例中,可以使用来自一个ROM的多个指令将该安全代码复制到一个安 全内部可写存储器中。该安全内部可写存储器可以是一个高速缓冲存储器的一个分区,并 且可以被安排成用于执行该安全代码。在某些实施例中,该安全代码可以是未加密的。
[0010] 在某些实施例中,一个高速缓冲存储器可以被分区成包括该内部存储器。该内部 存储器可以位于该高速缓冲存储器内的一个地址处并且具有一个动态可变的容量。
[0011] 在某些实施例中,可以使用该安全代码从该外部存储器加载与该设备相关联的多 个安全密钥。这些安全密钥可以包括装置认证密钥、冗余装置认证密钥、芯片加密密钥、图 像认证密钥、存储器保护密钥、以及安全存储密钥中的至少一项。这些安全密钥可以是未加 密的或加密的。可以使用该安全代码对这些安全密钥进行认证。在某些实施例中,该安全 代码可以用于确定对这些安全密钥的更新是否可用。在某些实施例中,可以使用一个更新 代码对这些安全密钥进行更新。在某些实施例中,可以使用该安全代码将这些安全密钥与 一个秘密密钥进行比较,并且在该比较失败的情况下,发出一个出错指示。
[0012] 在某些实施例中,一个安全最早启动代码认证器是该认证密钥和该安全代码的一 个函数,该认证密钥是一个与该设备相关联的主认证密钥(MAK)的一个函数。该认证密钥 可以是加密的。在某些实施例中,可以从该安全内部可写存储器执行该安全最早启动代码。 在某些实施例中,可以对该认证密钥进行认证,并且在该认证失败的情况下,可以根据一个 合适的出错指示执行该不安全代码。
[0013] 在某些实施例中,在该安全代码的认证失败的情况下,可以生成一个出错信号。
[0014] 在某些实施例中,可以执行来自该内部存储器和该外部存储器中的至少一个的该 不安全代码。该不安全代码可以包括受限功能性。在某些实施例中,具有受限功能性可以 包括具有对该设备的结构的受限访问。在某些实施例中,具有受限功能性可以包括具有对 该设备上存储的软件的受限访问。某些实施例可以在一段预先确定的时期中提供该受限功 能性。该不安全代码可以是未加密的并且是可改变的。
[0015] 在某些实施例中,将该认证密钥确定为该设备相关联的一个主认证密钥(MAK)的 一个函数。在某些实施例中,该认证密钥可以是一个高级加密标准(AES)密钥。在某些实 施例中,该安全代码包括一个认证器。该认证器可以是该认证密钥的一个函数。
[0016] 在某些实施例中,该设备可以是网络处理器、通用处理器片上系统、以及主板中的 至少一项。

【专利附图】

【附图说明】
[0017] 根据本发明的示例性实施例的以下更具体的说明,上述内容将是明显的,如在这 些附图中展示的,其中贯穿这些不同的视图的相同的参照字符是指相同的部分。这些图不 一定是按比例绘制,而是着重展示本发明的实施例。
[0018] 图1展示了根据本发明的实施例的安全软件和硬件关联(SSHA)电路的框图。
[0019] 图2展示了安全密钥的高级框图。
[0020] 图3为可以用某些实施例执行的程序的流程图。

【具体实施方式】
[0021] 以下是对本发明的示例性实施例的说明。
[0022] 图1展示了可以与本发明的实施例一起使用的安全软件和硬件关联(SSHA)电路 100的示例实施例的框图。该SSHA支持两种能力:
[0023] ?原始设备制造商(OEM)硬件将仅运行OEM软件;以及
[0024] · OEM软件将仅在OEM硬件上运行。
[0025] 如所示,SSHA电路100包括一个耦合到具有内部存储器220的处理器100上的外 部存储器210。外部存储器210可以是不安全存储器、可重编程闪速存储器、或只读存储器 (ROM)。外部存储器210可以包括安全存储器270、不安全存储器280、或受保护存储器290。
[0026] 内部存储器220可以是片上指令存储器,如只读存储器(ROM)。内部存储器220经 常保持有安全软件和硬件关联功能的实现所需的功能。内部存储器220中所保持的信息可 以是加密的或未加密的。然而,不管加密与否,由于内部存储器220在芯片上,其完全安全 并且被保护免受芯片外对手影响。
[0027] 在启动时间时,内部存储器220中所存储的指令从外部存储器210加载安全最早 启动代码273-C。安全最早启动代码273-C可以是启动代码或应用软件。通过安全最早启 动代码认证器273-A使用认证密钥(未示出)对安全最早启动代码273-C进行认证。安全 最早启动代码认证器237-A使用安全最早启动代码273-C的功能和主AES密钥(MAK) 340。 例如,认证密钥可以是将MAK 340当作AES密钥使用的AES-CBC MAC (消息认证代码)。MAK 340对每个处理器100而言是唯一的,并且,如安全最早启动认证器273-A对每个处理器 100而言也是唯一的。
[0028] 安全存储器270是外部存储器210中的最安全的区域并且除了用于稍后启动阶段 的密钥和用于对这些密钥进行更新的代码以外还存储了最早启动代码。MAK 340通常用于 保护安全存储器270和保护安全存储器270中所存储的代码的执行。在一个实施例中,稍 后启动阶段不使用MAK。受保护存储器290存储稍后启动阶段和用户代码。受保护存储器 290通常由安全密钥保护。不安全存储器280存储在许多实施例中不受任何密钥保护的代 码。
[0029] 在某些实施例中,可以通过内部存储器220使用从外部安全存储器270检索认证 器273-A并使用MAK 340对处理器100的安全最早启动代码273-C进行认证的代码认证单 元(CAU)201来对安全最早启动代码273-C进行认证。CAU 201可以是可编程逻辑。
[0030] -旦被认证,安全最早启动代码273-C可以存储在设备的内部存储器220内。然 而,如果安全最早启动代码273-C的认证失败,则内部存储器指令根据合适的出错指示执 行来自外部存储器210的不安全存储器280部分的不安全代码281。不安全代码281 -般 以受限特权来执行。
[0031] 安全存储器270进一步包括对用于认证、加密、以及完整性的信息和密钥进行认 证的安全密钥认证器271-A (下文中通常称为安全密钥271-C)。安全密钥认证器271-A还 可以存储用于执行认证操作的认证参数320 (稍后参照图2示出)。
[0032] 安全存储器270可以进一步包括安全密钥更新代码认证器272-A。安全密钥更新 代码认证器272-A可以用于对用于更新安全密钥271-C的信息(下文中通常称为安全密钥 更新代码272-C)进行认证。安全密钥更新代码272-C还可以更新安全密钥更新代码272-C 和/或安全最早启动代码273-C。安全密钥更新代码272-C可以通过使用从外部存储器210 获得的信息进一步确定何时以及如何执行对安全密钥的更新。在某些实施例中,可以使用 MAK 340 (稍后参照图2进行描述)或通过其他认证密钥对更新代码认证器进行认证。
[0033] 安全密钥更新代码272-C通常以完全特权运行并且可以访问MAK。如此,必须对安 全密钥更新代码272-C进行认证并且还可以对其进行加密。一旦被认证,安全密钥更新代 码272-C可以被授予其完全特权。然而,如果没有被认证(即,如果存在错误和/或认证失 败),则可以根据合适的出错指示执行来自不安全存储器281的不安全代码281。在此类实 例中,不安全代码281可以用受限特权运行和/或运行一段有限时期。
[0034] 外部存储器210的受保护存储器290部分可以包括用于对受保护初始启动(PIB) 代码291-C进行认证的(PIB)代码认证器291-A。安全最早启动代码273-C和/或安全密 钥更新代码272-C可以用于对安全密钥271-C进行认证。正常地在成功认证安全代码以后 执行(PIB)代码291-C。
[0035] 在某些实施例中,(PIB)代码291-C初始地用尽处理器100的安全内部可写存储 器230区段。(PIB)代码291-C具有受限功能性并且需要后续启动阶段来启动处理器100。 关于后续启动阶段(稍后启动阶段代码292-C)的信息可以存储在受保护存储器290内并 且使用稍后启动阶段代码认证器292-A来认证。进一步地,在某些实施例中,可以通过处理 器100的动态随机存取存储器(DRAM,未示出)部分来认证后续启动阶段。
[0036] 在某些实施例中,存储在处理器100内的R0MEN启动字段在启动时用于确定处理 器100是否应执行SSHA启动。在一个实施例中,R0MEN启动字段是一个位或其他布尔表示。 当执行安全软件和硬件关联时,R0MEN启动字段被设置成1、或"被设置",其访问内部存储 器220。换言之,当R0MEN启动字段被设置成1时,使能处理器的SSHA启动。在所有其他情 况下,R0MEN启动字段被设置成零,或者"未被设置"。当R0MEN启动字段被设置成零时,处 理器100通过访问外部存储器210来启动。在启动以使能对内部存储器220的访问之前通 过硬件设置R0MEN启动字段。当R0MEN启动字段被设置成1时,在处理器100充分发挥功 能并且发起在此描述的安全软件和硬件关联程序之前,内部存储器220运行。确切地,在处 理器100的标准启动位置内的物理地址处使能内部存储器220,并且当设置R0MEN启动字段 (即,设置成1)时,处理器100执行内部存储器220中所包括的指令。
[0037] 在某些实施例中,该受保护存储器可以包括可以用于执行进一步认证和硬件-软 件关联的一般用户代码293-C。在一个实施例中,一般用户代码293-C包括不只一条代码。 一般用户代码认证器293-A可以用于对一般用户代码293-C进行认证。在一个实施例中, 一般用户代码认证器293-A包括不只一个认证器。然而,在许多实施例中,一般用户代码 293-C用于执行用户的任务。
[0038] 内部存储器220中所存储的指令通常为在启动时间时执行的第一指令。这些内 部存储器指令的主要功能是一旦安全最早启动代码273-C被认证就对其进行存储、加载和 /或执行。然而,在加载和执行安全最早启动代码273-C之前,这些内部存储器指令创建保 持安全最早启动代码273-C的片上安全内部可写存储器230。可以通过对高速缓冲存储器 (未示出)进行分区来创建片上安全内部可写存储器230,从而使得片上安全内部可写存储 器230位于该高速缓冲存储器内的一个地址处并且具有动态可变的容量。在某些实施例 中,片上安全内部可写存储器230可以位于2级高速缓冲存储器(未示出)内。
[0039] 片上安全内部可写存储器230可以用于执行早期启动功能,包括在处理器初始化 之前保持和执行安全最早启动代码273-C。片上安全内部可写存储器230位于芯片上,并且 如此,是安全的并且被保护免受外部对手影响。除了保持和执行安全最早启动代码273-C 以外,片上安全内部可写存储器230可以用于使用安全最早启动代码273-C从外部存储器 210加载安全密钥271-C。
[0040] 在某些实施例中,片上安全内部可写存储器230可以用于存储认证密钥。如之前 指出的,由于片上安全内部可写存储器230在芯片上,防护其免受外部对手影响。相应地, 片上安全内部可写存储器230可以用于安全地存储认证密钥245。认证密钥245可以用加 密或未加密格式存储在片上安全内部可写存储器230上。
[0041] 图2展示了安全密钥271-C的高级框图。安全密钥271-C存储用于认证、加密、和 完整性330的信息和密钥。安全密钥271-C还可以存储用于执行认证操作的认证参数320。
[0042] 可以使用用于存储安全密钥271-C的不同加密钥模式301或选项。例如,可以使用 将安全密钥271-C存储在SSHA使能的装置(未示出,例如,硅装置)内的直接加密钥模式。 在一个优选实施例中,可以使用间接加密钥模式。间接加密钥模式可以将安全密钥271-C 作为二值图像的一部分来存储。在某些实施例中,安全密钥271-C可以存储在SSHA使能的 装置(例如,附接到SSHA使能的装置上的闪存装置)外部。
[0043] 在某些实施例中,安全密钥271-C可以存储在安全内部可写存储器230内。鉴于安 全内部可写存储器230是安全的,可以用或者未加密或者加密的格式存储安全密钥271-C 及其加密钥模式301。在某些实施例中,安全密钥271-C可以存储在外部存储器210的安全 存储器270部分内。
[0044] 可以通过每个SSHA使能的装置的唯一高级加密标准(AES)密钥来对安全密钥 271-C的内容进行加密。例如,唯一 AES 256位密钥(如MAK 340)可以用于对安全密钥 271-C进行加密。因此,MAK340通常不存储在安全密钥271-C内。
[0045] 在某些实施例中,通过硬件生成MAK 340 (图1)。MAK 340可以是密值和芯片ID 362的一个函数。芯片ID 362可以是可读的,但该密值不可以被软件读取。
[0046] 在某些实施例中,在SSHA使能的装置的制造过程中可以选择MAK 340 (图1)加密 钥模式并将其安装在SSHA使能的装置内。未披露MAK 340 (图1)并且任何人不可对其进 行访问。在某些实施例中,MAK 340(图1)可以被设计成使得其不能被读出或被改变。进 一步地,MAK 340(图1)可以针对任何具有根据本发明的实施例的密码关联机构的给定装 置保持相同并且可以用作在安全密钥271-C与该装置之间建立关系的基础。
[0047] 在某些实施例中,可以使用其他安全密钥认证加密钥模式。此类安全密钥认证加 密钥模式的示例包括:装置认证密钥350 (DAK)、冗余装置认证密钥355 (RDAK)、芯片加密密 钥365 (CEK)、图像认证密钥345 (IAK)、存储器保护密钥360 (MPK)、以及安全存储密钥(未示 出)。
[0048] DAK 350是用于建立装置的所有权的公共密钥。DAK 350可以用于认证安全密钥 271-C写和/或更新消息。通过认证写和/或更新消息,DAK 350对安全密钥271-C中所存 储的密钥进行控制。在某些实施例中,相应的私有密钥(未示出)可以与DAK 350相关联。 装置所有人(即,OEM)拥有与DAK 350相对应的私有密钥。
[0049] 在某些实施例中,可以使用冗余装置认证密钥(RDAK)355。DAK 355是用于建立装 置的所有权的冗余公共密钥。RDAK 355用于认证安全密钥271-C写/更新消息。通过认 证安全密钥271-C写/更新消息,RDAK 355对安全密钥271-C中所存储的密钥进行认证和 控制。在某些实施例中,相应的私有密钥(未示出)可以与RDAK 355相关联。装置所有人 (即,OEM)拥有与RDAK 355相对应的私有密钥。
[0050] 在某些实施例中,可以通过DAK 350或RDAK 355私有密钥所有者使用安全密钥 271-C更新机构更新RDAK 355。RDAK 355实现方式是可选的并且对于在此描述的密码关联 机构的完整功能性而言是不需要的。
[0051] CEK 365可以是任何对称加密密钥。CEK 365与任何具有根据本发明的实施例的 密码关联机构的给定装置相关联。CEK 365是安全密钥271-C的一部分并且用于保护二值 图像,其是供应商软件。CEK365在每装置基础上可以是唯一的,或其对于一组装置或属于 OEM的所有装置而言可以是相同的。
[0052] 进一步地,可以通过接收提供新对称CEK 365的相关联对称OEM私有密钥所签名 的请求在安全连接上改变CEK 365。此外,可以通过DAK 350或RDAK 355私有密钥的所有 者使用安全密钥271-C更新机构更新CEK 365。可以使用安全密钥271-C访问机构在DAK 350或RDAK 355公共密钥加密容器中读取CEK。
[0053] IAK 345可以包括用于对可以在相应的SSHA使能的装置上运行的二值图像进行 认证的一个或多个公共密钥。
[0054] 在某些实施例中,IAK 345可以存储在用于在程序代码图像认证过程中参考密钥 的索引表内。
[0055] 在某些实施例中,可以通过DAK 350或RDAK 355私有密钥的所有者使用安全密钥 271-C更新机构更新IAK 345。在某些实施例中,可以使用安全密钥271-C访问机构在DAK 350或RDAK 355公共密钥加密容器中读取IAK 345。
[0056] 在某些实施例中,MPK 360 (其是一个高级加密标准(AES)基础密钥)可以用于 保护主存储器的内容并且是安全密钥271-C的一部分。在某些实施例中,处理器100的 DRAM(未示出)可以可选地被分区成多个完全安全且受保护的区域,并且SSHA使能的处理 器的DRAM控制器可以被安排成包括用于加密/解密和加扰/解扰的内置逻辑。可以使用 存储器加密密钥(MEK) 362对完全安全的区域中所存储的数据进行加密或解密。在某些实 施例中,可以使用存储器加扰密钥(MSK) 364对存储到存储器的受保护区域的数据进行加 扰或解扰。可以从MPK 360导出MSK 364和MEK 362。
[0057] 在某些实施例中,安全代码还可以用于对安全密钥进行认证。该安全代码可以用 于确定对这些安全密钥的更新是否可用。在某些实施例中,更新代码可以用于对安全密钥 进行更新。更新代码可以通过使用从外部存储器210(图1所示)获得的信息来确定何时 以及如何执行对安全密钥的更新。在某些实施例中,可以具有与更新代码相关联的认证器。 可以通过MAK 340或通过其他认证密钥对更新代码认证器进行认证。
[0058] 更新代码通常以完全特权运行并且可以访问主认证密钥。如此,必须对更新代码 进行认证并且还可以对其进行加密。在某些实施例中,为了确保安全执行,更新代码用尽安 全内部可写存储器230(图1所示)。一旦被认证,更新代码可以被授予其完全特权。然而, 如果没有被认证(即,如果存在错误和/或认证失败),则安全代码反而可以根据合适的出 错指示执行不安全代码。如之前所指出的,不安全代码可以用受限特权运行和/或运行一 段有限时期。
[0059] 在某些实施例中,在执行防止未经授权的程序代码获得对系统的访问之前,使在 处理器1〇〇(图1)中执行的所有程序代码有效并且对其进行认证。在某些实施例中,可以 对某个客户代码加密以防止可能的对手复制该代码。
[0060] 进一步地,在某些实施例中,可以使用认证密钥认证对安全密钥271-C的更新。在 某些实施例中,认证密钥可以包括该认证密钥(参照图2所描述的)。该认证密钥可以是加 密的或未加密的。在某些实施例中,可以执行来自安全内部可写存储器230(图1)的认证 密钥以确保其安全。
[0061] 本发明的实施例防止OEM软件在除了 OEM硬件以外的任何事物上运行。然而,鉴 于对安全密钥271-C中的某些密钥和认证密钥的访问,对手会可能在处理器100 (图1)上 运行安全代码或安全密钥271-C的旧版本。为了防止这样做,本发明的某些实施例限制仅 通过外部代码访问处理器而只允许最终OEM访问安全代码和安全密钥271-C。
[0062] 在某些实施例中,为了防止对手使用安全密钥271-C和安全最早启动代码273-C 的更旧的版本,可以使用秘密密钥(未示出)。安全最早启动代码273-C可以将该秘密密 钥与安全密钥271-C字段进行比较,并且如果这些字段不匹配则认为其失败。为了保证仅 OEM可以访问安全密钥271-C,秘密密钥值保持远离除了 OEM以外的所有处理器100(图1) 用户。
[0063] 如之前指出的,如果安全最早启动代码273-C的认证失败,则安全内部可写存储 器230指令根据合适的出错指示执行不安全代码281。如果对安全密钥的更新的认证失败, 则还可以执行不安全代码281。还可以在其他情况下执行不安全代码281。例如,不安全代 码281可以用于提供对处理器100资源的受限访问。例如,不安全代码可以用于向不可以 访问安全最早启动代码273-C或安全密钥271-C的用户提供受限使用/测试。
[0064] 在某些实施例中,如果安全最早启动代码273-C的认证失败,则在使系统不支持 仅受限调试模式之后,不安全代码281可以断言通用输入/输出(GPI0)标志并停止或跳至 特定位置。
[0065] 不安全代码281通常以受限特权运行并且具有对软件和系统结构的受限访问。不 安全代码281可以是未加密的并且未认证的。在某些实施例中,对手可以自由修改不安全 代码281。尽管不安全代码281可以初始地用尽外部存储器210的安全内部可写存储器230 部分,但在某些实施例中,不安全代码281可以用尽不安全存储器280 (图1)。进一步地,如 果高级功能需要,在某些实施例中,不安全代码281可以执行进一步的芯片初始化。
[0066] 本发明的实施例提供了限制MAK 340的使用、和减少对安全密钥的访问、以及保 护系统免受对手的硬件、软件、和系统结构解决方案。对MAK 340访问的限制是关键的,因 为一旦对手获得对MAK340的访问,其会可能对安全密钥271-C进行解码并获得对所有代码 的访问。
[0067] 为了限制对MAK的访问,本发明的实施例使用一种可以禁用访问MAK (下文中称为 "DIS_MAK")的功能。如果DIS_MAK字段为零,则可以访问MAK。然而,当设置DIS_MAK字段 时,则该硬件防止对MAK 340的任何访问。该硬件还可以防止DIS_MAK字段归零。
[0068] 如以上指出的,在处理器100(图1)充分发挥功能之前,在早期启动时进行内部存 储器220 (图2)、安全代码、以及更新代码的认证。早期启动之外,由于存在对手软件正在运 行的可能性,通过设置DIS_MAK字段来禁用对MAK的访问。进一步地,当执行其他处理步骤 时,如不安全代码或客户特定代码的执行,该硬件不允许使用或访问MAK 340并且DIS_MAK 字段保持设置。此外,某些实施例允许DIS_MAK字段在安全密钥271-C和安全密钥更新代 码272-C的认证过程中保持设置。
[0069] 某些实施例可以包括用于限制对处理器100(图1)的访问的附加功能性。例如, 某些实施例可以使用一种用于对外部代码可用的处理器1〇〇(图1)功能性进行限制的功 能(下文中称为"CHIPKILL")。重要的是限制外部代码访问,因为外部代码执行可以指示 对手未经授权使用处理器100 (图1)。在某些实施例中,CHIPKILL功能性可以包括限制处 理器100的正在使用的处理器内核的数量。在某些实施例中,在一段预先确定的时期后, CHIPKILL功能性可以防止访问处理器100(图1)。在某些实施例中,CHIPKILL功能性可以 被扩展至禁用处理器1〇〇(图1)的某些输入/输出特征。进一步地,某些实施例可以防止 禁用CHIPKILL功能性。
[0070] 在某些实施例中,当设置CHIPKILL字段时,除了一个内核以外的所有处理器内核 可选地保持复位。当CHIPKILL字段从0过渡到1后,该硬件发起CHIPKILL计时器。当计时 器到期时,如果CHIPKILL字段仍然设置,则该硬件内在地迫使指令断言将芯片保持复位, 直到下一个芯片复位。
[0071] CHIPKILL计时器可以被设置成任何预先确定的时期。例如,在一个实施例中, CHIPKILL计时器可以默认为大致20秒。仅可以由芯片复位停止CHIPKILL计时器。在某些 实施例中,由对时间量进行控制的CHIPKILL[计时器(TIMER)]字段选择CHIPKILL计时器 间隔,CHIPKILL字段保持设置并且可以大到一天或更大。
[0072] 在某些实施例中,可以对DRAM内容进行加扰。这是为了防止芯片对手以仅仅监控 处理器100的DRAM中进行的读/写来访问受保护的代码和数据。
[0073] 该示例实施例的大多数认证和验证功能可以存储在外部存储器210上和从其中 执行,在该存储器中存储是更成本有效的。如此,内部存储器220不需要是大的并且可以具 有受限功能性。
[0074] 图3为可以用某些实施例执行的程序的流程图400。在启动时间时,来自内部存储 器的指令可以用于准备安全内部可写存储器410。该安全内部可写存储器位于物理地址处 并且具有一个比处理器100(图1)的高速缓冲存储器的容量更小的容量。将安全代码从外 部存储器加载到安全内部可写存储器内420并对其进行认证430。如果安全代码认证440, 则执行445安全代码。如果安全代码没有认证450,在包括用于限制对处理器100(图1)的 访问的功能性的实施例中,某些功能性可以用于限制对处理器的访问455。然后,执行来自 不安全存储器460的不安全代码。可以执行来自不安全存储器、可重编程闪速存储器、或只 读存储器(ROM)的不安全代码。
[0075] 虽然通过参考本发明的示例实施例已经具体地示出和描述了本发明,但本领域普 通技术人员将会理解在不脱离由所附权利要求书限定的本发明范围的情况下可在形式和 细节中做出不同的改变。
【权利要求】
1. 一种用于认证安全代码并使其与设备相关联的方法,所述方法包括: 在启动时间时从外部存储器加载所述安全代码;以及 使用与所述设备相关联的认证密钥对所述安全代码进行认证,并且在所述安全代码的 认证失败的情况下,执行不安全代码。
2. 根据权利要求1所述的方法,其中,所述外部存储器是不安全存储器、可重编程闪速 存储器、或只读存储器(ROM)中的至少一个。
3. 根据权利要求1所述的方法,进一步包括将所述安全代码存储在所述设备的内部存 储器中。
4. 根据权利要求3所述的方法,进一步包括将高速缓冲存储器分区成包括所述内部存 储器,所述内部存储器位于所述高速缓冲存储器内的地址处并且具有动态可变的容量。
5. 根据权利要求4所述的方法,进一步包括执行来自所述内部存储器和所述外部存储 器中的至少一个的所述不安全代码。
6. 根据权利要求4所述的方法,进一步包括在认证了所述安全代码的情况下执行来自 所述内部存储器的所述安全代码。
7. 根据权利要求6所述的方法,进一步包括在认证了所述安全代码的情况下继续认证 由所述安全代码的执行触发的程序。
8. 根据权利要求3所述的方法,进一步包括使用来自所述设备的所述内部存储器的指 令存储所述安全代码。
9. 根据权利要求1所述的方法,进一步包括在认证了所述安全代码的情况下执行所述 安全代码。
10. 根据权利要求9所述的方法,进一步包括使用来自只读存储器(ROM)的指令来将 所述安全代码复制到安全内部可写存储器内,所述安全内部存储器是高速缓冲存储器的分 区,并且执行来自所述安全内部可写存储器的所述安全代码。
11. 根据权利要求10所述的方法,进一步包括使用所述安全代码从所述外部存储器加 载与所述设备相关联的安全密钥。
12. 根据权利要求11所述的方法,其中所述安全密钥包括装置认证密钥、冗余装置认 证密钥、芯片加密密钥、图像认证密钥、存储器保护密钥、以及安全存储密钥中的至少一项。
13. 根据权利要求11所述的方法,其中对所述安全密钥进行加密。
14. 根据权利要求11所述的方法,进一步包括使用所述安全代码对所述安全密钥进行 认证。
15. 根据权利要求11所述的方法,进一步包括使用所述安全代码确定对所述安全密钥 的更新是否可用。
16. 根据权利要求15所述的方法,进一步包括使用更新代码对所述安全密钥进行更 新。
17. 根据权利要求11所述的方法,其中安全代码认证器是所述认证密钥和所述安全代 码的函数,所述认证密钥是与所述设备相关联的主认证密钥(MAK)的函数。
18. 根据权利要求17所述的方法,其中对所述认证密钥进行加密。
19. 根据权利要求17所述的方法,进一步包括执行来自所述安全内部可写存储器的所 述安全最早启动代码。
20. 根据权利要求17所述的方法,进一步认证所述认证密钥,并且在所述认证失败的 情况下,根据合适的出错指示执行所述不安全代码。
21. 根据权利要求11所述的方法,进一步包括使用所述安全代码将所述安全密钥与秘 密密钥进行比较,并且在所述比较失败的情况下,发出出错指示。
22. 根据权利要求1所述的方法,进一步包括在所述安全代码的认证失败的情况下生 成出错信号。
23. 根据权利要求1所述的方法,其中所述不安全代码包括受限功能性。
24. 根据权利要求23所述的方法,其中具有受限功能性包括具有对所述设备的结构的 受限访问。
25. 根据权利要求23所述的方法,其中具有受限功能性包括具有对所述设备上所存储 的软件的受限访问。
26. 根据权利要求23所述的方法,其中所述不安全代码未加密并且是可改变的。
27. 根据权利要求23所述的方法,进一步包括在预先确定的时期中提供所述受限功能 性。
28. 根据权利要求1所述的方法,进一步包括将所述认证密钥确定为所述设备相关联 的主认证密钥(MAK)的函数。
29. 根据权利要求1所述的方法,其中所述安全代码包括认证器,所述认证器是所述认 证密钥的函数。
30. 根据权利要求1所述的方法,其中所述认证密钥是高级加密标准(AES)密钥。
31. 根据权利要求1所述的方法,其中所述设备是网络处理器、通用处理器片上系统、 以及主板中的至少一项。
32. 根据权利要求1所述的方法,其中所述安全代码未加密。
33. 根据权利要求1所述的方法,进一步包括使用认证密钥对与所述设备相关联的安 全密钥进行更新。
34. -种用于认证安全代码并使其与设备相关联的装置,所述装置包括: 加载器,在启动时间时从外部存储器加载所述安全代码;以及 认证器,使用与所述设备相关联的认证密钥对所述安全代码进行认证,并且在所述安 全代码的认证失败的情况下,执行不安全代码。
35. 根据权利要求34所述的装置,其中所述外部存储器是不安全存储器、可重编程闪 速存储器、或只读存储器(ROM)中的至少一个。
36. 根据权利要求34所述的装置,其中所述设备进一步包括被配置成用于存储所述安 全代码的内部存储器。
37. 根据权利要求36所述的装置,其中高速缓冲存储器被分区成包括所述内部存储 器,所述内部存储器被安排成位于所述高速缓冲存储器内的地址处并且包括动态可变的容 量。
38. 根据权利要求37所述的装置,其中执行来自所述内部存储器和所述外部存储器中 的至少一个的所述不安全代码。
39. 根据权利要求37所述的装置,其中在认证了所述安全代码的情况下,执行来自所 述内部存储器的所述安全代码。
40. 根据权利要求39所述的装置,其中在认证了所述安全代码的情况下,继续认证由 所述安全代码的执行触发的程序。
41. 根据权利要求36所述的装置,其中使用来自只读存储器(ROM)的指令存储所述安 全代码。
42. 根据权利要求34所述的装置,其中在认证了所述安全代码的情况下,执行所述安 全代码。
43. 根据权利要求42所述的装置,其中使用来自只读存储器(ROM)的指令来将所述 安全代码复制到安全内部可写存储器内,所述安全内部可写存储器是高速缓冲存储器的分 区,并且其中执行来自所述安全内部可写存储器的所述安全代码。
44. 根据权利要求43所述的装置,其中使用所述安全代码从所述外部存储器加载与所 述设备相关联的安全密钥。
45. 根据权利要求44所述的装置,其中所述安全密钥包括装置认证密钥、冗余装置认 证密钥、芯片加密密钥、图像认证密钥、存储器保护密钥、以及安全存储密钥中的至少一项。
46. 根据权利要求44所述的装置,其中对所述安全密钥进行加密。
47. 根据权利要求44所述的装置,其中使用所述安全代码认证所述安全密钥。
48. 根据权利要求44所述的方法,进一步包括更新器,所述更新器使用所述安全代码 确定对所述安全密钥的更新是否可用。
49. 根据权利要求48所述的装置,其中所述更新器使用更新代码对所述安全密钥进行 更新。
50. 根据权利要求48所述的装置,其中安全代码认证器是所述认证密钥和所述安全代 码的函数,所述认证密钥是与所述设备相关联的主认证密钥(MAK)的函数。
51. 根据权利要求50所述的装置,其中对所述认证密钥进行加密。
52. 根据权利要求50所述的装置,其中执行来自所述安全内部可写存储器的所述安全 最早启动代码。
53. 根据权利要求50所述的装置,其中在所述认证失败的情况下,所述认证器根据合 适的出错指示执行所述不安全代码。
54. 根据权利要求44所述的装置,进一步包括比较器,所述比较器使用所述安全代码 将所述安全密钥与秘密密钥进行比较,并且在所述比较失败的情况下,发出出错指示。
55. 根据权利要求34所述的装置,其中在所述安全代码的认证失败的情况下生成出错 信号。
56. 根据权利要求34所述的装置,其中所述不安全代码包括受限功能性。
57. 根据权利要求56所述的装置,其中所述不安全代码具有对所述设备的结构的受限 访问。
58. 根据权利要求56所述的装置,其中所述不安全代码具有对所述设备上所存储的软 件的受限访问。
59. 根据权利要求56所述的装置,其中所述不安全代码未加密并且是可改变的。
60. 根据权利要求56所述的装置,在预先确定的时期中提供所述受限功能性。
61. 根据权利要求34所述的装置,其中将所述认证密钥确定为所述设备相关联的主认 证密钥(MAK)的函数。
62. 根据权利要求34所述的装置,其中所述安全代码包括认证器,所述认证器是所述 认证密钥的函数。
63. 根据权利要求34所述的装置,其中所述认证密钥是高级加密标准(AES)密钥。
64. 根据权利要求34所述的装置,其中所述设备是网络处理器、通用处理器片上系统、 以及主板中的至少一项。
65. 根据权利要求34所述的装置,其中所述安全代码未加密。
66. 根据权利要求34所述的装置,其中使用认证密钥对与所述设备相关联的安全密钥 进行更新。
【文档编号】G06F21/57GK104221027SQ201380015295
【公开日】2014年12月17日 申请日期:2013年3月20日 优先权日:2012年3月22日
【发明者】R·E·凯斯勒, M·R·赫塞恩, E·F·罗宾斯 申请人:凯为公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1