(57)【要約】  秘密強写像計算システムは、複数の秘密計算装置を含む秘密結合システムであって、複数の秘密計算装置は、第一ベクトル結合部１１n、第一置換計算部１２n、第一ベクトル生成部１３n、第二ベクトル結合部１４n、第一置換適用部１５n、第二ベクトル生成部１６n、第一逆置換適用部１７n、第一ベクトル抽出部１８nを備えている。
2020036125.tif 000002
【特許請求の範囲】
【請求項１】
複数の秘密計算装置を含む秘密強写像計算システムであって、
Fk,Fvは任意の環であり、αを任意のベクトル又は置換として[α]はαが秘密分散されたシェアであり、m,nは１以上の所定の整数であり、uは所定の値であり、r∈Fkmは要素が互いに異なる所定のベクトルであり、d∈Fvm,x∈Fknは所定のベクトルであり、
上記複数の秘密計算装置は、
上記ベクトルrのシェア[r]及び上記ベクトルxのシェア[x]を用いて、上記ベクトルrと上記ベクトルxと上記ベクトルrと同じベクトルとを結合したベクトルk∈[Fk]2m+nのシェア[k]を生成する複数の第一ベクトル結合部と、
上記シェア[k]を用いて、上記ベクトルkを安定ソートする置換σのシェア[σ]を生成する複数の第一置換計算部と、
上記ベクトルdのシェア[d]とuとを用いて、ベクトルdの各要素からuを減算したベクトルであるベクトルd'のシェア[d']を生成する複数の第一ベクトル生成部と、
上記シェア[d']を用いて、上記ベクトルd'と要素数がnである０ベクトルと上記ベクトル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]を得る複数の第一ベクトル抽出部と、
を含む秘密強写像計算システム。
【請求項２】
Fk,Fvは任意の環であり、αを任意のベクトル又は置換として[α]はαが秘密分散されたシェアであり、m,nは１以上の所定の整数であり、uは所定の値であり、r∈Fkmは要素が互いに異なる所定のベクトルであり、d∈Fvm,x∈Fknは所定のベクトルであり、
複数の第一ベクトル結合部が、上記ベクトルrのシェア[r]及び上記ベクトルxのシェア[x]を用いて、上記ベクトルrと上記ベクトルxと上記ベクトルrと同じベクトルとを結合したベクトルk∈[Fk]2m+nのシェア[k]を生成する複数の第一ベクトル結合ステップと、
複数の第一置換計算部が、上記シェア[k]を用いて、上記ベクトルkを安定ソートする置換σのシェア[σ]を生成する複数の第一置換計算ステップと、
複数の第一ベクトル生成部が、上記ベクトルdのシェア[d]とuとを用いて、ベクトルdの各要素からuを減算したベクトルであるベクトルd'のシェア[d']を生成する複数の第一ベクトル生成ステップと、
複数の第二ベクトル結合部が、上記シェア[d']を用いて、上記ベクトルd'と要素数がnである０ベクトルと上記ベクトル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]を得る複数の第一ベクトル抽出ステップと、
を含む秘密強写像計算方法。
【請求項３】
請求項１の秘密強写像計算システムの秘密計算装置。
【請求項４】
請求項３の秘密計算装置の各部としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、秘密計算において写像の計算をする技術に関する。
【背景技術】
【０００２】
従来の写像の計算をする技術として、非特許文献１に記載された写像プロトコルが知られている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】濱田浩気、五十嵐大、千田 浩司、「秘匿計算上の一括写像アルゴリズム」、電子情報通信学会論文誌、Vol.J96-A、No.4、pp.157-165
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、従来の写像プロトコルは、定義域が区間([1, 3]→1, [4, 8]→5, [9, 10]→ 2など。定義域に漏れがない)となっており、異常値の検出をすることができなかった。【０００５】
この発明は、異常値を検出しつつ、写像の計算を行うことができる秘密強写像計算システム、これらの方法、秘密計算装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
この発明の一態様による秘密強写像計算システムは、複数の秘密計算装置を含む秘密結合計算システムであって、Fk,Fvは任意の環であり、αを任意のベクトル又は置換として[α]はαが秘密分散されたシェアであり、m,nは１以上の所定の整数であり、uは所定の値であり、r∈Fkmは要素が互いに異なる所定のベクトルであり、d∈Fvm,x∈Fknは所定のベクトルであり、複数の秘密計算装置は、ベクトルrのシェア[r]及びベクトルxのシェア[x]を用いて、ベクトルrとベクトルxとベクトルrと同じベクトルとを結合したベクトルk∈[Fk]2m+nのシェア[k]を生成する複数の第一ベクトル結合部と、シェア[k]を用いて、ベクトルkを安定ソートする置換σのシェア[σ]を生成する複数の第一置換計算部と、ベクトルdのシェア[d]とuとを用いて、ベクトルdの各要素からuを減算したベクトルであるベクトルd'のシェア[d']を生成する複数の第一ベクトル生成部と、シェア[d']を用いて、ベクトルd'と要素数がnである０ベクトルとベクトル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]を得る複数の第一ベクトル抽出部と、を備えている。
【発明の効果】
【０００７】
異常値を検出しつつ、写像の計算を行うことができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、秘密強写像計算システム、秘密結合システムの機能構成を例示する図である。
【図２】図２は、秘密強写像計算の秘密計算装置の機能構成を例示する図である。
【図３】図３は、秘密強写像計算方法の処理手続きを例示する図である。
【図４】図４は、左外部結合を行う秘密結合システムの秘密計算装置の機能構成を例示する図である。
【図５】図５は、左外部結合を行う秘密結合方法の処理手続きを例示する図である。
【図６】図６は、右左外部結合を行う秘密結合システムの秘密計算装置の機能構成を例示する図である。
【図７】図７は、右外部結合を行う秘密結合方法の処理手続きを例示する図である。
【図８】図８は、完全外部結合を行う秘密結合システムの秘密計算装置の機能構成を例示する図である。
【図９】図９は、完全外部結合を行う秘密結合方法の処理手続きを例示する図である。
【発明を実施するための形態】
【０００９】
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００１０】
[秘密強写像計算システム及び方法]
図１を参照して、実施形態の秘密強写像計算システムの構成例を説明する。秘密強写像計算システムは、N（≧2）台の秘密計算装置１1,…,１Nを含む。本形態では、秘密計算装置１1, …, １Nはそれぞれ通信網２へ接続されている。通信網２は、接続される各装置が相互に通信可能なように構成された回線交換方式もしくはパケット交換方式の通信網であり、例えばインターネットやLAN（Local Area Network）、WAN（Wide Area Network）などである。なお、各装置は必ずしも通信網２を介してオンラインで通信可能である必要はない。例えば、秘密計算装置１1, …, １Nへ入力する情報を磁気テープやUSBメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体から秘密計算装置１1, …,１Nへオフラインで入力するように構成してもよい。
【００１１】
図２を参照して、秘密強写像計算システムに含まれる秘密計算装置１n（n=1, …, N）の構成例を説明する。秘密強写像計算システムの秘密計算装置１nは、例えば、図２に示すように、第一ベクトル結合部１１n、第一置換計算部１２n、第一ベクトル生成部１３n、第二ベクトル結合部１４n、第一置換適用部１５n、第二ベクトル生成部１６n、第一逆置換適用部１７n、第一ベクトル抽出部１８nを備えている。
【００１２】
秘密計算装置１n（1≦n≦N）の各構成部が他の秘密計算装置１n'（n'=1, …, N、ただしn≠n'）の各構成部と協調しながら後述する各ステップの処理を行うことにより実施形態の秘密強写像計算方法が実現される。
【００１３】
なお、各ステップの処理は、秘密計算により行われる。すなわち、秘密計算装置１nは、シェアを復元することなく、言い換えればシェアの中身を知ることなく、各ステップの処理を行う。
【００１４】
秘密計算装置１nは、例えば、中央演算処理装置（CPU: Central Processing Unit）、主記憶装置（RAM: Random Access Memory）などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。秘密計算装置１nは、例えば、中央演算処理装置の制御のもとで各処理を実行する。秘密計算装置１nに入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。秘密計算装置１nの各構成部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。
【００１５】
以下の説明において、αを任意のベクトル又は任意の置換として[α]はαが秘密分散されたシェアであるとする。
【００１６】
図３を参照して、実施形態の秘密結合システムが実行する秘密強写像計算方法の処理手続きを説明する。
【００１７】
秘密強写像計算システム及び方法は、定義域に対応するベクトルr∈Fkm、値域に対応するベクトルd∈Fvm及び異常値uにより定義される写像を、入力に対応するベクトルxに適用したときの出力となるベクトルyを計算するものである。m,nは１以上の所定の整数であり、異常値uは所定の値であり、r∈Fkmは要素が互いに異なる所定のベクトルであり、d∈Fvm,x∈Fknは所定のベクトルである。
【００１８】
ベクトル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)というベクトルが得られる。
【００２０】
＜ステップＳ１＞
第一ベクトル結合部１１1,…,１１Nに、ベクトルrのシェア[r]及びベクトルxのシェア[x]が入力される。
【００２１】
第一ベクトル結合部１１1,…,１１Nは、ベクトルrとベクトルxとベクトルrと同じベクトルとを結合したベクトルk∈[Fk]2m+nのシェア[k]を生成する（ステップＳ１）。
【００２２】
生成されたシェア[k]は、第一置換計算部１２1,…,１２Nに出力される。
【００２３】
例えば、ベクトルr=(1,3,2)であり、ベクトルx=(1,0,2,5,3)であるとする。この場合、ベクトルk=(1,3,2,1,0,2,5,3,1,3,2)となる。
【００２４】
＜ステップＳ２＞
第一置換計算部１２1,…,１２Nに、シェア[k]が入力される。
【００２５】
第一置換計算部１２1,…,１２Nは、シェア[k]を用いて、ベクトルkを安定ソートする置換σのシェア[σ]を生成する（ステップＳ２）。
【００２６】
シェア[σ]は、第一ベクトル生成部１３1,…,１３Nに出力される。
【００２７】
例えば、ベクトルk=(1,3,2,1,0,2,5,3,1,3,2)である場合には、置換σ=(4,0,3,8,2,5,10,1,7,9,6)となる。
【００２８】
安定ソートを行う置換σのシェア[σ]の生成は、例えば参考文献１の手法により実現することができる。
〔参考文献１〕五十嵐大、濱田浩気、菊池亮、千田浩司、「超高速秘密計算ソートの設計と実装：秘密計算がスクリプト言語に並ぶ日」、CSS2017、2017
【００２９】
＜ステップＳ３＞
第一ベクトル生成部１３1,…,１３Nに、ベクトルdのシェア[d]とuとが入力される。
【００３０】
第一ベクトル生成部１３1,…,１３Nは、シェア[d]とuとを用いて、ベクトルdの各要素からuを減算したベクトルであるベクトルd'のシェア[d']を生成する（ステップＳ３）。
【００３１】
シェア[d']は、第二ベクトル結合部１４1,…,１４Nに出力される。
【００３２】
例えば、ベクトルd=(2,5,1)であり、u=-1である場合には、ベクトルd'=(3,6,2)となる。
【００３３】
＜ステップＳ４＞
第二ベクトル結合部１４1,…,１４Nに、シェア[d']が入力される。
【００３４】
第二ベクトル結合部１４1,…,１４Nは、シェア[d']を用いて、ベクトルd'と要素数がnである０ベクトルとベクトルd'の各要素の正負を反転させたベクトルであるベクトル-d'とを結合したベクトルv∈[Fv]2m+nのシェア[v]を生成する（ステップＳ４）。
【００３５】
シェア[v]は、第一置換適用部１５1,…,１５Nに出力される。
【００３６】
例えば、ベクトルd'=(3,6,2)であり、n=5である場合には、ベクトルv=(3,6,2,0,0,0,0,0,-3,-6,-2)となる。
【００３７】
＜ステップＳ５＞
第一置換適用部１５1,…,１５Nに、シェア[v]及びシェア[σ]が入力される。
【００３８】
第一置換適用部１５1,…,１５Nは、シェア[v]及びシェア[σ]を用いて、ベクトルvに置換σを適用したベクトルσ(v)のシェア[σ(v)]を生成する（ステップＳ５）。
【００３９】
シェア[σ(v)]は、第二ベクトル生成部１６1,…,１６Nに出力される。
【００４０】
例えば、置換σ=(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)となる。
【００４１】
＜ステップＳ６＞
第二ベクトル生成部１６1,…,１６Nに、シェア[σ(v)]が入力される。
【００４２】
第二ベクトル生成部１６1,…,１６Nは、シェア[σ(v)]を用いて、各要素が、ベクトルσ(v)のその各要素に対応する要素を含むその各要素に対応する要素までの要素の和とuとの和であるベクトルσ(y)のシェア[σ(y)]を生成する（ステップＳ６）。言い換えれば、第二ベクトル生成部１６1,…,１６Nは、初期値をuとしたベクトルσ(v)のprefix-sumを計算しσ(y)とする。σ(v)のi番目の要素をσ(v)iとし、σ(y)のi番目の要素をσ(y)iとすると、σ(y)i=u+Σj=1iσ(v)jとなる。
【００４３】
シェア[σ(y)]は、第一逆置換適用部１７1,…,１７Nに出力される。
【００４４】
例えば、ベクトルσ(v)=(0,3,0,-3,2,0,-2,6,0,-6,0)である場合には、ベクトルσ(y)=(-1,2,2,-1,1,1,-1,5,5,-1,-1)となる。
【００４５】
＜ステップＳ７＞
第一逆置換適用部１７1,…,１７Nに、シェア[σ(y)]及びシェア[σ]が入力される。
【００４６】
第一逆置換適用部１７1,…,１７Nは、シェア[σ(y)]及びシェア[σ]を用いて、ベクトルσ(y)に置換σの逆置換σ-1を適用したベクトルσ-1(σ(y))のシェア[σ-1(σ(y))]を生成する（ステップＳ７）。
【００４７】
シェア[σ-1(σ(y))]は、第一ベクトル抽出部１８1,…,１８Nに出力される。
【００４８】
例えば、置換σ=(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)となる。
【００４９】
＜ステップＳ８＞
第一ベクトル抽出部１８1,…,１８Nに、シェア[σ-1(σ(y))]が入力される。
【００５０】
第一ベクトル抽出部１８1,…,１８Nは、シェア[σ-1(σ(y))]を用いて、ベクトルσ-1(σ(y))のm+1番目からm+n番目の要素を抽出したベクトルyのシェア[y]を得る（ステップＳ８）。
【００５１】
例えば、ベクトルσ-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」、３番目の要素「2」、５番目の要素「3」は、写像により、それぞれベクトルy=(2,-1,1,-1,5)の１番目の要素「2」、３番目の要素「1」、５番目の要素「5」に写されている。また、ベクトルx=(1,0,2,5,3)の２番目の要素「0」、４番目の要素「5」は、定義域に対応するベクトルrの要素にない値であるため、写像により、異常値である「-1」に写されている。
【００５３】
このようにして、秘密強写像計算システム及び方法により、異常値を検出しつつ、写像の計算を行うことができる。
【００５４】
以下、秘密強写像計算システム及び方法を用いた秘密結合システム及び方法の実施形態の説明をする。
【００５５】
[左外部結合を行う秘密結合システム及び方法]
図１を参照して、実施形態の秘密結合システムの構成例を説明する。この秘密結合システム及び方法は、いわゆる左外部結合を行うものである。左外部結合については後述する。
【００５６】
秘密結合システムは、秘密強写像計算システムと同様に、N（≧2）台の秘密計算装置１1,…,１Nを含む。本形態では、秘密計算装置１1, …, １Nはそれぞれ通信網２へ接続されている。通信網２は、接続される各装置が相互に通信可能なように構成された回線交換方式もしくはパケット交換方式の通信網であり、例えばインターネットやLAN（Local Area Network）、WAN（Wide Area Network）などである。なお、各装置は必ずしも通信網２を介してオンラインで通信可能である必要はない。例えば、秘密計算装置１1, …, １Nへ入力する情報を磁気テープやUSBメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体から秘密計算装置１1, …,１Nへオフラインで入力するように構成してもよい。
【００５７】
図４を参照して、秘密結合システムに含まれる秘密計算装置１n（n=1, …, N）の構成例を説明する。秘密結合システムの秘密計算装置１nは、例えば、図４に示すように、第一ベクトル結合部１１n、第一置換計算部１２n、第一ベクトル生成部１３n、第二ベクトル結合部１４n、第一置換適用部１５n、第二ベクトル生成部１６n、第一逆置換適用部１７n、第一ベクトル抽出部１８n、第二置換適用部１９n、第三ベクトル抽出部１１０n、第二逆置換適用部１１１n、第二ベクトル抽出部１１２n、変形第二テーブル生成部１１３n、第三置換適用部１１４n、第四ベクトル生成部１１５n、シフト部１１６n、第三逆置換適用部１１７n、ビット反転部１１８n、第三ベクトル抽出部１１９n、変形第一テーブル生成部１２０n、第一テーブル結合部１２１n、第一テーブル整形部１２２nを備えている。
【００５８】
図４において破線で囲った、秘密計算装置１nの中の第一ベクトル結合部１１n、第一置換計算部１２n、第一ベクトル生成部１３n、第二ベクトル結合部１４n、第一置換適用部１５n、第二ベクトル生成部１６n、第一逆置換適用部１７n、第一ベクトル抽出部１８nが秘密強写像計算システムに対応する部分であると言える。
【００５９】
秘密計算装置１n（1≦n≦N）の各構成部が他の秘密計算装置１n'（n'=1, …, N、ただしn≠n'）の各構成部と協調しながら後述する各ステップの処理を行うことにより実施形態の秘密結合方法が実現される。
【００６０】
なお、各ステップの処理は、秘密計算により行われる。すなわち、秘密計算装置１nは、シェアを復元することなく、言い換えればシェアの中身を知ることなく、各ステップの処理を行う。
【００６１】
秘密計算装置１nは、例えば、中央演算処理装置（CPU: Central Processing Unit）、主記憶装置（RAM: Random Access Memory）などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。秘密計算装置１nは、例えば、中央演算処理装置の制御のもとで各処理を実行する。秘密計算装置１nに入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。秘密計算装置１nの各構成部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。
【００６２】
図５を参照して、実施形態の秘密結合システムが実行する秘密結合方法の処理手続きを説明する。
【００６３】
以下に説明する秘密結合システムは、第一テーブルと第二テーブルを左外部結合する。言い換えれば、以下に説明する秘密結合システムは、秘匿性を保ちつつ、第一テーブル及び第二テーブルに共通するレコードと、第一テーブルのみに存在するレコードとを結合する。
【００６４】
m,n,L1,L2は、１以上の整数であるとする。m,n,L1,L2は、同じ値であってもよいし、異なる値であってもよい。
【００６５】
第一テーブルは、m個のレコードを有している。m個のレコードのそれぞれは、１個のキーと、L1個の属性の属性値とを有している。k1∈Fkmは第一テーブルのキーのベクトルであるとする。第一テーブルの中には、重複するキーはないとする。
【００６６】
第二テーブルは、n個のレコードを有している。n個のレコードのそれぞれは、１個のキーと、L2個の属性の属性値とを有している。k2∈Fknは第二テーブルのキーのベクトルであるとする。第二テーブルの中には、重複するキーがあってもよいとする。
【００６７】
例えば、第一テーブルは、レコード数が３であり、キーのベクトルk1=(3,5,9)と、１個の属性v1の属性値のベクトルv1=(100,19,85)とから構成されているとする。
【００６８】
また、第二テーブルは、レコード数が４であり、キーのベクトルk2=(3,7,9,9)と、１個の属性v2の属性値のベクトルv2=(水,ミックスオレ,薬,水)とから構成されているとする。
【００６９】
第一テーブルに複数の属性の属性値が含まれている場合には、v1は、複数の属性の属性値を連結したベクトルであってもよい。例えば、第一テーブルは、レコード数が２であり、２個の属性の属性値を含んでおり、１個目の属性の属性値のベクトルはv1,1=(29,169)であり、２個目の属性の属性値のベクトルはv1,1=(35,175)であるとする。この場合、v1は、これらの２個の属性の属性値を連結したベクトルv1=((29,35),(169,175))であってもよい。
【００７０】
同様に、第二テーブルに複数の属性の属性値が含まれている場合には、v2は、複数の属性の属性値を連結したベクトルであってもよい。
【００７１】
一般に環を要素とするベクトルはやはり環であるため、あるレコードに含まれる各属性の値を並べたデータは、ベクトル、つまり環とみなすことができる。
【００７２】
まず、上記説明した秘密強写像計算システム及び方法の＜ステップＳ１＞から＜ステップＳ８＞の処理により、定義域に対応するベクトルr=k1とし、値域に対応するベクトルd=v1とし、入力に対応するベクトルx=k2としたときの、r,d,uにより定義される写像を、xに適用したときの出力となるベクトルyを計算する。これにより、第二テーブルの各レコードに対応する第一テーブルの属性v1の属性値を得ることができる。なお、第二テーブルのレコードであって、第一テーブルに存在しないキーに対応するレコードに対応する属性値は、異常値uとなる。
【００７３】
＜ステップＳ１＞から＜ステップＳ８＞の処理は、[秘密強写像計算システム及び方法]の欄で説明した＜ステップＳ１＞から＜ステップＳ８＞の処理の処理と同様であるため、ここでは重複説明を省略する。
【００７４】
例えば、ベクトル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)の２番目の要素「7」は、ベクトルr=k1=(3,5,9)の要素の中に存在しないため、ベクトルy=(100,-1,85,85)の２番目の要素は異常値u=-1となっている。このように、第二テーブルのレコードであって、第一テーブルに存在しないキーに対応するレコードに対応する属性値が、異常値uとなるようにベクトルyが計算される。
【００７５】
＜ステップＳ９＞
第二置換適用部１９1,…,１９Nに、各要素が１であるm個の要素と、各要素が０であるn個の要素と、各要素が−１であるm個の要素とを結合したベクトルg∈[F]2m+nのシェア[g]及びシェア[σ]が入力される。ここで、Fは任意の環である。
【００７６】
第二置換適用部１９1,…,１９Nは、各要素が１であるm個の要素と、各要素が０であるn個の要素と、各要素が−１であるm個の要素とを結合したベクトルg∈[F]2m+nのシェア[g]及びシェア[σ]を用いて、ベクトルgに置換σを適用したベクトルσ(g)のシェア[σ(g)]を生成する（ステップＳ９）。
【００７７】
シェア[σ(g)]は、第三ベクトル生成部１１０1,…,１１０Nに出力される。
【００７８】
例えば、例えば、m=3,n=4であり、置換σが以下の式（１）により定義されるσである場合には、g=(1,1,1,0,0,0,0,-1,-1,-1)となり、σ(g)=(1,0,-1,1,-1,0,1,0,0,-1)となる。
【００７９】
【数１】
2020036125.tif 000003
【００８０】
ここで、置換σの各列(i,j)Tは、置換が適用されるベクトルのi番目の要素をj番目に移動することを意味する。
【００８１】
＜ステップＳ１０＞
第三ベクトル生成部１１０1,…,１１０Nに、シェア[σ(g)]が入力される。
【００８２】
第三ベクトル生成部１１０1,…,１１０Nは、シェア[σ(g)]を用いて、各要素が、ベクトルσ(g)のその各要素に対応する要素を含むその各要素に対応する要素までの要素の和であるベクトルσ(g')のシェア[σ(g')]を生成する（ステップＳ１０）。言い換えれば、第三ベクトル生成部１１０1,…,１１０Nは、σ(g)のprefix-sumを計算しσ(g')とする。σ(g)のi番目の要素をσ(g)iとし、σ(g')のi番目の要素をσ(g')iとすると、σ(g')i=Σj=1iσ(g)jとなる。
【００８３】
シェア[σ(g')]は、第二逆置換適用部１１１1,…,１１１Nに出力される。
【００８４】
例えば、σ(g)=(1,0,-1,1,-1,0,1,0,0,-1)である場合には、σ(g')=(1,1,0,1,0,0,1,1,1,0)となる。
【００８５】
＜ステップＳ１１＞
第二逆置換適用部１１１1,…,１１１Nに、シェア[σ(g')]及びシェア[g']が入力される。
【００８６】
第二逆置換適用部１１１1,…,１１１Nは、シェア[σ(g')]及びシェア[g']を用いて、ベクトルσ(g')に置換σの逆置換σ-1を適用したベクトルg'のシェア[g']を生成する（ステップＳ１１）。
【００８７】
シェア[g']は、第二ベクトル抽出部１１２1,…,１１２Nに出力される。
【００８８】
例えば、σ(g')=(1,1,0,1,0,0,1,1,1,0)である場合には、g'=(1,1,1,1,1,0,1,1,0,0,0)となる。
【００８９】
＜ステップＳ１２＞
第二ベクトル抽出部１１２1,…,１１２Nに、シェア[g']が入力される。
【００９０】
第二ベクトル抽出部１１２1,…,１１２Nは、シェア[g']を用いて、ベクトルg'のm+1番目からm+n番目の要素を抜き出したベクトルf1'のシェア[f1']を生成する（ステップＳ１２）。
【００９１】
シェア[f1']は、変形第二テーブル生成部１１３1,…,１１３Nに出力される。
【００９２】
例えば、m=3,n=4であり、g'=(1,1,1,1,0,1,1,0,0,0)である場合には、f1'=(1,0,1,1)となる。
【００９３】
＜ステップＳ１３＞
変形第二テーブル生成部１１３1,…,１１３Nに、シェア[f1']及びシェア[y]が入力される。
【００９４】
変形第二テーブル生成部１１３1,…,１１３Nは、シェア[f1']及びシェア[y]を用いて、ベクトルf1'と、i=1,…,nとして、f1'i=0である場合には、ベクトルf1'と、第二テーブルの属性のi番目の要素をuv2としたテーブルと、ベクトルyとを結合した変形第二テーブルを生成する（ステップＳ１３）。uv2は、所定の値である。
【００９５】
変形第二テーブルは、第一テーブル結合部１２１1,…,１２１Nに出力される。
【００９６】
例えば、第二テーブルが、キーのベクトルk2=(3,7,9,9)と、１個の属性v2の属性値のベクトルv2=(水,ミックスオレ,薬,水)とから構成されており、f1'=(1,0,1,1)であり、ベクトル(100,-1,85,85)である場合には、変形第二テーブルは、以下に示すテーブルとなる。以下の変形第二テーブルでは、i=1,…,nとして、f1'i=0である場合には、第二テーブルのキーのi番目の要素をu=-1としている。
【００９７】
【数２】
2020036125.tif 000004
【００９８】
＜ステップＳ１４＞
第三置換適用部１１４1,…,１１４Nに、各要素が１であるm個の要素と、各要素が０であるn個の要素と、各要素が−１であるm個の要素とを結合したベクトルe∈[F]2m+nのシェア[e]及びシェア[σ]が入力される。
【００９９】
第三置換適用部１１４1,…,１１４Nは、ベクトルe∈[F]2m+nのシェア[e]及びシェア[σ]を用いて、ベクトルeに置換σを適用したベクトルσ(e)のシェア[σ(e)]を生成する（ステップＳ１４）。
【０１００】
シェア[σ(e)]は、第四ベクトル生成部１１５1,…,１１５Nに出力される。
【０１０１】
例えば、例えば、m=3,n=4であり、置換σが上記の式（１）により定義されるσである場合には、g=(1,1,1,0,0,0,0,-1,-1,-1)となり、σ(g)=(1,0,-1,1,-1,0,1,0,0,-1)となる。
【０１０２】
＜ステップＳ１５＞
第四ベクトル生成部１１５1,…,１１５Nに、シェア[σ(e)]が入力される。
【０１０３】
第四ベクトル生成部１１５1,…,１１５Nは、シェア[σ(e)]を用いて、各要素が、ベクトルσ(e)のその各要素に対応する要素を含むその各要素に対応する要素までの要素の和であるベクトルσ(e')のシェア[σ(e')]を生成する（ステップＳ１５）。言い換えれば、第四ベクトル生成部１１５1,…,１１５Nは、σ(e)のprefix-sumを計算しσ(e')とする。
【０１０４】
シェア[σ(e')]は、シフト部１１６1,…,１１６Nに出力される。
【０１０５】
例えば、σ(e)=(1,0,-1,1,-1,0,1,0,0,-1)である場合には、σ(e')=(1,1,0,1,0,0,1,1,1,0)となる。
【０１０６】
＜ステップＳ１６＞
シフト部１１６1,…,１１６Nに、シェア[σ(e')]が入力される。
【０１０７】
シフト部１１６1,…,１１６Nは、シェア[σ(e')]を用いて、ベクトルσ(e)の各要素を１個ずつシフトさせたベクトルσ(e'')のシェア[σ(e'')]を生成する（ステップＳ１６）。なお、ベクトルσ(e)の各要素を、前方向に（左に）１個ずつシフトさせた場合には、ベクトルσ(e'')の一番最後の要素（一番右の要素）は例えば0とする。同様に、ベクトルσ(e)の各要素を、後ろ方向に（右に）１個ずつシフトさせた場合には、ベクトルσ(e'')の一番前の要素（一番左の要素）は例えば0とする。
【０１０８】
シェア[σ(e'')]は、第三逆置換適用部１１７1,…,１１７Nに出力される。
【０１０９】
例えば、σ(e')=(1,1,0,1,0,0,1,1,1,0)であり、前方向に（左に）１個ずつシフトさせる場合には、ベクトルσ(e'')=(1,0,1,0,0,1,1,1,0,0)となる。
【０１１０】
＜ステップＳ１７＞
第三逆置換適用部１１７1,…,１１７Nに、シェア[σ(e'')]及びシェア[σ]が入力される。
【０１１１】
第三逆置換適用部１１７1,…,１１７Nは、シェア[σ(e'')]及びシェア[σ]を用いて、ベクトルσ(e'')に置換σの逆置換σ-1を適用したベクトルe''のシェア[e'']を生成する（ステップＳ１７）。
【０１１２】
シェア[e'']は、ビット反転部１１８1,…,１１８Nに出力される。
【０１１３】
例えば、ベクトルσ(e'')=(1,0,1,0,0,1,1,1,0,0)であり、置換σが上記の式（１）により定義されるσである場合には、ベクトルe''=(1,0,1,0,1,1,0,1,0,0)となる。
【０１１４】
＜ステップＳ１８＞
ビット反転部１１８1,…,１１８Nに、シェア[e'']が入力される。
【０１１５】
ビット反転部１１８1,…,１１８Nは、シェア[e'']を用いて、ベクトルe''の要素の０，１を反転させたベクトルfのシェア[f]を生成する（ステップＳ１８）。
【０１１６】
シェア[f]は、第三ベクトル抽出部１１９1,…,１１９Nに出力される。
【０１１７】
例えば、ベクトルe''=(1,0,1,0,1,1,0,1,0,0)である場合には、ベクトルf=(0,1,0,1,0,0,1,0,1,1)となる。
【０１１８】
＜ステップＳ１９＞
第三ベクトル抽出部１１９1,…,１１９Nに、シェア[f]が入力される。
【０１１９】
第三ベクトル抽出部１１９1,…,１１９Nは、シェア[f]を用いて、ベクトルfの左からm個の要素を抜き出したベクトルf'のシェア[f']を生成する（ステップＳ１９）。
【０１２０】
シェア[f']は、変形第一テーブル生成部１２０1,…,１２０Nに出力される。
【０１２１】
例えば、ベクトルf=(0,1,0,1,0,0,1,0,1,1)である場合には、ベクトルf'=(0,1,0)となる。
【０１２２】
ベクトルf'は、第一テーブルのみにあるレコードの位置を表す。例えば、ベクトルf'=(0,1,0)は、第一テーブルの２個目のレコードが第一テーブルのみにあり、第二テーブルにないことを表す。
【０１２３】
＜ステップＳ２０＞
変形第一テーブル生成部１２０1,…,１２０Nに、シェア[f']、シェア[r]及びシェア[d]が入力される。
【０１２４】
変形第一テーブル生成部１２０1,…,１２０Nは、ベクトルf'のi番目の要素をf'iとし、ベクトルrのi番目の要素をriとし、uk,uv1を所定の値として、シェア[f']、シェア[r]及びシェア[d]を用いて、ベクトルf'と、i=1,…,mとして、f'i=0である場合には、第一テーブルのキーのi番目の要素をukとし、ベクトルf'と、第一テーブルの属性のi番目の要素をuv1としたテーブルと、第二テーブルの属性に対応するベクトルとしてを要素とするベクトルとを結合した変形第一テーブルを生成する（ステップＳ２０）。
【０１２５】
変形第一テーブルは、第一テーブル結合部１２１1,…,１２１Nに出力される。
【０１２６】
例えば、uk,uv1=-1であり、ベクトルf'=(0,1,0)であり、第一テーブルは、レコード数が３であり、キーのベクトルk1=(3,5,9)と、１個の属性v1の属性値のベクトルv1=(100,19,85)とから構成されており、r=k1,d=v1である場合には、変形第一テーブルは以下のテーブルとなる。
【０１２７】
【数３】
2020036125.tif 000005
【０１２８】
＜ステップＳ２１＞
第一テーブル結合部１２１1,…,１２１Nに、変形第二テーブルと変形第一テーブルとが入力される。
【０１２９】
第一テーブル結合部１２１1,…,１２１Nは、変形第二テーブルと変形第一テーブルとを結合した結合テーブルを生成する（ステップＳ２１）。
【０１３０】
例えば、変形第二テーブルが上記（Ａ）に示したものであり、変形第一テーブルが上記（Ｂ）に示したものである場合には、結合テーブルは以下に示すテーブルとなる。なお、以下に示す結合テーブルでは、フラグのベクトルf1'とf'とを結合したベクトルをf''としている。
【０１３１】
【数４】
2020036125.tif 000006
【０１３２】
＜ステップＳ２２＞
第一テーブル整形部１２２1,…,１２２Nに、シェア[f1']及び[f']が入力される。
【０１３３】
第一テーブル整形部１２２1,…,１２２Nは、結合テーブル、シェア[f1']及び[f']を用いて、結合テーブルからベクトルf1'及びベクトルf'の要素（言い換えれば、ベクトルf1'とベクトルf'とを結合したベクトルf''の要素）が1のレコードを抜き出した整形後結合テーブルを生成する（ステップＳ２２）。
【０１３４】
例えば、結合テーブルが上記（Ｃ）の結合テーブルである場合には、整形後結合テーブルは、以下のテーブルとなる。
【０１３５】
【数５】
2020036125.tif 000007
【０１３６】
なお、第一テーブル整形部１２２1,…,１２２Nは、ベクトルf1'とベクトルf'とを結合したベクトルf''でソートした後に、ベクトルf''の要素が１のレコードを抜き出すことにより、整形後結合テーブルを生成してもよい。この場合、ベクトルf''のシェア[f'']は公開されてもよい。
【０１３７】
この整形後結合テーブルは、第一テーブルと第二テーブルとを左外部結合したテーブルとなっている。
【０１３８】
[右外部結合を行う秘密結合システム及び方法]
図１を参照して、実施形態の秘密結合システムの構成例を説明する。この秘密結合システム及び方法は、いわゆる右外部結合を行うものである。言い換えれば、この秘密結合システムは、秘匿性を保ちつつ、第一テーブル及び第二テーブルに共通するレコードと、第二テーブルのみに存在するレコードとを結合する。
【０１３９】
右外部結合を行う秘密結合システムは、第二置換適用部１９n、第三ベクトル抽出部１１０n、第二逆置換適用部１１１n、第二ベクトル抽出部１１２n、変形第二テーブル生成部１１３n、第三置換適用部１１４n、第四ベクトル生成部１１５n、シフト部１１６n、第三逆置換適用部１１７n、ビット反転部１１８n、第三ベクトル抽出部１１９n、変形第一テーブル生成部１２０n、第一テーブル結合部１２１n、第一テーブル整形部１２２nを備えていない代わりに、変形第二テーブル生成部１２３nを備えている点を除けば、左外部結合を行う秘密結合システムと同様である。
【０１４０】
右外部結合を行う秘密結合方法は、ステップＳ９からステップＳ２２の処理を行わない代わりに、ステップＳ２３の処理を行う点を除けば、左外部結合を行う秘密結合方法と同様である。
【０１４１】
以下では、左外部結合を行う秘密結合システム及び方法と異なる部分について説明する。左外部結合を行う秘密結合システム及び方法と同じ部分については重複説明を省略する。
【０１４２】
秘密結合システムの秘密計算装置１nは、例えば、図６に示すように、第一ベクトル結合部１１n、第一置換計算部１２n、第一ベクトル生成部１３n、第二ベクトル結合部１４n、第一置換適用部１５n、第二ベクトル生成部１６n、第一逆置換適用部１７n、第一ベクトル抽出部１８n、変形第二テーブル生成部１２３nを備えている。
【０１４３】
図６において破線で囲った、秘密計算装置１nの中の第一ベクトル結合部１１n、第一置換計算部１２n、第一ベクトル生成部１３n、第二ベクトル結合部１４n、第一置換適用部１５n、第二ベクトル生成部１６n、第一逆置換適用部１７n、第一ベクトル抽出部１８nが秘密強写像計算システムに対応する部分であると言える。
【０１４４】
図７を参照して、実施形態の秘密結合システムが実行する秘密結合方法の処理手続きを説明する。
【０１４５】
＜ステップＳ１＞から＜ステップＳ８＞の処理は、[秘密強写像計算システム及び方法]の欄で説明した＜ステップＳ１＞から＜ステップＳ８＞の処理と同様であるため、ここでは重複説明を省略する。
【０１４６】
例えば、ベクトル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)の２番目の要素「7」は、ベクトルr=k1=(3,5,9)の要素の中に存在しないため、ベクトルy=(100,-1,85,85)の２番目の要素は異常値u=-1となっている。このように、第二テーブルのレコードであって、第一テーブルに存在しないキーに対応するレコードに対応する属性値が、異常値uとなるようにベクトルyが計算される。
【０１４７】
＜ステップＳ２３＞
変形第二テーブル生成部１２３1,…,１２２Nに、シェア[y]が入力される。
【０１４８】
変形第二テーブル生成部１２３1,…,１２２Nは、シェア[y]を用いて、第二テーブルと、ベクトルyとを結合した変形第二テーブルを生成する（ステップＳ２３）。
【０１４９】
例えば、第二テーブルが、レコード数が４であり、キーのベクトルk2=(3,7,9,9)と、１個の属性v2の属性値のベクトルv2=(水,ミックスオレ,薬,水)とから構成されており、ベクトルy=(100,-1,85,85)である場合には、変形第二テーブルは、以下に示すテーブルとなる。
【０１５０】
【数６】
2020036125.tif 000008
【０１５１】
この変形第二テーブルは、第一テーブルと第二テーブルとを右部結合したテーブルとなっている。
【０１５２】
[完全外部結合を行う秘密結合システム及び方法]
図８を参照して、実施形態の秘密結合システムの構成例を説明する。この秘密結合システム及び方法は、いわゆる完全外部結合を行うものである。言い換えれば、この秘密結合システムは、秘匿性を保ちつつ、第一テーブル及び第二テーブルに共通するレコードと、第一テーブルのみに存在するレコードと、第二テーブルのみに存在するレコードとを結合する。
【０１５３】
完全外部結合を行う秘密結合システムは、第一テーブル結合部１２１n、第一テーブル整形部１２２nを備えていない代わりに、第二テーブル整形部１２４n、第二テーブル結合部１２５nを備えている点を除けば、左外部結合を行う秘密結合システム、右外部結合を行う秘密結合システムと同様である。
【０１５４】
完全外部結合を行う秘密結合方法は、ステップＳ２１からステップＳ２２の処理を行わない代わりに、ステップＳ２４及びステップＳ２５の処理を行う点を除けば、左外部結合を行う秘密結合方法、右外部結合を行う秘密結合方法と同様である。
【０１５５】
以下では、左外部結合を行う秘密結合システム及び方法、右外部結合を行う秘密結合システム及び方法と異なる部分について説明する。左外部結合を行う秘密結合システム及び方法、右外部結合を行う秘密結合システム及び方法と同じ部分については重複説明を省略する。
【０１５６】
秘密結合システムの秘密計算装置１nは、例えば、図８に示すように、第一ベクトル結合部１１n、第一置換計算部１２n、第一ベクトル生成部１３n、第二ベクトル結合部１４n、第一置換適用部１５n、第二ベクトル生成部１６n、第一逆置換適用部１７n、第一ベクトル抽出部１８n、第二置換適用部１９n、第三ベクトル抽出部１１０n、第二逆置換適用部１１１n、第二ベクトル抽出部１１２n、変形第二テーブル生成部１１３n、第三置換適用部１１４n、第四ベクトル生成部１１５n、シフト部１１６n、第三逆置換適用部１１７n、ビット反転部１１８n、第三ベクトル抽出部１１９n、変形第一テーブル生成部１２０n、第一テーブル結合部１２１n、第一テーブル整形部１２２n、変形第二テーブル生成部１２３n、第二テーブル整形部１２４n、第二テーブル結合部１２５nを備えている。
【０１５７】
図８において破線で囲った、秘密計算装置１nの中の第一ベクトル結合部１１n、第一置換計算部１２n、第一ベクトル生成部１３n、第二ベクトル結合部１４n、第一置換適用部１５n、第二ベクトル生成部１６n、第一逆置換適用部１７n、第一ベクトル抽出部１８nが秘密強写像計算システムに対応する部分であると言える。
【０１５８】
図９を参照して、実施形態の秘密結合システムが実行する秘密結合方法の処理手続きを説明する。
【０１５９】
まず、＜ステップＳ１＞から＜ステップＳ８＞の処理が行われる。＜ステップＳ１＞から＜ステップＳ８＞の処理は、[秘密強写像計算システム及び方法]の欄で説明した＜ステップＳ１＞から＜ステップＳ８＞の処理と同様であるため、ここでは重複説明を省略する。
【０１６０】
例えば、ベクトル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)の２番目の要素「7」は、ベクトルr=k1=(3,5,9)の要素の中に存在しないため、ベクトルy=(100,-1,85,85)の２番目の要素は異常値u=-1となっている。このように、第二テーブルのレコードであって、第一テーブルに存在しないキーに対応するレコードに対応する属性値が、異常値uとなるようにベクトルyが計算される。
【０１６１】
次に、＜ステップＳ２３＞の処理が行われる。＜ステップＳ２３＞の処理は、[右外部結合を行う秘密結合システム及び方法]の欄で説明した＜ステップＳ２３＞の処理と同様であるため、ここでは重複説明を省略する。
【０１６２】
例えば、第二テーブルが、レコード数が４であり、キーのベクトルk2=(3,7,9,9)と、１個の属性v2の属性値のベクトルv2=(水,ミックスオレ,薬,水)とから構成されており、ベクトルy=(100,-1,85,85)である場合には、変形第二テーブルは、以下に示すテーブルとなる。
【０１６３】
【数７】
2020036125.tif 000009
【０１６４】
次に、＜ステップＳ９＞から＜ステップＳ２０＞の処理が行われる。＜ステップＳ９＞から＜ステップＳ２０＞の処理は、[左外部結合を行う秘密結合システム及び方法]の欄で説明した＜ステップＳ９＞から＜ステップＳ２０＞の処理と同様であるため、ここでは重複説明を省略する。
【０１６５】
次に、＜ステップＳ２４＞及び＜ステップＳ２５＞の処理が行われる。
【０１６６】
＜ステップＳ２４＞
第二テーブル整形部１２４1,…,１２４Nに、シェア[f']が入力される。
【０１６７】
第二テーブル整形部１２４1,…,１２４Nは、変形第一テーブル、シェア[f']を用いて、変形第一テーブルからベクトルf'の要素が1のレコードを抜き出した整形後変形第一テーブルを生成する（ステップＳ２４）。
【０１６８】
整形後変形第一テーブルは、第二テーブル結合部１２５1,…,１２５Nに出力される。
【０１６９】
例えば、変形第一テーブルが、上記（Ｂ）のテーブルである場合には、整形後変形第一テーブルは、以下のテーブルとなる。
【０１７０】
【数８】
2020036125.tif 000010
【０１７１】
＜ステップＳ２５＞
第二テーブル結合部１２５1,…,１２５Nに、変形第二テーブル及び整形後変形第一テーブルが入力される。
【０１７２】
第二テーブル結合部１２５1,…,１２５Nは、変形第二テーブルと整形後変形第一テーブルとを結合した結合テーブルを生成する（ステップＳ２５）。
【０１７３】
例えば、変形第二テーブルが上記（Ｄ）のテーブルであり、整形後変形第一テーブルが上記（Ｅ）のテーブルである場合には、結合テーブルは、以下のテーブルとなる。
【０１７４】
【数９】
2020036125.tif 000011
【０１７５】
このテーブルは、第一テーブルと第二テーブルとを完全結合したテーブルとなっている。
【０１７６】
[変形例]
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。
【０１７７】
例えば、ｚを2以上の正の整数として、キーの属性が、ｚ個の属性の複合キーであってもよい。この場合には、例えば以下のようにしてステップＳ１の処理を行ってもよい。
【０１７８】
ｒのかわりに、ｒ0,…,ｒｚ?1であるとする。ｘのかわりに、ｘ0,…,ｘｚ?1であるとする。
【０１７９】
この場合、ステップＳ１の処理で、各i(ただしi=0,…,ｚ-1)でｒiとｘiと、そしてもう一度ｒiと結合して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を横に結合すると、
【０１８１】
【数１０】
2020036125.tif 000012
【０１８２】
となる。このようにして並べたものを行列とみなし、この行列の各行を1レコードのキーのビット表現とみなすと、(1,2,3,1,3,4,5,1,2,3)というキーのビット表現のベクトルが得られる。このベクトルをステップＳ２以降で使うkとして用いてもよい。このようにして、複合キーの場合も処理できる。
【０１８３】
複合キーでは、キーの重複とは、全てのキー属性の値の組み合わせの観点で重複するかどうかであり、個々の属性の値が重複しただけでは重複とはみなさないとする。例えば、組み合わせ(1,0)と(1,1)は重複ではない。
【０１８４】
実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【０１８５】
[プログラム、記録媒体]
上記説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【０１８６】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【０１８７】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０１８８】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０１８９】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
2020036125.tif 000013
【図２】
2020036125.tif 000014
【図３】
2020036125.tif 000015
【図４】
2020036125.tif 000016
【図５】
2020036125.tif 000017
【図６】
2020036125.tif 000018
【図７】
2020036125.tif 000019
【図８】
2020036125.tif 000020
【図９】
2020036125.tif 000021
【手続補正書】
【提出日】令和3年2月8日(2021.2.8)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
この発明の一態様による秘密強写像計算システムは、複数の秘密計算装置を含む秘密結合システムであって、Fk,Fvは任意の環であり、αを任意のベクトル又は置換として[α]はαが秘密分散されたシェアであり、m,nは１以上の所定の整数であり、uは所定の値であり、r∈Fkmは要素が互いに異なる所定のベクトルであり、d∈Fvm,x∈Fknは所定のベクトルであり、複数の秘密計算装置は、ベクトルrのシェア[r]及びベクトルxのシェア[x]を用いて、ベクトルrとベクトルxとベクトルrと同じベクトルとを結合したベクトルk∈[Fk]2m+nのシェア[k]を生成する複数の第一ベクトル結合部と、シェア[k]を用いて、ベクトルkを安定ソートする置換σのシェア[σ]を生成する複数の第一置換計算部と、ベクトルdのシェア[d]とuとを用いて、ベクトルdの各要素からuを減算したベクトルであるベクトルd'のシェア[d']を生成する複数の第一ベクトル生成部と、シェア[d']を用いて、ベクトルd'と要素数がnである０ベクトルとベクトル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]を得る複数の第一ベクトル抽出部と、を備えている。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
【図１】図１は、秘密強写像計算システム、秘密結合システムの機能構成を例示する図である。
【図２】図２は、秘密強写像計算システムの秘密計算装置の機能構成を例示する図である。
【図３】図３は、秘密強写像計算方法の処理手続きを例示する図である。
【図４】図４は、左外部結合を行う秘密結合システムの秘密計算装置の機能構成を例示する図である。
【図５】図５は、左外部結合を行う秘密結合方法の処理手続きを例示する図である。
【図６】図６は、右外部結合を行う秘密結合システムの秘密計算装置の機能構成を例示する図である。
【図７】図７は、右外部結合を行う秘密結合方法の処理手続きを例示する図である。
【図８】図８は、完全外部結合を行う秘密結合システムの秘密計算装置の機能構成を例示する図である。
【図９】図９は、完全外部結合を行う秘密結合方法の処理手続きを例示する図である。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
ベクトルrのi番目の要素をriとし、ベクトルdのi番目の要素をdiとし、ベクトルxのi番目の要素をxiとし、ベクトルyのi番目の要素をyiとすると、この写像は、xi=rjとなるjが存在するときは、yi=dｊとし、xi=rjとなるjが存在しないときは、yi=uとする写像である。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００５７
【補正方法】変更
【補正の内容】
【００５７】
図４を参照して、秘密結合システムに含まれる秘密計算装置１n（n=1, …, N）の構成例を説明する。秘密結合システムの秘密計算装置１nは、例えば、図４に示すように、第一ベクトル結合部１１n、第一置換計算部１２n、第一ベクトル生成部１３n、第二ベクトル結合部１４n、第一置換適用部１５n、第二ベクトル生成部１６n、第一逆置換適用部１７n、第一ベクトル抽出部１８n、第二置換適用部１９n、第三ベクトル生成部１１０n、第二逆置換適用部１１１n、第二ベクトル抽出部１１２n、変形第二テーブル生成部１１３n、第三置換適用部１１４n、第四ベクトル生成部１１５n、シフト部１１６n、第三逆置換適用部１１７n、ビット反転部１１８n、第三ベクトル抽出部１１９n、変形第一テーブル生成部１２０n、第一テーブル結合部１２１n、第一テーブル整形部１２２nを備えている。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００７３
【補正方法】変更
【補正の内容】
【００７３】
＜ステップＳ１＞から＜ステップＳ８＞の処理は、[秘密強写像計算システム及び方法]の欄で説明した＜ステップＳ１＞から＜ステップＳ８＞の処理と同様であるため、ここでは重複説明を省略する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００７８
【補正方法】変更
【補正の内容】
【００７８】
例えば、m=3,n=4であり、置換σが以下の式（１）により定義されるσである場合には、g=(1,1,1,0,0,0,0,-1,-1,-1)となり、σ(g)=(1,0,-1,1,-1,0,1,0,0,-1)となる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００８５
【補正方法】変更
【補正の内容】
【００８５】
＜ステップＳ１１＞
第二逆置換適用部１１１1,…,１１１Nに、シェア[σ(g')]が入力される。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００８６
【補正方法】変更
【補正の内容】
【００８６】
第二逆置換適用部１１１1,…,１１１Nは、シェア[σ(g')]を用いて、ベクトルσ(g')に置換σの逆置換σ-1を適用したベクトルg'のシェア[g']を生成する（ステップＳ１１）。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００８８
【補正方法】変更
【補正の内容】
【００８８】
例えば、σ(g')=(1,1,0,1,0,0,1,1,1,0)である場合には、g'=(1,1,1,1,0,1,1,0,0,0)となる。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００９４
【補正方法】変更
【補正の内容】
【００９４】
変形第二テーブル生成部１１３1,…,１１３Nは、シェア[f1']及びシェア[y]を用いて、ベクトルf1'と、i=1,…,nとして、f1'i=0である場合には、第二テーブルの属性のi番目の要素をuv2としたテーブルと、ベクトルyとを結合した変形第二テーブルを生成する（ステップＳ１３）。uv2は、所定の値である。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００９６
【補正方法】変更
【補正の内容】
【００９６】
例えば、第二テーブルが、キーのベクトルk2=(3,7,9,9)と、１個の属性v2の属性値のベクトルv2=(水,ミックスオレ,薬,水)とから構成されており、f1'=(1,0,1,1)であり、ベクトルy=(100,-1,85,85)である場合には、変形第二テーブルは、以下に示すテーブルとなる。以下の変形第二テーブルでは、i=1,…,nとして、f1'i=0である場合には、第二テーブルのキーのi番目の要素をu=-1としている。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０１０１
【補正方法】変更
【補正の内容】
【０１０１】
例えば、m=3,n=4であり、置換σが上記の式（１）により定義されるσである場合には、e=(1,1,1,0,0,0,0,-1,-1,-1)となり、σ(e)=(1,0,-1,1,-1,0,1,0,0,-1)となる。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０１２４
【補正方法】変更
【補正の内容】
【０１２４】
変形第一テーブル生成部１２０1,…,１２０Nは、ベクトルf'のi番目の要素をf'iとし、ベクトルrのi番目の要素をriとし、uk,uv1を所定の値として、シェア[f']、シェア[r]及びシェア[d]を用いて、ベクトルf'と、i=1,…,mとして、f'i=0である場合には、第一テーブルのキーのi番目の要素をukとし、第一テーブルの属性のi番目の要素をuv1としたテーブルと、第二テーブルの属性に対応するベクトルとして予め定めた空を示す値uv2を要素とするベクトルとを結合した変形第一テーブルを生成する（ステップＳ２０）。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】０１３１
【補正方法】変更
【補正の内容】
【０１３１】
【数４】
2020036125.tif 000022
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】０１３９
【補正方法】変更
【補正の内容】
【０１３９】
右外部結合を行う秘密結合システムは、第二置換適用部１９n、第三ベクトル生成部１１０n、第二逆置換適用部１１１n、第二ベクトル抽出部１１２n、変形第二テーブル生成部１１３n、第三置換適用部１１４n、第四ベクトル生成部１１５n、シフト部１１６n、第三逆置換適用部１１７n、ビット反転部１１８n、第三ベクトル抽出部１１９n、変形第一テーブル生成部１２０n、第一テーブル結合部１２１n、第一テーブル整形部１２２nを備えていない代わりに、変形第二テーブル生成部１２３nを備えている点を除けば、左外部結合を行う秘密結合システムと同様である。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】０１４７
【補正方法】変更
【補正の内容】
【０１４７】
＜ステップＳ２３＞
変形第二テーブル生成部１２３1,…,１２３Nに、シェア[y]が入力される。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】０１４８
【補正方法】変更
【補正の内容】
【０１４８】
変形第二テーブル生成部１２３1,…,１２３Nは、シェア[y]を用いて、第二テーブルと、ベクトルyとを結合した変形第二テーブルを生成する（ステップＳ２３）。
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】０１５１
【補正方法】変更
【補正の内容】
【０１５１】
この変形第二テーブルは、第一テーブルと第二テーブルとを右外部結合したテーブルとなっている。
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】０１５６
【補正方法】変更
【補正の内容】
【０１５６】
秘密結合システムの秘密計算装置１nは、例えば、図８に示すように、第一ベクトル結合部１１n、第一置換計算部１２n、第一ベクトル生成部１３n、第二ベクトル結合部１４n、第一置換適用部１５n、第二ベクトル生成部１６n、第一逆置換適用部１７n、第一ベクトル抽出部１８n、第二置換適用部１９n、第三ベクトル生成部１１０n、第二逆置換適用部１１１n、第二ベクトル抽出部１１２n、変形第二テーブル生成部１１３n、第三置換適用部１１４n、第四ベクトル生成部１１５n、シフト部１１６n、第三逆置換適用部１１７n、ビット反転部１１８n、第三ベクトル抽出部１１９n、変形第一テーブル生成部１２０n、変形第二テーブル生成部１２３n、第二テーブル整形部１２４n、第二テーブル結合部１２５nを備えている。
【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】０１７５
【補正方法】変更
【補正の内容】
【０１７５】
このテーブルは、第一テーブルと第二テーブルとを完全外部結合したテーブルとなっている。
【手続補正２１】
【補正対象書類名】明細書
【補正対象項目名】０１７８
【補正方法】変更
【補正の内容】
【０１７８】
ｒのかわりに、ｒ0,…,ｒｚ-1であるとする。ｘのかわりに、ｘ0,…,ｘｚ-1であるとする。
【手続補正２２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の秘密計算装置を含む秘密強写像計算システムであって、
Fk,Fvは任意の環であり、αを任意のベクトル又は置換として[α]はαが秘密分散されたシェアであり、m,nは１以上の所定の整数であり、uは所定の値であり、r∈Fkmは要素が互いに異なる所定のベクトルであり、d∈Fvm,x∈Fknは所定のベクトルであり、
上記複数の秘密計算装置は、
上記ベクトルrのシェア[r]及び上記ベクトルxのシェア[x]を用いて、上記ベクトルrと上記ベクトルxと上記ベクトルrと同じベクトルとを結合したベクトルk∈[Fk]2m+nのシェア[k]を生成する複数の第一ベクトル結合部と、
上記シェア[k]を用いて、上記ベクトルkを安定ソートする置換σのシェア[σ]を生成する複数の第一置換計算部と、
上記ベクトルdのシェア[d]とuとを用いて、ベクトルdの各要素からuを減算したベクトルであるベクトルd'のシェア[d']を生成する複数の第一ベクトル生成部と、
上記シェア[d']を用いて、上記ベクトルd'と要素数がnである０ベクトルと上記ベクトル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]を得る複数の第一ベクトル抽出部と、
を含む秘密強写像計算システム。
【請求項２】
Fk,Fvは任意の環であり、αを任意のベクトル又は置換として[α]はαが秘密分散されたシェアであり、m,nは１以上の所定の整数であり、uは所定の値であり、r∈Fkmは要素が互いに異なる所定のベクトルであり、d∈Fvm,x∈Fknは所定のベクトルであり、
複数の第一ベクトル結合部が、上記ベクトルrのシェア[r]及び上記ベクトルxのシェア[x]を用いて、上記ベクトルrと上記ベクトルxと上記ベクトルrと同じベクトルとを結合したベクトルk∈[Fk]2m+nのシェア[k]を生成する第一ベクトル結合ステップと、
複数の第一置換計算部が、上記シェア[k]を用いて、上記ベクトルkを安定ソートする置換σのシェア[σ]を生成する第一置換計算ステップと、
複数の第一ベクトル生成部が、上記ベクトルdのシェア[d]とuとを用いて、ベクトルdの各要素からuを減算したベクトルであるベクトルd'のシェア[d']を生成する複数の第一ベクトル生成ステップと、
複数の第二ベクトル結合部が、上記シェア[d']を用いて、上記ベクトルd'と要素数がnである０ベクトルと上記ベクトル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]を得る第一ベクトル抽出ステップと、
を含む秘密強写像計算方法。
【請求項３】
請求項１の秘密強写像計算システムの秘密計算装置。
【請求項４】
請求項３の秘密計算装置の各部としてコンピュータを機能させるためのプログラム。
【手続補正２３】
【補正対象書類名】図面
【補正対象項目名】図８
【補正方法】変更
【補正の内容】
【図８】
2020036125.tif 000023
【手続補正２４】
【補正対象書類名】図面
【補正対象項目名】図９
【補正方法】変更
【補正の内容】
【図９】
2020036125.tif 000024
【国際調査報告】
2020036125.tif 000025
2020036125.tif 000026
2020036125.tif 000027
2020036125.tif 000028