System, program, and non-volatile storage medium

WO2025057257A1PCT designated stage expired Publication Date: 2025-03-20S K Y QUEST INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
PCT/JP2023/032940
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-09-11
Publication Date
2025-03-20

AI Technical Summary

Technical Problem

In distributed networks, when nodes use traditional consensus algorithms (such as Proof of Work and Proof of Stake), there is speculative behavior of using the network for token acquisition, resulting in the network being used for improper purposes.

Method used

The new consensus algorithm is adopted to ensure the security and consistency of data when uploading and downloading data between terminal devices and nodes, and to avoid using tokens for node selection.

Benefits of technology

It effectively prevents speculative behaviors of the network being used for token acquisition, ensures the security and consistency of data management, reduces dependence on tokens, and promotes the healthy development of data management services.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure JP2023032940_20032025_PF_FP_ABST
    Figure JP2023032940_20032025_PF_FP_ABST
Patent Text Reader

Abstract

The present invention provides a program for causing a computer to execute the following: a step of receiving, from a server, two or more pieces of node identification information selected on the basis of geographical proximity; a step of receiving, from the server, three or more pieces of node identification information selected randomly; a step of respectively receiving audit data from the total of five or more nodes received from the server; and a step of determining whether or not a majority of the total of five or more nodes are storing the same audit data and at least one of the nodes identified by two or more pieces of node identification information selected on the basis of geographical proximity is included among the majority of nodes storing the same audit data, and if so, selecting one node identified by a piece of node identification information selected on the basis of geographical proximity that is included among the majority of nodes storing the same audit data.
Need to check novelty before this filing date? Find Prior Art

Description

System, program, and non-volatile storage medium

[0001] The present invention relates to managing data.

[0002] There is known a distributed network in which each node connected to a peer-to-peer (P2P) network operates based on a consensus algorithm such as "proof of work" or "proof of stake" (Non-Patent Document 1).

[0003] Coinbase, "What are 'Proof of Work' and 'Proof of Stake'?" [Retrieved August 3, 2023], Internet <URL: https: / / www.coinbase.com / ja / learn / crypto-basics / what-is-proof-of-work-or-proof-of-stake>

[0004] In distributed networks in which each node operates based on these consensus algorithms, tokens are often incorporated into the data managed by the network, and computers are driven by the tokens as an incentive. However, in networks in which each computer executes these consensus algorithms, there is a risk that the network may be used for speculation aimed at acquiring tokens. Therefore, the present invention aims to provide a system, program, and non-volatile storage medium that executes a new consensus algorithm that differs from conventional systems.

[0005] The present invention includes the following embodiment.

[0006] A system in which a plurality of terminals, a plurality of nodes that communicate with each other in a peer-to-peer manner, and a server that stores node identification information that identifies the nodes are connected via a network, wherein when uploading data to the nodes, the terminal executes the steps of selecting one node, encrypting a predetermined element included in the data to be uploaded, and uploading the data including the encrypted element to the selected node, and when downloading data from the nodes, the terminal executes the steps of selecting the one node, downloading data from the selected node, and decrypting the predetermined element included in the downloaded data, and the nodes execute the steps of selecting the one node and updating data stored in the node itself using data stored in the selected node, and the step of selecting the one node includes the steps of requesting from the server two or more pieces of node identification information selected based on geographical proximity from the plurality of node identification information stored in the server, and receiving from the server the two or more pieces of node identification information. a step of requesting from the server three or more pieces of node identification information randomly selected from a plurality of pieces of node identification information stored in the server; a step of receiving the three or more pieces of node identification information from the server; a step of requesting test data from each of a total of five or more nodes received from the server; a step of receiving the test data from each of the total of five or more nodes; and a step of determining whether a majority of the total of five or more nodes store the same test data and whether at least one of the nodes identified by two or more pieces of node identification information selected based on geographical proximity is included among the majority of nodes storing the same test data, and if so, selecting one node identified by the node identification information selected based on geographical proximity that is included among the majority of nodes storing the same test data.

[0007] a program for causing a terminal to execute, when uploading data to a node, the steps of selecting one node, encrypting a predetermined element included in the data to be uploaded, and uploading the data with the encrypted predetermined element to the selected one node, and, when downloading data from a node, the steps of selecting the one node, downloading data from the selected one node, and decrypting the predetermined element included in the downloaded data, wherein the step of selecting one node includes the steps of: requesting from the server two or more pieces of node identification information selected based on geographical proximity from a plurality of pieces of node identification information stored in the server; receiving from the server the two or more pieces of node identification information; requesting from the server three or more pieces of node identification information randomly selected from the plurality of pieces of node identification information stored in the server; receiving from the server the three or more pieces of node identification information; requesting test data from a total of five or more nodes received from the server; and receiving the test data from the total of five or more nodes. a step of determining whether a majority of the five or more nodes store the same test data, and whether at least one node identified by two or more node identification information selected based on the geographical proximity is included among the majority of nodes storing the same test data, and if so, selecting one node identified by the node identification information selected based on the geographical proximity that is included among the majority of nodes storing the same test data.

[0008] A program causing a node to execute the steps of: selecting one node; and updating data stored in the node itself using data stored in the selected one node, wherein the step of selecting one node includes the steps of: requesting from the server two or more pieces of node identification information selected based on geographical proximity from a plurality of pieces of node identification information stored in the server; receiving from the server the two or more pieces of node identification information; requesting from the server three or more pieces of node identification information randomly selected from the plurality of pieces of node identification information stored in the server; receiving from the server the three or more pieces of node identification information; requesting test data from a total of five or more nodes received from the server; and receiving the test data from each of the total of five or more nodes. a step of determining whether a majority of the five or more nodes store the same test data, and whether at least one node identified by two or more node identification information selected based on the geographical proximity is included among the majority of nodes storing the same test data, and if so, selecting one node identified by the node identification information selected based on the geographical proximity that is included among the majority of nodes storing the same test data.

[0009] A program for causing a server to execute the following steps: when receiving a request from a computer for two or more node identification information selected based on geographical proximity, selecting two or more node identification information from a plurality of node identification information stored in the server based on geographical proximity, and transmitting the selected two or more node identification information to the computer; and when receiving from the computer a request for three or more node identification information selected at random, selecting three or more node identification information at random from the plurality of node identification information stored in the server, and transmitting the selected three or more node identification information to the computer.

[0010] a step of receiving the three or more node identification information from the server; a step of requesting test data from a total of five or more nodes received from the server; a step of receiving the test data from the total of five or more nodes; and a step of determining whether a majority of the total of five or more nodes store the same test data and whether at least one of the nodes identified by the two or more node identification information selected based on geographical proximity is included among the majority of nodes storing the same test data, and if so, selecting one node identified by the node identification information selected based on geographical proximity that is included among the majority of nodes storing the same test data.

[0011] According to one embodiment of the present invention, when a majority of a total of five or more nodes store the same test data, in other words, when the number of nodes storing the same test data exceeds half of a total of five or more nodes, one node is selected from the plurality of nodes storing the same test data. Node selection using a token is not required, and it is not necessary to incorporate a token into the data.

[0012] FIG. 1 is a schematic diagram illustrating an example of the configuration of a system according to an embodiment. FIG. 1 is a schematic diagram illustrating an example of the configuration of a terminal according to an embodiment. FIG. 2 is a schematic diagram illustrating an example of the configuration of a node according to an embodiment. FIG. 3 is a schematic diagram illustrating an example of a data structure stored by a node according to an embodiment. FIG. 4 is a schematic diagram illustrating an example of the configuration of a server according to an embodiment. FIG. 5 is a schematic diagram illustrating an example of a data structure stored by a server according to an embodiment. FIG. 6 is a diagram illustrating an example of the operation of a terminal according to an embodiment when uploading data from a terminal to a node. FIG. 7 is a diagram illustrating an example of the operation of a terminal according to an embodiment when downloading data from a node to a terminal. FIG. 8 is a diagram illustrating an example of the operation of a node according to an embodiment when updating node data. FIG. 9 is a diagram illustrating an example of the operation of a computer according to an embodiment when executing a step of selecting one node. FIG. 10 is a diagram illustrating an example of the operation of a computer according to an embodiment when executing a step of selecting one node.

[0013] [System According to the Embodiment] Fig. 1 is a schematic diagram illustrating an example of the configuration of a system according to the embodiment. As shown in Fig. 1, the system according to the embodiment is a system in which a plurality of terminals, a plurality of nodes that store data uploaded by the plurality of terminals, and a server that stores node identification information that identifies the nodes are connected via a network. This will be described in detail below.

[0014] (Multiple Terminals) A terminal is a computer operated by a user. Examples of terminals include a smartphone and a laptop computer.

[0015] 2 is a schematic diagram illustrating an example of the configuration of a terminal according to an embodiment. As shown in FIG. 2, the terminal includes, for example, a processor, a volatile storage medium, and a non-volatile storage medium. The terminal operates, for example, when a program recorded in the non-volatile storage medium is executed by the processor.

[0016] (Node) Multiple nodes are multiple computers that communicate with each other in a peer-to-peer manner. In other words, the nodes communicate with each other in a peer-to-peer manner. A node is a computer that stores data uploaded from a terminal and can also be called a storer. Each node updates the data stored in itself by, for example, copying data that is stored in other nodes but not in itself from the other nodes and adding it to its own data. By each of the multiple nodes performing such data updates in parallel, data uploaded from a terminal to a node is stored not only in that node but also in other nodes connected to the network. In this way, by each of the multiple nodes performing data updates in parallel, the multiple nodes are connected in a mesh-like manner, and data is shared among the multiple nodes. In other words, a peer-to-peer network for sharing data is constructed.

[0017] For example, an example will be described in which data 1 is stored in node 1, data 1 and 2 are stored in node 2, and data 1 and 3 are stored in node 3. In this case, when node 1 executes a data update process for its own node using data from node 2, node 1 copies data 2 from node 2 and adds it to data 1 stored in its own node. After the update, data 1 and 2 will be stored in node 1. On the other hand, when node 1 executes a data update process for its own node using data from node 3, node 1 copies data 3 from node 3 and adds it to data 1 stored in its own node. After the update, data 1 and 3 will be stored in node 1. Whether node 1 uses data from node 2, node 3, or another node is determined by node 1 by executing a method described below.

[0018] 3 is a schematic diagram illustrating an example of the configuration of a node according to an embodiment. As shown in FIG. 3, the node includes, for example, a processor, a volatile storage medium, and a non-volatile storage medium. The node operates, for example, when a program recorded in the non-volatile storage medium is executed by the processor.

[0019] 4 is a schematic diagram showing an example of a data structure stored in a node according to an embodiment. As shown in FIG. 4, the node stores an ID, content, a nonce value, a hash value, and a digital signature in association with each other. These pieces of data are stored in, for example, a nonvolatile storage medium of the node.

[0020] An ID is information that identifies a user. Examples of IDs include, for example, numbers, character strings, symbols, and / or combinations of two or more of these. For ease of explanation, it is assumed here that combinations of character strings and numbers such as "User 1," "User 2," "User 3," and "User 4" are stored as IDs.

[0021] A single piece of content can be composed of a combination of multiple elements. Examples of each element include a name, nickname, address, text, image, audio, and a master key encrypted with the user's personal public key. Each of these elements can be stored as a single piece of content in, for example, JSON format.

[0022] The predetermined elements included in the content do not need to be encrypted, but to enhance security, they are preferably encrypted with, for example, a system-wide public key, a limited-public public key, or a personal public key. Which elements in the content are to be encrypted, in other words, the range of the predetermined elements, can be determined as appropriate. However, the encrypted master key described below is not included in the predetermined elements referred to here.

[0023] (System-wide public key and private key) Each terminal stores a master key assigned to it when it is registered with the system, for example, in a password-protected storage area. Each terminal can generate a system-wide public key and private key using the master key. Data encrypted with the system-wide public key can be decrypted using the private key only by the terminal according to the embodiment, i.e., only by a computer that stores the master key and can generate the system-wide public key and private key. Since multiple nodes are not assigned the master key and cannot generate the system-wide public key and private key, they cannot decrypt data encrypted with the system-wide public key.

[0024] (Limited-Public Public Key and Private Key) The limited-public public key and private key are generated when encrypting or decrypting data using a master key generated on a device operated by a user. The master key is encrypted using the personal public key of the specific user to whom the data is made public, and is included in the uploaded data as one element of the data. For example, if user 1 makes data public only to users 2 and 3, the master key encrypted with user 2's personal public key and the master key encrypted with user 3's personal public key are each included in the data as one element of the data uploaded from user 1's device. For example, the master key and private key are included in the content as one element of the content in the data uploaded from user 1's device. Data encrypted with the limited-public public key can be decrypted using the limited-public private key only on a device that can decrypt the master key using the personal private key, that is, only on a device that can regenerate the limited-public private key using the decrypted master key. In the above example, decryption is possible only at the terminal of user 2 that can use user 2's personal private key and at the terminal of user 3 that can use user 3's personal private key.

[0025] (Personal Public Key and Private Key) The personal public key can be stored, for example, in the server of this embodiment so that only users registered in the system can access it. When the public key is stored in the server, each terminal can download and use the public key from the server. Furthermore, the personal private key can be stored, for example, in a password-protected area in the terminal operated by the user. Data encrypted with the personal public key can only be decrypted by a terminal that stores the personal private key that pairs with the public key. For example, data encrypted with User 1's personal public key can only be decrypted with User 1's personal private key.

[0026] The nonce value is, for example, a value that is randomly generated by the terminal. The nonce value is, for example, a 12-digit number. However, the number of digits of the nonce value is not limited. For ease of explanation, a three-digit nonce value is shown as an example in FIG. 4. The nonce value is used to calculate a hash value or a digital signature.

[0027] The hash value is calculated by the terminal. The hash value is calculated using the content and the nonce value as parameters of the hash function. The hash value is used to generate the inspection data, which will be described later.

[0028] The digital signature is generated by encrypting a value calculated using a predetermined element and a nonce value included in the content with a system-wide private key, a limited-public private key, or a personal private key. According to this embodiment, tampering with the content can be easily detected by verifying the digital signature.

[0029] (Server) A server is a computer that stores node identification information. Node identification information is information that identifies a node on a network, such as an IP address or a URL (Uniform Resource Locator). Using the node identification information, a terminal can access a node, and a node can access other nodes. An example of a server is a computer that has server functionality.

[0030] 5 is a schematic diagram illustrating an example of the configuration of a server according to an embodiment. As shown in FIG. 5, the server includes, for example, a processor, a volatile storage medium, and a non-volatile storage medium. The server operates, for example, when a program recorded in the non-volatile storage medium is executed by the processor.

[0031] 6 is a schematic diagram showing an example of a data structure stored in a server according to an embodiment. As shown in FIG. 6, the server stores a plurality of pieces of node identification information. This data is stored in, for example, a non-volatile storage medium of the server.

[0032] (Network) The network is, for example, the Internet.

[0033] (Number of terminals, number of nodes) In the example shown in Fig. 1, four terminals, eight nodes, and one server are connected to the network. However, the number of terminals may be two or more. The number of nodes may be five or more, and preferably seven or more.

[0034] (Uploading data from terminal to node) Fig. 7 is a diagram illustrating an example of the operation of a terminal according to an embodiment when uploading data from the terminal to a node. The following steps are executed by the processor of the terminal, and a program for causing the processor to execute these steps is recorded in the non-volatile storage medium of the terminal. The following description will be given taking the case where terminal 1 uploads data as an example.

[0035] (Step 101) First, terminal 1 executes a step of selecting one node. Here, as an example, node 2 is selected. This step will be described in detail later.

[0036] (Step 102) Next, the terminal 1 encrypts predetermined elements included in the data to be uploaded.

[0037] For encryption, a public key common to the system or a personal public key of the user who operates the terminal 1 can be used. Also, for encryption, a limited public key can be used.

[0038] When a limited-public public key is used, terminal 1 executes a step of generating a master key using the personal public key of a specific user and the personal private key of the user operating terminal 1. Taking the example of a case where data is made public only to the users operating terminals 2 and 3, terminal 1 executes a step of, for example, adding the personal public keys of the users operating terminals 2 and 3 and the personal private key of the user operating terminal 1 together and generating a hash value of this added data as a master key. For example, if the personal public key of the user operating terminal 2 is "123," the personal public key of the user operating terminal 3 is "456," and the personal private key of the user operating terminal 1 is "789," a hash function is executed using the sum of these values, "123456789," as a parameter to calculate a hash value, and this calculated hash value is used as the master key.

[0039] Then, terminal 1 executes the steps of generating a limited-public public key and a private key using the generated master key, encrypting the generated master key using a specific user's personal public key, and encrypting, using the generated limited-public public key, predetermined elements other than the encrypted master key in data that includes the encrypted master key as one element. In the above example, terminal 1 executes the steps of generating a limited-public public key and a private key using the generated master key. Terminal 1 also executes the steps of encrypting the master key using the personal public key of the user operating terminal 2 and encrypting the master key using the personal public key of the user operating terminal 3. Terminal 1 then executes the steps of encrypting, using the generated limited-public public key, predetermined elements other than the encrypted master keys in data that includes, as one element, the master key encrypted using the personal public key of the user operating terminal 2 and the master key encrypted using the personal public key of the user operating terminal 3.

[0040] (Step 103) Next, the terminal 1 executes a step of uploading data including the elements encrypted in step 102 to the node 2 selected in step 101. The data to be uploaded includes an ID, content, a nonce value, a hash value, and a digital signature. It is assumed that the predetermined encrypted elements are specifically included in the content.

[0041] (Downloading Data from Node to Terminal) Fig. 8 is a diagram illustrating an example of the operation of a terminal according to the embodiment when downloading data from a node to the terminal. The following steps are executed by the processor of the terminal, and a program for causing the processor to execute these steps is recorded in the non-volatile storage medium of the terminal. Below, an example will be described in which terminal 2 downloads data.

[0042] (Step 201) First, terminal 2 executes a step of selecting one node. This step is the same as step 101 described above. Here, as an example, node 8 is selected. This step will be described in detail later.

[0043] (Step 202) Next, the terminal 2 executes a step of downloading data from the node 8 selected in step 201. For example, not only the content but also the ID, nonce value, hash value, and digital signature are downloaded.

[0044] (Step 203) Next, the terminal 2 decrypts a predetermined element included in the downloaded data, for example, a predetermined element included in the content.

[0045] When a predetermined element is encrypted with a system-wide public key or a personal public key of a user who operates the terminal 2, the terminal 2 decrypts the data with a system-wide secret key or a personal secret key of the user who operates the terminal 2.

[0046] If a predetermined element is encrypted with a limited-public public key, terminal 2 executes the following steps: decrypting the encrypted master key included in the downloaded data (e.g., an encrypted master key included in the content) using the personal private key of the user operating terminal 2; and regenerating the limited-public public key and private key using the decrypted master key. Then, it executes the following steps: decrypting the predetermined element included in the downloaded data (e.g., a predetermined element included in the content, except for the encrypted master key) using the regenerated limited-public private key. Note that node 8 stores the master key encrypted with the personal public key of the user operating terminal 2 and the master key encrypted with the personal public key of the user operating terminal 3, but does not store the master key encrypted with the personal public key of the user operating terminal 4. Therefore, even if terminal 4 downloads an encrypted master key from node 8, just like terminal 2, it cannot decrypt it, and it cannot regenerate the limited-public and private keys. Therefore, terminal 4 cannot display the predetermined element included in the data uploaded from terminal 1.

[0047] (Updating node data) FIG. 9 is a diagram illustrating an example of the operation of a node according to an embodiment when updating node data. The following steps are executed by the processor of the node, and a program for causing the processor to execute these steps is recorded in the non-volatile storage medium of the node. Data is updated, for example, by copying data that is stored in other nodes but not in the node itself from the other nodes and adding this to the data of the node itself. Data is updated in parallel by each of the multiple nodes. Below, we will explain, as an example, the case where node 8 updates the data of its own node using data from node 2. The following explanation will be given.

[0048] (Step 301) First, node 8 executes a step of selecting one node. Here, node 2 is selected. This step is the same as step 101 and step 201 described above. This step will be explained in detail later.

[0049] Note that node 2 is selected in step 101, node 8 is selected in step 201, and different nodes are selected in each step. This is due to differences in node identification information selected due to geographical proximity, differences in node identification information selected randomly, and differences in the timing at which each step is executed (for example, a node that stored correct data at one point in time may store incorrect data due to tampering at another point in time).

[0050] (Step 302) Next, node 8 executes a step of updating the data stored in its own device using the data of node 2 selected in step 301. For example, in an example where data 1 is stored in node 8 and data 1 and 2 are stored in node 2, node 8 copies data 2 from node 2 and adds it to data 1 stored in its own node. After the update, data 1 and 2 will be stored in node 8.

[0051] (Node Selection) FIGS. 10A and 10B are diagrams illustrating an example of the operation of a computer according to an embodiment when executing a step of selecting one node. The following steps are included in the "step of selecting one node" described in steps 101, 201, and 301 above. The "step of selecting one node" is executed by executing the following steps. The following steps are executed by a processor of a terminal or a node, and a program for causing the processor to execute these steps is recorded in a non-volatile storage medium of the terminal or node. In the following, the term "computer" refers to a terminal in steps 101 and 201, and refers to a node in step 301. The following description will be made with reference to FIGS. 10A and 10B.

[0052] (Step 401) First, the computer executes a step of requesting from the server two or more pieces of node identification information selected based on geographical proximity from among a plurality of pieces of node identification information stored in the server.

[0053] (Step 402) Next, the computer executes a step of receiving the two or more pieces of node identification information requested in step 401 from the server.

[0054] (Step 403) Next, the computer executes a step of requesting the server for three or more pieces of node identification information that are randomly selected from the plurality of pieces of node identification information stored in the server.

[0055] To prevent a case in which half of the nodes have the same testing data, it is preferable that the sum of the number of node identification information requested in this step and the number of node identification information requested in step 401 be an odd number. For example, if an even number of node identification information is requested in step 401, it is preferable to request an odd number of node identification information in step 403, and conversely, if an odd number of node identification information is requested in step 401, it is preferable to request an even number of node identification information in step 403. In this embodiment, two node identification information are requested in step 401 and five node identification information are requested in step 403, so a total of seven node identification information is requested in these two steps.

[0056] The sum of the number of node identification information requested in this step and the number of node identification information requested in step 401 may be 5 or more, but is preferably 7 or more, more preferably 9 or more, and even more preferably 11 or more, so that a node that stores correct data is more likely to be selected. In this embodiment, two pieces of node identification information are requested in step 401, and five pieces of node identification information are requested in step 403, so that a total of seven pieces of node identification information are requested in these two steps, but a total of five or more pieces of node identification information may be requested in these two steps, and it is preferable to request a total of seven or more pieces of node identification information (in the case of this embodiment), more preferable to request a total of nine or more pieces of node identification information, and even more preferable to request a total of 11 or more pieces of node identification information.

[0057] (Step 404) Next, the computer executes a step of receiving the three or more pieces of node identification information requested in step 403 from the server.

[0058] (Step 405) Next, the computer executes a step of requesting test data from each of the five or more nodes received from the server in steps 402 and 404.

[0059] The test data is used to verify that the correct data is stored in the node. The test data is calculated by each node. All nodes use the same method to calculate the detection data.

[0060] A node that receives a request for verification data performs the following steps: summing up the hash values ​​of all users stored in the node itself; calculating a hash value by executing a hash function using the sum as a parameter; and transmitting the calculated hash value to a computer as test data. Using the data shown in Figure 4 as an example, the node that receives a request for verification data adds up the hash value "123" in the first row, the hash value "234" in the second row, the hash value "345" in the third row, and the hash value "456" in the fourth row, and then executes the hash function using the sum "123234345456" as a parameter to calculate a hash value, and the calculated value is used as test data.

[0061] Each node may calculate the test data each time it receives a request for test data. Alternatively, each node may calculate the test data each time it updates its own data, store the calculated test data in its own node, and transmit the stored test data when it receives a request.

[0062] (Step 406) Next, the computer executes a step of receiving the test data from each of the five or more nodes that requested the test data in step 405.

[0063] (Step 407) Next, the computer executes a step of determining whether a majority of the total of five or more nodes store the same test data, and whether at least one node identified by two or more pieces of node identification information selected based on geographical proximity is included among the majority of nodes storing the same test data, and if so, selecting one node identified by node identification information selected based on geographical proximity that is included among the majority of nodes storing the same test data.

[0064] For example, consider a case where terminal 1 receives test data from seven nodes, consisting of nodes 1 and 2 geographically close to the computer and randomly selected nodes 3 to 7, and the test data received from four nodes, nodes 2, 3, 4, and 5, is identical. In this case, four nodes account for the majority of the seven nodes, or in other words, four is more than half of seven, so node 2, which is geographically close to the computer, is selected from the four nodes, nodes 2, 3, 4, and 5, that have the same test data.

[0065] If the computer determines that the parameter is not included in this step, it returns to step 401, for example, and repeats the steps described above until it determines that the parameter is included in this step. However, if it is determined that the parameter is not included in this step even after a predetermined time has elapsed, or if it is determined that the parameter is not included in this step even after repeating the steps a predetermined number of times, the processing may be stopped. If the processing is stopped, for example, a message indicating that the processing has been stopped may be output on the computer screen, etc.

[0066] (Example of Server Operation) A program executed by the server according to the embodiment will be described below with reference to Fig. 10A. The following steps are executed by a processor of the server, and a program for causing the processor to execute these steps is recorded in a non-volatile storage medium of the server.

[0067] (Step 501) When the server receives a request for two or more node identification information selected based on geographical proximity from a computer such as a terminal or a node, the server executes a step of selecting two or more node identification information based on geographical proximity from the plurality of node identification information stored in the server, and transmitting the selected two or more node identification information to the computer.

[0068] Geographical proximity can be determined, for example, by performing the following steps. For example, the step of determining whether a certain computer and a certain node belong to the same area, such as Asia, North America, or Europe, is performed, and if so, the step of selecting the node as a node located geographically closer to the certain computer than nodes belonging to other areas is performed. Furthermore, a node located at a latitude and longitude close to the latitude and longitude of the computer can be determined to be a node located geographically closer to the certain computer. For example, the IP address of the computer or the IP address of the node can be used for this determination. In this case, the computer may transmit the IP address of the computer to the server along with the request in this step. Furthermore, the server that receives the request in this step may transmit a request to the computer to transmit its IP address, and the computer that receives the request may transmit the IP address of the computer to the server.

[0069] (Step 502) When the server receives a request for three or more pieces of randomly selected node identification information from a computer such as a terminal or a node, the server executes a step of randomly selecting three or more pieces of node identification information from the plurality of pieces of node identification information stored in the server and transmitting the selected three or more pieces of node identification information to the computer.

[0070] According to the present embodiment described above, when the majority of the five or more nodes store the same test data, in other words, when the number of nodes storing the same test data exceeds half of the five or more nodes, one node is selected from among the plurality of nodes storing the same test data. In other words, when the number of nodes storing the same test data exceeds half of the five or more nodes, it is assumed that the plurality of nodes storing the same test data are storing correct data, and one node is selected from among the plurality of nodes storing the same test data.

[0071] According to this embodiment, node selection using tokens is unnecessary, and tokens do not need to be incorporated into data. This reduces the risk of data management being used for speculation aimed at acquiring tokens, and promotes the healthy development of services using data management. Rewards awarded in a system using this embodiment are not in the form of tokens embedded in data, but can be paid in the form of royalties or the like by operators of servers, networks, etc. to users operating terminals or node administrators based on the extent of their contribution as node administrators or the quality of data uploaded by users, i.e., the extent of their contribution to the healthy development of services using the system according to this embodiment. Such royalties or other rewards allow users and node administrators to correctly recognize the significance and legitimacy of contributing to the healthy development of services using the system according to this embodiment, thereby encouraging them to take actions that contribute to the healthy development of services. In other words, we can expect actions such as increasing the number of times users upload high-quality data that is highly rated by other users, increasing the number of times users download data to increase the number of times they communicate with other users, or frequently taking measures to improve security so that the data on the nodes they manage is not tampered with, so that the nodes they manage are more often selected as nodes that store correct data.

[0072] Furthermore, according to this embodiment, processes such as uploading and downloading data and updating data are performed on nodes that are located in geographically close locations, thereby reducing the time required for these processes.

[0073] The hash function may be, for example, Sha256. However, when applying this embodiment, the type of hash function is not particularly limited.

[0074] As the encryption and decryption method, for example, Sha256 can be used. However, when applying this embodiment, the type of encryption and decryption method is not particularly limited.

[0075] The above-mentioned terminals and nodes can be operated in series, but it is preferable to operate them in parallel.

[0076] Although the embodiments have been described above, these descriptions are merely examples and do not limit the configurations described in the claims. Even if the configuration differs from the above description, as long as it has the configurations described in the claims, it will still achieve the effects of the present invention and be included in the present invention.

Claims

1. A system in which a plurality of terminals, a plurality of nodes that communicate with each other in a peer-to-peer manner, and a server that stores node identification information that identifies the nodes are connected via a network, wherein, when uploading data to the nodes, the terminal executes the steps of selecting one node, encrypting a predetermined element included in the data to be uploaded, and uploading the data including the encrypted element to the selected node, and when downloading data from the nodes, the terminal executes the steps of selecting the one node, downloading data from the selected node, and decrypting the predetermined element included in the downloaded data, and the nodes execute the steps of selecting the one node, and updating data stored in the node itself using data stored in the selected node, and the step of selecting the one node includes the steps of requesting, from the server, two or more node identification information selected based on geographical proximity from the plurality of node identification information stored in the server, and receiving the two or more node identification information from the server. a step of requesting from the server three or more node identification information randomly selected from a plurality of node identification information stored in the server; a step of receiving from the server the three or more node identification information; a step of requesting test data from each of the five or more nodes received from the server; a step of receiving the test data from each of the five or more nodes; and a step of determining whether a majority of the five or more nodes store identical test data and whether at least one of the nodes identified by two or more node identification information selected based on geographical proximity is included among the majority of nodes storing the identical test data, and if so, selecting one node identified by the node identification information selected based on geographical proximity that is included in the majority of nodes storing the identical test data.

2. A system as claimed in claim 1, wherein the step of encrypting a predetermined element included in the data comprises: generating a master key using a personal public key of a specific user and a personal private key of a user operating the terminal; generating a limited public key and a private key using the generated master key; encrypting the generated master key using the personal public key of the specific user; and encrypting a predetermined element other than the encrypted master key in data containing the encrypted master key as an element, using the generated limited public key; and wherein the step of decrypting a predetermined element included in the data comprises: decrypting the encrypted master key included in the downloaded data using the personal private key of the specific user; regenerating the limited public key and private key using the decrypted master key; and decrypting a predetermined element included in the downloaded data, other than the encrypted master key, using the regenerated limited private key.

3. A program for causing a terminal to execute, when uploading data to a node, the steps of selecting one node, encrypting a predetermined element included in the data to be uploaded, and uploading the data with the encrypted predetermined element to the selected one node, and for causing the terminal to execute, when downloading data from a node, the steps of selecting the one node, downloading data from the selected one node, and decrypting the predetermined element included in the downloaded data, wherein the step of selecting one node includes the steps of: requesting, from the server, two or more node identification information selected based on geographical proximity from among a plurality of node identification information stored in the server; receiving the two or more node identification information from the server; requesting, from the server, three or more node identification information randomly selected from the plurality of node identification information stored in the server; receiving the three or more node identification information from the server; requesting test data from a total of five or more nodes received from the server; and receiving the test data from each of the total of five or more nodes. a step of determining whether a majority of the total of five or more nodes store identical test data, and whether at least one of the nodes identified by two or more node identification information selected based on the geographical proximity is included among the majority of nodes storing the identical test data, and if so, selecting one node identified by node identification information selected based on the geographical proximity that is included in the majority of nodes storing the identical test data.

4. A program as claimed in claim 3, wherein the step of encrypting a predetermined element included in the data includes: generating a master key using the specific user's personal public key and a personal private key of a user operating the terminal; generating a limited public key and a private key using the generated master key; encrypting the generated master key using the specific user's personal public key; and encrypting a predetermined element other than the encrypted master key in data containing the encrypted master key as an element, using the generated limited public key; and wherein the step of decrypting a predetermined element included in the data includes: decrypting the encrypted master key included in the downloaded data using the specific user's personal private key; regenerating the limited public key and private key using the decrypted master key; and decrypting a predetermined element included in the downloaded data, other than the encrypted master key, using the regenerated limited private key.

5. A program for causing a node to execute the steps of: selecting one node; and updating data stored in the node itself using data stored in the selected one node, wherein the step of selecting one node includes the steps of: requesting from the server two or more pieces of node identification information selected based on geographical proximity from among a plurality of pieces of node identification information stored in the server; receiving from the server the two or more pieces of node identification information; requesting from the server three or more pieces of node identification information randomly selected from the plurality of pieces of node identification information stored in the server; receiving from the server the three or more pieces of node identification information; requesting test data from each of a total of five or more nodes received from the server; and receiving the test data from each of the total of five or more nodes. a step of determining whether a majority of the total of five or more nodes store identical test data, and whether at least one of the nodes identified by two or more node identification information selected based on the geographical proximity is included among the majority of nodes storing the identical test data, and if so, selecting one node identified by node identification information selected based on the geographical proximity that is included in the majority of nodes storing the identical test data.

6. A program to cause a server to execute the following steps: when a request for two or more node identification information selected based on geographical proximity is received from a computer, selecting two or more node identification information from the multiple node identification information stored in the server based on geographical proximity, and transmitting the selected two or more node identification information to the computer; and when a request for three or more node identification information selected at random is received from the computer, selecting three or more node identification information at random from the multiple node identification information stored in the server, and transmitting the selected three or more node identification information to the computer.

7. A program for causing a computer to execute the following steps: requesting from a server two or more pieces of node identification information selected based on geographical proximity from among the plurality of node identification information stored in the server; receiving from the server the two or more pieces of node identification information; requesting from the server three or more pieces of node identification information randomly selected from the plurality of node identification information stored in the server; receiving from the server the three or more pieces of node identification information; requesting test data from a total of five or more nodes received from the server; receiving the test data from the total of five or more nodes; determining whether a majority of the total of five or more nodes store the same test data and whether at least one of the nodes identified by the two or more pieces of node identification information selected based on geographical proximity is included among the majority of nodes storing the same test data, and if so, selecting one node identified by the node identification information selected based on geographical proximity that is included in the majority of nodes storing the same test data.

8. A non-volatile storage medium having the program according to any one of claims 3 to 7 recorded thereon.

Citation Information

Patent Citations

  • Authentication system, authentication device and computer program

    JP2009169861A

  • Geofence-based edge service control and authentication

    US20210006972A1

  • Data transfer between computing nodes of a distributed computing system

    US20220014377A1