用于从区块链中安全提取数据的密码方法和系统与流程

文档序号:16810807发布日期:2019-02-10 13:37阅读:318来源:国知局
用于从区块链中安全提取数据的密码方法和系统与流程

本发明大体上涉及用于安全处理、传输和交换数据的密码技术。本发明还涉及点对点(peer-to-peer)分布式账本(ledger),例如(但不限于)比特币区块链,和相关技术。更具体的,本发明涉及用于以加密控制和安全的方式对数据进行识别、保护、提取、传输和更新的控制解决方案。本发明还涉及系统互操作性以及在不同的和有差异的计算系统之间传递数据的能力。



背景技术:

区块链是点对点的电子账本,其被实现为由区块组成的基于计算机的去中心化的分布式系统,而区块又由交易组成。每个交易是对区块链系统中参与者之间的数字资产的控制转移进行编码的数据结构,并且包括至少一个输入和至少一个输出。每个区块包含前一个区块的散列(hash),以将这些区块链接在一起,从而创建一个永久的、不可更改的所有交易的记录,这些交易自区块链诞生之始已写入区块链。交易包含嵌入在其输入和输出中的称为脚本的小程序,其指定了如何以及由谁来访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。

为了将交易写入区块链,交易必须是“已验证的”。网络节点(矿工,miners)进行工作,以确保每个交易都有效,无效交易被拒绝进入网络。安装在节点上的软件客户端通过执行其锁定(locking)和解锁(unlocking)脚本,对未花费的交易(unspenttransaction,简称“utxo”)执行此验证工作。如果锁定和解锁脚本的执行评估为真(true),则交易有效并且将交易写入区块链。因此,为了将交易写入区块链,交易必须i)由接收交易的第一节点验证——如果交易被验证,则该节点将其中继到网络中的其他节点;ii)加入到由矿工建造的新区块;iii)被挖掘(mined),即加入到过去交易的公共账本中。

虽然区块链技术以其在加密货币(cryptocurrency)上的应用而闻名,但数字企业家已经开始探索使用比特币所基于的加密安全系统以及能够存储在区块链上的数据,从而实现新系统。如果区块链能用于自动化任务和过程,不限于加密货币领域,那将是非常有利的。这样的解决方案在使区块链的应用多样化的同时,能够利用好区块链的益处(例如,永久性的防篡改的事件记录,分布式处理等)。

目前研究的一个领域是使用区块链实施“智能合约”。这些合约是旨在自动执行机器可读合约或协议条款的计算机程序。与用自然语言编写的传统合约不同,智能合约是机器可执行程序,其包括能够处理输入以产生结果的规则,能够根据这些结果再执行动作。与区块链相关的另一领域是使用“代币”(或“彩色币(colouredcoin)”)来通过区块链表示和转移现实世界的实体。潜在敏感的或秘密的项目可以由代币表示,代币没有可辨别的含义或价值。因此,代币用作允许从区块链查询(referenced)现实世界的项目(item)的标识符。

在本发明中,这些技术用在新颖的有利配置中,这一配置允许在不同计算机系统之间传输数据和资产,其中一种计算机系统是区块链。在大型组织或实体内使用的计算机系统通常非常庞大,复杂且技术多样化。数据的安全性通常是最重要的。对存储在系统中的数据进行访问和使用必须高效且具有成本效益。需要克服在大型组织中使用复杂计算系统所产生的至少一些技术困难,这些大型组织通常在本质上是分层的。

在本文中,我们使用财务账户环境来说明本发明的一种可能的用途或应用。然而,值得注意的是,该示例仅用于说明目的,且本发明不限于此。相反,本发明提供了一种通用的、加密实施的、基于区块链的解决方案,用于与组织相关联的任何类型的非区块链实现的计算系统。

关于我们的说明性使用,实体的总账本是一账目集,其汇总了在实体内发生的所有金融交易。该账目集的结构通常由单个实体自身来建立,并且可以包括在商业财务报表中报告的账目,例如现金、应付账款、费用账目以及采购和贷款。在某些情况下,总账本可以细分为多个子账本。在这种情况下,总账本内的每个子账本可以基于实体需跟踪的每个账户的货币交换来保持财务状况的单独平衡或动态平衡。

实体的账户设置可以相对复杂,具有数百或数千个单独的报告点,即事业部、部门、产品等。例如,可能需要并行账本:一个按产品线,一个按部门。

大型实体可以基于大型数据库结构来实现复杂的金融系统,以管理总账本的账目。例如,金融系统可能需要管理和同步各种数据库,以便可以准确地报告捕获的数据。

在本文中,我们使用术语“区块链”来包括所有形式的、基于计算机的分布式电子账本。这些包括但不限于点对点的、基于共识的区块链和交易链技术、许可的和未许可的账本、共享账本及其变体。最广为人知的区块链技术的应用是比特币账本,尽管已经提出并开发了其他区块链实施方案。虽然本文中出于方便和说明的目的引用了比特币,但应注意,本发明不限于采用比特币区块链的应用,并且替代的区块链实现和协议也落入本发明的范围内。



技术实现要素:

本发明在所附权利要求中定义。

本发明可以提供一种密码方法和相应的系统。本发明可以提供区块链实现的方法/系统。本发明可以提供用于对数据进行安全识别、提取、传输、处理和/或更新的控制系统。本发明可以提供使用加密密钥来将区块链与非区块链实现的计算(例如,数据存储/处理)资源集成的方法/系统。本发明可以提供使用加密密钥从区块链中提取数据和/或将源自该区块链的数据集成到非区块链实现的存储资源中的方法/系统。本发明可以提供一种计算机实现的方法,用于生成在点对点分布式账本(即区块链)上或来自点对点分布式账本(即区块链)的实体感兴趣的(第一)结构的记录。该实体可以称为组织、系统或网络。

本发明提供优于现有技术的显著优点,尤其是因为其允许数据的安全处理,通过使用新颖的密码技术保持了数据的完整性。本发明还能够在不同的设计、结构、体系和协议上实现的独立计算机系统之间进行数据通信和交换。因此,本发明提供了系统互操作性。本发明允许使用加密密钥作为现有计算机系统和区块链之间的辅助者或接口,而无需对协议或结构中任何一种进行任何调整。本发明提供增强的数据处理性能和效率,因为它有助于潜在的庞大复杂系统(例如,数据库)的管理和同步。

实体可以由多个元素组成,例如,系统组件、账户、数据记录或网络实体等。该实体可以是分层实体,其包括以分层关系组织或关联的多个元素。实体内的元素可以形成元素的结构。其可以是一个分层结构。该结构可以包括链或树状层次结构,其定义或反映实体中的元素之间的关系或关联。结构中的元素可以与实体内的子实体、单元或其他关联联系起来。

结构内的实体和/或一个或多个元素可以与相应的加密密钥相关联。密钥可以形成公钥/私钥对的一部分。可以有一个密钥或密钥对被指定为“根”密钥/对。结构中的其他元素可以与从根派生的子密钥或对相关联。可以以确定的(deterministic)方式生成子密钥。可以如下面标题为“子密钥生成方法”的部分中所实质描述的那样生成或确定子密钥。可以基于另一(前一)密钥生成、派生或确定子密钥。子密钥的生成可以包括使用椭圆曲线密码学(ellipticcurvecryptosystem,简称“ecc”)技术。可以使用基于消息(m)的加密散列的确定性密钥(dk)来生成、派生或确定子密钥。该消息可以是随机的,伪随机的,预定义的或选择的。在优选实施例中,选择、安排或创建消息以对应于有意义的值,例如账号。该消息可以具有与实体或子实体/元素有关的一些含义。该消息可以提供对实体或元素的链接、关联或引用。可以基于相关联的公共父密钥与确定性密钥和发生器(g)的标量乘法的标量加法来确定子密钥。该消息可以存储在区块链交易(tx)内或作为元数据存储在区块链交易(tx)中。可以重新散列该消息以便提供另一子密钥。

本发明可以包括以下步骤:

将结构的一个或多个元素与从另一加密密钥派生的加密子密钥相关联;

从区块链交易(tx)中提取包括元素的子密钥或关于元素的子密钥的数据;和

将提取的数据发送到基于非区块链的计算机系统。基于非区块链的计算机系统可能不是区块链的一部分。

该方法可以包括扫描、遍历和/或分析区块链,以识别一个或多个区块链交易(tx)的步骤,该区块链交易包含与元素的加密子密钥有关的数据或包括元素的加密子密钥的数据。

该方法还可以包括处理提取的数据以生成输出的步骤。在一个实施例中,输出可以是结果,或计算,或报告,或决定,或记录,如财务账户记录。该方法可以包括通过网络将输出传送到目的地的步骤。

附加地或替代地,本发明可以包括以下步骤:

识别第一结构公钥集,该第一结构公钥集包括与第一结构相关联的至少一个公共根密钥和一个或多个相关公共子密钥;

导出至少一个公共根密钥与一个或多个相关公共子密钥之间的确定性关联;

从点对点(p2p)分布式账本(区块链)中的多个区块链交易提取(复制)交易数据/信息,该提取的数据至少包括:

指示第一结构和至少一个另一结构之间的交易的数据;和

与第一结构相关联的第一结构公钥,

其中,第一结构公钥是加密对的一部分,该加密对包括第一结构公钥和第一结构私钥;以及

通过使用确定性关联将第一结构公钥集与提取的交易数据相匹配,生成第一感兴趣结构的输出(例如,财务账户记录)。

第一结构与至少一个另一结构之间的交易可涉及将资产从一方转移到另一方。资产可以是代币化资产,也可以是某种数字资产。它可以是加密货币的一部分。交易可以将资产的所有权和/或控制权从一方转移到另一方。

区块链可以与加密货币相关联。例如,区块链可以是比特币区块链。或者,可以使用另一种加密货币或块链协议。

第一结构可以表示定义的项目组,例如,实体内的组件。项目可以是物理的或逻辑的,例如账目。例如,第一结构可以与第一事业部相关联,例如第一组用户、部门或团队;实体的第一产品或服务;或完整的实体。

至少一个另一结构可以在实体内。例如,至少一个另一结构可以与第二事业部或第二产品或服务相关联。

或者,至少一个另一结构可以在另一实体内。例如,至少一个另一结构可以与另一实体的事业部、另一实体的产品或服务、或者完整的另一实体相关联。

第一结构公钥集可以包括至少一个公共根密钥和所有相关联的公共子密钥。

导出至少一个公共根密钥与一个或多个相关公共子密钥之间的确定性关联的步骤可以包括:确定用于确定相关联的父密钥的公共子密钥的规则。例如,确定子密钥的规则可以包括确定消息的散列以创建种子值。

至少一个公共根密钥与一个或多个相关公共子密钥之间的确定性关联可以是树层次结构。或者,该确定性关联可以是链层次结构。

每个公共子密钥可以表示实体内的虚拟或物理或逻辑项(例如,账户)。

识别第一结构公钥集的步骤可以包括:识别至少一个根密钥并基于至少一个根密钥确定一个或多个子密钥。可以通过从诸如账户图表等内部数据库获取数据来识别至少一个根密钥。

从区块链中的多个交易中提取交易数据的步骤可以进一步包括:从多个交易中提取或复制以下数据项中的一个或多个:

交易输入值;

交易输出值;

用于基于指示交易的数据导出交易输入值或输出值的规则;

交易的时间戳;以及

区块链的区块的块号。

第一结构与另一结构之间的交易可以涉及货币交易、合约交换、商品或服务交易等。关于货币交易,应当理解,交易可以涉及诸如比特币的加密货币交易,或者例如通过使用象征性(token)数量的加密货币的法定货币交易。

在p2p分布式账本中从多个交易记录中提取交易信息的步骤可以包括:识别先前未提取的交易记录以生成财务账户记录。在一个示例中,该方法可以包括识别p2p分布式账本的区块的块编号并将该块编号与先前生成的财务账户记录进行比较的步骤。

该方法可以包括将输出发布到基于计算机的资源的步骤。这可以是任何类型的基于计算机的系统,例如数据库系统或财务账户账本。它可以在实体内部,因为它可以被安排和配置用于存储与实体和/或其子实体有关的数据。基于计算机的资源可以是实体的总账本。或者,财务账户账本可以是该实体的总账本的子账本。如上所述,实体的总账本通常代表一账户集,用于汇总实体内发生的所有金融交易。

将生成的输出发布到基于计算机的资源的步骤可以自动进行。换句话说,它可以是自动的、计算机执行的过程,而不需要手动干预。

发布所生成的输出的步骤可以周期性地进行。这可以在预定的时间段之后或在规定的时间点。

发布所生成的输出的步骤可以包括将所生成的输出写入一个或多个位置或文件。这些可以被称为例如发布文件。一个或多个发布文件可以具有任何合适的格式,例如json、xml或xbrl。可以加密一个或多个发布文件。例如,可以对一个或多个发布文件进行散列。在另一示例中,可以使用计算出的秘密来加密一个或多个发布文件。在下面标题为“子密钥生成方法”的部分中进一步详细描述了计算秘密的示例。

该方法可以包括使用第一结构私钥对一个或多个发布文件进行签名的步骤,其中第一结构私钥是包括第一结构私钥和相关联的第一结构公钥的非对称密码对的一部分。以这种方式,可以使用与用于对一个或多个发布文件进行签名的第一结构私钥相关联的第一结构公钥来验证一个或多个发布文件。

该方法可以包括存储所生成的输出的步骤。在一个具体示例中,所生成的输出可以记录在实体的内部数据库中,或位于实体内或从属于实体的其他存储设施上。在可选示例中,所生成的输出可以存储在公共数据库上,该公共数据库可以是集中式或分布式的,例如分布式散列表。在具体示例中,生成的输出可以以交易(tx)的形式存储在区块链上。例如,可以将生成的输出记录为区块链交易(tx)的元数据(在区块链交易(tx)内的元数据)。可以使用第一感兴趣结构的私钥来签署交易的散列值。

该方法可以包括加密所生成的输出以将数据存储在数据库或区块链中的步骤。

该方法可以包括对所生成的输出进行散列和/或签名以将所生成的输出存储在数据库、存储设施或区块链上的步骤。

该方法可以包括分析所生成的输出的步骤。在一个示例中,该方法可以包括确定第一感兴趣结构的现金流量的步骤。在另一示例中,该方法可以包括确定第一感兴趣结构的资产和/或债务的步骤。

发布所生成的财务账户记录的步骤可以包括使所生成的财务账户记录可用于专用账户系统。该账户系统可以被配置为执行该实体的专用账户软件。

根据本发明的实施例,提供了一种计算机系统,其用于实现本发明的方法的任何实施例。该系统可以用于在区块链上生成实体的第一感兴趣结构的记录,包括:

处理设备,用于

识别第一结构公钥集,该第一结构公钥集包括与第一结构相关联的至少一个公共根密钥和一个或多个相关公共子密钥;以及

导出至少一个公共根密钥与一个或多个相关公共子密钥之间的确定性关联;

网络接口,用于从点对点(p2p)分布式账本的多个交易记录中提取交易信息,该提取的信息至少包括:

指示第一结构和至少一个另一结构之间的交易的信息;和

与第一结构相关联的第一结构公钥,其中第一结构公钥是包括第一结构公钥和第一结构私钥的密码对的一部分;

其中,处理设备还用于通过使用确定性关联将第一结构公钥集与提取的交易信息相匹配,生成第一感兴趣结构的财务账户记录。

一种计算机程序,包括机器可读指令,以使处理设备实现上述方法中的任何一个。

附图说明

现在将参考附图仅通过非限制性示例描述本发明的实施例,其中:

图1是用于生成财务账户记录的示例系统的示意图;

图2是用于生成财务账户记录的说明性计算机系统的可选示意图;

图3是用于确定账户配置以生成财务账户记录的说明性计算机实现的方法的流程图;

图4是说明根公钥和一个或多个公共子密钥之间的确定性关联的示意图;

图5是用于从p2p分布式账本(区块链)提取信息以生成财务账户记录的说明性计算机实现的方法的流程图;和

图6是用于将所生成的财务账户记录发布到财务账户账本的说明性计算机实现的方法的流程图。

图7至图13示出了用于从父密钥导出子密钥的说明性技术的各个方面,如下所述,该技术适用于与本发明的各方面有关的用途。

具体实施方式

概述

本发明一般涉及使用点对点(p2p)分布式账本(以下称为“区块链”)的方法和系统,例如比特币区块链,用于对数据进行识别、提取、传输、处理和/或更新。本发明提供了一种安全的、加密强制执行的解决方案,用于使用区块链发布的数据来增强、添加或集成在组织(实体)内设置的、基于计算机的资源中的数据。该基于计算机的资源可以是数据库、账户系统或用于存储和/或处理数据的任何其他类型的基于计算机的设施。该系统可以称为“内部”系统,因为它是组织内部的而不是区块链的一部分。

本发明提供通过将加密密钥分配给与实体或子实体相关联的元素来提供数据控制和安全的解决方案。元素被组织成(线性或树)结构,该结构由元素之间的关系定义或规定。结构中的每个元素与加密公钥/私钥对相关联,在结构的顶部具有根密钥对。在结构中,较低的元素与从先前的密钥对导出的密钥对确定地相关联。该确定性推导可以,优选地,根据如下面标题为“子密钥生成方法”的部分中实质描述的方法来执行。因此,生成加密密钥对的层次结构,以反映实体内的元素之间的层次关系。在以下说明中,可以使用术语“账户”代替“元素”。

纯粹为了说明的目的,且无意将本发明的性质限制于该用途或应用领域,现在提供一个实例,其中本发明用于生成实体的感兴趣结构的财务账户记录。值得注意的是,这种面向财务的方面对于本发明并不是必不可少的,且本发明可以与任何类型的基于内部计算机的系统结合使用,并且用于任何类型的数据的控制、传输和安全性。

在我们的示例中,感兴趣结构可以例如是事业部,诸如实体内的部门或子实体,或者可以表示要为其生成输出(例如,账户记录)的完整实体。或者,感兴趣结构可以涉及要为其生成财务账户记录的实体的感兴趣产品或服务或者任何合适的结构,并且可选地将其发布到例如实体的总账本。

本发明的实施例提供了显著的优点。例如,利用公共区块链,例如比特币区块链,用于生成金融交易记录是有利的,因为比特币区块链本质上是去中心化的。这意味着比特币区块链上的交易记录跨网络同步存储,确保所有信息的分发和公布。

此外,所生成的感兴趣结构的财务账户记录可以记录在相同的区块链上,例如以交易记录中的元数据的形式。这将提供此类优势:形成永久的不可更改的公共记录,这是对实体活动的真实和准确反映。这可以最终取消审计员等外部协助的需求。

现在参考图1,图1示出了根据本发明的说明性实施例的用于生成账户记录的计算机系统10。财务账户记录可以例如发布到财务账户账本,例如实体的总账本。

在本示例中,计算机系统包括:处理器12,用于控制和协调操作;存储器14;以及网络接口16,它们通过总线18彼此通信。网络接口16通过通信网络,在该示例中是互联网22,促进计算机系统10和p2p分布式账本,例如比特币区块链20,之间的无线通信。

存储器14存储用于如下所述的过程的指令24和数据26,并且处理器12执行存储器14中的指令24以实现处理。应当注意的是,尽管计算机系统10被表示为独立的网络元件,但是计算机系统10可以替代地是另一网络元件的一部分,并且由计算机系统10执行的功能可以分布在多个网络元件之间。计算机系统10可以代表第一实体的计算机系统。

图1还示出了第二实体的另一计算机系统28。这仅用于说明目的,并且应当理解,其他计算机系统或实体可以是网络的一部分。

实体/总账本的财务账户账本

如上所述,总账本是一账户集,其汇总了在实体内发生的所有金融交易。它通常用作实体的主要财务记录,并包含与实体相关的所有金融交易(账目)。这些可以包括资产账目(例如,现金和现金等价物、证券、应收账款、库存和知识产权)和负债账目(例如,应付票据、应付账款、支出账目、贷款)。上述账目的例子仅仅是示例性的,不应被视为限制性的。总账本中的每个账目传统上都是根据每个账目的货币交换维持实体财务状况的平衡。

虽然小型和大型实体都需要通过总账本来保持账户的记录,但是较大的实体可能需要跟踪数千甚至数十万个账户。这种跟踪可能成为一项巨大且潜在复杂的任务。维持一个非常庞大的总账本可能需要花费数天时间来审计或平衡,这会带来一些困难。

此外,一些组织可以考虑在总账本中引入子账本以简化总账本的复杂性。

总账本可以是实体的内部和外部审核对象。审计通常是由特别指定的审计员执行的繁琐且耗时的任务。但是,通过在公开可见的区块链上记录总账本或一个或多个子账本,可能促进并减轻审计员的任务。

在下文中,术语“财务账户账本”可以指实体的总账本或总账本内的一个或多个子账本。然而,本发明不限于仅应用于财务或账户系统,可以使用任何其他类型的、基于计算机的系统。

比特币区块链

虽然下面描述的实施例可以具体涉及比特币区块链(或简称区块链)上的交易记录,但是应理解,本发明可以使用任何区块链来实现。以下使用比特币区块链来简化本发明的各方面,这仅仅是因为其高水平的标准化和大量相关的公共文档。

区块链是公共交易账本,其分布在参与基于比特币协议的系统的网络节点上。每个比特币交易都广播到网络,交易被确认,然后汇总成区块。这些区块然后包含在区块链中。

区块链的完整副本包含自区块链诞生以来发布到账本的每个交易(tx)。因此,提供了不断增长的交易记录列表。由于输入到区块链的每个交易都以加密方式强制执行,因此也强化了区块链,以防止篡改和修改,即使数据存储节点的运算符(operator)也无法篡改和修改。

由于比特币区块链的透明度,每个交易的交易历史是公开可用的。区块链的另一优点是交易和交易记录是相同的,即交易记录嵌入在交易中。

以这种方式,在实际交易(tx)中捕获与数据交换有关的信息。此记录是永久性的且不可变的,因此使用比特币进行的每笔交易不仅由区块链促成,而且还不可变地记录在区块链中。因此,这消除了第三方将交易记录保存在单独数据库上的需求。

在本发明的实施例中,除了用于存储表示从一方到另一方支付比特币(或其他加密货币)的交易记录的设计功能,以新颖的方式使用区块链以生成实体或组织感兴趣结构的数据,例如事业部或感兴趣的产品。数据可以以任何可预见的方式使用,例如,生成账户记录。为简单起见,但不限于此,下面将参考“账户记录”进行描述。在此示例中,生成的账户记录适于发布到实体的总账本,或者提供给实体的专用账户系统。

虽然下面的示例性实施例将比特币区块链称为公共账本,但是应理解,本公开还适用于任何区块链平台或协议。

计算机系统的功能组件

图2给出了计算机系统40的示例性实施表示,其中示出了计算机系统40的功能组件而不是硬件组件。可以使用图1中所示的计算机系统10的硬件组件来实现该示例中的功能组件,从而提供网络接口,以便访问比特币区块链。

在该示例中,计算机系统40包括控制单元42,用于控制和协调计算机系统40的组件的操作。该控制单元42可以例如由图1中所示的处理器12实现。

此外,计算机系统40具有网络接口44,用于促进通过因特网22访问存储在比特币区块链20上的信息。

计算机系统40还包括数据库管理系统(“dbms”)50,其将计算机系统40中接收和/或生成的数据存储在数据存储器52中。可以理解,数据可以替代地存储在远程数据库中,例如存储在云存储器中,并且可以通过因特网22经由网络接口44在计算机系统40处接收。

数据存储器52包括用于存储第一实体的账户配置数据54的存储器。例如,账户配置数据54可以包括收集每个账目的账目名称和标识符的账目图表。这可以进一步包括如将参考图4进一步详细描述的、关于公共根密钥的信息。

存储的账户配置数据54可以由计算机系统40的账目配置确定器56访问。

数据存储器52还包括存储器,用于存储由计算机系统40的发布组件60创建的发布文件58。例如,生成的财务账户记录可以写入能存储在数据存储器52中的一个或多个发布文件。

计算机系统40还包括交易信息收集器62,其与网络接口44通信经由因特网22从比特币区块链20上的交易记录获得交易信息。

计算机系统40的匹配组件64与账目配置确定器56和交易信息收集器62通信。匹配组件64用于将从区块链提取的交易信息和与实体的各个账目相关联的识别的公钥进行匹配,以生成财务账户记录。

如上所述,然后可以将这些生成的财务账户记录写入一个或多个发布文件,并且可以将其发布到数据存储器52中的实体的总账本66。

生成财务账户记录的示例方法的概述

在下文中,生成财务账户记录的方法分为四个主要方法步骤,即确定账户配置(步骤100),从区块链上的交易记录中提取交易信息(步骤200),生成财务账户记录和创建一个或多个发布文件(步骤300),并将一个或多个发布文件发布到实体的总账本(步骤400)。

第一感兴趣结构可以是要为其生成账户记录的第一实体的任何合适的结构。例如,第一结构可以涉及整个第一实体,并且生成的账户记录将被发布到第一实体的总账本。在另一示例中,第一感兴趣结构可以表示事业部,诸如部门、团队或指定的雇员组。或者,第一感兴趣结构可以涉及可跨多个事业部的第一产品或服务。以这种方式,可以创建生成的账户记录以分析与期望的产品或服务相关联的账户。

账户配置

现在参考图3和图4,其示出用于确定账户配置的方法步骤100的流程图,以及方法100的部分方法步骤的示意图。

具体地,方法100可以包括识别第一实体公钥集的步骤,该第一实体公钥包括与第一实体相关联的至少一个公共根密钥和一个或多个相关公共子密钥。每个子密钥可以表示第一实体内的账目。在这方面,最初可以通过识别100.10要为其生成财务账户记录的一个或多个账目(步骤100.10)来识别该第一实体公钥集。

在进一步的步骤中,识别与所识别的一个或多个账目相关联的至少一个公共根密钥(步骤100.20)。这可以通过访问存储在第一实体的内部数据存储器上的数据来完成,例如图2中所示的数据存储器54。内部数据存储器可以存储收集每个账户的账户名称和标识符的账户表。标识符可以包括关联的公共根密钥。在如图3所示的示例中,方法100标识三个公共根密钥,其可以表示三个不同事业部的账户。

方法100还包括确定所识别的公共根密钥与一个或多个公共子密钥之间的确定性关联的步骤100.30。换句话说,确定导出依赖于公共根密钥的一个或多个公共子密钥的规则。在如图4所示的具体示例中,确定性关联定义了树层次结构,其中三个识别的公共根密钥中的每一个与继承的子树和孙子树节点相关联。

在步骤100.30中确定了确定性关联之后,确定与至少一个根密钥相关联的一个或多个公共子密钥,并且使用来自步骤100.10中的账户账目表的信息来选择一些子密钥。应当理解,根据要为其生成账户记录的账目的标识,确定依赖于公共根密钥的所有子密钥或仅部分子密钥。

在如图4所示的具体示例中,选择四个公共子密钥用于生成财务账户记录:第一公共根密钥的第一子密钥、第二公共根密钥的第一子密钥和第一孙子密钥、以及第二子密钥或第三根密钥。例如,四个公共子密钥可以与跨越根密钥表示的三个不同事业部的特定产品或服务相关联。

在一个具体示例中,可以确定一系列继承的确定性公钥,其中可以基于先前的公钥来确定每个继承的公钥。例如,可以使用椭圆曲线密码学(ecc)。在这方面,可以通过最初(initially)确定基于消息(m)的加密散列的确定性密钥(dk)来确定子密钥,该消息散列可以是随机的、伪随机的或预定义的。然后可以基于相关联的公共父密钥与确定性密钥(dk)和发生器(g)的标量乘法的标量加法来确定子密钥。为了重新确定确定性密钥(dk)并由此重新确定子密钥,仅需要消息(m)和发生器(g)。在这方面,消息(m)可以以区块链上交易记录的元数据的形式进行存储,例如以账单号的形式。

在另一示例中,可以对消息重新进行散列(rehashed)以确定下一代公共子密钥。

以上简要描述的确定继承的公钥的步骤将在下面标题为“子密钥生成方法”的部分中进一步详细描述和说明。

在进一步的步骤100.40中,确定一个或多个规则以获得要包括在所选公钥的财务账户记录中的信息。换句话说,方法步骤100.40确定为总账生成账户记录需要什么信息以及如何获得这些信息。

特别地,该信息可以包括:

交易输入/输出;

可发布到其的总账账户;

可反向-发布到其的总账账户;

用于计算交易价值的规则;

用于导出交易描述的规则。

从区块链中提取信息

现在参考图5,图5示出了包括从比特币区块连提取信息的方法步骤的方法200的流程图。

首先,方法200包括识别区块链的一个或多个区块以从区块链上记录的多个交易中提取交易信息的步骤200.10。例如,识别一个或多个区块的步骤200.10可以包括识别与区块相关联的第一块号,该区块包含先前未用于生成财务账户记录的交易记录。这可以通过识别作为区块链上每个交易记录的一部分的区块的相关块号来完成。或者,可以基于交易日期或时间来识别一个或多个区块。如上所述,比特币区块链上的区块具有定义的顺序,并且每个区块包括前一区块的散列。

一旦识别了一个或多个区块,就在区块链上扫描(步骤200.20)与实体的第一结构相关联的多个交易记录,以与步骤100.30中识别出的子密钥进行匹配。

在进一步的步骤200.30中,运行在步骤100.40中确定的规则以从每个匹配的区块链的交易记录中提取交易信息。因此,将确定需要提取什么信息,如何从提取的信息中导出某些信息以及在何处/如何将信息发布到总账本。

例如,提取来自多个交易记录的以下信息中的一个或多个:

交易输入值;

交易输出值;

公钥;

元数据;

用于基于指示交易的信息导出交易输入值或输出值的规则;

交易的时间戳;以及

p2p分布式账本的区块的块号。

一旦扫描并处理了一个区块内的交易记录,将扫描区块链中的下一区块以寻找与第一实体相关联的交易记录。

此后,使用来自步骤200.30的提取信息来生成财务账户记录(步骤200.40)。

交易记录

在下文中,将更详细地考虑存储在比特币区块链上的交易记录。

比特币区块链上的每个交易记录包括与第一结构相关联的至少一个第一结构公钥。这说明了实体的第一结构涉及存储在比特币区块链上的交易。

此外,比特币区块链上的每个交易(tx)至少包括指示第一实体与另一实体之间的交易的信息。应当注意,任何类型的实体均可以在第一实体和另一实体之间交换并存储在交易中。

交易的示例可以包括诸如比特币交易的加密货币交换、法定货币交易、代币(代表任何类型的可转让合约或资产)、合约、以及任何类型的商品和服务。

代币(tokens)

代币可以代表资产,或者在持有人兑换法定货币(虚拟纸币)时赋予指定权利的合约,以表示财产的所有权(例如,所有权契约),或者授予对事件的访问权(门票),在此仅举几例。商品和服务可以包括新的或二手产品,劳动力(例如,按小时收费),完整的工作(例如,修剪草坪),仅举几例。

代币是由合约代表/代表合约的可交换实体。合约可以采取几种形式之一。例如,合约可赋予持有人权利或表示财产所有权。可以通过合约规定代币的价值,并通过“挂钩率(peggingrate)”将其与基础比特币(btc)金额相关联。代币可通过使用诸如比特币协议之类的加密货币协议的新型交易来交换。交易中的比特币价值作为代表数字形式的权利合约的代币。合约本身可以存储在交易中,或者可以保存在公共可访问的位置,或者可以由合约的各方私下持有,这取决于具体的实施例。如果合约未存储在交易中,则交易可以存储指向合约的唯一指针(pointer)。

代币可以是可分割的。可分割的代币是其中交易输出上的值可以细分为较小的量,这些较小的量可以在多个新代币中分配。可分割代币的示例包括用于法定货币的代币或用于赛马中的份额的代币。可分割合约可以定义为指定非零挂钩率(one-zeropeggingrate)的合约。换句话说,代币值与基础比特币值相关联。或者,代币可以是不可分割的。不可分割的代币是根据固定值指定持有者权利的合约,例如,赎回房屋或1000澳元(au$)的合约。因此,不可分割的代币与基础比特币的价值无关。由于不可分割,它们只能作为一个整体进行转移。

代币可以由代币发行者数字签名以使其有效。例如,发行者可以是诸如所有权契约登记处之类的权威机构。发行者可以向用户发出代币以换取支付。然后,该代币可以赋予用户行使与代币相关联的合约的权利,无论合约是否代表兑换法定货币或待履行的服务或财产转让(即所有权转让)的权利。

上述代币的示例包括以下内容:

·法定货币代币,与合约发行者的交易输出的比特币值挂钩。例如,“此代币(比特币交易)的消费者有权以每1000聪(satoshis)1份(10美分(cents))的兑换率将此代币的任何部分兑换为加元(cad)”。

·一个赛马由财团(syndicate)的几个成员所拥有。

·任何以所有权为契约的项目,例如房屋或其他财产,均可以这种方式处理。

·代表音乐会门票的电子合约。这本质上是不可分割的。

·不记名债券(不可分割)。

·附在商品/服务上的唯一标识符(例如条形码或电子标签rfid)。如果使用,该标识符仍然优选地由授权实体的签名验证;如果没有签名,它将属于不太安全的“商品/服务”类别(如下所述)。

·签订服务权的合约。需要注意的是,这与实际服务本身不同,而只是为其执行服务的权利。这项权利可以交易。例如,michael’smowing的一张优惠券可以兑换为在悉尼大都会区内进行长达3小时的割草。此优惠券(合约)的持有人可以将其兑换为实际服务。

代币必须指定每一份的值,例如,1份=10分币cad,1份=1卢比,或1份=项目或财产(赛马、房屋等)的所有权的1%。

发布文件

现在参考图6,图6示出了创建一个或多个发布文件的方法300的方法步骤的流程图。

方法300包括将步骤200.40中生成的账户记录写入到一个或多个发布文件的步骤300.10。这可以包括合并指定信息以用于将账目发布到总账本的目的。例如,生成的账户记录可以按日期合并,或者每个账户记录可以表示单个文件。

一个或多个发布文件可以具有任何合适的格式,例如但不限于json、xml或xbrl。格式可以由总账本预定义。

方法300还可以包括对一个或多个发布文件进行散列(步骤300.20)。例如,加密散列算法可以包括sha-256以创建256位的发布文件散列。

方法300还可以包括对发布文件的散列进行签名的步骤300.30。例如,发布文件的散列可以用私钥签名,该私钥是具有私钥和相关公钥的非对称密码对的一部分。以这种方式,可以使用关联的公钥来验证发布文件的签名散列。

在对一个或多个发布文件进行散列的步骤300.20之后,将散列存储在区块链上以用作永久且不可更改的证据(步骤300.40)。例如,发布文件的散列可以以交易记录的元数据的形式存储。如上面参考p2sh所述的,发布文件可以以脚本内的“假”公钥的形式存储。

在具体示例中,代理应用程序可用于在区块链上记录发布文件的散列值和块号范围作为合约交易。

发布到总账本

在下文中,将描述方法400的方法步骤,其将一个或多个发布文件发布到第一实体的总账本。

如上所述,总账本是一账户集,其汇总了在实体内发生的所有交易。将一个或多个发布文件发布到总账本的方法400可以包括以安全的方式访问一个或多个发布文件并验证一个或多个发布文件来自认可的源。在这方面,方法400可以包括获取与在步骤300.30中使用的私有签名密钥相关联的公钥以验证签名。

一旦成功验证了一个或多个发布文件,就将该一个或多个发布文件应用于总账本。

专用的账户系统

在一个示例中,生成了财务账户记录,使得账户记录可以被反馈到实体的专用账户系统。例如,实体的账户系统可以用于执行该实体的专用账户软件。

应当理解,比特币交易可能仅形成实体交易头寸(tradingposition)的一部分。在这种情况下,利用比特币区块链上的交易记录生成的财务账户记录可以合并到现有的账户模型中。

子密钥生成方法

根据本发明,需要从原始(主)密钥生成子密钥。现在提供用于实现此目的的方法,用于说明可以执行此操作的一种方式。以下提供了可以根据本发明使用或适用于本发明的技术的说明性用途。参考图17至图13提供以下描述。

图7示出了系统1,其包括通过通信网络5与第二节点7通信的第一节点3。第一节点3具有相关联的第一处理设备23,第二节点5具有相关联的第二处理设备27。第一节点3和第二节点7可以包括电子设备,例如计算机、电话、平板计算机、移动通信设备、计算机服务器等。在一个示例中,第一节点3可以是客户端(用户)设备,第二节点7可以是服务器。

第一节点3与具有第一节点主私钥(v1c)和第一节点主公钥(p1c)的第一非对称密码对相关联。第二节点(7)与具有第二节点主私钥(v1s)和第二节点主公钥(p1s)的第二非对称密码对相关联。换句话说,第一节点和第二节点各自拥有相应的公钥-私钥对。

可以在注册过程期间生成用于相应的第一和第二节点3,7的第一和第二非对称密码对,例如钱包的注册。每个节点的公共密钥可以公开共享,例如通过通信网络5共享。

为了在第一节点3和第二节点7处确定公共秘钥(cs),节点3,7执行各个方法300,400的步骤,无需通过通信网络5传送私钥。

由第一节点3执行的方法300包括步骤330,基于至少第一节点主私钥(v1c)和生成器值(gv)确定第一节点第二私钥(v2c)。生成器值可以基于在第一和第二节点之间共享的消息(m),其可以包括通过通信网络5共享消息,如下面进一步详细描述的。方法300还包括步骤370,至少基于第二节点主公钥(p1s)和生成器值(gv)确定第二节点第二公钥(p2s)。方法300包括步骤380,基于第一节点第二私钥(v2c)和第二节点第二公钥(p2s)确定公共秘钥(cs)。

重要的是,同样的公共秘钥(cs)也可以通过方法400在第二节点7处确定。方法400包括步骤430,基于第一节点主公钥(p1c)和生成器值(gv)确定第一节点第二公钥(p2c)。方法400还包括步骤470,基于第二节点主私钥(v1s)和生成器值(gv)确定第二节点第二私钥(v2s)。方法400包括步骤480,基于第二节点第二私钥(v2s)和第一节点第二公钥(p2c)确定公共秘钥(cs)。

通信网络5可以包括局域网、广域网、蜂窝网络、无线通信网络、互联网等。在这些网络中,数据可以通过通信传播介质如电线、光纤、无限传输等,数据可能容易被窃听,例如被窃听者11窃听。方法300,400可以允许第一节点3和第二节点7都不通过通信网络5发送公共秘钥的情况下独立地确定公共秘密。

因此,一个优点是可以由每个节点安全且独立地确定公共秘钥(cs),而不必通过可能不安全的通信网络5发送私钥。反过来,公共秘密可以用作秘密密钥(或作为秘密密钥的基础)。

方法300,400可以包括另外的步骤。参见图8。方法300可以包括:在第一节点3处基于消息(m)和第一节点第二私钥(v2c)生成签名消息(sm1)。方法300还包括步骤360,通过通信网络将第一签名消息(sm1)发送到第二节点7。接着,在步骤440中,第二节点7可以执行接收第一签名消息(sm1)。方法400还包括以下步骤:步骤450,用第一节点第二公钥(p2c)验证第一签名消息(sm1),以及步骤460,基于验证第一签名消息(sm1)的结果来验证第一节点3。有利地,这允许第二节点7认证所声称的第一节点(其中生成第一签名消息)是第一节点3。这基于以下假设:仅第一节点3可以访问第一节点主私有密钥(v1c),因此只有第一节点3可以确定用于生成第一签名消息(sm1)的第一节点第二私钥(v2c)。应当理解,类似地,可以在第二节点7处生成第二签名消息(sm2)并将其发送到第一节点3,使得第一节点3可以认证第二节点7,例如在点对点(peer-to-peer)情景中。

可以以各种方式实现在第一和第二节点之间共享消息(m)。在一个示例中,可以在第一节点3处生成消息,然后通过通信网络5向第二节点7发送该消息。或者,可以在第二节点7处生成消息,然后通过通信网络5将消息发送到第二节点7。在一些示例中,消息(m)可以是公开的,因此可以通过不安全的网络5发送。一个或多个消息(m)可以存储在数据存储器13,17,19中。本领域技术人员将认识到可以以各种方式实现消息的共享。

有利地,可以保存允许重新创建公共秘密(cs)的记录,而记录本身不必私下存储或安全地传输。

注册方法100,200

将参考图9描述注册方法100,200的示例,其中方法100由第一节点3执行,方法200由第二节点7执行。这包括为相应的第一和第二节点3,7建立第一和第二节点非对称密码对。

非对称密码对包括关联的私钥和公钥,例如在公钥加密中使用的密钥。在该示例中,使用椭圆曲线密码学(ecc)和椭圆曲线运算的属性生成非对称密码对。

在方法100,200中,这包括步骤110,210,第一和第二节点对于公共ecc系统和使用基点(g)上达成一致。(注意:基点可以称为公共发生器,但术语“基点”用于避免与生成器值gv混淆)。在一个示例中,公共ecc系统可以基于secp256k1,secp256k1是比特币使用的ecc系统。可以选择、随机生成或分配基点(g)。

至于第一节点3,方法100包括步骤110,选定公共ecc系统和基点(g)。这可以包括从第二节点7或第三节点9接收公共ecc系统和基点。或者,用户接口15可以与第一节点3相关联,由此用户可以选择性地提供公共ecc系统和/或基点(g)。在又一可选方案中,公共ecc系统和/或基点(g)中的一个或两个可以由第一节点3随机选择。第一节点3可以通过通信网络5向第二节点7发送使用具有基点(g)的公共ecc系统的指示通知。而在步骤210中,第二节点7可以通过发送确认使用公共ecc系统和基点(g)的指示通知来选定。

方法100还包括步骤120,第一节点3生成第一非对称密码对,其包括第一节点主私钥(v1c)和第一节点主公钥(p1c)。这包括至少部分地基于在公共ecc系统中指定的可允许范围内的随机整数来生成第一节点主私钥(v1c)。这还包括根据如下公式公式基于第一节点主私钥(p1c)和基点(g)的椭圆曲线点乘法来确定第一节点主公钥(p1c):

p1c=v1c×g(公式1)

因此,第一非对称密码对包括:

v1c:由第一节点保密的第一节点主私钥。

p1c:公开已知的第一节点主公钥。

第一节点3可以将第一节点主私钥(v1c)和第一节点主公钥(p1c)存储在与第一节点3相关联的第一数据存储13中。为了安全起见,第一节点主私钥(v1c)可以存储在第一数据存储器13的安全部分中,以确保密钥保持私密。

方法100还包括步骤130,通过通信网络5将第一节点主公钥(p1c)发送到第二节点7,如图9所示。第二节点7可以在步骤220中接收第一节点主公钥(p1c)时,在步骤230中将第一节点主公钥(p1c)存储在与第二节点7相关联的第二数据存储器17中。

类似于第一节点3,第二节点7的方法200包括步骤240,生成第二非对称密码对,其包括第二节点主私钥(v1s)和第二节点主公钥(p1s)。第二节点主私钥(v1s)也是允许范围内的随机整数。而第二节点主公钥(p1s)由以下公式确定:

p1s=v1s×g(公式2)

因此,第二非对称密码对包括:

v1s:由第二节点保密的第二节点主私钥。

p1s:公开已知的第二节点主公钥。

第二节点7可以将第二非对称密码对存储在第二数据存储器17中。方法200还包括步骤250,将第二节点主公钥(p1s)发送到第一节点3。而在步骤140和150中,第一节点3可以接收并存储第二节点主公钥(p1s)。

应当理解,在一些替代方案中,可以接收相应的公共主密钥并将其存储在与第三节点9(诸如可信第三方)相关联的第三数据存储19。这可以包括充当公共目录的第三方,例如证书颁发机构。因此,在一些示例中,第一节点主公钥(p1c)可以仅在确定需要公共秘钥(cs)时由第二节点7请求和接收(反之亦然)。

注册步骤可能仅需要作为初始设置执行一次。

第一节点3发起会话和确定公共秘密

现在将参考图10描述确定公共秘钥(cs)的示例。公共秘密(cs)可用于第一节点3和第二节点7之间的特定会话、时间、交易或其他目的,而使用相同的公共秘钥(cs)可能是不希望的或不安全的。因此,可以在不同的会话、时间、交易等之间改变公共秘密(cs)。

提供以下内容用于说明上面已经描述的安全传输技术。

生成消息(m)310

在该示例中,由第一节点3执行的方法300包括步骤310,生成消息(m)。消息(m)可以是随机的、伪随机的或用户定义的。在一个示例中,消息(m)基于unix时间和随机数(和任意值)。例如,消息(m)可以为:

消息(m)=unixtime+nonce(公式3)

在一些示例中,消息(m)是任意的。然而,应当理解,消息(m)可以具有在某些应用中可能有用的选择值(例如账号、unix时间等)。

方法300包括步骤315,通过通信网络3发送消息(m)到第二节点7。如果消息(m)不包括关于私钥的信息,可以通过不安全的网络发送消息(m)。

确定生成器值(gv)320

方法300还包括步骤320,基于消息(m)确定生成器值(gv)的步骤。在该示例中,这包括确定消息的加密散列。加密散列算法的示例包括sha-256以创建256位的生成器值(gv)。即:

gv=sha-256(m)(公式4)

应当理解,可以使用其他散列算法。这可以包括安全散列算法(securehashalgorithm,简称“sha”)系列中的其他算法。一些具体示例包括sha-3子集中的实例,包括sha3-224、sha3-256、sha3-384、sha3-512、shake128、shake256。其他散列算法可以包括race原始完整性校验消息摘要(raceintegrityprimitivesevaluationmessagedigest,简称“ripemd”)系列中的那些算法。具体示例可以包括ripemd-160。其他散列函数可以包括基于zemor-tillich散列函数和基于背包(knapsack)的散列函数的系列。

确定第一节点第二私钥330

然后,方法300包括基于第二节点主私钥(v1c)和生成器值(gv)确定第一节点第二私钥(v2c)的步骤330。这可以基于第一节点主私钥(v1c)和生成器值(gv)的标量加法,根据以下公式:

v2c=v1c+gv(公式5)

因此,第一节点第二私钥(v2c)不是随机值,而是确定性地从第一节点主私钥导出。加密对中的对应公钥,即第一节点第二公钥(p2c),具有以下关系:

p2c=v2c×g(公式6)

将来自公式5的v2c代入公式6,得到:

p2c=(v1c+gv)×g(公式7)其中运算符“+”指的是椭圆曲线点加法。注意,椭圆曲线密码学代数满足分配律,公式7可以表示为:

p2c=v1c×g+gv×g(公式8)

最后,公式1可以代入公式7,得到:

p2c=p1c+gv×g(公式9.1)

p2c=p1c+sha-256(m)×g(公式9.2)

因此,在已知第一节点主公钥(p1c)和消息(m)的情况下,可以导出对应的第一节点第二公钥(p2c)。第二节点7可以具有这样的信息(knowledge)以独立地确定第一节点第二公钥(p2c),如将在下面关于方法400进一步详细讨论的。

基于消息和第一节点第二私钥生成第一签名消息(sm1)350

方法300还包括步骤350基于消息(m)和所确定的第一节点第二私钥(v2c)生成第一签名消息(sm1)。生成签名消息包括应用数字签名算法对消息(m)进行数字签名。在一个示例中,这包括将第一节点第二私钥(v2c)应用于椭圆曲线数字签名算法(ellipticcurvedigitalsignaturealgorithm,简称“ecdsa”)中的消息以获得第一签名消息(sm1)。ecdsa的实例包括基于具有secp256k1、secp256r1、secp384r1、se3cp521r1的那些ecc系统的椭圆曲线数字签名算法。

可以利用第二节点7处的对应的第一节点第二公钥(p2c)来验证第一签名消息(sm1)。第二节点7可以使用第一签名消息(sm1)的验证来认证第一节点,这将在下面的方法400中讨论。

确定第二节点第二公钥370’

然后,在步骤370中,第一节点3可以确定第二节点第二公钥(p2s)。如上所述,第二节点第二公钥(p2s)可以至少基于第二节点主公钥(p1s)和生成器值(gv)。在该示例中,由于采用具有基点(g)的椭圆曲线点乘法将公钥确定为私钥(步骤370’),所以可以以类似于公式6的方式表达第二节点第二公钥(p2s),如:

p2s=v2s×g(公式10.1)

p2s=p1s+gv×g(公式10.2)

公式10.2的数学证明与上述用于导出第一节点第二公钥(p2c)的公式9.1的数学证明相同。应当理解,在步骤370中,第一节点3可以独立于第二节点7确定第二节点第二公钥。

确定第一节点3处的公共秘密380

然后,在步骤380中,第一节点3可以基于所确定的第一节点第二私钥(v2c)和所确定的第二节点第二公钥(p2s)来确定公共秘钥(cs)。公共秘钥(cs)可以由第一节点3通过以下公式确定:

s=v2c×p2s(公式11)

在第二节点7处执行方法400

现在将描述在第二节点7处执行的对应方法400。应当理解,这些步骤中的部分步骤类似于上述由第一节点3执行的步骤。

方法400包括步骤410,通过通信网络5从第一节点3接收消息(m)。这可以包括在步骤315由第一节点3发送的消息(m)。然后在步骤420中,第二节点7基于消息(m)确定生成器值(gv)。由第二节点7确定生成器值(gv)的步骤420类似于由上述第一节点执行的步骤320。在该示例中,第二节点7独立于第一节点3执行该确定步骤420。

下一步骤包括步骤430,基于第一节点主公钥(p1c)和生成器值(gv)确定第一节点第二公钥(p2c)。在该示例中,由于采用具有基点(g)的椭圆曲线点乘法将公钥确定为私钥(步骤430’),所以可以以类似于公式9的方式表达第一节点第二公钥(p2c),如:

p2c=v2c×g(公式12.1)

p2c=p1c+gv×g(公式12.2)

公式12.1和12.2的数学证明与上面针对公式10.1和10.2所讨论的内容相同。

第二节点7认证第一节点3

方法400可以包括由第二节点7执行以验证所声称的第一节点3是第一节点3的步骤。如前所述,这包括从第一节点3接收第一签名消息(sm1)的步骤440。然后,第二节点7可以利用步骤430确定的第一节点第二公钥(p2c)来验证(步骤450)第一签名消息(sm1)上的签名。

验证数字签名可以根据如上所述的椭圆曲线数字签名算法(ecdsa)来完成。重要的是,用第一节点第二私钥(v2c)签名的第一签名消息(sm1)应仅用相应的第一节点第二公钥(p2c)来正确验证,因为v2c和p2c形成密码对。由于这些密钥在第一节点3注册时生成的第一节点主私钥(v1c)和第一节点主公钥(p1c)是确定性的,因此验证了第一签名消息(sm1)可以用作认证的基础,以认证发送第一签名消息(sm1)的所谓第一节点是与在注册期间相同的第一节点3。因此,第二节点7还可以基于验证(450)第一签名消息的结果来执行验证(460)第一节点3的步骤,参见图11。

第二节点7确定公共秘钥

方法400还可以包括:第二节点7基于第二节点主私钥(v1s)和生成器值(gv)确定(步骤470)第二节点第二私钥(v2s)。类似于第一节点3执行的步骤330,第二节点第二私钥(v2s)可以基于第二节点主私钥(v1s)和生成器值(gv)的标量加法,根据以下公式:

v2s=v1s+gv(公式13.1)

v2s=v1s+sha-256(m)(公式13.2)

然后,第二节点7可以独立于第一节点3,根据以下公式,基于第二节点第二私钥(v2s)和第一节点第二公钥(p2c)来确定(步骤480)公共秘钥(cs):

s=v2s×p2c(公式14)

由第一节点3和第二节点7确定的公共秘钥(cs)的证明

由第一节点3确定的公共秘钥(cs)与在第二节点7处确定的公共秘钥(cs)相同。现在描述公式11和公式14提供相同的公共秘钥(cs)的数学证明。

转到由第一节点3确定的公共秘钥(cs),公式10.1可以代入公式11:

s=v2c×p2s(公式11)

s=v2c×(v2s×g)

s=(v2c×v2s)×g(公式15)

转到由第二节点7确定的公共秘钥(cs),公式12.1可以代入公式14,如下:

s=v2s×p2c(公式14)

s=v2s×(v2c×g)

s=(v2s×v2c)×g(公式16)

由于ecc代数是可交换的,因此公式15和公式16是等价的,因为:

s=(v2c×v2s)×g=(v2s×v2c)×g(公式17)

公共秘密(cs)和秘密密钥

公共秘密(cs)现在可以用作秘密密钥,或者用作第一节点3和第二节点7之间的安全通信的对称密钥算法中的秘密密钥的基础。

公共秘密(cs)可以是椭圆曲线点(xs,ys)的形式。这可以使用由节点3,7所达成一致的标准公知操作转换为标准密钥格式。例如,xs值可以是256位的整数,其可以用作aes256加密的密钥。它也可以使用ripemd160转换为160位的整数,用于任何需要这个长度密钥的应用程序。

可以根据需要确定公共秘密(cs)。重要的是,第一节点3不需要存储公共秘密(cs),因为公共秘密可以基于消息(m)重新确定。在一些示例中,所使用的消息(m)可以存储在数据存储13,17,19(或其他数据存储)中,并不要求主私钥所需的相同安全级别。在一些示例中,消息(m)可以是公开可用的。

然而,取决于一些应用,公共秘密(cs)可以存储在与第一节点相关联的第一数据存储(x)中,条件是公共秘密(cs)像第一节点主私有密钥(v1c)一样安全地保存。

有利地,该技术可用于,基于单个主密钥密码对,来确定可对应于多个安全秘密密钥的多个公共秘密。

生成器值(秘钥)的层次

例如,可以确定一系列继承的生成器值(gv),其中可以基于先前的生成器值(gv)确定每个继承的gv。例如,并不是重复步骤310至370和410至470以生成继承的单用途密钥,而是通过节点之间的先前协议,双方可以重复地重新散列(rehash)先前使用的生成器值(gv)以建立生成器值的层级。实际上,基于消息(m)的散列的生成器值可以是下一代生成器值(gv)的下一代消息(m’)。这样做允许计算连续几代共享密钥而无需进一步的协议建立传输,特别是为每一代公共秘钥传输多个消息。下一代公共秘钥(cs’)可以如下计算。

首先,第一节点3和第二节点7都独立地确定下一代生成器值(gv)。这与步骤320和420类似,但采用以下公式进行调整:

m’=sha-256(m)(公式18)

gv’=sha-256(m’)(公式19.1)

gv’=sha-256(sha-256(m))(公式19.2)

然后,第一节点3可以确定下一代第二节点第二公钥(p2s’)和第一节点第二私钥(v2c’),类似于上述步骤370和330,但是使用以下公式进行调整:

p2s’=p1s+gv’×g(公式20.1)

v2c’=v1c+gv’(公式20.2)

然后,第二节点7可以确定下一代第一节点第二公钥(p2c’)和第二节点第二私钥(v2s’),类似于上述步骤430和470,但是采用以下公式进行调整:

p2c’=p1c+gv’×g(公式21.1)

v2s’=v1s+gv’(公式21.2)

然后,第一节点3和第二节点7可以各自确定下一代公共秘钥(cs’)。特别地,第一节点3使用以下公式确定下一代公共秘钥(cs’):

cs’=v2c’×p2s’(公式22)

第二节点7使用以下公式确定下一代公共秘钥(cs’):

cs’=v2s’×p2c’(公式23)

可以以相同的方式计算更多代(cs”,cs”’等)以创建链层次结构。该技术要求第一节点3和第二节点7都跟踪原始消息(m)或最初计算的生成器值(gv)以及其所涉及的节点。由于这是公开的信息,因此不存在关于保留此信息的安全问题。因此,该信息可以保存在“散列表”(将散列值链接到公共密钥)上并且通过网络5自由分发(例如使用torrent)。此外,如果层次结构中的任何单个公共秘密(cs)遭到破坏,只要私钥v1c,v1s保持安全,这不会影响层次结构中任何其他公共秘密的安全性。

密钥的树结构

除了如上所述的链(线性)层级之外,还可以创建树结构形式的层级。利用树结构,可以确定用于不同目的的各种密钥,例如认证密钥、加密密钥、签名密钥、支付密钥等,由此这些密钥都链接到单个被安全维护的主密钥。图12中最佳地示出了具有各种不同密钥的树结构901。其中每个都可用于与另一方创建共享密钥。树的分枝可以以几种方式完成,其中三种如下所述。

主密钥产生(spawning)

在链层次结构中,通过将乘法重新散列的消息添加到原始主密钥来创建每个新的“链接”(公钥/私钥对)。例如,(为清楚起见,仅显示第一节点3的私钥):

v2c=v1c+sha-256(m)(公式24)

v2c’=v1c+sha-256(sha-256(m))(公式25)

v2c”=v1c+sha-256(sha-256(sha-256(m)))(公式26)

......等等

为了创建分支,可以将任何密钥用作子主密钥。例如,像常规主密钥一样,可以通过向v2c’添加散列来将其用作子主密钥(v3c):

v3c=v2c’+sha-256(m)(公式27)

子主密钥(v3c)本身可以具有下一代密钥(v3c’),例如:

v3c’=v2c’+sha-256(sha-256(m))(公式28)

如此,使用如图13所示的主密钥产生方法提供了树结构903。

(ii)逻辑关联

在该方法中,树中的所有节点(公钥/私钥对)被生成为链(或以任何其他方式),并且树中的节点之间的逻辑关系由每个节点的表维护,在该表中,树中的节点通过指针(pointer)简单地与树中的父节点相关联。因此,指针可用于确定相关的公钥/私钥对,以确定会话的公共秘密(cs)。

(iii)消息多重性

可以通过在链或树中的任何点处引入新消息来生成新的私有/公钥对。消息本身可以是任意的,或者可以带有一些含义或功能(例如,它可能与“真实的”银行账号等有关)。安全地保留这种用于形成新的私有/公钥对的新消息是比较理想的。

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