WO2021149104A1 - 秘密計算装置、秘密計算方法、およびプログラム - Google Patents

秘密計算装置、秘密計算方法、およびプログラム Download PDF

Info

Publication number
WO2021149104A1
WO2021149104A1 PCT/JP2020/001681 JP2020001681W WO2021149104A1 WO 2021149104 A1 WO2021149104 A1 WO 2021149104A1 JP 2020001681 W JP2020001681 W JP 2020001681W WO 2021149104 A1 WO2021149104 A1 WO 2021149104A1
Authority
WO
WIPO (PCT)
Prior art keywords
secret
value
secret sharing
sharing value
calculation
Prior art date
Application number
PCT/JP2020/001681
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 JP2021572126A priority Critical patent/JP7290177B2/ja
Priority to PCT/JP2020/001681 priority patent/WO2021149104A1/ja
Priority to CN202080093455.6A priority patent/CN114981861A/zh
Priority to EP20915962.3A priority patent/EP4095832A4/en
Priority to US17/791,907 priority patent/US20220407682A1/en
Priority to AU2020425196A priority patent/AU2020425196B2/en
Publication of WO2021149104A1 publication Critical patent/WO2021149104A1/ja

Links

Images

Classifications

    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation

Definitions

  • the present invention relates to a technique for approximating a real elementary function in secret calculation.
  • Non-Patent Document 1 discloses a method of calculating elementary functions such as the reciprocal, the square root and its reciprocal, and the exponential function in secret calculation.
  • the present invention has been made in view of these points, and an object of the present invention is to provide a secret calculation technique that can be universally used for many elementary functions only by changing parameters.
  • Secret sharing values by a secret calculation using the secret sharing value [x] real x [y] give [ ⁇ x 2 + ax], real by secret calculation using the secret sharing value [x] and the secret variance [y]
  • x, y, z are real numbers
  • a, b, c, ⁇ , and ⁇ are real number coefficients
  • the secret sharing value of ⁇ is [ ⁇ ].
  • FIG. 1A is a block illustrating the secret calculation device of the first embodiment.
  • FIG. 1B is a flow chart for explaining the secret calculation method of the first embodiment.
  • FIG. 2A is a block illustrating the secret calculation device of the second embodiment.
  • FIG. 2B is a flow chart for explaining the secret calculation method of the second embodiment.
  • FIG. 3A is a block illustrating the secret calculation device of the third embodiment.
  • FIG. 3B is a flow chart for explaining the secret calculation method of the third embodiment.
  • FIG. 4 is a block illustrating the secret calculation device of the fourth embodiment.
  • FIG. 5 is a flow chart for explaining the secret calculation method of the fourth embodiment.
  • FIG. 6 is a table illustrating the calculated parameters for each elementary function.
  • FIG. 7 is a block diagram for explaining a hardware configuration.
  • the elementary function is approximated by a polynomial to perform a secret calculation.
  • many elementary functions can be secretly calculated for general purposes only by changing parameters.
  • the elementary functions handled in this embodiment are not limited, but when the exponential function or logarithmic function is approximated by a polynomial, the higher-order coefficients become very small. In such a case, if the approximation is performed using only one polynomial, the approximation accuracy of the coefficients will decrease. Therefore, in the present embodiment, a plurality of polynomials are used to gradually reduce the degree of higher order.
  • An elementary function is a one-variable function of a real number or a complex number, and it is obtained by repeating the creation of an algebraic function, an exponential function, a logarithmic function, a triangular function, an inverse triangular function, and a composite function thereof a finite number of times.
  • Examples of elementary functions are reciprocals, square root functions, exponential functions, logarithmic functions, and so on.
  • the secret calculation device 1 of the first embodiment has secret calculation units 11 and 12 and a control unit 19.
  • the secret calculation device 1 executes each process under the control of the control unit 19.
  • x, y, and z are real numbers
  • a, b, c, ⁇ , and ⁇ are real numbers.
  • the real number coefficients a, b, c, ⁇ , and ⁇ are set according to the desired elementary function.
  • -The secret sharing value of is [ ⁇ ].
  • the secret sharing method is not limited, and examples thereof include an additive secret sharing method and a Shamir secret sharing method.
  • An example of [ ⁇ ] is a secret sharing value (share) in which elements on the quotient ring are linearly secret-shared.
  • shares shares
  • the public decimal point position for an integer on the ring it can be regarded as a fixed-point real number.
  • the fixed-point real number represented on the ring in this way is simply expressed as a real number.
  • the secret sharing value [x] of the real number x is input to the secret calculation device 1 (step S10).
  • the secret sharing value [x] is input to the secret calculation unit 11.
  • the secret sharing values [x] and [y] are input to the secret calculation unit 12.
  • the secret calculation unit 11 outputs the secret sharing value [func (x)] (step S13).
  • the elementary function is approximated by the fourth-order polynomial, but in the second embodiment, the elementary function is approximated by the eighth-order polynomial.
  • the differences from the items described so far will be mainly explained, and the common items will be simplified.
  • the secret calculation device 2 of the second embodiment has secret calculation units 11, 22, 23 and a control unit 19.
  • the secret calculation device 2 executes each process under the control of the control unit 19.
  • x, y, z, w are real numbers
  • a, b, c, d, f, g, ⁇ , ⁇ , ⁇ , ⁇ , and ⁇ are real numbers.
  • the real number coefficients a, b, c, d, f, g, ⁇ , ⁇ , ⁇ , ⁇ , ⁇ , ⁇ are set according to the desired elementary function.
  • the secret sharing value [x] of the real number x is input to the secret calculation device 2 (step S10).
  • the secret sharing value [x] is input to the secret calculation unit 11.
  • the secret sharing values [x] and [y] are input to the secret calculation unit 22.
  • the secret sharing values [x], [y], and [z] are input to the secret calculation unit 23.
  • [Func (x)] [ ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx)] is obtained and output (step S23).
  • the secret calculation device 2 outputs the secret distribution value [func (x)] (step S13).
  • the elementary function is approximated by a fourth-order polynomial as in the first embodiment, but it differs from the first embodiment in that the highest-order coefficient can be set.
  • the secret calculation device 3 of the third embodiment has secret calculation units 11 and 32 and a control unit 19.
  • the secret calculation device 3 executes each process under the control of the control unit 19.
  • x, y, and z are real numbers
  • a, b, c, ⁇ , ⁇ , and ⁇ are real numbers.
  • the real number coefficients a, b, c, ⁇ , ⁇ , ⁇ are set according to the desired elementary function.
  • the secret sharing value [x] of the real number x is input to the secret calculation device 3 (step S10).
  • the secret sharing value [x] is input to the secret calculation unit 11.
  • the secret sharing values [x] and [y] are input to the secret calculation unit 32.
  • the secret calculation unit 31 outputs the secret sharing value [func (x)] (step S13).
  • Desired elementary function a polynomial function f t (x) is approximated by func (x), further right shift before the function f t (x) and the approximation function f 'u of the function f t (x) (x) of 'secret sharing values of t (x) [f t ( x) -f' difference f t (x) -f to calculate the t (x)], the right the f t (x) -f 't (x) shifted (f t (x) -f ' t (x)) secret sharing values of r [f t (x) -f ' to obtain a t (x)] r, secret dispersion value [f t (x) -f 't (x)] r and secret variance [f' t (x) f t (x) with the secret calculations] -f 't (x) to f' function by adding
  • x is a real number
  • [ ⁇ ] is a secret distribution value of ⁇
  • n is an integer of 1 or more (for example, n is an integer of 2 or more)
  • t 0, ..., N-1.
  • f 't (x) is an approximation of the function f t (x)
  • ct, 0 are public values, and ct, 1 , ..., Ct, n + 1 are coefficients.
  • ct, 1 , ..., ct, n + 1 are values with a small effective number of bits, and even if ct, 1 , ..., ct, n + 1 are multiplied, a shift is required due to overflow. Is a value that does not have.
  • f t (x) -f 't (x) is a positive.
  • the secret sharing method is not limited, and examples thereof include an additive secret sharing method and a Shamir secret sharing method.
  • the size of t (x) is smaller than the size of the f t (x), a secret sharing value [f t (x) -f' where f t (x) -f overflow of t (x)] It can be suppressed.
  • the secret sharing value of the approximation of the right shift before the function f t (x) and the function f t (x) function f 'u (x) and the difference f t (x) -f' t (x) [f t (x) for computing -f 't (x)] it is possible to maintain high accuracy.
  • Overflow is a problem based on the performance of the processor that implements the secret calculation, and this method provides a method for solving the problem based on this hardware constraint.
  • this method does not solve a pure mathematics problem, but solves a hardware implementation problem and has technical features. For example, notably the technical features in the processor but overflows Calculating the secret variance [f t (x)] that does not overflow in the calculation of the secret sharing value [f t (x) -f ' t (x)] Is.
  • modifications of the first to third embodiments will be specifically shown.
  • the secret sharing value [x] is input to the secret calculation device 1 (step S10).
  • the secret calculation unit 12 outputs the obtained secret sharing value [func (x)] (step S13).
  • n 3
  • the secret sharing value [x] is input to the secret calculation device 2 (step S10).
  • Secret sharing value [w '] is not limited to the process for obtaining, for example, secure computing unit 23 to obtain a public value 2 sigma / gamma, public value 2 sigma / gamma and secret variance [w' / gamma ] May be used to obtain the secret sharing value [w'] r by the secret calculation [w'/ ⁇ ] / (2 ⁇ / ⁇ ) of the public value division.
  • is a positive integer representing the amount of right shift.
  • the secret calculation unit 23 outputs the obtained secret sharing value [func (x)] (step S13).
  • the secret sharing value [x] is input to the secret calculation device 3 (step S10).
  • secure computing unit 32 secure computing unit 32, a secret sharing value [z of r 'z right-shifted by a predetermined number of bits a' to z obtained by multiplying the gamma to / ⁇ '/ ⁇ ] a z a secret calculation using' secret The dispersion value [z'] r is obtained (step S32).
  • Secret sharing value [z '] is not limited to the process for obtaining the r, for example, secure computing unit 32 to obtain a public value 2 sigma / gamma, public value 2 sigma / gamma and secret variance [z' /
  • the secret sharing value [z'] r may be obtained by the secret calculation [z'/ ⁇ ] / (2 ⁇ / ⁇ ) of the public value division using [ ⁇ ]. As a result, the multiplication of ⁇ and the secret calculation of the right shift can be executed at the same time, so that the processing cost can be reduced.
  • the secret calculation unit 32 outputs the obtained secret sharing value [func (x)] (step S13).
  • the secret calculation device 4 of the fourth embodiment is any one of the secret calculation units 45, 46, 47, 48, 49, 410, 411, and the secret calculation devices 1 to 3 or the above-mentioned one. It has a secret calculation device of a modified example.
  • is a real number
  • p is a positive integer
  • L is an integer of 2 or more
  • [ ⁇ ] is a secret sharing value obtained by linearly secret sharing the elements on the quotient ring modulo p.
  • the secret distribution value [ ⁇ ] of the real number ⁇ is input to the secret calculation device 4 (step S40).
  • the secret sharing value [ ⁇ ] is input to the secret calculation unit 45.
  • the secret calculation unit 45 obtains the secret distribution values ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ of the L-bit representation ⁇ 0 ... ⁇ L-1 of the real number ⁇ by the secret calculation using the secret distribution value [ ⁇ ]. And output (step S45).
  • ⁇ 0 , ..., ⁇ L-1 are integers.
  • the secret sharing values ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ are input to the secret calculation unit 46.
  • the secret calculation unit 46 performs a secret calculation using the secret distribution values ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ , and the bits corresponding to the most significant bit (msb) ⁇ msb of the bit string ⁇ 0 ... ⁇ L-1.
  • the secret distribution value ⁇ of the msb flag sequence ⁇ 0 , ..., ⁇ L- 1 in which ⁇ msb is 1 and the bits ⁇ ⁇ ( ⁇ ⁇ ⁇ 0, ..., L-1 ⁇ ) other than the bit ⁇ msb are 0. 0 ⁇ , ..., ⁇ L-1 ⁇ are obtained and output (step S46). The details of step S46 will be described later.
  • the secret sharing values ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ are input to the secret calculation unit 47.
  • step S47 The details of step S47 will be described later.
  • the secret sharing values ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ are input to the secret calculation unit 48.
  • the secret calculation unit 48 performs a secret calculation using the secret sharing values ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ , and is a count value representing the number of elements that are 1 out of ⁇ 0 , ..., ⁇ L-1.
  • the secret sharing value [ ⁇ ] of ⁇ is obtained and output (step S48).
  • the secret sharing values ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ are input to the secret calculation unit 49.
  • the secret sharing values [ ⁇ ] and [ ⁇ ] are input to the secret calculation unit 410.
  • the secret sharing value [x] is input to any of the secret computing devices 1 to 3.
  • the secret computing device of any of the secret computing devices 1 to 3 or a modification thereof in which the secret sharing value [x] is input is subjected to the processing of the first to third embodiments or the modified example thereof, and the secret sharing value [func (x). ] And output (step S420).
  • the secret sharing values [func (x)] and [ ⁇ ] are input to the secret calculation unit 411.
  • the secret calculation device 4 outputs the secret distribution value [log ⁇ ] (step S412).
  • Example 1 Example of reciprocal function>
  • the secret sharing value of the reciprocal function value 1 / ⁇ of the real number ⁇ is calculated.
  • e be a positive integer that represents the difference between the decimal point position of the 0.5 bit string and the most significant bit (msb) of ⁇ when the input real number ⁇ is expressed in binary, and perform the following transformations on the real number ⁇ . .. That is, multiply by 2 e to normalize to the interval [0.5, 1) and reciprocal. The performs a process of multiplying the 2 e in secret calculation after obtaining.
  • normalization to the standard [0.5, 1) gives an accuracy of about 21 bits in an eighth-order polynomial approximation.
  • ⁇ L-1 bit representation chi 0 for, ..., chi L- Obtain a secret sharing value of 1 ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ .
  • the secret calculator corresponds to the most significant bit (msb) ⁇ msb of the bit string ⁇ 0 ... ⁇ L-1 by secret calculation using the secret distribution values ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ .
  • the secret distribution value of the msb flag sequence ⁇ 0 , ..., ⁇ L-1 in which the bit ⁇ msb is 1 and the bits ⁇ ⁇ ( ⁇ ⁇ ⁇ 0, ..., L-1 ⁇ ) other than the bit ⁇ msb are 0 ⁇ Obtain ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ . This process is the same as in step S46 described above. 3: The secret calculation device performs a secret calculation using the secret sharing values ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ , ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ , and 2 ⁇ i ⁇ L.
  • the upper and lower digits of ⁇ 0 ⁇ , ⁇ 1 ⁇ , ⁇ 2 ⁇ , ..., ⁇ L-1 ⁇ are reversed and combined, so here the upper and lower digits are reversed and the secret sharing value ⁇ ⁇ 0 ⁇ , ⁇ 1 ⁇ , ⁇ 2 ⁇ , ..., ⁇ L-1 ⁇ are set.
  • secure computing apparatus secure computing apparatus, the secret distribution value ⁇ 0 ⁇ , ⁇ 1 ⁇ , ⁇ 2 ⁇ , ..., by bit connection by secret calculation using ⁇ L-1 ⁇ , ⁇ ⁇ L-1 ⁇ , ..., ⁇ 0 ⁇ is combined to obtain [ ⁇ ] and output.
  • the secret calculation device obtains and outputs secret sharing values [w] [ ⁇ ] by secret calculation using secret sharing values [w] and [ ⁇ ].
  • Example 2 Example of reciprocal function of square root>
  • the reciprocal function of the square root is normalized to [0.5, 1) in the same way as the reciprocal function described above. However, the 2 e rather ⁇ (2 e) is multiplied by.
  • the following modification is performed on the real number ⁇ . In other words, it normalized by multiplying the 2 e in real chi, the inverse of the square root of the 2 e chi After finding, the process of multiplying by ⁇ (2 e ) is performed by secret calculation.
  • ⁇ L-1 bit representation chi 0 for, ..., chi L- Obtain a secret sharing value of 1 ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ .
  • floor is a floor function.
  • the secret calculation unit bites the msb flag string ⁇ L'-1 , ..., ⁇ 0 by bit coupling in the secret calculation using the secret sharing values ⁇ 0 ⁇ , ..., ⁇ L'-1 ⁇ .
  • the secret sharing value [ ⁇ '] of the combined msb flag value ⁇ ' is obtained and output.
  • the secret calculation unit is required for the secret sharing value [x] of the value x obtained by normalizing the real number ⁇ to [0.5, 1] by the reciprocal normalization protocol for the square root described above, and the inverse calculation of the normalization. Obtain secret sharing values [ ⁇ '] and [ ⁇ ]. 2: The secret calculation unit obtains a secret sharing value [func (x)] from the secret sharing value [x] by secret calculation using the method of the second embodiment or the third embodiment or a modification thereof. However, func (x) is a polynomial that approximates the reciprocal function of the square root of x.
  • steps S23'and S32' are illustrated below.
  • step S23' When the method of the second embodiment is used (step S23') >> The secret calculation unit executes steps S10, S11, and S22 of the second embodiment described above for the secret sharing value [x] of the value x normalized to [0.5, 1) as described above. After that, the secret calculation unit executes the following process of step S232 instead of step S23.
  • the secret calculator uses the secret sharing values [x], [y], [z] and the public values 2 ⁇ 0 / m 0 , 2 ⁇ 1 / m 1 obtained in step S232a for secret calculation of the public value division [ ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx)] / (2 ⁇ 0 / m 0), performs [ ⁇ (z ( ⁇ z + d ) + y ( ⁇ x + f) + gx)] / (2 ⁇ 1 / m 1), m 0
  • the secret sharing value of ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx) shifted to the right by ⁇ 0 bits [m 0 ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx)] r and m 1 ⁇ (z ( ⁇ z + d)) + Y ( ⁇ x + f) + gx) is right-shifted
  • secret sharing values [ ⁇ ], [m 0 ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx)] r , [m 1 ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx)] r were used.
  • the secret sharing value of m ⁇ ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx) [func (x)] [ ⁇ ?
  • the secret calculation unit executes the process of step S232'as follows (steps S232a'to S232e').
  • the secret calculator uses the secret sharing value [w'/ ⁇ ] and the public value 2 ⁇ 0 / m 0 , 2 ⁇ 1 / m 1 obtained in step S232b'to be used for the secret calculation [w'/ ⁇ ] of the public value division. ] / (2 ⁇ 0 / ⁇ m 0 ), [w'/ ⁇ ] / (2 ⁇ 1 / ⁇ m 1 ), and the secret sharing value [m 0 w'] of the value obtained by right-shifting m 0 w'by ⁇ 0 bits.
  • the secret sharing value [m 1 w'] r of the values obtained by right-shifting r and m 1 w'by ⁇ 1 bit is obtained and output (step S232c').
  • step S32' When the method of the third embodiment is used (step S32') >> The secret calculation unit executes steps S10 and S11 of the third embodiment described above for the secret sharing value [x] of the value x normalized to [0.5, 1) as described above. After that, the secret calculation unit executes the following process of step S323 instead of step S32.
  • the secret calculation unit executes the process of step S323 as follows (steps S323a to S323c), for example.
  • Secure computing apparatus secret sharing value [x], [y] and step public value obtained in S323a 2 ⁇ 0 / m 0, 2 ⁇ 1 / m 1 and public value secure computing the division using the [gamma (y ( ⁇ y + b) + cx)] / (2 ⁇ 0 / m 0 ), [ ⁇ (y ( ⁇ y + b) + cx)] / (2 ⁇ 1 / m 1 ), and m 0 ⁇ (y ( ⁇ y + b) + cx) is only ⁇ 0 bits.
  • the secret sharing value of the right-shifted value [m 0 ⁇ (y ( ⁇ y + b) + cx)]
  • the secret sharing value of the value obtained by right-shifting r and m 1 ⁇ (y ( ⁇ y + b) + cx) by ⁇ 1 bit [m 1 ⁇ (y) ( ⁇ y + b) + cx)] r is obtained and output (step S323b).
  • step S32' When the method of the modified example of the third embodiment is used (step S32') >> The secret calculation unit executes steps S10 and S11 of the modified example of the third embodiment described above with respect to the secret sharing value [x] of the value x normalized to [0.5, 1) as described above. After that, the secret calculation unit executes the following process of step S323'instead of step S32.
  • the secret calculation unit executes the process of step S323'as follows (steps S323a' to S323c').
  • the secret sharing value [w '/ ⁇ ] a step S323b' public value 2 ⁇ 0 / m 0 obtained in, 2 ⁇ 1 / m 1 and secure computing the public value division using the [w '/ gamma ] / (2 ⁇ 0 / ⁇ m 0 ), [w'/ ⁇ ] / (2 ⁇ 1 / ⁇ m 1 ), and the secret sharing value [m 0 w'] of the value obtained by right-shifting m 0 w'by ⁇ 0 bits.
  • the secret sharing value [m 1 w'] r of the values obtained by right-shifting r and m 1 w'by ⁇ 1 bit is obtained and output (step S323c').
  • Example 3 Example of square root function>
  • the secret sharing value of the square root ⁇ of the real number ⁇ is calculated.
  • the reciprocal function of the square root is normalized to [1, 2] in the same way as the reciprocal function described above.
  • the following modification is performed on the real number ⁇ . In other words, normalized by multiplying the 2 e in real chi, performs a process of dividing ⁇ after obtaining the square root of 2 e ⁇ ⁇ (2 e ⁇ ) (2 e) in secure computing.
  • ⁇ L-1 bit representation chi 0 for, ..., chi L- Obtain a secret sharing value of 1 ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ .
  • the secret calculator corresponds to the most significant bit (msb) ⁇ msb of the bit string ⁇ 0 ... ⁇ L-1 by secret calculation using the secret distribution values ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ .
  • the secret computing device converts the secret sharing value ⁇ into the secret sharing value [ ⁇ ].
  • the secret computing device uses the secret sharing values ⁇ 0 ⁇ , ⁇ 1 ⁇ , ⁇ 2 ⁇ , ..., By bit coupling by secret calculation using ⁇ L-1 ⁇ , ⁇ 0 ⁇ , ..., Combine ⁇ L'-1 ⁇ to obtain [ ⁇ '] and output.
  • the secret calculation device combines ⁇ L-1 ⁇ , ..., ⁇ 0 ⁇ by secret calculation using the secret sharing values ⁇ 0 ⁇ , ..., ⁇ L-1 ⁇ [ ⁇ ].
  • func (x) is a polynomial that approximates the square root function of x.
  • steps S23 "and S32" are illustrated below.
  • step S23 When the method of the second embodiment is used (step S23 ") >> The secret calculation unit executes steps S10, S11, and S22 of the second embodiment described above for the secret sharing value [x] of the value x normalized to [1, 2] as described above. After that, the secret calculation unit executes the following process of step S234 instead of step S23.
  • the secret calculation unit executes the process of step S234 as follows (steps S234a to S234c).
  • the secret calculator uses the secret sharing values [x], [y], [z] and the public values 2 ⁇ 0 / m 0 , 2 ⁇ 1 / m 1 obtained in step S234a to perform secret calculation of public value division [ ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx)] / (2 ⁇ 0 / m 0), performs [ ⁇ (z ( ⁇ z + d ) + y ( ⁇ x + f) + gx)] / (2 ⁇ 1 / m 1), m 0
  • the secret sharing value of ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx) shifted to the right by ⁇ 0 bits [m 0 ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx)] r and m 1 ⁇ (z ( ⁇ z + d)) + Y ( ⁇ x + f) + gx) is right-
  • secret sharing values [ ⁇ ], [m 0 ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx)] r , [m 1 ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx)] r were used.
  • the secret sharing value of m ⁇ ⁇ (z ( ⁇ z + d) + y ( ⁇ x + f) + gx) [func (x)] [ ⁇ ?
  • step S23 When the method of the modified example of the second embodiment is used (step S23 ")"
  • the secret calculation unit executes steps S10, S11, and S22 of the modified example of the second embodiment described above with respect to the secret distribution value [x] of the value x normalized to [1, 2] as described above. After that, the secret calculation unit executes the following process of step S234'instead of step S23.
  • the secret calculation unit executes the process of step S234'as follows (steps S234a'to S234e').
  • the secret calculation device uses the secret distribution value [w'/ ⁇ ] and the secret calculation [w'/ ⁇ ] of the public value division using the public values 2 ⁇ 0 / m 0 and 2 ⁇ 1 / m 1 obtained in step S234b'. ] / (2 ⁇ 0 / ⁇ m 0 ), [w'/ ⁇ ] / (2 ⁇ 1 / ⁇ m 1 ), and the secret sharing value [m 0 w'] of the value obtained by right-shifting m 0 w'by ⁇ 0 bits.
  • the secret sharing value [m 1 w'] r of the values obtained by right-shifting r and m 1 w'by ⁇ 1 bit is obtained and output (step S234c').
  • step S32 When the method of the third embodiment is used (step S32 ") >> The secret calculation unit executes steps S10 and S11 of the third embodiment described above for the secret sharing value [x] of the value x normalized to [1 and 2] as described above. After that, the secret calculation unit executes the following process of step S325 instead of step S32.
  • the secret calculation unit executes the process of step S325 as follows (steps S325a to S325c), for example.
  • Secure computing apparatus secret sharing value [x], [y] and step public value obtained in S325a 2 ⁇ 0 / m 0, 2 ⁇ 1 / m 1 and public value secure computing the division using the [gamma (y ( ⁇ y + b) + cx)] / (2 ⁇ 0 / m 0 ), [ ⁇ (y ( ⁇ y + b) + cx)] / (2 ⁇ 1 / m 1 ), and m 0 ⁇ (y ( ⁇ y + b) + cx) is only ⁇ 0 bits.
  • the secret sharing value of the right-shifted value [m 0 ⁇ (y ( ⁇ y + b) + cx)]
  • the secret sharing value of the value obtained by right-shifting r and m 1 ⁇ (y ( ⁇ y + b) + cx) by ⁇ 1 bit [m 1 ⁇ (y) ( ⁇ y + b) + cx)] r is obtained and output (step S325b).
  • step S32 When the method of the modified example of the third embodiment is used (step S32 ")"
  • the secret calculation unit executes steps S10 and S11 of the modified example of the third embodiment described above with respect to the secret sharing value [x] of the value x normalized to [1, 2] as described above. After that, the secret calculation unit executes the following process of step S325'instead of step S32.
  • the secret calculation unit executes the process of step S325'as follows (steps S325a'to S325c').
  • the secret sharing value [w '/ ⁇ ] a step S325b' public value 2 ⁇ 0 / m 0 obtained in, 2 ⁇ 1 / m 1 and secure computing the public value division using the [w '/ gamma ] / (2 ⁇ 0 / ⁇ m 0 ), [w'/ ⁇ ] / (2 ⁇ 1 / ⁇ m 1 ), and the secret sharing value [m 0 w'] of the value obtained by right-shifting m 0 w'by ⁇ 0 bits.
  • the secret sharing value [m 1 w'] r of the values obtained by right-shifting r and m 1 w'by ⁇ 1 bit is obtained and output (step S325c').
  • Example 4 Example of exponential function>
  • exp ⁇ is a public value, exp 2 -t x 0 , ..., exp 2 u-t-1 x u-1 is a table calculation. exp x ⁇ is the place to be calculated by approximation, and is normalized to [0,2-t].
  • Input: [x] Output: [exp (x)]
  • secure computing apparatus the secure computing, for each 0 ⁇ i ⁇ u, mantissa f i, epsilon i respectively exp (2 i-t), and exponent.
  • the secret calculation device obtains [w] [f'] [ ⁇ '] exp ( ⁇ ) by secret calculation and outputs it.
  • the secret calculator obtains a public value of 2 ⁇ / exp ( ⁇ ) by secret calculation, and obtains a secret distribution value [w] [f'] [ ⁇ '] and a public value of 2 ⁇ / exp ( ⁇ ).
  • FIG. 6 illustrates the calculated parameters when the elementary function is an inverse function, a square root function, a square root inverse function, an exponential function, or a logarithmic function.
  • ey, and ez indicate the decimal point positions of x, y, and z, respectively.
  • e'x, e'y, and e'z indicate the decimal point positions of x', y', and z'before the right shift, respectively.
  • These decimal point positions represent the bit positions of the decimal point positions counted from the lower bits. The value representing this bit position starts from 0, and when the e1st bit represents 1 counting from the lower bits, it is described that the decimal point position is e1.
  • the secret computing devices 1 to 4 in each embodiment and the secret computing devices in each embodiment are, for example, a processor (hardware processor) such as a CPU (central processing unit), a RAM (random-access memory), or a ROM (read-).
  • a processor such as a CPU (central processing unit), a RAM (random-access memory), or a ROM (read-).
  • a device configured by a general-purpose or dedicated computer equipped with a memory such as "only memory”) executing a predetermined program.
  • This computer may have one processor and memory, or may have a plurality of processors and memory.
  • This program may be installed in a computer or may be recorded in a ROM or the like in advance.
  • a part or all of the processing units may be configured by using an electronic circuit that realizes a processing function independently, instead of an electronic circuit (circuitry) that realizes a function configuration by reading a program like a CPU. ..
  • the electronic circuit constituting one device may include a plurality of CPUs.
  • FIG. 5 is a block diagram illustrating the hardware configurations of the secret calculation devices 1 to 4 in each embodiment and the secret calculation devices in each embodiment.
  • the secret computing devices 1 to 4 of this example include a CPU (Central Processing Unit) 10a, an output unit 10b, an output unit 10c, a RAM (RandomAccessMemory) 10d, and a ROM (ReadOnlyMemory) 10e. , Auxiliary storage device 10f and bus 10g.
  • the CPU 10a of this example has a control unit 10aa, a calculation unit 10ab, and a register 10ac, and executes various arithmetic processes according to various programs read into the register 10ac.
  • the output unit 10b is an output terminal, a display, or the like on which data is output.
  • the output unit 10c is a LAN card or the like controlled by the CPU 10a that has read a predetermined program.
  • the RAM 10d is a SRAM (Static Random Access Memory), a DRAM (Dynamic Random Access Memory), or the like, and has a program area 10da in which a predetermined program is stored and a data area 10db in which various data are stored.
  • the auxiliary storage device 10f is, for example, a hard disk, MO (Magneto-Optical disc), a semiconductor memory, or the like, and has a program area 10fa for storing a predetermined program and a data area 10fb for storing various data.
  • the bus 10g connects the CPU 10a, the output unit 10b, the output unit 10c, the RAM 10d, the ROM 10e, and the auxiliary storage device 10f so that information can be exchanged.
  • the CPU 10a writes the program stored in the program area 10fa of the auxiliary storage device 10f to the program area 10da of the RAM 10d according to the read OS (Operating System) program.
  • the CPU 10a writes various data stored in the data area 10fb of the auxiliary storage device 10f to the data area 10db of the RAM 10d. Then, the address on the RAM 10d in which this program or data is written is stored in the register 10ac of the CPU 10a.
  • the control unit 10ab of the CPU 10a sequentially reads out these addresses stored in the register 10ac, reads a program or data from the area on the RAM 10d indicated by the read address, and causes the arithmetic unit 10ab to sequentially execute the operations indicated by the program.
  • the calculation result is stored in the register 10ac.
  • the above program can be recorded on a computer-readable recording medium.
  • a computer-readable recording medium is a non-transitory recording medium. Examples of such a recording medium are a magnetic recording device, an optical disk, a photomagnetic recording medium, a semiconductor memory, and the like.
  • the distribution of this program is carried out, for example, by selling, transferring, renting, etc., a portable recording medium such as a DVD or CD-ROM on which the program is recorded.
  • the program may be stored in the storage device of the server computer, and the program may be distributed by transferring the program from the server computer to another computer via a network.
  • the computer that executes such a program first temporarily stores, for example, the program recorded on the portable recording medium or the program transferred from the server computer in its own storage device. Then, when the process is executed, the computer reads the program stored in its own storage device and executes the process according to the read program.
  • a computer may read the program directly from a portable recording medium and execute processing according to the program, and further, the program is transferred from the server computer to this computer. Each time, the processing according to the received program may be executed sequentially.
  • the above processing is executed by a so-called ASP (Application Service Provider) type service that realizes the processing function only by the execution instruction and result acquisition without transferring the program from the server computer to this computer. May be.
  • the program in this embodiment includes information to be used for processing by a computer and equivalent to the program (data that is not a direct command to the computer but has a property of defining the processing of the computer, etc.).
  • the present device is configured by executing a predetermined program on a computer, but at least a part of these processing contents may be realized by hardware.
  • the present invention is not limited to the above-described embodiment.
  • the present invention may be used when performing secret calculations on elementary functions other than those shown in specific examples.
  • the various processes described above are not only executed in chronological order according to the description, but may also be executed in parallel or individually as required by the processing capacity of the device that executes the processes.
  • changes can be made as appropriate without departing from the spirit of the present invention.
  • the present invention can be used, for example, for the calculation of elementary functions such as inverse function, square root function, exponential function, and logarithmic function in machine learning and data mining performed by secret calculation while concealing data.
  • elementary functions such as inverse function, square root function, exponential function, and logarithmic function

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Complex Calculations (AREA)
  • Hardware Redundancy (AREA)
  • Devices For Executing Special Programs (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)

Abstract

実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得、秘密分散値[x],[y]を用いた秘密計算によって実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[y(ζy+b)+cx]を得て出力する。ただし、x,y,zが実数であり、a,b,c,δ,ζが実数係数であり、・の秘密分散値が[・]である。

Description

秘密計算装置、秘密計算方法、およびプログラム
 本発明は、秘密計算において実数の初等関数を近似する技術に関する。
 近年、秘密計算による高度な統計や機械学習の研究が盛んになってきている。しかし、これらの演算のほとんどは秘密計算の得意な加減乗算を超える、逆数関数、平方根関数、指数関数、対数関数などの初等関数の計算を含んでいる。これらは秘密計算の応用研究を花開かせる観点で極めて大きな障害である。
 非特許文献1では、秘密計算において逆数,平方根とその逆数,指数関数などの初等関数の計算を行う方法が開示されている。
 しかしながら、非特許文献1に記載された方法では、関数の特性に応じて異なる方式を選択して適用しなければならない。
 本発明はこのような点に鑑みてなされたものであり、パラメータ変更のみで多くの初等関数に汎用的に対応可能な秘密計算技術を提供することを目的とする。
 実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得、秘密分散値[x]および秘密分散値[y]を用いた秘密計算によって実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[y(ζy+b)+cx]を得て出力する。ただし、x,y,zが実数であり、a,b,c,δ,ζが実数係数であり、・の秘密分散値が[・]である。
 本発明では、パラメータ変更のみで多くの初等関数を汎用的に秘密計算できる。
図1Aは第1実施形態の秘密計算装置を例示したブロックである。図1Bは第1実施形態の秘密計算方法を説明するためのフロー図である。 図2Aは第2実施形態の秘密計算装置を例示したブロックである。図2Bは第2実施形態の秘密計算方法を説明するためのフロー図である。 図3Aは第3実施形態の秘密計算装置を例示したブロックである。図3Bは第3実施形態の秘密計算方法を説明するためのフロー図である。 図4は第4実施形態の秘密計算装置を例示したブロックである。 図5は第4実施形態の秘密計算方法を説明するためのフロー図である。 図6は各初等関数に関する計算済みのパラメータを例示した表である。 図7はハードウェア構成を説明するためのブロック図である。
 以下、図面を参照して本発明の実施形態を説明する。
 [第1実施形態]
 第1実施形態について説明する。本実施形態では初等関数を多項式で近似して秘密計算を行う。これによって、パラメータ変更のみで多くの初等関数を汎用的に秘密計算できる。また本形態で扱う初等関数に限定はないが、指数関数や対数関数を多項式で近似した場合には高次の係数が非常に小さくなる。このような場合に1つの多項式のみで近似を行うと係数の近似精度が低下してしまう。そのため、本実施形態では複数の多項式を用いて段階的に高次の次数を小さくしていく。なお、初等関数(Elementary function)とは、実数または複素数の1変数関数で、代数関数、指数関数、対数関数、三角関数、逆三角関数および、それらの合成関数を作ることを有限回繰り返して得られる関数をいう。初等関数の例は、逆数関数、平方根関数、指数関数、対数関数などである。
 図1Aに例示するように、第1実施形態の秘密計算装置1は秘密計算部11,12および制御部19を有する。秘密計算装置1は制御部19の制御のもとで各処理を実行する。以下ではx,y,zが実数であり、a,b,c,δ,ζが実数係数である。実数係数a,b,c,δ,ζは、所望の初等関数に応じて設定されている。・の秘密分散値が[・]である。秘密分散方式に限定はなく、例えば、加法的秘密分散方式やシャミア秘密分散方式などを例示できる。[・]の一例は剰余環上の要素・を線形秘密分散した秘密分散値(シェア)である。また環上の整数に公開の小数点位置を定めることで固定小数点の実数と見なすことができる。実施形態ではこのようにして環上で表した固定小数点の実数を単に実数と表記する。
 図1Bに例示するように、まず秘密計算装置1に実数xの秘密分散値[x]が入力される(ステップS10)。
 秘密分散値[x]は秘密計算部11に入力される。秘密計算部11は秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得て出力する(ステップS11)。
 秘密分散値[x],[y]は秘密計算部12に入力される。秘密計算部12は秘密分散値[x]および秘密分散値[y]を用いた秘密計算によって実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[y(ζy+b)+cx]を得て出力する(ステップS12)。
 秘密計算部11は秘密分散値[func(x)]を出力する(ステップS13)。
 [第2実施形態]
 第1実施形態では4次多項式によって初等関数を近似したが、第2実施形態では8次多項式によって初等関数を近似する。以下では、これまで説明した事項との相違点を中心に説明し、共通する事項については説明を簡略化する。
 図2Aに例示するように、第2実施形態の秘密計算装置2は秘密計算部11,22,23および制御部19を有する。秘密計算装置2は制御部19の制御のもとで各処理を実行する。以下ではx,y,z,wが実数であり、a,b,c,d,f,g,α,β,γ,δ,ζが実数係数である。実数係数a,b,c,d,f,g,α,β,γ,δ,ζは、所望の初等関数に応じて設定されている。
 図2Bに例示するように、まず秘密計算装置2に実数xの秘密分散値[x]が入力される(ステップS10)。
 秘密分散値[x]は秘密計算部11に入力される。秘密計算部11は秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得て出力する(ステップS11)。
 秘密分散値[x],[y]は秘密計算部22に入力される。秘密計算部22は、秘密分散値[x]および秘密分散値[y]を用いた秘密計算によって秘密分散値[z]=[y(ζy+b)+cx]を得て出力する(ステップS22)。
 秘密分散値[x],[y],[z]は秘密計算部23に入力される。秘密計算部23は、秘密分散値[x]、秘密分散値[y]、および秘密分散値[z]を用いた秘密計算によって実数xの初等関数近似値w=func(x)の秘密分散値[func(x)]=[γ(z(αz+d)+y(βx+f)+gx)]を得て出力する(ステップS23)。
 秘密計算装置2は秘密分散値[func(x)]を出力する(ステップS13)。
 [第3実施形態]
 第3実施形態では第1実施形態と同様に4次多項式によって初等関数を近似するが、最高次の係数が設定可能な点で第1実施形態と相違する。
 図3Aに例示するように、第3実施形態の秘密計算装置3は秘密計算部11,32および制御部19を有する。秘密計算装置3は制御部19の制御のもとで各処理を実行する。以下ではx,y,zが実数であり、a,b,c,γ,δ,ζが実数係数である。実数係数a,b,c,γ,δ,ζは、所望の初等関数に応じて設定されている。
 図3Bに例示するように、まず秘密計算装置3に実数xの秘密分散値[x]が入力される(ステップS10)。
 秘密分散値[x]は秘密計算部11に入力される。秘密計算部11は、秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得て出力する(ステップS11)。
 秘密分散値[x],[y]は秘密計算部32に入力される。秘密計算部32は、秘密分散値[x]および秘密分散値[y]を用いた秘密計算によって実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[γ(y(ζy+b)+cx)]を得て出力する(ステップS32)。
 秘密計算部31は秘密分散値[func(x)]を出力する(ステップS13)。
 [第1~3実施形態の変形例]
 所望の初等関数を多項式関数f(x)=func(x)で近似し、さらに右シフト前の関数f(x)と当該関数f(x)の近似関数f’(x)との差分f(x)-f’(x)の秘密分散値[f(x)-f’(x)]を計算し、f(x)-f’(x)を右シフトした(f(x)-f’(x))の秘密分散値[f(x)-f’(x)]を得、秘密分散値[f(x)-f’(x)]と秘密分散値[f’(x)]の秘密計算によってf(x)-f’(x)にf’(x)を加算した関数f(x)の秘密分散値[f(x)]を得てもよい。ただし、xが実数であり、[・]が・の秘密分散値であり、nが1以上の整数(例えば、nは2以上の整数)であり、t=0,…,n-1であり、u=1,…,n-1であり、f(x)が実数xに対する関数であり、f’(x)は関数f(x)の近似関数であり、近似関数f’(x)の秘密分散値[f’(x)]が[f’(x)]=c0,0+c0,1[x]であり、近似関数f’(x)の秘密分散値[f’(x)]が[f’(x)]=cu,0+cu,1[x]+cu,2[f(x)]+…+[fu-1(x)]であり、ct,0は公開値であり、ct,1,…,ct,n+1は係数である。ただし、ct,1,…,ct,n+1は有効ビット数の小さな値であり、ct,1,…,ct,n+1が乗じられても桁あふれによってシフトが必要になるようなことがない値である。f(x)-f’(x)は正である。秘密分散方式に限定はなく、例えば、加法的秘密分散方式やシャミア秘密分散方式などを例示できる。ここでf(x)-f’(x)の大きさはf(x)の大きさよりも小さいため、秘密分散値[f(x)-f’(x)]のオーバーフローを抑制することができる。また右シフト前の関数f(x)と当該関数f(x)の近似関数f’(x)との差分f(x)-f’(x)の秘密分散値[f(x)-f’(x)]を計算するため、高い精度を保つことができる。オーバーフローは秘密計算を実装したプロセッサの性能に基づく問題であり、本方式はこのハードウェア上の制約に基づく問題を解決するための手法を提供する。このように、本方式は純粋数学上の問題を解決するものではなく、ハードウェア実装上の問題を解決するものであって技術的特徴を有するものである。例えば、秘密分散値[f(x)]を計算するとオーバーフローしてしまうが秘密分散値[f(x)-f’(x)]の計算ではオーバーフローしないプロセッサではその技術的特徴は顕著である。以下、第1~3実施形態の変形例を具体的に示す。
 ≪第1実施形態の変形例≫
 第1実施形態の場合、n=2であり、a,b,c,δ,i,j,k,s,mが実数であり、f(x)=y=δx+axであり、f(x)=z=y(ζy+b)+cxであり、f(x)=w=γ(z(αz+d)+y(βx+f)+gx)であり、f’(x)=ix+jであり、f’(x)=ky+sx+mであり、f’(x)=nz+oy+px+qである。
入力:[x]∈[L,R)
設定済のパラメータ:a,b,c,δ,i,j,k,s,m
出力:秘密分散値[func(x)]
1:秘密計算装置1に秘密分散値[x]が入力される(ステップS10)。秘密計算装置1の秘密計算部11は、秘密分散値[x]を用いた積和の秘密計算により秘密分散値[y’]=[x(δx+a-i)-j]を得、右シフトの秘密計算により小数点位置を下げたy’の秘密分散値[y’]を得る(ステップS11)。
2:秘密計算部11は、秘密分散値[y’],[x]を用いた秘密計算により秘密分散値[y]=[y’+(ix+j)]を得る(ステップS11)。
3:秘密計算部12は、秘密分散値[x],[y]を用いた積和の秘密計算により秘密分散値[z’]=[y(ζy+b-k)+(c-s)x-m]を得、右シフトにより小数点位置を下げたz’の秘密分散値[z’]を得る(ステップS12)。
4:秘密計算部12は、秘密分散値[z’]を用いた秘密計算により秘密分散値[func(x)]=[z’+(ky+sx+m)]を得る(ステップS12)。秘密計算部12は、得た秘密分散値[func(x)]を出力する(ステップS13)。
 ≪第2実施形態の変形例≫
 第2実施形態の場合、n=3であり、a,b,c,d,f,g,h,i,j,k,s,m,n,o,p,q,α,β,γ,δ,ζが実数であり、f(x)=y=δx+axであり、f(x)=z=y(ζy+b)+cxであり、f(x)=w=γ(z(αz+d)+y(βx+f)+gx)であり、f’(x)=ix+jであり、f’(x)=ky+sx+mであり、f’(x)=nz+oy+px+qである。
入力:[x]∈[L,R)
設定済のパラメータ:a,b,c,d,f,g,H,i,j,k,s,m,n,o,p,q,α,β,γ,δ,ζ
出力:秘密分散値[func(x)]
1:秘密計算装置2に秘密分散値[x]が入力される(ステップS10)。秘密計算装置2の秘密計算部11は、秘密分散値[x]を用いた積和の秘密計算により秘密分散値[y’]=[x(δx+a-i)-j]を得、右シフトの秘密計算により小数点位置を下げたy’の秘密分散値[y’]を得る(ステップS11)。
2:秘密計算部11は、秘密分散値[y’],[x]を用いた秘密計算により秘密分散値[y]=[y’+(ix+j)]を得る(ステップS11)。
3:秘密計算部22は、秘密分散値[x],[y]を用いた積和の秘密計算により秘密分散値[z’]=[y(ζy+b-k)+(c-s)x-m]を得、右シフトにより小数点位置を下げたz’の秘密分散値[z’]を得る(ステップS22)。
4:秘密計算部22は、秘密分散値[z’],[x],[y]を用いた秘密計算により秘密分散値[z]=[z’+(ky+sx+m)]を得る(ステップS22)。
5:秘密計算部23は、秘密分散値[x],[y],[z]を用いた積和の秘密計算により秘密分散値[w’/γ]=[z(αz+d-n/γ)+(βx+f-o/γ)y+(g-p)x+(H-q)/γ]を得、γによる乗算と小数点位置の下降を行って秘密分散値[w’]を得る(ステップS23)。秘密分散値[w’]を得るための処理に限定は無いが、例えば、秘密計算部23は、公開値2σ/γを得、公開値2σ/γと秘密分散値[w’/γ]を用いた公開値除算の秘密計算[w’/γ]/(2σ/γ)によって秘密分散値[w’]を得てもよい。ただし、σは右シフト量を表す正整数である。これによってγの乗算および右シフトの秘密計算を同時に実行できるため、処理コストを低減できる。
6:秘密計算部23は、秘密計算により秘密分散値[func(x)]=[w’+(nz+oy+px+q)]を得る(ステップS23)。秘密計算部23は、得た秘密分散値[func(x)]を出力する(ステップS13)。
 ≪第3実施形態の変形例≫
 第3実施形態の場合、n=2であり、a,b,c,γ,δ,i,j,k,s,mが実数であり、f(x)=y=δx+axであり、f(x)=z=γ(y(δy+b)+cx)であり、f’(x)=ix+jであり、f’(x)=ky+sx+mである。
入力:[x]∈[L,R)
設定済のパラメータ:a,b,c,γ,δ,i,j,k,s,m
出力:秘密分散値[func(x)]
1:秘密計算装置3に秘密分散値[x]が入力される(ステップS10)。秘密計算装置3の秘密計算部31は、秘密分散値[x]を用いた積和の秘密計算により秘密分散値[y’]=[x(δx+a-i)-j]を得、右シフトの秘密計算により小数点位置を下げたy’の秘密分散値[y’]を得る(ステップS11)。
2:秘密計算部31は、秘密分散値[y’]を用いた秘密計算により秘密分散値[y]=[y’+(ix+j)]を得る(ステップS11)。
3:秘密計算部32は、秘密分散値[x],[y]を用いた積和の秘密計算により[z’/γ]=[y(ζy+b-k/γ)+(c-s/γ)x-m/γ]を得る(ステップS32)。
4:秘密計算部32は、秘密分散値[z’/γ]を用いた秘密計算によってz’/γにγを乗算して得られるz’を所定ビット数だけ右シフトしたz’の秘密分散値[z’]を得る(ステップS32)。秘密分散値[z’]を得るための処理に限定は無いが、例えば、秘密計算部32は、公開値2σ/γを得、公開値2σ/γと秘密分散値[z’/γ]を用いた公開値除算の秘密計算[z’/γ]/(2σ/γ)によって秘密分散値[z’]を得てもよい。これによってγの乗算および右シフトの秘密計算を同時に実行できるため、処理コストを低減できる。
5:秘密計算部32は、秘密分散値[z’]と秘密分散値[x],[y]を用いた秘密計算によって秘密分散値[func(x)]=[z’+(ky+sx+m)]を得る(ステップS32)。秘密計算部32は、得た秘密分散値[func(x)]を出力する(ステップS13)。
 [第4実施形態]
 第4実施形態では、初等関数として対数関数を近似する。
 図4に例示するように、第4実施形態の秘密計算装置4は、秘密計算部45,46,47,48,49,410,411、および秘密計算装置1~3の何れかまたは前述したその変形例の秘密計算装置を有する。以下ではχが実数であり、pが正整数であり、Lが2以上の整数であり、[・]がpを法とした剰余環上の要素・を線形秘密分散した秘密分散値であり、{・}が2を法とした剰余環上の要素・を線形秘密分散した秘密分散値である。
 図5に例示するように、まず秘密計算装置4に実数χの秘密分散値[χ]が入力される(ステップS40)。
 秘密分散値[χ]は秘密計算部45に入力される。秘密計算部45は、秘密分散値[χ]を用いた秘密計算によって実数χのLビット表現χ…χL-1の秘密分散値{χ},…,{χL-1}を得て出力する(ステップS45)。χ,…,χL-1は整数である。
 秘密分散値{χ},…,{χL-1}は秘密計算部46に入力される。秘密計算部46は、秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、ビット列χ…χL-1の最上位ビット(msb)χmsbに対応するビットηmsbが1であり、ビットηmsb以外のビットηξ(ξ∈{0,…,L-1})が0であるmsbフラグ列η,…,ηL-1の秘密分散値{η},…,{ηL-1}を得て出力する(ステップS46)。ステップS46の詳細は後述する。
 秘密分散値{χ},…,{χL-1}は秘密計算部47に入力される。秘密計算部47は、秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、0≦i<L-1における秘密分散値{ρ}={ρi+1∨χ}および秘密分散値{ρL-1}={χL-1}を得て出力する(ステップS47)。ステップS47の詳細は後述する。
 秘密分散値{ρ},…,{ρL-1}は秘密計算部48に入力される。秘密計算部48は、秘密分散値{ρ},…,{ρL-1}を用いた秘密計算によって、ρ,…,ρL-1のうち1である要素の個数を表すカウント値θの秘密分散値[θ]を得て出力する(ステップS48)。
 秘密分散値{η},…,{ηL-1}は秘密計算部49に入力される。秘密計算部49は、秘密分散値{η},…,{ηL-1}を用いた秘密計算によってmsbフラグ列η,…,ηL-1をビット結合したmsbフラグ値ν=η…ηL-1の秘密分散値[ν]を得て出力する(ステップS49)。
 秘密分散値[χ],[ν]は秘密計算部410に入力される。秘密計算部410は、秘密分散値[χ]および秘密分散値[ν]を用いた秘密計算によって秘密分散値[x]=[χ][ν]を得て出力する(ステップS410)。
 秘密分散値[x]は秘密計算装置1~3の何れかに入力される。秘密分散値[x]が入力された秘密計算装置1~3またはその変形例の何れかの秘密計算装置は、第1~3実施形態またはその変形例の処理によって秘密分散値[func(x)]を得て出力する(ステップS420)。
 秘密分散値[func(x)],[θ]は秘密計算部411に入力される。秘密計算部411は、秘密分散値[func(x)]および秘密分散値[θ]を用いた秘密計算によって[log χ]=[func(x)]-[θ]を得て出力する(ステップS411)。
 秘密計算装置4は秘密分散値[log χ]を出力する(ステップS412)。
 <ステップS46,S47の詳細>
入力:秘密分散値{χ},…,{χL-1
出力:秘密分散値{η},…,{ηL-1
1:秘密計算部46は、0≦i<L-1で{ρ}={ρi+1∨χ}とする。
2:秘密計算部46は、{ρL-1}={χL-1}とする。
ここまでで、ρ,…,ρL-1は、0,0,0,1,1,…,1のように、msb以下のビットが1でmsbよりも上位のビットが0のビット列となっている。
3:秘密計算部46は、0≦i<L-1で{η}={ρ(XOR)ρi+1}とする。ただし、α1(XOR)α2はα1とα2との排他的論理和を表す。
4:秘密計算部46は、{ηL-1}={χL-1}とする。
ここまでで、η,…,ηL-1は、0,0,0,1,0,…,0のように、msbの位置のビットのみが1で、他のビットが0となっている。
 [第5実施形態]
 第5実施形態では、初等関数が逆数関数、平方根の逆数関数、平方根関数、指数関数である場合の処理を例示する。
 <実施例1:逆数関数の例>
 実施例1では、実数χの逆数関数値1/χの秘密分散値を計算する。入力された実数χを二進数表現した場合における0.5のビット列の小数点位置とχの最上位ビット(msb)との差を表す正整数をeとし、実数χに対して以下の変形を行う。
Figure JPOXMLDOC01-appb-M000001

すなわち、2eを乗じて区間[0.5, 1)に正規化し、逆数
Figure JPOXMLDOC01-appb-M000002

を求めた後に2を乗じる処理を秘密計算で行う。逆数においては、標準的である[0.5, 1)への正規化では8次多項式近似で21ビット程度の精度となる。一般的に単精度で23ビットの精度が必要とされるため、さらに精度を向上するテクニックを導入する必要がある。通常、最左ビットを移動して[0.5, 1)に正規化するのだが、その後さらに最左ビットの1ビット下が0であれば(すなわち値が[0.5, 0.75)であれば)1.5を乗ずる。すると、[0.5, 0.75)が[0.75, 1.125)へと動くので、[0.75, 1)であれば何もしないことと合わせると、[0.75, 1.125)に正規化されることになる。[0.75, 1.125)は[0.5, 1)よりも狭い区間であるため、近似区間が狭いほど精度が向上する補間多項式近似においては有効なテクニックである。
 ≪逆数用正規化プロトコル≫
入力:[χ]
出力:[x],[ν]
ただし、χを二進数表現した場合における小数点位置をιとすると、xはχのmsbをιの位置に移動した後、χのmsbの1ビット下のビットが0であればさらに1.5を乗じた値である。xは[0.75,1.125)に正規化されている。νはx=χνを満たす値である。
1:秘密計算装置は、秘密分散値[χ]を用いた秘密計算によるビット分解により、χを二進数表現した場合のビット列χ…χL-1に対するビット表現χ,…,χL-1の秘密分散値{χ},…,{χL-1}を得る。
2:秘密計算装置は、秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、ビット列χ…χL-1の最上位ビット(msb)χmsbに対応するビットηmsbが1であり、ビットηmsb以外のビットηξ(ξ∈{0,…,L-1})が0であるmsbフラグ列η,…,ηL-1の秘密分散値{η},…,{ηL-1}を得る。この処理は前述したステップS46と同じである。
3:秘密計算装置は、秘密分散値{χ},…,{χL-1},{η},…,{ηL-1}を用いた秘密計算によって、2≦i<Lで{ω}={(¬χi-2∧ηi-1)(XOR)η}を得る。
4:秘密計算装置は、秘密分散値{η},…,{ηL-1}を用いた秘密計算によって秘密分散値{ω}={ω}={0},{ω}={¬ηL-2∧ηL-1}を得る。ビット列χ…χL-1のmsbの1ビット下の入力ビットが1であれば、msbの1ビット上のωが1となる。次のステップで{ω},{ω},{ω},…,{ωL-1}の上下桁を逆転して結合するため、ここでは上下桁を逆転して秘密分散値{ω},{ω},{ω},…,{ωL-1}を設定している。
5:秘密計算装置は、秘密分散値{ω},{ω},{ω},…,{ωL-1}を用いた秘密計算によるビット結合により、{ωL-1},…,{ω}を結合して[ν]を得て出力する。νはχに乗じられた場合、χのmsbを定められた場所に移動し、さらにχのmsbの1ビット下のビットが0であれば1.5をχに乗ずるという数になっている。
6:秘密計算装置は、秘密分散値[x]=[χ][ν]を得る。
 ≪逆数プロトコル≫
入力:[χ]
出力:[1/χ]
1:秘密計算装置は、上述の逆数用正規化プロトコルにより、実数χを[0.75,1.125)に正規化した値xの秘密分散値[x]、および当該正規化のために秘密分散値[χ]に乗じられる秘密分散値[ν]を得る。
2:秘密計算装置は、秘密計算によって、秘密分散値[x]から秘密分散値[func(x)]を得る。ただし、実施例1のfunc(x)はxの逆数関数を近似する多項式である。秘密計算装置は、例えば、第1~3実施形態またはその変形例の方法を用いて秘密分散値[w]=[func(x)]を得る。
3:秘密計算装置は、秘密分散値[w],[ν]を用いた秘密計算によって秘密分散値[w][ν]を得て出力する。
 <実施例2:平方根の逆数関数の例>
 実施例2では、実数χの平方根の逆数関数値1/√χの秘密分散値を計算する。平方根の逆数関数では、上述の逆数関数と同じ考え方で[0.5,1)に正規化する。ただし、2ではなく√(2)が乗じられる。実施例2では、実数χに対して以下の変形を行う。
Figure JPOXMLDOC01-appb-M000003

つまり、実数χに2を掛けて正規化し、2χの平方根の逆数
Figure JPOXMLDOC01-appb-M000004

を求めた後に√(2)を乗じる処理を秘密計算で行う。
 ≪平方根の逆数用正規化プロトコル≫
入力:[χ]
出力:[x],[φ],[ν’]
ただし、χを二進数表現した場合における小数点位置をιとすると、xはχのmsbをι-1の位置に移動した値である。実施例2では、φは最後に計算値に√2を掛ける必要があるかどうかを表す真理値である。ν’は最後に掛けるべき2のべき乗値である。
1:秘密計算装置は、秘密分散値[χ]を用いた秘密計算によるビット分解により、χを二進数表現した場合のビット列χ…χL-1に対するビット表現χ,…,χL-1の秘密分散値{χ},…,{χL-1}を得る。
2:秘密計算装置は、L’=ceil(L/2)を得る。ただし、ceilは天井関数である。
3:秘密計算装置は、秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、0≦i<floor(L/2)で、秘密分散値{χ’}={χ∨χi+1}を得る。ただし、floorは床関数である。
4:秘密計算装置は、Lが奇数なら、{χ’L’-1}={χL-1}と設定する。
5:秘密計算部は、秘密分散値{χ’},…,{χ’L-1}を用いた秘密計算によって、ビット列χ’…χ’L-1の最上位ビット(msb)χ’msbに対応するビットηmsbが1であり、ビットηmsb以外のビットηξ(ξ∈{0,…,L’-1})が0であるmsbフラグ列η,…,ηL-1の秘密分散値{η},…,{ηL’-1}を得て出力する。この処理はχをχ’とし、LをL’とした前述のステップS46と同じである。
6:秘密計算部は、秘密分散値{η},…,{ηL’-1}を用いた秘密計算でのビット結合により、msbフラグ列ηL’-1,…,ηをビット結合したmsbフラグ値ν’の秘密分散値[ν’]を得て出力する。
7:秘密計算部は、0≦i<floor(L/2)で、{χ”}={χ2i}と設定する。
8:秘密計算部は、Lが奇数なら、{χ”L’-1}={χL-1}と設定する。
9:秘密計算部は、秘密分散値{χ”},…,{χ”L’-1},{η},…,{ηL’-1}を用いた積和の秘密計算によって、秘密分散値{φ}={ηχ”+…+ηL’-1χ”L’-1}を得る。
10:秘密計算部は、秘密分散値{φ}を秘密分散値[φ]に変換して出力する。φはχのmsbが偶数ビット目にあるかどうかを表す真理値である。χのmsbが偶数ビット目にある場合にはφ=1であり、そうでない場合にはφ=0である。
11:秘密計算部は、秘密分散値[ν’],[φ],[χ]を用いた秘密計算によって、秘密分散値[x]=[ν’][ν’][φ?2χ:χ]を得て出力する。ただし、φ?2χ:χは、φ=1のときに2χであり、φ=0のときにχである。
 ≪平方根の逆数プロトコル≫
入力:[χ]
出力:[1/√χ]
1:秘密計算部は、上述した平方根の逆数用正規化プロトコルにより、実数χを[0.5,1)に正規化した値xの秘密分散値[x]、および正規化の逆演算に必要な秘密分散値[ν’],[φ]を得る。
2:秘密計算部は、第2実施形態もしくは3実施形態またはそれらの変形例の方法を用いて、秘密計算によって、秘密分散値[x]から秘密分散値[func(x)]を得る。ただし、func(x)はxの平方根の逆数関数を近似する多項式である。また、ステップS23ではφ=1のときにγが√2γに置換される(ステップS23’)。同様に、ステップS32ではφ=1のときにγが√2γに置換される(ステップS32’)。ステップS23’,S32’の処理の詳細は後述する。
3:秘密計算部は、秘密分散値[func(x)],[ν’]を用いた秘密計算によって、秘密分散値[1/√χ]=[func(x)][ν’]を得て出力する。
 以下にステップS23’,S32’の処理内容を例示する。
 ≪第2実施形態の方法が用いられる場合(ステップS23’)≫
 秘密計算部は、上述のように[0.5,1)に正規化した値xの秘密分散値[x]に対し、前述した第2実施形態のステップS10,S11,S22を実行する。その後、秘密計算部は、ステップS23に代えて以下のステップS232の処理を実行する。
 ステップS232:秘密計算部は、秘密分散値[x],[y],[z],[φ]を用いた秘密計算により、φ=1のときに秘密分散値[func(x)]=[(√2)γ(z(αz+d)+y(βx+f)+gx)]を得て出力し、φ=0のときに秘密分散値[func(x)]=[γ(z(αz+d)+y(βx+f)+gx)]を得て出力する。
 秘密計算部は、例えば、以下のようにステップS232の処理を実行する(ステップS232a~S232c)。
 秘密計算部は、乗数m=1,m=√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する。ただし、σ0,σ1は、それぞれ乗数m,mが大きい場合に必要となる右シフト量を表すビット数である正整数である(ステップS232a)。
 秘密計算装置は、秘密分散値[x],[y],[z]とステップS232aで得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[γ(z(αz+d)+y(βx+f)+gx)]/(2σ0/m),[γ(z(αz+d)+y(βx+f)+gx)]/(2σ1/m)を行って、mγ(z(αz+d)+y(βx+f)+gx)をσ0ビットだけ右シフトした値の秘密分散値[mγ(z(αz+d)+y(βx+f)+gx)]およびmγ(z(αz+d)+y(βx+f)+gx)をσ1ビットだけ右シフトした値の秘密分散値[mγ(z(αz+d)+y(βx+f)+gx)]を得て出力する(ステップS232b)。
 秘密計算装置は、秘密分散値[φ],[mγ(z(αz+d)+y(βx+f)+gx)],[mγ(z(αz+d)+y(βx+f)+gx)]を用いた秘密計算によって、mφγ(z(αz+d)+y(βx+f)+gx)の秘密分散値[func(x)]=[φ?mγ(z(αz+d)+y(βx+f)+gx):mγ(z(αz+d)+y(βx+f)+gx)]を得て出力する。すなわち、秘密計算部はφ=0の場合に[func(x)]=[γ(z(αz+d)+y(βx+f)+gx)]を得て出力し、φ=1の場合に[func(x)]=[(√2)γ(z(αz+d)+y(βx+f)+gx)]を得て出力する(ステップS232c)。
 ≪第2実施形態の変形例の方法が用いられる場合(ステップS23’)≫
 秘密計算部は、上述のように[0.5,1)に正規化した値xの秘密分散値[x]に対し、前述した第2実施形態の変形例のステップS10,S11,S22を実行する。その後、秘密計算部は、ステップS23に代えて以下のステップS232’の処理を実行する。
 ステップS232’:秘密計算部は、秘密分散値[x],[y],[z],[φ]を用いた積和の秘密計算により秘密分散値[w’/γ]=[z(αz+d-n/γ)+(βx+f-o/γ)y+(g-p)x+(H-q)/γ]を得、φ=1のときに(√2)γによる乗算と小数点位置の下降を行い、φ=0のときにγによる乗算と小数点位置の下降を行って、秘密分散値[w’]を得る。さらに、秘密計算部は、秘密分散値[w’],[x],[y],[z]を用いた秘密計算により秘密分散値[func(x)]=[w’+(nz+oy+px+q)]を得る。
 秘密計算部は、例えば、以下のようにステップS232’の処理を実行する(ステップS232a’~S232e’)。
 秘密計算部は、秘密分散値[x],[y],[z]を用いた積和の秘密計算により秘密分散値[w’/γ]=[z(αz+d-n/γ)+(βx+f-o/γ)y+(g-p)x+(H-q)/γ]を得る(ステップS232a’)。
 秘密計算部は、乗数m=1,m=√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS232b’)。
 秘密計算装置は、秘密分散値[w’/γ]とステップS232b’で得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[w’/γ]/(2σ0/γm),[w’/γ]/(2σ1/γm)を行って、mw’をσ0ビットだけ右シフトした値の秘密分散値[mw’]およびmw’をσ1ビットだけ右シフトした値の秘密分散値[mw’]を得て出力する(ステップS232c’)。
 秘密計算装置は、秘密分散値[φ],[mw’],[mw’]を用いた秘密計算によって、mφw’の秘密分散値[func(x)]=[φ?mw’:mw’]を得て出力する。すなわち、秘密計算部はφ=0の場合に秘密分散値[func’(x)]=[w’]を得て出力し、φ=1の場合に秘密分散値[func’(x)]=[(√2)w’]を得て出力する(ステップS232d’)。
 秘密計算部は、秘密分散値[func’(x)],[x],[y],[z]を用いた秘密計算により秘密分散値[func(x)]=[func’(x)+(nz+oy+px+q)]を得る(ステップS232e’)。
 ≪第3実施形態の方法が用いられる場合(ステップS32’)≫
 秘密計算部は、上述のように[0.5,1)に正規化した値xの秘密分散値[x]に対し、前述した第3実施形態のステップS10,S11を実行する。その後、秘密計算部は、ステップS32に代えて以下のステップS323の処理を実行する。
 ステップS323:秘密計算部は、秘密分散値[x],[y],[φ]を用いた秘密計算により、φ=1のときに秘密分散値[func(x)]=[(√2)γ(y(ζy+b)+cx)]を得て出力し、φ=0のときに秘密分散値[func(x)]=[γ(y(ζy+b)+cx)]を得て出力する。
 秘密計算部は、例えば、以下のようにステップS323の処理を実行する(ステップS323a~S323c)。
 秘密計算部は、乗数m=1,m=√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS323a)。
 秘密計算装置は、秘密分散値[x],[y]とステップS323aで得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[γ(y(ζy+b)+cx)]/(2σ0/m),[γ(y(ζy+b)+cx)]/(2σ1/m)を行って、mγ(y(ζy+b)+cx)をσ0ビットだけ右シフトした値の秘密分散値[mγ(y(ζy+b)+cx)]およびmγ(y(ζy+b)+cx)をσ1ビットだけ右シフトした値の秘密分散値[mγ(y(ζy+b)+cx)]を得て出力する(ステップS323b)。
 秘密計算装置は、秘密分散値[φ],[mγ(y(ζy+b)+cx)],[mγ(y(ζy+b)+cx)]を用いた秘密計算によって、mφγ(y(ζy+b)+cx)の秘密分散値[φ?mγ(y(ζy+b)+cx):mγ(y(ζy+b)+cx)]を得て出力する。すなわち、秘密計算部はφ=0の場合に[func(x)]=[γ(y(ζy+b)+cx)]を得て出力し、φ=1の場合に[func(x)]=[(√2)γ(y(ζy+b)+cx)]を得て出力する(ステップS323c)。
 ≪第3実施形態の変形例の方法が用いられる場合(ステップS32’)≫
 秘密計算部は、上述のように[0.5,1)に正規化した値xの秘密分散値[x]に対し、前述した第3実施形態の変形例のステップS10,S11を実行する。その後、秘密計算部は、ステップS32に代えて以下のステップS323’の処理を実行する。
 ステップS323’:秘密計算部は、秘密分散値[x],[y],[φ]を用いた積和の秘密計算により[z’/γ]=[y(ζy+b-k/γ)+(c-s/γ)x-m/γ]を得、φ=1のときに(√2)γによる乗算と小数点位置の下降を行い、φ=0のときにγによる乗算と小数点位置の下降を行って、秘密分散値[func’(x)]を得る。秘密計算部32は、秘密分散値[func’(x)]と秘密分散値[x],[y]を用いた秘密計算によって秘密分散値[func(x)]=[func’(x)+(ky+sx+m)]を得て出力する。
 秘密計算部は、例えば、以下のようにステップS323’の処理を実行する(ステップS323a’~S323c’)。
 秘密計算部は、秘密分散値[x],[y]を用いた積和の秘密計算により[z’/γ]=[y(ζy+b-k/γ)+(c-s/γ)x-m/γ]を得る(ステップS323a’)。
 秘密計算部は、乗数m=1,m=√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS323b’)。
 秘密計算部は、秘密分散値[w’/γ]とステップS323b’で得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[w’/γ]/(2σ0/γm),[w’/γ]/(2σ1/γm)を行って、mw’をσ0ビットだけ右シフトした値の秘密分散値[mw’]およびmw’をσ1ビットだけ右シフトした値の秘密分散値[mw’]を得て出力する(ステップS323c’)。
 秘密計算装置は、秘密分散値[φ],[mw’],[mw’]を用いた秘密計算によって、mφw’の秘密分散値[func(x)]=[φ?mw’:mw’]を得て出力する。すなわち、秘密計算部はφ=0の場合に秘密分散値[func’(x)]=[w’]を得て出力し、φ=1の場合に秘密分散値[func’(x)]=[(√2)w’]を得て出力する(ステップS323d’)。
 秘密計算部は、秘密分散値[func’(x)],[x],[y]を用いた秘密計算により秘密分散値[func(x)]=[func’(x)+(ky+sx+m)]を得て出力する(ステップS323e’)。
 <実施例3:平方根関数の例>
 実施例3では、実数χの平方根√χの秘密分散値を計算する。平方根の逆数関数では、上述の逆数関数と同じ考え方で[1,2)に正規化する。実施例3では、実数χに対して以下の変形を行う。
Figure JPOXMLDOC01-appb-M000005

つまり、実数χに2を掛けて正規化し、2χの平方根√(2χ)を求めた後に√(2)で除する処理を秘密計算で行う。
 ≪平方根用正規化プロトコル≫
入力:[χ]
出力:[x],[φ],[ν’]
ただし、χを二進数表現した場合における小数点位置をιとすると、xはχのmsbをιの位置に移動した値である。実施例3では、φは最後に計算値を√2で割る必要があるかどうかを表す真理値である。ν’は最後に掛けるべき2のべき乗値である。
1:秘密計算装置は、秘密分散値[χ]を用いた秘密計算によるビット分解により、χを二進数表現した場合のビット列χ…χL-1に対するビット表現χ,…,χL-1の秘密分散値{χ},…,{χL-1}を得る。
2:秘密計算装置は、秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、ビット列χ…χL-1の最上位ビット(msb)χmsbに対応するビットηmsbが1であり、ビットηmsb以外のビットηξ(ξ∈{0,…,L-1})が0であるmsbフラグ列η,…,ηL-1の秘密分散値{η},…,{ηL-1}を得る。この処理は前述したステップS46と同じである。
3:秘密計算装置は、L’=ceil(L/2)を得る。ただし、ceilは天井関数である。
4:秘密計算装置は、秘密分散値{η},…,{ηL-1}を用いた秘密計算により、各i<L’で、秘密分散値{ω}={η2i}(XOR){η2i+1}を得る。ただし、Lが奇数のとき、{ωL-1}={η2i}とする。
5:秘密計算装置は、秘密分散値{η},…,{ηL-1}を用いた秘密計算により秘密分散値{φ}={η}(XOR){η}(XOR){η}(XOR)…を得る。最後に計算値を√2で割る必要がある場合にはφ=1であり、最後に計算値を√2で割る必要がない場合にはφ=0である。
6:秘密計算装置は、秘密分散値{φ}を秘密分散値[φ]に変換する。
7:秘密計算装置は、秘密分散値{ω},{ω},{ω},…,{ωL-1}を用いた秘密計算によるビット結合により、{ω},…,{ωL’-1}を結合して[ν’]を得て出力する。
8:秘密計算装置は、秘密分散値{η},…,{ηL-1}を用いた秘密計算により、{ηL-1},…,{η}を結合して[ν]を得て出力する。
9:秘密計算装置は、秘密分散値[χ],[ν]を用いた秘密計算により、秘密分散値[x]=[χ][ν]を得て出力する。
 ≪平方根プロトコル≫
入力:[χ]
出力:[√χ]
1:秘密計算装置は、上述の平方根用正規化プロトコルにより、実数χを[1,2)に正規化した値xの秘密分散値[x]、および正規化の逆演算に必要な秘密分散値[ν’],[φ]を得る。
2:秘密計算装置は、L’=ceil(L/2)を得る。
3:秘密計算装置は、Lが奇数ならφ’=√2とし、偶数ならφ’=1に設定する。
4:秘密計算部は、第2実施形態もしくは3実施形態またはそれらの変形例の方法を用いて、秘密計算によって、秘密分散値[x]から秘密分散値[func(x)]を得る。ただし、func(x)はxの平方根関数を近似する多項式である。また、ステップS23ではφ=1のときにγがγφ’/√2に置換され、φ=0のときにγがγφ’に置換される(ステップS23”)。同様に、ステップS32ではφ=1のときにγが(φ’/√2)γに置換され、φ=0のときにγがφ’γに置換される(ステップS32”)。ステップS23”,S32”の処理の詳細は後述する。
5:秘密計算部は、秘密分散値[func(x)],[ν’]を用いた秘密計算によって、秘密分散値[√χ]=[func(x)][ν’]を得て出力する。
 以下にステップS23”,S32”の処理内容を例示する。
 ≪第2実施形態の方法が用いられる場合(ステップS23”)≫
 秘密計算部は、上述のように[1,2)に正規化した値xの秘密分散値[x]に対し、前述した第2実施形態のステップS10,S11,S22を実行する。その後、秘密計算部は、ステップS23に代えて以下のステップS234の処理を実行する。
 ステップS234:秘密計算部は、秘密分散値[x],[y],[z],[φ]を用いた秘密計算により、φ=1のときに秘密分散値[func(x)]=[(γφ’/√2)(z(αz+d)+y(βx+f)+gx)]を得て出力し、φ=0のときに秘密分散値[func(x)]=[γφ’(z(αz+d)+y(βx+f)+gx)]を得て出力する。
 秘密計算部は、例えば、以下のようにステップS234の処理を実行する(ステップS234a~S234c)。
 秘密計算部は、乗数m=φ’,m=φ’/√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS234a)。
 秘密計算装置は、秘密分散値[x],[y],[z]とステップS234aで得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[γ(z(αz+d)+y(βx+f)+gx)]/(2σ0/m),[γ(z(αz+d)+y(βx+f)+gx)]/(2σ1/m)を行って、mγ(z(αz+d)+y(βx+f)+gx)をσ0ビットだけ右シフトした値の秘密分散値[mγ(z(αz+d)+y(βx+f)+gx)]およびmγ(z(αz+d)+y(βx+f)+gx)をσ1ビットだけ右シフトした値の秘密分散値[mγ(z(αz+d)+y(βx+f)+gx)]を得て出力する(ステップS234b)。
 秘密計算装置は、秘密分散値[φ],[mγ(z(αz+d)+y(βx+f)+gx)],[mγ(z(αz+d)+y(βx+f)+gx)]を用いた秘密計算によって、mφγ(z(αz+d)+y(βx+f)+gx)の秘密分散値[func(x)]=[φ?mγ(z(αz+d)+y(βx+f)+gx):mγ(z(αz+d)+y(βx+f)+gx)]を得て出力する。すなわち、秘密計算部はφ=0の場合に[func(x)]=[φ’γ(z(αz+d)+y(βx+f)+gx)]を得て出力し、φ=1の場合に[func(x)]=[(φ’/√2)γ(z(αz+d)+y(βx+f)+gx)]を得て出力する(ステップS234c)。
 ≪第2実施形態の変形例の方法が用いられる場合(ステップS23”)≫
 秘密計算部は、上述のように[1,2)に正規化した値xの秘密分散値[x]に対し、前述した第2実施形態の変形例のステップS10,S11,S22を実行する。その後、秘密計算部は、ステップS23に代えて以下のステップS234’の処理を実行する。
 ステップS234’:秘密計算部は、秘密分散値[x],[y],[z],[φ]を用いた積和の秘密計算により秘密分散値[w’/γ]=[z(αz+d-n/γ)+(βx+f-o/γ)y+(g-p)x+(H-q)/γ]を得、φ=1のときにγφ’/√2による乗算と小数点位置の下降を行い、φ=0のときにγφ’による乗算と小数点位置の下降を行って、秘密分散値[w’]を得る。さらに、秘密計算部は、秘密分散値[w’],[x],[y],[z]を用いた秘密計算により秘密分散値[func(x)]=[w’+(nz+oy+px+q)]を得る。
 秘密計算部は、例えば、以下のようにステップS234’の処理を実行する(ステップS234a’~S234e’)。
 秘密計算部は、秘密分散値[x],[y],[z]を用いた積和の秘密計算により秘密分散値[w’/γ]=[z(αz+d-n/γ)+(βx+f-o/γ)y+(g-p)x+(H-q)/γ]を得る(ステップS234a’)。
 秘密計算部は、乗数m=φ’,m=φ’/√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS234b’)。
 秘密計算装置は、秘密分散値[w’/γ]とステップS234b’で得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[w’/γ]/(2σ0/γm),[w’/γ]/(2σ1/γm)を行って、mw’をσ0ビットだけ右シフトした値の秘密分散値[mw’]およびmw’をσ1ビットだけ右シフトした値の秘密分散値[mw’]を得て出力する(ステップS234c’)。
 秘密計算装置は、秘密分散値[φ],[mw’],[mw’]を用いた秘密計算によって、mφw’の秘密分散値[func(x)]=[φ?mw’:mw’]を得て出力する。すなわち、秘密計算部はφ=0の場合に秘密分散値[func’(x)]=[φ’w’]を得て出力し、φ=1の場合に秘密分散値[func’(x)]=[(φ’/√2)w’]を得て出力する(ステップS234d’)。
 秘密計算部は、秘密分散値[func’(x)],[x],[y],[z]を用いた秘密計算により秘密分散値[func(x)]=[func’(x)+(nz+oy+px+q)]を得る(ステップS234e’)。
 ≪第3実施形態の方法が用いられる場合(ステップS32”)≫
 秘密計算部は、上述のように[1,2)に正規化した値xの秘密分散値[x]に対し、前述した第3実施形態のステップS10,S11を実行する。その後、秘密計算部は、ステップS32に代えて以下のステップS325の処理を実行する。
 ステップS325:秘密計算部は、秘密分散値[x],[y],[φ]を用いた秘密計算により、φ=1のときに秘密分散値[func(x)]=[(φ’/√2)γ(y(ζy+b)+cx)]を得て出力し、φ=0のときに秘密分散値[func(x)]=[φ’γ(y(ζy+b)+cx)]を得て出力する。
 秘密計算部は、例えば、以下のようにステップS325の処理を実行する(ステップS325a~S325c)。
 秘密計算部は、乗数m=φ’,m=φ’/√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS325a)。
 秘密計算装置は、秘密分散値[x],[y]とステップS325aで得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[γ(y(ζy+b)+cx)]/(2σ0/m),[γ(y(ζy+b)+cx)]/(2σ1/m)を行って、mγ(y(ζy+b)+cx)をσ0ビットだけ右シフトした値の秘密分散値[mγ(y(ζy+b)+cx)]およびmγ(y(ζy+b)+cx)をσ1ビットだけ右シフトした値の秘密分散値[mγ(y(ζy+b)+cx)]を得て出力する(ステップS325b)。
 秘密計算装置は、秘密分散値[φ],[mγ(y(ζy+b)+cx)],[mγ(y(ζy+b)+cx)]を用いた秘密計算によって、mφγ(y(ζy+b)+cx)の秘密分散値[φ?mγ(y(ζy+b)+cx):mγ(y(ζy+b)+cx)]を得て出力する。すなわち、秘密計算部はφ=0の場合に[func(x)]=[φ’γ(y(ζy+b)+cx)]を得て出力し、φ=1の場合に[func(x)]=[(φ’/√2)γ(y(ζy+b)+cx)]を得て出力する(ステップS325c)。
 ≪第3実施形態の変形例の方法が用いられる場合(ステップS32”)≫
 秘密計算部は、上述のように[1,2)に正規化した値xの秘密分散値[x]に対し、前述した第3実施形態の変形例のステップS10,S11を実行する。その後、秘密計算部は、ステップS32に代えて以下のステップS325’の処理を実行する。
 ステップS325’:秘密計算部は、秘密分散値[x],[y],[φ]を用いた積和の秘密計算により[z’/γ]=[y(ζy+b-k/γ)+(c-s/γ)x-m/γ]を得、φ=1のときに(φ’/√2)γによる乗算と小数点位置の下降を行い、φ=0のときにφ’γによる乗算と小数点位置の下降を行って、秘密分散値[func’(x)]を得る。秘密計算部32は、秘密分散値[func’(x)]と秘密分散値[x],[y]を用いた秘密計算によって秘密分散値[func(x)]=[func’(x)+(ky+sx+m)]を得て出力する。
 秘密計算部は、例えば、以下のようにステップS325’の処理を実行する(ステップS325a’~S325c’)。
 秘密計算部は、秘密分散値[x],[y]を用いた積和の秘密計算により[z’/γ]=[y(ζy+b-k/γ)+(c-s/γ)x-m/γ]を得る(ステップS325a’)。
 秘密計算部は、乗数m=φ’,m=φ’/√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS325b’)。
 秘密計算部は、秘密分散値[w’/γ]とステップS325b’で得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[w’/γ]/(2σ0/γm),[w’/γ]/(2σ1/γm)を行って、mw’をσ0ビットだけ右シフトした値の秘密分散値[mw’]およびmw’をσ1ビットだけ右シフトした値の秘密分散値[mw’]を得て出力する(ステップS325c’)。
 秘密計算装置は、秘密分散値[φ],[φ’],[mw’],[mw’]を用いた秘密計算によって、mφw’の秘密分散値[func(x)]=[φ?mw’:mw’]を得て出力する。すなわち、秘密計算部はφ=0の場合に秘密分散値[func’(x)]=[φ’w’]を得て出力し、φ=1の場合に秘密分散値[func’(x)]=[(φ’/√2)w’]を得て出力する(ステップS325d’)。
 秘密計算部は、秘密分散値[func’(x)],[x],[y]を用いた秘密計算により秘密分散値[func(x)]=[func’(x)+(ky+sx+m)]を得て出力する(ステップS325e’)。
 <実施例4:指数関数の例>
 実施例4では、実数xの指数関数値exp(x)の秘密分散値を計算する。指数関数は入力に加法性があるため、入力を以下の3パートに分解する。
I.想定される入力の最小値μ
II.x-μの小数点以下tビット以上の上位uビットx,…,xu-1
III.x-μのxよりも下位ビット全体が表す数xρ
 exp x=exp μ exp 2-t,…,exp 2u-t-1u-1exp xρとする。exp μは公開値、exp 2-t,・・・,exp 2u-t-1u-1は表による計算である。exp xρが近似により計算する箇所であり、[0,2-t)に正規化される。
入力:[x]
出力:[exp(x)]
設定済のパラメータ:t=-1
1:秘密計算装置は、秘密計算によって[x’]=[x]-μを得る。ただし、μは想定されるxの最小値である。
2:秘密計算装置は、秘密計算により、小数点以下tビットより上位のビットをビット分解で取り出してmod p変換し、[x’],…,[x’u-1]を得る。
3:秘密計算装置は、秘密計算により、各0≦i<uで、f,εをそれぞれexp(2i-t)の仮数部、指数部とする。
4:秘密計算装置は、秘密計算によって、i=0,…,u-1について、x’i’=0ならばF=1、x’i’=1ならばF=fとした
Figure JPOXMLDOC01-appb-M000006

を得る。
5:秘密計算装置は、秘密計算によって、各0≦i<uで、選択肢公開のif-then-elseゲートにより[ε’]=if[x’] then 2εi else 1を計算する。
6:秘密計算装置は、秘密計算によって、各iに関する[ε’]の積[ε’]を得る(ε’=ε’…ε’u-1)。これはexp(x’)の上位ビット部分の指数部の2のべき乗値である。
7:秘密計算装置は、秘密計算によって、
Figure JPOXMLDOC01-appb-M000007

を得る。これはexp(x’)の下位ビット部分の表す数である。
8:秘密計算装置は、秘密計算によって、秘密分散値[x’ρ]から秘密分散値[w]=[func(x)]を得る。ただし、w=func(x)はxの指数関数exp xを近似する多項式である。秘密計算装置は、例えば、x=x’ρとした第1~3実施形態またはその変形例の方法を用いて秘密分散値[w]=[func(x)]を得る。
9:秘密計算装置は、秘密計算によって、[w][f’][ε’]exp(μ)を得て出力する。例えば、秘密計算装置は、秘密計算によって、公開値2σ/exp(μ)を得、秘密分散値[w][f’][ε’]と得られた公開値2σ/exp(μ)とを用いた公開値除算の秘密計算[w][f’][ε’]/(2σ/exp(μ))を行って、wf’ε’exp(μ)をαビットだけ右シフトした値の秘密分散値[w][f’][ε’]exp(μ)を得て出力する。
 [各初等関数に関する計算済みのパラメータの例]
 図6に初等関数が逆数関数、平方根関数、平方根の逆数関数、指数関数、対数関数である場合の計算済みのパラメータを例示する。なお、ex,ey,ezはそれぞれx,y,zの小数点位置を示す。また、e’x,e’y,e’zはそれぞれ右シフト前のx’,y’,z’の小数点位置を示す。これらの小数点位置は、下位ビットから数えた小数点位置のビット位置を表す。このビット位置を表す値は0から始まり、下位ビットから数えてe1ビット目が1を表すときに、小数点位置がe1であると表記する。
 [ハードウェア構成]
 各実施形態における秘密計算装置1~4および各実施例における秘密計算装置は、例えば、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)やRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される装置である。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、単独で処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。また、1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
 図5は、各実施形態における秘密計算装置1~4および各実施例における秘密計算装置のハードウェア構成を例示したブロック図である。図7に例示するように、この例の秘密計算装置1~4は、CPU(Central Processing Unit)10a、出力部10b、出力部10c、RAM(Random Access Memory)10d、ROM(Read Only Memory)10e、補助記憶装置10f及びバス10gを有している。この例のCPU10aは、制御部10aa、演算部10ab及びレジスタ10acを有し、レジスタ10acに読み込まれた各種プログラムに従って様々な演算処理を実行する。また、出力部10bは、データが出力される出力端子、ディスプレイ等である。また、出力部10cは、所定のプログラムを読み込んだCPU10aによって制御されるLANカード等である。また、RAM10dは、SRAM (Static Random Access Memory)、DRAM (Dynamic Random Access Memory)等であり、所定のプログラムが格納されるプログラム領域10da及び各種データが格納されるデータ領域10dbを有している。また、補助記憶装置10fは、例えば、ハードディスク、MO(Magneto-Optical disc)、半導体メモリ等であり、所定のプログラムが格納されるプログラム領域10fa及び各種データが格納されるデータ領域10fbを有している。また、バス10gは、CPU10a、出力部10b、出力部10c、RAM10d、ROM10e及び補助記憶装置10fを、情報のやり取りが可能なように接続する。CPU10aは、読み込まれたOS(Operating System)プログラムに従い、補助記憶装置10fのプログラム領域10faに格納されているプログラムをRAM10dのプログラム領域10daに書き込む。同様にCPU10aは、補助記憶装置10fのデータ領域10fbに格納されている各種データを、RAM10dのデータ領域10dbに書き込む。そして、このプログラムやデータが書き込まれたRAM10d上のアドレスがCPU10aのレジスタ10acに格納される。CPU10aの制御部10abは、レジスタ10acに格納されたこれらのアドレスを順次読み出し、読み出したアドレスが示すRAM10d上の領域からプログラムやデータを読み出し、そのプログラムが示す演算を演算部10abに順次実行させ、その演算結果をレジスタ10acに格納していく。このような構成により、図1から図4に例示した秘密計算装置1~4および各実施例における秘密計算装置の機能構成が実現される。
 上述のプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
 このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。上述のように、このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
 各実施形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
 なお、本発明は上述の実施形態に限定されるものではない。例えば、具体例を示した以外の初等関数を秘密計算を行う場合に本発明が用いられてもよい。また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
 本発明は、例えば、データを秘匿化しつつ秘密計算で行う機械学習やデータマイニングでの逆数関数、平方根関数、指数関数、対数関数などの初等関数の計算に利用できる。
1~4 秘密計算装置

Claims (8)

  1.  x,y,zが実数であり、a,b,c,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
     前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得る第1秘密計算部と、
     前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって前記実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[y(ζy+b)+cx]を得て出力する第2秘密計算部と、
    を有する秘密計算装置。
  2.  x,y,z,wが実数であり、a,b,c,d,f,g,α,β,γ,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
     前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得る第1秘密計算部と、
     前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって秘密分散値[z]=[y(ζy+b)+cx]を得る第2秘密計算部と、
     前記秘密分散値[x]、前記秘密分散値[y]、および前記秘密分散値[z]を用いた秘密計算によって前記実数xの初等関数近似値w=func(x)の秘密分散値[func(x)]=[γ(z(αz+d)+y(βx+f)+gx)]を得て出力する第3秘密計算部と
    を有する秘密計算装置。
  3.  x,y,zが実数であり、a,b,c,γ,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
     前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得る第1秘密計算部と、
     前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって前記実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[γ(y(ζy+b)+cx)]を得て出力する第2秘密計算部と、
    を有する秘密計算装置。
  4.  請求項1から3の何れかの秘密計算装置であって、
     χが実数であり、pが正整数であり、Lが2以上の整数であり、[・]がpを法とした剰余環上の要素・を線形秘密分散した秘密分散値であり、{・}が2を法とした剰余環上の要素・を線形秘密分散した秘密分散値であり、
     前記実数χの秘密分散値[χ]を用いた秘密計算によって前記実数χのLビット表現χ…χL-1の秘密分散値{χ},…,{χL-1}を得る第5秘密計算部と、
     前記秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、ビット列χ…χL-1の最上位ビットχmsbに対応するビットηmsbが1であり、前記ビットηmsb以外のビットηξ(ξ∈{0,…,L-1})が0であるmsbフラグ列η,…,ηL-1の秘密分散値{η},…,{ηL-1}を得る第6秘密計算部と、
     前記秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、0≦i<L-1における秘密分散値{ρ}={ρi+1∨χ}および秘密分散値{ρL-1}={χL-1}を得る第7秘密計算部と、
     前記秘密分散値{ρ},…,{ρL-1}を用いた秘密計算によって、ρ,…,ρL-1のうち1である要素の個数を表すカウント値θの秘密分散値[θ]を得る第8秘密計算部と、
     前記秘密分散値{η},…,{ηL-1}を用いた秘密計算によって前記msbフラグ列η,…,ηL-1をビット結合したmsbフラグ値ν=η…ηL-1の秘密分散値[ν]を得る第9秘密計算部と、
     前記秘密分散値[χ]および前記秘密分散値[ν]を用いた秘密計算によって秘密分散値[x]=[χ][ν]を得る第10秘密計算部と、
     前記秘密分散値[func(x)]および前記秘密分散値[θ]を用いた秘密計算によって[log χ]=[func(x)]-[θ]を得て出力する第11秘密計算部と、
    を有する秘密計算装置。
  5.  x,y,zが実数であり、a,b,c,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
     第1秘密計算部が、前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得る第1秘密計算ステップと、
     第2秘密計算部が、前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって前記実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[y(ζy+b)+cx]を得て出力する第2秘密計算ステップと、
    を有する秘密計算方法。
  6.  x,y,z,wが実数であり、a,b,c,d,f,g,α,β,γ,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
     第1秘密計算部が、前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得る第1秘密計算ステップと、
     第2秘密計算部が、前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって秘密分散値[z]=[y(ζy+b)+cx]を得る第2秘密計算ステップと、
     第3秘密計算部が、前記秘密分散値[x]、前記秘密分散値[y]、および前記秘密分散値[z]を用いた秘密計算によって前記実数xの初等関数近似値w=func(x)の秘密分散値[func(x)]=[γ(z(αz+d)+y(βx+f)+gx)]を得て出力する第3秘密計算ステップと
    を有する秘密計算方法。
  7.  x,y,zが実数であり、a,b,c,γ,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
     第1秘密計算部が、前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得る第1秘密計算ステップと、
     第2秘密計算部が、前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって前記実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[γ(y(ζy+b)+cx)]を得て出力する第2秘密計算ステップと、
    を有する秘密計算方法。
  8.  請求項1から4の何れかの秘密計算装置としてコンピュータを機能させるためのプログラム。
     
PCT/JP2020/001681 2020-01-20 2020-01-20 秘密計算装置、秘密計算方法、およびプログラム WO2021149104A1 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2021572126A JP7290177B2 (ja) 2020-01-20 2020-01-20 秘密計算装置、秘密計算方法、およびプログラム
PCT/JP2020/001681 WO2021149104A1 (ja) 2020-01-20 2020-01-20 秘密計算装置、秘密計算方法、およびプログラム
CN202080093455.6A CN114981861A (zh) 2020-01-20 2020-01-20 秘密计算装置、秘密计算方法及程序
EP20915962.3A EP4095832A4 (en) 2020-01-20 2020-01-20 SECURE CALCULATION DEVICE, SECURE CALCULATION METHOD AND PROGRAM
US17/791,907 US20220407682A1 (en) 2020-01-20 2020-01-20 Secure computation apparatus, secure computation method, and program
AU2020425196A AU2020425196B2 (en) 2020-01-20 2020-01-20 Secure computation apparatus, secure computation method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/001681 WO2021149104A1 (ja) 2020-01-20 2020-01-20 秘密計算装置、秘密計算方法、およびプログラム

Publications (1)

Publication Number Publication Date
WO2021149104A1 true WO2021149104A1 (ja) 2021-07-29

Family

ID=76992096

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/001681 WO2021149104A1 (ja) 2020-01-20 2020-01-20 秘密計算装置、秘密計算方法、およびプログラム

Country Status (6)

Country Link
US (1) US20220407682A1 (ja)
EP (1) EP4095832A4 (ja)
JP (1) JP7290177B2 (ja)
CN (1) CN114981861A (ja)
AU (1) AU2020425196B2 (ja)
WO (1) WO2021149104A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019225531A1 (ja) * 2018-05-25 2019-11-28 日本電信電話株式会社 秘密一括近似システム、秘密計算装置、秘密一括近似方法、およびプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019225531A1 (ja) * 2018-05-25 2019-11-28 日本電信電話株式会社 秘密一括近似システム、秘密計算装置、秘密一括近似方法、およびプログラム

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CHUAN GUO; AWNI HANNUN; BRIAN KNOTT; LAURENS VAN DER MAATEN; MARK TYGERT; RUIYU ZHU: "Secure multiparty computations in floating-point arithmetic", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 201 OLIN LIBRARY CORNELL UNIVERSITY ITHACA, NY 14853, 9 January 2020 (2020-01-09), 201 Olin Library Cornell University Ithaca, NY 14853, XP081575971 *
SANSHIN KIBUKI; IGARASHI OHHAMA; HIROKI; KIKUCHI RYO: "Designs and Implementations of Efficient and Accurate Secret Logistic Regression", PROCEEDINGS COMPUTER SECURITY SYMPOSIUM 2018, 22-25 OCTOBER 2018, INFORMATION PROCESSING SOCIETY OF JAPAN, JAPAN, vol. 2018, no. 2, 15 October 2018 (2018-10-15), Japan, pages 1229 - 1236, XP009522747 *
TOSHIYUKI TAKADA , HIROYUKI HANADA, ATSUSHI SAKUMA, ICHIRO TAKEUCHI: "Secure Approximation Guarantee for Private Empirical Risk Minimization with Homomorphic Encryption", IEICE TECHNICAL REPORT, vol. 115, no. 323 (IBISML2015-86), 19 November 2015 (2015-11-19), JP, pages 249 - 256, XP009530120, ISSN: 0913-5685 *

Also Published As

Publication number Publication date
EP4095832A4 (en) 2023-10-18
CN114981861A (zh) 2022-08-30
AU2020425196A1 (en) 2022-07-14
AU2020425196B2 (en) 2023-06-08
JP7290177B2 (ja) 2023-06-13
EP4095832A1 (en) 2022-11-30
JPWO2021149104A1 (ja) 2021-07-29
US20220407682A1 (en) 2022-12-22

Similar Documents

Publication Publication Date Title
JPWO2019087317A1 (ja) 秘密計算装置、システム、方法、プログラム
CN113608718A (zh) 一种实现素数域大整数模乘计算加速的方法
WO2021149104A1 (ja) 秘密計算装置、秘密計算方法、およびプログラム
Burgess A fast division algorithm for VLSI
US7366745B1 (en) High-speed function approximation
JP7091930B2 (ja) テンソルデータ計算装置、テンソルデータ計算方法及びプログラム
US11625225B2 (en) Applications of and techniques for quickly computing a modulo operation by a Mersenne or a Fermat number
WO2021149106A1 (ja) 秘密計算装置、秘密計算方法、およびプログラム
WO2021149105A1 (ja) 秘密計算装置、秘密計算方法、およびプログラム
Ye et al. High-performance NTT architecture for large integer multiplication
JP7331951B2 (ja) 秘密平方根計算システム、秘密正規化システム、それらの方法、秘密計算装置、およびプログラム
JP7331953B2 (ja) 秘密逆数計算システム、秘密正規化システム、それらの方法、秘密計算装置、およびプログラム
WO2021149103A1 (ja) 秘密計算装置、秘密計算方法、およびプログラム
JP7331952B2 (ja) 秘密平方根逆数計算システム、秘密正規化システム、それらの方法、秘密計算装置、およびプログラム
CN117908835B (zh) 一种基于浮点数计算能力加速sm2国密算法的方法
CN116738494B (zh) 基于秘密分享的多方安全计算的模型训练方法和装置
JP7351353B2 (ja) 秘密指数関数計算システム、秘密指数関数計算方法、秘密計算装置、およびプログラム
JP7405156B2 (ja) 秘密選択積計算システム、秘密選択積計算方法、秘密計算装置、およびプログラム
JP2005128832A (ja) データ処理装置と剰余演算回路
Mohan et al. Modulo Multiplication and Modulo Squaring

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021572126

Country of ref document: JP

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2020425196

Country of ref document: AU

Date of ref document: 20200120

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020915962

Country of ref document: EP

Effective date: 20220822