用于可信计算的方法和装置与流程

文档序号:21849785发布日期:2020-08-14 17:25阅读:168来源:国知局
用于可信计算的方法和装置与流程

本公开总体上涉及信息技术。更具体地,本公开涉及用于可信计算的方法和装置。



背景技术:

信息技术的快速发展已经极大地改变了人们的日常生活。用户可能会生成或拥有越来越多的数据,这可能对于诸如数字健康(dh)、市场营销、数字内容保护、移动金融和认证之类的各种服务的成功至关重要。例如,dh进步可以基于从数据中提取/挖掘的见解。但是,由于缺乏信任或隐私保护,许多用户可能不愿意提供这些数据。例如,如果人们共享有关其健康的信息,则可以预见医学和预防性健康方面的显着进步。但是,这可能包括他们不准备与任何其他个人或组织公开的敏感信息。人们只有在确信他们的个人信息将保持机密的情况下,才允许公司和研究组织使用其数据。不幸的是,很难信任物理托管用于处理数据的硬件和软件的组织。

可信计算允许对数据进行处理,同时将其与处理器所有者隔离。但是,对这种隔离执行的控制完全在服务提供者(即开发可信的计算代码并对其签名的实体)的手中。如果要求任何用户提供要用此代码处理的数据,这将引起信任问题,因为他们必须将他们的信任交给单个第三方。

因此,为可信计算提供改进的解决方案将是一种进步。



技术实现要素:

以简化形式提供本发明内容以介绍选择的构思,在下面的详细描述中进一步描述这些构思。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

根据本公开的第一方面,提供了一种方法。该方法包括:在启用可信的执行环境(tee)的处理器处,创建签名的tee;对签名的tee执行第一测量,其中,所述第一测量包括以下中的至少一个的测量:签名的tee的代码、签名的tee的身份以及在创建签名的tee期间执行的活动的日志;生成第一测量的结果的第一签名;将所述第一测量的结果和所述第一签名发送给公开登记器,以使得能够借助于所述公开登记器做出对所述签名的tee的验证;其中,签名的tee被配置为验证第一tee是否被记录在公开账本上。

在一个实施例中,该方法还包括:接收第一tee的代码和与第一tee的代码相关联的至少一个签名;通过签名的tee,基于至少一个签名,确定第一tee的代码是否被记录在公开账本上;当第一tee的代码被记录在公开账本上时,通过签名的tee对第一tee进行签名;创建第一tee;执行第一tee的第二测量,其中,第二测量包括以下中的至少一个的测量:第一tee的代码、第一tee的身份和在创建第一tee期间执行的活动的日志;生成第二测量的结果的第二签名;将第二测量的结果和第二签名发送给公开登记器,使得能够通过公开登记器做出对第一tee的验证。

在一个实施例中,创建签名的tee包括:从签名的tee的提供者接收签名的tee的代码和签名的tee的代码的签名;验证签名的tee的代码的签名;当签名的tee的代码的签名的验证为肯定的时,创建签名的tee。

在一个实施例中,将第二测量的结果和第二签名发送给公开登记器包括:将第一测量的结果和第一签名发送给签名的tee的提供者,使得签名的tee的提供者能够在启用tee的处理器的制造商证书服务的帮助下验证第一签名,并将第一测量的结果和第一签名转发给公开登记器。

在一个实施例中,服务提供者向启用tee的处理器的制造商证书服务进行注册,并使用该服务提供者的公钥被标识。

在一个实施例中,启用tee的处理器生成私钥-公钥对,该公钥用于标识启用tee的处理器,并且启用tee的处理器由启用tee的处理器的制造商证书服务来认证。

在一个实施例中,第一测量的结果和/或第二测量的结果作为哈希被存储并被传递。

在一个实施例中,签名的tee的验证包括检查以下中的至少一个:签名的tee的代码、签名的tee的第一测量的结果、第一签名的有效性和第一签名的出处。

在一个实施例中,第一tee的验证包括检查以下中的至少一个:第一tee的代码、第一tee的第二测量的结果、第二签名的有效性和第二签名的出处。

在一个实施例中,该方法还包括:从数据所有者接收数据,其中该数据用第一tee的公钥加密。

在一个实施例中,公开登记器是具有https认证的网站或由区块链智能合约控制的分布式账本。

在一个实施例中,分布式账本包含:启用tee的处理器、准许的tee代码和审核者的多个列表,以及智能合约包含用于修改该列表的至少一个规则。

在实施例中,由第一tee使用的数据被存储并用与签名的tee或第一tee相关的秘密密钥加密。

在一个实施例中,第一tee所使用的数据用与签名的tee相关的秘密密钥加密,第二tee由签名的tee签名,该方法还包括:将存储的数据发送给第二tee。

在一个实施例中,签名的tee的验证、第一tee的验证以及与第一tee的代码相关联的至少一个签名是由审核者委员会、数据所有者和可信的用户中的至少一个做出的。

根据本公开的第二方面,提供了一种能够提供可信的执行环境(tee)的装置。该装置包括:创建元件,被配置为创建签名的tee;测量元件,其被配置为执行所述签名的tee的第一测量,其中,所述第一测量包括以下中的至少一个的测量:签名的tee的代码、签名的tee的身份以及在创建签名的tee期间执行的活动的日志;签名元件,被配置为生成所述第一测量的结果的第一签名;发送元件,其被配置为将所述第一测量的结果和所述第一签名发送给公开登记器,以使得能够借助于所述公开登记器做出对所述签名的tee的验证;其中,签名的tee被配置为验证第一tee是否被记录在公开账本上。

在一个实施例中,该装置还包括:接收元件,被配置为接收第一tee的代码和与第一tee的代码相关联的至少一个签名;签名的tee还被配置为基于至少一个签名,确定第一tee的代码是否被记录在公开账本中;签名的tee还被配置为当第一tee的代码被记录在公开账本上时,对第一tee进行签名;所述创建元件还被配置为创建所述第一tee;所述测量元件还被配置为执行对所述第一tee的第二测量,其中,所述第二测量包括以下中的至少一个的测量:第一tee的代码、第一tee的身份和在创建第一tee期间执行的活动的日志;生成元件还被配置为生成第二测量的结果的第二签名;所述发送元件还被配置为将所述第二测量的结果和所述第二签名发送给所述公开登记器,以使得可以通过所述公开登记器对所述第一tee进行验证。

在一个实施例中,该装置还包括:接收元件还被配置为从签名的tee的提供者接收签名的tee的代码和签名的tee的代码的签名;验证元件,被配置为验证签名的tee的代码的签名;所述创建元件还被配置为当所述签名的tee的签名的验证为肯定的时,创建所述签名的tee。

在一个实施例中,该装置还包括:发送元件还被配置为将第一测量的结果和第一签名发送给签名的tee的提供者,使得签名的tee的提供者能够在启用tee的处理器的制造商证书服务的帮助下验证第一签名,并将第一测量的结果和第一签名转发给公开登记器。

在一个实施例中,服务提供者向启用tee的处理器的制造商证书服务进行注册,并使用该服务提供者的公钥被标识。

在一个实施例中,启用tee的处理器生成私钥-公钥对,该公钥用于标识启用tee的处理器,以及启用tee的处理器由启用tee的处理器的制造商证书服务来认证。

在一个实施例中,第一测量的结果和/或第二测量的结果作为哈希被存储并传递。

在一个实施例中,签名的tee的验证包括检查以下中的至少一个:签名的tee的代码、签名的tee的第一测量的结果、第一签名的有效性和第一签名的出处。

在一个实施例中,第一tee的验证包括检查以下中的至少一个:第一tee的代码、第一tee的第二测量的结果、第二签名的有效性和第二签名的出处。

在一个实施例中,接收元件被配置为从数据所有者接收数据,其中该数据用第一tee的公钥加密。

在一个实施例中,公开登记器是具有https认证的网站或由区块链智能合约控制的分布式账本。

在一个实施例中,分布式账本包含:启用tee的处理器、准许的tee代码和审核者的多个列表,以及智能合约包含用于修改该列表的至少一个规则。

在实施例中,由第一tee使用的数据被存储并用与签名的tee或第一tee相关的秘密密钥加密。

在一个实施例中,第一tee所使用的数据用与签名的tee相关的秘密密钥加密,第二tee由签名的tee签名,发送元件还被配置为将所存储的数据发送给第二tee。

在一个实施例中,签名的tee的验证、第一tee的验证以及与第一tee的代码相关联的至少一个签名是由审核者委员会、数据所有者和可信的用户中的至少一个做出的。

根据本公开的第三方面,提供了一种计算机可读存储介质,其载有一个或多个指令的一个或多个序列,所述一个或多个指令的一个或多个序列在由启用可信的执行环境(tee)的处理器执行时导致启用tee的处理器执行如上所述的方法。

根据本公开的第四方面,提供了一种计算机程序产品,该计算机程序产品包括一个或多个指令的一个或多个序列,当所述一个或多个指令的一个或多个序列由启用可信的执行环境(tee)的处理器执行时导致启用tee的处理器执行如上所述的方法。

根据本公开的第五方面,提供了一种装置,该装置包括被配置为执行如上所述的方法的构件。

通过下面的详细描述(仅示出许多特定的实施例和实施方式,包括为实现本发明而设想的最佳模式),本发明的其他方面、特征和优点将显而易见。本发明还能够具有其他和不同的实施例,并且可以在各种明显的方面修改实施例的若干细节,所有这些都不脱离本发明的精神和范围。因此,附图和描述本质上应被认为是说明性的,而不是限制性的。

附图说明

在附图的图中通过示例而非限制的方式示出了本发明的实施例:

图1描绘了其中可以实现本公开的一些实施例的示意性系统;

图2描绘了用于向用户提供数据将被如何处理的技术证明的示意性系统;

图3描绘了适用于实践本公开的示例性实施例的装置的简化框图;

图4描绘了适用于实践本公开的示例性实施例的装置的简化框图;

图5示出了根据本公开实施例的用于可信计算的过程的流程图;和

图6示出了根据本公开的另一实施例的用于可信计算的过程的流程图。

具体实施方式

出于说明的目的,在以下描述中阐述细节,以便提供对所公开的实施例的透彻理解。然而,对于本领域技术人员而言显而易见的是,可以在没有这些具体细节的情况下或以等效布置来实施实施例。本公开的各种实施例可以以许多不同的形式来体现,并且不应被解释为限于在此阐述的实施例;相反,提供这些实施例是为了使本公开满足适用的法律要求。贯穿全文,相似的参考标号指代相似的元件。如本文所使用的,术语“数据”、“内容”、“信息”和类似术语可以互换使用,以指代根据本公开的实施例能够被发送、接收和/或存储的数据。因此,不应将任何此类术语的使用认为限制本公开的实施例的精神和范围。

另外,如本文中所使用的,术语“电路”是指(a)纯硬件电路实施方式(例如,在模拟电路和/或数字电路中的实施方式);(b)电路和计算机程序产品的组合,包括存储在一个或多个计算机可读存储器上的软件和/或固件指令,这些软件和/或固件指令一起工作以使装置执行本文所述的一个或多个功能;(c)电路,例如(一个或多个)微处理器或一个或多个微处理器的一部分,该电路需要软件或固件来运行,即使软件或固件不是物理上存在的。“电路”的定义适用于此术语在本文(包括任何权利要求)中的所有使用。作为另一示例,如本文所使用的,术语“电路”还包括一种实现方式,该实现方式包括一个或多个处理器和/或其一部分(多部分)以及伴随的软件和/或固件。作为另一示例,如本文所使用的术语“电路”还包括例如用于移动电话的基带集成电路或应用处理器集成电路或在服务器、蜂窝网络装置、其他网络装置和/或其他计算装置中的类似的集成电路。

如本文所使用的,数字签名对于签名者是唯一的。数字签名解决方案提供者遵循一种被称为公钥基础架构(pki)的特定协议。pki要求提供者使用数学算法来生成两个长数字,称为密钥。一个密钥是公开的,一个密钥是私有的。当签名者对文档进行电子签名时,签名是使用签名者的私钥创建的,私钥始终由签名者安全地保存。数学算法表现得类似于密码,其创建与签名文档匹配的数据(称为哈希),并对该数据进行加密。生成的加密数据就是数字签名。签名还标记有文档被签名的时间。如果文档在签名后发生更改,则数字签名无效。注意,数字签名解决方案可以是任何合适的现有或进一步开发的数字签名解决方案。本公开对此没有限制。

图2描绘了用于向用户提供数据将被如何处理的技术证明的示意性系统。

如图2所示,诸如软件保护扩展(softwareguardextensions)体系架构之类的启用可信的执行环境(tee)的处理器202允许在普通不可信的操作系统内创建屏蔽区域。一种特定类型的tee的是引用(quoting)tee206,例如体系架构的引用飞地(quotingenclave),它由启用tee的处理器的制造商进行了编程,并随启用tee的处理器一起提供,并且不能被重新编程。引用tee206由启用tee的处理器202的硬件证书机构210认证,并且用于证明计算的tee204的测量的出处来自该启用tee的处理器202。引用tee206可以用于远程证实。

向用户提供数据将被如何处理的技术证明的过程可以如下进行:

在步骤(1)中,向启用tee的处理器202提供引用tee206,该引用tee206负责证明启用tee的处理器202的身份并证实在启用tee的处理器202上的其他计算的tee204确实在该启用tee的处理器202上运行。

在步骤(2)中,引用tee206产生私钥-公钥对{skq,pkq}(在intelsgx的情况下为组签名密钥对)。公钥pkq用于标识tee,从而标识启用tee的处理器202。引用tee206由硬件证书机构210进行认证。然后,供应商将启用tee的处理器202集成在诸如服务器的计算设备中。该计算设备被交付给所有者。所有者可以使用该计算设备来提供最终服务,或者将该计算设备的计算能力作为云设施提供给服务提供者212。该服务提供者212(所有者或云用户)生成私钥-公钥对{skp,pkp}。

在步骤(3)中,服务提供者212向硬件证书机构210注册,并用公钥pkp标识。

在步骤(4)中,服务提供者212编写计算的tee204的代码并对计算的tee204的代码进行签名。然后,服务提供者212将计算的tee204的代码和该签名发送给启用tee的处理器202。

在步骤(5),启用tee的处理器202验证该签名并创建计算的tee204。在创建时,计算的tee204生成私钥-公钥对{skc,pkc},然后将其公钥pkc传送给服务提供者212。

在步骤(6),服务提供者212可以将公钥pkc转发给数据所有者/服务用户208。

在步骤(7)中,根据服务提供者212或数据所有者208的请求,启用tee的处理器202对计算的tee204进行测量,并将测量的结果发送给对计算的tee204进行签名的引用tee206。

在步骤(8)中,将计算的tee204的代码,该测量的结果和该签名发送给数据所有者/服务用户208。

在步骤(9),服务用户208可以借助硬件证书机构210来验证签名。因此,数据所有者可以在共享数据之前知道该数据将如何被处理。

然而,如图2所示的示意图系统存在一些问题:

-服务用户需要自己弄清楚计算的tee的代码是什么,并验证技术证明是什么;

-计算的tee无法被更新或修改。如果需要对相同的数据执行不同的计算,则必须重新执行整个过程,包括请求该数据。

-每个计算的tee必须由服务提供者签名。

为了克服上述问题或其他问题中的至少一个,本公开的实施例提供了一种可信计算系统,其引入了更多功能,这些功能可以使可信计算系统更加实用:

-公开所有技术证明的公开登记器(例如所有参与者均可访问的安全网站、区块链平台、云文件夹);

-审核者委员会,其允许非专家用户信任审核者委员会,而不是依靠自己或单个第三方。由于普通用户可能不具备自行验证tee的专业知识,因此可以选择审核者委员会进行技术验证。为了与用户建立信任,审核者的选择应尽可能多种多样,范围从可信的公司到政府机构、监管机构或独立协会。每个委员会成员都可以将其对tee的意见正式化(例如,值得信赖、不值得信赖、未经测试)。另外,审核者委员会可以由用户选择/选举;

-称为签名的tee的中间tee,其允许tee准许的自动化和更新的可能性而不会丢失数据,同时保持服务提供者与数据隔离。签名的tee的作用是在对计算的tee进行签名之前检查计算的tee是否已获得审核者委员会的准许。因此,用已在处理器(即签名的tee)中的并且任何第三方都不会看到的密钥对计算的tee进行签名。

可以将不同的技术证明以哈希和数字签名的形式提供给审核者,然后提供给用户:

-tee的代码和测量可以由启用tee的处理器以哈希的形式提供;

-由启用tee的处理器的签名来证明由启用tee的处理器提供测量的事实,该签名由启用tee的处理器的制造商认证;

-由审核者委员会的签名来证明tee已经被审核和准许的事实。

数字签名的有效性可以由具有相应公钥的任何人检查,并且签名者的身份由证书机构(在引用tee的情况下,启用tee的处理器的制造商)通过公钥来认证。没有私钥的任何人都不能伪造签名。

原理上,如果服务用户足够专业,则他们不需要信任审核者(或其证书机构)。他们仍然需要相信制造商已经完成了安全处理器这一事实,但是他们并不需要信任访问其数据的第三方或人工代理。

技术证明的列表可以直接提供给用户,也可以在安全登记器(例如受传输层安全(tls)保护的网站、区块链智能合约账本、共享云帐户)中公开。

例如,当不使用tee或tee不用于大量数据时,可以使用与签名的tee相关的密钥或与计算的tee相关的密钥对数据进行加密(或“密封”)以进行存储。由给定的计算的tee使用的数据用与签名的tee相关的密钥加密的结果是,只要更新的计算的tee通过相同的签名的tee进行签名,就可以用该更新版本的计算的tee来解密该数据。这允许服务提供者更新计算的tee,而无需再次请求该数据。当使用与计算的tee相关的密钥对该数据进行加密时,该数据无法从计算的tee传输到另一个计算的tee,因此数据所有者知道它与计算的tee共享的数据不会被移至其他未知的tee。

图1描绘了其中可以实现本公开的一些实施例的示意性系统。如图1所示,系统100可以包括由用户/数据所有者使用的第一电子装置111,该第一电子装置111通过通信链路可操作地连接到第二电子装置110。然而,应理解,如所图示和下文中所描述的电子装置111和110仅是说明可以从本公开的实施例中受益的装置,因此,不应将其视为限制本公开的范围。尽管出于示例的目的示出了第一电子装置111和第二电子装置110,并且在下文中将对其进行描述,但是其他类型的设备可以容易地采用本公开的实施例。第一电子装置111和第二电子装置110可以是便携式数字助理(pda)、用户设备、移动计算机、台式计算机、智能电视、游戏设备、膝上型计算机、媒体播放器、相机、录像机、移动电话、全球定位系统(gps)设备、智能电话、平板电脑、服务器、瘦客户机、云计算机、虚拟服务器、机顶盒、计算设备、分布式系统、传感器、智能眼镜、车辆导航系统和/或任何其他类型的电子系统。第一电子装置111和第二电子装置110可以运行包括但不限于windows、linux、unix、android、ios及其变体的任何种类的操作系统。此外,至少一个示例实施例的装置不必是整个电子装置,在其他示例实施例中可以是电子装置的组件或组件组。另外,第一电子装置111可以将诸如敏感数据或其他数据之类的数据发送给第二电子装置110。通常,第一电子装置111可以是用户使用的设备,而第二电子装置110可以是服务器。尽管未在图1中显示,但可以有两个或更多电子装置111。

第二电子装置110可以包括:启用可信的执行环境(tee)的处理器112,诸如软件保护扩展体系架构、具有可信环境的armtrustzone或其他类型的启用tee的处理器。tee是启用tee的处理器112内的保护区。例如,体系架构的飞地(enclave)是tee的示例,它可以具有三个特征:

-身份:tee可以证明其身份,这可以包括两个部分:

ο与正在运行的启用tee的处理器相关的标识符。这可以由启用tee的处理器的制造商证书服务提供

ο与对tee的代码进行签名的tee提供者相关的标识符

-数据隔离:在启用tee的处理器的正常(非可信)部分中运行的其他应用(即使具有最高特权级别)也无法直接访问在这些区域内处理的数据。tee还可以用于创建永远不会离开可信环境的密钥,并且可以用于对数据进行加密以便将其存储在不可信的部分中。

-完整性:在启用tee的处理器的不可信的部分中运行的任何应用(即使具有最高特权的应用)也不能篡改tee中运行的代码。这意味着tee不受启用tee的处理器的所有者的控制。相比之下,tee提供者(即编写tee代码并对其签名的实体)可以修改tee。

启用tee的处理器112允许在常规不可信的操作系统内创建屏蔽区域。tee的创建以及tee与外界的交互可以通过在正常操作系统上运行的不可信的应用来完成。但是,这些应用无法看到或篡改tee的代码和数据。通过使用tee和用户之间的端到端加密,还可以使它们忽略它们通信的数据。

启用tee的处理器可以包括可信元件或可信计算基(tcb)118,例如技术的引用飞地,其由启用tee的处理器112的制造商进行编程,并被提供有启用tee的处理器112并且不能被重新编程。可信元件118可以由启用tee的处理器的制造商证书服务120认证,并且可以用于证明tee的测量的出处是来自启用tee的处理器。可信元件118可以生成私钥-公钥对{skq,pkq},其中pkq可以是组签名公钥。公钥pkq可用于标识启用tee的处理器112。此外,公钥pkq还可用于加密与可信元件118的通信。可信元件118可用于远程证实。证实是证明某个软件已在tee上恰当地实例化的过程。通过证实,另一方可以确信正确的软件正在安全地运行在tee内。

除了元件118之外,启用tee的处理器112可以包括一个或多个其他tee,例如签名的tee122以及计算的tee114和116(在本文中称为第一tee或第二tee),每个tee可以被设计为执行任何所需的功能。tee可以执行的功能可以由任何人来设计,例如服务提供者或外部实体、研究人员、数据分析师、营销人员。下面将描述签名的tee和计算的tee的功能。

注意,启用tee的处理器112的类型也可以适用于第二电子装置110。此外,启用tee的处理器112可以通过使用诸如armtrustzone或架构的任何其他合适的现有或未来技术来实现。

该系统可以进一步包括签名的tee的提供者124。签名的tee122允许由审核者委员会126进行的tee准许的自动化,以及在不丢失数据的情况下更新tee的可能性,同时保持服务提供者与数据隔离。签名的tee的代码可以由签名的tee的提供者124提供以满足签名的tee的需要,并且可以用签名的tee的提供者124的秘密密钥来签名。为了创建签名的tee,提供者124可能需要与制造商证书服务120注册,以便可以使用非对称密钥对{skp,pkp}对提供者124进行认证。可以将签名的tee的代码与应用一起发送给启用tee的处理器,该应用将在处理器的非可信部分中运行并负责触发签名的tee的创建并与外界通信。在创建时,签名的tee将创建一个非对称密钥对{sks,pks}。根据例如提供者124的请求,启用tee的处理器可以执行对签名的tee122的测量。该测量可以包含签名的tee的代码,其身份(例如,提供者124产生的签名)以及在创建签名的tee过程中执行的所有活动的日志。测量的结果可以作为哈希被存储并传递。此后,tee及其测量的结果不会改变。

该系统可以进一步包括计算的tee的提供者126。可以将计算的tee设计为执行任何所需功能。计算的tee的代码由提供者126提供,以满足计算的tee的需要。计算的tee的代码可以由至少一个验证者(例如任何人、审核者委员会、数据所有者和可信的用户)来验证。如果计算的tee代码被验证用于执行其应具有的功能,即以纯语言解释的功能,则至少一个验证者用各自的秘密密钥对其进行签名。

系统可以进一步包括公开登记器128。公开登记器128可以是具有https认证的网站、区块链账本或其他合适的公开平台。它为tee的潜在用户提供了他们所需的所有信息以验证tee将执行其声称要执行的计算。取决于应用,术语“公开”可以意味着对任何人都可见或对具有访问控制权的有限数量的实体可见。例如,公开登记器120可以存储tee代码的副本、tee的测量、与tee有关的签名以及关于至少一个验证者的信息(例如委员会成员对tee的意见)。

在一个实施例中,公开登记器120可以是区块链平台。区块链平台是运行智能合约的去中心化平台。一旦两方或更多方同意合同内的所有条款,他们便以加密方式对智能合同签名并将其部署到分布式账本中。当满足代码中指定的条件时,可以自动触发相应的动作。

注意,尽管公开登记器120被示为一个实体,但是在其他实施例中,它可以是可以在多个装置中分布的去中心化平台。

转到图1,通信链路可以是任何合适的通信网络的通信链路。通信网络的示例可以包括任何有线或无线网络或其组合,其包括但不限于无线蜂窝电话网络(例如全球移动通信系统(gsm)网络、第三代(3g)网络、3.5第3代(3.5g)网络、第4代(4g)网络、通用移动电信系统(umts)、码分多址(cdma)网络等)、无线局域网(wlan)(如电气和电子工程师协会(ieee)802.x标准中的任何标准所定义的)、以太网局域网、令牌环局域网、广域网和互联网。另外,系统100的任何两个元件之间的通信可以被加密。

该系统可以进一步包括证书机构(ca)130,该证书机构(ca)130是颁发数字证书的实体。数字证书通过证书的指定主体证明公钥的所有权。这允许其他人(依赖方)依赖于对与经认证的公钥相对应的私钥所做的签名或声明。ca充当可信的第三方,其受证书的主体(所有者)和依赖该证书的一方两者的信任。

图3示出了适用于实践本公开的示例性实施例的装置的简化框图。装置300可以被实现为如图1所示的启用tee的处理器112。

装置300可以包括:被配置为创建签名的tee304的创建元件302。签名的tee的作用可以用于验证被称为计算的tee的其他tee是否被记录在公开账本上。在一个实施例中,签名的tee可以由启用tee的处理器的制造商来编程,并且被提供有启用tee的处理器。签名的tee可以由启用tee的处理器的制造商进行认证。

当创建签名的tee时,签名的tee304可以生成私钥-公钥对{sks,pks}。可以将公钥pks发送给任何合适的实体,例如签名的tee的提供者。

装置300可以进一步包括:测量元件306,其被配置为执行签名的tee304的第一测量,其中第一测量可以包括:签名的tee304的代码、签名的tee的身份(例如公钥pks)、以及在创建签名的tee期间执行的活动的日志的至少一个的测量。

设备300可以进一步包括:签名元件308,其被配置为生成第一测量的结果的第一签名。例如,签名元件308可以使用启用tee的处理器的私钥(即可信元件118的私钥),来生成第一测量的结果的第一签名。

装置300可以进一步包括:发送元件310,其被配置为将第一测量的结果和第一签名发送给公开登记器,使得可以借助于公开登记器来做出对签名的tee的验证。例如,发送元件310可以直接将第一测量的结果和第一签名发送给公开登记器,以使得至少一个验证者(诸如任何人、审核者委员会、数据所有者和可信的用户)可以通过公开登记器对签名的tee进行验证。

在另一个实施例中,发送元件310可以将第一测量的结果和第一签名发送给签名的tee的提供者,使得签名的tee的提供者可以借助于启用tee的处理器的制造商证书服务来验证第一签名。如上所述,由于可信元件118可以由启用tee的处理器的制造商证书服务来认证,因此签名的tee的提供者可以从制造商证书服务获得可信元件118的公钥,然后验证第一签名。另外,签名的tee的提供者可以将第一测量的结果和第一签名连同签名的tee的代码一起转发给公开登记器。

签名的tee的验证可以包括检查以下中的至少一个:检查签名的tee的代码、检查签名的tee的第一测量的结果、借助于制造商证书服务检查第一签名的有效性及其出处。如果审核者认为签名的tee是值得信赖的,则审核者可以对签名的tee的代码和第一测量进行签名,并将其签名记录在公开登记器上。审核者可以将其对签名的tee的意见正式化(例如,可信赖、不可信赖、未经测试)。然后,数据所有者可以验证委员会成员是谁,并确定委员会中的至少一名成员或成员组合(例如,一名法律专家、一名硬件专家、一名软件专家和一个独立的非政府组织)是否可信赖地做出了他们的意见。

在一个实施例中,第一测量的结果可以作为哈希被存储并且被传递。例如,可以对签名的tee的代码进行哈希以产生简短的摘要,其被称为哈希。

图4示出了适用于实践本公开的示例性实施例的装置的简化框图。装置400可以被实现为如图1所示的启用tee的处理器112。对于上面已经参考图3描述的一些部分,为了简洁在此省略其描述。

在一个实施例中,签名的tee304可以由签名的tee的提供者来编程。装置400可以进一步包括接收元件402,该接收元件402被配置为从签名的tee的提供者接收签名的tee的代码和签名的tee的代码的签名。例如,签名的tee的提供者可以生成私钥-公钥对{skp,pkp}。签名的tee的提供者可以在启用tee的处理器的制造商证书服务中注册,并通过其公钥pkp进行标识。签名的tee的提供者编写签名的tee的代码并对其进行签名。然后,签名的tee的提供者将签名的tee的代码和该签名发送给启用tee的处理器。接收元件402接收签名的tee的代码和签名的tee的代码的签名。

装置400可以进一步包括:验证元件404,其被配置为验证签名的tee的代码的签名。例如,验证元件404可以从启用tee的处理器的制造商证书服务获得签名的tee的提供者的公钥,然后验证签名的tee的代码的签名。当对签名的tee的签名的验证是肯定的时,创建元件302可以创建签名的tee304。

在一个实施例中,接收元件402接收诸如计算的tee406的第一tee的代码以及与第一tee的代码相关联的至少一个签名。例如,至少一个签名可以由至少一个验证者(例如审核者委员会、数据所有者和可信的用户)生成。例如,计算的tee的提供者可以编写计算的tee406的代码,并将其发送给诸如区块链的公开登记器。普通用户易于理解的诸如英语之类的普通语言也可以被包括在例如计算的tee的代码中。至少一个验证者可以验证计算的tee的代码执行了它应该执行的功能,即以纯语言解释的内容。如果至少一个验证者认为计算的tee的代码是可信的,则至少一个验证者可以对计算的tee的代码进行签名,然后可以将计算的tee的代码和该签名记录在公开登记器中。

然后,签名的tee304可以基于至少一个签名来确定第一tee406的代码是否被记录在公开账本上。例如,签名的tee304可以验证至少一个签名,并确定经过验证的签名的数量是否不小于阈值。例如,如果经过验证的签名的数量不小于阈值,则签名的tee304可以确定第一tee406的代码被记录在公开账本上。例如取决于可信计算的要求,阈值可以由任何合适的值来定义。例如,阈值可以是审核者委员会的成员的数量。

当第一tee的代码被记录在公开账本上时,签名的tee304可以对第一tee进行签名。然后,创建元件302可以创建第一tee。

测量元件306可以例如根据第一tee的提供者或数据所有者的请求来执行第一tee的第二测量。第二测量可以包括以下中的至少一个的测量:第一tee的代码、第一tee406的身份以及在创建第一tee406期间执行的活动的日志。

签名元件308可以例如通过使用启用tee的处理器(即,可信元件)的私钥来生成第二测量的结果的第二签名。发送元件310可以将第二测量的结果和第二签名发送给公开登记器,使得可以借助于公开登记器来进行第一tee406的验证。例如,至少一个验证者(例如任何人、审核者委员会、数据所有者和可信的用户)可以通过公开登记器来验证第一tee。

在一个实施例中,第二测量的结果可以作为哈希被存储并传递。例如,可以对第一tee的代码进行哈希以生成简短的摘要,其被称为哈希。

第一tee的验证可以包括:检查第一tee的代码、检查第一tee的第二测量的结果、借助于制造商证书服务检查第二签名的有效性及其出处。如果至少一个验证者认为第一tee是可信赖的,则至少一个验证者可以对签名的tee的代码和第二测量进行签名,并将它们的签名记录在公开登记器上。至少一个验证者可以将其对第一tee的意见(例如,可信、不可信、未经测试)正式化。

第一tee406被证明以至少一个验证者公开已知和准许的方式操作。第一tee可以使用来自外部数据所有者的数据。数据所有者可以验证至少一个验证者是谁,并确定其中的至少一个验证者或成员组合是否可信赖地做出了他们的意见。数据所有者可以检查身份(例如,公钥)是否得到认证。数据所有者可以检查tee是否获得准许。数据所有者可以使用启用tee的处理器的制造商证书服务来检查tee的身份。如果数据所有者信任第一tee,则数据所有者可以将例如使用第一tee的公钥加密的数据发送给第一tee。

注意,无论公开登记器是什么,都可以进行上述验证,因为(只要用户使用正确的证书机构,这是一个标准假设)数字签名是不能伪造的。但是,如果公开登记器是受区块链智能合约控制的分布式账本,则可以添加额外的功能。如果没有区块链,用户每次都需要执行整个列表的验证,因为准许的处理器、程序和审核者的列表可能随时更改。使用区块链智能合约,这些列表将是防篡改的,或者仅根据防篡改规则集被修改。因此,用户只需要彻底地信任智能合约,并让智能合约处理所有验证。

分布式账本可以包含启用tee的处理器、准许的tee代码和审计程序的列表。智能合约将包含修改以上列表的规则,例如

·准许tee需要多少位审核者投票。

·一些审计者也可能拥有否决权。

·在什么条件下可以接受新的审核者:审核者投票和/或用户投票。

在一个实施例中,由第一tee使用的数据被存储并用与签名的tee或第一tee相关的秘密密钥加密。当用与签名的tee有关的秘密密钥对数据加密时,只要第二tee由相同的签名的tee签名,发送元件310就可以将该数据传送/发送给第二tee。这允许更新第一tee,而无需再次请求该数据。当使用与第一tee相关的秘密密钥对数据进行加密时,无法将该数据传送给第一tee,因此用户知道与tee共享的数据不会移动到其他未知的tee。

图5示出了根据本公开实施例的用于可信计算的方法500的流程图。方法500可以由如图1所示的启用tee的处理器112执行。对于上面已经通过一些实施例描述的一些方面,为了简洁在此省略了对这些方面的描述。

如图5所示,方法500从框502开始,在框502处,启用tee的处理器112可以创建签名的tee。

在框504处,启用tee的处理器112可以执行签名的tee的第一测量,其中,第一测量包括以下中的至少一个的测量:签名的tee的代码、签名的tee的身份和创建签名的tee期间执行的活动的日志。

在框506,启用tee的处理器112可以生成第一测量的结果的第一签名。

在框508,启用tee的处理器112可以将第一测量的结果和第一签名发送给公开登记器,使得可以借助于公开登记器来对签名的tee进行验证。

在各个实施例中,签名的tee被配置为验证第一tee是否被记录在公开账本上。

图6示出了根据本公开的另一实施例的用于可信计算的方法600的流程图。对于上面已经通过一些实施例描述的一些方面,为了简洁,这里省略这些方面的描述。

在步骤(1)中,启用tee的处理器被提供有可信元件,该可信元件将负责证明启用tee的处理器的身份并证实在启用tee的处理器上的其他tee确实运行在启用tee的处理器上。

在步骤(2),可信元件生成私钥-公钥对{skq,pkq}(在intelsgx的情况下为组签名密钥对)。公钥pkq用于标识tee,从而标识启用tee的处理器。公钥pkq由启用tee的处理器的制造商运行的制造商证书服务来认证。

然后,供应商将启用tee的处理器集成到诸如服务器之类的计算设备中。该设备被交付给所有者。所有者可以使用该设备来提供端服务,或者将该设备的计算能力作为云设施提供给服务提供者。该服务提供者(所有者或云用户)生成私钥-公钥对{skp,pkp}。

在步骤(3)中,端(end)服务提供者与制造商证书服务进行注册,并用其公钥pkp进行标识。

在步骤(4),服务提供者编写签名的tee的代码。签名的tee的作用是验证第一tee(例如计算的tee)是否在公开账本上被记录了。如果是这样的话,则签名的tee对计算的tee进行签名。服务提供者对签名的tee代码进行签名,然后将签名的tee代码和该签名发送给启用tee的处理器。

在步骤(4),启用tee的处理器验证该签名并创建签名的tee。在创建时,签名的tee会生成私钥-公钥对{sks,pks}。

在步骤(5),签名的tee随后可以将其公钥pks传递给服务提供者。

在步骤(6),根据服务提供者的请求,启用tee的处理器执行对签名的tee的测量,并将测量的结果发送给可信元件,以使可信元件对签名的tee进行签名。

在步骤(7),将测量的结果和签名发送回服务提供者。

在步骤(8),服务提供者可以借助制造商证书服务来验证该签名。

在步骤(9),签名的tee的代码的副本、测量和签名可以由服务提供者发送并被记录在公开登记器中。

公开登记器可以是具有https认证的网站或区块链账本。它为系统的潜在用户提供了他们所需的所有信息以验证该系统将执行其声称要执行的计算。

因为普通用户不具备专业知识来亲自验证签名的tee,所以要选择至少一个验证者(例如任何人、审核者委员会、数据所有者和可信的用户)来做出技术验证。为了建立与用户的信任,至少一个验证者的选择可以是尽可能多样的,范围从可信的公司到政府机构、监管机构或独立协会。每个验证者都可以将其对系统的观点正式化(例如,可信赖、不可信赖、未经测试)。委员会成员的列表及其标识符(例如公钥)可以在步骤(10)中被记录在公开登记器中。

在步骤(11),至少一个验证者可以检查:tee的代码;签名的tee的测量;借助于制造商的认证服务的签名的有效性及其出处。如果至少一个验证者认为签名的tee是可信赖的,则至少一个验证者对签名的tee的代码和测量进行签名,并将其签名记录在公开登记器中。

能够由任何人设计将由计算的tee执行的对数据所有者的数据的实际计算。它可能是服务提供者本身,也可能是外部实体、研究人员、数据分析师、营销人员。可以将计算的tee设计为执行任何所需功能。

在步骤(12),计算的tee的提供者编写计算的tee的代码,并将其发送给公开登记器,例如区块链。还可以提供普通用户易于理解的纯英语以及计算的tee的代码。

在步骤(13),至少一个验证者可以验证计算的tee的代码是否执行了预期的功能,即用纯英语解释的功能,并对计算的tee的代码进行签名。然后,可以将计算的tee的代码及其签名存储在公开登记器中。

在步骤(14),例如根据服务提供者的请求,计算的tee的代码被发送给启用tee的处理器。

在步骤(15),签名的tee验证计算的tee被记录在公开账本上。

在步骤(16),签名的tee对计算的tee进行签名,然后将计算的tee与密钥对一起创建。

在步骤(17),根据服务提供者的请求,启用tee的处理器执行对计算的tee的测量,然后将计算的tee的代码及其测量发送给可信元件,可信元件对计算的tee的代码及其测量进行签名。

在步骤(18),将计算的tee的代码及其测量和签名记录在公开登记器中。

在步骤(19),数据所有者验证至少一个验证者是谁,并确定它们中的至少一个验证者或成员的组合是否值得信赖地做出他们的意见。

在步骤(20),数据所有者检查身份(公钥)是否得到认证。

在步骤(21),数据所有者检查tee是否被至少一个验证者准许。

在步骤(22),数据所有者用制造商证书服务来检查tee的身份。

在步骤(23),如果她/她信任该系统,数据所有者将例如使用tee的公钥加密的该数据发送给计算的tee。

原理上,无论公开登记器是什么,都可以进行所有这些验证(步骤19至23),因为只要用户使用正确的证书机构(这是一个标准假设),数字签名就不能被伪造。

在任何情况下,用户总是可以验证公开登记器,并且如果用户对系统不满意,则决定撤出其数据。

本公开的实施例可以提供以下优点:

此签名的tee具有两个优点:

-它使tee准许自动化,而不必每次都经过服务提供者;

-由于它不处理任何秘密数据,因此可以将服务提供者(对该tee拥有一定控制权)与实际操纵该秘密数据的tee分开。服务提供者直接对签名的tee进行签名,但是对由签名的tee签名的计算的tee则没有直接控制权。

系统提供:

-数据如何被希望验证该数据的任何人处理的完整的可审核性;

-通过证明未加密的数据永远不会离开tee,因此人类永远不会看到它们而提供的数据安全性;

-意味着通过让专业审核者公布其准许来建立非专家用户与系统之间的信任;

-数据可以从tee传递到另一个tee,只要它们由相同的签名的tee签名即可。这使服务提供者更新tee而无需再次请求该数据。

注意,上述装置的任何组件可以被实现为硬件或软件模块。在软件模块的情况下,它们可以体现在有形的计算机可读可记录存储介质上。例如,所有软件模块(或其任何子集)可以在同一介质上,或者每个软件模块可以在不同的介质上。这些软件模块可以例如在硬件处理器上运行。然后可以使用如上所述的在硬件处理器上执行的不同软件模块来执行方法步骤。

另外,本公开的一方面可以利用在通用计算机或工作站上运行的软件。这样的实施方式可以采用例如处理器、存储器和例如由显示器和键盘形成的输入/输出接口。如本文所使用的术语“处理器”旨在包括任何处理设备,例如包括cpu(中央处理单元)和/或其他形式的处理电路的处理设备。此外,术语“处理器”可以指不止一个单独的处理器。术语“存储器”旨在包括与处理器或cpu相关联的存储器,例如ram(随机存取存储器)、rom(只读存储器)、固定存储设备(例如硬盘驱动器)、可移动存储设备(例如软盘)、闪存等。处理器、存储器以及诸如显示器和键盘之类的输入/输出接口可以例如经由作为数据处理单元的一部分的总线互连。适当的互连(例如通过总线)也可以提供给网络接口,例如网卡,网卡可以提供以与计算机网络接口,以及提供给介质接口,例如软盘或cd-rom驱动器,介质接口可以提供与介质的接口。

因此,如本文所述,包括用于执行本公开的方法的指令或代码的计算机软件可以存储在相关联的存储设备(例如,rom、固定或可移动存储器)中,并且在准备被使用时其被部分或全部加载(例如,加载到ram中)并由cpu实现。这样的软件可以包括但不限于固件、常驻软件、微代码等。

如所指出的,本公开的方面可以采用体现在计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有体现在其上的计算机可读程序代码。而且,可以利用计算机可读介质的任何组合。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电的、磁的、光的、电磁的、红外的或半导体的系统、装置或设备,或前述的任何合适的组合。计算机可读存储介质的更具体示例(非详尽列表)将包括以下内容:具有一根或多根电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、光纤、便携式光盘只读存储器(cd-rom)、光学存储设备、磁存储设备或前述的任何其他适当组合。在本文的上下文中,计算机可读存储介质可以是任何有形介质,其可以包含或存储供指令执行系统、装置或设备使用或与其结合使用的程序。

用于执行本公开的各方面的操作的计算机程序代码可以以至少一种编程语言的任意组合来编写,所述编程语言包括诸如java、smalltalk、c++之类的面向对象的编程语言以及常规的过程编程语言,例如“c”编程语言或类似的编程语言。程序代码可以完全在用户计算机上执行、部分在用户计算机上执行,作为独立软件包,部分在用户计算机上执行以及部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。

附图中的流程图和框图示出了根据本公开的各种实施例的装置、方法和计算机程序产品的可能的实现的架构、功能和操作。就这一点而言,流程图或框图中的每个方框可以代表代码的模块、组件、段或部分,其包括至少一个用于实现指定的逻辑功能的可执行指令。还应注意,在一些替代实施方式中,方框中指出的功能可以不按图中指出的顺序发生。例如,取决于所涉及的功能,实际上可以基本上同时执行连续示出的两个框,或者有时可以以相反的顺序执行这些框。还应注意,框图和/或流程图说明的每个方框以及框图和/或流程图说明中的方框的组合可以由执行指定功能或动作的基于专用硬件的系统来实现,或专用硬件和计算机指令的组合。

应当注意,术语“连接”、“耦合”或其任何变体是指两个或更多个元件之间的任何直接或间接的连接或耦合,并且可涵盖在“连接”或“耦合”在一起的两个元件之间的一个或多个中间元件的存在。元件之间的耦合或连接可以是物理的、逻辑的或其组合。如本文所采用的,通过使用一根或多根电线、电缆和/或印刷的电连接,以及通过使用电磁能(例如作为几个非限制性和非穷举性示例,具有在射频区域、微波区域和光学区域(可见光和不可见光)中的波长的电磁能),可以认为两个元件被“连接”或“耦合”在一起。

在任何情况下,应理解,本公开中示出的组件可以以各种形式的硬件、软件或其组合来实现,例如,专用集成电路(asic)、功能电路、图形处理单元、具有相关存储器的适当编程的通用数字计算机等。给定本文提供的本公开的教导,相关领域的普通技术人员将能够设想出本公开的组件的其他实现。

本文中使用的术语仅出于描述特定实施例的目的,并且不旨在限制本公开。如本文所使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外明确指出。还将理解,术语“包括”和/或“包含”,当他们在本说明书中使用时,指定存在所述特征、整数、步骤、操作、元件和/或组件,但不排除存在或其他功能、整数、步骤、操作、元件、组件和/或其组的添加。

已经出于说明的目的给出了各种实施例的描述,但并不意图是穷举性的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1