掌桥专利:专业的专利平台
掌桥专利
首页

用于验证身份属性信息的方法和系统

文献发布时间:2024-04-18 19:58:53


用于验证身份属性信息的方法和系统

本申请是2017年6月7日提交的申请号为201780041623.5且题为“用于验证身份属性信息的方法和系统”的发明专利申请的分案申请。

相关申请的交叉引用

本申请要求2016年7月8日提交的美国专利申请No.15/205,410的美国申请的权益和优先权。通过引用的方式将上述申请的全部公开内容合并于此。

技术领域

本公开涉及身份属性信息的验证,具体地,涉及使用特定配置的加盐和散列技术来使得在能够验证身份属性信息的同时还防止猜测身份属性信息的能力。

背景技术

为了保护信息,通常以难以检索或识别数据的方式存储敏感数据(例如,与个人相关的属性信息)。例如,可以对数据进行加密,使得只有能够获取适当的加密密钥的授权实体才能解密数据。然而,加密通常需要共享加密密钥,这有时可能是困难的,并且通过扩散敏感数据提供密钥被泄露的机会。已经开发了保护数据的替代方法是散列,其中从不能反转的数据生成散列值,这样就必须知道基础数据值以生成该特定散列值。

对于基础数据值的数据可能有较大差异的实例(例如,每个字符和空格改变得到的散列值的文档)来说,散列可能非常有效。如果使用了Merkle(梅克尔)树,则效果复杂化,这是因为不仅必须知道基础数据值,而且还必须知道生成Merkle树的数据的排序。然而,如果基础数据值是有限集合,则恶意实体可以访问大量的计算系统,能够散列每个可能的数据值以及Merkle树的潜在排序。例如,如果基础数据值是个人的出生日期,各种可能性是非常有限的,则强大的计算系统能够识别每个可能的散列值和Merkle树。

因此,需要一种技术解决方案,以使得能够对用于验证的识别属性信息和其他数据值进行散列和存储,并防止猜测基础数据值的能力。

发明内容

本公开提供了一种用于通过Merkle根验证数据值的系统和方法的描述。将随机数和数据值进行组合以保护所述数据不会通过对Merkle树中的数据值和后续值的猜测来被识别。因此,可以使用在散列和处理Merkle树之前组合的数据值和随机数,来向实体证明基础数据值以进行验证,从而能够快速验证和证明基础数据,同时即使基础数据值是有限集合的情况下也保护该数据不被泄露。

一种通过Merkle根验证数据值的方法,包括:将Merkle根存储在处理服务器的存储器中;由所述处理服务器的接收设备至少接收数据值、随机数和多个散列路径值;由所述处理服务器的生成模块通过组合所述数据值和所述随机数来生成组合值;由所述处理服务器的散列模块通过对所述组合值应用散列算法来生成第一散列值;由所述处理服务器的散列模块通过将所述散列算法应用于所述第一散列值和所述多个散列路径值中的第一散列路径值的组合来生成后续散列值;由所述处理服务器的散列模块通过使用所述多个散列路径值的下一个散列路径值和最新的后续散列值的组合,来重复生成后续散列值;以及由所述处理服务器的验证模块基于所述Merkle根和最新生成的后续散列值的比较来验证所述数据值。

一种用于通过Merkle根验证数据值的系统,包括:处理服务器的存储器,其被配置为存储Merkle根;所述处理服务器的接收设备,其被配置为至少接收数据值、随机数和多个散列路径值;所述处理服务器的生成模块,其被配置为通过组合所述数据值和所述随机数来生成组合值;所述处理服务器的散列模块,其被配置为:通过对所述组合值应用散列算法来生成第一散列值,通过将所述散列算法应用于所述第一散列值和所述多个散列路径值中的第一散列路径值的组合来生成后续散列值,以及通过使用所述多个散列路径值的下一个散列路径值和最新的后续散列值的组合,来重复生成后续散列值;以及所述处理服务器的验证模块,其被配置为基于所述Merkle根和最新生成的后续散列值的比较来验证所述数据值。

附图说明

当结合附图阅读时,从以下示例性实施例的详细描述中可以最好地理解本公开的范围。附图中包括以下图:

图1是示出根据示例性实施例的使用Merkle根验证数据值的高级系统架构的框图;

图2是示出根据示例性实施例的图1的使用Merkle根验证数据值的处理服务器的框图;

图3是示出根据示例性实施例的使用图2的处理服务器基于Merkle树中的节点验证数据值的过程;

图4是根据示例性实施例的用于使用图2的处理服务器验证数据值的Merkle树的框图;

图5是示出根据示例性实施例的用于通过Merkle根验证数据值的示例性方法的流程图;

图6是示出根据示例性实施例的计算机系统架构的框图。

根据下文提供的详细描述,本公开的其他应用领域将变得显而易见。应当理解,示例性实施例的详细描述仅用于举例说明目的,因此,并不旨在必然限制本公开的范围。

具体实施方式

专业术语

区块链-基于区块链的货币的所有交易的分类账。一个或多个计算设备可以构成可以被配置为将交易处理和记录为区块链中的区块的一部分的区块链网络。一旦完成了区块,就将该区块添加到区块链中并从而更新交易记录。在许多情况下,区块链可以是按照时间顺序的交易分类账,或者可以以适于区块链网络使用的任何其他顺序呈现。在一些配置中,区块链中记录的交易可以包括目的地地址和货币量,以使得区块链记录有多少货币可归属于特定地址。在某些情况下交易是金融的,而在有些情况下交易不是金融的,或者可以包括附加或不同的信息,例如,源地址、时间戳等。在一些实施例中,区块链还可以包括或者作为另一种选择包括作为交易的形式的几乎任何类型的数据,该数据被放置在或者需要放置在无需许可的分布式数据库中,该数据库维护防止被篡改和修改的不断增长的数据记录列表,即使是数据的操作员也防止其篡改和修改数据记录列表,并且可以由区块链网络通过工作量证明和/或与其相关联的任何其他合适的验证技术来对区块链进行确认和验证。在某些情况下,与给定交易有关的数据可以进一步包括附加到交易数据的不直接作为交易的一部分的附加数据。在某些情况下,在区块链中包含此类数据可以构成交易。在这种情况下,区块链可以不直接与特定的数字货币、虚拟货币、法定货币或其他类型的货币相关联。在某些情况下,可以在无需许可(例如,不受节制或不受限制)的情况下参与区块链(例如,作为提交和/或确认交易的节点)。在其他情况下,区块链可以是被许可的区块链,其中仅获得授权的计算设备可以作为节点操作,其中参与级别可以基于与其相关联的许可。

通过Merkle根验证数据值的系统

图1示出了用于通过使用Merkle根来验证数据值的系统100,其中,在将数据值包括在Merkle树中之前将其与随机数(nonce)组合以用于保护它。

系统100可以包括处理服务器102。下面更详细地讨论的处理服务器102可以被配置为通过使用Merkle树来验证数据值。系统100还可以包括数据提供者104。数据提供者104可以被配置为向处理服务器102提供数据值以对其进行验证。在某些情况下,数据值可以包括身份属性信息,例如,出生日期、姓名、地址、电话号码、社会保险号、税号等。在某些情况下,数据值可以是有限的一组数据值,例如,包含在一组有界的整数或其他类似值的集合中。

要由处理服务器102验证的数据值可以已经用于生成Merkle树,该Merkle树包括作为在Merkle树的生成中使用的多个数据值之一的所述数据值。用于生成Merkle树的方法对于相关领域的技术人员将是显而易见的。可以通过对每个数据值进行排序、使用一个或多个预定散列算法来散列每个数据值、散列结果值对、并且继续散列结果值对直到获得单个散列值,该单个散列值称为Merkle树的根或“Merkle根”。使用散列算法可以确保,如果单个数据值改变,则多个数据值的Merkle根是不同的。因此,可以通过确保使用所述数据值生成的Merkle根与先前识别的已经使用该数据值生成的Merkle根相匹配来执行数据值的验证。

在系统100中,在生成Merkle树之前,每个数据值可以与随机数组合。随机数可以是随机或伪随机数或其他值,例如,字母数字字符串,其可以在生成Merkle树之前与数据值组合。例如,在一个实施例中,随机数可以是随机的256比特整数。可以将随机数(例如,通过算术加法)加到数据值或以其他方式将随机数与数据值组合(例如,附加到数据值的末尾)。然后,作为生成Merkle树的一部分,可以将组合值进行散列。随机数的使用可以确保任何试图猜测每个数据值和Merkle树中的后续节点的恶意实体可能无法识别数据值,这是因为除非数据值与在Merkle树的生成中使用的相同的随机数组合,否则散列值将是不正确的。因此,只有成功猜测到每个数据值的随机数,才能够通过猜测来识别数据值。在这种情况下,对随机数的使用以及使用较长的随机数(例如,256比特)可能使得潜在组合的数量太大而不能由任何现有的计算系统或系统解决。因此,随机数可以保护数据值不被通过猜测而识别。

为了验证数据值,处理服务器102可以从数据提供者104接收数据值及其随机数。例如,数据值可以是数据提供者104可能想要检验的合同(例如,认证其中包括的语言、数字签名等),其中,数据提供者104可以在生成包括合同的Merkle树时向处理服务器102提供合同和添加到合同的随机数。处理服务器102可以将随机数添加到合同并生成Merkle树。如果得到的Merkle根与原始Merkle树的Merkle根匹配,则数据提供者104提供的合同可以被验证为在生成Merkle树时使用的相同的合同。

在处理服务器102和其他实体以及计算系统可公开访问多个数据值的Merkle树或至少Merkle树的Merkle根的情况下,这样的验证过程可能是有益的。在一个这样的实施例中,Merkle根可以是区块链网络106的一部分。区块链网络106可以包括多个计算节点,该多个计算节点被配置为生成和验证添加到区块链的区块,其中,每个区块至少包括区块头。区块头可以包括使用由该区块表示的所有交易值生成的Merkle根。在一些情况下,区块可以包括交易值,或者可以包括加密的、散列的或其他模糊或修改版本的交易值。处理服务器102可以使用这里讨论的方法通过将随后生成的Merkle根与包括在区块头中的Merkle根相匹配来验证交易值。在这种情况下,交易价值因此可以认证文件、验证账户余额、证明交易发生等。

在一些实施例中,处理服务器102可以访问整个Merkle树。在这样的实施例中,数据提供者104可以仅向处理服务器102提供数据值和相应的随机数。处理服务器102可以组合数据值和随机数并对结果进行散列,然后将结果与Merkle树中的对应节点进行比较。在一些情况下,处理服务器102还可以生成Merkle根并将生成的Merkle根与访问的Merkle树的根进行比较。

在其他实施例中,例如在处理服务器102从区块链网络106获得Merkle根的情况下,处理服务器102可以仅访问Merkle根。在这样的实施例中,数据提供者104可以向处理服务器102提供Merkle树的散列路径中的每个值。散列路径可以指包括Merkle树中的节点的每个散列值,当提供有数据值及其随机数时,使得能够无需访问其他数据值就生成Merkle根。在一些实例中,散列路径可以包括所需的最少量的散列值,其可以是在生成Merkle根时使用的多个数据值的的第n个根。在下面针对图4中所示的Merkle树提供关于散列路径的另外的信息。

处理服务器102可以组合数据值和随机数并对该组合值进行散列以获得第一散列值。然后,处理服务器102可以将该第一散列值与数据提供者104提供的第一散列路径值组合,然后散列该组合值。然后,处理服务器102可以将该后续值与下一个散列路径值组合并对结果进行散列,并且可以继续这样做直到获得单个值。该单个值对应于包括所提供的数据值的Merkle树的Merkle根。然后,处理服务器102可以确定该Merkle根是否匹配所识别的Merkle根(例如,从区块链识别的Merkle根)以验证所提供的数据值是否是在生成原始Merkle根时使用的相同的数据值。

这里讨论的方法和系统使得处理服务器102能够在给定用于生成Merkle根的数据值、其对应的随机数和散列路径的情况下验证所述数据值。随机数的使用可以确保即使在具有强大计算能力的情况下也不能猜测到用于生成Merkle根的数据值,同时仍然能够快速且方便地验证数据。散列路径的使用还可以确保在仅访问Merkle根的情况下来验证数据,而处理服务器102不必获得任何其他数据值或与其相关联的散列值,这可以提供维持更高级别的数据安全性的验证。因此,可以大大增加数据安全性而不牺牲数据验证的速度或效率。

处理服务器

图2示出了系统100中的处理服务器102的实施例。对于相关领域的技术人员来说显而易见的是,图2中所示的处理服务器102的实施例仅作为举例说明而提供,并且可能不是穷举所有可能的用于执行如本文所讨论的功能的处理服务器102的配置。例如,图6所示的并且在下面更详细讨论的计算机系统600可以是处理服务器102的合适配置。

处理服务器102可以包括接收设备202。接收设备202可以被配置为经由一个或多个网络协议在一个或多个网络上接收数据。接收设备202可以被配置为经由合适的通信网络和相应的网络协议从计算设备104和其他设备和系统接收数据。在一些实施例中,接收设备202可以包括多个设备,例如,通过不同网络接收数据的不同的接收设备(例如,通过局域网接收数据的第一接收设备和通过区块链网络接收数据的第二接收设备)。接收设备202可以接收电子传输的数据信号,其中,数据可以叠加或以其他方式编码到数据信号上,并且通过接收设备202接收数据信号来对数据信号进行解码、解析、读取或以其他方式获得所述数据。在一些情况下,接收设备202可以包括对接收到的数据信号进行解析以获得叠加在其上的数据的解析模块。例如,接收设备202可以包括解析器程序,其被配置为接收数据信号并且将接收到的数据信号变换成处理设备执行功能可用输入以完成本文描述的方法和系统。

接收设备202可以被配置为接收由数据提供者104电子地传输的数据信号,该数据信号至少叠加有或编码有数据值和相应的随机数。在一些情况下,该数据信号也可以叠加有或编码有多个散列路径值。接收设备202还可以被配置为接收由区块链网络106或与其相关联的节点电子传输的数据信号,该数据信号可以叠加或编码有区块链或包括在区块链中的数据,其包括Merkle根,并且在一些情况下,其可以包括Merkle树中包括的附加数据值。

处理服务器102还可以包括通信模块204。通信模块204可以被配置为在模块、引擎、数据库、存储器和处理服务器102的其他组件之间传输数据,以用于执行本文所讨论的功能。通信模块204可以由一种或多种通信类型组成,并且利用各种通信方法在计算设备内的通信。例如,通信模块204可以包括总线、触针连接器、导线等。在一些实施例中,通信模块204还可以被配置为在处理服务器102的内部组件与处理服务器102的外部组件(例如,外部连接的数据库、显示设备、输入设备等)之间进行通信。处理服务器102还可以包括处理设备。处理设备可以被配置为执行本文所讨论的处理服务器102的功能,这对于相关领域的技术人员来说是显而易见的。在一些实施例中,处理设备可以包括专门配置为执行处理设备的一个或多个功能的多个引擎和/或模块(例如,查询模块210、生成模块212、散列模块214、验证模块218等),和/或处理设备可以由上述引擎和/或模块组成。如本文所使用的,术语“模块”可以是被特别编程为接收输入、使用该输入执行一个或多个处理、并提供输出的软件或硬件。基于本公开的内容,由各种模块执行的输入、输出和处理对于本领域技术人员将是显而易见的。

处理服务器102可以包括查询模块210。查询模块210可以被配置为对数据库执行查询以识别信息。查询模块210可以接收一个或多个数据值或查询字符串,并且可以基于此在指示的数据库上执行字符串查询以识别存储在其中的信息。然后,查询模块210可以根据需要将识别出的信息输出到处理服务器102的适当的引擎或模块。查询模块210可以例如在处理服务器102的存储器220上执行查询,以识别包括在区块链中的Merkle根,以用于验证数据值。

处理服务器102还可以包括生成模块212。生成模块212可以被配置为生成用于执行如本文所讨论的处理服务器102的功能的数据。生成模块212可以接收请求、基于该请求生成数据、并且将生成的数据输出到处理服务器102的另一个模块或引擎。例如,生成模块212可以被配置为将数据值和随机数进行组合,或者将散列值与其他散列值进行组合用于生成Merkle树,以执行这里讨论的处理服务器102的功能。

处理服务器102还可以包括散列模块214。散列模块214可以被配置为通过将一个或多个散列算法应用于提供给散列模块214的数据来生成散列值。散列模块214可以接收作为输入的要散列的数据,可以将一个或多个散列算法应用到该数据、并且可以将生成的散列值输出到处理服务器102的另一个模块或引擎。在一些情况下,可以向散列模块214提供要在生成散列值时使用的散列算法。在其他情况下,散列模块214可以识别要使用的散列算法,例如,通过生成查询,由查询模块210在存储器220上执行该查询来识别要使用的散列算法。例如,散列模块214可以被配置为生成用于生成Merkle树的散列值,例如,通过散列组合的数据值和随机数或组合的散列值(例如,作为生成Merkle树的一部分,对由散列模块214先前生成的两个散列值进行组合)。

处理服务器102还可以包括验证模块218。验证模块218可以被配置为,作为处理服务器102的功能的一部分,验证数据。验证模块218可以接收作为输入的数据、可以尝试验证该数据、并且可以将验证结果输出到处理服务器102的另一个模块或引擎。例如,验证模块218可以被配置为,作为对提供的数据值的验证,验证生成的Merkle根是否与识别的Merkle根(例如,从区块链识别的Merkle根)相匹配。然后,验证模块218可以将验证结果输出到处理服务器102的另一个模块或引擎,例如,输出到发送设备216以便向数据提供者104报告。

处理服务器102还可以包括发送设备216。发送设备216可以被配置为经由一个或多个网络协议在一个或多个网络上发送数据。发送设备216可以被配置为经由合适的通信网络和相应的网络协议将数据发送到计算设备106和其他实体。在一些实施例中,发送设备216可以包括多个设备,例如,通过不同网络发送数据的不同的发送设备(例如,通过局域网发送数据的第一发送设备和用于通过区块链网络发送数据的第二发送设备)。发送设备216可以电子地发送叠加有数据的数据信号,该数据信号可以由接收数据的计算设备解析。在一些情况下,发送设备216可以包括用于对数据进行叠加、编码或以其他方式将数据格式化为适合于传输的数据信号的一个或多个模块。

发送设备216可以被配置为将数据信号电子地发送到数据提供者104,例如,该数据信号可以叠加或编码有验证结果,例如,该验证结果可以作为本文所讨论的验证过程的结果而由验证模块218生成。发送设备216还可以被配置为将叠加或编码有数据请求的数据信号电子地发送到数据提供者104,例如,以请求要验证的数据或者请求用于生成Merkle根的散列路径值。在一些情况下,发送设备216还可以被配置为将数据信号电子地发送到另外的实体(例如,区块链网络106中的节点),该数据信号可以叠加或编码有对Merkle根的请求,例如,该Merkle根可以用于验证数据提供者104提供的数据。

处理服务器102还可以包括存储器220。存储器220可以被配置为存储数据,由处理服务器102使用该数据以执行本文所讨论的功能,例如,私钥、密钥对、格式化规则、区块链等。存储器220可以被配置为使用合适的数据格式化方法和模式来存储数据,并且可以是任何合适类型的存储器,例如,只读存储器、随机存取存储器等。存储器220可以包括,例如,加密密钥和算法、通信协议和标准、数据格式化标准和协议、用于处理设备的模块和应用程序的程序代码、以及可以适合于处理服务器102在执行本文公开的功能时使用的其他数据,这对于相关领域的技术人员来说是显而易见的。在一些实施例中,存储器220可以包括关系数据库或者由关系数据库组成,该关系数据库利用结构化查询语言来存储、识别、修改、更新、访问存储在其中的结构化数据集等。

通过散列路径值验证数据值的过程

图3示出了使用数据提供者104提供的散列路径值来基于Merkle根验证数据值的过程300。

在步骤302,处理服务器102的接收设备202可以从数据提供者104接收要进行验证的数据值。数据值可以伴随有至少一个随机数和多个散列路径值。在步骤304,处理服务器102可以识别与要验证的数据相关的Merkle根。在一些实例中,所述识别可以包括查询(例如,通过处理服务器102的查询模块210进行查询)处理服务器102的存储器220以识别Merkle根,该Merkle根,例如,可以包括在区块链中。在其他情况下,所述识别可以包括将数据请求发送(例如,通过处理服务器102的发送设备216)到关联实体(例如区块链网络106),并且接收(例如,通过接收设备202)Merkle根。

在步骤306,处理服务器102的生成模块212可以通过将数据提供者104提供的数据值与相应的随机数进行组合来生成组合值。在一些情况下,随机数与数据值的组合可以包括将随机数数学地加到数据值。在步骤308,处理服务器102的散列模块214可以通过向下一个值应用一个或多个预定散列算法来散列下一个值。在第一次执行步骤308中,可以对所述组合数据值进行散列。

在步骤310,处理服务器102的验证模块218可以确定散列模块214生成的散列值是否与Merkle树中的对应值匹配。在一些情况下,步骤310是可选步骤,例如,在处理服务器102可能无法访问Merkle树值的情况下(例如,其中仅可访问Merkle根)。如果生成的散列值与Merkle树值不匹配,则过程300结束,因为数据提供者104提供的基础数据值因此可能是不正确的。在一些情况下,发送设备216可以向数据提供者104发送叠加或者编码有验证不成功的指示的数据信号。

如果所述散列值确实匹配相应的Merkle树值,或者如果不能执行这样的验证(例如,由于不能获得Merkle树值),则在步骤312,处理服务器102确定是否还有剩余的其他散列路径值用于生成Merkle根。该确定可以基于数据提供者104提供的数据,具体地是提供的散列路径值的数量。如果未使用所有散列路径值,则过程300可以进行到步骤314,其中,生成模块212可以将散列值与下一个散列路径值进行组合。在一些情况下,各个散列路径值可以按特定顺序排序以用于生成组合值。然后,过程300可以返回到步骤308,其中,如果适用的话,对该新组合的值进行散列和验证。

过程300继续执行,直到步骤312确定了每个散列路径值都被使用了,其中,所得到的散列值(例如,在最新执行的步骤308中生成的)被确定为是所述Merkle根。在这种情况下,在步骤310执行的对于Merkle根的验证结果是对所提供的数据值的验证结果。在一些实施例中,方法300还包括,由发送设备216将指示所述过程300的结果的通知发送给数据提供者104,该通知指示基于所生成的Merkle根进行的验证是成功的验证或不成功的验证。

散列路径值

图4示出了Merkle树及其中包括的相应的值,其可以用于使用本文讨论的方法和系统来验证数据值。对于相关领域的技术人员来说显而易见的是,图4中所示的Merkle树由四个基础数据值(数据值V1,V2,V3和V4)生成,这仅是示例性的,并且可以使用任何合适数量的值生成Merkle树。

如图4所示,其中示出的Merkle树由四个基础值V1-V4生成。每个基础值都有相应的随机数N1-N4。可以由处理服务器102的生成模块212将值V1-V4分别与相应的随机数N1-N4进行组合。在组合之后,处理服务器102的散列模块214可以通过将一个或多个预定的散列算法应用到每个组合值来散列每个组合值。得到的值是散列值H1-H4,其可以被认为是Merkle树中的值。然后,生成模块212可以组合成对的所述值,H1和H2组合以及H3和H4组合,并且散列模块214可以散列所述组合值以生成散列值H5和H6,其中H5是H1和H2的组合的散列,并且H6是H3和H4的组合的散列。生成模块212可以组合H5和H6,并且散列模块214可以散列该组合值以生成散列值H7。

散列值H7是Merkle树中唯一的散列值,没有其它值要与之组合,可以认为其是所述树的Merkle根。在本文讨论的方法中,处理服务器102可以将散列值H7与先前识别的Merkle根(例如,从区块链或其他第三方数据源识别的Merkle根)进行比较,以验证数据提供者104提供的数据值。

在一些实施例中,处理服务器102可以被配置为生成Merkle根H7而无需访问所有基础数据值V1-V4和对应的随机数N1-N4。在这样的实施例中,数据提供者104可以向处理服务器102提供特定数据值(例如,数据值V3及其对应的随机数,在该示例中对应的随机数是N3)以及处理服务器102生成Merkle根H7所需的每个散列路径值。必要的散列路径值可以是Merkle树中的散列值,该散列值与处理服务器102的散列模块214生成的值进行组合,这是生成Merkle根H7所必需的。

例如,如果数据提供者104提供值V3及其对应的随机数N3,则散列路径值将是散列值H4和H5。在这样的示例中,散列模块214可以由V3和N3的组合生成H3,由H3和提供的H4生成H6,并且由H6和提供的H5生成H7。因此,如果要验证V3,则H4和H5是散列路径值。在另一示例中,如果要验证V1,则散列路径值将是H2和H6。在这种情况下,处理服务器102能够生成Merkle根H7而无需访问任何另外的基础值,从而保护这些值,同时仍然使处理服务器102能够验证所提供的数据值。

通过Merkle根验证数据值的示例性方法

图5示出了通过使用Merkle根和散列路径值来验证数据值的方法500。

在步骤502,可以将Merkle根存储在处理服务器(例如,处理服务器102)的存储器(例如,存储器220)中。在步骤504,可以由处理服务器的接收设备(例如,接收设备202)至少接收数据值、随机数和多个散列路径值。在步骤506中,可以由处理服务器的生成模块(例如,生成模块212)通过组合数据值和随机数来生成组合值。在步骤508,可以由处理服务器的散列模块(例如,散列模块214)通过将散列算法应用于所述组合值来生成第一散列值。

在步骤510,可以由处理服务器的散列模块通过将散列算法应用于第一散列值和多个散列路径值中的第一散列路径值的组合来生成后续散列值。在步骤512,可以由处理服务器的散列模块通过使用所述多个散列路径值的下一个散列路径值和最新的后续散列值的组合,来重复生成后续散列值。在步骤514,可以由处理服务器的验证模块(例如,验证模块218)基于Merkle根和最新生成的后续散列值的比较来验证数据值。

在一个实施例中,所述多个散列路径值可以具有特定顺序。在另一实施例中,可以基于所述特定顺序来识别多个散列路径值的下一个散列路径值。在一些实施例中,随机数可以是256比特随机数或伪随机数。在一个实施例中,所述数据值和随机数可以是整数,并且可以通过将随机数加到数据值来生成组合值。

在一些实施例中,方法500还可以包括由处理服务器的接收设备接收区块链,其中,区块链包括多个区块,每个区块都包括区块头和一个或多个数据值,其中,Merkle根包括在多个区块中的一个区块的区块头中。在另一实施例中,方法500甚至可以进一步包括由处理服务器的查询模块(例如,查询模块210)对区块链执行查询以识别多个区块中的所述一个区块。在更进一步的实施例中,接收数据值、随机数和多个散列路径值还可以包括接收区块标识符,并且区块标识符可以包括在所述多个区块中的所述一个区块的区块头中。

计算机系统架构

图6示出了计算机系统600,其中本公开的实施例或其部分可以实现为计算机可读代码。例如,可以使用硬件、软件、固件、其上存储有指令的非暂时性计算机可读介质或其组合来在计算机系统600中实现图1的处理服务器102,并且图1的处理服务器102可以在一个或多个计算机系统或其他处理系统中实现。硬件、软件或其任何组合可以体现为用于实现图3和4的方法的模块和组件。

如果使用可编程逻辑,则这种逻辑可以在由可执行软件代码配置成为专用计算机或专用设备(例如,可编程逻辑阵列、专用集成电路等)的商业上可用的处理平台上执行。本领域普通技术人员可以理解,可以使用包括多核多处理器系统、小型计算机、大型计算机、具有分布式功能的链接或聚集的计算机以及几乎可以嵌入到任何设备中的普通或微型计算机的各种计算机系统配置来实践所公开的主题的实施例。例如,可以使用至少一个处理器设备和存储器来实现上述实施例。

如本文讨论的处理器单元或设备可以是单个处理器、多个处理器或其组合。处理器设备可具有一个或多个处理器“核”。如本文所讨论的术语“计算机程序介质”、“非暂时性计算机可读介质”和“计算机可用介质”通常用于指代有形介质,例如,可移动存储单元618、可移动存储单元622以及安装在硬盘驱动器612中的硬盘。

借助于该示例性计算机系统600来描述本公开的各种实施例。在阅读本说明书之后,如何使用其他计算机系统和/或计算机体系结构来实现本公开对相关领域的技术人员来说将显而易见。尽管可以将各个操作描述为顺序过程,但是一些操作事实上可以并行地、并发地和/或在分布式环境中执行,并且程序代码可以本地存储或远程存储以供单个或多个处理器的机器访问。另外,在一些实施例中,在不脱离所公开的主题的精神的情况下,可以重新排列操作的顺序。

处理器设备604可以是专门被配置为执行本文公开的功能的专用或通用处理器设备。处理器设备604可以连接到通信基础设施606,例如,总线、消息队列、网络、多核消息传输方案等。所述网络可以是适合于执行本文公开的功能的任何网络,其可以包括局域网(LAN)、广域网(WAN)、无线网络(例如WiFi)、移动通信网络、卫星网络、因特网、光纤、同轴电缆、红外线、射频(RF)、或其任何组合。其他合适的网络类型和配置对于相关领域的技术人员来说将是显而易见的。计算机系统600还可以包括主存储器608(例如,随机存取存储器、只读存储器等),并且还可以包括辅助存储器610。辅助存储器610可以包括硬盘驱动器612和可移动存储驱动器614,例如软盘驱动器、磁带驱动器、光盘驱动器、闪存等。

可移动存储驱动器614可以以公知的方式从可移动存储单元618读取和/或写入到可移动存储单元618。可移动存储单元618可以包括可由可移动存储驱动器614读取和写入的可移动存储介质。例如,如果可移动存储驱动器614是软盘驱动器或通用串行总线端口,则可移动存储单元618可以分别是软盘或便携式闪存驱动器。在一个实施例中,可移动存储单元618可以是非暂时性计算机可读记录介质。

在一些实施例中,辅助存储器610可以包括允许将计算机程序或其他指令加载到计算机系统600的备选装置,例如可移动存储单元622和接口620。这样的装置的示例可以包括程序盒和盒式接口(例如,如视频游戏系统中所见到的)、可移动存储器芯片(例如,EEPROM、PROM等)和相关的插座以及其他可移动存储单元622和接口620,这对本领域技术人员来说是显而易见的。

存储在计算机系统600中(例如,存储在主存储器606和/或辅助存储器610中)的数据可以存储在任何类型的合适的计算机可读介质上,例如,光学存储器(例如,光盘、数字通用光盘、蓝光光盘等)或磁带存储器(例如,硬盘驱动器)。可以以任何类型的合适的数据库配置(例如,关系数据库、结构化查询语言(SQL)数据库、分布式数据库、对象数据库等)来配置该数据。合适的配置和存储类型对本领域的技术人员来说将是显而易见的。

计算机系统600还可以包括通信接口624。通信接口624可以被配置为允许软件和数据在计算机系统600和外部设备之间传输。示例性的通信接口624可以包括调制解调器、网络接口(例如,以太网卡)、通信端口、PCMCIA插槽和卡等。经由通信接口624传送的软件和数据可以是信号的形式,其可以是电子的、电磁的、光学的或其它信号,这对相关领域的技术人员来说是显而易见的。信号可以经由通信路径626行进,通信路径626可以被配置为承载信号并且可以使用电线、电缆、光纤、电话线、蜂窝电话链路、射频链路等来实现。

计算机系统600还可以包括显示器接口602。显示器接口602可以被配置为允许数据在计算机系统600和外部显示器630之间传输。示例性的显示器接口602可以包括高清晰度多媒体接口(HDMI)、数字视频接口(DVI)、视频图形阵列(VGA)等。显示器630可以是用于显示经由计算机系统600的显示器接口602发送的数据的任何适当类型的显示器,包括阴极射线管(CRT)显示器、液晶显示器(LCD)、发光二极管(LED)显示器、电容式触摸显示器、薄膜晶体管(TFT)显示器等。

计算机程序介质和计算机可用介质是指可以是存储器半导体(例如,DRAM等)的存储器,例如主存储器606和辅助存储器610。这些计算机程序产品可以是用于向计算机系统600提供软件的装置。计算机程序(例如,计算机控制逻辑)可以存储在主存储器606和/或辅助存储器610中。也可以经由通信接口624来接收计算机程序。该计算机程序,当被执行时,可以使计算机系统600能够实现本文所讨论的本方法。特别地,当执行计算机程序时,可以使得处理器设备604能够实现如本文所讨论的图3和4所示的方法。因此,这种计算机程序可以表示计算机系统600的控制器。在使用软件实现本公开的情况下,可以将软件存储在计算机程序产品中,并使用可移动存储驱动器614、接口620、和硬盘驱动器612或通信接口624将软件加载到计算机系统600中。

处理器设备604可以包括被配置为执行计算机系统600的功能的一个或多个模块或引擎。每个模块或引擎可以使用硬件来实现,并且在一些例子中也可以使用软件(例如,对应于存储在主存储器608或辅助存储器610中的程序代码和/或程序的软件)来实现。在这样的例子中,在由计算机系统600的硬件执行程序代码之前,可以由处理器设备604(例如,通过编译模块或引擎)对程序代码进行编译。例如,程序代码可以是以编程语言编写的源代码,编程语言被编译成诸如汇编语言或机器代码之类的较低级别的语言以供处理器设备604和/或计算机系统600的任何附加硬件组件执行。编译过程可以包括使用词法分析、预处理、解析、语义分析、语法指导翻译、代码生成、代码优化、以及可适用于将程序代码翻译成适合于控制计算机系统600执行本文公开的功能的较低级别语言的任何其他技术。对相关领域的技术人员显而易见的是,该过程导致计算机系统600是专门编程为执行上述功能的专门配置的计算机系统600。

除了其他特性之外,与本公开一致的技术提供了一种通过Merkle根验证数据值的系统和方法。虽然上面已经描述了所公开的系统和方法的各种示例性实施例,但是应当理解,它们仅仅是为了示例的目的而提供的,而不是限制。这不是穷尽的并且不将披露的内容限制在所披露的确切形式上。在不背离广度或范围的情况下,可以根据上述教导作出修改和变化或者可以从本公开的实践获得修改和变化。

技术分类

06120116513560