System, apparatus, method and program for secure aggregate median computation
5 claims: 3 independent, 2 dependent
- 1複数の秘密計算装置を含む秘密集約中央値システムであって、 mは2以上の整数であり、[v]:=[v 0 ], ..., [v m-1 ]はキー属性とバリュー属性とからなるテーブルを所望のバリュー属性の値と上記キー属性の値とに基づいて安定ソートしたときの所望のバリュー属性v:=v 0 , ..., v m-1 を秘密分散したシェアであり、[a]:=[a 0 ], ..., [a m-1 ]は所望のバリュー属性の値と上記キー属性の値とに基づいて安定ソート済みの上記テーブルを上記キー属性の値に基づいてグループ分けしたときに上記vのグループ内での昇順順位を表すベクトルa:=a 0 , ..., a m-1 を秘密分散したシェアであり、[d]:=[d 0 ], ..., [d m-1 ]は所望のバリュー属性の値と上記キー属性の値とに基づいて安定ソート済みの上記テーブルを上記キー属性の値に基づいてグループ分けしたときに上記vのグループ内での降順順位を表すベクトルd:=d 0 , ..., d m-1 を秘密分散したシェアであり、|・|は等式・の真偽を返却する記号であり、 上記秘密計算装置は、 上記シェア[a]と上記シェア[d]とを用いて、2 λ mを満たすλに対する[2 λ +a-d], [2 λ +d-a]の計算結果をλビットにビット分解して、復元するとビット列a-dとなるシェア{a-d}と、復元するとビット列d-aとなるシェア{d-a}とを生成する減算部と、 上記シェア{a-d}と上記シェア{d-a}とを用いて、復元するとa-dの最下位ビットを除いたビット列a'となるシェア{a'}と、復元するとd-aの最下位ビットを除いたビット列d'となるシェア{d'}とを生成するビット削除部と、 上記シェア{a'}と上記シェア{d'}とを用いて、{a"}:={|a'=0|}, {d"}:={|d'=0|}を計算し、復元するとフラグa", d"となるシェア{a"}, {d"}を生成する等号判定部と、 上記シェア[v]と上記シェア{a"}, {d"}とを用いて、[v a ]:=[va"], [v d ]:=[vd"]を計算し、復元するとベクトルv a , v d となるシェア[v a ], [v d ]を生成するフラグ適用部と、 上記シェア{a"}, {d"}を用いて、復元するとフラグa", d"の否定¬a", ¬d"をソートする置換σ a , σ d となるシェア{{σ a }}, {{σ d }}を生成する置換生成部と、 上記シェア[v a ], [v d ]と上記シェア{{σ a }}, {{σ d }}とを用いて、[x]:=[σ a (v a )+σ d (v d )]を計算し、復元すると各グループの中央値を表すベクトルxとなるシェア[x]を生成する中央値計算部と、 を含む秘密集約中央値システム。
- 2請求項1に記載の秘密集約中央値システムであって、 Fは任意の環であり、n k は1以上の整数であり、[k 0 ], ..., [k nk-1 ]はキー属性k 0 , ..., k nk-1 ∈F m を秘密分散したシェアであり、[v']は上記テーブルを上記キー属性の値に基づいてソートする前の所望のバリュー属性v'∈F m を秘密分散したシェアであり、 上記秘密計算装置は、 上記シェア[k 0 ], ..., [k nk-1 ]を用いて、復元すると上記キー属性k 0 , ..., k nk-1 をビット分解して結合したビット列b:=b 0 , ..., b m-1 となるシェア{b}から、復元すると上記ビット列bを昇順に安定ソートする置換σ 0 となるシェア{{σ 0 }}を生成するグループソート生成部と、 上記シェア{b}と上記シェア{{σ 0 }}とを用いて、復元すると上記ビット列bを上記置換σ 0 でソートしたソート済みビット列b':=b' 0 , ..., b' m-1 となるシェア{b'}を生成するビット列ソート部と、 上記シェア{b'}を用いて、0以上m-2以下の各整数iについて{e i }:={b' i ≠b' i+1 }を設定し、かつ、{e m-1 }:={1}を設定して、復元すると上記フラグe:=e 0 , ..., e m-1 となる上記シェア{e}を生成するフラグ生成部と、 上記シェア{e}を用いて、復元すると上記フラグeの否定¬eを昇順に安定ソートする置換σとなるシェア{{σ}}を生成するキー集約ソート生成部と、 上記シェア[v']と上記シェア{{σ 0 }}とを用いて、復元すると上記バリュー属性v'を上記置換σ 0 でソートした上記バリュー属性vとなる上記シェア[v]を生成するバリューソート部と、 をさらに含む秘密集約中央値システム。
- 3mは2以上の整数であり、[v]:=[v 0 ], ..., [v m-1 ]はキー属性とバリュー属性とからなるテーブルを所望のバリュー属性の値と上記キー属性の値とに基づいて安定ソートしたときの所望のバリュー属性v:=v 0 , ..., v m-1 を秘密分散したシェアであり、[a]:=[a 0 ], ..., [a m-1 ]は所望のバリュー属性の値と上記キー属性の値とに基づいて安定ソート済みの上記テーブルを上記キー属性の値に基づいてグループ分けしたときに上記vのグループ内での昇順順位を表すベクトルa:=a 0 , ..., a m-1 を秘密分散したシェアであり、[d]:=[d 0 ], ..., [d m-1 ]は所望のバリュー属性の値と上記キー属性の値とに基づいて安定ソート済みの上記テーブルを上記キー属性の値に基づいてグループ分けしたときに上記vのグループ内での降順順位を表すベクトルd:=d 0 , ..., d m-1 を秘密分散したシェアであり、|・|は等式・の真偽を返却する記号であり、 上記シェア[a]と上記シェア[d]とを用いて、2 λ mを満たすλに対する[2 λ +a-d], [2 λ +d-a]の計算結果をλビットにビット分解して、復元するとビット列a-dとなるシェア{a-d}と、復元するとビット列d-aとなるシェア{d-a}とを生成する減算部と、 上記シェア{a-d}と上記シェア{d-a}とを用いて、復元するとa-dの最下位ビットを除いたビット列a'となるシェア{a'}と、復元するとd-aの最下位ビットを除いたビット列d'となるシェア{d'}とを生成するビット削除部と、 上記シェア{a'}と上記シェア{d'}とを用いて、{a"}:={|a'=0|}, {d"}:={|d'=0|}を計算し、復元するとフラグa", d"となるシェア{a"}, {d"}を生成する等号判定部と、 上記シェア[v]と上記シェア{a"}, {d"}とを用いて、[v a ]:=[va"], [v d ]:=[vd"]を計算し、復元するとベクトルv a , v d となるシェア[v a ], [v d ]を生成するフラグ適用部と、 上記シェア{a"}, {d"}を用いて、復元するとフラグa", d"の否定¬a", ¬d"をソートする置換σ a , σ d となるシェア{{σ a }}, {{σ d }}を生成する置換生成部と、 上記シェア[v a ], [v d ]と上記シェア{{σ a }}, {{σ d }}とを用いて、[x]:=[σ a (v a )+σ d (v d )]を計算し、復元すると各グループの中央値を表すベクトルxとなるシェア[x]を生成する中央値計算部と、 を含む秘密計算装置。
- 4複数の秘密計算装置を含む秘密集約中央値システムが実行する秘密集約中央値方法であって、 mは2以上の整数であり、[v]:=[v 0 ], ..., [v m-1 ]はキー属性とバリュー属性とからなるテーブルを所望のバリュー属性の値と上記キー属性の値とに基づいて安定ソートしたときの所望のバリュー属性v:=v 0 , ..., v m-1 を秘密分散したシェアであり、[a]:=[a 0 ], ..., [a m-1 ]は所望のバリュー属性の値と上記キー属性の値とに基づいて安定ソート済みの上記テーブルを上記キー属性の値に基づいてグループ分けしたときに上記vのグループ内での昇順順位を表すベクトルa:=a 0 , ..., a m-1 を秘密分散したシェアであり、[d]:=[d 0 ], ..., [d m-1 ]は所望のバリュー属性の値と上記キー属性の値とに基づいて安定ソート済みの上記テーブルを上記キー属性の値に基づいてグループ分けしたときに上記vのグループ内での降順順位を表すベクトルd:=d 0 , ..., d m-1 を秘密分散したシェアであり、|・|は等式・の真偽を返却する記号であり、 上記秘密計算装置の減算部が、上記シェア[a]と上記シェア[d]とを用いて、2 λ mを満たすλに対する[2 λ +a-d], [2 λ +d-a]の計算結果をλビットにビット分解して、復元するとビット列a-dとなるシェア{a-d}と、復元するとビット列d-aとなるシェア{d-a}とを生成し、 上記秘密計算装置のビット削除部が、上記シェア{a-d}と上記シェア{d-a}とを用いて、復元するとa-dの最下位ビットを除いたビット列a'となるシェア{a'}と、復元するとd-aの最下位ビットを除いたビット列d'となるシェア{d'}とを生成し、 上記秘密計算装置の等号判定部が、上記シェア{a'}と上記シェア{d'}とを用いて、{a"}:={|a'=0|}, {d"}:={|d'=0|}を計算し、復元するとフラグa", d"となるシェア{a"}, {d"}を生成し、 上記秘密計算装置のフラグ適用部が、上記シェア[v]と上記シェア{a"}, {d"}とを用いて、[v a ]:=[va"], [v d ]:=[vd"]を計算し、復元するとベクトルv a , v d となるシェア[v a ], [v d ]を生成し、 上記秘密計算装置の置換生成部が、上記シェア{a"}, {d"}を用いて、復元するとフラグa", d"の否定¬a", ¬d"をソートする置換σ a , σ d となるシェア{{σ a }}, {{σ d }}を生成し、 上記秘密計算装置の中央値計算部が、上記シェア[v a ], [v d ]と上記シェア{{σ a }}, {{σ d }}とを用いて、[x]:=[σ a (v a )+σ d (v d )]を計算し、復元すると各グループの中央値を表すベクトルxとなるシェア[x]を生成する、 を含む秘密集約中央値方法。
- 5請求項3に記載の秘密計算装置としてコンピュータを機能させるためのプログラム。
Independent claims5
52 paragraphs, as filed
The present invention relates to a secret calculation technique, and more particularly to a technique for calculating an aggregate function while maintaining confidentiality.
An aggregate function is an operation that obtains grouped statistics based on the value of a key attribute when the table has a key attribute and a value attribute. Aggregate functions are also called group-by operations. The key attribute is an attribute used for grouping records in a table, and examples thereof include job title and gender. The value attribute is an attribute used for calculating a statistical value, and examples thereof include salary and height. The group-by operation is, for example, an operation for finding the average height for each gender when the key attribute is gender. The key attribute may be a compound key consisting of multiple attributes. For example, when the key attributes are gender and age, the average height of a teenage male, the average height of a male in his 20s, and so on can be obtained. There may be. Non-Patent Document 1 describes a method of performing a group-by operation by a secret calculation.
The aggregate median is one of the aggregate functions, and is an operation to obtain the median value of a desired value attribute for each group when the table is grouped based on the value of the key attribute. The median is the value located in the center when the value attributes of the records belonging to the group are sorted if the number of records in the group is odd, and the average value of the two values located in the center if the number of records is even. The aggregate median is also known as the group-by median. For example, when the key attribute is gender and age and the value attribute is salary, the median group-by is to get the median salary of men in their teens, the median salary of men in their 20s, and so on. It is an operation.
<p><nplcit num="1"><text>Dai Igarashi, Koji Chida, Hiroki Hamada, Katsumi Takahashi, "Efficiency of 3-Party Concealed Function Computation and Secure Database Processing Using It", 2011 Cryptography and Information Security Symposium</text></nplcit></p>
<p> In the conventional secret calculation technique, in order to obtain the median group-by, the number of communication of log (n) is required with n as the number of calculation subjects, which is inefficient.</p><p> An object of the present invention is to provide a technique capable of efficiently obtaining a group-by median while maintaining confidentiality in view of the above technical problems.</p>
<p> In order to solve the above problems, the secret aggregation median system of one aspect of the present invention is a secret aggregation median system including a plurality of secret computing devices, in which m is an integer of 2 or more, [v]. : = [v<sub>0</sub>], ..., [v<sub>m-1</sub>] Is the desired value attribute v: = v when the table consisting of the key attribute and the value attribute is stably sorted based on the desired value attribute value and the key attribute value.<sub>0</sub>, ..., v<sub>m-1</sub>Is a secret-shared share, [a]: = [a]<sub>0</sub>], ..., [a<sub>m-1</sub>] Is a vector a: = a that represents the ascending order within the group of v when the stable sorted table is grouped based on the value of the desired value attribute and the value of the key attribute.<sub>0</sub>, ..., a<sub>m-1</sub>Is a secretly distributed share, [d]: = [d]<sub>0</sub>], ..., [d<sub>m-1</sub>] Is a vector d: = d that represents the descending order of v within the group when the stable sorted table is grouped based on the value of the desired value attribute and the value of the key attribute.<sub>0</sub>, ..., d<sub>m-1</sub>Is a secret-shared share, | . | is a symbol that returns the truth of the equation, and the secret calculator uses share [a] and share [d] to 2<sup>λ</sup>[2] for λ that satisfies> m<sup>λ</sup>+ ad], [2<sup>λ</sup>A subtraction part that generates a share {ad} that becomes a bit string ad when it is restored by bit-decomposing the calculation result of + da] into λ bits, and a share {da} that becomes a bit string da when it is restored, and a share {ad}. Using the share {da}, the share {a'} becomes the bit string a'excluding the least significant bit of ad when restored, and the share {d' becomes the bit string d'excluding the least significant bit of da when restored. } And {a "}: = {| a'= 0 |}, {d"}: = {| d using the bit deleter that generates '= 0 |} is calculated and restored to generate the share {a "}, {d"} that becomes the flag a ", d". Using d "} and [v"<sub>a</sub>]: = [va "], [v<sub>d</sub>]: = [vd "] is calculated and restored to vector v<sub>a</sub>, v<sub>d</sub>Share [v<sub>a</sub>], [v<sub>d</sub>] Is generated and the share {a "}, {d"} is used, and when restored, the negation of the flags a ", d" ¬a ", ¬d" is sorted.<sub>a</sub>, σ<sub>d</sub>Share {{σ<sub>a</sub>}}, {{σ<sub>d</sub>}} Permutation generator and share [v<sub>a</sub>], [v<sub>d</sub>] And share {{σ<sub>a</sub>}}, {{σ<sub>d</sub>}} and [x]: = [σ]<sub>a</sub>(v<sub>a</sub>) + σ<sub>d</sub>(v<sub>d</sub>)] Is calculated, and when restored, it includes a median calculation unit that generates a share [x] that becomes a vector x representing the median of each group.</p>
<p> According to the secret aggregation median technique of the present invention, the group-by median can be efficiently obtained by the number of O (1) communications while maintaining confidentiality.</p>
<figref num="1">FIG. 1 is a diagram illustrating the functional configuration of the secret aggregation median system.</figref><figref num="2">FIG. 2 is a diagram illustrating the functional configuration of the secret computing device.</figref><figref num="3">FIG. 3 is a diagram illustrating the processing procedure of the secret aggregation median method.</figref><figref num="4">FIG. 4 is a diagram illustrating the functional configuration of the secret calculation device of the modified example.</figref>
Hereinafter, embodiments of the present invention will be described in detail. In the drawings, the components having the same function are given the same number, and duplicate description is omitted.
[x] [F] indicates that a certain value x is concealed by secret sharing on an arbitrary ring F or the like. {b} {B} indicates that a certain value b of 1 bit is concealed by secret sharing on the ring B that can represent 1 bit. {{s}} {{S<sub>m</sub>}} is a set of permutations of m elements S<sub>m</sub>Indicates that a certain permutation s belonging to is concealed by secret sharing or the like. Hereinafter, the secret-shared value is also referred to as "share".
As the sort process (including stable sort) in the secret calculation used in the embodiment, for example, the sort described in Reference 1 below can be used. For the share {{s}} of the substitution s, the hybrid substitution {{π}} described in Reference 1 below may be used.
[Reference 1] Dai Igarashi, Hiroki Hamada, Ryo Kikuchi, Koji Chida, "Design and Implementation of Ultra-High-Speed Secret Calculation Sort: The Day when Secret Calculations Line Up in Scripting Languages", CSS2017
<Embodiment> An embodiment of the present invention is a secret aggregate median system and method for obtaining a group-by median value. The median value of this embodiment is twice the value located in the center when the value attributes of the records belonging to the group are sorted if the number of records in the group is odd, and the two values located in the center if the number is even. Is added to the value. Since the calculation cost is high to divide by secret calculation, it is assumed that the median restored by the client who received the share of the median from the secret aggregate median system is divided by 2. Needless to say, it is possible to configure a secret aggregate median system that outputs the median value in the original sense by adding a procedure of dividing by 2 by secret calculation to the secret aggregate median system described in this embodiment.
A configuration example of the secret aggregation median system 100 of the embodiment will be described with reference to FIG. The secret aggregation median system 100 has N ( 2) secret calculators 1.<sub>1</sub>, ..., 1<sub>N</sub>including. In this embodiment, the secret calculation unit 1<sub>1</sub>, ..., 1<sub>N</sub>Are each connected to the communication network 9. The communication network 9 is a circuit-switched or packet-switched communication network configured so that connected devices can communicate with each other. For example, the Internet, LAN (Local Area Network), WAN (Wide Area Network). Etc. can be used. It should be noted that each device does not necessarily have to be able to communicate online via the communication network 9. For example, secret calculator 1<sub>1</sub>, ..., 1<sub>N</sub>The information to be input to is stored in a portable recording medium such as a magnetic tape or a USB memory, and the secret calculation device 1 is used from the portable recording medium.<sub>1</sub>, ..., 1<sub>N</sub>It may be configured to input offline to.
With reference to FIG. 2, the secret computing device 1 included in the secret aggregation median system 100 of this embodiment is included.<sub>n</sub>A configuration example of (n = 1, ..., N) will be described. Secret arithmetic unit 1<sub>n</sub>For example, as shown in FIG. 2, the input unit 10, the rank calculation unit 11, the subtraction unit 12, the bit deletion unit 13, the equal sign determination unit 14, the format conversion unit 15, the flag application unit 16, the replacement generation unit 17, Includes median calculation unit 18 and output unit 19. This secret arithmetic unit 1<sub>n</sub>(1 n N) is another secret calculator 1<sub>n'</sub>The secret aggregation median method of the embodiment is realized by performing the processing of each step described later in cooperation with (n'= 1, ..., N, where n n').
Secret arithmetic unit 1<sub>n</sub>Is a special device configured by loading a special program into a publicly known or dedicated computer having, for example, a central processing unit (CPU), a main storage device (RAM: Random Access Memory), and the like. .. Secret arithmetic unit 1<sub>n</sub>Executes each process under the control of the central processing unit, for example. Secret arithmetic unit 1<sub>n</sub>The data input to and the data obtained in each process are stored in, for example, the main memory, and the data stored in the main memory is read out to the central processing unit as needed for other processes. It will be used. Secret arithmetic unit 1<sub>n</sub>At least a part of each processing unit may be configured by hardware such as an integrated circuit.
A processing procedure of the secret aggregation median method executed by the secret aggregation median system 100 of the embodiment will be described with reference to FIG.
In step S10, each secret calculator 1<sub>n</sub>Input unit 10 is a cross tabulation v<sub>0</sub> F<sup>m</sup>Share [v] concealed by secret sharing<sub>0</sub>] [F]<sup>m</sup>And the value attribute v<sub>1</sub> F<sup>m</sup>Share [v] concealed by secret sharing<sub>1</sub>] [F]<sup>m</sup>And the share {{σ}} {{S that concealed the permutation σ by secret sharing<sub>m</sub>}} Is received as input. However, m is an integer of 2 or more. Input unit 10 is a cross tabulation v<sub>0</sub>Share [v<sub>0</sub>] And the share {{σ}} of the substitution σ are output to the rank calculation unit 11. In addition, the input unit 10 has a value attribute v.<sub>1</sub>Share [v<sub>1</sub>] Is output to the flag application unit 16.
Cross tabulation v<sub>0</sub>Is the result of totaling the number of records in each group. For example, crosstab v<sub>0</sub>When the table is stably sorted by key attribute, records with the same key attribute value are set as the same group, and the result of totaling the number of records in each group is set for the elements from the beginning to the number of groups, and thereafter. The element is a vector set to 0. Note that stable sorting is an operation that saves the order of elements having the same value when elements having the same value exist in the sorting operation. For example, if a table sorted by employee number is stably sorted by gender, a sort result in which the order of employee numbers is maintained in each gender can be obtained. Below, [v<sub>0</sub>] [F]<sup>m</sup>Each element of is [v<sub>0_i</sub>] [F] (i = 0, ..., m-1).
Value attribute v<sub>1</sub>Is the value attribute after the table is stably sorted by the value attribute and the key attribute in ascending order. That is, the value attribute v<sub>1</sub>Is sorted in ascending order by the value of the value attribute for each group. Below, [v<sub>1</sub>] [F]<sup>m</sup>Each element of is [v<sub>1_i</sub>] [F] (i = 0, ..., m-1).
The substitution σ is a substitution in which the values of the key attributes of each group are arranged one by one from the beginning. For example, in the substitution σ, when the table is stably sorted based on the desired value attribute and key attribute, the records having the same key attribute value are set as the same group, and the last element of each group is arranged in order from the beginning, and so on. It is a substitution that moves so that other elements are arranged in order. The share {{σ}} of the substitution σ may be configured by using the hybrid substitution {{π}} described in Reference 1 above.
In step S11, each secret calculator 1<sub>n</sub>The rank calculation unit 11 of the cross tabulation v<sub>0</sub>Share [v<sub>0</sub>] And the share of the permutation σ {{σ}}, and when restored, the vector a: = a showing the ascending order within the group.<sub>0</sub>, ..., a<sub>m-1</sub>Share [a] [F] such that F<sup>m</sup>And when restored, a vector that represents the descending order within the group d: = d<sub>0</sub>, ..., d<sub>m-1</sub>Share [d] [F] such that F<sup>m</sup>To generate. Here, the ascending order and the descending order are set to 1 start. The rank calculation unit 11 outputs the share [a] of the ascending order a and the share [d] of the descending order d to the subtraction unit 12.
The ascending order within the group can be obtained, for example, as follows. First, cross tabulation v<sub>0</sub>Share [v<sub>0</sub>] And the share of the permutation σ {{σ}}, and when restored, the cross tabulation v<sub>0</sub>Inversely replaced crosstab v with the permutation σ applied back to<sub>0</sub>': = Σ<sup>-1</sup>(v<sub>0</sub>) Share [v<sub>0</sub>'] [F]<sup>m</sup>To generate. Cross tabulation v<sub>0</sub>Is a vector in which the number of records of each group is set for the elements from the beginning to the number of groups, and the substitution σ is a substitution that arranges the last element of each group in order from the beginning, so crosstab v<sub>0</sub>Inversely replaced crosstab v with the permutation σ applied back to<sub>0</sub>'Is a vector with the number of records in that group set in the last element of each group. Below, [v<sub>0</sub>'] [F]<sup>m</sup>Each element of is [v<sub>0</sub>'<sub>i</sub>] [F] (i = 0, ..., m-1). Then back-replaced crosstab v<sub>0</sub>'Share [v<sub>0</sub>Using'], [s]: = prefix-sum ([v<sub>0</sub>']) Calculate and restore the vector s: = s<sub>0</sub>, ..., s<sub>m-1</sub>Share [s] [F] such that F<sup>m</sup>To generate. prefix-sum inputs m to vector v<sub>0</sub>'The i-th element s of the output vector s for each integer i greater than or equal to 0 and less than or equal to m-1 as the length of<sub>i</sub>Input vector v<sub>0</sub>'0th element v<sub>0</sub>'<sub>0</sub>I th element from v<sub>0</sub>'<sub>i</sub>It is an operation to set the sum of the values up to. Then, using the share [s] of the vector s, [a] for each integer i of 1 or more and m-1 or less.<sub>i</sub>]: = [is<sub>i-1</sub>Set [+1] and [a<sub>0</sub>]: = If you set [1] and restore, the ascending order within the group a: = a<sub>0</sub>, ..., a<sub>m-1</sub>Share [a] [F] such that F<sup>m</sup>To generate.
The descending order within the group can be obtained, for example, as follows. First, cross tabulation v<sub>0</sub>Share [v<sub>0</sub>] For each integer i from 0 to m-2 [v<sub>0</sub>"<sub>i</sub>]: = [v<sub>0_i + 1</sub>] And [v<sub>0</sub>"<sub>m-1</sub>]: = If you set [0] and restore, shifted crosstab v<sub>0</sub>": = v<sub>0</sub>"<sub>0</sub>, ..., v<sub>0</sub>"<sub>m-1</sub> F<sup>m</sup>Share [v<sub>0</sub>"] [F]<sup>m</sup>To generate. Shifted crosstab v<sub>0</sub>"Is a vector representing the number of records in each group. Crosstab v<sub>0</sub>Is a vector shifted forward one by one. Next, the shifted crosstab v<sub>0</sub>"Share [v<sub>0</sub>Shifted crosstab v when restored using "] and the share of permutation σ {{σ}}<sub>0</sub>Reverse-replaced crosstab v with the permutation σ applied back to<sub>0</sub>': = Σ<sup>-1</sup>(v<sub>0</sub>Share that becomes ") [v<sub>0</sub>'] [F]<sup>m</sup>To generate. Shifted crosstab v<sub>0</sub>"Is a crosstab with the number of records in each group set in the elements from the beginning to the number of groups v<sub>0</sub>Is a vector shifted forward one by one, and the permutation σ is a permutation that arranges the last elements of each group in order from the beginning, so the shifted crosstab v<sub>0</sub>Reverse-replaced crosstab v with the permutation σ applied back to<sub>0</sub>'Is a vector in which the number of records in the next group is set in the last element of each group. Then, the inversely replaced crosstab v<sub>0</sub>'Share [v<sub>0</sub>Using'], [s']: = postfix-sum ([v<sub>0</sub>']) Calculate and restore the vector s': = s'<sub>0</sub>, ..., s'<sub>m-1</sub>Share [s'] [F]<sup>m</sup>To generate. postfix-sum inputs m to vector v<sub>0</sub>For each integer i of 0 or more and m-1 or less as the length of', the i-th element s'of the output vector s'<sub>i</sub>Input vector v<sub>0</sub>'I th element v<sub>0</sub>'<sub>i</sub>From m-1st element v<sub>0</sub>'<sub>m-1</sub>It is an operation to set the sum of the values up to. Then, using the share [s'] of the vector s', [d] for each integer i from 0 to m-1.<sub>i</sub>]: = [mis'<sub>i</sub>] And restore, descending order within the group d: = d<sub>0</sub>, ..., d<sub>m-1</sub>Share [d] [F] such that F<sup>m</sup>To generate.
In step S12, each secret calculator 1<sub>n</sub>First, the subtraction unit 12 of 2 uses the share [a] of the ascending order a and the share [d] of the descending order d.<sup>λ</sup>For λ that satisfies> m, [2<sup>λ</sup>+ ad], [2<sup>λ</sup>+ da] is calculated. Next, the subtraction unit 12 is [2.<sup>λ</sup>+ ad], [2<sup>λ</sup>When + da] is decomposed into λ bits and restored, the share {ad} {B becomes a bit string ad.<sub>λ</sub>}<sup>m</sup>And the share {da} {B which becomes the bit string da when restored<sub>λ</sub>}<sup>m</sup>And generate. The subtraction unit 12 outputs the share {ad} of the bit string ad and the share {da} of the bit string da to the bit deletion unit 13.
In step S13, each secret calculator 1<sub>n</sub>The bit deletion part 13 of is a share {a'}, {d'} {which becomes a', d'when the least significant bit is removed from the share {ad} of ad and the share {da} of da. B<sub>λ-1</sub>}<sup>m</sup>To generate. a'is the bit string excluding the least significant bit of ad, and d'is the bit string excluding the least significant bit of da. The bit deletion unit 13 outputs the share {a'} of a'and the share {d'} of d'to the equal sign determination unit 14.
In step S14, each secret calculator 1<sub>n</sub>The equal sign determination unit 14 of is {a "}: = {| a'= 0 |}, {d"}: using the share {a'} of a'and the share {d'} of d'. = {| d'= 0 |} is calculated and restored to flag a ", d" B<sup>m</sup>Share {a "}, {d"} {B}<sup>m</sup>To generate. In addition, | . | is a symbol for returning the truth of the equation. The flags a "and d" indicate whether ad and da are 0 or more and 1 or less, respectively. Further, a "indicates whether the record has the larger median, and d" indicates whether the record has the smaller median. The equal sign determination unit 14 outputs the shares {a "}, {d"} of the flags a ", d" to the format conversion unit 15 and the substitution generation unit 17.
In step S15, each secret calculator 1<sub>n</sub>The format conversion unit 15 of is the share {a "}, {d"} {B} of the flags a ", d".<sup>m</sup>Share by secret sharing on any ring F [a "], [d"] [F]<sup>m</sup>Convert to. The format conversion unit 15 outputs the shares [a "], [d"] of the flags a ", d" to the flag application unit 16.
In step S16, each secret calculator 1<sub>n</sub>The flag application part 16 of is the value attribute v<sub>1</sub>Share [v<sub>1</sub>] And the share {a "}, {d"} of the flags a ", d", [v<sub>a</sub>]: = [v<sub>1</sub>a "], [v<sub>d</sub>]: = [v<sub>1</sub>When d "] is calculated and restored, the vector v<sub>a</sub>, v<sub>d</sub> F<sup>m</sup>Share [v<sub>a</sub>], [v<sub>d</sub>] [F]<sup>m</sup>To generate. The flag application unit 16 is a vector v.<sub>a</sub>, v<sub>d</sub>Share [v<sub>a</sub>], [v<sub>d</sub>] Is output to the median calculation unit 18.
In step S17, each secret calculator 1<sub>n</sub>First, the substitution generation unit 17 of the above uses the share {a "}, {d"} of the flags a ", d", and when restored, the share becomes the negation of the flags a ", d" ¬a ", ¬d". {¬a "}, {¬d"} {B}<sup>m</sup>To generate. Next, the substitution generation unit 17 uses the negation of the flags a ", d" and the share {¬a "}, {¬d"} of the flags a ", d" to restore the flags a ", d". Permutation σ to sort the negation ¬a ", ¬d"<sub>a</sub>, σ<sub>d</sub>Share {{σ<sub>a</sub>}}, {{σ<sub>d</sub>}} {{S<sub>m</sub>}} Is generated. The substitution generation unit 17 is a substitution σ.<sub>a</sub>, σ<sub>d</sub>Share {{σ<sub>a</sub>}}, {{σ<sub>d</sub>}} Is output to the median calculation unit 18.
In step S18, each secret calculator 1<sub>n</sub>The median calculation unit 18 of the vector v<sub>a</sub>, v<sub>d</sub>Share [v<sub>a</sub>], [v<sub>d</sub>] And substitution σ<sub>a</sub>, σ<sub>d</sub>Share {{σ<sub>a</sub>}}, {{σ<sub>d</sub>}} and [x]: = [σ]<sub>a</sub>(v<sub>a</sub>) + σ<sub>d</sub>(v<sub>d</sub>)] Is calculated and restored to be a vector x representing the median of each group. Share [x] [F]<sup>m</sup>To generate. The median calculation unit 18 outputs the share [x] of the median x to the output unit 19.
In step S19, each secret calculator 1<sub>n</sub>The output unit 19 of the output unit 19 outputs the share [x] of the median x.
<Modification example> In the above embodiment, cross tabulation to the input unit 10 v<sub>0</sub>Share [v<sub>0</sub>] And value attribute v<sub>1</sub>Share [v<sub>1</sub>] And the share {{σ}} of the permutation σ are input. In the modified example, the share whose table is hidden by secret sharing etc. is input to the input unit 10, and the cross tabulation v<sub>0</sub>Share [v<sub>0</sub>] And the share {{σ}} of the substitution σ are obtained, and then the configuration for calculating the group-by median according to the procedure described in the above embodiment will be described.
Secret calculation device 2 of the modified example<sub>n</sub>(n = 1, ..., N) is, for example, as shown in FIG. 4, the secret calculation device 1 of the embodiment.<sub>n</sub>In addition to each processing unit provided by (n = 1, ..., N), bit decomposition unit 21, group sort generation unit 22, bit string sort unit 23, flag generation unit 24, key aggregation sort generation unit 25, value sort. It includes a unit 26, a flag conversion unit 31, a boundary number setting unit 32, a sort unit 33, and a count calculation unit 34. Hereinafter, only the differences from the secret aggregation median system 100 of the embodiment will be described.
Each secret arithmetic unit 2<sub>n</sub>Input unit 10 of<sub>k</sub>Key attribute k<sub>0</sub>, ..., k<sub>nk-1</sub> F<sup>m</sup>Shares that are kept secret by secret sharing [k<sub>0</sub>], ..., [k<sub>nk-1</sub>] [F]<sup>m</sup>And n<sub>a</sub>Value attribute v<sub>0</sub>, ..., v<sub>na-1</sub> F<sup>m</sup>Shares that are kept secret by secret sharing [v<sub>0</sub>], ..., [v<sub>na-1</sub>] [F]<sup>m</sup>And is received as input. However, n<sub>k</sub>, n<sub>a</sub>Is an integer greater than or equal to 1. Also, the value attribute v'<sub>0</sub>, ..., v'<sub>na-1</sub>Of these, the desired value attribute v for which you want to find the median<sub>1</sub>Is sorted in ascending order. Below, [k<sub>j</sub>] [F]<sup>m</sup>(j = 0, ..., n<sub>k</sub>Each element of -1) is [k<sub>j, i</sub>] [F] (i = 0, ..., m-1). Input unit 10 has key attribute k<sub>0</sub>, ..., k<sub>nk-1</sub>Share [k<sub>0</sub>], ..., [k<sub>nk-1</sub>] Is output to the bit decomposition unit 21.
Each secret arithmetic unit 2<sub>n</sub>Bit decomposition unit 21 of the key attribute k<sub>0</sub>, ..., k<sub>nk-1</sub>Share [k<sub>0</sub>], ..., [k<sub>nk-1</sub>] Is bit decomposed, combined, and restored, the key attribute k<sub>0</sub>, ..., k<sub>nk-1</sub>Bit string b: = b that combines the bit representations of<sub>0</sub>, ..., b<sub>m-1</sub> B<sup>λ</sup>Share {b} {B}<sup>λ</sup>To get. However, λ is the bit length of the bit string b, and each b<sub>i</sub>It is the sum of the bit lengths of (i = 0, ..., m-1). In other words, {b<sub>i</sub>} Is the key attribute k<sub>0</sub>, ..., k<sub>nk-1</sub>Share [k<sub>0</sub>], ..., [k<sub>nk-1</sub>] Each i-th element [k<sub>0, i</sub>], ..., [k<sub>nk-1,i</sub>] Bit representation is a concatenated bit string. The bit decomposition unit 21 outputs the share {b} of the bit string b to the group sort generation unit 22.
Each secret arithmetic unit 2<sub>n</sub>The group sort generation unit 22 of the above uses the share {b} of the bit string b, and when restored, the substitution σ for stable sorting of the bit string b in ascending order.<sub>0</sub>Share {{σ<sub>0</sub>}} {{S<sub>m</sub>}} Is generated. Bit string b is the key attribute k<sub>0</sub>, ..., k<sub>nk-1</sub>Substitution σ because it is a combination of bit representations of<sub>0</sub>Is the key attribute k<sub>0</sub>, ..., k<sub>nk-1</sub>It can also be said that it is an operation to sort and group records with the same value so that they are continuous. The group sort generator 22 replaces the share {b} of the bit string b with σ.<sub>0</sub>Share {{σ<sub>0</sub>}} Is output to the bit string sorter 23. Further, the group sort generation unit 22 is replaced with σ.<sub>0</sub>Share {{σ<sub>0</sub>}} Is output to the value sort unit 26.
Each secret arithmetic unit 2<sub>n</sub>The bit string sort part 23 of the bit string b is replaced with the share {b} of the bit string b.<sub>0</sub>Share {{σ<sub>0</sub>When restored using}}, the bit string b is replaced σ<sub>0</sub>Sorted bit string sorted by b': = b'<sub>0</sub>, ..., b'<sub>m-1</sub> B<sup>λ</sup>Share {b'} {B}<sup>λ</sup>To get. The bit string sorting unit 23 outputs the share {b'} of the sorted bit string b'to the flag generation unit 24.
Each secret arithmetic unit 2<sub>n</sub>The flag generation unit 24 of the above uses the share {b'} of the sorted bit string b'for each integer i of 0 or more and m-2 or less {e.<sub>i</sub>}: = {b'<sub>i</sub> b'<sub>i + 1</sub>} And {e<sub>m-1</sub>}: = If you set {1} and restore, the flag e: = e<sub>0</sub>, ..., e<sub>m-1</sub> B<sup>m</sup>Share {e} {B}<sup>m</sup>To generate. Flag e<sub>i</sub>Is the i-th element b'of the sorted bit string b'<sub>i</sub>Is i + 1st element b'<sub>i + 1</sub>Since true is set if it is different from, it is a flag indicating the last element of each group (that is, the element immediately before the boundary between groups). The flag generation unit 24 outputs the share {e} of the flag e to the key aggregate sort generation unit 25 and the flag conversion unit 31.
Each secret arithmetic unit 2<sub>n</sub>First, the key aggregate sort generation unit 25 of the above uses the share {e} of the flag e, and when restored, the share {e'} {B} becomes the flag e', which is the negation of the flag e.<sup>m</sup>To generate. That is, {e'for each integer i greater than or equal to 0 and less than or equal to m-1.<sub>i</sub>}: = {¬e<sub>i</sub>} Is set. Next, the key aggregate sort generator 25 uses the share {e'} of the flag e', and when restored, the share {{σ}} {{is a permutation σ for stable sorting of the flag e'in ascending order. S<sub>m</sub>}} Is generated. The key aggregate sort generation unit 25 outputs the share {{σ}} of the substitution σ to the sort unit 33. Further, the key aggregate sort generation unit 25 outputs the share {{σ}} of the substitution σ to the rank calculation unit 11.
Each secret arithmetic unit 2<sub>n</sub>The value sort unit 26 of the value attribute v<sub>0</sub>, ..., v<sub>na-1</sub>Share [v<sub>0</sub>], ..., [v<sub>na-1</sub>] And substitution σ<sub>0</sub>Share {{σ<sub>0</sub>}} And when restored, the value attribute v<sub>0</sub>, ..., v<sub>na-1</sub>Replace σ<sub>0</sub>Sorted value attribute sorted by v'<sub>0</sub>, ..., v'<sub>na-1</sub>Share [v'<sub>0</sub>], ..., [v'<sub>na-1</sub>] Is generated. The value sort unit 26 is a sorted value attribute v'.<sub>0</sub>, ..., v'<sub>na-1</sub>Share [v'<sub>0</sub>], ..., [v'<sub>na-1</sub>] Of which you want to find the median is the desired value attribute v<sub>1</sub>Share [v<sub>1</sub>] Is output to the flag application unit 16.
Each secret arithmetic unit 2<sub>n</sub>The flag conversion unit 31 of the flag e shares the flag e {e} {B}<sup>m</sup>Share by secret sharing on any ring F [e] [F]<sup>m</sup>Convert to. The flag conversion unit 31 outputs the share [e] of the flag e to the boundary number setting unit 32.
Each secret arithmetic unit 2<sub>n</sub>The boundary number setting unit 32 of the above uses the share [e] of the flag e to [x'for each integer i of 0 or more and m-1 or less.<sub>i</sub>]: = [e<sub>i</sub>Set? i + 1: m] and restore the vector x': = x'<sub>0</sub>, ..., x'<sub>m-1</sub>Share [x'] [F]<sup>m</sup>To generate. Here, "?" Is a conditional operator (or a ternary operator). That is, [e<sub>i</sub>] Is true (for example, [e]<sub>i</sub>] = [1]), then [x'<sub>i</sub>]: = Set [i + 1] and [e<sub>i</sub>] Is false (for example, [e]<sub>i</sub>] = [0]), then [x'<sub>i</sub>]: = Set [m]. The vector x'sets the records with the same key attribute values as the same group when the table is stably sorted by key attribute, the last element of each group is set to the position from the beginning of the next element, and the others. The element is a vector in which the number of records in the entire table is set. In other words, the last element of each group is set to the total value obtained by accumulating the number of records of each group from the first group to that group. The boundary number setting unit 32 outputs the share [x'] of the vector x'to the sort unit 33.
Each secret arithmetic unit 2<sub>n</sub>The sort part 33 of is a sorted vector σ (x') in which the vector x'is sorted by the permutation σ when restored by using the share [x'] of the vector x'and the share {{σ}} of the permutation σ. Share [σ (x')] [F]<sup>m</sup>To generate. Below, [σ (x')] [F]<sup>m</sup>Each element of is [σ (x')<sub>i</sub>] [F] (i = 0, ..., m-1). The sort unit 33 outputs the share [σ (x')] of the sorted vector σ (x') to the count calculation unit 34.
Each secret arithmetic unit 2<sub>n</sub>The count calculation unit 34 of the above uses the share [σ (x')] of the sorted vector σ (x') for each integer i of 1 or more and min (g, m) -1 or less [v.<sub>0_i</sub>]: = [σ (x')<sub>i</sub>-σ (x')<sub>i-1</sub>] Is set, and [v] is set for each integer i of min (g, m) or more and m-1 or less.<sub>0_i</sub>]: = Set [0] and [v<sub>0_0</sub>]: = [σ (x')<sub>0</sub>] And restore it, a vector v that represents the number of records in each group (ie, crosstab)<sub>0</sub>: = v<sub>0_0</sub>, ..., v<sub>0_m-1</sub>Share [v<sub>0</sub>] [F]<sup>m</sup>To generate. The i-th element of the sorted vector σ (x') σ (x')<sub>i</sub>Is set as the total value obtained by accumulating the number of records in each group from 0th to ith, so crosstab v<sub>0</sub>I-th element v<sub>0_i</sub>Will be set to the number of records in the i-th group. The count calculation unit 34 is a cross tabulation v<sub>0</sub>Share [v<sub>0</sub>] Is output to the rank calculation unit 11.
Although the embodiments of the present invention have been described above, the specific configuration is not limited to these embodiments, and even if the design is appropriately changed without departing from the spirit of the present invention, the specific configuration is not limited to these embodiments. Needless to say, it is included in the present invention. The various processes described in the embodiments are not only executed in chronological order according to the order described, but may also be executed in parallel or individually as required by the processing capacity of the device that executes the processes.
[Program, recording medium]
When various processing functions in each device described in the above embodiment are realized by a computer, the processing contents of the functions that each device should have are described by a program. Then, by executing this program on a computer, various processing functions in each of the above devices are realized on the computer.
The program describing the processing content can be recorded on a computer-readable recording medium. The recording medium that can be read by a computer may be, for example, a magnetic recording device, an optical disk, a photomagnetic recording medium, a semiconductor memory, or the like.
In addition, the distribution of this program is carried out, for example, by selling, transferring, renting, or the like a portable recording medium such as a DVD or a CD-ROM in which the program is recorded. Further, the program may be stored in the storage device of the server computer, and the program may be distributed by transferring the program from the server computer to another computer via the network.
A computer that executes such a program first temporarily stores, for example, a program recorded on a portable recording medium or a program transferred from a server computer in its own storage device. Then, when the process is executed, the computer reads the program stored in its own storage device and executes the process according to the read program. Further, as another execution form of this program, a computer may read the program directly from a portable recording medium and execute processing according to the program, and further, the program is transferred from the server computer to this computer. You may execute the process according to the received program one by one each time. In addition, the so-called ASP (Application Service) that realizes the processing function only by the execution instruction and result acquisition without transferring the program from the server computer to this computer. It may be configured to execute the above-mentioned processing by a provider) type service. The program in this embodiment includes information used for processing by a computer and equivalent to the program (data that is not a direct command to the computer but has a property that regulates the processing of the computer, etc.).
Further, in this embodiment, the present device is configured by executing a predetermined program on a computer, but at least a part of these processing contents may be realized in terms of hardware.
4 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4
Every citation, both waysCites: the store holds 2 of 3
| Document | Relation | Office |
|---|---|---|
| JP2014081475A | Cites | Japan |
| JP5957126B1 | Cites | Japan |
| 濱田浩気ほか,秘匿計算上の集約関数中央値計算アルゴリズム,コンピュータセキュリティシンポジウム2012論文集,日本,一般社団法人情報処理学会 コンピュータセキュリティ,2012年10月23日,第2012巻,第3号,p.509-516,情報処理学会シンポジウムシリーズ | Non-patent | – |
| 千田浩司ほか,比較器ネットワークに適した秘匿関数計算の評価と応用,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2007年03月09日,第106巻,第595号,p.53-58 | Non-patent | – |
| 濱田浩気ほか,実用的な速度で統計分析が可能な秘密計算システムMEVAL,コンピュータセキュリティシンポジウム2013論文集,日本,一般社団法人情報処理学会,2013年10月14日,第2013巻,第4号,p.777-784,情報処理学会シンポジウムシリーズ | Non-patent | – |
12 members in 6 offices
Priority claims9
| Document | Office | Kind | Date |
|---|---|---|---|
| 2018085342 | Japan | A | |
| 2018085342 | Japan | A | |
| 2018085342 | Japan | – | |
| 2019016987 | Japan | W | |
| 2019016987 | Japan | W | |
| 2018085342 | – | – | – |
| JP20180085342 | – | – | – |
| JP2019016987 | – | – | – |
| WO2019JP16987 | – | – | – |
Members12
| Document | Office | Kind | |
|---|---|---|---|
| WO2019208486A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU2019259262A1 | Australia | A1 | |
| CN112005288A | China | A | |
| EP3786927A1 | European Patent Office (EPO) | A1 | |
| JPWO2019208486A1 | Japan | A1 | |
| AU2019259262B2 | Australia | B2 | |
| JP6973634B2This record | Japan | B2 | |
| US2021377005A1 | United States of America | A1 | |
| EP3786927A4 | European Patent Office (EPO) | A4 | |
| US11316674B2 | United States of America | B2 | |
| EP3786927B1 | European Patent Office (EPO) | B1 | |
| CN112005288B | China | B |
7 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Written notification of registration of transferJAPANESE INTERMEDIATE CODE: R350R350 | R350 | |
| Written request for registration of change of nameJAPANESE INTERMEDIATE CODE: R313533S533 | S533 | |
| First payment of annual fees (during grant procedure)JAPANESE INTERMEDIATE CODE: A61A61 | A61 | |
| Certificate of patent or registration of utility modelJAPANESE INTERMEDIATE CODE: R150R150 | R150 | |
| Written decision to grant a patent or to grant a registration (utility model)JAPANESE INTERMEDIATE CODE: A01A01 | A01 | |
| Decision of grant or rejection writtenTRDD | TRDD | |
| Written request for application examinationJAPANESE INTERMEDIATE CODE: A621A621 | A621 |
Numbers
- Publication
- 6973634
- Publication, DOCDB
- 6973634
- Publication, EPODOC
- JP6973634B
- Application
- 2020516338
- Application, DOCDB
- 2020516338
- Application, EPODOC
- JP20200516338
Titles2
- Japanese
- 秘密集約中央値システム、秘密計算装置、秘密集約中央値方法、およびプログラム
- English
- Secret Aggregation Median System, Secret Computing Unit, Secret Aggregation Median Method, and Program
Classification
- CPC, 3
- H04L9/085
- G09C1/00
- H04L2209/46
- IPC, 1
- G09C1 00
