CN113728320A - 用于产品设备的接口控制器 - Google Patents
用于产品设备的接口控制器 Download PDFInfo
- Publication number
- CN113728320A CN113728320A CN201980095767.8A CN201980095767A CN113728320A CN 113728320 A CN113728320 A CN 113728320A CN 201980095767 A CN201980095767 A CN 201980095767A CN 113728320 A CN113728320 A CN 113728320A
- Authority
- CN
- China
- Prior art keywords
- control code
- controller
- version
- power supply
- verification
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/85—Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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/79—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/81—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer by operating on the power supply, e.g. enabling or disabling power-on, sleep or resume operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Virology (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
- Power Sources (AREA)
Abstract
提供了一种用于使用接口控制器来验证和认证用于包括在计算机系统内的产品设备(例如,电源)的控制器代码的方法、系统和设备。在一个示例中,产品设备控制器包括用于可以使用接口控制器验证(和/或更新)的控制软件(例如,用于控制产品设备的运行的控制代码)的动态存储器。接口控制器可以在启动时(或运行期)执行该更新/验证以确保对包括产品设备控制代码的计算机设备方面的安全控制。如果检测到安全风险,则可以通过各种方式减轻安全风险,包括禁用产品设备。可以使用公开的技术来验证和保护由第三方(例如,产品设备的供应商)提供的控制代码。
Description
背景技术
计算机系统由多个部件构建以创建整体处理系统。部件有时由第三方提供,以供计算机系统制造商使用。一些部件可以被认为是“产品设备”,因为有多个第三方可能会竞争,以成本高效地提供符合某些规范的部件。计算机系统的不同型号可以由具有基本相似操作特性的略微不同的产品设备构建。
用于计算机系统的产品设备的一个示例是电源。只要电源符合计算机系统制造商可接受的某些操作规范,它就可以用作构建整个处理系统的“产品”。产品设备的其他示例是磁盘驱动器、存储器模块、网络控制器等。该列表仅仅是代表性的,既非排他性的也非穷尽的。在一些情况下,产品设备可以包括控制软件,该控制软件规定产品设备在运行期(run-time)将如何操作。该控制软件可以简称为“控制代码”并且可以具有随时间变化的不同版本(例如,以解决缺陷或升级)。
计算机系统的安全性仍然是许多用户关心的问题。计算机系统的不同类型用户(例如,基于他们的行业或应用)的关注度也可能增加。具体地,与个人使用的计算机系统相比,提供金融交易的计算机系统将很可能具有更高级别的安全控制。类似地,国防部的计算机可能具有比金融系统的计算机甚至更高的担忧。在任何情况下,无论计算机系统将如何使用,计算机系统的安全性仍然会有不同程度的担忧。为了保护计算机系统,可能期望验证所有操作代码(包括上述控制代码)以防止意外行为者(例如,病毒、恶意攻击者、意外更改等)的潜在危害。
附图说明
当结合附图阅读时,从以下详细描述中可以更好地理解本公开。需要强调的是,根据行业中的标准实践,各种特征没有按比例绘制。事实上,功能属性的尺寸或位置可以基于设计、安全性、性能或计算机系统领域中已知的其他因素来重新定位或组合。进一步地,对于一些功能,可以在内部和相对于彼此改变处理顺序。即,一些功能可能不需要串行处理,因此可以以不同于所示的顺序执行或者可能彼此并行执行。现在将参照附图对各个示例进行详细描述,在附图中:
图1图示了根据一个或多个公开示例的包括一组非产品部件和不同产品类型的部件的示例的计算机系统的概览;
图2A图示了根据一个或多个公开示例的表示包括RAM控制器的电源、接口控制器和计算机系统之间的关系的框图;
图2B图示了根据一个或多个公开示例的表示接口控制器的框图,该接口控制器可以被包括以至少部分地隔离和验证整个计算机系统的背景内的“内部”产品部件;
图3A图示了根据一个或多个公开示例的作为图2的配置的替代配置的表示接口控制器和“外部”产品部件(或外部附接设备)的框图;
图3B图示了根据一个或多个公开示例的作为图3A的配置的替代配置的表示接口控制器和用于“外部”产品部件的内部控制器的框图;
图3C图示了根据一个或多个公开示例的作为图3A至图3B的配置的替代配置的表示被包括作为用于“外部”产品部件的内部控制器的接口控制器的框图;
图4图示了根据一个或多个公开示例的可以结合公开的接口控制器执行,以验证、认证、隔离、更新和保护与产品设备相关联的控制代码的示例方法;
图5图示了根据一个或多个公开示例的用于实施图4的示例方法的示例处理器和计算机可读介质;以及
图6图示了可以用来实施本公开的功能、模块、处理平台、执行平台、通信设备以及其他方法和过程的计算设备的框图表示。
具体实施方式
现在将公开以下所要求保护的主题的说明性示例。为清晰起见,并非针对本说明书的每个示例实施方式描述了实际实施方式的所有特征。将理解的是,在任何这样的实际示例的开发中,可以做出许多特定于实施方式的决策来实现开发者的特定目标,如符合系统相关和商业相关的约束,这些约束将从一个实施方式到另一个实施方式而变化。此外,将理解的是,这种开发工作虽然复杂且耗时,但对于受益于本公开的本领域普通技术人员而言将是常规任务。
提供了一种用于使用接口控制器来验证和认证用于包括在计算机系统内的产品设备(例如,电源)的控制器代码的方法、系统和设备。在一个示例中,产品设备控制器包括用于可以使用可信任接口控制器验证(和/或更新)的控制软件(例如,用于控制产品设备的操作的控制代码)的动态存储器。该接口控制器可以在启动时(或运行期)执行该更新/验证以确保对包括产品设备控制代码的计算机设备方面的安全控制。如果检测到安全风险,则可以通过各种方式减轻该安全风险,包括禁用该产品设备。可以使用公开的技术来验证由第三方(例如,产品设备的供应商)提供的控制代码。
如本文所使用的,“产品设备”是指作为计算机系统的一部分提供的作为可以在该部件的不同供应商之间互换的“附加”部件的任何部件或设备。尽管所公开技术的实施方式可以用于包括根据控制代码操作的控制器在内的任何类型的产品设备,但是为了便于讨论,本公开将利用电源作为示例产品设备。可以利用所公开的技术的产品设备的其他非限制性示例可以包括存储设备(例如,硬盘驱动器(HDD)、固态驱动器(SSD)等)、存储器模块、网络接口卡、扩展卡、风扇、液体冷却剂泵等。不同类型的产品设备可能会基于其在计算机系统中的预期用途而利用不同“数量”的控制代码。然而,无论控制代码的复杂性如何,所公开的用于验证、上传和整体安全性的技术都是适用的。提供如本文所公开的接口控制器以验证和至少部分地隔离产品设备代表着对系统管理员可用的整体安全和变更控制(例如,配置变更管理(“CM”))过程的改进。
电源通常包括控制电源的各种部件的一个或多个控制器,并且这些控制器根据由其执行的控制代码进行操作。从历史上看,电源的控制器通常是包括或利用非易失性存储器来存储其电源控制代码的微控制器。相比之下,在本文公开的一些实施方式中,控制器的电源控制代码可以在操作期间被加载到与控制器相关联的易失性存储器区域(例如,随机存取存储器“RAM”)。例如,根据所公开的技术,电源可以包括例如可用于控制电源的功率因数校正(“PFC”)和DC-DC功能的控制代码。示例电源可以包括将其功能代码存储在上面提到的易失性RAM中的控制器,如控制初级转换级的初级侧控制器(其可以例如执行功率因数校正(“PFC”)和AC-DC转换)和控制次级转换级的次级侧控制器(其可以执行电流隔离和DC-DC转换)。
控制代码可能已经由第三方(例如,电源的供应商)开发并且表示控制代码的已知版本。可替代地,控制代码可以由计算机系统制造商开发。在第三示例中,控制代码可以是第三方代码和内部开发代码的合成物。在任何情况下,都可以识别控制代码的已知版本并生成唯一标识(例如,校验和(checksum)、散列密钥或某种类型的数字签名)。所生成的唯一标识可以用于稍后的验证以确保控制代码的已知版本未被更改。
另外,根据所公开的技术,控制代码可能不被静态地存储在电源的控制器可以访问它的地方(例如,电源内部,控制器可访问的非易失性存储器上)。而是,在需要时,控制代码可以由其自己的控制代码不是由第三方开发的另一个可信任控制器(例如,所公开的接口控制器的处理器)加载到控制器的易失性RAM中。即,可信任控制器的代码可以被认为是“可信任代码”。该附加可信任控制器通常可以称为“接口控制器”并且可以包括能够生成和验证上面提到的数字签名(例如,密码密钥和散列)的处理器。该接口控制器可以实施为电源的内部部件,或在电源的外部(例如,在系统板上)实施。不同类型的实施方式可能取决于设计准则,如系统板上可用接口插槽的数量、物理空间考虑、或其他技术或制造规范。在任何情况下,所公开的接口控制器可以用于在控制代码变得对于计算机系统的产品设备可运行之前执行关于该控制代码的初始化和认证功能。
所公开的技术解决的一个问题涉及并入更大系统中的产品(例如,电源)中的第三方代码。该第三方代码可能是可疑的或可能会被更改,并呈现潜在的安全问题。例如,该代码中可能会嵌入恶意代码,随后可能会利用这些恶意代码对计算机系统实施某种攻击。对于电源,(很多中的)一种类型的攻击可以是拒绝服务(“DOS”)攻击,其中,外部行为者可以使电源关闭,因此导致计算机系统不可运行。如果攻击者能够关闭数据中心网络中的一个或多个关键系统,则数据中心网络可能会受到损害。此外,控制代码的意外更改可能表示为对数据中心网络的风险。
通常,数据中心网络的公司和其他用户实施严格的变更控制过程(通常称为变更管理),使得对计算机系统(或其部件)的任何变更仅基于已知的时间表进行,并且仅从代码的已知版本到代码的另一个已知版本进行。即,可以严格控制和审核数据中心网络内的计算机系统的升级和维护。与应用于不太关键的基础设施的那些过程相比,对于具有更高关键性级别的数据中心网络的CM过程可能会增加。
总之,所公开的技术允许针对电源(或其他产品设备)改变控制代码的存储方式(例如,易失性存储器而不是非易失性存储器)和访问方式。进一步地,可以经由接口控制器引入间接级别,该接口控制器可以用于认证运行期控制代码并将运行期控制代码加载到易失性存储器中以供在运行期用于控制电源。在运行期认证控制代码的有效性可以利用能够生成和验证密码密钥和散列以及共享私钥的硬件。所公开的利用接口控制器的技术可以降低复杂性和费用以提供成本敏感的解决方案。
在一些实施方式中,所公开的接口控制器被设计为在引导(boot)时安全地验证其自己的内容。接口控制器可以包括非易失性存储器,如NVRAM,其存储与电源中的每个RAM控制器相关联的控制代码的散列值(散列值表示一种类型的数字签名)。因此,在上电时,接口控制器可以读取每个RAM控制器的控制代码并计算密码散列(数字签名)。取决于实施规范,可以使用不同的安全密码散列算法或数字签名技术(例如,安全散列算法(“SHA”),如SHA-256)。如本文所使用的,“RAM控制器”是指作为其初始化过程的一部分将上面提到的控制代码动态加载到易失性存储器区域中的控制器。例如,RAM控制器可以与从非易失性存储器获得其操作代码的控制器形成对比。如本公开中所解释的,可以通过提供对RAM控制器的控制代码的验证来保护RAM控制器的安全,例如,通过对照数字签名来认证控制代码的版本,作为将控制代码的版本上传到RAM控制器(例如,在RAM控制器变为可运行之前)的一部分。
接口控制器的处理器然后可以将每个生成的散列与对应的先前存储的散列(例如,存储在接口控制器的NVRAM中)进行比较。如果所有计算的散列与存储的散列匹配,则接口控制器可以将对应的控制代码编程到电源的每个RAM控制器中。这种编程可以使用标准编程引脚和协议或通过可以实施专有协议的通信总线来完成。通常,这可以被认为是将控制代码“上传”到每个相应的RAM控制器。例如,通信总线可以通过RAM控制器经由硬件、状态机或通过使用有限数量的存储有加载程序的NVM来实施。其他技术也是可能的。所公开的用于验证和上传的技术可以与其他系统初始化功能并行执行,以使得计算机系统的净零(net-zero)引导时间增加。
在一些实施方式中,为了能够更新不同RAM控制器的控制代码,接口控制器可以可选地包括接受对签名映像(signed image)的更新的引导加载器。RAM控制器映像可以由第一方验证并可选地进行数字签名,或者签名可以与来自第三方的代码一起提供。在任一情况下,可信任数字签名可以与每个映像(例如,被存储为“签名映像”的控制器代码的版本)相关联。然后,接口控制器可以通过通信总线接收映像(例如,新的控制代码的映像)。一旦接收,接口控制器然后可以验证/注册每个映像和相关联的签名。一旦经过验证,接口控制器就可以替换每个对应RAM控制器的先前的控制代码映像。
现在参考图1,图示了包括一组非产品部件105(例如,计算机系统制造商专有的部件)和示例产品设备(例如,由第三方提供)的计算机系统100的概览。根据所公开的技术,可以使用接口控制器和安全管理的控制代码来实施这些产品设备中的一个或多个。在图1的示例中,产品设备包括表示电源110的产品设备(“CD”)1、表示存储介质控制器115的产品设备2、表示用于外部控制的设备(例如,机器人控制器、3D打印机或自动化设备)的控制器120的产品设备3、表示网络适配器125的产品设备4、以及表示计算机系统100内部或外部的一些其他设备130的产品设备N。
如图1所示,计算机系统100可以包括任何数量的产品部件(例如,电源110、存储介质控制器115等)和非产品部件105。所公开的技术针对产品部件进行了说明,但在一些情况下也可以适用于非产品部件的控制。例如,在高度安全的基础设施网络中,系统管理员可能希望相对于通常针对安全性较低的产品设备所讨论的CM的控制能力能够得以改进。在一些情况下,计算机系统100的制造商将在初始配置内包括一些产品设备。在其他情况下,产品设备可以在计算机系统100的最终用户接收之后被安装或附接到计算机系统。具体地,计算机系统100可以被初始配置为没有电源,并且电源可以作为配设该系统以供在公司网络中使用的一部分而被安装。在任何情况下,所公开的技术允许接口控制器(下文解释的)在将产品设备安装在计算机系统100中之后提供关于产品设备的控制代码的验证、更新和安全性。
现在参考图2A,示例框图图示了计算机系统200A。计算机系统200A包括示例电源部分202和系统部分201(由虚线分隔以指示逻辑隔离)。计算机系统200A进一步包括接口控制器215,该接口控制器可以用于促进所公开的用于控制用于RAM控制器1(205A)和RAM控制器2(205B)中的每一个的控制代码的版本的技术。在图2A中,图示了两个RAM控制器,然而,可以使用单个接口控制器215来实施所公开的技术以管理任意数量的RAM控制器。
如图2A所示,接口控制器215可以通过通信总线206A与RAM控制器1(205A)通信。接口控制器215还可以通过通信总线206B与RAM控制器2(205B)通信。通信总线206A和通信总线206B中的每一个都可以用于在接口控制器215与相应的RAM控制器之间交换信息。所交换的信息可以包括控制代码的上传,以用于RAM控制器以及用于验证RAM控制器上已经存在的代码(例如,验证数字签名)。每个通信总线206A、206B可以以各种方式实施,具体取决于经由通信总线预期的数据传输量。在一些实施方式中,通信总线可以经由电源的引出线连接来实施。可替代地或另外地,可以在接口控制器215与每个相应的RAM控制器(205A和205B)之间提供传统的数据总线(例如,使用带状电缆的多线连接)。根据所公开的实施方式,接口控制器215可以逻辑地(并且可能物理地)并入计算机系统200A中,以便为计算机系统200A提供间接和附加的安全性级别。
图2B图示了关于接口控制器215相对于第二示例计算机系统200B的交互的进一步细节。计算机系统200B可以类似于上面讨论的计算机系统200A和计算机系统100中的每一个。图2B扩展了图2A的示例,包括附加细节和数据流。例如,图2B包括控制代码验证和更新区域(“CCVUA”)250。CCVUA 250可以在本地存储设备上实施,如在接口控制器内部(例如,在附接到接口控制器的非易失性存储设备中)或在计算机系统200B内的其他存储器上。可替代地,计算机系统200B可以访问包括CCVUA 250的远程存储区域(例如,可经由计算机网络访问)。CCVUA 250可以包括控制代码的版本和相关联的数字签名以促进所公开的用于管理用于基于RAM的控制器的控制代码的技术。CCVUA 250可以经由数据流251访问。数据流251被图示为从CCVUA 250到接口控制器处理器(“ICP”)220的只读单向数据流,但在一些情况下,可以被实施为双向(例如,读/写)数据流。
计算机系统200B包括可以类似于以上讨论的图1中的非产品部件105的非产品部件240。计算机系统200B还包括具有可更新控制代码的至少一个产品设备210。在该示例中,产品设备210被表示为电源。接口控制器215包括接口控制器处理器(“ICP”)220。ICP 220可以是嵌入(或连接到)用于构建接口控制器215的印刷电路板(“PCB”)的微控制器。ICP 220可以具有足够的处理能力来执行如本文讨论的所公开的加密、验证和数据传输能力。接口控制器215进一步包括接口控制器输入/输出(“ICIO”)230。ICIO 230包括到ICP 220的通信路径225B、到非产品部件240的通信路径225A、以及到产品部件210的通信路径225C。以这种方式,通信路径225A-C的共同集合允许ICP220知道数据被共享或提供给非产品部件240和产品设备210中的任一个或两个。
还图示了用于计算机系统200B的替代通信路径235。根据一些公开的实施方式,可以在与产品设备210相关联的RAM控制器的验证和初始化之后使用通信路径235。通信路径235被图示为与ICIO 230部分重叠以指示产品设备(例如,产品设备210)与非产品部件240之间的一些数据流(在初始化和验证之后)可以被实施为ICIO 230的“透传(pass-through)”或可以简单地绕过ICIO 230。进一步地,在一些情况下,产品设备(在初始化和验证之后)可以被实施为允许在不涉及接口控制器215的情况下进行通信。以这种方式,接口控制器215和对应的ICP 220可以在计算机系统200B启动时与产品设备210交互,然后允许产品设备210的进一步可运行使用,而不必使数据通信流通过ICIO235(或接口控制器215)。例如,启动时的交互可以包括验证和将控制代码上传到RAM控制器(如以上所讨论的),然后允许产品设备210独立于接口控制器215进行运行期操作。
现在参考图3A,根据所公开的技术,包括非产品部件305的计算机系统300A被图示为另一示例实施方式。计算机系统300A被图示为具有作为相对于计算机系统300A的外部设备的产品设备310A。与图2B的示例计算机系统200B中一样,存在可以经由数据路径351与ICP 320通信的CCVUA 350。ICP 320可以经由数据路径335B与ICIO 330通信。因为产品设备310A被图示为外部产品设备,所以计算机系统300A的示例图示了数据流335A、335B和335C可以用于被包括在产品设备310A内的任何RAM控制器311的初始化、验证和上传。此外,数据流340A和340B可以用于运行期的操作(例如,在启动时的验证之后)并且不包括ICP 320的处理。
现在参考图3B,计算机系统300B被图示为计算机系统300A的变体,其中,RAM控制器312被包括在计算机系统300B内以与外部产品设备310B进行接口连接。在该示例中,RAM控制器312可以表示用于外部产品设备310B的专用控制器。如图所示,RAM控制器312可以以与上面关于RAM控制器311与计算机系统300A之间的交互讨论的类似的方式接收更新和验证,但是RAM控制器312进一步包括用于在计算机系统300B与外部产品设备310B之间进行通信的数据流313。
现在参考图3C,计算机系统300C被图示为计算机系统300A-B的变体,其中,RAM控制器360和接口控制器361都被包括在产品设备310C内。计算机系统300C与产品设备310C的接口控制器361之间的通信由数据流362图示。在该示例配置中,诸如产品设备310C等产品设备可以在计算机系统300C的指导下例如使用来自CCVUA 350的信息来“内部地”执行RAM控制器360的验证和更新。
已经提供并详细讨论了几个不同的实施方式示例(例如,计算机系统100、200B和300A-C)。在不脱离所公开的技术的情况下,其他配置也是可能的。通常,可以提供接口控制器来验证、上传和保护RAM控制器上的代码,该RAM控制器利用控制代码为诸如电源等产品设备提供可操作功能。控制代码可以由第三方提供,并且可以使用以可信任方式(例如,由诸如计算机系统制造商等第一方或诸如产品设备制造商等第三方)生成的密码散列和数字签名来控制。
在图4的示例中,根据所公开的示例,流程图被图示为示例方法400,该示例方法代表可以与接口控制器结合使用以验证和初始化用于电源的控制代码的自动化技术。如上所解释的,该技术还可以应用于除电源之外的产品设备。示例方法400开始于框405,其中,向电源施加电力。在框410处,备用转换器启动并向接口控制器施加电力。框415指示接口控制器读取存储的代码和与存储代码的验证相关联的其他信息。在该示例中,存储的代码是指上面提到的将控制电源的运行期操作的控制代码。框420指示接口控制器及其相关联的处理器(例如,微控制器和接口印刷电路板)计算所存储代码的散列。在该示例中,散列表示用于唯一标识所存储代码的版本和内容的数字签名。
决策425指示接口控制器的处理器可以确定所计算的散列是否匹配所存储代码的先前已知散列。例如,使用来自图3的控制代码验证和更新数据350。如果匹配成功(决策425的“是”分支),则流程继续到框430,其中,接口控制器将所存储的代码发送(例如,上传或初始化与电源相关联的RAM控制器)到(多个)RAM控制器。框435指示电源完全启动以根据其运行期规范向整个计算机系统提供电力。尽管在示例方法400中没有具体说明,但是可以对RAM控制器内的代码执行进一步的周期性运行期验证以确保代码在运行期未被更改。
返回到决策425,如果匹配不成功(决策425的“否”分支),则流程继续到框440,其中,接口控制器可以记录不成功的匹配并可选地向系统管理员发起警报(例如,经由企业管理系统,未示出)。在一些公开的实施方式中,注意到不成功的匹配可以遵循至少两个可选路径。例如,取决于计算机系统所需的安全级别,可以提供不同的选项来对潜在的错误情况作出反应。在该示例中,提供了两个选项。选项1在框445处示出,其中,接口控制器对电源的RAM控制器进行处理和编程,使得电源可以在框435处启动。在该示例中,选项1允许计算机系统的通知和继续操作。选项2在框450处示出,其中,接口控制器禁用电源。在计算机系统具有多个电源并且仅禁用该多个电源的子集的情况下,可以允许计算机系统运行。
在计算机系统禁用其所有电源的情况下(例如,不可运行),计算机系统将没有电力并且可能不会运行,直到系统管理员进行干预以覆写失败的匹配条件或提供信息以允许匹配成功。例如,可以提供对计算机系统的可选设置的更新以用于对验证进行更新并且可以应用更新数据350。在又一个示例中,为了提高安全性并防止电力中断,可以将经过验证的备份映像存储在单次可编程存储器中。代替禁用电源,接口控制器可以回退并将存储的备份映像编程到每个相应的RAM控制器中,以允许电源上电。在该示例中,接口控制器仍可以发起警报以指示系统发生安全事件。
参考图5,示出了示例计算设备500,其具有硬件处理器501和存储在机器可读介质502上的可访问机器可读指令,该指令可以用于实施根据一个或多个公开的示例实施方式公开的基于RAM的控制器代码初始化和验证。作为示例,图5图示了被配置为执行方法400的流程的计算设备500。然而,计算设备500也可以被配置为执行本公开中描述的其他方法、技术、功能或过程的流程。在图5的示例中,机器可读存储介质502包括使硬件处理器501执行上文参考图4讨论的框405至450的指令。
机器可读存储介质(如图5的502)可以包括易失性和非易失性两者、可移除和不可移除介质两者,并且可以是任何电子存储设备、磁性存储设备、光学存储设备或其他物理存储设备,该存储介质含有或存储可执行的指令、数据结构、程序模块或可供处理器访问的其他数据,例如,可擦除可编程只读存储器(“EPROM”)、随机存取存储器(“RAM”)、非易失性随机存取存储器(“NVRAM”)、光盘、固态驱动器(“SSD”)、闪速存储器等等。机器可读存储介质可以是非暂态存储介质,其中,术语“非暂态”并不涵盖暂时的传播信号。
图6图示了框图以表示可用于实施本公开的功能、模块、处理平台、执行平台、通信设备以及其他方法和过程或与其一起使用的计算设备600。例如,图6所示的计算设备600可以表示客户端设备或物理服务器设备,并且包括(多个)硬件或虚拟处理器,具体取决于计算设备的抽象级。在一些情况下(不抽象的情况下),如图6所示,计算设备600及其元件各自涉及物理硬件。可替代地,在一些情况下,可以使用仿真器或虚拟机作为抽象级来实施一个、多个或所有元件。在任何情况下,无论远离物理硬件有多少抽象级,处于其最低级的计算设备600都可以在物理硬件上实施。
同样如图6所示,计算设备600可以包括一个或多个输入设备630,如键盘、鼠标、触摸板或传感器读出器(例如,生物扫描仪),以及一个或多个输出设备615,如显示器、音频扬声器或打印机。一些设备也可以被配置为输入/输出设备(例如,网络接口或触摸屏显示器)。
计算设备600还可以包括通信接口625,如可以包括有线通信部件和/或无线通信部件的网络通信单元,其可以通信地耦接到处理器605。网络通信单元可以利用各种专有或标准化网络协议(如以太网、传输控制协议/互联网协议(“TCP/IP”),仅举许多协议中的几个)中的任何一种,以实现设备之间的通信。网络通信单元还可以包括一个或多个收发器,该收发器利用以太网、电力线通信(“PLC”)、WiFi、蜂窝和/或其他通信方法。
如图6所示,计算设备600包括处理元件,如包含一个或多个硬件处理器的处理器605,其中,每个硬件处理器可以具有单个或多个处理器核。在一个实施方式中,处理器605可以包括存储由处理器605的一个或多个其他部件使用的数据(例如,计算指令)的至少一个共享缓存。例如,共享缓存可以是存储在存储器中的本地缓存数据,用于由构成处理器605的处理元件的部件更快地存取。在一个或多个实施方式中,共享缓存可以包括一个或多个中间级别的缓存,如2级(L2)、3级(L3)、4级(L4)或其他级别的缓存、最后一级缓存(“LLC”)或其组合。处理器的示例包括,但不限于,中央处理单元(“CPU”)、微处理器。尽管在图6中未示出,但是构成处理器605的处理元件还可以包括一个或多个其他类型的硬件处理部件,如图形处理单元(“GPU”)、专用集成电路(“ASIC”)、现场可编程门阵列(“FPGA”)和/或数字信号处理器(“DSP”)。
图6图示了存储器610可以可操作地和通信地耦接到处理器605。存储器610可以是被配置为存储各种类型的数据的非暂态介质。例如,存储器610可以包括一个或多个存储设备620,该存储设备包括非易失性存储设备和/或易失性存储器。诸如随机存取存储器(“RAM”)等易失性存储器可以是任何合适的非永久性存储设备。非易失性存储设备620可以包括一个或多个磁盘驱动器、光学驱动器、固态驱动器(“SSD”)、磁带驱动器、闪速存储器、只读存储器(“ROM”)和/或被设计为在断电或关闭操作之后保持数据一段时间的任何其他类型的存储器。在某些情况下,如果分配的RAM不足以保存所有工作数据,则非易失性存储设备620可以用于存储溢出数据。非易失性存储设备620还可以被用于存储当选择程序用于执行时被加载到RAM中的这样的程序。
本领域普通技术人员知道,可以针对各种软件平台和/或操作系统以各种计算语言开发、编码和编译软件程序并且随后由处理器605加载和执行软件程序。在一个实施方式中,软件程序的编译过程可以将用编程语言编写的程序代码转换成另一种计算机语言,使得处理器605能够执行编程代码。例如,软件程序的编译过程可以生成可执行程序,该可执行程序为处理器605提供编码指令(例如,机器代码指令)以完成具体的、非通用的、特定的计算功能。
在编译过程之后,编码指令然后可以作为计算机可执行指令或过程步骤从存储设备620、从存储器610加载到处理器605和/或嵌入在处理器605内(例如,经由缓存或板载ROM)。处理器605可以被配置为执行存储的指令或过程步骤以便执行指令或过程步骤,从而将计算设备转换成非通用的、特定的、专门编程的机器或装置。在执行计算机可执行指令或过程步骤以指示计算设备600内的一个或多个部件期间,处理器605可以存取存储的数据,例如存储设备620存储的数据。可以为一组计算机可执行指令(例如,上面提到的控制代码)生成数字签名,以出于安全和验证目的唯一地标识代码的版本。
用户界面(例如,输出设备615和输入设备630)可以包括显示器、位置输入设备(如鼠标、触摸板、触摸屏等)、键盘或其他形式的用户输入和输出设备。用户界面部件可以通信地耦接到处理器605。当输出设备是或包括显示器时,显示器可以以各种方式实施,包括通过液晶显示器(“LCD”)或阴极射线管(“CRT”)或发光二极管(“LED”)显示器,如有机发光二极管(“OLED”)显示器。本领域普通技术人员知道,计算设备600可以包括本领域公知的其他部件,如传感器、电源和/或模数转换器,在图6中没有明确示出。
在本说明和权利要求中使用了某些术语来指代特定系统部件。如本领域技术人员将理解的,不同方可以用不同的名称来指代部件。本文档无意区分名称不同但功能相同的部件。在本公开和权利要求中,术语“包括(including)”和“包括(comprising)”以开放式的方式使用,并且因此应该被解释为意指“包括但不限于……”此外,术语“耦接”意在表示间接或直接有线或无线连接。因此,如果第一设备耦接至第二设备,则该连接可以通过直接连接或者通过经由其他设备和连接的间接连接实现。叙述“基于”意在表示“至少部分基于”。因此,如果X基于Y,那么X可能是Y和任何数量的其他因素的函数。
上述讨论意在说明本公开的原理和各种实施方式。一旦充分理解了上述公开,许多变化和修改对于本领域技术人员将变得明显。以下权利要求旨在被解释为包含所有这些变化和修改。
Claims (23)
1.一种用于计算机系统的电源,包括:
电源控制器,用于提供所述电源的运行控制;以及
随机存取存储器(“RAM”)区域,用于存储对于所述电源控制器的运行期控制代码;
其中,所述电源控制器能够访问所述RAM区域以获得所述运行期控制代码;
其中,一旦所述电源初始化,在向所述计算机系统提供运行电力之前,所述RAM区域从所述计算机系统的接口控制器接收所述运行期控制代码。
2.如权利要求1所述的电源,其中,所述电源控制器专门执行来自所述RAM区域的运行期控制代码。
3.如权利要求1所述的电源,其中,在将所述运行期控制代码提供给所述RAM区域之前,所述计算机系统的所述接口控制器使用来自控制代码验证和更新区域(“CCVUA”)的信息来验证所述运行期控制代码。
4.如权利要求3所述的电源,其中,由所述接口控制器执行的所述验证包括验证所述运行期控制代码的数字签名。
5.如权利要求4所述的电源,其中,当所述运行期控制代码未从所述接口控制器被上传到所述RAM区域时,所述电源控制器不运行,从而不向所述计算机系统提供运行电力。
6.如权利要求5所述的电源,其中,响应于验证失败,所述接口控制器不将所述运行期控制代码上传到所述RAM区域。
7.如权利要求5所述的电源,其中,响应于所述运行期控制代码未从所述接口控制器被上传到所述RAM区域,所述电源发起警报。
8.一种计算机设备,包括:
接口控制器,用于管理用于向所述计算机设备提供电力的电源的RAM控制器;
所述接口控制器包括:
处理设备;
通信接口,用于当所述电源被安装在所述计算机设备中时允许与所述电源进行通信;以及
存储指令的指令存储区域,所述指令在由所述处理设备执行时使所述处理设备执行以下操作:
识别用于所述RAM控制器的运行期控制代码的版本;
对所述运行期控制代码的所识别的版本执行验证;
响应于成功的验证,经由所述通信接口将所述运行期控制代码的所识别的版本上传到所述RAM控制器;以及
响应于失败的验证,发起有关所述失败的验证的警报。
9.如权利要求8所述的计算机设备,其中,一旦所述接口控制器识别所述电源,所述接口控制器执行所述运行期控制代码的识别、验证以及向所述RAM控制器的上传。
10.如权利要求8所述的计算机设备,其中,所识别版本的所述验证包括使用所述处理设备来执行以下操作:
计算与所识别的版本相关联的密码散列;
将所述密码散列与已知密码散列进行比较;以及
基于所计算的密码散列和所述已知密码散列的匹配来提供成功的验证的指示。
11.如权利要求10所述的计算机设备,其中,所述已知密码散列是从控制代码验证和更新区域(“CCVUA”)中获得的。
12.如权利要求8所述的计算机设备,其中,所识别的版本的所述验证包括使用所述处理设备来执行以下操作:
计算所识别的版本的密码散列;
将所计算的密码散列与已知密码散列进行比较;以及
基于所计算的密码散列和所述已知密码散列的失败的匹配来发起警报。
13.如权利要求12所述的计算机设备,其中,在发起所述警报之后,所述处理设备执行指令以执行以下操作:
识别对于所述RAM控制器的运行期控制代码的备份安全版本;以及
经由所述通信接口将所述运行期控制代码的所识别的备份安全版本上传到所述RAM控制器,以允许所述电源的运行。
14.一种计算机设备,包括:
接口控制器;以及
电源,所述电源包括由所述接口控制器管理的RAM控制器;
所述接口控制器包括:
处理设备;
到所述电源的所述RAM控制器的通信接口;以及
存储指令的指令存储区域,所述指令在由所述处理设备执行时使所述处理设备执行以下操作:
识别对于所述RAM控制器的运行期控制代码的版本;
对所述运行期控制代码的所识别的版本执行验证;
响应于成功的验证,经由所述通信接口将所述运行期控制代码的所识别的版本上传到所述RAM控制器;以及
响应于失败的验证,发起有关所述失败的验证的警报。
15.如权利要求14所述的计算机设备,其中,一旦从所述电源请求电力,所述接口控制器执行所述运行期控制代码的识别、验证以及向所述RAM控制器的上传。
16.如权利要求14所述的计算机设备,其中,所识别的版本的所述验证包括使用所述处理设备来执行以下操作:
计算所识别的版本的密码散列;
将所计算的密码散列与已知密码散列进行比较;以及
基于所计算的密码散列和所述已知密码散列的匹配来提供成功的验证的指示。
17.如权利要求16所述的计算机设备,其中,所述已知密码散列是从控制代码验证和更新区域(“CCVUA”)中获得的。
18.如权利要求14所述的计算机设备,其中,所识别的版本的所述验证包括使用所述处理设备来执行以下操作:
计算所识别的版本的密码散列;
将所计算的密码散列与已知密码散列进行比较;以及
基于所计算的密码散列和所述已知密码散列的失败的匹配来发起警报。
19.如权利要求18所述的计算机设备,其中,在发起所述警报之后,所述处理设备执行指令以执行以下操作:
识别对于所述RAM控制器的运行期控制代码的备份安全版本;以及
经由所述通信接口将所述运行期控制代码的所识别的备份安全版本上传到所述RAM控制器,以允许所述电源的运行。
20.一种使用接口控制器来验证电源的运行期控制代码的计算机实施的方法,所述方法包括:
在所述接口控制器处,接收从电源向计算机系统提供电力的指示;
在接收到所述指示之后并且在允许所述电源向所述计算机系统供应电力之前,使用所述接口控制器的处理设备执行以下操作:
识别对于所述电源的第一RAM控制器的运行期控制代码的第一版本;
计算所述运行期控制代码的所识别的第一版本的第一密码散列;
执行计算的第一密码散列匹配所识别的第一版本的第一已知密码散列的第一验证;
响应于成功的第一验证,使用所述第一RAM控制器与所述接口控制器之间的第一通信接口将所述运行期控制代码的所识别的第一版本上传到所述第一RAM控制器;以及
响应于失败的第一验证,发起有关所述失败的第一验证的第一警报。
21.如权利要求20所述的计算机实施的方法,进一步包括:
使用所述接口控制器的所述处理设备来执行以下操作:
识别对于所述电源的第二RAM控制器的运行期控制代码的第二版本;
计算所述运行期控制代码的所识别的第二版本的第二密码散列;
执行计算的第二密码散列匹配所识别的第二版本的第二已知密码散列的第二验证;
响应于成功的第二验证,使用所述第二RAM控制器与所述接口控制器之间的第二通信接口将所述运行期控制代码的所识别的第二版本上传到所述第二RAM控制器;以及
响应于失败的第二验证,发起有关所述失败的第二验证的第二警报。
22.如权利要求20所述的计算机实施的方法,进一步包括:
使用所述接口控制器的所述处理设备来执行以下操作:
识别对于包括第二RAM控制器的产品设备的运行期控制代码的第二版本;
计算所述运行期控制代码的所识别的第二版本的第二密码散列;
执行计算的第二密码散列匹配所识别的第二版本的第二已知密码散列的第二验证;
响应于成功的第二验证,使用所述第二RAM控制器与所述接口控制器之间的第二通信接口将所述运行期控制代码的所识别的第二版本上传到所述第二RAM控制器;以及
响应于失败的第二验证,发起有关所述失败的第二验证的第二警报。
23.如权利要求22所述的计算机实施的方法,其中,在发起所述第一警报或所述第二警报之后,所述处理设备执行指令以执行以下操作:
响应于失败的第一验证:
识别对于所述第一RAM控制器的运行期控制代码的第一备份安全版本;以及
将所述运行期控制代码的所识别的第一备份安全版本上传到所述第一RAM控制器,以允许所述电源的运行;以及
响应于失败的第二验证:
识别对于所述第二RAM控制器的运行期控制代码的第二备份安全版本;以及
将所述运行期控制代码的所识别的第二备份安全版本上传到所述第二RAM控制器,以允许所述产品设备的运行。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2019/043880 WO2021021100A1 (en) | 2019-07-29 | 2019-07-29 | Interface controller for commodity devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113728320A true CN113728320A (zh) | 2021-11-30 |
Family
ID=74229759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980095767.8A Pending CN113728320A (zh) | 2019-07-29 | 2019-07-29 | 用于产品设备的接口控制器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220198073A1 (zh) |
CN (1) | CN113728320A (zh) |
DE (1) | DE112019007584T5 (zh) |
WO (1) | WO2021021100A1 (zh) |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7137016B2 (en) * | 2003-09-10 | 2006-11-14 | Intel Corporation | Dynamically loading power management code in a secure environment |
US8332652B2 (en) * | 2003-10-01 | 2012-12-11 | International Business Machines Corporation | Computing device that securely runs authorized software |
US7984304B1 (en) * | 2004-03-02 | 2011-07-19 | Vmware, Inc. | Dynamic verification of validity of executable code |
US7546596B2 (en) * | 2004-03-29 | 2009-06-09 | International Business Machines Corporation | Non-disruptive method, system and program product for overlaying a first software module with a second software module |
US8375369B2 (en) * | 2005-04-26 | 2013-02-12 | Apple Inc. | Run-time code injection to perform checks |
US7424398B2 (en) * | 2006-06-22 | 2008-09-09 | Lexmark International, Inc. | Boot validation system and method |
US9058483B2 (en) * | 2008-05-08 | 2015-06-16 | Google Inc. | Method for validating an untrusted native code module |
US7853780B2 (en) * | 2008-07-31 | 2010-12-14 | Oracle America, Inc. | Core initialization code validation |
TWI399647B (zh) * | 2009-10-15 | 2013-06-21 | Wistron Corp | 回復電腦系統之基本輸出入系統之方法及相關電腦系統 |
TW201321958A (zh) * | 2011-11-23 | 2013-06-01 | Inventec Corp | 電腦系統的電源供應器及其供電方法 |
JP5519712B2 (ja) * | 2012-01-20 | 2014-06-11 | レノボ・シンガポール・プライベート・リミテッド | コンピュータをブートする方法およびコンピュータ |
US9122873B2 (en) * | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US10621330B2 (en) * | 2014-03-28 | 2020-04-14 | Hewlett-Packard Development Company, L.P. | Allowing use of a test key for a BIOS installation |
US11263308B2 (en) * | 2019-03-25 | 2022-03-01 | Micron Technology, Inc. | Run-time code execution validation |
US11847227B2 (en) * | 2020-11-30 | 2023-12-19 | Red Hat, Inc. | Firmware version corruption attack prevention |
-
2019
- 2019-07-29 CN CN201980095767.8A patent/CN113728320A/zh active Pending
- 2019-07-29 DE DE112019007584.5T patent/DE112019007584T5/de active Pending
- 2019-07-29 US US17/606,655 patent/US20220198073A1/en active Pending
- 2019-07-29 WO PCT/US2019/043880 patent/WO2021021100A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
DE112019007584T5 (de) | 2022-04-21 |
WO2021021100A1 (en) | 2021-02-04 |
US20220198073A1 (en) | 2022-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10318736B2 (en) | Validating operating firmware of a periperhal device | |
US10395039B2 (en) | Customer-owned trust of device firmware | |
US9183395B2 (en) | System and method for secure information handling system flash memory access | |
US10185828B2 (en) | Systems and methods using virtual UEFI path for secure firmware handling in multi-tenant or server information handling system environments | |
US10754955B2 (en) | Authenticating a boot path update | |
US11409884B2 (en) | Security profiling of system firmware and applications from an OOB appliance at a differentiated trust boundary | |
US20170003956A1 (en) | Updating computer firmware | |
CN107408172B (zh) | 从用户信任的设备安全地引导计算机 | |
CN103793654A (zh) | 服务器主动管理技术协助的安全引导 | |
CN103917949A (zh) | 使用管理引擎的部件更新 | |
US9768952B1 (en) | Removable circuit for unlocking self-encrypting data storage devices | |
CN101630353A (zh) | 在移动因特网设备上安全引导uefi固件和uefi感知操作系统的系统和方法 | |
US10255438B2 (en) | Operating system agnostic validation of firmware images | |
US20190065786A1 (en) | System and Method for Enabling and Disabling of Baseboard Management Controller Configuration Lockdown | |
EP3606000A1 (en) | Component commissioning to iot hub using permissioned blockchain | |
US10482278B2 (en) | Remote provisioning and authenticated writes to secure storage devices | |
US10771462B2 (en) | User terminal using cloud service, integrated security management server for user terminal, and integrated security management method for user terminal | |
TW202044022A (zh) | 更新信號技術 | |
US11341246B2 (en) | Secure firmware update for device with low computing power | |
JP2011150499A (ja) | シンクライアントシステム、シンクライアント端末およびシンクライアントプログラム | |
EP4258146A1 (en) | Computer system, trusted functional assembly, and operation method | |
CN113728320A (zh) | 用于产品设备的接口控制器 | |
US11907375B2 (en) | System and method for signing and interlocking a boot information file to a host computing system | |
WO2014158743A2 (en) | Feature license-related repair/replacement processes and credit handling | |
CN113169963A (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 |