WO2023233516A1 - 秘密計算装置、秘密計算方法、プログラム - Google Patents
秘密計算装置、秘密計算方法、プログラム Download PDFInfo
- Publication number
- WO2023233516A1 WO2023233516A1 PCT/JP2022/022111 JP2022022111W WO2023233516A1 WO 2023233516 A1 WO2023233516 A1 WO 2023233516A1 JP 2022022111 W JP2022022111 W JP 2022022111W WO 2023233516 A1 WO2023233516 A1 WO 2023233516A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- record
- value
- boundary
- key
- column
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 26
- 238000004364 calculation method Methods 0.000 claims abstract description 26
- 238000000926 separation method Methods 0.000 claims abstract description 14
- 238000012545 processing Methods 0.000 description 45
- 238000003860 storage Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000015654 memory Effects 0.000 description 5
- 238000000354 decomposition reaction Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
Definitions
- the present invention relates to a secure computing device, secure computing method, and program that perform set operations on data having an encrypted dummy flag string while encrypted.
- Group-by operation which is a type of DB processing, is a grouping process that takes a table as input, groups it by the value of the specified column, and sometimes calculates statistical values for each group and outputs them in table format. It is something.
- a method for performing this while encrypted is proposed in Non-Patent Document 1.
- the input/output considered here was a table in which each element of a normal table was encrypted.
- dummy flag column (dummy flag indicating whether the corresponding record is a dummy record) column
- Non-Patent Document 1 In the case of such input, the algorithm proposed in Non-Patent Document 1 does not work. This is because, in addition to the input format being different, until now it was assumed that all records had meaningful values, so it was not possible to skip the dummy records and perform processing without ignoring them. The value of power v will affect the final result, making it impossible to obtain the original result.
- an object of the present invention is to provide a secure computing device that can perform set operations on data having an encrypted dummy flag string while encrypted.
- the secure computing device of the present invention conceals an encrypted first table including a key column, a value column, and a dummy flag column indicating whether a corresponding record is a dummy record based on the key column.
- a secure computing device that performs Groupby-sum calculations while keeping the group by-sum includes a dummy record separation sorting unit, a boundary flag generation unit, an addition value generation unit, a boundary sorting unit, a difference value generation unit, and a calculation result output unit. .
- the dummy record separation and sorting unit sorts the first table by giving first priority to the upper rank when the corresponding record is not a dummy record, and giving second priority to the key column.
- the first case is when a certain record is not a dummy record and the key of the record is different from the key of the record immediately below it
- the second case is when the record below is a dummy record
- the third case is when a record is not a dummy record and is the lowest record
- the first to third cases A boundary that has a flag value that indicates that the record is a boundary if any of the above applies, and a flag value that indicates that the record is not a boundary if none of the first to third cases apply. Generate flags.
- the additional value generation unit adds all the values located higher than the record to the value of a certain record, and generates the added value of the record.
- the boundary sorting unit performs stable sorting on the second table including the key column, the added value column, and the boundary flag column, giving priority to records that are boundaries at the top.
- the differential value generation unit uses the added value of the topmost record of the second table as a differential value, and the added value of the second and subsequent records in the second table is the added value of the record one above it.
- a differential value is generated by using the difference between the two as a differential value.
- the calculation result output unit outputs a third table including a key string, a difference value string, and a boundary flag string.
- set operations can be performed on data having an encrypted dummy flag string while it is encrypted.
- FIG. 3 is a diagram illustrating an overview of encrypted data (first table) input to the secure computing device.
- 1 is a block diagram showing the functional configuration of a secure computing device according to a first embodiment
- FIG. 2 is a flowchart showing the operation of the secure computing device of the first embodiment.
- FIG. 7 is a diagram showing an example of a first table after processing by a dummy record separation and sorting unit.
- FIG. 7 is a diagram illustrating an example of a first table after processing by a boundary flag generation unit.
- FIG. 1 is a diagram showing an example of a functional configuration of a computer.
- Encryption is performed using secret sharing (for example, reference non-patent document 1) or homomorphic encryption (for example, reference non-patent document 2), which allows the following operations to be performed while encrypted.
- secret sharing for example, reference non-patent document 1
- homomorphic encryption for example, reference non-patent document 2
- circuit calculations can be performed using addition, subtraction, and multiplication. If it is encrypted in integer representation, the circuit can be calculated in the same way by changing to bit representation using bit decomposition (Reference Non-Patent Document 4). If it is encrypted using mod p, you can also calculate [(x - y) p-1 ] using multiplication.
- FIG. 1 shows an overview of encrypted data (first table) input to the secure computing device.
- the secure computing device 1 of this embodiment creates an encrypted first table including a key string, a value string, and a dummy flag string indicating whether or not a corresponding record is a dummy record based on the key string.
- This is a secure computing device 1 that performs Groupby-sum calculations while keeping information confidential. , a difference value generation section 15 , a calculation result output section 16 , and a second calculation result output section 17 .
- the dummy record separation and sorting unit 11 sorts the first table by giving first priority to the upper rank when the corresponding record is not a dummy record, and giving second priority to the key column (S11).
- the processing of the dummy record separation and sorting unit 11 corresponds to the processing of lines 1 to 4 of the algorithm illustrated in FIG. 12.
- the dummy record separation sorting unit 11 sorts the records in ascending order (third and fourth lines of the algorithm) using the negation of [f ⁇ ] (second line of the algorithm) as the first priority key.
- the same effect can be achieved even if the dummy record separation and sorting unit 11 sorts the records in descending order using [f ⁇ ] as the first priority key.
- the dummy record separation and sorting unit 11 sorts the records using the key sequence, that is, [k ⁇ ] as the second priority key (third and fourth lines of the algorithm).
- FIG. 5 shows the first table after processing the first table shown in FIG. 4 by the dummy record separation and sorting unit 11.
- the records resulting from the sorting are expressed as [k' ⁇ ], [v' ⁇ ], [f' ⁇ ], with "'" appended.
- the boundary flag generation unit 12 defines a first case where a record is not a dummy record and the key of the record is different from the key of the record immediately below it, and the boundary flag generation unit 12 determines that the record is not a dummy record and the key of the record immediately below is different.
- the second case is when the record below is a dummy record
- the third case is when a record is not a dummy record and is the lowest record
- the first to third cases are the second case. It has a flag value that indicates that the record is a boundary if any of the cases applies, and has a flag value that indicates that the record is not a boundary if it does not apply to any of the first to third cases.
- a boundary flag is generated (S12).
- the processing by the boundary flag generation unit 12 corresponds to the processing in lines 5 to 10 of the algorithm illustrated in FIG.
- FIG. 6 shows the first table after the first table shown in FIG. 5 has been processed by the boundary flag generation unit 12.
- the additional value generation unit 13 adds all the values located higher than that record to the value of a certain record, and generates the added value of the corresponding record (S13).
- the processing of the added value generation unit 13 corresponds to the processing on the 11th to 12th lines of the algorithm illustrated in FIG.
- FIG. 7 shows the first table after processing the first table shown in FIG. 6 by the addition value generation unit 13.
- the boundary sorting unit 14 performs stable sorting on the second table including the key column, the added value column, and the boundary flag column, giving priority to records that are boundaries at the top (S14).
- the processing by the boundary sorting unit 14 corresponds to the processing in lines 13 and 14 of the algorithm illustrated in FIG.
- FIG. 8 shows a second table obtained by processing the first table shown in FIG. 7 by the boundary sorting unit 14.
- the records resulting from the sorting are expressed as [k'' ⁇ ], [x' ⁇ ], [e'' ⁇ ], with "'” appended.
- the order of the records in the 1st and 2nd rows and the order of the records in the 6th and 7th rows are maintained by stable sorting. Note that in order to omit unnecessary columns and simplify the explanation, the second table is extracted from the first table in the process of step S14, but this extraction process is not essential and is shown in FIG. Simply sorting the first table is sufficient.
- the differential value generation unit 15 uses the added value of the highest record in the second table as the differential value, and for the added value of the second and subsequent records in the second table, the added value of the record one above it. A difference value is generated by using the difference between the difference value and the difference value.
- the processing of the difference value generation unit 15 corresponds to the processing on the 15th to 16th lines of the algorithm illustrated in FIG.
- FIG. 9 shows the second table after processing the second table shown in FIG. 8 by the difference value generation unit 15.
- S14 boundary sorting process described above, the sum of the values of each group based on each key column is further added and displayed as an added value at the top (first to third rows in the example of FIG. 9).
- the calculation result output unit 16 outputs a third table including a key string, a difference value string, and a boundary flag string (S16). Note that the calculation result output unit 16 may output a third table including the negation of the key string, the difference value string, and the boundary flag string, and in the algorithm example of FIG. It is configured to output.
- the processing of the calculation result output unit 16 corresponds to the processing on lines 17 and 18 of the algorithm illustrated in FIG.
- the operation result output unit 16 takes the negation of each element of [e' ⁇ ] and sets it as [e''' ⁇ ] (1-[e' ⁇ ]) (line 17 of the algorithm ), ([k'' ⁇ ], [x' ⁇ ], [e''' ⁇ ]) are output as the third table (line 18 of the algorithm).
- FIG. 10 shows the third table after the second table shown in FIG. 9 has been processed by the calculation result output unit 16.
- the second table is converted into a third table and output in the process of step S16, but this process is not essential; for example, if the The computing device 1 may perform the above steps S11 to S16 on the first table and output the first table as is.
- ⁇ Second calculation result output unit 17> When the boundary flag of a certain record in the second table (exemplified in FIG. 9) processed in step S15 indicates that it is not a boundary, the second calculation result output unit 17 inputs a predetermined character string into the key of the corresponding record. The difference value of the corresponding record is replaced with a hidden value of 0, and is output as a fourth table including a key string, a difference value string, and a boundary flag string (S17).
- the processing of the second calculation result output unit 17 corresponds to the processing on lines 17 and 18 of the algorithm illustrated in FIG. 13 (which includes null processing and corresponds to another version of the algorithm in FIG. 12).
- FIG. 11 shows the fourth table after the second table shown in FIG. 9 has been processed by the second calculation result output unit 17.
- the second table is converted into the fourth table and output in the process of step S17, but this process is not essential.
- the secure computing device 1 may perform the above steps S11 to S15 and S17 on the first table and output the first table as is.
- the dummy record is sorted using the dummy flag to be the lowest record, and the dummy flag indicates that the record corresponding to the group boundary determination bit is a dummy record.
- the sum processing first calculate the sum from the top, then sort and extract only the output value to the top, and calculate the difference from the previous value. , achieved groupby-sum without decoding by combining addition and subtraction processing without communication.
- the device of the present invention includes, as a single hardware entity, an input section to which a keyboard or the like can be connected, an output section to which a liquid crystal display or the like 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 that can be connected to a CPU (Central Processing Unit, which may include cache memory, registers, etc.), RAM and ROM that are memories, external storage devices that are hard disks, and their input units, output units, and communication units. , CPU, RAM, ROM, and an external storage device.
- the hardware entity may be provided with a device (drive) that can read and write 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 program required to realize the above-mentioned functions and the data required for processing this program (not limited to the external storage device, for example, when reading the program (It may be stored in a ROM, which is a dedicated storage device.) Further, data obtained through processing of these programs is 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 memory as necessary, and are interpreted and executed and processed by the CPU as appropriate.
- the CPU realizes predetermined functions (each of the constituent elements expressed as . . . units, . . . means, etc.).
- the processing functions of the hardware entity (device of the present invention) described in the above embodiments are realized by a computer, the processing contents of the functions that the hardware entity should have are described by a program. By executing this program on a computer, the processing functions of the hardware entity are realized on the computer.
- a program that describes this processing content can be recorded on a computer-readable recording medium.
- the computer-readable recording medium may be of any type, such as a magnetic recording device, an optical disk, a magneto-optical recording medium, or a semiconductor memory.
- magnetic recording devices include hard disk drives, flexible disks, magnetic tapes, etc.
- optical disks include DVDs (Digital Versatile Discs), DVD-RAMs (Random Access Memory), and CD-ROMs (Compact Discs Read Only). Memory), CD-R (Recordable)/RW (ReWritable), etc. as magneto-optical recording media, MO (Magneto-Optical disc), etc. as semiconductor memory, EEP-ROM (Electrically Erasable and Programmable-Read Only Memory), etc. can be used.
- this program is performed, for example, by selling, transferring, lending, etc. portable recording media such as DVDs and CD-ROMs on which the program is recorded. Furthermore, this 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 another computer via a network.
- a computer that executes such a program for example, first stores a program recorded on a portable recording medium or a program transferred from a server computer in its own storage device. When executing a process, this computer reads a program stored in its own recording medium and executes a process according to the read program. In addition, as another form of execution of this program, the computer may directly read the program from a portable recording medium and execute processing according to the program, and furthermore, the program may be transferred to this computer from the server computer. The process may be executed in accordance with the received program each time.
- ASP Application Service Provider
- the above-mentioned processing is executed by a so-called ASP (Application Service Provider) service, which does not transfer programs from the server computer to this computer, but only realizes processing functions by issuing execution instructions and obtaining results.
- ASP Application Service Provider
- the hardware entity is configured by executing a predetermined program on a computer, but at least a part of these processing contents may be implemented in hardware.
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
秘密計算装置は、対応するレコードがダミーレコードでない場合に上位となることを第1優先とし、キー列を第2優先としてテーブルをソートするダミーレコード分離ソート部と、そのレコードが境界であるか否かを示す境界フラグを生成する境界フラグ生成部と、あるレコードのバリューよりも上位に位置するバリューを全て該当バリューに加算して加算バリューを生成する加算バリュー生成部と、テーブルを境界であるレコードが上位となることを優先して安定ソートする境界ソート部と、テーブルの最上位のレコードの加算バリューをそのまま差分バリューとし、テーブルの2番目以降のレコードの加算バリューについては、その1つ上のレコードの加算バリューとの差分を差分バリューとして差分バリューを生成する差分バリュー生成部と、キー列と差分バリュー列と境界フラグ列を含むテーブルを出力する演算結果出力部を含む。
Description
本発明は、暗号化されたダミーフラグ列を有するデータを暗号化したまま集合演算する秘密計算装置、秘密計算方法、プログラムに関する。
データを安全に扱うために、暗号化したまま分析する秘密計算という技術が研究されている。その中でも、暗号化したまま条件に合うデータの取り出しや集計値などを効率的に算出するために、暗号化データベース処理が考えられている。
DB処理の一種であるGroup-by演算とはグループ化処理であり、テーブルを入力とし、指定したカラムの値ごとにグループ化し、場合によってそのグループごとの統計値を計算してテーブル形式で出力するものである。これを暗号化したまま行う方法は非特許文献1にて提案されている。ここで考えられている入出力は、通常のテーブルを、各要素ごとに暗号化したテーブルであった。
菊池亮、濱田浩気、五十嵐大、高橋元、高橋克巳、"横断的動線分析を秘密計算でやってみよう", In SCIS, 2020.
一方、暗号化したままデータベース処理を行う場合、その入出力は通常のテーブルとは異なり、ダミーレコードが挿入されており、ダミーフラグ列(対応するレコードがダミーレコードであるか否かを示すダミーフラグの列)が付与されていることがある。
このような入力の場合、非特許文献1で提案されたアルゴリズムは機能しない。なぜなら、入力の形式が異なることに加えて、いままでは全てのレコードが意味のある値であることを想定していたため、ダミーレコードをスキップして処理を行うことができておらず、無視すべきvの値が最終結果に影響してしまい、本来の結果を得ることができない。
そこで本発明では、暗号化されたダミーフラグ列を有するデータを暗号化したまま集合演算することができる秘密計算装置を提供することを目的とする。
本発明の秘密計算装置は、キー列と、バリュー列と、対応するレコードがダミーレコードであるか否かを示すダミーフラグ列を含む暗号化された第1のテーブルを、キー列に基づいて秘匿したままGroupby-sum演算する秘密計算装置であって、ダミーレコード分離ソート部と、境界フラグ生成部と、加算バリュー生成部と、境界ソート部と、差分バリュー生成部と、演算結果出力部を含む。
ダミーレコード分離ソート部は、対応するレコードがダミーレコードでない場合に上位となることを第1優先とし、キー列を第2優先として第1のテーブルをソートする。境界フラグ生成部は、あるレコードがダミーレコードでなく、かつ、そのレコードのキーと一つ下にあるレコードのキーとが異なる場合を第1の場合とし、あるレコードがダミーレコードでなく、一つ下にあるレコードがダミーレコードである場合を第2の場合とし、あるレコードがダミーレコードでなく、かつ、最も下に位置するレコードである場合を第3の場合とし、第1~第3の場合の何れかに該当する場合にそのレコードが境界であることを示すフラグ値を持ち、第1~第3の場合の何れにも該当しない場合にそのレコードが境界でないことを示すフラグ値を持つ境界フラグを生成する。加算バリュー生成部は、あるレコードのバリューに対し、そのレコードよりも上位に位置するバリューを全て加算し、該当レコードの加算バリューとして生成する。境界ソート部は、キー列と加算バリュー列と境界フラグ列を含む第2のテーブルを、境界であるレコードが上位となることを優先して安定ソートする。差分バリュー生成部は、第2のテーブルの最上位のレコードの加算バリューをそのまま差分バリューとし、第2のテーブルの2番目以降のレコードの加算バリューについては、その1つ上のレコードの加算バリューとの差分を差分バリューとして差分バリューを生成する。演算結果出力部は、キー列と差分バリュー列と境界フラグ列を含む第3のテーブルを出力する。
本発明の秘密計算装置によれば、暗号化されたダミーフラグ列を有するデータを暗号化したまま集合演算することができる。
<構成要素>
暗号化されたデータを[x]と書き、ベクトルをx→ = (x1, … , xn)と書き、[x→] = ([x1], … , [xn])とする。
暗号化されたデータを[x]と書き、ベクトルをx→ = (x1, … , xn)と書き、[x→] = ([x1], … , [xn])とする。
暗号化は秘密分散(例えば参考非特許文献1)や準同型暗号(例えば参考非特許文献2)など、暗号化したまま下記の演算が可能なものとする。
(参考非特許文献1:Dai Ikarashi, Ryo Kikuchi, Koki Hamada, and Koji Chida. Actively private and correct MPC scheme in t < n/2 from passively secure schemes with small overhead. IACR Cryptology ePrint Archive, Vol. 2014, p. 304, 2014.)
(参考非特許文献2:Zvika Brakerski, Craig Gentry, and Vinod Vaikuntanathan. Fully homomorphic encryption without bootstrapping. Electronic Colloquium on Computational Complexity (ECCC), Vol. 18, p. 111, 2011.)
格納する値に対して異なる暗号化を用いても良いため、通常の秘密の暗号化は[・]、ビット値は[[・]]、置換は<π>と記述する。
(参考非特許文献2:Zvika Brakerski, Craig Gentry, and Vinod Vaikuntanathan. Fully homomorphic encryption without bootstrapping. Electronic Colloquium on Computational Complexity (ECCC), Vol. 18, p. 111, 2011.)
格納する値に対して異なる暗号化を用いても良いため、通常の秘密の暗号化は[・]、ビット値は[[・]]、置換は<π>と記述する。
≪加減算、定数倍≫
秘密分散と準同型暗号は自然にサポートしている。c[a] ± [b] = [ca ± b]などとかく。
秘密分散と準同型暗号は自然にサポートしている。c[a] ± [b] = [ca ± b]などとかく。
≪乗算≫
秘密分散であれば参考非特許文献1にある方法で、準同型暗号であれば準同型演算で計算可能である。これを[c] ← Mult([a], [b])(ただしc = ab)とかく。
秘密分散であれば参考非特許文献1にある方法で、準同型暗号であれば準同型演算で計算可能である。これを[c] ← Mult([a], [b])(ただしc = ab)とかく。
≪安定ソート≫
入力[x→] = ([x1], … , [xn])を、i ∈ {1, … , n - 1}についてx'i≦x'i+1であるような[x'→] = ([x'1] , … , [x'n])に並び替える動作。ただしx'i = x'i+1であるとき元々のx→の並び順が優先されるものとする。より具体的には2つのアルゴリズム(GenPerm, Sort)からなる。
入力[x→] = ([x1], … , [xn])を、i ∈ {1, … , n - 1}についてx'i≦x'i+1であるような[x'→] = ([x'1] , … , [x'n])に並び替える動作。ただしx'i = x'i+1であるとき元々のx→の並び順が優先されるものとする。より具体的には2つのアルゴリズム(GenPerm, Sort)からなる。
・<π> ← GenPerm([x→]): x→を並び替える置換πを暗号化した<π>を出力する。
・[x'→] ←Sort(<π>, [x→]): πをx→に適用し並び替えたx'→を暗号化したまま計算する。
簡単のため、複数のベクトルを同じ置換でソートする際には([x'→], [y'→]) ← Sort(<π>, ([x→], [y→]))などと書く。自明な構成方法はソーティングネットワークである。また秘密分散であれば参考非特許文献3など効率化されたものがある。
(参考非特許文献3:Koji Chida, Koki Hamada, Dai Ikarashi, Ryo Kikuchi, Naoto Kiribuchi, and Benny Pinkas. An efficient secure three-party sorting protocol with an honest majority. IACR Cryptology ePrint Archive, Vol. 2019, p. 695, 2019.)
≪Modulus conversion≫
ビット値の暗号化[[a]]を入力として、同じ値の暗号化ではあるが暗号文の形が違う[a]を生成する方法。[a] ←ModConv([[a]])と書く。具体例は例えば参考非特許文献4にある。
≪Modulus conversion≫
ビット値の暗号化[[a]]を入力として、同じ値の暗号化ではあるが暗号文の形が違う[a]を生成する方法。[a] ←ModConv([[a]])と書く。具体例は例えば参考非特許文献4にある。
(参考非特許文献4: Ryo Kikuchi, Dai Ikarashi, Takahiro Matsuda, Koki Hamada, and Koji Chida. Efficient bitdecomposition and modulus-conversion protocols with an honest majority. In ACISP 2018, pp.64-82, 2018.)
≪Bit decomposition≫
整数値の暗号化[k]を入力として、kをビット表現した同じ値の暗号化ではあるが暗号文の形が違う[[k]]を生成する方法。[[k→]] ← BitDecomp([k→])と書く。ただし、k→ = (k1, k2, … , kl) としたとき、k =Σl i=1 2i-1kiである。具体例は例えば参考非特許文献4にある。
≪Bit decomposition≫
整数値の暗号化[k]を入力として、kをビット表現した同じ値の暗号化ではあるが暗号文の形が違う[[k]]を生成する方法。[[k→]] ← BitDecomp([k→])と書く。ただし、k→ = (k1, k2, … , kl) としたとき、k =Σl i=1 2i-1kiである。具体例は例えば参考非特許文献4にある。
≪等号判定≫
[x], [y]を入力として、x = yならば1, x ≠ y ならば0となるような[e]を出力するもの。[e] ← Eq([x], [y]), where e ={1 if x = y |0 otherwise}と書く。また、複数の要素の等号判定を行う場合、[e] ← Eq(([a], [b]), ([c], [d])) where e ={1 if a = c and b = d |0 otherwise}とも書く。
[x], [y]を入力として、x = yならば1, x ≠ y ならば0となるような[e]を出力するもの。[e] ← Eq([x], [y]), where e ={1 if x = y |0 otherwise}と書く。また、複数の要素の等号判定を行う場合、[e] ← Eq(([a], [b]), ([c], [d])) where e ={1 if a = c and b = d |0 otherwise}とも書く。
一般にビット表現でデータが暗号化されているならば、[x - y]の各ビットが0かどうかを回路計算すればよく、回路計算は加減算と乗算で計算可能である。整数表現で暗号化されている場合であれば、ビット分解(参考非特許文献4)を用いてビット表現に変更して同様に回路を計算すればよい。他にもmod p上で暗号化されているのであれば、[(x - y)p-1]を乗算を使って計算しても良い。
≪If-then≫
フラグ[f], ただしf ∈ {0, 1}、と[x], [y]を入力として、f = 1ならば[x]をf = 0ならば[y] を出力する方法。[e] ←Ifthen([f] : [x], [y]), where e ={x if f = 1 |y otherwise}と書く。Mult([f], [x]) + Mult([1 - f], [y]) などで実現できる。
フラグ[f], ただしf ∈ {0, 1}、と[x], [y]を入力として、f = 1ならば[x]をf = 0ならば[y] を出力する方法。[e] ←Ifthen([f] : [x], [y]), where e ={x if f = 1 |y otherwise}と書く。Mult([f], [x]) + Mult([1 - f], [y]) などで実現できる。
≪入力の定義≫
レコード数m、キーk→、バリューv→、フラグf→からなる。フラグはビットのシェアとする。もしビットでなかった場合はビット分解プロトコルでビットに変換する。図1に秘密計算装置に入力される暗号化データ(第1のテーブル)の概要を示す。
レコード数m、キーk→、バリューv→、フラグf→からなる。フラグはビットのシェアとする。もしビットでなかった場合はビット分解プロトコルでビットに変換する。図1に秘密計算装置に入力される暗号化データ(第1のテーブル)の概要を示す。
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。なお、以下の実施例の説明、および図面において、ビット値の暗号化データを示す記号[[ ]]は場合により[ ]と簡略化して表記される場合がある。
以下、図2を参照して実施例1の秘密計算装置の機能構成を説明する。本実施例の秘密計算装置1は、キー列と、バリュー列と、対応するレコードがダミーレコードであるか否かを示すダミーフラグ列を含む暗号化された第1のテーブルを、キー列に基づいて秘匿したままGroupby-sum演算する秘密計算装置1であって、同図に示すように、ダミーレコード分離ソート部11と、境界フラグ生成部12と、加算バリュー生成部13と、境界ソート部14と、差分バリュー生成部15と、演算結果出力部16と、第2演算結果出力部17を含む。
以下、図3を参照して、各構成要件の動作を説明する。
<ダミーレコード分離ソート部11>
ダミーレコード分離ソート部11は、対応するレコードがダミーレコードでない場合に上位となることを第1優先とし、キー列を第2優先として第1のテーブルをソートする(S11)。ダミーレコード分離ソート部11の処理は、図12に例示するアルゴリズムの1~4行目の処理に相当する。
ダミーレコード分離ソート部11は、対応するレコードがダミーレコードでない場合に上位となることを第1優先とし、キー列を第2優先として第1のテーブルをソートする(S11)。ダミーレコード分離ソート部11の処理は、図12に例示するアルゴリズムの1~4行目の処理に相当する。
以下、図4に示す第1のテーブルが秘密計算装置1に入力され、ダミーレコード分離ソート部11で処理される場合についてアルゴリズムの1~4行目を参照しながら説明する。図12の例におけるアルゴリズムでは、対応するレコードがダミーレコードでない場合を[f→]=[1]と表現する。すなわち、対応するレコードがダミーレコードである場合を[f→]=[0]と表現する。
従って、ダミーレコード分離ソート部11は、[f→]の否定(アルゴリズムの2行目)を第1優先のキーとして、レコードを昇順にソートする(アルゴリズムの3、4行目)。あるいは、ダミーレコード分離ソート部11は、[f→]を第1優先のキーとして、レコードを降順にソートしても同じことである。さらにダミーレコード分離ソート部11は、キー列、すなわち[k→]を第2優先のキーとして、レコードをソートする(アルゴリズムの3、4行目)。
図4に示す第1のテーブルをダミーレコード分離ソート部11により処理した後の第1のテーブルを図5に示す。ソート結果のレコードは、[k'→]、[v'→]、[f'→]と、「’」を付与して表現される。
図5に示すように、ダミーレコードでないレコード([f→] = [1])が上位に集められ、さらに[k→]に基づいて昇順にソートされていることが分かる。
<境界フラグ生成部12>
境界フラグ生成部12は、あるレコードがダミーレコードでなく、かつ、そのレコードのキーと一つ下にあるレコードのキーとが異なる場合を第1の場合とし、あるレコードがダミーレコードでなく、一つ下にあるレコードがダミーレコードである場合を第2の場合とし、あるレコードがダミーレコードでなく、かつ、最も下に位置するレコードである場合を第3の場合とし、第1~第3の場合の何れかに該当する場合にそのレコードが境界であることを示すフラグ値を持ち、第1~第3の場合の何れにも該当しない場合にそのレコードが境界でないことを示すフラグ値を持つ境界フラグを生成する(S12)。境界フラグ生成部12の処理は、図12に例示するアルゴリズムの5~10行目の処理に相当する。
境界フラグ生成部12は、あるレコードがダミーレコードでなく、かつ、そのレコードのキーと一つ下にあるレコードのキーとが異なる場合を第1の場合とし、あるレコードがダミーレコードでなく、一つ下にあるレコードがダミーレコードである場合を第2の場合とし、あるレコードがダミーレコードでなく、かつ、最も下に位置するレコードである場合を第3の場合とし、第1~第3の場合の何れかに該当する場合にそのレコードが境界であることを示すフラグ値を持ち、第1~第3の場合の何れにも該当しない場合にそのレコードが境界でないことを示すフラグ値を持つ境界フラグを生成する(S12)。境界フラグ生成部12の処理は、図12に例示するアルゴリズムの5~10行目の処理に相当する。
以下、図5に示す第1のテーブルが、境界フラグ生成部12で処理される場合についてアルゴリズムの5~10行目を参照しながら説明する。
図5の例において、i番目のレコードがダミーレコードでなく(mをテーブルに含まれるレコード数とし、i = 1, ... , m - 1とし、f'i = 1)、かつ、i + 1番目のレコードのキーとが異なる(k'i≠k'i+1)場合(第1の場合)に該当するのは、2、3行目のレコードであり、2、3行目のレコードには、境界であることを示す[e'→] = [0]が付与される(アルゴリズムの6行目)。
また、i番目のレコードがダミーレコードでなく(f'i = 1)、i + 1番目のレコードがダミーレコードである(f'i+1 = 0)場合(第2の場合)に該当するのは、5行目のレコードであり、5行目のレコードには、境界であることを示す[e'→] = [0]が付与される(アルゴリズムの7行目)。
また、あるレコードがダミーレコードでなく、かつ、最も下に位置するレコードである(f'm= 1)場合(第3の場合)、は、ダミーレコードが一つも存在しない場合に相当するため、図5の例においては該当するレコードは存在しないが、もしこのようなレコードが存在する場合には、境界であることを示す[e'→] = [0]が付与される(アルゴリズムの8行目)。
また、図5の例において第1~第3の場合の何れにも該当しないレコードは、1、4、7、8行目であり、境界でないことを示す[e'→] = [1]が付与される。
図5に示す第1のテーブルを境界フラグ生成部12により処理した後の第1のテーブルを図6に示す。
<加算バリュー生成部13>
加算バリュー生成部13は、あるレコードのバリューに対し、そのレコードよりも上位に位置するバリューを全て加算し、該当レコードの加算バリューとして生成する(S13)。加算バリュー生成部13の処理は、図12に例示するアルゴリズムの11~12行目の処理に相当する。
加算バリュー生成部13は、あるレコードのバリューに対し、そのレコードよりも上位に位置するバリューを全て加算し、該当レコードの加算バリューとして生成する(S13)。加算バリュー生成部13の処理は、図12に例示するアルゴリズムの11~12行目の処理に相当する。
以下、図6に示す第1のテーブルが、加算バリュー生成部13で処理される場合についてアルゴリズムの11~12行目を参照しながら説明する。
図6の例において、i番目のレコードのバリュー[v'i]に対し、そのレコードよりも上位に位置するバリュー([v'1] + … + [v'i-1])を全て加算([xi] = [v'1] + … + [v'i])し、i番目のレコードの加算バリュー[xi]として生成する。なお、最も上位のバリュー[v'1]については、そのレコードよりも上位に位置するバリューが存在しないため、[x1] = [v'1]となる。
図6に示す第1のテーブルを加算バリュー生成部13により処理した後の第1のテーブルを図7に示す。図7に示すように、[x1] = [v'1] = [2],[x2] = [v'1] + [v'2] = [2] + [3] = [5],[x3] = [v'1] + [v'2] + [v'3] = [2] + [3] + [1] = [6],…となる。
<境界ソート部14>
境界ソート部14は、キー列と加算バリュー列と境界フラグ列を含む第2のテーブルを、境界であるレコードが上位となることを優先して安定ソートする(S14)。境界ソート部14の処理は、図12に例示するアルゴリズムの13~14行目の処理に相当する。
境界ソート部14は、キー列と加算バリュー列と境界フラグ列を含む第2のテーブルを、境界であるレコードが上位となることを優先して安定ソートする(S14)。境界ソート部14の処理は、図12に例示するアルゴリズムの13~14行目の処理に相当する。
以下、図7に示す第1のテーブルが、境界ソート部14で処理される場合についてアルゴリズムの13~14行目を参照しながら説明する。
図7の例において、キー列[k'→]と加算バリュー列[x→]と境界フラグ列[e’→]を含む第2のテーブルを抽出し、第2のテーブルは、境界フラグ列[e’→]をキーとし、境界であるレコード([e'→] = [0])が上位となることを優先して安定ソートされる。
図7に示す第1のテーブルを境界ソート部14により処理した後の第2のテーブルを図8に示す。ソート結果のレコードは、[k''→]、[x'→]、[e''→]と、「’」を付与して表現される。図8に示すように、[e'→] = [0]のレコードが上位に移動されていることが分かる。また、安定ソートにより1-2行目のレコードの順序、6-7行目のレコードの順序は維持されていることが分かる。なお、不要なカラムを割愛して説明を簡略化するためにステップS14の処理において第1のテーブルから第2のテーブルを抽出することとしたが、この抽出処理は必須ではなく、図7に示す第1のテーブルを単にソートするだけでも足りる。
<差分バリュー生成部15>
差分バリュー生成部15は、第2のテーブルの最上位のレコードの加算バリューをそのまま差分バリューとし、第2のテーブルの2番目以降のレコードの加算バリューについては、その1つ上のレコードの加算バリューとの差分を差分バリューとして差分バリューを生成する。差分バリュー生成部15の処理は、図12に例示するアルゴリズムの15~16行目の処理に相当する。
差分バリュー生成部15は、第2のテーブルの最上位のレコードの加算バリューをそのまま差分バリューとし、第2のテーブルの2番目以降のレコードの加算バリューについては、その1つ上のレコードの加算バリューとの差分を差分バリューとして差分バリューを生成する。差分バリュー生成部15の処理は、図12に例示するアルゴリズムの15~16行目の処理に相当する。
以下、図8に示す第2のテーブルが、差分バリュー生成部15で処理される場合についてアルゴリズムの15~16行目を参照しながら説明する。
図8の例において、差分バリュー生成部15は、第2のテーブルの最上位のレコードの加算バリューをそのまま差分バリューとし([x1'] = [x1''])、第2のテーブルの2番目以降のレコードの加算バリュー([x'i], i = 2, ... ,m)については、その1つ上のレコードの加算バリュー([x'i-1])との差分を差分バリュー([x''i] = [x'i] - [x'i-1])として差分バリューを生成する。
図8に示す第2のテーブルを差分バリュー生成部15により処理した後の第2のテーブルを図9に示す。図9に示すように、[x''1] = [x'1] = [5],[x''2] = [x'2] - [x'1] = [6] - [5] = [1],[x''3] = [x'3] - [x'2] = [15] - [6] = [9],…となる。前述した境界ソート処理(S14)により、各キー列による各グループのバリューの合計値をさらに加算したものが加算バリューとして上位(図9の例では1~3行目)に表示される。この加算バリューに対して上述の差分バリューを生成することにより、キー列による各グループのバリューの合計値のみを抽出することができるため、これがすなわち求めたいgroupby-sumの結果と一致する(図9の1~3行目のX''→)。さらに、境界ソート処理(S14)により、ダミーレコードを含むレコードや、境界に該当しないレコードについては下位(図9の例では4~7行目)に表示され、groupby-sumの結果として扱われない。
<演算結果出力部16>
演算結果出力部16は、キー列と差分バリュー列と境界フラグ列を含む第3のテーブルを出力する(S16)。なお、演算結果出力部16は、キー列と差分バリュー列と境界フラグ列の否定を含む第3のテーブルを出力してもよく、図12のアルゴリズム例では、境界フラグ列の否定を含むテーブルを出力する構成となっている。演算結果出力部16の処理は、図12に例示するアルゴリズムの17~18行目の処理に相当する。
演算結果出力部16は、キー列と差分バリュー列と境界フラグ列を含む第3のテーブルを出力する(S16)。なお、演算結果出力部16は、キー列と差分バリュー列と境界フラグ列の否定を含む第3のテーブルを出力してもよく、図12のアルゴリズム例では、境界フラグ列の否定を含むテーブルを出力する構成となっている。演算結果出力部16の処理は、図12に例示するアルゴリズムの17~18行目の処理に相当する。
以下、図9に示す第2のテーブルが、演算結果出力部16で処理される場合についてアルゴリズムの17~18行目を参照しながら説明する。
図9の例において、演算結果出力部16は、[e'→]の各要素の否定を取ったもの(1-[e'→])を[e'''→]とし(アルゴリズムの17行目)、([k''→], [x'→], [e'''→])を第3のテーブルとして出力する(アルゴリズムの18行目)。図9に示す第2のテーブルを演算結果出力部16により処理した後の第3のテーブルを図10に示す。なお、不要なカラムを割愛して説明を簡略化するためにステップS16の処理において第2のテーブルから第3のテーブルに変換して出力することとしたが、この処理は必須ではなく、例えば秘密計算装置1は、第1のテーブルに上記ステップS11~S16を実行して第1のテーブルのまま、出力してもよい。
<第2演算結果出力部17>
第2演算結果出力部17は、ステップS15で処理した第2のテーブル(図9に例示)のあるレコードの境界フラグが境界でないことを示す場合に、該当するレコードのキーを所定の文字列を秘匿したものに置き換え、該当するレコードの差分バリューを0を秘匿したものに置き換えて、キー列と差分バリュー列と境界フラグ列を含む第4のテーブルとして出力する(S17)。第2演算結果出力部17の処理は、図13に例示するアルゴリズム(null処理あり、図12のアルゴリズムの別バージョンに該当)の17~18行目の処理に相当する。
第2演算結果出力部17は、ステップS15で処理した第2のテーブル(図9に例示)のあるレコードの境界フラグが境界でないことを示す場合に、該当するレコードのキーを所定の文字列を秘匿したものに置き換え、該当するレコードの差分バリューを0を秘匿したものに置き換えて、キー列と差分バリュー列と境界フラグ列を含む第4のテーブルとして出力する(S17)。第2演算結果出力部17の処理は、図13に例示するアルゴリズム(null処理あり、図12のアルゴリズムの別バージョンに該当)の17~18行目の処理に相当する。
以下、図9に示す第2のテーブルが、第2演算結果出力部17で処理される場合について図13のアルゴリズムの17~18行目を参照しながら説明する。
図9の例において、第2のテーブルのi番目のレコードの境界フラグが境界でないことを示す場合に、該当するレコードのキーを所定の文字列(null)を秘匿したもの([null])に置き換え、該当するレコードの差分バリューを0を秘匿したもの([0])に置き換え、キー列と差分バリュー列と境界フラグ列を含む第4のテーブル,すなわち([k'''→], [x''''→], [e'''→])を第4のテーブルとして出力する(S17)。図9に示す第2のテーブルを第2演算結果出力部17により処理した後の第4のテーブルを図11に示す。
なお、不要なカラムを割愛して説明を簡略化するためにステップS17の処理において第2のテーブルから第4のテーブルに変換して出力することとしたが、この処理は必須ではない。例えば秘密計算装置1は、第1のテーブルに上記ステップS11~S15、S17を実行して第1のテーブルのまま、出力してもよい。
<実施例1の秘密計算装置1による効果>
実施例1の秘密計算装置1によれば、ダミーフラグを用いてソートすることでダミーレコードを最下位レコードとし、またグループの境界判定ビットについて、ダミーフラグが該当のレコードがダミーレコードであることを示す場合に境界にならないようなif文処理を加え、sumの処理ではまず上からの総和を計算した後、出力になる値のみソートで上位に抽出し、ひとつ前との差分を計算することで、通信を伴わない加減算処理の組み合わせで、復号することなくgroupby-sumを達成した。
実施例1の秘密計算装置1によれば、ダミーフラグを用いてソートすることでダミーレコードを最下位レコードとし、またグループの境界判定ビットについて、ダミーフラグが該当のレコードがダミーレコードであることを示す場合に境界にならないようなif文処理を加え、sumの処理ではまず上からの総和を計算した後、出力になる値のみソートで上位に抽出し、ひとつ前との差分を計算することで、通信を伴わない加減算処理の組み合わせで、復号することなくgroupby-sumを達成した。
<補記>
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部、CPU(Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい)、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD-ROMなどの記録媒体を読み書きできる装置(ドライブ)などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部、CPU(Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい)、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD-ROMなどの記録媒体を読み書きできる装置(ドライブ)などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている(外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるROMに記憶させておくこととしてもよい)。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に記憶される。
ハードウェアエンティティでは、外部記憶装置(あるいはROMなど)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にCPUで解釈実行・処理される。その結果、CPUが所定の機能(上記、…部、…手段などと表した各構成要件)を実現する。
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
既述のように、上記実施形態において説明したハードウェアエンティティ(本発明の装置)における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
上述の各種の処理は、図14に示すコンピュータ10000の記録部10020に、上記方法の各ステップを実行させるプログラムを読み込ませ、制御部10010、入力部10030、出力部10040などに動作させることで実施できる。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、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(Electrically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
Claims (5)
- キー列と、バリュー列と、対応するレコードがダミーレコードであるか否かを示すダミーフラグ列を含む暗号化された第1のテーブルを、前記キー列に基づいて秘匿したままGroupby-sum演算する秘密計算装置であって、
対応するレコードがダミーレコードでない場合に上位となることを第1優先とし、キー列を第2優先として前記第1のテーブルをソートするダミーレコード分離ソート部と、
あるレコードがダミーレコードでなく、かつ、そのレコードのキーと一つ下にあるレコードのキーとが異なる場合を第1の場合とし、あるレコードがダミーレコードでなく、一つ下にあるレコードがダミーレコードである場合を第2の場合とし、あるレコードがダミーレコードでなく、かつ、最も下に位置するレコードである場合を第3の場合とし、第1~第3の場合の何れかに該当する場合にそのレコードが境界であることを示すフラグ値を持ち、第1~第3の場合の何れにも該当しない場合にそのレコードが境界でないことを示すフラグ値を持つ境界フラグを生成する境界フラグ生成部と、
あるレコードのバリューに対し、そのレコードよりも上位に位置するバリューを全て加算し、該当レコードの加算バリューとして生成する加算バリュー生成部と、
キー列と加算バリュー列と境界フラグ列を含む第2のテーブルを、境界であるレコードが上位となることを優先して安定ソートする境界ソート部と、
前記第2のテーブルの最上位のレコードの加算バリューをそのまま差分バリューとし、前記第2のテーブルの2番目以降のレコードの加算バリューについては、その1つ上のレコードの加算バリューとの差分を差分バリューとして差分バリューを生成する差分バリュー生成部と、
キー列と差分バリュー列と境界フラグ列を含む第3のテーブルを出力する演算結果出力部を含む
秘密計算装置。 - 請求項1に記載の秘密計算装置であって、
前記第2のテーブルのあるレコードの境界フラグが境界でないことを示す場合に、該当するレコードのキーを所定の文字列を秘匿したものに置き換え、該当するレコードの差分バリューを0を秘匿したものに置き換えて、キー列と差分バリュー列と境界フラグ列を含む第4のテーブルとして出力する第2演算結果出力部を含む
秘密計算装置。 - キー列と、バリュー列と、対応するレコードがダミーレコードであるか否かを示すダミーフラグ列を含む暗号化された第1のテーブルを、前記キー列に基づいて秘匿したままGroupby-sum演算する秘密計算装置が実行する秘密計算方法であって、
対応するレコードがダミーレコードでない場合に上位となることを第1優先とし、キー列を第2優先として前記第1のテーブルをソートするダミーレコード分離ソート部と、
あるレコードがダミーレコードでなく、かつ、そのレコードのキーと一つ下にあるレコードのキーとが異なる場合を第1の場合とし、あるレコードがダミーレコードでなく、一つ下にあるレコードがダミーレコードである場合を第2の場合とし、あるレコードがダミーレコードでなく、かつ、最も下に位置するレコードである場合を第3の場合とし、第1~第3の場合の何れかに該当する場合にそのレコードが境界であることを示すフラグ値を持ち、第1~第3の場合の何れにも該当しない場合にそのレコードが境界でないことを示すフラグ値を持つ境界フラグを生成するステップと、
あるレコードのバリューに対し、そのレコードよりも上位に位置するバリューを全て加算し、該当レコードの加算バリューとして生成するステップと、
キー列と加算バリュー列と境界フラグ列を含む第2のテーブルを、境界であるレコードが上位となることを優先して安定ソートするステップと、
前記第2のテーブルの最上位のレコードの加算バリューをそのまま差分バリューとし、前記第2のテーブルの2番目以降のレコードの加算バリューについては、その1つ上のレコードの加算バリューとの差分を差分バリューとして差分バリューを生成するステップと、
キー列と差分バリュー列と境界フラグ列を含む第3のテーブルを出力するステップを含む
秘密計算方法。 - 請求項3に記載の秘密計算装置であって、
前記第2のテーブルのあるレコードの境界フラグが境界でないことを示す場合に、該当するレコードのキーを所定の文字列を秘匿したものに置き換え、該当するレコードの差分バリューを0を秘匿したものに置き換えて、キー列と差分バリュー列と境界フラグ列を含む第4のテーブルとして出力する第2演算結果出力部を含む
秘密計算方法。 - コンピュータを請求項1または2に記載の秘密計算装置として機能させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2022/022111 WO2023233516A1 (ja) | 2022-05-31 | 2022-05-31 | 秘密計算装置、秘密計算方法、プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2022/022111 WO2023233516A1 (ja) | 2022-05-31 | 2022-05-31 | 秘密計算装置、秘密計算方法、プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2023233516A1 true WO2023233516A1 (ja) | 2023-12-07 |
Family
ID=89025919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2022/022111 WO2023233516A1 (ja) | 2022-05-31 | 2022-05-31 | 秘密計算装置、秘密計算方法、プログラム |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2023233516A1 (ja) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019208484A1 (ja) * | 2018-04-25 | 2019-10-31 | 日本電信電話株式会社 | 秘密集約総和システム、秘密計算装置、秘密集約総和方法、およびプログラム |
-
2022
- 2022-05-31 WO PCT/JP2022/022111 patent/WO2023233516A1/ja unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019208484A1 (ja) * | 2018-04-25 | 2019-10-31 | 日本電信電話株式会社 | 秘密集約総和システム、秘密計算装置、秘密集約総和方法、およびプログラム |
Non-Patent Citations (1)
Title |
---|
RAISARO, J. L. ET AL.: "MedCo: Enabling Secure and Privacy-Preserving Exploration of Distributed Clinical and Genomic Data", IEEE /ACM TRANSACTIONS ON COMPUTATIONAL BIOLOGY AND BIOINFORMATICS, vol. 16, no. 4, July 2019 (2019-07-01), pages 1328 - 1341, XP011739088, [retrieved on 20220808], DOI: https://doi.org/10.1 109/TCBB.2018.2854776 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10296709B2 (en) | Privacy-preserving genomic prediction | |
JP6973632B2 (ja) | 秘密集約総和システム、秘密計算装置、秘密集約総和方法、およびプログラム | |
JP6989006B2 (ja) | 秘密集約関数計算システム、秘密計算装置、秘密集約関数計算方法、およびプログラム | |
JP6973633B2 (ja) | 秘密集約最大値システム、秘密集約最小値システム、秘密計算装置、秘密集約最大値方法、秘密集約最小値方法、およびプログラム | |
JP6534778B2 (ja) | 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム | |
JP7315032B2 (ja) | 暗号化データ分析装置、暗号化データ分析方法、プログラム | |
US20240022395A1 (en) | Encryption processing device and encryption processing method | |
JP6605746B2 (ja) | 秘密等結合システム、秘密等結合装置、秘密等結合方法、プログラム | |
JP6973634B2 (ja) | 秘密集約中央値システム、秘密計算装置、秘密集約中央値方法、およびプログラム | |
JP7505570B2 (ja) | 秘密決定木テスト装置、秘密決定木テストシステム、秘密決定木テスト方法、及びプログラム | |
JP2020519968A (ja) | ビット分解秘密計算装置、ビット結合秘密計算装置、方法およびプログラム | |
WO2023233516A1 (ja) | 秘密計算装置、秘密計算方法、プログラム | |
WO2023067928A1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
JP6532843B2 (ja) | 秘匿計算システム、第一秘匿計算装置、第二秘匿計算装置、秘匿回路生成方法、秘匿回路評価方法、プログラム | |
WO2023281694A1 (ja) | 秘密計算システム、装置、方法及びプログラム | |
WO2023281693A1 (ja) | 秘密計算システム、装置、方法及びプログラム | |
WO2023157118A1 (ja) | 秘密計算装置、秘密計算方法、プログラム | |
WO2023233622A1 (ja) | 秘密計算装置、秘密計算方法、プログラム | |
JP7261502B2 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
WO2023157117A1 (ja) | 秘密計算装置、秘密計算方法、プログラム | |
WO2022270080A1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
Bouillaguet et al. | We are on the same side. Alternative sieving strategies for the number field sieve | |
EP3813042B1 (en) | Secret combination system, method, secret calculation device, and program | |
JP7494932B2 (ja) | 秘密決定木テスト装置、秘密決定木テストシステム、秘密決定木テスト方法、及びプログラム | |
JP7187076B1 (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: 22944804 Country of ref document: EP Kind code of ref document: A1 |