(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-09
(45)【発行日】2024-04-17
(54)【発明の名称】秘密情報管理プログラム、秘密情報管理方法、および秘密情報管理システム
(51)【国際特許分類】
G09C 1/00 20060101AFI20240410BHJP
G06F 21/62 20130101ALI20240410BHJP
G06F 16/22 20190101ALI20240410BHJP
【FI】
G09C1/00 660D
G06F21/62 318
G06F16/22
(21)【出願番号】P 2020166843
(22)【出願日】2020-10-01
【審査請求日】2023-07-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】舟久保 利昭
(72)【発明者】
【氏名】前田 一穂
【審査官】行田 悦資
(56)【参考文献】
【文献】国際公開第2016/120975(WO,A1)
【文献】国際公開第2018/138857(WO,A1)
【文献】特開2012-248940(JP,A)
【文献】特開2018-063638(JP,A)
【文献】特開2021-018517(JP,A)
【文献】伊藤 隆 ほか,頻度分析耐性を持つ高速秘匿検索方式,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2011年02月24日,第110巻, 第443号,pp.1-6
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 21/62
G06F 16/22
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群における前記秘匿レコード内の一の項目に設定可能な複数の第1項目値の種類数が所定値の整数倍でない場合、前記複数の第1項目値それぞれに少なくとも1つが対応付けられ、かつそれぞれが前記複数の第1項目値のいずれか1つに対応づけられた、前記所定値の整数倍の複数の第2項目値を生成し、
前記複数の第2項目値それぞれを、前記一の項目に対応する少なくとも1つの項目値群のいずれかに、前記所定値と同数ずつ分類し、
前記秘匿レコード内の前記一の項目に設定されている第1項目値を、前記第1項目値に対応する少なくとも1つの第2項目値のいずれかに変換し、
前記項目値群内の第2項目値それぞれを同一の前記項目値群内の異なる第2項目値に全単射する全単射関係に従って前記秘匿レコードそれぞれの前記一の項目に設定された既存第2項目値をダミー値に変換し、
前記ダミー値が前記一の項目に設定された、前記秘匿レコードの数と同数のダミーレコードを有するダミーレコード群を生成し、
前記秘匿レコードに真を示す第1フラグを設定し、
前記ダミーレコードに偽を示す第2フラグを設定し、
前記秘匿レコードと前記ダミーレコードそれぞれの前記一の項目に設定された項目値、前記秘匿レコードに付与された前記第1フラグ、および前記ダミーレコードに付与された前記第2フラグを暗号化し、
前記秘匿レコード群と前記ダミーレコード群とを出力する、
処理を実行させる秘密情報管理プログラム。
【請求項2】
前記ダミーレコード群の生成では、前記ダミーレコード群が複数あるとき、前記秘匿レコードの前記一の項目に設定された前記既存第2項目値が、前記ダミーレコード群ごとに異なる第2項目値に変換されるように、前記ダミーレコード群ごとに異なる前記全単射関係を利用する、
請求項1記載の秘密情報管理プログラム。
【請求項3】
前記第2フラグの設定では、1または複数生成された前記ダミーレコード群ごとに異なり、前記第1フラグとも異なる値の前記第2フラグを、前記ダミーレコード群それぞれに含まれる前記ダミーレコードに設定する、
請求項1または2に記載の秘密情報管理プログラム。
【請求項4】
前記第1フラグの設定では、前記秘匿レコードの識別子を変数とする第1関数の値を、前記第1フラグとして前記秘匿レコードに設定し、
前記第2フラグの設定では、前記ダミーレコードの識別子を変数とし、同一の変数の値に対して前記第1関数とは異なり、かつ属する前記ダミーレコード群ごとに異なる値を出力する第2関数の値を、前記第2フラグとして前記ダミーレコードに設定する、
請求項3記載の秘密情報管理プログラム。
【請求項5】
コンピュータが、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群における前記秘匿レコード内の一の項目に設定可能な複数の第1項目値の種類数が所定値の整数倍でない場合、前記複数の第1項目値それぞれに少なくとも1つが対応付けられ、かつそれぞれが前記複数の第1項目値のいずれか1つに対応づけられた、前記所定値の整数倍の複数の第2項目値を生成し、
前記複数の第2項目値それぞれを、前記一の項目に対応する少なくとも1つの項目値群のいずれかに、前記所定値と同数ずつ分類し、
前記秘匿レコード内の前記一の項目に設定されている第1項目値を、前記第1項目値に対応する少なくとも1つの第2項目値のいずれかに変換し、
前記項目値群内の第2項目値それぞれを同一の前記項目値群内の異なる第2項目値に全単射する全単射関係に従って前記秘匿レコードそれぞれの前記一の項目に設定された既存第2項目値をダミー値に変換し、
前記ダミー値が前記一の項目に設定された、前記秘匿レコードの数と同数のダミーレコードを有するダミーレコード群を生成し、
前記秘匿レコードに真を示す第1フラグを設定し、
前記ダミーレコードに偽を示す第2フラグを設定し、
前記秘匿レコードと前記ダミーレコードそれぞれの前記一の項目に設定された項目値、前記秘匿レコードに付与された前記第1フラグ、および前記ダミーレコードに付与された前記第2フラグを暗号化し、
前記秘匿レコード群と前記ダミーレコード群とを出力する、
秘密情報管理方法。
【請求項6】
データベースを有するサーバと、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群における前記秘匿レコード内の一の項目に設定可能な複数の第1項目値の種類数が所定値の整数倍でない場合、前記複数の第1項目値それぞれに少なくとも1つが対応付けられ、かつそれぞれが前記複数の第1項目値のいずれか1つに対応づけられた、前記所定値の整数倍の複数の第2項目値を生成し、
前記複数の第2項目値それぞれを、前記一の項目に対応する少なくとも1つの項目値群のいずれかに、前記所定値と同数ずつ分類し、
前記秘匿レコード内の前記一の項目に設定されている第1項目値を、前記第1項目値に対応する少なくとも1つの第2項目値のいずれかに変換し、
前記項目値群内の第2項目値それぞれを同一の前記項目値群内の異なる第2項目値に全単射する全単射関係に従って前記秘匿レコードそれぞれの前記一の項目に設定された既存第2項目値をダミー値に変換し、
前記ダミー値が前記一の項目に設定された、前記秘匿レコードの数と同数のダミーレコードを有するダミーレコード群を生成し、
前記秘匿レコードに真を示す第1フラグを設定し、
前記ダミーレコードに偽を示す第2フラグを設定し、
前記秘匿レコードと前記ダミーレコードそれぞれの前記一の項目に設定された項目値、前記秘匿レコードに付与された前記第1フラグ、および前記ダミーレコードに付与された前記第2フラグを暗号化し、
前記秘匿レコード群と前記ダミーレコード群とを前記サーバの前記データベースに格納するデータ登録装置と、
検索条件に示される前記一の項目の検索項目値を、前記検索項目値と同じ値の前記第1項目値に対応する1または複数の前記第2項目値それぞれに変換し、変換により得られた前記第2項目値それぞれを含む検索クエリを、前記検索項目値を暗号化して前記サーバに送信し、
前記サーバから、前記データベース内の前記検索クエリによる検索結果を取得し、
前記検索結果に含まれる前記秘匿レコードと前記ダミーレコードそれぞれに設定された前記第1フラグまたは前記第2フラグに基づいて、前記検索結果から前記検索条件を満たす前記秘匿レコードを取得するデータ利用装置と、
を有する秘密情報管理システム。
【請求項7】
前記データ利用装置は、前記検索条件に示される前記検索項目値を、前記全単射関係に従い変換し、変換により得られた変換項目値を含む前記検索クエリを送信し、
前記検索結果に含まれる前記ダミーレコードに設定された前記第2フラグに基づいて、前記検索結果から前記変換項目値を有する適合ダミーレコードを抽出し、前記適合ダミーレコードの前記一の項目の復号された既復号項目値を前記全単射関係の逆写像関係に従い変換することで、前記検索条件を満たす前記秘匿レコードを取得する、
請求項6記載の秘密情報管理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密情報管理プログラム、秘密情報管理方法、および秘密情報管理システムに関する。
【背景技術】
【0002】
コンピュータシステムでは、ビッグデータと呼ばれる大量のデータを扱うことができる。例えばコンピュータでビッグデータを解析すれば、様々な知見を得ることが可能である。解析に用いるビッグデータの量が多いほど、そのビッグデータから多様な知識を得ることができ、得られた知識の信頼性も向上する。そこで企業などの組織ごとにビッグデータ用の独自のデータベース(DB)を構築するのではなく、複数の組織のデータを統合したDBを、複数の組織で利用することが考えられる。このような統合したDBサービスは、例えばクラウドコンピューティングシステム(以下、「クラウド」と呼ぶ)を用いて実現できる。
【0003】
複数の組織のデータを統合したDBをクラウドで管理する場合において、データ提供元の組織は、提供したデータの利用を、データ提供元の組織が許可した他の組織のみに制限したい場合がある。またデータ提供元の組織およびデータを利用する組織は、提供されるデータの内容やDB内のデータへの検索内容を、クラウドの管理者にも知られたくない場合もある。これらの場合、ビッグデータを管理するクラウドは、例えば各組織から暗号化されたデータの提供を受け、暗号データをDBに格納する。そしてクラウドは、暗号データのままデータの同一性を判定できる照合技術を用いて、データ提供元の組織から渡された鍵で暗号化された検索要求に応じて、DB内のデータ検索を行う。これにより、データ提供元の組織は、鍵を渡した組織に対してのみ、提供したデータの利用を許可することができる。またクラウドでは、提供されたデータと検索要求とが暗号化されたままであるため、クラウドの管理者にデータの内容を知られることも抑止できる。
【0004】
DB内のデータの秘匿化に関連する技術としては、例えばデータベースシステムのプライバシーを構成し改善するシステムが提案されている。また、保管暗号化タグ、検索暗号化タグに対して、頻度分析などの攻撃に耐性を持つような高い安全性を確保し、データサイズが小さく、かつ通信量が小さい秘匿部分一致検索技術も提案されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特表2017-204277号公報
【文献】国際公開第2017/126000号
【発明の概要】
【発明が解決しようとする課題】
【0006】
暗号データのまま検索を行うことができる秘匿検索技術を用いても、暗号化されたデータの安全性は十分とはいえない。すなわち、暗号データを格納したDBに対して頻度分析攻撃が可能であり、検索クエリの内容または検索結果が類推されてしまう場合がある。
【0007】
1つの側面では、本件は、暗号化されたデータへの頻度分析攻撃に対する安全性を向上させることを目的とする。
【課題を解決するための手段】
【0008】
1つの案では、コンピュータに以下の処理を実行させる秘密情報管理プログラムが提供される。
コンピュータは、秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群における秘匿レコード内の一の項目に設定可能な複数の第1項目値の種類数が所定値の整数倍でない場合、複数の第1項目値それぞれに少なくとも1つが対応付けられ、かつそれぞれが複数の第1項目値のいずれか1つに対応づけられた、所定値の整数倍の複数の第2項目値を生成する。次にコンピュータは、複数の第2項目値それぞれを、一の項目に対応する少なくとも1つの項目値群のいずれかに、所定値と同数ずつ分類する。次にコンピュータは、秘匿レコード内の一の項目に設定されている第1項目値を、第1項目値に対応する少なくとも1つの第2項目値のいずれかに変換する。次にコンピュータは、項目値群内の第2項目値それぞれを同一の項目値群内の異なる第2項目値に全単射する全単射関係に従って秘匿レコードそれぞれの一の項目に設定された既存第2項目値をダミー値に変換する。次にコンピュータは、ダミー値が一の項目に設定された、秘匿レコードの数と同数のダミーレコードを有するダミーレコード群を生成する。次にコンピュータは、秘匿レコードに真を示す第1フラグを設定する。次にコンピュータは、ダミーレコードに偽を示す第2フラグを設定する。次にコンピュータは、秘匿レコードとダミーレコードそれぞれの一の項目に設定された項目値、秘匿レコードに付与された第1フラグ、およびダミーレコードに付与された第2フラグを暗号化する。そしてコンピュータは、秘匿レコード群とダミーレコード群とを出力する。
【発明の効果】
【0009】
1態様によれば、暗号化されたデータへの頻度分析攻撃に対する安全性を向上させることができる。
【図面の簡単な説明】
【0010】
【
図1】第1の実施の形態に係る秘密情報管理システムの一例を示す図である。
【
図2】秘密情報管理システムの一例を示す図である。
【
図3】データ管理サーバのハードウェアの一構成例を示す図である。
【
図5】ダミー要素を用いた変換集合の生成例を示す図である。
【
図6】ダミー要素を用いた場合の項目値の変換例を示す図である。
【
図7】ダミー要素を用いた場合のダミー値の生成例を示す図である。
【
図8】ダミー要素を用いた場合の登録データの一例を示す図である。
【
図11】頻度攪乱後の頻度分布の一例を示す図である。
【
図12】ダミー要素を用いた場合の組み合わせ頻度の一例を示す図である。
【
図13】ダミー要素を用いない場合の組み合わせ頻度の一例を示す図である。
【
図14】秘密情報管理システムの機能を示すブロック図である。
【
図15】ダミーデータを用いた出現頻度の攪乱処理の一例を示す図である。
【
図16】平文の患者データのDBの一例を示す図である。
【
図17】変換情報記憶部に格納される情報の一例を示す図である。
【
図19】変換集合一覧の生成方法の一例を示す図である。
【
図20】分割キーワード一覧の生成例を示す図である。
【
図22】分割キーワード一覧の一例を示す図である。
【
図23】分割キーワードを用いた場合の項目値の変換例を示す図である。
【
図24】分割キーワードを用いた場合の登録データの一例を示す図である。
【
図26】データ登録処理の手順の一例を示すフローチャートである。
【
図27】ダミーデータ生成処理の手順の一例を示すフローチャートである。
【
図29】検索処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず、第1の実施の形態について説明する。
【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つ以上含む秘匿レコード群5を記憶する。
データ登録装置1の処理部1bは、まず秘匿レコード内の一の項目に設定可能な複数の第1項目値に基づいて複数の第2項目値を生成し、生成した第2項目値を一の項目に対応する項目値群4a,4bに分類する(ステップS1)。例えば処理部1bは、秘匿レコード群5における秘匿レコード内の一の項目に設定可能な複数の第1項目値の種類数が所定値の整数倍かを判断する。所定値は、秘匿化DB2aにおいて出現頻度が同じとなる項目値の種類数として予め設定された値である。
図1の例では所定値は「3」である。
【0015】
処理部1bは、第1項目値の種類数が所定値の整数倍ではない場合、第1項目値それぞれに少なくとも1つが対応付けられ、かつそれぞれが複数の第1項目値のいずれか1つに対応づけられた、所定値の整数倍の種類の複数の第2項目値を生成する。他方、処理部1bは、第1項目値の種類数が所定値の整数倍の場合、第1項目値それぞれに少なくとも1つが対応付けられ、かつそれぞれが複数の第1項目値のいずれか1つに対応付けられた、第1項目値と同じ種類数の複数の第2項目値を生成する。
【0016】
図1の例では、項目「性別」の第1項目値の種類数が「2」であり、所定数「3」と異なる。そこで処理部1bは、第2項目値として「男_1」、「男_2」、「女」の3つを生成している。第2項目値「男_1」と「男_2」とは、いずれも第1項目値「男」に対応付けられている。第2項目値「女」は第1項目値「女」に対応付けられている。すなわち第1項目値「男」が2つの第2項目値「男_1」、「男_2」に分割されることで、第2項目値の種類数が所定値「3」の整数倍になっている。
【0017】
また項目「血圧」の第1項目値の種類数は「3」であり、所定数「3」と等しい。そこで処理部1bは、第2項目値として「正常」、「低血圧」、「高血圧」の3つを生成している。第2項目値「正常」、「低血圧」、「高血圧」は、それぞれ第1項目値「正常」、「低血圧」、「高血圧」に対応する。
【0018】
このように、第2項目値の種類数は第1項目値の種類数以上となる。ある項目の第1項目値の種類数が「4」であった場合には、その項目について6種類の第2項目値が生成される。
【0019】
次に処理部1bは、複数の第2項目値それぞれを、その第2項目値の項目に対応する少なくとも1つの項目値群4a,4bのいずれかに分類する。
図1の例では項目「性別」に対応するのも1つの項目値群4aであり、項目「血圧」に対応するのは1つの項目値群4bである。従って性別の第2項目値「男_1」、「女」、「男_2」が項目値群4aに分類され、血圧の第2項目値「正常」、「低血圧」、「高血圧」が項目値群4bに分類される。
【0020】
さらに処理部1bは、秘匿レコード内の一の項目に設定されている第1項目値を、第1項目値に対応する少なくとも1つの第2項目値のいずれかに変換する(ステップS2)。第1項目値に対応する第2項目値が複数ある場合、処理部1bは例えば変換先の第2項目値をランダムに選択する。
図1の例では、第1項目値「男」に対応する第2項目値は「男_1」、「男_2」の2つ存在する。秘匿レコード群5の1行目の秘匿レコードの性別の第1項目値「男」は第2項目値「男_1」に変換され、2行目の秘匿レコードの性別の第1項目値「男」は第2項目値「男_2」に変換されている。このようにして値が第2項目値に変換された秘匿レコード群5aが生成される。秘匿レコード群5aには例えば群番号「0」が付与される。
【0021】
処理部1bは、値が第2項目値に変換された秘匿レコード群5aに基づいて、ダミーレコード群6a,6bを生成する(ステップS3)。例えば処理部1bは、項目値群4a,4b内の第2項目値それぞれを同一の項目値群4a,4b内の異なる第2項目値に全単射する全単射関係に従って秘匿レコードそれぞれの一の項目に設定された既存第2項目値をダミー値に変換する。全単射は、写像であって、その写像の終域となる集合の任意の元に対し、その元を写像の像とする元が、写像の定義域となる集合に常にただ一つだけ存在するものである。そして処理部1bは、ダミー値が一の項目に設定された、秘匿レコードの数と同数のダミーレコードを有するダミーレコード群6a,6bを生成する。ダミーレコード群6aには例えば群番号「1」が付与され、ダミーレコード群6bには群番号「2」が付与される。
【0022】
以下、秘匿レコード群5aとダミーレコード群6a,6bとを総称してレコード群と呼ぶ。また秘匿レコードとダミーレコードとを総称してレコードと呼ぶ。
ダミーレコード群6a,6bは、項目値群4a,4b内の第2項目値の数(所定値「3」)より「1」少ない数だけ生成される。ダミーレコード群6a,6bそれぞれの生成には、秘匿レコードの一の項目に設定された既存第2項目値が、ダミーレコード群ごとに異なる第2項目値に変換されるように、異なる全単射関係が使用される。例えば項目値群4a,4bにおいて既存第2項目値に対応する第2項目値から群番号の分だけ右側の第2項目値が、その群番号が付与されたダミーレコード群のダミー値となる。この場合、項目値群4a,4bは循環リスト構造となる。すなわち右端の第2項目値の右側は、左端の第2項目値である。
【0023】
例えば群番号「1」のダミーレコード群6aを生成する場合、処理部1bは、秘匿レコード群5aの各秘匿レコードに設定されている第2項目値(既存第2項目値)の項目値群4a,4b内での位置を特定する。そして処理部1bは、特定した位置から1つだけ右側の第2項目値をダミー値として、ダミーレコード群6a内のダミーレコードに設定する。
【0024】
また群番号「2」のダミーレコード群6bを生成する場合、処理部1bは、秘匿レコード群5aの各秘匿レコードに設定されている第2項目値(既存第2項目値)の項目値群4a,4b内での位置を特定する。そして処理部1bは、特定した位置から2つだけ右側の第2項目値をダミー値として、ダミーレコード群6a内のダミーレコードに設定する。
【0025】
このようにして、例えば秘匿レコード群5a内の第2項目値「男_1」に基づいて、群番号「1」のダミーレコード群6aのダミーレコードにはダミー値「女」、群番号「2」のダミーレコード群6bのダミーレコードにはダミー値「男_1」が設定される。すなわちダミーレコード群6a,6bごとに異なる全単射関係に基づいてダミー値が生成されている。
【0026】
次に処理部1bは、各レコードにフラグを設定する(ステップS4)。例えば処理部1bは、秘匿レコードには真を示す第1フラグを設定し、ダミーレコードには偽を示す第2フラグを設定する。例えば処理部1bは、第2フラグの設定では、1または複数生成されたダミーレコード群ごとに異なり、第1フラグとも異なる値の第2フラグを、ダミーレコード群それぞれに含まれるダミーレコードに設定する。
【0027】
処理部1bは、各レコードのフラグの値を生成には、レコード群ごとの関数を用いることができる。例えば処理部1bは、秘匿レコードの識別子を変数とする第1関数の値を、第1フラグとして秘匿レコードに設定する。また処理部1bは、ダミーレコードの識別子を変数とし、同一の変数の値に対して第1関数とは異なり、かつ属するダミーレコード群ごとに異なる値を出力する第2関数の値を、第2フラグとしてダミーレコードに設定する。
【0028】
フラグの値を生成する関数には、例えばレコードの識別子(ID:Identification)を変数とする関数を用いることができる。レコード群ごとの関数は、関数に含まれる定数に群番号が用いられる。例えば処理部1bは、秘匿レコードとダミーレコードとを合わせた集合において、それぞれを識別するIDを各レコードに付与する。処理部1bは、各レコードについて、IDに所定値「3」を乗算し、属するレコード群の群番号を加算した値をフラグとする。この場合、フラグの値がIDの倍数となっていれば、そのフラグは真を示す第1フラグである。またフラグの値がIDの倍数となっていなければ、そのフラグは偽を示す第2フラグである。
【0029】
フラグの生成に群番号を用いた場合、レコードのフラグの値に基づいて、そのレコードが秘匿レコードなのかダミーレコードなのかだけでなく、そのレコードが属するレコード群の群番号を特定できる。例えばレコードのフラグの値を所定値「3」で除算したときの余りが、そのレコードが属するレコード群の群番号である。
【0030】
次に処理部1bは、秘匿レコードとダミーレコードそれぞれの一の項目に設定された項目値、秘匿レコードに付与された第1フラグ、およびダミーレコードに付与された第2フラグを暗号化する(ステップS5)。
図1の例では処理部1bは、フラグも1つの項目とし、「性別」、「血圧」、「フラグ」それぞれの項目値を、項目値ごとに暗号化している。以下、ある平文を暗号化することで得られる暗号文を「H(平文)」と表記するものとする。各項目値が暗号化されたレコードの集合が、秘匿化DB2aへの登録データ7となる。
【0031】
そして処理部1bは、秘匿レコード群とダミーレコード群とを含む登録データ7を出力する(ステップS6)。例えば処理部1bは、サーバ2の秘匿化DB2aに登録データ7を格納する。
【0032】
このようにして、ダミーレコードの追加によって頻度分析攻撃に対する安全性を向上させた登録データ7が、サーバ2の秘匿化DB2aに格納される。サーバ2は、秘匿化DB2aに格納された登録データ7に対する検索サービスをデータ利用装置3に提供する。
【0033】
データ利用装置3は、データ登録装置1が生成した項目値群4a,4bの情報、および第1項目値と第2項目値との対応関係を示す情報を有している。例えばデータ利用装置3は、これらの情報をデータ登録装置1から取得する。またデータ利用装置3はデータ登録装置1の処理部1bと同じアルゴリズムで第1項目値に基づく第2項目値の生成および第2項目値の項目値群への分類を行ってもよい。
【0034】
データ利用装置3は、検索者から検索条件の入力を受け付ける。検索条件には、例えば秘匿化DB2bの一の項目の検索項目値が示される。
図1の例では、検索者は、項目「性別」の項目値「男」を検索条件として入力している。
【0035】
データ利用装置3は、検索条件に応じた検索クエリをサーバ2に送信する(ステップS7)。例えばデータ利用装置3は、検索条件に示される一の項目の検索項目値を、検索項目値と同じ値の第1項目値に対応する1または複数の第2項目値それぞれに変換する。例えば性別「男」は、「男_1」と「男_2」とに変換される。データ利用装置3は、変換により得られた第2項目値それぞれを含む検索クエリ8a,8bを、検索項目値を暗号化してサーバ2に送信する。
【0036】
サーバ2では、検索クエリ8a,8bに応じて検索を行う(ステップS8)。例えばサーバ2は、検索クエリ8a,8b内の暗号文のままの検索項目値と、秘匿化DB2a内の各レコードの暗号文の項目値とを照合する。サーバ2は、検索項目値に一致する項目値が設定されたレコードを含む検索結果9をデータ利用装置3に送信する。
【0037】
データ利用装置3は、サーバ2から、秘匿化DBに対する検索クエリ8a,8bによる検索結果9を取得する。そしてデータ利用装置3は、検索結果9からダミーレコードを除去した真の検索結果を表示する(ステップS9)。例えばデータ利用装置3は、検索結果9に含まれる秘匿レコードとダミーレコードそれぞれの一の項目に設定された項目値、秘匿レコードに付与された第1フラグ、およびダミーレコードに付与された第2フラグを復号する。次にデータ利用装置3は、第1フラグおよび第2フラグに基づいて、検索結果9からダミーレコードを除去し、検索条件を満たす秘匿レコードを取得する。そしてデータ利用装置3は、真の検索結果を例えば表示画面10に表示する。
【0038】
このようにして項目に設定可能な項目値の種類数が少ない場合でも、項目値の種類数を所定値まで増やして登録データ7を生成することができる。しかも登録データでは、所定値と同数の種類の項目値の出現頻度が均等化されている。その結果、設定可能な項目値の種類数が少ない項目値を利用した頻度分析攻撃に対する安全性を向上させることが可能となる。
【0039】
なおデータ利用装置3は、ダミーレコードを検索する検索クエリを送信し、検索結果に含まれるダミーレコードから、検索条件を満たす秘匿レコードを生成することもできる。その場合、データ利用装置3は、検索条件に示される検索項目値を、データ登録装置1がダミーレコード群6a,6bのいずれかの生成に使用した全単射関係に従い変換する。そしてデータ利用装置3は、変換により得られた変換項目値を含む検索クエリをサーバ2に送信する。
【0040】
データ利用装置3は、サーバ2から検索結果を受信すると、第1フラグおよび第2フラグに基づいて、検索結果から変換項目値を有する適合ダミーレコードを抽出する。例えばデータ利用装置3は、検索クエリがダミーレコード群6aの生成に使用された全単射関係で変換した変換項目値を有していた場合、ダミーレコード群6aに対応する第2フラグを有するレコードを適合ダミーレコードとして抽出する。またデータ利用装置3は、検索クエリがダミーレコード群6bの生成に使用された全単射関係で変換した変換項目値を有していた場合、ダミーレコード群6bに対応する第2フラグを有するレコードを適合ダミーレコードとして抽出する。
【0041】
そしてデータ利用装置3は、適合ダミーレコードの一の項目の復号された既復号項目値を全単射関係の逆写像関係に従い変換することで、検索条件を満たす秘匿レコードを取得する。
【0042】
ダミーレコードの検索を行い、検索結果に含まれるダミーレコードから秘匿レコードを生成できるようにしたことで、検索条件に含まれる検索項目値が漏洩することを抑止することができる。
【0043】
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、多数の医療機関が有する患者データを、患者データ収集活用基盤を用いて有効活用するものである。例えば患者データ収集活用基盤により、複数の病院のデータを統合してビッグデータ化し、ビッグデータを複数の製薬企業で活用できるようにする。これにより、製薬企業や病院は、新薬開発のための調査(対象疾患の患者数や所在地域など)等を容易に把握できるようになる。
【0044】
患者データ収集活用基盤は、ICT(Information and Communications Technology)企業が管理するクラウドを用いて実現するのが効率的である。クラウドを用いることで、病院や製薬企業からのビッグデータへのアクセスが容易となる。しかしながら、患者データは要配慮個人情報であり、法的に参照が許される手続きを経たとしても、漏洩や目的外利用のリスクを考慮し、クラウドの管理者に対しても秘匿しておくのが適切である。また製薬企業による検索の内容は製薬企業の戦略に関する重要な企業秘密に結びつくため、検索内容についても秘匿しておくことが望ましい。そこで、患者データ収集活用基盤を実現するクラウドは、例えば暗号化したまま検索可能な暗号化方式を用いて、暗号化された患者データをDBで管理すると共に、暗号化された検索キーワードを用いて、暗号文のままでデータ検索を行う。これにより、クラウドの管理者に対しても、患者データと検索クエリの内容を秘匿しておくことができる。
【0045】
ここで、複数の組織(例えば病院)のデータを同じ仕組みで使用する場合、DBのフォーマットや格納する属性名と値は、共通の仕様として公開される。しかもシステム開発も担うクラウドの管理者は、秘匿化のアルゴリズムを熟知している。すると、クラウドの管理者の中に悪意を有する者が存在した場合、患者データを暗号文のまま管理するだけでは不十分な場合があり得る。
【0046】
ここで、絞り込み検索などを用いて効率よく検索を行うために、データは行列形式で格納することを想定する。この場合、例えば項目「性別」のラベルが振られた列では平文候補が「男」または「女」の2種類しかなく、秘匿化DB内には同じ平文に基づく暗号文が多数存在することとなる。そして、攻撃者となり得るクラウドの管理者はこれらの暗号文を比較参照できる。
【0047】
さらに、大きな病院では広報の一環として疾患別患者数などの情報を公開している。同様にあらゆる情報について、このような頻度情報が公開される可能性がある。そのため、すべてのデータの頻度分布は公知となる場合がある。また、医療情報は日々新たな情報が追加され、利活用者は最新の情報を求める。よって、秘匿化DBは逐次最新の平文DBとの差分が反映できることが重要である。
【0048】
以上により、第2の実施の形態では、以下の条件(i)~(v)下でも秘匿化DBの内容や検索内容が、秘匿化DBを管理するクラウド管理者を含む攻撃者に対し秘匿できることを、セキュリティ要件とする。
(i)平文の種類や値は公知であり、極めて種類が少ない場合もあり得る。
(ii)攻撃者は、秘匿化DB内に存在するすべての暗号文と暗号化された検索クエリおよびこれに合致した秘匿化DB内の暗号文をすべて参照可能である。
(iii)意図的に秘密情報として管理する情報(秘密鍵)以外の、暗号化や照合のアルゴリズムは公知である。
(iv)すべてのデータの頻度分布は公知である。
(v)秘匿化DBは逐次更新され、攻撃者は差分情報を参照可能である。
【0049】
条件(i)~(v)を満たす秘匿化DBがあるとき、容易に想定される攻撃手法としては総当たり攻撃が考えられる。平文の種類が少なく公知なため、暗号化鍵が公知である場合、攻撃者は全種類の平文を暗号化して平文と暗号文の辞書を作成することで、秘匿化DB内のデータや検索クエリを容易に解読できてしまう。よって、セキュリティ要件を満たすには、暗号化鍵は秘密鍵とすることとなる。
【0050】
また、秘匿化DBの管理者でもある攻撃者は照合判定の結果を参照できる。そのため、ある検索クエリに対し一致判定された暗号文はすべて同じ平文に対応することが解ってしまう。よって、同じ平文でも暗号化するたびに異なる暗号文となる確率的暗号を用いても、攻撃者は同じ平文が同じ暗号文となる確定的暗号のような暗号文に変換できてしまう。そして、攻撃者はデータの頻度分布を知っているため、暗号文の頻度と比較することで容易に秘匿データの内容を推定できてしまう。頻度分布を正確に知らない場合でも、例えば産婦人科の性別データを参照すると、多い方の暗号文の平文は「女」であると容易に特定できる。よって、暗号化だけでなく頻度攪乱などの対策を採ることが重要となる。
【0051】
そこで第2の実施の形態では、条件(i)~(v)下でも秘匿化DBの内容や検索内容を、攻撃者に対し秘匿できる秘密情報管理システムを提供する。第2の実施の形態に係る秘密情報管理システムでは、ダミーデータを追加することで頻度攪乱を実現する。この際、秘密情報管理システムは、データの増加率は一定に保ち、不要なストレージや検索処理の増加を防止する。そして秘密情報管理システムは、ある1種類の項目値に対し、出現頻度が同程度となる他の種類の項目値が少なくともk-1個(kは、2以上の整数)存在するようにダミーレコードを追加する。これにより、ある暗号文がk個の平文のうちのどれかであるということまでしか絞り込めないようになる。すなわち秘密情報管理システムは、出現頻度が同程度の暗号文が少なくともk個となるようにする。
【0052】
図2は、秘密情報管理システムの一例を示す図である。第2の実施の形態では、患者データ収集活用基盤12がクラウドによって構築されている。患者データ収集活用基盤12はデータ管理サーバ100を有している。データ管理サーバ100は、患者データを暗号文のままで管理するコンピュータである。データ管理サーバ100は、ネットワーク20を介して、病院13,14のデータ登録サーバ200,300と製薬企業15,16の端末装置400,500に接続されている。
【0053】
病院13のデータ登録サーバ200は、病院13で受診した患者の電子カルテなどの患者データを蓄積し、その患者データを暗号化してデータ管理サーバ100に提供するコンピュータである。同様に、病院14のデータ登録サーバ300は、病院14で受診した患者の電子カルテなどの患者データを蓄積し、その患者データを暗号化してデータ管理サーバ100に提供する。
【0054】
製薬企業15の端末装置400は、データ管理サーバ100で管理されている患者データを検索するために、製薬企業15の社員が使用するコンピュータである。製薬企業16の端末装置500は、データ管理サーバ100で管理されている患者データを検索するために、製薬企業16の社員が使用するコンピュータである。
【0055】
このような秘密情報管理システムは、例えば医療情報を活用した新薬開発の効率化に有用である。例えば、製薬企業15,16が、治験を行う場合、対象疾患の患者がどの程度存在するか等を考慮して計画を立案することで、治験の成功率を向上させることができる。そこで、患者データ収集活用基盤12で多数の病院13,14に分散する患者の電子カルテから抽出した患者データを集中管理することで、目的の疾患を有する患者の情報を容易に得ることが可能となる。
【0056】
図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)などの電子回路で実現してもよい。
【0057】
メモリ102は、データ管理サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0058】
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
【0059】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0060】
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
【0061】
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0062】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
【0063】
機器接続インタフェース107は、データ管理サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
【0064】
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【0065】
データ管理サーバ100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なおデータ登録サーバ200,300および端末装置400,500も、データ管理サーバ100と同様のハードウェアにより実現することができる。さらに
図1に示したデータ登録装置1、サーバ2、およびデータ利用装置3も、データ管理サーバ100と同様のハードウェアにより実現することができる。
【0066】
データ管理サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。データ管理サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、データ管理サーバ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またデータ管理サーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0067】
次に、暗号データを格納するDB(秘匿化DB)に対する頻度分析攻撃について説明する。
図4は、頻度分析攻撃の一例を示す図である。平文のデータを記憶するDB31に基づいて、秘匿化DB32が生成されているものとする。例えばDB31の各レコードに含まれる項目ごとの項目値が個別に暗号化され、秘匿化DB32に格納されている。なお第2の実施の形態では、各項目に設定される項目値をキーワードと呼ぶこともある。
【0068】
図4の例では、同一の平文からは同一の暗号データが生成される確定的暗号化技術によって暗号化が行われているものとする。また攻撃者33は、元のDB31の項目に用いられている項目名(「診療科」、「性別」、「年齢層」)および各項目に格納され得るキーワードの候補(キーワード一覧)のすべてを知っているものとする。
【0069】
攻撃者33は、暗号文の出現頻度と、公知の頻度情報を比較して暗号文に対応する平文を類推することができる。例えば秘匿化DB32の2列目には、値が2種類しか登録されていない。そのため攻撃者33は、秘匿化DB32の2列目の項目「性別」に該当すると類推することができる。
【0070】
さらに攻撃者33は、秘匿化DB32の2列目の値「tmuesf」と「uylgm」との出現頻度を比較し、「uylgm」の方が多いことを確認できる。すると攻撃者33は、人口分布を考えると出現頻度が多い方の「uylgm」が、「女」に対応する暗号データであると類推できる。
【0071】
攻撃者33は、複数の項目値の組み合わせによっても内容を類推できる。例えば攻撃者33は、秘匿化DB32の1列目の値「sEfgsr」に対応する2列目の値は「uylgm」のみであることを確認できる。すると攻撃者33は、片方の性別との組み合わせしかない値は、診療科における「婦人科」であると類推することができ、「uylgm」の平文が「女」あることを強く確信できる。
【0072】
また攻撃者33は、秘匿化DB32の1列目の値「:opfyy」に対応する3列目の値は「jr8olt」のみであることを確認できる。すると攻撃者は、残りの3列目は年齢層であり、特定の年齢層との組み合わせしかない診療科は「小児科」であり、対応する年齢層は「児童」であると類推できる。
【0073】
なお、
図4の例では、確定的暗号化によって暗号化された場合を想定しているが、確率的暗号化で暗号化された秘匿化DBに対しても頻度分析攻撃は可能である。確率的暗号化とは、同じ平文でも暗号化するたびに異なる暗号文に暗号化する暗号化技術である。確率的暗号化を行うと、同じ平文から生成された複数の暗号文のそれぞれの値が異なるため、暗号化DB内を参照しただけでは、元の平文の出現頻度を数えられない。そのため、確率的暗号化で暗号することで、確定的暗号化よりも頻度分析攻撃が困難となる。
【0074】
ただし、確率的暗号化を用いても、秘匿化DBを検索対象とする秘匿化検索を許容すると、攻撃者は、検索クエリに一致した暗号文はすべて同じ平文の暗号文であることが分かり、それらの暗号文は確定的暗号に変換できてしまう。そのため確率的暗号化を用いても、攻撃者は、データが活用されるに従って秘匿化DB内の多数の暗号文を確定的暗号に変換でき、確定的暗号化で暗号化した場合と同様に頻度分析攻撃が可能となる。
【0075】
このように頻度分析攻撃は、平文と暗号文に使用される文字や文字列の出現頻度を手掛りとして平文を類推し、盗み見る攻撃手法である。そして、元の平文の項目値に偏りがある場合に、その平文を暗号化した暗号文は、頻度分析攻撃に対して脆弱となる。
【0076】
そこで頻度分析攻撃に対する安全性を高めるために、ダミーデータを用いて、元の平文の出現頻度を攪乱させることが考えられる。このとき、元の平文での項目値の種類や、各項目値の出現頻度を考慮せずにダミーデータ内の各項目の項目値(ダミー値)を追加しても、出現頻度を適切に攪乱させることはできない。
【0077】
例えば元の平文のデータにおける項目値の出現頻度を考慮して、適切な内容のダミー値を有するダミーデータを登録することで、確実な頻度攪乱を実現することができる。この場合、データ登録サーバ200,300は、真のデータの頻度分布と同じ分布であるが、それぞれの値が別の値に変換されたダミーレコード群を生成する。このダミーレコード群の各ダミーレコードは真のデータのレコードに紐付き、1対1で対応する。そしてデータ登録サーバ200,300は、真のデータのレコードの項目値を別の項目値に変換して対応するダミーレコードのダミー値として設定する。この変換規則を定めたものを変換集合と呼ぶ。
【0078】
以下に、第2の実施の形態に使用する文字または用語の意味について説明する。
「k」は、予め設定されたセキュリティパラメータであり、2以上の整数が設定される。システムの管理者は、1つの項目の複数のキーワードのうち、頻度分析攻撃を受けたときに攻撃者が絞り込むことを許容可能な最小のキーワード数をkに設定する。
【0079】
「真のデータ」は、平文のDBに格納されているデータである。「真のデータのレコード」は、真のデータ内のキーワードを含むレコードである。なお真のデータのレコードは、第1の実施の形態の秘匿レコードの一例である。「ダミー値」は、真のデータの頻度分布を攪乱するために追加した値である。「ダミーレコード」は、ダミー値を含むレコードである。「真の値」は、平文のDBに設定可能なキーワードである。真の値は、第1の実施の形態における第1項目値の一例である。
【0080】
「G」は群数であり、ダミーデータの追加によりデータ量が平文データの何倍になるかを示す値でもある。この群数Gは、第1の実施の形態に示した所定値の一例である。「群」は、複数のレコードの集合である。真のデータのレコードの集合が群「0」である。真のデータのレコード数と同数のダミーレコードを含むG-1個の群「1,2,・・・,G-1」が生成される。群「0」に含まれる1つのレコードに対し、G-1個のダミーレコードが生成され、G-1個のダミーレコードは、それぞれ群「1,2,・・・,G-1」に1つずつ追加される。「フラグ」は、端末装置400,500がダミーレコードを見分けられるように、ダミーレコードに付与される値である。
【0081】
「変換集合」は、各列(項目)について、真の値をk個以上とダミー要素または分割キーワード(真の値から1つまたは複数生成されたキーワード)を含む集合である。分割キーワードは、第1の実施の形態における第2項目値の一例である。変換集合には、1つの真の値に対してどのような値のダミーレコードを追加するかを決定するためのルールが表されている。変換集合の要素数は群数Gと等しい。変換集合は、平文検索クエリの攪乱や、攪乱検索結果の復元にも用いられる。
【0082】
「j」は列番号である。jは、レコードに登録された値の項目を特定するインデックスとして用いられる。「Xj」は、レコード内のj番目の列のフィールドに設定可能な項目値(キーワード)の種類数である。
【0083】
「ダミー要素」は、XjがGより小さいかまたはGの倍数でない場合、変換集合に含める要素の不足を埋めるためのダミーの要素である。ダミー要素は、キーワード一覧には含まれない値である。
【0084】
次に、元の平文のデータにおける項目値の出現頻度を考慮したダミーデータの登録手法について説明する。
ダミーデータの登録手法の一例として、ダミー要素を用いる方法が考えられる。ダミー要素を用いる場合、データ登録サーバ200,300は、各項目の取り得るキーワードまたはダミー値から任意にG個選んだものを要素として変換集合を生成する。そしてデータ登録サーバ200,300は、各項目の取り得るキーワードがいずれか1つの変換集合の要素として含まれるまで変換集合を生成する。
【0085】
図5は、ダミー要素を用いた変換集合の生成例を示す図である。
図5の例では、真のデータのレコードは、「血圧」と「血液型」の項目が含まれているものとする。キーワードリスト34には、項目ごとに、その項目に設定可能なキーワードが登録されている。
図5の例では、「血圧」に設定可能な項目値が3種類(正常、低血圧、高血圧)であり、「血液型」に設定可能な項目値が8種類(A+、B+、O+、AB+、A-、B-、O-、AB-)である。
【0086】
図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つが生成されている。
【0087】
変換集合35a,35b,35cは、循環リスト構造となっており、要素が順番に配置されている。変換集合35a,35b,35c内の各要素には、先頭から順に、0から昇順の要素番号が付与される。例えば変換集合35aでは、図中の左端を先頭とすると、「正常」が先頭の要素(要素番号「0」)であり、「低血圧」が次の要素(要素番号「1」)である。循環リスト構造となっているため、例えば最後の要素「D1」の次の要素は「正常」となる。
【0088】
データ登録サーバ200,300は、真のデータのレコードのキーワードを、変換集合35a,35b,35cに基づいて変換することで、ダミーレコードに設定するダミー値を生成する。例えばデータ登録サーバ200,300は、真のデータのレコードの1つのキーワードに基づいて、ダミーレコード群ごとに、そのダミーレコード群内のダミーレコードに設定するダミー値を1つ生成する。
【0089】
図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)を取得する。
【0090】
データ登録サーバ200,300は、群番号「1」(g=1)のダミーレコード群のダミー値c1,1を生成する場合、まず、mod(1+1,4)=2を計算する。そしてデータ登録サーバ200,300は、計算して得られた値「2」を要素番号とする変換集合35a内の要素b2に対応するキーワード「高血圧」を、群番号「1」のダミーレコード群に設定するダミー値に決定する。
【0091】
データ登録サーバ200,300は、群番号「2」(g=2)のダミーレコード群のダミー値c1,2を生成する場合、まず、mod(1+2,4)=3を計算する。そしてデータ登録サーバ200,300は、計算して得られた値「3」を要素番号とする変換集合35a内の要素b3に対応するダミー要素「D1」を、群番号「2」のダミーレコード群に設定するダミー値に決定する。
【0092】
データ登録サーバ200,300は、群番号「3」(g=3)のダミーレコード群のダミー値c1,3を生成する場合、まず、mod(1+3,4)=0を計算する。そしてデータ登録サーバ200,300は、計算して得られた値「0」を要素番号とする変換集合35a内の要素b0に対応するキーワード「正常」を、群番号「3」のダミーレコード群に設定するダミー値に決定する。
【0093】
なお、
図6に示したようなキーワードの変換元と変換先との関係は、全単射の関係の一例である。全単射関係を満たしていれば、
図6に示す例とは別の規則で変換元のキーワードと変換先のキーワードまたはダミー要素との関係を定義してもよい。
【0094】
データ登録サーバ200,300は、
図6に示したようなダミー値の生成を、真のデータに出現する項目値それぞれについて行う。
図7は、ダミー要素を用いた場合のダミー値の生成例を示す図である。
図7の例では、真のデータ36には、項目「血圧」のキーワードとして、「正常」が2回出現し、「低血圧」と「高血圧」とがそれぞれ1回ずつ出現している。また項目「血液型」の項目値として、「A+」が2回出現し、「O-」と「AB-」とがそれぞれ1回ずつ出現している。
【0095】
真のデータ36に出現するキーワードそれぞれに基づいて、ダミーレコード群それぞれに設定するダミー値が生成されている。例えば血圧「正常」に基づいて、群番号1(g=1)のダミーレコード群用のダミー値「低血圧」、群番号2(g=2)のダミーレコード群用のダミー値「高血圧」、群番号3(g=3)のダミーレコード群用のダミー値「D1」が生成されている。また例えば血液型「A+」に基づいて、群番号1(g=1)のダミーレコード群用のダミー値「B+」、群番号2(g=2)のダミーレコード群用のダミー値「O+」、群番号3(g=3)のダミーレコード群用のダミー値「AB+」が生成されている。
【0096】
データ登録サーバ200,300は、生成したダミー値をダミーレコードに割り当て、項目値を暗号化することで登録データを生成する。
図8は、ダミー要素を用いた場合の登録データの一例を示す図である。登録データ37には、真のデータ36のレコード群37aとダミーレコード群37b,37c,37dが含まれている。登録データ37内の各レコードにはフラグが付与されている。そして登録データ37に含まれるキーワード(フラグ値も含む)が暗号化されている。
【0097】
フラグ値は、真のデータのレコードとダミーレコードとを識別するために用いられる。例えば真のデータのレコードにはフラグ値「0」を設定し、ダミーレコードにはフラグ値「1」を設定することができる。この場合、G≧3のときにはフラグ値「0」の暗号文(H(0))よりもフラグ値「1」の暗号文(H(1))の方が多くなる。すると、攻撃者は、フラグ値の暗号文の出現頻度に基づいて、そのレコードが真のデータのレコードなのかを判断できてしまう。そこでデータ登録サーバ200,300は、フラグ値の暗号文についても頻度攪乱を行う。
【0098】
例えばデータ登録サーバ200,300は、フラグ値を決定するために、真のデータのレコード群およびダミーレコード群それぞれについて、同一の変数の値に対して異なる値を出力する異なる関数を用意する。そしてデータ登録サーバ200,300は、用意した関数にID列の値を変数xとして入力した値をフラグ値とする。
【0099】
群番号gの群(真のデータのレコード群またはダミーレコード群)のフラグ値生成関数をf
g(x)としたとき、
図8の例で用いているフラグ値生成関数は以下の通りである。
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」となる。
【0100】
端末装置400,500は、検索の際には、真のデータのレコード群37aまたはいずれか1つのダミーレコード群37b,37c,37dを検索対象として指定した検索クエリを発行する。データ管理サーバ100は、検索クエリに対する応答として、検索条件に合致したレコードを検索結果として応答する。そのときデータ管理サーバ100は、検索結果にID列とフラグ列のフラグ値とを含める。端末装置400,500は、検索結果に示されるレコードのIDを、群ごとのフラグ値生成関数それぞれに入力し、得られた関数値を暗号化する。そして端末装置400,500は、フラグ値生成関数の関数値の暗号文とレコードのフラグ値(暗号文)と比較する。端末装置400,500は、比較の結果が一致したフラグ値生成関数に対応する群が、そのレコードが属する群であると判断する。
【0101】
このようにして生成された登録データ37では、同一の変換集合に属する要素に対応する暗号文の出現頻度の均一化が図られている。
図9は、暗号文の均一化を説明する図である。例えば血圧の項目に設定可能なキーワードは、すべて1つの変換集合35a(
図5参照)に属している。真のデータ36におけるキーワード「正常」の出現頻度は「2」、キーワード「低血圧」の出現頻度は「1」、キーワード「高血圧」の出現頻度は「1」である。
【0102】
登録データ37では、各キーワードおよびダミー要素の値それぞれの暗号文の出現頻度が均一化されている。例えばキーワード「正常」の暗号文「H(正常)」、キーワード「低血圧」の暗号文「H(低血圧)」、キーワード「高血圧」の暗号文「H(高血圧)」、およびダミー要素の値「D1」の暗号文「H(D1)」それぞれの出現頻度は、いずれも「4」である。
【0103】
図5に示した変換集合の生成例からも分かるように、各変換集合にはk個(
図5の例ではk=3)以上のキーワードが含まれる。従って攻撃者は、特定の暗号文の出現頻度が分かっても、その暗号文が、同一の変換集合に属するキーワードのうちのどのキーワードの暗号文なのかを特定することはできない。すなわち攻撃者は、暗号文に対応するキーワードの候補をk個までしか絞り込めない。その結果、頻度分析攻撃に対する安全性が向上している。
【0104】
なお、暗号文に対応するキーワードの候補をk個までしか絞り込めないようにするためには、群数Gの値を適切に決定することが重要となる。
図10は、適切な群数Gについて説明する図である。群数Gは、kに応じて決定される。前述のようにkは、暗号文に対応するキーワードの候補をk個までしか絞れないようにするために予め設定するセキュリティパラメータである。従ってkは、システムに求められる頻度分析攻撃に対する安全性の度合いに応じて決められる。
【0105】
このとき設定可能なキーワードの種類数X
j<kとなる項目も存在する。このような項目は、変換集合内にk個以上のキーワードを含めることができない。そのため攻撃者は、該当項目の暗号文に対応するキーワードが、X
j個(k<)のキーワードのどれかであることが分かる。しかしこのような項目の暗号文に対応するキーワードが、X
j個のどれかであることは、公知の情報であり、攻撃者が知っていても問題ない。例えば
図10の例では、項目「性別」について設定可能なキーワードは「男」か「女」の2つしかない。しかし性別が「男」と「女」のいずれかであることは、攻撃者が知っていても問題ない情報である。
【0106】
他方、設定可能なキーワードの種類数Xj≧kとなる項目であれば、変換集合内にk個以上のキーワードが含まれるようにするのが適切である。そこで、Xjがkの倍数でない項目がある場合、データ登録サーバ200,300は、Gを調整することで、k個以上のキーワードが各変換集合に含まれるようにする。
【0107】
例えば
図10の「血液型」の例では、k=3に対し、X
j=4である。このとき変換集合一覧38のようにG=3にすると、検索者が「O」または「AB」を検索した際、その検索結果を見た攻撃者は、検索対象が「O」と「AB」の2つのどちらかだと分かってしまう。そこで、X
j≧kの項目について該当項目に設定可能なキーワードが各変換集合にk個以上含まれるようにするためには、G≧kとなるようにGが決定される。例えば変換集合一覧39のようにG=4にすれば、いずれの変換集合にも、対応する項目に設定可能なキーワードが3つ以上含まれる。
【0108】
図11は、頻度攪乱後の頻度分布の一例を示す図である。
図11に示す頻度分布表40は、5種類のキーワード「A」、「B」、「C」、「D」、「E」を設定可能な項目を有するDBにおける頻度攪乱後の各キーワードおよびダミー要素の値「F」の出現頻度を表している。
図11の例ではG=3である。変換集合は、「A,B,C」と「D,E,F」の2つである。
【0109】
群番号「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」と変換することで生成される。
【0110】
真のデータにおける「A」の出現頻度は「10」、「B」の出現頻度は「7」、「C」の出現頻度は「2」、「D」の出現頻度は「1」、「E」の出現頻度は「5」、「F」の出現頻度は「0」である。すると、頻度攪乱後の変換集合「A,B,C」に含まれる各キーワードの出現頻度は、すべて「19」となる。また頻度攪乱後の変換集合「D,E,F」に含まれる各キーワードまたはダミー要素の値の出現頻度は、すべて「6」となっている。すなわち項目値の3つずつの集合ごとに、集合内での項目値の出現頻度の均一化が図られている。
【0111】
また各ダミーレコード群のダミー値は、真のデータのキーワードを1対1で変換することで生成されている。そのためキーワードの出現頻度のばらつき度合いは変わらない。例えば出現頻度が多い順にその出現頻度の値を並べた場合、真のデータのレコード群および2つのダミーレコード群のいずれにおいても「10,7,5,2,1,0」である。このように、ダミーレコード群ごとの項目値の出現頻度のばらつき度合いは、すべてのダミーレコード群について真のデータと等しくなる。その結果、どのレコード群が真のデータのレコード群なのかを、キーワードの出現頻度のばらつき度合いから判断することが困難となる。また、すべてのダミーレコード群に真のデータの各レコードに1対1で対応するダミーレコードが存在する。そのため真のデータのあるレコードを削除する際には対応するダミーレコードを合わせて削除することで、データの秘匿性を維持したまま真のデータの任意のレコードを削除することができる。
【0112】
このようにダミー要素を用いることで、頻度分析攻撃に対する安全性を向上させることが可能である。ただし、ダミー要素を用いると、複数の項目のキーワード間の組合せ頻度を知っている攻撃者に対しては、検索条件に含まれるキーワードの候補がk個未満に絞られてしまう可能性がある。
【0113】
例えば
図11の「変換集合2」が項目「性別」についての変換集合であるものとする。性別のキーワードが「男」と「女」しかなければ、k=3の場合であっても
図11に示すような変換集合を生成することが許容される。このとき複数の項目のキーワード間の組合せ頻度を用いた頻度分析攻撃が行われると、「変換集合1」に含まれるキーワードについても、k未満に絞り込まれる可能性がある。
【0114】
図12は、ダミー要素を用いた場合の組み合わせ頻度の一例を示す図である。
図12にはk=G=3のときの変換集合一覧41とそのときの組み合わせ頻度表42とが示されている。
【0115】
変換集合一覧41には血圧と性別との変換集合が示されている。血圧の変換集合には「正常」、「低血圧」、「高血圧」が含まれる。性別の変換要素には「男」、「女」、およびダミー要素の値「D1」が含まれる。
【0116】
組み合わせ頻度表42には、血圧の値と性別の値との組み合わせ(論理積)に対応するレコードの出現頻度が示されている。真の頻度は、真のデータのレコード群内の該当するレコードの数である。攪乱後頻度は、真のデータのレコード群とダミーレコード群とにおける該当するレコードの数である。
【0117】
例えば血圧が「正常」で性別が「男」のレコードは、真のデータのレコード群に「n1」件含まれる。血圧が「低血圧」で性別が「女」のレコードは、真のデータのレコード群に「n2」件含まれる。血圧が「高血圧」で性別が「D1」のレコードは、真のデータのレコード群に「n3」(n3=0)件含まれる。血圧が「正常」で性別が「女」のレコードは、真のデータのレコード群に「n4」件含まれる。血圧が「低血圧」で性別が「D1」のレコードは、真のデータのレコード群に「n5」(n5=0)件含まれる。血圧が「高血圧」で性別が「男」のレコードは、真のデータのレコード群に「n6」件含まれる。血圧が「正常」で性別が「D1」のレコードは、真のデータのレコード群に「n7」(n7=0)件含まれる。血圧が「低血圧」で性別が「男」のレコードは、真のデータのレコード群に「n8」件含まれる。血圧が「高血圧」で性別が「女」のレコードは、真のデータのレコード群に「n9」件含まれる。
【0118】
ここで群番号「1」(g=1)のダミーレコード群において、血圧のダミー値が「正常」で性別のダミー値が「男」となるレコードは、真のデータのレコード群内の血圧が「低血圧」で性別が「女」のレコードに基づいて生成される。そのため血圧が「正常」で性別が「男」のレコードは、群番号「1」(g=1)のダミーレコード群に「n2」件含まれる。群番号「2」(g=2)のダミーレコード群において、血圧のダミー値が「正常」で性別のダミー値が「男」となるレコードは、真のデータのレコード群内の血圧が「高血圧」で性別が「D1」のレコードに基づいて生成される。そのため血圧が「正常」で性別が「男」のレコードは、群番号「2」(g=2)のダミーレコード群に「n3」(n3=0)件含まれる。
【0119】
すると、秘匿化DBにおける血圧が「正常」で性別が「男」のレコードの出現頻度(攪乱後頻度)は「n1+n2」となる。同様に、秘匿化DBにおける血圧が「低血圧」で性別が「女」のレコードの出現頻度(攪乱後頻度)、秘匿化DBにおける血圧が「高血圧」で性別が「D1」のレコードの出現頻度(攪乱後頻度)も「n1+n2」となる。
【0120】
図12に示すような攪乱後頻度を有する秘匿化DBに対して検索者が検索を行ったとき、複数の項目値の組合せ頻度を知っている攻撃者は、検索条件に含まれるキーワードの候補をk個(
図12の例では3個)未満に絞ることが可能である。例えば検索者が「正常∧男」(∧は論理積)の検索または「低血圧∧女」の検索を行ったものとする。これらのいずれの検索結果も錯乱後頻度は「n1+n2」である。すなわち検索条件にヒットしたレコード数は「n1+n2」である。なお検索者がダミー値を検索することはない。
【0121】
ここで、血圧のキーワードと性別のキーワードとの間の組み合わせ頻度(真の頻度)を知っている攻撃者は、攪乱後頻度が「n1+n2」となるのが「正常∧男」または「低血圧∧女」のみであることも知っている。すると攻撃者は、少なくとも「高血圧」が検索対象外であることを認識できる。これは、検索者の関心の対象が血圧については「正常」または「低血圧」であり、「高血圧」は関心の対象外であると、攻撃者に知られてしまうことを意味する。すなわち、検索の対象がk(=3)未満に絞られてしまう。
【0122】
このようにキーワードの種類数Xj(「男」、「女」の2種類)が少なく、Xj<kとなる項目値と他の項目値とが組み合わさると、他の項目値も性別列のXj個の値に絞られてしまう。そこで、データ登録サーバ200,300は、ダミー要素を用いずに変換集合を生成する。
【0123】
図13は、ダミー要素を用いない場合の組み合わせ頻度の一例を示す図である。
図13にはk=G=3のときにダミー要素を用いずに生成された変換集合一覧43とそのときの組み合わせ頻度表44とが示されている。
【0124】
データ登録サーバ200,300は、設定可能なキーワードの種類数X
j<kとなる列の変換集合生成において、設定可能なキーワード数が足りない場合は、設定可能なキーワードの少なくとも一部を別の複数のキーワードに分割してキーワードを追加する。
図13の例ではk=3であり、性別の項目に設定可能なキーワード数は「X
j=2」である。そこでデータ登録サーバ200,300は、性別の項目について、「男」を2つに分割し、変換集合を{男_1,女,男_2}とする。
【0125】
データ登録サーバ200,300は、真のデータのレコード内のキーワードが分割対象である場合、分割された値から任意の一つを選んで該当キーワードを分割後の値に変換した後、変換集合を用いた攪乱処理を行う。端末装置400,500は、検索クエリ内のキーワードが分割対象である場合、分割されたキーワードを分割後のそれぞれの値を用いて検索を行う。
【0126】
例えば血圧が「正常」で性別が「男_1」のレコードは、真のデータのレコード群に「n1」件含まれる。血圧が「低血圧」で性別が「女」のレコードは、真のデータのレコード群に「n2」件含まれる。血圧が「高血圧」で性別が「男_2」のレコードは、真のデータのレコード群に「n3」件含まれる。血圧が「正常」で性別が「女」のレコードは、真のデータのレコード群に「n4」件含まれる。血圧が「低血圧」で性別が「男_2」のレコードは、真のデータのレコード群に「n5」件含まれる。血圧が「高血圧」で性別が「男_1」のレコードは、真のデータのレコード群に「n6」件含まれる。血圧が「正常」で性別が「男_2」のレコードは、真のデータのレコード群に「n7」件含まれる。血圧が「低血圧」で性別が「男_1」のレコードは、真のデータのレコード群に「n8」件含まれる。血圧が「高血圧」で性別が「女」のレコードは、真のデータのレコード群に「n9」件含まれる。
【0127】
この場合、秘匿化DBにおける血圧が「正常」で性別が「男_1」のレコードの出現頻度(攪乱後頻度)は「n1+n2+n3」となる。同様に、秘匿化DBにおける血圧が「低血圧」で性別が「女」のレコードの出現頻度(攪乱後頻度)、秘匿化DBにおける血圧が「高血圧」で性別が「男_2」のレコードの出現頻度(攪乱後頻度)も「n1+n2+n3」となる。
【0128】
なお分割対象のキーワードを、分割後のいずれのキーワードに変換するのかは、例えばランダムに決定される。そのため真のデータにおける血圧「正常」で性別が「男」のレコードの数(真の頻度)を攻撃者が知っていても、血圧「正常」で性別が「男_1」のレコードの数(真の頻度「n1」)は、攻撃者には正確には分からない。
【0129】
攻撃者が真のデータにおける血圧「正常」で性別が「男_1」のレコードの数(真の頻度「n1」)を推定できたとしても、検索者が検索した検索クエリの血圧のキーワードが何であるのかは、攻撃者はk未満には絞り込むことができない。例えば検索者が「正常∧男」の検索を行う場合、端末装置400,500は、「正常∧男_1」と「正常∧男_2」との検索クエリを用いて検索を行う。これらの検索結果の論理和を採れば、「正常∧男」の検索結果を得ることができる。「正常∧男_1」の検索結果に含まれるレコード数は「n1+n2+n3」である。攪乱後頻度が「n1+n2+n3」となるのは、「正常∧男_1」、「低血圧∧女」、「高血圧∧男_2」のいずれかである。すると検索クエリに含まれていた血圧のキーワードは、「正常」、「低血圧」、「高血圧」のいずれもあり得ることとなる。すなわち攻撃者は、検索に使用されたキーワードの候補をk(k=3)未満に絞り込むことはできない。
【0130】
次に、ダミー要素を用いずに頻度分析攻撃に対する安全性を向上させた秘密情報管理システムの各装置の機能について説明する。
図14は、秘密情報管理システムの機能を示すブロック図である。データ管理サーバ100は、秘匿化DB110、データ登録部120、鍵提供依頼部130、および検索部140を有する。秘匿化DB110は、データ管理サーバ100が有するメモリ102またはストレージ装置103によって実現される。データ登録部120、鍵提供依頼部130、および検索部140は、データ管理サーバ100が有するプロセッサ101によって実現される。
【0131】
秘匿化DB110は、データ登録サーバ200,300から収集した暗号文の患者データを、暗号文のまま管理するDBである。
データ登録部120は、データ登録サーバ200,300からのデータ登録要求に応じて、暗号文の患者データを秘匿化DB110に登録する。
【0132】
鍵提供依頼部130は、端末装置400,500からの鍵取得要求を受信すると、端末装置400,500への鍵提供依頼を、データ登録サーバ200,300に送信する。
検索部140は、端末装置400,500からの暗号化された検索キーワードを含むデータ検索クエリに応じて、秘匿化DB110に登録された患者データを検索する。この際、検索部140は、患者データと検索キーワードとを暗号文のまま照合し、検索キーワードに合致するレコードを、秘匿化DB110から抽出する。そして検索部140は、抽出したレコードを、検索クエリの送信元の端末装置400,500に送信する。
【0133】
データ登録サーバ200は、DB210、鍵記憶部220、変換情報記憶部230、鍵生成部240、データ登録要求部250、および鍵提供部260を有する。DB210、鍵記憶部220、および変換情報記憶部230は、データ登録サーバ200が有するメモリまたはストレージ装置によって実現される。また鍵生成部240、データ登録要求部250、および鍵提供部260は、データ登録サーバ200が有するプロセッサによって実現される。
【0134】
DB210は、患者データを平文で格納するDBである。
鍵記憶部220は、データ管理サーバ100に登録する患者データの暗号化に使用する暗号鍵を記憶する。暗号鍵は、データ管理サーバ100からアクセスできないように管理される。
【0135】
変換情報記憶部230は、真のデータのレコード群に示されるキーワードを、ダミーレコードに登録するダミー値に変換するために使用する情報を記憶する。例えば変換集合一覧などの情報が変換情報記憶部230に格納される。
【0136】
鍵生成部240は、暗号鍵を生成する。鍵生成部240は、生成した暗号鍵を鍵記憶部220に格納する。
データ登録要求部250は、データ管理サーバ100への登録対象の患者データの暗号文を含むデータ登録要求を、データ管理サーバ100に送信する。例えばデータ登録要求部250は、まず登録対象の患者データをDB210から取得し、秘匿化DB110のフォーマットに合わせて、患者データを加工する。この際、データ登録要求部250は、送信するデータ登録要求にダミーデータを含める。ダミーデータは複数のダミーレコードを含む。ダミーレコード内にはダミー値が登録されている。データ登録要求部250は、変換情報記憶部230に格納されている情報を用いて、真のデータ内の値をダミー値に変換し、ダミーレコードに登録する。
【0137】
さらにデータ登録要求部250は、暗号鍵を用いて、秘匿化DB110に登録する項目値ごとに、患者データに含まれる値を暗号化する。そしてデータ登録要求部250は、項目値ごとに暗号化された、暗号文の患者データを含むデータ登録要求を、データ管理サーバ100に送信する。
【0138】
鍵提供部260は、データ管理サーバ100からの鍵提供依頼に応じて、登録した患者データの利用を許可する製薬企業の端末装置400,500へ、暗号鍵を送信する。なお鍵提供部260は、暗号鍵を、データ管理サーバ100を経由せずに端末装置400,500に送信する。データ管理サーバ100を経由せずに暗号鍵を送信することで、暗号鍵がデータ管理サーバ100から隔離される。その結果、データ管理サーバ100の管理者による、秘匿化DB110内のデータの復号が抑止される。
【0139】
以上、データ登録サーバ200が有する機能を説明したが、データ登録サーバ300もデータ登録サーバ200と同様の機能を有する。
端末装置400は、鍵記憶部410、変換情報記憶部420、鍵取得部430、および検索要求部440を有する。鍵記憶部410と変換情報記憶部420は、端末装置400が有するメモリまたはストレージ装置によって実現される。また鍵取得部430、および検索要求部440は、端末装置400が有するプロセッサによって実現される。
【0140】
鍵記憶部410は、検索クエリに含める検索キーワードの暗号化に使用する暗号鍵を記憶する。暗号鍵は、データ管理サーバ100からアクセスできないように管理される。
変換情報記憶部420は、検索者が指定した検索条件に示されるキーワードをダミー値に変換するために使用する情報を記憶する。変換情報記憶部420に格納されている情報は、データ登録サーバ200の変換情報記憶部230に格納されている情報と同じである。
【0141】
鍵取得部430は、データ登録サーバ200,300で提供される暗号鍵を取得する。例えば鍵取得部430は、データ管理サーバ100に、鍵取得要求を送信する。するとデータ管理サーバ100の鍵提供依頼部130により、データ登録サーバ200,300に鍵提供依頼が送信される。鍵提供依頼に応じて、例えばデータ登録サーバ200の鍵提供部260が、暗号鍵を端末装置400に送信する。そして鍵取得部430は、端末装置400から送信された暗号鍵を取得する。鍵取得部430は、取得した暗号鍵を、鍵記憶部410に格納する。
【0142】
検索要求部440は、患者データの利用者(検索者)が入力した検索キーワードを取得する。次に検索要求部440は、取得した検索キーワードを、暗号鍵を用いて暗号化し、暗号文の検索キーワードを含む検索クエリをデータ管理サーバ100に送信する。検索要求部440は、データ管理サーバ100から検索結果を受信すると、検索結果の内容(例えば検索キーワードに合致した真のデータのレコード数)を表示する。
【0143】
なお検索要求部440は、ダミーデータを検索対象とする検索クエリを送信することもできる。その場合、検索要求部440は、変換情報記憶部420に格納されている情報を用いて、検索キーワードをダミー値に変換し、暗号化したダミー値を含む検索クエリを送信する。この場合、検索要求部440は、検索結果に示されるレコードから所定のダミーレコードを抽出し、そのダミーレコード内のダミー値を、変換情報記憶部420に格納されている情報を用いて、真のデータに設定されていた値に変換する。そして検索要求部440は、変換後の値を有するレコードの内容を検索結果として表示する。
【0144】
以上、端末装置400が有する機能を説明したが、端末装置500も端末装置400と同様の機能を有する。
図14に示した機能により、データ管理サーバ100の管理者に対しても患者データと検索クエリの内容を秘匿したまま、データ管理サーバ100において患者データを管理すると共に、製薬企業15,16による患者データの利用を可能とすることができる。なお、
図14に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【0145】
次に、
図14に示したシステムによる出現頻度攪乱処理の概要について説明する。
図15は、ダミーデータを用いた出現頻度の攪乱処理の一例を示す図である。データ登録サーバ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とで、暗号鍵の共有化が図られる。
【0146】
その後、データ登録サーバ200は、DB210内のデータ211に対して、ダミーデータ55を追加する(ステップS12)。例えばデータ登録要求部250は、DB210から取得した真のデータ54に含まれるレコードの数のG-1倍のダミーレコードを、ダミーデータ55として追加する。この際、データ登録要求部250は、追加したダミーレコードの項目値(ダミー値)として、真のデータ54に設定されている項目値を用い、各項目値の出現頻度の偏りを減少させる。さらにデータ登録要求部250は、各レコードに、真のデータ54のレコードなのかダミーレコードなのか、ダミーレコードであればどのダミーレコード群に属するのかを識別するためのフラグ56を付与する。
【0147】
データ登録要求部250は、真のデータ54とダミーデータ55との各レコード内の項目値(フラグを含む)を暗号鍵51で暗号化して、登録データ53を生成する(ステップS13)。そしてデータ登録要求部250は、登録データ53を含むデータ登録要求を、データ管理サーバ100に送信する(ステップS14)。データ管理サーバ100では、データ登録部120が、登録データ53を受信し、受信した登録データ53を秘匿化DB110に格納する。
【0148】
製薬企業15の担当者がデータ54を利用する場合、担当者は、端末装置400に検索キーワードを入力する。すると検索要求部440は、入力された検索キーワードを暗号鍵52で暗号化して、暗号文の検索キーワードを含む検索クエリ57を生成する(ステップS15)。なお検索要求部440は、いずれかのダミーレコード群を検索対象とする場合、入力された検索キーワードを、ダミーレコード群におけるその検索キーワードに対応するダミー値に変換する。そして検索要求部440は、変化で得られたダミー値を暗号化した値を含む検索クエリ57を生成する。そして検索要求部440は、検索クエリ57をデータ管理サーバ100に送信する(ステップS16)。
【0149】
データ管理サーバ100では、検索部140が、データを秘匿化したままで、登録データ53と検索クエリ57とを照合する(ステップS17)。そして検索部140は、検索クエリ57による検索にヒットしたレコードを、検索結果58として端末装置400に送信する(ステップS18)。検索結果58には、真のデータ54のレコードとダミーデータ55のダミーレコードとが含まれる。
【0150】
端末装置400では検索要求部440が検索結果58を受信する。検索要求部440は、真のデータを検索対象とした場合には、例えばフラグに基づいて、検索結果58からダミーレコードを破棄する(ステップS19)。そして検索要求部440は、検索結果58内の真のデータ54のレコードのみを含む真の結果59を、モニタなどに表示する。
【0151】
なお検索要求部440は、ダミーレコード群を検索対象とした場合には、例えばフラグに基づいて、検索結果58から検索対象のダミーレコード群に属するダミーレコードを抽出し、その他のレコードを破棄する。検索要求部440は、ダミーレコード内のダミー値を、そのダミー値の生成元であったキーワードに変換する。そして検索要求部440は、元のキーワードに変換された値を含むレコードを真の結果59として表示する。
【0152】
このようにダミーデータ55を追加することで、各項目値の頻度攪乱が可能となる。端末装置400は、フラグを用いてダミーデータ55と真のデータ54とを識別して、真の結果59を得ることができる。
【0153】
次に、データ登録サーバ200,300が有する平文の患者データのDB210について説明する。
図16は、平文の患者データのDBの一例を示す図である。DB210には、真のデータ211が平文のまま格納されている。真のデータ211には、例えば患者ごとのレコードが、レコードの識別子(ID)に対応付けて登録されている。各レコードには、項目ごとの列に、その項目に対応するキーワードが設定されている。
図16の例では、項目として「血圧」、「血液型」がある。DB210に登録されている各レコード内の値は、例えば平文の文字コードである。
【0154】
データ登録要求部250は、患者のレコードをデータ管理サーバ100に登録する場合、そのレコードに設定された値(平文)を、確定的暗号化技術により暗号化する。そして暗号化されたレコードが、データ管理サーバ100の秘匿化DB110に登録される。その際、データ登録要求部250は、変換情報記憶部230を参照して、頻度分析攻撃に対する攪乱のためにダミーデータを生成する。
【0155】
図17は、変換情報記憶部に格納される情報の一例を示す図である。変換情報記憶部230には、キーワード一覧231、変換集合一覧232、および分割キーワード一覧233が記憶されている。キーワード一覧231は、項目ごとに、その項目に設定可能なキーワードのリストが示されたデータである。変換集合一覧232は、変換集合の内容を示すデータである。分割キーワード一覧233は、キーワードを分割して秘匿化DB110に登録する場合における分割後のキーワード(分割キーワード)のリストを示すデータである。なお変換集合一覧232と分割キーワード一覧233とは、キーワード一覧231に基づいて、データ登録要求部250によって生成されるデータである。
【0156】
図18は、キーワード一覧の一例を示す図である。キーワード一覧231には、DB210の項目ごとに、該当項目に設定可能なキーワードのリストが登録されている。
図18の例では、「血圧」の項目に登録できるキーワードは3個であり、「血液型」の項目に登録できるキーワードは8個である。
【0157】
図19は、変換集合一覧の生成方法の一例を示す図である。キーワードリスト231aには、j番目の項目に設定可能なキーワードX
j個のキーワードが示されている。j番目の項目についてm個(mは1以上の整数)の変換集合232aが生成されるものとする。各変換集合には「1」から「m」までの番号が付与されている。各変換集合には、G個のキーワード格納領域が設けられている。
【0158】
データ登録要求部250は、例えばキーワードリスト231aから、所定の順番あるいはランダムな順番ですべてのキーワードを1回ずつ選択する。データ登録要求部250は、選択したキーワードを番号の小さい変換集合から順にその変換集合の格納領域に格納していく。データ登録要求部250は、複数の変換集合232aそれぞれに1つずつのキーワードが割り当てられたとき、未選択のキーワードがあれば、再度、選択したキーワードを番号の小さい変換集合から順にその変換集合の格納領域に格納していく。
図19では、キーワードの格納順を矢印で示している。
【0159】
データ登録要求部250は、すべてのキーワードの1回ずつの選択が完了した後、複数の変換集合232aのいずれかに空き領域がある場合、キーワードリスト231aからキーワードの2回目の選択を行う。そしてデータ登録要求部250は、選択したキーワードを番号の小さい変換集合から順にその変換集合の格納領域に格納していく。
【0160】
データ登録要求部250は、このような選択したキーワードの変換集合のキーワード格納領域への格納処理を、すべての変換集合のキーワード格納領域に空きがなくなるまで繰り返す。
【0161】
このとき、変換集合の数mは、すべてのキーワードを1回ずついずれかの変換集合のキーワード格納領域に格納したときに、各変換集合にk種類以上のキーワードが格納されるように決定されている。ただしXj<kの場合はm=1となり、Xj種類のキーワードすべてが1つの変換集合に含められる。
【0162】
データ登録要求部250は、変換集合に2回以上格納されたキーワードを、格納されたキーワード格納領域ごとに異なる値となるように変更する。
図19の例では、1回目の選択によって格納されたキーワードに「_1」の文字列を付与し、2回目の選択によって格納されたキーワードに「_2」の文字列を付与している。
【0163】
データ登録要求部250は、生成した変換集合232aに基づいて分割キーワード一覧を生成する。
図20は、分割キーワード一覧の生成例を示す図である。例えばデータ登録要求部250は、複数の変換集合232aに登録されている各キーワードを抽出し、分割キーワード一覧233aに分割キーワードとして登録する。
【0164】
図21は、変換集合一覧の一例を示す図である。変換集合一覧232には、項目ごとに生成された変換集合232b,232c,232dが含まれている。
図21の例では、血圧の変換集合232bには、「正常_1」、「低血圧」、「高血圧」、「正常_2」が登録されている。
【0165】
図22は、分割キーワード一覧の一例を示す図である。分割キーワード一覧233には、項目ごとに、その項目に設定可能なキーワードに対応付けて、そのキーワードの分割キーワードが登録されている。例えば項目「血圧」のキーワード「正常」には、分割キーワードとして「正常_1」と「正常_2」とが登録されている。他のキーワードは、分割キーワードが1つしかないため、元のキーワードと同じ値が分割キーワードとして登録されている。なお分割キーワードが1つしか存在しないキーワードについては、分割キーワード一覧233への登録対象から除外してもよい。分割キーワード一覧233に登録されていないキーワードは、分割キーワードへの変更対象外となる。
【0166】
このような分割キーワード一覧233に基づいてDB210内の真のデータ211に含まれる値が分割キーワードに変更される。そして分割キーワードが設定された真のデータのレコード群に基づいて、秘匿化DBに登録する登録データが生成される。
【0167】
図23は、分割キーワードを用いた場合の項目値の変換例を示す図である。変換の方法は、
図6に示したダミー要素を用いた場合と同様である。すなわちダミーレコード群の群番号の分だけ右にずらした位置の要素が、そのダミーレコード群のダミーレコードに設定するダミー値となる。これはダミーレコード群それぞれについて、変換元の集合{正常_1,低血圧,高血圧,正常_2}から変換先の集合{正常_1,低血圧,高血圧,正常_2}への写像が、全単射関係となっている。群番号によって変換先が異なるため、ダミーレコード群ごとに異なる全単射関係となる。
【0168】
図24は、分割キーワードを用いた場合の登録データの一例を示す図である。DB210に格納されていた真のデータ211(
図15参照)における「血圧」の項目のキーワード「正常」は、分割キーワード一覧233(
図22参照)に基づいて分割キーワードに変更されている。分割キーワードへの変更後の真のデータ211aでは、ID「1」のレコードの「血圧」の値は「正常_1」に変更されている。またID「4」のレコードの「血圧」の値は「正常_2」に変更されている。
【0169】
登録データ60には、真のデータ211aのレコード群60aとダミーレコード群60b~60dが含まれている。また各レコードにはランダムにIDが付与されている。登録データ60内の各レコードにはフラグが付与されている。そして登録データ60に含まれるキーワード(フラグ値も含む)が暗号化されている。なおフラグ値は、ランダムに付与されたIDを用いて、前述の式(2)に示したフラグ値生成関数によって生成されている。
【0170】
データ登録要求部250は、登録データ60をIDでソートした後、データ管理サーバ100の秘匿化DB110に登録する。
図25は、秘匿化DBの一例を示す図である。秘匿化DB110に登録されたレコードはIDによってソートされており、真のデータのレコードとダミーレコードが混在して登録されている。
【0171】
次に、データ登録処理の手順について詳細に説明する。
図26は、データ登録処理の手順の一例を示すフローチャートである。以下、
図26に示す処理をステップ番号に沿って説明する。
【0172】
[ステップS101]データ登録要求部250は、同程度の出現頻度とする項目値の種類数kの設定入力を受け付ける。kの値が大きいほど安全性が向上するが登録するダミーレコード数も増加する。そこで、kの値は、秘匿化DB110に求められる頻度分析攻撃に対する安全性の度合いと、秘匿化DB110に許容されるダミーレコード数とを勘案して、データ登録サーバ200の管理者が決定する。
【0173】
[ステップS102]データ登録要求部250は、群数Gと項目ごとの変換集合数とを決定する。例えば、キーワード一覧においてj番目の項目に設定可能なキーワードの種類数をXjとすると、j番目の項目について最適な群数Gjは、床関数と天井関数とを用いて以下の式(3)で表される。
【0174】
【0175】
データ登録要求部250は、すべての項目について求めたXjの値の最大値をGとする。さらにデータ登録要求部250は、群数Gに基づいてすべての項目それぞれの変換集合数を算出する。j番目の項目の最適な変換集合数Mjは以下の式(4)で表される。
【0176】
【0177】
[ステップS103]データ登録要求部250は、すべての項目それぞれについて、ステップS102で決定した変換集合数分の変換集合を生成する。またデータ登録要求部250は、生成した変換集合に基づいて分割キーワード一覧233を生成する。
【0178】
[ステップS104]データ登録要求部250は、DB210から平文のデータ(真のデータのレコード群)を読み込む。
[ステップS105]データ登録要求部250は、分割キーワード一覧233に基づいて、読み込んだ平文のデータにおける真のデータのレコードに登録されているキーワードを分割キーワードに変換する。例えばデータ登録要求部250は、登録されているキーワードに対応する分割キーワードの集合からランダムに分割キーワードを1つ選択する。そしてデータ登録要求部250は、分割対象のキーワードを選択した分割キーワードに変換する。
【0179】
[ステップS106]データ登録要求部250は、ステップS102で決定した群数G-1個のダミーレコード群を含むダミーデータを生成する。なお、ダミーデータ生成処理の詳細は後述する(
図27参照)。
【0180】
[ステップS107]データ登録要求部250は、真のデータとダミーデータとのレコードそれぞれに、ランダムにIDを付与する。
[ステップS108]データ登録要求部250は、真のデータのレコードとダミーレコードとのそれぞれにフラグを付与する。データ登録要求部250は、各レコードについて、例えば式(2)に示したフラグ値生成関数を用いて算出した値をフラグ値とするフラグを付与する。
【0181】
[ステップS109]データ登録要求部250は、各レコードをIDでソートする。
[ステップS110]データ登録要求部250は、ソートされたレコード群を暗号化して、秘匿化DB110に登録する。例えばデータ登録要求部250は、レコード内の項目値ごとに暗号化し、暗号化された値を有するレコード群を、登録データとしてデータ管理サーバ100に送信する。データ管理サーバ100では、データ登録部120が登録データを受信し、受信した登録データを秘匿化DB110に格納する。
【0182】
次に、ダミーデータ生成処理について詳細に説明する。
図27は、ダミーデータ生成処理の手順の一例を示すフローチャートである。以下、
図27に示す処理をステップ番号に沿って説明する。
【0183】
[ステップS121]データ登録要求部250は、ステップS102で算出した群数Gを取得する。
[ステップS122]データ登録要求部250は、真のデータをG-1個コピーし、G-1個のダミーレコード群を生成する。
【0184】
[ステップS123]データ登録要求部250は、真のデータの全項目それぞれについて、ステップS124~S127の処理を実行する。
[ステップS124]データ登録要求部250は、全ダミーレコードそれぞれについて、ステップS125の処理を実行する。
【0185】
[ステップS125]データ登録要求部250は、ダミーレコードの項目値を変換する。例えばデータ登録要求部250は、処理対象の項目に対応する変換集合の中から、ダミーレコードにおける処理対象の項目値(変換対象項目値)を含む変換集合を選択する。次にデータ登録要求部250は、処理対象のダミーレコードの属するダミーレコード群の群番号を取得する。データ登録要求部250は、選択した変換集合内の変換対象項目値に対応する要素から群番号の分だけ巡回的に右の要素を、その変換集合から取得する。そしてデータ登録要求部250は、変換処理対象のダミーレコード内の変換対象項目値を、取得した要素の値(ダミー値)に変換する。
【0186】
[ステップS126]データ登録要求部250は、全ダミーレコードそれぞれについて、ステップS125の処理が完了した場合、処理をステップS127に進める。
[ステップS127]データ登録要求部250は、全項目それぞれについて、ステップS124~S126の処理が完了した場合、ダミーデータ生成処理を終了する。
【0187】
このようにして、真のデータの項目値を、変換集合内の他の要素に置き換えることで、ダミーデータが生成される。そしてデータ登録要求部250が、生成したダミーデータとフラグ値を含む登録データを暗号化して秘匿化DB110に登録する。
【0188】
秘匿化DB110内のデータを検索しようとする検索者は、例えば端末装置400の検索条件入力画面を介して検索キーワードを端末装置400に入力する。
図28は、検索条件入力画面の一例を示す図である。検索条件入力画面61には、例えば検索変数としてDB210内の各項目の名称が設定されている。そして検索変数に対応付けて、その検索変数の指定値を検索キーワードとして入力するための指定値入力領域62が設けられている。検索者が指定値入力領域に、検索変数として示されている項目の指定値を入力すると、端末装置400は、入力された指定値を検索キーワードとする検索を行う。
【0189】
図29は、検索処理の手順の一例を示すフローチャートである。以下、
図29に示す処理をステップ番号に沿って説明する。
[ステップS131]検索要求部440は、ユーザからの検索条件として入力された検索キーワードと、その検索キーワードに対応する項目を、平文検索クエリとして取得する。
【0190】
[ステップS132]検索要求部440は、変換集合一覧を生成する。例えば検索要求部440は、データ登録要求部250における項目ごとの変換集合生成処理と同様の処理を行い、変換集合一覧を生成する。検索要求部440によって生成される変換集合一覧は、データ登録要求部250で生成された変換集合一覧と同じものとなる。この際、検索要求部440は、群数Gも算出する。そして検索要求部440は、変換集合一覧に基づいて分割キーワード一覧を生成する。
【0191】
[ステップS133]検索要求部440は、取得した平文検索クエリを分割する。例えば検索要求部440は、平文検索クエリに含まれる検索キーワードを分割キーワードに分割する。そして検索要求部440は、分割によって得られた分割キーワードごとの平文検索クエリを生成する。
図22に示すような分割キーワード一覧233が生成されているとき、検索キーワード「正常」は「正常_1」と「正常_2」とに分割される。そして検索キーワード「正常_1」を含む平文検索クエリと検索キーワード「正常_2」を含む平文検索クエリとが生成される。分割により生成された平文検索クエリの検索結果の論理和が、取得した平文検索クエリの検索結果である。
【0192】
取得した平文検索クエリには、複数の検索キーワードが含まれる場合がある。複数の検索キーワードの論理和検索の場合、検索要求部440は、各検索キーワードを分割キーワードに分解し、分割キーワードごとの平文検索クエリを生成する。複数生成された平文検索クエリによる検索結果の論理和が、取得した平文検索クエリの検索結果である。
【0193】
また複数の検索キーワードの論理積検索の場合、検索要求部440は、項目が異なる分割キーワード間のすべての組み合わせを生成する。3つ以上の項目それぞれの検索キーワードの論理積の場合であれば、検索要求部440は、各項目から1ずつ分割キーワードを選択することで生成可能な分割キーワードのすべての組み合わせを生成する。そして検索要求部440は、生成した分割キーワードの組み合わせごとの論理積の平文検索クエリを生成する。この場合も、複数生成された平文検索クエリによる検索結果の論理和が、取得した平文検索クエリの検索結果である。
【0194】
例えば取得した検索クエリが「A∧B」であり、検索キーワード「A」は「A_1」と「A_2」に分割され、検索キーワード「B」は「B_1」と「B_2」に分割されるものとする。この場合、検索要求部440は、分割後の平文検索クエリとして、「A_1∧B_1」、「A_1∧B_2」、「A_2∧B_1」、「A_2∧B_2」を生成する。
【0195】
[ステップS134]検索要求部440は、生成された平文検索クエリのうち未選択のものを1つ選択する。
[ステップS135]検索要求部440は、真のデータのレコード群とダミーレコード群とを含むすべての群の中から、1つの群を確率的に選択する。検索要求部440は、選択したレコード群を対象として検索を行うこととなる。なお、秘匿化DB110内のすべてのダミーレコード群は真のデータのレコード群と値は異なるものの同一の頻度分布を有している。そのためダミーレコード群を検索対象としたとしても、検索結果として得られたダミーレコード内のダミー値を変換集合に従って逆変換することで正しい検索結果を得ることができる。
【0196】
このように平文検索クエリを変換集合に従って変換(攪乱)すれば、どの群を検索しても、平文データ群を検索した際と同一の結果が得られる。そのため、検索クエリの攪乱を行いながらも、検索クエリの数は増加しない。また検索要求部440が検索対象とする群をランダムに決定することで、攻撃者が検索される群の偏りによって秘匿化DBの各レコードの群番号を特定することが抑止される。
【0197】
[ステップS136]検索要求部440は、ダミーレコード群を選択したか否かを判断する。検索要求部440は、選択したのがダミーレコード群であれば、処理をステップS137に進める。また検索要求部440は、選択したのが真のデータのレコード群であれば、処理をステップS142に進める。
【0198】
[ステップS137]検索要求部440は、生成した平文検索クエリを、変換集合に基づいて攪乱する。例えば検索要求部440は、平文検索クエリにおいて、検索対象の項目と分割キーワードが指定されている場合、まず検索対象の項目に対応する1以上の変換集合の中から、指定された分割キーワードに対応する要素を含む変換集合を特定する。次に検索要求部440は、選択したダミーレコード群の群番号を取得する。検索要求部440は、検索対象の分割キーワードに対応する変換集合内の要素から群番号の分だけ巡回的に右の要素を、その変換集合から取得する。そして検索要求部440は、平文検索クエリ内の変換対象の分割キーワードを、取得した要素の値(ダミー値)に変換する。
【0199】
[ステップS138]検索要求部440は、ステップS137で変換された後の平文検索クエリを暗号化して秘匿化検索クエリを生成する。検索要求部440は、生成した秘匿化検索クエリをデータ管理サーバ100に送信する。
【0200】
[ステップS139]検索要求部440は、データ管理サーバ100から秘匿化検索の検索結果(秘匿化検索結果)を取得する。検索要求部440は、秘匿化検索結果から、ステップS136で選択されたダミーレコード群に属するダミーレコードのみを抽出する。このとき検索要求部440は、各レコードのフラグ値に基づいて、選択されたダミーレコード群に属するダミーレコードを特定できる。例えば検索要求部440は、選択したダミーレコード群に対応するフラグ値生成関数を用いて、検索結果に含まれるレコードのIDに対応するフラグ値を生成する。検索要求部440は、生成したフラグ値を暗号化する。そして検索要求部440は、該当レコードが、暗号化したフラグ値と同じ値のフラグ値を有する場合、そのレコードを選択した群のレコードであると判定する。
【0201】
[ステップS140]検索要求部440は、秘匿化検索結果に含まれる、抽出したダミーレコード内の項目値(ダミー値)を、予めデータ登録サーバ200から取得した暗号鍵を用いて復号する。
【0202】
[ステップS141]検索要求部440は、ステップS136で選択されたダミーレコード群に属するダミーレコードの復号されたダミー値を変換集合に基づいて逆変換し、平文の真の値が設定された検索結果を復元する。
【0203】
図30は、ダミー値の逆変換の一例を示す図である。例えば検索要求部440は、ダミー値が属する項目に対応する1以上の変換集合の中からダミー値に対応する要素を含む変換集合を特定する。
図30の例では、変換集合232bが特定されたものとする。次に検索要求部440は、ステップS136で選択したダミーレコード群の群番号を取得する。検索要求部440は、ダミー値に対応する変換集合232b内の要素から、群番号の分だけ巡回的に左の要素を、その変換集合232bから取得する。そして検索要求部440は、復号されたダミー値を、取得した要素の値(真のデータの分割キーワード)に変換する。例えば群番号「2」のダミーレコード群に属するダミーレコードのダミー値が「正常_2」の場合、そのダミー値は変換集合232bにおいて「正常_2」の左側に2つ目の要素「低血圧」に逆変換される。
【0204】
図30に示した逆変換の関係は、
図23に示した写像の逆写像となる全単射関係である。選択されたダミーレコード群に属するダミーレコード内のすべてのダミー値に対してこのような逆変換を行うことに、ダミー値に対応する分割キーワードが得られる。検索要求部440は、分割キーワード一覧に基づいて、分割キーワードを元のキーワード(真の値)に変換する。これにより真の検索結果が生成される。その後、検索要求部440は、処理をステップS145に進める。
【0205】
以下、
図29の説明に戻る。
[ステップS142]検索要求部440は、検索条件に真のデータのレコード群に対応するフラグ値を追加した検索クエリを暗号化して、データ管理サーバ100に送信する。
【0206】
[ステップS143]検索要求部440は、データ管理サーバ100から検索結果を取得する。
[ステップS144]検索要求部440は、検索結果に含まれる、真のデータのレコード群のレコード内の項目値を復号する。なお検索要求部440は、ステップS140と同様に、選択した群のレコード(真のデータのレコード)を特定する。検索要求部440は、真のデータのレコード内の分割キーワードを、分割キーワード一覧に基づいて元のキーワードに変換し、平文の真の値が設定された検索結果を得る。
【0207】
[ステップS145]検索要求部440は、平文の検索結果を出力する。
[ステップS146]検索要求部440は、すべての平文検索クエリが選択されたか否かを判断する。検索要求部440は、未選択の平文検索クエリがある場合、処理をステップS134に進める。また検索要求部440は、すべての平文検索クエリが選択され、対応する秘匿化検索クエリによる検索が終了した場合、検索処理を終了する。
【0208】
検索結果は、例えば検索結果表示画面に表示される。
図31は、検索結果表示画面の一例を示す図である。検索結果表示画面70には、例えば患者に関する検索条件と、その検索条件に適合する患者の数が表示されている。また検索結果表示画面70には、検索でヒットしたレコードの平文のデータが表示されている。
【0209】
このような検索により、G個の分割キーワードの集合ごとに項目値の出現頻度が均等化される。その結果、項目値ごと出現頻度の偏りが抑止され、頻度分析攻撃に対する安全性が向上する。しかもダミー要素を用いないことから、複数の項目のキーワードを組み合わせた頻度分析攻撃に対しても安全性が向上している。
【0210】
また端末装置400では、検索結果としてダミーレコードを取得した場合でも、そのダミーレコードのダミー値に基づいて、入力された検索条件に適合する真のデータの項目値を取得することができる。そのため、攻撃者がデータ管理サーバ100から送信された検索結果を取得したとしても、検索結果に含まれる項目値が真のデータの項目値なのかダミー値なのかを、攻撃者は判別することができない。その結果、真のデータの機密性が向上する。
【0211】
〔その他の実施の形態〕
第2の実施の形態では、病院が有するデータに対する秘匿検索の例を示したが、他の分野でも利用可能である。
【0212】
また第2の実施の形態ではデータ登録サーバ200,300とデータ管理サーバ100とを分けているが、データ登録サーバ200,300がデータ管理サーバ100の機能を有していてもよい。
【0213】
また暗号鍵による項目値の暗号化および復号には、例えば予め用意した対応辞書を利用することができる。対応辞書を利用する場合、データ登録サーバ200,300と端末装置400,500それぞれは、分割キーワード一覧に示される分割キーワードを暗号鍵で暗号化し、分割キーワードと暗号文との対応辞書を予め生成しておく。そしてデータ登録サーバ200,300と端末装置400,500それぞれは、暗号化の際には、暗号化対象の平文(分割キーワードまたは検索キーワード)を対応辞書から検索し、暗号化対象の平文を、検索でヒットした分割キーワードに対応する暗号文に変換する。また端末装置400,500それぞれは、復号の際には、復号対象の暗号文を対応辞書から検索し、復号対象の暗号文を、検索でヒットした暗号文に対応する分割キーワードに変換する。
【0214】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【符号の説明】
【0215】
1 データ登録装置
1a 記憶部
1b 処理部
2 サーバ
2a 秘匿化DB
3 データ利用装置
4a,4b 項目値群
5,5b 秘匿レコード群
6a,6b ダミーレコード群
7 登録データ
8a,8b 検索クエリ
9 検索結果
10 表示画面