WO2020165931A1 - 情報処理装置、秘密計算方法及びプログラム - Google Patents
情報処理装置、秘密計算方法及びプログラム Download PDFInfo
- Publication number
- WO2020165931A1 WO2020165931A1 PCT/JP2019/004793 JP2019004793W WO2020165931A1 WO 2020165931 A1 WO2020165931 A1 WO 2020165931A1 JP 2019004793 W JP2019004793 W JP 2019004793W WO 2020165931 A1 WO2020165931 A1 WO 2020165931A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- unit
- share
- redistribution
- value calculation
- value
- Prior art date
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 29
- 238000000034 method Methods 0.000 title claims description 116
- 238000004364 calculation method Methods 0.000 claims abstract description 435
- 238000006243 chemical reaction Methods 0.000 claims abstract description 132
- 238000012545 processing Methods 0.000 claims abstract description 92
- 108010016634 Seed Storage Proteins Proteins 0.000 claims abstract description 59
- 238000001514 detection method Methods 0.000 claims description 143
- 238000004891 communication Methods 0.000 claims description 91
- 230000000873 masking effect Effects 0.000 claims description 4
- 238000013500 data storage Methods 0.000 description 215
- 238000000354 decomposition reaction Methods 0.000 description 45
- 230000006870 function Effects 0.000 description 34
- 238000010586 diagram Methods 0.000 description 33
- 230000015572 biosynthetic process Effects 0.000 description 23
- 238000003786 synthesis reaction Methods 0.000 description 23
- 230000000694 effects Effects 0.000 description 15
- 238000009826 distribution Methods 0.000 description 11
- 238000012795 verification Methods 0.000 description 11
- 238000012986 modification Methods 0.000 description 9
- 230000004048 modification Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 230000006399 behavior Effects 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 239000006185 dispersion Substances 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/764—Masking
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
Definitions
- the present invention relates to an information processing device, a secret calculation method, and a program.
- the present invention relates to an information processing apparatus, a secret calculation method, and a program for share type conversion in a four-party secret calculation that can detect fraud.
- the first method is a secret calculation protocol that can be executed only in a specific calculation.
- the second method is a secret calculation protocol that can execute arbitrary calculations.
- various methods exist in the second method, and trade-offs in various costs such as communication amount (data amount) and the number of communication rounds are established between the methods. For example, there are a method in which the number of communication is large instead of a small amount of communication and a method in which the number of communication is large but the number of communication is small.
- MPC multi-party calculation
- MPC is a secret calculation protocol that can calculate an arbitrary function among a plurality of participants while hiding the input of each participant.
- MPC secret sharing based MPC
- Secret sharing based MPC distributes the input to each participant.
- the distributed data is called a share.
- Each participant uses his or her share to calculate the target function while cooperating among the participants.
- the share format is maintained with respect to the value of the calculation process, the original input and the value of the calculation process are never revealed. Only the share of the final calculation result is restored and any function can be calculated safely.
- N 1 When Share the value of Notated as
- MPC Middle-Proliferative Privacy
- secrecy The other is correctness.
- the confidentiality is the security that guarantees that the information regarding the input is not leaked to the participants even if the supposed attacker exists when executing the MPC.
- the legitimacy is the security that guarantees that the execution result is correct, even if an assumed attacker exists when executing the secret calculation protocol.
- the first indicator is the attacker's behavior.
- the second is the proportion of attackers among the participants.
- the typical types of attackers are the semi-honest adversary (Semi-honest Adversary) and the malicious attacker (Malicious Adversary).
- a semi-nested attacker is an attacker who attempts to increase the information available to them while still following the protocol.
- a Mauritius attacker is an attacker who attempts to increase the information available to him by taking behavior that deviates from the protocol.
- the behavior that deviates from the protocol includes, for example, tampering the transmission data by performing bit inversion on the data that should originally be transmitted.
- Non-Patent Document 1 discloses a three-party MPC in which a majority is honest and the attacker is a semi-nested attacker.
- the MPC disclosed in Non-Patent Document 1 is The arithmetic operation above is realized.
- the MPC disclosed in Non-Patent Document 1 is A communication cost of 3n bits is required for each multiplication described above. That is, the multiplication can be realized at the communication cost of n bits per participant.
- Non-Patent Document 2 discloses a three-party MPC in the case where the majority is honest and the attacker is a Mauritius attacker. This is a method based on the method of Non-Patent Document 1. Unlike the MPC disclosed in Non-Patent Document 1, the MPC disclosed in Non-Patent Document 2 allows the presence of a malicious attacker. The MPC disclosed in Non-Patent Document 2 can probabilistically detect fraud by a malicious attacker. The higher the detection probability, that is, the lower the probability of successful fraud, the higher the communication cost. For example, when the probability that fraud is successful is set to 2-40 , in Non-Patent Document 2, A communication cost of 21n bits is required for each multiplication described above. That is, multiplication with a fraud detection function can be realized at a communication cost of 7n bits per participant.
- Non-Patent Document 3 proposes a share type conversion method in Non-Patent Document 1.
- Share type conversion is, for example, From To get the share column of. This type conversion is called bit decomposition. Also, as an example of different type conversion, From Can be mentioned. This type conversion is called ring synthesis.
- Non-Patent Document 3 discloses that bit decomposition requires a communication cost of 6n-6 bits, for example. Such processing is important when MPC is desired to be efficiently performed on a mixed circuit in which arithmetic circuits and logic circuits are mixed. For example, when the bit decomposition proposed in Non-Patent Document 3 is executed using the method of Non-Patent Document 2, the presence of a malicious attacker can be allowed, but the communication cost is 42n-42 bits.
- the communication cost will be lower if there are few participants in MPC and the majority are honest people. Therefore, it has been considered that the above-described three-party MPC is a method with high calculation efficiency. However, when the assumed attacker is a Mauritius attacker, the four-party MPC may have better calculation efficiency.
- the MPC disclosed in Non-Patent Document 4 is A communication cost of 6n bits is required for each multiplication described above. That is, multiplication can be realized at a communication cost of 1.5 n bits per participant.
- Non-Patent Document 4 does not propose a type-specific type conversion. Therefore, it is necessary to use the bit decomposition as disclosed in Non-Patent Document 5, for example.
- Non-Patent Document 5 Since the method proposed in Non-Patent Document 5 is a method of performing bit decomposition on a ring, From To calculate the share column of. Therefore, the result of bit decomposition according to Non-Patent Document 5 is It cannot be used in the above calculations and is inefficient when calculating mixed circuits.
- the communication cost includes a communication amount and the number of communication rounds.
- the communication amount is particularly important.
- one participant could not calculate the output of the other three participants It is intended to create a situation where the output of can be calculated. If you can create this situation, The treatment of is not particularly limited. In this book Is just an example.
- ⁇ P_1 is To P_3.
- ⁇ P_2 To P_1.
- ⁇ P_3 To P_2.
- ⁇ P_1 is To P_4.
- ⁇ P_2 To P_4.
- the share, the constant multiplication, and the constant addition are obvious to those skilled in the art, so the description thereof will be omitted. Also, Regarding the calculation regarding the above share, The explanation is omitted because it can be executed in the same way as the calculation for the share above. At this time, even if there is one Mauritius attacker among the participants, it is possible to verify whether or not the value has been tampered with by using the value received from the participant having a different share from each participant. If it has been tampered with, the protocol is interrupted.
- Non-Patent Document 3 cannot be used directly because the share format is different.
- the general type conversion method as disclosed in Non-Patent Document 5 is performed on a ring whose order bit length is 2 or more, and the calculation efficiency of the logic circuit portion in the mixed circuit is poor. Therefore, when it is desired to efficiently perform the calculation of the mixed circuit by the MPC capable of detecting fraud, the 4-way MPC disclosed in Non-Patent Document 4 or the 4-way using the 2-out-of-4 duplication secret sharing described above. An efficient type conversion process that can be executed by MPC is required.
- the present invention provides an information processing device, a secret calculation method, and a program that contribute to executing efficient type conversion processing in a four-party MPC using 2-out-of-4 duplicate secret sharing.
- the main purpose is that.
- a basic operation seed storage unit that stores a seed for generating a random number when performing an operation for a share, and a random number is generated using the seed
- a redistribution value calculation unit that calculates a redistribution value of the share by the generated random number and transmits the data related to the generated random number to another device, and the data related to the generated random number received from another device.
- a share configuration unit that configures a share for type conversion using the redistribution value of the share.
- a step of generating a random number using a seed, a step of calculating a redistribution value of a share by the generated random number, and a step of A secret calculation method includes a step of transmitting to a device, and a step of configuring a share for type conversion by using the generated random number data received from another device and the redistribution value of the share. ..
- a process of generating a random number using a seed, a share redistribution value is calculated from the generated random number, and the data related to the generated random number is converted into another value.
- a program for causing a computer to execute a process of transmitting to a device and a process of configuring a share for type conversion using the data on the generated random number received from another device and the redistribution value of the share is provided. It The program can be recorded in a computer-readable storage medium.
- the storage medium may be a non-transient one such as a semiconductor memory, a hard disk, a magnetic recording medium, an optical recording medium, or the like.
- the present invention can also be embodied as a computer program product.
- the information processing device 10 includes a basic operation seed storage unit 11, a redistribution value calculation unit 12, and a share configuration unit 13 (see FIG. 1).
- the basic operation seed storage unit 11 stores a seed for generating a random number when performing an operation on a share.
- the redistribution value calculation unit 12 generates a random number using the seed, calculates the redistribution value of the share using the generated random number, and transmits the data related to the generated random number to another device.
- the share configuring unit 13 configures a share for type conversion by using the generated random number data received from another device and the redistribution value of the share.
- bit decomposition and ring synthesis are useful type conversions for efficiently performing secret computation, but if the format of the shares held by each device is inconsistent, bit decomposition, etc. No benefit. Therefore, the information processing apparatus 10 reconfigures the shares so that the formats of the shares held by the respective devices are unified and type conversion such as bit decomposition is facilitated.
- FIG. 2 is a block diagram showing a functional configuration example of the type conversion processing system according to the first embodiment.
- the server devices 100_1, 100_2, 100_3, and 100_4 are communicably connected to a server device different from itself via a network.
- the i-th server device 100_i includes the i-th redistribution value calculation unit 102_i, the i-th share configuration unit 103_i, the i-th fraud detection unit 104_i, and the i-th arithmetic operation unit.
- 105_i an i-th logical operation unit 106_i, an i-th basic operation seed storage unit 107_i, and an i-th data storage unit 108_i.
- the i-th redistribution value calculation unit 102_i, the i-th share configuration unit 103_i, the i-th fraud detection unit 104_i, the i-th arithmetic operation unit 105_i, the i-th logical operation unit 106_i, the The i-th basic operation seed storage unit 107_i and the i-th data storage unit 108_i are connected to each other.
- the share of the above calculation result may be restored by the first to fourth server devices 100_1 to 100_4 transmitting and receiving the share. Alternatively, the share may be transmitted and restored outside the first to fourth server devices 100_1 to 100_4.
- the value input by any one of the first to fourth server devices 100_1 to 100_4 Or shares stored in the first to fourth data storage units 109_1 to 109_4 , Or a share input from outside, not the first to fourth server devices 100_1 to 100_4
- the value of the calculation process Without knowing the value of Is calculated and stored in the first to fourth data storage units 108_1 to 108_4.
- the share of the above calculation result may be restored by the first to fourth server devices 100_1 to 100_4 transmitting and receiving the share. Alternatively, the share may be transmitted and restored outside the first to fourth server devices 100_1 to 100_4.
- FIG. 4 is a flowchart showing an operation example regarding bit decomposition of the first to fourth server devices 100_1 to 100_4.
- FIG. 5 is a flowchart showing an operation example regarding ring combination of the first to fourth server devices 100_1 to 100_4.
- each of the server devices 100_1 to 100_4 is a pseudo random function. To share. In addition, And the pseudorandom function And in each of the data storage units 108_1 to 108_4, , , , Memorize
- one participant Can not calculate the output of the other three participants It is intended to create a situation where the output of can be calculated.
- one of the server devices 100_1, 100_2, 100_3 could not calculate the output of the other two participants It is intended to create a situation where the output of can be calculated. If you can create this situation,
- the treatment of is not particularly limited. However, in this document Is just an example.
- the first redistribution value calculation unit 102_1 and the second redistribution value calculation unit 102_2 respectively include a first basic operation seed storage unit 107_1 and a second basic operation seed storage unit 107_2, To get.
- the first redistribution value calculation unit 102_1 and the second redistribution value calculation unit 102_2 To generate.
- the second redistribution value calculation unit 102_2 are stored in the second data storage unit 108_2.
- the third redistribution value calculation unit 102_3 Is transmitted to the first share configuration unit 103_1.
- the third redistribution value calculation unit 102_3 Is transmitted to the fourth share configuration unit 103_4.
- the third redistribution value calculation unit 102_3 Are stored in the third data storage unit 108_3.
- the first redistribution value calculation unit 102_1 Is transmitted to the second share configuration unit 103_2.
- the first redistribution value calculation unit 102_1 Is transmitted to the fourth share configuration unit 103_4.
- the i-th redistribution value calculation unit 102_i uses the seed stored in the basic operation seed storage unit 107_i to generate a random number (for example, ) Is generated. Further, the re-distribution value calculation unit 102_i may share (for example, ) Redistribution value (eg, ) Is calculated. After that, the redistribution value calculation unit 102_i uses the generated random number data (for example, ) Is transmitted to the redistribution value calculation unit 102_i of another server device.
- the generated random number data includes the random number itself.
- Is. Is, for example, a counter, which is shared among the server devices 100_1 to 100_4.
- Step A3 Each share configuration unit 103_1, 103_2, 103_3, 103_4 configures a share by the following formula 12 using the values transmitted in step A2.
- the i-th share configuration unit 103_i configures a share for type conversion (for bit decomposition in step A3) by using the data regarding the random number received from another server device and the redistribution value of the share (re-production).
- the value x is distributed as the shares x 1 , x 2 , x 3 .
- the share is redistributed, and redistributed values x 1 ′, x 2 ′ and x 3 ′ are calculated. Based on this redistribution value and the random number r used for the calculation of the redistribution value, the initial shares x 1 , x 2 , x 3 are reconfigured into shares for bit decomposition.
- the share format of each server device is different even though the share format of the fourth server device 100_4 is different from that of the other server devices 100_1 to 100_3.
- the value x is redistributed to keep and the shares are reconstructed.
- the share format of the server apparatuses 100_1 to 100_3 is a combination of two values
- the share format of the server apparatus 100_4 is a combination of calculation results by two exclusive ORs.
- these share formats are pre-conversion formats
- the share format that can be represented by the above equation 12 is the post-conversion format.
- comparing the formats before and after conversion it is understood that the shares are reconfigured (reconfigured into shares for bit decomposition) while the formats are retained before and after conversion.
- Step A4 By communicating between the i-th logical operation units 106 — i, n-bit adder processing is performed. Is calculated as follows. here, Is, for example, , As input, Is the process of outputting.
- Each i-th logical operation unit 106_i is Is stored in each data storage unit 108_i.
- the i-th logical operation unit 106_i performs a logical operation on the type-converted share (share for bit decomposition). More specifically, the i-th logical operation unit 106 — i executes addition processing of the type-converted shares by mutually communicating with other server devices.
- Server device 100_1 Server device 100_2: Server device 100_3: Server device 100_4:
- steps A3 and A4 above first , , To obtain the bit share of each digit (step A3), and then to calculate the adder using the bit share obtained in step A3 to obtain the bit share of each digit of the value x. (Step A4).
- step A3 has the purpose of generating a share of bits of each digit whose addition result is the value x (redistribution from the value x), and the load associated with the adder calculation in the subsequent step A4. It has the significance of reducing the number of redistribution shares themselves so that they can be mitigated.
- each server device 100_i In order to obtain the reconfigured share, each server device 100_i To use. At that time, each server device 100_i retains itself. It may not be possible to generate the reconfigured share by itself. Therefore, each server device 100_i is held by the other server device from the other server device. However, it is not possible to obtain the value from another server device from the viewpoint of preventing secret leakage. Therefore, each server device 100_i transmits and receives a value (share redistribution value) masked with a random number and uses it for reconfiguring the reconfigured share. In the present disclosure, the above-mentioned random number (random number for mask) and share are reconfigured so that the calculation load of the adder following the reconfiguration of share is reduced.
- the server device 100_3 and the server device 100_4 are Since these servers are not directly Is difficult to generate. Therefore, the server device 100_3 or the server device 100_4 receives from the server device 100_1 or the server device 100_2 having the above value, or by a random number that can be calculated. Need to be configured. However, if the value itself held by the server device 100_1 or the server device 100_2 is transmitted, the risk of secret leakage increases, so a random number for a mask is used. Therefore, each redistribution value calculation unit 102_i calculates a random number for a mask and, for example, the server device 100_2 switches to the server device 100_4. Is transmitted (step A2). Then, in step A3, Shares are being restructured, including.
- step A3 is executed for the purpose of reducing the number of redistribution share itself in order to reduce the load involved in the adder calculation in step A4. That is, since the calculation cost of the adder occupies most of the communication cost of the entire bit decomposition, the redistribution is performed so as to reduce the calculation cost of the adder calculation with the heavy communication cost.
- the purpose of the redistribution is not limited to the above, and as described in other embodiments, “the number of shares increases, but it is adapted to the form of communication to improve communication cost efficiency in ring synthesis” and “ The number of shares of redistribution is the same, but there may be redistribution for the purpose of “reducing the cost of redistribution in step A3”.
- Step A5 The first redistribution value calculation unit 102_1 uses the first data storage unit 108_1. Take out. Next, the first redistribution value calculation unit 102_1 Is transmitted to the third fraud detection unit 104_3. In addition, the first redistribution value calculation unit 102_1 To the fourth fraud detection unit 104_4. The third fraud detecting unit 104_3 and the fourth fraud detecting unit 104_4 are respectively stored in the third data storage unit 108_3. , Stored in the fourth data storage unit 108_4 Take out and verify that the values match.
- the third fraud detecting unit 104_3 or the fourth fraud detecting unit 104_4 broadcasts the success character string to each of the server devices 100_1, 100_2, 100_3, 100_4, and proceeds to the next step. If they do not match, the third fraud detecting unit 104_3 or the fourth fraud detecting unit 104_4 broadcasts the abort character string to each of the server devices 100_1, 100_2, 100_3, 100_4, and interrupts the protocol.
- a hash value for the concatenated value may be possible to verify whether or not they match with a hash value for a value obtained by concatenating each of the values of the above. In this case, for the communication volume of the entire process, The hash value for the concatenated value can be regarded as negligible. The same applies to.
- the second redistribution value calculation unit 102_2 From the second data storage unit 108_2.
- the second redistribution value calculation unit 102_2 Is transmitted to the first fraud detection unit 104_1.
- the second redistribution value calculation unit 102_2 To the fourth fraud detection unit 104_4.
- the first fraud detecting unit 104_1 and the fourth fraud detecting unit 104_4 are respectively stored in the first data storage unit 108_1. , Stored in the fourth data storage unit 108_4 Take out and verify that the values match.
- the first fraud detection unit 104_1 or the fourth fraud detection unit 104_4 broadcasts the success character string to each server device 100_1, 100_2, 100_3, 100_4, and proceeds to the next step. If they do not match, the first fraud detecting unit 104_1 or the fourth fraud detecting unit 104_4 broadcasts the abort character string to each of the server devices 100_1, 100_2, 100_3, 100_4, and interrupts the protocol.
- the above verification A hash value for the concatenated value and It may be possible to verify whether or not they match with a hash value for a value obtained by concatenating each of the values of the above. In this case, for the communication volume of the entire process, The hash value for the concatenated value can be regarded as negligible. The same applies to.
- the third redistribution value calculation unit 102_3 From the third data storage unit 108_3.
- the third redistribution value calculation unit 102_3 Is transmitted to the second fraud detection unit 104_2.
- the third redistribution value calculation unit 102_3 To the fourth fraud detection unit 104_4.
- the second fraud detecting unit 104_2 and the fourth fraud detecting unit 104_4 are respectively stored in the second data storage unit 108_2. , Stored in the fourth data storage unit 108_4 Take out and verify that the values match.
- the above verification A hash value for the concatenated value and It may be possible to verify whether or not they match with a hash value for a value obtained by concatenating each of the values of the above. In this case, for the communication volume of the entire process, The hash value for the concatenated value can be regarded as negligible. The same applies to.
- the i-th fraud detecting unit 104_i detects the fraud of the protocol based on the random number data received from the other server device. Specifically, the i-th fraud detection unit 104_i determines whether or not there is fraud depending on whether or not the data related to the random number received from the other server device and the data related to the random number stored in the device itself match (misconduct). Presence/absence).
- Step A6 Each i-th fraud detecting unit 104_i is Fraud detection is performed by matching the received and transmitted data in.
- Step A6 can be executed in parallel with step A5.
- the i-th fraud detection unit 104_i detects the presence/absence of a fraudster using the data transmitted/received for the addition process of the type-converted shares.
- Step B1 Each of the basic operation seed storage units 107_1, 107_2, 107_3, 107_4, , , , Memorize
- each of the server devices 100_1 to 100_4 is a pseudo random function. To share.
- the pseudorandom function And
- each of the data storage units 108_1 to 108_4, , , , Memorize Furthermore, the loop counters are provided in the data storage units 108_1 to 108_4. Memorize In addition, age, , , , And
- one participant Can not calculate the output of the other three participants It is intended to create a situation where the output of can be calculated.
- one of the server devices 100_1, 100_2, 100_3 could not calculate the output of the other two participants It is intended to create a situation where the output of can be calculated. If you can create this situation,
- the treatment of is not particularly limited. In this book Is just an example.
- the logical operation units 106_1 to 106_4 are connected to the data storage units 108_1 to 108_4 respectively. Take out. here, Is a carry for the jth bit. Then, the respective logical operation units 106_1 to 106_4 And calculate Is stored in each of the data storage units 108_1 to 108_4.
- the first redistribution value calculation unit 102_1 and the second redistribution value calculation unit 102_2 respectively include a first basic operation seed storage unit 107_1 and a second basic operation seed storage unit 107_2, To get.
- the first redistribution value calculation unit 102_1 and the second redistribution value calculation unit 102_2 To generate.
- the first redistribution value calculation unit 102_1 Is stored in the first data storage unit 108_1.
- the second redistribution value calculation unit 102_2 Is transmitted to the third share configuration unit 103_3.
- the second redistribution value calculation unit 102_2 Is transmitted to the fourth share configuration unit 103_4.
- the second redistribution value calculation unit 102_2 are stored in the second data storage unit 108_2.
- the third redistribution value calculation unit 102_3 Is transmitted to the first share configuration unit 103_1.
- the third redistribution value calculation unit 102_3 Is transmitted to the fourth share configuration unit 103_4.
- the third redistribution value calculation unit 102_3 Are stored in the third data storage unit 108_3.
- the first redistribution value calculation unit 102_1 Is transmitted to the second share configuration unit 103_2.
- the first redistribution value calculation unit 102_1 Is transmitted to the fourth share configuration unit 103_4.
- Is. Is, for example, a counter, which is shared among the server devices 100_1 to 100_4.
- Step B4 Each share configuration unit 103_1, 103_2, 103_3, 103_4 configures a share by the following formula 12 using the value transmitted in step B3. , Is stored in each i-th data storage unit 208_i.
- Step B5 By carrying out communication between the i-th logical operation units 106 — i, carry calculation processing is performed. Is calculated as follows. here, Is the input in the full adder And carry input from the lower order Input the 5 of the above and carry output as the following formula Is a process for outputting.
- Each i-th logical operation unit 106_i is Is stored in each data storage unit 108_i.
- the i-th logical operation unit 106_i communicates with other server devices to execute the carry calculation process of the type-converted share.
- Step B6 The first redistribution value calculation unit 102_1 uses the first data storage unit 108_1. Take out. Next, the first redistribution value calculation unit 102_1 Is transmitted to the third fraud detection unit 104_3. In addition, the first redistribution value calculation unit 102_1 To the fourth fraud detection unit 104_4. The third fraud detecting unit 104_3 and the fourth fraud detecting unit 104_4 are respectively stored in the third data storage unit 108_3. , Stored in the fourth data storage unit 108_4 Take out and verify that the values match.
- the third fraud detecting unit 104_3 or the fourth fraud detecting unit 104_4 broadcasts the success character string to each of the server devices 100_1, 100_2, 100_3, 100_4, and proceeds to the next step. If they do not match, the third fraud detecting unit 104_3 or the fourth fraud detecting unit 104_4 broadcasts the abort character string to each of the server devices 100_1, 100_2, 100_3, 100_4, and interrupts the protocol.
- a hash value for the concatenated value may be possible to verify whether or not they match with a hash value for a value obtained by concatenating each of the values of the above. In this case, for the communication volume of the entire process, The hash value for the concatenated value can be regarded as negligible. The same applies to.
- the second redistribution value calculation unit 102_2 From the second data storage unit 108_2.
- the second redistribution value calculation unit 102_2 Is transmitted to the first fraud detection unit 104_1.
- the second redistribution value calculation unit 102_2 To the fourth fraud detection unit 104_4.
- the first fraud detecting unit 104_1 and the fourth fraud detecting unit 104_4 are respectively stored in the first data storage unit 108_1. , Stored in the fourth data storage unit 108_4 Take out and verify that the values match.
- the first fraud detection unit 104_1 or the fourth fraud detection unit 104_4 broadcasts the success character string to each server device 100_1, 100_2, 100_3, 100_4, and proceeds to the next step. If they do not match, the first fraud detecting unit 104_1 or the fourth fraud detecting unit 104_4 broadcasts the abort character string to each of the server devices 100_1, 100_2, 100_3, 100_4, and interrupts the protocol.
- a hash value for the concatenated value may be possible to verify whether or not they match with a hash value for a value obtained by concatenating each of the values of the above. In this case, for the communication volume of the entire process, The hash value for the concatenated value can be regarded as negligible. The same applies to.
- the third redistribution value calculation unit 102_3 From the third data storage unit 108_3.
- the third redistribution value calculation unit 102_3 Is transmitted to the second fraud detection unit 104_2.
- the third redistribution value calculation unit 102_3 To the fourth fraud detection unit 104_4.
- the second fraud detecting unit 104_2 and the fourth fraud detecting unit 104_4 are respectively stored in the second data storage unit 108_2. , Stored in the fourth data storage unit 108_4 Take out and verify that the values match.
- the second fraud detecting unit 104_2 or the fourth fraud detecting unit 104_4 broadcasts the success character string to each server device 100_1, 100_2, 100_3, 100_4, and proceeds to the next step. If they do not match, the second fraud detecting unit 104_1 or the fourth fraud detecting unit 104_4 broadcasts the abort character string to each of the server devices 100_1, 100_2, 100_3, 100_4 and interrupts the protocol.
- a hash value for the concatenated value may be possible to verify whether or not they match with a hash value for a value obtained by concatenating each of the values of the above. In this case, for the communication volume of the entire process, The hash value for the concatenated value can be regarded as negligible. The same applies to.
- Step B7 Each i-th fraud detection unit 105_i executes the above-mentioned step B5. Fraud detection is performed by matching the received and transmitted data in.
- the i-th fraud detection unit 105_i detects the presence/absence of a fraudster using the data transmitted/received for the carry calculation process of the type-converted share.
- Step B8 Each i-th arithmetic operation unit 105_i is read from each data storage unit 108_i. Take out. Then, the calculation by the following formula is performed. Each i-th arithmetic operation unit 105_i is stored in each data storage unit 108_i. Memorize
- the above-described first embodiment has the following effects.
- the first effect is that share type conversion can be performed by using a four-party secret calculation that can detect fraud. If the steps related to fraud detection are performed in parallel when executing a complex mixed circuit, the communication cost related to fraud detection can be canceled.
- the communication cost of bit decomposition at this time is (16n-10) bits ⁇ n+1 rounds.
- the communication cost for ring synthesis is (16n-16) bits/2n-2 rounds.
- communication cost type conversion when combining non-patent document 2 and Non-Patent Document 3 when the 2 -40 the probability of fraud is successful, is the (42n-42) bit ⁇ n-1 round .. Therefore, the disclosed method is a more efficient method.
- the implementation of this patent is not limited to the ripple carry type n-bit adder.
- An n-bit adder such as a carry look ahead type or a parallel prefix type may be used.
- the second effect is that the fraud detection probability is always "1" when performing share type conversion using a secret calculation between four parties that can detect fraud.
- the fraud detection probability is parameterized, so that the communication cost also increases when trying to improve the fraud detection probability.
- the secret calculation can be applied, and the fraud detection probability required differs depending on the application.
- the survey of required requirements and the setting of each parameter accompanying the survey will be a burden on the user.
- the fraud detection probability is "1", so that the burden of requirement investigation and parameter setting is reduced.
- the i-th server device 200_i includes the i-th redistribution value calculation unit 202_i, the i-th share configuration unit 203_i, the i-th fraud detection unit 204_i, and the i-th arithmetic operation unit. 205_i, an i-th logical operation unit 206_i, an i-th basic operation seed storage unit 207_i, and an i-th data storage unit 208_i.
- the i-th redistribution value calculation unit 202_i, the i-th share configuration unit 203_i, the i-th fraud detection unit 204_i, the i-th arithmetic operation unit 205_i, the i-th logical operation unit 206_i, the The i-th basic operation seed storage unit 207_i and the i-th data storage unit 208_i are connected to each other.
- the share of the calculation result may be restored by the first to fourth server devices 200_1 to 200_4 transmitting and receiving the share. Alternatively, the share may be transmitted to the outside of the first to fourth server devices 200_1 to 200_4 and the share may be restored.
- the share of the calculation result may be restored by the first to fourth server devices 200_1 to 200_4 transmitting and receiving the share. Alternatively, the share may be transmitted to the outside of the first to fourth server devices 200_1 to 200_4 and the share may be restored.
- FIG. 7 is a flowchart showing an operation example regarding ring combination of the first to fourth server devices 200_1 to 200_4.
- the bit decomposition can be performed in the same manner as in the first embodiment, so the description thereof will be omitted.
- FIG. 7 A flow chart for ring synthesis shown in FIG. 7 will be explained.
- Step B'1 The basic operation seed storage units 207_1, 207_2, 207_3, and 207_4 are respectively , , , Memorize
- each of the server devices 200_1 to 200_4 is a pseudo random function. To share.
- the pseudorandom function And the pseudorandom function
- Each server device 200_i has the following formula. Determine the value of.
- the data storage units 208_1 to 208_4 are respectively , , , , Memorize
- the first re-distribution value calculation unit 202_1 and the second re-distribution value calculation unit 202_2 respectively include a first basic operation seed storage unit 207_1 and a second basic operation seed storage unit 207_2, To get.
- the first redistribution value calculation unit 202_1 and the second redistribution value calculation unit 202_2 To generate.
- the first redistribution value calculation unit 202_1 Are stored in the first data storage unit 208_1.
- the second redistribution value calculation unit 202_2 is Is transmitted to the third share configuration unit 203_3.
- the second redistribution value calculation unit 202_2 Is transmitted to the fourth share configuration unit 203_4.
- the second redistribution value calculation unit 202_2 is Is stored in the second data storage unit 208_2.
- the third redistribution value calculation unit 202_3 Is transmitted to the first share configuration unit 203_1.
- the third redistribution value calculation unit 202_3 Is transmitted to the fourth share configuration unit 203_4.
- the third redistribution value calculation unit 202_ 3 and the first redistribution value calculation unit 202_ 1 To generate.
- the third redistribution value calculation unit 302_3 Is stored in the third data storage unit 208_3.
- the first redistribution value calculation unit 202_1 Is transmitted to the second share configuration unit 203_2.
- the first redistribution value calculation unit 202_1 Is transmitted to the fourth share configuration unit 203_4.
- Is. Is, for example, a counter, which is shared by the server devices 200_1 to 200_4.
- Step B'4 The first redistribution value calculation unit 202_1 uses the first data storage unit 208_1 Take out. Next, the first redistribution value calculation unit 202_1 Is transmitted to the third fraud detection unit 204_3. In addition, the first redistribution value calculation unit 202_1 To the fourth fraud detection unit 204_4. The third fraud detecting unit 204_3 and the fourth fraud detecting unit 204_4 are respectively stored in the third data storage unit 208_3. , Stored in the fourth data storage unit 208_4 Take out and verify that the values match.
- the third fraud detecting unit 204_3 or the fourth fraud detecting unit 204_4 broadcasts the success character string to each server device 200_1, 200_2, 200_3, 200_4, and proceeds to the next step. If they do not match, the third fraud detecting unit 204_3 or the fourth fraud detecting unit 204_4 broadcasts the abort character string to each of the server devices 200_1, 200_2, 200_3, 200_4, and interrupts the protocol.
- a hash value for the concatenated value may be possible to verify whether or not they match with a hash value for a value obtained by concatenating each of the values of the above. In this case, for the communication volume of the entire process, The hash value for the concatenated value can be regarded as negligible. The same applies to.
- the second redistribution value calculation unit 102_2 From the second data storage unit 208_2.
- the second redistribution value calculation unit 202_2 Is transmitted to the first fraud detection unit 204_1.
- the second redistribution value calculation unit 202_2 To the fourth fraud detection unit 204_4.
- the first fraud detecting unit 204_1 and the fourth fraud detecting unit 204_4 are respectively stored in the first data storage unit 208_1.
- Stored in the fourth data storage unit 208_4 Take out and verify that the values match.
- the first fraud detecting unit 204_1 or the fourth fraud detecting unit 204_4 broadcasts the success character string to each server device 200_1, 200_2, 200_3, 200_4, and proceeds to the next step. If they do not match, the first fraud detecting unit 204_1 or the fourth fraud detecting unit 204_4 broadcasts the abort character string to each server device 200_1, 200_2, 200_3, 200_4, and interrupts the protocol.
- a hash value for the concatenated value may be possible to verify whether or not they match with a hash value for a value obtained by concatenating each of the values of the above. In this case, for the communication volume of the entire process, The hash value for the concatenated value can be regarded as negligible. The same applies to.
- the third redistribution value calculation unit 202_3 From the third data storage unit 208_3.
- the third redistribution value calculation unit 202_3 Is transmitted to the second fraud detection unit 204_2.
- the third redistribution value calculation unit 202_3 To the fourth fraud detection unit 204_4.
- the second fraud detection unit 204_2 and the fourth fraud detection unit 204_4 are respectively stored in the second data storage unit 208_2.
- Stored in the fourth data storage unit 208_4 Take out and verify that the values match.
- the second fraud detection unit 204_2 or the fourth fraud detection unit 204_4 broadcasts the success character string to each server device 200_1, 200_2, 200_3, 200_4, and proceeds to the next step. If they do not match, the second fraud detection unit 204_2 or the fourth fraud detection unit 204_4 broadcasts the abort character string to each of the server devices 200_1, 200_2, 200_3, 200_4, and interrupts the protocol.
- a hash value for the concatenated value may be possible to verify whether or not they match with a hash value for a value obtained by concatenating each of the values of the above. In this case, for the communication volume of the entire process, The hash value for the concatenated value can be regarded as negligible. The same applies to.
- the first re-distribution value calculation unit 202_1 and the second re-distribution value calculation unit 202_2 respectively include a first basic operation seed storage unit 207_1 and a second basic operation seed storage unit 207_2, To get.
- the first redistribution value calculation unit 202_1 and the second redistribution value calculation unit 202_2 To generate.
- the second redistribution value calculation unit 202_2 is Is stored in the second data storage unit 208_2.
- the third redistribution value calculation unit 202_3 Is transmitted to the first share configuration unit 203_1.
- the third redistribution value calculation unit 202_3 Is transmitted to the fourth share configuration unit 203_4.
- Is. Is, for example, a counter, which is shared by the server devices 200_1 to 200_4.
- the i-th logical operation unit 206_i calculates the first element by non-communication with another server device, and concurrently performs the communication required for the calculation of the redistribution value of the share and the communication required for the carry calculation processing of the second element. (Step B'7).
- the third fraud detecting unit 204_3 or the fourth fraud detecting unit 204_4 broadcasts the success character string to each server device 200_1, 200_2, 200_3, 200_4, and proceeds to the next step. If they do not match, the third fraud detecting unit 204_3 or the fourth fraud detecting unit 204_4 broadcasts the abort character string to each of the server devices 200_1, 200_2, 200_3, 200_4, and interrupts the protocol.
- a hash value for the concatenated value may be possible to verify whether or not they match with a hash value for a value obtained by concatenating each of the values of the above. In this case, for the communication volume of the entire process, The hash value for the concatenated value can be regarded as negligible. The same applies to.
- the second redistribution value calculation unit 202_2 From the second data storage unit 208_2.
- the second redistribution value calculation unit 202_2 Is transmitted to the first fraud detection unit 204_1.
- the second redistribution value calculation unit 202_2 To the fourth fraud detection unit 204_4.
- the first fraud detecting unit 204_1 and the fourth fraud detecting unit 204_4 are respectively stored in the first data storage unit 208_1.
- Stored in the fourth data storage unit 208_4 Take out and verify that the values match.
- a hash value for the concatenated value may be possible to verify whether or not they match with a hash value for a value obtained by concatenating each of the values of the above. In this case, for the communication volume of the entire process, The hash value for the concatenated value can be regarded as negligible. The same applies to.
- the third redistribution value calculation unit 202_3 From the third data storage unit 208_3.
- the third redistribution value calculation unit 202_3 Is transmitted to the second fraud detection unit 204_2.
- the third redistribution value calculation unit 202_3 To the fourth fraud detection unit 204_4.
- the second fraud detection unit 204_2 and the fourth fraud detection unit 204_4 are respectively stored in the second data storage unit 208_2.
- Stored in the fourth data storage unit 208_4 Take out and verify that the values match.
- the second fraud detecting unit 204_2 or the fourth fraud detecting unit 204_4 broadcasts the success character string to each of the server devices 200_1, 200_2, 200_3, 200_4, and proceeds to the next step. If they do not match, the second fraud detection unit 204_2 or the fourth fraud detection unit 204_4 broadcasts the abort character string to each of the server devices 200_1, 200_2, 200_3, 200_4, and interrupts the protocol.
- a hash value for the concatenated value may be possible to verify whether or not they match with a hash value for a value obtained by concatenating each of the values of the above. In this case, for the communication volume of the entire process, The hash value for the concatenated value can be regarded as negligible. The same applies to.
- Step B'10 Each i-th fraud detecting unit 204 — i has a function of step B′7. Fraud detection is performed by matching the received and transmitted data in.
- the first to fourth server devices 200_1, 200_2, 200_3, and 200_4 in which the fraud is not detected broadcast the character string of success to each server device.
- the first to fourth server devices 200_1, 200_2, 200_3, and 200_4, which have detected the injustice, broadcast the character string of abort to each server device and interrupt the protocol. This is realized by the above-mentioned four-party secret calculation capable of detecting fraud.
- Step B'11 Each i-th arithmetic operation unit 205_i is read from each data storage unit 208_i. Take out. Then, the calculation shown in the following formula is executed. Each i-th arithmetic operation unit 205_i is stored in each data storage unit 208_i. Memorize
- the second embodiment As described above, in the second embodiment described above, the same effect as that of the first embodiment is obtained. However, with respect to the first effect in the first embodiment, the second embodiment is more efficient in terms of communication cost in ring synthesis. In the second embodiment, carry calculation processing By dividing and considering the redistribution of shares and the process involving communication in carry calculation in parallel, the communication rounds are reduced. Therefore, the communication cost of ring combination in the second embodiment is (16n-16) bits ⁇ n ⁇ 1 rounds.
- FIG. 9 is a block diagram showing a functional configuration example of the type conversion processing system according to the third embodiment.
- the type conversion processing system according to the third embodiment is a modification of the type conversion processing system according to the first and second embodiments described above.
- the server devices 300_1, 300_2, 300_3, and 300_4 are communicably connected to a server device different from itself via a network.
- the i-th server device 300_i includes the i-th redistribution value calculation unit 302_i, the i-th share configuration unit 303_i, the i-th fraud detection unit 304_i, and the i-th arithmetic operation unit.
- 305_i an i-th logical operation unit 306_i, an i-th basic operation seed storage unit 307_i, and an i-th data storage unit 308_i.
- the value input by any one of the first to fourth server devices 300_1 to 300_4. Or shares stored in the first to fourth data storage units 308_1 to 308_4 , Or the share input from outside, not the first to fourth server devices 300_1 to 300_4
- the shares of the above calculation results may be restored by the first to fourth server devices 300_1 to 300_4 transmitting and receiving the shares.
- the share may be transmitted and restored outside the first to fourth server devices 300_1 to 300_4.
- the value input by any one of the first to fourth server devices 300_1 to 300_4. Or shares stored in the first to fourth data storage units 308_1 to 308_4 , Or the share input from outside, not the first to fourth server devices 300_1 to 300_4
- the shares of the above calculation results may be restored by the first to fourth server devices 300_1 to 300_4 transmitting and receiving the shares.
- the share may be transmitted and restored outside the first to fourth server devices 300_1 to 300_4.
- FIG. 11 is a flowchart showing an operation example regarding bit decomposition of the first to fourth server devices 300_1 to 300_4.
- FIG. 12 is a flowchart showing an operation example regarding ring combination of the first to fourth server devices 300_1 to 300_4.
- Step C1 The basic operation seed storage units 307_1, 307_2, 307_3, and 307_4 are respectively , , , Memorize
- each of the server devices 300_1 to 300_4 is a pseudo random function. To share. In addition, And the pseudorandom function And in each of the data storage units 308_1 to 308_4, , , , Memorize
- the first redistribution value calculation unit 302_1 and the second redistribution value calculation unit 302_2 respectively include a first basic operation seed storage unit 307_1 and a second basic operation seed storage unit 307_2, To get.
- the first redistribution value calculation unit 302_1, the second redistribution value calculation unit 302_2, the first redistribution value calculation unit 302_1, and the third redistribution value calculation unit 302_3 To generate.
- the first redistribution value calculation unit 302_1 Is stored in the first data storage unit 308_1.
- the third redistribution value calculation unit 302_3 Is transmitted to the third share configuration unit 303_3.
- the second redistribution value calculation unit 302_2 Is transmitted to the fourth share configuration unit 303_4.
- the second redistribution value calculation unit 302_2 Are stored in the second data storage unit 308_2.
- the first redistribution value calculation unit 302_1 Is transmitted to the first share configuration unit 303_1.
- the third redistribution value calculation unit 302_3 Is transmitted to the fourth share configuration unit 303_4.
- the first redistribution value calculation unit 302_1, the second redistribution value calculation unit 302_2, and the third redistribution value calculation unit 302_3 To generate.
- the third redistribution value calculation unit 302_3 Is stored in the third data storage unit 308_3.
- the second redistribution value calculation unit 302_2 Is transmitted to the second share configuration unit 303_2.
- the first redistribution value calculation unit 302_1 Is transmitted to the fourth share configuration unit 303_4.
- Is. Is, for example, a counter, which is shared among the server devices 300_1 to 300_4.
- Step C3 Each share configuration unit 303_1, 303_2, 303_3, 303_4 configures a share by the following 12 formulas using the value transmitted in step C2. here, As opposed to Is of Th bit Means , , Are stored in each i-th data storage unit 308_i.
- each redistribution value calculation unit 302 — i calculates two values out of x1 to x3 when the value x is the exclusive OR of x1, x2, and x3. Random numbers are generated so that they are equal.
- Step C4 By communicating with each i-th logical operation unit 306_i, n-bit adder processing is performed. Is calculated as follows. here, Is, for example, , As input, Is the process of outputting. here, So Was calculated. In addition, Is ,... Means the share column of. Each i-th logical operation unit 306_i is Is stored in each data storage unit 308_i.
- Step C5 The first redistribution value calculation unit 302_1 uses the first data storage unit 308_1. Take out. Next, the first redistribution value calculation unit 302_1 Is transmitted to the fourth fraud detection unit 304_4. The fourth fraud detection unit 304_4 is stored in the fourth data storage unit 308_4. Take out, Verify that holds.
- the fourth fraud detection unit 304_4 broadcasts the success character string to each of the server devices 300_1, 300_2, 300_3, 300_4, and proceeds to the next step. If not established, the fourth fraud detection unit 304_4 broadcasts the abort character string to each of the server devices 300_1, 300_2, 300_3, and 300_4, and interrupts the protocol.
- the second redistribution value calculation unit 302_2 From the second data storage unit 308_2.
- the second redistribution value calculation unit 302_2 Is transmitted to the fourth fraud detection unit 304_4.
- the fourth fraud detecting unit 204_4 is stored in the fourth data storage unit 308_4. Take out, Verify that holds.
- the fourth fraud detection unit 304_4 broadcasts the success character string to each of the server devices 300_1, 300_2, 300_3, 300_4, and proceeds to the next step. If not established, the fourth fraud detection unit 304_4 broadcasts the abort character string to each of the server devices 300_1, 300_2, 300_3, and 300_4, and interrupts the protocol.
- the third redistribution value calculation unit 302_3 From the third data storage unit 308_3.
- the third redistribution value calculation unit 302_3 Is transmitted to the fourth fraud detection unit 304_4.
- the fourth fraud detection unit 304_4 is stored in the fourth data storage unit 308_4. Take out, Verify that holds.
- the fourth fraud detection unit 304_4 broadcasts the success character string to each of the server devices 300_1, 300_2, 300_3, 300_4, and proceeds to the next step. If they do not match, the fourth fraud detection unit 304_4 broadcasts the abort character string to each server device 300_1, 300_2, 300_3, 300_4, and interrupts the protocol.
- the hash value may be transmitted by concatenating the respective values, and verification may be performed by comparing the hash values. At this time, the transmission amount of the hash value can be regarded as negligible with respect to the calculation amount of the entire process.
- Step C6 Each i-th fraud detection unit 304_i executes the above-mentioned step C4. Fraud detection is performed by matching the received and transmitted data in.
- the first to fourth server devices 300_1, 300_2, 300_3, and 300_4 in which the fraud is not detected broadcast the character string of success to each server device.
- the first to fourth server devices 300_1, 300_2, 300_3, and 300_4, which have detected the injustice, broadcast the character string of abort to each server device and interrupt the protocol. This is realized by the above-mentioned four-party secret calculation capable of detecting fraud.
- Step C6 can be executed in parallel with step C5.
- Step D1 The basic operation seed storage units 307_1, 307_2, 307_3, and 307_4 are respectively , , , Memorize
- the arithmetic operation units 305_1 to 305_4 are stored in the data storage units 308_1 to 308_4. Take out. Then, the arithmetic operation units 305_1 to 305_4 are And calculate Is stored in each of the data storage units 308_1 to 308_4. Note that the i-th data storage unit 308_i stores To It is written as. Also, And
- the first redistribution value calculation unit 302_1, the second redistribution value calculation unit 302_2, and the third redistribution value calculation unit 302_3 are respectively a first basic operation seed storage unit 307_1 and a second basic operation seed storage unit. 307_2, from the third basic operation seed storage unit 307_3, To get.
- the first redistribution value calculation unit 302_1, the second redistribution value calculation unit 302_2, and the third redistribution value calculation unit 302_3 To generate.
- the first redistribution value calculation unit 302_1 Is transmitted to the first share configuration unit 303_1.
- the third redistribution value calculation unit 302_3 Is transmitted to the third share configuration unit 303_3.
- the second redistribution value calculation unit 302_2 receives the second redistribution value calculation unit 302_2 from the second data storage unit 308_2. Take out, Is transmitted to the fourth share configuration unit 303_4.
- the first redistribution value calculation unit 302_1, the second redistribution value calculation unit 302_2, and the third redistribution value calculation unit 302_3 To generate.
- the second redistribution value calculation unit 302_2 Is transmitted to the second share configuration unit 303_2.
- the first redistribution value calculation unit 302_1 Is transmitted to the first share configuration unit 303_1.
- the third redistribution value calculation unit 302_3 uses the third data storage unit 308_2. Take out, Is transmitted to the fourth share configuration unit 303_4.
- the first redistribution value calculation unit 302_1, the second redistribution value calculation unit 302_2, and the third redistribution value calculation unit 302_3 To generate.
- the third redistribution value calculation unit 302_3 To the third share configuration unit 303_3.
- the second redistribution value calculation unit 302_2 Is transmitted to the second share configuration unit 303_2.
- the first redistribution value calculation unit 302_1 is the same as the first data storage unit 308_1. Take out, Is transmitted to the fourth share configuration unit 303_4.
- Is. Is, for example, a counter, which is shared among the server devices 300_1 to 300_4.
- Step D4 The share configuration units 303_1, 303_2, 303_3, and 303_4 are stored in the value transmitted in step D3 and the i-th data storage unit 308_i. Is used to form a share by the following 12 equations. , , Are stored in each i-th data storage unit 308_i.
- Step D5 The same process as step B5 is performed.
- Step D6 The first redistribution value calculation unit 302_1 uses the first data storage unit 308_1. Take out. Next, the first redistribution value calculation unit 302_1 Is transmitted to the fourth fraud detection unit 304_4. The fourth fraud detection unit 304_4 is stored in the fourth data storage unit 308_4. Take out, Verify that holds.
- the fourth fraud detection unit 204_4 broadcasts the success character string to each server device 300_1, 300_2, 300_3, 300_4, and proceeds to the next step. If not satisfied, the fourth fraud detection unit 304_4 broadcasts the abort character string to each of the server devices 300_1, 300_2, 300_3, and 300_4, and interrupts the protocol.
- the second redistribution value calculation unit 302_2 receives the data from the second data storage unit 308_2. Take out.
- the second redistribution value calculation unit 302_2 Is transmitted to the fourth fraud detection unit 304_4.
- the fourth fraud detection unit 304_4 is stored in the fourth data storage unit 308_4. Take out Verify that holds.
- the fourth fraud detection unit 304_4 broadcasts the success character string to each of the server devices 300_1, 300_2, 300_3, 300_4, and proceeds to the next step. If not established, the fourth fraud detection unit 304_4 broadcasts the abort character string to each of the server devices 300_1, 300_2, 300_3, and 300_4, and interrupts the protocol.
- the third redistribution value calculation unit 302_3 outputs the data from the third data storage unit 308_3. Take out.
- the third redistribution value calculation unit 302_3 Is transmitted to the fourth fraud detection unit 304_4.
- the fourth fraud detection unit 304_4 is stored in the fourth data storage unit 308_4. Take out, Verify that holds.
- the fourth fraud detection unit 304_4 broadcasts the success character string to each of the server devices 300_1, 300_2, 300_3, 300_4, and proceeds to the next step. If they do not match, the fourth fraud detection unit 304_4 broadcasts the abort character string to each server device 300_1, 300_2, 300_3, 300_4, and interrupts the protocol.
- the hash value may be transmitted by concatenating the respective values, and verification may be performed by comparing the hash values. At this time, the transmission amount of the hash value can be regarded as negligible with respect to the calculation amount of the entire process.
- Step D7 Each i-th fraud detection unit 304_i executes the above-mentioned step D5. Fraud detection is performed by matching the received and transmitted data in.
- the first to fourth server devices 300_1, 300_2, 300_3, and 300_4 in which the fraud is not detected broadcast the character string of success to each server device.
- the first to fourth server devices 300_1, 300_2, 300_3, and 300_4, which have detected the injustice, broadcast the character string of abort to each server device and interrupt the protocol. This is realized by the above-mentioned four-party secret calculation capable of detecting fraud.
- Step D8 The same process as step B8 is performed.
- the third embodiment is more efficient in terms of communication cost.
- bit decomposition Twice, for ring synthesis This can be done by calculating.
- the difference between the third embodiment and the first and second embodiments is that redistribution before adder calculation is efficiently performed.
- 13n-10 bits ⁇ n+1 rounds are required as the communication cost of bit decomposition in the third embodiment.
- the communication cost of ring synthesis requires 13n-13 bits and 2n-2 rounds.
- the third embodiment is more efficient than the first and second embodiments in terms of communication cost.
- the implementation of the present disclosure is not limited to the ripple carry type n-bit adder.
- An n-bit adder such as a carry look ahead type or a parallel prefix type may be used.
- FIG. 13 is a block diagram showing a functional configuration example of the type conversion processing system according to the fourth embodiment.
- the type conversion processing system according to the fourth embodiment is a modification of the type conversion processing system according to the first to third embodiments described above.
- the server devices 400_1, 400_2, 400_3, and 400_4 are communicably connected to a server device different from itself via a network.
- the i-th server device 400_i includes an i-th redistribution value calculation unit 402_i, an i-th share configuration unit 403_i, an i-th fraud detection unit 404_i, and an i-th arithmetic operation unit. 405_i, an i-th logical operation unit 406_i, an i-th basic operation seed storage unit 407_i, and an i-th data storage unit 408_i.
- the i-th redistribution value calculation unit 402_i, the i-th share configuration unit 403_i, the i-th fraud detection unit 404_i, the i-th arithmetic operation unit 405_i, the i-th logical operation unit 406_i, and the The i-th basic operation seed storage unit 407_i and the i-th data storage unit 408_i are connected to each other.
- the share of the above calculation result may be restored by the first to fourth server devices 400_1 to 400_4 transmitting and receiving the share.
- the share may be transmitted to the outside of the first to fourth server devices 400_1 to 400_4 and restored.
- the share of the above calculation result may be restored by the first to fourth server devices 400_1 to 400_4 transmitting and receiving the share.
- the share may be transmitted to the outside of the first to fourth server devices 400_1 to 400_4 and restored.
- FIG. 15 is a flowchart showing an operation example regarding ring combination of the first to fourth server devices 400_1 to 400_4.
- the bit decomposition can be performed in the same manner as in the third embodiment, and therefore detailed description will be omitted.
- FIG. 15 A flow chart for ring synthesis shown in FIG. 15 will be described.
- Step D'1 The basic operation seed storage units 407_1, 407_2, 407_3, and 407_4 are respectively , , , Memorize
- Each server device 400_i has the following formula. Determine the value of.
- the data storage units 408_1 to 408_4 are respectively , , , , Memorize
- the first redistribution value calculation unit 402_1, the second redistribution value calculation unit 402_2, and the third redistribution value calculation unit 402_3 are respectively a first basic operation seed storage unit 407_1 and a second basic operation seed storage unit. 407_2, from the third basic operation seed storage unit 407_3, To get. Next, the first redistribution value calculation unit 402_1, the second redistribution value calculation unit 402_2, and the third redistribution value calculation unit 402_3 To generate.
- the first redistribution value calculation unit 402_1 Is transmitted to the first share configuration unit 403_1.
- the third redistribution value calculation unit 402_3 Is transmitted to the third share configuration unit 403_3.
- the second redistribution value calculation unit 402_2 receives the second data redistribution value from the second data storage unit 408_2. Take out, Is transmitted to the fourth share configuration unit 403_4.
- the first redistribution value calculation unit 402_1, the second redistribution value calculation unit 402_2, and the third redistribution value calculation unit 402_3 To generate.
- the second redistribution value calculation unit 402_2 Is transmitted to the second share configuration unit 403_2.
- the first redistribution value calculation unit 402_3 Is transmitted to the first share configuration unit 403_1.
- the third redistribution value calculation unit 402_3 uses the third data storage unit 408_3. Take out, Is transmitted to the fourth share configuration unit 403_4.
- the first redistribution value calculation unit 402_1, the second redistribution value calculation unit 402_2, and the third redistribution value calculation unit 402_3 To generate.
- the third redistribution value calculation unit 402_3 Is transmitted to the third share configuration unit 403_3.
- the second redistribution value calculation unit 402_2 Is transmitted to the second share configuration unit 403_2.
- the first redistribution value calculation unit 402_1 uses the first data storage unit 408_1. Take out, Is transmitted to the fourth share configuration unit 403_4.
- Is. Is, for example, a counter, which is shared among the server devices 400_1 to 400_4.
- Step D'3 The share components 403_1, 403_2, 403_3, and 403_4 are stored in the value transmitted in step D′2 and the i-th data storage unit 408_i. Is used to form a share by the following 12 equations. , , Are stored in each i-th data storage unit 408_i.
- Step D'4 The first redistribution value calculation unit 402_1 is the same as the first data storage unit 408_1. Take out. Next, the first redistribution value calculation unit 402_1 To the fourth fraud detection unit 404_4. The fourth fraud detecting unit 404_4 is stored in the fourth data storage unit 408_4. Take out, Verify that holds.
- the fourth fraud detection unit 404_4 broadcasts the success character string to each of the server devices 400_1, 400_2, 400_3, 400_4, and proceeds to the next step. If not established, the fourth fraud detection unit 404_4 broadcasts the abort character string to each of the server devices 400_1, 400_2, 400_3, 400_4, and interrupts the protocol.
- the second re-distribution value calculation unit 402_2 uses the second data storage unit 408_2. Take out.
- the second redistribution value calculation unit 402_2 To the fourth fraud detection unit 404_4.
- the fourth fraud detecting unit 404_4 is stored in the fourth data storage unit 408_4. Take out Verify that holds.
- the fourth fraud detection unit 404_4 broadcasts the success character string to each of the server devices 400_1, 400_2, 400_3, 400_4, and proceeds to the next step. If not established, the fourth fraud detection unit 404_4 broadcasts the character string of abort to each server device 400_1, 400_2, 400_3, 400_4, and interrupts the protocol.
- the third re-distribution value calculation unit 402_3 uses the third data storage unit 408_3. Take out.
- the third redistribution value calculation unit 402_3 To the fourth fraud detection unit 404_4.
- the fourth fraud detecting unit 404_4 is stored in the fourth data storage unit 408_4. Take out, Verify that holds.
- the fourth fraud detection unit 404_4 broadcasts the success character string to each of the server devices 400_1, 400_2, 400_3, 400_4, and proceeds to the next step. If they do not match, the fourth fraud detection unit 404_4 broadcasts the abort character string to each of the server devices 400_1, 400_2, 400_3, 400_4 and interrupts the protocol.
- the hash value may be transmitted by concatenating the respective values, and verification may be performed by comparing the hash values. At this time, the transmission amount of the hash value can be regarded as negligible with respect to the calculation amount of the entire process.
- Step D'6 Since the processing is the same as that in step B′6, the description will be omitted.
- the first redistribution value calculation unit 402_1, the second redistribution value calculation unit 402_2, and the third redistribution value calculation unit 402_3 are respectively a first basic operation seed storage unit 407_1 and a second basic operation seed storage unit. 407_2, from the third basic operation seed storage unit 407_3, To get.
- the first redistribution value calculation unit 402_1, the second redistribution value calculation unit 402_2, and the third redistribution value calculation unit 402_3 To generate.
- the first redistribution value calculation unit 402_1 Is transmitted to the first share configuration unit 403_1.
- the third redistribution value calculation unit 402_2 Is transmitted to the third share configuration unit 403_4.
- the second redistribution value calculation unit 402_2 receives the second data redistribution value from the second data storage unit 408_2. Take out, Is transmitted to the fourth share configuration unit 403_4.
- the first redistribution value calculation unit 402_1, the second redistribution value calculation unit 402_2, and the third redistribution value calculation unit 402_3 To generate.
- the second redistribution value calculation unit 402_2 Is transmitted to the second share configuration unit 403_2.
- the first redistribution value calculation unit 402_3 Is transmitted to the first share configuration unit 403_1.
- the third redistribution value calculation unit 402_3 uses the third data storage unit 408_3. Take out, Is transmitted to the fourth share configuration unit 403_4.
- the first redistribution value calculation unit 402_1, the second redistribution value calculation unit 402_2, and the third redistribution value calculation unit 402_3 To generate.
- the third redistribution value calculation unit 402_3 Is transmitted to the third share configuration unit 403_3.
- the second redistribution value calculation unit 402_2 Is transmitted to the second share configuration unit 403_2.
- the first redistribution value calculation unit 402_1 uses the first data storage unit 408_1. Take out, Is transmitted to the fourth share configuration unit 403_4.
- Is. Is, for example, a counter, which is shared among the server devices 400_1 to 400_4.
- Step D'8 The share components 403_1, 403_2, 403_3, and 403_4 are stored in the value transmitted in step D′7 and the i-th data storage unit 408_i. Is used to form a share by the following 12 equations. , , Are stored in each i-th data storage unit 408_i.
- Step D'9 The first redistribution value calculation unit 402_1 is the same as the first data storage unit 408_1. Take out. Next, the first redistribution value calculation unit 302_1 To the fourth fraud detection unit 404_4. The fourth fraud detecting unit 404_4 is stored in the fourth data storage unit 408_4. Take out, Verify that holds.
- the fourth fraud detection unit 404_4 broadcasts the success character string to each of the server devices 400_1, 400_2, 400_3, 400_4, and proceeds to the next step. If not established, the fourth fraud detection unit 404_4 broadcasts the character string of abort to each server device 400_1, 400_2, 400_3, 400_4, and interrupts the protocol.
- the second re-distribution value calculation unit 402_2 uses the second data storage unit 408_2. Take out.
- the second redistribution value calculation unit 402_2 To the fourth fraud detection unit 404_4.
- the fourth fraud detecting unit 404_4 is stored in the fourth data storage unit 408_4. Take out Verify that holds.
- the fourth fraud detection unit 404_4 broadcasts the success character string to each of the server devices 400_1, 400_2, 400_3, 400_4, and proceeds to the next step. If not established, the fourth fraud detection unit 404_4 broadcasts the character string of abort to each server device 400_1, 400_2, 400_3, 400_4, and interrupts the protocol.
- the third re-distribution value calculation unit 402_3 uses the third data storage unit 408_3. Take out.
- the third redistribution value calculation unit 402_3 To the fourth fraud detection unit 404_4.
- the fourth fraud detecting unit 404_4 is stored in the fourth data storage unit 408_4. Take out, Verify that holds.
- the fourth fraud detection unit 404_4 broadcasts the success character string to each of the server devices 400_1, 400_2, 400_3, 400_4, and proceeds to the next step. If they do not match, the fourth fraud detection unit 404_4 broadcasts the abort character string to each of the server devices 400_1, 400_2, 400_3, 400_4 and interrupts the protocol.
- the hash value when performing a lot of type conversion processing in parallel, With respect to, the hash value may be transmitted by concatenating the respective values, and verification may be performed by comparing the hash values. At this time, the transmission amount of the hash value can be regarded as negligible with respect to the calculation amount of the entire process.
- Step D'10 Each i-th fraud detecting unit 404_i executes the above-mentioned step D'7. Fraud detection is performed by matching the received and transmitted data in.
- Step D'11 Since the processing is the same as that of step B'11, the description will be omitted.
- the fourth embodiment As described above, in the fourth embodiment described above, the same effects as the effects in the first to third embodiments are obtained. However, regarding the first effect of the third embodiment, the fourth embodiment is more efficient in terms of communication cost in ring synthesis. Carry calculation By dividing and considering the redistribution of shares and the process involving communication in carry calculation in parallel, the communication rounds are reduced. Therefore, the communication cost of ring combination in the fourth embodiment is (13n-13) bits ⁇ n ⁇ 1 rounds.
- a type conversion processing system according to the fifth embodiment will be described with reference to FIGS.
- the type conversion processing system according to the fifth embodiment is a modification of the type conversion processing system according to the first to fourth embodiments described above.
- FIG. 16 is a block diagram showing a functional configuration example of the type conversion processing system according to the fifth embodiment.
- the server devices 500_1, 500_2, 500_3, and 500_4 are communicably connected to a server device different from itself via a network.
- the i-th server device 500_i includes the i-th mask value calculation unit 501_i, the i-th redistribution value calculation unit 502_i, the i-th share configuration unit 503_i, and the i-th fraud detection.
- the unit 504_i, the i-th arithmetic operation unit 505_i, the i-th logical operation unit 506_i, the i-th basic operation seed storage unit 507_i, and the i-th data storage unit 508_i are included.
- the i-th logical operation unit 506_i, the i-th basic operation seed storage unit 507_i, and the i-th data storage unit 508_i are connected to each other.
- the share of the above calculation result may be restored by the first to fourth server devices 500_1 to 500_4 transmitting and receiving the share. Alternatively, the share may be transmitted and restored outside the first to fourth server devices 500_1 to 500_4.
- FIG. 17 is a flowchart showing an operation example relating to bit decomposition of the first to fourth server devices 500_1 to 500_4.
- the ring synthesis can be the same as, for example, the ring synthesis in the third or fourth embodiment, and the description thereof will be omitted.
- Step E1 The basic operation seed storage units 507_1, 507_2, 507_3, and 507_4 are respectively , , , Memorize
- Is. Is, for example, a counter, which is shared among the server devices 500_1 to 500_4.
- Step E4 By communicating with each i-th logical operation unit 506_i, n-bit adder processing is performed. Is calculated as follows. here, Is, for example, , As input, Is the process of outputting.
- Each i-th logical operation unit 506_i Is stored in each data storage unit 508_i.
- Step E5 The first server device 500_1, the first mask value calculation unit 501_1, the same as the second server device 500_2 in step E2, Produces Is transmitted to the fourth server device 500_4.
- the fourth server device 500_4 stores in the fourth data storage unit 508_4. Memorize From the fourth data storage unit 508_4, the fourth fraud detection unit 504_4 Take out Verify that is true.
- the fourth fraud detecting unit 504_4 broadcasts the success character string to each of the server devices 500_1, 500_2, 500_3, and proceeds to the next step. If the above does not hold, the fourth fraud detection unit 504_4 broadcasts the abort character string to each of the server devices 500_1, 500_2, 500_3, and interrupts the protocol.
- the amount of communication regarding can be regarded as negligible with respect to the calculation amount of the entire process.
- Step E6 Each i-th fraud detecting unit 504_i executes the above-mentioned step E4. Fraud detection is performed by matching the received and transmitted data in.
- the first to fourth server devices 500_1, 500_2, 500_3, 500_4 in which the fraudulence is not detected broadcast the character string of success to each server device.
- the first to fourth server devices 500_1, 500_2, 500_3, 500_4 in which the fraud is detected broadcast the character string of abort to each server device and interrupt the protocol. This is realized by the above-mentioned four-party secret calculation capable of detecting fraud.
- Step E6 can be executed in parallel with step E5.
- FIG. 19 is a block diagram showing a functional configuration example of the type conversion processing system according to the sixth embodiment.
- the type conversion processing system according to the sixth embodiment is a modification of the type conversion processing system according to the first to fifth embodiments described above.
- the server devices 600_1, 600_2, 600_3, and 600_4 are communicably connected via a network to a server device different from itself.
- the i-th server device 600_i includes the i-th mask value calculation unit 601-i, the i-th redistribution value calculation unit 602_i, the i-th share configuration unit 603_i, and the i-th fraud detection. It includes a unit 604_i, an i-th arithmetic operation unit 605_i, an i-th logical operation unit 606_i, an i-th basic operation seed storage unit 607_i, and an i-th data storage unit 608_i.
- the i-th logical operation unit 606_i, the i-th basic operation seed storage unit 607_i, and the i-th data storage unit 608_i are connected to each other.
- the share of the above calculation result may be restored by the first to fourth server devices 600_1 to 600_4 transmitting and receiving the share. Alternatively, the share may be transmitted and restored outside the first to fourth server devices 600_1 to 600_4.
- the share of the calculation result may be restored by the first to fourth server devices 600_1 to 600_4 transmitting and receiving the share. Alternatively, the share may be transmitted and restored outside the first to fourth server devices 600_1 to 600_4.
- FIG. 20 is a flowchart showing an operation example regarding bit decomposition of the first to fourth server devices 600_1 to 600_4.
- the ring synthesis can be the same as, for example, the ring synthesis in the third or fourth embodiment, and the description thereof will be omitted.
- Step F2 The first, second, and third mask value calculation units 601_1, 601_2, 601_3 Is calculated and stored in the first, second, and third data storage units 608_1, 608_2, 608_3.
- the second mask value calculation unit 601_2 shares from the data storage unit 608_2. Take out.
- the second mask value calculation unit 601_2 Produces Is transmitted to the fourth server device 600_4.
- the fourth server device 600_4 stores in the fourth data storage unit 608_4.
- the first redistribution value calculation unit 602_1, the second redistribution value calculation unit 602_2, and the third redistribution value calculation unit 602_3 respectively include a first basic operation seed storage unit 607_1 and a second basic operation. From the seed storage unit 607_2 and the third basic operation seed storage unit 607_3, To get. Then, the first redistribution value calculation unit 602_1, the second redistribution value calculation unit 602_2, and the third redistribution value calculation unit 602_3 To generate. Furthermore, the third redistribution value calculation unit 602_3 Is stored in the third data storage unit 608_3. The first redistribution value calculation unit 602_1 is Is transmitted to the first share configuration unit 603_1. In addition, the second redistribution value calculation unit 602_2 is the same as the second data storage unit 608_2. Take out Is transmitted to the fourth share configuration unit 603_4.
- Is. Is, for example, a counter, which is shared among the server devices 600_1 to 600_4.
- Step F4 By communicating with each i-th logical operation unit 606_i, n-bit adder processing is performed. Is calculated as follows. here, Is, for example, , As input, Is the process of outputting. here, So Was calculated. In addition, Is ,... Means the share column of. Each i-th logical operation unit 606_i is Is stored in each data storage unit 608_i.
- Step F5 Like the second server device 600_2 in step F2, the first server device 600_1 has the first mask value calculation unit 601_1 Produces Is transmitted to the fourth server device 600_4.
- the fourth server device 600_4 stores in the fourth data storage unit 608_4. Memorize From the fourth data storage unit 608_4, the fourth fraud detection unit 604_4 Take out Verify that is true.
- the fourth fraud detecting unit 604_4 broadcasts the success character string to each of the server devices 600_1, 600_2, 600_3, and proceeds to the next step. If the above does not hold, the fourth fraud detection unit 604_4 broadcasts the character string of abort to each server device 600_1, 600_2, 600_3, and interrupts the protocol.
- the hash value may be transmitted by concatenating the respective values, and verification may be performed by comparing the hash values. At this time, the transmission amount of the hash value can be regarded as negligible with respect to the calculation amount of the entire process.
- Step F6 Each i-th fraud detecting unit 604_i executes the above-mentioned step F4. Fraud detection is performed by matching the received and transmitted data in.
- Step F6 can be executed in parallel with step F5.
- the sixth embodiment As described above, in the sixth embodiment described above, the same effects as those in the first to fifth embodiments are obtained. Regarding the theoretical communication cost of bit decomposition, the sixth embodiment is more efficient than the first to fifth embodiments. In the sixth embodiment, as with the first to fourth embodiments, regarding bit decomposition. It can be realized by performing the calculation of twice.
- the difference between the sixth embodiment and the first to fourth embodiments is that re-distribution before adder calculation is efficiently performed.
- 12n-10 bits ⁇ n+1 rounds are required as the communication cost of bit decomposition in the sixth embodiment. From this, the bit decomposition in the sixth embodiment is more efficient in terms of communication cost than the bit decomposition in the first to fifth embodiments.
- the implementation of the present disclosure is not limited to the ripple carry type n-bit adder. An n-bit adder of carry look ahead type or parallel prefix type may be used.
- FIG. 22 is a block diagram showing a functional configuration example of the type conversion processing system according to the seventh embodiment.
- the type conversion processing system according to the seventh embodiment is a modification of the type conversion processing system according to the above-described first to sixth embodiments.
- the server devices 700_1, 700_2, 700_3, 700_4 are communicatively connected to a server device different from itself via a network.
- the i-th server device 700_i includes the i-th mask value calculation unit 701_i, the i-th redistribution value calculation unit 702_i, the i-th share configuration unit 703_i, and the i-th fraud detection. It includes a unit 704_i, an i-th arithmetic operation unit 705_i, an i-th logical operation unit 706_i, an i-th basic operation seed storage unit 707_i, and an i-th data storage unit 708_i.
- the i-th logical operation unit 706_i, the i-th basic operation seed storage unit 707_i, and the i-th data storage unit 708_i are connected to each other.
- the value input by any one of the first to fourth server devices 700_1 to 700_4. Or the shares stored in the first to fourth data storage units 708_1 to 708_4 Or a share input from outside, not the first to fourth server devices 700_1 to 700_4
- the share of the above calculation result may be restored by the first to fourth server devices 700_1 to 700_4 transmitting and receiving the share. Alternatively, the share may be transmitted and restored outside the first to fourth server devices 700_1 to 700_4.
- the value input by any one of the first to fourth server devices 700_1 to 700_4. Or the shares stored in the first to fourth data storage units 708_1 to 708_4 Or a share input from outside, not the first to fourth server devices 700_1 to 700_4
- the share of the above calculation result may be restored by the first to fourth server devices 700_1 to 700_4 transmitting and receiving the share. Alternatively, the share may be transmitted and restored outside the first to fourth server devices 700_1 to 700_4.
- FIG. 24 is a flowchart showing an operation example regarding bit decomposition of the first to fourth server devices 700_1 to 700_4.
- the ring synthesis can be the same as, for example, the ring synthesis in the third or fourth embodiment, and the description thereof will be omitted.
- Step G1 The basic operation seed storage units 707_1, 707_2, 707_3, and 707_4 are respectively , , , Memorize
- the first redistribution value calculation unit 702_1, the second redistribution value calculation unit 702_2, and the third redistribution value calculation unit 702_3 respectively include a first basic operation seed storage unit 707_1 and a second basic operation. From the seed storage unit 707_2 and the third basic operation seed storage unit 707_3, To get. Then, the first redistribution value calculation unit 702_1, the second redistribution value calculation unit 702_2, and the third redistribution value calculation unit 702_3 To generate. Furthermore, the first redistribution value calculation unit 702_1 Is stored in the first data storage unit 708_1. The third redistribution value calculation unit 702_3 Is transmitted to the third share configuration unit 703_3. In addition, the second redistribution value calculation unit 702_2 uses the second data storage unit 708_2. Take out Is transmitted to the fourth share configuration unit 703_4.
- Is. Is a counter, for example, and is shared among the server devices 700_1 to 700_4.
- Step G3 The second redistribution value calculation unit 702_2 uses the second basic operation seed storage unit 707_2. To get.
- the third redistribution value calculation unit 702_3 uses the third basic operation seed storage unit 707_3.
- the fourth redistribution value calculation unit 702_4 uses the fourth basic operation seed storage unit 707_4. To get.
- the fourth redistribution value calculation unit 702_4 uses the fourth data storage unit 708_4. To get.
- the second redistribution value calculation unit 702_2, the third redistribution value calculation unit 702_3, and the fourth redistribution value calculation unit 702_4 To calculate.
- the second redistribution value calculation unit 702_2, the third redistribution value calculation unit 702_3, and the fourth redistribution value calculation unit 702_4 have a second data storage unit 708_2, a third data storage unit 708_3, and a third data storage unit 708_3, respectively. No. 4 data storage unit 708_4.
- the fourth redistribution value calculation unit 702_4 Using, Is generated and transmitted to the first share configuration unit 703_1 and the fourth share configuration unit 703_4. Similarly, the third redistribution value calculation unit 702_4 Is generated and transmitted to the third share configuration unit 703_3 and the third data storage unit 708_3.
- Is. Is a counter, for example, and is shared among the server devices 700_1 to 700_4.
- each redistribution value calculation unit 702 — i calculates x1′ as a random number r when performing the exclusive OR of the value x′ of x1′, x2′, and x3′.
- X2′ is zero
- x3′ is an exclusive OR of the random number r and the value x. That is, each redistribution value calculation unit 702_i generates a random number so that a part of the redistribution value calculation unit 702_i becomes zero when redistribution.
- Step G5 By communicating with each i-th logical operation unit 706_i, adder processing is performed. Is calculated as follows. here, Is, for example, , As input, Is the process of outputting. here, So Was calculated. In addition, Is ,... Means the share column of. Each i-th logical operation unit 706_i Is stored in each data storage unit 708_i.
- Step G6 In the first server device 700_1, the first mask value calculation unit 701_1 is similar to the second server device 700_2 in step G2 described above. Produces Is transmitted to the fourth server device 700_4.
- the fourth server device 700_4 stores in the fourth data storage unit 708_4. Memorize From the fourth data storage unit 708_4, the fourth fraud detection unit 704_4 Take out Verify that is true.
- the fourth fraud detecting unit 704_4 broadcasts the success character string to each of the server devices 700_1, 700_2, 700_3, and proceeds to the next step. If the above does not hold, the fourth fraud detecting unit 704_4 broadcasts the abort character string to each of the server devices 700_1, 700_2, 700_3, and interrupts the protocol.
- the first redistribution value calculation unit 702_1 From the first data storage unit 708_1. Next, the first redistribution value calculation unit 702_1 To the fourth fraud detection unit 704_4. The fourth fraud detecting unit 704_4 is stored in the fourth data storage unit 708_4. Take out, Verify that holds.
- the fourth fraud detecting unit 704_4 broadcasts the success character string to each of the server devices 700_1, 700_2, 700_3, 700_4, and proceeds to the next step. If not established, the fourth fraud detection unit 704_4 broadcasts the abort character string to each of the server devices 700_1, 700_2, 700_3, 700_4 and interrupts the protocol.
- the hash value may be transmitted by concatenating the respective values, and verification may be performed by comparing the hash values. At this time, the transmission amount of the hash value can be regarded as negligible with respect to the calculation amount of the entire process.
- Step G7 The third fraud detecting unit 704_3 From the third data storage unit 708_3, Is transmitted to the first fraud detection unit 704_1. From the first data storage unit 708_1, the first fraud detection unit 704_1 Take out, Verify that is true. If the above holds, the first fraud detecting unit 704_1 broadcasts the success character string to each of the server devices 700_2, 700_3, 700_4, and proceeds to the next step. If the above does not hold, the first fraud detection unit 704_1 broadcasts the abort character string to each of the server devices 700_2, 700_3, 700_4, and interrupts the protocol.
- the hash value may be transmitted by concatenating the respective values, and verification may be performed by comparing the hash values. At this time, the transmission amount of the hash value can be regarded as negligible with respect to the calculation amount of the entire process.
- Step G8 Each i-th fraud detecting unit 704_i executes the above-mentioned step G5. Fraud detection is performed by matching the received and transmitted data in.
- the first to fourth server devices 700_1, 700_2, 700_3, 700_4 in which the fraud is detected broadcast the character string of abort to each server device and interrupt the protocol. This is realized by the above-mentioned four-party secret calculation capable of detecting fraud.
- Step G8 can be executed in parallel with steps G6 and G7.
- the seventh embodiment is more efficient than the other embodiments.
- bit decomposition It can be realized by performing the calculation of once.
- 8n ⁇ 5 bits ⁇ n+1 rounds are required as the bit decomposition communication cost.
- the seventh embodiment is more efficient than the other embodiments in terms of bit disassembly communication cost.
- the implementation of the present disclosure is not limited to the ripple carry type n-bit adder.
- An n-bit adder such as a carry look ahead type or a parallel prefix type may be used.
- FIG. 25 is a diagram showing an example of the hardware configuration of the i-th secret calculation server device 100_i.
- the i-th secret calculation server device 100_i is realized by a so-called information processing device (computer) and has the configuration illustrated in FIG.
- the i-th secret calculation server device 100_i includes a CPU (Central Processing Unit) 21, a memory 22, an input/output interface 23, a NIC (Network Interface Card) 24 that is a communication means, etc., which are mutually connected by an internal bus.
- a CPU Central Processing Unit
- memory 22 for example, the i-th secret calculation server device 100_i includes a CPU (Central Processing Unit) 21, a memory 22, an input/output interface 23, a NIC (Network Interface Card) 24 that is a communication means, etc., which are mutually connected by an internal bus.
- NIC Network Interface Card
- the configuration shown in FIG. 25 is not intended to limit the hardware configuration of the i-th secret calculation server device 100_i.
- the i-th secret calculation server device 100_i may include hardware (not shown).
- the number of CPUs and the like included in the i-th secret calculation server device 100_i is not limited to the example illustrated in FIG. 25, and for example, a plurality of CPUs 21 may be included in the i-th secret calculation server device 100_i.
- the memory 22 is a RAM (Random Access Memory), a ROM (Read Only Memory), an auxiliary storage device (hard disk, etc.), or the like.
- the input/output interface 23 is an interface of an input/output device (not shown).
- the input/output device includes, for example, a display device and an operation device.
- the display device is, for example, a liquid crystal display or the like.
- the operation device is, for example, a keyboard or a mouse.
- the function of the i-th secret calculation server device 100_i is realized by the processing module described above.
- the processing module is realized by the CPU 21 executing a program stored in the memory 22, for example.
- the program can be downloaded via a network or updated by using a storage medium storing the program.
- the processing module may be realized by a semiconductor chip. That is, the function performed by the processing module may be realized by some hardware or software executed by using the hardware.
- the configurations and operations of the secret calculation verification system described in the first to seventh embodiments are examples, and various modifications are possible.
- one server device may be defined as a representative server.
- the representative server may control input/output of data used for secret calculation (dispersion and distribution of input data, decryption of calculation result).
- the present invention is To efficiently implement mixed-circuit calculations such as biometric template matching and statistical operations in 4-party MPC that can detect fraud using 2-out-of-4 duplicate secret sharing executed on the ring Suitable for Further, in the present invention, by changing the circuit used when calculating the adder, different type conversions can be realized in which a trade-off between the communication amount and the number of times of communication is established. This enables efficient type conversion according to the communication environment. Therefore, when the mixed circuit that uses the type conversion as a subroutine is executed by the four-party MPC, it can be efficiently executed according to the communication environment.
- [Appendix 3] Further comprising a logical operation unit for performing a logical operation on the type-converted share, The logical operation unit communicates with other devices to perform addition processing of the type-converted shares, The information processing device according to appendix 2, wherein the fraud detection unit detects the presence or absence of a fraudster using the data transmitted and received for the addition processing of the type-converted shares.
- the logical operation unit communicates with another device to perform a carry calculation process of the type-converted share, The information processing device according to appendix 3, wherein the fraud detection unit detects the presence or absence of a fraudster by using the data transmitted and received for the carry calculation process of the type-converted share.
- Appendix 5 The carry calculation process is separable into a first element and a second element following the first element, The logical operation unit, The first element is calculated by non-communication with another device, and the communication necessary for calculating the redistribution value of the share and the communication necessary for the carry calculation process of the second element are performed in parallel, preferably Appendix 4 The information processing device according to 1.
- a mask value calculation unit is further provided, which calculates a mask value for masking the share, and transmits the share masked by the calculated mask value to another device, The information processing apparatus according to any one of appendices 1 to 5, wherein the share configuration unit configures the share for the type conversion by using the transmitted mask value.
- the redistribution value calculation unit When calculating the redistribution value of the value x, the redistribution value calculation unit equalizes two values among the x1 to x3 when the value x is an exclusive OR of the values x1, x2, and x3.
- the information processing apparatus according to any one of appendices 1 to 6, which generates a random number.
- the redistribution value calculating unit sets x1′ equal to the random number r and x2 when the value x′ is an exclusive OR of the values x1′, x2′, and x3′.
- the information processing apparatus according to appendix 7, preferably, wherein'is zero and x3' is an exclusive OR of the random number r and the value x.
- the redistribution value calculation unit inputs the seed and a counter value shared by another device to a pseudo-random function, and generates a random number using the seed, preferably any one of appendices 1 to 8 Information processing equipment.
- the share for type conversion is a share for bit decomposition or a share for ring synthesis, preferably the information processing apparatus according to any one of appendices 1 to 9.
- Appendix 11 This is as in the secret calculation method according to the second aspect described above.
- the program is according to the third aspect described above. Note that the forms of Supplementary Note 11 and Supplementary Note 12 can be expanded to the form of Supplementary Note 2 to the form of Supplementary Note 10 as in the form of Supplementary Note 1.
- Information processing device 11 107_1, 207_1, 307_1, 407_1, 507_1, 607_1, 707_1, 107_i to 707_i basic operation seed storage unit 12, 102_1, 202_1, 302_1, 402_1, 502_1, 602_1, 702_1, 102_i to 702_i re-distributed value Calculation unit 13, 103_1, 203_1, 303_1, 403_1, 503_1, 603_1, 703_1, 103_i to 703_i Share configuration unit 21 CPU (Central Processing Unit) 22 memory 23 input/output interface 24 NIC (Network Interface Card) 100_1 to 100_4, 200_1 to 200_4, 300_1 to 300_4, 400_1 to 400_4, 500_1 to 500_4, 600_1 to 600_4, 700_1 to 700_4, 100_i to 700_i Secret calculation server devices 501_1, 601_1, 701_1, 501_i to 501_i Mask value calculation 204_1, 304_1, 404
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
- Hardware Redundancy (AREA)
Abstract
2-out-of-4複製型秘密分散を用いた4者間MPCにて効率の良い型変換処理を実行する情報処理装置を提供する。情報処理装置は、基本演算シード記憶部と、再分散値計算部と、シェア構成部と、を備える。基本演算シード記憶部は、シェアについての演算を行う際の乱数を生成するためのシードを格納する。再分散値計算部は、シードを用いて乱数を生成し、生成された乱数によりシェアの再分散値を計算すると共に、生成された乱数に関するデータを他の装置に送信する。シェア構成部は、他の装置から受信した生成された乱数に関するデータ及びシェアの再分散値を用いて型変換用のシェアを構成する。
Description
本発明は、情報処理装置、秘密計算方法及びプログラムに関する。特に、不正検知可能な4者秘密計算におけるシェアの型変換に関する情報処理装置、秘密計算方法及びプログラムに関する。
近年、秘密計算に関する研究開発が盛んに行われている。秘密計算では、入力データを秘匿したまま所定の処理を実行し、結果を得ることができる。
秘密計算プロトコルは大きく2つの種類に大別される。第1の方式は、特定の計算に限って実行可能な秘密計算プロトコルである。第2の方式は、任意の計算が実行可能な秘密計算プロトコルである。また、第2の方式には種々の方式が存在し、方式間で通信量(データ量)や通信ラウンド数をはじめとした様々なコストにおけるトレードオフが成立する。たとえば、通信量が少ない代わりに通信回数が多い方式や通信量は多いが通信回数が少ない方式が存在する。
代表的な秘密計算プロトコルとして、マルチパーティ計算(MPC;Multi Party Computation)が挙げられる。MPCとは、各参加者の入力を秘匿しながら、複数の参加者間で任意の関数を計算できる秘密計算プロトコルである。MPCにも、いくつかの方式があるが、近年注目を集める方式は、秘密分散ベースのMPCである。秘密分散ベースのMPCでは、入力を各参加者に分散する。ここで、分散データのことをシェアと呼称する。各参加者は各自のシェアを用いて、参加者間で協調しながら、目的の関数を計算する。このとき、計算過程の値に関してもシェアの形式を保っているために、元々の入力や計算過程の値が明らかになることはない。最終的な計算結果のシェアだけが復元され、安全に任意の関数が計算できる。以降、n≧2のときの
の値のシェアを
、n=1
のときの
の値のシェアを
として表記する。
の値のシェアを
、n=1
のときの
の値のシェアを
として表記する。
ここで、MPCが達成する安全性は、大きく2つある。1つは秘匿性(Secrecy)である。もう1つは正当性(Correctness)である。秘匿性は、MPCを実行するにあたり、想定する攻撃者が存在したとしても、参加者に対し、入力に関する情報が漏れないことを保証する安全性となる。正当性は、秘密計算プロトコルを実行するにあたり、想定する攻撃者が存在したとしても、実行結果が正しいことを保証する安全性となる。
ここで、上記の「想定する攻撃者」には、いくつかの指標がある。代表的な指標として、1つ目は攻撃者の振舞いが挙げられる。2つ目は参加者における攻撃者の割合である。
攻撃者の振舞いに着目した場合、代表的な攻撃者の種類として、セミオネスト攻撃者(Semi-honest Adversary)とマリシャス攻撃者(Malicious Adversary)が挙げられる。セミオネスト攻撃者は、プロトコルに従いつつも、可能な範囲で得られる情報を増やそうと試みる攻撃者である。マリシャス攻撃者は、プロトコルから逸脱した振舞いを取ることで、自身が得られる情報を増やそうと試みる攻撃者である。ここで、プロトコルから逸脱する振舞いとは、たとえば、本来送信すべきデータに対し、ビット反転を行うことによって、送信データを改ざんすることが挙げられる。
参加者における攻撃者の割合に着目した場合、大きく2つの種類が挙げられる。1つは、過半数が不正者(Dishonest majority)の場合である。もう1つは、過半数が正直者(Honest majority)の場合である。ここで、全参加者数をnとし、攻撃者の数をtとする。過半数が不正者の場合とは、つまり、t<nが成り立つ場合を意味する。過半数が正直者の場合とは、つまり、t<n/2が成り立つ場合を意味する。過半数が正直者である場合としてt<n/3が成り立つ場合も含まれるが、本書では特に断りが無い限り、t<n/2が成り立つ場合を過半数が正直者である場合とする。
近年、注目を集めるMPCとして3者間MPCが挙げられる。非特許文献1は、過半数が正直者で、かつ、攻撃者がセミオネスト攻撃者である場合の3者間MPCを開示する。非特許文献1に開示されたMPCは、
上での算術演算を実現する。非特許文献1に開示せれたMPCは、
上での乗算1回あたり、3nビットの通信コストを要する。つまり、参加者あたりnビットの通信コストで乗算を実現できる。
上での算術演算を実現する。非特許文献1に開示せれたMPCは、
上での乗算1回あたり、3nビットの通信コストを要する。つまり、参加者あたりnビットの通信コストで乗算を実現できる。
非特許文献2は、過半数が正直者で、かつ、攻撃者がマリシャス攻撃者である場合の3者間MPCを開示する。これは、非特許文献1の方式をベースとした方式である。非特許文献2に開示されたMPCは、非特許文献1に開示されたMPCとは異なり、マリシャス攻撃者の存在を許容する。非特許文献2に開示されたMPCではマリシャス攻撃者による不正を、確率的に検知することが可能となる。検知確率を上げるほど、つまり、不正が成功する確率を下げようとするほど、通信コストが増加することとなる。たとえば、不正が成功する確率を2-40とした場合、非特許文献2では、
上での乗算1回あたり、21nビットの通信コストを要する。つまり、参加者あたり7nビットの通信コストで不正検知機能付きの乗算を実現できる。
上での乗算1回あたり、21nビットの通信コストを要する。つまり、参加者あたり7nビットの通信コストで不正検知機能付きの乗算を実現できる。
非特許文献3では、非特許文献1におけるシェアの型変換の方法が提案されている。シェアの型変換とは、たとえば、
から
のシェア列を得ることが挙げられる。この型変換をビット分解と呼称する。また、異なる型変換の例として、
から、
を得ることが挙げられる。この型変換を環合成と呼称する。
から
のシェア列を得ることが挙げられる。この型変換をビット分解と呼称する。また、異なる型変換の例として、
から、
を得ることが挙げられる。この型変換を環合成と呼称する。
非特許文献3には、たとえば、ビット分解に6n-6ビットの通信コストを要することが開示されている。このような処理は、算術回路や論理回路が混在した混合回路に対し、効率よくMPCを実行したい場合に重要な処理となる。たとえば、非特許文献2の方式を用いて非特許文献3で提案されたビット分解を実行した場合、マリシャス攻撃者の存在を許容できるが、通信コストは42n―42ビットとなる。
多くの場合、MPCにおいて参加者が少なく、過半数が正直者の場合の方が、通信コストは低くなる。このため、前述のような3者間MPCが計算効率の良い方式であると考えられてきた。しかし、想定する攻撃者がマリシャス攻撃者の場合、計算効率は4者間MPCの方が良い場合がある。
たとえば、非特許文献4は、t<n/3、つまりt=1で、かつ、攻撃者がマリシャス攻撃者である場合の4者間MPCを開示する。非特許文献4に開示されたMPCは、
上での乗算1回あたり、6nビットの通信コストを要する。つまり、参加者あたり1.5nビットの通信コストで乗算を実現できる。しかし、非特許文献4では方式固有の型変換が提案されていない。このため、たとえば、非特許文献5に開示されたようなビット分解を用いる必要がある。
上での乗算1回あたり、6nビットの通信コストを要する。つまり、参加者あたり1.5nビットの通信コストで乗算を実現できる。しかし、非特許文献4では方式固有の型変換が提案されていない。このため、たとえば、非特許文献5に開示されたようなビット分解を用いる必要がある。
T. Araki et al.、"High-Throughput Semi-Honest Secure Three-Party Computation with an Honest Majority."、2016、In Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (CCS '16). ACM, New York, NY, USA, 805-817.
T. Araki et al.、"Optimized Honest-Majority MPC for Malicious Adversaries - Breaking the 1 Billion-Gate Per Second Barrier"、2017、IEEE Symposium on Security and Privacy (SP), San Jose, California, USA, 2017, pp. 843-862.
T. Araki et al.、"Generalizing the SPDZ Compiler For Other Protocols."、2018、In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security (CCS '18). ACM, New York, NY, USA, 880-895.
S. Dov Gordon et al.、"Secure Computation with Low Communication from Cross-checking."、Cryptology ePrint Archive, Report 2018/216, 2018, https://eprint.iacr.org/2018/216.
I. Damgard et al.、"Unconditionally Secure Constant-Rounds Multi-party Computation for Equality, Comparison, Bits and Exponentiation"、In Theory of Cryptography Conference (pp. 285-304). Springer, Berlin, Heidelberg, 2006.
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
MPCを行うにあたり、可能な限り通信コストが軽減された方式が望まれる。通信コストには通信量と通信ラウンド回数とがあるが、単位時間あたりの処理件数の効率を重視する場合、特に通信量が重要となる。
たとえば、t<n/3、つまりt=1で、かつ、攻撃者がマリシャス攻撃者である場合での4者間MPCであれば、
上での乗算1回あたり、5nビットの通信コストで実現できる。つまり、参加者あたり1.25nビットの通信コストで乗算を実現できる。これは2-out-of-4複製型秘密分散を用いた方法である。
上での乗算1回あたり、5nビットの通信コストで実現できる。つまり、参加者あたり1.25nビットの通信コストで乗算を実現できる。これは2-out-of-4複製型秘密分散を用いた方法である。
各参加者をP_i(i=1、…、4)としたとき、
のシェアを
として、
をP_iのシェアとする。また、
のシェアを
として、
をP_iのシェアとする。このとき、
に対して、
とすると、
とする。また、
に対して、
とすると、
とする。
のシェアを
として、
をP_iのシェアとする。また、
のシェアを
として、
をP_iのシェアとする。このとき、
に対して、
とすると、
とする。また、
に対して、
とすると、
とする。
なお、
に関して、参加者の内、ある一人の参加者は
の出力を計算できず、他の三人の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
に関して、参加者の内、ある一人の参加者は
の出力を計算できず、他の三人の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
ここで、
を
上のシェアに関する加法演算子、減法演算子、乗法演算子とする。なお、これらの演算子は
上の要素に対する二項演算子としての加法演算子、減法演算子、乗法演算子としても以降用いることに注意されたい。
上のシェアに関する加法演算子、乗法演算子について、
としたとき、以下の4つの式が成り立つ。
を
上のシェアに関する加法演算子、減法演算子、乗法演算子とする。なお、これらの演算子は
上の要素に対する二項演算子としての加法演算子、減法演算子、乗法演算子としても以降用いることに注意されたい。
上のシェアに関する加法演算子、乗法演算子について、
としたとき、以下の4つの式が成り立つ。
また、
を
上のシェアに関する排他的論理和、論理積とする。なお、これらの演算子は
上の要素に対する二項演算子としての排他的論理和、論理積としても以降用いることに注意されたい。
上のシェアに関する排他的論理和、論理積について、
としたとき、以下の4つの式が成り立つ。
を
上のシェアに関する排他的論理和、論理積とする。なお、これらの演算子は
上の要素に対する二項演算子としての排他的論理和、論理積としても以降用いることに注意されたい。
上のシェアに関する排他的論理和、論理積について、
としたとき、以下の4つの式が成り立つ。
1.各参加者(P_1~P_3)のそれぞれは以下の計算を行う。
2.上記計算が終了すると、各参加者は以下の通信を行う。
なお、P_4のシェアは以下のようにして、計算する。
シェアと定数倍算、および定数加算については当業者にとって自明なので説明を割愛する。また、
上のシェアに関する演算についても、
上のシェアに関する演算と同様に実行できるので説明を割愛する。このとき、参加者中にマリシャス攻撃者が1人存在したとしても、各自のシェアと異なる参加者から受信した値を用いて、値の改ざんがなかったか検証できる。改ざんがあった場合は、プロトコルを中断する。
上のシェアに関する演算についても、
上のシェアに関する演算と同様に実行できるので説明を割愛する。このとき、参加者中にマリシャス攻撃者が1人存在したとしても、各自のシェアと異なる参加者から受信した値を用いて、値の改ざんがなかったか検証できる。改ざんがあった場合は、プロトコルを中断する。
しかし、上記2-out-of-4複製型秘密分散を用いた方法を用いた4者間MPCでは、型変換処理を行うことが難しい。シェアの形式が異なるため、非特許文献3に開示された方法を直接用いることができないためである。また、非特許文献5に開示されたようなgeneralな型変換方式は位数のビット長が2以上の環上で行われ、混合回路中の論理回路部分の計算効率が悪い。よって、混合回路の計算を不正検知可能なMPCで効率よく行いたい場合、非特許文献4に開示された4者間MPCもしくは上記2-out-of-4複製型秘密分散を用いた4者間MPCで実行可能な、効率の良い型変換処理が求められる。
本発明は、2-out-of-4複製型秘密分散を用いた4者間MPCにて効率の良い型変換処理を実行することに寄与する、情報処理装置、秘密計算方法及びプログラムを提供することを主たる目的とする。
本発明乃至開示の第1の視点によれば、シェアについての演算を行う際の乱数を生成するためのシードを格納する、基本演算シード記憶部と、前記シードを用いて乱数を生成し、前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信する、再分散値計算部と、他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成する、シェア構成部と、を備える、情報処理装置が提供される。
本発明乃至開示の第2の視点によれば、シードを用いて乱数を生成するステップと、前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信するステップと、他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成するステップと、を含む秘密計算方法が提供される。
本発明乃至開示の第3の視点によれば、シードを用いて乱数を生成する処理と、前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信する処理と、他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成する処理と、をコンピュータに実行させるプログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
本発明乃至開示の各視点によれば、2-out-of-4複製型秘密分散を用いた4者間MPCにて混合回路を計算する際、論理回路の計算部分も含め効率よく計算可能な型変換を実行することに寄与する情報処理装置、秘密計算方法及びプログラムが提供される。
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。さらに、本願開示に示す回路図、ブロック図、内部構成図、接続図などにおいて、明示は省略するが、入力ポート及び出力ポートが各接続線の入力端及び出力端のそれぞれに存在する。入出力インターフェイスも同様である。
一実施形態に係る情報処理装置10は、基本演算シード記憶部11と、再分散値計算部12と、シェア構成部13と、を備える(図1参照)。基本演算シード記憶部11は、シェアについての演算を行う際の乱数を生成するためのシードを格納する。再分散値計算部12は、シードを用いて乱数を生成し、生成された乱数によりシェアの再分散値を計算すると共に、生成された乱数に関するデータを他の装置に送信する。シェア構成部13は、他の装置から受信した生成された乱数に関するデータ及びシェアの再分散値を用いて型変換用のシェアを構成する。
ここで、4者MPCにおいてもビット分解や環合成は効率よく秘密計算を実行するためには有益な型変換であるが、各装置が保有するシェアの形式が不統一であるとビット分解等の恩恵が得られない。そこで、上記情報処理装置10は、各装置が保有するシェアの形式を統一しビット分解等の型変換が容易となるようにシェアを再構成する。
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
第1の実施形態について、図面を用いてより詳細に説明する。
図2~図5を参照して、第1の実施形態に係る型変換処理システムについて説明する。
図2は、第1の実施形態による型変換処理システムの機能構成例を示すブロック図である。図2を参照すると、第1の実施形態による型変換処理システムは、後述する図3で参照される第i(i=1、2、3、4)の秘密計算サーバ装置(以下、単にサーバ装置と表記する)から成る。第1の実施形態による型変換処理システムにおいて、サーバ装置100_1、100_2、100_3、100_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。
図3は、第iのサーバ装置100_i(i=1、2、3、4)の機能構成例を示すブロック図である。図3に示すように、第iのサーバ装置100_iは、第iの再分散値計算部102_iと、第iのシェア構成部103_iと、第iの不正検知部104_iと、第iの算術演算部105_iと、第iの論理演算部106_iと、第iの基本演算シード記憶部107_iと、第iのデータ記憶部108_iと、を含む。なお、第iの再分散値計算部102_iと、第iのシェア構成部103_iと、第iの不正検知部104_iと、第iの算術演算部105_iと、第iの論理演算部106_iと、第iの基本演算シード記憶部107_iと、第iのデータ記憶部108_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置100_1~100_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部108_1~108_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置100_1~100_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部108_1~108_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置100_1~100_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置100_1~100_4ではない外部にシェアが送信され、復元されてもよい。
、あるいは第1乃至第4のデータ記憶部108_1~108_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置100_1~100_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部108_1~108_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置100_1~100_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置100_1~100_4ではない外部にシェアが送信され、復元されてもよい。
また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置100_1~100_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部109_1~109_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置100_1~100_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部108_1~108_4に記憶する。
、あるいは第1乃至第4のデータ記憶部109_1~109_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置100_1~100_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部108_1~108_4に記憶する。
上記計算結果のシェアは、第1乃至第4のサーバ装置100_1~100_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置100_1~100_4ではない外部にシェアが送信され、復元されてもよい。
次に、第1の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置100_1~100_4の動作について、詳細に説明する。図4は、第1乃至第4のサーバ装置100_1~100_4のビット分解に関する動作例を示すフローチャートである。図5は、第1乃至第4のサーバ装置100_1~100_4の環合成に関する動作例を示すフローチャートである。
まず、図4に示すビット分解に関するフローチャートを説明する。
なお、
に関して、サーバ装置100_i(i=1~4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。また、
は、サーバ装置100_1、100_2、100_3の内、ある一台の参加者は
の出力を計算できず、他の二台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。ただし、本書での
はあくまでも一例である。
に関して、サーバ装置100_i(i=1~4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。また、
は、サーバ装置100_1、100_2、100_3の内、ある一台の参加者は
の出力を計算できず、他の二台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。ただし、本書での
はあくまでも一例である。
(ステップA2)
第1の再分散値計算部102_1と第2の再分散値計算部102_2はそれぞれ、第1の基本演算シード記憶部107_1、第2の基本演算シード記憶部107_2より、
を取得する。次に、第1の再分散値計算部102_1と第2の再分散値計算部102_2は
を生成する。
第1の再分散値計算部102_1と第2の再分散値計算部102_2はそれぞれ、第1の基本演算シード記憶部107_1、第2の基本演算シード記憶部107_2より、
を取得する。次に、第1の再分散値計算部102_1と第2の再分散値計算部102_2は
を生成する。
そして、第1の再分散値計算部102_1は、
を第1のデータ記憶部108_1に記憶する。第2の再分散値計算部102_2は、
を、第3のシェア構成部103_3に送信する。また、第2の再分散値計算部102_2は
を、第4のシェア構成部103_4に送信する。
を第1のデータ記憶部108_1に記憶する。第2の再分散値計算部102_2は、
を、第3のシェア構成部103_3に送信する。また、第2の再分散値計算部102_2は
を、第4のシェア構成部103_4に送信する。
同様に、第2の再分散値計算部102_2と第3の再分散値計算部102_3は、
を生成する。第2の再分散値計算部102_2は、
を第2のデータ記憶部108_2に記憶する。第3の再分散値計算部102_3は、
を、第1のシェア構成部103_1に送信する。また、第3の再分散値計算部102_3は
を、第4のシェア構成部103_4に送信する。
を生成する。第2の再分散値計算部102_2は、
を第2のデータ記憶部108_2に記憶する。第3の再分散値計算部102_3は、
を、第1のシェア構成部103_1に送信する。また、第3の再分散値計算部102_3は
を、第4のシェア構成部103_4に送信する。
さらに同様に、第3の再分散値計算部102_3と第1の再分散値計算部102_1は
を生成する。第3の再分散値計算部102_3は、
を第3のデータ記憶部108_3に記憶する。第1の再分散値計算部102_1は、
を、第2のシェア構成部103_2に送信する。また、第1の再分散値計算部102_1は
を、第4のシェア構成部103_4に送信する。
を生成する。第3の再分散値計算部102_3は、
を第3のデータ記憶部108_3に記憶する。第1の再分散値計算部102_1は、
を、第2のシェア構成部103_2に送信する。また、第1の再分散値計算部102_1は
を、第4のシェア構成部103_4に送信する。
このように、第iの再分散値計算部102_iは、基本演算シード記憶部107_iに格納されたシードを用いて乱数(例えば、
)を生成する。さらに、再分散値計算部102_iは、シェア(例えば、
)の再分散値(例えば、
)を計算する。その後、再分散値計算部102_iは、生成された乱数に関するデータ(例えば、
)を他のサーバ装置の再分散値計算部102_iに送信する。なお、生成された乱数に関するデータには、乱数自身も含まれる。
)を生成する。さらに、再分散値計算部102_iは、シェア(例えば、
)の再分散値(例えば、
)を計算する。その後、再分散値計算部102_iは、生成された乱数に関するデータ(例えば、
)を他のサーバ装置の再分散値計算部102_iに送信する。なお、生成された乱数に関するデータには、乱数自身も含まれる。
このように、第iのシェア構成部103_iは、他のサーバ装置から受信した乱数に関するデータ、シェアの再分散値を用いて型変換用(ステップA3ではビット分解用)のシェアを構成する(再構成)する。つまり、値xは、シェアx1、x2、x3として分散される。さらに、当該シェアは、再分散され再分散値x1’、x2’、x3’が計算される。この再分散値と再分散値の計算に用いられた乱数rに基づき、当初のシェアx1、x2、x3はビット分解用のシェアに再構成される。その際、本願開示では、上記12の式に示されるように、第4のサーバ装置100_4におけるシェアの形式が他のサーバ装置100_1~100_3と異なるにも関わらず、各サーバ装置のシェアの形式を保つように値xが再分散され、シェアが再構成される。上述のように、4者MPCでは、値
に対して、
とすると、
となり、サーバ装置100_1~100_3のシェアの形式は二つの値の組み合わせからなり、サーバ装置100_4のシェアの形式は2つの排他的論理和による計算結果の組み合わせとなる。本願開示では、これらのシェアの形式を変換前の形式とし、上記12の式で表せるシェアの形式が変換後の形式となる。本願開示では、変換前後の形式を比較すると、変換前後で形式は保持されたままシェアが再構成(ビット分解用のシェアに再構成)されていることが理解される。
に対して、
とすると、
となり、サーバ装置100_1~100_3のシェアの形式は二つの値の組み合わせからなり、サーバ装置100_4のシェアの形式は2つの排他的論理和による計算結果の組み合わせとなる。本願開示では、これらのシェアの形式を変換前の形式とし、上記12の式で表せるシェアの形式が変換後の形式となる。本願開示では、変換前後の形式を比較すると、変換前後で形式は保持されたままシェアが再構成(ビット分解用のシェアに再構成)されていることが理解される。
このように、第iの論理演算部106_iは、上記型変換されたシェア(ビット分解用のシェア)についての論理演算を行う。より具体的には、第iの論理演算部106_iは、型変換されたシェアの加算処理を他のサーバ装置と相互に通信することで実行する。
ここで、上記ステップA3、A4について具体例を用いてより具体的に説明する。
ここでは、
上のシェア
にビット分解を行う場合を説明する。このとき、
とすると、各サーバ装置は以下のような形式でシェア
を保有する。
サーバ装置100_1:
サーバ装置100_2:
サーバ装置100_3:
サーバ装置100_4:
上のシェア
にビット分解を行う場合を説明する。このとき、
とすると、各サーバ装置は以下のような形式でシェア
を保有する。
サーバ装置100_1:
サーバ装置100_2:
サーバ装置100_3:
サーバ装置100_4:
上記ステップA3、A4では、初めに
、
、
の各桁のビットのシェアを得て(ステップA3)、次に、ステップA3にて得られたビットのシェアを用いて加算器の計算を行うことで値xの各桁のビットのシェアを得ている(ステップA4)。これは、ステップA3は、加算した結果が値xとなる各桁のビットのシェアを生成(値xからの再分散)を目的を有し、その後に続くステップA4における加算器計算に伴う負荷が軽減されるように再分散のシェアの個数自体を少なくするという意義を持つ。
、
、
の各桁のビットのシェアを得て(ステップA3)、次に、ステップA3にて得られたビットのシェアを用いて加算器の計算を行うことで値xの各桁のビットのシェアを得ている(ステップA4)。これは、ステップA3は、加算した結果が値xとなる各桁のビットのシェアを生成(値xからの再分散)を目的を有し、その後に続くステップA4における加算器計算に伴う負荷が軽減されるように再分散のシェアの個数自体を少なくするという意義を持つ。
本願開示では、上記再構成されたシェアを得るため、各サーバ装置100_iは、
を使用する。その際、各サーバ装置100_iは、自身が保持する
だけでは上記再構成されたシェアを生成することが出来ない場合がある。そこで、各サーバ装置100_iは、他のサーバ装置から当該他のサーバ装置が保持する
の一部を取得する必要があるが、秘密漏洩を防止する観点から当該値を他のサーバ装置から得ることはできない。そこで、各サーバ装置100_iは、乱数でマスクした値(シェアの再分散値)を送受信し、上記再構成されたシェアの再構成に利用する。本願開示では、シェアの再構成に続く加算器の計算負荷が低減されるように、上記乱数(マスク用の乱数)とシェアの再構成が行われる。
を使用する。その際、各サーバ装置100_iは、自身が保持する
だけでは上記再構成されたシェアを生成することが出来ない場合がある。そこで、各サーバ装置100_iは、他のサーバ装置から当該他のサーバ装置が保持する
の一部を取得する必要があるが、秘密漏洩を防止する観点から当該値を他のサーバ装置から得ることはできない。そこで、各サーバ装置100_iは、乱数でマスクした値(シェアの再分散値)を送受信し、上記再構成されたシェアの再構成に利用する。本願開示では、シェアの再構成に続く加算器の計算負荷が低減されるように、上記乱数(マスク用の乱数)とシェアの再構成が行われる。
例えば、上記12の式に記載された
は、
により再分散され、再構成された
、
、
のうち
がサーバ装置100_1が保有する値(保有する値の組)となる。その際、
がマスク用のビットの乱数となり、
は、
を
、
でマスクすることで生成された再分散値となる。
は、
により再分散され、再構成された
、
、
のうち
がサーバ装置100_1が保有する値(保有する値の組)となる。その際、
がマスク用のビットの乱数となり、
は、
を
、
でマスクすることで生成された再分散値となる。
ここで、上述のステップA3の目的や意義を考えると、サーバ装置100_3やサーバ装置100_4は、値
を直接保持していないので、これらのサーバ装置が
を生成することは困難である。そこで、サーバ装置100_3やサーバ装置100_4は、上記値を有するサーバ装置100_1やサーバ装置100_2から受信するか、計算可能な乱数により
を構成する必要がある。しかし、サーバ装置100_1やサーバ装置100_2が保有する値自体を送信すると秘密漏洩の危険が増すのでマスク用の乱数が用いられている。そこで、各再分散値計算部102_iは、マスク用の乱数を計算すると共に、例えば、サーバ装置100_2がサーバ装置100_4に
を送信している(ステップA2)。その後、ステップA3において、
を含むシェアの再構成が行われている。
を直接保持していないので、これらのサーバ装置が
を生成することは困難である。そこで、サーバ装置100_3やサーバ装置100_4は、上記値を有するサーバ装置100_1やサーバ装置100_2から受信するか、計算可能な乱数により
を構成する必要がある。しかし、サーバ装置100_1やサーバ装置100_2が保有する値自体を送信すると秘密漏洩の危険が増すのでマスク用の乱数が用いられている。そこで、各再分散値計算部102_iは、マスク用の乱数を計算すると共に、例えば、サーバ装置100_2がサーバ装置100_4に
を送信している(ステップA2)。その後、ステップA3において、
を含むシェアの再構成が行われている。
なお、上述のようにシェアの再構成にあたり、その形式を満たす必要がある。例えば、
とすると、上記の12の式では、
、
、
と置き換えることできる。従って、サーバ装置100_1は、
を設定(シェアの再構成)する必要がある。即ち、シェアの形式が満たされるように、
や
が選択されている。また、本実施形態では、ステップA4における加算器計算に伴う負荷を軽減するために再分散のシェアの個数自体を少なくする目的でステップA3が実行されている。即ち、加算器の計算コストがビット分解全体の通信コストの大半を占めるため、当該通信コストの重い加算器計算の計算コストを低減するように再分散が行われている。しかし、再分散の目的は上記に限定されず、他の実施形態にて説明するように、「シェアの個数は増加するが、通信の形態に適合させ環合成における通信コストの効率化」や「再分散のシェアの個数は同じであるが、ステップA3における再分散のコスト低減」を目的とした再分散もあり得る。
とすると、上記の12の式では、
、
、
と置き換えることできる。従って、サーバ装置100_1は、
を設定(シェアの再構成)する必要がある。即ち、シェアの形式が満たされるように、
や
が選択されている。また、本実施形態では、ステップA4における加算器計算に伴う負荷を軽減するために再分散のシェアの個数自体を少なくする目的でステップA3が実行されている。即ち、加算器の計算コストがビット分解全体の通信コストの大半を占めるため、当該通信コストの重い加算器計算の計算コストを低減するように再分散が行われている。しかし、再分散の目的は上記に限定されず、他の実施形態にて説明するように、「シェアの個数は増加するが、通信の形態に適合させ環合成における通信コストの効率化」や「再分散のシェアの個数は同じであるが、ステップA3における再分散のコスト低減」を目的とした再分散もあり得る。
(ステップA5)
第1の再分散値計算部102_1は、第1のデータ記憶部108_1から
を取り出す。次に、第1の再分散値計算部102_1は、
を、第3の不正検知部104_3に送信する。また、第1の再分散値計算部102_1は、
を、第4の不正検知部104_4に送信する。第3の不正検知部104_3および第4の不正検知部104_4は、それぞれ、第3のデータ記憶部108_3に記憶されている
、第4のデータ記憶部108_4に記憶されている
を取出し、値が一致するかを検証する。
第1の再分散値計算部102_1は、第1のデータ記憶部108_1から
を取り出す。次に、第1の再分散値計算部102_1は、
を、第3の不正検知部104_3に送信する。また、第1の再分散値計算部102_1は、
を、第4の不正検知部104_4に送信する。第3の不正検知部104_3および第4の不正検知部104_4は、それぞれ、第3のデータ記憶部108_3に記憶されている
、第4のデータ記憶部108_4に記憶されている
を取出し、値が一致するかを検証する。
一致した場合、第3の不正検知部104_3又は第4の不正検知部104_4は、successの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、次のステップに進む。一致しなかった場合、第3の不正検知部104_3又は第4の不正検知部104_4は、abortの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
また同様に、第2の再分散値計算部102_2は、
を第2のデータ記憶部108_2から取り出す。次に、第2の再分散値計算部102_2は、
を、第1の不正検知部104_1に送信する。また、第2の再分散値計算部102_2は、
を、第4の不正検知部104_4に送信する。第1の不正検知部104_1および第4の不正検知部104_4は、それぞれ、第1のデータ記憶部108_1に記憶されている
、第4のデータ記憶部108_4に記憶されている
を取出し、値が一致するかを検証する。
を第2のデータ記憶部108_2から取り出す。次に、第2の再分散値計算部102_2は、
を、第1の不正検知部104_1に送信する。また、第2の再分散値計算部102_2は、
を、第4の不正検知部104_4に送信する。第1の不正検知部104_1および第4の不正検知部104_4は、それぞれ、第1のデータ記憶部108_1に記憶されている
、第4のデータ記憶部108_4に記憶されている
を取出し、値が一致するかを検証する。
一致した場合、第1の不正検知部104_1又は第4の不正検知部104_4は、successの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、次のステップに進む。一致しなかった場合、第1の不正検知部104_1又は第4の不正検知部104_4は、abortの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、プロトコルを中断する。
大量の型変換処理を並列して行う場合、上記検証は、
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
さらに同様に、第3の再分散値計算部102_3は、
を第3のデータ記憶部108_3から取り出す。次に、第3の再分散値計算部102_3は、
を、第2の不正検知部104_2に送信する。また、第3の再分散値計算部102_3は、
を、第4の不正検知部104_4に送信する。第2の不正検知部104_2および第4の不正検知部104_4は、それぞれ、第2のデータ記憶部108_2に記憶されている
、第4のデータ記憶部108_4に記憶されている
を取出し、値が一致するかを検証する。
を第3のデータ記憶部108_3から取り出す。次に、第3の再分散値計算部102_3は、
を、第2の不正検知部104_2に送信する。また、第3の再分散値計算部102_3は、
を、第4の不正検知部104_4に送信する。第2の不正検知部104_2および第4の不正検知部104_4は、それぞれ、第2のデータ記憶部108_2に記憶されている
、第4のデータ記憶部108_4に記憶されている
を取出し、値が一致するかを検証する。
一致した場合、第2の不正検知部104_2又は第4の不正検知部104_4は、successの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、次のステップに進む。一致しなかった場合、第2の不正検知部104_1乃至第4の不正検知部104_4は、abortの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、プロトコルを中断する。
大量の型変換処理を並列して行う場合、上記検証は、
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
このように、第iの不正検知部104_iは、他のサーバ装置から受信した乱数に関するデータに基づきプロトコルの不正を検知する。具体的には、第iの不正検知部104_iは、他のサーバ装置から受信した乱数に関するデータと自装置に格納されている乱数に関するデータが一致するか否かに応じて不正の有無(不正行為者の有無)を検知する。
(ステップA6)
各i番目の不正検知部104_iは、上記ステップA4の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置100_1、100_2、100_3、100_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置100_1、100_2、100_3、100_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップA6は上記ステップA5と並列に実行することが可能である。
各i番目の不正検知部104_iは、上記ステップA4の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置100_1、100_2、100_3、100_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置100_1、100_2、100_3、100_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップA6は上記ステップA5と並列に実行することが可能である。
このように、第iの不正検知部104_iは、型変換されたシェアの加算処理のために送受信されたデータを用いて不正行為者の有無を検知する。
次に、図5に示す環合成に関するフローチャートを説明する。
(ステップB1)
各基本演算シード記憶部107_1、107_2、107_3、107_4は、それぞれ、
、
、
、
を記憶する。
また、各サーバ装置100_1~100_4は疑似ランダム関数
を共有する。なお、
とし、疑似ランダム関数
とする。
各基本演算シード記憶部107_1、107_2、107_3、107_4は、それぞれ、
、
、
、
を記憶する。
また、各サーバ装置100_1~100_4は疑似ランダム関数
を共有する。なお、
とし、疑似ランダム関数
とする。
なお、
に関して、サーバ装置100_i(i=1~4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。また、
は、サーバ装置100_1、100_2、100_3の内、ある一台の参加者は
の出力を計算できず、他の二台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
に関して、サーバ装置100_i(i=1~4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。また、
は、サーバ装置100_1、100_2、100_3の内、ある一台の参加者は
の出力を計算できず、他の二台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
(ステップB2)
各サーバ装置100_iは、各データ記憶部108_iより、ループカウンタjをとりだす。各サーバ装置100_iは、j<nであればステップB3~B7を実行する。j=nであれば、ステップB8を実行する。
各サーバ装置100_iは、各データ記憶部108_iより、ループカウンタjをとりだす。各サーバ装置100_iは、j<nであればステップB3~B7を実行する。j=nであれば、ステップB8を実行する。
また、各論理演算部106_1~106_4は、各データ記憶部108_1~108_4から
を取り出す。ここで、
はj番目のビットに対するキャリーである。そして、各論理演算部106_1~106_4は、
を計算し、
を各データ記憶部108_1~108_4に記憶する。
を取り出す。ここで、
はj番目のビットに対するキャリーである。そして、各論理演算部106_1~106_4は、
を計算し、
を各データ記憶部108_1~108_4に記憶する。
(ステップB3)
第1の再分散値計算部102_1と第2の再分散値計算部102_2はそれぞれ、第1の基本演算シード記憶部107_1、第2の基本演算シード記憶部107_2より、
を取得する。次に、第1の再分散値計算部102_1と第2の再分散値計算部102_2は
を生成する。
第1の再分散値計算部102_1と第2の再分散値計算部102_2はそれぞれ、第1の基本演算シード記憶部107_1、第2の基本演算シード記憶部107_2より、
を取得する。次に、第1の再分散値計算部102_1と第2の再分散値計算部102_2は
を生成する。
そして、第1の再分散値計算部102_1は、
を第1のデータ記憶部108_1に記憶する。第2の再分散値計算部102_2は、
を、第3のシェア構成部103_3に送信する。また、第2の再分散値計算部102_2は
を、第4のシェア構成部103_4に送信する。
を第1のデータ記憶部108_1に記憶する。第2の再分散値計算部102_2は、
を、第3のシェア構成部103_3に送信する。また、第2の再分散値計算部102_2は
を、第4のシェア構成部103_4に送信する。
同様に、第2の再分散値計算部102_2と第3の再分散値計算部102_3は
を生成する。第2の再分散値計算部102_2は、
を第2のデータ記憶部108_2に記憶する。第3の再分散値計算部102_3は、
を、第1のシェア構成部103_1に送信する。また、第3の再分散値計算部102_3は
を、第4のシェア構成部103_4に送信する。
を生成する。第2の再分散値計算部102_2は、
を第2のデータ記憶部108_2に記憶する。第3の再分散値計算部102_3は、
を、第1のシェア構成部103_1に送信する。また、第3の再分散値計算部102_3は
を、第4のシェア構成部103_4に送信する。
さらに同様に、第3の再分散値計算部102_3と第1の再分散値計算部102_1は
を生成する。第3の再分散値計算部102_3は、
を第3のデータ記憶部108_3に記憶する。第1の再分散値計算部102_1は、
を、第2のシェア構成部103_2に送信する。また、第1の再分散値計算部102_1は
を、第4のシェア構成部103_4に送信する。
を生成する。第3の再分散値計算部102_3は、
を第3のデータ記憶部108_3に記憶する。第1の再分散値計算部102_1は、
を、第2のシェア構成部103_2に送信する。また、第1の再分散値計算部102_1は
を、第4のシェア構成部103_4に送信する。
(ステップB4)
各シェア構成部103_1、103_2、103_3、103_4は上記ステップB3で送信された値を用いて、以下の12の式によりシェアを構成する。
、
、
は各i番目のデータ記憶部208_iに記憶される。
各シェア構成部103_1、103_2、103_3、103_4は上記ステップB3で送信された値を用いて、以下の12の式によりシェアを構成する。
、
、
は各i番目のデータ記憶部208_iに記憶される。
(ステップB5)
各i番目の論理演算部106_i同士で通信することで、キャリー計算処理
を以下のように計算する。ここで、
とは、全加算器における入力
と下位からの桁上げ入力
の5つを入力とし、下記の式のように桁上げ出力
を出力する処理である。
各i番目の論理演算部106_i同士で通信することで、キャリー計算処理
を以下のように計算する。ここで、
とは、全加算器における入力
と下位からの桁上げ入力
の5つを入力とし、下記の式のように桁上げ出力
を出力する処理である。
各i番目の論理演算部106_iは、
を各データ記憶部108_iに記憶する。各サーバ装置100_iは、各データ記憶部208_iより、ループカウンタjを取り出し、j=j+1として各データ記憶部108_iに記憶する。なお、j=n-1のとき、ステップB5は実行しなくても良い。
を各データ記憶部108_iに記憶する。各サーバ装置100_iは、各データ記憶部208_iより、ループカウンタjを取り出し、j=j+1として各データ記憶部108_iに記憶する。なお、j=n-1のとき、ステップB5は実行しなくても良い。
このように、第iの論理演算部106_iは、他のサーバ装置と互いに通信を行い型変換されたシェアのキャリー計算処理を実行する。
(ステップB6)
第1の再分散値計算部102_1は、第1のデータ記憶部108_1から
を取り出す。次に、第1の再分散値計算部102_1は、
を、第3の不正検知部104_3に送信する。また、第1の再分散値計算部102_1は、
を、第4の不正検知部104_4に送信する。第3の不正検知部104_3および第4の不正検知部104_4は、それぞれ、第3のデータ記憶部108_3に記憶されている
、第4のデータ記憶部108_4に記憶されている
を取出し、値が一致するかを検証する。
第1の再分散値計算部102_1は、第1のデータ記憶部108_1から
を取り出す。次に、第1の再分散値計算部102_1は、
を、第3の不正検知部104_3に送信する。また、第1の再分散値計算部102_1は、
を、第4の不正検知部104_4に送信する。第3の不正検知部104_3および第4の不正検知部104_4は、それぞれ、第3のデータ記憶部108_3に記憶されている
、第4のデータ記憶部108_4に記憶されている
を取出し、値が一致するかを検証する。
一致した場合、第3の不正検知部104_3又は第4の不正検知部104_4は、successの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、次のステップに進む。一致しなかった場合、第3の不正検知部104_3又は第4の不正検知部104_4は、abortの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
同様に、第2の再分散値計算部102_2は、
を第2のデータ記憶部108_2から取り出す。次に、第2の再分散値計算部102_2は、
を、第1の不正検知部104_1に送信する。また、第2の再分散値計算部102_2は、
を、第4の不正検知部104_4に送信する。第1の不正検知部104_1および第4の不正検知部104_4は、それぞれ、第1のデータ記憶部108_1に記憶されている
、第4のデータ記憶部108_4に記憶されている
を取出し、値が一致するかを検証する。
を第2のデータ記憶部108_2から取り出す。次に、第2の再分散値計算部102_2は、
を、第1の不正検知部104_1に送信する。また、第2の再分散値計算部102_2は、
を、第4の不正検知部104_4に送信する。第1の不正検知部104_1および第4の不正検知部104_4は、それぞれ、第1のデータ記憶部108_1に記憶されている
、第4のデータ記憶部108_4に記憶されている
を取出し、値が一致するかを検証する。
一致した場合、第1の不正検知部104_1又は第4の不正検知部104_4は、successの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、次のステップに進む。一致しなかった場合、第1の不正検知部104_1又は第4の不正検知部104_4は、abortの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
さらに同様に、第3の再分散値計算部102_3は、
を第3のデータ記憶部108_3から取り出す。次に、第3の再分散値計算部102_3は、
を、第2の不正検知部104_2に送信する。また、第3の再分散値計算部102_3は、
を、第4の不正検知部104_4に送信する。第2の不正検知部104_2および第4の不正検知部104_4は、それぞれ、第2のデータ記憶部108_2に記憶されている
、第4のデータ記憶部108_4に記憶されている
を取出し、値が一致するかを検証する。
を第3のデータ記憶部108_3から取り出す。次に、第3の再分散値計算部102_3は、
を、第2の不正検知部104_2に送信する。また、第3の再分散値計算部102_3は、
を、第4の不正検知部104_4に送信する。第2の不正検知部104_2および第4の不正検知部104_4は、それぞれ、第2のデータ記憶部108_2に記憶されている
、第4のデータ記憶部108_4に記憶されている
を取出し、値が一致するかを検証する。
一致した場合、第2の不正検知部104_2又は第4の不正検知部104_4は、successの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、次のステップに進む。一致しなかった場合、第2の不正検知部104_1又は第4の不正検知部104_4は、abortの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
(ステップB7)
各i番目の不正検知部105_iは、上記ステップB5の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置100_1、100_2、100_3、100_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置100_1、100_2、100_3、100_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップB7は上記ステップB6と並列に実行することが可能である。また、ステップB6、B7はループごとではなく、j=n-1のときに、n回のループ分を並列に実行することが可能である。
各i番目の不正検知部105_iは、上記ステップB5の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置100_1、100_2、100_3、100_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置100_1、100_2、100_3、100_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップB7は上記ステップB6と並列に実行することが可能である。また、ステップB6、B7はループごとではなく、j=n-1のときに、n回のループ分を並列に実行することが可能である。
このように、第iの不正検知部105_iは、型変換されたシェアのキャリー計算処理のために送受信されたデータを用いて不正行為者の有無を検知する。
(ステップB8)
各i番目の算術演算部105_iは、各データ記憶部108_iから
を取り出す。その後、以下の式による計算を行う。
各i番目の算術演算部105_iは、各データ記憶部108_iに
を記憶する。
各i番目の算術演算部105_iは、各データ記憶部108_iから
を取り出す。その後、以下の式による計算を行う。
各i番目の算術演算部105_iは、各データ記憶部108_iに
を記憶する。
以上、説明した第1の実施形態においては、以下に記載するような効果を奏する。
第1の効果は、不正検知可能な4者間秘密計算を用いて、シェアの型変換が実行できる。複雑な混合回路を実行する際に不正検知に関するステップを並列に行った場合、不正検知に関する通信コストを消却できるものとする。たとえば、加算器の計算にリップルキャリー型のnビット加算器を用いた場合、このときのビット分解の通信コストは、(16n-10)ビット・n+1ラウンドとなる。環合成の通信コストは、(16n-16)ビット・2n-2ラウンドとなる。一方で、非特許文献2と非特許文献3を組み合わせた場合の型変換の通信コストは、不正が成功する確率を2-40としたとき、(42n-42)ビット・n-1ラウンドである。これより、本願開示の方が効率の良い方式となる。なお、本特許の実施はリップルキャリー型のnビット加算器に限定されない。キャリールックアヘッド型やパラレルプリフィックス型などのnビット加算器を用いても良い。
第2の効果は、不正検知可能な4者間秘密計算を用いて、シェアの型変換を行う際に、不正検知確率が常に「1」となることである。非特許文献2と非特許文献3を組み合わせた場合、不正検知確率はパラメタライズであるため、不正検知確率を向上させようとした際に、通信コストも大きくなる。秘密計算を適用できるアプリケーションには様々なものがあり、そのアプリケーションに応じて求められる不正検知確率は異なる。求められる要件の調査と、調査に伴う各パラメータの設定は利用者にとって負担となる。本願開示では、不正検知確率が「1」なので、要件の調査やパラメータ設定の負担が軽減される。
[第2の実施形態]
図6~図8を参照して、第2の実施形態に係る型変換処理システムについて説明する。
図6~図8を参照して、第2の実施形態に係る型変換処理システムについて説明する。
図6は、第2の実施形態による型変換処理システムの機能構成例を示すブロック図である。図6を参照すると、第2の実施形態による型変換処理システムは、後述する図7で参照される第i(i=1、2、3、4)のサーバ装置から成る。第2の実施形態による型変換処理システムにおいて、サーバ装置200_1、200_2、200_3、200_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。図7は、第iのサーバ装置200_i(i=1、2、3、4)の機能構成例を示すブロック図である。
図7に示すように、第iのサーバ装置200_iは、第iの再分散値計算部202_iと、第iのシェア構成部203_iと、第iの不正検知部204_iと、第iの算術演算部205_iと、第iの論理演算部206_iと、第iの基本演算シード記憶部207_iと、第iのデータ記憶部208_iと、を含む。なお、第iの再分散値計算部202_iと、第iのシェア構成部203_iと、第iの不正検知部204_iと、第iの算術演算部205_iと、第iの論理演算部206_iと、第iの基本演算シード記憶部207_iと、第iのデータ記憶部208_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置200_1~200_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部208_1~208_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置200_1~200_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部208_1~208_4に記憶する。上記計算結果のシェアは、第1乃至第4のサーバ装置200_1~200_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置200_1~200_4ではない外部にシェアが送信され、シェアが復元されてもよい。
、あるいは第1乃至第4のデータ記憶部208_1~208_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置200_1~200_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部208_1~208_4に記憶する。上記計算結果のシェアは、第1乃至第4のサーバ装置200_1~200_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置200_1~200_4ではない外部にシェアが送信され、シェアが復元されてもよい。
また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置200_1~200_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部208_1~208_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置200_1~200_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部208_1~208_4に記憶する。上記計算結果のシェアは、第1乃至第4のサーバ装置200_1~200_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置200_1~200_4ではない外部にシェアが送信され、シェアが復元されてもよい。
、あるいは第1乃至第4のデータ記憶部208_1~208_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置200_1~200_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部208_1~208_4に記憶する。上記計算結果のシェアは、第1乃至第4のサーバ装置200_1~200_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置200_1~200_4ではない外部にシェアが送信され、シェアが復元されてもよい。
次に、第2の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置200_1~200_4の動作について、詳細に説明する。図7は、第1乃至第4のサーバ装置200_1~200_4の環合成に関する動作例を示すフローチャートである。ビット分解については、第1の実施例と同様に実施可能であるため説明を割愛する。
図7に示す環合成に関するフローチャートを説明する。
なお、
に関して、サーバ装置200_i(i=1、2、3、4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。また、
は、サーバ装置200_1、200_2、200_3の内、ある一台の参加者は
の出力を計算できず、他の二台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
に関して、サーバ装置200_i(i=1、2、3、4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。また、
は、サーバ装置200_1、200_2、200_3の内、ある一台の参加者は
の出力を計算できず、他の二台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
第1の再分散値計算部202_1と第2の再分散値計算部202_2はそれぞれ、第1の基本演算シード記憶部207_1、第2の基本演算シード記憶部207_2より、
を取得する。次に、第1の再分散値計算部202_1と第2の再分散値計算部202_2は、
を生成する。
を取得する。次に、第1の再分散値計算部202_1と第2の再分散値計算部202_2は、
を生成する。
そして、第1の再分散値計算部202_1は、
を第1のデータ記憶部208_1に記憶する。第2の再分散値計算部202_2は、
を、第3のシェア構成部203_3に送信する。また、第2の再分散値計算部202_2は
を、第4のシェア構成部203_4に送信する。
を第1のデータ記憶部208_1に記憶する。第2の再分散値計算部202_2は、
を、第3のシェア構成部203_3に送信する。また、第2の再分散値計算部202_2は
を、第4のシェア構成部203_4に送信する。
同様に、第2の再分散値計算部202_2と第3の再分散値計算部202_3は、
を生成する。第2の再分散値計算部202_2は、
を第2のデータ記憶部208_2に記憶する。第3の再分散値計算部202_3は、
を、第1のシェア構成部203_1に送信する。また、第3の再分散値計算部202_3は
を、第4のシェア構成部203_4に送信する。
を生成する。第2の再分散値計算部202_2は、
を第2のデータ記憶部208_2に記憶する。第3の再分散値計算部202_3は、
を、第1のシェア構成部203_1に送信する。また、第3の再分散値計算部202_3は
を、第4のシェア構成部203_4に送信する。
さらに同様に、第3の再分散値計算部202_3と第1の再分散値計算部202_1は
を生成する。第3の再分散値計算部302_3は、
を第3のデータ記憶部208_3に記憶する。第1の再分散値計算部202_1は、
を、第2のシェア構成部203_2に送信する。また、第1の再分散値計算部202_1は
を、第4のシェア構成部203_4に送信する。
を生成する。第3の再分散値計算部302_3は、
を第3のデータ記憶部208_3に記憶する。第1の再分散値計算部202_1は、
を、第2のシェア構成部203_2に送信する。また、第1の再分散値計算部202_1は
を、第4のシェア構成部203_4に送信する。
(ステップB´3)
各シェア構成部203_1、203_2、203_3、203_4は上記ステップB´2で送信された値を用いて、以下の12の式によりシェアを構成する。
、
、
は各i番目のデータ記憶部208_iに記憶される。
各シェア構成部203_1、203_2、203_3、203_4は上記ステップB´2で送信された値を用いて、以下の12の式によりシェアを構成する。
、
、
は各i番目のデータ記憶部208_iに記憶される。
(ステップB´4)
第1の再分散値計算部202_1は、第1のデータ記憶部208_1から
を取り出す。次に、第1の再分散値計算部202_1は、
を、第3の不正検知部204_3に送信する。また、第1の再分散値計算部202_1は、
を、第4の不正検知部204_4に送信する。第3の不正検知部204_3および第4の不正検知部204_4は、それぞれ、第3のデータ記憶部208_3に記憶されている
、第4のデータ記憶部208_4に記憶されている
を取出し、値が一致するかを検証する。
第1の再分散値計算部202_1は、第1のデータ記憶部208_1から
を取り出す。次に、第1の再分散値計算部202_1は、
を、第3の不正検知部204_3に送信する。また、第1の再分散値計算部202_1は、
を、第4の不正検知部204_4に送信する。第3の不正検知部204_3および第4の不正検知部204_4は、それぞれ、第3のデータ記憶部208_3に記憶されている
、第4のデータ記憶部208_4に記憶されている
を取出し、値が一致するかを検証する。
一致した場合、第3の不正検知部204_3又は第4の不正検知部204_4は、successの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、次のステップに進む。一致しなかった場合、第3の不正検知部204_3又は第4の不正検知部204_4は、abortの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
同様に、第2の再分散値計算部102_2は、
を第2のデータ記憶部208_2から取り出す。次に、第2の再分散値計算部202_2は、
を、第1の不正検知部204_1に送信する。また、第2の再分散値計算部202_2は、
を、第4の不正検知部204_4に送信する。第1の不正検知部204_1および第4の不正検知部204_4は、それぞれ、第1のデータ記憶部208_1に記憶されている
、第4のデータ記憶部208_4に記憶されている
を取出し、値が一致するかを検証する。
を第2のデータ記憶部208_2から取り出す。次に、第2の再分散値計算部202_2は、
を、第1の不正検知部204_1に送信する。また、第2の再分散値計算部202_2は、
を、第4の不正検知部204_4に送信する。第1の不正検知部204_1および第4の不正検知部204_4は、それぞれ、第1のデータ記憶部208_1に記憶されている
、第4のデータ記憶部208_4に記憶されている
を取出し、値が一致するかを検証する。
一致した場合、第1の不正検知部204_1又は第4の不正検知部204_4は、successの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、次のステップに進む。一致しなかった場合、第1の不正検知部204_1又は第4の不正検知部204_4は、abortの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
さらに同様に、第3の再分散値計算部202_3は、
を第3のデータ記憶部208_3から取り出す。次に、第3の再分散値計算部202_3は、
を、第2の不正検知部204_2に送信する。また、第3の再分散値計算部202_3は、
を、第4の不正検知部204_4に送信する。第2の不正検知部204_2および第4の不正検知部204_4は、それぞれ、第2のデータ記憶部208_2に記憶されている
、第4のデータ記憶部208_4に記憶されている
を取出し、値が一致するかを検証する。
を第3のデータ記憶部208_3から取り出す。次に、第3の再分散値計算部202_3は、
を、第2の不正検知部204_2に送信する。また、第3の再分散値計算部202_3は、
を、第4の不正検知部204_4に送信する。第2の不正検知部204_2および第4の不正検知部204_4は、それぞれ、第2のデータ記憶部208_2に記憶されている
、第4のデータ記憶部208_4に記憶されている
を取出し、値が一致するかを検証する。
一致した場合、第2の不正検知部204_2又は第4の不正検知部204_4は、successの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、次のステップに進む。一致しなかった場合、第2の不正検知部204_2又は第4の不正検知部204_4は、abortの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
(ステップB´5)
各サーバ装置200_iは、各データ記憶部208_より、ループカウンタjをとりだす。各サーバ装置200_iは、j<nであればステップB´6~B´10を実行する。j=nであれば、ステップB´11を実行する。
各サーバ装置200_iは、各データ記憶部208_より、ループカウンタjをとりだす。各サーバ装置200_iは、j<nであればステップB´6~B´10を実行する。j=nであれば、ステップB´11を実行する。
(ステップB´6)
ここで、キャリー計算処理
を、
と
という2つの処理に分割して考える。なお、
とは、全加算器における入力
と下位からの桁上げ入力
の5つを入力とし、桁上げ出力
を出力する処理である。
ここで、キャリー計算処理
を、
と
という2つの処理に分割して考える。なお、
とは、全加算器における入力
と下位からの桁上げ入力
の5つを入力とし、桁上げ出力
を出力する処理である。
(ステップB´7)
第1の再分散値計算部202_1と第2の再分散値計算部202_2はそれぞれ、第1の基本演算シード記憶部207_1、第2の基本演算シード記憶部207_2より、
を取得する。次に、第1の再分散値計算部202_1と第2の再分散値計算部202_2は、
を生成する。
第1の再分散値計算部202_1と第2の再分散値計算部202_2はそれぞれ、第1の基本演算シード記憶部207_1、第2の基本演算シード記憶部207_2より、
を取得する。次に、第1の再分散値計算部202_1と第2の再分散値計算部202_2は、
を生成する。
そして、第1の再分散値計算部202_1は、
を第1のデータ記憶部208_1に記憶する。第2の再分散値計算部202_2は、
を、第3のシェア構成部203_3に送信する。また、第2の再分散値計算部202_2は
を、第4のシェア構成部203_4に送信する。
を第1のデータ記憶部208_1に記憶する。第2の再分散値計算部202_2は、
を、第3のシェア構成部203_3に送信する。また、第2の再分散値計算部202_2は
を、第4のシェア構成部203_4に送信する。
同様に、第2の再分散値計算部202_2と第3の再分散値計算部202_3は、
を生成する。第2の再分散値計算部202_2は、
を第2のデータ記憶部208_2に記憶する。第3の再分散値計算部202_3は、
を、第1のシェア構成部203_1に送信する。また、第3の再分散値計算部202_3は
を、第4のシェア構成部203_4に送信する。
を生成する。第2の再分散値計算部202_2は、
を第2のデータ記憶部208_2に記憶する。第3の再分散値計算部202_3は、
を、第1のシェア構成部203_1に送信する。また、第3の再分散値計算部202_3は
を、第4のシェア構成部203_4に送信する。
さらに同様に、第3の再分散値計算部202_3と第1の再分散値計算部202_1は
を生成する。第3の再分散値計算部202_3は、
を第3のデータ記憶部208_3に記憶する。第1の再分散値計算部202_1は、
を、第2のシェア構成部203_2に送信する。また、第1の再分散値計算部202_1は
を、第4のシェア構成部203_4に送信する。
を生成する。第3の再分散値計算部202_3は、
を第3のデータ記憶部208_3に記憶する。第1の再分散値計算部202_1は、
を、第2のシェア構成部203_2に送信する。また、第1の再分散値計算部202_1は
を、第4のシェア構成部203_4に送信する。
また、論理演算部206_i(i=1、2、3、4)は、
、
、
、
および
を入力に取り、
を通信を伴って計算することで、
を得る。論理演算部206_i(i=1、2、3、4)は、データ記憶部208_i(i=1、2、3、4)に
を記憶する。
、
、
、
および
を入力に取り、
を通信を伴って計算することで、
を得る。論理演算部206_i(i=1、2、3、4)は、データ記憶部208_i(i=1、2、3、4)に
を記憶する。
このように、キャリー計算処理は、第1要素
及び当該第1要素に続く第2要素
に分離可能である。第iの論理演算部206_iは、第1要素を他のサーバ装置と非通信により計算すると共に、シェアの再分散値の計算に必要な通信と第2要素のキャリー計算処理に必要な通信を並列に行う(ステップB’7)。
及び当該第1要素に続く第2要素
に分離可能である。第iの論理演算部206_iは、第1要素を他のサーバ装置と非通信により計算すると共に、シェアの再分散値の計算に必要な通信と第2要素のキャリー計算処理に必要な通信を並列に行う(ステップB’7)。
(ステップB´8)
論理演算部206_i(i=1、2、3、4)は、
を用いて、
を計算する。
ここで、上記ステップB´7で得た値と、
を用いて、各シェア構成部203_1、203_2、203_3、203_4は、以下の12の式によりシェアを構成する。
、
、
が各i番目のデータ記憶部208_iに記憶される。また、データ記憶部208_iはループカウンタjを取り出し、j=j+1として値を更新する。
論理演算部206_i(i=1、2、3、4)は、
を用いて、
を計算する。
ここで、上記ステップB´7で得た値と、
を用いて、各シェア構成部203_1、203_2、203_3、203_4は、以下の12の式によりシェアを構成する。
、
、
が各i番目のデータ記憶部208_iに記憶される。また、データ記憶部208_iはループカウンタjを取り出し、j=j+1として値を更新する。
(ステップB´9)
第1の再分散値計算部202_1は、第1のデータ記憶部208_1から
を取り出す。次に、第1の再分散値計算部202_1は、
を、第3の不正検知部204_3に送信する。また、第1の再分散値計算部202_1は、
を、第4の不正検知部204_4に送信する。第3の不正検知部204_3および第4の不正検知部204_4は、それぞれ、第3のデータ記憶部208_3に記憶されている
、第4のデータ記憶部208_4に記憶されている
を取出し、値が一致するかを検証する。
第1の再分散値計算部202_1は、第1のデータ記憶部208_1から
を取り出す。次に、第1の再分散値計算部202_1は、
を、第3の不正検知部204_3に送信する。また、第1の再分散値計算部202_1は、
を、第4の不正検知部204_4に送信する。第3の不正検知部204_3および第4の不正検知部204_4は、それぞれ、第3のデータ記憶部208_3に記憶されている
、第4のデータ記憶部208_4に記憶されている
を取出し、値が一致するかを検証する。
一致した場合、第3の不正検知部204_3又は第4の不正検知部204_4は、successの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、次のステップに進む。一致しなかった場合、第3の不正検知部204_3又は第4の不正検知部204_4は、abortの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
同様に、第2の再分散値計算部202_2は、
を第2のデータ記憶部208_2から取り出す。次に、第2の再分散値計算部202_2は、
を、第1の不正検知部204_1に送信する。また、第2の再分散値計算部202_2は、
を、第4の不正検知部204_4に送信する。第1の不正検知部204_1および第4の不正検知部204_4は、それぞれ、第1のデータ記憶部208_1に記憶されている
、第4のデータ記憶部208_4に記憶されている
を取出し、値が一致するかを検証する。
を第2のデータ記憶部208_2から取り出す。次に、第2の再分散値計算部202_2は、
を、第1の不正検知部204_1に送信する。また、第2の再分散値計算部202_2は、
を、第4の不正検知部204_4に送信する。第1の不正検知部204_1および第4の不正検知部204_4は、それぞれ、第1のデータ記憶部208_1に記憶されている
、第4のデータ記憶部208_4に記憶されている
を取出し、値が一致するかを検証する。
一致した場合、第1の不正検知部204_1又は第4の不正検知部204_4は、successの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、次のステップに進む。一致しなかった場合、第1の不正検知部204_1又は第4の不正検知部204_4は、abortの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
さらに同様に、第3の再分散値計算部202_3は、
を第3のデータ記憶部208_3から取り出す。次に、第3の再分散値計算部202_3は、
を、第2の不正検知部204_2に送信する。また、第3の再分散値計算部202_3は、
を、第4の不正検知部204_4に送信する。第2の不正検知部204_2および第4の不正検知部204_4は、それぞれ、第2のデータ記憶部208_2に記憶されている
、第4のデータ記憶部208_4に記憶されている
を取出し、値が一致するかを検証する。
を第3のデータ記憶部208_3から取り出す。次に、第3の再分散値計算部202_3は、
を、第2の不正検知部204_2に送信する。また、第3の再分散値計算部202_3は、
を、第4の不正検知部204_4に送信する。第2の不正検知部204_2および第4の不正検知部204_4は、それぞれ、第2のデータ記憶部208_2に記憶されている
、第4のデータ記憶部208_4に記憶されている
を取出し、値が一致するかを検証する。
一致した場合、第2の不正検知部204_2又は第4の不正検知部204_4は、successの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、次のステップに進む。一致しなかった場合、第2の不正検知部204_2又は第4の不正検知部204_4は、abortの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
それぞれとを連結した値に対するハッシュ値と、
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
に関しても同様である。
なお、ステップB´9は、ループごとではなく、j=n-1のときに全ループ分を並列に実行しても良い。また、ステップB´9は、上記ステップB´4と並列に実行することも可能である。
(ステップB´10)
各i番目の不正検知部204_iは、上記ステップB´7の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置200_1、200_2、200_3、200_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置200_1、200_2、200_3、200_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップB´10は上記ステップB´4、B´9と並列に実行することが可能である。また、ステップB´10はループごとではなく、j=n-1のときに、全ループ分を並列に実行することが可能である。
各i番目の不正検知部204_iは、上記ステップB´7の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置200_1、200_2、200_3、200_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置200_1、200_2、200_3、200_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップB´10は上記ステップB´4、B´9と並列に実行することが可能である。また、ステップB´10はループごとではなく、j=n-1のときに、全ループ分を並列に実行することが可能である。
(ステップB´11)
各i番目の算術演算部205_iは、各データ記憶部208_iから
を取り出す。その後、以下の式に示す計算が実行される。
各i番目の算術演算部205_iは、各データ記憶部208_iに
を記憶する。
各i番目の算術演算部205_iは、各データ記憶部208_iから
を取り出す。その後、以下の式に示す計算が実行される。
各i番目の算術演算部205_iは、各データ記憶部208_iに
を記憶する。
以上、説明した第2の実施形態においては、第1の実施形態における効果と同じ効果を奏する。ただし、第1の実施形態における第1の効果に関して、第2の実施形態の方が環合成における通信コストの点で効率が良い。第2の実施形態では、キャリー計算処理
を分割して考え、シェアの再分散とキャリー計算における通信を伴う処理を並列して行うことで、通信ラウンドの削減を実現している。このため、第2の実施形態における環合成の通信コストは、(16n-16)ビット・n-1ラウンドとなる。
を分割して考え、シェアの再分散とキャリー計算における通信を伴う処理を並列して行うことで、通信ラウンドの削減を実現している。このため、第2の実施形態における環合成の通信コストは、(16n-16)ビット・n-1ラウンドとなる。
[第3の実施形態]
図9~図12を参照して、第3の実施形態に係る型変換処理システムについて説明する。
図9~図12を参照して、第3の実施形態に係る型変換処理システムについて説明する。
図9は、第3の実施形態による型変換処理システムの機能構成例を示すブロック図である。第3の実施形態に係る型変換処理システムは、上述した第1の実施形態および第2の実施形態に係る型変換処理システムの変形例である。
図9を参照すると、第3の実施形態による型変換処理システムは、後述する図10で参照される第i(i=1、2、3、4)のサーバ装置から成る。第3の実施形態による型変換処理システムにおいて、サーバ装置300_1、300_2、300_3、300_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。図10は、第iのサーバ装置300_i(i=1、2、3、4)の機能構成例を示すブロック図である。
図10に示すように、第iのサーバ装置300_iは、第iの再分散値計算部302_iと、第iのシェア構成部303_iと、第iの不正検知部304_iと、第iの算術演算部305_iと、第iの論理演算部306_iと、第iの基本演算シード記憶部307_iと、第iのデータ記憶部308_iと、を含む。なお、第iの再分散値計算部302_iと、第iのシェア構成部303_iと、第iの不正検知部304_iと、第iの算術演算部305_iと、第iの論理演算部306_iと、第iの基本演算シード記憶部307_iと、第iのデータ記憶部308_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置300_1~300_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部308_1~308_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置300_1~300_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部308_1~308_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置300_1~300_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置300_1~300_4ではない外部にシェアが送信され、復元されてもよい。
、あるいは第1乃至第4のデータ記憶部308_1~308_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置300_1~300_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部308_1~308_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置300_1~300_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置300_1~300_4ではない外部にシェアが送信され、復元されてもよい。
また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置300_1~300_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部308_1~308_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置300_1~300_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部308_1~308_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置300_1~300_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置300_1~300_4ではない外部にシェアが送信され、復元されてもよい。
、あるいは第1乃至第4のデータ記憶部308_1~308_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置300_1~300_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部308_1~308_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置300_1~300_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置300_1~300_4ではない外部にシェアが送信され、復元されてもよい。
次に、第3の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置300_1~300_4の動作について、詳細に説明する。図11は、第1乃至第4のサーバ装置300_1~300_4のビット分解に関する動作例を示すフローチャートである。図12は、第1乃至第4のサーバ装置300_1~300_4の環合成に関する動作例を示すフローチャートである。
まず、図11に示すビット分解に関するフローチャートを説明する。
なお、
に関して、サーバ装置300_i(i=1、2、3、4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
に関して、サーバ装置300_i(i=1、2、3、4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
(ステップC2)
第1の再分散値計算部302_1と第2の再分散値計算部302_2はそれぞれ、第1の基本演算シード記憶部307_1、第2の基本演算シード記憶部307_2より、
を取得する。次に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第1の再分散値計算部302_1と第3の再分散値計算部302_3は
を生成する。
第1の再分散値計算部302_1と第2の再分散値計算部302_2はそれぞれ、第1の基本演算シード記憶部307_1、第2の基本演算シード記憶部307_2より、
を取得する。次に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第1の再分散値計算部302_1と第3の再分散値計算部302_3は
を生成する。
そして、第1の再分散値計算部302_1は、
を第1のデータ記憶部308_1に記憶する。第3の再分散値計算部302_3は、
を、第3のシェア構成部303_3に送信する。また、第2の再分散値計算部302_2は
を、第4のシェア構成部303_4に送信する。
を第1のデータ記憶部308_1に記憶する。第3の再分散値計算部302_3は、
を、第3のシェア構成部303_3に送信する。また、第2の再分散値計算部302_2は
を、第4のシェア構成部303_4に送信する。
同様に、第1の再分散値計算部302_1、第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
を生成する。第2の再分散値計算部302_2は、
を第2のデータ記憶部308_2に記憶する。第1の再分散値計算部302_1は、
を、第1のシェア構成部303_1に送信する。また、第3の再分散値計算部302_3は
を、第4のシェア構成部303_4に送信する。
を生成する。第2の再分散値計算部302_2は、
を第2のデータ記憶部308_2に記憶する。第1の再分散値計算部302_1は、
を、第1のシェア構成部303_1に送信する。また、第3の再分散値計算部302_3は
を、第4のシェア構成部303_4に送信する。
さらに同様に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
を生成する。第3の再分散値計算部302_3は、
を第3のデータ記憶部308_3に記憶する。第2の再分散値計算部302_2は、
を、第2のシェア構成部303_2に送信する。また、第1の再分散値計算部302_1は
を、第4のシェア構成部303_4に送信する。
を生成する。第3の再分散値計算部302_3は、
を第3のデータ記憶部308_3に記憶する。第2の再分散値計算部302_2は、
を、第2のシェア構成部303_2に送信する。また、第1の再分散値計算部302_1は
を、第4のシェア構成部303_4に送信する。
(ステップC3)
各シェア構成部303_1、303_2、303_3、303_4は上記ステップC2で送信された値を用いて、以下の12の式によりシェアを構成する。
ここで、
に対し、
は
の
番目のビット
を意味する。
、
、
が各i番目のデータ記憶部308_iに記憶される。
各シェア構成部303_1、303_2、303_3、303_4は上記ステップC2で送信された値を用いて、以下の12の式によりシェアを構成する。
ここで、
に対し、
は
の
番目のビット
を意味する。
、
、
が各i番目のデータ記憶部308_iに記憶される。
上記ステップC3における12の式において、
は、
としたとき、
、
、
と置き換えることできる。このように、
となるので、各再分散値計算部302_iは、値xの再分散値を計算する際、値xをx1、x2、x3の排他的論理和とする場合にx1乃至x3のうち2つの値を等しくするように乱数を生成している。
は、
としたとき、
、
、
と置き換えることできる。このように、
となるので、各再分散値計算部302_iは、値xの再分散値を計算する際、値xをx1、x2、x3の排他的論理和とする場合にx1乃至x3のうち2つの値を等しくするように乱数を生成している。
(ステップC4)
各i番目の論理演算部306_iで通信することで、nビット加算器処理
を以下のように計算する。ここで、
とは、たとえば、
、
を入力とし、
を出力する処理のことである。
ここで、
なので、
が計算できた。なお、
は、
、…、
のシェア列を意味する。各i番目の論理演算部306_iは、
を各データ記憶部308_iに記憶する。
各i番目の論理演算部306_iで通信することで、nビット加算器処理
を以下のように計算する。ここで、
とは、たとえば、
、
を入力とし、
を出力する処理のことである。
ここで、
なので、
が計算できた。なお、
は、
、…、
のシェア列を意味する。各i番目の論理演算部306_iは、
を各データ記憶部308_iに記憶する。
(ステップC5)
第1の再分散値計算部302_1は、第1のデータ記憶部308_1から
を取り出す。次に、第1の再分散値計算部302_1は、
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
を取出し、
が成立するかを検証する。
第1の再分散値計算部302_1は、第1のデータ記憶部308_1から
を取り出す。次に、第1の再分散値計算部302_1は、
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
を取出し、
が成立するかを検証する。
成立した場合、第4の不正検知部304_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
同様に、第2の再分散値計算部302_2は、
を第2のデータ記憶部308_2から取り出す。次に、第2の再分散値計算部302_2は、
を、第4の不正検知部304_4に送信する。第4の不正検知部204_4は、第4のデータ記憶部308_4に記憶されている
を取出し、
が成立するかを検証する。
を第2のデータ記憶部308_2から取り出す。次に、第2の再分散値計算部302_2は、
を、第4の不正検知部304_4に送信する。第4の不正検知部204_4は、第4のデータ記憶部308_4に記憶されている
を取出し、
が成立するかを検証する。
成立した場合、第4の不正検知部304_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
さらに同様に、第3の再分散値計算部302_3は、
を第3のデータ記憶部308_3から取り出す。次に、第3の再分散値計算部302_3は、
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
を取出し、
が成立するかを検証する。
を第3のデータ記憶部308_3から取り出す。次に、第3の再分散値計算部302_3は、
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
を取出し、
が成立するかを検証する。
成立した場合、第4の不正検知部304_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。一致しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップC6)
各i番目の不正検知部304_iは、上記ステップC4の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置300_1、300_2、300_3、300_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置300_1、300_2、300_3、300_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップC6は上記ステップC5と並列に実行することが可能である。
各i番目の不正検知部304_iは、上記ステップC4の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置300_1、300_2、300_3、300_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置300_1、300_2、300_3、300_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップC6は上記ステップC5と並列に実行することが可能である。
次に、図12に示す環合成に関するフローチャートを説明する。
また、各サーバ装置300_1~300_4は疑似ランダム関数
を共有する。なお、
とし、疑似ランダム関数
とする。また、各データ記憶部308_1~308_4に、
、
、
、
を記憶する。さらに、各データ記憶部308_1~308_4に、ループカウンタj(=0)を記憶する。なお、
とし、
、
、
、
とする。
を共有する。なお、
とし、疑似ランダム関数
とする。また、各データ記憶部308_1~308_4に、
、
、
、
を記憶する。さらに、各データ記憶部308_1~308_4に、ループカウンタj(=0)を記憶する。なお、
とし、
、
、
、
とする。
また、
に関して、サーバ装置300_i(i=1、2、3、4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
に関して、サーバ装置300_i(i=1、2、3、4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
(ステップD2)
各サーバ装置300_iは、各データ記憶部308_iより、ループカウンタjをとりだす。各サーバ装置300_iは、j<nであればステップD3~D7を実行する。j=nであれば、各サーバ装置300_iはステップD8を実行する。
各サーバ装置300_iは、各データ記憶部308_iより、ループカウンタjをとりだす。各サーバ装置300_iは、j<nであればステップD3~D7を実行する。j=nであれば、各サーバ装置300_iはステップD8を実行する。
また、各算術演算部305_1~305_4は、各データ記憶部308_1~308_4から
を取り出す。そして、各算術演算部305_1~305_4は、
を計算し、
を各データ記憶部308_1~308_4に記憶する。なお、第iのデータ記憶部308_iが記憶する
を
と表記する。また、
とする。
を取り出す。そして、各算術演算部305_1~305_4は、
を計算し、
を各データ記憶部308_1~308_4に記憶する。なお、第iのデータ記憶部308_iが記憶する
を
と表記する。また、
とする。
(ステップD3)
第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3はそれぞれ、第1の基本演算シード記憶部307_1、第2の基本演算シード記憶部307_2、第3の基本演算シード記憶部307_3より、
を取得する。次に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
を生成する。そして、第1の再分散値計算部302_1は、
を第1のシェア構成部303_1に送信する。第3の再分散値計算部302_3は
を、第3のシェア構成部303_3に送信する。第2の再分散値計算部302_2は、第2のデータ記憶部308_2から
を取出し、
を、第4のシェア構成部303_4に送信する。
第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3はそれぞれ、第1の基本演算シード記憶部307_1、第2の基本演算シード記憶部307_2、第3の基本演算シード記憶部307_3より、
を取得する。次に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
を生成する。そして、第1の再分散値計算部302_1は、
を第1のシェア構成部303_1に送信する。第3の再分散値計算部302_3は
を、第3のシェア構成部303_3に送信する。第2の再分散値計算部302_2は、第2のデータ記憶部308_2から
を取出し、
を、第4のシェア構成部303_4に送信する。
同様に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は
を生成する。第2の再分散値計算部302_2は、
を、第2のシェア構成部303_2に送信する。第1の再分散値計算部302_1は、
を、第1のシェア構成部303_1に送信する。また、第3の再分散値計算部302_3は、第3のデータ記憶部308_2から
を取出し、
を、第4のシェア構成部303_4に送信する。
を生成する。第2の再分散値計算部302_2は、
を、第2のシェア構成部303_2に送信する。第1の再分散値計算部302_1は、
を、第1のシェア構成部303_1に送信する。また、第3の再分散値計算部302_3は、第3のデータ記憶部308_2から
を取出し、
を、第4のシェア構成部303_4に送信する。
さらに同様に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
を生成する。第3の再分散値計算部302_3は、
を第3のシェア構成部303_3に送信する。第2の再分散値計算部302_2は、
を、第2のシェア構成部303_2に送信する。また、第1の再分散値計算部302_1は、第1のデータ記憶部308_1から
を取出し、
を、第4のシェア構成部303_4に送信する。
を生成する。第3の再分散値計算部302_3は、
を第3のシェア構成部303_3に送信する。第2の再分散値計算部302_2は、
を、第2のシェア構成部303_2に送信する。また、第1の再分散値計算部302_1は、第1のデータ記憶部308_1から
を取出し、
を、第4のシェア構成部303_4に送信する。
(ステップD4)
各シェア構成部303_1、303_2、303_3、303_4は上記ステップD3で送信された値と、各i番目のデータ記憶部308_iに記憶された
を用いて、以下の12の式によりシェアを構成する。
、
、
が各i番目のデータ記憶部308_iに記憶される。
各シェア構成部303_1、303_2、303_3、303_4は上記ステップD3で送信された値と、各i番目のデータ記憶部308_iに記憶された
を用いて、以下の12の式によりシェアを構成する。
、
、
が各i番目のデータ記憶部308_iに記憶される。
(ステップD5)
上記ステップB5と同じ処理が行われる。
上記ステップB5と同じ処理が行われる。
(ステップD6)
第1の再分散値計算部302_1は、第1のデータ記憶部308_1から
を取り出す。次に、第1の再分散値計算部302_1は、
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
を取出し、
が成り立つかを検証する。
第1の再分散値計算部302_1は、第1のデータ記憶部308_1から
を取り出す。次に、第1の再分散値計算部302_1は、
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
を取出し、
が成り立つかを検証する。
成り立つ場合、第4の不正検知部204_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
同様に、第2の再分散値計算部302_2は、第2のデータ記憶部308_2から
を取り出す。次に、第2の再分散値計算部302_2は、
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
を取出し
が成立するかを検証する。
を取り出す。次に、第2の再分散値計算部302_2は、
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
を取出し
が成立するかを検証する。
成立した場合、第4の不正検知部304_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
さらに同様に、第3の再分散値計算部302_3は、第3のデータ記憶部308_3から
を取り出す。次に、第3の再分散値計算部302_3は、
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
を取出し、
が成立するかを検証する。
を取り出す。次に、第3の再分散値計算部302_3は、
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
を取出し、
が成立するかを検証する。
成立した場合、第4の不正検知部304_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。一致しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップD7)
各i番目の不正検知部304_iは、上記ステップD5の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置300_1、300_2、300_3、300_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置300_1、300_2、300_3、300_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップD7は上記ステップD6と並列に実行することが可能である。また、ステップD6、D7はループごとではなく、j=n-1のときに、n回のループ分を並列に実行することが可能である。
各i番目の不正検知部304_iは、上記ステップD5の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置300_1、300_2、300_3、300_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置300_1、300_2、300_3、300_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップD7は上記ステップD6と並列に実行することが可能である。また、ステップD6、D7はループごとではなく、j=n-1のときに、n回のループ分を並列に実行することが可能である。
(ステップD8)
上記ステップB8と同じ処理が行われる。
上記ステップB8と同じ処理が行われる。
以上、説明した第3の実施形態においては、第1の実施形態および第2の実施形態における効果と同じ効果を奏する。ただし、第1の実施形態における第1の効果および第2の実施形態における第1の効果に関して、第3の実施形態の方が通信コストの点で効率が良い。第3の実施形態では、第1乃至第2の実施形態と同様、ビット分解に関して
の計算を2回、環合成に関して
の計算によって実行できる。第3の実施形態と第1乃至第2の実施形態とで異なる点は、加算器計算前の再分散が効率よく行われている点である。リップルキャリー型のnビット加算器を用いて不正検知に関する処理を並列に行った場合、第3の実施形態では、ビット分解の通信コストとして、13n-10ビット・n+1ラウンドを要する。環合成の通信コストとして、13n-13ビット・2n-2ラウンドを要する。これにより、第3の実施形態の方が第1及び第2の実施形態よりも通信コストの点で効率が良い。なお、本願開示の実施はリップルキャリー型のnビット加算器に限定されない。キャリールックアヘッド型やパラレルプリフィックス型などのnビット加算器を用いても良い。
の計算を2回、環合成に関して
の計算によって実行できる。第3の実施形態と第1乃至第2の実施形態とで異なる点は、加算器計算前の再分散が効率よく行われている点である。リップルキャリー型のnビット加算器を用いて不正検知に関する処理を並列に行った場合、第3の実施形態では、ビット分解の通信コストとして、13n-10ビット・n+1ラウンドを要する。環合成の通信コストとして、13n-13ビット・2n-2ラウンドを要する。これにより、第3の実施形態の方が第1及び第2の実施形態よりも通信コストの点で効率が良い。なお、本願開示の実施はリップルキャリー型のnビット加算器に限定されない。キャリールックアヘッド型やパラレルプリフィックス型などのnビット加算器を用いても良い。
[第4の実施形態]
図13~図15を参照して、第4の実施形態に係る型変換処理システムについて説明する。
図13~図15を参照して、第4の実施形態に係る型変換処理システムについて説明する。
図13は、第4の実施形態による型変換処理システムの機能構成例を示すブロック図である。第4の実施形態に係る型変換処理システムは、上述した第1乃至第3の実施形態に係る型変換処理システムの変形例である。
図13を参照すると、第4の実施形態による型変換処理システムは、後述する図14で参照される第i(i=1、2、3、4)のサーバ装置から成る。第4の実施形態による型変換処理システムにおいて、サーバ装置400_1、400_2、400_3、400_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。図14は、第iのサーバ装置400_i(i=1、2、3、4)の機能構成例を示すブロック図である。
図14に示すように、第iのサーバ装置400_iは、第iの再分散値計算部402_iと、第iのシェア構成部403_iと、第iの不正検知部404_iと、第iの算術演算部405_iと、第iの論理演算部406_iと、第iの基本演算シード記憶部407_iと、第iのデータ記憶部408_iと、を含む。なお、第iの再分散値計算部402_iと、第iのシェア構成部403_iと、第iの不正検知部404_iと、第iの算術演算部405_iと、第iの論理演算部406_iと、第iの基本演算シード記憶部407_iと、第iのデータ記憶部408_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置400_1~400_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部408_1~408_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置400_1~400_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部408_1~408_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置400_1~400_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置400_1~400_4ではない外部にシェアが送信され、シェアが復元されてもよい。
、あるいは第1乃至第4のデータ記憶部408_1~408_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置400_1~400_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部408_1~408_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置400_1~400_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置400_1~400_4ではない外部にシェアが送信され、シェアが復元されてもよい。
また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置400_1~400_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部408_1~408_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置400_1~400_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部408_1~408_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置400_1~400_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置400_1~400_4ではない外部にシェアが送信され、シェアが復元されてもよい。
、あるいは第1乃至第4のデータ記憶部408_1~408_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置400_1~400_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部408_1~408_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置400_1~400_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置400_1~400_4ではない外部にシェアが送信され、シェアが復元されてもよい。
次に、第4の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置400_1~400_4の動作について、詳細に説明する。図15は、第1乃至第4のサーバ装置400_1~400_4の環合成に関する動作例を示すフローチャートである。ビット分解については、第3の実施例と同様に実施可能なため、詳細な説明を割愛する。
図15に示す環合成に関するフローチャートを説明する。
また、各サーバ装置400_1~400_4は疑似ランダム関数
を共有する。なお、
とし、疑似ランダム関数
とする。また、各データ記憶部408_1~408_4に、
、
、
、
を記憶する。さらに、各データ記憶部408_1~408_4に、ループカウンタj(=1)を記憶する。なお、
とし、
、
、
、
とする。
を共有する。なお、
とし、疑似ランダム関数
とする。また、各データ記憶部408_1~408_4に、
、
、
、
を記憶する。さらに、各データ記憶部408_1~408_4に、ループカウンタj(=1)を記憶する。なお、
とし、
、
、
、
とする。
また、
に関して、サーバ装置400_i(i=1、2、3、4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
に関して、サーバ装置400_i(i=1、2、3、4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3はそれぞれ、第1の基本演算シード記憶部407_1、第2の基本演算シード記憶部407_2、第3の基本演算シード記憶部407_3より、
を取得する。次に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
を生成する。
を取得する。次に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
を生成する。
そして、第1の再分散値計算部402_1は、
を第1のシェア構成部403_1に送信する。第3の再分散値計算部402_3は
を、第3のシェア構成部403_3に送信する。第2の再分散値計算部402_2は、第2のデータ記憶部408_2から
を取出し、
を、第4のシェア構成部403_4に送信する。
を第1のシェア構成部403_1に送信する。第3の再分散値計算部402_3は
を、第3のシェア構成部403_3に送信する。第2の再分散値計算部402_2は、第2のデータ記憶部408_2から
を取出し、
を、第4のシェア構成部403_4に送信する。
同様に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
を生成する。第2の再分散値計算部402_2は、
を、第2のシェア構成部403_2に送信する。第1の再分散値計算部402_3は、
を、第1のシェア構成部403_1に送信する。また、第3の再分散値計算部402_3は、第3のデータ記憶部408_3から
を取出し、
を、第4のシェア構成部403_4に送信する。
を生成する。第2の再分散値計算部402_2は、
を、第2のシェア構成部403_2に送信する。第1の再分散値計算部402_3は、
を、第1のシェア構成部403_1に送信する。また、第3の再分散値計算部402_3は、第3のデータ記憶部408_3から
を取出し、
を、第4のシェア構成部403_4に送信する。
さらに同様に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
を生成する。第3の再分散値計算部402_3は、
を第3のシェア構成部403_3に送信する。第2の再分散値計算部402_2は、
を、第2のシェア構成部403_2に送信する。また、第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
を取出し、
を、第4のシェア構成部403_4に送信する。
を生成する。第3の再分散値計算部402_3は、
を第3のシェア構成部403_3に送信する。第2の再分散値計算部402_2は、
を、第2のシェア構成部403_2に送信する。また、第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
を取出し、
を、第4のシェア構成部403_4に送信する。
(ステップD´3)
各シェア構成部403_1、403_2、403_3、403_4は上記ステップD´2で送信された値と、各i番目のデータ記憶部408_iに記憶された
を用いて、以下の12の式によりシェアを構成する。
、
、
が各i番目のデータ記憶部408_iに記憶される。
各シェア構成部403_1、403_2、403_3、403_4は上記ステップD´2で送信された値と、各i番目のデータ記憶部408_iに記憶された
を用いて、以下の12の式によりシェアを構成する。
、
、
が各i番目のデータ記憶部408_iに記憶される。
(ステップD´4)
第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
を取り出す。次に、第1の再分散値計算部402_1は、
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
を取出し、
が成り立つかを検証する。
第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
を取り出す。次に、第1の再分散値計算部402_1は、
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
を取出し、
が成り立つかを検証する。
成り立つ場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
同様に、第2の再分散値計算部402_2は、第2のデータ記憶部408_2から
を取り出す。次に、第2の再分散値計算部402_2は、
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
を取出し
が成立するかを検証する。
を取り出す。次に、第2の再分散値計算部402_2は、
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
を取出し
が成立するかを検証する。
成立した場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
さらに同様に、第3の再分散値計算部402_3は、第3のデータ記憶部408_3から
を取り出す。次に、第3の再分散値計算部402_3は、
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
を取出し、
が成立するかを検証する。
を取り出す。次に、第3の再分散値計算部402_3は、
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
を取出し、
が成立するかを検証する。
成立した場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。一致しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップD´5)
各サーバ装置400_iは、各データ記憶部408_iより、ループカウンタjをとりだす。各サーバ装置400_iは、j<nであればステップD´6~D´10を実行する。各サーバ装置400_iは、j=nであれば、ステップD´11を実行する。
各サーバ装置400_iは、各データ記憶部408_iより、ループカウンタjをとりだす。各サーバ装置400_iは、j<nであればステップD´6~D´10を実行する。各サーバ装置400_iは、j=nであれば、ステップD´11を実行する。
(ステップD´6)
上記ステップB´6と同じ処理なので説明を割愛する。
上記ステップB´6と同じ処理なので説明を割愛する。
(ステップD´7)
第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3はそれぞれ、第1の基本演算シード記憶部407_1、第2の基本演算シード記憶部407_2、第3の基本演算シード記憶部407_3より、
を取得する。次に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
を生成する。
第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3はそれぞれ、第1の基本演算シード記憶部407_1、第2の基本演算シード記憶部407_2、第3の基本演算シード記憶部407_3より、
を取得する。次に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
を生成する。
そして、第1の再分散値計算部402_1は、
を第1のシェア構成部403_1に送信する。第3の再分散値計算部402_2は
を、第3のシェア構成部403_4に送信する。第2の再分散値計算部402_2は、第2のデータ記憶部408_2から
を取出し、
を、第4のシェア構成部403_4に送信する。
を第1のシェア構成部403_1に送信する。第3の再分散値計算部402_2は
を、第3のシェア構成部403_4に送信する。第2の再分散値計算部402_2は、第2のデータ記憶部408_2から
を取出し、
を、第4のシェア構成部403_4に送信する。
同様に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
を生成する。第2の再分散値計算部402_2は、
を、第2のシェア構成部403_2に送信する。第1の再分散値計算部402_3は、
を、第1のシェア構成部403_1に送信する。また、第3の再分散値計算部402_3は、第3のデータ記憶部408_3から
を取出し、
を、第4のシェア構成部403_4に送信する。
を生成する。第2の再分散値計算部402_2は、
を、第2のシェア構成部403_2に送信する。第1の再分散値計算部402_3は、
を、第1のシェア構成部403_1に送信する。また、第3の再分散値計算部402_3は、第3のデータ記憶部408_3から
を取出し、
を、第4のシェア構成部403_4に送信する。
さらに同様に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
を生成する。第3の再分散値計算部402_3は、
を第3のシェア構成部403_3に送信する。第2の再分散値計算部402_2は、
を、第2のシェア構成部403_2に送信する。また、第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
を取出し、
を、第4のシェア構成部403_4に送信する。
を生成する。第3の再分散値計算部402_3は、
を第3のシェア構成部403_3に送信する。第2の再分散値計算部402_2は、
を、第2のシェア構成部403_2に送信する。また、第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
を取出し、
を、第4のシェア構成部403_4に送信する。
また、論理演算部406_i(i=1、2、3、4)は、
、
、
、
および
を入力に取り、
を通信を伴って計算することで、
を得る。論理演算部406_i(i=1、2、3、4)は、データ記憶部408_i(i=1、2、3、4)に
を記憶する。
、
、
、
および
を入力に取り、
を通信を伴って計算することで、
を得る。論理演算部406_i(i=1、2、3、4)は、データ記憶部408_i(i=1、2、3、4)に
を記憶する。
(ステップD´8)
各シェア構成部403_1、403_2、403_3、403_4は上記ステップD´7で送信された値と、各i番目のデータ記憶部408_iに記憶された
を用いて、以下の12の式によりシェアを構成する。
、
、
が各i番目のデータ記憶部408_iに記憶される。また、データ記憶部408_iはループカウンタ
を取り出し、j=j+1として値を更新する。
各シェア構成部403_1、403_2、403_3、403_4は上記ステップD´7で送信された値と、各i番目のデータ記憶部408_iに記憶された
を用いて、以下の12の式によりシェアを構成する。
、
、
が各i番目のデータ記憶部408_iに記憶される。また、データ記憶部408_iはループカウンタ
を取り出し、j=j+1として値を更新する。
(ステップD´9)
第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
を取り出す。次に、第1の再分散値計算部302_1は、
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
を取出し、
が成り立つかを検証する。
第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
を取り出す。次に、第1の再分散値計算部302_1は、
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
を取出し、
が成り立つかを検証する。
成り立つ場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
同様に、第2の再分散値計算部402_2は、第2のデータ記憶部408_2から
を取り出す。次に、第2の再分散値計算部402_2は、
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
を取出し
が成立するかを検証する。
を取り出す。次に、第2の再分散値計算部402_2は、
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
を取出し
が成立するかを検証する。
成立した場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
さらに同様に、第3の再分散値計算部402_3は、第3のデータ記憶部408_3から
を取り出す。次に、第3の再分散値計算部402_3は、
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
を取出し、
が成立するかを検証する。
を取り出す。次に、第3の再分散値計算部402_3は、
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
を取出し、
が成立するかを検証する。
成立した場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。一致しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。なお、ステップD´9は、ループごとではなく、j=n-1のときに全ループ分を並列に実行しても良い。また、ステップD´9は、上記ステップD´4と並列に実行することも可能である。
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。なお、ステップD´9は、ループごとではなく、j=n-1のときに全ループ分を並列に実行しても良い。また、ステップD´9は、上記ステップD´4と並列に実行することも可能である。
(ステップD´10)
各i番目の不正検知部404_iは、上記ステップD´7の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置400_1、400_2、400_3、400_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置400_1、400_2、400_3、400_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップD´10は上記ステップD´4、D´9と並列に実行することが可能である。また、ステップD´10はループごとではなく、j=n-1のときに、全ループ分を並列に実行することが可能である。
各i番目の不正検知部404_iは、上記ステップD´7の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置400_1、400_2、400_3、400_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置400_1、400_2、400_3、400_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップD´10は上記ステップD´4、D´9と並列に実行することが可能である。また、ステップD´10はループごとではなく、j=n-1のときに、全ループ分を並列に実行することが可能である。
(ステップD´11)
上記ステップB´11と同じ処理なので説明を割愛する。
上記ステップB´11と同じ処理なので説明を割愛する。
以上、説明した第4の実施形態においては、第1乃至第3の実施形態における効果と同じ効果を奏する。ただし、第3の実施形態における第1の効果に関して、第4の実施形態の方が環合成における通信コストの点で効率が良い。キャリー計算処理
を分割して考え、シェアの再分散とキャリー計算における通信を伴う処理を並列して行うことで、通信ラウンドの削減を実現している。このため、第4の実施形態における環合成の通信コストは、(13n-13)ビット・n-1ラウンドとなる。
を分割して考え、シェアの再分散とキャリー計算における通信を伴う処理を並列して行うことで、通信ラウンドの削減を実現している。このため、第4の実施形態における環合成の通信コストは、(13n-13)ビット・n-1ラウンドとなる。
[第5の実施形態]
図16~図18を参照して、第5の実施形態に係る型変換処理システムについて説明する。第5の実施形態に係る型変換処理システムは、上述した第1乃至第4の実施形態に係る型変換処理システムの変形例である。
図16~図18を参照して、第5の実施形態に係る型変換処理システムについて説明する。第5の実施形態に係る型変換処理システムは、上述した第1乃至第4の実施形態に係る型変換処理システムの変形例である。
図16は、第5の実施形態による型変換処理システムの機能構成例を示すブロック図である。図16を参照すると、第5の実施形態による型変換処理システムは、後述する図17で参照される第i(i=1、2、3、4)のサーバ装置から成る。第5の実施形態による型変換処理システムにおいて、サーバ装置500_1、500_2、500_3、500_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。図17は、第iのサーバ装置500_i(i=1、2、3、4)の機能構成例を示すブロック図である。
図17に示すように、第iのサーバ装置500_iは、第iのマスク値計算部501_iと、第iの再分散値計算部502_iと、第iのシェア構成部503_iと、第iの不正検知部504_iと、第iの算術演算部505_iと、第iの論理演算部506_iと、第iの基本演算シード記憶部507_iと、第iのデータ記憶部508_iと、を含む。なお、第iのマスク値計算部501_iと、第iの再分散値計算部502_iと、第iのシェア構成部503_iと、第iの不正検知部504_iと、第iの算術演算部505_iと、第iの論理演算部506_iと、第iの基本演算シード記憶部507_iと、第iのデータ記憶部508_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置500_1~500_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部508_1~508_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置500_1~500_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部508_1~508_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置500_1~500_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置500_1~500_4ではない外部にシェアが送信され、復元されてもよい。
、あるいは第1乃至第4のデータ記憶部508_1~508_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置500_1~500_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部508_1~508_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置500_1~500_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置500_1~500_4ではない外部にシェアが送信され、復元されてもよい。
次に、第5の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置500_1~500_4の動作について、詳細に説明する。図17は、第1乃至第4のサーバ装置500_1~500_4のビット分解に関する動作例を示すフローチャートである。環合成については、たとえば、第3又は第4の実施形態における環合成と同様とすることができるので、説明を割愛する。
以下、図17に示すビット分解に関するフローチャートを説明する。
また、各サーバ装置500_1~500_4は疑似ランダム関数
を共有する。なお、
とし、疑似ランダム関数
とする。また、各データ記憶部508_1~508_4に、それぞれ
、
、
、
を記憶する。ここで、
を文字列連結演算子とする。なお、
に関して、サーバ装置500_i(i=1、2、3、4)の内、ある一台のサーバ装置は
の出力を計算できず、他の三台のサーバ装置は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
を共有する。なお、
とし、疑似ランダム関数
とする。また、各データ記憶部508_1~508_4に、それぞれ
、
、
、
を記憶する。ここで、
を文字列連結演算子とする。なお、
に関して、サーバ装置500_i(i=1、2、3、4)の内、ある一台のサーバ装置は
の出力を計算できず、他の三台のサーバ装置は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
(ステップE2)
第1、第2、第3のマスク値計算部501_1、501_2、501_3は
を計算し、第1、第2、第3のデータ記憶部509_1、509_2、509_3に
を記憶する。第2のマスク値計算部501_2は、データ記憶部508_2からシェア
を取り出す。第2のマスク値計算部501_2は、
を生成し、
を第4のサーバ装置500_4に送信する。第4のサーバ装置500_4は、第4のデータ記憶部508_4に
を記憶する。
第1、第2、第3のマスク値計算部501_1、501_2、501_3は
を計算し、第1、第2、第3のデータ記憶部509_1、509_2、509_3に
を記憶する。第2のマスク値計算部501_2は、データ記憶部508_2からシェア
を取り出す。第2のマスク値計算部501_2は、
を生成し、
を第4のサーバ装置500_4に送信する。第4のサーバ装置500_4は、第4のデータ記憶部508_4に
を記憶する。
このように、第iのマスク値計算部501_iは、シェア(例えば、上記の例ではx2)をマスクするためのマスク値(例えば、上記の例ではr)を計算する。当該計算されたマスク値によりマスクされたシェア(上記の例では、y=x2+r)が他のサーバ装置に送信される。
(ステップE3)
各シェア構成部503_1、503_2、503_3、503_4は各データ記憶部508_1、508_2、508_3、508_4からそれぞれ、
、
、
、
を取り出し、以下の16の式によりシェアを構成する。
ここで、
に対し、
は
のj番目のビット(j=0、...、n-1)を意味する。
、
、
、
は各i番目のデータ記憶部508_iに記憶される。このように、第iのシェア構成部503_iは、送信されたマスク値を用いて型変換用のシェアを構成する。
各シェア構成部503_1、503_2、503_3、503_4は各データ記憶部508_1、508_2、508_3、508_4からそれぞれ、
、
、
、
を取り出し、以下の16の式によりシェアを構成する。
ここで、
に対し、
は
のj番目のビット(j=0、...、n-1)を意味する。
、
、
、
は各i番目のデータ記憶部508_iに記憶される。このように、第iのシェア構成部503_iは、送信されたマスク値を用いて型変換用のシェアを構成する。
(ステップE5)
第1のサーバ装置500_1は、上記ステップE2における第2のサーバ装置500_2と同様、第1のマスク値計算部501_1は、
を生成し、
を第4のサーバ装置500_4に送信する。第4のサーバ装置500_4は、第4のデータ記憶部508_4に
を記憶する。第4の不正検知部504_4は、第4のデータ記憶部508_4から
を取り出し、
が成り立つか、検証する。
第1のサーバ装置500_1は、上記ステップE2における第2のサーバ装置500_2と同様、第1のマスク値計算部501_1は、
を生成し、
を第4のサーバ装置500_4に送信する。第4のサーバ装置500_4は、第4のデータ記憶部508_4に
を記憶する。第4の不正検知部504_4は、第4のデータ記憶部508_4から
を取り出し、
が成り立つか、検証する。
が成り立つ場合は、第4の不正検知部504_4はsuccessの文字列を各サーバ装置500_1、500_2、500_3にブロードキャストし、次のステップに進む。
が成り立たない場合は、第4の不正検知部504_4はabortの文字列を各サーバ装置500_1、500_2、500_3にブロードキャストし、プロトコルを中断する。
が成り立たない場合は、第4の不正検知部504_4はabortの文字列を各サーバ装置500_1、500_2、500_3にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列に行う際に、各ステップE5における
を連結してハッシュ値
を計算し、
に対しても連結した値に対するハッシュ値
を計算することで、
が成り立つか否かの検証を
が成り立つか否かの検証と捉えてもよい。このとき、
に関する通信量は処理全体の計算量に対し、無視できるものと捉えることができる。
を連結してハッシュ値
を計算し、
に対しても連結した値に対するハッシュ値
を計算することで、
が成り立つか否かの検証を
が成り立つか否かの検証と捉えてもよい。このとき、
に関する通信量は処理全体の計算量に対し、無視できるものと捉えることができる。
(ステップE6)
各i番目の不正検知部504_iは、上記ステップE4の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置500_1、500_2、500_3、500_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置500_1、500_2、500_3、500_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップE6は上記ステップE5と並列に実行することが可能である。
各i番目の不正検知部504_iは、上記ステップE4の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置500_1、500_2、500_3、500_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置500_1、500_2、500_3、500_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップE6は上記ステップE5と並列に実行することが可能である。
以上、説明した第5の実施形態においては、第1乃至第4の実施形態における効果と同じ効果を奏する。なお、ビット分解について、理論的な通信コストとしては第5の実施形態の方が、他の実施形態よりも劣っているが、通信の形態が変化していることに留意されたい。たとえば、第3の実施形態では、ステップC2にて、第1のサーバ装置300_1、第2のサーバ装置300_2、第3のサーバ装置300_3から第4のサーバ装置300_4への通信が生じている。一方、第5の実施形態におけるステップE2では、第2のサーバ装置500_2から、第4のサーバ装置500_4への通信の発生だけで済む。このように通信の形態が変わるため、通信環境によっては第5の実施形態の方が、効率が良い場合があり得る。
[第6の実施形態]
図19~図21を参照して、第6の実施形態に係る型変換処理システムについて説明する。図19は、第6の実施形態による型変換処理システムの機能構成例を示すブロック図である。第6の実施形態に係る型変換処理システムは、上述した第1乃至第5の実施形態に係る型変換処理システムの変形例である。
図19~図21を参照して、第6の実施形態に係る型変換処理システムについて説明する。図19は、第6の実施形態による型変換処理システムの機能構成例を示すブロック図である。第6の実施形態に係る型変換処理システムは、上述した第1乃至第5の実施形態に係る型変換処理システムの変形例である。
図19を参照すると、第6の実施形態による型変換処理システムは、後述する図20で参照される第i(i=1、2、3、4)のサーバ装置から成る。第6の実施形態による型変換処理システムにおいて、サーバ装置600_1、600_2、600_3、600_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。図20は、第iのサーバ装置600_i(i=1、2、3、4)の機能構成例を示すブロック図である。
図20に示すように、第iのサーバ装置600_iは、第iのマスク値計算部601_iと、第iの再分散値計算部602_iと、第iのシェア構成部603_iと、第iの不正検知部604_iと、第iの算術演算部605_iと、第iの論理演算部606_iと、第iの基本演算シード記憶部607_iと、第iのデータ記憶部608_iと、を含む。なお、第iのマスク値計算部601_iと、第iの再分散値計算部602_iと、第iのシェア構成部603_iと、第iの不正検知部604_iと、第iの算術演算部605_iと、第iの論理演算部606_iと、第iの基本演算シード記憶部607_iと、第iのデータ記憶部608_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置600_1~600_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部608_1~608_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置600_1~600_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部608_1~608_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置600_1~600_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置600_1~600_4ではない外部にシェアが送信され、復元されてもよい。
、あるいは第1乃至第4のデータ記憶部608_1~608_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置600_1~600_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部608_1~608_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置600_1~600_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置600_1~600_4ではない外部にシェアが送信され、復元されてもよい。
また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置600_1~600_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部608_1~608_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置600_1~600_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部608_1~608_4に記憶する。上記計算結果のシェアは、第1乃至第4のサーバ装置600_1~600_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置600_1~600_4ではない外部にシェアが送信され、復元されてもよい。
、あるいは第1乃至第4のデータ記憶部608_1~608_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置600_1~600_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部608_1~608_4に記憶する。上記計算結果のシェアは、第1乃至第4のサーバ装置600_1~600_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置600_1~600_4ではない外部にシェアが送信され、復元されてもよい。
次に、第6の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置600_1~600_4の動作について、詳細に説明する。図20は、第1乃至第4のサーバ装置600_1~600_4のビット分解に関する動作例を示すフローチャートである。環合成については、たとえば、第3又は第4の実施形態における環合成と同様とすることができるので、説明を割愛する。
以下に図20に示すビット分解に関するフローチャートを説明する。
また、各サーバ装置600_1~600_4は疑似ランダム関数
を共有する。なお、
とし、疑似ランダム関数
とする。また、各データ記憶部608_1~608_4に、それぞれ
、
、
、
を記憶する。なお、
に関して、サーバ装置600_i(i=1、2、3、4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
を共有する。なお、
とし、疑似ランダム関数
とする。また、各データ記憶部608_1~608_4に、それぞれ
、
、
、
を記憶する。なお、
に関して、サーバ装置600_i(i=1、2、3、4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
(ステップF2)
第1、第2、第3のマスク値計算部601_1、601_2、601_3は
を計算し、第1、第2、第3のデータ記憶部608_1、608_2、608_3に
を記憶する。第2のマスク値計算部601_2は、データ記憶部608_2からシェア
を取り出す。第2のマスク値計算部601_2は、
を生成し、
を第4のサーバ装置600_4に送信する。第4のサーバ装置600_4は、第4のデータ記憶部608_4に
を記憶する。
第1、第2、第3のマスク値計算部601_1、601_2、601_3は
を計算し、第1、第2、第3のデータ記憶部608_1、608_2、608_3に
を記憶する。第2のマスク値計算部601_2は、データ記憶部608_2からシェア
を取り出す。第2のマスク値計算部601_2は、
を生成し、
を第4のサーバ装置600_4に送信する。第4のサーバ装置600_4は、第4のデータ記憶部608_4に
を記憶する。
次に、第1の再分散値計算部602_1と第2の再分散値計算部602_2と第3の再分散値計算部602_3はそれぞれ、第1の基本演算シード記憶部607_1、第2の基本演算シード記憶部607_2、第3の基本演算シード記憶部607_3より、
を取得する。そして、第1の再分散値計算部602_1と第2の再分散値計算部602_2と第3の再分散値計算部602_3は
を生成する。さらに、第3の再分散値計算部602_3は、
を第3のデータ記憶部608_3に記憶する。第1の再分散値計算部602_1は、
を、第1のシェア構成部603_1に送信する。また、第2の再分散値計算部602_2は、第2のデータ記憶部608_2から
を取り出し、
を、第4のシェア構成部603_4に送信する。
を取得する。そして、第1の再分散値計算部602_1と第2の再分散値計算部602_2と第3の再分散値計算部602_3は
を生成する。さらに、第3の再分散値計算部602_3は、
を第3のデータ記憶部608_3に記憶する。第1の再分散値計算部602_1は、
を、第1のシェア構成部603_1に送信する。また、第2の再分散値計算部602_2は、第2のデータ記憶部608_2から
を取り出し、
を、第4のシェア構成部603_4に送信する。
(ステップF3)
各シェア構成部603_1、603_2、603_3、603_4は、各データ記憶部608_1、608_2、608_3、608_4からそれぞれ、
、
、
、
を取り出す。さらに上記ステップF2で送信された値を用いて、以下の12の式によりシェアを構成する。
ここで、
に対し、
は
のj番目のビット(j=0、...、n-1)を意味する。
、
、
が各i番目のデータ記憶部608_iに記憶される。
各シェア構成部603_1、603_2、603_3、603_4は、各データ記憶部608_1、608_2、608_3、608_4からそれぞれ、
、
、
、
を取り出す。さらに上記ステップF2で送信された値を用いて、以下の12の式によりシェアを構成する。
ここで、
に対し、
は
のj番目のビット(j=0、...、n-1)を意味する。
、
、
が各i番目のデータ記憶部608_iに記憶される。
(ステップF4)
各i番目の論理演算部606_iで通信することで、nビット加算器処理
を以下のように計算する。ここで、
とは、たとえば、
、
を入力とし、
を出力する処理のことである。
ここで、
なので、
が計算できた。なお、
は、
、…、
のシェア列を意味する。各i番目の論理演算部606_iは、
を各データ記憶部608_iに記憶する。
各i番目の論理演算部606_iで通信することで、nビット加算器処理
を以下のように計算する。ここで、
とは、たとえば、
、
を入力とし、
を出力する処理のことである。
ここで、
なので、
が計算できた。なお、
は、
、…、
のシェア列を意味する。各i番目の論理演算部606_iは、
を各データ記憶部608_iに記憶する。
(ステップF5)
第1のサーバ装置600_1は、上記ステップF2における第2のサーバ装置600_2と同様、第1のマスク値計算部601_1は、
を生成し、
を第4のサーバ装置600_4に送信する。第4のサーバ装置600_4は、第4のデータ記憶部608_4に
を記憶する。第4の不正検知部604_4は、第4のデータ記憶部608_4から
を取り出し、
が成り立つか、検証する。
第1のサーバ装置600_1は、上記ステップF2における第2のサーバ装置600_2と同様、第1のマスク値計算部601_1は、
を生成し、
を第4のサーバ装置600_4に送信する。第4のサーバ装置600_4は、第4のデータ記憶部608_4に
を記憶する。第4の不正検知部604_4は、第4のデータ記憶部608_4から
を取り出し、
が成り立つか、検証する。
が成り立つ場合は、第4の不正検知部604_4はsuccessの文字列を各サーバ装置600_1、600_2、600_3にブロードキャストし、次のステップに進む。
が成り立たない場合は、第4の不正検知部604_4はabortの文字列を各サーバ装置600_1、600_2、600_3にブロードキャストし、プロトコルを中断する。
が成り立たない場合は、第4の不正検知部604_4はabortの文字列を各サーバ装置600_1、600_2、600_3にブロードキャストし、プロトコルを中断する。
第2の再分散値計算部602_2は、
を第2のデータ記憶部608_2から取り出す。次に、第2の再分散値計算部602_2は、
を、第4の不正検知部604_4に送信する。第4の不正検知部604_4は、第4のデータ記憶部608_4に記憶されている
を取出し、
が成立するかを検証する。
を第2のデータ記憶部608_2から取り出す。次に、第2の再分散値計算部602_2は、
を、第4の不正検知部604_4に送信する。第4の不正検知部604_4は、第4のデータ記憶部608_4に記憶されている
を取出し、
が成立するかを検証する。
成立した場合、第4の不正検知部604_4は、successの文字列を各サーバ装置600_1、600_2、600_3、600_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部604_4は、abortの文字列を各サーバ装置600_1、600_2、600_3、600_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して実行する場合、
、
に関しては、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
、
に関しては、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップF6)
各i番目の不正検知部604_iは、上記ステップF4の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置600_1、600_2、600_3、600_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置600_1、600_2、600_3、600_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップF6は上記ステップF5と並列に実行することが可能である。
各i番目の不正検知部604_iは、上記ステップF4の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置600_1、600_2、600_3、600_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置600_1、600_2、600_3、600_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップF6は上記ステップF5と並列に実行することが可能である。
以上、説明した第6の実施形態においては、第1乃至第5の実施形態における効果と同じ効果を奏する。また、ビット分解の理論的な通信コストについて、第6の実施形態の方が第1乃至第5の実施形態よりも、効率が良い。第6の実施形態では、第1至第4の実施形態と同様、ビット分解に関して
の計算を2回行うことで実現できる。
の計算を2回行うことで実現できる。
第6の実施形態と第1乃至第4の実施形態とで異なる点は、加算器計算前の再分散が効率よく行われている点である。リップルキャリー型のnビット加算器を用いて不正検知に関する処理を並列に行った場合、第6の実施形態では、ビット分解の通信コストとして、12n-10ビット・n+1ラウンドを要する。これより、第6の実施形態におけるビット分解の方が、第1乃至第5の実施形態におけるビット分解よりも通信コストの点で効率が良い。なお、本願開示の実施はリップルキャリー型のnビット加算器に限定されない。キャリールックアヘッド型やパラレルプリフィックス型などのnビット加算器を用いても良い。
[第7の実施形態]
図22~図24を参照して、第7の実施形態に係る型変換処理システムについて説明する。図22は、第7の実施形態による型変換処理システムの機能構成例を示すブロック図である。第7の実施形態に係る型変換処理システムは、上述した第1乃至第6の実施形態に係る型変換処理システムの変形例である。
図22~図24を参照して、第7の実施形態に係る型変換処理システムについて説明する。図22は、第7の実施形態による型変換処理システムの機能構成例を示すブロック図である。第7の実施形態に係る型変換処理システムは、上述した第1乃至第6の実施形態に係る型変換処理システムの変形例である。
図22を参照すると、第7の実施形態による型変換処理システムは、後述する図23で参照される第i(i=1、2、3、4)のサーバ装置から成る。第7の実施形態による型変換処理システムにおいて、サーバ装置700_1、700_2、700_3、700_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。図23は、第iのサーバ装置700_i(i=1、2、3、4)の機能構成例を示すブロック図である。
図23に示すように、第iのサーバ装置700_iは、第iのマスク値計算部701_iと、第iの再分散値計算部702_iと、第iのシェア構成部703_iと、第iの不正検知部704_iと、第iの算術演算部705_iと、第iの論理演算部706_iと、第iの基本演算シード記憶部707_iと、第iのデータ記憶部708_iと、を含む。なお、第iのマスク値計算部701_iと、第iの再分散値計算部702_iと、第iのシェア構成部703_iと、第iの不正検知部704_iと、第iの算術演算部705_iと、第iの論理演算部706_iと、第iの基本演算シード記憶部707_iと、第iのデータ記憶部708_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置700_1~700_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部708_1~708_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置700_1~700_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部708_1~708_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置700_1~700_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置700_1~700_4ではない外部にシェアが送信され、復元されてもよい。
、あるいは第1乃至第4のデータ記憶部708_1~708_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置700_1~700_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部708_1~708_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置700_1~700_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置700_1~700_4ではない外部にシェアが送信され、復元されてもよい。
また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置700_1~700_4の内のいずれかの装置が入力した値
、あるいは第1乃至第4のデータ記憶部708_1~708_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置700_1~700_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部708_1~708_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置700_1~700_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置700_1~700_4ではない外部にシェアが送信され、復元されてもよい。
、あるいは第1乃至第4のデータ記憶部708_1~708_4に記憶されたシェア
、あるいは第1乃至第4のサーバ装置700_1~700_4ではない外部から入力されたシェア
に対し、その入力や計算過程の値から
の値を知られることなく、
を計算し、第1乃至第4のデータ記憶部708_1~708_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置700_1~700_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置700_1~700_4ではない外部にシェアが送信され、復元されてもよい。
次に、第7の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置700_1~700_4の動作について、詳細に説明する。図24は、第1乃至第4のサーバ装置700_1~700_4のビット分解に関する動作例を示すフローチャートである。環合成については、たとえば、第3又は第4の実施形態における環合成と同様とすることができるので、説明を割愛する。
以下、図24に示すビット分解に関するフローチャートを説明する。
また、各サーバ装置700_1~700_4は疑似ランダム関数
を共有する。なお、
とし、疑似ランダム関数
とする。また、各データ記憶部708_1~708_4に、それぞれ
、
、
、
を記憶する。なお、
に関して、サーバ装置700_i(i=1、2、3、4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
を共有する。なお、
とし、疑似ランダム関数
とする。また、各データ記憶部708_1~708_4に、それぞれ
、
、
、
を記憶する。なお、
に関して、サーバ装置700_i(i=1、2、3、4)の内、ある一台の参加者は
の出力を計算できず、他の三台の参加者は
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
の扱いは特に制限されない。本書での
はあくまでも一例である。
(ステップG2)
第1、第2、第3のマスク値計算部701_1、701_2、701_3は
を計算し、第1、第2、第3のデータ記憶部708_1、708_2、708_3に
を記憶する。第2のマスク値計算部701_2は、データ記憶部708_2からシェア
を取り出す。第2のマスク値計算部701_2は、
を生成し、
を第4のサーバ装置700_4に送信する。第4のサーバ装置700_4は、第4のデータ記憶部708_4に
を記憶する。
第1、第2、第3のマスク値計算部701_1、701_2、701_3は
を計算し、第1、第2、第3のデータ記憶部708_1、708_2、708_3に
を記憶する。第2のマスク値計算部701_2は、データ記憶部708_2からシェア
を取り出す。第2のマスク値計算部701_2は、
を生成し、
を第4のサーバ装置700_4に送信する。第4のサーバ装置700_4は、第4のデータ記憶部708_4に
を記憶する。
次に、第1の再分散値計算部702_1と第2の再分散値計算部702_2と第3の再分散値計算部702_3はそれぞれ、第1の基本演算シード記憶部707_1、第2の基本演算シード記憶部707_2、第3の基本演算シード記憶部707_3より、
を取得する。そして、第1の再分散値計算部702_1と第2の再分散値計算部702_2と第3の再分散値計算部702_3は
を生成する。さらに、第1の再分散値計算部702_1は、
を第1のデータ記憶部708_1に記憶する。第3の再分散値計算部702_3は、
を、第3のシェア構成部703_3に送信する。また、第2の再分散値計算部702_2は、第2のデータ記憶部708_2から
を取り出し、
を、第4のシェア構成部703_4に送信する。
を取得する。そして、第1の再分散値計算部702_1と第2の再分散値計算部702_2と第3の再分散値計算部702_3は
を生成する。さらに、第1の再分散値計算部702_1は、
を第1のデータ記憶部708_1に記憶する。第3の再分散値計算部702_3は、
を、第3のシェア構成部703_3に送信する。また、第2の再分散値計算部702_2は、第2のデータ記憶部708_2から
を取り出し、
を、第4のシェア構成部703_4に送信する。
(ステップG3)
第2の再分散値計算部702_2は、第2の基本演算シード記憶部707_2から
を取得する。第3の再分散値計算部702_3は、第3の基本演算シード記憶部707_3から
を取得する。第4の再分散値計算部702_4は、第4の基本演算シード記憶部707_4から
を取得する。また、第4の再分散値計算部702_4は、第4のデータ記憶部708_4から
を取得する。
第2の再分散値計算部702_2は、第2の基本演算シード記憶部707_2から
を取得する。第3の再分散値計算部702_3は、第3の基本演算シード記憶部707_3から
を取得する。第4の再分散値計算部702_4は、第4の基本演算シード記憶部707_4から
を取得する。また、第4の再分散値計算部702_4は、第4のデータ記憶部708_4から
を取得する。
ここで、第2の再分散値計算部702_2および第3の再分散値計算部702_3および第4の再分散値計算部702_4は
を計算する。第2の再分散値計算部702_2および第3の再分散値計算部702_3および第4の再分散値計算部702_4は、それぞれ、第2のデータ記憶部708_2および第3のデータ記憶部708_3および第4のデータ記憶部708_4に送信する。
を計算する。第2の再分散値計算部702_2および第3の再分散値計算部702_3および第4の再分散値計算部702_4は、それぞれ、第2のデータ記憶部708_2および第3のデータ記憶部708_3および第4のデータ記憶部708_4に送信する。
さらに第4の再分散値計算部702_4は、
を用いて、
を生成し、第1のシェア構成部703_1および第4のシェア構成部703_4に送信する。同様に第3の再分散値計算部702_4は、
を生成し、第3のシェア構成部703_3および第3のデータ記憶部708_3に送信する。
を用いて、
を生成し、第1のシェア構成部703_1および第4のシェア構成部703_4に送信する。同様に第3の再分散値計算部702_4は、
を生成し、第3のシェア構成部703_3および第3のデータ記憶部708_3に送信する。
(ステップG4)
各シェア構成部703_1、703_2、703_3、703_4は、各データ記憶部708_1、708_2、708_3、708_4からそれぞれ、
、
、
、
を取り出す。さらに上記ステップG2、G3で送信された値を用いて、以下の8の式によりシェアを構成する。
ここで、
に対し、
は
のj番目のビット(j=0、...、n-1)を意味する。
、
は各i番目のデータ記憶部708_iに記憶される。
各シェア構成部703_1、703_2、703_3、703_4は、各データ記憶部708_1、708_2、708_3、708_4からそれぞれ、
、
、
、
を取り出す。さらに上記ステップG2、G3で送信された値を用いて、以下の8の式によりシェアを構成する。
ここで、
に対し、
は
のj番目のビット(j=0、...、n-1)を意味する。
、
は各i番目のデータ記憶部708_iに記憶される。
上記ステップG4における8の式において、
としたとき、
、
、
と置き換えることできる。このように、
となるので、各再分散値計算部702_iは、値x’の再分散値を計算する際、値x’をx1’、x2’、x3’の排他的論理和すると場合、x1’を乱数rに等しく、x2’をゼロ、x3’を乱数rと値xの排他的論理和となるように乱数を生成している。
つまり、各再分散値計算部702_iは、再分散する際に一部がゼロとなるように乱数を生成する。
としたとき、
、
、
と置き換えることできる。このように、
となるので、各再分散値計算部702_iは、値x’の再分散値を計算する際、値x’をx1’、x2’、x3’の排他的論理和すると場合、x1’を乱数rに等しく、x2’をゼロ、x3’を乱数rと値xの排他的論理和となるように乱数を生成している。
つまり、各再分散値計算部702_iは、再分散する際に一部がゼロとなるように乱数を生成する。
(ステップG5)
各i番目の論理演算部706_iで通信することで、加算器処理
を以下のように計算する。ここで、
とは、たとえば、
、
を入力とし、
を出力する処理のことである。
ここで、
なので、
が計算できた。なお、
は、
、…、
のシェア列を意味する。各i番目の論理演算部706_iは、
を各データ記憶部708_iに記憶する。
各i番目の論理演算部706_iで通信することで、加算器処理
を以下のように計算する。ここで、
とは、たとえば、
、
を入力とし、
を出力する処理のことである。
ここで、
なので、
が計算できた。なお、
は、
、…、
のシェア列を意味する。各i番目の論理演算部706_iは、
を各データ記憶部708_iに記憶する。
(ステップG6)
第1のサーバ装置700_1は、上記ステップG2における第2のサーバ装置700_2と同様、第1のマスク値計算部701_1は、
を生成し、
を第4のサーバ装置700_4に送信する。第4のサーバ装置700_4は、第4のデータ記憶部708_4に
を記憶する。第4の不正検知部704_4は、第4のデータ記憶部708_4から
を取り出し、
が成り立つか、検証する。
第1のサーバ装置700_1は、上記ステップG2における第2のサーバ装置700_2と同様、第1のマスク値計算部701_1は、
を生成し、
を第4のサーバ装置700_4に送信する。第4のサーバ装置700_4は、第4のデータ記憶部708_4に
を記憶する。第4の不正検知部704_4は、第4のデータ記憶部708_4から
を取り出し、
が成り立つか、検証する。
が成り立つ場合は、第4の不正検知部704_4はsuccessの文字列を各サーバ装置700_1、700_2、700_3にブロードキャストし、次のステップに進む。
が成り立たない場合は、第4の不正検知部704_4はabortの文字列を各サーバ装置700_1、700_2、700_3にブロードキャストし、プロトコルを中断する。
が成り立たない場合は、第4の不正検知部704_4はabortの文字列を各サーバ装置700_1、700_2、700_3にブロードキャストし、プロトコルを中断する。
第1の再分散値計算部702_1は、
を第1のデータ記憶部708_1から取り出す。次に、第1の再分散値計算部702_1は、
を、第4の不正検知部704_4に送信する。第4の不正検知部704_4は、第4のデータ記憶部708_4に記憶されている
を取出し、
が成立するかを検証する。
を第1のデータ記憶部708_1から取り出す。次に、第1の再分散値計算部702_1は、
を、第4の不正検知部704_4に送信する。第4の不正検知部704_4は、第4のデータ記憶部708_4に記憶されている
を取出し、
が成立するかを検証する。
成立した場合、第4の不正検知部704_4は、successの文字列を各サーバ装置700_1、700_2、700_3、700_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部704_4は、abortの文字列を各サーバ装置700_1、700_2、700_3、700_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列に行う場合、
、
に関しては、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
、
に関しては、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップG7)
第3の不正検知部704_3は、
を第3のデータ記憶部708_3から取出し、
を第1の不正検知部704_1に送信する。第1の不正検知部704_1は、第1のデータ記憶部708_1から
を取出し、
が成り立つか、検証する。
が成り立つ場合は、第1の不正検知部704_1はsuccessの文字列を各サーバ装置700_2、700_3、700_4にブロードキャストし、次のステップに進む。
が成り立たない場合は、第1の不正検知部704_1はabortの文字列を各サーバ装置700_2、700_3、700_4にブロードキャストし、プロトコルを中断する。
第3の不正検知部704_3は、
を第3のデータ記憶部708_3から取出し、
を第1の不正検知部704_1に送信する。第1の不正検知部704_1は、第1のデータ記憶部708_1から
を取出し、
が成り立つか、検証する。
が成り立つ場合は、第1の不正検知部704_1はsuccessの文字列を各サーバ装置700_2、700_3、700_4にブロードキャストし、次のステップに進む。
が成り立たない場合は、第1の不正検知部704_1はabortの文字列を各サーバ装置700_2、700_3、700_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列に行う場合、
に関しては、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
に関しては、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップG8)
各i番目の不正検知部704_iは、上記ステップG5の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置700_1、700_2、700_3、700_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置700_1、700_2、700_3、700_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップG8は上記ステップG6、G7と並列に実行することが可能である。
各i番目の不正検知部704_iは、上記ステップG5の
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置700_1、700_2、700_3、700_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置700_1、700_2、700_3、700_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップG8は上記ステップG6、G7と並列に実行することが可能である。
以上、説明した本発明の第7の実施形態においては、第1乃至第6の実施形態における効果と同じ効果を奏する。また、ビット分解の理論的な通信コストについて、第7の実施形態の方が他の実施形態よりも、効率が良い。第7の実施形態では、ビット分解に関して
の計算を1回行うことで実現できる。リップルキャリー型のnビット加算器を用いて不正検知に関する処理を並列に行った場合、第5の実施形態では、ビット分解の通信コストとして、8n-5ビット・n+1ラウンドを要する。これより、第7の実施形態の方が他の実施形態よりもビット分解の通信コストの点で効率が良い。なお、本願開示の実施はリップルキャリー型のnビット加算器に限定されない。キャリールックアヘッド型やパラレルプリフィックス型などのnビット加算器を用いても良い。
の計算を1回行うことで実現できる。リップルキャリー型のnビット加算器を用いて不正検知に関する処理を並列に行った場合、第5の実施形態では、ビット分解の通信コストとして、8n-5ビット・n+1ラウンドを要する。これより、第7の実施形態の方が他の実施形態よりもビット分解の通信コストの点で効率が良い。なお、本願開示の実施はリップルキャリー型のnビット加算器に限定されない。キャリールックアヘッド型やパラレルプリフィックス型などのnビット加算器を用いても良い。
[ハードウェア構成]
続いて、秘密計算システムをなす秘密計算サーバのハードウェア構成について説明する。
続いて、秘密計算システムをなす秘密計算サーバのハードウェア構成について説明する。
図25は、第iの秘密計算サーバ装置100_iのハードウェア構成の一例を示す図である。第iの秘密計算サーバ装置100_iは、所謂、情報処理装置(コンピュータ)により実現され、図25に例示する構成を備える。例えば、第iの秘密計算サーバ装置100_iは、内部バスにより相互に接続される、CPU(Central Processing Unit)21、メモリ22、入出力インターフェイス23、通信手段であるNIC(Network Interface Card)24等を備える。
但し、図25に示す構成は、第iの秘密計算サーバ装置100_iのハードウェア構成を限定する趣旨ではない。第iの秘密計算サーバ装置100_iは、図示しないハードウェアを含んでもよい。第iの秘密計算サーバ装置100_iに含まれるCPU等の数も図25の例示に限定する趣旨ではなく、例えば、複数のCPU21が第iの秘密計算サーバ装置100_iに含まれていてもよい。
メモリ22は、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置(ハードディスク等)等である。
入出力インターフェイス23は、図示しない入出力装置のインターフェイスである。入出力装置には、例えば、表示装置、操作デバイス等が含まれる。表示装置は、例えば、液晶ディスプレイ等である。操作デバイスは、例えば、キーボードやマウス等である。
第iの秘密計算サーバ装置100_iの機能は、上述の処理モジュールにより実現される。当該処理モジュールは、例えば、メモリ22に格納されたプログラムをCPU21が実行することで実現される。また、そのプログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。即ち、上記処理モジュールが行う機能は、何らかのハードウェア、或いはハードウェアを利用して実行されるソフトウェアにより実現できればよい。
[変形例]
なお、第1乃至第7の実施形態にて説明した秘密計算検証システムの構成及び動作は例示であって、種々の変形が可能である。例えば、上記実施形態では、4つの秘密計算サーバ装置100_1~100_4が対等である場合を説明したが、1つのサーバ装置を代表サーバとして定めてもよい。この場合、代表サーバが秘密計算に用いるデータの入出力(入力データの分散及び配布、計算結果の復号)を制御してもよい。
なお、第1乃至第7の実施形態にて説明した秘密計算検証システムの構成及び動作は例示であって、種々の変形が可能である。例えば、上記実施形態では、4つの秘密計算サーバ装置100_1~100_4が対等である場合を説明したが、1つのサーバ装置を代表サーバとして定めてもよい。この場合、代表サーバが秘密計算に用いるデータの入出力(入力データの分散及び配布、計算結果の復号)を制御してもよい。
上述の説明で用いたフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態は、内容が相反しない範囲で組み合わせることができる。即ち、上記各実施形態の任意の組み合わせが更なる実施形態として含まれる。
上述の説明で用いたフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態は、内容が相反しない範囲で組み合わせることができる。即ち、上記各実施形態の任意の組み合わせが更なる実施形態として含まれる。
上記の説明により、本発明の産業上の利用可能性は明らかであるが、本発明は、たとえば、
の環上で実行される2-out-of-4複製型秘密分散を用いた不正検知可能な4者間MPCにて、生体テンプレート照合や統計演算などの混合回路の計算を効率よく実現する場合に好適である。また、本発明では加算器を計算する際に用いる回路を変更することで、通信量と通信回数についてトレードオフが成立するような異なる型変換を実現できる。これにより、通信環境に応じて、効率よく型変換を行える。よって、型変換をサブルーチンとして用いる混合回路を上記4者間MPCにて実行する際に、通信環境に応じて、効率よく実行できる。
の環上で実行される2-out-of-4複製型秘密分散を用いた不正検知可能な4者間MPCにて、生体テンプレート照合や統計演算などの混合回路の計算を効率よく実現する場合に好適である。また、本発明では加算器を計算する際に用いる回路を変更することで、通信量と通信回数についてトレードオフが成立するような異なる型変換を実現できる。これにより、通信環境に応じて、効率よく型変換を行える。よって、型変換をサブルーチンとして用いる混合回路を上記4者間MPCにて実行する際に、通信環境に応じて、効率よく実行できる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
上述の第1の視点に係る情報処理装置のとおりである。
[付記2]
前記生成された乱数に関するデータを用いて不正行為者の有無を検知する、不正検知部をさらに備える、好ましくは付記1に記載の情報処理装置。
[付記3]
前記型変換されたシェアについての論理演算を行う論理演算部をさらに備え、
前記論理演算部は、他の装置と互いに通信を行い前記型変換されたシェアの加算処理を実行し、
前記不正検知部は、前記型変換されたシェアの加算処理のために送受信されたデータを用いて不正行為者の有無を検知する、好ましくは付記2に記載の情報処理装置。
[付記4]
前記論理演算部は、他の装置と互いに通信を行い前記型変換されたシェアのキャリー計算処理を実行し、
前記不正検知部は、前記型変換されたシェアのキャリー計算処理のために送受信されたデータを用いて不正行為者の有無を検知する、好ましくは付記3に記載の情報処理装置。
[付記5]
前記キャリー計算処理は、第1要素及び前記第1要素に続く第2要素に分離可能であり、
前記論理演算部は、
前記第1要素を他の装置と非通信により計算すると共に、前記シェアの再分散値の計算に必要な通信と前記第2要素のキャリー計算処理に必要な通信を並列に行う、好ましくは付記4に記載の情報処理装置。
[付記6]
シェアをマスクするためのマスク値を計算すると共に、前記計算されたマスク値によりマスクされたシェアを他の装置に送信する、マスク値計算部をさらに備え、
前記シェア構成部は、前記送信されたマスク値を用いて前記型変換用のシェアを構成する、好ましくは付記1乃至5のいずれか一に記載の情報処理装置。
[付記7]
前記再分散値計算部は、値xの再分散値を計算する際、値xをx1、x2、x3の排他的論理和とする場合に前記x1乃至x3のうち2つの値を等しくするように乱数を生成する、好ましくは付記1乃至6のいずれか一に記載の情報処理装置。
[付記8]
前記再分散値計算部は、値x’の再分散値を計算する際、値x’をx1’、x2’、x3’の排他的論理和とする場合、x1’を乱数rに等しく、x2’をゼロ、x3’を乱数rと値xの排他的論理和とする、好ましくは付記7に記載の情報処理装置。
[付記9]
前記再分散値計算部は、疑似ランダム関数に前記シードと他の装置と共有されるカウンタ値を入力し、前記シードを用いた乱数を生成する、好ましくは付記1乃至8のいずれか一に記載の情報処理装置。
[付記10]
前記型変換用のシェアは、ビット分解用のシェア又は環合成用のシェアである、好ましくは付記1乃至9のいずれか一に記載の情報処理装置。
[付記11]
上述の第2の視点に係る秘密計算方法のとおりである。
[付記12]
上述の第3の視点に係るプログラムのとおりである。
なお、付記11の形態及び付記12の形態は、付記1の形態と同様に、付記2の形態~付記10の形態に展開することが可能である。
[付記1]
上述の第1の視点に係る情報処理装置のとおりである。
[付記2]
前記生成された乱数に関するデータを用いて不正行為者の有無を検知する、不正検知部をさらに備える、好ましくは付記1に記載の情報処理装置。
[付記3]
前記型変換されたシェアについての論理演算を行う論理演算部をさらに備え、
前記論理演算部は、他の装置と互いに通信を行い前記型変換されたシェアの加算処理を実行し、
前記不正検知部は、前記型変換されたシェアの加算処理のために送受信されたデータを用いて不正行為者の有無を検知する、好ましくは付記2に記載の情報処理装置。
[付記4]
前記論理演算部は、他の装置と互いに通信を行い前記型変換されたシェアのキャリー計算処理を実行し、
前記不正検知部は、前記型変換されたシェアのキャリー計算処理のために送受信されたデータを用いて不正行為者の有無を検知する、好ましくは付記3に記載の情報処理装置。
[付記5]
前記キャリー計算処理は、第1要素及び前記第1要素に続く第2要素に分離可能であり、
前記論理演算部は、
前記第1要素を他の装置と非通信により計算すると共に、前記シェアの再分散値の計算に必要な通信と前記第2要素のキャリー計算処理に必要な通信を並列に行う、好ましくは付記4に記載の情報処理装置。
[付記6]
シェアをマスクするためのマスク値を計算すると共に、前記計算されたマスク値によりマスクされたシェアを他の装置に送信する、マスク値計算部をさらに備え、
前記シェア構成部は、前記送信されたマスク値を用いて前記型変換用のシェアを構成する、好ましくは付記1乃至5のいずれか一に記載の情報処理装置。
[付記7]
前記再分散値計算部は、値xの再分散値を計算する際、値xをx1、x2、x3の排他的論理和とする場合に前記x1乃至x3のうち2つの値を等しくするように乱数を生成する、好ましくは付記1乃至6のいずれか一に記載の情報処理装置。
[付記8]
前記再分散値計算部は、値x’の再分散値を計算する際、値x’をx1’、x2’、x3’の排他的論理和とする場合、x1’を乱数rに等しく、x2’をゼロ、x3’を乱数rと値xの排他的論理和とする、好ましくは付記7に記載の情報処理装置。
[付記9]
前記再分散値計算部は、疑似ランダム関数に前記シードと他の装置と共有されるカウンタ値を入力し、前記シードを用いた乱数を生成する、好ましくは付記1乃至8のいずれか一に記載の情報処理装置。
[付記10]
前記型変換用のシェアは、ビット分解用のシェア又は環合成用のシェアである、好ましくは付記1乃至9のいずれか一に記載の情報処理装置。
[付記11]
上述の第2の視点に係る秘密計算方法のとおりである。
[付記12]
上述の第3の視点に係るプログラムのとおりである。
なお、付記11の形態及び付記12の形態は、付記1の形態と同様に、付記2の形態~付記10の形態に展開することが可能である。
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
10 情報処理装置
11、107_1、207_1、307_1、407_1、507_1、607_1、707_1、107_i~707_i 基本演算シード記憶部
12、102_1、202_1、302_1、402_1、502_1、602_1、702_1、102_i~702_i 再分散値計算部
13、103_1、203_1、303_1、403_1、503_1、603_1、703_1、103_i~703_i シェア構成部
21 CPU(Central Processing Unit)
22 メモリ
23 入出力インターフェイス
24 NIC(Network Interface Card)
100_1~100_4、200_1~200_4、300_1~300_4、400_1~400_4、500_1~500_4、600_1~600_4、700_1~700_4、100_i~700_i 秘密計算サーバ装置
501_1、601_1、701_1、501_i~501_i マスク値計算部
104_1、204_1、304_1、404_1、504_1、604_1、704_1、104_i~704_i 不正検知部
105_1、205_1、305_1、405_1、505_1、605_1、705_1、105_i~705_i 算術演算部
106_1、206_1、306_1、406_1、506_1、606_1、706_1、106_i~706_i 論理演算部
108_1、208_1、308_1、408_1、508_1、608_1、708_1、108_i~708_i データ記憶部
11、107_1、207_1、307_1、407_1、507_1、607_1、707_1、107_i~707_i 基本演算シード記憶部
12、102_1、202_1、302_1、402_1、502_1、602_1、702_1、102_i~702_i 再分散値計算部
13、103_1、203_1、303_1、403_1、503_1、603_1、703_1、103_i~703_i シェア構成部
21 CPU(Central Processing Unit)
22 メモリ
23 入出力インターフェイス
24 NIC(Network Interface Card)
100_1~100_4、200_1~200_4、300_1~300_4、400_1~400_4、500_1~500_4、600_1~600_4、700_1~700_4、100_i~700_i 秘密計算サーバ装置
501_1、601_1、701_1、501_i~501_i マスク値計算部
104_1、204_1、304_1、404_1、504_1、604_1、704_1、104_i~704_i 不正検知部
105_1、205_1、305_1、405_1、505_1、605_1、705_1、105_i~705_i 算術演算部
106_1、206_1、306_1、406_1、506_1、606_1、706_1、106_i~706_i 論理演算部
108_1、208_1、308_1、408_1、508_1、608_1、708_1、108_i~708_i データ記憶部
Claims (10)
- シェアについての演算を行う際の乱数を生成するためのシードを格納する、基本演算シード記憶部と、
前記シードを用いて乱数を生成し、前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信する、再分散値計算部と、
他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成する、シェア構成部と、
を備える、情報処理装置。 - 前記生成された乱数に関するデータを用いて不正行為者の有無を検知する、不正検知部をさらに備える、請求項1に記載の情報処理装置。
- 前記型変換されたシェアについての論理演算を行う論理演算部をさらに備え、
前記論理演算部は、他の装置と互いに通信を行い前記型変換されたシェアの加算処理を実行し、
前記不正検知部は、前記型変換されたシェアの加算処理のために送受信されたデータを用いて不正行為者の有無を検知する、請求項2に記載の情報処理装置。 - 前記論理演算部は、他の装置と互いに通信を行い前記型変換されたシェアのキャリー計算処理を実行し、
前記不正検知部は、前記型変換されたシェアのキャリー計算処理のために送受信されたデータを用いて不正行為者の有無を検知する、請求項3に記載の情報処理装置。 - 前記キャリー計算処理は、第1要素及び前記第1要素に続く第2要素に分離可能であり、
前記論理演算部は、
前記第1要素を他の装置と非通信により計算すると共に、前記シェアの再分散値の計算に必要な通信と前記第2要素のキャリー計算処理に必要な通信を並列に行う、請求項4に記載の情報処理装置。 - シェアをマスクするためのマスク値を計算すると共に、前記計算されたマスク値によりマスクされたシェアを他の装置に送信する、マスク値計算部をさらに備え、
前記シェア構成部は、前記送信されたマスク値を用いて前記型変換用のシェアを構成する、請求項1乃至5のいずれか一項に記載の情報処理装置。 - 前記再分散値計算部は、値xの再分散値を計算する際、値xをx1、x2、x3の排他的論理和とする場合に前記x1乃至x3のうち2つの値を等しくするように乱数を生成する、請求項1乃至6のいずれか一項に記載の情報処理装置。
- 前記再分散値計算部は、値x’の再分散値を計算する際、値x’をx1’、x2’、x3’の排他的論理和とする場合、x1’を乱数rに等しく、x2’をゼロ、x3’を乱数rと値xの排他的論理和とする、請求項7に記載の情報処理装置。
- シードを用いて乱数を生成するステップと、
前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信するステップと、
他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成するステップと、
を含む秘密計算方法。 - シードを用いて乱数を生成する処理と、
前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信する処理と、
他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成する処理と、
をコンピュータに実行させるプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020571932A JP7259875B2 (ja) | 2019-02-12 | 2019-02-12 | 情報処理装置、秘密計算方法及びプログラム |
US17/429,780 US20220129567A1 (en) | 2019-02-12 | 2019-02-12 | Information processing apparatus, secure computation method, and program |
PCT/JP2019/004793 WO2020165931A1 (ja) | 2019-02-12 | 2019-02-12 | 情報処理装置、秘密計算方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/004793 WO2020165931A1 (ja) | 2019-02-12 | 2019-02-12 | 情報処理装置、秘密計算方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020165931A1 true WO2020165931A1 (ja) | 2020-08-20 |
Family
ID=72044634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2019/004793 WO2020165931A1 (ja) | 2019-02-12 | 2019-02-12 | 情報処理装置、秘密計算方法及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220129567A1 (ja) |
JP (1) | JP7259875B2 (ja) |
WO (1) | WO2020165931A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463332A (zh) * | 2020-12-01 | 2021-03-09 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、密文计算系统和用于数据处理的装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115913525A (zh) * | 2022-04-25 | 2023-04-04 | 上海紫先科技有限公司 | 一种用硬件芯片实现安全多方计算的方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014007311A1 (ja) * | 2012-07-05 | 2014-01-09 | 日本電信電話株式会社 | 秘密分散システム、データ分散装置、分散データ変換装置、秘密分散方法、およびプログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201040743A (en) * | 2009-05-08 | 2010-11-16 | Academia Sinica | Method of dual secretive sub-holding format applied in effective multi-party computation |
WO2015107952A1 (ja) * | 2014-01-17 | 2015-07-23 | 日本電信電話株式会社 | 秘密計算方法、秘密計算システム、ランダム置換装置及びプログラム |
US11222138B2 (en) * | 2018-05-29 | 2022-01-11 | Visa International Service Association | Privacy-preserving machine learning in the three-server model |
CN112805769B (zh) * | 2018-10-04 | 2023-11-07 | 日本电信电话株式会社 | 秘密s型函数计算系统、装置、方法及记录介质 |
US20220141000A1 (en) * | 2019-02-12 | 2022-05-05 | Nec Corporation | Information processing apparatus, secure computation method, and program |
-
2019
- 2019-02-12 JP JP2020571932A patent/JP7259875B2/ja active Active
- 2019-02-12 WO PCT/JP2019/004793 patent/WO2020165931A1/ja active Application Filing
- 2019-02-12 US US17/429,780 patent/US20220129567A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014007311A1 (ja) * | 2012-07-05 | 2014-01-09 | 日本電信電話株式会社 | 秘密分散システム、データ分散装置、分散データ変換装置、秘密分散方法、およびプログラム |
Non-Patent Citations (3)
Title |
---|
ARAKI, TOSHINORI ET AL.: "Generalizing the SPDZ Compiler For Other Protocols", REPORT 2018/762, October 2018 (2018-10-01), pages 1 - 33, XP058421169, Retrieved from the Internet <URL:https://eprint.iacr.org/2018/762/20181002:054546> [retrieved on 20190426] * |
MOHASSEL, PAYMAN ET AL.: "ABY3: A Mixed Protocol Framework for Machine Learning", REPORT 2018/403, September 2018 (2018-09-01), pages 1 - 40, XP061027247, Retrieved from the Internet <URL:https://eprint.iacr.org/2018/403/20180907:215141> [retrieved on 20190426] * |
OHARA, KAZUMA ET AL.: "Multiparty Computation Capable of Detecting Impropriety with Intermingled Loops of Different Sizes", PROCEEDINGS OF THE 2018 SYMPOSIUM ON CRYPTOGRAPHY AND INFORMATION SECURITY (SCIS 2018) .), 23 January 2018 (2018-01-23), pages 1 - 8 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463332A (zh) * | 2020-12-01 | 2021-03-09 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、密文计算系统和用于数据处理的装置 |
Also Published As
Publication number | Publication date |
---|---|
US20220129567A1 (en) | 2022-04-28 |
JPWO2020165931A1 (ja) | 2021-12-09 |
JP7259875B2 (ja) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110557245B (zh) | 用于spdz的容错和安全多方计算的方法和系统 | |
US11606203B2 (en) | Method for faster secure multiparty inner product with SPDZ | |
Wang et al. | Cryptanalysis of a symmetric fully homomorphic encryption scheme | |
JP7259876B2 (ja) | 情報処理装置、秘密計算方法及びプログラム | |
EP2701337B1 (en) | Secret sharing method and system | |
RU2534944C2 (ru) | Способ обеспечения безопасности связи в сети, используемые для этого устройство связи, сеть и компьютерная программа | |
US7995764B2 (en) | Sharing a secret using hyperplanes over GF(2m) | |
WO2017099117A1 (ja) | 事前計算装置、方法、およびコンピュータ読取可能な記録媒体、並びにベクトル乗算装置、および方法 | |
CN112287377A (zh) | 基于联邦学习的模型训练方法、计算机设备及存储介质 | |
Akavia et al. | Linear-regression on packed encrypted data in the two-server model | |
Erkin et al. | Privacy-preserving distributed clustering | |
Hussam | New lightweight hybrid encryption algorithm for cloud computing (LMGHA-128bit) by using new 5-D hyperchaos system | |
WO2020165931A1 (ja) | 情報処理装置、秘密計算方法及びプログラム | |
Andersen et al. | Privacy preserving health data processing | |
Shin et al. | Securing a local training dataset size in federated learning | |
Artuğer et al. | A new post-processing approach for improvement of nonlinearity property in substitution boxes | |
WO2017038761A1 (ja) | 秘密計算システム、秘密計算装置、および、秘密計算方法 | |
Stănică et al. | Encryption algorithm using linear hybrid cellular automaton | |
Zhou et al. | PVOPM: Verifiable privacy-preserving pattern matching with efficient outsourcing in the malicious setting | |
US20230046000A1 (en) | Secure computation system, secure computation server apparatus, securecomputation method, and secure computation program | |
Ping et al. | Secure outsourcing of modular inverses and scalar multiplications on elliptic curves | |
US11336429B2 (en) | Method for protecting a source of entropy used in countermeasures securing a white-box cryptographic algorithm | |
Zhang et al. | Secure Outsourcing Evaluation for Sparse Decision Trees | |
CN115422581B (zh) | 一种数据处理方法及装置 | |
Basilakis et al. | A General Framework for Privacy-preserving Computation on Cloud Environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19915160 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2020571932 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 19915160 Country of ref document: EP Kind code of ref document: A1 |