CN108140093B - 使用用于设备的硬件信任根来迁移秘密 - Google Patents
使用用于设备的硬件信任根来迁移秘密 Download PDFInfo
- Publication number
- CN108140093B CN108140093B CN201680059915.7A CN201680059915A CN108140093B CN 108140093 B CN108140093 B CN 108140093B CN 201680059915 A CN201680059915 A CN 201680059915A CN 108140093 B CN108140093 B CN 108140093B
- Authority
- CN
- China
- Prior art keywords
- software
- key
- sealing
- attestation
- secret
- 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.)
- Active
Links
Images
Classifications
-
- 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/002—Countermeasures against attacks on cryptographic mechanisms
-
- 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
- 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
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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
-
- 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/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Mobile Radio Communication Systems (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
一种系统和方法,促进提供具有各种安全能力的电子设备的核心可信计算基础(TCB)的框架的。该框架可以包括低资源设备和至少一个分布式资源。低资源设备可以被配置为基于与低资源设备和一个或多个软件模块相关联的设备秘密来生成密封密钥、迁移密钥和证明密钥。低资源设备还可以被配置为使用迁移密钥和密封密钥来验证软件更新并且从软件的先前版本向软件的更加新版本迁移秘密。附加地,低资源设备可以被配置为使用证明密钥来生成证明语句,并且使用证明语句和至少一个分布式资源来执行证明。
Description
背景技术
物联网(IoT)是嵌入有软件和连接的低资源电子设备的网络,其使得IoT设备能够经由一个或多个网络与其他电子设备(例如,其他IoT设备和更传统的计算设备)通信。由于使用网络与其他电子设备通信,这些IoT设备容易受到恶意软件的攻击,这可能会破坏计算操作并且收集来自IoT设备的敏感信息。因此,为了保护IoT设备免受攻击,需要更强大的安全功能。由于很多IoT设备包括的有限的资源,因此在IoT设备上实现强大的安全性可能很困难。
发明内容
本文中讨论的技术和构造促进了一种使用最小的一组硬件资源来提供核心可信计算基础(TCB)的框架。本发明特别适合于具有有限安全能力的低资源电子设备(例如,IoT设备),但是也适用于包含可重新配置程序的硬件。该框架构成设备的TCB的基础,并且利用用于测量的资源受限的信任根来提供可信平台的所有能力。这些能力包括但不限于用于存储的信任根(例如,为TCB组件提供秘密密封能力)和用于更新的信任根(例如,确保设备的已更新组件满足当前政策集)。此外,该框架可以支持具有设备与之通信以用于以安全的方式执行安全远程证明和/或更新设备组件的外部基础设施。该框架可以允许设备使用受该框架保护以避免外部攻击的安全通信来与外部基础设施通信。
提供本发明内容是为了以简化的形式介绍将在以下具体实施方式中被进一步描述的对概念的选择。本发明内容并非旨在确定所要求保护的主题的关键或基本特征,也不旨在用作确定所要求保护的主题的范围的辅助手段。例如,术语“技术”可以是指在以上描述的上下文中和遍布本文档所允许的(一种或多种)系统、(一种或多种)方法、计算机可读指令、(一种或多种)模块、算法、硬件逻辑和/或(一种或多种)操作。
附图说明
参考附图描述详细描述。在这些图中,附图标记的(一个或多个)最左边的数字表示附图标记首次出现的图。不同图中的相同附图标记表示相似或相同的项目。
图1是描绘资源受限的可信设备的示例可以在其中操作的示例环境的框图。
图2是描绘分布式计算资源在其中与设备通信以实现鲁棒安全基础加密钥架构的示例环境的框图。
图3是描绘图2的更新(一个或多个)计算资源的示例更新计算设备的框图。
图4是描绘图2的(一个或多个)证明计算资源的示例证明计算设备的框图。
图5是描绘示例计算设备的框图。
图6描绘了设备产生设备用于执行安全操作的密码学上唯一秘密和值的示例过程。
图7描绘了用于生成密封密钥的示例过程。
图8描绘了用于生成证明密钥的示例过程。
图9描绘了示出非对称设备可以在其中操作的示例环境的框图。
图10描绘了示出对称设备可以在其中操作的示例环境的框图。
图11是用于执行引导序列的说明性过程的流程图。
图12是用于生成证明秘密并且在证明设备期间使用证明秘密的说明性过程的流程图。
图13是用于使用证明来验证设备的更新的示例说明性过程的流程图。
图14是用于使用证明身份密钥和证明证书来验证设备的一个或多个软件模块的示例说明性过程的流程图。
图15是用于向设备提供证明身份密钥和证明证书的示例说明性过程的流程图。
图16是用于将秘密从软件模块的先前版本迁移到软件模块的更加新版本的说明性过程的流程图。
图17是用于使用一个或多个软件模块来授权软件更新的说明性过程的流程图。
具体实施方式
概述
本文中描述的示例提供了用于促进一种提供具有各种硬件安全能力的电子设备的核心TCB的框架的技术和构造。该框架通过控制设备的TCB的引导以及为TCB组件提供证明和密封能力而起作用,这两者都可以被植入到设备硬件中,而只需要很少的硬件资源。该框架还可以通过实现用于保护已更新软件模块的秘密的协议来调和设备的软件更新过程。该协议通过以安全的方式从软件模块的先前版本向软件模块的更加新版本安全地迁移秘密来保护软件模块的秘密。在一些示例中,软件模块可以包括作为单个可执行映像或具有相同信任属性的一组可执行映像的设备的TCB的组件。
如本文中描述的框架提供了相对于使用基于硬件的信任根来建立设备的TCB的先前技术的改进。例如,先前用于建立设备的TCB的技术(诸如可信平台模块(TPM)和可信执行环境(TEE)技术)需要复杂的代码体,其大小范围为数百千字节。因此,包括有限存储器存储的设备(诸如IoT设备)不能存储用于实现这些先前技术的代码。与先前的技术相比,本文中描述的框架可以在二十千字节的代码中被实现,这可以使其适用于资源极其有限的网络连接的设备。此外,基于框架如何实现安全措施,框架可以为这些设备提供更快的引导能力。
此外,该框架提供了恢复受损TCB(例如,固件TPM)而不丢失设备的身份的能力。该框架通过使用可以被替换的证明秘密值表示设备的身份来提供这种改进。例如,当缺乏抵抗的代码(compromised code)被更新为新版本的软件时,可以替换证明秘密值。
为了使得设备能够使用本文中描述的框架来实现其信任根,供应商(和/或其他实体)可以使用设备秘密对设备编程。设备秘密可以包括在供应商初始对设备秘密编程之后在设备外部未知的统计学上唯一的值。在一些示例中,供应商可以通过将设备秘密存储在设备上的非易失性一次写入存储器中来使用设备秘密对设备编程。例如,供应商可以通过将设备秘密存储在设备上的eFuse中来使用设备秘密对设备编程。因此,在一些示例中,设备秘密仅在加电事件期间可访问,并且被不可逆地停用,直到下一加电事件。
该设备可以使用设备秘密来生成熔丝得出秘密(FDS)值。该设备可以使用FDS值来得出设备在设备的常规引导周期和更新引导周期期间使用的所有密码学上唯一的秘密和值。在一些示例中,该设备可以通过将设备的不可变代码的散列到设备秘密的串联散列化来生成FDS值。不可变代码可以包括被存储在设备上的策略检查代码,在设备运行任何软件模块之前,设备根据由框架定义的策略来检查该策略检查代码。例如,不可变代码可以包括物理ROM代码和非ROM框架代码,它们的测量可以定义FDS。这样,在一些示例中,不可变代码被存储在设备的计算机可读介质中。例如,设备可以将不可变代码存储在设备上的ROM中。附加地或备选地,该设备可以将一部分不可变代码存储在设备上的ROM中,并且将另一部分不可变代码存储在设备上的闪存或其他非易失性(NV)存储器中。
在常规引导周期中,该设备可以执行一系列引导操作,以便验证设备上的TCB引导链且生成用于软件模块的密封密钥。另外,在一些示例中,该设备可以进一步生成用于软件模块证明密钥。例如,为了验证TCB引导链,该设备可以运行验证协议,验证协议确定引导链中的一个或多个软件模块是否满足一组策略要求。为了运行验证协议,该设备可以执行隐私密钥得出链(privacy key derivation chain)。隐私密钥得出链可以生成用于链中的每个软件模块的密封密钥。隐私密钥得出链可以开始于设备使用设备的FDS值来生成密封种子。为了生成密封种子,该设备可以将设备密封常数到FDS值的串联散列化。在一些示例中,设备密封常数可以包括仅由设备知道的专用二进制值。在一些示例中,设备密封常数可以包括在设备外部已知的公开二进制值。然后,该设备可以使用密封种子来生成用于每个软件模块的密封密钥。
例如,为了生成密封密钥,该设备可以执行一系列密码函数,其包括用于引导链中的每个软件模块的至少一个密码函数。例如,为了执行引导链中的第一软件模块的密码函数,不可变代码对该设备编程以访问定义软件模块的身份的第一软件模块的软件模块描述符(SMD)。该设备可以将SMD存储在该设备的计算机可读介质中,诸如在设备的NV存储器中。然后,该设备(和/或该框架)可以执行第一密钥得出函数(KDF)以使用FDS值来从第一软件模块的SMD的散列生成第一密封密钥。第一密封密钥可以专用于第一软件模块,并且因此第一软件模块可以使用第一密封密钥来访问和锁定其秘密。例如,在一些示例中,第一软件模块可以使用第一密封密钥来生成一个或多个加密密钥。然后,第一软件模块可以使用一个或多个加密密钥来对其秘密加密/解密。
在第一软件模块对其秘密加密之后,该设备和/或第一软件模块确定是否继续剩余软件模块的引导链序列,这在下面被描述。为了继续引导链,该设备和/或第一软件模块使用第一密封密钥、以使用与上面针对第一软件模块所讨论的步骤类似的步骤来生成用于第二软件模块的密封密钥。例如,不可变代码可以对该设备编程以访问第二软件模块的SMD。然后,该设备可以执行第二KDF以使用第一密封密钥来从第二软件模块的SMD的散列生成第二密封密钥。然后,第二软件模块可以使用第二密封密钥来生成一个或多个加密密钥,并且使用它们来锁定其秘密。在锁定第二软件模块的秘密之后,该设备和/或该框架可以针对引导链中的下一软件模块重复上述的密钥得出过程。
该设备继续以使用以上步骤来生成用于引导链中的每个剩余软件模块的密封密钥。在引导链完成之后,引导链中每个软件模块的秘密被锁定,并且从而被保护免受恶意代码的攻击。另外,为了确保秘密保持锁定,该设备和/或软件模块可以删除密封密钥和/或加密密钥。例如,该设备和/或第一软件模块可以在将控制传递到第二软件模块之前删除第一密封密钥和加密密钥。这确保了第一软件模块的秘密是安全的,即使引导链中的另一软件模块受到损害。
在该设备的正常引导周期中,该设备可以进一步执行类似的一系列步骤以便生成证明密钥,证明密钥由该设备使用用于证明。为了生成证明密钥,该设备可以从获取加密的证明种子,更新机构(authority)可以由该设备存储在该设备的计算机可读介质(例如,NV存储器)中。然后,该设备可以通过使用该设备的内部保护器密钥对加密的证明种子解密来恢复证明种子,内部保护器密钥也可以由该设备使用FDS值生成。例如,该设备可以通过将设备隐私常数到FDS值的串联散列化来生成内部保护器密钥。设备隐私常数可以包括特定于该设备的唯一二进制值。因此,与该设备的FDS值一样,内部保护器密钥也是特定于该设备的。
在使用内部保护器密钥对加密的证明种子解密之后,该设备可以通过变形(morph)每个软件模块的证明密钥来生成证明密钥链。例如,类似于生成上述密封密钥,该设备可以为每个软件模块执行相应的KDF,以便使用先前的软件模块的证明密钥来从相应软件模块的SMD生成用于相应软件模块的证明密钥。在引导链的末尾,该设备可以使用最后的证明密钥(即,证明秘密)来执行证明或注册证明身份密钥。例如,该设备可以使用证明秘密来对证明语句签名,证明语句包括设备公钥或加密到设备公钥的证明秘密。证明语句可以被发送给证明机构。然后,证明机构可以在证明语句上验证签名,并且因此间接地验证由设备引导的软件模块的有效性,因为设备可以当且仅当其所有软件模块有效(未被破坏)时恢复有效的签名密钥。
在一些示例中,更新证明机构可以生成被称为证明身份密钥的密钥对以及用于该设备的证明种子。然后,更新机构可以与证明机构一起证实密钥对,并且基于密钥对的证实来接收证明证书。然后,更新机构可以使用所生成的证明秘密来对证明身份密钥和证明证书加密,证明秘密可以由更新机构使用与上述设备类似的步骤来生成。在对证明身份密钥和证明证书加密之后,更新机构可以将加密的证明身份密钥和证明证书发送到该设备,并且该设备可以使用加密的证明身份密钥和证明证书来验证软件更新。
例如,该设备可以在生成证明秘密之后对加密的证明身份密钥和证明证书解密。在一些示例中,然后,该设备可以使用最后的软件模块(产生证明秘密的软件模块)的密封密钥来对证明身份密钥重新加密。然后,该设备可以使用证明身份密钥和证明证书来证明软件更新。例如,只有包括正确设备公共身份的设备才能生成可以对加密的证明身份密钥和证明认证解密的证明秘密。然后,该设备可以将证明证书存储在该设备的计算机可读介质(例如,NV存储器)中,并且使用证明证书来执行证明。在一些示例中,该设备首先在将证明证书存储在计算机可读介质中之前,使用密封密钥来对证明证书加密。
应当注意,在该设备使用更新机构更新软件模块之后,该设备可以从更新机构接收证明种子和/或加密的证明身份密钥和证明证书。在一些示例中,当该设备实现非对称密码术时,更新机构可以将证明种子加密到设备公钥,并且将被加密到设备公钥的证明种子发送到该设备。然后,该设备可以使用设备私钥来对被加密成设备公钥的证明种子解密。在一些示例中,然后,该设备可以使用内部保护器密钥来对证明种子重新加密,并且将加密的证明种子存储在计算机可读介质中。在一些示例中,当该设备包括对称设备时,更新机构可以将证明种子加密到内部保护器密钥并且将加密的证明种子发送到该设备。然后,该设备可以将加密的证明种子存储在该设备的计算机存储介质中。但是,在一些示例中,当该设备接收到加密的证明身份密钥和证明证书时,该设备可以在对证明身份密钥和证明证书解密之后删除证明种子。
为了验证软件模块的引导序列,该设备可以使用密封密钥和/或证明密钥对每个软件模块执行完整性检查。例如,该设备可以使用软件模块的SMD上的基于散列的消息认证码(HMAC)签名来保护软件模块的完整性。该设备可以使用引导链中前一软件模块的密封密钥和/或证明密钥来检查软件模块的HMAC签名。如果软件模块的SMD上的HMAC签名是正确的,则软件模块被验证并且软件模块的引导序列如上所述继续。但是,如果软件模块的SMD上的HMAC签名不正确,则该设备或软件模块可能会停止引导序列。然后,该设备可以执行修复过程以将该设备的TCB返回到可信状态。
在一些示例中,软件模块的SMD上的HMAC签名可以是特定于该设备的。例如,在该设备更新软件模块之后,该设备可以通过检查软件模块的SMD上的签名来验证软件模块。在一些示例中,签名包括椭圆曲线密码签名。在验证软件模块之后,该设备可以使用设备特定的签名密钥(HMAC签名)对软件模块签名。然后,该设备可以使用上述的类似方法在引导链期间使用密封密钥和/或证明密钥来检查每个软件模块上的设备特定的HMAC签名。
除了验证该设备上的TCB引导链之外,该设备还可以使用该框架来执行安全更新引导序列,安全更新引导序列由该框架使用以确保设备上的已更新软件模块满足当前的一组策略。例如,该设备可以从更新机构下载一个或多个软件模块更新,其可以包括对设备的TCB组件的更新。在下载软件模块更新之后,该设备可以执行安全更新引导序列以确保该设备在更新过程中没有下载任何未经授权的软件(例如,恶意代码)。在一些示例中,该设备可以在更新软件模块之后在该设备的下一引导过程期间执行安全更新引导序列。
为了执行安全引导序列,该设备基于已更新软件模块来生成密封密钥和证明密钥。例如,类似于上述用于生成密封密钥和证明密钥的方法,该设备可以使用软件模块的已更新版本的SMD来生成已更新密封密钥和已更新证明密钥。然后,该设备可以使用新的密封密钥和/或新的证明密钥来验证软件模块的已更新版本。
在更新该设备上的一个或多个软件模块之后,该设备可以进一步使用迁移密钥和新的密封密钥来从一个或多个软件模块的先前版本向一个或多个软件模块的新版本迁移秘密。例如,在该设备接收到对一个或多个软件模块的更新之后,该设备可以生成用于一个或多个已更新软件模块的迁移密钥和新的密封密钥。该设备可以使用软件模块的先前版本的SMD来生成迁移密钥,迁移密钥与上述由该设备在常规引导序列期间生成的密钥相似,并且该设备可以使用软件模块的新版本的SMD来生成新的密封密钥。然后,该设备可以使用迁移密钥来从软件模块的先前版本访问秘密,并且然后使用新的密封密钥在软件模块的新版本中重新密封秘密。这样,每当该设备对软件模块执行软件更新时,该设备能够将软件模块的秘密从软件模块的先前版本传递到软件模块的新版本。
另外,第三方设备和/或服务可以使用证明来验证该设备。在一些示例中,为了验证该设备,该设备可以向第三方发送经签名的证明语句(使用证明秘密生成的)以及由证明机构发出的证明证书,并且第三方可以使用经签名的证明语句和证明证书来验证该设备。在一些示例中,该设备可以将证明语句与设备公钥一起发送到第三方。然后,第三方可以将证明语句和设备公钥发送到证明机构用于验证。
参考图1至17进一步描述各种示例、场景和方面。
说明性环境
图1示出了设备的硬件信任根可以在其中操作的示例环境100。在一些示例中,环境100的各种设备和/或组件包括可以彼此通信并且经由一个或多个网络104与外部设备通信的(一个或多个)分布式计算资源102。
例如,(一个或多个)网络104可以包括诸如因特网等公共网络、诸如机构和/或个人内部网等专用网络、或者专用网络和公共网络的某种组合。(一个或多个)网络104还可以包括任何类型的有线和/或无线网络,包括但不限于局域网(LAN)、广域网(WAN)、卫星网络、有线网络、Wi-Fi网络、WiMax网络、移动通信网络(例如,3G、4G等)或其任何组合。(一个或多个)网络104可以利用通信协议,包括基于分组和/或基于数据报的协议,诸如互联网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)或其他类型的协议。此外,(一个或多个)网络104还可以包括促进网络通信和/或形成网络的硬件基础的多个设备,诸如交换机、路由器、网关、接入点、防火墙、基站、中继器、骨干设备等。
在一些示例中,(一个或多个)网络104还可以包括实现到无线网络的连接的设备,诸如无线接入点(WAP)。例如,支持通过在各种电磁频率(例如,无线电频率)上发送和接收数据的WAP的连接性,包括支持电气和电子工程师协会(IEEE)802.11标准(例如,802.11g、802.11n等)和其他标准的WAP。
在各种示例中,分布式计算资源102包括设备106(1)至106(N)。示例支持场景,其中(一个或多个)设备106可以包括以群集或其他分组配置操作以共享资源、平衡负载、提高性能、提供故障转移支持或冗余、或者用于其他目的的一个或多个计算设备。(一个或多个)设备106可以属于各种类别或种类的设备,诸如传统的服务器型设备、台式计算机型设备、移动设备、专用型设备、嵌入型设备和/或可穿戴型设备。因此,虽然被示出为台式计算机,但是(一个或多个)设备106可以包括各种设备类型,并且不限于特定类型的设备。(一个或多个)设备106可以表示但不限于台式计算机、服务器计算机、网络服务器计算机、个人计算机、移动计算机、膝上型计算机、平板电脑、瘦客户机、终端、工作站、用于包括在计算设备上的集成组件、或任何其他类型的计算设备。
(一个或多个)设备106可以包括具有诸如经由总线112可操作地连接到计算机可读介质110的一个或多个处理单元108的任何类型的计算设备,总线112在一些情况下可以包括以下中的一个或多个:系统总线、数据总线、地址总线、PCI总线、Mini-PCI总线、以及任何各种本地、外围设备和/或独立总线。存储在计算机可读介质110上的可执行指令可以包括例如操作系统114、鲁棒的安全基础加密钥工具116、以及由(一个或多个)处理单元108可加载和可执行的其他模块、程序或应用。替代地或另外地,本文中描述的功能可以至少部分由诸如加速器等一个或多个硬件逻辑组件来执行。例如而非限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。例如,加速器可以表示混合设备,例如来自XILINX或ALTERA的混合设备,其包括嵌入FPGA架构中的CPU过程。
(一个或多个)设备106还可以包括用于通过网络104来实现(一个或多个)计算设备106与其他联网设备(诸如低资源设备的硬件信任根中所涉及的(一个或多个)客户端计算设备120、或其他设备)之间的通信的一个或多个网络接口118。对于低资源设备或(一个或多个)网络104上的其他设备的信任。这样的(一个或多个)网络接口118可以包括一个或多个网络接口控制器(NIC)或其他类型的收发器设备以通过网络发送和接收通信。为了简单起见,其他组件从所示的(一个或多个)设备106省略。
设备的硬件信任根中所涉及的其他设备可以包括客户端计算设备120(1)至120(N)。(一个或多个)设备120可以属于各种类别或种类的设备,诸如传统的客户端型设备、台式计算机型设备、移动设备、专用型设备、嵌入型设备、物联网(IoT)设备和/或可穿戴型设备。作为示例而非限制,(一个或多个)计算设备120可以包括但不限于服务器计算机或刀片服务器(诸如网络服务器、地图/减少服务器或其他计算引擎、或者网络附加存储单元)、膝上型计算机、瘦客户机、终端或其他移动计算机(例如,120(1))、计算机导航客户端计算设备、包括全球定位系统(GPS)设备和其他基于卫星的导航系统设备的基于卫星的导航系统设备、个人数据助理(PDA)、以及其他专用便携式电子设备、平板电脑或平板混合电脑(例如,120(2))、智能手机、移动电话、移动电话平板电脑混合设备、或其他电信设备(例如,120(3))、基于便携式或基于控制台的游戏设备或其他娱乐设备(诸如网络使能电视、机顶盒、媒体播放器、相机或个人录像机(PVR))(例如,以图形方式被表示为游戏手柄的120(4)))、汽车计算机(诸如车辆控制系统、车辆安全系统或车辆电子钥匙)(例如,以图形方式被表示为汽车的120(5))、诸如智能手表或生物计量或医疗传感器等可穿戴计算机、诸如生物计量或医疗传感器等植入计算设备、或者被配置为监测世界或其中的结构或设备(例如,桥或水坝)的时间、环境条件、振动、运动或其他属性的固定传感器(诸如IoT传感器)(例如,以图形方式被表示为时钟的120(N))、台式计算机、或者用于被包括在计算设备、电器或其他(一个或多个)计算设备中的集成组件。
(一个或多个)客户端计算设备120可以表示具有诸如经由总线126可操作地连接到计算机可读介质124的一个或多个处理单元122的任何类型的计算设备,总线126在一些情况下可以包括以下中的一个或多个:系统总线、数据总线、地址总线、PCI总线、Mini-PCI总线、以及任何各种本地、外围设备和/或独立总线。
存储在计算机可读介质124上的可执行指令可以包括例如操作系统128、鲁棒安全基础框架130、以及由(一个或多个)处理单元122可加载和可执行的其他模块、程序或应用。替代地或另外地,本文中描述的功能可以至少部分由诸如加速器等一个或多个硬件逻辑组件来执行。例如而非限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。例如,加速器可以表示混合设备,例如来自XILINX或ALTERA的混合设备,其包括嵌入FPGA架构中的CPU过程。
在一些示例中,计算机可读介质124和操作系统128可以专门被设计用于低资源和/或极低资源设备。例如,可以包括诸如车辆控制系统、车辆安全系统或车辆的电子钥匙等汽车计算机的计算设备102(5)以及可以包括IoT设备的计算设备105(N)可以包括具有有限的硬件能力的低资源设备。在一些示例中,对于这样的低资源设备,操作系统128可以包括仅需要116至1024兆字节的内部存储器和4至160千字节的静态RAM存储器来操作的操作系统。在一些示例中,操作系统128可以包括需要更多或更少存储器来操作的操作系统。
(一个或多个)设备120还可以包括鲁棒安全基础框架132,该(一个或多个)设备120可以用来执行本文中描述的一些和/或所有安全操作。例如,(一个或多个)设备120可以使用鲁棒安全基础框架132来执行秘密的证明和密封两者。附加地,(一个或多个)设备120可以使用鲁棒安全基础框架132以通过验证更新软件模块的有效性并且实现用于从较旧版本的软件组件到更加新版本的软件组件的秘密迁移的协议来调解软件更新过程。
(一个或多个)设备120还可以包括用于通过(一个或多个)网络104来实现(一个或多个)设备120与其他联网设备(诸如(一个或多个)其他设备120或(一个或多个)设备106)之间的通信的一个或多个网络接口134。这样的(一个或多个)网络接口134可以包括一个或多个网络接口控制器(NIC)或其他类型的收发器设备以通过网络发送和接收通信。
图2是描绘(一个或多个)分布式计算资源202在其中与设备204通信以实现鲁棒安全基础框架的示例环境200的框图。在一些示例中,与设备204通信的(一个或多个)分布式计算资源202可以分别表示与来自图1的(一个或多个)设备120之一通信的(一个或多个)分布式计算资源102。在图2的示例环境200中,环境200中示出的资源可以表示向设备204提供鲁棒安全基础加密钥架构的框架。
如图2所示,工厂环境206包括向设备204提供不可变代码210和设备秘密212的设备供应商208。设备供应商208可以包括通过在设备204上安装不可变代码210和设备秘密212中的至少一个来建立用于设备204的身份的实体。例如,设备供应商208可以包括设备204的制造商和/或设备204的一个或多个部件(例如,硬件或软件)的制造商。不可变代码210可以包括设备204上的物理ROM代码或非ROM框架代码中的一个或多个。设备秘密212可以包括在设备供应商208初始使用设备秘密212对设备204编程之后在设备204外部未知的统计学上唯一的值。例如,设备秘密212可以包括设备供应商208诸如通过在设备204上喷出(blow)eFuse来在设备204上编程的硬件秘密。
也在图2的示例环境200中示出了,可以表示来自图1的(一个或多个)分布式计算资源102的(一个或多个)分布式计算资源202可以包括(一个或多个)身份计算资源214、(一个或多个)更新计算资源216和(一个或多个)证明计算资源218。(一个或多个)分布式计算资源202可以包括补充安装在设备上的鲁棒安全基础框架的外部基础设施。即使(一个或多个)分布式计算资源202被示出为三个单独的计算资源214、216和218,但是在一些示例中,两个或更多个分布式计算资源202可以被组合为单个计算资源,和/或一个或多个分布式计算资源202可以被分离成附加计算资源,这些资源执行本文中描述的操作。
在各种示例中,(一个或多个)身份计算资源214可以包括可以表示来自图1的一个或多个设备106(1)至106(N)的设备220(1)至220(N)。(一个或多个)设备220可以包括具有诸如经由总线226可操作地连接到计算机可读介质226的一个或多个处理单元222的任何类型的计算设备。存储在计算机可读介质224上的可执行指令可以包括例如操作系统228、以及由(一个或多个)处理单元222可加载和可执行的其他模块、程序或应用。替代地或另外地,本文中描述的功能可以至少部分由诸如加速器等一个或多个硬件逻辑组件来执行。
(一个或多个)设备220还可以包括用于通过(一个或多个)网络104来实现(一个或多个)计算设备220与其他联网设备(诸如低资源设备204、(一个或多个)更新计算资源216、(一个或多个)证明计算资源218或其他设备)之间的通信的一个或多个网络接口230。为了简单起见,其他组件从所示的(一个或多个)设备220中被省略。
(一个或多个)身份计算资源214可以包括从设备供应商208接收设备公钥的服务(例如,机构)。在一些示例中,(一个或多个)身份计算资源214可以进一步从设备供应商208接收内部保护器密钥。然后,(一个或多个)身份计算资源214可以将密钥存储在密钥数据库232中。在一些示例中,密钥数据库232可以包括存储诸如设备204等设备的私钥和公钥的数据存储装置,诸如数据库、数据仓库或者其他类型的结构化或者非结构化数据存储装置。然后,在接收到对一个或多个密钥的请求时,(一个或多个)身份计算资源214可以从密钥数据库232取回一个或多个密钥,并且将该一个或多个密钥提供给(一个或多个)其他计算资源,诸如(一个或多个)更新计算资源216。
另外,(一个或多个)身份计算资源214可以在接收到请求时使用来自密钥数据库232的一个或多个密钥来验证设备204的身份。例如,(一个或多个)身份计算资源214可以从(一个或多个)更新计算资源216接收验证设备204的请求。作为响应,(一个或多个)身份计算资源214可以搜索设备公钥和/或与密钥数据库232中的设备204相关联的内部保护器密钥。然后,(一个或多个)身份计算资源214可以向(一个或多个)更新计算资源216发送指示关于(一个或多个)身份计算资源214或者已经验证设备204或者不能验证设备204的通信。
在各种示例中,(一个或多个)更新计算资源216可以包括可以表示来自图1的一个或多个设备106(1)至106(N)的设备234(1)至234(N)。(一个或多个)设备234可以包括具有诸如经由总线240可操作地连接到计算机可读介质238的一个或多个处理单元236的任何类型的计算设备。存储在计算机可读介质238上的可执行指令可以包括例如操作系统242、更新工具244、以及由(一个或多个)处理单元236可加载和可执行的其他模块、程序或应用。替代地或另外地,本文中描述的功能可以至少部分由诸如加速器等一个或多个硬件逻辑来执行。
(一个或多个)设备234还可以包括用于通过(一个或多个)网络104来实现(一个或多个)计算设备234与其他联网设备(诸如设备204、(一个或多个)身份计算资源214、(一个或多个)证明计算资源218或其他设备)之间的通信的一个或多个网络接口246。为了简单起见,其他组件从所示的(一个或多个)设备234省略。
(一个或多个)更新计算资源216可以包括向设备204提供软件更新的服务(例如,机构)。例如,(一个或多个)更新计算资源216可以利用更新工具244向设备204提供存储在设备204上的软件模块(诸如设备204的TCB组件)的更新。(一个或多个)更新计算资源216可以进一步利用更新工具244向设备204提供证明种子、证明身份密钥和/或证明证书中的一个或多个,这在下面描述。附加地,(一个或多个)更新计算资源216可以利用更新工具244来生成与设备204相关联的证明秘密。在生成证明秘密之后,(一个或多个)更新计算资源216可以将证明秘密提供给(一个或多个)证明计算资源218,从而使得(一个或多个)证明计算资源218可以验证证明语句和/或生成用于设备204的证明证书。
在各种示例中,(一个或多个)证明计算资源218可以包括可以表示来自图1的一个或多个设备106(1)至106(N)的设备248(1)至248(N)。(一个或多个)设备248可以包括具有诸如经由总线254可操作地连接到计算机可读介质252的一个或多个处理单元250的任何类型的计算设备。存储在计算机可读介质252上的可执行指令可以包括例如操作系统256、验证/证实工具258、以及由(一个或多个)处理单元250可加载和可执行的其他模块、程序或应用。替代地或另外地,本文中描述的功能可以至少部分由诸如加速器等一个或多个硬件逻辑组件来执行。
(一个或多个)设备248还可以包括用于通过(一个或多个)网络104来实现(一个或多个)计算设备248与其他联网设备(诸如设备204、(一个或多个)身份计算资源214、(一个或多个)更新计算资源216或其他设备)之间的通信的一个或多个网络接口260。为了简单起见,其他组件从所示的(一个或多个)设备248省略。
(一个或多个)证明计算资源218可以包括验证由诸如设备204等设备生成的证明语句的服务(例如,机构)。为了能够验证证明语句,(一个或多个)证明计算资源218可以从(一个或多个)更新计算资源216接收接收证明秘密。(一个或多个)证明计算资源218可以进一步从请求证明验证的第三方实体(证明请求者)(诸如第三方设备和/或第三方服务)接收由设备204生成的证明语句。然后,(一个或多个)证明计算资源218可以使用验证/证实工具258以使用证明秘密来验证证明语句。如果(一个或多个)证明计算资源218验证证明语句,则(一个或多个)证明计算资源218然后可以向证明请求者(例如,第三方)发送指示证明语句被验证的通信(例如,消息)。然而,如果(一个或多个)证明计算资源218不能验证证明语句,则(一个或多个)证明计算资源218然后可以向证明请求者发送指示证明语句不能被验证的通信(例如,消息)。
在一些示例中,(一个或多个)证明计算资源218可以进一步生成用于诸如设备204等设备的证明证书。例如,(一个或多个)证明计算资源218可以从(一个或多个)更新计算资源216接收密钥对(证明身份密钥)。然后,(一个或多个)证明计算资源218可以证实密钥对并且向(一个或多个)更新计算资源216发出证明证书。然后,(一个或多个)更新计算资源216可以将证明证书提供给设备204,从而使得设备204可以执行证明。
图3是描绘(一个或多个)更新计算资源216的示例更新计算设备300(诸如来自图3的设备234)的框图。在设备300中,(一个或多个)处理单元302可以包括(一个或多个)处理单元236,并且可以表示例如CPU型处理单元、GPU型处理单元、现场可编程门阵列(FPGA)、另一类数字信号处理器(DSP)、或者在某些情况下可以由CPU驱动的其他硬件逻辑组件。例如而非限制,可以使用的说明性类型的硬件逻辑组件包括专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
在所示出的示例中,计算机可读介质304可以表示计算机可读介质238,并且可以存储由(一个或多个)处理单元302可执行的指令。计算机可读介质304还可以存储由外部CPU型处理器可执行、由GPU308可执行、和/或由加速器310(诸如FPGA型加速器310(1)、DSP型加速器310(2)或者任何内部或外部加速器310(N))可执行的指令306。在各种示例中,至少一个GPU 308和/或加速器310被并入设备300中,而在一些示例中,GPU 308和/或加速器310中的一个或多个在设备300外部,如图3所示。存储在计算机可读介质304上的可执行指令可以包括例如操作系统312、更新工具314(诸如来自图2的更新工具244)、以及由处理单元302、306、308和/或310可加载和可执行的其他模块、程序或应用。
在所示出的实施例中,计算机可读介质304还包括数据存储库316。在一些示例中,数据存储库316可以包括诸如数据库、数据仓库或者其他类型的结构化或非结构化数据存储装置等数据存储装置。在一些示例中,数据存储库316可以包括具有用于实现数据访问的一个或多个表格、索引、存储过程等的关系数据库。数据存储库316可以存储用于存储在计算机可读介质304中和/或由(一个或多个)处理器302、306和/或308和/或(一个或多个)加速器310执行的处理、应用、组件和/或模块的操作的数据。此外,数据存储库316可以存储用于在低资源设备上更新软件的数据。例如,数据存储库316可以存储由设备300向正在使用设备300更新软件的设备(正在更新TCB组件的设备)提供的软件模块。或者,上述数据中的一些或全部可以存储在单独的存储器318上,诸如CPU型处理器306上的存储器318(1)、GPU308上的存储器318(2)、FPGA型加速器310(1)上的存储器318(3)、DSP型加速器310(2)上的存储器318(4)和/或另一加速器310(N)上的存储器318(M)。
设备300还可以包括一个或多个输入/输出(I/O)接口320,以允许设备300与输入/输出设备通信,诸如包括外围输入设备(例如,键盘、鼠标、语音输入设备、触摸输入设备、手势输入设备等)的用户输入设备和/或包括外围输出设备(例如,显示器、打印机、音频扬声器等)的输出设备。设备300还可以包括用于实现设备300与其他联网设备之间的通信的一个或多个网络接口322,诸如图2的(一个或多个)网络接口246和/或图1的(一个或多个)网络接口118。
总线324(可以包括总线240,可以包括以下中的一个或多个:系统总线、数据总线、地址总线、PCI总线、Mini-PCI总线、以及任何各种本地、外围设备和/或独立总线)可以将计算机可读介质304可操作地连接到(一个或多个)处理单元302。
在所示出的示例中,更新工具314(其可以包括来自图2的更新工具244)可以包括被示出为框326、328和330的一个或多个模块和/或API,但是这仅仅是示例,并且数目可以变化得更高或更低。与框326、328和330相关联描述的功能可以被组合以由更少数目的模块和/或API来执行,或者它可以分开并且由更多数目的模块和/或API来执行。
例如,框326可以表示具有用于对设备300的(一个或多个)处理单元302编程以执行本文中描述的由设备300执行的软件更新操作的逻辑的更新模块。例如,更新模块326可以向网络设备(诸如图2的设备204和/或图1的(一个或多个)设备120)发送通信,这个通信向网络设备通知一个或多个软件更新可用。通信可以包括描述软件更新的元数据。例如,元数据可以包括表示要被更新的一个或多个软件模块的软件模块描述符(SMD)以及一个或多个软件模块更新的版本的数据。然后,更新模块326可以从网络设备接收授权,并且基于该授权,引起网络设备对软件更新的执行。
框328可以表示具有用于对设备300的(一个或多个)处理单元302编程以生成证明种子、证明秘密和/或密钥对(证明身份密钥)的逻辑的证明模块。例如,证明模块328可以生成用于上述网络设备的一个或多个证明种子。另外,证明模块328可以生成与一个或多个证明种子相对应的一个或多个证明秘密。响应于网络设备使用设备300更新一个或多个软件模块,证明模块328可以生成一个或多个证明种子和/或密钥对。然后,证明模块328可以引起设备300将一个或多个证明种子发送到网络设备,并且将一个或多个证明秘密和/或密钥对发送到证明计算资源,诸如来自图2的(一个或多个)证明计算资源218。
例如,在一些示例中,证明模块328不生成用于设备的密钥对。在这样的示例中,证明模块328可以引起一个或多个证明秘密被发送到(一个或多个)证明计算资源218,从而使得(一个或多个)证明计算资源218为设备执行证明。在其他示例中,证明模块328生成用于该设备密钥对。在这样的示例中,证明模块328可以引起密钥对被发送到(一个或多个)证明计算资源218,从而使得(一个或多个)证明计算资源218可以验证密钥对并且向更新计算设备300发送证明证书作为响应。
框330可以表示具有用于对设备300的(一个或多个)处理单元302编程以执行加密和解密的逻辑的加密/解密模块。例如,加密/解密模块330可以在证明模块328引起设备300分别向网络设备和证明计算资源发送证明种子和证明秘密之前对证明种子和证明语句加密。在一些示例中,加密/解密模块330可以使用网络设备的设备公钥来对证明种子和/或证明秘密加密。在一些示例中,加密/解密模块330可以使用网络设备的内部保护器密钥来对证明种子和/或证明秘密加密。在一些示例中,加密/解密模块330可以在向网络设备发送证明证书之前对证明证书和证明身份密钥加密。当对证明证书和证明身份密钥加密时,加密/解密模块330可以使用所生成的使用与网络设备相关联的证明种子生成的证明秘密来对证明证书证明身份密钥加密。另外,在一些示例中,设备300可以包括执行加密/解密模块330的一些和/或全部操作的硬件组件。
图4是描绘(一个或多个)证明计算资源218的示例证明计算设备400(诸如来自图2的设备248)的框图。在设备400中,(一个或多个)处理单元402可以包括(一个或多个)处理单元250,并且可以表示例如CPU型处理单元、GPU型处理单元、现场可编程门阵列(FPGA)、另一类数字信号处理器(DSP)、或者在某些情况下可以由CPU驱动的其他硬件逻辑组件。例如而非限制,可以使用的说明性类型的硬件逻辑组件包括专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
在所示出的示例中,计算机可读介质404可以表示计算机可读介质252,并且可以存储由(一个或多个)处理单元402可执行的指令。计算机可读介质404还可以存储由外部CPU型处理器可执行、由GPU408可执行、和/或由加速器410(诸如FPGA型加速器410(1)、DSP型加速器410(2)或者任何内部或外部加速器410(N))可执行的指令406。在各种示例中,至少一个GPU 408和/或加速器410被并入设备400中,而在一些示例中,GPU 408和/或加速器410中的一个或多个在设备400外部,如图4所示。存储在计算机可读介质404上的可执行指令可以包括例如操作系统412、验证/证实工具414(诸如来自图2的验证/证实工具258)、以及由(一个或多个)处理单元402、406、408和/或410可加载和可执行的其他模块、程序或应用。
在所示出的实施例中,计算机可读介质404还包括数据存储库416。在一些示例中,数据存储库416可以包括诸如数据库、数据仓库或者其他类型的结构化或非结构化数据存储装置等数据存储装置。在一些示例中,数据存储库416可以包括具有用于实现数据访问的一个或多个表格、索引、存储过程等的关系数据库。数据存储库416可以存储用于存储在计算机可读介质404中和/或由(一个或多个)处理器402、406和/或408和/或(一个或多个)加速器410执行的过程、应用、组件和/或模块的操作的数据。或者,上述数据中的一些或全部可以存储在单独的存储器418上,诸如CPU型处理器406上的存储器418(1)、GPU 408上的存储器418(2)、FPGA型加速器410(1)上的存储器418(3)、DSP型加速器410(2)上的存储器418(4)和/或另一加速器410(N)上的存储器418(M)。
设备400还可以包括一个或多个输入/输出(I/O)接口420,以允许设备400与输入/输出设备通信,诸如包括外围输入设备(例如,键盘、鼠标、语音输入设备、触摸输入设备、手势输入设备等)的用户输入设备和/或包括外围输出设备(例如,显示器、打印机、音频扬声器等)的输出设备。设备400还可以包括用于实现设备400与其他联网设备之间的通信的一个或多个网络接口422,诸如图2的(一个或多个)网络接口260和/或图1的(一个或多个)网络接口118。
总线424(可以包括总线254,可以包括以下中的一个或多个:系统总线、数据总线、地址总线、PCI总线、Mini-PCI总线、以及任何各种本地、外围设备和/或独立总线)可以将计算机可读介质404可操作地连接到(一个或多个)处理单元402。
在所示出的示例中,验证/证实工具414可以包括被示出为框426和428的一个或多个模块和/或API,但是这仅仅是示例,并且数目可以变化得更高或更低。与框426和428相关联描述的功能可以被组合以由更少数目的模块和/或API来执行,或者它可以被分开并且由更多数目的模块和/或API来执行。
框426可以表示具有用于对设备400的(一个或多个)处理单元402编程以执行本文中针对设备400描述的证明操作的逻辑的证明模块。在一些示例中,证明模块426可以使用由设备400从第三方实体接收的由网络设备生成的证明语句和由设备400从(一个或多个)更新计算资源216接收的证明秘密来验证网络设备。在一些示例中,验证网络设备可以包括将证明语句与证明秘密相比较。在比较时,如果证明语句与证明秘密相匹配,从而使得它们包括相同的值,则认证模块426可以向第三方实体验证网络设备。然而,如果证明语句与证明秘密不匹配,从而使得它们不包括相同的值,则认证模块426不能向第三方实体验证网络设备。在任一情况下,设备400向第三方实体发送指示设备是否可以由认证模块426验证的通信。
在一些示例中,证明模块426可以验证由设备400从(一个或多个)更新计算资源216接收的与网络设备相关联的密钥对。在验证密钥对之后,证明模块426可以生成与网络设备相关联的证明证书并且向(一个或多个)更新计算资源216发送证明证书。然后,网络设备可以使用证明证书(网络设备从(一个或多个)更新计算资源216接收的)来执行证明,这将在下面描述。
框428可以表示具有用于对设备400的(一个或多个)处理单元402编程以在设备400执行证明之后执行本文中描述的通知操作的逻辑的通知模块。例如,通知模块428可以响应于证明模块426验证或不验证证明语句来生成通信。如果证明语句被验证,则通信可以包括证明语句被验证的指示。但是,如果证明语句不能被验证,则通信可以包括关于证明语句不能被验证的指示。在一些示例中,在生成通信之后,设备400将通信发送到请求证明的第三方实体。
图5是描绘示例设备500(诸如来自图2的设备204、或来自图1的(一个或多个)设备120之一)的框图。在设备500中,(一个或多个)处理单元502可以包括(一个或多个)处理单元122,并且可以表示例如CPU型处理单元、GPU型处理单元、现场可编程门阵列(FPGA)、另一类数字信号处理器(DSP)、或者在某些情况下可以由CPU驱动的其他硬件逻辑组件。例如而非限制,可以使用的说明性类型的硬件逻辑组件包括专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
在所示出的示例中,计算机可读介质504可以表示计算机可读介质124,并且可以存储由(一个或多个)处理单元502可执行的指令。计算机可读介质504还可以存储由外部CPU型处理器可执行、由GPU508可执行、和/或由加速器510(诸如FPGA型加速器510(1)、DSP型加速器510(2)或者任何内部或外部加速器510(N))可执行的指令506。在各种示例中,至少一个GPU 508和/或加速器510被并入设备500中,而在一些示例中,GPU 508和/或加速器510中的一个或多个在设备500外部,如图5所示。存储在计算机可读介质504上的可执行指令可以包括例如操作系统512、鲁棒安全基础前端514(诸如来自图1的鲁棒安全基础前端130)、以及由(一个或多个)处理单元502、506、508和/或510可加载和可执行的其他模块、程序或应用。
在所示出的实施例中,计算机可读介质504还包括数据存储库516。在一些示例中,数据存储库516可以包括诸如数据库、数据仓库或者其他类型的结构化或非结构化数据存储装置等数据存储装置。在一些示例中,数据存储库516可以包括具有用于实现数据访问的一个或多个表格、索引、存储过程等的关系数据库。数据存储库516可以存储用于存储在计算机可读介质504中和/或由(一个或多个)处理器502、506和/或508和/或(一个或多个)加速器510执行的过程、应用、组件和/或模块的操作的数据。或者,上述数据中的一些或全部可以存储在单独的存储器518上,诸如CPU型处理器506上的存储器518(1)、GPU 508上的存储器518(2)、FPGA型加速器510(1)上的存储器518(3)、DSP型加速器510(2)上的存储器518(4)和/或在另一加速器510(N)上的存储器518(M)。
设备500还可以包括一个或多个输入/输出(I/O)接口520,以允许设备500与输入/输出设备通信,诸如包括外围输入设备(例如,键盘、鼠标、语音输入设备、触摸输入设备、手势输入设备等)的用户输入设备和/或包括外围输出设备(例如,显示器、打印机、音频扬声器等)的输出设备。设备500还可以包括用于实现设备500与其他联网设备之间的通信的一个或多个网络接口522,诸如图1的(一个或多个)网络接口134。总线524(可以包括总线126,可以包括以下中的一个或多个:系统总线、数据总线、地址总线、PCI总线、Mini-PCI总线、以及任何各种本地、外围设备和/或独立总线)可以将计算机可读介质504可操作地连接到(一个或多个)处理单元502。
在所示出的示例中,计算机可读介质504包括鲁棒安全基础前端514(其可以包括来自图1的鲁棒安全基础前端130)。鲁棒安全基础前端514可以包括被示出为框526、528、530、532和534的一个或多个模块和/或API,但是这仅仅是示例,并且数目可以变化得更高或更低。与框526、528、530、532和534相关联描述的功能可以被组合以由更少数目的模块和/或API来执行,或者它可以被分开并且由更多数目的模块和/或API来执行。
例如,框526可以表示具有用于对设备500的(一个或多个)处理单元502编程以执行本文中针对设备500描述的基于散列的操作和/或加密/解密操作的逻辑的密码模块。例如,设备500可以利用密码模块526来生成下文中关于图6讨论的熔丝得出秘密、隐私根密钥和/或内部保护器密钥。另外,设备500可以利用密码模块526来生成密码散列函数,设备500可以使用该密码散列函数来生成设备公钥和设备私钥两者。此外,设备500可以利用密码模块526来生成设备公钥、设备私钥、密封密钥、迁移密钥和/或证明密钥,这些密钥也都在下面参考图6讨论。在一些示例中,设备500还可以包括执行本文中针对设备500描述的基于散列的操作和/或加密/解密操作中的一些和/或全部的硬件组件。例如,设备500可以包括执行椭圆曲线加密(ECC)、RSA加密、高级加密标准(AES)、数据加密标准(DES)或其他类型的加密以生成设备公钥和设备私钥的硬件组件。
框528可以表示具有用于对设备500的(一个或多个)处理单元502编程以执行本文中针对设备500描述的验证操作的逻辑的设备验证模块。例如,设备验证模块528可以利用秘密密钥来在设备500的常规引导过程期间验证一个或多个软件模块。在常规引导序列期间验证软件模块可以包括使用引导链中的先前软件模块的密封密钥作为HMAC密钥来验证软件模块的SMD上的HMAC签名是正确的。另外,设备500可以执行设备验证模块528以在安全更新引导序列期间验证软件更新。验证软件更新可以包括验证已更新SMD上的签名、和/或使用安全引导链中的先前软件模块的密封密钥在软件更新过程期间被更新的、用于每个软件模块的更新约束。更新约束可以包括用于已更新软件模块的模块供应商标识、模块标识和版本号标识。在一些示例中,验证更新约束可以包括将软件模块的已更新版本的模块供应商标识、模块标识和版本号标识与软件模块的先前版本相比较。
此外,设备500可以利用验证模块528来执行证明。例如,在一些示例中,设备500可以从(一个或多个)更新计算资源216接收加密的证明身份密钥和证明证书。然后,设备500可以使用密码模块526以使用生成的证明秘密来对加密的证明身份密钥和证明证书解密。这样,验证模块528可以通过检查证明身份密钥和证明证书来执行证明,因为只有设备500能够通过生成正确的证明秘密来对加密的证明身份密钥和证明证书解密。
框530可以表示具有用于对设备500的(一个或多个)处理单元502编程以执行本文中描述的密封操作的逻辑的密封模块。例如,每个软件模块可以包括引导链中的后续软件模块不可访问的秘密。为了隔离秘密,密封模块530可以引起每个软件模块使用相应软件模块在引导过程期间生成的密封密钥来密封秘密。为了密封秘密,软件模块可以从密封密钥中得出必要数目的加密密钥,并且使用得出的加密密钥对秘密加密。在密封秘密之后,密封模块530然后可以引起软件模块擦除密封密钥和得出的加密密钥两者。
框532可以表示具有用于对设备500的(一个或多个)处理单元502编程以执行本文中描述的迁移操作的逻辑的迁移模块。例如,在设备500更新一个或多个软件模块之后,来自一个或多个软件模块的先前版本的秘密被迁移到一个或多个软件模块的新版本。为了迁移秘密,迁移模块532可以引起软件模块使用迁移密钥来解锁(即,解密)由软件模块的先前版本锁定的秘密,并且然后使用被生成用于软件模块的新版本的密封密钥来锁定(即,加密)解锁的秘密。
框534可以表示具有用于对设备500的(一个或多个)处理单元502编程以执行本文中针对软件模块描述的授权操作的逻辑的更新模块。例如,更新模块534可以引起设备500更新软件模块。在一些示例中,更新模块534引起设备500在正被更新的软件模块授权更新之后更新软件模块。为了授权更新,更新模块534可以从更新包下载(例如,接收)与待更新的软件模块相关联的元数据。元数据可以包括与更新包中的每个已更新软件模块相对应的SMD。然后,设备500上的包括更新包中的已更新软件模块和/或更新模块534的每个软件模块可以将相应的已更新软件模块的SMD与软件模块的当前SMD相比较以确定更新是否满足用于相应软件模块的更新策略。更新策略可以包括验证相应的已更新软件模块的SMD包括指示正确的软件模块名称、软件模块的最新版本和/或关于适当的机构已经签名相应的已更新软件模块的SMD的数据。当更新满足更新策略时,更新模块534可以提供用于更新一个或多个软件模块的授权。否则,更新模块534可以不提供设备500所需要的用于更新一个或多个软件模块的授权。
图5还示出了包括鲁棒安全基础框架536(其可以包括来自图1的鲁棒安全基础框架132)的设备500。鲁棒安全基础框架536可以包括由供应商(例如,设备供应商208)添加到设备500的硬件,其包括用于设备500的设备秘密538。设备秘密538可以包括标识设备500中的硬件的唯一值。如上所述,设备500可以使用设备秘密538来生成设备500用来执行本文中描述的安全操作的密码学上唯一的秘密和值(图6所示)中的每个。这样,设备500可以引起设备秘密538对尝试访问设备秘密538的其他网络设备不可访问。
应当注意,在一些示例中,鲁棒安全基础前端514可以被包括在鲁棒安全基础框架536中。例如,在一些示例中,框526、528、530、532和534中的一个或多个可以被包括在鲁棒安全基础框架536中并且由其执行。另外,在其他示例中,设备500可以不包括鲁棒安全基础框架536。在这样的示例中,设备500可以将设备秘密538存储在计算机可读介质504中。例如,设备500可以将设备秘密538存储在设备500的ROM中。
应当注意,在一些示例中,设备500可以包括低资源设备。例如,设备500可以包括具有有限资源(诸如有限的存储器和处理能力)的IoT设备。在一些示例中,低资源设备可以包括16至1024兆字节的内部存储器和4至160千字节的静态RAM存储器。然而,由于本文中描述的框架可以在二十千字节以下的代码中实现,这可以使得其适用于资源极其有限的网络连接的设备,所以该框架仍然能够在低资源设备上操作。
本文中描述的计算机可读介质(例如,计算机可读介质110、124、224、242、252、304、404和504)包括计算机存储介质和/或通信介质。在一些示例中,计算机可读介质被具体描述为非易失性存储器。否则,计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的有形存储单元,诸如易失性存储器、非易失性存储器和/或其他永久和/或辅助计算机存储介质、可移除和不可移除计算机存储介质。计算机存储介质包括作为设备的一部分或在设备外部的设备或硬件部件中包括的有形或物理形式的介质,包括但不限于随机存取存储器(RAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、相变存储器(PRAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、光卡或其他光存储介质、磁带盒、磁带、磁盘存储器、磁卡或其他磁存储设备或介质、固态存储器设备、存储阵列、网络附加存储装置、存储区域网络、托管的计算机存储装置或存储器、存储设备和/或存储介质,其可以用于存储和保持信息用于由相应的计算设备访问。与计算机存储介质相比,通信介质可以在调制数据信号(例如,载波或其他传输机制)中实施计算机可读指令、数据结构、程序模块或其他数据。如本文中定义的,计算机存储介质不包括通信介质。
图6描绘了由诸如来自图5的设备500等设备执行用于产生设备使用用于执行本文中描述的安全操作的密码学上唯一的秘密和值的示例过程600。如图所示,设备可以执行一系列基于散列的操作(HBO)602和密钥得出函数(KDF)604以产生密码学上唯一的秘密和值。由于设备可以使用设备秘密606开始执行一系列HBO 602和KDF604,因此每个密码学上唯一的秘密和值对设备是唯一的。此外,在图6的示例中,HBO 602和KDF 604中的每个可以包括“单向”操作,从而使得外部设备不能反转操作以得出设备的唯一值,其包括设备秘密606、不可变代码608和熔丝得出秘密(FDS)值610。
如图6所示,设备可以使用设备秘密606(其可以包括来自图5的设备秘密540)和不可变代码608来产生FDS值610。例如,在图6的示例中,设备可以使用设备秘密606和不可变代码608来执行HBO 602(1)以生成FDS值610。在一些示例中,HBO 602(1)可以包括将不可变代码608的散列值到秘密值606的串联散列化以产生FDS值610。FDS值610可以包括设备用来得出密码学上唯一的秘密和值中的每个的值。在一些示例中,在生成FDS值610之后,设备可以停用对设备秘密606的访问以防止来自可能安装在设备上的恶意代码的攻击。
设备可以使用FDS值610和设备身份常数612来产生设备公钥614和设备私钥616两者。设备身份常数612可以包括设备用来产生设备公钥614和设备私钥616两者的唯一的二进制值。设备公钥614可以包括唯一地表示设备上的硬件身份的用于设备的公共标识密钥。设备专用密钥616可以包括设备在从(一个或多个)分布式计算资源202接收到加密的值和秘密之后使用的用于设备的私有标识密钥。
例如,在图6的示例中,设备可以使用FDS值610和设备身份常数612来执行HBO 602(2)以生成密码散列函数。在一些示例中,HBO 602(2)可以包括将设备身份常数612到FDS值610的串联散列化以产生密码散列函数。然后,该设备可以使用密码散列函数来执行密钥生成618以生成设备公钥614和设备私钥616两者。在一些示例中,密钥生成618可以采用椭圆曲线密码或其他合适类型的密码。在一些示例中,在生成设备私钥616之后,设备使用内部保护器密钥620来对设备私钥616加密,这将在下面描述。设备对设备私钥616加密以便保护设备私钥616免受外部计算设备的恶意攻击。
使用FDS值610,设备可以进一步产生密封种子622,密封种子622可以由设备用来生成密封密钥624和迁移密钥626两者。例如,在图6的示例中,设备可以使用FDS值610和设备密封常数628来执行HBO 602(3)以生成密封种子622,其中设备密封常数628可以包括设备唯一的串。在一些示例中,HBO 602(3)可以包括将设备密封常数628到FDS值610的串联散列化以产生密封种子622。然后,该设备可以执行KDF 604(1)以使用一个或多个软件模块的当前版本的当前SMD 630从密封种子622生成密封密钥624,和/或该设备可以执行KDF 604(2)以使用一个或多个软件模块的先前版本的先前SMD 632从隐私漫游(rook)密钥622生成迁移密钥626。
该设备可以进一步使用FDS值610来生成内部保护器密钥620,内部保护器密钥620然后可以由该设备用来取回证明种子634。例如,在图6的示例中,设备可以使用FDS值610和设备隐私常数636来执行HBO 602(4)以生成内部保护器密钥620,其中设备隐私常数636可以包括设备唯一的秘密值。在一些示例中,HBO 602(4)可以包括将设备隐私常数636到FDS值610的串联散列化以产生内部保护器密钥620。然后,该设备可以使用内部保护器密钥620来对加密的证明种子640解密638以产生证明种子634。如将在下面更详细讨论的,该设备在证明期间使用证明种子634。该设备可以从由内部保护器密钥620加密的(一个或多个)分布式计算资源202接收证明种子634,和/或设备可以在将证明种子634存储在计算机可读介质中之前,使用内部保护器密钥620来对证明种子634加密。
应当注意,在一些示例中,设备身份常数612、设备密封常数628和设备隐私常数636中的每个包括唯一的二进制值。在这样的示例中,设备身份常数612、设备密封常数628和设备隐私常数636都不包括相同的二进制值。另外,在一些示例中,设备身份常数612、设备密封常数628和设备隐私常数636中的每个可以被更新为新的唯一的二进制值。例如,设备身份常数612、设备密封常数628和设备隐私常数636中的一个或多个可以在受到危害时被更新。
图7描绘了用于生成密封密钥702的示例过程700。如图所示,诸如设备500等设备使用设备上的一个或多个软件模块的SMD 704生成密封密钥702,其中SMD 704可以包括来自图6的当前SMD 630。每个SMD 704可以包括定义相应软件模块的身份的数据结构。例如,用于软件模块的SMD可以包括表示软件模块标识符、软件模块版本、供应商标识符、用于包括软件模块的可执行映像的一个或多个摘要、供应商签名、以及用于软件模块的设备签名(例如,HMAC)的数据。这样,设备生成用于每个软件模块的密封密钥702,其中相应的密封密钥702对于相应的软件模块是唯一的。
例如,该设备和/或鲁棒安全基础框架可以使用第一软件模块的第一SMD 704(1)来生成用于第一软件模块的第一密封密钥702(1)。在一些示例中,该设备和/或鲁棒安全基础框架可以执行KDF 706(1)以使用密封种子708来从第一SMD 704(1)生成第一密封密钥702(1),密封种子708可以包括来自图6的密封种子622。然后,第一软件模块可以使用第一密封密钥702(1)来产生用于对第一软件模块的秘密加密的一个或多个加密密钥。此外,该设备和/或鲁棒安全基础框架可以使用密封种子708通过使用密封种子708检查第一SMD704(1)上的HMAC签名来验证第一软件模块的完整性。如果该设备和/或鲁棒安全基础框架验证第一软件模块的完整性,则第一软件模块被执行。但是,如果该设备和/或鲁棒安全基础框架无法验证第一软件模块的完整性,则鲁棒安全基础框架可能会导致该设备停止引导序列和/或执行修复。
修复可以包括确定软件模块是否可以被补救,以恢复模式重启设备,返回到引导链而不执行策略检查,替换失败的软件模块,或者从备份存储恢复失败的软件模块。在图7的示例中,将假定每个软件模块能够使用软件模块的密封密钥702来验证软件模块的相应完整性。
在第一软件模块的执行完成之后,该设备和/或鲁棒安全基础框架使用第二软件模块的第二SMD 704(2)和第一密封密钥702(1)生成第二密封密钥702(2)。在一些示例中,该设备和/或鲁棒安全基础框架可以执行KDF 706(2)以使用第一密封密钥702(1)从第二SMD 704(2)生成第二密封密钥702(2)。然后,第二软件模块可以使用第二密封密钥702(2)来产生用于对第二软件模块的秘密加密的一个或多个加密密钥。另外,该设备、鲁棒安全基础框架或第一软件模块可以使用第一密封密钥702(1)来验证第二软件模块的完整性,并且然后发起第二软件模块的执行。
在第二软件模块被执行之后,该设备和/或鲁棒安全基础框架可以使用第三软件模块的第三SMD 704(3)和第二密封密钥702(2)生成第三密封密钥702(3)。在一些示例中,该设备、鲁棒安全基础框架或第二软件模块可以执行KDF 706(3)以使用第二密封密钥704(2)来从第三SMD 704(3)生成第三密封密钥702(3)。然后,第三软件模块可以使用第三密封密钥702(3)来产生用于对第三软件模块的秘密加密的一个或多个加密密钥。另外,该设备、鲁棒安全基础框架或第二软件模块可以使用第二密封密钥702(2)来验证第三软件模块的完整性。
引导序列中的每个软件模块可以执行上述操作,直到使用引导链中的先前软件模块的密封密钥以及最终软件模块的SMD 704(N)生成最终密封密钥702(N)。例如,在一些示例中,该设备、鲁棒安全基础框架或倒数第二软件模块可以通过对最终SMD 704(N)和倒数第二软件模块的密封密钥执行KDF 706(N)来生成最终密封密钥702(N)。然后,最终软件模块可以使用最后密封密钥702(N)来产生用于对最终软件模块的秘密加密的一个或多个加密密钥。此外,该设备、鲁棒安全基础框架或倒数第二软件模块可以使用倒数第二密封密钥来验证最终软件模块的完整性。
应当注意,当生成密封密钥702时,该设备、鲁棒安全基础框架和/或每个软件模块可以执行SMD 704的散列函数,并且在得出相应密封密钥702时使用SMD 704的散列函数。例如,上述的设备、鲁棒安全基础框架或第一软件模块可以执行第一KDF 706(1)以使用隐私根密钥从第一SMD 704(1)的散列生成第一密封密钥702(1)。然后,该设备、鲁棒安全基础框架或第二软件模块可以执行第二KDF706(2)以使用第一密封密钥702(1)从第二SMD 704(2)的散列生成第二密封密钥702(2)。然后,每个软件模块可以继续使用类似的过程来生成剩余的密封密钥702。在一些示例中,执行SMD的散列函数可以包括将除了签名块之外的每个SMD的内容散列化。
应当进一步注意,当一个或多个软件模块被设备更新时,该设备和/或鲁棒安全基础框架可以使用类似于700的过程来产生用于每个软件模块的迁移密钥,不同之处在于,为了产生迁移密钥,该设备和/或鲁棒安全基础框架使用SMD的先前版本。例如,设备可以更新引导链中的每个软件模块。当更新软件模块时,该设备可以复制SMD的先前版本,其可以在计算机可读存储最终(例如,NV存储器)中包括来自图6的先前的SMD 632并且然后使用SMD的更加新版本替换SMD的先前版本的原始实例。然后,该设备可以从计算机可读存储装置中取回SMD的先前版本,并且使用SMD的先前版本以使用类似于生成密封密钥702的过程来生成用于每个软件模块的迁移密钥,诸如迁移密钥626。然后,该设备可以使用用于软件模块的迁移密钥和密封密钥702从软件模块的先前版本向软件模块的更加新版本迁移秘密。
例如,由于设备可以使用SMD的先前版本生成每个迁移密钥,所以设备可以使用迁移密钥来解锁(例如,解密)软件模块的秘密。在一些示例中,每个软件模块使用其相应的迁移密钥来生成由相应软件模块用来对相应软件模块的秘密解密的一个或多个解密密钥。然后,软件模块可以使用密封密钥702来锁定(例如,加密)秘密。在一些示例中,每个软件模块可以使用其各自的密封密钥702来生成由相应软件模块用来对秘密加密的一个或多个加密密钥。
图8描绘了用于使用证明种子804来生成证明密钥802的示例过程800,证明种子804可以包括来自图6的证明种子634。为了生成证明密钥802,诸如设备500和/或鲁棒安全基础框架等设备可以利用与以上针对生成密封密钥702所描述的类似的过程,不同之处在于,该过程以证明种子804开始。例如,给定第一软件模块的证明种子804和第一SMD 806(1),该设备和/或鲁棒安全基础框架可以执行第一KDF 808(1)以使用证明种子804从第一软件模块的第一SMD 806(1)生成第一证明密钥802(1)。然后,该设备和/或鲁棒安全基础框架可以针对引导链中的每个软件模块执行剩余的KDF 808(2)至808(N),以使用来自引导链中的先前软件模块的证明密钥,从剩余软件模块的相应SMD 806(2)至806(N)生成剩余的证明密钥802(2)至802(N)中的每个。在一些示例中,在生成证明密钥802时,该设备和/或鲁棒安全基础框架可以在执行KDF808以生成证明密钥802之前首先得到SMD 806的散列。
应当注意,在一些示例中,该设备使用最终证明密钥(诸如图8中的证明密钥802(N))作为上述证明秘密。此外,在一些示例中,由于(一个或多个)更新计算资源216知道什么软件模块是一设备,所以(一个或多个)更新计算资源216可以使用类似的过程来生成用于设备的证明秘密。
图9描绘了描绘设备902(其可以包括来自图5的设备500)可以使用非对称密码术在其中操作的示例环境900的框图。在所示出的示例中,设备供应商208生成设备秘密212并且将设备秘密212编程到设备902中。设备供应商208还可以使用与图6中的设备类似的过程来生成设备公钥614,并且将设备公钥614发送到(一个或多个)身份计算资源214。(一个或多个)身份计算资源214可以从设备供应商208接收设备公钥614,并且将设备公钥614存储在数据库中,诸如来自图2的密钥数据库232。
如图9中进一步所示,设备902可以将设备公钥614发送给(一个或多个)更新计算资源216。(一个或多个)更新计算资源216可以使用设备公钥614以通过向(一个或多个)身份计算资源214发送设备公钥614来验证设备公钥614属于已知设备。(一个或多个)身份计算资源214可以使用从(一个或多个)更新计算资源216接收的设备公钥614,对照由(一个或多个)身份计算资源214存储在密钥数据库232中的每个设备公钥来检查所接收的设备公钥614,并且当(一个或多个)身份计算资源214可以授权设备902时,将设备授权904发送回(一个或多个)更新计算资源216。
在接收设备授权904之后,(一个或多个)更新计算资源216可以将证明种子634发送(例如,注入)回设备902。在一些示例中,(一个或多个)更新计算资源216通过通过生成随机证明种子来生成专用于设备902的证明种子634。附加地,在一些示例中,(一个或多个)更新计算资源216进一步通过设备公钥614对证明种子634加密,从而使得向设备902发送证明种子634是安全的。然后,当(一个或多个)更新计算资源216使用设备公钥614对证明种子634加密时,设备902可以使用设备私钥(诸如来自图6的设备私钥616)来对证明种子634解密。
(一个或多个)更新计算资源216可以进一步生成密钥对906(例如,证明身份密钥)和证实模板908,并且将密钥对906和证实模板908两者发送到(一个或多个)证明计算资源218。然后,(一个或多个)证明计算资源218可以通过对证明模板908签名来生成证明证书910,并且将证明证书910发送到(一个或多个)更新计算资源216。
(一个或多个)更新计算资源216可以进一步使用如以上针对该设备描述的类似过程来使用证明种子634生成证明秘密。然后,(一个或多个)更新计算资源216可以使用证明秘密对证明身份私钥912(来自密钥对906)和证明证书910两者加密,并且将所得到的证明身份密钥导入块发送到设备902。
设备902可以使用证明种子634来生成与通过(一个或多个)更新计算资源216而生成的证明秘密相类似的证明秘密。然后,设备902可以使用证明秘密来对证明身份私钥912和证明证书910两者解密。由于设备902是能够生成对证明身份私钥912和证明证书910解密所需要的证明秘密的唯一设备,因此设备902可以基于解密来验证存储在设备902上的软件模块。在一些示例中,然后,设备902可以使用密封密钥(例如,来自图7的密封密钥702之一)对证明身份私钥912的隐私部分加密。例如,设备902可以使用引导链中的最后的密封密钥(诸如密封密钥702(N))对证明身份私钥912的私钥部分加密,并且然后当设备902需要证明身份私钥912以验证设备902的完整性时,使用密封密钥902(N)来对证明身份私钥912解密。
也在图9中示出了,设备902向第三方实体914发送证明证书910和签名的证明语句912。设备902可以通过签名所生成的证明秘密来生成签名的证明语句912。然后,第三方实体914可以使用证明证书910和签名的证明语句912两者来验证设备902的完整性。响应于验证设备902,第三方实体914可以将随机数916发送回设备902以向设备902通知验证。
图10描绘了描绘设备1002(其可以包括来自图5的设备500)可以使用对称密码术在其中操作的示例环境1000的框图。在所示出的示例中,设备供应商208生成设备秘密212并且将设备秘密212编程到设备1002中。设备供应商208还可以使用与图6中的设备类似的过程来生成设备公钥614和内部保护器密钥620,并且可以将设备公钥614和内部保护器密钥620发送给(一个或多个)身份计算资源214。(一个或多个)身份计算资源214可以从设备供应商208接收设备公钥614和内部保护器密钥620,并且可以将设备公钥614和内部保护器密钥620存储在一个或多个数据库中,诸如来自图2的密钥数据库232。
也在图10中示出,设备1002可以将设备公钥614发送到(一个或多个)更新计算资源216。(一个或多个)更新计算资源216可以使用设备公钥614以通过向(一个或多个)身份计算资源214发送设备公钥614和加密的证明种子640来验证设备1002的身份。(一个或多个)身份计算资源614可以使用设备公钥614来标识设备1002,并且作为响应,使用所存储的内部保护器密钥620对加密的证明种子640解密。然后,(一个或多个)身份计算资源614可以将证明种子634发送回(一个或多个)更新计算资源216,(一个或多个)更新计算资源216验证设备1002的身份。
然后,(一个或多个)更新计算资源216可以使用上面讨论的证明种子634来生成证明秘密1004,并且将证明秘密1004和设备公钥614发送到(一个或多个)证明计算资源618。(一个或多个)更新计算资源216可以进一步将加密的证明种子640发送到设备1002,从而使得设备可以使用证明种子634生成证明秘密1004。例如,设备1002可以从(一个或多个)更新计算资源216接收加密的证明种子640,使用内部保护器密钥620对加密的证明种子640解密,并且使用证明种子634生成证明秘密1004。
在设备1002生成证明秘密1004之后,当第三方实体1006想要验证设备1004时,设备1002可以使用证明秘密1004。例如,如图10所示,设备1002使用证明秘密1004生成签名的证明语句1008,并且将签名的证明语句1008和设备公钥614发送到第三方实体1006。然后,第三方实体1006将签名的证明语句1008和设备公钥614发送到(一个或多个)证明计算资源218。(一个或多个)证明计算资源218还可以从(一个或多个)更新计算资源216接收设备公钥614和证明秘密1004。
使用从(一个或多个)更新计算资源216接收的设备公钥614和证明秘密1004以及从第三方实体1006接收的设备公钥614和签名的证明语句1008,(一个或多个)证明计算资源218可以验证设备1002。在一些示例中,(一个或多个)证明计算资源218可以使用从(一个或多个)更新计算资源216和第三方实体1006两者接收的设备公钥614验证设备1002的完整性,并且然后使用证明秘密1004验证签名的证明语句1008。然后,当(一个或多个)证明计算资源218验证设备1002时,(一个或多个)证明计算资源218可以向第三方实体1006发送验证1010,或者(一个或多个)当证明计算资源218不能使用证明秘密1004和签名的证明语句1008来验证设备1002时,证明计算资源218可以发送指示不能验证设备1002的消息。
也在图10中示出了,第三方实体1006可以向设备1002发送随机数1012。在一些示例中,响应于第三方实体1006从(一个或多个)证明计算资源218接收验证1010,第三方实体1006向设备1002发送随机数1012。
图11至17是用于促进提供具有各种安全能力的电子设备的核心TCB的框架的说明性过程的流程图。这些过程被示出为逻辑流程图中的框的集合,这些框表示可以用硬件、软件或其组合来实现的操作序列。这些框由数字引用。在软件的上下文中,框表示存储在一个或多个计算机可读介质上的在由一个或多个处理单元(诸如硬件微处理器)执行时执行所述操作的计算机可执行指令。通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且任何数目的所描述的框可以按照任何顺序和/或并行地组合以实现该过程。
图11是用于执行引导序列的说明性过程1100的流程图。在1102,设备使用FDS值生成用于重新验证先前在软件更新之后由设备验证并且由设备使用认证码签名的软件模块的密封种子。例如,设备可以使用FDS值和设备密封常数来执行HBO以生成用于验证软件模块的密封种子。软件模块可以包括安全引导序列中的第一软件模块。
在1104,设备取回与软件模块相关联的SMD。在1106,设备使用SMD和密封种子来验证软件模块。例如,为了验证软件模块,设备可以使用密封种子来检查SMD上的认证码。
在1106,设备可以至少部分基于验证软件模块来继续执行引导过程。例如,该设备可以使用密封种子和SMD来生成用于软件模块的密封密钥。然后,该设备可以使用密封密钥生成用于对软件模块的秘密加密的一个或多个加密密钥。此外,该设备可以使用密封密钥来验证安全引导链中的下一软件模块,生成用于下一软件模块的新的密封密钥,并且使用下一密封密钥对下一软件模块的秘密加密。然后,该设备可以继续针对安全引导链中的每个软件模块执行上述步骤。
图12是用于生成证明秘密并且在设备的认证期间使用证明秘密的说明性过程1200的流程图。在1202,设备可以向分布式资源发送与设备相关联的设备身份,诸如公共设备身份。例如,该设备可以向更新机构发送设备公钥。
在1204,设备可以从分布式资源接收证明种子。例如,更新机构可以响应于接收设备公钥而生成设备的证明种子。然后,更新机构可以使用设备公钥对证明种子加密,并且向该设备发送被加密到设备公钥的证明种子。作为响应,该设备可以使用设备私钥对被加密到设备公钥的证明种子解密。在一些示例中,响应于设备更新一个或多个软件模块,更新机构向设备发送证明种子。
在1206,该设备可以使用证明种子从至少一个SMD生成证明秘密,至少一个SMD与该设备上的一个或多个软件模块相关联。例如,该设备可以执行KDF以使用证明种子来从第一软件模块的第一SMD生成证明密钥。当存在多于一个软件模块时,该设备可以执行KDF,以使用由设备的引导序列中先前软件模块生成的证明密钥来从与相应软件模块相关联的SMD生成用于每个软件模块的证明密钥。在一些示例中,由该设备生成的最后的证明密钥用作证明秘密。
在1208,该设备可以至少部分基于证明秘密来生成证明语句。例如,设备可以使用证明秘密和设备公钥两者来生成证明语句。在1214,该设备可以向分布式资源发送证明语句以获取该设备上的一个或多个软件模块的验证。例如,该设备可以向证明机构发送证明语句,其中证明机构还从更新机构接收证明秘密。然后,证明机构可以使用证明语句和证明秘密来验证设备上的一个或多个软件模块。
图13是用于使用证明来验证设备的更新的说明性过程1300的流程图。在1302,更新机构可以从设备接收与该设备相关联的设备身份。例如,更新机构可以从该设备接收设备公钥。在一些示例中,然后,更新机构可以通过向身份机构发送设备公钥来验证该设备。
在1304,更新机构可以向该设备发送用于软件模块的软件更新,并且在1306,更新机构可以向该设备发送证明种子。例如,更新机构可以响应于向该设备发送软件更新而生成证明种子。在一些示例中,然后,更新机构可以使用设备公钥对证明种子加密,并且向该设备发送被加密到设备公钥的证明种子。附加地或备选地,在一些示例中,更新机构可以使用与该设备相关联的内部保护器密钥来对证明种子加密。然后,更新机构可以向该设备发送加密的证明种子。
在1308,更新机构可以至少部分基于证明种子和用于软件模块的软件更新来生成证明秘密。例如,更新机构可以使用证明种子对与软件模块相关联的SMD执行KDF以生成证明秘密。
在1310,更新机构可以使用证明秘密来验证软件更新。例如,在一些示例中,更新机构可以向执行证明以验证软件更新的证明机构发送被加密到设备公钥的证明秘密。然后,更新机构可以从证明机构接收指示软件更新的验证的消息。在一些示例中,更新机构可以使用证明秘密来对证明身份密钥和证明证书加密,并且向该设备发送加密的证明身份密钥和证明证书。然后,该设备可以使用加密的证明密钥和证明证书来验证一个或多个软件模块。
图14是用于使用证明身份密钥和证明证书来验证设备的一个或多个软件模块的示例说明性过程1400的流程图。在1402,该设备可以向更新机构发送与设备相关联的设备身份。例如,该设备可以向更新机构发送与该设备关联的设备公钥。
在1404,该设备可以从更新机构接收证明种子,并且在1406,该设备可以从更新机构接收被加密到证明秘密的证明身份密钥和证明证书。
在1408,该设备可以使用证明种子从至少一个SMD生成证明秘密。在一些示例中,至少一个SMD可以与设备上的一个或多个软件模块相关联。例如,该设备可以执行KDF以使用证明种子从第一软件模块的第一SMD生成证明密钥。当存在多于一个软件模块时,该设备可以执行KDF以使用由设备的引导序列中的先前软件模块生成的证明密钥从与相应软件模块相关联的SMD中生成用于每个软件模块的证明密钥。在一些示例中,由该设备生成的最后的证明密钥用作证明秘密。
在1410,该设备可以使用所生成的证明秘密对加密的证明身份密钥和证明证书解密。在一些示例中,只有当该设备生成正确的证明语句时,该设备才能对加密的证明身份密钥和证明证书解密。
在412,该设备可以生成证明语句,并且在414,该设备可以使用证明证书来签名证明语句。例如,该设备可以使用证明秘密生成证明语句。然后,该设备可以使用证明证书来签名所生成的证明语句。
应当注意,在一些示例中,该设备可以进一步使用密封密钥来对证明身份密钥的隐私部分重新加密。当对证明身份密钥再次加密时,密封密钥可以包括最后的软件模块的密封密钥,即产生证明秘密的密封密钥。在这样的示例中,该设备可以进一步对证明身份密钥的隐私部分解密,并且使用隐私部分和证明秘密来签名证明语句。在一些示例中,该设备可以进一步向第三方实体发送证明语句和证明证书。然后,第三方实体可以使用签名的证明语句和证明证书来验证该设备。
图15是用于向设备提供证明身份密钥和证明证书的示例说明性过程1500的流程图。在1502处,更新机构可以从设备接收与该设备相关联的设备身份。在1504处,更新机构可以向该设备发送证明种子。
在1506处,更新机构可以生成用于该设备的证明身份密钥。在1508处,更新机构可以从证明机构接收证明证书。例如,更新机构可以向证明机构发送密钥对和证明模板。然后,证明机构可以签名证明证书并且向更新机构发送证明证书。
在1510处,更新机构可以使用证明秘密从至少一个SMD生成证明秘密。例如,更新机构可以执行KDF以使用证明种子从第一软件模块的第一SMD生成证明密钥。当存在多于一个软件模块时,更新机构可以执行KDF,以使用由先前的软件模块生成的证明密钥从与相应软件模块相关联的SMD中生成用于每个软件模块的证明密钥。在一些示例中,由更新机构生成的最后的证明密钥被用作证明秘密。
在1512处,更新机构可以使用证明秘密来对证明身份密钥和证明证书加密。在1514处,更新机构可以向该设备发送加密的证明身份和证明证书。
图16是用于从软件模块的先前版本向软件模块的更加新版本迁移秘密的说明性过程1600的流程图。在1602处,设备可以将软件模块从软件模块的先前版本更新为软件模块的新版本。
在1604处,该设备可以生成用于软件模块的迁移密钥,并且在1606处,该设备可以生成用于软件模块的密封密钥。例如,该设备可以基于软件模块的先前版本的SMD来生成迁移密钥。另外,该设备可以基于软件模块的更加新版本的SMD来生成密封密钥。
在1608处,该设备可以使用迁移密钥来从软件模块的先前版本解锁秘密。例如,该设备可以引起软件模块的新版本使用迁移密钥来从软件模块的先前版本解锁秘密。在一些示例中,解锁秘密可以包括使用迁移密钥来生成一个或多个解密密钥,并且使用一个或多个解密密钥来对秘密解密。
在1610处,该设备可以使用密封密钥来锁定秘密。例如,该设备可以引起软件模块的新版本使用密封密钥来锁定秘密。在一些示例中,锁定秘密可以包括使用密封密钥来生成一个或多个加密密钥,并且使用一个或多个加密密钥来对秘密加密。
图17是用于使用一个或多个软件模块来授权软件更新的说明性过程1700的流程图。在1702处,在设备上执行的信任框架可以从更新机构接收元数据,元数据包括用于要被更新的软件模块的SMD。
在1704处,在该设备上执行的信任框架可以向要被更新的软件模块提供软件模块描述符。在1706处,在该设备上执行的信任框架可以从软件模块接收用于执行用于软件模块的更新的授权。例如,软件模块可以使用元数据来验证SMD包括指示正确软件模块名称的数据、软件模块的最新版本和/或适当的机构已经签名SMD的数据。
在1708处,在该设备上执行的信任框架可以下载与软件模块相关联的已更新软件模块,并且在1710处,在该设备上执行的信任框架可以使用已更新软件模块来替换软件模块。
示例条款
A:一种设备,包括:处理器;以及包括模块的计算机可读介质,所述模块在由所述处理器执行时,将所述设备配置为执行引导过程,所述模块包括:密码模块,其被配置为使用熔丝得出秘密值来生成密封种子,所述密封种子用于重新验证先前在软件更新之后由所述设备验证并且由所述设备使用认证码签名的软件组件;以及验证模块,其被配置为:取回与所述软件组件相关联的软件描述符;使用所述软件描述符和所述密封种子来验证所述软件组件;以及至少部分基于验证所述软件组件,引起所述设备继续执行所述引导过程。
B:如段落A所述的设备,其中为了使用所述软件描述符和所述密封种子来验证所述软件组件,所述验证模块被配置为使用所述密封种子来检查所述软件描述符上的所述认证码。
C:如段落A或B所述的设备,其中所述密码模块还被配置为使用所述密封种子和所述软件描述符来生成用于所述软件组件的密封密钥。
D:如段落A至C中的任一项所述的设备,所述模块还包括被配置为使用所述密封密钥来密封所述软件组件的秘密的密封模块。
E:如段落A至D中的任一项所述的设备,其中为了使用所述密封密钥来密封所述秘密,所述密封模块被配置为:使用所述密封密钥来生成一个或多个加密密钥;以及使用所述一个或多个加密密钥来对所述软件组件的所述秘密加密。
F:如段落A至E中的任一项所述的设备,其中所述验证模块还被配置为使用与附加软件组件相关联的软件描述符和所述密封密钥来验证所述附加软件组件。
G:如段落A至F中的任一项所述的设备,其中所述设备包括低资源设备。
H:一种具有用于对设备编程以执行操作的计算机可执行指令的计算机可读介质,所述操作包括:向分布式资源发送所述设备的设备标识;从所述分布式资源接收证明种子;使用所述证明种子来从所述设备的至少一个软件模块描述符生成证明秘密,所述至少一个软件模块描述符与所述设备上的一个或多个软件模块相关联;至少部分基于所述证明秘密来生成证明语句;以及向所述分布式资源发送所述证明语句,以获取所述设备上的所述一个或多个软件模块的验证。
I:如段落H所述的计算机可读介质,其中所述设备身份包括设备公钥,接收所述证明种子包括接收由所述设备公钥加密的证明种子,并且所述操作还包括:使用设备私钥来对所述加密的证明种子解密以恢复所述证明种子。
J:如段落H或I所述的计算机可读介质,其中接收所述证明种子包括接收由与所述设备相关联的内部保护器密钥加密的证明种子,并且所述操作还包括:使用所述内部保护器密钥对所述加密的证明密钥解密以恢复所述证明种子。
K:如段落H至J中的任一项所述的计算机可读介质,其中所述设备上的所述一个或多个软件模块包括第一软件模块和第二软件模块;并且其中执行密码函数以使用所述证明种子来从所述设备的至少一个软件模块描述符生成所述证明秘密包括:执行第一密码函数,以使用所述证明种子来从与所述第一软件模块相关联的第一软件模块描述符生成证明密钥;以及执行第二密码函数,以使用所述证明密钥来从与所述第二软件模块相关联的第二软件模块描述符生成所述证明秘密。
L:如段落H至K中的任一项所述的计算机可读介质,其中所述分布式资源至少包括更新机构和第三方实体,并且所述操作还包括:从所述更新机构接收被加密到所述证明秘密的证明身份密钥和证明证书;以及使用所述证明秘密来对被加密到所述证明秘密的所述证明身份密钥和所述证明证书解密;并且其中向所述分布式资源发送所述证明语句以获取所述设备上的所述一个或多个软件模块的验证包括向所述第三方实体发送所述证明证书和所述证明语句以验证所述设备。
M:如段落H至L中的任一项所述的计算机可读介质,其中:所述分布式资源包括更新机构或第三方实体中的至少一种;所述设备身份的发送包括向所述更新机构发送所述设备身份;所述证明种子的接收包括从所述更新机构接收所述证明种子;并且所述证明语句的发送包括向所述第三方实体发送所述证明语句,其中向所述第三方实体发送所述证明语句引起所述第三方实体向证明机构发送所述证明语句以用于验证。
N:如段落H至M中的任一项所述的计算机可读介质,其中所述设备包括低资源设备。
O:一种方法,包括:从设备接收与所述设备相关联的设备身份;向所述设备发送用于软件模块的软件更新;向所述设备发送证明种子;以及至少部分基于所述证明种子和用于所述软件模块的所述软件更新来生成用于验证所述设备的证明秘密。
P:如段落O所述的方法,其中生成所述证明秘密包括执行密码函数,以使用所述证明种子来从与所述软件模块相关联的软件模块描述符生成所述证明秘密。
Q:如段落O或P所述的方法,其中所述设备身份包括与所述设备相关联的设备公钥,并且其中在向所述设备发送所述证明种子之前,所述方法还包括使用所述设备公钥来对所述证明种子加密。
R:如段落O至Q中的任一项所述的方法,其中在向所述设备发送所述证明种子之前,所述方法还包括:向身份机构发送与所述设备相关联的设备身份;从所述身份机构接收验证所述设备的身份的消息;以及使用与所述设备相关联的内部保护器密钥来对所述证明种子加密。
S:如段落O至R中的任一项所述的方法,还包括:生成证明身份密钥;接收证明证书;使用所述证明秘密来对所述证明身份密钥和所述证明证书加密;以及向所述设备发送被加密到所述证明秘密的所述证明身份密钥和所述证明证书。
T:如段落O至S中的任一项所述的方法,其中所述设备包括低资源设备。
U:一种其上具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于将计算机配置为执行如段落O至T中的任一项所述的方法。
V:一种设备,包括:其上具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于将计算机配置为执行如段落O至T中的任一项所述的方法,处理单元被适配为执行所述指令以执行如段落O至T中的任一项所述的方法。
W:一种系统,包括:用于使用熔丝得出秘密值来生成密封种子的装置,所述密封种子用于重新验证先前在软件更新之后由设备验证并且由所述设备使用认证码签名的软件组件;用于取回与所述软件组件相关联的软件描述符的装置;用于使用所述软件描述符和所述密封种子来验证所述软件组件的装置;以及用于至少部分基于验证所述软件组件来引起所述设备继续执行所述引导过程的装置。
X:如段落W所述的系统,其中为了使用所述软件描述符和所述密封种子来验证所述软件组件,所述系统包括用于使用所述密封种子来检查所述软件描述符上的所述认证码的装置。
Y:如段落W或X所述的系统,还包括用于使用所述密封种子和所述软件描述符来生成用于所述软件组件的密封密钥的装置。
Z:如段落W至Y中的任一项所述的系统,还包括用于使用所述密封密钥来密封所述软件组件的秘密的装置。
AA:如段落W至Z中的任一项所述的系统,其中为了使用所述密封密钥来密封所述秘密,所述系统还包括用于使用所述密封密钥来生成一个或多个加密密钥的装置;以及用于使用所述一个或多个加密密钥来对所述软件组件的所述秘密加密的装置。
AB:如段落W至AA中的任一项所述的系统,还包括用于使用与附加软件组件相关联的软件描述符和所述密封密钥来验证所述附加软件组件的装置。
AC:如段落W至AB中的任一项所述的系统,其中所述设备包括低资源设备。
AD:一种设备,包括:处理器;以及包括模块的计算机可读介质,所述模块在由所述处理器执行时,将所述设备配置为至少部分基于接收到对用于软件的更新来执行安全引导过程,所述模块包括:密码模块,其被配置为通过以下各项来保护所述设备:生成密封种子;至少部分基于所述密封种子和与所述软件的先前版本相关联的至少一个软件描述符来生成迁移密钥;以及至少部分基于所述密封种子和与所述软件的新版本相关联的至少一个软件描述符来生成密封密钥。
AE:如段落AD所述的设备,其中:所述密码模块被配置为执行密码函数,以使用所述密封种子来从与所述软件的先前版本相关联的至少一个软件描述符生成所述迁移密钥;并且所述密码模块被配置为执行密码函数,以使用所述密封种子来从与所述软件的新版本相关联的至少一个软件描述符生成所述密钥。
AF:如段落AD或AE所述的设备,其中:所述软件包括第一软件组件和第二软件组件;为了生成所述迁移密钥,所述密码模块被配置为:执行第一密码函数,以使用所述密封种子来从与所述第一软件组件的先前版本相关联的第一软件描述符生成中间迁移密钥;以及执行第二密码函数,以使用所述中间迁移密钥来从与所述第二软件组件的先前版本相关联的第二软件描述符生成所述迁移密钥;以及生成所述密钥,所述密码模块被配置为:执行第三密码函数,以使用所述密封种子来从与所述第一软件组件的新版本相关联的第一软件描述符生成中间密钥;以及执行第四密码函数,以使用所述中间密钥来从与所述第二软件组件的新版本相关联的第二软件描述符生成所述密封密钥。
AG:如段落AD至AF中的任一项所述的设备,其中为了生成所述密封种子,所述密码模块被配置为将所述设备的熔丝得出秘密到设备密封常数的串联散列化。
AH:如段落AD至AG中的任一项所述的设备,所述模块还包括被配置为使用所述迁移密钥来取回与所述软件的先前版本相关联的秘密的迁移模块。
AI:如段落AD至AH中的任一项所述的设备,其中所述密码模块还被配置为使用所述迁移密钥来生成一个或多个解密密钥,并且其中为了取回所述秘密,所述迁移模块被配置为使用所述一个或多个解密密钥来对所述秘密解密。
AJ:如段落AD至AI中的任一项所述的设备,所述模块还包括被配置为使用所述密封密钥来密封所述软件的新版本的秘密的密封模块。
AK:如段落AD至AJ中的任一项所述的设备,其中所述密码模块还被配置为使用所述密封密钥来生成一个或多个加密密钥,并且其中为了密封所述秘密,所述密封模块被配置为使用所述一个或多个加密密钥来对所述秘密加密。
AL:一种方法,包括:接收用于软件的更新;生成密封种子;至少部分基于所述密封种子和与软件的先前版本相关联的至少一个软件描述符来生成迁移密钥;以及至少部分基于所述密封种子和与所述软件的新版本相关联的至少一个软件描述符来生成密封密钥。
AM:如段落AL所述的方法,其中:生成所述迁移密钥包括执行密码函数,以使用所述密封种子来从与所述软件的先前版本相关联的至少一个软件描述符生成所述迁移密钥;并且生成所述密封密钥包括执行密码函数,以使用所述密封种子来从与所述软件的新版本相关联的至少一个软件描述符生成所述密封密钥。
AN:如段落AL或AM所述的方法,其中:所述软件包括第一软件模块和第二软件模块;生成所述迁移密钥包括:执行第一密码函数,以使用所述密封种子来从与所述第一软件模块的先前版本相关联的第一软件描述符生成中间迁移密钥;以及执行第二密码函数,以使用所述中间迁移密钥来从与所述第二软件模块的先前版本相关联的第二软件描述符生成所述迁移密钥;并且生成所述密封密钥包括:执行第三密码函数,以使用所述密封种子来从与所述第一软件模块的新版本相关联的第一软件描述符生成中间密钥;以及执行第四密码函数,以使用所述中间密钥来从与所述第二软件模块的新版本相关联的第二软件描述符生成所述密封密钥。
AO:如段落AL至AN中的任一项所述的方法,其中为了生成所述密封种子,所述方法包括将所述设备的熔丝得出秘密到设备密封常数的串联散列化。
AP:如段落AL至AO中的任一项所述的方法,还包括使用所述迁移密钥来取回与所述软件的先前版本相关联的秘密。
AQ:如段落AL至AP中的任一项所述的方法,还包括使用所述迁移密钥来生成一个或多个解密密钥,并且其中取回所述秘密包括使用所述一个或多个解密密钥来对所述秘密解密。
AR:如段落AL至AQ中的任一项所述的方法,还包括使用所述密封密钥来密封所述软件的新版本的秘密。
AS:如段落AL至AR中的任一项所述的方法,还包括使用所述密封密钥来生成一个或多个加密密钥,并且其中密封所述秘密包括使用所述一个或多个加密密钥来对所述秘密加密。
AT:一种其上具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于将计算机配置为执行如段落AL至AR中的任一项所述的方法。
AU:一种设备,包括:其上具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于将计算机配置为执行如段落AL至AR中的任一项所述的方法,处理单元被适配为执行所述指令以执行如AL至AR中的任一项所述的方法。
AV:一种具有用于对设备编程以执行操作的计算机可执行指令的计算机可读介质,所述操作包括:接收用于软件的更新;生成密封种子;至少部分基于所述密封种子和与软件的先前版本相关联的至少一个软件描述符来生成迁移密钥;以及至少部分基于所述密封种子和与所述软件的新版本相关联的至少一个软件描述符来生成密封密钥。
AW:如段落AV所述的计算机可读介质,其中:生成所述迁移密钥包括执行密码函数,以使用所述密封种子来从与所述软件的先前版本相关联的至少一个软件描述符生成所述迁移密钥;并且生成所述密封密钥包括执行密码函数,以使用所述密封种子来从与所述软件的新版本相关联的至少一个软件描述符生成所述密封密钥。
AX:如段落AV或AW所述的计算机可读介质,所述操作还包括使用所述迁移密钥来取回与所述软件的先前版本相关联的秘密。
AY:如段落AV至AX中的任一项所述的计算机可读介质,所述操作还包括使用所述密封密钥来密封所述软件的新版本的秘密。
AZ:一种系统,包括:用于生成密封种子的装置;用于至少部分基于所述密封种子和与软件的先前版本相关联的至少一个软件描述符来生成迁移密钥的装置;以及用于至少部分基于所述密封种子和与所述软件的新版本相关联的至少一个软件描述符来生成密封密钥的装置。
BA:如段落AZ所述的系统,还包括用于执行密码函数以使用所述密封种子来从与所述软件的先前版本相关联的至少一个软件描述符生成所述迁移密钥的装置;以及用于执行执行密码函数以使用所述密封种子来从与所述软件的新版本相关联的至少一个软件描述符生成所述密封密钥的装置。
BB:如段落AZ或BA所述的系统,其中:所述软件包括第一软件组件和第二软件组件;为了生成所述迁移密钥,所述系统包括用于执行第一密码函数,以使用所述密封种子来从与所述第一软件组件的先前版本相关联的第一软件描述符生成中间迁移密钥的装置;以及用于执行第二密码函数,以使用所述中间迁移密钥来从与所述第二软件组件的先前版本相关联的第二软件描述符生成所述迁移密钥的装置;并且为了生成密封密钥,所述系统包括用于执行第三密码函数,以使用所述密封种子来从与所述第一软件组件的新版本相关联的第一软件描述符生成中间密钥的装置;以及用于执行第四密码函数,以使用所述中间密钥来从与所述第二软件组件的新版本相关联的第二软件描述符生成所述密封密钥的装置。
BC:如段落AZ至BB中的任一项所述的系统,其中为了生成所述密封种子,所述系统包括用于将所述设备的熔丝得出秘密到设备密封常数的串联散列化的装置。
BD:如段落AZ至AC中的任一项所述的系统,还包括用于使用所述迁移密钥来取回与所述软件的先前版本相关联的秘密的装置。
BE:如段落AZ至BD中的任一项所述的系统,还包括用于使用所述迁移密钥来生成一个或多个解密密钥的装置,并且其中为了取回所述秘密,所述系统包括用于使用所述一个或多个解密密钥来对所述秘密解密的装置。
BF:如段落AZ至BE中的任一项所述的系统,还包括用于使用所述密封密钥来密封所述软件的新版本的秘密的装置。
BG:如段落AZ至BF中的任一项所述的系统,还包括用于使用所述密封密钥来生成一个或多个加密密钥的装置,并且其中为了密封所述秘密,所述系统包括用于使用所述一个或多个加密密钥来对所述秘密加密的装置。
结论
尽管已经用特定于结构特征和/或方法动作的语言描述了技术,但是应当理解,所附权利要求不一定限于所描述的特征或动作。相反,这些特征和行为被描述为这样的技术的示例实现方式。
示例过程的操作在单独的框中被示出,并且参考这些框而被总结。这些过程被示出为逻辑流程块,其中每个块可以表示可以用硬件、软件或其组合而被实现的一个或多个操作。在软件的上下文中,操作表示被存储在一个或多个计算机可读介质上的计算机可执行指令,这些计算机可执行指令在由一个或多个处理器执行时,从而使得一个或多个处理器能够执行所列举的操作。通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且任何数目的所描述的操作可以按照任何顺序而被执行,按照任何顺序而被组合,被细分为多个子操作,和/或被并行执行,以实现所描述的过程。所描述的过程可以由与一个或多个设备106、120、204、220、234、248、300、400、500,902和/或1002相关联的资源来执行,诸如一个或多个内部或外部CPU或GPU、和/或一个或多个硬件逻辑,诸如FPGA、DSP或其他类型的加速器。
以上描述的所有方法和过程可以在由一个或多个通用计算机或处理器执行的软件代码模块中被体现并且经由其而被完全自动化。代码模块可以被存储在任何类型的计算机可读存储介质或其他计算机存储设备中。或者,一些或全部方法可以在专用计算机硬件中被实施。
除非另有特别说明,否则,除其他之外,诸如“可以(can)”、“可以(could)”、“可以(might)”或“可以(may)”等条件语言在上下文中被理解为表示某些示例包括,而其他示例不包括某些特征、元素和/或步骤。因此,这样的条件语言通常不旨在暗示某些特征、元素和/或步骤以任何方式需要用于一个或多个示例,也不旨在暗示一个或多个示例必然包括用于在具有或不具有用户输入或提示的情况下决定在任何特定示例中是否包括或将要被执行某些特征、元素和/或步骤的逻辑。除非另有特别说明,否则诸如短语“X、Y或Z中的至少一个”等连接语言应当被理解为表示项目、术语等可以是X、Y或Z、或者其组合。
本文中描述和/或附图中描绘的流程图中的任何例程描述、元素或框应当被理解为潜在地表示包括用于实现例程中的特定逻辑功能或元素的一个或多个可执行指令的代码的模块、分段或部分。如本领域技术人员应当理解的,备选实现方式被包括在本文中描述的示例的范围内,其中可以删除元素或功能,或者可以按照与所示或所讨论的顺序不同步地执行元素或功能,包括基本同步或以相反顺序,这取决于所涉及的功能。应当强调的是,可以对上述示例做出很多变化和修改,其要素被理解为是其他可接受的示例。所有这些修改和变化都旨在被包括在本公开的范围内并且由以下权利要求保护。
Claims (18)
1.一种电子设备,包括:
处理器;以及
包括模块的计算机可读存储设备,所述模块在由所述处理器执行时,将所述设备配置为至少部分基于接收到用于软件的更新来执行安全引导过程,所述模块包括:
密码模块,其被配置为通过以下各项来保护所述设备:
至少部分基于所述设备的熔丝得出秘密值,通过将所述设备的所述熔丝得出秘密值到设备密封常数的串联散列化来生成密封种子;
至少部分基于所述密封种子、以及与所述软件的先前版本相关联的至少一个软件描述符来生成迁移密钥;
至少部分基于所述密封种子、以及与所述软件的新版本相关联的至少一个软件描述符来生成密封密钥,其中所述密封秘钥被用来生成一个或多个加密密钥;以及
基于所述生成密封密钥来加密所述软件的秘密。
2.根据权利要求1所述的设备,其中:
所述密码模块被配置为执行密码函数,以使用所述密封种子从与所述软件的所述先前版本相关联的所述至少一个软件描述符生成所述迁移密钥;并且
所述密码模块被配置为执行密码函数,以使用所述密封种子从与所述软件的所述新版本相关联的所述至少一个软件描述符生成所述密封密钥。
3.根据权利要求1所述的设备,其中:
所述软件包括第一软件组件和第二软件组件;
为了生成所述迁移密钥,所述密码模块被配置为:
执行第一密码函数,以使用所述密封种子从与所述第一软件组件的先前版本相关联的第一软件描述符生成中间迁移密钥;以及
执行第二密码函数,以使用所述中间迁移密钥从与所述第二软件组件的先前版本相关联的第二软件描述符生成所述迁移密钥;并且
为了生成所述密封密钥,所述密码模块被配置为:
执行第三密码函数,以使用所述密封种子从与所述第一软件组件的新版本相关联的第一软件描述符生成中间密封密钥;以及
执行第四密码函数,以使用所述中间密封密钥从与所述第二软件组件的新版本相关联的第二软件描述符生成所述密封密钥。
4.根据权利要求1所述的设备,所述模块还包括迁移模块,所述迁移模块被配置为使用所述迁移密钥来取回与所述软件的所述先前版本相关联的秘密。
5.根据权利要求4所述的设备,其中所述密码模块还被配置为使用所述迁移密钥来生成一个或多个解密密钥,并且其中为了取回所述秘密,所述迁移模块被配置为使用所述一个或多个解密密钥来解密所述秘密。
6.根据权利要求4所述的设备,所述模块还包括密封模块,所述密封模块被配置为使用所述密封密钥来密封用于所述软件的所述新版本的所述秘密。
7.根据权利要求6所述的设备,其中所述密码模块还被配置为使用所述密封密钥生成一个或多个加密密钥,并且其中为了密封所述秘密,所述密封模块被配置为使用所述一个或多个加密密钥加密所述秘密。
8.一种用于迁移秘密的方法,包括:
接收用于软件的更新;
至少部分基于执行所述软件的设备的熔丝得出秘密值,通过将所述设备的所述熔丝得出秘密值到设备密封常数的串联散列化来生成密封种子;
至少部分基于所述密封种子、以及与所述软件的先前版本相关联的至少一个软件描述符来生成迁移密钥;
至少部分基于所述密封种子、以及与所述软件的新版本相关联的至少一个软件描述符来生成密封密钥,其中所述密封秘钥被用来生成一个或多个加密密钥;以及
基于所述生成密封密钥来加密所述软件的秘密;
其中以上步骤由所述设备执行。
9.根据权利要求8所述的方法,其中:
生成所述迁移密钥包括执行密码函数,以使用所述密封种子从与所述软件的所述先前版本相关联的所述至少一个软件描述符生成所述迁移密钥;并且
生成所述密封密钥包括执行密码函数,以使用所述密封种子从与所述软件的所述新版本相关联的所述至少一个软件描述符生成所述密封密钥。
10.根据权利要求8所述的方法,其中:
所述软件包括第一软件模块和第二软件模块;
生成所述迁移密钥包括:
执行第一密码函数,以使用所述密封种子从与所述第一软件模块的先前版本相关联的第一软件描述符生成中间迁移密钥;以及
执行第二密码函数,以使用所述中间迁移密钥从与所述第二软件模块的先前版本相关联的第二软件描述符生成所述迁移密钥;并且
生成所述密封密钥包括:
执行第三密码函数,以使用所述密封种子从与所述第一软件模块的新版本相关联的第一软件描述符生成中间密封密钥;以及
执行第四密码函数,以使用所述中间密封密钥从与所述第二软件模块的新版本相关联的第二软件描述符生成所述密封密钥。
11.根据权利要求8所述的方法,还包括使用所述迁移密钥来取回与所述软件的所述先前版本相关联的秘密。
12.根据权利要求11所述的方法,还包括使用所述迁移密钥来生成一个或多个解密密钥,并且其中取回所述秘密包括使用所述一个或多个解密密钥来解密所述秘密。
13.根据权利要求11所述的方法,还包括使用所述密封密钥来密封用于所述软件的所述新版本的所述秘密。
14.根据权利要求13所述的方法,还包括使用所述密封密钥生成一个或多个加密密钥,并且其中密封所述秘密包括使用所述一个或多个加密密钥加密所述秘密。
15.一种具有计算机可执行指令的计算机可读存储设备,所述指令用来将设备编程以执行操作,所述操作包括:
接收用于软件的更新;
至少部分基于所述设备的熔丝得出秘密值,通过将所述设备的所述熔丝得出秘密值到设备密封常数的串联散列化来生成密封种子;
至少部分基于所述密封种子、以及与所述软件的先前版本相关联的至少一个软件描述符来生成迁移密钥;
至少部分基于所述密封种子、以及与所述软件的新版本相关联的至少一个软件描述符来生成密封密钥,其中所述密封秘钥被用来生成一个或多个加密密钥;以及
基于所述生成密封密钥来加密所述软件的秘密。
16.根据权利要求15所述的计算机可读存储设备,其中:
生成所述迁移密钥包括执行密码函数,以使用所述密封种子从与所述软件的所述先前版本相关联的所述至少一个软件描述符生成所述迁移密钥;并且
生成所述密封密钥包括执行密码函数,以使用所述密封种子从与所述软件的所述新版本相关联的所述至少一个软件描述符生成所述密封密钥。
17.根据权利要求15所述的计算机可读存储设备,所述操作还包括使用所述迁移密钥来取回与所述软件的所述先前版本相关联的秘密。
18.根据权利要求17所述的计算机可读存储设备,所述操作还包括使用所述密封密钥来密封用于所述软件的所述新版本的所述秘密。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/880,813 US9917687B2 (en) | 2015-10-12 | 2015-10-12 | Migrating secrets using hardware roots of trust for devices |
US14/880,813 | 2015-10-12 | ||
PCT/US2016/055112 WO2017066017A1 (en) | 2015-10-12 | 2016-10-03 | Migrating secrets using hardware roots of trust for devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108140093A CN108140093A (zh) | 2018-06-08 |
CN108140093B true CN108140093B (zh) | 2021-07-27 |
Family
ID=57206359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680059915.7A Active CN108140093B (zh) | 2015-10-12 | 2016-10-03 | 使用用于设备的硬件信任根来迁移秘密 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9917687B2 (zh) |
EP (1) | EP3362939B1 (zh) |
CN (1) | CN108140093B (zh) |
WO (1) | WO2017066017A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130114672A (ko) | 2011-01-19 | 2013-10-17 | 인터내셔널 비지네스 머신즈 코포레이션 | 소프트웨어를 업데이트하는 장치 및 방법 |
US20170168797A1 (en) * | 2015-12-09 | 2017-06-15 | Microsoft Technology Licensing, Llc | Model-driven updates distributed to changing topologies |
US9977914B1 (en) * | 2016-02-25 | 2018-05-22 | Sprint Communications Company L.P. | Electronic device security through boot cycles |
US10572690B2 (en) * | 2016-09-02 | 2020-02-25 | Blackberry Limited | Method and device having secure removable modules |
US11398906B2 (en) * | 2016-11-10 | 2022-07-26 | Brickell Cryptology Llc | Confirming receipt of audit records for audited use of a cryptographic key |
US11405201B2 (en) * | 2016-11-10 | 2022-08-02 | Brickell Cryptology Llc | Secure transfer of protected application storage keys with change of trusted computing base |
CN106899437B (zh) * | 2017-02-23 | 2020-05-01 | 百富计算机技术(深圳)有限公司 | 一种升级pos机模块固件的方法和装置 |
US11229023B2 (en) | 2017-04-21 | 2022-01-18 | Netgear, Inc. | Secure communication in network access points |
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 |
US10871952B2 (en) * | 2017-12-20 | 2020-12-22 | Nio Usa, Inc. | Method and system for providing secure over-the-air vehicle updates |
US11321466B2 (en) * | 2018-03-09 | 2022-05-03 | Qualcomm Incorporated | Integrated circuit data protection |
WO2020117903A1 (en) * | 2018-12-06 | 2020-06-11 | Convida Wireless, Llc | Security lifecycle management of devices in a communications network |
US10346614B1 (en) * | 2019-03-01 | 2019-07-09 | Hajoon Ko | Security system and method for internet of things |
US11233650B2 (en) | 2019-03-25 | 2022-01-25 | Micron Technology, Inc. | Verifying identity of a vehicle entering a trust zone |
US11218330B2 (en) | 2019-03-25 | 2022-01-04 | Micron Technology, Inc. | Generating an identity for a computing device using a physical unclonable function |
US11316841B2 (en) * | 2019-03-25 | 2022-04-26 | Micron Technology, Inc. | Secure communication between an intermediary device and a network |
US11361660B2 (en) | 2019-03-25 | 2022-06-14 | Micron Technology, Inc. | Verifying identity of an emergency vehicle during operation |
US11323275B2 (en) * | 2019-03-25 | 2022-05-03 | Micron Technology, Inc. | Verification of identity using a secret key |
KR20210017083A (ko) * | 2019-08-06 | 2021-02-17 | 삼성전자주식회사 | 퓨즈된 키에 기반하여 증명 인증서를 생성하는 전자 장치 및 방법 |
US11502818B2 (en) * | 2020-05-06 | 2022-11-15 | King Saud University | System to secure encoding and mapping on elliptic curve cryptography (ECC) |
US20220198064A1 (en) * | 2020-12-22 | 2022-06-23 | International Business Machines Corporation | Provisioning secure/encrypted virtual machines in a cloud infrastructure |
US11706039B2 (en) * | 2020-12-26 | 2023-07-18 | Intel Corporation | ISA accessible physical unclonable function |
US11700135B2 (en) * | 2020-12-26 | 2023-07-11 | Intel Corporation | ISA accessible physical unclonable function |
US12022013B2 (en) | 2020-12-26 | 2024-06-25 | Intel Corporation | ISA accessible physical unclonable function |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101258505A (zh) * | 2005-07-26 | 2008-09-03 | 苹果公司 | 安全的软件更新 |
CN101295339A (zh) * | 2007-04-27 | 2008-10-29 | 惠普开发有限公司 | 安全计算机系统更新 |
CN101897211A (zh) * | 2007-12-17 | 2010-11-24 | 微软公司 | 计算机秘密的迁移 |
CN102143158A (zh) * | 2011-01-13 | 2011-08-03 | 北京邮电大学 | 基于tpm的数据防泄漏方法 |
CN102171704A (zh) * | 2008-10-03 | 2011-08-31 | 微软公司 | 用硬件加密存储设备进行外部加密和恢复管理 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7073063B2 (en) * | 1999-03-27 | 2006-07-04 | Microsoft Corporation | Binding a digital license to a portable device or the like in a digital rights management (DRM) system and checking out/checking in the digital license to/from the portable device or the like |
US7007050B2 (en) * | 2001-05-17 | 2006-02-28 | Nokia Corporation | Method and apparatus for improved pseudo-random number generation |
US6715085B2 (en) * | 2002-04-18 | 2004-03-30 | International Business Machines Corporation | Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function |
US7475427B2 (en) | 2003-12-12 | 2009-01-06 | International Business Machines Corporation | Apparatus, methods and computer programs for identifying or managing vulnerabilities within a data processing network |
US20060265508A1 (en) * | 2005-05-02 | 2006-11-23 | Angel Franklin J | System for administering a multiplicity of namespaces containing state information and services |
US20070039042A1 (en) | 2005-08-12 | 2007-02-15 | First Data Corporation | Information-security systems and methods |
US8510859B2 (en) * | 2006-09-26 | 2013-08-13 | Intel Corporation | Methods and arrangements to launch trusted, co-existing environments |
JP5196883B2 (ja) * | 2007-06-25 | 2013-05-15 | パナソニック株式会社 | 情報セキュリティ装置および情報セキュリティシステム |
DE102008021567B4 (de) * | 2008-04-30 | 2018-03-22 | Globalfoundries Inc. | Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel |
US10459711B2 (en) * | 2008-08-12 | 2019-10-29 | Adobe Inc. | Updating applications using migration signatures |
CN102474724A (zh) | 2009-07-15 | 2012-05-23 | 皇家飞利浦电子股份有限公司 | 用于在无线网中安全地广播敏感数据的方法 |
US20120137137A1 (en) | 2010-11-30 | 2012-05-31 | Brickell Ernest F | Method and apparatus for key provisioning of hardware devices |
EP2700256B1 (en) | 2011-05-20 | 2017-11-29 | BlackBerry Limited | Verifying passwords on a mobile device |
US9344453B2 (en) | 2011-06-10 | 2016-05-17 | Koninklijke Philips N.V. | Secure protocol execution in a network |
US9588756B2 (en) | 2012-03-22 | 2017-03-07 | Irdeto B.V. | Updating software components in a program |
EP2979221B1 (en) | 2013-03-29 | 2020-09-23 | OLogN Technologies AG | Systems, methods and apparatuses for secure storage of data using a security-enhancing chip |
US9239920B2 (en) | 2013-04-23 | 2016-01-19 | Qualcomm Incorporated | Generation of working security key based on security parameters |
US20150121054A1 (en) | 2013-10-31 | 2015-04-30 | Advanced Micro Devices, Inc. | Platform Secure Boot |
US9348997B2 (en) * | 2014-03-13 | 2016-05-24 | Intel Corporation | Symmetric keying and chain of trust |
US9652631B2 (en) * | 2014-05-05 | 2017-05-16 | Microsoft Technology Licensing, Llc | Secure transport of encrypted virtual machines with continuous owner access |
US9563765B2 (en) * | 2015-02-10 | 2017-02-07 | Apple Inc. | Baseband secure boot with remote storage |
-
2015
- 2015-10-12 US US14/880,813 patent/US9917687B2/en active Active
-
2016
- 2016-10-03 WO PCT/US2016/055112 patent/WO2017066017A1/en active Application Filing
- 2016-10-03 EP EP16787596.2A patent/EP3362939B1/en active Active
- 2016-10-03 CN CN201680059915.7A patent/CN108140093B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101258505A (zh) * | 2005-07-26 | 2008-09-03 | 苹果公司 | 安全的软件更新 |
CN101295339A (zh) * | 2007-04-27 | 2008-10-29 | 惠普开发有限公司 | 安全计算机系统更新 |
CN101897211A (zh) * | 2007-12-17 | 2010-11-24 | 微软公司 | 计算机秘密的迁移 |
CN102171704A (zh) * | 2008-10-03 | 2011-08-31 | 微软公司 | 用硬件加密存储设备进行外部加密和恢复管理 |
CN102143158A (zh) * | 2011-01-13 | 2011-08-03 | 北京邮电大学 | 基于tpm的数据防泄漏方法 |
Non-Patent Citations (1)
Title |
---|
"基于软件描述的软件更新及其安全问题研究";任声骏;《中国优秀硕士学位论文全文数据库 信息科技辑》;20070215;第I138-104页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108140093A (zh) | 2018-06-08 |
US20170104580A1 (en) | 2017-04-13 |
US9917687B2 (en) | 2018-03-13 |
EP3362939B1 (en) | 2019-07-10 |
EP3362939A1 (en) | 2018-08-22 |
WO2017066017A1 (en) | 2017-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108140093B (zh) | 使用用于设备的硬件信任根来迁移秘密 | |
CN108140085B (zh) | 用于提供可信平台的设备和方法 | |
US11921911B2 (en) | Peripheral device | |
US10721080B2 (en) | Key-attestation-contingent certificate issuance | |
CN109313690B (zh) | 自包含的加密引导策略验证 | |
CN107077574B (zh) | 用于客户端设备的信任服务 | |
US10693851B2 (en) | Data protection keys | |
CN109154972B (zh) | 使用基于硬件的安全隔离区域来防止电子设备上的盗版和作弊 | |
US10146916B2 (en) | Tamper proof device capability store | |
CN117397198A (zh) | 绑定加密密钥证明 | |
US20240187262A1 (en) | Encrypted and authenticated firmware provisioning with root-of-trust based security | |
CN114173327A (zh) | 基于5g行业专网的认证方法及终端 | |
US20220035924A1 (en) | Service trust status |
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 |