WO2016129363A1 - 秘密分散を用いた秘匿演算システムに関する計算装置 - Google Patents
秘密分散を用いた秘匿演算システムに関する計算装置 Download PDFInfo
- Publication number
- WO2016129363A1 WO2016129363A1 PCT/JP2016/051934 JP2016051934W WO2016129363A1 WO 2016129363 A1 WO2016129363 A1 WO 2016129363A1 JP 2016051934 W JP2016051934 W JP 2016051934W WO 2016129363 A1 WO2016129363 A1 WO 2016129363A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- secret information
- secret
- server
- integer
- distributed
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
Definitions
- the present invention relates to a calculation apparatus related to a secret calculation system using secret sharing.
- cloud computing has attracted attention as a new network technology.
- users' data is distributed and stored in a virtual large-capacity storage consisting of multiple servers on the network called the cloud, and the user accesses the data from anywhere via the network as needed. It is a technology that makes it possible.
- it is not only simply storing data, but also a technology that realizes a secret calculation that performs arbitrary calculations while concealing individual data using data distributed and stored in the cloud Is required.
- the secret sharing method is a technique in which one piece of secret information is distributed into n pieces, and the original secret information can be restored by collecting k pieces (k ⁇ n) of the distributed values distributed into n pieces. Also, no information about secret information can be obtained from less than k variance values.
- the (k, n) secret sharing method by Shamir is well known.
- a conventional secret sharing system including Shamir's (k, n) secret sharing method includes n data servers that store the distributed values and a dealer that distributes the secret information or a restoration terminal that restores the secret information.
- the owner asks the dealer to distribute the secret information he owns, and the dealer calculates the n distributed values using the secret sharing method and distributes the values to each of the n data servers. store.
- a dealer exists only when secrets are shared.
- a user who wishes to restore collects the distributed values for the secret information to be restored from the k data servers and restores them. This restoration terminal also generally exists only at the time of data restoration.
- This k ⁇ 1 degree polynomial can be solved (the secret information s is obtained) if k variance values W (x1),..., W (xk) are collected.
- the variance is less than k, the solution is indefinite and cannot be determined at all.
- W (x) s + a1x + a2x 2 +... + ak-1x k-1 (1)
- Wa (xj) a + a1xj + a2xj 2 +... + ak-1xj k-1 (2)
- Wb (xj) b + b1xj + b2xj 2 +... + bk-1xj k-1 (3)
- Wa (xj) + Wb (xj) (a + b) + (a1 + b1) xj + (a2 + b2) xj 2 + ... + (ak-1 + bk-1) xj k-1 (4)
- equation (4) which is the addition result, is also expressed by a k ⁇ 1 degree polynomial, so that k, the sums Wa (xj) + Wb (xj) of the variance values are collected to solve the polynomial a, The sum of secret information a + b is obtained instead of individual information b.
- the constant term of the product of Wa (xj) and Wb (xj) is a product of secret informations a and b, so if you calculate the product of variance values and solve the polynomial, the secret The product of information comrades is obtained [1].
- a calculation that obtains a result such as a sum or product without obtaining individual information a and b is called a secret calculation, and it is known that the secret sharing method can be applied to the secret calculation with respect to addition / subtraction and multiplication.
- secret sharing method can be applied to the secret calculation with respect to addition / subtraction and multiplication.
- [2] has been proposed as a multiplication method without changing the number of servers.
- one server has two distributed values, one distributed value is concealed, multiplication is performed, and then random numbers are deleted, so that it is not necessary to change the number of servers.
- Wb (xi) b + b0,1xi + ⁇ + b0, k-1xi k-1
- Wb '(n + xi) ⁇ (b + b0,1 (n + xi) + ... + b0, k-1 (n + xi) k-1 )
- Wb1 (xi) ⁇ + b1,1xi + ⁇ ⁇ ⁇ + b1, k-1xi k-1
- the restoring terminal of the restoring person restores ⁇ from Wa1 (xj), ⁇ from Wb1 (xj), and divides Wab ′ (xj) by ⁇ and ⁇ to create Wab (n + xj).
- the restorer's restoration terminal restores ab using 2k-1 variance values from Wab (xj) and Wab (n + xj).
- [2] is safe against external attackers. However, it is not safe if an attacker from the inside, that is, a restorer who can know only the operation result of ab becomes an attacker to know the original secret information a and b itself. Because the restorer knows ⁇ and ⁇ separately in [Restore] (2), if the restorer eavesdrops on the server, if k / 2 servers are eavesdropped, the k distributed values of a and Since k distributed values of b are obtained, the original secret information is leaked. Therefore, when an attacker who knows nothing about the confidential calculation to the attacker and a restorer who knows the calculation result become an attacker to know the secret information that is the original information of the calculation result There are two types.
- [2] proposes the following countermeasures in which each server changes the transmission information by exchanging random numbers rj and qj at the time of restoration.
- an attacker refers to an attacker from the outside, and when referring to the latter attacker, the name “restorer” is used as it is.
- the external attacker cannot leak the calculation result, but the latter is in a position to know the calculation result.
- the restorer's restoration terminal restores r ⁇ from r ⁇ Wa1 (xj), q ⁇ from q ⁇ Wb1 (xj), divides Wab '(xj) by r ⁇ and r ⁇ , and then Wab (n + xj) create.
- the restorer's restoration terminal restores ab using 2k-1 variance values from Wab (xj) and Wab (n + xj).
- the restorer can eavesdrop only on the distributed value storage other than [multiplication] or [restoration] processing in the above-mentioned secret multiplication, it depends on the k distributed values that the restorer eavesdropped on save. Since the correspondence between the random number and the random number obtained at the time of [restoration] is different, the original secret information cannot be restored. However, if the restorer can eavesdrop on a single server during [Restore], all servers will know r and q. Therefore, by dividing the restored r ⁇ and q ⁇ by r and q, ⁇ and ⁇ can be obtained separately. Therefore, the restorer can still obtain the secret information a and b, which is not safe.
- the method [2] allows multiplication without changing the number of servers in the (k, n) secret sharing method, but if the restorer is an attacker, the secret information itself is leaked, which is not safe. Therefore, in the (k, n) secret sharing method, it can be said that there is no method that does not change the number of servers and does not leak secret information. In addition, this method does not take into account (III) the problem related to the continuation of the secret calculation described later. That is, if one server has two distributed values and one is kept secret, the degree conversion described below cannot be applied and continuous calculation cannot be performed. Further, the problem relating to the division of (II) is not considered at all. Furthermore, the reduction of the dispersion value of (VI) and the speeding up by the multi-value method of (VII) are not considered.
- h (x) which is the multiplication result of f (x) g (x)
- h ′ (x) a polynomial composed of coefficients up to the kth order of h (x)
- Ri a polynomial composed of coefficients up to the kth order of h (x)
- W (W1, W2,..., Wn)
- R (R1, R2,..., Rn)
- xi a server ID and B and P are defined below.
- the n servers need to store the date and time when the amount of money is generated as a search ID together with the variance value of the amount related to deposit and withdrawal.
- each server searches the corresponding distributed value using that search ID and sends it to employee A.
- Employee A can restore it and check the amount information.
- the application collects the distributed values in the period as the search ID, the sum of the amount in the period, the average value, Various statistical values such as variance can be calculated without the server knowing the amount of money, which is confidential information, and can be communicated to the accounting staff of the company.
- it is not possible to perform a search by specifying an amount and specifying the date and time when the amount occurred. For example, only the amount of money generated by employee A is stored, and even if an attempt is made to search for the date and time when it occurred, the amount is secretly shared, so if the distribution value is not known, the search ID cannot be reversed. .
- the server can know which date and time information is being searched. That is, when the company A outsources a server system for data storage, the outsourcing destination company can know the date on which an important transaction was made in the company A (the day that is often searched).
- the date and time of the search ID are encrypted and stored, the server does not know when the date and time of the data is being searched, but only the encrypted user can search the amount.
- the data is considered to be accessed by multiple people, but in this case, the encryption key used for encryption needs to be shared by multiple people, reducing security To do.
- the random numbers a 1 to a k-1 can be updated to new random numbers without changing the secret information s of the distributed values stored in the form (1), the distributed values leaked by the previous unauthorized access Can be disabled.
- the order of the polynomial and the random number must be changed without changing the secret information s.
- asymmetric secret sharing has the feature of reducing the storage capacity and allowing users to participate in the restoration of secret information. Secret information is not restored unless the user participates. Play a role. Therefore, if a secret calculation, a secret search, and a secret update having the features (I) to (V) described above can be realized with respect to the ramp-type secret sharing method and the asymmetric secret sharing, the same effect can be obtained for the secret calculation of personal information. Expected to bring. Furthermore, a combination of these methods is not considered, and an optimum miniaturization can be expected by the combination.
- the XOR method is extended so that secret information is handled as a numerical value instead of a bit string, so that a secret calculation can be performed.
- a method for performing secret addition by treating secret information of the XOR method as a numerical value instead of a bit string has already been proposed [5], but secret multiplication is not proposed.
- the XOR method extension method (hereinafter referred to as the multi-value method) can restore the secret information only by adding and subtracting the variance value, the calculation can be performed at a higher speed than the Shamir method that requires solving the polynomial. Therefore, regarding the XOR method expansion method, if a secret operation, a secret search, and a secret update having the features (I) to (V) can be realized, a very efficient process can be realized.
- the combination of the asymmetric secret sharing method and the multilevel method, the asymmetric secret sharing method and the ramp type secret sharing method, and the combination of the asymmetric secret sharing method and the ramp type secret sharing method corresponding to the multilevel method reduce the storage capacity. And high speed at the same time.
- the purpose is to solve any of the above problems.
- n is an integer
- k is an integer of n or less
- L is an integer of 1 to k
- secret information is distributed into n
- k of n Secret information can be recovered by collecting the distributed values of the secret information, and a computing device for calculating the distributed value in a system that performs a secret operation using means that cannot recover the secret information if kL or less, and k or more secret information
- n is an integer
- k is an integer of n or less
- L is an integer of 1 to k
- secret information is distributed to n
- k of the n distributed values can be collected.
- a computing device that performs a secret operation in a system that performs a secret operation using means that can restore secret information and cannot restore the secret information with kL or less
- the distributed value of the first partial random number which is one of a plurality of random numbers constituting the first random number used for the first concealment secret information, and the second used for the second concealment secret information.
- a computing device comprising:
- n is an integer
- k is an integer of n or less
- L is an integer of 1 to k
- secret information is distributed to n
- k of the n distributed values can be collected.
- n is an integer
- k is an integer of n or less
- L is an integer of 1 to k
- the secret information is distributed to n
- k of the n distributed values can be collected.
- a computing device that restores secret information in a system that performs secret computation using means that cannot restore secret information if kL or less, and is concealed using k or more random numbers Means for restoring the concealed secret information, means for combining the random numbers, and means for releasing the concealment of the restored secret information using the combined random numbers.
- n is an integer
- k is an integer of n or less
- L is an integer of 1 to k
- secret information is distributed to n pieces
- k of the n distributed values can be collected.
- n is an integer
- k is an integer of n or less
- L is an integer of 1 to k
- secret information is distributed to n pieces
- k of the n distributed values can be collected.
- n is an integer
- k is an integer of n or less
- L is an integer of 1 to k
- secret information is distributed to n pieces
- k of the n distributed values can be collected.
- a computing device that calculates a distributed value in a system that performs a secret operation using means that can restore secret information and cannot restore secret information with k ⁇ L or less, and conceals a plurality of new secret information to Means for calculating a variance value of the plurality of variance values, and means for designating the arrangement order of each of the plurality of variance values in accordance with a predetermined arrangement order of the plurality of new secret information before the concealment .
- n is an integer
- k is an integer of n or less
- L is an integer of 1 to k
- secret information is distributed to n
- k of the n distributed values can be collected.
- a computer that specifies secret information to be searched in a system that performs a secret calculation using means that cannot restore secret information with kL or less pieces, and allows a random number to act on the search secret information. Means for concealing, and means for applying the random number to a value received from the system.
- the invention according to claim 9 is such that n is an integer, k is an integer of n or less, L is an integer of 1 to k, and secret information is distributed to n, and k of the n distributed values can be collected.
- a computing device that retrieves secret information designated in a system that performs a ciphering operation using means that cannot restore secret information when kL or less, and the first information corresponding to the secret information.
- the search secret information is concealed with the first random number
- the inputted second search secret information is concealed with the second random number
- the concealed first search secret Based on the difference between the first value based on information and the second value based on the concealed second search secret information, the first search secret information and the second search secret Means for obtaining a difference from the information.
- the invention according to claim 10 is such that n is an integer, k is an integer of n or less, L is an integer of 1 to k, and secret information is distributed to n, and k distributed values of n can be collected.
- a computing device that updates a distributed value in a system that performs a secret operation using a means that can restore secret information and cannot restore secret information with kL or less, and is obtained by concealing secret information with a random number.
- a means for generating a new random number for the distributed value and storing the generated new random number as a new distributed value is provided.
- the invention according to claim 11 is such that n is an integer, k is an integer of n or less, L is an integer of 1 to k, the secret information is distributed to n, and k of the n distributed values can be collected.
- a computing device that updates a distributed value in a system that performs a secret operation using means that cannot restore secret information with kL or less, and obtains secret information from k or more correction information. Means for calculating an update value to be updated are provided.
- the invention according to claim 12 is such that n is an integer, k is an integer of n or less, L is an integer of 1 to k, and secret information is distributed to n, and k distributed values of n can be collected.
- a calculation device for calculating a distributed value in a system that performs a secret calculation using means that cannot restore secret information with kL or less, and generates h (1 to k ⁇ 1) Integer) random numbers are defined as variance values, and n ⁇ h variance values are calculated based on the h variance values and the secret information, and a composite value is obtained from k or more secret information.
- Means for generating, and means for calculating concealed secret information obtained by applying the combined value to new secret information.
- the invention according to claim 13 is such that n is an integer, k is an integer of n or less, L is an integer of 1 to k, the secret information is distributed to n, and k of the n distributed values can be collected.
- a computing device that calculates a distributed value in a system that performs a secret operation using means that cannot restore secret information if kL or less, and the secret information is a numerical value of e-adic and d digits
- n is an integer
- k is an integer of n or less
- L is an integer of 1 to k
- secret information is distributed to n, and k of the n distributed values can be collected.
- a computing device that performs a secret calculation or restoration in a system that performs a secret calculation using a means that can restore secret information and cannot restore secret information below k ⁇ L, and is concealed and divided into a plurality of digits Means for performing a predetermined calculation in accordance with the digit of the concealment secret information is provided.
- the invention according to claim 15 is such that n is an integer, k is an integer of n or less, L is an integer of 1 to k, the secret information is distributed to n, and k of the n distributed values can be collected.
- a computing device comprising means for secretly sharing or decrypting the secret information of p1 * p2 or less multiplied by the following integers using a prime number larger than p1 * p2 as a modulus.
- n is an integer
- k is an integer smaller than n
- L is an integer not less than 1 and not more than k
- the secret information is distributed into n pieces
- k pieces of distributed values among n pieces can be collected.
- the invention according to claim 17 is such that n is an integer, k is an integer of n or less, L is an integer of 1 to k, and secret information is distributed to n, and k distributed values of n can be collected.
- a computing device that searches for a storage location of system secret information that performs a ciphering operation using means that cannot restore secret information with kL or less pieces. Means for obtaining the difference between the two search secret information, and means for determining the storage position according to the difference.
- n is an integer
- k is an integer of n or less
- L is an integer of 1 to k
- the secret information is distributed to n
- k of the n distributed values can be collected.
- a calculation device that updates secret information in a system that performs a secret calculation using means that cannot restore secret information with kL or less, and a predetermined value is set in a distributed value of the secret information. Means for multiplying the first random number and adding a predetermined second random number are provided.
- the present invention can perform multiplication safely without changing the number of necessary servers.
- division can be realized by means similar to multiplication.
- the present invention can realize a continuous secret calculation without contradiction.
- the present invention can realize, for example, a bidirectional search from the search ID to the secret information and from the secret information to the search ID.
- the present invention can update the variance value efficiently and safely.
- the present invention can realize a reduction in storage capacity.
- the present invention can realize high-speed processing. According to the present invention, it is possible to reduce the storage capacity and increase the processing speed.
- FIG. 1 is a diagram showing a system according to first to tenth embodiments.
- FIG. It is a block diagram which shows the structure of 12 A of 1st dealer apparatuses. It is a flowchart which shows a distributed processing program. It is a figure which shows the distributed value of each server. It is a flowchart which shows a distributed processing program. It is a figure which shows the distributed value of each server. 10 is a flowchart showing an ⁇ a restoration / transmission processing program. It is a figure which shows the content of the decompression
- (A) is a flowchart which shows a multiplication process program
- (B) is a figure which shows the distributed value of each server. It is a flowchart which shows the decompression
- FIG. 1 It is a flowchart which shows a division result acquisition process program. It is a figure which shows the content of the division result acquisition process of FIG. (A) is a flowchart which shows a division processing program, (B) is a figure which shows the distributed value of each server. It is a flowchart which shows the decompression
- (A) is a flowchart showing a distributed processing program
- (B) is a flowchart showing a restoration processing program. It is a flowchart which shows a distributed processing program.
- FIG. 1 shows an example in which three dealer devices, that is, a first dealer device 12A, a second dealer device 12B, and a third dealer device 12C are provided.
- the system also has n servers that independently store the distributed n distributed values, ie, the first server 14x 1 , the second server 14x 2 ,.
- a server 14x n (hereinafter also referred to as a server system) is provided.
- the system includes a restoration device 16 that restores the secret information or the result of the secret calculation.
- a restoration device 16 that restores the secret information or the result of the secret calculation.
- the system may also include a search server 18.
- the first dealer device 12A to the third dealer device 12C, the first server 14x 1 to the nth server 14x n , and the restoration device 16 are connected via a network 10 such as the Internet. Are connected to each other.
- the search server 18, networks - without using the click 10, the first service - are directly connected to each of the bar 14x n - bar 14x 1 ⁇ the n number of service.
- the first dealer device 12A to the third dealer device 12C, the first server 14x 1 to the nth server 14x n , the restoration device 16, and the search server 18 have the same configuration.
- the configuration of the first dealer device 12A will be described, and description of other devices will be omitted.
- FIG. 2 is a block diagram showing a configuration of the first dealer apparatus 12A.
- the first dealer device 12 ⁇ / b> A includes a CPU 22, a ROM 24, and a RAM 26.
- the first dealer 12 ⁇ / b> A includes a display device 30, an input device 32, a storage device 34, and an interface (I / F) 36. These devices are connected to each other via a bus 28.
- the interface (I / F) 36 is connected to the network 10. Note that the interface (I / F) 36 of the search server 18 is not connected to the network 10, and is the interface (I / F) 36 of the first server 14 x 1 to the n-th server 14 x n. It is connected to the.
- the ROM 24 stores a program for each process described later.
- the owner having the secret information operates the first dealer device 12A to the third dealer device 12C.
- a user (restorer) who can know the calculation result operates the restoration device 16.
- the first server 14x 1 to the n-th server 14x n accept only communication from a valid owner or a restorer, and reject unauthorized communication. Further, the communication between the first dealer device 12A to the third dealer device 12C and the first server 14x 1 to the nth server 14x n and the restoration device 16 is a secure communication path by encryption or the like. Has been built. Generally, each owner or restorer has the first dealer device 12A to the third dealer device 12C and the restoration device 16 individually.
- the first dealer device 12A to the third dealer device 12C may be provided as an input port of the server system, and the restoration device 16 may be provided as an output port of the server system.
- the secret search function of the system shown in FIG. 1 will be described.
- the owner uses the first dealer device.
- the owner calculates the distributed value of his / her secret information by the first dealer 12A, and stores the distributed value in the area of each server assigned to himself / herself.
- each distributed value is stored in the server system together with identification data for searching for it, that is, a search ID or a distributed value related to the search ID.
- the owner distributes the search IDs using the method described in the sixth embodiment.
- a legitimate restorer who wishes to search and restore information shows the search ID to the restoration device 16, and the restoration device 16 sends the corresponding information to the server system using the method described in the sixth embodiment.
- the server system transmits the secret information distributed value corresponding to the sent information to the restoration device 16, and if there is no secret information distributed value, informs that there is no secret information distributed value. .
- the restoration device 16 that has obtained the distributed value of the secret information corresponding to the search ID then restores the secret information or the result of the secret calculation.
- the system performs the confidential search shown in the sixth embodiment. However, since the system has a plurality of functions, when the function of the confidential search is not required, the function of the confidential search is not used. You can also search for.
- the restoration device 16 uses the above-described secret search function (the normal search function when the secret search is not used).
- the search ID is concealed using () to obtain a distributed value to be calculated and stored in the server system corresponding to the ID.
- the server system performs a secret calculation on the specified operation using it, and obtains a variance value of the final result.
- the restoration device 16 that obtained the variance value of the final result restores it to obtain the final result.
- a process performed by the restoration device 16 will be described.
- the server system is mainly responsible for the secret operation, but the restoration device 16 or each dealer device may cooperate with the secret operation.
- the concealment calculation is performed on the secret information.
- the conditional expression concealment calculation based on the search ID is performed. Therefore, this secret calculation function is also used when calculating the conditional expression while keeping the search ID secret.
- this secret calculation function is not used and a normal calculation function is provided.
- the server system of FIG. 1 has a secret update function for stored information that is performed periodically or at a predetermined timing such as when a distributed value for certain secret information is used.
- a secret update function for stored information that is performed periodically or at a predetermined timing such as when a distributed value for certain secret information is used.
- an updating method for various cases will be described. However, this function may not be used if secret update is not performed.
- the first to sixth embodiments will be described by taking Shamir's (k, n) secret sharing scheme as an example.
- the seventh embodiment while reducing the storage capacity, A technique for simultaneously reducing the storage capacity and the calculation amount is shown for the asymmetric secret sharing method that performs secret search, secret calculation, and secret update. That is, the present invention is effective for the asymmetric secret sharing method.
- the overall configuration is the same as in FIG.
- the secret search and the secret are performed while simultaneously reducing the storage capacity and the calculation amount.
- a method for calculating and updating confidentiality is shown. That is, the present invention is also effective for the lamp-type secret sharing method.
- the overall configuration is the same as in FIG.
- the secret information is handled as a bit string, the secret information is distributed and restored only by XOR (k, n), and the secret sharing method is extended to handle the secret information as a numerical value (multi-valued) Method).
- the calculation amount is reduced, and it is shown that the secret search, secret search, and secret update functions of the first to sixth embodiments can be performed at high speed. That is, it shows that the present invention is also effective for the multilevel method.
- the overall configuration is the same as in FIG.
- the tenth embodiment shows that the proposal of the present invention is effective for a method combining the asymmetric secret sharing method and the multi-value method or the ramp-type multi-value method.
- a system (first embodiment) in which the functions shown in the first to sixth embodiments can be performed in a small size and at high speed is realized, and the effectiveness of the present invention is shown.
- the secret multiplication method that does not change the threshold k with respect to the Shamir (k, n) secret sharing method is shown below.
- the first dealer device 12A has secret information a
- the second dealer device 12B has secret information b.
- a case where the multiplication result of a ⁇ b is obtained while a and b are kept secret will be described.
- random number generation and not including 0 first sub - server 14x 1 ⁇ the n number of sub - Bas 14x n identification data - x 1 ⁇ x n is the public is (mackerel ID) It is a value, that is, another device stores each server ID.
- the decimal point position is stored separately or predetermined according to regulations. Therefore, the sum of integer representations of real numbers can be handled in the same way as the sum of integers, and the decimal point position does not change.
- the product of integer representations of real numbers can be handled in the same way as the product of integers, but the decimal point position changes. For example, when calculating the product of real numbers having the second decimal place, the real number having the fourth decimal place is obtained.
- the third decimal place is rounded down or rounded off, and the product is also a second decimal place real number.
- adjusting the decimal point position according to the definition of the decimal point position and returning it to a real number is called realization.
- a real number has a fixed-point representation and a floating-point representation on a computer. However, since these are representations only, both of them can be handled if the above rules are defined. The above premise is common to all the embodiments.
- the concealment multiplication 1 (basic form) is executed by each process of distribution, multiplication, and restoration.
- dispersion secret sharing
- the CPU 22 of the first dealer apparatus 12A executes the distributed value processing shown in FIG.
- step 46 the dispersion values Wa ′ (x i ) to Wak (x i ) are transmitted to the first server 14x 1 to the n-th server 14x n .
- the dispersion values Wa ′ (x i ) to Wak (x i ) of the first server 14x 1 to the nth server 14x n are as shown in FIG. is there.
- the CPU 22 of the second dealer apparatus 12B executes the distributed processing shown in FIG.
- step 54 the following variance values are calculated.
- Wb ′ (x i ) ⁇ (b + b 0,1 x i +... + B 0, k ⁇ 1 x i k ⁇ 1 )
- Wb 1 (x i ) ⁇ 1 + b 1,1 x i +... + B 1, k ⁇ 1 x i k ⁇ 1 :
- Wb k (x i ) ⁇ k + b k, 1 x i +...
- step 56 the dispersion values Wb ′ (x i ) to Wb k (x i ) are transmitted to the first server 14x 1 to the n-th server 14x n .
- the dispersion values Wb ′ (x i ) to Wb k (x i ) of the first server 14x 1 to the nth server 14x n are as shown in FIG. It is.
- step 76 the product ⁇ j ⁇ j is calculated, and in step 78 Wab ′ (x j ) and ⁇ j ⁇ j are transmitted to the restoration device 16.
- the first server 14x 1 has Wab ′ (x 1 ) and ⁇ 1 ⁇ 1
- the second server 14x 2 has Wab ′ (x 2 ) and ⁇ 2 ⁇ 2
- the third Sa - server 14x 3 transmits Wab 'a (x 3) and the alpha 3 beta 3 to restore device 16. Therefore, in the above example, the data shown in FIG.
- the variance value is calculated in step 44 (FIG. 3) and step 54 (FIG. 5), and distributed in step 46 (FIG. 3) and step 56 (FIG. 5).
- one random number is restored for each server in [Restore] step 74 (FIG. 10), and the product is calculated and transmitted to the restorer 16 in steps 76 to 78 of FIG. To do.
- the random numbers of all the servers are not known, the combined value ⁇ or ⁇ cannot be known. In other words, ⁇ and ⁇ cannot be individually restored even if eavesdropping on k ⁇ 1 servers. Therefore, ⁇ a to a or ⁇ b to b are not known.
- the secret information is distributed by applying a composite value in steps 44 to 46 (FIG. 3) and steps 54 to 56 (FIG. 5) of [distribution], and as shown in claim 3, Multiplication] is restored once in steps 62 to 64 (FIG. 7), and calculation is performed using the restored values in step 76 (FIG. 10). This enables multiplication without changing the order k ⁇ 1 of the variance value.
- the third feature is that, as shown in claim 4, in steps 82 to 86 of FIG. 12 in [restoration], the operation result ( ⁇ ab) concealed from the variance value Wab ′ (x i ) is restored and synthesized. The point is that it is divided by ⁇ .
- Step 44 (FIG. 3) and Step 54 (FIG. 5) of [Dispersion] the concealment dispersion values such as the dispersion values Wa ′ (x i ) and Wb ′ (x i ) are Although a random number is applied to the distributed value, it may be secretly distributed by applying a random number to the secret information.
- step 64 is service - in the server 14x d
- the example has a first server 14x 1 restores the .alpha.a, multiple service - to restore the .alpha.a in bar, It may be transmitted to a server other than the restored server.
- ⁇ a is restored on all servers, it is not necessary to transmit the value of ⁇ a to other servers.
- service - server 14x d other service - was a convey ⁇ a the server, if the k stand participating in restoration is determined, at least that k stand service - may tell the server. Further, ⁇ b may be restored instead of ⁇ a.
- step 72 (FIG. 10) of [Restore] the server j collects Waj (x i ) and Wbj (x i ) corresponding to the designated j. It may be determined as follows. For example, j may be defined as 1, 2,..., K according to the ascending order of the server IDs participating, or may be determined in descending order. Also, each server may determine its own j value in the order from the earliest.
- each server sends ⁇ j ⁇ j to the restorer, and the restoration device 16 restores ⁇ in step 82 of FIG. . That is, for example, in step 78 of FIG. 10, the server 14x 1 repeatedly sends ⁇ 1 ⁇ 1 to the server 14x 2 , and the server 14x 2 repeats sending ⁇ 2 ⁇ 2 to the next server, so that the last server Restore ⁇ at 14x k . Thereafter, the server 14x k transmits ⁇ to the other servers, and each server calculates Wab ′ (x i ) / ⁇ . In this case, in step 82 in FIG.
- the restoring device 16 collects Wab ′ (x i ) / ⁇ from k servers and restores ab, and steps 84 and 86 are omitted. Also, each server sends ⁇ j ⁇ j to the search server instead of the restorer, the search server restores ⁇ and returns it to each server, and each server calculates Wab ′ (x i ) / ⁇ , and the result May be sent to the restorer.
- server 14x d is Wb '(x i) gathering restore the .beta.b, it may be sent to restore device 16 to calculate the ⁇ ab over the .alpha.a. In that case, step 82 of FIG. 12 in [Restore] is deleted.
- k random numbers ⁇ i and the like are generated and each server decodes one of them, but k or more random numbers may be generated, and each server may restore and combine a plurality of random numbers.
- t ⁇ k random numbers are generated in Step 42 of FIG. 3 of [Distribution], and the product ⁇ is calculated using q as a modulus.
- Step 74 of FIG. The random numbers are restored and multiplied in step 76. The same applies to the following embodiments.
- step 94 the following variance values are calculated.
- Wc ′ (x i ) ⁇ (c + c 0,1 x i +... + C 0, k ⁇ 1 x i k ⁇ 1 )
- Wc1 (x i ) ⁇ 1 + c 1,1 x i +... + C 1, k ⁇ 1 x i k ⁇ 1 :
- Wck (x i ) ⁇ k + c k, 1 x i +... + C k, k ⁇ 1 x i k ⁇ 1
- the dispersion values Wc ′ (x i ) to Wck (x i ) are transmitted to the n first servers 14x 1 to the n th server 14x n .
- Wabc ′ (x j ) is generated by multiplying the Wab ′ (x j ) of the user by ⁇ c.
- Wabc ′ (x j ) ⁇ c (ab + ab 0,1 x i +... + Ab 0, k ⁇ 1 x i k ⁇ 1 )
- Wabc ′ (x 1 ) to Wabc ′ (x 4 ) in the first server 14x 1 to the fourth server 14x 4 are as shown in FIG.
- this embodiment is effective for concealment multiplication and its repetition.
- decimal point position when a real number is targeted, secret sharing is performed for the decimal point position, and the process of shifting the decimal point can be executed as a secret calculation. For example, when all decimal point positions are the second decimal place, as described above, the decimal point position does not change by addition / subtraction, and the decimal point position changes only by multiplication / division. However, since the change of the decimal point position can be calculated by addition and subtraction, the secret-distributed decimal point position may be added secretly.
- the real number-based concealment multiplication is shown below.
- the flow of processing is almost the same as the secret multiplication 1, but the following secret multiplication 3 is shown in order to understand the details corresponding to the real number.
- secret information and random numbers are real numbers as follows, and all operations other than the secret sharing part are performed by real number calculation without using q as a modulus.
- Dispersion] dispersion of ⁇ i and beta i are secret sharing in was dispersed by an integer the modulo p, variance of ⁇ a and ⁇ b are secret sharing with integer modulo q.
- the restoration process of ⁇ i and ⁇ i in [Restore] is performed with p as the modulus
- the restoration process of ⁇ a and ⁇ b is performed with the modulus of q, but the restored ⁇ i , ⁇ i , ⁇ , ⁇
- Related operations are not modulo q, but are calculated as real numbers.
- ⁇ b is restored in addition to ⁇ a, and then a real number is calculated.
- the added processing is to secretly distribute the value indicating the decimal point position in [Distribution] and to calculate the new decimal point position by performing the secret addition as described above in [Multiplication].
- the random number ⁇ i is expressed as a real number having a predetermined decimal point position.
- step 103 the CPU 22 of the first dealer apparatus 12A calculates the following variance value.
- ⁇ ⁇ 1 ⁇ ⁇ 2 ⁇ ⁇ ⁇ ⁇ k is shifted by the rounding method, but for simplicity here, ⁇ is calculated ⁇ 1 ⁇ ⁇ 2 ... ⁇ k , then adjust the decimal point position Then.
- ⁇ will have 2k decimal place, but the decimal place will be adjusted and rounded off or rounded off to 2 decimal places and expressed as an integer.
- an integer less than or equal to p an integer less than or equal to p
- ⁇ a is expressed as an integer as a real number with a fixed decimal point position that can be expressed as an integer less than or equal to q (here, the second decimal place)
- the following variance is calculated using prime number q as the modulus To do.
- a value d 1 (an integer less than or equal to p) representing the decimal point position of ⁇ i and a value d3 representing the decimal point position of ⁇ a are also secretly distributed using p as a modulus.
- Wa ′ (x i ) ⁇ (a + a 0,1 x i +... + A 0, k ⁇ 1 x i k ⁇ 1 )
- Wa 1 (x i ) ⁇ 1 + a 1,1 x i +... + A 1, k ⁇ 1 x i k ⁇ 1 :
- Wa k (x i ) ⁇ k + a k, 1 x i +...
- step 105 the data are transmitted to the first server 14x 1 to the nth server 14x n .
- step 113 the following variance value is calculated.
- b, ⁇ i, and ⁇ are expressed as integers, they are real numbers having a predetermined decimal point position that can be expressed by an integer less than or equal to p.
- ⁇ b is expressed as an integer
- the following variance value is calculated by expressing ⁇ b as an integer and modulo the prime number q.
- the value d 2 (integer of p or less) representing the decimal point position of ⁇ i and the value d4 representing the decimal point position of ⁇ ba are also secretly distributed using p as a modulus.
- Wb ′ (x i ) ⁇ (b + b 0,1 x i +... + B 0, k ⁇ 1 x i k ⁇ 1 )
- Wb 1 (x i ) ⁇ 1 + b 1,1 x i +... + B 1, k ⁇ 1 x i k ⁇ 1 :
- Wb k (x i ) ⁇ k + b k, 1 x i +...
- step 115 the data is transmitted to the first server 14x 1 to the n-th server 14x n .
- the servers participating in the restoration for example, the CPUs 22 of the first server 14x 1 to the k-th server 14x k determined in advance, execute the restoration / transmission processing of ⁇ j ⁇ j shown in FIG. . That is, in step 121, Wa j (x j ) and Wb j (x j ) corresponding to the designated j are collected from the server corresponding to j, and in step 123, ⁇ j and ⁇ j are modulo prime p. Restore one by one. In step 125, ⁇ j ⁇ j is calculated as a real number using ⁇ j and ⁇ j converted to real numbers, and the calculated ⁇ j ⁇ j is transmitted to the restoring device 16 in step 127.
- Each server calculates Wd1 (xi) + Wd3 (xi) and sends it to the restoration device.
- the restoration device restores Wd1 (xi) + Wd3 (xi), knows the decimal point position of ⁇ from the value obtained by multiplying it by k, and adjusts the decimal point position of ⁇ .
- the CPU 22 of the first server x 1 executes ⁇ ab transmission processing shown in FIG. That is, in step 141, k corresponding Wa ′ (x i ) are collected from each server, and in step 143, ⁇ a is restored modulo the prime number q. In step 145, k corresponding Wb ′ (x i ) are collected from each server, and in step 147, ⁇ b is restored modulo the prime number q. In step 149, ⁇ ab is calculated as a real number, and in step 151, ⁇ ab is transmitted to the restoration device 16. If necessary, the following processing is performed.
- Each server calculates Wd2 (xi) + Wd4 (xi) and sends it to the restoration device.
- the restoration device restores Wd2 (xi) + Wd4 (xi), knows the decimal point position of ⁇ ab from the value, and adjusts the decimal point position of ⁇ ab.
- the restoration device 16 receives ⁇ ab at step 135 in FIG. 26, and obtains ab by dividing by ⁇ at step 137.
- ⁇ and ⁇ are real numbers of p or less, and if ⁇ a is expressed as an integer, they are real numbers of q or less.
- ⁇ and a are integers, limiting the combination of ⁇ and a by preventing the random number ⁇ from being an integer equal to or less than q, but if ⁇ and a are real numbers, ⁇ and a are less than p, By making ⁇ a less than or equal to q, both secret sharing and real number calculation are made compatible. Therefore, it can be said that it is safe to disclose ⁇ a and ⁇ b.
- This feature is indicated in claim 15.
- the value representing the decimal point position is also secretly distributed and the decimal point position of the calculation result is adjusted. For example, when the decimal point position is fixed to a certain value, the distributed value representing the decimal point position and the secret calculation can be omitted. For example, if all parameters are defined as real numbers with the second decimal place, it is clear that the decimal point position of ⁇ is 2k and the decimal point position of ⁇ ab is 4 in the above algorithm.
- the concealment multiplication can be realized by the concealment multiplication 1 regardless of an integer or a real number.
- concealment division cannot be realized only by making concealment multiplication 1 correspond to division (concealment division 1). Therefore, the secret multiplication 3 is for making the secret multiplication and the secret division the same form (corresponding to the secret division 3). The feature will be described in the second embodiment. The same applies to the following embodiments.
- a certain server 14x d for example, the CPU 22 of the predetermined first server 14x1, executes the restoration / transmission processing of ⁇ a shown in FIG. 7 (see also FIG. 8). Specifically, k Wa ′ (x i ) are collected (step 62), ⁇ a is restored (step 64), and ⁇ a is distributed to other servers (step 66).
- step 136 the quotient ⁇ j / ⁇ j is calculated, and in step 138 (see also FIG. 30), Wab ′ (x j ) and ⁇ j / ⁇ j are transmitted to the restoration device 16.
- Wab ′ (x j ) and ⁇ j / ⁇ j are transmitted to the restoration device 16.
- the second aspect is the same as the second aspect, but specifically, the method of “synthesize the restored first partial random number and the second partial random number” is different. That is, ⁇ j ⁇ j is synthesized from ⁇ j and ⁇ j in the secret multiplication, but ⁇ j / ⁇ j is synthesized in the secret division.
- Claim 3 is also the same, but the specific calculation to be performed is different.
- Claim 4 is also the same, but specifically, the random numbers to be combined are different.
- each server calculates ⁇ j / ⁇ j in step 136 and sends it to the restoration device in step 138, but calculates ⁇ j / ⁇ j in step 136 and sends it to the restoration device in step 138.
- the restoration device may synthesize ⁇ / ⁇ from ⁇ j / ⁇ j , and in step 146, ⁇ / ⁇ may be multiplied by ⁇ b / ⁇ a to obtain b / a.
- the first sub - CPU 22 of server 14x 1 executes the decompression distributed processing of ⁇ c shown in FIG. 16 described above. That is, k pieces of Wc ′ (x j ) are collected (step 102), ⁇ c is restored (step 104), and ⁇ c is transmitted to another server (step 106) (see also FIG. 17).
- step 156 (see also FIG. 35), ⁇ j / ⁇ j ⁇ j is calculated, and in step 158, Wabc ′ (x j ) and ⁇ j / ⁇ j ⁇ j are transmitted to the restoration device 16.
- each data shown in FIG. 35 is transmitted to the restoration device 16.
- the CPU 22 of the restoration device 16 executes the multiplication result acquisition process of FIG. That is, at step 162 (see also FIG. 37), ( ⁇ / ⁇ ) (b / ac) is restored from k Wabc ′ (x j ), and at step 164 (see also FIG. 37), ⁇ / ⁇ is restored. In step 166 (see also FIG. 37), ( ⁇ / ⁇ ) (b / ac) is divided by ⁇ / ⁇ to obtain b / ac. It is clear that the same extension is possible in the case of continuous combination of concealment division and multiplication.
- the random number ⁇ i is expressed as a real number having a predetermined decimal point position.
- the CPU 22 of the first dealer 12A calculates the following variance value at step 44 in FIG.
- a and ⁇ are real numbers with a fixed decimal point position that can be expressed by integers less than or equal to p
- ⁇ a is calculated as a real number
- ⁇ a is expressed as an integer
- the following variance is modulo prime number q. calculate.
- Wa ′ (x i ) ⁇ (a + a 0,1 x i +...
- x i difference - server ID (i 1, ..., n )
- step 46 of FIG. 3 the data is transmitted to the first server 14x 1 to the nth server 14x n .
- ⁇ i be represented as a real number with a fixed decimal point position.
- the following variance values are calculated. In this case, if b and ⁇ are expressed as integers, they are real numbers having a predetermined decimal point position that can be expressed by an integer less than or equal to p.
- Wb ′ (x i ) ⁇ (b + b 0,1 x i +... + B 0, k ⁇ 1 x i k ⁇ 1 )
- Wb1 (x i ) ⁇ 1 + b 1,1 x i +... + B 1, k ⁇ 1 x i k ⁇ 1 :
- Wbk (x i ) ⁇ k + b k, 1 x i +...
- step 56 the data is transmitted to the first server 14x 1 to the n-th server 14x n .
- the servers participating in the restoration for example, the CPUs 22 of the first server 14x 1 to the k-th server 14x k determined in advance execute the restoration / transmission process of ⁇ j / ⁇ j in FIG. . That is, in step 172 (see also FIG. 39), Wa j (x j ) and Wb j (x j ) corresponding to the designated j are collected, and in step 174 (see also FIG. 39), ⁇ j and ⁇ j Are restored one by one using the prime number q as the modulus. In step 176 (see also FIG.
- a real number q is calculated from ⁇ j / ⁇ j using realized ⁇ j and ⁇ j , and the calculated ⁇ j / ⁇ j is calculated in step 178 (see also FIG. 39).
- the data is transmitted to the restoration device 16.
- the CPU 22 of the first server x 1 collects k Wa ′ (x i ) and restores ⁇ a modulo the prime number q in step 192 of FIG. 41A (see also FIG. 41B). To do.
- step 94 k Wb ′ (x i ) are collected and ⁇ b is restored using the prime number q as the modulus.
- step 196 ⁇ b / ⁇ a is calculated as a real number, and in step 198, ⁇ b / ⁇ a is transmitted to the restoration device 16.
- the restoration device 16 receives ⁇ b / ⁇ a in step 186 in FIG. 40, and in step 188 divides ⁇ b / ⁇ a by ⁇ / ⁇ to obtain b / a.
- secrecy division 3 The characteristics of secrecy division 3 (corresponding to real numbers) are as follows.
- secret multiplication 1 or secret division 1 the random number ⁇ that acts on the secret information a (an integer less than or equal to p) is an integer that is less than or equal to q (a prime number greater than p 2 ) that performs the modulo operation. Therefore, ⁇ a which is the confidential information is different from the actual value. However, as a result, the confidential information ⁇ a is randomized and becomes secure. Thereafter, ⁇ ab is calculated by multiplication, but this value is also different from the actual value. When deleting a random number, ⁇ ab is divided by ⁇ j ⁇ j, but the value of ⁇ j ⁇ j is also a legal operation and is different from the actual value.
- ⁇ b / ⁇ a is directly calculated using ⁇ a and ⁇ b whose restored dispersion values are restored, since the restored ⁇ b and ⁇ a are different from the actual values, they are not correct b / a.
- ⁇ a is always a value equal to or less than q, and thus becomes an actual value.
- prime factorization is used in this case, ⁇ and a constituting ⁇ a are narrowed down, which is not safe.
- the concealment multiplication 3 is adapted to support multiplication using the same variance value when concealment division 3 is performed.
- the CPU 22 of the first server 14x1 calculates ⁇ b / ( ⁇ a ⁇ c) using ⁇ a, ⁇ b, and ⁇ c as real numbers, and the restoring device 16 Send to.
- the CPU 22 of the terminal device 16 obtains b / ac by dividing ⁇ b / ( ⁇ a ⁇ c) by ⁇ / ⁇ in step 188 of FIG.
- c and values related thereto are also converted into integers and distributed as real numbers similar to a and b.
- both the concealment division 2 and the real continuous division are possible as well.
- the secret division can be performed by the same processing as the secret multiplication, and the basic calculation and the repetition calculation can be performed, and all the real numbers can be handled.
- the server xd in [restoration] cannot obtain information on the secret information a and b and the calculation result b / a, any server can be used.
- the restoration device 16 cooperates with the confidential calculation in [multiply-sum]. However, the restoration device 16 does not know anything about confidential information and intermediate results like the first server 14x1 of the second embodiment. No information is available.
- the secret product sum 1 (basic form) is executed by distribution, product sum, and restoration.
- Wa ′ (x i ) ⁇ (a + a 0,1 x i +... + A 0, k ⁇ 1 x i k ⁇ 1 )
- Wb ′ (x i ) ⁇ (b + b 0,1 x i +...
- Wbk (x i ) ⁇ k + b k, 1 x i +... + B k, k ⁇ 1 x i k ⁇ 1
- Wc1 (x i ) ⁇ 1 + c 1,1 x i +... + C 1, k ⁇ 1 x i k ⁇ 1 :
- Wck (x i ) ⁇ k + c k, 1 x i +... + C k, k ⁇ 1 x i k ⁇ 1
- the first sub - server 14x 1 executes the decompression distributed processing ⁇ a in FIG.
- the first server 14x 1 to the k-th server 14x k execute the multiplication process of FIG. Therefore, the first server 14x 1 to the k-th server 14x k obtain the following Wab ′ (x j ) (see FIG. 9B).
- Wab ′ (x j ) ⁇ a (b + ab 0,1 x i +... + Ab 0, k ⁇ 1 x i k ⁇ 1 )
- step 204 a random number ⁇ j is generated, ⁇ j ⁇ j / ⁇ j and ⁇ j / ⁇ j are calculated, and in step 206, ⁇ j ⁇ j / ⁇ j and ⁇ j / ⁇ j are transmitted to the restoration device 16.
- the CPU 22 of the restoration device 16 executes the restoration process of FIG. That is, ⁇ j ⁇ j / ⁇ j and ⁇ j / ⁇ j are received at step 222, and ⁇ / ⁇ and ⁇ / ⁇ are calculated by multiplying ⁇ j ⁇ j / ⁇ j and ⁇ j / ⁇ j at step 224.
- ⁇ / ⁇ and ⁇ / ⁇ are transmitted to each server, that is, the first server 14x 1 to the kth server 14x k .
- Wabc ′ (x j ) is transmitted to the restoration device 16, and in step 216, ⁇ j is transmitted to the restoration device 16.
- the CPU 22 of the restoring device 16 receives Wabc ′ (x j ) from the first server 14x 1 to the kth server 14x k at step 228 in FIG. 43, and at step 230 ⁇ (ab + c) ).
- ⁇ j is not generated
- ⁇ j ⁇ j / ⁇ j is calculated in step 204 of FIG. 42 and transmitted in 205
- the restoring device 16 returns it in step 222 of FIG.
- Wab ′ (xi) by ⁇ / ⁇ at 210
- Wc By multiplying (xi) by ⁇ / ⁇ , the random numbers related to the two dispersion values can be matched with ⁇ or ⁇ instead of ⁇ .
- the sum of a + c can be calculated if the processing related to b is omitted without executing the above-described [ ⁇ - ⁇ restoration / distribution processing of FIG. 7] and multiplication processing of FIG. Further, the product of ab can be calculated if the processing related to c is not performed in the product-sum processing of FIG. Furthermore, if the processing is repeated with Wabc ′ (x j ) obtained in step 212 of FIG. 42 in [Product sum] as Wa ′ (x i ), the secret calculation of (ab + c) b + c is performed by Wabc ′ (x j ). It can be seen that a secret calculation of ab + ab + c can be realized by repeating the processing with Wc ′ (x i ).
- Wabc ′ (x j ) is set to Wa ′ (x i )
- Wb ′ (x j ) is set to Wd ′ (x i )
- Wc ′ (x j ) is set to We ′ (x i ).
- (Ab + c) d + e is obtained, and it can be seen that various operations can be realized. Furthermore, if the processing related to a and c in the secret product sum 1 is omitted, the random number ⁇ applied to Wb ′ (x i ) can be changed to ⁇ .
- ⁇ j can be made disposable, but if server j secretly distributes ⁇ j and stores the distributed value in all servers, it can be used when necessary. Further, it is clear that even if the parameter is a real number, it is possible to cope with the continuation of calculation from the embodiments so far.
- random numbers such as ⁇ , ⁇ , and ⁇ independently set by owners A, B, and C use ⁇ j, ⁇ j, and ⁇ j, or newly use ⁇ j and the like. To convert it into a convenient form for the next secret operation.
- the concealment multiplication shown in the first embodiment is concealed by applying a random number to the secret information, and the concealment operation without changing the threshold value k is made possible by restoring the concealment information once.
- the problem of the first embodiment is that, when the secret information is 0, once the concealment secret information is restored, the value becomes 0 and it can be seen that the secret information is 0 (confidential Because the random number used for conversion is not 0).
- this property is effective because it can be seen that division cannot be performed when the concealment secret information once restored is 0.
- the CPU 22 of the first dealer 12A calculates the following distribution value (step 44) and distributes it to n servers (step 46).
- Wa (x i ) a + a 0,1 x i +... + A 0, k ⁇ 1 x i k ⁇ 1
- Wa ′ (x i ) ⁇ (a + a 0,1 (n + x i ) +... + A 0, k ⁇ 1 (n + x i ) k ⁇ 1 )
- Wa1 (x i ) ⁇ 1 + a 1,1 x i +... + A 1, k ⁇ 1 x i k ⁇ 1 :
- Wak (x i ) ⁇ k + a k, 1 x i +...
- the CPU 22 of the second dealer 12B executes the distribution process shown in FIG. 5, calculates the following distribution value (step 54), and distributes it to n servers (step 56).
- Wb (x i ) b + b 0,1 x i +... + B 0, k ⁇ 1 x i k ⁇ 1
- Wb ′ (x i ) ⁇ (b + b 0,1 (n + x i ) +... + B 0, k ⁇ 1 (n + x i ) k ⁇ 1 )
- Wb 1 (x i ) ⁇ 1 + b 1,1 x i +...
- Wbk (x i ) ⁇ k + b k, 1 x i +... + B k, k ⁇ 1 x i k ⁇ 1
- x i difference - server ID (i 1, ..., n)
- the servers participating in the restoration for example, the CPUs 22 of the first server 14x 1 to the k-th server 14x k determined in advance, execute the restoration process of ⁇ j ⁇ j in FIG. That is, in step 244, Wa j (x i ) and Wb j (x i ) corresponding to the designated j are collected, and in step 246, ⁇ j and ⁇ j are restored one by one.
- step 248 ⁇ j ⁇ j is calculated, and in step 250, Wab (x j ), Wab ′ (x j ), and ⁇ j ⁇ j are transmitted to the restoration device 16.
- step 256 the CPU 22 of the restoration device 16 restores ab using 2k ⁇ 1 variance values from Wab (x j ) and Wab ′ (x j ) / ⁇ .
- each of the k servers restores different secret information one by one, and each server has If it is safe (impossible to eavesdrop), the attacker cannot directly know ⁇ and ⁇ , so the attacker cannot obtain secret information and is safe. Therefore, claim 2 is also a feature not found in the conventional method.
- the concealment multiplication 4 is a multiplication of the variance values, so that an order change occurs.
- step 264 the following variance value is calculated.
- the dispersion values for the n + x i is service - are sent to the bar - bar 14x i Sa.
- each server 14x i has a variance value for x i and n + x i .
- Wa (x i ) r (a + a 0,1 x i +... + A 0, k ⁇ 1 x i k ⁇ 1 )
- Wa ′ (x i ) r ⁇ (a + a 0,1 (n + x i ) +... + A 0, k ⁇ 1 (n + x i ) k ⁇ 1 )
- Wa 1 (x i ) ⁇ 1 + a 1,1 x i +...
- Wa k (x i ) ⁇ k + a k, 1 x i +... + A k, k ⁇ 1 x i k ⁇ 1
- Wr 1 (x i ) r 1 + ak + 1,1 x i +... + A k + 1 , k ⁇ 1x i k ⁇ 1 :
- Wr k (x i ) rk + a2 k, 1 x i +...
- step 266 the dispersion value is transmitted to the first server 14x 1 to the n-th server 14x n .
- step 274 the following variance value is calculated.
- Wb (x i ) q (b + b 0,1 x i +... + B 0, k ⁇ 1 x i k ⁇ 1 )
- Wb ′ (x i ) q ⁇ (b + b 0,1 (n + x i ) +... + B 0, k ⁇ 1 (n + x i ) k ⁇ 1 )
- Wb 1 (x i ) ⁇ 1 + b 1,1 x i +... + B 1, k ⁇ 1 x i k ⁇ 1 :
- Wb k (x i ) ⁇ k + b k, 1 x i +...
- step 276 the distributed value is distributed to the first server 14x 1 to the n-th server 14x n .
- the CPU 22 of the restoration device 16 executes the calculation transmission process of ⁇ in FIG. That is, in step 322, ⁇ j ⁇ j is received from the first server 14x 1 to the n th server 14x n , and in step 324, ⁇ is calculated by multiplying all ⁇ j ⁇ j , In step 326, ⁇ is transmitted to the first server 14x 1 to the nth server 14x n .
- Rj, j a xj, j Wab (x j ) + a n + xj, j Wab obtained by multiplying Wab (x j ) and Wab (x j + n) by a xj, j and a xj + n, j.
- R j, j + n a xj, j + n Wab (x j ) + an + xj, j + n Wab (n + x j ) obtained by multiplying (n + x j ) by a xj, j + n and a n + xj, j + n is calculated.
- step 306 two values R ′ j, j and R ′ j, j + n that have traveled all the servers are received.
- step 308 R ′ j, j and R ′ j, j + n are converted into r 1j.
- r 2j are subtracted, and R ′ j, j and R ′ j, j + n are transmitted to the next server 14 x (i + 1) in the predetermined order in step 310.
- step 312 the two values R ′ j ⁇ h, j ⁇ h and R ′ j ⁇ h, j + n ⁇ h sent from the previous server 14x (j ⁇ 1) are received, and in step 314, R 'j-h, j- h and R' j-h, pulling respectively r 1j and r 2j from j + n-h, at step 316, R 'j-h, j-h and R' j-h, j + n ⁇ h is transmitted to the next server 14x (i + 1) .
- step 318 all sub - two that have around the bus values R 'j, j and R' j, receives the j + n, in step 320, R 'j, j and R' j, j + n of R 'j , j + n is multiplied by ⁇ , and each is stored as R j , R j + n .
- step 336 the product r j q j is calculated, and in step 338, R j and r j q j are transmitted to the restoration device 16.
- step 348 ab is restored using k ⁇ 1 pieces from Wab (x j ).
- a feature of [Distribution] of the present invention is that, in order to conceal secret information a and b to the end, random numbers r and q that are concealed to the end are multiplied by a and b (included in claim 1).
- Wab (x i ) and Wab ′ (n + x i ) are always associated with a common random number rq, and ⁇ is known to be calculated by the restoration device 16 in step 324 of FIG. 51 of [Order Transformation]. It is not known to the restoration device 16 until the end. Therefore, even if an attacker or a restorer obtains Rj, Rj + n as intermediate results, ab as an intermediate result does not leak.
- ⁇ and ⁇ can be used instead of r and q by multiplying Wab (x j ) by ⁇ in step 292 of FIG. 50 instead of dividing Wab ′ (x j ) by ⁇ .
- the first feature in [order conversion] is that one server has two variance values having different shapes, so that steps 282 to 288 in FIG. 50 of [order conversion] and step 322 in FIG. In step 324, random number conversion is performed to make the random numbers related to the distributed values the same (included in claim 5).
- ⁇ is deleted, but rq is always applied.
- step 320 of FIG. 50 of [Order conversion] each server is multiplied by ⁇ , but another random number may be multiplied.
- the second feature is that rq is finally known to the restorer (rq is known, but r and q are not known individually, so secret information a and b are not leaked).
- the restoration device 16 may know the value obtained by removing the random number rq from Wab (x i ) and Wab ′ (n + x i ). Therefore, in order to hide Wab and (x i) Wab 'a (x i + n), the random number r 1j in Wab (x i), summing a random number r 2j in Wab (x i + n), the original Wab ( x i ) and Wab (x i + n) are not understood, and the server is turned.
- ⁇ r1j is added to the values R ′ j, j that have traveled through all the servers obtained in step 306 of FIG. 50 of [order conversion], and ⁇ r2j is added to R ′ j, j + n .
- [order conversion] step 312 to step 316 in FIG. 50 ⁇ r1j and ⁇ r2j can be removed and normal Ri can be obtained.
- the second server visit is unnecessary. Further, it may be transmitted to the restoring person without going around the server, and the restoring person performs addition and sends the result back to each server.
- addition / subtraction may be added to Wa (x i ) and Wb (x i ) as is.
- Wb' ⁇ a is not equal 0 Wb (x i) / ⁇ a
- restoration apparatus ⁇ j / ⁇ j each server to restore the alpha j and beta j To obtain ⁇ / ⁇ , and if it is applied to Wb '(xi) / ⁇ a, a dispersion value having b / a in the constant term is completed.
- Wb (x i ) is also divided by ⁇ a and ⁇ / ⁇ is written, a variance value having b / a in the constant term and 1 / ⁇ as a random number is obtained.
- Each CPU 22 of the (k ⁇ 1) th server 14x 1 to the (k ⁇ 1) th server 14x (k ⁇ 1) other than the kth server 14x k is represented by U i in FIG.
- the calculation / transmission process is executed. That is, the server 14xi is to have the following Wa 'as the current dispersion value (x j).
- a random number Wa′i is generated as the following new variance value.
- Wa′i ⁇ (a + a 1 ′ x i + a 2 ′ x i 2 +... + A k ⁇ 1 ′ x i k ⁇ 1 )
- step 358 the difference U i 'between the previous variance value Wa' (x i ) and the newly generated Wa'i is calculated as follows.
- step 360 the difference U i 'is transmitted to the kth server 14xk.
- the difference Uj is received at step 362, and k-1 polynomials are solved at step 364, and ⁇ (a 1 ⁇ a 1 ′), ⁇ (a 2 ⁇ a 2 ′),.
- (A k-1 -a k-1 ') is obtained, and in step 366, the following difference values for the remaining nk servers are obtained.
- step 368 the difference value Wj ′ is transmitted to the (k + 1) -th server 14x (k + 1) to the n-th server 14x n .
- the (k + 1) -th server 14x (k + 1) to the n-th server 14n execute the new dispersion value storage process of FIG. That is, in step 370, Wj ′ is received, and in step 372, Wj ′ is added to the previously provided variance value to obtain a new variance value.
- the conventional method shown in the document [3] is an update method for a normal distributed value without the random number ⁇ , but there are the following differences.
- the first server 14x 1 to the (k ⁇ 1) th server 14x (k ⁇ 1) are the remaining (k + 1) th servers.
- Ba 14x (k + 1) ⁇ n-th sub - sends the difference to server 14x n, the difference in the corresponding processing to the processing of step 364 and step 366 in FIG. 55 the (k + 1) - server 14x (k + 1) ⁇ the n Sa - updating the dispersion value by server 14x n is performed.
- K-th sub do it against the secret update 1 process - specifies the server 14x k to one of the k sub - communication because only bus 14x k performs the processing of step 358 and step 360 in FIG. 54 It also has the feature that the amount and amount of calculation can be reduced.
- Document [3] requires (k ⁇ 1) (n ⁇ k + 1) communication because k ⁇ 1 servers send difference values to n ⁇ k + 1 servers, and there are n ⁇ k + 1 units. (N ⁇ k + 1) polynomial processing is necessary to perform the processing corresponding to the processing in step 358 and step 360 in FIG. On the other hand, in the present invention, only the k-th server 14xk performs the processing of step 358 and step 360 in FIG. 54 and sends the result to the nk server. -1) communication, (nk) communication occurs in step 370, and a total of n + 1 communication is sufficient. In the present invention, the calculation needs only one polynomial process.
- the method of document [3] makes no mention of a method for selecting nk + 1 servers for restoration processing. However, if nk + 1 servers are fixed, an attacker can make n- If one of the k + 1 servers continues to be wiretapped, the updated value will always leak. In order to prevent the leakage, a server for performing the restoration process is randomly selected. Assuming that the server that the attacker is eavesdropping on is the o-th server 14x i x o , if another k- th server 14x k is designated, the attacker at that point in time will be the other server 14x i x o .
- Server 14x j of the j i.e., the first sub - server 14x 1 ⁇ n-th sub - each CPU22 Bas 14x n performs the updating process in FIG. 58. That is, in step 392, ⁇ i (x i ) is received, and in step 394, all values are added to the variance value Wa ′ (x i ) with respect to the threshold value k held by itself, and the following is calculated.
- Wa ′ (x i ) is stored as a new variance value.
- the feature of the proposed method is to construct ⁇ i (x) by constructing a u ⁇ 1 degree polynomial for u instead of k. Since the proposed method does not perform the polynomial processing in Step 364 of [Secret Update Method 1] in FIG. 55, the processing is simple and no matter which server is eavesdropped, the eavesdropping of one server is the same. -It has the safety that the updated values other than the bar are not known.
- Concealment Update 1 only the polynomial was changed without changing the random number for the distributed value.
- the random number related to the variance value is changed and updated.
- the secret updates 1 and 2 the secret information itself is not changed, so there is no information that the server obtains by this update.
- the server obtains information on how many times the secret information has been multiplied.
- an updater collects and updates the distributed values from the server, and shows a method of updating without knowing how many times the secret information has been multiplied by the server.
- Wa ′ (x i ) is transmitted to each server, that is, the first server 14x 1 to the n-th server 14x n .
- the first server 14x 1 to the n-th server 14x n store the received Wa ′ (x i ) as a new dispersion value.
- W (x i ) is multiplied by ⁇ , but by adding ⁇ (x i ), W ′ (x i ) / W (x i ) does not become ⁇ , that is, how many times The server is not sure.
- ⁇ (x i ) is a random number that cannot be solved unless k ⁇ 1 are collected, but since the server does not know ⁇ , the integrated W ′ (x i ) only knows ⁇ s even if k pieces are collected. It is. This feature is shown in claim 18.
- the constant term is always set to 0. Therefore, even if a k-1 degree polynomial is used, the polynomial used for the update can be solved if there are k-1 variance values. That is, there is a problem with safety. Therefore, by updating as follows, it is possible to prevent the value used for updating from being known unless k variance values are present.
- the server of x1 randomly selects a server ID xj2 other than x1, the selected server of xj2 randomly selects the server ID xj3, and the server selected before becoming the k-1th server. May not be a server that has already selected the second ID. This is because a server that has already selected the second ID cannot select a new second ID, and will close there. Information on each ID is made public.
- step 383 values ⁇ i (x 1 ), ⁇ i (x 2 ),..., ⁇ i (x n ) including the first IDs of all the servers are formed.
- step 401 the following is calculated by adding all received ⁇ j (x i ) to the variance value Wa ′ (x i ) that the user has, and storing it as a new variance value.
- step 403 all received ⁇ j (x i ′) are added and the following is calculated and stored.
- the CPU 22 of the restoration device 16 executes the restoration process of FIG. That is, in step 411, Wa ′ (x i ) is collected from k servers and solved to calculate (a + ⁇ d i0 ). In step 413, ⁇ (xi ′) is collected from k servers and solved to calculate ( ⁇ d i0 ). In step 415, secret information a is calculated by subtracting ( ⁇ d i0 ) from (a + ⁇ d i0 ).
- This update method can handle expansion of k if k is u (> k).
- [Restore] can also be as follows.
- Each server transmits ⁇ i (x j ′) to the server x j ′.
- Each server calculates Wa ′ (x i ) + ⁇ (x i ) and transmits it to the restoration device 16.
- the restoration device 16 collects Wa ′ (x i ) + ⁇ (x i ) from k servers, solves it, and calculates a.
- the 2ID the x i + c with respect to x i may be a.
- the method corresponding to the secret update method 1 is shown below.
- each server has a first ID and a second ID as in the case of the secret update 4.
- the server ID indicates the first ID unless otherwise specified.
- the first server 14x1 to the nth server 14xn one server that performs the restoration process is selected at random.
- the selected server, and the server 14x d of the d For example, it is assumed that the (k + 1) th server 14x (k + 1) .
- k stand servers to simplify the description will be other than the server 14x d of the d.
- K stand server other than the server 14x d of the d, for example, the server 14x k of first server 14x 1 ⁇ k th, in step 421, generates a random number Wa 'i.
- the first server 14x 1 to the k-th server 14x k calculate the difference Ui ′ between the variance value Wa ′ (x i ) that they already have and the newly generated Wa ′ i .
- Wa '(x i ) ⁇ (a + a 1 xi + a 2 xi 2 + ...
- Wa ' i ⁇ (a' + a 1 'xi + a 2 ' xi 2 + ... + a k-1 'xi k-1 )
- Wa ' i ⁇ (a' + a 1 'xi + a 2 ' xi 2 + ... + a k-1 'xi k-1 )
- step 425 the first server 14x 1 to the k-th server 14x k transmit the difference U i ′ to the d-th server 14x d .
- Server 14x d of the d is, at step 427, to solve the k-number of polynomial, ⁇ (a-a ') , ⁇ (a 1 -a 1'), ⁇ , ⁇ (a k-1 -a k -1 ') is obtained, remaining n- (k + 1) stage of the server 14x j, for example, the (k + 2) of the server 14x (k + 2) ⁇ and the server 14x n of the n, of the d own server 14x
- the following difference value W j ′ with respect to d is calculated.
- Server 14x j is sent Wj by adding a 'and already got to have the dispersion value Wa' (x i) as a new variance value Wa '(x i).
- Server 14x d of the d is, at step 433, distributed as follows ⁇ a (a 1 -a 1 ').
- Wd '(xi') ⁇ (a-a ') + d 1 xi' + d 2 xi ' 2 + ... + d k-1 xi' k-1
- the server 14x d of the d is its Wa '(x k + 1' ), is stored in its own storage device 34.
- k servers designated by the restoration device 16 transmit Wd ′ (xi) + Wa ′ (xi) to the restoration device 16 in step 443. To do. Then, the restoration device 16 receives Wa ′ (xi) + Wd ′ (xi) from k servers and solves to calculate ⁇ a.
- the secret updates 4 and 5 are characterized in that the update information ⁇ j (xi) or Wj ′ of the variance value is calculated from k pieces of correction information ⁇ j (xi) or Uj ′ whose constant term is not 0. -Update information cannot be obtained even if one device is wiretapped. Such an approach has not been proposed so far, and this feature is indicated in claim 11.
- a secret search will be described.
- the owner who has the secret information distributes the search ID corresponding to the secret information and stores it in the server system together with the distributed value of the secret information.
- the search IDs corresponding to are distributed and searches are performed with distributed values.
- Confidential search 1 basic form: the search server 18 is not used
- m pieces of secret information distributed as described above by the dispersion of any of the first to fifth embodiments described above
- the CPU 22 of the first dealer device 12A executes the distributed processing of FIG.
- step 412 a random number rj for each search ID is generated, and in step 414, the following distributed values F j (x i ) and R j (x i ) are calculated.
- R j (x i) r j + r j1 x i + r j2 x i 2 + ... + r jk-1 x i k-1
- the variance value for the secret information corresponding to the search ID is also stored along with Fj (xi) and Rj (xi).
- the first dealer apparatus 12A executes the calculation / transmission processing of the variance value F j (x i ) in FIG. That is, in step 452, q ⁇ kj ′ is received, and in step 454, a variance value F j ′ (x i ) for secretly sharing q ⁇ k j ′ as follows is calculated.
- step 456 the variance value F j ′ (x i ) is transmitted to the i-th server 14x i .
- Each CPU 22 of the i -th server 14x i that is, the first server 14x i to the k-th server 14x k executes the calculation / transmission processing of the difference tj in FIG. That is, in step 462, the variance value Fj ′ (x i ) is received, and in step 464, the search ID j is set.
- step 464 j is set to m / 2.
- step 430 the variance value F j (x i ) is transmitted to the i th server 14x i . Accordingly, the i-th server 14x i receives the variance value F j (x i ) in step 470 of FIG. In step 472, r j is restored from the k variance values R j (x i ). In step 474, a random number tj is generated, and the following difference t j ⁇ F j (x i ) ⁇ r j F j ′ (x i ) ⁇ is calculated.
- step 476 the difference t j ⁇ F j (x i ) ⁇ r j F j ′ (x i ) ⁇ is transmitted to the restoration device 16.
- the restoration device 16 receives the difference t j ⁇ F j (x i ) ⁇ r j F j ′ (x i ) ⁇ in step 432 of FIG. 64, and in step 434, the difference t j ⁇ F j (x i ) ⁇ r j F j ′ (x i ) ⁇ is solved to obtain a constant term, and it is determined in step 436 whether or not the constant term r j ⁇ q (k j ⁇ k j ′ ) is zero. If it is determined that the constant term r j ⁇ q (k j ⁇ k j ′ ) is 0, the search IDs match and the search ID is set to the current j in step 438.
- step 424 to 436 If it is determined that the constant term r j ⁇ q (k j ⁇ k j ′ ) is not 0, whether or not the present process (steps 424 to 436) has been executed a predetermined number of times, for example, log 2 m times in step 440. Judging. If it is determined that this process (steps 424 to 436) has been executed log 2 m times, it is determined in step 442 that there is no search ID.
- step 444 it is determined in step 444 whether or not the constant term r j ⁇ q (k j ⁇ k j ′ ) is positive. . If it is determined that the constant term r j ⁇ q (k j ⁇ k j ′ ) is positive, in step 446, j is set to a value smaller than j, and the i th server 14xi is instructed. For example, the search area of the search ID is set as an area smaller than j, the median value of the set search area is set to j, and the set j is instructed to the i-th server 14xi. Thereafter, the search process returns to step 424.
- step 448 j is set to a value larger than the j and the i th server 14xi is instructed.
- the search area of the search ID is set as an area larger than j
- the median of the set search area is set to j
- the set j is instructed to the i-th server 14xi. Thereafter, the search process returns to step 424.
- the search area of the search ID is smaller than j in step 442.
- the area is set as 1 to (m / 2) -1, and the median value of the set search area is set to 3m / 4.
- step 464 of FIG. 66 the instructed value is set as j of the search ID. Subsequent processing (steps 466 to 476) is executed based on the set j.
- the first feature is [Distribution].
- the second feature is that in [search], the owner obtains q ⁇ kj ′ from the user, but since the random number q is applied, the user's search ID kj ′ is not known. Further, the user obtains Fj (x i ) from the server, but since rj is applied, kj which is the server search ID is not known. In addition, the user also obtains t j ⁇ F j (x i ) ⁇ r j F j ′ (x i ) ⁇ , but r j cannot be obtained because it is unknown except for F j (x i ). Also, the server obtains F j (x i ), F j ′ (x i ), and r j , but the secret information is not restored unless k pieces are collated.
- the dispersion values are arranged in ascending order of k j , but they may be arranged in descending order and the direction of [Search] may be reversed.
- the owner disperses q ⁇ kj ′, but the user may disperse.
- Secret search 1 is simple, but both owners and users participate in the search every time. Therefore, it is necessary to perform a maximum of log 2m operations for a search for one k j ′, and the maximum burden is large. . Therefore, the following shows a method in which a search unit specializing in search (high calculation capability) is provided, and only one operation is performed for one search ID for both the owner and the user.
- the search unit may be a separate device from the dealer device, the server system, and the restoration device, but may be present in the server system.
- the owner's first dealer apparatus 12A corresponds to m pieces of secret information (distributed as described above by the distribution of any of the first to fifth embodiments described above).
- the first server 14x 1 storage device 34 as shown in FIG. 63 (B), the variance F j (x i), R j (x i) is stored. Furthermore, the variance value for the secret information corresponding to the search ID is also stored along with Fj (xi) and Rj (xi).
- the CPU 22 of the restoration device 16 executes the calculation / transmission processing of the variance value Fu (x i ) in FIG. That is, in step 482, according to the operation of the user who desires the search, the search ID k j ′ is input, and in step 484, the search ID k j ′ is multiplied by the random number q q ⁇ k j ′. Is transmitted to the first dealer 12A.
- the CPU 22 of the first dealer 12A executes the calculation / transmission processing of the variance value Fo (x i ) in FIG. That is, in step 502, q ⁇ k j ′ is received.
- step 504 tj is generated, t j ⁇ r is calculated in step 506, and t j ⁇ r is transmitted to the restoration device 16 in step 508. Thereby, the restoring device 16 receives t j ⁇ r in step 486 of FIG.
- the first dealer 12A calculates the following variance value Fo (x i ) in step 510 of FIG.
- step 512 the first dealer apparatus 12A transmits the variance value F o (x i ) to each server (14x 1 to 14x n ).
- Each server executes the difference calculation / transmission process of FIG. That is, in step 522, the variance value Fo (x i ) is received.
- the restoration device 16 calculates the following variance value F u (x i ) in step 488 of FIG.
- step 490 the variance value F u (x i ) is transmitted to each server. Thereby, each server receives the variance value F u (x i ) in step 524 of FIG.
- each server transmits R j (x i ), T j (x i ) to the search server 18.
- the CPU 22 of the search server 18 executes the search process of FIG. That is, in step 542, each server transmits and collects R j (x i ) and T j (x i ) k.
- step 544 r ⁇ r j and r j ⁇ k j are restored, and step 546 To each server.
- each server receives r ⁇ r j and r j ⁇ k j in step 526 of FIG.
- step 530 the difference is transmitted to the search server 18. Thereby, the search server 18 receives the difference in step 548 of FIG.
- step 550 the search server 18 solves the difference polynomial, obtains a constant term, and executes steps 552 to 564. Steps 552 to 564 are the same as steps 436 to 448 in FIG.
- step 532 in FIGS. 68 and 67 is affirmative, and the processing in steps 525 to 532 is executed. Search processing is executed.
- the user In order to finish the user's processing at once, the user generates a random number q, conceals his / her search ID kj and shows it to the owner, and the random number tj ⁇ r related to the search ID sent from the owner Is multiplied by a random number q determined by me.
- This feature is shown in claim 8.
- the owner When the first owner or a different owner adds a search ID, the owner is used as a user, and the additional ID is searched as the user's search ID. If there is a matching ID, the user changes the search ID.
- the adjacent ID at the final position (if the additional ID is not in the search ID, it will not match until the end, but the search result of the adjacent ID will be reversed at the final position, and the additional ID should be in the middle position.
- Add the dispersion value of the additional ID to the intermediate position is sufficient when the first owner adds, but when different owners add data, even if the data is arranged in ascending order, the order of the owners will be different, so the owner's permission will be granted for each search. Necessary. Therefore, in this case, it becomes efficient if the owner indicates the conditions of the user who permits the search to the system and entrusts the search permission to the system. The above characteristics are shown in claim 17.
- Tj (x i ) in the confidential search is an expression in the same format as Wa ′ (x i ) of the confidential calculation.
- each server since the distributed value Rj (x) with respect to r ⁇ rj increases for the secret search, each server must perform a secret calculation in order to perform a mutual search between the secret information and the search ID.
- the key server ID is assigned to each key managed by the dealer apparatus by using one key managed by the dealer apparatus (a total of h keys). It may be encrypted and used as the key of each key server.
- the dealer device can play the role of h key servers by managing only one key (refer to the feature described later for a specific example).
- the CPU 22 of the first dealer device 12A of the owner A having the secret information a executes the distributed processing of FIG. That is, in step 572, h random numbers are generated from one key to be managed as variance values Wa (x 1 ) to Wa (x h ) (h is an integer equal to or less than k ⁇ 1). The generated random numbers are stored in the storage device 34 of the first dealer 12A as the variance values Wa (x 1 ) to Wa (x h ).
- step 574 k-1-h random numbers a 0, h + 1 to a 0, k-1 are determined for the secret information a, and the variance values Wa (x 1 ) to Wa (x h ) are set to the following polynomials: To obtain the remaining h random numbers a 0,1 to a 0, h-1 .
- step 578 the variance value Wa (x i ) obtained in step 576 is transmitted to the (h + 1) -th server 14x (h + 1) to the n-th server 14x n .
- the CPU 22 of the second dealer apparatus 12B of the owner B having the secret information b executes each of the above-described steps 572 to 578 of FIG. 71 independently to determine its own distributed value Wb (x 1 ) To Wb (x h ) and the variance values W b (x h + 1 ) to W b (x n ) of the (h + 1) th server 14x (h + 1) to the n th server 14xn, and the (h + 1) th server 14x (h + 1) to the server 14x n th to n.
- the random number a 0, i is b 0, i .
- step 586 the variance values Wa (xi) are collected from the k servers including the first dealer device 12A, and in step 588, the k variance values Wa (x i ) are solved to obtain a. in step 600, determine the ⁇ a multiplied by ⁇ to a, in step 602, and transmits the ⁇ a to the first server 14X1 ⁇ server 14x n and second dealer apparatus 12B of the second n. Note that k random numbers ⁇ i are stored in the storage device 34 of the first dealer 12A.
- the variance value Wb (x i ) is collected from k or more servers including its second dealer device 12B, and at step 618, the following is calculated.
- Wab ′ (x i ) ⁇ a ⁇ ⁇ ⁇ Wb (x i ) + ⁇ (x i )
- step 620 the variance value Wab ′ (x i ) is transmitted to the original server. Note that k random numbers ⁇ i are stored in the storage device 34 of the second dealer 12B.
- the k servers x j include the first dealer device 12A, the second dealer device 12B, and the first server 12x 1 to the (k-2) th server 12x k-2.
- Wab ′ (x j ) and ⁇ j ⁇ j are transmitted to the restoration device 16.
- the first feature of the proposed method described above is that, in step 572 of [Distribution] in FIG. 71, the first dealer apparatus 12A and the second dealer apparatus 12B only manage one key, respectively.
- the dispersion value that the server should have saved can be reduced.
- the encrypted data can be defined as Wa (x i ). That is, the first dealer apparatus 12A can realize the [distributed] process of FIG. 71 by only having one key.
- the distribution of the seventh embodiment can realize a significant reduction in storage capacity compared to the secret multiplication 1.
- the above is the feature of the storage capacity reduction by the asymmetric secret sharing.
- the amount of communication associated with the reduction in storage capacity can be reduced.
- the dealer apparatus A In the secret multiplication 1, in [distribution], the dealer apparatus A needs to send k + 1 dispersion values to n servers. On the other hand, in the secret multiplication 1 ′, the dealer apparatus A only has to send one variance value to n ⁇ h servers in step 578 of FIG. Furthermore, in the [restoration] of the secret multiplication 1, it is necessary for the k servers to collect k dispersion values. In the secret multiplication 1 ′, the first dealer 12A performs step 582 as shown in claim 12. It is only necessary to generate k random numbers and transmit one random number to each of k servers. However, the random number is synthesized in step 584 and used in step 600 to generate the concealment secret information ⁇ a.
- Steps 616 and 618 in FIG. 73 of [Multiply] Wb (x i ) is collected and Wab ′ (x i ) is transmitted, so that the number of communications increases 2 (n ⁇ h) times, but the overall reduction is achieved. .
- the k ⁇ j distribution processing in the secret multiplication 1 [dispersion] and the restoration processing in the [restoration] are unnecessary, but in the secret multiplication 1 ′, a random number is obtained in step 572 of FIG. 71 of [distribution].
- Generation (encryption) and processing to solve the polynomial in step 574 increase. Therefore, the profit and loss are antagonized by the values of k and n with respect to the calculation amount.
- ⁇ a and Wab ′ (xi) are generated during computation in the same way as the secret multiplication 1 ′ [multiplication]
- the dealer directly performs distribution of k random numbers in the same manner as [restoration] the secret division is performed as it is. It is clear that 1 'can be realized.
- the first dealer apparatus 12A collects Wa (x i ) from the server x j (a total of k apparatuses) in step 654, restores a to a real number, and in step 656, converts the real number ⁇ j to a real number. In addition, ⁇ a is calculated, and ⁇ a is transmitted to a specific server xd in step 658.
- Second dealer apparatus 12B in step 660, collects Wb (xi) from the server x j, and real numbers of restoring the b, in step 662, then real number calculating a beta from real beta j, further calculates the ⁇ b In step 664, ⁇ b is transmitted to the specific server xd .
- the specific server xd divides ⁇ b as a real number by ⁇ a in step 666 and transmits ⁇ b / ⁇ a to the restoration device 16 in step 668.
- step 670 the restoring device 16 divides ⁇ b / ⁇ a by ⁇ / ⁇ and calculates a real number to obtain b / a. It is clear that multiplication, addition, and product-sum can be handled in the same way for real number operations.
- the first dealer device 12A transmits the real number ⁇ j to the server x j
- the second dealer device 12B transmits the real number ⁇ j to the server x j . That is, the first dealer device 12A does not transmit the real number ⁇ j to the second dealer device 12B, and the second dealer device 12B transmits the real number ⁇ j to the first dealer device 12A. Not done.
- the first dealer apparatus 12A transmits the real number ⁇ j to the second dealer apparatus 12B and a total of k ⁇ 1 servers
- the second dealer apparatus 12B transmits the real number ⁇ j to the first number
- the same processing as described above may be performed by transmitting to the dealer apparatus 12A and a total of k-1 servers. The same applies to the following.
- the third dealer 12C collects the variance value Wc (x i ) from the k servers x j in Step 674, calculates the following variance value Wc ′ (x i ) in Step 676, and performs Step 678. Then, the distributed value Wc ′ (x i ) is transmitted to the server x j .
- Wc ′ (x i ) ⁇ ⁇ Wc (x i ) + ⁇ 2 (x i )
- the server xj calculates ⁇ j / ⁇ j in step 688 and transmits ⁇ j / ⁇ j to the restoration device 16 in step 690.
- the restoring device 16 multiplies each ⁇ j ⁇ j / ⁇ j and ⁇ j ⁇ j / ⁇ j in step 692 to calculate ⁇ / ⁇ and ⁇ / ⁇ , and in step 694, ⁇ / ⁇ and ⁇ / ⁇ and to send to the server x j.
- Wab ′ (x j ) ⁇ .
- (Ab + ab 0,1 x j +... + Ab 0, k ⁇ 1 x j ⁇ k ⁇ 1 ) and Wc ′ (x j ) ⁇ (c + c 0,1 x i +... + C 0, k ⁇ 1 x i k ⁇ 1 ) is calculated.
- Restoration device 16 for restoring user at step 701, to obtain Wabc '(xj) from the server x j, in step 703, restores the ⁇ (ab + c).
- the restoration device 16 obtains ⁇ j from the server x j and calculates (ab + c) in step 707.
- the first dealer 12A collects the variance value Wa (x i ) from the k servers x j in step 676, and in step 678, the variance value Wa (x (n + xi) ) corresponding to the server ID n + xi.
- step 680 the variance value Wa ′ (x i ) obtained by multiplying the variance value Wa (x (n + xi) ) by ⁇ is transmitted to the server x j .
- the second dealer 12B collects the variance value Wb (x i ) from the k servers xj in step 682, and in step 684, the variance value Wb (x (n + x i ) corresponding to the server ID n + xi. ), And in step 686, the variance value Wb ′ (x i ) obtained by multiplying the variance value Wb (x (n + xi) ) by ⁇ is transmitted to the server xj.
- the restoration device 16 restores ab using 2k ⁇ 1 variance values from Wab (x j ) and Wab ′ (x j ) / ⁇ .
- r j and q j may be processed in the same manner as ⁇ j and ⁇ j during the calculation.
- [order conversion] ⁇ j and ⁇ j may be obtained directly from the dealer.
- Concealment update 1 is performed as follows.
- One feature of asymmetric secret sharing is that the owner keeps it secret
- the server x k becomes unnecessary.
- the owner can update by outputting different random numbers using the existing keys, or by changing different keys managed by himself and outputting different random numbers.
- the secret updates 2 to 5 if the owner performs update processing (random number generation and calculation processing, etc.), the safety is improved.
- the distributed values T j (x h + 1 ) to T j (x n ) are obtained and sent to each server (h is an integer equal to or less than k ⁇ 1).
- the CPU 22 of the user restoration device 16 executes the processing of steps 482 to 490 in FIG. 65, and the CPU 22 of the owner's first dealer device 12A executes the dispersion value calculation / transmission processing of FIG.
- the CPU 22 of the server 14xi executes the difference calculation / transmission process of FIG. 80, and the CPU 22 of the search server 18 executes the search process of FIG. Note that steps 502 to 512 of the dispersion value calculation / transmission processing in FIG. 79 are substantially the same as steps 502 to 512 in FIG.
- the first dealer 12A receives q ⁇ kj ′ in step 502 of FIG. 79, generates t j and r in step 504, calculates t j ⁇ r in step 506, and in step 508 , T j ⁇ r are transmitted to the restoration device 16.
- the first dealer 12A calculates the following variance value F 0 by multiplying q ⁇ k j ′ by t j in step 510, and transmits the variance value F 0 to the server in step 512.
- F o (x i ) t j ⁇ q ⁇ k j '+ b j1 x i + b j2 x i 2 + ... + b jk-1 x i k-1 Therefore, the i-th server 14x i receives the variance value F o (x i ) in step 522 of FIG.
- the restoration device 16 multiplies t j ⁇ r by q to calculate the following variance value F u (x i ) (step 488 in FIG. 65), and transmits the variance value F u (x i ) to each server. (Step 490).
- F u (x i ) t j ⁇ r ⁇ q + c j1 x i + c j2 x i 2 +... + C jk ⁇ 1 x i k ⁇ 1
- the i-th server 14x i receives the variance value F u (x i ) in step 524 of FIG.
- the first dealer 12A collects k T j (x i ) in step 513 in FIG. 79, calculates the following variance value T ′ j (x i ) in step 515, and in step 517: , And the distributed value T ′ j (x i ) is transmitted to the i- th server 14 x i .
- T ′ j (x i ) r j ⁇ T j (x i ) + ⁇ (x i )
- r j is a random number determined for each k j
- the i-th server 14x i receives the distributed value T ′ j (x i ) in step 527 of FIG.
- First dealer apparatus 12A transmits r ⁇ r j to i-th server 14xi in step 519 of FIG.
- the i-th server 14xi receives r ⁇ r j in step 529 of FIG. 80, and transmits the variance T ′ j (x i ) to the search server 18 in step 530A.
- Search server 18, at step 541 of FIG. 81 receives a T 'j (xi), in step 543, to calculate the r j ⁇ k j, in step 545, the server 14x of the i a r j ⁇ k j send to i .
- the i-th server 14xi receives r j ⁇ k j in step 531 of FIG. 80, calculates the following difference in step 533, and transmits the difference to the search server 18 in step 535.
- the search server 18 receives the difference at step 547 of FIG. 81, and solves the difference polynomial to obtain a constant term at step 549. Thereafter, the CPU 22 of the search server 18 executes the processing of steps 551 to 563. Since steps 551 to 563 correspond to steps 552 to 564 in FIG. 68, the description thereof is omitted.
- the search server 18 instructs j in steps 561 and 563 of FIG. 81, the i-th server 14x i receives the instruction of j, so that an affirmative determination is made in step 537 of FIG.
- the calculation / transmission process returns to step 525A.
- a ramp-type secret sharing method is known as a method for reducing the storage capacity of a distributed value.
- Ramp secret sharing scheme splits the secret information S to L ( ⁇ k) number s 1, ⁇ , and s L, a L + 1, k-1 ⁇ , the a k-1 as a random number It is a coefficient of the second polynomial. That is, the following polynomial is established, and W (xi) is set as a variance value of the i-th server 14xi.
- Concealment multiplication 1 (basic lamp type) A secret multiplication using ramp-type secret sharing corresponding to the secret multiplication 1 is shown below.
- the secret information a, b is an integer less than a prime number p (> e d ) expressed in e-adic d digits, and a, b are divided into L, a h, j , b h, j , parameters ⁇ , ⁇ , ⁇ j, ⁇ j, etc. are assumed to be integers less than the prime number p ′ (> e (d / L) ), and operations relating to secret sharing are performed modulo the prime number q ′ (> p ′ u : u is an integer of 1 or more).
- the secret multiplication 1 "shown below is the same as the secret multiplication 1 except for the above. Therefore, the secret information a and b (real numbers) are expressed as integers for real number operations, and the integers are equal to or less than p. Yes.
- the CPU 22 of the first dealer apparatus 12A of the owner A having the secret information a executes the distributed processing shown in FIG. That is, in step 702, k random numbers ⁇ i less than the prime number p ′ are generated, and the product ⁇ is calculated modulo q ′.
- ⁇ ⁇ 1 ⁇ ⁇ 2 ⁇ ⁇ ⁇ ⁇ k
- the secret information a less than the prime number p is L-dispersed to be a 0,0 ,..., A 0, L-1 less than the prime number p ′, and the following variance value is calculated.
- Wa '(x i ) ⁇ (a 0,0 + a 0,1 x i + ...
- step 706 the variance values Wa ′ (x i ) and Wa k (x i ) are transmitted to the first server 14x 1 to the n-th server 14 n .
- the CPU 22 of the second dealer apparatus 12B of the owner B having the secret information b executes the distributed process shown in FIG. That is, in step 712, k random numbers ⁇ i less than the prime number p ′ are generated, and the product ⁇ is calculated modulo q ′.
- ⁇ ⁇ 1 ⁇ ⁇ 2 ⁇ ⁇ ⁇ ⁇ k
- step 716 the distributed values Wb ′ (xi), Wb 1 (x i ) to Wb k (x i ) are transmitted to the first server 14x 1 to the nth server 14x n .
- the restoration device 16 synthesizes ⁇ from ⁇ j ⁇ j .
- the d-th server 14xd calculates a product ⁇ a ⁇ b of ⁇ a and ⁇ b in step 744, and transmits ⁇ ab to the restoration device 16 in step 746.
- the restoration device 16 divides ⁇ ab by ⁇ to calculate ab.
- each coefficient takes random numbers such as ⁇ and ⁇ , so unlike the conventional ramp type, even if there are kL or more distributed values, information does not leak, Safety is improved.
- the encryption e_ r (x) to encrypt the x in key r as follows, it is possible to further improve the safety improved.
- Concealment multiplication 1 "(lamp type expansion type) [dispersion]
- steps 702 and 706 of FIG. 82 of the lamp-type basic form and steps 712 and 716 of FIG. 83 are executed.
- First, instead of step 704 of FIG. It executes the following processing. that is, making the ciphertext of the same size by encrypting e_ r1 ( ⁇ a 0, j) the .alpha.a 0, j using a key r1, following variance values Wa '(x i), Wr1 Calculate (x i ).
- the following processing is executed. That is, create a ciphertext of the same size by encrypting e_ r1 ( ⁇ a 0, j) the .alpha.a 0, j using the key r 1, following dispersion value Wb '(xi), calculates the Wr2 (xi).
- Wb '(x i ) e_ r2 ( ⁇ b 0,0 ) + e_ r2 ( ⁇ b 0,1 ) x i + ... + e_ r2 ( ⁇ b 0, k-1 ) x i k-1
- Wr2 (x i ) r2 + r 2,1 x i + ... + r 2, k-1 x i k-1
- concealment multiplication 2 can be similarly expanded if both the basic form and the expansion system are taken into account when the digits are restored in the middle stage.
- both the basic form and the extended system can be similarly expanded if considering the digit alignment when restored in the middle stage. is there.
- the addition of the variance values can be applied as it is because it is addition for each digit if random number conversion is performed in the basic form.
- the random number required for each digit is different, so it is necessary to restore and add the random numbers together while aligning the digits.
- the basic algorithm is shown below.
- the first dealer apparatus 12A of the owner A calculates the following variance value by dividing the secret information a into L and a 0,0 ,..., A 0, L ⁇ 1 .
- Wa (x i ) a 0,0 + a 0,1 x i + ... + a 0, k-1 x i k-1
- the second dealer apparatus 12B of the owner B calculates the following variance value by dividing the secret information b into L and b 0,0 ,..., B 0, L ⁇ 1 .
- Wb (xi) b 0,0 + b 0,1 xi + ... + b 0, k-1 xi k-1
- Wa (x i ) and Wb (x i ) are transmitted to the first server 14x i to the nth server 14x n .
- the restoration device 16 collects the sum Wab (xi) of k variance values from k servers in the i- th server 14x i , solves it, and (a 0,0 + b 0,0 ),. ⁇ , (A 0, L + b 0, L ) is obtained.
- the restoration device 16 adds (a 0,0 + b 0,0 ),..., (A 0, L + b 0, L ) while aligning digits to obtain a + b.
- Wa (x) a 0,0 + a 0,1 x + ... + a 0, k-1 x k-1
- Wb (x) b 0,0 + b 0 , 1 x + ... + b 0, k-1 x k-1
- the restoring device 16 of the restoring person obtains each coefficient using 2k ⁇ 1 variance values from Wab (x j ) and Wab ′ (xj) / ⁇ , and restores ab while aligning digits.
- Wa (xi) or Wb (x i ) is secretly distributed without applying a random number.
- Wa (x i ) ⁇ Wa (x i )
- Wb (xi) ⁇ Wb (x i )
- ⁇ ⁇ 1 ... ⁇ k
- ⁇ ⁇ 1 ... ⁇ k
- a process of removing ⁇ from Wa (x i ) Wb (x i ) may be performed.
- random numbers are applied to all the distributed values, there is no problem that secret information is partially leaked from the distributed values of k-1 or less of the ramp-type secret sharing, and the safety is improved.
- the secret update 1 uses kL units for generating random numbers and n-k + L servers for receiving the difference value. That's fine.
- the secret update 3 may also have ⁇ (x) similar to ⁇ i (x).
- the part that needs to be restored is a coefficient including secret information, and this part is not updated.
- the random number part is encrypted in form, but it is not necessary to encrypt it. Therefore, the random number part can be updated in the same manner as in the basic form. Further, it is obvious that the secret updates 4 and 5 can be similarly realized.
- Secret search 1 "(basic form: the search device 18 is not used)
- kj which is a search ID
- a partial search can be performed as follows.
- the distributed values are arranged in ascending order according to the search ID kj.
- the storage device 34 of the first server 14x1 stores the distributed values T j (xi) and R j (x i ) in ascending order according to kj. ing.
- a variance value corresponding to the secret information is associated with the variance values T j (xi) and R j (x i ).
- the CPU 22 of the restoring device 16 executes the instruction processing of j in FIG. 87, and the CPU 22 of the first dealer device 12A executes the calculation transmission processing of Fj ′ (xi) in FIG. 88, and the i-th server 14xi ( The CPU 22 of the first server 14x 1 to the n-th server 14x n ) executes the search process of FIG.
- k j ′ is a search ID
- the i-th server 14xi receives F j ′ (x i ) from the first dealer 12A at step 812 in FIG. 89, and sets j at step 814.
- j is set to m / 2.
- the i-th server 14x i receives F j (x i ) from the restoration device 16 at step 820 in FIG. 89, and restores r j from R j (xi) at step 822.
- a random number t j is generated.
- the following difference is calculated, and in step 828, the difference is transmitted to the restoration device 16.
- tj ⁇ F j (x i ) -rjF j '(x i ) ⁇ tj ⁇ rj ⁇ q ⁇ (k' j0 -k j0 ) + ⁇ ⁇ ⁇ + (k ' jL-1 -k jL-1 ) x i L-1 + (b jL -t ' jL ) x i L + ... + (b jk-1 -t' jk-1 ) x i k-1 ⁇
- t ' ji t ji + d i / q
- step 778 of FIG. 87 the restoration device 16 receives the difference, and in step 780, solves the difference polynomial to obtain a constant term.
- step 782 whether the coefficient difference of any constant term is 0 or not. Judging. If only one partial match is required, processing similar to the processing after step 551 in FIG. 81 can be executed after step 782. However, a process for checking whether the partial search IDs higher than the partial match search IDs that have been found first match is described below. It is assumed that this is also searched from the median. Further, since the difference between the search IDs that are not decomposed into L pieces in the fifth embodiment is dominated by the result of the upper digit, the entire search position is set to the difference value of the most significant digit in the fifth embodiment. The search is performed in the same manner as the entire difference value in. If there is a partial match, for the sake of simplicity, it is assumed that a partial match of the ID of the upper digit of the ID is searched.
- step 782 a search based on the coefficient difference is performed to determine whether or not there is 0 in any coefficient difference. If some coefficient difference is not 0, the coefficient difference of the most significant digit is set as the overall difference, and similarly to the fifth embodiment, j is incremented by 1, a next search position is determined, and the process returns to step 770. .
- step 782 If it is determined in step 782 that there is a coefficient difference of 0, the coefficient difference of the lower digit of the ID is viewed.
- the partial search ID that is found first is k ji and the partial search ID of the upper digit is k ji-1 . That is, in step 786, the variable i for identifying the digit is decremented by one.
- step 788 it is determined whether or not the coefficient difference of the lower digit i is 0. If it is determined that the lower digit i is 0, the search ID is set to j in step 790 and the process is terminated.
- step 792 it is determined in step 792 whether or not the coefficient difference of k ji-1 in the lower digit i is positive. If it is determined to be positive, the search position j is incremented by 1 in step 794, and if it is determined to be negative, the search position is decremented by 1 in step 796. In step 798, it is determined whether or not the coefficient difference of k ji between the previous time and the current time remains zero.
- step 800 When the coefficient difference k ji between the previous and the current is not 0, as the condition is not satisfied, at step 800, as no search ID, and terminates the processing, coefficient difference k ji between previous and current If 0 is 0, j in step 794 or step 796 is designated, and the process returns to step 770 to perform a search based on the coefficient difference.
- step 790 “other coefficient difference” is set to “other coefficient difference”, “the coefficient difference of the low-order digit i is 0” is “is there any k jr whose coefficient difference is 0”, and in step 790, “The search position is shifted by 1 in a predetermined direction and the search is performed using the coefficient difference”. In addition, when it is desired to see three or more matches, the process may be repeated by replacing two matching states with one matching state.
- the cipher e_r (x) is a cipher such as AES.
- AES cipher
- R j (x i ) rj + r j1 x i + r j2 x i 2 +... + r jk-1 x i k-1
- the distributed values are arranged in ascending order according to the search ID kj. [Search]
- the CPU 22 of the restoring device 16 executes the instruction process j shown in FIG. 87, and the CPU 22 of the first dealer 12A executes the calculation / transmission process of F j ′ (x j ) shown in FIG.
- the CPU 22 of the server 14x i executes the search process of FIG.
- [delta] (x) generates a d L x i L + ⁇ + d k-1 x i k-1, to the server 14x i of the i by calculating the following (FIG. 87 Steps 770 to 776).
- the i-th server 14x i restores rj from Rj (x i ) (step 822 in FIG. 89).
- the i-th server 14x i generates a random number t j , calculates the following difference, and transmits it to the restoration device 16 (steps 826 and 828).
- tj ⁇ F j (x i ) -rjF j '(x i ) ⁇ t j ⁇ r j ⁇ q ⁇ (k' j0 -k j0 ) + ... + t L-1 (k ' jL-1- k jL-1 ) x i L-1 + t L (b jL -t ' jL ) x i L + ... + t k-1 (b jk-1 -t' jk-1 ) x i k-1 ⁇
- t ' ji t ji + d i / q
- the subsequent processing (after step 782 in FIG. 87) is the same as the confidential search 1 ′′ [search].
- the miniaturization of the seventh embodiment and the miniaturization by the lamp type of the eighth embodiment can be compatible.
- the number of servers to be reduced is h and the number of divisions is L, both can be satisfied if h + L ⁇ k.
- the first dealer apparatus 12A of the owner A having the secret information a generates h random numbers from one key to be managed, and uses them as distributed values Wa (x 1 ) to Wa (x h ). (H is an integer equal to or less than k ⁇ 1) (step 572 in FIG. 71).
- the first dealer apparatus 12A uses Wa (x i ) to determine the distributed values of the remaining (h + 1) th servers 14x h + 1 to 14x n and transmits them to the i th server 14x i (step) 576).
- the second dealer apparatus 12B of the owner B having the secret information b executes the processing of steps 572 to 578 in FIG. 71 independently using one key to be managed, and has its own distributed value Wb (x 1 ) To Wb (x h ) and distributed values Wb (x h + 1 ) to Wb (x n ) possessed by the servers x h + 1 to x n are obtained and sent to each server.
- the first dealer 12A collects variance values Wa (x i ) from k servers including itself, solves k variance values Wa (x i ), finds a i, j and performs digit alignment. Then, a is calculated, and ⁇ a multiplied by ⁇ is transmitted to the restoration device 16 (steps 586 to 602 in FIG. 72).
- the second dealer 12B collects the variance values Wb (x i ) from the k servers including itself, solves the k variance values Wb (x i ), finds b i, j and performs digit alignment. Then, b is calculated, and ⁇ b multiplied by ⁇ is transmitted to the restoration device 16 (616 to 620 in FIG. 73).
- the restoration device 16 calculates ⁇ a ⁇ ⁇ b / ⁇ to obtain ab (step 634 in FIG. 75).
- XOR method a method for treating secret information as a bit string and realizing secret sharing only by an XOR operation. Since this XOR method does not have homomorphism, there is a problem that it cannot cope with a secret calculation.
- the XOR method has been extended to treat secret information as a multi-valued numerical value instead of a bit string, and a method (hereinafter multi-valued method) that can perform secret sharing only by addition and subtraction instead of XOR [5] .
- the method [5] has a large number of modulo and is not efficient.
- a secret information distribution method, restoration method, and addition / subtraction have been proposed, but a multiplication method has not been proposed.
- Multilevel method 1 (basic form) [dispersion]
- step 834 (k ⁇ 1) n ⁇ 1 random numbers r ⁇ ⁇ having the same size as S are generated independently.
- step 836 partial dispersion information W (i, j) is generated by 0 ⁇ i ⁇ n ⁇ 1,0 ⁇ j ⁇ n ⁇ 2 according to the following equations.
- step 838 0 ⁇ i ⁇ n- 1 in each partial shared information W (i, 0), W (i, 1), ..., generates the W (i, n-2) connected to the shared information W i To do.
- step 840 the shared information W i is transmitted to the i-th server 14x i .
- the CPU 22 of the restoration device 16 executes the restoration process of FIG. That is, in step 842, k pieces of distributed information W t0 ,..., W tk-1 (0 ⁇ t 0 ⁇ ... ⁇ t k ⁇ n ⁇ 1) used for restoration are collected from k servers. In step 844, k pieces of shared information W t0 ,..., W tk-1 are divided into the following partial shared information.
- step 846 a binary vector V (ti, j) is generated using the divided partial dispersion information.
- the binary vector V (ti, j) is as follows.
- step 848 the following matrix is generated from the vectors V (t0,0) ,..., V (tk-1, n-2) .
- step 850 the partial dispersion information is represented as the following vector W (t0,..., Tk-1) .
- step 852 using Gauss-Jordan elimination The binary number To obtain a vector S (k, n) of all partial secret information.
- G (k, n) is expressed as follows.
- step 854 all pieces of partial secret information are concatenated to obtain secret information S.
- the pseudo random number r is set to the following value (step 834).
- Table 1 shows a configuration table of partial shared information distributed to users. Partially distributed information configuration table
- Distributed information W 0 of the server P 0 is a 6392.
- Distributed information W 1 of the server P 1 is a 106,910.
- Distributed information W 2 of the server P 2 is a 0103.
- Distributed information W 3 of the server P 3 is a 5592.
- the shared information W 0 of the server P 4 is 24610.
- the secret information S is restored by concatenating them (step 854).
- Each server calculates: The 0th server 14x0 calculates Wab0.
- the first server 14x1 calculates Wab1.
- the secret information can be distributed, restored, and added (and subtracted as well) by the proposed multi-value method.
- the CPU 22 of the first dealer device 12A of the owner A having the secret information a executes the distributed processing shown in FIG. That is, in step 872, k random numbers ⁇ i less than the prime number q are generated, and the product ⁇ is calculated modulo q ′.
- ⁇ ⁇ 1 ⁇ ⁇ 2 ⁇ ⁇ ⁇ ⁇ k
- step 874 ⁇ is applied to the secret information a distributed, and the multi-value quantization [distribution] process (steps 832 to 840 in FIG. 87) is executed.
- the CPU 22 of the second dealer apparatus 12A of the owner B having the secret information b executes the distributed processing shown in FIG. That is, in step 882, k random numbers ⁇ i less than the prime number q are generated, and the product ⁇ is calculated using q ′ as the modulus.
- ⁇ ⁇ 1 ⁇ ⁇ 2 ⁇ ⁇ ⁇ ⁇ k
- step 848 ⁇ is added to the distributed secret information b and the multi-value quantization [distributed] processing (steps 832 to 840 in FIG. 90) is executed.
- step 896 the product ⁇ j ⁇ j is calculated.
- step 898 Wab ′ (x j ) and ⁇ j ⁇ j are transmitted to the restorer.
- ⁇ j is calculated and distributed by Wb′0, Wb′2 and Wb′3 by the multivalue method (step 886 in FIG. 94).
- the server 14 x 1 sends ⁇ 1 ⁇ 1 and x 2 sends ⁇ 2 ⁇ 2 to the restoration device 16.
- Acceleration in the ninth embodiment is as follows. Since the Shamir method up to the eighth embodiment is a polynomial operation, the restoration always requires simultaneous equations of the polynomial, that is, multiplication or power operation is necessary. However, XOR-type restoration can be processed only with XOR. In the ninth embodiment, XOR is multi-valued, and in the case of concealment multiplication, since restoration only needs to be performed by addition / subtraction, the speed can be increased.
- the statutory numbers are as follows. Up to the seventh embodiment, calculation is performed with the size of the secret information S or u times the size. On the other hand, in the ninth embodiment, calculation is performed with a size obtained by decomposing S or a size that is u times as large. Therefore, the modulo number is not large. This feature is indicated in claim 13.
- the ramp type secret sharing method in which the magnitude of the variance value of the multilevel method is 1 / L is also possible as in the eighth embodiment in which the Shamir method is a ramp type.
- S ( ⁇ e d ) is an e-decimal d-digit integer less than the prime number p
- Si ( ⁇ ed / L (n-1) ) divided by L (n-1 ) is used similarly. Is performed.
- the random number r i j is also assumed to be an integer of the same size as Si, and the arithmetic is performed using the prime number p ′ ( ⁇ e du / L (n ⁇ 1) ) (u is an integer of 1 or more) as a modulus ([5] Is calculated using p as the modulus). This feature is indicated in claim 13.
- the ramp type multi-value method can be realized in the same manner as the multi-value method. Therefore, if the Shamir's secret sharing method is replaced with the ramp type multi-value method, the first to eighth embodiments are implemented. It is clear that each method of form can be handled.
- the difference between the ramp type multi-value method and the multi-value method is that even if the multi-value method calculates with a size obtained by dividing S, the distributed values return to the same size of the secret information because they are collected at the end.
- the ramp type multi-valued method even if the distributed values are collected, it is 1 / L of the original secret information, and the speed is increased and the storage capacity is reduced at the same time.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
秘密情報から、秘密情報を秘匿化した秘匿化秘密情報の分散値を得る。k個以上の秘密情報である乱数α1~αkから合成値αを生成する(42)。合成値αを新たな秘密情報aに乗算させて秘匿化秘密情報αaを生成し、秘匿化秘密情報の分散値Wa'(xi)及びk個以上の秘密情報である乱数の各々の分散値Wa1(xi)~Wak(xi)を計算する(44)。分散値Wa'(xi)、Wa1(xi)~Wak(xi)を、第1~第nのサーバに送信する(46)。秘密情報α1~αkから、秘密情報α1~αkを秘匿化した秘匿化秘密情報αaの分散値Wa'(xi)を得ることができる。
Description
本発明は、秘密分散を用いた秘匿演算システムに関する計算装置に関する。
近年、新たなネットワーク技術としてクラウドコンピューティングが注目されている。クラウドコンピューティングとはユーザの持つデータをクラウドと呼ばれるネットワーク上の複数のサーバにより構成される仮想の大容量ストレージに分散・保管し、そのデータをどこからでもネットワーク経由でユーザが必要に応じてアクセスすることを可能にする技術である。さらに、保管データを有効活用するために、単にデータをストレージするだけでなく、クラウド上に分散・保管されたデータを用いて個々のデータを秘匿しながら任意の計算を行う秘匿計算を実現する技術が求められている。
この秘匿計算を実現する技術の1つとして秘密分散法の利用が注目されている。秘密分散法とは1個の秘密情報をn個に分散し、n個に分散した分散値のうち、k個(k≦n) を集めることで元の秘密情報が復元できるという技術である。また、k個未満の分散値からは一切秘密情報に関する情報を得ることができない。この秘密分散法として、Shamirによる(k,n)秘密分散法が良く知られている。Shamirの(k,n)秘密分散法を含む従来の秘密分散システムは分散値を保存するn台のデータサーバと、秘密情報を分散するディーラまたは秘密情報を復元する復元端末からなる。すなわち、秘密分散時にオーナは自分が所有する秘密情報の分散をディーラに依頼し、ディーラは秘密分散法を用いてn個の分散値を計算して、その値を各々n個のデータサーバに分散保管する。一般に、ディーラは秘密分散時のみ存在するとされる。一方、復元を希望するユーザは復元したい秘密情報に対する分散値をk個のデータサーバから復元端末に集めて復元を行う。この復元端末も一般には、データ復元時のみ存在する。
具体的に、Shamirの(k,n)秘密分散法は式(1)のようなk-1次の多項式を設定(sは秘密情報、a 1~a k-1は乱数)し、n個のサーバ各々のIDをxj(j=1,…,n)としたときのW(xj)を各サーバに保存し分散値とする。このk-1次多項式はk個の分散値W(x1),…,W(xk)が集まれば解く(秘密情報sを求める)ことができる。それに対して、分散値がk個未満では解は不定となり全く定めることはできない。
W(x)=s+a1x+a2x2+…+ak-1xk-1 (1)
W(x)=s+a1x+a2x2+…+ak-1xk-1 (1)
さらに、2つの秘密aとbに対して2つの分散値Wa(xj) (式(2))とWb(xj) (式(3))がn個のサーバに分散して保管されていた(j=1,…,n)時、その分散値同士の加算(式(4))を考える。
Wa(xj)=a+a1xj+a2xj2+…+ak-1xjk-1 (2)
Wb(xj)=b+b1xj+b2xj2+…+bk-1xjk-1 (3)
Wa(xj)+Wb(xj)=(a+b)+(a1+b1)xj+(a2+b2)xj2+…+(ak-1+bk-1)xjk-1 (4)
Wa(xj)=a+a1xj+a2xj2+…+ak-1xjk-1 (2)
Wb(xj)=b+b1xj+b2xj2+…+bk-1xjk-1 (3)
Wa(xj)+Wb(xj)=(a+b)+(a1+b1)xj+(a2+b2)xj2+…+(ak-1+bk-1)xjk-1 (4)
この場合、加算結果である式(4)もまたk-1次多項式で表されることから、その分散値の和Wa(xj)+Wb(xj)をk個集めて多項式を解けばa,bという個別の情報でなくa+bという秘密情報の和が得られる。乗算に対しても同様にWa(xj)とWb(xj)の積の定数項はa・bという秘密情報同志の積となることから分散値の積を計算してその多項式を解けば、秘密情報同志の積が得られる[1]。このように、a,bという個別情報を得ることなくその和や積といった結果を得る計算を秘匿計算と言い、秘密分散法はそのままで加減算と乗算に関して秘匿計算に適用できることが知られている。ただし、秘密分散を用いた秘匿計算には以下のような問題点が未解決であることが知られている。
M.Ben-Or,S.Goldwasser,and A.Wigderson, Complete-ness Theorems for Non-Crypto-graphic Fault-Tolerant Distributed Computation,STOC'88,pp.1-10,ACM Press,(1988)
渡辺 泰平、岩村 惠市:"秘密分散法を用いたサーバ台数変化がない乗算手法",第63回コンピュータセキュリティ研究会,pp.1-6,Dec.2013.
古田英之, 須賀祐治, 岩村恵市:"秘密分散システムにおける分散データの更新手法",第65回コンピュータセキュリティ研究会,pp.1-6,May.2014.
高橋慧, 岩村恵市. "非対称秘密分散法を用いたアプリケーションの検討". 研究報告セキュリティ心理学とトラスト(SPT). コンピュータセキュリティ研究会(CSEC), pp.1-8 (2013).
高橋加寿子, 須賀祐治, 岩村惠市:"XORを用いる秘密分散法の多値化とそれを用いた秘匿計算法",第65回コンピュータセキュリティ研究会,pp.7-12,May.2014.
(I)乗算においてのみ必要なサーバ台数が変化する問題
k-1次の多項式同士の乗算結果は、2k-2次の多項式となる。よってその多項式を解く(各係数を求める)ためには、2k-1個の分散値が必要になり、集める分散値の数が乗算の場合のみ増加するという問題が生じる。すなわち、(k,n)秘密分散法において1つのサーバに1つの分散値を保存している場合、k個のサーバがあれば秘密情報の復元や秘匿加減算は可能であるが、乗算に対しては2k-1個のサーバが必要になり、乗算の場合だけ復元に必要なサーバの数が増加する。例えば、(3,5)秘密分散法や(2,3)秘密分散法の場合、秘密情報の復元と加減算に対しては各々3つ、2つの分散値を集めればよいため、全サーバ数のうち2つまたは1つのサーバが破損しても問題ない。しかし、(3,5)秘密分散法や(2,3)秘密分散法を乗算に用いる場合は、各々2k-1=5個、2k-1=3個のサーバが必要になる。よって、乗算は実現できるが、1つのサーバの破損も許されなくなる。また、(3,4)秘密分散法を用いる場合、秘密情報の復元と加減算は問題ないが、乗算に関しては2k-1=5個の分散値が必要なため、4つのサーバで構成されたシステムでは乗算が実現できない。すなわち、乗算の場合のみシステム構成を変える、または破損耐性を変える必要がある。従って、多項式の次数変化がなく乗算を行える手法があれば、これらの問題を解決することができる。サーバの台数変化のない乗算手法として[2]が提案されている。この手法は以下のように1つのサーバに2つの分散値を持たせ、1つの分散値を秘匿化して乗算を行い、その後乱数を削除するため、サーバ台数を変える必要はないとしている。
k-1次の多項式同士の乗算結果は、2k-2次の多項式となる。よってその多項式を解く(各係数を求める)ためには、2k-1個の分散値が必要になり、集める分散値の数が乗算の場合のみ増加するという問題が生じる。すなわち、(k,n)秘密分散法において1つのサーバに1つの分散値を保存している場合、k個のサーバがあれば秘密情報の復元や秘匿加減算は可能であるが、乗算に対しては2k-1個のサーバが必要になり、乗算の場合だけ復元に必要なサーバの数が増加する。例えば、(3,5)秘密分散法や(2,3)秘密分散法の場合、秘密情報の復元と加減算に対しては各々3つ、2つの分散値を集めればよいため、全サーバ数のうち2つまたは1つのサーバが破損しても問題ない。しかし、(3,5)秘密分散法や(2,3)秘密分散法を乗算に用いる場合は、各々2k-1=5個、2k-1=3個のサーバが必要になる。よって、乗算は実現できるが、1つのサーバの破損も許されなくなる。また、(3,4)秘密分散法を用いる場合、秘密情報の復元と加減算は問題ないが、乗算に関しては2k-1=5個の分散値が必要なため、4つのサーバで構成されたシステムでは乗算が実現できない。すなわち、乗算の場合のみシステム構成を変える、または破損耐性を変える必要がある。従って、多項式の次数変化がなく乗算を行える手法があれば、これらの問題を解決することができる。サーバの台数変化のない乗算手法として[2]が提案されている。この手法は以下のように1つのサーバに2つの分散値を持たせ、1つの分散値を秘匿化して乗算を行い、その後乱数を削除するため、サーバ台数を変える必要はないとしている。
秘匿乗算[2]
[分散]
(1)秘密情報aをもつオーナAは乱数αを生成し、以下をサーバxi(i=1,・・・,n)用に秘密分散する(ai,jは乱数)。
Wa(xi)=a+a0,1xi+・・・+a0,k-1xik-1
Wa’(n+xi)=α(a+a0,1(n+xi)+・・・+a0,k-1(n+xi)k-1)
Wa1(xi)=α+a1,1xi+・・・+a1,k-1xik-1
[分散]
(1)秘密情報aをもつオーナAは乱数αを生成し、以下をサーバxi(i=1,・・・,n)用に秘密分散する(ai,jは乱数)。
Wa(xi)=a+a0,1xi+・・・+a0,k-1xik-1
Wa’(n+xi)=α(a+a0,1(n+xi)+・・・+a0,k-1(n+xi)k-1)
Wa1(xi)=α+a1,1xi+・・・+a1,k-1xik-1
(2)秘密情報bをもつオーナBは乱数βを生成し、以下をサーバxi(i=1,・・・,n)用に秘密分散する。
Wb(xi)=b+b0,1xi+・・・+b0,k-1xik-1
Wb’(n+xi)=β(b+b0,1(n+xi)+・・・+b0,k-1(n+xi)k-1)
Wb1(xi)=β+b1,1xi+・・・+b1,k-1xik-1
Wb(xi)=b+b0,1xi+・・・+b0,k-1xik-1
Wb’(n+xi)=β(b+b0,1(n+xi)+・・・+b0,k-1(n+xi)k-1)
Wb1(xi)=β+b1,1xi+・・・+b1,k-1xik-1
[乗算]
各サーバはWab(xi)=Wa(xi)Wb(xi)とWab’(xi)=Wa’(n+xi)Wb’(n+xi)を計算する(i=1,…,n)。
[復元]
(1)サーバj(j=1,…,k)はWab(xj)、Wab’(xj)、Wa1(xj)、Wb1(xj)を復元者に送る。
(2)復元者の復元端末はWa1(xj)からαを、Wb1(xj)からβを復元し、Wab’(xj)をαとβで割り、Wab(n+xj)を作る。
(3)復元者の復元端末はWab(xj)とWab(n+xj)から2k-1個の分散値を用いてabを復元する。
各サーバはWab(xi)=Wa(xi)Wb(xi)とWab’(xi)=Wa’(n+xi)Wb’(n+xi)を計算する(i=1,…,n)。
[復元]
(1)サーバj(j=1,…,k)はWab(xj)、Wab’(xj)、Wa1(xj)、Wb1(xj)を復元者に送る。
(2)復元者の復元端末はWa1(xj)からαを、Wb1(xj)からβを復元し、Wab’(xj)をαとβで割り、Wab(n+xj)を作る。
(3)復元者の復元端末はWab(xj)とWab(n+xj)から2k-1個の分散値を用いてabを復元する。
[2]は外部からの攻撃者に対しては安全である。しかし、内部からの攻撃、すなわちabの演算結果のみを知ることができる復元者が元の秘密情報a,b自体を知るために攻撃者となる場合、安全ではない。なぜならば、復元者は[復元](2)においてαとβを個別に知るため、復元者がサーバの盗聴を行う場合、k/2個のサーバを盗聴すればk個のaの分散値と、k個のbの分散値が得られるため、元の秘密情報が漏洩する。よって、攻撃者には秘匿演算に関する情報を何も知らない外部の攻撃者と、演算結果を知る立場にある復元者が、演算結果の元情報である秘密情報を知るために攻撃者となる場合の2種類がある。後者の攻撃者に対して、[2]では復元時に各サーバが乱数rj、qjを交換して送信情報を変化させる以下の対策を提案している。以降、攻撃者といえば外部からの攻撃者を指し、後者の攻撃者をさす場合は復元者という名前をそのまま用いる。外部の攻撃者には演算結果も漏らすことはできないが、後者は演算結果を知る立場にあるという違いがある。
[復元]
(1)サーバj(j=1,…,n)は各々1つずつの乱数rjとqjを生成して、互いに交換しr=r1・・・rn、q=q1・・・qnを生成する。
(2)サーバj(j=1,…,k)はWab(xj)とWab’(xj)にrq、Wa1(xj)にr、Wb1(xj)にqをかけて復元者に送る。
(3)復元者の復元端末はr・Wa1(xj)からrαを、q・Wb1(xj)からqβを復元し、Wab’(xj)をrαとrβで割り、Wab(n+xj)を作る。
(4)復元者の復元端末はWab(xj)とWab(n+xj)から2k-1個の分散値を用いてabを復元する。
(1)サーバj(j=1,…,n)は各々1つずつの乱数rjとqjを生成して、互いに交換しr=r1・・・rn、q=q1・・・qnを生成する。
(2)サーバj(j=1,…,k)はWab(xj)とWab’(xj)にrq、Wa1(xj)にr、Wb1(xj)にqをかけて復元者に送る。
(3)復元者の復元端末はr・Wa1(xj)からrαを、q・Wb1(xj)からqβを復元し、Wab’(xj)をrαとrβで割り、Wab(n+xj)を作る。
(4)復元者の復元端末はWab(xj)とWab(n+xj)から2k-1個の分散値を用いてabを復元する。
この手法は復元者が盗聴できるのは上記秘匿乗算において[乗算]や[復元]処理中以外の分散値保存時だけとするならば、復元者が保存時に盗聴したk個の分散値にかかった乱数と[復元]時に得る乱数の対応が異なるため、元の秘密情報は復元できない。しかし、復元者が1台のサーバを[復元]中においても盗聴できれば、全サーバはrとqを知るため、復元したrα、qβを各々rとqで割ればαとβが個別に得られるため、復元者はやはり秘密情報a,bを得ることができ安全でない。よって、[2]の手法は(k,n)秘密分散法においてサーバ台数を変化させずに乗算可能としているが、復元者が攻撃者である場合、秘密情報そのものが漏洩するため安全ではない。よって、(k,n)秘密分散法においてサーバ台数を変化させずに、かつ秘密情報漏えいのない手法は今まで存在していないといえる。また、この手法は後述する(III)秘匿演算の連続に関する問題についても考慮されていない。すなわち、1つのサーバが2つの分散値を持ち、かつ1つが秘匿化されたままでは以下に述べる次数変換を適用できず、連続演算できない。また、(II)の除算に関する問題も全く考慮されていない。さらに、(VI)の分散値の小型化や(VII)の多値化法式による高速化も考慮されていない。
(II)除算に関する問題
次に、除算について考える。上記(2)(3)を乗算することによって定数項にa・bを持つ分散値を作れるが、(2)を(3)で割ってもb/aを定数項に持つ分散値は得られない。すなわち、分散値を用いて秘密情報同士の除算を実現する手法は難しく、少なくとも乗算と同様の手法では実現できないことが知られている。よって、従来法及び[2]の手法では除算用に特殊な手段を用意する必要がある。よって、除算も乗算と同様の手段で実現できれば秘匿演算の効率化が実現できる。
次に、除算について考える。上記(2)(3)を乗算することによって定数項にa・bを持つ分散値を作れるが、(2)を(3)で割ってもb/aを定数項に持つ分散値は得られない。すなわち、分散値を用いて秘密情報同士の除算を実現する手法は難しく、少なくとも乗算と同様の手法では実現できないことが知られている。よって、従来法及び[2]の手法では除算用に特殊な手段を用意する必要がある。よって、除算も乗算と同様の手段で実現できれば秘匿演算の効率化が実現できる。
(III)秘匿演算の連続に関する問題
前述した秘匿演算の連続について考える。例として、秘密情報aを定数項にもつ多項式Wa(x)、秘密情報bを定数項に持つ多項式Wb(x)、秘密情報cを定数項に持つ多項式Wc(x)を用いてa・b+cの積和演算を求める場合、一般的にはまずWa(x)Wb(x)の乗算を行い、その後Wa(x)Wb(x)+Wc(x)の加算を連続して行う。この場合、各多項式の次数をk-1次とすると、Wa(x)Wb(x)の次数は2k-2になっているのでk-1次のWc(x)との加算は整合性がよくない。できれば、Wa(x)Wb(x)をk-1次の多項式に変換して、Wc(x)と加算することが望まれる。それに対しては、積多項式について以下に示す次数の変換法が知られている[1]。ここでは簡単のため、2k次の多項式をk次の多項式に変換する場合を示す。ここで、h(x)を2k次多項式、f(x)とg(x)をk次多項式とする。さらに、n台のサーバに対するh(x)の分散値をW=(W1,W2,・・・,Wn)とする。
h(x)=h0+h1x+・・・+h2kx2k
Wi=h(xi)=f(xi)g(xi) (i=1,・・・,n)
前述した秘匿演算の連続について考える。例として、秘密情報aを定数項にもつ多項式Wa(x)、秘密情報bを定数項に持つ多項式Wb(x)、秘密情報cを定数項に持つ多項式Wc(x)を用いてa・b+cの積和演算を求める場合、一般的にはまずWa(x)Wb(x)の乗算を行い、その後Wa(x)Wb(x)+Wc(x)の加算を連続して行う。この場合、各多項式の次数をk-1次とすると、Wa(x)Wb(x)の次数は2k-2になっているのでk-1次のWc(x)との加算は整合性がよくない。できれば、Wa(x)Wb(x)をk-1次の多項式に変換して、Wc(x)と加算することが望まれる。それに対しては、積多項式について以下に示す次数の変換法が知られている[1]。ここでは簡単のため、2k次の多項式をk次の多項式に変換する場合を示す。ここで、h(x)を2k次多項式、f(x)とg(x)をk次多項式とする。さらに、n台のサーバに対するh(x)の分散値をW=(W1,W2,・・・,Wn)とする。
h(x)=h0+h1x+・・・+h2kx2k
Wi=h(xi)=f(xi)g(xi) (i=1,・・・,n)
すなわち、f(x)g(x)の乗算結果であるh(x)は2k個のWiがあれば解ける。ここで、h(x)のk次までの係数で構成される多項式をh’(x)とし、その分散値をRiとすると、W=(W1,W2,・・・,Wn)とR=(R1,R2,・・・,Rn)との間にはR=W・Aの関係がある。ただし、xiをサーバIDとして、BとPを以下に定義する。
h’(x)=h0+h1x+・・・+hkxk
Ri=h’(xi)
h’(x)=h0+h1x+・・・+hkxk
Ri=h’(xi)
Aは秘密情報を含まない予め計算可能な行列である。Aがわかれば、RはWにAをかけることによって得られる。すなわち、乗算結果であるh(x)の分散値として得られるWiはi番目のサーバi(i=1,・・・,n)が持っているので、そのWiに上記Aをかける、すなわち以下を計算することで新たな分散値であるRi(i=1,…,n)が得られる。この分散値Riはh(x)と同じ定数項をもつk-1次の多項式h’(x)に対する分散値であるため、k個あれば解くことができる。
よって、Rからk個の分散値を集めればa・bの復元が可能である。すなわち、f(x)=Wa(x)、g(x)=Wb(x)とすればh(x)=Wa(x)Wb(x)であるが、(7)式または(8)式の変換により、h(x)の下位半分の次数をもつh’(x)=Wa(x)Wb(x)に変換でき、Rはh’(x)の分散値となる。よって、Rのk個の分散値にWc(x)のk個の分散値を足せばWa(x)Wb(x)+Wc(x)に対するk個の分散値が得られる。ただし(8)の演算のために、n個のサーバに分散されたWiを1つの装置に集めて、その装置が各iに対する(8)式の計算(W・Aの演算)を行う場合、その装置を盗聴することで乗算結果であるabが漏洩する可能性がある。また、サーバiが自分のもつ分散値WiにaiiをかけたRi=Wi・aiiを次のサーバに送り、次のサーバi+1が自分のもつWi+1にai+1,iをかけて送られてきた値と足すことでRi=Wi・aii+Wi+1・ai+1,i=Ri+Wi+1・ai+1,iを計算し、さらに次のサーバi+2に送り、全サーバを回ればサーバiはRiが得られる。しかしこのときも、攻撃者が1つのサーバを盗聴していれば、以下のように全てのWi(i=1,…,n)を得ることができる。例えば、攻撃者がサーバi+1を盗聴していた場合、攻撃者は元々サーバi+1がもつ分散値Wi+1を知る。次に、サーバiから送られてきたWi・aiiを公知のaiiで割ることでWiを得る。次にWi-1・ai-1,i+1+Wi・ai,i+1が来れば、Wiは得ているため公知のai-1,i+1とai,i+1と組み合わせてWi-1を得る。これを繰り返せば攻撃者は全てのWi(i=1,…,n)を得ることができる。よって、攻撃者は得たn個の分散値を用いて、演算結果であるabを得ることができる。ab+cの積和演算等においてその途中結果であるabが復元者以外の攻撃者に漏洩することは問題がある。よって、積和演算のように乗算と加算を連続して行う場合、連続演算が可能なアルゴリズムとすることに加えて、その途中結果を秘匿して次の演算につなげることも重要である。
(IV)秘匿検索に関する問題
(I)~(III)は、秘匿乗算を含む秘匿演算に関連する問題であるが、最初に述べたように秘密情報が分散値として大容量ストレージに分散・保管され、その分散値をネットワーク経由でユーザがアクセスする場合、検索に関する以下のような問題も生じる。例えば、企業の経理処理を行うようなアプリを考え、その入金や出金に関する金額を秘匿するために上記秘密分散法を用いているとする。すなわち、企業の社員Aは自分の業務上発生した入金や出金を企業のn台のサーバに秘密分散しており、企業は全社員からの入金や出金に関する分散値を用いて合計や平均、分散などを計算し管理しているとする。この場合、n台のサーバには入出金に関する金額の分散値と一緒に、その金額が生じた日時を検索IDとして保存している必要がある。これによって、例えば社員Aがある日時の入出金を確認したい場合、その日時を検索IDとしてk個のサーバに送れば、各サーバはその検索IDを用いて対応する分散値を検索し社員Aに伝え、社員Aはそれを復元して金額情報を確認できる。また、そのアプリの秘匿計算を利用する場合、ある期間を指定すれば、そのアプリはその期間内にある分散値を、日時を検索IDとして集め、その期間内の金額の合計や、平均値、分散などといった各種統計値を、秘密情報である各金額をサーバに知られることなく計算でき、企業の会計担当者などに伝えることができる。しかし逆に、金額を指定し、その金額が発生した日時を特定するといった検索はできない。例えば社員Aが発生した金額のみ記憶しており、それが発生した日時を検索しようとしても、その金額は秘密分散されているため、その分散値がわからなければ検索IDを逆引きすることはできない。さらに、日時から金額を検索する場合においても、日時情報は秘匿されていないため、どの日時の情報が検索されているかサーバは知ることができる。すなわち、企業Aがデータ保管のためのサーバシステムをアウトソーシングしている場合、アウトソーシング先の企業は企業Aにおいて重要な取引があった日(よく検索されている日)などを知ることができる。これに対して、検索IDである日時を暗号化して保存したとすれば、サーバはいつの日時のデータが検索されているかわからないが、暗号化したユーザしか金額の検索ができない。企業の取引に関する金額データなどの場合、そのデータは複数の人によってアクセスされると考えられるが、この場合、暗号化に用いたその暗号鍵を複数の人で共有する必要ができ安全性が低下する。よって、ユーザが何を検索しているかサーバにわからせず、暗号鍵のような特殊な情報を共有しなくても秘密分散した分散値を検索できる仕組みが必要である。また、秘密情報と検索IDは相互に検索されることがあるので、秘密情報の分散値が秘匿演算可能な形であれば、検索IDの分散値も同様の形をしていることが望まれる。
(I)~(III)は、秘匿乗算を含む秘匿演算に関連する問題であるが、最初に述べたように秘密情報が分散値として大容量ストレージに分散・保管され、その分散値をネットワーク経由でユーザがアクセスする場合、検索に関する以下のような問題も生じる。例えば、企業の経理処理を行うようなアプリを考え、その入金や出金に関する金額を秘匿するために上記秘密分散法を用いているとする。すなわち、企業の社員Aは自分の業務上発生した入金や出金を企業のn台のサーバに秘密分散しており、企業は全社員からの入金や出金に関する分散値を用いて合計や平均、分散などを計算し管理しているとする。この場合、n台のサーバには入出金に関する金額の分散値と一緒に、その金額が生じた日時を検索IDとして保存している必要がある。これによって、例えば社員Aがある日時の入出金を確認したい場合、その日時を検索IDとしてk個のサーバに送れば、各サーバはその検索IDを用いて対応する分散値を検索し社員Aに伝え、社員Aはそれを復元して金額情報を確認できる。また、そのアプリの秘匿計算を利用する場合、ある期間を指定すれば、そのアプリはその期間内にある分散値を、日時を検索IDとして集め、その期間内の金額の合計や、平均値、分散などといった各種統計値を、秘密情報である各金額をサーバに知られることなく計算でき、企業の会計担当者などに伝えることができる。しかし逆に、金額を指定し、その金額が発生した日時を特定するといった検索はできない。例えば社員Aが発生した金額のみ記憶しており、それが発生した日時を検索しようとしても、その金額は秘密分散されているため、その分散値がわからなければ検索IDを逆引きすることはできない。さらに、日時から金額を検索する場合においても、日時情報は秘匿されていないため、どの日時の情報が検索されているかサーバは知ることができる。すなわち、企業Aがデータ保管のためのサーバシステムをアウトソーシングしている場合、アウトソーシング先の企業は企業Aにおいて重要な取引があった日(よく検索されている日)などを知ることができる。これに対して、検索IDである日時を暗号化して保存したとすれば、サーバはいつの日時のデータが検索されているかわからないが、暗号化したユーザしか金額の検索ができない。企業の取引に関する金額データなどの場合、そのデータは複数の人によってアクセスされると考えられるが、この場合、暗号化に用いたその暗号鍵を複数の人で共有する必要ができ安全性が低下する。よって、ユーザが何を検索しているかサーバにわからせず、暗号鍵のような特殊な情報を共有しなくても秘密分散した分散値を検索できる仕組みが必要である。また、秘密情報と検索IDは相互に検索されることがあるので、秘密情報の分散値が秘匿演算可能な形であれば、検索IDの分散値も同様の形をしていることが望まれる。
(V)分散値の秘匿更新に関する問題
さらに、秘密分散によって秘匿演算及び秘匿検索を実装できるシステムがネットワーク上に実現できた場合、そのシステムが保管している情報の更新は安全性を向上させるために必要なもう1つの大きな課題である。すなわち、n台のサーバからなるシステムがネットワーク上に構成された場合、秘密分散法によりk-1台までの情報漏えい(不正アクセス)があったとしても秘密情報は安全であるが、k-1台以下の情報漏えいがあった場合それをそのままにしていては、攻撃を受け続けた場合、いつかk台の情報が漏洩する可能性がある。よって、定期的にまたはその情報を使用するたびに保管している情報を更新できれば安全性が保たれる。具体的には、(1)の形で保存されている分散値の秘密情報sを変えずに乱数a 1~a k-1を新たな乱数に更新できれば、前の不正アクセスで漏洩した分散値を無効にできる。また、安全性を向上させるため式(1)の閾値kの値を大きくする場合も、秘密情報sは変えずに多項式の次数及び乱数を変更しなければならない。さらに、秘密情報s自体も使用する毎に変更する場合も分散値の更新が必要になる。これらに対して自明な方法としては、システムが一旦k個の分散値を集め、秘密情報sを復元して新たな多項式をたてて再分散を行うことが考えられるが、この場合更新の過程で秘密情報sが復元されるため安全性が低下する。一方、分散値の更新に関しては[3]が知られているが、この手法はn-k台のサーバが分散値の差分情報の復元処理を行うため効率的ではない。さらに、n-k台のサーバが全サーバの更新に必要な差分情報を知るため、n-k台のうちの1台のサーバを盗聴されると他のサーバの更新値が漏洩し、安全性が低下する。よって、安全性を低下させず、かつ効率的に分散値を更新できる手法が必要である。また、従来手法は秘密情報及び各係数が秘匿化されていない、すなわち分散値が秘匿化されていない場合を想定した更新法であり、後述する実施の形態に示す秘密情報及び各係数が秘匿化されている、すなわち分散値が秘匿化されてい場合の更新法は知られていない。よって、秘匿化された分散値に対しても適用できる更新法が望まれる。
さらに、秘密分散によって秘匿演算及び秘匿検索を実装できるシステムがネットワーク上に実現できた場合、そのシステムが保管している情報の更新は安全性を向上させるために必要なもう1つの大きな課題である。すなわち、n台のサーバからなるシステムがネットワーク上に構成された場合、秘密分散法によりk-1台までの情報漏えい(不正アクセス)があったとしても秘密情報は安全であるが、k-1台以下の情報漏えいがあった場合それをそのままにしていては、攻撃を受け続けた場合、いつかk台の情報が漏洩する可能性がある。よって、定期的にまたはその情報を使用するたびに保管している情報を更新できれば安全性が保たれる。具体的には、(1)の形で保存されている分散値の秘密情報sを変えずに乱数a 1~a k-1を新たな乱数に更新できれば、前の不正アクセスで漏洩した分散値を無効にできる。また、安全性を向上させるため式(1)の閾値kの値を大きくする場合も、秘密情報sは変えずに多項式の次数及び乱数を変更しなければならない。さらに、秘密情報s自体も使用する毎に変更する場合も分散値の更新が必要になる。これらに対して自明な方法としては、システムが一旦k個の分散値を集め、秘密情報sを復元して新たな多項式をたてて再分散を行うことが考えられるが、この場合更新の過程で秘密情報sが復元されるため安全性が低下する。一方、分散値の更新に関しては[3]が知られているが、この手法はn-k台のサーバが分散値の差分情報の復元処理を行うため効率的ではない。さらに、n-k台のサーバが全サーバの更新に必要な差分情報を知るため、n-k台のうちの1台のサーバを盗聴されると他のサーバの更新値が漏洩し、安全性が低下する。よって、安全性を低下させず、かつ効率的に分散値を更新できる手法が必要である。また、従来手法は秘密情報及び各係数が秘匿化されていない、すなわち分散値が秘匿化されていない場合を想定した更新法であり、後述する実施の形態に示す秘密情報及び各係数が秘匿化されている、すなわち分散値が秘匿化されてい場合の更新法は知られていない。よって、秘匿化された分散値に対しても適用できる更新法が望まれる。
(VI)記憶容量の小型化に関する問題
秘密分散法は1つの秘密情報をn個に分散するため、大きな記憶容量を必要とする。記憶容量の小型化を実現するために、分散情報サイズを小型化する(k,L,n)ランプ型秘密分散法や、分散情報の数を削減する(k,n)非対称秘密分散法[4]などが知られている。ランプ型秘密分散法は最も大きな記憶容量削減を実現する一方、秘密情報の復元はk台のサーバがあれば実行できるため、サーバを提供している企業などがk台のサーバの情報を集めれば秘密情報の所有者であるユーザの意思に関係なく秘密情報の復元が可能である。それに対して、非対称秘密分散は記憶容量の小型化と、秘密情報の復元にユーザ自身が参加可能という特徴を持ち、ユーザが参加しなければ秘密情報は復元されないので、個人情報の利用などにおいて大きな役割を果たす。よって、ランプ型秘密分散法と非対称秘密分散に対して、かつ上記(I)~(V)の特徴をもつ秘匿計算、秘匿検索、秘匿更新が実現できれば、個人情報の秘匿演算に同様の効果をもたらすことが期待される。さらに、これらの手法の組み合わせは考慮されておらず、その組合せによって最適な小型化が期待できる。
秘密分散法は1つの秘密情報をn個に分散するため、大きな記憶容量を必要とする。記憶容量の小型化を実現するために、分散情報サイズを小型化する(k,L,n)ランプ型秘密分散法や、分散情報の数を削減する(k,n)非対称秘密分散法[4]などが知られている。ランプ型秘密分散法は最も大きな記憶容量削減を実現する一方、秘密情報の復元はk台のサーバがあれば実行できるため、サーバを提供している企業などがk台のサーバの情報を集めれば秘密情報の所有者であるユーザの意思に関係なく秘密情報の復元が可能である。それに対して、非対称秘密分散は記憶容量の小型化と、秘密情報の復元にユーザ自身が参加可能という特徴を持ち、ユーザが参加しなければ秘密情報は復元されないので、個人情報の利用などにおいて大きな役割を果たす。よって、ランプ型秘密分散法と非対称秘密分散に対して、かつ上記(I)~(V)の特徴をもつ秘匿計算、秘匿検索、秘匿更新が実現できれば、個人情報の秘匿演算に同様の効果をもたらすことが期待される。さらに、これらの手法の組み合わせは考慮されておらず、その組合せによって最適な小型化が期待できる。
(VII)処理の高速化の問題
以上ではShamirの(k,n)秘密分散法を基本として説明したが、Shamir法は多項式の合成や多項式を解く処理が必要であり、処理が効率的でない。それに対して、多項式処理を行わず、XOR演算のみを用いて高速に(k,n)秘密分散を実行する手法(以降、XOR法)なども知られている。しかし、XOR法は秘密情報をビット列として扱うために、秘密情報を数値として扱う演算、すなわち秘匿演算を実現することができなかった。そこで、本発明ではXOR法を拡張し、秘密情報をビット列ではなく数値として扱い、秘匿演算できる手法にする。ただし、XOR法の秘密情報をビット列ではなく数値として扱い秘匿加算を行う手法に関しては既に提案されている[5]が、秘匿乗算については提案されていない。このXOR法の拡張法(以降、多値化法)は秘密情報の復元は分散値の加算と減算だけで実現できるため、多項式を解く必要があるShamir法と比べ、高速に演算が実行できる。よって、XOR法の拡張方式に関しても上記(I)~(V)の特徴をもつ秘匿演算、秘匿検索、秘匿更新が実現できれば非常に効率的な処理が実現できる。
以上ではShamirの(k,n)秘密分散法を基本として説明したが、Shamir法は多項式の合成や多項式を解く処理が必要であり、処理が効率的でない。それに対して、多項式処理を行わず、XOR演算のみを用いて高速に(k,n)秘密分散を実行する手法(以降、XOR法)なども知られている。しかし、XOR法は秘密情報をビット列として扱うために、秘密情報を数値として扱う演算、すなわち秘匿演算を実現することができなかった。そこで、本発明ではXOR法を拡張し、秘密情報をビット列ではなく数値として扱い、秘匿演算できる手法にする。ただし、XOR法の秘密情報をビット列ではなく数値として扱い秘匿加算を行う手法に関しては既に提案されている[5]が、秘匿乗算については提案されていない。このXOR法の拡張法(以降、多値化法)は秘密情報の復元は分散値の加算と減算だけで実現できるため、多項式を解く必要があるShamir法と比べ、高速に演算が実行できる。よって、XOR法の拡張方式に関しても上記(I)~(V)の特徴をもつ秘匿演算、秘匿検索、秘匿更新が実現できれば非常に効率的な処理が実現できる。
(VIII)総合的な秘密分散及び秘匿計算に関する問題
よって、上記の特徴を全て実現する(k,n)秘密分散法に適した手法が実現されることは重要である。特に、XOR法に対するランプ型秘密分散法は提案されているが、XOR法を拡張した多値化法に対応するランプ型秘密分散法は提案されていない。また、非対称秘密分散法と多値化法の組み合わせ、非対称秘密分散法をランプ型秘密分散法の組み合わせ、非対称秘密分散法と多値化法のランプ型秘密分散法との組み合わせも提案されておらず、さらにそれらを用いた秘匿演算も提案されていない。特に、非対称秘密分散法と多値化法の組み合わせ、非対称秘密分散法とランプ型秘密分散法、非対称秘密分散法と多値化法に対応するランプ型秘密分散法の組合せは記憶容量の小型化と高速化を同時に実現できる。
よって、上記の特徴を全て実現する(k,n)秘密分散法に適した手法が実現されることは重要である。特に、XOR法に対するランプ型秘密分散法は提案されているが、XOR法を拡張した多値化法に対応するランプ型秘密分散法は提案されていない。また、非対称秘密分散法と多値化法の組み合わせ、非対称秘密分散法をランプ型秘密分散法の組み合わせ、非対称秘密分散法と多値化法のランプ型秘密分散法との組み合わせも提案されておらず、さらにそれらを用いた秘匿演算も提案されていない。特に、非対称秘密分散法と多値化法の組み合わせ、非対称秘密分散法とランプ型秘密分散法、非対称秘密分散法と多値化法に対応するランプ型秘密分散法の組合せは記憶容量の小型化と高速化を同時に実現できる。
1つの側面として、上記何れかの問題を解決することが目的である。
上記目的達成するため請求項1に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値を計算する計算装置であって、k個以上の秘密情報の各々の分散値を計算する手段と、前記k個以上の秘密情報から合成値を生成する手段と、前記合成値を新たな秘密情報に作用させた秘匿化秘密情報を生成する手段と、を備える。
請求項2に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、
第1の秘匿化秘密情報に用いられた第1の乱数を構成する複数の乱数のうちの1つである第1の部分乱数の分散値と、第2の秘匿化秘密情報に用いられた第2の乱数を構成する複数の乱数うちの1つである第2の部分乱数の分散値とを集めて、前記第1の部分乱数と前記第2の部分乱数を復元する手段と、
前記復元した第1の部分乱数と第2の部分乱数を合成する手段と、
を備える計算装置。
第1の秘匿化秘密情報に用いられた第1の乱数を構成する複数の乱数のうちの1つである第1の部分乱数の分散値と、第2の秘匿化秘密情報に用いられた第2の乱数を構成する複数の乱数うちの1つである第2の部分乱数の分散値とを集めて、前記第1の部分乱数と前記第2の部分乱数を復元する手段と、
前記復元した第1の部分乱数と第2の部分乱数を合成する手段と、
を備える計算装置。
請求項3に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、k個以上の乱数を用いて秘匿化された秘匿化秘密情報を復元する手段と、前記復元した秘匿化秘密情報と他の値とに基づいて所定の演算をする手段と、を備える。
請求項4に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘密情報を復元する計算装置であって、k個以上の乱数を用いて秘匿化された秘匿化秘密情報を復元する手段と、前記乱数を合成する手段と、前記合成された乱数を用いて、前記復元された前記秘匿化秘密情報の秘匿化を解除する手段と、を備える。
請求項5に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、k個以上の乱数を用いて秘匿化された秘匿化秘密情報における第1の合成乱数と、第2の合成乱数を構成するk個以上の乱数とを組み合わせて、前記第1の合成乱数を変換する手段を備える。
請求項6に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、秘匿化されていない分散値に、別の秘匿化秘密情報を構成するk個以上の乱数を作用させて秘匿化する手段を備える。
請求項7に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値を計算する計算装置であって、複数の新たな秘密情報を秘匿化して複数の分散値を計算する手段と、前記複数の分散値の各々の並び順を、前記秘匿化する前の前記複数の新たな秘密情報の予め定められた並び順に応じて指定する手段と、を備える。
請求項8に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて検索する秘密情報を指定する計算装置であって、検索用秘密情報に乱数を作用させ秘匿化する手段と、前記システムから受信した値に前記乱数を作用させる手段と、を備える。
請求項9に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて指定された秘密情報を検索する計算装置であって、前記秘密情報に対応する第1の検索用秘密情報を第1の乱数で秘匿化すると共に、入力された第2の検索用秘密情報を第2の乱数で秘匿化する手段と、前記秘匿化された前記第1の検索用秘密情報に基づく第1の値と前記秘匿化された前記第2の検索用秘密情報に基づく第2の値との差に基づいて、前記第1の検索用秘密情報と前記第2の検索用秘密情報との差を取得する手段と、を備える。
請求項10に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値の更新を行う計算装置であって、乱数で秘密情報が秘匿化されて得られた分散値に対して、新たな乱数を生成し、前記生成した新たな乱数を新たな分散値として保存する手段を備える。
請求項11に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値の更新を行う計算装置であって、k個以上の補正情報から秘密情報を更新する更新値を計算する手段を備える。
請求項12に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値を計算する計算装置であって、生成されたh(1~k-1までの整数)個の乱数を分散値として定め、前記h個の分散値と前記秘密情報とに基づいて、n-h個の分散値を計算する手段と、k個以上の秘密情報から合成値を生成する手段と、前記合成値を新たな秘密情報に作用させた秘匿化秘密情報を計算する手段と、を備える。
請求項13に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値を計算する計算装置であって、秘密情報をe進数d桁の数値としたとき、前記秘密情報をL(n-1)分割を行ってe進数d/L(n-1)桁の数値とする手段と、前記数値とされた秘密情報の分散、復元、及び秘匿演算の少なくとも1つを、
より大きな素数を法として、乗算及び除算を加算及び減算に分解することなく、加算と減算だけで行う手段と、を備える。
より大きな素数を法として、乗算及び除算を加算及び減算に分解することなく、加算と減算だけで行う手段と、を備える。
請求項14に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算または復元をする計算装置であって、秘匿化され複数の桁に分割された秘匿化秘密情報の桁に合わせて所定の演算を行う手段を備える。
請求項15に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、前記秘密情報をp1以下の整数、乱数をp2以下の整数として、それらを乗算したp1*p2以下の秘匿化秘密情報をp1*p2より大きな素数を法として秘密分散または復号する手段を備える計算装置。
請求項16に記載の発明は、nを整数、kをnより小さい整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおける秘匿演算または復元を行う計算装置であって、乱数の加算によって秘密情報を秘匿した秘匿化秘密情報と、前記乱数が秘密分散された分散値とを加減算する手段を備える。
請求項17に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステム秘密情報の格納位置を検索する計算装置であって、第1の検索用秘密情報と第2の検索用秘密情報の差を取得する手段と、前記差に応じて前記格納位置を定める手段と、を備える。
請求項18に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘密情報を更新する計算装置であって、秘密情報の分散値に、予め定められた第1の乱数を乗算しかつ予め定められた第2の乱数を加算する手段を備える。
請求項17に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステム秘密情報の格納位置を検索する計算装置であって、第1の検索用秘密情報と第2の検索用秘密情報の差を取得する手段と、前記差に応じて前記格納位置を定める手段と、を備える。
請求項18に記載の発明は、nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘密情報を更新する計算装置であって、秘密情報の分散値に、予め定められた第1の乱数を乗算しかつ予め定められた第2の乱数を加算する手段を備える。
本願発明は、乗算を、必要なサーバの台数を変えず、かつ安全に行うことができる。
本願発明は、除算を、乗算と同様の手段で実現できる。
本願発明は、連続した秘匿演算を矛盾なく実現できる。
本願発明は、例えば、検索IDから秘密情報への及び秘密情報から検索IDへの双方向の検索を実現できる。
本願発明は、効率的かつ安全にその分散値を更新することができる。
本願発明は、記憶容量の小型化を実現できる。
本願発明は、処理の高速化を実現できる。
本願発明は、記憶容量の小型化と共に処理の高速化を実現できる。
本願発明は、除算を、乗算と同様の手段で実現できる。
本願発明は、連続した秘匿演算を矛盾なく実現できる。
本願発明は、例えば、検索IDから秘密情報への及び秘密情報から検索IDへの双方向の検索を実現できる。
本願発明は、効率的かつ安全にその分散値を更新することができる。
本願発明は、記憶容量の小型化を実現できる。
本願発明は、処理の高速化を実現できる。
本願発明は、記憶容量の小型化と共に処理の高速化を実現できる。
<第1の実施の形態>
(全体構成)
最初に、第1の実施の形態~第10の実施の形態の全体の構成を説明する。
(k,n)秘密分散法を用いて秘密情報の分散保管、秘匿計算、秘匿検索、秘匿更新を行う図1に示すシステムを考える。システムは、秘密情報の分散を行う複数のディーラ装置を備えている。図1では、3つのディーラ装置、即ち、第1のディーラ装置12A、第2のディーラ装置12B、及び第3のディーラ装置12Cを備えている例を示している。また、システムは、分散されたn個の分散値を独立に保管するn個のサーバ、即ち、第1のサ-バ14x1、第2のサ-バ14x2、・・・第n個のサ-バ14xn(以降、サ-バシステムともいう)を備えている。更に、システムは、秘密情報または秘匿演算された結果の復元を行う復元装置16を備えている。図1では、復元装置16は1つのみ示しているが、複数の復元装置16を備えることもできる。なお、複数の復元装置16を備える場合でも、各復元装置16は以下に示す処理を実行する。また、システムは、検索サーバ18を備える場合もある。第1のディーラ装置12A~第3のディーラ装置12C、第1のサ-バ14x1~第n個のサ-バ14xn、及び復元装置16は、インタ-ネット等のネットワ-ク10を介して相互に接続されている。これに対し、検索サーバ18は、ネットワ-ク10を介さずに、第1のサ-バ14x1~第n個のサ-バ14xnの各々に直接接続されている。
(全体構成)
最初に、第1の実施の形態~第10の実施の形態の全体の構成を説明する。
(k,n)秘密分散法を用いて秘密情報の分散保管、秘匿計算、秘匿検索、秘匿更新を行う図1に示すシステムを考える。システムは、秘密情報の分散を行う複数のディーラ装置を備えている。図1では、3つのディーラ装置、即ち、第1のディーラ装置12A、第2のディーラ装置12B、及び第3のディーラ装置12Cを備えている例を示している。また、システムは、分散されたn個の分散値を独立に保管するn個のサーバ、即ち、第1のサ-バ14x1、第2のサ-バ14x2、・・・第n個のサ-バ14xn(以降、サ-バシステムともいう)を備えている。更に、システムは、秘密情報または秘匿演算された結果の復元を行う復元装置16を備えている。図1では、復元装置16は1つのみ示しているが、複数の復元装置16を備えることもできる。なお、複数の復元装置16を備える場合でも、各復元装置16は以下に示す処理を実行する。また、システムは、検索サーバ18を備える場合もある。第1のディーラ装置12A~第3のディーラ装置12C、第1のサ-バ14x1~第n個のサ-バ14xn、及び復元装置16は、インタ-ネット等のネットワ-ク10を介して相互に接続されている。これに対し、検索サーバ18は、ネットワ-ク10を介さずに、第1のサ-バ14x1~第n個のサ-バ14xnの各々に直接接続されている。
第1のディーラ装置12A~第3のディーラ装置12C、第1のサ-バ14x1~第n個のサ-バ14xn、復元装置16、及び検索サーバ18は同様の構成となっているので、以下、第1のディーラ装置12Aの構成を説明し、その他の装置の説明を省略する。
図2には、第1のディーラ装置12Aの構成を示すブロック図である。図2に示すようにある第1のディーラ装置12Aは、CPU22、ROM24、及びRAM26を備えている。また、第1のディーラ装置12Aは、表示装置30、入力装置32、記憶装置34、及びインターフェース(I/F)36を備えている。これらの各装置は、バス28を介して相互に接続されている。インターフェース(I/F)36は、ネットワ-ク10に接続されている。なお、検索サーバ18のインターフェース(I/F)36は、ネットワ-ク10を介さずに、第1のサ-バ14x1~第n個のサ-バ14xnのインターフェース(I/F)36に接続されている。ROM24には、後述する各処理のプログラムが記憶されている。
秘密情報をもつオ-ナは第1のディーラ装置12A~第3のディーラ装置12Cを操作する。演算結果を知ることができるユ-ザ(復元者)は復元装置16を操作する。第1のサ-バ14x1~第n個のサ-バ14xnは正当なオ-ナまたは復元者からの通信だけを受け付け、不正な通信は拒否する。さらに、第1のディーラ装置12A~第3のディーラ装置12C、及び第1のサ-バ14x1~第n個のサ-バ14xnと復元装置16との通信は暗号などにより安全な通信路が構築されている。一般に、第1のディーラ装置12A~第3のディーラ装置12Cや復元装置16は各オ-ナや復元者が個別に有する。第1のディーラ装置12A~第3のディーラ装置12Cをサ-バシステムの入力口、復元装置16をサ-バシステムの出力口として備えることもできる。
まず、図1のシステムが持つ秘匿検索機能について説明する。オ-ナが第1のディーラ装置を使う場合を考える。オーナは自分の秘密情報の分散値を第1のディーラ装置12Aによって計算し、自分に割り当てられた各サ-バの領域にその分散値を保管する。ただし、各分散値はそれを検索するための識別データ、即ち、検索IDまたは検索IDに関する分散値とともにサ-バシステムに保存される。
秘匿検索を行う場合、オーナは第6の実施の形態に示す手法を用いて検索IDを分散する。情報の検索・復元を望む正当な復元者は検索IDを復元装置16に示し、復元装置16は第6の実施の形態において説明する手法を用いてそれに対応する情報をサ-バシステムに送る。サ-バシステムは送られてきた情報に対応する秘密情報の分散値があればそれを復元装置16に送信、当該秘密情報の分散値がなければ、当該秘密情報の分散値がないことを伝える。検索IDに対応する秘密情報の分散値を得た復元装置16はそれから秘密情報または秘匿計算の結果の復元を行う。ここで、システムは第6の実施の形態に示す秘匿検索を行うとしたが、システムは複数の機能を有しているので、秘匿検索の機能が必要ない場合、秘匿検索の機能を使わず通常の検索を行うこともできる。
次に図1のシステムがもつ加減乗除を含む演算を秘密に行う秘匿演算機能について説明する。復元者が検索ID(またはその条件式など)により演算対象と、それに対する演算法を復元装置16に示すと、復元装置16は上述の秘匿検索機能(秘匿検索を使わない場合、通常の検索機能)を用いて検索IDを秘匿検索し、そのIDに対応するサ-バシステムに保存されている演算対象となる分散値を得る。サーバシステムはそれを用いて指定された演算を秘匿計算し、最終結果の分散値を得る。最終結果の分散値を得た復元装置16はそれを復元して最終結果を得る。第1の実施の形態~第4の実施の形態は本発明による秘匿乗算法、秘匿除算法、連続秘匿演算法(秘匿加算法、秘匿減算法を含む)について、各ディーラ装置、サ-バシステム、復元装置16が行う処理を説明する。ただし、本発明において秘匿演算は主にサ-バシステムが担当するが、復元装置16または各ディーラ装置が秘匿演算に協力することがある。一般に、秘匿演算は秘密情報に対して行われるが、検索IDに対して行えば検索IDによる条件式の秘匿演算となる。よって、検索IDを秘匿して条件式を演算する場合もこの秘匿計算機能は用いられる。ただし、秘匿検索や秘匿更新などの機能のみを使いたい場合、この秘匿演算機能は使われず、通常の演算機能をもつ。
また、図1のサ-バシステムは定期的またはある秘密情報に対する分散値を使用する毎などの定められたタイミングで行う保管情報の秘匿更新機能をもつ。これは第5の実施の形態において、種々の場合に対する更新法が説明される。ただし、秘匿更新を行わない場合、この機能は使われないこともある。
さらに、第1の実施の形態~第6の実施の形態はShamirの(k,n)秘密分散法を例として説明されるが、第7の実施の形態において、記憶容量の削減を実現しながら秘匿検索、秘匿演算、秘匿更新をする非対称秘密分散法に対して、記憶容量の削減と計算量の削減を同時に実現する手法を示す。即ち、本発明が非対称秘密分散法に対しても有効であることを示す。ただし、全体構成は図1と同様である。
また、第8の実施の形態に非対称秘密分散法と異なるやり方で記憶容量の削減を行うランプ型秘密分散法に対して、記憶容量の削減と計算量の削減を同時に実現しながら秘匿検索、秘匿演算、秘匿更新をする手法を示す。即ち、本発明がランプ型秘密分散法に対しても有効であることを示す。ただし、全体構成は図1と同様である。
さらに、第9の実施の形態において秘密情報をビット列として扱い、秘密情報の分散と復元をXORのみで行う(k,n)秘密分散法を拡張し、秘密情報を数値として扱う手法(多値化法)について説明する。これを用いることによって計算量が削減され、第1の実施の形態~第6の実施の形態の秘匿検索、秘匿検索、秘匿更新の各機能が高速に行えることを示す。即ち、本発明が多値化法に対しても有効であることを示す。ただし、全体構成は図1と同様である。
最後に、非対称型秘密分散法と多値化法またはランプ型多値化法を組み合わせた方法に対しても、本発明による提案が有効であることを第10の実施の形態に示す。これによって、第1の実施の形態~第6の実施の形態に示す各機能が小型かつ高速に行えるシステム(第1の実施の形態)が実現され、本発明の有効性が示される。
(第1の実施の形態の具体的内容)
Shamirの(k,n)秘密分散法に対して閾値kを変化させない秘匿乗算法を以下に示す。第1のディーラ装置12Aが秘密情報aを持ち、第2のディーラ装置12Bが秘密情報bを持つ。以下では、a,bを秘匿したままa・bの乗算結果を得る場合を示す。
前提として、生成する乱数は0を含まないとし、第1のサ-バ14x1~第n個のサ-バ14xnの識別データ(サ-バID)であるx1~xnは公開の値である、即ち、他の装置は、各サーバIDを記憶しているとする。また、a,bは素数p以下の整数とし、演算はq(>pu、uは1以上の整数。ただし、元々pを大きくとった場合はp=qとしてもよい)を素数として、qを超えた値に対してはその余りをとる法演算を用いて行われる。αiやβi(i=1,…,k)などの乱数は素数q以下の整数とする。さらに、パラメ-タが実数の場合でも、以下のようにすれば整数として扱える。まず、実数は小数点以下の位が定められているとする。例えば、小数点第2位までとされる場合、100倍すれば整数として扱える。よって、実数を秘密分散する場合、実数は桁上げをして整数として表す(これを実数の整数表現と呼ぶ)。その小数点位置は別に記憶されている、または規定によって予め定められているとする。よって、実数の整数表現同士の和は整数の和と同様に扱え、小数点位置も変化しない。それに対して、実数の整数表現同士の積も整数の積と同様に扱えるが、小数点位置に変化が生じる。例えば、小数点第2位の実数同士の積を計算する場合、小数点第4位の実数となる。前述のように、全ての実数は小数点以下の位が定められているとする場合、小数点第3位以下は切り捨てまたは四捨五入されて、積も小数点第2位の実数とする。このように小数点位置の規定に従って小数点位置の調整を行い実数に戻すことを実数化と呼ぶ。一般に、実数はコンピュ-タ上では固定小数点表現と浮動小数点表現があるが、これらはあくまで表現であるので上記のような規則が定められていればどちらにも対応できる。以上の前提は全実施の形態を通して共通である。
Shamirの(k,n)秘密分散法に対して閾値kを変化させない秘匿乗算法を以下に示す。第1のディーラ装置12Aが秘密情報aを持ち、第2のディーラ装置12Bが秘密情報bを持つ。以下では、a,bを秘匿したままa・bの乗算結果を得る場合を示す。
前提として、生成する乱数は0を含まないとし、第1のサ-バ14x1~第n個のサ-バ14xnの識別データ(サ-バID)であるx1~xnは公開の値である、即ち、他の装置は、各サーバIDを記憶しているとする。また、a,bは素数p以下の整数とし、演算はq(>pu、uは1以上の整数。ただし、元々pを大きくとった場合はp=qとしてもよい)を素数として、qを超えた値に対してはその余りをとる法演算を用いて行われる。αiやβi(i=1,…,k)などの乱数は素数q以下の整数とする。さらに、パラメ-タが実数の場合でも、以下のようにすれば整数として扱える。まず、実数は小数点以下の位が定められているとする。例えば、小数点第2位までとされる場合、100倍すれば整数として扱える。よって、実数を秘密分散する場合、実数は桁上げをして整数として表す(これを実数の整数表現と呼ぶ)。その小数点位置は別に記憶されている、または規定によって予め定められているとする。よって、実数の整数表現同士の和は整数の和と同様に扱え、小数点位置も変化しない。それに対して、実数の整数表現同士の積も整数の積と同様に扱えるが、小数点位置に変化が生じる。例えば、小数点第2位の実数同士の積を計算する場合、小数点第4位の実数となる。前述のように、全ての実数は小数点以下の位が定められているとする場合、小数点第3位以下は切り捨てまたは四捨五入されて、積も小数点第2位の実数とする。このように小数点位置の規定に従って小数点位置の調整を行い実数に戻すことを実数化と呼ぶ。一般に、実数はコンピュ-タ上では固定小数点表現と浮動小数点表現があるが、これらはあくまで表現であるので上記のような規則が定められていればどちらにも対応できる。以上の前提は全実施の形態を通して共通である。
(秘匿乗算1(基本形))
以下、秘匿乗算1(基本形)を説明する。秘匿乗算1(基本形)は、分散、乗算、及び復元の各処理により実行される。
[分散]
まず、分散(秘匿分散)を、図3~図6を参照して説明する。
第1のディーラ装置12AのCPU22は、図3に示す分散値処理を実行する。
ステップ42で、k個の乱数αiを生成し、その積α=α1・α2・・・αkを計算する。
ステップ44で、以下の分散値を計算する。
Wa’(xi)=α(a+a0,1xi+・・・+a0,k-1xi k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
ただし、ah,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiは上記のように公開されているサ-バID(i=1,…,n)である。
以下、秘匿乗算1(基本形)を説明する。秘匿乗算1(基本形)は、分散、乗算、及び復元の各処理により実行される。
[分散]
まず、分散(秘匿分散)を、図3~図6を参照して説明する。
第1のディーラ装置12AのCPU22は、図3に示す分散値処理を実行する。
ステップ42で、k個の乱数αiを生成し、その積α=α1・α2・・・αkを計算する。
ステップ44で、以下の分散値を計算する。
Wa’(xi)=α(a+a0,1xi+・・・+a0,k-1xi k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
ただし、ah,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiは上記のように公開されているサ-バID(i=1,…,n)である。
ステップ46で、第1のサ-バ14x1~第nのサ-バ14xnに分散値Wa’(xi)~Wak(xi)を送信する。
n=4、k=3とすると、第1のサ-バ14x1~第nのサ-バ14xnの分散値Wa’(xi)~Wak(xi)は、図4に示す通りである。
n=4、k=3とすると、第1のサ-バ14x1~第nのサ-バ14xnの分散値Wa’(xi)~Wak(xi)は、図4に示す通りである。
第2のディーラ装置12BのCPU22は図5に示す分散処理を実行する。
ステップ52で、k個の乱数βiを生成し、その積β=β1・β2・・・βkを計算する。
ステップ54で、以下の分散値を計算する。
Wb’(xi)=β(b+b0,1xi+・・・+b0,k-1xi k-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xi k-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xi k-1
ただし、bh,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)
ステップ52で、k個の乱数βiを生成し、その積β=β1・β2・・・βkを計算する。
ステップ54で、以下の分散値を計算する。
Wb’(xi)=β(b+b0,1xi+・・・+b0,k-1xi k-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xi k-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xi k-1
ただし、bh,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)
ステップ56で、第1のサ-バ14x1~第nのサ-バ14xnに分散値Wb’(xi)~Wbk(xi)を送信する。
n=4、k=3とすると、第1のサ-バ14x1~第nのサ-バ14xnの分散値Wb’(xi)~Wbk(xi)は、図6に示す通りである。
n=4、k=3とすると、第1のサ-バ14x1~第nのサ-バ14xnの分散値Wb’(xi)~Wbk(xi)は、図6に示す通りである。
[乗算]
次に、乗算を図7~図9を参照して説明する。
サ-バシステム内の、例えば予め定められた1つのサ-バ、例えば、第1のサ-バ14x1のCPU22は、図7に示すαaの復元・送信処理を実行する。図7のステップ62(図8も参照)で、自身のサーバ14x1及び他のサ-バ14x2~14xkから、Wa’(xi)をk個集め、ステップ64でαaを復元し、ステップ66で、αaを、演算に参加する他のサ-バ、例えば、他の全てのサ-バ14x2~14xnに送信する。その様子を図8に示す。
次に、乗算を図7~図9を参照して説明する。
サ-バシステム内の、例えば予め定められた1つのサ-バ、例えば、第1のサ-バ14x1のCPU22は、図7に示すαaの復元・送信処理を実行する。図7のステップ62(図8も参照)で、自身のサーバ14x1及び他のサ-バ14x2~14xkから、Wa’(xi)をk個集め、ステップ64でαaを復元し、ステップ66で、αaを、演算に参加する他のサ-バ、例えば、他の全てのサ-バ14x2~14xnに送信する。その様子を図8に示す。
サ-バj(j=1,…,n)、例えば、全てのサーバ(第1のサーバ14x1~第nのサーバ14xn)の各々のCPU22は、図9(A)に示す乗算処理を実行する。即ち、ステップ68で、自分がもつWb’(xj)に送られてきたαaをかけて、以下のWab’(xj)を生成する。
Wab’(xj)=αβa(b+b0,1xj+・・・+b0,k-1xj k-1)
n=4、k=3の場合の、第1のサーバ14x1~第4のサーバ14x4におけるWab’(x1)~Wab’(x4)は、図9(B)に示す通りである。
Wab’(xj)=αβa(b+b0,1xj+・・・+b0,k-1xj k-1)
n=4、k=3の場合の、第1のサーバ14x1~第4のサーバ14x4におけるWab’(x1)~Wab’(x4)は、図9(B)に示す通りである。
[復元]
次に、復元を、図10~図13を参照して説明する。
復元に参加するサ-バj(j=1,…,k)、即ち、例えば、予め定められた第1のサ-バ14x1~第kのサ-バ14xkの各々のCPU22は、図10のαjβjの復元・計算・送信処理を実行する。即ち、ステップ72(図11も参照)で、指定されたjに応じたWaj(xi)とWbj(xi)を集め(i=1,…,k)、ステップ74で、αjとβjを1つずつ復元する。図11では、第1のサ-バ14x1はj=1が指定されてα1とβ1を復元し、第2のサ-バ14x2はj=2が指定されてα2とβ2を復元し、第3のサ-バ14x3はj=3が指定されてα3とβ3を復元する。
次に、復元を、図10~図13を参照して説明する。
復元に参加するサ-バj(j=1,…,k)、即ち、例えば、予め定められた第1のサ-バ14x1~第kのサ-バ14xkの各々のCPU22は、図10のαjβjの復元・計算・送信処理を実行する。即ち、ステップ72(図11も参照)で、指定されたjに応じたWaj(xi)とWbj(xi)を集め(i=1,…,k)、ステップ74で、αjとβjを1つずつ復元する。図11では、第1のサ-バ14x1はj=1が指定されてα1とβ1を復元し、第2のサ-バ14x2はj=2が指定されてα2とβ2を復元し、第3のサ-バ14x3はj=3が指定されてα3とβ3を復元する。
ステップ76(図11も参照)で、積αjβjを計算し、ステップ78で、Wab’(xj)とαjβjを復元装置16に送信する。図11では第1のサ-バ14x1はWab’(x1)とα1β1を、第2のサ-バ14x2はWab’(x2)とα2β2を、第3のサ-バ14x3はWab’(x3)とα3β3を復元装置16に送信する。よって、上記例では、復元装置16には、図11に示すデータが送信されている。
復元装置16のCPU22は、図12の乗算結果取得処理を実行する。即ち、ステップ82(図13も参照)で、k個のWab’(xj)からαβabを復元する。
ステップ84(図13も参照)で、αjβj(j=1,・・・,k)からαβを合成し、ステップ86(図13も参照)で、αβabをαβで割ってabを得る。
ステップ84(図13も参照)で、αjβj(j=1,・・・,k)からαβを合成し、ステップ86(図13も参照)で、αβabをαβで割ってabを得る。
上記演算の第1の特徴を説明する。まず、請求項1に示すように[分散]のステップ42(図3)、ステップ52(図5)で、それぞれk個の乱数αiとβi(i=1,…,k)を個別に生成した後、ステップ44(図3)、ステップ54(図5)で分散値を計算し、ステップ46(図3)、ステップ56(図5)で分散する。請求項2に示すように[復元]のステップ74(図10)においてサ-バ毎に1つの乱数を復元させ、図10のステップ76~ステップ78においてその積を計算して復元装置16に送信する。これによって、全てのサ-バの乱数がわからなければ、合成値αまたはβはわからない。換言すると、k-1個のサ-バを盗聴してもα,βは個別に復元できない方式となる。よって、αaからaまたはβbからbはわからない。
次に、上記演算の第2の特徴を説明する。請求項1に示すように[分散]のステップ44~ステップ46(図3)、ステップ54~ステップ56(図5)で秘密情報に合成値をかけて分散し、請求項3に示すように[乗算]のステップ62~ステップ64(図7)で一旦復元し、ステップ76(図10)でその復元値を用いて演算を行う。これによって、分散値の次数k-1を変えずに乗算を可能とする。
第3の特徴は、請求項4に示すように[復元]における図12のステップ82~86では、分散値Wab’(xi)から秘匿化された演算結果(αβab)を復元し、合成したαβで割ることになされる点にある。
上記において、簡単のため[分散]のステップ44(図3)、ステップ54(図5)、おいて、分散値Wa’(xi),Wb’(xi)などの秘匿化分散値は、分散値に乱数をかけているが、秘密情報に乱数をかけて直接それを秘密分散してもよい。
また[乗算]のステップ64(図7)で、あるサ-バ14xd、上記例では、第1のサーバ14x1がαaを復元するとしたが、複数のサ-バでαaを復元して、当該復元したサーバ以外のサ-バに伝えるとしてもよい。全てのサ-バでαaを復元する場合、他のサ-バにαaの値を伝える必要はない。また、サ-バ14xdは他のサ-バにαaを伝えるとしたが、復元に参加するk台が定まっている場合、少なくともそのk台のサ-バに伝えればよい。また、αaでなくβbを復元してもよい。
また、[復元]のステップ72(図10)では、サ-バjは指定されたjに応じたWaj(xi)とWbj(xi)を集めるとしたが、指定は重なりがなければどのように定めても良い。例えば、jを参加するサ-バIDの昇順に応じて1,2,…,kと定めてもよいし、降順に定めても良い。また、各サ-バが早いもの順で自分のjの値を定めるとしてもよい。
また、[復元]の図10のステップ78において、各サーバはαjβjを復元者に送り、復元装置16が図12のステップ82でαβを復元するとしたが、次のようにしてもよい。即ち、例えば、図10のステップ78では、サーバ14x1はα1β1をサーバ14x2に送り、サーバ14x2はそれにα2β2をかけて次のサーバに送ることを繰り返し、最後のサーバ14xkにおいてαβを復元する。その後、サーバ14xkはαβを他のサーバに伝え、各サーバはWab’(xi)/αβを計算する。この場合、図12のステップ82は、復元装置16はk個のサーバからWab’(xi)/αβを集め、abを復元するとなり、ステップ84と86は省略される。また、各サーバはαjβjを復元者ではなく検索サーバに送り、検索サーバがαβを復元して各サーバに戻し、各サーバはWab’(xi)/αβを計算して、その結果を復元者に送ってもよい。
また、[乗算]の図9のステップ68では、サーバ14xdはWb’(xi)を集めてβbを復元し、αaとかけてαβabを計算して復元装置16に送ってもよい。その場合、[復元]における図12のステップ82は削除される。
また、生成する乱数αiなどはk個とし、各サーバはその中の1つを復号するとしたが、k個以上の乱数を生成し、各サーバが複数の乱数を復元し、合成してもよい。例えば、[分散]の図3のステップ42においてt・k個の乱数を生成して、qを法としてその積αを計算し、[復元]の図10のステップ74において、1つのサーバはt個の乱数を復元し、ステップ76で乗算する。
以上は、以降の実施の形態についても同様である。
以上は、以降の実施の形態についても同様である。
(秘匿乗算2(繰り返し))
次に、乗算を繰り返してabcを計算する場合を説明する。なお、乗算の後に加算を行う場合は第3の実施の形態に示す。
[分散]
[分散]においてa,bは秘匿乗算1と同様に分散されているとする。即ち、第1のディーラ装置12A、第2のディーラ装置12Bはそれぞれ、図3、図5の分散処理を実行する。
第3のディーラ装置12CのCPU22は、図14の分散処理を実行する。即ち、ステップ92で、k個の乱数γiを生成し、その積γ=γ1・γ2・・・γkを計算する。
次に、乗算を繰り返してabcを計算する場合を説明する。なお、乗算の後に加算を行う場合は第3の実施の形態に示す。
[分散]
[分散]においてa,bは秘匿乗算1と同様に分散されているとする。即ち、第1のディーラ装置12A、第2のディーラ装置12Bはそれぞれ、図3、図5の分散処理を実行する。
第3のディーラ装置12CのCPU22は、図14の分散処理を実行する。即ち、ステップ92で、k個の乱数γiを生成し、その積γ=γ1・γ2・・・γkを計算する。
ステップ94で、以下の分散値を計算する。
Wc’(xi)=γ(c+c0,1xi+・・・+c0,k-1xi k-1)
Wc1(xi)=γ1+c1,1xi+・・・+c1,k-1xi k-1
:
Wck(xi)=γk+ck,1xi+・・・+ck,k-1xi k-1
ステップ96で、n個の第1のサ-バ14x1~第nのサ-バ14xnに、分散値Wc’(xi)~Wck(xi)を送信する。
なお、n=4、k=3の場合、上記分散値Wc’(xi)~Wck(xi)は、図15に示す通りである。
Wc’(xi)=γ(c+c0,1xi+・・・+c0,k-1xi k-1)
Wc1(xi)=γ1+c1,1xi+・・・+c1,k-1xi k-1
:
Wck(xi)=γk+ck,1xi+・・・+ck,k-1xi k-1
ステップ96で、n個の第1のサ-バ14x1~第nのサ-バ14xnに、分散値Wc’(xi)~Wck(xi)を送信する。
なお、n=4、k=3の場合、上記分散値Wc’(xi)~Wck(xi)は、図15に示す通りである。
[乗算]
秘匿乗算1の上記処理(図7、図9)を実行し、Wab’(xi)を計算する。
予め定められたサ-バ、例えば、第1のサ-バ14x1のCPU22は、図16のγcの復元・送信処理を実行する。即ち、ステップ102(図16も参照)で、Wc’(xj)をk個集め、ステップ104(図16も参照)で、γcを復元し、ステップ106(図16も参照)で、γcを他のサ-バに送信する。上記例では、γcをサーバ14x2~14x4に送信する。その様子を図17に示す。
秘匿乗算1の上記処理(図7、図9)を実行し、Wab’(xi)を計算する。
予め定められたサ-バ、例えば、第1のサ-バ14x1のCPU22は、図16のγcの復元・送信処理を実行する。即ち、ステップ102(図16も参照)で、Wc’(xj)をk個集め、ステップ104(図16も参照)で、γcを復元し、ステップ106(図16も参照)で、γcを他のサ-バに送信する。上記例では、γcをサーバ14x2~14x4に送信する。その様子を図17に示す。
各サ-バ14x1~14xnのCPU22は、図18(A)の乗算処理を実行する。即ち、ステップ108で、自分がもつWab’(xj)にγcをかけてWabc’(xj)を生成する。
Wabc’(xj)=αβγc(ab+ab0,1xi+・・・+ab0,k-1xi k-1)
n=4、k=3の場合、第1のサーバ14x1~第4のサーバ14x4におけるWabc’(x1)~Wabc’(x4)は、図18(B)に示す通りである。
Wabc’(xj)=αβγc(ab+ab0,1xi+・・・+ab0,k-1xi k-1)
n=4、k=3の場合、第1のサーバ14x1~第4のサーバ14x4におけるWabc’(x1)~Wabc’(x4)は、図18(B)に示す通りである。
[復元]
復元に参加する予め定められたサ-バj(j=1,…,k)、即ち、例えば、第1のサーバ14x1~第kのサーバ14xkの各々のCPU22は、図19のαjβjγjの復元・計算・送信処理を実行する。即ち、ステップ112で、指定されたjに応じたWaj(xi),Wbj(xi),Wcj(xi)(i=1,…,k)を集める(n=4、k=3の場合の例を示す図20も参照)。ステップ114で、1サ-バ当たりαj ,βj ,γjを1つずつ復元する。ステップ116で、積αjβjγjを計算し、ステップ118で、Wabc’(xj)とαjβjγjを復元装置16に送信する。
復元に参加する予め定められたサ-バj(j=1,…,k)、即ち、例えば、第1のサーバ14x1~第kのサーバ14xkの各々のCPU22は、図19のαjβjγjの復元・計算・送信処理を実行する。即ち、ステップ112で、指定されたjに応じたWaj(xi),Wbj(xi),Wcj(xi)(i=1,…,k)を集める(n=4、k=3の場合の例を示す図20も参照)。ステップ114で、1サ-バ当たりαj ,βj ,γjを1つずつ復元する。ステップ116で、積αjβjγjを計算し、ステップ118で、Wabc’(xj)とαjβjγjを復元装置16に送信する。
復元装置16のCPU22は、図21の乗算結果取得処理を実行する。即ち、ステップ122(図22も参照)で、k個のWabc’(xj)からαβγabcを復元し、ステップ124(図22も参照)で、αjβjγj(j=1,・・・,k)からαβγを合成し、ステップ126(図22も参照)で、αβγabcをαjβjγj(j=1,・・・,k)で割ってabcを得る。
以上より、秘匿乗算の繰り返しは秘匿乗算1の[乗算]の繰り返しを基本として、少しの変形で実現できることがわかる。また、秘匿乗算1の[乗算]処理で得られるWab’(xi)は乱数がかかったままであるので、復元が行われるまで途中結果が漏洩することはない。
以上から、本実施例は秘匿乗算及びその繰り返しに対して有効であることが言える。
また、実数を対象とする場合、小数点位置に対しても秘密分散を行い、小数点をずらす処理を秘匿計算として実行することができる。例えば、全ての小数点位置が小数点第二位である場合は、前述のように加減算では小数点位置が変わらず、乗除算の場合のみ小数点位置が変化する。しかし、この小数点位置の変化は加減算によって演算できるので、秘密分散した小数点位置を秘匿加算すればよい。すなわち、小数点第二位までの数Aと小数点第三位までの数Bをかけると小数点第五位の数となるが、Aの小数点位置を表すa=2、とBの小数点位置を表すb=3を秘密分散して秘匿加算すれば、その和を表す5の分散値が得られることは明らかである。
よって、実数対応の秘匿乗算を以下に示す。処理の流れは秘匿乗算1とほぼ同様であるが、実数対応の詳細を理解するために、以下の秘匿乗算3を示す。ただし、実数を対象とする場合、秘密情報や乱数は以下のような実数とし、秘密分散部分以外の演算は全てqなどを法とせず、実数演算で行われる。すなわち、[分散]におけるa,b,乱数αi,βi(i=1,・・,k)及びαを整数化すれば素数p以下となる実数(αi,βiはpでなくてもよいがここでは小数点位置を含めてp以下とする)とし、αa及びβbを整数化すれば素数q以下となる実数とする。よって、[分散]における秘密分散であるαiとβiの分散はpを法として整数化して分散し、αaとβbの分散はqを法として整数化して秘密分散する。この場合、[復元]でαiとβiの復元処理はpを法として行い、αaとβbの復元処理はqを法として行うが、復元した後のαi,βi,α,βに関連する演算はqを法とせず、実数として演算する。この場合、αaに加えてβbも復元し、その後実数演算する。
追加される処理としては、[分散]において小数点位置を示す値を秘密分散することと、[乗算]において上記のように秘匿加算して新たな小数点位置を計算することである。
秘匿乗算3(実数対応)
[分散]
秘密情報a(実数)をもつ第1のディーラ装置12AのCPU22は、図23に示す分散処理を実行する。即ち、第1のディーラ装置12AのCPU22は、ステップ101で、k個の乱数αiを実数として生成し、その積α=α1・α2・・・αkを実数計算する。乱数αiは、定められた小数点位置をもつ実数として表されるとする。
[分散]
秘密情報a(実数)をもつ第1のディーラ装置12AのCPU22は、図23に示す分散処理を実行する。即ち、第1のディーラ装置12AのCPU22は、ステップ101で、k個の乱数αiを実数として生成し、その積α=α1・α2・・・αkを実数計算する。乱数αiは、定められた小数点位置をもつ実数として表されるとする。
第1のディーラ装置12AのCPU22は、ステップ103で、以下の分散値を計算する。ただし、aとαi(i=1,・・・,k)とαを、整数表現すればp以下の整数で表せる定められた小数点位置をもつ実数とする。α=α1・α2・・・αkの計算は丸め方により値がずれるが、ここでは簡単のため、αはα1・α2・・・αkを計算した後、小数点位置を調整するとする。すなわち、例えば全パラメータが小数点2位の実数とすると、αは小数点位置が2kとなるが、小数点位置を調整して小数点3位を切り捨てまたは四捨五入して小数点2位の値とし、かつ整数表現すればp以下の整数となる。また、αaを整数表現すればq以下の整数で表せる定められた小数点位置をもつ実数(ここでは小数点2位とする)として、αaを整数表現し、素数qを法として以下の分散値を計算する。また、αi(i=1,…,k)もp以下の整数の形にし、pを法として以下を計算する。さらに、αiの小数点位置を表す値d1(p以下の整数)とαaの小数点位置を表す値d3もここではpを法として秘密分散する。
Wa’(xi)=α(a+a0,1xi+・・・+a0,k-1xi k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
Wd1(xi)=d1+d1,1xi+・・・+d1,k-1xi k-1
Wd3(xi)=d3+d3,1xi+・・・+d3,k-1xi k-1
ただし、ah,j及びd1,j、d3,j(h=0,・・・,k、j=1,・・・,k-1)は乱数(整数),xiはサ-バID(i=1,…,n)
Wa’(xi)=α(a+a0,1xi+・・・+a0,k-1xi k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
Wd1(xi)=d1+d1,1xi+・・・+d1,k-1xi k-1
Wd3(xi)=d3+d3,1xi+・・・+d3,k-1xi k-1
ただし、ah,j及びd1,j、d3,j(h=0,・・・,k、j=1,・・・,k-1)は乱数(整数),xiはサ-バID(i=1,…,n)
ステップ105で、第1のサ-バ14x1~第nのサ-バ14xnに送信する。
秘密情報b(実数)をもつオ-ナBの第2のディーラ装置12BのCPU22は、図24に示す分散処理を実行する。即ち、ステップ111で、k個の乱数βiを実数として生成し、その積β=β1・β2・・・βkを実数計算する。βiは、定められた小数点位置をもつ実数として表されるとする。
ステップ113で、以下の分散値を計算する。この場合、bとβiとβを、整数表現すればp以下の整数で表せる定められた小数点位置をもつ実数とし、βbを整数表現すればq以下の整数で表せる定められた小数点位置をもつ実数として、βbを整数表現し、素数qを法として以下の分散値を計算する。また、βi(i=1,…,k)もp以下の整数の形にし、pを法として以下を計算する。さらに、βiの小数点位置を表す値d2(p以下の整数)とβbaの小数点位置を表す値d4もpを法として秘密分散する。
Wb’(xi)=β(b+b0,1xi+・・・+b0,k-1xi k-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xi k-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xi k-1
Wd2(xi)=d2+d2,1xi+・・・+d2,k-1xi k-1
Wd4(xi)=d4+d4,1xi+・・・+d4,k-1xi k-1
ただし、bh,j及びd2,j、d4,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)
Wb’(xi)=β(b+b0,1xi+・・・+b0,k-1xi k-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xi k-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xi k-1
Wd2(xi)=d2+d2,1xi+・・・+d2,k-1xi k-1
Wd4(xi)=d4+d4,1xi+・・・+d4,k-1xi k-1
ただし、bh,j及びd2,j、d4,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)
ステップ115で、第1のサ-バ14x1~第nのサ-バ14xnに送信する。
[復元]
復元に参加するサーバ、例えば、予め定められた第1のサ-バ14x1~第kのサ-バ14xkの各CPU22は、図25に示すαjβjの復元・送信処理を実行する。即ち、ステップ121で、指定されたjに応じたWaj(xj)とWbj(xj)を、jに対応するサーバから集め、ステップ123で、αjとβjを素数pを法として1つずつ復元する。ステップ125で、実数化したαjとβjを用いてαjβjを実数演算し、ステップ127で、計算したαjβjを復元装置16に送信する。
復元に参加するサーバ、例えば、予め定められた第1のサ-バ14x1~第kのサ-バ14xkの各CPU22は、図25に示すαjβjの復元・送信処理を実行する。即ち、ステップ121で、指定されたjに応じたWaj(xj)とWbj(xj)を、jに対応するサーバから集め、ステップ123で、αjとβjを素数pを法として1つずつ復元する。ステップ125で、実数化したαjとβjを用いてαjβjを実数演算し、ステップ127で、計算したαjβjを復元装置16に送信する。
復元装置16のCPU22は、図26に示す復元処理を実行する。即ち、ステップ131で、αjβj(j=1,…,k)を受信し、ステップ133で、αjβjを実数演算で掛けてαβを計算する。このとき必要があれば、以下の処理を行う。
各サーバはWd1(xi)+Wd3(xi)を計算して、復元装置に送る。
復元装置はWd1(xi)+Wd3(xi)を復元して、それをk倍した値からαβの小数点位置を知り、αβの小数点位置を調整する。
復元装置はWd1(xi)+Wd3(xi)を復元して、それをk倍した値からαβの小数点位置を知り、αβの小数点位置を調整する。
第1のサ-バx1のCPU22は、図27に示すαβabの送信処理を実行する。即ち、ステップ141で、各サーバから対応するWa’(xi)をk個集め、ステップ143で、αaを素数qを法として復元する。ステップ145で、各サーバから対応するWb’(xi)をk個集め、ステップ147で、βbを素数qを法として復元する。ステップ149で、実数としてαβabを計算し、ステップ151で、αβabを復元装置16に送信する。このとき必要があれば、以下の処理を行う。
各サーバはWd2(xi)+Wd4(xi)を計算して、復元装置に送る。
復元装置はWd2(xi)+Wd4(xi)を復元して、その値からαβabの小数点位置を知り、αβabの小数点位置を調整する。
復元装置はWd2(xi)+Wd4(xi)を復元して、その値からαβabの小数点位置を知り、αβabの小数点位置を調整する。
復元装置16は、図26のステップ135で、αβabを受信し、ステップ137で、αβで割ってabを得る。
上記の特徴はaとαを整数表現すればp以下の実数、αaを整数表現すればq以下の実数としたことであるである。例えばp=11、q=127として、αとaを整数とした場合、αa=21であればαとaは7と3の組合せに限定される。しかし、αとaを小数点1位の実数、αaを小数点0位の実数とすればαa=21であっても、(α,a)は(7,3)以外に(7.1,2.9),(6.9,3.0),・・・,(1.1,19.1),・・・,(30.0,0.7),・・・など種々の組合せが存在し、特定不能になる。よって、αとaを整数とする場合、乱数αをq以下の整数とすることによってαとaの組み合わせの限定を防ぐが、αとaが実数であれば、αとaをp以下とし、αaをq以下とすることにより、秘密分散と実数演算を両立させる。よって、αaやβbを公開しても安全であるといえる。この特徴は請求項15に示される。
また、上記では小数点位置を表す値も秘密分散し、演算結果の小数点位置を調整したが、例えば小数点位置がある値に固定されている場合、小数点位置を表す分散値及び秘匿演算は省略できる。例えば、全てのパラメータは小数点第2位の実数と定められていれば、上記アルゴリズムではαβの小数点位置は2kであり、αβabの小数点位置は4であることは明らかである。
また、上記では小数点位置を表す値も秘密分散し、演算結果の小数点位置を調整したが、例えば小数点位置がある値に固定されている場合、小数点位置を表す分散値及び秘匿演算は省略できる。例えば、全てのパラメータは小数点第2位の実数と定められていれば、上記アルゴリズムではαβの小数点位置は2kであり、αβabの小数点位置は4であることは明らかである。
秘匿乗算は整数または実数に関わらず、秘匿乗算1によって実現できる。ただし、秘匿除算は第2の実施の形態で述べるように、秘匿乗算1を除算対応にするだけ(秘匿除算1)では実現できない。よって、秘匿乗算3は秘匿乗算と秘匿除算を同形態にする(秘匿除算3に対応させる)ためのものである。その特徴は第2の実施の形態において述べる。
以上は、以降の実施の形態についても同様である。
以上は、以降の実施の形態についても同様である。
<第2の実施の形態>
次に、秘匿除算を行う場合を説明する。ここでは第2のディーラ装置12Bが持つ秘密情報bを第1のディーラ装置12Aが持つ秘密情報aで割る、即ちb/aを計算する場合を考える。
(秘匿除算1(基本形))
まず、秘匿除算1(基本形)について説明する。秘匿除算1(基本形)は、分散、除算、及び復元の処理により実行される。
[分散]
秘匿除算1(基本形)の分散は、秘匿乗算1の分散処理(図3、図5)と同様であるので、その説明を省略する。
[除算]
次に、除算を説明する。あるサ-バ14xd、例えば、予め定められた第1のサ-バ14x1のCPU22は、図7に示すαaの復元・送信処理を実行する(図8も参照)。即ち、Wa’(xi)をk個集め(ステップ62)、αaを復元し(ステップ64)、αaを他のサ-バに分散する(ステップ66)。
次に、秘匿除算を行う場合を説明する。ここでは第2のディーラ装置12Bが持つ秘密情報bを第1のディーラ装置12Aが持つ秘密情報aで割る、即ちb/aを計算する場合を考える。
(秘匿除算1(基本形))
まず、秘匿除算1(基本形)について説明する。秘匿除算1(基本形)は、分散、除算、及び復元の処理により実行される。
[分散]
秘匿除算1(基本形)の分散は、秘匿乗算1の分散処理(図3、図5)と同様であるので、その説明を省略する。
[除算]
次に、除算を説明する。あるサ-バ14xd、例えば、予め定められた第1のサ-バ14x1のCPU22は、図7に示すαaの復元・送信処理を実行する(図8も参照)。即ち、Wa’(xi)をk個集め(ステップ62)、αaを復元し(ステップ64)、αaを他のサ-バに分散する(ステップ66)。
各サ-バj(j=1,…,n)、即ち、第1のサ-バ14x1~第nのサ-バ14xnの各々のCPU22は、図28(A)に示す除算処理実行する。即ち、ステップ128で、自分がもつWb’(xj)をαaで割ってWab’(xj)を生成する。
Wab’(xj)=(β/αa)(b+b0,1xj+・・・+b0,k-1xj k-1)
n=4.k=3の場合の、第1のサーバ14x1~第4のサーバ14x4におけるWab’(xj)は、図28(B)に示す通りである。
Wab’(xj)=(β/αa)(b+b0,1xj+・・・+b0,k-1xj k-1)
n=4.k=3の場合の、第1のサーバ14x1~第4のサーバ14x4におけるWab’(xj)は、図28(B)に示す通りである。
[復元]
次に、復元を説明する。
復元に参加するサ-バj(j=1,…,k)、即ち、例えば、第1のサーバ14x1~第kのサーバ14xkの各CPU22は、図29のβj/αjの復元・計算・送信処理を実行する。即ち、ステップ132(図30も参照)で、予め指定されたjに応じたWaj(xi)とWbj(xi)(i=1,…,k)を集め、ステップ134(図30も参照)で、1サ-バ当たりαjとβjを1つずつ復元する。
次に、復元を説明する。
復元に参加するサ-バj(j=1,…,k)、即ち、例えば、第1のサーバ14x1~第kのサーバ14xkの各CPU22は、図29のβj/αjの復元・計算・送信処理を実行する。即ち、ステップ132(図30も参照)で、予め指定されたjに応じたWaj(xi)とWbj(xi)(i=1,…,k)を集め、ステップ134(図30も参照)で、1サ-バ当たりαjとβjを1つずつ復元する。
ステップ136(図30も参照)で、商βj/αjを計算し、ステップ138(図30も参照)で、Wab’(xj)とβj/αjを復元装置16に送信する。
n=4、k=3の場合、上記処理により、復元装置16には、図30に示す各データが送信されている。
n=4、k=3の場合、上記処理により、復元装置16には、図30に示す各データが送信されている。
復元者の復元装置16のCPU22は、図31の除算結果取得処理を実行する。即ち、ステップ142(図32も参照)で、k個のWab’(xj)からβb/αaを復元し、ステップ144(図32も参照)で、βj/αj(j=1,…,k)からβ/αを合成する。ステップ146(図32も参照)で、βb/αaをβ/αで割ってb/aを得る。
以上より、秘匿除算も秘匿乗算と非常に似た処理で実現できることがわかる。よって、分散は請求項1で表現される。請求項2も同一であるが、具体的には「前記復元した第1の部分乱数と第2の部分乱数を合成する」仕方が異なる。すなわち、秘匿乗算ではαjとβjからαjβjを合成するが、秘匿除算ではβj/αjを合成する。請求項3も同一であるが、具体的な行う所定の演算が異なる。請求項4も同一であるが、具体的には合成する乱数が異なる。
ただし、上記において各サーバはステップ136においてβj/αjを計算し、ステップ138で復元装置に送ったが、ステップ136でαj/βjを計算し、ステップ138でそれを復元装置に送り、復元装置はステップ144でαj/βjからα/βを合成し、ステップ146でβb/αaにα/βをかけてb/aを得るようにすることもできる。
(秘匿除算2(繰り返し))
次に、秘匿除算2(繰り返し)を説明する。秘匿除算2(繰り返し)では、秘密情報cによる秘匿除算を連続させる。この場合、第1の実施の形態の秘匿乗算2の[乗算]と[復元]において、以下の変更を行うことにより実行できる。
次に、秘匿除算2(繰り返し)を説明する。秘匿除算2(繰り返し)では、秘密情報cによる秘匿除算を連続させる。この場合、第1の実施の形態の秘匿乗算2の[乗算]と[復元]において、以下の変更を行うことにより実行できる。
[分散]
秘匿除算2(繰り返し)における分散は、秘匿乗算2の分散処理(図3、図5、図14)と同様であるので、その説明を省略する。
[除算]
各サ-バ14x1~14xnのCPU22(A)は、前述した図23(A)に示す除算処理を実行して、Wab’(xi)(図23(B))を計算する。
秘匿除算2(繰り返し)における分散は、秘匿乗算2の分散処理(図3、図5、図14)と同様であるので、その説明を省略する。
[除算]
各サ-バ14x1~14xnのCPU22(A)は、前述した図23(A)に示す除算処理を実行して、Wab’(xi)(図23(B))を計算する。
また、あるサ-バ、例えば、第1のサ-バ14x1のCPU22は、前述した図16に示すγcの復元・分散処理を実行する。即ち、Wc’(xj)をk個集め(ステップ102)、γcを復元し(ステップ104)、γcを他のサ-バに送信する(ステップ106)(図17も参照)。
サ-バj(j=1,…,n)、即ち、例えば、第1のサ-バ14x1~第nのサ-バ14xnの各CPU22は、図33(A)の除算処理を実行する。即ち、ステップ148で、γcで自分がもつWab’(xj)を割ってWabc’(xj)を生成する
Wabc’(xj)=(β/αaγc)(b+b0,1xi+・・・+b0,k-1xi k-1)
n=4、k=3の場合の、第1のサーバ14x1~第4のサーバ14x4のWabc’(x1)~Wabc’(x4)は、図33(B)に示す通りである。
Wabc’(xj)=(β/αaγc)(b+b0,1xi+・・・+b0,k-1xi k-1)
n=4、k=3の場合の、第1のサーバ14x1~第4のサーバ14x4のWabc’(x1)~Wabc’(x4)は、図33(B)に示す通りである。
[復元]
復元に参加するサーバ、例えば、予め定められたサ-バ14x1~14xkの各CPU22は、図34のαjβjの復元・計算・送信処理を実行する。即ち、ステップ152(図35も参照)で、指定されたjに応じたWaj(xi),Wbj(xi),Wcj(xi)を集め(i=1,…,k)、ステップ154(図35も参照)で、1サ-バ当たりαj ,βj,γjを1つずつ復元する。
復元に参加するサーバ、例えば、予め定められたサ-バ14x1~14xkの各CPU22は、図34のαjβjの復元・計算・送信処理を実行する。即ち、ステップ152(図35も参照)で、指定されたjに応じたWaj(xi),Wbj(xi),Wcj(xi)を集め(i=1,…,k)、ステップ154(図35も参照)で、1サ-バ当たりαj ,βj,γjを1つずつ復元する。
ステップ156(図35も参照)で、βj/αjγjを計算し、ステップ158で、Wabc’(xj)とβj/αjγjを復元装置16に送信する。
以上の処理により、復元装置16は、図35に示す各データが送信されている。
復元装置16のCPU22は、図36の乗算結果取得処理を実行する。即ち、ステップ162(図37も参照)で、k個のWabc’(xj)から(β/αγ)(b/ac)を復元し、ステップ164(図37も参照)で、β/αγを合成し、ステップ166(図37も参照)で、(β/αγ)(b/ac)をβ/αγで割ってb/acを得る。
秘匿除算と乗算を組み合わせた連続の場合も同様の拡張が可能であることは明らかである。
秘匿除算と乗算を組み合わせた連続の場合も同様の拡張が可能であることは明らかである。
(秘匿除算3(実数対応))
次に、パラメ-タが実数の場合の秘匿除算を説明する。加減算や乗算は上述したように、実数を整数表現し、素数pまたはqに対応してパラメータを設定することで対応可能である。
次に、パラメ-タが実数の場合の秘匿除算を説明する。加減算や乗算は上述したように、実数を整数表現し、素数pまたはqに対応してパラメータを設定することで対応可能である。
上記秘匿除算1においてはb/aが必ず割り切れる場合前記と同様で問題はない。しかし、b/aが割り切れない場合、実数対応にしなければ秘匿除算1では対応できない(素数qを法とする場合、必ず割り切れるため、実際の商と値が異なる)。よって、以下のようにする。秘匿乗算3で説明したように、a,b及びα,βも実数とし、その整数化した値が素数p以下となるようにする。以下では小数点位置は固定として小数点位置に関する処理を省略する。
[分散]
秘密情報a(実数)をもつ第1のディーラ装置12AのCPU22は、図3に示す分散処理を実行する。即ち、第1のディーラ装置12AのCPU22は、k個の乱数αiを実数として生成し、その積α=α1・α2・・・αkを実数計算する(ステップ42)。乱数αiは、定められた小数点位置をもつ実数として表されるとする。
秘密情報a(実数)をもつ第1のディーラ装置12AのCPU22は、図3に示す分散処理を実行する。即ち、第1のディーラ装置12AのCPU22は、k個の乱数αiを実数として生成し、その積α=α1・α2・・・αkを実数計算する(ステップ42)。乱数αiは、定められた小数点位置をもつ実数として表されるとする。
第1のディーラ装置12AのCPU22は、図3のステップ44で、以下の分散値を計算する。この場合、aとαを、整数表現すればp以下の整数で表せる定められた小数点位置をもつ実数とし、αaを実数計算した後αaを整数表現し、素数qを法として以下の分散値を計算する。また、αi(i=1,…,k)もp以下の整数の形にし、pを法として以下を計算する。
Wa’(xi)=α(a+a0,1xi+・・・+a0,k-1xi k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
ただし、ah,j(h=0,・・・,k、j=1,・・・,k-1)は乱数(整数),xiはサ-バID(i=1,…,n)
Wa’(xi)=α(a+a0,1xi+・・・+a0,k-1xi k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
ただし、ah,j(h=0,・・・,k、j=1,・・・,k-1)は乱数(整数),xiはサ-バID(i=1,…,n)
図3のステップ46で、第1のサ-バ14x1~第nのサ-バ14xnに送信する。
秘密情報b(実数)をもつオ-ナBの第2のディーラ装置12BのCPU22は、図5のステップ52で、k個の乱数βiを実数として生成し、その積β=β1・β2・・・βkを実数計算する。βiは、定められた小数点位置をもつ実数として表されるとする。
ステップ54で、以下の分散値を計算する。この場合、bとβを、整数表現すればp以下の整数で表せる定められた小数点位置をもつ実数とし、βbを実数計算した後、βbを整数表現し、素数qを法として以下の分散値を計算する。また、βi(i=1,…,k)もp以下の整数の形にし、pを法として以下を計算する。
Wb’(xi)=β(b+b0,1xi+・・・+b0,k-1xi k-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xi k-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xi k-1
ただし、bh,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)
ステップ56で、第1のサ-バ14x1~第nのサ-バ14xnに送信する。
ステップ54で、以下の分散値を計算する。この場合、bとβを、整数表現すればp以下の整数で表せる定められた小数点位置をもつ実数とし、βbを実数計算した後、βbを整数表現し、素数qを法として以下の分散値を計算する。また、βi(i=1,…,k)もp以下の整数の形にし、pを法として以下を計算する。
Wb’(xi)=β(b+b0,1xi+・・・+b0,k-1xi k-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xi k-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xi k-1
ただし、bh,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)
ステップ56で、第1のサ-バ14x1~第nのサ-バ14xnに送信する。
[復元]
復元に参加するサーバ、例えば、予め定められた第1のサ-バ14x1~第kのサ-バ14xkの各CPU22は、図38のβj/αjの復元・送信処理を実行する。即ち、ステップ172(図39も参照)で、指定されたjに応じたWaj(xj)とWbj(xj)を集め、ステップ174(図39も参照)で、αjとβjを素数qを法として1つずつ復元する。ステップ176(図39も参照)で、実数化したαjとβjを用いてβj/αjを素数qを実数演算し、ステップ178(図39も参照)で、計算したβj/αjを復元装置16に送信する。
復元に参加するサーバ、例えば、予め定められた第1のサ-バ14x1~第kのサ-バ14xkの各CPU22は、図38のβj/αjの復元・送信処理を実行する。即ち、ステップ172(図39も参照)で、指定されたjに応じたWaj(xj)とWbj(xj)を集め、ステップ174(図39も参照)で、αjとβjを素数qを法として1つずつ復元する。ステップ176(図39も参照)で、実数化したαjとβjを用いてβj/αjを素数qを実数演算し、ステップ178(図39も参照)で、計算したβj/αjを復元装置16に送信する。
復元装置16のCPU22は、図40のβ/αの計算・送信処理を実行する。即ち、ステップ182で、βj/αj(j=1,…,k)を、実数演算で掛けてβ/αを計算する。
第1のサ-バx1のCPU22は、図41(A)のステップ192(図41(B)も参照)で、Wa’(xi)をk個集め、αaを素数qを法として復元する。ステップ94で、Wb’(xi)をk個集めβbを素数qを法として復元する。ステップ196で、実数としてβb/αaを計算し、ステップ198で、βb/αaを復元装置16に送信する。
復元装置16は、図40のステップ186で、βb/αaを受信し、ステップ188で、βb/αaをβ/αで割ってb/aを得る。
秘匿除算3(実数対応)の特徴は、以下の通りである。秘匿乗算1や秘匿除算1では秘密情報a(p以下の整数)に作用させる乱数αは法演算を行うq(p2より大きな素数)以下の整数であり、その乗算結果はqで法演算されるため秘匿化秘密情報であるαaは実際の値と異なる。しかしこれによって、秘匿化秘密情報αaは乱数化され安全になる。その後、乗算ではαβabが計算されるが、この値も実際の値と異なる。乱数の削除時にはαβabをαjβjで割っていくが、αjβjの値も法演算されるため実際の値と異なる。しかし、αβabをαjβjで割る演算もqを法として行われるため、正しくαβが除去されその結果であるabは正しく復元される。よって、qを法とする演算上でなければ上記秘匿乗算及び秘匿除算は正しく実行されない。よって、秘匿乗算1及び秘匿除算1では最後までqを法とする演算が行われる。しかし除算の場合、前述したようにqを法とする除算b/aはbに1/aをかける演算となるが、1/aが実際の値と異なるため、bがaの倍数の場合しか正しい実数上のb/aとならない。また、分散値を復元したαaとβbを用いて直接βb/αaを計算しても、復元されるβbとαaは実際の値と異なるため、正しいb/aとならない。ここで、乱数αをaと同じp以下の値とするとαaは必ずq以下の値となるため、実際の値となる。しかし、この場合素因数分解するとαaを構成するαとaが絞られ安全ではない。よって一般に、p以下の2つの値の合成値より大きなqを法として秘密分散することはない(通常はどちらかまたは両方がq以下の整数)。そこで、実数演算と組み合わせることにより、αとaを絞れないようにしている。この特徴は、請求項15に示される。
秘匿乗算3は秘匿除算3が行われる際、同じ分散値を用いて乗算にも対応できるようにしたものである。
秘匿乗算3は秘匿除算3が行われる際、同じ分散値を用いて乗算にも対応できるようにしたものである。
また、実数化されたcとの乗算を連続させる場合は、次のようにする。即ち、[復元]の図38のステップ172と174との間に、Wch(xi)からγjを復元する処理を加え、図38のステップ176、ステップ178では、βj/αjγjを計算かつ送信する。図40のステップ182、ステップ184では、復元装置16のCPU22はβ/αγを計算してサ-バxdに送信し、図41のステップ194とステップ196との間に、Wc’(xi)からγcを復元する処理を追加し、図41のステップ196で、第1のサ-バ14x1のCPU22は、αaとβbとγcを実数としてβb/(αaγc)を計算し、復元装置16に送信する。端末装置16のCPU22は、図40のステップ188で、復元装置16はβb/(αaγc)をβ/αγで割ってb/acを得る。ただし、c及びそれに関連する値もa,bと同様の実数として、整数化して分散されているとする。さらに、秘匿除算2も実数の連続除算も同様に可能であることは明らかである。
以上より、秘匿除算も秘匿乗算と同様の処理で基本演算及び繰り返し演算が行え、実数に対しても全て対応できることがわかる。
上記において、[復元]におけるサ-バxdは秘密情報a,b及び演算結果b/aに関する情報は得られないので、どのサ-バがなってもよい。
上記において、[復元]におけるサ-バxdは秘密情報a,b及び演算結果b/aに関する情報は得られないので、どのサ-バがなってもよい。
<第3の実施の形態>
次に、演算の連続の例として乗算と加算を連続させる積和演算ab+cについて示す。演算の基本は四則演算であり、加算と減算は代替可能で、第1の実施の形態及び第2の実施の形態より乗算と除算は容易に代替可能であるので、積和演算ができれば全ての演算の組合せに対応できることが言える。a=de+fとすれば(de+f)b+cとなり、f=0とすればdeb+cとなる。また、c=de+fとすればab+de+fとなり、種々の演算が可能である。ここでは、第1のディーラ装置12Aが持つ秘密情報aと第2のディーラ装置12Bが持つ秘密情報bと第3のディーラ装置12Cが持つ秘密情報cを用いてab+cを計算する場合を考える。ただし、今回は[積和]において復元装置16が秘匿演算に協力するが、復元装置16は第2の実施の形態の第1のサ-バ14x1のように秘密情報や途中結果について何の情報も得られない。
次に、演算の連続の例として乗算と加算を連続させる積和演算ab+cについて示す。演算の基本は四則演算であり、加算と減算は代替可能で、第1の実施の形態及び第2の実施の形態より乗算と除算は容易に代替可能であるので、積和演算ができれば全ての演算の組合せに対応できることが言える。a=de+fとすれば(de+f)b+cとなり、f=0とすればdeb+cとなる。また、c=de+fとすればab+de+fとなり、種々の演算が可能である。ここでは、第1のディーラ装置12Aが持つ秘密情報aと第2のディーラ装置12Bが持つ秘密情報bと第3のディーラ装置12Cが持つ秘密情報cを用いてab+cを計算する場合を考える。ただし、今回は[積和]において復元装置16が秘匿演算に協力するが、復元装置16は第2の実施の形態の第1のサ-バ14x1のように秘密情報や途中結果について何の情報も得られない。
(秘匿積和1(基本形))
まず、秘匿積和1(基本形)について説明する。秘匿積和1(基本形)は、分散、積和、及び復元により実行される。
[分散]
オ-ナA,B,Cのそれぞれは第1のディーラ装置12A~第3のディーラ装置12Cを用いて、秘密情報a,b,cに対して独立に以下の分散値を計算し、n台のサ-バに分散保管する(i=1,…,n)(図3、図5、図14)。
Wa’(xi)=α(a+a0,1xi+・・・+a0,k-1xi k-1)
Wb’(xi)=β(b+b0,1xi+・・・+b0,k-1xi k-1)
Wc’(xi)=γ(c+c0,1xi+・・・+c0,k-1xi k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xi k-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xi k-1
Wc1(xi)=γ1+c1,1xi+・・・+c1,k-1xi k-1
:
Wck(xi)=γk+ck,1xi+・・・+ck,k-1xi k-1
まず、秘匿積和1(基本形)について説明する。秘匿積和1(基本形)は、分散、積和、及び復元により実行される。
[分散]
オ-ナA,B,Cのそれぞれは第1のディーラ装置12A~第3のディーラ装置12Cを用いて、秘密情報a,b,cに対して独立に以下の分散値を計算し、n台のサ-バに分散保管する(i=1,…,n)(図3、図5、図14)。
Wa’(xi)=α(a+a0,1xi+・・・+a0,k-1xi k-1)
Wb’(xi)=β(b+b0,1xi+・・・+b0,k-1xi k-1)
Wc’(xi)=γ(c+c0,1xi+・・・+c0,k-1xi k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xi k-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xi k-1
Wc1(xi)=γ1+c1,1xi+・・・+c1,k-1xi k-1
:
Wck(xi)=γk+ck,1xi+・・・+ck,k-1xi k-1
[積和]及び[復元]
例えば、第1のサ-バ14x1は、図7のαaの復元・分散処理を実行する。第1のサ-バ14x1~第kのサ-バ14xkは、図9(A)の乗算処理を実行する。よって、第1のサ-バ14x1~第kのサ-バ14xkは以下のWab’(xj)を得る(図9(B)参照)。
Wab’(xj)=αβa(b+ab0,1xi+・・・+ab0,k-1xi k-1)
例えば、第1のサ-バ14x1は、図7のαaの復元・分散処理を実行する。第1のサ-バ14x1~第kのサ-バ14xkは、図9(A)の乗算処理を実行する。よって、第1のサ-バ14x1~第kのサ-バ14xkは以下のWab’(xj)を得る(図9(B)参照)。
Wab’(xj)=αβa(b+ab0,1xi+・・・+ab0,k-1xi k-1)
第1のサ-バ14x1~第kのサ-バ14xkのCPU22は、図42の積和処理を実行する。即ち、ステップ200で、指定されたjに応じたWaj(xi),Wbj(xi),Wcj(xi)(i=1,…,k)を集め、ステップ202で、αj,βj,γjを1つずつ復元する。
ステップ204で、乱数μjを生成し、αjβj/μjとγj/μjを計算し、ステップ206で、αjβj/μjとγj/μjを復元装置16に送信する。
復元装置16のCPU22は、図43の復元処理を実行する。即ち、ステップ222で、αjβj/μjとγj/μjを受信し、ステップ224で、αjβj/μjとγj/μjをかけてαβ/μとγ/μを計算し、ステップ226で、αβ/μとγ/μを各サ-バ、即ち、第1のサ-バ14x1~第kのサ-バ14xkに送信する。
第1のサ-バ14x1~第kのサ-バ14xkのCPU22は、図42のステップ208で、αβ/μとγ/μを受信し、ステップ210で、Wab’(xj)をαβ/μで、Wc’(xj)をγ/μで割り、Wab’(xj)=μ(ab+ab0,1xj+・・・+ab0,k-1xj^k-1)とWc’(xj)=μ(c+c0,1xi+・・・+c0,k-1xi
k-1)を計算する。
ステップ212で、Wabc’(xj)=Wab’(xj)+Wc’(xj)=μ{(ab+c)+abc0,1xi+・・・+abc0,k-1xi
k-1}を計算し、ステップ214で、Wabc’(xj)を復元装置16に送信し、ステップ216で、μjを復元装置16に送信する。
復元装置16のCPU22は、図43のステップ228で、第1のサ-バ14x1~第kのサ-バ14xkから、Wabc’(xj)を受信し、ステップ230で、μ(ab+c)を復元する。
ステップ232で、第1のサ-バ14x1~第kのサ-バ14xkから、μjを受信し、ステップ234で、μ=μ1・μ2…μkを合成し、ステップ236で、μ(ab+c)をμで割って、(ab+c)を得る。
また、ここでは新たな乱数μjを用いたが、μjを生成せず図42のステップ204においてαjβj/γjを計算して205においてそれを送信し、復元装置16は図43のステップ222においてそれを受信し、224においてαβ/γを合成して226で各サーバにその値を戻し、図42のステップ208でそれを受信し、210でWab’(xi)をαβ/γで割る、またはWc(xi)にαβ/γをかけることにより、2つの分散値に係る乱数をμではなくαβまたはγに合わせることができる。
上記[積和]の図7のαβの復元・分散処理及び図9の乗算処理を実行せずに、以降bに関連する処理を省略すればa+cの和が計算できることがわかる。また、[積和]の図42の積和処理でcに関連する処理を行わなければabの積が計算できる。さらに、[積和]の図42のステップ212で得られたWabc’(xj)をWa’(xi)として処理を繰り返せば、(ab+c)b+cの秘匿演算が、Wabc’(xj)をWc’(xi)として処理を繰り返せばab+ab+cの秘匿演算が実現できることがわかる。
また、2回目の処理においてWabc’(xj)をWa’(xi)、Wb’(xj)をWd’(xi)、Wc’(xj)をWe’(xi)とすれば(ab+c)d+eが得られ、種々の演算が実現できることがわかる。さらに、秘匿積和1においてa,cに関する処理を省略すると、Wb’(xi)にかかる乱数βをμに変更することができる。
μjは使い捨てにすることもできるが、サ-バjがμjを秘密分散して全サ-バでその分散値を保存すれば、必要なときに使うこともできる。また、パラメ-タが実数であっても今までの実施例から演算の連続に対応できることは明らかである。
上記における特徴は請求項5に示されるようにオーナA,B,Cが独立に設定したα,β,γのような乱数をαj,βj,γjを用いて、または新たにμjなどを用いて変換し、次の秘匿演算に便利な形に変換することである。
以上、第1の実施の形態~第3の実施の形態により秘匿計算によって四則演算が実現できることが示された。
<第4の実施の形態>
第1の実施の形態に示した秘匿乗算は秘密情報に乱数をかけることにより秘匿化して、それを一旦復元することにより閾値kを変えない秘匿演算を可能にしている。第1の実施の形態の問題点は、秘密情報が0である場合、秘匿化秘密情報を一旦復元すれば、その値が0となるので秘密情報が0であることがわかる点である(秘匿化に用いられる乱数は0以外のため)。
ただし、第2の実施の形態に示す秘匿除算の場合は一旦復元した秘匿化秘密情報が0の場合、除算できないことがわかるためこの性質は有効である。
第1の実施の形態に示した秘匿乗算は秘密情報に乱数をかけることにより秘匿化して、それを一旦復元することにより閾値kを変えない秘匿演算を可能にしている。第1の実施の形態の問題点は、秘密情報が0である場合、秘匿化秘密情報を一旦復元すれば、その値が0となるので秘密情報が0であることがわかる点である(秘匿化に用いられる乱数は0以外のため)。
ただし、第2の実施の形態に示す秘匿除算の場合は一旦復元した秘匿化秘密情報が0の場合、除算できないことがわかるためこの性質は有効である。
(秘匿乗算4(0対応))
以下、秘匿乗算において秘密情報に0を含む場合の手法を以下に示す。
[分散]
秘密情報aをもつオ-ナAの第1のディーラ装置12AのCPU22は、図3の分散処理を実行し、k個の乱数αiを生成し、その積α=α1・α2・・・αkを計算する(ステップ42)。
以下、秘匿乗算において秘密情報に0を含む場合の手法を以下に示す。
[分散]
秘密情報aをもつオ-ナAの第1のディーラ装置12AのCPU22は、図3の分散処理を実行し、k個の乱数αiを生成し、その積α=α1・α2・・・αkを計算する(ステップ42)。
第1のディーラ装置12AのCPU22は、以下の分散値を計算し(ステップ44)、n個のサ-バに分散する(ステップ46)。
Wa(xi)=a+a0,1xi+・・・+a0,k-1xi k-1
Wa’(xi)=α(a+a0,1(n+xi)+・・・+a0,k-1(n+xi)k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
ただし、ah,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)
Wa(xi)=a+a0,1xi+・・・+a0,k-1xi k-1
Wa’(xi)=α(a+a0,1(n+xi)+・・・+a0,k-1(n+xi)k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
ただし、ah,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)
秘密情報bをもつオ-ナBの第2のディーラ装置12BのCPU22は、図5の分散処理を実行し、k個の乱数βiを生成し、その積β=β1・β2・・・βkを計算する(ステップ52)。
第2のディーラ装置12BのCPU22は、図5の分散処理を実行し、以下の分散値を計算し(ステップ54)、n個のサ-バに分散する(ステップ56)。
Wb(xi)=b+b0,1xi+・・・+b0,k-1xi k-1
Wb’(xi)=β(b+b0,1(n+xi)+・・・+b0,k-1(n+xi)k-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xi k-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xi k-1
ただし、bh,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)
Wb(xi)=b+b0,1xi+・・・+b0,k-1xi k-1
Wb’(xi)=β(b+b0,1(n+xi)+・・・+b0,k-1(n+xi)k-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xi k-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xi k-1
ただし、bh,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)
[乗算]
第1のサ-バ14x1~第nのサ-バ14xnの各CPU22は、図44の乗算処理を実行する。即ち、ステップ242で、Wab(xi)=Wa(xi)Wb(xi)とWab’(xi)=Wa’(xi)Wb’(xi)を計算する。
[復元]
復元に参加するサーバ、例えば、予め定められた第1のサ-バ14x1~第kのサ-バ14xkの各CPU22は、図45のαjβjの復元処理を実行する。即ち、ステップ244で、指定されたjに応じたWaj(xi)とWbj(xi)を集め、ステップ246で、αjとβjを1つずつ復元する。
第1のサ-バ14x1~第nのサ-バ14xnの各CPU22は、図44の乗算処理を実行する。即ち、ステップ242で、Wab(xi)=Wa(xi)Wb(xi)とWab’(xi)=Wa’(xi)Wb’(xi)を計算する。
[復元]
復元に参加するサーバ、例えば、予め定められた第1のサ-バ14x1~第kのサ-バ14xkの各CPU22は、図45のαjβjの復元処理を実行する。即ち、ステップ244で、指定されたjに応じたWaj(xi)とWbj(xi)を集め、ステップ246で、αjとβjを1つずつ復元する。
ステップ248で、αjβjを計算し、ステップ250で、Wab(xj)とWab’(xj)とαjβjを復元装置16に送信する。
復元装置16のCPU22は、図46の復元処理を実行する。即ち、ステップ252で、Wab(xj)、Wab’(xj)、αjβjを受信し、ステップ254で、全てのαjβjをかけてαβ=α1・α2…αkβ1・β2…βkを計算し、Wab’(xj)/αβを計算する。
復元装置16のCPU22は、ステップ256で、Wab(xj)とWab’(xj)/αβから2k-1個の分散値を用いてabを復元する。
この方式は文献[2]の方式を改良し、安全にしたものである。よって、[分散]において1つのサ-バが2つの分散値Wa(xi)とWb(xi)を持ち、1つの分散値が乱数αまたはβによって秘匿化されるという点は同じである。文献[2]との違いは請求項1に示すように[分散]において各オ-ナがk個の乱数を生成し、その合成値α、βを秘密情報にかけて分散している点である。文献[2]では乱数αとβをαiやβiから合成せず、直接分散しているためαとβが直接復元者に知られる。よって、請求項1は従来法にない特徴となる。
文献[2]では復元者がαとβを知った後で、k/2台のサ-バを盗聴すればaとbに関するk個の分散値が集められるため、秘密情報であるa,bが漏洩する。また、文献[2]ではこの復元者による攻撃に対応するために、各サ-バが乱数を生成して交換し、合成乱数を生成してそれを分散値にかけて分散値を更新することを提案しているが、この乱数は攻撃者が1台のサ-バを盗聴しているだけでその過程が全て知られるので漏洩する。よって、文献[2]の手法は安全ではない。それに対して、秘匿乗算4は請求項2に示すようにk台のサ-バが各々異なる秘密情報を1つずつ復元して、その合成値を復元者に示すため1台のサ-バが安全(盗聴不能)であれば、攻撃者はαとβを直接知ることはできないため、攻撃者は秘密情報を得ることができず安全である。よって、請求項2も従来法にない特徴となる。
(秘匿乗算5(繰り返し))
上記秘匿乗算4は分散値同士の乗算となっているため次数変化が生じている。次に、連続演算に対応するために次数変換を行う場合を考える。
[分散]
秘密情報aを第1のディーラ装置12AのCPU22は、図47に示す分散処理を実行する。即ち、ステップ262で、k個の0以外の乱数αi、ri(以降もαi、riは0以外)を生成し、その積α=α1・α2・・・αk、r=r1・r2・・・rkを計算する。
上記秘匿乗算4は分散値同士の乗算となっているため次数変化が生じている。次に、連続演算に対応するために次数変換を行う場合を考える。
[分散]
秘密情報aを第1のディーラ装置12AのCPU22は、図47に示す分散処理を実行する。即ち、ステップ262で、k個の0以外の乱数αi、ri(以降もαi、riは0以外)を生成し、その積α=α1・α2・・・αk、r=r1・r2・・・rkを計算する。
ステップ264で、以下の分散値を計算する。なお、n+xiに対する分散値はサ-バ14xiのサ-バに送られる。よって、各サ-バ14xiは、xiとn+xiに対する分散値をもつ。
Wa(xi)=r(a+a0,1xi+・・・+a0,k-1xi k-1)
Wa’(xi)=rα(a+a0,1(n+xi)+・・・+a0,k-1(n+xi)k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
Wr1(xi)=r1+ak+1,1xi+・・・+ak+1,k-1xi k-1
:
Wrk(xi)=rk+a2k,1xi+・・・+a2k,k-1xi k-1
ただし、ah,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)である。
ステップ266で、分散値を第1のサ-バ14x1~第nのサ-バ14xnに送信する。
Wa(xi)=r(a+a0,1xi+・・・+a0,k-1xi k-1)
Wa’(xi)=rα(a+a0,1(n+xi)+・・・+a0,k-1(n+xi)k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
Wr1(xi)=r1+ak+1,1xi+・・・+ak+1,k-1xi k-1
:
Wrk(xi)=rk+a2k,1xi+・・・+a2k,k-1xi k-1
ただし、ah,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)である。
ステップ266で、分散値を第1のサ-バ14x1~第nのサ-バ14xnに送信する。
秘密情報bをもつオ-ナBの第2のディーラ装置12BのCPU22は、図48の分散処理を実行する。即ち、ステップ272で、k個の0以外の乱数βi、qi(以降もβi、qiは0以外)を生成し、その積β=β1・β2・・・βk、q=q1・q2・・・qk、を計算する。
ステップ274で、以下の分散値を計算する。
Wb(xi)=q(b+b0,1xi+・・・+b0,k-1xi k-1)
Wb’(xi)=qβ(b+b0,1(n+xi)+・・・+b0,k-1(n+xi)k-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xi k-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xi k-1
Wq1(xi)=q1+bk+1,1xi+・・・+bk+1,k-1xi k-1
:
Wqk(xi)=qk+b2k,1xi+・・・+b2k,k-1xi k-1
ただし、bh,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)である。
Wb(xi)=q(b+b0,1xi+・・・+b0,k-1xi k-1)
Wb’(xi)=qβ(b+b0,1(n+xi)+・・・+b0,k-1(n+xi)k-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xi k-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xi k-1
Wq1(xi)=q1+bk+1,1xi+・・・+bk+1,k-1xi k-1
:
Wqk(xi)=qk+b2k,1xi+・・・+b2k,k-1xi k-1
ただし、bh,j(h=0,・・・,k、j=1,・・・,k-1)は乱数,xiはサ-バID(i=1,…,n)である。
ステップ276で、分散値を第1のサ-バ14x1~第nのサ-バ14xnに分散する。
[乗算]
第1のサ-バ14x1~第nのサ-バ14xnの各CPU22は、図49の乗算処理を実行する。即ち、ステップ278で、Wab(xi)=Wa(xi)Wb(xi)とWab’(xi)=Wa’(xi)Wb’(xi)を計算する(i=1,…,n)。
第1のサ-バ14x1~第nのサ-バ14xnの各CPU22は、図49の乗算処理を実行する。即ち、ステップ278で、Wab(xi)=Wa(xi)Wb(xi)とWab’(xi)=Wa’(xi)Wb’(xi)を計算する(i=1,…,n)。
[次数変換]
第1のサ-バ14x1~第kのサ-バ14xkの各CPU22は、図50の次数変換処理を実行する。即ち、ステップ282で、指定されたjに応じたWaj(xi)とWbj(xi)を集め(i=1,…,k)、ステップ284で、αjとβjを1つずつ復元し、ステップ286で、αjβjを計算し、ステップ288で、αjβjを復元装置16に送信する。
第1のサ-バ14x1~第kのサ-バ14xkの各CPU22は、図50の次数変換処理を実行する。即ち、ステップ282で、指定されたjに応じたWaj(xi)とWbj(xi)を集め(i=1,…,k)、ステップ284で、αjとβjを1つずつ復元し、ステップ286で、αjβjを計算し、ステップ288で、αjβjを復元装置16に送信する。
復元装置16のCPU22は、図51のαβの計算送信処理を実行する。即ち、ステップ322で、第1のサ-バ14x1~第nのサ-バ14xnからαjβjを受信し、ステップ324で、全てのαjβjをかけてαβを計算し、ステップ326で、αβを第1のサ-バ14x1~第nのサ-バ14xnに送信する。
第1のサ-バ14x1~第kのサ-バ14xkの各CPU22は、図50ステップ290で、αβを受信し、ステップ292で、αβでWab’(xj)を割り、Wab(xj+n)=Wab’(xj)/αβを計算する。
式(8)に示すRjを秘密に計算するために、以下を計算する。まず、ステップ294で、Wab(xj)とWab(xj+n)にaxj,jとaxj+n,jを乗算したRj,j=axj,jWab(xj)+an+xj,jWab(n+xj)と、axj,j+nとan+xj,j+nを乗算したRj,j+n=axj,j+nWab(xj)+an+xj,j+nWab(n+xj)を計算する。
ここで、Ri,jにおけるiは式(7)の縦方向の最初の位置を表し、jは横方向の位置を表す。よって、iが1からnまでの縦方向の和がRj=Σ(Rj,j+Rj,j+n)なる。
ステップ296で、乱数r1jとr2jを生成し、R’j,j=R j,j+r1jとR’j,j+n=R j,j+n+r2,jを計算し、ステップ298で、R’j,jと R’j,j+nとを予め定められた順番の次のサ-バ14x(j+1)に送信する。
ステップ300で、前のサーバ14x(j-1)から送信されたh番目(h=1,…,n-1)の2つの値、即ち、R’j-h,j-hとR’j-h,j+n-hを受信し、ステップ302で、h番目(h=1,…,n-1)の2つの値R’j-h,j-hとR’j-h,j+n-hに、R’j,j-h=axj,j-hWab(xj)+an+xj,j-hWab(n+xj)+r1jとRj+n,j-h=axj,j+n-hWab(xj)+an+xj,j+n-hWab(n+xj)+r2jを足して、R’j,jとR’j,j+nを計算し、ステップ304で、R’j,jとR’j,j+nを次の予め定められた順番のサ-バ14x(i+1)に送信する。
ステップ306で、全てのサ-バを回ってきた2つの値R’j,jとR’j,j+nを受信し、ステップ308で、R’j,jとR’j,j+nからをr1jとr2jを各々引いて、ステップ310で、R’j,jとR’j,j+nを予め定められた順番の次のサ-バ14x(i+1)に送信する。
ステップ312で、前のサ-バ14x(j-1)から送られてきた2つの値R’j-h,j-hとR’j-h,j+n-hを受信し、ステップ314で、R’j-h,j-hとR’j-h,j+n-hからr1jとr2jを各々引いて、ステップ316で、R’j-h,j-hとR’j-h,j+n-hを次のサ-バ14x(i+1)に送信する。
ステップ318で、全てのサ-バを回ってきた2つの値R’j,jとR’j,j+nを受信し、ステップ320で、R’j,jとR’j,j+nのR’j,j+nにαβをかけて、各々をRj,Rj+nとして保存する。
[復元]
第1のサ-バ14x1~第kのサ-バ14xkの各CPU22は、図52のrjgjの復元・送信処理を実行する。即ち、ステップ332で、指定されたjに応じたWrj(xi)とWqj(xi)を集め(i=1,…,k)、ステップ334で、1サ-バ当たりrjとqjを1つずつ復元する。
第1のサ-バ14x1~第kのサ-バ14xkの各CPU22は、図52のrjgjの復元・送信処理を実行する。即ち、ステップ332で、指定されたjに応じたWrj(xi)とWqj(xi)を集め(i=1,…,k)、ステップ334で、1サ-バ当たりrjとqjを1つずつ復元する。
ステップ336で、積rjqjを計算し、ステップ338で、Rjとrjqjを復元装置16に送信する。
復元装置16のCPU22は、図53のステップ342で、Rjとrjqjを受信し、ステップ344で、全てのrjqjをかけてrqを計算し、ステップ346で、Rjをrqで割ってWab(xj)=Rj/rqを計算する。
ステップ348で、Wab(xj)からk-1個を用いてabを復元する。
本発明の[分散]における特徴は、秘密情報a,bを最後まで秘匿するために、a,bに最後まで秘匿する乱数rとqをかけていることである(請求項1に含む)。これによって、Wab(xi)とWab’(n+xi)は共通の乱数rqが常に係り、[次数変換]の図51のステップ324においてαβは復元装置16で計算されて知られるが、rqは最後まで復元装置16に知られない。よって、中間結果であるRj,Rj+nを攻撃者または復元者が得ても中間結果であるabは漏洩しない。ただし、従来と同様の安全性でよい場合、すなわち復元者による中間値取得を許可する場合、r,qを用いる必要はなく、[分散]を秘匿乗算1と同様にすることができる。この場合、図50のステップ292でWab’(xj)をαβで割る代わりにWab(xj)にαβをかけることにより、r,qの代わりにα,βを用いることができる。
また、[次数変換]における第1の特徴は、1つのサ-バが形の異なる2つの分散値を持つため、[次数変換]の図50のステップ282~ステップ288、及び図51のステップ322~ステップ324において乱数変換を行い、分散値にかかる乱数を同じにしている点である(請求項5に含む)。ここではαβを削除するが、rqは常にかかっている。また、前述のように従来と同じ安全性でよい場合にはr=q=1とすることができる。この特徴は請求項6に示される。
[次数変換]の図50のステップ292において、サ-バはWab’(xi)をαβで割ったが、Wab(xi)にαβをかけて、Wab(xi)=αβWab(xi),Wab(n+xi)=Wab’(xi)としてもよい。また、[次数変換]の図50のステップ320において、各サ-バはαβをかけたが、別の乱数をかけてもよい。
また、第2の特徴は、rqは最後には復元者に知られる(rqは知られるが、rとqは個別に知られないので秘密情報aとbは漏洩しない)ので、分散値Riを保存していれば、Wab(xi)とWab’(n+xi)から乱数rqを除いた値を復元装置16に知られる可能性がある。よって、Wab(xi)とWab’(xi+n)を秘匿するために、Wab(xi)に乱数r1jを、Wab(xi+n)に乱数r2jを足しこみ、元のWab(xi)及びWab(xi+n)を分からないようにして、サ-バを回していることである。これによって、[次数変換]の図50のステップ306で得られる全てのサ-バを回ってきた値R’j,jにはΣr1jが、R’j,j+nにはΣr2jが足されているので、[次数変換]の図50のステップ312~ステップ316のサ-バ巡回でΣr1jとΣr2jを除去し、通常のRiを得ることができる。
また、加えた乱数Σr1j=0、Σr2j=0となるようにしておけば2回目のサーバ巡回は不要である。さらに、サーバ巡回させずに復元者に送信して、復元者が加算を行いその結果を各サーバに送り返すようにしてもよい。
さらに、Wab(xi)とWab’(xi+n)を秘匿するために、Wab(xi)に乱数r1jを、Wab(xi+n)に乱数r2jを足しこみ、元のWab(xi)及びWab(xi+n)を秘匿化して、それを解除するためにサ-バを回しているが、秘密情報を秘匿するための乱数r1j及びr2jを各々秘密分散して各サーバに配布し、各サーバは送られた分散値を加算して、Σr1j及びΣr2jを計算し、最終結果のR’j,jやR’j,j+nから引くことによってもr1j及びr2jを削除することができる。この特徴は請求項16に示される。
最後に、[次数変換]の図50のステップ318、320でRj(j=n+1~2n)に相当するR’j,j+nにαβをかけて、[分散]に示す形に戻している。これによって、攻撃者がk-1個のサ-バを盗聴していたとしても、2k-2個のWiしか得られず、途中結果であるa・bが漏えいすることはない。
また、今までは秘匿乗算のみ説明したが、秘匿乗算4のように分散が行われている場合、加減算はWa(xi)やWb(xi)に対してはそのまま加算すればよく、Wa’(xi)やWb’(xi)に対しては積和演算のときに説明したように分散値にかかる乱数を合わせて加算を行えばよい。また、除算は第2の実施の形態で説明したようにWa’(xi)やWb’(xi)を用いて除算を行う。この場合、Wa’(xi)を復元してαaを復元したとき、αa=0ならば0で割ることになるので除算を中止する。また、αaが0でないときWb’(xi)に対してはWb’(xi)/αaを計算した後、各サーバがαjとβjを復元してαj/βjを復元装置に送ってα/βが得られ、それをWb’(xi)/αaにかければ定数項にb/aをもつ分散値が出来上がる。そのとき、Wb(xi)もαaで割ってα/βを書ければ定数項にb/aを持ち、乱数として1/βをもつ分散値が得られる。これらの場合、復元は乱数がかかっていない分散値を用いて行えば、最終的な乱数除去は不要にすることができる。以上によって、本実施の形態によっても秘匿計算により四則演算が実現できることがわかる。
<第5の実施の形態>
まず、n台のサ-バ14x1~14xnに対して閾値kを変えずに分散値を更新する場合を示す。第1の実施の形態~第4の実施の形態に示すように秘密情報aに乱数αがかけられて分散されている場合を考える。今まで、乱数がかかった分散値の更新法は知られていない。
まず、n台のサ-バ14x1~14xnに対して閾値kを変えずに分散値を更新する場合を示す。第1の実施の形態~第4の実施の形態に示すように秘密情報aに乱数αがかけられて分散されている場合を考える。今まで、乱数がかかった分散値の更新法は知られていない。
(秘匿更新1(乱数付き分散値更新))
第1のサ-バ14x1~第kのサ-バ14xkの内から、復元処理を行うサーバ、例えば、第kのサ-バ14xkがランダムに予め1台選ばれている。
第1のサ-バ14x1~第kのサ-バ14xkの内から、復元処理を行うサーバ、例えば、第kのサ-バ14xkがランダムに予め1台選ばれている。
第kのサ-バ14xk以外のk-1台の第1のサ-バ14x1~第(k-1)のサ-バ14x(k-1)の各CPU22は、図54のUiの計算・送信処理を実行する。即ち、サーバ14xiは現在の分散値として以下のWa’(xj)をもつとする。
Wa’(xi)=α(a+a1xi+a2xi
2+・・・+ak-1xi
k-1)(i=1,・・・,k-1)
ステップ356で、以下の新たな分散値として乱数Wa’iを生成する。aj’(j=1,…,k-1)は(4)で多項式を解く事によって得られる乱数である。
Wa’i=α(a+a1’xi+a2’xi 2+・・・+ak-1’xi k-1)
Wa’i=α(a+a1’xi+a2’xi 2+・・・+ak-1’xi k-1)
ステップ358で、自分が持つ前の分散値Wa’(xi)と新たに生成したWa’iとの差Ui’を次のように計算する。
Ui’=Wa’(xi)-Wa’i=α{(a1-a1’)xi+(a2-a2’)xi 2+・・・+(ak-1-ak-1’)xi k-1}
Ui’=Wa’(xi)-Wa’i=α{(a1-a1’)xi+(a2-a2’)xi 2+・・・+(ak-1-ak-1’)xi k-1}
ステップ360で、差Ui’を第kのサ-バ14xkに送信する。
第kのサ-バ14xkは、図55のWj’の計算・送信処理を実行する。即ち、ステップ362で、差Ujを受信し、ステップ364で、k-1個の多項式を解き、α(a1-a1’),α(a2-a2’),・・・,α(ak-1-ak-1’)を求め、ステップ366で、残りのn-k台のサ-バに対する以下の差分値を求める。
Wj’=α{(a1-a1’)xj+(a2-a2’)xj2+・・・+(ak-1-ak-1’)xj k-1} (ただし、j=k,・・・,n)
Wj’=α{(a1-a1’)xj+(a2-a2’)xj2+・・・+(ak-1-ak-1’)xj k-1} (ただし、j=k,・・・,n)
ステップ368で、差分値Wj’を第(k+1)のサ-バ14x(k+1)~第nのサ-バ14xnに送信する。
第(k+1)のサ-バ14x(k+1)~第nのサ-バ14nは、図56の新たな分散値の記憶処理を実行する。即ち、ステップ370で、Wj’を受信し、ステップ372で、Wj’と前に持っていた分散値と足して新たな分散値とする。
以上の特徴は、乱数がかかった分散値に対して乱数を変えることなく、新たな乱数をそのまま新しい係数を持つ多項式からなる新たな分散値として更新できることである。この特徴は請求項10に示される。
文献[3]に示す従来法は乱数αがかかっていない通常の分散値に対する更新法であるが、それに対しても以下の違いがある。文献[3]では図56のステップ370の処理がなく、第1のサ-バ14x1~第(k-1)のサ-バ14x(k-1)は残りの第(k+1)のサ-バ14x(k+1)~第nのサ-バ14xnに差分値を送り、図55のステップ364及びステップ366の処理に対応する処理を第(k+1)のサ-バ14x(k+1)~第nのサ-バ14xnが行うことにより分散値の更新を行う。それに対して上記秘匿更新1は処理を行う第kのサ-バ14xkを1台に指定し、第kのサ-バ14xkだけが図54のステップ358及びステップ360の処理を行うため通信量と計算量が削減できるという特徴ももつ。
文献[3]はk-1台のサ-バがn-k+1台のサ-バに差分値を送るため、(k-1)(n-k+1)の通信が必要であり、n-k+1台のサ-バが図54のステップ358及びステップ360の処理に対応する処理を行うため(n-k+1)の多項式処理が必要である。それに対して、本発明は第kのサ-バ14xkのみが図54のステップ358及びステップ360の処理を行い、その結果をn-kのサ-バに送るため、ステップ360での(k-1)の通信、ステップ370で(n-k)の通信が発生し、計n+1回の通信ですむ。本発明では、計算は1つの多項式処理のみでよい。
文献[3]の手法は復元処理を行うn-k+1台のサ-バの選択法に関して何の言及もないが、n-k+1台のサ-バを固定している場合、攻撃者がn-k+1台のサ-バのうちの1つを盗聴し続ければ、更新値は常に漏洩する。その漏洩を防ぐために、復元処理を行うサ-バをランダムに選択する。攻撃者が盗聴しているサ-バを第oのサーバ14xixoとすると、他の第kのサ-バ14xkが指定されれば、その時点で攻撃者は他のサ-バの分散値を知っていたとしても、第kのサ-バ14xkによる更新によって、第oのサーバ14xi以外の新たな分散値を知ることはできない。また、ある時点で第oのサーバ14xiが第kの他のサ-バ14xkに選ばれたとしても、他のサ-バの分散値を知らないならば、その差分値が得られても新たな分散値はわからない。よって、上記方式は文献[3]に対して、汎用性を持たせ、かつ効率化と安全性向上を同時に実現している。
(秘匿更新法2(u≧k対応))
次に、n台のサ-バに対して閾値をkからu(u≧k)に増やす場合の更新法を示す。
第iのサ-バ14xiのCPU22は、図57のδiの生成送信処理を実行する。即ち、ステップ382で、u-1個の乱数di1,・・・,diu-1を生成し、ステップ384で、以下の多項式を生成する。
δi(x)=di1x+di2x2+・・・diu-1xu-1
次に、n台のサ-バに対して閾値をkからu(u≧k)に増やす場合の更新法を示す。
第iのサ-バ14xiのCPU22は、図57のδiの生成送信処理を実行する。即ち、ステップ382で、u-1個の乱数di1,・・・,diu-1を生成し、ステップ384で、以下の多項式を生成する。
δi(x)=di1x+di2x2+・・・diu-1xu-1
ステップ386で、δi(x)のxに全サ-バIDを入れた値δi(x1),δi(x2),・・・,δi(xn)を生成し、ステップ358で、δi(xj)を第jのサ-バ14xj(j=1,・・・,n)に送信する。
第jのサーバ14xj、即ち、第1のサ-バ14x1~第nのサ-バ14xnの各CPU22は、図58の更新処理を実行する。即ち、ステップ392で、δi(xi)を受信し、ステップ394で、自分がもつ閾値kに対する分散値Wa’(xi)に全ての値を足しこんで以下を計算する。
Wa’(xi)=Wa’(xi)+Σδj(xi)
=α(a+a1xi+a2xi 2+・・・+ak-1xi k-1)+Σδj(xi)
=α{a+(a1+Σdi1/α)xi+・・・+(ak-1+Σdik-1/α)xi k-1+・・・+(Σdiu-1/α)xi u-1}
ステップ396で、Wa’(xi)を新たな分散値として保存する。
Wa’(xi)=Wa’(xi)+Σδj(xi)
=α(a+a1xi+a2xi 2+・・・+ak-1xi k-1)+Σδj(xi)
=α{a+(a1+Σdi1/α)xi+・・・+(ak-1+Σdik-1/α)xi k-1+・・・+(Σdiu-1/α)xi u-1}
ステップ396で、Wa’(xi)を新たな分散値として保存する。
提案法の特徴は従来のkではなくuを対象としたu-1次多項式をたててδi(x)を構成することである。提案法は[秘匿更新法1]の図55のステップ364の、多項式処理を行わないため、処理が簡易であり、どのサ-バを盗聴していても1つのサ-バの盗聴ではそのサ-バ以外の更新値はわからないという安全性をもつ。
秘匿更新1では分散値にかかる乱数を変えずに多項式のみ変更した。以下に、分散値にかかる乱数を変更して更新する場合を考える。秘匿更新1,2では秘密情報自体は変更しないため、この更新によってサ-バが得る情報はない。しかし、分散値にかかる乱数を直接変更すると、サ-バは秘密情報が何倍されたかという情報を得る。そこで、更新者がサ-バから分散値を集めて更新するが、サ-バに秘密情報が何倍されたかわからせずに更新する手法を示す。
(秘匿更新法3(乱数変更付き分散値更新))
予め定められたサーバ、例えば、第1のサ-バ14x1のCPU22は、図59の更新処理を実行する。即ち、ステップ402で、第1のサ-バ14x1~第nのサ-バ14xnから、第1のサ-バ14x1~第nのサ-バ14xnに格納されている分散値W(xi)を集め、ステップ404で、乱数βとk-1個の乱数d1~dk-1を生成し、ステップ406で、以下を計算する。
Wa’(xi)=βWa’(xi)+δ(xi)=αβ{a+(a1+d1/β)xi+・・・+(ak-1+dk-1/β)xi k-1}
δ(x)=d1x+d2x2+・・・dk-1xk-1
予め定められたサーバ、例えば、第1のサ-バ14x1のCPU22は、図59の更新処理を実行する。即ち、ステップ402で、第1のサ-バ14x1~第nのサ-バ14xnから、第1のサ-バ14x1~第nのサ-バ14xnに格納されている分散値W(xi)を集め、ステップ404で、乱数βとk-1個の乱数d1~dk-1を生成し、ステップ406で、以下を計算する。
Wa’(xi)=βWa’(xi)+δ(xi)=αβ{a+(a1+d1/β)xi+・・・+(ak-1+dk-1/β)xi k-1}
δ(x)=d1x+d2x2+・・・dk-1xk-1
ステップ408で、Wa’(xi)を各サ-バ、即ち、第1のサ-バ14x1~第nのサ-バ14xnに送信する。第1のサ-バ14x1~第nのサ-バ14xnは、受信したWa’(xi)を新たな分散値として記憶する。
上記における特徴はW(xi)はα倍されるが、さらにδ(xi)が足されることにより、W’(xi)/W(xi)としてもαにならない、即ち何倍したかサ-バにわからないことである。δ(xi)はk-1個集まらなければ解けない乱数であるが、サ-バはαがわからないので、一体化したW’(xi)はk個集まってもαsしかわからず安全である。この特徴は請求項18に示される。
秘匿更新法4
以上の更新法は定数項を必ず0とするので、k-1次の多項式を用いていてもk-1個の分散値があれば更新に用いた多項式が解ける。すなわち、安全性に問題がある。よって、以下のように更新を行うことによりk個の分散値がなければ更新に用いた値がわからないようにすることができる。
以上の更新法は定数項を必ず0とするので、k-1次の多項式を用いていてもk-1個の分散値があれば更新に用いた多項式が解ける。すなわち、安全性に問題がある。よって、以下のように更新を行うことによりk個の分散値がなければ更新に用いた値がわからないようにすることができる。
[更新]
第iのサーバ14xiにおいては、xiを第1IDとし、また、xi'を、第2IDとして、x1~xnの中から、全てのサーバで第1IDと第2IDの重なりがなく、かつk-1個のサーバ内でその組合せが閉じることがないように、ランダムに定められている。例えば、n=kの場合、どのようなk-1個のサーバ内でその組合せは閉じない。なぜならば、i番目のサーバの第1IDと第2IDが同じとすると、残りのk-1台のサーバ内でIDの組合せが閉じていることになるが、この場合、全てのサーバで第1IDと第2IDの重なりがないという条件を満たしていない。よって、n=kの場合は全てのサーバで第1IDと第2IDの重なりがないように選択すればよい。それに対してn>kの場合、k-1個のサーバ内でその組合せは閉じていても、残り2台のサーバの第1IDと第2IDが逆になっていれば全てのサーバで第1IDと第2IDの重なりがないという条件を満たす。よってまず、x1のサーバがx1以外のサーバIDxj2をランダムに選び、選ばれたxj2のサーバがサーバIDxj3をランダムに選ぶことを順に行い、k-1台目のサーバになる前に選ばれたサーバが既に第2IDを選択したサーバでないようにすればよい。これは、第2IDを既に選択しているサーバは新たな第2IDを選択することができないので、そこで閉じることになるためである。各IDの情報は公開される。
第iのサーバ14xiにおいては、xiを第1IDとし、また、xi'を、第2IDとして、x1~xnの中から、全てのサーバで第1IDと第2IDの重なりがなく、かつk-1個のサーバ内でその組合せが閉じることがないように、ランダムに定められている。例えば、n=kの場合、どのようなk-1個のサーバ内でその組合せは閉じない。なぜならば、i番目のサーバの第1IDと第2IDが同じとすると、残りのk-1台のサーバ内でIDの組合せが閉じていることになるが、この場合、全てのサーバで第1IDと第2IDの重なりがないという条件を満たしていない。よって、n=kの場合は全てのサーバで第1IDと第2IDの重なりがないように選択すればよい。それに対してn>kの場合、k-1個のサーバ内でその組合せは閉じていても、残り2台のサーバの第1IDと第2IDが逆になっていれば全てのサーバで第1IDと第2IDの重なりがないという条件を満たす。よってまず、x1のサーバがx1以外のサーバIDxj2をランダムに選び、選ばれたxj2のサーバがサーバIDxj3をランダムに選ぶことを順に行い、k-1台目のサーバになる前に選ばれたサーバが既に第2IDを選択したサーバでないようにすればよい。これは、第2IDを既に選択しているサーバは新たな第2IDを選択することができないので、そこで閉じることになるためである。各IDの情報は公開される。
第iのサーバ14xiのCPU22は、図60(A)の更新処理を実行する。即ち、ステップ381で、それぞれk個の乱数di0、di1、・・・、dik-1と、ri1、・・・、rik-1を生成し、以下の多項式を生成する。
δi(x)=di0+di1x+di2x2+・・・diu-1xu-1
λi(x)=di0+ri1x+ri2x2+・・・riu-1xu-1
δi(x)=di0+di1x+di2x2+・・・diu-1xu-1
λi(x)=di0+ri1x+ri2x2+・・・riu-1xu-1
ステップ383で、全サーバの第1IDを入れた値δi(x1)、δi(x2)、・・・、δi(xn)を成し、ステップ385で、δi(xj)を第jのサーバ14xj(j=1,・・・,n)に送信する。これにより、第iのサーバ14xiは、他のサーバから送信されたδj(xi)を受信する。
ステップ387で、xに全サーバの第2IDを入れた値λi(x1’)、λi(x2’)、・・・、λi(xn’)を生成して、ステップ389で、λi(xj’)を、第jのサーバ14xj(j=1,・・・,n)に送信する。これにより、第iのサーバ14xiは、他のサーバから送信されたλj(xi’)を受信する。
ステップ401で、自分がもつ分散値Wa’(xi)に、受信した全てのδj(xi)を足しこんで以下を計算し、それを新たな分散値として保存する。
Wa’(xi)=Wa(xi)+Σδj(xi)=a+a1xi+a2xi2+・・・+ak-1xik-1+Σδj(xi)
=(a+Σdi0)+(a1+Σdi1)xi +・・・+(ak-1+Σdik-1)xik-1
Wa’(xi)=Wa(xi)+Σδj(xi)=a+a1xi+a2xi2+・・・+ak-1xik-1+Σδj(xi)
=(a+Σdi0)+(a1+Σdi1)xi +・・・+(ak-1+Σdik-1)xik-1
ステップ403で、受信した全てのλj(xi’)を足しこんで以下を計算し保存する。
λ(xi’)=Σλj(xi’)=(Σdi0)+(Σri1)xi’ +・・・+(Σrik-1)xi’k-1
λ(xi’)=Σλj(xi’)=(Σdi0)+(Σri1)xi’ +・・・+(Σrik-1)xi’k-1
[復元]
復元装置16のCPU22は、図60(B)の復元処理を実行する。即ち、ステップ411で、k個のサーバからWa’(xi)を集めて、解いて(a+Σdi0)を計算する。ステップ413で、k個のサーバからλ(xi’)を集めて、解いて(Σdi0)を計算する。
ステップ415で、(a+Σdi0)から(Σdi0)を引いて秘密情報aを計算する。
復元装置16のCPU22は、図60(B)の復元処理を実行する。即ち、ステップ411で、k個のサーバからWa’(xi)を集めて、解いて(a+Σdi0)を計算する。ステップ413で、k個のサーバからλ(xi’)を集めて、解いて(Σdi0)を計算する。
ステップ415で、(a+Σdi0)から(Σdi0)を引いて秘密情報aを計算する。
以上の特徴は従来定数項を0とする多項式によって更新されていたが、それを定数項を0としない。以上では更新処理だけではなく、それに伴い復元においても処理が必要になる。また、λ(xi)を保存するため記憶容量が増加する。しかし、攻撃者はk-1個のサーバを盗聴できたとしても、Wa’(xi)とλ(xi’)の秘密情報は全く得られないため、更新値もわからない。
この更新法は、kをu(>k)とすればkの拡大にも対応可能である。また、[復元]は以下のようにすることもできる。
(1)各サーバはλi(xj’)をサーバxj’に送信する。
(2)各サーバはWa’(xi)+λ(xi)を計算して復元装置16に送信する。
(3)復元装置16はk個のサーバからWa’(xi)+λ(xi)を集めて、解いてaを計算する。
(2)各サーバはWa’(xi)+λ(xi)を計算して復元装置16に送信する。
(3)復元装置16はk個のサーバからWa’(xi)+λ(xi)を集めて、解いてaを計算する。
また、第2IDをランダムに選ばなくても例えば、xiに対してxi+cを第2ID(cは1以上の整数)とすることもできる。さらに、秘匿更新法1に対応する手法を以下に示す。
秘匿更新5
[分散]
図61(A)を参照して、サーバが実行する分散処理を説明する。この処理では秘匿更新4と同様に各サーバは第1IDと第2IDをもつ。以下ではことわりがない限り、サーバIDは第1IDを指す。
[分散]
図61(A)を参照して、サーバが実行する分散処理を説明する。この処理では秘匿更新4と同様に各サーバは第1IDと第2IDをもつ。以下ではことわりがない限り、サーバIDは第1IDを指す。
第1のサーバ14x1~第nのサーバ14xnの内、復元処理を行う1台のサーバがランダムに選択されている。選択されたサーバを、第dのサーバ14xdとする。例えば、第(k+1)のサーバ14x(k+1)とする。
第dのサーバ14xdを以下のk台のサーバに含めることもできるが、説明を簡単にするためk台のサーバは第dのサーバ14xd以外とする。第dのサーバ14xd以外のk台のサーバ、例えば、第1のサーバ14x1~第kのサーバ14xkは、ステップ421で、乱数Wa’iを生成する。第1のサーバ14x1~第kのサーバ14xkは、ステップ423で、自分が既に持つ分散値Wa’(xi)と新たに生成したWa’iとの差分Ui’を計算する。
Wa’(xi)=α(a+a1xi+a2xi2+・・・+ak-1xik-1) (i=1,・・・,k-1)
Wa’i=α(a’+a1’xi+a2’xi2+・・・+ak-1’xik-1)
Ui’=Wa’(xi)-Wa’i=α{(a-a’)+(a1-a1’)xi+(a2-a2’)xi2+・・・+(ak-1-ak-1’)xik-1}
Wa’(xi)=α(a+a1xi+a2xi2+・・・+ak-1xik-1) (i=1,・・・,k-1)
Wa’i=α(a’+a1’xi+a2’xi2+・・・+ak-1’xik-1)
Ui’=Wa’(xi)-Wa’i=α{(a-a’)+(a1-a1’)xi+(a2-a2’)xi2+・・・+(ak-1-ak-1’)xik-1}
なお、aj’(j=1,…,k-1)は、ステップ427で多項式を解く事によって得られる乱数である。
第1のサーバ14x1~第kのサーバ14xkは、ステップ425で、差分Ui’を第dのサーバ14xdに送信する。
第dのサーバ14xdは、ステップ427で、k個の多項式を解き、α(a-a’),α(a1-a1’),・・・,α(ak-1-ak-1’)を求め、残りのn-(k+1)台のサーバ14xj、例えば、第(k+2)のサーバ14x(k+2)~第nのサーバ14xnと、自身の第dのサーバ14xdに対する以下の差分値Wj’を計算する。
Wj’=α{(a1-a1’)xj+(a2-a2’)xj2+・・・+(ak-1-ak-1’)xjk-1} (ただし、j=k+1,・・・,n)
Wj’=α{(a1-a1’)xj+(a2-a2’)xj2+・・・+(ak-1-ak-1’)xjk-1} (ただし、j=k+1,・・・,n)
第dのサーバ14xdは、ステップ429で、差分値Wj’をサーバ14xj(j=k+1,・・・,n)に送信する。サーバ14xjは送られたWj’と、既に持っている分散値Wa’(xi)とを足して新たな分散値Wa’(xi)とする。
第dのサーバ14xdは、ステップ433で、α(a1-a1’)を以下のように分散する。
Wd’(xi’)=α(a-a’)+d1xi’+d2xi’2+・・・+dk-1xi’k-1
Wd’(xi’)=α(a-a’)+d1xi’+d2xi’2+・・・+dk-1xi’k-1
第dのサーバ14xdは、ステップ435で、サーバ14xi(i=1,・・・,n)に第2IDの値であるWd’(xi’)を送信する。なお、第dのサーバ14xdは、自身のWa’(xk+1’)を、自身の記憶装置34に保存する。
[復元]
次に、図61(B)を参照して、各サーバ(第1のサーバ14x1~第nのサーバ14xm)が実行する復元処理を説明する。即ち、ステップ437で、Wd’(xi’)をサーバ14xi’に送信し、よって、ステップ439で、Wd’(xi)を受信する。
次に、図61(B)を参照して、各サーバ(第1のサーバ14x1~第nのサーバ14xm)が実行する復元処理を説明する。即ち、ステップ437で、Wd’(xi’)をサーバ14xi’に送信し、よって、ステップ439で、Wd’(xi)を受信する。
ステップ441で、Wd’(xi)+Wa’(xi)=α{a+(d1+a1’)xi+(d2+a2’)xi2+・・・+(dk-1+ak-1’)xik-1}を計算する。
第1のサーバ14x1~第nのサーバ14xmの内の、復元装置16から指示されたk個のサーバは、ステップ443で、Wd’(xi)+Wa’(xi)を復元装置16に送信する。
そして、復元装置16は、k個のサーバからWa’(xi)+Wd’(xi)を受信し、解いてαaを計算する。
この場合、Wd’(xi)+Wa’(xi)を新たな分散値として、秘匿演算を継続可能であることは明らかである。
秘匿更新4と5の特徴は、定数項を0としないk個の補正情報δj(xi)またはUj’から分散値の更新情報Σδj(xi)またはWj’を計算することであり、これによってk-1台の盗聴を行っても更新情報は得られない。このような手法は今まで提案されておらず、この特徴は請求項11に示される。
第1のサーバ14x1~第nのサーバ14xmの内の、復元装置16から指示されたk個のサーバは、ステップ443で、Wd’(xi)+Wa’(xi)を復元装置16に送信する。
そして、復元装置16は、k個のサーバからWa’(xi)+Wd’(xi)を受信し、解いてαaを計算する。
この場合、Wd’(xi)+Wa’(xi)を新たな分散値として、秘匿演算を継続可能であることは明らかである。
秘匿更新4と5の特徴は、定数項を0としないk個の補正情報δj(xi)またはUj’から分散値の更新情報Σδj(xi)またはWj’を計算することであり、これによってk-1台の盗聴を行っても更新情報は得られない。このような手法は今まで提案されておらず、この特徴は請求項11に示される。
<第6の実施の形態>
次に、秘匿検索について示す。ここでは秘密情報を持つオ-ナが、秘密情報に対応する検索IDを分散して秘密情報の分散値とともにサ-バシステムに保管し、ある秘密情報の検索を希望するユ-ザは秘密情報に対応する検索IDを分散して、分散値同志で検索を行う。
(秘匿検索1(基本形:検索サーバ18を用いない))
[分散]
第1のディーラ装置12Aでは、m個の秘密情報(前述した第1の実施の形態~第5の実施の形態の何れかの分散により上記のように分散されている)に対応するm個の検索IDをkj(j=1,…,m)としている。第1のディーラ装置12AのCPU22は、図62の分散処理を実行する。即ち、ステップ412で、検索IDごとの乱数rjを生成し、ステップ414で、下記の分散値Fj(xi)、Rj(xi)を計算する。
Fj(xi)=rj(kj+aj1xi+aj2xi 2+…+ajk-1xi k-1)(i=1,…,n)
Rj(xi)=rj+rj1xi+rj2xi 2 +…+rjk-1xi k-1
次に、秘匿検索について示す。ここでは秘密情報を持つオ-ナが、秘密情報に対応する検索IDを分散して秘密情報の分散値とともにサ-バシステムに保管し、ある秘密情報の検索を希望するユ-ザは秘密情報に対応する検索IDを分散して、分散値同志で検索を行う。
(秘匿検索1(基本形:検索サーバ18を用いない))
[分散]
第1のディーラ装置12Aでは、m個の秘密情報(前述した第1の実施の形態~第5の実施の形態の何れかの分散により上記のように分散されている)に対応するm個の検索IDをkj(j=1,…,m)としている。第1のディーラ装置12AのCPU22は、図62の分散処理を実行する。即ち、ステップ412で、検索IDごとの乱数rjを生成し、ステップ414で、下記の分散値Fj(xi)、Rj(xi)を計算する。
Fj(xi)=rj(kj+aj1xi+aj2xi 2+…+ajk-1xi k-1)(i=1,…,n)
Rj(xi)=rj+rj1xi+rj2xi 2 +…+rjk-1xi k-1
ステップ416で、分散値Fj(xi)、Rj(xi)を第iのサ-バ14xi(i=1,…,n)に送信して保管させる。
よって、各サ-バ、例えば、第1のサ-バ14x1の記憶装置34には、図63(A)に示すように、検索IDであるkj(j=1,2…,m/2,…m)に対応して、分散値Fj(xi)、Rj(xi)が記憶されている。ただし、分散値Fj(xi)、Rj(xi)は検索ID=kjに応じて昇順に並べられている。さらに、検索IDに対応する秘密情報に対する分散値もFj(xi)、Rj(xi)と並んで保存されている。
[検索]
各サ-バは保管している分散値の中央値、即ちj=m/2により識別される分散値から検索を始めるようになっている。
各サ-バは保管している分散値の中央値、即ちj=m/2により識別される分散値から検索を始めるようになっている。
復元装置16のCPU22は、図64の検索処理を実行する。即ち、ステップ420で、検索を希望するユ-ザの操作に従って検索ID=kj’を入力し、ステップ422で、検索ID=kj’に乱数qを乗じたq・kj’をオ-ナの第1のディーラ装置12Aに送信する。
第1のディーラ装置12Aは、図65の分散値Fj(xi)の計算・送信処理を実行する。即ち、ステップ452で、q・kj’を受信し、ステップ454で、q・kj’を、以下のように秘密分散するための分散値Fj’(xi)を計算する。
Fj’(xi)=q・kj’+bj1xi+bj2xi 2+…+bjk-1xi k-1(i=1,…,k)
Fj’(xi)=q・kj’+bj1xi+bj2xi 2+…+bjk-1xi k-1(i=1,…,k)
ステップ456で、分散値Fj’(xi)を第iのサ-バ14xiに送信する。
第iのサ-バ14xi、即ち、第1のサ-バ14xi~第kのサ-バ14xkの各CPU22は、図66の差tjの計算・送信処理を実行する。即ち、ステップ462で、分散値Fj’(xi)を受信し、ステップ464で、検索IDのjを設定する。本処理が最初に実行されるとき、ステップ464では、jには、m/2が設定される。ステップ466で、jに対応する分散値Fj(xi)、Rj(xi)を、記憶装置34から読み出し、ステップ468で、分散値F(xi)(i=1,…,k)をユ-ザの復元装置16に送信する。これにより、復元装置16は、図64のステップ424で、分散値Fj(xi)を受信する。
第iのサ-バ14xi、即ち、第1のサ-バ14xi~第kのサ-バ14xkの各CPU22は、図66の差tjの計算・送信処理を実行する。即ち、ステップ462で、分散値Fj’(xi)を受信し、ステップ464で、検索IDのjを設定する。本処理が最初に実行されるとき、ステップ464では、jには、m/2が設定される。ステップ466で、jに対応する分散値Fj(xi)、Rj(xi)を、記憶装置34から読み出し、ステップ468で、分散値F(xi)(i=1,…,k)をユ-ザの復元装置16に送信する。これにより、復元装置16は、図64のステップ424で、分散値Fj(xi)を受信する。
図64のステップ426で、δ(0)=0となる多項式δ(x)を生成し、ステップ428で、以下の分散値Fj(xi)を計算する。
Fj(xi)=q・Fj(xi)+δ(xi)(i=1,…,k)
Fj(xi)=q・Fj(xi)+δ(xi)(i=1,…,k)
ステップ430で、分散値Fj(xi)を第iのサ-バ14xiに送信する。これにより、第iのサ-バ14xiは、図66のステップ470で、分散値Fj(xi)を受信する。
ステップ472で、k個の分散値Rj(xi)からrjを復元する。
ステップ474で、乱数tjを生成し、以下の差tj{Fj(xi)-rjFj’(xi)}を計算する。
tj{Fj(xi)-rjFj’(xi)}=tj・rj・q{(kj-kj’)+(aj1-bj1)xi+…+(ajk-1-bjk-1)xi k-1}
ステップ476で、差tj{Fj(xi)-rjFj’(xi)}を復元装置16に送信する。
ステップ472で、k個の分散値Rj(xi)からrjを復元する。
ステップ474で、乱数tjを生成し、以下の差tj{Fj(xi)-rjFj’(xi)}を計算する。
tj{Fj(xi)-rjFj’(xi)}=tj・rj・q{(kj-kj’)+(aj1-bj1)xi+…+(ajk-1-bjk-1)xi k-1}
ステップ476で、差tj{Fj(xi)-rjFj’(xi)}を復元装置16に送信する。
復元装置16は、図64のステップ432で、差tj{Fj(xi)-rjFj’(xi)}を受信し、ステップ434で、差tj{Fj(xi)-rjFj’(xi)}の多項式を解き、定数項を求め、ステップ436で、定数項rj・q(kj-kj’)が0か否かを判断する。定数項rj・q(kj-kj’)が0であると判断された場合には、検索IDが一致してとして、ステップ438で、検索IDを現在のjとする。定数項rj・q(kj-kj’)が0でないと判断された場合、ステップ440で、本処理(ステップ424~436)が所定回数、例えば、log2m回実行したか否かを判断する。本処理(ステップ424~436)がlog2m回実行したと判断された場合には、ステップ442で、検索IDなしとする。
本処理(ステップ424~436)がlog2m回実行したと判断されなかった場合には、ステップ444で、定数項rj・q(kj-kj’)は正か否かを判断する。定数項rj・q(kj-kj’)が正と判断された場合には、ステップ446で、jを、当該jより小さい値に設定して、第iのサーバ14xiに指示する。例えば、検索IDの検索領域をjより小さい領域として設定し、設定した検索領域の中央値をjに設定、設定されたjを、第iのサーバ14xiに指示する。その後、検索処理はステップ424に戻る。
定数項rj・q(kj-kj’)が正と判断されなかった場合には、ステップ448で、jを、当該jより大きい値に設定して、第iのサーバ14xiに指示する。例えば、検索IDの検索領域をjより大きい領域として設定し、設定した検索領域の中央値をjに設定、設定されたjを、第iのサーバ14xiに指示する。その後、検索処理はステップ424に戻る。
例えば、本処理(ステップ424~436)が最初に実行され、定数項rj・q(kj-kj’)が正と判断された場合には、ステップ442で、検索IDの検索領域をjより小さい領域、1~(m/2)-1として設定し、設定した検索領域の中央値、3m/4をjに設定する。本処理(ステップ424~436)が再度実行され、定数項rj・q(kj-kj’)が正と判断されなかった場合には、ステップ448で、検索IDの検索領域(1~(m/2)-1)をj=3m/4より大きい領域、(3m/4)+1~(1~(m/2)-1)として設定し、設定した検索領域の中央値をjに設定する。
上記のようにjの値が第iのサーバ14xiに対して指示されると、図66におけるステップ478のjが指示されたか否かの判定結果が肯定判定となって、差tjの計算処理はステップ464に戻る。これにより、図66のステップ464では、検索IDのjとして、上記指示された値を設定する。その後の処理(ステップ466~ステップ476)は、上記設定されたjに基づいて、実行される。
第1の特徴は[分散]において、請求項7の1例として分散値を検索ID=kjに応じて昇順に並べ、[検索]において最初の検索をm個の検索IDの中央値、即ちj=m/2から始めることである。
また、請求項9の1例として[検索]で得られる定数項rj・q(kj-kj’)を出力する。rj・qは正の値であるので、その値が正であればkj-kj’>0、即ちkj>kj’を意味するので、kjの小さい方の中央値、即ちj=3m/4として再び検索を行う。もし、次の検索における定数項が同様に正であればやはりkj>kj’を意味するので、さらにkjの小さい方の中央値を検索する。逆に、次の検索における定数項が負であればkj<kj’を意味するので、kjの大きい方の中央値を検索する。即ち、mが大きくてもlog2m回の検索で終了する。よって、[検索]でlog2m回探索しても一致する検索IDがない場合は、その検索IDは保存されていないと判断できる。
第2の特徴は[検索]においてオ-ナはユ-ザからq・kj’を得るが、乱数qがかかっているためユ-ザの検索IDであるkj’はわからない。また、ユ-ザはサ-バからFj(xi)を得るが、rjがかかっているのでサ-バの検索IDであるkjはわからない。さらに、ユ-ザはtj{Fj(xi)-rjFj’(xi)}も得るが、Fj(xi)以外不明であるのでrjは得られない。また、サ-バはFj(xi)とFj’(xi)とrjを得るが、k個が結託しなければ秘密情報は復元されない。
上記[分散]において、分散値はkjの昇順に並べるとしているが、降順に並べ[検索]の方向を逆にしてもよい。[検索]において、オ-ナがq・kj’を分散させるが、ユ-ザが分散してもよい。
秘匿検索1は単純であるが、オ-ナ、ユ-ザともに毎回検索に参加するため、1つのkj’に対する検索に対して、最大log2m回の演算を行う必要があり、最大負担が大きい。そこで、検索を専門に行う(計算能力が高い)検索部を設け、オ-ナ、ユ-ザともに1つの検索IDに対して1回の演算だけですむ方式を以下に示す。検索部はディーラ装置、サ-バシステム、復元装置と別の装置としてもよいが、サ-バシステムの中に存在するとしてもよい。
(秘匿検索2(検索サーバ18を用いる))
[分散]
オ-ナの第1のディーラ装置12Aは、m個の秘密情報(前述した第1の実施の形態~第5の実施の形態の何れかの分散により上記のように分散されている)に対応するm個の検索IDをkj(j=1,…,m)とし、共通の乱数rと検索IDごとの乱数rjを生成して、下記分散値Fj(xi)、Rj(xi)を計算し、第iのサ-バ14xi(i=1,…,n)、即ち、第1のサ-バ14x1~第nのサ-バ14xnに分散保管させる(aji,rji,tjiも乱数)。よって、例えば、第1のサーバ14x1の記憶装置34には、図63(B)に示すように、各分散値Fj(xi)、Rj(xi)が記憶されている。さらに、検索IDに対応する秘密情報に対する分散値もFj(xi)、Rj(xi)と並んで保存されている。
[分散]
オ-ナの第1のディーラ装置12Aは、m個の秘密情報(前述した第1の実施の形態~第5の実施の形態の何れかの分散により上記のように分散されている)に対応するm個の検索IDをkj(j=1,…,m)とし、共通の乱数rと検索IDごとの乱数rjを生成して、下記分散値Fj(xi)、Rj(xi)を計算し、第iのサ-バ14xi(i=1,…,n)、即ち、第1のサ-バ14x1~第nのサ-バ14xnに分散保管させる(aji,rji,tjiも乱数)。よって、例えば、第1のサーバ14x1の記憶装置34には、図63(B)に示すように、各分散値Fj(xi)、Rj(xi)が記憶されている。さらに、検索IDに対応する秘密情報に対する分散値もFj(xi)、Rj(xi)と並んで保存されている。
Fj(xi)=rj・(kj+t’j1xi+t’j2xi
2+…+t’jk-1xi
k-1)(i=1,…,n)
Rj(xi)=r・rj+rj1xi+rj2xi 2+…+rjk-1xi k-1
ただし、分散値は検索IDであるkjに応じて昇順に並べられているとする。
Rj(xi)=r・rj+rj1xi+rj2xi 2+…+rjk-1xi k-1
ただし、分散値は検索IDであるkjに応じて昇順に並べられているとする。
[検索]
各サ-バは保管している分散値の中央値、即ちj=m/2により識別される分散値から検索を始める。
各サ-バは保管している分散値の中央値、即ちj=m/2により識別される分散値から検索を始める。
復元装置16のCPU22は、図67の分散値Fu(xi)の計算・送信処理を実行する。即ち、ステップ482で、検索を希望するユ-ザの操作に従って、検索IDであるkj’を入力し、ステップ484で、検索IDであるkj’に乱数qを乗じたq・kj’を第1のディーラ装置12Aに送信する。
第1のディーラ装置12AのCPU22は、図68の分散値Fo(xi)の計算・送信処理を実行する。即ち、ステップ502で、q・kj’を受信する。
ステップ504で、tjを生成し、ステップ506でtj・rを計算し、ステップ508で、tj・rを復元装置16に送信する。これにより、復元装置16は、図67のステップ486で、tj・rを受信する。
また、第1のディーラ装置12Aは、図68のステップ510で、以下の分散値Fo(xi)を計算する。
Fo(xi)=tj・q・kj’+bj1xi+bj2xi
2+…+bjk-1xi
k-1(i=1,…,n)
第1のディーラ装置12Aは、ステップ512で、分散値Fo(xi)を各サ-バ(14x1~14xn)に送信する。
各サ-バは、図69の差の計算・送信処理を実行する。即ち、ステップ522で、分散値Fo(xi)を受信する。
一方、復元装置16は、図67のステップ488で、以下の分散値Fu(xi)を計算する。
Fu(xi)=tj・r・q+cj1xi+cj2xi 2+…+cjk-1xi k-1(i=1,…,n)
Fu(xi)=tj・r・q+cj1xi+cj2xi 2+…+cjk-1xi k-1(i=1,…,n)
ステップ490で、分散値Fu(xi)を各サ-バに送信する。これにより、各サ-バは、図69のステップ524で、分散値Fu(xi)を受信する。
各サーバは、ステップ525で、Rj(xi)、Tj(xi)を検索サーバ18に送信する。検索サーバ18のCPU22は、図70の検索処理を実行する。即ち、ステップ542で、各サーバが送信してRj(xi)とTj(xi)をk個集め、ステップ544で、r・rjとrj・kjを復元し、ステップ546で、各サ-バに送信する。これにより、各サ-バは、図69のステップ526で、r・rjとrj・kjを受信する。
各サ-バは、ステップ528で、以下の差を計算する。
rj・kj・Fu(xi)-r・rj・Fo(xi)=tj・r・rj・q{(kj-kj’)+(cj1-bj1)xi+…+(cjk-1-bjk-1)xi k-1}
rj・kj・Fu(xi)-r・rj・Fo(xi)=tj・r・rj・q{(kj-kj’)+(cj1-bj1)xi+…+(cjk-1-bjk-1)xi k-1}
ステップ530で、差を検索サーバ18に送信する。これにより、検索サーバ18は、図70のステップ548で、差を受信する。
検索サーバ18はステップ550で、差の多項式を解き、定数項を求め、ステップ552~ステップ564を実行する。なお、ステップ552~ステップ564は、図64のステップ436~448と同様であるので、その説明を省略する。
図70のステップ562、564で上記指示がされると、図68、図67図69のステップ532が肯定判定となって、ステップ525~532の処理が実行され、これに伴って、図70の検索処理が実行される。
上記の特徴はユーザの処理を1度で終わらせるために、ユーザは乱数qを生成して自分の検索IDkjを秘匿化してオーナに示し、オーナから送られた検索IDに関連する乱数tj・rに自分が定めた乱数qを乗じて返すことである。この特徴は請求項8に示される。
また、最初のオーナまたは異なるオーナが検索IDを追加する場合、そのオーナをユーザとし、追加IDをユーザの検索IDとして検索する。一致するIDがあった場合、そのユーザはその検索IDを変える。なければ、最終位置の隣接ID(追加IDが検索ID中にない場合、最後まで一致はしないが、最終位置では隣接IDの検索結果の方向が逆になり、追加IDがその中間位置に入るべきであることがわかる)の中間位置に追加IDの分散値を追加する。ただし、最初のオーナーが追加を行う場合はこれでよいが、異なるオーナがデータの追加を行う場合、データは昇順に並んでも、オーナーの順番がバラバラとなるため、検索のたびにオーナーの許可が必要となる。よってこの場合、オーナーはシステムに検索を許可するユーザの条件を示し、検索の許諾をシステムに委託するなどすれば効率的となる。以上の特徴は請求項17に示される。
ところで、第1の実施の形態~第4の実施の形態に示した例では、α=α1・・・αkを生成するが、αは秘密情報毎に異なる乱数であるので、α=rjとすれば秘匿検索におけるTj(xi)は秘匿演算のWa’(xi)などと同じ形式の式となる。ただし、秘匿検索に対してはr・rjに対する分散値Rj(x)が増えるので、秘密情報と検索ID間の相互検索を行えるようにするためには、各サ-バは秘匿演算のために第1の実施の形態~第4の実施の形態の[分散]に示すように1つの秘密情報に対してk+1個の分散値、秘匿検索のためにRj(xi)に対応する分散値で、k+2個の分散値を保存する必要がある。これによって、秘匿演算と秘匿検索の2つが同時に実現できる。
また、最初のオーナまたは異なるオーナが検索IDを追加する場合、そのオーナをユーザとし、追加IDをユーザの検索IDとして検索する。一致するIDがあった場合、そのユーザはその検索IDを変える。なければ、最終位置の隣接ID(追加IDが検索ID中にない場合、最後まで一致はしないが、最終位置では隣接IDの検索結果の方向が逆になり、追加IDがその中間位置に入るべきであることがわかる)の中間位置に追加IDの分散値を追加する。ただし、最初のオーナーが追加を行う場合はこれでよいが、異なるオーナがデータの追加を行う場合、データは昇順に並んでも、オーナーの順番がバラバラとなるため、検索のたびにオーナーの許可が必要となる。よってこの場合、オーナーはシステムに検索を許可するユーザの条件を示し、検索の許諾をシステムに委託するなどすれば効率的となる。以上の特徴は請求項17に示される。
ところで、第1の実施の形態~第4の実施の形態に示した例では、α=α1・・・αkを生成するが、αは秘密情報毎に異なる乱数であるので、α=rjとすれば秘匿検索におけるTj(xi)は秘匿演算のWa’(xi)などと同じ形式の式となる。ただし、秘匿検索に対してはr・rjに対する分散値Rj(x)が増えるので、秘密情報と検索ID間の相互検索を行えるようにするためには、各サ-バは秘匿演算のために第1の実施の形態~第4の実施の形態の[分散]に示すように1つの秘密情報に対してk+1個の分散値、秘匿検索のためにRj(xi)に対応する分散値で、k+2個の分散値を保存する必要がある。これによって、秘匿演算と秘匿検索の2つが同時に実現できる。
<第7の実施の形態>
秘匿乗算1’(非対称秘密分散対応)
文献[4]に示される非対称秘密分散に適した秘匿乗算法を以下に示す。ただし、hは1~k-1までの整数のうち、小型化を実現するための鍵サ-バ数を示すとする。ここでは、オ-ナがその鍵サ-バを持つとする。以下に説明する秘匿乗算i’などは秘匿乗算iに対応する手法である。以下では、秘密情報aをもつオ-ナAがh個の鍵サーバの処理を第1のディーラ装置12Aによって実行する場合を示すが、鍵サーバは外部にあって、そこから乱数を得ても実行することも可能である。また、秘密情報bをもつオ-ナBの処理もディーラ装置12Bで行うが、鍵サーバが外部にあってそこから乱数を得ても実行することが可能である。また、ディーラ装置がh個の鍵サーバの処理を実行する場合、h個の鍵サーバが各々管理する鍵(全部でh個)をディーラ装置が管理する1つの鍵を用いて鍵サーバのIDを暗号化するなどして、それを各鍵サーバの鍵としてもよい。この場合、ディーラ装置は1つの鍵を管理するだけでh台分の鍵サーバの役割を果たすことができる(具体例は後述の特徴参照)。
秘匿乗算1’(非対称秘密分散対応)
文献[4]に示される非対称秘密分散に適した秘匿乗算法を以下に示す。ただし、hは1~k-1までの整数のうち、小型化を実現するための鍵サ-バ数を示すとする。ここでは、オ-ナがその鍵サ-バを持つとする。以下に説明する秘匿乗算i’などは秘匿乗算iに対応する手法である。以下では、秘密情報aをもつオ-ナAがh個の鍵サーバの処理を第1のディーラ装置12Aによって実行する場合を示すが、鍵サーバは外部にあって、そこから乱数を得ても実行することも可能である。また、秘密情報bをもつオ-ナBの処理もディーラ装置12Bで行うが、鍵サーバが外部にあってそこから乱数を得ても実行することが可能である。また、ディーラ装置がh個の鍵サーバの処理を実行する場合、h個の鍵サーバが各々管理する鍵(全部でh個)をディーラ装置が管理する1つの鍵を用いて鍵サーバのIDを暗号化するなどして、それを各鍵サーバの鍵としてもよい。この場合、ディーラ装置は1つの鍵を管理するだけでh台分の鍵サーバの役割を果たすことができる(具体例は後述の特徴参照)。
[分散]
秘密情報aをもつオ-ナAの第1のディーラ装置12AのCPU22は、図71の分散処理を実行する。即ち、ステップ572で、分散値Wa(x1)~Wa(xh)(hはk-1以下の整数)として、管理する1つの鍵からh個の乱数を生成する。生成した乱数は、分散値Wa(x1)~Wa(xh)として、第1のディーラ装置12Aの記憶装置34に記憶される。
秘密情報aをもつオ-ナAの第1のディーラ装置12AのCPU22は、図71の分散処理を実行する。即ち、ステップ572で、分散値Wa(x1)~Wa(xh)(hはk-1以下の整数)として、管理する1つの鍵からh個の乱数を生成する。生成した乱数は、分散値Wa(x1)~Wa(xh)として、第1のディーラ装置12Aの記憶装置34に記憶される。
ステップ574で、秘密情報aに対して、k-1-h個の乱数a0,h+1~a0,k-1を定め、分散値Wa(x1)~Wa(xh)を以下の多項式として解いて残りのh個の乱数a0,1~a0,h-1を求める。
Wa(xi)=a+a0,1xi+・・・+a0,k-1xi k-1(i=1,・・・,h)
Wa(xi)=a+a0,1xi+・・・+a0,k-1xi k-1(i=1,・・・,h)
ステップ576で、aとa0,1~a0,k-1を用いて、以下の式から第(h+1)のサーバ14x(h+1)~第nのサーバ14xnの分散値Wa(xi)を求める。
Wa(xi)=a+a0,1xi+・・・+a0,k-1xi k-1(i=h+1,・・・,n)
Wa(xi)=a+a0,1xi+・・・+a0,k-1xi k-1(i=h+1,・・・,n)
ステップ578で、ステップ576で求めら分散値Wa(xi)を第(h+1)のサーバ14x(h+1)~第nのサーバ14xnに送信する。
また、秘密情報bを持つオ-ナBの第2のディーラ装置12BのCPU22は、上記説明した図71のステップ572~ステップ578の各処理を独立に実行し、自らの分散値Wb(x1)~Wb(xh)と、第(h+1)のサーバ14x(h+1)~第nのサーバ14xnの分散値Wb(xh+1)~Wb(xn)を求め、第(h+1)のサーバ14x(h+1)~第nのサーバ14xnに送信する。ただし、上記乱数a0,iはb0,iになる。
[乗算]
第1のディーラ装置12AのCPU22は、図72の乗算処理を実行する。即ち、ステップ582で、k個の乱数αi(i=1,・・・,k)を生成し、ステップ584で、その積α=α1・α2・…αkを計算する。
第1のディーラ装置12AのCPU22は、図72の乗算処理を実行する。即ち、ステップ582で、k個の乱数αi(i=1,・・・,k)を生成し、ステップ584で、その積α=α1・α2・…αkを計算する。
ステップ586で、自身の第1のディーラ装置12Aを含むk個のサ-バから分散値Wa(xi)を集め、ステップ588で、k個の分散値Wa(xi)を解き、aを求め、ステップ600で、aにαをかけたαaを求め、ステップ602で、αaを第1のサーバ14x1~第nのサーバ14xn及び第2のディーラ装置12Bに送信する。なお、第1のディーラ装置12Aの記憶装置34にk個の乱数αiを記憶する。
第2のディーラ装置12BのCPU22は、図73の乗算処理を実行する。即ち、ステップ612で、k個の乱数βi(i=1,・・・,k)を生成し、ステップ614で、その積β=β1・β2・…βkを計算する。
ステップ616で、自身の第2のディーラ装置12Bを含むk個以上のサ-バから分散値Wb(xi)を集め、ステップ618で、以下を計算する。ただし、δ(x)はδ(0)=0となるk-1次の多項式である。
Wab’(xi)=αa・β・Wb(xi)+δ(xi)
Wab’(xi)=αa・β・Wb(xi)+δ(xi)
ステップ620で、分散値Wab’(xi)を、元のサーバに送信する。なお、第2のディーラ装置12Bの記憶装置34にk個の乱数βiを記憶する。
[復元]
第1のディーラ装置12Aは、自身の第1のディーラ装置12A及び第2のディーラ装置12Bを含むk個のサ-バxj(j=1,・・・,k)にαjを送信する。第2のディーラ装置12Bは、自身の第2のディーラ装置12Bと第1のディーラ装置12Aを含むk個のサ-バxj(j=1,・・・,k)にβjを送信する。
第1のディーラ装置12Aは、自身の第1のディーラ装置12A及び第2のディーラ装置12Bを含むk個のサ-バxj(j=1,・・・,k)にαjを送信する。第2のディーラ装置12Bは、自身の第2のディーラ装置12Bと第1のディーラ装置12Aを含むk個のサ-バxj(j=1,・・・,k)にβjを送信する。
ここで、k個のサ-バxjには、第1のディーラ装置12A、第2のディーラ装置12B、及び第1のサーバ12x1~第(k-2)サーバ12xk-2が含まれる。ここでは簡単のため、j=k-1で、第1のディーラ装置12Aが識別され、j=kで、第2のディーラ装置12Bが識別されるとする。よって、第1のディーラ装置12Aには、αj=αk-1、βj=βk-1が送信され、第2のディーラ装置12Bには、αj=αk、βj=βkが送信される。
上記k個のサ-バxj(j=1,…,k)のCPU22は、図74のαjβjの計算・送信処理を実行する。即ち、ステップ622で、第1のディーラ装置からαj(=αk-1)を受信し、ステップ624で、第2のディーラ装置からβjを受信し、ステップ626で、積αjβjを計算する。ステップ628で、Wab’(xj)とαjβjを復元装置16に送信する。
復元者の復元装置16のCPU22は図75の復元処理を実行する。即ち、ステップ630で、第1のディーラ装置12A及び第2のディーラ装置12Bを含むk個のサーバから、Wab’(xj)、αjβjを受信し、ステップ632で、Wab’(xj)からαβabを復元する。復元装置16は、ステップ634で、αβabをαjβj(j=1,・・・,k)で割ってabを得る。
以上説明した提案方式の第1の特徴は、[分散]の図71のステップ572において、第1のディーラ装置12A及び第2のディーラ装置12Bが各々鍵を1つ管理するだけで、h台のサ-バが保存すべきだった分散値を削減できる点である。例えばサ-バIDであるx1~xhを第1のディーラ装置12Aの鍵を用いて暗号化したものをkj(j=1,・・・,h)とし、kj用いてaのIDを暗号化したものをWa(xi)とすることができる。即ち、第1のディーラ装置12Aは鍵1つを持つだけで[分散]の図71の処理が実現できる。第2のディーラ装置12Bも同様である。すなわち、第1のディーラ装置12Aと第2のディーラ装置12Bは分散値を保存しなくても計算によって求められるため、h台のサーバを不要にできる。これは、非対称秘密分散の特徴であるが、上記秘匿乗算においても有効であることがわかる。
第2の特徴は、請求項12に示すように上記特徴をもつシステムにおいて、ステップ572に示されるようにh個の乱数を分散値として、ステップ574で残りのサーバに対する分散値を計算する点である。よって、[分散]の図71のステップ578で1つの秘密情報aに対して、n-h台の各サ-バは1台当たり1個の分散値Wa(xi)を記憶するだけでよい。秘匿乗算1では、aに対して全サ-バがk+1個の分散値(Wa’(xi),Wah(xi)(h=1,・・・.k))を記憶する必要があったが、秘匿乗算1’ではn-h台のサーバが1個のWa(xi)を記憶するだけでよい。る。よって、第1の特徴と合わせると、第7の実施の形態の分散は、秘匿乗算1に比べ大幅な記憶容量の削減が実現できる。以上が非対称秘密分散による記憶容量削減の特徴である。また、記憶容量削減に伴う通信量も削減できる。
秘匿乗算1では[分散]においてディーラ装置Aはn個のサ-バにk+1個の分散値を送る必要があった。これに対し、秘匿乗算1’では[分散]の図71のステップ578においてディーラ装置Aがn-h個のサ-バに1個の分散値を送るだけでよい。さらに、秘匿乗算1の[復元]ではk個のサ-バがk個の分散値を集める必要があるが、秘匿乗算1’では請求項12に示すように第1のディーラ装置12Aがステップ582でk個の乱数を生成し、k台のサ-バに各々1つの乱数を送信するだけでよい。ただし、その乱数はステップ584で合成され、ステップ600で秘匿化秘密情報αaを生成するために用いられる。これによって、通信量も大きく削減できることがわかる。[乗算]の図73のステップ616、ステップ618でWb(xi)を集めてWab’(xi)を送信するため2(n―h)回通信が増えるが、全体的には削減される。
計算量に関しては、秘匿乗算1[分散]においてk個のαjの分散処理と[復元]においてその復元処理が不要になるが、秘匿乗算1’では[分散]の図71のステップ572において乱数生成(暗号化)とステップ574において多項式を解く処理が増す。よって、計算量に関してk,nの値により得失は拮抗する。
秘匿除算1において、秘密情報の[分散]処理を秘匿乗算1’と同様に実行し、αj(j=1,・・・,k)などのk個の乱数及びそれを合成した乱数の生成、及びαa及びWab’(xi)の生成を秘匿乗算1’[乗算]と同様に演算中に行い、k個の乱数の配布を[復元]と同様にディーラ装置が直接行えば、そのまま秘匿除算1’が実現できることは明らかである。ただし、ステップ616ではWab’(xi)=αa・β・Wb(xi)+δ(xi)ではなく、Wab’(xi)=(β/αa)・Wb(xi)+δ(xi)を計算し、ステップ626でαjβjではなくβj/αjを計算する。
秘匿除算3’(非対称秘密分散及び実数対応)
実数による除算も以下のようにすれば実現できることも明らかである。以下では、b/aを計算する場合を説明する。
[分散]
図76を参照して、第1のディーラ装置12A、第2のディーラ装置12B、サーバxj及び復元装置16が実行する復元処理を説明する。なお、サーバxjには、後述する特定の1台のサーバxdが含まれる。
秘匿除算3’の[分散]は、非対称秘密分散対応(図71)と同様であるので、その説明を省略する。
実数による除算も以下のようにすれば実現できることも明らかである。以下では、b/aを計算する場合を説明する。
[分散]
図76を参照して、第1のディーラ装置12A、第2のディーラ装置12B、サーバxj及び復元装置16が実行する復元処理を説明する。なお、サーバxjには、後述する特定の1台のサーバxdが含まれる。
秘匿除算3’の[分散]は、非対称秘密分散対応(図71)と同様であるので、その説明を省略する。
[復元]
第1のディーラ装置12Aは、ステップ642で、自身の第1のディーラ装置12Aが生成した実数αjを、k個のサーバxj(j=1,…,k)に各々送信する。
第2のディーラ装置12Bは、ステップ644で、自身の第2のディーラ装置12Bが生成した実数βjを、k個のサーバxj(j=1,…,k)に各々送信する。
各サ-バ14xj(j=1,…,k)は、ステップ646で、βj/αjを実数として計算し、ステップ648で、復元装置16にβj/αjを送信する。
第1のディーラ装置12Aは、ステップ642で、自身の第1のディーラ装置12Aが生成した実数αjを、k個のサーバxj(j=1,…,k)に各々送信する。
第2のディーラ装置12Bは、ステップ644で、自身の第2のディーラ装置12Bが生成した実数βjを、k個のサーバxj(j=1,…,k)に各々送信する。
各サ-バ14xj(j=1,…,k)は、ステップ646で、βj/αjを実数として計算し、ステップ648で、復元装置16にβj/αjを送信する。
復元装置16は、ステップ650で、βj/αj(j=1,…,k)を実数として掛けてβ/αを計算する。
第1のディーラ装置12Aは、ステップ654で、サーバxj(合計k個の装置)からWa(xi)を集め、aを復元して実数化し、ステップ656で、実数αjからαを実数計算して、さらにαaを計算し、ステップ658で、特定のサーバxdにαaを送信する。
第2のディーラ装置12Bは、ステップ660で、サーバxjからWb(xi)を集め、bを復元して実数化し、ステップ662で、実数βjからβを実数計算して、さらにβbを計算し、ステップ664で、特定のサーバxdにβbを送信する。
特定のサーバxdは、ステップ666で、βbをαaで実数として割り、ステップ668で、βb/αaを復元装置16に送信する。
復元装置16は、ステップ670で、βb/αaをβ/αで割り実数、計算しb/aを得る。
実数演算に関して乗算や加算、積和にも同様に対応できることは明らかである。
実数演算に関して乗算や加算、積和にも同様に対応できることは明らかである。
以上説明した例では、第1のディーラ装置12Aは、実数αjを、サーバxjに送信し、第2のディーラ装置12Bは、実数βjを、サーバxjに送信する。即ち、第1のディーラ装置12Aは、実数αjを、第2のディーラ装置12Bには送信せず、また、第2のディーラ装置12Bは、実数βjを、第1のディーラ装置12Aに送信していない。しかし、第1のディーラ装置12Aは、実数αjを、第2のディーラ装置12Bと、合計k-1個のサーバに送信し、第2のディーラ装置12Bは、実数βjを、第1のディーラ装置12Aと、合計k-1個のサーバに送信して、以上と同様の処理をしてもよい。以下も同様である。
秘匿積和1’(非対称秘密分散対応)
演算の繰り返しに関して、秘匿積和は種々の演算に用いられるので、改めて非対称秘密分散を用いた場合を示す。これによって、かかる乱数が異なる秘匿分散値同士の和や乱数を変換した復元も同様に実現できることは明らかである。また、秘匿乗算2や秘匿除算2などの繰り返しも同様に実現できることは明らかである。
なお、以下では、a・b+cを計算する場合を説明する。
演算の繰り返しに関して、秘匿積和は種々の演算に用いられるので、改めて非対称秘密分散を用いた場合を示す。これによって、かかる乱数が異なる秘匿分散値同士の和や乱数を変換した復元も同様に実現できることは明らかである。また、秘匿乗算2や秘匿除算2などの繰り返しも同様に実現できることは明らかである。
なお、以下では、a・b+cを計算する場合を説明する。
[分散]
オ-ナA,B,Cの各指示に従って、各々の第1のディーラ装置12A~第3のディーラ装置12Cは、秘密情報a,b,cに対して独立に以下の分散値を計算し、n台のサ-バ14x1~14xnに分散保管する(i=1,…,n)。すなわち、第3のディーラ装置14CのCPU22も図71の分散処理を実行する。なお、a0,jはc0,jとなる。
Wa(xi)=a+a0,1xi+・・・+a0,k-1xi k-1
Wb(xi)=b+b0,1xi+・・・+b0,k-1xi k-1
Wc(xi)=c+c0,1xi+・・・+c0,k-1xi k-1
オ-ナA,B,Cの各指示に従って、各々の第1のディーラ装置12A~第3のディーラ装置12Cは、秘密情報a,b,cに対して独立に以下の分散値を計算し、n台のサ-バ14x1~14xnに分散保管する(i=1,…,n)。すなわち、第3のディーラ装置14CのCPU22も図71の分散処理を実行する。なお、a0,jはc0,jとなる。
Wa(xi)=a+a0,1xi+・・・+a0,k-1xi k-1
Wb(xi)=b+b0,1xi+・・・+b0,k-1xi k-1
Wc(xi)=c+c0,1xi+・・・+c0,k-1xi k-1
[積和]
図77を参照して、第1のディーラ装置14A~第3のディーラ装置14C、サーバxj、及び復元装置16のCPU22が実行する積和処理及び復元処理を説明する。即ち、秘匿乗算1’の[分散]及び[乗算](図71及び図72の処理)を実行する。サ-バ14xi(j=1,…,k)は、αaを受信し(図77のステップ602(図72も参照))、Wab’(xj)=αa・β・Wb(xi)+δ(xi)を得る(図77のステップ620参照)。
図77を参照して、第1のディーラ装置14A~第3のディーラ装置14C、サーバxj、及び復元装置16のCPU22が実行する積和処理及び復元処理を説明する。即ち、秘匿乗算1’の[分散]及び[乗算](図71及び図72の処理)を実行する。サ-バ14xi(j=1,…,k)は、αaを受信し(図77のステップ602(図72も参照))、Wab’(xj)=αa・β・Wb(xi)+δ(xi)を得る(図77のステップ620参照)。
第3のディーラ装置12Cは、図77のステップ672で、k個の乱数γi(i=1,・・・,k)を生成し、その積γを計算する。
第3のディーラ装置12Cは、ステップ674で、k個のサーバxjから分散値Wc(xi)を集めて、ステップ676で、以下の分散値Wc’(xi)を計算し、ステップ678で、サーバxjに分散値Wc’(xi)送信する。ただし、δ2(x)はδ2(0)=0となるk-1次の多項式。
Wc’(xi)=γ・Wc(xi)+δ2(xi)
Wc’(xi)=γ・Wc(xi)+δ2(xi)
ディーラ装置12A,12B,12Cはそれぞれステップ678、680、682で、k個のサーバxj(j=1,・・・,k)にそれぞれのαj,βj,γjを送信する。
サーバxj(j=1,…,k)は、ステップ684で、乱数μjを生成し、αjβj/μjを計算し、ステップ686で、αjβj/μjを復元装置16に送信する。サーバxjは、ステップ688で、γj/μjを計算し、ステップ690で、γj/μjを復元装置16に送信する。
復元装置16は、ステップ692で、各αjβj/μjとαjβj/μjをかけて、αβ/μとγ/μとを計算し、ステップ694で、αβ/μとγ/μとをサーバxjに送信する。
サーバxj(j=1,…,k)は、ステップ696で、Wab’(xj)をαβ/μで割り、Wc’(xj)をγ/μで割り、Wab’(xj)=μ(ab+ab0,1xj+・・・+ab0,k-1xj^k-1)とWc’(xj)=μ(c+c0,1xi+・・・+c0,k-1xi
k-1)を計算する。
サーバxj(j=1,…,k)は、ステップ698で、Wabc’(xj)=Wab’(xj)+Wc’(xj)=μ{(ab+c)+abc0,1xi+・・・+abc0,k-1xik-1}を計算する。
[復元]
復元者の復元装置16は、ステップ701で、サーバxjからWabc’(xj)を得て、ステップ703で、μ(ab+c)を復元する。
復元装置16は、ステップ705で、サーバxjからμjを得て、ステップ707で、(ab+c)を計算する。
復元者の復元装置16は、ステップ701で、サーバxjからWabc’(xj)を得て、ステップ703で、μ(ab+c)を復元する。
復元装置16は、ステップ705で、サーバxjからμjを得て、ステップ707で、(ab+c)を計算する。
秘匿積和1’は、秘匿積和1に対応しても、αj(j=1,・・・.k)などのk個の乱数が不要であるため、大きな記憶容量の削減が実現できる。また、それに伴う通信量の削減も実現できる。また、ここではμを用いて乱数変換を行ったが、例えばαjβj/γjを計算することにより、Wc’(xj)のみγをαβに乱数変換して、乱数をαβにそろえてもよい。
秘匿乗算4’
秘密情報として0を扱う秘匿乗算4に対しても以下のように変形すれば、秘匿乗算4’への対応も可能である。
秘密情報として0を扱う秘匿乗算4に対しても以下のように変形すれば、秘匿乗算4’への対応も可能である。
[分散]
秘匿乗算1’(図71)と同じであるので(図78のステップ578も参照)、その説明を省略する。
図78(ステップ672以降)を参照して、サーバxj及び復元装置16が実行する秘匿乗算(乗算及び復元)処理を説明する。
秘匿乗算1’(図71)と同じであるので(図78のステップ578も参照)、その説明を省略する。
図78(ステップ672以降)を参照して、サーバxj及び復元装置16が実行する秘匿乗算(乗算及び復元)処理を説明する。
[乗算]
第1のディーラ装置12Aは、ステップ672で、k個の乱数αi(i=1,・・・,k)を生成し、その積αを計算する。第2のディーラ装置12Bは、ステップ674で、k個の乱数βi(i=1,・・・,k)を生成し、その積βを計算する。
第1のディーラ装置12Aは、ステップ676で、k個のサーバxjから分散値Wa(xi)を集め、ステップ678で、サ-バIDn+xiに対応する分散値Wa(x(n+xi))を計算し、ステップ680で、その分散値Wa(x(n+xi))にαをかけた分散値Wa’(xi)をサーバxjに送信する。
第1のディーラ装置12Aは、ステップ672で、k個の乱数αi(i=1,・・・,k)を生成し、その積αを計算する。第2のディーラ装置12Bは、ステップ674で、k個の乱数βi(i=1,・・・,k)を生成し、その積βを計算する。
第1のディーラ装置12Aは、ステップ676で、k個のサーバxjから分散値Wa(xi)を集め、ステップ678で、サ-バIDn+xiに対応する分散値Wa(x(n+xi))を計算し、ステップ680で、その分散値Wa(x(n+xi))にαをかけた分散値Wa’(xi)をサーバxjに送信する。
第2のディーラ装置12Bは、ステップ682で、k個のサーバxjから分散値Wb(xi)を集めて、ステップ684で、サ-バIDn+xiに対応する分散値Wb(x(n+xi))を計算し、ステップ686で、その分散値Wb(x(n+xi))にβをかけた分散値Wb’(xi)をサーバxjに送信する。
サーバxjは、ステップ688で、Wab(xi)=Wa(xi)・Wb(xi)とWab’(xi)=Wa’(xi)・Wb’(xi)を計算する(i=1,…,n)。
[復元]
第1のディーラ装置12Aは、ステップ690で、第2のディーラ装置12Bを含むk個のサーバxj(j=1,・・・,k)にαjを送信する。
第1のディーラ装置12Aは、ステップ690で、第2のディーラ装置12Bを含むk個のサーバxj(j=1,・・・,k)にαjを送信する。
第2のディーラ装置12Bは、ステップ692で、第1のディーラ装置12Aを含むk個のサーバxj(j=1,・・・,k)にβjを送信する。
サーバxj(j=1,…,k)は、ステップ694で、積αjβjを計算する。
サーバxj(j=1,…,k)は、ステップ696で、Wab(xj)とWab’(xj)とαjβjを復元者の復元装置16に送信する。
サーバxj(j=1,…,k)は、ステップ694で、積αjβjを計算する。
サーバxj(j=1,…,k)は、ステップ696で、Wab(xj)とWab’(xj)とαjβjを復元者の復元装置16に送信する。
復元装置16は、ステップ698で、全てのαjβjをかけてαβを計算し、Wab’(xj)を割って、Wab’(xj)/αβを計算する。
復元装置16は、ステップ700で、Wab(xj)とWab’(xj)/αβから2k-1個の分散値を用いてabを復元する。
秘匿乗算5に関しても演算中、αj,βjなどと同様にrj,qjを処理すればよい。[次数変換]に関しても、αj,βjを直接ディーラ装置からもらうようにすればよい。
秘匿更新1については以下のようにする。非対称秘密分散の特徴の1つはオ-ナが秘匿
復元装置16は、ステップ700で、Wab(xj)とWab’(xj)/αβから2k-1個の分散値を用いてabを復元する。
秘匿乗算5に関しても演算中、αj,βjなどと同様にrj,qjを処理すればよい。[次数変換]に関しても、αj,βjを直接ディーラ装置からもらうようにすればよい。
秘匿更新1については以下のようにする。非対称秘密分散の特徴の1つはオ-ナが秘匿
演算に参加可能という点である。よって、k-1台のサ-バをオ-ナとし、オ-ナが直接他のサ-バに対する差分値を計算すればサ-バxkは不要となる。オ-ナの計算負荷は増えるが、オ-ナは異なる乱数を今までの鍵を用いて出力する、または自分が管理する鍵を変えて異なる乱数を出力するだけで更新ができる。秘匿更新2~5においてもオーナが更新処理(乱数発生と計算処理など)を行えば安全性は向上する。
秘匿検索2’(検索サーバ18を利用する)
秘匿検索に対しても、Tj(xi)とRj(xi)のうちh個をオ-ナが1つの鍵から生成できるため、h台のサ-バの削減ができる。また、各サ-バが保存する情報も秘密情報に相当するkjを秘匿化せずに秘密分散した分散値1つだけであるので、記憶容量は削減される。また、計算量もRj(xi)を解くことがないため削減される。
秘匿検索に対しても、Tj(xi)とRj(xi)のうちh個をオ-ナが1つの鍵から生成できるため、h台のサ-バの削減ができる。また、各サ-バが保存する情報も秘密情報に相当するkjを秘匿化せずに秘密分散した分散値1つだけであるので、記憶容量は削減される。また、計算量もRj(xi)を解くことがないため削減される。
ただし、乱数rjに対する分散値Rj(xi)が必要なため、他の実施例と同様にRj(xi)も削除する場合は以下のようになる。これにより、非対称秘密分散では秘匿検索に対しても1つの秘密情報に対して1つの分散値を記憶していればよい。以下では実用的な秘匿検索2に対する手法を示すが、秘匿検索1に対しても同様の対応ができることは明らかである。
[分散]
オ-ナの第1のディーラ装置12AのCPU22は、m個の秘密情報に対する検索IDをkj(j=1,…,m)として、第7の実施の形態の秘匿乗算1’(図71のステップ572~578)の各処理を実行する。即ち、1つの鍵から下記の形を持つ自らの分散値Tj(x1)~Tj(xh)を生成し、それらと秘密情報を用いて他のサ-バxh+1~xnが持つ分散値Tj(xh+1)~Tj(xn)を求め、各サ-バに送る(hはk-1以下の整数)。ただし、分散値は検索IDであるkjに応じて昇順に並べられているとする。
Tj(xi)=kj+t’j1xi+t’j2xi 2+…+t’jk-1xi k-1
(i=1,…,n)
オ-ナの第1のディーラ装置12AのCPU22は、m個の秘密情報に対する検索IDをkj(j=1,…,m)として、第7の実施の形態の秘匿乗算1’(図71のステップ572~578)の各処理を実行する。即ち、1つの鍵から下記の形を持つ自らの分散値Tj(x1)~Tj(xh)を生成し、それらと秘密情報を用いて他のサ-バxh+1~xnが持つ分散値Tj(xh+1)~Tj(xn)を求め、各サ-バに送る(hはk-1以下の整数)。ただし、分散値は検索IDであるkjに応じて昇順に並べられているとする。
Tj(xi)=kj+t’j1xi+t’j2xi 2+…+t’jk-1xi k-1
(i=1,…,n)
[検索]
ユーザの復元装置16のCPU22は、図65のステップ482~490の処理を実行し、オーナの第1のディーラ装置12AのCPU22は、図79の分散値の計算・送信処理を実行し、第iのサーバ14xiのCPU22は、図80の差の計算・送信処理を実行し、検索サーバ18のCPU22は、図81の検索処理を実行する。なお、図79の分散値の計算・送信処理のステップ502~512は、図66のステップ502~512とほぼ同様である。
ユーザの復元装置16のCPU22は、図65のステップ482~490の処理を実行し、オーナの第1のディーラ装置12AのCPU22は、図79の分散値の計算・送信処理を実行し、第iのサーバ14xiのCPU22は、図80の差の計算・送信処理を実行し、検索サーバ18のCPU22は、図81の検索処理を実行する。なお、図79の分散値の計算・送信処理のステップ502~512は、図66のステップ502~512とほぼ同様である。
検索を希望するユ-ザの復元装置16は、検索ID=kj’に乱数qを乗じたq・kj’をオ-ナの第1のディーラ装置12Aに送信する(図65のステップ482、484)。
第1のディーラ装置12Aは、図79のステップ502で、q・kj’を受信し、ステップ504で、tjとrを生成し、ステップ506で、tj・rを計算し、ステップ508で、tj・rを復元装置16に送信する。第1のディーラ装置12Aは、ステップ510で、q・kj’にtjをかけて以下の分散値F0を計算し、ステップ512で、分散値F0をサ-バに送信する。
Fo(xi)=tj・q・kj’+bj1xi+bj2xi 2+…+bjk-1xi k-1
よって、第iのサーバ14xiは、図80のステップ522で、分散値Fo(xi)を受信する。
Fo(xi)=tj・q・kj’+bj1xi+bj2xi 2+…+bjk-1xi k-1
よって、第iのサーバ14xiは、図80のステップ522で、分散値Fo(xi)を受信する。
復元装置16は、tj・rにqをかけて以下の分散値Fu(xi)を計算し(図65のステップ488)、分散値Fu(xi)を各サ-バに送信する(ステップ490)。
Fu(xi)=tj・r・q+cj1xi+cj2xi 2+…+cjk-1xi k-1
よって、第iのサーバ14xiは、図80のステップ524で、分散値Fu(xi)を受信する。
Fu(xi)=tj・r・q+cj1xi+cj2xi 2+…+cjk-1xi k-1
よって、第iのサーバ14xiは、図80のステップ524で、分散値Fu(xi)を受信する。
第iのサーバ14xi(i=1、2、・・・k)は、ステップ525Aで、Tj(xi)を第1のディーラ装置12Aに送信する。第1のディーラ装置12Aは、図79のステップ513で、Tj(xi)を、k個集めて、ステップ515で、以下の分散値T’j(xi)を計算し、ステップ517で、分散値T’j(xi)を第iのサーバ14xiに送信する。
T’j(xi)=rj・Tj(xi)+δ(xi)
ただし、rjはkj毎に定まる乱数であり、δ(xi)はδ(0)=0となるk-1次の多項式である。
ただし、rjはkj毎に定まる乱数であり、δ(xi)はδ(0)=0となるk-1次の多項式である。
第iのサーバ14xiは、図80のステップ527で、分散値T’j(xi)を受信する。
第1のディーラ装置12Aは、図79のステップ519で、r・rjを第iのサーバ14xiに送信する。第iのサーバ14xiは、図80のステップ529で、r・rjを受信し、ステップ530Aで、分散値T’j(xi)を検索サーバ18に送信する。
検索サーバ18は、図81のステップ541で、T’j(xi)を受信し、ステップ543で、rj・kjを計算し、ステップ545で、rj・kjを第iのサーバ14xiに送信する。
第iのサーバ14xiは、図80のステップ531で、rj・kjを受信し、ステップ533で、以下の差を計算して、ステップ535で、差を検索サーバ18に送信する。
rj・kj・Fu(xi)-r・rj・Fo(xi)=tj・r・rj・q{(kj-kj’)+(cj1-bj1)xi+…+(cjk-1-bjk-1)xi k-1}
第iのサーバ14xiは、図80のステップ531で、rj・kjを受信し、ステップ533で、以下の差を計算して、ステップ535で、差を検索サーバ18に送信する。
rj・kj・Fu(xi)-r・rj・Fo(xi)=tj・r・rj・q{(kj-kj’)+(cj1-bj1)xi+…+(cjk-1-bjk-1)xi k-1}
検索サーバ18は、図81のステップ547で、差を受信し、ステップ549で、差の多項式を解いて定数項を求める。
以後、検索サーバ18のCPU22は、ステップ551~563の処理を実行する。なお、ステップ551~563は、図68のステップ552~564に対応するので、その説明を省略する。なお、検索サーバ18が、図81のステップ561、563でjを指示すると、第iのサーバ14xiは、jの指示を受信し、これにより、図80のステップ537だ肯定判定され、差の計算・送信処理はステップ525Aに戻る。
以後、検索サーバ18のCPU22は、ステップ551~563の処理を実行する。なお、ステップ551~563は、図68のステップ552~564に対応するので、その説明を省略する。なお、検索サーバ18が、図81のステップ561、563でjを指示すると、第iのサーバ14xiは、jの指示を受信し、これにより、図80のステップ537だ肯定判定され、差の計算・送信処理はステップ525Aに戻る。
<第8の実施の形態>
分散値の記憶容量を削減する手法としてランプ型秘密分散法が知られている。ランプ型秘密分散法は秘密情報SをL(≦k)個に分割してs1,・・・,sLとし、aL+1,・・・,ak-1を乱数としてk-1次多項式の係数とする。すなわち、以下の多項式を立て、W(xi)を第iのサーバ14xiの分散値とする。この場合、Sをdビットで素数p(>2d)未満の数とすると、siはd/Lビットで素数p’(>2d/L)未満の数となり、演算もp’を法として行えるので、分散値のサイズが1/Lになり記憶容量の削減が可能になる。
W(x)=s1+s2x+・・・+sLxL+aL+1xL+1+・・・+ak-1xk-1
この場合、k-L個までの分散値を集めても乱数aiが残るため秘密情報は漏洩しないが、k-L+1以上の分散値を集めると乱数であるai(i=L+1,・・・,k-1)が失われるので、si(i=1,・・・, L)間の関係がわかることから、情報が部分的に漏洩する。最後に、k個の分散値がわかるとすべてのsiが特定されて、秘密情報Sが復元されるという特徴をもつ。
分散値の記憶容量を削減する手法としてランプ型秘密分散法が知られている。ランプ型秘密分散法は秘密情報SをL(≦k)個に分割してs1,・・・,sLとし、aL+1,・・・,ak-1を乱数としてk-1次多項式の係数とする。すなわち、以下の多項式を立て、W(xi)を第iのサーバ14xiの分散値とする。この場合、Sをdビットで素数p(>2d)未満の数とすると、siはd/Lビットで素数p’(>2d/L)未満の数となり、演算もp’を法として行えるので、分散値のサイズが1/Lになり記憶容量の削減が可能になる。
W(x)=s1+s2x+・・・+sLxL+aL+1xL+1+・・・+ak-1xk-1
この場合、k-L個までの分散値を集めても乱数aiが残るため秘密情報は漏洩しないが、k-L+1以上の分散値を集めると乱数であるai(i=L+1,・・・,k-1)が失われるので、si(i=1,・・・, L)間の関係がわかることから、情報が部分的に漏洩する。最後に、k個の分散値がわかるとすべてのsiが特定されて、秘密情報Sが復元されるという特徴をもつ。
秘匿乗算1”(ランプ型基本形)
秘匿乗算1に対応するランプ型秘密分散を用いた秘匿乗算を以下に示す。ただし、秘密情報a,bをe進数d桁で表される素数p(>ed)未満の整数とし、a,bをL分割したah,j,bh,j、パラメータα,β,αj,βjなどは素数p’(>e(d/L))未満の整数とし、秘密分散に関する演算は素数q’(>p’u:uは1以上の整数)を法として行われる。以下に示す秘匿乗算1”において、上記以外は秘匿乗算1と同様である。よって、実数演算に対しても秘密情報a,b(実数)を整数表現してp以下の整数とすれば同様に対応できる。
秘匿乗算1に対応するランプ型秘密分散を用いた秘匿乗算を以下に示す。ただし、秘密情報a,bをe進数d桁で表される素数p(>ed)未満の整数とし、a,bをL分割したah,j,bh,j、パラメータα,β,αj,βjなどは素数p’(>e(d/L))未満の整数とし、秘密分散に関する演算は素数q’(>p’u:uは1以上の整数)を法として行われる。以下に示す秘匿乗算1”において、上記以外は秘匿乗算1と同様である。よって、実数演算に対しても秘密情報a,b(実数)を整数表現してp以下の整数とすれば同様に対応できる。
[分散]
秘密情報aをもつオーナAの第1のディーラ装置12AのCPU22は、図82に示す分散処理を実行する。即ち、ステップ702で、素数p’未満のk個の乱数αiを生成し、q’を法としてその積αを計算する。
α=α1・α2・・・αk
ステップ704で、素数p未満の秘密情報aをL分散して素数p’未満のa0,0,・・・,a0,L-1とし、以下の分散値を計算する。
Wa’(xi)=α(a0,0+a0,1xi+・・・+a0,k-1xi k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
ただし、ah,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)である。
秘密情報aをもつオーナAの第1のディーラ装置12AのCPU22は、図82に示す分散処理を実行する。即ち、ステップ702で、素数p’未満のk個の乱数αiを生成し、q’を法としてその積αを計算する。
α=α1・α2・・・αk
ステップ704で、素数p未満の秘密情報aをL分散して素数p’未満のa0,0,・・・,a0,L-1とし、以下の分散値を計算する。
Wa’(xi)=α(a0,0+a0,1xi+・・・+a0,k-1xi k-1)
Wa1(xi)=α1+a1,1xi+・・・+a1,k-1xi k-1
:
Wak(xi)=αk+ak,1xi+・・・+ak,k-1xi k-1
ただし、ah,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)である。
ステップ706で、分散値Wa’(xi)、Wak(xi)を、第1のサーバ14x1~第nのサーバ14nに送信する。
秘密情報bをもつオーナBの第2のディーラ装置12BのCPU22は、図83に示す分散処理を実行する。即ち、ステップ712で、素数p’未満のk個の乱数βiを生成し、q’を法としてその積βを計算する。
β=β1・β2・・・βk
β=β1・β2・・・βk
ステップ714で、素数p未満の秘密情報bをL分散して素数p’未満のb0,0,・・・,b0,L-1とし、以下の分散値を計算する(Wa’(xi)とWah(xi)はqを法とする)。
Wb’(xi)=β(b0,0+b0,1xi+・・・+b0,k-1xik-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xik-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xik-1
ただし、bh,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)である。
Wb’(xi)=β(b0,0+b0,1xi+・・・+b0,k-1xik-1)
Wb1(xi)=β1+b1,1xi+・・・+b1,k-1xik-1
:
Wbk(xi)=βk+bk,1xi+・・・+bk,k-1xik-1
ただし、bh,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)である。
ステップ716で、分散値Wb’(xi)、Wb1(xi)~Wbk(xi)を第1のサーバ14x1~第nのサーバ14xnに送信する。
[復元]
図84を参照して、サーバシステムのサーバ及び復元装置16が実行する復元処理を説明する。サーバシステム内の1つの第dのサーバ14xdは、図84のステップ722で、他の第jのサーバ14xj(j=1,・・・,k)からWa’(xi)をk個集め、ステップ724で、q’を法としてαa0,j (j=0,・・・,k-1)を復元し、桁合わせを考慮してαa0,jを加算しながらαaを計算する。
図84を参照して、サーバシステムのサーバ及び復元装置16が実行する復元処理を説明する。サーバシステム内の1つの第dのサーバ14xdは、図84のステップ722で、他の第jのサーバ14xj(j=1,・・・,k)からWa’(xi)をk個集め、ステップ724で、q’を法としてαa0,j (j=0,・・・,k-1)を復元し、桁合わせを考慮してαa0,jを加算しながらαaを計算する。
第dのサーバ14xdは、ステップ726で、他の第jのサーバ14xj(j=1,・・・,k)からWb’(xi)をk個集め、ステップ728で、q’を法としてβb0,j (j=0,・・・,k-1)を復元し、桁合わせを考慮してβb0,jを加算しながらβbを計算する。
復元に参加する第jのサーバ14xj(j=1,…,k)は、ステップ730、734のそれぞれで、指定されたjに応じたWaj(xi)とWbj(xi)を集め(i=1,…,k)、ステップ732、736で、q’を法として1サーバ当たりαjとβjを1つずつ復元する
第jのサーバ14xj(j=1,…,k)は、ステップ738で、積αjβjを計算し、ステップ740で、復元装置16に送信する。復元装置16は、ステップ742で、αjβjからαβを合成する。
第dのサーバ14xdは、ステップ744で、αaとβbとの積αaβbを計算し、ステップ746で、αβabを復元装置16に送信する。復元装置16は、ステップ748で、αβでαβabを割ってabを計算する。
以下に、以上の処理の具体例を示す。秘密情報を10進数2桁のa=12, b=20の場合を考える。よって、p=101(>102),p’=11(>10),q'=101(>102),k=n=2とする。
[分散]
(図82のステップ702)
k=2より、オーナAの第1のディーラ装置12Aは、2つの乱数をα1=2、α2=2としα=α1・α2=2×2=4を計算する。
(図82のステップ702)
k=2より、オーナAの第1のディーラ装置12Aは、2つの乱数をα1=2、α2=2としα=α1・α2=2×2=4を計算する。
(ステップ704)
a(=12)を2分割してa0,0=2,a0,1=1とし、Wa1,Wa2に用いる乱数をa1,1=3,a2,1=5とすると、以下が計算される。
Wa'(1)=4(2+1*1)=12
Wa'(2)=4(2+1*2)=16
Wa1(1)=2+3=5
Wa1(2)=2+3*2=8
Wa2(1)=2+5=8
Wa2(2)=2+5*2=12
a(=12)を2分割してa0,0=2,a0,1=1とし、Wa1,Wa2に用いる乱数をa1,1=3,a2,1=5とすると、以下が計算される。
Wa'(1)=4(2+1*1)=12
Wa'(2)=4(2+1*2)=16
Wa1(1)=2+3=5
Wa1(2)=2+3*2=8
Wa2(1)=2+5=8
Wa2(2)=2+5*2=12
(図83のステップ712)
β1=1,β2=2とし、β=β1・β2=1×2=2を計算する。
β1=1,β2=2とし、β=β1・β2=1×2=2を計算する。
(ステップ714)
b(=20)を2分割してb0,0=0,b0,1=2とし、Wb1,Wb2に用いる乱数をb1,1=4,b2,1=6とすると、以下が計算される。
Wb'(1)=2(0+2*1)=4
Wb'(2)=2(0+2*2)=8
Wb1(x1)=1+4=5
Wb1(x2)=1+4*2=9
Wb2(x1)=2+6=8
Wb2(x2)=2+6*2=14
b(=20)を2分割してb0,0=0,b0,1=2とし、Wb1,Wb2に用いる乱数をb1,1=4,b2,1=6とすると、以下が計算される。
Wb'(1)=2(0+2*1)=4
Wb'(2)=2(0+2*2)=8
Wb1(x1)=1+4=5
Wb1(x2)=1+4*2=9
Wb2(x1)=2+6=8
Wb2(x2)=2+6*2=14
[復元]
(図84のステップ722、724)
Wa'(1)=12=s1+s2、Wa'(2)=16=s1+s2*2より、Wa'(2)-Wa'(1)を計算し、4=s2=αa0,1、s1=12-4=8=αa0,0より、桁あわせをしてαa0,1*10+αa0,0=8+4*10=48を得る。
(図84のステップ722、724)
Wa'(1)=12=s1+s2、Wa'(2)=16=s1+s2*2より、Wa'(2)-Wa'(1)を計算し、4=s2=αa0,1、s1=12-4=8=αa0,0より、桁あわせをしてαa0,1*10+αa0,0=8+4*10=48を得る。
(ステップ726、728)
βb0,1=4、βb0,0=4-4=0を復元し、βb0,1*10+b0,0=4*10+0=40を得る。
βb0,1=4、βb0,0=4-4=0を復元し、βb0,1*10+b0,0=4*10+0=40を得る。
(ステップ730~736)
第1のサーバ14x1は、α1=2、β1=1を復元し、第2のサーバ14x2は、α2=2、β2=2を復元する。
第1のサーバ14x1は、α1=2、β1=1を復元し、第2のサーバ14x2は、α2=2、β2=2を復元する。
(ステップ738、740)
第1のサーバ14x1は、α1*β1=2*1=2を、第2のサーバ14x2は、α2*β2=2*2=4を計算し、復元装置16に送信する。
第1のサーバ14x1は、α1*β1=2*1=2を、第2のサーバ14x2は、α2*β2=2*2=4を計算し、復元装置16に送信する。
(ステップ744、746)
αa*βb=48*40=1920を復元装置16に送信する。
αa*βb=48*40=1920を復元装置16に送信する。
(ステップ742、748)
1920/(2*4)=240を計算する。
1920/(2*4)=240を計算する。
秘匿乗算1では十進数3桁で考えてaを0~999とすると、pは103より大きいp=1009とすることができる。よって、最も小さなqはq(>106)の素数であるのでq=1000003となる。よって、[分散]では1000003以下の分散値をk+1個記憶する必要がある。
それに対して、秘匿乗算1”ではL=3とすると、a0,0,a0,1,a0,2が0~9となり、e=10,d=3,L=3よりp’=11(>e(d/L))とすることができる。qはu=2とするとq(>e(d/L)u)より、q=101とすることができる。よって、秘匿乗算1”の[分散]では101以下の分散値をk+1個記憶すればよく記憶容量が削減されていることがわかる。
また、[復元]にある桁上げを注意しながらは、例えば、a=583とすると、a0,0=5,a0,1=8, a0,2=3となる。α=9とするとq=101を法として、各々αa0,0=45、αa0,1=72、αa0,2=27が復元される。a0,0,a0,1,a0,2は十進数で一桁ずつ桁がずれているので、十進数で一桁ずつずらしながら加算することによってαa0,0*102+αa0,0*10+αa0,0=45*100+72*10+27=5247=9*583=αaが得られる。これらの特徴は請求項14に示される。
また提案方式の記憶容量削減以外の利点として、各係数はαやβなどの乱数が最後までかかるので、従来のランプ型と異なり、k-L個以上の分散値があっても情報が漏洩せず、安全性が向上する。また、以下のように鍵rでxを暗号化する暗号e_r(x)を用いることにより、さらに安全性向上を向上させることができる。同じサイズの暗号文を作る手法としては、秘密情報と同じサイズの乱数をEXORする、またはq’を法として乱数をかけるなどが考えられる。
秘匿乗算1”(ランプ型拡張形)
[分散]
(ランプ型拡張形)の秘匿乗算1”では、ランプ型基本形の図82のステップ702,706、図83のステップ712、716を実行するが、第1に、図82のステップ704に代えて、以下の処理を実行する。即ち、鍵r1を用いてαa0,jを暗号化して同じサイズの暗号文e_r1(αa0,j)を作り、以下の分散値Wa’(xi)、Wr1(xi)を計算する。
Wa’(xi)=e_r1(αa0,0)+e_r1(αa0,1)xi+・・・+e_r1(αa0,k-1)xi k-1
Wr1(xi)=r1+r1,1xi+・・・+r1,k-1xi k-1
ただし、ah,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)
第2に、図83のステップ714に代えて、以下の処理を実行する。即ち、鍵r1を用いてαa0,jを暗号化して同じサイズの暗号文e_r1(αa0,j)を作り、以下の分散値Wb’(xi)、Wr2(xi)を計算する。
Wb’(xi)=e_r2(βb0,0)+e_r2(βb0,1)xi+・・・+e_r2(βb0,k-1)xi k-1
Wr2(xi)=r2+r2,1xi+・・・+r2,k-1xi k-1
ただし、ah,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)
[分散]
(ランプ型拡張形)の秘匿乗算1”では、ランプ型基本形の図82のステップ702,706、図83のステップ712、716を実行するが、第1に、図82のステップ704に代えて、以下の処理を実行する。即ち、鍵r1を用いてαa0,jを暗号化して同じサイズの暗号文e_r1(αa0,j)を作り、以下の分散値Wa’(xi)、Wr1(xi)を計算する。
Wa’(xi)=e_r1(αa0,0)+e_r1(αa0,1)xi+・・・+e_r1(αa0,k-1)xi k-1
Wr1(xi)=r1+r1,1xi+・・・+r1,k-1xi k-1
ただし、ah,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)
第2に、図83のステップ714に代えて、以下の処理を実行する。即ち、鍵r1を用いてαa0,jを暗号化して同じサイズの暗号文e_r1(αa0,j)を作り、以下の分散値Wb’(xi)、Wr2(xi)を計算する。
Wb’(xi)=e_r2(βb0,0)+e_r2(βb0,1)xi+・・・+e_r2(βb0,k-1)xi k-1
Wr2(xi)=r2+r2,1xi+・・・+r2,k-1xi k-1
ただし、ah,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)
[復元]
図85を参照して、サーバシステム内のサーバ、及び復元装置16が実行する復元処理を説明する。
サーバシステム内の1つの第dのサーバ14xdは、図85のステップ722’、726’のそれぞれで、他のサーバからWr1(xi)とWr2(xi)を各々k個集め、ステップ724’、728’で、r1とr2を復元する。
図85を参照して、サーバシステム内のサーバ、及び復元装置16が実行する復元処理を説明する。
サーバシステム内の1つの第dのサーバ14xdは、図85のステップ722’、726’のそれぞれで、他のサーバからWr1(xi)とWr2(xi)を各々k個集め、ステップ724’、728’で、r1とr2を復元する。
第dのサーバ14xdは、ステップ722”で、他のサーバからWa’(xi)をk個集め、ステップ724”で、e_r1(αa0,j)(j=0,・・・,k-1)を復元し、r1を用いてαa0,jを復元し、桁合わせを考慮してαa0,jを加算しながらαaを計算する。
第dのサーバ14xdは、ステップ726”で、他のサーバからWb’(xi)をk個集め、ステップ728”で、qe_r2(βb0,j)(j=0,・・・,k-1)を復元し、r2を用いてβb0,jを復元し、桁合わせを考慮してβb0,jを加算しながらβbを計算する。
以後、秘匿乗算1”[復元]の図84のステップ730以降の処理と同様の処理を実行して、abを得る。
秘匿乗算の繰り返し(秘匿乗算2)に関しても、基本形、拡張系ともに途中段階で復元した際の桁合わせに考慮すれば同様に拡張できることは明らかである。
また、第2の実施の形態の秘匿除算、第3の実施の形態の演算の繰り返しに関しても、基本形、拡張系ともに途中段階で復元した際の桁合わせに考慮すれば同様に拡張できることは明らかである。ただし、分散値同士の加算は基本形では乱数変換を行えば桁毎の加算となっているため、そのまま適用できる。拡張系では桁毎にかかる乱数が異なるため、一度復元をして乱数を合わせて桁あわせをしながら加算する必要がある。以下に基本形のアルゴリズムを示す。
[分散]
オーナAの第1のディーラ装置12Aは、秘密情報aをL分割してa0,0,・・・,a0,L-1とし、以下の分散値を計算する。ただし、ah,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)である。
Wa(xi)=a0,0+a0,1xi+・・・+a0,k-1xi k-1
オーナAの第1のディーラ装置12Aは、秘密情報aをL分割してa0,0,・・・,a0,L-1とし、以下の分散値を計算する。ただし、ah,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)である。
Wa(xi)=a0,0+a0,1xi+・・・+a0,k-1xi k-1
オーナBの第2のディーラ装置12Bは、秘密情報bをL分割してb0,0,・・・,b0,L-1とし、以下の分散値を計算する。ただし、bh,j(h=0,j=L,・・・,k-1とh=1,・・・,k、j=1,・・・,k-1)はp’未満の乱数,xiはq’未満のサーバID(i=1,…,n)である。
Wb(xi)=b0,0+b0,1xi+・・・+b0,k-1xik-1
分散値Wa(xi)とWb(xi)を第1のサーバ14xi~第nのサーバ14xnに送信する。
Wb(xi)=b0,0+b0,1xi+・・・+b0,k-1xik-1
分散値Wa(xi)とWb(xi)を第1のサーバ14xi~第nのサーバ14xnに送信する。
[加算]
第iのサーバ14xi(i=1,・・・,n)は以下を計算する。
Wab(xi)=Wa(xi)+Wb(xi)=(a0,0+b0,0)+(a0,1+b0,1)xi+・・・+(a0,k-1+b0,k-1)xi k-1
第iのサーバ14xi(i=1,・・・,n)は以下を計算する。
Wab(xi)=Wa(xi)+Wb(xi)=(a0,0+b0,0)+(a0,1+b0,1)xi+・・・+(a0,k-1+b0,k-1)xi k-1
[復元]
復元装置16は第iのサーバ14xiの中のk個のサーバからk個の分散値の和Wab(xi)を集め、それを解いて(a0,0+b0,0),・・・,(a0,L+b0,L)を得る。
復元装置16は第iのサーバ14xiの中のk個のサーバからk個の分散値の和Wab(xi)を集め、それを解いて(a0,0+b0,0),・・・,(a0,L+b0,L)を得る。
復元装置16は(a0,0+b0,0),・・・,(a0,L+b0,L)を桁合わせしながら加算してa+bを得る。
第4の実施の形態の分散値同士の乗算の場合、途中段階で復元しないためそのまま適用できない。しかし、例えばe進数で考えると秘密情報aはa=a0,0+a0,1e+・・・+a0,k-1ek-1のように表せ、abの積は、
ab=(a0,0+a0,1e+・・・+a0,k-1ek-1)(b0,0+b0,1e+・・・+b0,k-1ek-1)=(a0,0b0,0)+(a0,0b0,1+a0,1b0,0)e+・・・+(a0,k-1b0,k-1)e2k-1となる。
よって、基本形の秘密分散では、Wa(x)=a0,0+a0,1x+・・・+a0,k-1xk-1、Wb(x)=b0,0+b0,1x+・・・+b0,k-1xk-1とすれば、その積はWa(x)Wb(x)=(a0,0+a0,1x+・・・+a0,k-1xk-1)(b0,0+b0,1x +・・・+b0,k-1xk-1)= (a0,0b0,0)+(a0,0b0,1+a0,1b0,0)x+・・・+(a0,k-1b0,k-1)x2k-1となり、各係数はそのまま積の各桁を表す。よって、以下のようにして秘匿乗算が実現できる。ただし、[復元]における桁合わせ(ステップ724”、728”)は上記のように各係数を各桁の値として扱うことである。
ab=(a0,0+a0,1e+・・・+a0,k-1ek-1)(b0,0+b0,1e+・・・+b0,k-1ek-1)=(a0,0b0,0)+(a0,0b0,1+a0,1b0,0)e+・・・+(a0,k-1b0,k-1)e2k-1となる。
よって、基本形の秘密分散では、Wa(x)=a0,0+a0,1x+・・・+a0,k-1xk-1、Wb(x)=b0,0+b0,1x+・・・+b0,k-1xk-1とすれば、その積はWa(x)Wb(x)=(a0,0+a0,1x+・・・+a0,k-1xk-1)(b0,0+b0,1x +・・・+b0,k-1xk-1)= (a0,0b0,0)+(a0,0b0,1+a0,1b0,0)x+・・・+(a0,k-1b0,k-1)x2k-1となり、各係数はそのまま積の各桁を表す。よって、以下のようにして秘匿乗算が実現できる。ただし、[復元]における桁合わせ(ステップ724”、728”)は上記のように各係数を各桁の値として扱うことである。
秘匿乗算3”(0対応)
[分散]
秘匿乗算1”における図82のステップ704に、Wa(xi)=a0,0+a0,1xi+・・・+a0,k-1xik-1、図83のステップ714に、Wb(xi)=b0,0+b0,1xi+・・・+b0,k-1xi k-1を計算する処理を追加する。
[乗算]
秘匿乗算3と同様であるので、その説明を省略する。
[復元]
[分散]
秘匿乗算1”における図82のステップ704に、Wa(xi)=a0,0+a0,1xi+・・・+a0,k-1xik-1、図83のステップ714に、Wb(xi)=b0,0+b0,1xi+・・・+b0,k-1xi k-1を計算する処理を追加する。
[乗算]
秘匿乗算3と同様であるので、その説明を省略する。
[復元]
復元者の復元装置16はWab(xj)とWab’(xj)/αβから2k-1個の分散値を用いて各係数を得て、桁あわせをしながらabを復元する。
上記において、Wa(xi)ちWb(xi)は乱数をかけずに秘密分散したが、例えば[分散]においてWa(xi)=γWa(xi),Wb(xi)=δWb(xi),γ=γ1・・・γk,δ=δ1・・・δkとして、[乗算]を行い、 [復元]においてWa’(xi)Wb’(xi)からαβをはずすのと同様に、Wa(xi)Wb(xi)からγδをはずす処理を行ってもよい。この場合、全ての分散値に乱数がかかるため、ランプ型秘密分散のk-1以下の分散値から秘密情報が部分的に漏れるという問題点がなくなり、安全性が向上する。
第5の実施の形態の更新では秘密情報Sは変更しないので、定数項以外の係数を操作した。ランプ型では秘密情報は定数項以外の係数にもあるので、秘密情報を含まない係数を操作することによって基本形は同様に実現できる。よって、秘匿乗算1の[分散]のように秘密情報が分散されているとすると、秘匿更新1は乱数を生成するサーバをk-L台とし、差分値を受けるサーバをn-k+L台とすればよい。また、秘匿更新2ではu-L個の乱数diL,・・・,diu-1からδi(x)=diLxL+diL+1xL+1+・・・diu-1xu-1を生成すればよい。秘匿更新3もδ(x)をδi(x)と同様の形にすればよい。拡張形において暗号の復元が必要な部分は秘密情報が含まれる係数であって、この部分は更新されない。また、乱数部分は形式上暗号化を行ったが暗号化する必要はない。よって、乱数部分の更新は基本形と同様に可能である。さらに、秘匿更新4,5においても同様に実現できることは明らかである。
秘匿検索1”(基本形:検索装置18を利用しない)
第6の実施の形態にある秘匿検索では検索IDであるkjをL分割して各係数の一致不一致を確認すれば、以下のように部分検索が可能になる。
第6の実施の形態にある秘匿検索では検索IDであるkjをL分割して各係数の一致不一致を確認すれば、以下のように部分検索が可能になる。
[分散]
第1のディーラ装置12AのCPU22は、図86(A)の分散処理を実行する。即ち、ステップ752で、m個の秘密情報(上記各実施の形態における分散により分散されている)に対応するm個の検索IDを、kj(j=1,…,m)をL分割し、kj0,・・・,kjL-1とし、ステップ754で、kj毎の乱数rjを生成し、ステップ756で、下記分散値Tj(xi) 、Rj(xi)を計算する(rji,tjiも乱数)。
Tj(xi)=rj・(kj0+・・・+kjL-1xi L-1+tjLxi L+…+tjk-1xi k-1)(i=1,…,n)
Rj(xi)=rj+rj1xi+rj2xi 2+…+rjk-1xi k-1
ステップ758で、分散値Tj(xi) 、Rj(xi)をサーバxi(i=1,…,n)に送信して、分散保管させる。
第1のディーラ装置12AのCPU22は、図86(A)の分散処理を実行する。即ち、ステップ752で、m個の秘密情報(上記各実施の形態における分散により分散されている)に対応するm個の検索IDを、kj(j=1,…,m)をL分割し、kj0,・・・,kjL-1とし、ステップ754で、kj毎の乱数rjを生成し、ステップ756で、下記分散値Tj(xi) 、Rj(xi)を計算する(rji,tjiも乱数)。
Tj(xi)=rj・(kj0+・・・+kjL-1xi L-1+tjLxi L+…+tjk-1xi k-1)(i=1,…,n)
Rj(xi)=rj+rj1xi+rj2xi 2+…+rjk-1xi k-1
ステップ758で、分散値Tj(xi) 、Rj(xi)をサーバxi(i=1,…,n)に送信して、分散保管させる。
分散値は検索IDであるkjに応じて昇順に並べられているとする。例えば、第1のサーバ14x1の記憶装置34には、図86(B)に示すように、分散値Tj(xi)、Rj(xi)が、kjに応じて昇順に並べて、記憶されている。なお、分散値Tj(xi)、Rj(xi)に対応して、秘密情報に対応する分散値が対応付けられている。
[検索]
復元装置16のCPU22は、図87のjの指示処理を実行し、第1のディーラ装置12AのCPU22は、図88のFj'(xi)の計算送信処理を実行し、第iのサーバ14xi(第1のサーバ14x1~第nのサーバ14xn)のCPU22は図89の検索処理を実行する。第iのサーバ14xiは保管分散値の中央値、すなわちj=m/2から検索を始める。
復元装置16は、図87のステップ762で、検索を希望するユーザの操作に従って、検索IDであるkj’を入力し、ステップ764で、kj’をL分割し、ステップ766で、kj’に乱数qを乗じたq・k’ji(i=0,・・・, L-1)を計算し、ステップ768で、q・k’jiを第1のディーラ装置12Aに送信する。
第1のディーラ装置12Aは、図88のステップ804で、q・k’jiを受信し、ステップ806、808で、q・k’jiをランプ型秘密分散する。即ち、第1のディーラ装置12Aは、ステップ806で、以下のFj'(xi)を計算し(L次以上の乱数はb’ji=q・bjiとなる)、ステップ808で、Fj'(xi)を第iのサーバ14xiに送信する。
Fj'(xi)=q(k’j0+・・・+kjL-1xi L-1+bjLxi L+・・・+bjk-1xi k-1)(i=1,…,n)
Fj'(xi)=q(k’j0+・・・+kjL-1xi L-1+bjLxi L+・・・+bjk-1xi k-1)(i=1,…,n)
第iのサーバ14xiは、図89のステップ812で、第1のディーラ装置12AからFj'(xi)を受信し、ステップ814で、jを設定する。なお、本処理が最初に実行されるとき、jは、m/2に設定される。ステップ816で、jに対応するTj(xi)(i=1,…,k)を読み出し、ステップ818で、Tj(xi)をユーザの復元装置16に送信する。
復元装置16は、図87のステップ770で、Tj(xi)を受信し、ステップ772で、δ(x)=dLxi
L+・・・+dk-1xi
k-1を生成し、ステップ774で、以下のFj(xi)を計算し、ステップ776で、Fj(xi)を第iのサーバ14xiに送信する。
Fj(xi)=q・Tj(xi)+δ(xi) (i=1,…,k)
Fj(xi)=q・Tj(xi)+δ(xi) (i=1,…,k)
第iのサーバ14xiは、図89のステップ820で、復元装置16からFj(xi)を受信し、ステップ822で、Rj(xi)からrjを復元する。
ステップ824で、乱数tjを生成し、ステップ826で、以下の差を計算し、ステップ828で、差を復元装置16に送信する。
tj{Fj(xi)-rjFj’(xi)}=tj・rj・q{(k’j0-kj0)+・・・+(k’jL-1-kjL-1)xi L-1+(bjL-t’jL)xi L+・・・+(bjk-1- t’jk-1)xi k-1}
ただし、t’ji=tji+di/q
tj{Fj(xi)-rjFj’(xi)}=tj・rj・q{(k’j0-kj0)+・・・+(k’jL-1-kjL-1)xi L-1+(bjL-t’jL)xi L+・・・+(bjk-1- t’jk-1)xi k-1}
ただし、t’ji=tji+di/q
復元装置16は、図87のステップ778で、差を受信し、ステップ780で、差の多項式を解いて、定数項を求め、ステップ782で、何れかの定数項の係数差分が0か否かを判断する。部分一致が1つでよいとする場合には、ステップ782以降を図81のステップ551以降の処理と同様の処理を実行することができる。しかし、最初に見つかった部分一致検索IDに連続してその上位の部分検索IDが一致しているかを見る場合の処理を以下に説明する。これも中央値から検索すとする。また、第5の実施の形態のL個に分解していない検索IDの差分は上位桁の結果が支配的であるので、全体の検索位置は最上位桁の差分値を第5の実施の形態における全体の差分値と同様にみなして検索を行う。また、部分一致があった場合、簡単のためそのIDの上位桁のIDの部分一致を検索するとする。
上記のように、ステップ782で、係数差分による検索を行って、どこかの係数差分に0があるか否かを判断する。どこかの係数差分に0がなければ最上位桁の係数差分を全体の差分として第5の実施の形態と同様に、jを1インクリメントして、次の検索位置を定め、ステップ770にに戻る。
(1)ステップ782で、0となる係数差分があると判断されれば、そのIDの下位桁の係数差分を見る。以降簡単のため、最初に見つかった部分検索IDをkjiとし、その上位桁の部分検索IDをkji-1として説明を行う。即ち、ステップ786では、桁を識別する変数iを1デクリメントする。
ステップ788で、下位の桁iの係数差分が0か否かを判断する、下位の桁iが0と判断された場合には、ステップ790で、検索IDをjとして本処理を終了する。下位の桁iが0と判断されなかった場合には、ステップ792で、下位の桁iにおけるkji-1の係数差分は正か否かを判断する。正と判断されれば、ステップ794で、検索位置jを1インクリメントし、負と判断されれば、ステップ796で、検索位置を1デクリメントする。
ステップ798で、前回と今回とのkjiの係数差分が0のままであるか否かを判断する。
ステップ788で、下位の桁iの係数差分が0か否かを判断する、下位の桁iが0と判断された場合には、ステップ790で、検索IDをjとして本処理を終了する。下位の桁iが0と判断されなかった場合には、ステップ792で、下位の桁iにおけるkji-1の係数差分は正か否かを判断する。正と判断されれば、ステップ794で、検索位置jを1インクリメントし、負と判断されれば、ステップ796で、検索位置を1デクリメントする。
ステップ798で、前回と今回とのkjiの係数差分が0のままであるか否かを判断する。
(2)前回と今回とのkjiの係数差分が0でない場合には、条件を満たさないとして、ステップ800で、検索IDなしとして、処理を終了し、前回と今回とのkjiの係数差分が0であれば、ステップ794又はステップ796におけるjを指示して、本処理はステップ770に戻って、係数差分により検索を行う。
上記はある部分一致とその上位桁の連続一致としたが、一致する部分検索IDを指定する場合、ステップ782で、「指定された係数差分が0であるか?」とすればよい。また、上位桁の連続一致であればkji-1の係数差分による次の検索方向を逆(i←i+1)にすればよい。更に、連続一致でなくてもよい場合、ステップ786の「i←i-1」を「i←r(r=1,・・・L,i≠r)」とし、ステップ788)の「下位桁の係数差分」を「その他の係数差分」とし、ステップ788の「下位桁iの係数差分が0が」を「どこかに係数差分が0となるkjrがあるか」とし、ステップ790では、「予め定められた方向に検索位置を1ずらして係数差分による検索を行う。」とする。また、3つ以上の一致を見たい場合は2つ一致している状態を1つ一致している状態に置き換えて処理を繰り返せばよい。
ところで、上記[検索]を秘匿検索1[検索]と同様の処理とし、検索ID全ての差分が0となる分散値を検索するようにすれば、通常の秘匿検索が実現できる。また、通常の秘匿検索を行い、完全に一致する検索IDが見つからないときに、検索課程で最も部分一致が多かった位置に戻り、上記定数項の係数差分の判定処理(ステップ782以降の処理)の部分検索の拡大処理を行うこともできる。さらに、[検索]においてユーザがq・k’ji(i=0,・・・, L-1)をオーナの第1のディーラ装置12Aに送るときに、その重要度をq・k’ji(i=0,・・・, L-1)毎に指示していればその重要度に応じた部分検索も可能である。例えば、k’j3が最も重要である場合、検索課程においてその前後のk’j2やk’j4などにおいて部分一致があった場合、その中間を検索することによりk’j3の部分一致に絞り込んでいくことも可能である。
また、拡張形に対しては暗号e_r(x)がAESのような暗号である場合適用は難しいが、例えば係数aiに乱数tiをかけることによって暗号化する場合には以下のような拡張が可能である。
秘匿検索1”(拡張形:検索装置18を利用しない)
[分散]
分散処理は、上記図86(A)と同様である。即ち、オーナの第1のディーラ装置12Aは、m個の秘密情報に対応するm個の検索IDを、kj(j=1,…,m)をL分割してkj0,・・・,
kjL-1とし(ステップ752)、kj毎の乱数rjとtを生成し(ステップ754)、下記分散値Tj(xi)を計算し(ステップ756)、分散値Tj(xi)、Rj(xi)を第iのサーバ14xi(i=1,…,n)に分散保管させる(rji,tjiも乱数)(ステップ758)。
Tj(xi)=rj・(kj0+・・・+tL-1kjL-1xi L-1+tLtjLxi L+…+tk-1tjk-1xi k-1)(i=1,…,n)
Rj(xi)=rj+rj1xi+rj2xi 2+…+rjk-1xi k-1
ただし、分散値は検索IDであるkjに応じて昇順に並べられているとする。
[検索]
[分散]
分散処理は、上記図86(A)と同様である。即ち、オーナの第1のディーラ装置12Aは、m個の秘密情報に対応するm個の検索IDを、kj(j=1,…,m)をL分割してkj0,・・・,
kjL-1とし(ステップ752)、kj毎の乱数rjとtを生成し(ステップ754)、下記分散値Tj(xi)を計算し(ステップ756)、分散値Tj(xi)、Rj(xi)を第iのサーバ14xi(i=1,…,n)に分散保管させる(rji,tjiも乱数)(ステップ758)。
Tj(xi)=rj・(kj0+・・・+tL-1kjL-1xi L-1+tLtjLxi L+…+tk-1tjk-1xi k-1)(i=1,…,n)
Rj(xi)=rj+rj1xi+rj2xi 2+…+rjk-1xi k-1
ただし、分散値は検索IDであるkjに応じて昇順に並べられているとする。
[検索]
復元装置16のCPU22は、図87に示すjの指示処理を実行し、第1のディーラ装置12AのCPU22は、図88のFj’(xj)の計算・送信処理を実行し、第iのサーバ14xiのCPU22は、図89の検索処理を実行する。
検索を希望するユーザの復元装置16は、検索IDであるkj’をL分割して乱数qを乗じたq・k’ji(i=0,・・・, L-1)をオーナの第1のディーラ装置12Aに送信する(図87のステップ762~768)。
オーナの第1のディーラ装置12Aは、q・k’ji0にtiをかけてランプ型秘密分散して以下を第iのサーバ14xiに送信する(L次以上の乱数はb’ji=tiq・bjiとなる)(図88のステップ804~808)。
Fj’(xi)=q(k’j0+・・・+tL-1kjL-1xi L-1+tLbjLxi L+・・・+tk-1bjk-1xi k-1)(i=1,…,n)
Fj’(xi)=q(k’j0+・・・+tL-1kjL-1xi L-1+tLbjLxi L+・・・+tk-1bjk-1xi k-1)(i=1,…,n)
第iのサーバ14xiは保存しているTj(xi)(i=1,…,k)をユーザの復元装置16に送信する(図89のステップ814~818)。
復元装置16は、δ(x)=dLxi
L+・・・+dk-1xi
k-1を生成し、以下を計算して第iのサーバ14xiに送信する(図87のステップ770~776)。
Fj(xi)=q・Tj(xi)+δ(xi) (i=1,…,k)
Fj(xi)=q・Tj(xi)+δ(xi) (i=1,…,k)
第iのサーバ14xiは、Rj(xi)からrjを復元する(図89のステップ822)。
第iのサーバ14xiは、乱数tjを生成し、以下の差を計算して復元装置16に送信する(ステップ826、828)。
tj{Fj(xi)-rjFj’(xi)}=tj・rj・q{(k’j0-kj0)+・・・+tL-1(k’jL-1-kjL-1)xi L-1+tL(bjL-t’jL)xi L+・・・+tk-1(bjk-1- t’jk-1)xi k-1} ただし、t’ji=tji+di/q
tj{Fj(xi)-rjFj’(xi)}=tj・rj・q{(k’j0-kj0)+・・・+tL-1(k’jL-1-kjL-1)xi L-1+tL(bjL-t’jL)xi L+・・・+tk-1(bjk-1- t’jk-1)xi k-1} ただし、t’ji=tji+di/q
以後の処理(図87のステップ782以降)は、秘匿検索1”[検索]と同様である。
次に、第7の実施の形態の小型化と第8の実施の形態のランプ型による小型化は両立可能であることを説明する。例えばk=3である場合、サーバの削減数はk-1=2、秘密情報の分割はk=3まで可能であるので、L=2として秘密情報を2分割し、サーバ台数を1台削減することが可能である。すなわち、サーバの削減数をh、分割数をLとするとh+L≦kとすれば両立できる。以下、例としてh+L=kとなる場合について示す。
秘匿乗算1”(非対称秘密分散対応)
[分散]
秘密情報aをもつオーナAの第1のディーラ装置12Aは、管理する1つの鍵からh個の乱数を生成し、それを自身が持つ分散値Wa(x1)~Wa(xh)とする(hはk-1以下の整数)(図71のステップ572)。
[分散]
秘密情報aをもつオーナAの第1のディーラ装置12Aは、管理する1つの鍵からh個の乱数を生成し、それを自身が持つ分散値Wa(x1)~Wa(xh)とする(hはk-1以下の整数)(図71のステップ572)。
第1のディーラ装置12Aは、秘密情報aをL=k-h分割してa0,0~a0,L-1とし、h個の分散値Wa(x1)~Wa(xh)を以下の多項式として解いて残りのk-L=h個の乱数a0,L~a0,k-1を求める(図71のステップ574)。
Wa(xi)=a0,0+a0,1xi+・・・+a0,k-1xik-1 (i=1,・・・,h)
Wa(xi)=a0,0+a0,1xi+・・・+a0,k-1xik-1 (i=1,・・・,h)
第1のディーラ装置12Aは、Wa(xi)を用いて残りの第(h+1)のサーバ14xh+1~14xnの分散値を求め、第iのサーバ14xiに送信する(ステップ576)。
Wa(xi)=a0,0+a0,1xi+・・・+a0,k-1xi k-1 (i=h+1,・・・,n)
Wa(xi)=a0,0+a0,1xi+・・・+a0,k-1xi k-1 (i=h+1,・・・,n)
秘密情報bを持つオーナBの第2のディーラ装置12Bは、管理する1つの鍵を用いて、上記の図71のステップ572~578の処理を独立に実行し、自らの分散値Wb(x1)~Wb(xh)と、サーバxh+1~xnが持つ分散値Wb(xh+1)~Wb(xn)を求め、各サーバに送る。
[乗算]
第1のディーラ装置12Aは、k個の乱数αi(i=1,・・・,k)を生成し、その積αを計算する(図72のステップ582、584)。
第1のディーラ装置12Aは、k個の乱数αi(i=1,・・・,k)を生成し、その積αを計算する(図72のステップ582、584)。
第2のディーラ装置12Bは、k個の乱数βi(i=1,・・・,k)を生成し、その積βを計算する(図73のステップ612、614)。
第1のディーラ装置12Aは、自身を含むk個のサーバから分散値Wa(xi)を集め、k個の分散値Wa(xi)を解き、ai,jを求めて桁あわせをしながらaを計算し、αをかけたαaを復元装置16に送信する(図72のステップ586~602)。
第2のディーラ装置12Bは、自身を含むk個のサーバから分散値Wb(xi)を集め、k個の分散値Wb(xi)を解き、bi,jを求めて桁あわせをしながらbを計算し、βをかけたβbを復元装置16に送信する(図73の616~620)。
[復元]
第1のディーラ装置12Aは、自身と第2のディーラ装置12Bを含むk個のサーバxj(j=1,・・・,k)にαjを送信する(図74のステップ622)。
第2のディーラ装置12Bは自身と第1のディーラ装置12Aを含むk個のサーバxj(j=1,・・・,k)にβjを送信する(ステップ624)。
上記k個のサーバxj(j=1,…,k)は積αjβjを計算する(ステップ626)。
サーバxj(j=1,…,k)はWab’(xj)とαjβjを復元装置16に送信する(ステップ628)。
復元装置16は、αjβj(j=1,・・・,k)をかけてαβを計算する(図75のステップ630、632)。
復元装置16は、αa・βb/αβを計算してabを得る(図75のステップ634)。
このように、第7の実施の形態の小型化と第8の実施の形態のランプ型による小型化は両立可能である。
第1のディーラ装置12Aは、自身と第2のディーラ装置12Bを含むk個のサーバxj(j=1,・・・,k)にαjを送信する(図74のステップ622)。
第2のディーラ装置12Bは自身と第1のディーラ装置12Aを含むk個のサーバxj(j=1,・・・,k)にβjを送信する(ステップ624)。
上記k個のサーバxj(j=1,…,k)は積αjβjを計算する(ステップ626)。
サーバxj(j=1,…,k)はWab’(xj)とαjβjを復元装置16に送信する(ステップ628)。
復元装置16は、αjβj(j=1,・・・,k)をかけてαβを計算する(図75のステップ630、632)。
復元装置16は、αa・βb/αβを計算してabを得る(図75のステップ634)。
このように、第7の実施の形態の小型化と第8の実施の形態のランプ型による小型化は両立可能である。
<第9の実施の形態>
(k,n)閾値秘密分散法における計算量を少なくする方式として、秘密情報をビット列として扱いXORによる演算だけで秘密分散を実現する手法(以降XOR法)が提案されている。このXOR法は準同型性を持たないため,秘匿計算に対応できないという問題がある。それに対してXOR法を拡張し、秘密情報をビット列ではなく多値の数値として扱い、XORの代わりに加減算のみで秘密分散が行える手法(以降、多値化法)を提案されている[5]。しかし、[5]の手法は法とする数が大きく効率的でない。さらに、この手法は秘密情報の分散法、復元法、及び加減算は提案されているが、乗算法は提案されていない。
(k,n)閾値秘密分散法における計算量を少なくする方式として、秘密情報をビット列として扱いXORによる演算だけで秘密分散を実現する手法(以降XOR法)が提案されている。このXOR法は準同型性を持たないため,秘匿計算に対応できないという問題がある。それに対してXOR法を拡張し、秘密情報をビット列ではなく多値の数値として扱い、XORの代わりに加減算のみで秘密分散が行える手法(以降、多値化法)を提案されている[5]。しかし、[5]の手法は法とする数が大きく効率的でない。さらに、この手法は秘密情報の分散法、復元法、及び加減算は提案されているが、乗算法は提案されていない。
よって、法を最適な値とした基本的な多値化法の分散と復元アルゴリズムを以下に示す。
S(<ed)を素数p未満のe進数d桁の整数とし、それをn-1分割したものをSi(<ed/(n-1))とし(i=1,・・・,n-1)、乱数ri jもSiと同サイズの整数とし、素数p’(<ed/(n-1))を法として演算が行われる([5]の手法はpを法として演算されている)。この特徴は請求項13に示される。
第9の実施の形態では、第nのサーバ14xnは、第0のサーバ14x0とする。
S(<ed)を素数p未満のe進数d桁の整数とし、それをn-1分割したものをSi(<ed/(n-1))とし(i=1,・・・,n-1)、乱数ri jもSiと同サイズの整数とし、素数p’(<ed/(n-1))を法として演算が行われる([5]の手法はpを法として演算されている)。この特徴は請求項13に示される。
第9の実施の形態では、第nのサーバ14xnは、第0のサーバ14x0とする。
多値化法1(基本形)
[分散]
第1のディーラ装置12AのCPU22は、図90の分散処理を実行する。即ち、ステップ832で、秘密情報Sを、次のようにn-1個の部分秘密情報に分割する。ただし、S0=0とする。
[分散]
第1のディーラ装置12AのCPU22は、図90の分散処理を実行する。即ち、ステップ832で、秘密情報Sを、次のようにn-1個の部分秘密情報に分割する。ただし、S0=0とする。
ただし、i=1かつj=2,3,i≧2かつj=1のときのSj-iの符号を反転する。{ }はh=0からk-2までの加算(Σ)を意味する。
ステップ840で、分散情報Wiを第iサーバ14xiに送信する。
[復元]
復元装置16のCPU22は、図91の復元処理を実行する。即ち、ステップ842で、復元に用いるk個の分散情報Wt0,…,Wtk-1(0≦t0≦…≦tk≦n-1)をk個のサーバから集める。ステップ844で、k個の分散情報Wt0,…,Wtk-1を、以下の部分分散情報に分割する。
復元装置16のCPU22は、図91の復元処理を実行する。即ち、ステップ842で、復元に用いるk個の分散情報Wt0,…,Wtk-1(0≦t0≦…≦tk≦n-1)をk個のサーバから集める。ステップ844で、k個の分散情報Wt0,…,Wtk-1を、以下の部分分散情報に分割する。
ステップ846で、上記分割した部分分散情報を用いて2進数ベクトルV(ti,j)を生成する。
この際,(4)の式にGauss-Jordanの消去法を用いることで以下のような式が求まる。
S(k,n)=G(k,n) ・R(k,n)
S(k,n)=G(k,n) ・R(k,n)
また,S(k,n)は以下のように表せる。
S(k,n)=(S1,S2,…,Sn-1,*,…,*)T
よって,全ての部分秘密情報を得る。
以下、多値化法1(基本系)に対する例を説明する。
[分散]
以下に、上記に対する例として、k=3、n=5の場合について示す。秘密情報Sを、S=3582(0≦i≦4、0≦j≦3)とし、n-1個(桁毎)に分割する場合を考える。よって、S(<104)であり、Si(<10)となる。よって、演算はp’=11を法として行う([5]は104を超えるpを法としている)。
秘密情報S(=3582)は以下のように分割される(ステップ832)。
[分散]
以下に、上記に対する例として、k=3、n=5の場合について示す。秘密情報Sを、S=3582(0≦i≦4、0≦j≦3)とし、n-1個(桁毎)に分割する場合を考える。よって、S(<104)であり、Si(<10)となる。よって、演算はp’=11を法として行う([5]は104を超えるpを法としている)。
秘密情報S(=3582)は以下のように分割される(ステップ832)。
ステップ836で、以下を計算する。なお、h=0からk-2=1までが加算されるので、以下のように、r0
j、j=1でのr1
i+jが加算される。
サーバP0の分散情報W0は、6392となる。
サーバP1の分散情報W1は、106910となる。
サーバP2の分散情報W2は、0103となる。
サーバP3の分散情報W3は、5592となる。
サーバP4の分散情報W0は、24610となる。
サーバP1の分散情報W1は、106910となる。
サーバP2の分散情報W2は、0103となる。
サーバP3の分散情報W3は、5592となる。
サーバP4の分散情報W0は、24610となる。
[復元]
ユーザP0、P1、P2の分散情報W0、W1、W2が集まった場合(ステップ842)の復元処理を考える。
全ての部分分散情報を表すベクトルW(0,1,2),
ユーザP0、P1、P2の分散情報W0、W1、W2が集まった場合(ステップ842)の復元処理を考える。
全ての部分分散情報を表すベクトルW(0,1,2),
に変形することにより,全ての部分秘密情報のベクトルS(3,5)を求める(ステップ852)。
秘匿加算1”’
次に、文献[5]に示される分散値同士の加算による秘密情報の秘匿加算について以下に示す。ただし、この場合、Siが素数p’(<ed/(n-1))未満の整数であるのでSi+Si’より大きな素数q(<ed/(n-1)+1)を法として演算が行われる。
次に、文献[5]に示される分散値同士の加算による秘密情報の秘匿加算について以下に示す。ただし、この場合、Siが素数p’(<ed/(n-1))未満の整数であるのでSi+Si’より大きな素数q(<ed/(n-1)+1)を法として演算が行われる。
[分散]
秘密情報aをもつオーナの第1のディーラ装置12AのCPU22は多値化法[分散]の図90のステップ832~ステップ840を実行する。即ち、秘密情報Sに代えて秘密情報aをn-1個の部分秘密情報に分割してA1,・・・,An-1を生成し、第iのサーバ14xiに対する分散値Wai=Wa(i,0),・・・,Wa(i,n-1)を計算し、第iのサーバ14xiに送信する。
秘密情報aをもつオーナの第1のディーラ装置12AのCPU22は多値化法[分散]の図90のステップ832~ステップ840を実行する。即ち、秘密情報Sに代えて秘密情報aをn-1個の部分秘密情報に分割してA1,・・・,An-1を生成し、第iのサーバ14xiに対する分散値Wai=Wa(i,0),・・・,Wa(i,n-1)を計算し、第iのサーバ14xiに送信する。
また、秘密情報bをもつオーナBの第2のディーラ装置12BのCPU22は多値化法[分散] の図90のステップ832~ステップ840を実行する。即ち、秘密情報Sに代えて秘密情報bをn-1個の部分秘密情報に分割してB1,・・・,Bn-1を生成し、第iのサーバ14xiに対する分散値Wbi=Wb(i,0),・・・,Wb(i,n-1)を計算し、第iのサーバ14xiに送信する。
[加算]
第iのサーバ14xiは以下を計算する。
Wabi=Wai+Wbi=W(i,0),W(i,1),・・・,W(i,n-1)
ただし、W(i,j)=Wa(i,j)+Wb(i,j)
第iのサーバ14xiは以下を計算する。
Wabi=Wai+Wbi=W(i,0),W(i,1),・・・,W(i,n-1)
ただし、W(i,j)=Wa(i,j)+Wb(i,j)
[復元]
復元者の復元装置16のCPU22は、図92の復元処理を実行する。即ち、ステップ862で、Wabiを集め、ステップ864で、Wabjを用いて、以下の式に基づいて2進数ベクトルV(ti,j)を生成する。
復元者の復元装置16のCPU22は、図92の復元処理を実行する。即ち、ステップ862で、Wabiを集め、ステップ864で、Wabjを用いて、以下の式に基づいて2進数ベクトルV(ti,j)を生成する。
ステップ866で、加算結果a+bを復元する。すなわち、W(ti,j)とR(k,n)の関係は上記のようになるので、Gauss-Jordanの消去法を用いてR(k,n)を求めることにより、(A1+B1,・・・,An-1+Bn-1,***)となる加算結果S=a+bを求める。
次に、多値化法の秘匿加算1”’に対する例を説明する。
以下にk=2,n=3,A=23,B=68の場合の例を示す。ここではA,Bとも2桁の値であるのでp=101とし、p’=11よりq=23とし、演算はqを法として行われるとする。
以下にk=2,n=3,A=23,B=68の場合の例を示す。ここではA,Bとも2桁の値であるのでp=101とし、p’=11よりq=23とし、演算はqを法として行われるとする。
[分散]
ユーザAの第1のディーラ装置12Aは保持している秘密情報A=23を2分割してA1=2,A2=3とし、多値化法により秘密分散する(ただし、A0=0)(図90のステップ832~ステップ840)。ここでは、(k-1)n-1=2個の乱数をr0=5,r1=4とする。
ユーザAの第1のディーラ装置12Aは保持している秘密情報A=23を2分割してA1=2,A2=3とし、多値化法により秘密分散する(ただし、A0=0)(図90のステップ832~ステップ840)。ここでは、(k-1)n-1=2個の乱数をr0=5,r1=4とする。
Wa0=(Wa00)(Wa01)=(A0+r0)(A1+r1)=(5)(6)を、第0のサーバ14x0へ送信する。
Wa1=(Wa10)(Wa11)=(A2+r0)(A0+r1)=(8)(4)を、第1のサーバ14x1へ送信する。
Wa2=(Wa20)(Wa21)=(A1+r0)(-A2+r1)=(7)(1)を、第2のサーバ14x2へ送信する。
Wa1=(Wa10)(Wa11)=(A2+r0)(A0+r1)=(8)(4)を、第1のサーバ14x1へ送信する。
Wa2=(Wa20)(Wa21)=(A1+r0)(-A2+r1)=(7)(1)を、第2のサーバ14x2へ送信する。
ユーザBは第2のディーラ装置12B保持している秘密情報B=68を2分割してB1=6,B2=8とし、多値化法により秘密分散する(ただし、B0=0)(図90のステップ832~ステップ840)。ここでは、(k-1)n-1=2個の乱数をt0=7,t1=8とする。
Wb0=(Wb00)(Wb01)=(B0+t0)(B1+t1)=(7)(14) を、第0のサーバ14x0へ送信する。
Wb1=(Wb10)(Wb11)=(B2+t0)(B0+t1)=(15)(8) を、第1のサーバ14x1へ送信する。
Wb2=(Wb20)(Wb21)=(B1+t0)(-B2+t1)=(13)(0) を、第2のサーバ14x2へ送信する。
Wb0=(Wb00)(Wb01)=(B0+t0)(B1+t1)=(7)(14) を、第0のサーバ14x0へ送信する。
Wb1=(Wb10)(Wb11)=(B2+t0)(B0+t1)=(15)(8) を、第1のサーバ14x1へ送信する。
Wb2=(Wb20)(Wb21)=(B1+t0)(-B2+t1)=(13)(0) を、第2のサーバ14x2へ送信する。
[加算]
各サーバは以下を計算する。
第0のサーバ14x0は、Wab0を計算する。
Wab0=(Wa00+Wb00)(Wa01+Wb01)=(W00)(W01)= (5+7)(6+14)=(12)(20)
第1のサーバ14x1は、Wab1を計算する。
Wab1=(Wa10+Wb20)(Wa11+Wb21)=(W10)(W11)= (8+15)(4+8)=(0)(12)
各サーバは以下を計算する。
第0のサーバ14x0は、Wab0を計算する。
Wab0=(Wa00+Wb00)(Wa01+Wb01)=(W00)(W01)= (5+7)(6+14)=(12)(20)
第1のサーバ14x1は、Wab1を計算する。
Wab1=(Wa10+Wb20)(Wa11+Wb21)=(W10)(W11)= (8+15)(4+8)=(0)(12)
Wab2=(Wa20+Wb20)(Wa21+Wb21)=(W20)(W21)=(7+13)(1+0)=(20)(0)
[復元]
W00=Wa00+Wb00=(A0+r0)+(B0+t0)=0・(A1+B1)+0・(A2+B2)+1・(r0+t0)+0(r1+t1)よりV00=(0010)となる。同様に、V01=(1001),V10=(0110),V11=(0001),V20=(1010),V21=(0-101) となるので、全体は以下のようになる。
W00=Wa00+Wb00=(A0+r0)+(B0+t0)=0・(A1+B1)+0・(A2+B2)+1・(r0+t0)+0(r1+t1)よりV00=(0010)となる。同様に、V01=(1001),V10=(0110),V11=(0001),V20=(1010),V21=(0-101) となるので、全体は以下のようになる。
よって、A1+B1=W01-W11=20-12=8、A2+B2=W10-W00=0-12=-12=11(mod23)となり、桁あわせをすると、8*10+11=91=23+68=A+Bとなる。
以上より、提案の多値化法によって秘密情報の分散、復元、加算(減算も同様)が実現できることが言える。
秘匿乗算1”’
次に、秘匿乗算を示す。
以降ではa,bをe進数d桁で、素数p(>ed)以下の整数とし、aをL分割してAi(i=1,・・・,L)としたとき、Aiは素数p’(>ed/L)以下の整数とする。秘密分散に関する演算は素数q’(>p’u:uは1以上の整数)上で演算が行われる。まず、定数乗算が可能であることを示す。
次に、秘匿乗算を示す。
以降ではa,bをe進数d桁で、素数p(>ed)以下の整数とし、aをL分割してAi(i=1,・・・,L)としたとき、Aiは素数p’(>ed/L)以下の整数とする。秘密分散に関する演算は素数q’(>p’u:uは1以上の整数)上で演算が行われる。まず、定数乗算が可能であることを示す。
[分散]
秘密情報aをもつオーナAの第1のディーラ装置12AのCPU22は、図93に示す分散処理を実行する。即ち、ステップ872で、素数q未満のk個の乱数αiを生成し、q’を法としてその積αを計算する。
α=α1・α2・・・αk
秘密情報aをもつオーナAの第1のディーラ装置12AのCPU22は、図93に示す分散処理を実行する。即ち、ステップ872で、素数q未満のk個の乱数αiを生成し、q’を法としてその積αを計算する。
α=α1・α2・・・αk
ステップ874で、秘密情報aを分散したものにαをかけて、多値化法[分散]の処理(図87のステップ832~ステップ840)を実行する。これにより、サーバ14xi(i=0,…,n-1)に、分散値Wa’i=Wa’(i,0),・・・,Wa’(i,n-1)を送信する。ステップ876で、各αj(j=1,…,k)について、多値化法[分散]の処理(図90のステップ832~ステップ840)を実行する。これにより、サーバ4xi(i=1,…,n)に分散値Wαji=Wαj(i,0),・・・,Wαj(i,n-1)(j=1,…,k)を送信する。
秘密情報bをもつオーナBの第2のディーラ装置12AのCPU22は、図94に示す分散処理を実行する。即ち、ステップ882で、素数q未満のk個の乱数βiを生成し、q’を法としてその積βを計算する。
β=β1・β2・・・βk
β=β1・β2・・・βk
ステップ848で、秘密情報bを分散したものにβをかけて、多値化法[分散]の処理(図90のステップ832~ステップ840)を実行する。これにより、第iのサーバ14xi(i=1,…,n)に分散値Wb’i=Wb’(i,0),・・・,Wb’(i,n-1)を送信する。ステップ886で、各βj(j=1,…,k)について多値化法[分散]の処理(図90のステップ832~ステップ840)を実行する。これにより、第iのサーバ14xi(i=0,…, n-1)に分散値Wβji=Wβj(i,0),・・・,Wβj(i,n-1)(j=1,…,k)送信する。
[乗算]
サーバシステム内の1つのサーバ14xdのCPU22は、多値化法[復元]の処理(図91のステップ842~ステップ854)を実行する。即ち、他のk個のサーバからWa’iを集め、αaを復元する。そして、サーバ14xdは、αaを他のサーバ14xj(j=1,…,n)に送信する。
サーバ14xj(j=1,…,n)は自分がもつWb’jにαaをかけてWab’jを生成する。
Wab’j=Wab’(j,0),…,Wab’(j,n-1) ただし、Wab’(j,i)=αaWb’(j,i)
サーバシステム内の1つのサーバ14xdのCPU22は、多値化法[復元]の処理(図91のステップ842~ステップ854)を実行する。即ち、他のk個のサーバからWa’iを集め、αaを復元する。そして、サーバ14xdは、αaを他のサーバ14xj(j=1,…,n)に送信する。
サーバ14xj(j=1,…,n)は自分がもつWb’jにαaをかけてWab’jを生成する。
Wab’j=Wab’(j,0),…,Wab’(j,n-1) ただし、Wab’(j,i)=αaWb’(j,i)
[復元]
復元に参加するサーバ14xj(j=1,…,k)のCPU22は、図95のαjβjの計算送信処理を実行する。即ち、ステップ892で、Wαjiについて多値化法[復元]の処理(図91のステップ842~ステップ854)を実行し、ステップ894で、Wβjiについて多値化法[復元]の処理(図88のステップ842~ステップ854)を実行する。即ち、指定されたjに応じたWαjiとWβjiをk個集め(i=1,…,k)、多値化法[復元]により1サーバ当たりαjとβjを1つずつ復元する。
復元に参加するサーバ14xj(j=1,…,k)のCPU22は、図95のαjβjの計算送信処理を実行する。即ち、ステップ892で、Wαjiについて多値化法[復元]の処理(図91のステップ842~ステップ854)を実行し、ステップ894で、Wβjiについて多値化法[復元]の処理(図88のステップ842~ステップ854)を実行する。即ち、指定されたjに応じたWαjiとWβjiをk個集め(i=1,…,k)、多値化法[復元]により1サーバ当たりαjとβjを1つずつ復元する。
ステップ896で、積αjβjを計算し、ステップ898で、Wab'(xj)とαjβjを復元者に送信する。
復元者の復元装置16はk個のWab’jからαβabj(j=1,…,k)を復元し、桁合わせをしながらαβabを計算する。
復元装置16はαjβj(j=1,・・・,k)からαβを合成し、αβabを割ってabを得る。
次に、多値化法の秘匿乗算”’に対する例を説明する。以下では、k=2,n=3,a=23,b=68の場合の例を示す。a,bとも十進2桁の値であり、α,βも同サイズの整数とすると、分散するαa、βbは10進4桁の数であるのでp=10007とし、これを2分割するためp’=101、q’=10007より、演算はq’=10007を法として行われるとする。
[分散]
ユーザAの第1のディーラ装置12Aはα1=11,α2=2を生成し、α=α1・α2=22とする(図93のステップ872)。
ユーザAの第1のディーラ装置12Aはα1=11,α2=2を生成し、α=α1・α2=22とする(図93のステップ872)。
ユーザAの第1のディーラ装置12Aは保持している秘密情報a=23を2分割してA2=2,A1=3とし、多値化法により秘密分散したWa0,Wa1,Wa2にαをかけてWa’0,Wa’1,Wa’2を得る(ただし、A0=0)(図93のステップ874)。ここでは、(k-1)n-1=2個の乱数をr0=4,r1=5とする。その他にαjを多値化法によりWαji(i=1,・・・,n)を計算・分散する(図93のステップ876)。
Wa0=(Wa00)(Wa01)=(A0+r0)(A1+r1)=(4)(8)に、22をかけたWa’0=(88)(176) を、第0のサーバ14x0に送信する。
Wa1=(Wa10)(Wa11)=(A2+r0)(A0+r1)=(6)(5) に、22をかけたWa’1=(132)(110) を、第1のサーバ14x1に送信する。
Wa2=(Wa20)(Wa21)=(A1+r0)(-A2+r1)=(7)(3) に、22をかけたWa’2=(154)(66) を、第2のサーバ14x2に送信する。
Wa0=(Wa00)(Wa01)=(A0+r0)(A1+r1)=(4)(8)に、22をかけたWa’0=(88)(176) を、第0のサーバ14x0に送信する。
Wa1=(Wa10)(Wa11)=(A2+r0)(A0+r1)=(6)(5) に、22をかけたWa’1=(132)(110) を、第1のサーバ14x1に送信する。
Wa2=(Wa20)(Wa21)=(A1+r0)(-A2+r1)=(7)(3) に、22をかけたWa’2=(154)(66) を、第2のサーバ14x2に送信する。
ユーザBの第2のディーラ装置12Bはβ1=61,β2=51を生成し、β=3111とする(図94のステップ882)。
ユーザBの第2のディーラ装置12Bは保持している秘密情報b=68を2分割してB2=6,B1=8とし、多値化法により秘密分散する(ただし、B0=0)(図94のステップ884)。ここで、乱数をt0=37,t1=18とする。その他にβjを多値化法によりWb’0、Wb’2 、Wb’3計算・分散する(図94のステップ886)。
Wb0=(Wb00)(Wb01)=(B0+t0)(B1+t1)=(37)(26)に、
3111をかけたWb’0=(115107=5030)(80886=830)を、第0のサーバ14x0に送信する。
Wb1=(Wb10)(Wb11)=(B2+t0)(B0+t1)=(43)(18) に、
3111をかけたWb’1=(133773=3682)(55998=5963) を第1のサーバ14x1に送信する。
Wb2=(Wb20)(Wb21)=(B1+t0)(-B2+t1)=(45)(12) に、
3111をかけたWb’2=(139995=9904)(37332=7311) を第2のサーバ14x2に送信する。
Wb0=(Wb00)(Wb01)=(B0+t0)(B1+t1)=(37)(26)に、
3111をかけたWb’0=(115107=5030)(80886=830)を、第0のサーバ14x0に送信する。
Wb1=(Wb10)(Wb11)=(B2+t0)(B0+t1)=(43)(18) に、
3111をかけたWb’1=(133773=3682)(55998=5963) を第1のサーバ14x1に送信する。
Wb2=(Wb20)(Wb21)=(B1+t0)(-B2+t1)=(45)(12) に、
3111をかけたWb’2=(139995=9904)(37332=7311) を第2のサーバ14x2に送信する。
[乗算]
サーバ14xdは下記によりWa’0とWa’1からαA1=66とαA2=44を復元し、αA2*10+αA1= 506=αaを計算する。
サーバ14xdは下記によりWa’0とWa’1からαA1=66とαA2=44を復元し、αA2*10+αA1= 506=αaを計算する。
サーバ14xjは下記によりWb’0とWb’1からβB1(=24888)=4874(modq’)とβB2(=18666) =8659(modq’)を復元し、βB2*10+βB1=91464=(211548=)βbを計算し、αa*βb=46280784=8416(modq’)を復元者に送る。
[復元]
サーバ14x1はα1=11、β1=61を復元し、サーバ14x2はα2=2、β2=51を復元する。
サーバ14x1はα1β1=11*61=671を、x2はα2β2=2*51=102を計算する。
サーバ14x1はα1β1を、x2はα2β2を復元装置16に送信する。
復元装置16はα1β1α2β2より68442=8400(modq’)を得て、q’を法としたその逆数である1974を計算し、αa*βb=8416にかけてq’で法をとると、ab=1564が得られる。
以上は秘匿計算1に対応したものであるが、Shamirの秘密分散法の部分を多値化法に置き換えたものといえる。よって、Shamirの秘密分散法を多値化法に置き換えれば第1の実施の形態~第8の実施の形態の各手法に対応できることは明らかである。
サーバ14x1はα1=11、β1=61を復元し、サーバ14x2はα2=2、β2=51を復元する。
サーバ14x1はα1β1=11*61=671を、x2はα2β2=2*51=102を計算する。
サーバ14x1はα1β1を、x2はα2β2を復元装置16に送信する。
復元装置16はα1β1α2β2より68442=8400(modq’)を得て、q’を法としたその逆数である1974を計算し、αa*βb=8416にかけてq’で法をとると、ab=1564が得られる。
以上は秘匿計算1に対応したものであるが、Shamirの秘密分散法の部分を多値化法に置き換えたものといえる。よって、Shamirの秘密分散法を多値化法に置き換えれば第1の実施の形態~第8の実施の形態の各手法に対応できることは明らかである。
第9の実施の形態における高速化は次の通りである。第8の実施の形態までのShamir法は多項式演算のため、復元には必ず多項式の連立方程式をとく、すなわち乗算やべき乗演算が必要であった。しかし、XOR型の復元はXORのみで処理ができる。第9の実施の形態では、XORを多値にしたものであり、秘匿乗算の場合、復元は加減算だけでよいので高速化が図られる。
また、法とする数については次の通りである。第7の実施の形態までは秘密情報Sのサイズまたはそのu倍のサイズで演算している。これに対し、第9の実施の形態では、Sを分解したサイズまたはそのu倍のサイズで演算する。よって、法とする数は大きくない。この特徴は請求項13に示される。
また、多値化法の分散値の大きさを1/Lにするランプ型秘密分散法も、Shamir法をランプ型にした第8の実施の形態と同様に可能であることは明らかであり、この場合S(<ed)を素数p未満のe進数d桁の整数とすると、それをL(n-1)分割したSi(<ed/L(n-1))を用いて、同様の処理が行われる。このとき、乱数ri
jもSiと同サイズの整数とし、素数p’(<edu/L(n-1))(uは1以上の整数)を法として演算が行われる([5]の手法はpを法として演算されている)。この特徴は請求項13に示される。
以上のように、ランプ型多値化法は多値化法と同様に実現できるので、Shamirの秘密分散法をランプ型多値化法に置き換えれば第1の実施の形態~第8の実施の形態の各手法に対応できることは明らかである。
また、ランプ型多値化法と多値化法の違いは、多値化法がSを分割したサイズで演算しても、最後はこれらを集めるため分散値は秘密情報を同じサイズに戻りるのに対し、ランプ型多値化法では、分散値を集めても元の秘密情報の1/Lになっており、高速化と記憶容量の削減も同時に実現している点にある。
2015年2月12日に出願された日本国特許出願2015-025825号の開示は、その全体が参照により本明細書に取り込まれる。
Claims (18)
- nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値を計算する計算装置であって、
k個以上の秘密情報の各々の分散値を計算する手段と、
前記k個以上の秘密情報から合成値を生成する手段と、
前記合成値を新たな秘密情報に作用させた秘匿化秘密情報を生成する手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、
第1の秘匿化秘密情報に用いられた第1の乱数を構成する複数の乱数のうちの1部である第1の部分乱数の分散値と、第2の秘匿化秘密情報に用いられた第2の乱数を構成する複数の乱数うちの1部である第2の部分乱数の分散値とを集めて、前記第1の部分乱数と前記第2の部分乱数を復元する手段と、
前記復元した第1の部分乱数と第2の部分乱数を合成する手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、
k個以上の乱数を用いて秘匿化された秘匿化秘密情報を復元する手段と、
前記復元した秘匿化秘密情報と他の値とに基づいて所定の演算をする手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘密情報を復元する計算装置であって、
k個以上の乱数を用いて秘匿化された秘匿化秘密情報を復元する手段と、
前記乱数を合成する手段と、
前記合成された乱数を用いて、前記復元された前記秘匿化秘密情報の秘匿化を解除する手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、
k個以上の乱数を用いて秘匿化された秘匿化秘密情報における第1の合成乱数と、第2の合成乱数を構成するk個以上の乱数とを組み合わせて、前記第1の合成乱数を変換する手段
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、
秘匿化されていない分散値に、別の秘匿化秘密情報を構成するk個以上の乱数を作用させて秘匿化する手段
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値を計算する計算装置であって、
複数の新たな秘密情報を秘匿化して複数の分散値を計算する手段と、
前記複数の分散値の各々の並び順を、前記秘匿化する前の前記複数の新たな秘密情報の予め定められた並び順に応じて指定する手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて検索する秘密情報を指定する計算装置であって、
検索用秘密情報に乱数を作用させ秘匿化する手段と、
前記システムから受信した値に前記乱数を作用させる手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて指定された秘密情報を検索する計算装置であって、
前記秘密情報に対応する第1の検索用秘密情報を第1の乱数で秘匿化すると共に、入力された第2の検索用秘密情報を第2の乱数で秘匿化する手段と、
前記秘匿化された前記第1の検索用秘密情報に基づく第1の値と前記秘匿化された前記第2の検索用秘密情報に基づく第2の値との差に基づいて、前記第1の検索用秘密情報と前記第2の検索用秘密情報との差を取得する手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値の更新を行う計算装置であって、
乱数で秘密情報が秘匿化されて得られた分散値に対して、新たな乱数を生成し、前記生成した新たな乱数を新たな分散値として保存する手段
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値の更新を行う計算装置であって、
k個以上の補正情報から秘密情報を更新する更新値を計算する手段
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて分散値を計算する計算装置であって、
生成されたh(1~k-1までの整数)個の乱数を分散値として定め、前記h個の分散値と前記秘密情報とに基づいて、n-h個の分散値を計算する手段と、
k個以上の秘密情報から合成値を生成する手段と、
前記合成値を新たな秘密情報に作用させた秘匿化秘密情報を計算する手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算または復元をする計算装置であって、
秘匿化され複数の桁に分割された秘匿化秘密情報の桁に合わせて所定の演算を行う手段
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘匿演算をする計算装置であって、
前記秘密情報をp1以下の整数、乱数をp2以下の整数として、それらを乗算したp1*p2以下の秘匿化秘密情報をp1*p2より大きな素数を法として秘密分散または復号する手段
を備える計算装置。 - nを整数、kをnより小さい整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおける秘匿演算または復元を行う計算装置であって、
乱数の加算によって秘密情報を秘匿した秘匿化秘密情報と、前記乱数が秘密分散された分散値とを加減算する手段を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘密情報の格納位置を検索する計算装置であって、
第1の検索用秘密情報と第2の検索用秘密情報の差を取得する手段と、
前記差に応じて前記格納位置を定める手段と、
を備える計算装置。 - nを整数、kをn以下の整数、Lを1以上k以下の整数とし、秘密情報をn個に分散し、n個のうちk個の分散値を集めれば秘密情報を復元でき、k-L個以下では秘密情報を復元できない手段を用いて秘匿演算を行うシステムにおいて秘密情報を更新する計算装置であって、
秘密情報の分散値に、予め定められた第1の乱数を乗算しかつ予め定められた第2の乱数を加算する手段
を備える計算装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2016574708A JPWO2016129363A1 (ja) | 2015-02-12 | 2016-01-22 | 分散装置、演算・復元装置、及びプログラム |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2015-025825 | 2015-02-12 | ||
| JP2015025825 | 2015-02-12 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2016129363A1 true WO2016129363A1 (ja) | 2016-08-18 |
Family
ID=56615198
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2016/051934 Ceased WO2016129363A1 (ja) | 2015-02-12 | 2016-01-22 | 秘密分散を用いた秘匿演算システムに関する計算装置 |
Country Status (2)
| Country | Link |
|---|---|
| JP (1) | JPWO2016129363A1 (ja) |
| WO (1) | WO2016129363A1 (ja) |
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2019028391A (ja) * | 2017-08-03 | 2019-02-21 | 株式会社日立製作所 | 秘密分散システム及びその方法 |
| JP2019144405A (ja) * | 2018-02-20 | 2019-08-29 | 学校法人東京理科大学 | 入力者装置、演算支援装置、装置、秘匿演算装置、及びプログラム |
| CN110199338A (zh) * | 2017-01-20 | 2019-09-03 | 日本电信电话株式会社 | 秘密计算系统、秘密计算装置、秘密计算方法、程序 |
| CN111246463A (zh) * | 2020-02-10 | 2020-06-05 | 浙江机电职业技术学院 | 基于alpha稳定分布随机过程偏斜度参数的隐蔽通信方法 |
| JPWO2020250269A1 (ja) * | 2019-06-10 | 2020-12-17 | ||
| WO2021106143A1 (ja) * | 2019-11-28 | 2021-06-03 | 日本電気株式会社 | シャッフルシステム、シャッフル方法及びプログラム |
| JP2022044737A (ja) * | 2018-02-20 | 2022-03-17 | 惠市 岩村 | 入力者装置、演算支援装置、装置、秘匿演算装置、及びプログラム |
| CN114830211A (zh) * | 2019-12-19 | 2022-07-29 | 日本电信电话株式会社 | 秘密随机数生成系统、秘密计算装置、秘密随机数生成方法以及程序 |
| JP2023052580A (ja) * | 2022-01-26 | 2023-04-11 | 惠市 岩村 | 入力者装置、演算支援装置、装置、秘匿演算装置、及びプログラム |
| EP4203398A4 (en) * | 2020-12-02 | 2024-05-01 | Tencent Technology (Shenzhen) Company Limited | DATA PROCESSING METHOD, APPARATUS, DEVICE AND STORAGE MEDIUM |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004341152A (ja) * | 2003-05-15 | 2004-12-02 | Oki Electric Ind Co Ltd | 秘密分散方法、秘密分散システム、及び分散演算装置 |
| JP2014138349A (ja) * | 2013-01-18 | 2014-07-28 | Nippon Telegr & Teleph Corp <Ntt> | 秘密分散システム、データ分散装置、分散データ保有装置、秘密分散方法、およびプログラム |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4300838B2 (ja) * | 2003-03-25 | 2009-07-22 | 沖電気工業株式会社 | 分散計算装置及び分散計算システム |
-
2016
- 2016-01-22 JP JP2016574708A patent/JPWO2016129363A1/ja active Pending
- 2016-01-22 WO PCT/JP2016/051934 patent/WO2016129363A1/ja not_active Ceased
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004341152A (ja) * | 2003-05-15 | 2004-12-02 | Oki Electric Ind Co Ltd | 秘密分散方法、秘密分散システム、及び分散演算装置 |
| JP2014138349A (ja) * | 2013-01-18 | 2014-07-28 | Nippon Telegr & Teleph Corp <Ntt> | 秘密分散システム、データ分散装置、分散データ保有装置、秘密分散方法、およびプログラム |
Cited By (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110199338A (zh) * | 2017-01-20 | 2019-09-03 | 日本电信电话株式会社 | 秘密计算系统、秘密计算装置、秘密计算方法、程序 |
| JP7027060B2 (ja) | 2017-08-03 | 2022-03-01 | 株式会社日立製作所 | 秘密分散システム及びその方法 |
| JP2019028391A (ja) * | 2017-08-03 | 2019-02-21 | 株式会社日立製作所 | 秘密分散システム及びその方法 |
| JP7240037B2 (ja) | 2018-02-20 | 2023-03-15 | 惠市 岩村 | 入力者装置、演算支援装置、装置、秘匿演算装置、及びプログラム |
| JP2022044737A (ja) * | 2018-02-20 | 2022-03-17 | 惠市 岩村 | 入力者装置、演算支援装置、装置、秘匿演算装置、及びプログラム |
| JP7041951B2 (ja) | 2018-02-20 | 2022-03-25 | 惠市 岩村 | 入力者装置、演算支援装置、及びプログラム |
| JP2019144405A (ja) * | 2018-02-20 | 2019-08-29 | 学校法人東京理科大学 | 入力者装置、演算支援装置、装置、秘匿演算装置、及びプログラム |
| WO2020250269A1 (ja) * | 2019-06-10 | 2020-12-17 | 日本電信電話株式会社 | 秘密除算システム、秘密計算装置、秘密除算方法、およびプログラム |
| CN113966511A (zh) * | 2019-06-10 | 2022-01-21 | 日本电信电话株式会社 | 秘密除法系统、秘密计算装置、秘密除法方法以及程序 |
| JPWO2020250269A1 (ja) * | 2019-06-10 | 2020-12-17 | ||
| JP7173328B2 (ja) | 2019-06-10 | 2022-11-16 | 日本電信電話株式会社 | 秘密除算システム、秘密計算装置、秘密除算方法、およびプログラム |
| AU2019450855B2 (en) * | 2019-06-10 | 2023-02-02 | Ntt, Inc. | Secure division system, secure computation apparatus, secure division method, and program |
| JP7334798B2 (ja) | 2019-11-28 | 2023-08-29 | 日本電気株式会社 | シャッフルシステム、シャッフル方法及びプログラム |
| WO2021106143A1 (ja) * | 2019-11-28 | 2021-06-03 | 日本電気株式会社 | シャッフルシステム、シャッフル方法及びプログラム |
| JPWO2021106143A1 (ja) * | 2019-11-28 | 2021-06-03 | ||
| US12160506B2 (en) | 2019-11-28 | 2024-12-03 | Nec Corporation | Shuffling shares among nodes to detect incorrectness or frauds |
| CN114830211A (zh) * | 2019-12-19 | 2022-07-29 | 日本电信电话株式会社 | 秘密随机数生成系统、秘密计算装置、秘密随机数生成方法以及程序 |
| CN111246463B (zh) * | 2020-02-10 | 2023-04-18 | 浙江机电职业技术学院 | 基于alpha稳定分布随机过程偏斜度参数的隐蔽通信方法 |
| CN111246463A (zh) * | 2020-02-10 | 2020-06-05 | 浙江机电职业技术学院 | 基于alpha稳定分布随机过程偏斜度参数的隐蔽通信方法 |
| EP4203398A4 (en) * | 2020-12-02 | 2024-05-01 | Tencent Technology (Shenzhen) Company Limited | DATA PROCESSING METHOD, APPARATUS, DEVICE AND STORAGE MEDIUM |
| JP2023052580A (ja) * | 2022-01-26 | 2023-04-11 | 惠市 岩村 | 入力者装置、演算支援装置、装置、秘匿演算装置、及びプログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| JPWO2016129363A1 (ja) | 2018-01-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2016129363A1 (ja) | 秘密分散を用いた秘匿演算システムに関する計算装置 | |
| US10951392B2 (en) | Fast format-preserving encryption for variable length data | |
| CN113987559B (zh) | 保护数据隐私的双方联合进行数据处理的方法及装置 | |
| CN114661680A (zh) | 一种私有数据隐匿共享方法 | |
| Gomathisankaran et al. | Ensure privacy and security in the process of medical image analysis | |
| JPWO2012157279A1 (ja) | 順序保存暗号化システム、装置、方法及びプログラム | |
| Wang et al. | Chaotic image encryption algorithm based on dynamic spiral scrambling transform and deoxyribonucleic acid encoding operation | |
| Kumbhar et al. | Privacy preserving mining of association rules on horizontally and vertically partitioned data: a review paper | |
| Sujan | Securing distributed data mechanism based on blockchain technology | |
| CN113992325A (zh) | 一种隐私数据共享方法及装置 | |
| CN114830210A (zh) | 秘密随机数生成系统、秘密计算装置、秘密随机数生成方法以及程序 | |
| Ala’A et al. | Competitive swarm optimization with encryption based steganography for digital image security | |
| JP4623623B2 (ja) | 復元制御型秘密情報分散装置 | |
| Tian et al. | Privacy-preserving logistic regression with improved efficiency | |
| Calviño et al. | Privacy-preserving distributed statistical computation to a semi-honest multi-cloud | |
| JP7396373B2 (ja) | 秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム | |
| Zhu et al. | An efficient chosen-plaintext attack and improvement on an image encryption algorithm based on cyclicshift and multiple chaotic map | |
| Namazi et al. | Dynamic privacy-preserving genomic susceptibility testing | |
| KumaraSwamy et al. | Association rule sharing model for privacy preservation and collaborative data mining efficiency | |
| CN113904823B (zh) | 常数级授权计算复杂度的属性基可搜索加密方法及系统 | |
| Xuelong et al. | A symmetric cryptography based on extended cellular automata | |
| Thorat et al. | Combining DNA sequences and chaotic maps to improve robustness of RGB image encryption | |
| JP3908106B2 (ja) | 量子情報分散生成方法、その装置 | |
| Lochter | Blockchain as cryptanalytic tool | |
| Rani et al. | Piecewise symmetric magic cube: application to text cryptography |
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: 16749008 Country of ref document: EP Kind code of ref document: A1 |
|
| DPE2 | Request for preliminary examination filed before expiration of 19th month from priority date (pct application filed from 20040101) | ||
| ENP | Entry into the national phase |
Ref document number: 2016574708 Country of ref document: JP Kind code of ref document: A |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 16749008 Country of ref document: EP Kind code of ref document: A1 |





























