WO2020165931A1 - 情報処理装置、秘密計算方法及びプログラム - Google Patents

情報処理装置、秘密計算方法及びプログラム Download PDF

Info

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
Application number
PCT/JP2019/004793
Other languages
English (en)
French (fr)
Inventor
光 土田
俊則 荒木
一真 大原
拓磨 天田
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to JP2020571932A priority Critical patent/JP7259875B2/ja
Priority to US17/429,780 priority patent/US20220129567A1/en
Priority to PCT/JP2019/004793 priority patent/WO2020165931A1/ja
Publication of WO2020165931A1 publication Critical patent/WO2020165931A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure 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のときの 
Figure JPOXMLDOC01-appb-I000001
の値のシェアを
Figure JPOXMLDOC01-appb-I000002
、n=1
のときの
Figure JPOXMLDOC01-appb-I000003
の値のシェアを
Figure JPOXMLDOC01-appb-I000004
として表記する。
 ここで、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は、
Figure JPOXMLDOC01-appb-I000005
上での算術演算を実現する。非特許文献1に開示せれたMPCは、
Figure JPOXMLDOC01-appb-I000006
上での乗算1回あたり、3nビットの通信コストを要する。つまり、参加者あたりnビットの通信コストで乗算を実現できる。
 非特許文献2は、過半数が正直者で、かつ、攻撃者がマリシャス攻撃者である場合の3者間MPCを開示する。これは、非特許文献1の方式をベースとした方式である。非特許文献2に開示されたMPCは、非特許文献1に開示されたMPCとは異なり、マリシャス攻撃者の存在を許容する。非特許文献2に開示されたMPCではマリシャス攻撃者による不正を、確率的に検知することが可能となる。検知確率を上げるほど、つまり、不正が成功する確率を下げようとするほど、通信コストが増加することとなる。たとえば、不正が成功する確率を2-40とした場合、非特許文献2では、
Figure JPOXMLDOC01-appb-I000007
上での乗算1回あたり、21nビットの通信コストを要する。つまり、参加者あたり7nビットの通信コストで不正検知機能付きの乗算を実現できる。
 非特許文献3では、非特許文献1におけるシェアの型変換の方法が提案されている。シェアの型変換とは、たとえば、
Figure JPOXMLDOC01-appb-I000008
から
Figure JPOXMLDOC01-appb-I000009
のシェア列を得ることが挙げられる。この型変換をビット分解と呼称する。また、異なる型変換の例として、
Figure JPOXMLDOC01-appb-I000010
から、
Figure JPOXMLDOC01-appb-I000011
を得ることが挙げられる。この型変換を環合成と呼称する。
 非特許文献3には、たとえば、ビット分解に6n-6ビットの通信コストを要することが開示されている。このような処理は、算術回路や論理回路が混在した混合回路に対し、効率よくMPCを実行したい場合に重要な処理となる。たとえば、非特許文献2の方式を用いて非特許文献3で提案されたビット分解を実行した場合、マリシャス攻撃者の存在を許容できるが、通信コストは42n―42ビットとなる。
 多くの場合、MPCにおいて参加者が少なく、過半数が正直者の場合の方が、通信コストは低くなる。このため、前述のような3者間MPCが計算効率の良い方式であると考えられてきた。しかし、想定する攻撃者がマリシャス攻撃者の場合、計算効率は4者間MPCの方が良い場合がある。
 たとえば、非特許文献4は、t<n/3、つまりt=1で、かつ、攻撃者がマリシャス攻撃者である場合の4者間MPCを開示する。非特許文献4に開示されたMPCは、
Figure JPOXMLDOC01-appb-I000012
上での乗算1回あたり、6nビットの通信コストを要する。つまり、参加者あたり1.5nビットの通信コストで乗算を実現できる。しかし、非特許文献4では方式固有の型変換が提案されていない。このため、たとえば、非特許文献5に開示されたようなビット分解を用いる必要がある。
 非特許文献5で提案された方式は、環上でビット分解を行う方式のため、
Figure JPOXMLDOC01-appb-I000013
から
Figure JPOXMLDOC01-appb-I000014

のシェア列を計算するものとなる。このため、非特許文献5によるビット分解の結果を
Figure JPOXMLDOC01-appb-I000015
上での計算に用いることはできず、混合回路を計算する際には効率が悪い。
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であれば、
Figure JPOXMLDOC01-appb-I000016
上での乗算1回あたり、5nビットの通信コストで実現できる。つまり、参加者あたり1.25nビットの通信コストで乗算を実現できる。これは2-out-of-4複製型秘密分散を用いた方法である。
 各参加者をP_i(i=1、…、4)としたとき、
Figure JPOXMLDOC01-appb-I000017
のシェアを
Figure JPOXMLDOC01-appb-I000018
として、
Figure JPOXMLDOC01-appb-I000019
をP_iのシェアとする。また、
Figure JPOXMLDOC01-appb-I000020
のシェアを
Figure JPOXMLDOC01-appb-I000021
として、
Figure JPOXMLDOC01-appb-I000022
をP_iのシェアとする。このとき、
Figure JPOXMLDOC01-appb-I000023
に対して、
Figure JPOXMLDOC01-appb-I000024
とすると、
Figure JPOXMLDOC01-appb-I000025

とする。また、
Figure JPOXMLDOC01-appb-I000026
に対して、
Figure JPOXMLDOC01-appb-I000027
とすると、
Figure JPOXMLDOC01-appb-I000028
とする。
 なお、
Figure JPOXMLDOC01-appb-I000029
とし、疑似ランダム関数
Figure JPOXMLDOC01-appb-I000030

とする。また、
Figure JPOXMLDOC01-appb-I000031
を文字列連結演算子とする。ここで、P_1は
Figure JPOXMLDOC01-appb-I000032
を、P_2は
Figure JPOXMLDOC01-appb-I000033
を、P_3は
Figure JPOXMLDOC01-appb-I000034
を、P_4は
Figure JPOXMLDOC01-appb-I000035
を、それぞれ有する。
 なお、
Figure JPOXMLDOC01-appb-I000036
に関して、参加者の内、ある一人の参加者は
Figure JPOXMLDOC01-appb-I000037
の出力を計算できず、他の三人の参加者は
Figure JPOXMLDOC01-appb-I000038
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure JPOXMLDOC01-appb-I000039
の扱いは特に制限されない。本書での
Figure JPOXMLDOC01-appb-I000040
はあくまでも一例である。
 ここで、
Figure JPOXMLDOC01-appb-I000041

Figure JPOXMLDOC01-appb-I000042
上のシェアに関する加法演算子、減法演算子、乗法演算子とする。なお、これらの演算子は
Figure JPOXMLDOC01-appb-I000043
上の要素に対する二項演算子としての加法演算子、減法演算子、乗法演算子としても以降用いることに注意されたい。
Figure JPOXMLDOC01-appb-I000044
上のシェアに関する加法演算子、乗法演算子について、
Figure JPOXMLDOC01-appb-I000045
としたとき、以下の4つの式が成り立つ。
Figure JPOXMLDOC01-appb-I000046

Figure JPOXMLDOC01-appb-I000047

Figure JPOXMLDOC01-appb-I000048

Figure JPOXMLDOC01-appb-I000049
 また、
Figure JPOXMLDOC01-appb-I000050

Figure JPOXMLDOC01-appb-I000051
上のシェアに関する排他的論理和、論理積とする。なお、これらの演算子は
Figure JPOXMLDOC01-appb-I000052
上の要素に対する二項演算子としての排他的論理和、論理積としても以降用いることに注意されたい。
Figure JPOXMLDOC01-appb-I000053
上のシェアに関する排他的論理和、論理積について、
Figure JPOXMLDOC01-appb-I000054
としたとき、以下の4つの式が成り立つ。
Figure JPOXMLDOC01-appb-I000055

Figure JPOXMLDOC01-appb-I000056

Figure JPOXMLDOC01-appb-I000057

Figure JPOXMLDOC01-appb-I000058
 たとえば、前述の2-out-of-4複製型秘密分散を用いた4者間MPCでは、
Figure JPOXMLDOC01-appb-I000059

Figure JPOXMLDOC01-appb-I000060

Figure JPOXMLDOC01-appb-I000061

Figure JPOXMLDOC01-appb-I000062

Figure JPOXMLDOC01-appb-I000063
となり
Figure JPOXMLDOC01-appb-I000064
から
Figure JPOXMLDOC01-appb-I000065
が計算できる。また、
Figure JPOXMLDOC01-appb-I000066
としたとき、
Figure JPOXMLDOC01-appb-I000067
に関しても、以下の手順で
Figure JPOXMLDOC01-appb-I000068
を用いて計算できる。
1.各参加者(P_1~P_3)のそれぞれは以下の計算を行う。
P_1:
Figure JPOXMLDOC01-appb-I000069

Figure JPOXMLDOC01-appb-I000070

Figure JPOXMLDOC01-appb-I000071


Figure JPOXMLDOC01-appb-I000072
P_2:
Figure JPOXMLDOC01-appb-I000073

Figure JPOXMLDOC01-appb-I000074

Figure JPOXMLDOC01-appb-I000075


Figure JPOXMLDOC01-appb-I000076
P_3:
Figure JPOXMLDOC01-appb-I000077

Figure JPOXMLDOC01-appb-I000078

Figure JPOXMLDOC01-appb-I000079


Figure JPOXMLDOC01-appb-I000080
2.上記計算が終了すると、各参加者は以下の通信を行う。
・P_1は
Figure JPOXMLDOC01-appb-I000081
をP_3に送信する。
・P_2は
Figure JPOXMLDOC01-appb-I000082
をP_1に送信する。
・P_3は
Figure JPOXMLDOC01-appb-I000083
をP_2に送信する。
・P_1は
Figure JPOXMLDOC01-appb-I000084
をP_4に送信する。
・P_2は
Figure JPOXMLDOC01-appb-I000085
をP_4に送信する。
 3.各参加者は、上記通信により得た情報を用いて以下の計算により
Figure JPOXMLDOC01-appb-I000086
を得る。
Figure JPOXMLDOC01-appb-I000087

Figure JPOXMLDOC01-appb-I000088

Figure JPOXMLDOC01-appb-I000089

Figure JPOXMLDOC01-appb-I000090
 なお、P_4のシェアは以下のようにして、計算する。
P_4:
Figure JPOXMLDOC01-appb-I000091


Figure JPOXMLDOC01-appb-I000092

 シェアと定数倍算、および定数加算については当業者にとって自明なので説明を割愛する。また、
Figure JPOXMLDOC01-appb-I000093
上のシェアに関する演算についても、
Figure JPOXMLDOC01-appb-I000094
上のシェアに関する演算と同様に実行できるので説明を割愛する。このとき、参加者中にマリシャス攻撃者が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)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
 本発明乃至開示の各視点によれば、2-out-of-4複製型秘密分散を用いた4者間MPCにて混合回路を計算する際、論理回路の計算部分も含め効率よく計算可能な型変換を実行することに寄与する情報処理装置、秘密計算方法及びプログラムが提供される。
一実施形態の概要を説明するための図である。 第1の実施形態における型変換システムの機能構成例を示すブロック図である。 第1の実施形態によるサーバ装置の機能構成を示すブロック図である。 第1の実施形態におけるビット分解についての型変換システムの動作例を示すフローチャートである。 第1の実施形態における環合成についての型変換システムの動作例を示すフローチャートである。 第2の実施形態における型変換システムの機能構成例を示すブロック図である。 第2の実施形態によるサーバ装置の機能構成を示すブロック図である。 第2の実施形態における環合成についての型変換システムの動作例を示すフローチャートである。 第3の実施形態における型変換システムの機能構成例を示すブロック図である。 第3の実施形態によるサーバ装置の機能構成を示すブロック図である。 第3の実施形態におけるビット分解についての型変換システムの動作例を示すフローチャートである。 第3の実施形態における環合成についての型変換システムの動作例を示すフローチャートである。 第4の実施形態における型変換システムの機能構成例を示すブロック図である。 第4の実施形態によるサーバ装置の機能構成を示すブロック図である。 第4の実施形態における環合成についての型変換システムの動作例を示すフローチャートである。 第5の実施形態における型変換システムの機能構成例を示すブロック図である。 第5の実施形態によるサーバ装置の機能構成を示すブロック図である。 第5の実施形態におけるビット分解についての型変換システムの動作例を示すフローチャートである。 第6の実施形態における型変換システムの機能構成例を示すブロック図である。 第6の実施形態によるサーバ装置の機能構成を示すブロック図である。 第6の実施形態におけるビット分解についての型変換システムの動作例を示すフローチャートである。 第7の実施形態における型変換システムの機能構成例を示すブロック図である。 第7の実施形態によるサーバ装置の機能構成を示すブロック図である。 第7の実施形態におけるビット分解についての型変換システムの動作例を示すフローチャートである。 秘密計算サーバ装置のハードウェア構成の一例を示す図である。
 初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。さらに、本願開示に示す回路図、ブロック図、内部構成図、接続図などにおいて、明示は省略するが、入力ポート及び出力ポートが各接続線の入力端及び出力端のそれぞれに存在する。入出力インターフェイスも同様である。
 一実施形態に係る情報処理装置10は、基本演算シード記憶部11と、再分散値計算部12と、シェア構成部13と、を備える(図1参照)。基本演算シード記憶部11は、シェアについての演算を行う際の乱数を生成するためのシードを格納する。再分散値計算部12は、シードを用いて乱数を生成し、生成された乱数によりシェアの再分散値を計算すると共に、生成された乱数に関するデータを他の装置に送信する。シェア構成部13は、他の装置から受信した生成された乱数に関するデータ及びシェアの再分散値を用いて型変換用のシェアを構成する。
 ここで、4者MPCにおいてもビット分解や環合成は効率よく秘密計算を実行するためには有益な型変換であるが、各装置が保有するシェアの形式が不統一であるとビット分解等の恩恵が得られない。そこで、上記情報処理装置10は、各装置が保有するシェアの形式を統一しビット分解等の型変換が容易となるようにシェアを再構成する。
 以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
[第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の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I000095
、あるいは第1乃至第4のデータ記憶部108_1~108_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I000096
、あるいは第1乃至第4のサーバ装置100_1~100_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I000097

に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I000098
の値を知られることなく、
Figure JPOXMLDOC01-appb-I000099
を計算し、第1乃至第4のデータ記憶部108_1~108_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置100_1~100_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置100_1~100_4ではない外部にシェアが送信され、復元されてもよい。
 また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置100_1~100_4の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I000100
、あるいは第1乃至第4のデータ記憶部109_1~109_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I000101
、あるいは第1乃至第4のサーバ装置100_1~100_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I000102
に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I000103
の値を知られることなく、
Figure JPOXMLDOC01-appb-I000104
を計算し、第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に示すビット分解に関するフローチャートを説明する。
(ステップA1)
各基本演算シード記憶部107_1、107_2、107_3、107_4は、それぞれ
Figure JPOXMLDOC01-appb-I000105

Figure JPOXMLDOC01-appb-I000106

Figure JPOXMLDOC01-appb-I000107

Figure JPOXMLDOC01-appb-I000108

を記憶する。
 また、各サーバ装置100_1~100_4は疑似ランダム関数
Figure JPOXMLDOC01-appb-I000109
を共有する。なお、
Figure JPOXMLDOC01-appb-I000110
とし、疑似ランダム関数
Figure JPOXMLDOC01-appb-I000111
とする。また、各データ記憶部108_1~108_4に、それぞれ
Figure JPOXMLDOC01-appb-I000112

Figure JPOXMLDOC01-appb-I000113

Figure JPOXMLDOC01-appb-I000114

Figure JPOXMLDOC01-appb-I000115
を記憶する。
 なお、
Figure JPOXMLDOC01-appb-I000116
に関して、サーバ装置100_i(i=1~4)の内、ある一台の参加者は
Figure JPOXMLDOC01-appb-I000117
の出力を計算できず、他の三台の参加者は
Figure JPOXMLDOC01-appb-I000118
の出力を計算できるという状況を作ることを意図している。また、
Figure JPOXMLDOC01-appb-I000119
は、サーバ装置100_1、100_2、100_3の内、ある一台の参加者は
Figure JPOXMLDOC01-appb-I000120
の出力を計算できず、他の二台の参加者は
Figure JPOXMLDOC01-appb-I000121
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure JPOXMLDOC01-appb-I000122
の扱いは特に制限されない。ただし、本書での
Figure JPOXMLDOC01-appb-I000123
はあくまでも一例である。
(ステップA2)
第1の再分散値計算部102_1と第2の再分散値計算部102_2はそれぞれ、第1の基本演算シード記憶部107_1、第2の基本演算シード記憶部107_2より、
Figure JPOXMLDOC01-appb-I000124
を取得する。次に、第1の再分散値計算部102_1と第2の再分散値計算部102_2は
Figure JPOXMLDOC01-appb-I000125
を生成する。
 そして、第1の再分散値計算部102_1は、
Figure JPOXMLDOC01-appb-I000126
を第1のデータ記憶部108_1に記憶する。第2の再分散値計算部102_2は、
Figure JPOXMLDOC01-appb-I000127
を、第3のシェア構成部103_3に送信する。また、第2の再分散値計算部102_2は

Figure JPOXMLDOC01-appb-I000128

Figure JPOXMLDOC01-appb-I000129

を、第4のシェア構成部103_4に送信する。
 同様に、第2の再分散値計算部102_2と第3の再分散値計算部102_3は、
Figure JPOXMLDOC01-appb-I000130

Figure JPOXMLDOC01-appb-I000131

を生成する。第2の再分散値計算部102_2は、

Figure JPOXMLDOC01-appb-I000132
を第2のデータ記憶部108_2に記憶する。第3の再分散値計算部102_3は、
Figure JPOXMLDOC01-appb-I000133
を、第1のシェア構成部103_1に送信する。また、第3の再分散値計算部102_3は

Figure JPOXMLDOC01-appb-I000134

Figure JPOXMLDOC01-appb-I000135
を、第4のシェア構成部103_4に送信する。
 さらに同様に、第3の再分散値計算部102_3と第1の再分散値計算部102_1は
Figure JPOXMLDOC01-appb-I000136
を生成する。第3の再分散値計算部102_3は、
Figure JPOXMLDOC01-appb-I000137
を第3のデータ記憶部108_3に記憶する。第1の再分散値計算部102_1は、
Figure JPOXMLDOC01-appb-I000138
を、第2のシェア構成部103_2に送信する。また、第1の再分散値計算部102_1は

Figure JPOXMLDOC01-appb-I000139

Figure JPOXMLDOC01-appb-I000140

を、第4のシェア構成部103_4に送信する。
 このように、第iの再分散値計算部102_iは、基本演算シード記憶部107_iに格納されたシードを用いて乱数(例えば、
Figure JPOXMLDOC01-appb-I000141
)を生成する。さらに、再分散値計算部102_iは、シェア(例えば、
Figure JPOXMLDOC01-appb-I000142
)の再分散値(例えば、
Figure JPOXMLDOC01-appb-I000143
)を計算する。その後、再分散値計算部102_iは、生成された乱数に関するデータ(例えば、
Figure JPOXMLDOC01-appb-I000144
)を他のサーバ装置の再分散値計算部102_iに送信する。なお、生成された乱数に関するデータには、乱数自身も含まれる。
 ここで、
Figure JPOXMLDOC01-appb-I000145
である。
Figure JPOXMLDOC01-appb-I000146
は、たとえば、カウンタであり、各サーバ装置100_1~100_4の間で共有している。
(ステップA3)
 各シェア構成部103_1、103_2、103_3、103_4は上記ステップA2で送信された値を用いて、以下の12の式によりシェアを構成する。

Figure JPOXMLDOC01-appb-I000147

Figure JPOXMLDOC01-appb-I000148

Figure JPOXMLDOC01-appb-I000149

Figure JPOXMLDOC01-appb-I000150
                  
Figure JPOXMLDOC01-appb-I000151

Figure JPOXMLDOC01-appb-I000152

Figure JPOXMLDOC01-appb-I000153

Figure JPOXMLDOC01-appb-I000154
                  
Figure JPOXMLDOC01-appb-I000155

Figure JPOXMLDOC01-appb-I000156

Figure JPOXMLDOC01-appb-I000157

Figure JPOXMLDOC01-appb-I000158
                  
 ここで、
Figure JPOXMLDOC01-appb-I000159
に対し、
Figure JPOXMLDOC01-appb-I000160

Figure JPOXMLDOC01-appb-I000161
のj番目のビット(j=0、...、n-1)を意味する。
Figure JPOXMLDOC01-appb-I000162

Figure JPOXMLDOC01-appb-I000163

Figure JPOXMLDOC01-appb-I000164
は各i番目のデータ記憶部108_iに記憶される。
 このように、第iのシェア構成部103_iは、他のサーバ装置から受信した乱数に関するデータ、シェアの再分散値を用いて型変換用(ステップA3ではビット分解用)のシェアを構成する(再構成)する。つまり、値xは、シェアx、x、xとして分散される。さらに、当該シェアは、再分散され再分散値x’、x’、x’が計算される。この再分散値と再分散値の計算に用いられた乱数rに基づき、当初のシェアx、x、xはビット分解用のシェアに再構成される。その際、本願開示では、上記12の式に示されるように、第4のサーバ装置100_4におけるシェアの形式が他のサーバ装置100_1~100_3と異なるにも関わらず、各サーバ装置のシェアの形式を保つように値xが再分散され、シェアが再構成される。上述のように、4者MPCでは、値
Figure JPOXMLDOC01-appb-I000165
に対して、
Figure JPOXMLDOC01-appb-I000166
とすると、
Figure JPOXMLDOC01-appb-I000167
となり、サーバ装置100_1~100_3のシェアの形式は二つの値の組み合わせからなり、サーバ装置100_4のシェアの形式は2つの排他的論理和による計算結果の組み合わせとなる。本願開示では、これらのシェアの形式を変換前の形式とし、上記12の式で表せるシェアの形式が変換後の形式となる。本願開示では、変換前後の形式を比較すると、変換前後で形式は保持されたままシェアが再構成(ビット分解用のシェアに再構成)されていることが理解される。
(ステップA4)
 各i番目の論理演算部106_i同士で通信することで、nビット加算器処理
Figure JPOXMLDOC01-appb-I000168
を以下のように計算する。ここで、
Figure JPOXMLDOC01-appb-I000169
とは、たとえば、
Figure JPOXMLDOC01-appb-I000170

Figure JPOXMLDOC01-appb-I000171
を入力とし、
Figure JPOXMLDOC01-appb-I000172
を出力する処理のことである。
Figure JPOXMLDOC01-appb-I000173

Figure JPOXMLDOC01-appb-I000174
ここで、
Figure JPOXMLDOC01-appb-I000175
なので、
Figure JPOXMLDOC01-appb-I000176
が計算できた。
なお、
Figure JPOXMLDOC01-appb-I000177
は、
Figure JPOXMLDOC01-appb-I000178
、…、
Figure JPOXMLDOC01-appb-I000179
のシェア列を意味する。各i番目の論理演算部106_iは、
Figure JPOXMLDOC01-appb-I000180
を各データ記憶部108_iに記憶する。
 このように、第iの論理演算部106_iは、上記型変換されたシェア(ビット分解用のシェア)についての論理演算を行う。より具体的には、第iの論理演算部106_iは、型変換されたシェアの加算処理を他のサーバ装置と相互に通信することで実行する。
 ここで、上記ステップA3、A4について具体例を用いてより具体的に説明する。
 ここでは、
Figure JPOXMLDOC01-appb-I000181
上のシェア
Figure JPOXMLDOC01-appb-I000182
にビット分解を行う場合を説明する。このとき、
Figure JPOXMLDOC01-appb-I000183

とすると、各サーバ装置は以下のような形式でシェア
Figure JPOXMLDOC01-appb-I000184
を保有する。
サーバ装置100_1:
Figure JPOXMLDOC01-appb-I000185
サーバ装置100_2:
Figure JPOXMLDOC01-appb-I000186
サーバ装置100_3:
Figure JPOXMLDOC01-appb-I000187
サーバ装置100_4:
Figure JPOXMLDOC01-appb-I000188
 上記ステップA3、A4では、初めに
Figure JPOXMLDOC01-appb-I000189

Figure JPOXMLDOC01-appb-I000190

Figure JPOXMLDOC01-appb-I000191
の各桁のビットのシェアを得て(ステップA3)、次に、ステップA3にて得られたビットのシェアを用いて加算器の計算を行うことで値xの各桁のビットのシェアを得ている(ステップA4)。これは、ステップA3は、加算した結果が値xとなる各桁のビットのシェアを生成(値xからの再分散)を目的を有し、その後に続くステップA4における加算器計算に伴う負荷が軽減されるように再分散のシェアの個数自体を少なくするという意義を持つ。
 本願開示では、上記再構成されたシェアを得るため、各サーバ装置100_iは、
Figure JPOXMLDOC01-appb-I000192
を使用する。その際、各サーバ装置100_iは、自身が保持する
Figure JPOXMLDOC01-appb-I000193
だけでは上記再構成されたシェアを生成することが出来ない場合がある。そこで、各サーバ装置100_iは、他のサーバ装置から当該他のサーバ装置が保持する
Figure JPOXMLDOC01-appb-I000194
の一部を取得する必要があるが、秘密漏洩を防止する観点から当該値を他のサーバ装置から得ることはできない。そこで、各サーバ装置100_iは、乱数でマスクした値(シェアの再分散値)を送受信し、上記再構成されたシェアの再構成に利用する。本願開示では、シェアの再構成に続く加算器の計算負荷が低減されるように、上記乱数(マスク用の乱数)とシェアの再構成が行われる。
 例えば、上記12の式に記載された
Figure JPOXMLDOC01-appb-I000195
は、
Figure JPOXMLDOC01-appb-I000196
により再分散され、再構成された
Figure JPOXMLDOC01-appb-I000197

Figure JPOXMLDOC01-appb-I000198

Figure JPOXMLDOC01-appb-I000199
のうち
Figure JPOXMLDOC01-appb-I000200
がサーバ装置100_1が保有する値(保有する値の組)となる。その際、
Figure JPOXMLDOC01-appb-I000201
がマスク用のビットの乱数となり、
Figure JPOXMLDOC01-appb-I000202

は、
Figure JPOXMLDOC01-appb-I000203

Figure JPOXMLDOC01-appb-I000204

Figure JPOXMLDOC01-appb-I000205
でマスクすることで生成された再分散値となる。
 ここで、上述のステップA3の目的や意義を考えると、サーバ装置100_3やサーバ装置100_4は、値
Figure JPOXMLDOC01-appb-I000206
を直接保持していないので、これらのサーバ装置が
Figure JPOXMLDOC01-appb-I000207
を生成することは困難である。そこで、サーバ装置100_3やサーバ装置100_4は、上記値を有するサーバ装置100_1やサーバ装置100_2から受信するか、計算可能な乱数により
Figure JPOXMLDOC01-appb-I000208
を構成する必要がある。しかし、サーバ装置100_1やサーバ装置100_2が保有する値自体を送信すると秘密漏洩の危険が増すのでマスク用の乱数が用いられている。そこで、各再分散値計算部102_iは、マスク用の乱数を計算すると共に、例えば、サーバ装置100_2がサーバ装置100_4に
Figure JPOXMLDOC01-appb-I000209
を送信している(ステップA2)。その後、ステップA3において、
Figure JPOXMLDOC01-appb-I000210
を含むシェアの再構成が行われている。
 なお、上述のようにシェアの再構成にあたり、その形式を満たす必要がある。例えば、
Figure JPOXMLDOC01-appb-I000211
とすると、上記の12の式では、
Figure JPOXMLDOC01-appb-I000212

Figure JPOXMLDOC01-appb-I000213

Figure JPOXMLDOC01-appb-I000214
と置き換えることできる。従って、サーバ装置100_1は、
Figure JPOXMLDOC01-appb-I000215
を設定(シェアの再構成)する必要がある。即ち、シェアの形式が満たされるように、
Figure JPOXMLDOC01-appb-I000216

Figure JPOXMLDOC01-appb-I000217
が選択されている。また、本実施形態では、ステップA4における加算器計算に伴う負荷を軽減するために再分散のシェアの個数自体を少なくする目的でステップA3が実行されている。即ち、加算器の計算コストがビット分解全体の通信コストの大半を占めるため、当該通信コストの重い加算器計算の計算コストを低減するように再分散が行われている。しかし、再分散の目的は上記に限定されず、他の実施形態にて説明するように、「シェアの個数は増加するが、通信の形態に適合させ環合成における通信コストの効率化」や「再分散のシェアの個数は同じであるが、ステップA3における再分散のコスト低減」を目的とした再分散もあり得る。
(ステップA5)
 第1の再分散値計算部102_1は、第1のデータ記憶部108_1から
Figure JPOXMLDOC01-appb-I000218
を取り出す。次に、第1の再分散値計算部102_1は、
Figure JPOXMLDOC01-appb-I000219
を、第3の不正検知部104_3に送信する。また、第1の再分散値計算部102_1は、

Figure JPOXMLDOC01-appb-I000220

Figure JPOXMLDOC01-appb-I000221

を、第4の不正検知部104_4に送信する。第3の不正検知部104_3および第4の不正検知部104_4は、それぞれ、第3のデータ記憶部108_3に記憶されている
Figure JPOXMLDOC01-appb-I000222
、第4のデータ記憶部108_4に記憶されている
Figure JPOXMLDOC01-appb-I000223
を取出し、値が一致するかを検証する。
 一致した場合、第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にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure JPOXMLDOC01-appb-I000224
それぞれとを連結した値に対するハッシュ値と、
Figure JPOXMLDOC01-appb-I000225
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure JPOXMLDOC01-appb-I000226
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure JPOXMLDOC01-appb-I000227

Figure JPOXMLDOC01-appb-I000228

に関しても同様である。
 また同様に、第2の再分散値計算部102_2は、
Figure JPOXMLDOC01-appb-I000229
を第2のデータ記憶部108_2から取り出す。次に、第2の再分散値計算部102_2は、
Figure JPOXMLDOC01-appb-I000230
を、第1の不正検知部104_1に送信する。また、第2の再分散値計算部102_2は、

Figure JPOXMLDOC01-appb-I000231

Figure JPOXMLDOC01-appb-I000232

を、第4の不正検知部104_4に送信する。第1の不正検知部104_1および第4の不正検知部104_4は、それぞれ、第1のデータ記憶部108_1に記憶されている
Figure JPOXMLDOC01-appb-I000233
、第4のデータ記憶部108_4に記憶されている
Figure JPOXMLDOC01-appb-I000234
を取出し、値が一致するかを検証する。
 一致した場合、第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にブロードキャストし、プロトコルを中断する。
 大量の型変換処理を並列して行う場合、上記検証は、
Figure JPOXMLDOC01-appb-I000235
それぞれとを連結した値に対するハッシュ値と、
Figure JPOXMLDOC01-appb-I000236
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure JPOXMLDOC01-appb-I000237
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure JPOXMLDOC01-appb-I000238

Figure JPOXMLDOC01-appb-I000239

に関しても同様である。
 さらに同様に、第3の再分散値計算部102_3は、
Figure JPOXMLDOC01-appb-I000240
を第3のデータ記憶部108_3から取り出す。次に、第3の再分散値計算部102_3は、
Figure JPOXMLDOC01-appb-I000241
を、第2の不正検知部104_2に送信する。また、第3の再分散値計算部102_3は、

Figure JPOXMLDOC01-appb-I000242

Figure JPOXMLDOC01-appb-I000243
を、第4の不正検知部104_4に送信する。第2の不正検知部104_2および第4の不正検知部104_4は、それぞれ、第2のデータ記憶部108_2に記憶されている
Figure JPOXMLDOC01-appb-I000244
、第4のデータ記憶部108_4に記憶されている
Figure JPOXMLDOC01-appb-I000245
を取出し、値が一致するかを検証する。
 一致した場合、第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にブロードキャストし、プロトコルを中断する。
 大量の型変換処理を並列して行う場合、上記検証は、
Figure JPOXMLDOC01-appb-I000246
それぞれとを連結した値に対するハッシュ値と、
Figure JPOXMLDOC01-appb-I000247
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure JPOXMLDOC01-appb-I000248
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure JPOXMLDOC01-appb-I000249

Figure JPOXMLDOC01-appb-I000250

に関しても同様である。
 このように、第iの不正検知部104_iは、他のサーバ装置から受信した乱数に関するデータに基づきプロトコルの不正を検知する。具体的には、第iの不正検知部104_iは、他のサーバ装置から受信した乱数に関するデータと自装置に格納されている乱数に関するデータが一致するか否かに応じて不正の有無(不正行為者の有無)を検知する。
(ステップA6)
各i番目の不正検知部104_iは、上記ステップA4の
Figure JPOXMLDOC01-appb-I000251
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第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は、それぞれ、
Figure JPOXMLDOC01-appb-I000252

Figure JPOXMLDOC01-appb-I000253

Figure JPOXMLDOC01-appb-I000254

Figure JPOXMLDOC01-appb-I000255
を記憶する。
また、各サーバ装置100_1~100_4は疑似ランダム関数
Figure JPOXMLDOC01-appb-I000256
を共有する。なお、
Figure JPOXMLDOC01-appb-I000257

とし、疑似ランダム関数
Figure JPOXMLDOC01-appb-I000258
とする。
 また、各データ記憶部108_1~108_4に、
Figure JPOXMLDOC01-appb-I000259

Figure JPOXMLDOC01-appb-I000260

Figure JPOXMLDOC01-appb-I000261

Figure JPOXMLDOC01-appb-I000262
を記憶する。さらに、各データ記憶部108_1~108_4に、ループカウンタ
Figure JPOXMLDOC01-appb-I000263
を記憶する。なお、
Figure JPOXMLDOC01-appb-I000264
とし、
Figure JPOXMLDOC01-appb-I000265

Figure JPOXMLDOC01-appb-I000266

Figure JPOXMLDOC01-appb-I000267

Figure JPOXMLDOC01-appb-I000268
とする。
 なお、
Figure JPOXMLDOC01-appb-I000269
に関して、サーバ装置100_i(i=1~4)の内、ある一台の参加者は
Figure JPOXMLDOC01-appb-I000270
の出力を計算できず、他の三台の参加者は
Figure JPOXMLDOC01-appb-I000271
の出力を計算できるという状況を作ることを意図している。また、
Figure JPOXMLDOC01-appb-I000272
は、サーバ装置100_1、100_2、100_3の内、ある一台の参加者は
Figure JPOXMLDOC01-appb-I000273
の出力を計算できず、他の二台の参加者は
Figure JPOXMLDOC01-appb-I000274
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure JPOXMLDOC01-appb-I000275
の扱いは特に制限されない。本書での
Figure JPOXMLDOC01-appb-I000276
はあくまでも一例である。
(ステップB2)
 各サーバ装置100_iは、各データ記憶部108_iより、ループカウンタjをとりだす。各サーバ装置100_iは、j<nであればステップB3~B7を実行する。j=nであれば、ステップB8を実行する。
 また、各論理演算部106_1~106_4は、各データ記憶部108_1~108_4から
Figure JPOXMLDOC01-appb-I000277
を取り出す。ここで、
Figure JPOXMLDOC01-appb-I000278
はj番目のビットに対するキャリーである。そして、各論理演算部106_1~106_4は、

Figure JPOXMLDOC01-appb-I000279
を計算し、
Figure JPOXMLDOC01-appb-I000280
を各データ記憶部108_1~108_4に記憶する。
 なお、第iのデータ記憶部108_iが記憶する
Figure JPOXMLDOC01-appb-I000281

Figure JPOXMLDOC01-appb-I000282
と表記する。また、
Figure JPOXMLDOC01-appb-I000283

とする。
(ステップB3)
 第1の再分散値計算部102_1と第2の再分散値計算部102_2はそれぞれ、第1の基本演算シード記憶部107_1、第2の基本演算シード記憶部107_2より、
Figure JPOXMLDOC01-appb-I000284
を取得する。次に、第1の再分散値計算部102_1と第2の再分散値計算部102_2は
Figure JPOXMLDOC01-appb-I000285
を生成する。
 そして、第1の再分散値計算部102_1は、
Figure JPOXMLDOC01-appb-I000286
を第1のデータ記憶部108_1に記憶する。第2の再分散値計算部102_2は、
Figure JPOXMLDOC01-appb-I000287
を、第3のシェア構成部103_3に送信する。また、第2の再分散値計算部102_2は

Figure JPOXMLDOC01-appb-I000288

Figure JPOXMLDOC01-appb-I000289

を、第4のシェア構成部103_4に送信する。
 同様に、第2の再分散値計算部102_2と第3の再分散値計算部102_3は
Figure JPOXMLDOC01-appb-I000290
を生成する。第2の再分散値計算部102_2は、
Figure JPOXMLDOC01-appb-I000291
を第2のデータ記憶部108_2に記憶する。第3の再分散値計算部102_3は、
Figure JPOXMLDOC01-appb-I000292
を、第1のシェア構成部103_1に送信する。また、第3の再分散値計算部102_3は

Figure JPOXMLDOC01-appb-I000293

Figure JPOXMLDOC01-appb-I000294

を、第4のシェア構成部103_4に送信する。
 さらに同様に、第3の再分散値計算部102_3と第1の再分散値計算部102_1は
Figure JPOXMLDOC01-appb-I000295
を生成する。第3の再分散値計算部102_3は、
Figure JPOXMLDOC01-appb-I000296
を第3のデータ記憶部108_3に記憶する。第1の再分散値計算部102_1は、
Figure JPOXMLDOC01-appb-I000297
を、第2のシェア構成部103_2に送信する。また、第1の再分散値計算部102_1は

Figure JPOXMLDOC01-appb-I000298

Figure JPOXMLDOC01-appb-I000299

を、第4のシェア構成部103_4に送信する。
 ここで、
Figure JPOXMLDOC01-appb-I000300
である。
Figure JPOXMLDOC01-appb-I000301
は、たとえば、カウンタであり、各サーバ装置100_1~100_4の間で共有している。
(ステップB4)
 各シェア構成部103_1、103_2、103_3、103_4は上記ステップB3で送信された値を用いて、以下の12の式によりシェアを構成する。

Figure JPOXMLDOC01-appb-I000302

Figure JPOXMLDOC01-appb-I000303

Figure JPOXMLDOC01-appb-I000304

Figure JPOXMLDOC01-appb-I000305
                  
Figure JPOXMLDOC01-appb-I000306

Figure JPOXMLDOC01-appb-I000307

Figure JPOXMLDOC01-appb-I000308

Figure JPOXMLDOC01-appb-I000309
                  
Figure JPOXMLDOC01-appb-I000310

Figure JPOXMLDOC01-appb-I000311

Figure JPOXMLDOC01-appb-I000312

Figure JPOXMLDOC01-appb-I000313
                  
Figure JPOXMLDOC01-appb-I000314

Figure JPOXMLDOC01-appb-I000315

Figure JPOXMLDOC01-appb-I000316

は各i番目のデータ記憶部208_iに記憶される。
(ステップB5)
 各i番目の論理演算部106_i同士で通信することで、キャリー計算処理
Figure JPOXMLDOC01-appb-I000317
を以下のように計算する。ここで、
Figure JPOXMLDOC01-appb-I000318
とは、全加算器における入力
Figure JPOXMLDOC01-appb-I000319
と下位からの桁上げ入力
Figure JPOXMLDOC01-appb-I000320
の5つを入力とし、下記の式のように桁上げ出力
Figure JPOXMLDOC01-appb-I000321
を出力する処理である。
Figure JPOXMLDOC01-appb-I000322
 各i番目の論理演算部106_iは、
Figure JPOXMLDOC01-appb-I000323
を各データ記憶部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から
Figure JPOXMLDOC01-appb-I000324
を取り出す。次に、第1の再分散値計算部102_1は、
Figure JPOXMLDOC01-appb-I000325
を、第3の不正検知部104_3に送信する。また、第1の再分散値計算部102_1は、

Figure JPOXMLDOC01-appb-I000326

Figure JPOXMLDOC01-appb-I000327

を、第4の不正検知部104_4に送信する。第3の不正検知部104_3および第4の不正検知部104_4は、それぞれ、第3のデータ記憶部108_3に記憶されている
Figure JPOXMLDOC01-appb-I000328
、第4のデータ記憶部108_4に記憶されている
Figure JPOXMLDOC01-appb-I000329
を取出し、値が一致するかを検証する。
 一致した場合、第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にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure JPOXMLDOC01-appb-I000330
それぞれとを連結した値に対するハッシュ値と、
Figure JPOXMLDOC01-appb-I000331
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure JPOXMLDOC01-appb-I000332
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure JPOXMLDOC01-appb-I000333

Figure JPOXMLDOC01-appb-I000334

に関しても同様である。
 同様に、第2の再分散値計算部102_2は、
Figure JPOXMLDOC01-appb-I000335
を第2のデータ記憶部108_2から取り出す。次に、第2の再分散値計算部102_2は、
Figure JPOXMLDOC01-appb-I000336
を、第1の不正検知部104_1に送信する。また、第2の再分散値計算部102_2は、

Figure JPOXMLDOC01-appb-I000337

Figure JPOXMLDOC01-appb-I000338

を、第4の不正検知部104_4に送信する。第1の不正検知部104_1および第4の不正検知部104_4は、それぞれ、第1のデータ記憶部108_1に記憶されている
Figure JPOXMLDOC01-appb-I000339
、第4のデータ記憶部108_4に記憶されている
Figure JPOXMLDOC01-appb-I000340
を取出し、値が一致するかを検証する。
 一致した場合、第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にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure JPOXMLDOC01-appb-I000341
それぞれとを連結した値に対するハッシュ値と、
Figure JPOXMLDOC01-appb-I000342
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure JPOXMLDOC01-appb-I000343
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure JPOXMLDOC01-appb-I000344

Figure JPOXMLDOC01-appb-I000345

に関しても同様である。
 さらに同様に、第3の再分散値計算部102_3は、
Figure JPOXMLDOC01-appb-I000346
を第3のデータ記憶部108_3から取り出す。次に、第3の再分散値計算部102_3は、
Figure JPOXMLDOC01-appb-I000347
を、第2の不正検知部104_2に送信する。また、第3の再分散値計算部102_3は、

Figure JPOXMLDOC01-appb-I000348

Figure JPOXMLDOC01-appb-I000349

を、第4の不正検知部104_4に送信する。第2の不正検知部104_2および第4の不正検知部104_4は、それぞれ、第2のデータ記憶部108_2に記憶されている
Figure JPOXMLDOC01-appb-I000350
、第4のデータ記憶部108_4に記憶されている
Figure JPOXMLDOC01-appb-I000351
を取出し、値が一致するかを検証する。
 一致した場合、第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にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure JPOXMLDOC01-appb-I000352
それぞれとを連結した値に対するハッシュ値と、
Figure JPOXMLDOC01-appb-I000353
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure JPOXMLDOC01-appb-I000354
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
Figure JPOXMLDOC01-appb-I000355

Figure JPOXMLDOC01-appb-I000356

に関しても同様である。
(ステップB7)
 各i番目の不正検知部105_iは、上記ステップB5の
Figure JPOXMLDOC01-appb-I000357
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第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から
Figure JPOXMLDOC01-appb-I000358
を取り出す。その後、以下の式による計算を行う。
Figure JPOXMLDOC01-appb-I000359
各i番目の算術演算部105_iは、各データ記憶部108_iに
Figure JPOXMLDOC01-appb-I000360
を記憶する。
 以上、説明した第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は、第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の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I000361
、あるいは第1乃至第4のデータ記憶部208_1~208_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I000362
、あるいは第1乃至第4のサーバ装置200_1~200_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I000363

に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I000364
の値を知られることなく、
Figure JPOXMLDOC01-appb-I000365
を計算し、第1乃至第4のデータ記憶部208_1~208_4に記憶する。上記計算結果のシェアは、第1乃至第4のサーバ装置200_1~200_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置200_1~200_4ではない外部にシェアが送信され、シェアが復元されてもよい。
 また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置200_1~200_4の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I000366
、あるいは第1乃至第4のデータ記憶部208_1~208_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I000367
、あるいは第1乃至第4のサーバ装置200_1~200_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I000368
に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I000369
の値を知られることなく、
Figure JPOXMLDOC01-appb-I000370
を計算し、第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に示す環合成に関するフローチャートを説明する。
(ステップB´1)
各基本演算シード記憶部207_1、207_2、207_3、207_4は、それぞれ、
Figure JPOXMLDOC01-appb-I000371

Figure JPOXMLDOC01-appb-I000372

Figure JPOXMLDOC01-appb-I000373

Figure JPOXMLDOC01-appb-I000374
を記憶する。
また、各サーバ装置200_1~200_4は疑似ランダム関数
Figure JPOXMLDOC01-appb-I000375
を共有する。なお、
Figure JPOXMLDOC01-appb-I000376
とし、疑似ランダム関数
Figure JPOXMLDOC01-appb-I000377
とする。
 また、各データ記憶部208_1~208_4に、
Figure JPOXMLDOC01-appb-I000378

Figure JPOXMLDOC01-appb-I000379

Figure JPOXMLDOC01-appb-I000380

Figure JPOXMLDOC01-appb-I000381
を記憶する。さらに、各データ記憶部208_1~208_4に、ループカウンタj(=1)を記憶する。なお、
Figure JPOXMLDOC01-appb-I000382
とし、
Figure JPOXMLDOC01-appb-I000383

Figure JPOXMLDOC01-appb-I000384

Figure JPOXMLDOC01-appb-I000385

Figure JPOXMLDOC01-appb-I000386
とする。
 なお、
Figure JPOXMLDOC01-appb-I000387
に関して、サーバ装置200_i(i=1、2、3、4)の内、ある一台の参加者は
Figure JPOXMLDOC01-appb-I000388

の出力を計算できず、他の三台の参加者は
Figure JPOXMLDOC01-appb-I000389
の出力を計算できるという状況を作ることを意図している。また、
Figure JPOXMLDOC01-appb-I000390
は、サーバ装置200_1、200_2、200_3の内、ある一台の参加者は
Figure JPOXMLDOC01-appb-I000391
の出力を計算できず、他の二台の参加者は
Figure JPOXMLDOC01-appb-I000392
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure JPOXMLDOC01-appb-I000393
の扱いは特に制限されない。本書での
Figure JPOXMLDOC01-appb-I000394
はあくまでも一例である。
(ステップB´2)
各サーバ装置200_iは、以下の式に示されるように
Figure JPOXMLDOC01-appb-I000395
の値を定める。
Figure JPOXMLDOC01-appb-I000396

Figure JPOXMLDOC01-appb-I000397
各データ記憶部208_1~208_4は、それぞれ

Figure JPOXMLDOC01-appb-I000398

Figure JPOXMLDOC01-appb-I000399

Figure JPOXMLDOC01-appb-I000400

Figure JPOXMLDOC01-appb-I000401

Figure JPOXMLDOC01-appb-I000402
を記憶する。
 第1の再分散値計算部202_1と第2の再分散値計算部202_2はそれぞれ、第1の基本演算シード記憶部207_1、第2の基本演算シード記憶部207_2より、
Figure JPOXMLDOC01-appb-I000403
を取得する。次に、第1の再分散値計算部202_1と第2の再分散値計算部202_2は、
Figure JPOXMLDOC01-appb-I000404
を生成する。
 そして、第1の再分散値計算部202_1は、
Figure JPOXMLDOC01-appb-I000405
を第1のデータ記憶部208_1に記憶する。第2の再分散値計算部202_2は、
Figure JPOXMLDOC01-appb-I000406
を、第3のシェア構成部203_3に送信する。また、第2の再分散値計算部202_2は

Figure JPOXMLDOC01-appb-I000407

Figure JPOXMLDOC01-appb-I000408

を、第4のシェア構成部203_4に送信する。
 同様に、第2の再分散値計算部202_2と第3の再分散値計算部202_3は、
Figure JPOXMLDOC01-appb-I000409
を生成する。第2の再分散値計算部202_2は、
Figure JPOXMLDOC01-appb-I000410
を第2のデータ記憶部208_2に記憶する。第3の再分散値計算部202_3は、
Figure JPOXMLDOC01-appb-I000411
を、第1のシェア構成部203_1に送信する。また、第3の再分散値計算部202_3は

Figure JPOXMLDOC01-appb-I000412

Figure JPOXMLDOC01-appb-I000413

を、第4のシェア構成部203_4に送信する。
 さらに同様に、第3の再分散値計算部202_3と第1の再分散値計算部202_1は
Figure JPOXMLDOC01-appb-I000414
を生成する。第3の再分散値計算部302_3は、
Figure JPOXMLDOC01-appb-I000415
を第3のデータ記憶部208_3に記憶する。第1の再分散値計算部202_1は、
Figure JPOXMLDOC01-appb-I000416
を、第2のシェア構成部203_2に送信する。また、第1の再分散値計算部202_1は

Figure JPOXMLDOC01-appb-I000417

Figure JPOXMLDOC01-appb-I000418

を、第4のシェア構成部203_4に送信する。
 ここで、
Figure JPOXMLDOC01-appb-I000419
である。
Figure JPOXMLDOC01-appb-I000420
は、たとえば、カウンタであり、各サーバ装置200_1~200_4の間で共有している。
(ステップB´3)
 各シェア構成部203_1、203_2、203_3、203_4は上記ステップB´2で送信された値を用いて、以下の12の式によりシェアを構成する。

Figure JPOXMLDOC01-appb-I000421

Figure JPOXMLDOC01-appb-I000422

Figure JPOXMLDOC01-appb-I000423

Figure JPOXMLDOC01-appb-I000424
                  
Figure JPOXMLDOC01-appb-I000425

Figure JPOXMLDOC01-appb-I000426

Figure JPOXMLDOC01-appb-I000427

Figure JPOXMLDOC01-appb-I000428
                  
Figure JPOXMLDOC01-appb-I000429

Figure JPOXMLDOC01-appb-I000430

Figure JPOXMLDOC01-appb-I000431

Figure JPOXMLDOC01-appb-I000432
                  
Figure JPOXMLDOC01-appb-I000433

Figure JPOXMLDOC01-appb-I000434

Figure JPOXMLDOC01-appb-I000435
は各i番目のデータ記憶部208_iに記憶される。
(ステップB´4)
 第1の再分散値計算部202_1は、第1のデータ記憶部208_1から
Figure JPOXMLDOC01-appb-I000436
を取り出す。次に、第1の再分散値計算部202_1は、
Figure JPOXMLDOC01-appb-I000437
を、第3の不正検知部204_3に送信する。また、第1の再分散値計算部202_1は、

Figure JPOXMLDOC01-appb-I000438

Figure JPOXMLDOC01-appb-I000439

を、第4の不正検知部204_4に送信する。第3の不正検知部204_3および第4の不正検知部204_4は、それぞれ、第3のデータ記憶部208_3に記憶されている
Figure JPOXMLDOC01-appb-I000440
、第4のデータ記憶部208_4に記憶されている
Figure JPOXMLDOC01-appb-I000441
を取出し、値が一致するかを検証する。
 一致した場合、第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にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure JPOXMLDOC01-appb-I000442
それぞれとを連結した値に対するハッシュ値と、
Figure JPOXMLDOC01-appb-I000443
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure JPOXMLDOC01-appb-I000444
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure JPOXMLDOC01-appb-I000445

Figure JPOXMLDOC01-appb-I000446

に関しても同様である。
 同様に、第2の再分散値計算部102_2は、
Figure JPOXMLDOC01-appb-I000447
を第2のデータ記憶部208_2から取り出す。次に、第2の再分散値計算部202_2は、
Figure JPOXMLDOC01-appb-I000448
を、第1の不正検知部204_1に送信する。また、第2の再分散値計算部202_2は、

Figure JPOXMLDOC01-appb-I000449

Figure JPOXMLDOC01-appb-I000450

を、第4の不正検知部204_4に送信する。第1の不正検知部204_1および第4の不正検知部204_4は、それぞれ、第1のデータ記憶部208_1に記憶されている
Figure JPOXMLDOC01-appb-I000451
、第4のデータ記憶部208_4に記憶されている
Figure JPOXMLDOC01-appb-I000452
を取出し、値が一致するかを検証する。
 一致した場合、第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にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure JPOXMLDOC01-appb-I000453
それぞれとを連結した値に対するハッシュ値と、
Figure JPOXMLDOC01-appb-I000454
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure JPOXMLDOC01-appb-I000455
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure JPOXMLDOC01-appb-I000456

Figure JPOXMLDOC01-appb-I000457

に関しても同様である。
 さらに同様に、第3の再分散値計算部202_3は、
Figure JPOXMLDOC01-appb-I000458
を第3のデータ記憶部208_3から取り出す。次に、第3の再分散値計算部202_3は、
Figure JPOXMLDOC01-appb-I000459
を、第2の不正検知部204_2に送信する。また、第3の再分散値計算部202_3は、

Figure JPOXMLDOC01-appb-I000460

Figure JPOXMLDOC01-appb-I000461

を、第4の不正検知部204_4に送信する。第2の不正検知部204_2および第4の不正検知部204_4は、それぞれ、第2のデータ記憶部208_2に記憶されている
Figure JPOXMLDOC01-appb-I000462
、第4のデータ記憶部208_4に記憶されている
Figure JPOXMLDOC01-appb-I000463
を取出し、値が一致するかを検証する。
 一致した場合、第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にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure JPOXMLDOC01-appb-I000464
それぞれとを連結した値に対するハッシュ値と、
Figure JPOXMLDOC01-appb-I000465
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure JPOXMLDOC01-appb-I000466
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure JPOXMLDOC01-appb-I000467

Figure JPOXMLDOC01-appb-I000468

に関しても同様である。
(ステップB´5)
 各サーバ装置200_iは、各データ記憶部208_より、ループカウンタjをとりだす。各サーバ装置200_iは、j<nであればステップB´6~B´10を実行する。j=nであれば、ステップB´11を実行する。
(ステップB´6)
 ここで、キャリー計算処理
Figure JPOXMLDOC01-appb-I000469
を、
Figure JPOXMLDOC01-appb-I000470

Figure JPOXMLDOC01-appb-I000471
という2つの処理に分割して考える。なお、
Figure JPOXMLDOC01-appb-I000472
とは、全加算器における入力
Figure JPOXMLDOC01-appb-I000473
と下位からの桁上げ入力
Figure JPOXMLDOC01-appb-I000474
の5つを入力とし、桁上げ出力
Figure JPOXMLDOC01-appb-I000475
を出力する処理である。
Figure JPOXMLDOC01-appb-I000476
とは、
Figure JPOXMLDOC01-appb-I000477

Figure JPOXMLDOC01-appb-I000478

Figure JPOXMLDOC01-appb-I000479

Figure JPOXMLDOC01-appb-I000480

Figure JPOXMLDOC01-appb-I000481
を入力に取り、
Figure JPOXMLDOC01-appb-I000482
を出力するといった、論理演算部206_i(i=1、2、3)が計算する通信不要の処理を指す。
 また、
Figure JPOXMLDOC01-appb-I000483
とは、
Figure JPOXMLDOC01-appb-I000484

Figure JPOXMLDOC01-appb-I000485

Figure JPOXMLDOC01-appb-I000486


Figure JPOXMLDOC01-appb-I000487
および
Figure JPOXMLDOC01-appb-I000488
を入力に取り、
Figure JPOXMLDOC01-appb-I000489
を出力するといった、論理演算部206_i(i=1、2、3、4)が通信を伴って計算する処理を指す。
 ステップB´6で、論理演算部206_i(i=1、2、3)は

Figure JPOXMLDOC01-appb-I000490

Figure JPOXMLDOC01-appb-I000491

Figure JPOXMLDOC01-appb-I000492

Figure JPOXMLDOC01-appb-I000493

Figure JPOXMLDOC01-appb-I000494
を入力に取り、
Figure JPOXMLDOC01-appb-I000495
を計算することで、
Figure JPOXMLDOC01-appb-I000496
を得る。
 さらに論理演算部206_i(i=1、2、3)は、
Figure JPOXMLDOC01-appb-I000497
を用いて、
Figure JPOXMLDOC01-appb-I000498
を計算する。論理演算部206_i(i=1、2、3)は、データ記憶部208_i(i=1、2、3)に
Figure JPOXMLDOC01-appb-I000499
を記憶する。
(ステップB´7)
 第1の再分散値計算部202_1と第2の再分散値計算部202_2はそれぞれ、第1の基本演算シード記憶部207_1、第2の基本演算シード記憶部207_2より、
Figure JPOXMLDOC01-appb-I000500
を取得する。次に、第1の再分散値計算部202_1と第2の再分散値計算部202_2は、
Figure JPOXMLDOC01-appb-I000501
を生成する。
 そして、第1の再分散値計算部202_1は、
Figure JPOXMLDOC01-appb-I000502
を第1のデータ記憶部208_1に記憶する。第2の再分散値計算部202_2は、
Figure JPOXMLDOC01-appb-I000503
を、第3のシェア構成部203_3に送信する。また、第2の再分散値計算部202_2は

Figure JPOXMLDOC01-appb-I000504

Figure JPOXMLDOC01-appb-I000505

を、第4のシェア構成部203_4に送信する。
 同様に、第2の再分散値計算部202_2と第3の再分散値計算部202_3は、
Figure JPOXMLDOC01-appb-I000506
を生成する。第2の再分散値計算部202_2は、
Figure JPOXMLDOC01-appb-I000507
を第2のデータ記憶部208_2に記憶する。第3の再分散値計算部202_3は、
Figure JPOXMLDOC01-appb-I000508
を、第1のシェア構成部203_1に送信する。また、第3の再分散値計算部202_3は

Figure JPOXMLDOC01-appb-I000509

Figure JPOXMLDOC01-appb-I000510

を、第4のシェア構成部203_4に送信する。
 さらに同様に、第3の再分散値計算部202_3と第1の再分散値計算部202_1は
Figure JPOXMLDOC01-appb-I000511
を生成する。第3の再分散値計算部202_3は、
Figure JPOXMLDOC01-appb-I000512
を第3のデータ記憶部208_3に記憶する。第1の再分散値計算部202_1は、
Figure JPOXMLDOC01-appb-I000513
を、第2のシェア構成部203_2に送信する。また、第1の再分散値計算部202_1は

Figure JPOXMLDOC01-appb-I000514

Figure JPOXMLDOC01-appb-I000515

を、第4のシェア構成部203_4に送信する。
 ここで、
Figure JPOXMLDOC01-appb-I000516
である。
Figure JPOXMLDOC01-appb-I000517
は、たとえば、カウンタであり、各サーバ装置200_1~200_4の間で共有している。
 また、論理演算部206_i(i=1、2、3、4)は、

Figure JPOXMLDOC01-appb-I000518

Figure JPOXMLDOC01-appb-I000519

Figure JPOXMLDOC01-appb-I000520

Figure JPOXMLDOC01-appb-I000521
および
Figure JPOXMLDOC01-appb-I000522
を入力に取り、
Figure JPOXMLDOC01-appb-I000523
を通信を伴って計算することで、
Figure JPOXMLDOC01-appb-I000524
を得る。論理演算部206_i(i=1、2、3、4)は、データ記憶部208_i(i=1、2、3、4)に
Figure JPOXMLDOC01-appb-I000525
を記憶する。
 このように、キャリー計算処理は、第1要素
Figure JPOXMLDOC01-appb-I000526
及び当該第1要素に続く第2要素
Figure JPOXMLDOC01-appb-I000527
に分離可能である。第iの論理演算部206_iは、第1要素を他のサーバ装置と非通信により計算すると共に、シェアの再分散値の計算に必要な通信と第2要素のキャリー計算処理に必要な通信を並列に行う(ステップB’7)。
(ステップB´8)
 論理演算部206_i(i=1、2、3、4)は、
Figure JPOXMLDOC01-appb-I000528
を用いて、
Figure JPOXMLDOC01-appb-I000529
を計算する。
ここで、上記ステップB´7で得た値と、
Figure JPOXMLDOC01-appb-I000530
を用いて、各シェア構成部203_1、203_2、203_3、203_4は、以下の12の式によりシェアを構成する。

Figure JPOXMLDOC01-appb-I000531

Figure JPOXMLDOC01-appb-I000532

Figure JPOXMLDOC01-appb-I000533

Figure JPOXMLDOC01-appb-I000534
                  
Figure JPOXMLDOC01-appb-I000535

Figure JPOXMLDOC01-appb-I000536

Figure JPOXMLDOC01-appb-I000537

Figure JPOXMLDOC01-appb-I000538
                  
Figure JPOXMLDOC01-appb-I000539

Figure JPOXMLDOC01-appb-I000540

Figure JPOXMLDOC01-appb-I000541

Figure JPOXMLDOC01-appb-I000542

Figure JPOXMLDOC01-appb-I000543

Figure JPOXMLDOC01-appb-I000544

Figure JPOXMLDOC01-appb-I000545
が各i番目のデータ記憶部208_iに記憶される。また、データ記憶部208_iはループカウンタjを取り出し、j=j+1として値を更新する。
(ステップB´9)
 第1の再分散値計算部202_1は、第1のデータ記憶部208_1から
Figure JPOXMLDOC01-appb-I000546
を取り出す。次に、第1の再分散値計算部202_1は、
Figure JPOXMLDOC01-appb-I000547
を、第3の不正検知部204_3に送信する。また、第1の再分散値計算部202_1は、

Figure JPOXMLDOC01-appb-I000548

Figure JPOXMLDOC01-appb-I000549

を、第4の不正検知部204_4に送信する。第3の不正検知部204_3および第4の不正検知部204_4は、それぞれ、第3のデータ記憶部208_3に記憶されている
Figure JPOXMLDOC01-appb-I000550
、第4のデータ記憶部208_4に記憶されている
Figure JPOXMLDOC01-appb-I000551
を取出し、値が一致するかを検証する。
 一致した場合、第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にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure JPOXMLDOC01-appb-I000552
それぞれとを連結した値に対するハッシュ値と、
Figure JPOXMLDOC01-appb-I000553
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure JPOXMLDOC01-appb-I000554
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure JPOXMLDOC01-appb-I000555

Figure JPOXMLDOC01-appb-I000556

に関しても同様である。
 同様に、第2の再分散値計算部202_2は、
Figure JPOXMLDOC01-appb-I000557
を第2のデータ記憶部208_2から取り出す。次に、第2の再分散値計算部202_2は、
Figure JPOXMLDOC01-appb-I000558
を、第1の不正検知部204_1に送信する。また、第2の再分散値計算部202_2は、

Figure JPOXMLDOC01-appb-I000559

Figure JPOXMLDOC01-appb-I000560

を、第4の不正検知部204_4に送信する。第1の不正検知部204_1および第4の不正検知部204_4は、それぞれ、第1のデータ記憶部208_1に記憶されている
Figure JPOXMLDOC01-appb-I000561
、第4のデータ記憶部208_4に記憶されている
Figure JPOXMLDOC01-appb-I000562
を取出し、値が一致するかを検証する。
 一致した場合、第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にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure JPOXMLDOC01-appb-I000563
それぞれとを連結した値に対するハッシュ値と、
Figure JPOXMLDOC01-appb-I000564
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure JPOXMLDOC01-appb-I000565
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure JPOXMLDOC01-appb-I000566

Figure JPOXMLDOC01-appb-I000567

に関しても同様である。
 さらに同様に、第3の再分散値計算部202_3は、
Figure JPOXMLDOC01-appb-I000568
を第3のデータ記憶部208_3から取り出す。次に、第3の再分散値計算部202_3は、
Figure JPOXMLDOC01-appb-I000569
を、第2の不正検知部204_2に送信する。また、第3の再分散値計算部202_3は、

Figure JPOXMLDOC01-appb-I000570

Figure JPOXMLDOC01-appb-I000571

を、第4の不正検知部204_4に送信する。第2の不正検知部204_2および第4の不正検知部204_4は、それぞれ、第2のデータ記憶部208_2に記憶されている
Figure JPOXMLDOC01-appb-I000572
、第4のデータ記憶部208_4に記憶されている
Figure JPOXMLDOC01-appb-I000573
を取出し、値が一致するかを検証する。
 一致した場合、第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にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure JPOXMLDOC01-appb-I000574
それぞれとを連結した値に対するハッシュ値と、
Figure JPOXMLDOC01-appb-I000575
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure JPOXMLDOC01-appb-I000576
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure JPOXMLDOC01-appb-I000577

Figure JPOXMLDOC01-appb-I000578

に関しても同様である。
 なお、ステップB´9は、ループごとではなく、j=n-1のときに全ループ分を並列に実行しても良い。また、ステップB´9は、上記ステップB´4と並列に実行することも可能である。
(ステップB´10)
 各i番目の不正検知部204_iは、上記ステップB´7の
Figure JPOXMLDOC01-appb-I000579
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第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から
Figure JPOXMLDOC01-appb-I000580
を取り出す。その後、以下の式に示す計算が実行される。
Figure JPOXMLDOC01-appb-I000581
各i番目の算術演算部205_iは、各データ記憶部208_iに
Figure JPOXMLDOC01-appb-I000582
を記憶する。
 以上、説明した第2の実施形態においては、第1の実施形態における効果と同じ効果を奏する。ただし、第1の実施形態における第1の効果に関して、第2の実施形態の方が環合成における通信コストの点で効率が良い。第2の実施形態では、キャリー計算処理
Figure JPOXMLDOC01-appb-I000583
を分割して考え、シェアの再分散とキャリー計算における通信を伴う処理を並列して行うことで、通信ラウンドの削減を実現している。このため、第2の実施形態における環合成の通信コストは、(16n-16)ビット・n-1ラウンドとなる。
[第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の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I000584
、あるいは第1乃至第4のデータ記憶部308_1~308_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I000585
、あるいは第1乃至第4のサーバ装置300_1~300_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I000586

に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I000587
の値を知られることなく、
Figure JPOXMLDOC01-appb-I000588
を計算し、第1乃至第4のデータ記憶部308_1~308_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置300_1~300_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置300_1~300_4ではない外部にシェアが送信され、復元されてもよい。
 また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置300_1~300_4の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I000589
、あるいは第1乃至第4のデータ記憶部308_1~308_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I000590
、あるいは第1乃至第4のサーバ装置300_1~300_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I000591
に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I000592
の値を知られることなく、
Figure JPOXMLDOC01-appb-I000593
を計算し、第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に示すビット分解に関するフローチャートを説明する。
(ステップC1)
各基本演算シード記憶部307_1、307_2、307_3、307_4は、それぞれ
Figure JPOXMLDOC01-appb-I000594

Figure JPOXMLDOC01-appb-I000595

Figure JPOXMLDOC01-appb-I000596

Figure JPOXMLDOC01-appb-I000597
を記憶する。
 また、各サーバ装置300_1~300_4は疑似ランダム関数
Figure JPOXMLDOC01-appb-I000598

を共有する。なお、
Figure JPOXMLDOC01-appb-I000599
とし、疑似ランダム関数
Figure JPOXMLDOC01-appb-I000600
とする。また、各データ記憶部308_1~308_4に、それぞれ
Figure JPOXMLDOC01-appb-I000601

Figure JPOXMLDOC01-appb-I000602

Figure JPOXMLDOC01-appb-I000603

Figure JPOXMLDOC01-appb-I000604
を記憶する。
 なお、
Figure JPOXMLDOC01-appb-I000605
に関して、サーバ装置300_i(i=1、2、3、4)の内、ある一台の参加者は
Figure JPOXMLDOC01-appb-I000606
の出力を計算できず、他の三台の参加者は
Figure JPOXMLDOC01-appb-I000607
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure JPOXMLDOC01-appb-I000608
の扱いは特に制限されない。本書での
Figure JPOXMLDOC01-appb-I000609
はあくまでも一例である。
(ステップC2)
 第1の再分散値計算部302_1と第2の再分散値計算部302_2はそれぞれ、第1の基本演算シード記憶部307_1、第2の基本演算シード記憶部307_2より、
Figure JPOXMLDOC01-appb-I000610
を取得する。次に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第1の再分散値計算部302_1と第3の再分散値計算部302_3は
Figure JPOXMLDOC01-appb-I000611
を生成する。
 そして、第1の再分散値計算部302_1は、
Figure JPOXMLDOC01-appb-I000612
を第1のデータ記憶部308_1に記憶する。第3の再分散値計算部302_3は、
Figure JPOXMLDOC01-appb-I000613
を、第3のシェア構成部303_3に送信する。また、第2の再分散値計算部302_2は
Figure JPOXMLDOC01-appb-I000614
を、第4のシェア構成部303_4に送信する。
 同様に、第1の再分散値計算部302_1、第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
Figure JPOXMLDOC01-appb-I000615
を生成する。第2の再分散値計算部302_2は、
Figure JPOXMLDOC01-appb-I000616
を第2のデータ記憶部308_2に記憶する。第1の再分散値計算部302_1は、
Figure JPOXMLDOC01-appb-I000617
を、第1のシェア構成部303_1に送信する。また、第3の再分散値計算部302_3は
Figure JPOXMLDOC01-appb-I000618
を、第4のシェア構成部303_4に送信する。
 さらに同様に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
Figure JPOXMLDOC01-appb-I000619
を生成する。第3の再分散値計算部302_3は、
Figure JPOXMLDOC01-appb-I000620
を第3のデータ記憶部308_3に記憶する。第2の再分散値計算部302_2は、
Figure JPOXMLDOC01-appb-I000621
を、第2のシェア構成部303_2に送信する。また、第1の再分散値計算部302_1は
Figure JPOXMLDOC01-appb-I000622
を、第4のシェア構成部303_4に送信する。
 ここで、
Figure JPOXMLDOC01-appb-I000623
である。
Figure JPOXMLDOC01-appb-I000624
は、たとえば、カウンタであり、各サーバ装置300_1~300_4の間で共有している。
(ステップC3)
 各シェア構成部303_1、303_2、303_3、303_4は上記ステップC2で送信された値を用いて、以下の12の式によりシェアを構成する。

Figure JPOXMLDOC01-appb-I000625

Figure JPOXMLDOC01-appb-I000626

Figure JPOXMLDOC01-appb-I000627

Figure JPOXMLDOC01-appb-I000628
                  
Figure JPOXMLDOC01-appb-I000629

Figure JPOXMLDOC01-appb-I000630

Figure JPOXMLDOC01-appb-I000631

Figure JPOXMLDOC01-appb-I000632
                  
Figure JPOXMLDOC01-appb-I000633

Figure JPOXMLDOC01-appb-I000634

Figure JPOXMLDOC01-appb-I000635

Figure JPOXMLDOC01-appb-I000636
                  
ここで、
Figure JPOXMLDOC01-appb-I000637
に対し、
Figure JPOXMLDOC01-appb-I000638

Figure JPOXMLDOC01-appb-I000639

Figure JPOXMLDOC01-appb-I000640
番目のビット
Figure JPOXMLDOC01-appb-I000641
を意味する。
Figure JPOXMLDOC01-appb-I000642

Figure JPOXMLDOC01-appb-I000643

Figure JPOXMLDOC01-appb-I000644
が各i番目のデータ記憶部308_iに記憶される。
 上記ステップC3における12の式において、
Figure JPOXMLDOC01-appb-I000645
は、
Figure JPOXMLDOC01-appb-I000646
としたとき、
Figure JPOXMLDOC01-appb-I000647

Figure JPOXMLDOC01-appb-I000648

Figure JPOXMLDOC01-appb-I000649
と置き換えることできる。このように、
Figure JPOXMLDOC01-appb-I000650
となるので、各再分散値計算部302_iは、値xの再分散値を計算する際、値xをx1、x2、x3の排他的論理和とする場合にx1乃至x3のうち2つの値を等しくするように乱数を生成している。
(ステップC4)
 各i番目の論理演算部306_iで通信することで、nビット加算器処理
Figure JPOXMLDOC01-appb-I000651
を以下のように計算する。ここで、
Figure JPOXMLDOC01-appb-I000652
とは、たとえば、
Figure JPOXMLDOC01-appb-I000653

Figure JPOXMLDOC01-appb-I000654
を入力とし、
Figure JPOXMLDOC01-appb-I000655
を出力する処理のことである。
Figure JPOXMLDOC01-appb-I000656

Figure JPOXMLDOC01-appb-I000657
ここで、
Figure JPOXMLDOC01-appb-I000658
なので、
Figure JPOXMLDOC01-appb-I000659
が計算できた。なお、
Figure JPOXMLDOC01-appb-I000660
は、
Figure JPOXMLDOC01-appb-I000661
、…、
Figure JPOXMLDOC01-appb-I000662
のシェア列を意味する。各i番目の論理演算部306_iは、
Figure JPOXMLDOC01-appb-I000663
を各データ記憶部308_iに記憶する。
(ステップC5)
 第1の再分散値計算部302_1は、第1のデータ記憶部308_1から
Figure JPOXMLDOC01-appb-I000664
を取り出す。次に、第1の再分散値計算部302_1は、
Figure JPOXMLDOC01-appb-I000665
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
Figure JPOXMLDOC01-appb-I000666
を取出し、
Figure JPOXMLDOC01-appb-I000667
が成立するかを検証する。
 成立した場合、第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は、
Figure JPOXMLDOC01-appb-I000668
を第2のデータ記憶部308_2から取り出す。次に、第2の再分散値計算部302_2は、
Figure JPOXMLDOC01-appb-I000669
を、第4の不正検知部304_4に送信する。第4の不正検知部204_4は、第4のデータ記憶部308_4に記憶されている
Figure JPOXMLDOC01-appb-I000670
を取出し、
Figure JPOXMLDOC01-appb-I000671
が成立するかを検証する。
 成立した場合、第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は、
Figure JPOXMLDOC01-appb-I000672
を第3のデータ記憶部308_3から取り出す。次に、第3の再分散値計算部302_3は、
Figure JPOXMLDOC01-appb-I000673

を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
Figure JPOXMLDOC01-appb-I000674
を取出し、
Figure JPOXMLDOC01-appb-I000675
が成立するかを検証する。
 成立した場合、第4の不正検知部304_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。一致しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、
Figure JPOXMLDOC01-appb-I000676
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップC6)
 各i番目の不正検知部304_iは、上記ステップC4の
Figure JPOXMLDOC01-appb-I000677
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第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に示す環合成に関するフローチャートを説明する。
(ステップD1)
各基本演算シード記憶部307_1、307_2、307_3、307_4は、それぞれ
Figure JPOXMLDOC01-appb-I000678

Figure JPOXMLDOC01-appb-I000679

Figure JPOXMLDOC01-appb-I000680

Figure JPOXMLDOC01-appb-I000681
を記憶する。
 また、各サーバ装置300_1~300_4は疑似ランダム関数
Figure JPOXMLDOC01-appb-I000682
を共有する。なお、
Figure JPOXMLDOC01-appb-I000683
とし、疑似ランダム関数
Figure JPOXMLDOC01-appb-I000684
とする。また、各データ記憶部308_1~308_4に、
Figure JPOXMLDOC01-appb-I000685

Figure JPOXMLDOC01-appb-I000686

Figure JPOXMLDOC01-appb-I000687

Figure JPOXMLDOC01-appb-I000688
を記憶する。さらに、各データ記憶部308_1~308_4に、ループカウンタj(=0)を記憶する。なお、
Figure JPOXMLDOC01-appb-I000689
とし、
Figure JPOXMLDOC01-appb-I000690

Figure JPOXMLDOC01-appb-I000691

Figure JPOXMLDOC01-appb-I000692

Figure JPOXMLDOC01-appb-I000693
とする。
 また、
Figure JPOXMLDOC01-appb-I000694
に関して、サーバ装置300_i(i=1、2、3、4)の内、ある一台の参加者は
Figure JPOXMLDOC01-appb-I000695
の出力を計算できず、他の三台の参加者は
Figure JPOXMLDOC01-appb-I000696
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure JPOXMLDOC01-appb-I000697
の扱いは特に制限されない。本書での
Figure JPOXMLDOC01-appb-I000698
はあくまでも一例である。
(ステップD2)
 各サーバ装置300_iは、各データ記憶部308_iより、ループカウンタjをとりだす。各サーバ装置300_iは、j<nであればステップD3~D7を実行する。j=nであれば、各サーバ装置300_iはステップD8を実行する。
 また、各算術演算部305_1~305_4は、各データ記憶部308_1~308_4から
Figure JPOXMLDOC01-appb-I000699
を取り出す。そして、各算術演算部305_1~305_4は、
Figure JPOXMLDOC01-appb-I000700
を計算し、
Figure JPOXMLDOC01-appb-I000701
を各データ記憶部308_1~308_4に記憶する。なお、第iのデータ記憶部308_iが記憶する
Figure JPOXMLDOC01-appb-I000702

Figure JPOXMLDOC01-appb-I000703
と表記する。また、
Figure JPOXMLDOC01-appb-I000704


とする。
(ステップD3)
 第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3はそれぞれ、第1の基本演算シード記憶部307_1、第2の基本演算シード記憶部307_2、第3の基本演算シード記憶部307_3より、
Figure JPOXMLDOC01-appb-I000705
を取得する。次に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
Figure JPOXMLDOC01-appb-I000706
を生成する。そして、第1の再分散値計算部302_1は、
Figure JPOXMLDOC01-appb-I000707
を第1のシェア構成部303_1に送信する。第3の再分散値計算部302_3は
Figure JPOXMLDOC01-appb-I000708
を、第3のシェア構成部303_3に送信する。第2の再分散値計算部302_2は、第2のデータ記憶部308_2から
Figure JPOXMLDOC01-appb-I000709
を取出し、
Figure JPOXMLDOC01-appb-I000710
を、第4のシェア構成部303_4に送信する。
 同様に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は
Figure JPOXMLDOC01-appb-I000711
を生成する。第2の再分散値計算部302_2は、
Figure JPOXMLDOC01-appb-I000712
を、第2のシェア構成部303_2に送信する。第1の再分散値計算部302_1は、
Figure JPOXMLDOC01-appb-I000713
を、第1のシェア構成部303_1に送信する。また、第3の再分散値計算部302_3は、第3のデータ記憶部308_2から
Figure JPOXMLDOC01-appb-I000714
を取出し、
Figure JPOXMLDOC01-appb-I000715
を、第4のシェア構成部303_4に送信する。
 さらに同様に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
Figure JPOXMLDOC01-appb-I000716
を生成する。第3の再分散値計算部302_3は、
Figure JPOXMLDOC01-appb-I000717
を第3のシェア構成部303_3に送信する。第2の再分散値計算部302_2は、
Figure JPOXMLDOC01-appb-I000718
を、第2のシェア構成部303_2に送信する。また、第1の再分散値計算部302_1は、第1のデータ記憶部308_1から
Figure JPOXMLDOC01-appb-I000719
を取出し、
Figure JPOXMLDOC01-appb-I000720
を、第4のシェア構成部303_4に送信する。
 ここで、
Figure JPOXMLDOC01-appb-I000721
である。
Figure JPOXMLDOC01-appb-I000722
は、たとえば、カウンタであり、各サーバ装置300_1~300_4の間で共有している。
(ステップD4)
 各シェア構成部303_1、303_2、303_3、303_4は上記ステップD3で送信された値と、各i番目のデータ記憶部308_iに記憶された
Figure JPOXMLDOC01-appb-I000723
を用いて、以下の12の式によりシェアを構成する。

Figure JPOXMLDOC01-appb-I000724

Figure JPOXMLDOC01-appb-I000725

Figure JPOXMLDOC01-appb-I000726

Figure JPOXMLDOC01-appb-I000727
                  
Figure JPOXMLDOC01-appb-I000728

Figure JPOXMLDOC01-appb-I000729

Figure JPOXMLDOC01-appb-I000730

Figure JPOXMLDOC01-appb-I000731
                  
Figure JPOXMLDOC01-appb-I000732

Figure JPOXMLDOC01-appb-I000733

Figure JPOXMLDOC01-appb-I000734

Figure JPOXMLDOC01-appb-I000735

Figure JPOXMLDOC01-appb-I000736

Figure JPOXMLDOC01-appb-I000737

Figure JPOXMLDOC01-appb-I000738
が各i番目のデータ記憶部308_iに記憶される。
(ステップD5)
 上記ステップB5と同じ処理が行われる。
(ステップD6)
 第1の再分散値計算部302_1は、第1のデータ記憶部308_1から
Figure JPOXMLDOC01-appb-I000739
を取り出す。次に、第1の再分散値計算部302_1は、
Figure JPOXMLDOC01-appb-I000740
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
Figure JPOXMLDOC01-appb-I000741
を取出し、
Figure JPOXMLDOC01-appb-I000742
が成り立つかを検証する。
 成り立つ場合、第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から
Figure JPOXMLDOC01-appb-I000743
を取り出す。次に、第2の再分散値計算部302_2は、
Figure JPOXMLDOC01-appb-I000744
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
Figure JPOXMLDOC01-appb-I000745
を取出し
Figure JPOXMLDOC01-appb-I000746
が成立するかを検証する。
 成立した場合、第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から
Figure JPOXMLDOC01-appb-I000747
を取り出す。次に、第3の再分散値計算部302_3は、
Figure JPOXMLDOC01-appb-I000748
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
Figure JPOXMLDOC01-appb-I000749
を取出し、
Figure JPOXMLDOC01-appb-I000750
が成立するかを検証する。
 成立した場合、第4の不正検知部304_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。一致しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、
Figure JPOXMLDOC01-appb-I000751
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップD7)
 各i番目の不正検知部304_iは、上記ステップD5の
Figure JPOXMLDOC01-appb-I000752
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第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と同じ処理が行われる。
 以上、説明した第3の実施形態においては、第1の実施形態および第2の実施形態における効果と同じ効果を奏する。ただし、第1の実施形態における第1の効果および第2の実施形態における第1の効果に関して、第3の実施形態の方が通信コストの点で効率が良い。第3の実施形態では、第1乃至第2の実施形態と同様、ビット分解に関して
Figure JPOXMLDOC01-appb-I000753
の計算を2回、環合成に関して
Figure JPOXMLDOC01-appb-I000754
の計算によって実行できる。第3の実施形態と第1乃至第2の実施形態とで異なる点は、加算器計算前の再分散が効率よく行われている点である。リップルキャリー型のnビット加算器を用いて不正検知に関する処理を並列に行った場合、第3の実施形態では、ビット分解の通信コストとして、13n-10ビット・n+1ラウンドを要する。環合成の通信コストとして、13n-13ビット・2n-2ラウンドを要する。これにより、第3の実施形態の方が第1及び第2の実施形態よりも通信コストの点で効率が良い。なお、本願開示の実施はリップルキャリー型のnビット加算器に限定されない。キャリールックアヘッド型やパラレルプリフィックス型などのnビット加算器を用いても良い。
[第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の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I000755
、あるいは第1乃至第4のデータ記憶部408_1~408_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I000756
、あるいは第1乃至第4のサーバ装置400_1~400_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I000757

に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I000758
の値を知られることなく、
Figure JPOXMLDOC01-appb-I000759
を計算し、第1乃至第4のデータ記憶部408_1~408_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置400_1~400_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置400_1~400_4ではない外部にシェアが送信され、シェアが復元されてもよい。
 また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置400_1~400_4の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I000760
、あるいは第1乃至第4のデータ記憶部408_1~408_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I000761
、あるいは第1乃至第4のサーバ装置400_1~400_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I000762
に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I000763
の値を知られることなく、
Figure JPOXMLDOC01-appb-I000764
を計算し、第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に示す環合成に関するフローチャートを説明する。
(ステップD´1)
各基本演算シード記憶部407_1、407_2、407_3、407_4は、それぞれ
Figure JPOXMLDOC01-appb-I000765

Figure JPOXMLDOC01-appb-I000766

Figure JPOXMLDOC01-appb-I000767

Figure JPOXMLDOC01-appb-I000768
を記憶する。
 また、各サーバ装置400_1~400_4は疑似ランダム関数
Figure JPOXMLDOC01-appb-I000769
を共有する。なお、
Figure JPOXMLDOC01-appb-I000770
とし、疑似ランダム関数
Figure JPOXMLDOC01-appb-I000771
とする。また、各データ記憶部408_1~408_4に、
Figure JPOXMLDOC01-appb-I000772

Figure JPOXMLDOC01-appb-I000773

Figure JPOXMLDOC01-appb-I000774

Figure JPOXMLDOC01-appb-I000775
を記憶する。さらに、各データ記憶部408_1~408_4に、ループカウンタj(=1)を記憶する。なお、
Figure JPOXMLDOC01-appb-I000776
とし、
Figure JPOXMLDOC01-appb-I000777

Figure JPOXMLDOC01-appb-I000778

Figure JPOXMLDOC01-appb-I000779

Figure JPOXMLDOC01-appb-I000780
とする。
また、
Figure JPOXMLDOC01-appb-I000781
に関して、サーバ装置400_i(i=1、2、3、4)の内、ある一台の参加者は
Figure JPOXMLDOC01-appb-I000782
の出力を計算できず、他の三台の参加者は
Figure JPOXMLDOC01-appb-I000783
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure JPOXMLDOC01-appb-I000784
の扱いは特に制限されない。本書での
Figure JPOXMLDOC01-appb-I000785
はあくまでも一例である。
(ステップD´2)
 各サーバ装置400_iは、以下に示す式のように
Figure JPOXMLDOC01-appb-I000786
の値を定める。
Figure JPOXMLDOC01-appb-I000787

Figure JPOXMLDOC01-appb-I000788
 各データ記憶部408_1~408_4は、それぞれ
Figure JPOXMLDOC01-appb-I000789

Figure JPOXMLDOC01-appb-I000790

Figure JPOXMLDOC01-appb-I000791

Figure JPOXMLDOC01-appb-I000792

Figure JPOXMLDOC01-appb-I000793
を記憶する。
 第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3はそれぞれ、第1の基本演算シード記憶部407_1、第2の基本演算シード記憶部407_2、第3の基本演算シード記憶部407_3より、
Figure JPOXMLDOC01-appb-I000794
を取得する。次に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
Figure JPOXMLDOC01-appb-I000795
を生成する。
 そして、第1の再分散値計算部402_1は、
Figure JPOXMLDOC01-appb-I000796
を第1のシェア構成部403_1に送信する。第3の再分散値計算部402_3は
Figure JPOXMLDOC01-appb-I000797
を、第3のシェア構成部403_3に送信する。第2の再分散値計算部402_2は、第2のデータ記憶部408_2から
Figure JPOXMLDOC01-appb-I000798
を取出し、
Figure JPOXMLDOC01-appb-I000799
を、第4のシェア構成部403_4に送信する。
 同様に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
Figure JPOXMLDOC01-appb-I000800
を生成する。第2の再分散値計算部402_2は、
Figure JPOXMLDOC01-appb-I000801
を、第2のシェア構成部403_2に送信する。第1の再分散値計算部402_3は、
Figure JPOXMLDOC01-appb-I000802
を、第1のシェア構成部403_1に送信する。また、第3の再分散値計算部402_3は、第3のデータ記憶部408_3から
Figure JPOXMLDOC01-appb-I000803
を取出し、
Figure JPOXMLDOC01-appb-I000804
を、第4のシェア構成部403_4に送信する。
 さらに同様に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
Figure JPOXMLDOC01-appb-I000805
を生成する。第3の再分散値計算部402_3は、
Figure JPOXMLDOC01-appb-I000806
を第3のシェア構成部403_3に送信する。第2の再分散値計算部402_2は、
Figure JPOXMLDOC01-appb-I000807
を、第2のシェア構成部403_2に送信する。また、第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
Figure JPOXMLDOC01-appb-I000808
を取出し、
Figure JPOXMLDOC01-appb-I000809
を、第4のシェア構成部403_4に送信する。
 ここで、
Figure JPOXMLDOC01-appb-I000810
である。
Figure JPOXMLDOC01-appb-I000811
は、たとえば、カウンタであり、各サーバ装置400_1~400_4の間で共有している。
(ステップD´3)
 各シェア構成部403_1、403_2、403_3、403_4は上記ステップD´2で送信された値と、各i番目のデータ記憶部408_iに記憶された
Figure JPOXMLDOC01-appb-I000812
を用いて、以下の12の式によりシェアを構成する。

Figure JPOXMLDOC01-appb-I000813

Figure JPOXMLDOC01-appb-I000814

Figure JPOXMLDOC01-appb-I000815

Figure JPOXMLDOC01-appb-I000816
                  
Figure JPOXMLDOC01-appb-I000817

Figure JPOXMLDOC01-appb-I000818

Figure JPOXMLDOC01-appb-I000819

Figure JPOXMLDOC01-appb-I000820
                  
Figure JPOXMLDOC01-appb-I000821

Figure JPOXMLDOC01-appb-I000822

Figure JPOXMLDOC01-appb-I000823

Figure JPOXMLDOC01-appb-I000824

Figure JPOXMLDOC01-appb-I000825

Figure JPOXMLDOC01-appb-I000826

Figure JPOXMLDOC01-appb-I000827
が各i番目のデータ記憶部408_iに記憶される。
(ステップD´4)
 第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
Figure JPOXMLDOC01-appb-I000828
を取り出す。次に、第1の再分散値計算部402_1は、
Figure JPOXMLDOC01-appb-I000829
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
Figure JPOXMLDOC01-appb-I000830
を取出し、
Figure JPOXMLDOC01-appb-I000831
が成り立つかを検証する。
 成り立つ場合、第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から
Figure JPOXMLDOC01-appb-I000832
を取り出す。次に、第2の再分散値計算部402_2は、
Figure JPOXMLDOC01-appb-I000833
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
Figure JPOXMLDOC01-appb-I000834
を取出し
Figure JPOXMLDOC01-appb-I000835
が成立するかを検証する。
 成立した場合、第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から
Figure JPOXMLDOC01-appb-I000836
を取り出す。次に、第3の再分散値計算部402_3は、
Figure JPOXMLDOC01-appb-I000837
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
Figure JPOXMLDOC01-appb-I000838
を取出し、
Figure JPOXMLDOC01-appb-I000839
が成立するかを検証する。
 成立した場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。一致しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、
Figure JPOXMLDOC01-appb-I000840
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップD´5)
 各サーバ装置400_iは、各データ記憶部408_iより、ループカウンタjをとりだす。各サーバ装置400_iは、j<nであればステップD´6~D´10を実行する。各サーバ装置400_iは、j=nであれば、ステップD´11を実行する。
(ステップD´6)
 上記ステップB´6と同じ処理なので説明を割愛する。
(ステップD´7)
 第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3はそれぞれ、第1の基本演算シード記憶部407_1、第2の基本演算シード記憶部407_2、第3の基本演算シード記憶部407_3より、
Figure JPOXMLDOC01-appb-I000841
を取得する。次に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
Figure JPOXMLDOC01-appb-I000842
を生成する。
 そして、第1の再分散値計算部402_1は、
Figure JPOXMLDOC01-appb-I000843
を第1のシェア構成部403_1に送信する。第3の再分散値計算部402_2は
Figure JPOXMLDOC01-appb-I000844
を、第3のシェア構成部403_4に送信する。第2の再分散値計算部402_2は、第2のデータ記憶部408_2から
Figure JPOXMLDOC01-appb-I000845
を取出し、
Figure JPOXMLDOC01-appb-I000846
を、第4のシェア構成部403_4に送信する。
 同様に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
Figure JPOXMLDOC01-appb-I000847
を生成する。第2の再分散値計算部402_2は、
Figure JPOXMLDOC01-appb-I000848
を、第2のシェア構成部403_2に送信する。第1の再分散値計算部402_3は、
Figure JPOXMLDOC01-appb-I000849
を、第1のシェア構成部403_1に送信する。また、第3の再分散値計算部402_3は、第3のデータ記憶部408_3から
Figure JPOXMLDOC01-appb-I000850
を取出し、
Figure JPOXMLDOC01-appb-I000851
を、第4のシェア構成部403_4に送信する。
 さらに同様に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
Figure JPOXMLDOC01-appb-I000852

Figure JPOXMLDOC01-appb-I000853
を生成する。第3の再分散値計算部402_3は、
Figure JPOXMLDOC01-appb-I000854
を第3のシェア構成部403_3に送信する。第2の再分散値計算部402_2は、
Figure JPOXMLDOC01-appb-I000855
を、第2のシェア構成部403_2に送信する。また、第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
Figure JPOXMLDOC01-appb-I000856
を取出し、
Figure JPOXMLDOC01-appb-I000857
を、第4のシェア構成部403_4に送信する。
 ここで、
Figure JPOXMLDOC01-appb-I000858
である。
Figure JPOXMLDOC01-appb-I000859
は、たとえば、カウンタであり、各サーバ装置400_1~400_4の間で共有している。
 また、論理演算部406_i(i=1、2、3、4)は、
Figure JPOXMLDOC01-appb-I000860

Figure JPOXMLDOC01-appb-I000861

Figure JPOXMLDOC01-appb-I000862

Figure JPOXMLDOC01-appb-I000863
および
Figure JPOXMLDOC01-appb-I000864
を入力に取り、
Figure JPOXMLDOC01-appb-I000865
を通信を伴って計算することで、
Figure JPOXMLDOC01-appb-I000866
を得る。論理演算部406_i(i=1、2、3、4)は、データ記憶部408_i(i=1、2、3、4)に
Figure JPOXMLDOC01-appb-I000867
を記憶する。
(ステップD´8)
 各シェア構成部403_1、403_2、403_3、403_4は上記ステップD´7で送信された値と、各i番目のデータ記憶部408_iに記憶された
Figure JPOXMLDOC01-appb-I000868
を用いて、以下の12の式によりシェアを構成する。

Figure JPOXMLDOC01-appb-I000869

Figure JPOXMLDOC01-appb-I000870

Figure JPOXMLDOC01-appb-I000871

Figure JPOXMLDOC01-appb-I000872
                  
Figure JPOXMLDOC01-appb-I000873

Figure JPOXMLDOC01-appb-I000874

Figure JPOXMLDOC01-appb-I000875

Figure JPOXMLDOC01-appb-I000876
                  
Figure JPOXMLDOC01-appb-I000877

Figure JPOXMLDOC01-appb-I000878

Figure JPOXMLDOC01-appb-I000879

Figure JPOXMLDOC01-appb-I000880

Figure JPOXMLDOC01-appb-I000881

Figure JPOXMLDOC01-appb-I000882

Figure JPOXMLDOC01-appb-I000883
が各i番目のデータ記憶部408_iに記憶される。また、データ記憶部408_iはループカウンタ
Figure JPOXMLDOC01-appb-I000884
を取り出し、j=j+1として値を更新する。
(ステップD´9)
 第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
Figure JPOXMLDOC01-appb-I000885
を取り出す。次に、第1の再分散値計算部302_1は、
Figure JPOXMLDOC01-appb-I000886
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
Figure JPOXMLDOC01-appb-I000887
を取出し、
Figure JPOXMLDOC01-appb-I000888
が成り立つかを検証する。
 成り立つ場合、第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から
Figure JPOXMLDOC01-appb-I000889
を取り出す。次に、第2の再分散値計算部402_2は、
Figure JPOXMLDOC01-appb-I000890
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
Figure JPOXMLDOC01-appb-I000891
を取出し
Figure JPOXMLDOC01-appb-I000892
が成立するかを検証する。
 成立した場合、第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から
Figure JPOXMLDOC01-appb-I000893
を取り出す。次に、第3の再分散値計算部402_3は、
Figure JPOXMLDOC01-appb-I000894
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
Figure JPOXMLDOC01-appb-I000895
を取出し、
Figure JPOXMLDOC01-appb-I000896
が成立するかを検証する。
 成立した場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。一致しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列して行う場合、
Figure JPOXMLDOC01-appb-I000897
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。なお、ステップD´9は、ループごとではなく、j=n-1のときに全ループ分を並列に実行しても良い。また、ステップD´9は、上記ステップD´4と並列に実行することも可能である。
(ステップD´10)
 各i番目の不正検知部404_iは、上記ステップD´7の
Figure JPOXMLDOC01-appb-I000898
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第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と同じ処理なので説明を割愛する。
 以上、説明した第4の実施形態においては、第1乃至第3の実施形態における効果と同じ効果を奏する。ただし、第3の実施形態における第1の効果に関して、第4の実施形態の方が環合成における通信コストの点で効率が良い。キャリー計算処理
Figure JPOXMLDOC01-appb-I000899
を分割して考え、シェアの再分散とキャリー計算における通信を伴う処理を並列して行うことで、通信ラウンドの削減を実現している。このため、第4の実施形態における環合成の通信コストは、(13n-13)ビット・n-1ラウンドとなる。
[第5の実施形態]
 図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の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I000900
、あるいは第1乃至第4のデータ記憶部508_1~508_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I000901
、あるいは第1乃至第4のサーバ装置500_1~500_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I000902

に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I000903
の値を知られることなく、
Figure JPOXMLDOC01-appb-I000904
を計算し、第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に示すビット分解に関するフローチャートを説明する。
(ステップE1)
 各基本演算シード記憶部507_1、507_2、507_3、507_4は、それぞれ
Figure JPOXMLDOC01-appb-I000905

Figure JPOXMLDOC01-appb-I000906

Figure JPOXMLDOC01-appb-I000907

Figure JPOXMLDOC01-appb-I000908
を記憶する。
 また、各サーバ装置500_1~500_4は疑似ランダム関数
Figure JPOXMLDOC01-appb-I000909
を共有する。なお、
Figure JPOXMLDOC01-appb-I000910
とし、疑似ランダム関数
Figure JPOXMLDOC01-appb-I000911
とする。また、各データ記憶部508_1~508_4に、それぞれ
Figure JPOXMLDOC01-appb-I000912

Figure JPOXMLDOC01-appb-I000913

Figure JPOXMLDOC01-appb-I000914

Figure JPOXMLDOC01-appb-I000915
を記憶する。ここで、
Figure JPOXMLDOC01-appb-I000916
を文字列連結演算子とする。なお、
Figure JPOXMLDOC01-appb-I000917
に関して、サーバ装置500_i(i=1、2、3、4)の内、ある一台のサーバ装置は
Figure JPOXMLDOC01-appb-I000918
の出力を計算できず、他の三台のサーバ装置は
Figure JPOXMLDOC01-appb-I000919
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure JPOXMLDOC01-appb-I000920
の扱いは特に制限されない。本書での
Figure JPOXMLDOC01-appb-I000921
はあくまでも一例である。
(ステップE2)
 第1、第2、第3のマスク値計算部501_1、501_2、501_3は
Figure JPOXMLDOC01-appb-I000922
を計算し、第1、第2、第3のデータ記憶部509_1、509_2、509_3に
Figure JPOXMLDOC01-appb-I000923
を記憶する。第2のマスク値計算部501_2は、データ記憶部508_2からシェア
Figure JPOXMLDOC01-appb-I000924
を取り出す。第2のマスク値計算部501_2は、
Figure JPOXMLDOC01-appb-I000925
を生成し、
Figure JPOXMLDOC01-appb-I000926
を第4のサーバ装置500_4に送信する。第4のサーバ装置500_4は、第4のデータ記憶部508_4に
Figure JPOXMLDOC01-appb-I000927
を記憶する。
 ここで、
Figure JPOXMLDOC01-appb-I000928
である。
Figure JPOXMLDOC01-appb-I000929
は、たとえば、カウンタであり、各サーバ装置500_1~500_4の間で共有している。
 このように、第iのマスク値計算部501_iは、シェア(例えば、上記の例ではx)をマスクするためのマスク値(例えば、上記の例ではr)を計算する。当該計算されたマスク値によりマスクされたシェア(上記の例では、y=x+r)が他のサーバ装置に送信される。
(ステップE3)
 各シェア構成部503_1、503_2、503_3、503_4は各データ記憶部508_1、508_2、508_3、508_4からそれぞれ、
Figure JPOXMLDOC01-appb-I000930

Figure JPOXMLDOC01-appb-I000931

Figure JPOXMLDOC01-appb-I000932

Figure JPOXMLDOC01-appb-I000933
を取り出し、以下の16の式によりシェアを構成する。

Figure JPOXMLDOC01-appb-I000934

Figure JPOXMLDOC01-appb-I000935

Figure JPOXMLDOC01-appb-I000936

Figure JPOXMLDOC01-appb-I000937

Figure JPOXMLDOC01-appb-I000938

Figure JPOXMLDOC01-appb-I000939

Figure JPOXMLDOC01-appb-I000940

Figure JPOXMLDOC01-appb-I000941

Figure JPOXMLDOC01-appb-I000942

Figure JPOXMLDOC01-appb-I000943

Figure JPOXMLDOC01-appb-I000944

Figure JPOXMLDOC01-appb-I000945

Figure JPOXMLDOC01-appb-I000946

Figure JPOXMLDOC01-appb-I000947

Figure JPOXMLDOC01-appb-I000948

Figure JPOXMLDOC01-appb-I000949
ここで、
Figure JPOXMLDOC01-appb-I000950
に対し、
Figure JPOXMLDOC01-appb-I000951

Figure JPOXMLDOC01-appb-I000952
のj番目のビット(j=0、...、n-1)を意味する。
Figure JPOXMLDOC01-appb-I000953

Figure JPOXMLDOC01-appb-I000954

Figure JPOXMLDOC01-appb-I000955

Figure JPOXMLDOC01-appb-I000956
は各i番目のデータ記憶部508_iに記憶される。このように、第iのシェア構成部503_iは、送信されたマスク値を用いて型変換用のシェアを構成する。
(ステップE4)
 各i番目の論理演算部506_iで通信することで、nビット加算器処理
Figure JPOXMLDOC01-appb-I000957
を以下のように計算する。ここで、
Figure JPOXMLDOC01-appb-I000958
とは、たとえば、
Figure JPOXMLDOC01-appb-I000959

Figure JPOXMLDOC01-appb-I000960
を入力とし、
Figure JPOXMLDOC01-appb-I000961
を出力する処理のことである。
Figure JPOXMLDOC01-appb-I000962

Figure JPOXMLDOC01-appb-I000963


Figure JPOXMLDOC01-appb-I000964
ここで、
Figure JPOXMLDOC01-appb-I000965
なので、
Figure JPOXMLDOC01-appb-I000966
が計算できた。なお、
Figure JPOXMLDOC01-appb-I000967
は、
Figure JPOXMLDOC01-appb-I000968
、…、
Figure JPOXMLDOC01-appb-I000969
のシェア列を意味する。各i番目の論理演算部506_iは、
Figure JPOXMLDOC01-appb-I000970
を各データ記憶部508_iに記憶する。
(ステップE5)
 第1のサーバ装置500_1は、上記ステップE2における第2のサーバ装置500_2と同様、第1のマスク値計算部501_1は、
Figure JPOXMLDOC01-appb-I000971
を生成し、
Figure JPOXMLDOC01-appb-I000972
を第4のサーバ装置500_4に送信する。第4のサーバ装置500_4は、第4のデータ記憶部508_4に
Figure JPOXMLDOC01-appb-I000973
を記憶する。第4の不正検知部504_4は、第4のデータ記憶部508_4から
Figure JPOXMLDOC01-appb-I000974
を取り出し、
Figure JPOXMLDOC01-appb-I000975
が成り立つか、検証する。
Figure JPOXMLDOC01-appb-I000976
が成り立つ場合は、第4の不正検知部504_4はsuccessの文字列を各サーバ装置500_1、500_2、500_3にブロードキャストし、次のステップに進む。
Figure JPOXMLDOC01-appb-I000977
が成り立たない場合は、第4の不正検知部504_4はabortの文字列を各サーバ装置500_1、500_2、500_3にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列に行う際に、各ステップE5における
Figure JPOXMLDOC01-appb-I000978
を連結してハッシュ値
Figure JPOXMLDOC01-appb-I000979
を計算し、
Figure JPOXMLDOC01-appb-I000980
に対しても連結した値に対するハッシュ値
Figure JPOXMLDOC01-appb-I000981
を計算することで、
Figure JPOXMLDOC01-appb-I000982
が成り立つか否かの検証を
Figure JPOXMLDOC01-appb-I000983
が成り立つか否かの検証と捉えてもよい。このとき、
Figure JPOXMLDOC01-appb-I000984
に関する通信量は処理全体の計算量に対し、無視できるものと捉えることができる。
(ステップE6)
 各i番目の不正検知部504_iは、上記ステップE4の
Figure JPOXMLDOC01-appb-I000985
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第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を参照すると、第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の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I000986
、あるいは第1乃至第4のデータ記憶部608_1~608_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I000987
、あるいは第1乃至第4のサーバ装置600_1~600_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I000988

に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I000989
の値を知られることなく、
Figure JPOXMLDOC01-appb-I000990
を計算し、第1乃至第4のデータ記憶部608_1~608_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置600_1~600_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置600_1~600_4ではない外部にシェアが送信され、復元されてもよい。
 また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置600_1~600_4の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I000991
、あるいは第1乃至第4のデータ記憶部608_1~608_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I000992
、あるいは第1乃至第4のサーバ装置600_1~600_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I000993
に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I000994
の値を知られることなく、
Figure JPOXMLDOC01-appb-I000995
を計算し、第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に示すビット分解に関するフローチャートを説明する。
(ステップF1)
 各基本演算シード記憶部607_1、607_2、607_3、607_4は、それぞれ
Figure JPOXMLDOC01-appb-I000996

Figure JPOXMLDOC01-appb-I000997

Figure JPOXMLDOC01-appb-I000998

Figure JPOXMLDOC01-appb-I000999
を記憶する。
 また、各サーバ装置600_1~600_4は疑似ランダム関数
Figure JPOXMLDOC01-appb-I001000
を共有する。なお、
Figure JPOXMLDOC01-appb-I001001
とし、疑似ランダム関数
Figure JPOXMLDOC01-appb-I001002
とする。また、各データ記憶部608_1~608_4に、それぞれ
Figure JPOXMLDOC01-appb-I001003

Figure JPOXMLDOC01-appb-I001004

Figure JPOXMLDOC01-appb-I001005

Figure JPOXMLDOC01-appb-I001006
を記憶する。なお、
Figure JPOXMLDOC01-appb-I001007
に関して、サーバ装置600_i(i=1、2、3、4)の内、ある一台の参加者は
Figure JPOXMLDOC01-appb-I001008
の出力を計算できず、他の三台の参加者は
Figure JPOXMLDOC01-appb-I001009
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure JPOXMLDOC01-appb-I001010
の扱いは特に制限されない。本書での
Figure JPOXMLDOC01-appb-I001011
はあくまでも一例である。
(ステップF2)
 第1、第2、第3のマスク値計算部601_1、601_2、601_3は
Figure JPOXMLDOC01-appb-I001012
を計算し、第1、第2、第3のデータ記憶部608_1、608_2、608_3に
Figure JPOXMLDOC01-appb-I001013
を記憶する。第2のマスク値計算部601_2は、データ記憶部608_2からシェア
Figure JPOXMLDOC01-appb-I001014
を取り出す。第2のマスク値計算部601_2は、
Figure JPOXMLDOC01-appb-I001015
を生成し、
Figure JPOXMLDOC01-appb-I001016
を第4のサーバ装置600_4に送信する。第4のサーバ装置600_4は、第4のデータ記憶部608_4に
Figure JPOXMLDOC01-appb-I001017
を記憶する。
 次に、第1の再分散値計算部602_1と第2の再分散値計算部602_2と第3の再分散値計算部602_3はそれぞれ、第1の基本演算シード記憶部607_1、第2の基本演算シード記憶部607_2、第3の基本演算シード記憶部607_3より、
Figure JPOXMLDOC01-appb-I001018
を取得する。そして、第1の再分散値計算部602_1と第2の再分散値計算部602_2と第3の再分散値計算部602_3は
Figure JPOXMLDOC01-appb-I001019
を生成する。さらに、第3の再分散値計算部602_3は、
Figure JPOXMLDOC01-appb-I001020
を第3のデータ記憶部608_3に記憶する。第1の再分散値計算部602_1は、
Figure JPOXMLDOC01-appb-I001021
を、第1のシェア構成部603_1に送信する。また、第2の再分散値計算部602_2は、第2のデータ記憶部608_2から
Figure JPOXMLDOC01-appb-I001022
を取り出し、
Figure JPOXMLDOC01-appb-I001023
を、第4のシェア構成部603_4に送信する。
 ここで、
Figure JPOXMLDOC01-appb-I001024
である。
Figure JPOXMLDOC01-appb-I001025
は、たとえば、カウンタであり、各サーバ装置600_1~600_4の間で共有している。
(ステップF3)
 各シェア構成部603_1、603_2、603_3、603_4は、各データ記憶部608_1、608_2、608_3、608_4からそれぞれ、
Figure JPOXMLDOC01-appb-I001026

Figure JPOXMLDOC01-appb-I001027

Figure JPOXMLDOC01-appb-I001028

Figure JPOXMLDOC01-appb-I001029
を取り出す。さらに上記ステップF2で送信された値を用いて、以下の12の式によりシェアを構成する。

Figure JPOXMLDOC01-appb-I001030

Figure JPOXMLDOC01-appb-I001031

Figure JPOXMLDOC01-appb-I001032

Figure JPOXMLDOC01-appb-I001033

Figure JPOXMLDOC01-appb-I001034

Figure JPOXMLDOC01-appb-I001035

Figure JPOXMLDOC01-appb-I001036

Figure JPOXMLDOC01-appb-I001037

Figure JPOXMLDOC01-appb-I001038

Figure JPOXMLDOC01-appb-I001039

Figure JPOXMLDOC01-appb-I001040

Figure JPOXMLDOC01-appb-I001041
ここで、
Figure JPOXMLDOC01-appb-I001042
に対し、
Figure JPOXMLDOC01-appb-I001043

Figure JPOXMLDOC01-appb-I001044
のj番目のビット(j=0、...、n-1)を意味する。
Figure JPOXMLDOC01-appb-I001045

Figure JPOXMLDOC01-appb-I001046

Figure JPOXMLDOC01-appb-I001047
が各i番目のデータ記憶部608_iに記憶される。
(ステップF4)
 各i番目の論理演算部606_iで通信することで、nビット加算器処理
Figure JPOXMLDOC01-appb-I001048
を以下のように計算する。ここで、
Figure JPOXMLDOC01-appb-I001049
とは、たとえば、
Figure JPOXMLDOC01-appb-I001050

Figure JPOXMLDOC01-appb-I001051
を入力とし、
Figure JPOXMLDOC01-appb-I001052
を出力する処理のことである。
Figure JPOXMLDOC01-appb-I001053

Figure JPOXMLDOC01-appb-I001054
ここで、
Figure JPOXMLDOC01-appb-I001055
なので、
Figure JPOXMLDOC01-appb-I001056
が計算できた。なお、
Figure JPOXMLDOC01-appb-I001057
は、
Figure JPOXMLDOC01-appb-I001058
、…、
Figure JPOXMLDOC01-appb-I001059
のシェア列を意味する。各i番目の論理演算部606_iは、
Figure JPOXMLDOC01-appb-I001060
を各データ記憶部608_iに記憶する。
(ステップF5)
 第1のサーバ装置600_1は、上記ステップF2における第2のサーバ装置600_2と同様、第1のマスク値計算部601_1は、
Figure JPOXMLDOC01-appb-I001061
を生成し、
Figure JPOXMLDOC01-appb-I001062
を第4のサーバ装置600_4に送信する。第4のサーバ装置600_4は、第4のデータ記憶部608_4に
Figure JPOXMLDOC01-appb-I001063
を記憶する。第4の不正検知部604_4は、第4のデータ記憶部608_4から
Figure JPOXMLDOC01-appb-I001064
を取り出し、
Figure JPOXMLDOC01-appb-I001065
が成り立つか、検証する。
Figure JPOXMLDOC01-appb-I001066
が成り立つ場合は、第4の不正検知部604_4はsuccessの文字列を各サーバ装置600_1、600_2、600_3にブロードキャストし、次のステップに進む。
Figure JPOXMLDOC01-appb-I001067
が成り立たない場合は、第4の不正検知部604_4はabortの文字列を各サーバ装置600_1、600_2、600_3にブロードキャストし、プロトコルを中断する。
 第2の再分散値計算部602_2は、
Figure JPOXMLDOC01-appb-I001068
を第2のデータ記憶部608_2から取り出す。次に、第2の再分散値計算部602_2は、
Figure JPOXMLDOC01-appb-I001069
を、第4の不正検知部604_4に送信する。第4の不正検知部604_4は、第4のデータ記憶部608_4に記憶されている
Figure JPOXMLDOC01-appb-I001070
を取出し、
Figure JPOXMLDOC01-appb-I001071
が成立するかを検証する。
 成立した場合、第4の不正検知部604_4は、successの文字列を各サーバ装置600_1、600_2、600_3、600_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部604_4は、abortの文字列を各サーバ装置600_1、600_2、600_3、600_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して実行する場合、
Figure JPOXMLDOC01-appb-I001072

Figure JPOXMLDOC01-appb-I001073
に関しては、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップF6)
 各i番目の不正検知部604_iは、上記ステップF4の
Figure JPOXMLDOC01-appb-I001074
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第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の実施形態と同様、ビット分解に関して
Figure JPOXMLDOC01-appb-I001075
の計算を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を参照すると、第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の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I001076
、あるいは第1乃至第4のデータ記憶部708_1~708_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I001077
、あるいは第1乃至第4のサーバ装置700_1~700_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I001078

に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I001079
の値を知られることなく、
Figure JPOXMLDOC01-appb-I001080
を計算し、第1乃至第4のデータ記憶部708_1~708_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置700_1~700_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置700_1~700_4ではない外部にシェアが送信され、復元されてもよい。
 また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置700_1~700_4の内のいずれかの装置が入力した値
Figure JPOXMLDOC01-appb-I001081
、あるいは第1乃至第4のデータ記憶部708_1~708_4に記憶されたシェア
Figure JPOXMLDOC01-appb-I001082
、あるいは第1乃至第4のサーバ装置700_1~700_4ではない外部から入力されたシェア
Figure JPOXMLDOC01-appb-I001083
に対し、その入力や計算過程の値から
Figure JPOXMLDOC01-appb-I001084
の値を知られることなく、
Figure JPOXMLDOC01-appb-I001085
を計算し、第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に示すビット分解に関するフローチャートを説明する。
(ステップG1)
 各基本演算シード記憶部707_1、707_2、707_3、707_4は、それぞれ
Figure JPOXMLDOC01-appb-I001086

Figure JPOXMLDOC01-appb-I001087

Figure JPOXMLDOC01-appb-I001088

Figure JPOXMLDOC01-appb-I001089
を記憶する。
 また、各サーバ装置700_1~700_4は疑似ランダム関数
Figure JPOXMLDOC01-appb-I001090
を共有する。なお、
Figure JPOXMLDOC01-appb-I001091
とし、疑似ランダム関数
Figure JPOXMLDOC01-appb-I001092
とする。また、各データ記憶部708_1~708_4に、それぞれ
Figure JPOXMLDOC01-appb-I001093

Figure JPOXMLDOC01-appb-I001094

Figure JPOXMLDOC01-appb-I001095

Figure JPOXMLDOC01-appb-I001096
を記憶する。なお、
Figure JPOXMLDOC01-appb-I001097
に関して、サーバ装置700_i(i=1、2、3、4)の内、ある一台の参加者は
Figure JPOXMLDOC01-appb-I001098
の出力を計算できず、他の三台の参加者は
Figure JPOXMLDOC01-appb-I001099
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure JPOXMLDOC01-appb-I001100
の扱いは特に制限されない。本書での
Figure JPOXMLDOC01-appb-I001101
はあくまでも一例である。
(ステップG2)
 第1、第2、第3のマスク値計算部701_1、701_2、701_3は
Figure JPOXMLDOC01-appb-I001102
を計算し、第1、第2、第3のデータ記憶部708_1、708_2、708_3に
Figure JPOXMLDOC01-appb-I001103
を記憶する。第2のマスク値計算部701_2は、データ記憶部708_2からシェア
Figure JPOXMLDOC01-appb-I001104
を取り出す。第2のマスク値計算部701_2は、
Figure JPOXMLDOC01-appb-I001105
を生成し、
Figure JPOXMLDOC01-appb-I001106
を第4のサーバ装置700_4に送信する。第4のサーバ装置700_4は、第4のデータ記憶部708_4に
Figure JPOXMLDOC01-appb-I001107
を記憶する。
 次に、第1の再分散値計算部702_1と第2の再分散値計算部702_2と第3の再分散値計算部702_3はそれぞれ、第1の基本演算シード記憶部707_1、第2の基本演算シード記憶部707_2、第3の基本演算シード記憶部707_3より、
Figure JPOXMLDOC01-appb-I001108
を取得する。そして、第1の再分散値計算部702_1と第2の再分散値計算部702_2と第3の再分散値計算部702_3は
Figure JPOXMLDOC01-appb-I001109
を生成する。さらに、第1の再分散値計算部702_1は、
Figure JPOXMLDOC01-appb-I001110
を第1のデータ記憶部708_1に記憶する。第3の再分散値計算部702_3は、
Figure JPOXMLDOC01-appb-I001111
を、第3のシェア構成部703_3に送信する。また、第2の再分散値計算部702_2は、第2のデータ記憶部708_2から
Figure JPOXMLDOC01-appb-I001112
を取り出し、
Figure JPOXMLDOC01-appb-I001113
を、第4のシェア構成部703_4に送信する。
ここで、
Figure JPOXMLDOC01-appb-I001114
である。
Figure JPOXMLDOC01-appb-I001115
は、たとえば、カウンタであり、各サーバ装置700_1~700_4の間で共有している。
(ステップG3)
 第2の再分散値計算部702_2は、第2の基本演算シード記憶部707_2から
Figure JPOXMLDOC01-appb-I001116
を取得する。第3の再分散値計算部702_3は、第3の基本演算シード記憶部707_3から
Figure JPOXMLDOC01-appb-I001117
を取得する。第4の再分散値計算部702_4は、第4の基本演算シード記憶部707_4から
Figure JPOXMLDOC01-appb-I001118
を取得する。また、第4の再分散値計算部702_4は、第4のデータ記憶部708_4から
Figure JPOXMLDOC01-appb-I001119
を取得する。
 ここで、第2の再分散値計算部702_2および第3の再分散値計算部702_3および第4の再分散値計算部702_4は
Figure JPOXMLDOC01-appb-I001120
を計算する。第2の再分散値計算部702_2および第3の再分散値計算部702_3および第4の再分散値計算部702_4は、それぞれ、第2のデータ記憶部708_2および第3のデータ記憶部708_3および第4のデータ記憶部708_4に送信する。
 さらに第4の再分散値計算部702_4は、
Figure JPOXMLDOC01-appb-I001121
を用いて、
Figure JPOXMLDOC01-appb-I001122
を生成し、第1のシェア構成部703_1および第4のシェア構成部703_4に送信する。同様に第3の再分散値計算部702_4は、
Figure JPOXMLDOC01-appb-I001123
を生成し、第3のシェア構成部703_3および第3のデータ記憶部708_3に送信する。
 ここで、
Figure JPOXMLDOC01-appb-I001124
である。
Figure JPOXMLDOC01-appb-I001125
は、たとえば、カウンタであり、各サーバ装置700_1~700_4の間で共有している。
(ステップG4)
 各シェア構成部703_1、703_2、703_3、703_4は、各データ記憶部708_1、708_2、708_3、708_4からそれぞれ、
Figure JPOXMLDOC01-appb-I001126

Figure JPOXMLDOC01-appb-I001127

Figure JPOXMLDOC01-appb-I001128

Figure JPOXMLDOC01-appb-I001129
を取り出す。さらに上記ステップG2、G3で送信された値を用いて、以下の8の式によりシェアを構成する。

Figure JPOXMLDOC01-appb-I001130

Figure JPOXMLDOC01-appb-I001131

Figure JPOXMLDOC01-appb-I001132

Figure JPOXMLDOC01-appb-I001133

Figure JPOXMLDOC01-appb-I001134

Figure JPOXMLDOC01-appb-I001135

Figure JPOXMLDOC01-appb-I001136

Figure JPOXMLDOC01-appb-I001137
ここで、
Figure JPOXMLDOC01-appb-I001138
に対し、
Figure JPOXMLDOC01-appb-I001139


Figure JPOXMLDOC01-appb-I001140
のj番目のビット(j=0、...、n-1)を意味する。
Figure JPOXMLDOC01-appb-I001141

Figure JPOXMLDOC01-appb-I001142
は各i番目のデータ記憶部708_iに記憶される。
 上記ステップG4における8の式において、
Figure JPOXMLDOC01-appb-I001143
としたとき、
Figure JPOXMLDOC01-appb-I001144

Figure JPOXMLDOC01-appb-I001145

Figure JPOXMLDOC01-appb-I001146
と置き換えることできる。このように、
Figure JPOXMLDOC01-appb-I001147
となるので、各再分散値計算部702_iは、値x’の再分散値を計算する際、値x’をx1’、x2’、x3’の排他的論理和すると場合、x1’を乱数rに等しく、x2’をゼロ、x3’を乱数rと値xの排他的論理和となるように乱数を生成している。
つまり、各再分散値計算部702_iは、再分散する際に一部がゼロとなるように乱数を生成する。
(ステップG5)
 各i番目の論理演算部706_iで通信することで、加算器処理
Figure JPOXMLDOC01-appb-I001148
を以下のように計算する。ここで、
Figure JPOXMLDOC01-appb-I001149
とは、たとえば、
Figure JPOXMLDOC01-appb-I001150

Figure JPOXMLDOC01-appb-I001151
を入力とし、
Figure JPOXMLDOC01-appb-I001152
を出力する処理のことである。
Figure JPOXMLDOC01-appb-I001153
ここで、
Figure JPOXMLDOC01-appb-I001154
なので、
Figure JPOXMLDOC01-appb-I001155
が計算できた。なお、
Figure JPOXMLDOC01-appb-I001156
は、
Figure JPOXMLDOC01-appb-I001157
、…、
Figure JPOXMLDOC01-appb-I001158
のシェア列を意味する。各i番目の論理演算部706_iは、
Figure JPOXMLDOC01-appb-I001159
を各データ記憶部708_iに記憶する。
(ステップG6)
 第1のサーバ装置700_1は、上記ステップG2における第2のサーバ装置700_2と同様、第1のマスク値計算部701_1は、
Figure JPOXMLDOC01-appb-I001160
を生成し、
Figure JPOXMLDOC01-appb-I001161
を第4のサーバ装置700_4に送信する。第4のサーバ装置700_4は、第4のデータ記憶部708_4に
Figure JPOXMLDOC01-appb-I001162
を記憶する。第4の不正検知部704_4は、第4のデータ記憶部708_4から
Figure JPOXMLDOC01-appb-I001163
を取り出し、
Figure JPOXMLDOC01-appb-I001164
が成り立つか、検証する。
Figure JPOXMLDOC01-appb-I001165
が成り立つ場合は、第4の不正検知部704_4はsuccessの文字列を各サーバ装置700_1、700_2、700_3にブロードキャストし、次のステップに進む。
Figure JPOXMLDOC01-appb-I001166
が成り立たない場合は、第4の不正検知部704_4はabortの文字列を各サーバ装置700_1、700_2、700_3にブロードキャストし、プロトコルを中断する。
 第1の再分散値計算部702_1は、
Figure JPOXMLDOC01-appb-I001167
を第1のデータ記憶部708_1から取り出す。次に、第1の再分散値計算部702_1は、
Figure JPOXMLDOC01-appb-I001168
を、第4の不正検知部704_4に送信する。第4の不正検知部704_4は、第4のデータ記憶部708_4に記憶されている
Figure JPOXMLDOC01-appb-I001169

Figure JPOXMLDOC01-appb-I001170
を取出し、
Figure JPOXMLDOC01-appb-I001171
が成立するかを検証する。
 成立した場合、第4の不正検知部704_4は、successの文字列を各サーバ装置700_1、700_2、700_3、700_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部704_4は、abortの文字列を各サーバ装置700_1、700_2、700_3、700_4にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列に行う場合、
Figure JPOXMLDOC01-appb-I001172

Figure JPOXMLDOC01-appb-I001173
に関しては、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップG7)
 第3の不正検知部704_3は、
Figure JPOXMLDOC01-appb-I001174

を第3のデータ記憶部708_3から取出し、
Figure JPOXMLDOC01-appb-I001175

を第1の不正検知部704_1に送信する。第1の不正検知部704_1は、第1のデータ記憶部708_1から
Figure JPOXMLDOC01-appb-I001176

を取出し、
Figure JPOXMLDOC01-appb-I001177
が成り立つか、検証する。
Figure JPOXMLDOC01-appb-I001178
が成り立つ場合は、第1の不正検知部704_1はsuccessの文字列を各サーバ装置700_2、700_3、700_4にブロードキャストし、次のステップに進む。
Figure JPOXMLDOC01-appb-I001179
が成り立たない場合は、第1の不正検知部704_1はabortの文字列を各サーバ装置700_2、700_3、700_4にブロードキャストし、プロトコルを中断する。
 なお、大量の型変換処理を並列に行う場合、
Figure JPOXMLDOC01-appb-I001180
に関しては、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップG8)
 各i番目の不正検知部704_iは、上記ステップG5の
Figure JPOXMLDOC01-appb-I001181
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第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の実施形態では、ビット分解に関して
Figure JPOXMLDOC01-appb-I001182
の計算を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つのサーバ装置を代表サーバとして定めてもよい。この場合、代表サーバが秘密計算に用いるデータの入出力(入力データの分散及び配布、計算結果の復号)を制御してもよい。
 上述の説明で用いたフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態は、内容が相反しない範囲で組み合わせることができる。即ち、上記各実施形態の任意の組み合わせが更なる実施形態として含まれる。
 上述の説明で用いたフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態は、内容が相反しない範囲で組み合わせることができる。即ち、上記各実施形態の任意の組み合わせが更なる実施形態として含まれる。
 上記の説明により、本発明の産業上の利用可能性は明らかであるが、本発明は、たとえば、
Figure JPOXMLDOC01-appb-I001183

の環上で実行される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の形態に展開することが可能である。
 なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
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 データ記憶部

Claims (10)

  1.  シェアについての演算を行う際の乱数を生成するためのシードを格納する、基本演算シード記憶部と、
     前記シードを用いて乱数を生成し、前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信する、再分散値計算部と、
     他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成する、シェア構成部と、
     を備える、情報処理装置。
  2.  前記生成された乱数に関するデータを用いて不正行為者の有無を検知する、不正検知部をさらに備える、請求項1に記載の情報処理装置。
  3.  前記型変換されたシェアについての論理演算を行う論理演算部をさらに備え、
     前記論理演算部は、他の装置と互いに通信を行い前記型変換されたシェアの加算処理を実行し、
     前記不正検知部は、前記型変換されたシェアの加算処理のために送受信されたデータを用いて不正行為者の有無を検知する、請求項2に記載の情報処理装置。
  4.  前記論理演算部は、他の装置と互いに通信を行い前記型変換されたシェアのキャリー計算処理を実行し、
     前記不正検知部は、前記型変換されたシェアのキャリー計算処理のために送受信されたデータを用いて不正行為者の有無を検知する、請求項3に記載の情報処理装置。
  5.  前記キャリー計算処理は、第1要素及び前記第1要素に続く第2要素に分離可能であり、
     前記論理演算部は、
     前記第1要素を他の装置と非通信により計算すると共に、前記シェアの再分散値の計算に必要な通信と前記第2要素のキャリー計算処理に必要な通信を並列に行う、請求項4に記載の情報処理装置。
  6.  シェアをマスクするためのマスク値を計算すると共に、前記計算されたマスク値によりマスクされたシェアを他の装置に送信する、マスク値計算部をさらに備え、
     前記シェア構成部は、前記送信されたマスク値を用いて前記型変換用のシェアを構成する、請求項1乃至5のいずれか一項に記載の情報処理装置。
  7.  前記再分散値計算部は、値xの再分散値を計算する際、値xをx、x、xの排他的論理和とする場合に前記x乃至xのうち2つの値を等しくするように乱数を生成する、請求項1乃至6のいずれか一項に記載の情報処理装置。
  8.  前記再分散値計算部は、値x’の再分散値を計算する際、値x’をx’、x’、x’の排他的論理和とする場合、x’を乱数rに等しく、x’をゼロ、x’を乱数rと値xの排他的論理和とする、請求項7に記載の情報処理装置。
  9.  シードを用いて乱数を生成するステップと、
     前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信するステップと、
     他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成するステップと、
     を含む秘密計算方法。
  10.  シードを用いて乱数を生成する処理と、
     前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信する処理と、
     他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成する処理と、
     をコンピュータに実行させるプログラム。
PCT/JP2019/004793 2019-02-12 2019-02-12 情報処理装置、秘密計算方法及びプログラム WO2020165931A1 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463332A (zh) * 2020-12-01 2021-03-09 华控清交信息科技(北京)有限公司 一种数据处理方法、密文计算系统和用于数据处理的装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115913525A (zh) * 2022-04-25 2023-04-04 上海紫先科技有限公司 一种用硬件芯片实现安全多方计算的方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014007311A1 (ja) * 2012-07-05 2014-01-09 日本電信電話株式会社 秘密分散システム、データ分散装置、分散データ変換装置、秘密分散方法、およびプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014007311A1 (ja) * 2012-07-05 2014-01-09 日本電信電話株式会社 秘密分散システム、データ分散装置、分散データ変換装置、秘密分散方法、およびプログラム

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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