JP7067624B2 - 秘密強写像計算システム、これらの方法、秘密計算装置及びプログラム - Google Patents

秘密強写像計算システム、これらの方法、秘密計算装置及びプログラム Download PDF

Info

Publication number
JP7067624B2
JP7067624B2 JP2020537439A JP2020537439A JP7067624B2 JP 7067624 B2 JP7067624 B2 JP 7067624B2 JP 2020537439 A JP2020537439 A JP 2020537439A JP 2020537439 A JP2020537439 A JP 2020537439A JP 7067624 B2 JP7067624 B2 JP 7067624B2
Authority
JP
Japan
Prior art keywords
vector
share
secret
generate
substitution
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
Application number
JP2020537439A
Other languages
English (en)
Other versions
JPWO2020036125A1 (ja
Inventor
大 五十嵐
浩気 濱田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2020036125A1 publication Critical patent/JPWO2020036125A1/ja
Application granted granted Critical
Publication of JP7067624B2 publication Critical patent/JP7067624B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)

Description

この発明は、秘密計算において写像の計算をする技術に関する。
従来の写像の計算をする技術として、非特許文献1に記載された写像プロトコルが知られている。
濱田浩気、五十嵐大、千田 浩司、「秘匿計算上の一括写像アルゴリズム」、電子情報通信学会論文誌、Vol.J96-A、No.4、pp.157-165
しかし、従来の写像プロトコルは、定義域が区間([1, 3]→1, [4, 8]→5, [9, 10]→ 2など。定義域に漏れがない)となっており、異常値の検出をすることができなかった。
この発明は、異常値を検出しつつ、写像の計算を行うことができる秘密強写像計算システム、これらの方法、秘密計算装置及びプログラムを提供することを目的とする。
この発明の一態様による秘密強写像計算システムは、複数の秘密計算装置を含む秘密結合システムであって、Fk,Fvは任意の環であり、αを任意のベクトル又は置換として[α]はαが秘密分散されたシェアであり、m,nは1以上の所定の整数であり、uは所定の値であり、r∈Fk mは要素が互いに異なる所定のベクトルであり、d∈Fv m,x∈Fk nは所定のベクトルであり、複数の秘密計算装置は、ベクトルrのシェア[r]及びベクトルxのシェア[x]を用いて、ベクトルrとベクトルxとベクトルrと同じベクトルとを結合したベクトルk∈[Fk]2m+nのシェア[k]を生成する複数の第一ベクトル結合部と、シェア[k]を用いて、ベクトルkを安定ソートする置換σのシェア[σ]を生成する複数の第一置換計算部と、ベクトルdのシェア[d]とuとを用いて、ベクトルdの各要素からuを減算したベクトルであるベクトルd'のシェア[d']を生成する複数の第一ベクトル生成部と、シェア[d']を用いて、ベクトルd'と要素数がnである0ベクトルとベクトルd'の各要素の正負を反転させたベクトルであるベクトル-d'とを結合したベクトルv∈[Fv]2m+nのシェア[v]を生成する複数の第二ベクトル結合部と、シェア[v]及びシェア[σ]を用いて、ベクトルvに置換σを適用したベクトルσ(v)のシェア[σ(v)]を生成する複数の第一置換適用部と、シェア[σ(v)]を用いて、各要素が、ベクトルσ(v)のその各要素に対応する要素を含むその各要素に対応する要素までの要素の和とuとの和であるベクトルσ(y)のシェア[σ(y)]を生成する複数の第二ベクトル生成部と、シェア[σ(y)]及びシェア[σ]を用いて、ベクトルσ(y)に置換σの逆置換σ-1を適用したベクトルσ-1(σ(y))のシェア[σ-1(σ(y))]を生成する複数の第一逆置換適用部と、シェア[σ-1(σ(y))]を用いて、ベクトルσ-1(σ(y))のm+1番目からm+n番目の要素を抽出したベクトルyのシェア[y]を得る複数の第一ベクトル抽出部と、を備えている。
異常値を検出しつつ、写像の計算を行うことができる。
図1は、秘密強写像計算システム、秘密結合システムの機能構成を例示する図である。 図2は、秘密強写像計算システムの秘密計算装置の機能構成を例示する図である。 図3は、秘密強写像計算方法の処理手続きを例示する図である。 図4は、左外部結合を行う秘密結合システムの秘密計算装置の機能構成を例示する図である。 図5は、左外部結合を行う秘密結合方法の処理手続きを例示する図である。 図6は、右外部結合を行う秘密結合システムの秘密計算装置の機能構成を例示する図である。 図7は、右外部結合を行う秘密結合方法の処理手続きを例示する図である。 図8は、完全外部結合を行う秘密結合システムの秘密計算装置の機能構成を例示する図である。 図9は、完全外部結合を行う秘密結合方法の処理手続きを例示する図である。
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
[秘密強写像計算システム及び方法]
図1を参照して、実施形態の秘密強写像計算システムの構成例を説明する。秘密強写像計算システムは、N(≧2)台の秘密計算装置11,…,1Nを含む。本形態では、秘密計算装置11, …, 1Nはそれぞれ通信網2へ接続されている。通信網2は、接続される各装置が相互に通信可能なように構成された回線交換方式もしくはパケット交換方式の通信網であり、例えばインターネットやLAN(Local Area Network)、WAN(Wide Area Network)などである。なお、各装置は必ずしも通信網2を介してオンラインで通信可能である必要はない。例えば、秘密計算装置11, …, 1Nへ入力する情報を磁気テープやUSBメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体から秘密計算装置11, …,1Nへオフラインで入力するように構成してもよい。
図2を参照して、秘密強写像計算システムに含まれる秘密計算装置1n(n=1, …, N)の構成例を説明する。秘密強写像計算システムの秘密計算装置1nは、例えば、図2に示すように、第一ベクトル結合部11n、第一置換計算部12n、第一ベクトル生成部13n、第二ベクトル結合部14n、第一置換適用部15n、第二ベクトル生成部16n、第一逆置換適用部17n、第一ベクトル抽出部18nを備えている。
秘密計算装置1n(1≦n≦N)の各構成部が他の秘密計算装置1n'(n'=1, …, N、ただしn≠n')の各構成部と協調しながら後述する各ステップの処理を行うことにより実施形態の秘密強写像計算方法が実現される。
なお、各ステップの処理は、秘密計算により行われる。すなわち、秘密計算装置1nは、シェアを復元することなく、言い換えればシェアの中身を知ることなく、各ステップの処理を行う。
秘密計算装置1nは、例えば、中央演算処理装置(CPU: Central Processing Unit)、主記憶装置(RAM: Random Access Memory)などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。秘密計算装置1nは、例えば、中央演算処理装置の制御のもとで各処理を実行する。秘密計算装置1nに入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。秘密計算装置1nの各構成部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。
以下の説明において、αを任意のベクトル又は任意の置換として[α]はαが秘密分散されたシェアであるとする。
図3を参照して、実施形態の秘密結合システムが実行する秘密強写像計算方法の処理手続きを説明する。
秘密強写像計算システム及び方法は、定義域に対応するベクトルr∈Fk m、値域に対応するベクトルd∈Fv m及び異常値uにより定義される写像を、入力に対応するベクトルxに適用したときの出力となるベクトルyを計算するものである。m,nは1以上の所定の整数であり、異常値uは所定の値であり、r∈Fk mは要素が互いに異なる所定のベクトルであり、d∈Fv m,x∈Fk nは所定のベクトルである。
ベクトルrのi番目の要素をriとし、ベクトルdのi番目の要素をdiとし、ベクトルxのi番目の要素をxiとし、ベクトルyのi番目の要素をyiとすると、この写像は、xi=rjとなるjが存在するときは、yi=d とし、xi=rjとなるjが存在しないときは、yi=uとする写像である。
例えば、ベクトルr=(1,3,2)であり、ベクトルd=(2,5,1)であり、u=-1であり、ベクトルx=(1,0,2,5,3)である場合には、写像をベクトルx=(1,0,2,5,3)に対して適用すると、ベクトルy=(2,-1,1,-1,5)というベクトルが得られる。
<ステップS1>
第一ベクトル結合部111,…,11Nに、ベクトルrのシェア[r]及びベクトルxのシェア[x]が入力される。
第一ベクトル結合部111,…,11Nは、ベクトルrとベクトルxとベクトルrと同じベクトルとを結合したベクトルk∈[Fk]2m+nのシェア[k]を生成する(ステップS1)。
生成されたシェア[k]は、第一置換計算部121,…,12Nに出力される。
例えば、ベクトルr=(1,3,2)であり、ベクトルx=(1,0,2,5,3)であるとする。この場合、ベクトルk=(1,3,2,1,0,2,5,3,1,3,2)となる。
<ステップS2>
第一置換計算部121,…,12Nに、シェア[k]が入力される。
第一置換計算部121,…,12Nは、シェア[k]を用いて、ベクトルkを安定ソートする置換σのシェア[σ]を生成する(ステップS2)。
シェア[σ]は、第一ベクトル生成部131,…,13Nに出力される。
例えば、ベクトルk=(1,3,2,1,0,2,5,3,1,3,2)である場合には、置換σ=(4,0,3,8,2,5,10,1,7,9,6)となる。
安定ソートを行う置換σのシェア[σ]の生成は、例えば参考文献1の手法により実現することができる。
〔参考文献1〕五十嵐大、濱田浩気、菊池亮、千田浩司、「超高速秘密計算ソートの設計と実装:秘密計算がスクリプト言語に並ぶ日」、CSS2017、2017
<ステップS3>
第一ベクトル生成部131,…,13Nに、ベクトルdのシェア[d]とuとが入力される。
第一ベクトル生成部131,…,13Nは、シェア[d]とuとを用いて、ベクトルdの各要素からuを減算したベクトルであるベクトルd'のシェア[d']を生成する(ステップS3)。
シェア[d']は、第二ベクトル結合部141,…,14Nに出力される。
例えば、ベクトルd=(2,5,1)であり、u=-1である場合には、ベクトルd'=(3,6,2)となる。
<ステップS4>
第二ベクトル結合部141,…,14Nに、シェア[d']が入力される。
第二ベクトル結合部141,…,14Nは、シェア[d']を用いて、ベクトルd'と要素数がnである0ベクトルとベクトルd'の各要素の正負を反転させたベクトルであるベクトル-d'とを結合したベクトルv∈[Fv]2m+nのシェア[v]を生成する(ステップS4)。
シェア[v]は、第一置換適用部151,…,15Nに出力される。
例えば、ベクトルd'=(3,6,2)であり、n=5である場合には、ベクトルv=(3,6,2,0,0,0,0,0,-3,-6,-2)となる。
<ステップS5>
第一置換適用部151,…,15Nに、シェア[v]及びシェア[σ]が入力される。
第一置換適用部151,…,15Nは、シェア[v]及びシェア[σ]を用いて、ベクトルvに置換σを適用したベクトルσ(v)のシェア[σ(v)]を生成する(ステップS5)。
シェア[σ(v)]は、第二ベクトル生成部161,…,16Nに出力される。
例えば、置換σ=(4,0,3,8,2,5,10,1,7,9,6)であり、ベクトルv=(3,6,2,0,0,0,0,0,-3,-6,-2)である場合には、ベクトルσ(v)=(0,3,0,-3,2,0,-2,6,0,-6,0)となる。
<ステップS6>
第二ベクトル生成部161,…,16Nに、シェア[σ(v)]が入力される。
第二ベクトル生成部161,…,16Nは、シェア[σ(v)]を用いて、各要素が、ベクトルσ(v)のその各要素に対応する要素を含むその各要素に対応する要素までの要素の和とuとの和であるベクトルσ(y)のシェア[σ(y)]を生成する(ステップS6)。言い換えれば、第二ベクトル生成部161,…,16Nは、初期値をuとしたベクトルσ(v)のprefix-sumを計算しσ(y)とする。σ(v)のi番目の要素をσ(v)iとし、σ(y)のi番目の要素をσ(y)iとすると、σ(y)i=u+Σj=1 iσ(v)jとなる。
シェア[σ(y)]は、第一逆置換適用部171,…,17Nに出力される。
例えば、ベクトルσ(v)=(0,3,0,-3,2,0,-2,6,0,-6,0)である場合には、ベクトルσ(y)=(-1,2,2,-1,1,1,-1,5,5,-1,-1)となる。
<ステップS7>
第一逆置換適用部171,…,17Nに、シェア[σ(y)]及びシェア[σ]が入力される。
第一逆置換適用部171,…,17Nは、シェア[σ(y)]及びシェア[σ]を用いて、ベクトルσ(y)に置換σの逆置換σ-1を適用したベクトルσ-1(σ(y))のシェア[σ-1(σ(y))]を生成する(ステップS7)。
シェア[σ-1(σ(y))]は、第一ベクトル抽出部181,…,18Nに出力される。
例えば、置換σ=(4,0,3,8,2,5,10,1,7,9,6)であり、ベクトルσ(y)=(-1,2,2,-1,1,1,-1,5,5,-1,-1)である場合には、ベクトルσ-1(σ(y))=(2,5,1,2,-1,1,-1,5,-1,-1,-1)となる。
<ステップS8>
第一ベクトル抽出部181,…,18Nに、シェア[σ-1(σ(y))]が入力される。
第一ベクトル抽出部181,…,18Nは、シェア[σ-1(σ(y))]を用いて、ベクトルσ-1(σ(y))のm+1番目からm+n番目の要素を抽出したベクトルyのシェア[y]を得る(ステップS8)。
例えば、ベクトルσ-1(σ(y))=(2,5,1,2,-1,1,-1,5,-1,-1,-1)である場合には、ベクトルy=(2,-1,1,-1,5)となる。
ベクトルy=(2,-1,1,-1,5)は、ベクトルr=(1,3,2)であり、ベクトルd=(2,5,1)であり、u=-1であり、ベクトルx=(1,0,2,5,3)である場合の写像をベクトルx=(1,0,2,5,3)に対して適用した出力となるベクトルとなっている。ベクトルx=(1,0,2,5,3)の1番目の要素「1」、3番目の要素「2」、5番目の要素「3」は、写像により、それぞれベクトルy=(2,-1,1,-1,5)の1番目の要素「2」、3番目の要素「1」、5番目の要素「5」に写されている。また、ベクトルx=(1,0,2,5,3)の2番目の要素「0」、4番目の要素「5」は、定義域に対応するベクトルrの要素にない値であるため、写像により、異常値である「-1」に写されている。
このようにして、秘密強写像計算システム及び方法により、異常値を検出しつつ、写像の計算を行うことができる。
以下、秘密強写像計算システム及び方法を用いた秘密結合システム及び方法の実施形態の説明をする。
[左外部結合を行う秘密結合システム及び方法]
図1を参照して、実施形態の秘密結合システムの構成例を説明する。この秘密結合システム及び方法は、いわゆる左外部結合を行うものである。左外部結合については後述する。
秘密結合システムは、秘密強写像計算システムと同様に、N(≧2)台の秘密計算装置11,…,1Nを含む。本形態では、秘密計算装置11, …, 1Nはそれぞれ通信網2へ接続されている。通信網2は、接続される各装置が相互に通信可能なように構成された回線交換方式もしくはパケット交換方式の通信網であり、例えばインターネットやLAN(Local Area Network)、WAN(Wide Area Network)などである。なお、各装置は必ずしも通信網2を介してオンラインで通信可能である必要はない。例えば、秘密計算装置11, …, 1Nへ入力する情報を磁気テープやUSBメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体から秘密計算装置11, …,1Nへオフラインで入力するように構成してもよい。
図4を参照して、秘密結合システムに含まれる秘密計算装置1n(n=1, …, N)の構成例を説明する。秘密結合システムの秘密計算装置1nは、例えば、図4に示すように、第一ベクトル結合部11n、第一置換計算部12n、第一ベクトル生成部13n、第二ベクトル結合部14n、第一置換適用部15n、第二ベクトル生成部16n、第一逆置換適用部17n、第一ベクトル抽出部18n、第二置換適用部19n、第三ベクトル生成部110n、第二逆置換適用部111n、第二ベクトル抽出部112n、変形第二テーブル生成部113n、第三置換適用部114n、第四ベクトル生成部115n、シフト部116n、第三逆置換適用部117n、ビット反転部118n、第三ベクトル抽出部119n、変形第一テーブル生成部120n、第一テーブル結合部121n、第一テーブル整形部122nを備えている。
図4において破線で囲った、秘密計算装置1nの中の第一ベクトル結合部11n、第一置換計算部12n、第一ベクトル生成部13n、第二ベクトル結合部14n、第一置換適用部15n、第二ベクトル生成部16n、第一逆置換適用部17n、第一ベクトル抽出部18nが秘密強写像計算システムに対応する部分であると言える。
秘密計算装置1n(1≦n≦N)の各構成部が他の秘密計算装置1n'(n'=1, …, N、ただしn≠n')の各構成部と協調しながら後述する各ステップの処理を行うことにより実施形態の秘密結合方法が実現される。
なお、各ステップの処理は、秘密計算により行われる。すなわち、秘密計算装置1nは、シェアを復元することなく、言い換えればシェアの中身を知ることなく、各ステップの処理を行う。
秘密計算装置1nは、例えば、中央演算処理装置(CPU: Central Processing Unit)、主記憶装置(RAM: Random Access Memory)などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。秘密計算装置1nは、例えば、中央演算処理装置の制御のもとで各処理を実行する。秘密計算装置1nに入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。秘密計算装置1nの各構成部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。
図5を参照して、実施形態の秘密結合システムが実行する秘密結合方法の処理手続きを説明する。
以下に説明する秘密結合システムは、第一テーブルと第二テーブルを左外部結合する。言い換えれば、以下に説明する秘密結合システムは、秘匿性を保ちつつ、第一テーブル及び第二テーブルに共通するレコードと、第一テーブルのみに存在するレコードとを結合する。
m,n,L1,L2は、1以上の整数であるとする。m,n,L1,L2は、同じ値であってもよいし、異なる値であってもよい。
第一テーブルは、m個のレコードを有している。m個のレコードのそれぞれは、1個のキーと、L1個の属性の属性値とを有している。k1∈Fk mは第一テーブルのキーのベクトルであるとする。第一テーブルの中には、重複するキーはないとする。
第二テーブルは、n個のレコードを有している。n個のレコードのそれぞれは、1個のキーと、L2個の属性の属性値とを有している。k2∈Fk nは第二テーブルのキーのベクトルであるとする。第二テーブルの中には、重複するキーがあってもよいとする。
例えば、第一テーブルは、レコード数が3であり、キーのベクトルk1=(3,5,9)と、1個の属性v1の属性値のベクトルv1=(100,19,85)とから構成されているとする。
また、第二テーブルは、レコード数が4であり、キーのベクトルk2=(3,7,9,9)と、1個の属性v2の属性値のベクトルv2=(水,ミックスオレ,薬,水)とから構成されているとする。
第一テーブルに複数の属性の属性値が含まれている場合には、v1は、複数の属性の属性値を連結したベクトルであってもよい。例えば、第一テーブルは、レコード数が2であり、2個の属性の属性値を含んでおり、1個目の属性の属性値のベクトルはv1,1=(29,169)であり、2個目の属性の属性値のベクトルはv1,1=(35,175)であるとする。この場合、v1は、これらの2個の属性の属性値を連結したベクトルv1=((29,35),(169,175))であってもよい。
同様に、第二テーブルに複数の属性の属性値が含まれている場合には、v2は、複数の属性の属性値を連結したベクトルであってもよい。
一般に環を要素とするベクトルはやはり環であるため、あるレコードに含まれる各属性の値を並べたデータは、ベクトル、つまり環とみなすことができる。
まず、上記説明した秘密強写像計算システム及び方法の<ステップS1>から<ステップS8>の処理により、定義域に対応するベクトルr=k1とし、値域に対応するベクトルd=v1とし、入力に対応するベクトルx=k2としたときの、r,d,uにより定義される写像を、xに適用したときの出力となるベクトルyを計算する。これにより、第二テーブルの各レコードに対応する第一テーブルの属性v1の属性値を得ることができる。なお、第二テーブルのレコードであって、第一テーブルに存在しないキーに対応するレコードに対応する属性値は、異常値uとなる。
<ステップS1>から<ステップS8>の処理は、[秘密強写像計算システム及び方法]の欄で説明した<ステップS1>から<ステップS8>の処理と同様であるため、ここでは重複説明を省略する。
例えば、ベクトルr=k1=(3,5,9)であり、ベクトルd=v1=(100,19,85)であり、u=-1であり、x=k2=(3,7,9,9)である場合には、写像をベクトルx=(3,7,9,9)に対して適用すると、ベクトルy=(100,-1,85,85)というベクトルが得られる。ベクトルx=k2=(3,7,9,9)の2番目の要素「7」は、ベクトルr=k1=(3,5,9)の要素の中に存在しないため、ベクトルy=(100,-1,85,85)の2番目の要素は異常値u=-1となっている。このように、第二テーブルのレコードであって、第一テーブルに存在しないキーに対応するレコードに対応する属性値が、異常値uとなるようにベクトルyが計算される。
<ステップS9>
第二置換適用部191,…,19Nに、各要素が1であるm個の要素と、各要素が0であるn個の要素と、各要素が-1であるm個の要素とを結合したベクトルg∈[F]2m+nのシェア[g]及びシェア[σ]が入力される。ここで、Fは任意の環である。
第二置換適用部191,…,19Nは、各要素が1であるm個の要素と、各要素が0であるn個の要素と、各要素が-1であるm個の要素とを結合したベクトルg∈[F]2m+nのシェア[g]及びシェア[σ]を用いて、ベクトルgに置換σを適用したベクトルσ(g)のシェア[σ(g)]を生成する(ステップS9)。
シェア[σ(g)]は、第三ベクトル生成部1101,…,110Nに出力される。
例えば、m=3,n=4であり、置換σが以下の式(1)により定義されるσである場合には、g=(1,1,1,0,0,0,0,-1,-1,-1)となり、σ(g)=(1,0,-1,1,-1,0,1,0,0,-1)となる。
Figure 0007067624000001
ここで、置換σの各列(i,j)Tは、置換が適用されるベクトルのi番目の要素をj番目に移動することを意味する。
<ステップS10>
第三ベクトル生成部1101,…,110Nに、シェア[σ(g)]が入力される。
第三ベクトル生成部1101,…,110Nは、シェア[σ(g)]を用いて、各要素が、ベクトルσ(g)のその各要素に対応する要素を含むその各要素に対応する要素までの要素の和であるベクトルσ(g')のシェア[σ(g')]を生成する(ステップS10)。言い換えれば、第三ベクトル生成部1101,…,110Nは、σ(g)のprefix-sumを計算しσ(g')とする。σ(g)のi番目の要素をσ(g)iとし、σ(g')のi番目の要素をσ(g')iとすると、σ(g')ij=1 iσ(g)jとなる。
シェア[σ(g')]は、第二逆置換適用部1111,…,111Nに出力される。
例えば、σ(g)=(1,0,-1,1,-1,0,1,0,0,-1)である場合には、σ(g')=(1,1,0,1,0,0,1,1,1,0)となる。
<ステップS11>
第二逆置換適用部1111,…,111Nに、シェア[σ(g')]が入力される。
第二逆置換適用部1111,…,111Nは、シェア[σ(g')]を用いて、ベクトルσ(g')に置換σの逆置換σ-1を適用したベクトルg'のシェア[g']を生成する(ステップS11)。
シェア[g']は、第二ベクトル抽出部1121,…,112Nに出力される。
例えば、σ(g')=(1,1,0,1,0,0,1,1,1,0)である場合には、g'=(1,1,1,1,0,1,1,0,0,0)となる。
<ステップS12>
第二ベクトル抽出部1121,…,112Nに、シェア[g']が入力される。
第二ベクトル抽出部1121,…,112Nは、シェア[g']を用いて、ベクトルg'のm+1番目からm+n番目の要素を抜き出したベクトルf1'のシェア[f1']を生成する(ステップS12)。
シェア[f1']は、変形第二テーブル生成部1131,…,113Nに出力される。
例えば、m=3,n=4であり、g'=(1,1,1,1,0,1,1,0,0,0)である場合には、f1'=(1,0,1,1)となる。
<ステップS13>
変形第二テーブル生成部1131,…,113Nに、シェア[f1']及びシェア[y]が入力される。
変形第二テーブル生成部1131,…,113Nは、シェア[f1']及びシェア[y]を用いて、ベクトルf1'と、i=1,…,nとして、f1'i=0である場合には、第二テーブルの属性のi番目の要素をuv2としたテーブルと、ベクトルyとを結合した変形第二テーブルを生成する(ステップS13)。uv2は、所定の値である。
変形第二テーブルは、第一テーブル結合部1211,…,121Nに出力される。
例えば、第二テーブルが、キーのベクトルk2=(3,7,9,9)と、1個の属性v2の属性値のベクトルv2=(水,ミックスオレ,薬,水)とから構成されており、f1'=(1,0,1,1)であり、ベクトルy=(100,-1,85,85)である場合には、変形第二テーブルは、以下に示すテーブルとなる。以下の変形第二テーブルでは、i=1,…,nとして、f1'i=0である場合には、第二テーブルのキーのi番目の要素をu=-1としている。
Figure 0007067624000002
<ステップS14>
第三置換適用部1141,…,114Nに、各要素が1であるm個の要素と、各要素が0であるn個の要素と、各要素が-1であるm個の要素とを結合したベクトルe∈[F]2m+nのシェア[e]及びシェア[σ]が入力される。
第三置換適用部1141,…,114Nは、ベクトルe∈[F]2m+nのシェア[e]及びシェア[σ]を用いて、ベクトルeに置換σを適用したベクトルσ(e)のシェア[σ(e)]を生成する(ステップS14)。
シェア[σ(e)]は、第四ベクトル生成部1151,…,115Nに出力される。
例えば、m=3,n=4であり、置換σが上記の式(1)により定義されるσである場合には、e=(1,1,1,0,0,0,0,-1,-1,-1)となり、σ(e)=(1,0,-1,1,-1,0,1,0,0,-1)となる。
<ステップS15>
第四ベクトル生成部1151,…,115Nに、シェア[σ(e)]が入力される。
第四ベクトル生成部1151,…,115Nは、シェア[σ(e)]を用いて、各要素が、ベクトルσ(e)のその各要素に対応する要素を含むその各要素に対応する要素までの要素の和であるベクトルσ(e')のシェア[σ(e')]を生成する(ステップS15)。言い換えれば、第四ベクトル生成部1151,…,115Nは、σ(e)のprefix-sumを計算しσ(e')とする。
シェア[σ(e')]は、シフト部1161,…,116Nに出力される。
例えば、σ(e)=(1,0,-1,1,-1,0,1,0,0,-1)である場合には、σ(e')=(1,1,0,1,0,0,1,1,1,0)となる。
<ステップS16>
シフト部1161,…,116Nに、シェア[σ(e')]が入力される。
シフト部1161,…,116Nは、シェア[σ(e')]を用いて、ベクトルσ(e)の各要素を1個ずつシフトさせたベクトルσ(e'')のシェア[σ(e'')]を生成する(ステップS16)。なお、ベクトルσ(e)の各要素を、前方向に(左に)1個ずつシフトさせた場合には、ベクトルσ(e'')の一番最後の要素(一番右の要素)は例えば0とする。同様に、ベクトルσ(e)の各要素を、後ろ方向に(右に)1個ずつシフトさせた場合には、ベクトルσ(e'')の一番前の要素(一番左の要素)は例えば0とする。
シェア[σ(e'')]は、第三逆置換適用部1171,…,117Nに出力される。
例えば、σ(e')=(1,1,0,1,0,0,1,1,1,0)であり、前方向に(左に)1個ずつシフトさせる場合には、ベクトルσ(e'')=(1,0,1,0,0,1,1,1,0,0)となる。
<ステップS17>
第三逆置換適用部1171,…,117Nに、シェア[σ(e'')]及びシェア[σ]が入力される。
第三逆置換適用部1171,…,117Nは、シェア[σ(e'')]及びシェア[σ]を用いて、ベクトルσ(e'')に置換σの逆置換σ-1を適用したベクトルe''のシェア[e'']を生成する(ステップS17)。
シェア[e'']は、ビット反転部1181,…,118Nに出力される。
例えば、ベクトルσ(e'')=(1,0,1,0,0,1,1,1,0,0)であり、置換σが上記の式(1)により定義されるσである場合には、ベクトルe''=(1,0,1,0,1,1,0,1,0,0)となる。
<ステップS18>
ビット反転部1181,…,118Nに、シェア[e'']が入力される。
ビット反転部1181,…,118Nは、シェア[e'']を用いて、ベクトルe''の要素の0,1を反転させたベクトルfのシェア[f]を生成する(ステップS18)。
シェア[f]は、第三ベクトル抽出部1191,…,119Nに出力される。
例えば、ベクトルe''=(1,0,1,0,1,1,0,1,0,0)である場合には、ベクトルf=(0,1,0,1,0,0,1,0,1,1)となる。
<ステップS19>
第三ベクトル抽出部1191,…,119Nに、シェア[f]が入力される。
第三ベクトル抽出部1191,…,119Nは、シェア[f]を用いて、ベクトルfの左からm個の要素を抜き出したベクトルf'のシェア[f']を生成する(ステップS19)。
シェア[f']は、変形第一テーブル生成部1201,…,120Nに出力される。
例えば、ベクトルf=(0,1,0,1,0,0,1,0,1,1)である場合には、ベクトルf'=(0,1,0)となる。
ベクトルf'は、第一テーブルのみにあるレコードの位置を表す。例えば、ベクトルf'=(0,1,0)は、第一テーブルの2個目のレコードが第一テーブルのみにあり、第二テーブルにないことを表す。
<ステップS20>
変形第一テーブル生成部1201,…,120Nに、シェア[f']、シェア[r]及びシェア[d]が入力される。
変形第一テーブル生成部1201,…,120Nは、ベクトルf'のi番目の要素をf'iとし、ベクトルrのi番目の要素をriとし、uk,uv1を所定の値として、シェア[f']、シェア[r]及びシェア[d]を用いて、ベクトルf'と、i=1,…,mとして、f'i=0である場合には、第一テーブルのキーのi番目の要素をukとし、第一テーブルの属性のi番目の要素をuv1としたテーブルと、第二テーブルの属性に対応するベクトルとして予め定めた空を示す値u v2 を要素とするベクトルとを結合した変形第一テーブルを生成する(ステップS20)。
変形第一テーブルは、第一テーブル結合部1211,…,121Nに出力される。
例えば、uk,uv1=-1であり、ベクトルf'=(0,1,0)であり、第一テーブルは、レコード数が3であり、キーのベクトルk1=(3,5,9)と、1個の属性v1の属性値のベクトルv1=(100,19,85)とから構成されており、r=k1,d=v1である場合には、変形第一テーブルは以下のテーブルとなる。
Figure 0007067624000003
<ステップS21>
第一テーブル結合部1211,…,121Nに、変形第二テーブルと変形第一テーブルとが入力される。
第一テーブル結合部1211,…,121Nは、変形第二テーブルと変形第一テーブルとを結合した結合テーブルを生成する(ステップS21)。
例えば、変形第二テーブルが上記(A)に示したものであり、変形第一テーブルが上記(B)に示したものである場合には、結合テーブルは以下に示すテーブルとなる。なお、以下に示す結合テーブルでは、フラグのベクトルf1'とf'とを結合したベクトルをf''としている。
Figure 0007067624000004
<ステップS22>
第一テーブル整形部1221,…,122Nに、シェア[f1']及び[f']が入力される。
第一テーブル整形部1221,…,122Nは、結合テーブル、シェア[f1']及び[f']を用いて、結合テーブルからベクトルf1'及びベクトルf'の要素(言い換えれば、ベクトルf1'とベクトルf'とを結合したベクトルf''の要素)が1のレコードを抜き出した整形後結合テーブルを生成する(ステップS22)。
例えば、結合テーブルが上記(C)の結合テーブルである場合には、整形後結合テーブルは、以下のテーブルとなる。
Figure 0007067624000005
なお、第一テーブル整形部1221,…,122Nは、ベクトルf1'とベクトルf'とを結合したベクトルf''でソートした後に、ベクトルf''の要素が1のレコードを抜き出すことにより、整形後結合テーブルを生成してもよい。この場合、ベクトルf''のシェア[f'']は公開されてもよい。
この整形後結合テーブルは、第一テーブルと第二テーブルとを左外部結合したテーブルとなっている。
[右外部結合を行う秘密結合システム及び方法]
図1を参照して、実施形態の秘密結合システムの構成例を説明する。この秘密結合システム及び方法は、いわゆる右外部結合を行うものである。言い換えれば、この秘密結合システムは、秘匿性を保ちつつ、第一テーブル及び第二テーブルに共通するレコードと、第二テーブルのみに存在するレコードとを結合する。
右外部結合を行う秘密結合システムは、第二置換適用部19n、第三ベクトル生成部110n、第二逆置換適用部111n、第二ベクトル抽出部112n、変形第二テーブル生成部113n、第三置換適用部114n、第四ベクトル生成部115n、シフト部116n、第三逆置換適用部117n、ビット反転部118n、第三ベクトル抽出部119n、変形第一テーブル生成部120n、第一テーブル結合部121n、第一テーブル整形部122nを備えていない代わりに、変形第二テーブル生成部123nを備えている点を除けば、左外部結合を行う秘密結合システムと同様である。
右外部結合を行う秘密結合方法は、ステップS9からステップS22の処理を行わない代わりに、ステップS23の処理を行う点を除けば、左外部結合を行う秘密結合方法と同様である。
以下では、左外部結合を行う秘密結合システム及び方法と異なる部分について説明する。左外部結合を行う秘密結合システム及び方法と同じ部分については重複説明を省略する。
秘密結合システムの秘密計算装置1nは、例えば、図6に示すように、第一ベクトル結合部11n、第一置換計算部12n、第一ベクトル生成部13n、第二ベクトル結合部14n、第一置換適用部15n、第二ベクトル生成部16n、第一逆置換適用部17n、第一ベクトル抽出部18n、変形第二テーブル生成部123nを備えている。
図6において破線で囲った、秘密計算装置1nの中の第一ベクトル結合部11n、第一置換計算部12n、第一ベクトル生成部13n、第二ベクトル結合部14n、第一置換適用部15n、第二ベクトル生成部16n、第一逆置換適用部17n、第一ベクトル抽出部18nが秘密強写像計算システムに対応する部分であると言える。
図7を参照して、実施形態の秘密結合システムが実行する秘密結合方法の処理手続きを説明する。
<ステップS1>から<ステップS8>の処理は、[秘密強写像計算システム及び方法]の欄で説明した<ステップS1>から<ステップS8>の処理と同様であるため、ここでは重複説明を省略する。
例えば、ベクトルr=k1=(3,5,9)であり、ベクトルd=v1=(100,19,85)であり、u=-1であり、x=k2=(3,7,9,9)である場合には、写像をベクトルx=(3,7,9,9)に対して適用すると、ベクトルy=(100,-1,85,85)というベクトルが得られる。ベクトルx=k2=(3,7,9,9)の2番目の要素「7」は、ベクトルr=k1=(3,5,9)の要素の中に存在しないため、ベクトルy=(100,-1,85,85)の2番目の要素は異常値u=-1となっている。このように、第二テーブルのレコードであって、第一テーブルに存在しないキーに対応するレコードに対応する属性値が、異常値uとなるようにベクトルyが計算される。
<ステップS23>
変形第二テーブル生成部1231,…,12 Nに、シェア[y]が入力される。
変形第二テーブル生成部1231,…,12 Nは、シェア[y]を用いて、第二テーブルと、ベクトルyとを結合した変形第二テーブルを生成する(ステップS23)。
例えば、第二テーブルが、レコード数が4であり、キーのベクトルk2=(3,7,9,9)と、1個の属性v2の属性値のベクトルv2=(水,ミックスオレ,薬,水)とから構成されており、ベクトルy=(100,-1,85,85)である場合には、変形第二テーブルは、以下に示すテーブルとなる。
Figure 0007067624000006
この変形第二テーブルは、第一テーブルと第二テーブルとを右部結合したテーブルとなっている。
[完全外部結合を行う秘密結合システム及び方法]
図8を参照して、実施形態の秘密結合システムの構成例を説明する。この秘密結合システム及び方法は、いわゆる完全外部結合を行うものである。言い換えれば、この秘密結合システムは、秘匿性を保ちつつ、第一テーブル及び第二テーブルに共通するレコードと、第一テーブルのみに存在するレコードと、第二テーブルのみに存在するレコードとを結合する。
完全外部結合を行う秘密結合システムは、第一テーブル結合部121n、第一テーブル整形部122nを備えていない代わりに、第二テーブル整形部124n、第二テーブル結合部125nを備えている点を除けば、左外部結合を行う秘密結合システム、右外部結合を行う秘密結合システムと同様である。
完全外部結合を行う秘密結合方法は、ステップS21からステップS22の処理を行わない代わりに、ステップS24及びステップS25の処理を行う点を除けば、左外部結合を行う秘密結合方法、右外部結合を行う秘密結合方法と同様である。
以下では、左外部結合を行う秘密結合システム及び方法、右外部結合を行う秘密結合システム及び方法と異なる部分について説明する。左外部結合を行う秘密結合システム及び方法、右外部結合を行う秘密結合システム及び方法と同じ部分については重複説明を省略する。
秘密結合システムの秘密計算装置1nは、例えば、図8に示すように、第一ベクトル結合部11n、第一置換計算部12n、第一ベクトル生成部13n、第二ベクトル結合部14n、第一置換適用部15n、第二ベクトル生成部16n、第一逆置換適用部17n、第一ベクトル抽出部18n、第二置換適用部19n、第三ベクトル生成部110n、第二逆置換適用部111n、第二ベクトル抽出部112n、変形第二テーブル生成部113n、第三置換適用部114n、第四ベクトル生成部115n、シフト部116n、第三逆置換適用部117n、ビット反転部118n、第三ベクトル抽出部119n、変形第一テーブル生成部120n 、変形第二テーブル生成部123n、第二テーブル整形部124n、第二テーブル結合部125nを備えている。
図8において破線で囲った、秘密計算装置1nの中の第一ベクトル結合部11n、第一置換計算部12n、第一ベクトル生成部13n、第二ベクトル結合部14n、第一置換適用部15n、第二ベクトル生成部16n、第一逆置換適用部17n、第一ベクトル抽出部18nが秘密強写像計算システムに対応する部分であると言える。
図9を参照して、実施形態の秘密結合システムが実行する秘密結合方法の処理手続きを説明する。
まず、<ステップS1>から<ステップS8>の処理が行われる。<ステップS1>から<ステップS8>の処理は、[秘密強写像計算システム及び方法]の欄で説明した<ステップS1>から<ステップS8>の処理と同様であるため、ここでは重複説明を省略する。
例えば、ベクトルr=k1=(3,5,9)であり、ベクトルd=v1=(100,19,85)であり、u=-1であり、x=k2=(3,7,9,9)である場合には、写像をベクトルx=(3,7,9,9)に対して適用すると、ベクトルy=(100,-1,85,85)というベクトルが得られる。ベクトルx=k2=(3,7,9,9)の2番目の要素「7」は、ベクトルr=k1=(3,5,9)の要素の中に存在しないため、ベクトルy=(100,-1,85,85)の2番目の要素は異常値u=-1となっている。このように、第二テーブルのレコードであって、第一テーブルに存在しないキーに対応するレコードに対応する属性値が、異常値uとなるようにベクトルyが計算される。
次に、<ステップS23>の処理が行われる。<ステップS23>の処理は、[右外部結合を行う秘密結合システム及び方法]の欄で説明した<ステップS23>の処理と同様であるため、ここでは重複説明を省略する。
例えば、第二テーブルが、レコード数が4であり、キーのベクトルk2=(3,7,9,9)と、1個の属性v2の属性値のベクトルv2=(水,ミックスオレ,薬,水)とから構成されており、ベクトルy=(100,-1,85,85)である場合には、変形第二テーブルは、以下に示すテーブルとなる。
Figure 0007067624000007
次に、<ステップS9>から<ステップS20>の処理が行われる。<ステップS9>から<ステップS20>の処理は、[左外部結合を行う秘密結合システム及び方法]の欄で説明した<ステップS9>から<ステップS20>の処理と同様であるため、ここでは重複説明を省略する。
次に、<ステップS24>及び<ステップS25>の処理が行われる。
<ステップS24>
第二テーブル整形部1241,…,124Nに、シェア[f']が入力される。
第二テーブル整形部1241,…,124Nは、変形第一テーブル、シェア[f']を用いて、変形第一テーブルからベクトルf'の要素が1のレコードを抜き出した整形後変形第一テーブルを生成する(ステップS24)。
整形後変形第一テーブルは、第二テーブル結合部1251,…,125Nに出力される。
例えば、変形第一テーブルが、上記(B)のテーブルである場合には、整形後変形第一テーブルは、以下のテーブルとなる。
Figure 0007067624000008
<ステップS25>
第二テーブル結合部1251,…,125Nに、変形第二テーブル及び整形後変形第一テーブルが入力される。
第二テーブル結合部1251,…,125Nは、変形第二テーブルと整形後変形第一テーブルとを結合した結合テーブルを生成する(ステップS25)。
例えば、変形第二テーブルが上記(D)のテーブルであり、整形後変形第一テーブルが上記(E)のテーブルである場合には、結合テーブルは、以下のテーブルとなる。
Figure 0007067624000009
このテーブルは、第一テーブルと第二テーブルとを完全外部結合したテーブルとなっている。
[変形例]
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。
例えば、zを2以上の正の整数として、キーの属性が、z個の属性の複合キーであってもよい。この場合には、例えば以下のようにしてステップS1の処理を行ってもよい。
rのかわりに、r0,…, z-1 であるとする。xのかわりに、x0,…, z-1 であるとする。
この場合、ステップS1の処理で、各i(ただしi=0,…,z-1)でriとxiと、そしてもう一度riと結合してkiを得る。そして、各kiをビット分解してビット表現にし、横に結合する。例えばk0=(1,2,3,1,3,0,1,1,2,3)T,k1=(0,0,0,0,0,1,1,0,0,0)Tのとき、k0をビット分解すると、(k0)0=(1,0,1,1,1,0,1,1,0,1)T,(k0)1=(0,1,1,0,1,0,0,0,1,1)Tとなる。
ここで、k0は1から3の値を取るため、k0の各要素は2ビットで表現することができる。(k0)0はk0をビット分解したときの下位ビットであり、(k0)1はk0をビット分解したときの上位ビットである。k1はこの例ではもともと1ビット数であるので分解する必要はなく、k1=(k1)0とする。(k0)0,(k0)1,(k1)0を横に結合すると、
Figure 0007067624000010
となる。このようにして並べたものを行列とみなし、この行列の各行を1レコードのキーのビット表現とみなすと、(1,2,3,1,3,4,5,1,2,3)というキーのビット表現のベクトルが得られる。このベクトルをステップS2以降で使うkとして用いてもよい。このようにして、複合キーの場合も処理できる。
複合キーでは、キーの重複とは、全てのキー属性の値の組み合わせの観点で重複するかどうかであり、個々の属性の値が重複しただけでは重複とはみなさないとする。例えば、組み合わせ(1,0)と(1,1)は重複ではない。
実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
[プログラム、記録媒体]
上記説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。

Claims (4)

  1. 複数の秘密計算装置を含む秘密強写像計算システムであって、
    Fk,Fvは任意の環であり、αを任意のベクトル又は置換として[α]はαが秘密分散されたシェアであり、m,nは1以上の所定の整数であり、uは所定の値であり、r∈Fk mは要素が互いに異なる所定のベクトルであり、d∈Fv m,x∈Fk nは所定のベクトルであり、
    上記複数の秘密計算装置は、
    上記ベクトルrのシェア[r]及び上記ベクトルxのシェア[x]を用いて、上記ベクトルrと上記ベクトルxと上記ベクトルrと同じベクトルとを結合したベクトルk∈[Fk]2m+nのシェア[k]を生成する複数の第一ベクトル結合部と、
    上記シェア[k]を用いて、上記ベクトルkを安定ソートする置換σのシェア[σ]を生成する複数の第一置換計算部と、
    上記ベクトルdのシェア[d]とuとを用いて、ベクトルdの各要素からuを減算したベクトルであるベクトルd'のシェア[d']を生成する複数の第一ベクトル生成部と、
    上記シェア[d']を用いて、上記ベクトルd'と要素数がnである0ベクトルと上記ベクトルd'の各要素の正負を反転させたベクトルであるベクトル-d'とを結合したベクトルv∈[Fv]2m+nのシェア[v]を生成する複数の第二ベクトル結合部と、
    上記シェア[v]及び上記シェア[σ]を用いて、上記ベクトルvに上記置換σを適用したベクトルσ(v)のシェア[σ(v)]を生成する複数の第一置換適用部と、
    上記シェア[σ(v)]を用いて、各要素が、上記ベクトルσ(v)のその各要素に対応する要素を含むその各要素に対応する要素までの要素の和と上記uとの和であるベクトルσ(y)のシェア[σ(y)]を生成する複数の第二ベクトル生成部と、
    上記シェア[σ(y)]及び上記シェア[σ]を用いて、上記ベクトルσ(y)に上記置換σの逆置換σ-1を適用したベクトルσ-1(σ(y))のシェア[σ-1(σ(y))]を生成する複数の第一逆置換適用部と、
    上記シェア[σ-1(σ(y))]を用いて、上記ベクトルσ-1(σ(y))のm+1番目からm+n番目の要素を抽出したベクトルyのシェア[y]を得る複数の第一ベクトル抽出部と、
    を含む秘密強写像計算システム。
  2. Fk,Fvは任意の環であり、αを任意のベクトル又は置換として[α]はαが秘密分散されたシェアであり、m,nは1以上の所定の整数であり、uは所定の値であり、r∈Fk mは要素が互いに異なる所定のベクトルであり、d∈Fv m,x∈Fk nは所定のベクトルであり、
    複数の第一ベクトル結合部が、上記ベクトルrのシェア[r]及び上記ベクトルxのシェア[x]を用いて、上記ベクトルrと上記ベクトルxと上記ベクトルrと同じベクトルとを結合したベクトルk∈[Fk]2m+nのシェア[k]を生成する第一ベクトル結合ステップと、
    複数の第一置換計算部が、上記シェア[k]を用いて、上記ベクトルkを安定ソートする置換σのシェア[σ]を生成する第一置換計算ステップと、
    複数の第一ベクトル生成部が、上記ベクトルdのシェア[d]とuとを用いて、ベクトルdの各要素からuを減算したベクトルであるベクトルd'のシェア[d']を生成する複数の第一ベクトル生成ステップと、
    複数の第二ベクトル結合部が、上記シェア[d']を用いて、上記ベクトルd'と要素数がnである0ベクトルと上記ベクトルd'の各要素の正負を反転させたベクトルであるベクトル-d'とを結合したベクトルv∈[Fv]2m+nのシェア[v]を生成する第二ベクトル結合ステップと、
    複数の第一置換適用部が、上記シェア[v]及び上記シェア[σ]を用いて、上記ベクトルvに上記置換σを適用したベクトルσ(v)のシェア[σ(v)]を生成する第一置換適用ステップと、
    複数の第二ベクトル生成部が、上記シェア[σ(v)]を用いて、各要素が、上記ベクトルσ(v)のその各要素に対応する要素を含むその各要素に対応する要素までの要素の和と上記uとの和であるベクトルσ(y)のシェア[σ(y)]を生成する第二ベクトル生成ステップと、
    複数の第一逆置換適用部が、上記シェア[σ(y)]及び上記シェア[σ]を用いて、上記ベクトルσ(y)に上記置換σの逆置換σ-1を適用したベクトルσ-1(σ(y))のシェア[σ-1(σ(y))]を生成する第一逆置換適用ステップと、
    複数の第一ベクトル抽出部が、上記シェア[σ-1(σ(y))]を用いて、上記ベクトルσ-1(σ(y))のm+1番目からm+n番目の要素を抽出したベクトルyのシェア[y]を得る第一ベクトル抽出ステップと、
    を含む秘密強写像計算方法。
  3. F k ,F v は任意の環であり、αを任意のベクトル又は置換として[α]はαが秘密分散されたシェアであり、m,nは1以上の所定の整数であり、uは所定の値であり、r∈F k m は要素が互いに異なる所定のベクトルであり、d∈F v m ,x∈F k n は所定のベクトルであり、
    上記ベクトルrのシェア[r]及び上記ベクトルxのシェア[x]を用いて、上記ベクトルrと上記ベクトルxと上記ベクトルrと同じベクトルとを結合したベクトルk∈[F k ] 2m+n のシェア[k]を生成する複数の第一ベクトル結合部と、
    上記シェア[k]を用いて、上記ベクトルkを安定ソートする置換σのシェア[σ]を生成する複数の第一置換計算部と、
    上記ベクトルdのシェア[d]とuとを用いて、ベクトルdの各要素からuを減算したベクトルであるベクトルd'のシェア[d']を生成する複数の第一ベクトル生成部と、
    上記シェア[d']を用いて、上記ベクトルd'と要素数がnである0ベクトルと上記ベクトルd'の各要素の正負を反転させたベクトルであるベクトル-d'とを結合したベクトルv∈[F v ] 2m+n のシェア[v]を生成する複数の第二ベクトル結合部と、
    上記シェア[v]及び上記シェア[σ]を用いて、上記ベクトルvに上記置換σを適用したベクトルσ(v)のシェア[σ(v)]を生成する複数の第一置換適用部と、
    上記シェア[σ(v)]を用いて、各要素が、上記ベクトルσ(v)のその各要素に対応する要素を含むその各要素に対応する要素までの要素の和と上記uとの和であるベクトルσ(y)のシェア[σ(y)]を生成する複数の第二ベクトル生成部と、
    上記シェア[σ(y)]及び上記シェア[σ]を用いて、上記ベクトルσ(y)に上記置換σの逆置換σ -1 を適用したベクトルσ -1 (σ(y))のシェア[σ -1 (σ(y))]を生成する複数の第一逆置換適用部と、
    上記シェア[σ -1 (σ(y))]を用いて、上記ベクトルσ -1 (σ(y))のm+1番目からm+n番目の要素を抽出したベクトルyのシェア[y]を得る複数の第一ベクトル抽出部と、
    をそれぞれ含む複数の秘密計算装置の何れかである秘密計算装置。
  4. 請求項3の秘密計算装置の各部としてコンピュータを機能させるためのプログラム。
JP2020537439A 2018-08-13 2019-08-08 秘密強写像計算システム、これらの方法、秘密計算装置及びプログラム Active JP7067624B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018152411 2018-08-13
JP2018152411 2018-08-13
PCT/JP2019/031475 WO2020036125A1 (ja) 2018-08-13 2019-08-08 秘密強写像計算システム、これらの方法、秘密計算装置及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2020036125A1 JPWO2020036125A1 (ja) 2021-08-12
JP7067624B2 true JP7067624B2 (ja) 2022-05-16

Family

ID=69525560

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020537439A Active JP7067624B2 (ja) 2018-08-13 2019-08-08 秘密強写像計算システム、これらの方法、秘密計算装置及びプログラム

Country Status (6)

Country Link
US (1) US11886876B2 (ja)
EP (1) EP3839923B1 (ja)
JP (1) JP7067624B2 (ja)
CN (1) CN112567442B (ja)
AU (1) AU2019321329B2 (ja)
WO (1) WO2020036125A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013157652A (ja) 2012-01-26 2013-08-15 Nippon Telegr & Teleph Corp <Ntt> 秘密計算システム、暗号化装置、秘密計算装置及びその方法、プログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5297688B2 (ja) * 2008-05-09 2013-09-25 株式会社日立製作所 ベクトル秘匿型内積計算システム、ベクトル秘匿型内積計算方法及び暗号鍵共有システム
JP5486520B2 (ja) 2011-01-21 2014-05-07 日本電信電話株式会社 セキュア集合関数システム、秘密集合関数装置、セキュア集合関数処理方法、セキュア集合関数プログラム
CN104429019B (zh) * 2012-07-05 2017-06-20 日本电信电话株式会社 秘密分散系统、数据分散装置、分散数据变换装置以及秘密分散方法
JP6083234B2 (ja) * 2012-12-27 2017-02-22 富士通株式会社 暗号処理装置
US10074293B2 (en) * 2014-01-17 2018-09-11 Nippon Telegraph And Telephone Corporation Secret calculation method, secret calculation system, sorting device, and program
US10002547B2 (en) * 2014-01-17 2018-06-19 Nippon Telegraph And Telephone Corporation Secret calculation method, secret calculation system, random permutation device, and program
JP5860557B1 (ja) * 2015-02-06 2016-02-16 日本電信電話株式会社 秘密公開方法、秘密公開システム、秘密公開装置、およびプログラム
JP5872085B1 (ja) * 2015-03-18 2016-03-01 日本電信電話株式会社 分散値変換システム、分散値変換装置、分散値変換方法、およびプログラム
JP5957120B1 (ja) * 2015-05-12 2016-07-27 日本電信電話株式会社 秘密分散方法、秘密分散システム、分散装置、およびプログラム
JP5957126B1 (ja) * 2015-06-24 2016-07-27 日本電信電話株式会社 秘密計算装置、秘密計算方法、およびプログラム
AU2017338060B2 (en) 2016-09-27 2020-06-25 Nippon Telegraph And Telephone Corporation Secure equijoin system, secure equijoin device, secure equijoin method, and program
US11888973B2 (en) * 2018-08-13 2024-01-30 Nippon Telegraph And Telephone Corporation Secure joining system, method, secure computing apparatus and program

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013157652A (ja) 2012-01-26 2013-08-15 Nippon Telegr & Teleph Corp <Ntt> 秘密計算システム、暗号化装置、秘密計算装置及びその方法、プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
五十嵐大ほか,僕たちは一番大切なものに気づいていなかった,コンピュータセキュリティシンポジウム2018論文集,日本,一般社団法人情報処理学会,2018年10月15日,第2018巻,第2号,p.1221-1228,情報処理学会シンポジウムシリーズ
長谷川聡ほか,プライバシ保護ゲノム解析のための秘密計算フィッシャー正確検定,研究報告セキュリティ心理学とトラスト(SPT),日本,情報処理学会,2016年07月07日,第2016-SPT-19巻,第39号,1-8頁

Also Published As

Publication number Publication date
EP3839923A1 (en) 2021-06-23
EP3839923A4 (en) 2022-03-30
CN112567442B (zh) 2024-04-09
AU2019321329B2 (en) 2021-12-16
EP3839923B1 (en) 2023-11-22
WO2020036125A1 (ja) 2020-02-20
US20210182062A1 (en) 2021-06-17
CN112567442A (zh) 2021-03-26
US11886876B2 (en) 2024-01-30
JPWO2020036125A1 (ja) 2021-08-12
AU2019321329A1 (en) 2021-03-04

Similar Documents

Publication Publication Date Title
JP6989006B2 (ja) 秘密集約関数計算システム、秘密計算装置、秘密集約関数計算方法、およびプログラム
JP7067625B2 (ja) 秘密結合システム、この方法、秘密計算装置及びプログラム
CN109791741B (zh) 秘密等值连接系统、连接装置、连接方法、记录介质
JP6973633B2 (ja) 秘密集約最大値システム、秘密集約最小値システム、秘密計算装置、秘密集約最大値方法、秘密集約最小値方法、およびプログラム
WO2019208486A1 (ja) 秘密集約中央値システム、秘密計算装置、秘密集約中央値方法、およびプログラム
JP2020519968A (ja) ビット分解秘密計算装置、ビット結合秘密計算装置、方法およびプログラム
JP6585846B2 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
JP7067624B2 (ja) 秘密強写像計算システム、これらの方法、秘密計算装置及びプログラム
EP3246900B1 (en) Matrix and key generation device, matrix and key generation system, matrix coupling device, matrix and key generation method, and program
JP7067626B2 (ja) 秘密結合情報生成システム、秘密結合システム、これらの方法、秘密計算装置及びプログラム
JP7081663B2 (ja) 秘密結合システム、方法、秘密計算装置及びプログラム
JP6825119B2 (ja) 秘密読み込み装置、秘密書き込み装置、それらの方法、およびプログラム
JP7031732B2 (ja) 秘密表参照システム、方法、秘密計算装置及びプログラム
JP7147840B2 (ja) 秘密重複排除フィルタ生成システム、秘密重複排除システム、これらの方法、秘密計算装置及びプログラム
WO2022153383A1 (ja) 秘密関係代数演算システム、秘密計算装置、秘密関係代数演算方法、およびプログラム
CN114444707A (zh) 数据处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210208

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220309

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: 20220329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220411

R150 Certificate of patent or registration of utility model

Ref document number: 7067624

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150