CN107077568B - 对称密钥和信任链 - Google Patents
对称密钥和信任链 Download PDFInfo
- Publication number
- CN107077568B CN107077568B CN201580058736.7A CN201580058736A CN107077568B CN 107077568 B CN107077568 B CN 107077568B CN 201580058736 A CN201580058736 A CN 201580058736A CN 107077568 B CN107077568 B CN 107077568B
- Authority
- CN
- China
- Prior art keywords
- code module
- key
- sealing key
- software update
- sealing
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/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
-
- 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/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0822—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
-
- 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/0866—Generation 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及使用信任链密钥导出来密封数据。在至少一个实施例中,信任链可以用于导出密封密钥以用于对设备上的数据进行密封。所述设备至少可以包括例如存储器和处理器。所述处理器可以至少用于从所述存储器加载代码模块。在所述加载代码模块之后,所述处理器可以进一步用于:测量所述代码模块;确定与所述代码模块相对应的密封密钥,其中,所述密封密钥是至少基于与先前加载的代码模块相对应的在先密封密钥以及所述代码模块的测量结果而确定的;以及使用所述密封密钥对与所述加载的代码模块相对应的数据进行密封。由于所述密封密钥是与状态相关的,因此还公开了一种用于在软件升级过程中对密封数据进行授权迁移的方法。
Description
技术领域
本公开涉及设备安全,并且更具体地涉及允许在证明器设备中不存在重要安全基础设施的情况下的应用及数据安全。
背景技术
随着规避现有安全措施的新策略的继续出现,防止恶意的软件或“恶意软件”危及各个设备正在变得日益困难。例如,恶意软件(诸如“rootkit”)可能通过在设备初始化过程中被加载来危及设备安全性。因此,这些rootkit可以维持在设备中的特权级别,所述特权级别甚至超过了反病毒软件的特权级别。可信执行(TXT)是可以维护从初始化开始的安全的至少一种安全概念。在TXT中,可信平台模块(TPM)可以维护设备内的安全存储器中的已知良好程序的“测量结果”(例如,由对程序代码的至少一部分执行的密码散列函数生成的结果)。因为程序被加载到设备中,因此可以对它们进行测量以便判定是否已经加载了所述程序的已知良好版本。所述程序的任何变化都将产生不同的测量结果,这指示所述程序可能是恶意软件或者至少是已经被恶意软件更改的原始程序的版本。在一个实施例中,还可以建立“信任链”,其中,每个程序对后续加载的程序进行测量以便确保所述链中的所有程序是已知良好的程序。
虽然对阻止未授权访问是有效的,但是TXT可能需要资源(诸如安全协处理器、安全存储器等)以便经由非对称加密密钥来支持证明。这类资源可以易于用于更稳健的平台中,诸如台式计算机、膝上型计算机以及甚至移动设备(像平板计算机和智能电话)。然而,现在正在开发可能不包括这些资源但可能仍然易于受到恶意软件危及的设备。例如,小规格设备(诸如可穿戴设备)、传感器和/或可以取决于能量采集(例如,针对可用源生成其自身的能量,诸如机械能、太阳能等)的设备可以包括计算资源,所述计算资源可能仅足够强大以维持针对其而设计设备的操作。在没有开启可以经由TPM、TXT等实现的安全措施(诸如完整性上报(例如,用于验证程序是所述程序的已知良好的版本)以及密封(例如,用于保护软件秘密,诸如加密密钥))的低级保护方案的情况下,检测恶意软件是否已经危及到资源受限设备并且因此防止所述资源受限设备上的所述恶意软件感染所述资源受限设备可以与其进行交互的其他计算设备可以是可能的。
附图说明
所要求保护的主题的各个实施例的特征和优点将随着以下具体实施方式进行并且通过参照附图变得明显,其中,相同的数字指代相同的部件,并且在附图中:
图1展示了根据本公开的至少一个实施例的用于对称密钥和信任链的示例系统;
图2展示了根据本公开的至少一个实施例可用的验证器设备和证明器设备的示例配置;
图3展示了根据本公开的至少一个实施例的对称密钥分配的示例;
图4展示了根据本公开的至少一个实施例的远程证明的示例;
图5展示了根据本公开的至少一个实施例的用于从验证器的角度的对称密钥和信任链的示例操作;
图6展示了根据本公开的至少一个实施例的用于从证明器的角度的对称密钥和信任链的示例操作;
图7展示了根据本公开的至少一个实施例的导出密封密钥的示例;
图8展示了根据本公开的至少一个实施例的用于使用信任链密钥导出来密封数据的示例操作;以及
图9展示了根据本公开的至少一个实施例的用于在系统中使用信任链密钥导出来处理软件更新的示例操作。
虽然以下具体实施方式将参考说明性实施例进行,但是许多替代方案、修改及其变体将对本领域的技术人员而言是明显的。
具体实施方式
本申请涉及对称密钥和信任链。在一个实施例中,证明器设备可以与验证器设备进行通信以便对所述证明器设备的身份、在所述证明器设备上执行的应用或由在所述证明器设备上执行的所述应用提供的数据进行认证。可以在两个阶段中发生所述证明器设备与所述验证器设备之间的交互。所述验证器设备可以初始地发布对所述证明器设备的身份进行认证的质询,这则可能导致对称证明密钥被存储在所述证明器设备和验证器设备上。所述质询可能涉及所述证明器设备至少向所述验证器设备提供密钥数据和票数据,所述验证器设备则可以至少向鉴定器(例如,与所述证明器设备的制造商、经销商、销售者相对应的至少一个设备)提供所述票数据。如果已经对所述票数据进行了识别,则所述鉴定器可以向所述验证器设备传输授权令牌,从而允许使用所述密钥数据在所述验证器中设置所述对称证明密钥并且然后向所述证明器进行确认。所述对称证明密钥可以由所述证明器设备在建立信任链时采用,所述信任链可以用于在所述验证器设备质询试图访问所述验证器设备的应用的真实性、由所述证明器设备中的应用提供数据的真实性等时做出响应。例如,所述对称证明密钥可以用于生成第一级密钥,所述第一级密钥进而可以用于生成程序密钥。质询响应可以至少包括程序密钥数据,所述程序密钥数据可以由所述验证器设备利用所述对称证明密钥来进行认证。
在一个实施例中,可以充当验证器的设备可以包括例如通信模块以及可信执行环境(TEE)。所述TEE可以至少包括:证明模块,所述证明模块用于:检测证明触发;判定是否至少基于所述证明触发利用证明器设备发起对称密钥分配操作或远程证明操作;以及基于所述判定利用所述证明器设备发起对称密钥分配操作或远程证明操作中的至少一项。
可以例如周期性地或者由于经由所述通信模块来访问从所述证明器设备接收的资源的请求而触发证明。所述通信模块可以经由短距离无线连接或直接有线连接中的至少一项与所述证明器设备进行交互。所述证明模块用于利用所述证明器设备来发起所述对称密钥分配操作可以包括所述证明模块用于使所述通信模块:将设备质询传输至所述证明器设备;以及经由所述通信模块从所述证明器设备接收对所述设备质询的响应,所述响应至少包括密钥数据和票数据。所述证明模块然后可以进一步用于使所述通信模块:至少将所述票数据传输至至少一个鉴定器设备;经由所述通信模块从所述至少一个鉴定器设备接收响应;以及判定从所述鉴定器设备接收的所述响应是否包括授权令牌。在一个实施例中,所述设备可以进一步包括:防火墙,所述通信模块通过所述防火墙与所述至少一个鉴定器设备进行交互,所述防火墙至少用于防止所述设备与所述至少一个鉴定器设备之间的非预期交互。所述证明模块可以进一步用于:如果确定已经接收到授权令牌,则至少基于所述密钥数据设置对称密钥;以及使所述通信模块将所述对称密钥已经被设置的确认传输至所述证明器设备。
在相同或不同的实施例中,所述证明模块用于利用所述证明器设备发起所述远程证明操作包括所述证明模块用于使所述通信模块:将应用质询传输至所述证明器设备;经由所述通信模块从所述证明器设备接收对所述应用质询的响应,所述响应至少基于计数器数据、代码测量数据以及程序密钥数据被生成;对所述响应进行认证;以及使所述通信模块至少将所述认证结果传输至所述证明器设备。所述证明模块用于对所述响应进行认证可以包括例如:所述证明模块用于认证所述响应是使用消息认证代码基于所述对称密钥而生成的。一种与本公开一致的、用于使用对称密钥来进行远程证明的示例方法可以包括:检测证明触发;判定是否至少基于所述证明触发利用证明器设备发起对称密钥分配操作或远程证明操作;以及基于所述判定利用所述证明器设备发起对称密钥分配操作或远程证明操作中的至少一项。
图1展示了根据本公开的至少一个实施例的用于对称密钥和信任链的示例系统。系统100可以包括例如证明器102、验证器104和鉴定器106。通常,验证器104可以与鉴定器106合作以便对证明器102、在证明器102上运行的应用、由证明器102提供的数据等进行认证。证明器102可以是能够与如图1中所展示的验证器设备104进行交互的任何设备。有利地但非必要地,关于系统100所公开的操作可以允许证明器102为:以其他方式将不能够支持现有证明方案的资源有限设备(例如,有限的处理功率、能量存储等),诸如穿戴设备(例如,智能手表、眼镜、服装等);可植入设备(例如,用于监测特定医疗状况的设备);依赖能量采集(例如,机电发电、太阳能等)的设备;传感器设备;致动器设备等。验证器104可以包括具有更重要的计算资源的设备,所述设备可以能够例如经由基于TXT、TDM等的保护方案来维护安全。验证器104的示例可以包括但不限于:基于来自谷歌公司的OS、来自苹果公司的来自微软公司的OS、来自苹果公司的Mac OS、来自Linux基金会的Tizen OS、来自Mozilla项目的Firefox OS、来自黑莓公司的OS、来自Hewlett-Packard公司的OS、来自Symbian基金会的OS等的移动通信设备,诸如蜂窝手持机或智能电话;移动计算设备,诸如来自苹果公司的来自微软公司的来自三星公司的Galaxy来自亚马逊公司的Kindle等的平板计算机;包括由英特尔公司制造的低功率芯片组的上网本、笔记本、膝上型计算机、掌上型计算机等;通常固定的计算设备,诸如台式计算机、服务器、智能电视、小形状因子计算解决方案(例如,适用于空间有限的应用、TV机顶盒等),像来自英特尔公司的下一代计算单元(NUC)平台等。鉴定器106可以是用于对证明器102的身份进行鉴定的实体,并且这样可以例如是证明器102的制造商、证明器102的零售商或分销商等。在一个实施例中,鉴定器106可以包括验证器104经由有线或无线通信可访问的至少一个设备。例如,鉴定器106可以包括经由互联网可访问的至少一个服务器(例如,以云计算配置组织的)。在此为了解释的目的,可以用于设想系统100的示例现实世界应用可以包括用于监测用户的生理表现的至少一个可穿戴传感器(例如,证明器102),所述可穿戴传感器无线地耦合至用户口袋中的智能电话(例如,验证器104),所述智能电话经由无线互联网链路与所述至少一个可穿戴传感器(鉴定器106)的制造商进行通信。
已知的证明解决方案可以包括:将经鉴定的公钥嵌入到验证器104可以在认证时基于非对称密钥使用的证明器102中的可信执行环境(TEE)中(例如,在来自可以与证明器102的所述TEE直接进行交互的验证器106的辅助下)。假定执行椭圆曲线密码学(ECC)点乘可消耗低端CPU上的大量处理资源并且现有协议通常需要多于一个的这种操作,则现有的解决方案对于资源受限设备来说可能太慢且成本高(例如,其可能采取三次用于利用完全散列的Menezes-Qu-Vanstone(FHMQV)协议来建立会话密钥的点乘)。
相应的对称解决方案(例如,使用高级加密标准-基于密码的消息认证码(AES-CMAC))可能快许多倍,但是需要使得鉴定器106能够对所述TEE进行认证的共享对称认证密钥。虽然在这两种方式中,鉴定器106可以受到所有各方的信任,但是允许鉴定器106参加密钥协商意味着鉴定器106可稍后用于对证明器102进行人格化并且向验证器104假冒证明。这种脆弱性在与本公开一致的实施例中得到了解决,其中,验证器104可以在密钥交换过程中隔离证明器102以便防止与鉴定器106进行交互。结果,验证器104和证明器102可对密钥(所述密钥可得到授权但并非由鉴定器106导出)进行协商,并且因此可以在防假冒时是安全的。
与本公开一致,验证器104可以发起至少两类操作:对称密钥分配108以及远程证明112。例如,对称密钥分配108涉及交互,所述交互引起对称密钥的分配以供证明器102和验证器104在远程证明112过程中使用。初始地,验证器104可以向证明器102发布设备质询108A。设备质询108A可以是质询证明器102以“证明”其身份的消息。设备质询108A可以由各种事件触发,诸如例如验证器104的激活、设备104中的周期性触发、来自证明器102的访问验证器104上的资源的请求、接收由证明器102在验证器104处提供的数据等。证明器102可以入在108B处示出的对验证器104进行响应,所述响应至少包括密钥数据和票数据。所述密钥数据可以允许验证器104确认响应消息108B是从证明器102接收的并且至少可以包括由证明器102生成的对称密钥,所述对称密钥可以稍后在对称密钥分配108过程中被设置在验证器104中。所述票数据可以由如用于对证明器设备102的身份进行认证的鉴定器106的实体来使用。验证器104然后可以如在108C处示出的至少将所述票数据转发至鉴定器106。在一个实施例中,验证器104可以受到防火墙110的保护,所述防火墙例如防止局域网(LAN)、广域网(WAN)(像互联网)、全球域网(GAN)等侵入到个域网(PAN)、体域网(BAN)等中,至少包括证明器102和验证器104。防火墙110可以物理地或逻辑地防止证明器102与鉴定器106或除验证器104之外的其他多方之间的非预期交互。因此,可以向验证器104确保所部署的对称密钥仅对证明器102和验证器104是已知的,而对防火墙110之外的其他多方不是已知的。在相同或不同的实施例中,验证器104与鉴定器106之间通过防火墙110的信道可以是用于确保正在交换的数据不被拦截的安全信道。如以上所讨论的,被转发至鉴定器106的信息可以限于用于确保鉴定器106不具有对证明器102进行人格化所需的全部数据的所述票数据(例如,仅对证明器102的身份进行验证所需的数据)。
鉴定器106至少可以利用用于对证明器102进行认证的所述票数据(例如,以便确保另一设备未正在对证明器102进行人格化)。例如,所述票数据可以包括制造商数据、模型数据、序列号、建造日期和/或专用验证数据,所述数据可以用于验证证明器102实际上是由鉴定器106提供(例如,制造、配置、分配、销售等)的产品)。如果确定证明器102是真实的,则可以如在108D处示出的将至少包括授权令牌的响应从鉴定器106传输至验证器104。验证器104可以如在108E处示出的在设置所述对称密钥时使用所述授权令牌。设置所述对称密钥可以包括例如:指定所述对称密钥以用于与证明器102进行设备/程序/数据认证交互,并且然后将所述对称密钥存储在验证器104中(例如,在安全存储器(诸如TEE)中)。验证器104然后可以如在108F处示出的确认所述对称密钥已经被设置为证明器102。
远程证明112可以在证明器102中发起信任链导出。例如,所述信任链中的初始框架密钥可以如112A处示出的基于对称密钥114被导出,所述对称密钥114如108E处示出的被提供至证明器102。每个后续的密钥(例如,程序密钥118)可以如在112B处示出的至少从先前的密钥(例如,框架密钥116)中部分地导出。以此方式,证明器102中的各操作水平(诸如例如,OS、应用、内插式模块等)各自可以具有可以使用对称密钥114对其进行认证的密钥。示出了示例交互,其中,由验证器104将应用质询112C传输至证明器102。应用质询112C可以包括质询应用以“证明”所述应用驻留在证明器102上和/或数据源自证明器102的消息。与设备质询108A相类似,应用质询112C可以由证明器102上请求访问验证器104中的资源的应用、从证明器102提供至验证器104的数据等来触发。可以响应于应用质询112C而传输回复112D,回复112D包括至少基于程序密钥118的数据,可以利用例如对称密钥114在验证器104中对所述程序密钥进行认证。
与本公开一致,信任链导出无需集中记录受到所有各方信任的测量结果,并且因此设备无需基于硬件的保护来保护测量结果或者代表其他设备对所述测量结果进行上报和签名。相反,软件可以负责正确导出密钥,并且执行意识存储器保护可以用于保护所生成的密钥116、118等免受OS或其他应用中的威胁。进一步针对降低的硬件成本,信任链导出还可以迁移在资源受限设备的引导和可信执行过程中的性能瓶颈的问题。所产生的证明协议仅需要消息认证码(MAC)以证明正确加载了特定应用,并且与和中央可信子系统(例如,TPM)进行互操作相比可以易于且更高效地集成在安全信道协议中。虽然对称信任链可能被限于仅提供对单独(例如,隔离的)应用的加载时间测量和证明,但是由于对设备的完整软件状态进行验证的高复杂度,因此关注对单独的隔离应用(例如,可信执行)的测量和有效性是当前趋势。此外,利用运行时间程序测量结果对远程证明进行扩展当前未解决,但是现在在与本公开一致的实施例中得到了解决。
图2展示了根据本公开的至少一个实施例可用的验证器104’和证明器102’的示例配置。具体地,验证器104'和证明器102'可以能够执行诸如在图1中所公开的示例功能。然而,验证器104’和证明器102'仅意指作为可以在与本公开一致的实施例中可用的装置的示例,并且并不意在将这些各个实施例限制于任何特定方式的实现方式。
验证器104’可以包括例如被配置成用于管理设备操作的系统模块200。系统模块200可以包括例如处理模块202、存储器模块204、电源模块206、用户接口模块208以及通信接口模块210。验证器104’还可以包括通信模块212和TEE模块214。虽然通信模块212和TEE模块214已经被展示为与系统模块200分离,但是为了解释的目的,仅仅提供了图2中所示的示例实现方式。与通信模块212和TEE模块214相关联的功能中的一些或全部可以并入到系统模块200中。
在验证器104’中,处理模块202可以包括位于分离部件中的一个或多个处理器、或者替代性地,在单个部件中(例如,在片上系统(SoC)配置中)具体化的一个或多个处理核以及任何处理器相关的支持电路(例如,桥接接口等)。示例处理器可以包括但不限于:可从英特尔公司获得的各种基于x86的微处理器,包括在奔腾(Pentium)、至强(Xeon)、安腾(Itanium)、赛扬(Celeron)、阿童木(Atom)、核i系列产品家族、高级RISC(例如,精简指令集计算)机器或“ARM”处理器等中的那些。支持电路的示例可以包括被配置成用于提供接口的芯片组(例如,可从英特尔公司获得的北桥、南桥等),通过所述接口,处理模块202可以与验证器104’中可以不同速度、不同总线等正在进行操作的其他系统部件进行交互。通常与支持电路相关联的功能的部分或全部还可以包括在与处理器一样的物理封装体中(例如,诸如在可从英特尔公司获得的处理器的沙桥(Sandy Bridge)族中)。
处理模块202可以被配置成用于执行验证器104’中的各个指令。指令可以包括程序代码,所述程序代码被配置成用于使处理模块202执行与读数据、写数据、处理数据、制定数据、转换数据、变换数据等相关的活动。信息(例如,指令、数据等)可以存储在存储器模块204中。存储器模块204可以包括固定或可移除格式的随机存取存储器(RAM)或只读存储器(ROM)。RAM可以包括被配置成用于在验证器104’的操作过程中保持信息的易失性存储器,诸如例如静态RAM(SRAM)或动态RAM(DRAM)。ROM可以包括基于BIOS、UEFI等被配置的用于在验证器104’被激活时提供指令的非易失性(NV)存储器模块、诸如电子可编程ROM(EPROMS)的可编程存储器、闪存等。其他固定/可移除存储器可以包括但不限于:磁存储器(诸如例如,软盘、硬盘驱动器等)、电子存储器(诸如固态闪存(例如,嵌入式多媒体卡(eMMC))等)、可移除存储卡或可移除存储棒(例如,微型存储卡(uSD)、USB等)、光存储器(诸如基于CD的ROM(CD-ROM))、数字视频盘(DVD)、蓝光碟等。
电源模块206可以包括内部电源(例如,电池、燃料电池等)和/或外部电源(例如,机电或太阳能发电机、电网、燃料电池等)、以及相关电路(被配置成用于为验证器104’供应操作所需的电源)。用户接口模块208可以包括硬件和/或软件以便允许用户与验证器104’(诸如例如,各种输入机构(例如,麦克风、开关、按钮、旋钮、键盘、扬声器、触敏表面、被配置成用于捕获图像和/或感测接近度、距离、运动、姿势、朝向的一个或多个传感器等)以及各种输出机构(例如,扬声器、显示器、发光/闪烁指示器、针对震动、运动的机电部件等)进行交互。用户接口模块208中的硬件可以并入验证器104’内和/或可以经由有线或无线通信介质耦合至验证器104’。
通信接口模块210可以被配置成用于对分组路由以及通信模块212的其他控制功能进行管理,所述通信模块可以包括被配置成用于支持有线和/或无线通信的资源。在一些实例中,验证器104'可以包括全部由集中通信接口模块210管理的多于一个的通信模块212(例如,包括针对有线协议和/或无线电台的分离物理接口模块)。有线通信可以包括串联和并联的有线介质,诸如例如:以太网、通用串行总线(USB)、火线、数字视频接口(DVI)、高清多媒体接口(HDMI)等。无线通信可以包括例如:极近无线介质(例如,诸如基于近场通信(NFC)标准的射频(RF)、红外(IR)等)、短距无线介质(例如,蓝牙、WLAN、Wi-Fi等)、长距无线介质(例如,蜂窝广域无线电通信技术、基于卫星的通信等)或经由声波的电子通信。在一个实施例中,通信接口模块210可以被配置成用于防止在通信模块212中活跃的无线通信互相干扰。在执行此功能时,通信接口模块210可以基于例如消息等待传输的相对优先级为通信模块212安排活动。虽然图2中所公开的实施例展示了通信接口模块210与通信模块212分离,但是将通信接口模块210和通信模块212的功能并入同一模块内还可以是可能的。
TEE模块214可以是安全工作空间,在所述安全工作空间中,可以执行已知良好的程序,可以采用安全的方式存储机密信息等。通常,TEE模块214可以包括安全的计算资源集合,从而使得在TEE模块214内执行的程序与和所述执行程序相关联的任何数据隔离开。除了可以开始或停止所述程序并且可以插入或删除所述相关联数据之外,所述程序/数据在程序执行过程中不会相互干扰或被观察到。所述数据插入可以是未观察到的并且因此不会互相干扰,并且离开TEE模块214的任何数据采用受控方式被释放。与本公开一致,在TEE模块214内执行的至少一个已知良好的程序可以执行在此关于TEE模块106而公开的任何或全部操作。在一个示例实现方式中,TEE模块214可以利用由英特尔公司开发的软件防护扩展(SGX)技术。SGX可以向存储器总线提供系统存储器内部的安全且硬件加密的计算和存储区域,其内容无法被特权代码或者甚至通过硬件应用被解密。当TEE模块214受到SGX保护时,与本公开一致的实施例使得侵入者不可能解密TEE模块214的内容。受保护的数据无法在SGX外部被观察到,并且因此在SGX外部不可访问。
在使用SGX来实现TEE模块214的示例实现方式中,可以在每个程序内部对程序的身份(例如,基于每个程序的内容的密码散列测量结果)进行签名和存储。当然后对所述程序进行加载时,所述处理器验证所述程序的测量结果(例如,如由所述处理器计算的)与先前嵌入在所述程序内部的测量结果相同。用于对所述嵌入式测量结果进行签名的签名也是可验证的,因为所述处理器设置有用于在程序加载时间对所述签名进行验证的公钥。以此方式,恶意软件无法篡改所述程序,也无法更改其可验证的测量结果。恶意软件也无法假冒所述签名,因为所述签名密钥与所述程序的作者是安全的。因此,所述软件可以不被任何恶意软件读取、写入或更改。而且,还可以在TEE模块106中保护数据。例如,TEE模块106中的已知良好的程序可以对数据(诸如密钥、密码、许可等)进行加密,从而使得仅经验证的良好程序可以对此数据进行解密。
证明模块216可以驻留在TEE模块214内。证明模块216可以例如与处理模块202、存储器模块204、以及通信模块212进行交互。在操作的示例中,证明模块216可以使通信模块212向证明器102'发送质询并且可以从证明器102'接收证明和票数据。证明模块216可以利用处理模块202中的处理资源和/或存储器模块204中的存储器资源以便处理从证明器102'接收的所述数据。而且,证明模块216可以使通信模块212至少将所述票数据传输至验证器104并且可以从验证器104接收授权令牌信息以用于生成对称密钥114。证明模块216然后可以使通信模块212将至少一个对称密钥114传输至证明器102’。
证明器102’已经被表示为图2的示例中的资源有限设备。通信模块218可以被配置成用于至少向验证器104'传输并接收数据(例如,通信模块212)。由通信模块218接收的数据可以被提供至证明器102’中的操作资源(例如,至合并操作模块220)。合并操作模块220可以能够执行与系统模块200类似的功能但以更小的比例。例如,合并操作模块220可以包括单体处理解决方案(诸如SoC),所述单体处理解决方案可以被配置成用于处理包括资源(诸如例如,处理器222、平台处初始化模块(例如,引导加载器)224、存储器226等)的证明器102’的处理操作中的所有操作。在一个实施例中,合并操作模块220可以使通信模块218与通信模块212进行交互。在一个实施例中,这种交互可以限于有线通信、近距离或短程无线通信。在此限制可以简单地为证明器102’的功能现实的同时,其还可以用于增强验证器104'与证明器102’之间的交互的安全性,因为证明器102'仅可以能够在对称密钥分配108过程中与近距离单个设备(例如,验证器104’)进行交互。
图3展示了根据本公开的至少一个实施例的对称密钥分配108’的示例。图3详细描述了验证器104和证明器102可以如何建立可以用于进行远程证明的共享对称密钥KV,P,其示例将在图3中被描述。鉴定器106(例如,证明器102的制造商)可以确定证明器102的标识IDP(例如,在制造时),并且可以将认证密钥EKP嵌入到证明器102中的安全存储器位置(例如,加密存储器)中。为了增强安全性,可以假设证明器102无法在协议交换阶段期间与除验证器104之外的另一设备进行通信(例如,经由有线、无线或短距离通信),因此防止了受到危及的软件在证明器102处与鉴定器106或另一外部实体发生可能的碰撞。然而,验证器104和鉴定器106可以经由安全信道(诸如传输控制协议/互联网协议(TCP/IP)上的传输层安全(TLS))进行交互。如图3中示出的,验证器104可以为密钥分配会话生成随机数Nv和NAUTH,并且可以将这些值与验证器104 IDV的标识符进行散列以用于传输所述设备质询。证明器102可以生成用于对所述质询进行响应的数据,所述响应至少包括密钥数据CP和票V,M。可以在证明器102中通过对各个值执行密码功能来生成CP和票V,M,所述各个值至少包括在所述设备质询和IDP中发送的值。
在一个实施例中,验证器104则可以将NAUTH和票V,M转发至鉴定器106(例如,经由安全信道)。可以采用主从密钥方案以便减低所需的存储,从而使得鉴定器106可以能够处理大量的证明器102。已知EK,鉴定器106可以能够使用密钥导出函数(KDF)(诸如EKp=KDF(EK,IDp))来导出其设备IDp之一的EKp。由鉴定器106对票V,M进行认证可以导致生成授权令牌SV,其中,SV=ADEC(EKP,票V,M)。然后可以至少将SV传输回至验证器104以用于设置对称密钥KV,P。如图3所示,然后可以基于CV=MAC(KV,P,NV,Np)来生成确认CV。证明器102可以接收确认CV并且可以利用CV来确定已经设置了对称密钥KV,P。
在图3的示例协议中,可能未朝向证明器102或鉴定器106对验证器104进行明确认证,这意味着任何验证器104都可以触发此协议。然而,这种交换确保了鉴定器106了解到与部署至IDP的所述对称密钥KV,P相关联的身份IDV。这样,至少两个备选方案可以用于验证器104的带外认证(以及授权):分配式方法,所述分配式方法可以采用验证器104与证明器102之间的本地(例如,物理)授权;以及集中式方法,其中,鉴定器106可以充当验证器104与证明器102之间的中介器。本地授权可以利用以下事实:许多设备已经基于物理接近度或相似关系提供了带外密钥部署。例如,设备配对协议可以在本地可信环境中执行对称密钥交换,并且然后可以要求用户通过在任一设备上输入设备PIN来对所述交换进行认证。以此方式,可与证明器102建立由验证器104最新获取的公共共享秘密“S”。然而,证明器102需要配备有用于在可信环境中执行配对的可信用户I/O设施(例如,其在一些限制资源设备中可能不可用)。否则,验证器104将不会知道是否与证明器102上的安全或受到危及的软件共享S。虽然S单独可能对于证明不是有用的,但是可在图3的示例中使用S以便建立验证器104与证明器102之间的经认证的信道,从而确保证明器102无法与除验证器104之外的其他多方进行通信。以此方式,S可以用于对验证器104与证明器102之间的对称密钥KV,P的部署进行本地认证和授权。在基本协议中物理隔离证明器确保了不会发生与鉴定器106的协作并且成功共享的对称密钥KV,P仅对验证器104和证明器102是已知的。因而,即使危及到证明器102,但是对称密钥KV,P仍可用于验证证明器102并检测所述危害。在对证明器102进行证明之后,物理隔离可能不再是必要的。
如果本地授权不是可行的或者不被认为是足够安全的,则可以采用集中式解决方案,在所述集中式解决方案中,鉴定器106明确授权验证器104与证明器102建立对称密钥KV,P。出于此目的,验证器应当向鉴定器106认证何时在基本协议中建立安全信道,从而使得验证器104的身份可以加密链接至IDV,如在验证器104与证明器102之间的本地通信中使用的。例如,如果验证器104与鉴定器106之间的所述安全信道使用标准公钥方案来进行双向非对称认证,则IDV可以是验证器104的公钥Vpub的指纹(例如,密码散列值)。鉴定器106然后可以在已知Vpub的私钥的情况下验证证明器102不基于除验证器104之外的其他实体正在与和鉴定器106进行通信的同一验证器104进行交互,可以通过IDV=散列(Vpub)对所述私钥进行唯一标识。因此,鉴定器106可以基于IDV和IDP执行对验证器104的授权(例如,通过在数据库中进行查找(如果验证器104已经购买了证明器102或者如果验证器104是可执行对P的证明的特定特权组的一部分))。
图4展示了根据本公开的至少一个实施例的远程证明112’的示例。远程证明协议是质询响应协议,其中,证明器102可以使用部署的对称密钥KV,P来“鉴定”其平台的软件状态。出于此目的,传统的证明方案记录证明器102上的安全存储器位置中的证明器102的软件状态(诸如TPM的平台配置寄存器(PCR)),并且然后对那些记录的测量结果以及来自由验证器104发起的质询的临时值一起进行签名。从初始引导例程到启动OS和应用的完整记录被称为信任链,因为每个部件需要先前加载的部件对其进行测量。
可通过将软件测量结果存储在存储器位置中来实现相似的方案,利用执行意识存储器保护方案通过保护证明密钥KV,P以及“软件PCR”来保护所述存储器位置,从而使得仅可信远程证明代码可访问那个数据。然而,嵌入式环境和对称证明密钥还使得能够实现进一步简化,这可以被考虑为“隐含”或“导出的”信任链。以此方式,在每次某个软件正在加载另一软件模块时,可以使用相应的密钥生成和/或密钥转授操作来扩展所述信任链,而非存储安全位置中的测量结果。如图4所示,在证明器102”中,可以通过拥有根对称密钥KV,P的平台引导代码来开启所述信任链。然而,并非基于安全硬件或固件来提供运行时间服务(其可以是资源密集型),而是安全引导例程可以测量(例如,通常通过进行散列)软件模块并且直接将导出的程序密钥KM=MAC(KV,P,散列M)嵌入到加载的程序模块的保留位置中。图4中展示了示例操作,其中,针对引导加载器400,散列1=测量(引导加载器代码)并且程序密钥K1=MAC(KV,P,计数器||散列1)。然后可以采用程序密钥K1来生成与OS/任务402相对应的程序密钥(例如,散列2=测量(OS/任务代码)),并且程序密钥K2=MAC(K1,计数器||散列2)。同样,还可以导出具体对应于其他软件404的程序密钥,其中,散列3=测量(其他软件代码)并且程序密钥K3=MAC(K1,计数器||散列3)。
每个软件模块(例如,OS/任务402、其他软件404等)然后可以直接使用其相应的程序密钥KM(例如,K1、K2、K3等)以及测量结果链(例如,存储在每个模块中的各散列值)一起来证明其初始状态(例如,测量)。接收这些测量结果作为由证明器102提供至应用质询的响应的一部分,验证器104则可以能够从KV,P导出程序密钥KM,并且鉴于在应用质询中由验证器104提供的临时值仅基于利用程序密钥KM计算的MAC来验证KM的正确导出。这种方式可以在例如由执行意识存储器保护使能的低端设备中尤其有用,所述低端设备不需要用于为单独的嵌入式应用提供可信执行的可信OS、可信固件或特权CPU模式(例如,以最小的硬件和软件成本)。对称信任链还可以用于生成特定于软件的加密密钥(例如,用于“密封”所述软件)。
图5展示了根据本公开的至少一个实施例的从验证器的角度的对称密钥和信任链的示例操作。初始地,可以在验证器中触发证明。示例证明触发可以包括例如:验证器或证明器的激活、访问从所述证明器接收的验证器中的资源的请求、从所述证明器正在接收的数据等。然后可以在操作502中作出有关是否需要密钥分配的判定。如果例如所述验证器从未与所述证明器进行交互、现有的对称密钥被损坏或者已到期等,则可能需要密钥分配。如果在操作502中确定需要密钥分配,则在操作504中可以将设备质询传输至所述证明器。可以在操作506中接收对所述设备质询的响应,所述响应至少包括密钥数据和票数据。所述验证器则可以在操作508中继续将至少所述票数据传输至鉴定器。然后可以在操作510中作出有关是否响应于在操作508中传输至少所述票数据而从所述鉴定器接收至少包含授权令牌的消息的判定。如果在操作510中确定未接收到包括所述授权令牌的消息,则在操作512中密钥分配操作可以终止或者可选地返回至另一次尝试的操作504。如果在操作510中确定接收到至少包括所述授权令牌的消息,则在操作514中所述授权令牌可以用于设置对称密钥(例如,至少基于在操作506中接收的所述密钥数据)。然后可以在操作516中将设置所述密钥的确认传输至所述证明器。
如果在操作502中确定应用和/或数据认证需要证明(例如,不需要密钥分配),则在操作518中可以将应用质询传输至所述证明器。可以在操作520中接收对所述应用质询的响应。所述验证器可以在操作522中继续对所述响应的内容进行认证。对所述响应的内容进行认证可以至少包括:对在所述响应中提供的程序密钥执行MAC以便判定是否基于在操作514中设置的所述对称密钥而生成所述程序密钥。可以在操作524中确定基于所述认证的回复,并且然后在操作526中将其传输至所述证明器。
图6展示了根据本公开的至少一个实施例的从证明器的角度的对称密钥和信任链的示例操作。图6中公开的操作假定已经发生密钥分配操作(例如,诸如在图5中公开的,操作504至518),从而使得对称密钥已经驻留在所述证明器中。可以在操作600中激活所述证明器。在证明器激活之后,可以在操作602中发生引导加载,其中,例如可以至少基于计数器、所述引导加载器的测量结果、以及所述对称密钥来生成框架密钥(例如,引导加载器密钥)。
在所述计数器在操作604中递增之后,可以在操作606中加载下一代码模块。例如,可以在所述引导代码之后加载OS/任务模块,这则可以跟随在将其他软件等加载到所述证明器中之后。在操作606中加载所述下一代码模块之后,可以在操作608中基于所述计数器的当前值、正在加载的当前代码模块的测量结果、以及针对先前的代码模块生成的密钥(例如,框架密钥或先前的程序密钥)来生成所述代码模块的程序密钥。然后可以在操作610中作出有关是否存在要加载到所述证明器中的附加代码模块的判定。在操作610中确定仍存在要加载的附加代码模块可以跟随在返回至操作604之后,其中,所述计数器可以针对所述下一代码模块递增。否则,如果在操作610中确定已经加载了所述代码模块中的全部,则在操作612中所述证明器可以开始监听来自所述验证器的质询。
使用信任链密钥导出来密封数据
以上已经描述了各实施例,所述各实施例允许验证器104利用鉴定器106所支持的质询/响应方法来对证明器102中的应用进行认证。此系统可以防止验证器104从可能已经受到危及的证明器102中的应用接收数据,但是其不能防止黑客、恶意软件等访问和/或更改存储在证明器102上的应用数据。加密“密封”是一种保护机制,其中,可以对数据进行加密(例如,“密封”)以防止危及数据。在至少一个实施例中,可以在具有相同软件状态(例如,基于单独代码模块的测量的相同软件版本)的相同平台上仅对密封数据进行解密(例如,“解封”),如当对所述数据进行首次密封时。密封通常需要基于以下各项所保持的TPM标准的可信运行时间(诸如可信平台模块(TPM)):可信计算组织(TCG);基于固件的TPM(fTPM)解决方案;或者另一种认证系统,所述认证系统可以安全地记录对平台(例如,平台配置寄存器(PCR))上的软件的测量结果并且在解封过程中可以验证当前的测量结果集合与在密封明文时所记录的那些测量结果相匹配。所述可信运行时间另外需要仅可信运行时间代码自身可用的秘密加密密钥。基于这些要求,对OS有关的可信运行时间的硬件支持可引入大量的成本,并且对于低成本且资源受限的设备(诸如传感器、RFID卡、可穿戴设备等)通常不是可行的。由于资源受限设备可以是用于许多新应用的使能器,因此可预见的是持续需要低成本的解决方案。
本公开可以进一步涉及使用信任链密钥导出来密封数据。在至少一个实施例中,信任链可以用于导出密封密钥以用于对证明器设备102上的数据进行密封。证明器设备102可以是资源受限的,并且因此可能不能够支持传统上执行数据密封所需的信任基础设施。为了降低这些有限资源的压力,可以在不需要可信运行时间的情况下在证明器设备102中生成密封密钥。用于密封的密钥导出链可以与以上呈现的用于证明的密钥导出链并行建立,区别为不包括临时值或计数器以确保所述密封密钥跨重引导而是相同的。相反,按照需要,密封密钥链被当作根密钥链,从所述根密钥链中可以导出特定于会话的密钥和特定于应用的密钥。由于所述密封密钥是与状态相关的,因此还公开了一种用于在软件升级过程中对密封数据进行授权迁移的方法。
在至少一个实施例中,设备可以被配置成用于使用信任链来密封数据。所述设备至少可以包括例如存储器和处理器。所述处理器可以至少用于从所述存储器加载代码模块。在所述加载代码模块之后,所述处理器可以进一步用于:测量所述代码模块;确定与所述代码模块相对应的密封密钥,其中,所述密封密钥是至少基于与先前加载的代码模块相对应的在先密封密钥以及所述代码模块的测量结果而确定的;以及使用所述密封密钥对与所述加载的代码模块相对应的数据进行密封。
在至少一个实施例中,所述设备进一步包括:平台初始化模块,所述平台初始化模块用于将信任根代码加载到所述设备中。所述信任根代码可以例如使得所述处理器至少基于所述存储器的受到存储器保护逻辑保护的区域中的平台专用根密封密钥来确定与从所述存储器加载的第一代码模块相对应的密封密钥,所述存储器保护逻辑仅允许所述信任根代码访问所述平台专用根密封密钥。所述处理器可以进一步用于:判定所述存储器中是否存在所述平台专用根密封密钥;以及如果确定所述存储器中不存在所述平台专用根密封密钥则生成新的平台专用根密封密钥。
在相同或不同的实施例中,所述处理器可以进一步用于:判定软件更新在所述存储器中针对所述加载的代码模块中的任何代码模块是否未决。如果确定软件更新针对代码模块是未决的,则所述处理器可以进一步用于:使用认证密钥对所述软件更新进行认证;和/或判定所述软件更新是否包括指示不应当迁移密封数据的元数据以便利用所述代码模块的更新版本进行操作。确定软件更新是未决的可以进一步使所述处理器:至少基于与先前加载的代码模块相对应的在先密封密钥以及所述软件更新针对其未决的所述代码模块的测量结果来确定旧密封密钥;以及至少基于与所述先前加载的代码模块相对应的所述在先密封密钥以及所述软件更新的测量结果来确定新密封密钥。所述处理器然后可以进一步用于:执行所述软件更新;使用所述旧密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述密封数据进行解封;以及使用所述新密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述解封数据进行重新密封。与本公开一致,一种用于使用信任链来密封数据的示例方法可以包括:从设备的存储器加载代码模块;测量所述代码模块;确定与所述代码模块相对应的密封密钥,其中,所述密封密钥是至少基于与先前加载的代码模块相对应的在先密封密钥以及所述代码模块的测量结果而确定的;以及使用所述密封密钥对与所述加载的模块相对应的数据进行密封。
图7展示了根据本公开的至少一个实施例的导出密封密钥的示例。虽然图7展示了在图4中公开的证明示例的框架内导出密封密钥的示例,但是重要的是注意到,图4中描述的结构和/或功能中的全部对于导出密封密钥可以不是必需的。这些结构和/或功能仅提供为理解以下描述的实施例的上下文,因为由图4和图7利用的方法可以是相似的。图7中用粗体强调了在图7中作出的对图4的原始公开的添加。
通常,存储器模块204’中的引导代码可以使得在启动(例如,引导、重引导等)证明器102”’的过程中加载信任根(RoT)代码。所述RoT代码可以初始化操作,通过所述操作,与加载每个相应的代码模块一起生成密封密钥S1、S2、S3等,所述每个相应的代码模块包括例如如图7所示的引导加载器400、OS/任务402以及其他软件404。可以对所述代码模块进行“分层”,因为它们可以在证明器102”’中以不同的水平进行操作。例如,可以将引导加载器400加载到证明器102”’中的第一层中(例如,具有更多访问特权的低级别层)。加载到每个层中的代码模块则可以使得代码模块加载到更高的层中,并且可以确定每个代码模块的相应密封密钥。以此方式,引导加载器400可以继续将OS/任务402以及其他软件404加载到证明器102”’中的第二层上(例如,具有比所述第一层更少的访问特权的更高级别),并且可以确定OS/任务402的密封密钥S2以及其他软件404的密封密钥S3。密封密钥S1、S2、S3等可以分别用于在引导加载器400、OS/任务402以及其他软件404中对数据进行密封。
与本公开一致,可以基于根密封密钥S0导出密封密钥,所述根密封密钥可以存储在存储器模块204’中。在至少一个实施例中,根密封密钥S0可以在证明器102”’的初始化过程中仅由RoT代码访问,并且在初始化之后可以存储在包括存储器保护逻辑的存储器模块204’的区域中,所述存储器保护逻辑使得根密封密钥S0不可读直到重新初始化证明器102”’。如果在加载所述RoT代码时确定存储器模块204’中不存在根密封密钥S0,则所述RoT代码可以生成新根密封密钥S0。新根密封密钥S0可以是由所述RoT生成的随机值。所述新根密封密钥S0则可以用于生成密封密钥S1、S2、S3等。如图7所展示的,可以通过执行MAC功能基于当前代码模块的测量结果(例如,散列值)以及与先前的层相对应的密封密钥来生成密封密钥S1、S2、S3等。例如,S1=MAC(S0,散列1),S2=MAC(S1,散列2),S3=MAC(S2,散列3)等。密封密钥S1则可以用于对与引导加载器400相关联的数据进行密封,密封密钥S2可以用于对与OS/任务402相关联的数据进行密封,并且密封密钥S3可以用于对与其他软件404相关联的数据进行密封等。
密封密钥S1、S2、S3等是特定于平台的并且跨所有重引导是相同的。由于密封密钥S1、S2、S3等是基于先前层的密封密钥以及相关联代码模块的散列值而确定的,因此解封密封数据的能力可能取决于证明器102”’的软件状态在生成所述密封密钥之后未发生变化。如果证明器102”’的软件状态在未更新密封密钥的情况下发生变化,则将不再能够对所述密封数据进行解密。这可以防止黑客、恶意软件等公开敏感、机密和/或专有数据,所述黑客、恶意软件通过利用旨在危及证明器102”’安全的其他软件来替代和/或更改代码模块从而攻击证明器102”’。证明器102”’的软件状态还可以由于合法更新至代码模块而发生变化。关于图9进一步讨论了允许合法软件更新的操作。
图8展示了根据本公开的至少一个实施例的使用信任链密钥导出来密封数据的示例操作。在操作800中,可以对设备进行初始化(例如,引导、重引导等)。然后可以在操作802中作出有关所述设备中是否存在根密封密钥S0的判定。在操作804中确定存在根密封密钥S0可以跟随在操作804之后,其中,可以作出有关软件更新在所述设备中是否未决的进一步判定。如果在操作804中确定软件更新是未决的,则可以在图9中继续执行所述软件更新的操作。在操作804中确定没有软件更新是未决的可以跟随在操作806之后,其中,所述设备可以继续正常操作(例如,所述设备可以完成初始化过程并且进入正常操作模式)。
在操作802中确定所述设备中不存在根密封密钥S0可以跟随在操作808之后,其中,可以在所述设备中生成根密封密钥S0。然后可以在操作810中基于所述根密封密钥S0以及与所述框架密钥相对应的代码模块的测量结果来确定框架密封密钥(例如,密封密钥S1)。在操作812中,然后可以使用所述框架密钥来密封与所述引导加载器相关联的数据(例如,包括RoT代码)。可以在操作814中加载另一代码模块,并且在操作816中可以基于在先密封密钥(例如,与在先前的层中加载的所述代码模块相对应的在先密封密钥)以及在操作814中加载的所述代码模块的测量结果来确定程序密封密钥(例如,密封密钥S2)。可以在操作818中对与在操作814中加载的所述代码模块相关联的数据进行密封。在操作820中,可以继续加载代码模块直到所有的代码模块被加载,在此之后,可以在操作806中进行正常操作。
图9展示了根据本公开的至少一个实施例的用于在系统中使用信任链密钥导出来处理软件更新的示例操作。通常,可以以代码模块级来处理软件更新。可以使得所述代码模块可访问新密封数据和旧密封数据两者,从而使得可以在所述更新卸载旧数据之前对数据进行迁移。可选保护还可以被合并为所述更新的一部分以便帮助确保所述更新在安装到所述设备(例如,证明器102”’)上时是安全的。
从图8中展示的操作804继续,可以在操作900中加载代码模块。然后可以在操作902中作出有关针对所述代码模块更新是否未决的判定。在操作902中确定针对所述代码模块更新不是未决的可以跟随在操作904中的有关是否存在要加载的附加代码模块的进一步判定。确定存在要加载的另外代码模块可以跟随在返回至用于加载下一代码模块的操作900之后。如果在操作904中确定不存在要加载的另外代码模块,则在操作906中所述设备可以继续正常操作。
在操作902中确定针对所述代码模块更新是未决的可以跟随在可选操作908至912之后。操作908至912可以是可选的,因为它们可以是实现方式相关的,并且因此不是在本公开的所有实施例中都要求的。可以在操作908中作出有关可对针对所述代码模块的更新未决进行认证的判定。例如,所述RoT可以使所述设备获得用于对所述更新进行认证的认证密钥。证明器设备102”’中的所述RoT或另一模块/系统可以从经认证的提供方(例如,所述代码模块的制造商、所述设备的制造商等)获得所述认证密钥。可以与所述更新一起或者作为单独通信(例如,通过通信模块218与所述经认证的提供方实施的)的一部分来获得所述认证密钥。如果在操作908中未认证所述更新,则在操作910中可以中止所述更新和密封数据迁移两者,其可以跟随在操作904中的有关是否存在要加载的附加代码模块的判定之后。如果在操作908中确定已对所述更新进行认证,则在操作912中可以作出有关所述代码模块和/或所述更新是否包括指示在所述更新过程中不应当迁移所述密封数据的元数据的判定。如果在操作912中确定所述元数据指示不应当迁移所述密封数据,则在操作910中仍可以执行所述更新,但是可能中止对密封数据的迁移。
如果在操作912中确定不存在指示不对所述密封数据进行迁移的元数据,则在操作914中可以针对现有的代码模块(例如,所述旧代码模块)和所述更新(例如,所述新代码模块)两者生成密封密钥。可以在正在更新的代码模块之前由层中的代码模块生成密钥,其中,所述旧密封密钥可以基于执行与前一层相对应的密封密钥的MAC以及所述旧代码模块的测量结果,并且所述新密封密钥可以基于执行与前一层相对应的所述密封密钥的MAC以及对所述新代码模块的测量。然后可以在操作916中执行软件更新,并且在操作918中可以将所述密封数据迁移至所述新代码模块。所述密封数据的迁移可以包括例如:使用在操作914中确定的所述旧密封密钥对所述密封数据进行解封;以及使用同样在操作914中确定的所述新密封密钥进行重新密封。在完成对密封数据的迁移之后,可以在操作920中删除所述旧代码模块,所述操作可以跟随在返回至用于判定是否具有仍需要加载的另外代码模块的操作904之后。
虽然图5、图6、图8和图9展示了根据不同实施例的操作,但是将理解的是,对于其他实施例来说,并非图5、图6、图8和图9中所描绘的所有操作都是必需的。确实,在此完全可以设想,在本公开的其他实施例中,可以采用任何附图中未具体地示出、但仍然完全符合本公开的方式将图5、图6、图8和图9中所描绘的操作和/或本文中所描述的其他操作进行组合。因而,对未在一幅图中准确示出的特征和/或操作有所涉及的权利要求被视为落入本公开的范围和内容内。
如在本申请和权利要求书中所使用的,由术语“和/或”接合的一系列项目可意指所列项目的任何组合。例如,短语“A、B和/或C”可意指A;B;C;A和B;A和C;B和C;或A、B和C。如在本申请和权利要求书中所使用的,由术语“中的至少一项”接合的一系列项目可意指所列术语的任何组合。例如,短语“A、B或C中的至少一项”可意指A;B;C;A和B;A和C;B和C;或A、B和C。
如本文中任何实施例所使用的,术语“模块”可以指被配置成用于执行前述操作中任一操作的软件、固件和/或电路。软件可以具体化为非瞬态计算机可读存储介质上所记录的软件包、代码、指令、指令集和/或数据。固件可以具体化为存储器设备中硬编码(例如,非易失性的)的代码、指令或指令集和/或数据。如本文中任何实施例所使用的,“电路”可以例如单一地或以任何组合形式包括硬接线电路、可编程电路(诸如包括一个或多个个体指令处理核的计算机处理器)、状态机电路、和/或存储有可由可编程电路执行的指令的固件。这些模块可以统一地或单独地具体化为形成例如,集成电路(IC)、片上系统(SoC)、台式计算机、膝上计算机、平板计算机、服务器、智能电话等的较大系统的一部分的电路。
在此描述的任何操作可以在系统中实现,所述系统包括具有单独地或组合地存储在其上的多条指令的一个或多个存储介质(诸如,非瞬态存储介质),当这些指令由一个或多个处理器执行时执行这些方法。此处,处理器可以包括例如:服务器CPU、移动设备CPU、和/或其他可编程电路。而且,旨在使得在此描述的操作可以跨多个物理设备(诸如在多于一个的不同物理位置处的处理结构)分布。存储介质可以包括任何类型的有形介质,例如包括以下各项的任何类型的磁盘:硬盘、软盘、光盘、压缩盘-只读存储器(CD-ROM)、可复写CD(CD-RW)、和磁光盘、如只读存储器(ROM)的半导体器件、如动态和静态RAM的随机存取存储器(RAM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、闪存、固态盘(SSD)、嵌入式多媒体卡(eMMC)、安全数字输入/输出(SDIO)卡、磁卡或光卡、或者适合于存储电子指令的任何类型的介质。其他实施例可以实现为由可编程控制设备执行的软件模块。
因此,本公开涉及使用信任链密钥导出来密封数据。在至少一个实施例中,信任链可以用于导出密封密钥以用于对设备上的数据进行密封。所述设备至少可以包括例如存储器和处理器。所述处理器可以至少用于从所述存储器加载代码模块。在所述加载代码模块之后,所述处理器可以进一步用于:测量所述代码模块;确定与所述代码模块相对应的密封密钥,其中,所述密封密钥是至少基于与先前加载的代码模块相对应的在先密封密钥以及所述代码模块的测量结果而确定的;以及使用所述密封密钥对与所述加载的代码模块相对应的数据进行密封。由于所述密封密钥是与状态相关的,因此还公开了一种用于在软件升级过程中对密封数据进行授权迁移的方法。
以下示例涉及进一步的实施例。如以下所提供的,本公开的以下示例可以包括主题,诸如设备、方法、用于存储指令(当被执行时使机器基于所述方法执行动作)的至少一个机器可读介质、用于基于所述方法执行动作的装置和/或用于对称密钥和信任链的系统。
根据示例1,提供了一种被配置成用于使用信任链来密封数据的设备。所述设备可以包括:存储器;以及处理器,所述处理器至少用于从所述存储器加载代码模块,其中,在所述加载代码模块之后,所述处理器进一步用于:测量所述代码模块;确定与所述代码模块相对应的密封密钥,其中,所述密封密钥是至少基于与先前加载的代码模块相对应的在先密封密钥以及所述代码模块的测量结果而确定的;以及使用所述密封密钥对与所述加载的代码模块相对应的数据进行密封。
示例2可以包括如示例1所述的要素,并且可以进一步包括:平台初始化模块,所述平台初始化模块用于将信任根代码加载到所述设备中。
示例3可以包括如示例2所述的要素,其中,所述信任根代码使得所述处理器至少基于所述存储器的受到存储器保护逻辑保护的区域中的平台专用根密封密钥来确定与从所述存储器加载的第一代码模块相对应的密封密钥,所述存储器保护逻辑仅允许所述信任根代码访问所述平台专用根密封密钥。
示例4可以包括如示例3所述的要素,其中,所述处理器进一步用于:判定所述存储器中是否存在所述平台专用根密封密钥;以及如果确定所述存储器中不存在所述平台专用根密封密钥则生成新的平台专用根密封密钥。
示例5可以包括如示例4所述的要素,其中,所述新的平台专用密封密钥是由所述信任根代码生成的随机值。
示例6可以包括如示例1至5中任一项所述的要素,其中,所述处理器进一步用于:判定软件更新在所述存储器中针对所述加载的代码模块中的任何代码模块是否未决。
示例7可以包括如示例6所述的要素,其中,如果确定软件更新针对代码模块是未决的,则所述处理器进一步用于:使用认证密钥对所述软件更新进行认证。
示例8可以包括如示例6至7中任一项所述的要素,其中,如果确定软件更新针对代码模块是未决的,则所述处理器进一步用于:判定所述软件更新是否包括指示不应当迁移密封数据的元数据以便利用所述代码模块的更新版本进行操作。
示例9可以包括如示例6至8中任一项所述的要素,其中,如果确定软件更新针对代码模块是未决的,则所述处理器进一步用于:至少基于与先前加载的代码模块相对应的在先密封密钥以及所述软件更新针对其未决的所述代码模块的测量结果来确定旧密封密钥;以及至少基于与所述先前加载的代码模块相对应的所述在先密封密钥以及所述软件更新的测量结果来确定新密封密钥。
示例10可以包括如示例9所述的要素,其中,所述处理器进一步用于:执行所述软件更新;使用所述旧密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述密封数据进行解封;以及使用所述新密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述解封数据进行重新密封。
示例11可以包括如示例6至10中任一项所述的要素,其中,如果确定软件更新针对代码模块是未决的,则所述处理器进一步用于:至少基于与先前加载的代码模块相对应的在先密封密钥以及所述软件更新针对其未决的所述代码模块的测量结果来确定旧密封密钥;至少基于与所述先前加载的代码模块相对应的所述在先密封密钥以及所述软件更新的测量结果来确定新密封密钥;执行所述软件更新;使用所述旧密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述密封数据进行解封;以及使用所述新密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述解封数据进行重新密封。
示例12可以包括如示例1至11中任一项所述的要素,并且可以进一步包括:第二信任链,所述第二信任链包括被配置成用于支持远程证明的密钥。
示例13可以包括如示例1至12中任一项所述的要素,其中,当所述密封密钥被确定时,所述密封密钥取决于所述设备的软件状态。
示例14可以包括如示例13所述的要素,其中,如果所述设备的所述软件状态在不迁移所述密封数据的情况下发生变化,则所述密封数据不可被解封。
根据示例15,提供了一种用于使用信任链来密封数据的方法。所述方法可以包括:从设备的存储器加载代码模块;测量所述代码模块;确定与所述代码模块相对应的密封密钥,其中,所述密封密钥是至少基于与先前加载的代码模块相对应的在先密封密钥以及所述代码模块的测量结果而确定的;以及使用所述密封密钥对与所述加载的模块相对应的数据进行密封。
示例16可以包括如示例15所述的要素,并且可以进一步包括:从所述存储器加载信任根代码;以及至少基于所述存储器的受到存储器保护逻辑保护的区域中的平台专用根密封密钥来确定与从所述存储器加载的第一代码模块相对应的密封密钥,所述存储器保护逻辑仅允许所述信任根代码访问所述平台专用根密封密钥。
示例17可以包括如示例16所述的要素,并且可以进一步包括:判定所述存储器中是否存在所述平台专用根密封密钥;以及如果确定所述存储器中不存在所述平台专用根密封密钥则生成新的平台专用根密封密钥。
示例18可以包括如示例17所述的要素,其中,所述新的平台专用密封密钥是由所述信任根代码生成的随机值。
示例19可以包括如示例15至18中任一项所述的要素,并且可以进一步包括:判定软件更新在所述存储器中针对所述加载的代码模块中的任何代码模块是否未决。
示例20可以包括如示例19所述的要素,并且可以进一步包括:如果确定软件更新针对代码模块是未决的,则使用认证密钥对所述软件更新进行认证。
示例21可以包括如示例19至20中任一项所述的要素,并且可以进一步包括:如果确定软件更新针对代码模块是未决的,则判定所述软件更新是否包括指示不应当迁移密封数据的元数据以便利用所述代码模块的更新版本进行操作。
示例22可以包括如示例19至21中任一项所述的要素,并且可以进一步包括:如果确定软件更新针对代码模块是未决的,则执行以下各项中的至少一项:使用认证密钥对所述软件更新进行认证;或者判定所述软件更新是否包括指示不应当迁移密封数据的元数据以便利用所述代码模块的更新版本进行操作。
示例23可以包括如示例19至22中任一项所述的要素,并且可以进一步包括:如果确定软件更新针对代码模块是未决的,则至少基于与先前加载的代码模块相对应的在先密封密钥以及所述软件更新针对其未决的所述代码模块的测量结果来确定旧密封密钥;以及至少基于与所述先前加载的代码模块相对应的所述在先密封密钥以及所述软件更新的测量结果来确定新密封密钥。
示例24可以包括如示例23所述的要素,并且可以进一步包括:执行所述软件更新;使用所述旧密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述密封数据进行解封;以及使用所述新密封密钥使用所述在先密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述解封数据进行重新密封。
示例25可以包括如示例19至24中任一项所述的要素,并且可以进一步包括:如果确定软件更新针对代码模块是未决的,则至少基于与先前加载的代码模块相对应的在先密封密钥以及所述软件更新针对其未决的所述代码模块的测量结果来确定旧密封密钥;至少基于与所述先前加载的代码模块相对应的所述在先密封密钥以及所述软件更新的测量结果来确定新密封密钥;执行所述软件更新;使用所述旧密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述密封数据进行解封;以及使用所述新密封密钥使用所述在先密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述解封数据进行重新密封。
示例26可以包括如示例15至25中任一项所述的要素,并且可以进一步包括:确定所述设备中的第二信任链,所述单独信任链包括被配置成用于支持远程证明的密钥。
示例27可以包括如示例15至26中任一项所述的要素,其中,当所述密封密钥被确定时,所述密封密钥取决于所述设备的软件状态。
示例28可以包括如示例27所述的要素,其中,如果所述设备的所述软件状态在不迁移所述密封数据的情况下发生变化,则所述密封数据不可被解封。
根据示例29,提供了一种至少包括设备的系统,所述系统被安排成用于执行如以上示例15至28中任一项所述的方法。
根据示例30,提供了一种被安排成用于执行如以上示例15至28中任一项所述的方法的芯片组。
根据示例31,提供了至少一种机器可读介质,所述至少一种机器可读介质包括多条指令,所述多条指令响应于正在计算设备上被执行而使所述计算设备执行根据以上示例15至28中任一项所述的方法。
根据示例32,提供了一种被配置成用于使用信任链来密封数据的设备,所述设备被安排成用于执行如以上示例15至28中任一项所述的方法。
根据示例33,提供了一种用于使用信任链来密封数据的系统。所述系统可以包括:用于从设备的存储器加载代码模块的装置;用于测量所述代码模块的装置;用于确定与所述代码模块相对应的密封密钥的装置,其中,所述密封密钥是至少基于与先前加载的代码模块相对应的在先密封密钥以及所述代码模块的测量结果而确定的;以及用于使用所述密封密钥对与所述加载的模块相对应的数据进行密封的装置。
示例34可以包括如示例33所述的要素,并且可以进一步包括:用于从所述存储器加载信任根代码的装置;以及用于至少基于所述存储器的受到存储器保护逻辑保护的区域中的平台专用根密封密钥来确定与从所述存储器加载的第一代码模块相对应的密封密钥的装置,所述存储器保护逻辑仅允许所述信任根代码访问所述平台专用根密封密钥。
示例35可以包括如示例34所述的要素,并且可以进一步包括:用于判定所述存储器中是否存在所述平台专用根密封密钥的装置;以及如果确定所述存储器中不存在所述平台专用根密封密钥则用于生成新的平台专用根密封密钥的装置。
示例36可以包括如示例35所述的要素,其中,所述新的平台专用密封密钥是由所述信任根代码生成的随机值。
示例37可以包括如示例33至36中任一项所述的要素,并且可以进一步包括:用于判定软件更新在所述存储器中针对所述加载的代码模块中的任何代码模块是否未决的装置。
示例38可以包括如示例37所述的要素,并且可以进一步包括:如果用于确定软件更新针对代码模块是未决的则使用认证密钥对所述软件更新进行认证的装置。
示例39可以包括如示例37至38中任一项所述的要素,并且可以进一步包括:用于如果确定软件更新针对代码模块是未决的则判定所述软件更新是否包括指示不应当迁移密封数据的元数据以便利用所述代码模块的更新版本进行操作的装置。
示例40可以包括如示例37至39中任一项所述的要素,并且可以进一步包括:用于如果确定软件更新针对代码模块是未决的则至少基于与先前加载的代码模块相对应的在先密封密钥以及所述软件更新针对其未决的所述代码模块的测量结果来确定旧密封密钥的装置;以及用于至少基于与所述先前加载的代码模块相对应的所述在先密封密钥以及所述软件更新的测量结果来确定新密封密钥的装置。
示例41可以包括如示例40所述的要素,并且可以进一步包括:用于执行所述软件更新的的装置;用于使用所述旧密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述密封数据进行解封的的装置;以及用于使用所述新密封密钥使用所述在先密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述解封数据进行重新密封的装置。
示例42可以包括如示例33至41中任一项所述的要素,并且可以进一步包括:用于确定所述设备中的单独信任链的装置,所述单独信任链包括被配置成用于支持远程证明的密钥。
示例43可以包括如示例33至42中任一项所述的要素,其中,当所述密封密钥被确定时,所述密封密钥取决于所述设备的软件状态。
示例44可以包括如示例43所述的要素,其中,如果所述设备的所述软件状态在不迁移所述密封数据的情况下发生变化,则所述密封数据不可被解封。
本文已采用的术语和表达用作对术语进行描述而非进行限制,并且在使用这种术语和表达时不旨在排除所示且所描述的特征(或其部分)的任何等效物,并且认识到在权利要求书范围内的各种修改是有可能的。从而,权利要求书意在涵盖所有这类等效方案。
Claims (26)
1.一种被配置成用于使用信任链来密封数据的设备,所述设备包括:
存储器;以及
处理器,所述处理器用于至少从所述存储器加载代码模块,其中,在所述加载代码模块之后,所述处理器进一步用于:
测量所述代码模块;
确定与所述代码模块相对应的密封密钥,其中,所述密封密钥是至少基于与先前加载的代码模块相对应的在先密封密钥以及对所述代码模块的测量而确定的;并且
使用所述密封密钥对与所加载的代码模块相对应的数据进行密封。
2.如权利要求1所述的设备,进一步包括:平台初始化模块,所述平台初始化模块用于将信任根代码加载到所述设备中。
3.如权利要求2所述的设备,其中,所述信任根代码使得所述处理器至少基于所述存储器中受到存储器保护逻辑保护的区域中的平台专用根密封密钥来确定与从所述存储器加载的第一代码模块相对应的密封密钥,所述存储器保护逻辑仅允许所述信任根代码访问所述平台专用根密封密钥。
4.如权利要求3所述的设备,其中,所述处理器进一步用于:
判定所述存储器中是否存在所述平台专用根密封密钥;并且
如果确定所述存储器中不存在所述平台专用根密封密钥,则生成新的平台专用根密封密钥。
5.如权利要求1所述的设备,其中,所述处理器进一步用于:判定软件更新在所述存储器中针对所加载的代码模块中的任何代码模块是否未决。
6.如权利要求5所述的设备,其中,如果确定软件更新针对代码模块是未决的,则所述处理器进一步用于:使用认证密钥对所述软件更新进行认证。
7.如权利要求5所述的设备,其中,如果确定软件更新针对代码模块是未决的,则所述处理器进一步用于:判定所述软件更新是否包括指示不应当迁移密封数据以利用所述代码模块的更新版本进行操作的元数据。
8.如权利要求5所述的设备,其中,如果确定软件更新针对代码模块是未决的,则所述处理器进一步用于:
至少基于与先前加载的代码模块相对应的在先密封密钥以及对所述软件更新针对其未决的所述代码模块的测量来确定旧密封密钥;并且
至少基于与所述先前加载的代码模块相对应的所述在先密封密钥以及对所述软件更新的测量来确定新密封密钥。
9.如权利要求8所述的设备,其中,所述处理器进一步用于:
执行所述软件更新;
使用所述旧密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述密封数据进行解封;并且
使用所述新密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述解封数据进行重新密封。
10.一种用于使用信任链来密封数据的方法,所述方法包括:
从设备的存储器加载代码模块;
测量所述代码模块;
确定与所述代码模块相对应的密封密钥,其中,所述密封密钥是至少基于与先前加载的代码模块相对应的在先密封密钥以及对所述代码模块的测量而确定的;以及
使用所述密封密钥对与所述加载的模块相对应的数据进行密封。
11.如权利要求10所述的方法,进一步包括:
从所述存储器加载信任根代码;以及
至少基于所述存储器中受到存储器保护逻辑保护的区域中的平台专用根密封密钥来确定与从所述存储器加载的第一代码模块相对应的密封密钥,所述存储器保护逻辑仅允许所述信任根代码访问所述平台专用根密封密钥。
12.如权利要求11所述的方法,进一步包括:
判定所述存储器中是否存在所述平台专用根密封密钥;以及
如果确定所述存储器中不存在所述平台专用根密封密钥,则生成新的平台专用根密封密钥。
13.如权利要求10所述的方法,进一步包括:
判定软件更新在所述存储器中针对所述加载的代码模块中的任何代码模块是否未决。
14.如权利要求13所述的方法,进一步包括:
如果确定软件更新针对代码模块是未决的,则使用认证密钥对所述软件更新进行认证。
15.如权利要求13所述的方法,进一步包括:
如果确定软件更新针对代码模块是未决的,则判定所述软件更新是否包括指示不应当迁移密封数据以利用所述代码模块的更新版本进行操作的元数据。
16.如权利要求13所述的方法,进一步包括:
如果确定软件更新针对代码模块是未决的,则至少基于与先前加载的代码模块相对应的在先密封密钥以及对所述软件更新针对其未决的所述代码模块的测量来确定旧密封密钥;以及
至少基于与所述先前加载的代码模块相对应的所述在先密封密钥以及对所述软件更新的测量来确定新密封密钥。
17.如权利要求16所述的方法,进一步包括:
执行所述软件更新;
使用所述旧密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述密封数据进行解封;以及
使用所述在先密封密钥使用所述新密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述解封数据进行重新密封。
18.一种用于使用信任链来密封数据的系统,包括:
用于从设备的存储器加载代码模块的装置;
用于测量所述代码模块的装置;
用于确定与所述代码模块相对应的密封密钥的装置,其中,所述密封密钥是至少基于与先前加载的代码模块相对应的在先密封密钥以及对所述代码模块的测量而确定的;以及
用于使用所述密封密钥对与所述加载的模块相对应的数据进行密封的装置。
19.如权利要求18所述的系统,进一步包括:
用于从所述存储器加载信任根代码的装置;以及
用于至少基于所述存储器中受到存储器保护逻辑保护的区域中的平台专用根密封密钥来确定与从所述存储器加载的第一代码模块相对应的密封密钥的装置,所述存储器保护逻辑仅允许所述信任根代码访问所述平台专用根密封密钥。
20.如权利要求19所述的系统,进一步包括:
用于判定所述存储器中是否存在所述平台专用根密封密钥的装置;以及
用于如果确定所述存储器中不存在所述平台专用根密封密钥,则生成新的平台专用根密封密钥的装置。
21.如权利要求18所述的系统,进一步包括:
用于判定软件更新在所述存储器中针对所述加载的代码模块中的任何代码模块是否未决的装置。
22.如权利要求21所述的系统,进一步包括:
用于如果确定软件更新针对代码模块是未决的,则使用认证密钥对所述软件更新进行认证的装置。
23.如权利要求21所述的系统,进一步包括:
用于如果确定软件更新针对代码模块是未决的,则判定所述软件更新是否包括指示不应当迁移密封数据以利用所述代码模块的更新版本进行操作的元数据的装置。
24.如权利要求21所述的系统,进一步包括:
用于如果确定软件更新针对代码模块是未决的,则至少基于与先前加载的代码模块相对应的在先密封密钥以及对所述软件更新针对其未决的所述代码模块的测量来确定旧密封密钥的装置;以及
用于至少基于与所述先前加载的代码模块相对应的所述在先密封密钥以及对所述软件更新的测量来确定新密封密钥的装置。
25.如权利要求24所述的系统,进一步包括:
用于执行所述软件更新的装置;
用于使用所述旧密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述密封数据进行解封的装置;以及
用于使用所述在先密封密钥使用所述新密封密钥对与所述软件更新针对其未决的所述代码模块相对应的所述解封数据进行重新密封的装置。
26.一种其上存储有指令的计算机可读介质,所述指令当由计算机处理器执行时使所述处理器执行如权利要求10至17中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/543,097 US9348997B2 (en) | 2014-03-13 | 2014-11-17 | Symmetric keying and chain of trust |
US14/543,097 | 2014-11-17 | ||
PCT/US2015/060979 WO2016081404A1 (en) | 2014-11-17 | 2015-11-17 | Symmetric keying and chain of trust |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107077568A CN107077568A (zh) | 2017-08-18 |
CN107077568B true CN107077568B (zh) | 2020-08-25 |
Family
ID=56014437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580058736.7A Expired - Fee Related CN107077568B (zh) | 2014-11-17 | 2015-11-17 | 对称密钥和信任链 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP3221996B1 (zh) |
CN (1) | CN107077568B (zh) |
WO (1) | WO2016081404A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107895111B (zh) * | 2017-10-11 | 2021-06-11 | 西安电子科技大学 | 物联网设备供应链信任体系管理方法、计算机程序、计算机 |
CN111737680B (zh) * | 2019-11-20 | 2022-02-22 | 腾讯科技(深圳)有限公司 | 应用程序授权方法、装置和计算机设备 |
WO2022002384A1 (en) * | 2020-07-01 | 2022-01-06 | Huawei Technologies Co., Ltd. | Device and method for hybrid device attestation |
FR3122749B1 (fr) * | 2021-05-10 | 2023-10-27 | Marbeuf Conseil Et Rech | Procédé pour sécuriser l’utilisation d’un logiciel |
US20240419774A1 (en) * | 2023-06-19 | 2024-12-19 | MPCH.io Labs, Inc. | Zero trust authentication of secure systems with trusted platform modules |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645288A (zh) * | 2003-12-16 | 2005-07-27 | 微软公司 | 确保软件更新仅在特定设备或设备类上安装或运行 |
GB2424494A (en) * | 2005-03-22 | 2006-09-27 | Hewlett Packard Development Co | Methods, devices and data structures for trusted data |
CN100511086C (zh) * | 2002-11-27 | 2009-07-08 | 英特尔公司 | 在预引导环境中提供安全执行模式 |
US8060934B2 (en) * | 2007-04-13 | 2011-11-15 | Hewlett-Packard Development Company, L.P. | Dynamic trust management |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7421588B2 (en) * | 2003-12-30 | 2008-09-02 | Lenovo Pte Ltd | Apparatus, system, and method for sealing a data repository to a trusted computing platform |
US7945786B2 (en) * | 2007-03-30 | 2011-05-17 | Intel Corporation | Method and apparatus to re-create trust model after sleep state |
US20090300348A1 (en) * | 2008-06-02 | 2009-12-03 | Samsung Electronics Co., Ltd. | Preventing abuse of services in trusted computing environments |
US20100082960A1 (en) * | 2008-09-30 | 2010-04-01 | Steve Grobman | Protected network boot of operating system |
US8732445B2 (en) * | 2008-10-10 | 2014-05-20 | Panasonic Corporation | Information processing device, information processing method, information processing program, and integrated circuit |
US9208354B2 (en) * | 2013-03-12 | 2015-12-08 | Intel Corporation | Techniques for securing use of one-time passwords |
-
2015
- 2015-11-17 CN CN201580058736.7A patent/CN107077568B/zh not_active Expired - Fee Related
- 2015-11-17 WO PCT/US2015/060979 patent/WO2016081404A1/en active Application Filing
- 2015-11-17 EP EP15860419.9A patent/EP3221996B1/en not_active Not-in-force
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100511086C (zh) * | 2002-11-27 | 2009-07-08 | 英特尔公司 | 在预引导环境中提供安全执行模式 |
CN1645288A (zh) * | 2003-12-16 | 2005-07-27 | 微软公司 | 确保软件更新仅在特定设备或设备类上安装或运行 |
GB2424494A (en) * | 2005-03-22 | 2006-09-27 | Hewlett Packard Development Co | Methods, devices and data structures for trusted data |
US8060934B2 (en) * | 2007-04-13 | 2011-11-15 | Hewlett-Packard Development Company, L.P. | Dynamic trust management |
Also Published As
Publication number | Publication date |
---|---|
EP3221996A4 (en) | 2018-07-25 |
CN107077568A (zh) | 2017-08-18 |
EP3221996A1 (en) | 2017-09-27 |
WO2016081404A1 (en) | 2016-05-26 |
EP3221996B1 (en) | 2019-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9768951B2 (en) | Symmetric keying and chain of trust | |
US9509502B2 (en) | Symmetric keying and chain of trust | |
US9521125B2 (en) | Pseudonymous remote attestation utilizing a chain-of-trust | |
US9935773B2 (en) | Trusted platform module certification and attestation utilizing an anonymous key system | |
EP3458999B1 (en) | Self-contained cryptographic boot policy validation | |
US9852299B2 (en) | Protection scheme for remotely-stored data | |
US9998438B2 (en) | Verifying the security of a remote server | |
EP3207488B1 (en) | Identifying security boundaries on computing devices | |
CN107077560B (zh) | 用于建立安全工作空间的所有权的系统 | |
CN107077568B (zh) | 对称密钥和信任链 | |
CN111917696B (zh) | 使用不可旁路的网关的基于tpm的安全多方计算系统 | |
US10229272B2 (en) | Identifying security boundaries on computing devices | |
US11520859B2 (en) | Display of protected content using trusted execution environment |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200825 Termination date: 20211117 |
|
CF01 | Termination of patent right due to non-payment of annual fee |