CN117099105A - 只读存储器(rom)安全 - Google Patents

只读存储器(rom)安全 Download PDF

Info

Publication number
CN117099105A
CN117099105A CN202280021130.6A CN202280021130A CN117099105A CN 117099105 A CN117099105 A CN 117099105A CN 202280021130 A CN202280021130 A CN 202280021130A CN 117099105 A CN117099105 A CN 117099105A
Authority
CN
China
Prior art keywords
rom
encrypted
circuit
data element
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280021130.6A
Other languages
English (en)
Inventor
迈克尔·斯特法诺·弗里茨·沙夫纳
鲁珀特·詹姆斯·斯沃布里克
蒂莫西·杰伊·陈
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN117099105A publication Critical patent/CN117099105A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

具有集成电路(IC)芯片的装置能够提供对只读存储器(ROM)(118)(诸如用于安全电路的启动ROM)的攻击的保护。攻击者能够通过修改ROM内容和/或重定向ROM读取来获取IC的控制权。为了对抗这些攻击,示例实施方式将加密ROM数据(410)存储在ROM阵列(404)中。ROM控制器(402)被用于以密码方式将每个ROM行的地址(414)绑定到对应的加密ROM数据元(412)。为了访问加密ROM数据元,密码电路(408)使用基于对应的ROM地址(414)生成的密钥来解密该加密ROM数据元。作为完整性检查过程的一部分,能够基于加密ROM数据计算摘要。为了进一步挫败潜在的攻击,能够在控制器使用调整后的地址从ROM阵列读取加密数据之前调整(例如,加扰)ROM地址。

Description

只读存储器(ROM)安全
背景技术
电子设备在制造、通信、运输、医疗保健、商业、社交互动和娱乐中发挥不可或缺的作用。例如,电子设备为服务器群供电,服务器群为商业和通信提供基于云的分布式计算功能。电子设备还被嵌入到从医疗设备到电器、从车辆到工业工具的许多不同类型的现代设备中。个人电子设备使能便携式视频观看以及方便访问智能数字助理。另外,一种多功能电子设备——智能手机——实际上已经成为触手可及的必需品。随着电子设备变得普遍且对现代生活的许多方面至关重要,设备安全已变得势在必行。
许多人熟悉恶意软件,有时将其统称为“计算机病毒”。一些恶意软件被设计为获得对由电子设备存储的信息的未经授权的访问或者以其他方式危害电子设备。多种策略能够通过抵制某些类型的恶意软件来帮助保护用户的设备和信息免受安全威胁。这些策略包括采用并定期更新弹性操作系统、参与安全计算实践以及安装反恶意软件程序。不幸的是,这些策略无法使电子设备免受所有恶意软件攻击。
此外,除了由基于软件的恶意软件执行的攻击之外,电子设备还能容易受到其他类型的攻击。例如,电子设备的安全可靠操作以及由此类设备存储的信息的安全能够受到对硬件的物理攻击和针对无线通信的射频攻击的危害。换句话说,某些形式的攻击能够规避或破坏上面列出的策略,从而使不良行为者能够危害电子设备,并且潜在地获得对该设备使用的任何帐户的访问权限。
电子设备包括至少一个提供智能以实现各种功能的集成电路(IC)。这些功能促进商业、简化医疗保健访问、提供娱乐、支持社交媒体互动并使能上述其他服务。电子设备还可以存储或以其他方式利用要保护的信息。为了支持这些功能并促进安全操作,一些电子设备包括作为IC的一部分的安全电路形式的基于硬件的保护。不幸的是,现有的安全电路方法不足以对抗当今电子设备上发起的各种软件、硬件和无线攻击。
发明内容
某些电子设备,如服务器计算机和智能手机,负责向用户提供服务。用户依靠这些电子设备来获得使用一个或多个帐户访问的关键服务,如金融服务、航空旅行或官方政府文件的服务。由于电子设备和帐户之间的链接,受到损害的电子设备可能许可对链接到帐户的服务进行不期望的访问,或者许可对帐户本身进行未经授权的访问。此外,为了提供与这种账户相关联的服务,这些电子设备可以存储要保护的与账户相关的信息,诸如财务数据、用户名、密码和用于加密的密钥。不幸的是,反恶意软件程序无法阻止针对电子设备的所有攻击途径。例如,反恶意软件程序可能无法针对使用微型探针检测集成电路(IC)芯片上的电压电平的直接物理攻击提供保护。因此,将能够识别、阻止、排斥或以其他方式挫败对电子设备的攻击(包括抵消物理攻击)的基于硬件的措施结合到电子设备中是有益的。
因此,电子设备可以包括安全电路以抵制来自不良行为者的攻击。在一些情况下,安全电路检测不当或可疑活动并采取保护措施。安全电路能够以不同的方式实现。例如,计算机工程师能够将安全电路制造为独立的IC芯片或作为另一芯片(诸如片上系统(SoC))的一部分。在任一情况下,安全电路能够是受保护飞地、可信芯片平台、基于硬件的信任根(RoT)(例如,硅RoT)或其组合的一部分。无论安全电路如何或在何处并入电子设备中,计算机工程师都可以设计安全电路来抵制许多不同类型的攻击,如下所述。
对电子设备的攻击可以采取以下形式:观察屏幕图像或监视重复行为以推断信息的程序、尝试从存储器的受保护区域读取数据的应用程序、电路的直接物理探测等等。安全电路执行多种功能来对抗这些攻击中的一种或多种。例如,安全电路能够在使用期间、在运输中或存储中保护加密密钥。为此,能够采用专用存储器和专用数据总线。安全电路还能够生成高质量的伪随机数或在与可能作为恶意软件操作的应用程序分开的区域中操作密码引擎。此外,安全电路可以确保使用正确的、未被篡改的可启动的基础输入/输出系统(BIOS)来启动硬件。
因此,安全电路能够负责实现多种功能以对抗对电子设备的各种攻击。然而,现有的安全电路方法采用的是基于自组织(ad hoc)设计的硬件架构。安全电路的不同电路部分也可能被设计为彼此相对隔离。因此,被设计为对抗各种安全威胁的电路部分可能无法按预期进行互操作,从而导致硬件安全降低。此外,不良的组件间通信为潜在的不良行为者创造了另一攻击途径。此外,这种自组织方法使得安全电路的设计和测试阶段更加艰巨、更长且成本更高。这能够导致在开发安全架构时忽略或未充分解决一些安全威胁。因此,这些自组织架构使得保护电子设备免受多种多样的安全威胁变得更加困难。
然而,本文档在一些示例中描述了提供可适应的且灵活的框架或平台的方法,该框架或平台能够产生弹性且可编程的安全硬件以对抗对电子设备的各种形式的攻击。在安全电路的一些实施方式中,提供不同安全相关功能的不同类型的电路或电路部分使用扩展协议进行通信,但该协议仍产生特定且一致的信令。该通信协议使提供不同安全相关功能的电路能够根据指定的设计框架无缝地交互。设计框架和通信协议产生“可兼容组件(comportable component)”,使得即使彼此分开设计的电路组件也适合以稳定、可预测的交互一致地部署在一起。如本文中所使用的,“可兼容组件”包括被设计为遵守公共框架使得这些组件适合一起使用的那些组件。在一些情况下,兼容性在集成电路芯片的两个或更多个安全相关组件之间提供一定程度的即插即用能力。
除了处理器和互连件之外,安全电路还能够包括多个外围设备。多个外围设备中的每个外围设备能够执行有助于安全电路的安全或正常运行的一些功能。因此,每个外围设备能够提供核心或支持安全相关的功能。该功能(如控制数据访问或执行加密操作)支持安全电路的总体目的。这样的目的可以包括提供能够通过电子设备的其他电路和/或IC进行安全计算的特征。为了可预测性和互操作性,每个外围设备可以被实现为可兼容组件。
通常,计算和其他电子设备受到能够破坏或窃取数据的攻击,包括物理攻击。硬件信任根(RoT)方案能够对抗许多攻击,包括一些物理攻击。RoT硅能够利用提供安全功能的集成电路来实现。在一些情况下,硅RoT芯片包括只读存储器(ROM),该ROM受到可能试图读取或修改ROM行的不良行为者的物理攻击。这些物理攻击可以在ROM条目(例如,ROM指令行)或通常ROM数据被读出和/或被实行时执行。
然而,ROM能够被设计或构建为抵抗攻击。此外,ROM块或模块能够被实现为安全芯片的可兼容组件——例如ROM外围设备。为了保护硅RoT芯片或其他安全电路中的ROM,ROM能够被加密。本文档进一步描述了使用加密将ROM地址和ROM数据绑定在一起。例如,ROM控制器能够使用对应的ROM地址来生成用于解密ROM数据元(例如,存储在ROM存储器中的数据项,诸如存储在特定ROM地址处的一些或全部数据)的密钥。通过将相应的ROM地址以密码方式链接到存储在ROM阵列中的其相关联的ROM数据元(datum),对ROM的地址总线(例如,相对较窄的)的故障攻击不能用于容易地将读取重定向到其他ROM条目。ROM阵列的这些读取能够涉及实行代码、检索数据或对ROM条目执行完整性检查。ROM内容与访问该内容的ROM地址(例如,ROM存储器中存储相应的ROM数据的地址)的这种密码链接能够保护ROM,即使对手知道解密密钥。
为了保护硅RoT环境中的ROM不被无意地修改,ROM数据能够与使用哈希算法导出并存储在ROM中的预期摘要(或“摘要值”)相关联。在启动期间,ROM能够检查存储的预期摘要值是否与在当前ROM数据上同时计算的另一摘要值相匹配。这种保护方法的潜在漏洞是,攻击者可能尝试通过暂时将ROM完整性检查器重定向到具有相同一组数据位的不同ROM条目来隐藏地址总线上的故障攻击。
首先,为了保护具有ROM控制器和ROM阵列的ROM的完整性,存储在ROM阵列中的ROM数据能够被加密。如上所述,ROM数据还能够以将相应的ROM地址绑定到相应的ROM数据元的方式来加密。此外,ROM控制器能够调整(例如,加扰,诸如通过使用替换和/或置换算法,例如,基于密钥或密码)地址以产生用于访问ROM阵列的调整后的地址。如果攻击者在ROM完整性检查期间尝试重定向地址总线,则该地址调整能够进一步降低未检测到修改后的ROM的风险。
为了至少附加地降低基于重定向的攻击的风险,本文档描述了选择加密算法和/或加密密钥以便减少存储在ROM阵列中的ROM数据元的复制实例的数量。通过迭代地改变加密算法和/或加密密钥并检查所得的ROM条目,在某些情况下可以完全避免或省略复制ROM条目。这至少限制并且可以消除在ROM完整性检查器的操作期间针对替代ROM条目的重定向攻击的潜在有效性。因此,ROM阵列能够存储彼此唯一的ROM条目,并且ROM控制器能够安全地应用哈希算法来计算正确地反映ROM的当前内容的摘要值。
附图说明
参考以下附图来描述ROM安全的装置和技术。整个附图中使用相同的附图标记来表示相似的特征和部件。
图1图示了具有集成电路(IC)的示例装置,该集成电路包括其中能够实现ROM安全的安全电路。
图2图示了包括多个电路组件的示例安全电路,该多个电路组件包括能够被实现为可兼容的多个示例外围设备,诸如ROM块。
图3-1图示了一种示例外围设备,其包括支持与其他电路组件的兼容性的至少一个接口。
图3-2图示了分析外围设备设计以确保满足可兼容目标的示例方法。
图3-3图示了包括寄存器接口和示例通信信号的示例外围设备。
图4图示了关于访问ROM阵列的加密ROM数据的包括ROM控制器和ROM阵列的示例ROM。
图5图示了在检查ROM阵列的加密ROM数据的完整性的场境下包括ROM控制器和ROM阵列的示例ROM。
图6图示了可以被实现为具有加密ROM数据的安全电路的ROM外围设备的示例ROM。
图7图示了用于访问图6的ROM的ROM阵列的各种信号的示例定时图。
图8图示了根据弹性ROM完整性检查过程的实施方式的示例方案。
图9图示了装置诸如在启动或复位时检查ROM的完整性的示例方法。
图10图示了根据弹性ROM完整性检查过程的示例方法。
图11图示了用于实现ROM加密的装置的示例方法,诸如用于通过解密来访问加密ROM数据。
图12是图示了用于访问包括加密ROM数据的ROM阵列的示例过程的流程图。
图13是图示了用于检查包括加密ROM数据的ROM阵列的完整性的示例过程的流程图。
图14图示了根据一个或多个所描述的方面的能够实现ROM安全的示例电子设备的各种组件。
具体实施方式
概述
电子设备对现代社会做出了重要贡献,诸如与通信、安全和制造相关的电子设备。每个电子设备都依赖具有处理能力的集成电路(IC)来提供某些功能。鉴于这些功能中的许多功能的关键性质,电子设备可以包括具有安全电路的IC以提供保护。安全电路减少了信息无意中暴露或以有害或其他未经授权的方式使用某些功能的机会。安全电路能够以多种形式实现,其中之一涉及信任根(RoT)范式。
利用RoT硅,基于硬件的机制在防止对信息的不当访问、阻止对设备的未经授权的使用等方面保持计算安全。硅RoT原则能够帮助确保硬件基础设施和在其上执行的软件都保持在预期的、值得信任的状态。为此,硅RoT能够使用授权且可验证的代码来验证关键系统组件安全地启动。因此,它能够确保服务器或另一电子设备以正确的固件启动并且该固件没有被低级恶意软件感染。硅RoT能够提供附加或替代的安全优势。例如,它能够提供密码学上唯一的机器身份;这种唯一的身份使操作员能够验证电子设备是否合法。此外,它能够将加密密钥和其他信息保存在防篡改的孤岛(silo)中,这防止或至少阻止那些能够物理访问设备的人获得信息。锚定在硬件中的RoT服务还能够提供权威的、防揭封的审计记录和其他运行时安全服务。
芯片设计者能够将硅RoT技术结合到专注于提供安全功能的单独IC芯片中。替代地,RoT硅能够与其他电路集成,包括中央处理单元(CPU)芯片或封装、图形处理单元(GPU)芯片或卡、片上系统(SoC)中、存储器存储设备等等。通常,安全电路能够在服务器主板、网卡、客户端设备(例如,笔记本电脑和智能手机)、消费者路由器、物联网(IoT)设备以及固定和便携式存储单元中操作,仅举几个示例。通过将RoT锚定在硅中,计算安全都在硬件、固件和软件级别上被增强,与应用程序或电子设备无关。硅RoT还增强了直接或经由网络相互通信的不同设备之间的安全。尽管本文档中使用硅或硬件RoT环境描述了一些安全和电路设计原理,这仅作为示例来完成,因为所描述的原理通常适用于安全电路。
在当今的计算环境中,不良行为者能够使用多种攻击向量来攻击无数级别的电子设备。例如,能够使用通过互联网传输的恶意软件进行攻击,以尝试获得存储在笔记本电脑中但用户希望受到保护的信息。此外,攻击还可能涉及在设备运输期间或设备在不可观察的位置操作时将恶意软件注入被用于启动电子设备(如路由器或IoT设备)的固件中。作为另一示例,不良行为者可能窃取电子设备,并有充足的时间对设备进行直接物理攻击。这种直接物理攻击能够包括切断线缆、探测电压、利用激光注入故障、重复运行代码以观察趋势和推断信息等等。
因此,安全电路能够负责实现多种功能以对抗对电子设备的各种攻击。然而,现有的安全电路方法采用基于自组织设计的硬件架构。安全电路的不同电路部分也可能被设计为彼此相对隔离。因此,被设计为对抗各种安全威胁的电路部分可能无法按预期进行互操作,从而导致硬件安全降低。另外,不良的组件间通信为潜在的不良行为者创造了另一攻击途径。此外,这种自组织方法使得安全电路的设计和测试阶段更加艰巨、更长且成本更高。这能够导致在开发安全架构时忽略或未充分解决一些安全威胁。因此,这些自组织架构使得保护电子设备免受多种多样的安全威胁变得更加困难。
然而,该文档描述了提供可适应的且灵活的框架或平台的方法,该框架或平台能够产生弹性且可编程的安全硬件以对抗对电子设备的各种形式的攻击。在安全电路的一些实施方式中,提供不同安全相关功能的不同类型的电路或电路部分使用扩展协议进行通信,但该扩展协议仍产生特定且一致的信令。该通信协议使提供不同安全相关功能的电路能够根据指定的设计框架无缝地交互。
设计框架和通信协议产生“可兼容”组件,使得即使是彼此分开设计的电路组件也适合以稳定的、可预测的交互一致地部署在一起。例如,通信和其他形式的交互(例如,诸如总线、接口或存储器等资源的共享)能够至少部分被标准化,以提供可预测性和互操作性的度量。如本文中所使用的,“可兼容组件”包括被设计为遵守公共框架使得这些组件适合一起使用的那些组件。在一些情况下,兼容性提供集成电路芯片的两个或更多个安全相关组件之间的一定程度的即插即用能力。
在一些实施方式中,除了“集中式”处理器和互连件之外,安全电路还包括多个外围设备。多个外围设备中的每个外围设备执行有助于安全电路的安全或正常运行的一些功能。因此,每个外围设备能够提供核心安全相关功能或支持安全相关功能。该功能(如控制对数据的访问或执行加密操作)支持安全电路的总体目的,其包括提供使电子设备的其他电路和/或IC能够进行安全计算的特征。为了可预测性和互操作性,每个外围设备可以被实现为可兼容组件。
能够被实现为可兼容组件和/或外围设备的电路组件的示例是ROM块或模块。ROM块能够包括ROM阵列和ROM控制器。ROM阵列可以包括用于在重新启动或加电情况下初始化电子设备的启动级别指令。为了保护ROM块,ROM阵列中的数据能够被加密,并且ROM控制器能够提供对ROM的门控访问。
此外,ROM块能够使用加密将ROM地址和相关联的ROM数据绑定在一起。这里,“绑定”能够被用于表示“关联”。具体地,ROM块可以通过使用ROM地址作为用于加密ROM数据的算法中的参数来将ROM地址与ROM数据的ROM数据元相关联。例如,掩码ROM(例如,具有字行和位行的网格的ROM;通常,字行提供地址输入,并且ROM存储器在位行上输出数据)能够使用密码进行加扰,例如PRINCE密码。相应的ROM地址能够被用于以多种方式中的任一种对相关联的相应的ROM数据元进行加扰,以将地址和数据元链接在一起。例如,相应的地址能够被用于解密相应的ROM数据元。在一些实施方式中,未加扰的ROM地址被用于产生至少一个密钥,诸如密钥流值,该至少一个密钥被应用于对应ROM数据元的版本以产生解密ROM数据元。例如,能够在“计数器(CTR)模式”中采用如PRINCE的块密码。每个ROM数据,诸如ROM条目或行,能够包括对应于ROM的位(例如,对用户数据或定义由安全电路执行的过程的程序指令进行编码的ROM位,例如,定义算法的ROM位)和对应于该数据元的ROM位的纠错码(ECC)值的位。
因此,ROM的这种“加密”能够被用于通过例如使用相应的ROM地址作为相应的ROM数据元的解密过程的一部分将ROM地址和ROM数据绑定在一起。这种基于地址的加密方法能够确保地址总线上的故障攻击不能容易被用于重定向ROM阵列的读取。通过以密码方式将ROM地址和数据链接在一起,能够挫败重定向正常ROM访问的攻击(例如,从而允许攻击者通过将启动代码中提取的指令转变为无操作(NOP)来跳过该指令)。这保护请求ROM数据的“外部电路”(例如主处理器)的操作。
对ROM进行加扰还使得希望更改所存储的ROM代码以收买设备的攻击者变得更加困难。例如,假设攻击者希望对原始的、未加密ROM数据元进行1位改变。该1位改变通常能够更改指令,同时仍然避免以其他方式导致完整性检查失败的情况。另一方面,对于加密(例如,加扰)ROM数据,如果攻击者要修改加扰的数据,则对加密ROM数据元的这种改变可能需要预期的19位(例如,大约半个39位字)。因此,加扰掩码ROM提供了针对掩码ROM编辑的弹性,并使ROM宏的边界处的故障注入攻击更加困难。
在示例实施方式中,安全电路的ROM块的ROM数据被加密。加密被用于将ROM地址和相关联的ROM数据绑定在一起。ROM地址和/或相关联的ROM数据能够被加扰。在一些情况下,ROM地址被用于对ROM数据进行解扰。ROM数据能够与对应的安全值(例如,ECC位)联合加扰。在这种情况下,能够使用每个ROM行安全值并将其作为ROM行一起存储。为了使用ROM地址来解扰ROM数据,ROM地址被用于生成密钥来解扰相关联的ROM数据。解扰ROM地址还能够被调整或转换为加扰ROM地址,以读取ROM的条目,从而进一步复杂化和挫败攻击者修改ROM的努力,并且导致设备使用修改后的ROM启动。
在其他示例实施方式中,ROM块包括ROM阵列和ROM控制器,该ROM控制器具有ROM检查器电路以验证ROM数据的完整性。对ROM阵列(例如掩码ROM)进行改变后,攻击者可能尝试通过在启动时使ROM检查器与ROM阵列之间的通信出故障或控制它来隐瞒这种改变。例如,攻击者可能尝试操纵ROM检查器电路和ROM阵列之间的数据总线,以隐藏对ROM数据的改变。类似地,攻击者可能尝试控制地址总线上的低位,从而通过重定向ROM访问以跳过修改后的字并指向未修改的副本来颠覆ROM检查。
通过利用固定密钥对ROM进行加扰并对加扰的数据运行哈希以进行完整性检查,能够至少部分地挫败这些潜在的攻击。因此,加扰方案的扩散特性使得对数据总线的攻击变得更加困难。例如,要对未加扰的数据进行单个位改变,攻击者需要改变ROM阵列中的许多位,并且然后控制数据总线上的相同位以隐藏所做的改变。此外,能够通过加扰如何将地址合并到数据加扰方案中来击败对地址总线的攻击。
在附加的示例实施方式中,ROM数据被加密,并且ROM完整性检查器对加密ROM数据进行操作。ROM完整性检查器电路能够验证ROM数据在每次启动或复位时尚未被更改。ROM完整性检查器电路能够逐行操作。例如,完整性检查器电路能够使哈希算法应用于ROM的每一行,同时ROM数据元仍然被加密以计算摘要值。如下所述,在加密ROM数据已经被馈送到正在执行哈希算法的电路之后,可以将能够从ROM检索的预期摘要值与计算出的摘要值进行比较。如果摘要值不匹配,完整性检查器电路生成警报。
ROM块或模块能够包括ROM阵列和ROM控制器。通常,ROM阵列的内容(诸如掩码ROM)能够作为一套安全策略的一部分被加扰。在启动时,ROM控制器从ROM阵列读取并将所提取的加扰内容发送至至少一个摘要检查模块,诸如能够应用哈希算法的摘要计算电路。该摘要计算电路使用诸如安全哈希算法3(SHA-3)的哈希算法来计算内容的摘要。还能够使用SHA3的可定制任意消息长度版本(诸如cSHAKE)来计算摘要,它允许电路利用ROM检查器特定的函数字符串作为ROM数据的前缀,以使哈希函数对于给定应用程序是唯一的。ROM数据行可能不与摘要计算电路的块大小对齐,在这种情况下,能够将行填充到块长度(例如,利用零)。ROM控制器能够将从摘要计算电路获得的摘要与预期摘要进行比较,以门控对ROM阵列的访问。ROM阵列可以将预期摘要存储在一个或多个ROM地址位置中。ROM控制器还能够将计算出的摘要值提供给ROM外部的电路,诸如主机处理器。ROM控制器可以例如经由可由其他组件访问的ROM的接口寄存器来暴露计算出的摘要值。这使一个或多个其他组件能够验证ROM数据尚未被篡改。
在示例实施方式中,可以选择固定加扰密钥以确保至少大多数(并且在一些情况下所有)ROM行彼此区别或不同。这意味着地址总线上的故障攻击无法通过暂时将与摘要计算电路通信的ROM控制器重定向到存储相同ROM指令的不同行来隐藏更改。
此外,对加扰的数据进行哈希比对未加扰的数据进行哈希更具有容错性。想要对未加扰的ROM数据进行较小更改的攻击者必须对加扰的ROM数据进行相对较大的更改。由于哈希值是对加扰的数据计算的,因此攻击者需要使许多位出故障或以其他方式控制许多位来隐藏改变。因此,综合起来,ROM数据的加密和密码密钥的选择能够使得对ROM数据本身和对地址总线的攻击不太可能成功。
在其他示例实施方式中,相对于为ROM的多行产生至少一个摘要,过程能够牵涉选择减少存储在ROM中的复制指令行的加密算法和/或加密密钥。此外,能够选择消除复制存储的指令行的加密算法和/或加密密钥。因此,能够基于ROM数据的内容来选择加扰算法和/或加扰密钥,以至少增加(如果不是最大化的话)存储在ROM阵列中的所得加密位的可变性。这种可变性(例如,唯一性)使得攻击者很难(如果不是不可能的话)将完整性检查器从一个应该被检查的ROM条目重定向到具有相同字的另一ROM条目,因为几乎没有条目(如果有的话)具有相同的所存储的ROM值内容。使用这些技术,能够将哈希算法应用于ROM的加扰数据。换句话说,能够使用ROM数据的加扰行而不是未加扰行来计算所存储的ROM数据的至少一个摘要,以增加哈希算法所操作的值的可变性。
以这些方式,安全电路能够被并入硅RoT芯片和/或SoC中。这种安全电路包括多个外围设备,该多个外围设备包括ROM块。尽管ROM安全的一些方面是在安全电路环境中和/或在兼容设计的背景下描述的,但是所公开的ROM安全概念可应用于其他电路环境和其他设计范式。
该文档首先参考图1和图2描述安全环境示例。接下来参考图3-1至3-3描述外围设备接口和设计代码分析的示例。然后,本文档参考图4至图13描述了ROM安全的方面和实施方式。参考图14描述示例电子设备。本文中描述的环境、方面和实施方式中的每一个可以单独地或以任何组合的方式使用。
因此,下面参考相关联的附图以各种细节级别讨论示例实施方式。下面的讨论首先阐述示例操作环境,并且然后描述示例硬件、方案和技术。此后参考流程图或图描述示例方法。最后,描述了示例计算设备。
ROM安全的示例操作环境
图1总体上以100图示了具有包括安全电路106的集成电路104(IC 104)的示例装置102。装置102、集成电路104和/或安全电路106能够实现如本文中所描述的ROM安全。在该示例中,装置102被描绘为智能手机。然而,装置102可以被实现为任何合适的计算或电子设备。
装置102的示例包括移动电子设备或移动设备、移动通信设备、调制解调器、蜂窝或移动电话、移动站、游戏设备、导航设备、媒体或娱乐设备(例如媒体流媒体或游戏控制器)、笔记本电脑、台式电脑、平板电脑、智能家电、车载电子系统、可穿戴计算设备(例如衣服、手表或改变现实的眼镜)、物联网(IoT)设备、传感器、库存管理设备、机器或一件设备(例如车辆或机器人)的电子部分、存储器存储设备(例如,固态驱动器(SSD))、服务器计算机或其部分(例如,服务器刀片或机架或数据中心的另一部分)等。装置102的所图示的示例包括平板设备102-1、智能电视102-2、台式计算机102-3、服务器计算机102-4、智能手表102-5、智能电话(或文档阅读器)102-6和智能眼镜102-7。
在示例实施方式中,装置102包括至少一个集成电路104。集成电路104能够被安装在模块、卡或印刷电路板(PCB)(未示出)上。PCB的示例包括柔性PCB、刚性PCB、单层或多层PCB、表面安装或通孔PCB、其组合等。每个集成电路104能够被实现为通用处理器、片上系统(SoC)、面向安全的IC(例如,RoT IC芯片)、存储器芯片、通信IC(例如,调制解调器或射频IC)、图形处理器、人工智能(AI)加速器、其组合等。集成电路104能够单独封装或者与其他IC芯片一起封装。
如图所示,集成电路104包括安全电路106。安全电路106能够包括多种部件,其包括多个电路组件108-1…108-C,其中C表示正整数,以及互连件110。除了互连件110之外,电路组件108的示例还包括处理器和多个外围设备。这些在图2中描绘并在下面进行描述。尽管图1中未明确示出,但是集成电路104可以包括除安全电路106之外的其他部分。虽然多个电路组件108-1…108-C和互连件110可以如图所示一起集成在单个IC上,但是这些组件可以替代地分布在两个或更多个IC上。安全电路106能够被实现为例如受保护的飞地、可信芯片平台、基于硬件的信任根(RoT)芯片(例如,硅RoT)等等。无论安全电路106如何或在何处并入电子设备中,安全电路106都可以抵制许多不同类型的攻击。
在示例操作中,一旦检测到攻击——或潜在攻击——或异常发生,则由某个组件生成警报112或中断114。例如,电路组件108能够生成警报112并且能够将警报112传输到警报处置器(alert handler),这将在下面描述。附加地或替代地,另一电路组件108能够生成中断114以供处理器处置。警报112、中断114和其他信号根据用于安全电路106的处理器和/或外围设备之间交互的公共框架在两个或更多个组件108之间传送。公共框架能够指定每个外围设备处的接口和信令,以促进跨多个外围设备的互操作性和一致通信协议的使用。因此,虽然兼容性的一些方面是按照安全电路来呈现的,但是外围设备兼容性也能够与其他类型的电路一起采用。下面参照图3-1至图3-3描述示例框架以及示例通信接口和接口规范。
在一些实施方式中,电路组件108被实现为ROM 118或ROM块118。ROM 118可以作为外围设备、作为可兼容组件、其组合等并入安全电路106中。例如,安全电路106能够访问ROM118作为重新启动的一部分以初始化安全电路106或IC 104。除了启动操作之外或代替启动操作,还能够出于其他目的访问ROM 118。该ROM访问116能够由ROM 118门控,作为本文中结合ROM数据的完整性检查描述的安全范式的一部分。还可以通过将ROM数据绑定到用于访问ROM 118的ROM数据的ROM地址来保护ROM访问116。下面参考图4至图13描述ROM安全的这些和其他方面。然而,参考图2,接下来描述安全电路106的示例架构。
图2图示了示例安全电路106,其包括多个电路组件,该多个电路组件包括能够被实现为可兼容的多个示例外围设备250。如图所示,安全电路106包括耦合到互连件110的处理器202。互连件110能够使用例如使得各种电路组件能够通信的总线、交换结构或总线网络来实现。(图1的)多个电路组件108-1…108-C除了互连件110和/或处理器202之外还能够包括多个存储器和多个外围设备。处理器202、多个存储器和多个其他外围设备250中的每一个直接或间接耦合到互连件110。如本文中所描述的,(例如,图1和图4等的)ROM 118可以对应于图2的ROM 206。
在示例实施方式中,多个存储器能够包括只读存储器206(ROM 206)、静态随机存取存储器208(SRAM 208)和闪存存储器210。多个外围设备250能够包括警报处置器204、高级加密标准(AES)引擎212(AES引擎212)、基于哈希的消息认证码(HMAC)引擎214(HMAC引擎214)、串行外围接口(SPI)设备230(SPI设备230)和闪存控制器216。多个外围设备250还能够包括通用异步接收器/发送器(UART)单元218(UART单元218)、通用输入/输出(GPIO)接口220(GPIO接口220)、引脚复用器222(pin mux222)和焊盘控制器224。多个外围设备250还能够包括随机数发生器232(RNG 232)和定时器234。另外,外围设备250能够包括任何存储器,如图2所示。尽管在图2中描绘或在本文中描绘了存储器和其他外围设备250的某些示例,但是安全电路106的给定实施方式可以包括更多、更少和/或不同的处理器、控制器、存储器、模块或外围设备的实例,包括其复制。
所图示的电路组件能够基于一个或多个时钟信号同步操作。尽管图2中未示出,但是安全电路106可以包括用于生成时钟信号的至少一个时钟发生器,或者可以包括复位电路以彼此独立地复位一个或多个单独的组件、联合地复位多个组件或整个IC芯片。替代地,安全电路106可从安全电路106外部的源接收至少一个时钟信号或复位信号,该源可以或可以不在分开的芯片上。一个或多个分开的外围设备250可以在相应的单独的时钟域中操作。例如,输入/输出(I/O)外围设备可以与相应的I/O设备或通道本地的时钟同步。不同时钟域中的外围设备可以彼此异步操作或通信。
下面描述所图示的组件的示例实施方式。处理器202可以被实现为安全电路106的“主”、“中央”或“核心”处理器。仅作为示例,处理器202可以用具有多阶段流水线的32位有序精简指令集计算(RISC)核心来实现。例如,利用RISC-V指令集,处理器可以实现M(机器)和U(用户)模式。激活复位引脚(未示出)(例如,通过低电平有效复位引脚的去断言)导致处理器202退出复位并开始在其复位向量处执行代码。复位向量可以在ROM 206中开始,ROM206在跳转到嵌入式闪存(e-flash)之前验证其中的代码。换句话说,代码被预期在复位被释放之前已被实例化到e-flash中。在一些情况下,能够根据兼容性规范将整个安全电路106复位为异步有效低电平,以支持各种电路组件之间的互操作性。可以由警报处置器204、看门狗定时器生成复位作为安全对策;等等。复位信号还可以被发送到其他电路组件,诸如存储器中的一个或其他外围设备250中的一个。
耦合到处理器202的是调试模块226(DM 226)和中断控制器228(ItC 228),其任一个也可以变成可兼容的。调试模块226提供对处理器202的调试访问。通过与IC的某些引脚对接,调试模块226中的逻辑允许处理器202进入调试模式并提供将代码注入到设备中(例如,通过模拟指令)或注入到存储器中的能力。中断控制器228可以被布置在处理器202附近。中断控制器228能够接受来自安全电路106内的中断源的向量。中断控制器228还能够在将中断转发给处理器202处置之前向中断分配级别和优先级。
处理器202能够提供任何期望级别的性能或者包括任何内部电路组件。例如,处理器202能够包括至少一个算术逻辑单元(ALU)(例如,包括用于计算分支目标以消除所采取的条件分支上的延迟周期的“附加”ALU)和多个流水线阶段。利用多个流水线阶段,流水线能够执行寄存器写回,以减少加载和存储的延迟周期,并防止在请求后的周期内对加载或存储的响应可用的流水线停顿。处理器202能够实现单周期乘法器或者对存储的错误响应产生不精确的异常,这允许处理器继续执行经过存储而不等待响应。尽管未描绘,但是具体地处理器202,或者一般地安全电路106能够包括指令高速缓存以提供指令的单周期访问时间。
在所图示的示例中,安全电路106包括用于指令和数据的三个存储器地址空间。ROM 206是复位释放之后处理器202的目标。ROM 206包含硬编码指令以在检查代码的下一阶段之前执行平台检查的子集。代码的下一阶段——例如,存储在e-flash存储器中的启动加载器——能够是未硬编码到设备硅中的第一段代码。因此,对代码的下一阶段进行完整性签名检查,以提高安全。ROM 206能够通过对启动加载器的全部内容实现许多算法(诸如Rivest-Shamir-Adleman(RSA)检查算法或椭圆曲线数字签名算法(ECDSA))中的任一种来执行该签名检查。
闪存存储器210能够被实现为用于代码存储的嵌入式闪存(e-flash)存储器。该e-flash能够容纳上面提到的启动加载器,以及顶层的操作系统和应用。SPI设备230能够被用于批量加载e-flash存储器。调试模块226还可以用于代码加载。SRAM 208能够被操作为可用于处理器202的数据存储(例如,用于堆栈和堆信息)的暂存区SRAM。SRAM 208也能够存储代码。
安全电路106能够包括一套“外设”或“外围设备”。这些外围设备250可以是经由互连件110耦合到处理器202的从属执行单元。这些外围设备250中的每一个都能够遵循确保彼此之间以及与处理器202的兼容性的接口框架。兼容性方案能够指定处理器202如何与给定外围设备通信(例如,使用互连件110)、外围设备如何与芯片、I/O通信(例如,经由固定或多路复用I/O)、外围设备如何与处理器202通信(例如,使用中断)、外围设备如何将安全事件(例如,使用警报指示)传送给其他电路组件,如警报处置器204;外围设备如何与其他外围设备通信(例如,经由至少一个寄存器、同步或异步);或其组合。所描绘的外围设备250能够包括与由警报处置器204提供的警报相关功能相关、与处理器202相关、与一个或多个存储器相关、与芯片I/O相关等的外围设备。因此,存储器还能够包括彼此相关或与其他所描绘的电路组件相关的外围设备250。
电路或芯片I/O外围设备包括引脚复用器222和焊盘控制器224。引脚复用器222提供外围设备250的至少一部分与安全电路106的可用可复用I/O节点(例如,其中集成了各种组件的芯片的引脚或者到SoC的其他部分的接口)之间的信令路由。焊盘控制器224管理每个电路的(例如,芯片的)外部I/O的控制或焊盘属性,如驱动强度、技术、上拉与下拉等。引脚复用器222和焊盘控制器224本身是互连件110上的外围设备。因此,每一个可以具有提供软件可配置性的至少一个寄存器集合或者可以以其他方式与至少一个寄存器集合相关联。
UART单元218能够实现UART特征,诸如单通道双工UART功能。其输出和输入能够被配置为经由引脚复用器222连接到任何电路I/O。GPIO接口220经由引脚复用器222创建与外部电路的G位双向通信,其中G是正整数,如16、32或64。关于存储器I/O,SPI设备230能够实现固件模式。这里,固件模式能够实现为外部驱动器提供将固件升级代码发送到闪存存储器210的存储体中以用于现场固件更新的能力的特征。固件模式能够包括使用SPI事务对存储器进行寻址。尽管未描绘,安全电路106能够包括内部集成电路(I2C)主机以实现I2C设备的命令。I2C设备的该命令可以包括标准、完整和快速模式。
还描绘了几个“核心安全”外设,包括加密引擎和警报处置器204。AES引擎212能够使用一种或多种协议以及不同的密钥大小(如128b、192b或256b)来提供对称加密和解密。该组件能够选择对到达的数据进行加密或解密,例如要使用不同的块密码操作模式来加密或解密的16字节量。AES引擎212能够支持电子码本(ECB)模式、密码块链接(CBC)模式、密码反馈(CFB)模式、输出反馈(OFB)模式、计数器(CTR)模式等。数据传输能够使处理器可用,例如,密钥和数据材料可以经由寄存器写入传递到密码引擎中。替代地,可以包括用于传输密钥和数据材料的专用通道,以减少潜在的不可信处理器活动的风险。
HMAC引擎214可以利用例如安全哈希算法(SHA)SHA-256作为哈希算法。SHA-256是SHA-2哈希算法系列的成员,其中摘要(或哈希输出)的长度为256b,无论要哈希的输入的数据大小如何。在声明哈希请求开始后,数据被发送到HMAC外围设备。这会将内部状态清零为初始条件,例如一次32b。一旦由组件客户端发送了数据,客户端就能够指示哈希请求的完成(带有可选的部分字最终写入)。根据示例可移植性接口方案,HMAC引擎214产生哈希结果并且使其可用于请求客户端的寄存器读取。数据传输可以变成处理器可用的,也可以变成私有的,以减少潜在的不可信处理器活动的风险。
HMAC是分层在哈希函数(例如SHA-256)之上的消息认证协议,并且HMAC混合在秘密密钥中用于密码目的。HMAC是特定应用,它以规定的方式(诸如两次)围绕消息的哈希(经由SHA-256)附接秘密密钥。为了提供该功能,可以在消息哈希开始之前将256b密钥编程到电路组件中。认证完成的定时能够变化,并且延迟可能比使用原生SHA-256更长。再次,为了方便或处理效率,可以使哈希信息或秘密密钥可供处理器使用,或者可以以某种方式使其私有以增加安全。
警报处置器204负责处理和响应警报,包括从其他外围设备250提供的警报。警报能够被视为安全敏感中断,其要以及时方式处置以响应感知到的安全威胁。与“标准”中断不同,警报不单独由在处理器202上执行的软件处置。警报能够触发第一阶段请求由软件作为“常规”中断被处置。然而,如果软件不能响应并正确地补救警报触发的中断,则警报处置器204触发第二阶段响应。第二阶段响应能够包括制定安全对策,包括终止过程、擦除或以其他方式删除数据、从电路部分撤回功率、或者复位IC芯片或其部分。这确保了即使处理器202繁忙、堵塞或者还受到攻击,也能解决根本问题——感知到的安全威胁。
因此,警报112(例如,图1的)能够被实现为警报处置器204从其他外围设备接收并且指示潜在安全威胁的升高的中断型信号或警报指示。在操作中,警报处置器204能够从安全电路106的其他电路组件108收集警报并将它们转换成处理器202能够解决的中断。然而,如果处理器202没有清除中断,则警报处置器204提供硬件响应以解决潜在的安全威胁。
对于一些设备间通信,警报处置器204从外围设备源接收差分地用信号发送的同步或异步警报指示。外围设备250能够基于外围设备250的功能、知识或感测到的参数来生成警报。对于其他设备间通信,警报处置器204执行警报源的ping测试作为稳健的心跳机制。警报处置器204的ping监视器(未明确示出)请求来自每个警报源的定期警报响应,以确保与警报源的通信通道正在运行。
警报处置器204还能够基于通信故障产生本地来源的硬件警报。如果与警报源或升级处置器的差分信令或另一规定的通信协议失败(例如,如果信号完整性检查失败),则生成第一本地源警报。如果警报源或升级处置器未能响应ping请求,则警报处置器204生成第二个这样的警报。通常,警报处置器204能够接收来自整个系统的传入警报、对警报进行分类、基于所分类的警报发出中断、并且如果处理器202不清除所发出的中断,则将中断升级为基于硬件的响应。因此,如果处理器不能或不处置安全警报,则警报处置器204能够充当例如安全响应的替代者。
在一些架构中,安全警报旨在是罕见事件,至少相对于“标准”中断而言。因此,在设计阶段,在预期该事件不会频繁发生并且如果该事件具有潜在的安全后果的情况下,可能的事件可以被指定为警报事件。这种事件的示例包括奇偶校验错误(可能指示攻击)、对密码或安全相关组件的未经授权的动作、指示环境修改的物理传感器的感测值(例如电压或温度)等等。系统通过警报处置器204路由警报,警报处置器204将警报转换为中断以供处理器202潜在地解决。对于一些实施方式,一个基本的期望是安全操作系统具有用于在软件中处置由于警报而产生的任何这种中断的协议。如果是这样,安全操作系统通常能够解决该中断,并且然后利用警报处置器204清除该中断。每个外围设备250能够呈现代表要处置的相应的潜在威胁的单独警报的列表。外围设备能够使用特定编码机制将警报作为警报指示传送到警报处置器204。
安全电路106还能够包括RNG 232。通常,随机性能够通过提供执行中的变化来促进安全功能,从而阻止攻击者预测发起攻击的最佳时机。例如,随机数能够提供用于身份和密码目的的秘密材料。RNG 232能够被植入算法计算中以掩盖敏感数据值。通常,RNG 232提供更好的性能,因为它的数字生成逐渐变得真正随机,并且在某种程度上它还能够针对攻击进行强化。RNG 232可以被实现为“真实”RNG(TRNG),其可以涉及具有模拟部分的设计以利用一些非确定性的物理事件或过程。示例TRNG设计依赖于亚稳定性、电子噪声、定时变化、热噪声、量子变化等。TRNG过滤(一个或多个)结果变量并将它们发送到熵池中,设备能够在给定时间对当前随机函数进行采样。在一些情况下,熵池的接口能够包括可用随机位的读取请求。TRNG接口指示有多少位可用,并且请求外围设备或软件能够从该池中读取可用的位。尝试读取不可用的熵位能够触发中断或警报。
两个其他外围设备250包括定时器234和闪存控制器216,后者在以下段落中描述。定时器234能够例如支持处理器202的准确性能。定时器234由多个位(例如,64位)形成,并作为自由运行定时器操作,其保证频率在一定百分比内。另一定时器(未明确示出)能够充当看门狗定时器,以在处理器变得无响应的情况下支持处理器202。无响应可能是由于开发代码被挤压、安全攻击等原因造成的。
闪存控制器216控制闪存存储器210,闪存存储器210可用于代码和数据存储。该数据的主要读取路径能够位于标准存储器地址空间中。然而,对该地址空间的写入能够被忽略,因为闪存不是以标准方式被写入的。相反,为了写入闪存存储器210,软件与闪存控制器216交互。闪存功能能够包括三个主要命令:读取、擦除和编程。读命令能够被标准化并且能够使用芯片存储器地址空间。擦除命令在页级执行,其中页大小可由闪存控制器216参数化。当接收到擦除请求时,闪存控制器216擦除目标页的内容,这将数据呈现为“1”状态(例如,每个字0xFFFFFFFF)。之后,软件能够将单个字编程为任何值。如果不进行另一次擦除,闪存位不会返回到“1”状态,因此通过当前内容和写入值的“AND(与)”操作可有效地改变未来内容。擦除和编程命令相对较慢。典型的擦除时间以毫秒为单位,并且编程时间以微秒为单位。因为秘密数据可以被存储在闪存存储器210中,所以安全也是一个问题。因此,闪存控制器216能够提供一些存储器保护。
图2中描绘了具有一组特定电路组件的安全电路106。然而,给定的安全电路106能够具有更多、更少或不同的电路组件。电路组件还可以不同地互连或者以除上述那些示例方式之外的方式操作。此外,可以省略一些电路组件,而在多个实例中实现其他电路组件。例如,警报处置器204可以是复制的或分布式的,或者多个AES加密引擎212可以存在于一些安全电路106中。此外,可以从用于IC芯片的安全电路106的外围设备250中省略GPIO接口220,其中安全电路106仅形成数十个核心中的一个。
安全ROM外围设备的可兼容范式的示例方案、技术和硬件
(例如,图1和图2的)安全电路106能够包括可兼容的电路组件,其包括外围设备250,诸如ROM 206或118。本节描述使外围设备可兼容的示例方法。每个外围设备250能够遵守安全电路106的兼容性规范。通过遵守定义至少一种接口方案或通信协议的兼容性规范,外围设备250被实现为具有至少一个接口,该接口在外围设备250和其他外围设备之间产生一致且预期的交互。这产生了提高的通信可预测性和确定性,并减少了设计和测试安全电路所需的时间。
图3-1在300-1处图示了示例外围设备250,其包括至少一个接口302以支持与其他电路组件的兼容性。更一般地,图3-1包括互连件110、耦合到互连件110的处理器202、以及耦合到互连件110的多个外围设备。因此,多个外围设备至少能够经由互连件110耦合到处理器202。然而,每个外围设备250还可以直接耦合到处理器202或者以其他方式耦合到处理器202,而不使用互连件110。图3-1明确地描绘了P个外围设备250-1、250-2、…、250-P,其中P表示正整数。
在示例实施方式中,每个外围设备250包括至少一个接口302,其使外围设备250能够遵守为互操作的外围设备提供确定性的通信框架。例如,接口302或通信接口302能够使外围设备250能够实现至少一种通信协议320。接口302包括至少一个互连件接口304、至少一个设备间接口306和至少一个其他接口308。这些接口如下所述。如图所示,外围设备250通常还包括至少一个寄存器接口310和至少一个安全功能模块312。通常,接口302使外围设备250能够遵守用于与处理器202以及与多个外围设备250-1…250-P中的其他外围设备交互的公共框架。
寄存器接口310包括一个或多个寄存器或寄存器条目。每个寄存器条目能够被用于例如向外围设备250通信或从外围设备250通信(例如,用于进或出外围设备250的通信)。例如,处理器202或另一外围设备能够被设置或清除寄存器条目,或者能够向寄存器条目加载值以与外围设备250通信。相反,外围设备250可以改变寄存器条目的值以与处理器202或另一外围设备通信。为了实现该通信,外围设备250能够将寄存器接口310的至少一部分暴露给处理器202或另一外围设备。例如,外围设备250能够提供处理器访问以清除中断状态指示。
通常,寄存器块能够被用于与外围逻辑的其余部分通信,以例如利用软件管理配置和状态通信。在一些情况下,寄存器接口310能够使用控制和状态寄存器(CSR)来实现。CSR提供外围设备250内的寄存器集合,其寄存器至少可由本地主机处理器202经由电路范围或芯片范围地址映射来寻址。CSR能够被标准化,以增强软件一致性并促进电路重用和文档一致性。下面参考图3-3描述寄存器接口310的示例方面。
安全功能模块312实现外围设备250的安全相关功能。安全相关功能包括核心或主要安全功能以及支持或次要安全功能。核心安全功能能够包括例如警报处置、包括加密和解密的密码操作、随机数生成、包括存储和访问秘密数据的安全数据存储(例如,密钥管理)等等。支持安全功能能够包括那些启用或促进核心功能性能的功能。支持安全功能的示例包括存储器存储、存储器控制、定时、电路和芯片I/O控制、环境传感器、总线托管等等。
通常,接口302或任何特定示例接口(例如,互连件接口304、设备间接口306或其他接口308)可以为寄存器接口310建立至少一个寄存器以实现相应的接口通信能力或特征。关于互连件接口304,互连件接口304实现耦合到互连件110的通信接口,以实现例如外围设备250和遵守公共框架的处理器202之间的连接。利用与相同的公共框架兼容的外围设备250和处理器202,两个方向上的设备-处理器通信能够被标准化并且是可预测的。互连件接口304能够跨互连件110操作、能够使用寄存器接口310的至少一个寄存器、能够使用分开的总线或独立的线缆、其某个组合等等。在操作中,外围设备250能够使用互连件接口304来参与至少一个互连件通信314。附加地或替代地,外围设备250可以使用互连件接口304来经由互连件110与另一外围设备通信。
设备间接口306实现外围设备250和遵守公共框架的一个或多个其他外围设备之间的通信接口。利用外围设备250和每个其他外围设备与相同的公共框架兼容,两个方向上的设备-设备通信能够被标准化并且是可预测的。设备间接口306能够使用寄存器接口310的至少一个寄存器、能够使用专用于外围设备的总线、能够使用在两个外围设备之间延伸的一个或多个独立的线缆、其某个组合等等。
在操作中,外围设备250能够使用设备间接口306来参与至少一个设备间通信316。在一些实施方式中,通过绕过互连件110来与另一外围设备通信,外围设备250能够“直接”与另一外围设备通信。此外,通过建立并遵守设备间通信方案,促进了两个或更多个设备之间的通信的一致性和确定性。因此,设计者能够专注于实现安全功能模块312的预期安全相关功能,而不是花费时间和资源来跟踪和复查众多自组织通信机制。
其他接口308实现外围设备250和遵守公共框架的另一电路组件之间的通信接口。利用外围设备250和与相同公共框架兼容的其他电路组件,两个方向上的外围设备信令能够被标准化和并且是可预测的。其他接口308的示例是用于与外部传送信息的芯片I/O接口。如果中断没有完全经由互连件110传送,则其他接口308的另一示例是中断接口。其他接口308的又一示例是时钟接口。在一些情况下,安全电路106(图3中未分开指示)包括主系统时钟和一个或多个辅助系统时钟。时钟接口能够利用主系统时钟和辅助系统时钟的至少选定部分来实现通信定时和一般功能。时钟接口能够根据安全电路106的时钟方案来操作,并且外围设备250的设计代码能够指定与外围设备250相关的时钟。在操作中,外围设备250能够使用其他接口308来参与与另一电路组件(如I/O电路或时钟树)的至少一个其他通信318。
图3-2图示了用于分析外围设备设计以确保满足兼容目标的示例方法300-2。在示例实施方式中,方法300-2使用能够包括互连方案334、设备间方案336或其他方案338(包括方案的每一个)的接口规范332。接口规范332对应于(图3-1的)接口302。互连方案334对应于互连件接口304,设备间方案336对应于设备间接口306,并且其他方案338对应于其他接口308。这些方案能够附加地或替代地包括本地或芯片级I/O方案、中断方案、时钟方案等。
因此,接口规范332能够为接口302建立规则、协议、属性、选项、能力等。类似地,互连方案334、设备间方案336和其他方案338中的每一个能够分别为互连件接口304、设备间接口306、以及其他接口308建立规则、协议、属性、选项、能力等。在设计时间期间,设计者开发每个外围设备250以遵守接口规范332的每个相关方案。例如,设备间方案336可以建立用于定义绕过安全电路106的互连件110的设备间信令的格式。通过这样做,能够产生增强互操作性并减少设计和开发时间以及测试和调试工作的兼容外围设备250。例如,外围设备250能够使用从由外围设备的设计代码指定的属性导出的电路将信号(例如,设备间信号)传送到另一外围设备。
在示例方法中,兼容性分析模块340能够执行设计代码的分析344以检查兼容性。设计者参考接口规范332产生外围设备设计代码342。因此,外围设备设计代码342通过遵守接口规范332来满足兼容性目标。外围设备设计代码342可以至少部分地使用例如配置文件来实现。外围设备设计代码342能够包括处理器设备信令348的一个或多个指示(例如,定义外围设备250与处理器202之间的互连件通信314的方面)、设备间信令350的一个或多个指示(例如,定义外围设备250与另一外围设备之间的设备间通信316的方面)等等。设备间信令350的一个或多个指示能够涉及例如两个或多个外围设备之间交换的信号,包括不使用安全电路106的互连件110。这些指示能够遵循这些信号的寄存器、信号命名、数据类型、定时等的规则和指南。
外围设备设计代码342中的描述产生安全电路106中的电路组件。例如,关于相应的(例如,图3-1的)外围设备250的设备间接口306,基于其设计代码342中包括的属性,设备间接口306能够至少耦合到一个线缆,其延伸到另一外围设备以启用设备间信令。通过在设计代码342中指定设备间信令350,增加了互操作性和通信确定性。接口规范332或设计代码342的配置文件能够指示强制的外围特征以及在给定的兼容性框架中可选的外围特征。因此,在一些情况下,符合的设计代码可以包括强制部分和可选部分。通常,设计代码342能够根据任何IC设计或配置平台来格式化。示例包括Verilog、Python、Hjson等。
在操作中,兼容性分析模块340接受外围设备设计代码342。参考接口规范332,兼容性分析模块340执行分析344以检查外围设备设计代码342是否符合指定的公共框架。兼容性分析模块340能够将外围设备设计代码342与互连方案334、设备间方案336或其他方案338中的一个或多个进行比较,以检查代码是否满足每个方案的规范。这些方案中的任一个都可以包括与中断、寄存器使用等相关的规范。基于分析344,兼容性分析模块340产生兼容性报告346。
兼容性报告346指示外围设备设计代码342是否通过满足接口规范332的标准而通过分析344。如果不是,则兼容性分析模块340能够将“违规”列表包括在兼容性报告346中。每个违规能够包括对引起故障指示的代码部分的引用或者对接口规范332中被违反的部分的引用。尽管可以关于示例安全电路环境来描述接口规范332、兼容性分析模块340和外围设备设计代码342,但是接口规范332、兼容性分析模块340或外围设备设计代码342可以在其他环境中实现。因此,兼容性报告346可以涵盖一般电路设计的分析。
图3-3在300-3处图示了示例外围设备250,其包括寄存器接口310和示例通信信号。在图3-3中,通常但仅作为示例,利用实线描绘了强制的通信信道或信号(在本公开的该示例实例中),并且利用虚线描绘了可选的通信信道或信号。然而,在其他情况下,不同的信道或信号可以是强制的或可选的。此外,其他图中的实线或虚线不一定分别表示在给定接口规范下的要求或缺乏要求。
在示例实施方式中,能够将各种信号指定为外围设备250要遵守的兼容性的框架的一部分。从左上角开始,描绘了使用互连件110的双向信令362-1,其中外围设备250用作相对于互连件110的设备(例如,用作跟随器)。下面,外围设备250被示出为接收至少一个时钟信号364和至少一个开发模式信号365。开发模式信号365表示对外围设备250的安全电路106或整个SOC当前在什么模式下操作的指示。换句话说,能够存在多种操作模式。对于两个示例模式,多种模式能够包括开发模式和生产模式。模式指示可以确定例如如何处置软件错误。其他模式可以启用将完整生命周期模式状态传达到外围设备的安全特征。
外围设备250还能够生成或输出至少一个中断信号366或至少一个警报信号368。此外,使用互连件110的双向信令362-2被描绘为外围设备250相对于互连件110充当主机(例如,充当领导者)。外围设备250还能够参与与GPIO接口220或其他芯片I/O电路的双向信令367。关于寄存器接口310,至少一个输出信号369-1被标记为寄存器到硬件(Reg2Hw)信号。另一方面,至少一个输入信号369-2被标记为硬件到寄存器(Hw2Reg)信号。通常,在一些实施方式中,某些特征被认为是强制性的,而其他特征被认为是可选的。然而,这些强制和可选类别可能在不同的实施方式之间变化。利用可兼容设计,这两个类别能够按特征分配,使得每个外围设备250与其他外围设备适当地互操作。
已经总体上描述了用于可兼容范式中的外围设备的方案、技术和硬件,包括例如提供ROM安全的ROM外围设备,现在该讨论转向用于ROM安全的方案、技术和硬件。
ROM安全的示例方案、技术和硬件
本节描述了能够被包括在具有ROM阵列的ROM块中的示例ROM控制器(例如,其存储掩码ROM)。ROM块或模块能够作为外围设备附接到系统总线,诸如根据上述兼容性原则。在示例实施方式中,作为ROM块的一部分,ROM控制器在系统总线和掩码ROM之间对接。ROM具有加密内容。加密可能牵涉相对较轻量级或较低成本的加密,如加扰。在一些情况下,能够利用从全局常量导出的固定密钥对内容进行加扰。然而,加密可以利用更复杂或更高成本的加密方案来实现。无论采用何种加密方案或密钥,ROM控制器都能够解密(例如,去加扰)从ROM阵列提取的存储器上的内容。
与一些能够对SRAM执行等效解密或加密任务的SRAM控制器不同,ROM控制器还能够包含ROM检查器电路。该ROM检查器电路能够协调ROM内容的加密哈希的计算——例如,在启动或复位后立即作为初始化过程的一部分来提供完整性检查。因此,ROM检查器电路能够检测在系统静止时对掩码ROM已经进行的恶意改变。
ROM块能够提供多种特征。例如,ROM块能够包括用于存储器和地址加扰和/或去加扰的逻辑。第二,ROM块能够执行启动后ROM完整性检查。此外,ROM块能够针对ROM完整性错误或有限状态机(FSM)小故障为控制和状态寄存器(CSR)提供或发出警报触发和/或状态信息。ROM 118/206的这些和其他示例方面在本节中参考图4至图8进行描述。
图4在400处总体图示了关于访问ROM阵列404的数据的示例ROM 118,其包括ROM控制器402和ROM阵列404。如图所示,ROM控制器402能够包括ROM访问接口406和密码电路408。在示例实施方式中,ROM阵列404包括存储在多个ROM地址418处的加密ROM数据410。ROM控制器402被耦合到ROM阵列404。通常,密码电路能够基于多个ROM地址418对加密ROM数据410执行解密操作。
ROM访问接口406被耦合到密码电路408和ROM阵列404。在示例ROM读取或数据提取操作中,ROM访问接口406基于对应于加密ROM数据元412的ROM地址414从ROM阵列404读取加密ROM数据元412(例如,ROM地址414可以是加密ROM数据412被存储的位置的地址)。ROM访问接口406还使用密码电路408对加密ROM数据412进行解密以产生解密ROM数据元416。ROM访问接口406还可以将解密ROM数据元416转发到互连件110。
在一些情况下,ROM访问接口406使用对应于加密ROM数据元412的ROM地址414对加密ROM数据412进行解密以产生解密ROM数据元416。因此,密码电路408能够基于多个ROM地址418中的相应的ROM地址414对加密ROM数据410的相应ROM数据元412执行解密操作。相应的ROM地址414能够诸如通过指示其存储器位置来识别ROM阵列404中的相应的ROM数据元412。如下所述,ROM地址414可以包括“直接”指向ROM阵列404的加扰地址或“间接”指向ROM阵列404的未加扰地址,诸如在调整未加扰地址以产生加扰地址之后。
ROM访问接口406能够利用至少一个有限状态机(FSM)来实现,该有限状态机被设计和/或编程为提供对加密ROM数据410的访问作为解密ROM数据(例如,作为解密ROM数据元416的多个实例)以用于(例如,图1的)安全电路106或电子设备的启动过程。FSM或ROM访问接口406的其他实施方式能够引导密码电路408的操作。
密码电路408能够包括密钥流电路(图4中未示出),其能够基于ROM地址418产生一个或多个密钥。密码电路408还能够包括耦合到密钥流电路的数据组合电路(图4中未示出)。数据组合电路基于加密ROM数据元412和多个密钥中的至少一个密钥来产生解密ROM数据元416。在一些情况下,密码电路408还包括置换电路(图4中未示出),其置换加密ROM数据元412以产生置换的加密ROM数据元。然后,数据组合电路使用逻辑操作来组合至少一个密钥的位和置换的加密ROM数据元的位,以产生解密ROM数据元416。下面参考图6描述密码电路408的示例实施方式。
加密ROM数据410的每个条目可以包括例如ROM指令420和检查代码422,诸如纠错码(ECC)。在这种情况下,加密ROM数据412能够包括对应于ROM指令420的位和对应于ROM指令420的检查代码422的位。对应于ROM指令420的位和对应于ROM指令420的检查代码422的位被混杂、混合或“夹杂”在一起,使得它们相应的位位置未知。相反,解密ROM数据元416能够以两组位彼此分开的形式或者以它们的相对位位置是已知的至少一种形式包括对应于ROM指令420的位和对应于ROM指令420的检查代码422的位。
在一些实施方式中,解密ROM指令和相关联的校验代码可以由ROM 118通过互连件110传递到另一组件。在其他实施方式中,ROM控制器402能够包括ROM检查器电路(例如,图6的ROM检查器电路616)。ROM检查器电路616能够被耦合到密码电路408的输出。在示例操作中,ROM检查器电路616基于解密ROM数据元416的ROM指令420来计算另一检查代码。ROM检查器电路616还执行包括解密ROM数据元416的检查代码422和计算出的检查代码的比较。ROM检查器电路616还能够基于比较来生成错误信号。错误信号能够作为警报信号和/或中断信号分别发送到警报处置器和/或处理器。
如下文参考图8和图10所述,存储在ROM阵列404的多个ROM地址418处的加密ROM数据410的每个加密ROM数据元412(在一些实施方式中)区别于存储在ROM阵列404的多个ROM地址418处的加密ROM数据410的每个其他加密ROM数据元412'。这种区别(或加密ROM数据元唯一性)至少部分归因于基于多个ROM地址418的加密方案。例如,能够选择给定加密方案中使用的加密方案和/或至少一个密码密钥来确保每个原始ROM数据元产生区别的加密ROM数据元。
接下来描述图5并且图5图示了示例ROM 118的附加和/或替代方面。因此,应当理解,图4的各方面能够与图5的一个或多个方面组合,反之亦然。例如,图5的地址调整电路504能够被包括有图4的电路。在这种情况下,ROM控制器402能够包括地址调整电路504,其调整ROM地址以产生调整后的ROM地址。这可能牵涉将ROM地址从未加扰(例如,从被调整以产生物理地址的逻辑地址)转换为加扰。ROM访问接口406使用地址调整电路504调整ROM地址以读取存储在多个ROM地址418处的加密ROM数据410。地址调整电路504可以例如置换每个ROM地址的两个或更多个位、替换每个ROM地址的两个或更多个位、或者置换和替换ROM地址418的每个ROM地址的两个或更多个位以产生调整后的ROM地址。图示了图4和图5的各方面被组合的其他示例实施方式在图6中一起描绘并且在下面进行描述。
图5总体上在500处示出了在检查加密ROM数据410的完整性的场境下包括ROM控制器402和ROM阵列404的示例ROM 118。如图所示,ROM控制器402包括完整性检查器电路502、地址调整电路504和门电路506。ROM控制器402至少有权访问摘要计算电路508。在一些情况下,摘要计算电路508被实现为(图2的)另一外围设备250和/或(图1的)电路组件108。在其他情况下,摘要计算电路508能够被实现为ROM 118的一部分,诸如通过作为ROM控制器402的一部分或与ROM控制器402分开。
在示例实施方式中,ROM阵列404包括存储在多个ROM地址418处的加密ROM数据410。ROM阵列404还可以包括至少一个预期摘要510(或“预期摘要值510”)。ROM控制器402耦合到ROM阵列404。在示例操作中,ROM控制器402基于对应于加密ROM数据元412的ROM地址512或514从ROM阵列404读取加密ROM数据元412。ROM控制器402还使用加密ROM数据元412获得至少一个摘要值516。为了执行该获得,完整性检查器电路502可以使用摘要计算电路508。ROM控制器402还基于至少一个摘要值516和预期摘要值510来门控对ROM阵列404的访问。完整性检查器电路502可以控制门电路506以许可/准许或阻止对ROM阵列404的访问。
ROM控制器402的地址调整电路504能够调整ROM地址512以产生调整后的ROM地址514。ROM控制器402使用地址调整电路504来调整ROM地址512以读取存储在多个ROM地址418处的加密ROM数据410。地址调整电路504能够通过例如移位、交换或以其他方式操纵ROM地址512的两个或更多个位来调整ROM地址512以产生调整后的ROM地址514。图4的ROM地址414可以对应于ROM地址512或调整后的ROM地址514。
ROM控制器402被配置为基于使至少一种哈希算法应用于加密ROM数据元412来获得至少一个摘要值516。本文中描述了示例哈希算法。在一些情况下,ROM阵列404和ROM控制器402包括第一外围设备(例如,第一外围设备250-1,诸如图2的ROM 206)。第二外围设备(例如,第二外围设备250-2,诸如图2的HMAC引擎214)能够实现一种或多种哈希算法。ROM控制器402能够通过与第二外围设备通信来获得至少一个摘要值516。因此,在这些情况下,第二外围设备能够包括摘要计算电路508。在其他情况下,包括其ROM控制器402的ROM 118能够替代地包括摘要计算电路508。
如图5所示,对于一些实施方式,ROM控制器402能够从ROM阵列404读取预期摘要值510。与加密ROM数据410相比,预期摘要值510可以以未加密形式存储在ROM阵列404中。预期摘要值510可以被存储在ROM阵列404的任何地址和/或位置处,并且预期摘要值510可以跨越ROM阵列404的一个或多个行和/或地址。例如,预期摘要值510可以被存储在ROM阵列404中对应于可确定的ROM地址(例如,标识最后六个ROM条目的至少一个ROM地址512或至少一个调整后的ROM地址514)的预定位置处(例如,最后六个ROM条目)。
完整性检查器电路502能够比较计算出的摘要值516和预期摘要值510。响应于至少一个摘要值516与预期摘要值510匹配,ROM控制器402能够使用门电路506准许对ROM阵列404的访问,例如以许可使用加密ROM数据410来执行启动过程或许可一般的ROM访问。另一方面,响应于至少一个摘要值516未能匹配预期摘要值510,ROM控制器402能够使用门电路506来阻止对ROM阵列404的访问,例如以防止启动过程使用不可信的加密ROM数据410执行或阻止一般ROM访问。ROM控制器402还可以发送至少一个警报518(或“警报指示518”)。至少一个警报518可以对应于经由寄存器从ROM 118传送的警报和/或经由互连件110或专用路径发送的中断。
安全电路能够附加地或替代地向ROM 118外部的一个或多个其他组件提供计算出的摘要值516。例如,ROM控制器402(诸如其完整性检查器电路502)能够将摘要值516发送到另一组件(诸如主处理器)。ROM控制器402还能够或替代地经由ROM 118的至少一个寄存器来暴露摘要值516。在读取寄存器中的值时,这使得(一个或多个)其他组件能够独立地验证计算出的摘要值516的值。由于密钥导出机制,即使攻击者能够破坏加密ROM数据410和/或预期摘要值510(其存储在ROM阵列404中),攻击者已经以其他组件能够检测到的方式改变了芯片身份。
加密ROM数据410的每个加密ROM数据元412能够被建立为变化的或差别性的,包括通过是唯一的或彼此不同的。例如,加密ROM数据410的每个相应的加密ROM数据元412能够在整个ROM阵列404中与加密ROM数据410的每个其他相应的加密ROM数据元412不同。在一些情况下,选择与加密或解密该加密ROM数据410相关的密码密钥以确保每个相应的加密ROM数据元412在整个ROM阵列404中与加密ROM数据410的相应的每个其他加密ROM数据元412不同。在其他情况下,选择与每个加密ROM数据元412的产生相关的加密算法,以确保每个相应的加密ROM数据元412在整个ROM阵列404中与加密ROM数据410的每个其他相应的加密ROM数据元412不同。参考图8进一步描述用于确保大多数甚至每个加密ROM数据元412是唯一的技术。
图6图示了示例ROM块600,其可以被实现为(例如,图1、4和5的)ROM 118和/或(例如,图2的)ROM外围设备206。图6描绘了示例ROM模块实施方式的高级框图。一些所描绘的块可以利用多用原语的实例来实现,该多用原语也可以在芯片上的其他地方使用或复制或作为安全电路的另一组件的一部分。根据图4和图5,ROM块600包括ROM阵列404、完整性检查器电路502和地址调整电路504。
如图所示,ROM块600还包括接口604、至少一个寄存器606、ROM检查器电路616、零填充器电路618、多路复用器602以及(例如图4的)密码电路408的示例。ROM检查器电路616可以利用ECC解码器来实现。密码电路408能够例如利用密钥流电路608、操纵电路612和数据组合电路614实现。数据组合电路614能够利用例如执行诸如异或(XOR)操作的逻辑操作的电路实现。操纵电路612能够分散ROM数据元626(其能够对应于图4和图5的加密ROM数据元412)的一个或多个位。操纵电路612能够使用例如置换电路、替换电路或组合的置换和替换电路(例如,替换-置换网络)来实现,如下文进一步描述的。
通常,该图的上半部分示出了当系统处于正常操作时ROM读取的路径。该图的下半部分描绘了ROM完整性检查器电路502的使用。ROM完整性检查器电路502能够由例如电源管理器在芯片启动序列的早期触发以检查ROM影像的有效性。在一些情况下,完整性检查器电路502能够被配置为仅运行一次以防止攻击者能够利用多次执行来损坏系统。当完整性检查过程以肯定结果结束时,完整性检查器电路502能够释放多路复用器602,以准许对作为(图5的)门电路506的一部分的ROM阵列的访问。
本文档现在描述当安全电路(例如,芯片)在正常启动模式下操作时或者在已经成功执行完整性检查之后的其他情况下的示例ROM访问。一旦芯片启动,就能够通过诸如系统总线(例如,TL-UL总线)的互连件请求ROM访问。ROM块600能够通过接口604(例如,TL-UL适配器)接收这些请求,其如图6的左上方所示。在正常操作中,多路复用器602准许对这些总线读取(例如,TL读取)的访问。在地址调整电路504处调整读取请求的地址610。例如,地址调整电路能够使用替代置换网络对地址进行加扰。
与ROM访问并行地,密钥流电路608——诸如低延迟、减少轮次的PRINCE块密码(例如,具有延迟为1的5轮,其能够相当于用于SRAM的密码)——计算ROM块的39位截断密钥流。密钥流电路608使用来自(例如,在调整地址之前)提供给地址调整电路504的请求的地址来生成至少一个密钥。在下一周期,来自ROM阵列404的加扰数据(例如,ROM数据的位和对应ECC的位,这两组或两种类型的位在ROM阵列404中混杂并作为ROM数据元626)被放置通过操纵电路612,诸如另一替代置换网络。来自操纵电路612的经操纵(例如,置换和/或替换)的ROM数据和来自密钥流电路608的至少一个密钥或密钥流由数据组合电路614组合。在所图示的示例中,密钥和置换的加扰ROM数据(具有ECC码)通过由数据组合电路614执行的XOR操作来进行XOR。例如,能够在“计数器(CTR)模式”中采用如PRINCE的块密码。利用N位块密码(例如,PRINCE)和给定密钥(例如,网表常量)对计数器(例如,ROM数据元地址610)进行加密,以产生能够通过数据(例如,对应于ROM数据元地址610的ROM数据元626)进行“XOR”的N位密钥流块628。
来自数据组合电路614的输出是解密的32位数据加上七个ECC位。如果这里实现ROM检查器电路616,则这39位能够通过ROM检查器电路616并在利用ECC位成功验证后返回到接口604。ECC解码错误能够导致响应于TL请求的ROM访问经由接口604利用错误信号622来报告错误代码(例如,读取错误指示符)。ROM控制器还能够使用错误信号622或者替代地设置寄存器606中的至少一个寄存器和/或基于ECC解码错误生成致命警报。尽管本文中提供了某些位长度,但是这些仅作为示例来呈现,因为数据、ECC等可以具有不同的长度或者可以被省略。
在ECC功能的替代实施方式中,“主”或系统总线可以被增强有ECC检查能力。在这种情况下,其电路及其操作可以与参考图6描绘和描述的不同。例如,ROM访问响应624可以通过将ROM位和ECC位从数据组合电路614的去加扰XOR运算符“直接”传递到接口604来包括ROM位和ECC位。因此,在这些替代实施方式中,能够从ROM块600中省略ROM检查器电路616及其相关联的CSR。
图7图示了用于访问图6的ROM块600的ROM阵列404的示例定时图700。定时图700描绘了不同信号的定时。这些示例信号映射到图6的ROM块600中所示的信号。从请求702(req702)输出从接口604被提供到响应出现在接口604的响应或ROM有效704(rvalid 704)输入上的时间的时间是一个周期。显示了两个示例:未加扰的或原始地址“12”和未加扰的或原始地址“34”。图中地址的“加扰方案”示例是将每个地址的数位反转。关于原始或未加扰的“12”地址示例,存储在ROM中的加扰地址21处的字表示为“w21”。未加扰或原始地址12的密钥流值表示为“k12”。未加扰或原始地址12的解密ROM数据用“d12”表示。
参考图6,密钥流电路608的基于PRINCE块密码的实施方式以及地址调整电路504和操纵电路612的两个替换和置换(S&P)网络实施方式能够通过“密钥”进行参数化。对于ROM控制器,这些键可以是全局随机网表常量;因此,可以假设密钥难以恢复,但它们不一定是秘密数据。尽管在本文中的描述和/或附图中呈现了特定的(例如,39位和256位)位长度和(例如,32位)字大小,但是这些仅作为示例来提供。其他实施方式可以使用不同的位长度、字大小等等。
本文档现在描述示例启动ROM完整性检查。ROM完整性检查器电路502能够例如在复位之后运行,包括在复位之后“立即”运行,或者至少在对ROM进行任何读取之前运行。直到ROM检查完成为止,完整性检查器电路502控制ROM地址请求(例如,通过多路复用器602)。用于多路复用器602的选择信号632能够包括冗余编码以保护选择信号免受故障注入(FI)攻击。如果选择信号632具有无效值,则无效的检测能够触发致命警报。在开始从ROM阵列404读取数据作为ROM数据元626(例如,其可以对应于图4和图5的加密ROM数据元412)之前,ROM完整性检查器电路502(或电源管理器模块)能够在密码模块(图6中未示出)上启动密码操作以准备ROM检查(例如,能够使用信号kmac_cmd_o在密钥或Keccak消息认证代码(KMAC)引擎上发起cSHAKE操作)。下面参考图9的流程图描述示例ROM完整性检查过程。
对安全电路的可能的物理攻击是颠覆掩码ROM的尝试。掩码ROM的规则结构有用,因为它使金属修复相对简单,但出于同样的原因,规则结构能够使ROM成为攻击者相对容易的目标。由于ROM中的代码可能是首先执行的,因此在未被检测到的情况下修改ROM代码的攻击者能够完全颠覆信任链。因此,完整性检查器电路502能够提供ROM代码完整性的置信度测量。
在示例实施方式中,在使ROM控制器脱离复位之后,在启动主机处理器之前电源管理器等待直到“check_done_o”信号被断言。电源管理器还能够检查check_good_o信号是否为“开启”。如果没有,电源管理器能够拒绝启动。这提供了安全检查,并且密钥管理器集成提供了附加的安全,如下所述。
KMAC接口能够假设KMAC引擎被预先配置为运行具有特定于ROM检查器电路的前缀的cSHAKE算法。ROM检查器在完成一次哈希计算(或已知数量的哈希计算)后不断言信号“kmac_rom_vld_o”。然而,KMAC引擎可能忽略此后的信号,以允许简单的仲裁,该仲裁仍然提供针对故障注入攻击的鲁棒性。
与密钥管理器的集成基于将“kmac_digest_share0_i”和“kmac_digest_share1_i”中的摘要数据转发为“keymgr_digest_data_o”。这个256位摘要能够被合并到“CreatorRootKey”中。在一些情况下,密钥管理器在复位后只能许可一个(例如,256位/32位=8节拍的)事务来传递该信息。响应于任何未来的消息,密钥管理器能够发出警报,从而击败试图在正确交易之前或之后触发额外交易的攻击者。
CreatorRootKey能够形成身份和启动密钥(Identities and Root Keys)链中的第一密钥。修改ROM的攻击者将扰乱CreatorRootKey,因为避免这样做将涉及对ROM校验和计算或KM_DERIVE函数的原像攻击。结果是,虽然安全芯片能够运行,但该芯片将具有“错误”的启动密钥,因此用于证明的信任链被破坏。
接下来描述参数和信号方面的示例硬件接口。下表1给出了示例ROM控制器信号的描述。这些信号可以从完整性检查器电路502发送或在完整性检查器电路502处接收。“检查”相关信号可以与电源管理器通信。可以利用密钥管理器传送“keymgr”相关信号。“kmac”相关信号可以与KMAC引擎或执行哈希操作的其他电路进行通信。
表1.与ROM完整性检查器通信的示例信号。
ROM块的寄存器606的示例寄存器值能够包括:
ALERT_TEST;
FATAL_ALERT_CAUSE;
DIGEST_0…DIGEST_7(例如,利用多寄存器);
EXP_DIGEST_0…EXP_DIGEST_7(例如,利用多寄存器);以及
ROM(例如,到ROM中的窗口)。
FATAL_ALERT_CAUSE寄存器的示例字段在下面的表2中给出:
表2.致命警报原因寄存器的示例字段。
关于编程和ROM块,软件能够通过从ROM提取代码或加载数据来与ROM控制器交互。从这个角度来看,ROM块似乎是可以通过系统总线访问的内存块。然而,ROM块能够使一些寄存器606可访问。除了ALERT_TEST寄存器,其能够是可写,其他寄存器都能够是只读的。FATAL_ALERT_CAUSE寄存器可能会在操作期间改变值(例如,如果用信号发送警报),但ROM块的其他寄存器在软件运行时能够具有固定值。
完整性检查器电路502能够经由摘要信号634将(一个或多个)摘要加载到寄存器606中。为了获得计算出的ROM摘要,软件能够读取DIGEST_0到DIGEST_7寄存器。ROM阵列404还能够包含预期的ROM摘要EXP_DIGEST。与ROM阵列404的其余内容不同,存储预期摘要的内容可以不被加扰。因此,软件无法通过标准ROM接口读取它,这会“再次”对其进行解扰,导致垃圾数据,该垃圾数据导致ECC检查失败。如果软件将被给予权限访问该值,则能够在EXP_DIGEST_0到EXP_DIGEST_7处读取预期摘要。
图8总体上在800处示出了根据具有弹性的完整性检查的实施方式的示例方案。安全电路包括ROM阵列404。ROM阵列404包括加密ROM数据410。加密ROM数据410能够包括加密ROM数据元的多个实例,诸如加密ROM数据元412-1…加密ROM数据元412-L的L个实例,其中L表示整数。
每个相应的加密ROM数据元412是使用具有至少一个密钥804的密码算法806和/或基于相应的ROM地址414(例如,相应的ROM地址414可以被用作至少一个密钥804的一部分)从相应的“原始”ROM行802-1产生的。因此,第一ROM行802-1产生第一个加密ROM数据元412-1,并且第L ROM行802-L产生第L个加密ROM数据元412-L。每个ROM行或条目802能够对应于例如在加密和解密对操作之后的解密ROM数据元416。
在一些情况下,密码算法806和密钥804的特定组合能够产生相同的——即彼此不区别的加密ROM数据元412的两个或更多个实例。如果ROM阵列404中的另一ROM行已经改变,则这能够通过将ROM完整性检查器重定向到具有相同值的不同ROM行来提供另一潜在的攻击途径。更具体地,攻击者可能尝试攻击检查器和ROM阵列之间的通信。这能够牵涉操纵数据总线(例如,以隐藏对ROM数据所做的改变)或攻击地址总线的低顺序位。例如,攻击者可能尝试修改ROM中的字,但通过将ROM检查器重定向到相同字的另一副本来逃避哈希计算对这种改变的检测。
为了对抗这个问题,如果存在一个或多个复制,则密码算法806和/或密钥804能够被更改或用不同的算法或密钥替换。利用更改后的算法和/或密钥,ROM行802-1…802-L被重新加密以产生加密ROM数据元412-1…412-L的另一组多个实例。能够重复该过程,直到加密ROM数据元412的很少或甚至零个实例是相同的。
与一些使用临时的(且不可猜测的)密钥来使得攻击静态数据更加困难的加扰方法不同,用于ROM加扰的密钥对于每个电路是固定的。尽管如此,这样的固定密钥将提供如上所述的扩散和地址链接特性。密钥能够从全局常量导出。在构建安全电路实例的最终设计时,能够执行“额外”检查以确保选择一个常量,该常量产出密钥,其中ROM中的每个字在加扰后都是区别的。
已经概括地描述了用于ROM安全性的方案、技术和硬件,现在该讨论转向示例方法。
ROM安全的示例方法
下面参考图9至图13的流程图描述示例方法。图9利用流程图900图示了用于装置检查ROM的完整性的示例方法,诸如在启动或复位时。流程图900包括九个框902-918。还参考图6,ROM完整性检查器电路502能够在复位之后运行,包括在复位之后“立即”运行,或者至少在对ROM进行任何读取之前运行。直到ROM检查完成为止,ROM检查器能够控制ROM地址请求(例如,通过多路复用器602)。用于多路复用器602的选择信号632能够包括冗余编码以保护选择信号632避免故障注入(FI)攻击。如果选择信号632具有无效值,则无效的检测能够触发致命警报。在开始从ROM阵列404读取数据之前,ROM检查器(或电源管理器模块)能够开始加密操作以准备执行用于ROM检查的一个或多个哈希操作。
在902,ROM检查器能够以从“地址0”开始的未加扰地址顺序读取ROM内容,这由于地址加扰而导致物理ROM上的分散的访问模式。在904,每次ROM读取产生39位数据,这些数据用零填充(例如,通过零填充器电路618)以达到64位。该64位长度与图5的摘要计算电路508(例如,KMAC引擎(图5或图6中未明确示出))所期望的接口匹配。地址被递增。
ROM完整性检查器电路502循环通过ROM中的许多字(例如,从底部到顶部)。读取并递增直到地址达到预定地址,如下面针对块906所描述的。完整性检查器电路502的有限状态机(FSM)使用准备/有效接口并响应于被发送的最后一个字来设置“kmac_rom_last_o”位,将每个ROM字传递到KMAC引擎。
在906,基于地址值做出决定。可以为预期的哈希值保留一定数量的字。例如,ROM阵列404中的顶部八个(top-8)字(例如,按未加扰地址)能够被解释为256位“预期哈希值”。与ROM阵列404的其余部分不同,预期哈希的字的数据可以以未加扰的条件存储。因此能够直接读取期望的哈希值而无需解密。在908,将这些顶部8个字从ROM阵列404读入缓冲器或寄存器以用于预期摘要值。因此,这些字能够由完整性检查器电路502获得(例如,忽略ECC位)作为预期哈希。能够将预期哈希与从KMAC引擎或摘要计算电路508的其他实施方式接收回的摘要进行比较。
在910,一旦从KMAC引擎接收到摘要,完整性检查器电路502就能够将摘要转发到密钥检查器,诸如密钥管理器。密钥管理器或完整性检查器电路502能够在912将计算出的摘要与从ROM阵列404的顶部八个字读取的预期摘要进行比较。如果ROM控制器402的FSM执行比较,则可以省略框910的转发。如果两个摘要不匹配,则密钥管理器和/或完整性检查器电路502能够在914处生成警告。该警告能够作为警报或中断用信号发送。响应于预期摘要与计算出的摘要的匹配,在916,完整性检查器电路502能够用信号发送“check_good_o”指示为“On”并且能够释放多路复用器602。通过这样做,完整性检查器电路502切换对多路复用器602的访问以允许其他组件经由接口604访问ROM阵列404。对于匹配或不匹配,当计算和/或比较完成时,可以断言“check_done_o”指示(例如,驱动为高)。然后系统可以在918进入正常操作。
图10图示了根据具有弹性的完整性检查的示例方法的流程图或过程1000。通常,关于示例基于加密密钥的实现,流程图1000能够牵涉首先选择加密密钥。第二,使用所选择的加密密钥对ROM数据的每一行进行加密以产生相应的加密ROM数据元412。第三,检查加密ROM数据元412的多个实例以确定是否存在任何复制。如果没有复制,则该过程能够终止。另一方面,如果检测到至少一个复制,则该过程能够通过重复步骤继续,从选择另一加密密钥开始。
如图10所示,流程图1000包括五个框1002-1010。在框1002,加密密钥和/或加密算法被应用于ROM的每一行以产生多个加密ROM行。在框1004,确定一定数量的复制加密ROM行的存在。如果数量为零(或满足另一阈值),则过程可以终止,如虚线箭头所指示。另一方面,如果复制的数量为非零,则在框1006处利用新加密密钥和/或新加密算法对ROM的每一行重复加密的应用。在框1008,基于新密钥和/或新算法确定新数量的加密ROM行的复制实例。根据块1010,该过程能够在框1006继续,直到通过应用给定密钥和算法组合来复制某个阈值数量(诸如零)的加密ROM行。
图11以流程图或过程1100图示了装置实现ROM加扰(诸如用于访问加扰ROM数据)的示例方法。流程图1100包括四个框1102-1108。这些操作可以由诸如ROM 118/206外围设备的ROM块执行。在框1102,ROM能够从系统总线或其接口接收ROM读取请求,其中该ROM读取请求包括ROM地址。在框1104,ROM的ROM控制器能够使用ROM地址访问ROM阵列以获得加扰ROM数据,加扰ROM数据除了ROM指令之外,还可以包括ECC或其他保护数据。更一般地,加扰ROM数据可以被实现为加密ROM数据。
在框1106,ROM控制器的密码电路能够使用ROM地址对加扰ROM数据进行解扰以产生未加扰的ROM数据。例如,密码电路能够使用密钥流电路608、操纵电路612(例如,替换和置换网络或用于扩散加扰ROM数据的位的其他电路)、以及执行逻辑操作的数据组合电路614中的一个或多个。在框1108,ROM控制器能够经由接口和/或系统总线将未加扰ROM数据发送到另一外围设备。
图12是图示了用于访问包括加密ROM数据的ROM阵列的示例过程1200的流程图。该流程图包括四个框1202-1208。在框1202,获得ROM读取请求,该ROM读取请求包括与ROM阵列相关的ROM地址,该ROM阵列包括存储在多个ROM地址处的加密ROM数据。例如,ROM控制器402能够获得包括与ROM阵列404相关的ROM地址414的ROM读取请求,ROM阵列404包括存储在多个ROM地址418处的加密ROM数据410。ROM读取请求可以例如经由互连件110和/或接口604从另一组件获得。
在框1204,使用ROM地址从ROM阵列读取加密ROM数据元。例如,ROM控制器402能够使用ROM地址414从ROM阵列404读取加密ROM数据元412。在一些情况下,ROM控制器402可以包括地址调整电路504,并且地址调整电路504可以调整ROM地址512以产生调整后的ROM地址514。在这种情况下,ROM控制器402可以使用利用调整后的ROM地址514实现的ROM地址414从ROM阵列404获得加密ROM数据元412。
在框1206,加密ROM数据元使用ROM地址被解密以产生解密ROM数据。例如,密码电路408能够使用ROM地址414对加密ROM数据元412进行解密以产生解密ROM数据元416。为此,密码电路408可以使用ROM地址414来生成密钥,该密钥被用作解密算法的一部分以产生解密ROM数据元416。
在框1208,解密ROM数据元被转发到互连件。例如,ROM控制器402能够将解密ROM数据元416转发到互连件110。这里,解密ROM数据元416可以包括检查代码位。附加地或替代地,ROM检查器电路616可以在ROM处执行错误检查过程,作为转发解密ROM数据元416的动作的一部分或与其结合。
图13是图示用于检查包括加密ROM数据的ROM阵列的完整性的示例过程1300的流程图。该流程图包括三个框1302-1306。在框1302,基于对应于加密ROM数据元的ROM地址从ROM阵列读取加密ROM数据元,其中ROM阵列在多个ROM地址处存储加密ROM数据。例如,ROM控制器402能够基于对应于加密ROM数据元412的ROM地址512或514从ROM阵列404读取加密ROM数据元412。因此,ROM控制器402可以包括地址调整电路504,该地址调整电路504从ROM地址512产生调整后的ROM地址514,使得调整后的ROM地址514被用于识别正在被检索的加密ROM数据元412。这里,ROM阵列404能够在多个ROM地址418处存储加密ROM数据410。ROM阵列404还可以存储预期摘要值510。
在框1304,使用加密ROM数据元来获得至少一个摘要值。例如,ROM控制器402能够使用加密ROM数据元412来获得至少一个摘要值516。在一些情况下,ROM控制器402的完整性检查器电路502可以与ROM 118外部的摘要计算电路508通信,以获得至少一个摘要值516。在其他情况下,完整性检查器电路502或ROM 118的另一部分可以包括用于计算摘要值516的哈希的电路。摘要值516可以对应于对加密ROM数据元412的多个实例的哈希,包括多达给定ROM阵列404中的加密ROM数据元412的所有实例。在这种情况下,对于块1302,基于对应于多个加密ROM数据元412的多个ROM地址,从ROM阵列404读取多个加密ROM数据元412。此外,对于块1304,哈希算法被应用于从ROM阵列404读取的多个加密ROM数据元412。
在框1306,基于至少一个摘要值和预期摘要值来门控对ROM阵列的访问。例如,ROM控制器402能够基于至少一个摘要值516和预期摘要值510来门控对ROM阵列404的访问。为此,完整性检查器电路502可以将摘要值516与预期摘要值510进行比较。如果不匹配,则门电路506可以阻止或拒绝对ROM阵列404的访问。另一方面,如果两个值510和516匹配,则门电路506能够许可其他组件访问ROM阵列404,例如,以使得初始化能够继续进行或者“常规”ROM访问能够发生。
这些方法的各方面可以例如以硬件(例如,固定逻辑电路或与存储器结合的处理器)、固件、软件或其某种组合来实现。该方法可以使用图1至图8和图14所示的装置或组件中的一个或多个来实现,这些组件可以被进一步划分、组合等。这些图中的设备和组件通常代表硬件,诸如电子设备、PCB、封装模块、IC芯片、组件或电路;固件;软件;或其组合。因此,这些图图示了能够实现所描述的方法的许多可能的系统或装置中的一些。
对于本文中描述的方法和相关联的(一个或多个)流程图,示出和/或描述操作的顺序并不旨在被解释为限制。相反,所描述的方法操作的任何数量或组合能够以任何顺序组合以实现给定方法或替代方法。还可以从所描述的方法中省略操作或向所描述的方法添加操作。此外,所描述的操作可以以完全或部分重叠的方式来实现。
ROM安全的示例方面和实施方式
下面,描述一些示例方面和实施方式:
示例方面1:一种用于安全只读存储器ROM的装置,该装置包括:ROM阵列,其包括存储在多个ROM地址处的加密ROM数据;以及ROM控制器,其耦合到ROM阵列,ROM控制器包括:密码电路,其被配置为基于多个ROM地址对加密ROM数据执行解密操作;以及ROM访问接口,其耦合到密码电路和ROM阵列,该ROM访问接口被配置为:基于对应于加密ROM数据元的ROM地址,从ROM阵列中读取加密ROM数据元;使用密码电路解密该加密ROM数据元以产生解密ROM数据元;并且将解密ROM数据元转发到互连件。
示例方面2:示例方面1的装置,其中,ROM访问接口被配置为使用对应于加密ROM数据元的ROM地址对加密ROM数据元进行解密以产生解密ROM数据元。
示例方面3:示例方面1或示例方面2的装置,其中,密码电路被配置为基于多个ROM地址中的相应的ROM地址对加密ROM数据元的相应的ROM数据元执行解密操作,该相应的ROM地址被配置为识别ROM阵列中的相应的ROM数据元。
示例方面4:前述示例方面中任一项的装置,其中,ROM访问接口包括有限状态机FSM,其被配置为提供对加密ROM数据的访问作为用于启动过程的解密ROM数据。FSM是在任何时间采取多个预定义状态中的对应一个状态的系统,并且该系统基于FSM的输入从一个状态转换到另一状态。
示例方面5:根据前述示例方面中任一项的装置,其中:ROM控制器包括地址调整电路,其被配置为调整ROM地址以产生调整后的ROM地址;并且ROM访问接口被配置为使用地址调整电路来调整ROM地址以读取存储在多个ROM地址处的加密ROM数据。
示例方面6:示例方面5的装置,其中,地址调整电路被配置为对ROM地址中的每个ROM地址的两个或更多个位进行置换或替换中的至少一种以产生调整后的ROM地址。
示例方面7:前述示例方面中任一项的装置,其中,密码电路包括:密钥流电路,其被配置为基于ROM地址产生密钥;以及数据组合电路,其耦合到密钥流电路,该数据组合电路被配置为基于加密ROM数据元和密钥中的至少一个密钥来产生解密ROM数据元。
示例方面8:示例方面7的装置,其中:密码电路包括操纵电路,其配置为扩散加密ROM数据元的两个或更多个位以产生操纵的加密ROM数据元;并且数据组合电路被配置为使用逻辑操作来组合至少一个密钥的位和操纵的加密ROM数据元的位以产生解密ROM数据元。
示例方面9:前述示例方面中任一项的装置,其中,加密ROM数据元包括对应于ROM指令的位和对应于ROM指令的检查代码的位;并且解密ROM数据元包括对应于ROM指令的位和对应于ROM指令的检查代码的位。
示例方面10:示例方面9的装置,其中,ROM控制器包括:ROM检查器电路,其耦合到密码电路的输出,该ROM检查器电路被配置为:基于解密ROM数据元的ROM指令计算另一检查代码;执行包括解密ROM数据元的检查代码与计算出的检查代码的比较;并且基于比较生成错误信号(例如,如果校验代码和计算出的校验代码之间不匹配)。
示例方面11:示例方面9的装置,其中,由于基于多个ROM地址的加密方案,存储在ROM阵列的多个ROM地址处的加密ROM数据的每个加密ROM数据元区别于存储在ROM阵列的多个ROM地址处的加密ROM数据的每个其他加密ROM数据元。
示例方面12:根据前述示例方面中任一项所述的装置,其中,该装置包括移动设备。
示例方面13:一种用于安全只读存储器ROM的方法,该方法包括:获得ROM读取请求,该ROM读取请求包括与ROM阵列相关的ROM地址,该ROM阵列包括存储在多个ROM地址处的加密ROM数据;使用ROM地址从ROM阵列读取加密ROM数据元;使用ROM地址解密该加密ROM数据元以产生解密ROM数据元;以及将解密ROM数据元转发到互连件。
示例方面14:示例方面13的方法,其中,解密包括:基于ROM地址生成至少一个密钥;以及将该至少一个密钥应用于加密ROM数据元以产生解密ROM数据元。
示例方面15:示例方面14的方法,其中,应用包括:执行包括所述至少一个密钥和加密ROM数据元的逻辑操作以产生解密ROM数据元。
示例方面16:示例方面15的方法,其中,解密包括:在执行逻辑操作之前操纵加密ROM数据元的位以产生操纵的ROM数据元,其中,该执行包括使用至少一个密钥和操纵的ROM数据元来执行逻辑操作以产生解密ROM数据元。
示例方面17:一种包括用于安全只读存储器ROM的安全电路的集成电路,该安全电路包括:ROM阵列,其包括多个ROM地址处的ROM数据;以及耦合到ROM阵列的ROM控制器,该ROM控制器被配置为以密码方式将多个ROM地址中的相应ROM地址绑定到ROM数据的相应的ROM数据元。
示例方面18:示例方面17的集成电路,其中,ROM控制器包括密码电路,其被配置为使用相应的ROM地址来解密相应的ROM数据元。
示例方面19:示例方面18的集成电路,其中,密码电路被配置为:基于相应的ROM地址生成至少一个密钥;以及使用至少一个密钥解密相应的ROM数据元以产生解密ROM数据元。
示例方面20:示例方面19的集成电路,其中,密码电路被配置为:通过将至少一个密钥应用于相应的ROM数据元的版本,使用至少一个密钥产生解密ROM数据元,该版本对应于存储在ROM阵列中的相应的ROM数据元的操纵的版本。
示例方面21:示例方面17至20中任一项的集成电路,其中,ROM控制器被配置为:对联合形成对应于相应的ROM地址的相应的ROM数据元的ROM位和纠错码ECC位的组合进行操作。
示例方面22:示例方面17至21中任一项的集成电路,其中,ROM控制器包括:耦合到ROM阵列的完整性检查器电路,该完整性检查器电路被配置为基于应用于ROM数据的检查过程和预期摘要来门控对ROM阵列的访问(例如,当且仅当通过检查过程获得匹配时,以准许对ROM阵列(即,服务请求从ROM阵列读取数据)的访问)。
示例方面23:示例方面22的集成电路,其中,完整性检查器电路被配置为通过以下方式实现检查过程:从ROM阵列中提取预期的摘要;执行包括所提取的期望摘要和基于ROM阵列的ROM数据计算的摘要的比较;以及基于该比较,准许或拒绝对ROM阵列的访问(例如,如果所提取的预期摘要与基于ROM阵列的ROM数据计算的摘要之间存在匹配,则准许,否则拒绝)。
示例方面24:一种用于安全只读存储器ROM的装置,该装置包括:ROM阵列,其包括存储在多个ROM地址处的加密ROM数据;以及ROM控制器,其耦合到ROM阵列,该ROM控制器被配置为:基于对应于加密ROM数据元的ROM地址,从ROM阵列中读取加密ROM数据元;使用加密ROM数据元获得至少一个摘要值;以及基于该至少一个摘要值和预期摘要值来门控对ROM阵列的访问(例如,当且仅当在至少一个摘要值和预期摘要值之间获得匹配时,准许对ROM阵列的访问,否则阻止或拒绝)。
示例方面25:示例方面24的装置,其中:ROM控制器包括地址调整电路,其被配置为调整ROM地址以产生调整后的ROM地址;以及ROM控制器,其被配置为调整ROM地址以获得调整后的ROM地址,并且使用调整后的ROM地址,使用地址调整电路读取存储在多个ROM地址处的加密ROM数据。
示例方面26:示例方面24或示例方面25的装置,其中:ROM控制器被配置为基于使至少一种哈希算法应用于加密ROM数据元来获得至少一个摘要值。
示例方面27:示例方面26的装置,其中:ROM阵列和ROM控制器包括第一外围设备;第二外围设备被配置为实现一个或多个哈希算法;并且ROM控制器被配置为通过与第二外围设备通信来获得至少一个摘要值。
示例方面28:示例方面24至27中任一项的装置,其中:ROM控制器被配置为从ROM阵列中读取预期摘要值。
示例方面29:示例方面28的装置,其中,预期摘要值以未加密形式存储在ROM阵列中。
示例方面30:示例方面28的装置,其中,预期摘要值被存储在ROM阵列中的对应于可确定的ROM地址的预定位置处。
示例方面31:示例方面24至30中任一项的装置,其中:响应于至少一个摘要值与预期摘要值匹配,ROM控制器被配置为准许对ROM阵列的访问,以许可使用加密ROM数据来执行启动过程。
示例方面32:示例方面24至31中任一项的装置,其中:响应于至少一个摘要值未能匹配预期摘要值,ROM控制器被配置为:阻止对ROM阵列的访问,以防止使用加密ROM数据执行启动过程;并发送警告指示。
示例方面33:示例方面24至32中任一项的装置,其中:加密ROM数据的每个相应的加密ROM数据元在整个ROM阵列中不同于加密ROM数据的每个其他相应的加密ROM数据元。
示例方面34:示例方面33的装置,其中,选择与加密ROM数据的产生相关的密码密钥以确保每个加密ROM数据元在整个ROM阵列中不同于加密ROM数据的每个其他相应的加密ROM数据元。例如,可以在迭代过程中使用一个或多个密码密钥,执行该迭代过程以减少相同的ROM数据的数目(例如,到零,或至少低于阈值)。
示例方面35:示例方面33的装置,其中,选择与加密ROM数据的产生相关的密码算法以确保每个相应的加密ROM数据元在整个ROM阵列中不同于加密ROM数据的每个其他相应的加密ROM数据元。例如,可以在迭代过程中使用一个或多个密码算法,执行该迭代过程以减少相同的ROM数据的数目(例如,到零,或至少低于阈值)。
示例方面36:一种用于安全只读存储器ROM的方法,该方法包括:基于对应于加密ROM数据元的ROM地址,从ROM阵列中读取加密ROM数据元,ROM阵列在多个ROM地址处存储加密ROM数据;使用加密ROM数据元获得至少一个摘要值;以及基于该至少一个摘要值和预期摘要值来门控对ROM阵列的访问。
示例方面37:示例方面36的方法,其中,读取包括:调整ROM地址以产生调整后的ROM地址;并且使用调整后的ROM地址,从ROM阵列中读取加密ROM数据元。
示例方面38:示例方面36或示例方面37的方法,其中,该门控包括:响应于该至少一个摘要值未能匹配预期摘要值而阻止对ROM阵列的访问。
示例方面39:一种集成电路,其包括具有只读存储器ROM的安全电路,该安全电路包括:ROM阵列,其包括多个加密ROM行,多个加密ROM行中的每个加密ROM行区别于多个加密ROM行中的每个其他加密ROM行;以及ROM控制器,其耦合到ROM阵列并被配置为响应于基于多个加密ROM行产生的至少一个摘要值来控制对ROM阵列的访问。
示例方面40:示例方面39的集成电路,还包括:摘要计算电路,其被配置为基于多个加密ROM行来计算至少一个摘要值。
示例方面41:示例方面40的集成电路,其中,摘要计算电路是包括ROM阵列和ROM控制器的ROM块的一部分。
示例方面42:示例方面39至41中任一项的集成电路,其中,选择密码密钥以确保多个加密ROM行是不可复制的。例如,至少一个密码密钥(无论是预定义的还是以任何方式获得的)可以被用在迭代过程中,执行该迭代过程以减少复制的加密ROM行的数目(例如,到零,或至少低于阈值)。
示例方面43:示例方面39至42中任一项的集成电路,其中,选择密码算法以确保多个加密ROM行是不可复制的。例如,至少一个密码算法(无论是预定义的还是以任何方式获得的)可以被用在迭代过程中,执行该迭代过程以减少复制的加密ROM行的数目(例如,到零,或至少低于阈值)。
示例方面44:一种对只读存储器ROM进行弹性完整性检查的方法,该方法包括:将加密算法和加密密钥应用到ROM的多个行以产生第一组多个加密ROM行;确定复制的多个加密ROM行中的加密ROM行的数量;以及基于数量,改变加密算法或加密密钥中的至少一个,并且将至少一个改变后的加密算法或加密密钥应用到ROM的多个行以产生第二组多个加密ROM行。
示例方面45:示例方面44的方法,进一步包括:重复该改变、应用至少一个改变后的加密算法或加密密钥、以及确定直到数量为零。
示例方面46:示例方面24至35中任一项的装置,其中,ROM控制器被配置成向ROM外部的组件提供至少一个摘要值。
用于ROM安全的示例电子设备
图14图示了能够实现根据一个或多个所描述的方面的ROM安全的示例电子设备1400的各种组件。电子设备1400可以被实现为固定设备、移动设备、独立设备或嵌入式设备中的任一个或其组合;任何形式的消费者、计算机、便携式、用户、服务器、通信、电话、导航、游戏、音频、相机、消息传送、媒体播放和/或其他类型的电子设备1400,诸如在图1中被描绘为装置102的智能手机。所图示组件中的一个或多个可以被实现为分立组件或电子设备1400的至少一个集成电路上的集成组件。
电子设备1400能够包括一个或多个通信收发器1402,其使得设备数据1404能够进行有线和/或无线通信,诸如接收的数据、发送的数据或上面标识的其他信息。示例通信收发器1402包括近场通信(NFC)收发器、符合各种IEEE 802.15(蓝牙TM)标准的无线个域网(PAN)(WPAN)无线电、符合任何各种IEEE 802.11(Wi-FiTM)标准的无线局域网(LAN)(WLAN)无线电、用于蜂窝电话的无线广域网(WAN)(WWAN)无线电(例如,符合3GPP的无线电)、符合各种IEEE 802.16(WiMAXTM)标准的无线城域网(MAN)(WMAN)无线电、符合红外数据协会(IrDA)协议的红外(IR)收发器以及有线局域网(LAN)(WLAN)以太网收发器。
电子设备1400还可以包括一个或多个数据输入端口1406,经由其能够接收任何类型的数据、媒体内容和/或其他输入,诸如用户可选择的输入、消息、应用、音乐、电视内容、录制的视频内容以及从包括如麦克风的传感器或相机的任何内容和/或数据源接收的任何其他类型的音频、视频和/或图像数据。数据输入端口1406可以包括USB端口、同轴电缆端口、用于光纤互连件或布线的光纤端口、以及用于闪存、DVD、CD等的其他串行或并行连接器(包括内部连接器)。这些数据输入端口1406可以被用于将电子设备耦合到组件、外围设备或附件,诸如键盘、麦克风、相机或其他传感器。
该示例的电子设备1400包括至少一个处理器1408(例如,应用处理器、微处理器、数字信号处理器(DSP)、控制器等中的任一种或多种),其能够包括组合的处理器和存储器系统(例如,作为SoC的一部分实现),其处理(例如,执行)计算机可执行指令以控制设备的操作。处理器1408可以被实现为应用处理器、嵌入式控制器、微控制器、安全处理器、人工智能(AI)加速器等。通常,处理器或处理系统可以至少部分地以硬件实现,硬件能够包括集成电路或片上系统的组件、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及以硅和/或其他材料的其他实施方式。
替代地或附加地,电子设备1400能够利用电子电路中的任一个或其组合来实现,其可以包括与处理和控制电路结合实现的软件、硬件、固件或固定逻辑电路,这些电路通常在1410处指示(作为电子电路1410)。该电子电路1410能够诸如通过存储在计算机可读介质上的处理/计算机可执行指令、通过逻辑电路和/或硬件(诸如FPGA)等来实现可执行或基于硬件的模块(图14中未示出)。
尽管未示出,电子设备1400能够包括系统总线、互连件、交叉开关、数据传输系统、或耦合设备内的各种组件的其他切换结构。系统总线或互连件能够包括不同总线结构的任一种或其组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用多种总线架构中的任一种的处理器或局部总线。
电子设备1400还包括实现数据存储的一个或多个存储器设备1412,其示例包括随机存取存储器(RAM)、非易失性存储器(例如,只读存储器(ROM)、闪存、EPROM、和EEPROM)和磁盘存储设备。因此,(一个或多个)存储器设备1412能够分布在系统的不同逻辑存储级以及不同的物理组件处。(一个或多个)存储器设备1412提供数据存储机制来存储设备数据1404、其他类型的代码和/或数据、以及各种设备应用程序1420(例如,软件应用程序或程序)。例如,操作系统1414能够被维护为存储器设备1412内的软件指令并且由处理器1408执行。
在一些实施方式中,电子设备1400还包括音频和/或视频处理系统1416,其处理音频数据和/或将音频和视频数据传递到音频系统1418和/或显示系统1422(例如,智能手机或相机的视频缓冲器或屏幕)。音频系统1418和/或显示系统1422可以包括处理、显示和/或以其他方式呈现音频、视频、显示和/或图像数据的任何设备。显示数据和音频信号能够经由RF(射频)链路、S-视频链路、HDMI(高清多媒体接口)、复合视频链路、分量视频链路、DVI(数字视频接口)、模拟音频连接、视频总线或其他类似的通信链路,诸如媒体数据端口1424,传送到音频组件和/或显示组件。在一些实施方式中,音频系统1418和/或显示系统1422是电子设备1400的外部或分开的组件。替代地,显示系统1422例如能够是示例电子设备1400的集成组件,诸如集成触摸接口的一部分。
图14的电子设备1400是图1的装置102的示例实施方式、能够实现图4的分析344的设备的示例实施方式、以及能够实现图9至13的方法的设备的示例实施方式。因此,电子设备1400能够包括安全电路106,该安全电路106能够是分开的IC芯片或者被包括作为另一IC芯片或设备的一部分,如处理器1408、电子电路1410或存储器设备1412。因此,所图示的组件中的一个或多个可以被集成在同一IC芯片上,如SoC,或者至少集成在单个PCB上。
如图所示,电子设备1400可以附加地或替代地包括兼容性分析模块340。例如,存储器设备1412可以存储兼容性分析模块340,并且处理器1408可以执行兼容性分析模块340。因此,存储器设备1412还可以存储外围设备设计代码342、接口规范332等等。电子设备1400还可以或者替代地实现图10的迭代过程。此外,ROM 118/206能够包括图4至6的任何组件——例如,作为安全电路106的一部分。此外,ROM 118/206能够在上述电子设备1400的任何组件中实现,作为安全电路106的一部分或与安全电路106分开。因此,本文中所描述的ROM安全的原理能够通过图14的电子设备1400来实现,或者与图14的电子设备1400结合来实现。
除非上下文另有规定,本文中使用的词语“或”可以被认为是使用“包含性的或”,或者许可包含或应用由词语“或”链接的一个或多个项的术语(例如,短语“A或B”可以被解释为仅许可“A”、仅许可“B”或同时许可“A”和“B”)。此外,如本文中所使用的,引用项列表的“至少一个”的短语是指那些项的任意组合,包括单个成员。例如,“a、b或c中的至少一个”能够涵盖a、b、c、a-b、a-c、b-c和a-b-c,以及相同元素的多个的任意组合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c和c-c-c,或a、b和c的任何其他顺序)。此外,附图中表示的项目和本文中讨论的术语可以指示一个或多个项目或术语,并且因此可以互换地参考本书面描述中的项目和术语的单一或复数形式。尽管已经用特定于某些特征和/或方法的语言描述了ROM安全的实施方式,所附权利要求的主题不一定限于所描述的特定特征或方法。相反,具体特征和方法被公开作为ROM安全的示例实施方式。

Claims (16)

1.一种用于安全只读存储器ROM的装置,所述装置包括:
ROM阵列,所述ROM阵列包括存储在多个ROM地址处的加密ROM数据;以及
ROM控制器,所述ROM控制器耦合到所述ROM阵列,所述ROM控制器包括:
密码电路,所述密码电路被配置为基于所述多个ROM地址对所述加密ROM数据执行解密操作;以及
ROM访问接口,所述ROM访问接口耦合到所述密码电路和所述ROM阵列,所述ROM访问接口被配置为:
基于对应于加密ROM数据元的ROM地址,从所述ROM阵列中读取所述加密ROM数据元;
使用所述密码电路解密所述加密ROM数据元以产生解密ROM数据元;以及
将所述解密ROM数据元转发到互连件。
2.根据权利要求1所述的装置,其中,所述ROM访问接口被配置为使用对应于所述加密ROM数据元的所述ROM地址来解密所述加密ROM数据元以产生所述解密ROM数据元。
3.根据权利要求1或权利要求2所述的装置,其中,所述密码电路被配置为基于所述多个ROM地址中的相应的ROM地址对所述加密ROM数据的相应的ROM数据元执行所述解密操作,所述相应的ROM地址被配置为识别所述ROM阵列中的所述相应的ROM数据元。
4.根据前述权利要求中任一项所述的装置,其中,所述ROM访问接口包括有限状态机FSM,所述FSM被配置为提供对所述加密ROM数据的访问作为用于启动过程的解密ROM数据。
5.根据前述权利要求中任一项所述的装置,其中:
所述ROM控制器包括地址调整电路,所述地址调整电路被配置为调整ROM地址以产生调整后的ROM地址;以及
所述ROM访问接口被配置为使用所述地址调整电路来调整所述ROM地址以读取存储在所述多个ROM地址处的所述加密ROM数据。
6.根据权利要求5所述的装置,其中,所述地址调整电路被配置为对所述ROM地址中的每个ROM地址的两个或更多个位进行置换或替换中的至少一个以产生所述调整后的ROM地址。
7.根据前述权利要求中任一项所述的装置,其中,所述密码电路包括:
密钥流电路,所述密钥流电路被配置为基于ROM地址产生密钥;以及
数据组合电路,所述数据组合电路耦合到所述密钥流电路,所述数据组合电路被配置为基于所述加密ROM数据元和所述密钥中的至少一个密钥来产生所述解密ROM数据元。
8.根据权利要求7所述的装置,其中:
所述密码电路包括操纵电路,所述操纵电路被配置为扩散所述加密ROM数据元的两个或更多个位以产生操纵的加密ROM数据元;以及
所述数据组合电路被配置为使用逻辑操作来组合所述至少一个密钥的位和所述操纵的加密ROM数据元的位以产生所述解密ROM数据元。
9.根据前述权利要求中任一项所述的装置,其中:
所述加密ROM数据元包括对应于ROM指令的位和对应于所述ROM指令的检查代码的位;以及
所述解密ROM数据元包括对应于所述ROM指令的位和对应于所述ROM指令的检查代码的位。
10.根据权利要求9所述的装置,其中,所述ROM控制器包括:
ROM检查器电路,所述ROM检查器电路耦合到所述密码电路的输出,所述ROM检查器电路被配置为:
基于所述解密ROM数据元的所述ROM指令计算另一检查代码;
执行包括所述解密ROM数据元的所述检查代码与计算出的检查代码的比较;以及
基于所述比较生成错误信号。
11.根据权利要求9所述的装置,其中,由于基于所述多个ROM地址的加密方案,存储在所述ROM阵列的所述多个ROM地址处的所述加密ROM数据的每个加密ROM数据元区别于存储在所述ROM阵列的所述多个ROM地址处的所述加密ROM数据的每个其他加密ROM数据元。
12.根据前述权利要求中任一项所述的装置,其中,所述装置包括移动设备。
13.一种用于安全只读存储器ROM的方法,所述方法包括:
获得ROM读取请求,所述ROM读取请求包括与ROM阵列相关的ROM地址,所述ROM阵列包括存储在多个ROM地址处的加密ROM数据;
使用所述ROM地址从所述ROM阵列读取加密ROM数据元;
使用所述ROM地址解密所述加密ROM数据元以产生解密ROM数据元;以及
将所述解密ROM数据元转发到互连件。
14.根据权利要求13所述的方法,其中,所述解密包括:
基于所述ROM地址生成至少一个密钥;以及
将所述至少一个密钥应用于所述加密ROM数据元以产生所述解密ROM数据元。
15.根据权利要求14所述的方法,其中,所述应用包括:
执行包括所述至少一个密钥和所述加密ROM数据元的逻辑操作以产生所述解密ROM数据元。
16.根据权利要求15所述的方法,其中,所述解密包括:
在执行所述逻辑操作之前,操纵所述加密ROM数据元的位以产生操纵的ROM数据元,
其中,所述执行包括使用所述至少一个密钥和所述操纵的ROM数据元来执行所述逻辑操作以产生所述解密ROM数据元。
CN202280021130.6A 2021-04-02 2022-04-01 只读存储器(rom)安全 Pending CN117099105A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202163170430P 2021-04-02 2021-04-02
US63/170,430 2021-04-02
PCT/US2022/071514 WO2022213128A1 (en) 2021-04-02 2022-04-01 Read-only memory (rom) security

Publications (1)

Publication Number Publication Date
CN117099105A true CN117099105A (zh) 2023-11-21

Family

ID=81346536

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280021130.6A Pending CN117099105A (zh) 2021-04-02 2022-04-01 只读存储器(rom)安全

Country Status (7)

Country Link
US (1) US20240184932A1 (zh)
EP (1) EP4281893A1 (zh)
JP (1) JP2024515450A (zh)
KR (1) KR20230146594A (zh)
CN (1) CN117099105A (zh)
TW (1) TW202240406A (zh)
WO (1) WO2022213128A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0114522A3 (en) * 1982-12-27 1986-12-30 Synertek Inc. Rom protection device
US9230112B1 (en) * 2013-02-23 2016-01-05 Xilinx, Inc. Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
FR3097365B1 (fr) * 2019-06-11 2021-07-02 St Microelectronics Rousset Circuit électronique

Also Published As

Publication number Publication date
TW202240406A (zh) 2022-10-16
JP2024515450A (ja) 2024-04-10
US20240184932A1 (en) 2024-06-06
EP4281893A1 (en) 2023-11-29
WO2022213128A1 (en) 2022-10-06
KR20230146594A (ko) 2023-10-19

Similar Documents

Publication Publication Date Title
US9208355B1 (en) Apparatus, system and method for providing cryptographic key information with physically unclonable function circuitry
US20220292226A1 (en) Peripheral Device Comportability with Security Circuitry
Mohammad et al. Required policies and properties of the security engine of an SoC
US20240184932A1 (en) Read-Only Memory (ROM) Security
CN117063178A (zh) 只读存储器(rom)安全
TWI821971B (zh) 安全加密協同處理器
TWI807766B (zh) 安全之全晶片通信
US20230177154A1 (en) Sparse Encodings for Control Signals
US20220391540A1 (en) Register File Protection
TWI845059B (zh) 執行安全密碼操作之積體電路及方法
Venugopalan Enhancing trust in reconfigurable hardware systems
IZZO Global protection for transient attacks
KR20240108446A (ko) 희소 인코딩된 신호를 위한 보안 멀티 레일 제어
WO2023115022A2 (en) Efficient and secure data handling using domain-oriented masking
KR20240112307A (ko) 도메인 지향 마스킹을 사용하는 효율적이고 안전한 데이터 핸들링
CN118355629A (zh) 使用面向域的掩蔽的高效且安全的数据处置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination