JP6989006B2 - 秘密集約関数計算システム、秘密計算装置、秘密集約関数計算方法、およびプログラム - Google Patents
秘密集約関数計算システム、秘密計算装置、秘密集約関数計算方法、およびプログラム Download PDFInfo
- Publication number
- JP6989006B2 JP6989006B2 JP2020521167A JP2020521167A JP6989006B2 JP 6989006 B2 JP6989006 B2 JP 6989006B2 JP 2020521167 A JP2020521167 A JP 2020521167A JP 2020521167 A JP2020521167 A JP 2020521167A JP 6989006 B2 JP6989006 B2 JP 6989006B2
- Authority
- JP
- Japan
- Prior art keywords
- share
- secret
- group
- sorted
- flag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Library & Information Science (AREA)
- Quality & Reliability (AREA)
- Complex Calculations (AREA)
Description
図1を参照して、実施形態の秘密集約関数計算システム100の構成例を説明する。秘密集約関数計算システム100は、N(≧2)台の秘密計算装置11, …, 1Nを含む。本形態では、秘密計算装置11, …, 1Nはそれぞれ通信網2へ接続される。通信網2は、接続される各装置が相互に通信可能なように構成された回線交換方式もしくはパケット交換方式の通信網であり、例えばインターネットやLAN(Local Area Network)、WAN(Wide Area Network)などを用いることができる。なお、各装置は必ずしも通信網2を介してオンラインで通信可能である必要はない。例えば、秘密計算装置11, …, 1Nへ入力する情報を磁気テープやUSBメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体から秘密計算装置11, …, 1Nへオフラインで入力するように構成してもよい。
group-byカウントは、テーブルをキー属性の値に基づいてグループ分けしたときに、各グループのレコード数を集計する演算である。group-byカウントは、秘密集約関数計算システム100が出力するフラグeのシェア{e}と置換σのシェア{{σ}}とを用いて、以下のように求めることができる。なお、gは最大グループ数であり、キー属性が取り得る値の組み合わせの数、すなわち、キー属性が取り得る値の種類の数である。
group-by総和は、テーブルをキー属性の値に基づいてグループ分けしたときに、グループごとに所望のバリュー属性の総和を集計する演算である。group-by総和を用いれば、グループごとに乗算の和を求めるgroup-by積和や、グループごとに二乗の和を求めるgroup-by二乗和も計算することができる。group-by積和であれば、各レコードのバリュー属性に乗算を施した結果に対してgroup-by総和を求めればよい。また、group-by二乗和であれば、同様に、各レコードのバリュー属性に二乗を施した結果に対してgroup-by総和を求めればよい。group-by総和は、秘密集約関数計算システム100が出力するソート済みバリュー属性v'0, …, v'na-1のシェア[v'0], …, [v'na-1]とフラグeのシェア{e}と置換σのシェア{{σ}}とを用いて、以下のように求めることができる。なお、vはソート済みバリュー属性v'0, …, v'na-1のうちgroup-by総和を求めたい所望のバリュー属性である。
group-by最大値は、テーブルをキー属性の値に基づいてグループ分けしたときに、グループごとに所望のバリュー属性の最大値を得る演算である。group-by最大値は、秘密集約関数計算システム100が出力するソート済みバリュー属性v'0, …, v'na-1のシェア[v'0], …, [v'na-1]とフラグeのシェア{e}と置換σのシェア{{σ}}とを用いて、以下のように求めることができる。なお、vはソート済みバリュー属性v'0, …, v'na-1のうちgroup-by最大値を求めたい所望のバリュー属性である。
group-by最小値は、テーブルをキー属性の値に基づいてグループ分けしたときに、グループごとに所望のバリュー属性の最小値を得る演算である。group-by最小値は、秘密集約関数計算システム100が出力するソート済みバリュー属性v'0, …, v'na-1のシェア[v'0], …, [v'na-1]とフラグeのシェア{e}と置換σのシェア{{σ}}とを用いて、以下のように求めることができる。なお、vはソート済みバリュー属性v'0, …, v'na-1のうちgroup-by最小値を求めたい所望のバリュー属性である。
グループ内の昇順順位は、テーブルをキー属性の値に基づいてグループ分けしたときに、所望のバリュー属性を昇順でソートしたときにその値がグループ内で何番目の値であるかを得る演算である。グループ内の昇順順位は、秘密集約関数計算システム100が出力するフラグeのシェア{e}と置換σのシェア{{σ}}とを用いて、以下のように求めることができる。なお、cはgroup-byカウントの結果(以下、「クロス集計」と呼ぶ)である。クロス集計cは、例えば、上述の≪group-byカウント≫の手順に従って、フラグeのシェア{e}と置換σのシェア{{σ}}とを用いて求めることができる。
グループ内の降順順位は、テーブルをキー属性の値に基づいてグループ分けしたときに、所望のバリュー属性を降順でソートしたときにその値がグループ内で何番目の値であるかを得る演算である。グループ内の降順順位は、秘密集約関数計算システム100が出力するフラグeのシェア{e}と置換σのシェア{{σ}}とを用いて、以下のように求めることができる。なお、cはgroup-byカウントの結果(以下、「クロス集計」と呼ぶ)である。クロス集計cは、例えば、上述の≪group-byカウント≫の手順に従って、フラグeのシェア{e}と置換σのシェア{{σ}}とを用いて求めることができる。
group-by中央値は、テーブルをキー属性の値に基づいてグループ分けしたときに、グループごとに所望のバリュー属性の中央値を得る演算である。group-by中央値は、秘密集約関数計算システム100が出力するバリュー属性v'0, …, v'na-1のシェア[v'0], …, [v'na-1]とフラグeのシェア{e}と置換σのシェア{{σ}}とを用いて、以下のように求めることができる。なお、cはgroup-byカウントの結果(以下、「クロス集計」と呼ぶ)である。クロス集計cは、例えば、上述の≪group-byカウント≫の手順に従って、フラグeのシェア{e}と置換σのシェア{{σ}}とを用いて求めることができる。また、vはソート済みバリュー属性v'0, …, v'na-1のうちgroup-by中央値を求めたい所望のバリュー属性である。
上記の実施形態では、各秘密計算装置1nが、ソート済みキー属性k'0, …, k'nk-1のシェア[k'0], …, [k'nk-1]、ソート済みバリュー属性v'0, …, v'na-1のシェア[v'0], …, [v'na-1]、フラグeのシェア{e}、および置換σのシェア{{σ}}の少なくとも1つを出力するように構成する例を説明したが、後に続いて計算するgroup-by演算の種類によって、備えるべき処理部を選択して構成してもよい。例えば、group-byカウントやgroup-by中央値は、フラグeのシェア{e}および置換σのシェア{{σ}}を必要とするgroup-by演算である。group-by総和やgroup-by最大値/最小値は、ソート済みバリュー属性v'0, …, v'na-1のシェア[v'0], …, [v'na-1]、フラグeのシェア{e}、および置換σのシェア{{σ}}を必要とするgroup-by演算である。グループ内の順位は、フラグeのシェア{e}および置換σのシェア{{σ}}を必要とするgroup-by演算である。すなわち、group-byカウント、group-by中央値、またはグループ内の順位を計算するが、group-by総和やgroup-by最大値/最小値を計算することがない状況であれば、秘密集約関数計算システム100は、少なくともフラグeのシェア{e}および置換σのシェア{{σ}}が出力できればよい。このとき、各秘密計算装置1nは、例えば、入力部10、ビット分解部11、グループソート生成部12、ビット列ソート部13、フラグ生成部14、キー集約ソート生成部15、および出力部19を備え、重複排除部16、キーソート部17、およびバリューソート部18は備えないように構成することができる。
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
Claims (5)
- 複数の秘密計算装置を含む秘密集約関数計算システムであって、
Fは任意の環であり、mは2以上の整数であり、nkは1以上の整数であり、[k0], …, [knk-1]はキー属性k0, …, knk-1∈Fmを秘密分散したシェアであり、
上記秘密計算装置は、
上記シェア[k0], …, [knk-1]を用いて、復元すると上記キー属性k0, …, knk-1をビット分解して結合したビット列b:=b0, …, bm-1となるシェア{b}から、復元すると上記ビット列bを昇順に安定ソートする置換σ0となるシェア{{σ0}}を生成するグループソート生成部と、
上記シェア{b}と上記シェア{{σ0}}とを用いて、復元すると上記ビット列bを上記置換σ0でソートしたソート済みビット列b':=b'0, …, b'm-1となるシェア{b'}を生成するビット列ソート部と、
上記シェア{b'}を用いて、0以上m-2以下の各整数iについて{ei}:={b'i≠b'i+1}を設定し、かつ、{em-1}:={1}を設定して、復元するとフラグe:=e0, …, em-1となるシェア{e}を生成するフラグ生成部と、
上記シェア{e}を用いて、復元すると上記フラグeの否定¬eを昇順に安定ソートする置換σとなるシェア{{σ}}を生成するキー集約ソート生成部と、
を含む秘密集約関数計算システム。 - 請求項1に記載の秘密集約関数計算システムであって、
naは1以上の整数であり、[v0], …, [vna-1]はバリュー属性v0, …, vna-1∈Fmを秘密分散したシェアであり、
上記秘密計算装置は、
上記シェア{e}を用いて、0以上m-1以下の各整数iおよび0以上nk-1以下の各整数jについて、{ei}={1}ならば[k"j,i]に[kj,i]を設定し、{ei}≠{1}ならば[k"j,i]に所定の固定値を設定して、復元すると重複排除済みキー属性k"0, …, k"nk-1となるシェア[k"0], …, [k"nk-1]を生成する重複排除部と、
上記シェア[k"0], …, [k"nk-1]と上記シェア{{σ0}}と上記シェア{{σ}}とを用いて、
復元すると上記重複排除済みキー属性k"0, …, k"nk-1を上記置換σ0と上記置換σとで順にソートしたソート済みキー属性k'0, …, k'nk-1となるシェア[k'0], …, [k'nk-1]を生成するキーソート部と、
上記シェア[v0], …, [vna-1]と上記シェア{{σ0}}とを用いて、復元すると上記バリュー属性v0, …, vna-1を上記置換σ0でソートしたソート済みバリュー属性v'0, …, v'na-1となるシェア[v'0], …, [v'na-1]を生成するバリューソート部と、
を含む秘密集約関数計算システム。 - Fは任意の環であり、mは2以上の整数であり、nkは1以上の整数であり、[k0], …, [knk-1]はキー属性k0, …, knk-1∈Fmを秘密分散したシェアであり、
上記シェア[k0], …, [knk-1]を用いて、復元すると上記キー属性k0, …, knk-1をビット分解して結合したビット列b:=b0, …, bm-1となるシェア{b}から、復元すると上記ビット列bを昇順に安定ソートする置換σ0となるシェア{{σ0}}を生成するグループソート生成部と、
上記シェア{b}と上記シェア{{σ0}}とを用いて、復元すると上記ビット列bを上記置換σ0でソートしたソート済みビット列b':=b'0, …, b'm-1となるシェア{b'}を生成するビット列ソート部と、
上記シェア{b'}を用いて、0以上m-2以下の各整数iについて{ei}:={b'i≠b'i+1}を設定し、かつ、{em-1}:={1}を設定して、復元するとフラグe:=e0, …, em-1となるシェア{e}を生成するフラグ生成部と、
上記シェア{e}を用いて、復元すると上記フラグeの否定¬eを昇順に安定ソートする置換σとなるシェア{{σ}}を生成するキー集約ソート生成部と、
を含む秘密計算装置。 - 複数の秘密計算装置を含む秘密集約関数計算システムが実行する秘密集約関数計算方法であって、
Fは任意の環であり、mは2以上の整数であり、nkは1以上の整数であり、[k0], …, [knk-1]はキー属性k0, …, knk-1∈Fmを秘密分散したシェアであり、
上記秘密計算装置のグループソート生成部が、上記シェア[k0], …, [knk-1]を用いて、復元すると上記キー属性k0, …, knk-1をビット分解して結合したビット列b:=b0, …, bm-1となるシェア{b}から、復元すると上記ビット列bを昇順に安定ソートする置換σ0となるシェア{{σ0}}を生成し、
上記秘密計算装置のビット列ソート部が、上記シェア{b}と上記シェア{{σ0}}とを用いて、復元すると上記ビット列bを上記置換σ0でソートしたソート済みビット列b':=b'0, …, b'm-1となるシェア{b'}を生成し、
上記秘密計算装置のフラグ生成部が、上記シェア{b'}を用いて、0以上m-2以下の各整数iについて{ei}:={b'i≠b'i+1}を設定し、かつ、{em-1}:={1}を設定して、復元するとフラグe:=e0, …, em-1となるシェア{e}を生成し、
上記秘密計算装置のキー集約ソート生成部が、上記シェア{e}を用いて、復元すると上記フラグeの否定¬eを昇順に安定ソートする置換σとなるシェア{{σ}}を生成する、
秘密集約関数計算方法。 - 請求項3に記載の秘密計算装置としてコンピュータを機能させるためのプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018100626 | 2018-05-25 | ||
JP2018100626 | 2018-05-25 | ||
PCT/JP2019/019093 WO2019225401A1 (ja) | 2018-05-25 | 2019-05-14 | 秘密集約関数計算システム、秘密計算装置、秘密集約関数計算方法、およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2019225401A1 JPWO2019225401A1 (ja) | 2021-05-27 |
JP6989006B2 true JP6989006B2 (ja) | 2022-01-05 |
Family
ID=68616723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020521167A Active JP6989006B2 (ja) | 2018-05-25 | 2019-05-14 | 秘密集約関数計算システム、秘密計算装置、秘密集約関数計算方法、およびプログラム |
Country Status (6)
Country | Link |
---|---|
US (1) | US11593362B2 (ja) |
EP (1) | EP3806070B1 (ja) |
JP (1) | JP6989006B2 (ja) |
CN (1) | CN112119442B (ja) |
AU (1) | AU2019273208B2 (ja) |
WO (1) | WO2019225401A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11307860B1 (en) * | 2019-11-22 | 2022-04-19 | Blaize, Inc. | Iterating group sum of multiple accumulate operations |
CN117480545A (zh) * | 2021-06-14 | 2024-01-30 | 日本电信电话株式会社 | 累积计算装置、累积计算方法和程序 |
JPWO2023062834A1 (ja) * | 2021-10-15 | 2023-04-20 | ||
CN114153854B (zh) * | 2022-02-09 | 2022-05-10 | 支付宝(杭州)信息技术有限公司 | 一种基于秘密分享的多键分组信息获取方法和系统 |
WO2023157118A1 (ja) * | 2022-02-16 | 2023-08-24 | 日本電信電話株式会社 | 秘密計算装置、秘密計算方法、プログラム |
JPWO2023157117A1 (ja) * | 2022-02-16 | 2023-08-24 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03210684A (ja) * | 1990-01-12 | 1991-09-13 | Mitsubishi Electric Corp | 神経回路網装置 |
JPH0581337A (ja) * | 1991-09-21 | 1993-04-02 | Toshiba Corp | データ処理装置 |
JP3601719B2 (ja) * | 1997-04-18 | 2004-12-15 | 富士通株式会社 | 相関のあるデータ組み合わせの数え上げ方式 |
US7761450B1 (en) * | 2003-12-24 | 2010-07-20 | Teradata Us, Inc. | Computing percentages in a database system |
JP5486520B2 (ja) * | 2011-01-21 | 2014-05-07 | 日本電信電話株式会社 | セキュア集合関数システム、秘密集合関数装置、セキュア集合関数処理方法、セキュア集合関数プログラム |
JP5506705B2 (ja) * | 2011-01-24 | 2014-05-28 | 日本電信電話株式会社 | 秘密マッチングシステム、秘密マッチング装置、秘密マッチング方法、秘密マッチングプログラム |
JP5689826B2 (ja) * | 2012-01-26 | 2015-03-25 | 日本電信電話株式会社 | 秘密計算システム、暗号化装置、秘密計算装置及びその方法、プログラム |
JP5860378B2 (ja) * | 2012-10-16 | 2016-02-16 | 日本電信電話株式会社 | 秘密計算システム、集約関数装置、秘密計算方法、およびプログラム |
JP5907902B2 (ja) * | 2013-01-21 | 2016-04-26 | 日本電信電話株式会社 | 秘密計算による表の等結合システム、方法 |
EP3096308B1 (en) * | 2014-01-17 | 2019-09-25 | Nippon Telegraph And Telephone Corporation | Element replication device, element replication method, and program |
EP3096309B1 (en) * | 2014-01-17 | 2018-10-31 | Nippon Telegraph And Telephone Corporation | Secret calculation method, secret calculation system, sorting device, and program |
CN108463967B (zh) * | 2015-03-15 | 2022-06-03 | 数字社区有限责任公司 | 一种用于预计算及交易性混合的密码装置 |
JP5968484B1 (ja) * | 2015-03-18 | 2016-08-10 | 日本電信電話株式会社 | シェア復旧システム、シェア復旧方法、およびプログラム |
EP3384424A4 (en) * | 2015-12-03 | 2019-07-24 | Unbound Tech Ltd | SECURITY OF SQL-BASED DATABASES WITH CRYPTOGRAPHIC PROTOCOLS |
-
2019
- 2019-05-14 US US17/057,120 patent/US11593362B2/en active Active
- 2019-05-14 JP JP2020521167A patent/JP6989006B2/ja active Active
- 2019-05-14 WO PCT/JP2019/019093 patent/WO2019225401A1/ja unknown
- 2019-05-14 EP EP19806536.9A patent/EP3806070B1/en active Active
- 2019-05-14 AU AU2019273208A patent/AU2019273208B2/en active Active
- 2019-05-14 CN CN201980032660.9A patent/CN112119442B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
WO2019225401A1 (ja) | 2019-11-28 |
AU2019273208A1 (en) | 2020-12-10 |
EP3806070A1 (en) | 2021-04-14 |
US11593362B2 (en) | 2023-02-28 |
EP3806070A4 (en) | 2022-01-26 |
AU2019273208B2 (en) | 2021-09-16 |
CN112119442A (zh) | 2020-12-22 |
US20210191927A1 (en) | 2021-06-24 |
CN112119442B (zh) | 2024-07-12 |
JPWO2019225401A1 (ja) | 2021-05-27 |
EP3806070B1 (en) | 2023-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6989006B2 (ja) | 秘密集約関数計算システム、秘密計算装置、秘密集約関数計算方法、およびプログラム | |
JP6973632B2 (ja) | 秘密集約総和システム、秘密計算装置、秘密集約総和方法、およびプログラム | |
JP6973633B2 (ja) | 秘密集約最大値システム、秘密集約最小値システム、秘密計算装置、秘密集約最大値方法、秘密集約最小値方法、およびプログラム | |
JP6973634B2 (ja) | 秘密集約中央値システム、秘密計算装置、秘密集約中央値方法、およびプログラム | |
JP6973629B2 (ja) | 秘密集約順位システム、秘密計算装置、秘密集約順位方法、およびプログラム | |
WO2018061800A1 (ja) | 秘密等結合システム、秘密等結合装置、秘密等結合方法、プログラム | |
JP7017178B2 (ja) | 秘密クロス集計システム、秘密計算装置、秘密クロス集計方法、およびプログラム | |
EP3246900B1 (en) | Matrix and key generation device, matrix and key generation system, matrix coupling device, matrix and key generation method, and program | |
JP7081663B2 (ja) | 秘密結合システム、方法、秘密計算装置及びプログラム | |
JP7067626B2 (ja) | 秘密結合情報生成システム、秘密結合システム、これらの方法、秘密計算装置及びプログラム | |
WO2022153383A1 (ja) | 秘密関係代数演算システム、秘密計算装置、秘密関係代数演算方法、およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE Effective date: 20201113 Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20201113 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20211102 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211115 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6989006 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |