WO2012102203A1 - 秘匿積和計算方法、秘匿積和計算システム、計算装置、及びそれらのプログラム - Google Patents

秘匿積和計算方法、秘匿積和計算システム、計算装置、及びそれらのプログラム Download PDF

Info

Publication number
WO2012102203A1
WO2012102203A1 PCT/JP2012/051199 JP2012051199W WO2012102203A1 WO 2012102203 A1 WO2012102203 A1 WO 2012102203A1 JP 2012051199 W JP2012051199 W JP 2012051199W WO 2012102203 A1 WO2012102203 A1 WO 2012102203A1
Authority
WO
WIPO (PCT)
Prior art keywords
party
calculation
sequence
random number
data
Prior art date
Application number
PCT/JP2012/051199
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 CN201280006168.2A priority Critical patent/CN103329185B/zh
Priority to JP2012554767A priority patent/JP5450839B2/ja
Priority to US13/981,251 priority patent/US9292258B2/en
Priority to EP12739361.9A priority patent/EP2669878B8/en
Publication of WO2012102203A1 publication Critical patent/WO2012102203A1/ja

Links

Images

Classifications

    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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 a secret product-sum calculation method, a secret product-sum calculation system, a calculation device, and a program for performing data processing, particularly multiplication and product-sum operations, while concealing data by secret sharing.
  • Non-Patent Document 1 As a conventional technique for performing multiplication and product-sum operation while keeping information secret, there is a multiplication protocol of Non-Patent Document 1 regarding multiplication, and a combined use of multiplication protocol and addition protocol for product-sum operation.
  • These protocols are three-party secret function calculation protocols for deriving the result of arithmetic / logical operation by cooperative calculation of three parties (three calculation subjects) without restoring distributed input values.
  • data is handled as a natural number less than a predetermined prime number p.
  • a a 0 + a 1 + a 2 mod p
  • (a 0 , a 1 ) is transmitted to X
  • (a 1 , a 2 ) is transmitted to Y
  • (a 2 , a 0 ) is transmitted to Z to the three parties X, Y, and Z.
  • a 1 and a 2 are random numbers, none of the parties of X, Y, and Z has the information of a, but if any two parties gather, a can be restored.
  • the conventional multiplication protocol requires two rounds of communication.
  • the calculation amount and communication amount of each of the three parties are not symmetrical, it is necessary to implement a different program for each party. Therefore, the mounting cost becomes high.
  • the part with the heaviest calculation and communication becomes a bottleneck.
  • the product-sum calculation generally increases the amount of communication.
  • An object of the present invention is to provide a secret product-sum calculation method, a secret product-sum calculation system, a calculation device, and a program thereof that can perform multiplication and product-sum calculation at high speed and are easy to implement. .
  • the party X has data strings A 0 , A 1 , B 0 , B 1
  • the party Y has data strings A 1 , A 2 , B 1 , B 2
  • the party Z has data strings A 2 , A 0 , B 2 and B 0 are respectively input.
  • the party X random number generation step the party X generates a number r X and transmits it to the party Y.
  • Party X first calculation step party X is a c X (E01 i0, j1 and e10 i1, j0 are arbitrary numbers) and are transmitted to the party Z.
  • party X receives number r z from party Z, c Y from party Y, and c 0 and c 1 respectively. (E00 i0, j0 and e11 i1, j1 are arbitrary numbers).
  • the party Y random number generation step the party Y generates a number r Y and transmits it to the party Z.
  • Party Y first calculation step is that Party Y calculates c Y (E12 i1, j2 and e21 i2, j1 are arbitrary numbers) and are transmitted to the party X.
  • the party Y second calculation step involves party Y receiving number r X from party X, c Z from party Z, and c 1 and c 2 respectively. (E22 i2, j2 is an arbitrary number) is calculated and output.
  • the party Z In the party Z random number generation step, the party Z generates a number r Z and transmits it to the party X.
  • Party Z first calculation step is that Party Z calculates c Z (E20 i2, j0 and e02 i0, j2 are arbitrary numbers) and are transmitted to the party Y.
  • the party Z second calculation step involves party Z receiving number r Y from party Y, c X from party X, and c 0 and c 2 respectively. Calculate and output by
  • the secret product-sum calculation method the secret product-sum calculation system, the calculation device, and their programs of the present invention, multiplication and product-sum calculation can be performed at high speed, and the processing of each party is symmetric. You can easily implement the program.
  • the figure which shows the structural example of the concealment sum-of-products calculation system 100 The figure which shows the example of a processing flow of the secrecy product-sum calculation system 100.
  • the figure which shows the structural example of the concealment sum-of-products calculation system 200 The figure which shows the example of a processing flow of the secrecy product-sum calculation system 200.
  • the figure which shows the structural example of the concealment sum-of-products calculation system 300 The figure which shows the example of a processing flow of the secrecy product-sum calculation system 300.
  • FIG. 1 shows a configuration example of the concealed product-sum calculation system 100
  • FIG. 2 shows a processing flow example thereof.
  • the concealed product-sum calculation system 100 includes a party X, a party Y, and a party Z, which are calculation devices that perform symmetrical calculation processes.
  • na0, na1, na2, nb0, nb1, and nb2 are natural numbers.
  • Each party includes random number generation means 101, first calculation means 102, and second calculation means 103 as shown in FIG.
  • the own party is displayed as P
  • the other party is displayed as P ⁇ and P + .
  • P ⁇ is party Z
  • P + is party Y
  • P ⁇ is party X
  • P + is party Z
  • the own party is Z
  • P ⁇ is party Y
  • P + is party X
  • P ⁇ is party Y and P + is party X.
  • the processing at that time is expressed as “symmetrical processing” or “processing is symmetrical”.
  • data strings A 0 , A 1 , B 0 , B 1 are input to party X
  • data strings A 1 , A 2 , B 1 , B 2 are input to party Y
  • data strings A 2 , A 0 , B 2 , B 0 are input (S1).
  • the party X performs the following processing.
  • the random number generation means 101 generates a random number r X and transmits it to the party Y (S2-1).
  • the first calculation means 102 calculates c X
  • the second calculation means 103 receives the random number r z from the party Z, c y from the party Y, and c 0 and c 1 respectively.
  • the party Y performs the following processing.
  • the random number generation means 101 generates a random number r Y and transmits it to the party Z (S4-1).
  • the first calculation means 102 calculates c Y
  • the second calculation means 103 a random number r X from party X, the c Z from party Z, respectively receiving and c 1 and c 2 respectively,
  • the party Z performs the following processing. First, the random number generation means 101 generates a random number r Z and transmits it to the party X (S6-1). Subsequently, the first calculation means 102 calculates c Z
  • the second calculation means 103 receives the random number r Y from the party Y , the c X from the party X, and c 0 and c 2 respectively.
  • S7 Is calculated and output (S7). Note that S2-1, 2 and S4-1, 2 and S6-1 and 2 can be processed in parallel, and S3, S5 and S7 can also be processed in parallel.
  • Non-Patent Document 1 The effect of the method of the present invention and the method according to Non-Patent Document 1 will be compared.
  • Most of the calculation amount in Non-Patent Document 1 is the calculation amount for generating random numbers and the calculation amount for communication encryption / decryption when a physical secure channel cannot be prepared. Since the amount of computation for encryption / decryption matches the amount of communication, the efficiency can be evaluated by observing the number of random numbers to be generated and the amount of communication.
  • the number of random numbers to be generated and the communication amount are proportional to the number of elements of the input data string.
  • the parties X, Y, and Z only need one random number to be generated and two data to be transmitted to another party.
  • the processes of the parties X, Y, and Z are symmetric, a program common to all parties can be installed, so that the installation cost can be suppressed.
  • FIG. 4 shows a configuration example of the concealed product-sum calculation system 200 of this embodiment, and FIG.
  • the secret product-sum calculation system 200 includes a party X, a party Y, a party Z, a data string decomposition supply unit 210, and an output unit 220.
  • each party includes a random number generation unit 101, a first calculation unit 102, and a second calculation unit 103 as shown in FIG.
  • the party X performs the following processing.
  • the random number generation means 101 generates a random number r X and transmits it to the party Y (S12-1).
  • the first calculation means 102 calculates c X
  • the second calculation means 103 receives the random number r z from the party Z, c y from the party Y, and c 0 and c 1 respectively.
  • the party Y performs the following processing.
  • the random number generation means 101 generates a random number r Y and transmits it to the party Z (S14-1).
  • the first calculation means 102 calculates c Y
  • the second calculation means 103 receives the random number r X from the party X , c Z from the party Z, and c 1 and c 2 respectively.
  • the party Z performs the following processing. First, the random number generation means 101 generates a random number r Z and transmits it to the party X (S16-1). Subsequently, the first calculation means 102 calculates c Z
  • the second calculation means 103 receives the random number r Y from the party Y , c x from the party X, and c 0 and c 2 respectively.
  • S12-1, 2 and S14-1, 2 and S16-1 and 2 can be processed in parallel, and S13, S15 and S17 can also be processed in parallel.
  • the output unit 220 calculates and outputs the sum (c 0 + c 1 + c 2 ) of c 0 , c 1 and c 2 output from the parties X, Y and Z.
  • a hash value or the like may be substituted for a portion using a random number.
  • the data string decomposition supply unit 210 and the output unit 220 may be provided in another device different from each party, or may be provided in any one or more of devices corresponding to each party.
  • the number of communication is 2 rounds (a round is the number of times waiting for processing of another party in the parallel processing of parties X, Y, and Z), and a random number generated by party X 1 and 4 data to be transmitted, 0 random numbers generated by the parties Y and Z, and 1 data to be transmitted.
  • the number of communications is one round, one random number is generated for each of the parties X, Y, and Z, and two data are transmitted. In other words, the number of rounds is halved.
  • the number of random numbers to be generated and the number of data to be transmitted are the same, it can be said that the bottleneck is reduced because the processes of the parties X, Y, and Z are symmetric.
  • the number of random numbers to be generated and the communication amount are proportional to the number of elements of the input data string, but in the case of the method of the present invention In each of the parties X, Y, and Z, only one random number is generated and two data to be transmitted to the other party is sufficient. In any case, since the processes of the parties X, Y, and Z are symmetric, the mounting cost can be suppressed.
  • Example 3 is a configuration in which a fraud detection function is added to Examples 1 and 2 that perform product-sum calculation.
  • FIG. 6 shows an example of the configuration of the concealed product-sum calculation system 300, and FIG.
  • the concealed product-sum calculation system 300 includes a party X, a party Y, and a party Z, which are calculation devices that perform symmetrical calculation processes.
  • the secret sum calculation of the present invention is performed by cooperative calculation of the three calculation devices of the party X, the party Y, and the party Z, and the data string
  • a q — 0 (a0 q — 0 ,..., A0 q — na0-1 )
  • a q — 1 (a1 q — 0 , ..., a1 q_na1-1)
  • a q_2 (a2 q_0, ... , and a2 q_na2-1)
  • data train B q_0 (b0 q_0, ...
  • na0, na1, na2, nb0, nb1, and nb2 are natural numbers.
  • each party has a first random number generator 301, a first calculator 302, a second calculator 303, a second random number generator 304, a third calculator 305, a fourth calculator 306, and an unauthorized person.
  • a detection means 307 is provided.
  • S21 to S27 are product-sum calculation processes corresponding to the first embodiment, and S28 to S39 are fraud detection processes. It is assumed that the parties X and Y share the random number s q_Z , the parties Y and Z share the random number s q_X , and the parties Z and X share the random number s q_Y in advance.
  • the data strings A q — 0 , A q — 1 , B q — 0 , B q — 1 are input to the party X
  • the data strings A q — 1 , A q — 2 , B q — 1 , B q — 2 are input to the party Y
  • the data columns A q — A q — 0 , B q — 2 , and B q — 0 are input (S21).
  • the party X performs the following processing.
  • the first random number generation means 301 generates a random number r q — X and transmits it to the party Y (S22-1).
  • the first calculation means 302 calculates c q_X .
  • the second calculation means 303 receives a random number r q_z from the party Z and c q_Y from the party Y, and receives c q — 0 and c q — 1 , respectively.
  • the party Y performs the following processing.
  • the random number generation means 301 generates a random number r q_Y and transmits it to the party Z (S24-1).
  • the first calculation means 302 calculates c q_Y
  • the second calculation unit 303 respectively random number r Q_X from party X, the c Q_Z from party Z, respectively received, c Q_1 and c Q_2 a
  • the party Z performs the following processing.
  • the random number generation means 301 generates a random number r q_Z and transmits it to the party X (S26-1).
  • the first calculation means 302 calculates c q_Z
  • the second calculation means 303 receives a random number r q_Y from the party Y, c q_X from the party X, and receives c q — 0 and c q — 2 , respectively.
  • S22-1, 2 and S24-1, 2 and S26-1, and 2 can be processed in parallel, and S23, S25, and S27 can also be processed in parallel.
  • each party performs fraud detection processing as follows.
  • the second random number generation means 304 generates a random number sequence ( ⁇ Y1 q — 0 ,..., ⁇ Y1 q_na1-1 ) and a random number ⁇ x and transmits it to the party Y, and the random number sequence ( ⁇ Z0 q — 0 ,..., ⁇ Z0 q_na0-1 ). Is transmitted to the party Z (S28).
  • the third calculation means 305 calculates ( ⁇ Z0 q — 0 ⁇ s q_Z ⁇ a0 q — 0 ,..., ⁇ Z0 q_na0-1 ⁇ s q_Z ⁇ a0 q_na0-1 ) and transmits it to the party Y, and the party Y generates a random number sequence.
  • the fourth calculation means 306 receives ( ⁇ Z2 q — 0 ⁇ s q_Z ⁇ a2 q — 0 ,..., ⁇ Z2 q_na2-1 ⁇ s q_Z ⁇ a2 q_na2-1 ) from the party Y, and ⁇ Z from the party Z, respectively. ,
  • the fraud detection means 307 sends party Y to ⁇ Y , party Z to ⁇ Y ′, and ( ⁇ Y2 q — 0 ⁇ s q_Y ⁇ a2 q — 0 ,..., ⁇ Y2 q_na2-1 ⁇ s q_Y ⁇ a2 q_na2-1 ), respectively.
  • the second random number generation means 304 generates a random number sequence ( ⁇ Z2 q — 0 ,..., ⁇ Z2 q_na2-1 ) and a random number ⁇ Y and transmits it to the party Z, and the random number sequence ( ⁇ X1 q — 0 ,..., ⁇ X1 q_na1-1 ) Is generated and transmitted to the party X (S32).
  • the third calculation means 305 calculates ( ⁇ X1 q — 0 ⁇ s q_X ⁇ a1 q — 0 ,..., ⁇ X1 q_na1-1 ⁇ s q_X ⁇ a1 q_na1-1 ) and transmits it to the party Z.
  • a fourth calculating unit 306 a random number [rho X from party X, from parties Z ( ⁇ X0 q_0 -s q_X ⁇ a0 q_0, ..., ⁇ X0 q_na0-1 -s q_X ⁇ a0 q_na0-1) and received respectively
  • a random number [rho X from party X, from parties Z ( ⁇ X0 q_0 -s q_X ⁇ a0 q_0, ..., ⁇ X0 q_na0-1 -s q_X ⁇ a0 q_na0-1) and received respectively
  • parties Z ⁇ X0 q_0 -s q_X ⁇ a0 q_0, ..., ⁇ X0 q_na0-1 -s q_X ⁇ a0 q_na0-1
  • second random number generation unit 304 a random number sequence ( ⁇ X0 q_0, ..., ⁇ X0 q_na0-1 ) and transmitted to the parties X and generates a random number [rho Z, a random number sequence ( ⁇ Y2 q_0, ..., ⁇ Y2 q_na2-1 ) Is transmitted to the party Y (S36).
  • the third calculation means 305 calculates ( ⁇ Y2 q — 0 ⁇ s q — Y ⁇ a2 q — 0 ,..., ⁇ Y2 q — na2 ⁇ s q — Y • a2 q — na2 ⁇ 1 ) and transmits it to the party X.
  • the fourth calculation means 306 receives ( ⁇ Y1 q — 0 ⁇ s q_Y ⁇ a1 q — 0 ,..., ⁇ Y1 q_na1-1 ⁇ s q_Y ⁇ a1 q_na1-1 ) from the party X and the random number ⁇ Y from the party Y, respectively.
  • the fraud detection unit 307 a gamma X from party X, from party Y gamma X 'and ( ⁇ X1 q_0 -s q_X ⁇ a1 q_0 , ..., ⁇ X1 q_na1-1 -s q_X ⁇ a1 q_na1-1) to each Receive,
  • FIG. 9 shows a configuration example of the concealed product-sum calculation system 400 of this embodiment, and FIG.
  • the secret product-sum calculation system 400 includes a party X, a party Y, a party Z, a data string decomposition supply unit 410, and an output unit 420.
  • each party has first random number generation means 301, first calculation means 302, second calculation means 303, second random number generation means 304, third calculation means 305, fourth calculation means 306, and fraud.
  • a detection means 307 is provided.
  • n is an integer greater than or equal to 1))
  • q 0, ..., m-1)
  • the parties X and Y share the random number s q_Z
  • the parties Y and Z share the random number s q_X
  • the parties Z and X share the random number s q_Y in advance.
  • the party X performs the following processing.
  • the first random number generation means 301 generates a random number r q — X and transmits it to the party Y (S42-1).
  • the first calculation means 302 calculates c q_X .
  • the second calculation means 303 receives a random number r q_z from the party Z and c q_Y from the party Y, and receives c q — 0 and c q — 1 , respectively.
  • the party Y performs the following processing.
  • the random number generation means 304 generates a random number r q_Y and transmits it to the party Z (44-1).
  • the first calculation means 305 calculates c q_Y
  • the party Z performs the following processing.
  • the first random number generation means 301 generates a random number r q_Z and transmits it to the party X (S46-1).
  • the first calculation means 302 calculates c q_Z
  • the second calculation means 303 receives a random number r q_Y from the party Y, c q_X from the party X, and receives c q — 0 and c q — 2 , respectively.
  • S42-1, 2 and S44-1, 2 and S46-1 and 2 can be processed in parallel, and S43, S45 and S47 can also be processed in parallel.
  • each party performs fraud detection processing as follows.
  • the processing of party X will be described.
  • the second random number generation means 304 generates a random number sequence ( ⁇ Y1 q — 0 ,..., ⁇ Y1 q — n ⁇ 1 ) and a random number ⁇ x and transmits it to the party Y, and the random number sequence ( ⁇ Z0 q — 0 ,..., ⁇ Z0 q — n ⁇ 1 ). Is transmitted to the party Z (S48).
  • the third computation unit 305 ( ⁇ Z0 q_0 -s q_Z ⁇ a0 q_0, ..., ⁇ Z0 q_n-1 -s q_Z ⁇ a0 q_n-1) the calculated sending party Y, the random number sequence from the party Y ( ⁇ X1 q_0, ..., ⁇ X1 q_n -1) a random number sequence ( ⁇ X0 q_0, ..., ⁇ X0 q_n -1) from the party Z to receive respectively, ( ⁇ Y1 q_0 -s q_Y ⁇ a1 q_0, ..., ⁇ Y1 q_n- 1- s q_Y ⁇ a1 q_n -1 ) and
  • the fourth calculation means 306 receives ( ⁇ Z2 q — 0 ⁇ s q_Z ⁇ a2 q — 0 ,..., ⁇ Z2 q_n ⁇ 1 ⁇ s q_Z ⁇ a2 q_n ⁇ 1 ) from the party Y, and ⁇ Z from the party Z, respectively. ,
  • the fraud detection unit 307 a gamma Y from party Y, from parties Z gamma Y 'and ( ⁇ Y2 q_0 -s q_Y ⁇ a2 q_0 , ..., ⁇ Y2 q_n-1 -s q_Y ⁇ a2 q_n-1) a, respectively Receive,
  • the second random number generation means 304 generates a random number sequence ( ⁇ Z2 q — 0 ,..., ⁇ Z2 q_n ⁇ 1 ) and a random number ⁇ Y and transmits them to the party Z, and the random number sequence ( ⁇ X1 q — 0 ,..., ⁇ X1 q_n ⁇ 1 ). Is generated and transmitted to the party X (S52).
  • the third computation unit 305 ( ⁇ X1 q_0 -s q_X ⁇ a1 q_0, ..., ⁇ X1 q_n-1 -s q_X ⁇ a1 q_n-1) the calculated sending party Z, a random number sequence from party X ( ⁇ Y1 q_0, ..., ⁇ Y1 q_n -1) a random number sequence ( ⁇ Y2 q_0, ..., ⁇ Y2 q_n -1) from the party Z to receive respectively, ( ⁇ Z2 q_0 -s q_Z ⁇ a2 q_0, ..., ⁇ Z2 q_n- 1- s q_Z ⁇ a2 q_n -1 ) and
  • a fourth calculating unit 306 a random number [rho X from party X, from parties Z ( ⁇ X0 q_0 -s q_X ⁇ a0 q_0, ..., ⁇ X0 q_n-1 -s q_X ⁇ a0 q_n-1) a, respectively receive And
  • the second random number generation means 304 generates a random number sequence ( ⁇ X0 q — 0 ,..., ⁇ X0 q_n ⁇ 1 ) and a random number ⁇ Z and transmits it to the party X, and the random number sequence ( ⁇ Y2 q — 0 ,..., ⁇ Y2 q_n ⁇ 1 ). Is transmitted to the party Y (S56).
  • the third computation unit 305 ( ⁇ Y2 q_0 -s q_Y ⁇ a2 q_0, ..., ⁇ Y2 q_n-1 -s q_Y ⁇ a2 q_n-1) the calculated sending party X, a random number sequence from party X ( ⁇ Z0 q_0, ..., ⁇ Z0 q_n -1) a random number sequence ( ⁇ Z2 q_0, ..., ⁇ Z2 q_n -1) from the party Y to receive respectively, ( ⁇ X0 q_0 -s q_X ⁇ a0 q_0, ..., ⁇ X0 q_n- 1- s q_X ⁇ a0 q_n -1 ) and
  • a fourth calculating unit 306 the party X ( ⁇ Y1 q_0 -s q_Y ⁇ a1 q_0, ..., ⁇ Y1 q_n-1 -s q_Y ⁇ a1 q_n-1) , and a random number [rho Y from party Y, respectively received
  • the party X ⁇ Y1 q_0 -s q_Y ⁇ a1 q_0, ..., ⁇ Y1 q_n-1 -s q_Y ⁇ a1 q_n-1
  • the fraud detection unit 307 a gamma X from party X, from party Y gamma X 'and ( ⁇ X1 q_0 -s q_X ⁇ a1 q_0 , ..., ⁇ X1 q_n-1 -s q_X ⁇ a1 q_n-1) a, respectively Receive,
  • the output unit 420 calculates and outputs the sum (c q — 0 + c q — 1 + c q — 2 ) of c q — 0 , c q — 1 , and c q — 2 output from the parties X, Y, and Z (S 60).
  • data string decomposition supply unit 410 and the output unit 420 may be provided in another device different from each party, or may be provided in any one or more of devices corresponding to each party.
  • the number of rounds is 2
  • the number of data transmitted by each party is 10
  • the number of random numbers to be generated is 5.
  • the number of rounds may actually be 2, 9 data to be transmitted, and 4 random numbers to be generated.
  • the number of rounds is 4, the data transmitted by the party X is 20, the random number to be generated is 12, the data transmitted by the parties Y and Z is 17, the random number to be generated Is nine. Therefore, the present invention is about twice as efficient.
  • the number of rounds is 2, the data transmitted by each party is 6m + 3, and the generated random number is 3m + 1.
  • the number of rounds is 4, the data transmitted by the party X is 20m, the generated random number is 12m, the data transmitted by the parties Y and Z is 17m, and the generated random number. Is 9m. Therefore, the present invention is about three times more efficient.
  • the secret product-sum calculation system 400 includes: However, the concealed product-sum calculation system 500 of the fifth embodiment is a configuration example in which one value of this multiplication is common.
  • the data string A q_2 (a2 q_
  • the party X performs the following processing.
  • the first random number generation means 301 generates a random number r q — X and transmits it to the party Y (S42-1).
  • the first calculation means 302 calculates c q_X .
  • the second calculation means 303 receives a random number r q_z from the party Z and c q_Y from the party Y, and receives c q — 0 and c q — 1 , respectively.
  • the party Y performs the following processing.
  • the random number generation means 304 generates a random number r q_Y and transmits it to the party Z (44-1).
  • the first calculation means 305 calculates c q_Y
  • the party Z performs the following processing.
  • the first random number generation means 301 generates a random number r q_Z and transmits it to the party X (S46-1).
  • the first calculation means 302 calculates c q_Z And is transmitted to the party Y (S46-2).
  • the second calculation means 303 receives a random number r q_Y from the party Y, c q_X from the party X, and receives c q — 0 and c q — 2 , respectively.
  • S42-1, 2 and S44-1, 2 and S46-1 and 2 can be processed in parallel, and S43, S45 and S47 can also be processed in parallel.
  • each party performs fraud detection processing as follows.
  • the processing of party X will be described.
  • second random number generation unit 304, and transmitted to the party Y generates a random number ⁇ Y1 and the random number [rho x, and transmits to the parties Z generates a random number ⁇ Z0 (S48).
  • the third calculation means 305
  • random number ⁇ X1 is received from party Y
  • random number ⁇ X0 is received from party Z.
  • the fourth calculation means 306 starts from the party Y.
  • the fraud detection means 307 then changes party Y to ⁇ Y and party Z to ⁇ Y ′.
  • second random number generation unit 304 and transmitted to the parties Z generates a random number ⁇ Z2 and the random number [rho Y, and transmits to the parties X and generates a random number ⁇ X1 (S52). Subsequently, the third calculation means 305
  • random number ⁇ Y1 is received from party X
  • random number ⁇ Y2 is received from party Z.
  • the fourth calculation means 306 obtains the random number ⁇ X from the party X and the party Z.
  • the fraud detection means 307 then sends the party X to ⁇ Z ′. And the gamma Z from party Z, respectively received,
  • second random number generation unit 304 and transmitted to the parties X and generates a random number ⁇ X0 and the random number [rho Z, and transmits to the parties Y generates a random number ⁇ Y2 (S56).
  • the third calculation means 305 the third calculation means 305
  • random number ⁇ Z0 is received from party X
  • random number ⁇ Z2 is received from party Y.
  • the fourth calculation means 306 starts from the party X.
  • the fraud detection means 307 converts party X to ⁇ X and party Y to ⁇ X ′.
  • the output unit 420 calculates and outputs the sum (c q — 0 + c q — 1 + c q — 2 ) of c q — 0 , c q — 1 , and c q — 2 output from the parties X, Y, and Z (S 60). So, you can see that the product-sum calculation is correct.
  • a hash value or the like may be substituted for a portion using a random number.
  • the data string decomposition supply unit 410 and the output unit 420 may be provided in another device different from each party, or may be provided in any one or more of the devices corresponding to each party.
  • Non-Patent Document 1 The effect of the present invention and the method of Non-Patent Document 1 will be compared.
  • the number of rounds is 2, 2m of data transmitted by each party, and 3 random numbers are generated. Therefore, it is about nine times more efficient than the method of Non-Patent Document 1. It can also be seen that the number of random numbers generated as m increases has improved to a constant independent of m.
  • the multiplication protocol of the concealed product-sum calculation system 300 includes a procedure for reciprocating the calculated value between parties in the former comparison.
  • ⁇ Z2 q_i2 ⁇ s q_Z ⁇ a2 q_i2 is party Y ⁇ party X ⁇ party Y
  • q_i0 is party Z ⁇ party Y ⁇ party Z
  • ⁇ Y1 q_i1 ⁇ s q_Y ⁇ a1 q_i1 It is necessary to reciprocate as party X ⁇ party Z ⁇ party X.
  • the server perform fraud (obtain data information to be kept secret) within a range in which the calculation value leaks during the round trip and the calculation result is not changed.
  • the third embodiment can be completely concealed only when there is no fraud in the server.
  • Example 6 has a configuration in which complete concealment is possible even if the server is fraudulent. Specifically, the protocol does not include the round trip of the calculated value that causes the fraud.
  • FIG. 11 shows a configuration example of the concealed product-sum calculation system 600 according to the sixth embodiment
  • FIG. 12 shows a processing flow example thereof.
  • the secret product-sum calculation system 600 includes a party X, a party Y, and a party Z. As shown in FIG. 13, each party has the same first random number generation means 301, first calculation means 302, and second calculation means 303 as those of the secret product-sum calculation system 300, as well as second random number generation means 604, 3 calculation means 605, 4th calculation means 606, and fraud detection means 607 are provided.
  • each party performs fraud detection processing as follows.
  • the parties X and Y share the random number s q_Z
  • the parties Y and Z share the random number s q_X
  • the parties Z and X share the random number s q_Y in advance.
  • second random number generation unit 604 and transmitted to the party Y generates a random number [rho x, random number sequence ( ⁇ Z0 q_0, ..., ⁇ Z0 q_na0-1 ) and random number sequence ( ⁇ Z0 q_0, ..., ⁇ Z0 q_nb0-1 ) Is transmitted to the party Z (S68).
  • the third computation unit 605 calculates and sends to party Y, the random number sequence from the party Y ( ⁇ X1 q_0, ..., ⁇ X1 q_na1-1) and random number sequence ( ⁇ X1 q_0, ..., ⁇ X1 q_nb1-1 )
  • the fourth calculation means 606 receives ⁇ Z from the party Z,
  • the fraud detection unit 607 a gamma Y from party Y, from parties Z gamma Y 'and ( ⁇ Y2 q_0 -s q_Y ⁇ a2 q_0 , ..., ⁇ Y2 q_na2-1 -s q_Y ⁇ a2 q_na2-1) and (Betawai2 q_0 -s q_Y ⁇ b2 q_0, ... , the ⁇ Y2 q_nb2-1 -s q_Y ⁇ b2 q_nb2-1) , respectively received,
  • second random number generation unit 604 and transmitted to the parties Z generates a random number [rho Y, the random number sequence ( ⁇ X1 q_0, ..., ⁇ X1 q_na1-1 ) and random number sequence ( ⁇ X1 q_0, ..., ⁇ X1 q_nb1-1 ) Is transmitted to the party X (S72).
  • the third calculation means 605 calculates and sends to the party Z, the random number sequence from the party Z ( ⁇ Y2 q_0, ..., ⁇ Y2 q_na2-1) and random number sequence ( ⁇ Y2 q_0, ..., ⁇ Y2 q_nb2-1 )
  • the fourth calculation means 606 receives the random number ⁇ X from the party X,
  • second random number generation unit 604 and transmitted to the parties X and generates a random number [rho Z, a random number sequence ( ⁇ Y2 q_0, ..., ⁇ Y2 q_na2-1 ) and random number sequence ( ⁇ Y2 q_0, ..., ⁇ Y2 q_nb2-1 ) Is generated and transmitted to the party Y (S76).
  • the third calculation means 605 calculates and sends to party X, the random number sequence from party X ( ⁇ Z0 q_0, ..., ⁇ Z0 q_na0-1) and random number sequence ( ⁇ Z0 q_0, ..., ⁇ Z0 q_nb0-1 )
  • the fourth calculation means 606 receives the random number ⁇ Y from the party Y,
  • the fraud detection unit 607 a gamma X from party X, from party Y gamma X 'and ( ⁇ X1 q_0 -s q_X ⁇ a1 q_0 , ..., ⁇ X1 q_na1-1 -s q_X ⁇ a1 q_na1-1) and (BetaX1 q_0 -s q_X ⁇ b1 q_0, ... , the ⁇ X1 q_nb1-1 -s q_X ⁇ b1 q_nb1-1) , respectively received,
  • the dispersion value of s P ⁇ b 1p is represented in order to confirm the validity of a 0p ⁇ b 1p + a 1p ⁇ b 0p.
  • ⁇ P1p and ⁇ PP + ( ⁇ P1p + a 0p ⁇ ⁇ PP + ) and s P ⁇ a 1p ⁇ b 0p are compared and ⁇ P1p and ⁇ PP + representing the dispersion value of s P ⁇ a 1p are used.
  • FIG. 14 shows an example of the configuration of the concealed product-sum calculation system 700 of this embodiment
  • FIG. 15 shows an example of its processing flow.
  • the secret product-sum calculation system 700 includes a party X, a party Y, a party Z, a data string decomposition supply unit 410, and an output unit 420.
  • the data string decomposition supply unit 410 and the output unit 420 are the same as those of the secret product-sum calculation system 400 of the fourth embodiment. As shown in FIG. 13, each party has the same first random number generation means 301, first calculation means 302, and second calculation means 303 as those of the secret product-sum calculation system 400, as well as second random number generation means 604, 3 calculation means 605, 4th calculation means 606, and fraud detection means 607 are provided.
  • the functions of the data string decomposition supply unit 410, the first random number generation unit 301, the first calculation unit 302, the second calculation unit 303, and the output unit 420 are realized as these functions. Since the secret product sum calculation process (S41 to S47, S60) is the same as the secret product sum calculation system 400 of the fourth embodiment, a description thereof will be omitted, and only the fraud detection process as a difference will be described.
  • each party performs fraud detection processing as follows.
  • the parties X and Y share the random number s q_Z
  • the parties Y and Z share the random number s q_X
  • the parties Z and X share the random number s q_Y in advance.
  • second random number generation unit 604 and transmitted to the party Y generates a random number [rho x, random number sequence ( ⁇ Z0 q_0, ..., ⁇ Z0 q_n -1) and random number sequence ( ⁇ Z0 q_0, ..., ⁇ Z0 q_n -1) Is transmitted to the party Z (S88).
  • the third computation unit 605 ( ⁇ Z0 q_0 -s q_Z ⁇ a0 q_0, ..., ⁇ Z0 q_n-1 -s q_Z ⁇ a0 q_n-1) and ( ⁇ Z0 q_0 -s q_Z ⁇ b0 q_0 , ..., ⁇ Z0 q_n -1 -s q_Z ⁇ b0 q_n-1) calculated sent to party Y, the random number sequence from the party Y ( ⁇ X1 q_0, ..., ⁇ X1 q_n-1) and random number sequence ( ⁇ X1 q_0, ..., ⁇ X1 q_n -1 )
  • the fourth calculation means 606 receives ⁇ Z from the party Z,
  • the fraud detection unit 607 a gamma Y from party Y, from parties Z gamma Y 'and ( ⁇ Y2 q_0 -s q_Y ⁇ a2 q_0 , ..., ⁇ Y2 q_n-1 -s q_Y ⁇ a2 q_n-1) and (Betawai2 q_0 -s q_Y ⁇ b2 q_0, ... , the ⁇ Y2 q_n-1 -s q_Y ⁇ b2 q_n-1), respectively received,
  • second random number generation unit 604 and transmitted to the parties Z generates a random number [rho Y, the random number sequence ( ⁇ X1 q_0, ..., ⁇ X1 q_n -1) and random number sequence ( ⁇ X1 q_0, ..., ⁇ X1 q_n -1) Is generated and transmitted to the party X (S92).
  • the third computation unit 605 ( ⁇ X1 q_0 -s q_X ⁇ a1 q_0, ..., ⁇ X1 q_n-1 -s q_X ⁇ a1 q_n-1) and ( ⁇ X1 q_0 -s q_X ⁇ b1 q_0 , ..., ⁇ X1 q_n -1 -s q_X ⁇ b1 q_n-1) was calculated transmission party Z, the random number sequence from the party Z ( ⁇ Y2 q_0, ..., ⁇ Y2 q_n-1) and random number sequence ( ⁇ Y2 q_0, ..., ⁇ Y2 q_n -1 ) Respectively,
  • the fourth calculation means 606 receives the random number ⁇ X from the party X,
  • second random number generation unit 604 and transmitted to the parties X and generates a random number [rho Z, a random number sequence ( ⁇ Y2 q_0, ..., ⁇ Y2 q_n -1) and random number sequence ( ⁇ Y2 q_0, ..., ⁇ Y2 q_n -1) Is transmitted to the party Y (S96).
  • the third computation unit 605 ( ⁇ Y2 q_0 -s q_Y ⁇ a2 q_0, ..., ⁇ Y2 q_n-1 -s q_Y ⁇ a2 q_n-1) and ( ⁇ Y2 q_0 -s q_Y ⁇ b2 q_0 , ..., ⁇ Y2 q_n -1 -s q_Y ⁇ b2 q_n-1) calculated sent to party X, the random number sequence from party X ( ⁇ Z0 q_0, ..., ⁇ Z0 q_n-1) and random number sequence ( ⁇ Z0 q_0, ..., ⁇ Z0 q_n -1 )
  • the fourth calculation means 606 receives the random number ⁇ Y from the party Y,
  • the fraud detection unit 607 a gamma X from party X, from party Y gamma X 'and ( ⁇ X1 q_0 -s q_X ⁇ a1 q_0 , ..., ⁇ X1 q_n-1 -s q_X ⁇ a1 q_n-1) and (BetaX1 q_0 -s q_X ⁇ b1 q_0, ... , the ⁇ X1 q_n-1 -s q_X ⁇ b1 q_n-1), respectively received,
  • the secret product-sum calculation system 700 according to the seventh embodiment is similar to the fourth embodiment.
  • the method of the sixth embodiment is applied to the fraud detection processing for the product-sum calculation, but the secret product-sum calculation system 800 of the eighth embodiment uses one of the multiplications in the product-sum calculation.
  • data sequence a q (a q_0, ...
  • a q_n-1) consisting of a q_i between b and a natural number less than the prime p and, m-number of product sum calculations
  • the fraud detection method of the sixth embodiment is applied to the fraud detection processing for the product-sum calculation.
  • the functions of the data string decomposition supply unit 410, the first random number generation unit 301, the first calculation unit 302, the second calculation unit 303, and the output unit 420 are realized as these functions. Since the secret product sum calculation process (S41 to S47, S60) is the same as the secret product sum calculation system 500 of the fifth embodiment, a description thereof will be omitted and only the fraud detection process as a difference will be described. Since the functional configuration and the processing flow are the same as those in the seventh embodiment, the description will be made with reference to them (configuration diagram: FIG. 14 (and 13), processing flow diagram: FIG. 15).
  • each party performs fraud detection processing as follows.
  • the parties X and Y share the random number s q_Z
  • the parties Y and Z share the random number s q_X
  • the parties Z and X share the random number s q_Y in advance.
  • second random number generation unit 604 and transmitted to the party Y generates a random number [rho x, and transmits to the parties Z generates a random number ⁇ Z0 and the random number ⁇ Z0 q (S88). Subsequently, the third calculation means 605
  • the fourth calculation means 606 receives ⁇ Z from the party Z,
  • the fraud detection means 607 then changes party Y to ⁇ Y and party Z to ⁇ Y ′
  • the second random number generation means 604 generates a random number ⁇ Y and transmits it to the party Z, generates a random number ⁇ X1 and a random number ⁇ X1 q , and transmits them to the party X (S92). Subsequently, the third calculation means 605
  • the fourth calculation means 606 receives the random number ⁇ X from the party X,
  • the fraud detection unit 607 a gamma Z from party Z, and gamma Z 'from party X
  • the second random number generation means 604 generates a random number ⁇ Z and transmits it to the party X, generates a random number ⁇ Y2 and a random number ⁇ Y2 q , and transmits them to the party Y (S96). Subsequently, the third calculation means 605
  • the fourth calculation means 606 receives the random number ⁇ Y from the party Y,
  • the fraud detection means 607 converts party X to ⁇ X and party Y to ⁇ X ′.
  • C q — 0 and c q — 1 which are the calculation results at party X
  • c q — 1 and c q — 2 are the calculation results at party Y
  • c q — 2 and c q — 0 are the calculation results at party Z
  • party X has both a0 q_i0 and b1 q_j1 , but party Y has only b1 q_j1 and party Z has only a0 q_i0. Yes.
  • party X has both a0 q_i0 and b1 q_j1
  • party Y has only b1 q_j1
  • party Z has only a0 q_i0.
  • ⁇ a1 q_i1 ⁇ b0 q_j0 The secret sum-of-products calculation system 900 according to the ninth embodiment, when one of the three parties has both variance values and the other two parties have different variance values, respectively.
  • This is a method for obtaining the sum of products of these two variance values. In other words, it is a product-sum calculation method that is the basis of the secret product-sum calculation of the sixth and seventh embodiments.
  • party X has both variance values and parties Y and Z have one different variance value
  • party Y has both variance values and party X and Z have different values. It is possible to calculate in the same way when one of the variance values is present, and when the party Z has both variance values and the parties X and Y have different variance values. .
  • FIG. 16 shows a configuration example of the concealed product-sum calculation system 900
  • FIG. 17 shows a processing flow example thereof.
  • the secret product-sum calculation system 900 includes a party X, a party Y, and a party Z, which are calculation devices.
  • the party X includes a party X random number generation unit 901 and a party X calculation unit 903, the party Y includes a party Y random number generation unit 902 and a party Y calculation unit 904, and the party Z includes a fraud detection unit 905. .
  • the party X, data strings A q_0, A q_1, B q_0 , is B Q_1
  • the party Y, data strings A Q_1 is B Q_1
  • the party Z, data strings A q_0, is B q_0, respectively input (S101).
  • generation party X number generating means 901 party X is a random number c Q_1 and random gamma 1 and the random number sequence ( ⁇ 1 q_0, ..., ⁇ 1 q_nb0-1 ) and random number sequence ( ⁇ 1 q_0, ..., ⁇ 1 q_na0-1 ) a Then, it is transmitted to the party Y (S102). Further, the party Y random number generation means 902 of the party Y generates a random number s q and transmits it to the party Z (S103).
  • the party X calculation means 903 of the party X calculates c q — 0 and ⁇ 0 , And is transmitted to the party Z (S104).
  • party Y calculating means 904 party Y is a random number c Q_1 from party X and random gamma 1 and the random number sequence ( ⁇ 1 q_0, ..., ⁇ 1 q_nb0-1 ) and random number sequence ( ⁇ 1 q_0, ..., ⁇ 1 q_na0-1 ) receives, sequence ( ⁇ 0 q_0, ..., ⁇ 0 q_nb0-1 ) and progression ( ⁇ 0 q_0, ..., ⁇ 0 q_na0-1 ) and each of the ⁇ ', And is transmitted to the party Z (S105).
  • fraud detection unit 905 parties Z is a gamma 0 and c Q_0 from party X, the random number s q and sequences from-party Y ( ⁇ 0 q_0, ..., ⁇ 0 q_nb0-1) and sequence ( ⁇ 0 q_0, ..., ⁇ 0 q_na0-1 ) and ⁇ ′, If the calculation result is not 0, data representing fraud detection is output and the process is terminated (S106).
  • a hash value or the like may be substituted for a portion using a random number.
  • the configuration and the processing flow are the same as those in the ninth embodiment (configuration example: FIG. 16, processing flow example: FIG. 17).
  • the party X, data strings A q_0, A q_1, B q_0 , is B Q_1
  • the party Y, data strings A Q_1 is B Q_1
  • the party Z, data strings A q_0, is B q_0, respectively input (S101).
  • generation party X number generating means 901 party X is a random number c Q_1 and random gamma 1 and the random number sequence ( ⁇ 1 q_0, ..., ⁇ 1 q_n -1) and random number sequence ( ⁇ 1 q_0, ..., ⁇ 1 q_n -1) a Then, it is transmitted to the party Y (S102). Further, the party Y random number generation means 902 of the party Y generates a random number s q and transmits it to the party Z (S103).
  • the party X calculation means 903 of the party X calculates c q — 0 and ⁇ 0 , And is transmitted to the party Z (S104).
  • the party Y calculating means 904 of the party Y receives the random number c q_1 , the random number ⁇ 1 , the random number sequence ( ⁇ 1 q_0 ,..., ⁇ 1 q_n-1 ) and the random number sequence ( ⁇ 1 q_0 ,..., ⁇ 1 q_n-1 ). , And the sequence ( ⁇ 0 q_0 ,..., ⁇ 0 q_n -1 ), the sequence ( ⁇ 0 q_0 ,..., ⁇ 0 q_n -1 ) and ⁇ ′ are respectively And is transmitted to the party Z (S105).
  • the party Z fraud detection means 905 sends the party X to c q — 0 and ⁇ 0 , the party Y to the random number s q , the sequence ( ⁇ 0 q — 0 ,..., ⁇ 0 q_n ⁇ 1 ) and the sequence ( ⁇ 0 q — 0 ,. q_n -1 ) and ⁇ ' If the calculation result is not 0, data representing fraud detection is output and the process is terminated (S106).
  • a hash value or the like may be substituted for a portion using a random number.
  • the secret product-sum calculation system 920 of the eleventh embodiment is the product-sum calculation in the secret product-sum calculation system 910 of the tenth embodiment. If one of the multiplications of each term is common regardless of the values of i and q, that is, In this case, the product-sum calculation can be performed more efficiently and safely.
  • the configuration and processing flow of the concealed product-sum calculation system 902 are the same as those in the ninth and tenth embodiments (configuration example: FIG. 16, processing flow example: FIG. 17).
  • the data a1 and the data string Bq_1 are input to the party Z, and the data a0 and the data string Bq_0 are input to the party Z (S101).
  • the party X random number generation means 901 of the party X generates a random number c q_1 , a random number ⁇ 1 , a random number sequence ( ⁇ 1 q — 0,.
  • party Y random number generation means 902 of the party Y generates a random number s q and transmits it to the party Z (S103).
  • the party X calculation means 903 of the party X calculates c q — 0 and ⁇ 0 , And is transmitted to the party Z (S104).
  • party Y calculating means 904 party Y is a random number c Q_1 from party X and random gamma 1 and the random number sequence ( ⁇ 1 q_0, ..., ⁇ 1 q_n -1) receives the random number .beta.1, sequence ( ⁇ 0 q_0, ..., ⁇ 0 q_n -1 ), ⁇ 0 and ⁇ ′, And is transmitted to the party Z (S105).
  • the party Z fraud detection means 905 receives c q — 0 and ⁇ 0 from the party X, and random numbers s q and a sequence ( ⁇ 0 q — 0 ,..., ⁇ 0 q — n ⁇ 1 ), ⁇ 0 and ⁇ ′ from the party Y, respectively. And If the calculation result is not 0, data representing fraud detection is output and the process is terminated (S106).
  • a hash value or the like may be substituted for a portion using a random number.
  • Each process in the secret product-sum calculation method and the secret product-sum calculation system of the present invention described above is executed not only in time series according to the description, but also in parallel according to the processing capability of the apparatus that executes the process or as necessary. Or you may perform separately. Further, the functions of the constituent elements of the concealed product-sum calculation system of the present invention may be merged and divided as necessary. In addition, it can change suitably in the range which does not deviate from the meaning of this invention.
  • the secret product-sum calculation system of each embodiment of the present invention is realized by a computer, the processing contents of the functions of the apparatus and each part thereof are described by a program.
  • the program is stored in, for example, a hard disk device, and necessary programs and data are read into a RAM (Random Access Memory) at the time of execution.
  • the read program is executed by the CPU, whereby each processing content is realized on the computer.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Complex Calculations (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

 3つのパーティ(計算装置)の協調計算により秘匿積和計算を行うのに際し、高速に計算することができ、かつ、実装が容易である方法を提供する。パーティXが、パーティX乱数生成ステップとパーティX第1計算ステップとパーティX第2計算ステップとを実行し、パーティYが、パーティY乱数生成ステップとパーティY第1計算ステップとパーティY第2計算ステップとを実行し、パーティZが、パーティZ乱数生成ステップとパーティZ第1計算ステップとパーティZ第2計算ステップとを実行する秘匿計算方法において、各パーティの計算処理を対称に構成する。

Description

秘匿積和計算方法、秘匿積和計算システム、計算装置、及びそれらのプログラム
 本発明は、秘密分散によりデータを秘匿しつつ、データ処理、特に乗算及び積和演算を行う秘匿積和計算方法、秘匿積和計算システム、計算装置、及びそれらのプログラムに関する。
 顧客情報や経営情報等、いわゆるセンシティブ情報の管理・運用においては、管理情報の多様化やクラウドコンピューティング等の情報処理基盤の変化に伴い、セキュリティ対策やプライバシーの配慮が一層重要な課題となっている。その中で、最近では情報を複数個所に分散させて情報漏洩を防ぐ、秘密分散技術の普及が進みつつある。更に、分散された情報を復元することなく指定された計算結果を導く秘匿関数計算(マルチパーティプロトコル)についても実用化を見据えて開発が進められている。秘密分散技術は、情報の保管時のセキュリティ対策としては有効であるが、利用時は一般に復元する必要があるため、漏洩リスクが高まる。秘匿関数計算は、このような漏洩リスクの存在を踏まえ、本来の入力値の代わりに分散された情報を計算の入力とでき、計算過程においても本来の入力値が一切復元されないため、秘密分散技術の機能を情報の利用時にも維持したより高度なセキュリティ技術といえる。
 情報を秘匿しつつ乗算及び積和演算を行う従来技術としては、乗算に関しては非特許文献1の乗算プロトコルが、また、積和演算に関しては乗算プロトコルと加算プロトコルとの複合利用が挙げられる。これらのプロトコルは、分散された入力値を復元することなく、3パーティ(3計算主体)の協調計算によって算術/論理演算の結果を導く3パーティ秘匿関数計算プロトコルである。3パーティ秘匿関数計算プロトコルでは、データをある定められた素数p未満の自然数として扱う。データを秘匿するときには、そのデータをaとすれば、aを以下の条件を満たすよう3つに分散する。
 a=a0+a1+a2 mod p
実際には乱数a0、a1を生成し、a2=a-a0-a1とする。そして3パーティX、Y、Zに対して、Xに(a0、a1)、Yに(a1、a2)、Zに(a2、a0)を送信する。すると、a1、a2が乱数であったため、X、Y、Zのいずれのパーティもaの情報を持たないが、いずれか2パーティが集まればaを復元することができることとなる。
 秘匿が加法的な分散であるため、可換性から、分散値を加算してから復元しても、復元してから加算しても結果は等しい。すなわち、加算及び定数倍は分散したまま通信なしで行うことが可能である。そして、これに乗算が加われば論理回路を構成でき、いかなる計算を実行することも可能となる。この乗算は通信及び乱数生成が必要なので、3パーティ秘匿関数計算のボトルネックとなる。
千田浩司、濱田浩気、五十嵐大、高橋克己、「軽量検証可能3パーティ秘匿関数計算の再考」、CSS2010、2010年
 3パーティ秘匿関数計算において、乗算、積和計算は通信及び乱数生成が必要なので、計算処理におけるボトルネックとなる。
 具体的には、従来の乗算プロトコルには、通信回数が2ラウンド必要である。また、3パーティそれぞれの計算量・通信量が対称でないため、パーティごとに異なるプログラムを実装する必要がある。したがって、実装コストが高くなる。さらに、計算量・通信量の最も重い部分がボトルネックとなる。また、積和計算は、一般に通信量が大きくなる。
 本発明の目的は、乗算、積和計算を高速に行うことができ、かつ、実装が容易な秘匿積和計算方法、秘匿積和計算システム、計算装置、及びそれらのプログラムを提供することにある。
 本発明の秘匿積和計算方法は、パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列A0=(a00,…,a0na0-1)、A1=(a10,…,a1na1-1)、及びA2=(a20,…,a2na2-1)と、データ列B0=(b00,…,b0nb0-1)、B1=(b10,…,b1nb1-1)、及びB2=(b20,…,b2nb2-1)との積和計算
Figure JPOXMLDOC01-appb-M000107
(i0=0,…,na0-1、i1=0,…,na1-1、i2=0,…,na2-1、j0=0,…,nb0-1、j1=0,…,nb1-1、j2=0,…,nb2-1、ただし、na0,na1,na2,nb0,nb1,nb2は自然数)を行うために用いる秘匿積和計算方法であって、パーティX乱数生成ステップ、パーティX第1計算ステップ、パーティX第2計算ステップ、パーティY乱数生成ステップ、パーティY第1計算ステップ、パーティY第2計算ステップ、パーティZ乱数生成ステップ、パーティZ第1計算ステップ、及びパーティZ第2計算ステップを実行する。
 処理に際し、パーティXにはデータ列A0、A1、B0、B1が、パーティYにはデータ列A1、A2、B1、B2が、パーティZにはデータ列A2、A0、B2、B0が、それぞれ入力される。
 パーティX乱数生成ステップは、パーティXが、数rXを生成し、パーティYに送信する。
 パーティX第1計算ステップは、パーティXが、cX
Figure JPOXMLDOC01-appb-M000108
(e01i0,j1とe10i1,j0は任意の数)により計算し、パーティZに送信する。
 パーティX第2計算ステップは、パーティXが、パーティZから数rzを、パーティYからcYを、それぞれ受信し、c0とc1をそれぞれ、
Figure JPOXMLDOC01-appb-M000109
(e00i0,j0とe11i1,j1は任意の数)により計算して出力する。
 パーティY乱数生成ステップは、パーティYが、数rYを生成し、パーティZに送信する。
 パーティY第1計算ステップは、パーティYが、cY
Figure JPOXMLDOC01-appb-M000110
(e12i1,j2とe21i2,j1は任意の数)により計算し、パーティXに送信する。
 パーティY第2計算ステップは、パーティYが、パーティXから数rXを、パーティZからcZを、それぞれ受信し、c1とc2をそれぞれ、
Figure JPOXMLDOC01-appb-M000111
(e22i2,j2は任意の数)により計算して出力する。
 パーティZ乱数生成ステップは、パーティZが、数rZを生成し、パーティXに送信する。
 パーティZ第1計算ステップは、パーティZが、cZ
Figure JPOXMLDOC01-appb-M000112
(e20i2,j0とe02i0,j2は任意の数)により計算し、パーティYに送信する。
 パーティZ第2計算ステップは、パーティZが、パーティYから数rYを、パーティXからcXを、それぞれ受信し、c0とc2をそれぞれ、
Figure JPOXMLDOC01-appb-M000113
により計算して出力する。
 本発明の秘匿積和計算方法、秘匿積和計算システム、計算装置、及びそれらのプログラムによれば、乗算、積和計算を高速に行うことができ、かつ、各パーティの処理が対称であるため容易にプログラムを実装できる。
秘匿積和計算システム100の構成例を示す図。 秘匿積和計算システム100の処理フロー例を示す図。 秘匿積和計算システム100、200の各パーティの内部構成例を示す図。 秘匿積和計算システム200の構成例を示す図。 秘匿積和計算システム200の処理フロー例を示す図。 秘匿積和計算システム300の構成例を示す図。 秘匿積和計算システム300の処理フロー例を示す図。 秘匿積和計算システム300、400、500の各パーティの内部構成例を示す図。 秘匿積和計算システム400、500の構成例を示す図。 秘匿積和計算システム400、500の処理フロー例を示す図。 秘匿積和計算システム600の構成例を示す図。 秘匿積和計算システム600の処理フロー例を示す図。 秘匿積和計算システム600、700、800の各パーティの内部構成例を示す図。 秘匿積和計算システム700、800の構成例を示す図。 秘匿積和計算システム700、800の処理フロー例を示す図。 秘匿積和計算システム900、910、920の構成例を示す図。 秘匿積和計算システム900、910、920の処理フロー例を示す図。
 以下、本発明の実施形態について、詳細に説明する。
 図1に秘匿積和計算システム100の構成例を、図2にその処理フロー例をそれぞれ示す。秘匿積和計算システム100は、それぞれ対称な計算処理を行う計算装置であるパーティX、パーティY、パーティZを備える。
 本発明の秘匿積和計算は、パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列A0=(a00,…,a0na0-1)、A1=(a10,…,a1na1-1)、及びA2=(a20,…,a2na2-1)と、データ列B0=(b00,…,b0nb0-1)、B1=(b10,…,b1nb1-1)、及びB2=(b20,…,b2nb2-1)との積和計算を行う。na0、na1、na2、nb0、nb1、nb2はそれぞれ自然数である。
 各パーティは、図3に示すように乱数生成手段101と第1計算手段102と第2計算手段103とを備える。図3においては、自パーティをP、他パーティをP、Pと表示する。具体的には自パーティがXのとき、PはパーティZ、PはパーティYであり、自パーティがYのとき、PはパーティX、PはパーティZであり、自パーティがZのとき、PはパーティY、PはパーティXである。なお、本明細書では、このように、どのパーティから見ても、自パーティPと他パーティP、Pとの関係が同じになることを「対称」と呼ぶ。また、そのときの処理に対して、「対称な処理」または「処理が対称」のように表現する。
 以下、各パーティの協調計算処理の内容について具体的に説明する。まず、パーティXにデータ列A0、A1、B0、B1が入力され、パーティYにデータ列A1、A2、B1、B2が入力され、パーティZにデータ列A2、A0、B2、B0が入力される(S1)。
 続いて、パーティXは以下の処理を行う。まず、乱数生成手段101が、乱数rXを生成し、パーティYに送信する(S2-1)。続いて、第1計算手段102が、cX
Figure JPOXMLDOC01-appb-M000114
により計算し、パーティZに送信する(S2-2)。ここで、i0=0,…,na0-1、i1=0,…,na1-1、j0=0,…,nb0-1、j1=0,…,nb1-1であり、e01i0,j1とe10i1,j0は任意の数である。そして、第2計算手段103が、パーティZから乱数rzを、パーティYからcYを、それぞれ受信し、c0とc1をそれぞれ、
Figure JPOXMLDOC01-appb-M000115
により計算して出力する(S3)。ここで、e00i0,j0とe11i1,j1は任意の数である。
 また、パーティYは以下の処理を行う。まず、乱数生成手段101が、乱数rYを生成し、パーティZに送信する(S4-1)。続いて、第1計算手段102が、cY
Figure JPOXMLDOC01-appb-M000116
により計算し、パーティXに送信する(S4-2)。ここで、i2=0,…,na2-1、j2=0,…,nb2-1であり、e12i1,j2とe21i2,j1は任意の数である。そして、第2計算手段103が、パーティXから乱数rXを、パーティZからcZを、それぞれ受信し、c1とc2をそれぞれ、
Figure JPOXMLDOC01-appb-M000117
により計算して出力する(S5)。ここで、e22i2,j2は任意の数である。
 また、パーティZは以下の処理を行う。まず、乱数生成手段101が、乱数rZを生成し、パーティXに送信する(S6-1)。続いて、第1計算手段102が、cZ
Figure JPOXMLDOC01-appb-M000118
により計算し、パーティYに送信する(S6-2)。ここで、e20i2,j0とe02i0,j2は任意の数である。そして、第2計算手段103が、パーティYから乱数rYを、パーティXからcXを、それぞれ受信し、c0とc2をそれぞれ、
Figure JPOXMLDOC01-appb-M000119
により計算して出力する(S7)。なお、S2-1、2とS4-1、2とS6-1、2とは並行処理が可能であり、S3とS5とS7とについても並行処理が可能である。
 そして、パーティX、Y、Zから出力されたc0、c1、c2の総和をとることで、
Figure JPOXMLDOC01-appb-M000120
というような積和計算結果を得ることができる。なお、以上の処理において、乱数を用いている部分についてはハッシュ値等で代用しても構わない。
 本発明の方法と非特許文献1による方法の効果を比較する。非特許文献1における計算量のほとんどが、乱数生成のための計算量と、物理的セキュアチャネルを用意できない場合の通信の暗号化・復号でのための計算量である。暗号化・復号のための計算量は通信量と一致するため、生成する乱数の数と通信量を観察すれば効率を評価できる。
 非特許文献1の乗算を繰り返してから加算を行う方法の場合、生成する乱数の数、通信量は入力データ列の要素の個数に比例する。一方、本発明の方法の場合、パーティX、Y、Zとも、生成する乱数が1個、他のパーティへ送信するデータが2個で済む。また、パーティX、Y、Zの処理が対称なため、すべてのパーティに共通なプログラムを実装できるので実装コストを抑えることができる。
 実施例2は、実施例1の具体例であり、na0=na1=na2=nb0=nb1=nb2=n(nは1以上の整数)、e00=e01=e10=e11=e12=e21=e22=e20=e02=1の場合である。図4に本実施例の秘匿積和計算システム200の構成例を、図5にその処理フロー例をそれぞれ示す。秘匿積和計算システム200は、パーティX、パーティY、パーティZ、データ列分解供給部210、及び出力部220を備える。各パーティは、実施例1と同様、図3に示すように乱数生成手段101、第1計算手段102、及び第2計算手段103を備える。
 秘匿積和計算システム200は、パーティX、パーティY、パーティZの3つの計算装置の協調計算により、素数p未満の自然数である要素ai、bi(i=0,…,n-1)からなる2つのデータ列A=(a0,…,an-1)、B=(b0,…,bn-1)について、データ列の内容を秘匿したまま、積和計算
Figure JPOXMLDOC01-appb-M000121
を行う(n=1の場合はaとbとの乗算)。
 具体的には、まず、データ列分解供給部210は、入力されたデータ列A、Bの各要素ai、biを、ai=a0i+a1i+a2i modp、bi=b0i+b1i+b2i modp(a0i、a1i、b0i、b1iは乱数、pは素数)の条件式を満たすように分解し、パーティXにデータ列A0=(a00,…,a0n-1)とデータ列A1=(a10,…,a1n-1)とデータ列B0=(b00,…,b0n-1)とデータ列B1=(b10,…,b1n-1)とを与え、パーティYにデータ列A1とデータ列A2=(a20,…,a2n-1)とデータ列B1とデータ列B2=(b20,…,b2n-1)とを与え、パーティZにデータ列A2とデータ列A0とデータ列B2とデータ列B0とを与える(S11)。
 続いて、パーティXは以下の処理を行う。まず、乱数生成手段101が、乱数rXを生成し、パーティYに送信する(S12-1)。続いて、第1計算手段102が、cX
Figure JPOXMLDOC01-appb-M000122
により計算し、パーティZに送信する(S12-2)。続いて、第2計算手段103が、パーティZから乱数rzを、パーティYからcYを、それぞれ受信し、c0とc1をそれぞれ、
Figure JPOXMLDOC01-appb-M000123
により計算して出力する(S13)。
 また、パーティYは以下の処理を行う。まず、乱数生成手段101が、乱数rYを生成し、パーティZに送信する(S14-1)。続いて、第1計算手段102が、cY
Figure JPOXMLDOC01-appb-M000124
により計算し、パーティXに送信する(S14-2)。続いて、第2計算手段103が、パーティXから乱数rXを、パーティZからcZを、それぞれ受信し、c1とc2をそれぞれ、
Figure JPOXMLDOC01-appb-M000125
により計算して出力する(S15)。
 また、パーティZは以下の処理を行う。まず、乱数生成手段101が、乱数rZを生成し、パーティXに送信する(S16-1)。続いて、第1計算手段102が、cZ
により計算し、パーティYに送信する(S16-2)。続いて、第2計算手段103が、パーティYから乱数rYを、パーティXからcXを、それぞれ受信し、c0とc2をそれぞれ、
Figure JPOXMLDOC01-appb-M000127
により計算して出力する(S17)。なお、S12-1、2とS14-1、2とS16-1、2とは並行処理が可能であり、S13とS15とS17とについても並行処理が可能である。
 そして、出力部220がパーティX、Y、Zから出力されたc0、c1、c2の総和(c0+c1+c2)を計算して出力する。
Figure JPOXMLDOC01-appb-M000128
なので、正しく積和計算(i=1の場合はaとbとの乗算)ができていることがわかる。
 なお、以上の処理において、乱数を用いている部分についてはハッシュ値等で代用しても構わない。また、データ列分解供給部210、出力部220については、各パーティとは異なる別の装置が備えることとしても、各パーティに該当する装置のいずれか1以上が備えることとしてもよい。
 本発明と非特許文献1の方法の効果を比較する。乗算については、非特許文献1の方法では、通信回数が2ラウンド(ラウンドとは、パーティX、Y、Zの並行処理において他のパーティの処理を待つ回数)であり、パーティXが生成する乱数が1個、送信するデータが4個であり、パーティY、Zが生成する乱数が0個、送信するデータが1個である。一方、本発明では、通信回数が1ラウンドであり、パーティX、Y、Zとも生成する乱数が1個、送信するデータが2個である。つまり、ラウンド数は半分となっている。また、生成する乱数と送信するデータの個数は同じであるが、パーティX、Y、Zの処理が対称になっているため、ボトルネックが小さくなっていると言える。
 積和計算については、非特許文献1の乗算を繰り返してから加算を行う方法の場合、生成する乱数の数、通信量は入力データ列の要素の個数に比例するが、本発明の方法の場合、パーティX、Y、Zとも、生成する乱数が1個、他のパーティへ送信するデータが2個で済む。そして、いずれの計算の場合においても、パーティX、Y、Zの処理が対称なため、実装コストを抑えることができる。
 実施例3は、積和計算を行う実施例1、2に不正検知機能を加えた構成である。図6に秘匿積和計算システム300の構成例を、図7にその処理フロー例をそれぞれ示す。秘匿積和計算システム300は、それぞれ対称な計算処理を行う計算装置であるパーティX、パーティY、パーティZを備える。
 本発明の秘匿積和計算は、パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列Aq_0=(a0q_0,…,a0q_na0-1)、Aq_1=(a1q_0,…,a1q_na1-1)、及びAq_2=(a2q_0,…,a2q_na2-1)と、データ列Bq_0=(b0q_0,…,b0q_nb0-1)、Bq_1=(b1q_0,…,b1q_nb1-1)、及びBq_2=(b2q_0,…,b2q_nb2-1)との積和計算を、q=0,…,m-1の計m組(mは1以上の整数)について(mが2以上の場合は並列に)行う。na0、na1、na2、nb0、nb1、nb2はそれぞれ自然数である。
 各パーティは、図8に示すように第1乱数生成手段301、第1計算手段302、第2計算手段303、第2乱数生成手段304、第3計算手段305、第4計算手段306、及び不正検知手段307を備える。図8においては、いずれかの前記計算装置がパーティPであるとしたとき、パーティPがパーティXである場合には、パーティPがパーティZ、パーティPがパーティY、符号0p、1p、2pがそれぞれ0、1、2に対応し、パーティPがパーティYである場合には、パーティPがパーティX、パーティPがパーティZ、符号0p、1p、2pがそれぞれ1、2、0に対応し、パーティPがパーティZである場合には、パーティPがパーティY、パーティPがパーティX、符号0p、1p、2pがそれぞれ2、0、1に対応する。
 以下、各パーティの協調計算処理の内容について具体的に説明する。S21~S27が実施例1に相当する積和計算処理であり、S28~S39が不正検知処理である。なお、パーティXとYは乱数sq_Zを、パーティYとZは乱数sq_Xを、パーティZとXは乱数sq_Yを、それぞれ予め共有しているものとする。まず、パーティXにデータ列Aq_0、Aq_1、Bq_0、Bq_1が入力され、パーティYにデータ列Aq_1、Aq_2、Bq_1、Bq_2が入力され、パーティZにデータ列Aq_2、Aq_0、Bq_2、Bq_0が入力される(S21)。
 続いて、パーティXは以下の処理を行う。まず、第1乱数生成手段301が、乱数rq_Xを生成し、パーティYに送信する(S22-1)。続いて、第1計算手段302が、cq_X
Figure JPOXMLDOC01-appb-M000129
により計算し、パーティZに送信する(S22-2)。ここで、i0=0,…,na0-1、i1=0,…,na1-1、j0=0,…,nb0-1、j1=0,…,nb1-1であり、e01q_i0,q_j1とe10q_i1,q_j0は任意の数である。続いて、第2計算手段303が、パーティZから乱数rq_zを、パーティYからcq_Yを、それぞれ受信し、cq_0とcq_1をそれぞれ、
Figure JPOXMLDOC01-appb-M000130
により計算する(S23)。ここで、e00q_i0,q_j0、e11q_i1, q_j1は任意の数である。
 また、パーティYは以下の処理を行う。まず、乱数生成手段301が、乱数rq_Yを生成し、パーティZに送信する(S24-1)。続いて、第1計算手段302が、cq_Y
Figure JPOXMLDOC01-appb-M000131
により計算し、パーティXに送信する(S24-2)。ここで、i2=0,…,na2-1、j2=0,…,nb2-1であり、e12q_i1,q_j2とe21q_i2,q_j1は任意の数である。続いて、第2計算手段303が、パーティXから乱数rq_Xを、パーティZからcq_Zを、それぞれ受信し、cq_1とcq_2をそれぞれ、
Figure JPOXMLDOC01-appb-M000132
により計算する(S25)。ここで、e22q_i2,q_j2は任意の数である。
 また、パーティZは以下の処理を行う。まず、乱数生成手段301が、乱数rq_Zを生成し、パーティXに送信する(S26-1)。続いて第1計算手段302が、cq_Z
Figure JPOXMLDOC01-appb-M000133
により計算し、パーティYに送信する(S26-2)。ここで、e20q_i2,q_j0とe02q_i0,q_j2は任意の乗数である。続いて、第2計算手段303が、パーティYから乱数rq_Yを、パーティXからcq_Xを、それぞれ受信し、cq_0とcq_2をそれぞれ、
Figure JPOXMLDOC01-appb-M000134
により計算する(S27)。なお、S22-1、2とS24-1、2とS26-1、2とは並行処理が可能であり、S23とS25とS27とについても並行処理が可能である。
 S21~S27の処理に続き、各パーティは以下のように不正検知処理を行う。
 パーティXの処理について説明する。まず、第2乱数生成手段304が、乱数列(αY1q_0,…,αY1q_na1-1)及び乱数ρxを生成してパーティYに送信し、乱数列(αZ0q_0,…,αZ0q_na0-1)を生成してパーティZに送信する(S28)。続いて、第3計算手段305が、(αZ0q_0-sq_Z・a0q_0,…,αZ0q_na0-1-sq_Z・a0q_na0-1)を計算してパーティYに送信し、パーティYから乱数列(αX1q_0,…,αX1q_na1-1)を、パーティZから乱数列(αX0q_0,…,αX0q_na0-1)を、それぞれ受信し、(αY1q_0-sq_Y・a1q_0,…,αY1q_na1-1-sq_Y・a1q_na1-1)及び
Figure JPOXMLDOC01-appb-M000135
を計算してパーティZに送信する(S29)。続いて、第4計算手段306が、パーティYから(αZ2q_0-sq_Z・a2q_0,…,αZ2q_na2-1-sq_Z・a2q_na2-1)を、パーティZからρZを、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000136
を計算してパーティYに送信する(S30)。そして、不正検知手段307が、パーティYからγYを、パーティZからγY´と(αY2q_0-sq_Y・a2q_0,…,αY2q_na2-1-sq_Y・a2q_na2-1)を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000137
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_0とcq_1を出力する(S31)。
 次に、パーティYの処理について説明する。まず、第2乱数生成手段304が、乱数列(αZ2q_0,…,αZ2q_na2-1)及び乱数ρYを生成してパーティZに送信し、乱数列(αX1q_0,…,αX1q_na1-1)を生成してパーティXに送信する(S32)。続いて、第3計算手段305が、(αX1q_0-sq_X・a1q_0,…,αX1q_na1-1-sq_X・a1q_na1-1)を計算してパーティZに送信し、パーティXから乱数列(αY1q_0,…,αY1q_na1-1)を、パーティZから乱数列(αY2q_0,…,αY2q_na2-1)を、それぞれ受信し、(αZ2q_0-sq_Z・a2q_0,…,αZ2q_na2-1-sq_Z・a2q_na2-1)及び
Figure JPOXMLDOC01-appb-M000138
を計算してパーティXに送信する(S33)。続いて、第4計算手段306が、パーティXから乱数ρXを、パーティZから(αX0q_0-sq_X・a0q_0,…,αX0q_na0-1-sq_X・a0q_na0-1)を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000139
を計算してパーティZに送信する(S34)。そして、不正検知手段307が、パーティXからγZ´と(αZ0q_0-sq_Z・a0q_0,…,αZ0q_na0-1-sq_Z・a0q_na0-1)を、パーティZからγZを、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000140
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_1とcq_2を出力する(S35)。
 次に、パーティZの処理について説明する。まず、第2乱数生成手段304が、乱数列(αX0q_0,…,αX0q_na0-1)及び乱数ρZを生成してパーティXに送信し、乱数列(αY2q_0,…,αY2q_na2-1)を生成してパーティYに送信する(S36)。続いて、第3計算手段305が、(αY2q_0-sq_Y・a2q_0,…,αY2q_na2-1-sq_Y・a2q_na2-1)を計算してパーティXに送信し、パーティXから乱数列(αZ0q_0,…,αZ0q_na0-1)を、パーティYから乱数列(αZ2q_0,…,αZ2q_na2-1)を、それぞれ受信し、(αX0q_0-sq_X・a0q_0,…,αX0q_na0-1-sq_X・a0q_na0-1)及び
Figure JPOXMLDOC01-appb-M000141
を計算してパーティYに送信する(S37)。続いて、第4計算手段306が、パーティXから(αY1q_0-sq_Y・a1q_0,…,αY1q_na1-1-sq_Y・a1q_na1-1)を、パーティYから乱数ρYを、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000142
を計算してパーティXに送信する(S38)。そして、不正検知手段307が、パーティXからγXを、パーティYからγX´と(αX1q_0-sq_X・a1q_0,…,αX1q_na1-1-sq_X・a1q_na1-1)を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000143
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_2とcq_0を出力する(S39)。
 そして、不正検知が無かった場合には、パーティX、Y、Zから出力されたcq_0、cq_1、cq_2の総和をとることで、
Figure JPOXMLDOC01-appb-M000144
というような積和計算結果を得ることができる。なお、以上の処理において、乱数を用いている部分についてはハッシュ値等で代用しても構わない。
 本発明の不正検知は、1回の乗算、積和演算または並列に実行された乗算、積和演算に対して1回行われる。また、不正検知機能における各Pが送信するγP+に含まれるαP+0q_i0、αP+1q_i1、αP+2q_i2(ただし、q=0,…,m-1)は、各aq_iに異なる乱数を掛けた数の断片である。したがって、ひとつでも不正な値があれば、Pに予知できない乱数となる。よって、法が素数pであれば、不正があった場合に積和計算処理での不正と辻褄を合わせられる確率は1/(p-1)しかない。
 実施例4は、実施例3の具体例であり、na0=na1=na2=nb0=nb1=nb2=n(nは1以上の整数)、e00=e01=e10=e11=e12=e21=e22=e20=e02=1の場合である。図9に本実施例の秘匿積和計算システム400の構成例を、図10にその処理フロー例をそれぞれ示す。秘匿積和計算システム400は、パーティX、パーティY、パーティZ、データ列分解供給部410、及び出力部420を備える。各パーティは、実施例3と同様、第1乱数生成手段301、第1計算手段302、第2計算手段303、第2乱数生成手段304、第3計算手段305、第4計算手段306、及び不正検知手段307を備える。
 秘匿積和計算システム400は、パーティX、パーティY、パーティZの3つの計算装置の協調計算により、素数p未満の自然数である要素aq_i、bq_i(i=0,…,n-1(nは1以上の整数))からなるm組のデータ列Aq=(aq_0,…,aq_n-1)、Bq=(bq_0,…,bq_n-1)(mは1以上の整数、q=0,…,m-1)につき、各組の積和計算
Figure JPOXMLDOC01-appb-M000145
を行う(n=1の場合はaとbとの乗算)。なお、実施例3と同様、パーティXとYは乱数sq_Zを、パーティYとZは乱数sq_Xを、パーティZとXは乱数sq_Yを、それぞれ予め共有しているものとする。
 具体的な処理としては、まず、データ列分解供給部410が、入力されたm組のデータ列Aq、Bqの各要素aq_i、bq_iを、aq_i=a0q_i+a1q_i+a2q_i modp、bq_i=b0q_i+b1q_i+b2q_i modp(a0q_i、a1q_i、b0q_i、b1q_iは乱数、pは素数)の条件式を満たすように分解し、パーティXにデータ列Aq_0=(a0q_0,…,a0q_n-1)とデータ列Aq_1=(a1q_0,…,a1q_n-1)とデータ列Bq_0=(b0q_0,…,b0q_n-1)とデータ列Bq_1=(b1q_0,…,b1q_n-1)とを与え、パーティYにデータ列Aq_1とデータ列Aq_2=(a2q_0,…,a2q_n-1)とデータ列Bq_1とデータ列Bq_2=(b2q_0,…,b2q_n-1)とを与え、パーティZにデータ列Aq_2とデータ列Aq_0とデータ列Bq_2とデータ列Bq_0とを与える(S41)。
 続いて、パーティXは以下の処理を行う。まず、第1乱数生成手段301が、乱数rq_Xを生成し、パーティYに送信するS42-1)。続いて、第1計算手段302が、cq_X
Figure JPOXMLDOC01-appb-M000146
により計算し、パーティZに送信する(S42-2)。続いて、第2計算手段303が、パーティZから乱数rq_zを、パーティYからcq_Yを、それぞれ受信し、cq_0とcq_1をそれぞれ、
Figure JPOXMLDOC01-appb-M000147
により計算する(S43)。
 また、パーティYは以下の処理を行う。まず、乱数生成手段304が、乱数rq_Yを生成し、パーティZに送信する(44-1)。続いて、第1計算手段305が、cq_Y
Figure JPOXMLDOC01-appb-M000148
により計算し、パーティXに送信する(S44-2)。続いて、第2計算手段306が、パーティXから乱数rq_Xを、パーティZからcq_Zを、それぞれ受信し、cq_1とcq_2をそれぞれ、
Figure JPOXMLDOC01-appb-M000149
により計算する(S45)。
 また、パーティZは以下の処理を行う。まず、第1乱数生成手段301が、乱数rq_Zを生成し、パーティXに送信する(S46-1)。続いて、第1計算手段302が、cq_Z
Figure JPOXMLDOC01-appb-M000150
により計算し、パーティYに送信する(S46-2)。続いて、第2計算手段303が、パーティYから乱数rq_Yを、パーティXからcq_Xを、それぞれ受信し、cq_0とcq_2をそれぞれ、
Figure JPOXMLDOC01-appb-M000151
により計算する(S47)。なお、S42-1、2とS44-1、2とS46-1、2とは並行処理が可能であり、S43とS45とS47とについても並行処理が可能である。
 S41~S47の処理に続き、各パーティは以下のように不正検知処理を行う。パーティXの処理について説明する。まず、第2乱数生成手段304が、乱数列(αY1q_0,…,αY1q_n-1)及び乱数ρxを生成してパーティYに送信し、乱数列(αZ0q_0,…,αZ0q_n-1)を生成してパーティZに送信する(S48)。続いて、第3計算手段305が、(αZ0q_0-sq_Z・a0q_0,…,αZ0q_n-1-sq_Z・a0q_n-1)を計算してパーティYに送信し、パーティYから乱数列(αX1q_0,…,αX1q_n-1)を、パーティZから乱数列(αX0q_0,…,αX0q_n-1)を、それぞれ受信し、(αY1q_0-sq_Y・a1q_0,…,αY1q_n-1-sq_Y・a1q_n-1)及び
Figure JPOXMLDOC01-appb-M000152
を計算してパーティZに送信する(S49)。続いて、第4計算手段306が、パーティYから(αZ2q_0-sq_Z・a2q_0,…,αZ2q_n-1-sq_Z・a2q_n-1)を、パーティZからρZを、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000153
を計算してパーティYに送信する(S50)。そして、不正検知手段307が、パーティYからγYを、パーティZからγY´と(αY2q_0-sq_Y・a2q_0,…,αY2q_n-1-sq_Y・a2q_n-1)を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000154
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_0とcq_1を出力する(S51)。
 次にパーティYの処理について説明する。
 まず、第2乱数生成手段304が、乱数列(αZ2q_0,…,αZ2q_n-1)及び乱数ρYを生成してパーティZに送信し、乱数列(αX1q_0,…,αX1q_n-1)を生成してパーティXに送信する(S52)。続いて、第3計算手段305が、(αX1q_0-sq_X・a1q_0,…,αX1q_n-1-sq_X・a1q_n-1)を計算してパーティZに送信し、パーティXから乱数列(αY1q_0,…,αY1q_n-1)を、パーティZから乱数列(αY2q_0,…,αY2q_n-1)を、それぞれ受信し、(αZ2q_0-sq_Z・a2q_0,…,αZ2q_n-1-sq_Z・a2q_n-1)及び
Figure JPOXMLDOC01-appb-M000155
を計算してパーティXに送信する(S53)。続いて、第4計算手段306が、パーティXから乱数ρXを、パーティZから(αX0q_0-sq_X・a0q_0,…,αX0q_n-1-sq_X・a0q_n-1)を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000156
を計算してパーティZに送信する(S54)。そして、不正検知手段307が、パーティXからγZ´と(αZ0q_0-sq_Z・a0q_0,…,αZ0q_n-1-sq_Z・a0q_n-1)を、パーティZからγZを、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000157
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_1とcq_2を出力する(S55)。
 次に、パーティZの処理について説明する。まず、第2乱数生成手段304が、乱数列(αX0q_0,…,αX0q_n-1)及び乱数ρZを生成してパーティXに送信し、乱数列(αY2q_0,…,αY2q_n-1)を生成してパーティYに送信する(S56)。続いて、第3計算手段305が、(αY2q_0-sq_Y・a2q_0,…,αY2q_n-1-sq_Y・a2q_n-1)を計算してパーティXに送信し、パーティXから乱数列(αZ0q_0,…,αZ0q_n-1)を、パーティYから乱数列(αZ2q_0,…,αZ2q_n-1)を、それぞれ受信し、(αX0q_0-sq_X・a0q_0,…,αX0q_n-1-sq_X・a0q_n-1)及び
Figure JPOXMLDOC01-appb-M000158
を計算してパーティYに送信する(S57)。続いて、第4計算手段306が、パーティXから(αY1q_0-sq_Y・a1q_0,…,αY1q_n-1-sq_Y・a1q_n-1)を、パーティYから乱数ρYを、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000159
を計算してパーティXに送信する(S58)。そして、不正検知手段307が、パーティXからγXを、パーティYからγX´と(αX1q_0-sq_X・a1q_0,…,αX1q_n-1-sq_X・a1q_n-1)を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000160
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_2とcq_0を出力する(S59)。
 そして、出力部420がパーティX、Y、Zから出力されたcq_0、cq_1、cq_2の総和(cq_0+cq_1+cq_2)を計算して出力する(S60)。
Figure JPOXMLDOC01-appb-M000161
なので、正しく積和計算(i=1のみの場合(n=1の場合)はaとbとの乗算)ができていることがわかる。なお、以上の処理において、乱数を用いている部分についてはハッシュ値等で代用しても構わない。
 また、データ列分解供給部410、出力部420については、各パーティとは異なる別の装置が備えることとしても、各パーティに該当する装置のいずれか1以上が備えることとしてもよい。
 本発明と非特許文献1の方法の効果を比較する。m=1の場合、本発明ではラウンド数は2、各パーティが送信するデータは10個、生成する乱数は5個である。しかも、sは一度共有すれば何度でも使うことができるため、実際にはラウンド数は2、送信するデータは9個、生成する乱数は4個でよい。これに対して、非特許文献1の方法では、ラウンド数は4、パーティXが送信するデータは20個、生成する乱数は12個、パーティY、Zが送信するデータは17個、生成する乱数は9個である。したがって、本発明の方が2倍程度効率的である。
 m≧2の場合は、より効率的である。本発明ではラウンド数は2、各パーティが送信するデータは6m+3個、生成する乱数は3m+1個である。これに対して、非特許文献1の方法では、ラウンド数は4、パーティXが送信するデータは20m個、生成する乱数は12m個、パーティY、Zが送信するデータは17m個、生成する乱数は9m個である。したがって、本発明の方が3倍程度効率的である。
 実施例4の秘匿積和計算システム400は、
Figure JPOXMLDOC01-appb-M000162
という積和計算を行う構成であったが、実施例5の秘匿積和計算システム500は、この乗算の片方の値が共通である場合の構成例である。すなわち、秘匿積和計算システム500は、パーティX、パーティY、パーティZの3つの計算装置の協調計算により、素数p未満の自然数である要素aq_i(q=0,…,m-1(mは1以上の整数)、i=0,…,n-1(nは1以上の整数))からなるデータ列Aq=(aq_0,…,aq_n-1)(mは1以上の整数、q=0,…,m-1)と素数p未満の自然数であるbとの間で、m個の積和計算
Figure JPOXMLDOC01-appb-M000163
を行う。なお、機能構成と処理フローは実施例4と同様であるため、以下、これらを引用して説明する(構成図:図9(及び8)、処理フロー図:図10)。なお、実施例4と同様、パーティXとYは乱数sq_Zを、パーティYとZは乱数sq_Xを、パーティZとXは乱数sq_Yを、それぞれ予め共有しているものとする。
 具体的な処理としては、まず、データ列分解供給部410が、入力されたデータ列Aqの各要素aq_iを、aq_i=a0q_i+a1q_i+a2q_i modp、bをb=b0+b1+b2 modp(a0q_i、a1q_i、b0、b1は乱数、pは素数)の条件式を満たすように分解し、パーティXにデータ列Aq_0=(a0q_0,…,a0q_n-1)、データ列Aq_1=(a1q_0,…,a1q_n-1)、b0、及びb1を与え、パーティYにデータ列Aq_1、データ列Aq_2=(a2q_0,…,a2q_n-1)、b1、及びb2を与え、パーティZにデータ列Aq_2、データ列Aq_0、b2、及びb0を与える(S41)。
 続いて、パーティXは以下の処理を行う。まず、第1乱数生成手段301が、乱数rq_Xを生成し、パーティYに送信するS42-1)。続いて、第1計算手段302が、cq_X
Figure JPOXMLDOC01-appb-M000164
により計算し、パーティZに送信する(S42-2)。続いて、第2計算手段303が、パーティZから乱数rq_zを、パーティYからcq_Yを、それぞれ受信し、cq_0とcq_1をそれぞれ、
Figure JPOXMLDOC01-appb-M000165
により計算する(S43)。
 また、パーティYは以下の処理を行う。まず、乱数生成手段304が、乱数rq_Yを生成し、パーティZに送信する(44-1)。続いて、第1計算手段305が、cq_Y
Figure JPOXMLDOC01-appb-M000166
により計算し、パーティXに送信する(S44-2)。続いて、第2計算手段306が、パーティXから乱数rq_Xを、パーティZからcq_Zを、それぞれ受信し、cq_1とcq_2をそれぞれ、
Figure JPOXMLDOC01-appb-M000167
により計算する(S45)。
 また、パーティZは以下の処理を行う。まず、第1乱数生成手段301が、乱数rq_Zを生成し、パーティXに送信する(S46-1)。続いて、第1計算手段302が、cq_Z
Figure JPOXMLDOC01-appb-M000168
により計算し、パーティYに送信する(S46-2)。続いて、第2計算手段303が、パーティYから乱数rq_Yを、パーティXからcq_Xを、それぞれ受信し、cq_0とcq_2をそれぞれ、
Figure JPOXMLDOC01-appb-M000169
により計算する(S47)。なお、S42-1、2とS44-1、2とS46-1、2とは並行処理が可能であり、S43とS45とS47とについても並行処理が可能である。
 S41~S47の処理に続き、各パーティは以下のように不正検知処理を行う。パーティXの処理について説明する。まず、第2乱数生成手段304が、乱数αY1及び乱数ρxを生成してパーティYに送信し、乱数αZ0を生成してパーティZに送信する(S48)。続いて、第3計算手段305が、
Figure JPOXMLDOC01-appb-M000170
を計算してパーティYに送信し、パーティYから乱数αX1を、パーティZから乱数αX0を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000171
及び
Figure JPOXMLDOC01-appb-M000172
を計算してパーティZに送信する(S49)。続いて、第4計算手段306が、パーティYから
Figure JPOXMLDOC01-appb-M000173
を、パーティZからρZを、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000174
を計算してパーティYに送信する(S50)。そして、不正検知手段307が、パーティYからγYを、パーティZからγY´と
Figure JPOXMLDOC01-appb-M000175
を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000176
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_0とcq_1を出力する(S51)。
 次にパーティYの処理について説明する。まず、第2乱数生成手段304が、乱数αZ2及び乱数ρYを生成してパーティZに送信し、乱数αX1を生成してパーティXに送信する(S52)。続いて、第3計算手段305が、
Figure JPOXMLDOC01-appb-M000177
を計算してパーティZに送信し、パーティXから乱数αY1を、パーティZから乱数αY2を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000178
及び
Figure JPOXMLDOC01-appb-M000179
を計算してパーティXに送信する(S53)。続いて、第4計算手段306が、パーティXから乱数ρXを、パーティZから
Figure JPOXMLDOC01-appb-M000180
を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000181
を計算してパーティZに送信する(S54)。そして、不正検知手段307が、パーティXからγZ´と
Figure JPOXMLDOC01-appb-M000182
を、パーティZからγZを、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000183
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_1とcq_2を出力する(S55)。
 次に、パーティZの処理について説明する。まず、第2乱数生成手段304が、乱数αX0及び乱数ρZを生成してパーティXに送信し、乱数αY2を生成してパーティYに送信する(S56)。続いて、第3計算手段305が、
Figure JPOXMLDOC01-appb-M000184
を計算してパーティXに送信し、パーティXから乱数αZ0を、パーティYから乱数αZ2を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000185
及び
Figure JPOXMLDOC01-appb-M000186
を計算してパーティYに送信する(S57)。続いて、第4計算手段306が、パーティXから
Figure JPOXMLDOC01-appb-M000187
を、パーティYから乱数ρYを、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000188
を計算してパーティXに送信する(S58)。そして、不正検知手段307が、パーティXからγXを、パーティYからγX´と
Figure JPOXMLDOC01-appb-M000189
を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000190
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_2とcq_0を出力する(S59)。
 そして、出力部420がパーティX、Y、Zから出力されたcq_0、cq_1、cq_2の総和(cq_0+cq_1+cq_2)を計算して出力する(S60)。
Figure JPOXMLDOC01-appb-M000191
なので、正しく積和計算ができていることがわかる。なお、以上の処理において、乱数を用いている部分についてはハッシュ値等で代用しても構わない。また、データ列分解供給部410、出力部420については、各パーティとは異なる別の装置が備えることとしても、各パーティに該当する装置のいずれか1以上が備えることとしてもよい。
 本発明と非特許文献1の方法の効果を比較する。本発明の場合、ラウンド数は2、各パーティが送信するデータは2m個、生成する乱数は3個である。従って、非特許文献1の方法と比べ、9倍程度効率的である。また、mが増加すると生成する乱数の数も増加したのが、mに依存しない定数に改善されていることがわかる。
 実施例3で示した不正検知機能付きの秘匿積和計算システム300では、aとbとの乗算プロトコルにおいて、a0p・b1p+a1p・b0pの正当性の確認のために、sP・a0pの分散値を表すαP0p、αPP-を用いて、(αP0p-αPP-)・b1pとsP・a0p・b1pとを比較するとともに、sP・a1pの分散値を表すαP1p、αPP+を用いて、(αP1p-αPP+)・b0pとsP・a1p・b0pとを比較する。しかし、秘匿積和計算システム300の乗算プロトコルは前者の比較に際し、パーティ間で計算値を往復させる手順を含む。具体的には、αZ2q_i2-sq_Z・a2q_i2をパーティY→パーティX→パーティY、αX0q_i0-sq_X・a0q_i0をパーティZ→パーティY→パーティZ、αY1q_i1-sq_Y・a1q_i1をパーティX→パーティZ→パーティXというように、それぞれ往復させる必要がある。そのため、このように往復する間に計算値が漏洩し、計算結果を変化させない範囲でサーバが不正(秘匿すべきデータの情報を得る)を行う余地があった。つまり、実施例3はサーバに不正がない場合に限り完全秘匿が可能な構成と言える。
 実施例6は、サーバに不正があっても完全秘匿が可能な構成である。具体的には、不正の原因となっている計算値の往復がプロトコル内に含まれない構成である。図11に実施例6の秘匿積和計算システム600の構成例を、図12にその処理フロー例をそれぞれ示す。秘匿積和計算システム600は、パーティX、パーティY、パーティZを備える。各パーティは図13に示すように、秘匿積和計算システム300のものと同じ第1乱数生成手段301、第1計算手段302、及び第2計算手段303のほか、第2乱数生成手段604、第3計算手段605、第4計算手段606、及び不正検知手段607を備える。
 以下、具体的に説明するが、第1乱数生成手段301、第1計算手段302、及び第2計算手段303の各機能と、それらの機能として実現される秘匿積和計算処理(S21~S27)については、秘匿積和計算システム300と共通であるため説明を省略し、相違点である不正検知処理に絞って説明する。
 S21~S27の処理に続き、各パーティは以下のように不正検知処理を行う。なお、実施例3と同様、パーティXとYは乱数sq_Zを、パーティYとZは乱数sq_Xを、パーティZとXは乱数sq_Yを、それぞれ予め共有していることとする。
 パーティXの処理について説明する。まず、第2乱数生成手段604が、乱数ρxを生成してパーティYに送信し、乱数列(αZ0q_0,…,αZ0q_na0-1)と乱数列(βZ0q_0,…,βZ0q_nb0-1)を生成してパーティZに送信する(S68)。続いて、第3計算手段605が、(αZ0q_0-sq_Z・a0q_0,…,αZ0q_na0-1-sq_Z・a0q_na0-1)と(βZ0q_0-sq_Z・b0q_0,…,βZ0q_nb0-1-sq_Z・b0q_nb0-1)を計算してパーティYに送信し、パーティYから乱数列(αX1q_0,…,αX1q_na1-1)と乱数列(βX1q_0,…,βX1q_nb1-1)を受信し、
Figure JPOXMLDOC01-appb-M000192
を計算してパーティZに送信する(S69)。続いて、第4計算手段606がパーティZからρZを受信し、
を計算してパーティYに送信する(S70)。そして、不正検知手段607が、パーティYからγYを、パーティZからγY´と(αY2q_0-sq_Y・a2q_0,…,αY2q_na2-1-sq_Y・a2q_na2-1)と(βY2q_0-sq_Y・b2q_0,…,βY2q_nb2-1-sq_Y・b2q_nb2-1)を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000194
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_0とcq_1を出力する(S71)。
 次に、パーティYの処理について説明する。まず、第2乱数生成手段604が、乱数ρYを生成してパーティZに送信し、乱数列(αX1q_0,…,αX1q_na1-1)と乱数列(βX1q_0,…,βX1q_nb1-1)を生成してパーティXに送信する(S72)。続いて、第3計算手段605が、(αX1q_0-sq_X・a1q_0,…,αX1q_na1-1-sq_X・a1q_na1-1)と(βX1q_0-sq_X・b1q_0,…,βX1q_nb1-1-sq_X・b1q_nb1-1)を計算してパーティZに送信し、パーティZから乱数列(αY2q_0,…,αY2q_na2-1)と乱数列(βY2q_0,…,βY2q_nb2-1)を受信し、
を計算してパーティXに送信する(S73)。続いて、第4計算手段606が、パーティXから乱数ρXを受信し、
Figure JPOXMLDOC01-appb-M000196
を計算してパーティZに送信する(S74)。そして、不正検知手段607が、パーティXからγZ´と(αZ0q_0-sq_Z・a0q_0,…,αZ0q_na0-1-sq_Z・a0q_na0-1)と(βZ0q_0-sq_Z・b0q_0,…,βZ0q_nb0-1-sq_Z・b0q_nb0-1)を、パーティZからγZを、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000197
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_1とcq_2を出力する(S75)。
 次に、パーティZの処理について説明する。まず、第2乱数生成手段604が、乱数ρZを生成してパーティXに送信し、乱数列(αY2q_0,…,αY2q_na2-1)と乱数列(βY2q_0,…,βY2q_nb2-1)を生成してパーティYに送信する(S76)。続いて、第3計算手段605が、(αY2q_0-sq_Y・a2q_0,…,αY2q_na2-1-sq_Y・a2q_na2-1)と(βY2q_0-sq_Y・b2q_0,…,βY2q_nb2-1-sq_Y・b2q_nb2-1)を計算してパーティXに送信し、パーティXから乱数列(αZ0q_0,…,αZ0q_na0-1)と乱数列(βZ0q_0,…,βZ0q_nb0-1)を受信し、
Figure JPOXMLDOC01-appb-M000198
を計算してパーティYに送信する(S77)。続いて、第4計算手段606がパーティYから乱数ρYを受信し、
Figure JPOXMLDOC01-appb-M000199
を計算してパーティXに送信する(S78)。そして、不正検知手段607が、パーティXからγXを、パーティYからγX´と(αX1q_0-sq_X・a1q_0,…,αX1q_na1-1-sq_X・a1q_na1-1)と(βX1q_0-sq_X・b1q_0,…,βX1q_nb1-1-sq_X・b1q_nb1-1)を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000200
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_2とcq_0を出力する(S79)。なお、以上の処理においても、乱数を用いている部分についてはハッシュ値等で代用しても構わない。
 以上説明した秘匿積和計算システム600においては、aとbとの乗算プロトコルにおいて、a0p・b1p+a1p・b0pの正当性の確認のために、sP・b1pの分散値を表すβP1p、βPP+を用いて、(βP1p+a0p・βPP+)とsP・a1p・b0pとを比較するとともに、sP・a1pの分散値を表すαP1p、αPP+を用いて、(αP1p-αPP+)・b0pとsP・a1p・b0pとを比較する。このように構成することで、プロトコル上、パーティ間で計算値を往復させる必要がないため、計算値の漏洩を防ぐことができ、そのためサーバは不正を働くことができない。また、処理のステップ数は秘匿積和計算システム300と同じであるため、同程度の効率を維持することができる。
 実施例7は、実施例6の具体例であり、na0=na1=na2=nb0=nb1=nb2=n、e00=e01=e10=e11=e12=e21=e22=e20=e02=1の場合である。図14に本実施例の秘匿積和計算システム700の構成例を、図15にその処理フロー例をそれぞれ示す。秘匿積和計算システム700は、パーティX、パーティY、パーティZ、データ列分解供給部410、及び出力部420を備える。データ列分解供給部410と出力部420は、実施例4の秘匿積和計算システム400のものと同じである。各パーティは図13に示すように、秘匿積和計算システム400のものと同じ第1乱数生成手段301、第1計算手段302、及び第2計算手段303のほか、第2乱数生成手段604、第3計算手段605、第4計算手段606、及び不正検知手段607を備える。
 秘匿積和計算システム700は、実施例4の秘匿積和計算システム400と同様に、パーティX、パーティY、パーティZの3つの計算装置の協調計算により、素数p未満の自然数である要素aq_i、bq_iからなるm組のデータ列Aq=(aq_0,…,aq_n-1)、Bq=(bq_0,…,bq_n-1)につき、各組の積和計算
Figure JPOXMLDOC01-appb-M000201
を行う(n=1の場合はaとbとの乗算)。
 以下、具体的に説明するが、データ列分解供給部410、第1乱数生成手段301、第1計算手段302、第2計算手段303、及び出力部420の各機能と、それらの機能として実現される秘匿積和計算処理(S41~S47、S60)については、実施例4の秘匿積和計算システム400と共通であるため説明を省略し、相違点である不正検知処理に絞って説明する。
 S41~S47の処理に続き、各パーティは以下のように不正検知処理を行う。なお、実施例6と同様、パーティXとYは乱数sq_Zを、パーティYとZは乱数sq_Xを、パーティZとXは乱数sq_Yを、それぞれ予め共有していることとする。
 パーティXの処理について説明する。まず、第2乱数生成手段604が、乱数ρxを生成してパーティYに送信し、乱数列(αZ0q_0,…,αZ0q_n-1)と乱数列(βZ0q_0,…,βZ0q_n-1)を生成してパーティZに送信する(S88)。続いて、第3計算手段605が、(αZ0q_0-sq_Z・a0q_0,…,αZ0q_n-1-sq_Z・a0q_n-1)と(βZ0q_0-sq_Z・b0q_0,…,βZ0q_n-1-sq_Z・b0q_n-1)を計算してパーティYに送信し、パーティYから乱数列(αX1q_0,…,αX1q_n-1)と乱数列(βX1q_0,…,βX1q_n-1)を受信し、
Figure JPOXMLDOC01-appb-M000202
を計算してパーティZに送信する(S89)。続いて、第4計算手段606が、パーティZからρZを受信し、
Figure JPOXMLDOC01-appb-M000203
を計算してパーティYに送信する(S90)。そして、不正検知手段607が、パーティYからγYを、パーティZからγY´と(αY2q_0-sq_Y・a2q_0,…,αY2q_n-1-sq_Y・a2q_n-1)と(βY2q_0-sq_Y・b2q_0,…,βY2q_n-1-sq_Y・b2q_n-1)を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000204
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_0とcq_1を出力する(S91)。
 次にパーティYの処理について説明する。まず、第2乱数生成手段604が、乱数ρYを生成してパーティZに送信し、乱数列(αX1q_0,…,αX1q_n-1)と乱数列(βX1q_0,…,βX1q_n-1)を生成してパーティXに送信する(S92)。続いて、第3計算手段605が、(αX1q_0-sq_X・a1q_0,…,αX1q_n-1-sq_X・a1q_n-1)と(βX1q_0-sq_X・b1q_0,…,βX1q_n-1-sq_X・b1q_n-1)を計算してパーティZに送信し、パーティZから乱数列(αY2q_0,…,αY2q_n-1)と乱数列(βY2q_0,…,βY2q_n-1)を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000205
を計算してパーティXに送信する(S93)。続いて、第4計算手段606が、パーティXから乱数ρXを受信し、
Figure JPOXMLDOC01-appb-M000206
を計算してパーティZに送信する(S94)。そして、不正検知手段607が、パーティXからγZ´と(αZ0q_0-sq_Z・a0q_0,…,αZ0q_n-1-sq_Z・a0q_n-1)と(βZ0q_0-sq_Z・b0q_0,…,βZ0q_n-1-sq_Z・b0q_n-1)を、パーティZからγZを、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000207
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_1とcq_2を出力する(S95)。
 次に、パーティZの処理について説明する。
 まず、第2乱数生成手段604が、乱数ρZを生成してパーティXに送信し、乱数列(αY2q_0,…,αY2q_n-1)と乱数列(βY2q_0,…,βY2q_n-1)を生成してパーティYに送信する(S96)。続いて、第3計算手段605が、(αY2q_0-sq_Y・a2q_0,…,αY2q_n-1-sq_Y・a2q_n-1)と(βY2q_0-sq_Y・b2q_0,…,βY2q_n-1-sq_Y・b2q_n-1)を計算してパーティXに送信し、パーティXから乱数列(αZ0q_0,…,αZ0q_n-1)と乱数列(βZ0q_0,…,βZ0q_n-1)を受信し、
Figure JPOXMLDOC01-appb-M000208
を計算してパーティYに送信する(S97)。続いて、第4計算手段606がパーティYから乱数ρYを受信し、
Figure JPOXMLDOC01-appb-M000209
を計算してパーティXに送信する(S98)。そして、不正検知手段607が、パーティXからγXを、パーティYからγX´と(αX1q_0-sq_X・a1q_0,…,αX1q_n-1-sq_X・a1q_n-1)と(βX1q_0-sq_X・b1q_0,…,βX1q_n-1-sq_X・b1q_n-1)を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000210
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_2とcq_0を出力する(S99)。なお、以上の処理において、乱数を用いている部分についてはハッシュ値等で代用しても構わない。
 実施例7の秘匿積和計算システム700は、実施例4と同様に
Figure JPOXMLDOC01-appb-M000211
という積和計算を行い、この積和計算に対する不正検知処理に実施例6の方法を適用する構成であったが、実施例8の秘匿積和計算システム800は、この積和計算において乗算の片方の値が共通である場合の実施例である。すなわち、秘匿積和計算システム800は、実施例5の秘匿積和計算システム500と同様に、パーティX、パーティY、パーティZの3つの計算装置の協調計算により、素数p未満の自然数である要素aq_iからなるデータ列Aq=(aq_0,…,aq_n-1)と素数p未満の自然数であるbとの間で、m個の積和計算
Figure JPOXMLDOC01-appb-M000212
を行い、この積和計算に対する不正検知処理に実施例6の不正検知方法を適用する構成である。
 以下、具体的に説明するが、データ列分解供給部410、第1乱数生成手段301、第1計算手段302、第2計算手段303、及び出力部420の各機能と、それらの機能として実現される秘匿積和計算処理(S41~S47、S60)については、実施例5の秘匿積和計算システム500と共通であるため説明を省略し、相違点である不正検知処理に絞って説明する。機能構成と処理フローは実施例7と同様であるため、説明はこれらを引用して行う(構成図:図14(及び13)、処理フロー図:図15)。
 S41~S47の処理に続き、各パーティは以下のように不正検知処理を行う。なお、実施例7と同様、パーティXとYは乱数sq_Zを、パーティYとZは乱数sq_Xを、パーティZとXは乱数sq_Yを、それぞれ予め共有しているものとする。
 パーティXの処理について説明する。まず、第2乱数生成手段604が、乱数ρxを生成してパーティYに送信し、乱数αZ0と乱数βZ0qを生成してパーティZに送信する(S88)。続いて、第3計算手段605が、
Figure JPOXMLDOC01-appb-M000213
を計算してパーティYに送信し、パーティYから乱数αX1とβX1qを受信し、
Figure JPOXMLDOC01-appb-M000214
を計算してパーティZに送信する(S89)。続いて、第4計算手段606が、パーティZからρZを受信し、
Figure JPOXMLDOC01-appb-M000215
を計算してパーティYに送信する(S90)。そして、不正検知手段607が、パーティYからγYを、パーティZからγY´と
Figure JPOXMLDOC01-appb-M000216

Figure JPOXMLDOC01-appb-M000217
を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000218
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_0とcq_1を出力する(S91)。
 次にパーティYの処理について説明する。まず、第2乱数生成手段604が、乱数ρYを生成してパーティZに送信し、乱数αX1と乱数βX1qを生成してパーティXに送信する(S92)。続いて、第3計算手段605が、
Figure JPOXMLDOC01-appb-M000219
を計算してパーティZに送信し、パーティZから乱数αY2とβY2qを受信し、
Figure JPOXMLDOC01-appb-M000220
を計算してパーティXに送信する(S93)。続いて、第4計算手段606が、パーティXから乱数ρXを受信し、
Figure JPOXMLDOC01-appb-M000221
を計算してパーティZに送信する(S94)。そして、不正検知手段607が、パーティZからγZを、パーティXからγZ´と
Figure JPOXMLDOC01-appb-M000222

Figure JPOXMLDOC01-appb-M000223
を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000224
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_1とcq_2を出力する(S95)。
 次に、パーティZの処理について説明する。まず、第2乱数生成手段604が、乱数ρZを生成してパーティXに送信し、乱数αY2と乱数βY2qを生成してパーティYに送信する(S96)。続いて、第3計算手段605が、   
Figure JPOXMLDOC01-appb-M000225
を計算してパーティXに送信し、パーティXから乱数αZ0とβZ0qを受信し、
Figure JPOXMLDOC01-appb-M000226
を計算してパーティYに送信する(S97)。続いて、第4計算手段606が、パーティYから乱数ρYを受信し、
Figure JPOXMLDOC01-appb-M000227
を計算してパーティXに送信する(S98)。そして、不正検知手段607が、パーティXからγXを、パーティYからγX´と
Figure JPOXMLDOC01-appb-M000228

Figure JPOXMLDOC01-appb-M000229
を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000230
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_2とcq_0を出力する(S99)。なお、以上の処理において、乱数を用いている部分についてはハッシュ値等で代用しても構わない。
 実施例6、7は、2つのデータ列A=(aq_0,…,aq_n-1)、B=(bq_0,…,bq_n-1)について、それぞれA=A0+A1+A2 mod p、B=B0+B1+B2 mod pの条件を満たすように3つに分散して、パーティXにデータ列A0=(a0q_0,…,a0q_na0-1)、A1=(a1q_0,…,a1q_na1-1)、B0=(b0q_0,…,b0q_nb0-1)、及びB1=(b1q_0,…,b1q_nb1-1)を、パーティYにデータ列A1、A2=(a2q_0,…,a2q_na2-1)、B1、及びB2=(b2q_0,…,b2q_nb2-1)を、パーティZにデータ列A2、A0、B2、B0を、それぞれ秘匿値として与え、これらの秘匿積和である
Figure JPOXMLDOC01-appb-M000231
を、パーティXでの計算結果であるcq_0とcq_1、パーティYでの計算結果であるcq_1とcq_2、及びパーティZでの計算結果であるcq_2とcq_0からcq_0+cq_1+cq_2を求めることにより、安全に秘匿積和計算することを可能とするものである。この秘匿積和計算において、上式のΣa0q_i0・b1q_j1、Σa1q_i1・b0q_j0、Σa1q_i1・b2q_j2、Σa2q_i2・b1q_j1、Σa2q_i2・b0q_j0、及びΣa0q_i0・b2q_j2の6つの項に着目すると、これらの項を構成する2つの分散値について、ある1パーティは両方を持っており、残りのパーティはそれぞれ異なる一方のみを持っているという関係にある。例えば、Σa0q_i0・b1q_j1のa0q_i0とb1q_j1については、パーティXはa0q_i0とb1q_j1の両方を持っているが、パーティYはb1q_j1のみを、パーティZはa0q_i0のみをそれぞれ持っている。Σa1q_i1・b0q_j0についても同様である。実施例9の秘匿積和計算システム900は、このように3つのパーティのうちいずれか1つのパーティが両方の分散値を、他の2つのパーティがそれぞれ異なる一方の分散値を持っている場合に、これら2つの分散値の積和を求める方法であり、いわば実施例6、7の秘匿積和計算の基礎となっている積和計算方法である。
 以下、パーティXが両方の分散値を、パーティY、Zがそれぞれ異なる一方の分散値を持っている場合を例にとって説明するが、パーティYが両方の分散値を、パーティX、Zがそれぞれ異なる一方の分散値を持っている場合、及び、パーティZが両方の分散値を、パーティX、Yがそれぞれ異なる一方の分散値を持っている場合についても同様な方法で計算することが可能である。
 図16に秘匿積和計算システム900の構成例を、図17にその処理フロー例をそれぞれ示す。秘匿積和計算システム900は、計算装置であるパーティX、パーティY、パーティZを備える。パーティXは、パーティX乱数生成手段901とパーティX計算手段903とを備え、パーティYは、パーティY乱数生成手段902とパーティY計算手段904とを備え、パーティZは、不正検知手段905を備える。
 秘匿積和計算システム900は、パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列Aq_0=(a0q_0,…,a0q_na0-1)及びAq_1=(a1q_0,…,a1q_na1-1)と、データ列Bq_0=(b0q_0,…,b0q_nb0-1)及びBq_1=(b1q_0,…,b1q_nb1-1)との積和計算
Figure JPOXMLDOC01-appb-M000232
(i0=0,…,na0-1、i1=0,…,na1-1、j0=0,…,nb0-1、j1=0,…,nb1-1、na0とna1とnb0とnb1は自然数、e01q_i0,q_j1とe10q_i1,q_j0は任意の数)を、q=0,…,m-1の計m組(mは1以上の整数)について(mが2以上の場合には並列に)行う。
 パーティXには、データ列Aq_0、Aq_1、Bq_0、Bq_1が、パーティYには、データ列Aq_1、Bq_1が、パーティZには、データ列Aq_0、Bq_0が、それぞれ入力される(S101)。
 まず、パーティXのパーティX乱数生成手段901が、乱数cq_1と乱数γ1と乱数列(α1q_0,…,α1q_nb0-1)と乱数列(β1q_0,…,β1q_na0-1)を生成してパーティYに送信する(S102)。また、パーティYのパーティY乱数生成手段902が、乱数sqを生成してパーティZに送信する(S103)。
 続いて、パーティXのパーティX計算手段903が、cq_0とγ0を、
Figure JPOXMLDOC01-appb-M000233
により計算し、パーティZに送信する(S104)。
 また、パーティYのパーティY計算手段904が、パーティXから乱数cq_1と乱数γ1と乱数列(α1q_0,…,α1q_nb0-1)と乱数列(β1q_0,…,β1q_na0-1)を受信し、数列(α0q_0,…,α0q_nb0-1)と数列(β0q_0,…,β0q_na0-1)とγ´をそれぞれ、
Figure JPOXMLDOC01-appb-M000234
により計算し、パーティZに送信する(S105)。
 続いて、パーティZの不正検知手段905が、パーティXからcq_0とγ0を、パーティYから乱数sqと数列(α0q_0,…,α0q_nb0-1)と数列(β0q_0,…,β0q_na0-1)とγ´を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000235
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了する(S106)。
 そして、不正検知手段905での計算結果が0であれば、パーティXからcq_0とcq_1を、パーティYからcq_1と0を、パーティZから0とcq_0を、それぞれ出力する(S107)。なお、以上の処理において、乱数を用いている部分についてはハッシュ値等で代用しても構わない。
 実施例10は、実施例9の具体例であり、na0=na1=na2=nb0=nb1=nb2=n、e00=e01=e10=e11=e12=e21=e22=e20=e02=1の場合である。構成及び処理フローは実施例9と同様である(構成例:図16、処理フロー例:図17)。実施例10の秘匿積和計算システム910は、パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列Aq_0=(a0q_0,…,a0q_n-1)及びAq_1=(a1q_0,…,a1q_n-1)と、データ列Bq_0=(b0q_0,…,b0q_n-1)及びBq_1=(b1q_0,…,b1q_n-1)との積和計算
Figure JPOXMLDOC01-appb-M000236
(i=0,…,n-1、nは自然数)を、q=0,…,m-1の計m組(mは1以上の整数)について(mが2以上の場合には並列に)行う。
 パーティXには、データ列Aq_0、Aq_1、Bq_0、Bq_1が、パーティYには、データ列Aq_1、Bq_1が、パーティZには、データ列Aq_0、Bq_0が、それぞれ入力される(S101)。
 まず、パーティXのパーティX乱数生成手段901が、乱数cq_1と乱数γ1と乱数列(α1q_0,…,α1q_n-1)と乱数列(β1q_0,…,β1q_n-1)を生成してパーティYに送信する(S102)。また、パーティYのパーティY乱数生成手段902が、乱数sqを生成してパーティZに送信する(S103)。
 続いて、パーティXのパーティX計算手段903が、cq_0とγ0を、
Figure JPOXMLDOC01-appb-M000237
により計算し、パーティZに送信する(S104)。
 また、パーティYのパーティY計算手段904が、パーティXから乱数cq_1と乱数γ1と乱数列(α1q_0,…,α1q_n-1)と乱数列(β1q_0,…,β1q_n-1)を受信し、数列(α0q_0,…,α0q_n-1)と数列(β0q_0,…,β0q_n-1)とγ´をそれぞれ、
Figure JPOXMLDOC01-appb-M000238
により計算し、パーティZに送信する(S105)。
 続いて、パーティZの不正検知手段905が、パーティXからcq_0とγ0を、パーティYから乱数sqと数列(α0q_0,…,α0q_n-1)と数列(β0q_0,…,β0q_n-1)とγ´を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000239
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了する(S106)。
 そして、不正検知手段905での計算結果が0であれば、パーティXからcq_0とcq_1を、パーティYからcq_1と0を、パーティZから0とcq_0を、それぞれ出力する(S107)。なお、以上の処理において、乱数を用いている部分についてはハッシュ値等で代用しても構わない。
 実施例11の秘匿積和計算システム920は、実施例10の秘匿積和計算システム910における積和計算
Figure JPOXMLDOC01-appb-M000240
について、各項の乗算の一方がi、qの値によらず共通である場合、すなわち
Figure JPOXMLDOC01-appb-M000241
である場合に、より効率的にかつ安全に積和計算を行うことを可能とするものである。
 秘匿積和計算システム902の構成及び処理フローは実施例9、10と同様である(構成例:図16、処理フロー例:図17)。ただし、パーティXには、データa0及びa1と、データ列Bq_0=(b0q_0,…,b0q_n-1)及びBq_1=(b1q_0,…,b1q_n-1)とが、パーティYには、データa1とデータ列Bq_1が、パーティZには、データa0とデータ列Bq_0が、それぞれ入力される(S101)。
 まず、パーティXのパーティX乱数生成手段901が、乱数cq_1と乱数γ1と乱数列(α1q_0,…,α1q_n-1)と乱数β1を生成してパーティYに送信する(S102)。
 また、パーティYのパーティY乱数生成手段902が、乱数sqを生成してパーティZに送信する(S103)。
 続いて、パーティXのパーティX計算手段903が、cq_0とγ0を、
Figure JPOXMLDOC01-appb-M000242
により計算し、パーティZに送信する(S104)。
 また、パーティYのパーティY計算手段904が、パーティXから乱数cq_1と乱数γ1と乱数列(α1q_0,…,α1q_n-1)と乱数β1を受信し、数列(α0q_0,…,α0q_n-1)とβ0とγ´をそれぞれ、
Figure JPOXMLDOC01-appb-M000243
により計算し、パーティZに送信する(S105)。
 続いて、パーティZの不正検知手段905が、パーティXからcq_0とγ0を、パーティYから乱数sqと数列(α0q_0,…,α0q_n-1)とβ0とγ´を、それぞれ受信し、
Figure JPOXMLDOC01-appb-M000244
を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了する(S106)。
 そして、不正検知手段905での計算結果が0であれば、パーティXからcq_0とcq_1を、パーティYからcq_1と0を、パーティZから0とcq_0を、それぞれ出力する(S107)。なお、以上の処理において、乱数を用いている部分についてはハッシュ値等で代用しても構わない。
 以上説明した本発明の秘匿積和計算方法、秘匿積和計算システムにおける各処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本発明の秘匿積和計算システムの各構成要素の機能は必要に応じ、併合・分割しても構わない。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。本発明の各実施例の秘匿積和計算システムをコンピュータによって実現する場合、装置及びその各部が有す機能の処理内容はプログラムによって記述される。そのプログラムは、例えば、ハードディスク装置に格納されており、実行時には必要なプログラムやデータがRAM(Random Access Memory)に読み込まれる。その読み込まれたプログラムがCPUにより実行されることにより、コンピュータ上で各処理内容が実現される。

Claims (14)

  1.  パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列A0=(a00,…,a0na0-1)、A1=(a10,…,a1na1-1)、及びA2=(a20,…,a2na2-1)と、データ列B0=(b00,…,b0nb0-1)、B1=(b10,…,b1nb1-1)、及びB2=(b20,…,b2nb2-1)との積和計算
    Figure JPOXMLDOC01-appb-M000001

    を行うために用いる秘匿積和計算方法であって、
     na0,na1,na2,nb0,nb1,nb2を自然数、i0=0,…,na0-1、i1=0,…,na1-1、i2=0,…,na2-1、j0=0,…,nb0-1、j1=0,…,nb1-1、j2=0,…,nb2-1とし、
     e01i0,j1,e10i1,j0,e00i0,j0,e11i1,j1,e12i1,j2,e21i2,j1,e22i2,j2,e20i2,j0,e02i0,j2は任意の数とし、
     パーティXにデータ列A0、A1、B0、B1が、パーティYにデータ列A1、A2、B1、B2が、パーティZにデータ列A2、A0、B2、B0が、それぞれ入力され、
     パーティXが、数rXを生成し、パーティYに送信するパーティX乱数生成ステップと、
     パーティXが、cX
    Figure JPOXMLDOC01-appb-M000002

    により計算し、パーティZに送信するパーティX第1計算ステップと、
     パーティXが、パーティZから数rzを、パーティYからcYを、それぞれ受信し、c0とc1をそれぞれ、
    Figure JPOXMLDOC01-appb-M000003

    により計算して出力するパーティX第2計算ステップと、
     パーティYが、数rYを生成し、パーティZに送信するパーティY乱数生成ステップと、
     パーティYが、cY
    Figure JPOXMLDOC01-appb-M000004

    により計算し、パーティXに送信するパーティY第1計算ステップと、
     パーティYが、パーティXから数rXを、パーティZからcZを、それぞれ受信し、c1とc2をそれぞれ、
    Figure JPOXMLDOC01-appb-M000005

    により計算して出力するパーティY第2計算ステップと、
     パーティZが、数rZを生成し、パーティXに送信するパーティZ乱数生成ステップと、
     パーティZが、cZ
    Figure JPOXMLDOC01-appb-M000006

    により計算し、パーティYに送信するパーティZ第1計算ステップと、
     パーティZが、パーティYから数rYを、パーティXからcXを、それぞれ受信し、c0とc2をそれぞれ、
    Figure JPOXMLDOC01-appb-M000007

    により計算して出力するパーティZ第2計算ステップと、
    を実行する秘匿積和計算方法。
  2.  パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列Aq_0=(a0q_0,…,a0q_na0-1)、Aq_1=(a1q_0,…,a1q_na1-1)、及びAq_2=(a2q_0,…,a2q_na2-1)と、データ列Bq_0=(b0q_0,…,b0q_nb0-1)、Bq_1=(b1q_0,…,b1q_nb1-1)、及びBq_2=(b2q_0,…,b2q_nb2-1)との積和計算
    Figure JPOXMLDOC01-appb-M000008

    を、q=0,…,m-1の計m組について、並列に行うために用いる秘匿積和計算方法であって、
     mを1以上の整数、na0,na1,na2,nb0,nb1,nb2を自然数、i0=0,…,na0-1、i1=0,…,na1-1、i2=0,…,na2-1、j0=0,…,nb0-1、j1=0,…,nb1-1、j2=0,…,nb2-1とし、
     e01q_i0,q_j1,e10q_i1,q_j0,e00q_i0,q_j0,e11q_i1,q_j1,e12q_i1,q_j2,e21q_i2,q_j1,e22q_i2,q_j2,e20q_i2,q_j0,e02q_i0,q_j2は任意の数とし、
     パーティXとYは数sq_Zを、パーティYとZは数sq_Xを、パーティZとXは数sq_Yを、それぞれ予め共有し、
     パーティXにデータ列Aq_0、Aq_1、Bq_0、Bq_1が、パーティYにデータ列Aq_1、Aq_2、Bq_1、Bq_2が、パーティZにデータ列Aq_2、Aq_0、Bq_2、Bq_0が、それぞれ入力され、
     パーティXが、数rq_Xを生成し、パーティYに送信するパーティX第1乱数生成ステップと、
     パーティXが、cq_X
    Figure JPOXMLDOC01-appb-M000009

    により計算し、パーティZに送信するパーティX第1計算ステップと、
     パーティXが、パーティZから数rq_zを、パーティYからcq_Yを、それぞれ受信し、cq_0とcq_1をそれぞれ、
    Figure JPOXMLDOC01-appb-M000010

    により計算するパーティX第2計算ステップと、
     パーティYが、数rq_Yを生成し、パーティZに送信するパーティY第1乱数生成ステップと、
     パーティYが、cq_Y
    Figure JPOXMLDOC01-appb-M000011

    により計算し、パーティXに送信するパーティY第1計算ステップと、
     パーティYが、パーティXから数rq_Xを、パーティZからcq_Zを、それぞれ受信し、cq_1とcq_2をそれぞれ、
    Figure JPOXMLDOC01-appb-M000012

    により計算するパーティY第2計算ステップと、
     パーティZが、数rq_Zを生成し、パーティXに送信するパーティZ第1乱数生成ステップと、
     パーティZが、cq_Z
    Figure JPOXMLDOC01-appb-M000013

    により計算し、パーティYに送信するパーティZ第1計算ステップと、
     パーティZが、パーティYから数rq_Yを、パーティXからcq_Xを、それぞれ受信し、cq_0とcq_2をそれぞれ、
    Figure JPOXMLDOC01-appb-M000014

    により計算するパーティZ第2計算ステップと、
     パーティXが、数列(αY1q_0,…,αY1q_na1-1)及び数ρxを生成してパーティYに送信し、数列(αZ0q_0,…,αZ0q_na0-1)を生成してパーティZに送信するパーティX第2乱数生成ステップと、
     パーティXが、(αZ0q_0-sq_Z・a0q_0,…,αZ0q_na0-1-sq_Z・a0q_na0-1)を計算してパーティYに送信し、パーティYから数列(αX1q_0,…,αX1q_na1-1)を、パーティZから数列(αX0q_0,…,αX0q_na0-1)を、それぞれ受信し、(αY1q_0-sq_Y・a1q_0,…,αY1q_na1-1-sq_Y・a1q_na1-1)及び
    Figure JPOXMLDOC01-appb-M000015

    を計算してパーティZに送信するパーティX第3計算ステップと、
     パーティXが、パーティYから(αZ2q_0-sq_Z・a2q_0,…,αZ2q_na2-1-sq_Z・a2q_na2-1)を、パーティZからρZを、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000016

    を計算してパーティYに送信するパーティX第4計算ステップと、
     パーティXが、パーティYからγYを、パーティZからγY´と(αY2q_0-sq_Y・a2q_0,…,αY2q_na2-1-sq_Y・a2q_na2-1)を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000017

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_0とcq_1を出力するパーティX不正検知ステップと、
     パーティYが、数列(αZ2q_0,…,αZ2q_na2-1)及び数ρYを生成してパーティZに送信し、数列(αX1q_0,…,αX1q_na1-1)を生成してパーティXに送信するパーティY第2乱数生成ステップと、
     パーティYが、(αX1q_0-sq_X・a1q_0,…,αX1q_na1-1-sq_X・a1q_na1-1)を計算してパーティZに送信し、パーティXから数列(αY1q_0,…,αY1q_na1-1)を、パーティZから数列(αY2q_0,…,αY2q_na2-1)を、それぞれ受信し、(αZ2q_0-sq_Z・a2q_0,…,αZ2q_na2-1-sq_Z・a2q_na2-1)及び
    Figure JPOXMLDOC01-appb-M000018

    を計算してパーティXに送信するパーティY第3計算ステップと、
     パーティYが、パーティXから数ρXを、パーティZから(αX0q_0-sq_X・a0q_0,…,αX0q_na0-1-sq_X・a0q_na0-1)を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000019

    を計算してパーティZに送信するパーティY第4計算ステップと、
     パーティYが、パーティXからγZ´と(αZ0q_0-sq_Z・a0q_0,…,αZ0q_na0-1-sq_Z・a0q_na0-1)を、パーティZからγZを、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000020

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_1とcq_2を出力するパーティY不正検知ステップと、
     パーティZが、数列(αX0q_0,…,αX0q_na0-1)及び数ρZを生成してパーティXに送信し、数列(αY2q_0,…,αY2q_na2-1)を生成してパーティYに送信するパーティZ第2乱数生成ステップと、
     パーティZが、(αY2q_0-sq_Y・a2q_0,…,αY2q_na2-1-sq_Y・a2q_na2-1)を計算してパーティXに送信し、パーティXから数列(αZ0q_0,…,αZ0q_na0-1)を、パーティYから数列(αZ2q_0,…,αZ2q_na2-1)を、それぞれ受信し、(αX0q_0-sq_X・a0q_0,…,αX0q_na0-1-sq_X・a0q_na0-1)及び
    Figure JPOXMLDOC01-appb-M000021

    を計算してパーティYに送信するパーティZ第3計算ステップと、
     パーティZが、パーティXから(αY1q_0-sq_Y・a1q_0,…,αY1q_na1-1-sq_Y・a1q_na1-1)を、パーティYから数ρYを、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000022

    を計算してパーティXに送信するパーティZ第4計算ステップと、
     パーティZが、パーティXからγXを、パーティYからγX´と(αX1q_0-sq_X・a1q_0,…,αX1q_na1-1-sq_X・a1q_na1-1)を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000023

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_2とcq_0を出力するパーティZ不正検知ステップと、
    を実行する秘匿積和計算方法。
  3.  パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列Aq_0=(a0q_0,…,a0q_na0-1)、Aq_1=(a1q_0,…,a1q_na1-1)、及びAq_2=(a2q_0,…,a2q_na2-1)と、データ列Bq_0=(b0q_0,…,b0q_nb0-1)、Bq_1=(b1q_0,…,b1q_nb1-1)、及びBq_2=(b2q_0,…,b2q_nb2-1)との積和計算
    Figure JPOXMLDOC01-appb-M000024

    を、q=0,…,m-1の計m組について、並列に行うために用いる秘匿積和計算方法であって、
     mを1以上の整数、na0,na1,na2,nb0,nb1,nb2を自然数、i0=0,…,na0-1、i1=0,…,na1-1、i2=0,…,na2-1、j0=0,…,nb0-1、j1=0,…,nb1-1、j2=0,…,nb2-1とし、
     e01q_i0,q_j1,e10q_i1,q_j0,e00q_i0,q_j0,e11q_i1,q_j1,e12q_i1,q_j2,e21q_i2,q_j1,e22q_i2,q_j2,e20q_i2,q_j0,e02q_i0,q_j2は任意の数とし、
     パーティXとYは数sq_Zを、パーティYとZは数sq_Xを、パーティZとXは数sq_Yを、それぞれ予め共有し、
     パーティXにデータ列Aq_0、Aq_1、Bq_0、Bq_1が、パーティYにデータ列Aq_1、Aq_2、Bq_1、Bq_2が、パーティZにデータ列Aq_2、Aq_0、Bq_2、Bq_0が、それぞれ入力され、
     パーティXが、数rq_Xを生成し、パーティYに送信するパーティX第1乱数生成ステップと、
     パーティXが、cq_X
    Figure JPOXMLDOC01-appb-M000025

    により計算し、パーティZに送信するパーティX第1計算ステップと、
     パーティXが、パーティZから数rq_zを、パーティYからcq_Yを、それぞれ受信し、cq_0とcq_1をそれぞれ、
    Figure JPOXMLDOC01-appb-M000026

    により計算するパーティX第2計算ステップと、
     パーティYが、数rq_Yを生成し、パーティZに送信するパーティY第1乱数生成ステップと、
     パーティYが、cq_Y
    Figure JPOXMLDOC01-appb-M000027

    により計算し、パーティXに送信するパーティY第1計算ステップと、
     パーティYが、パーティXから数rq_Xを、パーティZからcq_Zを、それぞれ受信し、cq_1とcq_2をそれぞれ、
    Figure JPOXMLDOC01-appb-M000028

    により計算するパーティY第2計算ステップと、
     パーティZが、数rq_Zを生成し、パーティXに送信するパーティZ第1乱数生成ステップと、
     パーティZが、cq_Z
    Figure JPOXMLDOC01-appb-M000029

    により計算し、パーティYに送信するパーティZ第1計算ステップと、
     パーティZが、パーティYから数rq_Yを、パーティXからcq_Xを、それぞれ受信し、cq_0とcq_2をそれぞれ、
    Figure JPOXMLDOC01-appb-M000030

    により計算するパーティZ第2計算ステップと、
     パーティXが、数ρxを生成してパーティYに送信し、数列(αZ0q_0,…,αZ0q_na0-1)と数列(βZ0q_0,…,βZ0q_nb0-1)を生成してパーティZに送信するパーティX第2乱数生成ステップと、
     パーティXが、(αZ0q_0-sq_Z・a0q_0,…,αZ0q_na0-1-sq_Z・a0q_na0-1)と(βZ0q_0-sq_Z・b0q_0,…,βZ0q_nb0-1-sq_Z・b0q_nb0-1)を計算してパーティYに送信し、パーティYから数列(αX1q_0,…,αX1q_na1-1)と数列(βX1q_0,…,βX1q_nb1-1)を受信し、
    Figure JPOXMLDOC01-appb-M000031

    を計算してパーティZに送信するパーティX第3計算ステップと、
     パーティXが、パーティZからρZを受信し、
    Figure JPOXMLDOC01-appb-M000032

    を計算してパーティYに送信するパーティX第4計算ステップと、
     パーティXが、パーティYからγYを、パーティZからγY´と(αY2q_0-sq_Y・a2q_0,…,αY2q_na2-1-sq_Y・a2q_na2-1)と(βY2q_0-sq_Y・b2q_0,…,βY2q_nb2-1-sq_Y・b2q_nb2-1)を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000033

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_0とcq_1を出力するパーティX不正検知ステップと、
     パーティYが、数ρYを生成してパーティZに送信し、数列(αX1q_0,…,αX1q_na1-1)と数列(βX1q_0,…,βX1q_nb1-1)を生成してパーティXに送信するパーティY第2乱数生成ステップと、
     パーティYが、(αX1q_0-sq_X・a1q_0,…,αX1q_na1-1-sq_X・a1q_na1-1)と(βX1q_0-sq_X・b1q_0,…,βX1q_nb1-1-sq_X・b1q_nb1-1)を計算してパーティZに送信し、パーティZから数列(αY2q_0,…,αY2q_na2-1)と数列(βY2q_0,…,βY2q_nb2-1)を受信し、
    Figure JPOXMLDOC01-appb-M000034

    を計算してパーティXに送信するパーティY第3計算ステップと、
     パーティYが、パーティXから数ρXを受信し、
    Figure JPOXMLDOC01-appb-M000035

    を計算してパーティZに送信するパーティY第4計算ステップと、
     パーティYが、パーティXからγZ´と(αZ0q_0-sq_Z・a0q_0,…,αZ0q_na0-1-sq_Z・a0q_na0-1)と(βZ0q_0-sq_Z・b0q_0,…,βZ0q_nb0-1-sq_Z・b0q_nb0-1)を、パーティZからγZを、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000036

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_1とcq_2を出力するパーティY不正検知ステップと、
     パーティZが、数ρZを生成してパーティXに送信し、数列(αY2q_0,…,αY2q_na2-1)と数列(βY2q_0,…,βY2q_nb2-1)を生成してパーティYに送信するパーティZ第2乱数生成ステップと、
     パーティZが、(αY2q_0-sq_Y・a2q_0,…,αY2q_na2-1-sq_Y・a2q_na2-1)と(βY2q_0-sq_Y・b2q_0,…,βY2q_nb2-1-sq_Y・b2q_nb2-1)を計算してパーティXに送信し、パーティXから数列(αZ0q_0,…,αZ0q_na0-1)と数列(βZ0q_0,…,βZ0q_nb0-1)を受信し、
    Figure JPOXMLDOC01-appb-M000037

    を計算してパーティYに送信するパーティZ第3計算ステップと、
     パーティZが、パーティYから数ρYを受信し、
    Figure JPOXMLDOC01-appb-M000038

    を計算してパーティXに送信するパーティZ第4計算ステップと、
     パーティZが、パーティXからγXを、パーティYからγX´と(αX1q_0-sq_X・a1q_0,…,αX1q_na1-1-sq_X・a1q_na1-1)と(βX1q_0-sq_X・b1q_0,…,βX1q_nb1-1-sq_X・b1q_nb1-1)を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000039

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_2とcq_0を出力するパーティZ不正検知ステップと、
    を実行する秘匿積和計算方法。
  4.  パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列Aq_0=(a0q_0,…,a0q_na0-1)及びAq_1=(a1q_0,…,a1q_na1-1)と、データ列Bq_0=(b0q_0,…,b0q_nb0-1)及びBq_1=(b1q_0,…,b1q_nb1-1)との積和計算
    Figure JPOXMLDOC01-appb-M000040

    を、q=0,…,m-1の計m組について、並列に行うために用いる秘匿積和計算方法であって、
     mを1以上の整数、na0,na1,nb0,nb1を自然数、i0=0,…,na0-1、i1=0,…,na1-1、j0=0,…,nb0-1、j1=0,…,nb1-1とし、
     e01q_i0,q_j1,e10q_i1,q_j0は任意の数とし、
     パーティXにデータ列Aq_0、Aq_1、Bq_0、Bq_1が、パーティYにデータ列Aq_1、Bq_1が、パーティZにデータ列Aq_0、Bq_0が、それぞれ入力され、
     パーティXが、数cq_1と数γ1と数列(α1q_0,…,α1q_nb0-1)と数列(β1q_0,…,β1q_na0-1)を生成してパーティYに送信するパーティX乱数生成ステップと、
     パーティYが、数sqを生成してパーティZに送信するパーティY乱数生成ステップと、
     パーティXが、cq_0とγ0を、
    Figure JPOXMLDOC01-appb-M000041

    により計算し、パーティZに送信するパーティX計算ステップと、
     パーティYが、パーティXから数cq_1と数γ1と数列(α1q_0,…,α1q_nb0-1)と数列(β1q_0,…,β1q_na0-1)を受信し、数列(α0q_0,…,α0q_nb0-1)と数列(β0q_0,…,β0q_na0-1)とγ´をそれぞれ、
    Figure JPOXMLDOC01-appb-M000042

    により計算し、パーティZに送信するパーティY計算ステップと、
     パーティZが、パーティXからcq_0とγ0を、パーティYから数sqと数列(α0q_0,…,α0q_nb0-1)と数列(β0q_0,…,β0q_na0-1)とγ´を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000043

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了する不正検知ステップと、
    を実行し、不正検知ステップでの計算結果が0であればパーティXからcq_0とcq_1を、パーティYからcq_1と0を、パーティZから0とcq_0を、それぞれ出力する秘匿積和計算方法。
  5.  パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データa0及びa1と、データ列Bq_0=(b0q_0,…,b0q_nb0-1)及びBq_1=(b1q_0,…,b1q_nb1-1)との積和計算
    Figure JPOXMLDOC01-appb-M000044

    を、q=0,…,m-1の計m組について、並列に行うために用いる秘匿積和計算方法であって、
     mを1以上の整数、nを自然数、i=0,…,n-1とし、
     パーティXにデータa0及びa1と、データ列Bq_0及びBq_1とが、パーティYにデータa1とデータ列Bq_1が、パーティZにデータa0とデータ列Bq_0が、それぞれ入力され、
     パーティXが、数cq_1と数γ1と数列(α1q_0,…,α1q_n-1)と数β1を生成してパーティYに送信するパーティX乱数生成ステップと、
     パーティYが、数sqを生成してパーティZに送信するパーティY乱数生成ステップと、
     パーティXが、cq_0とγ0を、
    Figure JPOXMLDOC01-appb-M000045

    により計算し、パーティZに送信するパーティX計算ステップと、
     パーティYが、パーティXから数cq_1と数γ1と数列(α1q_0,…,α1q_n-1)と数β1を受信し、数列(α0q_0,…,α0q_n-1)とβ0とγ´をそれぞれ、
    Figure JPOXMLDOC01-appb-M000046

    により計算し、パーティZに送信するパーティY計算ステップと、
     パーティZが、パーティXからcq_0とγ0を、パーティYから数sqと数列(α0q_0,…,α0q_n-1)とβ0とγ´を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000047

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了する不正検知ステップと、
    を実行し、不正検知ステップでの計算結果が0であればパーティXからcq_0とcq_1を、パーティYからcq_1と0を、パーティZから0とcq_0を、それぞれ出力する秘匿積和計算方法。
  6.  パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列A0=(a00,…,a0na0-1)、A1=(a10,…,a1na1-1)、及びA2=(a20,…,a2na2-1)と、データ列B0=(b00,…,b0nb0-1)、B1=(b10,…,b1nb1-1)、及びB2=(b20,…,b2nb2-1)との積和計算
    Figure JPOXMLDOC01-appb-M000048

    を行うために用いる秘匿積和計算システムであって、
     na0,na1,na2,nb0,nb1,nb2を自然数、i0=0,…,na0-1、i1=0,…,na1-1、i2=0,…,na2-1、j0=0,…,nb0-1、j1=0,…,nb1-1、j2=0,…,nb2-1とし、
     e01i0,j1,e10i1,j0,e00i0,j0,e11i1,j1,e12i1,j2,e21i2,j1,e22i2,j2,e20i2,j0,e02i0,j2は任意の数とし、
     パーティXにデータ列A0、A1、B0、B1が、パーティYにデータ列A1、A2、B1、B2が、パーティZにデータ列A2、A0、B2、B0が、それぞれ入力され、
     パーティXは、パーティX乱数生成手段とパーティX第1計算手段とパーティX第2計算手段とを有し、パーティX乱数生成手段は、数rXを生成してパーティYに送信し、パーティX第1計算手段は、cX
    Figure JPOXMLDOC01-appb-M000049

    により計算してパーティZに送信し、パーティX第2計算手段は、パーティZから数rzを、パーティYからcYを、それぞれ受信し、c0とc1をそれぞれ、
    Figure JPOXMLDOC01-appb-M000050

    により計算し、
     パーティYは、パーティY乱数生成手段とパーティY第1計算手段とパーティY第2計算手段とを有し、パーティY乱数生成手段は、数rYを生成してパーティZに送信し、パーティY第1計算手段は、cY
    Figure JPOXMLDOC01-appb-M000051

    により計算してパーティXに送信し、パーティY第2計算手段は、パーティXから数rXを、パーティZからcZを、それぞれ受信し、c1とc2をそれぞれ、
    Figure JPOXMLDOC01-appb-M000052

    により計算し、
     パーティZは、パーティZ乱数生成手段とパーティZ第1計算手段とパーティZ第2計算手段とを有し、パーティZ乱数生成手段は、数rZを生成してパーティXに送信し、パーティZ第1計算手段は、cZ
    Figure JPOXMLDOC01-appb-M000053

    により計算してパーティYに送信し、パーティZ第2計算手段は、パーティYから数rYを、パーティXからcXを、それぞれ受信し、c0とc2をそれぞれ、
    Figure JPOXMLDOC01-appb-M000054

    により計算する
    秘匿積和計算システム。
  7.  パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列Aq_0=(a0q_0,…,a0q_na0-1)、Aq_1=(a1q_0,…,a1q_na1-1)、及びAq_2=(a2q_0,…,a2q_na2-1)と、データ列Bq_0=(b0q_0,…,b0q_nb0-1)、Bq_1=(b1q_0,…,b1q_nb1-1)、及びBq_2=(b2q_0,…,b2q_nb2-1)との積和計算
    Figure JPOXMLDOC01-appb-M000055

    を、q=0,…,m-1の計m組について、並列に行うために用いる秘匿積和計算システムであって、
     mを1以上の整数、na0,na1,na2,nb0,nb1,nb2を自然数、i0=0,…,na0-1、i1=0,…,na1-1、i2=0,…,na2-1、j0=0,…,nb0-1、j1=0,…,nb1-1、j2=0,…,nb2-1とし、
     e01q_i0,q_j1,e10q_i1,q_j0,e00q_i0,q_j0,e11q_i1,q_j1,e12q_i1,q_j2,e21q_i2,q_j1,e22q_i2,q_j2,e20q_i2,q_j0,e02q_i0,q_j2は任意の数とし、
     パーティXとYは数sq_Zを、パーティYとZは数sq_Xを、パーティZとXは数sq_Yを、それぞれ予め共有し、
     パーティXにデータ列Aq_0、Aq_1、Bq_0、Bq_1が、パーティYにデータ列Aq_1、Aq_2、Bq_1、Bq_2が、パーティZにデータ列Aq_2、Aq_0、Bq_2、Bq_0が、それぞれ入力され、
     パーティXは、パーティX第1乱数生成手段とパーティX第1計算手段とパーティX第2計算手段とパーティX第2乱数生成手段とパーティX第3計算手段とパーティX第4計算手段とパーティX不正検知手段とを有し、パーティX第1乱数生成手段は、数rq_Xを生成してパーティYに送信し、パーティX第1計算手段は、cq_X
    Figure JPOXMLDOC01-appb-M000056

    により計算してパーティZに送信し、パーティX第2計算手段は、パーティZから数rq_zを、パーティYからcq_Yを、それぞれ受信してcq_0とcq_1をそれぞれ、
    Figure JPOXMLDOC01-appb-M000057

    により計算し、パーティX第2乱数生成手段は、数列(αY1q_0,…,αY1q_na1-1)及び数ρxを生成してパーティYに送信し、数列(αZ0q_0,…,αZ0q_na0-1)を生成してパーティZに送信し、パーティX第3計算手段は、(αZ0q_0-sq_Z・a0q_0,…,αZ0q_na0-1-sq_Z・a0q_na0-1)を計算してパーティYに送信し、パーティYから数列(αX1q_0,…,αX1q_na1-1)を、パーティZから数列(αX0q_0,…,αX0q_na0-1)を、それぞれ受信し、(αY1q_0-sq_Y・a1q_0,…,αY1q_na1-1-sq_Y・a1q_na1-1)及び
    Figure JPOXMLDOC01-appb-M000058

    を計算してパーティZに送信し、パーティX第4計算手段は、パーティYから(αZ2q_0-sq_Z・a2q_0,…,αZ2q_na2-1-sq_Z・a2q_na2-1)を、パーティZからρZを、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000059

    を計算してパーティYに送信し、パーティX不正検知手段は、パーティYからγYを、パーティZからγY´と(αY2q_0-sq_Y・a2q_0,…,αY2q_na2-1-sq_Y・a2q_na2-1)を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000060

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_0とcq_1を出力し、
     パーティYは、パーティY第1乱数生成手段とパーティY第1計算手段とパーティY第2計算手段とパーティY第2乱数生成手段とパーティY第3計算手段とパーティY第4計算手段とパーティY不正検知手段とを有し、パーティY第1乱数生成手段は、数rq_Yを生成してパーティZに送信し、パーティY第1計算手段は、cq_Y
    Figure JPOXMLDOC01-appb-M000061

    により計算してパーティXに送信し、パーティY第2計算手段は、パーティXから数rq_Xを、パーティZからcq_Zを、それぞれ受信し、cq_1とcq_2をそれぞれ、
    Figure JPOXMLDOC01-appb-M000062

    により計算し、パーティY第2乱数生成手段は、数列(αZ2q_0,…,αZ2q_na2-1)及び数ρYを生成してパーティZに送信し、数列(αX1q_0,…,αX1q_na1-1)を生成してパーティXに送信し、パーティY第3計算手段は、(αX1q_0-sq_X・a1q_0,…,αX1q_na1-1-sq_X・a1q_na1-1)を計算してパーティZに送信し、パーティXから数列(αY1q_0,…,αY1q_na1-1)を、パーティZから数列(αY2q_0,…,αY2q_na2-1)を、それぞれ受信し、(αZ2q_0-sq_Z・a2q_0,…,αZ2q_na2-1-sq_Z・a2q_na2-1)及び
    Figure JPOXMLDOC01-appb-M000063

    を計算してパーティXに送信し、パーティY第4計算手段は、パーティXから数ρXを、パーティZから(αX0q_0-sq_X・a0q_0,…,αX0q_na0-1-sq_X・a0q_na0-1)を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000064

    を計算してパーティZに送信し、パーティY不正検知手段は、パーティXからγZ´と(αZ0q_0-sq_Z・a0q_0,…,αZ0q_na0-1-sq_Z・a0q_na0-1)を、パーティZからγZを、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000065

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_1とcq_2を出力し、
     パーティZは、パーティZ第1乱数生成手段とパーティZ第1計算手段とパーティZ第2計算手段とパーティZ第2乱数生成手段とパーティZ第3計算手段とパーティZ第4計算手段とパーティZ不正検知手段とを有し、パーティZ第1乱数生成手段は、数rq_Zを生成してパーティXに送信し、パーティZ第1計算手段は、cq_Z
    Figure JPOXMLDOC01-appb-M000066

    により計算してパーティYに送信し、パーティZ第2計算手段は、パーティYから数rq_Yを、パーティXからcq_Xを、それぞれ受信し、cq_0とcq_2をそれぞれ、
    Figure JPOXMLDOC01-appb-M000067

    により計算し、パーティZ第2乱数生成手段は、数列(αX0q_0,…,αX0q_na0-1)及び数ρZを生成してパーティXに送信し、数列(αY2q_0,…,αY2q_na2-1)を生成してパーティYに送信し、パーティZ第3計算手段は、(αY2q_0-sq_Y・a2q_0,…,αY2q_na2-1-sq_Y・a2q_na2-1)を計算してパーティXに送信し、パーティXから数列(αZ0q_0,…,αZ0q_na0-1)を、パーティYから数列(αZ2q_0,…,αZ2q_na2-1)を、それぞれ受信し、(αX0q_0-sq_X・a0q_0,…,αX0q_na0-1-sq_X・a0q_na0-1)及び
    Figure JPOXMLDOC01-appb-M000068

    を計算してパーティYに送信し、パーティZ第4計算手段は、パーティXから(αY1q_0-sq_Y・a1q_0,…,αY1q_na1-1-sq_Y・a1q_na1-1)を、パーティYから数ρYを、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000069

    を計算してパーティXに送信し、パーティZ不正検知手段は、パーティXからγXを、パーティYからγX´と(αX1q_0-sq_X・a1q_0,…,αX1q_na1-1-sq_X・a1q_na1-1)を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000070

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_2とcq_0を出力する
    秘匿積和計算システム。
  8.  パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列Aq_0=(a0q_0,…,a0q_na0-1)、Aq_1=(a1q_0,…,a1q_na1-1)、及びAq_2=(a2q_0,…,a2q_na2-1)と、データ列Bq_0=(b0q_0,…,b0q_nb0-1)、Bq_1=(b1q_0,…,b1q_nb1-1)、及びBq_2=(b2q_0,…,b2q_nb2-1)との積和計算
    Figure JPOXMLDOC01-appb-M000071

    を、q=0,…,m-1の計m組について、並列に行うために用いる秘匿積和計算システムであって、
     mを1以上の整数、na0,na1,na2,nb0,nb1,nb2を自然数、i0=0,…,na0-1、i1=0,…,na1-1、i2=0,…,na2-1、j0=0,…,nb0-1、j1=0,…,nb1-1、j2=0,…,nb2-1とし、
     e01q_i0,q_j1,e10q_i1,q_j0,e00q_i0,q_j0,e11q_i1,q_j1,e12q_i1,q_j2,e21q_i2,q_j1,e22q_i2,q_j2,e20q_i2,q_j0,e02q_i0,q_j2は任意の数とし、
     パーティXとYは数sq_Zを、パーティYとZは数sq_Xを、パーティZとXは数sq_Yを、それぞれ予め共有し、
     パーティXにデータ列Aq_0、Aq_1、Bq_0、Bq_1が、パーティYにデータ列Aq_1、Aq_2、Bq_1、Bq_2が、パーティZにデータ列Aq_2、Aq_0、Bq_2、Bq_0が、それぞれ入力され、
     パーティXは、パーティX第1乱数生成手段とパーティX第1計算手段とパーティX第2計算手段とパーティX第2乱数生成手段とパーティX第3計算手段とパーティX第4計算手段とパーティX不正検知手段とを有し、パーティX第1乱数生成手段は、数rq_Xを生成してパーティYに送信し、パーティX第1計算手段は、cq_X
    Figure JPOXMLDOC01-appb-M000072

    により計算してパーティZに送信し、パーティX第2計算手段は、パーティZから数rq_zを、パーティYからcq_Yを、それぞれ受信してcq_0とcq_1をそれぞれ、
    Figure JPOXMLDOC01-appb-M000073

    により計算し、パーティX第2乱数生成手段は、数ρxを生成してパーティYに送信し、数列(αZ0q_0,…,αZ0q_na0-1)と数列(βZ0q_0,…,βZ0q_nb0-1)を生成してパーティZに送信し、パーティX第3計算手段は、(αZ0q_0-sq_Z・a0q_0,…,αZ0q_na0-1-sq_Z・a0q_na0-1)と(βZ0q_0-sq_Z・b0q_0,…,βZ0q_nb0-1-sq_Z・b0q_nb0-1)を計算してパーティYに送信し、パーティYから数列(αX1q_0,…,αX1q_na1-1)と数列(βX1q_0,…,βX1q_nb1-1)を受信し、
    Figure JPOXMLDOC01-appb-M000074

    を計算してパーティZに送信し、パーティX第4計算手段は、パーティZからρZを受信し、
    Figure JPOXMLDOC01-appb-M000075

    を計算してパーティYに送信し、パーティX不正検知手段は、パーティYからγYを、パーティZからγY´と(αY2q_0-sq_Y・a2q_0,…,αY2q_na2-1-sq_Y・a2q_na2-1)と(βY2q_0-sq_Y・b2q_0,…,βY2q_nb2-1-sq_Y・b2q_nb2-1)を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000076

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_0とcq_1を出力し、
     パーティYは、パーティY第1乱数生成手段とパーティY第1計算手段とパーティY第2計算手段とパーティY第2乱数生成手段とパーティY第3計算手段とパーティY第4計算手段とパーティY不正検知手段とを有し、パーティY第1乱数生成手段は、数rq_Yを生成してパーティZに送信し、パーティY第1計算手段は、cq_Y
    Figure JPOXMLDOC01-appb-M000077

    により計算してパーティXに送信し、パーティY第2計算手段は、パーティXから数rq_Xを、パーティZからcq_Zを、それぞれ受信し、cq_1とcq_2をそれぞれ、
    Figure JPOXMLDOC01-appb-M000078

    により計算し、パーティY第2乱数生成手段は、数ρYを生成してパーティZに送信し、数列(αX1q_0,…,αX1q_na1-1)と数列(βX1q_0,…,βX1q_nb1-1)を生成してパーティXに送信し、パーティY第3計算手段は、(αX1q_0-sq_X・a1q_0,…,αX1q_na1-1-sq_X・a1q_na1-1)と(βX1q_0-sq_X・b1q_0,…,βX1q_nb1-1-sq_X・b1q_nb1-1)を計算してパーティZに送信し、パーティZから数列(αY2q_0,…,αY2q_na2-1)と数列(βY2q_0,…,βY2q_nb2-1)を受信し、
    Figure JPOXMLDOC01-appb-M000079

    を計算してパーティXに送信し、パーティY第4計算手段は、パーティXから数ρXを受信し、
    Figure JPOXMLDOC01-appb-M000080

    を計算してパーティZに送信し、パーティY不正検知手段は、パーティXからγZ´と(αZ0q_0-sq_Z・a0q_0,…,αZ0q_na0-1-sq_Z・a0q_na0-1)と(βZ0q_0-sq_Z・b0q_0,…,βZ0q_nb0-1-sq_Z・b0q_nb0-1)を、パーティZからγZを、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000081

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_1とcq_2を出力し、
     パーティZは、パーティZ第1乱数生成手段とパーティZ第1計算手段とパーティZ第2計算手段とパーティZ第2乱数生成手段とパーティZ第3計算手段とパーティZ第4計算手段とパーティZ不正検知手段とを有し、パーティZ第1乱数生成手段は、数rq_Zを生成してパーティXに送信し、パーティZ第1計算手段は、cq_Z
    Figure JPOXMLDOC01-appb-M000082

    により計算してパーティYに送信し、パーティZ第2計算手段は、パーティYから数rq_Yを、パーティXからcq_Xを、それぞれ受信し、cq_0とcq_2をそれぞれ、
    Figure JPOXMLDOC01-appb-M000083

    により計算し、パーティZ第2乱数生成手段は、数ρZを生成してパーティXに送信し、数列(αY2q_0,…,αY2q_na2-1)と数列(βY2q_0,…,βY2q_nb2-1)を生成してパーティYに送信し、パーティZ第3計算手段は、(αY2q_0-sq_Y・a2q_0,…,αY2q_na2-1-sq_Y・a2q_na2-1)と(βY2q_0-sq_Y・b2q_0,…,βY2q_nb2-1-sq_Y・b2q_nb2-1)を計算してパーティXに送信し、パーティXから数列(αZ0q_0,…,αZ0q_na0-1)と数列(βZ0q_0,…,βZ0q_nb0-1)を受信し、
    Figure JPOXMLDOC01-appb-M000084

    を計算してパーティYに送信し、パーティZ第4計算手段は、パーティYから数ρYを受信し、
    Figure JPOXMLDOC01-appb-M000085

    を計算してパーティXに送信し、パーティZ不正検知手段は、パーティXからγXを、パーティYからγX´と(αX1q_0-sq_X・a1q_0,…,αX1q_na1-1-sq_X・a1q_na1-1)と(βX1q_0-sq_X・b1q_0,…,βX1q_nb1-1-sq_X・b1q_nb1-1)を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000086

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_2とcq_0を出力する
    秘匿積和計算システム。
  9.  パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データ列Aq_0=(a0q_0,…,a0q_na0-1)及びAq_1=(a1q_0,…,a1q_na1-1)と、データ列Bq_0=(b0q_0,…,b0q_nb0-1)及びBq_1=(b1q_0,…,b1q_nb1-1)との積和計算
    Figure JPOXMLDOC01-appb-M000087

    を、q=0,…,m-1の計m組について、並列に行うために用いる秘匿積和計算システムであって、
     mを1以上の整数、na0,na1,nb0,nb1を自然数、i0=0,…,na0-1、i1=0,…,na1-1、j0=0,…,nb0-1、j1=0,…,nb1-1とし、
     e01q_i0,q_j1,e10q_i1,q_j0は任意の数とし、
     パーティXにデータ列Aq_0、Aq_1、Bq_0、Bq_1が、パーティYにデータ列Aq_1、Bq_1が、パーティZにデータ列Aq_0、Bq_0が、それぞれ入力され、
     パーティXは、パーティX乱数生成手段とパーティX計算手段とを有し、パーティX乱数生成手段は、数cq_1と数γ1と数列(α1q_0,…,α1q_nb0-1)と数列(β1q_0,…,β1q_na0-1)を生成してパーティYに送信し、パーティX計算手段は、cq_0とγ0を、
    Figure JPOXMLDOC01-appb-M000088

    により計算してパーティZに送信し、
     パーティYは、パーティY乱数生成手段とパーティY計算手段とを有し、パーティY乱数生成手段は、数sqを生成してパーティZに送信し、パーティY計算手段は、パーティXから数cq_1と数γ1と数列(α1q_0,…,α1q_nb0-1)と数列(β1q_0,…,β1q_na0-1)を受信し、数列(α0q_0,…,α0q_nb0-1)と数列(β0q_0,…,β0q_na0-1)とγ´をそれぞれ、
    Figure JPOXMLDOC01-appb-M000089

    により計算してパーティZに送信し、
     パーティZは、不正検知手段を備え、パーティXからcq_0とγ0を、パーティYから数sqと数列(α0q_0,…,α0q_nb0-1)と数列(β0q_0,…,β0q_na0-1)とγ´を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000090

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、
     不正検知手段での計算結果が0であれば、パーティXからcq_0とcq_1を、パーティYからcq_1と0を、パーティZから0とcq_0を、それぞれ出力する
    秘匿積和計算システム。
  10.  パーティX、パーティY、パーティZの3つの計算装置の協調計算により、データa0及びa1と、データ列Bq_0=(b0q_0,…,b0q_nb0-1)及びBq_1=(b1q_0,…,b1q_nb1-1)との積和計算
    Figure JPOXMLDOC01-appb-M000091

    を、q=0,…,m-1の計m組について、並列に行うために用いる秘匿積和計算システムであって、
     mを1以上の整数、nを自然数、i=0,…,n-1とし、
     パーティXにデータa0及びa1と、データ列Bq_0及びBq_1とが、パーティYにデータa1とデータ列Bq_1が、パーティZにデータa0とデータ列Bq_0が、それぞれ入力され、
     パーティXは、パーティX乱数生成手段とパーティX計算手段とを有し、パーティX乱数生成手段は、数cq_1と数γ1と数列(α1q_0,…,α1q_n-1)と数β1を生成してパーティYに送信し、パーティX計算手段は、cq_0とγ0を、
    Figure JPOXMLDOC01-appb-M000092

    により計算してパーティZに送信し、
     パーティYは、パーティY乱数生成手段とパーティY計算手段とを有し、パーティY乱数生成手段は、数sqを生成してパーティZに送信し、パーティY計算手段は、パーティXから数cq_1と数γ1と数列(α1q_0,…,α1q_n-1)と数β1を受信し、数列(α0q_0,…,α0q_n-1)とβ0とγ´をそれぞれ、
    Figure JPOXMLDOC01-appb-M000093

    により計算し、パーティZに送信し、
     パーティZは、不正検知手段を備え、パーティXからcq_0とγ0を、パーティYから数sqと数列(α0q_0,…,α0q_n-1)とβ0とγ´を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000094

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、
     不正検知手段での計算結果が0であればパーティXからcq_0とcq_1を、パーティYからcq_1と0を、パーティZから0とcq_0を、それぞれ出力する
    秘匿積和計算システム。
  11.  処理が対称なパーティX、パーティY、パーティZの3つの計算装置で協調して積和計算をする際に用いる前記計算装置であって、
     いずれかの前記計算装置がパーティPであるとしたとき、パーティPがパーティXである場合には、パーティZがパーティP、パーティYがパーティP、符号0p、1pがそれぞれ0、1であるとし、パーティPがパーティYである場合には、パーティXがパーティP、パーティZがパーティP、符号0p、1pがそれぞれ1、2であるとし、パーティPがパーティZである場合には、パーティYがパーティP、パーティXがパーティP、符号0p、1pがそれぞれ2、0であるとし、
     na0p,na1p,nb0p,nb1pを自然数、i0p=0,…,na0p-1、i1p=0,…,na1p-1、j0p=0,…,nb0p-1、j1p=0,…,nb1p-1とし、
     e0p1pi0p,j1p,e1p0pi1p,j0p,e0p0pi0p,j0p,e1p1pi1p,j1pは任意の数とし、
     前記パーティPは、
     数rPを生成してパーティPに送信する乱数生成手段と、
     データ列A0p=(a0p0,…,a0pna0p-1)とデータ列A1p=(a1p0,…,a1pna1p-1)とデータ列B0p=(b0p0,…,b0pnb0p-1)とデータ列B1p=(b1p0,…,b1pnb1p-1)とが入力され、cP
    Figure JPOXMLDOC01-appb-M000095

    により計算してパーティPに送信する第1計算手段と、
     パーティPから数rP-を、パーティPからcP+を、それぞれ受信し、c0pとc1pをそれぞれ、
    Figure JPOXMLDOC01-appb-M000096

    により計算する第2計算手段と、
    を備える計算装置。
  12.  処理が対称なパーティX、パーティY、パーティZの3つの計算装置で協調して積和計算をする際に用いる前記計算装置であって、
     いずれかの前記計算装置がパーティPであるとしたとき、パーティPがパーティXである場合には、パーティZがパーティP、パーティYがパーティP、符号0p、1p、2pがそれぞれ0、1、2であるとし、パーティPがパーティYである場合には、パーティXがパーティP、パーティZがパーティP、符号0p、1p、2pがそれぞれ1、2、0であるとし、パーティPがパーティZである場合には、パーティYがパーティP、パーティXがパーティP、符号0p、1p、2pがそれぞれ2、0、1であるとし、
     mを1以上の整数、na0p,na1p,na2p,nb0p,nb1pを自然数、q=0,…,m-1、i0p=0,…,na0p-1、i1p=0,…,na1p-1、i2p=0,…,na2p-1、j0p=0,…,nb0p-1、j1p=0,…,nb1p-1とし、
     e0p1pi0p,j1p,e1p0pi1p,j0p,e0p0pi0p,j0p,e1p1pi1p,j1pは任意の数とし、
     パーティPとPは数sq_P+を、パーティPとPは数sq_P-を、パーティPとPは数sq_Pを、それぞれ予め共有し、
     パーティPは、
     数rq_Pを生成してパーティPに送信する第1乱数生成手段と、
     データ列Aq_0p=(a0pq_0,…,a0pq_na0p-1)とデータ列Aq_1p=(a1pq_0,…,a1pq_na1p-1)とデータ列Bq_0p=(b0pq_0,…,b0pq_nb0p-1)とデータ列Bq_1p=(b1pq_0,…,b1pq_nb1p-1)とが入力され、cq_P
    Figure JPOXMLDOC01-appb-M000097

    により計算してパーティPに送信する第1計算手段と、
     パーティPから数rq_P-を、パーティPからcq_P+を、それぞれ受信してcq_0pとcq_1pをそれぞれ、
    Figure JPOXMLDOC01-appb-M000098

    により計算する第2計算手段と、
     数列(αP+1pq_0,…,αP+1pq_na1p-1)及び数ρPを生成してパーティPに送信し、数列(αP-0pq_0,…,αP-0pq_na0p-1)を生成してパーティPに送信する第2乱数生成手段と、
     (αP-0pq_0-sq_P-・a0pq_0,…,αP-0pq_na0p-1-sq_P-・a0pq_na0p-1)を計算してパーティPに送信し、パーティPから数列(αP1pq_0,…,αP1pq_na1p-1)を、パーティPから数列(αP0pq_0,…,αP0pq_na0p-1)を、それぞれ受信し、(αP+1pq_0-sq_P+・a1pq_0,…,αP+1pq_na1p-1-sq_P+・a1pq_na1p-1)及び
    Figure JPOXMLDOC01-appb-M000099

    を計算してパーティPに送信する第3計算手段と、
     パーティPから(αP-2pq_0-sq_P-・a2pq_0,…,αP-2pq_na2p-1-sq_P-・a2pq_na2p-1)を、パーティPからρP-を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000100

    を計算してパーティPに送信する第4計算手段と、
     パーティPからγP+を、パーティP-からγ´P+と(αP+2pq_0-sq_P+・a2pq_0,…,αP+2pq_na2p-1-sq_P+・a2pq_na2p-1)を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000101

    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_0pとcq_1pを出力する不正検知手段と、
    を備える計算装置。
  13.  処理が対称なパーティX、パーティY、パーティZの3つの計算装置で協調して積和計算をする際に用いる前記計算装置であって、
     いずれかの前記計算装置がパーティPであるとしたとき、パーティPがパーティXである場合には、パーティZがパーティP、パーティYがパーティP、符号0p、1p、2pがそれぞれ0、1、2であるとし、パーティPがパーティYである場合には、パーティXがパーティP、パーティZがパーティP、符号0p、1p、2pがそれぞれ1、2、0であるとし、パーティPがパーティZである場合には、パーティYがパーティP、パーティXがパーティP、符号0p、1p、2pがそれぞれ2、0、1であるとし、
     mを1以上の整数、na0p,na1p,na2p,nb0p,nb1p,nb2pを自然数、q=0,…,m-1、i0p=0,…,na0p-1、i1p=0,…,na1p-1、i2p=0,…,na2p-1、j0p=0,…,nb0p-1、j1p=0,…,nb1p-1、j2p=0,…,nb2p-1とし、
     e0p1pi0p,j1p,e1p0pi1p,j0p,e0p0pi0p,j0p,e1p1pi1p,j1pは任意の数とし、
     パーティPとPは数sq_P+を、パーティPとPは数sq_P-を、パーティPとPは数sq_Pを、それぞれ予め共有し、
     パーティPは、
     数rq_Pを生成してパーティPに送信する第1乱数生成手段と、
     データ列Aq_0p=(a0pq_0,…,a0pq_na0p-1)とデータ列Aq_1p=(a1pq_0,…,a1pq_na1p-1)とデータ列Bq_0p=(b0pq_0,…,b0pq_nb0p-1)とデータ列Bq_1p=(b1pq_0,…,b1pq_nb1p-1)とが入力され、cq_P
    Figure JPOXMLDOC01-appb-M000102

    により計算してパーティPに送信する第1計算手段と、
     パーティPから数rq_P-を、パーティPからcq_P+を、それぞれ受信してcq_0pとcq_1pをそれぞれ、
    Figure JPOXMLDOC01-appb-M000103

    により計算する第2計算手段と、
     数ρPを生成してパーティPに送信し、数列(αP-0pq_0,…,αP-0pq_na0p-1)と数列(βP-0pq_0,…,βP-0pq_nb0p-1)を生成してパーティPに送信する第2乱数生成手段と、
     (αP-0pq_0-sq_P-・a0pq_0,…,αP-0pq_na0p-1-sq_P-・a0pq_na0p-1)と(βP-0pq_0-sq_P-・b0pq_0,…,βP-0pq_na0p-1-sq_P-・b0pq_na0p-1)を計算してパーティPに送信し、パーティPから数列(αP1pq_0,…,αP1pq_na1p-1)と数列(βP1pq_0,…,βP1pq_nb1p-1)を受信し、
    Figure JPOXMLDOC01-appb-M000104

    を計算してパーティPに送信する第3計算手段と、
     パーティPからρP-を受信し、
    Figure JPOXMLDOC01-appb-M000105

    を計算してパーティPに送信する第4計算手段と、
     パーティPからγP+を、パーティP-からγ´P+と(αP+2pq_0-sq_P+・a2pq_0,…,αP+2pq_na2p-1-sq_P+・a2pq_na2p-1)と(βP+2pq_0-sq_P+・b2pq_0,…,βP+2pq_na2p-1-sq_P+・b2pq_na2p-1)を、それぞれ受信し、
    Figure JPOXMLDOC01-appb-M000106
    を計算して、計算結果が0でなければ不正検知を表すデータを出力して処理を終了し、0であればcq_0pとcq_1pを出力する不正検知手段と、
    を備える計算装置。
  14.  請求項6乃至10のいずれかに記載の秘匿積和計算システム又は請求項11乃至13のいずれかに記載の計算装置としてコンピュータを機能させるためのプログラム。
PCT/JP2012/051199 2011-01-24 2012-01-20 秘匿積和計算方法、秘匿積和計算システム、計算装置、及びそれらのプログラム WO2012102203A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201280006168.2A CN103329185B (zh) 2011-01-24 2012-01-20 隐匿积和计算方法、隐匿积和计算系统、计算装置
JP2012554767A JP5450839B2 (ja) 2011-01-24 2012-01-20 秘匿積和計算方法、秘匿積和計算システム、計算装置、及びそれらのプログラム
US13/981,251 US9292258B2 (en) 2011-01-24 2012-01-20 Secure sum-of-product computation method, secure sum-of-product computation system, computation apparatus and programs therefor
EP12739361.9A EP2669878B8 (en) 2011-01-24 2012-01-20 Secure sum-of-product computation method, secure sum-of-product computation system, computation apparatus and programs therefor

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2011012126 2011-01-24
JP2011-012126 2011-01-24
JP2011054965 2011-03-14
JP2011-054965 2011-03-14
JP2011-110635 2011-05-17
JP2011110635 2011-05-17

Publications (1)

Publication Number Publication Date
WO2012102203A1 true WO2012102203A1 (ja) 2012-08-02

Family

ID=46580772

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/051199 WO2012102203A1 (ja) 2011-01-24 2012-01-20 秘匿積和計算方法、秘匿積和計算システム、計算装置、及びそれらのプログラム

Country Status (5)

Country Link
US (1) US9292258B2 (ja)
EP (1) EP2669878B8 (ja)
JP (1) JP5450839B2 (ja)
CN (1) CN103329185B (ja)
WO (1) WO2012102203A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6006842B1 (ja) * 2015-07-22 2016-10-12 日本電信電話株式会社 秘密計算装置、その方法、およびプログラム
EP2947642A4 (en) * 2013-01-17 2016-11-09 Nippon Telegraph & Telephone SECURE CALCULATION SYSTEM, COMPUTER DEVICE, SECURE CALCULATION METHOD, AND PROGRAM
WO2017038761A1 (ja) * 2015-08-31 2017-03-09 日本電気株式会社 秘密計算システム、秘密計算装置、および、秘密計算方法
JPWO2018008547A1 (ja) * 2016-07-06 2019-04-04 日本電信電話株式会社 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
WO2019225531A1 (ja) * 2018-05-25 2019-11-28 日本電信電話株式会社 秘密一括近似システム、秘密計算装置、秘密一括近似方法、およびプログラム

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5957126B1 (ja) * 2015-06-24 2016-07-27 日本電信電話株式会社 秘密計算装置、秘密計算方法、およびプログラム
JP6023858B1 (ja) * 2015-08-17 2016-11-09 日本電信電話株式会社 計算システム、計算装置、その方法、およびプログラム
WO2017065123A1 (ja) * 2015-10-13 2017-04-20 日本電信電話株式会社 秘密乱数合成装置、秘密乱数合成方法、およびプログラム
WO2018008543A1 (ja) * 2016-07-06 2018-01-11 日本電信電話株式会社 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
AU2018295722B2 (en) * 2017-07-05 2020-11-19 Nippon Telegraph And Telephone Corporation Secure computation system, secure computation apparatus, secure computation method, program, and recording medium
US10635398B2 (en) * 2018-03-15 2020-04-28 Macronix International Co., Ltd. Voltage sensing type of matrix multiplication method for neuromorphic computing system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1218284C (zh) * 1997-01-28 2005-09-07 松下电器产业株式会社 信息复原型署名装置
US20090235085A1 (en) * 2005-01-17 2009-09-17 Seemant Shankar Mathur Method and System for Secure Authentication and Data Exchange in Client Server Architecture
JP2007124612A (ja) * 2006-06-14 2007-05-17 Chiba Univ 鍵生成プログラム
US20100091986A1 (en) * 2006-11-10 2010-04-15 Laputa, Inc. Information Management System and Encryption System
US8225106B2 (en) * 2008-04-02 2012-07-17 Protegrity Corporation Differential encryption utilizing trust modes
US8675877B2 (en) * 2008-08-29 2014-03-18 Red Hat, Inc. Sharing a secret via linear interpolation
WO2012046692A1 (ja) * 2010-10-06 2012-04-12 日本電信電話株式会社 秘密分散システム、秘密分散装置、秘密分散方法、秘密ソート方法、秘密分散プログラム
IL210169A0 (en) * 2010-12-22 2011-03-31 Yehuda Binder System and method for routing-based internet security

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
KOJI CHIDA ET AL.: "Efficient 3-Party Secure Function Evaluation and Its Application", IPSJ SIG NOTES DVD-ROM, vol. 2010, no. 1, 15 April 2010 (2010-04-15), pages 1 - 7, XP008170896 *
KOJI CHIDA ET AL.: "Keiryo Kensho Kano 3-Party Hitoku Kansu Keisan no Saiko", COMPUTER SECURITY SYMPOSIUM 2010 RONBUNSHU, vol. 2, no. 9, 12 October 2010 (2010-10-12), pages 555 - 560, XP008171075 *
KOJI CHIDA; KOKI HAMADA; DAI IKARASHI; KATSUMI; TAKAHASHI: "A Three-Party Secure Function Evaluation with Lightweight Verifiability Revisited", CSS2010, 2010
KOKI HAMADA ET AL.: "3-Party Hitoku Kansu Keisanjo no Random Chikan Protocol", COMPUTER SECURITY SYMPOSIUM 2010 RONBUNSHU, vol. 2, no. 9, 12 October 2010 (2010-10-12), pages 561 - 566, XP008170364 *
ROSARIO GENNARO ET AL.: "On 2-Round Secure Multiparty Computation", LNCS, ADVANCES IN CRYPTOLOGY, vol. 2442, August 2002 (2002-08-01), pages 178 - 193, XP055123962 *
See also references of EP2669878A4
YEHUDA LINDELL: "General Composition and Universal Composability in Secure Multiparty Computation", JOURNAL OF CRYPTOLOGY, vol. 22, no. 3, July 2009 (2009-07-01), pages 395 - 428, XP019699797 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2947642A4 (en) * 2013-01-17 2016-11-09 Nippon Telegraph & Telephone SECURE CALCULATION SYSTEM, COMPUTER DEVICE, SECURE CALCULATION METHOD, AND PROGRAM
JP6006842B1 (ja) * 2015-07-22 2016-10-12 日本電信電話株式会社 秘密計算装置、その方法、およびプログラム
WO2017014224A1 (ja) * 2015-07-22 2017-01-26 日本電信電話株式会社 秘密計算装置、その方法、およびプログラム
JP2017026788A (ja) * 2015-07-22 2017-02-02 日本電信電話株式会社 秘密計算装置、その方法、およびプログラム
WO2017038761A1 (ja) * 2015-08-31 2017-03-09 日本電気株式会社 秘密計算システム、秘密計算装置、および、秘密計算方法
US10924270B2 (en) 2015-08-31 2021-02-16 Nec Corporation Secret calculation system, secret calculation apparatus, and secret calculation method
JPWO2018008547A1 (ja) * 2016-07-06 2019-04-04 日本電信電話株式会社 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
US11200346B2 (en) 2016-07-06 2021-12-14 Nippon Telegraph And Telephone Corporation Secure computation for reading multiple elements from a secure text array
WO2019225531A1 (ja) * 2018-05-25 2019-11-28 日本電信電話株式会社 秘密一括近似システム、秘密計算装置、秘密一括近似方法、およびプログラム
CN112154495A (zh) * 2018-05-25 2020-12-29 日本电信电话株式会社 秘密批量近似系统、秘密计算装置、秘密批量近似方法、以及程序
CN112154495B (zh) * 2018-05-25 2024-04-26 日本电信电话株式会社 秘密批量近似系统及方法、秘密计算装置、记录介质

Also Published As

Publication number Publication date
JPWO2012102203A1 (ja) 2014-06-30
CN103329185A (zh) 2013-09-25
EP2669878A4 (en) 2014-10-08
CN103329185B (zh) 2015-07-15
US9292258B2 (en) 2016-03-22
US20130304780A1 (en) 2013-11-14
JP5450839B2 (ja) 2014-03-26
EP2669878B8 (en) 2015-11-18
EP2669878B1 (en) 2015-09-30
EP2669878A1 (en) 2013-12-04

Similar Documents

Publication Publication Date Title
JP5450839B2 (ja) 秘匿積和計算方法、秘匿積和計算システム、計算装置、及びそれらのプログラム
Bonawitz et al. Practical secure aggregation for privacy-preserving machine learning
US20230087864A1 (en) Secure multi-party computation method and apparatus, device, and storage medium
JP5531154B2 (ja) 秘匿積和結合システム、計算装置、秘匿積和結合方法、及びそれらのプログラム
Pibernik et al. Secure collaborative supply chain planning and inverse optimization–The JELS model
CN111512589A (zh) 用于利用spdz的快速安全多方内积的方法
JP7259876B2 (ja) 情報処理装置、秘密計算方法及びプログラム
US20170063535A1 (en) Generating Cryptographic Function Parameters From a Puzzle
CN111861467A (zh) 供应链金融交易隐私保护方法及系统
CN113159762A (zh) 基于Paillier和博弈论的区块链交易方法
US8117456B2 (en) Network system, server and information terminal for list matching
CN112069525A (zh) 基于信息的属性生成密钥的加密方法、装置及设备
CN114337994A (zh) 数据处理方法、装置及系统
EP3633656B1 (en) Secret tampering detection system, secret tampering detection apparatus, secret tampering detection method, and program
JP5668549B2 (ja) 秘匿分析処理方法、プログラム及び装置
CN115118411B (zh) 链下多方可信计算方法、装置、设备及存储介质
Carminati et al. Secure web service composition with untrusted broker
CN114026586A (zh) 用于授予对加密资产的访问权的零知识或有支付协议
JPWO2020165931A1 (ja) 情報処理装置、秘密計算方法及びプログラム
CN112765668B (zh) 一种零知识证明隐私保护方法、系统、存储介质、设备
CN112465501B (zh) 基于区块链的版权存证及侵权行为自动取证的方法及系统
JP3784055B2 (ja) リストマッチング方法、ネットワークシステム、そのサーバ及び情報端末
CN113191893A (zh) 数据风险预测方法、装置、电子设备、介质及程序产品
CN113645022A (zh) 一种确定隐私集合交集方法、装置、电子设备及存储介质
CN111885056A (zh) 基于区块链的零知识证明方法、装置及电子设备

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: 12739361

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2012554767

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2012739361

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 13981251

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE