Blockchain Data Segregation
Blockchain data segregation methods using cryptographic protocols enable secure and efficient data sharing between organizations by generating and distributing keys, addressing the lack of trusted collaboration and tamper-proof storage in existing systems.
Patent Information
- Application Number
- JP2023541790
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-03-17
- Filing Date
- 2022-02-23
- Publication Date
- 2025-09-17
- Estimated Expiration
- 2042-02-23
AI Technical Summary
Existing technologies fail to provide secure and efficient methods for sharing data between organizations on a blockchain network, lacking trusted collaboration and tamper-proof storage.
Implementing blockchain data segregation methods that generate and distribute keys between nodes of different organizations to access specific data collections, utilizing cryptographic protocols for secure data sharing.
Enhances data security and efficiency in blockchain networks by enabling trusted collaboration and tamper-proof data sharing among organizations.
Smart Images

Figure 0007740848000001 
Figure 0007740848000002 
Figure 0007740848000003
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to processing operations on a blockchain network, and more particularly to securely sharing data between organizations on a blockchain network.
[0002] A blockchain is a cryptographically linked list of records, called blocks. Blockchains can be used to control access to various collections of data. Data can be securely shared on a blockchain network through cryptographic protocols. Summary of the Invention
[0003] Embodiments of the present disclosure include methods, systems, and computer program products for blockchain data segregation in a blockchain network.
[0004] An embodiment of the present disclosure includes a method comprising: generating, by a first node of a first organization in a first ring, a first key for the first ring, where the first key unlocks a first collection of data; defining, by the first node, a second ring including a second node of a second organization; deriving, by the node, a second key for a second collection of data based on the first key, where the first key and the second key access the second collection of data; and distributing the second key to the second node.
[0005] An additional embodiment of the present disclosure includes a system including a memory and a processor in communication with the memory, the processor configured to perform operations including generating, by a first node of a first organization in the first ring, a key for the first ring, where the key unlocks a first collection of data; defining, by the first node, a second ring including a second node of a second organization; deriving, by the node, a second key for the second collection of data based on the first key, where the first key and the second key access the second collection of data; and distributing the second key to the second node.
[0006] A further embodiment of the present disclosure includes a computer program product comprising a computer-readable storage medium having program instructions embodied thereon, the program instructions being executable by a processor to cause the processor to perform a method including generating, by a first node of a first organization in the first ring, a key for the first ring, where the key unlocks a first collection of data; defining, by the first node, a second ring including a second node of a second organization; deriving, by the node, a second key for a second collection of data based on the first key, where the first key and the second key access the second collection of data; and distributing the second key to the second node.
[0007] The above summary is not intended to describe each illustrated embodiment or every implementation of the present disclosure. [Brief explanation of the drawings]
[0008] The drawings included in this disclosure are incorporated in and form a part of this specification. They illustrate embodiments of the disclosure and, together with the description, serve to explain the principles of the disclosure. The drawings are merely illustrative of particular embodiments and are not intended to limit the disclosure.
[0009] [Figure 1]FIG. 1 illustrates a network diagram of a system with a database according to an exemplary embodiment.
[0010] [Figure 2A] FIG. 1 illustrates an example of a blockchain architecture configuration, according to an exemplary embodiment.
[0011] [Figure 2B] FIG. 1 illustrates a blockchain transaction flow, according to an exemplary embodiment.
[0012] [Figure 3A] FIG. 1 illustrates a permissioned network according to an exemplary embodiment.
[0013] [Figure 3B] FIG. 2 illustrates another permissioned network according to an exemplary embodiment.
[0014] [Figure 3C] FIG. 1 illustrates an unlicensed network according to an exemplary embodiment.
[0015] [Figure 4A] FIG. 1 illustrates a process for a new block being added to a distributed ledger, according to an exemplary embodiment.
[0016] [Figure 4B] FIG. 10 illustrates the contents of a new data block according to an exemplary embodiment.
[0017] [Figure 4C] FIG. 1 illustrates a block chain for digital content, according to an exemplary embodiment.
[0018] [Figure 4D] FIG. 1 illustrates a block diagram that may represent the structure of a block in a blockchain, according to an exemplary embodiment.
[0019] [Figure 5] FIG. 1 illustrates a high-level block diagram of an exemplary computer system that may be used to implement one or more of the methods, tools, and modules, and any associated functionality described herein, according to embodiments of the present disclosure.
[0020] [Figure 6] 1 illustrates a visualization of an access ring for data collection in a blockchain network, according to an example embodiment.
[0021] [Figure 7] 1 illustrates a flowchart of a process for data segregation for a blockchain network, according to an example embodiment.
[0022] While the embodiments described herein are susceptible to various modifications and alternative forms, specific features thereof have been shown by way of example in the drawings and will be described in detail. It is to be understood, however, that the particular embodiments described are not to be construed in a limiting sense. Rather, the invention covers all modifications, equivalents, and alternatives falling within the scope of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0023] Aspects of the present disclosure relate to processing operations on a blockchain network, and more particularly, to securely sharing data between organizations on a blockchain network.
[0024] It will be readily understood that the components, as generally described and illustrated herein, could be arranged and designed in a wide variety of different configurations. Thus, the following detailed description of at least one embodiment of a method, apparatus, non-transitory computer-readable medium, and system, as illustrated in the accompanying drawings, is not intended to limit the scope of the present application as claimed, but rather represents selected embodiments.
[0025] The features, structures, or characteristics described throughout this specification may be combined or eliminated in any suitable manner in one or more embodiments. For example, the use of the phrases "exemplary embodiment," "some embodiments," or other similar language throughout this specification indicates that a particular feature, structure, or characteristic described in connection with an embodiment may be included in at least one embodiment. Thus, the appearances of the phrases "exemplary embodiment," "some embodiments," "other embodiments," or other similar language throughout this specification do not necessarily all refer to the same group of embodiments, and the described features, structures, or characteristics may be combined or eliminated in any suitable manner in one or more embodiments. Furthermore, in the figures, any connection between elements can allow for unidirectional and / or bidirectional communication, even if the illustrated connection is represented by a unidirectional or bidirectional arrow. Also, any device illustrated in the figures may be another device. For example, even if a mobile device is shown as transmitting information, a wired device may also be used to transmit information.
[0026] Also, while the term "message" may be used in describing the embodiments, the present application may apply to many types of networks and data. Furthermore, while example embodiments may show particular types of connections, messages, and signaling, the present application is not limited to the particular types of connections, messages, and signaling.
[0027] In some embodiments, methods, systems, and / or computer program products utilize a distributed database (e.g., a blockchain), which is a distributed storage system including multiple nodes communicating with each other. A distributed database includes an append-only immutable data structure, similar to a distributed ledger, that can maintain records among mutually untrusted parties. The untrusted parties are referred to herein as peers or peer nodes. Each peer maintains a copy of the database record, and no single peer can modify the database record unless consensus is achieved among the distributed peers. For example, peers may execute a consensus protocol to validate blockchain storage transactions, group the storage transactions into blocks, and build a hash chain over the blocks. In this process, a ledger is formed by ordering the storage transactions as necessary to ensure consistency.
[0028] In various embodiments, permissioned and / or permissionless blockchains can be used. Public or permissionless blockchains allow anyone to participate without specific identity (e.g., while preserving anonymity). Public blockchains can involve native cryptocurrencies and can use consensus based on various protocols, such as proof of work. Permissioned blockchain databases, on the other hand, provide secure interactions among a group of entities that share a common purpose but do not fully trust each other, such as businesses exchanging funds, goods, information, etc.
[0029] Additionally, in some embodiments, the present methods, systems, and / or computer program products may utilize a blockchain that is adapted to a decentralized storage scheme and operates arbitrary programmable logic referred to as a "smart contract" or "chaincode." In some cases, dedicated chaincodes may exist for managing functions and parameters, referred to as system chaincodes. The present methods, systems, and / or computer program products may further utilize smart contracts, which are trusted distributed applications that leverage the tamper-resistant properties of the blockchain database and underlying agreements between nodes, referred to as endorsements or endorsement policies. Blockchain transactions associated with the present application may be "endorsed" before being committed to the blockchain, with unendorsed transactions being ignored.
[0030] An endorsement policy allows a chaincode to specify endorsers for a transaction in the form of a set of peer nodes required for endorsement. When a client submits a transaction to the peers specified in the endorsement policy, the transaction is executed, validating the transaction. After validation, the transaction enters the ordering phase, where a consensus protocol is used to produce an ordered sequence of endorsed transactions grouped into blocks.
[0031] In some embodiments, the method, system, and / or computer program product may utilize nodes, which are communicating entities in a blockchain system. A "node" may perform a logical function, in the sense that multiple nodes of different types can operate on the same physical server. Nodes are grouped into trust domains and associated with logical entities that control them in various ways. Nodes may include different types, such as client or submitting client nodes, which submit transaction calls to endorsers (e.g., peers) and broadcast transaction proposals to an ordering service (e.g., ordering node).
[0032] Another type of node is a peer node, which can receive client-submitted transactions, commit transactions, and maintain a ledger state and copy of blockchain transactions. Peers can also have the role of endorser, but this is not required. An ordering service node, or orderer, is a node that performs communication services for all nodes. In some cases, an ordering service node implements delivery guarantees, such as broadcasting to each of the peer nodes in the system when it commits / confirms a transaction and modifies the blockchain world state. World state is another name for the initial blockchain transaction, which typically contains control and setup information.
[0033] In some embodiments, methods, systems, and / or computer program products utilize a ledger that is a sequenced, tamper-resistant record of all state transitions of a blockchain. State transitions can result from chaincode invocations (e.g., transactions) submitted by participants (e.g., client nodes, ordering nodes, endorser nodes, peer nodes, etc.). Each participant (e.g., peer node) can maintain a copy of the ledger. Transactions can result in a set of asset key-value pairs being committed to the ledger as one or more operands, such as a create, update, or delete. The ledger includes a blockchain (also called a chain) that is used to store immutable, sequenced records in blocks. The ledger also includes a state database that maintains the current state of the blockchain.
[0034] In some embodiments, the methods, systems, and / or computer program products described herein may utilize a chain, which is a transaction log structured as hash-linked blocks, where each block contains a sequence of N transactions, where N is greater than or equal to 1. The block header contains a hash of the block's transactions as well as a hash of the previous block's header. In this way, all transactions on the ledger may be sequenced and cryptographically linked. Therefore, it is impossible to tamper with the ledger data without breaking the hash links. The hash of the most recently added blockchain block represents all transactions on the chain that occurred before it, allowing all peer nodes to ensure a consistent and reliable state. The chain is stored in the peer node file system (e.g., locally, on attached storage, in the cloud, etc.), efficiently supporting the append-only nature of blockchain workloads.
[0035] The current state of the immutable ledger represents the most recent values of all keys contained in the chain transaction log. The current state is sometimes called the world state because it represents the most recent key values known to the channel. Chaincode invocations perform transactions against the ledger's current state data. To make these chaincode interactions efficient, the most recent values of keys may be stored in a state database. The state database may simply be an indexed view into the chain's transaction log and therefore can be regenerated from the chain at any time. The state database may be automatically recovered (or generated if necessary) at peer node startup, before any transactions are accepted.
[0036] A blockchain differs from traditional databases in that it is not a central storage, but rather a decentralized, immutable, and secure storage where nodes may share changes to records in the storage. Some properties inherent to blockchains and that aid in their implementation include, but are not limited to, immutable ledgers, smart contracts, security, privacy, decentralization, consensus, authorization, accessibility, and the like, which are further described herein.
[0037] In particular, blockchain ledger data is immutable, providing an efficient method for processing operation compliance mechanisms within a blockchain network. Additionally, blockchain's use of cryptography provides security and builds trust. Smart contracts manage the state of assets as they complete their lifecycle, and specialized nodes ensure that blockchain operations with anonymity requirements can securely submit operations to the blockchain network. An exemplary blockchain is permissioned and decentralized. Therefore, each end user may have their own copy of the ledger for access. Multiple organizations (and peers) may be onboarded onto the blockchain network. A central organization may act as an authorizing peer to validate smart contract execution results, read sets, and write sets. In other words, blockchain's inherent characteristics allow for efficient implementation of private transaction processing in a blockchain network.
[0038] One of the benefits of the exemplary embodiments is that they enhance the functionality of a computing system by implementing a method for processing private transactions within a blockchain network. Through the blockchain system described herein, a computing system (or a processor within a computing system) can perform functions for private transaction processing utilizing a blockchain network by providing access to functions such as distributed ledgers, peers, cryptography, MSPs, event processing, etc. Blockchain also enables the creation of business networks and the onboarding of any user or organization for participation. As such, blockchain is more than just a database. Blockchain has the ability to create a network of users and onboard / offboard organizations that collaborate to perform service operations in the form of smart contracts.
[0039] On the other hand, traditional databases may not be useful for implementing exemplary embodiments because they do not bring all parties on the network, they do not create trusted collaboration, and they do not provide an efficient way to securely and efficiently submit operations. Traditional databases do not provide tamper-proof storage and do not provide guaranteed valid transactions. Thus, the exemplary embodiments provide a unique solution to problems in the field of anonymous submission of operations in blockchain networks.
[0040] FIG. 1 illustrates a logic network diagram 100 for smart data annotation in a blockchain network, according to an example embodiment.
[0041] Referring to FIG. 1 , an exemplary network 100 includes a node 102 connected to other blockchain (BC) nodes 105 representing document owner organizations. The node 102 may be connected to a blockchain 106 having a ledger 108 for storing data (110) to be shared among the nodes 105. While this example details only one node 102, multiple such nodes may be connected to the blockchain 106. It should be understood that the node 102 may include additional components, and some of the components described herein may be removed and / or modified without departing from the scope of the node 102 disclosed herein. The node 102 may include a processor 104, which may be a computing device or server computer, or the like, and may be a semiconductor-based microprocessor, a central processing unit (CPU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), and / or another hardware device. Although a single processor 104 is shown, it should be understood that the node 102 may include multiple processors, multiple cores, or the like without departing from the scope of the node 102 system. Distributed file storage 150 may be accessible to the processor node 102 and other BC nodes 105. The distributed file storage 150 may be used to store documents identified in the ledger 108.
[0042] Node 102 may also include non-transitory computer-readable medium 112 that may store machine-readable instructions executable by processor 104. Examples of machine-readable instructions are indicated at 114-118 and are described further below. Examples of non-transitory computer-readable medium 112 may include electronic, magnetic, optical, or other physical storage devices that contain or store executable instructions. For example, non-transitory computer-readable medium 112 may be random access memory (RAM), electrically erasable programmable read-only memory (EEPROM), a hard disk, an optical disk, or other type of storage device.
[0043] The processor 104 may execute machine-readable instructions 114 to generate keys for implicit collections of data. As described above, the blockchain ledger 108 may store data 110 to be shared among the nodes 105. The blockchain 106 network may be configured with one or more smart contracts that manage transactions for multiple participating nodes. Documents linked to annotation information may be stored in distributed file storage 150. The processor 104 may execute machine-readable instructions 116 to generate additional keys for implicit collections of additional data. The processor 104 may execute machine-readable instructions 118 to distribute the additional keys.
[0044] FIG. 2A illustrates a blockchain architecture configuration 200 according to an example embodiment. Referring to FIG. 2A, the blockchain architecture 200 may include a group of specific blockchain elements, such as blockchain nodes 202. The blockchain nodes 202 may include one or more peer nodes 204-210 (these four nodes are shown merely by way of example). These nodes participate in multiple activities, such as the blockchain transaction addition and validation process (consensus). One or more of the blockchain nodes 204-210 may approve transactions based on an endorsement policy and provide an ordering service for all blockchain nodes 202 in the architecture 200. The blockchain nodes 204-210 may initiate blockchain validations and attempt writes to a blockchain immutable ledger stored in a blockchain layer 216, a copy of which may be stored on the underlying physical infrastructure 214. The blockchain configuration 200 may include one or more applications 224 linked to an application programming interface (API) 222 for accessing and executing stored program / application code 220 (e.g., chaincode, smart contracts, etc.), which can be created according to customized configurations desired by participants, maintain their own state, control their own assets, and receive external information, which can be deployed and installed as transactions on all blockchain nodes 204-210 via appending to the distributed ledger.
[0045] The blockchain foundation or platform 212 may comprise various layers of blockchain data, services (e.g., cryptographic trust services, virtual execution environments, etc.), and an underlying physical computer infrastructure 214 that may be used to receive and store new transactions and provide access to auditors attempting to access data entries. The blockchain layer 216 may present an interface that provides access to the virtual execution environment necessary to process program code 220 and engage the physical infrastructure 214. The cryptographic trust services 218 may be used to verify transactions, such as asset exchange transactions, and keep information private.
[0046] The blockchain architecture configuration 200 of FIG. 2A may process and execute program / application code 220 through one or more interfaces and services provided by the blockchain platform 212. The code 220 may control blockchain assets. For example, the code 220 may be executed by the nodes 204-210 in the form of smart contracts and associated chaincodes that can store and transfer data and that have conditions or other code elements that are subject to execution. As a non-limiting example, smart contracts may be created to implement reminders, updates, and / or other notifications subject to changes, updates, etc. The smart contract itself may be used to identify authorization and access requirements and rules associated with ledger use. For example, document attribute information 226 may be processed by one or more processing entities (e.g., virtual machines) included in the blockchain layer 216. The results 228 of this processing may include multiple linked shared documents. The physical infrastructure 214 may be utilized to obtain any of the data or information described herein.
[0047] Smart contracts may be created via high-level application and programming languages and written into blocks within a blockchain. Smart contracts may include executable code that is registered, stored, and / or replicated on a blockchain (e.g., a decentralized network of blockchain peers). A transaction is the execution of smart contract code that may be executed in response to conditions associated with the smart contract being met. Execution of a smart contract may trigger trusted modifications to the state of a digital blockchain ledger. Modifications to the blockchain ledger caused by smart contract execution may be automatically replicated across the decentralized network of blockchain peers through one or more consensus protocols.
[0048] Smart contracts may write data to the blockchain in the format of key-value pairs. Additionally, smart contract code can read values stored on the blockchain and use them in application operations. Smart contract code can write the output of various logic operations to the blockchain. Code can be used to create temporary data structures in virtual machines or other computing platforms. Data written to the blockchain can be public and / or kept private by encryption. Temporary data used / generated by smart contracts is kept in memory by the provided execution environment and is deleted once the data needed for the blockchain is identified.
[0049] Chaincode may include a code interpretation of a smart contract with additional features. As described herein, chaincode may be program code deployed on a computing network that is executed and validated by a chain validator together during the consensus process. The chaincode receives hashes and retrieves hashes from the blockchain associated with data templates created using pre-stored feature extractors. If the hash of the hash identifier matches the hash created from the stored identifier template data, the chaincode sends an authorization key to the requested service. The chaincode may be written to the blockchain data associated with the cryptographic details.
[0050] FIG. 2B illustrates an example of a blockchain transaction flow 250 between nodes of a blockchain (e.g., blockchain 106 shown in FIG. 1 ), according to an illustrative embodiment. With reference to FIG. 2B , a general description of transaction flow 250 is provided, followed by a more specific example. Transaction flow 250 may include a transaction proposal 291 sent by application client node 260 to first endorsing peer node 281. First endorsing peer 281 may verify the client signature and execute a chaincode function to initiate the transaction. Output may include the chaincode result, a set of key / value versions read by the chaincode (the read set), and a set of key / values written to the chaincode (the write set). If approved, proposal response 292 is sent back to client 260 along with the endorsing signature. Client 260 assembles the endorsing into a transaction payload 293 and broadcasts it to ordering service (fourth peer) node 284. The ordering service node 284 then distributes the ordered transactions as a block to all additional peers 281-283 on the same channel. Before committing to the blockchain, each additional peer 281-283 may validate the transaction. For example, the peers 281-283 may check endorsement policies to ensure the correct allocation of peers specified in the transaction proposal 291 to sign the result and authenticate the signature on the transaction payload 293. In some embodiments, one or more of the peers may be manager nodes.
[0051] A more specific description of transaction flow 250 can be understood with a more specific example. Initially, a client node 260 initiates a transaction proposal 291 by constructing and sending a request to a first peer node 281, which is an endorser. The client 260 may include an application utilizing a supported software development kit (SDK) that generates a transaction proposal using available APIs. The proposal is a request that invokes chaincode functions so that data can be read from and / or written to the ledger (i.e., writing a new key-value pair for an asset). The SDK may package the transaction proposal into an appropriately designed format (e.g., protocol buffers for remote procedure calls (RPCs)) and act as a shim to obtain the client's cryptographic credentials to generate a unique signature for the transaction proposal.
[0052] In response, the endorsing peer node 281 may verify that (a) the transaction proposal is well-formed, (b) the transaction has not already been submitted previously (replay attack protection), (c) the signature is valid, and (d) the submitter (in this example, client 260) is properly authorized to perform the proposed operation on that channel. The endorsing peer node 281 may take the transaction proposal input as an argument to a chaincode function that is invoked. The chaincode is then executed against the current state database to generate a transaction result that includes a response value, a read set, and a write set. However, the ledger is not updated at this point. The set of transaction results, along with the endorsing peer node 281's signature, is returned as a proposal response 292 to the client 260's SDK, which parses the payload for the application to consume.
[0053] In response, the client 260 application checks / verifies the signature of the endorsing peer 281 and compares the proposal response 292 to determine whether the proposal response 292 is valid. If the chaincode only queried the ledger, the application checks the query response and typically does not submit the transaction to the ordering service node 284. If the client application intends to submit a transaction to the ordering service node 284 to update the ledger, the application determines whether the specified endorsement policy has been satisfied (i.e., whether all peer nodes required for the transaction have endorsed the transaction) before submitting. Here, the client 260 may comprise only one of multiple parties to the transaction. In this case, each client may have its own endorsing node, and each endorsing node may be required to endorse the transaction. The architecture is such that the endorsement policy can still be enforced by peers and maintained in the commit validation phase, even if the application chooses not to check the response or otherwise forwards an unendorsed transaction.
[0054] After successful validation, client 260 assembles the approvals into a transaction 293 and broadcasts the transaction proposal and response in a transaction message to ordering node 284. Transaction 293 may include a read / write set, an approving peer signature, and a channel ID. Ordering node 284 does not need to validate the entire contents of a transaction to perform its operation. Instead, ordering node 284 may simply receive transactions from all channels in the network and order them chronologically by channel, creating a block of transactions per channel.
[0055] The block of transactions 293 is distributed from the ordering node 284 to all other peer nodes 281-283 on the channel. The transactions 294 in the block are validated to ensure that any endorsement policies are met and to ensure that no changes have been made to the ledger state with respect to the readset variable since transaction execution generated the readset. The transactions 294 in the block are tagged as valid or invalid. Furthermore, in operation 295, each peer node 281-283 appends the block to the channel's chain, and for each valid transaction, the writeset is committed to the current state database. An event is emitted to notify the client application whether the transaction 293 has been validated or invalidated, as well as to notify that the transaction (invocation) 293 has been immutably appended to the chain.
[0056] FIG. 3A illustrates an example of a permissioned blockchain network 300 according to an example embodiment, featuring a distributed, decentralized, peer-to-peer architecture. In this example, a blockchain user 302 may initiate transactions against a permissioned blockchain 304. In this example, transactions may be deployed, invoked, or queried, and may be issued through a client-side application, such as directly through an API, or using an SDK. The network 300 may provide access to regulators 306, such as auditors. A blockchain network operator 308 manages member permissions, such as enrolling regulators 306 as "auditors" and blockchain users 302 as "clients." Auditors may be limited to only querying the ledger, while clients may be authorized to deploy, invoke, and query specific types of chaincode.
[0057] A blockchain developer 310 can write chaincode and client-side applications. The blockchain developer 310 can deploy the chaincode directly to the network 300 through an interface. To include certificates from traditional data sources 312 in the chaincode, the developer 310 may use an out-of-band connection to access the data. In this example, a blockchain user 302 connects to the permissioned blockchain 304 through one of the peer nodes 314 (see any one of nodes 314a-e). Before proceeding with any transaction, the peer node 314 (e.g., node 314a) obtains the user's 302 enrollment and transaction certificate from a certificate authority 316 that manages user roles and permissions. In some cases, a blockchain user must possess these digital certificates to transact on the permissioned blockchain 304. However, a user attempting to use the chaincode may need to verify their certificate on the traditional data source 312. To verify the authorization of the user 302, the chaincode can use an out-of-band connection to this data through the conventional processing platform 318.
[0058] 3B illustrates another example of a permissioned blockchain network 320 according to an example embodiment, featuring a distributed, decentralized, peer-to-peer architecture. In this example, blockchain users 322 may submit transactions to a permissioned blockchain 324. In this example, transactions may be deployed, invoked, or queried, and may be issued through a client-side application, such as directly through an API, or using an SDK. The network may provide access to regulators 326, such as auditors. A blockchain network operator 328 manages member permissions, such as enrolling regulators 326 as "auditors" and blockchain users 322 as "clients." Auditors may be limited to only querying the ledger, while clients may be authorized to deploy, invoke, and query specific types of chaincode.
[0059] A blockchain developer 330 may write chaincode and client-side applications. The blockchain developer 330 can deploy the chaincode directly to the network through an interface. To include certificates from traditional data sources 332 in the chaincode, the developer 330 may use an out-of-band connection to access the data. In this example, a blockchain user 322 connects to the network through a peer node 334 (referred to as one of nodes 334a-e). Before proceeding with any transaction, the peer node 334 (e.g., node 334a) obtains a user enrollment and transaction certificate from a certificate authority 336. In some cases, a blockchain user must possess these digital certificates to transact on the permissioned blockchain 324. Alternatively, a user attempting to use the chaincode may need to verify their certificate on the traditional data source 332. To verify the user's authorization, the chaincode can use an out-of-band connection to this data through a traditional processing platform 338.
[0060] In some embodiments of the present disclosure, the blockchain herein may be a permissionless blockchain. In contrast to permissioned blockchains (e.g., blockchains 304 and 324) that require permission to join, anyone can join a permissionless blockchain. For example, to join a permissionless blockchain, a user may begin interacting with the network by creating a personal address and submitting transactions, thus adding entries to the ledger. Furthermore, all parties have the option of running a node on the system and utilizing a mining protocol that helps validate transactions.
[0061] 3C illustrates a network 350 having transactions processed by a permissionless blockchain 352 including multiple nodes 354, according to an example embodiment. A sender 356 wishes to transmit a payment or some other form of value (e.g., an act, medical history, contract, good, service, or any other asset that can be encapsulated in a digital record) to a receiver 358 via the permissionless blockchain 352. In some embodiments, the sender device 356 and the receiver device 358 may each have a digital wallet (associated with the blockchain 352) that provides user interface controls and display of transaction parameters. In response, the transaction is broadcast throughout the blockchain 352 to nodes 354 (referring to any one of nodes 354a-e).
[0062] Depending on the network parameters of the blockchain 352, the node uses a validation module 360 to validate transactions based on rules established by the permissionless blockchain 352 creator (which may be predefined or dynamically assigned). For example, this may include verifying the identities of the parties involved, etc. The transaction may be validated immediately or may be queued with other transactions, and the node 354 determines whether the transaction is valid based on a set of network rules.
[0063] In structure 362, valid transactions are formed into blocks and sealed with a lock (hash). This process may be performed by mining nodes among nodes 354. Mining nodes may use additional software specifically for mining and generating blocks for the permissionless blockchain 352. Each block may be identified by a hash (e.g., a 256-bit number) created using an algorithm agreed upon by the network 350. Each block may include a header, a pointer or reference to the hash of the header of the previous block in the chain, and a set of valid transactions. The reference to the hash of the previous block is associated with the creation of a secure, independent chain of blocks.
[0064] Before a block can be added to the blockchain 352, it must be validated. Validation of a permissionless blockchain 352 may involve Proof of Work (PoW), which is the solution to a puzzle derived from the block's header. Another process for validating a block, not shown in the example of FIG. 3C, is Proof of Stake. Unlike Proof of Work, where an algorithm rewards miners for solving a mathematical problem, in Proof of Stake, the creator of a new block is selected in a deterministic manner according to their wealth, also defined as "stake." A similar proof is then performed by the selected / elected nodes.
[0065] In the mining module 364, nodes attempt to solve a block by making incremental changes to one variable until the solution meets a network-wide target. This generates proof of work, which guarantees a correct answer. In other words, a potential solution must prove that computing resources were exhausted to solve the problem. In some types of permissionless blockchains, miners may be rewarded with value (e.g., coins) for successfully mining a block.
[0066] Here, the PoW process chains blocks together, making it extremely difficult for an attacker to modify the blockchain 352 by requiring an attacker to modify all subsequent blocks in order for a modification to one block to be accepted. Furthermore, as new blocks are mined, the difficulty of modifying the block increases, and the number of subsequent blocks increases. In the distribution module 366, successfully validated blocks are distributed throughout the permissionless blockchain 352, and all nodes 354 add the block to the majority chain, which is an auditable ledger of the permissionless blockchain 352. Furthermore, the value of the transaction submitted by the sender 356 is deposited or otherwise transferred to a digital wallet of the receiving device 358.
[0067] Figure 4A illustrates a blockchain system execution process 400 in which a new block is added to a distributed ledger 420, according to an example embodiment, and Figure 4B illustrates the contents of a new data block structure 430 for the blockchain, according to an example embodiment. The new data block 430 may include document linking data.
[0068] Referring to FIG. 4A , a client (not shown) may submit a transaction to blockchain nodes 411, 412, and / or 413 in process 400. A client may be an instruction to perform an activity on blockchain 422 received from any source. As an example, a client may be an application acting on behalf of a requester, such as a device, person, or entity, to propose a transaction to blockchain 422. Multiple blockchain peers (e.g., blockchain nodes 411, 412, and 413) may maintain a copy of the blockchain network state and distributed ledger 420. Different types of blockchain nodes / peers may exist within the blockchain network, including endorsing peers that simulate and approve transactions proposed by clients, and committing peers that verify the approvals, validate the transactions, and commit the transactions to distributed ledger 420. In this example, each of blockchain nodes 411, 412, and 413 may act as an endorser node, a committer node, or both.
[0069] The distributed ledger 420 comprises a blockchain that stores immutable, sequenced records in blocks (e.g., data blocks 423-430) and a state database 424 (current world state) that maintains the current state of the blockchain 422. There may be one distributed ledger 420 per channel, and each peer maintains its own copy of the distributed ledger 420 for each channel in which it is a member. The blockchain 422 is a transaction log structured as hash-linked blocks, with each block containing a sequence of N transactions. A block may comprise various components, such as those shown in FIG. 4B. The linking of blocks (e.g., data blocks 423-430) (shown by arrows in FIG. 4A) may be generated by adding a hash of the header of the previous block into the block header of the current block. In this way, all transactions on the blockchain 422 are sequenced and cryptographically linked together, preventing tampering with the blockchain data without breaking the hash links. Furthermore, because of these links, the most recent block in blockchain 422 (e.g., data block 430) represents all transactions that came before it. Blockchain 422 may be stored on a peer file system (local or attached storage) that supports append-only blockchain workloads.
[0070] The current state of the blockchain 422 and distributed ledger 420 may be stored in a state database 424, where current state data represents the latest values of all keys ever included in the on-chain transaction log of the blockchain 422. Chaincode invocations execute transactions against the current state in the state database 424. To make these chaincode interactions highly efficient, the latest values of all keys may be stored in the state database 424. The state database 424 may comprise an indexed view into the transaction log of the blockchain 422; therefore, it can be regenerated off-chain at any time. The state database 424 may be automatically recovered (or generated, if necessary) upon peer startup, before any transactions are accepted.
[0071] The endorsing nodes (411, 412, and / or 413) receive transactions from clients and approve the transactions based on the simulated results. The endorsing nodes hold smart contracts that simulate transaction proposals. When an endorsing node approves a transaction, it generates a transaction approval, which is a signed response from the endorsing node to the client application indicating approval of the simulated transaction. The way in which a transaction is approved depends on an endorsement policy, which may be specified in the chaincode. An example of an endorsement policy is "a majority of the endorsing peers must approve the transaction." Different channels may have different endorsement policies. The approved transaction is forwarded by the client application to the ordering service 410.
[0072] The ordering service 410 accepts approved transactions, orders them into blocks, and distributes the blocks to committing peers. For example, the ordering service 410 may start a new block when a transaction threshold is reached, a timer times out, or another condition occurs. In the example of FIG. 4A, blockchain node 412 is a committing peer that receives a new data block 430 of new data to be stored in blockchain 422. The first block 423 in blockchain 422 may be referred to as a genesis block, which contains information about the blockchain, its members, the data stored therein, etc.
[0073] The ordering service 410 may consist of a cluster of orderers. The ordering service 410 does not process transactions, smart contracts, or maintain a shared ledger. Rather, the ordering service 410 may accept approved transactions and specify the order in which these transactions are committed to the distributed ledger 420. The architecture of the blockchain network may be designed so that specific implementations of "ordering" (e.g., Solo, Kafka, Byzantine fault-tolerant, etc.) are pluggable components.
[0074] Transactions are written to the distributed ledger 420 in a consistent order. The order of transactions is established to ensure that updates to the state database 424 are valid when they are committed to the network. Unlike cryptocurrency blockchain systems (e.g., Bitcoin) where ordering is achieved by solving cryptographic puzzles or by mining, in this example, the parties to the distributed ledger 420 may choose the ordering mechanism that best suits their network.
[0075] When the ordering service 410 initializes a new data block 430, the new data block 430 may be broadcast to the committing peers (e.g., blockchain nodes 411, 412, and 413). In response, each committing peer validates the transactions in the new data block 430 by checking its read set and write set to ensure that they still match the current world state in state database 424. Specifically, a committing peer can determine whether the read data that existed when the endorser simulated the transaction is identical to the current world state in state database 424. When a committing peer validates a transaction, the transaction is written to the blockchain 422 on the distributed ledger 420, and the state database 424 is updated with the write data from the read-write set. If a transaction fails, i.e., if a committing peer determines that the read-write set does not match the current world state in state database 424, the transaction that was ordered into the block may still be included in the block but may be marked as invalid, and state database 424 may not be updated.
[0076] Referring to FIG. 4B , a new data block 430 (also referred to as a data block) stored on the blockchain 422 of the distributed ledger 420 may include multiple data segments, such as a block header 440, block data 450, and block metadata 460. It should be understood that the various illustrated blocks and their contents, such as the new data block 430 and its contents, are merely illustrative and are not intended to limit the scope of the illustrative embodiments. The new data block 430 may store transaction information for N transactions (e.g., 1, 10, 100, 500, 1000, 2000, 3000, etc.) in the block data 450. The new data block 430 may also include a link to a previous block (e.g., on the blockchain 422 of FIG. 4A ) in the block header 440. In particular, the block header 440 may include a hash of the header of the previous block. The block header 440 may also include a unique block number (e.g., data blocks 423-430), a hash of the block data 450 of the new data block 430, and the like. The block numbers of the new data block 430 are unique and may be assigned in various orders, such as incremental / sequential order starting from 0.
[0077] Block data 450 may store transaction information for each transaction recorded in new data block 430. For example, the transaction data may include one or more of the following: transaction type, version, timestamp, distributed ledger 420 channel ID, transaction ID, epoch, payload visibility, chaincode path (deploy transaction), chaincode name, chaincode version, inputs (chaincode and function), client (creator) identity such as public key and certificate, signature of endorser's client identity, endorser signature, proposal hash, chaincode event, response status, namespace, read set (e.g., list of keys and versions read by the transaction), write set (e.g., list of keys and values), start key, end key, list of keys, Merkle tree query summary, and the like. Transaction data may be stored for each of the N transactions.
[0078] Additionally, in some embodiments, block data 450 may store new data 462 that adds additional information to the hash-linked chain of blocks in blockchain 422. The additional information may include one or more of the steps, features, processes, and / or actions described or illustrated herein. Accordingly, new data 462 may be stored in an immutable log of blocks on distributed ledger 420. Several of the benefits of storing such new data 462 are reflected in various embodiments disclosed and illustrated herein. In FIG. 4B , new data 462 is shown in block data 450, but it may also be located in block header 440 or block metadata 460. New data 462 may include a document compound key used to link documents within an organization.
[0079] Block metadata 460 may store multiple fields of metadata (e.g., as a byte array, etc.). The metadata fields may include a signature attached to the block creation, a reference to the last constituent block, a transaction filter identifying valid and invalid transactions in the block, the last persisted offset of the ordering service that ordered the block, and the like. The signature, last constituent block, and orderer metadata may be added by the ordering service 410. Alternatively, the block committer (e.g., blockchain node 412) may add validity / invalidity information based on an endorsement policy, validation of the read / write set, and the like. The transaction filter may include a byte array of size equal to the number of transactions in block data 450 and a validation code identifying whether the transaction was valid / invalid.
[0080] Figure 4C illustrates a blockchain 470 for digital content, according to some embodiments described herein. Digital content may include one or more files and associated information. Files may include media, images, video, audio, text, links, graphics, animations, web pages, documents, or other forms of digital content. The immutable append-only aspect of the blockchain serves as a safeguard to protect the integrity, validity, and authenticity of the digital content, making it suitable for use in legal proceedings where admissibility rules apply, or in other situations where evidence is considered or the presentation and use of digital information is otherwise of interest. In this case, the digital content may be referred to as digital evidence.
[0081] A blockchain may be formed in a variety of ways. In some embodiments, digital content may be contained in and accessed from the blockchain itself. For example, each block of the blockchain may store a hash value of reference information (e.g., headers, values, etc.) along with the associated digital content. The hash value and the associated digital content may then be encrypted together. Thus, the digital content of each block may be accessed by decrypting each block in the blockchain, and the hash value of each block may be used as a basis for referencing previous blocks. This may be shown as follows:
[0082] Block 1 Block 2 ....... Block N
[0083] Hash value 1 Hash value 2 Hash value N
[0084] Digital Content 1 Digital Content 2 Digital Content N
[0085] In some embodiments, the digital content may not be included in the blockchain. For example, the blockchain may store an encrypted hash of the content of each block without any of the digital content. The digital content may be stored in a separate storage area or memory address in association with the hash value of the original file. The other storage area may be the same storage device used to store the blockchain, or it may be a different storage area or even a separate relational database. The digital content of each block may be referenced or accessed by obtaining or querying the hash value of the block of interest and then looking up the hash value in the storage area where it is stored in correspondence with the actual digital content. This operation may be performed, for example, by a database gatekeeper. This may be illustrated as follows: Blockchain Storage Area Block 1 hash value Block 1 hash value ... Contents · · Block N hash value Block N hash value ... Contents
[0086] In the exemplary embodiment of FIG. 4C, the blockchain 470 comprises a plurality of cryptographically linked blocks 4781, 4782...4783 in an ordered sequence. N where N is 1 or greater. Blocks 4781, 4782...478 N The encryption used to link the blocks 4781, 4782...4783 may be any of a number of keyed or unkeyed hash functions. N is the subject of a hash function that generates an n-bit alphanumeric output (where n is 256 or another number) from input based on the information in the block. Examples of such hash functions include, but are not limited to, SHA-type (SHA stands for Secure Hash Algorithm) algorithms, Merkle-Dangard algorithms, HAIFA algorithms, Merkle tree algorithms, nonce-based algorithms, and collision-resistant pseudorandom functions (PRFs). In another embodiment, blocks 4781, 4782, ..., 478 N may be cryptographically linked by a function different from the hash function. For illustrative purposes, the following description is given with respect to a hash function, e.g., SHA-2.
[0087] Blocks 4781, 4782...478 in the blockchain N Each of the files includes a header, a file version, and a value. The header and value are different for each block as a result of hashing within the blockchain. In some embodiments, the value may be included in the header. As described in more detail below, the file version may be the original file or a different version of the original file.
[0088] The first block 4781 in a blockchain is called the genesis block and includes a header 4721, an original file 4741, and an initial value 4761. The hashing scheme used for the genesis block, and indeed all subsequent blocks, may be different. For example, all of the information in the first block 4781 may be hashed together at once, or portions of the information in the first block 4781 may be hashed separately, followed by a hash of the separately hashed portions.
[0089] The second header 4721 may include one or more initial parameters, such as a version number, a timestamp, a nonce, route information, difficulty, a consensus protocol, a duration, a media format, a source, descriptive keywords, and / or other information associated with the original file 4741 and / or the blockchain. The first header 4721 may be generated automatically (e.g., by a blockchain network that manages the software) or manually by a blockchain participant. Other blocks 4782-4788 in the blockchain may also be generated automatically (e.g., by a blockchain network that manages the software) or manually by a blockchain participant. N Unlike the headers in , the header 4721 in genesis block 4781 does not reference a predecessor block, because there simply is no predecessor block.
[0090] The original file 4741 in the genesis block may be, for example, data captured by a device, with or without processing before inclusion in the blockchain. The original file 4741 may be received from a device, media source, or node through an interface of the system. The original file 4741 may be associated with metadata, which may be generated, for example, either manually or automatically, by a user, device, and / or system processor. The metadata may be included in the first block 4781 in association with the original file 4741.
[0091] Value 4761 in the genesis block is an initial value that is generated based on one or more unique attributes of original file 4741. In some embodiments, the one or more unique attributes may include a hash value for original file 4741, metadata for original file 4741, and other information associated with the file. In one implementation, initial value 4761 may be based on the following unique attributes: 1) A SHA-2 calculated hash value for the original file, 2) Originating Device ID, 3) the start timestamp for the original file, 4) the initial storage location of the original file; 5) The blockchain network member ID for the software that currently controls the original file and associated metadata.
[0092] Other blocks in the blockchain: 4782-478 N However, unlike the header 4721 of the first block, the headers 4722 to 4723 in the other blocks also have a header, a file, and a value. N Each of the remaining blocks contains the hash value of the immediately preceding block. The hash value of the immediately preceding block may simply be the hash of the preceding block's header, or it may be the hash value of the entire preceding block. By including the hash value of the preceding block in each of the remaining blocks, a block-by-block trace can be performed, as indicated by arrow 480, from the Nth block back to the genesis block (and associated original file) to establish an auditable and immutable evidence chain.
[0093] Also, headers 4722 to 472 in other blocks N may include other information, such as a version number, a timestamp, a nonce, root information, difficulty level, a consensus protocol, and / or other parameters or information associated with the corresponding file and / or blockchain in general.
[0094] Files 4742 to 474 in other blocks N may be equal to the original file or may be a modified version of the original file in the genesis block, depending on, for example, the type of processing performed. The type of processing performed may vary from block to block. Processing may involve any modification of the file in the preceding block, such as, for example, editing or otherwise changing the content of information, removing information, or adding or appending information to the file.
[0095] Additionally or alternatively, processing may involve simply copying a file from a previous block, changing the storage location of a file, analyzing a file from one or more previous blocks, moving a file from one storage or memory location to another, or performing actions on the file on the blockchain and / or its associated metadata. Processing involving analysis of a file may include, for example, appending, including, or otherwise associating various analytics, statistics, or other information associated with the file.
[0096] Other blocks in other blocks 4762~476 N The value in each of the blocks is unique and is different as a result of the operations performed. For example, the value in any one block corresponds to an updated version of the value in the previous block. The update is reflected in the hash of the block to which the value is assigned. Thus, the value of a block provides an indication of what operations were performed in the block and also allows tracing back through the blockchain to the original file. This tracking ensures the integrity of the file throughout the blockchain.
[0097] For example, consider the case where a portion of a file in a previous block has been edited, blocked out, or pixelated to protect the identity of a person depicted in the file. In this case, the block containing the edited file may include metadata associated with the edited file, such as how the edit was performed, who performed the edit, a timestamp, where the edit occurred, etc. The metadata may be hashed to form a value. Because the metadata for the block is different from the information hashed to form the value in the previous block, these values may be different from each other and may be recovered when decrypted.
[0098] In some embodiments, the value of a previous block may be updated (e.g., a new hash value calculated) to form the value of a current block when any one or more of the following occurs: The new hash value, in this example embodiment, may be calculated by hashing all or part of the information shown below: a) If the file has been processed in any way (e.g., if the file has been edited, copied, modified, accessed, or any other action taken), a new SHA-2 calculated hash value; b) a new storage location for the file; c) identified new metadata associated with the file; d) Transfer of access or control of a file from one blockchain participant to another.
[0099] 4D illustrates a block 490 that may represent the structure of a block in a blockchain (e.g., 470), according to some embodiments. i Header 472 i And, File 474 i and the value 476 i Includes:
[0100] Header 472 icontains the hash value of the predecessor block Block i-1 and further reference information, which may be, for example, any type of information described herein (e.g., header information containing references, properties, parameters, etc.). All blocks, except of course for the genesis block, reference the hash of the predecessor block. The hash value of the predecessor block may simply be the hash of the header in the predecessor block, or a hash of all or part of the information in the predecessor block, including files and metadata.
[0101] File 474 i includes a plurality of data, such as Data 1, Data 2, ..., Data N, in order. The data are tagged with Metadata 1, Metadata 2, ..., Metadata N, which describe the content and / or characteristics associated with the data. For example, the metadata for each data may include a timestamp for the data, keywords indicating the process of the data, people or other content depicted in the data, and / or other characteristics that may be useful in establishing the validity and content of the file as a whole, and information indicative of its use, particularly, e.g., digital evidence, as described in connection with the embodiments described below. In addition to the metadata, each data may be tagged with a reference REF 1, REF 2, ..., REF N to the preceding data to prevent tampering, gaps within the file, and sequential references through the file.
[0102] Once metadata is assigned to data (e.g., through a smart contract), it cannot be changed without an easily identifiable hash change that invalidates it. Thus, the metadata creates a data log of information that can be accessed for use by participants in the blockchain.
[0103] Value 476 i is a hash value or other value calculated based on any of the types of information mentioned above. For example, for any given block, Block i, the value for that block may be updated to reflect the processing performed on that block, such as a new hash value, a new storage location, new metadata for the associated file, a transfer of control or access, an identifier, or other operation or information being added. Although the values in each block are shown to be separate from the metadata and headers for the file's data, in other embodiments the values may be based in part or entirely on this metadata.
[0104] Once blocks 490 are formed, at any point, an immutable evidence chain for the file may be obtained by querying the blockchain for the transaction history of values across blocks. This query, or tracking procedure, may begin by decrypting the value of the most recently included block (e.g., the last (Nth) block), and then continuing to decrypt values of other blocks until the genesis block is reached and the original file is recovered. Decryption may also involve decrypting the headers in each block as well as the file and associated metadata.
[0105] Decryption is performed based on the type of encryption performed on each block. This may involve the use of a private key, a public key, or a public and private key pair. For example, if asymmetric encryption is used, blockchain participants or processors in the network may use a predetermined algorithm to generate a public and private key pair. The public and private keys are related to each other through some mathematical relationship. The public key may be publicly distributed to serve as an address for receiving messages from other users, e.g., an IP address or home address. The private key is kept secret and is used to digitally sign messages sent to other blockchain participants. The signature is included in the message so that the receiver can verify it using the sender's public key. In this way, the receiver can be sure that only the sender could have sent the message.
[0106] Generating a key pair may be similar to creating an account on the blockchain, but without actually registering anywhere. Also, every transaction performed on the blockchain is digitally signed by the sender using their private key. This signature ensures that only the account owner can track and transact on files on the blockchain (within the scope of their permissions as determined by the smart contract).
[0107] As described in more detail herein, it is contemplated that some or all of the operations of some embodiments of the methods described herein may be performed in an alternative order or not at all, and further, multiple operations may occur simultaneously or as part of a larger process.
[0108] 5 illustrates a high-level block diagram of an exemplary computer system 501 that may be used to implement (e.g., using one or more processor circuits of a computer or computer processor) one or more of the methods, tools, and modules, and any associated functionality described herein, according to embodiments of the present disclosure. In some embodiments, major components of computer system 501 may include one or more CPUs 502, a memory subsystem 504, a terminal interface 512, a storage interface 516, an I / O (input / output) device interface 514, and a network interface 518, all of which may be communicatively coupled, directly or indirectly, for inter-component communication via a memory bus 503, an I / O bus 508, and an I / O bus interface unit 510.
[0109] Computer system 501 may include one or more general-purpose programmable central processing units (CPUs) 502A, 502B, 502C, and 502D, collectively referred to herein as CPUs 502. In some embodiments, computer system 501 may include multiple processors typical of larger systems, while in other embodiments, computer system 501 may instead be a single-CPU system. Each CPU 502 may execute instructions stored in memory subsystem 504, which may include one or more levels of on-board cache.
[0110] The system memory 504 may include computer system-readable media in the form of volatile memory, such as random access memory (RAM) 522 or cache memory 524. The computer system 501 may also include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, the storage system 526 may be provided for reading from and writing to non-removable, non-volatile magnetic media, such as a “hard drive.” Although not shown, a magnetic disk drive may be provided for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), or an optical disk drive may be provided for reading from and writing to a removable, non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical media. Additionally, the memory 504 may include flash memory, such as a flash memory stick drive or flash drive. Memory devices may be connected to the memory bus 503 by one or more data media interfaces. The memory 504 may include at least one program product having a set (e.g., at least one) of program modules configured to perform the functions of various embodiments.
[0111] One or more programs / utilities 528, each having at least one set of program modules 530, may be stored in memory 504. The programs / utilities 528 may include a hypervisor (also called a virtual machine monitor), one or more operating systems, one or more application programs, other program modules, and program data. Each of these operating systems, one or more application programs, other program modules, and program data, or any combination thereof, may comprise an implementation of a networking environment. The programs 528 and / or program modules 530 generally perform the functions or methods of the various embodiments.
[0112] 5 as a single bus structure providing a direct communication path between CPU 502, memory subsystem 504, and I / O bus interface 510, memory bus 503, in some embodiments, may include multiple distinct buses or communication paths that may be arranged in any of a variety of configurations, such as point-to-point links in a hierarchical, star, or web configuration, multiple hierarchical buses, parallel redundant paths, or any other suitable type of configuration. Additionally, while I / O bus interface 510 and I / O bus 508 are each shown as single units, computer system 501, in some embodiments, may include multiple I / O bus interface units 510, multiple I / O buses 508, or both. Additionally, while multiple I / O interface units are shown isolating I / O bus 508 from the various communication paths extending to the various I / O devices, in other embodiments, some or all of the I / O devices may be directly connected to one or more system I / O buses.
[0113] In some embodiments, computer system 501 may be a multi-user mainframe computer system, a single-user system, or a server computer or similar device that has little or no direct user interface but receives requests from other computer systems (clients). Further, in some embodiments, computer system 501 may be implemented as a desktop computer, a portable computer, a laptop or notebook computer, a tablet computer, a pocket computer, a telephone, a smartphone, a network switch or router, or any other suitable type of electronic device.
[0114] It should be noted that Figure 5 is intended to illustrate representative major components of an exemplary computer system 501. However, in some embodiments, the individual components may be more or less complex than depicted in Figure 5, there may be components other than or in addition to those depicted in Figure 5, and the number, type, and configuration of such components may vary.
[0115] As described in more detail herein, it is contemplated that some or all of the operations of some embodiments of the methods described herein may be performed in an alternative order or not at all, and further, multiple operations may occur simultaneously or as part of a larger process.
[0116] The present invention may be a system, method and / or computer program product integrated at any possible level of technical detail. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions that cause a processor to perform aspects of the present invention.
[0117] A computer-readable storage medium may be a tangible device capable of holding and storing instructions for use by an instruction execution device. The computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves with instructions recorded thereon, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium itself is not considered to be a transitory signal, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., an optical pulse passing through a fiber optic cable), or an electrical signal transmitted over a wire.
[0118] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may comprise copper transmission cables, fiber optic transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium within the respective computing / processing device.
[0119] The computer-readable program instructions for performing the operations of the present invention may be either assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or source or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk®, C++, and procedural programming languages such as the “C” programming language or similar programming languages. The computer-readable program instructions may run entirely on the user's computer, as a standalone software package, partially on the user's computer, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, to carry out aspects of the present invention, electronic circuitry including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute computer-readable program instructions to customize the electronic circuitry by utilizing state information of the computer-readable program instructions.
[0120] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0121] These computer-readable program instructions may be provided to a processor of a computer or other programmable data processing apparatus to produce a machine, whereby the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may also be stored on a computer-readable storage medium capable of instructing a computer, programmable data processing apparatus, and / or other device to function in a particular manner, such that the computer-readable storage medium having the instructions stored thereon comprises an article of manufacture having instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0122] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be executed on the computer, other programmable apparatus, or other device to generate a computer-implemented process, whereby the instructions executing on the computer, other programmable apparatus, or other device implement the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0123] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may actually be realized as a single step, executed concurrently, substantially concurrently, partially, or fully in an overlapping manner, or the blocks may possibly be executed in reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that performs the specified functions or operations, or executes a combination of dedicated hardware and computer instructions.
[0124] The description of various embodiments of the present disclosure has been presented for purposes of illustration and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used herein has been chosen to best explain the principles of the embodiments, practical applications or technical improvements found in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.
[0125] While the present disclosure has been described with respect to specific embodiments, it is anticipated that variations and modifications thereof will become apparent to those skilled in the art. It is therefore intended that the following claims be interpreted to cover all such variations and modifications that are within the scope of the present disclosure.
[0126] Blockchain networks are computationally busy environments, with many processes (e.g., smart contracts, encryption, validation, etc.) that consume resources and have heavy IO (input / output) demands due to inter-network communication and replication.
[0127] Privacy in blockchain networks is currently achieved by placing a hash of data in a block and distributing the hash preimage to eligible nodes out-of-band (e.g., outside the blockchain network). Distribution can occur during approval or before committing the block. The transaction defining the collection can include an endorsement policy and a distribution policy. However, achieving privacy in this manner has several drawbacks. The system does not scale with high churn. Nodes that are either absent or unreachable at the time of computation must retrieve data at the commitment, slowing data processing. Under sufficiently high network churn, private data may even be lost. This method also assumes full-mesh connectivity. In some cases, some peers of an organization may not be reachable from the endorser, so some cases rely on retrieving data from remote organizations over a wide area network (WAN).
[0128] In some embodiments, a hybrid data segregation mechanism is proposed that combines private data collection with encryption. The method achieves data segregation in a blockchain using a hybrid approach of private data collection and symmetric encryption from hierarchical key derivation. In some embodiments, an implicit collection is used to define symmetric encryption keys, and then hierarchical collections (herein referred to as rings) are defined by the parties that hold these encryption keys. In one example, the key derivation mechanism is essentially a novel key exchange protocol between parties in a set of rings with corresponding sets of keys. Each new key in the sequence is derived from the previous key, forming a hierarchical key structure. For example, all previous keys in the lineage of the new key may have access to data encrypted by the new key, but the new key cannot access data encrypted by the previous keys.
[0129] A data collection can be a selected data partition, a group of files, a list of entries, one or more documents, or another form of data. In some embodiments, a data collection can be an organization-specific data collection. For example, a first organization can have a data collection shared with a second organization, or the first organization can create a key so that the second organization can share a data collection with the first organization. In some embodiments, the functions described herein are performed by a node of the organization. It is understood that functions described as being performed by a "node" can be performed by multiple nodes belonging to the organization or can be performed by a single node of the organization.
[0130] In some embodiments, a key may be used to encrypt data, decrypt data, or sign transactions. The ability of a key to encrypt data, decrypt data, and / or sign transactions is collectively referred to herein as access to a collection of data. For example, if it is stated that a first key and a second key may be used to access a second collection of data, then either the first key or the second key may be used to encrypt data for the second collection, decrypt data for the second collection, and / or sign a transaction related to the second collection of data, as described herein.
[0131] 6, a visualization 600 of access rings for a data collection in a blockchain network is shown, according to an embodiment of the present disclosure. In some embodiments, keys corresponding to each ring provide access to different levels of data, or hierarchical implicit collections of data.
[0132] An implicit collection is a predefined collection of data in a peer that corresponds to a private data collection for an organization. A collection does not need to be explicitly defined before using or granting access to an implicit collection. For example, an implicit collection could be "Income Documents." Instead of defining a new collection every time a document changes or is added, the "Income Documents" class may be implicitly defined, so that new access is not required every time there is a change to the collection "Income Documents." Hierarchical implicit collections are a monotonic access structure that defines encryption keys for a subset of parties, with various possible sizes. Hierarchical implicit collections have authorization level-based access control where an auditor has access to all implicit collections at all levels and can grant different access to other organizations.
[0133] 6, organization 620 in ring 605 has a symmetric encryption first key (K1) (not shown) for the organization's implicit collection that is generated at some peers of organization 1. For example, a node or administrator for organization 620 generates the first key for the first implicit collection. In some embodiments, only nodes in the first organization have access to K1, and therefore, only nodes in the first organization can access the data.
[0134] In some embodiments, an administrator of organization 620 defines ring 606 (e.g., a second ring) based on key K1 for a second implicit collection and derives symmetric encryption key K2 (not shown). In some embodiments, defining ring 606 may include identifying an organization and an implicit collection of data for that organization. Key K2 is distributed to organization 625. In some embodiments, defining a ring means specifying the implicit collection of data to be accessed (e.g., encrypted, decrypted, or signed) by the key and determining which organizations have access to the data. In some embodiments, both key K1 and key K2 provide access to the second implicit collection of data. Organization 620 then has access to all subsequent rings (e.g., rings 606-608) that have keys derived from key K1 for the first ring. In this example, only organization 620 has access to K1, and only organizations 625 and 620 have access to K2.
[0135] In some embodiments, ring 607 (e.g., a third ring) is defined and key K3 (not shown) is derived to provide access to a third implicit collection of data. In some embodiments, the third key is distributed to nodes of the third organization by nodes of the first organization or nodes of the second organization. In some embodiments, key K3 may be derived by organization 620 or 625 and provided to organization 630. In some embodiments, key K1, key K2, and key K3 provide access to the third implicit collection of data. Thus, any organization with access to key K1 or K2 can access the data corresponding to key K3.
[0136] In some embodiments, ring 608 (e.g., ring 4) is initialized and key K4 (not shown) is derived from key K3 to provide access to a fourth implicit collection of data. In some embodiments, key K4 may be derived by organizations 620, 625, and / or 630 and provided to organization 635. In some embodiments, keys K1, K2, K3, and K4 provide access to the fourth implicit collection of data. Thus, any organization with access to keys K1, K2, and / or K3 can access the data corresponding to key K4.
[0137] In some embodiments, the implicit data collection for the final ring (e.g., the last possible ring in the hierarchy) may be accessible by any organization on the blockchain network and may be accessible by any key that was before the final key. In some embodiments, the final ring is accessible by all organizations on the blockchain network and has a single collection and is intended to encrypt information in the collection from the ordering node.
[0138] In some embodiments, key K1 can be used to generate other ring hierarchies for other implicit collections of data. For example, organization 620 can use key K1 to generate key K2B for ring 609. In this example, K2B is a new key that will be used to encrypt the fifth implicit data collection and is provided to another organization other than 625, such as organization 630. Similarly, keys K2, K3, and K4 cannot access data encrypted with key K2B, but key K1 can access data encrypted with key K2B. In some embodiments, a hierarchy of rings may also be derived from ring 609, similar to subsequent rings (rings 607 and 608) derived from ring 606 above.
[0139] Referring now to FIG. 7, a flowchart of a process 700 for data segregation for a blockchain network is shown, according to an embodiment of the present disclosure.
[0140] Process 700 begins with operation 702 where a key is generated for a first ring or implicit collection of data. For example, a node at a first organization generates a symmetric encryption key K1 for the implicit collection of data for that organization.
[0141] Process 700 continues with operation 704, where additional keys for additional collections of data for additional organizations are derived based on the first key. For example, the first organization generates a second key based on the first key for a second collection of data associated with a second organization. In a more detailed example, an administrator of the first organization defines (e.g., initializes) a second ring using the example formula:
[0142] i∈{2,...n}:K 1i = PRF K1 (i) 2 (Formula 1)
[0143] In example formula 1, i is an additional organization (e.g., organizations {2,...n}), K represents a key (e.g., K1 is the key for the first ring with the first organization, K 1i is the key for the second organization in the second ring), and the PRF is a pseudorandom function. While the example of i is very simple, i can be chosen from a wide variety of numbers and is simply a way to designate each organization for key generation using the PRF. For example, it may be a designation code for the organization (e.g., 2), a random number used for the organization, or a serial number. In some embodiments, i becomes available on the blockchain ledger after generating the key. In some embodiments, each key is capable of decrypting all implicit data collections for all subsequent keys. For example, K1 is a key for K 1i can be used to access data encrypted using
[0144] In operation 706, the additional keys are distributed to additional organizations, for example, a first organization provides a second key to a second organization.
[0145] Operations 704-706 may be repeated multiple times for multiple tissues.
[0146] Continuing with the above example, operation 704 may be repeated to derive a third key for a third implicit data collection in the third ring, where the third key is derived from the second key (based on the first key). Continuing with the above example, the key may be derived by the second organization or the first organization. Based on Equation 1 above, all parties from the second ring (e.g., the first organization and organization i) may derive K 1i where j is the next party (e.g., i,j∈{2,...n}). <j)は、K 1ij =PRF K Derive a key (eg, a third key) of the collection for a third organization (eg, organization j) defined as 1i(j).
[0147] Key K 1ij is associated with the implicit data collection of organization j. 1ij is associated with the implicit collection of organization j, while both organization i and the first organization are associated with the implicit collection of organization j. 1ij The previous key from which it was derived (e.g., K1, K 1i ), we can calculate the key. 1j , and K 1ij is K 1ij It can be used to compute any key derived from
Claims
1. memory; and a processor in communication with the memory; wherein the processor: generating, by a first node of a first organization in a first ring, a first key for the first ring, wherein the first key unlocks a first collection of data; defining, by said first node, a second ring including a second node of a second organization; deriving, by the first node, a second key for a second collection of data based on the first key, where the first key and the second key access the second collection of data; and Distributing the second key to the second nodes. configured to perform a process including system.
2. defining a third ring including a third node of a third organization; deriving a third key for a third collection of data based on the second key; and Distributing the third key to the third node. The system of claim 1 further comprising:
3. The system of claim 2 , wherein the steps of defining a third node and deriving the third key are performed by the second node.
4. The system of claim 2 , wherein the steps of defining a third node and deriving the third key are performed by the first node.
5. The system of claim 2 , wherein the third key, the first key, and the second key access the third collection of data.
6. defining additional rings including additional nodes of additional organizations; deriving additional keys based on the third key for additional collections of data; and distributing said additional keys to said additional nodes. The system of claim 2 , further comprising:
7. 7. The system of claim 6, wherein the steps of defining additional rings, deriving the additional keys, and distributing the additional keys are performed multiple times for multiple nodes in multiple organizations.
8. generating, by a first node of a first organization in a first ring, a first key for the first ring, wherein the first key unlocks a first collection of data; defining, by said first node, a second ring including a second node of a second organization; deriving, by the first node, a second key for a second collection of data based on the first key, where the first key and the second key access the second collection of data; and Distributing the second key to the second node. A method for providing
9. defining a third ring including a third node of a third organization; deriving a third key for a third collection of data based on the second key; and Distributing the third key to the third node. The method of claim 8 further comprising:
10. 10. The method of claim 9, wherein the steps of defining a third node and deriving the third key are performed by the second node.
11. 10. The method of claim 9, wherein the steps of defining a third node and deriving the third key are performed by the first node.
12. The method of claim 9 , wherein the third key, the first key, and the second key access the third collection of data.
13. defining additional rings including additional nodes of additional organizations; deriving additional keys for additional collections of data based on the third key; and distributing the additional keys to the additional nodes.
13. The method of any one of claims 9 to 12, further comprising:
14. 14. The method of claim 13, wherein the steps of defining additional rings, deriving the additional keys, and distributing the additional keys are performed multiple times for multiple nodes in multiple organizations.
15. A computer program having embodied program instructions, the program instructions being executable by a processor to cause the processor to perform a method, the method comprising: generating, by a first node of a first organization in a first ring, a first key for the first ring, wherein the first key unlocks a first collection of data; defining, by said first node, a second ring including a second node of a second organization; deriving, by the first node, a second key for a second collection of data based on the first key, where the first key and the second key access the second collection of data; and Distributing the second key to the second nodes. A computer program comprising:
16. defining a third ring including a third node of a third organization; deriving a third key for a third collection of data based on the second key; and Distributing the third key to the third node. The computer program of claim 15 further comprising:
17. 17. The computer program product of claim 16, wherein the steps of defining a third node and deriving the third key are performed by the second node.
18. 17. The computer program product of claim 16, wherein the steps of defining a third node and deriving the third key are performed by the first node.
19. 19. The computer program product of claim 16, wherein the third key, the first key, and the second key access the third collection of data.
20. defining additional rings including additional nodes of additional organizations; deriving additional keys for additional collections of data based on the third key; and distributing said additional keys to said additional nodes.
20. The computer program of claim 16, further comprising:
Citation Information
Patent Citations
Method of generating cipher key, network system, and program
JP2010219912A
User-specified sharing of data via policy and / or inference from a hierarchical cryptographic store
US20100246827A1
Discovery of secure network enclaves
US20100318799A1
Blockchain-enabled datasets shared across different database systems
US20200042625A1