CN109313690A - 自包含的加密引导策略验证 - Google Patents
自包含的加密引导策略验证 Download PDFInfo
- Publication number
- CN109313690A CN109313690A CN201780030432.9A CN201780030432A CN109313690A CN 109313690 A CN109313690 A CN 109313690A CN 201780030432 A CN201780030432 A CN 201780030432A CN 109313690 A CN109313690 A CN 109313690A
- Authority
- CN
- China
- Prior art keywords
- electronic equipment
- hash
- data structure
- key
- boot sessions
- 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.)
- Granted
Links
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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/442—Shutdown
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/031—Protect user input by software means
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/127—Trusted platform modules [TPM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
Abstract
一种设备本地密钥导出方案在电子设备的第一引导会话期间生成密封密钥,该密封密钥是至少部分地从设备生成的随机种子和对于电子设备是唯一的内部机密来导出的。在生成密封密钥之后,针对第一引导会话的剩余部分并且直到发起第二引导会话为止禁用对内部机密的访问。在运行时,使用密封密钥来对描述被授权访问密封密钥的软件的模块清单进行签名,并且包含密封密钥的模块清单被存留在电子设备的非易失性存储器中。模块清单可以用于在后续引导会话期间验证软件并授权电子设备上的软件更新,而不依赖与外部实体或外部信息来保护设备上机密。
Description
背景技术
电子设备通常用于以数字形式存储私有用户数据。可以以各种方式来保护该数据。例如,安装在电子设备上的操作系统(OS)在访问数据之前可能需要执行认证过程(例如,在用户能够访问存储在电子设备上的数据之前要求该用户输入密码短语)。硬盘加密软件也可以用于加密设备上的数据,以使得攻击者不能通过简单地移除硬盘驱动器并将该硬盘驱动器插入不同的机器来获得对数据的访问。因此,电子设备上的数据的安全性以保持信息机密(例如,密码短语、加密密钥等等)为前提,使得攻击者不能发现机密并获得对存储在电子设备上的敏感数据的访问。
此外,当需要更新电子设备上的当前OS版本(例如,利用经更新的OS版本替换)时,电子设备的系统软件可以验证经更新的代码是利用仅对可信实体(例如,电子设备和/或OS软件的制造商)已知并由该可信实体拥有的私有签名密钥来签名的。以此方式,电子设备隐式地信任由可信实体使用私有签名密钥来签名的所有代码。尽管有前述安全措施,但未经授权的实体(或攻击者)仍然找到了规避这些安全措施以获得对设备机密的访问的方式。
例如,攻击者可以利用特定制造商对大量软件版本进行签名的事实,这增加了一个或多个版本包含软件错误的可能性。攻击者只需要包含错误的一个经签名的软件版本以利用该错误,以便规避电子设备的安全措施,例如前述的密码短语检查。一旦攻击者发现包含此类错误的经签名软件版本,就可以在电子设备上安装该经签名代码(因为该代码是利用私有签名密钥来签名的),并且可以利用已安装软件中的错误来规避电子设备上的安全措施,从而允许攻击者获得对设备机密和私有的设备上数据的访问。
尝试解决前述安全缺陷的现有方法都遭受类似的缺陷;即,电子设备依赖于电子设备本身外部的实体和/或信息来保持设备上机密安全,同时允许对设备软件的更新。例如,“白名单”方法可以用于对照先前验证的代码列表来验证软件版本,但这需要一种方法来使白名单保持最新并且依赖于外部机制来执行此操作。“黑名单”方法也可以用于定义在对设备软件进行更新之前参考的“已知不良软件”的撤销列表,但该场景中的攻击者可以简单地限制与电子设备的通信并防止设备对黑名单进行更新,从而允许在设备上安装恶意软件。签名验证遭受类似的缺陷,因为需要拥有密钥的外部实体来定义电子设备要信任哪个软件。这不仅需要基础设施来对软件更新进行管理和签名,而且它也是安全漏洞,因为它在设备外部创建了高价值机密,一旦获得该机密,它就允许攻击者访问整类设备的设备上机密。
发明内容
本文所描述的是用于在电子设备上实现自包含的(self-contained)加密引导策略验证的技术和系统。本文所描述的技术和系统是“自包含的”,是因为它们不依赖于外部实体或外部信息来保护设备上机密,同时支持电子设备上的安全软件升级。
可以利用设备本地密钥导出方案来允许在电子设备上运行的当前软件创建并保持设备上机密,而不是依赖于外部源来创建和维护用于对经授权软件进行签名的私钥。该设备本地密钥导出方案在电子设备的初始(第一)引导会话期间生成设备本地私钥(本文被称为“密封密钥”)。该密封密钥部分地从使用电子设备的随机数生成器生成的随机种子、并且部分地从对于电子设备是唯一的内部机密(即,在电子设备内部)来导出。在生成密封密钥之后,针对第一引导会话的剩余部分并且直到发起第二引导会话为止禁用对内部机密的访问。换句话说,在生成密封密钥之后并且直到电子设备重置或重启为止使得对内部机密的访问不可用。还可以在初始(第一)引导期间计算在电子设备上运行的当前软件的代码测量。代码测量可以包括第一引导会话的引导阶段的散列表。
在电子设备的运行时,可以使用密封密钥来加密数据(例如,用户数据),并且可以将经加密数据存储在电子设备的非易失性存储器中。例如,可以生成用于硬盘驱动器加密的随机化应用专用密钥,并且密封密钥可以用于加密(或包装)该随机化应用专用密钥。此外,密封密钥可以用于对描述被授权访问密封密钥的软件(或软件的当前状态)的数据结构进行签名。例如,可以部分地基于密封密钥并且部分地基于在第一引导会话期间计算的代码测量来生成签名。该签名可以用于对数据结构的至少一部分进行签名,并且经签名的数据结构(本文有时称为“模块清单”)可以存留在电子设备的非易失性存储器中。存留在电子设备上的模块清单包含代码测量(例如,第一引导会话的引导阶段的散列)、随机种子以及从密封密钥导出的签名。密封密钥也可以保持在模块清单的私有部分中,以使得在电子设备上执行的当前软件栈具有对密封密钥的独占访问。
在电子设备的任何后续引导会话(例如,第二引导会话)期间,先前存留在非易失性存储器中的模块清单在第二引导会话完成之前被加载和验证。例如,密封密钥可以部分地从模块清单中保持的随机种子、并且部分地从在电子设备重启之后再次可访问的内部机密重新导出。这产生与在初始(第一)引导期间生成的密封密钥相同的密封密钥。可以从该重新导出的密封密钥来重新导出签名,并对照模块清单中的签名进行检查。如果所比较的签名不匹配,则密封密钥与模块清单一起从电子设备安全地擦除,作为防止经修改的代码和/或攻击者访问密封密钥的安全措施。在所比较的签名匹配时,电子设备的引导加载程序以及引导会话的各个引导阶段可以共同确定模块清单是否描述了设备实际在引导的软件(例如,通过验证引导会话的引导阶段与模块清单中的经签名引导阶段集合匹配)。如果模块清单未描述设备实际在引导的软件,则密封密钥与模块清单一起从电子设备安全地擦除。另一方面,如果引导加载程序和各个引导阶段确定模块清单描述了设备实际在引导的软件,则验证模块清单,设备完成引导会话,并且密封密钥保留在模块清单以供在电子设备上运行的软件访问。
当要利用新软件来更新电子设备上的当前软件栈时,可以访问设备本地密封密钥的当前软件栈具有对密封密钥的独占使用(即,没有其他软件可以使用密封密钥)以进行自签名,并且在非易失性存储器中存留描述了将可以访问密封密钥的新软件(例如,对应于新软件的散列表)的新模块清单。以此方式,可以访问密封密钥的当前软件对确定哪个其他软件(例如,软件升级)应该能够访问密封密钥具有独占所有权,并且因此当前软件能够将信任转发到新版本的软件,以使得新软件能够访问密封密钥。利用本文所描述的技术和系统,攻击者不能够在不破坏密封密钥的情况下安装未经授权的软件更新,因为引导代码中的任何变化都会使验证无效并使密封密钥不可访问,并且攻击者无法使当前软件信服安装经更新软件是安全的。此外,已由攻击者获得的任何外部机密都不会导致密封密钥被泄露给不可信软件。同时,本文所描述的技术和系统允许安装由电子设备上的当前软件授权的软件更新。以此方式,可以利用经授权的安装来更新电子设备。
利用本文所描述的技术和系统,电子设备外部的任何实体都不会被托付任何可以用于交出设备上机密的信息。相反,自签名用于初始地引导安全软件上下文,并且在电子设备上的当前软件被托付机密之后,当前软件栈本身(与外部方相对)具有对决定哪个其它(例如,未来)软件可以访问这些机密的独占控制权。这针对不依赖于外部基础设施的电子设备创建了自包含的安全特征。它还将数据加密与在电子设备上运行的实际代码更紧密地联系,并允许电子设备上的当前软件栈在允许对设备软件的更新之前执行一个或多个可选的验证操作。
本文还描述了证明过程,该过程允许远程服务器验证电子设备实际上已经引导了该电子设备向远程服务器告知其已经引导的软件版本。以此方式,电子设备不能通过引导恶意软件并告诉远程服务器它引导非恶意的不同软件来“欺骗”该远程服务器。
提供本发明内容以用简化形式引入一些概念,这些概念以下在详细描述中进一步描述。本发明内容并非旨在标识所要求保护的主题内容的关键特征或必要特征,也并非旨在用于限制所要求保护的主题内容的范围。
附图说明
参考附图描述了具体实施方式。在附图中,附图标记的最左位标识该附图标记首次出现的附图。不同附图中的相同附图标记指示相似或相同的项目。
图1是示出了示例性设备本地密钥导出方案的示意图。
图2是示出了对用于引导策略验证的模块清单进行签名的示例性技术的示意图。
图3是被配置为实现本文所描述的技术的示例性电子设备架构的示意图。
图4是示出了使用模块清单的示例性引导策略验证技术的示意图。
图5是示出了在引导策略验证期间验证引导会话的多个引导阶段的示例性技术的示意图。
图6是用于在电子设备处本地导出密封密钥并对将用于引导策略验证的模块清单进行签名的示例性过程的流程图。
图7A是用于使用电子设备的存留的模块清单来实现引导策略验证过程的一部分的示例性过程的流程图。
图7B是用于实现引导策略验证过程的另一部分以验证模块清单描述电子设备实际正在引导的软件的示例性过程的流程图。
图8是用于对电子设备上的软件进行更新的示例性过程的流程图。
图9是示出了示例性证明技术的示意图。
图10是电子设备与远程服务器之间的示例性证明过程的流程图。
具体实施方式
本公开内容的配置涉及用于在电子设备上实现自包含的加密引导策略验证的技术和系统等等。当在电子设备上实现时,自包含加密引导策略验证创建比现有电子设备更安全的电子设备。这至少部分地归因于不依赖于电子设备外部的实体和/或信息的设备本地密钥导出方案和相应的引导策略验证。因此,设备本地密钥导出方案和引导策略验证相对于电子设备是自包含的。以此方式,不能强制实现本文所描述的技术和系统的电子设备的制造商访问存储在电子设备上的机密,这是由于制造商(更不用说任何实体)不能够规避电子设备的自包含的安全特征。该问题最近在苹果公司和联邦调查局(FBI)之间就法院是否以及在何种程度上可以强制制造商协助联邦政府机构“解锁”包含设备上机密的消费电子设备的争议中受到高度关注。利用本文所描述的自包含加密引导策略验证方案,电子设备的制造商可以完全避免这种争议,因为制造商不具有“解锁”电子设备的能力。
图1是示出了将在电子设备100上实现的示例性设备本地密钥导出方案的示意图。设备本地密钥导出方案从“空白”电子设备100的概念开始。例如,用户可以购买新的电子设备100(例如,膝上型计算机、平板设备、智能电话等等)。操作系统(OS)可能未预先安装在电子设备100上。在该场景中,用户的任务是从可移动存储介质将OS下载或安装到电子设备100上。在将OS安装到电子设备100上之前,引导过程可以用于允许电子设备100上的初始软件集创建随机的设备本地私钥(本文称为“密封密钥102”)。图1的示图中示出了该引导(bootstrapping)过程。
密封密钥102是“设备本地”密钥,因为它是由电子设备100在本导出的。密封密钥102可以包括用于加密和解密存储在电子设备100上的数据的对称加密密钥。密封密钥102可以用于多个版本的软件(例如,OS的第一版本、OS的第二版本等等),与严格依赖于软件版本的加密密钥相对。
当电子设备100初始地第一次引导时(即,第一引导会话),生成模板数据结构(本文称为“模板模块清单(TMM)104”)。TMM 104包括具有可以利用数据来填充的多个初始空字段的数据结构。图1示出了密封密钥102可以写入TMM 104的在TMM 104的私有部分中的字段。就此而言,保持密封密钥102以安全、私密的方式存储意味着防止外部和/或经修改的软件访问密封密钥102、或TMM 104的任何私有部分。图1还示出了可以写入TMM 104的对应字段(例如TMM 104的公共部分中的字段)的全局唯一标识符(GUID)106和随机种子108。写入TMM 104的公共部分的数据通常可由电子设备100上的任何过程和软件访问。GUID 106可以从随机(或伪随机)数生成,例如由电子设备100的随机数生成器(RNG)生成,并且GUID 106可以用于唯一地标识TMM 104并将其与可以在电子设备100上创建的其他TMM 104区分开。
随机种子108也可以在第一引导会话期间作为最终产生密封密钥102的设备本地密钥导出方案的一部分来生成。在一些配置中,使用电子设备100的RNG来生成随机种子108。如果电子设备100被多次引导,则随机种子108在统计上不太可能是相同的,因为随机种子108可以是足够大的数(例如,128位数、256位数等等)。
密封密钥102可以部分地从随机种子108、并且部分地从内部机密110(本文有时称为“电子熔丝(eFuse)机密110”)使用密码原语(例如,基于散列的消息认证码(UMAC)算法)来导出。内部机密110包括在电子设备100内部并且对于电子设备100是唯一的机密。eFuse设备或类似的硬件芯片可以用于此目的。因此,内部机密110可以包括基于硬件的密钥,例如在制造芯片时“烧录”到芯片中的eFuse机密110。电子设备100在制造电子设备100时可以与相应的内部机密110相关联,该内部机密110对于电子设备100是唯一的,并且在一些配置中,内部机密110可以仅对电子设备100已知。
部分地从随机种子108并且部分地从内部机密110来生成密封密钥102的密码原语可以用硬件、软件或其组合来实现。在说明性示例中,HMAC算法用于生成密封密钥102,并且该密钥导出函数(KDF)的概括由图1中的“二极管可视化内容112”示出。在二极管可视化内容112中,密钥114、标签116和数据118被密码原语作为输入以生成输出120(即,输出120=HMAC(密钥114,标签116||数据118))。通常,可以使密钥114可以保持机密,而标签116和数据118可以不是机密的(即,标签116和数据118可以公开地用于其他过程和软件)。在一些配置中,在HMAC算法中标签116可以与数据118连接。
二极管可视化内容112中示出的KDF的性质表示观察输出120、标签116和数据118未向攻击者提供反转KDF以导出机密密钥114的方法。在图1的示例中,使用内部机密110作为密钥114、随机种子108作为数据118、以及标签116“加密”,来生成密封密钥102作为二极管可视化内容112的输出120。以此方式,观察密封密钥102、“加密”标签116和随机种子108未提供通过反转KDF来导出内部机密110的方法。因此,内部机密110可以被保持为可以由电子设备100的引导代码(例如,引导加载程序)独占访问的机密。
生成的密封密钥102对应于特定TMM 104的随机种子108,并且简单地观察随机种子108(其被公开存储并且因此可访问)在不另外知道内部机密110的情况下不能揭示密封密钥102。在生成密封密钥102之后,对第一引导会话的剩余部分并且直到电子设备100重置或重启(即,直到发起第二引导会话)为止禁用对内部机密110的访问。禁用对内部机密110的访问可以包括对寄存器进行置位,这使得eFuse设备的基于硬件的密钥对于第一引导会话的剩余部分是不可读的。随后在发起下一个引导会话时可以“取消置位”该寄存器。利用GUID 106、随机种子108和写入TMM 104的字段的密封密钥102,部分填充的TMM 104可以存储在电子设备100的非易失性存储器中(例如电子设备100的硬盘驱动器),直到OS安装在电子设备100上并且填充更多的字段以创建模块清单,如下面将更详细描述的。一旦OS安装在电子设备100上,密封密钥102就可以用于“密封”机密,例如通过对用于硬盘驱动器加密的随机化密钥进行加密。
图2是示出了对用于引导策略验证的模块清单(MM)200进行签名的示例性技术的示意图。图2的模块清单200表示由于填充TMM 104(其已经参考图1示出和描述)的额外字段而创建的数据结构。被填充以创建模块清单200的额外字段可以包括但不限于多个软件模块描述符(SMD)字段202和用于签名204的字段。
在电子设备100的初始(第一)引导会话期间,并且在生成密封密钥102之后,可以计算第一引导会话的多个引导阶段的代码测量,并且可以将这些代码测量写入SMD字段202。以此方式,模块清单200经由SMD字段202来描述或定义在电子设备100上运行的当前软件栈(或软件的当前状态)。至少一些SMD字段202可以包含用户已在电子设备100上安装的OS的代码测量,以使得当前软件栈包括安装在电子设备100上的OS版本。在电子设备100上安装OS之前,电子设备100的软件验证模块可以通过执行一个或多个验证操作来验证该OS安装在电子设备100上是安全的。验证操作可以包括但不限于从用户接收用户输入(用户先前已使用密码短语登录到电子设备100)、接收有效密码短语、检测经授权的智能卡等等。成功完成一个或多个验证操作可以确保OS安装在电子设备100上是安全的。
写入SMD字段202的代码测量可以包括任何合适类型的代码测量,例如电子设备100上的当前软件栈的多个部分(或元素)的散列集合。因此,SMD 202(0)、SMD 202(1)、...SMD 202(N)可以描述当前软件元素自身的散列或选项的集合或列表(例如,当前软件栈是启用还是禁用调试)等等。SMD字段202可以保持与设备上机密的安全性相关的任何类型的代码测量,并且当被修改时可以以其它方式允许攻击者访问设备上机密。举一个说明性示例,SMD 202(0)可以表示第一引导会话的引导过程中的多个引导阶段中的一个引导阶段,SMD 202(1)可以表示该引导过程中的下一顺序引导阶段(例如,“安全加载程序”阶段),SMD 202(2)可以表示OS引导加载程序,SMD 202(N)可以表示内核等等。因此,至少一些SMD字段202可以描述引导过程的引导阶段,并且SMD字段202中的其他字段可以描述用户安装在电子设备100上并且通过一个或多个验证操作被验证为安装安全的OS的版本。然而,SMD代码测量的前述示例是特定于实现方式的,并且可以使用不同的软件栈而不脱离本文所描述的技术和系统的基本特征。
在运行时,并且当用户使用电子设备100时,可以使用密封密钥102来加密数据(例如,用户数据),并且可以将经加密的数据存储在电子设备100的非易失性存储器中。例如,要存储在电子设备100的硬盘驱动器(例如,硬盘驱动器(HDD))上的数据可以使用用于硬盘驱动器加密的随机化应用专用密钥(例如,卷密钥或类似的硬盘驱动器加密密钥)来加密,并且用于硬盘驱动器加密的这些应用专用密钥可以使用密封密钥102来加密(或包装)。
为了对模块清单200进行签名并将模块清单200存留在电子设备100的非易失性存储器中,可以使用密封密钥102来生成图2中所示出的签名204。可以利用图1中所示出的相同或类似二极管可视化内容112来生成签名204,以使得签名204可以部分地基于密封密钥102并且部分地基于已写入SMD字段202并在第一引导会话期间计算的代码测量(例如,当前软件的软件元素的散列)。也就是说,用作KDF的密码原语(例如,HMAC算法)可以取得输入,将密封密钥102作为密钥114,将SMD字段202中的代码测量(或与SMD字段202中的代码测量连结的随机种子108)作为数据118并且可能地作为标签,并且可以产生签名204作为输出120。以此方式,简单地观察签名204、随机种子108和SMD字段202中的代码测量未提供导出机密密封密钥102的方法,并且密封密钥102因此可以保持私密和安全,免受未经授权的软件和过程。
签名204可以用于对模块清单200的至少一部分(例如SMD字段202中的代码测量)进行签名(例如,对称签名),并且可能地用于对随机种子108和/或GUID 106进行签名。经签名的模块清单200可以保持未加密,以使得模块清单200是公共的并且可被电子设备100上的任何软件或过程读取,并且经签名的模块清单200可以被存留(或存储)在电子设备100的非易失性存储器中。模块清单200可以对应于已安装的OS版本,以使得创建每个模块清单200与每个OS版本之间的一一对应关系。以此方式,电子设备100可以被配置为运行安装在其上的多个OS版本,并且用于每个OS版本的相应模块清单200可以被存留在电子设备100的非易失性存储器中。一旦存留在电子设备100的非易失性存储器中,就可以在任何后续引导会话期间利用经签名的模块清单200来验证电子设备100实际在引导的软件与经由SMD字段202在模块清单200中描述的软件相同。要意识到,SMD字段202中的代码测量和签名204可以保持在模块清单200的公共部分中,而密封密钥102被安全地存储在电子设备100的存储器中。
图3是被配置为实现本文所描述的技术的示例性电子设备100架构的示意图。电子设备100可以实现为任何类型的计算设备,包括但不限于个人计算机、膝上型计算机、平板计算机、便携式数字助理(PDA)、移动电话(例如,智能电话)、电子书(e-book)阅读器、游戏控制台、机顶盒(STB)、智能电视机(TV)、媒体流式传输播放器、便携式游戏机、便携式媒体播放器、可穿戴计算机(例如,智能手表、智能眼镜等)等。
图3将电子设备100示为包括一个或多个处理器300和存储器302。在一些配置中,处理器300可以包括硬件处理器,其中硬件处理器包括但不限于硬件中央处理单元(CPU)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、专用集成电路(ASIC)、片上系统(SoC)或其组合。取决于电子设备100的确切配置和类型,存储器302可以包括易失性(例如,随机存取存储器(RAM))、非易失性(例如,只读存储器(ROM)、闪存等等)、或者两者的某种组合。
电子设备100还可以包括额外的数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。这种额外存储设备在图3中由可移动存储设备304和不可移动存储设备306示出。如本文所使用的计算机可读介质可以包括至少两种类型的计算机可读介质,即计算机存储介质和通信介质。计算机存储介质可以包括按用于存储信息(例如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器302、可移动存储设备304和不可移动存储设备306都是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、电可擦除可编程只读存储器(EEPROM)、闪存或其他存储器技术、光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)、或其他光学存储设备、盒式磁带、磁带、磁盘存储或其他磁存储设备、或可以用于存储可由电子设备100访问的所期望信息和数据的任何其他非传输介质。
在一些配置中,存储器302、可移动存储304和不可移动存储306中的任何一个或全部可以存储编程指令、数据结构、程序模块和其他数据,当这些编程指令、数据结构、程序模块和其他数据由处理器300执行时实现本文所描述的一些或所有过程。此外,存储器302、可移动存储304和/或不可移动存储306中的任何一个的非易失性存储器可以用于保持图1的前述TMM 104、图2的模块清单200、以及将被存留在电子设备100的存储器中并且在重启电子设备100之后保持可用的用户数据。
相比之下,通信介质可以体现计算机可读指令、数据结构、程序模块或经调制数据信号中的其他数据,例如载波或其他传输机制。如本文所定义的,计算机存储介质不包括通信介质。
电子设备100还可以包括输入设备308,诸如触摸屏、键盘、指向设备(例如,鼠标、触摸板、操纵杆等等)、笔、麦克风、物理按钮等等,用户通过这些输入设备可以将命令、信息和用户输入键入到电子设备100中。
电子设备100还可以包括一个或多个输出设备310以用于向电子设备100的用户提供输出。输出设备310可以包括但不限于显示器、扬声器、触觉反馈机构、打印机等等。
电子设备100还可以包括通信连接312(或通信接口312),该通信连接312允许电子设备100当电子设备100在联网环境中操作时例如通过网络(例如通过互联网)与其他计算设备314通信。通信连接312可用于通过网络向/从其他设备314(例如一个或多个计算设备、一个或多个服务器等等)发送/接收数据等等。另外,通信连接312可以实现基于WiFi的通信,例如经由IEEE 802.11标准定义的频率、诸如的短程无线频率、或者使得电子设备100能够与其他设备314对接的任何合适的有线或无线通信协议。例如,通信连接312可以包括智能卡读卡器,以便与电子设备100外部的智能卡对接。这可以允许拥有智能卡的经授权用户在验证操作期间(例如当软件更新被验证为安装在电子设备100上是安全的时)利用电子设备100来认证他/她自己。
电子设备100还可以包括被配置为生成随机(或伪随机)数的随机数生成器(RNG)316。RNG 316可以被配置为生成GUTD 106和随机种子108,以及本文所描述的其他随机生成的值。电子设备100还可以包括包含内部机密110的eFuse设备318或类似硬件芯片。内部机密110可以在制造eFuse设备318时被“烧录”或硬编码到eFuse设备318中,并且对于电子设备100是唯一的。在一些配置中,内部机密110仅对电子设备100的引导代码已知。然而,在其他配置中,内部机密110可以与另一设备314(例如,与另一电子设备、或与外部数据库(例如,备份数据库))共享。例如,如果法律要求密钥“托管”,或者如果商业企业出于任何原因而希望保持内部机密110的副本,则可以在电子设备100与另一设备314之间共享内部机密110以满足这些目的。
电子设备100的存储器302可以包括一个或多个操作系统320(例如OS的一个或多个版本)、引导加载程序322、软件授权模块324以及证明模块326。此外,存储器302可以保持一个或多个模块清单200(1)-200(M),例如图2的模块清单200,其中每个模块清单200对应于电子设备100上的OS 320版本。
引导加载程序322可以被配置为:发起电子设备100的引导会话,并且在发起的引导会话期间依次加载多个引导阶段。引导加载程序322还可以被配置为实现本文所描述的设备本地密钥导出方案和引导策略验证技术。
软件授权模块324可以被配置为:在安装新软件之前验证要安装在电子设备100上的新的未预料的软件是安全的。软件授权模块324可以在验证待安装软件的上下文中执行一个或多个验证操作。例如,由软件授权模块324实现的验证操作可以包括但不限于经由电子设备100的一个或多个输入设备308来接收有效密码短语(例如,密码、个人标识号(PIN)等等)、接收确认(例如,用户输入选择电子设备100的触摸屏上的软按钮、用户输入按压物理按钮、经由麦克风接收的语音命令等等)、经由通信连接312来检测在电子设备100处的经授权智能卡、接收管理员密码短语、经由通信连接312并通过计算机网络从远程服务器计算机请求验证软件更新未被标记在黑名单上或以其他方式被撤销等等。
证明模块326可以被配置为执行证明过程,该证明过程利用模块清单200,如下面将更详细地解释的。由证明模块326实现的证明过程确保电子设备100在与外部计算设备(例如,虚拟专用网络(VPN)服务器)“通话”时向外部计算设备发送关于电子设备100声称它引导的软件版本是电子设备100引导的实际软件版本的密码证明。
图4是示出了使用模块清单200的示例性引导策略验证技术的示意图。在已完成第一引导会话、将经签名的模块清单200存留在电子设备100的非易失性存储器中、并且正在发起第二引导会话的电子设备100的上下文中描述图4。例如,可以在完成第一引导会话(初始引导会话或先前引导会话)之后并且在关闭或重启电子设备100之后发起第二引导会话。电子设备100的重启使得电子设备100的引导加载程序322能够访问内部机密110(或eFuse机密110),该内部机密110先前在电子设备100的第一引导会话期间在生成密封密钥102之后被禁用。
在第二引导会话期间,先前存留在电子设备100的非易失性存储器中的模块清单200可以在第二引导会话完成之前被加载和验证。要意识到,在一些配置中,可以在电子设备100的每个引导会话时生成模板模块清单104,以使得如果需要的话则当前软件可以迁移到新的密封密钥102。无论先前存留的模块清单200是否被确定为有效,都可以生成这种模板模块清单104。
为了验证模块清单200,引导加载程序322可以从模块清单200读取随机种子108(注意,不生成新的随机种子,而是从模块清单200读取在第一引导会话期间生成的相同随机种子108),并且引导加载程序322可以部分地基于从模块清单200读取的随机种子108并且部分地基于已经针对第二引导会话重新启用的内部机密110来重新生成密封密钥102。可以使用如参考图1所示出和描述的相同或类似的二极管可视化内容112、使用密码原语(例如,HMAC算法)来重新生成密封密钥102。重新生成的密封密钥102与在初始(第一)引导期间生成的密封密钥102相同,因为相同的随机种子108和相同的内部机密110可以与相同的密码原语一起使用以重新生成相同的密封密钥102。在重新生成密封密钥102之后,可以针对第二引导会话的剩余部分并且直到发起后续(第三)引导会话为止再次禁用对内部机密110的访问。
引导加载程序322随后可以生成预期签名400,该预期签名可以用于利用模块清单200中的实际签名204来验证模块清单200。可以部分地基于在第二引导会话期间重新生成的密封密钥102并且部分地基于从模块清单200读取的代码测量(即,从模块清单200中的SMD字段202读取的散列)来生成预期签名400。再次,可以利用如参考图1所示出和描述的相同或类似的二极管可视化内容112来生成图4中的预期签名400。
如图4中所示出的,可以将预期签名400与从模块清单200读取的实际签名204进行比较,并且如果所比较的签名不匹配,则可以连同模块清单200从电子设备100的存储器中安全地擦除密封密钥102,作为防止经修改的代码和/或攻击者访问密封密钥102的安全措施。另一方面,如果所比较的签名(即,预期签名400和实际签名204)匹配,则引导加载程序322可以确定模块清单200是否描述电子设备200实际正在引导的软件(例如,通过验证第二引导会话的剩余引导阶段与模块清单200中的经签名引导阶段集合匹配)。该经签名引导阶段集合先前被写入至少一些SMD字段202。参考图5描述了确定模块清单200是否描述了实际正在引导的软件。
图5是示出了在引导策略验证期间验证引导会话的多个引导阶段的示例性技术的示意图。图5中所示出的示图是在验证模块清单200的过程期间预期签名400与实际签名204匹配的场景中从图4中所示出的技术的扩展。图5出于说明目的示出了三个模块清单200(0)、200(1)和200(2)。这三个模块清单200(0)-(2)可以表示与安装在电子设备100上的单独OS版本相对应的独立的模块清单200,或者这三个模块清单200(0)-(2)可以表示利用相同的模块清单200来引导电子设备100的三个不同实例,但实际上利用三个不同的软件栈来引导电子设备100以用于比较和对比可能发生的不同场景。以图5中所示出的方式来验证多个引导阶段的目的是要防止密封密钥102对经修改的代码/软件可用。
如图5中所示出的,每次加载引导阶段时,引导加载程序322或当前引导阶段计算所加载的引导阶段的代码测量(例如,引导阶段的散列)并验证所计算的代码测量与模块清单的相关SMD字段202中的相应代码测量匹配。例如,引导加载程序322可以验证引导会话的第一引导阶段(例如,第一引导阶段的散列),并且安全地擦除不具有匹配的代码测量(例如,散列)的一个或多个模块清单200。随后,执行针对引导会话行进,并且第一引导阶段可以验证第二引导阶段,以此类推,其中当前引导阶段安全地擦除不具有匹配的代码测量的一个或多个模块清单200。在这三个模块清单200(0)-(2)表示电子设备100上的多个不同模块清单200的场景中,可以针对每个活动模块清单200的SMD/当前索引处的代码测量来计算和验证当前引导阶段的代码测量。在每个引导阶段,在将控制传递到下一引导阶段之前完成该验证步骤,以便如果实际正在被引导的软件的经加载引导阶段的所计算代码测量(例如,散列)与模块清单200的相关SMD字段202中的代码测量(例如,散列)不匹配,则密封密钥102连同模块清单200从电子设备100安全地擦除。这是因为如果所比较的代码测量不匹配,则这指示该模块清单200未描述电子设备100实际在引导的软件;这意味着,正在引导的软件相对于在第一引导会话期间被授权访问密封密钥102的软件是经修改的或者另外不熟悉的。
行进通过图5的示图,当针对电子设备100发起第二引导会话时,并且在根据参考图4所示出和描述的技术来验证模块清单200之后,第二引导会话的第一引导阶段被加载(例如,图5中具有标签“a0”的引导阶段500),并且可以计算第一引导阶段500的代码测量,并将其与被写入清单200(0)-(2)的第一引导会话的第一引导阶段的相应代码测量进行比较。在图5的示例中,所有的模块清单200(0)-(2)具有与第二引导会话的第一引导阶段500的代码测量匹配的代码测量,因此控制传递到下一引导阶段。
随后加载第二引导会话的第二引导阶段(例如,图5中标记为“b1”的引导阶段502),并且可以计算第二引导阶段502的代码测量,并将其与被写入模块清单200(0)-(2)的第一引导会话的第二引导阶段的相应代码测量进行比较。在图5的示例中,模块清单200(1)和200(2)各自具有与第二引导会话的第二引导阶段502的代码测量匹配的代码测量,因此控制传递到模块清单200(1)和模块清单200(2)两者的下一引导阶段。然而,模块清单200(0)包含与第二引导会话的第二引导阶段502的代码测量(例如,“b1”的散列)不匹配的代码测量(例如,“b0”的散列),因此模块清单200(0)从电子设备100的包括模块清单200(0)内的密封密钥102的存储器中安全地擦除。
当加载第二引导会话的第三引导阶段(例如,图5中标记为“c1”的引导阶段504)时,将剩余模块清单200(2)中的对应第三引导阶段的代码测量与针对第二引导会话的第三引导阶段计算的代码测量进行比较。此处,模块清单200(1)和200(2)两者都具有与第二引导会话的第三引导阶段504的代码测量匹配的代码测量,因此控制传递到下一引导阶段。当加载第二引导会话的第四引导阶段(例如,图5中标记为“d2”的引导阶段506)时,确定模块清单200(2)具有与第二引导会话的第四引导阶段506的代码测量匹配的代码测量,因此控制传递到模块清单200(2)的下一引导阶段。如果这是最终引导阶段,则第二引导会话对于模块清单200(2)完成。图5示出了模块清单200(1)包含与第二引导会话的第四引导阶段506的代码测量(例如,“d2”的散列)不匹配的代码测量(例如,“d1”的散列),因此在将控制传递到下一引导阶段之前,从电子设备100的包括模块清单200(1)内的密封密钥102的存储器中安全地擦除模块清单200(1)。
在图5中,电子设备100利用模块清单200(2)完成第二引导会话,并且模块清单200(2)中的密封密钥102(图5中的SK#2)被保留在模块清单200(2)中以用于由在电子设备100上运行的软件独占访问。然而,电子设备100将无法访问模块清单200(0)和200(1)中的密封密钥102,这意味着引导策略验证检测到代码已被修改,因此保护设备上机密免受针对模块清单200(0)和200(1)的未授权访问。要意识到,如果攻击者修改了代码以试图获得对设备上机密的访问,则对引导阶段的验证可能引起图5中针对模块清单200(0)和模块清单200(1)示出的场景。如果没有检查攻击者修改的软件上的有效签名的安全机制,则攻击者可能能够引导电子设备100,但是本文所描述的引导策略验证将防止攻击者的经修改软件获得对设备上机密的访问,因为在图4和图5的引导策略验证之后,用于包装(加密)电子设备上的数据的密封密钥102将被安全地擦除。
本文所描述的过程均被示为逻辑流程图中的框的集合,这些框表示可以用硬件、软件或其组合实现的操作序列。在软件的上下文中,框表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,当这些计算机可执行指令由一个或多个处理器执行时执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。描述操作的顺序并非旨在被解释为限制,而是可以以任何顺序和/或并行地组合任何数量的所描述框来实现过程。此外,在一些配置中,可以完全省略过程的一个或多个框。
图6是用于在电子设备100处本地导出密封密钥102并对将用于引导策略验证的模块清单200进行签名的示例性过程600的流程图。参考先前的附图来描述过程600。特别参考电子设备100的引导加载程序322、随机数生成器316和eFuse设备318。
在602处,可以发起电子设备100的第一引导会话。例如,用户可以对电子设备100加电。在一些配置中,电子设备100可以是“开箱即用(out-of-the-box)”的,这是因为电子设备100还没有安装OS。
在604处,可以使用电子设备100的随机数生成器(RNG)316来生成随机种子108。在606处,可以部分地基于随机种子108并且部分地基于内部机密110(即,在电子设备100内部)来生成密封密钥102,该密封密钥102对于电子设备100是唯一的。内部机密110可以包括基于硬件的密钥,如本文所述,例如在制造eFuse设备318时被编程到eFuse设备318中的eFuse机密110。在606处生成密封密钥102可以基于使用密码原语(例如,HMAC算法)的KDF,如本文所述。
在608处,可以针对第一引导会话的剩余部分并且直到发起第二引导会话(即,直到电子设备100重置或重启)为止禁用对内部机密110的访问。例如,禁用对内部机密110的访问可以通过设置禁止由引导加载程序322或任何其他软件或过程访问内部机密110的寄存器来实现。
在610处,可以计算第一引导会话的多个引导阶段的代码测量。例如,对于第一引导会话的引导路径中的可配置数量的引导阶段,可以计算第一引导会话的第一引导阶段的第一散列,可以计算第一引导会话的第二引导阶段的第二散列,依此类推。
在612处,并且在电子设备100的运行时,可以使用密封密钥102来加密电子设备100上的数据以获得经加密数据。例如,在安装OS 320时,密封密钥102可以用于包装(或加密)用于硬盘驱动器加密的随机化应用专用密钥(例如,卷密钥)。以此方式,可以利用仅对电子设备100已知的本地导出的随机私有密封密钥102来加密存储在电子设备100上的数据(例如,用户数据)。
在614处,可以将经加密数据存储在电子设备100的非易失性存储器中,以使得它在重启电子设备100时被存留。
在616处,可以部分地基于密封密钥102并且部分地基于在610处计算的代码测量来生成签名204。可以使用用于生成密封密钥102的相同或类似的密码原语来执行签名204的生成。因此,观察签名204和代码测量不能通过在616处反转签名生成来产生密封密钥102。
在618处,可以使用在616处生成的签名204来对数据结构(即,模块清单200)的至少一部分进行签名。经签名的数据结构(或模块清单200)可以包括SMD字段202中的代码测量、随机种子108、签名204和密封密钥102。至少密封密钥102可以保持在模块清单200的私有部分中,而随机种子108、SMD字段202中的代码测量、以及签名204可由电子设备100上的任何软件或过程公开读取。
在620处,经签名的数据结构(或模块清单200)可以存留在电子设备100的非易失性存储器中。以此方式,在电子设备100的任何后续重启时,可以加载存留的模块清单200以用于引导策略验证,如本文所述。
图7A是用于使用电子设备100的存留的模块清单200来实现引导策略验证过程的示例性过程700的流程图。参考先前的附图来描述过程700。特别参考引导加载程序322。过程700可以从图6的过程600的620继续,如图6和图7中的跨页引用“A”所示出的。
在702处,可以在完成图6的第一引导会话之后、或者任何中间的先前引导会话之后、以及在关闭或重启电子设备100之后发起第二引导会话。要意识到,即使在图6中的过程600的608处先前已禁用对内部机密110的访问,在702处在第二引导会话发起时也重新启用对电子设备100的内部机密110的访问。
在704处,可以从存留在电子设备100的非易失性存储器中的数据结构(或模块清单200)读取随机种子108。
在706处,可以部分地基于在704处读取的随机种子108并且部分地基于电子设备100的引导加载程序322可用的内部机密110来重新生成密封密钥102。以此方式,在706处重新生成的密封密钥102与在图6中的过程600的606处生成的密封密钥102相同。
在708处,可以针对第二引导会话的剩余部分并且直到发起第三引导会话为止禁用对内部机密110的访问。
在710处,引导加载程序322可以从数据结构(或模块清单200)读取代码测量,例如通过读取模块清单200的SMD字段202。
在712处,可以部分地基于在第二引导会话期间在706处重新生成的密封密钥102并且部分地基于在第二引导会话期间在710处从数据结构(或模块清单200)读取的代码测量来生成预期签名400。再次,预期签名400的生成可以基于使用密码原语(例如,HMAC算法)的KDF,如本文所述。
在714处,可以将预期签名400与从数据结构(或模块清单200)读取的实际签名204进行比较。在716处,确定预期签名400是否与数据结构(或模块清单200)中的签名204匹配。如果在716处签名不匹配,则过程700经由“否”路线行进到718,在708处将包括密封密钥102的数据结构(或模块清单200)从电子设备100的存储器中安全地擦除。如果在716处签名匹配,过程700行进到图7B的过程720,如图7A和图7B中的跨页引用“B”所示出的。
图7B是用于实现图7A中发起的引导策略验证过程的另一部分、以验证模块清单200描述了电子设备100实际正在引导的软件的示例性过程720的流程图。参考先前的附图来描述过程720,并且过程720可以经由“是”路线从过程700的判定框716继续,如图7A和图7B中的跨页引用“B”所示出的。
在722处,在来自图7A中的判定框716的“是”路线之后(即,在确定预期签名400与数据结构(或模块清单200)中的签名204匹配时),引导加载程序322可以加载第二引导会话的第一引导阶段,并且可以计算第二引导会话的第一引导阶段的代码测量(例如,散列)。
在724处,在将722处计算的代码测量与来自数据结构(或模块清单200)的SMD字段202的对应代码测量进行比较时,可以确定在722处计算的代码测量是否与来自模块清单200的对应代码测量匹配。如果在724处代码测量不匹配,则过程720经由“否”路线行进到726,在726处可以从电子设备100的存储器中安全地擦除包括密封密钥102的数据结构(或模块清单200)。另一方面,如果在724处代码测量匹配,则过程720经由“是”路线行进到728,在728处确定引导会话中是否存在任何剩余的引导阶段要验证。如果没有剩余的引导阶段要验证,则过程720从728经由“否”路线行进到730,在730处第二引导会话完成。如果在728处确定在引导会话中存在一个或多个剩余引导阶段,则过程720经由“是”路线行进到732,在732处加载第二引导会话的下一引导阶段,并且当前引导阶段计算下一引导阶段的代码测量(例如,散列),并将该代码测量与来自模块清单200的相应代码测量进行比较。因此,过程720针对引导路径中的每个引导阶段进行迭代,直到引导阶段都被验证或者第二引导会话在730处完成,或直到所计算的代码测量的第一实例与判定框724处的数据结构(或模块清单200)的相应代码测量不匹配,在该情况下,模块清单200和密封密钥102在726处安全地擦除,并且中止或完成第二引导会话,而不访问密封密钥,以使得设备上机密是安全的。
图8是用于对电子设备100上的软件进行更新的示例性过程800的流程图。参考先前的附图来描述过程800。特别参考软件授权模块324。
在802处,可以将软件更新下载到电子设备100。802处的“下载”可以包括从远程源(即,经由电子设备100的通信连接312通过网络)或从本地源(例如,可移动存储介质,例如具有存储由软件更新的光盘)下载软件更新。要意识到,在成功引导电子设备100之后,例如在使用图6的过程600和/或图7A和图7B的过程700和720成功引导电子设备100之后,可以在802处下载软件更新。以此方式,可以认为经授权用户已经例如通过提供密码短语“登录”到电子设备100。
在804处,可以执行一个或多个验证操作来验证软件更新安装在电子设备100上是否安全。如本文所述,由软件授权模块324实现的验证操作可以包括但不限于:经由电子设备的一个或多个输入设备308来接收接收有效的密码短语(例如,密码、个人标识号(PIN)等等)、接收确认(例如,用户输入选择电子设备100的触摸屏上的软按钮、用户输入按压物理按钮、经由麦克风接收的语音命令等等)、经由通信连接312在电子设备100处检测经授权的智能卡、接收管理员密码短语、经由通信连接312并通过计算机网络从远程服务器计算机请求验证软件更新尚未被标记在黑名单上或以其他方式被撤销等等。可以使用包括按压物理按钮的验证操作来确保物理地存在于电子设备100处的人(而不是机器人或远程定位的人类用户)正在授权软件更新。此外,与按钮按压一样简单的验证操作(例如,触摸电子设备100的触摸屏上的“OK”软按钮)对于授权软件更新可能是足够的,因为用户必须登录以按压“OK”,并且可以使用户输入密码短语以便登录。因此,在该场景中可以隐式地信任用户。
在806处,确定软件更新安装在电子设备100上是否安全。806处的确定可以部分地基于在804处执行的验证操作。例如,用户可以在804处输入密码短语,并且806处的确定可以包括确定密码短语是否与存储在电子设备100上的有效密码短语匹配。如果软件授权模块324在806处确定安装软件更新是不安全的(例如,输入不正确的密码短语、没有按压按钮等等),则过程800沿着“否”路线行进到808,在808处不利用软件更新来对电子设备100进行更新。
如果在806处确定软件更新是安全的(例如,如果接收到按钮按压、输入了正确的密码短语、检测到经授权的智能卡等等),则过程800遵循“是”路线到810,在810处计算新的代码测量(例如,新软件的元素的散列)。
在812处,创建新数据结构(或模块清单200),并将新代码测量写入新模块清单200的SMD字段202。在812处创建新模块清单200可以利用先前存留的模块清单200作为模板,其中先前存留的模块清单200的SMD字段202被新代码测量(例如,新的散列表)覆写。替代地,可以制作先前存留的模块清单200的副本并用于创建具有包含新代码测量的经更新的SMD字段202的新模块清单200,并且可以在创建新的模块清单200并存储在电子设备100上之后丢弃先前存留的模块清单200。
在814处,可以部分地基于来自先前存留的模块清单200的密封密钥102并且部分地基于在810处计算的新代码测量来生成新签名204。
在816处,可以使用在814处生成的新签名204来对新数据结构(或模块清单200)的至少一部分进行签名,并且在818处,可以将新数据结构(或模块清单200)存留在电子设备100的非易失性存储器中。
图9是示出了示例性证明技术的示意图。图9的证明技术允许电子设备100经由通信连接312与外部计算设备(例如,远程服务器)通信,并且供外部计算设备验证电子设备100“告诉”外部计算设备它正在运行的特定软件栈实际上正在电子设备100上运行。换句话说,证明技术是外部计算设备确认由电子设备100报告的软件栈是真实的一种方式。
图9示出了模块清单200还可以包括清单证明公钥900、清单证明私钥902和清单证明证书904,它们与前述随机种子108和SMD字段202结合使用以用于证明。这些模块清单200元素的创建可以如下完成。
电子设备100的RNG 316可以创建称为清单证明私钥902的随机化私钥。随后可以基于随机化清单证明私钥902来创建清单证明公钥900,以便获得公钥/私钥对。清单证明公钥900的生成可以使用椭圆曲线加密(ECC),如图9中所示出的。公共/私有证明密钥对900和902可以写入模块清单200的各个字段。注意,清单证明公钥900可以保持在模块清单200的公共部分中,而清单证明私钥902可以保持在模块清单200的私有部分中。
随后可以生成清单证明证书904,其中清单证明证书904的生成部分地基于清单证明公钥900并且部分地基于来自清单模块200的SMD字段202的代码测量(例如,散列),例如通过将来自SMD字段202的代码测量与清单证明公钥900连结。清单证明证书904还可以部分地基于随机种子108,如图9中通过将随机种子108与来自SMD字段202的代码测量和清单证明公钥900连结所示出的。清单证明证书904还可以部分地基于被称为设备证明私钥906的仅可用于电子设备100的引导加载程序322的机密,该设备证明私钥906用于对清单证明证书904进行签名。参考图1所示出和描述的相同或类似的二极管可视化内容112可以与电子设备100的内部机密110和标签116“设备证明私钥(DeviceAttestationPrivateKey)”一起使用,以使用密码原语(例如,HMAC算法)在电子设备100的引导时输出设备证明私钥906。利用设备证明私钥906对清单证明证书904的签名可以基于椭圆曲线数字签名算法(ECDSA),如图9中所描绘的。
由于清单证明证书904部分地基于清单证明公钥900,因此清单证明证书904可以向外部计算设备314传达清单证明公钥900是可信的。此外,由于清单证明证书904部分地基于来自模块清单200的SMD字段202的代码测量,因此清单证明证书904描述了在电子设备100上运行的软件栈并且可以将该信息传达给外部计算设备314。最后,由于清单证明证书904是利用设备证明私钥906(仅可用于电子设备100的引导加载器322的机密)来签名的,因此电子设备100可以向外部计算设备314证明它关于在电子设备100上运行的当前软件栈未说谎,因为外部计算设备314知道电子设备100的引导加载程序322获得了设备证明私钥906。注意,清单证明证书904可以保持在模块清单200的私有部分中,并且包含额外证明字段的模块清单200可以存留在电子设备100的非易失性存储器中。
考虑电子设备100成功引导、并且先前存留在电子设备100的存储器中的模块清单200保持可用(即,根据本文所描述的引导策略验证,模块清单200未被安全擦除)的用例。电子设备100的OS 320可以通过广域网将数据发送到相对于电子设备100位于远程的VPN服务器。电子设备100可以将清单证明证书904发送到VPN服务器,该VPN服务器充当引导加载程序322对来自OS 320的指定电子设备100正在运行特定软件栈(例如,特定OS 320版本)的声明进行签名的证明。为了证明来自OS 320的该声明是真实的,VPN服务器可以向电子设备100发送随机数,并且电子设备100可以经由通信连接312并由OS 320来接收该随机数。从VPN服务器接收到的随机数可以利用清单证明私钥902签名,并且经签名的随机数可以通过广域网发送回VPN服务器。VPN服务器可以验证清单证明私钥902是由引导加载程序322生成的,因为相应的清单证明公钥900是先前被发送到VPN服务器的清单证明证书904的一部分,并且VPN服务器知道清单证明证书904是由电子设备100的引导加载程序322签名的。
在一些配置中,VPN服务器可以验证设备证明私钥906是有效的,以便验证可信引导加载程序322实际生成了设备证明私钥906。在制造电子设备100时,可以向电子设备提供设备证明证书,该设备证明证书包含设备证明公钥,并且该设备证明证书可以利用全局有效密钥(例如,制造商的密钥、企业密钥等等)来签名。VPN服务器可以利用具有设备证明公钥的该证书来验证设备证明私钥906有效。以此方式,例如,企业可以允许其用户连接到VPN服务,并且在员工用户使用的电子设备100运行最新软件(例如,最新的OS 320版本)的情况下可以感到安全,并且电子设备100不能关于其正在运行的软件说谎,如果未检测到该说谎,则可以允许攻击者在无需证明的情况下利用VPN服务来发现机密。
图10是电子设备100与远程服务器314之间的示例性证明过程1000的流程图。参考先前的附图来描述过程1000。特别参考证明模块326。
在1002处,可以由电子设备100的RNG 316生成被称为“清单证明私钥902”的随机私钥。
在1004处,可以基于清单证明私钥902来生成清单证明公钥900。在1004处清单证明公钥900的生成可以利用ECC密钥生成技术。
在1006处,可以部分地基于清单证明公钥900并且部分地基于来自模块清单200的SMD字段202的代码测量来生成清单证明证书904,该SMD字段202描述了电子设备100上能够访问密封密钥102的当前软件栈。
在1008处,可以使用仅对电子设备100的引导加载程序322已知的设备证明私钥906来对清单证明证书904进行签名。例如,可以使用将内部机密110作为密钥的密码原语(例如,HMAC算法)来生成设备证明私钥906。
在1010处,可以将公共/私有证明密钥对900和902以及清单证明证书904写入模块清单200的各个字段。
在1012处,在与远程服务器314(例如,VPN服务器)的证明过程期间,电子设备100的证明模块326可以将清单证明证书904作为证明声明发送到远程服务器314。
在1014处,电子设备100可以从远程服务器314接收随机数。在1016处,证明模块326可以使用清单证明私钥902对从远程服务器314接收的随机数进行签名。在1018处,证明模块326可以将经签名的随机数发送回远程服务器314。
本文所描述的环境和各个元件当然可以包括许多其它的逻辑、可编程和物理组件,附图中所示出的那些仅是与本文的讨论相关的示例。
在给定的示例中,假定本文所描述的各种技术在计算机可执行指令或软件的上下文中实现,例如存储在计算机可读存储设备中并且可由一个或多个计算机或其它设备(例如附图中所示出的那些设备)的处理器执行的程序模块。通常,程序模块包括例程、程序、对象、组件、数据结构等等,并且定义用于执行特定任务的操作逻辑或实现特定抽象数据类型。
可以使用其它架构来实现所描述的功能,并且旨在落入本公开内容的范围内。此外,尽管上面出于讨论的目的定义了特定的责任分布,但取决于环境,各个功能和责任可以以不同方式来分布和划分。
类似地,软件可以以各种方式并使用不同单元来存储和分布,并且上面所描述的特定软件存储和执行配置可以以许多不同方式变化。因此,实现上面所描述的技术的软件可以分布在各种类型的计算机可读介质上,不限于专门描述的存储器形式。
示例一:一种方法,包括:发起针对电子设备的第一引导会话;使用所述电子设备的随机数生成器来生成随机种子;至少部分地基于所述随机种子和在所述电子设备内部并且对于所述电子设备是唯一的机密(例如,基于硬件的密钥,例如在制造芯片是被“烧录”到硬件芯片中的eFuse机密)来生成密封密钥;在生成所述密封密钥之后,针对所述第一引导会话的剩余部分并且直到发起第二引导会话为止禁用对所述机密的访问(例如,对寄存器进行置位以使得所述机密不可读);计算所述第一引导会话的多个引导阶段的代码测量(例如,散列表);至少部分地基于所述密封密钥和所述代码测量来生成签名;使用所述签名对数据结构的至少一部分进行签名,所述数据结构(例如,“模块清单”)包括所述代码测量、所述随机种子、所述签名、以及所述密封密钥;以及将所述数据结构存留在所述电子设备的非易失性存储器中。
示例二:根据示例一所述的方法,还包括:完成所述第一引导会话;关闭或重启所述电子设备;发起所述第二引导会话;启用对所述机密的访问;从所述数据结构读取所述随机种子;至少部分地基于所述随机种子和所述机密来重新生成所述密封密钥;在重新生成所述密封密钥之后,针对所述第二引导会话的剩余部分并且直到发起第三引导会话为止禁用对所述机密的访问;从所述数据结构读取所述代码测量;以及至少部分地基于在所述第二引导会话期间重新生成的所述密封密钥和在所述第二引导会话期间从所述数据结构读取的所述代码测量来生成预期签名。
示例三:根据前述示例中的任何示例单独地或组合地所述的方法,还包括:确定所述预期签名与所述数据结构中的所述签名不匹配;以及至少部分地基于确定所述预期签名与所述数据结构中的所述签名不匹配,将包括所述密封密钥的所述数据结构从所述电子设备的所述非易失性存储器中安全地擦除。
示例四:根据前述示例中的任何示例单独地或组合地所述的方法,其中,所述数据结构中的所述代码测量包括所述第一引导会话的第一引导阶段的第一散列和所述第一引导会话的第二引导阶段的第二散列,并且其中,所述第二引导会话被配置为加载所述第二引导会话的第一引导阶段和所述第二引导会话的第二引导阶段,所述方法还包括:确定所述预期签名与所述数据结构中的所述签名匹配;以及计算所述第二引导会话的第一引导阶段的第三散列;确定所述第三散列与所述数据结构中的所述第一散列匹配;将控制传递给所述第二引导会话的第二引导阶段;计算所述第二引导会话的第二引导阶段的第四散列;确定所述第四散列与所述数据结构中的所述第二散列不匹配;以及至少部分地基于确定所述第四散列与所述数据结构中的所述第二散列不匹配,将包括所述密封密钥的所述数据结构从所述电子设备的所述非易失性存储器中安全地擦除。
示例五:根据前述示例中的任何示例单独地或组合地所述的方法,其中,所述机密包括电子熔丝(eFuse)机密。
示例六:根据前述示例中的任何示例单独地或组合地所述的方法,还包括:将软件更新下载到所述电子设备;验证所述软件更新安装在所述电子设备上是安全的;计算与所述软件更新相关联的新代码测量;创建包括所述新代码测量的新数据结构;至少部分地基于所述密封密钥和所述新代码测量来生成新签名;使用所述新签名来对所述新数据结构的至少一部分进行签名;以及将所述新数据结构存留在所述电子设备的非易失性存储器中。
示例七:根据前述示例中的任何示例单独地或组合地所述的方法,其中,验证所述软件更新安装在所述电子设备上是安全的包括:执行验证操作,所述验证操作包括以下至少一项:在所述电子设备处接收用户输入,或者检测在所述电子设备处的经授权智能卡。
示例八:根据前述示例中的任何示例单独地或组合地所述的方法,其中,所述数据结构的利用所述签名来进行签名的所述部分至少包括所述扫描测量和所述随机种子。
示例九:根据前述示例中的任何示例单独地或组合地所述的方法,其中,所述数据结构的私有部分用于保持所述密封密钥,并且所述数据结构的公共部分用于保持所述代码测量、所述随机种子和所述签名。
示例十:根据前述示例中的任何示例单独地或组合地所述的方法,其中,至少部分地基于所述随机种子和所述机密来生成所述密封密钥是使用基于散列的消息认证码(HMAC)算法来执行的,其中,所述机密对应于所述HMAC算法的密钥,所述随机种子对应于所述HMAC算法的数据,并且所述密封密钥对应于所述HMAC算法的输出。
示例十一:一个或多个存储计算机可执行指令的计算机可读存储介质(例如,RAM。ROM、EEPROM、闪存等等),所述计算机可执行指令在由处理器(例如,中央处理单元(CPU)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、专用集成电路(ASIC)、片上系统(SoC)等等)执行时使得所述处理器进行以下操作:发起针对电子设备的第一引导会话;使用所述电子设备的随机数生成器来生成随机种子;至少部分地基于所述随机种子和在所述电子设备内部并且对于所述电子设备是唯一的机密(例如,基于硬件的密钥,例如在制造芯片是被“烧录”到硬件芯片中的eFuse机密)来生成密封密钥;在生成所述密封密钥之后,针对所述第一引导会话的剩余部分并且直到发起第二引导会话为止禁用对所述机密的访问(例如,对寄存器进行置位以使得所述机密不可读);计算所述第一引导会话的多个引导阶段的代码测量(例如,散列表);至少部分地基于所述密封密钥和所述代码测量来生成签名;使用所述签名对数据结构的至少一部分进行签名,所述数据结构(例如,“模块清单”)包括所述代码测量、所述随机种子、所述签名、以及所述密封密钥;以及将所述数据结构存留在所述电子设备的非易失性存储器中。
示例十二:根据示例十一所述的一个或多个计算机可读存储介质,其中,所述计算机可执行指令在由所述处理器执行时使得所述处理器进行以下操作:完成所述第一引导会话;关闭或重启所述电子设备;发起所述第二引导会话;启用对所述机密的访问;从所述数据结构读取所述随机种子;至少部分地基于所述随机种子和所述机密来重新生成所述密封密钥;在重新生成所述密封密钥之后,针对所述第二引导会话的剩余部分并且直到发起第三引导会话为止禁用对所述机密的访问;从所述数据结构读取所述代码测量;以及至少部分地基于在所述第二引导会话期间重新生成的所述密封密钥和在所述第二引导会话期间从所述数据结构读取的所述代码测量来生成预期签名。
示例十三:根据前述示例中的任何示例单独地或组合地所述的一个或多个计算机可读存储介质,其中,所述计算机可执行指令在由所述处理器执行时使得所述处理器进行以下操作:确定所述预期签名与所述数据结构中的所述签名不匹配;以及至少部分地基于确定所述预期签名与所述数据结构中的所述签名不匹配,将包括所述密封密钥的所述数据结构从所述电子设备的所述非易失性存储器中安全地擦除。
示例十四:根据前述示例中的任何示例单独地或组合地所述的一个或多个计算机可读存储介质,其中,所述数据结构中的所述代码测量包括所述第一引导会话的第一引导阶段的第一散列和所述第一引导会话的第二引导阶段的第二散列,并且其中,所述第二引导会话被配置为加载所述第二引导会话的第一引导阶段和所述第二引导会话的第二引导阶段,并且其中,所述计算机可执行指令在由所述处理器执行时使得所述处理器进行以下操作:确定所述预期签名与所述数据结构中的所述签名匹配;计算所述第二引导会话的第一引导阶段的第三散列;确定所述第三散列与所述数据结构中的所述第一散列匹配;将控制传递给所述第二引导会话的第二引导阶段;计算所述第二引导会话的第二引导阶段的第四散列;确定所述第四散列与所述数据结构中的所述第二散列不匹配;以及至少部分地基于确定所述第四散列与所述数据结构中的所述第二散列不匹配,将包括所述密封密钥的所述数据结构从所述电子设备的所述非易失性存储器中安全地擦除。
示例十五:根据前述示例中的任何示例单独地或组合地所述的一个或多个计算机可读存储介质,其中,所述机密包括电子熔丝(eFuse)机密。
示例十六:根据前述示例中的任何示例单独地或组合地所述的一个或多个计算机可读存储介质,其中,所述计算机可执行指令在由所述处理器执行时使得所述处理器进行以下操作:将软件更新下载到所述电子设备;验证所述软件更新安装在所述电子设备上是安全的;计算与所述软件更新相关联的新代码测量;创建包括所述新代码测量的新数据结构;至少部分地基于所述密封密钥和所述新代码测量来生成新签名;使用所述新签名来对所述新数据结构的至少一部分进行签名;以及将所述新数据结构存留在所述电子设备的非易失性存储器中。
示例十七:根据前述示例中的任何示例单独地或组合地所述的一个或多个计算机可读存储介质,其中,验证所述软件更新安装在所述电子设备上是安全的包括:执行验证操作,所述验证操作包括以下至少一项:在所述电子设备处接收用户输入,或者检测在所述电子设备处的经授权智能卡。
示例十八:根据前述示例中的任何示例单独地或组合地所述的一个或多个计算机可读存储介质,其中,所述数据结构的利用所述签名来进行签名的所述部分至少包括所述扫描测量和所述随机种子。
示例十九:根据前述示例中的任何示例单独地或组合地所述的一个或多个计算机可读存储介质,其中,所述数据结构的私有部分用于保持所述密封密钥,并且所述数据结构的公共部分用于保持所述代码测量、所述随机种子和所述签名。
示例二十:根据前述示例中的任何示例单独地或组合地所述的一个或多个计算机可读存储介质,其中,至少部分地基于所述随机种子和所述机密来生成所述密封密钥是使用基于散列的消息认证码(HMAC)算法来执行的,其中,所述机密对应于所述HMAC算法的密钥,所述随机种子对应于所述HMAC算法的数据,并且所述密封密钥对应于所述HMAC算法的输出。
示例二十一:一种电子设备,包括:一个或多个处理器(例如,中央处理单元(CPU)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、专用集成电路(ASIC)、片上系统(SoC)等等);随机数生成器;基于硬件的密钥(例如,在制造芯片时被“烧录”到硬件芯片中的eFuse机密),所述基于硬件的密钥在所述电子设备内部并且对于所述电子设备是唯一的;以及存储计算机可执行指令的存储器(例如,RAM、ROM、EEPROM、闪存等等),所述计算机可执行指令在由所述一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:发起针对所述电子设备的第一引导会话;使得所述随机数生成器生成随机种子;至少部分地基于所述随机种子和所述基于硬件的密钥来生成密封密钥;在生成所述密封密钥之后,针对所述第一引导会话的剩余部分并且直到发起第二引导会话为止禁用对所述基于硬件的密钥的访问(例如,对寄存器进行置位以使得所述基于硬件的密钥不可读);计算所述第一引导会话的第一引导阶段的第一散列和所述第一引导会话的第二引导阶段的第二散列;至少部分地基于所述密封密钥和所述第一散列以及所述第二散列来生成签名;使用所述签名对数据结构的至少一部分进行签名,所述数据结构包括所述第一散列、所述第二散列、所述随机种子、所述签名、以及所述密封密钥;以及将所述数据结构和所述密封密钥存留在所述电子设备的所述存储器中。
示例二十二:根据示例二十一所述的电子设备,其中,所述计算机可执行指令在由所述一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:完成所述第一引导会话;关闭或重启所述电子设备;发起所述第二引导会话;启用对所述基于硬件的密钥的访问;从所述数据结构读取所述随机种子;至少部分地基于所述随机种子和所述基于硬件的密钥来重新生成所述密封密钥;在重新生成所述密封密钥之后,针对所述第二引导会话的剩余部分并且直到发起第三引导会话为止禁用对所述基于硬件的密钥的访问;从所述数据结构读取所述第一散列和所述第二散列;以及至少部分地基于在所述第二引导会话期间重新生成的所述密封密钥和在所述第二引导会话期间从所述数据结构读取的所述第一散列和所述第二散列来生成预期签名。
示例二十三:根据前述示例中的任何示例单独地或组合地所述的电子设备,其中,所述第二引导会话被配置为加载所述第二引导会话的第一引导阶段和所述第二引导会话的第二引导阶段,并且其中,所述计算机可执行指令在由所述一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:确定所述预期签名与所述数据结构中的所述签名匹配;计算所述第二引导会话的第一引导阶段的第三散列;确定所述第三散列与所述数据结构中的所述第一散列匹配;将控制传递给所述第二引导会话的第二引导阶段;计算所述第二引导会话的第二引导阶段的第四散列;确定所述第四散列与所述数据结构中的所述第二散列不匹配;以及至少部分地基于确定所述第四散列与所述数据结构中的所述第二散列不匹配,将所述密封密钥从所述电子设备的所述存储器中安全地擦除。
示例二十四:根据前述示例中的任何示例单独地或组合地所述的电子设备,其中,所述计算机可执行指令在由所述一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:将软件更新下载到所述电子设备;验证所述软件更新安装在所述电子设备上是安全的;计算与所述软件更新相关联的新第一引导阶段的新第一散列和新第二引导阶段的新第二散列;创建包括所述新第一散列和所述新第二散列的新数据结构;至少部分地基于所述密封密钥和所述新第一散列以及所述新第二散列来生成新签名;使用所述新签名来对所述新数据结构的至少一部分进行签名;以及将所述新数据结构存留在所述电子设备的所述存储器中。
示例二十五:根据前述示例中的任何示例单独地或组合地所述的电子设备,其中,验证所述软件更新安装在所述电子设备上是安全的包括执行验证操作,所述验证操作包括以下至少一项:在所述电子设备处接收有效的密码短语,在所述电子设备处接收按钮按压,或者在所述电子设备处检测经授权的智能卡。
示例二十六:一种方法,包括:发起针对电子设备的第一引导会话;使用所述电子设备的随机数生成器来生成随机种子;至少部分地基于所述随机种子和在所述电子设备内部并且对于所述电子设备是唯一的机密(例如,基于硬件的密钥,例如在制造芯片是被“烧录”到硬件芯片中的eFuse机密)来生成密封密钥,在生成所述密封密钥之后,针对所述第一引导会话的剩余部分并且直到发起第二引导会话为止禁用对所述机密的访问(例如,对寄存器进行置位以使得所述机密不可读);计算所述第一引导会话的多个引导阶段的代码测量(例如,散列表);创建数据结构(例如,“模板模块清单”);向所述数据结构写入所述代码测量、所述随机种子和所述密封密钥;至少部分地基于所述密封密钥和所述代码测量来生成签名;将所述签名写入所述数据结构;使用所述签名来对数据结构的至少一部分进行签名以获得经签名的数据结构(例如,“模块清单”);以及将所述经签名的数据结构存留在所述电子设备的非易失性存储器中。
示例二十七:一个或多个存储计算机可执行指令的计算机可读存储介质(例如,RAM。ROM、EEPROM、闪存等等),所述计算机可执行指令在由处理器(例如,中央处理单元(CPU)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、专用集成电路(ASIC)、片上系统(SoC)等等)执行时使得所述处理器进行以下操作:发起针对电子设备的第一引导会话;使用所述电子设备的随机数生成器来生成随机种子;至少部分地基于所述随机种子和在所述电子设备内部并且对于所述电子设备是唯一的机密(例如,基于硬件的密钥,例如在制造芯片是被“烧录”到硬件芯片中的eFuse机密)来生成密封密钥;在生成所述密封密钥之后,针对所述第一引导会话的剩余部分并且直到发起第二引导会话为止禁用对所述机密的访问(例如,对寄存器进行置位以使得所述机密不可读);计算所述第一引导会话的多个引导阶段的代码测量(例如,散列表);创建数据结构(例如,“模板模块清单”);向所述数据结构写入所述代码测量、所述随机种子和所述密封密钥;至少部分地基于所述密封密钥和所述代码测量来生成签名;将所述签名写入所述数据结构;使用所述签名来对数据结构的至少一部分进行签名以获得经签名的数据结构(例如,“模块清单”);以及将所述经签名的数据结构存留在所述电子设备的非易失性存储器中。
示例二十八:一种电子设备,包括:用于执行计算机可执行指令的单元(例如,中央处理单元(CPU)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、专用集成电路(ASIC)、片上系统(SoC)等等);用于生成随机数的单元;用于唯一地标识所述电子设备的单元(例如,在制造芯片时被“烧录”到硬件芯片中的eFuse机密),所述用于唯一地标识所述电子设备的单元在所述电子设备内部;以及用于存储计算机可执行指令的单元(例如,RAM、ROM、EEPROM、闪存等等),所述计算机可执行指令在由所述用于执行计算机可执行指令的单元执行时使得所述用于执行计算机可执行指令的单元进行以下操作:发起针对所述电子设备的第一引导会话;使得所述用于生成所述随机数的单元生成随机种子;至少部分地基于所述随机种子和所述用于唯一地标识所述电子设备的单元来生成密封密钥;在生成所述密封密钥之后,针对所述第一引导会话的剩余部分并且直到发起第二引导会话为止禁用对所述用于唯一地标识所述电子设备的单元的访问(例如,对寄存器进行置位以使得所述基于硬件的密钥不可读);计算所述第一引导会话的第一引导阶段的第一散列和所述第一引导会话的第二引导阶段的第二散列;至少部分地基于所述密封密钥和所述第一散列以及所述第二散列来生成签名;使用所述签名对数据结构的至少一部分进行签名,所述数据结构包括所述第一散列、所述第二散列、所述随机种子、所述签名、以及所述密封密钥;以及将所述数据结构和所述密封密钥存留在所述用于存储所述计算机可执行指令的单元中。
结论
最后,虽然以特定于结构特征和/或方法动作的语言描述了各种配置,但要理解,所附表示中定义的主题内容并不一定限于所描述的特定特征或动作。相反,特定特征和动作被公开为实现所要求保护的主题内容的示例性形式。
Claims (15)
1.一种方法,包括:
发起针对电子设备的第一引导会话;
使用所述电子设备的随机数生成器来生成随机种子;
至少部分地基于所述随机种子以及在所述电子设备内部并且对于所述电子设备唯一的机密来生成密封密钥;
在生成所述密封密钥之后,针对所述第一引导会话的剩余部分并且直到发起第二引导会话为止禁用对所述机密的访问;
计算所述第一引导会话的多个引导阶段的代码测量;
至少部分地基于所述密封密钥和所述代码测量来生成签名;
使用所述签名对数据结构的至少一部分进行签名,所述数据结构包括所述代码测量、所述随机种子、所述签名、以及所述密封密钥;以及
将所述数据结构存留在所述电子设备的非易失性存储器中。
2.根据权利要求1所述的方法,还包括:
完成所述第一引导会话;
关闭或重启所述电子设备;
发起所述第二引导会话;
启用对所述机密的访问;
从所述数据结构读取所述随机种子;
至少部分地基于所述随机种子和所述机密来重新生成所述密封密钥;
在重新生成所述密封密钥之后,针对所述第二引导会话的剩余部分并且直到发起第三引导会话为止禁用对所述机密的访问;
从所述数据结构读取所述代码测量;以及
至少部分地基于在所述第二引导会话期间重新生成的所述密封密钥和在所述第二引导会话期间从所述数据结构读取的所述代码测量来生成预期签名。
3.根据权利要求2所述的方法,还包括:
确定所述预期签名与所述数据结构中的所述签名不匹配;以及
至少基于确定所述预期签名与所述数据结构中的所述签名不匹配,将包括所述密封密钥的所述数据结构从所述电子设备的所述非易失性存储器中安全地擦除。
4.根据权利要求2所述的方法,其中,所述数据结构中的所述代码测量包括所述第一引导会话的第一引导阶段的第一散列和所述第一引导会话的第二引导阶段的第二散列,并且其中,所述第二引导会话被配置为加载所述第二引导会话的第一引导阶段和所述第二引导会话的第二引导阶段,所述方法进一步包括:
确定所述预期签名与所述数据结构中的所述签名匹配;
计算所述第二引导会话的第一引导阶段的第三散列;
确定所述第三散列与所述数据结构中的所述第一散列匹配;
将控制传递给所述第二引导会话的第二引导阶段;
计算所述第二引导会话的第二引导阶段的第四散列;
确定所述第四散列与所述数据结构中的所述第二散列不匹配;以及
至少基于确定所述第四散列与所述数据结构中的所述第二散列不匹配,将包括所述密封密钥的所述数据结构从所述电子设备的所述非易失性存储器中安全地擦除。
5.根据权利要求1所述的方法,其中,所述机密包括电子熔丝(eFuse)机密。
6.根据权利要求1所述的方法,还包括:
将软件更新下载到所述电子设备;
验证所述软件更新安装在所述电子设备上是安全的;
计算与所述软件更新相关联的新代码测量;
创建包括所述新代码测量的新数据结构;
至少部分地基于所述密封密钥和所述新代码测量来生成新签名;
使用所述新签名来对所述新数据结构的至少一部分进行签名;以及
将所述新数据结构存留在所述电子设备的所述非易失性存储器中。
7.根据权利要求6所述的方法,其中,验证所述软件更新安装在所述电子设备上是安全的包括:执行验证操作,所述验证操作包括以下中的至少一项:在所述电子设备处接收用户输入,或者检测在所述电子设备处的经授权智能卡。
8.根据权利要求1所述的方法,其中,所述数据结构的利用所述签名来进行签名的所述部分至少包括所述代码测量和所述随机种子。
9.根据权利要求1所述的方法,其中,所述数据结构的私有部分用于保持所述密封密钥,并且所述数据结构的公共部分用于保持所述代码测量、所述随机种子和所述签名。
10.根据权利要求1所述的方法,其中,至少部分地基于所述随机种子和所述机密来生成所述密封密钥是使用基于散列的消息认证码(HMAC)算法来执行的,其中,所述机密对应于所述HMAC算法的密钥,所述随机种子对应于所述HMAC算法的数据,并且所述密封密钥对应于所述HMAC算法的输出。
11.一种电子设备,包括:
一个或多个处理器;
随机数生成器;
在所述电子设备内部并且对于所述电子设备是唯一的基于硬件的密钥;以及
存储计算机可执行指令的存储器,所述计算机可执行指令在由所述一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:
发起针对所述电子设备的第一引导会话;
使得所述随机数生成器生成随机种子;
至少部分地基于所述随机种子和所述基于硬件的密钥来生成密封密钥;
在生成所述密封密钥之后,针对所述第一引导会话的剩余部分并且直到发起第二引导会话为止禁用对所述基于硬件的密钥的访问;
计算所述第一引导会话的第一引导阶段的第一散列和所述第一引导会话的第二引导阶段的第二散列;
至少部分地基于所述密封密钥和所述第一散列以及所述第二散列来生成签名;
使用所述签名对数据结构的至少一部分进行签名,所述数据结构包括所述第一散列、所述第二散列、所述随机种子、以及所述签名;以及
将所述数据结构和所述密封密钥存留在所述电子设备的所述存储器中。
12.根据权利要求11所述的电子设备,其中,所述计算机可执行指令在由所述一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:
完成所述第一引导会话;
关闭或重启所述电子设备;
发起所述第二引导会话;
启用对所述基于硬件的密钥的访问;
从所述数据结构读取所述随机种子;
至少部分地基于所述随机种子和所述基于硬件的密钥来重新生成所述密封密钥;
在重新生成所述密封密钥之后,针对所述第二引导会话的剩余部分并且直到发起第三引导会话为止禁用对所述基于硬件的密钥的访问;
从所述数据结构读取所述第一散列和所述第二散列;以及
至少部分地基于在所述第二引导会话期间重新生成的所述密封密钥和在所述第二引导会话期间从所述数据结构读取的所述第一散列和所述第二散列来生成预期签名。
13.根据权利要求12所述的电子设备,其中,所述第二引导会话被配置为加载所述第二引导会话的第一引导阶段和所述第二引导会话的第二引导阶段,并且其中,所述计算机可执行指令在由所述一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:
确定所述预期签名与所述数据结构中的所述签名匹配;
计算所述第二引导会话的第一引导阶段的第三散列;
确定所述第三散列与所述数据结构中的所述第一散列匹配;
将控制传递给所述第二引导会话的第二引导阶段;
计算所述第二引导会话的第二引导阶段的第四散列;
确定所述第四散列与所述数据结构中的所述第二散列不匹配;以及
至少基于确定所述第四散列与所述数据结构中的所述第二散列不匹配,将所述密封密钥从所述电子设备的所述存储器中安全地擦除。
14.根据权利要求11所述的电子设备,其中,所述计算机可执行指令在由所述一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:
将软件更新下载到所述电子设备;
验证所述软件更新安装在所述电子设备上是安全的;
计算与所述软件更新相关联的新第一引导阶段的新第一散列和新第二引导阶段的新第二散列;
创建包括所述新第一散列和所述新第二散列的新数据结构;
至少部分地基于所述密封密钥和所述新第一散列以及所述新第二散列来生成新签名;
使用所述新签名来对所述新数据结构的至少一部分进行签名;以及
将所述新数据结构存留在所述电子设备的所述存储器中。
15.根据权利要求14所述的电子设备,其中,验证所述软件更新安装在所述电子设备上是安全的包括执行验证操作,所述验证操作包括以下中的至少一项:在所述电子设备处接收有效的密码短语,在所述电子设备处接收按钮按压,或者在所述电子设备处检测经授权的智能卡。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/158,401 | 2016-05-18 | ||
US15/158,401 US9916452B2 (en) | 2016-05-18 | 2016-05-18 | Self-contained cryptographic boot policy validation |
PCT/US2017/032305 WO2017200854A1 (en) | 2016-05-18 | 2017-05-12 | Self-contained cryptographic boot policy validation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109313690A true CN109313690A (zh) | 2019-02-05 |
CN109313690B CN109313690B (zh) | 2021-10-26 |
Family
ID=58745474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780030432.9A Active CN109313690B (zh) | 2016-05-18 | 2017-05-12 | 自包含的加密引导策略验证 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9916452B2 (zh) |
EP (1) | EP3458999B1 (zh) |
CN (1) | CN109313690B (zh) |
WO (1) | WO2017200854A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017039775A2 (en) * | 2015-06-11 | 2017-03-09 | PeerNova, Inc. | Making cryptographic claims about stored data using an anchoring system |
US10754956B2 (en) * | 2015-11-17 | 2020-08-25 | Andium Inc. | Security stack for embedded systems |
US11343352B1 (en) * | 2017-06-21 | 2022-05-24 | Amazon Technologies, Inc. | Customer-facing service for service coordination |
US10819696B2 (en) * | 2017-07-13 | 2020-10-27 | Microsoft Technology Licensing, Llc | Key attestation statement generation providing device anonymity |
US10447486B2 (en) * | 2017-07-19 | 2019-10-15 | Spyrus, Inc. | Remote attestation of a security module's assurance level |
US10985922B2 (en) * | 2017-09-29 | 2021-04-20 | Taiwan Semiconductor Manufacturing Co., Ltd. | Device with self-authentication |
CN111357003A (zh) * | 2018-01-29 | 2020-06-30 | 惠普发展公司,有限责任合伙企业 | 预操作系统环境中的数据保护 |
US11321466B2 (en) * | 2018-03-09 | 2022-05-03 | Qualcomm Incorporated | Integrated circuit data protection |
DE102018215011A1 (de) * | 2018-09-04 | 2020-03-05 | Audi Ag | Verfahren zum Installieren eines Programmcodepakets in ein Gerät sowie Gerät und Kraftfahrzeug |
WO2020159533A1 (en) * | 2019-02-01 | 2020-08-06 | Hewlett-Packard Development Company, L.P. | Security credential derivation |
DE102019127354A1 (de) * | 2019-10-10 | 2021-04-15 | Infineon Technologies Ag | Erstellen einer Signatur |
GB2588647B (en) * | 2019-10-30 | 2022-01-19 | Arm Ip Ltd | Attestation for constrained devices |
GB2588648B (en) * | 2019-10-30 | 2022-01-19 | Arm Ip Ltd | Iterative key generation for constrained devices |
KR20210097379A (ko) * | 2020-01-30 | 2021-08-09 | 삼성전자주식회사 | 보안 장치, 전자 장치, 보안 부트 관리 시스템, 부트 이미지 생성 방법 및 부트 체인 실행 방법 |
DE102020202879A1 (de) * | 2020-03-06 | 2021-09-09 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren und Vorrichtung zur Zertifizierung eines anwendungsspezifischen Schlüssels und zur Anforderung einer derartigen Zertifizierung |
US11941413B2 (en) | 2020-06-29 | 2024-03-26 | Amazon Technologies, Inc. | Managed control plane service |
US11948005B2 (en) | 2020-06-29 | 2024-04-02 | Amazon Technologies, Inc. | Managed integration of constituent services of multi-service applications |
US11593488B2 (en) * | 2020-10-28 | 2023-02-28 | Ares Technologies, Inc. | Systems and methods for a cryptographic agile bootloader for upgradable secure environment |
KR20220156329A (ko) * | 2021-05-18 | 2022-11-25 | 삼성전자주식회사 | 전자 장치 및 전자 장치에 보안 부팅을 적용하는 방법 |
US11861012B2 (en) * | 2021-07-01 | 2024-01-02 | Macronix International Co., Ltd. | Memory device having safety boot capability |
US20230034615A1 (en) * | 2021-07-30 | 2023-02-02 | Cisco Technology, Inc. | Configuration Payload Separation Policies |
US20230393835A1 (en) * | 2022-06-03 | 2023-12-07 | Apple Inc. | Patching code aligned with an executing base operating system |
US11921875B1 (en) * | 2023-08-31 | 2024-03-05 | Transparent Technologies, Inc. | Zero trust system and method for securing data |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105968A1 (en) * | 2001-11-30 | 2003-06-05 | International Business Machines Corporation | System and method for migration of a version of a bootable program |
CN1801091A (zh) * | 2005-01-07 | 2006-07-12 | 微软公司 | 用可信处理模块安全地引导计算机的系统和方法 |
US7120249B2 (en) * | 2001-01-16 | 2006-10-10 | Microsoft Corporation | Methods and systems for generating encryption keys using random bit generators |
US20110302638A1 (en) * | 2010-04-12 | 2011-12-08 | Interdigital Patent Holdings, Inc. | Staged Control Release In Boot Process |
US20120151199A1 (en) * | 2010-12-09 | 2012-06-14 | International Business Machines Corporation | Secure Encrypted Boot With Simplified Firmware Update |
US20120265998A1 (en) * | 2006-12-29 | 2012-10-18 | Kumar Mohan J | Methods And Apparatus For Authenticating Components Of Processing Systems |
US20140016776A1 (en) * | 2011-03-30 | 2014-01-16 | Arnoud Evert Van Foreest | Establishing unique key during chip manufacturing |
US20140281575A1 (en) * | 2013-03-15 | 2014-09-18 | Lenovo (Singapore) Pte, Ltd. | Pre-boot authentication using a cryptographic processor |
US20150200934A1 (en) * | 2010-06-30 | 2015-07-16 | Google Inc. | Computing device integrity verification |
EP2915088A1 (en) * | 2012-10-30 | 2015-09-09 | Barclays Bank PLC | Device and method for secure memory access |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5421006A (en) | 1992-05-07 | 1995-05-30 | Compaq Computer Corp. | Method and apparatus for assessing integrity of computer system software |
GB9626241D0 (en) | 1996-12-18 | 1997-02-05 | Ncr Int Inc | Secure data processing method and system |
US6370649B1 (en) | 1998-03-02 | 2002-04-09 | Compaq Computer Corporation | Computer access via a single-use password |
US7174457B1 (en) | 1999-03-10 | 2007-02-06 | Microsoft Corporation | System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party |
US6775779B1 (en) | 1999-04-06 | 2004-08-10 | Microsoft Corporation | Hierarchical trusted code for content protection in computers |
US7343493B2 (en) | 2002-03-28 | 2008-03-11 | Lenovo (Singapore) Pte. Ltd. | Encrypted file system using TCPA |
US6907522B2 (en) | 2002-06-07 | 2005-06-14 | Microsoft Corporation | Use of hashing in a secure boot loader |
DE602005021120D1 (de) * | 2005-10-28 | 2010-06-17 | Emma Mixed Signal Cv | Zugriffskontrolle auf eine Entschlüsselungstabelle von ASIC bzw. ASSP |
EP1845470B1 (en) | 2006-04-13 | 2016-11-09 | STMicroelectronics (Research & Development) Limited | Multiple purpose integrated circuit |
WO2008040377A1 (en) * | 2006-10-06 | 2008-04-10 | Agere Systems Inc. | Protecting secret information in a programmed electronic device |
US8254568B2 (en) | 2007-01-07 | 2012-08-28 | Apple Inc. | Secure booting a computing device |
US20090193211A1 (en) * | 2008-01-24 | 2009-07-30 | Broadcom Corporation | Software authentication for computer systems |
US7984286B2 (en) | 2008-06-25 | 2011-07-19 | Intel Corporation | Apparatus and method for secure boot environment |
EP3537653B1 (en) | 2009-12-04 | 2022-06-01 | Cryptography Research, Inc. | Verifiable, leak-resistant authentication |
US9058504B1 (en) | 2013-05-21 | 2015-06-16 | Malwarebytes Corporation | Anti-malware digital-signature verification |
CN104123505A (zh) | 2014-07-24 | 2014-10-29 | 丹阳市广播电视台 | Android智能设备防刷机系统及其校验方法 |
-
2016
- 2016-05-18 US US15/158,401 patent/US9916452B2/en active Active
-
2017
- 2017-05-12 WO PCT/US2017/032305 patent/WO2017200854A1/en unknown
- 2017-05-12 EP EP17725093.3A patent/EP3458999B1/en active Active
- 2017-05-12 CN CN201780030432.9A patent/CN109313690B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7120249B2 (en) * | 2001-01-16 | 2006-10-10 | Microsoft Corporation | Methods and systems for generating encryption keys using random bit generators |
US20030105968A1 (en) * | 2001-11-30 | 2003-06-05 | International Business Machines Corporation | System and method for migration of a version of a bootable program |
CN1801091A (zh) * | 2005-01-07 | 2006-07-12 | 微软公司 | 用可信处理模块安全地引导计算机的系统和方法 |
US20120265998A1 (en) * | 2006-12-29 | 2012-10-18 | Kumar Mohan J | Methods And Apparatus For Authenticating Components Of Processing Systems |
US20110302638A1 (en) * | 2010-04-12 | 2011-12-08 | Interdigital Patent Holdings, Inc. | Staged Control Release In Boot Process |
US20150200934A1 (en) * | 2010-06-30 | 2015-07-16 | Google Inc. | Computing device integrity verification |
US20120151199A1 (en) * | 2010-12-09 | 2012-06-14 | International Business Machines Corporation | Secure Encrypted Boot With Simplified Firmware Update |
US20140016776A1 (en) * | 2011-03-30 | 2014-01-16 | Arnoud Evert Van Foreest | Establishing unique key during chip manufacturing |
EP2915088A1 (en) * | 2012-10-30 | 2015-09-09 | Barclays Bank PLC | Device and method for secure memory access |
US20140281575A1 (en) * | 2013-03-15 | 2014-09-18 | Lenovo (Singapore) Pte, Ltd. | Pre-boot authentication using a cryptographic processor |
Also Published As
Publication number | Publication date |
---|---|
US9916452B2 (en) | 2018-03-13 |
EP3458999A1 (en) | 2019-03-27 |
US20170337380A1 (en) | 2017-11-23 |
EP3458999B1 (en) | 2020-03-04 |
WO2017200854A1 (en) | 2017-11-23 |
CN109313690B (zh) | 2021-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109313690A (zh) | 自包含的加密引导策略验证 | |
US11870915B2 (en) | Unified programming environment for programmable devices | |
US10496811B2 (en) | Counterfeit prevention | |
TWI744373B (zh) | 使用安全演算法嵌入基礎性的信任根 | |
US11843705B2 (en) | Dynamic certificate management as part of a distributed authentication system | |
US10587451B2 (en) | Device programming with system generation | |
KR102217941B1 (ko) | 타깃이 되는 컴퓨팅 디바이스 상에서 수행될 동작을 인가하는 방법 | |
US20190050598A1 (en) | Secure data storage | |
CN102456111B (zh) | 一种Linux操作系统许可控制的方法及系统 | |
Nyman et al. | Citizen electronic identities using TPM 2.0 | |
US9177123B1 (en) | Detecting illegitimate code generators | |
JP2024507531A (ja) | デジタルデバイスのためのトラステッドコンピューティング | |
Holoubková | Rešerše a ukázka zabezpečení platformy (TPM) |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |