以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
第1の実施の形態は、秘匿検索を行う秘密情報検索システムに、鍵の漏洩の影響範囲の拡大を抑止することが可能な検索方法を適用したものである。
図1は、第1の実施の形態に係る検索方法の一例を示す図である。図1には、秘密情報検索システムにより第1の実施の形態に係る検索方法を実施した場合の例が示されている。秘密情報検索システムは、データ提供装置1、データ利用装置2、およびデータ管理装置3を有する。データ提供装置1、データ利用装置2、およびデータ管理装置3それぞれは、記憶部1-1,2-1,3-1と処理部1-2,2-2,3-2とを有する。記憶部1-1,2-1,3-1は、例えばメモリ、またはストレージ装置である。処理部1-2,2-2,3-2は、例えばプロセッサ、または演算回路である。
データ提供装置1、データ利用装置2、およびデータ管理装置3それぞれが協働することで、鍵の漏洩の影響範囲の拡大を抑止することが可能な検索方法を実施することができる。例えばデータ提供装置1、データ利用装置2、およびデータ管理装置3それぞれの処理部1-2,2-2,3-2が記憶部1-1,2-1,3-1に格納されたプログラムを実行することで、図1に示す秘匿検索が行われる。例えばデータ管理装置3の処理部3-2は、検索プログラムを実行することで秘匿検索を実現する。
図1に示す秘密情報検索では、平文の候補が有限であることを利用した検索方法が用いられる。すなわち、データ提供装置1とデータ利用装置2とのそれぞれが、共通の平文候補を元に、別々の鍵を用いて暗号文候補を作成する。そしてデータ管理装置3において、両者から取得した暗号文候補を突き合せて暗号文対応表3bを生成し、暗号文対応表3bを用いて暗号化したままの照合(秘匿検索)を行う。具体的には以下の通りである。
データ提供装置1は、第1のDB1aを有する。第1のDB1aには、1以上の平文1cが格納されている。データ提供装置1は、平文1cを第1の鍵1bで暗号化することで、1以上の第1の暗号文3cを生成する。データ提供装置1は、生成した第1の暗号文3cをデータ管理装置3に送信する。
またデータ提供装置1は、第1のDB1aに格納可能な平文候補の配列に含まれる複数の平文候補4それぞれの配列上の順番を変えずに、複数の平文候補4それぞれを第1の鍵1bで暗号化することにより、複数の第1の暗号文候補5を生成する。
なお複数の平文候補4を含む配列は、データ提供装置1またはデータ利用装置2が、第1のDB1aに格納可能な平文候補をランダムな順番(順序不同)で並べ替えることで生成される。データ提供装置1が複数の平文候補4を生成した場合、データ提供装置1は複数の平文候補4をデータ利用装置2に送信する。またデータ利用装置2が複数の平文候補4を生成した場合、データ利用装置2は複数の平文候補4をデータ提供装置1に送信する。これにより、複数の平文候補4が、データ提供装置1とデータ利用装置2とで共有される。
データ利用装置2は、複数の平文候補4内での配列上の順番を変えずに、複数の平文候補4それぞれを第2の鍵2bで暗号化することにより複数の第2の暗号文候補6を生成する。またデータ利用装置2は、複数の平文候補4のうちの少なくとも1つの平文7を暗号化した第2の暗号文8を含む検索要求を、データ管理装置3に送信する。
データ管理装置3は、データ提供装置1が生成した第1の暗号文3cを第2のDB3aに格納する。またデータ管理装置3は、データ提供装置1から複数の第1の暗号文候補5を取得し、データ利用装置2から複数の第2の暗号文候補6を取得する。このときデータ管理装置3は、例えば、複数の第1の暗号文候補5と複数の第2の暗号文候補6内で配列上の順番が同じ第1の暗号文候補と第2の暗号文候補とを対応付けた暗号文対応表3bを生成する。データ管理装置3は、生成した暗号文対応表3bを記憶部3-1に格納する。
その後、データ管理装置3は、データ利用装置2から検索要求を受信すると、暗号文のまま第2の暗号文8と第2のDB3a内の第1の暗号文3cとを照合する。具体的には、データ管理装置3は、複数の第1の暗号文候補5内での配列上の順番が、第2の暗号文と同じ値の第2の暗号文候補の複数の第2の暗号文候補6内での配列上の順番と同じである同順の第1の暗号文候補を特定する。例えばデータ管理装置3は、同順の第1の暗号文候補の特定では、暗号文対応表3bにおいて検索要求に含まれる第2の暗号文8と同じ値の第2の暗号文候補に対応付けられた第1の暗号文候補を、同順の第1の暗号文候補として特定する。
そしてデータ管理装置3は、特定した第1の暗号文候補と同じ値の第1の暗号文を第2のDB3aから検索する。データ管理装置3は、検索結果9をデータ利用装置2に送信する。
なお、検索要求に応じた検索の検索結果には、特定の第1の暗号文が含まれる場合がある。この場合、データ管理装置3は、複数の第2の暗号文候補6内での配列上の順番が、特定の第1の暗号文と同じ値の第1の暗号文候補の複数の第1の暗号文候補5内での配列上の順番と同じである同順の第2の暗号文候補を特定する。そしてデータ管理装置3は、検索結果に含まれる特定の第1の暗号文を同順の第2の暗号文候補に変換する。その後、データ管理装置3は、検索結果をデータ利用装置2に送信する。
このように第1の実施の形態に係る秘密情報検索システムでは、第1のDB1aに格納可能な平文をランダムに並べ替えた複数の平文候補4が、データ提供装置1とデータ利用装置2とで共有される。そして複数の平文候補4はデータ提供装置1とデータ利用装置2とのそれぞれで暗号化される。暗号化の際に、複数の平文候補4それぞれの配列上の順番が維持されているため、複数の第1の暗号文候補5と複数の第2の暗号文候補6とにおける、順番が同じ第1の暗号文候補と第2の暗号文候補とは、同じ平文候補を異なる鍵で暗号化した暗号文となる。すなわちデータ管理装置3は、複数の第1の暗号文候補5と複数の第2の暗号文候補6とを取得することで、同じ平文から暗号化された第1の暗号文候補と第2の暗号文候補との組み合わせを認識できる。
なおデータ管理装置3では、複数の平文候補4において平文がどのような配列であったのかは不明である。そのためデータ管理装置3は、同一の平文から暗号化された第1の暗号文候補と第2の暗号文候補との組み合わせを特定することはできるものの、それらの元の平文が何なのかを知ることはできない。
例えばデータ管理装置3は、検索要求を受信した場合には、検索要求に含まれる第2の暗号文8と同じ平文から暗号化された第1の暗号文候補を特定し、第1の暗号文候補と同じ値の第1の暗号文を検索することで、暗号文のままの検索を行うことができる。これにより、データ提供装置1が有する複数の平文1cがデータ提供装置1の使用者以外に漏洩することが抑止されていると共に、データ利用装置2に検索クエリとして入力された平文7がデータ利用装置2の使用者以外に漏洩することが抑止されている。データ管理装置3において暗号文のまま照合を行っているため、データ管理装置3の管理者であっても、第1のDB1a内の複数の平文1cや検索クエリとして使用された平文7が何であるのかを知ることはできない。
しかもデータ提供装置1とデータ利用装置2とにおいて別々の鍵を使用しているため、一方の鍵が漏洩した場合でも、鍵の漏洩の影響範囲(例えば暗号化し直すデータの範囲)は限定的となり、影響範囲の拡大が抑止されている。
例えばデータ提供装置1が有する第1の鍵1bが漏洩した場合の影響範囲は、第1の鍵1bで暗号化された複数の第1の暗号文候補5と第2のDB3a内の第1の暗号文3cとに限定される。このとき秘密情報検索システムでは、複数の平文1cの漏洩を抑止するため、以下の処理が行われる。
データ提供装置1は、第1の鍵1bと異なる第3の鍵を生成する。そしてデータ提供装置1は、複数の平文候補4それぞれの配列上の順番を変えずに第3の鍵で暗号化し、複数の第3の暗号文候補を生成する。データ提供装置1は、生成した複数の第3の暗号文候補をデータ管理装置3に送信する。
データ管理装置3は、データ提供装置1から複数の第3の暗号文候補を取得すると、複数の第1の暗号文候補5と複数の第3の暗号文候補とにおいて配列上の順番が同じ第1の暗号文候補と第3の暗号文候補とを対応付けた第1の暗号文交換表を生成する。そしてデータ管理装置3は、暗号文対応表3bに示される複数の第1の暗号文候補5それぞれを、第1の暗号文交換表において対応付けられている第3の暗号文候補と交換する。またデータ管理装置3は、第2のDB3a内の1以上の第1の暗号文3cそれぞれを、同じ値の第1の暗号文候補が第1の暗号文交換表において対応付けられている第3の暗号文候補と交換する。
このように第1の鍵1bが漏洩した場合の複数の平文1cの漏洩抑止処理は、データ提供装置1とデータ管理装置3とで実行される。すなわち第1の鍵1bが漏洩してもデータ利用装置2は影響を受けない。
また、データ利用装置2が有する第2の鍵2bが漏洩した場合の影響範囲は、第2の鍵2bで暗号化された複数の第2の暗号文候補6に限定される。このとき秘密情報検索システムでは、データ利用装置2に検索クエリとして入力された平文7の漏洩を抑止するため、以下の処理が行われる。
データ利用装置2は、第2の鍵2bとは別の第4の鍵を生成する。そしてデータ利用装置2は、複数の平文候補4それぞれの配列上の順番を変えずに第4の鍵で暗号化し、複数の第4の暗号文候補を生成する。データ利用装置2は、生成した複数の第4の暗号文候補をデータ管理装置3に送信する。
データ管理装置3は、データ利用装置2から複数の第4の暗号文候補を取得すると、複数の第2の暗号文候補6と複数の第4の暗号文候補とにおいて配列上の順番が同じ第2の暗号文候補と第4の暗号文候補とを対応付けた第2の暗号文交換表を生成する。そしてデータ管理装置3は、暗号文対応表3bに示される複数の第2の暗号文候補6それぞれを、第2の暗号文交換表において対応付けられている第4の暗号文候補と交換する。
このように第2の鍵2bが漏洩した場合の平文7の漏洩抑止処理は、データ利用装置2とデータ管理装置3とで実行される。すなわち第2の鍵2bが漏洩してもデータ提供装置1は影響を受けない。
このように、鍵が漏洩した場合のシステム内のデータの秘匿性の低下が抑止されるとともに、データの漏洩を抑止するための対応処理の負荷が軽減される。
なお、データ提供装置1とデータ利用装置2との一方または双方が複数存在する場合もあり得る。その場合、データ管理装置3は、データ提供装置1とデータ利用装置2との組み合わせごとの複数の暗号文対応表3bを生成する。これにより、データ管理装置3を介して、複数の提供者から提供されたデータを、複数の利用者が利活用することができる。その場合、データ管理装置3は、例えばクラウド内に設けられる。
なお、データ提供装置1とデータ利用装置2との総数が増えると、複数の暗号文対応表3bのデータ総量が増加する。そこでデータ管理装置3は、暗号文対応表3bを、データ提供装置1とデータ利用装置2それぞれに対応する個別対応表に変換して保持することで、データ量の増加を抑止することもできる。
例えばデータ管理装置3は、データ提供装置1ごとの第1の個別対応表を生成する。第1の個別対応表は、データ提供装置1から取得した複数の第1の暗号文候補5それぞれに、複数生成された暗号文対応表において対応付けられた第2の暗号文候補と同じインデックス番号を付与したものである。
またデータ管理装置3は、データ利用装置2ごとの第2の個別対応表を生成する。第2の個別対応表は、データ利用装置2から取得した複数の第2の暗号文候補6それぞれに、複数生成された暗号文対応表において対応付けられた第1の暗号文候補と同じインデックス番号を付与したものである。
データ管理装置3は、データ提供装置1ごとの第1の個別対応表と、データ利用装置2ごとの第2の個別対応表とを記憶部3-1に格納する。その後、データ管理装置3は、検索要求を受信すると、第1の個別対応表と第2の個別対応表とにおいて付与されているインデックス番号が同じ第1の暗号文候補と第2の暗号文候補とを対応付けることで、検索に使用する暗号文対応表を生成する。データ管理装置3は、検索要求に応じて生成した暗号文対応表を用いて、秘匿検索を行うことができる。
このように暗号文対応表を個別対応表に変換して記憶しておくことで、第1の暗号文候補と第2の暗号文候補との対応関係を管理するための記憶容量を削減することができる。
なおデータ管理装置3は、個別対応表のデータ容量を削減することも可能である。例えばデータ管理装置3は、第1の個別対応表および第2の個別対応表を、インデックス番号でソートする。そしてデータ管理装置3は、第1の個別対応表および第2の個別対応表からインデックス番号を除去して、記憶部3-1に格納する。
暗号文対応表を生成する際には、データ管理装置3は、第1の個別対応表内の第1の暗号文候補に、第1の個別対応表内での配列に従ってインデックス番号を付与する。そしてデータ管理装置3は、第2の個別対応表内の第2の暗号文候補に、第2の個別対応表内での配列に従ってインデックス番号を付与する。
このようにして、インデックス番号を除去した個別対応表を記憶しておき、個別対応表を使用する際に、インデックス番号を付与することができる。記憶する際にはインデックス番号が除去されているため、個別対応表を記憶するための記憶容量が削減される。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、多数の医療機関が有する患者データを、データ収集活用基盤を用いて有効活用するものである。例えばデータ収集活用基盤により、複数の病院のデータを統合してビッグデータ化し、ビッグデータを複数の製薬会社で活用できるようにする。これにより、製薬会社や病院は、新薬開発のための調査(対象疾患の患者数や所在地域などの調査)が容易となる。
データ収集活用基盤は、ICT企業が管理するクラウドを用いて実現するのが効率的である。クラウドを用いることで、病院や製薬会社からのビッグデータへのアクセスが容易となる。しかしながら、患者データは要配慮個人情報であり、法的に参照が許される手続きを経たとしても、漏洩や目的外利用のリスクを考慮し、クラウドの管理者に対しても秘匿しておくのが適切である。また製薬会社による検索の内容は製薬会社の戦略に関する重要な企業秘密に結びつくため、検索内容についても秘匿しておくことが望ましい。そこで、データ収集活用基盤を実現するクラウドは、例えば暗号化したまま検索可能な暗号化方式を用いて、暗号化された患者データをDBで管理すると共に、暗号化された検索クエリを用いて、暗号文のままでデータ検索を行う。これにより、クラウドの管理者に対しても、患者データと検索クエリの内容を秘匿しておくことができる。
なお、電子カルテには、病名、薬剤名、症状などの語句が入力されるが、これらの語句は有限な語句の中から医師などが入力候補から選択した語句である。病名、薬剤名などの入力候補は膨大であるものの、その候補は有限である。従って、電子カルテに登録されたデータに対する秘匿検索を行う秘密情報検索システムにも、第1の実施の形態に示したような、鍵の漏洩に対する影響範囲を抑制させた検索方法を適用することができる。
図2は、秘密情報検索システムの一例を示す図である。第2の実施の形態では、データ収集活用基盤12がクラウドによって構築されている。データ収集活用基盤12はデータ管理サーバ100を有している。データ管理サーバ100は、複数の組織を跨がって活用するデータを暗号文のままで管理するコンピュータである。データ管理サーバ100は、ネットワーク20を介して、提供者Aと提供者Bそれぞれのデータ提供サーバ200,300と、利用者αと利用者βそれぞれの端末装置400,500に接続されている。提供者A、提供者Bは例えば病院であり、利用者αと利用者βは例えば製薬会社である。
提供者Aのデータ提供サーバ200は、提供者Aの病院で受診した患者の電子カルテなどの患者データを蓄積し、その患者データを暗号化してデータ管理サーバ100に提供するコンピュータである。同様に、提供者Bのデータ提供サーバ300は、提供者Bの病院で受診した患者の電子カルテなどの患者データを蓄積し、その患者データを暗号化してデータ管理サーバ100に提供する。
利用者αの端末装置400は、データ管理サーバ100で管理されている患者データを検索するために、利用者α(例えば製薬企業)の社員が使用するコンピュータである。利用者βの端末装置500は、データ管理サーバ100で管理されている患者データを検索するために、利用者β(例えば製薬企業)の社員が使用するコンピュータである。
なお、データ管理サーバ100は、図1に示した第1の実施の形態のデータ管理装置3の一例である。データ提供サーバ200,300は、図1に示した第1の実施の形態のデータ提供装置1の一例である。端末装置400,500は、図1に示した第1の実施の形態のデータ利用装置2の一例である。
図2に示した秘密情報検索システムは、例えば医療情報を活用した新薬開発の効率化に有用である。例えば、利用者αと利用者βが治験を行う場合、対象疾患の患者がどの程度存在するかなどを考慮して計画を立案することで、治験の成功率を向上させることができる。そこで、データ収集活用基盤12で多数の提供者A、提供者Bに分散する患者の電子カルテから抽出した患者データを集中管理することで、目的の疾患を有する患者の情報を容易に得ることが可能となる。
なお、以下の説明において、データ提供サーバ200,300によって暗号化された暗号文を提供者由来の暗号文と呼ぶこととする。例えば提供者Aが有するデータ提供サーバ200で暗号化された暗号文を、提供者A由来の暗号文と呼ぶ。同様に端末装置400,500によって暗号化された暗号文を利用者由来の暗号文と呼ぶこととする。例えば利用者αが有する端末装置400で暗号化された暗号文を、利用者α由来の暗号文と呼ぶ。
図3は、データ管理サーバのハードウェアの一例を示す図である。データ管理サーバ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、データ管理サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取り、または光ディスク24へのデータの書き込みを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、データ管理サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
データ管理サーバ100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なおデータ提供サーバ200,300および端末装置400,500も、データ管理サーバ100と同様のハードウェアにより実現することができる。さらに図1に示したデータ提供装置1、データ利用装置2、およびデータ管理装置3も、データ管理サーバ100と同様のハードウェアにより実現することができる。
データ管理サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。データ管理サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、データ管理サーバ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またデータ管理サーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
次に、秘密情報検索システムの各装置の機能について説明する。
図4は、秘密情報検索システムの機能を示すブロック図である。データ管理サーバ100は、暗号化DB110、データ登録部120、対応表作成部130、対応表記憶部140、および検索部150を有する。
暗号化DB110は、データ提供サーバ200,300から提供された暗号文を格納するDBである。例えばデータ管理サーバ100のメモリ102またはストレージ装置103の記憶領域の一部が暗号化DB110として使用される。
データ登録部120は、データ提供サーバ200,300から暗号文を取得し、暗号化DB110に格納する。
対応表作成部130は、提供者A、提供者Bが有するデータ提供サーバ200,300から提供された暗号文候補リストと、利用者αと利用者βそれぞれが有する端末装置400,500から提供された暗号文候補リストに基づいて、暗号文対応表を作成する。対応表作成部130は、作成した暗号文対応表を、対応表記憶部140に格納する。
対応表記憶部140は、暗号文対応表を記憶する。例えばデータ管理サーバ100のメモリ102またはストレージ装置103の記憶領域の一部が対応表記憶部140として使用される。
検索部150は、端末装置400,500からの暗号化された検索クエリを含むデータ検索要求に応じて、暗号化DB110に登録されたデータを検索する。この際、検索部150は、患者データと検索クエリとを暗号文のまま照合する。検索部150は、例えば検索クエリに合致する項目値を有する患者の数を端末装置400,500に送信する。
データ提供サーバ200は、DB210、データ登録要求部220、鍵記憶部230、平文候補リスト記憶部240、平文候補リスト提供部250、および暗号文候補リスト提供部260を有する。
DB210は、提供者Aが提供するデータを記憶する。DB210に記憶されているデータは平文であり、暗号化されていない。例えばDB210には、病院の電子カルテデータが格納される。例えばデータ提供サーバ200が有するメモリまたはストレージ装置の記憶領域の一部がDB210として使用される。
データ登録要求部220は、データ管理サーバ100への登録対象のデータの暗号文を含むデータ登録要求を、データ管理サーバ100に送信する。例えばデータ登録要求部220は、まず暗号鍵を生成し、DB210に記憶されたデータを、生成した暗号鍵で暗号化する。そしてデータ登録要求部220は、暗号化によって生成された暗号文を含むデータ登録要求を、データ管理サーバ100に送信する。またデータ登録要求部220は、生成した暗号鍵を鍵記憶部230に格納する。
鍵記憶部230は、データ登録要求部220が生成した鍵を記憶する。例えばデータ提供サーバ200が有するメモリまたはストレージ装置の記憶領域の一部が鍵記憶部230として使用される。
平文候補リスト記憶部240は、DB210に登録可能な平文である平文候補を列挙した平文候補リストを記憶する。例えばデータ提供サーバ200が有するメモリまたはストレージ装置の記憶領域の一部が平文候補リスト記憶部240として使用される。
平文候補リスト提供部250は、端末装置400,500に平文候補リストを提供する。例えば平文候補リスト提供部250は、平文候補リスト記憶部240から平文候補リストを取得し、平文候補リスト内の平文をランダムな順番(順序不同となるよう)に並べ替える。以下、ランダムな順番に並べ替えることをシャッフルと呼ぶこともある。平文候補リスト提供部250は、平文を並べ替えた平文候補リストを端末装置400,500に送信する。なお端末装置400に送信される平文候補リストと、端末装置500に送信される平文候補リストとでは、平文の配列が異なる。
暗号文候補リスト提供部260は、データ管理サーバ100に暗号文候補リストを提供する。例えば暗号文候補リスト提供部260は、平文候補リスト記憶部240から、シャッフル後の平文候補リストを取得する。暗号文候補リスト提供部260は、取得した平文候補リスト内の平文を、鍵記憶部230に格納されている鍵を用いて暗号化する。暗号文候補リスト提供部260は、平文を暗号化して得られた暗号文を列挙した暗号文候補リストを生成する。そして暗号文候補リスト提供部260は、生成した暗号文候補リストをデータ管理サーバ100に送信する。なお暗号文候補リスト提供部260は、送信する暗号文候補リストに、その暗号文候補リストの生成元となった平文候補リストの送信先の端末装置400の利用者αの識別情報を付与する。
端末装置400は、平文候補リスト取得部410、平文候補リスト記憶部420、暗号文候補リスト提供部430、鍵記憶部440、および検索要求部450を有する。
平文候補リスト取得部410は、データ提供サーバ200から平文候補リストを取得する。平文候補リスト取得部410は、取得した平文候補リストを平文候補リスト記憶部420に格納する。
平文候補リスト記憶部420は、平文候補リストを記憶する。例えば端末装置400が有するメモリまたはストレージ装置の記憶領域の一部が平文候補リスト記憶部420として使用される。
暗号文候補リスト提供部430は、データ管理サーバ100に暗号文候補リストを提供する。例えば暗号文候補リスト提供部430は、暗号化用の鍵を生成し、鍵記憶部440に格納する。次に暗号文候補リスト提供部430は、平文候補リスト記憶部420から平文候補リストを取得する。暗号文候補リスト提供部430は、取得した平文候補リスト内の平文を、鍵記憶部440に格納されている鍵を用いて暗号化する。暗号文候補リスト提供部430は、平文を暗号化して得られた暗号文を列挙した暗号文候補リストを生成する。そして暗号文候補リスト提供部430は、生成した暗号文候補リストをデータ管理サーバ100に送信する。なお暗号文候補リスト提供部430は、送信する暗号文候補リストに、端末装置400の利用者αの識別情報を付与する。
鍵記憶部440は、暗号文候補リスト提供部430が生成した鍵を記憶する。例えば端末装置400が有するメモリまたはストレージ装置の記憶領域の一部が鍵記憶部440として使用される。
検索要求部450は、利用者αから入力された検索クエリに応じた検索要求を、データ管理サーバ100に送信する。例えば検索要求部450は、鍵記憶部440に格納されている鍵を用いて検索クエリを暗号化する。そして検索要求部450は、暗号文の検索クエリを含む検索要求を、データ管理サーバ100に送信する。検索要求部450は、データ管理サーバ100から検索結果を取得すると、検索結果をモニタの画面に表示する。
なお図4にはデータ提供サーバ200の機能を示しているが、他のデータ提供サーバ300もデータ提供サーバ200と同様の機能を有している。また図4には端末装置400の機能を示しているが、他の端末装置500も端末装置400と同様の機能を有している。また、図4に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
データ提供サーバ200,300が有するデータを端末装置400,500で利活用する場合、まずデータ提供サーバ200,300がデータを暗号化して、データ管理サーバ100に送信する。データ管理サーバ100では、受信したデータを暗号化DB110に格納する。
図5は、暗号化DBへのデータ登録の一例を示す図である。図5の例では、データ提供サーバ200が有するDB210とデータ提供サーバ300が有するDB310とのデータを、データ管理サーバ100の暗号化DB110に登録する場合を示している。
DB210,310には、患者ごとのレコードが登録されている。各レコードには、患者ID(IDentifier)、性別、疾病、年齢などの項目が設けられている。DB210,310に登録されたレコード内の各項目には、平文の項目値が設定されている。IDの項目には、患者の識別子(患者ID)が設定される。性別の項目には、患者の性別が設定される。疾病の項目には、患者の病名が設定される。年齢の項目には、患者の年齢が設定される。
DB210,310内のデータは、例えば患者IDを除いて、項目値ごとに暗号化される。DB210内のデータは、データ提供サーバ200内の鍵記憶部230に格納された鍵231を用いて暗号化される。DB310内のデータは、データ提供サーバ300内の鍵記憶部330に格納された鍵331を用いて暗号化される。そして暗号化されたDB210,310内のデータがデータ管理サーバ100に送信され、暗号化DB110に格納される。
暗号化DB110には、患者ごとのレコードが登録されている。各レコードには、病院ID、患者ID、性別、疾病、年齢などの項目が設けられている。暗号化DB110に登録されたレコード内の各項目のうち、病院IDと患者IDとには平文の項目値が設定され、それ以外の項目には暗号文の項目値が設定されている。病院IDの項目には、該当するレコードを提供した病院の識別子(病院ID)が設定される。患者IDの項目には、該当するレコードを提供した病院内での患者の識別子(患者ID)が設定される。性別の項目には、患者の性別を示す暗号文が設定される。疾病の項目には、患者の病名を示す暗号文が設定される。年齢の項目には、患者の年齢を示す暗号文が設定される。
暗号化DB110に暗号文のデータを登録後、データ提供サーバ200,300は、各利用者と共有する平文候補リストを生成する。
図6は、平文候補リストの一例を示す図である。データ提供サーバ200の平文候補リスト記憶部240には、原本である平文候補リスト241が予め格納されている。平文候補リスト241には、例えば項目ごとに、該当項目に項目値として暗号化DB110に登録可能な平文のリストが設定されている。例えば項目「疾病」には、「かぜ」、「糖尿」、「がん」などの平文が、暗号化DB110に登録可能である。
平文候補リスト記憶部240には、原本の平文候補リスト241内の平文をシャッフルすることで生成された、利用者ごとの平文候補リスト242,243も格納されている。例えば平文候補リスト242は端末装置400の利用者αと共有され、平文候補リスト243は端末装置500の利用者βと共有される。
利用者と共有される平文候補リスト242,243は、データ提供サーバ200から各利用者が有する端末装置400,500に送信される。同様に、データ提供サーバ300から端末装置400,500へも、利用者と共有する平文候補リストが送信される。データ提供サーバ200,300と端末装置400,500は、それぞれ平文候補リスト内の平文を暗号化し、暗号文候補リストを生成する。
図7は、平文候補リストに基づく暗号文候補リストの生成例を示す図である。データ提供サーバ200から端末装置400へは、平文候補リスト242が送信されている。データ提供サーバ200から端末装置500へは、平文候補リスト243が送信されている。データ提供サーバ300から端末装置400へは、平文候補リスト342が送信されている。データ提供サーバ300から端末装置500へは、平文候補リスト343が送信されている。これにより、送信元のデータ提供サーバ200,300と送信先の端末装置400,500とで、平文候補リストが共有される。
データ提供サーバ200,300と端末装置400,500とは、それぞれ平文候補リスト内の平文を暗号化する。そしてデータ提供サーバ200,300と端末装置400,500とは、暗号化して得られた暗号文候補リストを、データ管理サーバ100に送信する。なお平文候補リスト内での各平文の順番と、その平文から暗号化された暗号文の暗号文候補リスト内での順番とは同じである。すなわちデータ提供サーバ200,300と端末装置400,500とは、平文候補リスト内での平文の順番を入れ替えずに、その平文の暗号文を暗号文候補リストに登録する。
例えばデータ提供サーバ200は、平文候補リスト242に対応する暗号文候補リスト261を、共有相手が利用者αであることを指定して、データ管理サーバ100に送信する。またデータ提供サーバ200は、平文候補リスト243に対応する暗号文候補リスト262を、共有相手が利用者βであることを指定して、データ管理サーバ100に送信する。
データ提供サーバ300は、平文候補リスト342に対応する暗号文候補リスト361を、共有相手が利用者αであることを指定して、データ管理サーバ100に送信する。またデータ提供サーバ300は、平文候補リスト343に対応する暗号文候補リスト362を、共有相手が利用者βであることを指定して、データ管理サーバ100に送信する。
端末装置400は、平文候補リスト242に対応する暗号文候補リスト431を、共有相手が提供者Aであることを指定して、データ管理サーバ100に送信する。また端末装置400は、平文候補リスト342に対応する暗号文候補リスト432を、共有相手が提供者Bであることを指定して、データ管理サーバ100に送信する。
端末装置500は、平文候補リスト243に対応する暗号文候補リスト531を、共有相手が提供者Aであることを指定して、データ管理サーバ100に送信する。また端末装置500は、平文候補リスト343に対応する暗号文候補リスト532を、共有相手が提供者Bであることを指定して、データ管理サーバ100に送信する。
データ管理サーバ100は、データ提供サーバ200,300と端末装置400,500それぞれの所有者を認識している。そしてデータ管理サーバ100は、データ提供サーバ200,300と端末装置400,500それぞれから取得した暗号文候補リストに基づいて、暗号文対応表141~144を生成する。生成された暗号文対応表141~144は、対応表記憶部140に格納される。
例えばデータ管理サーバ100は、データ提供サーバ200から取得した暗号文候補リスト261と端末装置400から取得した暗号文候補リスト431とに基づいて、暗号文対応表141を生成する。暗号文対応表141は、提供者Aが提供したデータに対する利用者αによる検索に使用される。
データ管理サーバ100は、データ提供サーバ200から取得した暗号文候補リスト262と端末装置500から取得した暗号文候補リスト531とに基づいて、暗号文対応表142を生成する。暗号文対応表142は、提供者Aが提供したデータに対する利用者βによる検索に使用される。
データ管理サーバ100は、データ提供サーバ300から取得した暗号文候補リスト361と端末装置400から取得した暗号文候補リスト432とに基づいて、暗号文対応表143を生成する。暗号文対応表143は、提供者Bが提供したデータに対する利用者αによる検索に使用される。
データ管理サーバ100は、データ提供サーバ300から取得した暗号文候補リスト362と端末装置500から取得した暗号文候補リスト532とに基づいて、暗号文対応表144を生成する。暗号文対応表144は、提供者Bが提供したデータに対する利用者βによる検索に使用される。
図8は、暗号文対応表を用いた秘匿検索の一例を示す図である。図8の例では、疾病に関する平文候補リスト242a内に、疾病に関する平文が、「がん」、「糖尿」、「かぜ」の順番で登録されている。データ提供サーバ200は、これらの平文を鍵231で暗号化し、疾病に関する暗号文候補リスト261aに登録する。例えば「がん」の暗号文は「HA」、「糖尿」の暗号文は「HC」、「かぜ」の暗号文は「HB」である。
同様に、端末装置400も平文候補リスト242aに登録されている平文を鍵441で暗号化し、疾病に関する暗号文候補リスト431aに登録する。例えば「がん」の暗号文は「HD」、「糖尿」の暗号文は「HE」、「かぜ」の暗号文は「HF」である。
データ管理サーバ100は、データ提供サーバ200が生成した暗号文候補リスト261aと端末装置400が生成した暗号文候補リスト431aとに基づいて、疾病に関する暗号文対応表141aを生成する。例えばデータ管理サーバ100は、暗号文候補リスト261aと暗号文候補リスト431aとにおいて、順番が同じ暗号文同士を対応付けて、暗号文のペアを暗号文対応表141aに登録する。具体的にはデータ管理サーバ100は、暗号文候補リスト261aの1番目の暗号文「HA」と暗号文候補リスト431aの1番目の暗号文「HD」とのペアを、暗号文対応表141aに登録する。データ管理サーバ100は、暗号文候補リスト261aの2番目の暗号文「HC」と暗号文候補リスト431aの2番目の暗号文「HE」とのペアを、暗号文対応表141aに登録する。データ管理サーバ100は、暗号文候補リスト261aの3番目の暗号文「HB」と暗号文候補リスト431aの3番目の暗号文「HF」とのペアを、暗号文対応表141aに登録する。
その後、利用者αが、提供者Aから提供されたデータの中から、疾病が「糖尿」の患者数を検索するものとする。その場合、利用者αは、端末装置400に検索クエリ「糖尿」を入力する。すると端末装置400は、入力された検索クエリを鍵441で暗号化する。暗号化により、暗号文「HE」が生成される。端末装置400は、暗号文「HE」を検索クエリとする検索要求をデータ管理サーバ100に送信する。なお検索要求には、検索対象のデータの提供元として利用者αが指定されているものとする。
データ管理サーバ100は、暗号文対応表141aを用いて、暗号文のまま、検索クエリと暗号化DB110内のデータとの照合を行う。例えばデータ管理サーバ100は、暗号文対応表141aから、検索要求に検索クエリとして含まれる暗号文「HE」に対応する暗号文「HC」を取得する。次にデータ管理サーバ100は、暗号化DB110から、取得した暗号文「HC」に一致する暗号文の項目値を検索する。そしてデータ管理サーバ100は、該当する項目値を有するレコードの数を、検索結果として端末装置400に送信する。
このように、データ提供サーバ200と端末装置400のそれぞれが、共通の平文候補リスト242aを元に、別々の鍵231,441を用いて、暗号文候補リスト261a,431aを作成する。そしてデータ管理サーバ100が、2つの暗号文候補リスト261a,431aを突き合せ、暗号文対応表141aを作成する。
図8は、項目「疾病」に関する暗号文対応表141aの生成例であるが、すべての項目に関して同様の処理を行うことで、全項目分の暗号文対応表141が生成される。そして、暗号文対応表141を用いることで、提供者Aから提供された全データについての暗号化したままの照合(秘匿検索)が可能となる。
この秘匿検索では、仮に一方の鍵が漏洩したとしても、暗号化し直す範囲が限定される。例えば、データ提供サーバ200の鍵231が漏洩した場合、暗号文対応表141と暗号化DB110とに含まれる提供者A由来の暗号文を暗号化し直せばよい。端末装置400の鍵441が漏洩した場合、暗号文対応表141に含まれる利用者α由来の暗号文を暗号化し直せばよい。
なお秘匿検索のための検索要求には、検索クエリにヒットした件数を要求する検索要求だけではなく、検索クエリにヒットした項目値を有するレコードを分類したテーブルを要求する検索要求も可能である。
図9は、検索要求と検索結果の例を示す図である。例えば図9には、件数の応答を要求する検索要求として、男性のがん患者の人数を取得するための検索要求31が示されている。検索要求31には、検索クエリとして疾病「がん」と性別「男性」とが含まれる。検索クエリとして含まれる「がん」と「男性」は、検索要求31をデータ管理サーバ100に送信する前に暗号化される。このような検索要求31を受信したデータ管理サーバ100は、性別が「男性」のレコードの中から、疾病が「がん」のレコードを検索する。そしてデータ管理サーバ100は、検索でヒットしたレコードの件数を示す検索結果32を、端末装置400に送信する。
また図9には、テーブルの応答を要求する検索要求として、がんである男性の人数と、がんである女性の人数とを取得するための検索要求33が示されている。検索要求33には、検索クエリとして疾病「がん」が示されていると共に、性別によって分類することが指定されている。検索クエリとして含まれる「がん」は、検索要求33をデータ管理サーバ100に送信する前に暗号化される。このような検索要求33を受信したデータ管理サーバ100は、疾病が「がん」のレコードを検索する。そしてデータ管理サーバ100は、検索でヒットしたレコードを性別で分類し、性別ごとのヒット件数を示す検索結果34を端末装置400に送信する。
なお検索結果34の性別の項目には、端末装置400の鍵441で暗号化された暗号文が設定されている。端末装置400は、暗号文で示された性別の項目値を鍵441で復号することで、平文の性別が示された検索結果35を得る。
次に、秘匿検索処理の手順について具体的に説明する。秘匿検索処理は、データ登録処理、暗号文対応表生成処理、および検索処理に分かれる。以下、各処理の手順を図10~図12を参照して説明する。
図10は、データ登録処理の手順の一例を示すシーケンス図である。提供者Aがデータ管理サーバ100を介したデータ提供の指示をデータ提供サーバ200に入力すると、データ提供サーバ200のデータ登録要求部220は鍵231を生成する(ステップS101)。データ登録要求部220は、生成した鍵231を鍵記憶部230に格納する。
利用者αがデータ管理サーバ100を介したデータ利用の指示を端末装置400に入力すると、端末装置400の暗号文候補リスト提供部430は鍵441を生成する(ステップS102)。暗号文候補リスト提供部430は、生成した鍵441を鍵記憶部440に格納する。
データ提供サーバ200のデータ登録要求部220は、DB210内のデータを暗号化する(ステップS103)。例えばデータ登録要求部220は、患者ID以外の各項目に設定された項目値を、その項目値ごとに鍵231を用いて暗号化する。そしてデータ登録要求部220は、暗号化したデータ(暗号文)をデータ管理サーバ100に送信する(ステップS104)。データ管理サーバ100のデータ登録部120は、データ提供サーバ200から取得したデータを暗号化DB110に格納する(ステップS105)。
このようにして、暗号化DB110内に提供者Aによって提供されたデータが、暗号文の状態で登録される。ここで提供者Aが利用者αにデータの利用を許可する場合、提供者Aは、利用者αと平文候補リストを共有する。秘密情報検索システムでは、共有された平文候補リストに基づいて暗号文対応表が生成される。
図11は、暗号文対応表生成処理の手順の一例を示すシーケンス図である。データ提供サーバ200の平文候補リスト提供部250は、原本の平文候補リスト241(図6参照)からDB210内の1つの項目に登録可能な平文のリストを取得し、取得した平文をランダムな順番に並べ替える(シャッフルする)(ステップS111)。平文候補リスト提供部250は、シャッフル済みの一項目分の平文候補リスト242(図6参照)を端末装置400に送信する(ステップS112)。端末装置400の平文候補リスト取得部410は、受信した一項目分の平文候補リスト242を平文候補リスト記憶部420に格納する(ステップS113)。またデータ提供サーバ200の平文候補リスト提供部250は、送信した一項目分の平文候補リスト242を平文候補リスト記憶部240に格納する(S114)。
データ提供サーバ200の暗号文候補リスト提供部260は、シャッフル済みの一項目分の平文候補リスト242を、鍵231を用いて暗号化する(ステップS115)。例えば暗号文候補リスト提供部260は、一項目分の平文候補リスト242内の平文ごとに暗号化した暗号文を生成し、元の平文の順番と同じ並びで、暗号化後の暗号文を暗号文候補リスト261a(図8参照)に登録する。暗号文候補リスト提供部260は、暗号化によって生成された一項目分の暗号文候補リスト261aをデータ管理サーバ100に送信する(ステップS116)。
端末装置400の暗号文候補リスト提供部430は、一項目分の平文候補リスト242を、鍵441を用いて暗号化する(ステップS117)。例えば暗号文候補リスト提供部430は、平文候補リスト242内の平文ごとに暗号化した暗号文を生成し、元の平文の順番と同じ並びで、暗号化後の暗号文を暗号文候補リスト431a(図8参照)に登録する。暗号文候補リスト提供部430は、暗号化によって生成された一項目分の暗号文候補リスト431aをデータ管理サーバ100に送信する(ステップS118)。
データ管理サーバ100の対応表作成部130は、データ提供サーバ200と端末装置400とのそれぞれから受信した暗号文候補リスト261a,431aに基づいて、一項目分の暗号文対応表141aを生成する(ステップS119)。データ提供サーバ200の平文候補リスト提供部250は、原本の平文候補リスト241内に、ステップS111~S119の処理が未処理の項目があるか否かを判断する(ステップS120)。平文候補リスト提供部250は、未処理の項目があれば、ステップS111に処理を進め、未処理の項目に対する処理を行う。また平文候補リスト提供部250は、未処理の項目がなければ処理を終了する。
これにより原本の平文候補リスト241内のすべての項目についての平文候補リスト242aが、データ提供サーバ200と端末装置400とで共有される。そして平文候補リスト242に応じた暗号文対応表141がデータ管理サーバ100で生成される。データ管理サーバ100は、データ提供サーバ200によって提供されたデータの検索要求を端末装置400から受信すると、生成した暗号文対応表141を参照して、検索を実行する。
図12は、検索処理の手順の一例を示すシーケンス図である。端末装置400の検索要求部450は、利用者αからの検索クエリの入力を受け付ける(ステップS131)。この際、利用者αは、検索対象のデータの提供元として提供者Aを指定する入力を行う。検索要求部450は、入力された検索クエリを鍵441で暗号化する(ステップS132)。そして検索要求部450は、暗号化によって暗号文に変換された検索クエリを含む検索要求をデータ管理サーバ100に送信する(ステップS133)。なお検索要求部450は、提供者Aによって提供されたデータが検索対象であることを示す情報を、検索要求に含める。
データ管理サーバ100の検索部150は、端末装置400から受信した検索要求に応じて、検索に使用する暗号文対応表を対応表記憶部140から取得する(ステップS134)。例えば検索部150は、検索対象のデータの提供元である提供者Aと、検索要求の送信元の端末装置400の使用者である利用者αとの組に対応する暗号文対応表141(図7参照)を取得する。
検索部150は、ステップS134における取得対象の暗号文対応表が存在するか否かに応じて処理を分岐させる(ステップS135)。検索部150は、該当する暗号文対応表141が存在する場合、以下の処理(ステップS136~S140)を実行する。
暗号文対応表141が取得できた場合、取得した暗号文対応表141に基づいて、検索要求内の暗号文を変換する(ステップS136)。例えば検索部150は、検索要求から検索クエリとして含まれる暗号文を抽出する。検索部150は、暗号文対応表141を参照し、抽出した暗号文に対応付けられた提供者側の暗号文を特定する。検索部150は、検索要求に含まれる暗号文を、特定した暗号文に変換する。
そして検索部150は、暗号文変換後の検索要求に従って、暗号化DB110の検索を行う(ステップS137)。検索部150は、検索結果に暗号文が含まれるか否かを判断する(ステップS138)。検索部150は、暗号文が含まれる場合、暗号文対応表141に基づいて、該当する暗号文を、利用者に由来する暗号文に変換する(ステップS139)。そして検索部150は、検索結果に暗号文が含まれない場合(ステップS138でNOと判断)、またはステップS138の処理が終了した場合、検索結果を端末装置400に送信する(ステップS140)。
検索部150は、ステップS135において該当する暗号文対応表141が存在しないと判断した場合、検索結果として、検索失敗を示すメッセージを端末装置400に送信する(ステップS141)。端末装置400の検索要求部450は、受信した検索結果を表示する(ステップS142)。
このようにして、データの提供者側と利用者側とで異なる鍵を用いて秘匿検索を行うことが可能となる。提供者側と利用者側とで異なる鍵を用いているため、一部の鍵が漏洩した場合、その鍵を管理していた提供者または利用者のみが、データの秘匿性を回復させる対処を行えばよい。
図13は、データの提供者が鍵を漏洩させた場合の秘匿性回復処理の手順の一例を示すシーケンス図である。例えばデータ提供サーバ200が生成した鍵231(図5参照)が漏洩した場合、提供者Aはデータ提供サーバ200に対して、鍵交換の指示を入力する。するとデータ提供サーバ200のデータ登録要求部220が新たな鍵を生成する(ステップS151)。データ登録要求部220は生成した鍵を鍵記憶部230に格納する。
次に暗号文候補リスト提供部260は、すべての項目に関する平文候補リスト242,243(図6参照)を、新たに生成された鍵を用いて暗号化する(ステップS152)。そして暗号文候補リスト提供部260は、既存の鍵を用いて生成された暗号文と新たな鍵を用いて生成された暗号文との対応関係を示す暗号文交換表を生成し、その暗号文交換表をデータ管理サーバに送信する(ステップS153)。
データ管理サーバ100の対応表作成部130は、暗号文交換表に基づいて、暗号文対応表における提供者A由来の暗号文を、受信した暗号文交換表に示される暗号文に交換する(ステップS154)。またデータ登録部120は、暗号文交換表に基づいて、暗号化DB110における提供者A由来の暗号文を、受信した暗号文交換表に示される暗号文に交換する(ステップS155)。
図14は、提供者による鍵漏洩時の暗号文交換の一例を示す図である。データ提供サーバ200は、項目ごとの暗号文交換表41,42,・・・をデータ管理サーバ100に送信する。例えば疾病に関する暗号文交換表41は、交換前の暗号文「HA」に対応する交換後の暗号文は「HX」であり、交換前の暗号文「HB」に対応する交換後の暗号文は「HY」であり、交換前の暗号文「HC」に対応する交換後の暗号文は「HZ」である。
データ管理サーバ100は、項目ごとの暗号文対応表141a,141b,・・・それぞれについて、暗号文交換表41,42,・・・に基づいて提供者由来の暗号文を交換する。例えばデータ管理サーバ100は、疾病に関する暗号文対応表141a内の暗号文を、疾病に関する暗号文交換表41に従って交換する。
またデータ管理サーバ100は、暗号化DB110内の暗号文を、暗号文交換表41,42,・・・に従って交換する。これより、提供者Aから提供されたレコード(病院ID「1」)の性別、疾病、年齢などの項目に設定された暗号文が、新たに生成された鍵で暗号化された暗号文に交換される。
このように、データの提供者Aが鍵を漏洩させた場合、鍵を漏洩させた提供者A由来の暗号文を交換すれば済み、提供者B、利用者α、および利用者β由来の暗号文の交換は不要である。すなわち、鍵が漏洩したことによる影響範囲の拡大が抑止されている。
図15は、データの利用者が鍵を漏洩させた場合の秘匿性回復処理の手順の一例を示すシーケンス図である。例えば端末装置400が生成した鍵441(図8参照)が漏洩した場合、利用者αは端末装置400に対して、鍵交換の指示を入力する。すると端末装置400の暗号文候補リスト提供部430が新たな鍵を生成する(ステップS161)。暗号文候補リスト提供部430は生成した鍵を鍵記憶部440に格納する。
次に暗号文候補リスト提供部430は、すべての項目に関する平文候補リスト242,243(図6参照)を、新たに生成された鍵を用いて暗号化する(ステップS162)。そして暗号文候補リスト提供部430は、既存の鍵を用いて生成された暗号文と新たな鍵を用いて生成された暗号文との対応関係を示す暗号文交換表を生成し、その暗号文交換表をデータ管理サーバ100に送信する(ステップS163)。
データ管理サーバ100の対応表作成部130は、端末装置400から取得した暗号文交換表に基づいて、暗号文対応表における利用者α由来の暗号文を、受信した暗号文交換表に示される暗号文に交換する(ステップS164)。
図16は、提供者による鍵漏洩時の暗号文交換の一例を示す図である。端末装置400は、項目ごとの暗号文交換表51,52,・・・をデータ管理サーバ100に送信する。例えば疾病に関する暗号文交換表51は、交換前の暗号文「HD」に対応する交換後の暗号文は「Hα」であり、交換前の暗号文「HE」に対応する交換後の暗号文は「Hβ」であり、交換前の暗号文「HF」に対応する交換後の暗号文は「Hγ」である。
データ管理サーバ100は、項目ごとの暗号文対応表141a,141b,・・・それぞれについて、暗号文交換表51,52,・・・に基づいて利用者由来の暗号文を交換する。例えばデータ管理サーバ100は、疾病に関する暗号文対応表141a内の暗号文を、疾病に関する暗号文交換表51に従って交換する。
このように、データの利用者αが鍵を漏洩させた場合、鍵を漏洩させた利用者α由来の暗号文を交換すれば済み、提供者A、提供者B、および利用者β由来の暗号文の交換は不要である。すなわち、鍵が漏洩したことによる影響範囲の拡大が抑止されている。
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、データ管理サーバ100で記憶しておく暗号文対応表のデータ量を削減するものである。以下、第3の実施の形態における第2の実施の形態との相違点を説明する。
第2の実施の形態では、図7に示したように、提供者と利用者の組み合わせごとに別々の暗号文対応表が作成される。この場合、提供者と利用者との数が増えるに従い、データ管理サーバ100において暗号文対応表の格納に用いる記憶容量が巨大になる。
平文候補数をN(Nは1以上の整数)、提供者数をX(Xは1以上の整数)、利用者数をY(Yは1以上の整数)とする。この場合、すべての暗号文対応表に登録される要素は2NXY個(1つの暗号文対応表に2N個の暗号文(要素)が含まれ、暗号文対応表がXY個)となる。
例えば、医療保険が適用される内服薬が10,000種類以上存在する。データ管理サーバ100を介した秘匿検索を利用する提供者が100、利用者が1000であれば、N=10,000,X=100,Y=1,000となる。この場合、データ管理サーバ100内の暗号文対応表に登録される要素数は20億個以上となる。
暗号文対応表を記憶するための記憶容量が巨大化すると、データ管理サーバ100のストレージ装置などの資源が十分でなければ、秘匿検索のサービスを利用可能な提供者または利用者の数が制限される。また暗号文対応表のデータ量が膨大になると、検索処理の効率が低下する。そこで、第3の実施の形態では、データ管理サーバ100は、第2の実施の形態と異なるデータ構造で暗号文対応表を記憶することにより、暗号文対応表のデータ量の削減を図る。
図17は、暗号文対応表のデータ量を削減するための記憶方法の一例を示す図である。図17の例には、データの提供者数が2(提供者A、提供者B)であり、データの利用者数が3(利用者α、利用者β、利用者γ)の場合における暗号文対応表61~66の記憶例が示されている。
データ管理サーバ100は、暗号文対応表61~66が入力されると、提供者由来の暗号文と利用者由来の暗号文とを分離し、提供者または利用者ごとの個別対応表71~75を生成する。個別対応表71~75には、インデックス番号が付与された暗号文が登録されている。個別対応表71~75において、同じインデックス番号が付与された複数の暗号文は、共通の平文から暗号化された暗号文である。
データ管理サーバ100は、個別対応表71~75を対応表記憶部140に格納する。なお個別対応表71~75それぞれには、その個別対応表に登録されている暗号文を送信した暗号文送信者(提供者または利用者)の名称が付与される。平文候補数をN、提供者数をX、利用者数をYとした場合、すべての個別対応表71~75に登録される要素は2N(X+Y)個となる。
データ管理サーバ100は、検索時には、提供者の個別対応表と利用者の個別対応表との組に基づいて、暗号文対応表を復元する。例えばデータ管理サーバ100は、利用者βからの検索要求に基づいて、提供者Aから提供されたデータを検索する場合、提供者Aの個別対応表71と利用者βの個別対応表74とを、インデックス番号を基準にして結合する(joinするとも呼ばれる)。これにより、オリジナルの暗号文対応表62が復元される。
このように、暗号文対応表61~66を個別対応表71~75に変換して記憶することで記憶容量を削減することができる。
なお図17の例では、すべての提供者および利用者の暗号文に関連性があるため、提供者および利用者それぞれの個別対応表を一群として、共通のインデックス番号を使用することができる。しかし個別対応表の集合が、暗号文間の関連性がない複数の部分集合に分けられる場合もある。この場合、個別対応表は複数の群に分類される。そこでデータ管理サーバ100は、群を管理するためのデータテーブルを対応表記憶部140に記憶する。
図18は、第3の実施の形態において対応表記憶部に格納される情報の一例を示す図である。対応表記憶部140には、個別対応表71,72,・・・の他に、群テーブル81と組み合わせテーブル82とが格納される。群テーブル81は、暗号文送信者(提供者または利用者)とその暗号文提供者の個別対応表が属する群との対応関係が登録されたデータテーブルである。組み合わせテーブル82は、個別対応表から暗号文対応表を生成可能な提供者と利用者との組み合わせが登録されたデータテーブルである。
データ管理サーバ100は、暗号文候補リストを受信するごとに、群テーブル81と組み合わせテーブル82とを利用して、個別対応表を生成する。以下、個別対応表の生成処理について詳細に説明する。
図19は、個別対応表生成処理の手順の一例を示すシーケンス図である。図19におけるステップS201~S209,S211の処理は、それぞれ図11に示した第2の実施の形態のステップS111~S120の処理と同様である。すなわち、第3の実施の形態では、ステップS210の処理が追加された点が第2の実施の形態と異なる。
ステップS210において、データ管理サーバ100の対応表作成部130は、ステップS209で生成した暗号文対応表を個別対応表に変換する。個別対応表への変換処理の詳細を以下に示す。
図20は、個別対応表への変換処理の手順の一例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。なお、ステップS209において、提供者pと利用者uとの暗号文対応表が生成されたものとして、以下の処理を説明する。
[ステップS221]対応表作成部130は、提供者pと利用者uとの暗号文対応表をメモリ102から読み込む。
[ステップS222]対応表作成部130は、提供者pの個別対応表が存在するか否かを判断する。例えば対応表作成部130は、対応表記憶部140内に、提供者pの名称が付与された個別対応表を検索し、該当する個別対応表が検出できた場合、提供者pの個別対応表が存在すると判断する。対応表作成部130は、提供者pの個別対応表が存在する場合、処理をステップS226に進める。また対応表作成部130は、提供者pの個別対応表が存在しない場合、処理をステップS223に進める。
[ステップS223]対応表作成部130は、利用者uの個別対応表が存在するか否かを判断する。例えば対応表作成部130は、対応表記憶部140内に、利用者uの名称が付与された個別対応表を検索し、該当する個別対応表が検出できた場合、利用者uの個別対応表が存在すると判断する。対応表作成部130は、利用者uの個別対応表が存在する場合、処理をステップS225に進める。また対応表作成部130は、利用者uの個別対応表が存在しない場合、処理をステップS224に進める。
[ステップS224]対応表作成部130は、新規の群に、提供者pと利用者uの個別対応表を追加する。例えば対応表作成部130は、提供者pと利用者uそれぞれの個別対応表を生成する。生成された2つの個別対応表では、暗号文対応表において対応付けられた暗号文には同じインデックス番号が付与される。また対応表作成部130は、群テーブル81を参照し、未使用の群番号を、新たな群の群番号として採番する。そして対応表作成部130は、新たに採番した群番号に対応付けて、提供者pと利用者uそれぞれの名称を群テーブル81に登録する。対応表作成部130は、その後、処理をステップS230に進める。
[ステップS225]対応表作成部130は、提供者pの個別対応表を、利用者uの個別対応表と同じ群に追加する。例えば対応表作成部130は、提供者pの個別対応表を生成する。生成された個別対応表では、利用者uの個別対応表に登録されている暗号文と同じインデックス番号が、暗号文対応表においてその暗号文に対応付けられた提供者p由来の暗号文に付与される。そして対応表作成部130は、利用者uの個別対応表が属する群の群番号に対応付けて、提供者pの名称を群テーブル81に登録する。対応表作成部130は、その後、処理をステップS230に進める。
[ステップS226]対応表作成部130は、利用者uの個別対応表が存在するか否かを判断する。対応表作成部130は、利用者uの個別対応表が存在する場合、処理をステップS228に進める。また対応表作成部130は、利用者uの個別対応表が存在しない場合、処理をステップS227に進める。
[ステップS227]対応表作成部130は、利用者uの個別対応表を、提供者pの個別対応表と同じ群に追加する。例えば対応表作成部130は、利用者uの個別対応表を生成する。生成された個別対応表では、提供者pの個別対応表に登録されている暗号文と同じインデックス番号が、暗号文対応表においてその暗号文に対応付けられた利用者u由来の暗号文に付与される。そして対応表作成部130は、提供者pの属する群の群番号に対応付けて、利用者uの名称を群テーブル81に登録する。対応表作成部130は、その後、処理をステップS230に進める。
[ステップS228]対応表作成部130は、群テーブル81を参照し、提供者pの個別対応表と利用者uの個別対応表との属する群が同じか否かを判断する。対応表作成部130は、属する群が同じであれば、処理をステップS230に進める。また対応表作成部130は、属する群が異なれば、処理をステップS229に進める。
[ステップS229]対応表作成部130は、提供者pと利用者uとの両者の個別対応表が属する群を統合する。例えば対応表作成部130は、一方の群に属する個別対応表のインデックス番号を、暗号文対応表に基づいて、他方の群に属する個別対応表のインデックス番号に併せて変換する。そして対応表作成部130は、群テーブル81における提供者pと利用者uとの両者の個別対応表が属する群の群番号を、統一した群番号に更新する。対応表作成部130は、その後、処理をステップS230に進める。
[ステップS230]対応表作成部130は、提供者pと利用者uとの組を、組み合わせテーブル82に追加する。
このようにして、暗号文対応表に対応する個別対応表が生成される。以下、図21~図24を参照し、個別対応表の生成例について具体的に説明する。
図21は、個別対応表の生成例を示す第1の図である。図21には、対応表記憶部140に個別対応表が記憶されていない初期状態において、提供者Aと利用者αとの組に対応する暗号文対応表61が読み込まれた場合の処理が示されている。この場合、図20のステップS224とステップS230の処理が実行される。
対応表作成部130は、暗号文対応表を、提供者A由来の暗号文のリストと利用者α由来の暗号文のリストとに分離する。そして対応表作成部130は、提供者A由来の暗号文のリストに「0」から昇順のインデックス番号を付与し、提供者Aの個別対応表71に登録する。同様に、対応表作成部130は、利用者α由来の暗号文のリストに「0」から昇順のインデックス番号を付与し、利用者αの個別対応表73に登録する。これにより、暗号文対応表61において対応付けられている提供者A由来の暗号文と利用者α由来の暗号文とに、同じインデックス番号が付与される。
また対応表作成部130は、群テーブル81に、同じ群番号「群1」を対応付けて、提供者Aと利用者αの名称を追加する。さらに対応表作成部130は、組み合わせテーブル82に、提供者Aと利用者αとの組を追加する。
図22は、個別対応表の生成例を示す第2の図である。図22には、暗号文対応表61の次に提供者Aと利用者βとの組に対応する暗号文対応表62が読み込まれた場合の処理が示されている。暗号文対応表62を読み込んだ時点では、提供者Aの個別対応表71は存在するが、利用者βの個別対応表74はまだ存在しない。この場合、図20のステップS227とステップS230の処理が実行される。
対応表作成部130は、提供者A由来の暗号文をキーとして、読み込んだ暗号文対応表62に提供者Aの個別対応表71を結合する。なお暗号文をキーとして表を結合するとは、結合後の表に、同じ暗号文に対応付けられた要素同士を対応付けて登録する処理である。そして対応表作成部130は、結合された表から提供者A由来の暗号文の列を除去することで得られた表を、利用者βの個別対応表74とする。
また対応表作成部130は、群テーブル81に、提供者Aと同じ群番号「群1」を対応付けて、利用者βの名称を追加する。さらに対応表作成部130は、組み合わせテーブル82に、提供者Aと利用者βとの組を追加する。
なお利用者の個別対応表は存在するが提供者の個別対応表はまだ存在しない場合に実行される図20のステップS225の処理は、提供者と利用者が逆になるものの、処理内容はステップS227と同様である。
図23は、個別対応表の生成例を示す第3の図である。図23には、暗号文対応表62の次に提供者Bと利用者γとの組に対応する暗号文対応表66が読み込まれた場合の処理が示されている。暗号文対応表66を読み込んだ時点では、提供者Bの個別対応表72も利用者γの個別対応表75も存在しない。この場合、図20のステップS224とステップS230の処理が実行される。
対応表作成部130は、暗号文対応表を、提供者B由来の暗号文のリストと利用者γ由来の暗号文のリストとに分離する。そして対応表作成部130は、提供者B由来の暗号文のリストに「0」から昇順のインデックス番号を付与し、提供者Bの個別対応表72に登録する。同様に、対応表作成部130は、利用者γ由来の暗号文のリストに「0」から昇順のインデックス番号を付与し、利用者γの個別対応表75に登録する。
また対応表作成部130は、群テーブル81に、未使用の群番号「群2」を対応付けて、提供者Bと利用者γの名称を追加する。さらに対応表作成部130は、組み合わせテーブル82に、提供者Bと利用者γとの組を追加する。
図24は、個別対応表の生成例を示す第4の図である。図24には、暗号文対応表62の次に提供者Bと利用者αとの組に対応する暗号文対応表64が読み込まれた場合の処理が示されている。暗号文対応表64を読み込んだ時点では、提供者Bの個別対応表72と利用者αの個別対応表73とが存在する。しかし、提供者Bの個別対応表72と利用者αの個別対応表73との属する群が異なる。この場合、図20のステップS229とステップS230の処理が実行される。
対応表作成部130は、読み込んだ暗号文対応表64に、提供者B由来の暗号文をキーとして提供者Bの個別対応表72を結合すると共に、利用者α由来の暗号文をキーとして利用者αの個別対応表73を結合する。この結合処理により、提供者Bの個別対応表72が属する群「群2」を利用者αの個別対応表73が属する群「群1」に変換するための変換表83が生成される。
対応表作成部130は、変換表83に従い、「群2」に属するすべての個別対応表72,75のインデックス番号を変換する。図24の例では、変換表83に設定されているインデックス番号の左側の列が変換前の番号であり、右側の列が変換後の番号である。すなわち個別対応表72,75のインデックス番号「0」は「1」に変換され、インデックス番号「1」は「2」に変換され、インデックス番号「2」は「0」に変換される。
また対応表作成部130は、群テーブル81における提供者Bと利用者γの群番号を「群1」に変更する。さらに対応表作成部130は、組み合わせテーブル82に、提供者Bと利用者αとの組を追加する。
このようにして、暗号文対応表が生成されるごとに個別対応表の追加または更新が行われる。そして個別対応表を参照して、検索要求に応じた検索が行われる。
図25は、個別対応表を用いた検索処理の手順の一例を示すシーケンス図である。図25に示す処理のうちステップS241~S243,S246~S252の各処理は、それぞれ図12に示した第2の実施の形態におけるステップS131~S133,S136~S142の処理と同じである。以下、第2の実施の形態と異なるステップS244~S245の処理について説明する。
データ管理サーバ100の検索部150は、端末装置400から受信した検索要求に応じて、検索に使用する暗号文対応表を生成する(ステップS244)。暗号文対応表の生成は、端末装置400の有する利用者αの個別対応表73と、検索対象のデータの提供元として指定された提供者の個別対応表に基づいて行われる。そして検索部150は、ステップS244における取得対象の暗号文対応表の生成が成功したか否かに応じて処理を分岐させる(ステップS245)。検索部150は、暗号文対応表が生成できた場合、ステップS246~S250に示す検索処理を実行する。また検索部150は、暗号文対応表が生成できなかった場合、ステップS251に示すように、検索失敗の通知を行う。
図26は、暗号文対応表生成処理の手順の一例を示すフローチャートである。以下、図26に示す処理をステップ番号に沿って説明する。
[ステップS261]検索部150は、検索要求に応じて、検索対象のデータの提供元の提供者pと、そのデータを利用する利用者uとを特定する。例えば検索対象のデータの提供元の提供者pは、検索要求に含まれる情報によって示されている。また検索部150は、検索要求の送信元の端末装置(例えば端末装置400)を利用している利用者を、データを利用する利用者uとして特定する。
[ステップS262]検索部150は、特定した提供者pと利用者uの組み合わせが、組み合わせテーブル82に存在するか否かを判断する。検索部150は、該当する組み合わせが存在すれば、処理をステップS263に進める。また検索部150は、該当する組み合わせが存在しなければ、処理をステップS268に進める。
[ステップS263]検索部150は、特定した提供者pの個別対応表が存在するか否かを判断する。検索部150は、該当する個別対応表が存在する場合、処理をステップS264に進める。また検索部150は、該当する個別対応表が存在しない場合、処理をステップS268に進める。
[ステップS264]検索部150は、特定した利用者uの個別対応表が存在するか否かを判断する。検索部150は、該当する個別対応表が存在する場合、処理をステップS265に進める。また検索部150は、該当する個別対応表が存在しない場合、処理をステップS268に進める。
[ステップS265]検索部150は、特定した提供者pの個別対応表と特定した利用者uの個別対応表との属する群が同じか否かを判断する。検索部150は、属する群が同じ場合、処理をステップS266に進める。また検索部150は、属する群が異なる場合、処理をステップS268に進める。
[ステップS266]検索部150は、特定した提供者pの個別対応表と特定した利用者uの個別対応表とを、インデックス番号をキーにして結合(Join)する。
[ステップS267]検索部150は、ステップS266における結合で得られた表からインデックス番号の列を除去することで、暗号文対応表を生成する。その後、検索部150は、暗号文対応表生成処理を終了する。
[ステップS268]検索部150は、暗号文対応表の生成処理の失敗を示す情報を出力し、暗号文対応表生成処理を終了する。
このようにして、データ管理サーバ100では、検索要求を受信するごとに、その検索要求に応じた暗号文対応表が生成される。
図27は、暗号文対応表の生成処理の一例を示す図である。図27には、提供者Aの個別対応表71と利用者βの個別対応表74とに基づく、暗号文対応表62の生成例が示されている。検索部150は、インデックス番号をキーとして個別対応表71と個別対応表74とを結合した結合表62aを生成する。例えば検索部150は、個別対応表71の右側に利用者β由来の暗号文を登録するための列を追加する。そして検索部150は、個別対応表71のインデックス番号の右に、個別対応表74において同じインデックス番号が付与されている暗号文を追加する。結合表62aからインデックス番号の列を除去することで得られる表が、暗号文対応表62である。
次に、鍵が漏洩した場合の処理について説明する。
図28は、データの提供者が鍵を漏洩させた場合の秘匿性回復処理の手順の一例を示すシーケンス図である。図28に示す処理のうち、ステップS271~S273,S275の処理は、それぞれ図13に示す第2の実施の形態におけるステップS151~S153,S155の処理と同様である。第3の実施の形態における第2の実施の形態と異なる処理は、以下の通りである。
第3の実施の形態では、データ提供サーバ200から暗号文交換表を受信したデータ管理サーバ100の対応表作成部130が、暗号文交換表に基づいて、提供者A由来の個別対応表の暗号文を、新たな鍵で暗号化した暗号文に交換する(ステップS274)。
図29は、提供者による鍵漏洩時の暗号文交換の一例を示す図である。例えばデータ管理サーバ100の対応表記憶部140は、提供者Aの項目別の個別対応表71a,71b,・・・を記憶しているものとする。この場合、提供者Aの鍵が漏洩すると、データ提供サーバ200からデータ管理サーバ100へ、項目ごとの暗号文交換表41,42,・・・が送信される。データ管理サーバ100の対応表作成部130は、個別対応表71a,71b,・・・内の暗号文を、暗号文交換表41,42,・・・において対応付けられている変換後の暗号文に交換する。また対応表作成部130は、暗号化DB110内の提供者A由来の暗号文を、暗号文交換表41,42,・・・において対応付けられている変換後の暗号文に交換する。
図30は、データの提供者が鍵を漏洩させた場合の秘匿性回復処理の手順の一例を示すシーケンス図である。図30に示す処理のうち、ステップS281~S283の処理は、それぞれ図15に示す第2の実施の形態におけるステップS161~S163の処理と同様である。第3の実施の形態における第2の実施の形態と異なる処理は、以下の通りである。
第3の実施の形態では、端末装置400から暗号文交換表を受信したデータ管理サーバ100の対応表作成部130が、暗号文交換表に基づいて、利用者α由来の個別対応表の暗号文を、新たな鍵で暗号化した暗号文に交換する(ステップS284)。
図31は、利用者による鍵漏洩時の暗号文交換の一例を示す図である。例えばデータ管理サーバ100の対応表記憶部140は、利用者αの項目別の個別対応表73a,73b,・・・を記憶しているものとする。この場合、利用者αの鍵が漏洩すると、端末装置400からデータ管理サーバ100へ、項目ごとの暗号文交換表51,52,・・・が送信される。データ管理サーバ100の対応表作成部130は、個別対応表73a,73b,・・・内の暗号文を、暗号文交換表51,52,・・・において対応付けられている変換後の暗号文に交換する。
このように第3の実施の形態では、暗号文対応表に変えて個別対応表を用いることができる。その結果、対応表記憶部140のデータ容量を削減することが可能となる。
〔その他の実施の形態〕
第3の実施の形態に示した個別対応表は、インデックス番号でソートした上でインデックス番号を除去してデータ管理サーバ100に記憶しておいてもよい。この場合、データ管理サーバ100は、暗号文対応表を復元するときにインデックス番号を付与し直す。
図32は、インデックス番号を除去した個別対応表の一例を示す図である。例えばデータ管理サーバ100の対応表作成部130は、個別対応表76aを対応表記憶部140に格納する際、個別対応表76a内の暗号文をインデックスの番号で昇順にソートする。そして対応表作成部130は、元の個別対応表76aからインデックス番号を除去した個別対応表76bを対応表記憶部140に格納する。個別対応表76bを用いて暗号文対応表を復元する際には、検索部150は、個別対応表76bに登録された暗号文に、上位から順番に0から昇順のインデックス番号を付与する。これにより、データ管理サーバ100が記憶する個別対応表の要素数を半分に削減できる。
第2および第3の実施の形態では、電子カルテデータが登録されたDBの秘匿検索を行う場合の例であるが、登録可能な平文候補が有限なDBであれば、他のDBであっても同様の秘匿検索を適用可能である。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。