WO2018034079A1 - 秘密計算システム、秘密計算方法、秘密計算装置、分散情報生成装置およびそれらの方法とプログラム - Google Patents

秘密計算システム、秘密計算方法、秘密計算装置、分散情報生成装置およびそれらの方法とプログラム Download PDF

Info

Publication number
WO2018034079A1
WO2018034079A1 PCT/JP2017/024873 JP2017024873W WO2018034079A1 WO 2018034079 A1 WO2018034079 A1 WO 2018034079A1 JP 2017024873 W JP2017024873 W JP 2017024873W WO 2018034079 A1 WO2018034079 A1 WO 2018034079A1
Authority
WO
WIPO (PCT)
Prior art keywords
distributed
extended
value
secret
fixed
Prior art date
Application number
PCT/JP2017/024873
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 JP2018534297A priority Critical patent/JP6988807B2/ja
Priority to US16/325,775 priority patent/US11042358B2/en
Publication of WO2018034079A1 publication Critical patent/WO2018034079A1/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/4824Methods 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 using signed-digit representation
    • 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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem

Definitions

  • the present invention relates to a secret calculation system, a secret calculation method, a secret calculation device, a distributed information generation device, and methods and programs thereof.
  • the secret calculation method is a technique that can conceal the calculation process and the result from related subjects.
  • a third party such as a cloud
  • the secret calculation method a basic processing method for executing an arbitrary calculation is known, and an arbitrary calculation can be executed.
  • Non-Patent Document 2 describes a secret calculation method for performing addition / subtraction and multiplication, and multiplication requires two rounds of communication.
  • Non-Patent Document 3 proposes a method capable of executing multiplication by only one round of communication.
  • Non-Patent Document 4 discloses a distributed protocol “TrancPr ([a], k, m)” that shifts a k-digit distributed number [a] to the right by m bits, and this distributed protocol “TrancPr ([a], k”). , m), and a multiplication protocol FPMul ([a], [b], k, f) that secretly multiplies the numbers [a] and [b] with f digits after the decimal point using k digits.
  • the calculation procedure of FPMul ([a], [b], k, f) is (1) [c] ⁇ [a] * [b], (2) [d] ⁇ TrancPr ([c], 2k, f).
  • the procedure of the distributed protocol TransPr ([a], k, m) includes an algorithm for distributing random 0 or 1 and a protocol PRandBit () for sharing random 1-bit information among participants.
  • a protocol PRandInt () for sharing a random number with a specified x-bit length between participants is used.
  • Non-Patent Document 5 Even when the (2,3) threshold method is used, communication of several hundred bits per bit is required. That is, (multiple hundreds * m) bits of communication are preprocessed for one multiplication of m-bit fixed point numbers. Including such pre-processing, a method that suppresses the entire communication amount is desirable.
  • An object of the present invention is to provide a technique for solving the above-described problems.
  • a secret calculation system includes: A shared information generating device that generates a distributed data value, a distributed code value, and a distributed carry value obtained by distributing each fixed-point number using an additive secret sharing method from at least two fixed-point numbers; Using each of the fixed-point distributed data value, the distributed code value, and the distributed carry value, each extended fixed fixed value including an extended distributed data value, an extended distributed code value, and an extended distributed carry value with an extended number of digits.
  • Secret digit expansion means for generating a decimal number while maintaining a secret; and Generating an extended distributed data value, an extended distributed code value, and an extended distributed carry value as an extended multiplication result obtained by multiplying the distributed first extended fixed-point number and the second extended fixed-point number, while maintaining a secret;
  • a secret multiplication means that adjusts the number of digits of the extended shared data value of the multiplication result to obtain a distributed value of the secret multiplication result;
  • a group of secret computing devices including at least two secret computing devices having Is provided.
  • the secret calculation method of the secret calculation system includes: A shared information generation step of generating a distributed data value, a distributed code value, and a distributed carry value obtained by distributing each fixed-point number using an additive secret sharing method from at least two fixed-point numbers; Using each of the fixed-point distributed data value, the distributed code value, and the distributed carry value, each extended fixed fixed value including an extended distributed data value, an extended distributed code value, and an extended distributed carry value with an extended number of digits.
  • a secret digit expansion step for generating a decimal number while keeping a secret; and Generating an extended distributed data value, an extended distributed code value, and an extended distributed carry value as an extended multiplication result obtained by multiplying the distributed first extended fixed-point number and the second extended fixed-point number, while maintaining a secret;
  • a secret multiplication step that adjusts the number of digits of the extended distributed data value of the multiplication result to obtain a distributed value of the secret multiplication result; including.
  • a shared information generating apparatus provides: Data value distribution means for distributing data values of at least two fixed-point numbers using an additive secret sharing method for secret multiplication; Code distribution means for distributing the code of the at least two fixed-point numbers using an additive secret sharing method for the secret multiplication; Carry distribution means for distributing a carry generated when the data values of the at least two fixed-point numbers are distributed using an additive secret sharing method using an additive secret sharing method for the secret multiplication; , Is provided.
  • a distributed information generation method includes: A data value distribution step for distributing data values of at least two fixed-point numbers using an additive secret sharing method for secret multiplication; A code distribution step for distributing the code of the at least two fixed-point numbers using an additive secret sharing method for the secret cleansing; A carry distribution step for distributing the carry generated when the data values of the at least two fixed-point numbers are distributed using an additive secret sharing method using an additive secret sharing method for the secret multiplication; , including.
  • a distributed information generation program is: A data value distribution step for distributing data values of at least two fixed-point numbers using an additive secret sharing method for secret multiplication; A code distribution step of distributing the code of the at least two fixed-point numbers using an additive secret sharing method for the secret multiplication; A carry distribution step for distributing the carry generated when the data values of the at least two fixed-point numbers are distributed using an additive secret sharing method using an additive secret sharing method for the secret multiplication; , Is executed on the computer.
  • a secret calculation device uses the distributed data value, the distributed sign value, and the distributed carry value of at least two fixed-point numbers, the extended distributed data value and the extended distributed carry generated by the other distributed values of each fixed-point number are kept secret.
  • a secret digit extending means for generating each distributed fixed fixed-point number consisting of an extended distributed data value, an extended distributed code value, and an extended distributed carry value with an extended number of digits, with reference to The distributed first extended fixed-point number and the second extended fixed-point number are distributed while referring to the extended distributed data value and the extended distributed carry generated by the other distributed values of each extended fixed-point number while keeping secret.
  • an extended distributed code value To generate an extended shared data value, an extended distributed code value, and an extended distributed carry value of the extended multiplication result obtained by multiplying by the number of digits of the extended distributed data value of the extended multiplication result to obtain a distributed value of the secret multiplication result Secret multiplication means; Is provided.
  • a secret calculation method for a secret calculation apparatus includes: Using the distributed data value, the distributed sign value, and the distributed carry value of at least two fixed-point numbers, the extended distributed data value and the extended distributed carry generated by the other distributed values of each fixed-point number are kept secret.
  • a secret calculation program includes: Using the distributed data value, the distributed sign value, and the distributed carry value of at least two fixed-point numbers, the extended distributed data value and the extended distributed carry generated by the other distributed values of each fixed-point number are kept secret.
  • a secret calculation system 100 according to a first embodiment of the present invention will be described with reference to FIG.
  • the secret calculation system 100 is a system that performs secret calculation of a fixed-point number using the distributed information while keeping the secret.
  • the secret calculation system 100 includes a distributed information generation device 101 and a secret calculation device group 102 including at least two secret calculation devices 1021 to 102n.
  • the shared information generating apparatus 101 generates a distributed data value, a distributed code value, and a distributed carry value obtained by distributing each fixed-point number using an additive secret sharing method from at least two fixed-point numbers.
  • the secret computing device group 102 includes a secret digit expanding unit 121 and a secret multiplying unit 122.
  • the secret digit extension unit 121 includes an extended distributed data value, an extended distributed code value, and an extended distributed carry value obtained by extending the number of digits using the distributed data value, the distributed code value, and the distributed carry value of each fixed-point number. Each distributed fixed-point number is generated while keeping the secret.
  • the secret multiplication unit 122 keeps secret the extended distributed data value, the extended distributed code value, and the extended distributed carry value of the extended multiplication result obtained by multiplying the distributed first extended fixed-point number and the second extended fixed-point number. And the number of digits of the extended shared data value of the extended multiplication result is adjusted to obtain the distributed value of the secret multiplication result.
  • the distributed data value, the distributed sign value, and the distributed carry value of each fixed-point number are generated, and the secret multiplication of the distributed data value and the secret calculation of the distributed carry value are made independent. It is possible to execute a secret multiplication in which the calculated value, the calculation result, and the value during the calculation cannot be known while suppressing the entire communication amount.
  • the secret calculation system includes a shared information generation apparatus that generates shared information that distributes a fixed-point number and is connected via a network, and a secret that has a fixed-point number while holding the secret using the distributed information. And a secret computing device group including at least two secret computing devices that perform the calculation.
  • the shared information generating apparatus generates a distributed data value, a distributed code value, and a distributed carry value obtained by distributing each fixed-point number using an additive secret sharing method from at least two fixed-point numbers.
  • an additive type (2, 2) method that can use a secret calculation method is used as an additive secret sharing method, but other additive type (k, n) methods and additive types (k, n) are used. It may be a secret calculation method based on the law.
  • the secret computing device group executes digit extension processing and multiplication processing with secret exchange of data between at least two secret computing devices.
  • the secret exchange of data the product of at least two random numbers of the same digit as the data and the random number is distributed to at least two secret computing devices using an additive secret sharing method, and the distributed number It is executed using
  • the secret computing device group uses an extended distributed data value, an extended distributed code value, and an extended distributed carry value in which the number of digits is extended using the distributed data value, the distributed code value, and the distributed carry value of each fixed-point number.
  • Each of the extended fixed-point numbers distributed is generated while maintaining a secret, and the extended distributed data value and the extended distribution of the extended multiplication result obtained by multiplying the distributed first extended fixed-point number and the second extended fixed-point number
  • the code value and the extended distributed carry value are generated while keeping the secret, and the number of digits of the extended distributed data value of the extended multiplication result is adjusted to obtain the distributed value of the secret multiplication result. That is, in order to obtain a distributed value of the secret multiplication result, the lower digit of the extended distributed data value is removed from the extended multiplication result, the distributed code value is extracted, and the distributed carry value is extracted.
  • x [1], x [2], x [i], x [n], etc. represent the dispersion value of the numerical value x to the component i
  • x ⁇ 1 ⁇ , x ⁇ k ⁇ , x ⁇ j ⁇ , etc. represent the value (binary value) of the digit j of the numerical value x.
  • * represents multiplication
  • represents power multiplication
  • a mod b represents a remainder obtained by dividing a by b
  • b represents bit concatenation of a and b.
  • the secret sharing method and the secret calculation method will be described as prerequisite technologies.
  • the secret sharing method is used to input data to be calculated in the secret calculation method to the system.
  • the secret sharing method is a technique for generating a plurality of shared information from secret information.
  • the shared information is created so that secret information can be restored from a predetermined combination, but secret information cannot be restored from other combinations.
  • the defined combination can take various structures, and the structure is called an access structure.
  • a threshold type access structure will be described as a typical access structure.
  • the threshold type access structure can be expressed by two parameters: the number of distributed information to be generated: n and the threshold value: k. This is because secret information can be restored from k or more pieces of shared information, but secret information cannot be restored from less than k pieces of shared information.
  • the secret sharing method of the threshold type access structure in which the number of pieces of shared information is n and the threshold value is k is referred to as the (k, n) method.
  • (K, n) method is typically the method proposed by Shamir (described in [Non-patent Document 1]). In this specification, this method is called the Shamir (k, n) method.
  • the (k ( ⁇ n), n) method is also known in which each shared information generation process is configured only by addition and subtraction on mod2 ⁇ m, except for random number generation.
  • the (2,3) method of distributing m-bit values is shown below.
  • the distributed processing when the input value is x is realized by the following processing.
  • the value distributed by the above method can restore x from two or more pieces of distributed information.
  • Such a method is generally called an additive (k, n) method.
  • a technique capable of performing a calculation on data distributed by a secret sharing method is called a secret calculation method.
  • the secret calculation method an operation on a data group distributed and stored in a plurality of servers by the secret sharing method can be performed without data restoration.
  • data can be distributed and registered in a plurality of servers, and an arbitrary calculation related to the registered data can be executed.
  • Data to be calculated is distributed and stored on multiple servers, and analysis is performed using a secret calculation method, so that various analysis can be executed without the server knowing the data to be analyzed and the analysis results. .
  • the result of the operation executed by the secret calculation method is stored in each server in a secret-distributed form. Therefore, when it is desired to obtain the calculation result, the distributed information related to the calculation result is collected and restored.
  • Non-Patent Document 2 There are various secret calculation methods.
  • a typical method (described in [Non-Patent Document 2], [Non-Patent Document 3], etc.) on the premise that data is distributed using the Shamir (k, n) method is representative.
  • [Non-Patent Document 2] describes a secret calculation method for performing addition / subtraction and multiplication. Although the addition can be performed without performing communication between servers, a method is described in which multiplication requires two rounds of communication.
  • Non-Patent Document 3 proposes a method capable of executing multiplication by only one round of communication. Since then, various methods combining these basic operations have been proposed.
  • addition can be easily performed, and multiplication can also be performed by a method described later. If addition / subtraction and multiplication can be executed, arbitrary processing can be executed.
  • a secret sharing method having a secret calculation method sufficient to execute an arbitrary process in this way is called a secret sharing method that can use the secret calculation.
  • This method is executed for data distributed by the Shamir (k, n) method. Since the Shamir (k, n) method can be used to distribute integer values, it treats fixed-point numbers as integer values. This is a method of expressing a fixed-point number a * 2 ⁇ ⁇ -f ⁇ by an integer value a, where f is an integer that determines the position of the decimal point.
  • the n pieces of distributed information generated by distributing the integer value x by the Shamir (k, n) method are written as x1, ..., xn. When [x] is written, it means that n participants P1, ..., Pn own x1, ..., xn, respectively.
  • the distribution information is a value of 0, ..., p-1 for a prime number p larger than 2 ⁇ m, and each distribution information is m bits or more. Value.
  • the secret calculation method of multiplication is executed, and the result is stored in [c] [c] ⁇ [a] * [b] write.
  • the secret calculation method of addition is executed for a and b, and the result is stored in [c] as [c] ⁇ [a] + [b].
  • Non-Patent Document 4 a method of calculating a * b ⁇ (-2f), which is the product of a * 2 ⁇ (-f) and b * 2 ⁇ (-f), is shown. Assume that a and b are each expressed in m digits. a * b is a 2m-digit number, and the upper m digits are processed. Since a * b is 2m digits, when a and b are distributed, Shamir (k, n) method using prime number p larger than 2 ⁇ ⁇ 2m ⁇ is used, and each of a and b is distributed. Shall be entered.
  • This distributed protocol is a secret calculation protocol, TransPr ([a], k, m), which is shown in [Protcol 3.1] of [Non-Patent Document 4] and shifts the k-digit distributed number [a] to the right by m bits. Use.
  • the input is [a], [b], and the calculation procedure of FPMul ([a], [b], 2m, f) is (11) [c] ⁇ [a] * [b] (12) [d] ⁇ TrancPr ([c], 2m, f) The output is [d].
  • TransPr [c], 2m, f) to which the protocol TransPr ([a], k, m) of [Non-Patent Document 4] is applied.
  • This protocol consists of an algorithm that distributes random 0s or 1s, a secret calculation protocol PRandBit () for sharing random 1-bit information among participants, and a random number with a specified x-bit length between participants And a secret calculation protocol PRandInt () for sharing with.
  • PRandBit () and PRandInt () do not depend on the input value, so these processes can be executed before the multiplication.
  • Most of the other processes consist of a lightweight secret calculation process such as a constant multiplication.
  • the communication requires the multiplication of the procedure of FPMul (1) and the restoration of the procedure of Tranc (6).
  • PRandBit () requires a large amount of communication. Referring to [Non-Patent Document 5], even when the (2, 3) threshold method is used, communication of several hundred bits per bit is required. In other words, (multiple hundreds * f) bits of communication for pre-processing is performed for a multiplication related to a fixed-point number. A method that suppresses the entire communication amount including such preprocessing is desirable.
  • X [1] and x [2] are values obtained by dispersing the data value x ′ by the additive type (2,2) method on mod2 ⁇ m.
  • ⁇ C is the value obtained by rounding down the decimal point of (x [1] + x [2]) / 2 ⁇ m by the additive (2,2) method. This value is 1 when (x [1] + x [2]) is 2 ⁇ m or more, and 0 otherwise. That is, it indicates whether or not an overflow (carry) occurs when x is distributed by the additive (2,2) method.
  • C [1] and c [2] are values obtained by dispersing carry c by the additive (2, 2) method.
  • S [1] and s [2] are values obtained by distributing the code s of x by the additive (2, 2) method. ⁇ Note that f is not involved in the above distributed processing. Therefore, it is assumed that the data value is input to the secret sharing apparatus that distributes the fixed-point number.
  • the fixed-point data value x ′, the carry c generated when the data values are distributed, and the sign s of the data values are additive types (2, 2 ) Disperse by the method.
  • the processing is started from the state where the two fixed-point numbers x and y are distributed by the above-described method and stored in the two fixed-point number multiplication servers as the secret computing device.
  • the two fixed-point number multiplication servers are referred to as a fixed-point number multiplication server 1 (corresponding to the first secret calculation device) and a fixed-point number multiplication server 2 (corresponding to the second secret calculation device), respectively.
  • r1 (r1 [1] + r1 [2]) mod2 ⁇ (2m)
  • r2 (r2 [1] + r2 [2]) mod2 ⁇ (2m)
  • r1 * r2 (r12 [ For 1] + r12 [2]) mod2 ⁇ (2m)
  • the fixed-point number multiplication server 1 has r1 [1], r2 [1], r12 [1]
  • the fixed-point number multiplication server 2 is r1 [2], r2 [2], r12 [2] are owned.
  • the fixed-point number multiplication server 1 and the fixed-point number multiplication server 2 add 1-bit random numbers r1 and r2 and r1 * r2mod2 which is the product of the two random numbers in modulus 2.
  • r1 and r2 and r1 * r2mod2 which is the product of the two random numbers in modulus 2.
  • the fixed-point number multiplication server 1 has r1 [1], r2 [1], r12 [1]
  • the fixed-point number multiplication server 2 has r1 [2], r2 [2], r12 [ 2].
  • the values a and b that are also dispersed by the additive (2, 2) method are used. Can be multiplied.
  • the triplet of r1, r2, and r1 * r2 must be distributed by the additive (2,2) method for each multiplication, but this is an efficient method. Specific methods are described in [Non-Patent Document 6] and the like. The communication executed in this process is 2 bits. Such triples of r1, r2, and r3 are disposable and cannot be used repeatedly. For this reason, the fixed-point number multiplication server 1 and the fixed-point number multiplication server 2 must share the necessary number of multiplications.
  • the random number described above is used. It is assumed that multiplication is performed with communication using the triplet.
  • the fixed-point number multiplication server 1 and the fixed-point number multiplication server 2 distribute the 1-bit value B by the addition type (2,2) method in modulus 2, and the fixed-point number multiplication server 1
  • the same value as b can be redistributed by the following processing.
  • 2] are randomly selected from ⁇ 0, 1 ⁇ , and B ′ [1, 2] is sent to the fixed-point number multiplication server 2.
  • the resulting distributed information is y [1] ⁇ m + j ⁇ , y [ 2] Let ⁇ m + j ⁇ .
  • c ⁇ m + j ⁇ x [1] ⁇ m + j ⁇ + (x [1] ⁇ m + j ⁇ + x [2] ⁇ m + j ⁇ ) (x [2] ⁇ m + j ⁇ + c ⁇ m + j-1 ⁇ +1) is executed, and the resulting distributed information is c ⁇ m + j ⁇ [1], c ⁇ m + j ⁇ [2]
  • x [1] ⁇ m + j ⁇ and x [2] ⁇ m + j ⁇ are redistributed by the fixed-point multiplication server that owns each value, Run without revealing the values you own.
  • d ⁇ m + j ⁇ y [1] ⁇ m + j ⁇ + (y [1] ⁇ m + j ⁇ + y [2] ⁇ m + j ⁇ ) (y [2] ⁇ m + j ⁇ + d ⁇ m + j + 1 ⁇ +1) is executed, and the resulting distributed information is d [1] ⁇ m + 1 ⁇ , d [2] ⁇ m + 1 ⁇
  • the fixed-point number multiplication server i (i 1, 2) holds d [i] ⁇ m + 1 ⁇ .
  • y [1] ⁇ m + 1 ⁇ and y [2] ⁇ m + 1 ⁇ are redistributed by the fixed-point multiplication server that owns each value, Run without revealing the values you own.
  • This processing is performed by adding two data values x ′ and y ′ distributed by the additive type (2,2) method on the modulus 2 ⁇ (m) to the additive type (2, 2) It is a process of converting to a value distributed by the method.
  • the reason for changing the modulo to 2 ⁇ ⁇ m + f ⁇ is to get m bit results even if f bits are truncated.
  • One thing to consider when enlarging the law is the handling of sign bits.
  • (51-1) performs a secret calculation to distribute the value of the m + j-th bit.
  • x ⁇ m + j ⁇ used as the value of the m + j bit of the value x is taken into account c ⁇ m + j-1 ⁇ that is a carry from the m + j-1 bit Is also calculated to be equal to the sign s.
  • Table 1 shows x ⁇ m + j ⁇ using a truth table.
  • (51-3) is the value of the m + j-th bit (x [1] ⁇ m + j ⁇ + x [2] ⁇ m + j ⁇ + c ⁇ m + j-1 ⁇ ) is 2 or more (1 when the number is 2 or more, 0 otherwise) is calculated as c ⁇ m + j ⁇ . This value indicates whether there is a carry to the value of the (m + j + 1) th bit.
  • c ⁇ m + j ⁇ is expressed using a truth table, it is as shown in Table 2.
  • (53) is a process of secretly computing x '* y' on mod2 ⁇ (m + f).
  • the data value x '* y' represents a fixed-point number x '* y' * 2 ⁇ ⁇ -f ⁇ . I want to calculate x '* y' * 2 ⁇ ⁇ -2f ⁇ from this value. Multiplying 2 ⁇ ⁇ -1 ⁇ corresponds to cutting off the lower 1 bit, so the desired value can be obtained by cutting off the lower f bits of x '* y'. That is, a process of extracting the f + 1th bit to the f + mth bit from x ′ * y ′ is executed.
  • FIG. 2 is a block diagram showing a configuration of the secret calculation system 200 according to the present embodiment.
  • the secret calculation system 200 includes a distributed information generation device 210 as a fixed-point number distribution device, and at least two secret calculation devices 220 and 230 connected via a network 240. Prepare.
  • the distributed information generation apparatus 210 includes a data value distribution unit 211, a code distribution unit 212, a carry distribution unit 213, and a random number distribution unit 214, and includes at least two fixed-point number data values, codes, carry, A random number is generated and distributed to at least two secret computing devices 220 and 230.
  • the secret calculation device 220 performs a multiplication process that performs secret multiplication while exchanging data with the shared information storage unit 221 that stores the shared information transmitted from the shared information generation device 210 and the other secret calculation device 230 while holding the secret. Part 222. Further, the secret computing device 230 executes secret multiplication while exchanging data with the shared information storage unit 231 that stores the shared information transmitted from the shared information generating device 210 and the other secret computing device 220 while keeping the secret.
  • a multiplication processing unit 232 executes secret multiplication while exchanging data with the shared information storage unit 231 that stores the shared information transmitted from the shared information generating device 210 and the other secret computing device 220 while keeping the secret.
  • the multiplication processing unit 222 and the multiplication processing unit 232 correspond to a secret digit expansion unit and a secret multiplication unit that cooperate to perform digit expansion and secret multiplication while exchanging data while maintaining a secret. .
  • the random number distribution unit 214 may be in a device different from the distributed information generation device 210.
  • the shared information storage units 221 and 231 may be configured as a shared information storage device outside the secret computing device.
  • FIG. 3 is a block diagram showing a functional configuration of the shared information generating apparatus 210 in the secret calculation system 200 according to the present embodiment.
  • FIG. 3 also illustrates a configuration in which the shared information generation device 210 distributes the generated shared information to the shared information storage unit 221 of the secret calculation device 220 and the shared information storage unit 231 of the secret calculation device 230.
  • “F” representing the position of a fixed point is fixed, and it is described on the assumption that the device using this is stored in advance, but it may be input to each device.
  • the distributed information generation device 210 as a fixed-point number distribution device includes a data value distribution unit 211, a code distribution unit 212, a carry distribution unit 213, and a random number distribution unit 214.
  • the data value distribution unit 211, the code distribution unit 212, the carry distribution unit 213, and the random number distribution unit 214 transmit the generated distribution values to the plurality of secret computing devices 220 and 230, and the distribution information thereof Store in the storage unit.
  • the random number distribution unit 214 may be provided in a device other than the distributed information generation device 210.
  • the secret calculation device 220 has a distributed information storage unit 221, and the secret calculation device 230 has a distributed information storage unit 231.
  • the shared information storage unit 221 includes a first fixed-point number distributed information storage unit 321, a second fixed-point number shared information storage unit 325, and a random number of distributed information storage units 329. In addition, when there are three or more fixed-point numbers, a distributed information storage unit is further provided.
  • the first fixed-point number distributed information storage unit 321 stores a first fixed-point number distributed data value 322, a distributed code value 323, and a distributed carry value 324.
  • the second fixed-point number distributed information storage unit 325 stores a second fixed-point number distributed data value 326, a distributed code value 327, and a distributed carry value 328.
  • the random number distribution information storage unit 329 stores a 1-bit random number distribution value and an extended bit random number distribution value upon multiplication.
  • the distributed information storage unit 231 includes a first fixed-point number distributed information storage unit 331, a second fixed-point number distributed information storage unit 335, and a random number of distributed information storage units 339.
  • a distributed information storage unit is further provided.
  • the first fixed-point number distributed information storage unit 331 stores a first fixed-point number distributed data value 332, a distributed code value 333, and a distributed carry value 334.
  • the second fixed-point number distributed information storage unit 335 stores a second fixed-point number distributed data value 336, a distributed code value 337, and a distributed carry value 338.
  • the random number distribution information storage unit 339 stores a 1-bit random number distribution value and an extended bit random number distribution value at the time of multiplication.
  • the distributed data value 322 of the information storage unit 321 and the distributed data value 332 of the first fixed-point number distributed information storage unit 331 are distributed and stored.
  • the code distribution information s [i] (i 1, 2), which is the output of the code distribution unit 212, is input to the code value s of the first fixed-point number x, and is stored in the first fixed-point number distribution information storage unit 321.
  • the distributed code value 323 and the distributed code value 333 of the first fixed-point number distributed information storage unit 331 are distributed and stored.
  • the distributed carry value 324 and the distributed carry value 334 of the first fixed-point number distributed information storage unit 331 are distributed and stored.
  • FIG. 4 is a block diagram showing a functional configuration of the secret calculation devices 220 and 230 in the secret calculation system 200 according to the present embodiment.
  • the same components as those in FIG. 3 are denoted by the same reference numerals, and redundant description is omitted.
  • the fixed-point number multiplication processing unit 222 of the secret calculation device 220 includes a modulus expansion secret calculation unit 421, a multiplication secret calculation unit 422, a lower digit excision unit 423, a code extraction unit 424, and a carry extraction secret calculation unit. 425.
  • the fixed-point number multiplication processing unit 232 of the secret calculation device 230 includes a modulus expansion secret calculation unit 431, a multiplication secret calculation unit 432, a lower digit excision unit 433, a code extraction unit 434, and a carry extraction secret calculation unit. 435.
  • the modulus expansion secret calculation unit 421 and the modulus expansion secret calculation unit 431 receive each distributed data value, each distributed code value, and each distributed carry value of the first fixed-point number and the second fixed-point number as inputs, While exchanging data while maintaining the secret, each extended distributed data value, each extended distributed code value, and each extended distributed carry value of the first extended fixed-point number and the second extended fixed-point number are generated. A random number of 1-bit random shared values of the distributed information storage units 329 and 339 are used for exchanging secret data.
  • the law expansion secret calculation unit 421 and the law expansion secret calculation unit 431 correspond to a secret digit expansion unit.
  • the multiplication secret calculation unit 422 and the multiplication secret calculation unit 432 are respectively the extended distributed data values, the extended shared code values, and the extended shared values of the first extended fixed-point number and the second extended fixed-point number that have been expanded. Based on the carry value, an extended distributed data value, an extended distributed code value, and an extended distributed carry value of the extended secret multiplication result are generated while exchanging data while keeping secrets from each other.
  • a random number of distributed information storage units 329 and 339 uses an extended bit random distributed value for exchanging secret data.
  • Each lower digit excision unit 423, 433 generates each distributed data value of the secret multiplication result which is a fixed-point number from the extended distributed data value of each extended secret multiplication result.
  • Each code extraction unit 424, 434 generates each distributed code value of the secret multiplication result, which is a fixed-point number, from the extended distributed code value of each extended secret multiplication result.
  • the carry extraction secret calculation units 425 and 435 perform the exchange of data that holds the secret of each other while exchanging data that holds the secret of the extended secret multiplication result, and the extended distributed data value and the extended distributed carry of the extended secret multiplication result.
  • Each distributed carry value of the secret multiplication result which is a fixed-point number is generated from the value.
  • the secret calculation unit 435 corresponds to a secret multiplication unit.
  • the shared data value of the secret multiplication result that is the output of the lower digit removing unit 423 of the multiplication processing unit 222 is stored as the distributed data value 427 in the distributed information storage unit 426 of the multiplication result included in the shared information storage unit 221.
  • a shared code value of the secret multiplication result which is an output of the code extraction unit 424 of the multiplication processing unit 222, is stored as a distributed code value 428 in the distributed information storage unit 426 of the multiplication result included in the shared information storage unit 221.
  • the shared carry value of the secret multiplication result, which is the output of the carry extraction secret calculation unit 425 of the multiplication processing unit 222 is stored as the distributed carry value 429 in the distributed information storage unit 426 of the multiplication result included in the shared information storage unit 221.
  • the shared data value of the secret multiplication result that is the output of the lower digit removing unit 433 of the multiplication processing unit 232 is stored as the distributed data value 437 in the distributed information storage unit 436 of the multiplication result included in the shared information storage unit 231.
  • the shared code value of the secret multiplication result that is the output of the code extraction unit 434 of the multiplication processing unit 232 is stored as the distributed code value 438 in the shared information storage unit 436 of the multiplication result included in the shared information storage unit 231.
  • the shared carry value of the secret multiplication result that is the output of the carry extraction secret calculation unit 435 of the multiplication processing unit 232 is stored as a distributed carry value 439 in the distributed information storage unit 436 of the multiplication result included in the shared information storage unit 231.
  • the fixed-point number distributed information storage unit is configured to store two values of distributed information of one value, but a set of devices may store many values. In that case, each value is stored with identification information or the like.
  • the additive type (2, 2) method is described as a method used for dispersion, but another (k, n) method may be used.
  • the number of fixed-point number distributed information storage units is n
  • the number of fixed-point number multiplication processing units is the number required for the corresponding secret calculation method.
  • the difference from [Non-Patent Document 5] is that the method of [Non-Patent Document 5] takes a step of restoring the multiplication result masked with a random number.
  • the secret multiplication process in this embodiment is (1) processing for generating fixed-point number distributed information; (2) Secret calculation related to multiplication of fixed-point numbers, The operation procedure will be further described.
  • FIG. 5 is a block diagram showing a hardware configuration of the shared information generating apparatus 210 according to the present embodiment.
  • a CPU (Central Processing Unit) 510 is a processor for arithmetic control, and implements the functional components shown in FIG. 3 by executing a program.
  • the CPU 510 may include a plurality of processors and execute different programs, modules, tasks, threads, and the like in parallel.
  • a ROM (Read Only Memory) 520 stores fixed data and programs such as initial data and programs.
  • the network interface 530 controls communication with a plurality of secret computing devices via the network.
  • a RAM (Random Access Memory) 540 is a random access memory used by the CPU 510 as a work area for temporary storage. In the RAM 540, an area for storing data necessary for realizing the present embodiment is secured.
  • the first fixed-point number 541 is one of the numbers that is secretly multiplied in the present embodiment.
  • the second fixed-point number 542 is the other number that is secretly multiplied in the present embodiment.
  • the first distributed value 543 of the first fixed-point number is one of the distributed values generated from the first fixed-point number 541, and is a set of a distributed data value, a distributed code value, and a distributed carry value.
  • the second distributed value 544 of the first fixed-point number is the other distributed value generated from the first fixed-point number 541, and is a set of a distributed data value, a distributed code value, and a distributed carry value.
  • the first variance value 543 and the second variance value 544 are transmitted to different secret computing devices.
  • the first distributed value 545 of the second fixed-point number is one of the distributed values generated from the second fixed-point number 542, and is a set of a distributed data value, a distributed code value, and a distributed carry value.
  • the second distributed value 546 of the second fixed-point number is one of the distributed values generated from the second fixed-point number 542, and is a set of a distributed data value, a distributed code value, and a distributed carry value.
  • the first variance value 545 and the second variance value 546 are transmitted to different secret computing devices.
  • the random number (p, q, p * q) 547 is a random number used for communication between different secret computing devices.
  • the number of bits of the random number is set corresponding to the number of bits of data communicated between different secret computing devices.
  • the random first dispersion value 548 is one of the dispersion values generated from the random number (p, q, p * q) 547.
  • the random number second dispersion value 549 is the other dispersion value generated from the random number (p, q, p * q) 547.
  • the first variance value 548 and the second variance value 549 are transmitted to different secret computing devices.
  • the storage 550 stores a database, various parameters, or the following data or programs necessary for realizing the present embodiment.
  • the data value distribution algorithm 551 is an algorithm for distributing the data values of the multiplied values used in this embodiment.
  • the code distribution algorithm 552 is an algorithm for distributing the sign of the multiplied value used in the present embodiment.
  • the carry distribution algorithm 553 is an algorithm for distributing the carry of the multiplied values used in the present embodiment.
  • the random number distribution algorithm 554 is an algorithm for distributing the random numbers of the multiplied values used in the present embodiment.
  • the storage 550 stores the following programs.
  • the shared information generation program 555 is a program that controls the shared information generation apparatus 210 to generate shared information.
  • the data value distribution module 556 is a module that generates a distributed data value from a fixed-point number.
  • the code distribution module 557 is a module that generates a distributed code value from a fixed-point number.
  • the carry distribution module 558 is a module that generates a distributed carry value of a carry that is generated when the data value distribution module 556 generates a distributed data value from a fixed-point number.
  • the random number distribution module 559 is a module that generates a distributed random number from a random number.
  • RAM 540 and the storage 550 in FIG. 5 do not show programs and data related to general-purpose functions and other feasible functions that the distributed information generation apparatus 210 has.
  • FIG. 6 is a flowchart showing a procedure of shared information generation processing of the shared information generation apparatus 210 according to the present embodiment. This flowchart is executed by the CPU 510 of FIG. 5 using the RAM 540, and realizes a functional configuration unit of the shared information generating apparatus 210 of FIG.
  • step S601 the distributed information generation apparatus 210 acquires a fixed-point data value.
  • step S ⁇ b> 603 the shared information generation apparatus 210 generates a distributed data value distributed using the additive (2, 2) method from the data value, and outputs a carry regarding the distributed data value.
  • step S605 the distributed information generation apparatus 210 extracts a code from the data value, and generates a distributed code value in which the code is distributed using the additive (2, 2) method.
  • step S607 the shared information generating apparatus 210 generates a distributed carry value in which the carry value output in step S603 is distributed using the additive (2, 2) method.
  • step S609 the shared information generating apparatus 210 generates at least two random numbers corresponding to the number of bits to be exchanged during the secret calculation and a distributed value of the multiplication value.
  • step S611 the shared information generation apparatus 210 transmits a distributed value that is a set of the distributed data value, the distributed code value, and the distributed carry value to the fixed-point number distributed information storage unit of the secret calculation apparatus.
  • a distributed value that is a set of the distributed data value, the distributed code value, and the distributed carry value to the fixed-point number distributed information storage unit of the secret calculation apparatus.
  • at least two random numbers and a variance value of the multiplication values are transmitted to and stored in the random number of distributed information storage units. Note that the at least two random numbers and the variance of the multiplication values may be transmitted before each secret calculation.
  • FIG. 7 is a block diagram illustrating a hardware configuration of the secret computing devices 220 and 230 according to the present embodiment.
  • FIG. 7 shows the configuration of one of the secret computing devices 220 and 230.
  • a plurality of secret calculation devices shown in FIG. 7 execute secret multiplication while exchanging secret data.
  • a CPU 710 is a processor for arithmetic control, and implements the functional configuration unit of FIG. 3 by executing a program.
  • the CPU 710 may include a plurality of processors and execute different programs, modules, tasks, threads, and the like in parallel.
  • the ROM 720 stores initial data and fixed data such as programs and programs.
  • the network interface 730 controls communication with the distributed information generation apparatus 210 or other secret calculation apparatus via the network.
  • the RAM 740 is a random access memory that the CPU 710 uses as a temporary storage work area. In the RAM 740, an area for storing data necessary for realizing the present embodiment is secured.
  • the variance value 741 of the first fixed-point number is a variance value of the first fixed-point number 541, and is a set of a variance data value, a variance code value, and a variance carry value.
  • the distributed value 742 of the second fixed-point number is a distributed value of the second fixed-point number 542, and is a set of a distributed data value, a distributed code value, and a distributed carry value.
  • the random number dispersion value 743 is a dispersion value of the random number 547, and in the present embodiment, includes a one-digit number of dispersion values and a number-of-multiplied number of extension digits of dispersion values.
  • the first extended fixed-point number distributed value 744 is obtained from the first fixed-point number distributed value 741 and the first fixed-point number distributed value stored in another secret computing device by the secret calculation. This is a distributed value of a first extended fixed-point number obtained by extending the number of digits, and is a set of a distributed data value, a distributed code value, and a distributed carry value.
  • the variance value 745 of the second extended fixed-point number is obtained from the variance value 742 of the second fixed-point number and the variance value of the second fixed-point number stored in another secret calculation device by a secret calculation.
  • This is a distributed value of a second extended fixed-point number obtained by expanding the number of digits, and is a set of a distributed data value, a distributed code value, and a distributed carry value.
  • the distributed value 746 of the expanded secret multiplication result includes a distributed value 744 of the first extended fixed-point number, a distributed value 745 of the second extended fixed-point number, and the first extended fixed-point number stored in another secret calculation device.
  • the distributed value obtained by multiplying the distributed value and the distributed value of the second extended fixed-point number by a secret calculation is a set of a distributed data value, a distributed code value, and a distributed carry value.
  • the secret multiplication result variance value 747 is a variance of the multiplication result obtained by removing the extended digits by secret calculation from the variance value 746 of the extended secret multiplication result and the variance value of the extension secret multiplication result stored in another secret calculation device.
  • Value which is a set of a distributed data value, a distributed code value, and a distributed carry value.
  • the intermediate secret value 748 is an intermediate secret value using a random number of variance values used in digit expansion of a fixed-point number, secret multiplication, and calculation of a diffusion carry value of the secret multiplication result. g, h, gp, hg, x'-p, y'-q, etc. are included.
  • the storage 750 stores a database, various parameters, or the following data or programs necessary for realizing the present embodiment.
  • the high-order distributed data value generation algorithm 751 is an algorithm that generates and distributes high-order digits of the data value of the multiplied value used in the present embodiment.
  • the high-order distributed carry value generation algorithm 752 is an algorithm that generates and distributes high-order digits of the carry value of the multiplied value used in the present embodiment.
  • a secret multiplication algorithm 753 of the extended distributed data value is an algorithm that secretly multiplies the extended distributed data value of the multiplied value used in the present embodiment.
  • the post-processing algorithm 754 of the secret multiplication result is an algorithm for generating a secret multiplication result obtained by cutting out the extended digit from the variance value of the extended secret multiplication result, and includes a lower digit cutting process, a code extraction process, and a carry extraction process.
  • the storage 750 stores the following programs.
  • the secret multiplication control program 755 is a program that controls the secret calculation device 220 or 230 to perform secret multiplication.
  • the extended distributed value generation module 756 is an extended distributed data value, an extended distributed code value, and an extended distributed carry, which are distributed values for multiplication with digits extended in accordance with the distributed data value generation algorithm 751 and the distributed carry value generation algorithm 752. It is a module that generates values.
  • the extended distributed value secret multiplication module 757 is a module that performs secret multiplication using the extended distributed data value in accordance with the secret multiplication algorithm 753.
  • the secret multiplication result post-processing module 758 is a module that generates a distributed data value, a distributed code value, and a distributed carry value of the secret multiplication result by removing the extended digits from the extended secret multiplication result in accordance with the post-processing algorithm 754.
  • RAM 740 and the storage 750 in FIG. 7 do not show programs and data related to general-purpose functions and other realizable functions that the secret computing devices 220 and 230 have.
  • FIG. 8 is a flowchart showing a procedure of secret multiplication processing by the secret computing device group according to the present embodiment. This flowchart is executed by the CPU 710 in FIG. 7 using the RAM 740, and implements the functional components of the secret computing devices 220 and 230 in the secret computing device group in FIG.
  • Each of the secret computing devices 220 and 230 in the secret computing device group reads each piece of shared information from each of the shared information storage units 221 and 231 in step S801. That is, the multiplication processing unit 222 of the secret computing device 220 receives the first fixed-point number distributed information storage unit 321, the first fixed-point number distributed data value 322, the distributed code value 323, the distributed carry value 324, Is read. Further, the multiplication processing unit 222 reads out the second fixed-point number distributed information storage unit 325, the second fixed-point number distributed data value 326, the distributed code value 327, and the distributed carry value 328.
  • the multiplication processing unit 232 of the secret computing device 230 receives the first fixed-point number distributed data storage unit 331, the first fixed-point number distributed data value 332, the distributed code value 333, the distributed carry value 334, Is read. In addition, the multiplication processing unit 232 reads the second fixed-point number distributed information storage unit 335, the second fixed-point number distributed data value 336, the distributed code value 337, and the distributed carry value 338.
  • step S803 the secret calculation devices 220 and 230 of the secret calculation device group exchange data while holding secrets in the secret expansion secret calculation units 421 and 431, and the first fixed-point number and the second A secret calculation process for generating an extended distributed data value, an extended code value, and an extended carrier for each fixed-point number is executed.
  • step S805 the secret calculation devices 220 and 230 of the secret calculation device group exchange data while holding the secret in the multiplication secret calculation units 422 and 432, and expand the distributed data of the first fixed-point number. And a secret calculation process for obtaining an extended distributed data value of an extended multiplication result of the first fixed point number and the second fixed point number using the extended shared data of the second fixed point number.
  • each of the secret computing devices 220 and 230 of the secret computing device group removes the lower digit of the extended distributed data value of the extended multiplication result in each of the lower digit removing units 423 and 433, and Generate distributed data values.
  • each of the secret computing devices 220 and 230 in the secret computing device group extracts the distributed code value of the multiplication result by each of the code extraction units 424 and 434.
  • the secret calculation devices 220 and 230 of the secret calculation device group exchange data while holding secrets in the carry extraction secret calculation units 425 and 435 to obtain the extended distributed data value and the extended carrier. The secret calculation process for extracting the distributed carry value is executed.
  • each of the secret computing devices 220 and 230 in the secret computing device group obtains the shared data value and the distributed code value of the secret multiplication result of the first fixed-point number and the second fixed-point number calculated in step S813.
  • the variance carry value is stored in each of the variance information storage units 426 and 436 of the fixed-point numbers of the multiplication results. That is, the secret computing device 220 stores the distributed data value 427, the distributed code value 428, and the distributed carry value 429 as a multiplication result in the fixed-point number distributed information storage unit 426. Also, the secret computing device 230 stores a distributed data value 437, a distributed code value 438, and a distributed carry value 439 as a multiplication result in the distributed information storage unit 436 for fixed-point numbers.
  • FIG. 9A is a flowchart showing the procedure of the secret calculation process (S803) in the legal expansion (digit expansion) of the respective secret calculation devices 220 and 230 according to the present embodiment.
  • the process will be described as the process of the secret calculation device 220.
  • the number of fixed-point numbers j 2.
  • step S911 the secret computing device 220 acquires a one-digit random number of variance values.
  • step S919 the secret computing device 220 generates a distributed data value of (the most significant + i) digits of the jth fixed-point number.
  • step S921 the secret calculation device 220 distributes the generated (most significant + i) digit distributed data to the secret calculation device 220 and the other secret calculation device 230, and in step S923, the other secret calculation device 230. From (most significant + i) digits of distributed data.
  • step S925 the secret computing device 220 generates partial values of the distributed carry value of the (most significant + i) digits of the jth fixed-point number. Then, in step S927, the secret calculation device 220 sends the secret value using the distributed random number of the value of each part of the generated (most significant + i) digit distributed carry value to the other secret calculation device 230, In step S929, the secret value of each partial value of (the most significant + i-digit distributed carry value is acquired from another secret calculation device 230.
  • the partial value is “g” or “g” shown in the following specific example. “H” is shown, and the secret value of the partial value is (gp) or (hq).
  • step S933 the secret computing device 220 determines whether i is a digit of the initial shared data value. That is, it is determined whether or not the distributed data value has been expanded to double digits. If i is not the digit of the initial distributed data value, the secret calculation device 220 returns to step S917, increments i by one more, and repeats steps S919 to S933.
  • the secret calculation device 220 adds the generated higher-order distributed data value to the initial distributed data value for the j-th fixed-point number in step S935, and spreads the distributed data value.
  • the dispersion carry value of the most significant digit is the diffusion dispersion carry value.
  • step S937 the secret computing device 220 determines whether j is the number of fixed-point numbers. That is, it is determined whether all the fixed-point numbers to be secretly multiplied are expanded. If j is not the number of fixed-point numbers, the secret computing device 220 returns to step S914, increments j by one, and repeats steps S916 to S937. When j is the number of fixed-point numbers, the extended distribution of all the fixed-point numbers to be secret-multiplied is completed, and thus the secret calculation process for modulus expansion ends.
  • FIG. 9B is a flowchart showing a procedure of secret calculation processing (S805) in multiplication of the respective secret calculation devices 220 and 230 according to the present embodiment.
  • the process will be described as the process of the secret calculation device 220.
  • the number of fixed-point numbers j 2.
  • step S951 the secret computing device 220 acquires a random number of distributed values of digits of the extended distributed data value.
  • secret calculation apparatus 220 initializes control parameter j representing the number of fixed-point numbers to 0, and in step S955, j is incremented by one.
  • step S957 the secret calculation device 220 sends the secret value using the random distribution value of the extended shared data value of the j-th fixed-point number to the other secret calculation device 230.
  • step S959 the secret calculation device 220 sends another secret calculation device. From 230, the secret value of the extended distributed data value is obtained.
  • the secret value is (x '[1] -p [1]) mod2 ⁇ (2m) or (x' [2] -p [2]) mod2 ⁇ (2m ).
  • step S961 the secret computing device 220 uses the generated secret value and the acquired secret value to generate an intermediate secret value of the j-th fixed-point number for generating the distributed data value of the extended multiplication result.
  • the intermediate secret value indicates (x′ ⁇ p) shown in the following specific example.
  • (y′ ⁇ q) is obtained.
  • step S963 the secret computing device 220 determines whether j is the number of fixed-point numbers. That is, it is determined whether all secret values and intermediate secret values for secret multiplication are prepared. If j is not the number of fixed-point numbers, the secret calculation device 220 returns to step S955 and repeats generation, sending, and acquisition of secret values and intermediate secret values from the extended distributed data value of the next fixed-point number.
  • the secret calculation device 220 in step S965, the first fixed-point number and the second fixed-point number.
  • the distributed data value of the extended multiplication result is generated using the intermediate secret value of the decimal point number.
  • the other secret computing device 230 also generates a distributed data value as an extended multiplication result.
  • the secret extraction processing for carry extraction in step S811 in FIG. 8 is similar to the generation processing of the higher-order distributed carry value in step S303 in FIG. 9A, and therefore the description is omitted to avoid duplication.
  • v [1] and w [1] are distributed to the server 1
  • v [2] and w [2] are distributed to the server 2.
  • the sixth to tenth digits are created.
  • the calculation process for the sixth digit is described, and the remaining digits are omitted because they are the same procedure, and the expansion result is shown. .
  • calculate (x '[2] -p [2]-(x' [1] -p [1])) mod2 ⁇ 10, which corresponds to (x'-p) To get value 1001000100.
  • calculate (y '[2] -q [2]-(y' [1] -q [1])) mod2 ⁇ 10, which corresponds to (y'-q) To get value 0010101011.
  • server 1 shares the multiplication result.
  • the sign of xy ′ is obtained by secret calculation of mod2 (sign of x + sign of y).
  • each server may calculate mod2 by taking the sum of the code of x and the share of the code of y.
  • the distributed data value, the distributed sign value, and the distributed carry value of each fixed-point number are generated, and the secret multiplication of the distributed data value and the secret calculation of the distributed carry value are made independent. It is possible to execute a secret multiplication in which the calculated value, the calculation result, and the value during the calculation cannot be known while suppressing the entire communication amount.
  • the 5-bit fixed-point number can be secret-multiplied with the following traffic.
  • 40 (10 ⁇ 4) bits are obtained in the secret multiplication of the 10-bit extended fixed-point number distributed data value.
  • the secret calculation of the distributed carry value of the secret multiplication result is equivalent to the above extension processing, it becomes 60 bits.
  • the distribution of the fixed-point number and the secret multiplication are described on the assumption that the additive (2, 2) method is used.
  • the secret calculation method based on the other additive type (k, n) method or additive type (k, n) method can also be used for the distribution of fixed-point numbers and the secret multiplication.
  • the same effect as the present invention can be achieved, which can reduce the overall communication amount. That is, the fixed-point number distribution information of the present invention is distributed by dividing it into a data value, a sign, and a carry. Each of these is distributed by an additive (k, n) method, and secret calculation is also used for distributed processing. The configuration is executed by a method corresponding to the additive type (k, n) method.
  • each distributed value is stored in the storage unit in the secret calculation device.
  • the secret calculation device may perform centralized processing of the secret calculation by providing the storage device outside the secret calculation device.
  • the present invention may be applied to a system composed of a plurality of devices, or may be applied to a single device. Furthermore, the present invention can also be applied to a case where an information processing program that implements the functions of the embodiments is supplied directly or remotely to a system or apparatus. Therefore, in order to realize the functions of the present invention on a computer, a program installed on the computer, a medium storing the program, and a WWW (World Wide Web) server that downloads the program are also included in the scope of the present invention. . In particular, at least a non-transitory computer readable medium storing a program for causing a computer to execute the processing steps included in the above-described embodiments is included in the scope of the present invention.
  • a shared information generating device that generates a distributed data value, a distributed code value, and a distributed carry value obtained by distributing each fixed-point number using an additive secret sharing method from at least two fixed-point numbers; Using each of the fixed-point distributed data value, the distributed code value, and the distributed carry value, each extended fixed fixed value including an extended distributed data value, an extended distributed code value, and an extended distributed carry value with an extended number of digits.
  • Secret digit expansion means for generating a decimal number while maintaining a secret; and Generating an extended distributed data value, an extended distributed code value, and an extended distributed carry value as an extended multiplication result obtained by multiplying the distributed first extended fixed-point number and the second extended fixed-point number, while maintaining a secret;
  • a secret multiplication means that adjusts the number of digits of the extended shared data value of the multiplication result to obtain a distributed value of the secret multiplication result;
  • a group of secret computing devices including at least two secret computing devices having A secret calculation system.
  • the distributed information generation device includes: A distributed data value obtained by dispersing the data value of the fixed-point number using the additive secret sharing method from the at least two fixed-point numbers, and the sign of the fixed-point number using the additive secret sharing method Distributed information generating means for generating a distributed distributed code value and a distributed carry value generated by distributing the carry value generated when the data value is distributed using the additive secret sharing method;
  • the secret computing device group is: Using the distributed data value, the distributed sign value, and the distributed carry value of the first fixed-point number, the extended distributed data value, the extended distributed code value, and the extended distributed carry value of the first extended fixed-point number with the number of digits extended.
  • the secret calculation system further comprising: (Appendix 3)
  • the secret computing device group includes at least a first secret computing device and a second
  • the secret exchange of the data includes at least two random numbers having the same digit as the data and a product of the random numbers, and the first secret calculation device and the second secret calculation device using an additive secret sharing method.
  • the secret calculation system according to appendix 1 or 2, wherein the secret calculation system is executed using the distributed number.
  • the secret multiplication means is Lower digit excision means for excising the lower digit of the extended distributed data value of the extended multiplication result; Code extraction means for extracting a distributed code value of the extended multiplication result; Carry extraction means for extracting a distributed carry value of the extended multiplication result;
  • the secret calculation system according to any one of supplementary notes 1 to 3, which includes: (Appendix 5)
  • the secret digit expansion means is Random number distribution means for distributing a product of two random numbers of one digit and the random number to the first secret calculation device and the second secret calculation device using an additive secret sharing method; In the first secret computing device, a first (most significant + 1) digit first value is obtained from the most significant digit value of the first distributed data value of the fixed-point number, the first distributed code value, and the first distributed carry value.
  • a distributed data value is calculated, and in the second secret computation device, the value of the most significant digit of the second distributed data value of the fixed-point number, the second distributed code value, and the second distributed carry value are Extended digit data generation means for calculating a second +1) digit second distributed data value; Extended digit data distribution means for distributing each of the calculated (most significant +1) digit first shared data value and second shared data value to the first secret calculation device and the second secret calculation device; The distributed (most significant +1) digit first distributed data value and second distributed data value, the most significant digit distributed carry value, and the distributed random number of the product of the two random numbers and the random number The first secret calculation device and the second secret calculation device cooperate to generate an extended digit carry generation means for generating a first distributed carry value and a second distributed carry value of (most significant + 1) digits.
  • Extended digit carry distribution means for distributing the calculated (most significant +1) digit first distributed carry value and second distributed carry value to the first secret calculation device and the second secret calculation device; Calculation of the upper digit distributed data value by the extended digit data generating unit, distribution of the upper digit distributed data value by the extended digit data distributing unit, and calculation of the upper digit distributed carry value by the extended digit carry generating unit , The distribution of the higher-order distributed carry value by the extended-digit carry distribution means is repeated toward the upper-order digit, and the calculated first distributed data value of the extended number of digits is the upper order of the first distributed data value of the fixed-point number.
  • the second distributed data value of the number is added above the second distributed data value of the fixed-point number to obtain the second extended distributed data value of the extended fixed-point number.
  • the dispersion carry value to the second extension variance carry value of the extended fixed-point numbers, the expanded fixed-point number generator means, Have For each of the first fixed-point number and the second fixed-point number, the first extended distributed data value and the second extended distributed data value, and the first extended distributed carry value and the second extended distributed carry value.
  • the secret calculation system according to appendix 3 or 4, wherein (Appendix 6)
  • the secret multiplication means is Random number distribution in which a product of two random numbers having the same digit as an extended fixed-point number and the random number is distributed to the first secret calculation device and the second secret calculation device using an additive secret sharing method Means, Using the first distributed fixed-point number and the extended distributed data value of the second extended fixed-point number and the distributed random number of the product of the two random numbers and the random number, Extended multiplication means for performing secret multiplication while cooperating with the second secret calculation apparatus to calculate an extended distributed data value of the extended multiplication result; A digit adjusting means for adjusting a digit of an extended distributed data value of the extended multiplication result to generate a distributed data value of the multiplication result;
  • the secret calculation system according to any one of appendices 3 to 5 having: (Appendix 7) The secret calculation system according to any one of appendices 1 to 6, further comprising a storage device for storing the shared information generated by the shared information generation device.
  • a secret digit expansion step for generating a decimal number while keeping a secret; and Generating an extended distributed data value, an extended distributed code value, and an extended distributed carry value as an extended multiplication result obtained by multiplying the distributed first extended fixed-point number and the second extended fixed-point number, while maintaining a secret;
  • a secret multiplication step that adjusts the number of digits of the extended distributed data value of the multiplication result to obtain a distributed value of the secret multiplication result;
  • a secret calculation method for a secret calculation system including (Appendix 9) Data value distribution means for distributing data values of at least two fixed-point numbers using an additive secret sharing method for secret multiplication; Code distribution means for distributing the code of the at least two fixed-point numbers using an additive secret sharing method for the secret multiplication; Carry distribution means for distributing a carry generated when the data values of the at least two fixed-point numbers are distributed using an additive secret sharing method using an additive secret sharing method for the secret multiplication; ,
  • a distributed information generating apparatus comprising: (Appendix 10)
  • (Appendix 11) A data value distribution step for distributing data values of at least two fixed-point numbers using an additive secret sharing method for secret multiplication; A code distribution step for distributing the code of the at least two fixed-point numbers using an additive secret sharing method for the secret cleansing; A carry distribution step for distributing the carry generated when the data values of the at least two fixed-point numbers are distributed using an additive secret sharing method using an additive secret sharing method for the secret multiplication; , A distributed information generation method including: (Appendix 12) A data value distribution step for distributing data values of at least two fixed-point numbers using an additive secret sharing method for secret multiplication; A code distribution step of distributing the code of the at least two fixed-point numbers using an additive secret sharing method for the secret multiplication; A carry distribution step for distributing the carry generated when the data values of the at least two fixed-point numbers are distributed using an additive secret sharing method using an additive secret sharing method for the secret multiplication; , Information generation program that causes a computer to execute (Appendix 13) Using the distributed data value, the distributed sign value,
  • a secret computing device comprising: (Appendix 14)
  • the secret digit expansion means is Using the distributed data value, the distributed sign value, and the distributed carry value of the first fixed-point number, the extended distributed data value and the extended distributed carry generated by the other distributed value of the first fixed-point number are kept secret.
  • the first distributed fixed-point number extended distributed data value, the extended distributed code value, and the extended distributed carry value with the number of digits expanded are generated, and the second fixed-point number distributed data value and the distributed code value are generated.
  • the secret multiplication means is Using the extended distributed data value, extended distributed code value, extended distributed carry value of the first extended fixed point number, extended distributed data value, extended distributed code value, and extended distributed carry value of the second extended fixed point number, While referring secretly to the extended distributed data value and the extended distributed carry of the extended multiplication result generated by other distributed values of the first extended fixed first decimal number and the second extended fixed point number, An extended distributed data value, an extended distributed code value, and an extended distributed carry value of an extended multiplication result obtained by multiplying the first extended fixed-point number and the second extended fixed-point number are generated, and the digit of the distributed value of the extended multiplication result Adjust the number to make the variance value of the secret multiplication result, The secret calculation apparatus according to attachment 13.
  • the secret calculation device executes a digit extension process by the secret digit extension means and a multiplication process by the secret multiplication means with a secret exchange of data with another secret calculation device, In the secret exchange of the data, at least two random numbers of the same digit as the data and the product of the random numbers are distributed to the secret computing device and the other secret computing devices using an additive secret sharing method
  • the secret calculation device according to appendix 13 or 14, which is executed using the distributed number.
  • the secret multiplication means is Lower digit excision means for excising the lower digit of the extended distributed data value of the extended multiplication result; Code extraction means for extracting a distributed code value of the extended multiplication result; Carry extraction means for extracting a distributed carry value of the extended multiplication result;
  • the secret calculation device according to any one of supplementary notes 13 to 15, which includes: (Appendix 17)
  • the secret digit expansion means is Random number acquisition means for acquiring a distributed random number in which a random product of two random numbers of one digit and the product of the random number are distributed using an additive secret sharing method; Extended digits for calculating the (most significant +1) digit first distributed data value from the most significant digit value of the first distributed data value of the fixed-point number, the first distributed code value, and the first distributed carry value Data generation means; Extended digit data distribution means for distributing the calculated (most significant +1) digit first distributed data value to the secret calculation device and the other secret calculation device; Extended digit data acquisition means for acquiring a distributed value of the second
  • the calculated extended distributed carry value of the extended most significant digit is set as the first extended distributed carry value of the extended fixed-point number.
  • Generating means Have The secret calculation device according to appendix 15 or 16, wherein the first extended distributed data value and the first extended distributed carry value are generated for each of the first fixed-point number and the second fixed-point number.
  • the secret multiplication means is Random number acquisition means for acquiring a distributed random number obtained by distributing two random numbers having the same digits as an extended fixed-point number and the product of the random numbers using an additive secret sharing method; The second extended distributed data value of the first extended fixed-point number and the second extended fixed-point number concealed by a distributed random number of the product of the two random numbers and the random number is used as the other secret calculation device.
  • An extended distributed data value acquisition means to acquire from: The first extended shared data value of the first extended fixed-point number and the second extended fixed-point number, and the second extended shared data of the first extended fixed-point number and the second extended fixed-point number concealed.
  • Extended multiplication means for calculating a first extended distributed data value of the extended multiplication result based on the value; Digit adjustment means for adjusting a digit of the first extended distributed data value of the extended multiplication result to generate a first distributed data value of the multiplication result; Item 18.
  • the secret calculation apparatus according to appendix 17. (Appendix 19) Using the distributed data value, the distributed sign value, and the distributed carry value of at least two fixed-point numbers, the extended distributed data value and the extended distributed carry generated by the other distributed values of each fixed-point number are kept secret.
  • a secret calculation method for a secret calculation device including: (Appendix 20) Using the distributed data value, the distributed sign value, and the distributed carry value of at least two fixed-point numbers, the extended distributed data value and the extended distributed carry generated by the other distributed values of each fixed-point number are kept secret.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本発明は、被計算値や計算結果や計算途中の値を知ることができない秘密乗算を、全体の通信量を抑えて実行する。本秘密計算システムは、少なくとも2つの固定小数点数から、各固定小数点数を加法型の秘密分散法を用いて分散した分散データ値と分散符号値と分散キャリー値とを生成する分散情報生成装置と、各固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を秘密を保持しながら生成する秘密桁拡張部と、分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算部と、を有する少なくとも2台の秘密計算装置と、を備える。

Description

秘密計算システム、秘密計算方法、秘密計算装置、分散情報生成装置およびそれらの方法とプログラム
 本発明は、秘密計算システム、秘密計算方法、秘密計算装置、分散情報生成装置およびそれらの方法とプログラムに関する。
 秘密計算法は、関連する主体に対して計算過程と結果を秘匿することができる技術である。データをクラウドのような第3者が管理する複数サーバに分散して保管することで、データに対してあらゆる演算を実行することができる。第3者には、データ、計算過程、計算結果を知られることがないため、個人情報のような機微な情報に対する分析処理をアウトソースするために用いることができる。秘密計算法は、任意の計算を実行するための基本処理の方法が知られており、任意の計算を実行することができる。
 上記技術分野において、データがShamir(k,n)法を用いて分散されていることを前提とした手法(非特許文献2、非特許文献3等に記載)が代表的である。非特許文献2には、加減算と乗算を実行するための秘密計算法が記載されており、乗算では2ラウンドの通信を必要とする。また、非特許文献3には、乗算を1ラウンドの通信のみで実行可能な方式が提案されている。
 さらに、非特許文献4には、k桁の分散されている数[a]をmビット右シフトする分散プロトコルTrancPr([a],k,m)と、この分散プロトコルTrancPr([a],k,m)を用い、k桁で小数点以下fビットの数[a]と[b]とを秘密乗算する乗算プロコルFPMul([a],[b],k,f)とが記載されている。ここで、FPMul([a],[b],k,f)の計算手順は、(1)[c]←[a]*[b]、(2)[d]←TrancPr([c],2k,f)で表わされる。また、分散プロトコルTrancPr([a],k,m)の手順には、ランダムな0か1を分散するアルゴリズムと、ランダムな1ビットの情報を参加者間で共有するためのプロトコルPRandBit()と、指定されたxビット長の乱数を参加者間で共有するためのプロトコルPRandInt()と、が用いられる。
Adi Shamir, "How to Share a Secret, "Commun. ACM 22 (11), pp.612-613, 1979. Michael Ben-Or, Shafi Goldwasser , Avi Wigderson, "Completeness Theorems for Non-Cryptographic Fault-Tolerant Distributed Computation (Extended Abstract)," Proceedings of the 20 th Annual ACM Symposium on Theory of Computing, 1988. Rosario Gennaro, Michael O. Rabin, Tal Rabin, "Simplified VSS and Fast-track multiparty Computations with Applications to Threshold Cryptography," PODC 1998: pp101-111 Octavian Catrina and Amitabh Saxena, "Secure Computation With Fixed-Point Numbers," Financial Cryptography 2010: pp35-50 Ivan Dangard, Matthias Fitzi, Eike Kilts, Jesper Buus Nielsen, Tomas Toft, "Unconditionally Secure Constant-Rounds Multi-party Computation for Equality, Comparison, Bits and Exponentiation," TCC 2006: pp285-304 Donald Beaver, "Efficient Multiparty Protocols Using Circuit Randomization," CRYPTO '91, LNCS 576, pp.420-432, 1992.
 しかしながら、上記非特許文献4に記載の技術では、通信量が非常に大きい。例えば、PRandBit()やPRandInt()は入力される値に依存しないため、乗算を実行する前の段階で実行できるが、PRandBit()は多量の通信を要する。非特許文献5を参照すると、(2,3)しきい値法を用いる場合でも、1ビット辺り数百ビットの通信を要する。つまり、mビットの固定小数点数に関する一度の乗算について、(数百*m)ビットの通信が前処理にかかることになる。このような前処理も含めて、全体の通信量を抑えた方式が望ましい。
 本発明の目的は、上述の課題を解決する技術を提供することにある。
 上記目的を達成するため、本発明に係る秘密計算システムは、
 少なくとも2つの固定小数点数から、各固定小数点数を加法型の秘密分散法を用いて分散した分散データ値と、分散符号値と、分散キャリー値と、を生成する分散情報生成装置と、
 前記各固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を、秘密を保持しながら生成する秘密桁拡張手段と、
 分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算手段と、
 を有する少なくとも2台の秘密計算装置を含む秘密計算装置群と、
 を備える。
 上記目的を達成するため、本発明に係る秘密計算システムの秘密計算方法は、
 少なくとも2つの固定小数点数から、各固定小数点数を加法型の秘密分散法を用いて分散した分散データ値と、分散符号値と、分散キャリー値と、を生成する分散情報生成ステップと、
 前記各固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を、秘密を保持しながら生成する秘密桁拡張ステップと、
 分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算ステップと、
 を含む。
 上記目的を達成するため、本発明に係る分散情報生成装置は、
 少なくとも2つの固定小数点数のデータ値を、秘密乗算のために加法型の秘密分散法を用いて分散するデータ値分散手段と、
 前記少なくとも2つの固定小数点数の符号を、前記秘密乗算のために加法型の秘密分散法を用いて分散する符号分散手段と、
 前記少なくとも2つの固定小数点数のデータ値を加法型の秘密分散法を用いて分散した際に発生したキャリーを、前記秘密乗算のために加法型の秘密分散法を用いて分散するキャリー分散手段と、
 を備える。
 上記目的を達成するため、本発明に係る分散情報生成方法は、
 少なくとも2つの固定小数点数のデータ値を、秘密乗算のために加法型の秘密分散法を用いて分散するデータ値分散ステップと、
 前記少なくとも2つの固定小数点数の符号を、前記秘密浄罪のために加法型の秘密分散法を用いて分散する符号分散ステップと、
 前記少なくとも2つの固定小数点数のデータ値を加法型の秘密分散法を用いて分散した際に発生したキャリーを、前記秘密乗算のために加法型の秘密分散法を用いて分散するキャリー分散ステップと、
 を含む。
 上記目的を達成するため、本発明に係る分散情報生成プログラムは、
 少なくとも2つの固定小数点数のデータ値を、秘密乗算のために加法型の秘密分散法を用いて分散するデータ値分散ステップと、
 前記少なくとも2つの固定小数点数の符号を、前記秘密乗算のために加法型の秘密分散法を用いて分散する符号分散ステップと、
 前記少なくとも2つの固定小数点数のデータ値を加法型の秘密分散法を用いて分散した際に発生したキャリーを、前記秘密乗算のために加法型の秘密分散法を用いて分散するキャリー分散ステップと、
 をコンピュータに実行させる。
 上記目的を達成するため、本発明に係る秘密計算装置は、
 少なくとも2つの固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、各固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を生成する秘密桁拡張手段と、
 各拡張固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算手段と、
 を備える。
 上記目的を達成するため、本発明に係る秘密計算装置の秘密計算方法は、
 少なくとも2つの固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、各固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を生成する秘密桁拡張ステップと、
 各拡張固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算ステップと、
 を含む。
 上記目的を達成するため、本発明に係る秘密計算プログラムは、
 少なくとも2つの固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、各固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を生成する秘密桁拡張ステップと、
 各拡張固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算ステップと、
 をコンピュータに実行させる。
 本発明によれば、被計算値や計算結果や計算途中の値を知ることができない秘密乗算を、全体の通信量を抑えて実行することができる。
本発明の第1実施形態に係る秘密計算システムの構成を示すブロック図である。 本発明の第2実施形態に係る秘密計算システムの構成を示すブロック図である。 本発明の第2実施形態に係る秘密計算システムにおける分散情報生成装置の機能構成を示すブロック図である。 本発明の第2実施形態に係る秘密計算システムにおける秘密計算装置の機能構成を示すブロック図である。 本発明の第2実施形態に係る分散情報生成装置のハードウェア構成を示すブロック図である。 本発明の第2実施形態に係る分散情報生成装置の分散情報生成処理の手順を示すフローチャートである。 本発明の第2実施形態に係る秘密計算装置のハードウェア構成を示すブロック図である。 本発明の第2実施形態に係る秘密計算装置群による秘密乗算処理の手順を示すフローチャートである。 本発明の第2実施形態に係る各秘密計算装置の法拡大(桁拡大)における秘密計算処理の手順を示すフローチャートである。 本発明の第2実施形態に係る各秘密計算装置の乗算における秘密計算処理の手順を示すフローチャートである。
 以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
 [第1実施形態]
 本発明の第1実施形態としての秘密計算システム100について、図1を用いて説明する。秘密計算システム100は、分散情報を用いて、秘密を保持しながら固定小数点数の秘密計算を行なうシステムである。
 図1に示すように、秘密計算システム100は、分散情報生成装置101と、少なくとも2台の秘密計算装置1021~102nを含む秘密計算装置群102と、を含む。分散情報生成装置101は、少なくとも2つの固定小数点数から、各固定小数点数を加法型の秘密分散法を用いて分散した分散データ値と、分散符号値と、分散キャリー値と、を生成する。秘密計算装置群102は、秘密桁拡張部121と、秘密乗算部122と、を有する。
 秘密桁拡張部121は、各固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を、秘密を保持しながら生成する。秘密乗算部122は、分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする。
 本実施形態によれば、各固定小数点数の分散データ値と分散符号値と分散キャリー値とを生成して、分散データ値の秘密乗算と分散キャリー値の秘密計算とを独立させたので、被計算値や計算結果や計算途中の値を知ることができない秘密乗算を、全体の通信量を抑えて実行することができる。
 [第2実施形態]
 次に、本発明の第2実施形態に係る秘密計算システムについて説明する。本実施形態に係る秘密計算システムは、ネットワークを介して接続された、固定小数点数を分散する分散情報を生成する分散情報生成装置と、分散情報を用いて秘密を保持しながら固定小数点数の秘密計算を行なう少なくとも2つの秘密計算装置からなる秘密計算装置群と、を備える。
 分散情報生成装置は、少なくとも2つの固定小数点数から、各固定小数点数を加法型の秘密分散法を用いて分散した分散データ値と、分散符号値と、分散キャリー値と、を生成する。本実施形態では、加法型の秘密分散法として、秘密計算法が利用可能な加法型(2,2)法を用いるが、他の加法型(k,n)法や加法型(k,n)法に基づく秘密計算法であってもよい。秘密計算装置群は、少なくとも2つの秘密計算装置との間でのデータの秘密交換を伴って桁拡張処理および乗算処理を実行する。ここで、データの秘密交換は、データと同じ桁の少なくとも2つのランダム数とランダム数の積とを、加法型の秘密分散法を用いて少なくとも2つの秘密計算装置に分散し、分散された数を用いて実行される。
 また、秘密計算装置群は、各固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を、秘密を保持しながら生成し、分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする。すなわち、秘密乗算結果の分散値を得るため、拡張乗算結果に対して、拡張分散データ値の下位桁を切除し、分散符号値を抽出し、分散キャリー値を抽出する。
 なお、以下の説明において、x[1],x[2],x[i],x[n]などは、数値xの構成要素iへの分散値を表わし、x{1},x{k},x{j}などは、数値xの桁jの値(2値)を表わしている。また、+は加算、*は乗算を表し、^はべき乗算を表し、a mod b はaをbで割った余り、a||bはaとbのビット連結を表わす。
 《前提技術》
 まず、本実施形態の前提となる技術の説明を行う。前提技術として、秘密分散法と、秘密計算法について説明する。秘密分散法は、秘密計算法において計算対象となるデータをシステムに入力するために利用される。
 (秘密分散法について)
 秘密分散法とは、秘密情報から複数の分散情報を生成する技術である。分散情報は定められた組み合わせからは秘密情報を復元できるが、それ以外の組み合わせからは秘密情報が復元できないように作られる。定められた組み合わせには様々な構造をとることができ、その構造はアクセス構造と呼ばれる。ここでは、代表的なアクセス構造としてしきい値型アクセス構造について説明する。しきい値型アクセス構造は、生成される分散情報の数:nと、しきい値:kの2つのパラメータで表すことができる。これはk個以上の分散情報からは秘密情報が復元できるがk個未満の分散情報からは秘密情報が復元できないというものである。以降、分散情報の数がnであり、しきい値がkのしきい値型アクセス構造の秘密分散法を(k,n)法と呼ぶ。
 (k,n)法としては、Shamirによって提案された方法([非特許文献1]に記載)が代表的である。本明細書では、この方法をShamir(k,n)法と呼ぶ。また、(n,n)法として基本的な方法として、mビットの値xを分散するため、mビットのランダムな値r[2]、…、r[n]を生成し、v[1]=(x+r[2]+ … +r[n])mod2^m、v[2]=r[2]、…、v[n]=r[n]を分散情報とする方法が知られている。全ての分散情報が揃うと、v[1]に加算された全てのランダムな値を取り除くことができ、値xを復元することができる。このように、各分散情報の生成処理が乱数の生成を除くとmod2^m上の加減算のみで構成されているような方法を、2^m上の加法型(n,n)法とする。2^mは法として何を用いるかによって変化する。
 同様に、各分散情報の生成処理が、乱数の生成を除くとmod2^m上の加減算のみで構成されている、(k(<n),n)法も知られている。例として、mビットの値を分散する(2,3)法を、以下に示す。
 入力値:xとした場合の分散処理は、以下の処理で実現される。
(1) r1+r2+r3=0 mod2^mとなるような、r1、r2、r3をランダムに生成する。
(2) x[1]=(r1,r3-x)、x[2]=(r2,r1-w)、x[3]=(r3,r2-w)とし、x[1]、x[2]、x[3]を3つのシェア(分散値、分割値)として出力する。
 以上の方法によって分散された値は、2つ以上の分散情報からxを復元できる。このような方法を、一般に加法型(k,n)法と呼ぶことにする。
 (秘密計算法について)
 秘密分散法によって分散されたデータに関する計算を実行することができる技術は、秘密計算法と呼ばれる。秘密計算法によれば、秘密分散法によって複数のサーバに分散して保管されたデータ群に対する演算をデータの復元を伴うことなく実行できる。秘密計算法を用いれば、複数のサーバにデータを分散して登録し、登録したデータに関する任意の演算が実行可能である。計算対象のデータを複数台のサーバに分散して保管し、その解析を秘密計算法で行うことによって、サーバにも解析対象データと解析結果を知られることなく様々な分析を実行することができる。なお、秘密計算法によって実行された演算の結果は、秘密分散された形で各サーバに保管される。したがって、演算結果を得たい場合は、演算結果に関する分散情報を集めて復元することになる。
 秘密計算法には様々な方法がある。データがShamir(k,n)法を用いて分散されていることを前提とした手法([非特許文献2]、[非特許文献3]等に記載)が代表的である。[非特許文献2]には、加減算と乗算を実行するための秘密計算法が記載されている。加算はサーバ間の通信を行うことなく実行可能であるが、乗算では2ラウンドの通信を必要とする方法が記載されている。[非特許文献3]には、乗算を1ラウンドの通信のみで実行可能な方式が提案されている。これ以降も、これらの基本演算を組み合わせた様々な方法が提案されている。
 先に示した加法型(n,n)法による秘密分散においては、加算が容易に実行可能であり、乗算も後述する方法によって実行できる。なお、加減算と乗算とが実行できれば、任意の処理が実行可能である。
 先に挙げたShamir(k,n)法や、加法型(n,n)法、加法型(2,3)法を用いて分散された値に関して、加減算や乗算に関する秘密計算を実行する方法が知られている。このように任意の処理を実行するために十分な秘密計算の方法を備える秘密分散法を、秘密計算を利用可能な秘密分散法と呼ぶ。
 ([非特許文献4]に記載の固定小数点数向け乗算用秘密計算法)
 固定小数点数の乗算に関する秘密計算法の前提技術として、[非特許文献4]に記載の方法を示す。この方法には、前処理の通信量が非常に大きいという課題がある。
 この方法は、Shamir(k,n)法で分散されたデータに対して実行される。Shamir(k,n)法は、整数値を分散するために用いることができるので、固定小数点数を整数値として扱う。fを小数点の位置を定める整数として、整数値aにより固定小数点数a*2^{-f}を表す方法である。整数値xをShamir(k,n)法で分散して生成したn個の分散情報をx1、…、xnと書く。[x]と書く場合、n人の参加者P1、…、Pnがそれぞれx1、…、xnを所有していることを表す。Shamir(k,n)法ではmビットの整数値を分散する場合、その分散情報は2^mよりも大きい素数pについて0、…、p-1の値となり、各分散情報はmビット以上の値となる。Shamir(k,n)法で分散されたaとbとに関して、乗算の秘密計算法を実行し、その結果が[c]に格納されることを[c]←[a]*[b]と書く。同様に、aとbに関して、加算の秘密計算法を実行し、その結果が[c]に格納されることを[c]←[a]+[b]と書く。
 [非特許文献4]に記載の方法において、a*2^(-f)とb*2^(-f)との積であるa*b^(-2f)を計算する方法を示す。aとbはそれぞれm桁の数で表されているものとする。a*bは2m桁の数となり、上位m桁を取る処理を行う。a*bは2m桁になるので、aやbを分散する場合、2^{2m}よりも大きい素数pを用いたShamir(k,n)法を用い、a,bのそれぞれを分散して入力するものとする。この分散のプロトコルは、[非特許文献4]のProtcol 3.1に示される、k桁の分散されている数[a]をmビット右シフトする秘密計算プロトコルTrancPr([a],k,m)を用いる。
 [非特許文献4]に記載の秘密乗算方法によるFPMul([a],[b],2m,f)は、以下の通りである。
 入力は[a],[b]であって、FPMul([a],[b],2m,f)の計算手順は、
(11) [c]←[a]*[b]
(12) [d]←TrancPr([c],2m,f)であり、
出力が[d]である。
 次に、[非特許文献4]のプロトコルTrancPr([a],k,m)を適用したTrancPr([c],2m,f)の処理について説明する。このプロトコルは、ランダムな0か1を分散するアルゴリズムと、ランダムな1ビットの情報を参加者間で共有するための秘密計算プロトコルPRandBit()と、指定されたxビット長の乱数を参加者間で共有するための秘密計算プロトコルPRandInt()と、が用いられる。
 入力は[c]、2m、fであって、TrancPr([c],2m,f)の計算手順は、
(21) i=0,…,f-1について,[ri]←PRandBit()
(22) [r']←[r0]+[r1]*2^1+ … +[r{f-1}]*2^(f-1)
(23) [r"]←PRandInt(κ+2m-f)
(24) [r]←2^f*[r"]+[r']
(25) [c]←[a]+[r]
(26) cを復元し,参加者間で共有する。
(27) c'←c mod2^f
(28) [a']←c'-[r']
(29) [d]←[a]-[a']/2^(-f)
(30) [d]が出力である。
 以上の処理のうち、PRandBit()やPRandInt()は入力される値に依存しないため、これらの処理は掛け算を実行する前の段階で実行できる。その他の処理のほとんどは定数倍などの軽量な秘密計算処理から成る。通信を要するのは、FPMulの(1)の手順の乗算と、Trancの(6)の手順の復元とになる。しかし、PRandBit()は多量の通信を要する。[非特許文献5]を参照すると、(2,3)しきい値法を用いる場合でも、1ビット当たり数百ビットの通信を要する。つまり、一度の固定小数点数に関する乗算について、(数百*f)ビットの通信が前処理にかかる。このような前処理も含めて全体の通信量を抑えた方式が望ましい。
 《本実施形態の説明》
 以下、本実施形態の秘密分散および秘密乗算について、その処理を説明する。
 (本実施形態の秘密分散処理)
 本実施形態では、データを(2,2)法で分散して、秘密計算装置群としての2台の秘密計算用サーバに格納する。本実施形態の用いる(2,2)法の具体的な方法は、以下の通りである。
 なお、分散する固定小数点数xについて以下を前提とする。 ・mビットのデータで表され、下からf桁目に固定小数点がある。・最上位桁は符号ビットsであり、2の補数表現を用いる。・x'=x*2^fとする。xに対するx'を固定小数点数xのデータ値とする。
 (データの分散方法)
入力:固定小数点数x(x'=x*2^f)
(31) 0、…、(2^m)-1からランダムな値rを選ぶ。
(32) x[1]=r、 x[2]=(x'+r)mod2^mとする。
(33) c=(x[1]+x[2])/2^mを計算し、小数点以下を切り下げる。
(34) c[1]を{0,1}からランダムに選択する。
(35) c[2]=(c+c[1])mod2を計算する。
(36) s[1]を{0,1}からランダムに選択する。
(37) s[2]=(s+s[1])mod2を計算する。
(38) v[1]=(x[1],c[1],s[1])、 v[2]=(x[2],c[2],s[2])を2つの分散情報として出力する。
 ここで、
・x[1]、x[2]は、mod2^m上の加法型(2,2)法によって、データ値x'を分散した値である。
・cは、加法型(2,2)法によって、(x[1]+x[2])/2^m の小数点以下を切り下げた値である。この値は、(x[1]+x[2])が2^m以上になっている場合は1となり、それ以外の場合0となる。つまり、xを加法型(2,2)法で分散した際の桁溢れ(キャリー)が起こっているかどうかを表す。
・c[1]、c[2]はキャリーcを加法型(2,2)法によって分散した値である。
・s[1]、s[2]は、加法型(2,2)法によって、xの符号sを分散した値である。
・なお、以上の分散処理の過程に、fが一切関与していないことに注意を要する。したがって、固定小数点数を分散する秘密分散装置にはデータ値が入力されるものとする。
 つまり、本実施形態においては、固定小数点数のデータ値x'と、データ値を分散したさいに生じたキャリーcと、データ値の符号sをそれぞれのビット長に応じた加法型(2,2)法によって分散する。
 (本実施形態の秘密乗算処理)
 次に、以上のような方法で分散された固定小数点数x、yに関する乗算を行う方法を示す。なお、xとyのデータ値は、それぞれx'(=x*2^f)、y(=y'*2^f)とする’。
 2つの固定小数点数x、yは前述した方法で分散されて、秘密計算装置としての2台の固定小数点数乗算用サーバに記憶された状態から処理は開始される。2台の固定小数点数乗算用サーバを、それぞれ固定小数点数乗算用サーバ1(第1秘密計算装置に相当)、固定小数点数乗算用サーバ2(第2秘密計算装置に相当)とする。
 xからは、v[1]=(x[1],c[1],s[1])とv[2]=(x[2],c[2],s[2])との2つの値が生成され、yからは、w[1]=(y[1],d[1],t[1])とw[2]=(y[2],d[2],t[2])との2つの値が生成される。固定小数点数乗算用サーバ1はv[1]とw[1]とを記憶し、固定小数点数乗算用サーバ2はv[2]とw[2]とを記憶する。
 固定小数点数乗算用サーバ1と固定小数点数乗算用サーバ2とは、2mビットの乱数r1およびr2と、2つの乱数の法2^(2m)上の積である(r1*r2)mod2^(2m)=r12とを、加法型(2,2)法で分散した値を共有しているものとする。具体的には、r1=(r1[1]+r1[2])mod2^(2m)、r2=(r2[1]+r2[2])mod2^(2m)、r1*r2=(r12[1]+r12[2])mod2^(2m)について、固定小数点数乗算用サーバ1はr1[1]、r2[1]、r12[1]を保有し、固定小数点数乗算用サーバ2はr1[2]、r2[2]、r12[2]を保有する。このように、r1、r2、r1*r2が加法型(2,2)法で分散されているとき、これらを用いて、同じく加法型(2,2)法で分散されている値a、bに関する乗算を行うことができる。乗算ごとにr1、r2、r1*r2の3つ組みが加法型(2,2)法で分散されていなければならないが、効率的な方法である。具体的な方法は[非特許文献6]などに記載されている。この過程に実行される通信は、4kビットである。このようなr1、r2、r3の3つ組は使い捨てであり、繰り返し使うことはできない。そのため、必要な乗算の回数だけ固定小数点数乗算用サーバ1と固定小数点数乗算用サーバ2との間で共有しておかなければならない。
 また、同様に、固定小数点数乗算用サーバ1と固定小数点数乗算用サーバ2とは、1ビットの乱数r1およびr2と、2つの乱数の法2上の積であるr1*r2mod2とを、加法型(2,2)法で分散した値を共有しているものとする。具体的には、r1=(r1[1]+r1[2])mod2、r2=(r2[1]+r2[2])mod2、r1*r2=(r12[1]+r12[2])mod2について、固定小数点数乗算用サーバ1はr1[1]、r2[1]、r12[1]を保有し、固定小数点数乗算用サーバ2は、r1[2]、r2[2]、r12[2]を保有する。このように、r1、r2、r1*r2が加法型(2,2)法で分散されているとき、これらを用いて、同じく加法型(2,2)法で分散されている値a、bに関する乗算を行うことができる。乗算ごとにr1、r2、r1*r2の3つ組みが加法型(2,2)法で分散されていなければならないが、効率的な方法である。具体的な方法は[非特許文献6]などに記載されている。この過程に実行される通信は、2ビットである。このようなr1、r2、r3の3つ組は使い捨てであり、繰り返し使うことはできない。そのため、必要な乗算の回数だけ固定小数点数乗算用サーバ1と固定小数点数乗算用サーバ2との間で共有しておかなければならない。
 本実施形態で、固定小数点数乗算用サーバ1と固定小数点数乗算用サーバ2との間で分散されているaとbの乗算を計算する秘密計算を実行すると記載されているときには、前述した乱数の3つ組を用いた通信を伴って乗算を行っているものとする。
 また、固定小数点数乗算用サーバ1と固定小数点数乗算用サーバ2とが1ビットの値Bを法2上の加法型(2,2)法で分散し、固定小数点数乗算用サーバ1がB[1]を保有し、固定小数点数乗算用サーバ2がB[2]を保有しているとき、以下の処理によってbと同じ値を分散しなおすことができる。
(41) 固定小数点数乗算用サーバ1はB[1]=(B'[1,1]+B'[1,2])mod2となるようなB'[1,1]とB'[1,2]とを{0,1}からランダムに選択し、B'[1,2]を固定小数点数乗算用サーバ2に送付する。
(42) 固定小数点数乗算用サーバ2は、B[2]=(B'[2,1]+B'[2,2])mod2となるようなB'[2,1]とB'[2,2]とを{0,1}からランダムに選択し、B'[2,1]を固定小数点数乗算用サーバ1に送付する。
(43) 固定小数点数乗算用サーバ1は、B'[1]=(B'[1,1]+B'[2,1])mod2を計算する。
(44) 固定小数点数乗算用サーバ2は、B'[2]=(B'[1,2]+B'[2,2])mod2を計算する。
 以上の処理の結果として、B'[1]+B'[2]=B'[1,1]+B'[2,1]+B'[1,2]+B'[2,2]=B[1]+B[2]=(Bmod2)となるので、B'[1]とB'[2]とはBと同じ値の分散情報となっている。以上の過程において、Bは一度も復元されることはない。(41)、(42)の処理は並列に実行できるので、以上の処理は1ラウンドの通信で実行される。2ビットである。以降、ある値を再分散する場合、単に再分散すると記載するが、前述した処理が実行されているものとする。
 (秘密乗算手順)
(51) j=1、…、mについて以下の処理を実行する。なお、c{m}=cとする。
 (51-1) x{m+j}=s+c{m+j-1}を実行する秘密計算を実行する、なお、結果の分散情報はx[1]{m+j},x[2]{m+j}とする。固定小数点数乗算用サーバi(i=1,2)はx[i]{m+j}を保有する。
 (51-2) y{m+j}=t+d{m+j-1}を実行する秘密計算を実行する、なお、結果の分散情報はy[1]{m+j}、y[2]{m+j}とする。固定小数点数乗算用サーバi(i=1,2)はy[i]{m+j}を保有する。
 (51-3) c{m+j}=x[1]{m+j}+(x[1]{m+j}+x[2]{m+j})(x[2]{m+j}+c{m+j-1}+1)を実行する秘密計算を実行する、なお、結果の分散情報はc{m+j}[1]、c{m+j}[2]とする。固定小数点数乗算用サーバi(i=1,2)はc[i]{m+j}を保有する。なお、この処理は、x[1]{m+j}、x[2]{m+j}はそれぞれの値を所有する固定小数点数乗算用サーバが、所有する値を再分散し、それぞれの所有する値を明かすことなく実行する。
 (51-4) d{m+j}=y[1]{m+j}+(y[1]{m+j}+y[2]{m+j})(y[2]{m+j}+d{m+j+1}+1)を実行する秘密計算を実行する、なお、結果の分散情報はd[1]{m+1}、d[2]{m+1}とする。固定小数点数乗算用サーバi(i=1,2)はd[i]{m+1}を保有する。なお、この処理は、y[1]{m+1}、y[2]{m+1}はそれぞれの値を所有する固定小数点数乗算用サーバが、所有する値を再分散し、それぞれの所有する値を明かすことなく実行する。
(52) i=1,2について、x'[i]=x[i]{m+f}||x[i]{m+f-1}||…||x[i]{m+1}||x[i]、 y'[i]=y[i]{m+f}||y[i]{m+f-1}||…||y[i]{m+1}||y[i]とする。
(53) z'=(x'*y')mod2^(m+f)に相当する秘密計算を実行する。なお、結果の分散情報はz'[1]、z'[2]とする。固定小数点数乗算用サーバi(i=1,2)はz'[i]を保有する。z'[i](i=1,2)の下位からjビット目をz'[i]{j}とする。
(54) j=1、…、f+mについて、以下の処理を実行する。なお、c{0}=0とする。
 (54-1) e{j}=z'[1]{j}+(z'[1]{j}+z'[2]{j})(z[2]{j}+e{j-1}+1)を実行する秘密計算を実行する、なお、結果の分散情報はe[1]{j}、e[2]{j}とする。固定小数点数乗算用サーバi(i=1,2)はe[i]{j}を保有する。なお、この処理は、z[1]{j}、z[2]{j}はそれぞれの値を所有する固定小数点数乗算用サーバが、所有する値を再分散し、それぞれの所有する値を明かすことなく実行する。
 (54-2) j=f+mのとき、e{j}を再分散した分散情報をe[i](i=1,2)とする。固定小数点数乗算用サーバi(i=1,2)はe[i]を保有する。
(55) j=,2について、u[i]=(s[i]+t[i])mod2を計算する。固定小数点数乗算用サーバi(i=1,2)はu[i]を保有する。
(56) i=1,2について、z[i]=z'[i]{m+f}||z'[i]{m+f-1}||…||z'[i]{f}とし、固定小数点数乗算用サーバiの出力はz[i]、u[i]、e[i]の組とする。
 (各処理手順の説明)
 次に、先に示した処理の意味を説明する。本実施形態においては、固定小数点数xと固定小数点数yの計算を実行してこれらの積を計算する場合、まず、それぞれのデータ値であるx'(=x*2^f)とy'(=y*2^f)の掛け算結果x'y'を計算する。この結果x'y'はx'y'*2^{-f}を表しているため、所望の結果xy=x'y'*2^(-2f)を得るため、x'y'を右にfビットシフトする(下位fビットを切り捨てる)という方法で答えを求める。
 まず、(51)の処理について説明する。この処理は、法2^(m)上の加法型(2,2)法で分散された2つのデータ値x'、y'を、法2^(m+f)上の加法型(2,2)法で分散された値に変換する処理である。法を2^{m+f}に変更する必要があるのは、fビット切り捨ててもmビットの結果を得るためである。法を大きくする際に考慮しなければならないこととして、符号ビットの扱いがある。
 符号ビットの扱いについてだが、補数表現を用いたmビットデータを乗算のためにm+fビットを用いて表す場合、上位fビットには符号ビットを詰めると正しい乗算結果となる。m=4、f=2、2進表記でデータ値がの浮動小数点であれば、2進表記で111110とし、0110であれば、000110である。上位ビットにどのような値を配置するのかを定めるために、データ値を分散する際に符号を単独で分散している。しかし、単純に符号ビットを再分散した値を4つ並べればよいかというと、不十分である。これは桁上がりが起こるためである。
 例として、データ値D=0110を加法的(2,2)法によってD[1]=1101とD[2]=1001とに分散した場合、D[1]+D[2]=10110であり、(10110)mod10000=0110である。これらの値の上位に符号ビットとして00を付け加える場合、E=00を加法的(2,2)法によってE[1]=11、E[2]=01に分散したとする。D'[1]=E[1]||D[1]=111101、D'[2]=E[2]||D[2]=011001とすると、(D'[1]+D'[2])mod100000=010110となり、符号である0が並ばなくなってしまう。そのため、桁上がりを考慮した結果が符号ビットとなる方法で上位桁は付け足さなければならない。このように、桁上がりを考慮して符号ビットを付けたすために、データ値を分散した値で桁上がりが起きていたかどうかを表す1ビットも分散している。
 次に、より具体的に(51)の処理の内容について示す。この処理はxとyの2つの値について同じ処理を実行しているので、xに関する処理((51-1)と(51-3))を説明する。
 (51-1)は、m+jビット目の値を分散するための秘密計算を実行している。この秘密計算は、値xのm+jビット目の値として利用するx{m+j}をm+j-1ビット目からの桁上がりであるc{m+j-1}を考慮しても符号sと等しくなるような値を計算している。x{m+j}を、真理値表を用いて表すと、表1の通りである。
Figure JPOXMLDOC01-appb-T000001
 つまり、x{m+j}=(s+c{m+j-1})mod2によって表される。この秘密計算の結果として、x{m+j}が分散されて、x[1]{m+j}とx[2]{m+j}とが生成される。
 (51-3)は、m+jビット目の値(x[1]{m+j}+x[2]{m+j}+c{m+j-1})が2以上であるか(2以上の場合は1、それ以外の場合は0)を計算し、c{m+j}としている。この値は、m+j+1ビット目の値への桁上がりがあるかどうかを表す値である。c{m+j}を、真理値表を用いて表すと、表2の通りである。
Figure JPOXMLDOC01-appb-T000002
 つまり、c{m+j}=(x[1]{m+j}+(x[1]{m+j}+x[2]{m+j})(x[2]{m+j}+c{m+j-1}+1))mod2によって表される。加法型(2,2)法では、加減算については通信が必要なく、乗算は通信が必要となる。そのため、同じ演算であっても可能な限り乗算の回数少なく計算するのがよい。前述の方法は乗算1回である。c{m+j}を計算する秘密計算の結果としてc[1]{m+j}とc[2]{m+j}とが生成される。
 これら(51-1)と(51-3)との処理によって、x[i]{m+1}、…x[i]{m+m}が生成される。これらはx[i]の上位に付け加えるmビットであるので、x[i]{m+m}||x[i]{m+m-1}||…||x[i]{m+f}||x[i]が所望の拡張結果となっている。
 (53)の処理は、mod2^(m+f)上で、x'*y'を秘密計算する処理である。データ値x'*y'は固定小数点数x'*y'*2^{-f}を表している。この値からx'*y'*2^{-2f}を計算したい。2^{-1}を乗じることは下位1ビットを切ることに対応するため、x'*y'の下位fビットを切ることで、所望の値が得られることになる。つまり、x'*y'からf+1ビット目からf+mビット目を取り出す処理を実行する。
 (54)の乗算結果に関してf+kビット目を定める処理について説明する。(54)では、j=1、…、mについて、c{j}=(z'[1]{j}+(z'[1]{j}+z'[2]{j})(z[2]{j}+c{j-1}+1))mod2を計算している。これは、j+1ビット目へのキャリーがあるかどうかの計算である。この計算によってキャリーが求まるのは、(51-3)と同じ理由である。この処理の結果、f+1ビット目に対するキャリーc{f}が分散された形式で求められる。
 (55)の処理では、計算結果の符号を計算している。正の数は0、負の数は1であるので,mod2上で符号に関するシェアを加算することで計算できる。正は0、負を1とすると、負×負が正になることも(1+1)mod2から保たれているためである。
 以上の手順は、次の手順によって構成されていることが分かる。
(1)データ値の法を拡大する秘密計算
(2)拡大後の法における乗算の秘密計算
(3)下位ビットの切り捨て処理に関する秘密計算
(4)キャリーと符号の分散処理
 《本実施形態を実現する構成》
 以下、本実施形態の秘密分散処理および秘密乗算処理を実現するシステムおよび装置の構成と動作とを説明する。
 《秘密計算システム》
 図2は、本実施形態に係る秘密計算システム200の構成を示すブロック図である。
 図2を参照すると、本実施形態の秘密計算システム200は、固定小数点数分散装置としての分散情報生成装置210と、ネットワーク240を介して接続される少なくとも2つの秘密計算装置220、230と、を備える。
 分散情報生成装置210は、データ値分散部211と、符号分散部212と、キャリー分散部213と、ランダム数分散部214とを有し、少なくとも2つの固定小数点数のデータ値、符号、キャリー、および、ランダム数を生成して、少なくとも2つの秘密計算装置220、230に分散する。
 秘密計算装置220は、分散情報生成装置210から送信された分散情報を記憶する分散情報記憶部221と、他の秘密計算装置230と秘密を保持したデータ交換を行ないながら秘密乗算を実行する乗算処理部222とを有する。また、秘密計算装置230は、分散情報生成装置210から送信された分散情報を記憶する分散情報記憶部231と、他の秘密計算装置220と秘密を保持したデータ交換を行ないながら秘密乗算を実行する乗算処理部232とを有する。
 そして、乗算処理部222と乗算処理部232とが、秘密を保持してデータ交換を行ないながら、協働して桁の拡張と秘密乗算とを行なう、秘密桁拡張部や秘密乗算部に相当する。
 なお、ランダム数分散部214は、分散情報生成装置210とは別の装置にあってもよい。また、分散情報記憶部221や231は、秘密計算装置の外部の分散情報記憶装置として構成されてもよい。
 《分散情報生成装置の機能構成》
 図3は、本実施形態に係る秘密計算システム200における分散情報生成装置210の機能構成を示すブロック図である。図3には、分散情報生成装置210が、生成した分散情報を秘密計算装置220の分散情報記憶部221、および、秘密計算装置230の分散情報記憶部231に分散する構成も図示している。固定小数点の位置を表すfが固定されており、これを利用する装置にはあらかじめ記憶されている前提で記載しているが、各装置に入力されるものとしてもよい。
 固定小数点数分散装置としての分散情報生成装置210は、データ値分散部211と、符号分散部212と、キャリー分散部213と、ランダム数分散部214と、を備える。データ値分散ぶ211は、データ値x'を入力とし、データ値を加法型(2,2)法で分散した値x[i](i=1,2)と、データ値の分散情報に対するキャリーcを出力する。符号分散部212は、データ値x'を入力とし、データ値x'から符号ビットsを抽出し、符号ビットを加法型(2,2)法で分散した値s[i](i=1,2)を出力する。キャリー分散部213は、データ値分散部211の出力であるキャリーcを入力とし、データ値を加法型(2,2)法で分散した値c[i](i=1,2)を出力する。ランダム数分散部214は、秘密計算するビット数を有する、少なくとも2つのランダム数p,qとその乗算結果r=p*qの分散値(p[i],q[i],r=p*q[i])(i=1,2)を出力する。
 データ値分散部211と、符号分散部212と、キャリー分散部213と、ランダム数分散部214とは、生成した各分散値を複数の秘密計算装置220、230に送信して、それらの分散情報記憶部に記憶させる。なお、ランダム数分散部214は、分散情報生成装置210以外の装置に設けられてもよい。
 秘密計算装置220は分散情報記憶部221を有し、秘密計算装置230は分散情報記憶部231をそれぞれ有している。分散情報記憶部221は、第1固定小数点数の分散情報記憶部321と、第2固定小数点数の分散情報記憶部325と、ランダム数の分散情報記憶部329と、を含む。なお、固定小数点数が3つ以上の場合には、さらに分散情報記憶部を有する。そして、第1固定小数点数の分散情報記憶部321には、第1固定小数点数の分散データ値322と分散符号値323と分散キャリー値324とが記憶される。第2固定小数点数の分散情報記憶部325には、第2固定小数点数の分散データ値326と分散符号値327と分散キャリー値328とが記憶される。ランダム数の分散情報記憶部329には、1ビットランダム数の分散値と乗算時の拡張ビットランダム数の分散値とが記憶される。
 また、分散情報記憶部231は、第1固定小数点数の分散情報記憶部331と、第2固定小数点数の分散情報記憶部335と、ランダム数の分散情報記憶部339と、を含む。なお、固定小数点数が3つ以上の場合には、さらに分散情報記憶部を有する。そして、第1固定小数点数の分散情報記憶部331には、第1固定小数点数の分散データ値332と分散符号値333と分散キャリー値334とが記憶される。第2固定小数点数の分散情報記憶部335には、第2固定小数点数の分散データ値336と分散符号値337と分散キャリー値338とが記憶される。ランダム数の分散情報記憶部339には、1ビットランダム数の分散値と乗算時の拡張ビットランダム数の分散値とが記憶される。
 例えば、第1固定小数点数xのデータ値x'を入力とし、データ値分散部211の出力であるデータ値分散情報x[i](i=1,2)が、第1固定小数点数の分散情報記憶部321の分散データ値322、および、第1固定小数点数の分散情報記憶部331の分散データ値332にそれぞれ分散記憶される。
 第1固定小数点数xの符号値sを入力とし、符号分散部212の出力である符号分散情報s[i](i=1,2)が、第1固定小数点数の分散情報記憶部321の分散符号値323、および、第1固定小数点数の分散情報記憶部331の分散符号値333にそれぞれ分散記憶される。
 第1固定小数点数xのキャリー値cを入力とし、キャリー分散部213の出力であるキャリー分散情報c[i](i=1,2)が、第1固定小数点数の分散情報記憶部321の分散キャリー値324、および、第1固定小数点数の分散情報記憶部331の分散キャリー値334にそれぞれ分散記憶される。
 《秘密計算装置の機能構成》
 図4は、本実施形態に係る秘密計算システム200における秘密計算装置220、230の機能構成を示すブロック図である。なお、図4において、図3と同様の構成要素には同じ参照番号を付して、重複する説明を省略する。
 秘密計算装置220の固定小数点数の乗算処理部222は、法拡大用秘密計算部421と、乗算用秘密計算部422と、下位桁切除部423と、符号抽出部424と、キャリー抽出秘密計算部425と、を備える。秘密計算装置230の固定小数点数の乗算処理部232は、法拡大用秘密計算部431と、乗算用秘密計算部432と、下位桁切除部433と、符号抽出部434と、キャリー抽出秘密計算部435と、を備える。
 法拡大用秘密計算部421と法拡大用秘密計算部431とは、第1固定小数点数および第2固定小数点数の、各分散データ値、各分散符号値、各分散キャリー値を入力とし、互いに秘密を保持したデータ交換を行ないながら、第1拡張固定小数点数および第2拡張固定小数点数の、各拡張分散データ値、各拡張分散符号値、各拡張分散キャリー値を生成する。秘密を保持したデータ交換には、ランダム数の分散情報記憶部329および339の1ビットランダム分散値が用いられる。この法拡大用秘密計算部421と法拡大用秘密計算部431とが、秘密桁拡張部に相当する。
 乗算用秘密計算部422と乗算用秘密計算部432とは、法拡大された第1拡張固定小数点数および第2拡張固定小数点数の、各拡張分散データ値、各拡張分散符号値、各拡張分散キャリー値に基づいて、互いに秘密を保持したデータ交換を行ないながら、拡張秘密乗算結果の拡張分散データ値、拡張分散符号値、拡張分散キャリー値を生成する。秘密を保持したデータ交換には、ランダム数の分散情報記憶部329および339の拡張ビットランダム分散値が用いられる。
 各下位桁切除部423、433は、それぞれの拡張秘密乗算結果の拡張分散データ値から、固定小数点数である秘密乗算結果の各分散データ値を生成する。各符号抽出部424、434は、それぞれの拡張秘密乗算結果の拡張分散符号値から、固定小数点数である秘密乗算結果の各分散符号値を生成する。キャリー抽出秘密計算部425、435は、互いに秘密を保持したデータ交換を行ないながら、拡張秘密乗算結果の互いに秘密を保持したデータ交換を行ないながら、拡張秘密乗算結果の拡張分散データ値と拡張分散キャリー値とから、固定小数点数である秘密乗算結果の各分散キャリー値を生成する。
 なお、上記の乗算用秘密計算部422、下位桁切除部423、符号抽出部424およびキャリー抽出秘密計算部425と、乗算用秘密計算部432、下位桁切除部433、符号抽出部434およびキャリー抽出秘密計算部435とが、秘密乗算部に相当する。
 乗算処理部222の下位桁切除部423の出力である秘密乗算結果の分散データ値は、分散情報記憶部221が有する乗算結果の分散情報記憶部426に分散データ値427として記憶される。乗算処理部222の符号抽出部424の出力である秘密乗算結果の分散符号値は、分散情報記憶部221が有する乗算結果の分散情報記憶部426に分散符号値428として記憶される。乗算処理部222のキャリー抽出秘密計算部425の出力である秘密乗算結果の分散キャリー値は、分散情報記憶部221が有する乗算結果の分散情報記憶部426に分散キャリー値429として記憶される。
 一方、乗算処理部232の下位桁切除部433の出力である秘密乗算結果の分散データ値は、分散情報記憶部231が有する乗算結果の分散情報記憶部436に分散データ値437として記憶される。乗算処理部232の符号抽出部434の出力である秘密乗算結果の分散符号値は、分散情報記憶部231が有する乗算結果の分散情報記憶部436に分散符号値438として記憶される。乗算処理部232のキャリー抽出秘密計算部435の出力である秘密乗算結果の分散キャリー値は、分散情報記憶部231が有する乗算結果の分散情報記憶部436に分散キャリー値439として記憶される。
 なお、固定小数点数の分散情報記憶部は、2つでひとつの値の分散情報を記憶するような構成であるが、一組の装置が多くの値を記憶してもよい。その場合、各値に識別情報などをつけて記憶することになる。
 以上の説明では、加法型(2,2)法を分散するために用いる方法で記載したが、他の(k,n)法でもよい。その場合、固定小数点数の分散情報記憶部はn個になり、固定小数点数の乗算処理部は、対応する秘密計算の方法で必要となる個数になる。なお、[非特許文献5]との違いは、[非特許文献5]の方法は乱数でマスクした乗算結果を一端復元するというステップを踏んでいることにある。
 《動作手順の説明》
 次に、本実施形態における秘密乗算処理を、
(1)固定小数点数の分散情報の生成処理と、
(2)固定小数点数の乗算に関する秘密計算と、
に分けて、その動作手順をさらに説明する。
 《分散情報生成装置のハードウェア構成》
 図5は、本実施形態に係る分散情報生成装置210のハードウェア構成を示すブロック図である。
 図5で、CPU(Central Processing Unit)510は演算制御用のプロセッサであり、プログラムを実行することで図3の機能構成部を実現する。CPU510は複数のプロセッサを有し、異なるプログラムやモジュール、タスク、スレッドなどを並行して実行してもよい。ROM(Read Only Memory)520は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。ネットワークインタフェース530は、ネットワークを介して、複数の秘密計算装置との通信を制御する。
 RAM(Random Access Memory)540は、CPU510が一時記憶のワークエリアとして使用するランダムアクセスメモリである。RAM540には、本実施形態の実現に必要なデータを記憶する領域が確保されている。第1固定小数点数541は、本実施形態において秘密乗算する一方の数である。第2固定小数点数542は、本実施形態において秘密乗算する他方の数である。
 第1固定小数点数の第1分散値543は、第1固定小数点数541から生成された一方の分散値であり、分散データ値と分散符号値と分散キャリー値との組である。第1固定小数点数の第2分散値544は、第1固定小数点数541から生成された他方の分散値であり、分散データ値と分散符号値と分散キャリー値との組である。第1分散値543と第2分散値544とは、異なる秘密計算装置に送信される。
 第2固定小数点数の第1分散値545は、第2固定小数点数542から生成された一方の分散値であり、分散データ値と分散符号値と分散キャリー値との組である。第2固定小数点数の第2分散値546は、第2固定小数点数542から生成された一方の分散値であり、分散データ値と分散符号値と分散キャリー値との組である。第1分散値545と第2分散値546とは、異なる秘密計算装置に送信される。
 ランダム数(p,q,p*q)547は、異なる秘密計算装置間の通信のために使用される乱数である。かかる乱数のビット数は、異なる秘密計算装置間で通信されるデータのビット数に対応して設定される。ランダム数の第1分散値548は、ランダム数(p,q,p*q)547から生成された一方の分散値である。ランダム数の第2分散値549は、ランダム数(p,q,p*q)547から生成された他方の分散値である。第1分散値548と第2分散値549とは、異なる秘密計算装置に送信される。
 ストレージ550は、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。データ値分散アルゴリズム551は、本実施形態で使用される被乗算値のデータ値を分散するアルゴリズムである。符号分散アルゴリズム552は、本実施形態で使用される被乗算値の符号を分散するアルゴリズムである。キャリー分散アルゴリズム553は、本実施形態で使用される被乗算値のキャリーを分散するアルゴリズムである。ランダム数分散アルゴリズム554は、本実施形態で使用される被乗算値のランダム数を分散するアルゴリズムである。
 ストレージ550には、以下のプログラムが格納される。分散情報生成プログラム555は、本分散情報生成装置210を制御して分散情報を生成するプログラムである。データ値分散モジュール556は、固定小数点数から分散データ値を生成するモジュールである。符号分散モジュール557は、固定小数点数から分散符号値を生成するモジュールである。キャリー分散モジュール558は、データ値分散モジュール556が固定小数点数から分散データ値を生成した際に発生したキャリーの分散キャリー値を生成するモジュールである。ランダム数分散モジュール559は、ランダム数から分散ランダム数を生成するモジュールである。
 なお、図5のRAM540やストレージ550には、分散情報生成装置210が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
 《分散情報生成処理》
 図6は、本実施形態に係る分散情報生成装置210の分散情報生成処理の手順を示すフローチャートである。このフローチャートは、図5のCPU510がRAM540を使用して実行し、図3の分散情報生成装置210の機能構成部を実現する。
 分散情報生成装置210は、ステップS601において、固定小数点数のデータ値を取得する。分散情報生成装置210は、ステップS603において、データ値から、加法型(2,2)法を用いて分散した分散データ値を生成し、分散データ値に関するキャリーを出力する。
 分散情報生成装置210は、ステップS605において、データ値から符号を抽出し、符号を、加法型(2,2)法を用いて分散した分散符号値を生成する。分散情報生成装置210は、ステップS607において、ステップS603で出力されたキャリー値を、加法型(2,2)法を用いて分散した分散キャリー値を生成する。
 分散情報生成装置210は、ステップS609において、秘密計算中に交換する値のビット数に対応する、少なくとも2つのランダム数とその乗算値の分散値を生成する。
 そして、分散情報生成装置210は、ステップS611において、分散データ値、分散符号値、分散キャリー値の組である分散値を、それぞれ秘密計算装置が有する固定小数点数の分散情報記憶部に送信して記憶させる。また、少なくとも2つのランダム数とその乗算値の分散値をランダム数の分散情報記憶部に送信して記憶させる。なお、少なくとも2つのランダム数とその乗算値の分散値は、各秘密計算の前に送信されてもよい。
 《秘密計算装置のハードウェア構成》
 図7は、本実施形態に係る秘密計算装置220、230のハードウェア構成を示すブロック図である。なお、図7には、秘密計算装置220、230のいずれか1つの構成を示す。図7に示す秘密計算装置の複数が秘密データの交換をしながら、秘密乗算を実行することになる。
 図7で、CPU710は演算制御用のプロセッサであり、プログラムを実行することで図3の機能構成部を実現する。CPU710は複数のプロセッサを有し、異なるプログラムやモジュール、タスク、スレッドなどを並行して実行してもよい。ROM720は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。ネットワークインタフェース730は、ネットワークを介して、分散情報生成装置210または他の秘密計算装置との通信を制御する。
 RAM740は、CPU710が一時記憶のワークエリアとして使用するランダムアクセスメモリである。RAM740には、本実施形態の実現に必要なデータを記憶する領域が確保されている。第1固定小数点数の分散値741は、第1固定小数点数541の分散値であり、分散データ値と分散符号値と分散キャリー値との組である。第2固定小数点数の分散値742は、第2固定小数点数542の分散値であり、分散データ値と分散符号値と分散キャリー値との組である。ランダム数の分散値743は、ランダム数547の分散値であり、本実施形態では、1桁の数の分散値と、被乗算数の拡張桁の数の分散値とを含む。
 第1拡張固定小数点数の分散値744は、第1固定小数点数の分散値741と、他の秘密計算装置に記憶された第1固定小数点数の分散値とから、秘密計算により第1固定小数点数の桁数を拡張した第1拡張固定小数点数の分散値であり、分散データ値と分散符号値と分散キャリー値との組である。第2拡張固定小数点数の分散値745は、第2固定小数点数の分散値742と、他の秘密計算装置に記憶された第2固定小数点数の分散値とから、秘密計算により第2固定小数点数の桁数を拡張した第2拡張固定小数点数の分散値であり、分散データ値と分散符号値と分散キャリー値との組である。
 拡張秘密乗算結果の分散値746は、第1拡張固定小数点数の分散値744と、第2拡張固定小数点数の分散値745と、他の秘密計算装置に記憶された第1拡張固定小数点数の分散値および第2拡張固定小数点数の分散値とから、秘密計算により乗算した拡張乗算結果の分散値であり、分散データ値と分散符号値と分散キャリー値との組である。
 秘密乗算結果の分散値747は、拡張秘密乗算結果の分散値746と、他の秘密計算装置に記憶された拡張秘密乗算結果の分散値とから、秘密計算により拡張桁を切除した乗算結果の分散値であり、分散データ値と分散符号値と分散キャリー値との組である。
 中間秘密値748は、固定小数点数の桁拡張と、秘密乗算と、秘密乗算結果の拡散キャリー値の計算とで使用される、ランダム数の分散値を用いた中間の秘密値であり、後述のg,h,g-p,h-g,x'-p,y'-qなどが含まれる。
 ストレージ750は、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。上位桁の分散データ値生成アルゴリズム751は、本実施形態で使用される被乗算値のデータ値の上位桁を生成して分散するアルゴリズムである。上位桁の分散キャリー値生成アルゴリズム752は、本実施形態で使用される被乗算値のキャリー値の上位桁を生成して分散するアルゴリズムである。拡張分散データ値の秘密乗算アルゴリズム753は、本実施形態で使用される被乗算値の拡張分散データ値を秘密乗算するアルゴリズムである。秘密乗算結果の後処理アルゴリズム754は、拡張秘密乗算結果の分散値から拡張桁を切除した秘密乗算結果を生成するアルゴリズムであり、下位桁切除処理や符号抽出処理やキャリー抽出処理を含む。
 ストレージ750には、以下のプログラムが格納される。秘密乗算制御プログラム755は、本秘密計算装置220または230を制御して秘密乗算するプログラムである。拡張分散値生成モジュール756は、上記分散データ値生成アルゴリズム751および分散キャリー値生成アルゴリズム752に従って、桁が拡張された乗算用の分散値である、拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成するモジュールである。拡張分散値秘密乗算モジュール757は、上記秘密乗算アルゴリズム753に従って、拡張分散データ値を用いて秘密乗算を行なうモジュールである。秘密乗算結果後処理モジュール758は、上記後処理アルゴリズム754に従って、拡張秘密乗算結果から拡張桁を切除した、秘密乗算結果の分散データ値と分散符号値と分散キャリー値とを生成するモジュールである。
 なお、図7のRAM740やストレージ750には、秘密計算装置220、230が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
 《秘密乗算処理》
 図8は、本実施形態に係る秘密計算装置群による秘密乗算処理の手順を示すフローチャートである。このフローチャートは、図7のCPU710がRAM740を使用して実行し、図4の秘密計算装置群の秘密計算装置220、230の機能構成部を実現する。
 秘密計算装置群の秘密計算装置220、230のそれぞれは、ステップS801において、各分散情報記憶部221、231から各分散情報を読み出す。すなわち、秘密計算装置220の乗算処理部222は、第1固定小数点数の分散情報記憶部321から、第1固定小数点数の分散データ値322と、分散符号値323と、分散キャリー値324と、を読み出す。また、乗算処理部222は、第2固定小数点数の分散情報記憶部325から、第2固定小数点数の分散データ値326と、分散符号値327と、分散キャリー値328と、を読み出す。一方、秘密計算装置230の乗算処理部232は、第1固定小数点数の分散情報記憶部331から、第1固定小数点数の分散データ値332と、分散符号値333と、分散キャリー値334と、を読み出す。また、乗算処理部232は、第2固定小数点数の分散情報記憶部335から、第2固定小数点数の分散データ値336と、分散符号値337と、分散キャリー値338と、を読み出す。
 秘密計算装置群の秘密計算装置220、230は協働して、ステップS803において、法拡大用秘密計算部421と431とで秘密を保持しながらデータ交換して、第1固定小数点数および第2固定小数点数それぞれの拡張分散データ値と拡張符号値と拡張キャリアとを生成する秘密計算処理を実行する。
 秘密計算装置群の秘密計算装置220、230は協働して、ステップS805において、乗算用秘密計算部422と432とで秘密を保持しながらデータ交換して、第1固定小数点数の拡張分散データと第2固定小数点数の拡張分散データとを用いて第1固定小数点数と第2固定小数点数との拡張乗算結果の拡張分散データ値を求める秘密計算処理を実行する。
 秘密計算装置群の秘密計算装置220、230のそれぞれは、ステップS807において、下位桁切除部423と433とのそれぞれで、拡張乗算結果の拡張分散データ値の下位桁を切除して、乗算結果の分散データ値を生成する。秘密計算装置群の秘密計算装置220、230のそれぞれは、ステップS809において、符号抽出部424と434とのそれぞれで、乗算結果の分散符号値を抽出する。秘密計算装置群の秘密計算装置220、230は協働して、ステップS811において、キャリー抽出秘密計算部425と435とで秘密を保持しながらデータ交換して、拡張分散データ値と拡張キャリアとを用いて、分散キャリー値を抽出する秘密計算処理を実行する。
 そして、秘密計算装置群の秘密計算装置220、230のそれぞれは、ステップS813において、秘密算出した、第1固定小数点数と第2固定小数点数との秘密乗算結果の分散データ値と分散符号値と分散キャリー値とを、乗算結果の固定小数点数の分散情報記憶部426と436とにそれぞれ記憶する。すなわち、秘密計算装置220は、固定小数点数の分散情報記憶部426に乗算結果の分散データ値427と分散符号値428と分散キャリー値429とを記憶する。また、秘密計算装置230は、固定小数点数の分散情報記憶部436に乗算結果の分散データ値437と分散符号値438と分散キャリー値439とを記憶する。
 (法拡大(桁拡大)における秘密計算処理)
 図9Aは、本実施形態に係る各秘密計算装置220、230の法拡大(桁拡大)における秘密計算処理(S803)の手順を示すフローチャートである。図9Aの説明においては、秘密計算装置220の処理として説明する。なお、本実施形態においては、固定小数点数の数j=2である。
 秘密計算装置220は、ステップS911において、1桁のランダム数の分散値を取得する。秘密計算装置220は、ステップS913において、固定小数点数の個数を表わす制御パラメータj=0に初期化し、ステップS914において、jを1つインクリメントする。秘密計算装置220は、ステップS916において、追加桁数を表わす制御パラメータi=0に初期化して、ステップS917において、iを1つインクリメントする。
 秘密計算装置220は、ステップS919において、第j固定小数点数の(最上位+i)桁の分散データ値を生成する。そして、秘密計算装置220は、ステップS921において、生成した(最上位+i)桁の分散データを秘密計算装置220と他の秘密計算装置230とに分散し、ステップS923において、他の秘密計算装置230から、(最上位+i)桁の分散データを取得する。
 秘密計算装置220は、ステップS925において、第j固定小数点数の(最上位+i)桁の分散キャリー値の部分値をそれぞれ生成する。そして、秘密計算装置220は、ステップS927において、生成した(最上位+i)桁の分散キャリー値の各部の値の、分散ランダム数を用いた秘密値を、他の秘密計算装置230に送付し、ステップS929において、他の秘密計算装置230から、(最上位+i桁の分散キャリー値の各部分値の秘密値を取得する。ここで、部分値とは、以下の具体例で示す“g”や“h”を示し、部分値の秘密値とは(g-p)や(h-q)を示す。
 秘密計算装置220は、ステップS931において、生成した部分値や取得した部分値の秘密値、あるいは、ランダム数の積r(=p*q)の分散値などを用いて、秘密を保持しながら、第j固定小数点数の(最上位+i)桁の分散キャリー値を生成する。
 秘密計算装置220は、ステップS933において、iが初期分散データ値の桁であるか否かを判定する。すなわち、分散データ値が倍の桁にまで拡張されたかを判定する。iが初期分散データ値の桁でない場合、秘密計算装置220は、ステップS917に戻って、iをさらに1つインクリメントして、ステップS919~S933を繰り返す。
 iが初期分散データ値の桁となった場合、秘密計算装置220は、ステップS935において、第j固定小数点数について、初期分散データ値に生成した上位桁の分散データ値を加えて拡散分散データ値とし、最上位桁の分散キャリー値を拡散分散キャリー値とする。
 秘密計算装置220は、ステップS937において、jが固定小数点数の個数であるか否かを判定する。すなわち、秘密乗算する固定小数点数が全て拡張されたかを判定する。jが固定小数点数の個数でない場合、秘密計算装置220は、ステップS914に戻って、jをさらに1つインクリメントして、ステップS916~S937を繰り返す。jが固定小数点数の個数となった場合、秘密乗算する全ての固定小数点数の拡張分散が終了したので、法拡大の秘密計算処理を終了する。
 (乗算における秘密計算処理)
 図9Bは、本実施形態に係る各秘密計算装置220、230の乗算における秘密計算処理(S805)の手順を示すフローチャートである。図9Bの説明においては、秘密計算装置220の処理として説明する。なお、本実施形態においては、固定小数点数の数j=2である。
 秘密計算装置220は、ステップS951において、拡張分散データ値の桁のランダム数の分散値を取得する。秘密計算装置220は、ステップS953において、固定小数点数の個数を表わす制御パラメータj=0に初期化し、ステップS955において、jを1つインクリメントする。
 秘密計算装置220は、ステップS957において、第j固定小数点数の拡張分散データ値の、ランダム分散値を用いた秘密値を他の秘密計算装置230に送付し、ステップS959において、他の秘密計算装置230から、拡張分散データ値の秘密値を取得する。ここで、秘密値とは、以下の具体例で示す(x'[1]-p[1])mod2^(2m)、あるいは、(x'[2]-p[2])mod2^(2m)を示す。なお、次の処理では、(y'[1]-q[1])mod2^(2m)、あるいは、(y'[2]-q[2])mod2^(2m)となる。
 秘密計算装置220は、ステップS961において、生成した秘密値と取得した秘密値とを用いて、拡張乗算結果の分散データ値を生成するための第j固定小数点数の中間秘密値を生成する。ここで、中間秘密値とは、以下の具体例で示す(x’-p)を示す。なお、次の処理では、(y’-q)となる。
 秘密計算装置220は、ステップS963において、jが固定小数点数の個数であるか否かを判定する。すなわち、秘密乗算するための全ての秘密値や中間秘密値が準備されたかを判定する。jが固定小数点数の個数でない場合、秘密計算装置220は、ステップS955に戻って、次の固定小数点数の拡張分散データ値から秘密値や中間秘密値の生成、送付および取得を繰り返す。
 jが固定小数点数の個数になった場合、秘密乗算するための全ての秘密値や中間秘密値が準備されたので、秘密計算装置220は、ステップS965において、第1固定小数点数および第2固定小数点数の中間秘密値を用いて、拡張乗算結果の分散データ値を生成する。同様に、他の秘密計算装置230も拡張乗算結果の分散データ値を生成する。
 (キャリー抽出の秘密計算処理)
 図8のステップS811におけるキャリー抽出の秘密計算処理は、図9AのステップS303における上位桁の分散キャリー値の生成処理と類似の処理であるので、重複を避けて説明を書略する。
 《秘密乗算の具体例》
 以下、本実施形態の秘密計算システムにおいて、具体的な秘密分散および秘密乗算を行なった例を説明する。
 (数値例)
 x=-2.0とy=+2.5に関する、x*y=-5.0の本実施形態に基づく秘密乗算例を示す。この秘密乗算を2進表記すると、1110.0*0010.1=1011.0となる。すなわち、m(桁数)=5、f(小数点以下の桁)=1である。
 補数を用いる場合の乗算では、
     1111111100
 *   0000000101
  1001111101100   
となり、下位の6桁目から2桁目の5桁を乗算結果として得ることになる。
 《数値の分散》
 (xの分散)
 x(=1110.0)のデータ値x'(=11100)を2つのサーバに分散する。
 0から11111までの任意の数を、r=11000とすると、(x'+r)mod2^5(=100000)=10100となる。そして、x[1]=11000はサーバ1への分散値となり、x[2]=10100はサーバ2への分散値となる。なお、x[1]の下位からj桁目をx[1]{j}、x[2]の下位からj桁目をx[2]{j}とする。
  (x'のキャリー:cの分散)
  c=1であり、c[1]=1とc[2]=0とに分散される。
  (xの符号:sの分散)
  s=1であり、s[1]=0とs[2]=1とに分散される。
 xの分散情報は、v[1]=(11000,1,0)と、v[2]=(10100,0,1)とになる。
 (yの分散)
 y(=0010.1)のデータ値y'(=00101)を2つのサーバに分散する。
 0から11111までの任意の数を、r=00100とすると、(y'+r)mod2^5(=100000)=01001となる。そして、y[1]=00100はサーバ1への分散値となり、y[2]=01001はサーバ2への分散値となる。なお、y[1]の下位からj桁目をy[1]{j}, y[2]の下位からj桁目をy[2]{j}とする。
  (y'のキャリー:dの分散)
  d=0であり、d[1]=0とd[2]=0とに分散される。
  (yの符号:tの分散)
  t=0であり、t[1]=0とt[2]=0とに分散される。
 yの分散情報は、w[1]=(00100,0,0)と、w[2] = (01001,0,0)とになる。
 乗算される数値として、サーバ1にv[1],w[1]が配られ、サーバ2にv[2],w[2]が配られる。
 《数値の桁の拡張:秘密乗算の準備処理》
 乗算の前に、桁の拡張処理を行う。なお、ここではxに関する分散情報の桁拡張処理についてのみ書く。yについては、同様の方法で拡張した結果のシェアの値の例を挙げる。
 また、拡張の処理の過程で、p*q=rを満たすランダムビット値p,q,rをサーバ1およびサーバ2の間で複数分散しているものとする。
(p[2]-p[1])mod2=p
(q[2]-q[1])mod2=q
(r[2]-r[1])mod2=r=p*q
ここで、サーバ1はp[1],q[1],r[1]を持ち、サーバ2はp[2],q[2],r[2]を持つ。
 また、xの桁の拡張では、6桁目から10桁目を作るが、ここでは、6桁目に関する計算過程を記載し、残りの桁は同様の手順なので省略して、その拡張結果を示す。
 (6桁目の数値生成)
 サーバ1において、x[1]{6}=(s[1]+c[1])mod2=1 によりx[1]の6桁目を生成する。
 サーバ2において、x[2]{6}=(s[2]+c[2])mod2=1 によりx[2]の6桁目を生成する。
  (x[1]{6}=1の再分散)
  サーバ1によって、x[1]{6}=1の再分散を行なう。なお、x[1][1]{6}を、x[1]{6}のサーバ1への分散値とし、x[2][1]{6}を、x[1]{6}のサーバ2への分散値とする。すなわち、(x[2][1]{6}-x[1][1]{6})mod2=x[1]{6}を満たす、x[2][1]{6}およびx[1][1]{6}を計算し、x[2][1]{6}をサーバ2へ送付する。
  ここでは、x[1][1]{6}=1、 x[2][1]{6}=0とする。
  (x[2]{6}=1の再分散)
  サーバ2によって、x[2]{6}=1の再分散を行なう。なお、x[1][2]{6}を、x[2]{6}のサーバ1への分散値とし、x[2][2]{6}を、x[2]{6}のサーバ2への分散値とする。すなわち、(x[2][2]{6}-x[1][2]{6})mod2=x[2]{6}を満たす、x[2][2]{6}およびx[1][2]{6}を計算し、x[1][2]{6}をサーバ1へ送付する。
  ここでは、x[1][2]{6}=1、 x[2][2]{6}=0とする。
 (6桁目のキャリー生成)
 以上の処理によって、6桁目のシェアが計算できたが、7桁目を計算するために6桁目から7桁目への桁上がり(キャリー)を計算する。6桁目からのキャリーであるc{6}は、x[1]{6}, x[2]{6}, cに関連し、表3の真理値表によって定まる。
Figure JPOXMLDOC01-appb-T000003
 以上の真理値表は、
 c{6}=(c+(x[1]{6}+x[2]{6})(x[2]{6}+c+1))mod2=(c+g*h)mod2 によって定まる。ここで、g=(x[1]{6}+x[2]{6})、h=(x[2]{6}+c+1)である。この処理を秘密計算により計算する。
  (gのシェアの計算)
  g=x[1]{6}+x[2]{6}により、g[1]、g[2]をそれぞれ計算する。
  サーバ1において、g[1]=(x[1][1]{6}+x[1][2]{6})mod2=(1+1)mod2=0 を算出する。
  サーバ2において、g[2]=(x{2}[1]{6}+x{2}[2]{6})mod2=(0+0)mod2=0 を算出する。
  (hのシェアの計算)
  h=x[2]{6}+c+1により、h[1]、h[2]をそれぞれ計算する。
  サーバ1において、h[1]=(x[1][2]{6}+c[1])mod2=(1+1)mod2=0 を算出する。
  サーバ2において、h[2]=(x[2][2]{6}+c[2]+1)mod2=(0+0+1)mod2=1 を算出する。
  (g*hの秘密計算)
  g*hの秘密計算では、g*h=p*q+(g-p)*q+(h-q)*p+(g-p)*(h-q)であることを利用する。そして、サーバ間通信のため、例えば、p=q=r=1とし、p[1]=1, p[2]=0, q[1]=1, q[2]=0, r[1]=0, r[2]=1が事前に共通されているとする。サーバ1は、p[1],q[1],r[1]を有し、サーバ2はp[2],q[2],r[2]を有する。
   (g-pの秘密計算)
   サーバ1において、(g[1]-p[1])mod2=(0-1)mod2=1 を算出して、サーバ2に送付する。
   サーバ2において、(g[2]-p[2])mod2=(0-0)mod2=0 を算出して、サーバ1に送付する。
   そして、サーバ1とサーバ2とのそれぞれにおいて、(g[2]-p[2]-(g[1]-p[1]))mod2を計算し、(g-p)=1を得る。
   (h-qの秘密計算)
   サーバ1において、(h[1]-q[1])mod2=(0-1)mod2=1 を算出して、サーバ2に送付する。
   サーバ2において、(h[2]-q[2])mod2=(1-0)mod2=1 を算出して、サーバ1に送付する。
   そして、サーバ1とサーバ2とのそれぞれにおいて、(h[2]-q[2]-(h[1]-q[1]))mod2を計算し、(f-q)=0を得る。
   (g*hのシェアgh[1]とgh[2]との計算)
   サーバ1において、gh[1]=(r[1]+(g-p)*q[1]+(h-q)*p[1])mod2=(0+1*1+0*1)mod2=1 を算出する。
   サーバ2において、gh[2]=(r[2]+(g-p)*q[2]+(h-q)*p[2]+(g-p)*(h-q))mod2=(1+1*0+0*0+1*0)mod2=1 を算出する。
  (c{6}のシェアの計算)
  サーバ1において、c[1]{6}=(c[1]+gh[1])mod2=(1+1)mod2=0 を算出する。
  サーバ2において、c[2]{6}=(c[2]+gh[2])mod2=(0+1)mod2=1 を算出する。
 《拡張結果》
 以上の手順を繰り返して用い、以下の7桁目~10桁目の値を計算する。
x[1]{7} =0, c[1]{7} =1、 x[2]{7} =0, c[2]{7} =0
x[1]{8} =1, c[1]{8} =1、 x[2]{8} =1, c[2]{8} =0
x[1]{9} =1, c[1]{9} =1、 x[2]{9} =1, c[2]{9} =0
x[1]{10}=1, c[1]{10}=0、 x[2]{10}=1, c[2]{10}=1
 以上の情報を、5桁のx'のシェアの上位桁につなげ、桁を10桁に伸ばしたx'(10桁)のシェア、c'(キャリー)のシェア、および、s'(符号)のシェアを得る。なお、符号は変更されない。
 x'[1]           : 1110111000
 x'[2]           : 1110110100
 c'[1]= c[1]{10} : 0
 c'[2]= c[2]{10} : 1
 s'[1]           : 0
 s'[2]           : 1
を得る。
 同様に、5桁のy'のシェアの桁を上位に伸ばし、桁を10桁に伸ばしたy'(10桁)のシェア、d'(キャリー)のシェア、および、t'(符号)のシェアを得る。なお、符号は変更されない。
 y'[1]           : 0100000100
 y'[2]           : 0100001001
 d'[1]= d[1]{10} : 1
 d'[2]= d[2]{10} : 1
 t'[1]           : 0
 t'[2]           : 0
 《秘密乗算》
 次に、例えば、p=0110111000, q=1101011010, r=(p*q)mod2^10=1010110000をサーバ1とサーバ2とに分散した値、p[1]=1000110011, p[2]=1111101011, q[1]=1110011010, q[2]=1011110100, r[1]=1111110000, r[2]=1010100000を用いて、拡張したx'とy'の掛け算を実行する。サーバ1はp[1],q[1],r[1]を有し、サーバ2はp[2],q[2],r[2]を有する。
 そして、サーバ1の乗算分散値として、x'y'[1]=(r[1]+(x'-p)*q[1]+(y'-q)*p[1])mod2^10を算出し、サーバ2の乗算分散値として、x'y'[2]=(r[2]+(x'-p)*q[2]+(y'-q)*p[2]+(x'-p)*(y'-q))mod2^10を算出する。
  (x'-pに相当する値の秘密計算)
 サーバ1において、(x'[1]-p[1])mod2^10=0110000101を算出し、サーバ2に送付する。
 サーバ2において、(x'[2]-p[2])mod2^10=1111001001を算出し、サーバ1に送付する。
 サーバ1およびサーバ2のそれぞれにおいて、(x'[2]-p[2]-(x'[1]-p[1]))mod2^10を計算して、(x'-p)に相当する値=1001000100を得る。
  (y'-qに相当する値の秘密計算)
 サーバ1において、(y'[1]-q[1])mod2^10=0101101010を算出し、サーバ2に送付する。
 サーバ2において、(y'[2]-q[2])mod2^10=1000010101を算出して、サーバ1に送付する。
 サーバ1およびサーバ2のそれぞれにおいて、(y'[2]-q[2]-(y'[1]-q[1]))mod2^10を計算して、(y'-q)に相当する値=0010101011を得る。
  (乗算結果のシェア算出)
 サーバ1において、x'y'[1]=(r[1]+(x'-p)*q[1]+(y'-q)*p[1])mod2^10=0011101001を算出して、乗算結果のサーバ1のシェアとする。
 サーバ2において、x'y'[2]=(r[2]+(x'-p)*q[2]+(y'-q)*p[2]+(x'-p)*(y'-q))mod2^10=0011010101を算出して、乗算結果のサーバ1のシェアとする。
 なお、x'y'[1]とx'y'[2]とのシェアから、(0011010101-0011101001)mod2^10を計算すると、桁を拡張した秘密乗算結果の1111101100が復元されることが分かる。
 《秘密乗算の後処理》
 (桁の切り捨て処理)
 各サーバのシェアに対して、下位1桁と上位4桁とを切除して長さを揃える。具体的には、x'y'[1]の2桁目から6桁目を切り出し、xy'[1]=10100とする。また、x'y'[2]の2桁目から6桁目を切り出し、xy'[2]=01010とする。これらが乗算結果のデータ値のシェアである。
 (新しいキャリーの計算)
 xy'[1]とxy'[2]の各桁と各桁に対するキャリーの分散値から次の桁へのキャリーの分散値を、下位桁から計算すればよい。この秘密計算は、先に桁の拡張を行った際に用いたものと同じ方法でよい。ただし、1桁目のキャリーは0が分散された値を決定的に用いる。仮にサーバ1が所有する値をc[1]、サーバ2が所有する値をc[2]とするならば、(0,0)の組み合わせか、(1,1)の組み合わせのいずれかを使用することを定めておけばよい。ここでは,サーバ1のキャリーのシェアをe[1]=1、サーバ2のキャリーのシェアをe[2]=0とする。
 (新しい符号の計算)
 xy'の符号は、(xの符号+yの符号)mod2の秘密計算で求まる。これは、各サーバがxの符号とyの符号のシェアとの和をとってmod2を計算すればよい。今回の場合、xの符号であるs=1が、s[1]=0とs[2]=1とに分散されており、yの符号であるt=0が、t[1]=0とt[2]=0とに分散されている。x*yの符号のサーバ1のシェアu[1]は、(s[1]+t[1])mod2=0、x*yの符号のサーバ2のシェアu[2]は、(s[2]+t[2])mod2=1となる。したがって、(u[2]-u[1])mod2=1となって、xyの符号となっていることが確認できる。
 《最終乗算結果》
 サーバ1は、xy'[1]=10100, e[1]=1, u[1]=0を有し、
 サーバ2は、xy'[2]=01010, e[2]=0, u[2]=1を有する。
 これらが固定小数点数xとyを掛けた結果のシェアである。(01010-10100)mod2^5=10110であり、これは、-5.0に相当する。このように、秘密乗算により数値を秘匿したまま、正しい計算結果が得られていることが分かる。なお、桁を切り捨てることによって誤差が生じる可能性がある。
 本実施形態によれば、各固定小数点数の分散データ値と分散符号値と分散キャリー値とを生成して、分散データ値の秘密乗算と分散キャリー値の秘密計算とを独立させたので、被計算値や計算結果や計算途中の値を知ることができない秘密乗算を、全体の通信量を抑えて実行することができる。
 例えば、上記具体例における、5ビットの固定小数点数においては、次のような通信量で秘密乗算が可能となった。
 まず、10ビットの拡張固定小数点数の拡張分散データ値と拡張分散キャリー値の秘密計算時の通信量は、1ビット当たり6ビットで、5ビット拡張で2つの拡張固定小数点数なので、60(=6×5×2)ビットとなる。次に、10ビットの拡張固定小数点数の分散データ値の秘密乗算においては、40(10×4)ビットとなる。また、秘密乗算結果の分散キャリー値の秘密計算を上記拡張処理と同等とすると、60ビットとなる。
 したがって、秘密乗算における秘密計算装置間の通信量は、固定小数点数の1ビット当たり32(={60+40+60}/5)ビットとなり、[非特許文献4]における1ビット当たり数百ビットの通信量を大幅に削減することができた。
 [他の実施形態]
 なお、本実施形態では、加法型(2,2)法を用いることを前提に固定小数点数の分散と秘密乗算とについて説明した。しかしながら、加法型(2,2)法の代わりに、他の加法型(k,n)法や加法型(k,n)法に基づく秘密計算法によっても、固定小数点数の分散と秘密乗算とが実行でき、本発明と同様の全体の通信量を抑えるという効果を奏することができる。すなわち、本発明の固定小数点数の分散情報は、データ値、符号、キャリーに分けて分散されるが、これらのそれぞれを加法型(k,n)法で分散し、秘密計算も分散処理に用いた加法型(k,n)法に対応する方法で実行する構成である。
 また、本実施形態では、各分散値を秘密計算装置内の記憶部に記憶したが、記憶装置を秘密計算装置の外部に設けて、秘密計算装置は秘密計算を集中処理してもよい。
 また、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
 また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるWWW(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体(non-transitory computer readable medium)は本発明の範疇に含まれる。
 [実施形態の他の表現]
 上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
 少なくとも2つの固定小数点数から、各固定小数点数を加法型の秘密分散法を用いて分散した分散データ値と、分散符号値と、分散キャリー値と、を生成する分散情報生成装置と、
 前記各固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を、秘密を保持しながら生成する秘密桁拡張手段と、
 分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算手段と、
 を有する少なくとも2台の秘密計算装置を含む秘密計算装置群と、
 を備える、秘密計算システム。
(付記2)
 前記分散情報生成装置は、
  前記少なくとも2つの固定小数点数から、前記固定小数点数のデータ値を加法型の秘密分散法を用いて分散した分散データ値と、前記固定小数点数の符号を前記加法型の秘密分散法を用いて分散した分散符号値と、前記データ値を分散した際に発生したキャリー値を、前記加法型の秘密分散法を用いて分散した分散キャリー値と、をそれぞれ生成する分散情報生成手段を有し、
 前記秘密計算装置群は、
  第1固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した第1拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、第2固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した第2拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成する秘密桁拡張手段と、
  前記第1拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値と、前記第2拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを用いて、前記第1拡張固定小数点数と前記第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算手段と、
 を有する、付記1に記載の秘密計算システム。
(付記3)
 前記秘密計算装置群は、それぞれ分散された値を記憶する少なくとも第1秘密計算装置と第2秘密計算装置とを備え、前記少なくとも第1秘密計算装置と第2秘密計算装置との間でのデータの秘密交換を伴って前記秘密桁拡張手段による桁拡張処理および前記秘密乗算手段による乗算処理を実行し、
 前記データの秘密交換は、前記データと同じ桁の少なくとも2つのランダム数と該ランダム数の積とを、加法型の秘密分散法を用いて前記第1秘密計算装置と前記第2秘密計算装置とに分散し、分散された数を用いて実行される、付記1または2に記載の秘密計算システム。
(付記4)
 前記秘密乗算手段は、
  前記拡張乗算結果の拡張分散データ値の下位桁を切除する下位桁切除手段と、
  前記拡張乗算結果の分散符号値を抽出する符号抽出手段と、
  前記拡張乗算結果の分散キャリー値を抽出するキャリー抽出手段と、
 を有する付記1乃至3のいずれか1項に記載の秘密計算システム。
(付記5)
 前記秘密桁拡張手段は、
  1桁の2つのランダム数と前記ランダム数の積とを、加法型の秘密分散法を用いて前記第1秘密計算装置と前記第2秘密計算装置とに分散するランダム数分散手段と、
  前記第1秘密計算装置において、前記固定小数点数の第1分散データ値の最上位桁の値と、第1分散符号値と、第1分散キャリー値とから、(最上位+1)桁の第1分散データ値を算出し、前記第2秘密計算装置において、前記固定小数点数の第2分散データ値の最上位桁の値と、第2分散符号値と、第2分散キャリー値とから、(最上位+1)桁の第2分散データ値を算出する拡張桁データ生成手段と、
  算出された(最上位+1)桁の第1分散データ値および第2分散データ値のそれぞれを、前記第1秘密計算装置と前記第2秘密計算装置とに分散する拡張桁データ分散手段と、
  前記分散された(最上位+1)桁の第1分散データ値および第2分散データ値と、最上位桁の分散キャリー値と、前記2つのランダム数および前記ランダム数の積の分散ランダム数とを用いて、前記第1秘密計算装置と前記第2秘密計算装置とが協働して、(最上位+1)桁の第1分散キャリー値と第2分散キャリー値とを生成する拡張桁キャリー生成手段と、
  算出された(最上位+1)桁の第1分散キャリー値および第2分散キャリー値のそれぞれを、前記第1秘密計算装置と前記第2秘密計算装置とに分散する拡張桁キャリー分散手段と、
  前記拡張桁データ生成手段による上位桁の分散データ値の算出と、前記拡張桁データ分散手段による上位桁の分散データ値の分散と、前記拡張桁キャリー生成手段による上位桁の分散キャリー値の算出と、前記拡張桁キャリー分散手段による上位桁の分散キャリー値の分散とを上位桁に向かって繰り返し、算出された拡張桁数の第1分散データ値を前記固定小数点数の第1分散データ値の上位に追加して前記拡張固定小数点数の第1拡張分散データ値とし、算出された拡張最上位桁の拡張分散キャリー値を前記拡張固定小数点数の第1拡張分散キャリー値とし、算出された拡張桁数の第2分散データ値を前記固定小数点数の第2分散データ値の上位に追加して前記拡張固定小数点数の第2拡張分散データ値とし、算出された拡張最上位桁の拡張分散キャリー値を前記拡張固定小数点数の第2拡張分散キャリー値とする、拡張固定小数点数生成手段と、
 を有し、
 前記第1固定小数点数および前記第2固定小数点数のそれぞれに対して、前記第1拡張分散データ値と前記第2拡張分散データ値、および、第1拡張分散キャリー値と第2拡張分散キャリー値、を生成する、付記3または4に記載の秘密計算システム。
(付記6)
 前記秘密乗算手段は、
  拡張固定小数点数と同じ桁の2つのランダム数と前記ランダム数の積とを、加法型の秘密分散法を用いて前記第1秘密計算装置と前記第2秘密計算装置とに分散するランダム数分散手段と、
  前記第1拡張固定小数点数および前記第2拡張固定小数点数の拡張分散データ値と、前記2つのランダム数および前記ランダム数の積の分散ランダム数とを用いて、前記第1秘密計算装置と前記第2秘密計算装置とが協働して秘密を保持しながら秘密乗算を実行し、前記拡張乗算結果の拡張分散データ値を算出する拡張乗算手段と、
  前記拡張乗算結果の拡張分散データ値の桁を調整して、前記乗算結果の分散データ値を生成する桁調整手段と、
 を有する付記3乃至5のいずれか1項に記載の秘密計算システム。
(付記7)
 前記分散情報生成装置が生成した前記分散情報を記憶するための記憶装置をさらに備える、付記1乃至6のいずれか1項に記載の秘密計算システム。
(付記8)
 少なくとも2つの固定小数点数から、各固定小数点数を加法型の秘密分散法を用いて分散した分散データ値と、分散符号値と、分散キャリー値と、を生成する分散情報生成ステップと、
 前記各固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を、秘密を保持しながら生成する秘密桁拡張ステップと、
 分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算ステップと、
 を含む秘密計算システムの秘密計算方法。
(付記9)
 少なくとも2つの固定小数点数のデータ値を、秘密乗算のために加法型の秘密分散法を用いて分散するデータ値分散手段と、
 前記少なくとも2つの固定小数点数の符号を、前記秘密乗算のために加法型の秘密分散法を用いて分散する符号分散手段と、
 前記少なくとも2つの固定小数点数のデータ値を加法型の秘密分散法を用いて分散した際に発生したキャリーを、前記秘密乗算のために加法型の秘密分散法を用いて分散するキャリー分散手段と、
 を備える分散情報生成装置。
(付記10)
 前記加法型の秘密分散法は、秘密計算法が利用可能な加法型(2,2)法である、付記9に記載の分散情報生成装置。
(付記11)
 少なくとも2つの固定小数点数のデータ値を、秘密乗算のために加法型の秘密分散法を用いて分散するデータ値分散ステップと、
 前記少なくとも2つの固定小数点数の符号を、前記秘密浄罪のために加法型の秘密分散法を用いて分散する符号分散ステップと、
 前記少なくとも2つの固定小数点数のデータ値を加法型の秘密分散法を用いて分散した際に発生したキャリーを、前記秘密乗算のために加法型の秘密分散法を用いて分散するキャリー分散ステップと、
 を含む分散情報生成方法。
(付記12)
 少なくとも2つの固定小数点数のデータ値を、秘密乗算のために加法型の秘密分散法を用いて分散するデータ値分散ステップと、
 前記少なくとも2つの固定小数点数の符号を、前記秘密乗算のために加法型の秘密分散法を用いて分散する符号分散ステップと、
 前記少なくとも2つの固定小数点数のデータ値を加法型の秘密分散法を用いて分散した際に発生したキャリーを、前記秘密乗算のために加法型の秘密分散法を用いて分散するキャリー分散ステップと、
 をコンピュータに実行させる分散情報生成プログラム。
(付記13)
 少なくとも2つの固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、各固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を生成する秘密桁拡張手段と、
 各拡張固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算手段と、
 を備える秘密計算装置。
(付記14)
 前記秘密桁拡張手段は、
  第1固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、前記第1固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した第1拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、第2固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、前記固定第2小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した第2拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、
 前記秘密乗算手段は、
  前記第1拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値と、前記第2拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを用い、前記第1拡張固定第1小数点数および前記第2拡張固定小数点数の他の分散値により生成された拡張乗算結果の拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、前記第1拡張固定小数点数と前記第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、前記拡張乗算結果の分散値の桁数を調整して秘密乗算結果の分散値とする、
 付記13に記載の秘密計算装置。
(付記15)
 前記秘密計算装置は、他の秘密計算装置との間でのデータの秘密交換を伴って前記秘密桁拡張手段による桁拡張処理および前記秘密乗算手段による乗算処理を実行し、
 前記データの秘密交換は、前記データと同じ桁の少なくとも2つのランダム数と該ランダム数の積とを、加法型の秘密分散法を用いて前記秘密計算装置と前記他の秘密計算装置とに分散し、分散された数を用いて実行される、付記13または14に記載の秘密計算装置。
(付記16)
 前記秘密乗算手段は、
  前記拡張乗算結果の拡張分散データ値の下位桁を切除する下位桁切除手段と、
  前記拡張乗算結果の分散符号値を抽出する符号抽出手段と、
  前記拡張乗算結果の分散キャリー値を抽出するキャリー抽出手段と、
 を有する付記13乃至15のいずれか1項に記載の秘密計算装置。
(付記17)
 前記秘密桁拡張手段は、
  1桁の2つのランダム数と前記ランダム数の積とが加法型の秘密分散法を用いて分散された分散ランダム数を取得するランダム数取得手段と、
  前記固定小数点数の第1分散データ値の最上位桁の値と、第1分散符号値と、第1分散キャリー値とから、(最上位+1)桁の第1分散データ値を算出する拡張桁データ生成手段と、
  算出された前記(最上位+1)桁の第1分散データ値を、前記秘密計算装置と前記他の秘密計算装置とに分散する拡張桁データ分散手段と、
  前記他の秘密計算装置において算出された前記固定小数点数の(最上位+1)桁の第2分散データ値の分散値を取得する拡張桁データ取得手段と、
  前記(最上位+1)桁の第1分散データ値の分散値および前記(最上位+1)桁の第2分散データ値の分散値と、最上位桁の分散キャリー値と、前記2つのランダム数および前記ランダム数の積の分散ランダム数とを用いて、(最上位+1)桁の第1分散キャリー値を生成する拡張桁キャリー生成手段と、
  算出された前記(最上位+1)桁の第1分散キャリー値を、前記第1秘密計算装置と前記第2秘密計算装置とに分散する拡張桁キャリー分散手段と、
  前記拡張桁データ生成手段による上位桁の分散データ値の算出と、前記拡張桁データ分散手段による上位桁の分散データ値の分散と、前記拡張桁キャリー生成手段による上位桁の分散キャリー値の算出と、前記拡張桁キャリー分散手段による上位桁の分散キャリー値の分散とを上位桁に向かって繰り返し、算出された拡張桁数の第1分散データ値を前記固定小数点数の第1分散データ値の上位に追加して前記拡張固定小数点数の第1拡張分散データ値とし、算出された拡張最上位桁の拡張分散キャリー値を前記拡張固定小数点数の第1拡張分散キャリー値とする、拡張固定小数点数生成手段と、
 を有し、
 前記第1固定小数点数および前記第2固定小数点数のそれぞれに対して、前記第1拡張分散データ値および第1拡張分散キャリー値を生成する、付記15または16に記載の秘密計算装置。
(付記18)
 前記秘密乗算手段は、
  拡張固定小数点数と同じ桁の2つのランダム数と前記ランダム数の積とを、加法型の秘密分散法を用いて分散した分散ランダム数を取得するランダム数取得手段と、
  前記2つのランダム数および前記ランダム数の積の分散ランダム数により秘匿化された、前記第1拡張固定小数点数および前記第2拡張固定小数点数の第2拡張分散データ値を前記他の秘密計算装置から取得する拡張分散データ値取得手段と、
  前記第1拡張固定小数点数および前記第2拡張固定小数点数の第1拡張分散データ値と、前記秘匿化された前記第1拡張固定小数点数および前記第2拡張固定小数点数の第2拡張分散データ値とに基づいて、前記拡張乗算結果の第1拡張分散データ値を算出する拡張乗算手段と、
  前記拡張乗算結果の第1拡張分散データ値の桁を調整して、前記乗算結果の第1分散データ値を生成する桁調整手段と、
 を有する付記17に記載の秘密計算装置。
(付記19)
 少なくとも2つの固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、各固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を生成する秘密桁拡張ステップと、
 各拡張固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算ステップと、
 を含む秘密計算装置の秘密計算方法。
(付記20)
 少なくとも2つの固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、各固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を生成する秘密桁拡張ステップと、
 各拡張固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算ステップと、
 をコンピュータに実行させる秘密計算プログラム。
 この出願は、2016年8月18日に出願された日本国特許出願 特願2016-160383号を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (20)

  1.  少なくとも2つの固定小数点数から、各固定小数点数を加法型の秘密分散法を用いて分散した分散データ値と、分散符号値と、分散キャリー値と、を生成する分散情報生成装置と、
     前記各固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を、秘密を保持しながら生成する秘密桁拡張手段と、
     分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算手段と、
     を有する少なくとも2台の秘密計算装置を含む秘密計算装置群と、
     を備える、秘密計算システム。
  2.  前記分散情報生成装置は、
      前記少なくとも2つの固定小数点数から、前記固定小数点数のデータ値を加法型の秘密分散法を用いて分散した分散データ値と、前記固定小数点数の符号を前記加法型の秘密分散法を用いて分散した分散符号値と、前記データ値を分散した際に発生したキャリー値を、前記加法型の秘密分散法を用いて分散した分散キャリー値と、をそれぞれ生成する分散情報生成手段を有し、
     前記秘密計算装置群は、
      第1固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した第1拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、第2固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した第2拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成する秘密桁拡張手段と、
      前記第1拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値と、前記第2拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを用いて、前記第1拡張固定小数点数と前記第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算手段と、
     を有する、請求項1に記載の秘密計算システム。
  3.  前記秘密計算装置群は、それぞれ分散された値を記憶する少なくとも第1秘密計算装置と第2秘密計算装置とを備え、前記少なくとも第1秘密計算装置と第2秘密計算装置との間でのデータの秘密交換を伴って前記秘密桁拡張手段による桁拡張処理および前記秘密乗算手段による乗算処理を実行し、
     前記データの秘密交換は、前記データと同じ桁の少なくとも2つのランダム数と該ランダム数の積とを、加法型の秘密分散法を用いて前記第1秘密計算装置と前記第2秘密計算装置とに分散し、分散された数を用いて実行される、請求項1または2に記載の秘密計算システム。
  4.  前記秘密乗算手段は、
      前記拡張乗算結果の拡張分散データ値の下位桁を切除する下位桁切除手段と、
      前記拡張乗算結果の分散符号値を抽出する符号抽出手段と、
      前記拡張乗算結果の分散キャリー値を抽出するキャリー抽出手段と、
     を有する請求項1乃至3のいずれか1項に記載の秘密計算システム。
  5.  前記秘密桁拡張手段は、
      1桁の2つのランダム数と前記ランダム数の積とを、加法型の秘密分散法を用いて前記第1秘密計算装置と前記第2秘密計算装置とに分散するランダム数分散手段と、
      前記第1秘密計算装置において、前記固定小数点数の第1分散データ値の最上位桁の値と、第1分散符号値と、第1分散キャリー値とから、(最上位+1)桁の第1分散データ値を算出し、前記第2秘密計算装置において、前記固定小数点数の第2分散データ値の最上位桁の値と、第2分散符号値と、第2分散キャリー値とから、(最上位+1)桁の第2分散データ値を算出する拡張桁データ生成手段と、
      算出された(最上位+1)桁の第1分散データ値および第2分散データ値のそれぞれを、前記第1秘密計算装置と前記第2秘密計算装置とに分散する拡張桁データ分散手段と、
      前記分散された(最上位+1)桁の第1分散データ値および第2分散データ値と、最上位桁の分散キャリー値と、前記2つのランダム数および前記ランダム数の積の分散ランダム数とを用いて、前記第1秘密計算装置と前記第2秘密計算装置とが協働して、(最上位+1)桁の第1分散キャリー値と第2分散キャリー値とを生成する拡張桁キャリー生成手段と、
      算出された(最上位+1)桁の第1分散キャリー値および第2分散キャリー値のそれぞれを、前記第1秘密計算装置と前記第2秘密計算装置とに分散する拡張桁キャリー分散手段と、
      前記拡張桁データ生成手段による上位桁の分散データ値の算出と、前記拡張桁データ分散手段による上位桁の分散データ値の分散と、前記拡張桁キャリー生成手段による上位桁の分散キャリー値の算出と、前記拡張桁キャリー分散手段による上位桁の分散キャリー値の分散とを上位桁に向かって繰り返し、算出された拡張桁数の第1分散データ値を前記固定小数点数の第1分散データ値の上位に追加して前記拡張固定小数点数の第1拡張分散データ値とし、算出された拡張最上位桁の拡張分散キャリー値を前記拡張固定小数点数の第1拡張分散キャリー値とし、算出された拡張桁数の第2分散データ値を前記固定小数点数の第2分散データ値の上位に追加して前記拡張固定小数点数の第2拡張分散データ値とし、算出された拡張最上位桁の拡張分散キャリー値を前記拡張固定小数点数の第2拡張分散キャリー値とする、拡張固定小数点数生成手段と、
     を有し、
     前記第1固定小数点数および前記第2固定小数点数のそれぞれに対して、前記第1拡張分散データ値と前記第2拡張分散データ値、および、第1拡張分散キャリー値と第2拡張分散キャリー値、を生成する、請求項3または4に記載の秘密計算システム。
  6.  前記秘密乗算手段は、
      拡張固定小数点数と同じ桁の2つのランダム数と前記ランダム数の積とを、加法型の秘密分散法を用いて前記第1秘密計算装置と前記第2秘密計算装置とに分散するランダム数分散手段と、
      前記第1拡張固定小数点数および前記第2拡張固定小数点数の拡張分散データ値と、前記2つのランダム数および前記ランダム数の積の分散ランダム数とを用いて、前記第1秘密計算装置と前記第2秘密計算装置とが協働して秘密を保持しながら秘密乗算を実行し、前記拡張乗算結果の拡張分散データ値を算出する拡張乗算手段と、
      前記拡張乗算結果の拡張分散データ値の桁を調整して、前記乗算結果の分散データ値を生成する桁調整手段と、
     を有する請求項3乃至5のいずれか1項に記載の秘密計算システム。
  7.  前記分散情報生成装置が生成した前記分散情報を記憶するための記憶装置をさらに備える、請求項1乃至6のいずれか1項に記載の秘密計算システム。
  8.  少なくとも2つの固定小数点数から、各固定小数点数を加法型の秘密分散法を用いて分散した分散データ値と、分散符号値と、分散キャリー値と、を生成する分散情報生成ステップと、
     前記各固定小数点数の分散データ値と分散符号値と分散キャリー値とを用いて、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を、秘密を保持しながら生成する秘密桁拡張ステップと、
     分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを秘密を保持しながら生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算ステップと、
     を含む秘密計算システムの秘密計算方法。
  9.  少なくとも2つの固定小数点数のデータ値を、秘密乗算のために加法型の秘密分散法を用いて分散するデータ値分散手段と、
     前記少なくとも2つの固定小数点数の符号を、前記秘密乗算のために加法型の秘密分散法を用いて分散する符号分散手段と、
     前記少なくとも2つの固定小数点数のデータ値を加法型の秘密分散法を用いて分散した際に発生したキャリーを、前記秘密乗算のために加法型の秘密分散法を用いて分散するキャリー分散手段と、
     を備える分散情報生成装置。
  10.  前記加法型の秘密分散法は、秘密計算法が利用可能な加法型(2,2)法である、請求項9に記載の分散情報生成装置。
  11.  少なくとも2つの固定小数点数のデータ値を、秘密乗算のために加法型の秘密分散法を用いて分散するデータ値分散ステップと、
     前記少なくとも2つの固定小数点数の符号を、前記秘密浄罪のために加法型の秘密分散法を用いて分散する符号分散ステップと、
     前記少なくとも2つの固定小数点数のデータ値を加法型の秘密分散法を用いて分散した際に発生したキャリーを、前記秘密乗算のために加法型の秘密分散法を用いて分散するキャリー分散ステップと、
     を含む分散情報生成方法。
  12.  少なくとも2つの固定小数点数のデータ値を、秘密乗算のために加法型の秘密分散法を用いて分散するデータ値分散ステップと、
     前記少なくとも2つの固定小数点数の符号を、前記秘密乗算のために加法型の秘密分散法を用いて分散する符号分散ステップと、
     前記少なくとも2つの固定小数点数のデータ値を加法型の秘密分散法を用いて分散した際に発生したキャリーを、前記秘密乗算のために加法型の秘密分散法を用いて分散するキャリー分散ステップと、
     をコンピュータに実行させる分散情報生成プログラム。
  13.  少なくとも2つの固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、各固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を生成する秘密桁拡張手段と、
     各拡張固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算手段と、
     を備える秘密計算装置。
  14.  前記秘密桁拡張手段は、
      第1固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、前記第1固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した第1拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、第2固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、前記固定第2小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した第2拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、
     前記秘密乗算手段は、
      前記第1拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値と、前記第2拡張固定小数点数の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを用い、前記第1拡張固定第1小数点数および前記第2拡張固定小数点数の他の分散値により生成された拡張乗算結果の拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、前記第1拡張固定小数点数と前記第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、前記拡張乗算結果の分散値の桁数を調整して秘密乗算結果の分散値とする、
     請求項13に記載の秘密計算装置。
  15.  前記秘密計算装置は、他の秘密計算装置との間でのデータの秘密交換を伴って前記秘密桁拡張手段による桁拡張処理および前記秘密乗算手段による乗算処理を実行し、
     前記データの秘密交換は、前記データと同じ桁の少なくとも2つのランダム数と該ランダム数の積とを、加法型の秘密分散法を用いて前記秘密計算装置と前記他の秘密計算装置とに分散し、分散された数を用いて実行される、請求項13または14に記載の秘密計算装置。
  16.  前記秘密乗算手段は、
      前記拡張乗算結果の拡張分散データ値の下位桁を切除する下位桁切除手段と、
      前記拡張乗算結果の分散符号値を抽出する符号抽出手段と、
      前記拡張乗算結果の分散キャリー値を抽出するキャリー抽出手段と、
     を有する請求項13乃至15のいずれか1項に記載の秘密計算装置。
  17.  前記秘密桁拡張手段は、
      1桁の2つのランダム数と前記ランダム数の積とが加法型の秘密分散法を用いて分散された分散ランダム数を取得するランダム数取得手段と、
      前記固定小数点数の第1分散データ値の最上位桁の値と、第1分散符号値と、第1分散キャリー値とから、(最上位+1)桁の第1分散データ値を算出する拡張桁データ生成手段と、
      算出された前記(最上位+1)桁の第1分散データ値を、前記秘密計算装置と前記他の秘密計算装置とに分散する拡張桁データ分散手段と、
      前記他の秘密計算装置において算出された前記固定小数点数の(最上位+1)桁の第2分散データ値の分散値を取得する拡張桁データ取得手段と、
      前記(最上位+1)桁の第1分散データ値の分散値および前記(最上位+1)桁の第2分散データ値の分散値と、最上位桁の分散キャリー値と、前記2つのランダム数および前記ランダム数の積の分散ランダム数とを用いて、(最上位+1)桁の第1分散キャリー値を生成する拡張桁キャリー生成手段と、
      算出された前記(最上位+1)桁の第1分散キャリー値を、前記第1秘密計算装置と前記第2秘密計算装置とに分散する拡張桁キャリー分散手段と、
      前記拡張桁データ生成手段による上位桁の分散データ値の算出と、前記拡張桁データ分散手段による上位桁の分散データ値の分散と、前記拡張桁キャリー生成手段による上位桁の分散キャリー値の算出と、前記拡張桁キャリー分散手段による上位桁の分散キャリー値の分散とを上位桁に向かって繰り返し、算出された拡張桁数の第1分散データ値を前記固定小数点数の第1分散データ値の上位に追加して前記拡張固定小数点数の第1拡張分散データ値とし、算出された拡張最上位桁の拡張分散キャリー値を前記拡張固定小数点数の第1拡張分散キャリー値とする、拡張固定小数点数生成手段と、
     を有し、
     前記第1固定小数点数および前記第2固定小数点数のそれぞれに対して、前記第1拡張分散データ値および第1拡張分散キャリー値を生成する、請求項15または16に記載の秘密計算装置。
  18.  前記秘密乗算手段は、
      拡張固定小数点数と同じ桁の2つのランダム数と前記ランダム数の積とを、加法型の秘密分散法を用いて分散した分散ランダム数を取得するランダム数取得手段と、
      前記2つのランダム数および前記ランダム数の積の分散ランダム数により秘匿化された、前記第1拡張固定小数点数および前記第2拡張固定小数点数の第2拡張分散データ値を前記他の秘密計算装置から取得する拡張分散データ値取得手段と、
      前記第1拡張固定小数点数および前記第2拡張固定小数点数の第1拡張分散データ値と、前記秘匿化された前記第1拡張固定小数点数および前記第2拡張固定小数点数の第2拡張分散データ値とに基づいて、前記拡張乗算結果の第1拡張分散データ値を算出する拡張乗算手段と、
      前記拡張乗算結果の第1拡張分散データ値の桁を調整して、前記乗算結果の第1分散データ値を生成する桁調整手段と、
     を有する請求項17に記載の秘密計算装置。
  19.  少なくとも2つの固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、各固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を生成する秘密桁拡張ステップと、
     各拡張固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算ステップと、
     を含む秘密計算装置の秘密計算方法。
  20.  少なくとも2つの固定小数点数の分散データ値と分散符号値と分散キャリー値とを用い、各固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、桁数を拡張した拡張分散データ値と拡張分散符号値と拡張分散キャリー値とからなる分散された各拡張固定小数点数を生成する秘密桁拡張ステップと、
     各拡張固定小数点数の他の分散値により生成された拡張分散データ値および拡張分散キャリーを、秘密を保持して参照しながら、分散された第1拡張固定小数点数と第2拡張固定小数点数とを乗算した拡張乗算結果の拡張分散データ値と拡張分散符号値と拡張分散キャリー値とを生成し、前記拡張乗算結果の拡張分散データ値の桁数を調整して秘密乗算結果の分散値とする秘密乗算ステップと、
     をコンピュータに実行させる秘密計算プログラム。
PCT/JP2017/024873 2016-08-18 2017-07-06 秘密計算システム、秘密計算方法、秘密計算装置、分散情報生成装置およびそれらの方法とプログラム WO2018034079A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018534297A JP6988807B2 (ja) 2016-08-18 2017-07-06 秘密計算システム、秘密計算方法、秘密計算装置および秘密計算プログラム
US16/325,775 US11042358B2 (en) 2016-08-18 2017-07-06 Secure computation system, secure computation method, secure computation apparatus, distribution information generation apparatus, and methods and programs therefor

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016160383 2016-08-18
JP2016-160383 2016-08-18

Publications (1)

Publication Number Publication Date
WO2018034079A1 true WO2018034079A1 (ja) 2018-02-22

Family

ID=61196737

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/024873 WO2018034079A1 (ja) 2016-08-18 2017-07-06 秘密計算システム、秘密計算方法、秘密計算装置、分散情報生成装置およびそれらの方法とプログラム

Country Status (3)

Country Link
US (1) US11042358B2 (ja)
JP (1) JP6988807B2 (ja)
WO (1) WO2018034079A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020075797A1 (ja) * 2018-10-10 2020-04-16 日本電信電話株式会社 秘密右シフト演算システム、秘密除算システム、それらの方法、秘密計算装置、およびプログラム
CN112487481A (zh) * 2020-12-09 2021-03-12 重庆邮电大学 一种具有隐私保护的可验证多方k-means联邦学习方法
JPWO2021064996A1 (ja) * 2019-10-04 2021-04-08
WO2022079891A1 (ja) * 2020-10-16 2022-04-21 日本電信電話株式会社 秘匿msb正規化システム、分散処理装置、秘匿msb正規化方法、およびプログラム

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4167213B1 (en) * 2017-01-18 2024-03-13 Nippon Telegraph And Telephone Corporation Secret computation method, secret computation system, secret computation apparatus, and program
CN110800034B (zh) * 2017-07-05 2023-05-02 日本电信电话株式会社 秘密计算系统、秘密计算装置、秘密计算方法、程序以及记录介质
SG11202001591UA (en) * 2017-08-30 2020-03-30 Inpher Inc High-precision privacy-preserving real-valued function evaluation
US11436471B2 (en) * 2017-10-13 2022-09-06 Panasonic Intellectual Property Corporation Of America Prediction model sharing method and prediction model sharing system
US10936708B2 (en) * 2018-10-01 2021-03-02 International Business Machines Corporation Biometric data protection
KR20210127168A (ko) 2019-02-22 2021-10-21 인퍼, 인코포레이티드 모듈러 정수를 사용한 보안 다자간 계산을 위한 산술
EP3767501A1 (en) * 2019-07-18 2021-01-20 Hewlett-Packard Development Company, L.P. User authentication
CN111461858B (zh) * 2020-03-10 2023-02-17 支付宝(杭州)信息技术有限公司 基于隐私保护的连乘计算方法、装置、系统和电子设备
CN114422116B (zh) * 2021-12-14 2023-11-28 阿里巴巴(中国)有限公司 数据处理方法及装置
CN116363395B (zh) * 2023-05-15 2023-08-22 北京金睛云华科技有限公司 基于秘密分享的可验证图片相似度识别方法和装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4292835B2 (ja) * 2003-03-13 2009-07-08 沖電気工業株式会社 秘密再構成方法、分散秘密再構成装置、及び秘密再構成システム
WO2008093690A1 (ja) * 2007-02-02 2008-08-07 Nec Corporation 分散情報生成装置、復元装置、復元結果検証装置、秘密情報分散システム、方法およびプログラム
WO2012046692A1 (ja) * 2010-10-06 2012-04-12 日本電信電話株式会社 秘密分散システム、秘密分散装置、秘密分散方法、秘密ソート方法、秘密分散プログラム
US9064123B2 (en) * 2011-03-10 2015-06-23 Nippon Telegraph And Telephone Corporation Secure product-sum combination system, computing apparatus, secure product-sum combination method and program therefor
WO2015053185A1 (ja) * 2013-10-10 2015-04-16 日本電信電話株式会社 秘密商転移装置、秘密ビット分解装置、秘密モジュラス変換装置、秘密商転移方法、秘密ビット分解方法、秘密モジュラス変換方法、プログラム
JP2015194959A (ja) * 2014-03-31 2015-11-05 ソニー株式会社 情報処理装置、情報処理方法及びプログラム
WO2016159357A1 (ja) * 2015-04-03 2016-10-06 日本電気株式会社 秘密計算システム、サーバ装置、秘密計算方法、および、プログラム
JP6006842B1 (ja) * 2015-07-22 2016-10-12 日本電信電話株式会社 秘密計算装置、その方法、およびプログラム
JP6034927B1 (ja) * 2015-07-27 2016-11-30 日本電信電話株式会社 秘密計算システム、秘密計算装置、およびプログラム
CN108140335B (zh) * 2015-10-13 2020-12-29 日本电信电话株式会社 秘密随机数合成装置、秘密随机数合成方法以及记录介质
JP6534778B2 (ja) * 2016-07-06 2019-06-26 日本電信電話株式会社 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
US11080393B2 (en) * 2016-09-30 2021-08-03 Nec Corporation Secure computation system, secure computation apparatus, secure computation method, and secure computation program
EP3566423B1 (en) * 2017-01-06 2020-10-28 Koninklijke Philips N.V. Verification of fixed-point arithmetic
JP7031682B2 (ja) * 2017-10-31 2022-03-08 日本電気株式会社 秘密計算装置、システム、方法、プログラム

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
KAMM, LIINA ET AL.: "Secure floating point arithmetic and private satellite collision analysis", CRYPTOLOGY EPRINT ARCHIVE, December 2013 (2013-12-01), pages 1 - 34, XP035577326, Retrieved from the Internet <URL:https://eprint.iacr.org/2013/850/20131217:154023> [retrieved on 20170926] *
KRIPS, TOOMAS ET AL.: "Hybrid Model of Fixed and Floating Point Numbers in Secure Multiparty Computations", CRYPTOLOGY EPRINT ARCHIVE, December 2014 (2014-12-01), pages 1 - 24, XP061015766, Retrieved from the Internet <URL:https://eprint.iacr.org/2014/221/20141223:154329> [retrieved on 20170926] *
TAKUMA AMADA ET AL.: "Himitsu Keisan o Mochiita Hifuchi Gyoretsu Inshi Bunkai no Koritsuteki na Jitsugen ni Kansuru Ichi Kosatsu", COMPUTER SECURITY SYMPOSIUM 2016 RONBUNSHU, 4 October 2016 (2016-10-04), pages 1056 - 1063 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020075797A1 (ja) * 2018-10-10 2020-04-16 日本電信電話株式会社 秘密右シフト演算システム、秘密除算システム、それらの方法、秘密計算装置、およびプログラム
CN112805770A (zh) * 2018-10-10 2021-05-14 日本电信电话株式会社 秘密右移位运算系统、秘密除法运算系统、它们的方法、秘密计算装置以及程序
JPWO2020075797A1 (ja) * 2018-10-10 2021-09-02 日本電信電話株式会社 秘密右シフト演算システム、秘密除算システム、それらの方法、秘密計算装置、およびプログラム
JP7067633B2 (ja) 2018-10-10 2022-05-16 日本電信電話株式会社 秘密右シフト演算システム、秘密除算システム、それらの方法、秘密計算装置、およびプログラム
EP3866142A4 (en) * 2018-10-10 2022-09-14 Nippon Telegraph And Telephone Corporation SECRET RIGHT SHIFTING CALCULATION SYSTEM, SECRET DIVISION SYSTEM, ASSOCIATED METHOD, SECRET CALCULATION DEVICE, AND PROGRAM
CN112805770B (zh) * 2018-10-10 2023-10-03 日本电信电话株式会社 秘密右移位运算系统及方法、秘密除法运算系统及方法、秘密计算装置以及记录介质
JPWO2021064996A1 (ja) * 2019-10-04 2021-04-08
WO2021064996A1 (ja) * 2019-10-04 2021-04-08 日本電気株式会社 秘密計算システム、秘密計算サーバ、補助サーバ、秘密計算方法及びプログラム
JP7334789B2 (ja) 2019-10-04 2023-08-29 日本電気株式会社 秘密計算システム、秘密計算サーバ、補助サーバ、秘密計算方法及びプログラム
WO2022079891A1 (ja) * 2020-10-16 2022-04-21 日本電信電話株式会社 秘匿msb正規化システム、分散処理装置、秘匿msb正規化方法、およびプログラム
CN112487481A (zh) * 2020-12-09 2021-03-12 重庆邮电大学 一种具有隐私保护的可验证多方k-means联邦学习方法
CN112487481B (zh) * 2020-12-09 2022-06-10 重庆邮电大学 一种具有隐私保护的可验证多方k-means联邦学习方法

Also Published As

Publication number Publication date
JPWO2018034079A1 (ja) 2019-06-13
US20190212986A1 (en) 2019-07-11
JP6988807B2 (ja) 2022-01-05
US11042358B2 (en) 2021-06-22

Similar Documents

Publication Publication Date Title
WO2018034079A1 (ja) 秘密計算システム、秘密計算方法、秘密計算装置、分散情報生成装置およびそれらの方法とプログラム
JP5957120B1 (ja) 秘密分散方法、秘密分散システム、分散装置、およびプログラム
EP2701337B1 (en) Secret sharing method and system
JP6693508B2 (ja) 秘密計算システム、サーバ装置、秘密計算方法、および、プログラム
EP2000900B1 (en) Extending a repetition period of a random sequence
Karpinski et al. Advanced method of factorization of multi-bit numbers based on Fermat's theorem in the system of residual classes
KR20160132943A (ko) 단열 양자 계산을 통한 디지털 로직 제한 문제 해결
RU2013142989A (ru) Утройство для криптографической обработки данных, способ криптографической обработки данных и программа
JP7031682B2 (ja) 秘密計算装置、システム、方法、プログラム
WO2016148281A1 (ja) 秘匿文字列計算システム及び方法と装置並びにプログラム
JP6607257B2 (ja) 秘密計算システム、秘密計算装置、および、秘密計算方法
CN116633526B (zh) 一种数据处理方法、装置、设备及介质
US10536262B2 (en) Electronic generation device
JP2008262040A (ja) 分散情報生成装置、秘密情報復元装置、分散情報生成方法、秘密情報復元方法およびプログラム
JP7173170B2 (ja) 情報処理装置、秘密計算方法及びプログラム
Murguía et al. Matrix approach of an encryption system based on cellular automata and its numerical implementation
WO2020165931A1 (ja) 情報処理装置、秘密計算方法及びプログラム
JP5858938B2 (ja) 計算装置、計算システム、計算方法
Durcheva et al. A public key encryption scheme based on idempotent semirings
Lochter Blockchain as cryptanalytic tool
JP5189799B2 (ja) 秘密情報復元装置、秘密情報復元方法およびプログラム
JP7027060B2 (ja) 秘密分散システム及びその方法
JP2010266632A (ja) 分散情報生成装置、秘密情報復元装置、分散情報生成方法、秘密情報復元方法およびプログラム
Chauvet et al. Key agreement under tropical parallels
JP2010268181A (ja) 分散情報生成装置、秘密情報復元装置、分散情報生成方法、秘密情報復元方法およびプログラム

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2018534297

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17841307

Country of ref document: EP

Kind code of ref document: A1