区块链实现的方法和系统与流程

文档序号:17117444发布日期:2019-03-15 23:28阅读:170来源:国知局
区块链实现的方法和系统与流程
本发明总体上涉及分布式分类账技术(包括区块链相关技术),尤其涉及区块链在实现、控制和/或自动化任务或处理中的用途。它可以涉及使用区块链或相关技术来记录或表示一部分逻辑的执行。可将该部分逻辑用于实现一个逻辑门或多个逻辑门(例如and、xor、not、or等)的功能性。
背景技术
:重要的是注意,为了引用的方便和容易起见,在本文献中我们使用术语“区块链”,因为它是目前在这种背景下最广为人知的术语。但是,在本文中(包括在权利要求中)使用该术语来包括所有形式的电子的、基于计算机的分布式分类账,包括但不限于区块链和交易链技术、许可和未许可的分类账、共享分类帐及其变化。区块链是一种电子分类账,它实现为由区块组成的基于共识的、基于计算机的去中心化分布式系统,区块进而由交易组成。每个交易包括至少一个输入和至少一个输出。每个区块包含前一区块的散列,使得多个区块变为链接在一起,以创建自区块链创始以来已经写入区块链的全部交易的永久的、不可更改的记录。交易包含嵌入其输入和输出中的称为脚本的小程序,脚本指定可以如何以及由谁来访问交易的输出。在比特币平台上,使用基于堆栈的脚本语言来编写这些脚本。为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)执行工作以确保每个交易是有效的,其中,从网络中拒绝无效交易。通过执行其锁定和解锁脚本,安装在节点上的软件客户端对未花费交易(utxo)执行该验证工作。如果锁定和解锁脚本的执行评估为true,那么交易是有效的并且被写入区块链。虽然已经提出并开发了其他的区块链实施方式,但是区块链技术最广为人知的应用是比特币分类账。虽然可以为了方便和说明的目的而在本文中引用比特币,但是应当注意,本发明不限于与比特币一起使用区块链,并且替代性区块链实施方式也落入本发明的范围。区块链技术因加密货币实施方式的用途而广为人知。但是,在近年来,数字企业家已经开始探索比特币所基于的加密安全系统以及可存储在区块链上的数据这两者的使用,以实现新的系统。如果可将区块链用于不限于加密货币领域的任务和处理(例如自动控制处理),那么将非常有利。这样的解决方案将能够利用区块链的好处(例如,事件的永久性防篡改记录、分布式处理等),同时在其应用中更加多功能化。技术实现要素:现在已经设计出这种改进的解决方案。因此,根据本发明,提供一种如所附权利要求中限定的系统和方法。因此,根据本发明,可提供一种计算机实现的方法。可将其描述为控制方法。它可以控制技术处理的操作或一个或多个设备的操作。附加性或替代性地,它可以控制区块链脚本的执行。它可以控制尝试解锁与交易输出(utxo)相关联的锁定脚本所产生的输出。它可以控制区块链交易(utxo)中的输出是否被解锁。它可以控制是否经由区块链将一部分加密货币从一方转移到另一方。本发明可以提供一种计算机实现的控制方法,包括以下步骤:提供区块链交易,所述区块链交易包括用于输出的赎回脚本,其中,所述赎回脚本包括:i)多个输入参数,其中,每个输入参数唯一地与提供给被布置为花费输出的另一交易的解锁脚本的至少一个数据源的潜在状态相关联;并且其中,所述输入参数之一是目标输出参数;ii)逻辑,用于基于以下内容提供结果:-对解锁脚本提供的输入参数执行计算,从而提供中间结果;和-通过所述解锁脚本将目标输出参数与所述中间结果进行比较;和尝试多于一次地花费所述交易输出,每次尝试提供不同的目标输出参数。因此,本发明的实施例允许区块链交易(tx)从脚本返回非真值。这可以通过使用参数来确认或确定脚本的输出匹配由参数提供、由参数表示或者与参数相关联的目标值来实现。附加性或替代性地,该方法可包括步骤:提供区块链交易(tx),所述区块链交易包括用于输出的赎回脚本,其中,所述赎回脚本:指定多个公钥。这些公钥可以是加密密钥。它们可以形成私钥/公钥对的一部分。多个公钥(或“列表”)中的每个密钥可以与对应的私钥相关联。每个公钥可以与至少一个数据源的潜在状态唯一地相关联。因此,赎回脚本可包括公钥的列表,其中,仅用于这些公钥的对应的私钥可以用于花费交易输出(txo)。目标输出参数可以表示计算代理花费(或不花费)交易输出的期望。该逻辑可以用于基于或者受影响于以下内容提供结果:目标输出参数;和/或确定通过解锁脚本提供了哪个目标输出参数。可以通过解锁脚本的元数据来提供目标输出参数。因此,本发明的实施例可以允许区块链交易(tx)从脚本返回非真值。该方法可以包括步骤:尝试多于一次地花费交易输出。每次尝试可包括步骤:向区块链网络提交(不同的)交易。可以使用向赎回脚本提供不同代理子密钥的交易来执行每次花费尝试。每次尝试可以生成尝试向不同的(区块链)地址花费输出的区块链交易。实际上,这种尝试是双倍(或更多)花费。双倍花费传统上被视为负面行为,因为它试图将相同数量的加密数字货币转移给不同的接收者。但是在这种情况下,有利地使用它。目标输出参数可表示true或false。计算代理可用于监视数据源的状态。代理可以与可以从另一加密密钥导出或生成的子密钥相关联。该另一密钥可以与计算代理相关联。可以基本上如下面标题为“从共享秘密生成密钥”的部分或现有技术中已知的任何其他方法中所描述的方式生成子密钥。可将逻辑用于执行相等性检查或比较。检查或比较可以将中间结果与目标输出参数进行比较。可通过执行赎回脚本内的逻辑来提供中间结果。这可以是用于模拟或提供逻辑门的功能性的一部分逻辑。可将中间结果放置在存储器中的堆栈上/从堆栈中检索。该方法可包括步骤:生成交易。该方法可包括步骤:将交易提交给区块链。交易和/或另一(花费)交易可由计算代理生成。它可以基于从传感器或其他信号/数据源接收的输入自主地生成(无需人为干预)。附加地或替代性地,赎回脚本可包括一部分逻辑,用于基于或受影响于将多个公钥中的哪一个用于签署解锁脚本来提供结果。因此,可通过使用哪些密钥来签署解锁脚本来确定在赎回脚本中提供的逻辑的执行。附加性或替代性地,可以要求最少数量的所述私钥来签署另一区块链交易的解锁脚本,以花费输出。逻辑提供的结果或结局可以取决于或受影响于确定将哪个(哪些)(特定)私钥用于签署解锁脚本。该方法可包括步骤:将用于签署解锁脚本的私钥与赎回脚本内提供的相关联公钥进行匹配。有利地,这使得本发明能够提供比现有技术更大的控制程度,现有技术仅需要使用一定数量的密钥,而不是使用哪些特定密钥。通过确定使用来自多个密钥中的哪些特定密钥,本发明提供一种替代性的增强安全技术,当控制锁定/解锁交易输出utxo时,该技术有助于更高程度的粒度或复杂性。因此,可以说本发明提供一种用于控制一部分加密货币的转移的改进的密码技术。可将赎回脚本中的逻辑用于实现逻辑门的功能性。逻辑门可以是not、and、or、nor、xor、imply、nand、nonimply和/或xnor门。因此,可将本发明描述为提供一种能够经由区块链交易模拟或实现逻辑门的功能性的技术。可通过计算代理来确定至少一个数据源的状态。可将代理用于监视状况。这个状况例如可以是计算网络上的状况或设备相关的状况、或环境因素的状况、或任何其他类型的可量化状况。计算代理可以与控制计算代理进行通信。本文可将其称为“控制器”。可通过控制器来生成赎回脚本。可将一个或多个代理用于控制处理或装置。一个、一些或全部计算代理可包括可称为代理基本密钥的加密密钥。可从该基本密钥导出代理子密钥。可通过代理(多个)来生成加密密钥。可以从控制器导出和/或接收它。可以从基本或“主”密钥生成或导出多个密钥中的一个或多个。可以使用确定性密钥生成技术来执行密钥生成。该方法可包括步骤:为代理所监视的状况的每个可能状态生成或导出其他的或单独的密钥。可以使用下面在标题为“使用共享秘密创建密钥”的部分中描述的技术从基本密钥导出其他的密钥。逻辑所提供的结果可以是布尔结果或某些其他类型的结果。该逻辑可以根据有限范围的结果来提供结果。至少可以存在两个数据源。对于每个数据源或者与每个数据源相关联地,可以存在两个潜在状态。每个潜在状态可以与公钥相关联或者由公钥表示。因此,赎回脚本中提供的公钥的列表可用于定义、表示或描述数据源(多个)可采用或输入的所有可能状态。该方法可包括以下步骤:对于至少一个数据源中的每个数据源:将多个公钥中的公钥与数据源的潜在状态相关联;使得所述数据源的所有可能状态由相应的公钥表示。换言之,可将每个数据源的每个可能状态与公钥相关联或反映在公钥上,使得公钥可以用作该状态的(唯一)标识符。因此,可以有意地选择密钥,从而在每个密钥与数据源的潜在状态之间形成映射。这样可以使得密钥能够充当数据源的潜在状态的表示。然后,分析或确定在解锁处理期间使用哪些私钥来签名可以使得能够确定数据源的状态。至少一个数据源可包括传感器。附加性或替代性地,数据源可包括能够生成和/或将输入信号发送到计算资源或代理的源。每个公钥可以表示指示至少一个数据源的潜在状态的布尔值。例如,接收还是没有接收信号,或者温度是否高于20摄氏度?本发明还提供对应的系统。可将该系统用于实现上述方法的任何实施例。本发明可提供一种计算机实现的系统,包括:至少一个基于计算机的资源,用于执行上述任何方法的步骤(多个);以及区块链或其他类型的电子分类账、或比特币分类账的变化。这可以是分布式分类帐。可将至少一个基于计算机的资源用于:向区块链网络提交交易(这可以是或可以不是比特币网络——它可以是任何类型的分布式账本);和/或生成交易;和/或以数字方式签署锁定脚本;和/或生成公共/私有加密密钥。可将该系统用于使得结果用于控制或影响处理或装置的执行或操作。可将基于计算机的资源称为“代理”。该系统可包括至少一个传感器或其他信号/输入生成组件,其被布置为/用于向至少一个基于计算机的资源提供输入。关于本发明的一个方面或实施例描述的任何特征也可用于实现一个或多个其他方面/实施例。可将关于该方法描述的任何特征应用于系统,反之亦然。附图说明参考本文所描述的实施例,本发明的这些和其他方面将变得清晰并得以阐明。下面仅通过示例并参考附图来描述本发明的实施例,其中:图1示出本发明的一个实施例的说明。图2示出本发明的说明性实施例,其中,多个独立计算代理执行外部环境的监视,以向逻辑门交易提供输入。图3示出本发明另一实施例的概况。图4示出根据本发明实施例布置的示例性区块链交易,并且其中,交易输出1实现nor门,其中,交易输出2将更改支付回到控制器。图5示出本发明另一实施例的概况。图6至10示出用于根据基本密钥生成加密密钥的技术。具体实施方式本发明提供一种使用区块链来实现功能的新颖且有利的解决方案。区块链用于提供功能执行的记录和/或其结果的结果。功能可以是子例程或过程(即,处理或逻辑的一部分),其应用于一组输入并返回一组输出。在一个可能的实施例中,功能可以“脱离区块”执行,也就是其性能不是区块链依赖性的。功能由基于计算机的资源执行。区块链(例如比特币)交易是(例如比特币)值的转移,其通常引用先前交易输出作为新交易输入,并将所有输入值专用于新输出。交易未加密,因此可以浏览和查看已经收集到区块中的每个交易。但是,能够构造作为功能而起作用的区块链交易是非常有利的,其中交易输出(多个)是有条件的或取决于所提供的信息。这将能够经由区块链实现复杂等级的行为。本发明的重要方面包括(但不限于)用于创建区块链交易的方法,区块链交易表示功能,其中,功能输入(多个)通过在交易的输出的赎回脚本内使用的公钥来表示,其中,实际值通过与一个或多个公钥相关联的签名来表示。将经由下面提供的使用情况示例来说明本发明,其中,可将区块链(例如比特币)交易用于表示逻辑门提供的功能性。然后,可将该功能性用于控制某些技术处理或装置。本发明在区块链上提供很多新颖特征,包括:·针对传感器或其他信号/输入生成器创建代理的能力,其中,所述代理直接从区块链受控制,无需其他网络访问以进行操作;·关于多个签名保护的交易确定在交易签署处理中涉及哪些公钥的能力;以及·在签署密钥中嵌入有限的、离散的净荷值范围的能力,所述签署密钥可用于确定赎回脚本内的行为(即代码如何执行)。此外,本发明的实施例可以利用上述元件来传递逻辑门(例如nor门),其中,来自a和b的输入值被嵌入用于签署的密钥中或由其表示。优点所提出的发明提供以下优点:·因设计而是固有安全的(比特币协议不需要可信方);·分布式,从而避免大的单点故障,不易受到攻击;·易于管理和维护的,比特币网络直接使用;·廉价的(比在特币协议下,通常预计仅少的交易费);·全局的,并且具有对互联网的访问的任何人可以随时使用;·透明性:一旦数据已经写入区块链,任何人就可以看到它;·不可改变的,一旦数据已经写入区块链,就没有人可以改变它;以及·隐私受保护,不涉及个人识别信息。为了使本发明起作用,它必须符合比特币协议和钱包的现有构造和行为。图1示出根据本发明的实施例如何构造标准比特币交易(tx)。(比特币仅用于说明,可以使用其他分类账和相关联的协议,它们也落入本发明的范围内)。代理配置本发明的一个实施例包括使用多个独立(计算)代理,这些代理用于执行外部环境的监视,以向该逻辑门交易提供输入,如图2所示。因此,将计算代理设计为监控某种状况。为此目的,可以从传感器接收输入。例如,代理可以监视诸如“温度是否低于零摄氏度?”这样的状况或任何其他类型的可测试状况。因此,可将代理用于监视其观察状况的状态。代理与控制或主代理(下面称为“控制器”)进行通信。将控制器用于用于通过区块链协议进行操作。在一个或多个实施例中,从属代理(例如,a和b)可包括从控制器导出的密钥。但是应当注意,对于代理a和代理b,可以具有自身生成的密钥而不是从控制器导出这些密钥。这样限制了控制器可以在密钥上使用的功能性。在一个或多个实施例中,受监视的每个状况具有通过它们自己的密钥设置的单独的监视代理。根据这个密钥,它们从其监视状况(即,对于每个可能的状态)导出单独的密钥用于输出。可以根据其基本密钥确定性地导出这些值,可以在监视点完成导出,或者代理可以预先导出这些值(例如,对于真/假传感器仅预先定义可能更有效)。可以使用下面在标题为“使用共享秘密创建密钥”的部分中描述的技术根据基本密钥导出其他的密钥。代理行为上述实施例允许代理具有非常严格定义的行为;在它们的基点,它们是检测单个状况并根据需要响应该状况的传感器。下表展示了这些代理的行为模式。步骤描述1启动代理,并根据启动参数导出新密钥2等待交易签署请求3收到交易签署请求后,从附连的传感器得到数据4使用来自附连的传感器的数据,导出新的签署密钥5签署交易请求6进入步骤2注意,步骤2是实现现有技术中已知的多签名交易的标准处理。在步骤3和4中可以看到创造性的步骤,其允许代理将传感器值嵌入从代理返回的签名中。数据值提取&交易评估然后,交易中的赎回脚本允许有效地事实上提取由自主代理嵌入的值。但是,这仅适用于预先知道可能值范围的情况;本文的示例是代理a和b提供“真”/“假”值,但是使用这种方法,更宽范围的值(例如1、2、3、4、5)也是可能的。关键是使用唯一密钥来表示每个可能的值或状态,以便赎回脚本可以基于使用哪个密钥来签署解锁脚本来确定值是基于什么。但是,因为必须将赎回脚本内提供的逻辑用于进行这个分析,所以该方法不支持无限范围的可能值。对于该代理,该方法通过针对可能的导出公钥来评估代理所提供的签名而起作用。因此,当控制器首次构造赎回脚本时,它将已经确定对于每个可能的输入值(状态)公钥是什么,并将它们包括在赎回脚本的净荷内。为了让脚本提取该数据,它通过确定哪个公钥用于签署交易来完成该操作,并且因为脚本已经被编码为以隐含方式理解该公钥所代表的值,所以它已经有效地提取了该值,用于在脚本限制内使用的目的。在区块链标准内,为了确定经由解锁脚本收集了足够的签名,内置的op_checkmultisig交易功能允许评估签名。但是,这不允许明确地确定使用哪些签名。因此,本发明提供对现有技术的改进,因为它提出一种使用tx来明确地匹配密钥以确定使用哪些密钥并因此允许经由交易实现远更大的复杂性的技术。换言之,通过确定在签署处理中使用多个密钥的哪个子集,可以经由区块链产生更复杂的行为。例如,在托管功能中,通过多个托管代理,可以有效地创建托管,但是限定要求提供买方加上卖方、或买方加上托管代理中的一个、或卖方加上托管代理中的一个的签名的脚本规则。在已知的标准比特币协议中这是不可能的,因为标准构造允许两个托管代理都签署交易。赎回脚本伪代码根据本发明的实施例,可将赎回脚本内的逻辑设置如下:示例交易在示例交易中,交易输出(txo)1实现nor门,其中,交易输出2将更改支付给控制器。交易如图4所示。赎回脚本完整的赎回脚本如下所示。然后将其分解为逻辑组件。方框内的指令代码展示了nor门净荷代码(下面的区块7),它们是在使得数据成为可以验证的格式所需的签名操纵逻辑上提供的。为了划分为逻辑“子功能”,将脚本分解为一系列区块,如下表所示,以方便读者。锁定脚本锁定脚本是标准的支付到脚本散列模型:op_hash160<redeemscripthash>op_equal解锁脚本所需的解锁脚本是:<sig-controller><sig-a-used><sig-b-used><rsblock1>其中:<sig-a-used>或者是<sig-a-true>;或者是<sig-a-false><sig-b-used>或者是<sig-b-true>;或者是<sig-b-false>说明:nor逻辑门nor门是实现notor的逻辑门。也就是说,如果两个输入均为假,则输出将为真,否则输出将为假。abx001010100110在需要控制器签名加上来自a代理的签名(表示真或假值)以及来自b代理的另一签名(也表示真或假)的单个比特币交易输出内实现nor逻辑。图1示出可以如何经由比特币协议实现这种nor方法的概况。通过替换rbblock7可以实现替代门,如后续部分所示。and门nand门or门xor门xnor门not门这个门的实现方式稍微更复杂,因为它具有单个输入。ax0110因此,解锁脚本更改为:<sig-controller><sig-a-used><rsblockk1>作为单个输入的结果,发生以下区块更改:如下所述,可以提供很多不同的实施例。变化1:生成ture&false信号上述实施例允许表示逻辑门的未签署的交易输出(utxo)仅在门状况评估为true的情况下花费。但是在很多情况下,不管电路的实际输出如何,花费输出都是有利的(虽然是到不同的接受者地址)。使用本实施例,这是可能的。如图3所示有效地修改图1所示的实施例。在该实施例中,存在提供给第一交易(tx)的赎回脚本的额外参数。此额外参数可以是谜题、或嵌入在密钥中的值或显式提供的值(如示例中所示)。这样限定了控制器花费utxo的期望结果。因此,对于简单的逻辑门,控制器将尝试使用相同的签名来花费交易两次;一个具有预期的true结果,一个具有预期的false结果。赎回脚本将扩展为使得在门计算结束时其将对门的输出的相等性检查应用于对控制器请求的输出,使得:如果嵌入式门逻辑返回false,并且期望的结果为false,则赎回脚本将评估为true并且可以花费utxo;如果嵌入式门逻辑返回true,并且期望的结果为true,则赎回脚本将评估为true并且可以花费utxo;如果嵌入式门逻辑返回true,但期望的结果为false,则赎回脚本将评估为false且不能花费utxo;以及如果嵌入式门逻辑返回false,但期望的结果为true,则赎回脚本将评估为false且不能花费utxo。变化脚本完整的赎回脚本如下所示。然后将其分解为逻辑组件,以方便读者。来自主要解决方案的添加内容如高亮文本所示(中划线示出删除)。方框内的指令代码展示了关于签名操纵逻辑的nor门净荷代码,以使得数据成为可以验证的格式。锁定脚本锁定脚本是标准的支付到脚本散列模型:op_hash160<redeemscripthash>op_equal解锁脚本这种逻辑门模式的解锁脚本是:<sig-controller><signal-required><sig-a-used><sig-b-used><rsblock1>其中:<sig-a-used>或者是<sig-a-true>,或者是<sig-a-false><sig-b-used>或者是<sig-b-true>,或者是<sig-b-false><sig-required>或者是true,或者是false(1或0)变化2:生成隐藏的true&false信号所述实施例基本可以是本发明的主题。变化1具有缺点,即,真或假状况是否从脚本以信号传输是公开知识(来自赎回脚本)。在来自控制器的签名内部嵌入期望的信号可避免此问题。在变化2的本实施例中,控制器具有从其主密钥导出的两个公钥,如图5所示。因此,根据变化1,本实施例使用公钥代替参数,而不是在脚本的元数据内提供代表t/f信号的值。这意味着密钥的检查并未披露关于它们所代表的期望的结果的“意义”。这关于改进的安全性和隐私提供了显著的优点。它还提供了一种以新颖的方式使用加密技术的手段。根据上述变化1,控制器仍尝试将交易输出两次花费到不同的地址。也根据变化1但使用公钥而不是所提供的参数执行相等性检查或比较。为了做到这一点,赎回脚本中的逻辑被布置用于其中哪个密钥表示哪个期望的输出(true或false)的隐含“知识”。变化脚本完整的赎回脚本如下所示。然后将其分解为逻辑组件。来自第一实施例的添加内容如高亮文本所示(中划线示出删除)。方框内的指令代码展示了关于签名操纵逻辑的nor门净荷代码,以使得数据成为可以验证的格式。锁定脚本锁定脚本是标准的支付到脚本散列模型:op_hash160<redeemscripthash>op_equal解锁脚本这种逻辑门的模式的解锁脚本是:<sig-control-desirde><sig-a-used><sig-b-used><rsblock1>其中:<sig-a-used>或者是<sig-a-true>,或者是<sig-a-false><sig-b-used>或者是<sig-b-true>,或者是<sig-b-false><sig-control-desire>或者是<sig-control-desire-true>,或者是<sig-control-desire-false>变化3:单代码堆栈可以使用单个堆栈实现这些门,而不是使用alt堆栈。赎回脚本:概述和nor完整的赎回脚本如下所示。然后将其分解为逻辑组件。方框内的指令代码展示了关于签名操纵逻辑的nor门净荷代码,以使得数据成为可以验证的格式。所有堆栈都按照从上到下的排序显示。锁定脚本锁定脚本是标准的支付到脚本散列模型:op_hash160<redeemscripthash>op_equal解锁脚本这种逻辑门的模式的解锁脚本是(注意签名区块的不同排序):<sig-b-used><sig-a-used><sig-controller><rsblock1>其中:<sig-a-used>或者是<sig-a-true>,或者是<sig-a-false><sig-b-used>或者是<sig-b-true>,或者是<sig-b-false>替代门要实现替代逻辑门,用以下内容替换蓝色矩形中的显式nor代码:情境:盗窃警告设置(nor门)使用nor门的上述实施例的简单示例是设置盗窃警告。在该示例中,代理a是装货舱门上的门传感器,其当门打开时发出true信号,关闭时发出false信号。代理b也是门传感器,但是在建筑物内的现金保险箱上。当门打开时它也发出true信号,当关闭时发出false信号。控制器是中央警告系统,并且只有当建筑物内的所有门都关闭时才会设置警告。因此,当请求控制器设置警告时,它将向各种监视代理广播交易。只有当代理a和代理b发出关闭它们各自门的信号时,交易才会完成。我们现在描述一种根据如上所述的基本密钥生成新密钥的技术。使用共享秘密创建密钥参照附图5至9对以下技术进行描述。使用以下技术,可以安全地保存或重新创建密钥。特别地,在可以用于导出公钥的私钥的情况下,可以部分地存储私钥。用户——也就是爱丽丝(alice)或鲍勃(bob)——可以保存他们的私钥的一部分,服务提供商可以保存第二部分,而第三部分可以保存在远程安全站点处。可以使用三个部分中的任何两个来重构私钥,或者更一般地,可以使用n个部分中的任意m个部分来重构私钥。如果私钥可以重构,那么私钥可以用于在使用点处重新创建公钥,然后私钥和公钥可以在使用后再次丢弃。可以使用夏米尔秘密共享方案(shamir’ssecretsharingscheme)来达到拆分私钥的目的。可以使用以下方法从主密钥确定性地导出私钥-公钥对。该方法使得参与者能够共享秘密值而无需甚至发送它们。系统可以使用如下所述的子密钥生成的方法为参与者生成公钥。图5示出了系统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包括:至少基于第一节点主私钥(v1c)和生成器值(gv),确定(330)第一节点第二私钥(v2c)。生成器值可以基于在第一和第二节点之间共享的消息(m),其可以包括:通过通信网络5共享消息,对此,下文将进一步详述。方法300还包括:至少基于第二节点主公钥(p1s)和生成器值(gv)确定(370)第二节点第二公钥(p2s)。方法300包括:基于第一节点第二私钥(v2c)和第二节点第二公钥(p2s)确定(380)共同秘密(cs)。重要的是,也可以通过方法400在第二节点7处确定相同的共同秘密(cs)。方法400包括:基于第一节点主公钥(p1c)和生成器值(gv)确定(430)第一节点第二公钥(p2c)。方法400还包括:基于第二节点主私钥(v1s)和生成器值(gv)确定(470)第二节点第二私钥(v2s)。方法400包括:基于第二节点第二私钥(v2s)和第一节点第二公钥(p2c)确定(480)共同秘密(cs)。通信网络5可包括局域网、广域网、蜂窝网络、无线通信网络、互联网等等。这些网络可能容易例如被窃听者11窃听,在这些网络中,数据可以通过通信介质(例如如电线、光纤、或无线)传输。方法300、400可以允许第一节点3和第二节点7都独立地确定共同秘密,而无需通过通信网络5发送共同秘密。因此,一个优点是可以由每个节点安全且独立地确定共同秘密(cs),而不必通过可能不安全的通信网络5发送私钥。进而,共同秘密可以用作秘密密钥(或者作为秘密密钥的基础)。方法300、400可包括附加步骤。方法300可以包括:在第一节点3处,基于消息(m)和第一节点第二私钥(v2c)生成签名消息(sm1)。方法300还包括:通过通信网络,将第一签名消息(sm1)发送到第二节点7。进而,第二节点7可执行步骤:接收(440)第一签名消息(sm1)。方法400还包括以下步骤:用第一节点第二公钥(p2c)验证(450)第一签名消息(sm1),以及基于验证第一签名消息(sm1)的结果认证(460)第一节点3。有利地,这允许第二节点7认证所声称的第一节点(其中生成第一签名消息)是第一节点3。这基于以下假设:仅第一节点3具有对第一节点主私钥(v1c)的访问,因此仅第一节点3可以确定用于生成第一签名消息(sm1)的第一节点第二私钥(v2c)。应当理解的是,类似地,例如在点对点(peer-to-peer)情境中,可以在第二节点7处生成第二签名消息(sm2)并将其发送到第一节点3,使得第一节点3可以认证第二节点7。可以以各种方式实现在第一和第二节点之间共享消息(m)。在一个示例中,可以在第一节点3处生成消息,然后将其通过通信网络5发送给第二节点7。或者,可以在第二节点7处生成消息,然后将其通过通信网络5发送给第二节点7。在一些示例中,消息(m)可以是公开的,因此可以通过不安全的网络5发送。一个或多个消息(m)可以存储在数据存储13、17、19中。本领域技术人员将认识到,可以以各种方式实现消息的共享。有利地,可以保存允许重新创建共同秘密(cs)的记录,而记录本身不必私下存储或安全发送。注册方法100、200现描述注册方法100、200的示例,其中,方法100由第一节点3执行,方法200由第二节点7执行。这包括为相应的第一和第二节点3、7建立第一和第二非对称密码对。非对称密码对包括相关联的私钥和公钥,例如在公钥加密中使用的密钥。在该示例中,使用椭圆曲线密码系统(ecc,ellipticcurvecryptography)和椭圆曲线运算的性质生成非对称密码对。在方法100、200中,这包括:第一和第二节点就共同ecc系统协定(110、210)并使用基点(g)。(注意:基点可以称为共同生成器,但术语“基点”用于避免与生成器值gv混淆)。在一个示例中,共同ecc系统可以基于secp256k1,secp256k1是比特币使用的ecc系统。可以选择、随机生成、或分配基点(g)。现转向第一节点3,方法100包括:安排(110)共同ecc系统和基点(g)。这可以包括:从第二节点7或第三节点9接收共同ecc系统和基点。或者,用户接口15可以与第一节点3相关联,由此用户可以选择性地提供共同ecc系统和/或基点(g)。在另一可选方案中,共同ecc系统和/或基点(g)中的一个或它们二者可由第一节点3随机选择。通过通信网络5,第一节点3可发送指示使用共同ecc系统和基点(g)的通知给第二节点7。进而,在步骤210中,第二节点7可通过发送指示确认使用共同ecc系统和基点(g)的通知来进行安排(210)。方法100还包括:第一节点3生成(120)第一非对称密码对,其包括第一节点主私钥(v1c)和第一节点主公钥(p1c)。这包括:至少部分地基于共同ecc系统中规定的可允许范围中的随机整数来生成第一节点主私钥(v1c)。这还包括:根据以下公式,基于第一节点主私钥(v1c)和基点(g)的椭圆曲线点乘(ellipticcurvepointmultiplication)来确定第一节点主公钥(p1c):p1c=v1cxg(公式1)因此,第一非对称密码对包括:v1c:由第一节点保密的第一节点主私钥。p1c:使得公开地获知的第一节点主公钥。第一节点3可以将第一节点主私钥(v1c)和第一节点主公钥(p1c)存储在与第一节点3相关联的第一数据存储13中。为了安全,第一节点主私钥(v1c)可以存储在第一数据存储13的安全部分中,以确保密钥保持私密。方法100还包括:通过通信网络5,将第一节点主公钥(p1c)发送(130)到第二节点7,如图6所示。第二节点7可在接收(220)第一节点主公钥(p1c)时将第一节点主公钥(p1c)存储(230)在与第二节点7相关联的第二数据存储17中。类似于第一节点3,第二节点7的方法200包括:生成(240)第二非对称密码对,第二非对称密码对包括第二节点主私钥(v1s)和第二节点主公钥(p1s)。第二节点主私钥(v1s)也是可允许范围内的随机整数。进而,第二节点主公钥(p1s)由以下公式确定:p1s=v1sxg(公式2)因此,第二非对称密码对包括:v1s:由第二节点保密的第二节点主私钥。p1s:使得公开地获知的第二节点主公钥。第二节点7可以将第二非对称密码对存储在第二数据存储17中。方法200还包括:将第二节点主公钥(p1s)发送(250)到第一节点3。进而,第一节点3可以接收(140)并存储(150)第二节点主公钥(p1s)。应当理解的是,在一些替代方案中,可以在与第三节点9(例如可信的第三方等)相关联的第三数据存储19处接收和存储相应的公共主密钥。这可以包括充当公开目录的第三方,例如认证机构。因此,在一些示例中,仅当确定需要共同秘密(cs)时,才可由第二节点7请求和接收第一节点主公钥(p1c)(反之亦然)。注册步骤作为初始设置可只需产生一次。会话发起并由第一节点3确定共同秘密现将描述确定共同秘密(cs)的示例。共同秘密(cs)可以用于第一节点3和第二节点7之间的特定会话、时间、交易或其他目的,并且使用相同的共同秘密(cs)可能不是期望的或者安全的。因此,可以在不同的会话、时间、交易等之间更换共同秘密(cs)。提供以下内容用以说明以上已经描述的安全传输技术。生成消息(m)310在该示例中,由第一节点3执行的方法300包括:生成(310)消息(m)。消息(m)可以是随机的、伪随机的或用户定义的。在一个示例中,消息(m)基于unix系统时间(unixtime)和随机值(nonce)(和任意值)。例如,消息(m)可以提供为:message(m)=unixtime+nonce(公式3)在一些示例中,消息(m)是任意的。然而,应当理解,消息(m)可以具有在某些应用中可能有用的选择性值(例如unix系统时间等)。方法300包括:通过通信网络3将消息(m)发送(315)到第二节点7。可以在不安全的网络上发送消息(m),因为消息(m)不包括关于私钥的信息。确定生成器值(gv)320方法300还包括步骤:基于消息(m)确定(320)生成器值(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。其他散列函数可以包括基于zémor-tillich的散列函数和基于背包(knapsack)的散列函数的系列。确定第一节点第二私钥330然后方法300包括步骤330,基于第二节点主私钥(v1c)和生成器值(gv)确定(330)第一节点第二私钥(v2c)。根据以下公式,v2c可以基于第一节点主私钥(v1c)和生成器值(gv)的标量加法:v2c=v1c+gv(公式5)因此,第一节点第二私钥(v2c)不是随机值,而是另外确定性地从第一节点主私钥导出的。加密对中的对应公钥(即第一节点第二公钥(p2c)),具有以下关系:p2c=v2cxg(公式6)将v2c从公式5代入公式6中,提供:p2c=(v1c+gv)xg(公式7)其中,“+”运算符指椭圆曲线点加法。注意,椭圆曲线密码学代数是可分配的,公式7可以表示为:p2c=v1cxg+gvxg(公式8)最后,公式1可以代入公式7,以提供:p2c=p1c+gvxg(公式9.1)p2c=p1c+sha-256(m)xg(公式9.2)因此,给定第一节点主公钥(p1c)和消息(m)的知识,对应的第一节点第二公钥(p2c)可以是可导出的。第二节点7可以具有这样的知识以独立地确定第一节点第二公钥(p2c),这将在下文关于方法400的部分进一步进行详细讨论。基于消息和第一节点第二私钥生成第一签名消息(sm1)350方法300还包括:基于消息(m)和确定的第一节点第二私钥(v2c)生成(350)第一签名消息(sm1)。生成签名消息包括:应用数字签名算法对消息(m)进行数字签署。在一个示例中,这包括:在椭圆曲线数字签名算法(ellipticcurvedigitalsignaturealgorithm,“ecdsa”)中将第一节点第二私钥(v2c)应用于消息以获得第一签名消息(sm1)。ecdsa的示例包括基于具有secp256k1、secp256r1、secp384r1、se3cp521r1的ecc系统的ecdsa。在第二节点7处,通过对应的第一节点第二公钥(p2c)来验证第一签名消息(sm1)。第二节点7可使用第一签名消息(sm1)的该验证来认证第一节点3,这将在下面的方法400中进行讨论。确定第二节点第二公钥370’然后,第一节点3可以确定(370)第二节点第二公钥(p2s)。如上所述,第二节点第二公钥(p2s)可以至少基于第二节点主公钥(p1s)和生成器值(gv)。在该示例中,由于通过与基点(g)进行了椭圆曲线点乘将公钥确定(370’)为私钥,所以可以以类似于公式6的方式表示第二节点第二公钥(p2s),如:p2s=v2sxg(公式10.1)p2s=p1s+gvxg(公式10.2)公式10.2的数学证明与上述用于导出第一节点第二公钥(p2c)的公式9.1的数学证明相同。应当理解,第一节点3可以独立于第二节点7确定(370)第二节点第二公钥。在第一节点3处确定共同秘密380然后,第一节点3可以基于已确定的第一节点第二私钥(v2c)和已确定的第二节点第二公钥(p2s)来确定(380)共同秘密(cs)。共同秘密(cs)可以由第一节点3通过以下公式确定:s=v2cxp2s(公式11)在第二节点7处执行的方法400现在将描述在第二节点7处执行的对应方法400。应当理解,这些步骤中的一些步骤类似于上述由第一节点3执行的步骤。方法400包括:通过通信网络5,接收(410)来自第一节点3的消息(m)。这可包括在步骤315由第一节点3发送的消息(m)。然后基于消息(m),第二节点7确定(420)生成器值(gv)。由第二节点7确定(420)生成器值(gv)的步骤类似于由上述第一节点执行的步骤320。在该示例中,第二节点7独立于第一节点3执行该确定步骤420。下一步骤包括:基于第一节点主公钥(p1c)和生成器值(gv)确定(430)第一节点第二公钥(p2c)。在该示例中,由于与基点(g)的椭圆曲线点乘将公钥确定(430’)为私钥,所以可以以类似于公式9的方式将第一节点第二公钥(p2c)表示为:p2c=v2cxg(公式12.1)p2c=p1c+gvxg(公式12.2)公式12.1和12.2的数学证明与上述针对公式10.1和10.2所讨论的数学证明相同。第二节点7认证第一节点3方法400可以包括由第二节点7执行的认证所声称的第一节点3是第一节点3的步骤。如前所述,这包括:接收(440)来自第一节点3的第一签名消息(sm1)。然后,第二节点7可通过在步骤430确定的第一节点第二公钥(p2c)来验证(450)第一签名消息(sm1)上的签名。可以根据如上所述的椭圆曲线数字签名算法(ecdsa)来完成验证数字签名。重要的是,使用第一节点第二私钥(v2c)签署的第一签名消息(sm1)仅应通过对应的第一节点第二公钥(p2c)正确地受验证,因为v2c和p2c形成密码对。由于这些密钥在第一节点3的注册时生成的第一节点主私钥(v1c)和第一节点主公钥(p1c)上是确定性的,因此验证第一签名消息(sm1)可以用作认证所声称的发送第一签名消息(sm1)的第一节点在注册期间是同一第一节点3的基础。因此,第二节点7还可以进行步骤:基于验证(450)第一签名消息的结果来认证(460)第一节点3。第二节点7确定共同秘密方法400还可包括:基于第二节点主私钥(v1s)和生成器值(gv),第二节点7确定(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=v2sxp2c(公式14)由第一节点3和第二节点7确定的共同秘密(cs)的证明由第一节点3确定的共同秘密(cs)与在第二节点7处确定的共同秘密(cs)相同。现将对公式11和公式14提供相同的共同秘密(cs)的数学证明进行描述。转向由第一节点3确定的共同秘密(cs),公式10.1可以代入公式11,如下所示:s=v2cxp2s(公式11)s=v2cx(v2sxg)s=(v2cxv2s)xg(公式15)转向由第二节点7确定的共同秘密(cs),公式12.1可以代入公式14,如下所示:s=v2sxp2c(公式14)s=v2sx(v2cxg)s=(v2sxv2c)xg(公式16)由于ecc代数是可交换的,因此公式15和公式16是等价的,因为:s=(v2cxv2s)xg=(v2sxv2c)xg(公式17)共同秘密(cs)和秘密密钥共同秘密(cs)现在可被用作秘密密钥,或者作为在第一节点3和第二节点7之间进行安全通信的对称密钥算法中的秘密密钥的基础。共同秘密(cs)可以是椭圆曲线点(xs,ys)的形式。这可使用由节点3、7所协定的标准公开已知运算转换成标准密钥格式。例如,xs值可以是可以用作aes256加密的密钥的256位整数。它也可以使用riremd160转换成160位整数,用于任何需要这个长度密钥的应用。可以根据需要确定共同秘密(cs)。重要的是,第一节点3不需要存储共同秘密(cs),因为这可以基于消息(m)重新确定。在一些示例中,所使用的消息(m)可以存储在数据存储13、17、19(或其他数据存储)中,而不需要主私钥所要求的相同级别的安全性。在一些示例中,消息(m)可以是公开可用的。然而,根据某些应用,共同秘密(cs)可以存储在与第一节点相关联的第一数据存储(x)中,前提是共同秘密(cs)与第一节点主私钥(v1c)一样安全地保存。有利地,基于单个主密钥加密对,该技术可用于确定可以与多个安全秘密密钥对应的多个共同秘密。应当说明的是,上述实施例说明而非限制本发明,在不脱离本发明的由所附权利要求限定的范围的情况下,本领域技术人员将能够设计出许多替代性实施例。在权利要求中,置于括号中的任何标号不应解释为限制权利要求。词语“包括(comprising)”和“包括(comprises)”等并非在整体上排除除了任何权利要求或说明书中列出的之外的其他要素或步骤的存在。在本说明书中,“包括(comprises)”意指“包括(includes)或由......组成(consistsof)”,“包括(comprising)”意指“包括(including)或由......组成(consistingof)”。要素的单数引用不意味着排除这些要素的复数引用,反之亦然。本发明可以借助包括若干不同元件的硬件,以及借助适当编程的计算机来实施。在列举了若干装置的设备权利要求中,这些装置中的若干个可以由硬件的一个且同一部件来体现。不争的事实是,在相互不同的从属权利要求中陈述了特定措施,并不指示不能有利地使用这些措施的组合。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1