CN107077567A - 标识计算设备上的安全边界 - Google Patents

标识计算设备上的安全边界 Download PDF

Info

Publication number
CN107077567A
CN107077567A CN201580055693.7A CN201580055693A CN107077567A CN 107077567 A CN107077567 A CN 107077567A CN 201580055693 A CN201580055693 A CN 201580055693A CN 107077567 A CN107077567 A CN 107077567A
Authority
CN
China
Prior art keywords
computing device
secure
private key
border
key pair
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201580055693.7A
Other languages
English (en)
Other versions
CN107077567B (zh
Inventor
K.金舒曼
Y.A.桑索诺夫
N.T.费尔古森
M.F.诺瓦克
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 CN107077567A publication Critical patent/CN107077567A/zh
Application granted granted Critical
Publication of CN107077567B publication Critical patent/CN107077567B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key 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/0825Key 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 asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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
    • 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/3234Cryptographic 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 additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • 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/3236Cryptographic 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

Abstract

在计算设备引导期间,生成多个安全边界。安全边界是指计算设备或计算设备的部分的操作方式,其中在一个安全边界中执行的程序被禁止访问另一个安全边界内的数据和程序。作为引导计算设备的部分,由计算设备的引导测量系统维持作为引导计算设备的部分而加载和执行的各种模块(例如,散列值或其他标识)的测量。附加地,作为引导计算设备的部分,生成或以其他方式获取安全边界之一的公共/私有密钥对。公共/私有密钥对的私有密钥被提供给所述一个安全边界,公共/私有密钥对的公共密钥被提供给引导测量系统。

Description

标识计算设备上的安全边界
背景技术
计算设备在我们生活的许多领域已经变得常见。考虑到可用于我们的计算设备的数量,通常期望使两个计算设备彼此通信。然而,可能会出现这样的情形,其中计算设备的某些部分被信任以经由与另一设备的通信来接收数据,但是计算设备的其他部分不被信任以接收这样的数据。允许这样的通信,但是对不被信任以接收数据的计算设备的部分隐瞒数据可能是困难的,从而导致用户对其设备不满意。
发明内容
提供本发明内容以便以简化的形式介绍概念的选择,这些概念在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在被用于限制所要求保护主题的范围。
根据一个或多个方面,在具有多个安全边界的计算设备的引导期间,获取用于多个安全边界的第一安全边界的公共/私有密钥对。第一安全边界的数据对于多个安全边界的第二安全边界中的程序是不可访问的。将公共/私有密钥对的私有密钥提供给第一安全边界的操作系统模块,并且将公共/私有密钥对的公共密钥提供给包括安全密码处理器(crypto-processor)的计算设备的引导测量(measurement)系统。
根据一个或多个方面,在计算设备的引导期间并且由计算设备的多个安全边界的第一安全边界的操作系统模块,获取第一安全边界的公共/私有密钥对的私有密钥。第一安全边界的数据不可由多个安全边界的第二安全边界中的程序访问,并且与第一安全边界相关联的私有密钥不与计算设备的其他安全边界相关联。私有密钥被用于在第一安全边界和远程设备之间建立安全的通信信道。
附图说明
参考附图来描述具体实施方式。在附图中,附图标记的(多个)最左边的数字标识该附图标记首次出现在其中的附图。在说明书和附图中在不同实例中使用相同的附图标记可以指示相似或相同的项目。在附图中表示的实体可以指示一个或多个实体,并且因此在讨论中能够可互换地提及单数或复数形式的实体。
图1图示了根据一个或多个实施例实现在计算设备上标识安全边界的示例系统。
图2更详细地图示了根据一个或多个实施例的计算设备。
图3是图示了根据一个或多个实施例的用于引导计算设备的示例过程的流程图。
图4是图示了根据一个或多个实施例的用于安全边界的操作的示例过程的流程图。
图5图示了示例性系统,其包括代表可以实现本文描述的各种技术的一个或多个系统和/或设备的示例性计算设备。
具体实施方式
本文讨论了标识计算设备上的安全边界。在计算设备引导期间,生成多个安全边界。安全边界是指计算设备或计算设备的部分的操作方式,其中在一个安全边界中执行的程序被禁止访问另一个安全边界内的数据或程序。作为引导计算设备的过程的部分,由计算设备的引导测量系统维持作为引导计算设备的部分而加载和执行的各种模块的测量(例如,其散列值或其他标识)。附加地,作为引导计算设备的过程的部分,对于安全边界中的一个或多个安全边界中的每一个,生成或以其他方式获取安全边界的公共/私有密钥对。公共/私有密钥对的私有密钥被提供给安全边界,并且公共/私有密钥对的公共密钥被提供给引导测量系统。
安全边界的公共/私有密钥对的私有密钥可以由操作系统模块或安全边界的其他程序使用,以建立与远程设备的安全通信信道。附加地,由引导测量系统维持的测量以及远程设备对于从安全边界预期什么测量以及预期何时生成或以其他方式获取公共/私有密钥对密钥所具有的知识可被远程设备用于确定是否信任该安全边界(并与之建立安全通信通道)。如果基于远程设备关于从安全边界预期什么测量以及预期何时生成或以其他方式获取公共/私有密钥对密钥的知识,由引导测量系统维持的测量不能被远程设备验证,,那么远程设备不建立与该安全边界的安全通信信道。
本文参考密钥密文(key cryptograph)的方面,包括对称密钥密文,公共密钥密文,对称密钥和公共/私有密钥对。尽管这种密钥密文是本领域技术人员所熟知的,但是本文包括这种密文的简要概述来帮助读者。在公共密钥密文中,实体(诸如用户,硬件或软件组件,设备,域等)其已经与公共/私有密钥对相关联。公共密钥可以公开地提供,但实体保密私有密钥。在没有私有密钥的情况下,解密使用公共密钥加密的数据在计算上非常困难。因此,数据可以由任何实体用公共密钥加密,并且只能由实体用对应的私有密钥解密。附加地,可以通过使用数据和私有密钥来生成用于数据的数字签名。没有私有密钥的情况下,创建可以使用公共密钥验证的签名在计算上非常困难。具有公共密钥的任何实体可以使用公共密钥通过对公共密钥、签名和所签名的数据执行合适的数字签名验证算法来验证数字签名。
另一方面,在对称密钥密文中,共享密钥(也称之为对称密钥)对于两个实体是已知并由其保密。具有共享密钥的任何实体通常能够解密用该共享密钥加密的数据。没有共享密钥的情况下,解密使用共享密钥加密的数据在计算上非常困难。因此,如果两个实体两者都知道共享密钥,则每个实体都可以对数据进行加密,另一个实体可以对它进行解密,但是如果其他实体不知道共享密钥,则其他实体不能解密数据。类似地,具有共享密钥的实体可以加密数据,它可由该相同实体解密,但是如果其他实体不知道共享密钥,则其他实体不能解密该数据。附加地,数字签名可以基于对称密钥密文(例如,使用密钥散列消息认证码机制)来生成。具有共享密钥的任何实体可以生成和验证数字签名。例如,可信的第三方可以基于特定实体的身份(identity)生成对称密钥,然后可以生成并且验证用于该特定实体的数字签名(例如,通过使用对称密钥来加密或解密数据)。
图1图示了根据一个或多个实施例实现在计算设备上标识安全边界的示例系统100。系统100包括可以与远程设备104通信的计算设备102。由于远程设备104与计算设备102分离(例如,物理上分离的设备),远程设备104被称为是远程的。远程设备104可以位于与计算设备102的任何距离处(例如,在同一个房间中,在不同的国家等)。
计算设备102可以是各种不同类型的设备中的任何一种,该不同类型的设备诸如是台式计算机、服务器计算机、膝上型计算机或上网本计算机、移动设备(例如,平板或者板式设备、蜂窝或其他无线电话(例如智能电话)、笔记本计算机、移动站)、可穿戴设备(例如,眼镜、手表)、娱乐设备(例如,娱乐装置、可通信地耦合到显示设备的机顶盒、游戏控制台)、电视或其他显示设备、汽车计算机等。因此,计算设备102的范围可以是从具有大量存储器和处理器资源的全资源设备(例如,个人计算机、游戏控制台)到具有有限的存储器和/或处理资源的低资源设备(例如,传统机顶盒、手持式游戏控制台)。
类似于计算设备102,远程设备104也可以是各种不同类型的设备中的任何一种。远程设备104和计算设备102可以是相同类型的设备,或可替换地是不同类型的设备。
计算设备102和远程设备104可以经由各种不同连接中的任何一种来彼此通信。计算设备102和远程设备104可以经由有线或无线连接彼此耦合,该连接例如是USB(通用串行总线)连接、无线USB连接、红外连接、蓝牙连接、显示端口(DisplayPort)连接、PCI(外设组件互连)Express连接等。可替换地或附加地,计算设备102和远程设备104可以经由诸如因特网、局域网(LAN)、公共电话网络、内部网、其他公共和/或专用网络以及上述网络的组合等等之类的数据网络地彼此连接。
计算设备102包括引导系统106和引导测量系统108。当计算设备102通电或以其他方式重置时,计算设备102引导。计算设备102的引导是指开始计算设备102的操作,通常加载和执行计算设备102的操作系统。计算设备102的引导包括加载和运行各种不同的模块,在一个或多个实施例中这些模块是各种软件模块或固件模块。这些模块被图示为引导系统106。例如这些模块可以包括以下更详细讨论的基本输入/输出系统(BIOS)、引导管理器和操作系统(OS)加载器。模块的加载是指将模块复制到易失性(或可替换地,非易失性)存储器中,并且可选地对其他模块或数据仓库执行附加配置。执行模块是指由计算设备102的处理器或控制器运行(执行)模块的指令。在引导计算设备102之后,可以由操作系统在计算设备102上运行各种其他程序。
引导系统106包括被测量的多个模块并且由引导测量系统108维持测量的指示。模块的测量是指模块的标识符,如果模块改变(例如,如果模块中的指令改变),则标识符改变。在一个或多个实施例中,模块的测量是通过将散列函数(例如,密文散列函数)应用于模块而生成的散列值。引导测量系统108将不同模块的测量组合(例如,一起散列化)并提供组合测量的指示。该组合测量反映包括在引导系统106中的模块的测量,并且因此也反映引导系统106中的模块。
由引导测量系统108生成的组合测量可用于验证特定引导系统106与用于引导计算设备102的之前的引导系统106相同(并且因此没有恶意软件被引入到引导系统106)。例如,由引导测量系统108生成的组合测量可以被使得可用于远程设备104。如果计算设备102随后被重新引导,则在重新引导期间由引导测量系统108生成的组合测量也可以被使得可用于远程设备104 -如果两个组合测量相同,则远程设备104可以确保每次都是使用相同的引导系统106来引导计算设备102。
引导系统106加载并执行计算设备102上的操作系统的一个或多个模块。操作系统支持一个或多个不同的安全边界,其中各种程序在不同的安全边界中运行。在不同安全边界中运行的程序包括操作系统的模块,因此操作系统可以在单个安全边界中或跨多个安全边界实现。应该注意,程序的多个不同实例(包括在不同安全边界中同时运行的程序的不同实例)可以同时运行。
计算设备102包括两个安全边界:安全边界110和安全边界112。尽管在图1中图示了两个安全边界,但是应当注意,计算设备102可以包括任何数量的安全边界。多个(x个)程序114(1),…114(x)可以在安全边界110中运行,并且多个(y个)程序116(1),…116(y)可以在安全边界112中运行。每个程序114和116可以是应用、计算设备102的操作系统的模块等等。
也称为安全隔离边界或隔离边界的安全边界是计算设备102(例如,计算设备102的操作系统的)或计算设备102的部分(例如,计算设备102的操作系统的)的操作方式。计算设备102的操作系统或计算设备102的其他组件(例如,虚拟机管理器、管理程序)建立并实施安全边界,从而禁止在一个安全边界中执行的程序访问另一个安全边界中的数据和程序。计算设备102(例如,计算设备102的操作系统)可以以各种不同的方式中的任何一种来实施安全边界。
在一个或多个实施例中,在一个安全边界中运行的程序被禁止访问计算设备102的任何其他安全边界内的数据和程序(任何其他安全边界中的数据和程序不可由在该一个安全边界中运行的程序来访问)。例如,在安全边界110中运行的程序114被禁止访问在安全边界112中的数据和在其中运行的程序,并且禁止在安全边界112中运行的程序116访问在安全边界110中的数据和在其中运行的程序。可替换地,可能会出现有时在不同安全边界之间共享数据的情形。
例如,计算设备102上的安全边界可以被实现为一个或多个安全级别的层次结构,并且在较低安全级别安全边界中运行的程序被禁止访问在更高安全级别安全边界中的数据和在其中运行的程序。然而,在更高安全级别安全边界中运行的程序被允许访问在较低安全级别安全边界中的数据和在其中运行的程序。例如,安全边界112可以是较低级安全边界(例如,“正常模式”安全边界),并且安全边界110可以是较高级别的安全边界(例如,“安全模式”安全边界)。在该示例中,在安全边界112中运行的程序116被禁止访问在安全边界110中的数据和在其中运行的程序。然而,允许在安全边界110中运行的程序114访问在安全边界112中的数据和在其中运行的程序。
应当注意,安全边界110和112与用于计算设备102的相同的用户帐户或相同的用户登录凭证相关联。安全边界110和112在相同的用户登录会话期间同时实现。计算设备102还可以支持多个不同的用户帐户或不同的用户登录凭证,尽管这些不同的用户帐户或登录凭证是附加于不同的安全边界的。例如,针对这些不同的用户帐户或不同的用户登录凭据中的每一个,可以使用多个安全边界。
公共密钥密文被用于支持远程设备104与计算设备102的安全边界之间的安全通信。如在图1的示例中所图示的,在安全边界110和远程设备104之间建立安全通信信道120。通信信道120是安全的是指通信信道120在远程设备104和安全边界110之间,其中在通信信道120的部分上确保通信信道120确实到达预期的安全边界110,而不被欺骗或被窃听。
作为建立安全边界110的部分,引导系统106生成或以其他方式获取安全边界110的公共/私有密钥对。安全边界110公共/私有密钥对的私有密钥被提供给安全边界110的程序114(并且在由引导系统106提供给程序114之后,其仅可由安全边界110中的程序访问)。安全边界110公共/私有密钥对的公共密钥可以存储在别处(例如,在引导测量系统108中)。安全边界110公共/私有密钥对的私有密钥可以由远程设备用于建立安全通信信道120。给定由引导测量系统108生成的组合测量和安全边界110公共/私有密钥对的私有密钥,可以建立安全通信信道120,并且可以向远程设备104保证将要传送到计算设备102的数据被传送到安全边界110,并且这样的数据由安全边界110保护。
系统100可以用于各种不同设置或环境中的任何一种。例如,计算设备102和远程设备104可以是数据中心(例如,服务器场)中的两个不同设备。作为另一示例,远程设备104可以提供由计算设备102的安全边界经由因特网而访问的服务。作为又另一示例,远程设备104可以是位于与计算设备102相同的LAN(例如,在同一个办公室或家庭中)的服务器或数据存储设备。
图2更详细地图示了根据一个或多个实施例的计算设备102。如上文所讨论的,计算设备102包括引导系统106、引导测量系统108、安全边界110以及安全边界112。引导系统106包括BIOS 202、引导管理器204以及OS加载器206,其中每个都包括一个或多个模块。
引导测量系统108包括作为可信平台模块(TPM)210的安全密码处理器。TPM 210可以是物理设备或虚拟设备。TPM 210包括诸如密钥生成,加密,解密,安全存储(例如,平台配置寄存器)等之类的各种功能。在一个或多个实施例中,TPM 210符合作为ISO / IEC 11889信息技术 - 可信平台模块规范(2009)第1至第4部分公布的可信计算组可信平台模块规范1.2版本。尽管本文中参考TPM 210进行讨论,但是可替换地引导测量系统108能够使用提供与TPM类似的功能的一个或多个其他密码处理器。
在操作期间,当引导计算设备102时,加载并执行多个模块。加载的第一个模块生成(或获取)自身的测量,并将测量提供给引导测量系统108。测量被加载到TPM 210中,并且还被记录在事件日志212中,该事件日志212是文件(例如,文本文件)或其他测量记录。应当注意,事件日志212可以是具有进入TPM的所有测量的副本的未受保护的日志(例如,未加密且可由计算设备102的任何模块访问)。
在引导计算设备102时加载的第一模块还生成将被加载在计算设备102上的下一个模块的测量,将测量提供给引导测量系统108(其将测量加载到TPM 210中并在事件日志212中记录测量),并将控制转移到下一个模块。可以对引导系统106中的任何数量的模块重复该过程,其中每个模块生成要加载到计算设备102上的下一个模块的测量,将测量提供给引导测量系统108(其将测量加载到TPM 210中并在事件日志212中记录测量),并将控制转移到下一个模块。
TPM 210组合其接收的测量以生成组合测量。测量可以以各种不同的方式组合,例如通过级联和散列化(hashing)测量。例如,TPM 210接收到的初始测量A可以由TPM 210维持。当接收到下一个测量B时,可以通过级联初始测量A和下一个测量B并通过将单向函数(例如,密文散列函数)应用于级联值以生成组合测量而生成散列值来生成组合测量。当接收到下一个测量C时,可以通过级联之前的组合测量和下一个测量C并通过将单向函数(例如,密文散列函数)应用于级联值以生成新的组合测量从而生成散列值来生成新的组合测量。可替换地,TPM 210可以以各种其他方式中的任何一种来组合测量。
在引导系统106的所有模块被加载到计算设备102上之后,TPM 210中的组合测量是加载的模块和这些模块的加载顺序的指示。TPM 210中的组合测量还可以包括影响被加载的模块的执行的配置(例如,引导配置数据(BCD)设置)的指示。如果加载的模块(及其配置)和这些模块的加载顺序对于不同的引导是相同的,则用于不同引导的组合测量将是相同的。每次重新引导计算设备102时,预期TPM 210中的组合测量具有相同的值。如果引导之间的值改变,则可以假设对引导系统106做出了一些改变(例如,模块未被加载,模块被改变,附加的模块被加载,模块以不同的顺序加载,相同但具有不同配置的模块被加载等)。
附加地,对于安全边界110和112中的至少一个,引导系统106的一个或多个模块生成公共/私有密钥对(或可替换地,如下文更详细地讨论的,获取之前生成的公共/私有密钥对)。在一个或多个实施例中,在引导系统106的模块正在设立(建立)安全边界时,生成用于安全边界的公共/私有密钥对。用于安全边界的公共/私有密钥对的私有密钥被提供给安全边界的程序(例如,提供给安全边界的操作系统模块),以及用于安全边界的公共/私有密钥对的公共密钥被存储在别处(例如,在引导测量系统108中)。在事件日志212中还维持公共/私有密钥对的生成记录(可以可选地在事件日志212中维持公共/私有密钥对的公共密钥)。例如,针对安全边界110生成公共/私有密钥对,并且将公共/私有密钥对的私有密钥214提供给安全边界110的一个或多个程序114,并且将公共/私有密钥对的公共密钥216提供给引导测量系统108。
公共密钥216也被提供给TPM 210,该TPM 210可以以各种不同的方式中的任何一种将公共密钥216与针对引导系统106的模块所接收的测量组合。例如,公共密钥216可以被TPM 210处理,就好像公共密钥216是引导系统106的模块的测量那样,并且可以通过将单向函数应用于公共密钥216和之前的组合测量的级联而生成散列值。
在私有密钥214可用于安全边界110中的一个或多个程序114之后,远程设备(例如,远程设备104)可以与安全边界110中的程序114建立安全通信信道,并且确保程序114实际上是安全边界110中的程序。在计算设备102的引导期间要生成安全边界110的时刻(point)和在计算设备102的引导期间要生成公共/私有密钥对的时刻对于远程设备而言是已知的。这些时刻可以作为各种动作或事件的结果而已知,诸如与计算设备102之前的通信,由引导系统106的分配器使得可用的知识等等。
远程设备可以向计算设备102(例如,安全边界110中的程序114)请求并且响应于请求而接收事件日志212的副本。远程设备可以检查事件日志212和验证安全边界110是在计算设备102的引导期间远程设备预期安全边界110被生成的时刻生成的,并验证公共/私有密钥对是在计算设备102的引导期间远程设备预期公共/私有密钥对被生成的时刻生成的。远程设备还可以以与TPM 210生成组合测量相同的方式,基于事件日志212生成组合测量,并验证在生成安全边界110的时刻维持在TPM 210中的引导系统106的模块(和配置)的组合测量与远程设备生成的组合测量相同。由TPM 210生成的组合测量具有特定值的一些证据也可以被提供给远程设备,例如通过TPM 210使用TPM 210的公共/私有密钥对的私有密钥对由TPM 210生成的组合测量进行数字签名。
然后,远程设备可以使用安全边界110的公共/私有密钥对的公共密钥来尝试与安全边界110(例如,与安全边界110的程序114)建立安全通信信道,并且如果成功,则远程设备知道安全边界110拥有安全边界110的公共/私有密钥对的私有密钥。通过上文所讨论的验证(安全边界110是在计算设备102的引导期间远程设备预期安全边界110被生成的时刻生成的,公共/私有密钥对是在计算设备102的引导期间远程设备预期公共/私有密钥对被生成的时刻生成的),远程设备还知道安全边界110在计算设备102的引导期间的所预期时间被生成,并且没有对引导系统106做出任何改变(否则,组合的测量将不被验证)。根据对于在引导系统和安全边界110中执行的代码的信任的性质(如上文所讨论验证的),还向远程设备保证安全边界110的公共/私有密钥对的私有密钥仅可用于安全边界110内的程序。
可以使用各种公共或专有技术中的任一种,基于安全边界110的公共/私有密钥对和远程设备的公共/私有密钥对来建立安全通信信道。例如,可以使用传输层安全(TLS)协议,安全套接字层(SSL)协议等来建立安全通信信道。
下文图示了计算设备102的引导的更具体的示例。在上电或复位事件时,控制被传递到BIOS 202,其执行硬件初始化并且最终继续启动引导管理器204。然而,在引导管理器204开始执行之前,引导管理器的代码由BIOS 202测量并存储在TPM 210和事件日志212中。然后引导管理器204执行,决定要开始特定的什么操作系统(在其中存在可以开始的多个操作系统的情形中),并且加载OS加载器206并将控制转移到OS加载器206。然而,在将控制传递给OS加载器206之前,OS加载器206的代码由引导管理器204测量,该引导管理器向TPM210(其生成组合测量)和事件日志212提供测量。OS加载器206创建操作系统支持的适当的信任边界,并利用稍后要执行的操作系统模块的初始集合(程序114和116中的那些)来预先填充那些边界。这些操作系统模块中的每一个由OS加载器206测量,该OS加载器206将测量提供给TPM 210(其生成组合测量)和事件日志212。OS加载器206还生成用于安全边界110的新的公共/私有密钥对。可以使用各种不同算法中的任一种来生成公共/私有密钥对,该算法诸如是RSA(Rivest,Shamir,Adleman)或ECC(椭圆曲线密文)算法。OS加载器206将公共/私有密钥对的公共密钥提供给TPM 210(其将公共密钥与其他接收的测量组合)和事件日志212,并且将公共/私有密钥对的私有密钥提供给安全边界110(例如,由OS加载器206填充的操作系统模块之一)。然后,OS加载器206将控制传递到安全边界110或112之一中的OS模块。
在上面的讨论中,参考在计算设备102的引导期间生成的安全边界的公共/私有密钥对。可替换地,公共/私有密钥对可以以如下这样的方式来保存:即,在随后引导期间允许检索公共/私有密钥对,而不必重新生成公共/私有密钥对,但是必要条件是在随后引导期间公共/私有密钥对的至少私有密钥被解密时刻的引导系统106的状态与公共/私有密钥对的至少公共密钥被加密时刻的引导系统106的状态相同(例如,正在检索公共/私有密钥对时刻的组合测量与之前保存公共/私有密钥对的时刻的组合测量相同)。应该注意,公共/私有密钥对的至少私有密钥被加密和解密-公共/私有密钥对的公共密钥可以,但不必被加密和解密。在一个或多个实施例中,引导系统106的这个状态是安全敏感状态(反映引导系统106的安全性的状态,例如引导系统106的哪些模块被加载和/或引导系统106的模块被加载的顺序),并且不需要包括引导系统106的所有状态。执行公共/私有密钥对的至少私有密钥的加密和至少保存加密的私有密钥的组件或模块可以确定哪个状态是安全敏感状态。
在一个或多个实施例中,通过由OS加载器206将公共/私有密钥对密封(sealing)到表示计算设备102的安全状态的一组TPM平台配置寄存器,公共/私有密钥对被保存起来。密封公共/私有密钥对是指对公共/私有密钥对的至少私有密钥进行加密,以使得如果TPM平台配置寄存器在解密时具有与其在加密时所具有的值相同,则由TPM仅仅解密(解封(unseal))公共/私有密钥对的至少私有密钥。公共/私有密钥对的这种密封可以以各种不同的方式执行,例如根据可信计算组可信平台模块规范1.2版本。TPM可以确定引导系统106的哪个状态是安全敏感状态(例如,哪个TPM平台配置寄存器来密封公共/私有密钥对)。公共/私有密钥对的加密的至少私有密钥(可选地和公共密钥)可以存储在可用于OS加载器206的任何存储介质上并随后从其中检索。如果计算设备102的安全状态改变(如由变化的PCR值所指示的),公共/私有密钥对的解封将失败,并且OS加载器206将生成新的公共/私有密钥对。附加地,如果公共/私有密钥对的解封失败,则OS加载器206可选地建议远程设备(例如,图1的远程设备104)在再次信任OS加载器206之前再评估其对计算设备102的安全状态的评价(assessment)以适当地设立安全边界。
还应当注意,尽管图2中图示了两个安全边界110和112,但是计算设备102可以包括任何数量(三个或更多个)的安全边界。还应该注意,虽然图2中图示了用于单个安全边界(安全边界110)的公共/私有密钥对,但是每个安全边界可以具有其自己的公共/私有密钥对(其中安全边界的公共/私有密钥对的私有密钥由该安全边界维持,并且安全边界的公共/私有密钥对的公共密钥由引导测量系统108维持)。
图3是图示了根据一个或多个实施例的用于引导计算设备的示例过程300的流程图。过程300由计算设备(诸如,图1或图2的计算设备102)执行,并且可以以软件,固件,硬件或其组合来实现。过程300被示出为一组动作,并且不限于所示出的执行各种动作的操作的顺序。过程300是用于引导计算设备的示例过程;本文参考不同的附图包括了对引导计算设备的附加讨论。
在过程300中,计算设备的引导开始(动作302)。计算设备的引导是指计算设备的开始操作,如上文所讨论的通常是加载和执行计算设备的操作系统。
在计算设备的引导期间,在引导计算设备期间加载和执行的引导系统的模块的测量被提供给引导测量系统(动作304)。引导系统可以包括用于引导计算设备的各种模块,该模块诸如是上文所讨论的BIOS、引导管理器和OS加载器。提供给引导测量系统的测量被包括在引导测量系统的事件日志中,并被反映在引导测量系统的安全密码处理器(例如,TPM)中。
附加地,在引导计算设备期间,获取用于计算设备的安全边界的公共/私有密钥对(动作306)。如上文所讨论的,可以通过被生成或者通过解密之前生成的公共/私有密钥对的至少私有密钥来获取该公共/私有密钥对。
公共/私有密钥对的私有密钥被提供给安全边界的操作系统模块(动作308)。公共/私有密钥对的公共密钥被提供给计算设备的引导测量系统(动作310)。
图4是图示了根据一个或多个实施例的用于安全边界的操作的示例过程400的流程图。过程400由计算设备(诸如图1或图2中的计算设备102)执行,并且可以以软件,固件,硬件或其组合来实现。过程400被示出为一组动作,并且不限于所示出的执行各种动作的操作的顺序。过程400是用于安全边界的操作的示例过程;本文参考不同的附图包括了安全边界的操作的附加讨论。
在过程400中,计算设备的引导开始(动作402)。计算设备的引导是指计算设备的开始操作,如上文所讨论的通常是加载和执行计算设备的操作系统。该引导包括创建安全边界并将一个或多个操作系统模块加载到安全边界的至少一个中。
在引导计算设备期间,由安全边界的程序获取用于安全边界的公共/私有密钥对的私有密钥(动作404)。安全边界的程序是在安全边界中运行的程序(诸如操作系统)。如上文所讨论的,由程序在动作404中获取的私有密钥是由引导系统的模块(例如,OS加载器)生成或以其他方式获取的私有密钥。
私有密钥被用于建立与远程设备的安全通信信道(动作406)。针对各种不同协议的任何一种可以以各种公共或专有方式中的任何方式来使用私有密钥,以建立和维持远程设备和安全边界之间的安全通信信道。
如上文所讨论的,安全边界是计算设备或计算设备的部分的操作方式,并且在一个安全边界中执行的程序被禁止访问另一个安全边界中的数据或程序。安全边界可以以各种不同的方式中的任何方式来实现。例如,安全边界可以使用不同的处理器的操作模式或环(ring)来实现,并且不同的安全边界对应于处理器的不同操作模式或环。
可替换地,可以使用一个或多个虚拟机来实现安全边界。虚拟机管理器或管理程序可以建立虚拟机,并且虚拟机的虚拟处理器可以具有不同的虚拟信任级别(每个虚拟信任级别是不同的安全边界)。虚拟机是指可以与物理计算设备类似地运行程序的物理计算设备(或其他机器或系统)的软件实现。虚拟机包括与物理计算设备的组件(但是其是软件实现)类似的一个或多个虚拟组件。操作系统以及其他应用可以使用虚拟组件执行,因为它们将使用物理计算设备的组件,包括在虚拟处理器或虚拟处理器核心上运行,访问虚拟存储器等。在虚拟机中执行的操作系统和其他应用不需要知道,并且通常也不知道它们在虚拟机中执行。
虚拟机管理器可以实现使得多个不同的虚拟信任级别可用于虚拟机的虚拟处理器的虚拟安全模式。虚拟信任级别是用于虚拟处理器的执行环境,并且每个虚拟处理器可以独立于任何其他虚拟处理器进入或退出虚拟信任级别。
每个虚拟信任级别与其关联有一存储器访问保护集。不同的虚拟信任级别可以具有不同的访问保护集,并且可以使用虚拟信任级别的访问保护集来限制当虚拟处理器在该虚拟信任级别中运行时可以访问什么存储器和/或可以如何访问该存储器。
每个虚拟信任级别还具有与其关联的虚拟处理器状态。虚拟处理器状态是指虚拟处理器的各种不同的寄存器设置,配置值等。针对不同的虚拟信任级别维持单独的虚拟处理器状态,从而防止一个虚拟信任级别访问另一个虚拟信任级别的处理器状态。尽管对于不同的虚拟信任级别分别维持一些虚拟处理器状态(也称为专用处理器状态),但是如下文更详细地讨论的,可以跨多个虚拟信任级别共享其他处理器状态(也称为共享处理器状态)。
每个虚拟信任级别还具有与其关联的中断子系统。中断子系统指的是用于管理虚拟处理器的中断的各种不同的模块、程序、设置等。针对不同的虚拟信任级别维持单独的中断子系统,从而允许在一个虚拟信任级别安全地管理中断,而同时防止在另一个(例如,如下面更详细讨论的,更低的)虚拟信任级别运行的程序生成意外的中断或屏蔽中断。
虚拟信任级别被组织为层次结构,其中更高级别虚拟信任级别比较低虚拟信任级别权限更高,并且较低虚拟信任级别比较高虚拟信任级别权限更低。在比另一个虚拟信任级别权限更高的虚拟信任级别上操作的虚拟处理器上运行的程序,可以通过在该另一个虚拟信任级别上操作的程序或设备来限制对存储器位置的访问。在虚拟处理器上运行的程序还可以可选地改变针对虚拟处理器正在以其运行的虚拟信任级别的存储器访问保护。然而,在比另一个虚拟信任级别权限更低的虚拟信任级别上操作的虚拟处理器上运行的程序不能通过在该另一个虚拟信任级别上操作的程序或设备,来限制对存储器位置的访问。
在计算设备中的安全边界可以是本质上分层的(也称为嵌套的),本质上是并行的(也称为不嵌套的)或其组合。在本文提及安全边界的各种讨论中,所提及的安全边界可以是分层的,并行的或其组合。
在本文中所讨论的技术支持各种不同的使用场景。例如,可以给予远程设备如下保证:远程设备提供给安全边界中的程序的任何数据都将受该安全边界的控制,并且只有在存储设备内的程序确定其被许可使该数据可用于安全边界之外的情况下,该数据才被使得可用于安全边界之外。因此,计算设备102的可靠性和安全性都被有利地增强,因为能够向远程设备保证它正在与运行在计算设备的特定安全边界内的程序(而不是运行在通信计算设备上的其他程序(例如恶意代码))通信。
虽然本文参考特定模块讨论了特定功能,但是应当注意,本文讨论的各个模块的功能可以分离到多个模块中,和/或多个模块的至少一些功能可以组合到单个模块中。附加地,本文所讨论的执行动作的特定模块包括执行动作的该特定模块本身,或者可替换地包括调用或以其他方式访问执行该动作(或与该特定模块一起执行动作)的另一个组件或模块的该特定模块。因此,执行动作的特定模块包括执行动作的特定模块本身和/或由执行动作的该特定模块调用或以其他方式访问的另一个模块。
图5一般性地在500处图示了示例系统,该示例系统包括代表可以实现本文描述的各种技术的一个或多个系统和/或设备的示例计算设备502。计算设备502例如可以是服务提供商的服务器、与客户端相关联的设备(例如,客户端设备)、片上系统和/或任何其它适当的计算设备或计算系统。
如图所示的示例计算设备502包括处理系统504、一个或多个计算机可读介质506和一个或多个I/O接口508,其相互可通信地耦合。尽管没有示出,但是计算设备502可以进一步包括系统总线或其它数据和命令传递系统,其将各种组件彼此耦合。系统总线可以包括不同总线结构中的任何一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用多种总线架构中的任何一种的处理器或局部总线。还设想到各种其它示例,诸如控制和数据线。
处理系统504代表使用硬件执行一个或多个操作的功能。相应地,处理系统504被图示为包括硬件元件510,其可以被配置为处理器、功能块等。这可以包括作为专用集成电路或使用一个或多个半导体所形成的其它逻辑器件的硬件中的实现。硬件元件510不受形成它们的材料或者其中所采用的处理机制的限制。例如,处理器可以包括(多个)半导体和/或晶体管(例如,电子集成电路(IC))。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质506被图示为包括存储器/存储装置512。存储器/存储装置512表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储装置512可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪速存储器、光盘、磁盘等)。存储器/存储装置512可以包括固定介质(例如,RAM、ROM、固定硬盘驱动等)以及可移除介质(例如,闪速存储器、可移除硬盘驱动、光盘等)。如下文进一步描述的,计算机可读介质506可以以各种其它方式进行配置。
一个或多个输入/输出接口508代表使用各种输入/输出设备允许用户向计算设备502输入命令和信息并且还允许向用户和/或其它组件或设备呈现信息的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如用于语音输入的)、扫描仪、触摸功能(例如,被配置为检测物理触摸的电容或其它传感器)、相机(例如,其可以采用可见或不可见波长(诸如红外频率),以将不涉及触摸的移动检测为手势)等。输出设备的示例包括显示设备(例如,监控器或投影仪)、扬声器、打印机、网络卡、触觉响应设备等。如下文进一步描述的,因而计算设备502可以以各种方式进行配置,以支持用户交互。
计算设备502还包括引导系统514和引导测量系统516。引导系统514和引导测量系统516提供本文讨论的各种功能,如上所述,包括生成和维持引导系统514的模块的测量,生成或以其他方式获取用于安全边界的公共/私有密钥对等等。例如,引导系统514和引导测量系统516可以分别实现图1和图2的引导系统106和引导测量系统108。
本文可以在软件、硬件元件或程序模块的一般上下文中描述各种技术。一般地,这样的模块包括执行特定任务或者实现特定抽象数据类型的例程、程序、对象、元件、组件、数据结构等。如本文中使用的术语“模块”、“功能”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的特征是独立于平台的,这意味着技术可以在具有各种处理器的各种计算平台上实现。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传送。计算机可读介质可以包括可以由计算设备502访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
与单纯信号传送、载波或信号本身相比,“计算机可读存储介质”是指使得能够实现信息的持续存储和/或实现有形存储的介质和/或设备。因而,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括硬件,诸如易失性和非易失性、可移除和不可移除介质和/或存储设备,其以适用于存储诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其它数据之类的信息的方法或技术实现。计算机可读存储介质的示例可以包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多用盘(DVD)或其它光学存储装置、硬盘、盒式磁带、磁带、磁盘存储装置或其它磁性存储设备、或其它存储设备、有形介质或者适用于存储期望的信息并且可以被计算机访问的制品。
“计算机可读信号介质”是指信号承载介质,其被配置为诸如经由网络向计算设备502的硬件传送指令。信号介质典型地可以包含计算机可读指令、数据结构、程序模块或者调制数据信号中的其它数据,诸如载波、数据信号或其它输运机制。信号介质还包括任何信息递送介质。术语“调制数据信号”意指其一个或多个特性被以便于将信息编码于信号中的这种方式进行设定或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声学、RF、红外和其它无线介质之类的无线介质。
如之前所述,硬件元件510和计算机可读介质506代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其可以在一些实施例中被用于实现本文描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统的组件、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、以及硅或其它硬件设备中的其它实现。在该上下文中,硬件元件可以操作为执行由指令、模块和/或由硬件元件体现的逻辑限定的程序任务的处理设备以及用于存储指令以供执行的硬件设备,例如之前描述的计算机可读存储介质。
还可以采用前述内容的组合以实现本文描述的各种技术和模块。相应地,软件、硬件或程序模块以及其它程序模块可以实现为一个或多个指令和/或逻辑,其被包含在某种形式的计算机可读存储介质上和/或被一个或多个硬件元件510包含。计算设备502可以配置为实现对应于软件和/或硬件模块的特定指令和/或功能。相应地,如可由计算设备502执行的模块这样的模块作为软件的实现可以至少部分地实现在硬件中,例如通过使用处理系统的硬件元件510和/或计算机可读存储介质。指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备502和/或处理系统504)可执行/可操作以实现本文描述的技术、模块和示例。
如图5中进一步图示的,示例系统500使得能够实现普遍存在的环境以用于在个人计算机(PC)、电视设备和/或移动设备上运行应用时的无缝用户体验。服务和应用在所有三个环境中基本上类似地运行以用于在利用应用、播放视频游戏、观看视频等的同时从一个设备过渡到下一个时的共同用户体验。
在示例系统500中,多个设备通过中央计算设备互连。中央计算设备可以在多个设备本地或者可以位于与多个设备相距遥远的地方。在一个或多个实施例中,中央计算设备可以是通过网络、互联网或其它数据通信链路连接到多个设备的一个或多个服务器计算机的云。
在一个或多个实施例中,这种互连架构使得能够跨多个设备而递送功能从而向多个设备的用户提供共同且无缝的体验。多个设备中的每一个可以具有不同物理要求和能力,并且中央计算设备使用平台以使得能够向设备递送既针对设备定制又对于所有设备共同的体验。在一个或多个实施例中,创建目标设备分类,并且针对一般设备分类对体验进行定制。设备分类可以通过设备的物理特征、使用类型或者其它共同特性来定义。
在各种实现中,计算设备502可以采取各种不同配置,诸如以用于计算机518、移动装置520和电视522用途。这些配置中的每一个包括可以具有一般不同构造和能力的设备,并且因而计算设备502可以根据不同设备分类中的一个或多个进行配置。例如,计算设备502可以实现为设备的计算机518分类,其包括个人计算机、桌上型计算机、多屏计算机、膝上型计算机、上网本等。
计算设备502还可以实现为设备的移动装置520分类,其包括移动设备,诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏计算机等。计算设备502还可以实现为设备的电视522分类,其包括在非正式观看环境中具有或者连接到一般更大的屏幕的设备。这些设备包括电视、机顶盒、游戏控制台等。
本文描述的技术可以由计算设备502的这些各种配置所支持并且不限于本文描述的技术的具体示例。该功能还可以全部或部分通过使用分布式系统来实现,诸如如下文所述经由平台526在“云”524上实现。
云524包括和/或代表用于资源528的平台526。平台526对云524的硬件(例如,服务器)和软件资源的底层功能进行抽象。资源528可以包括应用和/或数据,其可以在远离计算设备502的服务器上执行计算机处理时被利用。资源528还可以包括通过互联网和/或通过订户网络所提供的服务,该订户网络诸如是蜂窝或Wi-Fi网络。
平台526可以对资源和功能进行抽象以将计算设备502与其它计算设备连接。平台526还可以用来对资源伸缩进行抽象以针对所遭遇的对于经由平台526所实现的资源528的需求提供对应等级的伸缩。因而,在互连设备环境中,本文描述的功能的实现可以遍及系统500分布。例如,功能可以部分地实现在计算设备502上,以及经由对云524的功能进行抽象的平台526而实现。
在本文的讨论中,描述了各种不同的实施例。应当意识到和理解的是,本文描述的每个实施例可以单独使用或与本文所述的一个或多个其他实施例一起使用。本文讨论的任何设备、方法等可以结合本文所讨论的任何其它设备、方法等来使用。本文讨论的技术的其它方面涉及以下一个或多个实施例。
一种在计算设备中实现的方法,该方法包括:在具有多个安全边界的计算设备的引导期间获取用于多个安全边界的第一安全边界的公共/私有密钥对,第一安全边界的数据不可由多个安全边界的第二安全边界内的程序访问;将公共/私有密钥对的私有密钥提供给第一安全边界的操作系统模块;以及将公共/私有密钥对的公共密钥提供给包括安全密码处理器的计算设备的引导测量系统。
可替换地或附加于上述方法,可采用如下的任何一种或其组合:获取公共/私有密钥对包括生成公共/私有密钥对;获取公共/私有密钥对包括仅仅在当公共/私有密钥对的至少私有密钥被解密的时刻计算设备的引导系统的安全敏感状态和当公共/私有密钥对的至少私有密钥之前被加密的时刻计算设备的引导系统的安全敏感状态是相同的安全敏感状态的情况下,解密之前生成的公共/私有密钥对的至少私有密钥;获取公共/私有密钥对包括在创建第一安全边界时获取公共/私有密钥对;获取公共/私有密钥对包括在创建第一安全边界之前获取公共/私有密钥对;安全密码处理器包括可信平台模块物理设备;还包括使用公共/私有密钥对的私有密钥在第一安全边界和远程设备之间建立安全通信信道;进一步包括向远程设备提供事件日志,其标识在计算设备引导期间加载和执行的模块;还包括:在计算设备的引导期间,获取多个安全边界的第三安全边界的公共/私有密钥对,第三安全边界的数据不可由第一安全边界中的程序和第二安全边界中的程序访问,将用于第三安全边界的公共/私有密钥对的私有密钥提供给第三安全边界的操作系统模块,并将用于第三安全边界的公共/私有密钥对的公共密钥提供给计算设备的安全密码处理器。
一种在计算设备中实现的方法,该方法包括:在计算设备的引导期间由计算设备的多个安全边界的第一安全边界的操作系统模块,获取第一安全边界的公共/私有密钥对的私有密钥,第一安全边界的数据不可由多个安全边界的第二安全边界中的程序访问,该私有密钥与第一安全边界相关联,但不与计算设备的其他安全边界相关联;以及使用私有密钥在第一安全边界和远程设备之间建立安全通信信道。
可替换地或附加于上述任何一种方法,可采用如下任何一种或其组合:获取私有密钥包括在创建第一安全边界时从计算设备的引导系统的模块接收私有密钥;该私有密钥是在创建第一安全边界之前由计算设备的引导系统的模块生成的;还包括向远程设备提供事件日志,其标识在计算设备引导期间加载和执行的模块。
一种计算设备,包括:包括一个或多个处理器的处理系统;以及一个或多个在其上存储有多个指令的计算机可读存储介质,响应于由处理系统执行,该指令使得处理系统执行动作,该动作包括:在引导计算设备期间,获取用于计算设备的多个安全边界的第一安全边界的公共/私有密钥对,第一安全边界的数据不可由多个安全边界的第二安全边界中的程序访问;将公共/私有密钥对的私有密钥提供给第一安全边界的程序;以及将公共/私有密钥对的公共密钥提供给包括安全密码处理器的计算设备的引导测量系统。
可替换地或者附加于上述计算设备,可采用如下任何一个或其组合:获取公共/私有密钥对包括生成公共/私有密钥对;获取公共/私有密钥对包括仅仅在当公共/私有密钥对的至少私有密钥被解密的时刻计算设备的引导系统的安全敏感状态和当公共/私有密钥对的至少私有密钥之前被加密的时刻计算设备的引导系统的安全敏感状态是相同的安全敏感状态的情况下,解密之前生成的公共/私有密钥对的至少私有密钥;获取公共/私有密钥对包括在创建第一安全边界时获取公共/私有密钥对;获取公共/私有密钥对包括在创建第一安全边界之前获取公共/私有密钥对;安全密码处理器包括可信平台模块物理设备;还包括使用公共/私有密钥对的私有密钥在第一安全边界和远程设备之间建立安全通信信道。
尽管已经以特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,在所附权利要求中限定的主题不一定限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式而被公开的。

Claims (15)

1.一种在计算设备中实现的方法,所述方法包括:
在具有多个安全边界的计算设备的引导期间,获取用于多个安全边界的第一安全边界的公共/私有密钥对,第一安全边界的数据不可由多个安全边界的第二安全边界内的程序访问;
将公共/私有密钥对的私有密钥提供给第一安全边界的操作系统模块,以使得能够在第一安全边界和远程设备之间建立安全通信信道;以及
将公共/私有密钥对的公共密钥提供给包括安全密码处理器的计算设备的引导测量系统。
2.如权利要求1所述的方法,获取公共/私有密钥对包括生成公共/私有密钥对。
3.如权利要求1所述的方法,获取公共/私有密钥对包括仅仅在当公共/私有密钥对的至少私有密钥被解密的时刻计算设备的引导系统的安全敏感状态和当公共/私有密钥对的至少私有密钥之前被加密的时刻计算设备的引导系统的安全敏感状态是相同的安全敏感状态的情况下,解密之前生成的公共/私有密钥对的至少私有密钥。
4.如权利要求1至3中任一项所述的方法,获取公共/私有密钥对包括在创建第一安全边界时获取公共/私有密钥对。
5.如权利要求1至3中任一项所述的方法,获取公共/私有密钥对包括在创建第一安全边界之前获取公共/私有密钥对。
6.如权利要求1至5中任一项所述的方法,安全密码处理器包括可信平台模块物理设备。
7.如权利要求1至6中任一项所述的方法,还包括使用公共/私有密钥对的私有密钥在第一安全边界和远程设备之间建立安全通信信道。
8.如权利要求7所述的方法,还包括向远程设备提供事件日志,其标识在计算设备引导期间加载和执行的模块。
9.如权利要求1至8中任一项所述的方法,还包括:
在计算设备的引导期间,获取用于多个安全边界的第三安全边界的公共/私有密钥对,第三安全边界的数据对于第一安全边界中的程序和第二安全边界中的程序而言是不可访问的;
将用于第三安全边界的公共/私有密钥对的私有密钥提供给第三安全边界的操作系统模块;以及
将用于第三安全边界的公共/私有密钥对的公共密钥提供给计算设备的安全密码处理器。
10.一种计算设备,包括:
包括一个或多个处理器的处理系统;以及
一个或多个其上存储有多个指令的计算机可读存储介质,响应于处理系统的执行该指令使得处理系统执行如下动作,包括:
在计算设备的引导期间,获取用于计算设备的多个安全边界的第一安全边界的公共/私有密钥对,第一安全边界的数据不可由多个安全边界的第二安全边界中的程序访问;
将公共/私有密钥对的私有密钥提供给第一安全边界的程序,以使得能够建立第一安全边界与远程设备之间的安全通信信道;以及
将公共/私有密钥对的公共密钥提供给包括安全密码处理器的计算设备的引导测量系统。
11.如权利要求10所述的计算设备,获取公共/私有密钥对包括生成公共/私有密钥对。
12.如权利要求10所述的计算设备,获取公共/私有密钥对包括在创建第一安全边界时获取公共/私有密钥对。
13.如权利要求10所述的计算设备,其中,获取公共/私有密钥对包括在创建第一安全边界之前获取公共/私有密钥对。
14.如权利要求10至13中任一项所述的计算设备,安全密码处理器包括可信平台模块物理设备。
15.如权利要求10至14中任一项所述的计算设备,还包括使用公共/私有密钥对的私有密钥来建立第一安全边界与远程设备之间的安全通信信道。
CN201580055693.7A 2014-10-13 2015-10-12 标识计算设备上的安全边界 Active CN107077567B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462063294P 2014-10-13 2014-10-13
US62/063294 2014-10-13
US14/614,132 US9584317B2 (en) 2014-10-13 2015-02-04 Identifying security boundaries on computing devices
US14/614132 2015-02-04
PCT/US2015/055050 WO2016108991A1 (en) 2014-10-13 2015-10-12 Identifying security boundaries on computing devices

Publications (2)

Publication Number Publication Date
CN107077567A true CN107077567A (zh) 2017-08-18
CN107077567B CN107077567B (zh) 2020-03-06

Family

ID=55656199

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580055693.7A Active CN107077567B (zh) 2014-10-13 2015-10-12 标识计算设备上的安全边界

Country Status (4)

Country Link
US (1) US9584317B2 (zh)
EP (1) EP3207488B1 (zh)
CN (1) CN107077567B (zh)
WO (1) WO2016108991A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109840412A (zh) * 2018-12-21 2019-06-04 成都海光集成电路设计有限公司 安全控制方法及安全处理器、计算机系统
CN111433771A (zh) * 2017-09-22 2020-07-17 西班牙毕尔巴鄂比斯开银行 内核模块的安全引导

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10229272B2 (en) 2014-10-13 2019-03-12 Microsoft Technology Licensing, Llc Identifying security boundaries on computing devices
US10025600B2 (en) * 2015-10-02 2018-07-17 Google Llc NAND-based verified boot
US10409618B2 (en) * 2016-07-13 2019-09-10 International Business Machines Corporation Implementing VM boot profiling for image download prioritization
US10726132B2 (en) 2018-03-08 2020-07-28 Hewlett Packard Enterprise Development Lp Enclave launch and authentication
US20200364354A1 (en) * 2019-05-17 2020-11-19 Microsoft Technology Licensing, Llc Mitigation of ransomware in integrated, isolated applications
US11205003B2 (en) * 2020-03-27 2021-12-21 Intel Corporation Platform security mechanism
US11645101B2 (en) 2020-03-31 2023-05-09 Assured Information Security, Inc. Providing trusted virtual secure cryptoprocessors for guests
US11936791B2 (en) * 2020-09-21 2024-03-19 Jason Burt Verification of the reliability of software and devices against assertions and guarantees

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08224331A (ja) * 1995-02-22 1996-09-03 Koyo Electron Ind Co Ltd ゴルフ練習場の管理システム
US20030188179A1 (en) * 2002-03-28 2003-10-02 International Business Machines Corporation Encrypted file system using TCPA
US20060117177A1 (en) * 2004-11-29 2006-06-01 Buer Mark L Programmable security platform
CN101014923A (zh) * 2004-09-10 2007-08-08 国际商业机器公司 具有编程片内硬件的安全机制的用于加密和解密的集成电路芯片
CN101034424A (zh) * 2007-01-12 2007-09-12 深圳兆日技术有限公司 一种数据安全存储系统和装置及方法
CN101361079A (zh) * 2006-01-13 2009-02-04 国际商业机器公司 协调密码安全处理单元对存储器的访问
CN101536396A (zh) * 2006-09-11 2009-09-16 联邦科学技术研究组织 用于建立信任的便携设备
US20100083002A1 (en) * 2008-09-30 2010-04-01 Liang Cui Method and System for Secure Booting Unified Extensible Firmware Interface Executables
US20100178977A1 (en) * 2009-01-15 2010-07-15 Igt Egm authentication mechanism using multiple key pairs at the bios with pki
WO2012074720A1 (en) * 2010-11-30 2012-06-07 Intel Corporation Method and apparatus for key provisioning of hardware devices
US8312272B1 (en) * 2009-06-26 2012-11-13 Symantec Corporation Secure authentication token management
CN103038745A (zh) * 2010-05-21 2013-04-10 惠普发展公司,有限责任合伙企业 扩展完整性测量
JP2013123631A (ja) * 2011-12-13 2013-06-24 Yoshio Yokoyama ゴルフ練習場の管理システム
US20130227296A1 (en) * 2012-02-23 2013-08-29 Hon Hai Precision Industry Co., Ltd. Virtual machine operation security system and method
CN103618703A (zh) * 2013-11-14 2014-03-05 中国人民武装警察部队工程大学 一种云计算数据安全边界保护方法
CN103841198A (zh) * 2014-03-07 2014-06-04 中南大学 一种净室云计算数据处理方法及系统

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912285B2 (en) 2000-02-24 2005-06-28 Tumbleweed Communications Corp. Mechanism for efficient private bulk messaging
GB2382419B (en) 2001-11-22 2005-12-14 Hewlett Packard Co Apparatus and method for creating a trusted environment
US8065713B1 (en) 2001-12-12 2011-11-22 Klimenty Vainstein System and method for providing multi-location access management to secured items
US7461080B1 (en) 2003-05-09 2008-12-02 Sun Microsystems, Inc. System logging within operating system partitions using log device nodes that are access points to a log driver
US20050166051A1 (en) 2004-01-26 2005-07-28 Mark Buer System and method for certification of a secure platform
US7380119B2 (en) 2004-04-29 2008-05-27 International Business Machines Corporation Method and system for virtualization of trusted platform modules
US7590867B2 (en) 2004-06-24 2009-09-15 Intel Corporation Method and apparatus for providing secure virtualization of a trusted platform module
US20060126836A1 (en) 2004-12-10 2006-06-15 Hector Rivas System and method for dynamic generation of encryption keys
US7725703B2 (en) 2005-01-07 2010-05-25 Microsoft Corporation Systems and methods for securely booting a computer with a trusted processing module
US7860802B2 (en) 2005-02-01 2010-12-28 Microsoft Corporation Flexible licensing architecture in content rights management systems
US7836299B2 (en) 2005-03-15 2010-11-16 Microsoft Corporation Virtualization of software configuration registers of the TPM cryptographic processor
US8074262B2 (en) 2005-05-13 2011-12-06 Intel Corporation Method and apparatus for migrating virtual trusted platform modules
US7613921B2 (en) 2005-05-13 2009-11-03 Intel Corporation Method and apparatus for remotely provisioning software-based security coprocessors
US7587595B2 (en) 2005-05-13 2009-09-08 Intel Corporation Method and apparatus for providing software-based security coprocessors
US8549592B2 (en) 2005-07-12 2013-10-01 International Business Machines Corporation Establishing virtual endorsement credentials for dynamically generated endorsement keys in a trusted computing platform
EP1911191B1 (en) 2005-08-05 2017-12-06 Hewlett-Packard Enterprise Development LP System, method and apparatus for cryptography key management for mobile devices
EP2375328A3 (en) 2006-01-24 2011-12-21 Citrix Systems, Inc. Methods and Systems for Providing Access to a Computing Environment
US7444670B2 (en) 2006-03-21 2008-10-28 International Business Machines Corporation Method and apparatus for migrating a virtual TPM instance and preserving uniqueness and completeness of the instance
JP5038396B2 (ja) 2006-04-21 2012-10-03 インターデイジタル テクノロジー コーポレーション トラステッドコンピューティングの完全性測定の通知を実行する装置および方法
US8108668B2 (en) 2006-06-26 2012-01-31 Intel Corporation Associating a multi-context trusted platform module with distributed platforms
US8522018B2 (en) 2006-08-18 2013-08-27 Fujitsu Limited Method and system for implementing a mobile trusted platform module
JP2010503252A (ja) 2006-08-31 2010-01-28 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピューティング・プラットフォームの証明
US9135444B2 (en) 2006-10-19 2015-09-15 Novell, Inc. Trusted platform module (TPM) assisted data center management
US8151262B2 (en) 2007-03-30 2012-04-03 Lenovo (Singapore) Pte. Ltd. System and method for reporting the trusted state of a virtual machine
US8060876B2 (en) 2007-08-10 2011-11-15 Intel Corporation Methods and apparatus for creating an isolated partition for a virtual trusted platform module
US8249257B2 (en) 2007-09-28 2012-08-21 Intel Corporation Virtual TPM keys rooted in a hardware TPM
US20090204964A1 (en) 2007-10-12 2009-08-13 Foley Peter F Distributed trusted virtualization platform
US8220029B2 (en) 2007-11-13 2012-07-10 Samsung Electronics Co., Ltd. Method and system for enforcing trusted computing policies in a hypervisor security module architecture
US8208637B2 (en) 2007-12-17 2012-06-26 Microsoft Corporation Migration of computer secrets
US8042190B2 (en) 2007-12-31 2011-10-18 Intel Corporation Pre-boot protected memory channel
US20100325628A1 (en) 2008-02-25 2010-12-23 Tomoyuki Haga Information processing device
US8516481B2 (en) 2008-04-04 2013-08-20 Hewlett-Packard Development Company, L.P. Virtual machine manager system and methods
US8543799B2 (en) 2008-05-02 2013-09-24 Microsoft Corporation Client authentication during network boot
US20100082960A1 (en) 2008-09-30 2010-04-01 Steve Grobman Protected network boot of operating system
US8411863B2 (en) 2008-10-03 2013-04-02 Microsoft Corporation Full volume encryption in a clustered environment
US8341427B2 (en) 2009-02-16 2012-12-25 Microsoft Corporation Trusted cloud computing and services framework
EP2457176B1 (en) 2009-07-24 2018-11-14 EntIT Software LLC Virtual-machine based application-service provision
US8713182B2 (en) 2009-08-03 2014-04-29 Oracle International Corporation Selection of a suitable node to host a virtual machine in an environment containing a large number of nodes
US8397306B1 (en) 2009-09-23 2013-03-12 Parallels IP Holdings GmbH Security domain in virtual environment
US8478996B2 (en) 2009-12-21 2013-07-02 International Business Machines Corporation Secure Kerberized access of encrypted file system
US9703586B2 (en) 2010-02-17 2017-07-11 Microsoft Technology Licensing, Llc Distribution control and tracking mechanism of virtual machine appliances
US8375437B2 (en) 2010-03-30 2013-02-12 Microsoft Corporation Hardware supported virtualized cryptographic service
US8375220B2 (en) 2010-04-02 2013-02-12 Intel Corporation Methods and systems for secure remote wake, boot, and login to a computer from a mobile device
US8555377B2 (en) 2010-04-29 2013-10-08 High Cloud Security Secure virtual machine
US8909928B2 (en) 2010-06-02 2014-12-09 Vmware, Inc. Securing customer virtual machines in a multi-tenant cloud
US8694777B2 (en) 2010-08-13 2014-04-08 International Business Machines Corporation Securely identifying host systems
EP2606448B1 (en) 2010-08-18 2016-02-10 Security First Corp. Systems and methods for securing virtual machine computing environments
TW201241662A (en) 2010-12-21 2012-10-16 Ibm Virtual machine validation
US9202062B2 (en) 2010-12-21 2015-12-01 International Business Machines Corporation Virtual machine validation
US8880667B2 (en) 2011-02-09 2014-11-04 Microsoft Corporation Self regulation of the subject of attestation
US9100188B2 (en) 2011-04-18 2015-08-04 Bank Of America Corporation Hardware-based root of trust for cloud environments
US9172683B2 (en) 2011-06-29 2015-10-27 Apple Inc. Method and apparatus for key distribution with implicit offline authorization
US8732462B2 (en) 2011-07-07 2014-05-20 Ziptr, Inc. Methods and apparatus for secure data sharing
US8375221B1 (en) 2011-07-29 2013-02-12 Microsoft Corporation Firmware-based trusted platform module for arm processor architectures and trustzone security extensions
US8874935B2 (en) 2011-08-30 2014-10-28 Microsoft Corporation Sector map-based rapid data encryption policy compliance
US8812830B2 (en) 2011-08-31 2014-08-19 Microsoft Corporation Attestation protocol for securely booting a guest operating system
US9270459B2 (en) 2011-09-20 2016-02-23 Cloudbyte, Inc. Techniques for achieving tenant data confidentiality from cloud service provider administrators
US8694786B2 (en) 2011-10-04 2014-04-08 International Business Machines Corporation Virtual machine images encryption using trusted computing group sealing
US20130097296A1 (en) 2011-10-18 2013-04-18 Telefonaktiebolaget L M Ericsson (Publ) Secure cloud-based virtual machine migration
US8813169B2 (en) * 2011-11-03 2014-08-19 Varmour Networks, Inc. Virtual security boundary for physical or virtual network devices
EP2807599B1 (en) 2012-01-23 2020-03-25 Citrix Systems, Inc. Storage encryption
US8909939B1 (en) 2012-04-04 2014-12-09 Google Inc. Distribution of cryptographic host keys in a cloud computing environment
EP2856386A1 (en) 2012-05-24 2015-04-08 Telefonaktiebolaget L M Ericsson (PUBL) Enhanced secure virtual machine provisioning
US20140006776A1 (en) 2012-06-29 2014-01-02 Mark Scott-Nash Certification of a virtual trusted platform module
US20140007087A1 (en) 2012-06-29 2014-01-02 Mark Scott-Nash Virtual trusted platform module
US20140019753A1 (en) 2012-07-10 2014-01-16 John Houston Lowry Cloud key management
US10248442B2 (en) 2012-07-12 2019-04-02 Unisys Corporation Automated provisioning of virtual machines
US20140052877A1 (en) 2012-08-16 2014-02-20 Wenbo Mao Method and apparatus for tenant programmable logical network for multi-tenancy cloud datacenters
US8997173B2 (en) 2012-09-12 2015-03-31 Ca, Inc. Managing security clusters in cloud computing environments using autonomous security risk negotiation agents
US8782401B2 (en) 2012-09-26 2014-07-15 Intel Corporation Enhanced privacy ID based platform attestation
US8924720B2 (en) 2012-09-27 2014-12-30 Intel Corporation Method and system to securely migrate and provision virtual machine images and content
US8700898B1 (en) 2012-10-02 2014-04-15 Ca, Inc. System and method for multi-layered sensitive data protection in a virtual computing environment
US9374228B2 (en) 2012-10-12 2016-06-21 International Business Machines Corporation Verifying a geographic location of a virtual disk image executing at a data center server within a data center
US20140281497A1 (en) 2013-03-13 2014-09-18 General Instrument Corporation Online personalization update system for externally acquired keys
WO2015030742A1 (en) 2013-08-28 2015-03-05 Intel Corporation Systems and methods for authenticating access to an operating system by a user before the operating system is booted using a wireless communication token
US9401954B2 (en) 2013-11-06 2016-07-26 International Business Machines Corporation Scaling a trusted computing model in a globally distributed cloud environment
US9519498B2 (en) 2013-12-24 2016-12-13 Microsoft Technology Licensing, Llc Virtual machine assurances
US9652631B2 (en) 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08224331A (ja) * 1995-02-22 1996-09-03 Koyo Electron Ind Co Ltd ゴルフ練習場の管理システム
US20030188179A1 (en) * 2002-03-28 2003-10-02 International Business Machines Corporation Encrypted file system using TCPA
CN101014923A (zh) * 2004-09-10 2007-08-08 国际商业机器公司 具有编程片内硬件的安全机制的用于加密和解密的集成电路芯片
US20060117177A1 (en) * 2004-11-29 2006-06-01 Buer Mark L Programmable security platform
CN101361079A (zh) * 2006-01-13 2009-02-04 国际商业机器公司 协调密码安全处理单元对存储器的访问
CN101536396A (zh) * 2006-09-11 2009-09-16 联邦科学技术研究组织 用于建立信任的便携设备
CN101034424A (zh) * 2007-01-12 2007-09-12 深圳兆日技术有限公司 一种数据安全存储系统和装置及方法
US20100083002A1 (en) * 2008-09-30 2010-04-01 Liang Cui Method and System for Secure Booting Unified Extensible Firmware Interface Executables
US20100178977A1 (en) * 2009-01-15 2010-07-15 Igt Egm authentication mechanism using multiple key pairs at the bios with pki
US8312272B1 (en) * 2009-06-26 2012-11-13 Symantec Corporation Secure authentication token management
CN103038745A (zh) * 2010-05-21 2013-04-10 惠普发展公司,有限责任合伙企业 扩展完整性测量
WO2012074720A1 (en) * 2010-11-30 2012-06-07 Intel Corporation Method and apparatus for key provisioning of hardware devices
JP2013123631A (ja) * 2011-12-13 2013-06-24 Yoshio Yokoyama ゴルフ練習場の管理システム
US20130227296A1 (en) * 2012-02-23 2013-08-29 Hon Hai Precision Industry Co., Ltd. Virtual machine operation security system and method
CN103618703A (zh) * 2013-11-14 2014-03-05 中国人民武装警察部队工程大学 一种云计算数据安全边界保护方法
CN103841198A (zh) * 2014-03-07 2014-06-04 中南大学 一种净室云计算数据处理方法及系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111433771A (zh) * 2017-09-22 2020-07-17 西班牙毕尔巴鄂比斯开银行 内核模块的安全引导
CN109840412A (zh) * 2018-12-21 2019-06-04 成都海光集成电路设计有限公司 安全控制方法及安全处理器、计算机系统
CN109840412B (zh) * 2018-12-21 2021-07-06 成都海光集成电路设计有限公司 安全控制方法及安全处理器、计算机系统

Also Published As

Publication number Publication date
US9584317B2 (en) 2017-02-28
WO2016108991A1 (en) 2016-07-07
EP3207488A1 (en) 2017-08-23
CN107077567B (zh) 2020-03-06
EP3207488B1 (en) 2020-04-29
US20160105280A1 (en) 2016-04-14

Similar Documents

Publication Publication Date Title
CN107077567A (zh) 标识计算设备上的安全边界
US10831886B2 (en) Virtual machine manager facilitated selective code integrity enforcement
US10803175B2 (en) Device attestation through security hardened management agent
CN108351944B (zh) 链式安全系统
US9800559B2 (en) Securing service control on third party hardware
EP3479282B1 (en) Targeted secure software deployment
CN106063185B (zh) 用于安全地共享数据的方法和装置
CN105830082B (zh) 虚拟机保证
US10423791B2 (en) Enabling offline restart of shielded virtual machines using key caching
Zhao et al. Providing root of trust for ARM TrustZone using on-chip SRAM
CN107431924B (zh) 将设备标识符和用户标识符相关联的设备盗窃防护
CN109416720A (zh) 跨重置维护操作系统秘密
CN108351937A (zh) 计算设备
CN107003866A (zh) 来自加密模板的加密虚拟机的安全创建
US10229272B2 (en) Identifying security boundaries on computing devices
CN109657448A (zh) 一种获取Root权限的方法、装置、电子设备及存储介质
US10079681B1 (en) Securing service layer on third party hardware
CN107209838A (zh) 便携式安全设备
TWI587172B (zh) 用於建立安全工作空間的所有權之系統
CN102833296B (zh) 用于构建安全的计算环境的方法和设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant