双向区块链
文献发布时间:2023-06-19 09:30:39
相关申请的交叉引用
本申请是2018年7月27日在美国提交的题为“Bidirectional Blockchain”的美国临时申请No.62/711,355的非临时申请,其全部内容通过引用并入本文。
发明背景
(1)技术领域
本发明涉及用于改善数据认证的系统,更具体地,涉及使用区块链技术和多方计算来改善数据认证的系统。
(2)背景技术
安全的多方计算(MPC)是密码学的一个子领域,其目的是为各方创建在其输入上共同计算函数同时将这些输入保密的方法。与传统的密码学任务不同,此模型中的攻击者控制实际参与者。区块链是被分成一系列区块的数据的集合。每个区块都以密码方式链接到前一区块,使得在不编辑所有后续区块的情况下无法编辑一个区块。
检查数据完整性涉及计算数据上的密码校验和,流行的方法是对数据应用密码散列函数(诸如,函数SHA128、SHA256或SHA512)。除了数据完整性之外,检查数据的真实性(authenticity)还涉及使用诸如RSA(Rivest-Shamir-Adleman)之类的公钥签名方案来验证数据上的签名。为了生成签名,数据生成器使用其私钥对数据进行签名,而接收方使用数据生成器的已知公钥来验证签名。基于签名的认证的一个主要缺点是,如果攻击者窃取或破解了私钥,则攻击者可以伪造数据,直到密钥被撤消或过期为止。
因此,存在对这样的系统的持续需求,该系统要求每次对新软件进行签名时都使用新的公钥/私钥对,使得密钥有效且攻击者可以破解密钥以便伪造数据的时间窗很小。
发明内容
本发明涉及一种用于改善数据认证的系统,更具体地,涉及一种使用区块链技术和多方计算来改善数据认证的系统。所述系统包括:编码有可执行指令的非暂时性计算机可读介质以及一个或更多个处理器,使得当执行所述可执行指令时,所述一个或更多个处理器执行多个操作。所述系统确保从一个或更多个服务器发送到分布式客户端的一组分布式数据的真实性,其中,在确保一组分布式数据的真实性时,所述系统初始化多个多方(MPC)协议以确保用于对新数据元素进行签名的密钥的保密性。利用区块链技术来确保所述新数据元素的正确性和完整性,其中,使用包括前向区块链和反向区块链的双向区块链,使得所述前向区块链存储要由所述分布式客户端接收的所述新数据元素,而所述反向区块链存储由所述分布式客户端用来验证所述前向区块链中存储的所述新数据元素的真实性的公钥,其中,利用所述公钥对所述新数据元素进行签名导致先前的公钥过期。
在另一方面,所述多个MPC协议包括:Initialize协议,其中,生成公钥/私钥对列表,构建包括反向数据区块的所述反向区块链,并且包括公钥和私钥的所述公钥/私钥对列表以及所述反向数据区块以分布式方式被存储在一组MPC服务器当中;GenerateBlock协议,该协议允许签名服务器生成新的前向数据区块并将所述新的前向数据区块分发到一组区块链节点,其中,所述一组区块链节点验证所述新的前向数据区块,并且如果所述新的前向数据区块得到验证,则所述一组区块链节点将所述新的前向数据区块中继到所述分布式客户端;以及VerifyBlock协议,其中,所述分布式客户端使用新的公钥来验证所述新的前向数据区块的真实性,并且如果确定所述新的前向数据区块是真实的,则所述分布式客户端存储所述反向数据区块和所述新的前向数据区块中的至少一者。
在另一方面,遵循所述Initialize协议,擦除所有生成的数据。
在另一方面,所述前向区块链包括数据区块,在所述前向区块链中,第一数据区块之后的各个数据区块包含前一数据区块的散列摘要,并且其中,所述反向区块链包括数据区块,在所述反向区块链中,最后数据区块之前的各个数据区块包含下一数据区块的散列摘要。
在另一方面,所述一组MPC服务器向所述签名服务器揭露所述反向数据区块和一个或更多个私钥。
最后,本发明还包括一种计算机程序产品和计算机实现的方法。所述计算机程序产品包括存储在非暂时性计算机可读介质上的计算机可读指令,所述计算机可读指令可通过具有一个或更多个处理器的计算机执行,使得在执行所述指令时,所述一个或更多个处理器执行本文列出的操作。另选地,所述计算机实现的方法包括使计算机执行这种指令并且执行所得操作的动作。
附图说明
根据下面结合参照附图对本发明各个方面的详细描述,本发明的目的、特征以及优点将显而易见,附图中:
图1是描绘根据本公开的一些实施方式的用于改善数据认证的系统的组件的框图;
图2是根据本公开的一些实施方式的计算机程序产品的例示图;
图3是根据本公开的一些实施方式的基本区块链结构的例示图;
图4是根据本公开的一些实施方式的双向区块链的基本结构的例示图;
图5是根据本公开的一些实施方式的用于数据认证的Initialize协议的流程图的例示图;
图6是根据本公开的一些实施方式的用于数据认证的GenerateBlock协议的流程图的例示图;
图7A是根据本公开的一些实施方式的用于数据认证的VerifyBlock协议的第一部分的流程图的例示图;以及
图7B是根据本公开的一些实施方式的用于数据认证的VerifyBlock协议的第二部分的流程图的例示图。
具体实施方式
本发明涉及一种用于改善数据认证的系统,更具体地,涉及一种使用区块链技术和多方计算来改善数据认证的系统。呈现以下描述以使本领域普通技术人员能够进行和使用本发明并将其并入特定应用的背景中。对于本领域技术人员来说显然可以有各种改动以及不同应用方面的多种用途,并且本文限定的一般原理可以被应用于广泛的方面。因此,本发明不旨在限于所呈现的方面,而是涵盖与本文所公开原理和新颖特征相一致的最广范围。
在下面的详细描述中,阐述了许多具体细节,以便提供对本发明的更透彻理解。然而,本领域技术人员应当明白,本发明可以在不必受限于这些具体细节的情况下来实践。在其它情况下,公知结构和设备按框图形式而不是按细节示出,以免妨碍对本发明的理解。
也请读者留意与本说明书同时提交的所有文件和文档,这些文件和文档与本说明书一起开放以供公众查阅,所有这些文件和文档的内容通过引用并入于此。本说明书中公开的所有特征(包括任何所附权利要求、摘要以及附图)可以由用于相同、等同或相似目的的另选特征来代替,除非另有明确说明。因此,除非另有明确说明,所公开的各个特征仅仅是一系列的等同或相似特征中的一个例子。
此外,权利要求中的未明确陈述用于执行特定功能的“装置”或用于执行特定功能的“步骤”的任何要素不被解释为在35 U.S.C.第112节第6款中指定的“装置”或“步骤”条款。具体地,在本文的权利要求中使用“…的步骤”或“…的动作”不旨在援引35 U.S.C.第112节第6款的规定。
在详细描述本发明之前,首先提供了引用的参考文献列表。接下来,提供了对本发明各个主要方面的描述。最后,提供本发明各个实施方式的具体细节,以使得能够理解具体方面。
(1)所并入的参考文献列表
贯穿本申请引用且并入以下参考文献。为了清楚和方便起见,这些参考文献在此被列为读者的中心资源。下列参考文献通过引用并入于此,就像在此完全陈述的一样。这些参考文献通过参照如下对应参考文献号而在本申请中加以引用:
1.Guy Zyskind,Oz Nathan,and Alex Pentland.Enigma:DecentralizedComputation Platform with Guaranteed Privacy.https://enigma.co/enigma_full.pdf.Retrieved March 30,2018.
2.
3.FIPS PUB 180-4,FEDERAL INFORMATION PROCESSING STANDARDSPUBLICATION,Secure Hash Standard(SHS).
4.Internet Engineering Task Force,PKCS#1:RSA CryptographySpecifications Version 2.2,Sections 7 and 8.
(2)主要方面
本发明的各种实施方式包括三个“主要”方面。第一方面是用于改善数据认证的系统。该系统通常采用计算机系统操作软件的形式或采用“硬编码”指令集的形式。该系统可以并入提供不同功能的各种各样的设备中。第二主要方面是利用数据处理系统(计算机)进行操作的通常采用软件形式的方法。第三主要方面是计算机程序产品。该计算机程序产品通常表示存储在诸如光学存储设备(例如,光盘(CD)或数字通用盘(DVD))或磁存储设备(例如软盘或磁带)的非暂时性计算机可读介质上的计算机可读指令。计算机可读介质的其它非限制例包括:硬盘、只读存储器(ROM)以及闪存型存储器。这些方面将在下面进行更详细描述。
图1中提供了描绘本发明的系统(即,计算机系统100)的示例的框图。计算机系统100被配置成执行与程序或算法相关联的计算、处理、操作和/或功能。在一个方面中,本文讨论的某些处理和步骤被实现为存在于计算机可读存储器单元内并由计算机系统100的一个或更多个处理器执行的一系列指令(例如,软件程序)。在执行时,这些指令使计算机系统100执行特定动作并展现特定行为,如本文所描述的。
计算机系统100可以包括被配置成传送信息的地址/数据总线102。另外,一个或更多个数据处理单元(如处理器104(或多个处理器)与地址/数据总线102联接。处理器104被配置成处理信息和指令。在一方面,处理器104是微处理器。另选地,处理器104可以是不同类型的处理器,例如并行处理器、专用集成电路(ASIC)、可编程逻辑阵列(PLA)、复杂可编程逻辑器件(CPLD)或现场可编程门阵列(FPGA)。
计算机系统100被配置成利用一个或更多个数据存储单元。计算机系统100可以包括与地址/数据总线102联接的易失性存储器单元106(例如,随机存取存储器(“RAM”)、静态RAM、动态RAM等),其中,易失性存储器单元106被配置成存储用于处理器104的信息和指令。计算机系统100还可以包括与地址/数据总线102联接的非易失性存储器单元108(例如,只读存储器(“ROM”)、可编程ROM(“PROM”)、可擦除可编程ROM(“EPROM”)、电可擦除可编程ROM(“EEPROM”)、闪存等),其中,非易失性存储器单元108被配置成存储用于处理器104的静态信息和指令。另选地,计算机系统100可以执行从诸如“云”计算中的在线数据存储单元取得的指令。在一方面,计算机系统100还可以包括与地址/数据总线102联接的一个或更多个接口,例如接口110。所述一个或更多个接口被配置成使得计算机系统100能够与其它电子设备和计算机系统连接。由所述一个或更多个接口实现的通信接口可以包括有线(例如,串行电缆、调制解调器、网络适配器等)和/或无线(例如,无线调制解调器、无线网络适配器等)通信技术。
在一个方面,计算机系统100可以包括与地址/数据总线102联接的输入设备112,其中,输入设备112被配置成将信息和命令选择传送至处理器100。根据一个方面,输入设备112是字母数字输入设备(如键盘),其可以包括字母数字键和/或功能键。另选地,输入设备112可以是除字母数字输入设备之外的其它输入设备。在一方面,计算机系统100可以包括与地址/数据总线102联接的光标控制设备114,其中,光标控制设备114被配置成将用户输入信息和/或命令选择传送至处理器100。在一方面,光标控制设备114利用诸如鼠标、轨迹球、轨迹板、光学跟踪设备或触摸屏的设备来实现。尽管如此,但在一方面,例如响应于使用与输入设备112相关联的特殊键和键序列命令,光标控制设备114经由来自输入设备112的输入而被引导和/或激活。在另一方面,光标控制设备114被配置成通过话音命令指引或引导。
在一方面,计算机系统100还可以包括与地址/数据总线102联接的一个或更多个可选计算机可用数据存储设备,例如存储设备116。存储设备116被配置成存储信息和/或计算机可执行指令。在一个方面,存储设备116是诸如磁或光盘驱动器(例如,硬盘驱动器(“HDD”)、软盘、光盘只读存储器(“CD-ROM”)、数字通用盘(“DVD”))的存储设备。依据一个方面,显示设备118与地址/数据总线102联接,其中,显示设备118被配置成显示视频和/或图形。在一方面,显示设备118可以包括:阴极射线管(“CRT”)、液晶显示器(“LCD”)、场发射显示器(“FED”)、等离子体显示器,或者适于显示视频和/或图形图像以及用户可识别的字母数字字符的任何其它显示设备。
本文所呈现的计算机系统100是根据一个方面的示例计算环境。然而,计算机系统100的非限制示例并不严格限于作为计算机系统。例如,一个方面规定了计算机系统100代表可以根据本文所述各个方面使用的一类数据处理分析。此外,还可以实现其它计算系统。实际上,本技术的精神和范围不限于任何单一数据处理环境。因此,在一方面,使用通过计算机执行的计算机可执行指令(例如程序模块)来控制或实现本技术的各个方面的一个或更多个操作。在一个实现方式中,这样的程序模块包括被配置成执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件和/或数据结构。另外,一个方面提供了通过利用一个或更多个分布式计算环境来实现本技术的一个或更多个方面,例如,在该计算环境中,任务由通过通信网络链接的远程处理设备执行,或者例如,在该计算环境中,各种程序模块位于包括存储器-存储设备的本地和远程计算机存储介质中。
图2中描绘了具体实施本发明的计算机程序产品(即,存储设备)的例示图。该计算机程序产品被描绘为软盘200或诸如CD或DVD的光盘202。然而,如先前提到的,该计算机程序产品通常代表存储在任何兼容的非暂时性计算机可读介质上的计算机可读指令。如关于本发明所使用的术语“指令”通常指示要在计算机上执行的一组操作,并且可以表示整个程序的片段或单个、可分离的软件模块。“指令”的非限制性示例包括计算机程序代码(源或目标代码)和“硬编码”电子设备(即,编码到计算机芯片中的计算机操作)。“指令”被存储在任何非暂时性计算机可读介质上,例如存储在计算机的存储器中或软盘、CD-ROM以及闪存驱动器上。无论如何,这些指令被编码在非暂时性计算机可读介质上。
(3)各种实施方式的具体细节
描述了协议的集合,这些协议确保从一个或更多个服务器的集合发送到分布式客户端(例如,物联网(IoT)设备)的数据的真实性。本文描述的发明使用多方计算(MPC)协议来确保用于对分布式数据进行签名的密钥的保密性,以及使用区块链技术来确保所接收的数据的正确性和完整性。具体而言,利用了双向区块链,其中将区块链接在一起的散列序列在时间上向前和向后运行,这样做时使通信过程和相关联的系统本身更加安全,从而对认证系统进行了明显的技术改进。
(3.1)多方计算(MPC)
MPC协议允许一组服务器以分布式方式存储数据(称为秘密),并对所分布的数据执行计算,而不会将秘密泄露给任何个人服务器。一旦计算完成,服务器就可以将计算输出提供给一个或更多个接收方。
在执行MPC协议期间,某些服务器可能会损坏。服务器损坏是可能导致服务器泄露保密数据或以协议描述未指定的方式运行的任何变化。服务器损坏可能意味着:服务器感染了恶意软件,该恶意软件可能使攻击者查看所有服务器数据并导致服务器执行任意代码;服务器丢失或删除了应保留的数据;服务器出现硬件故障,该硬件故障导致了意外行为;或服务器正经历网络连接问题,从而导致服务器无法正确发送或接收数据。
MPC协议被设计为在这样的假设下是安全的:不超过阈值数量的服务器被损坏。服务器的数量表示为n,损坏阈值表示为t。该表示法在MPC文献中是常见的,并且在整个本公开中使用。例如,只要少于三分之一的服务器被损坏,MPC协议就可以声明它是安全的。在这种情况下,协议要求t<n/3,因此,例如,如果n=7,则协议将要求t不大于2,这意味着7个服务器中不超过2个损坏。根据本公开的实施方式的系统的n和t的具体值将取决于所使用的MPC协议。
在本公开中,MPC子协议用于构建双向区块链协议。文献中的任何MPC协议都将满足要求(例如,参考文献No.2),只要它包含如下所述的子协议即可。
1.秘密共享协议,该秘密共享协议允许分发方(dealer)在一组服务器当中分发秘密的份额,并且还可能向服务器传递辅助信息。是否包括辅助信息将取决于使用文献中的哪个子协议。
2.秘密重建协议,该秘密重建协议允许服务器使用它们的份额以及可能的辅助信息来向接收方揭露秘密。
(3.2)区块链
区块链是被分成一系列区块的数据的集合。各个区块以密码方式链接到前一区块,使得在不编辑所有后续区块的情况下无法编辑一个区块。通常通过在后续区块中包括前一区块的散列摘要(或前一区块的某一部分的散列摘要(hash digest))来实现这种密码链接。图3中描绘了基本的区块链结构图,其示出了一系列数据区块(区块1(要素300)、区块2(要素302)和区块3(要素304))。如图所示,区块2(要素302)包括前一区块1(要素300)的散列(要素306),并且区块3(要素304)包括前一区块2(要素302)的散列(要素308)。
区块链由一组区块链节点存储。区块生成协议将根据所使用的区块链协议而有所不同,但是一旦生成了新区块,它就被发送到一个或更多个区块链节点。接收方然后确认接收到的区块是有效的,如果是,则他们将该接收到的区块分发到其他区块链节点;无效的区块将被忽略。所有区块链节点都接收到新区块可能需要一些时间,但是预计最终所有区块链节点都将对链中给定区块的内容达成一致。区块链节点就给定区块的内容达成共识的方法将根据区块链协议而有所不同。例如,比特币使用基于工作量证明的共识,而瑞波币使用Byzantine容错共识算法。
在包括本公开中描述的协议在内的大多数区块链协议中,存在的最长的正确形成的区块链被认为是正确的区块链。可能有长度相同的两个正确形成的区块链。当存在两个正确形成的区块链时,各个区块链具有最大长度,此事件称为分叉(fork)。例如,如果恶意攻击者通过将两个不同的区块添加至现有区块链来创建两个不同的区块链,然后将这两个区块链分发给两个不同的实体集合,则会发生分叉。当实体(诸如,区块链节点)看到分叉发生时(这意味着它接收到两个冲突的最大长度区块链更新),该实体无法分辨哪个是正确的。如何解决分叉取决于区块链协议。
(3.3)双向区块链
本文描述的协议构建和利用双向区块链。如图4所示,双向区块链由两个单独的区块链构成:前向区块链(要素400),在所述前向区块链中,第一区块(要素300)之后的各个区块(要素302、304和402)包含前一区块的散列摘要(正如在普通的区块链中)。双向区块链还包括反向区块链(要素404),在所述反向区块链中,最后区块(要素412)之前的各个区块(要素406、408和410)包含下一区块的散列摘要。这两个区块链(要素400和404)包含相同的公钥(在下面称为p
前向区块链(要素400)存储要由客户端接收/消费的实际数据。由于存在的最长区块链被认为是正确区块链,因此前向区块链(要素400)确保了数据接收方拥有正确的当前数据。反向区块链(要素404)存储被客户端用于验证存储在前向区块链(要素400)中的数据的真实性的公钥。这使客户端无需参考受信任的第三方即可知道公钥是有效的(通过确保该公钥是反向区块链(要素404)的一部分)。可以利用本文描述的发明的系统的非限制性示例包括无线连接以协调动作并共享信息的车辆系统。连接的车辆之间的无线通信容易受到安全威胁,这可能导致车辆安全隐患。交换的任何警告消息都必须被认证。在该示例中,本文描述的系统将使车辆能够知道用于访问消息(或其他数据)的公钥是有效的(通过确保它是反向区块链(要素404)的一部分),而无需参考受信任的第三方。例如,一旦被认证,包含该消息的文件就可以被上传到网络。
此外,由于公钥在需要之前一直保持处于隐藏状态,因此有助于防止这样的场景:在公钥密码方案中发现了漏洞,从而使攻击者更快地从公钥计算私钥;由于公钥有效且对节点(诸如,区块链节点)可见的时间窗很窄,因此计算私钥的时间也很少。因此,将前向区块链(要素400)和反向区块链(要素404)组合成双向区块链提供了对当前技术的改进。具体地,本文描述的发明提供了比传统的区块链或公钥基础设施(PKI)方案(如现有技术中的)所能实现的更高的安全度。
(3.4)协议中涉及的实体
根据本公开的实施方式的协议涉及五个不同的实体组,这在图5和图6中例示。在协议开始(要素500)后,作为计算机或服务器的密钥生成器(要素502)生成私钥/公钥对(要素504)和反向区块链(要素506)。然后,密钥生成器(要素502)与MPC服务器一起参与秘密共享协议,以共享反向区块链和私钥/公钥对(要素508),并将第一反向区块分发给客户端(要素510)。
MPC服务器存储秘密密钥和反向区块。MPC服务器在适当时向签名服务器揭露秘密密钥和反向区块。签名服务器负责创建新区块并将其分发到区块链节点。区块链节点完整存储反向区块链和前向区块链,并在接收到新生成的区块时将它们提供给客户端。客户端是双向区块链中包含的数据的最终消费者。客户端可以是任何类型的分布式设备。例如,客户端可以是从区块链节点接收软件更新的手机、车辆或飞机。当客户端或区块链节点注意到存在分叉时,它们将此事实报告给分叉服务器。注意到分叉的任何实体(例如,客户端或区块链节点)都会向分叉服务器发送两个冲突的区块链,然后分叉服务器可以联系MPC服务器和签名服务器,以便可以通过调用协议GenerateBlock来发布新区块以解决分叉。由于新生成的区块将创建比当前任何一个区块链都更长的区块链,因此将解决分叉。
注意,本文描述的协议与哪些现实世界实体和组织控制协议实体无关。例如,如果提供给客户端的数据是来自制造商的软件更新,则制造商可以控制密钥生成器、MPC服务器、签名服务器、区块链节点和分叉服务器,仅将客户端置于客户的控制之下。另选地,制造商可以控制密钥生成器和分叉服务器,将MPC服务器和区块链节点的角色外包给分布式计算提供商,并将签名服务器的角色外包给第三方软件提供商。
(3.5)密码学预备知识
根据本公开的实施方式的协议假设存在单向、抗冲突的散列函数H(诸如,SHA-256(参见参考文献No.3))。该协议还假设存在用于密钥生成、签名和验证签名的公钥加密协议(诸如,RSA(参见参考文献No.4))。对于秘密密钥s
密钥生成器(要素502)必须具有安全擦除所有协议数据(图5中的要素512)的手段,以防止这些数据在将来的某个时刻被攻击者窃取。为了实现这一点,假设密钥生成器(要素502)能够隔离存储器的特定部分,并且将密钥以及用于生成密钥的所有临时内存存储在该存储器部分中。在Initialize协议(如下所述)的结尾,签名服务器然后可以擦除整个该存储器部分。这允许有效且安全的数据擦除。
(3.6)协议使用
下面概述了如何使用协议。密钥生成器(要素502)和MPC服务器(图6的要素602)参与Initialize协议以生成存储的秘密密钥和反向区块。每次签名服务器(要素600)要对新数据片(诸如,软件更新)进行签名时,签名服务器(要素600)、MPC服务器(要素602)和区块链节点(要素604)参与GenerateBlock协议,如图6所示。每次区块链节点(要素604)或客户端接收到新区块(要素626)时,区块链节点或客户端都会调用VerifyBlock协议(要素628)以确保该新区块是真实的。这些协议的流程图在图5、图6、图7A和图7B中示出,其分别例示了Initialize协议、GenerateBlock协议和VerifyBlock协议。
作为非限制性示例,考虑以下情况:所提供的数据是软件更新,并且客户端是手机。在这种场景下,MPC服务器和密钥生成器由手机公司拥有,签名服务器由某些第三方软件提供商拥有,而区块链节点和分叉服务器由云计算服务运营。在将初始软件状态提供给手机之前,密钥生成器(要素502)和MPC协议参与Initialize协议,然后将初始软件状态和反向区块分发给手机。当需要软件更新时,具有该更新的签名服务器之一与MPC服务器一起参与协议GenerateBlock,以生成包含该软件更新的新的前向区块,从而将其分发到区块链节点和手机。区块链节点和手机对接收到的数据调用协议VerifyBlock以确认其真实性。如果任何区块链节点或手机检测到分叉,则将其报告给分叉服务器,然后由分叉服务器解决。
(3.7)协议规范
在此部分中给出了本文所述发明所独有的协议的细节。协议假设客户端以一些初始数据片u
(3.7.1)初始化(Initialize)
如图5所示,密钥生成器(要素502)和MPC服务器将长度l作为输入,该长度l是它们希望生成的反向区块的数量。
1.密钥生成器(要素502)如下生成反向区块链。
1.1.生成l个秘钥/公钥对的列表(要素504){(s
1.2.通过设定RB
2.密钥生成器(要素502)参与秘密共享协议(要素508),以将各个p
3.密钥生成器(要素502)将RB
4.密钥生成器(要素502)擦除其在协议过程中生成的所有数据(要素512)。
(3.7.2)GenerateBlock
如图6所示,在协议的开始(要素606),签名服务器(要素600)将打算作为下一区块的一部分分发的某个数据片u作为输入。
1.签名服务器将对秘密密钥的请求发送到MPC服务器(要素608)。
2.MPC服务器接收该请求(要素610),并单独确定是否将允准(honor)来自签名服务器的请求(要素612)。(如何进行此确定的细节将取决于正在被签名的数据的类型,但是,例如,可以通过这样的方式来执行此操作:让MPC服务器检查签名服务器提供的凭据以确保可以信任该签名服务器对数据进行签名。)
3.确定要允准该请求的任何MPC服务器都与签名服务器一起参与秘密重建协议(要素614),以将p
4.如果重建过程成功,则签名服务器定义u
5.签名服务器定义FB
6.区块链节点(要素604)从签名服务器接收新的前向区块(要素626),并且使用VerifyBlock协议来检查该新区块(要素628),并且如果验证通过(要素630),则这些区块链节点将新区块中继到其他区块链节点和客户端以更新网络(要素632)。如果验证没有通过,则协议终止(要素634)。
(3.7.3)VerifyBlock
如图7A所示,在开始(要素700)处,实体(以下称为“发送方”)将初始前向区块发送给接收方(例如,区块链节点或客户端)(要素702)。在从发送方接收到新的前向区块FB
1.如果接收到的前向区块的索引比当前存储的前向区块的索引低(要素706),则拒绝消息并终止协议(要素708)。
2.接收方确定接收到的区块的索引是否与当前存储的区块相同(要素710)。如果接收到的前向区块与当前存储的前向区块具有相同的索引(即,两个前向区块链的长度相同)但与当前存储的前向区块不完全相同,则转到步骤5以向发送方发送对完整区块链的请求(要素712),该请求被发送方接收(要素701)。
3.如果接收到的前向区块的索引大于当前存储的前向区块的索引,则接收方执行用于检查数据的子步骤(要素714)并检查以下内容:
a.根据分别在协议GenerateBlock和Initialize中给出的规范,前向区块的格式正确(要素716)。
b.给定D
c.D
d.D
e.让RB
4.如果以上所有检查均通过(要素726),则接收方移至步骤9。否则,检查失败(要素728),并且接收方移至步骤5。
5.接收方向提供了FB
6.一旦从将完整的区块链发送给接收方(要素703)的发送方接收到(要素716),接收方就在步骤3中对从发送方接收的每对前向和反向区块执行检查(要素714)。
7.如果步骤6中的所有检查都成功(即,所有检查都通过(要素718),则转到步骤8。否则,接收方终止协议并拒绝从发送方接收的所有数据(要素708)。
8.接收方确定所接收的前向区块是否具有与当前存储的前向区块相同的索引(要素720)。如果是,则将新接收的区块链和所存储的前向区块(或整个区块链,如果已存储)都发送到分叉服务器,并终止协议(要素722)。否则,转到步骤9。
9.接收方将从发送方接收到的前向和反向区块(FB
在根据本公开的实施方式的系统中,每次新软件被签名时,就使用新的公钥/私钥对,并且新密钥的使用导致先前的密钥过期。因此,密钥有效的时间窗很小,并且因此,攻击者必须破解密钥以便伪造数据的时间窗很小。这是通过将数据存储在前向区块链中并将用于验证数据的公钥存储在反向区块链中来实现的。这两个区块链一起构成双向区块链。通过更新反向区块链的当前状态,数据接收方无需与受信任的第三方联系即可验证密钥的真实性,并且每次发生此类更新时,先前的密钥都会过期。Enigma项目(参见参考文献No.1)将区块链技术与多方计算组合。然而,该组合正被用于提供可公开审计的MPC。
交通工具制造商可以使用本文描述的发明来确保传递给车辆或飞机的软件更新的完整性。MPC协议确保用于对软件更新进行签名的秘密密钥对试图窃取它们的攻击者而言是安全的。区块链技术使车辆或飞机无需与中央可信服务器进行通信即可验证软件是合法的。
最后,虽然已经根据几个实施方式对本发明进行了描述,但本领域普通技术人员应当容易地认识到本发明在其它环境中可以具有其它应用。应注意到,可以有许多实施方式和实现。另外,任何“用于……的装置(means)”的用语旨在引发要素和权利要求的装置加功能的解读,而任何未特别使用“用于……的装置”用语的要素不应被解读为装置加功能要素,即使权利要求以其它方式包括了“装置”一词。而且,虽然已经按特定次序陈述了特定的方法步骤,但这些方法步骤可以按任何希望次序发生并且落入本发明的范围内。
- 创建双向区块链的方法及双向区块链系统
- 一种基于区块链的双向认证监控系统