WO2023135636A1 - 秘密クラスタ計算システム、秘密クラスタ計算装置、秘密クラスタ計算方法、プログラム - Google Patents

秘密クラスタ計算システム、秘密クラスタ計算装置、秘密クラスタ計算方法、プログラム Download PDF

Info

Publication number
WO2023135636A1
WO2023135636A1 PCT/JP2022/000520 JP2022000520W WO2023135636A1 WO 2023135636 A1 WO2023135636 A1 WO 2023135636A1 JP 2022000520 W JP2022000520 W JP 2022000520W WO 2023135636 A1 WO2023135636 A1 WO 2023135636A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
cluster
attribute
centroid
share
Prior art date
Application number
PCT/JP2022/000520
Other languages
English (en)
French (fr)
Inventor
気吹 三品
大 五十嵐
浩気 濱田
亮 菊池
Original Assignee
日本電信電話株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Priority to PCT/JP2022/000520 priority Critical patent/WO2023135636A1/ja
Publication of WO2023135636A1 publication Critical patent/WO2023135636A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system

Definitions

  • the present invention relates to secure computation technology, and in particular to technology for secure computation using the k-means method.
  • Non-Patent Document 1 describes a conventional method for performing secure computation using the k-means method.
  • Secret calculation is a method of obtaining the calculation result of a specified calculation without restoring the encrypted numerical value (see, for example, Reference Non-Patent Document 1).
  • encryption is performed by distributing a plurality of information whose numerical values can be restored to three secret computing devices, and addition/subtraction, constant sum, multiplication, and constant multiplication are performed without restoring numerical values.
  • Logical operations negative, logical product, logical sum, exclusive logical sum
  • data format conversion integer, binary results are distributed to three secret computing devices, i.e., held encrypted. can be done.
  • the distributed number is not limited to 3, but can be W (W is a predetermined constant equal to or greater than 3), and a protocol that implements secure computation through cooperative computation by W secure computation devices is called a multi-party protocol.
  • Non-Patent Document 2 has the problem of calculation accuracy that the result is different from the result when calculating with plain text because it is difficult to calculate as it is encrypted. There is a security problem that the data is decoded and calculated in the middle of the calculation.
  • the purpose of the present invention is to provide a technique for performing secure computation using the k-means method with high accuracy while keeping data confidential.
  • M is an integer of 1 or more
  • K is an integer of 1 or more
  • N is the dimension of the data
  • M the cluster ID k(i) of the cluster to which the data of data ID i belongs
  • k( i) satisfies 1 ⁇ k(i) ⁇ K
  • the table that contains the ID and the centroid of the cluster of the relevant cluster ID as attributes (hereinafter referred to as the cluster ID attribute and the centroid attribute) is the centroid table, the data ID and the cluster ID and the data of the data ID and the cluster of the relevant cluster ID
  • a table containing the distance to the centroid as an attribute (hereafter referred to as data ID attribute, cluster ID attribute, distance attribute) is called a distance table.
  • FIG. 10 is a diagram showing an example of a cluster ID table; FIG. It is a figure which shows an example of a data table. It is a figure which shows an example of a centroid table. It is a figure which shows an example of a distance table.
  • 1 is a block diagram showing the configuration of a secure cluster computing system 10;
  • FIG. 3 is a block diagram showing the configuration of a secret cluster computing device 100i ;
  • 4 is a flow chart showing the operation of the secure cluster computing system 10; It is a figure which shows an example of the functional structure of the computer which implement
  • ⁇ (caret) represents a superscript.
  • x y ⁇ z means that y z is a superscript to x
  • x y ⁇ z means that y z is a subscript to x
  • _ (underscore) represents a subscript.
  • x y_z means that y z is a superscript to x
  • x y_z means that y z is a subscript to x.
  • [Anonymization] Let [[x]] be the value of x kept secret by secret sharing (hereinafter referred to as the share of x). Any method can be used for the secret sharing method. For example, Shamir secret sharing over GF(2 61 ⁇ 1) and replication secret sharing over Z 2 can be used.
  • a combination of multiple secret sharing methods may be used in one algorithm. In this case, they are converted to each other as appropriate.
  • Secret multiplication [[x]] ⁇ [[y]] (sometimes expressed as mul([[x]], [[y]])) is obtained by multiplying [[x]], [[y]] by Takes as input and outputs [[x ⁇ y]].
  • the secret division [[x]]/[[y]] (sometimes written as div([[x]], [[y]])) is obtained by dividing [[x]], [[y]] into Takes as input and outputs [[x/y]].
  • Comparison ⁇ ([[x]], [[y]]) by secure computation takes [[x]], [[y]] as inputs, and if x ⁇ y, then [[1]] Otherwise, output [[0]].
  • Comparison ⁇ ([[x]], [[y]]) by secure computation takes [[x]], [[y]] as inputs, and if x ⁇ y, then [[1]] Otherwise, output [[0]].
  • comparison operation can be easily configured by combining logical operations.
  • a table obtained by secretly sorting the table T using the attribute ⁇ of the table T as a key means that the values of the elements of the attribute ⁇ are sorted in ascending order from the first record. It is a table in which each record is replaced so that
  • performing a secret unique check on the vector [[1]], [[2]], [[2]], [[3]], [[3]], [[3]]) yields ([[1]], [[1]], [[0]], [[1]], [[0]], [[0]]).
  • the secret unique check can be easily configured by combining secret sorting and comparison operations.
  • Group-by operation means that if a table has a key attribute (e.g. gender) and a value attribute (e.g. height) and each element of any attribute in the table is masked, the value of the key attribute element It is an operation that obtains statistics grouped by gender (eg, average height by gender).
  • the groupBySum operation is when the calculated statistic is a sum
  • the groupByCount operation is when the calculated statistic is a frequency.
  • Fig. 1 is a diagram showing an example of the groupBySum operation.
  • the key attribute element values are arranged in ascending order from the first record, and for each key attribute element value, the sum of the value attribute 1 elements, The sum of the elements of value attribute 2 is sought.
  • FIG. 2 is a diagram showing an example of groupByCount calculation.
  • the key attribute values are sorted in ascending order from the first record, and for each key attribute element value, the number of elements of value attribute 1, the value attribute The number of elements of 2 is sought.
  • Reference non-patent document 6 Ryo Kikuchi, Koki Hamada, Masaru Igarashi, Gen Takahashi, Katsumi Takahashi, ⁇ Let's do cross-sectional flow analysis with secure computation'', 2020 Symposium on Cryptography and Information Security, 3C2-1, 2020 .
  • the Group-by operation disclosed in Reference Non-Patent Document 6 efficiently performs various Group-by operations by using an operation called groupByCommon.
  • the k-means method is one of machine learning methods classified as unsupervised learning.
  • supervised learning such as regression analysis and class classification
  • the purpose is to prepare a desired output (called teacher data) and build a model that reproduces that output with high accuracy, whereas clustering Unsupervised learning does not predetermine the desired output.
  • Clustering the distance between multiple pieces of given data is calculated, and data with close distances are grouped into clusters as similar data.
  • Clustering is most similar to a non-hierarchical method such as the k-means method that predetermines the number of clusters to be generated and does not predetermine the number of clusters to be generated (that is, the minimum distance).
  • k-means method that predetermines the number of clusters to be generated and does not predetermine the number of clusters to be generated (that is, the minimum distance).
  • the k-means method has the characteristic that the amount of computation is less likely to increase even when clustering large-scale data, so it is used for data that cannot be handled by hierarchical methods. There are many things.
  • centroid is the center of gravity of data included in the cluster.
  • k-means++ method K pieces of data randomly selected from M pieces of data are used as centroids.
  • a cluster with the smallest distance to the centroid is assigned as the cluster to which the data belongs.
  • the predetermined end condition is, for example, a condition that each of the K centroids has converged to a certain position, or a condition that the number of executions of the processes (3) to (5) has reached a predetermined number of times. It is a condition of whether or not
  • the secret k-means method is a method of secretly calculating the k-means method, and the number M of data and the number K of clusters are kept secret. Also, when using the above convergence judgment condition as a termination condition, it is necessary to decode 1-bit information representing "whether each of the K centroids has converged to a certain position" for each convergence judgment. However, all other information is processed as it is concealed. For example, M data, K centroids, the distance between the data and the centroid, the information representing the cluster to which the data belongs, and the number of data included in the cluster are processed in anonymized form.
  • the k-means method needs to handle information representing the clusters to which the data belong.
  • management is performed using a table (hereinafter referred to as a cluster ID table) in which data IDs of M data and cluster IDs of K clusters are associated one-to-one, as shown in FIG. It is assumed that all IDs are paid out in order from 1.
  • the M pieces of data are managed using a table (hereinafter referred to as a data table) in which data IDs and data of the data IDs are associated with each other, as shown in FIG.
  • centroid table a table that associates the cluster ID with the centroid of the cluster of the cluster ID, as shown in FIG.
  • the data table is not rewritten during processing, while the cluster ID table and centroid table are rewritten as appropriate.
  • the processing flow in the secret k-means method is the same as the processing flow in the k-means method, the only difference is whether or not it is calculated secretly. How the processes (3) to (5) are executed using the above three tables will be described below.
  • the distance table obtained in the process (3) is used to update the cluster ID table so that clusters with the smallest distance to the centroid are paired for each piece of data. That is, in the cluster ID table, the cluster ID paired with the data ID is the cluster ID of the cluster that includes the centroid that has the smallest distance to the data of the data ID. For this purpose, the cluster ID of the cluster with the smallest distance to the data of the data ID is extracted from the distance table. Specifically, the following processing is executed.
  • (4-1) Secretly sort the distance table using the distance attribute as a key.
  • (4-4) Securely sort the table generated in (4-3) using the data ID attribute as a key.
  • the table extracted from the table generated in (4-4) has a data ID attribute element column and a cluster ID attribute element column. becomes a table.
  • centroid calculation the processing of (5) will be described.
  • the centroid table is updated using the cluster ID table obtained in process (4).
  • the centroid is the mean of the data contained in each cluster. Therefore, if the sum of the data contained in each cluster and the number of data contained in the cluster can be obtained for each cluster, the centroid can be obtained. Since each data is expressed as a vector, the centroid can be obtained efficiently by using the groupBySum operation and the groupByCount operation. Specifically, the following processing is executed.
  • (5-1) Take out the element string of the cluster ID attribute of the cluster ID table, and replace the element string of the data ID attribute of the data table with the element string.
  • (5-3) Execute the groupByCount operation on the table generated in (5-1) using the data ID attribute as a key.
  • (5-4) Calculate the value by dividing the value of the data attribute element of each record in the table generated in (5-2) by the value of the data attribute element of each record in the table generated in (5-3) .
  • the value obtained in (5-4) becomes the centroid of each cluster.
  • the k-means method is made secure and Secure computation can be performed efficiently.
  • FIG. 7 is a block diagram showing the configuration of the secure cluster computing system 10.
  • the secret cluster computing system 10 includes W (W is a predetermined integer equal to or greater than 3) secret cluster computing devices 100 1 , . . . , 100 W .
  • the secret cluster computing devices 100 1 , . . . , 100 W are connected to the network 800 and can communicate with each other.
  • Network 800 may be, for example, a communication network such as the Internet or a broadcast channel.
  • FIG. 8 is a block diagram showing the configuration of the secret cluster computing device 100i (1 ⁇ i ⁇ W).
  • FIG. 9 is a flow chart showing the operation of the secure cluster computing system 10. As shown in FIG.
  • the secret cluster calculation device 100i includes a centroid table initialization unit 110i , a distance table calculation unit 120i , a cluster ID table calculation unit 130i , a centroid table calculation unit 140i , It includes a termination condition determination unit 150i and a recording unit 190i .
  • the recording unit 190i is a component that records information necessary for processing of the secret cluster computing device 100i .
  • the recording unit 190 i records in advance a data table representing data to be clustered.
  • the secure cluster computing system 10 implements secure computation using the k-means method, which is a multi-party protocol, through cooperative computation by the W secure cluster computing devices 100i . Therefore, the centroid table initializing means 110 (not shown) of the secret cluster computing system 10 is composed of centroid table initializing units 110 1 , . is composed of distance table calculation units 120 1 , . 140 (not shown ) is composed of centroid table calculation units 140 1 , . be.
  • M is an integer of 1 or more
  • K is an integer of 1 or more
  • N is the dimension of the data
  • the cluster ID k(i) of the cluster to which the data of data ID i belongs (where k(i) is 1 ⁇ k(i) ⁇ K satisfies) share [[k(i)]].
  • the cluster ID table is a table that includes the data ID and the cluster ID of the cluster to which the data of the data ID belongs as attributes (hereinafter referred to as data ID attribute and cluster ID attribute).
  • data as attributes
  • the centroid table uses the cluster ID and the centroid of the cluster of the cluster ID as attributes (hereafter referred to as cluster ID attributes and centroid attributes).
  • the containing table and the distance table are tables that contain data IDs, cluster IDs, and distances between the data of the data ID and the centroid of the cluster of the cluster ID as attributes (hereinafter referred to as data ID attributes, cluster ID attributes, and distance attributes).
  • the centroid table initialization means 110 randomly selects the data ID shares [[i 1 ]], ..., [[i K ]] from the shares [[ 1 ]], ..., [[M]].
  • the cluster ID table calculation means 130 calculates a first intermediate table, for example, by using a distance table and secretly sorting the distance table using the distance attribute of the distance table as a key, and using the first intermediate table, calculates the first 1 Calculate the second intermediate table by adding the column obtained by performing a secret unique check on the element column of the data ID attribute of the intermediate table as the checked data ID attribute to the first intermediate table, and create the second intermediate table is used to calculate the third intermediate table that includes the records whose element value of the checked data ID attribute of the second intermediate table is [[1]], and the data of the third intermediate table is calculated using the third intermediate table
  • the data ID attribute element column and the cluster ID attribute element column of the table obtained by secret sorting the third intermediate table using the ID attribute as the key are replaced with the data ID attribute element column and
  • the first intermediate table is a table containing data ID attributes, cluster ID attributes, and distance attributes
  • the second intermediate table is a table containing checked data ID attributes, data ID attributes, cluster ID attributes, and distance attributes
  • the third intermediate table is The table becomes a table containing checked data ID attribute, data ID attribute, cluster ID attribute and distance attribute.
  • the first intermediate table contains MK records
  • the second intermediate table contains MK records
  • the third intermediate table contains M records.
  • the centroid table calculation means 140 uses the data table and the cluster ID table to calculate the centroid table.
  • the centroid table calculation means 140 uses the data table and the cluster ID table to replace the element column of the data ID attribute of the data table with the element of the cluster ID attribute of the cluster ID table, thereby creating the fifth intermediate table.
  • the 7th intermediate table is calculated by the groupByCount operation with the attribute as the key, and the value of the element of the data attribute of the j-th record of the 6th intermediate table is calculated using the 6th intermediate table and the 7th intermediate table.
  • the centroid table is calculated by dividing the value of the element of the data attribute of the j-th record of , and setting the value of the element of the centroid attribute of the j-th record of the centroid table.
  • the fifth intermediate table is a table containing data ID attributes and data attributes
  • the sixth intermediate table is a table containing data ID attributes and data attributes
  • the seventh intermediate table is a table containing data ID attributes and data attributes.
  • the fifth intermediate table contains M records
  • the sixth intermediate table contains K records
  • the seventh intermediate table contains K records.
  • the termination condition determination means 150 terminates the process if a predetermined termination condition is satisfied, otherwise returns to the process of S120.
  • the secure cluster computing system 10 repeats the processes of S120 to S140. If the predetermined termination condition is the number of executions of the processes of S120 to S140, the share [[T]] of the number of executions T is assumed to be given in advance, and the centroid table initializing means 110 sets the value of the counter t to Initialize with shares [[0]].
  • FIG. 10 is a diagram showing an example of a functional configuration of a computer that implements each of the devices described above.
  • the processing in each device described above can be performed by causing the recording unit 2020 to read a program for causing the computer to function as each device described above, and causing the control unit 2010, the input unit 2030, the output unit 2040, and the like to operate.
  • the apparatus of the present invention includes, for example, a single hardware entity, which includes an input unit to which a keyboard can be connected, an output unit to which a liquid crystal display can be connected, and a communication device (for example, a communication cable) capable of communicating with the outside of the hardware entity.
  • a communication unit for example, a CPU (Central Processing Unit, which may include cache memory, registers, etc.), RAM and ROM as memory, an external storage device as a hard disk, and their input, output, and communication units , a CPU, a RAM, a ROM, and a bus for connecting data to and from an external storage device.
  • the hardware entity may be provided with a device (drive) capable of reading and writing a recording medium such as a CD-ROM.
  • a physical entity with such hardware resources includes a general purpose computer.
  • the external storage device of the hardware entity stores the programs necessary for realizing the functions described above and the data required for the processing of these programs (not limited to the external storage device; It may be stored in a ROM, which is a dedicated storage device). Data obtained by processing these programs are appropriately stored in a RAM, an external storage device, or the like.
  • each program stored in an external storage device or ROM, etc.
  • the data necessary for processing each program are read into the memory as needed, and interpreted, executed and processed by the CPU as appropriate.
  • the CPU realizes a predetermined function (each component expressed as above, . . . unit, . . . means, etc.).
  • a program that describes this process can be recorded on a computer-readable recording medium.
  • Any computer-readable recording medium may be used, for example, a magnetic recording device, an optical disk, a magneto-optical recording medium, a semiconductor memory, or the like.
  • magnetic recording devices hard disk devices, flexible disks, magnetic tapes, etc., as optical discs, DVD (Digital Versatile Disc), DVD-RAM (Random Access Memory), CD-ROM (Compact Disc Read Only Memory), CD-R (Recordable) / RW (ReWritable), etc.
  • magneto-optical recording media such as MO (Magneto-Optical disc), etc. as semiconductor memory, EEP-ROM (Electronically Erasable and Programmable-Read Only Memory), etc. can be used.
  • this program is carried out, for example, by selling, transferring, lending, etc. portable recording media such as DVDs and CD-ROMs on which the program is recorded.
  • the program may be distributed by storing the program in the storage device of the server computer and transferring the program from the server computer to other computers via the network.
  • a computer that executes such a program for example, first stores the program recorded on a portable recording medium or the program transferred from the server computer once in its own storage device. When executing the process, this computer reads the program stored in its own storage device and executes the process according to the read program. Also, as another execution form of this program, the computer may read the program directly from a portable recording medium and execute processing according to the program, and the program is transferred from the server computer to this computer. Each time, the processing according to the received program may be executed sequentially. In addition, the above-mentioned processing is executed by a so-called ASP (Application Service Provider) type service, which does not transfer the program from the server computer to this computer, and realizes the processing function only by its execution instruction and result acquisition. may be It should be noted that the program in this embodiment includes information that is used for processing by a computer and that conforms to the program (data that is not a direct instruction to the computer but has the property of prescribing the processing of the computer, etc.).
  • ASP Application Service Provide
  • a hardware entity is configured by executing a predetermined program on a computer, but at least part of these processing contents may be implemented by hardware.

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

データを秘匿したまま高精度にk-means法を秘密計算する技術を提供する。クラスタID jのシェアとクラスタID jのセントロイドのシェアの組を第jレコードとして含むテーブルをセントロイドテーブルの初期値として設定するセントロイドテーブル初期化手段と、データID iのシェアとクラスタID jのシェアとデータID iのデータとクラスタID jのセントロイドとの距離dijのシェアの組を第M(j-1)+iレコードとして含む距離テーブルを計算する距離テーブル計算手段と、データID iのシェアとデータID iのデータが属するクラスタのクラスタID k(i)のシェアの組を第iレコードとして含むクラスタIDテーブルを計算するクラスタIDテーブル計算手段と、セントロイドテーブルを計算するセントロイドテーブル計算手段とを含む。

Description

秘密クラスタ計算システム、秘密クラスタ計算装置、秘密クラスタ計算方法、プログラム
 本発明は、秘密計算技術に関し、特にk-means法を秘密計算する技術に関する。
 複数のデータを分類する技術として、似ているデータ同士を1つのクラスタに分類する技術(以下、クラスタリング技術という)がある。クラスタリング技術として、例えば、非特許文献1に記載のk-means法がある。このk-means法を秘密計算するための従来の方法として、非特許文献2に記載の方法がある。
 秘密計算とは、暗号化された数値を復元することなく指定された演算の演算結果を得る方法のことである(例えば参考非特許文献1参照)。参考非特許文献1の方法では、数値を復元することのできる複数の情報を3つの秘密計算装置に分散するという暗号化を行い、数値を復元することなく、加減算、定数和、乗算、定数倍、論理演算(否定、論理積、論理和、排他的論理和)、データ形式変換(整数、二進数)の結果を3つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。一般に、分散数は3に限らずW(Wは3以上の所定の定数)とすることができ、W個の秘密計算装置による協調計算によって秘密計算を実現するプロトコルはマルチパーティプロトコルと呼ばれる。
(参考非特許文献1:千田浩司, 濱田浩気, 五十嵐大, 高橋克巳, “軽量検証可能3パーティ秘匿関数計算の再考,” In CSS, 2010.)
John A Hartigan and Manchek A Wong, "Algorithm AS 136: A K-Means Clustering Algorithm," Journal of the Royal Statistical Society. Series C(Applied Statistics), Vol.28, No.1, pp.100-108, 1979. Jaideep Vaidya and Chris Clifton, "Privacy-preserving k-means clustering over vertically partitioned data," In Proceedings of the ninth ACM SIGKDD international conference on Knowledge discovery and data mining, pp.206-215, 2003.
 しかし、非特許文献2に記載の方法には、暗号化したままでは計算が困難なものを近似計算するために平文で計算したときの結果と異なるものになってしまうという計算精度の問題や、計算の途中でデータを復号して計算するという安全性の問題がある。
 そこで本発明は、データを秘匿したまま高精度にk-means法を秘密計算する技術を提供することを目的とする。
 本発明の一態様は、M(Mは1以上の整数)をデータの数、K(Kは1以上の整数)をクラスタの数、N(Nは1以上の整数)をデータの次元、(xi1, …, xiN) (i=1, …, M)をデータID iのデータとし、3個以上の秘密クラスタ計算装置で構成され、M個のデータ(xi1, …, xiN)のシェア([[xi1]], …, [[xiN]]) (i=1, …, M)から、データID iのデータが属するクラスタのクラスタID k(i)(ただし、k(i)は1≦k(i)≦Kを満たす)のシェア[[k(i)]]を計算する秘密クラスタ計算システムであって、データIDと当該データIDのデータが属するクラスタのクラスタIDを属性(以下、データID属性、クラスタID属性という)として含むテーブルをクラスタIDテーブル、データIDと当該データIDのデータを属性(以下、データID属性、データ属性という)として含むテーブルをデータテーブル、クラスタIDと当該クラスタIDのクラスタのセントロイドを属性(以下、クラスタID属性、セントロイド属性という)として含むテーブルをセントロイドテーブル、データIDとクラスタIDと当該データIDのデータと当該クラスタIDのクラスタのセントロイドとの距離を属性(以下、データID属性、クラスタID属性、距離属性という)として含むテーブルを距離テーブルとし、データテーブルは、データID iのシェア[[i]]とデータID iのデータ(xi1, …, xiN)のシェア([[xi1]], …, [[xiN]])の組を第iレコード(i=1, …, M)として含み、クラスタID jのシェア[[j]]とクラスタID jのセントロイド(cj1, …, cjN)のシェア([[cj1]], …, [[cjN]]) (ただし、当該シェアは所定の方法で計算したものとする)の組を第jレコード(j=1, …, K)として含むテーブルをセントロイドテーブルの初期値として設定するセントロイドテーブル初期化手段と、データテーブルとセントロイドテーブルを用いて、データID iのシェア[[i]]とクラスタID jのシェア[[j]]とデータID iのデータ(xi1, …, xiN)とクラスタID jのセントロイド(cj1, …, cjN)との距離dijのシェア[[dij]]の組を第M(j-1)+iレコード(i=1, …, M, j=1, …, K)として含む距離テーブルを計算する距離テーブル計算手段と、距離テーブルを用いて、データID iのシェア[[i]]とデータID iのデータが属するクラスタのクラスタID k(i)のシェア[[k(i)]]の組を第iレコード(i=1, …, M)として含むクラスタIDテーブルを計算するクラスタIDテーブル計算手段と、データテーブルとクラスタIDテーブルを用いて、セントロイドテーブルを計算するセントロイドテーブル計算手段と、を含む。
 本発明によれば、データを秘匿したまま高精度にk-means法を秘密計算することが可能となる。
groupBySum演算の様子を示す図である。 groupByCount演算の様子を示す図である。 クラスタIDテーブルの一例を示す図である。 データテーブルの一例を示す図である。 セントロイドテーブルの一例を示す図である。 距離テーブルの一例を示す図である。 秘密クラスタ計算システム10の構成を示すブロック図である。 秘密クラスタ計算装置100iの構成を示すブロック図である。 秘密クラスタ計算システム10の動作を示すフローチャートである。 本発明の実施形態における各装置を実現するコンピュータの機能構成の一例を示す図である。
 以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
 各実施形態の説明に先立って、この明細書における表記方法について説明する。
 ^(キャレット)は上付き添字を表す。例えば、xy^zはyzがxに対する上付き添字であり、xy^zはyzがxに対する下付き添字であることを表す。また、_(アンダースコア)は下付き添字を表す。例えば、xy_zはyzがxに対する上付き添字であり、xy_zはyzがxに対する下付き添字であることを表す。
 ある文字xに対する^xや~xのような上付き添え字の”^”や”~”は、本来”x”の真上に記載されるべきであるが、明細書の記載表記の制約上、^xや~xと記載しているものである。
<技術的背景>
<<秘密計算>>
 本願の発明における秘密計算は、既存の秘密計算上の演算の組み合わせで構築される。この秘密計算に必要な演算は、秘匿化、加算、減算、乗算、除算、論理演算(否定、論理積、論理和、排他的論理和)、比較演算(=, <, >, ≦, ≧)、秘密ソート、秘密ユニークチェック、Group-by演算である。以下、記法も含めいくつかの演算について説明していく。
[秘匿化]
 [[x]]をxを秘密分散で秘匿した値(以下、xのシェアという)とする。秘密分散方法には、任意の方法を用いることができる。例えば、GF(261-1)上のShamir秘密分散、Z2上の複製秘密分散を用いることができる。
 ある1つのアルゴリズムの中で複数の秘密分散方法を組み合わせて用いてもよい。この場合、適宜相互に変換するものとする。
 また、N次元ベクトルx=(x1, …, xN)に対して、[[x]]=([[x1]], …, [[xN]])とする。つまり、[[x]]は、xの第n要素xnのシェア[[xn]]を第n要素とするベクトルである。同様に、M×N行列A=(am,n)(1≦m≦M, 1≦n≦N)に対しても、[[A]]をAの第(m, n)要素am,nのシェア[[am,n]]を第(m, n)要素とする行列とする。
 なお、xを[[x]]の平文という。
 xから[[x]]を求める方法(秘匿化)、[[x]]からxを求める方法(復元)として、具体的には、参考非特許文献1、参考非特許文献2に記載の方法がある。
(参考非特許文献2:Shamir, A., “How to share a secret”, Communications of the ACM, Vol.22,  No.11, pp.612-613, 1979.)
[加算、減算、乗算、除算]
 秘密計算による加算[[x]]+[[y]]は、[[x]], [[y]]を入力とし、[[x+y]]を出力する。秘密計算による減算[[x]]-[[y]]は、[[x]], [[y]]を入力とし、[[x-y]]を出力する。秘密計算による乗算[[x]]×[[y]](mul([[x]], [[y]])と表すこともある)は、[[x]], [[y]]を入力とし、[[x×y]]を出力する。秘密計算による除算[[x]]/[[y]](div([[x]], [[y]])と表すこともある)は、[[x]], [[y]]を入力とし、[[x/y]]を出力する。
 加算、減算、乗算、除算の具体的方法として、参考非特許文献3、参考非特許文献4に記載の方法がある。
(参考非特許文献3:Ben-Or, M., Goldwasser, S. and Wigderson, A., “Completeness theorems for non-cryptographic fault-tolerant distributed computation”, Proceedings of the twentieth annual ACM symposium on Theory of computing, ACM, pp. 1-10, 1988.)
(参考非特許文献4:Gennaro, R., Rabin, M. O. and Rabin, T., “Simplied VSS and fast-track multiparty computations with applications to threshold cryptography”, Proceedings of the seventeenth annual ACM symposium on Principles of distributed computing, ACM, pp.101-111, 1998.)
 N次元ベクトルx=(x1, …, xN)のシェア[[x]]=([[x1]], …, [[xN]])、N次元ベクトルy=(y1, …, yN)のシェア[[y]]=([[y1]], …, [[yN]])に対して、秘密計算による除算[[x]]/[[y]]を[[x/y]]=([[x1/y1]], …, [[xN/yN]])とする。なお、[[x]]/[[y]]を[[x]]を[[y]]で割った値ともいう。
[論理演算]
 秘密計算による否定not[[x]]は、[[x]]を入力とし、[[not(x)]]を出力する。秘密計算による論理積and([[x]], [[y]])は、[[x]], [[y]]を入力とし、[[and(x, y)]]を出力する。秘密計算による論理和or([[x]], [[y]])は、[[x]], [[y]]を入力とし、[[or(x, y)]]を出力する。秘密計算による排他的論理和xor([[x]], [[y]])は、[[x]], [[y]]を入力とし、[[xor(x, y)]]を出力する。
 なお、論理演算は加算、減算、乗算、除算を組み合わせることで容易に構成することができる。
[比較演算]
 秘密計算による等号判定=([[x]], [[y]]) (equal([[x]], [[y]])と表すこともある)は、[[x]], [[y]]を入力とし、x=yである場合は[[1]]を、それ以外の場合は[[0]]を出力する。秘密計算による比較<([[x]], [[y]])は、[[x]], [[y]]を入力とし、x<yである場合は[[1]]を、それ以外の場合は[[0]]を出力する。秘密計算による比較>([[x]], [[y]])は、[[x]], [[y]]を入力とし、x>yである場合は[[1]]を、それ以外の場合は[[0]]を出力する。秘密計算による比較≦([[x]], [[y]])は、[[x]], [[y]]を入力とし、x≦yである場合は[[1]]を、それ以外の場合は[[0]]を出力する。秘密計算による比較≧([[x]], [[y]])は、[[x]], [[y]]を入力とし、x≧yである場合は[[1]]を、それ以外の場合は[[0]]を出力する。
 なお、比較演算は論理演算を組み合わせることで容易に構成することができる。
[秘密ソート]
 秘密ソートは、N次元ベクトルx=(x1, …, xN)のシェア[[x]]を入力とし、[[x]]の要素[[x1]], …, [[xN]]を昇順にソートしたベクトルsort([[x]]):=([[xi_1]], …, [[xi_N]])(ただし、xi_1, …, xi_Nはxi_1≦xi_2≦ … ≦xi_Nを満たす)を出力する。また、任意の属性の各要素が秘匿化されているテーブルTに対して、テーブルTの属性αをキーとしてテーブルTを秘密ソートしたテーブルとは、属性αの要素の値が第1レコードから昇順になるようにレコードごと入れ替えたテーブルのこととする。
 秘密ソートの具体的方法として、参考非特許文献5に記載の方法がある。
(参考非特許文献5:五十嵐大, 濱田浩気, 菊池亮, 千田浩司, “超高速秘密計算ソートの設計と実装:秘密計算がスクリプト言語に並ぶ日,” コンピュータセキュリティシンポジウム(CSS), 2017.)
[秘密ユニークチェック]
 秘密ユニークチェックは、N次元ベクトルx=(x1, …, xN)のシェア[[x]]を入力とし、[[x]]の要素[[x1]], …, [[xN]]の中に同じ値が2回以上出現する場合、1回目の出現となる要素については[[1]]、2回目以降の出現となる要素については[[0]]で置換したベクトルunique_check([[x]]):=([[xi_1]], …, [[xi_N]])(ただし、xi_1, …, xi_Nは1または0のいずれかである)を出力する。例えば、ベクトル([[1]], [[2]], [[2]], [[3]], [[3]], [[3]])に対して秘密ユニークチェックを実行すると、([[1]], [[1]], [[0]], [[1]], [[0]], [[0]])となる。
 なお、秘密ユニークチェックは秘密ソートや比較演算を組み合わせることで容易に構成することができる。
[Group-by演算]
 Group-by演算とは,テーブルにキー属性(例:性別)とバリュー属性(例:身長)があり、当該テーブルの任意の属性の各要素が秘匿化されている場合、キー属性の要素の値ごとにグループ分けした統計値(例:性別ごとの平均身長)を得る演算である。計算される統計値が合計である場合がgroupBySum演算であり、計算される統計値が度数である場合がgroupByCount演算である。
 図1はgroupBySum演算の一例を示す図である。図1の例からわかるように、groupBySum演算の結果を表すテーブルではキー属性の要素の値が第1レコードから昇順に整列され、キー属性の要素の値ごとに、バリュー属性1の要素の和、バリュー属性2の要素の和が求められている。図2はgroupByCount演算の一例を示す図である。図2の例からわかるように、groupByCount演算の結果を表すテーブルではキー属性の値が第1レコードから昇順に整列され、キー属性の要素の値ごとに、バリュー属性1の要素の数、バリュー属性2の要素の数が求められている。
 Group-by演算の具体的方法として、参考非特許文献6に記載の方法がある。
(参考非特許文献6:菊池亮, 濱田浩気, 五十嵐大, 高橋元, 高橋克巳, ”横断的動線分析を秘密計算でやってみよう”, 2020年暗号と情報セキュリティシンポジウム, 3C2-1, 2020.)
 参考非特許文献6に開示されているGroup-by演算はgroupByCommonという演算を用いることで様々なGroup-by演算を効率よく行っている。
<<k-means法>>
 k-means法は教師無し学習に分類される機械学習手法の1つである。回帰分析やクラス分類のような教師あり学習では、欲しい出力(教師データという)を用意してその出力を高い精度で再現するようなモデルを構築することを目的とするのに対し、クラスタリングのような教師無し学習では事前に欲しい出力を定めない。
 クラスタリングでは、与えられた複数のデータ間の距離を計算し、距離が近いデータを似ているデータとしてクラスタにまとめていく。クラスタリングはk-means法のように生成するクラスタの数を事前に決めておく非階層的な手法と、生成するクラスタの数を事前に決めておかず最も似ている(つまり、距離が最小の)データ同士から順番にクラスタとしていく階層的な手法とがある。k-means法は、階層的な手法に比べると、大規模データをクラスタリングする場合でも計算量が大きくなりにくいという特徴があるため、階層的な手法で扱いきれない規模のデータに対して用いられることが多い。
 k-means法における処理の流れは以下の通りである。
(1)生成するクラスタの数Kとクラスタリングの対象となるM個のデータを入力する。なお、各データはN次元ベクトルで表されるものとする。各次元はそれぞれデータの特徴量を表す。
(2)K個のセントロイドの初期値を設定する。ここで、セントロイドとは、クラスタに含まれるデータの重心のことである。また、初期値の設定方法として、M個のデータの中からランダムに選択したK個のデータをセントロイドとするForgy法や、k-means++法がある。
(3)データとセントロイドの各ペアに対して、距離を計算する。距離には、例えば、ユークリッド距離を用いる。
(4)各データに対して、セントロイドとの距離が最小となるクラスタを当該データが属するクラスタとして割り当てる。
(5)各クラスタに対して、セントロイドを計算する。
(6)所定の終了条件を満たす場合、(4)で得られたデータに対するクラスタの割り当て結果、つまり、データが属するクラスタを表す情報を出力し、それ以外の場合は(3)~(5)の処理を実行する。ここで、所定の終了条件とは、例えば、K個のセントロイドのそれぞれがある位置に収束したか否かという条件や、(3)~(5)の処理の実行回数が所定の回数に達したか否かという条件のことである。
<<秘密k-means法>>
 秘密k-means法は、k-means法を秘密計算する方法であり、データの数Mとクラスタの数K以外は秘密とする。また、終了条件として上記のような収束判定条件を用いる場合、収束判定ごとに“K個のセントロイドのそれぞれがある位置に収束したか否か”を表す1ビットの情報を復号する必要があるが、その他の情報はいずれも秘匿化されたまま処理される。例えば、M個のデータ、K個のセントロイド、データとセントロイドとの距離、データが属するクラスタを表す情報、クラスタに含まれるデータの数は秘匿化されたまま処理される。
 次に、秘密k-means法で扱うテーブルについて説明する。k-means法では、データが属するクラスタを表す情報を扱う必要がある。ここでは、図3に示すような、M個のデータのデータIDとK個のクラスタのクラスタIDを1対1で対応付けたテーブル(以下、クラスタIDテーブルという)を用いて管理する。なお、いずれのIDも1から順に払い出されるものとする。また、M個のデータは、図4に示すような、データIDと当該データIDのデータを対応付けたテーブル(以下、データテーブルという)を用いて管理する。さらに、K個のセントロイドは、図5に示すような、クラスタIDと当該クラスタIDのクラスタのセントロイドを対応付けたテーブル(以下、セントロイドテーブルという)を用いて管理する。上記3つのテーブルのうち、データテーブルは処理の途中で書き換えられることはない一方で、クラスタIDテーブルとセントロイドテーブルは適宜書き換えられる。
 秘密k-means法における処理の流れは、k-means法における処理の流れと同一であり、秘密計算されるか否かという点において異なるのみである。以下、(3)~(5)の処理が上記3つのテーブルを用いてどのように実行されるのかについて説明する。
[データとセントロイドとの距離の計算]
 ここでは、(3)の処理について説明する。当該処理では、データテーブルとセントロイドテーブルを用いて、データIDとクラスタIDのすべての組合せに対して、当該データIDのデータと当該クラスタIDのクラスタのセントロイドとの距離を計算する。ただし、以降の処理を容易にするために、計算結果を図6に示すような距離テーブルにまとめる。
[クラスタの割り当て]
 ここでは、(4)の処理について説明する。当該処理では、(3)の処理で得られた距離テーブルを用いて、各データに対してセントロイドとの距離が最小となるクラスタがペアとなるように、クラスタIDテーブルを更新する。つまり、クラスタIDテーブルにおいて、データIDとペアになるクラスタIDは、当該データIDのデータとの距離が最小となるセントロイドが含まれるクラスタのクラスタIDである。そのために、距離テーブルの中から、各データIDに対して当該データIDのデータとの距離が最小となるクラスタのクラスタIDを取り出すようにする。具体的には、以下のような処理を実行する。
(4-1)距離属性をキーとして距離テーブルを秘密ソートする。
(4-2)(4-1)で生成したテーブルのデータID属性の要素列に対して秘密ユニークチェックを実行し、秘密ユニークチェックした結果として得られる要素列をチェック済みデータID属性として(4-1)で生成したテーブルに追加したテーブルを生成する。
(4-3)(4-2)で生成したテーブルのチェック済みデータID属性の要素の値が[[1]]に等しいレコードのみを取り出し、これらのレコードからなるテーブルを生成する。
(4-4)データID属性をキーとして(4-3)で生成したテーブルを秘密ソートする。
 (4-4)で生成したテーブルからデータID属性の要素列とクラスタID属性の要素列を取り出したテーブルが、各データに対してセントロイドとの距離が最小となるクラスタがペアとなるクラスタIDテーブルとなる。
[セントロイドの計算]
 ここでは、(5)の処理について説明する。当該処理では、(4)の処理で得られたクラスタIDテーブルを用いて、セントロイドテーブルを更新する。セントロイドは、各クラスタに含まれるデータの平均である。したがって、各クラスタに対して、当該クラスタに含まれるデータの和と当該クラスタに含まれるデータの数を求めることができれば、セントロイドを求めることができる。各データはベクトルとして表現されているため、groupBySum演算とgroupByCount演算を用いることで、セントロイドを効率よく求めることができる。具体的には、以下のような処理を実行する。
(5-1)クラスタIDテーブルのクラスタID属性の要素列を取り出し、当該要素列でデータテーブルのデータID属性の要素列を置換する。
(5-2)(5-1)で生成したテーブルに対して、データID属性をキーとしてgroupBySum演算を実行する。
(5-3)(5-1)で生成したテーブルに対して、データID属性をキーとしてgroupByCount演算を実行する。
(5-4)(5-2)で生成したテーブルの各レコードのデータ属性の要素の値を(5-3)で生成したテーブルの各レコードのデータ属性の要素の値で割った値を求める。
 (5-4)で求めた値が、各クラスタのセントロイドとなる。
 以上述べたことからわかるように、秘密ソートと秘密ユニークチェックを用いてクラスタの割り当てを実行し、groupBySum演算とgroupByCount演算を用いてセントロイドの計算を実行することにより、k-means法を安全かつ効率的に秘密計算することができる。
<第1実施形態>
 以下、図7~図9を参照して秘密クラスタ計算システム10について説明する。図7は、秘密クラスタ計算システム10の構成を示すブロック図である。秘密クラスタ計算システム10は、W個(Wは3以上の所定の整数)の秘密クラスタ計算装置1001、…、100Wを含む。秘密クラスタ計算装置1001、…、100Wは、ネットワーク800に接続しており、相互に通信可能である。ネットワーク800は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図8は、秘密クラスタ計算装置100i(1≦i≦W)の構成を示すブロック図である。図9は、秘密クラスタ計算システム10の動作を示すフローチャートである。
 図8に示すように秘密クラスタ計算装置100iは、セントロイドテーブル初期化部110iと、距離テーブル計算部120iと、クラスタIDテーブル計算部130iと、セントロイドテーブル計算部140iと、終了条件判定部150iと、記録部190iを含む。記録部190iを除く秘密クラスタ計算装置100iの各構成部は、秘密計算で必要とされる演算、つまり、少なくとも秘匿化、加算、減算、乗算、除算、論理演算(否定、論理積、論理和、排他的論理和)、比較演算(=, <, >, ≦, ≧)、秘密ソート、秘密ユニークチェック、Group-by演算のうち、各構成部の機能を実現するうえで必要になる演算を実行できるように構成されている。本発明において個々の演算を実現するための具体的な機能構成は、例えば参考非特許文献1~6のそれぞれで開示されるアルゴリズムを含む既存のアルゴリズムを実行できるような構成で十分であり、これらは従来的構成であるから詳細な説明については省略する。また、記録部190iは、秘密クラスタ計算装置100iの処理に必要な情報を記録する構成部である。例えば、記録部190iは、事前にクラスタリング対象となるデータを表すデータテーブルを記録しておく。
 W個の秘密クラスタ計算装置100iによる協調計算によって、秘密クラスタ計算システム10はマルチパーティプロトコルであるk-means法の秘密計算を実現する。よって、秘密クラスタ計算システム10のセントロイドテーブル初期化手段110(図示していない)はセントロイドテーブル初期化部1101、…、110Wで構成され、距離テーブル計算手段120(図示していない)は距離テーブル計算部1201、…、120Wで構成され、クラスタIDテーブル計算手段130(図示していない)はクラスタIDテーブル計算部1301、…、130Wで構成され、セントロイドテーブル計算手段140(図示していない)はセントロイドテーブル計算部1401、…、140Wで構成され、終了条件判定手段150(図示していない)は終了条件判定部1501、…、150Wで構成される。
 秘密クラスタ計算システム10は、M(Mは1以上の整数)をデータの数、K(Kは1以上の整数)をクラスタの数、N(Nは1以上の整数)をデータの次元、(xi1, …, xiN) (i=1, …, M)をデータID iのデータとし、M個のデータ(xi1, …, xiN)のシェア([[xi1]], …, [[xiN]]) (i=1, …, M)から、データID iのデータが属するクラスタのクラスタID k(i)(ただし、k(i)は1≦k(i)≦Kを満たす)のシェア[[k(i)]]を計算する。ここで、クラスタIDテーブルは、データIDと当該データIDのデータが属するクラスタのクラスタIDを属性(以下、データID属性、クラスタID属性という)として含むテーブル、データテーブルは、データIDと当該データIDのデータを属性(以下、データID属性、データ属性という)として含むテーブル、セントロイドテーブルは、クラスタIDと当該クラスタIDのクラスタのセントロイドを属性(以下、クラスタID属性、セントロイド属性という)として含むテーブル、距離テーブルは、データIDとクラスタIDと当該データIDのデータと当該クラスタIDのクラスタのセントロイドとの距離を属性(以下、データID属性、クラスタID属性、距離属性という)として含むテーブルであり、データテーブルは、データID iのシェア[[i]]とデータID iのデータ(xi1, …, xiN)のシェア([[xi1]], …, [[xiN]])の組を第iレコード(i=1, …, M)として含むものとする。
 以下、図9に従い秘密クラスタ計算システム10の動作について説明する。
 S110において、セントロイドテーブル初期化手段110は、クラスタID jのシェア[[j]]とクラスタID jのセントロイド(cj1, …, cjN)のシェア([[cj1]], …, [[cjN]]) (ただし、当該シェアは所定の方法で計算したものとする)の組を第jレコード(j=1, …, K)として含むテーブルをセントロイドテーブルの初期値として設定する。セントロイドテーブル初期化手段110は、例えば、シェア[[1]], …, [[M]]の中からデータIDのシェア[[i1]], …, [[iK]]をランダムに選択し、クラスタID jのシェア[[j]]とデータID ijのデータ(xi_j1, …, xi_jN)のシェア([[xi_j1]], …, [[xi_jN]])の組をセントロイドテーブルの第jレコード(j=1, …, K)の初期値として設定する。
 S120において、距離テーブル計算手段120は、データテーブルとセントロイドテーブルを用いて、データID iのシェア[[i]]とクラスタID jのシェア[[j]]とデータID iのデータ(xi1, …, xiN)とクラスタID jのセントロイド(cj1, …, cjN)との距離dijのシェア[[dij]]の組を第M(j-1)+iレコード(i=1, …, M, j=1, …, K)として含む距離テーブルを計算する。なお、S120の1回目の実行時にはS110で計算したセントロイドテーブル、2回目以降の実行時にはS140で計算したセントロイドテーブルが用いられる。
 S130において、クラスタIDテーブル計算手段130は、距離テーブルを用いて、データID iのシェア[[i]]とデータID iのデータが属するクラスタのクラスタID k(i)のシェア[[k(i)]]の組を第iレコード(i=1, …, M)として含むクラスタIDテーブルを計算する。クラスタIDテーブル計算手段130は、例えば、距離テーブルを用いて、距離テーブルの距離属性をキーとして距離テーブルを秘密ソートすることにより、第1中間テーブルを計算し、第1中間テーブルを用いて、第1中間テーブルのデータID属性の要素列を秘密ユニークチェックすることにより得られる列をチェック済みデータID属性として第1中間テーブルに追加することにより、第2中間テーブルを計算し、第2中間テーブルを用いて、第2中間テーブルのチェック済みデータID属性の要素の値が[[1]]であるレコードを含む第3中間テーブルを計算し、第3中間テーブルを用いて、第3中間テーブルのデータID属性をキーとして第3中間テーブルを秘密ソートすることにより得られるテーブルのデータID属性の要素列とクラスタID属性の要素列をそれぞれクラスタIDテーブルのデータID属性の要素列とクラスタID属性の要素列とすることにより、クラスタIDテーブルを計算する。ここで、第1中間テーブルはデータID属性とクラスタID属性と距離属性を含むテーブル、第2中間テーブルはチェック済みデータID属性とデータID属性とクラスタID属性と距離属性を含むテーブル、第3中間テーブルはチェック済みデータID属性とデータID属性とクラスタID属性と距離属性を含むテーブルとなる。また、第1中間テーブルはMK個のレコードを、第2中間テーブルはMK個のレコードを、第3中間テーブルはM個のレコードを含む。
 S140において、セントロイドテーブル計算手段140は、データテーブルとクラスタIDテーブルを用いて、セントロイドテーブルを計算する。セントロイドテーブル計算手段140は、例えば、データテーブルとクラスタIDテーブルを用いて、データテーブルのデータID属性の要素列をクラスタIDテーブルのクラスタID属性の要素で置換することにより、第5中間テーブルを計算し、第5中間テーブルを用いて、第5中間テーブルのデータID属性をキーとするgroupBySum演算により、第6中間テーブルを計算し、第5中間テーブルを用いて、第5中間テーブルのデータID属性をキーとするgroupByCount演算により、第7中間テーブルを計算し、第6中間テーブルと第7中間テーブルを用いて、第6中間テーブルの第jレコードのデータ属性の要素の値を第7中間テーブルの第jレコードのデータ属性の要素の値で割った値をセントロイドテーブルの第jレコードのセントロイド属性の要素の値とすることにより、セントロイドテーブルを計算する。ここで、第5中間テーブルはデータID属性とデータ属性を含むテーブル、第6中間テーブルはデータID属性とデータ属性を含むテーブル、第7中間テーブルはデータID属性とデータ属性を含むテーブルとなる。また、第5中間テーブルはM個のレコードを、第6中間テーブルはK個のレコードを、第7中間テーブルはK個のレコードを含む。
 S150において、終了条件判定手段150は、所定の終了条件が満たされる場合処理を終了し、それ以外の場合S120の処理に戻る。つまり、秘密クラスタ計算システム10は、S120~S140の処理を繰り返す。所定の終了条件がS120~S140の処理の実行回数である場合、実行回数Tのシェア[[T]]は事前に与えられているものとし、セントロイドテーブル初期化手段110はカウンタtの値をシェア[[0]]で初期化する。そして、終了条件判定手段150は、カウンタtの値をt+[[1]]で更新し、=([[t>T]], [[1]])の値が[[1]]である場合は処理を終了し、それ以外の場合はS120の処理に戻るようにすればよい。
 本発明の実施形態によれば、データを秘匿したまま高精度にk-means法を秘密計算することが可能となる。
<補記>
 図10は、上述の各装置を実現するコンピュータの機能構成の一例を示す図である。上述の各装置における処理は、記録部2020に、コンピュータを上述の各装置として機能させるためのプログラムを読み込ませ、制御部2010、入力部2030、出力部2040などに動作させることで実施できる。
 本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部、CPU(Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい)、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD-ROMなどの記録媒体を読み書きできる装置(ドライブ)などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
 ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている(外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるROMに記憶させておくこととしてもよい)。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に記憶される。
 ハードウェアエンティティでは、外部記憶装置(あるいはROMなど)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にCPUで解釈実行・処理される。その結果、CPUが所定の機能(上記、…部、…手段などと表した各構成要件)を実現する。
 本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
 既述のように、上記実施形態において説明したハードウェアエンティティ(本発明の装置)における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
 この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD-RAM(Random Access Memory)、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP-ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
 また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
 このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
 また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。

Claims (6)

  1.  M(Mは1以上の整数)をデータの数、K(Kは1以上の整数)をクラスタの数、N(Nは1以上の整数)をデータの次元、(xi1, …, xiN) (i=1, …, M)をデータID iのデータとし、
     3個以上の秘密クラスタ計算装置で構成され、M個のデータ(xi1, …, xiN)のシェア([[xi1]], …, [[xiN]]) (i=1, …, M)から、データID iのデータが属するクラスタのクラスタID k(i)(ただし、k(i)は1≦k(i)≦Kを満たす)のシェア[[k(i)]]を計算する秘密クラスタ計算システムであって、
     データIDと当該データIDのデータが属するクラスタのクラスタIDを属性(以下、データID属性、クラスタID属性という)として含むテーブルをクラスタIDテーブル、データIDと当該データIDのデータを属性(以下、データID属性、データ属性という)として含むテーブルをデータテーブル、クラスタIDと当該クラスタIDのクラスタのセントロイドを属性(以下、クラスタID属性、セントロイド属性という)として含むテーブルをセントロイドテーブル、データIDとクラスタIDと当該データIDのデータと当該クラスタIDのクラスタのセントロイドとの距離を属性(以下、データID属性、クラスタID属性、距離属性という)として含むテーブルを距離テーブルとし、
     データテーブルは、データID iのシェア[[i]]とデータID iのデータ(xi1, …, xiN)のシェア([[xi1]], …, [[xiN]])の組を第iレコード(i=1, …, M)として含み、
     クラスタID jのシェア[[j]]とクラスタID jのセントロイド(cj1, …, cjN)のシェア([[cj1]], …, [[cjN]]) (ただし、当該シェアは所定の方法で計算したものとする)の組を第jレコード(j=1, …, K)として含むテーブルをセントロイドテーブルの初期値として設定するセントロイドテーブル初期化手段と、
     データテーブルとセントロイドテーブルを用いて、データID iのシェア[[i]]とクラスタID jのシェア[[j]]とデータID iのデータ(xi1, …, xiN)とクラスタID jのセントロイド(cj1, …, cjN)との距離dijのシェア[[dij]]の組を第M(j-1)+iレコード(i=1, …, M, j=1, …, K)として含む距離テーブルを計算する距離テーブル計算手段と、
     距離テーブルを用いて、データID iのシェア[[i]]とデータID iのデータが属するクラスタのクラスタID k(i)のシェア[[k(i)]]の組を第iレコード(i=1, …, M)として含むクラスタIDテーブルを計算するクラスタIDテーブル計算手段と、
     データテーブルとクラスタIDテーブルを用いて、セントロイドテーブルを計算するセントロイドテーブル計算手段と、
     を含む秘密クラスタ計算システム。
  2.  請求項1に記載の秘密クラスタ計算システムであって、
     前記クラスタIDテーブル計算手段は、
     距離テーブルを用いて、距離テーブルの距離属性をキーとして距離テーブルを秘密ソートすることにより、第1中間テーブルを計算し、
     第1中間テーブルを用いて、第1中間テーブルのデータID属性の要素列を秘密ユニークチェックすることにより得られる列をチェック済みデータID属性として第1中間テーブルに追加することにより、第2中間テーブルを計算し、
     第2中間テーブルを用いて、第2中間テーブルのチェック済みデータID属性の要素の値が[[1]]であるレコードを含む第3中間テーブルを計算し、
     第3中間テーブルを用いて、第3中間テーブルのデータID属性をキーとして第3中間テーブルを秘密ソートすることにより得られるテーブルのデータID属性の要素列とクラスタID属性の要素列をそれぞれクラスタIDテーブルのデータID属性の要素列とクラスタID属性の要素列とすることにより、クラスタIDテーブルを計算する
     ことを特徴とする秘密クラスタ計算システム。
  3.  請求項1に記載の秘密クラスタ計算システムであって、
     前記セントロイドテーブル計算手段は、
     データテーブルとクラスタIDテーブルを用いて、データテーブルのデータID属性の要素列をクラスタIDテーブルのクラスタID属性の要素で置換することにより、第5中間テーブルを計算し、
     第5中間テーブルを用いて、第5中間テーブルのデータID属性をキーとするgroupBySum演算により、第6中間テーブルを計算し、
     第5中間テーブルを用いて、第5中間テーブルのデータID属性をキーとするgroupByCount演算により、第7中間テーブルを計算し、
     第6中間テーブルと第7中間テーブルを用いて、第6中間テーブルの第jレコードのデータ属性の要素の値を第7中間テーブルの第jレコードのデータ属性の要素の値で割った値をセントロイドテーブルの第jレコードのセントロイド属性の要素の値とすることにより、セントロイドテーブルを計算する
     ことを特徴とする秘密クラスタ計算システム。
  4.  M(Mは1以上の整数)をデータの数、K(Kは1以上の整数)をクラスタの数、N(Nは1以上の整数)をデータの次元、(xi1, …, xiN) (i=1, …, M)をデータID iのデータとし、
     M個のデータ(xi1, …, xiN)のシェア([[xi1]], …, [[xiN]]) (i=1, …, M)から、データID iのデータが属するクラスタのクラスタID k(i)(ただし、k(i)は1≦k(i)≦Kを満たす)のシェア[[k(i)]]を計算する、3個以上の秘密クラスタ計算装置で構成される秘密クラスタ計算システムの中の秘密クラスタ計算装置であって、
     データIDと当該データIDのデータが属するクラスタのクラスタIDを属性(以下、データID属性、クラスタID属性という)として含むテーブルをクラスタIDテーブル、データIDと当該データIDのデータを属性(以下、データID属性、データ属性という)として含むテーブルをデータテーブル、クラスタIDと当該クラスタIDのクラスタのセントロイドを属性(以下、クラスタID属性、セントロイド属性という)として含むテーブルをセントロイドテーブル、データIDとクラスタIDと当該データIDのデータと当該クラスタIDのクラスタのセントロイドとの距離を属性(以下、データID属性、クラスタID属性、距離属性という)として含むテーブルを距離テーブルとし、
     データテーブルは、データID iのシェア[[i]]とデータID iのデータ(xi1, …, xiN)のシェア([[xi1]], …, [[xiN]])の組を第iレコード(i=1, …, M)として含み、
     クラスタID jのシェア[[j]]とクラスタID jのセントロイド(cj1, …, cjN)のシェア([[cj1]], …, [[cjN]]) (ただし、当該シェアは所定の方法で計算したものとする)の組を第jレコード(j=1, …, K)として含むテーブルをセントロイドテーブルの初期値として設定するセントロイドテーブル初期化部と、
     データテーブルとセントロイドテーブルを用いて、データID iのシェア[[i]]とクラスタID jのシェア[[j]]とデータID iのデータ(xi1, …, xiN)とクラスタID jのセントロイド(cj1, …, cjN)との距離dijのシェア[[dij]]の組を第M(j-1)+iレコード(i=1, …, M, j=1, …, K)として含む距離テーブルを計算する距離テーブル計算部と、
     距離テーブルを用いて、データID iのシェア[[i]]とデータID iのデータが属するクラスタのクラスタID k(i)のシェア[[k(i)]]の組を第iレコード(i=1, …, M)として含むクラスタIDテーブルを計算するクラスタIDテーブル計算部と、
     データテーブルとクラスタIDテーブルを用いて、セントロイドテーブルを計算するセントロイドテーブル計算部と、
     を含む秘密クラスタ計算装置。
  5.  M(Mは1以上の整数)をデータの数、K(Kは1以上の整数)をクラスタの数、N(Nは1以上の整数)をデータの次元、(xi1, …, xiN) (i=1, …, M)をデータID iのデータとし、
     3個以上の秘密クラスタ計算装置で構成される秘密クラスタ計算システムが、M個のデータ(xi1, …, xiN)のシェア([[xi1]], …, [[xiN]]) (i=1, …, M)から、データID iのデータが属するクラスタのクラスタID k(i)(ただし、k(i)は1≦k(i)≦Kを満たす)のシェア[[k(i)]]を計算する秘密クラスタ計算方法であって、
     データIDと当該データIDのデータが属するクラスタのクラスタIDを属性(以下、データID属性、クラスタID属性という)として含むテーブルをクラスタIDテーブル、データIDと当該データIDのデータを属性(以下、データID属性、データ属性という)として含むテーブルをデータテーブル、クラスタIDと当該クラスタIDのクラスタのセントロイドを属性(以下、クラスタID属性、セントロイド属性という)として含むテーブルをセントロイドテーブル、データIDとクラスタIDと当該データIDのデータと当該クラスタIDのクラスタのセントロイドとの距離を属性(以下、データID属性、クラスタID属性、距離属性という)として含むテーブルを距離テーブルとし、
     データテーブルは、データID iのシェア[[i]]とデータID iのデータ(xi1, …, xiN)のシェア([[xi1]], …, [[xiN]])の組を第iレコード(i=1, …, M)として含み、
     前記秘密クラスタ計算システムが、クラスタID jのシェア[[j]]とクラスタID jのセントロイド(cj1, …, cjN)のシェア([[cj1]], …, [[cjN]]) (ただし、当該シェアは所定の方法で計算したものとする)の組を第jレコード(j=1, …, K)として含むテーブルをセントロイドテーブルの初期値として設定するセントロイドテーブル初期化ステップと、
     前記秘密クラスタ計算システムが、データテーブルとセントロイドテーブルを用いて、データID iのシェア[[i]]とクラスタID jのシェア[[j]]とデータID iのデータ(xi1, …, xiN)とクラスタID jのセントロイド(cj1, …, cjN)との距離dijのシェア[[dij]]の組を第M(j-1)+iレコード(i=1, …, M, j=1, …, K)として含む距離テーブルを計算する距離テーブル計算ステップと、
     前記秘密クラスタ計算システムが、距離テーブルを用いて、データID iのシェア[[i]]とデータID iのデータが属するクラスタのクラスタID k(i)のシェア[[k(i)]]の組を第iレコード(i=1, …, M)として含むクラスタIDテーブルを計算するクラスタIDテーブル計算ステップと、
     前記秘密クラスタ計算システムが、データテーブルとクラスタIDテーブルを用いて、セントロイドテーブルを計算するセントロイドテーブル計算ステップと、
     を含む秘密クラスタ計算方法。
  6.  請求項4に記載の秘密クラスタ計算装置としてコンピュータを機能させるためのプログラム。
PCT/JP2022/000520 2022-01-11 2022-01-11 秘密クラスタ計算システム、秘密クラスタ計算装置、秘密クラスタ計算方法、プログラム WO2023135636A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2022/000520 WO2023135636A1 (ja) 2022-01-11 2022-01-11 秘密クラスタ計算システム、秘密クラスタ計算装置、秘密クラスタ計算方法、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2022/000520 WO2023135636A1 (ja) 2022-01-11 2022-01-11 秘密クラスタ計算システム、秘密クラスタ計算装置、秘密クラスタ計算方法、プログラム

Publications (1)

Publication Number Publication Date
WO2023135636A1 true WO2023135636A1 (ja) 2023-07-20

Family

ID=87278562

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2022/000520 WO2023135636A1 (ja) 2022-01-11 2022-01-11 秘密クラスタ計算システム、秘密クラスタ計算装置、秘密クラスタ計算方法、プログラム

Country Status (1)

Country Link
WO (1) WO2023135636A1 (ja)

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
DOGANAY, M. C. ET AL.: "Distributed Privacy Preserving k-Means Clustering with Additive Secret Sharing", PROCEEDINGS OF THE 2008 INTERNATIONAL WORKSHOP ON PRIVACY AND ANONYMITY IN INFORMATION SOCIETY, 29 March 2008 (2008-03-29), pages 3 - 11, XP058089058, DOI: 10.1145/1379287.1379291 *
JAGANNATHAN, G. ET AL.: "Privacy-Preserving Distributed k-Means Clustering over Arbitrarily Partitioned Data", PROCEEDINGS OF THE ELEVENTH ACM SIGKDD INTERNATIONAL CONFERENCE ON KNOWLEDGE DISCOVERY IN DATA MINING, 21 August 2005 (2005-08-21), pages 593 - 599, XP058100248, DOI: 10. 1 145/1081870.1081942 *
PATEL, S. ET AL.: "An Efficient Approach for Privacy Preserving Distributed K-Means Clustering Based on Shamir's Secret Sharing Scheme", IFIPTM 2012: TRUST MANAGEMENT VI, 21 May 2012 (2012-05-21), pages 129 - 141, XP093080071, DOI: 10.1007/978-3-642-29852-3_9 *
PAYMAN MOHASSEL ; MIKE ROSULEK ; NI TRIEU: "Practical Privacy-Preserving K-means Clustering", IACR, INTERNATIONAL ASSOCIATION FOR CRYPTOLOGIC RESEARCH, vol. 20191007:082525, 5 October 2019 (2019-10-05), International Association for Cryptologic Research , pages 1 - 30, XP061033668 *
VAIDYA, J. ET AL.: "Privacy-Preserving K-Means Clustering over Vertically Partitioned Data", PROCEEDINGS OF THE NINTH ACM SIGKDD INTERNATIONAL CONFERENCE ON KNOWLEDGE DISCOVERY AND DATA MINING, 24 August 2003 (2003-08-24), pages 206 - 215, XP058082821, DOI: 10.1145/956750.956776 *

Similar Documents

Publication Publication Date Title
Keshavamurthy et al. Privacy preserving association rule mining over distributed databases using genetic algorithm
CN109726758B (zh) 一种基于差分隐私的数据融合发布算法
JP6989006B2 (ja) 秘密集約関数計算システム、秘密計算装置、秘密集約関数計算方法、およびプログラム
WO2020071187A1 (ja) 秘密シグモイド関数計算システム、秘密ロジスティック回帰計算システム、秘密シグモイド関数計算装置、秘密ロジスティック回帰計算装置、秘密シグモイド関数計算方法、秘密ロジスティック回帰計算方法、プログラム
JP6605746B2 (ja) 秘密等結合システム、秘密等結合装置、秘密等結合方法、プログラム
JP7226562B2 (ja) 秘密ソフトマックス関数計算システム、秘密ソフトマックス関数計算装置、秘密ソフトマックス関数計算方法、秘密ニューラルネットワーク計算システム、秘密ニューラルネットワーク学習システム、プログラム
JP7327510B2 (ja) 秘密乱数生成システム、秘密計算装置、秘密乱数生成方法、およびプログラム
JPWO2019208486A1 (ja) 秘密集約中央値システム、秘密計算装置、秘密集約中央値方法、およびプログラム
US20190147770A1 (en) Data processing system and data processing method
WO2023135636A1 (ja) 秘密クラスタ計算システム、秘密クラスタ計算装置、秘密クラスタ計算方法、プログラム
JP7315032B2 (ja) 暗号化データ分析装置、暗号化データ分析方法、プログラム
WO2023135635A1 (ja) 秘密乱数計算システム、秘密乱数計算装置、秘密乱数計算方法、秘密クラスタ計算システム、秘密クラスタ計算装置、秘密クラスタ計算方法、プログラム
Kamphorst et al. Accurate training of the Cox proportional hazards model on vertically-partitioned data while preserving privacy
JP5411715B2 (ja) 疑似データ生成装置、疑似データ生成方法、プログラム及び記録媒体
Yadav et al. Privacy preserving data mining with abridge time using vertical partition decision tree
Zheng et al. Privet: A privacy-preserving vertical federated learning service for gradient boosted decision tables
JP7205623B2 (ja) 秘密共役勾配法計算システム、秘密計算装置、共役勾配法計算装置、秘密共役勾配法計算方法、共役勾配法計算方法、およびプログラム
CN116868258A (zh) 秘密页面排序计算系统及其方法、秘密计算装置和程序
WO2024018504A1 (ja) クライアント装置、秘密テーブル管理システム、レコード登録要求生成方法、レコード登録方法、処理要求実行方法、プログラム
WO2023228273A1 (ja) 秘密属性選択システム、秘密属性選択装置、秘密属性選択方法、プログラム
WO2023233622A1 (ja) 秘密計算装置、秘密計算方法、プログラム
WO2023188261A1 (ja) 秘密グローバルモデル計算装置、ローカルモデル登録方法、プログラム
JP7243846B2 (ja) 秘密生存時間データ処理システム、秘密生存時間データ処理装置、秘密生存時間データ処理方法、プログラム
WO2022259366A1 (ja) 秘密計算装置、秘密計算システム、秘密計算方法、およびプログラム
JP7231053B2 (ja) 維持置換確率生成装置、維持置換撹乱装置、維持置換確率生成方法、維持置換撹乱方法、プログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22920162

Country of ref document: EP

Kind code of ref document: A1