通过工具链的操作证明的制作方法

文档序号:30582354发布日期:2022-06-29 13:05阅读:124来源:国知局
通过工具链的操作证明的制作方法

1.本文描述的实施例大体上涉及电子器件领域,更具体地,涉及通过工具链的操作证明。


背景技术:

2.云服务提供商(csp)越来越多地向新客户扩展服务,包括为过去对利用云服务犹豫不决的具有安全意识的客户提供服务。这推动了csp提供基于可信计算技术的可信计算服务的趋势。
3.同时,云服务提供商正在将他们的计算器件从仅cpu(中央处理单元)扩展到各种其他类型的计算节点,包括各种处理单元和硬件加速器。为了利用这些异构计算环境,提供进一步支持工具链的建立,该建立允许客户以工具链可以为这些加速器中的任何一个编译它的方式编写他们的业务逻辑。
4.然而,这些趋势本质上并不能很好地协同工作,可信计算使计算器件能够证明它正在运行的逻辑,并期望客户能够识别它,而经由工具链的代码部署导致计算节点的代码正在运行的是客户提供的代码的衍生物,而不是客户的代码本身。
附图说明
5.在附图的图中通过示例而非限制的方式示出了本文描述的实施例,其中相似的附图标记指代相似的元件。
6.图1是根据一些实施例的与工具链相关联的操作的证明的图示;
7.图2是根据一些实施例的应用工具链来为要在端计算节点上运行的代码生成证明断言链的图示;
8.图3是根据一些实施例的由可证明工具链生成证明的图示;
9.图4是根据一些实施例的与可证明工具链的操作相关联的测量和证明的图示;
10.图5是根据一些实施例的通过可证明工具链总结证明的传递证明的图示;
11.图6是图示根据一些实施例的用于通过可证明工具链证明转换或评估的过程的流程图;
12.图7图示了根据一些实施例的用于通过工具链的操作证明的示例性计算架构的一个实施例;
13.图8a和8b分别图示了基于一次性散列的签名方案和基于多次性散列的签名方案;以及
14.图9a和9b分别图示了一次签名方案和多次性签名方案。
具体实施方式
15.本文描述的实施例涉及工具链的操作证明(attestation of operations)。
16.为了将服务扩展到具有安全意识的客户,云服务提供商(csp)可能会提供基于可
信计算技术的可信计算服务,诸如在客户工作负荷和计算器件向客户证明例如计算节点在修补方面是最新的、相关计算节点正在应用这些技术来保护工作负荷,并且正在处理的工作负荷是客户打算部署并且未被篡改的逻辑的能力之间使用更强的隔离技术。然后,客户可以在将敏感数据发布到计算节点之前验证此证明。
17.然而,csp支持正在从cpu(中央处理单元)的操作扩展到各种计算节点的操作,包括多种类型的处理器件(诸如gpu(图形处理单元)和硬件加速器(诸如fpga(现场可编程门阵列)和asic(专用集成电路)),这可以提高某些工作负荷的性能。为充分利用这些异构计算环境,支持建立工具链(如one api工具包等),允许客户以可证明工具链然后为任何这样的处理单元和硬件加速器编译或翻译客户的业务逻辑(初始源代码)的方式(通常可以称为代码逻辑的转换)编写它。如本文所用,“可证明工具链”一般是指一组用于执行操作的编程工具或实用程序,具体而言,工具链可用于将源代码转换为用于多种不同类型计算节点的机器代码。工具链还可以将源代码与其他代码(诸如运行时或库)结合起来。可证明工具链可能够创建证明,该证明可以包括关于工具链所进行的操作的信息。
18.这种工具链支持可能是csp的一个差异点,因为csp可以让客户编写与器件无关的源代码,而csp将确定csp可用于执行该代码的最佳硬件,并应用适用的工具链以将客户编写的逻辑转换成可以在特定计算节点上运行的机器码进行部署,无论该计算节点是cpu、gpu、fpga还是其他专用加速器。
19.然而,api样式的代码部署会导致指定的计算节点运行的代码是客户提供的代码的衍生代码,而不是客户的代码本身。因此,异构云计算平台中的可信计算应提供支持器件无关工具链操作的证明过程。此问题的先前解决方案要求租户预先确定将运行其逻辑的加速器类型,为其构建,然后将该代码提供给csp。对于某些简单的工作负荷,这种常规模型可能运行得足够好,其中,计算单元的选择可以预先确定,但工作负荷可以由多个独立的元件一起工作,从而需要更复杂的操作。此外,云提供商可能希望通过提供易于使用的异构环境来区别于其他提供商,因此强烈希望承担确定哪些计算节点最适合运行工作负荷的负担。
20.在一些实施例中,一种装置、系统或过程将通过可证明工具链提供编译、翻译或评估的证明。在一些实施例中,一种装置、系统或过程利用一个或多个可证明环境来通过可证明工具链生成每个处理阶段的证明,并产生从客户可识别工作负荷到用于终端计算节点上的机器逻辑的证明断言链。在这样的操作中,客户然后能够应用证明链来通过工具链将终端设备上运行的逻辑追溯到客户提供或识别的原始逻辑。
21.图1是根据一些实施例的与工具链相关联的操作的证明的图示。在一些实施例中,该过程可以由一个或多个计算系统,诸如图7中所示的计算系统执行。在一些实施例中,证明操作100可以被分解成两个阶段:生成器件代码逻辑的构建阶段110(第一阶段)和发生可信计算证明的运行时阶段120(第二阶段)。
22.在构建阶段110,可证明工具链从一个或多个可证明环境125运行。如本文所用,“可证明环境”是指能够证明某些操作(包括代码的生成)的环境。可证明环境可以包括但不限于可信执行环境(tee)技术,诸如软件防护扩展(sgx)、可信域扩展(tdx)或amd sev。工具链可以包括多个阶段,这些阶段用于为终端设备生成代码。在一些实施例中,在处理工作负荷时,每个工具链阶段创建后续阶段可以利用的
证明,其中,该证明可以包括:
23.(a)特定工具链阶段的测量112,该测量可以包括任何已知的代码测量技术;以及
24.(b)要由可证明工具链转换(编译或翻译)、检查或以其他方式处理的输入逻辑的测量或识别114。
25.在一些实施例中,证明可以可选地包括其他因素,诸如以下中的一个或多个因素:
26.(c)工具链阶段保证(例如,通过插入代码或链接到特定库)或已发现(例如,通过检查逻辑)的任何属性116,或
27.(d)作为阶段结果创建的逻辑的测量或识别(除非,例如,工具链阶段严格是一个检查阶段,因此没有创建新代码)118。
28.在一些实施例中,在运行时阶段120,为客户生成证明。在一些实施例中,运行时阶段120包括传统的可信计算或可信计算部署。通常,可信计算通过在基于硬件的可信执行环境中执行计算来保护使用中的数据。在工具链的操作中,生成的代码被部署到特定计算节点122。生成的代码可能需要访问由诸如租户150的资源控制器持有的特定资源,其中,租户150可以访问计算节点所需的敏感数据以对预期数据执行器件逻辑。在一些实施例中,该操作包括由计算节点124生成器件证明,以及将该证明传送到资源控制器126。
29.在一些实施例中,工具链的操作的完整证明可以被组装成事件的传递链,该传递链可以被称为由特定的验证代理(称为验证者)进行验证的证明链,其中,验证者可以包括例如租户150或代表租户行动的指定验证代理。验证者提供的操作包括:
30.(a)验证证明链中的每个证明,其中可以使用任何已知的证明过程进行验证,以及
31.(b)确保事件链从某些已识别的逻辑(已识别的逻辑是原始工作负荷代码)引向反映在器件证明中的逻辑。
32.在一些实施例中,所得的证明链可以被处理为证明器件正在运行源自原始业务逻辑的逻辑的证据,该原始业务逻辑可选地具有指定的安全属性并且由所指示的工具链元素构建。如果这些元素都符合验证者的策略,则操作可以继续为工作负荷计算部署机密数据。
33.图2是根据一些实施例的应用工具链来为要在端计算节点上运行的代码生成证明断言链的图示。如图2所示,云服务提供商200包括多个计算节点210以支持客户的工作负荷的操作,诸如具有相关工作负荷255的租户-a 250。多个计算节点210可以包括例如一组异构器件,包括多种类型的处理器件、硬件加速器或两者,该组异构器件被示为一个或多个cpu 212、一个或多个gpu 214和一个或多个硬件加速器216。云服务提供商200(或其他第三方)可以使用可用计算节点210的任何组合来支持工作负荷255。csp可以为大量客户提供服务,诸如示为租户-b 260到租户-n 270的其他客户,其中,每个这样的客户可以提供不同的工作负荷进行处理,其中,每个这样的工作负荷可以潜在地与用于将源代码转换为适合一个或多个计算单元的机器代码的工具链相关联。
34.如图所示,租户-a 250可以提供或选择可证明的工具链,如工具链-a 222所示,以将工作负荷代码(源代码)(如程序逻辑-a 220所示)转换为一组或多组机器代码,该机器代码用于多种类型的计算节点中的一种或多种。以此方式,工作负荷255可潜在地使用各种不同的计算节点来处理,而客户无需识别此类器件并在程序逻辑220的生成中使用该知识,即,程序逻辑可以是器件不可知的。程序逻辑-a 220需要被转换为机器代码,该机器代码用于被选择用于在与租户-a 250相关联的工作负荷255上操作的一个或多个计算节点中的每
一个。
35.在常规操作中,为了让客户(诸如租户-a 250)识别和验证在每个终端设备上运行的机器逻辑,客户将需要运行工具链并生成所得的机器代码以验证此类代码。某些工具链在编译自己的代码时可能会支持这种操作模型。然而,对于硬件加速器、fpga“编译器”或类似元件,此过程需要了解csp的基本比特流,而gpu则需要了解csp的潜在定制内核。因此,此类操作在csp环境中通常不实用。
36.在一些实施例中,一种装置、系统或过程将从一个或多个可证明的环境为客户运行工具链。在处理工作负荷时,工具链阶段将创建该阶段的证明,断言该工具链已将输入代码转换为输出代码。在一些实施例中,证明可以可选地还包括工具链可以对所得代码做出的任何安全断言。因此,这会产生从客户可识别的工作负荷开始并继续到将在终端设备上运行的逻辑的证明断言链。在工作负荷部署期间,当客户收到来自终端计算节点的证明时,客户将能够应用该证明链来通过工具链将终端设备上运行的逻辑追溯到客户提供或识别的原始逻辑。
37.因此,在一些实施例中,工具链可以在任何位置执行,可以由客户、csp、管理机构或相互商定的第三方执行,而不要求构建是确定性和可重复的过程。相反,证明链提供所需的数据来证明工具链从初始逻辑到由终端设备执行的逻辑的转换或评估。
38.图3是根据一些实施例的由可证明工具链生成证明的图示。在一些实施例中,如代码1所示的初始业务逻辑(源代码)可由开发者300(其可为租户或可为第三方开发者)创建。在本例中,代码1是用于处理安全工作负荷的初始代码,其中,代码1需要转换为特定终端计算节点的机器代码,其中,该转换(即编译或翻译)将使用可证明的工具链,诸如图2中所示的工具链-a 222来执行。开发者300可以提供公共文档302,公共文档302提供与代码1相关的测量,该测量可以用于验证工具链的操作。
39.在一些实施例中,链工具可以包括一个或多个阶段,其中,每个阶段(其可以是转换和证明代码的转换阶段或检查代码而不提供翻译的检查阶段)可以生成代码的证明。例如,如图3所示,在构建阶段304,代码1由翻译逻辑1(312)(其中,翻译逻辑也可称为第一转换或第一转换器)接收以执行代码1的转换以生成代码2,并生成证明1(316)。翻译逻辑1可以进一步接收诸如公共运行时代码314的代码。在该示例中,生成的证明1可以包括翻译逻辑1(tl1)测量(即,与转换1阶段本身相关联的测量)、代码1测量(与接收到的代码1相关联的测量)、公共运行时代码测量(与接收到的公共运行时代码相关联的测量)和代码2测量(与生成的代码2相关联的测量)。
40.所示操作可以继续由翻译逻辑2(322)(第二转换器)接收的代码2以执行代码2的转换以生成代码3(在该特定示例中,代码3是终端计算节点的机器代码),并生成证明2(326)。证明2可以包括翻译逻辑2(tl2)测量、代码2测量和代码3测量。此外,代码3可以进一步由检查逻辑332(第一检查元素)检查以生成证明3(336),证明3可以包括检查逻辑(il)测量、代码3测量,并且可以还包括某些安全断言。
41.在一些实施例中,在运行时阶段306,代码3可由终端计算节点接收,如器件340所示。在一些实施例中,器件340将生成证明4(器件证明),证明4可以包括关于器件340和代码3测量的信息。
42.在一些实施例中,所生成的证明,即由翻译逻辑1生成的证明1、由翻译逻辑2生成
的证明2、由检查逻辑332生成的证明3和由终端计算器件340生成的证明4,可以各自提供给验证者,其中,验证者可以是租户或代表租户行动的验证代理。证明可以一起形成证明链以证明该证明器件(在本示例中为器件340)正在运行源自原始业务逻辑(代码1)并由指示的工具链元素(翻译逻辑1和翻译逻辑2)构建的逻辑(代码3)。验证者然后可以确定该证明是否全部满足验证者的策略,并且如果满足,租户(或其他方)可以继续将数据部署到工作负荷以供器件340处理。
43.图4是根据一些实施例的与可证明工具链的操作相关联的测量和证明的图示。在一些实施例中,测量和证明400源自可证明工具链和终端计算节点的阶段,如图3所示。
44.在一些实施例中,由图3中的翻译逻辑1生成的证明1 316包括tl 1(翻译逻辑1)测量、接收到的代码1测量和代码2测量。为了验证,可以将代码2测量与证明2 326的输入逻辑测量进行比较。此外,工具链的作者或开发者可以提供公共文档,包括工具链的测量,租户或验证者可以使用这些测量来比较生成的结果。公共文档可以包括但不限于所示的tl1测量的文档404、tl2(翻译逻辑2)测量的文档406和il(检查逻辑)测量的文档402。
45.由图3中的翻译逻辑2生成的证明2 326包括tl 2(翻译逻辑2)测量、接收到的代码2测量和代码3测量。证明2 326可以还包括一个或多个安全断言。为了验证,可以将代码3测量与器件证明346的输入逻辑测量进行比较。
46.由图3中的检查逻辑332生成的证明3 336包括il测量和所生成的代码3测量。为了验证,可以将代码3测量与器件证明346的输入逻辑验证进行比较。
47.器件证明346(图3中所示的证明4)然后包括器件测量(用于终端处理器件)和代码3测量。
48.在一些实施例中,如关于图3所描述的,生成的证明、由翻译逻辑1生成的证明1、由翻译逻辑2生成的证明2、由检查逻辑生成的证明3和由端计算节点生成的器件证明可以各自提供给验证者。证明可以一起形成证明链以证明每个证明器件正在运行源自原始业务逻辑(代码1)并由指示的工具链元素(翻译逻辑1和翻译逻辑2)构建的逻辑。
49.图5是根据一些实施例的通过可证明工具链总结证明的传递证明的图示。当一起考虑时,传递证明被提供为图4中所示的信息的逻辑表示。如图5所示,传递证明500可以包括器件测量(该器件是终端处理器件,诸如图3中所示的器件340);代码1测量(代码1指代由云工具链提供的用于转换(编译或翻译)的原始业务逻辑(机器代码));以及,如果需要,一个或多个安全断言。
50.在一些实施例中,传递证明包括来自云工具链520的每个阶段的测量或与其相关联,其中,该示例中的测量是tl 1(翻译逻辑1)测量、tl2(翻译逻辑2)测量、和il(检查逻辑)测量。
51.以此方式,测量和安全断言提供可用于验证为操作器件接收到的代码是否源自原始业务逻辑以及该代码是否已由工具链的各个阶段生成的数据。
52.图6是图示根据一些实施例的用于通过可证明工具链证明转换或评估的过程的流程图。在一些实施例中,过程600包括诸如在云服务提供商或其他第三方处接收用于由所选的计算节点605处理安全工作负荷的业务逻辑,该安全工作负荷与特定租户相关联。
53.在一些实施例中,可证明工具链被识别用于业务逻辑的转换610,并且多个可用计算节点中的一个计算节点被选择为工作负荷615提供计算。过程可以包括选择多个计算节
点,其中,工具链可以为多个计算节点中的每一个提供业务逻辑(或业务逻辑的部分)的单独转换。
54.在一些实施例中,在证明过程的构建阶段620,一个或多个转换阶段中的每一个将接收代码、基于所接收到的代码生成代码、以及生成所接收代码的测量或身份、所生成的代码的测量或身份,以及转换阶段的证明625。在一些实施例中,一个或多个检查阶段中的每一个可进一步操作以接收和检查代码,并生成所接收到的代码的测量或身份以及检查阶段的证明630。
55.在一些实施例中,在证明过程的运行时阶段635,终端计算单元(即,运行接收到的机器代码的器件)将接收机器代码,并生成计算单元和接收到的代码的证明640。
56.在一些实施例中,每一个证明都将针对租户645的验证者,其中,验证者可以是租户或代表租户行动的验证代理。通过这种方式,验证者收到一个证明链,该证明链共同证明每个证明器件正在运行源自原始业务逻辑的逻辑,并且所得机器代码是由指示的工具链元素(转换阶段元素)构建的。在这种情况下,可以生成表明终端计算节点的所得机器代码源自原始机器逻辑的验证,而无需租户参与工具链的操作。
57.在一些实施例中,如果证明足以用于验证,则该过程然后可以继续从租户接收安全数据650,并且使用接收到的安全数据执行工作负荷的计算655。
58.图7图示了根据一些实施例的用于通过可证明工具链的操作证明的示例性计算架构的一个实施例。在如上所述的各种实施例中,计算架构700可以包括或被实现为电子器件的一部分。在一些实施例中,计算架构700可以代表例如实现上述操作环境的一个或多个部件的计算机系统。计算架构700可用于通过工具链提供操作的证明,诸如图1-6中所描述的。
59.如在本技术中使用的,术语“系统”和“部件”和“模块”旨在指代计算机相关实体,可以是硬件、硬件和软件的组合、软件或执行中的软件,例如由示例性计算架构700提供。例如,部件可以是但不限于在处理器上运行的进程、处理器、硬盘驱动器或固态驱动器(ssd)、多个存储驱动器(光和/或磁存储介质的)、对象、可执行文件、执行线程、程序和/或计算机。举例来说,在服务器上运行的应用和服务器都可以是部件。一个或多个部件可以驻留在一个进程和/或执行线程内,并且部件可以位于一个计算机上和/或分布在两个或更多个计算机之间。此外,部件可以通过各种类型的通信介质彼此通信耦合以协调操作。协调可能涉及单向或双向信息交换。例如,部件可以以通过通信介质传送的信号的形式传送信息。该信息可以被实现为分配给各种信号线的信号。在这样的分配中,每条消息都是一个信号。然而,另外的实施例可替代地采用数据消息。此类数据消息可以通过各种连接发送。示例性连接包括并行接口、串行接口和总线接口。
60.计算架构700包括各种常见的计算元件,诸如一个或多个处理器、多核处理器、协处理器、存储单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(i/o)部件、电源等。然而,实施例不限于由计算架构700实现。
61.如图7所示,计算架构700包括一个或多个处理器702和一个或多个图形处理器708,并且可以是单处理器桌面系统、多处理器工作站系统或具有大量处理器702或处理器内核707的服务器系统。在一个实施例中,系统700是结合在用于移动、手持或嵌入式设备的片上系统(soc或soc)集成电路内的处理平台。
62.系统700的一个实施例可以包括或结合在基于服务器的游戏平台、游戏控制台(包
括游戏和媒体控制台)、移动游戏控制台、手持游戏控制台或在线游戏控制台内。在一些实施例中,系统700是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统700还可以包括、耦合或集成在可穿戴设备中,诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备中。在一些实施例中,数据处理系统700是具有一个或多个处理器702和由一个或多个图形处理器708生成的图形界面的电视机或机顶盒设备。
63.在一些实施例中,一个或多个处理器702各自包括一个或多个处理器内核707以处理指令,当被执行时,该指令执行系统和用户软件的操作。在一些实施例中,一个或多个处理器内核707中的每一个被配置为处理特定指令集709。在一些实施例中,指令集709可以促进复杂指令集计算(cisc)、精简指令集计算(risc)或经由超长指令字(vliw)的计算。多个处理器内核707可以各自处理不同的指令集709,指令集709可以包括促进其他指令集的仿真的指令。处理器内核707还可以包括其他处理器件,诸如数字信号处理器(dsp)。
64.在一些实施例中,处理器702包括高速缓存存储器704。根据架构,处理器702可以具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,高速缓存存储器704在处理器702的各种部件之间共享。在一些实施例中,处理器702还使用外部高速缓存(例如,3级(l3)高速缓存或末级高速缓存(llc))(未示出),其可以使用已知的高速缓存一致性技术在处理器内核707之间共享。寄存器文件706另外包括在处理器702中,处理器702可以包括用于存储不同类型数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以专用于处理器702的设计。
65.在一些实施例中,一个或多个处理器702与一个或多个接口总线710耦合以在处理器702和系统中的其他部件之间传送诸如地址、数据或控制信号的通信信号。在一个实施例中,接口总线710可以是处理器总线,诸如直接媒体接口(dmi)总线的一种版本。然而,处理器总线不限于dmi总线,还可以包括一个或多个外围部件互连总线(例如pci、pci express)、存储器总线或其他类型的接口总线。在一个实施例中,一个或多个处理器702包括集成的存储器控制器716和平台控制器集线器730。存储器控制器716促进存储器器件和系统700的其他部件之间的通信,而平台控制器集线器(pch)730经由本地i/o总线提供到i/o器件的连接。
66.存储器器件720可以是动态随机存取存储器(dram)器件、静态随机存取存储器(sram)器件、闪存器件、相变存储器器件或具有用作过程存储器的合适性能的一些其他存储器器件。在一个实施例中,存储器器件720可以作为系统700的系统存储器操作,以存储数据722和指令721以供当一个或多个处理器702执行应用或进程时使用。存储器控制器集线器716还与可选的外部图形处理器712耦合,外部图形处理器712可以与处理器702中的一个或多个图形处理器708通信以执行图形和媒体操作。在一些实施例中,显示设备711可以连接到一个或多个处理器702。显示设备711可以是一个或多个内部显示设备,如在移动电子设备或膝上型设备中,或者是经由显示接口(例如,显示端口等)附接的外部显示设备。在一个实施例中,显示设备711可以是头戴式显示器(hmd),诸如用于虚拟现实(vr)应用或增强现实(ar)应用中的立体显示设备。
67.在一些实施例中,平台控制器集线器730使外围设备能够经由高速i/o总线连接到存储器器件720和处理器702。i/o外围设备包括但不限于音频控制器746、网络控制器734、
固件接口728、无线收发器726、触摸传感器725、数据存储器件724(例如,硬盘驱动器、闪存等)。数据存储器件724可以经由存储接口(例如,sata)或经由外围总线,诸如外围部件互连总线(例如,pci、pci express)来连接。触摸传感器725可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发器726可以是wi-fi收发器、蓝牙收发器或诸如3g、4g、长期演进(lte)或5g收发器的移动网络收发器。固件接口728实现与系统固件的通信,并且可以是例如统一可扩展固件接口(uefi)。网络控制器734可以实现到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线710耦合。在一个实施例中,音频控制器746是多通道高清晰度音频控制器。在一个实施例中,系统700包括可选的传统i/o控制器740,控制器740用于将传统(例如,个人系统2(ps/2))设备耦合到系统。平台控制器集线器730还可以连接到一个或多个通用串行总线(usb)控制器742以连接输入设备,诸如键盘和鼠标743组合、相机744或其他usb输入设备。
68.图8a和8b分别图示了基于一次性散列的签名方案和基于多次性散列的签名方案。可以根据需要利用图8a和8b中所示的操作来提供安全性以支持工具链的操作证明。基于散列的密码学基于密码系统,如lamport签名、merkle签名、扩展merkle签名方案(xmss)、sphincs方案、sphincs+方案等。随着量子计算的出现及其增长的预期,人们一直担心量子计算可能带来的各种挑战,以及如何利用密码学领域来应对这些挑战。
69.正在探索以应对量子计算挑战的一个领域是基于散列的签名(hbs),因为这些方案已经存在很长时间并且拥有必要的基本成分,诸如依赖对称密码学构建块(例如,散列函数),以应对量子计数和后量子计算挑战。hbs方案被认为是与快速平台安全启动一起工作的快速签名算法,该算法被认为是最能抵抗量子攻击的。
70.例如,如关于图8a所示,hbs的方案被示为使用默克尔(merkle)树以及一次性签名(ots)方案800,诸如使用私钥对消息进行签名并使用对应的公钥来验证ots消息,其中私钥仅对单个消息进行签名。
71.类似地,如图8b所示,图8b示出了另一种hbs方案,其中该方案涉及多次签名(mts)方案850,其中私钥可以对多个消息进行签名。
72.图9a和9b分别图示了一次签名方案和多次性签名方案。继续图8a的基于hbs的ots方案800和图8b的mts方案850,图9a分别图示了由斯坦福数学系的robert winternitz提供的winternitz ots(wots)方案900,而图9b图示了xmss mts方案950。
73.例如,图9a的wots方案900提供将消息散列和解析为m,其中在[0,1,2,...,15]之间有67个整数,诸如私钥sk,905,签名s,910和公钥pk,915,每个都有32字节的67个分量。
[0074]
现在,例如,图9b图示了xmss smts方案950,xms smts方案950允许图9a的wots方案900和具有xmss默克尔树970的xmss方案955的组合。如先前关于图9a所讨论的,wots方案900基于一次性公钥pk 915,每个具有32字节的67个分量,然后通过l树压缩算法960提供wots压缩的pk 967以在xmss方案955的xmss默克尔merkle树970中占有一席之地。设想xmss签名验证可以包括计算wots验证和检查以确定重构的根节点是否与xmss公钥匹配,诸如根节点=xmss公钥。
[0075]
本文描述的机器可读指令可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、打包格式等中的一种或多种存储。本文描述的机器可读指令可以存储为可用于创建、制造和/或产生机器可执行指令的数据(例如,指令的一部分,代码,代码的表示等)。例
如,机器可读指令可以被分段并且存储在一个或多个存储装置和/或计算装置(例如,服务器)上。机器可读指令可以利用安装、修改、改编、更新、组合、补充、配置、解密、解压缩、解包、分发、重赋值、编译等中的一项或多项,以便使其直接可读、可解释和/或可由计算设备和/或其他机器执行。例如,机器可读指令可以存储在多个部分中,这些部分被分别压缩、加密并存储在单独的计算装置上,其中,这些部分在解密、解压缩和组合后形成一组可执行指令,这些可执行指令实现了诸如本文所述的程序。
[0076]
在另一个示例中,机器可读指令可以被存储在它们可以被计算机读取但是利用添加库(例如,动态链接库(dll))、软件开发工具包(sdk)、应用程序编程接口(api)等的状态下,以便在特定计算设备或其他设备上执行指令。在另一个示例中,在机器可读指令和/或对应的一个或多个程序可以全部或部分执行之前,机器可读指令可以被配置(例如,设置存储,数据输入,网络地址记录等)。因此,所公开的机器可读指令和/或对应的一个或多个程序旨在包括这样的机器可读指令和/或一个或多个程序,而不管机器可读指令和/或一个或多个程序在存储时或以其他方式搁置或在途中时的特定格式或状态。
[0077]
本文描述的机器可读指令可以用任何过去、现在或将来的指令语言、脚本语言、编程语言等来表示。例如,机器可读指令可以使用以下任何一种语言来表示:c,c++,java,c#,perl,python,javascript,超文本标记语言(html),结构化查询语言(sql),swift等。
[0078]
如上所述,图9a和9b以及其他附图的示例过程可以使用存储在非暂时性计算机和/或机器可读介质(诸如硬盘驱动器、闪存、只读存储器、光盘、数字通用磁盘、高速缓存、随机存取存储器和/或在任何持续时间(例如,延长的时间段、永久地、用于短暂实例、用于暂时缓存和/或高速缓存信息)内存储信息的任何其他存储设备或存储盘)上的可执行指令(例如,计算机和/或机器可读指令)来实现。如本文所用,术语“非暂时性计算机可读介质”明确地定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号并排除传输介质。
[0079]
本文使用“包括”和“包含”(及其所有形式和时态)作为开放式术语。因此,每当权利要求采用任何形式的“包括”或“包含”(例如,包括,具有等)作为前序部分或在任何种类的权利要求陈述中时,应理解为在不超出相应权利要求或陈述的范围的情况下,可以存在其他要素、术语等。如本文中所用,当例如在权利要求的前序部分中使用短语“至少”作为过渡术语时,其以与术语“包含”和“包括”为开放式的相同方式也为开放式的。
[0080]
当例如以诸如a、b和/或c的形式使用术语“和/或”时,是指a、b、c的任何组合或子集,诸如(1)仅a,(2)仅b,(3)仅c,(4)a与b,(5)a与c,(6)b与c,以及(7)a与b和a与c。如本文在描述结构、部件、项、对象和/或事物的上下文中使用的,短语“a和b中的至少一者”旨在指代包括以下各项的实施方式:(1)至少一个a,(2)至少一个b,以及(3)至少一个a和至少一个b。类似地,如本文在描述结构、部件、项、对象和/或事物的上下文中使用的,短语“a或b中的至少一者”旨在指代包括以下各项的实施方式:(1)至少一个a,(2)至少一个b,以及(3)至少一个a和至少一个b。如本文在描述过程、指令、动作、活动和/或步骤的性能或执行的上下文中使用的,短语“a和b中的至少一者”旨在指代包括以下各项的实施方式:(1)至少一个a,(2)至少一个b,以及(3)至少一个a和至少一个b。类似地,如本文在描述过程、指令、动作、活动和/或步骤的性能或执行的上下文中使用的,短语“a或b中的至少一者”旨在指代包括以下各项的实施方式:(1)至少一个a,(2)至少一个b,以及(3)至少一个a和至少一个b。
[0081]
如本文所用,单数引用(例如,“一”、“一个”、“第一”、“第二”等)不排除多个。如本文所用,术语“一”或“一个”实体是指该实体中的一者或多者。术语“一”(或“一个”)、“一个或多个”和“至少一个”在本文中可以互换使用。此外,尽管被单独列出,但是多个装置、元件或方法动作可以由例如单个单元或处理器来实现。另外,尽管各个特征可以被包括在不同的示例或权利要求中,但是这些特征可以被组合,并且包含在不同的示例或权利要求中并不意味着特征的组合是不可行和/或有利的。
[0082]
当标识可被分别引用的多个元件或部件时,在本文中使用描述符“第一”、“第二”、“第三”等。
[0083]
除非基于使用上下文另外指定或理解,否则此类描述符无意于赋予优先级、物理顺序或列表中的安排或时间顺序的任何含义,而是为了易于理解所公开的示例,仅用作分别引用多个元件或部件的标签。在一些示例中,描述符“第一”可以用于指代详细描述中的元件,而在权利要求中可以使用诸如“第二”或“第三”的不同描述符来引用相同的元件。应该理解,在这种情况下,仅仅为了易于引用多个元件或部件而使用这样的描述符。
[0084]
以下示例涉及进一步的实施例。
[0085]
在示例1中,存储介质包括用于以下的指令:接收处理租户的安全工作负荷的源代码;选择多个计算节点中的至少一个第一计算节点来为工作负荷提供计算;通过可证明工具链处理源代码以生成用于第一计算节点的机器代码,包括在第一阶段,通过一个或多个转换器执行源代码的一次或多次转换以生成转换后的代码并生成与每次代码转换相关联的证明,并且在第二阶段,接收第一计算节点的机器代码并生成与第一计算节点相关联的证明;并提供第一阶段和第二阶段的每个证明以供验证。
[0086]
在示例2中,第一阶段是构建阶段,第二阶段是用于处理源代码的运行时阶段。
[0087]
在示例3中,来自第一阶段和第二阶段的证明表示接收到的源代码和为第一计算节点生成的机器代码之间的证明链。
[0088]
在示例4中,第一阶段的每个证明至少包括接收到的代码的测量或身份、转换的代码的测量或身份以及将接收到的代码转换为转换的代码的转换器的证明。
[0089]
在示例5中,第一阶段的至少第一证明还包括一个或多个安全断言。
[0090]
在示例6中,第一阶段还包括对源代码执行一次或多次检查并生成与每次代码检查相关联的证明。
[0091]
在示例7中,第二阶段的证明至少包括接收到的机器代码的证明和第一计算节点的证明。
[0092]
在示例8中,存储介质还包括用于以下的指令:响应于第一阶段和第二阶段的证明来接收安全数据以进行验证;并且利用接收到的安全数据执行安全工作负荷的计算。
[0093]
在示例9中,一种系统包括一个或多个用于处理数据的处理器;存储器,该存储器用于存储介质数据;以及多个计算单元,该计算单元用于提供所支持的工作负荷的计算,其中,该系统用于:接收用于处理csp处的租户的安全工作负荷的源代码;选择多个计算节点中的至少一个第一计算节点来为工作负荷提供计算;通过与租户相关联的可证明工具链处理源代码以生成用于第一计算节点的机器代码,包括在第一阶段,通过一个或多个转换器执行源代码的一次或多次转换以生成转换后的代码并生成与每次代码转换相关联的证明,并且在第二阶段,接收第一计算节点的机器代码并生成与第一计算节点相关联的证明;并
提供第一阶段和第二阶段的每个证明以供验证。
[0094]
在示例10中,多个计算节点包括一个或多个处理器件、一个或多个硬件加速器或两者。
[0095]
在示例11中,第一阶段是构建阶段,第二阶段是用于处理源代码的运行时阶段。
[0096]
在示例12中,来自第一阶段和第二阶段的证明表示接收到的源代码和为第一计算节点生成的机器代码之间的证明链。
[0097]
在示例13中,第一阶段的每个证明至少包括接收到的代码的测量或身份、转换的代码的测量或身份以及将接收到的代码转换为转换的代码的转换器的证明。
[0098]
在示例14中,第一阶段的至少第一证明还包括一个或多个安全断言。
[0099]
在示例15中,第一阶段还包括对源代码执行一次或多次检查并生成与每次代码检查相关联的证明。
[0100]
在示例16中,第二阶段的证明至少包括接收到的机器代码的证明和第一计算节点的证明。
[0101]
在示例17中,一种装置包括一个或多个处理代码的处理器;以及用于存储计算机指令的存储器,该计算机指令包括用于接收用于处理租户的安全工作负荷的业务逻辑的指令,该装置包括与该租户相关联的可证明工具链;选择多个计算节点中的一个或多个计算节点来为工作负荷提供计算;通过工具链处理业务逻辑以生成一个或多个计算节点的机器代码,包括在构建阶段,通过一个或多个转换器执行业务逻辑的一次或多次转换以生成转换后的代码并生成与每次代码转换相关联的证明,以及在运行时阶段,接收一个或多个计算节点的机器代码并生成与一个或多个计算节点中的每一个相关联的证明;提供构建阶段和运行时阶段的每个证明以进行验证;并且利用一个或多个计算节点执行安全工作负荷的计算。
[0102]
在示例18中,来自构建阶段和运行时阶段的证明表示接收到的业务逻辑和为一个或多个计算节点生成的机器代码之间的证明链。
[0103]
在示例19中,构建阶段的每个证明至少包括接收到的代码的测量或身份、转换的代码的测量或身份以及将接收到的代码转换为转换的代码的转换器的证明。
[0104]
在示例20中,运行时阶段的每个证明至少包括接收到的机器代码的证明和一个或多个计算节点中的一个的证明。
[0105]
在示例21中,一种装置包括:用于接收处理租户的安全工作负荷的源代码的装置;用于选择多个计算节点中的至少一个第一计算节点来为工作负荷提供计算的装置;用于通过可证明工具链处理源代码以生成用于第一计算节点的机器代码的装置,包括在第一阶段,用于通过一个或多个转换器执行源代码的一次或多次转换以生成转换后的代码并生成与每次代码转换相关联的证明的装置,并且在第二阶段,用于接收第一计算节点的机器代码并生成与第一计算节点相关联的证明的装置;以及用于提供第一阶段和第二阶段的每个证明以供验证的装置。
[0106]
在示例22中,第一阶段是构建阶段,第二阶段是用于处理源代码的运行时阶段。
[0107]
在示例23中,来自第一阶段和第二阶段的证明表示接收到的源代码和为第一计算节点生成的机器代码之间的证明链。
[0108]
在示例24中,第一阶段的每个证明至少包括接收到的代码的测量或身份、转换的
代码的测量或身份以及将接收到的代码转换为转换的代码的转换器的证明。
[0109]
在示例25中,第一阶段的至少第一证明还包括一个或多个安全断言。
[0110]
在示例26中,第一阶段还包括对源代码执行一次或多次检查并生成与每次代码检查相关联的证明。
[0111]
在示例27中,第二阶段的证明至少包括接收到的机器代码的证明和第一计算节点的证明。
[0112]
在示例28中,该装置还包括用于以下的装置:响应于第一阶段和第二阶段的证明来接收安全数据以进行验证;并且利用接收到的安全数据执行安全工作负荷的计算。
[0113]
可以在一个或多个实施例中的任何地方使用所述示例中的细节。
[0114]
前面的描述和附图被认为是说明性的而不是限制性的。本领域技术人员将理解,在不脱离所附权利要求中阐述的特征的更广泛的精神和范围的情况下,可以对本文描述的实施例进行各种修改和改变。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1