针对在可信执行环境中执行的可验证性的制作方法

文档序号:29464166发布日期:2022-04-02 02:45阅读:147来源:国知局
针对在可信执行环境中执行的可验证性的制作方法

1.本公开的实施例概括地涉及计算机技术领域,尤其涉及针对在可信执行环境(tee)中执行的可验证性的方法、设备、装置和计算机可读存储介质。


背景技术:

2.诸如云计算服务之类的远程计算服务为个人和公司提供场外机会。云服务的示例是云处理服务,其中用户被给与对计算机或计算平台处的处理器资源的访问,以用于数据处理。这例如在以下情况下可能是有用:在弱计算设备需要间歇地访问高性能计算,而获得实际的高性能计算硬件将是浪费的,因为硬件将大部分未使用,因为该需求仅仅是间歇的。
3.虽然有用,但是当数据被外包并且在云平台中被切换时存在一些安全性和隐私问题。云计算中的一个关键问题是由云平台提供的处理结果可能是不正确的。解决这个问题的一种方法是可验证计算。可验证计算用于在远程计算平台中检查计算的完整性和机密性。


技术实现要素:

4.总体上,本公开的示例实施例提供了用于在tee中的执行的可验证性的方案。
5.在第一方面,提供了一种第一装置。该第一装置包括:至少一个处理器;以及包括计算机程序代码的至少一个存储器;其中至少一个存储器和计算机程序代码被配置为与至少一个处理器一起使第一装置:向第二装置传输对任务的执行的请求,任务包括要被执行的多个功能;基于第二装置的至少一个可信执行环境中的预期执行计划,从多个功能的标识信息生成第一验证密钥;从第二装置接收针对任务的执行结果和第二验证密钥;以及通过比较第一验证密钥和第二验证密钥来确定执行结果的正确性。
6.在第二方面,提供了一种第二装置。该第二装置包括:至少一个处理器;以及包括计算机程序代码的至少一个存储器;其中至少一个存储器和计算机程序代码被配置为与至少一个处理器一起使第二装置:从第一装置接收对任务的执行的请求,任务包括要被执行的多个功能;基于执行计划,在至少一个可信执行环境中执行多个功能以获得针对任务的执行结果;基于执行计划,从多个功能的标识信息生成第二验证密钥;以及向第一装置传输执行结果和用于验证执行结果的正确性的第二验证密钥。
7.在第三方面,提供了一种方法。该方法包括:由第一装置并且向第二装置传输对任务的执行的请求,任务包括要被执行的多个功能;基于第二装置的至少一个可信执行环境中的预期执行计划,从多个功能的标识信息生成第一验证密钥;从第二装置接收针对任务的执行结果和第二验证密钥;以及通过比较第一验证密钥与第二验证密钥来确定执行结果的正确性。
8.在第四方面,提供了一种方法。该方法包括:由第二装置从第一装置接收对任务的执行的请求,任务包括要被执行的多个功能;基于执行计划,在至少一个可信执行环境中执行多个功能以获得针对任务的执行结果;基于执行计划,从多个功能的标识信息生成第二
验证密钥;以及向第一装置传输执行结果和用于验证执行结果的正确性的第二验证密钥。
9.在第五方面,提供了一种第一装置。该第一装置包括:用于向第二装置传输对任务的执行的请求的部件,任务包括要被执行的多个功能;用于基于第二装置的至少一个可信执行环境中的预期执行计划从多个功能的标识信息生成第一验证密钥的部件;用于从第二装置接收针对任务的执行结果和第二验证密钥的部件;以及用于通过比较第一验证密钥和第二验证密钥来确定执行结果的正确性的部件。
10.在第六方面,提供了一种第二装置。该第二装置包括:用于从第一装置接收对任务的执行的请求的部件,任务包括要被执行的多个功能;用于基于执行计划在至少一个可信执行环境中执行多个功能以获得针对任务的执行结果的部件;用于基于执行计划从多个功能的标识信息生成第二验证密钥的部件;以及用于向第一装置传输执行结果和用于验证执行结果的正确性的第二验证密钥的部件。
11.在第其方面,提供了一种非瞬态计算机可读介质,包括程序指令,程序指令用于使第一装置:向第二装置传输对任务的执行的请求,任务包括要被执行的多个功能;基于第二装置的至少一个可信执行环境中的预期执行计划,从多个功能的标识信息生成第一验证密钥;从第二装置接收针对任务的执行结果和第二验证密钥;以及通过比较第一验证密钥与第二验证密钥来确定执行结果的正确性。
12.在第八方面,提供了一种非瞬态计算机可读介质,包括程序指令,程序指令用于使第二装置:从第一装置接收对任务的执行的请求,任务包括要被执行的多个功能;基于执行计划,在至少一个可信执行环境中执行多个功能以获得针对任务的执行结果;基于执行计划,从多个功能的标识信息生成第二验证密钥;以及向第一装置传输执行结果和用于验证执行结果的正确性的第二验证密钥。
13.应当理解,发明内容部分无意标识本公开的实施例的关键或必要特征,也无意用于限制本公开的范围。通过以下描述,本公开的其他特征将变得容易理解。
附图说明
14.现在将参照附图描述一些示例实施例,其中:
15.图1示出了其中可以实现本公开的示例实施例的示例环境;
16.图2示出了示出根据本公开的一些示例实施例的用于可验证计算的过程的信令图;
17.图3示出了示出根据本公开的一些示例实施例的功能的执行顺序的改变的示例;
18.图4a至图4d示出了根据本公开的一些示例实施例的执行计划的一些示例;
19.图5a至图5c示出了根据本公开的一些示例实施例的用于在第二装置处生成针对给定功能的中间密钥的过程;
20.图6a和图6b示出了根据本公开的一些示例实施例的用于在第一装置处生成针对给定功能的中间密钥的过程;
21.图7示出了根据本公开的一些示例实施例的在请求要被执行的任务的装置处实现的示例方法的流程图;
22.图8示出了根据本公开的一些示例实施例的在执行所请求的任务的装置处实现的示例方法的流程图;
23.图9示出了适合于实现本公开的示例实施例的设备的简化框图;以及
24.图10示出了根据本公开的一些示例实施例的示例计算机可读介质的框图。
25.在所有附图中,相同或相似的附图标记表示相同或相似的元素。
具体实施方式
26.现在将参考一些示例实施例来描述本公开的原理。应当理解,描述这些实施例仅用于说明的目的,并帮助本领域技术人员理解和实现本公开,并不在于暗示对本公开的范围的任何限制。本文中描述的公开内容可以以除了下面描述的方式之外的各种方式来实现。
27.在以下描述和权利要求中,除非另外定义,否则本文使用的所有技术和科学术语具有与本公开所属领域的普通技术人员通常理解的相同含义。
28.本公开中对“一个实施例”,“实施例”,“示例实施例”等的引用表示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例不必都包括该特定的特征、结构或特性。此外,这些术语不一定指相同实施例。此外,当结合实施例描述特定特征、结构或特性时,主张的是结合其他实施例(无论是否明确描述)来使得此类特征、结构或特性落在本领域的技术人员的知识范围内。
29.应当理解,虽然在本文中术语“第一”和“第二”等可以用于描述各种元素,但这些元素不应受这些术语的限制。这些术语仅用于区分一个元素与另一元素。例如,第一元素可以被称为第二元素,并且类似地,在不脱离示例实施例的情况下,第二元素可以被称为第一元素。如本文所用,术语“和/或”包括一个或多个所列术语的任何和所有合并。
30.本文使用的术语仅用于描述特定实施例的目的,而无意限制示例实施例。如本文所用,单数形式“一”、“一个”和“该”也意在包括复数形式,除非上下文另外明确指出。还将理解,在本文中使用时术语“包括”、“包括有,“具有”,“具备”,“包含”和/或“包含有”指定特征、元素和/或组件等的存在,但不排除一个或多个其他特征、元素、组件和/或其合并存在或添加。
31.如本技术案中所使用,术语“电路系统”可指以下中的一项或多项或全部:
32.(a)纯硬件电路实现方式(诸如仅模拟和/或数字电路中的实现方式)以及
33.(b)硬件电路和软件的合并,诸如(如适用):
34.(i)(多个)模拟和/或数字硬件电路与软件/固件的合并,以及
35.(ii)具有软件的硬件处理器(包括(多个)数字信号处理器),软件和(多个)存储器的任何部分,它们一起工作以使诸如移动电话或服务器之类的部件执行各种功能,以及
36.(c)需要软件(例如,固件)来操作的(多个)硬件电路和/或(多个)处理器(例如,(多个)微处理器或(多个)微处理器的一部分),但在操作不需要时,可不存在软件。
37.电路系统的这个定义适用于本技术中这个术语的所有使用,包括在任何权利要求中。作为另一示例,如本技术中所使用,术语电路系统还涵盖仅硬件电路或处理器(或多个处理器)、或硬件电路或处理器的一部分及其(或其)伴随软件和/或固件的实施方案。例如且如果适用于特定权利要求元素的话,术语电路系统还涵盖用于移动设备的基带集成电路、或处理器集成电路、或服务器中、蜂窝式网络设备或其他计算或网络设备中的类似集成电路。
38.如本文所使用的,术语“云计算”是指基于网络的计算环境,其中共享计算资源、软件和信息像公用设施那样被按需提供给计算节点和其他设备。计算资源是可动态缩放的并且可经由诸如因特网等网络来访问。通常称为“云”的计算资源向用户提供一个或多个服务。这些服务可以根据服务类型进行分类,服务类型例如可以包括应用/软件、平台、基础设施、虚拟化以及服务器和数据存储。服务类型的名称通常前置于术语“即服务”,使得作为示例应用/软件和基础设施的递送可以分别被称为软件即服务(saas)和基础设施即服务(iaas)。云计算可以提供各种云服务,包括批量计算服务、流计算服务、数据处理和计算服务以及数据库服务。
39.如本文所使用的,术语“服务”是广泛且通用的术语,意在包括逻辑功能结构(诸如应用程序、可执行程序、操作系统等)的任何能力,以促进传递内容/数据,执行功能或以其他方式辅助另一设备、应用程序或服务。典型的服务提供方使用从公共或私有计算环境中消耗的计算资源来设计和提供其服务。作为一些示例,服务可以是任何类型的网络功能服务、web服务、身份管理服务、防火墙或其他安全服务、消息传递服务、数据存储或备份服务、文件维护服务、或可对计算环境的用户可用的任何其他服务。应当理解,可以设想与计算环境相关联或由其支持的其他服务。
40.术语“基于云的服务”或更简单地“云服务”不仅指在云计算环境中提供的服务,而且指的是一种形式的服务供应,其中云客户与云服务提供方签订合同以在线递送由云提供的服务。云服务提供方管理公共、私有或混合云,以促进向一个或多个云客户在线递送云服务。
41.示例环境
42.如前文所述,诸如云计算平台的远程平台中的计算可能引起一些安全和隐私问题。缓解这些问题的方法是使用由可信计算平台(tcp)提供的可信执行环境(tee)。
43.图1示出了其中可以实现本公开的示例实施例的示例环境100。环境100基于tcp。如图所示,用户112可以经由第一装置110请求在远程第二装置120处进行对任务的执行。
44.第一装置110可以包括或被实现为客户端计算机或计算系统。术语“客户端计算机”或“客户端计算系统”是指可用于执行被描述为由客户端计算机执行的功能的任何计算机、用户设备(ue)、嵌入式设备、移动设备或其他系统。第一装置110可以是任何类型的移动终端、固定终端或便携式终端,包括台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统(pcs)设备、个人导航设备、个人数字助理(pda)、或前述项的任何组合,包括这些设备的附件和外围设备或前述项的任何组合,还可以设想第一装置110可以支持到用户的任何类型的接口(诸如“可佩戴”电路等)。
45.第二装置120可以包括或被实现为计算设备/装置/节点/机器、计算设备/装置/节点/机器的集群、计算系统或计算平台。第二装置120的示例可以包括任何通用计算机、计算节点、服务器、主机、工作站或任何其他计算机。第二装置120可以作为计算环境的至少一部分被包括,以向第一装置110提供数据处理、存储、联网和/或任何其他功能。在一些示例实施例中,第二装置120可以形成云计算环境的至少一部分。
46.第二装置120实现tcp,该tcp被分成非可信区域122和包括一个或多个tee 124-1、124-2的可信区域(其中n是大于或等于1的整数),以提供各种服务、应用、功能等。为了便于讨论,在下文中tee 124-1、124-2、

124-n统称或单独地称为tee 124。tee 124提供一种机
制,通过该机制在受保护存储器区域内运行的用户可信代码向客户计算机认证它是在安全执行环境内运行的。
47.在一些实现中,第二装置120可以包括一个或多个安全启用处理器,其可通过将代码和数据与外部环境(包括操作系统和管理程序)中的特权软件和硬件进行隔离,来保护tee 124内的计算的完整性和机密性。因此,一旦tee 124被启动,特权代码和非可信区域122的其余部分不能直接读取驻留在受保护环境中的数据,或在无检测的情况下改变tee 124内的代码的行为。各种不同的tee可以被共同地或替换地使用。tee 124的一些示例可以包括由加利福尼亚州圣克拉拉的英特尔公司提供的新兴的软件防护扩展(software guard extension,sgx)、高级risc机器的信任区(advance risc machines,arm)架构、可信平台模块(trusted platform module,tpm)技术或任何其他安全执行技术。
48.在操作期间,第二装置120的一个或多个安全启用处理器可以执行认证(attestation)协议。在建立阶段,第一装置110可以向第二装置120发出远程认证,以协商用于加密第一装置110与第二装置120之间的后续通信的会话密钥。第一装置110然后可以提交对任务的执行的请求。基于会话密钥通过安全信道来将任务的数据传输到第二装置120。第一装置110与第二装置120之间的通信可以通过有线或无线网络进行。
49.第二装置120创建用于执行请求的一个或多个tee 124。通常,非可信区域122直接与第一装置110通信。此外,非可信区域122还可以负责tee 124的创建、调取/调用,并且甚至可以控制跨越不同tee 124分布的操作,并且因此可以控制这些功能在tee 124中被调用的顺序。tee 124中的执行结果可以被提供到非可信区域122以传输至第一装置110。在一些基于安全的实现中,利用tee 124的签名来签名从个体tee124提供给非可信区域122的数据(诸如执行结果)。此签名可以表征在创建tee 124时tee 124的内容和布局,并且在运行时间期间不会被修改。
50.在一些情况下,可以在tee 124之间交换数据。例如,当两个或多个tee 124一起工作以完成任务时,tee 124的中间结果可以被迁移到另一tee 124。在这些情况下,发生本地认证,以鉴定两个单独的tee 124。每个tee 124可以验证另一tee 124,以便确认它们都是可信的。一旦完成了本地认证,两个tee 124可以通过共享会话密钥来加密其间交换的信息,从而建立受保护会话。
51.应当理解,尽管本公开包括对云计算的描述,但本文所引用的教导的实现不限于云计算环境。而是,能够结合现在已知或以后开发的任何其他类型的计算环境来实现本发明的示例实施例。
52.注意,tcp和tee是本领域技术人员所熟知的。然而,术语tcp和tee的使用并无意将本公开的各方面仅限于符合用于实现tcp和tee的标准的一个或多个版本的设备或组件。而是,这些术语用作可根据本文所述主题的各方面使用的安全平台和组件的示例。在一些情况下,tee可以被称为“飞地(enclave)”。
53.不管tee提供的安全属性如何,在使用tee来实现具有可验证性的安全和私有保护计算中仍然存在一些缺点。因此,可以应用可验证计算来促进由远程tcp提供的验证执行结果是否可信。
54.工作原理和示例信令交互
55.根据本公开的一些示例实施例,提供了一种用于可验证计算的方案。在该方案中,
在第一装置请求第二装置来执行任务的情况下,第一装置基于第二装置的一个或多个tee中的各种功能的预期执行计划,从任务的这些功能的标识信息生成第一验证密钥。第二验证密钥也由第二装置基于tee中的那些功能的实际执行计划从相同的标识信息生成。第二装置向第一装置提供任务的执行结果和第二验证密钥。因此,第一装置可以通过比较所生成的第一验证密钥和接收到的第二验证密钥,来确定执行结果的正确性。以此方式,可以提供由远程设备返回的执行结果的正确性的可验证性,并且实现了安全、信任和隐私方面的高性能。该方案可以提供高通用性、并且可以适用于任何类型的任务处理、操作和计算。
56.下面将参考附图详细描述本公开的原理和示例实施例。现在参考图2,其示出了根据本公开的一些示例实施例的用于可验证计算的过程200的信令图。出于讨论的目的,将参考图1描述过程200。过程200可以包括第一装置110和第二装置120。
57.第一装置110向第二装置120传输205对任务的执行的请求。为了确保安全传输,第一装置110和第二装置120例如可以通过远程认证过程彼此协商,以共享用于加密在其间交换的信息的会话密钥。因此,可以使用会话密钥将对任务的执行的请求传输到第二装置120。在一些情况下,第一装置110还可以提供针对任务的输入数据。还可以使用会话密钥对输入数据进行加密,并将其与经加密的请求一起发送到第二装置120。经加密的请求和输入数据形成密文。在一些其他示例中,代替直接传输数据,第一装置110可以向第二装置120指示输入数据的存储位置,使得第二装置120可以从该存储位置获得用于执行任务的输入数据。在这种情况下,存储位置然后可以被加密并与请求一起被发送。
58.要被执行的任务可以是第一装置110委托第二装置120执行的任何类型的任务。任务的示例包括但不限于:数据处理、批量计算、流计算、数据存储等。通常,任务的完成包括多个功能的执行。第一装置110的用户112可以根据他/她的需求来选择或定义任务的功能。在一些示例中,这些功能可以被提供在计算环境中,对用户112公开以便选择。这些功能也可以由用户112定制或设计。
59.在接收到来自第一装置110的请求时,第二装置120可以使用会话密钥对该请求以及可能地对任务的输入数据进行解密。然后,第二装置120基于执行计划,在至少一个tee 124中执行210任务的多个功能,以获得执行结果。第二装置120可以首先创建一个或多个tee 124,例如取决于可用计算资源、当前工作负荷和/或其他因素。如果确定需要多于一个tee 124,则多个功能可以跨多于一个tee 124分布以用于执行。
60.执行计划指示在整个任务的实际执行期间多个功能如何在一个或多个tee 124中被执行。在一些示例实施例中,执行计划可以至少指示多个功能的执行顺序。在功能的执行期间,一个或多个功能可以接收要处理的任务的输入数据;一个功能可以接收一个或多个前序功能的执行结果以进一步处理;最后的功能的执行结果被作为任务的最终结果而提供。这些功能的执行顺序可以被表示为任意有向无环图(dag),其中dag中的节点表示各个功能,并且从一个节点到另一节点的有向边指示对应于该节点的功能将其结果作为输入提供给对应于另一节点的功能。
61.在整个任务的执行期间,第二装置120的非可信区域122可以控制多个功能在一个或多个tee 124中执行的顺序。通常,在请求中指定多个功能的正确执行顺序。在理想情况下,当调用将在tee 124中执行的那些功能时,非可信区域122将遵循这些功能的正确执行顺序。
62.在一些示例实施例中,执行计划可以还指示多个功能的分布跨越一个或多个所创建的tee 124。如果创建多个tee 124用于执行任务,则可以在一个tee 124中调用和执行一个或多个功能,而可以在另一tee 124中调用和执行一个或多个功能。在一个示例实施例中,非可信区域122确定可以在的哪一个tee 124中调用和执行哪一个功能。在另一示例实施例中,第一装置110例如可以通过如下来在请求中指定多个功能的分布:要求在单个tee 124中执行所有功能,或者通过要求在一个tee 124中执行一些功能并在一个或多个其他tee 124中执行其余功能。由于非可信区域122控制这些功能在一个或多个tee中的执行,在理想情况下,非可信区域122在执行任务时可以遵循功能的指定分布。
63.考虑到任务在第二装置120处的远程执行中发生的潜在威胁,期望支持任务的执行结果的可验证性,以便确保执行结果的机密性和完整性。在本公开的示例实施例中,为了支持可验证计算,第一装置110基于多个功能的预期执行计划来生成215第一验证密钥。第一验证密钥根据多个功能的标识信息来生成。功能的标识信息用于从当前任务的全部功能中至少唯一地标识此功能。可以以任何形式设置标识信息以标识功能。
64.预期执行计划可以从第一装置110侧指示期望由第二装置120如何执行多个功能。在一些示例实施例中,预期执行计划可以在对任务的执行的请求中指定的多个功能的正确执行顺序。在一些示例实施例中,预期执行计划还可以指示多个功能跨第二装置120的一个或多个tee 124的分布。在一个示例实施例中,在非可信区域122创建并且将这些功能指派给tee 124之后,第二装置120可以将关于跨越tee 124的分布的信息传输至第一装置110。在另一示例实施例中,第一装置110例如可以通过以下来在请求中指定多个功能跨一个或多个tee 124的分布:要求在单个tee 124内执行所有功能,或者要求在一个tee 124中执行一些功能而在另一tee 124中执行其余功能。
65.在远程侧,第二装置120还基于在一个或多个tee 124中实际遵循的多个功能的执行计划,来生成220第二验证密钥。第二验证密钥也根据多个功能的标识信息生成。由第一装置110和第二装置120所使用的功能的标识信息是相同的。该标识信息可以与请求一起由第一装置110提供,或者可以以其他方式预先配置。然后,第二装置120将针对任务的执行结果和第二验证密钥传输225至第一装置110。
66.在接收到执行结果和第二验证密钥时,第一装置110通过比较第一验证密钥和第二验证密钥来确定230执行结果的正确性。具体地,如果接收到的第二验证密钥与本地生成的第一验证密钥相同,则第一装置110确定执行结果是正确并且可信的。否则,如果第二验证密钥不同于本地生成的第一验证密钥,则第一装置110确定执行结果是不正确的。
67.第一验证密钥与第二验证密钥之间的差异可以指示第一装置110处的预期执行计划和第二装置120处执行的实际执行计划之间的差异。通过比较两个验证密钥,可以验证在第二装置120处的执行是否实际遵循任务的预期执行计划,并因此验证执行的正确性。实际执行计划与预期执行计划的偏差通常是由于在任务执行期间发生的攻击或恶意活动,这继而可能反映在这种情况下执行结果可能是非可信的。
68.使用(预期的)执行计划来生成用于验证执行结果正确性的验证密钥主要是基于发明人的如下观察,即在启用tee的计算环境(诸如第二装置120)中发生的潜在威胁主要涉及执行计划篡改(tamper)。为了更好地理解本公开的示例实施例,下面简要介绍这样的潜在威胁。
69.具体地,在tee的安全属性情况下,tee内的执行被认为是安全的,不仅tee初始化之前的静态代码块是安全的,而且所指派的一个或多个功能的实际执行过程也是安全的,这可以带来tee内部执行的机密性和完整性的提供。然而,计算环境不能提供在tee外部的执行的机密性和完整性。通常,控制功能在tee内部被调用的顺序的控制器应用被部署在tee外部的非可信区域中。因此,对非可信区域的攻击可以改变任务的一个或多个功能的顺序。这样的攻击被称为扰乱数据相关代码(disarranging data-related code,ddrc)攻击。由于非可信执行代码的完整性在操作期间通常没有被验证,因此启用tee的计算环境中的认证方案不能检测代码的扰乱,这使其易受攻击。
70.图3示出了示出根据本公开的一些示例实施例的功能的执行顺序的改变的示例。在这个示例中,假设一个任务包括两个功能,表示为f(
·
)和g(
·
),它们在tee中执行,并且在任务中要处理的输入数据表示为x。在图3(a)中,根据来自tee外部的非可信区域的调用,以正确的执行顺序310执行这两个功能,以输出执行结果z。如果非可信区域被攻击并且执行顺序310被改变为图3(b)中所示的执行顺序320,其中首先执行功能g(
·
)以处理输入数据x并产生结果y’,表示为g(x)

y’。然后调用并执行功能f(
·
)以处理结果y’并产生输出z’,表示为f(y’)

z’。输出z’很可能不同于正确的输出z。
71.其他潜在威胁可能包括tee输出篡改和输出错误路由。这些威胁可能发生在两个tee之间交换信息的情况下。关于输出篡改,如果第一tee内的功能的执行结果被传输到非可信区域,则攻击者或恶意应用程序可复制、消除并篡改该结果。然后,错误的结果可能被输入到第二tee用于后续处理。关于输出错误路由,攻击者或恶意应用程序也可将另一tee的结果而不是第一tee的结果路由到第二tee。此外,输入数据或对任务的执行的请求也可能被篡改或错误路由。所有这些攻击都可能导致任务的不正确最终结果。
72.鉴于上述情况,已经提出了基于在第一装置110(请求者)和第二装置120(执行者)处知晓的执行计划来生成用于在这两个设备处的验证的验证密钥。为了防御可能在启用tee的环境中发生的安全威胁,验证密钥可用于验证执行期间的任务的功能的执行顺序以及tee之间可能的数据路由(在将这些功能指派给多于一个tee的情况下)。
73.在一些示例实施例中,期望第一验证密钥和第二验证密钥可以指示执行期间的这些功能的执行顺序和/或数据路由;即,不同的执行顺序或数据路由中的改变可能导致不同的验证密钥。在一些其他示例实施例中,还期望第一装置110可以计算指示正确执行计划的验证密钥,而不必实际执行在远程侧执行的操作。将在以下示例实施例中详细描述第一验证密钥和第二验证密钥的生成。
74.在远程侧第二验证密钥的生成
75.现在描述在第二装置120处生成第二验证密钥的一些示例实施例。
76.在一些示例实施例中,在第二验证密钥的生成期间,可以为多个功能中的每个功能生成中间密钥。在执行对应功能的tee 124内生成中间密钥,这可以确保中间密钥的安全性和机密性。例如,中间密钥的生成操作可以被配置为功能的一部分,并且可以在tee中调用和执行该功能之后执行。当然,中间密钥的生成操作也可以被配置为独立可执行组件,并且可以由非可信区域122连同在tee 124中执行的相应功能一起调用。
77.在一些示例实施例中,为了指示任务的多个功能的执行顺序,按照执行顺序生成针对多个功能的中间密钥,其中至少按照执行顺序根据功能的前序功能的中间密钥来确定
功能的中间密钥。可以在tee 124中维护功能的中间密钥,该中间密钥可以被访问以用于后续功能的中间密钥的生成。在确定一个或多个tee 124中的所有中间密钥之后,可以基于针对最后功能生成的中间密钥来确定第二验证密钥。
78.在任务的多个功能中,对于任何给定功能,给定功能从其接收执行结果作为输入的功能被称为给定功能的前序功能,而给定功能向其输出执行结果的功能被称为给定功能的后继功能。给定功能可具有零个、一个或更多的前序功能,并且可具有零个、一个或更多的后继功能。特别地,执行顺序中的第一个功能不具有前序功能,而执行顺序中的最后功能具有零个后继功能。例如可以通过表示这些功能的执行顺序的dag来确定功能之间的执行关系。
79.给定功能的中间密钥的生成可以取决于各种因素。在一些示例实施例中,给定功能的中间密钥可以基于前序功能的数目(下文中有时称为“第一数目”)和后继功能的数目(下文中有时称为“第二数目”)来确定。也就是说,功能在执行顺序中的位置可以确定如何计算它的中间密钥。
80.在任务的多个功能被分布到两个或更多个tee 124执行的一些示例实施例中,在生成针对这些功能的中间密钥时也可以考虑跨tee 124的功能分布。具体地,在生成给定功能的中间密钥时,可以还确定给定功能的一个或多个前序功能(如果有的话)是否在与给定功能相同的tee 124中被执行,和/或给定功能的一个或多个后继功能(如果有的话)是否在与给定功能相同的tee 124中被执行。
81.在示例场景中生成针对功能的中间密钥
82.在通过根据执行计划生成中间密钥来生成第二验证密钥时,可以存在三个主要场景。首先,在相同tee 124中调用并执行所有功能。其次,这些功能被分布至两个或多个不同的tee 124用于执行。第三,两个或多个功能的执行顺序是可交换的,但一些其他功能的执行不可被交换。下面将讨论这些情况的一些示例以及这些示例中的中间密钥和最终第二验证密钥的生成。
83.在第一示例场景中,任务的多个功能在相同tee 124中顺序执行。图4a示出了这样的情况的示例,其中任务包括n个功能,并且这些功能被调用以在相同tee 124中顺序执行。对于表示为f
i-1
和fi的任何两个相邻功能,功能f
i-1
的中间密钥表示为h
i-1
。功能fi的中间密钥可以通过将其前序功能f
i-1
的中间密钥与当前功能fi的标识信息(表示为“tag
i”)连接来确定,即hi=h
i-1
||tagi,其中||表示连接操作。连接操作具有这样的特性:如果两个因子不同,则这两个因子的不同连接顺序可以导致不同的连接结果,这可以表示为:对于任何m0≠m1,m0||m1≠m1||m0。因此,所得到的功能的中间密钥可以指示前序功能的执行顺序。具有不同顺序的不同请求任务可以产生不同验证密钥以用于执行的验证。tee内连接操作的使用可以降低计算开销。
84.在一些示例实施例中,对于不具有前序功能的第一功能f1,其中间密钥例如可以被确定为它的标识信息,或者通过将随机数(表示为r)与标识信息连接,即h1=r||tag1来确定。该随机数可以是在第一验证密钥的生成(特别是在第一功能的中间密钥的生成)中使用的相同随机数。
85.随机数可以帮助防御重放攻击(replay attack)。在对操作中的不同任务的不同请求中,可以选择不同的随机数。在一些示例实施例中,随机数可以由第一装置110选择,并
且例如与对任务的执行的请求一起被传输到第二装置120。在一些示例实施例中,可以基于在任务中要被处理的输入数据来确定随机数,例如,通过向输入数据应用散列(hash)函数来确定随机数,表示为r=hash(d),其中d表示输入数据,而hash()表示散列函数。这里可以应用任何适当的散列函数。所生成的随机数可以唯一地标识输入数据,并且输入数据中的任何变化将产生不同的随机数。通过基于输入数据确定随机数,具有不同输入数据的相同请求可以导致不同的验证密钥。
86.在一些示例实施例中,对于不具有后继功能的最后功能fn,中间密钥可以通过连接其前序功能f
n-1
的中间密钥与当前功能fn的标识信息(即h
n-1
||tagn,并且向连接结果应用散列函数来确定,即,hn=hash(h
n-1
||tagn)。散列函数的应用可以减少要传送的信息量,并且可以产生针对被散列的信息(在这个示例中是h
n-1
||tagn)的唯一标识符。这样,信息中的任何变化都可能导致不同的散列值。
87.在图4a所示的示例场景中,所有功能通常可被划分为以下两类,其中利用不同的方法来计算这两类的中间密钥。第一类包括:类似于第一功能f1的一个或多个功能,其没有前序功能。第一类还包括其他功能fi(其中2≤i≤n-1,n是功能的总数目)。对于第一类中的功能,它们的中间密钥可以通过连接操作来确定。第二类包括:类似于最后功能fn的一个或多个功能,其没有后继功能。针对最后功能的中间密钥的生成可以涉及连接操作和散列操作。在一些示例实施例中,最后功能的中间密钥(即,hn=hash(h
n-1
||tagn))可以被用于确定任务的第二验证密钥。
88.在第二示例场景中,任务的多个功能在不同的tee 124中按顺序执行。在这种情况下,可能存在两个相邻功能在不同tee 124中执行。在图4b所示的示例中,任务包括在两个tee(即tee 124-1和tee 124-2)中执行的n个功能。在此示例中,两个相邻功能fk和f
k+1
分别在tee 124-1和tee 124-2中执行。作为功能f
k+1
的前序功能,功能fk的执行结果将从tee 124-1被传递到tee 124-2。
89.针对功能fk之前的功能的中间密钥的计算可以类似于以上关于图4a所描述的情况。在一些示例实施例中,为了计算针对功能fk的中间密钥,可以将其前序功能f
k-1
的中间密钥h
k-1
和功能fk的标识信息tagk连接为h
k-1
||tagk,然后可以向连接结果应用散列函数,以获得hash(h
k-1
||tagk)。在一些示例实施例中,基于功能fk的执行结果(其作为功能fk的输入被提供给tee 124-2),进一步转换散列值hash(h
k-1
||tagk),然后获得针对功能fk的中间密钥hk。在一个示例实施例中,可以通过应用xor运算来执行转换,即,其中result
fk
表示在tee 124-1中生成的功能fk的执行结果,并且表示xor运算。中间密钥hk例如可以经由安全信道从tee 124-1传递到tee 124-2,用于计算功能f
k+1
的中间密钥。
90.功能fk的执行结果还被提供给tee 124-2作为功能f
k+1
的输入。如前文所述,由于一些潜在的攻击,在tee 124-2处接收到的实际结果可能是来自功能fk的结果的篡改版本或其他数据的错误路由版本。在tee 124-2中实际获得的前序功能fk的执行结果可以表示为result’fk
。在一些示例实施例中,在执行功能f
k+1
之后,可以通过基于所获得的result’fk
转换功能fk的中间密钥hk,来生成针对功能f
k+1
的中间密钥h
k+1
。例如,可以通过向结果result’fk
应用散列函数,然后执行中间密钥hk和经散列的结果hash(result’fk
)之间的xor
运算来执行转换,即然后,通过连接xor运算的结果与功能f
k+1
的标识信息tag
k+1
来生成中间密钥h
k+1
,即
91.这里利用的xor运算利用以下属性,即,对于任何m0和m1,,根据该属性,如果在tee 124-2中获得的功能fk的执行结果result’fk
等于在tee 124-1中生成的功能fk的执行的正确结果result
fk
,则功能f
k+1
的中间密钥h
k+1
可以重写为如下。
[0092][0093]
从上式(1)可以看出,hash(result’fk
)抵消hash(result’fk
),因此可以从所得到的第二验证密钥中抵消在功能之间交换的结果的影响。如果结果result’fk
不同于正确结果result
fk
,这潜在地指示结果result
fk
是错误且非可信的,则中间密钥hk不同于在两个相等结果的情况下计算得到的密钥,继而所得到的第二验证密钥是不同的。借助于在第二装置120处利用的xor运算的上述属性,可以在不需要在tee之间交换中间结果的情况下在第一装置110处计算第一验证密钥,并且第一验证密钥被用于通过与第二验证密钥进行比较来检查执行计划是否被正确地执行。在没有任何攻击的理想条件下,第一验证密钥和第二验证密钥将是相同的。否则,tee 124之间交换的结果的任何改变将导致这两个验证密钥之间的差异。
[0094]
在图4b中,功能f
k+1
的后继功能都在相同tee 124-2中,并且因此它们的中间密钥可以以与以上关于图4a所描述情况类似的方式来确定。在一些示例实施例中,最后功能的中间密钥,即hn=hash(h
n-1
||tagn),可以被确定为任务的第二验证密钥,或者可以被进一步处理以确定第二验证密钥。
[0095]
在图4b所示的示例场景中,所有功能通常可以被划分为以下四个类别,其中不同的方法被利用来计算不同类别中的中间密钥。四个类别包括与图4a的示例场景中相同的两个类别。第三类包括:类似于功能fk的一个或多个功能,其具有一个前序功能在与其相同tee(所示示例中的tee 124-1)中,并且具有一个或多个后继功能在其他tee(所示示例中的tee 124-2)中。第四类包括:类似于功能f
k+1
的一个或多个功能,其具有一个前序功能在其他tee(所示示例中的tee 124-1)中,并且具有一个或多个后继功能在与其相同的tee(所示示例中的tee 124-2)中。在图4b的示例中,如果功能f
k+1
是任务的最后功能,则应用另一散列函数来生成针对功能f
k+1
的中间密钥,例如,例如,
[0096]
在另一示例场景中,在多个功能中一些功能是可交换的,而不会导致不正确的结果。这在诸如批处理计算、流计算等的分布式计算的许多情况中是常见的。图4c示出了这种情况的示例,其中任务包括n个功能,这些功能被调用以在相同tee 124中执行。在n个功能中,功能f
i-2
和f
i-1
两者都是功能fi的前序功能。交换功能f
i-2
和f
i-1
的执行顺序将不会导致功能fi的错误执行结果。因此,可以允许交换此类功能,这意味着这些功能的执行顺序是可交换的。当这些功能的执行顺序改变时,验证密钥可以保持不变。
[0097]
在一些示例实施例中,当计算一个功能的中间密钥并且该功能具有顺序可交换的前序功能时,应用二进制运算,其满足交换定律(commutative law)。在一个示例中,为了计算针对功能fi的中间密钥hi,例如经由二进制运算将功能f
i-2
和f
i-1
的中间密钥合并在一起。这样,无论首先调用和执行功能f
i-2
和f
i-1
中的哪一个,都不会改变功能fi的中间密钥。然后将合并结果与功能fi的标识信息tagi连接以生成中间密钥hi,即hi=(∑
khk
)||tagi(在所示示例中,hi=((h
i-2
+h
i-1
)||tagi))。
[0098]
可以理解,图4c所示的可交换顺序功能仅仅是一个示例。取决于不同任务的执行计划,可以存在各种其他可交换结构。
[0099]
图4d示出了基于上述示例场景的混合示例,其中任务的六个功能被分布用于跨三个tee 124(即tee 124-1,tee 124-2和tee 124-3)执行。功能f1、f2和f4在相同的tee 124-1中执行,f3在tee 124-2中执行,f5和f6在相同tee 124-3中执行。中间密钥h1到h6被提供在图4d中,其中result
f3
和result
f4
分别表示功能f3和f4的实际执行结果,而result’f3
和result’f4
分别表示在tee 124-1和tee 124-3中接收到的功能f3和f4的执行结果。
[0100]
针对最后功能f6的中间密钥h6可以表示所有六个功能的总体执行计划/路径,并且可以被认为是图4d的示例中的任务的第二验证密钥。中间密钥h6的扩展可以被提供为如下:
[0101][0102]
如果result
f3
等于result’f3
并且result
f4
等于result’f4
,则由于xor运算的属性,式(2)中的中间密钥h6可以表示为:
[0103]
h6=hash(hash(((r||tag1)||tag2)+hash(r||tag3))||tag4)||tag5)||tag6)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
式(3)
[0105]
用于生成中间密钥的过程
[0106]
上面已经描述了用于任务的执行计划的一些不同情况。对于给定任务的多个功能中的任何给定功能,可以根据诸如给定功能的前序功能和后继功能的数目和分布之类的因素来确定中间密钥。如前文所述,功能的中间密钥的生成可以作为功能的一部分被合并,并且可以在tee中调用和执行该功能之后执行。
[0107]
在一些示例实施例中,对于给定功能,可以至少从给定功能的标识信息以及可能地从前序功能的随机数或中间密钥来确定验证信息。验证信息的生成可以基于前序功能的数目(零、一或大于一)。验证信息还可以用于基于后继功能的数目(零、一或大于一)生成针对给定功能的中间密钥。
[0108]
在一些示例实施例中,为了防御输出篡改和/或错误路由攻击,在确定验证信息和从验证信息确定中间密钥时,还考虑给定功能的一个或多个前序功能和一个或多个后继功能是否在与给定功能相同的tee中执行。
[0109]
图5a、图5b和图5c示出了根据本公开的一些示例实施例的用于生成给定功能的中间密钥的过程500、505和515。给定功能可以是在第二装置120中执行的任务的多个功能中的任何功能。针对多个功能的中间密钥可以根据图5a至图5c所示的过程按照执行顺序来确定。在一些示例实施例中,过程500、505和515可以由第二装置120执行,并且更具体地,在第二装置120的tee中执行。在以下描述中,从第二装置120的角度描述过程500、505和515。
[0110]
在一些示例实施例中,过程500、505和515可以被执行,以在相应的功能(例如由非可信区域122)被调用到tee 124中并且已在tee 124中执行之后生成针对该功能的中间密钥。在过程500、505和515中,为其生成中间密钥的功能被称为“当前功能”。
[0111]
在框502,第二装置120确定当前功能是否具有一个或多个前序功能。如果确定当前功能不具有前序功能,这指示当前功能可以接收要被处理的任务的输入数据,则第二装置120在框516处根据当前功能的标识信息(表示为“tag”)并且可能还根据随机数(表示为“r”)来确定针对当前功能的验证信息(表示为“ret”)。在一个示例实施例中,可以通过将随机数和标识信息连接来确定验证信息,即ret=r||tag。
[0112]
如果在框502处确定当前功能具有一个或多个前序功能,则在框504处,第二装置120确定前序功能的数目是否等于1。如果当前功能仅具有一个前序功能,则在框506,第二装置120确定该前序功能是否已经在与当前功能相同的tee 124中执行。
[0113]
在框508,如果前序功能已经在相同tee 124中执行,则第二装置120从针对前序功能的中间密钥(表示为“h
pre”)和当前功能的标识信息生成针对当前功能的验证信息。在一个示例实施例中,可以通过将针对前序功能的中间密钥与当前功能的标识信息连接,来确定验证信息,即ret=h
pre
.||tag。
[0114]
在框510,如果前序功能已经在与当前功能的tee 124不同的tee 124中执行,则第二装置120从针对前序功能的中间密钥、当前功能的标识信息和在当前功能的tee 124中获得的前序功能的执行结果(表示为“result
pre.”),生成验证信息。在一个示例实施例中,可以通过以下来确定验证信息:向所获得的前序功能的执行结果应用散列函数,即hash(result
pre.
),基于经散列的结果转换针对前序功能的中间密钥,然后连接转换的中间密钥与当前功能的标识信息。可以通过执行针对前序功能的中间密钥与经散列的结果之间的xor运算,来执行针对前序功能的中间密钥的转换,即在该示例中,针对当前功能的验证信息可以被确定为
[0115]
在一些示例实施例中,如果前序功能的数目不等于1而是大于1,则第二装置120可以进一步确定:多个前序功能是否已经在与当前功能的相同的tee 124中执行,所有多个前序功能是否已经在与当前功能的不同的一个或更多tee 124中执行,或者是否某些前序功能在相同tee 124中执行而某些其他前序功能在一个或更多的不同tee 124中执行。可以以任何顺序执行关于这三种情况的确定,并且图5a和图5b仅仅示出了一个示例。
[0116]
具体地,在框512,第二装置120确定当前功能的所有多个前序功能是否已在与当前功能相同的tee 124中执行。如果所有前序功能已经在相同tee 124中执行,则在框514,第二装置120从针对多个前序功能的中间密钥和当前功能的标识信息生成针对当前功能的验证信息。在一个示例实施例中,为了生成验证信息,可以合并多个前序功能的中间密钥以获得合并中间密钥(即),其中n是在相同tee中执行的前序功能的数目,并且
表示第i个前序功能的中间密钥。然后,可以连接合并中间密钥与当前功能的标识信息,即,
[0117]
如果在框512处确定不是当前功能的所有多个前序功能都在与当前功能的tee214相同的tee214中执行,则在过程505中的框518处,第二装置120确定是否所有前序功能已经在与当前功能的tee 124不同的一个或多个tee 124中执行。如果确定所有的前序功能已经在与当前功能的tee 124不同的一个或多个tee 124中执行,则在框520,第二装置120从针对多个前序功能的中间密钥、当前功能的标识信息和在当前功能的tee 124中获得的多个前序功能的执行结果来生成当前功能的验证信息。
[0118]
在一个示例实施例中,对于多个前序功能中的每个前序功能,向在执行当前功能的tee 124中获得的该前序功能的执行结果(表示为)应用散列函数,并且例如通过执行针对前序功能的中间密钥与经散列的结果之间的xor运算,来转换前序功能的中间密钥(表示为),即例如,通过聚合(求和)所转换的所有中间密钥,可以将多个前序功能的经转换的中间密钥连接在一起,以获得合并中间密钥。然后,合并中间密钥和当前功能的标识信息可以被连接在一起,以获得针对当前功能的验证信息,即其中m表示在与当前功能不同的tee 124中执行的前序功能的数目。
[0119]
如果在框518处的结果为否,这意味着存在:在与当前功能相同的tee 124中执行的一个或多个前序功能以及在与当前功能不同的至少一个tee 124中执行的一个或多个其他前序功能,则第二装置120从针对多个前序功能的中间密钥、当前功能的标识信息以及在至少一个不同tee 124中执行的一个或多个前序功能的执行所获得的结果,来确定当前功能的验证信息。
[0120]
更具体地,在框522,对于在不同tee 124中执行的每个前序功能,第二装置120基于在tee中获得的前序功能的执行结果来转换前序功能的中间密钥,以获得经转换的中间密钥(表示为)。在一个示例实施例中,第二装置120可以向前序功能的执行结果应用散列函数,以获得经散列的结果,然后执行前序功能的中间密钥与经散列的结果之间的xor运算,以获得经转换的中间密钥,即
[0121]
在框524,第二装置120基于经转换的中间密钥和当前功能的标识信息来确定针对当前功能的验证信息。第二装置120可以合并针对在相同tee 124中执行的一个或更多前序功能的中间密钥与针对在不同tee124中执行的一个或更多前序功能的经转换的中间密钥,以获得合并中间密钥。也就是说,合并中间密钥可以被确定为其中m表示在不同tee中执行的一个或多个前序功能的数目,n表示在相同tee中执行的一个或多个前序功能的数目,并且m和n是大于或等于1的整数。可以连接合并中间密钥可以与当前功能的标识信息,以获得当前功能的验证信息,例如
[0122]
在一些示例实施例中,一旦在框508、510、514、516、520或524处确定出针对当前功能的验证信息(即ret),第二装置120还可以在过程515中基于后继功能的数目和验证信息来生成针对当前功能的中间密钥。在框526,第二装置120确定当前功能是否具有任何一个或多个后继功能。如果确定当前功能不具有后继功能,则第二装置120在框534处通过向在过程500或505中确定的验证信息ret应用散列函数,来确定针对当前功能的中间密钥(表示为“h”),即h=hash(ret)。
[0123]
如果在框526确定当前功能具有一个或多个后继功能,则在框528,第二装置120还确定后继功能是否在与当前功能相同的tee 124中执行。如果第二装置120确定后继功能不是在相同的tee 124中执行,而是在与当前功能的tee 124不同的tee 124中执行,则在框530,第二装置120基于验证信息和当前功能的执行结果(result
current
)来确定针对当前功能的中间密钥。在一个示例实施例中,第二装置120可以向验证信息应用散列函数以获得散列信息,表示为hash(ret),并且向当前功能的执行结果应用散列函数,以获得经散列的结果,表示为hash(result
current
)。可以从经散列的信息和经散列的结果生成针对当前功能的中间密钥。在一个示例中,执行经散列的信息与经散列的结果之间的xor运算,以获得针对当前功能的中间密钥,即
[0124]
在框532,如果确定后继功能与当前功能在相同的tee 124中,则第二装置120可以将在过程500或505中确定的验证信息ret确定为针对当前功能的中间密钥(表示为“h”),即h=ret。
[0125]
在一些示例实施例中,如果当前功能具有多于一个后继功能,则对于每个后继功能,执行框528、530和532处的操作,以生成将要从当前功能传送到后继功能的中间密钥。
[0126]
对于在第二装置120中执行的任务的所有多个功能中的每个功能,可以在已经执行该功能之后,按执行顺序来执行过程500、505和515。为最后功能生成的中间密钥可以用于确定第二验证密钥。第二验证密钥可以被直接确定为针对最后功能的中间密钥,或者第二验证密钥可以通过对针对最后功能的中间密钥应用另外的运算(诸如散列运算)来确定。
[0127]
第二验证密钥可以由第二装置120经由安全信道来提供给第一装置110。在一些示例实施例中,可以用tee签名来签名在tee 124中生成的第二验证密钥,然后由在第一装置110和第二装置120之间协商的会话密钥来加密。在接收到密文时,第一装置110可以使用会话密钥对其解密,并且例如通过调用在支持tee的体系结构中提供的签名验证算法来验证tee签名的有效性。在验证有效性之后,第一装置110可以使用第二验证密钥来检查任务执行的正确性。
[0128]
在终端侧的第一验证密钥的生成
[0129]
上面已经讨论了生成第二验证密钥的一些示例实施例。现在将还讨论在第一装置110处生成第一验证密钥的一些示例实施例。如前文所述,根据预期执行计划生成第一验证密钥。预期执行计划可以反映如上参考图4a至图4d所述的类似示例场景。
[0130]
类似于第二验证密钥的生成,在一些示例实施例中,在第一验证密钥的生成期间,可以生成针对多个功能中的每个功能的中间密钥。针对多个功能的中间密钥按执行顺序生成,其中针对功能的中间密钥至少基于在执行顺序中该功能的前序功能的中间密钥来确定。
[0131]
在第一装置处针对给定功能的中间密钥的生成还可以取决于前序功能的数目和后继功能的数目。在任务的多个功能被分布到两个或更多tee 124以执行的一些示例实施例中,在生成针对这些功能的中间密钥时也可以考虑这些功能跨tee 124的分布。如前文所述,这样的分布信息可以在功能被指派给tee 124之后从第二装置120提供,或者可以由第一装置110指定并作为请求提供给第二装置120。在从第二装置接收分布信息的情况下,可以在接收到该信息之后执行第一验证密钥的生成。
[0132]
在一些示例实施例中,对于给定功能,可以至少从给定功能的标识信息以及可能地从前序功能的随机数或中间密钥来确定验证信息。验证信息的生成可以基于前序功能的数目(零、一或大于一)。验证信息还可以被用于基于后继功能的数目(零、一或大于一)来生成针对给定功能的中间密钥。
[0133]
在一些示例实施例中,为了遵循在生成第二验证密钥时用于防御输出篡改和/或错误路由攻击进行的特殊处理,在确定验证信息和从验证信息确定中间密钥时还考虑给定功能的一个或多个后继功能是否在与给定功能相同的tee中执行。
[0134]
图6a和图6b示出了根据本公开的一些示例实施例的用于在第一装置110处生成针对当前功能的中间密钥的过程600和605。当前功能可以是由第一装置110请求的任务的多个功能中的任何功能。可以根据图6a-6b中所示的过程,按执行顺序来确定针对多个功能的中间密钥。在一些示例实施例中,过程600和605可以由第一装置110执行。在以下描述中,从第一装置110的角度描述过程600和605。在过程600和605中,针对其来生成中间密钥的功能被称为“当前功能”。
[0135]
在框602,第一装置110确定当前功能是否具有一个或多个前序功能。如果确定当前功能不具有前序功能,这指示当前功能可以接收要被处理的任务的输入数据,则第一装置110在框610处根据当前功能的标识信息(表示为“tag”)并且可能还根据随机数(表示为“r”)来确定针对当前功能的验证信息(表示为“ret”)。在一个示例实施例中,可以通过连接随机数和标识信息来确定验证信息,即ret=r||tag。
[0136]
如果在框602处确定当前功能具有一个或多个前序功能,则在框604处,第一装置110确定前序功能的数目是否等于1。如果当前功能仅具有一个前序功能,则在框606,第一装置110基于针对前序功能的中间密钥(表示为“h
pre.”)和标识信息来确定针对当前功能的验证信息。在一个示例实施例中,可以通过将针对前序功能的中间密钥与当前功能的标识信息连接,来确定验证信息,即ret=h
pre.
||tag。
[0137]
在一些示例实施例中,如果前序功能的数目不等于1而是大于1,则在框608,第一装置110基于针对多个前序功能的中间密钥和当前功能的标识信息来确定当前功能的验证信息。在一个示例实施例中,为了生成验证信息,可以合并多个前序功能的中间密钥以获得合并中间密钥(即),其中p为当前功能的前序功能的数目并且为大于一的整数,并且表示针对第i个前序功能的中间密钥。然后,可以连接合并中间密钥与当前功能的标识信息,以获得当前功能的验证信息,即
[0138]
在一些示例实施例中,一旦在框606、608或610处确定当前功能的验证信息ret,第一装置110还可以在过程605中基于后继功能的数目和验证信息来生成针对当前功能的中
间密钥。在框612,第一装置110确定当前功能是否具有任何一个或多个后继功能。如果确定当前功能不具有后继功能,则第一装置110在框622处通过将散列函数应用于在框606、608或610处确定的验证信息ret来确定针对当前功能的中间密钥(表示为“h”),即h=hash(ret)。
[0139]
如果在框612确定当前功能具有一个或多个后继功能,则在框614,第一装置110还确定后继功能是否在与当前功能相同的tee 124中执行。如果第一装置110确定后继功能不是在相同tee 124中执行,而是在与当前功能的tee 124不同的tee 124中执行,则在框618,第一装置110通过向在过程600中确定的验证信息ret应用散列函数,来确定针对当前功能的中间密钥,即h=hash(ret)。
[0140]
如果第一装置110确定后继功能与当前功能在相同的tee 124中,则在框620,第一装置110可以将在过程600中确定的验证信息ret确定为针对当前功能的中间密钥(表示为“h”),即h=ret。
[0141]
在一些示例实施例中,如果当前功能具有多于一个后继功能,则对于每个后继功能,执行框614、618和620处的操作以生成从当前功能将被传送到后继功能的中间密钥。
[0142]
对于任务的所有多个功能中的每个功能,可以由第一装置110按执行顺序执行过程600和605。为最后功能生成的中间密钥可以用于确定第一验证密钥。第一验证密钥可以被直接确定为针对最后功能的中间密钥,或者第一验证密钥可以通过对针对最后功能的中间密钥应用另外的运算(诸如散列运算)来确定。可以比较第一验证密钥与第二验证密钥,以验证任务执行的正确性。
[0143]
根据本公开的各种示例实施例,可以实现对外包(outsourced)执行结果的正确性的可验证性,同时保持tee中的数据隐私。所提出的验证方案可以验证tee中的功能的执行顺序和/或实际的功能输入是否等于正确的或期望的执行顺序和输入。在一些示例实施例中,引入随机数可以有助于抵抗重放攻击。此外,可验证计算是高效的。在一个方面,验证密钥的生成和提供可以以明文来实现,这比基于密文的方案更为有效。在另一方面,tee内的验证密钥生成阶段可能仅需要一些连接计算和散列函数,这两者在计算上都是非常高效的。此外,应用散列函数来压缩中间结果以降低计算和存储开销,这使得通信有效。
[0144]
在生成第一验证密钥和第二验证密钥期间,散列函数被应用于某些信息/数据以生成唯一标识符。散列函数的应用可以减少计算开销。在生成第一验证密钥或第二验证密钥时,用于计算随机数和用于任务的功能的一个或多个中间密钥的散列函数可以相同或不同。在第二装置120和第一装置110处使用相同的散列函数来为任务的功能计算相应的随机数和中间密钥。应当理解,在其他示例实施例中,代替使用散列函数,这里也可以应用可用于为某些信息/数据生成唯一标识符的任何其他函数。
[0145]
应当理解,虽然以特定顺序描绘图5a至图5c和图6a至图6b中的过程中的操作,但这不应被理解为要求这些操作以所示的特定顺序或按串行顺序执行,或者要求执行所有示出的操作以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。
[0146]
示例过程
[0147]
图7示出了根据本公开的一些示例实施例的在请求要被执行的任务的装置处实现的示例方法700的流程图。该设备可以是图1中的第一装置110。为了讨论的目的,将参考图1从第一装置110的角度描述方法700。
[0148]
在框710,第一装置110向第二装置120传输对任务的执行的请求。该任务包括要被执行的多个功能。在框720,第一装置110基于第二装置的至少一个可信执行环境中的预期执行计划,从多个功能的标识信息生成第一验证密钥。在框730,第一装置110从第二装置接收针对任务的执行结果和第二验证密钥。在框740,第一装置110通过比较第一验证密钥和第二验证密钥来确定执行结果的正确性。
[0149]
在一些示例实施例中,预期执行计划至少指示多个功能的执行顺序。在一些示例实施例中,生成第一验证密钥包括:按照执行顺序生成针对多个功能的中间密钥,针对功能的中间密钥至少基于按照执行顺序的功能的前序功能的中间密钥来确定;以及基于针对多个功能中的最后功能的所生成的中间密钥,确定第一验证密钥。
[0150]
在一些示例实施例中,生成中间密钥包括:对于多个功能中的给定功能,确定在执行顺序中针对给定功能的前序功能的第一数目和针对给定功能的后继功能的第二数目;基于第一数目生成针对给定功能的验证信息;以及基于第二数目和验证信息,生成针对给定功能的中间密钥。
[0151]
在一些示例实施例中,生成验证信息包括:响应于第一数目指示一个前序功能,通过连接针对一个前序功能的中间密钥和给定功能的标识信息,来生成验证信息。
[0152]
在一些示例实施例中,生成该验证信息包括:响应于第一数目指示多个前序功能,通过以下来生成针对给定功能的验证信息:合并针对多个前序功能的中间密钥以获得合并中间密钥,以及连接合并中间密钥与给定功能的标识信息。
[0153]
在一些示例实施例中,生成验证信息包括:响应于第一数目指示零个前序功能,通过连接随机数和给定功能的标识信息来生成验证信息,随机数也用于第二验证密钥的生成。
[0154]
在一些示例实施例中,该方法还包括:通过向任务中要被处理的输入数据应用散列函数来生成随机数。
[0155]
在一些示例实施例中,基于第二数目和验证信息生成中间密钥包括:响应于第二数目指示零个后继功能,通过向验证信息应用散列函数来生成针对给定功能的中间密钥。
[0156]
在一些示例实施例中,预期执行计划还指示多个功能跨至少一个可信执行环境的分布。在一些示例实施例中,基于第二数目和验证信息来生成针对给定功能的中间密钥包括:响应于第二数目指示至少一个后继功能,基于预期执行计划确定至少一个后继功能是否在与给定功能的可信执行环境不同的可信执行环境中被执行;响应于确定至少一个后继功能在与给定功能的可信执行环境不同的可信执行环境中被执行,通过向验证信息应用散列函数来生成针对给定功能的中间密钥;以及响应于确定至少一个后继功能在与给定功能的可信执行环境相同的可信执行环境中被执行,将验证信息确定为针对给定功能的中间密钥。
[0157]
在一些示例实施例中,确定执行结果的正确性包括:响应于第二验证密钥与第一验证密钥相同,确定执行结果是正确的;以及响应于第二验证密钥不同于第一验证密钥,确定执行结果是不正确的。
[0158]
图8示出了根据本公开的一些示例实施例的在执行所请求的任务的装置处实现的示例方法800的流程图。该设备可以是图1中的第二装置120。为了讨论的目的,将参考图1从第二装置120的角度描述方法800。
[0159]
在框810,第二装置120从第一装置110接收对任务的执行的请求,该任务包括要被执行的多个功能。在框820,第二装置120基于执行计划,在至少一个可信执行环境中执行多个功能以获得针对任务的执行结果。在框830,第二装置120基于执行计划,从多个功能的标识信息生成第二验证密钥。在框840,第二装置120向第一装置110传输执行结果和用于验证执行结果的正确性的第二验证密钥。
[0160]
在一些示例实施例中,执行计划至少指示多个功能的执行顺序。在一些示例实施例中,生成第二证实密钥包括:按照执行顺序生成多个功能的中间密钥,针对功能的中间密钥至少基于按照执行顺序的功能的前序功能的中间密钥来确定;以及基于针对多个功能中的最后功能所生成的中间密钥,确定第二验证密钥。
[0161]
在一些示例实施例中,生成针对多个功能的中间密钥包括:在至少一个可信执行环境内生成针对多个功能的中间密钥。
[0162]
在一些示例实施例中,生成中间密钥包括:对于多个功能中的给定功能,确定在执行顺序中针对给定功能的前序功能的第一数目和针对给定功能的后继功能的第二数目;基于前序功能的第一数目生成针对给定功能的验证信息;以及基于第二数目和验证信息生成针对给定功能的中间密钥。
[0163]
在一些示例实施例中,生成验证信息包括:响应于第一数目指示零个前序功能,通过连接随机数和给定功能的标识信息来生成验证信息,随机数还由第一装置使用以用于生成第一验证密钥。
[0164]
在一些示例实施例中,随机数是通过向任务中要被处理的输入数据应用散列函数来生成的。
[0165]
在一些示例实施例中,预期执行计划还指示多个功能跨至少一个可信执行环境的分布。在一些示例实施例中,生成验证信息包括:响应于第一数目指示给定功能的至少一个前序功能,基于执行计划确定至少一个前序功能和给定功能是否在与给定功能的可信执行环境相同的可信执行环境中被执行;以及基于第一数目和确定的结果,生成验证信息。
[0166]
在一些示例实施例中,基于第一数目和确定的结果来生成验证信息包括:响应于第一数目指示一个前序功能并且响应于确定前序功能与给定功能在相同可信执行环境中被执行,通过连接针对前序功能的中间密钥与给定功能的标识信息来生成验证信息;以及响应于第一数目指示一个前序功能并且响应于确定前序功能和给定功能在不同可信执行环境中被执行,通过以下来确定验证信息:向在给定功能被执行的可信执行环境中获得的前序功能的执行结果应用散列函数,以获得经散列的结果;基于经散列的结果来转换针对前序功能的中间密钥,以及连接经转换的中间密钥和给定功能的标识信息。
[0167]
在一些示例实施例中,基于经散列的结果转换前序功能的中间密钥包括:执行针对前序功能的中间密钥与经散列的结果之间的xor运算。。
[0168]
在一些示例实施例中,基于第一数目和确定的结果生成验证信息包括:响应于第一数目指示多个前序功能并且响应于确定多个前序功能在与给定功能的可信执行环境相同的可信执行环境中被执行,通过以下来生成验证信息:合并多个前序功能的中间密钥以获得合并中间密钥,以及连接合并中间密钥和给定功能的标识信息。
[0169]
在一些示例实施例中,基于第一数目和确定的结果生成验证信息包括:响应于第一数目指示多个前序功能并且响应于确定多个前序功能在与给定功能的可信执行环境不
同的可信执行环境中被执行,通过以下来生成验证信息:针对多个前序功能中的给定前序功能,向在给定功能被执行的可信执行环境中获得的前序功能的执行结果应用散列函数,以获得经散列的结果;基于经散列的结果转换针对给定前序功能的中间密钥,以及合并针对多个前序功能的经转换的中间密钥,以获得合并中间密钥,以及连接合并中间密钥与给定功能的标识信息。
[0170]
在一些示例实施例中,基于第一数目和确定的结果生成验证信息包括:响应于第一数目指示多个前序功能并且响应于确定多个前序功能中的至少一个第一前序功能和给定节点在相同可信执行环境中被执行、并且多个前序功能中的至少一个第二前序功能在与给定功能的可信执行环境不同的可信执行环境中被执行,通过以下来确定验证信息:基于在给定功能被执行的可信执行环境中获得的至少一个第二前序功能的执行结果,转换针对至少一个第二前序功能的中间密钥,合并针对至少一个第一前序功能的中间密钥和经转换的中间密钥,以获得合并中间密钥,以及连接合并中间密钥与给定功能的标识信息。
[0171]
在一些示例实施例中,转换用于至少一个第二前序功能的中间密钥包括:向至少一个第二前序功能的执行结果应用散列函数,以获得经散列的结果;以及执行针对至少一个第二前序功能的中间密钥与经散列的结果之间的xor运算,以获得经转换的中间密钥。
[0172]
在一些示例实施例中,基于第二数目和验证信息生成针对给定功能的中间密钥包括:响应于第二数目指示零个后继功能,通过向验证信息应用散列函数来生成针对给定功能的中间密钥。
[0173]
在一些示例实施例中,基于第二数目和验证信息生成针对给定功能的中间密钥包括:响应于第二数目指示至少一个后继功能,基于执行计划确定至少一个后继功能是否在与给定功能的可信执行环境不同的可信执行环境中被执行;响应于确定至少一个后继功能在与给定功能的可信执行环境不同的可信执行环境中被执行,基于验证信息和给定功能的执行结果来确定针对给定功能的中间密钥;以及响应于确定至少一个后继功能在与给定功能的可信执行环境相同的可信执行环境中被执行,将验证信息确定为针对给定功能的中间密钥。
[0174]
在一些示例实施例中,基于验证信息和给定功能的执行结果来确定给定功能的中间密钥包括:向验证信息应用第一散列函数以获得散列信息;向给定功能的执行结果应用第二散列函数;以及通过执行散列信息与经散列的结果之间的xor运算,来确定中间密钥。
[0175]
示例设备和装置
[0176]
在一些示例实施例中,能够执行任何方法700的第一装置(例如,第一装置110或第一装置110的一部分)可以包括用于执行方法700的相应步骤的部件。该装置可以以任何适当的形式实现。例如,该装置可以在电路或软件模块中实现。
[0177]
在一些示例实施例中,第一装置包括:用于向第二装置传输对任务的执行的请求的部件,任务包括要被执行的多个功能;用于基于第二装置的至少一个可信执行环境中的预期执行计划从多个功能的标识信息生成第一验证密钥的部件;用于从第二装置接收针对任务的执行结果和第二验证密钥的部件;以及用于通过比较第一验证密钥和第二验证密钥来确定执行结果的正确性的部件。
[0178]
在一些示例实施例中,预期执行计划至少指示多个功能的执行顺序。在一些示例实施例中,用于生成第一验证密钥的部件包括:用于按照执行顺序生成针对多个功能的中
间密钥的部件,针对功能的中间密钥至少基于针对在执行顺序中该功能的前序功能的中间密钥来确定;以及用于基于针对多个功能中的最后功能所生成的中间密钥,确定第一验证密钥的部件。
[0179]
在一些示例实施例中,用于生成中间密钥的部件包括:用于对于多个功能中的给定功能确定在执行顺序中针对给定功能的前序功能的第一数目和针对给定功能的后继功能的第二数目的部件;用于基于第一数目生成针对给定功能的验证信息的部件;以及用于基于第二数目和验证信息来生成针对给定功能的中间密钥的部件。
[0180]
在一些示例实施例中,用于生成验证信息的部件包括:用于响应于第一数目指示一个前序功能、通过连接针对一个前序功能的中间密钥和给定功能的标识信息来生成验证信息的部件。
[0181]
在一些示例实施例中,用于生成验证信息的部件包括:用于响应于第一数目指示多个前序功能、通过以下来生成针对给定功能的验证信息的部件:合并针对多个前序功能的中间密钥以获得合并中间密钥,以及连接合并中间密钥与给定功能的标识信息。
[0182]
在一些示例实施例中,用于生成验证信息的部件包括:用于响应于第一数目指示零个前序功能,通过连接随机数和给定功能的标识信息来生成验证信息的部件,随机数也用于第二验证密钥的生成。
[0183]
在一些示例实施例中,第一装置还包括:用于通过向在任务中要被处理的输入数据应用散列函数来生成随机数的部件。
[0184]
在一些示例实施例中,用于基于第二数目和验证信息生成中间密钥的部件:用于响应于第二数目指示零个后继功能通过向验证信息应用散列函数来生成针对给定功能的中间密钥的部件。
[0185]
在一些示例实施例中,预期执行计划还指示多个功能的分布跨越至少一个可信执行环境。在一些示例实施例中,用于基于第二数目和验证信息来生成针对给定功能的中间密钥的部件包括:用于响应于第二数目指示至少一个后继功能、基于预期执行计划确定至少一个后继功能是否在与给定功能的可信执行环境不同的可信执行环境中被执行的部件;用于响应于确定至少一个后继功能在与给定功能的可信执行环境不同的可信执行环境中被执行,通过向验证信息应用散列函数来生成针对给定功能的中间密钥的部件;以及用于响应于确定至少一个后继功能在与给定功能的可信执行环境相同的可信执行环境中被执行、将验证信息确定为针对给定功能的中间密钥的部件。
[0186]
在一些示例实施例中,用于确定执行结果的正确性的部件包括:用于响应于第二验证密钥与第一验证密钥相同而确定执行结果是正确的部件;以及用于响应于第二验证密钥不同于第一验证密钥而确定执行结果是不正确的部件。
[0187]
在一些示例实施例中,第一装置还包括用于执行方法700的一些示例实施例中的其他步骤的部件。在一些示例实施例中,该装置包括至少一个处理器;以及包括计算机程序代码的至少一个存储器,至少一个存储器和计算机程序代码被配置为与至少一个处理器一起引起第一装置的运行。
[0188]
在一些示例实施例中,能够执行任何方法800的第二装置(例如,第二装置120或第二装置120的一部分)可以包括用于执行方法800的相应步骤的部件。该装置可以以任何适当的形式实现。例如,该装置可以被实现在电路或软件模块中。
[0189]
在一些示例实施例中,第二装置包括:用于从第一装置接收对任务的执行的请求的部件,任务包括要被执行的多个功能;用于基于执行计划在至少一个可信执行环境中执行多个功能以获得针对任务的执行结果的部件;用于基于执行计划从多个功能的标识信息生成第二验证密钥的部件;以及用于向第一装置传输执行结果和用于验证执行结果的正确性的第二验证密钥的部件。
[0190]
在一些示例实施例中,执行计划至少指示多个功能的执行顺序。在一些示例实施例中,用于生成第二验证密钥的部件包括:用于按照执行顺序生成多个功能的中间密钥的部件,针对功能的中间密钥至少基于针对在执行顺序中针对该功能的前序功能的中间密钥来确定;以及用于基于针对多个功能中的最后功能的所生成的中间密钥,确定第二验证密钥的部件。
[0191]
在一些示例实施例中,用于生成针对多个功能的中间密钥的部件包括:用于在至少一个可信执行环境内生成针对多个功能的中间密钥的部件。
[0192]
在一些示例实施例中,用于生成中间密钥的部件包括:用于对于多个功能中的给定功能,确定在执行顺序中针对给定功能的前序功能的第一数目和针对给定功能的后继功能的第二数目的部件;用于基于前序功能的第一数目生成针对给定功能的验证信息的部件;以及用于基于第二数目和验证信息生成针对给定功能的中间密钥的部件。
[0193]
在一些示例实施例中,用于生成验证信息的部件包括:用于响应于第一数目指示零个前序功能、通过连接随机数和给定功能的标识信息来生成验证信息的部件,随机数还由第一装置使用以用于生成第一验证密钥。
[0194]
在一些示例实施例中,随机数是通过将向任务中要被处理的输入数据应用散列函数来生成的。
[0195]
在一些示例实施例中,预期执行计划还指示多个功能的分布跨越至少一个可信执行环境。在一些示例实施例中,用于生成验证信息的部件包括:用于响应于第一数目指示给定功能的至少一个前序功能而基于执行计划确定至少一个前序功能和给定功能是否在与给定功能的可信执行环境相同的可信执行环境中被执行的部件;以及用于基于第一数目和确定的结果来生成验证信息的部件。
[0196]
在一些示例实施例中,用于基于第一数目和确定的结果来生成验证信息的部件包括:用于响应于第一数目指示一个前序功能并且响应于确定前序功能与给定功能在相同可信执行环境中被执行,通过连接前序功能的中间密钥与给定功能的标识信息来生成验证信息的部件;以及用于响应于第一数目指示一个前序功能并且响应于确定前序功能和给定功能在不同可信执行环境中被执行,通过以下来确定验证信息的部件:向在给定功能被执行的可信执行环境中获得的前序功能的执行结果应用散列函数,以获得经散列的结果;基于经散列的结果来转换针对前序功能的中间密钥,以及连接转换的中间密钥和给定功能的标识信息。
[0197]
在一些示例实施例中,用于基于经散列的结果转换前序功能的中间密钥的部件包括:用于执行针对前序功能的中间密钥与经散列的结果之间的xor运算的部件。
[0198]
在一些示例实施例中,用于基于第一数目和确定的结果生成验证信息的部件包括:用于响应于第一数目指示多个前序功能并且响应于确定多个前序功能在与给定功能的可信执行环境相同的可信执行环境中被执行,通过以下来生成验证信息的部件:合并多个
前序功能的中间密钥以获得合并中间密钥,以及连接合并中间密钥和给定功能的标识信息。
[0199]
在一些示例实施例中,用于基于第一数目和确定的结果生成验证信息的部件包括:用于响应于第一数目指示多个前序功能并且响应于确定多个前序功能在与给定功能的可信执行环境不同的可信执行环境中被执行,通过以下来生成验证信息的部件:针对多个前序功能中的给定前序功能,向在给定功能被执行的可信执行环境中获得的前序功能的执行结果应用散列函数,以获得经散列的结果;基于经散列的结果转换针对给定前序功能的中间密钥,以及合并针对多个前序功能的经转换的中间密钥,以获得合并中间密钥,以及连接合并中间密钥与给定功能的标识信息。
[0200]
在一些示例实施例中,用于基于第一数目和确定的结果生成验证信息的部件包括:用于响应于第一数目指示多个前序功能并且响应于确定多个前序功能中的至少一个第一前序功能和给定节点在相同可信执行环境中被执行、并且多个前序功能中的至少一个第二前序功能在与给定功能的可信执行环境不同的可信执行环境中被执行,通过以下来确定验证信息的部件:基于在给定功能被执行的可信执行环境中获得的至少一个第二前序功能的执行结果,转换针对至少一个第二前序功能的中间密钥,合并针对至少一个第一前序功能的中间密钥和经转换的中间密钥,以获得合并中间密钥,以及连接合并中间密钥与给定功能的标识信息。
[0201]
在一些示例实施例中,用于转换针对至少一个第二前序功能的中间密钥的部件包括:用于向至少一个第二前序功能的执行结果应用散列函数以获得经散列的结果的部件;以及用于执行至少一个第二前序功能的中间密钥与经散列的结果之间的xor运算,以获得经转换的中间密钥的部件。
[0202]
在一些示例实施例中,用于基于第二数目和验证信息生成针对给定功能的中间密钥的部件包括:用于响应于第二数目指示零个后继功能,通过向验证信息应用散列函数来生成针对给定功能的中间密钥的部件。
[0203]
在一些示例实施例中,用于基于第二数目和验证信息生成针对给定功能的中间密钥的部件包括:用于响应于第二数目指示至少一个后继功能,基于执行计划确定至少一个后继功能是否在与给定功能的可信执行环境不同的可信执行环境中被执行的部件;用于响应于确定至少一个后继功能在与给定功能的可信执行环境不同的可信执行环境中被执行,基于验证信息和给定功能的执行结果来确定针对给定功能的中间密钥的部件;以及用于响应于确定至少一个后继功能在与给定功能的可信执行环境相同的可信执行环境中被执行,将验证信息确定为针对给定功能的中间密钥的部件。
[0204]
在一些示例实施例中,用于确定给定功能的中间密钥的部件包括:用于向验证信息应用第一散列函数以获得散列信息的部件;用于向给定功能的执行结果应用第二散列函数的部件;以及用于通过执行散列信息与经散列的结果之间的xor运算来确定中间密钥的部件。
[0205]
在一些示例实施例中,第二装置还包括用于执行方法800的一些示例实施例中的其他步骤的部件。在一些示例实施例中,该装置包括至少一个处理器;以及包括计算机程序代码的至少一个存储器,至少一个存储器和计算机程序代码被配置以与至少一个处理器一起引起第二装置的执行。
[0206]
图9是适合于实现本公开的示例实施例的设备900的简化框图。可设备900可以被提供以实现计算设备,例如图1所示的第一装置110或第二装置120,或者第一装置110或第二装置120的一部分。如图所示,设备900包括:一个或多个处理器910、耦合到处理器910的一个或多个存储器920、以及耦合到处理器910的一个或多个通信模块940。
[0207]
通信模块940用于双向通信。通信模块940具有至少一个天线以便于通信。通信接口可以表示与其他网络元素通信所需的任何接口。
[0208]
处理器910可以是适合于本地技术网络的任何类型,并且作为非限制性示例,可以包括以下一项或多项:通用计算机、专用计算机、微处理器、数字信号处理器(dsp)和基于多核处理器架构的处理器。设备900可以具有多个处理器,例如在时间上从属于与主处理器同步的时钟的专用集成电路芯片。
[0209]
存储器920可以包括一个或多个非易失性存储器和一个或多个易失性存储器。非易失性存储器的示例包括但不限于:只读存储器(rom)924、电可编程只读存储器(eprom)、闪存、硬盘、光盘(cd)、数字视频光盘(dvd)和其他磁性存储装置和/或光学存储装置。易失性存储器的示例包括但不限于随机存取存储器(ram)922和在断电持续时间内不会持续的其他易失性存储器。
[0210]
计算机程序930包括由相关联的处理器910执行的计算机可执行指令。程序930可以被存储在rom 924中。处理器910可以通过将程序930加载到ram 922中来执行任何合适的动作和处理。
[0211]
本公开的示例实施例可以通过程序930来实现,使得设备900可以执行如参考图2至图8所讨论的本公开的任何过程。本公开的示例实施例还可以通过硬件或软件和硬件的合并来实现。
[0212]
在一些示例实施例中,程序930可以被有形地包含在计算机可读介质中,该计算机可读介质可以被包括在设备900中(诸如在存储器920中)或由设备900可访问的其他存储设备中。设备900可以将程序930从计算机可读介质加载到ram 922以供执行。计算机可读介质可以包括任何类型的有形非易失性存储器,例如rom、eprom、闪存、硬盘、cd、dvd等。图10示出了cd或dvd形式的计算机可读介质1000的示例。该计算机可读介质上存储有程序930。
[0213]
通常,本公开的各种实施例可以用硬件或专用电路、软件、逻辑或前述项的任何组合中来实现。一些方面可以用硬件来实现,而其他方面可以用固件或软件来实现,这些固件或软件可以由控制器、微处理器或其他计算设备来执行。虽然本公开的实施例的各方面被示出并描述为框图,流程图或使用一些其他图示表示,但应当理解,本文描述的块、装置、系统、技术或方法可以作为非限制性示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其一些合并中实现。
[0214]
本公开还提供了至少一种计算机程序产品,其被有形地存储在非瞬态计算机可读存储介质上。计算机程序产品包括在目标真实或虚拟处理器上的设备中执行的执行指令,诸如包括在程序模块中的那些计算机可执行指令,以执行如上参考图2至图8所述的方法。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。程序模块的功能可根据各种实施例中的需要在程序模块之间合并或分开。用于程序模块的机器可执行指令可以在本地或分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质中。
[0215]
用于执行本公开的方法的程序代码可以用一种或多种编程语言的任意合并来编写。这些程序代码可以被提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器或控制器,使得这些程序代码在被处理器或控制器执行时使流程图和/或框图中指定的功能/操作被实现。程序代码可以完全在机器上执行,部分在机器上执行,作为独立软件包执行,部分在机器上、部分在远程机器上执行,或完全在远程机器或服务器上执行。
[0216]
在本公开的上下文中,计算机程序代码或相关数据可以由任何合适的载体携带,以使设备、装置或处理器能够执行如前文所述的各种过程和操作。载波的示例包括信号、计算机可读介质等。
[0217]
计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置或设备、或前述的任何合适的合并。计算机可读存储介质的更具体的示例将包括具有一条或多条导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、光纤、便携式光盘只读存储器(cd-rom)、光存储设备、磁存储设备、或前述的任何合适的合并。
[0218]
同样地,虽然在上述讨论中包含了若干特定实现细节,但这些细节不应当被解释为对本公开的范围的限制,而应当被解释为对特定实施例所特有的特征的描述。在单独实施例的上下文中描述的某些特征也可以在单个实施例中合并实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子合并来实现。
[0219]
尽管已经以特定于结构特征和/或方法动作的语言描述了本公开,但应当理解,所附权利要求中限定的本公开不必限于上述特定特征或动作。相反,上述特定特征和动作是作为实现权利要求的示例形式而公开的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1