证明数字记录不可变性的方法与流程

文档序号:27011048发布日期:2021-10-20 00:08阅读:123来源:国知局
证明数字记录不可变性的方法与流程

1.本发明涉及证明数字记录不可变性的方法。


背景技术:

2.在许多团体法律和商业事务中,最重要的是,一方要验证另一方保存的记录没有未经通知就被秘密更改。这在数字经济中成为一个紧迫的问题,因为事务可能涉及多个外部未知的、地理上遥远的、在不同法律管辖下的团体。因此,需要一种证明数字记录不可变性的先进方法。


技术实现要素:

3.一个示例实施例是一种证明第一实体中的数字记录的不可变性并且验证存储在第一实体中的区块序列中的数字记录确实是未修改的方法。所述方法包括由第一实体将数字记录存储在区块序列中;由第一实体定期向至少一个外部方发送至少一个哈希值;由第二实体根据存储在第一实体处的所述数字记录计算特定区块的重新计算哈希值;由第二实体通过映射密钥索引从至少一个外部方获得特定区块的检索哈希值;以及如果重新计算哈希值与检索哈希值相同,则由第二实体为直到特定区块为止的数字记录都没有被更改过提供证据。每一个区块都具有哈希值,所述哈希值是根据当前区块以及当前区块的所有先前区块的内容计算出的。所述秘钥索引对应于第一实体中的区块序列中的特定区块。
4.该系统包括数据存储系统、至少一个外部数据存储系统、处理器和存储器,所述存储器存储指令并与处理器是电子通信的。数据存储系统将区块序列存储在第一实体中。每一个区块都具有哈希值,所述哈希值是根据当前区块以及当前区块的所有先前区块的内容计算出的;至少一个外部数据存储系统,其接收并存储从第一实体中的数据存储系统发送的区块序列的至少一个哈希值,并允许第二实体通过映射秘钥索引来获得检索哈希值。所述秘钥索引对应于第一实体中的区块序列中的特定区块。处理器被配置为执行指令,以根据存储在第一实体处的数字记录计算特定区块的重新计算哈希值。如果特定区块的重新计算哈希值与检索哈希值相同,则存储在第一实体中的区块链中的数字记录确实是未修改的。
5.在另一个示例实施例中,本发明是一种认证系统,其证明存储在第一实体中的区块序列中的数字记录是确实未修改的。
6.本文讨论了其他示例实施例。
附图说明
7.图1示出根据示例实施例的证明第一实体中数字记录的不可变性的方法。
8.图2示出根据示例实施例的证明数字记录的不可变性的方法。
9.图3示出根据示例实施例的证明数字记录的不可变性的方法。
10.图4示出根据示例实施例的数据认证系统。
11.图5示出根据示例实施例的数据认证系统。
12.图6示出根据示例实施例的数据认证系统。
具体实施方式
13.如本文和权利要求书中所使用的“包括”是指包括以下元件,但并不排除其他元件。
14.如本文和权利要求书中所使用“数字记录”是指存储信息的多个数字数据块或区块。“最新数字记录”存储在附加在数字记录的区块的末尾的区块中。在一个实施例中,“数字记录”被布置在区块序列中。
15.如本文和权利要求中所使用的“哈希指针”是指先前区块的哈希值。
16.如本文和权利要求书中所使用的“实体”可以是个人、公司、组织、团队、部门、实践本发明的任何团体或任何计算机。
17.本发明的示例实施例提供一种用于验证数字记录的不可变性的可靠且有效的方法。
18.可以通过查找函数f来证明数字记录a的内容没有被更改,该函数将a映射到h=f(a),其特性是:如果a被更改为a',则f(a

)被更改为h',其中h和h'是不同的。这在此处所指的是“无冲突”特性。f的另一个更重要特性是,给定h,要找到m使得f(m)=h是非常困难的而且成本很高。这是“隐藏”特性。加密哈希函数满足这两个特性。这样,如果哈希函数生成的哈希值h与之前生成的哈希值相同,则能够证明数字记录a的不可变性。
19.在一个示例实施例中,数字记录以区块排列,即a0.,a1.,..,a
n
。我们计算{h0,h1,h2,..,h
n
}的方法如下:
20.h0=f(a0)
21.h1=f(a0,a1)
22.h2=f(a0,a1,a2)
23.h
n
=f(a0,a1,a2,..,a
n
)
24.然后h
n
能够被用来证明数字记录{a0,a1,a2,...,a
n
}.的不可变性。在另一个实施例中,第一实体从上述{a0,a1,a2,...,a
n
}计算哈希值{h0,h1,h2,..,h
n
};并定期将这些哈希值中的部分或全部发送给一个或更多个外部方。当第二实体想要验证数字记录是否与之前相同时,第二实体能够(1)从存储在第一实体中的数字记录的区块中重新计算这些哈希值,(2)将这些重新计算哈希值与从外部方获得的哈希值进行比较。如果哈希值一致,那么第二个实体就能够确定数字记录的区块直到最后一个区块a
n
都没有被改动。
25.在一个示例实施例中,能够通过以下方式进一步简化哈希值h
n
的计算:
26.h
n
=f(b
n
)
27.其中,针对n≥1,b
n
=g(h
n
‑1,a
n
)
28.在这里,我们首先用前一个区块h
n
‑1的哈希值对a
n
的内容进行扩增,然后将函数g应用到扩增后的内容b
n
上。g能够是一个函数,对于该函数而言,不可能为针对h
n
‑1和a
n
找到产生相同结果的两个不同的值。在一个实施例中,其是不对{h
n
‑1,a
n
}进行任何变换的“传递”函数。在另一个实施例中,其能够是{h
n
‑1,a
n
}的数字签名。
29.在上述实施例中,每一个扩增的区块b
n
都存储前一个区块的哈希值h
n
‑1;因此,区
块{b0,b1,b2,..,b
n
}被链接在一起并形成链,以下将其称为区块链。由于h
n
的计算只基于a
n
的内容,而不是之前的区块,所以构造新区块的计算成本仅是相对于a
n
的大小的,而不是相对于包括a
n
以及之前的所有区块。
30.在示例性应用中,许多团体参与到项目、要制造的产品或销售活动中。这些团体可以是政府组织、公司,也可以是跨国公司内的部门或办公室。他们共同组成针对这个项目、产品或销售活动的社区。在该社区内,每一个团体可以创建自己的区块链来存储自己的数字记录,也可以共享其他人创建的一个或更多个区块链。由于团体不一定是彼此信任的,因此他们可能希望不时地检查其他团体的数字内容在创建后是否确实没有被改动。本发明提供一种简单有效的方法来实现这一目标。在下面的讨论中,我们将公司、团体和实体互换使用,以表示它们是能够访问由社区成员创建的区块链的该社区的成员。
31.在本发明中,持有包含数字记录的区块链的实体可能不需要将区块链的副本发送给其他实体进行验证,而其他实体仍能够确定数字记录没有被修改。因此,数字记录能够是保密的,并且仍然能够证明它是确实未修改的,如下所述。
32.本发明的示例实施例不需要在区块链更新过程的关键路径中添加其他步骤、团体、系统或联网对等体。这里的关键路径是用于从开始到结束处理记录更新请求的连续步骤通路,其决定更新记录的总处理时间。由于不需要团体间的网络通信或共识,因此这能够大大改善整个系统的性能。
33.本发明的示例实施例能够处理大尺寸的数字记录。
34.现在参考图1,示例实施例是证明存储在第一实体中的数字记录的不可变性的方法100。
35.框110示出由第一实体将数字记录存储在区块序列中。举例来说,每一个区块都具有哈希值,该哈希值是根据当前区块以及所有之前的区块的内容计算出的。
36.框120示出由第一实体定期向至少一个外部方发送至少一个哈希值。
37.举例来说,至少一个外部方存储从第一实体发送的至少一个哈希值。所述至少一个外部方可以是能够被公众读取的公共媒体,例如报纸或网络内容、公共区块链和许可区块链。
38.举例来说,至少一个外部方将从第一实体发送的至少一个哈希值存储在许可区块链中,其中至少一个外部方控制着所述许可区块链的读取权限。
39.框130示出根据存储在第一实体处的数字记录计算特定区块的重新计算哈希值。举例来说,特定区块是区块序列中的区块之一,并且具有存储在外部方的哈希值。
40.举例来说,第二实体指示第一实体计算重新计算哈希值。
41.举例来说,第二实体通过将区块序列从第一实体复制到第二实体自己的存储设备来计算重新计算哈希值。
42.举例来说,第一实体在第二实体或其他实体的监督下计算重新计算哈希值。
43.举例来说,根据存储在第一实体的区块序列的创世区块计算出特定区块的重新计算哈希值。创世区块是区块序列的第一个区块。
44.举例来说,根据存储在第一实体的区块序列的中间区块计算出特定区块的重新计算哈希值,其中直到中间区块为止的数字记录都被证明是确实未修改的,并且中间区块是位于区块序列中的创世区块与特定区块之间的区块。
45.框140示出由第二实体通过映射密钥索引从至少一个外部方获得特定区块的检索哈希值。举例来说,密钥索引对应于第一实体中的区块序列中的特定区块,并且检索哈希值是存储在外部方的哈希值。在一个实施例中,密钥索引实际上是区块序列中的区块的索引,例如,区块序列的第1201个区块。这样,第二实体为外部方指定密钥索引以检索所述哈希值。在一个实施例中,外部方将密钥索引映射到其数据存储系统中的一位置,该位置存储由第一实体发送的所有哈希值,以便检索所需的哈希值。
46.举例来说,至少一个外部方将所存储的至少一个哈希值向公众公布,由此第二实体能够获得特定区块的检索哈希值。
47.举例来说,至少一个外部方维护至少一个私有/公共密钥对,并用外部方所维护的其私钥之一对从数据存储系统发送的至少一个哈希值进行签名,以生成至少一个签名哈希值。
48.举例来说,至少一个外部方为第一实体或第二实体提供公共密钥,以验证至少一个签名哈希值,从而提供检索哈希值。
49.框150示出如果重新计算哈希值与检索哈希值相同,则为直到特定区块为止的数字记录都没有被更改过提供证据。
50.举例来说,第二实体通过比较重新计算哈希值和检索哈希值来验证直到特定区块为止的数字记录确实是未修改的。如果这些值是一致的,则第二实体能够声明直到特定区块为止的数字记录确实是未修改的。
51.举例来说,第一实体通过比较重新计算哈希值和检索哈希值来证明直到特定区块为止的数字记录确实是未修改的。如果这些值是一致的,则第一实体能够声明直到特定区块为止的数字记录确实是未修改的。
52.在一个实施例中,在第二实体的计算设施处进行对哈希值重新计算和对哈希值检索的操作。在另一个实施例中,在第一实体的计算设施处进行所述操作,并且将结果发送至第二实体。
53.现在参考图2,另一个示例实施例示出验证存储在第一公司的区块链中的事务记录是确实未修改的一种方法200。第一公司的事务记录存储在区块链中,并且以预定的周期将区块的哈希值定期发送至认证组织。例如,预定的周期能够是每小时、每天、每一个星期日的午夜或每一个月。认证组织接收并使用其私有密钥对区块的哈希值进行签名,以生成签名哈希值。认证组织可以将签名哈希值及其公共秘钥发布给公众。当第二公司想要验证第一公司的事务记录时,第二公司从认证机构获得公共秘钥,并用公共秘钥对签名哈希值进行验证,以获得检索哈希值。举例来说,为了在步骤210中验证第一公司的最新事务记录,第一公司将区块链中的最后一个区块发送给认证组织。在此情况下,最后一个区块被视为特定区块。然后,认证组织使用私有密钥对该区块的哈希值进行签名。框220示出第二公司通过使用公共密钥验证哈希值的数字签名是正确的,来获得与第一公司的特定区块的哈希值相对应的检索哈希值。框230示出第二公司重新计算从区块链的创世区块直到特定区块为止的重新计算哈希值。框240示出第二公司比较重新计算哈希值和检索哈希值。框250示出如果重新计算哈希值和检索哈希值是相同的,则直到特定区块为止的事务记录确实是未修改的。框260示出如果重新计算哈希值和检索哈希值是不同的,则直到特定区块为止的事务记录是更改过的。
54.举例来说,特定区块的哈希值能够由一个以上的认证组织签名。当第二公司想要验证事务记录的不可变性时,其分别从所述一个以上的认证组织中的每一个获得检索哈希值,并进一步验证所有检索哈希值是否是一致的。如果所有检索哈希值都是一致的,则第二公司确定所述检索哈希值是可信任的。
55.现在参考图3,另一个示例实施例示出验证存储在第一公司的区块链接中的交付记录确实是未修改的一种方法300。第一公司的交付记录存储在区块链接中,并且以预定的周期将区块的哈希值定期发送至认证组织。例如,预定的周期可以是一天、一个月或一年。认证组织接收并使用其私有密钥对区块的哈希值进行加密,以生成加密哈希值。认证组织可以将加密哈希值及其公共秘钥发布给公众。当第二公司想要验证第一公司的交付记录时,第二公司从认证机构获得公共秘钥,并用公共秘钥对加密哈希值进行解密,以获得检索哈希值。举例来说,为了验证存储在区块链中的特定区块中的第一公司的特定周期的交付记录,框310示出将该特定区块的哈希值发送给认证组织,以使用私有密钥进行加密。框320示出第二公司通过使用公共密钥解密,来获得与第一公司的特定区块的哈希值相对应的检索哈希值。框330示出第二公司重新计算从区块链接的创世区块直到特定区块为止的重新计算哈希值。框340示出第二公司比较重新计算哈希值和检索哈希值。框350示出如果重新计算哈希值和检索哈希值是相同的,则直到特定区块为止的交付记录确实是未修改的。框360示出如果重新计算哈希值和检索哈希值是不同的,则直到特定区块为止的交付记录是更改过的。
56.图4示出根据示例实施例的数据认证系统400。数据认证系统400证明存储在第一实体410中的区块链442中的数字记录确实是未修改的。数据认证系统400包括数据存储系统440、处理器(未示出)以及存储器(未示出),该存储器存储指令并且与第一实体中的处理器是电子通信的。数据存储系统440将区块链442存储在第一实体410中。区块链442包括多个区块411、412、413、414。区块412、413、414中的每一个都具有指向前一个区块的哈希指针。每一个哈希指针存储根据前一个区块的数字内容计算得出的哈希值。数据认证系统400还包括外部方420中的外部数据存储系统450。外部数据存储系统450接收并存储从第一实体中的数据存储系统440发送的区块链442的哈希指针,并允许第二实体430基于密钥索引获得检索哈希指针。密钥索引对应于第一实体中的区块链442中的、第二实体想要验证存储有数字记录的区块,即特定区块。在该实施例中,第一实体将区块412、413和414的哈希指针发送给外部方420。哈希指针中的每一个都指向前一个区块,因此能够验证的最后的区块是区块413,因为这是区块414的哈希指针所指向的区块。为了验证最后的数字记录,处理器被配置为执行指令以计算第一实体中的区块413的重新计算哈希值。第二实体430获得检索哈希值,即存储在外部方的最后一个指针所具有的区块413的哈希值,并将该检索哈希值与区块413的重新计算哈希值进行比较。如果区块413的重新计算哈希值与检索哈希值相同,则验证出存储在第一实体中的区块链中的记录确实是未修改的。
57.举例来说,外部数据存储系统450选自由受信任的认证组织、公共区块链、许可区块链、发布媒体、不可变数据存储系统、第二实体能够读取例如报纸的存储数据的介质、第二实体能够读取所存储数据的机制、以及第二实体能够读取所存储数据的例如公共ftp或http/https服务器的系统。
58.举例来说,外部数据系统450将存储在外部数据存储系统中的哈希指针发布给公
众。
59.举例来说,外部数据系统450需要来自第二实体430的读取权限,以读取存储在外部数据存储系统450中的哈希指针。
60.举例来说,外部数据存储系统450通过使用私有密钥对从数据存储系统440发送的区块链的哈希指针进行加密来生成加密哈希指针,并为第二实体430提供公共密钥,以对加密哈希指针进行解密,从而生成检索哈希指针。
61.举例来说,外部数据存储系统450通过使用私有密钥对从数据存储系统发送的区块链的哈希指针进行签名来生成签名哈希指针,并为第二实体430提供公共密钥,以对签名哈希指针进行验证,从而生成检索哈希指针。
62.图5示出示例实施例,其提供用于存储数字记录的系统500,其中不可变性是可追踪的。新的数字记录每天都在生成,并附加到第一实体510中的区块链501。每一个区块具有根据当前区块的内容计算出的哈希值。第一实体510以第一预定间隔将区块链501的哈希值周期性地发给至第一外部方520,并且以第二预定间隔将该区块链的哈希值发送给第二外部方530。第一外部方520持有区块链502,第二外部方持有区块链503。举例来说,第一实体510已经将数字记录存储在包括区块511、512、513、514、515、516的区块链501中。第一实体510已将区块513的哈希值发送至第二外部方530,并且存储在第二外部方530中的区块链503的区块532中。第一实体510已将区块515的哈希值发送给第一外部方520和第二外部方530。第一外部方520在其区块链502的区块523中存储区块515的哈希值,而第二外部方530在其区块链503的区块534中存储区块515的哈希值。当第二实体540想要验证直到区块515为止的数字记录的不可变性时,第二实体540检索存储在第一外部方520中的区块链502的区块523中的哈希值,并根据第一实体510中的区块链501的创世区块511计算区块515的重新计算哈希值。第二实体将区块515的重新计算哈希值与由第一外部方250提供的区块523的检索哈希值进行比较。如果它们的值相同,则证明直到第一实体510中的区块515为止的数字记录的不可变性。类似的,第二实体540能够通过以下方式验证直到第一实体中的区块515为止的数字记录的不可变性:检索存储在第二外部方530中的区块链503的区块534中的哈希值,并将该哈希值与第一实体510中的区块515的重新计算哈希值进行比较,如果它们的值相同,则证明直到第一实体510中的区块515为止的数字记录的不可变性。此外,如果第二实体540已经通过发现在第一实体510中计算出的区块513的重新计算哈希值与存储在由第二外部方530提供的区块532中的检索哈希值一致而验证出存储在区块513中的哈希值确实是未修改的,第二实体540不必从创世区块511计算区块515的重新计算哈希值,而是从区块513即中间区块继续计算以验证第一实体510中的区块515的不可变性。这样,大大减少验证过程中的时间和计算成本。
63.而且,第二实体540能够将存储在由第一外部方520提供的区块523中的哈希值与存储在由第二外部方530提供的区块534中的哈希值进行比较,以交叉检查从第一实体510发送的区块515的哈希值。通过这种方式,还能够验证第一外部方520和第二外部方530的数据完整性,这是因为如果值不一致,则第二实体540能够得出结论:第一外部方520或第二外部方530是不可信团体。然后,第二团体能够将该发现报告给其区块链系统社区中的所有其他团体,并启动进一步的行动。
64.图6示出另一个示例实施例,其提供用于存储数字记录的系统,其中未修改历史是
可证明的。使用在图5中指定相同的元素的附图标记,不同之处在于第一外部方已由公共区块链602代替。在该示例实施例中,第一实体通过将数字记录的哈希值存储在公共区块链602中来定期向公众发布数字记录的哈希值。结果,第二实体540从公共区块链602获得所发布的哈希值,并用第一实体中的区块501的区块序列的哈希值来验证所发布的哈希值。
65.本公开的系统和方法可以以在计算机系统上运行的软件应用程序的形式实现。此外,方法的部分可以在一个这样的计算机系统上执行,而其他部分可以在一个或更多个其他这样的计算机系统上执行。所述计算机系统的示例包括大型机、工作站、个人计算机、手持式计算机和服务器等。可以将软件应用程序存储在可由计算机系统本地访问以及可经由与例如局域网或因特网的网络硬有线连接或无线连接来访问的记录介质上。
66.计算机系统可以包括例如处理器、随机存取存储器(ram)、打印机接口、显示单元、局域网(lan)数据传输控制器、lan接口、网络控制器、内部总线以及例如键盘、鼠标等的一个或更多个输入设备。该计算机系统能够被连接至数据存储设备。
67.能够由用户、用户代理(包括机器学习代理和智能用户代理)、软件应用程序、电子设备、计算机、固件、硬件、进程、计算机系统和/或智能个人助理来执行和/或制作本文所讨论的区块和/或方法。此外,能够在有或没有用户指示的情况下自动执行本文讨论的区块和/或方法。
68.本领域技术人员应该理解的是,硬件和软件之间的划分是为了易于理解的概念上的划分,并且在某种程度上是任意的。此外,将理解的是,一个计算机装置中的外围设备可以被集成至另一计算机主机。此外,可以在分布式计算环境中执行应用软件系统。能够将软件程序及其相关数据库存储在单独的文件服务器或数据库服务器中,然后将其传输到本地主机以执行。本领域技术人员将理解的是能够采用替代实施例来实现本发明。
69.因此,本发明的示例性实施方式是充分描述了的。尽管该描述涉及特定的实施例,但是对于本领域的技术人员将显而易见的是,可以通过改变这些具体细节来实践本发明。因此,本发明不应被解释为仅限于本文所阐述的实施例。
70.例如,上面将当前方法的应用描述为验证第一公司中存储的事务记录的方法、验证第一公司中的交付记录的方法等,但是显然其他示例实施例也是可以应用的。例如,通过利用将事务记录作为更新请求发送给秘钥值存储装置的程序对区块链进行组织的方式,能够在第一公司中实现该方法。该程序会定期将区块链的哈希值发送给三个认证组织。这三个认证组织使用自己的私有密钥独立地对哈希值进行签名,并向程序应答签名哈希值。第二公司或任何外部方都能够使用由认证机构发布的公密钥来验证签名哈希值,从而提供检索哈希值。然后,第二公司能够通过使用第一公司的区块链中的哈希值验证检索哈希值,以验证第一公司中的区块链确实是未修改的。具有三个或三个以上的认证组织能够确保如果一个认证组织的私有密钥被泄露,该方法仍然是有效的并且对于这种情况是能够容忍的。
71.本发明公开的方法还能够被应用于许多其他领域。在与关系数据库相关的另一个示例实施例中,其中数据库事务可以涉及一系列动作,预写式日志(wal)技术被用于提供原子性和持久性。首先将动作记录在日志中,在将动作写入数据库之前该日志必须写入磁盘之类的稳定存储装置。本发明中公开的发明思想能够适于实现高效的系统,以证明数据库的更改历史的不可变性,由此对预写日志进行组织并将其存储为区块链,其中日志条目是区块链中的条目,并且一定数量的条目被分组为一个区块。区块链和哈希指针被定期刷新
至磁盘。可以将哈希指针定期存储或发布至一个或更多个第三方团体组织或系统或媒体或类似的实体或系统。如果需要重新检查日志,可以重新计算区块链的哈希值,并将该哈希值与从磁盘中检索到的哈希值进行比较,然后能够决定直到链中哪个区块为止动作完成;并且此信息可以被用于相应地修复数据记录。如果需要进行证明或验证完整性以及数据库更改历史确实是未修改的,可以重新计算区块链的哈希值,并将该哈希值与从第三方系统或实体中检索到的哈希值进行比较,其中,所述第三方系统或实体可以是验证不可变性所能够访问的另一数据库、另一私有的或许可的或公共的区块链、或另一种媒体。
72.同样,能够存在一个数据库或类似的数据处理系统,所述数据库或类似的数据处理系统反映图5所示的系统中的按区块序列跟踪的数据的最新状态,以便在写入/更新请求期间处理查询请求或支持验证。数据库或类似的数据处理系统能够提供各种语义和接口,例如acid语义、sql接口、丢失一致性模型、秘钥/值存储接口以及线性可序列化一致性模型等。
73.在不同图中讨论的方法能够被添加至其他图中的方法或与其他图中的方法交换。此外,应将具体的数字数据值(例如特定的数量、数字、类别等)或其他特定的信息解释为说明性的,以用于讨论示例实施例。提供这样的具体信息并不是为了限制实施例。
74.例如,能够将区块链的哈希值每天发送至区块链、每月发送至认证机构进行加密、每年发送到另一个认证组织进行签名。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1