Patent Description:
In recent years, a blockchain in which a plurality of computers (blockchain nodes) are synchronized with each other and share histories of data transactions and modifications has attracted attention. The blockchain node includes, for example, a history database called a distributed ledger, writes a history related to data in the distributed ledger, and synchronizes the written distributed ledger with other blockchain nodes, thereby sharing an equivalent distributed ledger between the blockchain nodes.

Examples of related art include <CIT>, <CIT>, and <CIT>. Reference may also be made to <CIT> which relates to a database management system, DBMS. The DBMS is configured to generate a series of transaction log records and provide the series of transaction log records to a blockchain network for storing in a blockchain secured by the blockchain network. Each transaction log record corresponds to one of the database transactions and comprises i) the one or more commands according to which it was executed and ii) results of its execution. The series of transaction log records constitutes an immutable audit log from which database is fully recoverable for auditing purposes. Reference may also be made to <CIT> which relates to an immutable ledger with efficient and secure data destruction.

In order to reduce a burden on a blockchain node coupled to a blockchain network, a part of processing may be processed by a sub-chain. The sub-chain is a local network that corresponds to a blockchain node, and is installed, for example, under the blockchain by a business operator that manages the blockchain.

Even when data is processed in a sub-chain, a history of data processing is stored over a blockchain. However, the processing in the sub-chain is processing that is executed without publication by the business operator of the blockchain. For this reason, whether processing details indicated in the history are correct or not is determined only by trusting the business operator, and reliability may be low.

It is desirable to provide a communication program, a communication apparatus, and a communication method that improve reliability of a history of processing executed by a business operator on data.

Optional embodiments are set out in the dependent claims.

According to one aspect, it may be possible to improve a reliability of a history of processing executed by a business operator on data.

<FIG> is a diagram illustrating a configuration example of a communication system <NUM>. The communication system <NUM> includes business operator systems <NUM>-<NUM> to <NUM>-<NUM> (hereinafter, each may be referred to as a business operator system <NUM>), a consortium server <NUM>, and a blockchain network <NUM>. The communication system <NUM> is a communication network that employs a blockchain.

The business operator systems <NUM>-<NUM> to <NUM>-<NUM> include blockchain nodes <NUM>-<NUM> to <NUM>-<NUM> (hereinafter, each may be referred to as a blockchain node <NUM>), respectively. The business operator system <NUM> communicates, by using the blockchain node <NUM>, with another blockchain node <NUM> via the blockchain network <NUM>. The business operator system <NUM> uses the blockchain node <NUM> to perform publication or transaction of data with other business operator systems <NUM>. For example, the business operator system <NUM> includes a distributed ledger in the blockchain node <NUM>, and stores a history of processing on data (hereinafter, may be referred to as data processing) such as generation, publication, transaction, and modification of data in the distributed ledger. The business operator system <NUM> shares the distributed ledger having the same details with the other business operator systems <NUM> by synchronizing the distributed ledger with the other business operator systems <NUM>.

The business operator system <NUM>-<NUM> includes a local network. The local network includes, for example, a data management server <NUM>, a sub-chain network <NUM>, and a sub-chain node <NUM>. The data management server <NUM> is coupled to the blockchain node <NUM>-<NUM>, and acquires data from the blockchain node <NUM>-<NUM> (check-out) and delivers data to the blockchain node <NUM>-<NUM> (check-in). The sub-chain network <NUM> is a network different from the blockchain network <NUM>, and is, for example, a local network. The sub-chain node <NUM> is a communication apparatus that performs communication via the sub-chain network <NUM>. The sub-chain node <NUM> performs data processing such as acquiring data from the data management server <NUM>, modifying the acquired data, and delivering the modified data to the data management server <NUM>. The sub-chain node <NUM> is, for example, a computer or a server machine operated in the business operator system <NUM>-<NUM>. The other business operator systems <NUM> may also include respective local networks similar to the business operator system <NUM>-<NUM>.

The consortium server <NUM> is a communication apparatus that provides a check program to the sub-chain node <NUM>, and is, for example, a computer or a server machine.

The check program is a program for performing check processing that includes checking processing (for example, acquisition, delivery, and modification) on data executed by the sub-chain node <NUM> and recording what kind of processing has been performed as a history. A processor or the computer included in the sub-chain node <NUM> implements the check processing described above by executing the check program.

The consortium server <NUM> delivers a check program to the sub-chain node <NUM> in response to a request from the sub-chain node <NUM>. The consortium server <NUM> communicates with the sub-chain node <NUM> via the blockchain node <NUM>, the blockchain network <NUM>, or another network (not illustrated), and delivers the check program by transmitting the check program to the sub-chain node <NUM>.

In the communication system <NUM>, the business operator system <NUM>-<NUM> modifies a part of data by using the sub-chain node <NUM>. At this time, the sub-chain node <NUM> requests the consortium server <NUM> for the check program. The sub-chain node <NUM> executes processing on data after executing the check program. Thus, the check program may check the processing on the data. The sub-chain node <NUM> executes the check program to generate a history of processing on the data. A signature of the consortium server <NUM> is given to this history by the execution of the check program. By giving this signature, the history may be proved to be a history authenticated by the consortium server <NUM>, and the reliability is improved.

In <FIG>, the sub-chain node <NUM> is described as a different communication apparatus from the blockchain node <NUM>, but may be the same apparatus. Although a case where the sub-chain node <NUM> executes data processing will be described below as an example, similar processing may be applied to a case where the blockchain node <NUM> executes data processing. In a case where the blockchain node <NUM> executes data processing, the reliability of the processing of the blockchain node <NUM> may be improved.

<FIG> is a diagram illustrating a configuration example of the consortium server <NUM>. The consortium server <NUM> includes a central processing unit (CPU) <NUM>, a storage <NUM>, a memory <NUM>, and a communication circuit <NUM>, and is, for example, a server machine.

The storage <NUM> is an auxiliary storage device, such as a flash memory, a hard disk drive (HDD), a solid-state drive (SSD), and the like for storing programs or data. The storage <NUM> stores a check program request reception program <NUM> and a check program <NUM>. The check program <NUM> is a program executed by the sub-chain node <NUM>, and is a program for verifying (checking) data processing executed by the sub-chain node <NUM>.

The memory <NUM> is an area in which a program stored in the storage <NUM> is loaded. The memory <NUM> may also be used as an area in which a program stores data.

The CPU <NUM> is a processor that loads a program stored in the storage <NUM> into the memory <NUM>, executes the loaded program, constructs each unit, and implements each processing.

The communication circuit <NUM> is a circuit that communicates with other devices. The communication circuit <NUM> transmits and receives data to and from other devices via a network. The communication circuit <NUM> is, for example, a network interface card (NIC).

By executing the check program request reception program <NUM>, the CPU <NUM> constructs a transmission unit and a reception unit to perform check program request reception processing. The check program request reception processing is processing executed when a check program request for requesting delivery (transmission) of a check program is received from the sub-chain node <NUM> or the blockchain node <NUM>. In the check program request reception processing, the consortium server <NUM> generates a secret key and a public key, gives the secret key to the check program, and transmits the check program to the sub-chain node <NUM>.

<FIG> is a diagram illustrating a configuration example of the sub-chain node <NUM>. The sub-chain node <NUM> is, for example, a communication apparatus including a CPU <NUM>, a storage <NUM>, a memory <NUM>, and a communication circuit <NUM>.

The storage <NUM> is an auxiliary storage device, such as a flash memory, an HDD, and an SSD, for storing programs or data. The storage <NUM> stores a check program request program <NUM>, a check program reception program <NUM>, and a data processing program <NUM>.

The communication circuit <NUM> is a circuit that communicates with other devices. The communication circuit <NUM> transmits and receives data to and from other devices via a network. The communication circuit <NUM> is, for example, a NIC or a wireless communication circuit.

By executing the check program request program <NUM>, the CPU <NUM> constructs a request unit and performs check program request processing. The check program request processing is processing of transmitting a check program request to the consortium server <NUM>, and is executed as, for example, preprocessing for executing data processing. The check program request processing may be performed by, for example, the blockchain node <NUM>.

By executing the check program reception program <NUM>, the CPU <NUM> constructs an acquisition unit and a check unit and performs check program reception processing. The check program reception processing is processing performed when the check program is acquired from the consortium server <NUM>. In the check program reception processing, the sub-chain node <NUM> executes the check program and verifies data processing. The sub-chain node <NUM> gives a signature to the verification result (check result) and publishes the verification result with the signature in the blockchain.

By executing the data processing program <NUM>, the CPU <NUM> constructs a data processing unit and performs data processing. The data processing is processing on data, and is, for example, processing of performing check-in, check-out, and modification (including deletion, integration, K-anonymization, and the like) of data.

<FIG> is a diagram illustrating an example of a sequence of data processing by the sub-chain node <NUM>. When performing data processing on certain data in the sub-chain network, the blockchain node <NUM> transmits a check program request to the consortium server <NUM> (S10).

Upon receiving the check program request (S10), the consortium server <NUM> performs check program request reception processing (S100 in <FIG>).

<FIG> is a diagram illustrating an example of a processing flowchart of the check program request reception processing S100. The consortium server <NUM> waits for reception of the check program request (No in S100-<NUM>).

Upon receiving the check program request (Yes in S100-<NUM>), the consortium server <NUM> generates keys (public key and secret key) for a signature (S100-<NUM>). The consortium server <NUM> publishes the public key in the blockchain (S100-<NUM>). The publication of the public key in the blockchain is, for example, storing the public key in the blockchain node <NUM>.

The consortium server <NUM> gives a secret key to the check program (S100-<NUM>). The check program is a program that may be used in the sub-chain of the business operator system <NUM>, and is prepared in advance and stored in an internal memory or the like of the consortium server <NUM>, for example.

The consortium server <NUM> delivers the check program with the secret key to the sub-chain node <NUM> of the blockchain node <NUM> that requests the check program (S100-<NUM>), and ends the processing.

Referring back to the sequence of <FIG>, in the check program request reception processing S100, the consortium server <NUM> delivers the check program with the secret key to the sub-chain node <NUM> (S11 and S100-<NUM> in <FIG>). Upon receiving the check program, the sub-chain node <NUM> performs check program reception processing (S200 in <FIG>).

<FIG> is a diagram illustrating an example of a processing flowchart of the check program reception processing S200. In the check program reception processing S200, the sub-chain node <NUM> waits for reception of the check program (No in S200-<NUM>). Upon receiving the check program (Yes in S200-<NUM>), the sub-chain node <NUM> executes the check program (S200-<NUM>). By executing the check program, monitoring of data processing is started. The sub-chain node <NUM> may confirm the signature of the check program before the processing S200-<NUM>. In a case where the signature is not correct, the check program may be requested again.

The sub-chain node <NUM> executes data processing (S200-<NUM>). At this time, since the monitoring of the data processing has been started in the processing S200-<NUM>, the check result (for example, history information indicating what kind of data processing has been executed) of the data processing in the processing S200-<NUM> is recorded by the check program.

The sub-chain node <NUM> gives a signature generated using the secret key, which has been given to the check program, to the check result of the data processing obtained by executing the check program (S200-<NUM>).

The sub-chain node <NUM> stores the check result with the signature in the blockchain (S200-<NUM>), and ends the processing. The storing in the blockchain is, for example, storing the check result with the signature in the distributed ledger included in the blockchain node <NUM>. The distributed ledger, which stores the check result with the signature, is synchronized between the blockchain nodes <NUM>, and the equivalent details are shared with other blockchain nodes <NUM>.

Referring back to the sequence in <FIG>, the sub-chain node <NUM> executes the check program in the check program reception processing S200 (S200-<NUM> in <FIG>). As the data processing (S200-<NUM> in <FIG>), the sub-chain node <NUM> acquires data by check-out of the blockchain node <NUM> (S12), modifies the data, and delivers the modified data to the blockchain node <NUM> by check-in of the blockchain node <NUM> (S13).

The sub-chain node <NUM> gives a signature to the check result obtained by the check program and delivers the check result with the signature to the blockchain node <NUM> (S14 and S200-<NUM> in <FIG>).

In the first embodiment, the sub-chain node <NUM> checks the data processing performed in a local environment such as the sub-chain network by using the check program acquired from the consortium server <NUM>. Other sub-chain nodes may confirm the validity of the data processing executed in the local environment by confirming the check result which is published in the blockchain and to which the signature generated using the secret key issued by the consortium server <NUM> is given. The other sub-chain nodes may confirm the signature with the public key.

Examples of a check by the check program are described. <FIG> is a diagram illustrating an example of a sequence in a case where data is influenza information. In <FIG>, the sub-chain node <NUM> uses prefecture West influenza information and prefecture East influenza information as input data, and outputs prefecture influenza K-anonymization information obtained by K-anonymization. In a case of personal information, K-anonymization indicates, for example, performing anonymization to an extent that an individual may not be identified.

The sub-chain node <NUM> acquires prefecture West influenza information by check-out of the blockchain node <NUM> (S20). The sub-chain node <NUM> acquires prefecture East influenza information by check-out of the blockchain node <NUM> (S21).

The sub-chain node <NUM> integrates the prefecture West influenza information and the prefecture East influenza information and generates prefecture influenza integration information (S22).

The sub-chain node <NUM> performs K-anonymization on the prefecture influenza integration information and generates prefecture influenza K-anonymization information (S23).

The sub-chain node <NUM> delivers the prefecture influenza K-anonymization information to the blockchain node <NUM> by check-in of the blockchain node <NUM> (S24).

By executing the check program, the sub-chain node <NUM> checks the processing S20 to S24 and generates a check result.

A check C20 is a check for the processing S20 and is a checked-out-content check. The checked-out-content check is a check for confirming whether the checked-out data is transmitted correctly. For example, in the checked-out-content check, data before check-out and data after check-out are compared, and when the data before check-out and the data after check-out are the same, it is determined that the checked-out data is transmitted correctly.

A check C21 is a check for the processing S21 and is the checked-out-content check.

A check C22 is a check for the processing S22 and is a data integration check. The data integration check is a check for confirming whether the data is integrated correctly. In the data integration check, for example, it is confirmed whether or not all the records of a plurality of pieces of data to be integrated are reflected in the integrated data, and it is determined that the data is correctly integrated when all the records are reflected.

A check C23 is a check for the processing S23 and is a K-anonymization check. The K-anonymization check is a check for confirming whether the data is anonymized correctly. In the K-anonymization check, for example, a record of data after K-anonymization and a record before K-anonymization are compared with each other based on the processing details of K-anonymization, and it is confirmed whether there is either excess or deficiency. In a case where there is neither excess nor deficiency, it is determined that K-anonymization is correctly performed. Since a record may be deleted depending on the processing details of K-anonymization, in a case where it is determined that the record is to be deleted, it is determined that K-anonymization has been correctly performed even when there is excess or deficiency.

A check C24 is a check for the processing S24 and is a checked-in-content check. The checked-in-content check is a check for confirming whether the checked-in data is transmitted correctly. For example, in the checked-in-content check, data before check-in and data after check-in are compared, and when the data before check-in and the data after check-in are the same, it is determined that the data is transmitted correctly.

The sub-chain node <NUM> checks the data processing by executing the check program, and stores each check result in the blockchain node <NUM> with a signature. Since data processing determined to be NG by the check program is inappropriate data processing, in a case where the check result is NG, the sub-chain node <NUM> may discard the data generated in the processing and restore the data before the generation.

In the example of each check described above, the check is determining whether the data processing is correct. However, for example, the check may be recording the details of the data processing as the check result. Each blockchain node <NUM> may determine whether or not correct data processing has been performed by confirming the details of the data processing.

Next, a second embodiment is described. In the second embodiment, for a part of processing, the consortium server <NUM> delivers a processing program corresponding to each data processing to the sub-chain node <NUM> instead of a check program.

<FIG> is a diagram illustrating an example of a sequence in a case where a part of processing is executed by a processing program. The details of the data processing are the same as those in the sequence illustrated in <FIG>.

Before executing data processing, the sub-chain node <NUM> acquires a check-out processing program, an integration processing program, a check-in processing program, and a check program from the consortium server <NUM>. Secret keys for a signature are given to the check-out processing program, the integration processing program, the check-in processing program, and the check program, respectively.

The sub-chain node <NUM> executes the processing S20 and S21 by using the check-out processing program (L20 and L21). By executing the check-out processing program, check-out processing is correctly executed. The sub-chain node <NUM> gives a signature to the execution result of the check-out processing program and delivers the execution result with the signature to the blockchain node <NUM> to publish the execution result with the signature in the blockchain.

The sub-chain node <NUM> executes the processing S22 by using the integration processing program (L22). By executing the integration processing program, integration processing is correctly executed. The sub-chain node <NUM> gives a signature to the execution result of the integration processing program and delivers the execution result with the signature to the blockchain node <NUM> to publish the execution result with the signature in the blockchain.

The sub-chain node <NUM> executes the processing S24 by using the check-in processing program (L24). By executing the check-in processing program, check-in processing is correctly executed. The sub-chain node <NUM> gives a signature to the execution result of the check-in processing program and delivers the execution result with the signature to the blockchain node <NUM> to publish the execution result with the signature in the blockchain.

In this manner, part of processing (check-out, check-in, and integration) is executed by using programs acquired from the consortium server <NUM>. However, on the other hand, K-anonymization (processing S23) is checked by using a check program (L23). In the K-anonymization, since a degree of anonymization and a method of anonymization vary, and it is up to the business operator to determine which method to use and how much to anonymize, it is difficult to prepare a common processing program in the consortium server <NUM>. Since processing with low versatility such as K-anonymization has different execution details depending on the business operator, such processing is not executed by a processing program acquired from the consortium server <NUM> and is checked by the check program. For example, only processing for performing the same thing in all business operator systems may be executed by a processing program acquired from the consortium server <NUM>. The check result of K-anonymization processing is published with a signature in the blockchain as in the first embodiment.

A third embodiment is described. In the third embodiment, the sub-chain node <NUM> uses the same check program a plurality of times (or during a first time period). Each time the check program is used (or every second time period), the sub-chain node <NUM> acquires a processing identifier from the consortium server <NUM>. The processing identifier is acquired for each data unit for which data processing is performed. For example, one processing identifier is acquired for a series of data processing up to the generation of the prefecture influenza K-anonymization information described in the example of the first embodiment. For example, the processing identifier may be acquired as one unit of a series of data processing until target data is generated.

<FIG> is a diagram illustrating an example of a sequence of data processing by the sub-chain node <NUM>. The data processing is the same as that in the sequence in <FIG>, and therefore the description thereof is omitted.

The sub-chain node <NUM> (or the blockchain node <NUM>) transmits a processing identifier request for requesting a processing identifier to the consortium server <NUM> (S40).

Upon receiving the processing identifier request (S40), the consortium server <NUM> generates a processing identifier, encrypts the processing identifier with, for example, a public key, and delivers the processing identifier to the sub-chain node <NUM> (S41).

The sub-chain node <NUM> performs decryption by using a secret key and acquires the processing identifier. The data processing is performed, a signature using the processing identifier is given to the check result, and the check result with the signature is published in the blockchain.

The processing identifier is a hash value obtained by hashing a numerical value generated from a user identifier, a serial number, a random number, or the like by using a hash function. The processing identifier may be any other than the hash value as long as it is a unique value that may not be inferred from an outside.

<FIG> is a diagram illustrating an example of a signature of a check result. The sub-chain node <NUM> obtains a hash value for the check result, which is a signature target, by using the processing identifier (S1), generates a signature of the signature target to which the calculated hash value is added (S2), and gives the signature to the check result with the hash value.

Other blockchain nodes <NUM> may separate data related to the check result, to which the signature is given, into the hash value and other information, obtain a hash value for the other information by using the processing identifier as a key, and compare the two hash values with each other, thereby determining that the other information is a result of processing by a proper check program.

Although the check program is described as an example in the present embodiment, the processing programs described in the second embodiment may be used a plurality of times by performing similar processing.

In order to improve the reliability in the communication system <NUM>, it is further desired to improve security of a secret key for a signature. <FIG> is a diagram illustrating an example of a method of concealing a secret key for a signature.

The consortium server <NUM> divides a secret key for a signature into plural key fragments (S50), gives redundant data to the plural key fragments to generate redundant key data, and stores the redundant key data in a memory (S51). The consortium server <NUM> encrypts the redundant key data by using a public key of a user (a key different from a public key for a signature) to generate encrypted information (S52) and transmits the encrypted information to the sub-chain node <NUM>.

The sub-chain node <NUM> decrypts the encrypted information by using a secret key of the user (a key different from the secret key for a signature) to acquire the redundant key data (S53), deletes the redundant data from the redundant key data to acquire the plural key fragments, and combines the plural key fragments to acquire the secret key for a signature (S54). In this manner, the secret key for a signature may be more safely delivered.

Although the sub-chain node <NUM> executes the data processing or the check program in the above-described embodiments, the blockchain node <NUM> may execute the data processing and the check program, for example.

In any of the above aspects, the various features may be implemented in hardware, or as software modules running on one or more processors/computers.

Claim 1:
A communication program that causes a computer to execute a process, the process comprising:
acquiring, from a server in a blockchain network, a check program for checking processing on data;
executing (S200-<NUM>) the check program;
executing (S200-<NUM>) the data processing during the execution of the check program, the check program configured to monitor the data processing;
applying (S200-<NUM>) a first signature of the server to a check result generated by executing the data processing during the execution of the check program; and
publishing (S200-<NUM>) the check result with the first signature in the blockchain network, the process further comprising:
acquiring a processing identifier from the server for each data unit for which data processing is performed; and
generating the first signature for each data unit by using the acquired processing identifier.