Data storage system, receiving device, and data processing method
A distributed data storage system allows low-performance devices to process blockchain data by fragmenting and distributing program data across a network, enhancing reliability and reducing computational demands.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- DAI NIPPON PRINTING CO LTD
- Filing Date
- 2025-08-06
- Publication Date
- 2026-06-02
AI Technical Summary
Computers storing blockchain data require high computing and memory capabilities due to the need for hash value calculations, mining, and storage of constantly added blocks, making it difficult for low-performance devices to participate effectively.
A data storage system where multiple devices distribute data processing by dividing programs into fragments, transmitting them across a network, and allowing devices to store, further divide, or restore these fragments as needed for parallel processing.
Enables data processing with low-performance computers by utilizing distributed computation and storage methods, improving reliability and robustness while reducing computational load on individual devices.
Smart Images

Figure 0007868734000001_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to a data storage system, Receiving side devices, and data processing methods.
Background Art
[0002] In recent years, with the improvement of computer performance and the acceleration of network communication speed, various technologies have been researched and developed to improve the reliability and robustness of data storage by storing data using a plurality of computers connected via a network. For example, in the distributed ledger technology called blockchain, a plurality of computers store a database with a structure in which aggregates of data called blocks are linked in a chain, and it is made difficult to tamper with the data included in the blocks by using hash technology.
[0003] In Patent Document 1, an electronic trading device that stores trading data using blockchain technology has been proposed for the purpose of improving the confidentiality of data and the fairness of transactions related to electronic data transactions. This electronic trading device verifies the validity of this electronic data between the terminal on the transmission side and the terminal on the reception side of the electronic data.
Prior Art Documents
Patent Documents
[0004]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0005] Computers that store blockchain data require high computing and memory capabilities because they need to perform calculations such as hash value calculation, solving, and mining on their own, and because they need to coexist and hold data at each terminal on the chain. Furthermore, since new blocks are constantly being added to the blockchain, the computers need storage capacity sufficient to store them all.
[0006] This disclosure is made in light of the above circumstances and aims to provide a new technology that utilizes a data distribution, computation, and storage method that can be used with relatively low-performance computers. [Means for solving the problem]
[0007] One embodiment of the data storage system of the present disclosure is a data storage system in which a plurality of devices connected via a network store data in a distributed manner, wherein a delegated device included in the plurality of devices divides a program capable of executing data processing into a plurality of program data fragments, transmits each of the divided program data fragments to a receiving device included in one or more devices, the receiving device included in the plurality of devices further divides the received program data fragment if the received program data fragment does not satisfy the division termination condition, transmits each of the divided program data fragments to another receiving device included in one or more devices, stores the received program data fragment if the received program data fragment satisfies the division termination condition, the delegated device included in the plurality of devices retrieves the program data fragments stored in one or more receiving devices to restore the program, and executes the data processing using the restored program. Furthermore, the contracted device is included in one or more of the plurality of devices, and each of the one or more contracted devices recovers program data fragments of the program for its own device, restores the program for its own device, and executes the data processing in parallel using the restored program for its own device. do.
[0008] One embodiment of the receiving device of this disclosure further divides the received program data fragment if the received program data fragment does not satisfy the division termination condition, transmits each of the divided program data fragments to other receiving devices included in one or more devices, and stores the received program data fragment if the received program data fragment satisfies the division termination condition. Furthermore, if the receiving device is capable of performing the commissioned calculation using the received program data fragments, it will retrieve the program data fragments stored in one or more other receiving devices, restore the program, and then perform data processing using the restored program. do.
[0009] One aspect of the data processing method of the present disclosure is a data processing method performed in a data storage system in which a plurality of devices connected via a network store data in a distributed manner, wherein a delegated device included in the plurality of devices divides a program capable of executing data processing into a plurality of program data fragments, transmits each of the divided program data fragments to a receiving device included in one or more devices, the receiving device included in the plurality of devices further divides the received program data fragments if the received program data fragments do not satisfy the division termination condition, transmits each of the divided program data fragments to another receiving device included in one or more devices, stores the received program data fragments if the received program data fragments satisfy the division termination condition, the delegated device included in the plurality of devices retrieves the program data fragments stored in one or more receiving devices to restore the program, and executes the data processing using the restored program. Furthermore, if a receiving device included in the plurality of devices is capable of performing commissioned calculations using the received program data fragments, it will, as the commissioned device, retrieve program data fragments stored in one or more other receiving devices to restore the program, and then perform the data processing using the restored program. do. [Effects of the Invention]
[0010] This disclosure provides a new technology that utilizes data distribution, computation, and storage methods that can be used with relatively low-performance computers. [Brief explanation of the drawing]
[0011] [Figure 1] Figure 1 is a schematic diagram showing an example of the system configuration of the data storage system of this embodiment. [Figure 2] Figure 2 is a schematic diagram showing an example of the system configuration of the data storage system of this embodiment. [Figure 3] Figure 3 is a block diagram showing an example of the hardware configuration of the control device according to this embodiment. [Figure 4] Figure 4 is a block diagram showing an example of the hardware configuration of a node in this embodiment. [Figure 5] Figure 5 is a block diagram showing an example of the control device and the functional configuration of each node in this embodiment. [Figure 6] Figure 6 is a sequence diagram showing an example of the key sharing process of the control device and nodes by the key sharing method using the secret sharing method of the present embodiment. [Figure 7] Figure 7 is a diagram showing an example of the control information of the nodes of the present embodiment. [Figure 8] Figure 8 is an explanatory diagram of an example of the method of dividing the program of the arithmetic processing of the present embodiment. [Figure 9] Figure 9 is a diagram showing an example of the data structure of a packet for transmitting program data pieces by the nodes of the present embodiment. [Figure 10] Figure 10 is an explanatory diagram of an example of the method of dividing the program data pieces of the present embodiment. [Figure 11] Figure 11 is a diagram showing an example of the data structure of a packet for transmitting program data pieces by the nodes of the present embodiment. [Figure 12] Figure 12 is a diagram showing an example of the data structure of a packet for transmitting program data pieces by a node which is a k - 1 order diffusion node of the present embodiment. [Figure 13] Figure 13 is a sequence diagram showing an example of the process for entrusting arithmetic processing to other nodes using the distributed storage method of the present embodiment. [Figure 14] Figure 14 is a flowchart showing an example of the data division process of the present embodiment. [Figure 15] Figure 15 is a flowchart showing an example of the data piece diffusion process of the present embodiment. [Figure 16] Figure 16 is a sequence diagram showing an example of the process of entrusting and receiving the program of the arithmetic processing distributedly stored in the data storage system of the present embodiment. [Figure 17] Figure 17 is a flowchart showing an example of the recruitment advertisement transmission process of the present embodiment. [Figure 18] Figure 18 is a flowchart showing an example of the restoration process performed by the nodes of the present embodiment. [Figure 19] Figure 19 is a flowchart showing an example of the response process performed by the nodes of the present embodiment. [Figure 20] FIG. 20 is a sequence diagram showing an example of a process of restoring data to be processed distributedly stored in the data storage system of the present embodiment and performing an alternative operation. [Figure 21] FIG. 21 is a sequence diagram showing an example of a process for returning the processing result of an arithmetic operation to a delegate node using the distributed storage method of the present embodiment.
MODE FOR CARRYING OUT THE INVENTION
[0012] Hereinafter, embodiments of the present disclosure (hereinafter simply referred to as "the present embodiment") will be described in detail with reference to the drawings. Note that the present disclosure is not limited to the following embodiments. Also, the following embodiments can be combined as appropriate.
[0013] First, the configuration of the data storage system of the present embodiment will be described.
[0014] FIGS. 1 and 2 are schematic diagrams showing an example of the system configuration of the data storage system 1 of the present embodiment. FIG. 1 schematically shows an example of the physical network configuration of the data storage system 1, and FIG. 2 schematically shows an example of the logical network configuration of the data storage system 1.
[0015] As shown in Figure 1, the data storage system 1 comprises multiple nodes 20 (an example of multiple devices). The data storage system 1 may also include a control device 10. Including the control device 10 facilitates the configuration of a trust space, guarantee of rewards, and the division of program data fragments in a complex manner. The control device may be a single device within the trust space, or it may be a consortium of multiple devices operating in parallel and performing endorsements based on mutual authentication. The control device 10 and the multiple nodes 20 are connected via a network 2. Network 2 can be implemented by at least one of the following: the Internet, a LAN (Local Area Network), and a mobile phone network. Network 2 may be a wired network, a wireless network, or a mixture of wired and wireless networks.
[0016] Furthermore, as shown in Figure 2, in the data storage system 1, multiple nodes 20 form a peer-to-peer (P2P) network (more specifically, a mesh network) to realize distributed data storage. In the network configuration example shown in Figure 2, the nodes 20 are represented by circular symbols, and the communication paths between the nodes 20 are shown by solid or dashed lines. Although the communication paths between the control device 10 and each node 20 are not shown, the control device 10 is configured to communicate with each node 20.
[0017] In the following explanation, if it is not necessary to distinguish each node 20 individually, they may be simply referred to as "node 20" collectively. Furthermore, if it is necessary to distinguish a node 20 from other nodes 20, it may be described using the symbols shown in parentheses in Figure 2 (e.g., 20-1, 20-2a~20-2c, 20-3a~20-3f, 20-La~20-Lc, 20-M, 20-N, etc.). Also, for the sake of clarity, the names and functions of each node are described separately, but each node functions as another node in different scenarios. Even in the context of dispersal and retrieval of the same data or data fragments, a single node may perform several functions.
[0018] The control device 10 controls multiple nodes 20 and can be implemented by a computer such as a PC (Personal Computer) or a server device. The control device 10 selects nodes whose origins are known (reliable) from among the various nodes present on the network 2 as nodes 20 that constitute the data storage system 1 and places them under its control. The space composed of reliable nodes 20 and the control device 10 is called the trust space. Placing something under control means constructing a trust space or causing the nodes 20 to provide responses related to rewards in order to perform the role of the data storage system. As a method for placing something under control, for example, the encryption scheme execution unit and credential key may be installed in the node's main memory in the initial shipment state, or the node may receive the encryption via an external storage medium such as a SIM card. Of course, it is also possible to place something under control by exchanging encryption over the network. When exchanging encryption, for example, all the contents disclosed in Japanese Patent Publication No. 6863514 may be used. By using the information disclosed in Japanese Patent Publication No. 6863514, a more robust trust space can be constructed. In particular, it is desirable to use a key sharing method in which, in addition to the aforementioned cryptographic execution unit and the shared information which is the credential key, a predetermined generated value is shared between the node 20 and the control device 10, and each uses the generated value to generate multiple distributed pieces of information from the shared information using a predetermined encoding method that allows the pre-distribution data to be restored when all or part of the distributed data obtained by distributing the pre-distribution data into multiple parts is available, and one of the multiple distributed pieces of information or a derived piece of information derived from that one distributed piece of information is shared as a common key. With this method, a different encryption method can be used each time, and the secrecy of the code / binary as a copyrighted work can be maintained.
[0019] Furthermore, the data storage system 1 may permit communication with other nodes 20 under its control, but may prohibit communication with other nodes that are not under its control (i.e., whose identity is unknown).
[0020] As a result, each node 20's identity is guaranteed by the control device 10, and communication with nodes whose identity is not guaranteed (not under the control of the control device 10) is prohibited, thus guaranteeing that each node 20's communication partners are trustworthy. In this way, the control device 10 constructs a communication space of multiple nodes 20 under its control as a trusted space. More specifically, in the trusted space, connections between peers that have exchanged Zero Trust aircraft mutual authentication manifest as units, and a logical lower layer is formed by creating a mesh / nested trust relationship with multiple partners. On top of this, the control device 10 implements "complete whitelist communication," discarding and blocking all communications from / to (i.e., In / Out) to "nodes other than those in a trusted relationship." Furthermore, all communication packets are protected with an authentication key, signature, and strong encryption for sender identification, and their trustworthiness is checked multiple times. Therefore, no machine outside the trusted space can compromise communications and equipment within the trusted space, and is isolated from cyberattacks. A consortium of multiple control devices operating in parallel and performing endorsements based on mutual authentication is more desirable in terms of processing capacity. Multiple control devices exchange information separately for the operation of the system, and the method of this exchange can be a normal transmission method or it may be held in the distributed method of the present invention. A control device can function as a node. A node can function as a control device. The role of a control device can be based on an approval system.
[0021] Node 20 can be any communication device that can connect to network 2. Node 20 can be a variety of information processing devices, from high-performance information processing devices such as PCs, server devices, or game consoles, to low-performance information processing devices known as IoT (Internet of Things) devices, such as sensor devices or actuator devices.
[0022] If node 20 is the issuer of the original data to be stored in distributed storage, it divides the original data into multiple data fragments and sends each of the divided data fragments to other nodes 20 that are different from each other. Node 20 may maintain a list of other nodes that have previously exchanged data fragments and send data fragments only to nodes on that list, or prioritize nodes on that list. Node 20 may also issue a recruitment notice seeking nodes to receive data fragments and send processing code to nodes that apply. Furthermore, if node 20 is a receiver (receiving device) that receives data fragments from a higher node 20, and the received data fragment does not satisfy the division completion conditions, it may further divide the received data fragment and send each of the divided data fragments to other nodes 20 that are different from each other. When receiving data, node 20 may also act as a restorer (restorer device), checking the idle state of its own control device and main memory, etc., and if it determines that it is possible to execute the program data fragment, it may execute the program data fragment and send the result to the higher node. On the other hand, node 20 stores the received data fragments if they satisfy the partitioning termination conditions. Also, if node 20 is the restorer side that restores the original data, it recovers the distributed data fragments from other nodes 20 to restore the original data. The recruitment advertisement may include the computational load based on the Mega Instruction Process Steps (MIPS) and required time, the program size, the amount of memory required, and the amount of received data to be processed.
[0023] As a result, some of the multiple nodes 20 store data fragments of the original data, and the original data is stored in a distributed manner within the data storage system 1. Furthermore, the data fragments stored in the distributed nodes 20 can be retrieved as needed, and the original data can be restored. In this embodiment, such distributed storage is realized using multiple nodes 20 that are under the control of the control device 10 to establish a trust space. Therefore, the reliability and robustness of data storage can be further improved, and new technologies utilizing the distributed data storage method, such as the delegation of computational processing using the distributed storage method, can be provided.
[0024] The following describes a method in which one node 20 delegates arithmetic processing to another node 20 using a distributed storage method by the data storage system 1. In the following, node 20-1 (an example of a delegation device) is the delegation node (the issuer of the original data) that delegates arithmetic processing, and transmits the arithmetic processing program (an example of a program capable of executing data processing) by dividing it into program data fragments. Nodes 20-2a to 20-2c, 20-3a to 20-3f, 20-La to 20-Lc, etc., are diffusion nodes (receiving sides) that disseminate data fragments such as program data fragments received from higher-level nodes 20, and perform further division and storage of the received data fragments. Node 20-M (an example of a delegation device) is the receiving node that accepts the delegated arithmetic processing, and retrieves the dispersed program data fragments to restore the arithmetic processing program, and executes the arithmetic processing (an example of data processing) using the restored arithmetic processing program. Node 20-N (an example of a data providing device) is the node that provides the data to be processed for arithmetic processing.
[0025] In the following explanation, we will use the example of a data storage system 1 where the commissioning node and the providing node are node 20-1 and node 20-N, respectively, and the diffusion node and commissioning node are determined dynamically. In other words, for the sake of explanation, nodes 20-2a to 20-2c, 20-3a to 20-3f, and 20-La to 20-Lc are designated as diffusion nodes, and node 20-M is designated as the commissioning node. However, these are not predetermined but are determined during the data storage processing process. In the following explanation, nodes 20 that become diffusion nodes other than nodes 20-1, 20-M, and 20-N may be collectively referred to as node 20' (an example of a receiving device). However, these are merely settings for the sake of explanation, and in reality, any of the commissioning node, diffusion node, commissioning node, and providing node can be any of these, even in the diffusion and retrieval of the same data or data fragments, or in different scenarios.
[0026] Furthermore, while the example shown in Figure 2 illustrates one entrusted node, node 20-M, the number of entrusted nodes is not limited to this and may be multiple nodes.
[0027] Figure 3 is a block diagram showing an example of the hardware configuration of the control device 10 of this embodiment. As shown in Figure 3, the control device 10 comprises a control device 11, a main memory 12, an auxiliary memory 13, a communication device 14, and various buses 19. The control device 11, the main memory 12, the auxiliary memory 13, and the communication device 14 are connected via the various buses 19. Thus, the control device 10 of this embodiment has a general hardware configuration using a normal computer.
[0028] The control device 11 controls the overall operation of the control system 10. The control device 11 may be, for example, at least one of a CPU (Central Processing Unit) and a GPU (Graphics Processing Unit), but is not limited to these. There may be one or more CPUs or GPUs, and they may be single-core or multi-core.
[0029] Examples of main memory 12 include, but are not limited to, ROM (Read Only Memory) and RAM (Random Access Memory). ROM stores various programs, such as a program for controlling the control device 10 and a control program for controlling multiple nodes 20. RAM is used as a workspace when the control device 11 performs various controls based on the programs stored in ROM.
[0030] The auxiliary storage device 13 stores the various programs described above, as well as various data used to control the multiple nodes 20. The various programs described above only need to be stored in at least one of the main storage device 12 and the auxiliary storage device 13. Examples of the auxiliary storage device 13 include, but are not limited to, at least one of existing storage devices capable of magnetic, electrical, or optical storage, such as an HDD (Hard Disk Drive), SSD (Solid State Drive), and DVD (Digital Versatile Disc). The auxiliary storage device 13 may be built into the control device 10 or externally connected to the control device 10 via an interface such as USB (Universal Serial Bus). Furthermore, the auxiliary storage device 13 may be a NAS (Network Attached Storage) connected via a network such as a LAN or WAN (Wide Area Network).
[0031] The communication device 14 is used to communicate with node 20 and other devices via network 2. Examples of the communication device 14 include, but are not limited to, a communication device for a wired LAN or a wireless communication device for a wireless LAN.
[0032] In addition to the above configuration, the control device 10 of this embodiment may further include hardwired circuits such as ICs (Integrated Circuits), ASICs (Application Specific Integrated Circuits), and FPGAs (Field-Programmable Gate Arrays) that are specific to the control device 10.
[0033] Figure 4 is a block diagram showing an example of the hardware configuration of node 20 in this embodiment. As shown in Figure 4, node 20 comprises a control device 21, a main memory 22, an auxiliary storage device 23, a communication device 24, and various buses 29. The control device 21, the main memory 22, the auxiliary storage device 23, and the communication device 24 are connected via the various buses 29. Thus, node 20 in this embodiment has a general hardware configuration using a normal computer.
[0034] The control device 21 controls the overall operation of each node 20. The implementation method for the control device 21 is the same as for the control device 11, but it may also be implemented by, for example, an MPU (Micro Processing Unit).
[0035] The implementation method for main memory 22 is the same as that for main memory 12, so a detailed explanation will be omitted. The ROM of main memory 22 stores various programs, such as a program for controlling node 20 and a distributed storage / recovery program for distributing data and recovering distributed data.
[0036] The auxiliary storage device 23 stores various data, such as the various programs and data fragments mentioned above. The various programs mentioned above only need to be stored in at least one of the main memory device 22 (ROM) and the auxiliary storage device 23. The implementation method for the auxiliary storage device 23 is the same as that for the auxiliary storage device 13, so a detailed explanation is omitted. The programs may be interpreter language source code or executable binaries.
[0037] The communication device 24 is used to communicate with the control device 10 and other nodes 20 via the network 2. Since the implementation method for the communication device 24 is the same as that for the communication device 14, a detailed explanation is omitted.
[0038] In addition to the above configuration, node 20 in this embodiment may further include hardwired circuits such as ICs, ASICs, and FPGAs specific to node 20.
[0039] Figure 5 is a block diagram showing an example of the functional configuration of the control device 10 and each node 20 in this embodiment. As shown in Figure 5, the control device 10 includes a key sharing unit 101, a secure communication establishment unit 103, and a control unit 105. The key sharing unit 101, the secure communication establishment unit 103, and the control unit 105 can be realized, for example, by the control device 11, main memory 12, and communication device 14 described in Figure 3.
[0040] The control device 11 reads a control program stored in the main memory 12 (ROM) or auxiliary memory 13, for example, and loads it into the main memory 12 (RAM). The control device 11 implements each of the above-mentioned functional units by executing various processes according to the loaded program. Here, the above-mentioned functional units have been explained using the example of implementation as software, but at least a part of each of the above-mentioned functional units may be implemented as hardware. In this case, the functional unit to be implemented as hardware may be implemented, for example, by the hardwired circuit described above. Alternatively, any of the above-mentioned functional units may be implemented through the cooperation of software and hardware.
[0041] Furthermore, as shown in Figure 5, node 20-1, which is a delegated node (delegated device), includes a key sharing unit 201, a secure communication establishment unit 203, a delegated processing unit 211, and a receiving processing unit 281. Nodes 20' that become spreading nodes (nodes 20 other than nodes 20-1, 20-M, and 20-N) include a key sharing unit 201, a secure communication establishment unit 203, a spreading processing unit 221, and a response processing unit 241. Node 20-M, which becomes a receiving node (a receiving device, and may also be a receiving device), includes a key sharing unit 201, a secure communication establishment unit 203, a receiving processing unit 231, a processing execution unit 261, and a result processing unit 271. Node 20-N, which is a providing node, includes a key sharing unit 201, a secure communication establishment unit 203, and a providing processing unit 251. When a node is entrusted with a transmission, it may determine whether it can accept the incoming transmission based on its memory of past communication history with the node, or it may send the expected role and communication data capacity as pre-negotiation and negotiate whether it will accept or reject the transmission. A entrusting node may also be an accepting node depending on the data fragment, or depending on how the same data fragment is divided. An accepting node may also be an entrusting node depending on the data fragment, or depending on how the same data fragment is divided. Therefore, each component can be included in any node 20.
[0042] The functional configuration of each node 20 shown in Figure 5 is merely an example of the functional units necessary for the role that each node 20 plays, and the functional units included in each node 20 are not limited to these. Therefore, each node 20 may include all of the following: key sharing unit 201, secure communication establishment unit 203, delegation processing unit 211, propagation processing unit 221, acceptance processing unit 231, response processing unit 241, provision processing unit 251, processing execution unit 261, result processing unit 271, and receiving processing unit 281.
[0043] Each of the above-mentioned functional units of node 20 can be realized, for example, by the control device 21, main memory 22, and communication device 24 described in Figure 4. The control device 21 reads, for example, a distributed storage and recovery program stored in the main memory 22 (ROM) or auxiliary storage device 23 and expands it into the main memory 22 (RAM). The control device 21 realizes each of the above-mentioned functional units by executing various processes according to the expanded program. Here, the case in which each of the above-mentioned functional units is realized as software has been explained as an example, but at least a part of each of the above-mentioned functional units may be realized as hardware. In this case, the functional unit to be realized as hardware can be realized, for example, by the hardwired circuit described above. Alternatively, any of the above-mentioned functional units may be realized through the cooperation of software and hardware.
[0044] (Trust space building process) First, the process for establishing a communication space with multiple nodes 20 as a trusted space will be explained with reference to the key sharing unit 101, secure communication establishment unit 103, and control unit 105 of the control device 10 described above, as well as the key sharing unit 201 and secure communication establishment unit 203 of the node 20.
[0045] Prior to placing node 20 under its control, control device 10 verifies the identity and location of node 20. If there are no problems with the identity and location of node 20, control device 10 may place node 20 under its control by sharing a common key with node 20 using a secret sharing key sharing method and establishing secure communication (secure communication channel). However, the encryption exchange method described in Patent No. 6863514, as mentioned above, can also be adopted. The encryption exchange method described in Patent No. 6863514 was difficult to adopt in a format that divides and stores existing data fragments, but it became possible due to the existence of control device 10 or the construction of a trust space. In addition, the hash value of previously exchanged data may be used as the common key, or the hash value may be used to select which encryption key to use according to Patent No. 6863514.
[0046] Figure 6 is a sequence diagram showing an example of the key sharing process between the control device 10 and node 20 using the secret sharing method of this embodiment.
[0047] First, the key sharing unit 201 of node 20 distributes the file (A) it holds into two files (Aa, Ab) using an encryption key (step S101). In this embodiment, file (A) can be of any format. File (A) can be, for example, a file containing a program capable of executing data processing (e.g., source code for an interpreter) that node 20-1 delegates to other nodes 20, or it can be the program itself. However, it is not limited to this, and file (A) can also be a structured document such as JSON (JavaScript Object Notation) or XML (Extensible Markup Language), or a CSV (Comma Separated Values) file.
[0048] Alternatively, instead of the key sharing unit 201 of node 20, the key sharing unit 101 of control device 10 may use the encryption key to distribute the file (A) it holds into two files (Aa, Ab). In this case, file (A) may include, but is not limited to, device-specific information such as the device's serial number, device ID (IDentification), device model number (part number), manufacturer name, device catalog number, or device instruction manual number of the control device 10.
[0049] The file distribution method may be a secret sharing scheme that encrypts the original data using a symmetric-key cryptography scheme and distributes it to multiple distributed files, or it may be a method that encrypts the original data using a symmetric-key cryptography scheme and then divides (fragments) it into multiple data files. The secret sharing scheme is a predetermined encoding method that allows the original data to be restored by obtaining all or part of the distributed data obtained by distributing the original data into multiple files. In the former, encryption and distribution are performed simultaneously, while in the latter, encryption and fragmentation are performed separately. As encryption algorithms, for example, DES (Data Encryption Standard) or AES (Advanced Encryption Standard) can be used. During distribution, each node may divide the program in a manner similar to turning a part of a program into a function, and, separate from the hierarchy, assign an identification code to each program fragment to indicate which fragmented program it is. For example, rule-based fragmentation can be used for fragmentation. As another example, fragmentation may be performed by an AI trained by machine learning. Fractionation may be performed by the control device 10. Fractionation by an AI trained by machine learning can handle complex configurations. When using the control device 10, the load on low-performance nodes is reduced. Machine learning utilizes existing methods, such as deep learning, as appropriate.
[0050] The accepting device notifies the commissioning device of its identity and its "acceptance" of data processing. The accepting device receives the commissioning device ID or data ID or segmented branch number structure or appendix number of the target device to be processed, and the final recovery key of the assigned program from the commissioning device. At this time, the commissioning device ID or data ID or segmented branch number structure or appendix number may be included in the advertisement, and the exchange of data IDs may be carried out by this. The accepting device feeds the specified data to be processed into the reproducible independent miniature program and obtains the calculation result. The accepting device attaches the data ID to the calculation result and disseminates it using its own derived key. At this time, the current communication key with the requester may be used as the secret sharing decryption key.
[0051] By distributing the files, even if file (A) is leaked or illegally obtained, the attacker will not know the encryption key or distribution algorithm, thus preventing them from guessing the two files (Aa and Ab).
[0052] Next, the key sharing unit 201 of node 20 or the nodes 20 exchanging files send one of the two files (A-a, A-b) (here, file (A-a), an example of shared information) to the control device 10 for sharing (step S103). The following description assumes that the control device 10 is the other party. If it is an exchange between nodes 20, appropriately replace node 20 with one node 20 and the control device 10 with the other node 20. The key sharing unit 101 of the control device 10 receives file (A-a) and holds it in the auxiliary storage device 13. As a result, the control device 10 and node 20 share file (A-a).
[0053] It is also possible not to share file (A) as shared information. In this case, by sharing file (Aa) as shared information, even if file (Aa) is leaked or illegally obtained, two different files (Aa', Ab') can be generated again using file (A). Therefore, the control device 10 and node 20 can each generate different common keys as described later, and the impact of the leakage or illegal acquisition of shared information can be reduced.
[0054] Next, the key sharing unit 101 of the control device 10 sends an authentication request to the node 20 (step S105).
[0055] Next, the key sharing unit 201 of node 20 generates a random number (R) (an example of a generated value) (step S107), and transmits the generated random number (R) to the control device 10 to share the random number (R) (step S109). The key sharing unit 101 of the control device 10 can store the received random number (R) in the auxiliary storage device 13, and the key sharing unit 201 of node 20 can store the generated random number (R) in the auxiliary storage device 23.
[0056] Next, the key sharing unit 201 of node 20 distributes file (Aa) into n+1 files (Aaa, Aa1, ..., Aan) using a random number (R) as the encryption key (step S111). The file distribution here can use the method exemplified in step S101. The key sharing unit 201 of node 20 can store the generated files (Aaa, Aa1, ..., Aan) in the auxiliary storage device 23.
[0057] Next, the key sharing unit 101 of the control device 10, like the node 20, uses a random number (R) as the encryption key to distribute file (Aa) into n+1 files (Aaa, Aa1, ..., Aan) (step S113). The method illustrated in step S101 can also be used for distributing the files here. The key sharing unit 101 of the control device 10 can store the generated files (Aaa, Aa1, ..., Aan) in the auxiliary storage device 13.
[0058] Furthermore, the control device 10 and node 20 may use a derived value (R') derived from the random number (R) as the encryption key instead of the random number (R). Also, each time the random number (R) is shared between the control device 10 and node 20, the random number (R) generated by the key sharing unit 201 of node 20 may be a different value.
[0059] Next, the key sharing unit 101 of the control device 10 sends one of the n+1 files (Aaa, Aa1, ..., Aan) (in the example shown in the figure, file (Aaa)) to node 20 as distributed information for authentication (step S115).
[0060] Next, the key sharing unit 201 of node 20 authenticates the control device 10 by comparing the received file (Aaa) with the file (Aaa) it holds (Step S117). Specifically, if the received file (Aaa) and the file (Aaa) held by node 20 match, the key sharing unit 201 of node 20 determines that the control device 10 is a legitimate device and that authentication is successful. In this case, the key sharing unit 201 of node 20 sends a notification of authentication completion to the control device 10 (Step S119). Note that if the received file (Aaa) and the file (Aaa) held by node 20 do not match, the key sharing unit 201 of node 20 can stop processing, determining that authentication is not possible.
[0061] Next, the key sharing unit 201 of node 20 generates a shared key (in this case, shared key F1 from file (Aa1)) from one of the n files (Aa1, ..., Aan) if authentication is successful (step S121). The shared key can be generated from the file using a key derivation algorithm that applies a HASH function or the like. The file itself or a part of the file may also be used as the shared key.
[0062] Next, the key sharing unit 101 of the control device 10, like node 2010, generates a common key (in this case, a common key F2 from file (Aa2)) from one of the n files (Aa1, ..., Aan) (step S123).
[0063] From this point onward, the secure communication establishment unit 103 of the control device 10 and the secure communication establishment unit 203 of the node 20 establish secure communication using a double symmetric key with common keys F1 and F2 (step S125), and the required data can be double-encrypted and decrypted using the common key.
[0064] Specifically, the key sharing unit 101 of the control device 10 not only generates a common key F1 from file (Aa1) among the n files (Aa1, ..., Aan), but also generates a common key (for example, a common key Fn from file (Aan)) for establishing secure communication to notify node 20 of the common key F1. Similarly, the key sharing unit 201 of node 20 not only generates a common key F2 from file (Aa2) among the n files (Aa1, ..., Aan), but also generates a common key (for example, a common key Fn from file (Aan)) for establishing secure communication to notify the control device 10 of the common key F2. As a result, the secure communication establishment unit 103 of the control device 10 and the secure communication establishment unit 203 of node 20 establish secure communication using a single common key with the common key Fn. The secure communication establishment unit 103 of the control device 10 notifies node 20 of the common key F1 in this single-key secure communication, and the secure communication establishment unit 203 of node 20 notifies the common key F2 in this single-key secure communication to the control device 10. As a result, both the control device 10 and node 20 can agree to use common keys F1 and F2 for double-key secure communication, and can establish double-key secure communication using the common keys F1 and F2 described above.
[0065] Furthermore, the sharing of two common keys (F1, F2) between the control device 10 and node 20 may be implemented not by secure communication using a single common key with the common key Fn, but by using a common random number generator and sharing a common key for the two random numbers (numbers) generated by this generator. Alternatively, it may be implemented by applying a hash function to the previous messages between the control device 10 and node 20 and sharing a common key for the two values (numbers) derived from this hash function.
[0066] Furthermore, the secure communication using a dual symmetric key by the control device 10 and node 20 may be configured to change the symmetric key used for each session. In this case, one of the n files (Aa1, ..., Aan) that is not used to generate the symmetric key may be considered as file (Aa), and the processing from step S105 onwards in the flowchart shown in Figure 6 may be performed to generate the next generation of n+1 files for key generation and generate a new symmetric key.
[0067] Through the above process, the secure communication establishment unit 103 of the control device 10 establishes secure communication with node 20. The control unit 105 of the control device 10 issues a node ID that is unique in the trusted space and credentials that guarantee that node 20 is a trusted terminal to node 20 with whom secure communication has been established. Examples of credentials include, but are not limited to, a public key certificate that associates a public key with a certificate that verifies the identity of the issued node 20. The control unit 105 of the control device 10 may also send a private key corresponding to the public key to node 20 via secure communication and store the private key in the auxiliary storage device 23 of node 20.
[0068] The control device 10 performs the above-described process for each node 20 under its control, establishing secure communication and issuing credentials for each node 20. The control unit 105 of the control device 10 manages the control information used for controlling the nodes 20 under its control on the auxiliary storage device 13.
[0069] Figure 7 shows an example of control information for node 20 in this embodiment, where each node 20 is managed in association with its node ID (an example of device identification information). Credentials and location may also be managed in association. Location refers to the location of node 20 on network 2, and is, for example, address information such as an IP address, but is not limited to this. The control unit 105 of the control device 10 uses this control information to manage and control the communication partners of each node 20, thereby constructing a communication space of multiple nodes 20 under the control of the control device 10 as a trusted space. Note that if the IP address is IPv6, it is possible to communicate with unregistered addresses, so the above trusted space mechanism can prevent communication with addresses not registered in the known node list. Furthermore, if the IP address is IPv4 and the IP address of the communication partner is floating (the IP address is not fixed but changes dynamically), the communication partner can prevent their location from becoming unknown by promptly notifying the control device 10 of their current IP address and, if necessary, the port number, based on their own key ID.
[0070] The above describes an example of the trust space construction process in this embodiment. Note that the method for establishing secure communication between the control device 10 and the node 20 is not limited to the method described above; for example, all the contents disclosed in Japanese Patent Publication No. 6863514 can be used.
[0071] (Distributed storage processing for outsourcing) Next, the process for delegating computation processing to other nodes 20 using the distributed storage method of this embodiment will be explained with reference to the key sharing unit 201, the delegation processing unit 211 of node 20-1, and the diffusion processing unit 221 of node 20'.
[0072] First, let me explain about delegated nodes.
[0073] As mentioned above, node 20-1 is a delegation node to which arithmetic processing is delegated. It divides the arithmetic processing program into program data fragments and sends each of the divided program data fragments to different nodes 20'. The arithmetic processing program is stored, for example, in the auxiliary storage device 23 of node 20-1.
[0074] The key sharing unit 201 of node 20-1 generates an encryption key, which is a shared key for encrypting the computation program, when necessary, such as when a trust space has not been established or when stronger security is required. If the exchange is between nodes that have previously exchanged keys, the exchange of keys may be omitted by reusing the previous key or its derived key. For example, the key sharing unit 201 can generate an encryption key (an example of a first shared key) from an unused file (an example of a first distributed information file) among the n+1 files (examples of A aa, A a1, ..., A an, and multiple first distributed information files) generated in the trust space establishment process described above. Alternatively, the key sharing unit 201 can generate an encryption key from an unused file among the next generation of n+1 files for key generation described above.
[0075] The delegated processing unit 211 of node 20-1 performs a process to generate a data ID for the delegated arithmetic processing program (program data) to be uniquely identified within the data storage system 1. The delegated processing unit 211 can generate a data ID by, for example, combining a predetermined device ID for node 20-1 with the date and time information at that time. In the following explanation, we will assume that an ID of "XYZ" has been generated as the data ID.
[0076] The delegation processing unit 211 of node 20-1 encrypts the program (program data) of the delegated arithmetic processing using the encryption key generated by the key sharing unit 201, and divides it into program data fragments. The encryption and division of the arithmetic processing program may be done using the secret sharing method described above, or by encrypting the original data using a symmetric-key encryption method and then dividing (fragmenting) it into multiple data fragments. As an encryption algorithm, for example, DES or AES can be used.
[0077] The number of divisions in the arithmetic processing program may be a predetermined fixed number, or it may be variable depending on the communication status, etc. Furthermore, an upper limit may be set for the number of divisions. Note that whether the number of divisions in the arithmetic processing program is fixed or variable may differ for each node 20. As an example, after the data ID, the number of divisions for each division stage and the "branch number" indicating which division stage it is, written as a fraction, may be indicated, for example, in fractional format.
[0078] The delegated processing unit 211 of node 20-1 may, for example, specify the node ID of node 20-1 and query the control device 10 for a node 20' suitable for communication with node 20-1. A node 20' suitable for communication may be, for example, a node 20' with a short communication path distance (number of hops) to node 20-1, but is not limited to these. The delegated processing unit 211 may also communicate with the node 20' that the control device 10 has responded with and check the available capacity of the auxiliary storage device 23 of that node 20' and the communication speed with node 20-1.
[0079] If the number of divisions in the arithmetic processing program is fixed, the outsourcing processing unit 211 sets the number of nodes 20' that satisfy the conditions for communication partners from the nodes 20' confirmed in this way as destinations for sending the divided program data fragments. If the number of divisions in the arithmetic processing program is variable, the outsourcing processing unit 211 determines the number of nodes 20' that satisfy the conditions for communication partners and are less than or equal to the upper limit as the number of divisions, and sets the number of nodes 20' less than or equal to the upper limit as destinations for sending the divided program data fragments.
[0080] In this embodiment, we will explain using the example where the number of program data fragments divided by the delegated processing unit 211 of node 20-1 is 3, and the destination nodes 20 are nodes 20-2a to 20-2c. In this case, as shown in Figure 8, the delegated processing unit 211 divides the encrypted arithmetic processing program into program data fragments 1 to 3. Figure 8 is an explanatory diagram of an example of the program division method for arithmetic processing in this embodiment. However, the number of program data fragments and the destination nodes 20 are not limited to these.
[0081] The delegation processing unit 211 of node 20-1 generates packets for sending the divided program data fragments 1 to 3 to nodes 20-2a to 20-2c. Figure 9 shows an example of the data structure of a packet sent by node 20-1 to program data fragments in this embodiment. As shown in Figure 9, the data structure of the primary propagation packet by node 20-1, which is the delegation node (issuer), includes an owner data header, a payload, and an owner signature.
[0082] The owner data header corresponds to the data header of the primary propagation packet and includes the owner ID, data ID, and sub-number. The owner ID is the node ID "20-1" of node 20-1, which is the client (issuer) of the arithmetic processing program. The data ID is the ID "XYZ" of the arithmetic processing program mentioned above. The sub-number is the sub-number of the divided program data fragment, and in the example shown in Figure 9, it is "1 / 3". The denominator indicates the number of divisions, and the numerator indicates which data fragment of the divided program data fragment it corresponds to.
[0083] The payload includes a branch number data fragment and an error correction code. The branch number data fragment is the actual program data fragment 1 indicated by the branch number in the owner data header. The error correction code is an error correction code (parity) to provide redundancy to the program data fragment, and is data that allows the program to be reconstructed even if any of the program data fragments are missing during the reconstruction of the arithmetic processing program. Various code generation methods such as Hamming codes, cyclic codes, or convolutional codes may be employed for the error correction code.
[0084] The owner signature may include the issue time and the digital signature. The issue time is the time the packet was issued. The digital signature is the hash value of the payload and the issue time encrypted with the private key of the owner node 20-1. As mentioned above, the private key of node 20-1 is stored, for example, in the auxiliary storage device 23 of node 20-1.
[0085] The delegated processing unit 211 of node 20-1 generates packets with the data structure shown in Figure 9 for each of the divided program data pieces 1 to 3, and sends, for example, the packet for program data piece 1 to node 20-2a, the packet for program data piece 2 to node 20-2b, and the packet for program data piece 3 to node 20-2c. In other words, each packet has the ID of the arithmetic processing program (an example of program identification information) attached to the program data piece.
[0086] Next, we will explain diffusion nodes.
[0087] As mentioned above, node 20' is a diffusion node (a type of receiving device) that disseminates data fragments received from the higher-level node 20, and performs further division and storage of the received data fragments. If the receiving device determines that the received program data fragment is executable on its own, it functions as an accepting node (accepting device), which is another form of receiving device. As material for determining whether the received program data fragment is executable on its own, the computational load based on the Mega Instruction Process Steps (MIPS) and required time, program size, required memory amount, and amount of received processing data present in the recruitment advertisement may be referred to. Below, an example is described in which node 20-2a further divides and disseminates the received program data fragment, and node 20-3a stores the received program data fragment.
[0088] When node 20's spreading processing unit 221 receives a packet of program data fragments from node 20-1, it checks whether the program data fragments contained in the received packet satisfy the partitioning termination condition. The partitioning termination condition is, but is not limited to, that the data size of the program data fragments is smaller than a predetermined threshold. If node 20's spreading processing unit 221 determines that the data size of the program data fragments is greater than or equal to the threshold and does not satisfy the partitioning termination condition, it further partitions the program data fragments and sends each of the partitioned program data fragments to other nodes 20' that are different from each other. If it determines that the data size of the program data fragments is smaller than the threshold and satisfies the partitioning termination condition, it stores the received packet (which is received data and is a program data fragment) in node 20's auxiliary storage device 23.
[0089] When the spreading processing unit 221 of node 20-2a receives a packet of program data fragments shown in Figure 9 from node 20-1, it determines that the data size of program data fragment 1 with the error correction code added is greater than or equal to a threshold, and therefore the partitioning termination condition is not met. In this case, the spreading processing unit 221 of node 20-2a considers program data fragment 1 with the error correction code added to be a program data fragment to be repartitioned and divides it into further program data fragments.
[0090] The partitioning method used by the spreading processing unit 221 of node 20-2a is the same as the partitioning method used by the delegated processing unit 211 of node 20-1, except that encryption is not performed.
[0091] In this embodiment, we will explain using the example where the program data fragment is divided into 2 parts by the diffusion processing unit 221 of node 20-2a, and the destination (diffusion destination) nodes 20 are nodes 20-3a to 20-3b. In this case, as shown in Figure 10, the diffusion processing unit 221 divides the program data fragment 1 to which the error correction code has been added into program data fragments 1-1 and 1-2. Figure 10 is an explanatory diagram of an example of the program data fragment division method in this embodiment. However, the number of divisions of the program data fragment and the destination (diffusion destination) nodes 20 are not limited to these.
[0092] The propagation processing unit 221 of node 20-2a generates packets for transmitting (spreading) the divided program data fragments 1-1 and 1-2 to nodes 20-3a and 20-3b. Figure 11 shows an example of the data structure of a packet for transmitting program data fragments by node 20-2a in this embodiment. As shown in Figure 11, the data structure of the packet for secondary propagation by node 20-2a, which is the primary propagation node, may include an owner data header, a secondary data header, a payload, and a primary signature.
[0093] The owner data header is the same as the owner data header in Figure 9. The secondary data header corresponds to the data header of the packet for secondary propagation and includes the primary ID and the sub-number. The primary ID is the node ID "20-2a" of node 20-2a, which is the primary propagation node of the received program data fragment. The sub-number is the sub-number of the divided program data fragment, and in the example shown in Figure 11, it is "1 / 2". The denominator indicates the number of divisions, and the numerator indicates which data fragment of the divided program data fragment it corresponds to.
[0094] The payload may include a branch number data fragment and an error correction code. The branch number data fragment is the actual program data fragment 1-1 indicated by the branch number in the secondary data header. The error correction code may be an error correction code (parity) to provide redundancy to the program data fragment.
[0095] The primary signature may include the issuance time and the digital signature. The issuance time is the time the packet was issued. The digital signature is the hash value of the payload and the issuance time encrypted with the secret key of node 20-2a, which is the primary spreading node. As mentioned above, the secret key of node 20-2a is stored, for example, in the auxiliary storage device 23 of node 20-2a.
[0096] The spreading processing unit 221 of node 20-2a generates packets with the data structure shown in Figure 11 for each of the divided program data pieces 1-1 and 1-2, and transmits (spreads) the packet of program data piece 1-1 to node 20-3a and the packet of program data piece 1-2 to node 20-3b. Although a detailed explanation is omitted, nodes 20-2b and 2c each divide the received program data pieces 2 and 3 into two program data pieces, and node 20-2b transmits (spreads) them to nodes 20-3c and 3d, and node 20-2c transmits them to nodes 20-3e and 3f.
[0097] For reference, Figure 12 shows the data structure of a packet for k-th propagation by node 20', which is a k-1-th order propagation node. Figure 12 is a diagram showing an example of the data structure of a packet that transmits a program data fragment by node 20', which is a k-1-th order propagation node in this embodiment. As shown in Figure 12, the data structure of a packet for k-th propagation by node 20', which is a k-1-th order propagation node, may include an owner data header, a secondary data header, ... a k-th order data header, a payload, and a k-1-th order signature.
[0098] When the spreading processing unit 221 of node 20-3a receives a packet of program data fragments shown in Figure 11 from node 20-2a, it determines that the data size of program data fragment 1-1 with error correction codes added is smaller than the threshold and that the partitioning termination condition is met. In this case, the spreading processing unit 221 of node 20-3a stores the received packet (received data) in the auxiliary storage device 23 of node 20-3a. Although a detailed explanation is omitted, nodes 20-3b to 3f also store the received program data fragments. In other words, if the received program data fragment satisfies the partitioning termination condition, the spreading processing unit 221 of node 20' stores the received program data fragment in association with a data ID.
[0099] In this way, the divided data fragments propagate through the network and are re-divided at each node 20', and finally, the multiple divided data fragments are stored at multiple nodes 20' that determine that the division termination conditions are met.
[0100] Subsequently, node 20-1 issues a recruitment advertisement soliciting node 20 to undertake the computational processing. Node 20-M responds to this advertisement, undertakes the computational processing, retrieves the program data fragments distributed and stored in the data storage system 1, and restores and executes the computational processing program. In this case, node 20-M is the accepting node (accepting device). An accepting node (accepting device) is a node that executes the program. Nodes in the trust space other than node 20-1 can also issue recruitment advertisements, but it is also possible to limit the scope to only node 20-1. Hereafter, it will be described as if node 20-1 issued the recruitment advertisement. When issuing a recruitment advertisement, node 20-1 solicits nodes that possess the data fragment from the first division of the program data fragment (packet) with the specified data ID. However, for subsequent recruitment advertisements, it is desirable for each node to issue advertisements soliciting nodes that will perform a division one step larger than the data fragment it possesses. As will be explained in more detail later, node 20-M establishes secure communication with node 20-1 and obtains the encryption key used to encrypt the arithmetic processing program, as well as the data ID "XYZ" of the arithmetic processing program, from node 20-1. The technology described in Patent No. 6863514 can also be used for this secure communication.
[0101] (Restoration process) Next, the restoration process for recovering program data fragments (packets or transaction messages) distributed and stored in the data storage system 1 of this embodiment and restoring the program for arithmetic processing will be described with reference to the entrusted processing unit 231 of node 20-M and the response processing unit 241 of node 20'. Node 20-M is the receiving device in relation to node 20-1 as the entrusted device, and thereafter, the entrusted devices that received program data fragments before node 20-M.
[0102] In this embodiment, an example is described in which node 20-M, which has been entrusted with the arithmetic processing, retrieves program data fragments and performs program restoration processing for the arithmetic processing. However, the retrieval of program data fragments and the restoration of the program for the arithmetic processing may be performed by a device other than node 20-M, or they may be performed in cooperation with a device other than node 20-M. Furthermore, in this embodiment, as described in "Distributed Storage Processing for Delegation" above, it is assumed that nodes 20-3a to 20-3f store the received program data fragments necessary for the calculation.
[0103] The acceptance processing unit 231 of node 20-M checks its idle state and, if it determines that it can execute the arithmetic processing and acts as an accepting node (accepting device), and if it determines that there is no shortage of program data fragments for the execution of the arithmetic processing, it executes the arithmetic processing. If node 20-M determines that it can execute the arithmetic processing and acts as an accepting node (accepting device), and determines that there is a shortage of program data fragments for the execution of the arithmetic processing, it sends a retrieval advertisement to node 20' specifying the program data ID "XYZ" for the arithmetic processing in order to retrieve the program data fragments. The retrieval advertisement can be a message that includes, for example, a command instructing that a response be sent if a data fragment with the specified data ID is stored, and a data ID that specifies the target data. The acceptance processing unit 231 of node 20-M sends a retrieval advertisement to nodes 20-La~20-Lc, for example.
[0104] If node 20-M determines that it is unable to perform computational processing due to its idle state, it may cease acting as a entrusted node (accepting device) and issue a recruitment advertisement to solicit the next receiving device.
[0105] The response processing unit 241 of node 20', which received the retrieval advertisement, determines whether it has stored the program data fragment (packet) with the data ID specified in the retrieval advertisement. If it determines that it has stored it, it sends a response message to node 20-M, the source of the retrieval advertisement, notifying it that it has stored the specified program data fragment. The response message includes the sub-numbers of each data header contained in the stored packet (the packet containing the data fragment with the specified data ID) and the node ID of node 20'. For example, the response message may include information indicating that it is a response to the retrieval advertisement, as well as the sub-numbers of each data header and the node ID of node 20'.
[0106] Furthermore, the response processing unit 241 of node 20 that received the retrieval advertisement determines whether or not it has stored the program data fragment (packet) with the data ID specified in the retrieval advertisement. If it determines that it does not have the fragment, the response processing unit 241 of node 20 that received the retrieval advertisement forwards the retrieval advertisement to yet another node 20. If it determines that it does have the fragment, it may also forward the retrieval advertisement to yet another node 20. In this way, the retrieval advertisement is transmitted to each node 20 included in the data storage system 1, and finally the retrieval advertisement is received by node 20' that has stored the program data fragment. The response processing unit 241 of node 20' that has stored the program data fragment sends the above-described response message in response to the receipt of the retrieval advertisement.
[0107] In this embodiment, as described above, since nodes 20-3a to 3f store program data fragments, when the response processing unit 241 of nodes 20-3a to 3f receives a retrieval advertisement, it sends a response message to node 20-M, the source of the retrieval advertisement. As a result, the entrusted processing unit 231 of node 20-M, which has been entrusted with the arithmetic processing, can collect the branch number of each data header indicating the program data fragment and the node ID of node 20' that stores the program data fragment. The response message may be sent directly from the source nodes 20-3a to 3f to the destination node 20-M, or it may be sent from nodes 20-3a to 3f to node 20-M via another node 20.
[0108] In the data storage system 1 according to this embodiment, error correction codes are assigned to program data fragments. Therefore, even if some of the multiple program data fragments into which the arithmetic processing program is divided are missing and not all program data fragments are available, the arithmetic processing program can be restored if a certain number of program data fragments are available. The receiving processing unit 231 of node 20-M, which sent the retrieval advertisement, receives a response message from node 20' which stores the program data fragments, and when it has collected the branch numbers of each data header and the node ID for a number of program data fragments that allow for data restoration, it performs data restoration processing using this information.
[0109] The number of program data fragments required to reconstruct the arithmetic processing program may depend on the bit length and algorithm of the error correction code, etc. The entrusted processing unit 231 of node 20-M performs data reconstruction when it has collected the branch number of each data header and the node ID for a predetermined number of program data fragments (for example, 85% of the total). However, since reconstruction may not be possible with the information collected at this point, the entrusted processing unit 231 of node 20-M may use any additional information collected afterward for data reconstruction.
[0110] The entrusted processing unit 231 of node 20-M determines, based on the branch number of each collected data header, whether it is possible to reconstruct the program for the arithmetic processing using the program data fragments whose location is known at that time. If the receiving device determines that the received program data fragments cannot be executed on its own, it functions as a spreading node, which is another form of the receiving device. Specifically, the entrusted processing unit 231 of node 20-M examines the branch number of each collected data header and checks how complete the program data fragments divided in the final stage of division are, thereby determining whether the program data fragments in this final stage can be reconstructed into the program data fragments of the previous stage. Next, the entrusted processing unit 231 of node 20-M examines the branch number of each data header related to the program data fragments that it has determined can be reconstructed into the previous stage, and checks how complete the program data fragments divided in this stage are, thereby determining whether the program data fragments in this stage can be reconstructed into the program data fragments of the previous stage. The entrusted processing unit 231 of node 20-M determines whether restoration is possible by working backward from the final stage, and ultimately determines whether it is possible to restore the arithmetic processing program. If it is determined that restoration to the arithmetic processing program is not possible, the entrusted processing unit 231 of node 20-M waits until it receives additional information.
[0111] If it is determined that the calculation process can be restored to a program, the entrusted processing unit 231 of node 20-M queries the control device 10 for the location of node 20' corresponding to the given node ID, using the node ID provided along with the branch number of the data header, and requests that node 20' to send the program data fragment. At this time, the entrusted processing unit 231 of node 20-M sends a message to node 20' requesting the transmission of the program data fragment, specifying the data ID. This transmission request message may be sent directly from node 20-M to node 20', or it may be sent indirectly via another node 20.
[0112] The response processing unit 241 of node 20', which stores program data fragments, receives a transmission request message from node 20-M, reads the program data fragment with the data ID specified in the received transmission request message from the auxiliary storage device 23, and sends it to the requesting node 20-M. In this way, the program data fragment is retrieved based on the data ID. In this embodiment, the response processing units 241 of the six nodes 20-3a to 3f transmit program data fragments to node 20-M. These program data fragments may be transmitted directly from nodes 20-3a to 3f to node 20-M, or they may be transmitted indirectly via other nodes 20.
[0113] Upon receiving the program data fragments, the entrusted processing unit 231 of node 20-M reconstructs the program data fragments into a arithmetic processing program based on the branch numbers of each data header. Data reconstruction is performed by sequentially restoring from the final program data fragment to the previous one, similar to the determination of whether reconstruction is possible as described above, until it is finally restored to the original single data. In each stage of reconstruction, the entrusted processing unit 231 of node 20-M combines the multiple program data fragments in the order indicated by the branch numbers of each data header, and performs error correction using error correction codes as necessary, to restore them to the program data fragments before division. Finally, the entrusted processing unit 231 of node 20-M reconstructs the encrypted arithmetic processing program that has been reconstructed into a arithmetic processing program using the encryption key used for encryption.
[0114] As a result, the processing execution unit 261 of node 20-M can obtain a program for arithmetic processing and execute arithmetic processing based on the program, replacing the delegated node. The data to be processed is provided by the provision processing unit 251 of node 20-N. However, the provision processing unit 251 of node 20-N may apply the explanation of "distributed storage processing for delegation" to the data to be processed, divide the data to be processed into multiple data fragments, similar to the arithmetic processing program, send each of the divided data fragments to different nodes 20' for distributed storage in the data storage system 1, and the delegated processing unit 231 of node 20-M may apply the explanation of "restoration processing" to the data fragments of the data to be processed, similar to the arithmetic processing program, and recover the data fragments to restore the data to be processed, thereby obtaining the data to be processed. When the processing unit 231 of node 20-M retrieves the data fragments to be processed, node 20-M will recruit nodes that possess the first-stage divided data fragment (packet) of the data fragment (packet) to be processed with the specified data ID. However, for subsequent recruitment advertisements, it is desirable for each node to issue recruitment advertisements seeking nodes that have performed a deeper division than the data fragment it possesses.
[0115] Furthermore, the processing results from the processing execution unit 261 of node 20-M are provided to node 20-1. However, the result processing unit 271 of node 20-M may apply the explanation of "distributed storage processing for delegation" to the processing result data, and, similar to the arithmetic processing program, divide the data processing result data into multiple processing result data fragments, and send each of the divided processing result data fragments to different nodes 20' to distribute and store them in the data storage system 1. The receiving processing unit 281 of node 20-1 may then apply the explanation of "restoration processing" to the processing result data fragments of the processing result data, and, similar to the arithmetic processing program, retrieve the processing result data fragments to restore the processing result data, thereby obtaining the processing result data. Even when the receiving processing unit 281 of node 20-1 retrieves the processing result data fragments, node 20-1 recruits nodes that have the first division of the processing result data fragment (packet) of the specified data ID, but it is desirable that subsequent recruitment advertisements be issued by each node to recruit nodes that have performed a division one level deeper than the data fragment it possesses.
[0116] Furthermore, although this embodiment describes the case where there is only one node 20-M acting as the entrusted node, multiple nodes 20 may be provided to act as entrusted nodes. In this case, each of the multiple entrusted nodes 20 recovers program data fragments of its own device's program, restores its own device's program, and uses the restored program to execute data processing in parallel. The arithmetic processing program (the program for its own device) may be different or the same for each entrusted node. The data processing executed in parallel can be, for example, machine learning processing. The machine learning processing may be training processing of a machine learning model, or inference processing using a machine learning model. Here, for example, if the arithmetic processing program is a machine learning program, a pipeline-type machine learning processing using massive computing can be realized.
[0117] Next, the operation of the data storage system of this embodiment will be described.
[0118] Figure 13 is a sequence diagram showing an example of a process for delegating computation processing to another node 20 using the distributed storage method of this embodiment. Prior to this process, it is assumed that the trust space construction process by the control device 10 has been completed.
[0119] First, node 20-1, which is the entrusted node, performs a data transmission process in which it divides the program (program data) of the entrusted arithmetic processing into program data fragments and sends them (step S201). The program for arithmetic processing may be, for example, a program file that executes some minor process, but is not limited to this, and may be a program file that executes any processing or operation. The program file may be, for example, a program file in which the source code is written in an interpreter language, such as a JAR (Java Archive) file, or a program file in which the source code is written in machine language. For example, by making the program for arithmetic processing a program file written in an interpreter language, the equipment constraints of the entrusted device that undertakes and executes the arithmetic processing can be relaxed, and the degree of freedom of node 20, which can become the entrusted device, can be increased.
[0120] Figure 14 is a flowchart showing an example of the data transmission process in this embodiment.
[0121] First, the key sharing unit 201 of node 20-1 generates an encryption key, which is a common key for encrypting the program for the arithmetic processing (step S301). For example, the key sharing unit 201 can generate an encryption key from an unused file among the n+1 files (A aa, A a1, ..., A an) generated in the trust space construction process described above. Alternatively, the key sharing unit 201 can generate an encryption key from an unused file among the next generation of n+1 files for key generation described above.
[0122] Next, the delegation processing unit 211 of node 20-1 searches for a node 20' suitable for communication with node 20-1. If a trust space has been established or if data exchange has been confirmed with the node in question in the trust space, the data may be distributed without selecting which node to hand it over to. Node 20 may also designate a specific node 20 to receive the data fragment. When designating a node, past acceptance records may be used as a basis. In this case, the node 20 may also search for other nodes 20' that can communicate with node 20-1 by querying the control device 10, having the control device 10 do so on its behalf, or by checking the available capacity of the auxiliary storage device 23 of node 20' as responded by the control device 10, the communication speed with node 20-1, etc. (step S303).
[0123] Next, the delegated processing unit 211 of node 20-1 determines the number of divisions of the arithmetic processing program (step S305).
[0124] Next, the delegation processing unit 211 of node 20-1 generates a data ID for the program (program data) of the delegated arithmetic processing to be uniquely identified within the data storage system 1 (step S307).
[0125] Next, the delegation processing unit 211 of node 20-1 encrypts the program (program data) of the delegated arithmetic processing using the encryption key generated by the key sharing unit 201 (step S309), and divides it into the determined number of program data fragments (step S311).
[0126] Next, the delegated processing unit 211 of node 20-1 generates packets to send each of the divided program data fragments to different nodes 20' (step S313).
[0127] Next, the delegated processing unit 211 of node 20-1 sends each of the generated packets to a different node 20' (step S315).
[0128] Returning to Figure 13, node 20', which is a diffusion node, then performs a data fragment diffusion process, which involves further dividing and distributing the program data fragments received from the higher-level node 20, or storing the received program data fragments (step S203).
[0129] Figure 15 is a flowchart showing an example of the data fragment diffusion process in this embodiment.
[0130] First, the spreading processing unit 221 of node 20' waits to receive a packet of program data fragments from the higher-level node 20 (No in step S401), and when it receives a packet of program data fragments (Yes in step S401), it checks whether the program data fragments contained in the received packet satisfy the segmentation termination conditions (step S403).
[0131] If the diffusion processing unit 221 of node 20' determines that the data size of the program data piece is greater than or equal to a threshold and does not satisfy the division termination condition (No in step S403), it determines the number of divisions for the program data piece (step S405).
[0132] Next, the diffusion processing unit 221 of node 20' divides the received program data fragment into a determined number of program data fragments (step S407).
[0133] Next, the spreading processing unit 221 of node 20' generates packets to send each of the divided program data fragments to different nodes 20' (step S409).
[0134] Next, the propagation processing unit 221 of node 20' sends each of the generated packets to a different node 20' (step S411).
[0135] On the other hand, if the spreading processing unit 221 of node 20' determines that the data size of the program data fragments contained in the received packet is less than a threshold and that the splitting termination condition is met (Yes in step S403), it stores the received packet (step S413).
[0136] Returning to Figure 13, the divided program data fragments propagate through the network and are re-divided at each node 20'. Finally, the multiple divided program data fragments are stored at multiple nodes 20' that determine that the division termination conditions are met.
[0137] Next, the data provisioning node, node 20-N, performs a data transmission process in which it divides the data to be processed for calculation (processing target data) into processing target data fragments and transmits them (step S211).
[0138] Here, by replacing node 20-1 with node 20-N, the delegated processing unit 211 with the providing processing unit 251, the program for arithmetic processing with the data to be processed, and the program data fragments with the data to be processed fragments, the flowchart of the data transmission process shown in Figure 14 can also be applied to the data transmission process by the providing processing unit 251 of node 20-N.
[0139] Next, node 20', which is a diffusion node, performs data fragment diffusion processing, which involves further dividing and distributing the data fragments to be processed received from the higher-level node 20, or storing the received data fragments to be processed (step S213).
[0140] Here, by replacing the program data fragments with the data fragments to be processed, the explanation of the data fragment diffusion process flowchart shown in Figure 15 can also be applied to the data fragment diffusion process of the data fragments to be processed by the diffusion processing unit 221 of node 20'.
[0141] In this way, the divided data fragments to be processed propagate through the network and are re-divided at each node 20', and finally, the multiple divided program data fragments are stored at multiple nodes 20' that determine that the division completion conditions are met.
[0142] Figure 16 is a sequence diagram showing an example of the outsourcing and acceptance of arithmetic processing programs distributed and stored in the data storage system 1 of this embodiment.
[0143] First, the delegation processing unit 211 of node 20-1 sends a recruitment advertisement (an example of delegation request information) to node 20' for delegating computation processing to another node (step S221). The recruitment advertisement may be a message that includes, for example, the node ID of node 20-1, which is the delegating node, the communication and processing load associated with the computation processing, and the reward for taking over the computation processing. If there are no existing nodes with which it has a transaction, it may request the control device to act on its behalf. The control device may also communicate which node should be delegated to.
[0144] Next, the response processing unit 241 of node 20' performs recruitment advertisement transmission processing to transmit the recruitment advertisement to other nodes 20 (step S223).
[0145] Figure 17 is a flowchart showing an example of the recruitment advertisement transmission process in this embodiment.
[0146] First, the response processing unit 241 of node 20' waits for the reception of a recruitment advertisement from the higher node 20 (No in step S501), and when it receives a recruitment advertisement (Yes in step S501), it forwards it to the other node 20 (step S503). In this way, the recruitment advertisement is transmitted to each node 20 included in the data storage system 1.
[0147] Next, the response processing unit 241 of node 20' determines whether or not to apply for the received recruitment advertisement (step S505). For example, if the response processing unit 241 of node 20' determines that its primary function is idle, that the estimated "communication and processing load" in the recruitment advertisement can be adequately covered by its own surplus capacity, and that the operational cost (resources) for this exceeds the offered reward, then it applies for the recruitment advertisement.
[0148] Returning to Figure 13, we assume that node 20-M, which will be the entrusted node, has decided to apply for the recruitment advertisement. The entrusted processing unit 231 of node 20-M can notify the control device 10 of the node ID of node 20-1, which is the entrusted node included in the recruitment advertisement (entrusted node ID), its own node ID (entrusted node ID), and the common key of node 20-M for establishing secure communication with node 20-1 (entrusted common key) in order to apply for the recruitment advertisement (step S225). This notification (an example of entrusted application information) is made via the double common key secure communication between node 20-M and the control device 10 as described above. If a trusted space has been established, it is also possible to choose to communicate using encryption as described in Japanese Patent No. 6863514 without going through the control device.
[0149] Here, the common key for node 20-M (an example of a second common key) can be generated, for example, by the key sharing unit 201 of node 20-M from unused files among the n+1 files (A aa, A a1, ..., A an) generated in the trust space construction process described above. Alternatively, for example, the key sharing unit 201 can generate it from unused files among the next-generation n+1 files for key generation described above (an example of multiple second distributed information).
[0150] Next, the control unit 105 of the control device 10 verifies the authenticity of node 20-M using control information and other data, based on the credentials of node 20-M associated with the node ID of the submitted node 20-M (step S227).
[0151] Next, the control unit 105 of the control device 10 notifies the receiving node ID (consignee node ID) and the common key (consignee common key) of node 20-M of node 20-M to node 20-1, which is the entrusted node (step S229). This notification is made via secure communication using the dual common key between node 20-1 and the control device 10 as described above. In this way, node 20-M shares its common key with node 20-1 via the control device 10 through encrypted communication based on the shared information of the control device 10.
[0152] Next, the delegation processing unit 211 of node 20-1 notifies the control device 10 of the common key of node 20-1 (delegation-side common key) (step S231). This notification is also performed via secure communication using the dual common key between node 20-1 and the control device 10 as described above.
[0153] Here, the common key of node 20-1 (an example of a third common key) can be generated, for example, by the key sharing unit 201 of node 20-1 from an unused file among the n+1 files (A aa, A a1, ..., A an) generated in the trust space construction process described above. Alternatively, for example, the key sharing unit 201 can generate it from an unused file among the next-generation n+1 files for key generation described above (an example of multiple second distributed information).
[0154] Next, the control unit 105 of the control device 10 notifies node 20-M of the common key (commissioning side common key) of node 20-1 that it has received (step S233). This notification is also performed using the double common key secure communication between node 20-M and the control device 10 as described above. In this way, node 20-1 shares its common key with node 20-M via the control device 10 through encrypted communication based on the shared information of the control device 10.
[0155] As a result, both Node 20-1 and Node 20-M can agree to use Node 20-1's common key (client-side common key) and Node 20-M's common key (recipient-side common key) for secure communication using dual common keys, and Node 20-1 and Node 20-M establish secure communication using dual common keys (step S235). In this way, the control device 10 mediates the sharing of Node 20-1's common key (client-side common key) and Node 20-M's common key (recipient-side common key) between Node 20-1 and Node 20-M based on Node ID of Node 20-1 and Node 20-M's Node ID.
[0156] Next, the delegation processing unit 211 of node 20-1 transmits to node 20-M, via secure communication using a double symmetric key (an example of encrypted communication), the data ID (XYZ) of the arithmetic processing program to be delegated, the encryption key used to encrypt the arithmetic processing program (an example of a first symmetric key), and a power of attorney for the restoration of the arithmetic processing program (recovery of program data fragments) (step S237).
[0157] Next, the entrusted processing unit 231 of node 20-M performs a restoration process to restore the program for the calculation process (step S239).
[0158] Figure 18 is a flowchart showing an example of the restoration process performed by node 20-M in this embodiment.
[0159] First, the entrusted processing unit 231 of node 20-M sends a recovery notice to node 20' specifying the data ID "XYZ" of the arithmetic processing program and attaching a power of attorney from node 20-1 in order to recover the program data fragment (step S601).
[0160] Next, the entrusted processing unit 231 of node 20-M waits to receive a response message from node 20' which stores the program data fragments (No in step S603). When it receives a response message (Yes in step S603), it determines whether the number of program data fragments whose location has been determined from the response messages received so far exceeds a predetermined threshold (step S605).
[0161] If the number of data points does not exceed the threshold (No in step S605), the system waits for a response message from node 20' storing the program data fragments (No in step S603).
[0162] On the other hand, if the number of data exceeds a threshold (Yes in step S605), the entrusted processing unit 231 of node 20-M queries the control device 10 for the location of node 20' with the given node ID, based on the branch numbers of the data headers received so far, and requests that node 20' to send a program data fragment. Upon receiving the program data fragment, the entrusted processing unit 231 of node 20-M restores the program data fragment into a program for arithmetic processing based on the branch numbers of each data header (step S607).
[0163] Next, the entrusted processing unit 231 of node 20-M restores the encrypted arithmetic processing program, which has finally been recovered, to an arithmetic processing program using the encryption key used for encryption (step S609).
[0164] Figure 19 is a flowchart showing an example of the response processing performed by node 20' in this embodiment.
[0165] First, the response processing unit 241 of node 20' waits for the reception of a retrieval advertisement from the higher node 20 (No in step S701), and when it receives a retrieval advertisement (Yes in step S701), it forwards it to the other node 20 (step S703). In this way, the retrieval advertisement is transmitted to each node 20 included in the data storage system 1.
[0166] Next, the response processing unit 241 of node 20' determines whether or not it has stored the program data fragment (packet) with the data ID specified in the retrieval advertisement (step S705). If it determines that it has stored it (Yes in step S705), it sends a response message to node 20-M, the source of the retrieval advertisement, notifying it that it has stored the specified program data fragment (step S707). In this case, if a method of issuing advertisements for each hierarchical level is used, it may also check at the same time whether the program data fragment (packet) has the data ID specified in the retrieval advertisement and is data for the corresponding hierarchical level.
[0167] As a result, the processing execution unit 261 of node 20-M can obtain a program for arithmetic processing and, instead of the delegated node, can execute arithmetic processing based on the program.
[0168] Figure 20 is a sequence diagram showing an example of a process that restores data to be processed, which is distributed and stored in the data storage system 1 of this embodiment, and performs alternative calculations.
[0169] First, the provision processing unit 251 of node 20-N sends a provision advertisement to node 20' for providing the data to be processed to other nodes (step S241). The provision advertisement can be, for example, a message containing the node ID of node 20-N, which is the providing node.
[0170] Next, the response processing unit 241 of node 20' performs an advertisement transmission process to transmit the advertisement to other nodes 20 (step S243).
[0171] Here, by replacing the recruitment advertisement with a service advertisement, the flowchart of the recruitment advertisement transmission process shown in Figure 17 can also be applied to the service advertisement transmission process by the service processing unit 251 of node 20-N. Whether or not to apply for a service advertisement depends on factors such as whether or not the calculation processing program has been restored, but is not limited to these.
[0172] Here, we assume that node 20-M, which will be the contracted node, has decided to apply for the offer advertisement. The contract processing unit 231 of node 20-M notifies the control device 10 of the node ID of node 20-N, which is a providing node included in the offer advertisement (provider node ID), its own node ID (contracted node ID), and the common key of node 20-M for establishing secure communication with node 20-N (contracted common key) (step S245). This notification is made via the secure communication between node 20-M and the control device 10 using the dual common key described above.
[0173] Here, the common key for node 20-M can be generated, for example, by the key sharing unit 201 of node 20-M from an unused file among the n+1 files (A aa, A a1, ..., A an) generated in the trust space construction process described above. Alternatively, for example, the key sharing unit 201 can generate the key from an unused file among the next generation of n+1 files for key generation described above.
[0174] Next, the control unit 105 of the control device 10 verifies the authenticity of node 20-M using control information and other data, based on the credentials of node 20-M associated with the node ID of the submitted node 20-M (step S227).
[0175] Next, the control unit 105 of the control device 10 notifies the receiving node 20-M's node ID (consignee node ID) and node 20-M's common key (consignee common key) to the providing node, node 20-N (step S249). This notification is made via secure communication using a dual common key between node 20-N and the control device 10, as described above.
[0176] Next, the delegated processing unit 211 of node 20-N notifies the control device 10 of the common key of node 20-N (provider-side common key) (step S251). This notification is also performed via secure communication using the dual common key between node 20-N and the control device 10 as described above.
[0177] Here, the common key for nodes 20-N can be generated, for example, by the key sharing unit 201 of node 20-1 from an unused file among the n+1 files (A aa, A a1, ..., A an) generated in the trust space construction process described above. Alternatively, for example, the key sharing unit 201 can generate the key from an unused file among the next generation of n+1 files for key generation described above.
[0178] Next, the control unit 105 of the control device 10 notifies node 20-M of the common key (provider common key) of node 20-N that it received (step S253). This notification is also performed via secure communication using the dual common key between node 20-M and the control device 10, as described above.
[0179] As a result, both Node 20-N and Node 20-M can agree to use Node 20-N's common key (provider's common key) and Node 20-M's common key (recipient's common key) for secure communication using dual common keys, and Node 20-N and Node 20-M establish secure communication using dual common keys as described above (Step S255).
[0180] Next, the provision processing unit 251 of node 20-N transmits the data ID of the data to be processed, the encryption key used to encrypt the data to be processed, and a power of attorney for the restoration of the data to be processed (recovery of data fragments) to node 20-M via secure communication using a dual symmetric key between node 20-N and node 20-M (step S257).
[0181] Next, the entrusted processing unit 231 of node 20-M performs a restoration process to recover the data to be processed (step S259).
[0182] Here, by replacing node 20-1 with node 20-N, the program for arithmetic processing with the data to be processed, and the program data fragments with the data fragments to be processed, the flowchart explanation of the restoration process shown in Figure 18 can be applied to the data restoration process performed by node 20-M, and the flowchart explanation of the response process shown in Figure 19 can be applied to the response process performed by node 20'.
[0183] Next, the processing execution unit 261 of node 20-M determines whether it can substitute the calculation processing of the restored data to be processed using the restored calculation processing program, and if so, it executes it (step S261). In addition, when performing the calculation processing of the program, data from another distributed third party or client may be used, and a recruitment advertisement for this data may be issued. In this case, it is assumed that the data is distributed under different IDs. Alternatively, the user may use their own data.
[0184] Figure 21 is a sequence diagram showing an example of a process for returning the processing result of an arithmetic operation to the delegated node 20-1 using the distributed storage method of this embodiment.
[0185] First, node 20-M, which is the contracted node, performs a data transmission process in which it divides the processing result data to be returned into processing result data fragments and sends them (step S271). In addition, the processing result data may also include an invoice for the compensation for the arithmetic processing performed on behalf of the client, when it is divided into processing result data fragments. In this way, when node 20-1, the commissioned node, restores the processing result data, the invoice will also be restored.
[0186] Here, by replacing node 20-1 with node 20-M, the delegated processing unit 211 with the result processing unit 271, the program for calculation processing with the data of the processing result, and the program data fragment with the data fragment of the processing result, the flowchart of the data transmission process shown in Figure 14 can also be applied to the data transmission process by the result processing unit 271 of node 20-M.
[0187] Next, node 20', which is a diffusion node, may perform data diffusion processing such as further dividing and distributing the data fragments of the processing result received from the higher-level node 20, or storing the received data fragments of the processing result (step S273).
[0188] Here, by replacing the program data fragments with the data fragments of the processing result, the flowchart of the data fragment diffusion process shown in Figure 15 can also be applied to the data transmission process by the diffusion processing unit 221 of node 20'.
[0189] In this way, the divided data fragments of the processing result propagate through the network and are re-divided at each node 20', and finally, the multiple divided data fragments of the processing result are stored at multiple nodes 20' that determine that the division termination condition is met.
[0190] Next, the result processing unit 271 of node 20-M transmits the data ID of the processing result, the encryption key used to encrypt the data of the processing result, and a power of attorney for the restoration of the data of the processing result (recovery of the data fragments of the processing result) to node 20-1 via secure communication using a dual symmetric key between node 20-1 and node 20-M (step S275).
[0191] Next, the receiving processing unit 281 of node 20-1 performs a restoration process to restore the processing result data (step S279).
[0192] Here, by replacing node 20-1 with node 20-M, the program for arithmetic processing with the data of the processing result, and the program data fragments with the data fragments of the processing result, the flowchart explanation of the restoration process shown in Figure 18 can be applied to the data restoration process of the processing result performed by node 20-1, and the flowchart explanation of the response process shown in Figure 19 can be applied to the response processing performed by node 20'.
[0193] This allows node 20-1 to receive the processing results of the computations it delegated to node 20-M.
[0194] As described above, according to this embodiment, a delegating node can delegate computational processing to a receiving node, and the receiving node can take over the computational processing. In particular, according to this embodiment, a large number of receiving nodes can be prepared, enabling pipeline-type parallel processing using massive computing, and it is also possible to delegate processing that requires a large amount of resources, such as machine learning processing.
[0195] Furthermore, according to this implementation, the control device 10 constructs a communication space of multiple nodes 20 under its control as a trusted space. This enables secure communication between nodes 20 whose identities are guaranteed by the control device 10, allowing for the safe exchange of highly confidential data necessary for processing delegation and guaranteeing that the delegation of computational processing is carried out securely.
[0196] (program) The programs executed by the devices and nodes of the above embodiments and each of the above modifications are provided as installable or executable files stored on a computer-readable storage medium such as a CD-ROM, CD-R, memory card, DVD, or flexible disk (FD).
[0197] Furthermore, the programs executed by the devices and nodes of the above embodiments and their respective modifications may be stored on a computer connected to a network such as the Internet and provided by allowing downloads via the network. Alternatively, the programs executed by the devices and nodes of the above embodiments and their respective modifications may be provided or distributed via a network such as the Internet. Furthermore, the programs executed by the devices and nodes of the above embodiments and their respective modifications may be pre-installed in ROM or the like and provided.
[0198] The programs executed in the above embodiments and the devices and nodes of each of the above modifications are configured as modules for realizing the above-described parts on a computer. In actual hardware, for example, the CPU reads the program from the HDD into RAM and executes it, thereby realizing the above-described parts on the computer.
[0199] The above embodiments and their respective modifications are merely examples of how this disclosure may be implemented, and they do not restrict the technical scope of this disclosure. Therefore, this disclosure can be implemented in various ways without departing from its essence or its main features. For example, the above embodiments and their respective modifications may be combined as appropriate on a component basis. Also, for example, some components may be removed from the total components in the above embodiments and their respective modifications.
[0200] This disclosure also includes the following aspects:
[0201] (1) A data storage system in which multiple devices connected via a network store data in a distributed manner, The aforementioned multiple devices each have a different entrusted device, A program capable of executing data processing is divided into multiple program data fragments, and each of the divided program data fragments is transmitted to a receiving device included in one or more devices. The receiving device included in the aforementioned plurality of devices is, If the received program data fragment is unexecutable and does not satisfy the division termination conditions, the received program data fragment is further divided, and each divided program data fragment is transmitted to other receiving devices included in one or more devices. If the received program data fragment satisfies the division termination conditions, the received program data fragment is stored. The contracted equipment included in the aforementioned plurality of devices is, The program is recovered from program data fragments stored in one or more receiving devices, the program is restored, and the data processing is performed using the restored program. Data storage system.
[0202] (2) The data storage system further includes a data provision device, The aforementioned data provision device is To provide data to the aforementioned contracted device, The data storage system described in (1) above.
[0203] (3) The contracted equipment is included in one or more of the plurality of equipment, Each of the one or more contracted devices retrieves program data fragments of its own program, restores its own program, and uses the restored program to perform the data processing in parallel. The data storage system described in (1) above.
[0204] (4) The data processing performed in parallel by one or more of the contracted devices is a machine learning process. The data storage system described in (3) above.
[0205] (5) The control device included in the data storage system is The generated values produced by a predetermined method and the control device share information specific to the control device with the entrusted device. The aforementioned consignment device, A predetermined encoding method is used to generate multiple first distributed information from the shared information using the generated values, which allows the pre-distributed data to be restored when all or part of the distributed data obtained by distributing the pre-distributed data into multiple parts is available. The multiple program data fragments divided by the aforementioned delegation device are encrypted by the delegation device using a first common key based on one of the multiple first distributed information pieces. The data storage system described in (1) above.
[0206] (6) The consignment device, Each of the divided program data fragments is assigned program identification information of the program, The receiving device is, If the received program data fragment satisfies the division termination condition, the program identification information is associated with the received program data fragment and stored. The aforementioned contracted equipment is The first common key and the program identification information are obtained from the entrusted device via encrypted communication; program data fragments stored in multiple receiving devices are recovered based on the program identification information; and the program is restored from the recovered program data fragments using the first common key. The data storage system described in (5) above.
[0207] (7) The control device, The generated value and the shared information are shared with the contracted device. The aforementioned consigned equipment and the aforementioned contracted equipment are, respectively, The encoding method generates a plurality of second distributed pieces of information from the shared information using the generated values, The aforementioned contracted equipment is The second common key, which is one of the plurality of second distributed information, is shared with the delegated device via the control device through encrypted communication based on the shared information of the control device. The aforementioned consignment device, The third common key, which is one of the plurality of second distributed information, is shared with the entrusted device via the control device through encrypted communication based on the shared information of the control device. The aforementioned contracted equipment and the aforementioned outsourced equipment are The encrypted communication between the entrusted device and the outsourced device is constructed using the second and third common keys. The data storage system described in (6) above.
[0208] (8) The control device, The system manages device identification information that identifies each of the aforementioned multiple devices, The aforementioned consignment device, The following is transmitted to one or more receiving devices, including the device identification information of the entrusted device, requesting the entrustment of the data processing using the program, The receiving device included in the aforementioned plurality of devices is, The received request information is transmitted to other receiving devices included in one or more devices. The aforementioned contracted equipment is Upon receiving the aforementioned outsourcing request information, the control device transmits to the control device outsourcing application information, which includes the device identification information of the outsourcing device and the device identification information of the receiving device, to apply for the outsourcing of the data processing using the program. The aforementioned control device, Based on the device identification information of the entrusted device and the device identification information of the receiving device, the sharing of the second common key and the third common key between the entrusted device and the receiving device is mediated. The data storage system described in (7) above.
[0209] (9) The data storage system is Includes multiple devices that share generated values produced by a predetermined method and shared information specific to the control device, Each of the above devices generates multiple distributed pieces of information from the shared information using the generated values in a predetermined encoding method that allows the pre-distributed data to be restored when all or part of the distributed data obtained by distributing the pre-distributed data into multiple pieces is available. Each of the above devices shares one of the multiple distributed pieces of information or derived information derived from the one distributed piece of information as a common key. The data storage system described in (1) above.
[0210] (10) The contracted equipment is If the idle state is confirmed and the resources necessary for retrieving and restoring program data fragments can be secured, the program data fragments stored in one or more receiving devices are retrieved to restore the program, and the data processing is performed using the restored program. The data storage system described in (1) above.
[0211] (11) A receiving device that, if the received program data fragment is not operable and does not satisfy the division termination condition, further divides the received program data fragment, transmits each of the divided program data fragments to other receiving devices included in one or more devices, and stores the received program data fragment if the received program data fragment satisfies the division termination condition.
[0212] (12) A data processing method performed in a data storage system in which multiple devices connected via a network store data in a distributed manner, The aforementioned multiple devices each have a different entrusted device, A program capable of executing data processing is divided into multiple program data fragments, and each of the divided program data fragments is transmitted to a receiving device included in one or more devices. The receiving device included in the aforementioned plurality of devices is, If the received program data fragment is unexecutable and does not satisfy the division termination conditions, the received program data fragment is further divided, and each divided program data fragment is transmitted to other receiving devices included in one or more devices. If the received program data fragment satisfies the division termination conditions, the received program data fragment is stored. The contracted equipment included in the aforementioned plurality of devices is, The program is recovered from program data fragments stored in one or more receiving devices, the program is restored, and the data processing is performed using the restored program. Data processing method.
[0213] This disclosure also includes the following aspects:
[0214] (13) The receiving device shall It maintains a list of other receiving devices that have already communicated, and prioritizes using those other receiving devices listed as destinations for the divided program data fragments. The data storage system described in (1) above.
[0215] (14) Using the data from the processing results of one or more contracted devices, one or more other contracted devices execute the data processing in parallel. The data storage system described in (3) above.
[0216] (15) The control device, The receiving device included in the aforementioned plurality of devices is managed, The receiving device is, Using information from the receiving device managed by the aforementioned control device, the system determines other receiving devices to which the divided program data fragments will be sent. The data storage system described in (1) above.
[0217] (16) The contracted equipment is If the program data fragments necessary to restore the program capable of executing the aforementioned data processing are missing, a request for recovery of the program data fragments is sent to one or more receiving devices included in the device. The data storage system described in (1) above.
[0218] (17) A data storage system in which multiple devices connected via a network store data in a distributed manner, The aforementioned multiple devices each have a different entrusted device, The outsourcing request information, including the device identification information of the outsourced device, which requests the outsourcing of data processing, is transmitted to one or more receiving devices included in the device. The receiving device included in the aforementioned plurality of devices is, The received request information is transmitted to other receiving devices included in one or more devices. The contracted equipment included in the aforementioned plurality of devices is, The system receives the aforementioned outsourcing request information and, based on the received outsourcing request information, applies to the outsourcing device for the data processing to be performed. The aforementioned consignment device, Based on the application from the contracted equipment, a program capable of executing the data processing is sent to the contracted equipment. Data storage system. [Explanation of symbols]
[0219] 1. Data storage system 2 Network 10 Control equipment 20 (20-1, 20-2a~20-2c, 20-3a~20-3f, 20-La~20-Lc, 20-M, 20-N) Multiple nodes 101 Key sharing part 103 Secure Communication Establishment Unit 105 Control Department 201 Key sharing part 203 Secure Communication Establishment Unit 211 Outsourced Processing Unit 221 Diffusion Processing Unit 231 Contract Processing Unit 241 Response Processing Unit 251 Processing Unit 261 Processing Execution Unit 271 Result Processing Unit 281 Receiving Processing Unit
Claims
1. A data storage system in which multiple devices connected via a network store data in a distributed manner, The aforementioned multiple devices each have a different entrusted device, A program capable of executing data processing is divided into multiple program data fragments, and each of the divided program data fragments is transmitted to a receiving device included in one or more devices. The receiving device included in the aforementioned plurality of devices is, If the received program data fragment does not satisfy the division termination condition, the received program data fragment is further divided, and each divided program data fragment is transmitted to other receiving devices included in one or more devices. If the received program data fragment satisfies the division termination condition, the received program data fragment is stored. The contracted equipment included in the aforementioned plurality of devices is, The program is recovered from one or more receiving devices, the program is restored, and the data processing is performed using the restored program. The aforementioned contracted equipment is included in one or more of the plurality of devices. Each of the one or more of the aforementioned contracted devices is: The program data fragments of the program for the device are recovered, the program for the device is restored, and the data processing is executed in parallel using the restored program for the device. Data storage system.
2. The data processing performed in parallel by one or more of the contracted devices is a machine learning process. The data storage system according to claim 1.
3. A data storage system in which a plurality of devices connected via a network store data in a distributed manner, The aforementioned multiple devices each have a different entrusted device, A program capable of executing data processing is divided into multiple program data fragments, and each of the divided program data fragments is transmitted to a receiving device included in one or more devices. The receiving device included in the aforementioned plurality of devices is, If the received program data fragment does not satisfy the division termination condition, the received program data fragment is further divided, and each divided program data fragment is transmitted to other receiving devices included in one or more devices. If the received program data fragment satisfies the division termination condition, the received program data fragment is stored. The contracted equipment included in the aforementioned plurality of devices is, The program is recovered from one or more receiving devices, the program is restored, and the data processing is performed using the restored program. The control device included in the data storage system is, The generated values produced by a predetermined method and the control device share information specific to the control device with the entrusted device. The aforementioned consignment device, A predetermined encoding method is used to generate multiple first distributed information from the shared information using the generated values, which allows the pre-distributed data to be restored when all or part of the distributed data obtained by distributing the pre-distributed data into multiple parts is available. The multiple program data fragments divided by the aforementioned delegated device are encrypted by the delegated device using a first common key based on one of the multiple first distributed pieces of information. Data storage system.
4. The aforementioned consignment device, Each of the divided program data fragments is assigned program identification information of the program, The receiving device is, If the received program data fragment satisfies the division termination condition, the program identification information is associated with the received program data fragment and stored. The aforementioned contracted equipment is The first common key and the program identification information are obtained from the entrusted device via encrypted communication; program data fragments stored in multiple receiving devices are recovered based on the program identification information; and the program is restored from the recovered program data fragments using the first common key. The data storage system according to claim 3.
5. The aforementioned control device, The generated value and the shared information are shared with the contracted device. The aforementioned consigned equipment and the aforementioned contracted equipment are, respectively, The encoding method generates a plurality of second distributed information from the shared information using the generated values, The aforementioned contracted equipment is The second common key, which is one of the plurality of second distributed information, is shared with the delegated device via the control device through encrypted communication based on the shared information of the control device. The aforementioned consignment device, The third common key, which is one of the plurality of second distributed information, is shared with the entrusted device via the control device through encrypted communication based on the shared information of the control device. The aforementioned contracted equipment and the aforementioned outsourced equipment are The encrypted communication between the entrusted device and the outsourced device is constructed using the second and third common keys. The data storage system according to claim 4.
6. The aforementioned control device, The system manages device identification information that identifies each of the aforementioned multiple devices, The aforementioned consignment device, The following is transmitted to one or more receiving devices, including the device identification information of the outsourced device, requesting the outsourcing of the data processing using the program, The receiving device included in the aforementioned plurality of devices is, The received request information is transmitted to other receiving devices included in one or more devices. The aforementioned contracted equipment is Upon receiving the aforementioned outsourcing request information, the control device transmits to the control device outsourcing application information, which includes the device identification information of the outsourcing device and the device identification information of the receiving device, to apply for the outsourcing of the data processing using the program. The aforementioned control device, Based on the device identification information of the entrusted device and the device identification information of the receiving device, the sharing of the second common key and the third common key between the entrusted device and the receiving device is mediated. The data storage system according to claim 5.
7. A data storage system in which a plurality of devices connected via a network store data in a distributed manner, The aforementioned multiple devices each have a different entrusted device, A program capable of executing data processing is divided into multiple program data fragments, and each of the divided program data fragments is transmitted to a receiving device included in one or more devices. The receiving device included in the aforementioned plurality of devices is, If the received program data fragment does not satisfy the division termination condition, the received program data fragment is further divided, and each divided program data fragment is transmitted to other receiving devices included in one or more devices. If the received program data fragment satisfies the division termination condition, the received program data fragment is stored. The contracted equipment included in the aforementioned plurality of devices is, The program is recovered from one or more receiving devices, the program is restored, and the data processing is performed using the restored program. The aforementioned contracted equipment is If the idle state is confirmed and the resources necessary for retrieving and restoring program data fragments can be secured, the program data fragments stored in one or more receiving devices are retrieved to restore the program, and the data processing is performed using the restored program. Data storage system.
8. A data storage system in which a plurality of devices connected via a network store data in a distributed manner, The aforementioned multiple devices each have a different entrusted device, A program capable of executing data processing is divided into multiple program data fragments, and each of the divided program data fragments is transmitted to a receiving device included in one or more devices. The receiving device included in the aforementioned plurality of devices is, If the received program data fragment does not satisfy the division termination condition, the received program data fragment is further divided, and each divided program data fragment is transmitted to other receiving devices included in one or more devices. If the received program data fragment satisfies the division termination condition, the received program data fragment is stored. The contracted equipment included in the aforementioned plurality of devices is, The program is recovered from one or more receiving devices, the program is restored, and the data processing is performed using the restored program. The receiving device included in the aforementioned plurality of devices is, If the receiving device is capable of independently performing commissioned calculations using the received program data fragments, it retrieves program data fragments stored in one or more other receiving devices to restore the program, and then uses the restored program to perform the data processing. Data storage system.
9. If the received program data fragment does not satisfy the division termination condition, the received program data fragment is further divided, and each divided program data fragment is transmitted to other receiving devices included in one or more devices. If the received program data fragment satisfies the division termination condition, the received program data fragment is stored. If a receiving device is capable of independently performing commissioned calculations using received program data fragments, it will act as a commissioned device, recovering program data fragments stored in one or more other receiving devices to restore the program, and then performing data processing using the restored program.
10. A data processing method performed in a data storage system in which multiple devices connected via a network store data in a distributed manner, The aforementioned multiple devices each have a different entrusted device, A program capable of executing data processing is divided into multiple program data fragments, and each of the divided program data fragments is transmitted to a receiving device included in one or more devices. The receiving device included in the aforementioned plurality of devices is, If the received program data fragment does not satisfy the division termination condition, the received program data fragment is further divided, and each divided program data fragment is transmitted to other receiving devices included in one or more devices. If the received program data fragment satisfies the division termination condition, the received program data fragment is stored. The contracted equipment included in the aforementioned plurality of devices is, The program is recovered from one or more receiving devices, the program is restored, and the data processing is performed using the restored program. The receiving device included in the aforementioned plurality of devices is, If the receiving device is capable of independently performing commissioned calculations using the received program data fragments, it retrieves program data fragments stored in one or more other receiving devices to restore the program, and then uses the restored program to perform the data processing. Data processing method.