CN108140085B - 用于提供可信平台的设备和方法 - Google Patents

用于提供可信平台的设备和方法 Download PDF

Info

Publication number
CN108140085B
CN108140085B CN201680059552.7A CN201680059552A CN108140085B CN 108140085 B CN108140085 B CN 108140085B CN 201680059552 A CN201680059552 A CN 201680059552A CN 108140085 B CN108140085 B CN 108140085B
Authority
CN
China
Prior art keywords
attestation
key
software
sealing
seed
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
Application number
CN201680059552.7A
Other languages
English (en)
Other versions
CN108140085A (zh
Inventor
D·R·伍滕
A·马罗克
D·马顿
P·恩格兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN108140085A publication Critical patent/CN108140085A/zh
Application granted granted Critical
Publication of CN108140085B publication Critical patent/CN108140085B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (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)而不丢失设备的身份的能力。该框架通过使用可以替换的证明秘密值表示设备的身份来提供这种改进。例如,当被危及代码被更新为新版本的软件时,可以替换证明秘密值。
为了使得设备能够使用本文中描述的框架来实现其信任根,厂商(和/或其他实体)可以使用设备秘密对设备进行编程。设备秘密可以包括统计学上唯一的值,其在厂商初始对设备秘密进行编程之后在设备外部是未知的。在一些示例中,厂商可以通过将设备秘密存储在设备上的非易失性一次写入存储器中来使用设备秘密对设备进行编程。例如,厂商可以通过将设备秘密存储在设备上的eFuse中来使用设备秘密对设备进行编程。因此,在一些示例中,设备秘密仅在加电事件期间可访问,并且被不可逆地禁用直到下一加电事件。
该设备可以使用设备秘密来生成熔丝导出秘密(fuse-derived secret FDS)值。该设备可以使用FDS值来推导出设备在该设备的常规引导周期和更新引导周期两者的期间所使用的所有密码学上唯一的秘密和值。在一些示例中,该设备可以通过对设备的不可变代码的散列到设备秘密的级联进行散列来生成FDS值。不可变代码可以包括存储在设备上的策略检查代码,在设备运行任何软件模块之前,设备根据由框架所定义的策略来检查该策略检查代码。例如,不可变代码可以包括物理ROM代码和非ROM框架代码,其测量可以定义FDS。这样,在一些示例中,不可变代码存储在设备的计算机可读介质中。例如,设备可以将不可变代码存储在设备上的ROM中。另外地或替代地,该设备可以将一部分不可变代码存储在设备上的ROM中,并且将另一部分不可变代码存储在设备上的闪存或其他非易失性(NV)存储器中。
在常规引导周期中,该设备可以执行一系列引导操作,以便验证设备上的TCB引导链并且为软件模块生成密封密钥。另外,在一些示例中,该设备可以进一步为软件模块生成证明密钥。例如,为了验证TCB引导链,该设备可以运行验证协议,该验证协议确定引导链中的一个或多个软件模块是否满足一组策略要求。为了运行验证协议,该设备可以执行隐私密钥推导链。该隐私密钥推导链可以为链中的每个软件模块生成密封密钥。该隐私密钥推导链可以开始于设备使用设备的FDS值生成密封种子。为了生成密封种子,该设备可以对设备密封常数到FDS值的级联进行散列。在一些示例中,设备密封常数可以包括仅设备知道的私有二进制值。在一些示例中,设备密封常数可以包括在设备外部已知的公开二进制值。该设备然后可以使用密封种子为每个软件模块生成密封密钥。
例如,为了生成密封密钥,该设备可以执行一系列密码函数,其包括用于引导链中的每个软件模块的至少一个密码函数。例如,为了执行用于引导链中的第一软件模块的密码函数,不可变代码对该设备进行编程,以访问定义软件模块的身份的用于第一软件模块的软件模块描述符(SMD)。该设备可以将SMD存储在该设备的计算机可读介质中,诸如在设备的NV存储器中。该设备(和/或该框架)然后可以执行第一密钥推导函数(KDF),以使用FDS值从第一软件模块的SMD的散列中生成第一密封密钥。第一密封密钥可以特定于第一软件模块,并且因此第一软件模块可以使用第一密封密钥来访问和锁定其秘密。例如,在一些示例中,第一软件模块可以使用第一密封密钥生成一个或多个加密密钥。第一软件模块然后可以使用一个或多个加密密钥来加密/解密其秘密。
在第一软件模块加密其秘密之后,该设备和/或第一软件模块确定是否继续剩余软件模块的引导链序列,这在下面描述。为了继续引导链,该设备和/或第一软件模块使用第一密封密钥利用与上面针对第一软件模块所讨论的步骤类似的步骤,来为第二软件模块生成密封密钥。例如,不可变代码可以对该设备进行编程以访问用于第二软件模块的SMD。该设备然后可以执行第二KDF以使用第一密封密钥从第二软件模块的SMD的散列中生成第二密封密钥。第二软件模块然后可以使用第二密封密钥生成一个或多个加密密钥并且使用它们来锁定其秘密。在锁定第二软件模块的秘密之后,该设备和/或该框架可以针对引导链中的下一软件模块重复上述的密钥推导过程。
该设备继续使用以上步骤为引导链中的每个剩余软件模块生成密封密钥。在引导链完成之后,引导链中每个软件模块的秘密被锁定,并且从而被保护免受恶意代码的攻击。另外,为了确保秘密保持锁定,该设备和/或软件模块可以删除密封密钥和/或加密密钥。例如,该设备和/或第一软件模块可以在将控制传递到第二软件模块之前删除第一密封密钥和加密密钥。这确保了即使引导链中的另一软件模块受到危及,正常引导周期中,该设备可以进一步执行类似的一系列步骤以便生成证明(attestation)密钥,证明密钥由该设备使用以用于证明。为了生成证明密钥,该设备可以从更新机构获取加密的证明种子,可以由该设备将其存储在该设备的计算机可读介质(例如,NV存储器)中。该设备然后可以通过使用该设备的内部保护器密钥对加密的证明种子进行解密来恢复证明种子,该内部保护器密钥也可以由该设备使用FDS值生成。例如,该设备可以通过对设备隐私常数与FDS值的级联进行散列来生成内部保护器密钥。设备隐私常数可以包括特定于该设备的唯一二进制值。因此,与该设备的FDS值一样,内部保护器密钥也是特定于该设备的。
在使用内部保护器密钥对加密的证明种子进行解密之后,该设备可以通过对每个软件模块的证明密钥进行变形来生成证明密钥链。例如,类似于生成上述密封密钥,该设备可以为每个软件模块执行相应的KDF,以便使用先前的软件模块的证明密钥从相应软件模块的SMD中为相应软件模块生成证明密钥。在引导链的端部,该设备可以使用最后的证明密钥(即,证明秘密)来执行证明或登记(enroll)证明身份密钥。例如,该设备可以使用证明秘密来对证明语句进行签名,证明语句包括设备公钥或加密到设备公钥的证明秘密。证明语句可以发送给证明机构。证明机构然后可以在证明语句上验证签名,并且因此间接地验证由设备引导的软件模块的有效性,因为当且仅当其所有软件模块均有效(未被破坏)时设备才可以恢复有效的签名密钥。
在一些示例中,更新证明机构可以针对该设备生成被称为证明身份密钥以及证明种子的密钥对。更新机构然后可以与证明机构一起证实密钥对,并且基于密钥对的证实来接收证明证书。更新机构然后可以使用所生成的证明秘密来加密证明身份密钥和证明证书,更新机构可以使用与上述设备类似的步骤来生成该证明秘密。在对证明身份密钥和证明证书进行加密之后,更新机构可以将加密的证明身份密钥和证明证书发送给该设备,并且该设备可以使用加密的证明身份密钥和证明证书来验证软件更新。
例如,该设备可以在生成证明秘密之后对加密的证明身份密钥和证明证书进行解密。在一些示例中,该设备然后可以使用最后的软件模块(产生证明秘密的那个软件模块)的密封密钥来重新加密证明身份密钥。该设备然后可以使用证明身份密钥和证明证书来对软件更新进行证明。例如,只有包括正确设备公共身份的设备才能生成可以对加密的证明身份密钥和证明认证进行解密的证明秘密。该设备然后可以将证明证书存储在该设备的计算机可读介质(例如,NV存储器)中,并且使用证明证书来执行证明。在一些示例中,该设备在将证明证书存储在计算机可读介质中之前首先使用密封密钥来加密证明证书。
应当注意,在该设备使用更新机构更新软件模块之后,该设备可以从更新机构接收证明种子和/或加密的证明身份密钥和证明证书。在一些示例中,当该设备实现非对称密码术时,更新机构可以将证明种子加密到设备公钥,并且将加密到设备公钥的证明种子发送给该设备。该设备然后可以使用设备私钥来对加密到设备公钥的证明种子进行解密。在一些示例中,该设备然后可以使用内部保护器密钥来重新加密证明种子,并且将加密的证明种子存储在计算机可读介质中。在一些示例中,当该设备包括对称设备时,更新机构可以将证明种子加密到内部保护器密钥并且将加密的证明种子发送给该设备。该设备然后可以将加密的证明种子存储在该设备的计算机存储介质中。尽管如此,在一些示例中,当该设备接收到加密的证明身份密钥和证明证书时,该设备可以在对证明身份密钥和证明证书进行解密之后删除证明种子。
为了验证软件模块的引导序列,该设备可以使用密封密钥和/或证明密钥对每个软件模块执行完整性检查。例如,该设备可以使用软件模块的SMD上的基于散列的消息认证码(HMAC)签名,来保护软件模块的完整性。该设备可以使用引导链中前一软件模块的密封密钥和/或证明密钥来检查软件模块的HMAC签名。如果软件模块的SMD上的HMAC签名是正确的,则软件模块被验证并且软件模块的引导序列如上所述继续。但是,如果软件模块的SMD上的HMAC签名不正确,则该设备或软件模块可能会停止引导序列。该设备然后可以执行修复过程,以将该设备的TCB返回到值得信任状态。
在一些示例中,软件模块的SMD上的HMAC签名可以是特定于该设备的。例如,在该设备更新软件模块之后,该设备可以通过检查软件模块的SMD上的签名来验证软件模块。在一些示例中,签名包括椭圆曲线密码签名。在验证软件模块之后,该设备可以使用设备特定的签名密钥(HMAC签名)对软件模块进行签名。该设备然后可以使用上述的类似方法,在引导链期间使用密封密钥和/或证明密钥来检查每个软件模块上的设备特定的HMAC签名。
除了验证该设备上的TCB引导链之外,该设备还可以使用该框架来执行安全更新引导序列,该框架使用该安全更新引导序列以确保设备上的已更新软件模块满足当前的一组策略。例如,该设备可以从更新机构下载一个或多个软件模块更新,其可以包括对设备的TCB组件的更新。在下载软件模块更新之后,该设备可以执行安全更新引导序列,以确保该设备在更新过程中没有下载任何未经授权的软件(例如,恶意代码)。在一些示例中,该设备可以在更新软件模块之后在该设备的下一引导过程期间执行安全更新引导序列。
为了执行安全引导序列,该设备基于已更新软件模块来生成密封密钥和证明密钥。例如,类似于上述用于生成密封密钥和证明密钥的方法,该设备可以使用软件模块的已更新版本的SMD来生成已更新密封密钥和已更新证明密钥。该设备然后可以使用新的密封密钥和/或新的证明密钥来验证软件模块的已更新版本。
在更新该设备上的一个或多个软件模块之后,该设备可以进一步使用迁移密钥和新的密封密钥来从一个或多个软件模块的先前版本向一个或多个软件模块的新版本迁移秘密。例如,在该设备接收到对一个或多个软件模块的更新之后,该设备可以为该一个或多个已更新软件模块生成迁移密钥和新的密封密钥。该设备可以使用软件模块的先前版本的SMD来生成迁移密钥,迁移密钥与上述由该设备在常规引导序列期间生成的密钥相似,并且该设备可以使用软件模块的新版本的SMD来生成新的密封密钥。该设备然后可以使用迁移密钥来从软件模块的先前版本访问秘密,并且然后使用新的密封密钥在软件模块的新版本中重新密封秘密。这样,每当该设备对软件模块执行软件更新时,该设备能够将软件模块的秘密从软件模块的先前版本传递到软件模块的新版本。
另外,第三方设备和/或服务可以使用证明来验证该设备。在一些示例中,为了验证该设备,该设备可以向第三方发送经签名的证明语句(其使用证明秘密而生成)以及由证明机构发出的证明证书,并且第三方可以使用经签名的证明语句和证明证书来验证该设备。在一些示例中,该设备可以将证明语句与设备公钥一起发送给第三方。第三方然后可以将证明语句和设备公钥发送给证明机构以用于验证。
参考图1至图17进一步描述各种示例、场景和方面。
说明性环境
图1示出了设备的硬件信任根可以在其中操作的示例环境100。在一些示例中,环境100的各种设备和/或组件包括分布式计算资源102,分布式计算资源102可以彼此通信并且经由一个或多个网络104与外部设备通信。
例如,网络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还可以包括一个或多个网络接口118,用以通过网络104来实现计算设备106与其他联网设备(诸如低资源设备的硬件信任根中所涉及的客户端计算设备120、或其他设备)之间的通信。这样的网络接口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)以及计算设备105(N)可以包括具有有限的硬件能力的低资源设备,其中计算设备102(5)可以包括诸如车辆控制系统、车辆安全系统或车辆的电子钥匙等汽车计算机,并且计算设备105(N)可以包括IoT设备。在一些示例中,对于这样的低资源设备,操作系统128可以包括仅需要116至1024兆字节的内部存储器和4至160千字节的静态RAM存储器来操作的操作系统。在一些示例中,操作系统128可以包括需要更多或更少存储器来操作的操作系统。
设备120还可以包括鲁棒安全基础框架132,该设备120可以用来执行本文中描述的一些和/或所有安全操作。例如,设备120可以使用鲁棒安全基础框架132来执行秘密的证明和密封两者。另外,设备120可以使用鲁棒安全基础框架132以通过验证更新软件模块的有效性并且实现用于从较旧版本的软件组件到较新版本的软件组件的秘密迁移的协议,来作为软件更新过程的媒介。
设备120还可以包括一个或多个网络接口134,用以通过网络104来实现设备120与其他联网设备(诸如其他设备120或设备106)之间的通信。这样的网络接口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上烧断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还可以包括一个或多个网络接口230,用以通过网络104来实现计算设备220与其他联网设备(诸如低资源设备204、更新计算资源216、证明计算资源218或其他设备)之间的通信。为了简单起见,其他组件从所示设备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可以包括设备234(1)至234(N),其可以表示来自图1中的一个或多个设备106(1)至106(N)。设备234可以包括具有诸如经由总线240而可操作地连接到计算机可读介质238的一个或多个处理单元236的任何类型的计算设备。存储在计算机可读介质238上的可执行指令可以包括例如操作系统242、更新工具244、以及由处理单元236可加载和可执行的其他模块、程序或应用。替代地或另外地,本文中描述的功能可以至少部分由诸如加速器等一个或多个硬件逻辑来执行。
设备234还可以包括一个或多个网络接口246,用以通过网络104来实现计算设备234与其他联网设备(诸如设备204、身份计算资源214、认证计算资源218或其他设备)之间的通信。为了简单起见,其他组件从所示设备234中省略。
更新计算资源216可以包括向设备204提供软件更新的服务(例如,机构)。例如,更新计算资源216可以利用更新工具244向设备204提供针对存储在设备204上的软件模块(诸如设备204的TCB组件)的更新。更新计算资源216可以进一步利用更新工具244向设备204提供证明种子、证明身份密钥和/或证明证书中的一个或多个,这在下面描述。另外,更新计算资源216可以利用更新工具244来生成与设备204相关联的证明秘密。在生成证明秘密之后,更新计算资源216可以将证明秘密提供给证明计算资源218,使得证明计算资源218可以验证证明语句和/或为设备204生成证明证书。
在各种示例中,证明计算资源218可以包括设备248(1)至248(N),其可以表示来自图1中的一个或多个设备106(1)至106(N)。设备248可以包括具有诸如经由总线254可操作地连接到计算机可读介质252的一个或多个处理单元250的任何类型的计算设备。存储在计算机可读介质252上的可执行指令可以包括例如操作系统256、验证/证实工具258、以及由处理单元250可加载和可执行的其他模块、程序或应用。替代地或另外地,本文中描述的功能可以至少部分由诸如加速器等一个或多个硬件逻辑组件来执行。
设备248还可以包括一个或多个网络接口260,用以通过网络104来实现计算设备248与其他联网设备(诸如设备204、身份计算资源214、更新计算资源216或其他设备)之间的通信。为了简单起见,其他组件从所示设备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类型处理器可执行、由GPU 308可执行、和/或由加速器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)、GPU 308上的存储器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。
可以包括总线240的总线324可以包括以下一项或多项:系统总线、数据总线、地址总线、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还可以存储指令406,其由外部CPU类型处理器可执行、由GPU 408可执行、和/或由加速器410(诸如FPGA类型加速器410(1)、DSP类型加速器410(2)或者任何内部或外部加速器410(N))可执行。在各种示例中,至少一个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。
可以包括总线254的总线424可以包括以下一项或多项:系统总线、数据总线、地址总线、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类型处理器可执行、由GPU 508可执行、和/或由加速器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。可以包括总线126的总线524可以包括以下一项或多项:系统总线、数据总线、地址总线、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和KDF 604,因此每个密码学上唯一的秘密和值对于设备是唯一的。此外,在图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来解密638加密的证明种子640,以产生证明种子634。如将在下面更详细讨论的,该设备在证明期间使用证明种子634。该设备可以从分布式计算资源202接收由内部保护器密钥620加密的证明种子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检查第一SMD 704(1)上的HMAC签名来使用密封种子708验证第一软件模块的完整性。如果该设备和/或鲁棒安全基础框架验证第一软件模块的完整性,则第一软件模块被执行。但是,如果该设备和/或鲁棒安全基础框架无法验证第一软件模块的完整性,则鲁棒安全基础框架可能会导致该设备停止引导序列和/或执行修复。
修复可以包括确定软件模块是否可以被补救,以在恢复模式中重启设备,返回到引导链而不执行策略检查,替换失败的软件模块,或者从备份存储中恢复失败的软件模块。在图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)。该设备、鲁棒安全基础框架或第二软件模块然后可以执行第二KDF 706(2),以使用第一密封密钥702(1)从第二SMD704(2)的散列中生成第二密封密钥702(2)。然后,每个软件模块可以继续使用类似的过程来生成剩余的密封密钥702。在一些示例中,执行SMD的散列函数可以包括对除了签名块之外的每个SMD的内容进行散列。
应当进一步注意,当一个或多个软件模块被设备更新时,该设备和/或鲁棒安全基础框架可以使用类似于700的过程来为每个软件模块产生迁移密钥,只是为了产生迁移密钥,该设备和/或鲁棒安全基础框架使用SMD的先前版本。例如,设备可以更新引导链中的每个软件模块。当更新软件模块时,该设备可以复制在计算机可读存储(例如,NV存储器)中的SMD(其可以包括来自图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可以通过向身份计算资源214发送设备公钥614而使用设备公钥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两者进行加密,并且将结果得到的证明身份密钥导入块(import blob)发送给设备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可以将仅使用一次的数字(nonce)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可以通过向身份计算资源214发送设备公钥614和加密的证明种子640,来使用设备公钥614验证设备1002的身份。身份计算资源614可以使用设备公钥614来识别设备1002,并且作为响应,使用所存储的内部保护器密钥620对加密的证明种子640进行解密。然后,身份计算资源614可以将证明种子634发送回验证设备1002的身份的更新计算资源216。
然后,更新计算资源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,该设备可以至少部分基于证明秘密来生成证明语句。例如,设备可以使用证明秘密和设备公钥两者来生成证明语句。在1210,该设备可以向分布式资源发送证明语句,以获取该设备上的一个或多个软件模块的验证。例如,该设备可以向证明机构发送证明语句,其中证明机构还从更新机构接收证明秘密。然后,证明机构可以使用证明语句和证明秘密来验证设备上的一个或多个软件模块。
图13是用于使用证明来验证设备的更新的说明性过程1300的流程图。在1302,更新机构可以从设备接收与该设备相关联的设备身份。例如,更新机构可以从该设备接收设备公钥。在一些示例中,然后,更新机构可以通过向身份机构发送设备公钥来验证该设备。
在1304,更新机构可以向该设备发送软件模块的软件更新,并且在1306,更新机构可以向该设备发送证明种子。例如,更新机构可以响应于向该设备发送软件更新而生成证明种子。在一些示例中,然后,更新机构可以使用设备公钥对证明种子进行加密,并且向该设备发送加密到设备公钥的证明种子。另外地或替代地,在一些示例中,更新机构可以使用与该设备相关联的内部保护器密钥来加密证明种子。然后,更新机构可以向该设备发送加密的证明种子。
在1308,更新机构可以至少部分基于证明种子和软件模块的软件更新来生成证明秘密。例如,更新机构可以使用证明种子对与软件模块相关联的SMD执行KDF以生成证明秘密。
在1310,更新机构可以使用证明秘密来验证软件更新。例如,在一些示例中,更新机构可以向执行证明以验证软件更新的证明机构发送被加密到设备公钥的证明秘密。然后,更新机构可以从证明机构接收指示软件更新的验证的消息。在一些示例中,更新机构可以使用证明秘密来加密证明身份密钥和证明证书,并且向该设备发送加密的证明身份密钥和证明证书。该设备然后可以使用加密的证明密钥和证明证书来验证一个或多个软件模块。
图14是用于使用证明身份密钥和证明证书来验证设备的一个或多个软件模块的示例说明性过程1400的流程图。在1402,该设备可以向更新机构发送与设备相关联的设备身份。例如,该设备可以向更新机构发送与该设备关联的设备公钥。
在1404,该设备可以从更新机构接收证明种子,并且在1406,该设备可以从更新机构接收被加密到证明秘密的证明身份密钥和证明证书。
在1408,该设备可以使用证明种子从至少一个SMD中生成证明秘密。在一些示例中,至少一个SMD可以与设备上的一个或多个软件模块相关联。例如,该设备可以执行KDF,以使用证明种子从第一软件模块的第一SMD中生成证明密钥。当存在多于一个软件模块时,该设备可以执行KDF,以使用由设备的引导序列中的先前软件模块生成的证明密钥从与相应软件模块相关联的SMD中为每个软件模块生成证明密钥。在一些示例中,由该设备生成的最后的证明密钥被用作证明秘密。
在1410,该设备可以使用所生成的证明秘密对加密的证明身份密钥和证明证书进行解密。在一些示例中,只有当该设备生成正确的证明语句时,该设备才能解密加密的证明身份密钥和证明证书。
在1412,该设备可以生成证明语句,并且在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.根据权利要求1所述的设备,其中所述验证模块还被配置为:
使用与附加软件组件相关联的软件描述符和所述密封密钥来验证所述附加软件组件。
6.根据权利要求1所述的设备,其中所述设备包括低资源设备。
7.一种用于提供可信平台的方法,包括:
使用熔丝导出的秘密值,生成密封种子,所述密封种子用于重新验证先前在软件更新之后已经由设备进行验证并且由所述设备使用认证码进行签名的软件组件;
检索与所述软件组件相关联的软件描述符;
至少部分基于所述密封种子和所述软件描述符中的一个或多个而生成用于所述软件组件的密封密钥;
使用所述软件描述符和所述密封种子来验证所述软件组件;
至少部分基于验证所述软件组件,引起所述设备继续执行引导过程;以及
使用所述密封密钥来密封所述软件组件的秘密。
8.根据权利要求7所述的方法,其中使用所述软件描述符和所述密封种子来验证所述软件组件包括:使用所述密封种子来检查所述软件描述符上的所述认证码是正确的。
9.根据权利要求7所述的方法,其中用于所述软件组件的所述密封密钥至少部分基于所述密封种子和所述软件描述符而生成。
10.根据权利要求7所述的方法,其中使用所述密封密钥来密封所述软件组件的所述秘密包括:
使用所述密封密钥生成一个或多个加密密钥;以及
使用所述一个或多个加密密钥来加密所述软件组件的秘密。
11.根据权利要求7所述的方法,还包括:
使用与附加软件组件相关联的软件描述符和所述密封密钥来验证所述附加软件组件。
12.根据权利要求7所述的方法,其中所述设备包括低资源设备。
13.一种用于提供可信平台的设备,包括:
一个或多个处理器;以及
用于存储指令的一个或多个计算机可读介质,所述指令在由一个或多个处理器执行时引起所述一个或多个处理器执行操作,所述操作包括:
使用熔丝导出的秘密值,生成密封种子,所述密封种子用于重新验证先前在软件更新之后已经由所述设备进行验证并且由所述设备使用认证码进行签名的软件组件;
检索与所述软件组件相关联的软件描述符;
至少部分基于所述密封种子和所述软件描述符中的一个或多个而生成用于所述软件组件的密封密钥;
使用所述软件描述符和所述密封种子来验证所述软件组件;
至少部分基于验证所述软件组件,引起所述设备继续执行引导过程;以及
使用所述密封密钥来密封所述软件组件的秘密。
14.根据权利要求13所述的设备,其中使用所述软件描述符和所述密封种子来验证所述软件组件包括:使用所述密封种子来检查所述软件描述符上的所述认证码是正确的。
15.根据权利要求13所述的设备,其中用于所述软件组件的密封密钥至少部分基于所述密封种子和所述软件描述符而生成。
16.根据权利要求13所述的设备,其中使用所述密封密钥来密封所述软件组件的秘密包括:
使用所述密封密钥生成一个或多个加密密钥;以及
使用所述一个或多个加密密钥来加密所述软件组件的秘密。
17.根据权利要求13所述的设备,其中所述操作还包括:
使用与附加软件组件相关联的软件描述符和所述密封密钥来验证所述附加软件组件。
18.根据权利要求13所述的设备,其中所述设备包括低资源设备。
CN201680059552.7A 2015-10-12 2016-10-03 用于提供可信平台的设备和方法 Active CN108140085B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/880,746 2015-10-12
US14/880,746 US9953167B2 (en) 2015-10-12 2015-10-12 Trusted platforms using minimal hardware resources
PCT/US2016/055110 WO2017066016A1 (en) 2015-10-12 2016-10-03 Trusted platforms using minimal hardware resources

Publications (2)

Publication Number Publication Date
CN108140085A CN108140085A (zh) 2018-06-08
CN108140085B true CN108140085B (zh) 2021-12-03

Family

ID=57190218

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680059552.7A Active CN108140085B (zh) 2015-10-12 2016-10-03 用于提供可信平台的设备和方法

Country Status (4)

Country Link
US (1) US9953167B2 (zh)
EP (1) EP3362936B1 (zh)
CN (1) CN108140085B (zh)
WO (1) WO2017066016A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503931B2 (en) * 2016-05-09 2019-12-10 Arris Enterprises Llc Method and apparatus for dynamic executable verification
US10972277B2 (en) * 2017-03-15 2021-04-06 Intel Corporation Confidential verification of FPGA code
US10402567B2 (en) 2017-06-25 2019-09-03 Microsoft Technology Licensing, Llc Secure boot for multi-core processor
US10503892B2 (en) 2017-06-25 2019-12-10 Microsoft Technology Licensing, Llc Remote attestation for multi-core processor
US10708061B2 (en) * 2017-06-25 2020-07-07 Microsoft Technology Licensing, Llc Secure key storage for multi-core processor
US10423151B2 (en) * 2017-07-07 2019-09-24 Battelle Energy Alliance, Llc Controller architecture and systems and methods for implementing the same in a networked control system
JP6942601B2 (ja) * 2017-10-18 2021-09-29 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
US10798075B2 (en) 2018-01-29 2020-10-06 International Business Machines Corporation Interface layer obfuscation and usage thereof
US11321466B2 (en) * 2018-03-09 2022-05-03 Qualcomm Incorporated Integrated circuit data protection
WO2020037612A1 (zh) * 2018-08-23 2020-02-27 深圳市汇顶科技股份有限公司 嵌入式程序的安全引导方法、装置、设备及存储介质
EP3664358A1 (en) * 2018-12-03 2020-06-10 Nagravision S.A. Methods and devices for remote integrity verification
US10602353B1 (en) * 2018-12-31 2020-03-24 Microsoft Technology Licensing, Llc Extensible device identity attestation
CN111416791B (zh) * 2019-01-04 2022-06-14 华为技术有限公司 数据传输方法、设备与系统
GB2588647B (en) * 2019-10-30 2022-01-19 Arm Ip Ltd Attestation for constrained devices
US11601268B2 (en) * 2020-08-03 2023-03-07 Nuvoton Technology Corporation Device attestation including attestation-key modification following boot event
US20220335106A1 (en) * 2021-04-15 2022-10-20 Copyright Clearance Center, Inc. Cloud-native content management system
DE102021129670A1 (de) * 2021-11-15 2023-05-17 Bayerische Motoren Werke Aktiengesellschaft Verfahren, Fahrzeugkomponente und Computerprogramm zum Einräumen einer Berechtigung zum Ausführen eines Computerprogramms durch eine Fahrzeugkomponente eines Fahrzeugs
US11948144B2 (en) * 2022-02-07 2024-04-02 Capital One Services, Llc Knowledge-based authentication for asset wallets

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101213557A (zh) * 2005-06-30 2008-07-02 先进微装置公司 限制操作系统及其它软件的安装的反骇客保护
CN104025500A (zh) * 2011-12-29 2014-09-03 英特尔公司 使用在物理上不可克隆的函数的安全密钥存储
CN104301110A (zh) * 2014-10-10 2015-01-21 刘文清 应用于智能终端的身份验证方法、身份验证设备和系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120922A1 (en) * 2001-12-06 2003-06-26 Fairchild Semiconductor Corporation Device authentication system and method
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
US20070039042A1 (en) 2005-08-12 2007-02-15 First Data Corporation Information-security systems and methods
US7424398B2 (en) * 2006-06-22 2008-09-09 Lexmark International, Inc. Boot validation system and method
EP2454899A1 (en) 2009-07-15 2012-05-23 Koninklijke Philips Electronics N.V. Method for securely broadcasting sensitive data in a wireless network
US20120137137A1 (en) 2010-11-30 2012-05-31 Brickell Ernest F Method and apparatus for key provisioning of hardware devices
WO2012159191A1 (en) 2011-05-20 2012-11-29 Research In Motion Limited Verifying passwords on a mobile device
EP2719115B1 (en) 2011-06-10 2021-08-11 Signify Holding B.V. Secure protocol execution in a network
US9009567B2 (en) * 2011-12-12 2015-04-14 Cleversafe, Inc. Encrypting distributed computing data
US9588756B2 (en) 2012-03-22 2017-03-07 Irdeto B.V. Updating software components in a program
US9100189B2 (en) * 2012-08-31 2015-08-04 Freescale Semiconductor, Inc. Secure provisioning in an untrusted environment
CA3099685C (en) 2013-03-29 2022-09-20 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
US9697359B2 (en) * 2015-04-15 2017-07-04 Qualcomm Incorporated Secure software authentication and verification
US10181036B2 (en) * 2015-06-24 2019-01-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Automatic discovery and installation of secure boot certificates

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101213557A (zh) * 2005-06-30 2008-07-02 先进微装置公司 限制操作系统及其它软件的安装的反骇客保护
CN104025500A (zh) * 2011-12-29 2014-09-03 英特尔公司 使用在物理上不可克隆的函数的安全密钥存储
CN104301110A (zh) * 2014-10-10 2015-01-21 刘文清 应用于智能终端的身份验证方法、身份验证设备和系统

Also Published As

Publication number Publication date
US9953167B2 (en) 2018-04-24
EP3362936B1 (en) 2023-11-29
EP3362936A1 (en) 2018-08-22
CN108140085A (zh) 2018-06-08
US20170103209A1 (en) 2017-04-13
WO2017066016A1 (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) 自包含的加密引导策略验证
US10693851B2 (en) Data protection keys
CN109154972B (zh) 使用基于硬件的安全隔离区域来防止电子设备上的盗版和作弊
CN111324895A (zh) 用于客户端设备的信任服务
US10146916B2 (en) Tamper proof device capability store
CN114173327A (zh) 基于5g行业专网的认证方法及终端
CN117397198A (zh) 绑定加密密钥证明
US20220035924A1 (en) Service trust status
EP4324154A1 (en) Encrypted and authenticated firmware provisioning with root-of-trust based security
CN116232716A (zh) 一种基于puf的物联网ota升级方法及存储介质

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