CN114747172A - 加密链接身份 - Google Patents

加密链接身份 Download PDF

Info

Publication number
CN114747172A
CN114747172A CN202080079276.7A CN202080079276A CN114747172A CN 114747172 A CN114747172 A CN 114747172A CN 202080079276 A CN202080079276 A CN 202080079276A CN 114747172 A CN114747172 A CN 114747172A
Authority
CN
China
Prior art keywords
party
transaction
private key
blockchain
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080079276.7A
Other languages
English (en)
Inventor
布洛克·多伊龙
克雷格·史蒂文·赖特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nchain Holdings Ltd
Original Assignee
Nchain Holdings Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nchain Holdings Ltd filed Critical Nchain Holdings Ltd
Publication of CN114747172A publication Critical patent/CN114747172A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

提供了一种链接第一方和第二方的计算机实现的方法,所述方法由所述第一方执行并且包括:获得第一加密公钥‑私钥对,所述第一加密公钥‑私钥对包括第一私钥和对应的第一公钥;生成所述第一方和所述第二方已知的第一共享私钥对;以及生成第二加密公钥‑私钥对,所述第二加密公钥‑私钥对包括第二私钥和对应的第二公钥,其中所述第二私钥是基于所述第一私钥和所述共享私钥生成的。

Description

加密链接身份
技术领域
本公开涉及用于使用加密公钥-私钥对链接第一方和第二方以及用于验证该链接的方法。具体地,这些方法使第一方能够证明其公钥-私钥对与第二方的公钥-私钥对加密链接。
背景技术
区块链是指一种分布式数据结构形式,其中在点对点(P2P)网络中的多个节点中的每个节点处维护区块链副本。区块链包括一系列数据区块,其中每个区块包括一个或更多个事务(transaction)。每笔事务都可以回指序列中的先前事务,其可以扩展一个或更多区块。通过称为“挖掘”的过程,事务可以通过提交到网络包括在新区块中,该过程涉及多个挖掘节点中的每个挖掘节点争相执行“工作量证明”,即基于等待包括在区块中的未决事务池解决加密难题。
区块链中的事务通常用于传递数字资产,即用作价值储存手段的数据。但是也可利用区块链实现区块链上的分层附加功能。例如,区块链协议可允许在事务输出中存储附加用户数据。现代区块链在单一事务中可储存的最大数据容量在不断增加,从而能够并入更复杂的数据。例如,这可用于在区块链中存储电子文档,甚至音频或视频数据。
网络中的每个节点可以具有以下三个角色中的任何一个、两个或全部:转发、挖掘和存储。转发节点在整个网络节点中传播事务。挖掘节点将事务挖掘到区块中。存储节点各自对区块链中的已挖掘区块存储自己的副本。为了将事务记录在区块链中,一方将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的挖掘节点可以争相将该事务挖掘到新区块中。每个节点被配置为遵守相同的节点协议,该协议将包括用于确认事务有效的一个或更多个条件。无效事务将不会传播或挖掘到区块中。假定事务已经核实有效,从而在区块链上被接受,该附加用户数据将因此作为不可改变的公共记录,继续存储在P2P网络中的各个节点处。
身份(identity)管理和验证在许多企业对企业和企业对消费者通信中至关重要,以避免洗钱、身份盗用和腐败等问题。然而,并不总是能够直接确认一方(例如,个人或企业)的身份。相反,可以通过来自受信任的第三方的验证信息和背书来确定对一方的信任。这样,即使是匿名对等方也可以建立足够的信任来交流敏感信息。这种情况的一个此类示例是通过互联网提供安全性的传输层安全(TLS)证书。
发明内容
区块链提供了一种通过公钥和地址进行身份识别的形式。这些公钥和地址在区块链地址空间内是唯一的,因此对于单个区块链用户也是唯一的。然而,密钥和地址不会透露有关该用户身份的信息,并且通常不足以遵守法规,例如了解您的客户(KYC)法规。此外,区块链密钥和地址通常不与非区块链系统接口连接,这是要在企业系统内广泛使用和集成区块链所必需的。
根据本文公开的一个方面,提供了一种链接第一方和第二方的计算机实现的方法,所述方法由所述第一方执行并且包括:获得第一加密公钥-私钥对,所述第一加密公钥-私钥对包括第一私钥和对应的第一公钥;生成所述第一方和所述第二方已知的第一共享私钥对;以及生成第二加密公钥-私钥对,所述第二加密公钥-私钥对包括第二私钥和对应的第二公钥,其中所述第二私钥是基于所述第一私钥和所述共享私钥生成的。
本公开识别了一种一方可以使用公钥密码学与另一方进行加密链接的方法。由于公钥和私钥的加密性质,所述第一方与所述第二方之间的链接不能被伪造。此外,该链接可以由第三方验证。所述第二私钥是基于所述第一私钥和所述共享私钥生成的。只有所述第一方知道所述第二私钥,并且只有所述第一方和所述第二方知道所述共享私钥。因此,只有所述第一方可以生成所述第二私钥,但是如果需要,所述第一方可以证明已经基于可由所述第二方证实的信息生成所述第二公钥。如果所述第二方是受信方,他们的信任可以与所述第一方相关联,因为他们已经与所述第一方建立共享私钥。这使得所述第一方的身份能够被信任。
所述公钥-私钥对可以是区块链密钥对。也就是说,公钥可以用作区块链用户的身份(即地址),也可以用于生成区块链用户的身份(即地址)。然而,本公开并不局限于区块链系统。也就是说,所述第一方和/或所述第二方不必是区块链用户,并且它们相应的公钥-私钥对不必用于通过所述区块链处理事务。
根据本文公开的另一方面,提供了一种验证第一方与第二方之间链接的计算机实现的方法,所述方法由第三方执行并且包括:从所述第二方获得i)用基于所述第二方的第一私钥的第一签名签署的消息,以及ii)与所述第一私钥相对应的第一公钥;从所述第二方获得iii)用基于所述第二方的第二私钥的第二签名签署的所述消息,以及iv)与所述第二私钥相对应的第二公钥;从所述第一方获得v)用基于对应的共享公钥以及仅所述第一方和所述第二方已知的共享私钥的第三签名签署的所述消息;以及基于所述共享公钥和所述第二方的所述第一公钥,确定是否已生成所述第二方的所述第二公钥。
在这一方面,所述第三方想要证明所述第一方与所述第二方之间存在链接。例如,所述第三方可以信任所述第一方。通过验证所述第一方与所述第二方之间的链接,所述第三方可以利用其对所述第一方身份的信任来信任所述第二方的身份。所述第三方从所述第二方获得(例如,接收)两条消息,一条用基于仅所述第二方已知的第一私钥的签名签署,而另一条用基于仅所述第二方已知的第二私钥的签名签署。所述第三方还获得(例如,接收)用基于所述第一方和所述第二方均已知的私钥的签名签署的消息。如果已基于与所述第一私钥相对应的公钥和与所述共享私钥相对应的公钥生成与所述第二私钥相对应的公钥,则所述第三方可以确定所述第一方已经与所述第二方建立所述共享私钥。然后,所述第三方可以利用其对所述第一方的信任来信任所述第二方。
根据本文公开的另一方面,提供了一种证实第一方用于签署第一消息的第一签名的计算机实现的方法,其中区块链包括记录的事务,所述记录的事务包括通过对第一值应用单向函数而生成的注册值;所述方法由所述第一方执行并且包括:通过至少对所述第一值和所述消息应用单向函数来生成所述第一签名;将第一事务传输给区块链网络的一个或更多个节点以使所述第一事务包含在所述区块链中,所述第一事务包括用所述第一签名签署的所述消息;以及将第二事务传输给所述区块链网络的一个或更多个节点以使所述第二事务包含在所述区块链中,所述第二事务包括所述第一值。
在公钥密码学中,通常使用私钥生成签名,并使用对应的公钥进行检查。本公开提供了一种可以在不使用一方的私钥的情况下生成签名的方法,以及一种该方可以证明只有他们可以提供签名的方法。记录值已记录(即,已挖掘)到区块链中,因此是不可变的。此时,所述第一值不记录在区块链上,并且仅为所述第一方所知。所述第一方可以使用所述第一值生成签名,使用该签名签署消息,并将包括所述消息的事务提交给所述区块链。然后,所述第一方可以用包括所述第一值的第二事务跟进,从而证实所述签名。这使得另一方能够对所述第一值应用所述单向函数。如果对所述第一值应用所述单向函数得出的结果是记录值,则验证方可以确定只有所述第一方可以生成所述签名。
附图说明
为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
图1是一种用于实现区块链的系统的示意性框图;
图2示意性地示出了可记录在区块链中的事务的一些示例;
图3是另一种用于实现区块链的系统的示意性框图;
图4示意性地示出了用于将第一方和第二方加密链接的方法;以及
图5示意性地示出了用于验证第一方是否与第二方加密链接的方法。
具体实施方式
示例性系统概述
图1总体地示出了一种用于实现区块链150的示例性系统100。系统100包括分组交换网络101,通常是诸如互联网的广域互联网。分组交换网络101包括多个节点104,该多个节点被设置成在分组交换网络101内形成点对点(P2P)覆盖网络106。每个节点104包括对等体的计算机设备,不同的节点104属于不同的对等体。每个节点104包括含一个或更多个处理器的处理装置,例如一个或更多个中央处理单元(CPU)、加速器处理器、特定应用程序处理器和/或现场可编程门阵列(FPGA)。每个节点还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等的磁介质、诸如固态硬盘(SSD)、闪存或电可擦可编程只读存储器(EEPROM)等的电子媒介和/或诸如光盘驱动器等的光学介质。
区块链150包括一系列数据区块151,其中在P2P网络160中的多个节点中的每个节点处维护相应的区块链150副本。区块链中的每个区块151均包括一个或更多个事务152,其中该上下文中的事务是指一种数据结构。数据结构的性质将取决于用作事务模型或计划的一部分的事务协议类型。给定的区块链通常全程使用一个特定的事务协议。在一种常见的事务协议中,每笔事务152的数据结构至少包括一个输入和至少一个输出。每个输出指定一个数额,该数额表示属于输出被加密锁定的用户103的数字资产值(需要该用户的签名进行解锁,从而进行赎回或花费)。每个输入指向先前事务152的输出,从而链接这些事务。
节点104中的至少一些节点扮演转发节点104F的角色,这些节点转发并因此传播事务152。节点104中的至少一些节点扮演挖掘区块151的矿工104M的角色。节点104中的至少一些节点扮演存储节点104S(有时也称为“完整副本”节点)的角色,每个存储节点均在相应的存储器中存储相同区块链150的相应副本。每个矿工节点104M还维护等待挖掘到区块151中的事务152的池154。给定节点104可以是转发节点104、矿工104M、存储节点104S或其中两个节点或所有节点的任意组合。
在给定的当前事务152j中,输入(或每个输入)包括指针,该指针引用事务序列中先前事务152i的输出,指定该输出将在当前事务152j中被赎回或“花费”。通常,当前事务可以是池154或任何区块151中的任何事务。尽管为了确保当前事务有效,将需要存在先前事务152i并核实其有效,但是在创建当前事务152j甚至向网络106发送当前事务152j时,不必存在先前事务152i。因此,在本文中,“先前”是指由指针链接的逻辑序列中的前任,而不一定是时间序列中的创建时间或发送时间,因此,不一定排除无序创建或发送事务152i、152j的情况(参见下面关于孤立事务的讨论)。先前事务152i同样可以称为先行事务或前任事务。
当前事务152j的输入还包括先前事务152i的输出被锁定到的用户103a的签名。反过来,当前事务152j的输出可以加密锁定到新用户103b。因此,当前事务152j可将先前事务152i的输入中定义的数额转移到当前事务152j的输出中定义的新用户103b。在某些情况下,事务152可具有多个输出,以在多个用户间分割输入数额(其中一个可以是原始用户103a,以便进行变更)。在某些情况下,一个事务还可以具有多个输入,以将一个或更多个先前事务的多个输出中的数额汇总在一起,并重新分配到当前事务的一个或更多个输出。
上述可称为“基于输出的”事务协议,有时也称为未花费的事务输出(UTXO)的协议(其中输出称为UTXO)。用户的总余额不是用区块链中存储的任何一个数字定义的;相反,用户需要特殊“钱包”应用程序105,以整理该用户的所有UTXO值,这些UTXO值分散在区块链151的许多不同事务152中。
作为基于账户的事务模型的一部分,另一种类型的事务协议可称为“基于账户的”协议。在基于账户的情况下,每笔事务均不通过参考过去事务序列中先前事务的UTXO来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由矿工单独存储到区块链中,并不断更新。在此类系统中,事务使用账户的运行事务记录(也称为“头寸”)进行排序。该值由发送者签名作为其加密签名的一部分,并作为事务引用计算的一部分进行哈希处理。此外,可选的数据字段也可以在事务中签名。例如,如果数据字段中包含先前事务的ID,则该数据字段可指向先前事务。
无论采用何种类型的事务协议,当用户103希望执行新事务152j时,其希望将新事务从其计算机终端102发送至P2P网络106的节点104中的一个(现在通常是服务器或数据中心,但原则上可以是其他用户终端)。此节点104根据在节点104中的每个节点处应用的节点协议检查事务是否有效。节点协议的详细信息将与相关区块链150中使用的事务协议类型相对应,一起形成整个事务模型。节点协议通常要求节点104检查新事务152j中的加密签名是否与预期签名相匹配,这取决于事务152的有序序列中的先前事务152i。在基于输出的情况下,这可包括检查新事务152j的输入中包含的用户加密签名是否与新事务花费的先前事务152i的输出中定义的条件相匹配,其中该条件通常包括至少检查新事务152j的输入中的加密签名是否解锁新事务的输入所指向的先前事务152i的输出。在一些事务协议中,条件可至少部分地由输入和/或输出中包含的自定义脚本定义。或者,这可仅由节点协议单独确定,或可通过其组合确定。无论采用哪种方式,如果新事务152j有效,当前节点会将其转发到P2P网络106中的一个或更多个其他节点104。这些节点104中的至少一些节点还作为转发节点104F,根据相同的节点协议应用相同的测试,从而将新事务152j转发到一个或更多个进一步的节点104,依此类推。通过这种方式,新事务在节点104的整个网络中进行传播。
在基于输出的模型中,给定输出(例如,UTXO)是否花费的定义是,根据节点协议,其是否通过另一个随后事务152j的输入有效赎回。事务有效的另一个条件是其试图花费或赎回的先前事务152i的输出尚未被另一个有效事务花费/赎回。同样,如果无效,事务152j将不会在区块链中传播或记录。这可防止重复花费,即花费者对同一个事务的输出花费超过一次。另一方面,基于账户的模型通过保持账户余额防止重复花费。因为同样存在定义的事务顺序,账户余额在任何时候均具有单一定义的状态。
除核实之外,节点104M中的至少一些节点在称为挖矿的过程中争先创建事务区块,该过程以“工作量证明”为基础。在挖矿节点104M处,将新事务添加到区块中尚未出现的有效事务的池中。然后,矿工争相通过尝试解决加密难题来组装事务池154中事务152的新的有效区块151。通常情况下,这包括搜索“随机数”值,从而当随机数与事务池154并置且进行哈希处理时,哈希值的输出满足预定条件。例如,预定条件可以是哈希值的输出具有某个预定义的前导零数。哈希函数的特性是,相对于其输入,其具有不可预测的输出。因此,该搜索只能通过强力执行,从而在试图解决难题的每个节点104M处消耗大量的处理资源。
解决难题的第一矿工节点104M在网络106上宣布难题解决,提供解决方案作为证明,然后网络中的其他节点104则可以轻松检查该解决方案(一旦给出哈希值的解决方案,就可以直接检查该解决方案是否使哈希值的输出满足条件)。基于已在每个此类节点处检查获胜者的已宣布解决方案,获胜者已为其解决该难题的事务池154之后由充当存储节点104S的节点104中的至少一些节点记录在区块链150中作为新区块151。区块指针155还分配给指向区块链中先前创建的区块151n-1的新区块151n。工作量证明有助于降低重复花费的风险,因为创建新区块151需要大量工作,并且由于包含重复花费的任何区块都可能被其他节点104拒绝,因此挖矿节点104M受到激励,不允许在其区块中包含双重花费。一旦创建,则不可修改区块151,因为其根据相同的协议在P2P网络106中的存储节点104S中的每个存储节点进行识别和维护。区块指针155还向区块151施加顺序。由于事务152记录在P2P网络106中每个存储节点104S处的有序区块中,因此提供了事务的不可变公共分类账。
应当注意的是,在任何给定时间争相解决难题的不同矿工104M可能会根据任何给定时间的未挖掘事务池154的不同快照执行该操作,具体取决于他们何时开始搜索解决方案。解决相应难题的人员首先定义新区块151n中包含的事务152,并更新当前未挖掘事务池154。然后,矿工104M继续争相从新定义的未完成池154中创建区块,依此类推。此外,还存在解决可能出现的任何“分叉”的协议,其中两名矿工104M彼此在很短的时间内解决难题,从而传播区块链的冲突视图。简言之,分叉方向最长的成为最终区块链150。
在大部分区块链中,获胜矿工104M会自动获得特殊类型的新事务作为奖励,该新事务创建新的数字资产值(与将数字资产数额从一个用户转移至另一个用户的正常事务截然相反)。因此,获胜节点被视为已“挖掘”一定数量的数字资产。这种特殊类型的事务有时称为“生成”事务,其自动形成新区块151n的一部分。该奖励可激励矿工104M争相参与工作量证明。通常情况下,常规(非生成)事务152还将在其输出中的一个输出中指定附加事务费用,以进一步奖励创建其中包含事务的区块151n的获胜矿工104M。
由于挖掘中涉及的计算资源,通常至少矿工节点104M中的每个矿工节点采用服务器的形式,该服务器包括一个或更多个物理服务器单元,甚至整个数据中心。每个转发节点104M和/或存储节点104S还可采取服务器或数据中心的形式。但是,原则上来说,任何给定节点104均可采用一个用户终端或联网在一起的一组用户终端的形式。
每个节点104的存储器均存储被配置为在节点104的处理装置上运行的软件,以根据节点协议执行其相应的角色并处理事务152。应当理解的是,在本文中归因于节点104的任何动作均可通过在相应计算机设备的处理装置上运行的软件执行。此外,在本文中使用的“区块链”一词是指一般技术类型的通用术语,不限于任何特定专有区块链、协议或服务。
扮演消费用户角色的多方103中的每一方的计算机设备102也连接到网络101。他们充当事务中的支付人和收受人,但不一定代表其他方参与挖掘或传播事务。他们不一定运行挖矿协议。出于说明目的,示出了双方103及其相应的设备102:第一方103a及其相应的计算机设备102a,以及第二方103b及其相应的计算机设备102b。应当理解的是,更多此类当事方103及其相应的计算机设备102可能存在并参与系统,但为了方便起见,未进行说明。每一方103均可以是个人或组织。仅出于说明目的,在本文中,第一方103a称为爱丽丝,第二方103b称为鲍勃,但应当理解的是,这并不仅限于爱丽丝或鲍勃,且本文对爱丽丝或鲍勃的任何引用均可分别用“第一方”和“第二方”替换。
每一方103的计算机设备102包括相应的处理装置,其包括一个或更多个处理器,例如一个或更多个CPU、图形处理单元(GPU)、其他加速器处理器、特定应用程序处理器和/或FPGA。每一方103的计算机设备102还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。该存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等磁介质、诸如SSD、闪存或EEPROM等电子媒介和/或诸如光盘驱动器等的光学介质。每一方103的计算机设备102上的存储器存储软件,其包括被设置为在处理装置上运行的至少一个客户端应用程序105的相应实例。应当理解的是,在本文中归因于给定方103的任何行动均可通过在相应计算机设备102的处理装置上运行的软件执行。每一方103的计算机设备102包括至少一个用户终端,例如台式或笔记本电脑、平板电脑、智能手机或诸如智能手表等的可穿戴设备。给定方103的计算机设备102还可包括一个或更多个其他网络资源,诸如通过用户终端访问的云计算资源。
客户端应用程序或软件105最初可通过例如从服务器下载的适当计算机可读存储介质,或通过诸如可移动SSD、闪存密钥、可移动EEPROM、可移动磁盘驱动器、软盘或磁带等的可移动存储设备、诸如CD或DVD ROM等的光盘或可移动光驱等提供至任何给定方103的计算机设备102。
客户端应用程序105至少包括“钱包”功能。这有两个主要功能。其中一个功能是使相应的用户方103创建、签名和发送拟在节点104的整个网络中传播的事务152,并因此包含在区块链150中。另一个功能是向相应方汇报其目前拥有的数字资产数额。在基于输出的系统中,该第二功能包括整理分散在区块链150中属于相关方的各种事务152的输出中定义的数额。
每个计算机设备102上的客户端应用程序105的实例可操作地耦合到P2P网络106的转发节点104F中的至少一个转发节点。这可以启用客户端105的钱包功能,以将事务152发送至网络106。客户端105还可联系一个、一些或所有存储节点104,以在区块链150中查询相应方103作为接收者的任何事务(或实际上在区块链150中检查其他方的事务,因为在实施例中,区块链150是在某种程度上通过其公开可见性提供事务信任的公共设施)。每个计算机设备102上的钱包功能被配置为根据事务协议制定和发送事务152。每个节点104运行软件,其被配置为根据节点协议核实事务152有效的软件,并且在转发节点104F的情况下转发事务152,以在整个网络106中传播此类事务。事务协议和节点协议相互对应,给定事务协议和给定节点协议一起实现给定的事务模型。区块链150中的所有事务152均采用相同的事务协议(尽管事务协议可允许其内存在不同的事务子类型)。网络106中的所有节点104采用相同的节点协议(尽管其可根据针对该子类型定义的规则区分处理不同的事务子类型,并且不同的节点还可扮演不同的角色,从而实现协议的不同对应方面)。
如上所述,区块链150包括一系列区块151,其中每个区块151包括通过如前所述的工作量证明过程创建的一个或更多个事务152的集合。每个区块151还包括区块指针155,其指向区块链中先前创建的区块151,以定义区块151的顺序。区块链150还包括有效事务池154,其等待通过工作量证明过程包含在新的区块中。每笔事务152(除了一生成事务)包括指向先前事务的指针,以定义事务序列的顺序(注:事务152的序列可进行分支)。区块151的区块链一直追溯到创始区块(Gb)153,该创始区块是区块链中的第一区块。区块链150中早期的一个或更多个原始事务152指向创始区块153,而非先前事务。
当给定方103(比方说爱丽丝)希望发送拟包含在区块链150中的新事务152j时,她将根据相关事务协议(使用其客户端应用程序105中的钱包功能)制定新事务。然后,她将事务152从客户端应用程序105发送至其连接的一个或更多个转发节点104F中的一个。例如,这可以是与爱丽丝的计算机102最近或最佳连接的转发节点104F。当任何给定节点104接收新事务152j时,其将根据节点协议及其相应的角色进行处理。这包括首先检查新接收的事务152j是否满足变为“有效”的特定条件,具体示例稍后将详细讨论。在一些事务协议中,有效条件可通过事务152中包含的脚本在每个事务的基础上进行配置。或者,条件可仅仅是节点协议的内置功能,或通过组合脚本和节点协议进行定义。
如果新接收的事务152j通过有效性测试(即:“有效”的条件下),接收事务152j的任何存储节点104S将向在该节点104S处维护的区块链150的副本中的池154中添加新有效事务152。进一步地,接收事务152j的任何转发节点104F随后将有效事务152传播至P2P网络106中的一个或更多个其他节点104。由于每个转发节点104F应用相同的协议,因此假定事务152j有效,这意味着事务很快将在整个P2P网络106中传播。
一旦进入在一个或更多个存储节点104处维护的区块链150的副本中的池154中,矿工节点104M将开始竞相解决包括新事务152的池154的最新版本方面的工作量证明难题(其他矿工104M可继续尝试基于池154的旧视角解决难题,但首先解决难题的矿工将定义下一个新区块151的结束位置和新池154的开始位置,最终将有人解决包括爱丽丝的事务152j的池154的一部分的难题)。一旦包括新事务152j的池154完成工作量证明,其将不可变地成为区块链150中区块151中的一个区块的一部分。每笔事务152包括指向早前事务的指针,因此事务的顺序也被不可变地记录下来。
基于UTXO的模型
图2示出了示例性事务协议。这是基于UTXO的协议的示例。事务152(简称“Tx”)是区块链150的基本数据结构(每个区块151包括一个或更多个事务152)。下面将通过参考基于输出或基于“UTXO”的协议进行描述。但这并不限于所有可能的实施例。
在基于UTXO的模型中,每笔事务(“Tx”)152包括数据结构,其包括一个或更多个输入202和一个或更多个输出203。每个输出203可包括未花费的事务输出(UTXO),其可用作另一新事务的输入202的来源(如果UTXO尚未赎回)。UTXO指定数字资产数额(价值储存手段)。它还可包含其来源事务的事务ID以及其他信息。事务数据结构还可包括标头201,其可包括输入字段202和输出字段203的大小指示符。标头201还可包括事务的ID。在实施例中,事务ID是事务数据(不含事务ID本身)的哈希值,且存储在提交至矿工104M的原始事务152的标头201中。
比方说爱丽丝103a希望创建转移相关数字资产数额至鲍勃103b的事务152j。在图2中,爱丽丝的新事务152j标记为“Tx1”。该新事务获取在序列中先前事务152i的输出203中锁定至爱丽丝的数字资产数额,并至少将此类数额中的一部分转移至鲍勃。在图2中,先前事务152i标记为“Tx0”。Tx0和Tx1只是任意的标记,其不一定意味着Tx0指区块链151中的第一事务且Tx1指池154中的下一个事务。Tx1可指向仍具有锁定至爱丽丝的未花费输出203的任何先前(即先行)事务。
当爱丽丝创建其新事务Tx1时,或至少在她将该新事务发送至网络106时,先前事务Tx0可能已经有效并包括在区块链150中。该事务此时可能已包括在区块151中的一个区块中,或者可能仍在池154中等待,在这种情况下,该事务将很快包括在新区块151中。或者,Tx0和Tx1可以创建并一起发送至网络102;或者,如果节点协议允许缓冲“孤立”事务,Tx0甚至可以在Tx1之后发送。本文事务序列上下文中使用的“先前”和“后续”一词是指由事务中指定的事务指针定义的序列中的事务顺序(哪个事务指向哪个其他事务等等)。它们同样可以替换为“前任”和“继任”、“先行”和“后代”或“父项”和“子项”等。这不一定指其创建、发送至网络106或到达任何给定节点104的顺序。然而,指向先前事务(先行事务或“父事务”)的后续事务(后代事务或“子事务”)不会有效除非父事务有效。在父事务之前到达节点104的子事务被视为孤立事务。根据节点协议和/或矿工行为,其可被丢弃或缓冲一段时间,以等待父事务。
先前事务Tx0的一个或更多个输出203中的一个包括特定的UTXO,标记为UTXO0。每个UTXO包括指定UTXO表示的数字资产数额的值以及锁定脚本,该锁定脚本定义后续事务的输入202中的解锁脚本必须满足的条件,以使后续事务有效,从而成功赎回UTXO。通常情况下,锁定脚本将数额锁定至特定方(该数额的事务的受益人)。即,锁定脚本定义解锁条件,该解锁条件通常包括以下条件:后续事务的输入中的解锁脚本包括先前事务被锁定到的一方的加密签名。
锁定脚本(亦称scriptPubKey)是节点协议识别的域特定语言中写入的一段代码。此类语言的特定示例称为“脚本(Script)”(S大写)。锁定脚本指定花费事务输出203所需的信息,例如爱丽丝签名的要求。解锁脚本出现在事务的输出中。解锁脚本(亦称scriptSig)是提供满足锁定脚本标准所需信息的域特定语言中写入的一段代码。例如,其可包含鲍勃的签名。解锁脚本出现在事务的输入202中。
因此在示出的示例中,Tx0的输出203中的UTXO0包括锁定脚本[Checksig PA],该锁定脚本需要爱丽丝的签名Sig PA,以赎回UTXO0(严格来说,是为了使试图赎回UTXO0的后续事务有效)。[Checksig PA]包含爱丽丝的加密的公-私密钥对中的公钥PA。Tx1的输入202包括指向Tx1的指针(例如,通过其事务ID(TxID0),其在实施例中是整个事务Tx0的哈希值)。Tx1的输入202包括在Tx0中标识UTXO0的索引,以在Tx0的任何其他可能输出中对其进行标识。Tx1的输入202进一步包括解锁脚本<Sig PA>,该解锁脚本包括爱丽丝的加密签名,该签名由爱丽丝通过将其密钥对中的私钥应用于预定的部分数据(有时在密码学中称为“消息”)创建。爱丽丝需要签名以提供有效签名的数据(或“消息”)可通过锁定脚本、节点协议或其组合进行定义。
当新事务Tx1到达节点104时,该节点应用节点协议。这包括一起运行锁定脚本和解锁脚本,以检查解锁脚本是否满足锁定脚本中定义的条件(其中该条件可包括一个或更多个标准)。在实施例中,这涉及并置两个脚本:
<Sig PA><PA>||[Checksig PA]
其中“||”表示并置,“<...>”表示将数据放在堆栈上,“[...]”表示由解锁脚本组成的函数(在该示例中指基于堆栈的语言)。同样,脚本可以使用公共堆栈一个接一个地运行,而不是并置脚本。无论采用哪种方式,当一起运行时,脚本使用爱丽丝的公钥PA(包括在Tx0的输出的锁定脚本中),以认证Tx1的输入中的锁定脚本是否包含爱丽丝签名预期部分的数据时的签名。预期的部分数据本身(“消息”)也需要包括在Tx0中,以便执行此认证。在实施例中,签名的数据包括整个Tx0(因此不需要包括一个单独的元素来明文指定签名的部分数据,因为其本身便已存在)。
本领域技术人员将熟悉通过加密的公私密码进行认证的细节。基本上而言,如果爱丽丝已通过使用其私钥加密签署消息,则给定爱丽丝的公钥和明文中的消息(未加密消息),诸如节点104等其他实体可认证加密版本的消息必须已经由爱丽丝签名。签署通常包括对消息进行散列,签署哈希值和将此标记到消息的明文版本作为签名,从而使公钥的任何持有者能够认证签名。
如果Tx1中的解锁脚本满足Tx0的锁定脚本中指定的一个或更多个条件(因此,在所示示例中,如果在Tx1中提供了爱丽丝的签名并进行认证),则节点104认为Tx1有效。如果是挖矿节点104M,这意味着其将添加至等待工作量证明的事务154池。如果是转发节点104F,则其将事务Tx1转发到网络106中的一个或更多个其他节点104,从而将在整个网络中传播。一旦Tx1有效并包括在区块链150中,这将把Tx0中的UTXO0定义为已花费。请注意,Tx1仅在花费未花费的事务输出203时才有效。如果试图花费另一事务152已经花费的输出,则即使满足所有其他条件,Tx1也将无效。因此,节点104还需要检查先前事务Tx0中引用的UTXO是否已经花费(已经形成另一有效事务的有效输入)。这是为何区块链150对事务152施加定义的顺序很重要的原因之一。在实践中,给定节点104可维护单独的数据库,标记已花费事务152的UTXO 203,但最终定义UTXO是否已花费取决于是否在区块链150中形成了另一有效事务的有效输入。
请注意,在基于UTXO的事务模型中,给定UTXO需要作为一个整体使用。不能“留下”UTXO中定义为已花费的一部分数额,而同时又花费另一部分。但UTXO的数额可以在下一个事务的多个输出之间分割。例如,Tx0的UTXO0中定义的数额可以在Tx1中的多个UTXO之间分割。因此,如果爱丽丝不想将UTXO0中定义的所有数额都给鲍勃,她可以使用剩余部分在Tx1的第二输出中自己找零钱,或者支付给另一方。
在实践中,爱丽丝通常还将需要包括获胜矿工的费用,因为现在仅靠生成事务的奖励币通常不足以激励挖掘。如果爱丽丝未包括矿工的费用,Tx0可能会被矿工节点104M拒绝,因此,尽管技术上有效,但仍然不会传播并包括在区块链150中(如果矿工104M不愿意,矿工协议不会强制他们接受事务152)。在一些协议中,挖掘费不需要其自身的单独输出203(即不需要单独的UTXO)。相反,给定事务152中输入202所指向的总数额与输出203所指定的总数额之间的任何差额都将自动提供给获胜矿工104。例如,假设指向UTXO0的指针是Tx1的唯一输入,而Tx1只有一个输出UTXO1。如果UTXO0中指定的数字资产的数额大于UTXO1中指定的数额,则该差额将自动提供给获胜矿工104M。替代地或附加地,这不一定排除可以在其自身事务152的其中一个UTXO 203中明确指定矿工费用。
另请注意,如果给定事务152的所有输出203中指定的总数额大于其所有输入202所指向的总数额,则这是大多数事务模型中的另一失效依据。因此,此类事务将不会传播或挖掘到区块151中。
爱丽丝和鲍勃的数字资产由区块链150中任何位置的任何事务152中的锁定至他们的未花费UTXO组成。因此,通常情况下,给定方103的资产分散在整个区块链150的各种事务152的UTXO中。区块链150中的任何位置均未存储定义给定方103的总余额的一个数字。客户端应用程序105的钱包功能的作用是将锁定至相应方且在其他随后事务中尚未花费的各种UTXO值整理在一起。通过查询在任何存储节点104S(例如,与相应方的计算机设备102最近或最佳连接的存储节点104S)处存储的区块链150副本,可以实现这一点。
请注意,脚本代码通常用示意图表示(即非精确语言)。例如,可写入[ChecksigPA]表示[Checksig PA]=OP_DUP OP_HASH160<H(Pa)>OP_EQUALVERIFY OP_CHECKSIG。“OP_...”是指脚本语言的特定操作码。OP_CHECKSIG(又称“Checksig”)是脚本操作码,其取两个输入(签名和公钥),并使用椭圆曲线数字签名算法(ECDSA)验证签名的有效性。在运行时,移除脚本中任何出现的签名(‘sig’),但在由‘sig’输入验证的事务中仍保留附加要求,诸如哈希难题。再如,OP_RETURN是脚本语言操作码,用于创建事务的不可花费输出,其可以将元数据储存在事务中,从而将元数据不可变地记录在区块链150中。例如,元数据可包括需存储在区块链中的文件。
签名PA是数字签名。在实施例中,这基于使用椭圆曲线secp256k1的ECDSA。数字签名对特定的数据段进行签名。在实施例中,对于给定事务,签名将对部分事务输入以及全部或部分事务输出进行签名。对输出的特定部分进行签名取决于SIGHASH标志。SIGHASH标志是包含在签名末尾的4字节代码,用于选择签名的输出(并因此在签名时固定)。
锁定脚本有时称为“scriptPubKey”,指其包括相应事务被锁定到的当事方的公钥。解锁脚本有时称为“scriptSig”,指其提供相应的签名。但是更通俗地说,在区块链150的所有应用中,UTXO赎回的条件并不一定包括对签名进行认证。更通俗地说,脚本语言可用于定义任何一个或更多个条件。因此,可以优选更为通用的术语“锁定脚本”和“解锁脚本”。
可选的侧信道
图3示出了用于实现区块链150的另一系统100。除了附加的通信功能外,该系统100与图1所示的内容基本相同。爱丽丝和鲍勃的每台计算机设备102a,120b上的客户端应用程序分别包括附加通信功能。也就是说,这可使爱丽丝103a建立与鲍勃103b分离的侧信道301(在任何一方或第三方的鼓动下)。侧信道301能够独立于P2P网络实现数据交换。此等通信有时候被称为“链下”通信。比如,当交换爱丽丝与鲍勃之间的事务152时不想将该事务(仍未)发布到P2P网络106或挖掘到区块150,可以采用此等通信,直到其中一方选择将该事务广播到网络106。替代地或附加地,该侧信道301可以用于交换任何其他的事务相关数据,例如密钥、协商的数额或条款、数据内容、等等。
通过与P2P覆盖网络106相同的分组交换网络101可建立侧信道301。此外/或者,通过诸如移动蜂窝网络等不同网络、或者诸如本地无线网络等局域网、或者甚至爱丽丝和鲍勃的设备1021,102b之间的直接有线或无线连接可以建立侧信道301。一般而言,本文所指的侧信道301可包括经由一种或更多种联网技术或者通信介质的任何一个或更多个链路,用于“链下off-chain”(即独立于P2P覆盖网络106)交换数据。在多个链路被使用的情况下,整个链下链路的捆绑或集合才可以被称为侧信道301。因此,需要注意的是,虽然爱丽丝和鲍勃通过侧信道301对特定的信息或数据片段或者诸如此类进行交换,但这并不一定意味着所有这些数据片段必须通过相同的链路或甚至同一类型网络进行发送。
公钥密码学
公钥密码学本身是众所周知的,因此在此将仅作简单描述。在许多不同区块链架构中,公钥密码学用作保护消息(例如,事务)的基础。公钥密码学的用途包括公钥加密和数字签名方案。公钥密码学建立在以下原理之上,即某些函数易于计算,但在不具备特殊知识的情况下难以求逆。易于计算意味着在合理的时间范围内计算给定输入(或一组输入)的函数的结果在计算上是可行的,而难以求逆意味着在不具备输入知识的情况下从结果推断该输入(或那些输入)在计算上是不可行的。
在公钥密码学的上下文中,公私密钥对是指公钥(任何人都可以自由获得)和对应的私钥(假定为密钥,因为这仅对特定实体或组是已知的)。
在公钥密码学的上下文中,使用公钥进行加密,同时使用对应的私钥进行解密。在数字签名的上下文中,使用私钥进行签名生成,同时使用对应的公钥进行签名验证。
在区块链上下文中,基于公钥密码学的数字签名用作对事务进行加密签名和验证事务签名的基础。
椭圆曲线加密(ECC)是一种公钥加密学,其利用椭圆曲线的数学特性。“椭圆曲线数字签名算法”(ECDSA)是指一类数字签名方案,其使用ECC作为数字签名生成和验证基础。
在ECC的上下文中,加法、减法和乘法运算分别是椭圆曲线点加法(在本文中表示为“+”)、椭圆曲线点减法(在本文中表示为“-”)和椭圆曲线标量乘法(在本文中表示为“·”)。加法和减法运算分别应用于椭圆曲线上的两个点,并返回椭圆曲线上的第三个点;然而,乘法运算应用于椭圆曲线上的标量和单个点,并返回椭圆曲线上的第二个点。椭圆曲线算术提供了隐藏秘密值的独特功能,并构成了许多现代加密系统的基础。特别地,有限域上椭圆曲线点的标量乘法求逆是一个棘手的问题(在计算上是不可行的)。
私钥V采用整数形式,对应的公钥P是椭圆曲线上从“生成点”G推导出的点P,该点也是椭圆曲线上的一个点,如下所示:
Figure BDA0003643212330000151
其中“·”表示由椭圆曲线参数定义的椭圆曲线上的椭圆曲线标量乘法。对于足够大的V,实际执行V椭圆曲线加法推导P是困难的,即在计算上是不可行的。然而,如果V已知,则P可以通过利用椭圆曲线运算的代数特性来更有效地计算。可用于计算P的高效算法的一个示例是“双加”算法,重要的是,这只有在V已知的情况下才能实现。
相反,如果V未知,则即使G和P已知,也没有在计算上可行的方法来推导出V(即求逆标量乘法)(这就是所谓的“离散对数问题”)。攻击者可以尝试通过从G开始并重复执行椭圆曲线点加法对P进行“蛮力”计算直到达到P;此时,他将知道V是他必须执行的椭圆曲线点加法的次数;但事实证明,这在计算上是不可行的。因此,V在上述意义上满足了陷门的要求。在ECC中,公钥P、生成器密钥G和椭圆曲线是公开的,并且假定是已知的,而私钥V是秘密的。
在区块链系统中,用户或其他实体通常持有用于证明其身份的私钥V,相应的公钥P将通过以下等式计算:
P=V·G
私钥V可用于使用ECDSA对数据m(“消息”)进行签名。例如,可以在以下内容中找到ECDSA的更多信息,其全部内容以引入方式并入本文:“RFC 6979-数字签名算法(DSA)和椭圆曲线数字签名算法(ECDSA)的确定性使用”,Tools.ietf.org,2019年。
加密链接身份
现在参考图4,其示出了一种用于将双方加密链接的方法。下面将就第一方(例如,爱丽丝)103a执行的动作进行描述,但是应当理解的是,第二方(例如,鲍勃)103b可以执行相同动作中的部分或全部动作。第一方和第二方可以是参考图1至图3所述的相同的第一方和第二方。替代地,第一方和/或第二方可以是非区块链用户。通常,每一方操作相应的计算机设备,该计算机设备被配置为执行相应方的动作。
通过利用公钥密码学的加密属性,可以链接双方。下面将就椭圆曲线密码学进行描述,但是应当理解的是,该教导通常适用于其他形式的公钥密码学。椭圆曲线算法可用于仅使用双方的公钥和从共享密钥生成的公钥,来可证明地链接双方的身份。如图4所示,爱丽丝103a和鲍勃103b各自拥有相应的公钥-私钥对。爱丽丝103a拥有第一私钥SA0和对应的第一公钥PA0。类似地,鲍勃拥有第一私钥SB0和对应的第一公钥PB0。此外,爱丽丝103a和鲍勃103b还建立了共享密钥SAB0和对应的第一公钥PAB0。如图3所示,可以使用侧信道301来建立共享密钥。顾名思义,公钥被假定为可由任一方和/或外部第三方访问。相反,私钥被假定为对私钥所有者保密。
可以使用Diffie-Helman密钥交换或其扩展来建立共享密钥。一种用于建立共享密钥的技术是,每一方使用其自己的私钥(可以是也可以不是他们的第一私钥)和其他方的公钥(可以是也可以不是他们的第一公钥)生成共享密钥。例如,爱丽丝103a使用她的私钥SA和鲍勃的公钥PB,同样鲍勃使用他的私钥SB和爱丽丝的公钥PA,如下所示:
SAB0=[SA SB G]x=[SA PB]x=[SB PA]x
其中,[]x表示椭圆曲线点的x坐标。
假设只有爱丽丝103a知道她的私钥SA并且只有鲍勃103b知道他的私钥SB,则只有爱丽丝103a和鲍勃103b可以计算SAB0。可以在不泄露敏感信息(即私钥)的情况下建立共享私钥SAB0。
下表示出了爱丽丝103a和鲍勃103b拥有的公钥和私钥。在该示例中,公钥通过椭圆曲线乘法(P=S·G)与私钥相关,其中G为椭圆曲线生成点。
Figure BDA0003643212330000161
然后,爱丽丝103a可以使用她的第一私钥SA0和共享私钥SAB0生成第二私钥SA1,本文称为身份链接密钥。例如,爱丽丝的身份链接密钥可以生成为SA1=SA0+SAB0。由于只有爱丽丝103a知道SA0,因此只有爱丽丝可以生成SA1和PA1
然而,由于公钥PA0和PAB0可以是公开已知的,因此公钥可以由任何人验证。以下等式示出了爱丽丝103a可以如何使用她的私钥以及另一方可以如何使用公开已知的密钥来推导出PA1的一个示例:
PA1=SA1·G
PA1=(SA0+SAB0)·G
PA1=(SA0·G)+(SAB0·G)
PA1=PA0+PAB0
类似地,鲍勃103b可以使用他的第一私钥SB0和共享私钥SAB0来生成身份链接密钥SB1。例如,鲍勃的身份链接密钥可以生成为SB1=SA0+SB0。由于只有鲍勃知道SB0,因此只有鲍勃可以生成SB1和PB1。可以使用SA0和SAB0的更复杂等式来生成SA1。类似地,可以使用SB0和SAB0的更复杂等式来生成SB1
通过使用共享密钥SAB0,每一方都可以验证另一方的身份。由于只有爱丽丝103a和鲍勃103b知道共享密钥SAB0,因此如果爱丽丝接收到用PAB0签署的消息,则她可以确定该消息来自鲍勃。类似地,如果鲍勃103b接收到用PAB0签署的消息,则她可以确定该消息来自爱丽丝。请记住,需要对应的私钥来用公钥签署消息。
出于安全原因,身份链接密钥仅应使用一次。为了更新身份链接密钥,爱丽丝103a和鲍勃103b必须建立更新后的共享私钥。爱丽丝103a和鲍勃103b可以彼此通信以建立更新后的共享私钥。替代地,爱丽丝103a和鲍勃103b可以各自对初始共享私钥应用同一单向函数(例如,哈希函数)。以预定次数(例如,一次)应用单向函数会生成更新后的共享私钥。以预定次数(例如,一次)对第一更新后的共享私钥应用单向函数会生成第二更新后的私钥。这种方法允许爱丽丝103a和鲍勃103b使用计算效率高的技术在低功率设备上生成更新后的共享私钥。此外,这种方法还会生成共享私钥的层次结构,其中每个更新后的私钥可以链接回初始共享私钥。
生成共享公钥-私钥对序列的一种方法是重复地对初始共享密钥进行哈希处理:
Figure BDA0003643212330000171
生成更新后的共享密钥序列的其他方法是:
1.Pi=[hi(S0)+hi(PA-1-PB-1)]·G
2.Pi=h(Si-1|Si-2)·G
每个更新后的共享私钥可用于生成相应的更新后的身份链接密钥。例如,可以更新爱丽丝103a和鲍勃103b的身份链接密钥,如下所示:
PA(i+1)=PABi+PA0
PB(i+1)=PABi+PB0
更新这些密钥后,相应方不会知晓另一方的身份,其仅知道PA(i+1)或PB(i+1)。然而,如果需要,可以通过签名质询在任何阶段链接一方(例如,爱丽丝103a)的身份。
爱丽丝103a可以使用她的身份链接密钥PAi中的任一个来签署消息并将该消息传输给鲍勃103b或第三方。在区块链的上下文中,爱丽丝103a可以使用她的身份链接密钥中的一个来签署区块链事务的一部分或全部。例如,爱丽丝103a可以签署事务的输入。然后,爱丽丝103a可以将事务传输给鲍勃、第三方或区块链网络的一个或更多个节点,使得事务可以被挖掘到区块链150中。身份链接密钥使爱丽丝103a能够签署区块链事务的任一部分。此外,身份链接密钥允许多于一方签署事务的一部分。例如,爱丽丝103a可以签署事务(的一部分),然后将事务传输给鲍勃103b,鲍勃也会签署同一事务(的一部分),然后爱丽丝103a或鲍勃可以将事务传输给区块链网络。
验证加密链接方
图5示出了第三方(查理)103c可用于验证第一方和第二方是否加密链接的方法。尽管图5未示出,但是查理包括计算机装备,该计算机装备包括处理装置,该处理装置包括一个或更多个处理器,例如一个或更多个中央处理单元(CPU)、加速器处理器、特定应用程序处理器和/或现场可编程门阵列(FPGA)。该计算机设备还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。该存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等磁介质、诸如固态硬盘(SSD)、闪存或电可擦可编程只读存储器(EEPROM)等电子媒介和/或诸如光盘驱动器等光学介质。
如图5所示,爱丽丝103a拥有她的第一私钥SA0、共享私钥SAB0和她的第二私钥(即,她的身份链接密钥)SA1。类似地,鲍勃103b拥有他的第一私钥SB0、共享私钥SAB0和他的第二私钥(即,他的身份链接密钥)SB1。在该示例中,爱丽丝103a或鲍勃103b中的一者可能是受信方。如果爱丽丝103a是受信方,则查理103c可以利用他对爱丽丝身份的信任来信任鲍勃的身份。为此,查理103c可以验证鲍勃拥有与爱丽丝链接的身份链接密钥。查理103c可以让鲍勃103b使用身份链接密钥对共享密钥的依赖来证明他与爱丽丝103a的关系。查理103c从鲍勃103b获得使用鲍勃的第一公钥-私钥对签署的消息。查理103c还从鲍勃103b获得用他的身份链接公钥-私钥对签署的消息。鲍勃103b可以选择要传输给查理103c的消息。替代地,查理103c可以将消息(例如,质询)传输给鲍勃103b以供签署。查理103c还从爱丽丝103a获得用共享公钥-私钥对签署的消息。同样,爱丽丝103a可以通过决定与鲍勃103b的消息来传输消息,或者查理103c可以将消息传输给爱丽丝103a。查理103c可以首先从鲍勃103b或者从爱丽丝103a获得消息。一旦查理103c拥有签署的消息,查理103c就会验证已基于共享私钥生成鲍勃的身份链接密钥。查理103c通过确定是否已基于鲍勃的第一公钥和共享公钥(例如,PB1=PAB0+PB0)生成身份链接公钥来验证这一点。
例如,查理可以使用如图3所示的侧信道301通过互联网从爱丽丝和/或鲍勃获得签署的消息。
一旦验证,这就会证明爱丽丝103a和鲍勃103b之间不可伪造的连接。此外,查理103c还可以执行检查以验证爱丽丝和鲍勃生成的签名是有效签名。此外,查理103c可以使爱丽丝103a和鲍勃103b使用一个或更多个区块链事务来传输消息。例如,签署的消息可以包含在区块链事务的输出中。然后,查理103c可以创建具有输出作为其事务输入的事务。输入可以包含用于验证爱丽丝103a与鲍勃的公钥之间关系的脚本。一旦验证,该关系就会不可变地存储在区块链150上。
虽然已经参考爱丽丝103a和鲍勃103b描述了上述技术,但是第一方和第二方通常可以是同一实体(例如,同一个人、公司、组织等)。例如,第一方可能想要例如通过将其公钥中的一个与仅他们知道的密钥进行链接来将其(受信任的)身份与另一身份进行加密链接。类似地,每一方的第一私钥不需要利用相同的公钥密码学系统。例如,爱丽丝103a可以利用椭圆曲线密码学,而鲍勃则利用RSA加密或DSA加密。类似地,共享私钥以及爱丽丝和/或鲍勃的第一私钥可以利用不同的密码学系统。在一些示例中,如果使用不同的密码学系统,私钥中的至少一个可能需要填充或截断以反映其他私钥方案。
以非区块链系统为例,例如具有足够严密的了解您的客户(KYC)系统的政府或银行。已知用户(例如,爱丽丝103a)将拥有通过公钥PA0连接到她的身份的私钥(SA0)。这可以由银行或政府验证并且可以公开证实。爱丽丝103a可以使用上述方法将她的区块链身份(SB0,PB0)可证明地链接到该链下系统,并且如上所述通过PB1=(SB0+SAB)·G计算她的身份链接密钥,来推导出可全部链接到她的链下身份的后续密钥或密钥层次结构。然后,这可以用作她的区块链身份,并且可以使用PAB0可证明地链接到PA0。这不仅为她的区块链身份提供了KYC特征,还为她在政府和银行的链下账户提供了区块链功能。也就是说,她可以使用身份链接密钥参与区块链系统,这可以用于更新(例如,贷记或借记)她的链下账户,而无需银行或政府发布到区块链150中。
访问链
利用区块链的数据存储能力,一方可以利用固有的加密签名方案作为封装数据的签名。然而,区块链150的底层协议通常是固定的,因此不能针对特定应用进行定制。这需要各方拥有有效的私钥,限制对已经是系统一部分的事物的使用。同样,在不暴露一方私钥的情况下,也无法授权签名。本公开提供了一种可包含在区块链事务内的第二层签名协议,允许在单个事务中包含多方。
单向函数(例如,加密哈希函数)提供了一种高效的确定性方法来模糊输入,使得在给定输出的情况下不可能找到输入。哈希函数(或通常称为单向函数)可以用来生成“令牌”,这些令牌可以提供给各方、由所述各方赎回并在不同方之间转移。令牌可以通过对种子值进行重复哈希处理来生成,从而形成所谓的访问链。
通过使用需要令牌访问的预先约定的事件数(n),用户对密钥(K)应用n次(hn(K))哈希函数(h)。然后,通过在区块链150上发布该值来例如向服务提供商注册该值。然后,一方可以通过在区块链150上提供注册值的原像来赎回令牌,该原像会成为新的注册值。例如,如果令牌tn=hn(K)当前发布在区块链150上,则可以通过提供tn-1=hn-1(K)来赎回令牌。
例如,通过找到愿意购买的买家并就令牌的价格达成一致,令牌所有者可以在任何时候将剩余的令牌转移给另一方。如果爱丽丝103a是当前注册令牌的所有者,则爱丽丝103a提供她的最新原像以向服务提供商证明她的身份,同时提供新的一方的访问链的新生成的注册值。
通过在每次赎回时生成新的私钥Si作为根私钥S0和链ti中的下一个原像之和,即(Si=S0+ti).,这些令牌也可以可证明地链接到公钥。
除了提供令牌之外,访问链还提供了一种链接预定数量的消息的签名的方法。这些签名可以直接应用于数据块,而不是整个事务。以长度为n的哈希链为例。也就是说:
Figure BDA0003643212330000201
在此类链中,tn=h(tn-1)形成哈希链。通过将最终值tn发布到区块链150中,将该最终值注册到给定公钥(或地址)。提供解决最新注册值的原像可以作为事务内可能包含的消息或其他数据的签名。该签名是可公开验证的,并且只能由令牌所有者提供。然而,这种方法很容易受到重放攻击,此时攻击者在查看签名值后就可以创建恶意事务。
本文描述的技术提供了一种安全的两阶段签署过程,其中一个事务用于提供签名,另一个事务用于证实签名。
第一方(例如,爱丽丝103a)拥有区块链150上记录的令牌(记录值)的原像(第一值)。记录值是通过对第一值应用单向函数(例如,哈希函数)而生成的。在想要签署消息时,爱丽丝103a可以通过至少对第一值和消息应用单向函数来为消息生成签名。然后,爱丽丝103a可以构造包含所签署消息的事务,并将事务传输到区块链网络106。然后,爱丽丝103a可以构造包括第一值(即,记录值的原像)的第二事务,并将事务传输到区块链网络。第一事务和第二事务可以是同一事务,也可以是不同事务。
现在,第一值也记录在区块链150上,因此是新注册值(或更新后的注册值)。爱丽丝103a可以重复上述过程来签署第二消息。也就是说,爱丽丝103a通过对消息和新注册值的原像进行哈希处理来生成签名。爱丽丝103a将包括所签署消息的事务(该事务与第二事务可以是同一事务,也可以是不同事务)传输到区块链网络106。然后,爱丽丝103a将包括更新后的注册值的原像的事务传输到区块链网络。可以重复该过程,直到显示出种子值。
在一些示例中,爱丽丝103a不是对原像和消息进行哈希处理,而是对原像和消息的哈希值进行哈希处理。例如,爱丽丝103a可能已经生成具有如上所定义的t0,...,tn的访问链和要签署的第nth个消息mn。值tn+1=h(tn)目前在区块链150上注册,因此,爱丽丝可以使用消息的哈希值和最新注册值的原像两者来构造消息mn的签名,如下所示:
h(tn+h(mn))
其中,同样,tn=hn(K)。此时,如果包含签名的事务包含在区块中并且当包含签名的事务包含在区块中时,不能验证签名。为此,爱丽丝103a构造了证实事务,在该事务中提供了tn并将其注册为区块链150上注册的访问链中的最新值。
通过提供该值,可以通过检查h(tn)=tn+1以及h(ti+h(mi))与签名(第一)事务中提供的数据是否一致来验证访问链。在用户在名义上进行证实的情况下并且在证实完成后,这个两阶段签署过程会发送验证和证实。
爱丽丝103a使用的单向函数可以是基于哈希的消息认证码(HMAC)。HMAC是表格值,其采用消息m和密钥K来提供对消息的验证。HMAC是一种消息认证码(MAC),其利用加密哈希函数的原像和抗碰撞性来防止暴露用于计算HMAC的密钥。这广泛应用于安全消息传输和传输错误检测,因为输入的细微变化通常会导致哈希函数的输出发生重大变化。
将h(x)设为以值x评估的哈希函数。HMAC被定义为:
Figure BDA0003643212330000211
Figure BDA0003643212330000212
这可以用作可直接应用于数据片段(在这种情况下是消息m)的安全签名方案。这可以发布到区块链150中,然后通过提供可以验证签名的密钥K来进行证实。
通过使用密钥K,可以形成n级深的访问链。也就是说:
Figure BDA0003643212330000221
其中,K是最终密钥,tn是区块链150上的初始注册值。然后,爱丽丝103a可以使用HMAC(tn-1,m)作为m的签名。然后,验证方(例如,鲍勃)可以使用新暴露值来检查实际上H(tn-1)=tn,并计算出HMAC′(Kn-1,m)与注册值匹配。原像的暴露作为对签名的证实。同样,可以重复该过程,以为要签署的每个消息生成新签名并对其进行证实。
这种关系使签名具有有限的生存期,直到暴露访问链中的下一个值。此外,这种关系还能够授权签名,因为签名人(爱丽丝103a)可以向可以代表她提交签名的第二方(例如,鲍勃103b)提供(而无需暴露访问链的根)访问链中的下一个值或更多个值。该过程需要访问链持有人与委托人之间具有一定程度的信任,因为原始密钥将由委托人拥有。委托人可能需要提交使用可以连接到他们的公钥签署的至少一个事务。因此,如果委托人滥用密钥,则可以使用事务签名来标识他们。
作为示例性用例,在许多法律场景中,合同条件可能会定期发生变化,以适应不同司法管辖区中引入的新立法。这通常需要以相似或几乎相同的方式更改许多合同。上述方案提供了对使用访问链的有限、预定数量的文档应用签名的方法。以具有法律约束力的合同m0和具有密钥K的签名人为例。签名人可以将tn=hn(K)发布到区块链150中。通过使用发布的的原像hn(K),可以使用消息的原像的哈希值(h(tn-1+h(m0)),然后通过提供tn-1或通过使用HMAC方案HMAC(tn-1,m)来增加安全性而进行的证实来生成签名。如果合同需要修正,那么签名人可以使用链中的下一个值来签署修正案(m1)。因此,所有合同状态的完整记录将不可变地记录在区块链150上并印上时间戳。由于它们直接应用于数据(在这种情况下是合同修正案)并且随后进行了证实,也可将多个签名批处理到单个事务中,从而高效地管理大量合同。
身份链接访问链
如上所述,爱丽丝103a和鲍)103b可以各自推导出可证明地与另一方相关的身份链接密钥。爱丽丝和鲍勃可以各自使用他们相应的身份链接密钥来推导出新的共享密钥,而不是直接使用身份链接密钥。如上所述,爱丽丝和鲍勃的相应身份链接密钥生成为:
PA1=(SA0+SAB0)·G
PB1=(SB0+SAB0)·G
由此,爱丽丝103a和鲍勃103b可以各自通过以下等式计算推导出的共享密钥(“第一个推导出的共享私钥”):
SAB1=[SA1 SB1 G]x=[SA1 PB1]x=[SB1 PA1]x,
其中,[]x表示椭圆曲线点的x坐标。然后,这个新推导出的共享密钥或从中推导出的密钥可以用作访问链中的种子。由于最终会暴露访问链的根,因此使用推导出的密钥不会损害初始共享密钥SAB0,从而确保可以再次创建新链。例如,可以使用SAB1来计算新链。
以100级深的访问链为例,其中tn=hn(SAB1),爱丽丝103a可以生成:
Figure BDA0003643212330000231
爱丽丝可以通过将t100包含在事务中并将事务传输到区块链网络以存储在区块链150上来公开注册它。然后,鲍勃103b可以通过计算自己的值来验证爱丽丝的身份(因为他自己也知道SAB1)。
如果一方怀疑另一方已因暴露SAB1而受到损害,他们可以要求提供质询方案,该方案要求只有原始双方才能执行的下一个所需值。鲍勃103b可以向爱丽丝103a发送质询消息(mc)和预期形式,两者均使用SAB0或从其推导出的密钥进行加密。由于被损害的访问链中没有使用SAB0,因此它也不可能被损害。由此,除了爱丽丝103a之外,任何人都不可能知道质询消息和所需响应形式。如果tn+1是区块链150上记录的最新值,则所需响应可以采用诸如以下形式中的一种:
y=h(hn(SAB1)||mc)
Figure BDA0003643212330000232
其中,∥表示级联,
Figure BDA0003643212330000233
是指异或操作。此处,hn(SAB1)是序列中的紧靠区块链上记录的最新值之前的值。例如,如果t100记录在区块链上,则hn(SAB1)=t99。如果爱丽丝103a用该密钥报告,则鲍勃103b可以确定她的身份。然而,对于链的其余部分,鲍勃103b还可以要求爱丽丝103a以这种形式应答。尽管存在潜在的安全漏洞,链仍可继续使用。然而,如果任何一方需要,也可以使用新推导出的密钥创建新的访问链。
现在将描述示例性用例。审计提供了对各种业务流程的独立评估,包括财务报告、法规合规性和产品质量。具体地,当企业生产的产品最终将落入消费者手中时,第三方审计员可以形成供应链的重要组成部分。目前,这些审计员中有许多无法选择与区块链系统集成。通过使用身份链接访问链,可以使用链接身份来验证证实的真实性,并以审计机构要求的任何频率进行更新。
审计机构必须声明公钥PA1,该公钥将具有足够严格的KYC过程。审计员可以通过计算(例如,通过Diffie-Helman交换计算)的共享密钥对(SAB,PAB1)将他或她的身份链接到审计机构。这可以作为访问链的根,tn=hn(SAB1),其中初始值tn由审计机构注册。然后,个别审计员可以执行所需的合规性调查,并使用上述签名方法提供合规性认证m0,从而在区块链150上记录最新注册值的原像。当必须进行另一次合规性审计时,该认证可能会到期。可以在每次续签时验证所需报告条件,如果不满足这些条件,则不予签字。这提供了不可变的合规性记录,可追溯回个别审计员,并与审计机构建立可验证的联系。
结论
应当理解,上述实施例仅通过示例的方式进行描述。
更概括地说,根据本文公开的教导的第一实例,提供了一种链接第一方和第二方的计算机实现的方法,所述方法由所述第一方执行并且包括:获得第一加密公钥-私钥对,所述第一加密公钥-私钥对包括第一私钥和对应的第一公钥;生成所述第一方和所述第二方已知的第一共享私钥对;以及,生成第二加密公钥-私钥对,所述第二加密公钥-私钥对包括第二私钥和对应的第二公钥,其中所述第二私钥是基于所述第一私钥和所述共享私钥生成的。
根据本文公开的教导的可选的第二实例,可以提供一种根据所述第一实例的方法,包括:生成一个或更多个更新后的共享私钥,每个更新后的共享私钥对所述第一方和所述第二方已知;以及,生成一个或更多个更新后的第二加密公钥-私钥对,所述第二加密公钥-私钥对中的每一个包括相应的更新后的第二私钥和对应的更新后的第二公钥,其中每个相应的更新后的第二私钥是基于所述第一私钥和所述一个或更多个更新后的共享私钥中的不同的一个更新后的共享私钥而生成的。
在一些实施例中,生成多个更新后的共享私钥对,并生成多个更新后的第二加密公钥-私钥对,其中每个相应的更新后的第二私钥是基于第一私钥和多个更新后的共享私钥中的一个不同共享私钥生成的。
根据本文公开的教导的可选的第三实例,可以提供一种根据所述第二实例的方法,其中所述一个或更多个更新后的共享私钥形成密钥序列,所述密钥序列是以所述第一共享私钥开始的,并且其中所述序列中的每个下一个私钥是通过至少对所述序列中的前一个共享私钥应用单向函数生成的。
根据本文公开的教导的可选的第四实例,可以提供一种根据所述第一至第三实例中任一项的方法,包括:获得所述第二方的第二公钥,其中所述第二方的所述第二公钥是基于所述第一共享私钥和所述第二方的第一私钥生成的;以及,基于所述第一方的所述第二私钥和所述第二方的所述第二公钥生成推导出的共享私钥。
根据本文公开的教导的可选的第五实例,可以提供一种根据所述第四实例的方法,包括:生成值序列,其中所述序列中的初始值是所述推导出的共享私钥,或者是通过对所述推导出的共享私钥应用单向函数而生成的,并且其中所述序列中的每个下一个值是通过至少对所述序列中的前一个值应用单向函数而生成的。
根据本文公开的教导的可选的第六实例,可提供一种根据第五实例所述的方法,所述方法包括:将区块链事务传输到区块链网络的一个或更多个节点以使所述区块链事务包含在区块链中,其中所述区块链事务包括值序列中的最新值。
例如,序列中的最新值可以是最终(即,最后一个)值。替代地,序列中的最新值可以是序列中的前一个值。例如,可以将最终第n个值提交给区块链,然后提交第n-1个值、第n-2个值,以此类推。
根据本文公开的教导的可选的第七实例,可以提供一种根据所述第六实例的方法,包括:从所述第二方接收质询消息,所述质询消息基于所述第一共享私钥进行加密;生成对所述质询消息的响应,其中所述响应基于所述质询消息以及所述值序列中紧靠所述最新值之前的值;以及,将所述响应传输给所述第二方。
根据本文公开的教导的可选的第八实例,可以提供一种根据所述第七实例的方法,所述方法包括从所述第二方接收预期形式的所述响应,所述预期形式基于所述第一共享私钥进行加密,并且其中所生成的响应是进一步基于所述预期形式。
根据本文公开的教导的可选的第九实例,可提供一种根据第一实例至第八实例中的任一个所述的方法,其中第一共享私钥是基于第一方的第三加密公钥-私钥对的私钥和第二方的加密公钥-私钥对的公钥生成的。
此外,第一共享私钥还可以由第一方的第三加密公钥-私钥对的第三公钥和第二方的加密公钥-私钥对的私钥生成。
根据本文公开的教导的可选的第十实例,可提供一种根据该第一实例至该第九实例中的任一个所述的方法,其中所述第一方和所述第二方是同一方。
根据本文公开的教导的可选的第十一实例,可提供一种根据该第一实例至该第九实例中的任一个所述的方法,其中所述第一方和所述第二方是不同方。
根据本文公开的教导的可选的第十二实例,可提供一种根据该第一实例至该第十一实例中的任一个所述的方法,包括:用基于所述第一方的所述第二私钥的签名签署消息;以及,将所签署的消息传输给所述第二方和/或第三不同方。
根据本文公开的教导的可选的第十三实例,可提供一种根据该第一实例至该第十二实例中的任一个所述的方法,包括:用基于所述第一方的所述第二私钥的签名签署区块链事务的至少一部分;以及,将所述区块链事务传输给区块链网络的一个或更多个节点以使所述区块链事务包含在所述区块链中。
根据本文公开的教导的第十四实例,提供一种验证第一方与第二方之间链接的计算机实现的方法,所述方法由第三方执行,并且所述方法包括:从所述第二方,获取i)用基于所述第二方的第一私钥的第一签名签署的消息,和ii)与所述第一私钥相对应的第一公钥;从所述第二方,获取iii)用基于所述第二方的第二私钥的第二签名签署的所述消息,和iv)与所述第二私钥相对应的第二公钥;从所述第一方,获取v)用第三签名签署的所述消息,第三签名签署的所述消息是基于仅所述第一方和所述第二方已知的共享私钥、和对应的共享公钥;以及,基于所述共享公钥和所述第二方的所述第一公钥,确定是否已生成所述第二方的所述第二公钥。
根据本文公开的教导的可选的第十五实例,可以提供一种根据所述第十四实例的方法,其中所述确定包括:确定所述第一签名、所述第二签名和所述第三签名是否为有效签名。
根据本文公开的教导的可选的第十六实例,可以提供一种根据所述第十四实例或第十五实例的方法,包括:将所述消息传输给所述第一方和所述第二方。
根据本文公开的教导的可选的第十七实例,可以提供一种根据所述第十四实例或第十六实例的方法,其中所述第一方和所述第二方是同一方。
根据本文公开的教导的可选的第十八实例,可以提供一种根据所述第十四实例或第十六实例的方法,其中所述第一方和所述第二方是不同方。
根据本文公开的教导的第十九实例,提供一种证实第一方用于签署第一消息的第一签名的计算机实现的方法,其中区块链包括记录的事务,所述记录的事务包括注册值,所述注册值是通过对第一值应用单向函数而生成的;所述方法由所述第一方执行,并且所述方法包括:通过至少对所述第一值和所述消息应用单向函数,生成所述第一签名;将第一事务传输给区块链网络的一个或更多个节点以使所述第一事务包含在所述区块链中,所述第一事务包括用所述第一签名签署的所述消息;以及,将第二事务传输给所述区块链网络的一个或更多个节点以使所述第二事务包含在所述区块链中,所述第二事务包括所述第一值。
根据本文公开的教导的可选的第二十实例,可以提供一种根据所述第十九实例的方法,其中所述第一值是更新后的注册值,并且是通过对第二值应用单向函数而生成的,其中所述方法包括:通过至少对所述第二值和所述第二消息应用单向函数来生成第二签名;将第三事务传输给区块链网络的一个或更多个节点以使所述第三事务包含在所述区块链中,所述第三事务包括用所述第二签名签署的所述第二消息;以及,将第四区块链事务传输给所述区块链网络的一个或更多个节点以使所述第四区块链事务包含在所述区块链中,所述第四事务包括所述第二值。
根据本文公开的教导的可选的第二十一实例,可以提供一种根据所述第十九实例或第二十实例的方法,其中所述第一签名是通过至少对以下两项应用单向函数而生成的:i)所述第一值;以及ii)对所述第一消息应用单向函数得出的结果。
例如,可以通过对第一消息进行哈希处理,然后对第一值与第一消息的哈希值的组合进行哈希处理来生成第一签名。
根据本文公开的教导的可选的第二十二实例,可以提供一种根据所述第十九实例至第二十一实例的方法,其中所述第一签名是基于哈希的消息认证码。
根据本文公开的教导的可选的第二十三实例,可以提供一种根据所述第十九实例至第二十二实例的方法,其中所述第二事务的所述传输包括:在将所述第一事务包含在所述区块链中之后,将所述第二事务传输给所述区块链网络的一个或更多个节点。
根据本文公开的教导的可选的第二十四实例,可以提供一种根据所述第十九实例至第二十三实例的方法,其中记录值和所述第一值是值序列的一部分,并且其中所述序列中的每个下一个值是通过对所述序列中的前一个值应用单向函数而生成的。
根据本文公开的教导的可选的第二十五实例,可以提供一种根据所述第二十四实例的方法,所述方法包括将所述值序列中的一个或更多个值传输给第二方。
根据本文公开的教导的可选的第二十六实例,可以提供一种根据所述第十九实例至第二十五实例的方法,其中所述第一事务和所述第三事务是同一事务,和/或其中所述第二事务和所述第四事务是同一事务。
根据本文公开的教导的可选的第二十七实例,可以提供一种根据所述第十九实例至第二十六实例的方法,其中所述单向函数是加密哈希函数。
根据本文公开的教导的第二十八实例,提供一种第一方的计算机设备,所述计算机设备包括:存储器,所述存储器包括一个或更多个存储器单元;以及,处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据第一至第十三实例中任一项所述的方法。
根据本文公开的教导的第二十九实例,提供一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在第一方的计算机设备上运行时,执行根据第一至第十三实例中任一项所述的方法。
根据本文公开的教导的第三十实例,提供一种第三方的计算机设备,所述计算机设备包括:存储器,所述存储器包括一个或更多个存储器单元;以及,处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据第十四至第十八实例中任一项所述的方法。
根据本文公开的教导的第三十一实例,提供一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在第三方的计算机设备上运行时,执行根据第十四至第十八实例中任一项所述的方法。
根据本文公开的教导的第三十二实例,提供一种第一方的计算机设备,所述计算机设备包括:存储器,所述存储器包括一个或更多个存储器单元;以及,处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据第十九至第二十七实例中任一项所述的方法。
根据本文公开的教导的第三十三实例,提供一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在第一方的计算机设备上运行时,执行根据第十九至第二十七实例中任一项所述的方法。
根据本文公开的教导的另一实例,可提供一种方法,所述方法包括第一方、第二方和/或第三方的动作。
根据本文公开的教导的另一实例,可提供一种系统,所述系统包括第一方、第二方和/或第三方的计算机设备。
一旦给出本文的公开内容,所公开技术的其他变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。

Claims (31)

1.一种证实第一方用于签署第一消息的第一签名的计算机实现的方法,其中区块链包括记录的事务,所述记录的事务包括注册值,所述注册值是通过对第一值应用单向函数而生成的;所述方法由所述第一方执行,并且所述方法包括:
通过至少对所述第一值和所述消息应用单向函数,生成所述第一签名;
将第一事务传输给区块链网络的一个或更多个节点以使所述第一事务包含在所述区块链中,所述第一事务包括用所述第一签名签署的所述消息;以及
将第二事务传输给所述区块链网络的一个或更多个节点以使所述第二事务包含在所述区块链中,所述第二事务包括所述第一值。
2.根据权利要求1所述的方法,其中所述第一值是更新后的注册值,并且是通过对第二值应用单向函数而生成的,其中所述方法包括:
通过至少对所述第二值和所述第二消息应用单向函数来生成第二签名;
将第三事务传输给区块链网络的一个或更多个节点以使所述第三事务包含在所述区块链中,所述第三事务包括用所述第二签名签署的所述第二消息;以及
将第四区块链事务传输给所述区块链网络的一个或更多个节点以使所述第四区块链事务包含在所述区块链中,所述第四事务包括所述第二值。
3.根据权利要求1或权利要求2所述的方法,其中所述第一签名是通过至少对以下两项应用单向函数而生成的:i)所述第一值;以及ii)对所述第一消息应用单向函数得出的结果。
4.根据权利要求1至3中任一项所述的方法,其中所述第一签名是基于哈希的消息认证码。
5.根据权利要求1至4中任一项所述的方法,其中所述第二事务的所述传输包括:在将所述第一事务包含在所述区块链中之后,将所述第二事务传输给所述区块链网络的一个或更多个节点。
6.根据权利要求1至5中任一项所述的方法,其中记录值和所述第一值是值序列的一部分,并且其中所述序列中的每个下一个值是通过对所述序列中的前一个值应用单向函数而生成的。
7.根据权利要求6所述的方法,所述方法包括将所述值序列中的一个或更多个值传输给第二方。
8.根据权利要求1至7中任一项所述的方法,其中所述第一事务和所述第三事务是同一事务,和/或其中所述第二事务和所述第四事务是同一事务。
9.根据前述任一项权利要求所述的方法,其中所述单向函数是加密哈希函数。
10.一种验证第一方与第二方之间链接的计算机实现的方法,所述方法由第三方执行,并且所述方法包括:
从所述第二方,获取i)用基于所述第二方的第一私钥的第一签名签署的消息,和ii)与所述第一私钥相对应的第一公钥;
从所述第二方,获取iii)用基于所述第二方的第二私钥的第二签名签署的所述消息,和iv)与所述第二私钥相对应的第二公钥;
从所述第一方,获取v)用第三签名签署的所述消息,第三签名签署的所述消息是基于仅所述第一方和所述第二方已知的共享私钥、和对应的共享公钥;以及
基于所述共享公钥和所述第二方的所述第一公钥,确定是否已生成所述第二方的所述第二公钥。
11.根据权利要求10所述的方法,其中所述确定包括:确定所述第一签名、所述第二签名和所述第三签名是否为有效签名。
12.根据权利要求10或权利要求11所述的方法,所述方法包括:
将所述消息传输给所述第一方和所述第二方。
13.根据权利要求10至12中任一项所述的方法,其中所述第一方和所述第二方是同一方。
14.根据权利要求10至13中任一项所述的方法,其中所述第一方和所述第二方是不同方。
15.一种链接第一方和第二方的计算机实现的方法,所述方法由所述第一方执行并且包括:
获得第一加密公钥-私钥对,所述第一加密公钥-私钥对包括第一私钥和对应的第一公钥;
生成所述第一方和所述第二方已知的第一共享私钥;
生成第二加密公钥-私钥对,所述第二加密公钥-私钥对包括第二私钥和对应的第二公钥,其中所述第二私钥是基于所述第一私钥和所述第一共享私钥生成的;
生成一个或更多个更新后的共享私钥,每个更新后的共享私钥对所述第一方和所述第二方已知;以及
生成一个或更多个更新后的第二加密公钥-私钥对,所述第二加密公钥-私钥对中的每一个包括相应的更新后的第二私钥和对应的更新后的第二公钥,其中每个相应的更新后的第二私钥是基于所述第一私钥和所述一个或更多个更新后的共享私钥中的不同的一个更新后的共享私钥而生成的,其中所述一个或更多个更新后的共享私钥形成密钥序列,所述密钥序列是以所述第一共享私钥开始的,并且其中所述序列中的每个下一个私钥是通过至少对所述序列中的前一个共享私钥应用单向函数生成的。
16.根据权利要求15所述的方法,所述方法包括:
获得所述第二方的第二公钥,其中所述第二方的所述第二公钥是基于所述第一共享私钥和所述第二方的第一私钥生成的;以及
基于所述第一方的所述第二私钥和所述第二方的所述第二公钥生成推导出的共享私钥。
17.根据权利要求16所述的方法,所述方法包括:
生成值序列,其中所述序列中的初始值是所述推导出的共享私钥,或者是通过对所述推导出的共享私钥应用单向函数而生成的,并且其中所述序列中的每个下一个值是通过至少对所述序列中的前一个值应用单向函数而生成的。
18.根据权利要求17所述的方法,所述方法包括:
将区块链事务传输给区块链网络的一个或更多个节点以使所述区块链事务包含在所述区块链中,其中所述区块链事务包括所述值序列中的最新值。
19.根据权利要求17所述的方法,所述方法包括:
从所述第二方接收质询消息,所述质询消息基于所述第一共享私钥进行加密;
生成对所述质询消息的响应,其中所述响应基于所述质询消息以及所述值序列中紧靠所述最新值之前的值;以及
将所述响应传输给所述第二方。
20.根据权利要求19所述的方法,所述方法包括从所述第二方接收预期形式的所述响应,所述预期形式基于所述第一共享私钥进行加密,并且其中所生成的响应是进一步基于所述预期形式。
21.根据权利要求15至20中任一项所述的方法,其中所述第一共享私钥是基于所述第一方的第三加密公钥-私钥对的私钥和所述第二方的加密公钥-私钥对的公钥生成的。
22.根据权利要求15至21中任一项所述的方法,其中所述第一方和所述第二方是同一方。
23.根据权利要求15至21中任一项所述的方法,其中所述第一方和所述第二方是不同方。
24.根据权利要求15至23中任一项所述的方法,所述方法包括:
用基于所述第一方的所述第二私钥的签名签署消息;以及
将所签署的消息传输给所述第二方和/或第三不同方。
25.根据权利要求15至24任一项所述的方法,所述方法包括:
用基于所述第一方的所述第二私钥的签名签署区块链事务的至少一部分;以及
将所述区块链事务传输给区块链网络的一个或更多个节点以使所述区块链事务包含在所述区块链中。
26.第一方的计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或更多个存储器单元;以及
处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据权利要求1至9中任一项所述的方法。
27.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在第一方的计算机设备上运行时,执行根据权利要求1至9中任一项所述的方法。
28.第三方的计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或更多个存储器单元;以及
处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据权利要求10至14中任一项所述的方法。
29.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在第三方的计算机设备上运行时,执行根据权利要求10至14中任一项所述的方法。
30.第一方的计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或更多个存储器单元;以及
处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据权利要求15至25中任一项所述的方法。
31.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在第一方的计算机设备上运行时,执行根据权利要求15至25中任一项所述的方法。
CN202080079276.7A 2019-09-16 2020-08-18 加密链接身份 Pending CN114747172A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1913318.0 2019-09-16
GB1913318.0A GB2587028A (en) 2019-09-16 2019-09-16 Cryptographically linked identities
PCT/IB2020/057766 WO2021053427A1 (en) 2019-09-16 2020-08-18 Cryptographically linked identities

Publications (1)

Publication Number Publication Date
CN114747172A true CN114747172A (zh) 2022-07-12

Family

ID=68281759

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080079276.7A Pending CN114747172A (zh) 2019-09-16 2020-08-18 加密链接身份

Country Status (6)

Country Link
US (1) US20220337427A1 (zh)
EP (1) EP4022839A1 (zh)
JP (1) JP2022548264A (zh)
CN (1) CN114747172A (zh)
GB (1) GB2587028A (zh)
WO (1) WO2021053427A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11949788B1 (en) 2020-11-21 2024-04-02 CodeNotary Inc. System and method to shorten cryptographic proofs
US11728974B2 (en) * 2021-01-29 2023-08-15 Salesforce, Inc. Tenant-based database encryption
US11811926B2 (en) * 2021-05-12 2023-11-07 Mastercard International Incorporated Compliance platform for use with identity data

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EA201891830A1 (ru) * 2016-02-23 2019-02-28 Нчейн Холдингс Лимитед Система и способ управления действиями, связанными с активами, посредством блокчейна
US10540652B2 (en) * 2016-11-18 2020-01-21 Intel Corporation Technology for secure partitioning and updating of a distributed digital ledger
US11256799B2 (en) * 2017-08-29 2022-02-22 Seagate Technology Llc Device lifecycle distributed ledger
GB201721021D0 (en) * 2017-12-15 2018-01-31 Nchain Holdings Ltd Computer-implemented methods and systems
CN116132162A (zh) * 2019-03-27 2023-05-16 创新先进技术有限公司 使用高可用性的可信执行环境检索区块链网络的公共数据

Also Published As

Publication number Publication date
JP2022548264A (ja) 2022-11-17
WO2021053427A1 (en) 2021-03-25
GB2587028A (en) 2021-03-17
EP4022839A1 (en) 2022-07-06
US20220337427A1 (en) 2022-10-20
GB201913318D0 (en) 2019-10-30

Similar Documents

Publication Publication Date Title
EP3966998B1 (en) Hash function attacks
EP3966991B1 (en) Knowledge proof
EP3977673B1 (en) Blockchain transaction comprising runnable code for hash-based verification
US20220263664A1 (en) Blockchain transaction comprising runnable code for hash-based verification
US20220239501A1 (en) Knowledge proof
CN114747172A (zh) 加密链接身份
US20230316272A1 (en) Divisible tokens
CN115136543A (zh) 在区块链网络中使用的认证服务
EP3973661B1 (en) Knowledge proof
CN114531941A (zh) 多标准区块链协议
WO2024041866A1 (en) Blockchain transaction

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination