[go: up one dir, main page]

WO2022079890A1 - 秘密シフトシステム、秘密シフト装置、秘密シフト方法、プログラム - Google Patents

秘密シフトシステム、秘密シフト装置、秘密シフト方法、プログラム Download PDF

Info

Publication number
WO2022079890A1
WO2022079890A1 PCT/JP2020/039077 JP2020039077W WO2022079890A1 WO 2022079890 A1 WO2022079890 A1 WO 2022079890A1 JP 2020039077 W JP2020039077 W JP 2020039077W WO 2022079890 A1 WO2022079890 A1 WO 2022079890A1
Authority
WO
WIPO (PCT)
Prior art keywords
share
shift
secret
numerical value
upper limit
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
PCT/JP2020/039077
Other languages
English (en)
French (fr)
Inventor
大 五十嵐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Inc
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to AU2020472387A priority Critical patent/AU2020472387B2/en
Priority to PCT/JP2020/039077 priority patent/WO2022079890A1/ja
Priority to JP2022556802A priority patent/JP7485067B2/ja
Priority to EP20957719.6A priority patent/EP4210028B1/en
Priority to CN202080106084.0A priority patent/CN116324934B/zh
Priority to US18/029,919 priority patent/US20230379151A1/en
Publication of WO2022079890A1 publication Critical patent/WO2022079890A1/ja
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3033Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
    • 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
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators

Definitions

  • the present invention relates to a secret calculation technique, and particularly to a technique for performing a bit shift operation in a secret calculation.
  • Secret calculation is a method of obtaining the result of a specified operation without restoring the encrypted numerical value (see, for example, Reference Non-Patent Document 1).
  • Reference In the method of Non-Patent Document 1 encryption is performed by distributing a plurality of information whose numerical values can be restored to three secret computing devices, and addition / subtraction, constant sum, multiplication, and constant multiplication are performed without restoring the numerical values.
  • Logical operation negative, logical product, logical sum, exclusive logical sum
  • data format conversion integer, binary number
  • W is a predetermined constant of 3 or more
  • a protocol that realizes secret calculation by cooperative calculation by W secret computing devices is called a multi-party protocol.
  • Non-Patent Document 1 Koji Chida, Hiroki Hamada, Dai Igarashi, Katsumi Takahashi, “Reconsideration of Lightweight Verifiable 3-Party Concealed Function Calculation,” In CSS, 2010.
  • Non-Patent Document 2 As documents relating to a protocol and implementation of secret calculation for performing floating-point arithmetic.
  • the bit shift operation required to perform a floating-point operation is an operation that shifts the binary bit pattern to the left or right, and is one of the basic operations in computer processing.
  • an object of the present invention is to provide a secret calculation technique for performing a bit shift operation at high speed by using a protocol for performing a left shift by inputting a numerical value to be shifted and a shift amount.
  • P is a prime number
  • p is the number of bits of the prime number P
  • Q is the number of the remainder ring
  • M is the upper limit of the MSB position of the input numerical value
  • M' is the MSB allowed by the share.
  • the upper limit of the position, [R, R'] is the range of the right shift amount covered by the divided right shift, and it is composed of three or more secret shift devices
  • u be an integer that satisfies u ⁇ M'-M + 1
  • One aspect of the present invention is composed of three or more secret shift devices, where P is a prime number, p is the number of bits of the prime number P, and M is the upper limit of the shift amount, and the share of the numerical value a is [[a]] P. From the share of the shift amount ⁇ ⁇ ⁇ >> p (however, 0 ⁇ ⁇ ⁇ M, the value 2 M a obtained by shifting the value a to the left by M bits does not overflow), the value a is ⁇ bits to the right.
  • P is a prime number
  • p is the number of bits of the prime number P
  • Q is the number of the remainder ring
  • M is the upper limit of the MSB position of the input numerical value
  • three or more secret shift devices It is composed of the share [[a]] P of the numerical value a and the share ⁇ ⁇ >> Q of the shift amount ⁇ (however, if ⁇ ⁇ 0, it represents a left shift, and if ⁇ ⁇ 0, it represents a right shift.
  • (Caret) represents a superscript.
  • x y ⁇ z means that y z is a superscript for x
  • x y ⁇ z means that y z is a subscript for x
  • _ (underscore) represents a subscript.
  • x y_z means that y z is a superscript for x
  • x y_z means that y z is a subscript for x.
  • [[x]] y represents the mod y element x (k, n)-secretly shared share.
  • secret sharing for example, Shamir secret sharing or duplicate secret sharing can be used.
  • the mod y element x is represented by (k, n)-replica secret-shared share with ⁇ x >> y . Since (k, n) -replication secret sharing is (k, n) -secret sharing, the protocol applicable to (k, n) -secret sharing is (k, n) -replication secret sharing. Can also be applied.
  • the share is expressed as ⁇ x >> y , it means that the property of duplicate secret sharing is used.
  • (k, k) -replica secret sharing is called (k, k) -additive secret sharing.
  • the mod y element x is represented by (k, k) -additive secret-shared share by ⁇ x> y .
  • [[x]] 2 ⁇ m represents a share in which m shares of the format [[x]] 2 are arranged. Note that [[x]] 2 ⁇ m may be regarded as a bit representation of a numerical value.
  • X ⁇ y means that x and y are equal as real numbers on the computer. That is, it means that the difference between x and y is within a certain error range.
  • a / d represents the value of integer division with the decimal point truncated. Therefore, integer division by a power of 2 is equivalent to a right shift. Also, for two numbers a and d, (a / d) Re represents the value of real division.
  • Ceiling (a) represents the smallest integer greater than or equal to a for the number a.
  • Floating-point 2 b a (where a and b represent the mantissa and exponent, respectively) is referred to as the floating-point (a, b). Also, m floating point numbers 2 b_0 a 0 , 2 b_1 a 1 ,..., 2 b_m-1 a m-1 (however, a i and bi (0 ⁇ i ⁇ m) have a mantissa and an exponent, respectively.
  • ⁇ a (a 0 , a 1 ,..., a m-1 )
  • ⁇ b (b 0 , b 1 ,..., b m-1 )
  • the length m of the vector ⁇ a (a 0 , a 1 ,..., a m-1 ) may be expressed as
  • step2 Party 0 and party 1 share a random number r 01 . Also, party 1 and party 2 share a random number r 12 .
  • ⁇ ⁇ >> p 01 represents the share held by party 0 and party 1 with respect to the share ⁇ ⁇ >> p .
  • ⁇ a> P 0 represents the share held by party 0 with respect to share ⁇ a> P.
  • ⁇ ⁇ >> p 12 represents the share held by parties 1 and 2 with respect to the share ⁇ ⁇ >> p .
  • ⁇ a> P 1 represents the share held by party 1 with respect to share ⁇ a> P.
  • ⁇ ⁇ >> p 20 represents the share held by party 2 and party 0 with respect to the share ⁇ ⁇ >> p .
  • step1 Calculate the share ⁇ ⁇ >> p using the modulus transformation.
  • the modulus transformation for example, the modulus transformation using the above-mentioned quotient transfer can be used.
  • step3 Calculate ⁇ f L >> p using mod 2 ⁇ mod p conversion.
  • step7 Calculate [[f L ]] P using mod 2 ⁇ mod P conversion.
  • u is the right shift amount that can be covered by one shift amount concealed right shift (specifically, the amount in the range of 1 to M'-M bits), and d is the right in the range of 1 to M-1 bits.
  • the amount of shift required to shift is the number of times the hidden right shift is executed.
  • step2 Calculate the share ⁇ ⁇ >> p using the modulus transformation.
  • the modulus transformation for example, the modulus transformation using the above-mentioned quotient transfer can be used.
  • f d-1 for f L f d- 2 for f d-1 , and so on.
  • F 0 , f 1 ,..., f d-1 , f L with such properties are called transitive flags.
  • step4 Calculate ⁇ f 1 >> p , ⁇ f 2 >> p ,..., ⁇ f d-1 >> p , ⁇ f L >> p using mod 2 ⁇ mod p conversion ..
  • step8 mod 2 ⁇ mod P Use the conversion to calculate [[f 0 ]] P , [[f 1 ]] P ,..., [[f d-1 ]] P , [[f L ]] P ..
  • step1 Let u be an integer that satisfies u ⁇ M'-M + 1. Also, let [R, R'] be the range of the right shift amount covered by the divided right shift, and let d be an integer satisfying d ⁇ ceiling (((R'-R + 1) / u) Re ).
  • ⁇ L indicates that the calculation of the part enclosed in parentheses can be omitted when it is not necessary to consider the shift amount larger than -R (for example, when it is known that the shift is to the right). Also, ⁇ 0 is not an extremely large value when it is not necessary to consider a shift amount smaller than -R'(for example, the right shift amount is larger than the value to which the shift amount concealed shift (No. 1) can be applied). If you know that), it means that you can omit the calculation of the part enclosed in parentheses.
  • step2 Calculate the share ⁇ ⁇ >> p using the modulus transformation.
  • the modulus transformation for example, the modulus transformation using the above-mentioned quotient transfer can be used.
  • f d-1 for f L f d- 2 for f d-1 , and so on.
  • F 0 , f 1 ,..., f d-1 , f L with such properties are called transitive flags.
  • step4 Using mod 2 ⁇ mod p conversion, ⁇ f 1 >> p , ⁇ f 2 >> p ,..., ⁇ f d-1 >> p ⁇ , ⁇ f L >> p ⁇ L To calculate.
  • step8 Using mod 2 ⁇ mod P conversion, ⁇ [[f 0 ]] P , ⁇ 0 [[f 1 ]] P ,..., [[f d-1 ]] P ⁇ , [[f L ]] Calculate P ⁇ L.
  • FIG. 1 is a block diagram showing a configuration of the secret shift system 10.
  • the secret shift system 10 includes W secret shift devices 100 1 , ..., 100 W (W is a predetermined integer of 3 or more).
  • the secret shift devices 100 1 , ..., 100 W are connected to the network 800 and can communicate with each other.
  • the network 800 may be, for example, a communication network such as the Internet or a broadcast communication path.
  • FIG. 2 is a block diagram showing the configuration of the secret shift device 100 i (1 ⁇ i ⁇ W).
  • FIG. 3 is a flowchart showing the operation of the secret shift system 10.
  • the secret shift device 100 i includes a shift amount calculation unit 140 i , a left shift unit 150 i , a right shift unit 160 i , and a recording unit 190 i .
  • Each component of the secret shift device 100 i except the recording unit 190 i is required for the operation required for the secret calculation, that is, in order to realize the function of each component among the protocols described in ⁇ Technical Background>. It is configured to perform the required operations.
  • a specific functional configuration for realizing individual operations in the present invention for example, a configuration capable of executing the algorithms disclosed in each of Reference Non-Patent Documents 1 to 5 is sufficient, and these are conventional configurations. Since there is, a detailed explanation will be omitted.
  • the recording unit 190 i is a component unit that records information necessary for processing of the secret shift device 100 i . For example, the upper limit value M of the shift amount described later is recorded.
  • the secret shift system 10 realizes the secret calculation of the shift amount concealed right shift, which is a multi-party protocol. Therefore, the shift amount calculation means 140 (not shown) of the secret shift system 10 is composed of the shift amount calculation unit 140 1 , ..., 140 W , and the left shift means 150 (not shown) is the left shift unit 150 1 . , ..., 150 W , and the right shift means 160 (not shown) is composed of right shift unit 160 1 , ..., 160 W.
  • the operation of the secret shift system 10 will be described with reference to FIG.
  • the shift amount calculation means 140 calculates the share ⁇ M- ⁇ >> p from the share ⁇ ⁇ >> p and the upper limit value M.
  • the left shift means 150 may be configured to execute, for example, a shift amount concealed left shift.
  • the right shift means 160 may be configured so as to be able to execute, for example, a shift amount public right shift.
  • FIG. 4 is a block diagram showing the configuration of the secret shift system 20.
  • the secret shift system 20 includes W secret shift devices 2001, ..., 200 W (W is a predetermined integer of 3 or more).
  • the secret shift devices 2001 , ..., 200 W are connected to the network 800 and can communicate with each other.
  • the network 800 may be, for example, a communication network such as the Internet or a broadcast communication path.
  • FIG. 5 is a block diagram showing the configuration of the secret shift device 200 i (1 ⁇ i ⁇ W).
  • FIG. 6 is a flowchart showing the operation of the secret shift system 20.
  • the secret shift device 200 i includes a modulus conversion unit 210 i , a first flag calculation unit 220 i , a second flag calculation unit 230 i , a shift amount calculation unit 240 i , and a left shift unit 250. It includes i , a right shift unit 260 i , a third flag calculation unit 270 i , a shift value calculation unit 280 i , and a recording unit 290 i .
  • Each component of the secret shift device 200 i except the recording unit 290 i is required for the operation required for the secret calculation, that is, in order to realize the function of each component among the protocols described in ⁇ Technical Background>. It is configured to perform the required operations.
  • the recording unit 290 i is a component unit that records information necessary for processing of the secret shift device 200 i . For example, record the upper limit value M of the MSB position of the numerical value to be input later.
  • the secret shift system 20 realizes the secret calculation of the shift amount secret shift (No. 1), which is a multi-party protocol, by the cooperative calculation by the W secret shift devices 200 i . Therefore, the modulus conversion means 210 (not shown) of the secret shift system 20 is composed of the modulus conversion units 210 1 , ..., 210 W , and the first flag calculation means 220 (not shown) is the first flag calculation unit. 220 1 , ..., 220 W , the second flag calculation means 230 (not shown) is composed of the second flag calculation unit 230 1 , ..., 230 W , and the shift amount calculation means 240 (not shown).
  • Consists of shift amount calculation units 240 1 , ..., 240 W , and the left shift means 250 (not shown) is composed of left shift units 250 1 , ..., 250 W , and the right shift means 260 (shown in the figure). (Not shown) is composed of right shift units 260 1 , ..., 260 W , and the third flag calculation means 270 (not shown) is composed of third flag calculation units 270 1 , ..., 270 W , and is a shift value calculation means.
  • 280 (not shown) is composed of a shift value calculation unit 280 1 , ..., 280 W.
  • the operation of the secret shift system 20 will be described with reference to FIG.
  • the modulus conversion means 210 calculates the share ⁇ ⁇ >> p from the share ⁇ ⁇ >> Q.
  • the modulus conversion means 210 may be configured so as to be able to perform the modulus conversion, for example.
  • the first flag calculation means 220 calculates, for example, the share ⁇ ( ⁇ ⁇ 0) >> Q from the share ⁇ ⁇ >> Q , and uses the modulus transformation to calculate the share ⁇ ( ⁇ ⁇ 0) >> Q.
  • the second flag calculation means 230 calculates the share ⁇ f L >> p from the share [[f L ]] 2 calculated in S220.
  • the second flag calculation means 230 may be configured so as to be able to execute, for example, a mod 2 ⁇ mod p conversion.
  • the left shift means 250 may be configured to execute, for example, a shift amount concealed left shift.
  • the right shift means 260 may be configured so as to be able to execute, for example, a shift amount open right shift.
  • the third flag calculation means 270 calculates the share [[f L ]] P from the share [[f L ]] 2 calculated in S220.
  • the third flag calculation means 270 may be configured to execute, for example, mod 2 ⁇ mod P conversion.
  • the shift value calculation means 280 is shared from the share [[b]] P calculated in S250 and the share [[c]] P calculated in S260 and the share [[f L ]] P calculated in S270.
  • [s]] P [[c]] P + ([[b]] P -[[c]] P ) [[f L ]] P is calculated.
  • the embodiment of the present invention it is possible to perform a shift operation at high speed while concealing the numerical value to be shifted and the shift amount.
  • the amount that can be shifted to the right is limited, it is possible to perform the shift operation at high speed.
  • FIG. 7 is a block diagram showing the configuration of the secret shift system 30.
  • the secret shift system 30 includes W secret shift devices 300 1 , ..., 300 W (W is a predetermined integer of 3 or more).
  • the secret shift devices 300 1 , ..., 300 W are connected to the network 800 and can communicate with each other.
  • the network 800 may be, for example, a communication network such as the Internet or a broadcast communication path.
  • FIG. 8 is a block diagram showing the configuration of the secret shift device 300 i (1 ⁇ i ⁇ W).
  • FIG. 9 is a flowchart showing the operation of the secret shift system 30.
  • the secret shift device 300 i includes a modulus conversion unit 310 i , a first flag calculation unit 320 i , a second flag calculation unit 330 i , a shift amount calculation unit 340 i , and a left shift unit 350. It includes i , a right shift unit 360 i , a third flag calculation unit 370 i , a shift value calculation unit 380 i , and a recording unit 390 i .
  • Each component of the secret shift device 300 i except the recording unit 390 i is required for the operation required for the secret calculation, that is, in order to realize the function of each component among the protocols described in ⁇ Technical Background>. It is configured to perform the required operations.
  • the recording unit 390 i is a component unit that records information necessary for processing of the secret shift device 300 i .
  • the upper limit value M hereinafter referred to as the first upper limit value
  • the upper limit value M' hereinafter referred to as the second upper limit value
  • the secret shift system 30 realizes the secret calculation of the shift amount secret shift (No. 2), which is a multi-party protocol, by the cooperative calculation by the W secret shift devices 300 i . Therefore, the modulus conversion means 310 (not shown) of the secret shift system 30 is composed of the modulus conversion units 310 1 , ..., 310 W , and the first flag calculation means 320 (not shown) is the first flag calculation unit. 320 1 , ..., 320 W , the second flag calculation means 330 (not shown) is composed of the second flag calculation unit 330 1 , ..., 330 W , and the shift amount calculation means 340 (not shown).
  • Consists of shift amount calculation units 340 1 , ..., 340 W , and the left shift means 350 (not shown) is composed of left shift units 350 1 , ..., 350 W , and the right shift means 360 (shown in the figure). (Not shown) is composed of right shift units 360 1 , ..., 360 W , and the third flag calculation means 370 (not shown) is composed of third flag calculation units 370 1 , ..., 370 W , and is a shift value calculation means.
  • 380 (not shown) is composed of a shift value calculation unit 380 1 , ..., 380 W.
  • the operation of the secret shift system 30 will be described with reference to FIG.
  • the modulus conversion means 310 calculates the share ⁇ ⁇ >> p from the share ⁇ ⁇ >> Q.
  • the modulus conversion means 310 may be configured so as to be able to perform the modulus conversion, for example.
  • the first flag calculation means 320 is, for example, from share ⁇ ⁇ >> Q to share ⁇ ( ⁇ ⁇ -M + 1) >> Q , ⁇ ( ⁇ ⁇ -M + 1 + u) >> Q , ... , ⁇ ( ⁇ ⁇ -M + 1 + (d-1) u) >> Q , ⁇ ( ⁇ ⁇ 0) >> Q is calculated and shared using modulus transformation ⁇ ( ⁇ ⁇ -M +) 1) >> Q , ⁇ ( ⁇ ⁇ -M + 1 + u) >> Q ,..., ⁇ ( ⁇ ⁇ -M + 1 + (d-1) u) >> Q , ⁇ ( ⁇ ⁇ ) 0) >> Share from Q ⁇ ( ⁇ ⁇ -M + 1) >> 2 , ⁇ ( ⁇ ⁇ -M + 1 + u) >> 2 ,..., ⁇ ( ⁇ ⁇ -M + 1 +) d-1) u) >> 2 , ⁇ ( ⁇ ⁇ 0) >> 2 is calculated and share ⁇ (
  • the share ⁇ ⁇ >> p may be used instead of the share ⁇ ⁇ >> Q.
  • the numerical value u and the numerical value d may be calculated by the first flag calculation means 320 from the first upper limit value M and the second upper limit value M', and the numerical value u and the numerical value d may be calculated in advance by the recording unit. It may be recorded in 390 i .
  • the second flag calculation means 330 has the share [[f 1 ]] 2 , [[f 2 ]] 2 , ..., [[f d-1 ]] 2 , [[f L ]] calculated in S320. From 2 , calculate the share ⁇ f 1 >> p , ⁇ f 2 >> p ,..., ⁇ f d-1 >> p , ⁇ f L >> p .
  • the second flag calculation means 330 may be configured so as to be able to execute, for example, a mod 2 ⁇ mod p conversion.
  • the left shift means 350 may be configured so as to be able to execute, for example, a shift amount concealed left shift.
  • the right shift means 360 may be configured so as to be able to execute, for example, a batch shift amount public right shift.
  • the third flag calculation means 370 has the share [[f 0 ]] 2 , [[f 1 ]] 2 , ..., [[f d-1 ]] 2 , [[f L ]] calculated in S320. From 2 , calculate the share [[f 0 ]] P , [[f 1 ]] P ,..., [[f d-1 ]] P , [[f L ]] P.
  • the third flag calculation means 370 may be configured to execute, for example, mod 2 ⁇ mod P conversion.
  • the shift value calculation means 380 has a share [[b]] P calculated in S350 and a share [[c 0 ]] P , [[c 1 ]] P ,..., [[c d- ] calculated in S360.
  • the embodiment of the present invention it is possible to perform a shift operation at high speed while concealing the numerical value to be shifted and the shift amount. In particular, it is possible to perform a shift operation at high speed without limiting the amount that can be shifted to the right.
  • FIG. 7 is a block diagram showing the configuration of the secret shift system 40.
  • the secret shift system 40 includes W secret shift devices 400 1 , ..., 400 W (W is a predetermined integer of 3 or more).
  • the secret shift devices 400 1 , ..., 400 W are connected to the network 800 and can communicate with each other.
  • the network 800 may be, for example, a communication network such as the Internet or a broadcast communication path.
  • FIG. 8 is a block diagram showing the configuration of the secret shift device 400 i (1 ⁇ i ⁇ W).
  • FIG. 9 is a flowchart showing the operation of the secret shift system 40.
  • the secret shift device 400 i includes a modulus conversion unit 410 i , a first flag calculation unit 420 i , a second flag calculation unit 430 i , a shift amount calculation unit 440 i , and a left shift unit 450. It includes i , a right shift unit 460 i , a third flag calculation unit 470 i , a shift value calculation unit 480 i , and a recording unit 490 i .
  • Each component of the secret shift device 400 i except the recording unit 490 i is required for the operation required for the secret calculation, that is, in order to realize the function of each component among the protocols described in ⁇ Technical Background>. It is configured to perform the required operations.
  • the recording unit 490 i is a component unit that records information necessary for processing of the secret shift device 400 i .
  • the upper limit value M hereinafter referred to as the first upper limit value
  • M' hereinafter referred to as the second upper limit value
  • the secret shift system 40 realizes the secret calculation of the shift amount secret shift (No. 3) which is a multi-party protocol. Therefore, the modulus conversion means 410 (not shown) of the secret shift system 40 is composed of the modulus conversion units 410 1 , ..., 410 W , and the first flag calculation means 420 (not shown) is the first flag calculation unit. 420 1 , ..., 420 W , the second flag calculation means 430 (not shown) is composed of the second flag calculation unit 430 1 , ..., 430 W , and the shift amount calculation means 440 (not shown).
  • Consists of shift amount calculation units 440 1 , ..., 440 W , and the left shift means 450 (not shown) is composed of left shift units 450 1 , ..., 450 W , and the right shift means 460 (shown in the figure). (Not shown) is composed of right shift units 460 1 , ..., 460 W , and the third flag calculation means 470 (not shown) is composed of third flag calculation units 470 1 , ..., 470 W , and is a shift value calculation means.
  • 480 (not shown) is composed of a shift value calculation unit 480 1 , ..., 480 W.
  • the secret shift system 40 will be described with reference to FIG.
  • the modulus conversion means 410 calculates the share ⁇ ⁇ >> p from the share ⁇ ⁇ >> Q.
  • the modulus conversion means 410 may be configured so as to be able to perform the modulus conversion, for example.
  • the first flag calculation means 420 is, for example, from share ⁇ ⁇ >> Q to share ⁇ ( ⁇ ⁇ -R') >> Q , ⁇ ( ⁇ ⁇ -R'+ u) >> Q ,..., ⁇ ( ⁇ ⁇ -R'+ (d-1) u) >> Q , ⁇ ( ⁇ ⁇ -R + 1) >> Calculate Q and share using modulus transformation ⁇ ( ⁇ ⁇ -R' ) >> Q , ⁇ ( ⁇ ⁇ -R'+ u) >> Q ,..., ⁇ ( ⁇ ⁇ -R'+ (d-1) u) >> Q , ⁇ ( ⁇ ⁇ -R +) 1) >> Share from Q ⁇ ( ⁇ ⁇ -R') >> 2 , ⁇ ( ⁇ ⁇ -R'+ u) >> 2 ,..., ⁇ ( ⁇ ⁇ -R'+ (d-1) ) u) >> 2 , ⁇ ( ⁇ ⁇ -R + 1) >> 2 and share ⁇ ( ⁇ ⁇
  • the second flag calculation means 430 has the share [[f 1 ]] 2 , [[f 2 ]] 2 , ..., [[f d-1 ]] 2 , [[f L ]] calculated in S420. From 2 , calculate the share ⁇ f 1 >> p , ⁇ f 2 >> p ,..., ⁇ f d-1 >> p , ⁇ f L >> p .
  • the second flag calculation means 430 may be configured so as to be able to execute, for example, mod 2 ⁇ mod p conversion.
  • the left shift means 450 may be configured to execute, for example, a shift amount concealed left shift.
  • the right shift means 460 may be configured so as to be able to execute, for example, a batch shift amount public right shift.
  • the third flag calculation means 470 has the share [[f 0 ]] 2 , [[f 1 ]] 2 , ..., [[f d-1 ]] 2 , [[f L ]] calculated in S420. From 2 , calculate the share [[f 0 ]] P , [[f 1 ]] P ,..., [[f d-1 ]] P , [[f L ]] P.
  • the third flag calculation means 470 may be configured to execute, for example, mod 2 ⁇ mod P conversion.
  • the shift value calculation means 480 has a share [[b]] P calculated in S450 and a share [[c 0 ]] P , [[c 1 ]] P ,..., [[c d- ] calculated in S460.
  • Shift amount Concealed shift (No. 3) is when it is not necessary to consider the shift amount larger than -R or when it is not necessary to consider the shift amount smaller than -R', as explained in ⁇ Technical background>. Can omit some calculations. Therefore, if any of these two applies, the secret shift system 40 can be configured to omit some calculations.
  • the embodiment of the present invention it is possible to perform a shift operation at high speed while concealing the numerical value to be shifted and the shift amount. In particular, it is possible to perform a shift operation at high speed without limiting the amount that can be shifted to the right.
  • FIG. 10 is a diagram showing an example of a functional configuration of a computer that realizes each of the above-mentioned devices.
  • the processing in each of the above-mentioned devices can be carried out by having the recording unit 2020 read a program for making the computer function as each of the above-mentioned devices and operating the control unit 2010, the input unit 2030, the output unit 2040, and the like.
  • the device of the present invention is, for example, as a single hardware entity, an input unit to which a keyboard or the like can be connected, an output unit to which a liquid crystal display or the like can be connected, and a communication device (for example, a communication cable) capable of communicating outside the hardware entity.
  • Communication unit CPU (Central Processing Unit, cache memory, registers, etc.) to which can be connected, RAM and ROM as memory, external storage device as hard hardware, and input, output, and communication units of these.
  • CPU, RAM, ROM has a bus connecting so that data can be exchanged between external storage devices.
  • a device (drive) or the like capable of reading and writing a recording medium such as a CD-ROM may be provided in the hardware entity.
  • a physical entity equipped with such hardware resources there is a general-purpose computer or the like.
  • the external storage device of the hardware entity stores a program required to realize the above-mentioned functions and data required for processing of this program (not limited to the external storage device, for example, reading a program). It may be stored in a ROM, which is a dedicated storage device). Further, the data obtained by the processing of these programs is appropriately stored in a RAM, an external storage device, or the like.
  • each program stored in the external storage device (or ROM, etc.) and the data required for processing of each program are read into the memory as needed, and are appropriately interpreted and executed and processed by the CPU. ..
  • the CPU realizes a predetermined function (each component represented by the above, ... section, ... means, etc.).
  • the present invention is not limited to the above-described embodiment, and can be appropriately modified without departing from the spirit of the present invention. Further, the processes described in the above-described embodiment are not only executed in chronological order according to the order described, but may also be executed in parallel or individually depending on the processing capacity of the device that executes the processes or if necessary. ..
  • the processing function in the hardware entity (device of the present invention) described in the above embodiment is realized by the computer, the processing content of the function that the hardware entity should have is described by the program. Then, by executing this program on the computer, the processing function in the above hardware entity is realized on the computer.
  • the program that describes this processing content can be recorded on a computer-readable recording medium.
  • the recording medium that can be read by a computer may be, for example, a magnetic recording device, an optical disk, a photomagnetic recording medium, a semiconductor memory, or the like.
  • a hard disk device, a flexible disk, a magnetic tape or the like as a magnetic recording device, and an optical disk such as a DVD (DigitalVersatileDisc), a DVD-RAM (RandomAccessMemory), or a CD-ROM (CompactDiscReadOnly). Memory), CD-R (Recordable) / RW (ReWritable), etc., MO (Magneto-Optical disc), etc. as a magneto-optical recording medium, EEP-ROM (Electronically Erasable and Programmable-Read Only Memory), etc. as a semiconductor memory. Can be used.
  • 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 in which the program is recorded. Further, 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 the network.
  • a computer that executes such a program first, for example, first stores a program recorded on a portable recording medium or a program transferred from a 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. Further, as another execution form of this 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. You may execute the process according to the received program one by one each time. In addition, 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 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 that regulates the processing of the computer, etc.).
  • the hardware entity is configured by executing a predetermined program on the computer, but at least a part of these processing contents may be realized in terms of hardware.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Complex Calculations (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Communication Control (AREA)
  • Storage Device Security (AREA)
  • Error Detection And Correction (AREA)

Abstract

シフト対象となる数値とシフト量を入力として左シフトを行うプロトコルを用いて、高速にビットシフト演算を行う秘密計算技術を提供する。数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>Qから、数値aをρビットシフトして得られる数値sのシェア[[s]]Pを計算する秘密シフトシステムであって、シェア<<ρ>>pを計算するモジュラス変換手段と、シェア[[f0]]2, …, [[fL]]2を計算する第1フラグ計算手段と、シェア<<f1>>p, …, <<fL>>pを計算する第2フラグ計算手段と、シェア<<ρ'>>pを計算するシフト量計算手段と、シェア[[b]]Pを計算する左シフト手段と、シェア[[c0]]P, …,[[cd-1]]Pを計算する右シフト手段と、シェア[[f0]]P, …, [[fL]]Pを計算する第3フラグ計算手段と、シェア[[s]]Pを計算するシフト値計算手段とを含む。

Description

秘密シフトシステム、秘密シフト装置、秘密シフト方法、プログラム
 本発明は、秘密計算技術に関し、特に秘密計算においてビットシフト演算を行う技術に関する。
 秘密計算とは、暗号化された数値を復元することなく指定された演算の結果を得る方法のことである(例えば参考非特許文献1参照)。参考非特許文献1の方法では、数値を復元することのできる複数の情報を3つの秘密計算装置に分散するという暗号化を行い、数値を復元することなく、加減算、定数和、乗算、定数倍、論理演算(否定、論理積、論理和、排他的論理和)、データ形式変換(整数、二進数)の結果を3つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。一般に、分散数は3に限らずW(Wは3以上の所定の定数)とすることができ、W個の秘密計算装置による協調計算によって秘密計算を実現するプロトコルはマルチパーティプロトコルと呼ばれる。
(参考非特許文献1:千田浩司, 濱田浩気, 五十嵐大, 高橋克巳, “軽量検証可能3パーティ秘匿関数計算の再考,” In CSS,2010.)
 従来、浮動小数点演算を行う秘密計算のプロトコルや実装に関する文献として、非特許文献1や非特許文献2がある。浮動小数点演算を行うために必要となるビットシフト演算は、2進数のビットパターンを左右にずらす演算であり、コンピュータ処理では基本的な演算の一つである。
天田拓磨, 奈良成泰, 西出隆志, 吉浦裕,"通信量を削減した浮動小数点演算のためのマルチパーティ計算,"情報処理学会論文誌, Vol.60, No.9, pp.1433-1447, 2019. Randmets, J., "Programming Languages for Secure Multi-party Computation Application Development," PhD thesis. University of Tartu, 2017.
 しかし、ビットシフト演算を秘密計算で実行する場合、左右のシフト方向とシフト量を秘匿しながら演算するため計算コストが大きいという問題がある。
 そこで本発明は、シフト対象となる数値とシフト量を入力として左シフトを行うプロトコルを用いて、高速にビットシフト演算を行う秘密計算技術を提供することを目的とする。
 本発明の一態様は、Pを素数、pを素数Pのビット数、Qを剰余環の位数、Mを入力される数値のMSB位置のとりうる上限値、M’をシェアが許容するMSB位置の上限値、[R, R’]を分割した右シフトでカバーする右シフト量の範囲とし、3個以上の秘密シフト装置で構成され、数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>Q(ただし、ρ≧0の場合は左シフト、ρ<0の場合は右シフトを表すものとする)から、数値aをρビットシフトして得られる数値sのシェア[[s]]P(ただし、s=2ρa)を計算する秘密シフトシステムであって、シェア<<ρ>>Qから、シェア<<ρ>>pを計算するモジュラス変換手段と、uをu≦M’-M+1を満たす整数、dをd≧ceiling(((R’-R+1)/u)Re)を満たす整数とし、シェア<<ρ>>Qまたはシェア<<ρ>>pと範囲[R, R’]と数値uと数値dから、シェア[[f0]]2=[[(ρ≧-R’)]]2, [[f1]]2=[[(ρ≧-R’+u)]]2, …, [[fd-1]]2=[[(ρ≧-R’+(d-1)u)]]2, [[fL]]2=[[(ρ≧-R+1)]]2を計算する第1フラグ計算手段と、シェア[[f1]]2, [[f2]]2, …, [[fd-1]]2, [[fL]]2から、シェア<<f1>>p, <<f2>>p, …, <<fd-1>>p, <<fL>>pを計算する第2フラグ計算手段と、シェア<<ρ>>pとシェア<<f1>>p, <<f2>>p, …,<<fd-1>>p, <<fL>>pと範囲の上限値R’と数値uと数値dから、シェア<<ρ’>>p=<<ρ>>p+R’-u(Σ1≦i<d<<fi>>p)+((d-1)u-R’)<<fL>>pを計算するシフト量計算手段と、シェア[[a]]Pとシェア<<ρ’>>pから、シェア[[b]]P=[[2ρ’a]]Pを計算する左シフト手段と、シェア[[b]]Pと範囲の上限値R’と数値uと数値dから、シェア[[c0]]P=[[2ρ’a/2R’]]P, [[c1]]P=[[2ρ’a/(2R’-u)]]P, …,[[cd-1]]P=[[2ρ’a/(2R’-(d-1)u)]]Pを計算する右シフト手段と、シェア[[f0]]2, [[f1]]2, …, [[fd-1]]2, [[fL]]2から、シェア[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pを計算する第3フラグ計算手段と、シェア[[b]]Pとシェア[[c0]]P, [[c1]]P, …, [[cd-1]]Pとシェア[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pから、シェア[[s]]P=[[c0]]P[[f0]]P+([[c1]]P-[[c0]]P)[[f1]]P+…+([[cd-1]]P-[[cd-2]]P)[[fd-1]]P+([[b]]P-[[cd-1]]P)[[fL]]Pを計算するシフト値計算手段と、を含む。
 本発明の一態様は、Pを素数、pを素数Pのビット数、Mをシフト量の上限値とし、3個以上の秘密シフト装置で構成され、数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>p(ただし、0≦ρ≦M, 数値aをMビット左シフトして得られる数値2Maはオーバーフローしないものとする)から、数値aをρビット右シフトして得られる数値sのシェア[[s]]P(ただし、s=a/2ρ)を計算する秘密シフトシステムであって、シェア<<ρ>>pと上限値Mから、シェア<<M-ρ>>pを計算するシフト量計算手段と、シェア[[a]]Pとシェア<<M-ρ>>pから、シェア[[b]]P=[[2M-ρa]]Pを計算する左シフト手段と、シェア[[b]]Pと上限値Mから、シェア[[s]]P=[[2M-ρa/2M]]Pを計算する右シフト手段と、を含む。
 本発明の一態様は、Pを素数、pを素数Pのビット数、Qを剰余環の位数、Mを入力される数値のMSB位置のとりうる上限値とし、3個以上の秘密シフト装置で構成され、数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>Q(ただし、ρ≧0の場合は左シフト、ρ<0の場合は右シフトを表すものとする)から、数値aをρビットシフトして得られる数値sのシェア[[s]]P(ただし、s=2ρa)を計算する秘密シフトシステムであって、シェア<<ρ>>Qから、シェア<<ρ>>pを計算するモジュラス変換手段と、シェア<<ρ>>Qまたはシェア<<ρ>>pから、シェア[[fL]]2=[[(ρ≧0)]]2を計算する第1フラグ計算手段と、シェア[[fL]]2から、シェア<<fL>>pを計算する第2フラグ計算手段と、シェア<<ρ>>pとシェア<<fL>>pと上限値Mから、シェア<<ρ’>>p=<<ρ>>p+M-M<<fL>>pを計算するシフト量計算手段と、シェア[[a]]Pとシェア<<ρ’>>pから、シェア[[b]]P=[[2ρ’a]]Pを計算する左シフト手段と、シェア[[b]]Pと上限値Mから、シェア[[c]]P=[[2ρ’a/2M]]Pを計算する右シフト手段と、シェア[[fL]]2から、シェア[[fL]]Pを計算する第3フラグ計算手段と、シェア[[b]]Pとシェア[[c]]Pとシェア[[fL]]Pから、シェア[[s]]P=[[c]]P+([[b]]P-[[c]]P)[[fL]]Pを計算するシフト値計算手段と、を含む。
 本発明によれば、シフト対象となる数値とシフト量を秘匿したまま高速にシフト演算を行うことが可能となる。
秘密シフトシステム10の構成を示すブロック図である。 秘密シフト装置100iの構成を示すブロック図である。 秘密シフトシステム10の動作を示すフローチャートである。 秘密シフトシステム20の構成を示すブロック図である。 秘密シフト装置200iの構成を示すブロック図である。 秘密シフトシステム20の動作を示すフローチャートである。 秘密シフトシステム30の構成を示すブロック図である。 秘密シフト装置300iの構成を示すブロック図である。 秘密シフトシステム30の動作を示すフローチャートである。 本発明の実施形態における各装置を実現するコンピュータの機能構成の一例を示す図である。
 以下、本発明の実施形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
 各実施形態の説明に先立って、この明細書における表記方法について説明する。
 ^(キャレット)は上付き添字を表す。例えば、xy^zはyzがxに対する上付き添字であり、xy^zはyzがxに対する下付き添字であることを表す。また、_(アンダースコア)は下付き添字を表す。例えば、xy_zはyzがxに対する上付き添字であり、xy_zはyzがxに対する下付き添字であることを表す。
 また、ある文字xに対する^xや~xのような上付き添え字の”^”や”~”は、本来”x”の真上に記載されるべきであるが、明細書の記載表記の制約上、^xや~xと記載しているものである。
<技術的背景>
 本発明の各実施形態における秘密計算は、既存の秘密計算上のプロトコルを用いて構築される。ここでは、まず記法について説明する。
《記法》
 Pを素数とする。例えば、メルセンヌ素数P=261-1とするとよい。pを素数Pのビット数とする。なお、p=|P|と表すこともある。Pがメルセンヌ素数であるとき、pは素数となる。例えば、P=261-1とすると、p=61となる。また、Qを剰余環の位数とする。位数Qは素数Pやそのビット数pとして用いる。また、位数Qは浮動小数点の指数部に用いることができる。位数Qを浮動小数点の指数部に用いる場合、例えば、Q=213-1とすることができる。
 kを秘密分散の閾値とする。例えば、k=2とするとよい。また、nを秘密分散の分散数(つまり、秘密計算のパーティ数)とする。例えば、n=3とするとよい。
 [[x]]yはmod y 要素xを(k, n)-秘密分散したシェアを表す。秘密分散の方法として、例えば、Shamir秘密分散や複製秘密分散を用いることができる。以下、mod y 要素xを(k, n)-複製秘密分散したシェアを<<x>>yで表す。(k, n)-複製秘密分散は(k, n)-秘密分散であることから、(k, n)-秘密分散したシェアに適用できるプロトコルは(k, n)-複製秘密分散したシェアにも適用することができる。なお、シェアを<<x>>yと表すときは、複製秘密分散の性質を利用していることを意味する。また、特に(k, k)-複製秘密分散は(k, k)-加法的秘密分散と呼ばれる。以下、mod y 要素xを(k, k)-加法的秘密分散したシェアを<x>yで表す。
 [[x]]2^mは[[x]]2の形式のシェアをm個並べたシェアを表す。なお、[[x]]2^mを数値のビット表現とみなすこともある。
 x≒yはxとyは計算機上の実数として等しいことを表す。すなわち、xとyの差が一定の誤差範囲内であることを表す。
 2つの数a,dに対してa/dは小数点以下を切り捨てる整数除算の値を表す。したがって、2のべき数による整数除算は右シフトと等価である。また、2つの数a,dに対して(a/d)Reは実数除算の値を表す。
 数aに対してceiling(a)はa以上の最小の整数を表す。
 (prop)は命題propが成り立つ場合は1、成り立たない場合は0を値にとることを表す。例えば、(1>0)は1となる。
 浮動小数点2ba(ただし、a, bはそれぞれ仮数部、指数部を表す)を浮動小数点(a, b)と表す。また、m個の浮動小数点2b_0a0, 2b_1a1, …,2b_m-1am-1(ただし、ai, bi(0≦i<m)はそれぞれ仮数部、指数部を表す)を浮動小数点ベクトル(a, b)(ただし、a=(a0, a1, …, am-1), b=(b0, b1, …, bm-1))と表す。ベクトルa=(a0, a1, …, am-1)の長さmを|a|と表すこともある。
《既存の秘密計算プロトコル》
 まず、本発明で用いる既存の秘密計算プロトコルについて説明する。加減算、定数和、乗算、定数倍、論理演算(否定、論理積、論理和、排他的論理和)、データ形式変換(整数、二進数)、指数関数の計算については、既存のプロトコルを用いる。その他本発明で用いる既存のプロトコルとして以下のものを用いる。
[(k, n)-秘密分散(複製秘密分散)から(k, k)-加法的秘密分散への変換]
入力:数値xのシェア[[x]]y(数値xのシェア<<x>>y
出力:数値xのシェア<x>y
 具体的には、参考非特許文献2に記載の方法がある。
(参考非特許文献2:Kikuchi, R., Ikarashi, D., Matsuda, T., Hamada, K. and Chida, K., “Efficient Bit-Decomposition and Modulus-Conversion Protocols with an Honest Majority,” 23rd Australasian Conference on Information Security and Privacy(ACISP 2018), Lecture Notes in Computer Science, Vol.10946, Springer, pp.64-82, 2018.)
[(k, k)-加法的秘密分散から(k, n)-秘密分散(複製秘密分散)への変換]
入力:数値xのシェア<x>y
出力:数値xのシェア[[x]]y(数値xのシェア<<x>>y
 具体的には、参考非特許文献2に記載の方法がある。
[mod 2 → mod q 変換]
入力:数値xのシェア[[x]]2(数値xのシェア<<x>>2
出力:数値xのシェア[[x]]q(数値xのシェア<<x>>q
 具体的には、参考非特許文献2に記載の方法がある。
[シフト量公開右シフト]
入力:数値xのシェア[[x]]q、シフト量ρ
出力:数値xをρビット右シフトして得られる数値のシェア[[x/2ρ]]q
 具体的には、参考非特許文献3に記載の方法がある。
(参考非特許文献3:三品気吹, 五十嵐大, 濱田浩気, 菊池亮, “高精度かつ高効率な秘密ロジスティック回帰の設計と実装,”CSS2018, 2018.)
[一括シフト量公開右シフト]
入力:数値xのシェア[[x]]q、シフト量ρ0, …, ρm-1
出力:数値xをρ0ビット, …, ρm-1ビット右シフトして得られる数値のシェア[[x/2ρ_0]]q, …, [[x/2ρ_m-1]]q
 具体的には、参考非特許文献4に記載の方法がある。
(参考非特許文献4:五十嵐大, “M op/sを超える秘密計算上の初等関数群,”SCIS2020, 2020.)
 なお、自明な方法として、シフト量公開右シフトの繰り返しで、一括シフト量公開右シフトを構成することもできる。
[商転移を使うモジュラス変換]
入力:数値xのシェア<<x>>q
出力:数値xのシェア<<x>>r
 具体的には、参考非特許文献2に記載の方法がある。
[ビット分解]
入力:数値xのシェア[[x]]
パラメータ:入力される数値の最大ビット数M
出力:数値xのシェア[[x]]2^M
 具体的には、参考非特許文献2に記載の方法がある。
《本発明の秘密計算プロトコル》
 続いて、本発明の秘密計算プロトコルについて説明する。
[乗法的ローテーション(シフト量秘匿左シフト)]
入力:数値aのシェア[[a]]P, ローテーション量(シフト量)ρ(≧0)のシェア<<ρ>>p
出力:数値aをρビット左シフトして得られる数値のシェア[[2ρa]]P
 出力となるシェアは乗算や指数関数計算のプロトコル等を用いることで計算することもできるが、ランダム置換(参考非特許文献5参照)の考えを用いた方法で計算することもできる。具体例として、n=3の場合について説明する。
(参考非特許文献5:五十嵐大, 濱田浩気, 菊池亮, 千田浩司, “インターネット環境レスポンス1秒の統計処理を目指した,秘密計算基数ソートの改良,” SCIS2014, 2014.)
(ラウンド1)
step1:シェア[[a]]Pを、パーティ0、パーティ1がシェアを持つ(k, k)-加法的秘密分散<a>Pに変換する。
step2:パーティ0、パーティ1は乱数r01を共有しておく。また、パーティ1、パーティ2は乱数r12を共有しておく。
step3:パーティ0は、b0=2(<<ρ>>^p)_01<a>P 0-r01を計算し、b0をパーティ2に送る。
 ここで、<<ρ>>p 01はシェア<<ρ>>pに関してパーティ0、パーティ1が保持するシェアを表す。また、<a>P 0はシェア<a>Pに関してパーティ0が保持するシェアを表す。
step4:パーティ1はb1=2(<<ρ>>^p)_12(2(<<ρ>>^p)_01<a>P 1+r01)-r12を計算し、b1をパーティ0に送る。
 ここで、<<ρ>>p 12はシェア<<ρ>>pに関してパーティ1、パーティ2が保持するシェアを表す。また、<a>P 1はシェア<a>Pに関してパーティ1が保持するシェアを表す。
(ラウンド2)
step5:パーティ0は<c>P 0=2(<<ρ>>^p)_20b1を計算する。
 ここで、<<ρ>>p 20はシェア<<ρ>>pに関してパーティ2、パーティ0が保持するシェアを表す。
step6:パーティ2は<c>P 2=2(<<ρ>>^p)_20(2(<<ρ>>^p)_12b0+r12)を計算する。
(ラウンド3)
step7:シェア<c>Pを(k, n)-秘密分散のシェア[[c]]Pに変換する。
 ここで、c=2ρaが成り立っている。
[シフト量秘匿右シフト]
入力:数値aのシェア[[a]]P, シフト量ρのシェア<<ρ>>p
パラメータ:シフト量の上限値M
 ただし、0≦ρ≦M, 数値aをMビット左シフトして得られる数値2Maはオーバーフローしないものとする。
出力:数値aをρビット右シフトして得られる数値のシェア[[a/2ρ]]P
step1:<<M-ρ>>pを計算する.
step2:乗法的ローテーションを用いて、数値aをM-ρビット左シフトして得られる数値のシェア[[2M-ρa]]Pを計算する。
step3:シフト量公開右シフトを用いて、数値2M-ρaをMビット右シフトして得られる数値のシェア[[a/2ρ]]P=[[2M-ρa/2M]]Pを計算する。
[シフト量秘匿シフト(その1)]
入力:数値aのシェア[[a]]P、シフト量ρのシェア<<ρ>>Q(ただし、ρ≧0の場合は左シフト、ρ<0の場合は右シフトを表すものとする)
パラメータ:入力される数値のMSB(Most Significant Bit)位置のとりうる上限値M
出力:数値aをρビットシフトして得られる数値sのシェア[[s]]P
 ここで、s=2ρaが成り立つ。
step1:モジュラス変換を用いて、シェア<<ρ>>pを計算する。モジュラス変換には、例えば、先述の商転移を使うモジュラス変換を用いることができる。
step2:大小比較により、[[fL]]2=[[(ρ≧0)]]2を計算する。
step3:mod 2 → mod p 変換を用いて、<<fL>>pを計算する。
step4:<<ρ’>>p=<<ρ>>p+M-M<<fL>>pを計算する。
step5:乗法的ローテーションを用いて、[[b]]P=[[2ρ’a]]Pを計算する。
step6:シフト量公開右シフトを用いて、[[c]]P=[[2ρ’a/2M]]Pを計算する。
step7:mod 2 → mod P 変換を用いて、[[fL]]Pを計算する。
step8:[[s]]P=[[c]]P+([[b]]P-[[c]]P)[[fL]]Pを計算する。
 この式は選択ゲートになっており、ρ<0の場合はs=c、ρ≧0の場合はs=bとなる。
[シフト量秘匿シフト(その2)]
入力:数値aのシェア[[a]]P、シフト量ρのシェア<<ρ>>Q(ただし、ρ≧0の場合は左シフト、ρ<0の場合は右シフトを表すものとする)
パラメータ:入力される数値のMSB位置のとりうる上限値M、シェアが許容するMSB位置の上限値M’
出力:数値aをρビットシフトして得られる数値sのシェア[[s]]P
 ここで、s=2ρaが成り立つ。
step1:u=M’-M+1, d=ceiling(((M-1)/u)Re)を計算する。
 ここで、uは一回のシフト量秘匿右シフトでカバーできる右シフト量(具体的には、1からM’-Mビットの範囲の量)、dは1からM-1ビットの範囲の右シフトをするのに必要なシフト量秘匿右シフトの実行回数である。
step2:モジュラス変換を用いて、シェア<<ρ>>pを計算する。モジュラス変換には、例えば、先述の商転移を使うモジュラス変換を用いることができる。
step3:大小比較により、[[f0]]2=[[(ρ≧-M+1)]]2, [[f1]]2=[[(ρ≧-M+1+u)]]2, …, [[fd-1]]2=[[(ρ≧-M+1+(d-1)u)]]2, [[fL]]2=[[(ρ≧0)]]2を計算する。
 ここで、fLならばfd-1, fd-1ならばfd-2, …が成り立つ。このような性質を持つf0, f1, …, fd-1, fLのことを推移的フラグという。
step4:mod 2 → mod p 変換を用いて、<<f1>>p, <<f2>>p, …, <<fd-1>>p, <<fL>>pを計算する。
 本ステップでは、<<f0>>pの計算は不要である。
step5:<<ρ’>>p=<<ρ>>p+M-1-u(Σ1≦i<d<<fi>>p)+((d-1)u-M+1)<<fL>>pを計算する。
step6:乗法的ローテーションを用いて、[[b]]P=[[2ρ’a]]Pを計算する。
step7:一括シフト量公開右シフトを用いて、[[c0]]P=[[2ρ’a/2M-1]]P, [[c1]]P=[[2ρ’a/(2M-1-u)]]P, …, [[cd-1]]P=[[2ρ’a/(2M-1-(d-1)u)]]Pを計算する。
step8:mod 2 → mod P 変換を用いて、[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pを計算する。
 本ステップでは、[[f0]]pの計算は必要である。
step9:[[s]]P=[[c0]]P[[f0]]P+([[c1]]P-[[c0]]P)[[f1]]P+…+([[cd-1]]P-[[cd-2]]P)[[fd-1]]P+([[b]]P-[[cd-1]]P)[[fL]]Pを計算する。
 この式は推移的フラグf0, f1, …, fd-1, fLに対する選択ゲートになっており、f0, f1, …, fd-1, fLがすべて0ならばs=0、f0ならばs=c0、f1ならばc1、…、fLならばs=bとなる。
[シフト量秘匿シフト(その3)]
入力:数値aのシェア[[a]]P、シフト量ρのシェア<<ρ>>Q(ただし、ρ≧0の場合は左シフト、ρ<0の場合は右シフトを表すものとする)
パラメータ:入力される数値のMSB位置のとりうる上限値M、シェアが許容するMSB位置の上限値M’
出力:数値aをρビットシフトして得られる数値sのシェア[[s]]P
 ここで、s=2ρaが成り立つ。
step1:uをu≦M’-M+1を満たす整数とする。また、[R, R’]を分割した右シフトでカバーする右シフト量の範囲とし、dをd≧ceiling(((R’-R+1)/u)Re)を満たす整数とする。
 以下、{}Lは、-Rより大きいシフト量を考慮しなくてよい場合(例えば、右シフトであると分かっている場合)、当該括弧で囲んだ部分の計算を省略できることを表す。また、{}0は、-R’より小さいシフト量を考慮しなくてよい場合(例えば、右シフト量がシフト量秘匿シフト(その1)が適用できる値よりは大きいが極端に大きい値ではないと分かっている場合)、当該括弧で囲んだ部分の計算を省略できることを表す。
step2:モジュラス変換を用いて、シェア<<ρ>>pを計算する。モジュラス変換には、例えば、先述の商転移を使うモジュラス変換を用いることができる。
step3:大小比較により、{[[f0]]2=[[(ρ≧-R’)]]2,}0 [[f1]]2=[[(ρ≧-R’+u)]]2, …, [[fd-1]]2=[[(ρ≧-R’+(d-1)u)]]2{, [[fL]]2=[[(ρ≧-R+1)]]2}Lを計算する。
 ここで、fLならばfd-1, fd-1ならばfd-2, …が成り立つ。このような性質を持つf0, f1, …, fd-1, fLのことを推移的フラグという。
step4:mod 2 → mod p 変換を用いて、<<f1>>p, <<f2>>p, …, <<fd-1>>p{, <<fL>>p}Lを計算する。
step5:<<ρ’>>p=<<ρ>>p+R’-u(Σ1≦i<d<<fi>>p){+((d-1)u-R’)<<fL>>p}Lを計算する。
step6:乗法的ローテーションを用いて、[[b]]P=[[2ρ’a]]Pを計算する。
step7:一括シフト量公開右シフトを用いて、{[[c0]]P=[[2ρ’a/2R’]]P,}0 [[c1]]P=[[2ρ’a/(2R’-u)]]P, …,[[cd-1]]P=[[2ρ’a/(2R’-(d-1)u)]]Pを計算する。
step8:mod 2 → mod P 変換を用いて、{[[f0]]P,}0[[f1]]P, …, [[fd-1]]P{, [[fL]]P}Lを計算する。
step9:[[s]]P={[[c0]]P[[f0]]P+(}0[[c1]]P{-[[c0]]P)}0[[f1]]P+…+([[cd-1]]P-[[cd-2]]P)[[fd-1]]P{+([[b]]P-[[cd-1]]P)[[fL]]P}Lを計算する。
 この式は推移的フラグf0, f1, …, fd-1, fLに対する選択ゲートになっており、f0, f1, …, fd-1, fLがすべて0ならばs=0、f0ならばs=c0、f1ならばc1、…、fLならばs=bとなる。
 なお、R=1, R’=M-1, u=M’-M+1, d=ceiling(((R’-R+1)/u)Re)とすると、シフト量秘匿シフト(その3)はシフト量秘匿シフト(その2)となる。このことから、シフト量秘匿シフト(その3)はシフト量秘匿シフト(その2)を一般化したプロトコルである。
<第1実施形態>
 以下、図1~図3を参照して秘密シフトシステム10について説明する。図1は、秘密シフトシステム10の構成を示すブロック図である。秘密シフトシステム10は、W個(Wは3以上の所定の整数)の秘密シフト装置1001、…、100Wを含む。秘密シフト装置1001、…、100Wは、ネットワーク800に接続しており、相互に通信可能である。ネットワーク800は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図2は、秘密シフト装置100i(1≦i≦W)の構成を示すブロック図である。図3は、秘密シフトシステム10の動作を示すフローチャートである。
 図2に示すように秘密シフト装置100iは、シフト量計算部140iと、左シフト部150iと、右シフト部160iと、記録部190iを含む。記録部190iを除く秘密シフト装置100iの各構成部は、秘密計算で必要とされる演算、つまり、<技術的背景>で説明したプロトコルのうち、各構成部の機能を実現するうえで必要になる演算を実行できるように構成されている。本発明において個々の演算を実現するための具体的な機能構成は、例えば参考非特許文献1~5のそれぞれで開示されるアルゴリズムを実行できるような構成で十分であり、これらは従来的構成であるから詳細な説明については省略する。また、記録部190iは、秘密シフト装置100iの処理に必要な情報を記録する構成部である。例えば、後述するシフト量の上限値Mを記録しておく。
 W個の秘密シフト装置100iによる協調計算によって、秘密シフトシステム10はマルチパーティプロトコルであるシフト量秘匿右シフトの秘密計算を実現する。よって、秘密シフトシステム10のシフト量計算手段140(図示していない)はシフト量計算部1401、…、140Wで構成され、左シフト手段150(図示していない)は左シフト部1501、…、150Wで構成され、右シフト手段160(図示していない)は右シフト部1601、…、160Wで構成される。
 Pを素数、pを素数Pのビット数、Mをシフト量の上限値とし、秘密シフトシステム10は、数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>p(ただし、0≦ρ≦M, 数値aをMビット左シフトして得られる数値2Maはオーバーフローしないものとする)から、数値aをρビット右シフトして得られる数値sのシェア[[s]]P(ただし、s=a/2ρ)を計算する。以下、図3に従い秘密シフトシステム10の動作について説明する。
 S140において、シフト量計算手段140は、シェア<<ρ>>pと上限値Mから、シェア<<M-ρ>>pを計算する。
 S150において、左シフト手段150は、シェア[[a]]PとS140で計算したシェア<<M-ρ>>pから、シェア[[b]]P=[[2M-ρa]]Pを計算する。左シフト手段150は、例えば、シフト量秘匿左シフトを実行できるように構成されていればよい。
 S160において、右シフト手段160は、S150で計算したシェア[[b]]Pと上限値Mから、シェア[[s]]P=[[2M-ρa/2M]]Pを計算する。右シフト手段160は、例えば、シフト量公開右シフトを実行できるように構成されていればよい。
 本発明の実施形態によれば、シフト対象となる数値とシフト量を秘匿したまま高速に右シフト演算を行うことが可能となる。
<第2実施形態>
 以下、図4~図6を参照して秘密シフトシステム20について説明する。図4は、秘密シフトシステム20の構成を示すブロック図である。秘密シフトシステム20は、W個(Wは3以上の所定の整数)の秘密シフト装置2001、…、200Wを含む。秘密シフト装置2001、…、200Wは、ネットワーク800に接続しており、相互に通信可能である。ネットワーク800は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図5は、秘密シフト装置200i(1≦i≦W)の構成を示すブロック図である。図6は、秘密シフトシステム20の動作を示すフローチャートである。
 図5に示すように秘密シフト装置200iは、モジュラス変換部210iと、第1フラグ計算部220iと、第2フラグ計算部230iと、シフト量計算部240iと、左シフト部250iと、右シフト部260iと、第3フラグ計算部270iと、シフト値計算部280iと、記録部290iを含む。記録部290iを除く秘密シフト装置200iの各構成部は、秘密計算で必要とされる演算、つまり、<技術的背景>で説明したプロトコルのうち、各構成部の機能を実現するうえで必要になる演算を実行できるように構成されている。本発明において個々の演算を実現するための具体的な機能構成は、例えば参考非特許文献1~5のそれぞれで開示されるアルゴリズムを実行できるような構成で十分であり、これらは従来的構成であるから詳細な説明については省略する。また、記録部290iは、秘密シフト装置200iの処理に必要な情報を記録する構成部である。例えば、後述する入力される数値のMSB位置の上限値Mを記録しておく。
 W個の秘密シフト装置200iによる協調計算によって、秘密シフトシステム20はマルチパーティプロトコルであるシフト量秘匿シフト(その1)の秘密計算を実現する。よって、秘密シフトシステム20のモジュラス変換手段210(図示していない)はモジュラス変換部2101、…、210Wで構成され、第1フラグ計算手段220(図示していない)は第1フラグ計算部2201、…、220Wで構成され、第2フラグ計算手段230(図示していない)は第2フラグ計算部2301、…、230Wで構成され、シフト量計算手段240(図示していない)はシフト量計算部2401、…、240Wで構成され、左シフト手段250(図示していない)は左シフト部2501、…、250Wで構成され、右シフト手段260(図示していない)は右シフト部2601、…、260Wで構成され、第3フラグ計算手段270(図示していない)は第3フラグ計算部2701、…、270Wで構成され、シフト値計算手段280(図示していない)はシフト値計算部2801、…、280Wで構成される。
 Pを素数、pを素数Pのビット数、Mを入力される数値のMSB位置の上限値とし、秘密シフトシステム20は、数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>Q(ただし、ρ≧0の場合は左シフト、ρ<0の場合は右シフトを表すものとする)から、数値aをρビットシフトして得られる数値sのシェア[[s]]P(ただし、s=2ρa)を計算する。以下、図6に従い秘密シフトシステム20の動作について説明する。
 S210において、モジュラス変換手段210は、シェア<<ρ>>Qから、シェア<<ρ>>pを計算する。モジュラス変換手段210は、例えば、モジュラス変換を実行できるように構成されていればよい。
 S220において、第1フラグ計算手段220は、シェア<<ρ>>Qから、シェア[[fL]]2=[[(ρ≧0)]]2を計算する。第1フラグ計算手段220は、例えば、シェア<<ρ>>Qからシェア<<(ρ≧0)>>Qを計算し、モジュラス変換を用いてシェア<<(ρ≧0)>>Qからシェア<<(ρ≧0)>>2を計算し、シェア<<(ρ≧0)>>2をシェア[[fL]]2=[[(ρ≧0)]]2に変換できるように構成されていればよい。なお、シェア<<ρ>>Qの代わりにシェア<<ρ>>pを用いてもよい。
 S230において、第2フラグ計算手段230は、S220で計算したシェア[[fL]]2から、シェア<<fL>>pを計算する。第2フラグ計算手段230は、例えば、mod 2 → mod p 変換を実行できるように構成されていればよい。
 S240において、シフト量計算手段240は、S210で計算したシェア<<ρ>>pとS230で計算したシェア<<fL>>pと上限値Mから、シェア<<ρ’>>p=<<ρ>>p+M-M<<fL>>pを計算する。
 S250において、左シフト手段250は、シェア[[a]]PとS240で計算したシェア<<ρ’>>pから、シェア[[b]]P=[[2ρ’a]]Pを計算する。左シフト手段250は、例えば、シフト量秘匿左シフトを実行できるように構成されていればよい。
 S260において、右シフト手段260は、S250で計算したシェア[[b]]Pと上限値Mから、シェア[[c]]P=[[2ρ’a/2M]]Pを計算する。右シフト手段260は、例えば、シフト量公開右シフトを実行できるように構成されていればよい。
 S270において、第3フラグ計算手段270は、S220で計算したシェア[[fL]]2から、シェア[[fL]]Pを計算する。第3フラグ計算手段270は、例えば、mod 2 →mod P変換を実行できるように構成されていればよい。
 S280において、シフト値計算手段280は、S250で計算したシェア[[b]]PとS260で計算したシェア[[c]]PとS270で計算したシェア[[fL]]Pから、シェア[[s]]P=[[c]]P+([[b]]P-[[c]]P)[[fL]]Pを計算する。
 本発明の実施形態によれば、シフト対象となる数値とシフト量を秘匿したまま高速にシフト演算を行うことが可能となる。特に、右シフトできる量に制限があるものの、高速にシフト演算を行うことが可能となる。
<第3実施形態>
 以下、図7~図9を参照して秘密シフトシステム30について説明する。図7は、秘密シフトシステム30の構成を示すブロック図である。秘密シフトシステム30は、W個(Wは3以上の所定の整数)の秘密シフト装置3001、…、300Wを含む。秘密シフト装置3001、…、300Wは、ネットワーク800に接続しており、相互に通信可能である。ネットワーク800は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図8は、秘密シフト装置300i(1≦i≦W)の構成を示すブロック図である。図9は、秘密シフトシステム30の動作を示すフローチャートである。
 図8に示すように秘密シフト装置300iは、モジュラス変換部310iと、第1フラグ計算部320iと、第2フラグ計算部330iと、シフト量計算部340iと、左シフト部350iと、右シフト部360iと、第3フラグ計算部370iと、シフト値計算部380iと、記録部390iを含む。記録部390iを除く秘密シフト装置300iの各構成部は、秘密計算で必要とされる演算、つまり、<技術的背景>で説明したプロトコルのうち、各構成部の機能を実現するうえで必要になる演算を実行できるように構成されている。本発明において個々の演算を実現するための具体的な機能構成は、例えば参考非特許文献1~5のそれぞれで開示されるアルゴリズムを実行できるような構成で十分であり、これらは従来的構成であるから詳細な説明については省略する。また、記録部390iは、秘密シフト装置300iの処理に必要な情報を記録する構成部である。例えば、後述する入力される数値のMSB位置の上限値M(以下、第1上限値という)やシェアが許容するMSB位置の上限値M’(以下、第2上限値という)を記録しておく。
 W個の秘密シフト装置300iによる協調計算によって、秘密シフトシステム30はマルチパーティプロトコルであるシフト量秘匿シフト(その2)の秘密計算を実現する。よって、秘密シフトシステム30のモジュラス変換手段310(図示していない)はモジュラス変換部3101、…、310Wで構成され、第1フラグ計算手段320(図示していない)は第1フラグ計算部3201、…、320Wで構成され、第2フラグ計算手段330(図示していない)は第2フラグ計算部3301、…、330Wで構成され、シフト量計算手段340(図示していない)はシフト量計算部3401、…、340Wで構成され、左シフト手段350(図示していない)は左シフト部3501、…、350Wで構成され、右シフト手段360(図示していない)は右シフト部3601、…、360Wで構成され、第3フラグ計算手段370(図示していない)は第3フラグ計算部3701、…、370Wで構成され、シフト値計算手段380(図示していない)はシフト値計算部3801、…、380Wで構成される。
 Pを素数、pを素数Pのビット数、Qを剰余環の位数、Mを入力される数値のMSB位置のとりうる上限値、M’をシェアが許容するMSB位置の上限値とし、秘密シフトシステム30は、数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>Q(ただし、ρ≧0の場合は左シフト、ρ<0の場合は右シフトを表すものとする)から、数値aをρビットシフトして得られる数値sのシェア[[s]]P(ただし、s=2ρa)を計算する。以下、図9に従い秘密シフトシステム30の動作について説明する。
 S310において、モジュラス変換手段310は、シェア<<ρ>>Qから、シェア<<ρ>>pを計算する。モジュラス変換手段310は、例えば、モジュラス変換を実行できるように構成されていればよい。
 S320において、第1フラグ計算手段320は、シェア<<ρ>>Qと第1上限値Mと数値u=M’-M+1と数値d=ceiling(((M-1)/u)Re)から、シェア[[f0]]2=[[(ρ≧-M+1)]]2, [[f1]]2=[[(ρ≧-M+1+u)]]2, …, [[fd-1]]2=[[(ρ≧-M+1+(d-1)u)]]2, [[fL]]2=[[(ρ≧0)]]2を計算する。第1フラグ計算手段320は、例えば、シェア<<ρ>>Qからシェア<<(ρ≧-M+1)>>Q, <<(ρ≧-M+1+u)>>Q, …, <<(ρ≧-M+1+(d-1)u)>>Q, <<(ρ≧0)>>Qを計算し、モジュラス変換を用いてシェア<<(ρ≧-M+1)>>Q, <<(ρ≧-M+1+u)>>Q, …, <<(ρ≧-M+1+(d-1)u)>>Q, <<(ρ≧0)>>Qからシェア<<(ρ≧-M+1)>>2, <<(ρ≧-M+1+u)>>2, …, <<(ρ≧-M+1+(d-1)u)>>2, <<(ρ≧0)>>2を計算し、シェア<<(ρ≧-M+1)>>2, <<(ρ≧-M+1+u)>>2, …, <<(ρ≧-M+1+(d-1)u)>>2, <<(ρ≧0)>>2をシェア[[f0]]2=[[(ρ≧-M+1)]]2, [[f1]]2=[[(ρ≧-M+1+u)]]2, …, [[fd-1]]2=[[(ρ≧-M+1+(d-1)u)]]2, [[fL]]2=[[(ρ≧0)]]2に変換できるように構成されていればよい。なお、シェア<<ρ>>Qの代わりにシェア<<ρ>>pを用いてもよい。また、数値uと数値dは、第1フラグ計算手段320が第1上限値Mと第2上限値M’とから計算するものであってもよいし、数値uと数値dは、予め記録部390iに記録しておくのでもよい。
 S330において、第2フラグ計算手段330は、S320で計算したシェア[[f1]]2, [[f2]]2, …, [[fd-1]]2, [[fL]]2から、シェア<<f1>>p, <<f2>>p, …, <<fd-1>>p, <<fL>>pを計算する。第2フラグ計算手段330は、例えば、mod 2 → mod p 変換を実行できるように構成されていればよい。
 S340において、シフト量計算手段340は、S310で計算したシェア<<ρ>>pとS330で計算したシェア<<f1>>p, <<f2>>p, …,<<fd-1>>p, <<fL>>pと第1上限値Mと数値uと数値dから、シェア<<ρ’>>p=<<ρ>>p+M-1-u(Σ1≦i<d<<fi>>p)+((d-1)u-M+1)<<fL>>pを計算する。
 S350において、左シフト手段350は、シェア[[a]]PとS340で計算したシェア<<ρ’>>pから、シェア[[b]]P=[[2ρ’a]]Pを計算する。左シフト手段350は、例えば、シフト量秘匿左シフトを実行できるように構成されていればよい。
 S360において、右シフト手段360は、S350で計算したシェア[[b]]Pと第1上限値Mと数値uと数値dから、シェア[[c0]]P=[[2ρ’a/2M-1]]P, [[c1]]P=[[2ρ’a/(2M-1-u)]]P, …,[[cd-1]]P=[[2ρ’a/(2M-1-(d-1)u)]]Pを計算する。右シフト手段360は、例えば、一括シフト量公開右シフトを実行できるように構成されていればよい。
 S370において、第3フラグ計算手段370は、S320で計算したシェア[[f0]]2, [[f1]]2, …, [[fd-1]]2, [[fL]]2から、シェア[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pを計算する。第3フラグ計算手段370は、例えば、mod 2 →mod P変換を実行できるように構成されていればよい。
 S380において、シフト値計算手段380は、S350で計算したシェア[[b]]PとS360で計算したシェア[[c0]]P, [[c1]]P, …, [[cd-1]]PとS370で計算したシェア[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pから、シェア[[s]]P=[[c0]]P[[f0]]P+([[c1]]P-[[c0]]P)[[f1]]P+…+([[cd-1]]P-[[cd-2]]P)[[fd-1]]P+([[b]]P-[[cd-1]]P)[[fL]]Pを計算する。
 本発明の実施形態によれば、シフト対象となる数値とシフト量を秘匿したまま高速にシフト演算を行うことが可能となる。特に、右シフトできる量に制限がない形で、高速にシフト演算を行うことが可能となる。
<第4実施形態>
 以下、図7~図9を参照して秘密シフトシステム40について説明する。図7は、秘密シフトシステム40の構成を示すブロック図である。秘密シフトシステム40は、W個(Wは3以上の所定の整数)の秘密シフト装置4001、…、400Wを含む。秘密シフト装置4001、…、400Wは、ネットワーク800に接続しており、相互に通信可能である。ネットワーク800は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図8は、秘密シフト装置400i(1≦i≦W)の構成を示すブロック図である。図9は、秘密シフトシステム40の動作を示すフローチャートである。
 図8に示すように秘密シフト装置400iは、モジュラス変換部410iと、第1フラグ計算部420iと、第2フラグ計算部430iと、シフト量計算部440iと、左シフト部450iと、右シフト部460iと、第3フラグ計算部470iと、シフト値計算部480iと、記録部490iを含む。記録部490iを除く秘密シフト装置400iの各構成部は、秘密計算で必要とされる演算、つまり、<技術的背景>で説明したプロトコルのうち、各構成部の機能を実現するうえで必要になる演算を実行できるように構成されている。本発明において個々の演算を実現するための具体的な機能構成は、例えば参考非特許文献1~5のそれぞれで開示されるアルゴリズムを実行できるような構成で十分であり、これらは従来的構成であるから詳細な説明については省略する。また、記録部490iは、秘密シフト装置400iの処理に必要な情報を記録する構成部である。例えば、後述する入力される数値のMSB位置の上限値M(以下、第1上限値という)やシェアが許容するMSB位置の上限値M’(以下、第2上限値という)を記録しておく。例えば、後述する、分割した右シフトでカバーする右シフト量の範囲[R, R’]を記録しておく。
 W個の秘密シフト装置400iによる協調計算によって、秘密シフトシステム40はマルチパーティプロトコルであるシフト量秘匿シフト(その3)の秘密計算を実現する。よって、秘密シフトシステム40のモジュラス変換手段410(図示していない)はモジュラス変換部4101、…、410Wで構成され、第1フラグ計算手段420(図示していない)は第1フラグ計算部4201、…、420Wで構成され、第2フラグ計算手段430(図示していない)は第2フラグ計算部4301、…、430Wで構成され、シフト量計算手段440(図示していない)はシフト量計算部4401、…、440Wで構成され、左シフト手段450(図示していない)は左シフト部4501、…、450Wで構成され、右シフト手段460(図示していない)は右シフト部4601、…、460Wで構成され、第3フラグ計算手段470(図示していない)は第3フラグ計算部4701、…、470Wで構成され、シフト値計算手段480(図示していない)はシフト値計算部4801、…、480Wで構成される。
 Pを素数、pを素数Pのビット数、Qを剰余環の位数、Mを入力される数値のMSB位置のとりうる上限値、M’をシェアが許容するMSB位置の上限値、[R, R’]を分割した右シフトでカバーする右シフト量の範囲とし、秘密シフトシステム40は、数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>Q(ただし、ρ≧0の場合は左シフト、ρ<0の場合は右シフトを表すものとする)から、数値aをρビットシフトして得られる数値sのシェア[[s]]P(ただし、s=2ρa)を計算する。以下、図9に従い秘密シフトシステム40の動作について説明する。
 S410において、モジュラス変換手段410は、シェア<<ρ>>Qから、シェア<<ρ>>pを計算する。モジュラス変換手段410は、例えば、モジュラス変換を実行できるように構成されていればよい。
 S420において、第1フラグ計算手段420は、シェア<<ρ>>Qと範囲[R, R’]と数値u(uはu≦M’-M+1を満たす整数である)と数値d(dはd≧ceiling(((R’-R+1)/u)Re)を満たす整数である)から、シェア[[f0]]2=[[(ρ≧-R’)]]2, [[f1]]2=[[(ρ≧-R’+u)]]2, …, [[fd-1]]2=[[(ρ≧-R’+(d-1)u)]]2, [[fL]]2=[[(ρ≧-R+1)]]2を計算する。第1フラグ計算手段420は、例えば、シェア<<ρ>>Qからシェア<<(ρ≧-R’)>>Q, <<(ρ≧-R’+u)>>Q, …, <<(ρ≧-R’+(d-1)u)>>Q, <<(ρ≧-R+1)>>Qを計算し、モジュラス変換を用いてシェア<<(ρ≧-R’)>>Q, <<(ρ≧-R’+u)>>Q, …, <<(ρ≧-R’+(d-1)u)>>Q, <<(ρ≧-R+1)>>Qからシェア<<(ρ≧-R’)>>2, <<(ρ≧-R’+u)>>2, …, <<(ρ≧-R’+(d-1)u)>>2, <<(ρ≧-R+1)>>2を計算し、シェア<<(ρ≧-R’)>>2, <<(ρ≧-R’+u)>>2, …, <<(ρ≧-R’+(d-1)u)>>2, <<(ρ≧-R+1)>>2をシェア[[f0]]2=[[(ρ≧-R’)]]2, [[f1]]2=[[(ρ≧-R’+u)]]2, …, [[fd-1]]2=[[(ρ≧-R’+(d-1)u)]]2, [[fL]]2=[[(ρ≧-R+1)]]2に変換できるように構成されていればよい。なお、シェア<<ρ>>Qの代わりにシェア<<ρ>>pを用いてもよい。また、数値uと数値dは、予め記録部490iに記録しておくのでよい。
 S430において、第2フラグ計算手段430は、S420で計算したシェア[[f1]]2, [[f2]]2, …, [[fd-1]]2, [[fL]]2から、シェア<<f1>>p, <<f2>>p, …, <<fd-1>>p, <<fL>>pを計算する。第2フラグ計算手段430は、例えば、mod 2 → mod p 変換を実行できるように構成されていればよい。
 S440において、シフト量計算手段440は、S410で計算したシェア<<ρ>>pとS430で計算したシェア<<f1>>p, <<f2>>p, …,<<fd-1>>p, <<fL>>pと範囲の上限値R’と数値uと数値dから、シェア<<ρ’>>p=<<ρ>>p+R’-u(Σ1≦i<d<<fi>>p)+((d-1)u-R’)<<fL>>pを計算する。
 S450において、左シフト手段450は、シェア[[a]]PとS440で計算したシェア<<ρ’>>pから、シェア[[b]]P=[[2ρ’a]]Pを計算する。左シフト手段450は、例えば、シフト量秘匿左シフトを実行できるように構成されていればよい。
 S460において、右シフト手段460は、S450で計算したシェア[[b]]Pと範囲の上限値R’と数値uと数値dから、シェア[[c0]]P=[[2ρ’a/2R’]]P, [[c1]]P=[[2ρ’a/(2R’-u)]]P, …,[[cd-1]]P=[[2ρ’a/(2R’-(d-1)u)]]Pを計算する。右シフト手段460は、例えば、一括シフト量公開右シフトを実行できるように構成されていればよい。
 S470において、第3フラグ計算手段470は、S420で計算したシェア[[f0]]2, [[f1]]2, …, [[fd-1]]2, [[fL]]2から、シェア[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pを計算する。第3フラグ計算手段470は、例えば、mod 2 →mod P変換を実行できるように構成されていればよい。
 S480において、シフト値計算手段480は、S450で計算したシェア[[b]]PとS460で計算したシェア[[c0]]P, [[c1]]P, …, [[cd-1]]PとS470で計算したシェア[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pから、シェア[[s]]P=[[c0]]P[[f0]]P+([[c1]]P-[[c0]]P)[[f1]]P+…+([[cd-1]]P-[[cd-2]]P)[[fd-1]]P+([[b]]P-[[cd-1]]P)[[fL]]Pを計算する。
(変形例)
 シフト量秘匿シフト(その3)は、<技術的背景>で説明した通り、-Rより大きいシフト量を考慮しなくてよい場合や、-R’より小さいシフト量を考慮しなくてよい場合には、一部の計算を省略することができる。そこで、これら2つのいずれかに該当する場合は、秘密シフトシステム40を一部の計算を省略するように構成することができる。
 本発明の実施形態によれば、シフト対象となる数値とシフト量を秘匿したまま高速にシフト演算を行うことが可能となる。特に、右シフトできる量に制限がない形で、高速にシフト演算を行うことが可能となる。
<補記>
 図10は、上述の各装置を実現するコンピュータの機能構成の一例を示す図である。上述の各装置における処理は、記録部2020に、コンピュータを上述の各装置として機能させるためのプログラムを読み込ませ、制御部2010、入力部2030、出力部2040などに動作させることで実施できる。
 本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部、CPU(Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい)、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD-ROMなどの記録媒体を読み書きできる装置(ドライブ)などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
 ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている(外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるROMに記憶させておくこととしてもよい)。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に記憶される。
 ハードウェアエンティティでは、外部記憶装置(あるいはROMなど)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にCPUで解釈実行・処理される。その結果、CPUが所定の機能(上記、…部、…手段などと表した各構成部)を実現する。
 本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
 既述のように、上記実施形態において説明したハードウェアエンティティ(本発明の装置)における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
 この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD-RAM(Random Access Memory)、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP-ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
 また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
 このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
 また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
 上述の本発明の実施形態の記載は、例証と記載の目的で提示されたものである。網羅的であるという意思はなく、開示された厳密な形式に発明を限定する意思もない。変形やバリエーションは上述の教示から可能である。実施形態は、本発明の原理の最も良い例証を提供するために、そして、この分野の当業者が、熟考された実際の使用に適するように本発明を色々な実施形態で、また、色々な変形を付加して利用できるようにするために、選ばれて表現されたものである。すべてのそのような変形やバリエーションは、公正に合法的に公平に与えられる幅にしたがって解釈された添付の請求項によって定められた本発明のスコープ内である。

Claims (6)

  1.  Pを素数、pを素数Pのビット数、Qを剰余環の位数、Mを入力される数値のMSB位置のとりうる上限値、M’をシェアが許容するMSB位置の上限値、[R, R’]を分割した右シフトでカバーする右シフト量の範囲とし、
     3個以上の秘密シフト装置で構成され、数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>Q(ただし、ρ≧0の場合は左シフト、ρ<0の場合は右シフトを表すものとする)から、数値aをρビットシフトして得られる数値sのシェア[[s]]P(ただし、s=2ρa)を計算する秘密シフトシステムであって、
     シェア<<ρ>>Qから、シェア<<ρ>>pを計算するモジュラス変換手段と、
     uをu≦M’-M+1を満たす整数、dをd≧ceiling(((R’-R+1)/u)Re)を満たす整数とし、
     シェア<<ρ>>Qまたはシェア<<ρ>>pと範囲[R, R’]と数値uと数値dから、シェア[[f0]]2=[[(ρ≧-R’)]]2, [[f1]]2=[[(ρ≧-R’+u)]]2, …, [[fd-1]]2=[[(ρ≧-R’+(d-1)u)]]2, [[fL]]2=[[(ρ≧-R+1)]]2を計算する第1フラグ計算手段と、
     シェア[[f1]]2, [[f2]]2, …, [[fd-1]]2, [[fL]]2から、シェア<<f1>>p, <<f2>>p, …, <<fd-1>>p, <<fL>>pを計算する第2フラグ計算手段と、
     シェア<<ρ>>pとシェア<<f1>>p, <<f2>>p, …,<<fd-1>>p, <<fL>>pと範囲の上限値R’と数値uと数値dから、シェア<<ρ’>>p=<<ρ>>p+R’-u(Σ1≦i<d<<fi>>p)+((d-1)u-R’)<<fL>>pを計算するシフト量計算手段と、
     シェア[[a]]Pとシェア<<ρ’>>pから、シェア[[b]]P=[[2ρ’a]]Pを計算する左シフト手段と、
     シェア[[b]]Pと範囲の上限値R’と数値uと数値dから、シェア[[c0]]P=[[2ρ’a/2R’]]P, [[c1]]P=[[2ρ’a/(2R’-u)]]P, …,[[cd-1]]P=[[2ρ’a/(2R’-(d-1)u)]]Pを計算する右シフト手段と、
     シェア[[f0]]2, [[f1]]2, …, [[fd-1]]2, [[fL]]2から、シェア[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pを計算する第3フラグ計算手段と、
     シェア[[b]]Pとシェア[[c0]]P, [[c1]]P, …, [[cd-1]]Pとシェア[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pから、シェア[[s]]P=[[c0]]P[[f0]]P+([[c1]]P-[[c0]]P)[[f1]]P+…+([[cd-1]]P-[[cd-2]]P)[[fd-1]]P+([[b]]P-[[cd-1]]P)[[fL]]Pを計算するシフト値計算手段と、
     を含む秘密シフトシステム。
  2.  Pを素数、pを素数Pのビット数、Qを剰余環の位数、Mを入力される数値のMSB位置のとりうる上限値、M’をシェアが許容するMSB位置の上限値、[R, R’]を分割した右シフトでカバーする右シフト量の範囲とし、
     数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>Q(ただし、ρ≧0の場合は左シフト、ρ<0の場合は右シフトを表すものとする)から、数値aをρビットシフトして得られる数値sのシェア[[s]]P(ただし、s=2ρa)を計算する、3個以上の秘密シフト装置で構成される秘密シフトシステムの中の秘密シフト装置であって、
     シェア<<ρ>>Qから、シェア<<ρ>>pを計算するモジュラス変換部と、
     uをu≦M’-M+1を満たす整数、dをd≧ceiling(((R’-R+1)/u)Re)を満たす整数とし、
     シェア<<ρ>>Qまたはシェア<<ρ>>pと範囲[R, R’]と数値uと数値dから、シェア[[f0]]2=[[(ρ≧-R’)]]2, [[f1]]2=[[(ρ≧-R’+u)]]2, …, [[fd-1]]2=[[(ρ≧-R’+(d-1)u)]]2, [[fL]]2=[[(ρ≧-R+1)]]2を計算する第1フラグ計算部と、
     シェア[[f1]]2, [[f2]]2, …, [[fd-1]]2, [[fL]]2から、シェア<<f1>>p, <<f2>>p, …, <<fd-1>>p, <<fL>>pを計算する第2フラグ計算部と、
     シェア<<ρ>>pとシェア<<f1>>p, <<f2>>p, …,<<fd-1>>p, <<fL>>pと範囲の上限値R’と数値uと数値dから、シェア<<ρ’>>p=<<ρ>>p+R’-u(Σ1≦i<d<<fi>>p)+((d-1)u-R’)<<fL>>pを計算するシフト量計算部と、
     シェア[[a]]Pとシェア<<ρ’>>pから、シェア[[b]]P=[[2ρ’a]]Pを計算する左シフト部と、
     シェア[[b]]Pと範囲の上限値R’と数値uと数値dから、シェア[[c0]]P=[[2ρ’a/2R’]]P, [[c1]]P=[[2ρ’a/(2R’-u)]]P, …,[[cd-1]]P=[[2ρ’a/(2R’-(d-1)u)]]Pを計算する右シフト部と、
     シェア[[f0]]2, [[f1]]2, …, [[fd-1]]2, [[fL]]2から、シェア[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pを計算する第3フラグ計算部と、
     シェア[[b]]Pとシェア[[c0]]P, [[c1]]P, …, [[cd-1]]Pとシェア[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pから、シェア[[s]]P=[[c0]]P[[f0]]P+([[c1]]P-[[c0]]P)[[f1]]P+…+([[cd-1]]P-[[cd-2]]P)[[fd-1]]P+([[b]]P-[[cd-1]]P)[[fL]]Pを計算するシフト値計算部と、
     を含む秘密シフト装置。
  3.  Pを素数、pを素数Pのビット数、Qを剰余環の位数、Mを入力される数値のMSB位置のとりうる上限値、M’をシェアが許容するMSB位置の上限値、[R, R’]を分割した右シフトでカバーする右シフト量の範囲とし、
     3個以上の秘密シフト装置で構成される秘密シフトシステムが、数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>Q(ただし、ρ≧0の場合は左シフト、ρ<0の場合は右シフトを表すものとする)から、数値aをρビットシフトして得られる数値sのシェア[[s]]P(ただし、s=2ρa)を計算する秘密シフト方法であって、
     前記秘密シフトシステムが、シェア<<ρ>>Qから、シェア<<ρ>>pを計算するモジュラス変換ステップと、
     uをu≦M’-M+1を満たす整数、dをd≧ceiling(((R’-R+1)/u)Re)を満たす整数とし、
     前記秘密シフトシステムが、シェア<<ρ>>Qまたはシェア<<ρ>>pと範囲[R, R’]と数値uと数値dから、シェア[[f0]]2=[[(ρ≧-R’)]]2, [[f1]]2=[[(ρ≧-R’+u)]]2, …, [[fd-1]]2=[[(ρ≧-R’+(d-1)u)]]2, [[fL]]2=[[(ρ≧-R+1)]]2を計算する第1フラグ計算ステップと、
     前記秘密シフトシステムが、シェア[[f1]]2, [[f2]]2, …, [[fd-1]]2, [[fL]]2から、シェア<<f1>>p, <<f2>>p, …, <<fd-1>>p, <<fL>>pを計算する第2フラグ計算ステップと、
     前記秘密シフトシステムが、シェア<<ρ>>pとシェア<<f1>>p, <<f2>>p, …,<<fd-1>>p, <<fL>>pと範囲の上限値R’と数値uと数値dから、シェア<<ρ’>>p=<<ρ>>p+R’-u(Σ1≦i<d<<fi>>p)+((d-1)u-R’)<<fL>>pを計算するシフト量計算ステップと、
     前記秘密シフトシステムが、シェア[[a]]Pとシェア<<ρ’>>pから、シェア[[b]]P=[[2ρ’a]]Pを計算する左シフトステップと、
     前記秘密シフトシステムが、シェア[[b]]Pと範囲の上限値R’と数値uと数値dから、シェア[[c0]]P=[[2ρ’a/2R’]]P, [[c1]]P=[[2ρ’a/(2R’-u)]]P, …,[[cd-1]]P=[[2ρ’a/(2R’-(d-1)u)]]Pを計算する右シフトステップと、
     前記秘密シフトシステムが、シェア[[f0]]2, [[f1]]2, …, [[fd-1]]2, [[fL]]2から、シェア[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pを計算する第3フラグ計算ステップと、
     前記秘密シフトシステムが、シェア[[b]]Pとシェア[[c0]]P, [[c1]]P, …, [[cd-1]]Pとシェア[[f0]]P, [[f1]]P, …, [[fd-1]]P, [[fL]]Pから、シェア[[s]]P=[[c0]]P[[f0]]P+([[c1]]P-[[c0]]P)[[f1]]P+…+([[cd-1]]P-[[cd-2]]P)[[fd-1]]P+([[b]]P-[[cd-1]]P)[[fL]]Pを計算するシフト値計算ステップと、
     を含む秘密シフト方法。
  4.  Pを素数、pを素数Pのビット数、Mをシフト量の上限値とし、
     3個以上の秘密シフト装置で構成され、数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>p(ただし、0≦ρ≦M, 数値aをMビット左シフトして得られる数値2Maはオーバーフローしないものとする)から、数値aをρビット右シフトして得られる数値sのシェア[[s]]P(ただし、s=a/2ρ)を計算する秘密シフトシステムであって、
     シェア<<ρ>>pと上限値Mから、シェア<<M-ρ>>pを計算するシフト量計算手段と、
     シェア[[a]]Pとシェア<<M-ρ>>pから、シェア[[b]]P=[[2M-ρa]]Pを計算する左シフト手段と、
     シェア[[b]]Pと上限値Mから、シェア[[s]]P=[[2M-ρa/2M]]Pを計算する右シフト手段と、
     を含む秘密シフトシステム。
  5.  Pを素数、pを素数Pのビット数、Qを剰余環の位数、Mを入力される数値のMSB位置のとりうる上限値とし、
     3個以上の秘密シフト装置で構成され、数値aのシェア[[a]]Pとシフト量ρのシェア<<ρ>>Q(ただし、ρ≧0の場合は左シフト、ρ<0の場合は右シフトを表すものとする)から、数値aをρビットシフトして得られる数値sのシェア[[s]]P(ただし、s=2ρa)を計算する秘密シフトシステムであって、
     シェア<<ρ>>Qから、シェア<<ρ>>pを計算するモジュラス変換手段と、
     シェア<<ρ>>Qまたはシェア<<ρ>>pから、シェア[[fL]]2=[[(ρ≧0)]]2を計算する第1フラグ計算手段と、
     シェア[[fL]]2から、シェア<<fL>>pを計算する第2フラグ計算手段と、
     シェア<<ρ>>pとシェア<<fL>>pと上限値Mから、シェア<<ρ’>>p=<<ρ>>p+M-M<<fL>>pを計算するシフト量計算手段と、
     シェア[[a]]Pとシェア<<ρ’>>pから、シェア[[b]]P=[[2ρ’a]]Pを計算する左シフト手段と、
     シェア[[b]]Pと上限値Mから、シェア[[c]]P=[[2ρ’a/2M]]Pを計算する右シフト手段と、
     シェア[[fL]]2から、シェア[[fL]]Pを計算する第3フラグ計算手段と、
     シェア[[b]]Pとシェア[[c]]Pとシェア[[fL]]Pから、シェア[[s]]P=[[c]]P+([[b]]P-[[c]]P)[[fL]]Pを計算するシフト値計算手段と、
     を含む秘密シフトシステム。
  6.  請求項2に記載の秘密シフト装置としてコンピュータを機能させるためのプログラム。
PCT/JP2020/039077 2020-10-16 2020-10-16 秘密シフトシステム、秘密シフト装置、秘密シフト方法、プログラム Ceased WO2022079890A1 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
AU2020472387A AU2020472387B2 (en) 2020-10-16 2020-10-16 Secure shift system, secure shift apparatus, secure shift method, and program
PCT/JP2020/039077 WO2022079890A1 (ja) 2020-10-16 2020-10-16 秘密シフトシステム、秘密シフト装置、秘密シフト方法、プログラム
JP2022556802A JP7485067B2 (ja) 2020-10-16 2020-10-16 秘密シフトシステム、秘密シフト装置、秘密シフト方法、プログラム
EP20957719.6A EP4210028B1 (en) 2020-10-16 2020-10-16 Secure shift system, secure shift apparatus, secure shift method, and program
CN202080106084.0A CN116324934B (zh) 2020-10-16 2020-10-16 秘密移位系统、秘密移位装置、秘密移位方法、记录介质
US18/029,919 US20230379151A1 (en) 2020-10-16 2020-10-16 Secure shift system, secure shift apparatus, secure shift method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/039077 WO2022079890A1 (ja) 2020-10-16 2020-10-16 秘密シフトシステム、秘密シフト装置、秘密シフト方法、プログラム

Publications (1)

Publication Number Publication Date
WO2022079890A1 true WO2022079890A1 (ja) 2022-04-21

Family

ID=81208978

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/039077 Ceased WO2022079890A1 (ja) 2020-10-16 2020-10-16 秘密シフトシステム、秘密シフト装置、秘密シフト方法、プログラム

Country Status (6)

Country Link
US (1) US20230379151A1 (ja)
EP (1) EP4210028B1 (ja)
JP (1) JP7485067B2 (ja)
CN (1) CN116324934B (ja)
AU (1) AU2020472387B2 (ja)
WO (1) WO2022079890A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12333273B2 (en) * 2018-10-10 2025-06-17 Nippon Telegraph And Telephone Corporation Secure right shift computation system, secure division system, methods therefor, secure computation apparatus, and program

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1104708C (zh) * 1995-09-15 2003-04-02 德克萨斯仪器股份有限公司 多级发射应答器之唤醒、其方法和结构
US6300984B1 (en) * 1998-01-13 2001-10-09 Samsung Electronics Co., Ltd. Ghost-cancellation reference signals using spaced PN sequences
AU2004201740B2 (en) * 2000-02-15 2005-06-23 Silverbrook Research Pty Ltd Validation chip
US7685423B1 (en) * 2000-02-15 2010-03-23 Silverbrook Research Pty Ltd Validation protocol and system
KR100535370B1 (ko) * 2003-02-05 2005-12-08 학교법인 영광학원 유한 필드상의 산술연산기
CN100353342C (zh) * 2003-09-26 2007-12-05 日本电信电话株式会社 标签隐私保护方法、标签装置、后端装置
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
JP5957120B1 (ja) * 2015-05-12 2016-07-27 日本電信電話株式会社 秘密分散方法、秘密分散システム、分散装置、およびプログラム
US10241757B2 (en) * 2016-09-30 2019-03-26 International Business Machines Corporation Decimal shift and divide instruction
AU2018338249B2 (en) * 2017-09-21 2020-11-26 Nippon Telegraph And Telephone Corporation Secure reading apparatus, secure writing apparatus, method thereof, and program
US12333273B2 (en) * 2018-10-10 2025-06-17 Nippon Telegraph And Telephone Corporation Secure right shift computation system, secure division system, methods therefor, secure computation apparatus, and program

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
"Computer vision - ECCV 2020 : 16th European conference, Glasgow, UK, August 23-28, 2020 : proceedings", vol. 29, 10 August 2020, SPRINGER INTERNATIONAL PUBLISHING, Cham, ISBN: 978-3-030-58594-5, article ESCUDERO DANIEL; GHOSH SATRAJIT; KELLER MARCEL; RACHURI RAHUL; SCHOLL PETER: "Improved Primitives for MPC over Mixed Arithmetic-Binary Circuits", pages: 823 - 852, XP047558542, DOI: 10.1007/978-3-030-56880-1_29 *
"Pattern Recognition : 5th Asian Conference, ACPR 2019, Auckland, New Zealand, November 26–29, 2019, Revised Selected Papers, Part II", vol. 10946, 1 January 2018, SPRINGER INTERNATIONAL PUBLISHING, Cham, ISBN: 978-3-030-41298-2, ISSN: 0302-9743, article KIKUCHI RYO, IKARASHI DAI, MATSUDA TAKAHIRO, HAMADA KOKI, CHIDA KOJI: "Efficient Bit-Decomposition and Modulus-Conversion Protocols with an Honest Majority : 23rd Australasian Conference, ACISP 2018, Wollongong, NSW, Australia, July 11-13, 2018, Proceedings", pages: 64 - 82, XP055932868, DOI: 10.1007/978-3-319-93638-3_5 *
DALSKOV ANDERS, ESCUDERO DANIEL, KELLER MARCEL: "Secure Evaluation of Quantized Neural Networks", PROCEEDINGS ON PRIVACY ENHANCING TECHNOLOGIES, vol. 2020, no. 4, 1 October 2020 (2020-10-01), pages 355 - 375, XP055932904, DOI: 10.2478/popets-2020-0077 *
KIKUCHI, R.IGARASHI, D.MATSUDA, T.HAMADA, K.CHIDA, K.: "23rd Australasian Conference on Information Security and Privacy(ACISP 2018), Lecture Notes in Computer Science", vol. 10946, 2018, SPRINGER, article "Efficient Bit-Decomposition and Modulus-Conversion Protocols with an Honest Majority", pages: 64 - 82
RANDMETS, J.: "Programming Languages for Secure Multi-party Computation Application Development", 2017, UNIVERSITY OF TARTU
See also references of EP4210028A4
TAKUMA AMADAMASAHIRO NARATAKASHI NISHIDEHIROSHI YOSHIURA: "Multiparty Computation for Floating Point Arithmetic with Less Communication over Small Fields", JOURNAL OF INFORMATION PROCESSING, vol. 60, no. 9, 2019, pages 1433 - 1447

Also Published As

Publication number Publication date
EP4210028A1 (en) 2023-07-12
JP7485067B2 (ja) 2024-05-16
EP4210028A4 (en) 2024-05-15
JPWO2022079890A1 (ja) 2022-04-21
AU2020472387B2 (en) 2024-06-06
CN116324934B (zh) 2025-02-25
US20230379151A1 (en) 2023-11-23
AU2020472387A9 (en) 2024-09-12
EP4210028B1 (en) 2025-06-11
CN116324934A (zh) 2023-06-23
AU2020472387A1 (en) 2023-05-25

Similar Documents

Publication Publication Date Title
JP6766182B2 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、プログラム
US11164484B2 (en) Secure computation system, secure computation device, secure computation method, and program
JP7067632B2 (ja) 秘密シグモイド関数計算システム、秘密ロジスティック回帰計算システム、秘密シグモイド関数計算装置、秘密ロジスティック回帰計算装置、秘密シグモイド関数計算方法、秘密ロジスティック回帰計算方法、プログラム
JP6534778B2 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
EP4016506B1 (en) Softmax function secret calculation system, softmax function secret calculation device, softmax function secret calculation method, neural network secret calculation system, neural network secret learning system, and program
CN112805768A (zh) 秘密s型函数计算系统、秘密逻辑回归计算系统、秘密s型函数计算装置、秘密逻辑回归计算装置、秘密s型函数计算方法、秘密逻辑回归计算方法、程序
JP2020519968A (ja) ビット分解秘密計算装置、ビット結合秘密計算装置、方法およびプログラム
WO2022079890A1 (ja) 秘密シフトシステム、秘密シフト装置、秘密シフト方法、プログラム
US20230370251A1 (en) Secure computation system, secure computation apparatus, secure computation method, and program
JP7452692B2 (ja) 秘密指数部統一システム、秘密指数部統一装置、秘密指数部統一方法、秘密和計算システム、秘密積和計算システム、プログラム
JP7772205B2 (ja) 秘密計算装置、秘密計算方法、プログラム
JP6532843B2 (ja) 秘匿計算システム、第一秘匿計算装置、第二秘匿計算装置、秘匿回路生成方法、秘匿回路評価方法、プログラム
US12512973B2 (en) Secret maximum value calculation apparatus, method and program
WO2023281693A1 (ja) 秘密計算システム、装置、方法及びプログラム
WO2025062484A1 (ja) 秘密パーセンタイル値計算装置、秘密パーセンタイル値計算方法
JP2025184230A (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: 20957719

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022556802

Country of ref document: JP

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2020957719

Country of ref document: EP

Effective date: 20230406

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020472387

Country of ref document: AU

Date of ref document: 20201016

Kind code of ref document: A

WWG Wipo information: grant in national office

Ref document number: 202080106084.0

Country of ref document: CN

WWG Wipo information: grant in national office

Ref document number: 2020957719

Country of ref document: EP