(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-03
(45)【発行日】2024-09-11
(54)【発明の名称】秘密情報管理プログラム、秘密情報管理方法、データ登録装置、および秘密情報管理システム
(51)【国際特許分類】
G09C 1/00 20060101AFI20240904BHJP
G06F 21/62 20130101ALI20240904BHJP
G06F 16/21 20190101ALI20240904BHJP
【FI】
G09C1/00 660D
G06F21/62 345
G06F16/21
(21)【出願番号】P 2021048542
(22)【出願日】2021-03-23
【審査請求日】2023-12-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】舟久保 利昭
(72)【発明者】
【氏名】前田 一穂
【審査官】行田 悦資
(56)【参考文献】
【文献】特開2021-018517(JP,A)
【文献】国際公開第2018/138857(WO,A1)
【文献】国際公開第2016/120975(WO,A1)
【文献】特開2012-248940(JP,A)
【文献】特開2018-063638(JP,A)
【文献】特開2007-114855(JP,A)
【文献】特開2013-008175(JP,A)
【文献】特開2014-164145(JP,A)
【文献】特開2007-011903(JP,A)
【文献】伊藤 隆 ほか,頻度分析耐性を持つ高速秘匿検索方式,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2011年02月24日,第110巻, 第443号,pp.1-6
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 21/62
G06F 16/21
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群における前記秘匿レコード内の一の項目に設定可能な複数の第1項目値それぞれに対して、n個(nは自然数)の第2項目値を対応付け、
複数の項目値集合それぞれが、同一の前記第1項目値に対応付けられた2個以上の前記第2項目値のうちの1個からn-1個のいずれかの個数の前記第2項目値を含むように、前記第2項目値それぞれを前記複数の項目値集合のいずれかに分類し、
前記秘匿レコード内の前記一の項目に設定されている前記第1項目値を、対応付けられた前記第2項目値のいずれかに確率的に変換し、
前記秘匿レコード群に基づいて、ダミーの前記第2項目値の追加により、同一の項目値集合に属する前記第2項目値に対する検索のヒット件数の均等化を図った攪乱レコード群を生成し、
前記攪乱レコード群内のレコードに、前記レコードに含まれる前記第2項目値の真偽を示すフラグを付与し、
前記攪乱レコード群を暗号化する、
処理を実行させる秘密情報管理プログラム。
【請求項2】
前記第1項目値の前記第2項目値への変換では、前記第2項目値の選択確率がランダムに決定されており、前記第1項目値に対応付けられた前記第2項目値のうちの1つを前記選択確率に従った確率で選択し、前記第1項目値を選択した前記第2項目値に変換する、
請求項1記載の秘密情報管理プログラム。
【請求項3】
前記第2項目値の分類では、2以上の前記項目値集合において、属する前記第2項目値に対応する前記第1項目値の組み合わせが同じとなることを抑止する、
請求項1または2に記載の秘密情報管理プログラム。
【請求項4】
前記攪乱レコード群の生成では、
前記項目値集合に属する前記第2項目値それぞれを同一の前記項目値集合に属する異なる前記第2項目値に全単射する全単射関係に従って、前記秘匿レコードそれぞれの前記一の項目に設定された前記第2項目値それぞれに対応するダミー値を生成し、
前記ダミー値が前記一の項目に設定された、前記秘匿レコードと同数のダミーレコードを有するダミーレコード群を生成し、
前記秘匿レコード群と前記ダミーレコード群とを含む前記攪乱レコード群を生成する、
請求項1ないし3のいずれかに記載の秘密情報管理プログラム。
【請求項5】
前記ダミーレコード群の生成では、前記ダミーレコード群が複数あるとき、前記秘匿レコードの前記一の項目に設定された前記第2項目値が、前記ダミーレコード群ごとに異なる前記第2項目値に変換されるように、前記ダミーレコード群ごとに異なる前記全単射関係を利用する、
請求項4記載の秘密情報管理プログラム。
【請求項6】
前記フラグの付与では、前記秘匿レコードに真を示す第1フラグを付与し、前記ダミーレコードに偽を示す第2フラグを付与し、
前記暗号化では、前記秘匿レコードと前記ダミーレコードそれぞれの前記一の項目に設定された前記第2項目値、前記秘匿レコードに付与された前記第1フラグ、および前記ダミーレコードに付与された前記第2フラグを暗号化する、
請求項4または5に記載の秘密情報管理プログラム。
【請求項7】
前記第2フラグの付与では、1または複数生成された前記ダミーレコード群ごとに異なり、前記第1フラグとも異なる値の前記第2フラグを、前記ダミーレコード群それぞれに含まれる前記ダミーレコードに
付与する、
請求項6記載の秘密情報管理プログラム。
【請求項8】
前記第1フラグの
付与では、前記秘匿レコードの識別子と前記秘匿レコード群の群番号を示す値とを含む前記第1フラグを前記秘匿レコードに付与し、
前記第2フラグの
付与では、前記ダミーレコードの識別子と、属する前記ダミーレコード群の群番号とを含む前記第2フラグを前記ダミーレコードに
付与する、
請求項7記載の秘密情報管理プログラム。
【請求項9】
前記攪乱レコード群の生成では、
前記秘匿レコード内の前記一の項目に設定されている変換前の前記第2項目値を、変換前の前記第2項目値が属する項目値集合に対応付けられ、同じ前記項目値集合に属するいずれの前記第2項目値に対する検索にもヒットする第3項目値に変換することで攪乱レコードを生成し、前記攪乱レコードを含む前記攪乱レコード群を生成する、
請求項1ないし3のいずれかに記載の秘密情報管理プログラム。
【請求項10】
前記フラグの付与では、前記攪乱レコードに、変換前の前記第2項目値を示す情報を含む第3フラグを付与し、
前記暗号化では、前記攪乱レコードの前記一の項目に設定された前記第3項目値、および付与された前記第3フラグを暗号化する、
請求項9記載の秘密情報管理プログラム。
【請求項11】
前記第3フラグの付与では、前記秘匿レコードの識別子と、変換前の前記第2項目値に対応する要素の前記項目値集合内での要素番号とを含む前記第3フラグを、前記秘匿レコードに付与する、
請求項10記載の秘密情報管理プログラム。
【請求項12】
前記分類では、前記複数の第1項目値が数値の場合、第1数値範囲内の連続する複数の数値それぞれに対応する前記第2項目値を含む項目値集合に、前記第1数値範囲と重複しない第2数値範囲内の連続する数値それぞれに対応する前記第2項目値が含まれるように、前記第2項目値を前記複数の項目値集合のいずれかに分類する、
請求項1ないし11のいずれかに記載の秘密情報管理プログラム。
【請求項13】
コンピュータが、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群における前記秘匿レコード内の一の項目に設定可能な複数の第1項目値それぞれに対して、n個(nは自然数)の第2項目値を対応付け、
複数の項目値集合それぞれが、同一の前記第1項目値に対応付けられた2個以上の前記第2項目値のうちの1個からn-1個のいずれかの個数の前記第2項目値を含むように、前記第2項目値それぞれを前記複数の項目値集合のいずれかに分類し、
前記秘匿レコード内の前記一の項目に設定されている前記第1項目値を、対応付けられた前記第2項目値のいずれかに確率的に変換し、
前記秘匿レコード群に基づいて、ダミーの前記第2項目値の追加により、同一の項目値集合に属する前記第2項目値に対する検索のヒット件数の均等化を図った攪乱レコード群を生成し、
前記攪乱レコード群内のレコードに、前記レコードに含まれる前記第2項目値の真偽を示すフラグを付与し、
前記攪乱レコード群を暗号化する、
秘密情報管理方法。
【請求項14】
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群を記憶する記憶部と、
前記秘匿レコード群における前記秘匿レコード内の一の項目に設定可能な複数の第1項目値それぞれに対して、n個(nは自然数)の第2項目値を対応付け、
複数の項目値集合それぞれが、同一の前記第1項目値に対応付けられた2個以上の前記第2項目値のうちの1個からn-1個のいずれかの個数の前記第2項目値を含むように、前記第2項目値それぞれを前記複数の項目値集合のいずれかに分類し、
前記秘匿レコード内の前記一の項目に設定されている前記第1項目値を、対応付けられた前記第2項目値のいずれかに確率的に変換し、
前記秘匿レコード群に基づいて、ダミーの前記第2項目値の追加により、同一の項目値集合に属する前記第2項目値に対する検索のヒット件数の均等化を図った攪乱レコード群を生成し、
前記攪乱レコード群内のレコードに、前記レコードに含まれる前記第2項目値の真偽を示すフラグを付与し、
前記攪乱レコード群を暗号化する、
処理部と、
を有するデータ登録装置。
【請求項15】
データベースを有するサーバと、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群における前記秘匿レコード内の一の項目に設定可能な複数の第1項目値それぞれに対して、n個(nは自然数)の第2項目値を対応付け、
複数の項目値集合それぞれが、同一の前記第1項目値に対応付けられた2個以上の前記第2項目値のうちの1個からn-1個のいずれかの個数の前記第2項目値を含むように、前記第2項目値それぞれを前記複数の項目値集合のいずれかに分類し、
前記秘匿レコード内の前記一の項目に設定されている前記第1項目値を、対応付けられた前記第2項目値のいずれかに確率的に変換し、
前記秘匿レコード群に基づいて、ダミーの前記第2項目値の追加により、同一の項目値集合に属する前記第2項目値に対する検索のヒット件数の均等化を図った攪乱レコード群を生成し、
前記攪乱レコード群内のレコードに、前記レコードに含まれる前記第2項目値の真偽を示すフラグを付与し、
前記攪乱レコード群を暗号化し、
前記攪乱レコード群を前記データベースに格納する、
データ登録装置と、
検索条件に示される前記一の項目の検索項目値を、前記検索項目値と同じ値の前記第1項目値に対応する1または複数の前記第2項目値それぞれに変換し、
変換により得られた前記第2項目値を暗号文のまま検索する検索クエリを前記サーバに送信し、
前記サーバから、前記データベース内の前記検索クエリにヒットした検出レコードを取得し、
前記検出レコードに付与された前記フラグに基づいて、前記検出レコード内の前記第2項目値にヒットした値の真偽を判断する、
データ利用装置と、
を有する秘密情報管理システム。
【請求項16】
前記データ登録装置は、
前記攪乱レコード群の生成では、
前記項目値集合に属する前記第2項目値それぞれを同一の前記項目値集合に属する異なる前記第2項目値に全単射する全単射関係に従って、前記秘匿レコードそれぞれの前記一の項目に設定された前記第2項目値それぞれに対応するダミー値を生成し、
前記ダミー値が前記一の項目に設定された、前記秘匿レコードと同数のダミーレコードを有するダミーレコード群を生成し、
前記秘匿レコード群と前記ダミーレコード群とを含む前記攪乱レコード群を生成し、
前記
フラグの付与では、
前記秘匿レコードに真を示す第1フラグを付与し、
前記ダミーレコードに偽を示す第2フラグを付与し、
前記暗号化では、
前記秘匿レコードと前記ダミーレコードそれぞれの前記一の項目に設定された前記第2項目値、前記秘匿レコードに付与された前記第1フラグ、および前記ダミーレコードに付与された前記第2フラグを暗号化し、
前記秘匿レコード群と前記ダミーレコード群とを前記サーバの前記データベースに格納し、
前記データ利用装置は、
変換により得られた前記第2項目値それぞれの暗号文を含む検索クエリを前記サーバに送信し、
前記サーバから、前記データベース内の前記検索クエリによる検索結果を取得し、
前記検索結果に含まれる前記秘匿レコードと前記ダミーレコードそれぞれに設定された前記第1フラグまたは前記第2フラグに基づいて、前記検索結果から前記検索条件を満たす前記秘匿レコードを取得する、
請求項15記載の秘密情報管理システム。
【請求項17】
前記データ登録装置は、
前記攪乱レコード群の生成では、前記秘匿レコード内の前記一の項目に設定されている変換前の前記第2項目値を、変換前の前記第2項目値が属する項目値集合に対応付けられ、同じ前記項目値集合に属するいずれの前記第2項目値に対する検索にもヒットする第3項目値に変換することで攪乱レコードを生成し、前記攪乱レコードを含む前記攪乱レコード群を生成し、
前記フラグの付与では、前記攪乱レコードに、変換前の前記第2項目値を示す情報を含む第3フラグを付与し、
前記暗号化では、前記攪乱レコードの前記一の項目に設定された前記第3項目値、および付与された前記第3フラグを暗号化し、
前記データ利用装置は、
変換により得られた前記第2項目値それぞれを、前記第2項目値に対応する前記第3項目値に変換し、前記第3項目値の暗号文を含む検索クエリを前記サーバに送信し、
前記サーバから、前記データベース内の前記検索クエリによる検索結果を取得し、
前記検索結果に含まれる前記攪乱レコードそれぞれに設定された前記第3項目値と前記第3フラグとを復号し、
前記第3フラグに基づいて前記第3項目値の変換元の前記第2項目値を判断し、
前記検索条件を満たす前記第1項目値に対応する前記第2項目値の暗号文が格納された前記攪乱レコードを、前記検索結果から抽出する、
請求項15記載の秘密情報管理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密情報管理プログラム、秘密情報管理方法、データ登録装置、および秘密情報管理システムに関する。
【背景技術】
【0002】
コンピュータシステムでは、ビッグデータと呼ばれる大量のデータを扱うことができる。例えばコンピュータでビッグデータを解析すれば、様々な知見を得ることが可能である。解析に用いるビッグデータの量が多いほど、そのビッグデータから多様な知識を得ることができ、得られた知識の信頼性も向上する。そこで企業などの組織ごとにビッグデータ用の独自のデータベース(DB)を構築するのではなく、複数の組織のデータを統合したDBを、複数の組織で利用することが考えられる。このような統合したDBサービスは、例えばクラウドコンピューティングシステム(以下、「クラウド」と呼ぶ)を用いて実現できる。
【0003】
複数の組織のデータを統合したDBをクラウドで管理する場合において、データ提供元の組織は、提供したデータの利用を、データ提供元の組織が許可した他の組織のみに制限したい場合がある。またデータ提供元の組織およびデータを利用する組織は、提供されるデータの内容やDB内のデータへの検索内容を、クラウドの管理者にも知られたくない場合もある。これらの場合、ビッグデータを管理するクラウドは、例えば各組織から暗号化されたデータの提供を受け、暗号データをDBに格納する。そしてクラウドは、暗号データのままデータの同一性を判定できる照合技術を用いて、データ提供元の組織から渡された鍵で暗号化された検索要求に応じて、DB内のデータ検索を行う。これにより、データ提供元の組織は、鍵を渡した組織に対してのみ、提供したデータの利用を許可することができる。またクラウドでは、提供されたデータと検索要求とが暗号化されたままであるため、クラウドの管理者にデータの内容を知られることも抑止できる。
【0004】
DB内のデータの秘匿化に関連する技術としては、例えば頻度分析への耐性を持つ秘匿検索を実現する検索システムが提案されている。また、暗号化により情報提供者のプライバシーを保護しつつ、分析の処理効率を向上できるデータ集計分析システムも提案されている。
【先行技術文献】
【特許文献】
【0005】
【文献】国際公開第2012/115031号公報
【文献】国際公開第2016/120975号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
暗号データのまま検索を行うことができる秘匿検索技術を用いても、暗号化されたデータの安全性は十分とはいえない。すなわち、暗号データを格納したDBに対して頻度分析攻撃が可能であり、検索クエリの内容または検索結果が類推されてしまう場合がある。
【0007】
1つの側面では、本件は、暗号化されたデータへの頻度分析攻撃に対する安全性を向上させることを目的とする。
【課題を解決するための手段】
【0008】
1つの案では、コンピュータに以下の処理を実行させる秘密情報管理プログラムが提供される。
コンピュータは、秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群における秘匿レコード内の一の項目に設定可能な複数の第1項目値それぞれに対して、n個(nは自然数)の第2項目値を対応付ける。次にコンピュータは、複数の項目値集合それぞれが、同一の第1項目値に対応付けられた2個以上の第2項目値のうちの1個からn-1個のいずれかの個数の第2項目値を含むように、第2項目値それぞれを複数の項目値集合のいずれかに分類する。次にコンピュータは、秘匿レコード内の一の項目に設定されている第1項目値を、対応付けられた第2項目値のいずれかに確率的に変換する。次にコンピュータは、秘匿レコード群に基づいて、ダミーの第2項目値の追加により、同一の項目値集合に属する第2項目値に対する検索のヒット件数の均等化を図った攪乱レコード群を生成する。次にコンピュータは、攪乱レコード群内のレコードに、レコードに含まれる第2項目値の真偽を示すフラグを付与する。そしてコンピュータは、攪乱レコード群を暗号化する。
【発明の効果】
【0009】
1態様によれば、暗号化されたデータへの頻度分析攻撃に対する安全性を向上させることができる。
【図面の簡単な説明】
【0010】
【
図1】第1の実施の形態に係る秘密情報管理システムの一例を示す図である。
【
図2】秘密情報管理システムの一例を示す図である。
【
図3】データ管理サーバのハードウェアの一構成例を示す図である。
【
図5】ダミー要素を用いた変換集合の生成例を示す図である。
【
図6】ダミー要素を用いた場合の項目値の変換例を示す図である。
【
図7】ダミー要素を用いた場合のダミー値の生成例を示す図である。
【
図8】ダミー要素を用いた場合の登録データの一例を示す図である。
【
図11】頻度攪乱後の頻度分布の一例を示す図である。
【
図12】ダミー要素を用いた場合の組み合わせ頻度の一例を示す図である。
【
図13】構造的ゼロを利用した検索対象の絞り込みの一例を示す図である。
【
図14】分割キーワードへの確率的変換の一例を示す図である。
【
図15】変換集合による分割キーワードからダミー値への変換の一例を示す図である。
【
図16】変換集合の他の生成例を示す第1の図である。
【
図17】変換集合の他の生成例を示す第2の図である。
【
図18】秘密情報管理システムの機能を示すブロック図である。
【
図19】ダミーデータを用いた出現頻度の攪乱処理の一例を示す図である。
【
図20】平文の患者データのDBの一例を示す図である。
【
図21】データ登録サーバ内の変換情報記憶部に格納される情報の一例を示す図である。
【
図25】分割キーワードを用いて生成した登録データの一例を示す図である。
【
図27】データ登録処理の手順の一例を示すフローチャートである。
【
図28】変換集合生成処理の手順の一例を示すフローチャートである。
【
図29】ダミーデータ生成処理の手順の一例を示すフローチャートである。
【
図31】端末装置内の変換情報記憶部に格納される情報の一例を示す図である。
【
図32】分割キーワードへの変換の一例を示す図である。
【
図35】検索処理の手順の一例を示すフローチャートである。
【
図38】分割キーワードによる頻度攪乱の一例を示す図である。
【
図40】共通キーワードへの変換の一例を示す図である。
【
図41】共有集合の他の生成例を示す第1の図である。
【
図42】第3の実施の形態におけるデータ登録サーバの変換情報記憶部に格納される情報の一例を示す図である。
【
図44】共有キーワードが格納された秘匿化DBの一例を示す図である。
【
図45】データ登録処理の手順の一例を示すフローチャートである。
【
図46】共有キーワードへ変換する処理手順の詳細を示すフローチャートである。
【
図47】分割キーワードから共有キーワードへの変換の一例を示す図である。
【
図48】登録データのレコードの一例を示す図である。
【
図49】第3の実施の形態における端末装置の変換情報記憶部に格納される情報の一例を示す図である。
【
図51】共有キーワードを用いた秘匿化検索の一例を示す図である。
【
図52】検索処理の手順の一例を示すフローチャートである。
【
図53】共有キーワードを用いた場合の頻度分析攻撃の困難性を示す図である。
【
図55】年齢の共有集合の生成例(比較例)を示す図である。
【
図57】群数を3とした場合の共有集合の生成例を示す図である。
【発明を実施するための形態】
【0011】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず、第1の実施の形態について説明する。第1の実施の形態は、キーワードを複数の分割キーワードに確率的に変換し、分割キーワードを暗号化してデータベース(DB)に登録することで、秘密情報として管理するキーワードの頻度攪乱を実現するものである。このようにして頻度攪乱をしたデータ登録方法およびそのデータの検索方法を含む秘密情報管理方法は、SCPDK(Share Ciphertext with Probabilistically Divided Keywords)と呼ぶことができる。
【0012】
図1は、第1の実施の形態に係る秘密情報管理システムの一例を示す図である。
図1には、秘密情報管理システムを用いた秘密情報管理方法の実現例を示している。秘密情報管理システムは、データ登録装置1、サーバ2、およびデータ利用装置3を有している。データ登録装置1、サーバ2、およびデータ利用装置3それぞれは、例えば秘密情報管理方法を実現するための各装置における処理手順が記述されたプログラムを実行することにより、秘密情報管理方法における各装置の処理を実施することができる。
【0013】
データ登録装置1は、秘密情報管理方法を実現するために、記憶部1aと処理部1bとを有する。記憶部1aは、例えばデータ登録装置1が有するメモリ、またはストレージ装置である。処理部1bは、例えばデータ登録装置1が有するプロセッサ、または演算回路である。図示していないが、サーバ2とデータ利用装置3も、記憶部と処理部とを有する。例えばサーバ2の記憶部は、秘匿化データベース(DB)2aを記憶する。
【0014】
データ登録装置1の記憶部1aは、秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群4を記憶する。
データ登録装置1の処理部1bは、第2項目値の生成と分類とを行う(ステップS1)。具体的には処理部1bは、まず秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群4における秘匿レコード内の一の項目に設定可能な複数の第1項目値それぞれに対して、n個(nは自然数)の第2項目値を対応付ける。
図1の例では、第1項目値「小児科」は第2項目値「小児科0」、「小児科1」に対応付けられ、第1項目値「婦人科」は第2項目値「婦人科0」、「婦人科1」に対応付けられ、第1項目値「内科」は第2項目値「内科0」、「内科1」に対応付けられている。
【0015】
なお一部の第1項目値については、対応する第2項目値が1つであることも許容される。対応する第2項目値が1つの場合、第1項目値と第2項目値とは同じ値であってもよい。
【0016】
処理部1bは、複数の項目値集合5a~5cそれぞれが、同一の第1項目値に対応付けられた2個以上の第2項目値のうちの1個からn-1個のいずれかの個数の第2項目値を含むように、第2項目値それぞれを複数の項目値集合5a~5cのいずれかに分類する。例えば処理部1bは、項目値集合5aに「小児科0」と「内科0」を分類し、項目値集合5bに「小児科1」と「婦人科0」を分類し、項目値集合5cに「婦人科1」と「内科1」を分類する。このとき処理部1bは、複数の項目値集合において、属する第2項目値に対応する第1項目値の組み合わせが同じとなることを抑止する。
【0017】
次に処理部1bは、秘匿レコード内の一の項目に設定されている第1項目値を、対応付けられた第2項目値のいずれかに確率的に変換する(ステップS2)。例えば各第2項目値には、ランダムに決定された選択確率が設定されている。処理部1bは、第1項目値に対して、対応付けられた第2項目値のうちの1つを、それぞれの選択確率に従った確率で選択し、その第1項目値を選択した第2項目値に変換する。
【0018】
処理部1bは、秘匿レコード群4に基づいて、ダミーの第2項目値の追加により、同一の項目値集合に属する第2項目値に対する検索のヒット件数の均等化を図った攪乱レコード群6を生成する(ステップS3)。例えば処理部1bは、項目値集合に属する第2項目値それぞれを同一の項目値集合に属する異なる第2項目値に全単射する全単射関係に従って、秘匿レコードそれぞれの一の項目に設定された第2項目値それぞれに対応するダミー値を生成する。次に処理部1bは、ダミー値が一の項目に設定された、秘匿レコードと同数のダミーレコードを有するダミーレコード群を生成する。そして処理部1bは、秘匿レコード群とダミーレコード群とを含む攪乱レコード群6を生成する。
【0019】
さらに処理部1bは、攪乱レコード群6内のレコードに、そのレコードに含まれる第2項目値の真偽を示すフラグを付与する(ステップS4)。例えば処理部1bは、秘匿レコードに真を示す第1フラグを付与し、ダミーレコードに偽を示す第2フラグを付与する。
【0020】
処理部1bは、攪乱レコード群を暗号化する(ステップS5)。例えば処理部1bは、秘匿レコードとダミーレコードそれぞれの一の項目に設定された第2項目値、秘匿レコードに付与された第1フラグ、並びにダミーレコードに付与された第2フラグを暗号化する。
【0021】
そして処理部1bは、暗号化された攪乱レコード群6を、例えばサーバ2の秘匿化DB2aに格納する。
このようにして、ダミーレコードの追加によって頻度分析攻撃に対する安全性を向上させた攪乱レコード群6が、サーバ2の秘匿化DB2aに格納される。サーバ2は、秘匿化DB2aに格納されたデータに対する検索サービスをデータ利用装置3に提供する。
【0022】
データ利用装置3は、データ登録装置1が生成した項目値集合5a~5cの情報、および第1項目値と第2項目値との対応関係を示す情報を有している。例えばデータ利用装置3は、これらの情報をデータ登録装置1から取得する。またデータ利用装置3はデータ登録装置1の処理部1bと同じアルゴリズムで第1項目値に基づく第2項目値の生成および第2項目値の項目値群への分類を行ってもよい。
【0023】
データ利用装置3は、検索者から検索条件の入力を受け付ける。検索条件には、例えば秘匿化DB2aの一の項目の検索項目値が示される。データ利用装置3は、検索条件に応じた検索クエリをサーバ2に送信する。例えばデータ利用装置3は、検索条件に示される一の項目の検索項目値を、検索項目値と同じ値の第1項目値に対応する第2項目値それぞれに変換する。データ利用装置3は、変換により得られた第2項目値を暗号文のまま検索する検索クエリをサーバ2に送信する。例えばデータ利用装置3は、第2項目値の暗号文の論理和を含む検索クエリをサーバ2に送信する。
【0024】
サーバ2では、受信した検索クエリに応じて暗号文のまま検索を行う。例えばサーバ2は、検索クエリ内の暗号文のままの第2項目値と、秘匿化DB2a内の各レコードの暗号文の項目値とを照合する。サーバ2は、検索項目値に一致する項目値が設定されたレコードを含む検索結果をデータ利用装置3に送信する。
【0025】
データ利用装置3は、サーバ2から、秘匿化DB2a内の検索クエリにヒットした検出レコードを取得する。そしてデータ利用装置3は、検出レコードに付与されたフラグに基づいて、検出レコード内の第2項目値にヒットした値の真偽を判断し、真の検索結果を表示する。
【0026】
例えばデータ利用装置3は、検索結果に含まれる秘匿レコードとダミーレコードそれぞれの一の項目に設定された項目値、秘匿レコードに付与された第1フラグ、およびダミーレコードに付与された第2フラグを復号する。次にデータ利用装置3は、第1フラグおよび第2フラグに基づいて、検索結果からダミーレコードを除去し、検索条件を満たす秘匿レコードを取得する。そしてデータ利用装置3は、真の検索結果を例えば表示画面に表示する。
【0027】
このようにして秘匿レコード群4内での第1項目値それぞれの出現頻度を攪乱し、秘匿化DB2aに対する頻度分析攻撃への安全性を向上させることができる。
なお処理部1bは、ダミーレコード群が複数ある場合、秘匿レコードの一の項目に設定された第2項目値が、ダミーレコード群ごとに異なる第2項目値に変換されるように、ダミーレコード群ごとに異なる全単射関係を利用することができる。これにより、頻度分析攻撃に対する安全性をさらに向上させることができる。
【0028】
処理部1bは、1または複数生成されたダミーレコード群ごとに異なり、第1フラグとも異なる値の第2フラグを、ダミーレコード群それぞれに含まれるダミーレコードに設定してもよい。例えば処理部1bは、秘匿レコードの識別子と秘匿レコード群の群番号を示す値とを含む第1フラグを秘匿レコードに付与し、ダミーレコードの識別子と、属するダミーレコード群の群番号とを含む第2フラグをダミーレコードに設定する。これにより、第2フラグの値に基づいてダミーレコードが属するダミーレコード群を識別することができる。その結果、ダミーレコード内の第2項目値を第1項目値に逆変換することで、ダミーレコードに基づいて元のレコードを再現することが可能となる。
【0029】
データ登録装置1は、ダミーレコードを用いずに頻度攪乱を実現することもできる。例えば処理部1bは、秘匿レコード内の一の項目に設定されている第2項目値を、第2項目値が属する項目値集合に対応付けられ、同じ項目値集合に属するいずれの第2項目値に対する検索にもヒットする第3項目値に変換することで攪乱レコードを生成する。そして処理部1bは、生成した攪乱レコードを含む攪乱レコード群を生成する。これにより、ダミーレコードを用いずに済み、秘匿化DB2aに登録するデータ量を削減することができる。
【0030】
第2項目値を第3項目値に変換する場合、処理部1bは、例えば攪乱レコードに、変換前の第2項目値を示す情報を含む第3フラグを付与する。処理部1bは、例えば秘匿レコードの識別子と、変換前の第2項目値に対応する要素の項目値集合内での要素番号とを含む第3フラグを、秘匿レコードに付与する。さらに処理部1bは、攪乱レコードの一の項目に設定された第3項目値、および付与された第3フラグを暗号化する。
【0031】
データ利用装置3は、第3フラグを用いて第3項目値を変換元の第2項目値に戻し、その第2項目値に対応する第1項目値を取得できる。例えばデータ利用装置3は、検索条件に示される一の項目の検索項目値を、検索項目値と同じ値の第1項目値に対応する1または複数の第2項目値それぞれに変換後、第2項目値を、その第2項目値に対応する第3項目値に変換する。そしてデータ利用装置3は、第3項目値の暗号文を含む検索クエリをサーバ2に送信する。
【0032】
その後、データ利用装置3は、サーバ2から、秘匿化DB2a内の検索クエリによる検索結果を取得する。次にデータ利用装置3は、検索結果に含まれる攪乱レコードそれぞれに設定された第3項目値と第3フラグとを復号する。さらにデータ利用装置3は、第3フラグに基づいて第3項目値の変換元の第2項目値を判断する。そしてデータ利用装置3は、検索条件を満たす第1項目値に対応する第2項目値の暗号文が格納された攪乱レコードを、検索結果から抽出する。
【0033】
第1項目値が数値の場合、数値範囲検索が行われることにより、暗号文の元の平文の数値の並びが解析され、検索対象の絞り込みに利用される可能性がある。処理部1bは、複数の第1項目値が数値の場合、第2項目値を複数の項目値集合5a~5cのいずれかに分類する際に、数値の連続性を考慮した分類を行う。例えば処理部1bは、複数の第1項目値が数値の場合、第1数値範囲内の連続する複数の数値それぞれに対応する第2項目値を含む項目値集合に、第1数値範囲と重複しない第2数値範囲内の連続する数値それぞれに対応する第2項目値が含まれるようにする。これにより、数値の検索が行われた場合に、攻撃者によって、その数値の候補が、狭い数値範囲内の値に絞り込まれてしまうことを抑止できる。
【0034】
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、多数の医療機関が有する患者データを、患者データ収集活用基盤を用いて有効活用するものである。例えば患者データ収集活用基盤により、複数の病院のデータを統合してビッグデータ化し、ビッグデータを複数の製薬企業で活用できるようにする。これにより、製薬企業や病院は、新薬開発のための調査(対象疾患の患者数や所在地域など)を容易に把握できるようになる。
【0035】
患者データ収集活用基盤は、ICT(Information and Communications Technology)企業が管理するクラウドを用いて実現するのが効率的である。クラウドを用いることで、病院や製薬企業からのビッグデータへのアクセスが容易となる。しかしながら、患者データは要配慮個人情報であり、法的に参照が許される手続きを経たとしても、漏洩や目的外利用のリスクを考慮し、クラウドの管理者に対しても秘匿しておくのが適切である。また製薬企業による検索の内容は製薬企業の戦略に関する重要な企業秘密に結びつくため、検索内容についても秘匿しておくことが望ましい。そこで、患者データ収集活用基盤を実現するクラウドは、例えば暗号化したまま検索可能な暗号化方式を用いて、暗号化された患者データをDBで管理すると共に、暗号化された検索キーワードを用いて、暗号文のままでデータ検索を行う。これにより、クラウドの管理者に対しても、患者データと検索クエリの内容を秘匿しておくことができる。
【0036】
複数の組織(例えば病院)のデータを同じ仕組みで使用する場合、DBのフォーマットや格納する属性名と値の仕様は、共通の仕様として公開される。しかもシステム開発も担うクラウドの管理者は、秘匿化のアルゴリズムを熟知している。すると、クラウドの管理者の中に悪意を有する者が存在した場合、患者データを暗号文のまま管理するだけでは不十分な場合があり得る。
【0037】
ここで、絞り込み検索などを用いて効率よく検索を行うために、データは行列形式で格納することを想定する。この場合、例えば項目「性別」のラベルが振られた列では平文候補が「男」または「女」の2種類しかなく、秘匿化DB内には同じ平文に基づく暗号文が多数存在することとなる。そして、攻撃者となり得るクラウドの管理者はこれらの暗号文を比較参照できる。
【0038】
さらに、大きな病院では広報の一環として疾患別患者数などの情報を公開している。同様にあらゆる情報について、このような頻度情報が公開される可能性がある。そのため、すべてのデータの頻度分布は公知となる場合がある。例えば複数の項目の値の組み合わせ頻度(肺がんの男性の人数など)についても公知となり得る。また、医療情報は日々新たな情報が追加され、利活用者は最新の情報を求める。よって、秘匿化DBは逐次最新の平文DBとの差分が反映できることが重要である。
【0039】
以上により、第2の実施の形態では、以下の条件(i)~(v)下でも秘匿化DBの内容や検索内容が、秘匿化DBを管理するクラウド管理者を含む攻撃者に対し秘匿できることを、セキュリティ要件とする。
(i)平文の種類や値は公知であり、極めて種類が少ない場合もあり得る。
(ii)攻撃者は、秘匿化DB内に存在するすべての暗号文と暗号化された検索クエリおよびこれに合致した秘匿化DB内の暗号文をすべて参照可能である。
(iii)意図的に秘密情報として管理する情報(秘密鍵)以外の、暗号化や照合のアルゴリズムは公知である。
(iv)すべてのデータの頻度分布は組み合わせも含めて公知である。
(v)秘匿化DBは逐次更新され、攻撃者は差分情報を参照可能である。
【0040】
条件(i)~(v)を満たす秘匿化DBがあるとき、容易に想定される攻撃手法としては総当たり攻撃が考えられる。平文の種類が少なく公知なため、暗号化鍵が公知である場合、攻撃者は全種類の平文を暗号化して平文と暗号文の辞書を作成することで、秘匿化DB内のデータや検索クエリを容易に解読できてしまう。よって、セキュリティ要件を満たすには、暗号化鍵は秘密鍵とすることとなる。
【0041】
また、秘匿化DBの管理者でもある攻撃者は照合判定の結果を参照できる。そのため、ある検索クエリに対し一致判定された暗号文はすべて同じ平文に対応することが分かってしまう。よって、同じ平文でも暗号化するたびに異なる暗号文となる確率的暗号を用いても、攻撃者は同じ平文が同じ暗号文となる確定的暗号のような暗号文に変換できてしまう。そして、攻撃者はデータの頻度分布を知っているため、暗号文の頻度と比較することで容易に秘匿データの内容を推定できてしまう。頻度分布を正確に知らない場合でも、例えば婦人科の性別データを参照すると、多い方の暗号文の平文は「女」であると容易に特定できる。よって、暗号化だけでなく頻度攪乱などの対策を採ることが重要となる。
【0042】
そこで第2の実施の形態では、条件(i)~(v)下でも秘匿化DBの内容や検索内容を、攻撃者に対し秘匿できる秘密情報管理システムを提供する。第2の実施の形態に係る秘密情報管理システムでは、ダミーデータを追加することで頻度攪乱を実現する。この際、秘密情報管理システムは、データの増加率は一定に保ち、不要なストレージや検索処理の増加を防止する。そして秘密情報管理システムは、ダミーレコードを追加することにより、ある1種類の項目値に対し、出現頻度が同程度となる他の種類の項目値の絞り込みを抑止する。例えば秘密情報管理システムは、攻撃者が検索クエリにヒットしたレコード数からその検索クエリで指定された項目値の候補を絞り込もうとしても、容易には絞り込めないようにする。
【0043】
図2は、秘密情報管理システムの一例を示す図である。第2の実施の形態では、患者データ収集活用基盤12がクラウドによって構築されている。患者データ収集活用基盤12はデータ管理サーバ100を有している。データ管理サーバ100は、患者データを暗号文のままで管理するコンピュータである。データ管理サーバ100は、ネットワーク20を介して、病院13,14のデータ登録サーバ200,300と製薬企業15,16の端末装置400,500に接続されている。
【0044】
病院13のデータ登録サーバ200は、病院13で受診した患者の電子カルテなどの患者データを蓄積し、その患者データを暗号化してデータ管理サーバ100に提供するコンピュータである。同様に、病院14のデータ登録サーバ300は、病院14で受診した患者の電子カルテなどの患者データを蓄積し、その患者データを暗号化してデータ管理サーバ100に提供する。
【0045】
製薬企業15の端末装置400は、データ管理サーバ100で管理されている患者データを検索するために、製薬企業15の社員が使用するコンピュータである。製薬企業16の端末装置500は、データ管理サーバ100で管理されている患者データを検索するために、製薬企業16の社員が使用するコンピュータである。
【0046】
このような秘密情報管理システムは、例えば医療情報を活用した新薬開発の効率化に有用である。例えば、製薬企業15,16が、治験を行う場合、対象疾患の患者がどの程度存在するか等を考慮して計画を立案することで、治験の成功率を向上させることができる。そこで、患者データ収集活用基盤12で多数の病院13,14に分散する患者の電子カルテから抽出した患者データを集中管理することで、目的の疾患を有する患者の情報を容易に得ることが可能となる。
【0047】
なおデータ登録サーバ200,300は、第1の実施の形態におけるデータ登録装置1の一例である。データ管理サーバ100は、第1の実施の形態におけるサーバ2の一例である。端末装置400,500は、第1の実施の形態におけるデータ利用装置3の一例である。
【0048】
図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)などの電子回路で実現してもよい。
【0049】
メモリ102は、データ管理サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0050】
バス109に接続されている周辺機器としては、ストレージ装置103、GPU(Graphics Processing Unit)104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
【0051】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0052】
GPU104には、モニタ21が接続されている。GPU104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。GPU104は、グラフィックコントローラと呼ばれることもある。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
【0053】
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0054】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
【0055】
機器接続インタフェース107は、データ管理サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
【0056】
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【0057】
データ管理サーバ100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なおデータ登録サーバ200,300および端末装置400,500も、データ管理サーバ100と同様のハードウェアにより実現することができる。さらに
図1に示したデータ登録装置1、サーバ2、およびデータ利用装置3も、データ管理サーバ100と同様のハードウェアにより実現することができる。
【0058】
データ管理サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。データ管理サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、データ管理サーバ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またデータ管理サーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0059】
次に、暗号データを格納するDB(秘匿化DB)に対する頻度分析攻撃について説明する。
図4は、頻度分析攻撃の一例を示す図である。平文のデータを記憶するDB31に基づいて、秘匿化DB32が生成されているものとする。例えばDB31の各レコードに含まれる項目ごとの項目値が個別に暗号化され、秘匿化DB32に格納されている。なお第2の実施の形態では、各項目に設定される項目値をキーワードと呼ぶこともある。
【0060】
図4の例では、同一の平文からは同一の暗号データが生成される確定的暗号化技術によって暗号化が行われているものとする。また攻撃者33は、元のDB31の項目に用いられている項目名(「診療科」、「性別」、「年齢層」)および各項目に格納され得るキーワードの候補(キーワード一覧)のすべてを知っているものとする。
【0061】
攻撃者33は、暗号文の出現頻度と公知の頻度情報を比較して、暗号文に対応する平文を類推することができる。例えば秘匿化DB32の2列目には、値が2種類しか登録されていない。そのため攻撃者33は、秘匿化DB32の2列目の項目「性別」に該当すると類推することができる。
【0062】
さらに攻撃者33は、秘匿化DB32の2列目の値「tmuesf」と「uylgm」との出現頻度を比較し、「uylgm」の方が多いことを確認できる。すると攻撃者33は、人口分布を考えると出現頻度が多い方の「uylgm」が、「女」に対応する暗号データであると類推できる。
【0063】
攻撃者33は、複数の項目値の組み合わせによっても内容を類推できる。例えば攻撃者33は、秘匿化DB32の1列目の値「sEfgsr」に対応する2列目の値は「uylgm」のみであることを確認できる。すると攻撃者33は、片方の性別との組み合わせしかない値は、診療科における「婦人科」であると類推することができ、「uylgm」の平文が「女」であることを強く確信できる。
【0064】
また攻撃者33は、秘匿化DB32の1列目の値「:opfyy」に対応する3列目の値は「jr8olt」のみであることを確認できる。すると攻撃者33は、残りの3列目は年齢層であり、特定の年齢層との組み合わせしかない診療科は「小児科」であり、対応する年齢層は「児童」であると類推できる。
【0065】
なお、
図4の例では、確定的暗号化によって暗号化された場合を想定しているが、確率的暗号化で暗号化された秘匿化DBに対しても頻度分析攻撃は可能である。確率的暗号化とは、同じ平文でも暗号化するたびに異なる暗号文に暗号化する暗号化技術である。確率的暗号化を行うと、同じ平文から生成された複数の暗号文のそれぞれの値が異なるため、暗号化DB内を参照しただけでは、元の平文の出現頻度を数えられない。そのため、確率的暗号化で暗号することで、確定的暗号化よりも頻度分析攻撃が困難となる。
【0066】
ただし、確率的暗号化を用いても、秘匿化DBを検索対象とする秘匿化検索を許容すると、攻撃者33は、検索クエリに一致した暗号文はすべて同じ平文の暗号文であることが分かり、それらの暗号文は確定的暗号に変換できてしまう。そのため確率的暗号化を用いても、攻撃者33は、データが活用されるに従って秘匿化DB内の多数の暗号文を確定的暗号に変換でき、確定的暗号化で暗号化した場合と同様に頻度分析攻撃が可能となる。
【0067】
このように頻度分析攻撃は、平文と暗号文に使用される文字や文字列の出現頻度を手掛りとして平文を類推し、盗み見る攻撃手法である。そして、元の平文の項目値に偏りがある場合に、その平文を暗号化した暗号文は、頻度分析攻撃に対して脆弱となる。
【0068】
そこで頻度分析攻撃に対する安全性を高めるために、ダミーデータを用いて、元の平文の出現頻度を攪乱させることが考えられる。このとき、元の平文での項目値の種類や、各項目値の出現頻度を考慮せずにダミーデータ内の各項目の項目値(ダミー値)を追加しても、出現頻度を適切に攪乱させることはできない。
【0069】
例えば元の平文のデータにおける項目値の出現頻度を考慮して、適切な内容のダミー値を有するダミーデータを登録することで、確実な頻度攪乱を実現することができる。この場合、データ登録サーバ200,300は、真のデータの頻度分布と同じ分布であるが、それぞれの値が別の値に変換されたダミーレコード群を生成する。このダミーレコード群の各ダミーレコードは真のデータのレコードに紐付き、1対1で対応する。そしてデータ登録サーバ200,300は、真のデータのレコードの項目値を別の項目値に変換して対応するダミーレコードのダミー値として設定する。この変換規則を定めたものを変換集合と呼ぶ。
【0070】
以下に、第2の実施の形態に使用する文字または用語の意味について説明する。
「k」は、予め設定されたセキュリティパラメータであり、2以上の整数が設定される。システムの管理者は、1つの項目の複数のキーワードのうち、頻度分析攻撃を受けたときに攻撃者33が絞り込むことを許容可能な最小のキーワード数をkに設定する。
【0071】
「真のデータ」は、平文のDBに格納されているデータである。「真のデータのレコード」は、真のデータ内のキーワードを含むレコードである。なお真のデータのレコードは、第1の実施の形態の秘匿レコードの一例である。「ダミー値」は、真のデータの頻度分布を攪乱するために追加した値である。「ダミーレコード」は、ダミー値を含むレコードである。「真の値」は、平文のDBに設定可能なキーワードである。真の値は、第1の実施の形態における第1項目値の一例である。
【0072】
「G」は群数であり、ダミーデータの追加によりデータ量が平文データの何倍になるかを示す値でもある。「群」は、複数のレコードの集合である。真のデータのレコードの集合が群「0」である。真のデータのレコード数と同数のダミーレコードを含むG-1個の群「1,2,・・・,G-1」が生成される。群「0」に含まれる1つのレコードに対し、G-1個のダミーレコードが生成され、G-1個のダミーレコードは、それぞれ群「1,2,・・・,G-1」に1つずつ追加される。「フラグ」は、端末装置400,500がダミーレコードを見分けられるように、ダミーレコードに付与される値である。
【0073】
「変換集合」は、各列(項目)について、真の値、分割キーワード(真の値から1つまたは複数生成されたキーワード)、またはダミー要素を含む集合である。変換集合には、1つの真の値に対してどのような値のダミーレコードを追加するかを決定するためのルールが表されている。変換集合の要素数は群数Gと等しい。変換集合は、分割クエリの攪乱や、秘匿化検索結果の復元にも用いられる。
【0074】
「j」は列番号である。jは、レコードに登録された値の項目を特定するインデックスとして用いられる。「Xj」は、レコード内のj番目の列のフィールドに設定可能な項目値(キーワード)の種類数である。
【0075】
「ダミー要素」は、XjがGより小さいかまたはGの倍数でない場合、変換集合に含める要素の不足を埋めるためのダミーの要素である。ダミー要素は、キーワード一覧には含まれない値である。
【0076】
次に、元の平文のデータにおける項目値の出現頻度を考慮したダミーデータの登録手法について説明する。
ダミーデータの登録手法の一例として、ダミー要素を用いる方法が考えられる。ダミー要素を用いる場合、データ登録サーバ200,300は、各項目の取り得るキーワードまたはダミー値から任意にG個選んだものを要素として変換集合を生成する。そしてデータ登録サーバ200,300は、各項目の取り得るキーワードがいずれか1つの変換集合の要素として含まれるまで変換集合を生成する。
【0077】
図5は、ダミー要素を用いた変換集合の生成例を示す図である。
図5の例では、真のデータのレコードは、「血圧」と「血液型」の項目が含まれているものとする。キーワードリスト34には、項目ごとに、その項目に設定可能なキーワードが登録されている。
図5の例では、「血圧」に設定可能な項目値が3種類(正常、低血圧、高血圧)であり、「血液型」に設定可能な項目値が8種類(A+、B+、O+、AB+、A-、B-、O-、AB-)である。
【0078】
図5の変換集合一覧35には、k=3,G=4の場合に、3種類のキーワードをもつ項目「血圧」と8種類のキーワードをもつ項目「血液型」の2項目それぞれに対応して生成された変換集合35a,35b,35cが示されている。項目「血圧」に対しては、{正常、低血圧、高血圧、D1}を要素として含む変換集合35aが1つだけ生成されている。「D1」は、ダミー要素である。項目「血液型」に対しては、{A+,B+,O+,AB+}を要素として含む変換集合35bと、{A-,B-,O-,AB-}を要素として含む変換集合35cとの2つが生成されている。
【0079】
変換集合35a,35b,35cは、循環リスト構造となっており、要素が順番に配置されている。変換集合35a,35b,35c内の各要素には、先頭から順に、0から昇順の要素番号が付与される。例えば変換集合35aでは、図中の左端を先頭とすると、「正常」が先頭の要素(要素番号「0」)であり、「低血圧」が次の要素(要素番号「1」)である。循環リスト構造となっているため、例えば最後の要素「D1」の次の要素は「正常」となる。
【0080】
データ登録サーバ200,300は、真のデータのレコードのキーワードを、変換集合35a,35b,35cに基づいて変換することで、ダミーレコードに設定するダミー値を生成する。例えばデータ登録サーバ200,300は、真のデータのレコードの1つのキーワードに基づいて、ダミーレコード群ごとに、そのダミーレコード群内のダミーレコードに設定するダミー値を1つ生成する。
【0081】
図6は、ダミー要素を用いた場合の項目値の変換例を示す図である。例えばデータ登録サーバ200,300は、真のデータのレコードについて、項目ごとに登録されているキーワードを参照し、そのキーワードが含まれる変換集合と、そのキーワードに該当する要素b
aを特定する。aは0以上の整数の要素番号であり、要素b
aは要素番号aの要素である。そしてデータ登録サーバ200,300は、真のデータに含まれるキーワードの要素b
aに基づいて、以下の式(1)により、群番号gのダミーレコード群のダミー値c
a,gを、変換集合を参照して決定する。
c
a,g=b
mod(a+g,G) (1)
図6の例では、真のデータのレコードに出現する項目値は「低血圧」であるものとする。ダミーレコード群が3つである(G=4)ため、データ登録サーバ200,300は、キーワード「低血圧」を含む変換集合35aに基づいて、3つのダミーレコード群(g=1,2,3)それぞれのダミーレコードに設定するダミー値を生成する。まずデータ登録サーバ200,300は、キーワード「低血圧」に対応する要素の変換集合35a内での要素番号「1」(a=1)を取得する。
【0082】
データ登録サーバ200,300は、群番号「1」(g=1)のダミーレコード群のダミー値c1,1を生成する場合、まず、mod(1+1,4)=2を計算する。そしてデータ登録サーバ200,300は、計算して得られた値「2」を要素番号とする変換集合35a内の要素b2に対応するキーワード「高血圧」を、群番号「1」のダミーレコード群に設定するダミー値に決定する。
【0083】
データ登録サーバ200,300は、群番号「2」(g=2)のダミーレコード群のダミー値c1,2を生成する場合、まず、mod(1+2,4)=3を計算する。そしてデータ登録サーバ200,300は、計算して得られた値「3」を要素番号とする変換集合35a内の要素b3に対応するダミー要素「D1」を、群番号「2」のダミーレコード群に設定するダミー値に決定する。
【0084】
データ登録サーバ200,300は、群番号「3」(g=3)のダミーレコード群のダミー値c1,3を生成する場合、まず、mod(1+3,4)=0を計算する。そしてデータ登録サーバ200,300は、計算して得られた値「0」を要素番号とする変換集合35a内の要素b0に対応するキーワード「正常」を、群番号「3」のダミーレコード群に設定するダミー値に決定する。
【0085】
なお、
図6に示したようなキーワードの変換元と変換先との関係は、全単射の関係の一例である。全単射関係を満たしていれば、
図6に示す例とは別の規則で変換元のキーワードと変換先のキーワードまたはダミー要素との関係を定義してもよい。
【0086】
データ登録サーバ200,300は、
図6に示したようなダミー値の生成を、真のデータに出現する項目値それぞれについて行う。なお、以下の説明では、ある平文に対応する暗号文をH(平文)と表すこととする。
【0087】
図7は、ダミー要素を用いた場合のダミー値の生成例を示す図である。
図7の例では、真のデータ36には、項目「血圧」のキーワードとして、「正常」が2回出現し、「低血圧」と「高血圧」とがそれぞれ1回ずつ出現している。また項目「血液型」の項目値として、「A+」が2回出現し、「O-」と「AB-」とがそれぞれ1回ずつ出現している。
【0088】
真のデータ36に出現するキーワードそれぞれに基づいて、ダミーレコード群それぞれに設定するダミー値が生成されている。例えば血圧「正常」に基づいて、群番号1(g=1)のダミーレコード群用のダミー値「低血圧」、群番号2(g=2)のダミーレコード群用のダミー値「高血圧」、群番号3(g=3)のダミーレコード群用のダミー値「D1」が生成されている。また例えば血液型「A+」に基づいて、群番号1(g=1)のダミーレコード群用のダミー値「B+」、群番号2(g=2)のダミーレコード群用のダミー値「O+」、群番号3(g=3)のダミーレコード群用のダミー値「AB+」が生成されている。
【0089】
データ登録サーバ200,300は、生成したダミー値をダミーレコードに割り当て、項目値を暗号化することで登録データを生成する。
図8は、ダミー要素を用いた場合の登録データの一例を示す図である。登録データ37には、真のデータ36のレコード群37aとダミーレコード群37b,37c,37dが含まれている。登録データ37内の各レコードにはフラグが付与されている。そして登録データ37に含まれるキーワード(フラグ値も含む)が暗号化されている。
【0090】
フラグ値は、真のデータのレコードとダミーレコードとを識別するために用いられる。例えば真のデータのレコードにはフラグ値「0」を設定し、ダミーレコードにはフラグ値「1」を設定することができる。この場合、G≧3のときにはフラグ値「0」の暗号文(H(0))よりもフラグ値「1」の暗号文(H(1))の方が多くなる。すると、攻撃者33は、フラグ値の暗号文の出現頻度に基づいて、そのレコードが真のデータのレコードなのかを判断できてしまう。そこでデータ登録サーバ200,300は、フラグ値の暗号文についても頻度攪乱を行う。
【0091】
例えばデータ登録サーバ200,300は、
図8に示すように各レコードが属する群の群番号を、そのレコードのフラグとして使用することができる。各群に属するレコード数は等しいため、これによりフラグ値の出現頻度がすべて等しくなる。
【0092】
またデータ登録サーバ200,300は、フラグ値を決定するために、真のデータのレコード群およびダミーレコード群それぞれについて、同一の変数の値に対して異なる値を出力する異なる関数を用意してもよい。この場合、データ登録サーバ200,300は、用意した関数にID列の値を変数xとして入力した値をフラグ値とする。
【0093】
群番号gの群(真のデータのレコード群またはダミーレコード群)のフラグ値生成関数をf
g(x)としたとき、例えば以下のようなフラグ値生成関数を用いることができる。
f
g(x)=(G+1)x+g (2)
図8の例ではG=4である。従って、真のデータのレコード群37a(群番号「0」)のフラグ値生成関数は「f
0(x)=4x+0」となる。ダミーレコード群37b(群番号「1」)のフラグ値生成関数は「f
1(x)=4x+1」となる。ダミーレコード群37c(群番号「2」)のフラグ値生成関数は「f
2(x)=4x+2」となる。ダミーレコード群37d(群番号「3」)のフラグ値生成関数は「f
3(x)=4x+3」となる。
【0094】
端末装置400,500は、検索の際には、真のデータのレコード群37aまたはいずれか1つのダミーレコード群37b,37c,37dを検索対象として指定した検索クエリを発行する。データ管理サーバ100は、検索クエリに対する応答として、検索条件に合致したレコードを検索結果として応答する。そのときデータ管理サーバ100は、検索結果にID列とフラグ列のフラグ値とを含める。端末装置400,500は、検索結果に示されるレコードのIDを、群ごとのフラグ値生成関数それぞれに入力し、得られた関数値を暗号化する。そして端末装置400,500は、フラグ値生成関数の関数値の暗号文とレコードのフラグ値(暗号文)と比較する。端末装置400,500は、比較の結果が一致したフラグ値生成関数に対応する群が、そのレコードが属する群であると判断する。
【0095】
このようにして生成された登録データ37では、同一の変換集合に属する要素に対応する暗号文の出現頻度の均一化が図られている。
図9は、暗号文の均一化を説明する図である。例えば血圧の項目に設定可能なキーワードは、すべて1つの変換集合35a(
図5参照)に属している。真のデータ36におけるキーワード「正常」の出現頻度は「2」、キーワード「低血圧」の出現頻度は「1」、キーワード「高血圧」の出現頻度は「1」である。
【0096】
登録データ37では、各キーワードおよびダミー要素の値それぞれの暗号文の出現頻度が均一化されている。例えばキーワード「正常」の暗号文「H(正常)」、キーワード「低血圧」の暗号文「H(低血圧)」、キーワード「高血圧」の暗号文「H(高血圧)」、およびダミー要素の値「D1」の暗号文「H(D1)」それぞれの出現頻度は、いずれも「4」である。
【0097】
図5に示した変換集合の生成例からも分かるように、各変換集合にはk個(
図5の例ではk=3)以上のキーワードが含まれる。従って攻撃者33は、特定の暗号文の出現頻度が分かっても、その暗号文が、同一の変換集合に属するキーワードのうちのどのキーワードの暗号文なのかを特定することはできない。すなわち攻撃者33は、暗号文に対応するキーワードの候補をk個までしか絞り込めない。その結果、頻度分析攻撃に対する安全性が向上している。
【0098】
なお、暗号文に対応するキーワードの候補をk個までしか絞り込めないようにするためには、群数Gの値を適切に決定することが重要となる。
図10は、適切な群数Gについて説明する図である。群数Gは、kに応じて決定される。前述のようにkは、暗号文に対応するキーワードの候補をk個までしか絞れないようにするために予め設定するセキュリティパラメータである。従ってkは、システムに求められる頻度分析攻撃に対する安全性の度合いに応じて決められる。
【0099】
このとき設定可能なキーワードの種類数X
j<kとなる項目も存在する。このような項目は、変換集合内にk個以上のキーワードを含めることができない。そのため攻撃者33は、該当項目の暗号文に対応するキーワードが、X
j個(k<)のキーワードのどれかであることが分かる。しかしこのような項目の暗号文に対応するキーワードが、X
j個のどれかであることは、公知の情報であり、攻撃者33が知っていても問題ない。例えば
図10の例では、項目「性別」について設定可能なキーワードは「男」か「女」の2つしかない。しかし性別が「男」と「女」のいずれかであることは、攻撃者33が知っていても問題ない情報である。
【0100】
他方、設定可能なキーワードの種類数Xj≧kとなる項目であれば、変換集合内にk個以上のキーワードが含まれるようにするのが適切である。そこで、Xjがkの倍数でない項目がある場合、データ登録サーバ200,300は、Gを調整することで、k個以上のキーワードが各変換集合に含まれるようにする。
【0101】
例えば
図10の「血液型」の例では、k=3に対し、X
j=4である。このとき変換集合一覧38のようにG=3にすると、検索者が「O」または「AB」を検索した際、その検索結果を見た攻撃者33は、検索対象が「O」と「AB」の2つのどちらかだと分かってしまう。そこで、X
j≧kの項目について該当項目に設定可能なキーワードが各変換集合にk個以上含まれるようにするためには、G≧kのうちG=3以外となるようにGが決定される。例えば変換集合一覧39のようにG=4にすれば、いずれの変換集合にも、対応する項目に設定可能なキーワードが3つ以上含まれる。
【0102】
図11は、頻度攪乱後の頻度分布の一例を示す図である。
図11に示す頻度分布表40は、5種類のキーワード「A」、「B」、「C」、「D」、「E」を設定可能な項目を有するDBにおける頻度攪乱後の各キーワードおよびダミー要素の値「F」の出現頻度を表している。
図11の例ではG=3である。変換集合は、「A,B,C」と「D,E,F」の2つである。
【0103】
群番号「1」のダミーレコード群のダミー値は、真のデータの項目値を変換集合に基づいて「A→B」、「B→C」、「C→A」、「D→E」、「E→F」、「F→D」と変換することで生成される。群番号「2」のダミーレコード群のダミー値は、真のデータの項目値を変換集合に基づいて「A→C」、「B→A」、「C→B」、「D→F」、「E→D」、「F→E」と変換することで生成される。
【0104】
真のデータにおける「A」の出現頻度は「10」、「B」の出現頻度は「7」、「C」の出現頻度は「2」、「D」の出現頻度は「1」、「E」の出現頻度は「5」、「F」の出現頻度は「0」である。すると、頻度攪乱後の変換集合「A,B,C」に含まれる各キーワードの出現頻度は、すべて「19」となる。また頻度攪乱後の変換集合「D,E,F」に含まれる各キーワードまたはダミー要素の値の出現頻度は、すべて「6」となる。すなわち項目値の3つずつの集合ごとに、集合内での項目値の出現頻度の均一化が図られている。
【0105】
また各ダミーレコード群のダミー値は、真のデータのキーワードを1対1で変換することで生成されている。そのためキーワードの出現頻度のばらつき度合いは変わらない。例えば出現頻度が多い順にその出現頻度の値を並べた場合、真のデータのレコード群および2つのダミーレコード群のいずれにおいても「10,7,5,2,1,0」である。このように、ダミーレコード群ごとの項目値の出現頻度のばらつき度合いは、すべてのダミーレコード群について真のデータと等しくなる。その結果、どのレコード群が真のデータのレコード群なのかを、キーワードの出現頻度のばらつき度合いから判断することが困難となる。また、すべてのダミーレコード群に真のデータの各レコードに1対1で対応するダミーレコードが存在する。そのため真のデータのあるレコードを削除する際には対応するダミーレコードを合わせて削除することで、データの秘匿性を維持したまま真のデータの任意のレコードを削除することができる。
【0106】
このようにダミー要素を用いることで、頻度分析攻撃に対する安全性を向上させることが可能である。ただし、ダミー要素を用いたとしても、複数の項目のキーワード間の組合せ頻度を知っている攻撃者33に対しては、検索条件に含まれるキーワードの候補がk個未満に絞られてしまう可能性がある。
【0107】
例えば
図11の「変換集合2」が項目「性別」についての変換集合であるものとする。性別のキーワードが「男」と「女」しかなければ、k=3の場合であっても
図11に示すような変換集合を生成することが許容される。このとき複数の項目のキーワード間の組合せ頻度を用いた頻度分析攻撃が行われると、「変換集合1」に含まれるキーワードについても、k未満に絞り込まれる可能性がある。
【0108】
図12は、ダミー要素を用いた場合の組み合わせ頻度の一例を示す図である。
図12にはk=G=3のときの変換集合一覧41とそのときの組み合わせ頻度表42とが示されている。
【0109】
変換集合一覧41には血圧と性別との変換集合が示されている。血圧の変換集合には「正常」、「低血圧」、「高血圧」が含まれる。性別の変換集合には「男」、「女」、およびダミー要素の値「D1」が含まれる。
【0110】
組み合わせ頻度表42には、血圧の値と性別の値との組み合わせ(論理積)に対応するレコードの出現頻度が示されている。真の頻度は、真のデータのレコード群内の該当するレコードの数である。攪乱後頻度は、真のデータのレコード群とダミーレコード群とにおける該当するレコードの数である。
【0111】
例えば血圧が「正常」で性別が「男」のレコードは、真のデータのレコード群に「n1」件含まれる。血圧が「低血圧」で性別が「女」のレコードは、真のデータのレコード群に「n2」件含まれる。血圧が「高血圧」で性別が「D1」のレコードは、真のデータのレコード群に「n3」(n3=0)件含まれる。血圧が「正常」で性別が「女」のレコードは、真のデータのレコード群に「n4」件含まれる。血圧が「低血圧」で性別が「D1」のレコードは、真のデータのレコード群に「n5」(n5=0)件含まれる。血圧が「高血圧」で性別が「男」のレコードは、真のデータのレコード群に「n6」件含まれる。血圧が「正常」で性別が「D1」のレコードは、真のデータのレコード群に「n7」(n7=0)件含まれる。血圧が「低血圧」で性別が「男」のレコードは、真のデータのレコード群に「n8」件含まれる。血圧が「高血圧」で性別が「女」のレコードは、真のデータのレコード群に「n9」件含まれる。
【0112】
ここで群番号「1」(g=1)のダミーレコード群において、血圧のダミー値が「正常」で性別のダミー値が「男」となるレコードは、真のデータのレコード群内の血圧が「低血圧」で性別が「女」のレコードに基づいて生成される。そのため血圧が「正常」で性別が「男」のレコードは、群番号「1」(g=1)のダミーレコード群に「n2」件含まれる。群番号「2」(g=2)のダミーレコード群において、血圧のダミー値が「正常」で性別のダミー値が「男」となるレコードは、真のデータのレコード群内の血圧が「高血圧」で性別が「D1」のレコードに基づいて生成される。そのため血圧が「正常」で性別が「男」のレコードは、群番号「2」(g=2)のダミーレコード群に「n3」(n3=0)件含まれる。
【0113】
すると、秘匿化DBにおける血圧が「正常」で性別が「男」のレコードの出現頻度(攪乱後頻度)は「n1+n2」となる。同様に、秘匿化DBにおける血圧が「低血圧」で性別が「女」のレコードの出現頻度(攪乱後頻度)、秘匿化DBにおける血圧が「高血圧」で性別が「D1」のレコードの出現頻度(攪乱後頻度)も「n1+n2」となる。
【0114】
図12に示すような攪乱後頻度を有する秘匿化DBに対して検索者が検索を行ったとき、複数の項目値の組合せ頻度を知っている攻撃者33は、検索条件に含まれるキーワードの候補をk個(
図12の例では3個)未満に絞ることが可能である。例えば検索者が「正常∧男」(∧は論理積)の検索または「低血圧∧女」の検索を行ったものとする。これらのいずれの検索結果も錯乱後頻度は「n1+n2」である。すなわち検索条件にヒットしたレコード数は「n1+n2」である。なお検索者がダミー要素を検索することはない。
【0115】
ここで、血圧のキーワードと性別のキーワードとの間の組み合わせ頻度(真の頻度)を知っている攻撃者33は、攪乱後頻度が「n1+n2」となるのが「正常∧男」または「低血圧∧女」のみであることも知っている。すると攻撃者33は、少なくとも「高血圧」が検索対象外であることを認識できる。これは、検索者の関心の対象が血圧については「正常」または「低血圧」であり、「高血圧」は関心の対象外であると、攻撃者33に知られてしまうことを意味する。すなわち、検索の対象がk(=3)未満に絞られてしまう。
【0116】
このようにキーワードの種類数Xj(「男」、「女」の2種類)が少なく、Xj<kとなる項目値と他の項目値とが組み合わさると、他の項目値も性別列のXj個の値に絞られてしまう。
【0117】
図12の例では、ダミー要素に対する検索が行われることがないという事実が、検索対象の絞り込みに利用されている。そして要素の組み合わせを考慮にいれた場合、ダミー要素を含む検索以外にも検索が行われることがない要素の組み合わせが存在する。例えば患者ごとのレコードが登録されたDBの項目に「診療科」と「年齢層」とが含まれている場合があり得る。ここで、小児科を成人や老人が受診することはない。そのため診療科の値が「小児科」のレコードにおいて、年齢層の値が「成人」、「老人」などであることはない。
【0118】
このように1つの項目の値がある項目値であるとき他の項目に設定されることがあり得ない値を、構造的ゼロと呼ぶことができる。それに対して、1つの項目の値がある項目値であるとき他の項目に設定されることがあり得る唯一の値(例えば診療科「小児科」に対する年齢層「児童」)を、非構造的ゼロと呼ぶことができる。構造的ゼロも検索対象の絞り込みに利用可能である。
【0119】
図13は、構造的ゼロを利用した検索対象の絞り込みの一例を示す図である。
図13の例では、DB43には「診療科」、「性別」、および「年齢層」の項目が設けられている。このDB43の各項目の値が暗号化された秘匿化DB44が生成されている。ここで診療科については、「内科」、「婦人科」、「小児科」を含む1つの変換集合が生成されているものとする。また年齢層については、「老人」、「成人」、「D2」(ダミー要素)を含む変換集合と、「青年」、「児童」、「D3」(ダミー要素)を含む変換集合とが生成されているものとする。
【0120】
この場合、「内科∧成人」、「婦人科∧D2」、「小児科∧老人」それぞれの組み合わせの頻度攪乱後の出現頻度が同じとなる。
図13の例では、これらの組み合わせの出現頻度は「133」である。
【0121】
ここで検索者45が「内科∧成人」の検索を、秘匿化DB44に対して行った場合を想定する。この検索に対しては、133件のレコードがヒットする。攻撃者33が検索者45による検索を監視していた場合、攻撃者33は、各項目に設定可能な値の出現頻度を組み合わせて、出現頻度が「133」となる値の組み合わせを調べる。これにより攻撃者33は、検索対象の候補を「内科∧成人」、「婦人科∧D2」、「小児科∧老人」の3つまで絞り込むことができる。
【0122】
次に攻撃者33は、ダミー要素である「D2」が検索対象となることはないため、「婦人科∧D2」を検索対象の候補から除外する。さらに攻撃者33は、小児科に老人という検索が行われることはない(構造的ゼロの検索をする理由がない)ため、「小児科∧老人」も検索対象の候補から除外する。その結果、検索者45が送信した検索クエリは「内科∧成人」であることを攻撃者33が認識できる。
【0123】
このようにダミー要素や構造的ゼロが存在することによって検索クエリに含まれるキーワードが絞り込まれてしまう。このことを前提とすると、各項目に設定可能なキーワードの組み合わせの出現頻度に基づいて、k個程度にまで初期段階で絞り込まれていることに問題がある。そこで、データ登録サーバ200,300は、データを登録する際に、各項目に設定可能なキーワードの出現頻度が分かっていても、その情報からは検索クエリに含まれるキーワードの絞り込みが十分にできないようにする。具体的には以下の通りである。
【0124】
データ登録サーバ200,300は、DB43に登録可能なキーワードを、複数のキーワードのいずれかに確率的に変換する。以下、変換先となるキーワードを分割キーワードと呼ぶこととする。
【0125】
図14は、分割キーワードへの確率的変換の一例を示す図である。例えばデータ登録サーバ200は、診療科、性別、年齢層の項目を含むDB210を有する。データ登録サーバ200は、DB210の各項目に登録可能なキーワードに基づいて、分割キーワード選択テーブル233を生成する。
【0126】
分割キーワード選択テーブル233には、DB210内の項目ごとに、該当項目に登録可能なキーワードに対応する分割キーワードと、分割キーワードの選択確率とが設定されている。例えば項目「診療科」に登録可能なキーワード「小児科」に対応する分割キーワードとして「小児科0」と「小児科1」とがある。
【0127】
分割キーワードの選択確率は、乱数を生成することによって決定され、データ登録サーバ200外には秘密となるように管理される。従って、DB210に登録可能なキーワードそれぞれに対して2つの分割キーワードが存在する場合でも、分割キーワードごとに選択確率は異なる。例えば分割キーワード「小児科0」の選択確率は「0.72」であり、「小児科1」の選択確率は「0.28」である。また分割キーワード「婦人科0」の選択確率は「0.60」であり、「婦人科1」の選択確率は「0.40」である。なお、DB210に登録可能な1つのキーワードに対応する複数の分割キーワードの選択確率の合計は「1」となる。
【0128】
データ登録サーバ200は、データ管理サーバ100にDB210内のデータを登録する際に、DB210内の各レコードの項目値を、分割キーワード選択テーブル233を参照して、確率的に対応する分割キーワードのいずれかに変換する。例えば「小児科」を変換する場合、72%の確率で「小児科0」に変換され、残りの28%の確率で「小児科1」に変換される。DB210内のキーワードを変換することで、分割済データ211が生成される。
【0129】
なお
図14の例では、すべてのキーワードを分割キーワードに変換しているが、一部のキーワードについては変換せずに、DB210に登録可能なキーワードのまま秘匿化を行うことも可能である。
【0130】
データ登録サーバ200は、分割キーワード選択テーブル233に示される分割キーワードを要素として含む変換集合を生成し、その変換集合を用いてダミーデータを生成する。その際、データ登録サーバ200は、各変換集合について、以下の生成条件を満たすようにする。
【0131】
変換集合の生成条件は、その変換集合の要素のうちの少なくとも1つが分割キーワードであり、かつその分割キーワードと変換元のキーワードが共通の他の分割キーワードが他の変換集合に含まれることである。換言すると変換集合は、1つのキーワードに対応するn個の分割キーワードのうちのn-1個以下の分割キーワードを含む。
【0132】
図15は、変換集合による分割キーワードからダミー値への変換の一例を示す図である。変換集合一覧232には、診療科についての3つの変換集合232a~232c、性別についての3つの変換集合232d~232f、および年齢層についての4つの変換集合232g~232jが含まれている。各変換集合232a~232jには、2つずつの要素が含まれている。変換集合232a~232jに含まれる要素は、例えば分割キーワード、またはダミー要素である。また分割しないキーワードがある場合、そのキーワードも変換集合232a~232jの要素となる。
【0133】
なお
図15における変換集合232a~232j内の「:」の左の数字は要素番号である。「:」の右の文字列が要素として設定された分割キーワードである。
図15の例では、DB210に登録可能なキーワードはすべて分割されるため、変換集合232a~232jに要素として含まれるのは分割キーワードとダミー要素である。例えば診療科の変換集合232aには、分割キーワード「小児科0」、「内科0」が含まれる。また性別の変換集合232dには、分割キーワード「男0」とダミー要素「D1」が含まれる。
【0134】
変換集合232a~232jのいずれも、少なくとも1つの分割キーワードを要素として含んでいる。そしてその分割キーワードを含む変換集合とは別の変換集合に、その分割キーワードと変換元のキーワードが共通の他の分割キーワードが含まれている。例えば変換集合232aには、分割キーワード「小児科0」が含まれている。「小児科0」の変換元のキーワードは「小児科」である。「小児科」の分割キーワードとしては「小児科0」以外に「小児科1」が存在する。「小児科1」は、変換集合232aとは別の変換集合232bに含まれている。従って変換集合232aは、変換集合の生成条件を満たしている。また変換集合232dは、分割キーワードを「男0」しか含んでおらず、もう1つの要素はダミー要素「D1」である。ただし「男0」と変換元のキーワードが共通の他の分割キーワード「男1」が他の変換集合232eに含まれている。従って変換集合232dについても変換集合の生成条件が満たされている。
【0135】
データ登録サーバ200は、変換集合232a~232jに従いダミーデータを生成する。ダミーデータは、G-1個のダミーレコード群である。ダミーレコードに設定するダミー値の生成方法は、
図6を参照して説明した通りである。
【0136】
分割済データ211内の真のデータのレコードとダミーレコードとを混在させることで、秘匿化DBへの登録用の登録データ46が生成される。登録データ46は、第1の実施の形態における攪乱レコード群6の一例である。
【0137】
登録データ46においては、同じ変換集合に含まれるG個の要素の出現頻度が等しくなる。しかもそれら要素の出現頻度とDB210データの頻度とを比較しても、平文を特定できないようになる。例えば変換集合232gに含まれる「老人0」と「児童0」の頻度とそれぞれの元データの頻度との相関は秘密の選択確率によって隠されている。そのため各変換集合の要素の頻度を合計しても、真のデータの2以上のキーワードの頻度の合計と一致しない。
【0138】
またデータ登録サーバ200は、検索時に暗号文がどの群に属しているかを見分けることができるようにするために、登録データ46内の各レコードに群番号を含むフラグ値を追加する。例えばデータ登録サーバ200は、群番号の分類攻撃を防ぐため、フラグ値に生成の元のレコードのIDを加え、すべてのフラグ値をユニークな値にする。
【0139】
登録データ46の先頭のレコードは分割済データ211の先頭(ID「0」)のレコードであり、真のデータのレコード群(群番号「0」)に属するため、フラグ値は「0,0」である。登録データ46の2つ目のレコードは分割済データ211の先頭(ID「0」)のレコードに基づくダミーレコードであり、ダミーレコード群(群番号「1」)に属するため、フラグ値は「0,1」である。
【0140】
図14、
図15には、DB210に登録可能なすべてのキーワードについて分割キーワードに変換する例を示しているが、すべての変換集合が生成条件を満たせるのであれば、一部のキーワードについては分割しなくてもよい。
【0141】
図16は、変換集合の他の生成例を示す第1の図である。
図16に示す変換集合一覧47には、診療科についての3つの変換集合47a~47c、性別についての2つの変換集合47d~47e、および年齢層についての3つの変換集合47f~47hが含まれている。
図16の例では、診療科の「内科」、性別のキーワード「女」、年齢層のキーワード「青年」および「児童」については分割キーワードへの変換が行われない。そのため、これらのキーワードはそのまま変換集合の要素となっている。
【0142】
このような変換集合一覧47に含まれる各変換集合47a~47hは、変換集合の生成条件を満たしている。例えば変換集合47dには、分割キーワード「男0」と分割されていないキーワード「女」が含まれている。このうち「男0」の変換元のキーワードは「男」である。「男」の分割キーワードとしては「男0」以外に「男1」が存在する。「男1」は、変換集合47dとは別の変換集合47eに含まれている。従って変換集合47dは、変換集合の生成条件を満たしている。
【0143】
ただし変換集合一覧47を用いてダミー値への変換を行うと、
図15に示した変換集合一覧232を用いた場合に比べて、平文推定の難易度が下がる。例えば変換集合一覧47を用いてダミー値への変換を行った秘匿化DBに対して、攻撃者33は以下のような攻撃が可能である。
【0144】
攻撃者33が性別に対する検索の検索対象の特定を試みる場合を想定する。攻撃者33は、性別の変換集合47d,47eごとの攪乱後頻度を得る。例えば攻撃者33は、検索者が性別「女」のレコードを検索した場合にヒットしたレコード数を取得することで、変換集合47dの攪乱後頻度(「男0」の頻度と「女」の頻度との合計)を得ることができる。攻撃者33は、変換集合47dの攪乱後頻度から平文の「女」の頻度を減算する。すると「男0」の頻度となる。さらに攻撃者33は、減算結果にもう1つの変換集合47eの攪乱後頻度を加算する。加算後の頻度は、「男0」の頻度と「男1」の頻度との合計である。
【0145】
攻撃者33は、加算結果が「男」の頻度と等しくなることが確認できれば、変換集合47dの攪乱後頻度となる検索が行われた場合、対応する変換集合47dには「女」が含まれると判断できる。以後、攻撃者33は、検索者により変換集合47dの攪乱後頻度となる検索のみが行われた場合、「女」を検索したと特定することができる。
【0146】
攻撃者33がこのような試行を繰り返すことで検索対象の絞り込みが可能となるが、同じ項目に登録可能なキーワード数が多くなるほど、このような攻撃の試行回数が増加し、検索対象が特定される危険性は低下する。
【0147】
このように、変換集合一覧47に示すような変換集合47a~47hでは、性別のように登録可能なキーワード数が少ない項目がある場合に、頻度分析攻撃に対する安全性が低下してしまう。ただし、各項目の登録可能なキーワード数が多ければ、攻撃者33が行う攻撃で用いるキーワード(攻撃において該当キーワードの頻度の加減算を行う)の組み合わせ数が膨大となる。その結果、変換集合一覧47に示すように一部の要素が、DB210に登録されるキーワードのまま(分割キーワードに変換されていない)であっても十分に安全となる。
【0148】
なお、すべてのキーワードを分割キーワードに変換したとしても、変換集合を適切に生成しないと、頻度分析攻撃に対する安全性が不十分となる場合がある。
図17は、変換集合の他の生成例を示す第2の図である。
図17に示す変換集合一覧48には、診療科についての3つの変換集合48a~48c、性別についての3つの変換集合48d~48f、および年齢層についての4つの変換集合48g~48jが含まれている。
図17の例では、年齢層の変換集合48g~48jの要素が、
図15に示した変換集合232g~232jと異なっている。
【0149】
変換集合48g~48jでは、「老人」の分割キーワード「老人0」、「老人1」が、それぞれ変換集合48gと変換集合48hとに格納されている。また「青年」の分割キーワード「青年0」、「青年1」が、それぞれ変換集合48gと変換集合48hとに格納されている。すなわち変換集合48gと変換集合48hとは、属する分割キーワードの変換元のキーワードの組み合わせ(「老人」、「青年」)が同じである。同様に、変換集合48iと変換集合48jとも、属する分割キーワードの変換元のキーワードの組み合わせ(「成人」、「児童」)が同じである。
【0150】
このような変換集合48g~48jが生成された場合、変換集合48gに属する分割キーワードの攪乱後頻度と変換集合48hに属する分割キーワードの攪乱後頻度との合計が、DB210における「老人」と「青年」との出現頻度の合計に等しくなる。そうすると「老人」または「青年」の検索が行われたとき、ヒットしたレコードの件数から、検索対象のキーワードが「老人」または「青年」であると攻撃者33が推定できてしまう。すなわち検索対象のキーワードの候補が2つに絞り込まれてしまう。
【0151】
このような頻度分析攻撃を困難にするために、データ登録要求サーバ200,300は、
図15に示すように、変換集合内の分割キーワードの変換元のキーワードの組み合わせが同じとなる複数の変換集合が生じないようにする。
【0152】
次に、確率的に分割キーワードへの変換を行うことで頻度分析攻撃に対する安全性を向上させた秘密情報管理システムの各装置の機能について説明する。
図18は、秘密情報管理システムの機能を示すブロック図である。データ管理サーバ100は、秘匿化DB110、データ登録部120、鍵提供依頼部130、および検索部140を有する。秘匿化DB110は、データ管理サーバ100が有するメモリ102またはストレージ装置103によって実現される。データ登録部120、鍵提供依頼部130、および検索部140は、データ管理サーバ100が有するプロセッサ101によって実現される。
【0153】
秘匿化DB110は、データ登録サーバ200,300から収集した暗号文の患者データを、暗号文のまま管理するDBである。
データ登録部120は、データ登録サーバ200,300からのデータ登録要求に応じて、暗号文の患者データを秘匿化DB110に登録する。
【0154】
鍵提供依頼部130は、端末装置400,500からの鍵取得要求を受信すると、端末装置400,500への鍵提供依頼を、データ登録サーバ200,300に送信する。
検索部140は、端末装置400,500からの暗号化された検索キーワードを含むデータ検索クエリに応じて、秘匿化DB110に登録された患者データを検索する。この際、検索部140は、患者データと検索キーワードとを暗号文のまま照合し、検索キーワードに合致するレコードを、秘匿化DB110から抽出する。そして検索部140は、抽出したレコードを、検索クエリの送信元の端末装置400,500に送信する。
【0155】
データ登録サーバ200は、DB210、鍵記憶部220、変換情報記憶部230、鍵生成部240、データ登録要求部250、および鍵提供部260を有する。DB210、鍵記憶部220、および変換情報記憶部230は、データ登録サーバ200が有するメモリまたはストレージ装置によって実現される。また鍵生成部240、データ登録要求部250、および鍵提供部260は、データ登録サーバ200が有するプロセッサによって実現される。
【0156】
DB210は、患者データを平文で格納するDBである。
鍵記憶部220は、データ管理サーバ100に登録する患者データの暗号化に使用する暗号鍵を記憶する。暗号鍵は、データ管理サーバ100からアクセスできないように管理される。
【0157】
変換情報記憶部230は、真のデータのレコード群に示されるキーワードを、ダミーレコードに登録するダミー値に変換するために使用する情報を記憶する。例えば変換集合一覧などの情報が変換情報記憶部230に格納される。
【0158】
鍵生成部240は、暗号鍵を生成する。鍵生成部240は、生成した暗号鍵を鍵記憶部220に格納する。
データ登録要求部250は、データ管理サーバ100への登録対象の患者データの暗号文を含むデータ登録要求を、データ管理サーバ100に送信する。例えばデータ登録要求部250は、まず登録対象の患者データをDB210から取得し、秘匿化DB110のフォーマットに合わせて、患者データを加工する。この際、データ登録要求部250は、送信するデータ登録要求にダミーデータを含める。ダミーデータは複数のダミーレコードを含む。ダミーレコード内にはダミー値が登録されている。データ登録要求部250は、変換情報記憶部230に格納されている情報を用いて、真のデータ内の値をダミー値に変換し、ダミーレコードに登録する。
【0159】
さらにデータ登録要求部250は、暗号鍵を用いて、秘匿化DB110に登録する項目値ごとに、患者データに含まれる値を暗号化する。そしてデータ登録要求部250は、項目値ごとに暗号化された、暗号文の患者データを含むデータ登録要求を、データ管理サーバ100に送信する。
【0160】
鍵提供部260は、データ管理サーバ100からの鍵提供依頼に応じて、登録した患者データの利用を許可する製薬企業の端末装置400,500へ、暗号鍵を送信する。なお鍵提供部260は、暗号鍵を、データ管理サーバ100を経由せずに端末装置400,500に送信する。データ管理サーバ100を経由せずに暗号鍵を送信することで、暗号鍵がデータ管理サーバ100から隔離される。その結果、データ管理サーバ100の管理者による、秘匿化DB110内のデータの復号が抑止される。
【0161】
以上、データ登録サーバ200が有する機能を説明したが、データ登録サーバ300もデータ登録サーバ200と同様の機能を有する。
端末装置400は、鍵記憶部410、変換情報記憶部420、鍵取得部430、および検索要求部440を有する。鍵記憶部410と変換情報記憶部420は、端末装置400が有するメモリまたはストレージ装置によって実現される。また鍵取得部430、および検索要求部440は、端末装置400が有するプロセッサによって実現される。
【0162】
鍵記憶部410は、検索クエリに含める検索キーワードの暗号化に使用する暗号鍵を記憶する。暗号鍵は、データ管理サーバ100からアクセスできないように管理される。
変換情報記憶部420は、検索者が指定した検索条件に示されるキーワードをダミー値に変換するために使用する情報を記憶する。変換情報記憶部420に格納されている情報は、データ登録サーバ200の変換情報記憶部230に格納されている情報と同じである。
【0163】
鍵取得部430は、データ登録サーバ200,300で提供される暗号鍵を取得する。例えば鍵取得部430は、データ管理サーバ100に、鍵取得要求を送信する。するとデータ管理サーバ100の鍵提供依頼部130により、データ登録サーバ200,300に鍵提供依頼が送信される。鍵提供依頼に応じて、例えばデータ登録サーバ200の鍵提供部260が、暗号鍵を端末装置400に送信する。そして鍵取得部430は、端末装置400から送信された暗号鍵を取得する。鍵取得部430は、取得した暗号鍵を、鍵記憶部410に格納する。
【0164】
検索要求部440は、患者データの利用者(検索者)が入力した検索キーワードを取得する。次に検索要求部440は、取得した検索キーワードを、暗号鍵を用いて暗号化し、暗号文の検索キーワードを含む検索クエリをデータ管理サーバ100に送信する。検索要求部440は、データ管理サーバ100から検索結果を受信すると、検索結果の内容(例えば検索キーワードに合致した真のデータのレコード数)を表示する。
【0165】
なお検索要求部440は、ダミーデータを検索対象とする検索クエリを送信することもできる。その場合、検索要求部440は、変換情報記憶部420に格納されている情報を用いて、検索キーワードをダミー値に変換し、暗号化したダミー値を含む検索クエリを送信する。この場合、検索要求部440は、検索結果に示されるレコードから所定のダミーレコードを抽出し、そのダミーレコード内のダミー値を、変換情報記憶部420に格納されている情報を用いて、真のデータに設定されていた値に変換する。そして検索要求部440は、変換後の値を有するレコードの内容を検索結果として表示する。
【0166】
以上、端末装置400が有する機能を説明したが、端末装置500も端末装置400と同様の機能を有する。
図18に示した機能により、データ管理サーバ100の管理者に対しても患者データと検索クエリの内容を秘匿したまま、データ管理サーバ100において患者データを管理すると共に、製薬企業15,16による患者データの利用を可能とすることができる。なお、
図18に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【0167】
次に、
図18に示したシステムによる出現頻度攪乱処理の概要について説明する。
図19は、ダミーデータを用いた出現頻度の攪乱処理の一例を示す図である。データ登録サーバ200は、データ54の使用を許可する製薬企業(例えば製薬企業15)の端末装置400へ、鍵生成部240が生成した暗号鍵51を送信する(ステップS11)。例えば端末装置400の鍵取得部430がデータ管理サーバ100に鍵取得要求を送信する。データ管理サーバ100では、鍵提供依頼部130が、データ登録サーバ200に暗号鍵51の提供を依頼する。データ登録サーバ200の鍵提供部260は、暗号鍵51の提供依頼を受信すると、管理者による暗号鍵51の提供の許可を示す入力を受け付ける。鍵提供部260は、暗号鍵51の提供を許可する旨の入力が行われると、暗号鍵51を鍵記憶部220から取得し、取得した暗号鍵51と同じ暗号鍵52を、データ管理サーバ100を経由させずに端末装置400に送信する。端末装置400では、鍵取得部430が受信した暗号鍵52を鍵記憶部410に格納する。これにより、データ登録サーバ200と端末装置400とで、暗号鍵の共有化が図られる。
【0168】
その後、データ登録サーバ200は、DB210内のデータ210aに対して、ダミーデータ55を追加する(ステップS12)。例えばデータ登録要求部250は、DB210から取得した真のデータ54に含まれるレコードの数のG-1倍のダミーレコードを、ダミーデータ55として追加する。この際、データ登録要求部250は、追加したダミーレコードの項目値(ダミー値)として、真のデータ54に設定されている項目値を用い、各項目値の出現頻度の偏りを減少させる。さらにデータ登録要求部250は、各レコードに、真のデータ54のレコードなのかダミーレコードなのか、ダミーレコードであればどのダミーレコード群に属するのかを識別するためのフラグ56を付与する。
【0169】
データ登録要求部250は、真のデータ54とダミーデータ55との各レコード内の項目値(フラグを含む)を暗号鍵51で暗号化して、登録データ53を生成する(ステップS13)。そしてデータ登録要求部250は、登録データ53を含むデータ登録要求を、データ管理サーバ100に送信する(ステップS14)。データ管理サーバ100では、データ登録部120が、登録データ53を受信し、受信した登録データ53を秘匿化DB110に格納する。
【0170】
製薬企業15の担当者がデータ54を利用する場合、担当者は、端末装置400に検索キーワードを入力する。すると検索要求部440は、入力された検索キーワードを暗号鍵52で暗号化して、暗号文の検索キーワードを含む検索クエリ57を生成する(ステップS15)。なお検索要求部440は、いずれかのダミーレコード群を検索対象とする場合、入力された検索キーワードを、ダミーレコード群におけるその検索キーワードに対応するダミー値に変換する。そして検索要求部440は、変化で得られたダミー値を暗号化した値を含む検索クエリ57を生成する。そして検索要求部440は、検索クエリ57をデータ管理サーバ100に送信する(ステップS16)。
【0171】
データ管理サーバ100では、検索部140が、データを秘匿化したままで、登録データ53と検索クエリ57とを照合する(ステップS17)。そして検索部140は、検索クエリ57による検索にヒットしたレコードを、検索結果58として端末装置400に送信する(ステップS18)。検索結果58には、真のデータ54のレコードとダミーデータ55のダミーレコードとが含まれる。
【0172】
端末装置400では検索要求部440が検索結果58を受信する。検索要求部440は、真のデータを検索対象とした場合には、例えばフラグに基づいて、検索結果58からダミーレコードを破棄する(ステップS19)。そして検索要求部440は、検索結果58内の真のデータ54のレコードのみを含む真の結果59を、モニタなどに表示する。
【0173】
なお検索要求部440は、ダミーレコード群を検索対象とした場合には、例えばフラグに基づいて、検索結果58から検索対象のダミーレコード群に属するダミーレコードを抽出し、その他のレコードを破棄する。検索要求部440は、ダミーレコード内のダミー値を、そのダミー値の変換元であったキーワードに変換する。そして検索要求部440は、元のキーワードに変換された値を含むレコードを真の結果59として表示する。
【0174】
このようにダミーデータ55を追加することで、各項目値の頻度攪乱が可能となる。端末装置400は、フラグを用いてダミーデータ55と真のデータ54とを識別して、真の結果59を得ることができる。
【0175】
次に、データ登録サーバ200,300が有する平文の患者データのDB210について説明する。
図20は、平文の患者データのDBの一例を示す図である。DB210には、真のデータ210aが平文のまま格納されている。真のデータ210aには、例えば患者ごとのレコードが、レコードの識別子(ID)に対応付けて登録されている。各レコードには、項目ごとの列に、その項目に対応するキーワードが設定されている。
図20の例では、項目として「診療科」、「性別」、「年齢層」がある。DB210に登録されている各レコード内の値は、例えば平文の文字コードである。
【0176】
データ登録要求部250は、患者のレコードをデータ管理サーバ100に登録する場合、そのレコードに設定された値(平文)を、確定的暗号化技術により暗号化する。そして暗号化されたレコードが、データ管理サーバ100の秘匿化DB110に登録される。その際、データ登録要求部250は、分割キーワード選択テーブル233(
図14参照)に基づいてキーワードを確率的に分割キーワードに変換する。さらにデータ登録要求部250は、変換情報記憶部230を参照して、頻度分析攻撃に対する攪乱のためにダミーデータを生成する。
【0177】
図21は、データ登録サーバ内の変換情報記憶部に格納される情報の一例を示す図である。変換情報記憶部230には、キーワード一覧231、変換集合一覧232、および分割キーワード選択テーブル233が記憶されている。キーワード一覧231は、項目ごとに、その項目に設定可能なキーワードのリストが示されたデータである。変換集合一覧232は、変換集合の内容を示すデータである。分割キーワード選択テーブル233は、キーワードを分割して秘匿化DB110に登録する場合における分割後のキーワード(分割キーワード)のリストを示すデータである。なお変換集合一覧232と分割キーワード選択テーブル233とは、キーワード一覧231に基づいて、データ登録要求部250によって生成されるデータである。変換集合一覧232と分割キーワード選択テーブル233とは、データ登録サーバ200の外部からアクセスできないように秘密に管理される。
【0178】
図22は、キーワード一覧の一例を示す図である。キーワード一覧231には、DB210の項目ごとに、該当項目に設定可能なキーワードのリストが登録されている。
図22の例では、「診療科」の項目に登録できるキーワードは3個であり、「性別」の項目に登録できるキーワードは2個であり、「年齢層」の項目に登録できるキーワードは4個である。
【0179】
図23は、変換集合の第1の生成例を示す図である。キーワードリスト231aには、年齢層に設定可能な4個のキーワードが示されている。またG=2であり、各変換集合232g~232jには2つずつの分割キーワードが含まれる。
図14に示した分割キーワード選択テーブル233に基づいて分割キーワードを生成する場合、年齢層に関する分割キーワードは8個となる。
【0180】
データ登録要求部250は、まず4個の変換集合232g~232jの要素の格納領域を生成する。またデータ登録要求部250は、変換集合232g~232jの識別子をそれぞれ「2-0」~「2-3」とする。識別子の左側の数値は「年齢層」に対応する値であり、右側の数値は「年齢層」の変換集合232g~232jに対する通し番号である。
【0181】
データ登録要求部250は、例えばキーワードリスト231aから、所定の順番あるいはランダムな順番ですべてのキーワードを1回ずつ選択する。
図23の例では、キーワードリスト231aの左から順にキーワードを選択するものとする。
【0182】
データ登録要求部250は、選択したキーワードの分割キーワードを番号の小さい変換集合から順に、変換集合の格納領域に格納していく。このとき、データ登録要求部250は、同じキーワードに対応する分割キーワードは異なる変換集合に格納する。またデータ登録要求部250は、変換集合内の分割キーワードの変換元のキーワードの組み合わせが同じとなる複数の変換集合が生じないようにする。
【0183】
例えばデータ登録要求部250は、最初に選択したキーワードの1つ目の分割キーワードを先頭の変換集合232gに登録する。次にデータ登録要求部250は、そのキーワードの2つ目の分割キーワードを2番目の変換集合232hに登録する。例えば「老人」が最初に選択された場合、「老人0」が変換集合232gに登録され、「老人1」が変換集合232hに登録される。
【0184】
データ登録要求部250は、2番目に選択したキーワードの1つ目の分割キーワードを、直前に選択したキーワードの2つ目の分割キーワードと同じ変換集合232hに登録する。次にデータ登録要求部250は、そのキーワードの2つ目の分割キーワードを次の変換集合232iに登録する。例えば「成人」が2番目に選択された場合、「成人0」が変換集合232hに登録され、「成人1」が変換集合232iに登録される。
【0185】
データ登録要求部250は、3番目以降に選択した各キーワードの分割キーワードについても、2番目に選択したキーワードと同様の手順で変換集合に登録する。例えば「青年」が3番目に選択された場合、「青年0」が変換集合232iに登録され、「青年1」が変換集合232jに登録される。
【0186】
データ登録要求部250は、最後に選択したキーワードの分割キーワードについては、格納領域が空いている変換集合に登録する。例えば「児童」が最後に選択された場合、「児童0」が変換集合232gに登録され、「児童1」が変換集合232jに登録される。
【0187】
このような手順で変換集合232g~232jが生成される。変換集合232g~232jそれぞれは、属する要素のうちの少なくとも1つが分割キーワードであり、かつその分割キーワードと変換元のキーワードが共通の他の分割キーワードが他の変換集合に含まれる。そのため変換集合の生成条件を満たしている。また変換集合232g~232j内の分割キーワードの変換元のキーワードの組み合わせが同じとなる複数の変換集合は生じていない。
【0188】
図23には年齢層の変換集合232g~232jの生成例を示したが、診療科および性別についても同様の手順でそれぞれの変換集合232a~232fを生成することができる。その結果、
図15に示したような変換集合一覧232が生成される。
【0189】
図23に示したのは、G=2,L=2,X
j=4,M
j(j番目の項目の変換集合数)=4の場合の例であるが、これらのパラメータの値が別の値であっても、同様に適切な変換集合を生成することができる。
【0190】
図24は、変換集合の第2の生成例を示す図である。
図24には、G=3,L=4,X
j=4,M
j=6の場合における変換集合49a~49fの生成例が示されている。
例えばデータ登録要求部250は、最初に選択したキーワードの1つ目の分割キーワードを先頭の変換集合49aの要素番号「0」の要素に登録する。次にデータ登録要求部250は、そのキーワードの2つ目以降の分割キーワードを、変換集合番号と要素番号を1ずつ加算しながら、該当する番号の要素に登録していく。なおデータ登録要求部250は、加算後の要素番号がLとなる場合、要素番号を「0」に戻す。
【0191】
例えば「老人」が最初に選択された場合、「老人0」が変換集合49aの要素番号「0」の要素に登録される。続けて、「老人1」が変換集合49bの要素番号「1」の要素に登録され、「老人2」が変換集合49cの要素番号「2」の要素に登録され、「老人3」が変換集合49dの要素番号「0」の要素に登録される。
【0192】
データ登録要求部250は、2つ目以降に選択されたキーワードの1つ目の分割キーワードを、直前に選択されたキーワードの1つ目の分割キーワードを格納した変換集合に対して変換集合番号で次の変換集合に登録する。次にデータ登録要求部250は、そのキーワードの2つ目以降の分割キーワードを、変換集合番号と要素番号を1ずつ加算しながら、該当する番号の要素に登録していく。なおデータ登録要求部250は、加算後の要素番号がLとなる場合、要素番号を「0」に戻す。
【0193】
例えば2つ目のキーワードとして「成人」が選択されると、「成人0」が変換集合49bの要素番号「0」の要素に登録される。続けて、「成人1」が変換集合49cの要素番号「1」の要素に登録され、「成人2」が変換集合49dの要素番号「2」の要素に登録され、「成人3」が変換集合49eの要素番号「0」の要素に登録される。
【0194】
次に「青年」が選択されると、「青年0」が変換集合49cの要素番号「0」の要素に登録される。続けて、「青年1」が変換集合49dの要素番号「1」の要素に登録され、「青年2」が変換集合49eの要素番号「2」の要素に登録され、「青年3」が変換集合49fの要素番号「0」の要素に登録される。
【0195】
データ登録要求部250は、最後に選択したキーワードの分割キーワードについては、格納領域が空いている変換集合に登録する。例えば「児童」が最後に選択された場合、「児童0」が変換集合49aの要素番号「1」の要素に登録される。続けて「児童1」が変換集合49bの要素番号「2」の要素に登録され、「児童2」が変換集合49eの要素番号「1」の要素に登録され、「児童3」が変換集合49fの要素番号「2」の要素に登録される。
【0196】
データ登録要求部250は、すべての分割キーワードを登録後に空いている要素にダミー要素を登録する。例えば変換集合49fの要素番号「1」の要素に「D0」が登録され、変換集合49aの要素番号「2」の要素に「D1」が登録される。
【0197】
このようにG、L、X
j、M
jの値が増えても、適切な変換集合を生成することができる(変換集合生成手順の詳細は
図28参照)。データ登録要求部250は、変換集合一覧232を生成後、
図14に示すような分割キーワード選択テーブル233を生成する。データ登録要求部250は、生成した変換集合一覧232と分割キーワード選択テーブル233とを変換情報記憶部230に格納する。そしてデータ登録要求部250は、分割キーワード選択テーブル233に基づいてDB210内のキーワードを確率的に分割キーワードに変換後、秘匿化DB110に登録するための登録データを生成する。
【0198】
図25は、分割キーワードを用いて生成した登録データの一例を示す図である。DB210に格納されていた真のデータに示される各キーワードが分割キーワード選択テーブル233に示される選択確率で確率的に分割キーワードに変換され、分割済データ211が生成される。そして、分割済データ211に基づいて登録データ60が生成される。
【0199】
登録データ60には、分割済データ211のレコードの集合である真のデータのレコード群60aと、分割済データ211のレコードの各分割キーワードを変換して得られたダミーレコード群60bが含まれている。真のデータのレコード群60aの群番号は「0」であり、ダミーレコード群60bの群番号は「1」である。
【0200】
各レコードにはランダムにIDが付与されている。登録データ60内の各レコードにはフラグが付与されている。そして登録データ60に含まれるキーワード(フラグ値も含む)が暗号化される。なおフラグ値は、変換元のレコードの分割済データ211内でのIDと、属する群の群番号との組である。
【0201】
データ登録要求部250は、登録データ60の各項目値を暗号化し、登録データ60のレコードをIDでソートした後、データ管理サーバ100の秘匿化DB110に登録する。
【0202】
図26は、秘匿化DBの一例を示す図である。秘匿化DB110に登録されたレコードはIDによってソートされており、真のデータのレコードとダミーレコードが混在して登録されている。
【0203】
次に、データ登録処理の手順について詳細に説明する。
図27は、データ登録処理の手順の一例を示すフローチャートである。以下、
図27に示す処理をステップ番号に沿って説明する。
【0204】
[ステップS101]データ登録要求部250は、群数Gとキーワード分割数Lの設定入力を受け付ける。GとLは共に2以上の整数である。GとLの値が大きいほど安全性が向上するが登録するダミーレコード数も増加する。そこで、GとLの値は、秘匿化DB110に求められる頻度分析攻撃に対する安全性の度合いと、秘匿化DB110に許容されるダミーレコード数とを勘案して、データ登録サーバ200の管理者が決定する。
【0205】
[ステップS102]データ登録要求部250は、項目ごとの変換集合数を決定する。例えばj番目の項目の変換集合数Mjは、天井関数を用いて以下の式(3)で表される。
【0206】
【0207】
j番目の項目のキーワードの種類数Xjにキーワード分割数Lを乗算した値(L×Xj)が、その項目の分割キーワード数である。分割キーワード数を群数Gで除算した結果の天井関数(除算結果以上の最小の整数)と「3」とのうちの大きい方の値が、変換集合数となる。
【0208】
変換集合数が「3」以上となるようにしたことで、G=2の場合において、性別のように2種類のキーワードしか存在しない項目についても、3つの変換集合が生成される。これにより性別についても、異なる変換集合において、それぞれの分割キーワードの変換元のキーワードの組み合わせが同じとなることを抑止することができる。
【0209】
[ステップS103]データ登録要求部250は、すべての項目それぞれについて、ステップS102で決定した変換集合数分の変換集合を生成する。なお、データ登録要求部250は、変換集合の格納領域の数よりも分割キーワード数が少ない場合には、ダミー要素を変換集合の要素として登録する。生成される各変換集合は少なくとも1つの分割キーワードを含み、その分割キーワードと変換元のキーワードが共通の他の分割キーワードが他の変換集合に含まれる。これにより、
図15の変換集合一覧232に示すような変換集合232a~232jが生成される。なお、変換集合生成手順の詳細は後述する(
図28参照)。
【0210】
[ステップS104]データ登録要求部250は、分割キーワード選択テーブル233を生成する。例えばデータ登録要求部250は、キーワード一覧231に示されるキーワードごとに「0」~「1」のL-1個の乱数を生成する。そしてデータ登録要求部250は、生成した乱数を境界値とし、「0」~「1」の数値範囲を境界値で分割して得られる複数の数値範囲それぞれの大きさを、分割キーワードのそれぞれの選択確率とする。
【0211】
例えばデータ登録要求部250は、L=2の場合、1つのキーワードについて1個の乱数を生成する。例えば
図14に示した分割キーワード選択テーブル233では、「小児科」について乱数「0.72」が生成されている。そこでデータ登録要求部250は、「0」から乱数までの数値範囲の大きさ「0.72」を、1つ目の分割キーワード「小児科0」の選択確率として設定している。またデータ登録要求部250は、乱数から「1」までの数値範囲の大きさ「0.28」を、2つ目の分割キーワード「小児科1」の選択確率として設定している。
【0212】
キーワードごとに乱数が生成されるため、すべての分割キーワードの選択確率は不統一な値となる。データ登録要求部250は、分割キーワードに対応付けてその選択確率を分割キーワード選択テーブル233に設定する。これにより、
図14に示すような分割キーワード選択テーブル233が生成される。
【0213】
[ステップS105]データ登録要求部250は、DB210から平文のデータを読み込む。
[ステップS106]データ登録要求部250は、読み込んだ平文のデータのレコードに登録されているキーワードを、分割キーワード選択テーブル233に示される選択確率で確率的に分割キーワードに変換する。例えばデータ登録要求部250は、平文のデータに含まれるキーワードを1つずつ選択する。次にデータ登録要求部250は、選択したキーワードの分割キーワードの選択確率に応じた大きさの「0」~「1」内の数値範囲を分割キーワードに割り当てる。例えば
図14に示した分割キーワード選択テーブル233の場合において「小児科」が選択されると、データ登録要求部250は「0」から「0.72」の数値範囲に「小児科0」を割り当て、「0.28」から「1」の数値範囲に「小児科1」を割り当てる。そしてデータ登録要求部250は、「0」~「1」の範囲内の乱数を生成し、生成した乱数を含む数値範囲に割り当てられた分割キーワードに、選択したキーワードを変換する。
【0214】
[ステップS107]データ登録要求部250は、群数G-1個のダミーレコード群を含むダミーデータを生成する。なお、ダミーデータ生成処理の詳細は後述する(
図29参照)。
【0215】
[ステップS108]データ登録要求部250は、真のデータとダミーデータとのレコードそれぞれに、ランダムにIDを付与する。
[ステップS109]データ登録要求部250は、各レコードにフラグを付与する。例えばデータ登録要求部250は、各レコードについて、そのレコードの変換元となったレコードのDB210内でのIDと、そのレコードが属する群の群番号との組をフラグ値として生成する。元のレコードのIDと群番号との組をフラグ値とすることで、各レコードにユニークなフラグ値が生成される。
【0216】
[ステップS110]データ登録要求部250は、各レコードをIDでソートする。
[ステップS111]データ登録要求部250は、ソートされたレコード群を暗号化して、秘匿化DB110に登録する。例えばデータ登録要求部250は、レコード内の項目値ごとに暗号化し、暗号化された値を有するレコード群を、登録データとしてデータ管理サーバ100に送信する。データ管理サーバ100では、データ登録部120が登録データを受信し、受信した登録データを秘匿化DB110に格納する。
【0217】
次に変換集合の生成処理について詳細に説明する。
図28は、変換集合生成処理の手順の一例を示すフローチャートである。以下、
図28に示す処理をステップ番号に沿って説明する。
【0218】
[ステップS121]データ登録要求部250は、変換集合の生成処理を行っていない項目のうちの1つを、処理対象項目として選択する。
[ステップS122]データ登録要求部250は、キーワード一覧231の中から、処理対象項目のキーワードのうち変換集合に未設定のキーワードを1つ選択する。
【0219】
[ステップS123]データ登録要求部250は、設定対象の分割キーワードを示す分割キーワード番号lに初期値「0」を設定する(l=0)。
[ステップS124]データ登録要求部250は、変換集合における値が未設定の要素のうちの要素番号が最小の要素の要素番号を、設定先の要素番号gに設定する。
【0220】
[ステップS125]データ登録要求部250は、値が未設定の要素番号gの要素のうちの変換集合番号が最小の要素の変換集合の変換集合番号を、設定先の変換集合番号mに設定する。
【0221】
[ステップS126]データ登録要求部250は、xm,gの要素にl番目の分割キーワードを設定する。
[ステップS127]データ登録要求部250は、キーワード番号lがL-1に達したか否かを判断する(l=L-1?)。データ登録要求部250は、L-1に達していなければ処理をステップS128に進める。またデータ登録要求部250は、L-1に達していれば処理をステップS130に進める。
【0222】
[ステップS128]データ登録要求部250は、設定先の要素番号gと設定先の変換集合番号mとを更新する。例えばデータ登録要求部250は、設定先の要素番号を「g=mod(g+1,G)」に更新する。またデータ登録要求部250は、設定先の変換集合番号mを「m=mod(m+1,M)」に更新する。さらにデータ登録要求部250は、分割キーワード番号lに1を加算する(l=l+1)。
【0223】
[ステップS129]データ登録要求部250は、xm,gの要素に値が未設定か否かを判断する。データ登録要求部250は、値が未設定であれば処理をステップS126に進める。またデータ登録要求部250は、値が設定済であれば、処理をステップS124に進める。
【0224】
[ステップS130]データ登録要求部250は、処理対象項目のキーワードのうち未設定のキーワードが残っているか否かを判断する。データ登録要求部250は、未設定のキーワードがあれば、処理をステップS122に進める。またデータ登録要求部250は、未設定のキーワードがなければ処理をステップS131に進める。
【0225】
なおデータ登録要求部250は、選択した項目のすべてのキーワードに対応する分割キーワードを変換集合の要素に設定完了後に、その項目に対応する変換集合に値が未設定の領域が残っている場合、該当領域にダミー要素を設定する。
【0226】
[ステップS131]データ登録要求部250は、未処理の項目があるか否かを判断する。データ登録要求部250は、すべての項目について変換集合を生成する処理が完了していれば、変換集合生成処理を終了する。またデータ登録要求部250は、未処理の項目があれば処理をステップS121に進める。
【0227】
このような手順で変換集合を生成することで、適切な変換集合を生成することができる。次に、ダミーデータ生成処理について詳細に説明する。
図29は、ダミーデータ生成処理の手順の一例を示すフローチャートである。以下、
図29に示す処理をステップ番号に沿って説明する。
【0228】
[ステップS141]データ登録要求部250は、ステップS102で算出した群数Gを取得する。
[ステップS142]データ登録要求部250は、真のデータをG-1個コピーし、G-1個のダミーレコード群を生成する。
【0229】
[ステップS143]データ登録要求部250は、真のデータの全項目それぞれについて、ステップS144~S146の処理を実行する。
[ステップS144]データ登録要求部250は、全ダミーレコードそれぞれについて、ステップS145の処理を実行する。
【0230】
[ステップS145]データ登録要求部250は、ダミーレコードの項目値を変換する。例えばデータ登録要求部250は、処理対象の項目に対応する変換集合の中から、ダミーレコードにおける処理対象の項目値(変換対象項目値)を含む変換集合を選択する。次にデータ登録要求部250は、処理対象のダミーレコードの属するダミーレコード群の群番号を取得する。データ登録要求部250は、選択した変換集合内の変換対象項目値に対応する要素から群番号の分だけ巡回的に右の要素を、その変換集合から取得する。そしてデータ登録要求部250は、変換処理対象のダミーレコード内の変換対象項目値を、取得した要素の値(ダミー値)に変換する。
【0231】
[ステップS146]データ登録要求部250は、全ダミーレコードそれぞれについて、ステップS145の処理が完了した場合、処理をステップS147に進める。
[ステップS147]データ登録要求部250は、全項目それぞれについて、ステップS144~S146の処理が完了した場合、ダミーデータ生成処理を終了する。
【0232】
このようにして、真のデータの項目値を、変換集合内の他の要素に置き換えることで、ダミーデータが生成される。そしてデータ登録要求部250が、生成したダミーデータとフラグ値を含む登録データを暗号化して秘匿化DB110に登録する。
【0233】
秘匿化DB110内のデータを検索しようとする検索者は、例えば端末装置400の検索条件入力画面を介して検索キーワードを端末装置400に入力する。
図30は、検索条件入力画面の一例を示す図である。検索条件入力画面61には、例えば検索変数としてDB210内の各項目の名称が設定されている。そして検索変数に対応付けて、その検索変数の指定値を検索キーワードとして入力するための指定値入力領域62が設けられている。検索者が指定値入力領域62に、検索変数として示されている項目の指定値を入力すると、端末装置400は、入力された指定値を検索キーワードとする検索を行う。
【0234】
端末装置400は、秘匿化検索を実施するために、変換情報記憶部420に格納された情報を用いて検索キーワードの分割キーワードへの変換などの処理を行う。
図31は、端末装置内の変換情報記憶部に格納される情報の一例を示す図である。変換情報記憶部420には、キーワード一覧421、変換集合一覧422、および分割キーワード一覧423が格納されている。このうちキーワード一覧421および変換集合一覧422は、それぞれデータ登録サーバ200が有するキーワード一覧231および変換集合一覧232と同じ内容のデータである。
【0235】
分割キーワード一覧423は、DB210に登録可能なキーワードそれぞれと分割キーワードとの対応関係を示すデータである。分割キーワード一覧423の内容は、データ登録サーバ200が有する分割キーワード選択テーブル233から選択確率の情報を削除したものと同じである。端末装置400は、分割キーワード一覧423に基づいて、検索キーワードを分割キーワードに変換する。
【0236】
図32は、分割キーワードへの変換の一例を示す図である。端末装置400は、入力された検索条件を示す平文検索クエリ63を分割する。例えば端末装置400は、検索者から検索条件として「年齢層=老人」(左辺が項目名、右辺がキーワード(項目値)を表す)の入力を受け付けたものとする。端末装置400は、分割キーワード選択テーブル233から、キーワード「老人」に対応付けられた分割キーワードを取得する。
図32の例では、「老人0」と「老人1」とが分割キーワードとして取得される。端末装置400は、検索キーワード「老人」を分割キーワード「老人0」および「老人1」に分割して、それらの論理和を示す分割クエリ64を生成する。
【0237】
端末装置400は、変換集合一覧422に基づいて、分割クエリ64から攪乱クエリを生成する。
図33は、攪乱クエリの生成の一例を示す図である。端末装置400が有する変換集合一覧422の内容は変換集合一覧232と同じであり、DB210の項目に対応する変換集合422a~422jが含まれる。
【0238】
端末装置400は、分割クエリ64に含まれる分割キーワード「老人0」および「老人1」それぞれについて、検索対象の群をランダムに決定する。例えば「老人0」の検索対象の群は「1」、「老人1」の検索対象の群は「0」に決定されたものとする。
【0239】
端末装置400は、変換集合一覧422を参照し、決定された群に基づいて、分割クエリ64内の分割キーワードを変換して攪乱クエリ65を生成する。例えば「老人0」は、変換集合422gに従って、群「1」の要素「児童0」に変換される。また「老人1」は検索対象の群が「0」(真のデータのレコード群)であるため、変換されない。
【0240】
そして端末装置400は、攪乱クエリ65内のキーワードを暗号化する。これにより暗号文のキーワードを含む秘匿化検索クエリ66が生成される。端末装置400は、秘匿化検索クエリ66を含む検索要求をデータ管理サーバ100に送信する。
【0241】
図34は、検索処理の一例を示す図である。データ管理サーバ100は、秘匿化検索クエリ66を受信すると、秘匿化検索クエリ66に示される条件を満たすレコードを秘匿化DB110から検索する。例えば「H(年齢層=児童0)」の条件を満たすレコードは、ID「9」とID「10」のレコードである。また「H(年齢層=老人1)」の条件を満たすレコードは、ID「3」とID「8」のレコードである。秘匿化検索クエリ66は、「H(年齢層=児童0)」と「H(年齢層=老人1)」との論理和であるため、これらの条件のいずれかを満たすレコードが秘匿化検索結果67に含められる。データ管理サーバ100は、秘匿化検索結果67を端末装置400に送信する。
【0242】
端末装置400は、秘匿化検索結果67を受信すると、秘匿化検索結果67内の項目値を復号する。端末装置400は、復号することにより、秘匿化検索結果67における3つ目と4つ目のレコードが「年齢層=児童0」を満たしており、1つ目と2つ目のレコードが「年齢層=老人1」を満たしていることを認識する。
【0243】
端末装置400は、復号して得られた各レコードのフラグに基づいて、そのレコードが属する群の群番号を判断する。そして端末装置400は、各レコードが属する群が、検索群か否かを判断する。例えば「年齢層=児童0」の検索群は「1」であるため「年齢層=児童0」を満たすレコードのうち、群番号「1」のレコードのみが検索対象のレコードである。また「年齢層=老人1」の検索群は「0」であるため「年齢層=老人1」を満たすレコードのうち、群番号「0」のレコードのみが検索対象のレコードである。
【0244】
端末装置400は、秘匿化検索結果67に含まれていたレコードのうち検索群に属していないレコードを除去し、残りのレコードを復元する。なお真のデータのレコード群(群番号「0」)に属していたレコードについては、復元処理は不要である。端末装置400は、ダミーレコード群(群番号「1」)に属していたレコードの項目値を、データ登録サーバ200が有する変換集合一覧232(
図15参照)と同じ内容の変換集合一覧422(
図33参照)に基づいて、攪乱クエリ65の生成時と逆の変換を行う。その結果、群番号「1」に属するダミーレコードにおける「小児科1」は「婦人科0」に変換され、「男1」は「女0」に変換され、「児童0」は「老人0」に変換される。
【0245】
端末装置400は、各レコードに項目値として設定されている分割キーワードを元のキーワードに変換し、フラグを除去することで検索結果68を生成する。
図34の例では、分割キーワードの最後の数字を削除することで、元のキーワードに変換することができる。
【0246】
図35は、検索処理の手順の一例を示すフローチャートである。以下、
図35に示す処理をステップ番号に沿って説明する。
[ステップS201]検索要求部440は、ユーザからの検索条件として入力された検索キーワードと、その検索キーワードに対応する項目を、平文検索クエリとして取得する。
【0247】
[ステップS202]検索要求部440は、変換集合一覧422と分割キーワード一覧423を生成する。例えば検索要求部440は、データ登録要求部250における項目ごとの変換集合生成処理と同様の処理を行い、変換集合一覧422を生成する。検索要求部440によって生成される変換集合一覧442は、データ登録要求部250で生成された変換集合一覧232と同じものとなる。
【0248】
データ登録要求部250が乱数を用いてステップS122(
図28参照)のキーワードの選択順を決定している場合、検索要求部440は、データ登録要求部250が乱数の生成に使用した乱数シードをデータ登録サーバ200から取得する。検索要求部440は、取得した乱数シードに基づいて、データ登録要求部250が変換集合に用いたものと同じ乱数を生成して、キーワードの選択順を決定する。その結果、データ登録サーバ200が有する変換集合一覧232と同じ内容の変換集合一覧422を生成することができる。なお検索要求部440は、データ登録サーバ200から変換集合一覧232を取得し、端末装置400の変換集合一覧422として変換情報記憶部420に格納してもよい。
【0249】
検索要求部440が生成する分割キーワード一覧423は、データ登録サーバ200における分割キーワード選択テーブル233から選択確率の情報を除いたものである。例えば検索要求部440は、データ登録サーバ200と同じアルゴリズムで分割キーワードを生成する。例えば検索要求部440は、キーワード一覧421に示されるキーワードの後ろに、分割キーワードを識別する0から昇順の番号を追加することで、分割キーワードを生成する。
【0250】
[ステップS203]検索要求部440は、取得した平文検索クエリを分割する。例えば検索要求部440は、平文検索クエリに含まれる検索キーワードを分割キーワードに分割する。そして検索要求部440は、分割によって得られた分割キーワードごとの分割クエリを生成する。
図32に示すような分割キーワード一覧423が生成されているとき、検索キーワード「老人」は「老人0」と「老人1」とに分割される。そして検索キーワード「老人0」を含む分割クエリと検索キーワード「老人1」を含む分割クエリとが生成される。分割により生成された分割クエリの検索結果の論理和が、取得した平文検索クエリの検索結果である。
【0251】
取得した平文検索クエリには、複数の検索キーワードが含まれる場合がある。複数の検索キーワードの論理和検索の場合、検索要求部440は、各検索キーワードを分割キーワードに分解し、分割キーワードごとの分割クエリを生成する。複数生成された分割クエリによる検索結果の論理和が、取得した平文検索クエリの検索結果である。
【0252】
また複数の検索キーワードの論理積検索の場合、検索要求部440は、項目が異なる分割キーワード間のすべての組み合わせを生成する。3つ以上の項目それぞれの検索キーワードの論理積の場合であれば、検索要求部440は、各項目から1ずつ分割キーワードを選択することで生成可能な分割キーワードのすべての組み合わせを生成する。そして検索要求部440は、生成した分割キーワードの組み合わせごとの論理積の平文検索クエリを生成する。この場合も、複数生成された分割クエリによる検索結果の論理和が、取得した平文検索クエリの検索結果である。
【0253】
例えば取得した平文検索クエリが「A∧B」であり、検索キーワード「A」は「A0」と「A1」に分割され、検索キーワード「B」は「B0」と「B1」に分割されるものとする。この場合、検索要求部440は、分割クエリとして、「A0∧B0」、「A0∧B1」、「A1∧B0」、「A1∧B1」を生成する。
【0254】
[ステップS204]検索要求部440は、生成された分割クエリのうち未選択のものを1つ選択する。
[ステップS205]検索要求部440は、真のデータのレコード群とダミーレコード群とを含むすべての群の中から、1つの群を確率的に選択する。検索要求部440は、選択したレコード群を対象として検索を行うこととなる。なお、秘匿化DB110内のすべてのダミーレコード群は真のデータのレコード群と値は異なるものの同一の頻度分布を有している。そのためダミーレコード群を検索対象としたとしても、検索結果として得られたダミーレコード内のダミー値を変換集合に従って逆変換することで正しい検索結果を得ることができる。
【0255】
このように分割クエリを変換集合に従って変換(攪乱)すれば、どの群を検索しても、平文データ群を検索した際と同一の結果が得られる。そのため、検索クエリの攪乱を行いながらも、検索クエリの数は増加しない。また検索要求部440が検索対象とする群をランダムに決定することで、攻撃者33が検索される群の偏りによって秘匿化DBの各レコードの群番号を特定することが抑止される。
【0256】
[ステップS206]検索要求部440は、ダミーレコード群を選択したか否かを判断する。検索要求部440は、選択したのがダミーレコード群であれば、処理をステップS207に進める。また検索要求部440は、選択したのが真のデータのレコード群であれば、処理をステップS212に進める。
【0257】
[ステップS207]検索要求部440は、生成した分割クエリを、変換集合に基づいて攪乱する。例えば検索要求部440は、分割クエリにおいて、検索対象の項目と分割キーワードが指定されている場合、まず検索対象の項目に対応する1以上の変換集合の中から、指定された分割キーワードに対応する要素を含む変換集合を特定する。次に検索要求部440は、選択したダミーレコード群の群番号を取得する。検索要求部440は、検索対象の分割キーワードに対応する変換集合内の要素から群番号の分だけ巡回的に右の要素を、その変換集合から取得する。そして検索要求部440は、分割クエリ内の変換対象の分割キーワードを、取得した要素の値(ダミー値)に変換する。
【0258】
[ステップS208]検索要求部440は、ステップS207で変換された後の分割クエリを暗号化して秘匿化検索クエリを生成する。検索要求部440は、生成した秘匿化検索クエリをデータ管理サーバ100に送信する。
【0259】
[ステップS209]検索要求部440は、データ管理サーバ100から秘匿化検索の検索結果(秘匿化検索結果)を取得する。検索要求部440は、秘匿化検索結果から、ステップS206で選択されたダミーレコード群に属するダミーレコードのみを抽出する。このとき検索要求部440は、各レコードのフラグ値に基づいて、選択されたダミーレコード群に属するダミーレコードを特定できる。
【0260】
[ステップS210]検索要求部440は、秘匿化検索結果に含まれる、抽出したダミーレコード内の項目値(ダミー値)を、予めデータ登録サーバ200から取得した暗号鍵を用いて復号する。
【0261】
[ステップS211]検索要求部440は、ステップS206で選択されたダミーレコード群に属するダミーレコードの復号されたダミー値を変換集合に基づいて逆変換し、平文の真の値が設定された検索結果を復元する。
【0262】
図36は、ダミー値の逆変換の一例を示す図である。例えば検索要求部440は、ダミー値が属する項目に対応する1以上の変換集合の中からダミー値に対応する要素を含む変換集合を特定する。
図36の例では、変換集合69が特定されたものとする。次に検索要求部440は、ステップS206で選択したダミーレコード群の群番号を取得する。検索要求部440は、ダミー値に対応する変換集合69内の要素から、群番号の分だけ巡回的に左の要素を、その変換集合69から取得する。そして検索要求部440は、復号されたダミー値を、取得した要素の値(真のデータの分割キーワード)に変換する。例えば群番号「2」のダミーレコード群に属するダミーレコードのダミー値が「児童1」の場合、そのダミー値は変換集合69において「児童1」の左側に2つ目の要素「成人1」に逆変換される。
【0263】
図36に示した逆変換の関係は、データ登録サーバ200がデータ登録時に行った項目値の変換に用いた写像の逆写像となる全単射関係である。選択されたダミーレコード群に属するダミーレコード内のすべてのダミー値に対してこのような逆変換を行うことで、ダミー値に対応する分割キーワードが得られる。検索要求部440は、分割キーワード一覧に基づいて、分割キーワードを元のキーワード(真の値)に変換する。これにより真の検索結果が生成される。その後、検索要求部440は、処理をステップS215に進める。
【0264】
以下、
図35の説明に戻る。
[ステップS212]検索要求部440は、検索条件に真のデータのレコード群に対応するフラグ値を追加した検索クエリを暗号化して秘匿化検索クエリを生成し、秘匿化検索クエリをデータ管理サーバ100に送信する。
【0265】
[ステップS213]検索要求部440は、データ管理サーバ100から秘匿化検索クエリを用いた秘匿化検索結果を取得する。
[ステップS214]検索要求部440は、秘匿化検索結果に含まれる、真のデータのレコード群のレコード内の項目値を復号する。なお検索要求部440は、ステップS210と同様に、選択した群のレコード(真のデータのレコード)を特定する。検索要求部440は、真のデータのレコード内の分割キーワードを、分割キーワード一覧に基づいて元のキーワードに変換し、平文の真の値が設定された検索結果を得る。
【0266】
[ステップS215]検索要求部440は、平文の検索結果を出力する。
[ステップS216]検索要求部440は、すべての分割クエリが選択されたか否かを判断する。検索要求部440は、未選択の分割クエリがある場合、処理をステップS204に進める。また検索要求部440は、すべての分割クエリが選択され、対応する秘匿化検索クエリによる検索が終了した場合、検索処理を終了する。
【0267】
検索結果は、例えば検索結果表示画面に表示される。
図37は、検索結果表示画面の一例を示す図である。検索結果表示画面70には、例えば患者に関する検索条件と、その検索条件に適合する患者の数が表示されている。また検索結果表示画面70には、検索でヒットしたレコードの平文のデータが表示されている。
【0268】
このような検索により、G個の分割キーワードの集合ごとに項目値の出現頻度が均等化される。その結果、項目値ごとの出現頻度の偏りが抑止され、頻度分析攻撃に対する安全性が向上する。しかも分割キーワードの出現頻度は秘密の選択確率によって決まっているため、頻度攪乱後のあるキーワードの出現頻度に基づいて、そのキーワードの候補を絞り込むことは困難である。
【0269】
以下、
図38と
図39を参照して、秘匿化DB110頻度分析攻撃の困難性について説明する。
図38は、分割キーワードによる頻度攪乱の一例を示す図である。例えばDB210内の年齢層の項目について、「老人」の出現頻度が「98」、「成人」の出現頻度が「35」、「青年」の出現頻度が「91」、児童の出現頻度が「63」であるものとする。各キーワードは2つずつに分割され、
図15に示す変換集合232g~232jによって群「1」のダミーレコードの項目値がダミー値への変換が行われることで、出現頻度攪乱が実現される。
【0270】
秘匿化DB110には頻度攪乱後のデータが登録され、変換集合ごとに分割キーワードの出現頻度が均等化されている。図中、実線の矩形内の数字は群「0」(真のデータのレコード群)における出現頻度であり、破線の矩形内の数字は群「1」(ダミーレコード群)における出現頻度である。
【0271】
図38の例では、「H(老人0)」と「H(児童0)」の出現頻度は共に「65」である。「H(老人1)」と「H(成人0)」の出現頻度は共に「81」である。「H(成人1)」と「H(青年0)」の出現頻度は共に「80」である。「H(青年1)」と「H(児童1)」の出現頻度は共に「61」である。
【0272】
図39は、頻度分析攻撃の一例を示す図である。例えば攻撃者33は、秘匿化DB110への検索状況を盗み見ることで、検索によってヒットしたレコード数により攪乱後頻度「65,81,80,61」の4パターンであることを把握できたものとする。
【0273】
攻撃者33がDB210における各キーワードの出現頻度を知っているとき、攻撃者33がそれらの出現頻度を組み合わせても攪乱後頻度とはならない。そこで攻撃者33は、分割頻度と変換集合の要素の組み合わせを総当たりで、組み合わせごとの攪乱後頻度を算出することが考えられる。
【0274】
例えば「老人」であれば、「老人0」と「老人1」それぞれの分割頻度の比率は「0:98」、「1:97」、「2:96」、・・・、「98:0」の99通り存在する。同様に「成人」についての分割頻度の比率は36通り、「青年」についての分割頻度の比率は92通り、「児童」についての分割頻度の比率は64通り存在する。
【0275】
また同じ変換集合の要素となる分割キーワードの組み合わせも、多数のパターンが考えられる。例えば「老人0」と同じ変換集合に属する分割キーワードは、「児童0」以外にも「成人0」の場合、「青年0」の場合も考えられる。変換集合の生成アルゴリズムが既知であったとしても、変換集合を生成する前にキーワードをランダムに並べ替えておけば、どのような組み合わせの変換集合が生成されるのかを秘密にしておくことは可能である。
【0276】
攻撃者33は、これらのすべての組み合わせの可能性を考慮して、攪乱後頻度「65,81,80,61」それぞれの検索対象のキーワードを探し出すこととなる。しかし、攪乱後頻度が「65,81,80,61」となるような分割頻度と変換集合のパターンは多数存在する。例えば
図15に示す通りの変換集合232g~232jであったとしても、変換集合232g~232jそれぞれの分割キーワードの攪乱後頻度が「65,81,80,61」となる分割頻度の組み合わせは、
図39に示すように35通り存在する。
【0277】
また変換集合232g~232jそれぞれの分割キーワードの攪乱後頻度が「61,80,81,65」の場合(出現頻度例72)がある。この出現頻度例72の場合を、変換集合232g~232jそれぞれの分割キーワードの攪乱後頻度が「65,81,80,61」の場合(出現頻度例71)と区別することはできない。変換集合232g~232jそれぞれの分割キーワードの攪乱後頻度が「61,80,81,65」の場合(出現頻度例72)についても、そのような攪乱後頻度となる分割頻度の組み合わせは多数存在する。
【0278】
そのため攻撃者33は、検索が実行されたときにヒットしたレコード数から検索対象のキーワードを絞り込もうとしても、いずれのキーワードもあり得ることとなり、絞り込みは困難である。例えば検索にヒットしたレコード数が「81」であったとしても、出現頻度例71または出現頻度例72があり得ることを考慮すると、検索対象のキーワードとしてはいずれのキーワードもあり得ることとなる。このように頻度分析攻撃が困難となっている。
【0279】
また端末装置400では、検索結果としてダミーレコードを取得した場合でも、そのダミーレコードのダミー値に基づいて、入力された検索条件に適合する真のデータの項目値を取得することができる。そのため、攻撃者33がデータ管理サーバ100から送信された検索結果を取得したとしても、検索結果に含まれる項目値が真のデータの項目値なのかダミー値なのかを、攻撃者33は判別することができない。その結果、真のデータの機密性が向上する。
【0280】
なお、変換集合一覧232は秘密情報であり、秘匿化DB110にデータを登録するデータ登録サーバ200と、その秘匿化DB110の検索が許可されている端末装置400のみが変換集合一覧232を有する。また1レコードごとのレコードの追加・削除を行うと、追加・削除された暗号文と平文の対応付けが可能となる。そのためデータ登録サーバ200は、1行単位での変換集合が特定されるため、1レコードごとのレコードの追加・削除は行わない。すなわちデータ登録サーバ200は、所定数以上の量のレコードを纏めて、DB210および秘匿化DB110への追加または削除を行う。
【0281】
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、ダミーレコードを用いずに頻度攪乱を行うものである。
【0282】
前述の第2の実施の形態では複数のダミーレコードを有するダミーデータを追加しているため、秘匿化DB110内のレコード数は、元のデータのレコード数の整数倍となる。第3の実施の形態ではデータ登録サーバ200は、ダミーレコードの生成に代えて、分割キーワードを所定数ずつの変換集合に纏め、同じ変換集合に属する分割キーワードを共通の値(共有キーワード)に変換することで頻度攪乱を行う。すなわち、複数の値が共通の値に変換されることで、秘匿化DB内の各値の出現頻度は、真のデータの各値の出現頻度とは異なる数となる。このときデータ登録サーバ200は、各レコードに、共有キーワードの変換元の分割キーワードを示す情報をフラグとして設定する。
【0283】
図40は、共通キーワードへの変換の一例を示す図である。第3の実施の形態では、データ登録サーバ200は、第2の実施の形態における変換集合一覧に代えて、共有集合一覧234を生成する。
【0284】
共有集合一覧234には、項目ごとの1以上の共有集合234a~234jが含まれる。共有集合234a~234jの生成条件は、少なくとも1つの要素が分割キーワードであり、かつその分割キーワードと変換元のキーワードが共通の他の分割キーワードが他の変換集合に含まれることである。換言すると共有集合234a~234jそれぞれは、1つのキーワードに対応するn個の分割キーワードのうちのn-1個以下の分割キーワードを含む。
【0285】
図40の例では、共有集合一覧234には、診療科についての3つの共有集合234a~234c、性別についての3つの共有集合234d~234df、および年齢層についての4つの共有集合234g~234jが含まれている。共有集合234d,234fには1つの要素が含まれ、それ以外の共有集合234a~234c,234e,234g~234jには、2つずつの要素が含まれている。共有集合234a~234jに含まれる要素は、すべて分割キーワードである。また分割しないキーワードがある場合、そのキーワードも共有集合234a~234jの要素となる。
【0286】
データ登録サーバ200は、第2の実施の形態と同様に、分割キーワード選択テーブル233(
図14参照)を参照して、平文のDB210に格納されていたキーワードを、そのキーワードに対応する複数の分割キーワードのうちの1つに確率的に変換する。そしてデータ登録サーバ200は、分割済データ211を生成する。
【0287】
さらにデータ登録サーバ200は、分割済データ211内の分割キーワードを、共有集合一覧234に基づいて共有キーワードへ変換する。例えばデータ登録サーバ200は、1つの共有集合内の要素それぞれに対応する分割キーワードは、同じ共有キーワードに変換する。
図40の例では、共有集合234a~234jに含まれる要素を列挙した文字列が共有キーワードとなっている。
【0288】
なお
図40における共有集合234a~234j内の「:」の左の数字は要素番号である。「:」の右の文字列が要素として設定された分割キーワードである。
例えば共有集合234aには「小児科0」と「内科0」とが要素として含まれる。そのため分割済データ211内の分割キーワード「小児科0」と「内科0」は、いずれも共通キーワード「小児科0,内科0」に変換される。なお共有集合234dには、要素が「男0」のみである。そのため共有集合234dに対応する共有キーワードは、分割キーワードと同じ「男0」である。
【0289】
分割済データ211内の各レコードに対応するレコードが、登録データ81として生成される。そしてデータ登録サーバ200は、登録データ81内に各レコードにフラグを付与する。登録データ81は、第1の実施の形態に示した攪乱レコード群6の一例である。
【0290】
フラグは、変換元の分割キーワードに対応する要素の要素番号と、変換元のレコードのIDを含んでいる。例えば分割済データ211のID「0」のレコードは、診療科「内科0」、性別「男1」、年齢層「老人1」を含む。「内科0」は「小児科0,内科0」に変換されている。共有集合234aにおける「内科0」の要素番号は「1」である。「男1」は「男1,女0」に変換されている。共有集合234dにおける「男1」の要素番号は「0」である。「老人1」は「老人1,成人0」に変換されている。「老人1」の要素番号は「0」である。すると変換後のレコードには、レコードのID「0」、「内科0」の要素番号「1」、「男1」の要素番号「0」、および「老人1」の要素番号「0」を含むフラグ「0(1,0,0)」が付与される。
【0291】
データ登録サーバ200は、登録データ81を項目値ごと(フラグも含め)に暗号化して、秘匿化DB110に登録する。その際、データ登録サーバ200は、登録データ81の各レコードにランダムなIDを付与し、IDでソートしてもよい。
【0292】
端末装置400は、
図32に示す分割キーワード一覧423を有すると共に、データ登録サーバ200が有する共有集合一覧234と同じ内容の共有集合一覧を有する。そして端末装置400は、秘匿化DB110を検索する場合、検索キーワードを対応する分割キーワードそれぞれに変換後、さらに分割キーワードを共有キーワードに変換する。そして端末装置400は、共有キーワードを含む秘匿化検索クエリをデータ管理サーバ100に送信する。
【0293】
なお、共有集合一覧234は秘密情報であり、秘匿化DB110にデータを登録するデータ登録サーバ200と、その秘匿化DB110の検索が許可されている端末装置400のみが共有集合一覧234を有する。また1レコードごとのレコードの追加・削除を行うと、追加・削除された暗号文と平文の対応付けが可能となる。そのためデータ登録サーバ200は、1行単位での共有集合が特定されるため、1レコードごとのレコードの追加・削除は行わない。すなわちデータ登録サーバ200は、所定数以上の量のレコードを纏めて、DB210および秘匿化DB110への追加または削除を行う。
【0294】
データ管理サーバ100は、秘匿化検索クエリに基づいて、秘匿化DB110から、該当する共有キーワードを含むレコードを検索する。秘匿化DB110内の共有キーワードの出現頻度は、共有キーワードの変換元となった各分割キーワードの出現頻度の合計である。また、分割キーワードは確率的に生成されている。そのため攻撃者33が共有キーワードの出現頻度を取得したとしても、元の検索キーワードを推定するのは困難である。
【0295】
端末装置400は、秘匿化検索クエリにヒットしたレコードをデータ管理サーバ100から取得すると、そのレコードのフラグに基づいて、共通キーワードを、変換元の分割キーワードに変換することができる。そして端末装置400は、分割キーワード一覧423に基づいて分割キーワードを元のキーワードに変換する。これにより端末装置400は、検索キーワードを含むレコードを取得することができる。
【0296】
またフラグ値にはレコードのIDが含まれているため、フラグ値を暗号化したときの暗号文がレコードごとにユニークな値となる。これにより、フラグ値の頻度分析攻撃を防ぐことができる。
【0297】
図40には、DB210に登録可能なすべてのキーワードについて分割キーワードに変換する例を示しているが、すべての共有集合が生成条件を満たせるのであれば、一部のキーワードについては分割しなくてもよい。
【0298】
図41は、共有集合の他の生成例を示す第1の図である。
図41に示す共有集合一覧82には、診療科についての3つの共有集合82a~82c、性別についての2つの共有集合82d~82e、および年齢層についての3つの共有集合82f~82hが含まれている。
図41の例では、診療科の「内科」、性別のキーワード「女」、年齢層のキーワード「青年」および「児童」については分割キーワードへの変換が行われない。そのため、これらのキーワードはそのまま共有集合の要素となっている。なお共有集合82c,82eに含まれる要素は1つである。第2の実施の形態における変換集合と異なり、共有集合は、要素が1つであってもよい。
【0299】
共有集合一覧82に示す各共有集合82a~82hは、共有集合の生成条件を満たしている。ただし共有集合一覧82を用いて共有キーワードへの変換を行うと、
図40に示した共有集合一覧234を用いた場合に比べて、平文推定の難易度が下がる。例えば共有集合一覧82を用いて共有キーワードへの変換を行った秘匿化DB110に対して、攻撃者33は以下のような攻撃が可能である。
【0300】
例えば攻撃者33が性別に対する検索の検索対象の特定を試みる場合を想定する。攻撃者33は、性別の共有集合82d,82eそれぞれの共有キーワードごとの攪乱後頻度を得る。例えば攻撃者33は、検索者が性別「女」のレコードを検索した場合にヒットしたレコード数を取得することで、共有集合82dに対応する共有キーワードの攪乱後頻度(「男0」の頻度と「女」の頻度との合計)を得ることができる。攻撃者33は、共有集合82dに対応する共有キーワードの攪乱後頻度から平文の「女」の頻度を減算する。すると「男0」の頻度となる。さらに攻撃者33は、減算結果にもう1つの共有集合82eに対応する共有キーワードの攪乱後頻度を加算する。加算後の頻度は、「男0」の頻度と「男1」の頻度との合計である。
【0301】
攻撃者33は、加算結果が「男」の頻度と等しくなることが確認できれば、共有集合82dに対応する共有キーワードの攪乱後頻度となる検索が行われた場合、対応する共有集合82dには「女」が含まれると判断できる。以後、攻撃者33は、検索者により共有集合82dに対応する共有キーワードの攪乱後頻度となる検索のみが行われた場合、「女」を検索したと特定することができる。
【0302】
攻撃者33がこのような試行を繰り返すことで検索対象の絞り込みが可能となるが、同じ項目に登録可能なキーワード数が多くなるほど、このような攻撃の試行回数が増加し、検索対象が特定される危険性は低下する。
【0303】
このように、共有集合一覧82に示すような共有集合82a~82hでは、性別のように登録可能なキーワード数が少ない項目がある場合に、頻度分析攻撃に対する安全性が低下してしまう。ただし、各項目の登録可能なキーワード数が多ければ、攻撃者33が行う攻撃で用いるキーワード(攻撃において該当キーワードの頻度の加減算を行う)の組み合わせ数が膨大となる。その結果、共有集合一覧82に示すように一部の要素が、DB210に登録されるキーワードのまま(分割キーワードに変換されていない)であっても十分に安全となる。
【0304】
なお第3の実施の形態においても、第2の実施の形態における変換集合と同様、含まれる分割キーワードの変換元のキーワードの組み合わせが同じとなる共有集合が複数ある場合、頻度分析攻撃に対して脆弱となる。そのためデータ登録要求部250は、含まれる分割キーワードの変換元のキーワードの組み合わせが互いに異なるように、複数の共有集合を生成する。
【0305】
第3の実施の形態を実現するために各装置が有する要素は、
図18に示した第2の実施の形態の各装置の要素と同じである。ただし第3の実施の形態では、各要素の処理内容の一部または記憶する情報の一部が第2の実施の形態と異なる。
【0306】
第3の実施の形態ではデータ登録サーバ200の変換情報記憶部230に格納される情報が、第2の実施の形態と異なる。
図42は、第3の実施の形態におけるデータ登録サーバの変換情報記憶部に格納される情報の一例を示す図である。変換情報記憶部230は、キーワード一覧231、共有集合一覧234、および分割キーワード選択テーブル233を記憶する。
図21に示した第2の実施の形態の変換情報記憶部230と比較すると、第2の実施の形態における変換集合一覧232が第3の実施の形態では共有集合一覧234となっている。
【0307】
共有集合一覧234は、データ登録要求部250によって生成される。データ登録要求部250は、例えば第2の実施の形態における変換集合生成手順と同じ手順で共有集合を生成することができる。
【0308】
図43は、共有集合の生成例を示す図である。キーワードリスト231aには、年齢層に設定可能な4個のキーワードが示されている。またG=2であり、各共有集合234g~234jには2つずつの分割キーワードが含まれる。
図14に示した分割キーワード選択テーブル233に基づいて分割キーワードを生成する場合、年齢層に関する分割キーワードは8個となる。
【0309】
データ登録要求部250は、まず4個の共有集合234g~234jの要素の格納領域を生成する。またデータ登録要求部250は、共有集合234g~234jの識別子をそれぞれ「2-0」~「2-3」とする。識別子の左側の数値は「年齢層」に対応する値であり、右側の数値は「年齢層」の共有集合234g~234jに対する通し番号である。
【0310】
データ登録要求部250は、例えばキーワードリスト231aから、所定の順番あるいはランダムな順番ですべてのキーワードを1回ずつ選択する。
図43の例では、キーワードリスト231aの左から順にキーワードを選択するものとする。
【0311】
データ登録要求部250は、選択したキーワードの分割キーワードを番号の小さい共有集合から順に、共有集合の格納領域に格納していく。このとき、データ登録要求部250は、同じキーワードに対応する分割キーワードは異なる共有集合に格納する。またデータ登録要求部250は、共有集合内の分割キーワードの変換元のキーワードの組み合わせが同じとなる複数の共有集合が生じないようにする。
【0312】
例えばデータ登録要求部250は、最初に選択したキーワードの1つ目の分割キーワードを先頭の共有集合234gに登録する。次にデータ登録要求部250は、そのキーワードの2つ目の分割キーワードを2番目の共有集合234hに登録する。例えば「老人」が最初に選択された場合、「老人0」が共有集合234gに登録され、「老人1」が共有集合234hに登録される。
【0313】
データ登録要求部250は、2番目に選択したキーワードの1つ目の分割キーワードを、直前に選択したキーワードの2つ目の分割キーワードと同じ共有集合234hに登録する。次にデータ登録要求部250は、そのキーワードの2つ目の分割キーワードを次の共有集合234iに登録する。例えば「成人」が2番目に選択された場合、「成人0」が共有集合234hに登録され、「成人1」が共有集合234iに登録される。
【0314】
データ登録要求部250は、3番目以降に選択した各キーワードの分割キーワードについても、2番目に選択したキーワードと同様の手順で共有集合に登録する。例えば「青年」が3番目に選択された場合、「青年0」が共有集合234iに登録され、「青年1」が共有集合234jに登録される。
【0315】
データ登録要求部250は、最後に選択したキーワードの分割キーワードについては、格納領域が空いている共有集合に登録する。例えば「児童」が最後に選択された場合、「児童0」が共有集合234gに登録され、「児童1」が共有集合234jに登録される。
【0316】
このような手順で共有集合234g~234jが生成される。共有集合234g~234jそれぞれは、属する要素のうちの少なくとも1つが分割キーワードであり、かつその分割キーワードと変換元のキーワードが共通の他の分割キーワードが他の共有集合に含まれる。そのため共有集合の生成条件を満たしている。また共有集合234g~234j内の分割キーワードの変換元のキーワードの組み合わせが同じとなる複数の共有集合は生じていない。
【0317】
図43には年齢層の共有集合234g~234jの生成例を示したが、診療科および性別についても同様の手順でそれぞれの共有集合234a~234fを生成することができる。その結果、
図40に示したような共有集合一覧234が生成される。
【0318】
j番目の項目のキーワードの種類数をX
j、j番目の項目の共有集合数をM’
jとしたとき、
図43に示したのは、G=2,L=2,X
j=4,M’
j=4の場合の例である。これらのパラメータの値が別の値であっても、同様に適切な共有集合を生成することができる。
【0319】
データ登録サーバ200は、共有集合一覧234を用いて分割キーワードを共有キーワードに変換することで生成された登録データ81の各レコードにランダムなIDを付与し、IDでソートした後、各レコードを秘匿化DB110に格納する。
【0320】
図44は、共有キーワードが格納された秘匿化DBの一例を示す図である。秘匿化DB110に登録されたレコードはIDによってソートされており、真のデータにおける変換元のレコードとは異なる順番で登録されている。
【0321】
次にデータ登録処理の手順について説明する。
図45は、データ登録処理の手順の一例を示すフローチャートである。以下、
図45に示す処理をステップ番号に沿って説明する。
【0322】
[ステップS301]データ登録要求部250は、群数Gとキーワード分割数Lの設定入力を受け付ける。GとLは共に2以上の整数である。GとLの値が大きいほど安全性が向上するが登録するダミーレコード数も増加する。そこで、GとLの値は、秘匿化DB110に求められる頻度分析攻撃に対する安全性の度合いと、秘匿化DB110に許容されるダミーレコード数とを勘案して、データ登録サーバ200の管理者が決定する。
【0323】
[ステップS302]データ登録要求部250は、項目ごとの共有集合数を決定する。例えばj番目の項目の共有集合数M’jは、天井関数を用いて以下の式(4)で表される。
【0324】
【0325】
j番目の項目のキーワードの種類数Xjにキーワード分割数Lを乗算した値(L×Xj)が、その項目の分割キーワード数である。分割キーワード数を群数Gで除算した結果の天井関数(除算結果以上の最小の整数)と「3」とのうちの大きい方の値が、共有集合数となる。
【0326】
共有集合数が「3」以上となるようにしたことで、G=2の場合において、性別のように2種類のキーワードしか存在しない項目についても、3つの共有集合が生成される。これにより性別についても、異なる共有集合において、それぞれの分割キーワードの変換元のキーワードの組み合わせが同じとなることを抑止することができる。
【0327】
[ステップS303]データ登録要求部250は、すべての項目それぞれについて、ステップS302で決定した共有集合数分の共有集合を生成する。なお、データ登録要求部250は、共有集合の格納領域の数よりも分割キーワード数が少ない場合には、共有集合の要素の格納領域の一部を空欄のままとする。生成される各共有集合は少なくとも1つの分割キーワードを含み、その分割キーワードと変換元のキーワードが共通の他の分割キーワードが他の共有集合に含まれる。これにより、
図40の共有集合一覧234に示すような共有集合234a~234jが生成される。
【0328】
[ステップS304]データ登録要求部250は、分割キーワード選択テーブル233を生成する。この処理の詳細は、
図27に示したステップS104の処理と同様である。
[ステップS305]データ登録要求部250は、DB210から平文のデータを読み込む。
【0329】
[ステップS306]データ登録要求部250は、読み込んだ平文のデータのレコードに登録されているキーワードを、分割キーワード選択テーブル233に示される選択確率で確率的に分割キーワードに変換する。この処理の詳細は、
図27に示したステップS106の処理と同様である。
【0330】
[ステップS307]データ登録要求部250は、各レコードの分割キーワードを共有キーワードに変換する。なお、共有キーワードへ変換する処理の詳細は後述する(
図46参照)。
【0331】
[ステップS308]データ登録要求部250は、共有キーワードを含むレコードそれぞれに、ランダムにIDを付与する。
[ステップS309]データ登録要求部250は、各レコードにフラグ値を付与する。例えばデータ登録要求部250は、各レコードについて、そのレコードの変換元となった平文のDB210内のレコードのIDと、各項目の共有キーワードへの変換元となった分割キーワードの共有集合内での要素番号との組をフラグ値として生成する。変換元のレコードのIDを含むことにより、すべてのフラグ値をユニークな値にすることができ、フラグ値の頻度分析攻撃を防ぐことができる。また変換元の分割キーワードの共有集合での要素番号がフラグ値に含まれていることにより、フラグ値を参照すれば、共有キーワードを元の分割キーワードに戻すことが可能となる。
【0332】
[ステップS310]データ登録要求部250は、各レコードをIDでソートする。
[ステップS311]データ登録要求部250は、ソートされたレコード群を暗号化して、秘匿化DB110に登録する。例えばデータ登録要求部250は、レコード内の項目値ごとに暗号化し、暗号化された値を有するレコード群を、登録データとしてデータ管理サーバ100に送信する。データ管理サーバ100では、データ登録部120が登録データを受信し、受信した登録データを秘匿化DB110に格納する。
【0333】
次に分割キーワードを共有キーワードへ変換する処理について詳細に説明する。
図46は、共有キーワードへ変換する処理手順の詳細を示すフローチャートである。以下、
図46に示す処理をステップ番号に沿って説明する。
【0334】
[ステップS321]データ登録要求部250は、項目値が分割キーワードに変換された分割済データ211(
図40参照)に含まれる分割キーワードを1つ選択する。
[ステップS322]データ登録要求部250は、共有集合一覧234から、選択した分割キーワードが属する項目の共有集合を特定し、特定した共有集合から選択した分割キーワードを含む共有集合を検索する。
【0335】
[ステップS323]データ登録要求部250は、選択した分割キーワードを、その分割キーワードを含む共有集合に対応する共有キーワードに置き換える。例えばデータ登録要求部250は、選択した分割キーワードが属する共有集合のすべての要素を文字列結合し、共有キーワードとして出力する。またデータ登録要求部250は、予め共有集合ごとに特定の共有キーワードを設定しておき、選択した分割キーワードが属する共有集合に設定された共有キーワードに、分割キーワードを変換してもよい。
【0336】
[ステップS324]データ登録要求部250は、分割済データ211内に未選択の分割キーワードがあるか否かを判断する。データ登録要求部250は、未選択の分割キーワードがある場合、処理をステップS321に進める。またデータ登録要求部250は、すべての分割キーワードの共有キーワードへの置き換えが完了した場合、共有キーワードへ変換する処理を終了する。
【0337】
図47は、分割キーワードから共有キーワードへの変換の一例を示す図である。例えば分割キーワード「老人1」が選択されたものとする。「老人1」は、共有集合234hに含まれている。共有集合234hの要素は、「老人1」と「成人0」である。そこで「老人1」と「成人0」の文字列をコンマを挟んで結合した「老人1,成人0」が共有キーワードとして出力される。
【0338】
分割済データ211(
図40参照)内の各レコードの分割キーワードが共有キーワードに置き換えられることにより、各レコードは登録データ81(
図40参照)のレコードとなる。
【0339】
図48は、登録データのレコードの一例を示す図である。分割キーワードが設定されたレコード83は、ID「0」であり、診療科「内科0」、性別「男1」、年齢層「老人1」を有する。分割キーワード「内科0」は、「小児科0」と「内科0」とを含む共有集合234aの要素であるため、共有キーワード「小児科0,内科0」に変換される。分割キーワード「男1」は、「男1」と「女0」とを含む共有集合234eの要素であるため、共有キーワード「男1,女0」に変換される。分割キーワード「老人1」は、「老人1」と「成人0」とを含む共有集合234hの要素であるため、共有キーワード「老人1,成人0」に変換される。
【0340】
共有キーワードを有するレコード84には、ランダムにID「5」が付与されている。またレコード84のフラグ値には、レコード83のID「0」が含まれる。またレコード84のフラグ値には、レコード83内の分割キーワードについての、その分割キーワードが属する共有集合における要素番号が含まれる。
【0341】
このようにして生成されたレコード84は、項目値とフラグ値とが暗号化され、秘匿化DB110に登録される。秘匿化DB110に対する検索は、共有キーワードを用いて行われる。
【0342】
第3の実施の形態では端末装置400の変換情報記憶部420に格納される情報が、第2の実施の形態と異なる。
図49は、第3の実施の形態における端末装置の変換情報記憶部に格納される情報の一例を示す図である。変換情報記憶部420は、キーワード一覧421、共有集合一覧424、および分割キーワード一覧423を記憶する。
図31に示した第2の実施の形態の変換情報記憶部420と比較すると、第2の実施の形態における変換集合一覧422が第3の実施の形態では共有集合一覧424となっている。
【0343】
共有集合一覧424は、例えば検索要求部440によって、データ登録要求部250による共有集合一覧234の生成手順と同じ手順で生成される。また検索要求部440は、データ登録サーバ200から共有集合一覧234を取得し、自身の共有集合一覧424として変換情報記憶部420に格納してもよい。
【0344】
検索要求部440は、検索要求が入力されると分割キーワード一覧423と共有集合一覧424とを用いて、秘匿化検索クエリを生成する。
図50は、秘匿化検索クエリの一例を示す図である。検索要求部440は、検索条件が入力されると、検索条件に示される検索キーワードを含む平文検索クエリ91を生成する。次に検索要求部440は、分割キーワード一覧423を参照して、検索キーワードを、対応する複数の分割キーワードそれぞれに分割し、複数の分割キーワードの論理和検索を行う分割クエリ92を生成する。例えば検索キーワードが「老人」の場合、「老人0」と「老人1」の論理和検索を行う分割クエリ92が生成される。
【0345】
さらに検索要求部440は、共有集合一覧424を参照し、分割キーワードを、その分割キーワードが属する共有集合に対応する共有キーワードに変換することで攪乱クエリ93を生成する。例えば分割キーワード「老人0」の共有キーワード「老人0,児童0」と分割キーワード「老人1」の共有キーワード「老人1,成人0」との論理和検索を行う攪乱クエリ93が生成される。
【0346】
そして検索要求部440は、攪乱クエリ93内の共有キーワードを暗号化した秘匿化検索クエリ94を生成する。検索要求部440は、秘匿化検索クエリ94をデータ管理サーバ100に送信する。するとデータ管理サーバ100において、秘匿化検索クエリ94に応じた秘匿化検索が行われる。
【0347】
図51は、共有キーワードを用いた秘匿化検索の一例を示す図である。秘匿化検索クエリ94を取得したデータ管理サーバ100では、検索部140が秘匿化検索クエリ94に示されている共有キーワードの暗号文を含むレコードを秘匿化DB110から検索する。そして検索部140は、該当するレコードを含む秘匿化検索結果95を端末装置400に送信する。
【0348】
端末装置400の検索要求部440は、秘匿化検索結果95内の項目値を復号して、攪乱検索結果96を生成する。検索要求部440は、攪乱検索結果96の各レコードのフラグに基づいて、該当レコード内の共有キーワードの変換元の分割キーワードを判断する。そして検索要求部440は、復号された秘匿化検索結果95から、分割クエリ92に含まれる分割キーワードに基づいて変換された共有キーワードを有するレコードを検索する。
【0349】
検索要求部440は、分割クエリ92に示される分割キーワードを有するレコードの共有キーワードを分割キーワードに逆変換し、さらにその分割キーワードをDB210に登録可能なキーワードに変換する。そして検索要求部440は、フラグを除去した後、DB210に登録可能なキーワードを有するレコードを検索結果97として出力する。
【0350】
図52は、検索処理の手順の一例を示すフローチャートである。以下、
図52に示す処理をステップ番号に沿って説明する。
[ステップS401]検索要求部440は、ユーザからの検索条件として入力された検索キーワードと、その検索キーワードに対応する項目を、平文検索クエリとして取得する。
【0351】
[ステップS402]検索要求部440は、共有集合一覧424と分割キーワード一覧423を生成する。例えば検索要求部440は、データ登録要求部250における項目ごとの共有集合生成処理と同様の処理を行い、共有集合一覧424を生成する。検索要求部440によって生成される共有集合一覧は、データ登録要求部250で生成された共有集合一覧と同じものとなる。
【0352】
[ステップS403]検索要求部440は、取得した平文検索クエリを分割する。例えば検索要求部440は、平文検索クエリに含まれる検索キーワードを分割キーワードに分割する。そして検索要求部440は、分割によって得られた分割キーワードの論理和を示す分割クエリを生成する。
【0353】
取得した平文検索クエリには、複数の検索キーワードが含まれる場合がある。複数の検索キーワードの論理和検索の場合、検索要求部440は、各検索キーワードを分割キーワードに分解し、すべての分割キーワードの論理和を示す分割クエリを生成する。また複数の検索キーワードの論理積検索の場合、検索要求部440は、項目が異なる分割キーワード間のすべての組み合わせを生成する。3つ以上の項目それぞれの検索キーワードの論理積の場合であれば、検索要求部440は、各項目から1ずつ分割キーワードを選択することで生成可能な分割キーワードのすべての組み合わせを生成する。そして検索要求部440は、生成した分割キーワードの組み合わせごとの論理積を示す論理式を生成する。さらに検索要求部440は、分割キーワードの組み合わせごとに生成した論理積の論理式間の論理和を示す分割クエリを生成する。
【0354】
例えば取得した平文検索クエリが「A∧B」であり、検索キーワード「A」は「A0」と「A1」に分割され、検索キーワード「B」は「B0」と「B1」に分割されるものとする。この場合、検索要求部440は、分割クエリとして、「(A0∧B0)∨(A0∧B1)∨(A1∧B0)∨(A1∧B1)」を生成する。
【0355】
[ステップS404]検索要求部440は、生成した分割クエリを、共有集合に基づいて攪乱クエリに変換する。例えば検索要求部440は、分割クエリにおいて、検索対象の項目と分割キーワードが指定されている場合、まず検索対象の項目に対応する1以上の共有集合の中から、指定された分割キーワードに対応する要素を含む共有集合を特定する。次に検索要求部440は、特定した共有集合に対応する共有キーワードに、分割クエリ内の変換対象の分割キーワードを変換する。
【0356】
[ステップS405]検索要求部440は、ステップS404で変換された後の共有キーワードを暗号化して秘匿化検索クエリを生成する。検索要求部440は、生成した秘匿化検索クエリをデータ管理サーバ100に送信する。
【0357】
[ステップS406]検索要求部440は、データ管理サーバ100から秘匿化検索の検索結果(秘匿化検索結果)を取得する。
[ステップS407]検索要求部440は、秘匿化検索結果に含まれる項目値(暗号文)を予めデータ登録サーバ200から取得した暗号鍵を用いて復号し、平文の共有キーワードを含む攪乱検索結果を生成する。
【0358】
[ステップS408]検索要求部440は、攪乱検索結果から、分割クエリに含まれていた分割キーワードに基づいて変換された共有キーワードを含むレコードを検索する。例えば検索要求部440は、復号して得られた共有キーワードを、その共有キーワードに対応する共有集合の要素である分割キーワードに分割する。検索要求部440は、分割して得られた分割キーワードのうち、フラグ値に示される要素番号に対応する分割キーワードを抽出する。検索要求部440は、抽出した分割キーワードが、分割クエリに示される分割キーワードのいずれかと一致するか否かを判断する。検索要求部440は、一致した場合、その分割キーワードを含むレコードを、真の検索結果として抽出する。また検索要求部440は、抽出した分割キーワードが、分割クエリに示される分割キーワードのいずれとも一致しない場合、抽出した分割キーワードの抽出元のレコードを削除する。
【0359】
[ステップS409]検索要求部440は、真の検索結果として抽出したレコードの共有キーワードそれぞれを、DB210に設定されていたキーワードに復元する。例えば検索要求部440は、各共有キーワードを、その共有キーワードに対応する共有集合内の、フラグ値で示される要素番号の分割キーワードに変換する。そして検索要求部440は、分割キーワードを、分割キーワード一覧423においてその分割キーワードに対応するキーワードに変換する。
【0360】
[ステップS410]検索要求部440は、平文の検索結果を出力する。
このようにして、端末装置400を用いて秘匿化DB110に対する検索結果を得ることができる。この際、データ管理サーバ100に対して送信される秘匿化検索クエリでは共有キーワードが指定されている。そのため、検索条件として入力された検索キーワードの平文のDB210内での出現頻度と、秘匿化検索クエリにヒットするレコード数(秘匿化DB110内での共有キーワードの出現頻度)とは異なり、攻撃者33による頻度分析攻撃が困難となっている。
【0361】
図53は、共有キーワードを用いた場合の頻度分析攻撃の困難性を示す図である。例えばDB210において、「小児科」の出現頻度は「27」、「婦人科」の出現頻度は「84」、「内科」の出現頻度は「95」であるものとする。「小児科」は19個の分割キーワード「小児科0」と8個の分割キーワード「小児科1」とに確率的に変換されている。「婦人科」は50個の分割キーワード「婦人科0」と34個の分割キーワード「婦人科1」とに確率的に変換されている。「内科」は52個の分割キーワード「内科0」と43個の分割キーワード「内科1」とに確率的に変換されている。
【0362】
分割キーワード数は6個である。分割キーワードを2個ずつ含む共有集合が3個生成され、その共有集合に基づいて共有キーワードが生成され、秘匿化DB110に暗号化された共有キーワードが登録されている。秘匿化DB110では、共有キーワード「小児科0,内科0」の出現頻度が「71」、共有キーワード「小児科1,婦人科0」の出現頻度が「58」、共有キーワード「婦人科1,内科1」の出現頻度が「77」となっている。
【0363】
攻撃者33は、キーワード数が3個であり、共有集合数が3個であり、各キーワードが2つずつに分割され共有集合内の分割キーワード数が2個であることを知っているものとする。しかし各キーワードがどのような比率で分割キーワードに分割されたのかは攻撃者33には分からない。そのため攻撃者33が各共有キーワードの出現頻度がそれぞれ「71」、「58」、「77」であることを知ったとしても、その共有キーワードに含まれる分割キーワードを絞り込むことはできない。そのため頻度分析攻撃は困難である。
【0364】
〔第4の実施の形態〕
次に第4の実施の形態について説明する。第4の実施の形態は、第3の実施の形態を改良し、数値範囲の検索に対する頻度分析攻撃の困難性を向上させたものである。
【0365】
データ管理サーバ100は、データを暗号化したままで検索を行う。暗号化したままでの検索は、原則として完全一致検索である。完全一致検索の場合、数値の大小関係を比較することはできない。そこである範囲内の数値を有するレコードの検索を行う場合、端末装置400は、その範囲内に存在し得るすべての数値の論理和を検索キーワードとする。
【0366】
図54は、数値範囲検索の一例を示す図である。データ登録サーバ200のDB210には、患者に関するレコードが登録されており、各レコードは診療科、性別、年齢の項目値を有している。各項目値は確率的に分割キーワードに変換され、さらに共有キーワードに変換されて秘匿化DB110に登録される。分割キーワードは、各年齢の数値の後に「_0」、「_1」を追加した文字列であるものとする。例えば年齢「18」の分割キーワードは「18_0」と「18_1」となる。
【0367】
端末装置400は、年齢の範囲を指定した検索条件601が入力されると、その範囲内の全年齢の分割キーワードの論理和を示す分割クエリ602を生成する。端末装置400は、分割クエリ602内の分割キーワードを共有キーワードに変換することで攪乱クエリ603を生成し、共有キーワードを暗号化することで秘匿化検索クエリ604を生成する。そして端末装置400が秘匿化検索クエリ604をデータ管理サーバ100に送信すると、データ管理サーバ100が秘匿化DB110の検索を行う。
【0368】
図55は、年齢の共有集合の生成例(比較例)を示す図である。年齢のキーワードリスト611には、「0~100」の101個の整数が設定されている。各キーワードは、2個ずつの分割キーワードを有する。したがって分割キーワード数は202となる。要素を2個(G=2)ずつ含む共有集合を生成した場合、101個の共有集合1-1~1-3,・・・,1-51~1-53,・・・,1-99~1-101が生成される。
図55の例では、第3の実施の形態において
図43に示した手順で共有集合1-1~1-3,・・・,1-51~1-53,・・・,1-99~1-101が生成されている。
【0369】
共有集合1-1~1-3,・・・,1-51~1-53,・・・,1-99~1-101それぞれに要素として含まれる分割キーワードは、その共有集合に対応する共有キーワードに変換される。例えばキーワード「0」の分割キーワード「0_0」は共有キーワード「0_0,100_0」に変換され、分割キーワード「0_1」は共有キーワード「0_1,1_0」に変換される。共有キーワードが暗号化され、秘匿化DB110に格納される。そして暗号文の共有キーワードに対する秘匿化検索が行われる。
【0370】
年齢を指定した検索では、数値範囲を指定した検索が可能となる。数値範囲の検索は、
図54に示すように、該当範囲内の数値の論理和検索に置き換えられる。すると攻撃者33は、発行される秘匿化検索クエリの論理和の項が多いことにより、数値の項目に対する検索であることが推定できる。攻撃者33は、秘匿化検索クエリに同時に含まれる暗号文は連番であると仮定することで、共有キーワードの暗号文の前後関係を特定できる。
【0371】
例えば「0~1」の数値範囲の検索が行われると、共有キーワード「0_0,100_0」、「0_1,1_0」、「1_1,2_0」のいずれかの暗号文を有するレコードがヒットする。攻撃者33は、これらのレコードに含まれる共有キーワードの変換元の分割キーワードには連番の数値が含まれると推定できる。そこで攻撃者33は、共有キーワード「0_0,100_0」、「0_1,1_0」、「1_1,2_0」の暗号文が連続するように並べる。攻撃者33は、様々な数値範囲の検索が行われるごとに、ヒットしたレコードに含まれる共有キーワードの暗号文が連続するように暗号文を並べていく。攻撃者33は、最終的には、
図55の共有キーワードの並びと同じ順に、共有キーワードの暗号文を並べることができる。
【0372】
なお
図55の例では、分割キーワード「100_0」を除き、上位の共有集合ほど、小さい数値のキーワードの分割キーワードが含まれている。このとき攻撃者33は共有キーワード間の連続関係が分かるのみであり、共有キーワードの暗号文を並べても、その配列の先頭と後方のうちのどちらの数値が小さく、どちらの数値が大きいのかは判別できない。
【0373】
しかし共有キーワードの暗号文の中盤の値を含むレコードが検索された場合、攻撃者33は、全体の数値範囲「0~100」の内の中盤の数値が検索されたことを認識できる。すなわち検索条件の絞り込みが可能となってしまう。
【0374】
そこで第4の実施の形態では、データ登録サーバ200のデータ登録要求部250は、キーワードリストに数値が設定されている場合、ある数値範囲の連続する数値を含む共有集合に、範囲が重複しない他の数値範囲の連続する数値範囲が含まれるように共有集合を生成する。
【0375】
図56は、年齢の共有集合の生成例を示す図である。
図56には、要素を2個(G=2)ずつ含む102個の共有集合2-1~2-6,・・・,2-97~2-102が示されている。
【0376】
データ登録要求部250は、例えばキーワードリスト611から値の小さい順に数値を選択する。データ登録要求部250は、選択した数値の分割キーワードを最上位の共有集合2-1から順に下位に向かって1つずつ設定する。2つ目以降に選択した数値の分割キーワードは、前に選択した数値を設定した共有集合の次の共有集合に設定する。
【0377】
データ登録要求部250は、すべての共有集合2-1~2-102に1つずつの分割キーワードが設定されると、各共有集合に対する2つ目の要素を設定する。ただし最上位の共有集合2-1と最下位の共有集合2-102は、2つ目の分割キーワードの設定対象外とされる。そこでデータ登録要求部250は、選択した数値の分割キーワードを下位から2番目の共有集合2-101から順に上位に向かって1つずつ設定する。
【0378】
このように共有集合を生成することで、ある数値範囲の連続する数値を含む共有集合には、範囲が重複しない別の数値範囲の連続する数値も含まれることとなる。その結果、攻撃者33が、数値の連続性に基づいて共有集合2-1~2-102に対応する共有キーワードの暗号文を並べることができたとしても、ある暗号文を含むレコードが検索されたときの検索された数値範囲の絞り込みは困難となる。例えば攻撃者33は、「0~2」付近の検索、「98~100」付近の検索、「48~50」付近の検索、「51~53」付近の検索、「48~53」付近の検索を見分けることが困難である。
【0379】
群数G(共有集合の最大要素数)を増やすと、検索にヒットする件数が他の共有キーワードの影響で増加する。年齢のキーワード数が多い項目は、各キーワードの頻度がキーワード数に応じた減少が見込まれる。そこで項目値が数値の場合における該当項目に対応する群数を増やしてもよい。
【0380】
図57は、群数を3とした場合の共有集合の生成例を示す図である。
図57には、要素を3個(G=3)ずつ含む68個の共有集合3-1~3-6,・・・,3-63~3-68が示されている。
【0381】
データ登録要求部250は、例えばキーワードリスト611から値の小さい順に数値を選択する。データ登録要求部250は、選択した数値の分割キーワードを最上位の共有集合3-1から順に下位に向かって1つずつ設定する。データ登録要求部250は、すべての共有集合3-1~3-6,・・・,3-63~3-68に1つずつの分割キーワードが設定されると、各共有集合に対する2つ目の要素を設定する。ただし最下位の共有集合3-68は、2つ目の分割キーワードの設定対象外とされる。そこでデータ登録要求部250は、選択した数値の分割キーワードを下位から2番目の共有集合3-67から順に上位に向かって1つずつ設定する。データ登録要求部250は、すべての共有集合3-1~3-6,・・・,3-63~3-68に2つずつの分割キーワードが設定されると、各共有集合に対する3つ目の要素を設定する。ただし最上位の共有集合3-1は、3つ目の分割キーワードの設定対象外とされる。そこでデータ登録要求部250は、選択した数値の分割キーワードを上位から2番目の共有集合3-2から順に下位に向かって1つずつ設定する。
【0382】
このように群数Gを増やすことで、数値範囲の検索が行われても、ヒットしたレコードに含まれる数値範囲の数が多数となり、検索対象の絞り込みがより困難となる。
〔その他の実施の形態〕
第2~第4の実施の形態では、病院が有するデータに対する秘匿検索の例を示したが、他の分野でも利用可能である。
【0383】
また第2~第4の実施の形態ではデータ登録サーバ200,300とデータ管理サーバ100とを分けているが、データ登録サーバ200,300がデータ管理サーバ100の機能を有していてもよい。
【0384】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【符号の説明】
【0385】
1 データ登録装置
1a 記憶部
1b 処理部
2 サーバ
2a 秘匿化DB
3 データ利用装置
4 秘匿レコード群
5a~5c 項目値集合
6 攪乱レコード群