证明链和分解的制作方法

文档序号:23068540发布日期:2020-11-25 17:56阅读:145来源:国知局
证明链和分解的制作方法

本公开总体上涉及密码学、零知识证明(“zkp”)以及区块链技术。



背景技术:

当在各方之间交换信息或数据时,出现了关于是否可以信任所交换的信息的问题。接收所交换的信息的一方可以询问接收到的信息是否真实。例如,接收信息的这一方可能希望验证接收到的信息是否准确以及验证发送方是否尚未编制假信息。另外,在接收之前,接收方可能希望验证第三方是否尚未篡改接收到的信息。

在一些情况下,发送方可能希望在不暴露用于生成信息的私有基础数据的情况下将信息递送给接收方。例如,发送方可能希望报告平均温度测量,但可能不希望暴露来自每个温度传感器的各个传感器测量。以这种方式,发送方可能希望使用如下机制:证实发送给接收方的所报告的平均温度测量使用了所有传感器测量并且还应用了用于计算平均值的适当公式。一种在验证准确性的同时确保隐私的方式是使用zkp。

换言之,一方可以对其想要保持机密的数据计算函数,并且与另一方共享该函数的结果。zkp允许一方在不必共享数据本身的情况下验证函数是否适当地应用于数据。这允许另一方在不知道基础数据的情况下验证函数的完整性和结果的准确性。

zkp的一个示例是零知识简明非交互式知识论证(“zk-snark”)。zk-snark方案可以使用包括设置阶段或密钥生成阶段的若干算法;证实算法;以及验证算法。设置阶段可以生成随机字符串以生成密钥,然后为了安全性而随后销毁字符串。证实算法生成大小相对较小的证明。所生成的证明的大小可以独立于程序的运行时间,该程序导致了“简明”的命名约定。验证算法可以取决于输入的大小并且独立于运算的长度在一段时间内相对快速地验证证明。

因为简明证明可以针对证明的区块链使用相对较小的存储空间,所以zk-snark方案可以是有用的。另外,相对较快的验证可以允许正在观察区块链的多个用户快速地验证交易的较大负载。

zk-snark密码学可以在以下三种算法中进行描述:

(1)(pk,vk)=setup(cs)

(2)(π)=prove(pk,public_data,private_data)

(3)(verified)=verify(vk,π,public_data)

在这些算法中,“cs”表示定义非概率或非确定性多项式语句的约束系统。约束系统可以包括寻求证实的函数。public_data可以是函数的结果,并且private_data可以是应该保持机密的基础数据。在以上示例中,public_data可以是平均温度测量,并且private_data可以是各个温度传感器值。

setup算法基于约束系统来生成证实密钥(“pk”)和验证密钥(“vk”)。setup算法可以要求必须保持秘密的随机数,以确保适当且安全地生成证明。

prove算法从证实数据、public_data以及私有数据中生成证明。符号π可以表示使用证实密钥以及公共数据和私有数据生成的证明本身。在一些实施方式中,证明π可为仅300字节长。无论基础函数的复杂性如何,zk-snark可以具有证实简明证明的益处。

verify算法使用vk和证明π,以验证公共数据的正确性。verify算法可以返回指示公共数据是否正确的二进制一或零值。

虽然有用,但zk-snark可以具有一些缺点。例如,可能需要销毁在setup中所使用的随机字符串,以防止用户生成认证假运算的证明。为此,设置阶段对潜在错误敏感。设置阶段特定于运算,并且可以在运算被改变的情况下重新进行。密钥大小可以取决于运算的长度并且对于较长运算可以是禁止的。此外,zk-snark方案的安全性可以取决于密码假设,该密码假设相对于更常见的假设(诸如“指数知识”假设)而增加复杂性。

另外,prove算法可以在运算上为非常密集的。prove算法的运行时间可以与寻求验证的基础函数中的步骤的数量有关。作为说明性示例,在一个计算机系统中,利用涉及1,000个步骤的函数生成证明可以花费1秒。随着private_data中的输入的数量的增加,用于执行prove算法的时间的长度也可以增加。一千个步骤可以是相对较小的量。许多计算机操作可以涉及数百万个步骤。生成复杂函数的证明可以要求大量的处理时间和计算资源,并且过于繁重。

使繁重的运算复杂化。为了生成证明,必须预先知道所有private_data。在一些应用中,可以一直生成新private_data以及因此新public_data。在那种情况下,必须重新生成使用旧private_data和新private_data两者的新证明,以验证新public_data。

当基于大量的基础数据来生成证明时,需要在运算上高效的新系统和方法。此外,需要可以在维护密码安全性的同时容易地允许后续数据点的添加的新方法和系统。



技术实现要素:

在本文中公开了用于使用证明链来生成和链接零知识证明(“zkp”)的系统、方法以及计算机程序产品实施例。可以将证明划分成不同分量,以便使用链式证明系统以串行和/或并行方式分析数据。证明系统可以包括一个或多个逻辑电路或逻辑系统。证明系统可以生成哈希(hash)值(也被称为粘合值),该哈希值指示特定函数被应用于基础数据(underlyingdata)的实例。哈希值可以证明已将特定函数应用于基础数据的实例。使用证明链配置,数据供应系统可以生成zkp,该zkp允许数据请求系统在不需要接收基础数据的情况下信任函数结果。

在实施例中,一种用于生成证明的链中的证明的系统可以包括存储器和耦合至存储器的至少一个处理器。至少一个处理器可以被配置为接收基于第一基础数据生成的第一函数结果。至少一个处理器还可以被配置为接收第一证明,该第一证明在不需要显露第一基础数据的情况下验证第一函数结果的准确性。至少一个处理器还可以被配置为接收第一值,该第一值是从使用第一函数结果执行的单向密码操作和/或使用第一函数结果执行的双向加密操作和/或使用第一函数结果执行的多向加密操作中导出的。至少一个处理器可以进一步配置为从先前证明系统接收第一函数结果、第一证明以及第一值。至少一个处理器可以进一步被配置为至少部分地基于第一函数结果和第二基础数据来评估第二函数结果。至少一个处理器可以进一步配置为使用另一单向密码操作和/或另一双向加密操作和/或另一多向加密操作,基于第二函数结果来生成第二值。至少一个处理器可以进一步配置为基于第二值来生成第二证明,使得第二证明能够在不需要显露第二基础数据的情况下验证第二函数结果的准确性。至少一个处理器可以进一步配置为被发布第二证明和第二值。

在一些实施例中,一种用于生成证明的链中的证明的计算机实现的方法可以包括:接收基于第一基础数据生成的第一函数结果。计算机实现的方法还可以包括:接收第一证明,该第一证明在不需要显露第一基础数据的情况下验证第一函数结果的准确性。计算机实现的方法还可以包括:接收第一值,该第一值是从使用第一函数结果执行的单向密码操作和/或使用第一函数结果执行的双向加密操作和/或使用第一函数结果执行的多向加密操作中导出的。计算机实现的方法可以进一步包括:从先前证明系统接收第一函数结果、第一证明以及第一值。计算机实现的方法可以进一步包括:至少部分地基于第一函数结果和第二基础数据来评估第二函数结果。计算机实现的方法可以进一步包括:使用另一单向密码操作和/或另一双向加密操作和/或另一多向加密操作,基于第二函数结果来生成第二值。计算机实现的方法可以进一步包括:基于第二值来生成第二证明,使得第二证明能够在不需要显露第二基础数据的情况下验证第二函数结果的准确性。计算机实现的方法可以进一步包括:发布第二证明和第二值。在一些示例中,计算机实现的方法可以包括:使用粘合值来迭代地验证第一证明和第二证明。

在一些实施例中,公开了一种非暂时性计算机可读装置,该非暂时性计算机可读装置可以具有存储在其上的指令,该指令在被至少一个计算装置执行时可以使至少一个计算装置执行上文所描述的计算机实现的方法。

附图说明

附图并入在本文中并且形成本说明书的一部分。

图1a描绘了根据一些实施例的串行证明链配置的框图。

图1b描绘了根据一些实施例的并行证明链配置的框图。

图2描绘了示出根据一些实施例的用于链接证明的方法的流程图。

图3描绘了根据一些实施例的区块链环境的框图。

图4描绘了根据一些实施例的显示子系统接口的区块链环境的框图。

图5描绘了示出根据一些实施例的用于生成zkp的方法的流程图。

图6描绘了根据一些实施例的通信系统的框图。

图7描绘了根据一些实施例的计算机系统的框图。

图8描绘了根据一些实施例的存储器单元的框图。

图9描绘了示出根据一些实施例的用于对查询作出响应的方法的流程图。

图10描绘了示出根据一些实施例的用于验证响应的方法的流程图。

图11描绘了可用于实施各种实施例的示例计算机系统。

在附图中,相同的附图标记通常指示相同或相似的元件。另外,通常,附图标记的(多个)最左边的数字标识附图标记首次出现的附图。

具体实施方式

在本文中提供了用于链接零知识证明(“zkp”)的系统、设备、装置、方法和/或计算机程序产品实施例和/或其组合与子组合。具体地,本公开描述了证明链,以改善zk-snark方案以及提供用于生成zkp的方法。证明链可以允许多个证实过程发生。证实过程的这种划分可以允许多个并行过程来生成证明。另外,证明链可以允许在基础数据的不同源处生成证明。

这种证明链可以使用表示在证明系统之间传递的哈希值的粘合值。这些粘合值可以维护每个链式证明的验证和认证,同时还保留基础计算的zkp性质。以这种方式,粘合值可以表示所应用的函数或计算的证明。在实施例中,第一证明系统可以对基础私有数据执行第一计算,以生成函数结果。第一证明系统然后可以使用应用于函数结果和随机数的哈希操作来生成粘合值。第一证明系统然后可以将此粘合值传递到第二证明系统。

第二证明系统可以从第一证明系统接收函数结果以及粘合值。在实施例中,如果最初尚未在第一证明系统处执行处理,那么接收到的函数结果可以是未经处理的数据。在实施例中,可以私下和/或经由提交给区块链的区块来接收函数结果和/或粘合值。

在接收到函数结果和粘合值时,第二证明系统可以将函数连同由第二证明系统提供的辅助数据一起应用于从第一证明系统接收到的函数结果。此应用可以表示第二证明系统,该第二证明系统提供附加数据和/或更新函数结果连同更新粘合值。

例如,在信用分数的上下文中,第一证明系统可能已经分析了第一交易数据,以计算信用分数的第一实例。第一证明系统还可以生成粘合值,该粘合值表示信用分数的第一实例与随机数的哈希。第一证明系统然后可以将第一实例连同粘合值传递到第二证明系统。在接收到第一实例和粘合值时,第二证明系统可以识别第二交易数据。第二证明系统然后可以将信用分数函数应用于第二交易数据以及信用分数的第一实例。以这种方式,第二证明系统可以生成更新后的信用分数计算。第二证明系统也可以对更新后的信用分数计算与随机数执行哈希操作,以生成第二粘合值。第二证明系统可以发布该第二粘合值和/或将信用分数更新到区块链。如果其它证明系统被配置为继续处理附加数据,则该过程可以继续。如果已经处理了所识别的数据,则第二证明系统可以基于所识别的数据将更新后的信用分数标识为代表性信用分数。

鉴于该过程,第二证明系统可以在不查看或访问由第一证明系统处理的基础数据的情况下生成更新后的信用分数。另外,在证明系统之间传递粘合值可以在整个证明系统中保留证明。具有证明链的粘合值方案可以在各种配置中使用。

在信用分数的上下文中的另一示例中,多个实体可以访问与信用分数相关的不同信息片段。例如,第一实体可以访问第一交易数据,第二实体可以访问第二交易数据,第三实体可以访问第三交易数据,依此类推。此外,在一些示例中,第二实体和/或第三实体可能无法访问第一交易数据,第一实体和/或第三实体可能无法访问第二交易数据,第一实体和/或第二实体可能无法访问第三交易数据,依此类推。第一实体、第二实体以及第三实体的一些示例可以包括证明系统、计算机化系统、金融实体等。在一些示例中,第一实体可以分析第一交易数据以计算信用分数的第一因子并且还可以生成第一粘合值,该第一粘合值表示信用分数的第一因子与随机数的哈希;第二实体可以分析第二交易数据以计算信用分数的第二因子并且还可以生成第二粘合值,该第二粘合值表示信用分数的第二因子与第二随机数的哈希;第三实体可以分析第三交易数据以计算信用分数的第三因子并且还可以生成第三粘合值,该第三粘合值表示信用分数的第三因子与第三随机数的哈希,依此类推。另外,信用分数的第一因子、信用分数的第二因子、信用分数的第三因子等中的任何一个和/或第一粘合值、第二粘合值、第三粘合值等中的任何一个可以被发布在区块链上、使用通信网络被传输到计算机化装置、被公布在网络服务器上、被存储在存储器中、被提供给另一实体等。随后,可以例如通过另一实体、通过另一证明系统等使用信用分数的因子(信用分数的第一因子、信用分数的第二因子、信用分数的第三因子等)来计算信用分数。例如,证明系统可以使用信用分数的因子(信用分数的第一因子、信用分数的第二因子、信用分数的第三因子等)来计算信用分数,并且在一些示例中,例如,如上文所描述,可以使用信用分数的因子和/或粘合值(第一粘合值、第二粘合值、第三粘合值等)来生成信用分数的计算的zkp。所计算的信用分数和/或信用分数的计算的zkp可以被发布在区块链上、使用通信网络被传输到计算机化装置、被公布在网络服务器上、存储在存储器中、提供给另一实体等。

例如,证明系统可以以串行配置和/或并行配置来布置。在串行配置中,证明系统可以在证明系统之间传递函数结果和/或粘合值。不同证明系统可以分析不同信息集合或不同交易数据。串行配置还可以生成可以在整个证明系统中携带的滚动哈希。这种配置可以允许证实已经应用了来自集合的交易数据。以这种方式,粘合值的滚动性质可以生成哈希值链,该哈希值链指示已经考虑并且使用了来自集合的数据。在验证哈希值时,验证器系统可以确认由每个证明系统生成的各个滚动粘合值。该过程允许对证明的验证以及对来自集合的数据的利用的指示。

当证明系统以并行配置而被配置时,粘合值过程还可以允许并行处理。在这种配置中,由于可以并行地执行多个证明,因此可以更快的方式执行处理。不同证明系统可以各自生成粘合值。然后可以将粘合值传输到可以收集粘合值的数据请求系统和/或另一证明系统。收集证明系统可以执行表示多个并行证明系统的另一哈希。以这种方式,证明的并行生成可以提高处理速度。

虽然已经参考生成信用分数描述了以上示例,但本公开中所描述的实施例不限于该示例实施例。可以将zkp方案以及证明链应用于其它类型的数据以及其它类型的函数或算法。例如,数据可以是传感器数据,诸如来自不同温度传感器的温度读数。算法可以包括:计算平均温度读数。各个读数可以是基础私有数据,而证明系统的输出可以是平均温度。可以将粘合值或哈希值用作证明系统已应用算法并包括各个温度传感器读数的证明。算法还可以计算其它统计测量,诸如总和、平均或方差。其它传感器测量可以包括由麦克风捕获到的音频和/或使用图像传感器捕获到的图像。

相似地,可以将zkp方案和/或证明链应用于证书认证系统。例如,潜在雇员候选者可以提供来自各种源的凭证的证明。例如,候选者可以取决于请求雇主而提供有效的学校成绩单、平均成绩点的证明、大学排名和/或其它信息。经由使用区块链技术、证明链以及zkp方案,候选者可以将可验证信息提供给雇主。虽然已经描述了这些实施例,但可以将zkp方案和证明链应用于各种其它密码环境、区块链环境和/或其它可验证通信环境。

在以下描述中,相对于图1a至图1b以及图2更详细地描述了zkp方案和证明链方案。然后,相对于图3、图4以及图5描述了示例区块链实施例。

图1a描绘了根据一些实施例的串行证明链配置100a的框图。一个或多个证明系统110的证明链可以允许证实过程的划分和/或可以允许多个并行过程,以生成证明。证明系统110可以包括一个或多个逻辑电路或逻辑系统。也可以以证明链配置来布置不同数据源,使得可以编译来自不同源的证明。在实施例中,证明链配置可以用于生成与基础交易数据的多个实例有关的证明。每个证明系统110可以基于基础交易数据的一个或多个实例来生成证明,使得证明系统110的链处理整个交易数据的集合。

证明系统110可以单独地访问区块链135以检索交易数据和/或可以从不同源检索交易数据。在实施例中,系统(诸如数据供应系统110)可以从区块链135和/或从本地存储器检索信息并且将信息供应给证明系统110。在这种情况下,数据供应系统110可以充当处理和生成来自证明系统110的证明的管理器。

使用证明链配置可以改善zk-snark方案和/或可以提供用于生成zkp的方法。证明链可以允许多个证实过程在不同证明系统110处发生。证实过程的这种划分可以允许多个并行过程来生成证明。另外,证明链可以允许在基础数据的不同源处生成证明。在zk-snark方案中,证明可以按以下方式表示:

(π)=prove(pk,public_data,private_data)

为了利用多个中间证明执行迭代计算,证明可以表示如下:

(πi)=prove(pk,public_datai,private_datai)

鉴于这种划分的处理和证明生成,证明链可以使用“粘合值”来连接证明系统110。粘合值可以表示在证明系统110之间传递的哈希值。粘合值可以维护每个链式证明的验证和认证,同时还保留基础计算的zkp性质。以这种方式,粘合值可以表示所应用的函数或计算的证明。

在实施例中,特定证明系统110a可以分析与特定证明系统110a对应的数据。例如,数据可以是分配给证明系统110a的交易数据、传感器数据、证书数据和/或其它数据。证明系统110a可以应用函数,以生成与数据对应的函数结果。证明系统110a还可以生成表示函数结果与随机数的哈希的粘合值。以这种方式,证明系统110a可以生成中间数据结构,该中间数据结构被定义为表示随机数和函数结果的“glue_private”。函数结果在下文被称为“carry_data”。如果证明系统110a是初始证明系统110和/或不执行函数处理,则函数结果可以是基础交易数据。通过对“glue_private”执行哈希操作,特定证明系统110可以生成在下文中所陈述的“glue”定义中所指示的粘合值:

glue_privatei:=(randomi;carry_datai)

gluei:=hash(glue_privatei)

最后,证明系统110a可以生成证明,以允许下游用户验证函数结果的完整性。为了生成证明,可以生成如下文所阐述的public_datai和private_datai。随后,prove中的公共数据=(输入=x;输出=y)意味着x是计算证明(例如数独谜题)所需的输入,并且y是作为用其公共输入和私有输入(例如数独谜题的解的哈希)执行电路的结果的计算值。相同格式用于私有数据。

证明可以包括若干输入和/或若干输出:

public_datai:=(输入=gluei;输入=link_public_datai;输出=gluei)

privatedatai:=(输入=glue_privatei;输入=

link_private_datai;输出=glue_privatei)

link_public_datai可以指公共数据的部分,该部分表示到证明链中的单个链路的业务逻辑相关的公共输入。通过允许将新输入=x值并入public_datai和private_datai中,可以添加新规则和业务逻辑。例如,用于生成信用分数的公式可以改变。以这种方式,应用于基础数据的函数可以改变。link_private_datai可以指由特定证明系统110使用的基础数据。

证明系统110a然后可以将函数结果以及粘合值传递到证明系统110b。证明系统110b然后可以将函数应用于被分配给证明系统110b的特定交易数据。例如,证明系统110b可以基于第二交易数据来更新信用分数。证明系统110b还可以通过对更新后的函数结果和可以与第一随机数不同的另一随机数执行哈希操作来生成第二粘合值。

在实施例中,第二粘合值可以是更新后的函数结果、另一随机数以及第一粘合值的哈希。在该实施例中,第二粘合值可以执行第一粘合值的哈希,从而生成第二哈希程度。在这种情况下,“carry_datai”或函数结果可以以以下方式定义:

carry_datai:=(carry_averagei;carry_data_hashi)

其中,carry_data_hashi可以表示如从以下定义中所见的粘值:

carry_data_hashi=hash(carry_data_hashi-1;chunki))

chunki可以表示与特定证明系统110或传感器对应的数据或批处理元素,该特定证明系统110或传感器在特定迭代或列表位置处处理数据。当使证明系统110或传感器初始化时,carry_data0的第一实例可以定义为:

carry_data0:=(0;hash(0;chunk0))

chunk0可以是初始值或种子值。

鉴于这些定义,证明系统110a可以将函数结果或carry_data传递到后续证明系统110b。证明系统110a还可以传递表示函数结果与随机数的哈希值的粘合值。

以这种方式,证明系统110b可以继续将函数应用于函数结果以及在证明系统110b处维护的交易数据。证明系统110b然后可以基于更新后的函数结果与随机数的哈希来生成第二粘合值。可选择地,证明系统110b可以基于更新后的函数结果、随机数以及第一粘合值的哈希来生成第二粘合值。证明系统110b还可以生成证实结果的签名密钥。该过程可以继续,直到已经处理了来自集合的交易数据以生成最终函数结果和最终粘合值为止。

在实施例中,证明系统110a可以经由区块链(诸如区块链135)与证明系统110b进行通信。例如,证明系统110a可以向区块链135发布粘合值,以提交证明系统110a利用所分配的基础交易数据执行了特定函数的公共证明。然而,证明系统110a可以不暴露该基础交易数据。证明系统110a还可以向区块链135提交函数结果以演示计算。如果需要,此函数结果可以为哈希形式,以防止公共访问。如果期望更多隐私,那么可以在不公开暴露的情况下将函数结果从证明系统110a私下地传送到证明系统110b。证明系统110b然后可以在不必查看由证明系统110a使用的基础交易数据的情况下执行进一步处理。在这种配置中,可以容易地将新交易数据和/或进一步处理添加至链,以继续更新函数结果。

在每个证明系统110更新函数结果并且生成粘合值之后,最终证明系统110可以产生最终函数结果。例如,在每个证明系统110已经考虑了交易数据的每个实例之后,最终函数结果可以是信用分数数值。最终证明系统110然后可以将最终函数结果直接或经由区块链135传输到数据请求系统140。

关于验证,验证器可以验证证明。验证器可以是证明系统110和/或数据请求系统140。验证器可以使用以下算法来验证证明。算法可以包括基于粘合值的每个证明的迭代验证。

last_glue←空值

对于所有πi,进行public_datai=(gluei-1,link_public_datai,gluei)

已验证←verify(vki,πi,public_datai)

如果已验证≠真,那么

返回假

结束

如果last_glue≠空值且last_glue≠gluei那么

返回假

结束条件

last_glue←gluei

循环结束

返回真

在实施例中,验证器可以确认已验证每个证明或zk-snark证明并且确认gluei==gluei-1。

图1b描绘了根据一些实施例的并行证明链接配置100b的框图。并行证明链配置100b可以包括证明系统110、区块链135和/或数据请求系统140。并行证明链配置100b可以包括可为非均匀和/或非线性的配置。这种配置可以形成曲线图或二维配置。尽管使用证明系统110的并行化,但即使预先不知道基础数据的大小或量也可以提高证明的生成速度。

如参考并行证明链配置100b所描述的证明系统110可以以与如参考串行证明链配置100a所描述的证明系统110相似的方式操作。证明系统110可以包括一个或多个逻辑电路或逻辑系统。每个证明系统110可以处理交易数据的一个或多个实例。可以从区块链135检索交易数据。每个证明系统110然后可以将函数或算法应用于交易数据的对应实例。每个证明系统然后可以生成函数结果和/或粘合值。单个粘合值可以表示函数结果与随机数的哈希值。以这种方式,证明系统110可以单独地和/或并行地处理交易数据。另外,交易数据可以是非均匀的。以这种方式,可以编译不同类型的数据,同时仍然提供数据的有效性的证明。

在证明系统110生成函数结果和/或粘合值之后,证明系统110可以将函数结果和/或粘合值传输到数据请求系统140。这些单个结果可以表示与由数据请求系统140请求的不同数据元素对应的单个zkp。

在实施例中,为了水平地缩放证明,并行证明链配置100b可以准备见证(witness),以生成证明。见证可以是为非确定性多项式时间类别或np问题生成的值。见证可以允许证实者向验证器证实np陈述的有效性。准备见证可以是并行证明链配置100b的设置中的预处理步骤。预处理可以是比生成证明更快的过程。在完成见证预处理之后,可以并行地生成证明。可以将相同预处理应用于证明的验证。

在实施例中,证明系统110可以将函数结果和/或粘合值传输到一个或多个端部证明系统110,该端部证明系统编译函数结果和/或粘合值。端部证明系统110可以将数据封装和/或组织成数据包,该数据包可以被传输到数据请求系统140。例如,特定证明系统110b可以从证明系统110a接收第一粘合值并且基于接收到的第一粘合值来生成第二粘合值。证明系统110b还可以从证明系统110c接收第三粘合值。使用第二粘合值和第三粘合值,证明系统110b可以生成zkp,该zkp指示已经验证了函数的应用。证明系统110b然后可以向区块链发布zkp。

虽然串行证明链配置100a和并行证明链配置100b以其相应配置显示证明系统110,但是证明系统110也可以是串行证明与并行证明的混合。例如,一个或多个证明系统110可以串行操作,而一个或多个其它证明系统可以并行操作。在任一配置中,即使预先不知道证明的大小(或交易数据量),也可以将较大证明分解为固定和/或重复的部分。证明系统110的模块性可以允许改变部分的灵活性。

证明系统110还可以帮助区分包括重复部分和改变部分的证明。例如,发证实体(诸如大学、学校、政府机关和/或其它实体)可以向实体(诸如个人、公司或其它实体)颁发证书(诸如学历证书、执照和/或其它凭证)。第三方(诸如招聘人员、顾客、客户端或其它第三方)可能希望验证证书的真实性和/或执行与证书有关的计算。例如,第三方可能希望计算平均成绩点或与就业条件相对应的另一因素。在这种情况下,重复部分可以包括用于证实证书通过发证实体颁发和发布的过程。改变部分可以包括对来自第三方的不同查询的答案,查询诸如(1)证书是否由排名前5的大学中的一者颁发;(2)平均成绩点是否超过3.8;或(3)是否存在微积分课程的及格成绩。

在该示例中,因为证实证书由发证机构颁发的重复部分可以在整个查询中重复,所以可以分配特定证明系统110a来为重复部分生成证明。关于其它三个单个查询,可以分配三个不同的证明系统110b、110c以及110d来为单个查询生成证明。在这种配置中,可以将证明系统110a放置成与证明系统110b、110c以及110d中的每一个进行串行通信。例如,证明系统110a可以生成指明证书被颁发的函数结果。函数结果可以是逻辑测试为真的指示符。证明系统110a然后可以使用与随机数的哈希基于该函数结果来生成粘合值。证明系统110a然后可以将函数结果和粘合值传递到证明系统110b、110c以及110d中的每一个。证明系统110b、110c以及110d然后可以并行地操作以执行其单独分析。

以这种方式,证明系统110可以以串行和并行方式布置。还可以考虑具有各种不同函数的其它数据类型。可以使用由每个证明系统110生成的粘合值来执行验证。

图2描绘了示出根据一些实施例的用于链接证明的方法200的流程图。应参考图1a描述方法200;然而,方法200不限于该示例实施例。

在实施例中,证明系统110可以利用方法200来生成证明的链。虽然参考证明系统110描述了方法200,但可以在任何计算装置上执行方法200,任何计算装置诸如例如参考图11所描述的计算机系统和/或处理逻辑,该处理逻辑可以包括硬件(例如电路系统、专用逻辑、可编程逻辑、微代码等)、软件(例如在处理装置上执行的指令)或其组合。

应理解的是,可能并不需要所有步骤来执行本文中所提供的公开。另外,如本领域的普通技术人员将理解的,一些步骤可以同时执行或以与图2中所示的顺序不同的顺序执行。

在202处,证明系统110可以接收第一数据。取决于证明系统110在证明系统110的链中的位置,第一数据可以表示初始化数据或来自先前证明系统的函数结果。例如,证明系统110a可以用表示接收到的第一数据的种子数据来进行初始化。然而,如果证明系统110b正在执行方法200,那么可以从证明系统110a接收第一数据。该第一数据可以表示由证明系统110a基于在证明系统110a处分析的交易数据而确定的函数结果。

在204处,证明系统110可以接收第一哈希值,其中,第一哈希值是第一数据与第一随机数的哈希。哈希值可以是如先前所描述的粘合值。在这种情况下,证明系统110b可以从先前证明系统110(诸如证明系统110a)接收第一粘合值。证明系统110a可能已经基于第一数据与第一随机数的哈希生成了第一粘合值。

在206处,证明系统110可以将函数应用于第一数据和第二数据,以生成函数结果。针对证明系统110b,第二数据可以表示分配给证明系统110b的基础交易数据。在206中,证明系统110b可以将函数应用于从证明系统110a接收到的第一数据和第二数据,以生成函数结果。该函数结果可以表示在证明系统110a处应用的函数的更新版本。例如,如果使用由证明系统110a和110b应用的函数来确定信用分数,那么证明系统110b可以使用第二数据来更新信用分数。相似地,如果函数生成来自若干温度传感器的平均温度读数,那么第一数据可以基于第一温度测量来表示第一滚动平均值。在206中,证明系统110b可以基于由第二数据表示的第二温度测量来更新滚动平均。在这种情况下,函数结果可以是第一温度测量和第二温度测量的平均。在实施例中,函数和函数结果可以包括算法,该算法被配置为解决如先前参考混合的串行和并行配置方案所讨论的不同数据类型。

在208处,证明系统110可以对函数结果与第二随机数执行哈希操作,以生成第二哈希值。该第二哈希值可以是第二粘合值。第二粘合值可以用于验证来自证明系统110b的证明和更新后的函数结果。哈希操作可以对第二粘合值进行加密。

在210处,证明系统可以向区块链135发布第二哈希值。第二哈希值可以是第二粘合值。取决于证明的链的配置,证明系统110b可以将第二粘合值递送给后续证明系统110c和/或可以将函数结果确认为已经考虑了来自集合的每个交易数据的最终结果。

如果后续证明系统110仍然保留,那么证明系统110b可以将更新后的函数结果传输到后续证明系统110c。取决于隐私考虑,证明系统110b可以私下递送该中间函数结果和/或可以以哈希格式在区块链135上发布中间函数结果。相似地,证明系统110b可以私下和/或经由在区块链135上发布来将第二粘合值递送给证明系统110c。在区块链135上发布可以提供已将函数应用于特定交易数据的公共证明。以这种方式,还可以使用粘合值来验证来自证明系统110的每个单个结果。另外,执行方法200的特定证明系统110可以位于链中的不同位置中。

如果执行方法200的特定证明系统110是链中的最终证明系统110,那么证明系统110可以向数据请求系统140供应最终函数结果以及经由zkp的处理的验证。以这种方式,证明系统110的链可以提供划分的处理以及在生成最终函数结果时考虑了数据集合的每个元素的验证。经由使用粘合值,可以在不将数据请求系统140暴露于由每个证明系统110考虑的基础交易数据的情况下在仍然维护证明的零知识性质的同时验证每个函数结果。

在实施例中,数据供应系统可以生成零知识证明(“zkp”)。zkp可以指示函数或算法已经被应用于基础私有数据。数据供应系统可以将zkp提供给数据请求系统,以供应数据供应系统已应用所指示的函数或算法的证明。zkp还可以指示基础私有数据已经被用于生成函数结果。数据供应系统还可以使用区块链来提供基础交易数据的公共验证。使用zkp,数据供应系统可以将数据供应系统应用了函数的证明供应给数据请求系统。数据供应系统然后可以将函数结果和zkp提供给数据请求系统。数据请求系统然后可以验证zkp来确认数据供应系统已将算法应用于基础私有数据。以这种方式,数据供应系统可以在不必提供基础私有数据和/或将该数据暴露于数据请求系统的情况下将结果供应给数据请求系统。

为了说明非限制性示例,数据供应系统可以是由用户操作的计算机系统。数据供应系统可以维护与用户对应的私有数据。数据请求系统可以是金融机构计算系统。使用数据供应系统的用户可能希望向数据请求系统供应信用分数,同时保持对用户自身的个人交易信息的隐私。在这种情况下,用户可以不使用第三方来计算信用分数。

为了使金融机构接受来自用户的自我计算的信用分数,金融机构可以要求与用户对应的基础交易数据的证明以及基于基础数据的正确计算的证明。以这种方式,计算可以是用于计算信用分数的特定算法。

为了验证用于计算信用分数的数据是有效的交易数据,数据供应系统可以使用区块链。区块链可以表示分布式数字分类账,该分布式数字分类账具有表示交易数据的区块。区块可以包括交易的密码哈希。使用区块链,数据供应系统可以提交可由交易验证系统验证的交易数据。例如,当用户进行会影响用户的信用分数的购买或交易时,用户可以将交易提交给区块链。交易验证系统可以是交易的另一方。以这种方式,交易验证系统可以验证如在区块链上记录的交易。多个交易验证系统可以验证区块链上的多个交易。鉴于存储在区块链上的编码值或哈希值,用户的私有数据可以在仍然可验证的同时保持私有。

在将此信息提交给区块链的情况下,数据请求系统可能希望验证数据供应系统是否使用存储在区块链上的数据并且不使用用户编制的数据。另外,数据请求系统可能希望验证是否使用正确的信用分数算法基于正确的基础私有数据来计算信用分数。

鉴于这些目标,数据供应系统可以确认所使用的数据与提交给区块链的数据相匹配。例如,如果提交给区块链的数据为哈希格式,那么数据供应系统可以重新计算与当前数据的哈希,并且比较结果以确定哈希是否与存储在区块链上的哈希数据相匹配。如果哈希数据匹配,那么数据供应系统可以使用数据来计算函数。例如,数据供应系统可以使用私有基础数据来计算信用分数。

数据供应系统然后可以应用验证算法,以提供使用了正确输入的认证。验证算法可以使用混淆程序来将签名密钥嵌入到结果。数据供应系统可以用混淆程序对计算结果进行签名,以指示使用了正确的信用分数公式并且指示未编制初始输入。数据供应系统和数据请求系统可以在用于混淆程序的协议上达成一致,使得数据请求系统可以依赖于签名密钥以指示所提供的信息是正确的。当数据请求系统接收到签名密钥以及结果时,正确的签名密钥可以指示已经在数据供应系统处验证和认证了结果。密钥的生成和接收可以表示zkp,从而允许数据请求系统在不直接访问基础私有数据的情况下验证接收到的结果。

图3描绘了根据一些实施例的区块链环境300的框图。区块链环境300可以包括数据供应系统310、交易验证系统320、区块链管理器330、区块链335和/或数据请求系统340。数据供应系统310、交易验证系统320和/或数据请求系统340可以与区块链管理器330交互以访问区块链335。该访问可以包括:读取区块和/或向区块链335提交新信息。在实施例中,存储在区块中的数据可以为哈希格式以维护所存储的数据的隐私。

数据供应系统310可以包括配置为与区块链管理器330、交易验证系统320和/或数据请求系统340接口连接的一个或多个处理器、存储器、服务器、路由器、调制解调器和/或天线。数据供应系统310可以经由局域网(lan)、无线网络和/或经由互联网与区块链管理器330、交易验证系统320和/或数据请求系统340进行通信。数据供应系统310可以经由区块向区块链335提交数据。

区块链管理器330和/或区块链335可以包括数字分类账,该数字分类账可以跨分散化和/或分布式计算机节点记录交易。在实施例中,可以不追溯地更改提交给区块链335的信息的区块。区块链管理器330可以包括被配置为验证和/或审计交易数据的一个或多个节点。基于区块链335的配置,数据供应系统310、交易验证系统320和/或数据请求系统340也可以是计算节点,该计算节点被配置为与由区块链管理器330表示的其它节点进行通信。区块链335可以是公共区块链、私有区块链、半分散化区块链和/或联盟区块链。

在区块链环境100中,数据供应系统310可以在不暴露基础私有数据的情况下经由区块链将信息提供给数据请求系统340。以这种方式,数据供应系统310可以生成zkp。zkp可以指示已经将函数或算法应用于基础私有数据。数据供应系统310可以将函数或算法应用于私有数据,且然后将zkp提供给数据请求系统340,以供应将所指示的函数或算法应用于私有数据的证明。zkp还可以指示基础私有数据已经被用在生成函数结果中。

为了向数据请求系统340验证尚未将算法应用于编制的数据,数据供应系统310可以使用区块链335来提交数据。例如,如果基础私有数据是用户与第二方之间的交易数据,那么数据供应系统310可以将交易数据提交给区块链335,并且交易验证系统320可以提交相同的交易数据和/或在区块链335上确认交易数据。可以将数据存储为哈希以保护隐私。以这种方式,区块链335上的公共存储装置可以指示交易以可验证方式发生。

当数据供应系统310将算法或函数应用于基础数据时,数据供应系统310可以通过比较存储在区块链335上的哈希值来确认正在使用正确数据。例如,如果提交给区块链335的数据为哈希格式,那么数据供应系统310可以重新计算与当前数据的哈希,并且比较结果以确定哈希是否与存储在区块链335上的哈希数据相匹配。如果哈希数据匹配,那么数据供应系统310可以使用数据来计算函数。此运算可以生成数据请求系统340所期望的函数结果。

数据供应系统310然后可以应用验证算法,以提供使用了正确输入的认证。验证算法可以使用混淆程序来将签名密钥嵌入函数结果。数据供应系统310可以用混淆程序对函数结果进行签名,以指示应用了正确函数或算法和/或指示未编制初始输入。数据供应系统310和数据请求系统340可以在用于混淆程序的协议上达成一致,使得数据请求系统340可以依赖于签名密钥以指示所提供的信息是正确的。当数据请求系统140接收到签名密钥以及结果时,正确的签名密钥可以指示已经在数据供应系统310处验证和认证了结果。密钥的生成和接收可以表示zkp,从而允许数据请求系统340在不直接访问基础私有数据的情况下验证接收到的结果。

为了说明示例,使用数据供应系统310的用户可能希望基于用户的基础交易数据将信用分数供应给数据请求系统340。然而,用户可能不希望将基础交易数据暴露于数据请求系统340,而是想要向数据请求系统340提供zkp,以指示尚未编制所提供的信用分数。用户想要指示已经使用真实交易数据来计算信用分数并指示已经使用了用于计算信用分数的正确公式。

为了演示已经使用了正确的交易数据,数据供应系统310可以将交易数据提交给区块链335。交易验证系统320可以表示交易的另一方并且可以确认所提交的交易数据是有效的。例如,数据供应系统310的用户可能已经使用交易验证系统320从机构接收到抵押贷款。交易数据可以记录与抵押贷款有关的信息,诸如,例如贷款金额或贷款期限。相似地,用户可以具有学生贷款和/或支付学生贷款。相同或不同的交易验证系统320可以确认区块链335上的学生贷款交易。可以使用哈希函数对此信息进行编码,以保护数据的隐私,同时仍将信息公开公布到区块链335。交易验证系统320然后可以确认交易以由数据供应系统310所描述的方式发生。

为了计算信用分数,数据供应系统310可以使用如在数据供应系统310处维护的基础交易数据。数据供应系统310可以通过重新计算哈希函数并且将哈希值与存储在区块链335上的哈希进行比较来验证此交易数据与存储在区块链335上的交易数据相匹配。如果哈希值匹配,那么基础数据与存储在区块链335上的数据相匹配。数据供应系统310可以在生成zkp时使用此验证来指示数据供应系统310尚未编制交易数据。

使用已验证的交易数据,数据供应系统310可以将信用分数计算算法应用于已验证的交易数据。信用分数计算算法可以与验证算法串行或并行地应用。例如,验证算法可以产生信用分数作为函数结果,同时还应用混淆程序以将签名密钥嵌入结果。数据供应系统310可以用混淆程序对所计算的信用分数结果进行签名,以指示使用了正确的信用分数公式并且指示未编制初始输入。混淆程序还对签名密钥进行加密,以使得使结果不会被篡改。数据请求系统340可以依赖于密钥,以表明所提供的结果未被伪造。

数据供应系统310和数据请求系统340可以在用于混淆程序的协议上达成一致,使得数据请求系统340可以依赖于签名密钥以指示所提供的信息是正确的。当数据请求系统340接收到签名密钥以及结果时,正确的签名密钥可以指示已经在数据供应系统310处验证和认证了结果。密钥的生成和接收可以表示zkp,从而允许数据请求系统在不直接访问基础私有数据的情况下验证接收到的结果。在实施例中,数据供应系统310可以使用零知识简明非交互式知识论证(“zk-snark”)来创建zkp。

在实施例中,数据供应系统310可以使用如参考图1a所描述的串行证明链配置100a和/或如参考图1b所描述的并行证明链配置100b,以生成一个或多个证明。证明系统110可以使用来自数据供应系统310的硬件进行实例化和/或包括数据供应系统310外部的硬件。证明系统110可以包括一个或多个逻辑电路或逻辑系统。例如,数据供应系统310可以与一个或多个证明系统110进行通信,以生成一个或多个证明。一个或多个证明可以表示函数的应用中的中间处理步骤,以演示在生成函数结果时已经考虑了集合中的交易数据的每个实例。

在实施例中,当数据供应系统310使用证明系统110时,可以使用最终证明系统110来将最终函数结果和对应粘合值传输到数据请求系统340,以表示值和zkp。为了验证zkp是有效的并且验证已经在没有篡改的情况下从交易数据的每个实例生成了最终函数结果,数据供应系统310和/或数据请求系统340可以使用从每个证明系统110生成的每个粘合值来验证每个证明。如果每个粘合值返回已验证的结果,那么可以将函数结果视为有效的并经过证实的。

图4描绘了根据一些实施例的显示子系统接口的区块链环境400的框图。区块链环境400可以以与如参考图3所描述的区块链环境300相似的方式操作。例如,区块链环境400可以包括数据供应系统410,该数据供应系统可以以与数据供应系统310相似的方式操作;交易验证系统420,该交易验证系统可以以与交易验证系统320相似的方式操作;区块链管理器430,该区块链管理器可以以与区块链管理器330相似的方式操作;区块链435,该区块链可以以与区块链335相似的方式操作;和/或数据请求系统440,该数据请求系统可以以与数据请求系统340相似的方式操作。然而,区块链环境400显示了有助于zkp的生成和验证的若干子系统。

数据供应系统410可以包括算法管理器412和/或哈希接口414。算法管理器412可以管理算法和/或函数的应用,该算法和/或函数将应用于由数据供应系统410维护的基础私有数据。例如,算法管理器412可以维护参考图3所描述的信用分数公式。取决于应用,算法管理器412可以维护和/或应用对应算法,以在数据供应系统410处生成函数结果。

应用管理器412还可以应用验证算法,以指示函数结果不包括编制的数据和/或并未应用假算法。该验证算法可以应用混淆程序以生成签名密钥,该签名密钥指示尚未编制基础交易数据。在实施例中,应用管理器412可以使用隔离环境,在该隔离环境中,可以使用嵌入在安全硬件内的密码密钥来运行运算并签名。应用管理器412可以对所执行的结果和代码两者进行签名。为了验证代码和/或结果的执行,验证器可以检查结果是否用适当密钥进行了签名。该密钥可以表示zkp,可以将zkp连同函数结果传输到数据请求系统440,以在不供应基础交易数据的情况下证实函数结果。

在实施例中,数据供应系统410可以使用哈希接口414来以安全方式将函数结果提供给数据请求系统440。哈希接口414可以以可在数据请求系统440处以可由哈希接口444解码的方式对函数结果和/或zkp进行编码或加密。以这种方式,即使数据供应系统410经由区块链管理器430向区块链435提交函数结果,其它各方也可能无法对所提交的数据进行解密。以这种方式,函数结果可以被加密且可由预期数据请求系统440读取。

相似地,交易验证系统420可以包括哈希接口424。哈希接口424可以允许交易验证系统420对存储在与数据供应系统410对应的区块链435上的交易数据进行解密。例如,使用哈希接口414,数据供应系统410可以以加密格式将交易数据提交给区块链435。交易验证系统420然后可以使用哈希接口424对所提交的数据进行解密以确认和/或拒绝交易数据。相似地,交易验证系统420可以经由哈希接口424将交易数据提交给区块链435。可以从可包括一个或多个存储器存储装置的交易数据库422提交交易数据。交易验证系统420还可以通过将交易数据与存储在交易数据库422中的交易数据进行比较来验证来自区块链435的所提交的交易数据。

鉴于提交给区块链435的哈希信息,可以在每个过程中维护不同许可。例如,尽管可能存在可能公开访问的区块链435上,但是数据供应系统410和交易验证系统420可以维护与基础交易数据有关的隐私。相似地,数据供应系统410和数据请求系统440还可以在函数结果的通信中维护隐私。尽管可以将基础交易数据存储在区块链435中,但数据请求系统440可能由于哈希而无法查看和/或访问基础交易数据。以这种方式,即使使用相同的区块链435,数据供应系统410也可以防止数据请求系统440访问基础交易数据,同时仍然基于基础交易数据来提供可信任的函数结果。

图5描绘了示出根据一些实施例的用于生成zkp的方法500的流程图。应参考图3描述方法500;然而,方法500不限于该示例实施例。

在实施例中,数据供应系统310可以利用方法500来生成zkp。虽然参考数据供应系统410描述了方法500,但可以在任何计算装置上执行方法500,任何计算装置诸如例如参考图11所描述的计算机系统和/或处理逻辑,该处理逻辑可以包括硬件(例如电路系统、专用逻辑、可编程逻辑、微代码等)、软件(例如在处理装置上执行的指令)或其组合。

应理解的是,可能并不需要所有步骤来执行本文中所提供的公开内容。另外,如本领域的普通技术人员将理解的,一些步骤可以同时执行或以与图5中所示的顺序不同的顺序执行。

在502处,数据供应系统310可以从区块链335检索交易数据。检索到的交易数据可以为哈希格式并且可以通过数据供应系统310进行解密。数据供应系统310可以使用检索到的交易数据来验证本地维护的交易数据。例如,数据供应系统310可以将本地存储的交易数据的哈希版本与检索到的交易数据进行比较。如果数据供应系统310识别出哈希版本匹配,那么数据供应系统310可以将本地存储的数据指明为已验证的交易数据。

相似地,在实施例中,数据供应系统310可以检索数据以用作交易数据。例如,数据供应系统310可以不本地存储和/或管理数据。以这种方式,数据供应系统310可以从区块链335检索交易数据以用于计算所应用的函数或算法。

在504处,数据供应系统310可以将混淆算法(obfuscationalgorithm)应用于交易数据,以产生函数结果和指示了混淆算法的应用的编码签名。混淆算法可以取决于算法的配置而包括一个或多个子步骤。在504中,数据供应系统310可以将函数应用于交易,以生成函数结果。函数可以是来自交易数据的期望处理。例如,在实施例中,函数可以是信用分数的计算、传感器测量的平均、记录的编译和/或其它算法。函数还可以计算其它统计测量,诸如总和、平均或方差。其它传感器测量可以包括由麦克风捕获到的音频和/或使用图像传感器捕获到的图像。

在生成函数结果时,混淆算法可以生成指示已经应用了正确函数的编码签名。编码签名可以是签名密钥,可以在函数结果内对该签名密钥进行编码和/或可以将该签名密钥编码为单独数据结构。混淆算法还可以指示交易数据尚未经由编码签名的生成而被更改和/或伪造。以这种方式,混淆程序可以生成zkp。

虽然此过程可以包括一个或多个子步骤,但在实施例中,混淆算法可以同时生成函数结果和/或编码签名。例如,验证算法可以验证基础交易数据以确保没有交易数据被伪造,同时还计算函数结果和编码签名。

在506处,数据供应系统310可以向第三方系统传输函数结果和/或编码签名。第三方系统可以是例如数据请求系统340。在实施例中,数据供应系统310可以响应于来自数据请求系统340的提示或请求消息而提供此信息。在实施例中,数据供应系统310可以在没有提示的情况下传输此信息。

通过接收函数结果以及编码签名,第三方系统可以辨识数据供应系统310使用了已验证的交易数据和/或应用了对应算法来生成有效的函数结果。以这种方式,第三方系统可以接收zkp并且辨识证明。此证明可以用作函数结果可以被信任的验证。

图6是示出了通信系统的可能实施方式的框图。两个或更多个实体可以彼此通信。在该示例中,五个实体621、622、623、624以及625可以通过网络610彼此通信。在一些实施例中,任何实体可以与所有其它实体进行通信,而在其它实施例中,实体间的通信限制于特定实体对。在一些实施例中,实体可以彼此直接通信和/或通过第三方系统(诸如连接到网络610的云平台和/或服务器)直接通信。在一些实施例中,网络610可以包括互联网、电话网络、蜂窝网络、卫星通信网络、私有通信网络、虚拟私有网络(vpn)、连接成对实体的一组点对点通信线路、电子邮件服务器、即时消息传送服务器、文件服务器、将数字和/或非数字媒体从一个实体递送到另一实体的封包递送服务等的任何组合。在一些实施例中,实体(诸如实体621、622、623、624以及625)可以包括例如如图7中所描述的计算机化系统700。在一些实施例中,实体(诸如实体621、622、623、624以及625)可以包括台式计算机、膝上型计算机、平板电脑、移动装置、服务器计算机、应用、云计算平台、虚拟机等。

在一些实施例中,一个或多个实体可以访问一个或多个数据源。在一些示例中,数据源可以无法被一些实体访问,而在其它示例中,数据源可以被所有实体访问。在此示例中,实体621可以访问数据源631和数据源632,实体622可以访问数据源632,并且实体623可以访问数据源633。在一些示例中,数据源可以包括存储在存储器单元中的数字信息,诸如文件、数据库、数字记录、数字图像等。在一些示例中,数据源可以包括来自一个或多个传感器的读数。此类传感器的一些示例可以包括音频传感器;图像传感器;加速度计;定位传感器;化学传感器;温度传感器;气压计;环境传感器;压力传感器;接近传感器;电阻抗传感器;电压传感器;电流传感器等。

图7是示出了计算机化系统700的可能实施方式的框图。在此示例中,计算机化系统700包括:一个或多个电源710;一个或多个存储器单元720;一个或多个处理单元730;以及一个或多个通信模块740。在一些实施方式中,可以将附加组件包括在计算机化系统700中,而可以排除上文所列出的一些组件。在一些实施例中,电源710和/或通信模块740可以从计算机化系统700的实施方式中排除。在一些实施例中,计算机化系统700可以进一步包括以下一项或多项:一个或多个音频输出单元;一个或多个视觉输出单元;一个或多个触觉输出单元;一个或多个传感器;一个或多个时钟;一个或多个用户输入装置;一个或多个键盘;一个或多个鼠标;一个或多个触摸板;一个或多个触摸屏;一个或多个天线;一个或多个输出装置;一个或多个音频扬声器;一个或多个显示屏;一个或多个增强现实显示系统;一个或多个led指示灯等。

在一些实施例中,电源710可以被配置为向计算机化系统700供电。一些可能的实施示例电源710可以包括:一个或多个电池;一个或多个电容器;与外部电源的一个或多个连接;一个或多个电源转换器;一个或多个发电机;上述各项的任何组合等。

在一些实施例中,处理单元730可以被配置为执行软件程序,例如存储在存储器单元720中的软件程序、通过通信模块740接收到的软件程序等。处理单元730的一些可能的实施示例可以包括:一个或多个单核处理器;一个或多个多核处理器;一个或多个控制器;一个或多个应用处理器;一个或多个片上系统处理器;一个或多个中央处理单元;一个或多个图形处理单元;一个或多个神经处理单元;上述各项的任何组合等。在一些示例中,所执行的软件程序可以将信息存储在存储器单元720中。在一些情况下,所执行的软件程序可以从存储器单元720检索信息。

在一些实施例中,处理单元730可以支持软件的受保护的执行,从而确保了执行特定版本的软件和/或确保了由软件所使用的存储器未经外部源修改。例如,处理单元730可以允许软件创建和/或使用存储器的私有区域,保护所选择的代码和/或数据免于公开和/或修改,检测和/或防止对代码和/或数据的篡改,对所选择的代码和/或数据进行安全加密等。

在一些实施例中,通信模块740可以被配置为接收和/或传输信息。通信模块740的一些可能的实施示例可以包括:有线通信装置;无线通信装置;光学通信装置;电通信装置;无线电通信装置;声波和/或超声波通信装置;电磁感应通信装置;红外通信装置;传输器;接收器;传输和接收装置;调制解调器;网络接口;无线usb通信装置;无线lan通信装置;wi-fi通信装置;lan通信装置;usb通信装置;火线通信装置;蓝牙通信装置;蜂窝通信装置(诸如gsm、cdma、gprs、w-cdma、edge、cdma2000等);卫星通信装置等。

在一些实施方式中,可以通过通信模块740传输和/或接收控制信号和/或同步信号。在一些实施方式中,可以将通过通信模块740接收到的信息存储在存储器单元720中。在一些实施方式中,可以使用通信模块740来传输从存储器单元720检索到的信息。在一些实施方式中,可以使用通信模块740来传输和/或接收输入和/或用户输入。在一些实施方式中,可以通过通信模块740传输和/或接收输出信息。

图8示出了含有软件模块的存储器的示例性实施例。包括在存储器单元720中的是提交模块810、分析模块820以及一组所允许的查询850。模块810、820可以含有用于供至少一个处理装置(诸如处理单元730)、供计算机化系统700等执行的软件指令。提交模块810和分析模块820可以协作以提供对所提交的信息的分析和/或使用所提交的软件。

在一些实施例中,提交模块810可以对信息的实例和/或版本、对软件的版本等进行提交。例如,可以访问数据源的一个或多个实体可以使用提交模块810对来自数据源的信息的实例和/或版本进行提交、对从来自数据源的信息的实例和/或版本中导出的信息进行提交、对用于从来自数据源的信息的实例和/或版本中导出信息的软件的版本进行提交、对通过预处理来自数据源的信息的实例和/或版本而获得的经过预处理的信息进行提交、对用于预处理来自数据源的信息的实例和/或版本的软件的版本进行提交等。在一些示例中,提交模块810可以使用密码提交方案对所提交的信息的实例和/或版本和/或所提交的软件的版本进行签名,从而产生密码签名。在一些情况下,可以在稍后的阶段使用密码签名来验证信息的给定实例和/或版本是最初签名的信息的实例和/或版本和/或验证软件的给定版本是最初签名的软件的版本。密码签名可以被传输到另一实体、被传输到第三方、被密封并给到外部实体以进行妥善保管、被公开可用、被公布在区块链上等。在一些示例中,提交模块810可以通过对信息的实例和/或版本和/或软件的版本应用哈希函数(诸如抗冲突哈希函数)来产生密码签名。在一些示例中,提交模块310可以通过使用数字签名(诸如rsa签名、lamport签名、merkle签名、rabin签名等)对信息的实例和/或版本进行签名来产生密码签名。在一些示例中,所提交的信息的实例和/或所提交的软件的版本的副本可以被提供给外部实体、可以被提供给第三方以进行妥善保管、可以被存储在存储器中等。

在一些实施例中,分析模块820可以至少部分地基于来自数据源的信息来计算一个或多个值。例如,可以访问数据源的一个或多个实体可以使用分析模块820至少部分地基于来自数据源的信息来计算一个或多个值。在一些示例中,分析模块820可以通过将函数应用于来自数据源的信息来计算值。在另一示例中,分析模块820可以通过使用算法或计算机软件处理来自数据源的信息来计算值。在一些示例中,所计算的值可以被传输到外部实体、被提供给第三方以进行妥善保管、被存储在存储器中等。在一些示例中,分析模块820可以至少部分地基于所提交的信息的实例和/或版本(诸如使用提交模块810提交的信息的实例和/或版本)来计算值。在一些示例中,分析模块820可以至少部分地使用所提交的函数、算法和/或软件(诸如使用提交模块810提交的函数、算法和/或软件)来计算值。分析模块820的可能的执行方式的示例可以包括:重复执行模块的连续执行;在所选择的时间处执行过程的周期性执行;在检测到触发时的执行(其中,这种触发的示例可以包括来自用户的触发、来自另一过程的触发、通过通信模块740接收到的触发等),作为下面所描述的过程900的一部分;上述各者的任何组合等。在一些示例中,分析模块820可以至少部分地基于一个或多个参数来计算一个或多个值。

在一些实施例中,所允许的查询850的集合可以包括与一个或多个查询有关的信息。在一些示例中,可以将所允许的查询850的集合维护在存储器单元720内,例如作为数据结构、列表、数据库等。在一些示例中,可以例如通过处理单元730基于查询标识信息来选择和/或访问一个或多个查询。在一些示例中,可以例如通过处理单元730将查询添加到所允许的查询850的集合和/或从所允许的查询850的集合中移除查询,而在其它示例中,所允许的查询850的集合是永久的。查询标识信息的示例可以包括查询索引、存储器中的偏移等。在一些示例中,来自所允许的查询850的集合的查询可以不具有未指定的参数、具有一个或多个未经指定的参数等。此类未指定的参数的示例可以包括:数值、字符串、名称、标识符、索引、公式、函数、算法、计算机指令等。在一些示例中,来自所允许的查询850的集合的具有至少一个未指定的参数的查询可以伴有所允许的值的指定。例如,所允许的值的这种指定可以包括所允许的值的列表、所允许的值的范围、检查值并决定是否允许该值的函数和/或算法和/或软件等。

图9示出了用于对查询作出响应的过程900的示例。在一些示例中,过程900以及其中的所有单独步骤可以通过以下各项的各个方面执行:处理单元730、计算机化系统700等。例如,过程900可以由执行存储在存储器单元720内的软件指令的处理单元730来执行。过程900可以包括:获得查询(步骤902);生成响应(步骤904);以及提供反馈(步骤906)。在一些实施方式中,过程900可以包括一个或多个附加步骤,而可以修改或排除上文所列出的步骤中的一些。在一些实施方式中,可以以不同顺序执行图9中所示的一个或多个步骤和/或可以同时执行一组或多组步骤,反之亦然。例如,步骤904可以在步骤902之后和/或与步骤902同时执行,步骤906可以在步骤904和/或步骤906之后和/或与步骤904和/或步骤906同时执行等。过程900的可能的执行方式的示例可以包括:一旦正常执行过程结束就返回到过程的开始的连续执行;在所选择的时间处执行过程的周期性执行;在检测到触发时的执行(其中,这种触发的示例可以包括来自用户的触发、来自另一过程的触发等);在接收到查询时的执行;上述各者的任何组合等。

在一些实施例中,获得查询(步骤902)可以包括:获得一个或多个查询。在一些示例中,获得查询(步骤902)可以包括:使用通信模块740接收一个或多个查询。在一些示例中,获得查询(步骤902)可以包括:从存储器单元720读取一个或多个查询。在一些示例中,可以从另一实体、从用户、从另一过程、从过程1000等接收由步骤902获得的一个或多个查询。在一些示例中,获得查询(步骤902)可以包括:获得查询标识信息以及至少部分地基于查询标识信息从所允许的查询850的集合来检索和/或访问查询。例如,获得查询标识信息可以包括:使用通信模块740来接收查询标识信息;从存储器单元720读取查询标识信息;从另一实体接收查询标识信息;从用户接收查询标识信息;从另一过程接收查询标识信息等。

在一些实施例中,获得查询(步骤902)可以进一步包括:获得与查询有关的一个或多个参数。此类参数的示例可以包括:数值、字符串、名称、标识符、索引、公式、函数、算法、计算机指令等。在一些示例中,获得与查询有关的一个或多个参数可以包括:使用通信模块740来接收参数;从存储器单元720读取参数;从另一实体接收参数;从用户接收参数;从另一过程接收参数等。在一些示例中,可以使用相同手段和/或从相同源获得查询标识信息和与查询有关的参数,而在其它示例中,可以从一个源获得查询标识信息,并且可以从其它一个或多个源获得与查询有关的参数中的至少一者。

在一些实施例中,获得查询(步骤902)可以包括:例如通过根据所允许的值的指定(诸如伴随所允许的查询850的集合中的查询的所允许的值的指定)来检查所获得的参数,来验算一个或多个所获得的参数是有效的。在一些示例中,在确定至少一个所获得的参数无效时,步骤902可以提供所获得的参数无效的通知。例如,可以将通知提供给用户、提供给另一实体、提供给另一过程等。例如,可以将通知写入存储器单元720、可以使用通信模块740传输通知等。在一些示例中,在确定至少一个所获得的参数无效时,步骤902可以用有效参数替换无效参数。在一些示例中,在确定至少一个所获得的参数无效时,可以忽略查询。

在一些实施例中,获得查询(步骤902)可以包括:获得由多个子查询组成的查询和/或可被分解为多个子查询的查询。在一些示例中,获得查询(步骤902)可以进一步包括:至少部分地基于多个子查询来获得与多个子查询有关的排序信息和/或确定与多个子查询有关的排序信息。排序信息可以指定一些子查询需要在其它子查询之前进行处置、指定一些子查询需要在其它子查询的结果满足某一标准时进行评估、指定一些子查询不应在其它子查询的结果满足某一标准时进行评估、指定一些子查询应该基于其它子查询的结果以不同的方式进行评估等。

在一些实施例中,生成响应(步骤904)可以包括:生成对一个或多个查询(例如对由步骤902获得的一个或多个查询)的一个或多个响应。在一些示例中,所生成的响应可以至少部分地基于一个或多个参数,诸如由步骤902获得的参数。在一些实施例中,生成响应(步骤904)可以包括:生成对多个子查询(例如对由步骤902获得的多个子查询)的一个或多个响应。在一些情况下,生成响应(步骤904)可以确保相对于信息的相同实例和/或版本(例如相对于使用提交模块810提交的信息的实例和/或版本)处置对所有子查询的响应。在一些示例中,所生成的响应可以包括由分析模块820计算的值和/或基于由分析模块820计算的值。在一些示例中,生成响应(步骤904)可以包括:评估函数、评估算法和/或执行软件。所生成的响应可以包括函数的结果、算法的输出和/或软件的输出和/或基于函数的结果、算法的输出和/或软件的输出。在一些示例中,由步骤904使用的函数、算法和/或软件的至少一部分可以包括所提交的函数、所提交的算法和/或所提交的软件,诸如使用提交模块810提交的函数、算法和/或软件。

在一些实例中,所生成的响应可以至少部分地基于来自数据源的信息。例如,生成响应(步骤904)可以由可以访问数据源的一个或多个实体执行,且所生成的响应可以至少部分地基于来自数据源的信息。在一些实例中,所生成的响应可以至少部分地基于信息的所提交的实例和/或所提交的版本,诸如来自数据源的信息的所提交的实例和/或所提交的版本。例如,所生成的响应可以基于使用提交模块810提交的信息的实例和/或版本。

在一些示例中,生成响应(步骤904)可以至少部分地由可以访问数据源的实体、由从一个实体接收查询并从另一实体接收信息并且基于该信息来生成对查询的响应的受信任的第三方、由这种受信任的第三方维护的计算机化系统等来执行。在一些示例中,生成响应(步骤904)可以至少部分地由使用受保护的执行机制的处理单元730执行,从而确保了执行实施步骤904的软件的特定版本和/或确保了由实施步骤904的软件所使用的存储器不被外部源修改。

在一些实施例中,生成响应(步骤904)可以包括:对与执行步骤904有关的信息进行签名。例如,签名信息可以包括以下各项的任何组合:与执行步骤904相关联的时间信息,诸如执行开始时间、执行结束时间、执行持续时间、运行时间等;空间信息,与执行步骤904相关联的执行的位置,诸如执行的至少部分发生的位置;与参与执行步骤904的硬件的至少一部分有关的信息,诸如通信装置的系统标识符、处理器标识符、mac地址等;与在步骤904的执行中使用的计算机函数和/或算法和/或软件有关的信息,诸如上述的副本、标识信息和/或所提交的版本;对步骤904的输入,诸如查询、子查询、参数等;在步骤904的执行中访问和/或使用的数据源的标识符和/或描述;与在步骤904的执行中使用的信息的实例和/或版本有关的信息和/或与信息的所提交的实例和/或所提交的版本有关的信息;在步骤904的执行中所涉及的实体和/或各方的标识符和/或描述;在步骤904的执行中使用的和/或由步骤904引用的区块链的标识符和/或描述等。

在一些示例中,生成响应(步骤904)可以包括:使用密码签名对与执行步骤904有关的信息进行签名。在一些情况下,密码签名可以用于验证密码签名确实由步骤904产生和/或验证密码签名是在特定信息上产生的。在一些情况下,密码签名可以被传输到另一实体、被传输到第三方、被密封并被给到外部实体以进行妥善保管、被公开可用、被公布在区块链上等。可以例如通过对签名信息应用哈希函数(诸如抗冲突哈希函数)来产生密码签名。在另一示例中,可以使用数字签名(诸如rsa签名、lamport签名、merkle签名、rabin签名等)来产生密码签名。在一些示例中,生成响应(步骤904)可以包括:通过受信任的第三方对与步骤904的执行有关的信息进行签名。

在一些实施例中,生成响应(步骤904)可以包括:生成zkp。例如,生成响应(步骤904)可以包括:生成关于数据源的状态、数据源的内容、信息的实例和/或版本的内容、信息的所提交的实例和/或所提交的版本的内容、由步骤904使用的代码和/或函数、由步骤904访问的公共数据库和/或区块链的内容等的zkp。

在一些实施例中,提供反馈(步骤906)可以包括:提供一个或多个反馈。在一些示例中,提供反馈(步骤906)可以包括:使用通信模块240传输一个或多个反馈。在一些示例中,提供反馈(步骤906)可以包括:将一个或多个反馈写入存储器单元720。在一些示例中,可以将由步骤906提供的一个或多个反馈传输到其它实体、提供给一个或多个用户、提供给其它过程等。在一些示例中,可以将由步骤906提供的反馈密封并给到外部实体以进行妥善保管、使其公开可用、将其公布在区块链上等。在一些示例中,由步骤906提供的反馈可以至少部分地基于由步骤904生成的一个或多个响应。在一些示例中,可以响应于一个或多个查询(例如响应于由步骤902获得的一个或多个查询和/或子查询)而提供由步骤906提供的一个或多个反馈。可以将反馈提供给发起查询的实体、用户和/或过程;可以将反馈提供给不同实体、用户和/或过程等。反馈可以包括对查询的引用、与查询有关的信息、与关联于查询的参数有关的信息等。

在一些实施例中,由步骤906提供的反馈可以包括与问题有关的指示。此类问题的一些示例可以包括:一个或多个查询的问题,例如由步骤902获得的一个或多个查询和/或子查询的问题;发起查询的实体、用户和/或过程的问题,例如在针对这样的查询的不适当的许可的情况下;与查询相关联的一个或多个参数的问题,诸如无效值;由步骤904所使用的信息的实例和/或版本的问题和/或使用提交模块810提交的信息的实例和/或版本的问题;由分析模块820计算的值的问题;函数、算法和/或软件的评估和/或函数、算法和/或软件的评估中的问题;数据源的问题等。

在一些实施例中,由步骤906提供的反馈可以包括与步骤904的执行有关的信息。例如,反馈可以包括与由步骤904所使用的函数、算法和/或软件有关的信息,在一些示例中包括与所提交的函数、所提交的算法和/或所提交的软件(诸如使用提交模块810提交的函数、算法和/或软件)有关的信息。在一些示例中,反馈可以包括与在步骤904的执行所涉及的实体和/或各方有关的信息。在一些示例中,反馈可以包括与参与步骤904的执行的硬件的至少一部分有关的信息,诸如通信装置的系统标识符、处理器标识符、mac地址等。在一些示例中,反馈可以包括与和步骤904的执行相关联的时间信息有关的信息,该时间信息诸如执行开始时间、执行结束时间、执行持续时间、运行时间等;空间信息,与步骤904的执行相关联的执行的位置,诸如执行的至少一部分发生的位置等。

在一些实施例中,由步骤906提供的反馈可以包括与由步骤906访问和/或使用的数据源有关的信息。例如,反馈可以包括与数据源有关的标识信息、与数据源的状态有关的标识信息、从数据源获得的信息的至少一部分的副本等。在一些实施例中,由步骤906提供的反馈可以包括与信息的实例和/或版本有关的信息。例如,反馈可以包括从信息中导出的数据、信息的至少一部分的副本等。在一些实施例中,由步骤906提供的反馈可以包括与信息的所提交的实例和/或所提交的版本(诸如使用提交模块810提交的信息的实例和/或版本)有关的信息。例如,反馈可以包括从信息中导出的数据、信息的至少一部分的副本、所提交的信息的标识符、与所提交的信息相关联的签名等。在一些实施例中,由步骤906提供的反馈可以包括在步骤904的执行中使用的和/或由步骤904引用的区块链的标识符和/或描述。在一些实施例中,由步骤906提供的反馈可以包括由步骤904产生的一个或多个签名,包括上文所描述的签名。例如,反馈可以包括一个或多个密码签名、一个或多个哈希值等。在一些示例中,反馈可以进一步包括签名信息的至少一部分。

在一些实施例中,由步骤906提供的反馈可以包括一个或多个zkp。例如,由步骤906提供的反馈可以包括由步骤904生成的一个或多个zkp。在一些示例中,zkp可以考虑数据源的状态、数据源的内容、信息的实例和/或版本的内容、信息的所提交的实例和/或所提交的版本的内容、由步骤904使用的代码和/或函数、由步骤904访问的公共数据库和/或区块链的内容等。

图10示出了用于对查询作出响应的过程1000的示例。在一些示例中,过程1000以及其中的所有单独步骤可以通过以下各项的各个方面执行:处理单元730、计算机化系统700等。例如,过程1000可以由执行存储在存储器单元720内的软件指令的处理单元730来执行。过程1000可以包括:提供查询(步骤1002);获得反馈(步骤1004);以及验证响应(步骤1006)。在一些实施方式中,过程1000可以包括一个或多个附加步骤,而可以修改或排除上文所列出的步骤中的一些步骤。例如,可以从过程1000中排除步骤1002和/或步骤1006。在一些实施方式中,可以以不同顺序执行图10中所示的一个或多个步骤和/或可以同时执行一组或多组步骤,反之亦然。例如,步骤1006可以在步骤1004之后和/或与步骤1004同时执行等。过程1000的可能的执行方式的示例可以包括:一旦过程正常执行结束就返回到过程的开始的连续执行;在所选择的时间处执行过程的周期性执行;在检测到触发时的执行(其中,这种触发的示例可以包括来自用户的触发、来自另一过程的触发等);在接收到反馈时的执行;上述各项的任何组合等。

在一些实施例中,提供查询(步骤1002)可以包括:提供一个或多个查询。在一些示例中,提供查询(步骤1002)可以包括:使用通信模块740传输一个或多个查询。在一些示例中,提供查询(步骤1002)可以包括:将一个或多个查询写入存储器单元720。在一些示例中,可以将由步骤1002提供的一个或多个查询提供给另一实体、提供给用户、提供给另一过程、提供给过程900等。在一些示例中,提供查询(步骤1002)可以包括:提供查询标识信息,例如标识所允许的查询850的集合中的查询的查询标识信息。

在一些实施例中,提供查询(步骤1002)可以包括:提供与查询有关的一个或多个参数。此类参数的示例可以包括:数值、字符串、名称、标识符、索引、公式、函数、算法、计算机指令等。在一些示例中,提供与查询有关的一个或多个参数可以包括:使用通信模块740来传输参数;将参数写入存储器单元720;将参数提供给另一实体;将参数提供给用户;将参数提供给另一过程;将参数提供给过程900和/或步骤902等。在一些示例中,可以一起提供与查询有关的查询和参数,而在其它示例中,可以分别提供查询和参数。在一些示例中,可以一起提供与查询有关的所有参数,而在其它示例中,可以部分地提供参数。

在一些实施例中,获得反馈(步骤1004)可以包括:获得一个或多个反馈。在一些示例中,获得反馈(步骤1004)可以包括:使用通信模块740接收一个或多个反馈。在一些示例中,获得反馈(步骤1004)可以包括:从存储器单元720读取一个或多个反馈。在一些示例中,可以从另一实体、从用户、从另一过程、从过程900和/或步骤906等接收由步骤1004获得的一个或多个反馈。在一些示例中,获得反馈(步骤1004)可以包括:从区块链、从公开可用的数据库等读取一个或多个反馈。在一些示例中,可以由步骤1006例如响应于由步骤1002提供的查询而提供由反馈1004获得的反馈。在一些示例中,由步骤520获得的反馈可以包括由步骤1004生成的一个或多个响应。

在一些实施例中,获得反馈(步骤1004)可以包括:至少部分地基于由步骤1004获得的一个或多个反馈来提供信息。例如,可以将信息提供给用户、提供给另一实体、提供给另一过程等。例如,可以将信息写入存储器单元720、可以使用通信模块740传输信息等。

在一些实施例中,由步骤1004获得的反馈可以包括与由步骤1002提供的至少一个查询相关联的一个或多个反馈。在一些示例中,步骤1004可以至少部分地基于由步骤1004获得的一个或多个反馈并基于对应查询来提供信息。在一些示例中,过程1000可以返回到步骤1002以基于所获得的反馈的内容来提供附加查询。例如,附加查询可以细化原始查询。

在一些实施例中,由步骤1004获得的反馈可以包括与问题有关的一个或多个指示。在一些示例中,步骤1004可以提供与所指示的问题有关的通知。例如,可以将通知提供给用户、提供给另一实体、提供给另一过程等。例如,可以将通知写入存储器单元720、可以使用通信模块740传输通知等。在一些示例中,由步骤1004获得的反馈可以包括与由步骤1002提供的至少一个查询的问题有关的一个或多个指示,并且在一些情况下,过程1000可以返回到步骤1002以校正至少一个查询。

在一些实施例中,验证响应(步骤1006)可以包括:验证一个或多个响应,例如,验证在由步骤1004获得的反馈中包含的一个或多个响应和/或由步骤904生成的一个或多个响应。在一些示例中,一个或多个响应可以包括例如以一个或多个密码签名、一个或多个哈希值等的形式的一个或多个签名。步骤1006可以例如使用密码工具来验证签名。在一些示例中,一个或多个响应可以包括一个或多个计算值,并且步骤1006可以例如使用验算函数和/或可接受的值列表或范围来验证计算值的有效性。在一些示例中,步骤1006可以通过将一个或多个响应与先前的响应和/或结果进行比较、通过将一个或多个响应与例如以公共数据库和/或区块链的形式的公开可用的数据进行比较等来验证响应。

在一些示例中,一个或多个响应可以包括与用于生成响应的部分的函数、算法和/或软件有关的信息,在一些示例中包括与所提交的函数、所提交的算法和/或所提交的软件(诸如使用提交模块810提交的函数、算法和/或软件)有关的信息。步骤1006可以例如使用密码工具来验证所提交的函数、所提交的算法和/或所提交的软件的有效性。步骤1006可以验证使用了函数、算法和/或软件的预期版本。

在一些示例中,一个或多个响应可以包括与参与响应的至少一部分的生成的硬件的至少一部分有关的信息,诸如通信装置的系统标识符、处理器标识符、mac地址等。步骤1006可以验证使用了预期硬件。

在一些示例中,一个或多个响应可以包括与和步骤904的执行相关联的时间信息有关的信息,该时间信息诸如执行开始时间、执行结束时间、执行持续时间、运行时间等;空间信息,与步骤904的执行相关联的执行的位置,诸如执行的至少一部分发生的位置等。步骤1006可以验证时间和/或空间信息与其它可用数据一致、在预期范围内、遵守某些给定规则等。

在一些示例中,一个或多个响应可以包括与在响应的至少一部分的生成中访问和/或使用的数据源有关的信息。例如,响应可以包括与数据源有关的标识信息、与数据源的状态有关的标识信息、从数据源获得的信息的至少一部分的副本等。步骤1006可以验证使用了期望数据源、验证关于数据源的信息与关于数据源的其它和/或先前信息一致、验证在不同响应的生成中使用了相同数据源等。在一些示例中,一个或多个响应可以包括对在响应的至少一部分的生成中访问和/或使用的公共数据库和/或区块链的引用和/或与在响应的至少的部分的生成中访问和/或使用的公共数据库和/或区块链有关的信息。例如,响应可以包括与公共数据库和/或区块链有关的标识信息、与公共数据库和/或区块链的状态有关的标识信息、从公共数据库和/或区块链获得的信息的至少一部分的副本等。步骤1006可以验证使用了预期公共数据库和/或区块链、验证关于公共数据库和/或区块链的信息与公共数据库和/或区块链一致、验证在不同响应的生成中使用了相同公共数据库和/或区块链等。

在一些示例中,一个或多个响应可以包括与在响应的至少一部分的生成中访问和/或使用的信息的实例和/或版本有关的信息。例如,响应可以包括从信息中导出的数据、信息的至少一部分的副本等。步骤1006可以验证使用了信息的预期实例和/或版本、验证关于信息的实例和/或版本的信息与关于信息的实例和/或版本的其它和/或先前信息一致、验证在不同响应的生成中使用了信息的相同实例和/或版本等。在一些情况下,信息的实例和/或版本可以是信息的所提交的实例和/或所提交的版本。在此类情况下,步骤1006可以例如使用密码工具来进一步验证信息的所提交的实例和/或所提交的版本的有效性。

在一些示例中,一个或多个响应可以包括一个或多个zkp,诸如由步骤904生成的zkp。步骤1006可以例如使用密码工具来验证zkp的有效性。在一些示例中,zkp中的至少一个zkp可以应对数据源的状态、数据源的内容、信息的实例和/或版本的内容、信息的所提交的实例和/或所提交的版本的内容、用于执行过程900和/或步骤904的代码、由步骤904访问的公共数据库和/或区块链的内容等。步骤1006可以使用zkp来验证与上述状态和/或内容有关的信息。

在一些示例中,一个实体可以使用有形财产作为抵押物来从另一实体贷款。此类有形财产的一些示例可以包括:汽车、飞机、轮船、不动产、库存等。贷款人可能希望获得关于具有或不具有当前估计值的抵押物的状态和状况的报告,但可能无法访问这种信息。借款人可以访问关于抵押物的信息,但可能会例如由于隐私问题、由于法规、由于法律义务等而不想与贷款人共享这种信息。在这种示例中,借款人可以例如使用过程900在不与贷款人共享原始信息的情况下提供关于抵押物的状态和状况的信息。例如,作为非限制性示例,假设实体621可以从实体624贷款,并且假设关于抵押物的信息的至少一部分被包含在数据源631和632内。例如,数据源632可以含有由实体622产生的维护记录,且数据源631可以含有所有权记录。实体624无法访问数据源631和632,但可以使用过程1000的步骤1002来生成对由实体621执行的过程900的查询。实体621处的过程900可以使用步骤904来生成关于抵押物的状态和/或当前评估的足够证明,并且使用步骤906来将该证明提供给实体624处的过程1000。实体624处的过程1000可以使用步骤1004来接收证明,并且使用步骤1006来验算证明。在步骤1006中,实体624可以验算用于生成证明的代码、在证明的生成中核查的数据源、所计算的评估等。

图11描绘了可用于实施各种实施例的示例计算机系统。

各种实施例可以例如使用一个或多个熟知计算机系统(诸如图11中所示的计算机系统1100)来实施。例如,可以使用一个或多个计算机系统1100来实施本文中所讨论的任何实施例及其组合和子组合。

计算机系统1100可以包括一个或多个处理器(也称为中央处理单元或cpu),诸如处理器1104。处理器1104可以连接至通信基础设施或总线1106。

计算机系统1100还可以包括(多个)用户输入/输出装置1103(诸如监测器、键盘、指向装置等),该用户输入/输出装置可以通过(多个)用户输入/输出接口1102与通信基础设施606进行通信。

处理器1104中的一个或多个处理器可以是图形处理单元(gpu)。在实施例中,gpu可以是处理器,该处理器是被设计成处理数学上密集的应用的专用电子电路。gpu可以具有并行结构,该并行结构对较大数据区块(诸如计算机图形应用、图像、视频等共有的数学上密集的数据)的并行处理为高效的。

计算机系统1100还可以包括主要存储器或主存储器608,诸如随机存取存储器(ram)。主要存储器1108可以包括一级或多级缓存。主要存储器1108可以在其中存储有控制逻辑(即,计算机软件)和/或数据。

计算机系统1100还可以包括一个或多个辅助存储装置或存储器1110。辅助存储器1110可以包括例如硬盘驱动器1112和/或可移除存储装置或驱动器1114。可移除存储驱动器1114可以是软盘驱动器、磁带驱动器、光盘驱动器、光学存储装置、磁带备份装置和/或任何其它存储装置/驱动器。

可移除存储驱动器1114可以与可移除存储单元1118交互。可移除存储单元1118可以包括计算机可用或可读存储装置,该计算机可用或可读存储装置在其上存储有计算机软件(控制逻辑)和/或数据。可移除存储单元1118可以是软盘、磁带、光盘、dvd、光存储盘和/或任何其它计算机数据存储装置。可移除存储驱动器1114可以从可移除存储单元1118读取和/或可以写入可移除存储单元1118。

辅助存储器1110可以包括用于允许计算机程序和/或其它指令和/或数据由计算机系统1100访问的其它手段、装置、组件、工具或其它方法。此类手段、装置、组件、工具或其它方法可以包括例如可移除存储单元1122和接口1120。可移除存储单元1122和接口1120的示例可以包括程序盒和盒式接口(诸如在视频游戏装置中发现的程序盒和盒式接口)、可移除存储芯片(诸如eprom或prom)和相关联的插座、记忆棒和usb端口、存储卡和相关联的存储卡插槽和/或任何其它可移除存储单元和相关联的接口。

计算机系统1100可以进一步包括通信或网络接口1124。通信接口1124可以使得计算机系统1100能够与外部装置、外部网络、外部实体等(利用附图标记1128单独地和共同地引用)的任何组合进行通信和交互。例如,通信接口1124可以允许计算机系统1100通过通信路径1126与外部或远程装置1128进行通信,该通信路径可以是有线和/或无线的(或它们的组合),并且其可以包括lan、wan、互联网等的任何组合。可以经由通信路径1126将控制逻辑和/或数据传输到计算机系统1100并且可以经由通信路径1126从计算机系统1100传输控制逻辑和/或数据。

仅举几个非限制性示例,计算机系统1100还可以是个人数字助理(pda)、台式工作站、膝上型计算机或笔记本计算机、上网本、平板电脑、智能电话、智能手表或其它可穿戴装置、器具、物联网的一部分和/或嵌入式系统中的任何一种或它们的任何组合。

计算机系统1100可以是客户端或服务器(其通过任何递送范例来访问或托管任何应用和/或数据),包括但不限于,远程或分布式云计算解决方案;本地或预置软件(基于“预置”云的解决方案);“即服务”模型(例如内容即服务(caas)、数字内容即服务(dcaas)、软件即服务(saas)、托管软件即服务(msaas)、平台即服务(paas)、桌面即服务(daas)、框架即服务(faas)、后端即服务(baas)、移动后端即服务(mbaas)、基础设施即服务(iaas)等);和/或混合模型,该混合模型包括前述示例或其它服务或递送范例的任何组合。

计算机系统600中的任何适用的数据结构、文件格式以及模式可以从以下标准中导出:包括但不限于,javascript对象符号(json)、可扩展标记语言(xml)、另一种标记语言(yaml)、可扩展超文本标记语言(xhtml)、无线标记语言(wml)、messagepack、xml用户界面语言(xul)或单独或组合地使用的任何其它功能上相似的表示。可替代地,可以排它地或与已知或开放标准组合地使用专有数据结构、格式或方案。

在一些实施例中,包括在其上存储有控制逻辑(软件)的有形的非暂时性计算机可用或可读介质的有形的非暂时性设备或制品在本文中也可以称为计算机程序产品或程序存储装置。这包括但不限于,计算机系统1100、主要存储器1108、辅助存储器1110和可移除存储单元1118和1122以及体现前述的任何组合的有形制品。这种控制逻辑在被一个或多个数据处理装置(诸如计算机系统1100)执行时可以使此类数据处理装置如本文中所描述进行操作。

基于本公开中所含有的教导,对于(多个)相关领域的技术人员而言显而易见的是,如何使用除图11中所示出的之外的数据处理装置、计算机系统和/或计算机架构来制作和使用本公开的实施例。特定地,实施例可以与除本文中所描述的那些之外的软件、硬件和/或操作系统实施方式一起操作。

在一些实施例中,可以接收基于第一基础数据生成的第一函数结果。另外,可以接收第一证明,该第一证明在不需要显露第一基础数据的情况下验证第一函数结果的准确性。例如,第一证明可以包括zkp。另外,可以接收第一值,该第一值是从使用第一函数结果执行的单向密码操作和/或使用第一函数结果执行的双向加密操作和/或使用第一函数结果执行的多向加密操作中导出的。在一些示例中,可以从先前证明系统接收第一函数结果、第一证明和/或第一值。在一些示例中,可以例如使用通信装置(诸如通信接口1124)通过数字通信网络、通信基础设施1106等来接收第一函数结果、第一证明和/或第一值。在一些示例中,可以从存储器读取第一函数结果、第一证明和/或第一值、从远程电子装置(诸如网络服务器、计算机化装置等)获得第一函数结果、第一证明和/或第一值等。在一些示例中,可以从区块链获得第一函数结果、第一证明和/或第一值。

可以至少部分地基于第一函数结果和第二基础数据来评估第二函数结果。例如,可以将可变业务逻辑函数应用于第一函数结果和第二基础数据,以评估第二函数结果。在另一示例中,所选择的计算机函数可以用于根据第一函数结果和第二基础数据来评估第二函数结果。

另外,可以使用另一单向密码操作和/或另一双向加密操作和/或另一多向加密操作,基于第二函数结果来生成第二值。另外,可以生成基于第二值的第二证明,使得第二证明能够在不需要显露第二基础数据的情况下验证第二函数结果的准确性。例如,第二证明可以包括zkp。

在一些示例中,可以发布第二证明和/或第二值。例如,可以例如使用通信装置(诸如通信接口1124)通过数字通信网络、通信基础设施1106等来传输第二证明和/或第二值。在一些示例中,可以将第一函数结果、第一证明和/或第一值存储在存储器中、可以将第一函数结果、第一证明和/或第一值提供给远程电子装置(诸如网络服务器、计算机化装置等)等。在一些示例中,第二证明和/或第二值可以发布在区块链上。

在一个示例中,第一函数结果可以包括进位数据(carrydata),并且第二函数结果可以包括基于第二基础数据的进位数据的更新版本。在另一示例中,第二函数结果可以独立于第一函数结果。在一些示例中,第一值和/或第二值中的每一个可以包括粘合值。例如,第一值和第二值可以各自包括至少一个粘合值,并且可以使用粘合值迭代地验证第一证明和第二证明。

在一些示例中,可以与生成第二证明并行地生成第三证明,并且第三证明可以至少部分地基于从第三基础数据生成的第三函数结果。另外,可以在预处理步骤中准备见证,以使得第二证明和第三证明能够并行地生成。

应理解的是,详细描述部分而非任何其它部分旨在用于解释权利要求书。其它部分可以阐述一个或多个(但并非如(多个)发明人所预期的所有)示例性实施例,且因此,不旨在以任何方式限制本公开或所附权利要求。

虽然本公开描述了示例性领域和应用的示例性实施例,但应理解的是,本公开不限于此。本公开的其它实施例和修改是可能的,并且在本公开的范围和精神内。例如,并且在不限制本段落的普遍性的情况下,实施例不限于图中所示和/或本文中所描述的软件、硬件、固件和/或实体。另外,实施例(无论是否在本文中明确地描述)对于本文中所描述的示例之外的领域和应用具有显著的实用性。

在本文中已经借助于示出指定功能及其关系的实施方式的功能构建块描述了实施例。为了便于描述,在本文中已经任意地定义了这些功能构建块的边界。只要适当地执行指定功能和关系(或其等效物),即可定义替代边界。此外,替代实施例可以使用与本文中所描述的那些顺序不同的顺序来执行功能块、步骤、操作、方法等。

本文中对“一个实施例”、“实施例”、“示例实施例”或相似短语的引用指示所描述的实施例可以包括特定特征、结构或特性,但每个实施例可能并不一定需要包括特定特征、结构或特性。此外,此类短语不一定是指相同实施例。另外,当结合实施例描述特定特征、结构或特性时,不管是否在本文中明确地提及或描述,将这种特征、结构或特性包含到其它实施例中将在(多个)相关领域中的技术人员的知识范围内。另外,可以使用表达“耦合”和“连接”及其派生词来描述一些实施例。这些术语不一定旨在作为彼此的同义词。例如,可以使用术语“连接”和/或“耦合”指示两个或更多个元件彼此直接物理或电接触来描述一些实施例。然而,术语“耦合”也可以意指两个或更多个元件彼此不直接接触,但仍彼此协作或相互作用。

本公开的广度和范围不应该受到上述示例性实施例中的任一者限制,而是应该仅根据以下权利要求书及其等效物来进行限定。

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