CN111698198B - 秘密生成和份额分发 - Google Patents

秘密生成和份额分发 Download PDF

Info

Publication number
CN111698198B
CN111698198B CN202010160692.1A CN202010160692A CN111698198B CN 111698198 B CN111698198 B CN 111698198B CN 202010160692 A CN202010160692 A CN 202010160692A CN 111698198 B CN111698198 B CN 111698198B
Authority
CN
China
Prior art keywords
adm2
node
encrypted
blockchain
participant
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.)
Active
Application number
CN202010160692.1A
Other languages
English (en)
Other versions
CN111698198A (zh
Inventor
E.安德鲁拉基
A.德卡罗
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN111698198A publication Critical patent/CN111698198A/zh
Application granted granted Critical
Publication of CN111698198B publication Critical patent/CN111698198B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • 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/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/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)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本申请涉及秘密生成和份额分发。示例操作可以包括以下一项或多项操作:由管理员节点将加密的随机值adm1发送到参与者节点1,其中adm1通过公共密钥PK=PK_adm+PK1加密,其中PK_adm是管理员节点的公共密钥,并且PK1是参与者节点1的公共密钥;由管理员节点从参与者节点1接收秘密S1,其中S1是通过PK加密的随机值;由管理员节点存储通过PK加密的秘密S=(S1+adm1);由管理员节点将通过PK1的加密值(S+adm2’‑adm2)和PK2发送到参与者节点1以进行解密,其中adm2’和adm2是随机值,并且PK2是参与者节点2的公共密钥;以及响应于参与者节点1已经向参与者节点2发送了通过PK2加密的(S‑adm2+adm2’)的确认,由管理员节点向参与者节点2发送adm2’,以计算秘密S2。

Description

秘密生成和份额分发
技术领域
本申请一般涉及数据库存储***,并且更具体地,涉及区块链网络中的秘密生成和份额分发(share distribution)。
背景技术
集中式数据库在一个位置处的单个数据库(例如,数据库服务器)中存储和维护数据。该位置通常是中央计算机,例如,台式中央处理单元(CPU)、服务器CPU或大型计算机。存储在集中式数据库中的信息通常可以从多个不同的点访问。多个用户或客户端工作站可以在集中式数据库上同时工作,例如,基于客户端/服务器配置。集中式数据库因为它的单个位置而易于管理、维护和控制,特别是出于安全目的。在集中式数据库中,数据冗余被最小化,因为所有数据的单个存储位置也意味着给定的数据集合只有一个主记录。
然而,集中式数据库存在明显的缺点。例如,集中式数据库具有单点故障。特别是,如果没有容错考虑,并且出现硬件故障(例如,硬件、固件和/或软件故障),数据库中的所有数据都会丢失,并且所有用户的工作都会中断。此外,集中式数据库高度依赖于网络连接。因此,连接越慢,每次数据库访问所需的时间量就会增加。另一缺点是,当集中式数据库由于单个位置而经历高流量时,会出现瓶颈。此外,集中式数据库提供对数据的有限访问,因为数据库只维护数据的一个副本。因此,多个设备无法在不会造成重大问题或覆盖存储的数据的风险的情况下同时访问同一条数据。此外,由于数据库存储***的数据冗余很少甚至没有,意外丢失的数据很难从备份存储中获取,除非通过手动操作。
传统上,集中式数据库受到搜索能力低、缺乏安全性和交易速度慢的限制。因此,需要一种基于区块链的解决方案来克服这些重大缺陷。
区块链要求去中心化密钥生成——即密钥生成过程,其中多个不相互可信的参与者提供他们的份额(贡献随机性)。结果,每个参与者可以获得生成的密钥的份额,并且所有参与者可以一起获得***的单个公共密钥。
因此,期望在没有任何新成员知道完整密钥的情况下,在分离的实体组的成员之间分发(没有单个实体知道的)相同密钥的新份额。
发明内容
一个示例实施例提供了连接到参与者1和2节点的管理员节点的处理器和存储器,其中处理器被配置为执行以下一项或多项操作:将加密的随机值adm1发送到参与者节点1,其中adm1通过公共密钥PK=PK_adm+PK1加密,其中PK_adm是管理员节点的公共密钥,并且PK1是参与者节点1的公共密钥;从参与者节点1接收秘密S1,其中S1是通过PK加密的随机值;存储通过PK加密的秘密S=(S1+adm1);将通过PK1加密的值(S+adm2’-adm2)和PK2发送到参与者节点1以进行解密,其中adm2’和adm2是随机值,并且PK2是参与者节点2的公共密钥;以及响应于参与者节点1已经向参与者节点2发送了通过PK2加密的(S-adm2+adm2’)的确认,向参与者节点2发送adm2’以计算秘密S2。
另一示例实施例提供了一种方法,该方法包括以下一项或多项操作:由管理员节点将加密的随机值adm1发送到参与者节点1,其中adm1通过公共密钥PK=PK_adm+PK1加密,其中PK_adm是管理员节点的公共密钥,并且PK1是参与者节点1的公共密钥;由管理员节点从参与者节点1接收秘密S1,其中S1是通过PK加密的随机值;由管理员节点存储通过PK加密的秘密S=(S1+adm1);由管理员节点将通过PK1加密的值(S+adm2’-adm2)和PK2发送到参与者节点1以进行解密,其中adm2’和adm2是随机值,并且PK2是参与者节点2的公共密钥;以及响应于参与者节点1已经向参与者节点2发送了通过PK2加密的(S-adm2+adm2’)的确认,由管理员节点向参与者节点2发送adm2’以计算秘密S2。
另一示例实施例提供了一种包括指令的非暂时性计算机可读介质,当被处理器读取时,该指令使得处理器执行以下一项或多项操作:将加密的随机值adm1发送到参与者节点1,其中adm1通过公共密钥PK=PK_adm+PK1加密,其中PK_adm是管理员节点的公共密钥,并且PK1是参与者节点1的公共密钥;从参与者节点1接收秘密S1,其中S1是通过PK加密的随机值;存储通过PK加密的秘密S=(S1+adm1);将通过PK1加密的值(S+adm2’-adm2)和PK2发送到参与者节点1以进行解密,其中adm2’和adm2是随机值,并且PK2是参与者节点2的公共密钥;以及响应于参与者节点1已经向参与者节点2发送了通过PK2加密的(S-adm2+adm2’)的确认,向参与者节点2发送adm2’以计算秘密S2。
附图说明
图1示出了根据示例实施例的包括分类账数据库的***的网络图。
图2A示出了根据示例实施例的示例对等节点配置。
图2B示出了根据示例实施例的另一对等节点配置。
图3示出了根据示例实施例的经许可的网络。
图4A示出了根据示例实施例的流程图。
图4B示出了根据示例实施例的另一流程图。
图5A示出了根据示例性实施例的被配置为执行本文描述的一项或多项操作的示例***。
图5B示出了根据示例性实施例的被配置为执行本文描述的一项或多项操作的另一示例***。
图5C示出了根据示例实施例的合约方之间的示例智能合约配置和被配置为在区块链上强制执行智能合约条款的中介服务器。
图5D示出了根据示例实施例的另一附加示例***。
图6A示出了根据示例实施例的将新数据添加到数据库的过程。
图6B示出了根据示例实施例的包括新数据的数据块的内容。
图7示出了支持一个或多个示例实施例的示例***。
具体实施方式
容易理解的是,如本文附图中一般描述和示出的,本发明的组件可以以多种不同的配置来布置和设计。因此,如附图所示,方法、装置、非暂时性计算机可读介质和***中的至少一个的实施例的以下详细描述不旨在限制所要求保护的本申请的范围,而仅仅是所选实施例的代表。
贯穿本说明书描述的本发明的当前特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。例如,在整个说明书中,短语“示例实施例”、“一些实施例”或其它类似语言的使用指的是结合实施例描述的特定特征、结构或特性可以包括在至少一个实施例中的事实。因此,在整个说明书中出现的短语“示例实施例”、“在一些实施例中”、“在其它实施例中”或其它类似的语言不一定都指同一组实施例,并且所描述的特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。
此外,虽然术语“消息”可能已经在实施例的描述中使用,但是本申请可以应用于许多类型的网络数据,诸如分组、帧、数据报等。术语“消息”还包括分组、帧、数据报及其任何等同物。此外,虽然在示例性实施例中可以描绘某些类型的消息和信令,但是它们不限于某些类型的消息,并且本申请不限于某些类型的信令。
示例实施例提供了方法、***、组件、非暂时性计算机可读介质、设备和/或网络,其提供在区块链网络中的秘密生成和份额分发。
去中心化数据库是一种分布式存储***,包括相互通信的多个节点。区块链是去中心化数据库的示例,其包括仅附接(append-only)的不可变数据结构,类似于能够维护相互不信任的各方之间的记录的分布式分类账。不信任的各方在本文中被称为对等体或对等节点。每个对等体维护数据库记录的副本,并且在分布式对等体之间没有达成共识的情况下,没有单个对等体可以修改数据库记录。例如,对等体可以执行共识协议来验证区块链存储交易,将存储交易分组为块,并在块上构建散列链。为了一致性,该过程通过根据需要对存储交易进行排序来形成分类账。在公共或不需许可的区块链中,任何人都可以参与,无需特定身份。公共区块链通常涉及本地加密货币,并使用基于各种协议(诸如工作证明(Proofof Work,PoW))的共识。另一方面,需要许可的区块链数据库提供了一种***,该***可以确保实体组之间的互动,这些实体共享共同的目标,但彼此之间并不完全信任,诸如交换资金、货物、信息等的企业。
区块链操作任意的可编程逻辑,该可编程逻辑适合去中心化存储方案,并且被称为“智能合约”或“链码”。在某些情况下,管理功能和参数可能存在专门的链码,称为***链码。智能合约是可信的分布式应用,其利用区块链数据库的防篡改属性和节点之间的底层协议(称为背书(endorsement)或背书策略)。一般来说,区块链交易在提交(commit)给区块链之前通常必须被“背书”,而未被背书的交易则被忽略。典型的背书策略允许链码以背书所必需的对等节点的集合的形式指定交易的背书者。当客户端将交易发送到背书策略中指定的对等体时,执行交易以验证交易。在验证之后,交易进入排序阶段,在该阶段中使用共识协议来产生分组到块中的、经背书的交易的排序序列。
节点是区块链***的通信实体。“节点”可以执行逻辑功能,即不同类型的多个节点可以在同一物理服务器上运行。节点被分组在信任域中,并且以各种方式与控制它们的逻辑实体相关联。节点可以包括不同的类型,诸如向背书者(例如,对等体)递交(submit)交易调用(transaction-invocation)并向排序服务(例如,排序节点)广播交易提案(transaction-proposal)的客户端或递交客户端节点。另一类型的节点是对等节点,其可以接收客户端递交的交易、提交交易、并维护区块链交易的分类账的状态和副本。对等体也可以具有背书者的角色,尽管这不是所要求的。排序服务节点或排序者是为所有节点运行通信服务的节点,并实现交付保证,诸如在当提交交易和修改区块链的世界状态时向***中的每个对等节点进行的广播,区块链的世界状态是通常包括控制和设置信息的初始区块链交易的另一个名称。
分类账是区块链所有状态转换的有序的、防篡改的记录。状态转换可以从由参与者(例如,客户端节点、排序节点、背书者节点、对等节点等)递交的链码调用(chaincodeinvocation)(即,交易)产生。交易可以使资产键-值对的集合作为一个或多个操作数被提交到分类账,其中操作数诸如创建、更新、删除等。该分类账包括区块链(也称为链),其用于在块中存储不可变的、有序的记录。该分类账还包括状态数据库,该状态数据库维护区块链的当前状态。每个通道通常有一个分类账。每个对等节点为其所属的每个通道维护分类账的副本。
链是交易日志,该交易日志被构造成散列链接的(hash-linked)块,并且每个块包含N个交易的序列,其中N等于或大于1。块头(block header)包括块的交易的散列,以及前一个块的头部的散列。这样,分类账上的所有交易都可以被顺序排序并被加密链接在一起。因此,在不破坏散列链接的情况下篡改分类账数据是不可能的。最近添加的区块链块的散列表示链上在它之前已经到来的每个交易,这使得确保所有对等节点处于一致和可信的状态成为可能。该链可以存储在对等节点文件***(即,本地、附加存储、云等)上,有效地支持区块链工作负载的仅附接性质。
不可变分类账的当前状态表示链交易日志中包含的所有键的最新值。因为当前状态表示通道已知的最新键值,所以当前状态有时被称为世界状态。链码调用根据分类账的当前状态数据执行交易。为了使这些链码交互有效,键的最新值可以存储在状态数据库中。状态数据库可以只是到链的交易日志中的索引视图,因此状态数据库可以在任何时候从链重新生成。状态数据库可以在对等节点启动时以及交易被接受之前自动恢复(或生成,如果需要的话)。
本文描述和描绘的当前解决方案的一些益处包括用于在区块链网络中的秘密生成和份额分发的方法和***。示例性实施例通过扩展数据库的特征来解决时间和信任的问题,数据库的特征诸如不可变性、数字签名和作为单一的真实来源。示例性实施例提供了用于在基于区块链的网络中的秘密生成和份额分发的解决方案。基于资产类型和基于智能合约管理资产的规则,区块链网络可以是同质的。
区块链与传统数据库的不同之处在于,区块链不是一个中央存储,而是去中心化的、不可变的、安全的存储,其中节点必须共享对存储中记录的改变。在区块链固有的并且有助于实现区块链的一些属性包括但不限于,不可变的分类账、智能合约、安全性、隐私性、去中心化、共识、背书、可访问性等,这些将在本文中进一步描述。根据各个方面,由于区块链固有的和独特的不可变的责任制(accountability)、安全性、隐私性、经许可的去中心化、智能合约的可用性、背书和可访问性,实现了用于在区块链网络中的秘密生成和份额分发的***。特别是,区块链分类账数据是不可变的,这提供了用于在区块链网络中的秘密生成和份额分发的有效方法。此外,在区块链使用加密提供了安全性并建立了信任。智能合约管理资产的状态以完成生命周期。区块链的示例是许可去中心化的。因此,每个最终用户可以都有自己的分类账副本供访问。区块链网络上可以有多个组织(和对等体)。关键组织可以充当背书对等体,以验证智能合约执行结果、读取-集合和写入-集合。换句话说,区块链固有特征提供了用于秘密生成和份额分发的方法的有效实现。
示例实施例的益处之一是,其通过实现用于在基于区块链的***的秘密生成和份额分发的方法来改进计算***的功能。通过本文描述的区块链***,计算***可以通过提供对诸如分布式分类账、对等体、加密技术、MSP、事件处理等的能力的访问来执行用于在区块链网络中的秘密生成和份额分发的功能。此外,区块链能够创建商业网络,并使任何用户或组织都可以参与进来。因此,区块链不仅仅是数据库。区块链具备创建用户和场内/场外组织的商业网络的能力,从而以智能合约的形式协作和执行服务过程。
示例实施例提供了优于传统数据库的许多益处。例如,通过区块链,这些实施例提供了区块链固有的和独特的不可变责任制、安全性、隐私性、经允许的去中心化、智能合约的可用性、背书以及可访问性。
同时,传统数据库不能用于实现示例实施例,因为其没有将所有方带到商业网络上,其没有创建可信的协作,并且没有提供数字资产的有效存储。传统数据库不提供防篡改存储,也不提供正在被存储的数字资产的保存。因此,所提案的用于在区块链网络中的秘密生成和份额分发的方法不能在传统数据库中实现。
同时,如果要使用传统数据库来实现示例实施例,则示例实施例将遭受不必要的缺点,诸如搜索能力、缺乏安全性和交易速度慢。此外,根本不可能实现在区块链网络中的秘密生成和份额分发的自动化方法。
因此,示例实施例提供了针对在区块链网络中秘密生成和份额分发的技术/领域中的问题的特定解决方案。
示例实施例还改变了数据如何存储在区块链的块结构中。例如,数字资产数据可以安全地存储在数据块的特定部分内(即,在头部内、在数据段内或在元数据内)。通过将数字资产数据存储在区块链的数据块内,数字资产数据可以通过块的散列链接的链被附接到不可变的区块链分类账。在一些实施例中,通过使与数字资产相关联的个人数据不与资产一起存储在区块链的传统块结构内,数据块可以不同于传统数据块。通过移除与数字资产相关联的个人数据,区块链可以提供基于不可变的责任制和安全性的匿名优势。
根据示例性实施例,一种方法可以允许管理员利用管理员信任的参与者的集合来生成秘密S。秘密S可以以联合方式生成,而这些参与者中的任何一个都不知道完整秘密。管理员可以为其自己以及为新参与者生成秘密S的新的份额对,而没有任何新参与者知道该秘密S。管理员自己也不被信任以知道该秘密。换句话说,可以以保护隐私的方式分发以下密钥份额:
管理员|参与者1|参与者2||参与者3...|参与者k||总体秘密
adm1|s1|-|-|...|-||s
adm2|--|s2|-|...|-||s
adm3|--|-|s3|...|-||s
admk|--|-|-|...|sk||s
这种机制可以用在多个应用中,在这些应用中,要求在不同的实体对之间进行背书,而无需暴露实际的实体对。一个示例是超级分类账(Hyperledger)结构。根据示例性实施例,需要强制执行以下要求:
-在所有参与者中对S进行保密;
-为了正确背书消息M,要求管理员的协作;
-在没有参与者k的协作的情况下,任何其它参与者都不能使用管理员对消息M的背书以及管理员与参与者k的配对来产生有效的背书。
管理员被认为是诚实但好奇的。特别是,管理员被假设为不会与组中的任何参与者串通以至于他们会彼此共享密钥。参与者可能相互串通以获取管理员的秘密。
根据示例性实施例,可以使用下面的协议。秘密S的生成要求管理员和(多个)现有参与者(例如,参与者1)的协作。在半同态(semi-homomorphic)加密方案下,让(PK_adm,SK_adm)和(PK1,SK1)分别是管理员和参与者1的加密公共-秘密密钥对。该协议按如下方式实现:
1.管理员随机选择adm1,并通过公共密钥PK对adm1进行加密,其中PK=PK_adm+PK1;
2.管理员将加密的adm1发送到参与者1;
3.参与者1随机选择s1,并通过公共密钥PK对s1进行加密,其中PK=PKadm+PK1;
4.参与者1将加密的s1发送到管理员;
5.管理员和参与者1可以本地保存[s]_PK=[s1+adm1]_PK=[adm1]_PK+[s1]_PK。
现在,管理员和参与者1具有使用PK表示S的密文。
现在让具有加密密钥-对(PK2,SK2)的参与者2加入该组。需要为此参与者发放与S匹配的秘密。该协议可以按如下方式实现:
1.管理员随机选择adm2’和adm2;
管理员计算[adm2’-adm2]_PK,其中PK=PKadm+PK1,并且
计算[s-adm2+adm2’]_PK=[s]_[PK]+[adm2’-adm2]_PK;
管理员使用SK_adm将[s+adm2’-adm2]_PK解密为[s+adm2’-adm2]_PK1;
2.管理员向参与者1发送:[s-adm2+adm2’]_PK1和PK2;
3.参与者1使用SK1解密[s-adm2+adm2’]_PK1,并验证PK2属于另一用户,并使用PK2将[s-adm2+adm2’]加密为[s-adm2+adm2’]_PK2;
4.参与者1向参与者2发送:[s-adm2+adm2’]_PK2;
5.管理员向参与者2发送:adm2’;
6.参与者2:使用SK2解密[s-adm2+adm2’]_PK2,并计算s2=s-adm2-adm2’+adm2’=s-adm2。
如果参与者1知道新成员的身份,则可以使用公共累加器值,其中链中所有参与者的公共加密密钥被添加(例如,Acc_PK),并且相应地实现步骤2、4和5:
-在步骤1中,管理员附加地计算对于PK2的盲法(blinding)(即PK2*=PK2+PK2’),以及ZKPoK。PK2*由两个密钥组成,其中一个密钥的秘密为管理员所知道,第二个密钥是Acc_PK的成员(不包括PKadm)。让PROOF为相关的证明。
-在步骤2中,PROOF也被发送到参与者1,参与者1在步骤3中验证PROOF,并在PK2*下加密s-adm2+adm2’;
-在步骤5中,管理员联系参与者2,并发送[s-adm2+adm2’]_PK2*与adm2’和SK2’,其中SK2’是与PK2’(即PK2*-PK2)相关联的秘密;
-在步骤6中,参与者2计算SK2*=SK2+SK2’并使用SK2*解密其接收的密文。
图1示出了根据示例实施例的在区块链网络中的秘密生成和份额分发的逻辑网络图。
参考图1,示例网络100包括通过区块链网络106连接到参与者节点105和107的管理员节点102。多个其它参与者节点可以连接到管理员节点102。虽然该示例仅详细描述了一个管理员节点102,但是多个这样的节点可以连接到区块链106。应当理解,管理员节点102可以包括附加组件,并且在不脱离本文公开的管理员节点102的范围的情况下,可以移除和/或修改本文描述的组件中的一些。管理员节点102可以是计算设备或服务器计算机等,并且可以包括处理器104,处理器104可以是基于半导体的微处理器、中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或另一硬件设备。尽管描绘了单个处理器104,但是应当理解,在不脱离管理员节点102***的范围的情况下,管理员节点102可以包括多个处理器、多个核等。
管理员节点102还可以包括非暂时性计算机可读介质112,其上可以存储可由处理器104执行的机器可读指令。机器可读指令的示例被示为114-122,并在下面进一步讨论。非暂时性计算机可读介质112的示例可以包括包含或存储可执行指令的电子、磁、光或其它物理存储设备。例如,非暂时性计算机可读介质112可以是随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、硬盘、光盘或其它类型的存储设备。
处理器104可以获取、解码和执行机器可读指令114,以向参与者节点1(105)发送加密的随机值adm1,其中adm1通过公共密钥PK=PK_adm+PK1加密,其中PK_adm是管理员节点102的公共密钥,并且PK1是参与者节点1(105)的公共密钥。区块链106网络可以被配置为使用一个或多个智能合约,该智能合约管理多个参与者节点(105、107等)的交易。
处理器104可以获取、解码和执行机器可读指令116,以从参与者节点1(105)接收秘密S1,其中S1是通过PK加密的随机值。处理器104可以获取、解码和执行机器可读指令118,以存储通过PK加密的秘密S=(S1+adm1)。处理器104可以获取、解码和执行机器可读指令120,以将通过PK1加密的值(S+adm2’-adm2)和PK2发送到参与者节点1(105)以进行解密,其中adm2’和adm2是随机值,并且PK2是参与者节点2(107)的公共密钥。处理器104可以获取、解码和执行机器可读指令122以响应于参与者节点1(105)已经向参与者节点2(107)发送了通过PK2加密的(S-adm2+adm2’)的确认,将adm2’发送到参与者节点2(107)以计算秘密S2。adm2’和adm2可以是由处理器104选择的随机值。
图2A示出了根据示例实施例的区块链体系结构配置200。参考图2A,区块链体系结构200可以包括某些区块链元素,例如,一组区块链节点202。区块链节点202可以包括一个或多个节点204-210(这四个节点仅通过示例来描绘)。这些节点参与许多动作,诸如区块链交易添加和验证过程(共识)。一个或多个区块链节点204-210可以基于背书策略对交易进行背书,并且可以为体系结构200中的所有区块链节点提供排序服务。区块链节点可以发起区块链认证,并试图写入存储在区块链层216中的区块链不可变分类账,该分类账的副本也可以存储在基础物理基础设施214上。区块链配置可以包括一个或多个应用224,一个或多个应用224链接到应用编程接口(API)222以访问和执行存储的程序/应用代码220(例如,链码、智能合约等),其可以根据参与者寻求的定制配置来创建,并且可以维护他们自己的状态、控制他们自己的资产以及接收外部信息。这可以作为交易来部署,并且经由附接到分布式分类账来安装在所有区块链节点204-210上。
区块链基础或平台212可以包括区块链数据、服务(例如,加密信任服务、虚拟执行环境等)以及基础物理计算机基础设施的各种层,这些层可用于接收和存储新交易,并为寻求访问数据条目的审计员提供访问。区块链层216可以暴露接口,该接口提供对处理程序代码和参与物理基础设施214所必需的虚拟执行环境的访问。加密信任服务218可用于核实交易(诸如资产交换交易),并且保持信息私有。
图2A的区块链体系结构配置可以经由区块链平台212暴露的一个或多个接口和提供的服务来处理和执行程序/应用代码220。代码220可以控制区块链资产。例如,代码220可以存储和传送数据,并且可以由节点204-210以智能合约和链码的形式执行,该链码与受制于其执行的条件或其它代码元素相关联。作为非限制性示例,可以创建智能合约来执行提醒、更新和/或受制于改变、更新等的其它通知。智能合约本身可用于识别与授权和访问要求以及分类账的使用相关的规则。例如,秘密共享信息226可以由包括在区块链层216中的一个或多个处理实体(例如,虚拟机)来处理。结果228可以包括反映所生成的秘密的份额的数据块。物理基础设施214可用于获取本文描述的任何数据或信息。
在链码内,可以经由高级应用和编程语言创建智能合约,并且然后将其写入区块链的块中。智能合约可以包括利用区块链(例如,区块链对等体的分布式网络)注册、存储和/或复制的可执行代码。交易是智能合约代码的执行,该智能合约代码可以响应于与满足与智能合约相关联的条件而执行。智能合约的执行可以触发对数字区块链分类账的状态的(多个)可信修改。由智能合约执行引起的对区块链分类账的(多个)修改可以通过一个或多个共识协议在区块链对等体的分布式网络中自动复制。
智能合约可以将数据以键-值对的格式写入区块链。此外,智能合约代码可以读取存储在区块链中的值,并在应用操作中使用它们。智能合约代码可以将各种逻辑运算的输出写入区块链。该代码可用于在虚拟机或其它计算平台中创建临时数据结构。写入区块链的数据可以是公共的和/或可以被加密并且维护为私有。智能合约使用/生成的临时数据由提供的执行环境持有在存储器中,并且一旦识别出区块链所需的数据,就将其删除。
链码可以包括智能合约的代码解释,并具有附加特征。如本文所述,链码可以是部署在计算网络上的程序代码,在该计算网络上,链码由多个链验证器在共识过程中一起执行和验证。链码接收散列,并从区块链获取与通过使用先前存储的特征提取器创建的数据模板相关联的散列。如果散列标识符的散列和从存储的标识符模板数据创建的散列匹配,则链码发送对所请求的服务的授权密钥。链码可以向区块链写入与加密细节相关联的数据。在图2A中,秘密生成可以包括智能合约的执行。一个功能可以是在用于记录秘密的份额的分类账上提交与执行智能合约相关的交易,该份额可以被提供给节点204-210中的一个或多个。
图2B示出了根据示例实施例的区块链的节点之间的交易流250的示例。参考图2B,交易流可以包括由应用客户端节点260向背书对等节点281发送交易提案291。背书对等体281可以核实客户端签名并执行链码函数来启动交易。输出可能包括链码结果、在链码中读取的键/值版本的集合(读取集合),以及在链码中写入的键/值的集合(写入集合)。如果被批准,提案响应292连同背书签名一起被发送回客户端260。客户端260将背书组装到交易有效载荷293中,并将其广播到排序服务节点284。排序服务节点284然后将排序的交易作为块传递给通道上的所有对等体281-283。在提交到区块链之前,每个对等体281-283可以验证交易。例如,对等体可以检查背书策略,以确保指定对等体的正确配给已经对结果签名,并且针对交易有效载荷293认证了签名。
再次参考图2B,客户端节点260通过构造请求并将其发送到作为背书者的对等节点281来发起交易291。客户端260可以包括利用支持的软件开发工具包(softwaredevelopment kit,SDK)(诸如NODE、JAVA、PYTHON等)的应用,其利用可用的API来生成交易提案。该提案是对调用链码函数的请求,以便可以读取数据和/或将其写入分类账(即,为资产编写新的键值对)。SDK可以用作填隙片(shim),以将交易提案打包成适当体系结构的格式(例如,通过远程过程调用(remote procedure call,RPC)的协议缓冲区),并利用客户端的加密凭证来产生交易提案的唯一签名。
作为响应,背书对等节点281可以核实(a)交易提案是良好形成的,(b)交易在过去还没有被递交(重放攻击保护),(c)签名是有效的,以及(d)递交者(在示例中,是客户端260)被适当授权在该通道上执行提案的操作。背书对等节点281可以将交易提案输入作为调用的链码函数的参数。然后,针对当前状态数据库执行链码,以产生包括响应值、读取集合和写入集合的交易结果。但是,此时不会对分类账进行更新。在292中,值的集合连同背书对等节点281的签名作为提案响应292被传递回客户端260的SDK,客户端260解析应用要消耗的有效载荷。
作为响应,客户端260的应用检查/验证背书对等体的签名,并比较提案响应以确定提案响应是否相同。如果链码仅查询分类账,则应用将检查查询响应,并且通常不会将交易递交给排序节点服务284。如果客户端应用打算将交易递交给排序节点服务284以更新分类账,则该应用在递交之前确定指定的背书策略是否已被满足(即,交易所需的所有对等节点是否都对该交易进行了背书)。这里,客户端可以只包括交易的多方中的一方。在这种情况下,每个客户端可能都有自己的背书节点,并且每个背书节点将需要对交易进行背书。该体系结构是这样的,即使应用选择不检查响应或以其他方式转发未经背书的交易,背书策略仍将由对等体强制执行并且在提交验证的阶段维持。
在成功检查之后,在步骤293中,客户端260将背书组装(assemble)到交易中,并在交易消息中向排序节点284广播交易提案和响应。该交易可以包含读取/写入集合、背书对等体的签名和通道ID。排序节点284不需要检查交易的全部内容来执行其操作。相反,排序节点284可以简单地从网络中的所有通道接收交易,按通道按时间顺序对它们排序,并为每个通道创建交易块。
交易块在通道上从排序节点284传递到所有对等节点281-283。块内的交易294被验证,以确保满足任何背书策略,并确保自交易执行生成读取集合以来,对于读取集合变量的分类账状态没有变化。块中的交易被标记为有效或无效。此外,在步骤295中,每个对等节点281-283将块附接到通道的链,并且对于每个有效交易,写入集合被提交到当前状态数据库。发出一个事件,以通知客户端应用交易(调用)已经不可变地附接到链,并通知交易是经过验证的还是未经过验证的。
图3示出了经许可的区块链网络300的示例,其特征在于分布式、去中心化的对等的体系结构,以及管理用户角色和许可的证书授权机构318。在该示例中,区块链用户302可以向许可的区块链网络310递交交易。在该示例中,交易可以是部署、调用或查询,并且可以通过利用SDK的客户端侧应用、直接通过REST API等来发放。可信商业网络可以提供对监管者***314的访问,诸如审计员(例如美国股票市场中的证券交易委员会)。同时,节点308的区块链网络运营商***管理成员许可,诸如将监管者***310注册为“审计员”并将区块链用户302注册为“客户端”。审计员可以被限制为只能查询分类账,而客户端可以被授权部署、调用和查询某些类型的链码。
区块链开发者***316编写链码和客户端侧应用。区块链开发者***316可以通过REST接口将链码直接部署到网络。为了在链码中包括来自传统数据源330的凭证,开发者***316可以使用带外连接来访问数据。在该示例中,区块链用户302通过对等节点312连接到网络。在进行任何交易之前,对等节点312从证书授权机构318获取用户的注册和交易证书。在一些情况下,区块链用户必须拥有这些数字证书,以便在许可的区块链网络310上进行交易。同时,试图驱动链码的用户可能需要在传统数据源330上核实他们的凭证。为了确认用户的授权,链码可以通过传统处理平台320对该数据使用带外连接。
图4A示出了根据示例实施例的在区块链网络中的秘密生成和份额分发的示例方法的流程图400。参考图4A,方法400可以包括下面描述的一个或多个步骤。
图4A示出了由管理员节点102(见图1)执行的示例方法的流程图。应当理解,图4A中描绘的方法400可以包括附加操作,并且其中本文描述的一些操作可以被移除和/或修改,而不脱离方法400的范围。出于说明的目的,方法400的描述也参考图1中描绘的特征进行。特别地,管理员节点102的处理器104可以执行方法400中包括的一些或全部操作。
参考图4A,在框412,处理器104可以将加密的随机值adm1发送到参与者节点1,其中adm1通过公共密钥PK=PK_adm+PK1加密,其中PK_adm是管理员节点的公共密钥,并且PK1是参与者节点1的公共密钥。在框414,处理器104可以从参与者节点1接收秘密S1,其中S1是通过PK加密的随机值。在框416,处理器104可以存储通过PK加密的秘密S=(S1+adm1)。在框418,处理器104可以将通过PK1加密的值(S+adm2’-adm2)和PK2发送到参与者节点1以进行解密,其中adm2’和adm2是随机值,并且PK2是参与者节点2的公共密钥。adm2’和adm2可以是由处理器104选择的随机值。在框420,处理器104可以响应于参与者节点1已经向参与者节点2发送了通过PK2加密的(S-adm2+adm2’)的确认,向参与者节点2发送adm2’以计算秘密S2。
图4B示出了根据示例实施例的在区块链网络中的秘密生成和份额分发的示例方法的流程图450。参考图4B,方法450还可以包括以下一项或多项步骤。在框452,处理器104可以计算通过PK加密的(adm2’-adm2)。在框454,处理器104可以将通过PK加密的(S+adm2’-adm2)计算为通过PK加密的S和通过PK加密的(adm2’-adm2)的总和。在框456,处理器104可以使用管理员节点的秘密密钥SK_adm将通过PK加密的(S+adm2’-adm2)解密为通过PK1加密的(S+adm2’-adm2)。在框458,参与者节点1(105)可以使用参与者节点1的秘密密钥SK1解密通过PK1加密的(S+adm2’-adm2),可以验证PK2,并且可以使用PK2对(S+adm2’-adm2)进行加密。在框460,参与者节点2(107)可以使用参与者节点2的秘密密钥SK2解密通过PK2加密的(S+adm2’-adm2)。在框462,参与者节点2(107)可以计算S2=S-adm2-adm2’+adm2’=S-adm2。
图5A示出了根据示例实施例的示例***500,其包括被配置为执行各种操作的物理基础设施510。参考图5A,物理基础设施510包括模块512和模块514。模块514包括区块链520和智能合约530(其可以驻留于区块链520上),区块链520和智能合约530可以执行任何示例实施例中包括的任何操作步骤508(在模块512中)。步骤/操作508可以包括所描述或描绘的一个或多个实施例,并且可以表示向/从一个或多个智能合约530和/或区块链520写入或读取的输出或写入信息。物理基础设施510、模块512和模块514可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块512和模块514可以是相同的模块。
图5B示出了根据示例实施例被配置为执行各种操作的示例***540。参考图5B,***540包括模块512和模块514。模块514包括区块链520和智能合约530(其可以驻留于区块链520上),区块链520和智能合约530可以执行任何示例实施例中包括的任何操作步骤508(在模块512中)。步骤/操作508可以包括所描述或描绘的一个或多个实施例,并且可以表示向/从一个或多个智能合约530和/或区块链520写入或读取的输出或写入信息。物理基础设施510、模块512和模块514可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块512和模块514可以是相同的模块。
图5C示出了根据示例实施例的合约方之间的示例智能合约配置和被配置为在区块链上强制执行智能合约条款的中介服务器。参考图5C,配置550可以表示通信会话、资产转移会话或由明确标识一个或多个用户设备552和/或556的智能合约530驱动的过程或进程。智能合约执行的执行、操作和结果可以由服务器554管理。智能合约530的内容可能需要智能合约交易各方的一个或多个实体552和556的数字签名。智能合约执行的结果可以作为区块链交易写入区块链520。智能合约530驻留在区块链520上,该区块链520可以驻留在一个或多个计算机、服务器、处理器、存储器和/或无线通信设备上。
图5D示出了根据示例实施例的用于访问区块链的逻辑和数据的公共接口560。参考图5D的示例,应用编程接口(API)网关562提供用于访问区块链逻辑(例如,智能合约530或其它链码)和数据(例如,分布式分类账等)的公共接口。在这个示例中,API网关562是用于通过将一个或多个实体552和556连接到区块链对等体(即,服务器554)来在区块链上执行交易(调用、查询等)的公共接口。这里,服务器554是区块链网络对等组件,其持有世界状态和分布式分类账的副本,从而允许客户端552和556查询关于世界状态的数据以及将交易递交进区块链网络中,其中,根据智能合约530和背书策略,背书对等体将运行智能合约530。
上述实施例可以用硬件、由处理器执行的计算机程序、固件或上述的组合来实现。计算机程序可以体现在计算机可读介质上,诸如存储介质。例如,计算机程序可以驻留在随机存取存储器(“RAM”)、闪存、只读存储器(“ROM”)、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程只读存储器(“EEPROM”)、寄存器、硬盘、可移动磁盘、光盘只读存储器(“CD-ROM”)或本领域已知的任何其它形式的存储介质中。
示例性存储介质可以耦合到处理器,使得处理器可以从存储介质读取信息和向存储介质写入信息。或者,存储介质可以集成到处理器中。处理器和存储介质可以驻留在专用集成电路(“ASIC”)中。或者,处理器和存储介质可以作为分立组件驻留。例如,图6A示出了示例计算机***体系结构600,其可以表示任何上述组件或集成在任何上述组件中,等等。
图6A示出了根据示例实施例的将新的块添加到分布式分类账630的过程600,并且图6B示出了根据示例实施例的区块链的块结构650的内容。参考图6A,客户端(未示出)可以向区块链节点621、622和/或623递交交易。客户端可以是从任何来源接收的指令,以在区块链630上执行活动。作为示例,客户端可以是代表请求者(诸如设备、个人或实体)行动的应用,以提议用于区块链的交易。多个区块链对等体(例如,区块链节点621、622和623)可以维护区块链网络的状态和分布式分类账630的副本。不同类型的区块链节点/对等体可以存在于区块链网络中,该不同类型的区块链节点/对等体包括:背书对等体,其模拟和背书由客户端提案的交易;和提交对等体,其核实背书、验证交易,并将交易提交到分布式分类账630。在该示例中,区块链节点621、622和623可以执行背书者节点、提交者节点或两者的角色。
分布式分类账630包括:区块链632,该区块链632在块中存储不可变的、有序的记录;以及状态数据库634(当前世界状态),该状态数据库634维护区块链632的当前状态。每个通道可以存在一个分布式分类账630,并且每个对等体为它们所属的每个通道维护其自己的分布式分类账630的副本。区块链632是交易日志,被构造成散列链接的块,其中每个块包含N个交易的序列。块可以包括各种组件,诸如图6B所示。块的链接(由图6A中的箭头所示)可以通过在当前块的块头内添加先前块的块头的散列来生成。以这种方式,区块链632上的所有交易被顺序排序并被加密地链接在一起,防止在不破坏散列链接的情况下篡改区块链数据。此外,由于链接,区块链632中的最新块表示该最新块之前出现的每个交易。区块链632可以存储在对等文件***(本地或附加存储)上,该对等文件***支持仅附接的区块链工作负载。
区块链632的当前状态和分布式分类账632可以存储在状态数据库634中。这里,当前状态数据表示区块链632的链交易日志中包括的所有键的最新值。链码调用针对状态数据库634中的当前状态执行交易。为了使这些链码交互非常有效,所有键的最新值被存储在状态数据库634中。状态数据库634可以包括到区块链632的交易日志中的索引视图,因此状态数据库634可以在任何时候从链中重新生成。在交易被接受之前,状态数据库634可以在对等体启动时自动恢复(或者被生成,如果需要的话)。
背书节点接收来自客户端的交易,并基于模拟结果对交易进行背书。背书节点持有模拟交易提案的智能合约。当背书节点对交易进行背书时,背书节点创建交易背书,该交易背书是从背书节点到客户端应用的签名响应,该签名响应指示对所模拟的交易的背书。对交易进行背书的方法取决于可以在链码中指定的背书策略。背书策略的示例是“大多数背书对等体必须对交易进行背书。”不同的通道可能有不同的背书策略。客户端应用将经背书的交易转发给排序服务610。
排序服务610接受经背书的交易,将它们排序到块中,并将块传递给提交对等体。例如,当达到交易阈值、定时器超时或其它条件时,排序服务610可以启动新块。在图6A的示例中,区块链节点622是提交对等体,其已经接收到新的数据块650以存储在区块链630上。
排序服务610可以由排序者的聚类组成。排序服务610不处理交易、智能合约或维护共享分类账。相反,排序服务610可以接受经背书的交易,并指定这些交易被提交给分布式分类账630的顺序。区块链网络的体系结构可以被设计成使得“排序”的具体实现(例如,Solo、Kafka卡、BFT等)成为可插拔组件。
交易以一致的顺序被写入到分布式分类账630。建立交易的顺序,以确保对状态数据库634的更新在被提交给网络时是有效的。与加密货币区块链***(如比特币等)不同,在通过解决密码难题或挖掘发生排序的情况下,在该示例中,分布式分类账630的各方可以选择最适合该网络的排序机制。
当排序服务610初始化新的块650时,新的块650可以被广播给提交对等体(例如,区块链节点621、622和623)。作为响应,每个提交对等体通过检查以确保读取集合和写入集合仍然匹配状态数据库634中的当前世界状态,来验证新的块650内的交易。具体地,提交对等体可以确定当背书者模拟交易时存在的读取数据是否与状态数据库634中的当前世界状态相同。当提交对等体验证交易时,交易被写入分布式分类账630上的区块链632,并且状态数据库634用来自读取-写入集合的写入数据更新。如果交易失败,也就是说,如果提交对等体发现读取-写入集合与状态数据库634中的当前世界状态不匹配,则被排序到块中的交易仍将被包括在该块中,但是该交易将被标记为无效,并且状态数据库634将不被更新。
参考图6B,存储在分布式分类账630的区块链632上的块650(也称为数据块)可以包括多个数据段,诸如块头660、块数据670和块元数据680。应当理解,各种描绘的块及其内容,诸如块650及其内容。图6B所示仅仅是为了示例的目的,并不意味着限制示例实施例的范围。在一些情况下,块头660和块元数据680两者都可以小于存储交易数据的块数据670,然而,这不是必需的。块650可以在块数据670内存储N个交易(例如,100、500、1000、2000、3000个等)的交易信息。块650还可以在块头660内包括到先前块(例如,在图6A的区块链632上)的链接。具体而言,块头660可以包括先前块的块头的散列。块头660还可以包括唯一的块号、当前块650的块数据670的散列等等。块650的块号可以是唯一的,并且从零开始以递增/有序的顺序来分配。区块链中的第一个块可以被称为起源块,其包括关于区块链、其成员、存储在其中的数据等的信息。
块数据670可以存储记录在块650中的每个交易的交易信息。例如,交易数据可以包括交易类型、版本、时间戳、分布式分类账630的通道ID、交易ID、时期、有效载荷可见性、链码路径(部署tx)、链码名称、链码版本、输入(链码和函数)、诸如公共密钥和证书的客户端(创建者)标识、客户端的签名、背书者的身份、背书者签名、提案散列、链码事件、响应状态、名称空间、读取集合(交易读取的键和版本的列表)、写入集合(键和值的列表等)、开始键、结束键、键的列表、默克尔树查询摘要等等。可以为N个交易中的每一个存储交易数据。
在一些实施例中,块数据670还可以存储数据672,数据672将附加信息添加到区块链632中的块的散列链接的链。因此,数据672可以存储在分布式分类账630上的块的不可变日志中。存储这样的数据672的一些益处反映在本文公开和描绘的各种实施例中。
块元数据680可以存储多个元数据的字段(例如,作为字节数组等)。元数据字段可以包括关于块创建时的签名、对最后的配置块的引用、标识块内有效和无效交易的交易过滤器、对块进行排序的排序服务的最后保持的偏移量等。签名、最后的配置块和排序者元数据可以由排序服务610添加。同时,块的提交者(诸如区块链节点622)可以基于背书策略、读取/写入集合的验证等来添加有效性/无效性信息。交易过滤器可以包括大小等于块数据670中的交易数量的字节数组和标识交易是否有效/无效的验证码。
图7并不旨在对本文描述的本申请的实施例的使用范围或功能提出任何限制。无论如何,计算节点700能够实现和/或执行上文阐述的任何功能。
在计算节点700中,存在计算机***/服务器702,该计算机***/服务器702可与许多其它通用或专用计算***环境或配置一起操作。适用于计算机***/服务器702的众所周知的计算***、环境和/或配置的示例包括但不限于个人计算机***、服务器计算机***、瘦客户机、胖客户机、手持或膝上型设备、多处理器***、基于微处理器的***、机顶盒、可编程消费电子产品、网络PC、小型计算机***、大型计算机***以及包括上述任何***或设备的分布式云计算环境等。
计算机***/服务器702可以在由计算机***执行的计算机***可执行指令的一般上下文中描述,诸如程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机***/服务器702可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备来执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机***存储介质中。
如图7所示,计算机***/服务器702以通用计算设备的形式表现。计算机***/服务器702的组件可以包括但不限于:一个或者多个处理器或者处理单元704,***存储器706,连接不同***组件(包括***存储器706和处理单元704)的总线。
总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微信道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机***/服务器720典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机***/服务器720访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。在一个实施例中,***存储器706实现其它附图的流程图。***存储器706可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)710和/或高速缓存存储器712。计算机***/服务器702可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***714可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图7中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。存储器806可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块718的程序/实用工具716,可以存储在例如存储器706中,这样的程序模块718包括——但不限于——操作***、一个或者多个应用、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块718通常执行本发明所描述的实施例中的功能和/或方法。
如本领域技术人员将理解的,本申请的各方面可以体现为***、方法或计算机程序产品。因此,本申请的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)的形式或结合软件和硬件方面的实施例,软件和硬件方面在本文中可以统称为“电路”、“模块”或“***”。此外,本申请的各方面可以采取包含在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有包含在其上的计算机可读程序代码。
计算机***/服务器702也可以与一个或多个外部设备720(例如键盘、指向设备、显示器722等)通信,还可与一个或者多个使得用户能与该计算机***/服务器702交互的设备通信,和/或与使得该计算机***/服务器702能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口724进行。并且,计算机***/服务器702还可以通过网络适配器726与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器726通过总线与计算机***/服务器702的其它模块通信。应当明白,尽管图中未示出,可以结合计算机***/服务器702使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
尽管在附图中示出了***、方法和非暂时性计算机可读介质中的至少一个的示例性实施例,并且在前面的详细描述中进行了描述,但是应当理解,本申请不限于所公开的实施例,而是能够进行由所附权利要求所阐述和定义的许多重新布置、修改和替换。例如,各种附图的***的能力可以由本文描述的一个或多个模块或组件来执行,或者在分布式体系结构中执行,并且可以包括发送器、接收器或两者的对。例如,由各个模块执行的全部或部分功能可以由这些模块中的一个或多个执行。此外,本文描述的功能可以在模块或组件内部或外部的、在不同时间以及与不同事件相关地执行。此外,在各种模块之间发送的信息可以经由数据网络、互联网、语音网络、互联网协议网络、无线设备、有线设备中的至少一个和/或经由多个协议在模块之间发送。此外,由任何模块发送或接收的消息可以直接和/或经由一个或多个其它模块发送或接收。
本领域技术人员将会理解,“***”可以具体化为个人计算机、服务器、控制台、个人数字助理(PDA)、蜂窝电话、平板计算设备、智能电话或任何其它合适的计算设备,或者设备的组合。将上述功能呈现为由“***”执行并不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,本文公开的方法、***和装置可以以与计算技术相一致的本地化和分布式形式来实现。
应该注意的是,在本说明书中描述的一些***特征已经被呈现为模块,以便更特别地强调它们的实现独立性。例如,模块可以被实现为硬件电路,该硬件电路包括定制的超大规模集成(VLSI)电路或门阵列,以及诸如逻辑芯片、晶体管或其它分立组件的现成半导体。模块也可以在可编程硬件设备中实现,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等。
模块也可以至少部分地在软件中实现,用于由各种类型的处理器执行。可执行代码的被标识单元可以例如包括计算机指令的一个或多个物理或逻辑块,计算机指令可以例如被组织为对象、过程或功能。然而,标识的模块的可执行文件不需要物理上位于一起,而是可以包括存储在不同位置的不同指令,当这些指令在逻辑上结合在一起时,构成该模块并实现该模块的所述目的。此外,模块可以存储在计算机可读介质上,该介质可以是例如硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带或用于存储数据的任何其它这样的介质。
实际上,可执行代码模块可以是单个指令或多个指令,甚至可以分布在几个不同的代码段上、分布不同的程序中以及分布在几个存储设备中。类似地,操作数据在本文中可以在模块中被标识和示出,并且可以以任何合适的形式来体现,并且被组织在任何合适类型的数据结构中。操作数据可以作为单个数据集合来收集,或者可以分布在不同的位置(包括分布在不同的存储设备上),并且可以至少部分地仅仅作为电子信号存在于***或网络上。
很容易理解,如本文的图中一般描述和示出的,本申请的组件可以以各种不同的配置来布置和设计。因此,实施例的具体实施方式并不旨在限制所要求保护的本申请的范围,而是仅仅表示所选择的本申请实施例。
本领域普通技术人员将容易理解,可以用不同顺序的步骤和/或不同于所公开的配置的硬件组件来实践上述内容。因此,尽管已经基于这些优选实施例描述了本申请,但是对于本领域技术人员来说,某些修改、变化和替代结构将是显而易见的。
虽然已经描述了本申请的优选实施例,但是应当理解,所描述的实施例仅是说明性的,并且当考虑到全部范围的等同物和对其的修改(例如,协议、硬件设备、软件平台等)时,本申请的范围仅由所附权利要求来限定。

Claims (10)

1.一种用于区块链网络中的秘密生成和份额分发的方法,包括:
由管理员节点将加密的随机值adm1发送到参与者节点1,其中adm1通过公共密钥PK=PK_adm+PK1加密,其中PK_adm是所述管理员节点的公共密钥,并且PK1是所述参与者节点1的公共密钥;
由所述管理员节点从所述参与者节点1接收秘密S1,其中S1是通过PK加密的随机值;
由所述管理员节点存储通过PK加密的秘密S=(S1+adm1);
由所述管理员节点将通过PK1加密的值(S+adm2’-adm2)和PK2发送到所述参与者节点1以进行解密,其中adm2’和adm2为随机值,并且PK2为参与者节点2的公共密钥;以及
响应于所述参与者节点1已经向所述参与者节点2发送通过PK2加密的(S-adm2+adm2’)的确认,向所述参与者节点2发送adm2’以计算秘密S2。
2.根据权利要求1所述的方法,还包括计算通过PK加密的(adm2’-adm2)。
3.根据权利要求2所述的方法,还包括将通过PK加密的(S+adm2’-adm2)计算为通过PK加密的S和通过PK加密的(adm2’-adm2)的总和。
4.根据权利要求1所述的方法,还包括使用所述管理员节点的秘密密钥SK_adm将通过PK加密的(S+adm2’-adm2)解密成通过PK1加密的(S+adm2’-adm2)。
5.根据权利要求1所述的方法,还包括由所述参与者节点1使用所述参与者节点1的秘密密钥SK1解密通过PK1加密的(S+adm2’-adm2),并验证PK2,以及使用PK2加密(S+adm2’-adm2)。
6.根据权利要求1所述的方法,还包括由所述参与者节点2使用所述参与者节点2的秘密密钥SK2解密通过PK2加密的(S+adm2’-adm2)。
7.根据权利要求6所述的方法,还包括由所述参与者节点2计算S2=S-adm2-adm2'+adm2'=S-adm2。
8.一种包括指令的非暂时性计算机可读介质,当该指令被处理器读取时,使得处理器执行根据权利要求1-7中任一项所述的方法。
9.一种用于区块链网络中的秘密生成和份额分发的***,包括:
管理员节点的处理器,该管理员节点通过区块链网络连接到参与者节点1和连接到参与者节点2;
其上存储有机器可读指令的存储器,当该指令被处理器执行时,使得处理器执行根据权利要求1-7中任一项所述的方法。
10.一种用于区块链网络中的秘密生成和份额分发的***,该***包括分别用于执行根据权利要求1-7中任一项所述的方法的步骤的模块。
CN202010160692.1A 2019-03-13 2020-03-10 秘密生成和份额分发 Active CN111698198B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/351,707 2019-03-13
US16/351,707 US10979218B2 (en) 2019-03-13 2019-03-13 Secret generation and share distribution

Publications (2)

Publication Number Publication Date
CN111698198A CN111698198A (zh) 2020-09-22
CN111698198B true CN111698198B (zh) 2022-08-26

Family

ID=72423792

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010160692.1A Active CN111698198B (zh) 2019-03-13 2020-03-10 秘密生成和份额分发

Country Status (2)

Country Link
US (1) US10979218B2 (zh)
CN (1) CN111698198B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112468302B (zh) * 2020-10-23 2024-05-24 湖南天河国云科技有限公司 基于可验证多方秘密分享的可编辑区块链
CN114124346B (zh) * 2021-11-10 2024-04-30 浪潮云信息技术股份公司 一种利用区块链背书机制实现ElGamal多重解密的方法
US11991281B1 (en) * 2023-10-31 2024-05-21 Massood Kamalpour Systems and methods for digital data management including creation of storage location with storage access id

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109120398A (zh) * 2018-08-03 2019-01-01 河南师范大学 一种基于区块链***的秘密共享方法与装置
CN109314636A (zh) * 2016-02-23 2019-02-05 区块链控股有限公司 用于从区块链中安全提取数据的密码方法和***

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6987855B1 (en) * 1999-09-10 2006-01-17 Cisco Technology, Inc. Operational optimization of a shared secret Diffie-Hellman key exchange among broadcast or multicast groups
US8006280B1 (en) 2001-12-12 2011-08-23 Hildebrand Hal S Security system for generating keys from access rules in a decentralized manner and methods therefor
US8243933B2 (en) 2007-08-29 2012-08-14 Red Hat, Inc. Method for sharing secret information among cooperating parties
US8713329B2 (en) 2009-02-26 2014-04-29 Red Hat, Inc. Authenticated secret sharing
US9614676B1 (en) 2013-03-13 2017-04-04 Hrl Laboratories, Llc Cryptographically-secure packed proactive secret sharing (PPSS) protocol
US9641325B1 (en) 2015-10-30 2017-05-02 International Business Machines Corporation Server systems for distributed cryptographic protocols
EP3380984A4 (en) * 2015-11-24 2019-07-31 Ben-Ari, Adi SYSTEM AND METHOD FOR THE PROTECTION OF DATA BY INTELLIGENT BLOCKCHAIN CONTRACT
LU93377B1 (en) * 2016-12-15 2018-07-03 Luxembourg Inst Science & Tech List P2p network data distribution and retrieval using blockchain log
CN106878000B (zh) * 2017-03-06 2020-02-21 中钞***产业发展有限公司杭州区块链技术研究院 一种联盟链共识方法及***
GB201707788D0 (en) * 2017-05-15 2017-06-28 Nchain Holdings Ltd Computer-implemented system and method
CN108667618B (zh) * 2018-05-10 2020-07-03 阿里巴巴集团控股有限公司 区块链成员管理的数据处理方法、装置、服务器及***
CN108809652B (zh) * 2018-05-21 2021-07-23 安徽航天信息有限公司 一种基于秘密共享的区块链加密账本

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109314636A (zh) * 2016-02-23 2019-02-05 区块链控股有限公司 用于从区块链中安全提取数据的密码方法和***
CN109120398A (zh) * 2018-08-03 2019-01-01 河南师范大学 一种基于区块链***的秘密共享方法与装置

Also Published As

Publication number Publication date
US20200295926A1 (en) 2020-09-17
US10979218B2 (en) 2021-04-13
CN111698198A (zh) 2020-09-22

Similar Documents

Publication Publication Date Title
CN111800268B (zh) 用于区块链背书的零知识证明
CN111144881B (zh) 对资产转移数据的选择性访问
CN111723355B (zh) 数据库中的信息管理
US11227057B2 (en) Membership access management of a database
US10917233B2 (en) Selective exchange of transaction data
US10671308B2 (en) Private and fault-tolerant storage of segmented data
CN111488393B (zh) 虚拟区块链
US10922097B2 (en) Collaborative model execution
US11270017B2 (en) Selective exchange of transaction data
US11270296B2 (en) Protection of data trading
CN111881099A (zh) 数据库私有文档共享
CN110674128B (zh) 区块链的链上治理
US11360946B2 (en) Tracking data transfers
US11240003B2 (en) Consent-based data management
CN111831740B (zh) 对等体的同步
CN111698198B (zh) 秘密生成和份额分发
US11457066B2 (en) Splitting and merging of storages
CN112035291A (zh) 快照恢复
CN111798233A (zh) 令牌的链接
US11082215B2 (en) Immutable broadcasting queues
CN111797426B (zh) 一种用于去信任通知服务的方法和***
CN112036876A (zh) 基于元数据的背书
CN112052473A (zh) 地理位置合规性
US10970307B2 (en) Information transparency control
US11314771B2 (en) Splitting and merging of storages

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
GR01 Patent grant
GR01 Patent grant