IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7288194秘密情報管理プログラム、秘密情報管理方法、および秘密情報管理システム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-30
(45)【発行日】2023-06-07
(54)【発明の名称】秘密情報管理プログラム、秘密情報管理方法、および秘密情報管理システム
(51)【国際特許分類】
   G06F 21/62 20130101AFI20230531BHJP
   G06F 21/60 20130101ALI20230531BHJP
【FI】
G06F21/62 327
G06F21/62 318
G06F21/60 320
【請求項の数】 10
(21)【出願番号】P 2019132686
(22)【出願日】2019-07-18
(65)【公開番号】P2021018517
(43)【公開日】2021-02-15
【審査請求日】2022-04-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】舟久保 利昭
(72)【発明者】
【氏名】前田 一穂
(72)【発明者】
【氏名】森 達也
(72)【発明者】
【氏名】山岡 裕司
【審査官】吉田 歩
(56)【参考文献】
【文献】国際公開第2016/120975(WO,A1)
【文献】特開2014-164145(JP,A)
【文献】特開2012-248940(JP,A)
【文献】特開2007-011903(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G06F 21/60
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群に基づいて、前記秘匿レコードに含まれる1以上の項目の内の一の項目に設定可能な複数の項目値それぞれの、前記秘匿レコード群内での出現頻度を算出し、
第1項目値の出現頻度よりも出現頻度が少ない第2項目値が存在する場合、前記一の項目にダミーの項目値を設定した1以上のダミーレコードを含み、前記一の項目に前記第1項目値を設定した前記ダミーレコードよりも、前記一の項目に前記第2項目値を設定した前記ダミーレコードを、前記第1項目値の出現頻度と前記第2項目値の出現頻度との差分に基づく数だけ多く含む、ダミーレコード群を生成し、
前記秘匿レコードの識別子を変数とする第1関数の値を、真を示す第1フラグとして、前記秘匿レコードに設定し、
前記ダミーレコードの識別子を変数とし、同一の変数の値に対して前記第1関数とは異なる値を出力する第2関数の値を、偽を示す第2フラグとして、前記ダミーレコードに設定し、
前記秘匿レコードと前記ダミーレコードそれぞれの前記一の項目に設定された項目値、前記秘匿レコードに付与された前記第1フラグ、および前記ダミーレコードに付与された前記第2フラグを暗号化し、
前記秘匿レコード群と前記ダミーレコード群とを出力する、
処理を実行させる秘密情報管理プログラム。
【請求項2】
前記コンピュータに、さらに、
前記秘匿レコード群と前記ダミーレコード群との出力前に、前記秘匿レコード群と前記ダミーレコード群とを連結して一のレコード群を生成し、前記一のレコード群内の前記秘匿レコードと前記ダミーレコードとの順番をランダムに並べ替える、
処理を実行させる請求項1記載の秘密情報管理プログラム。
【請求項3】
前記ダミーレコード群の生成では、前記秘匿レコード群に含まれる前記秘匿レコードと同数の前記ダミーレコードを含む前記ダミーレコード群を、1または複数生成する、
請求項1または2に記載の秘密情報管理プログラム。
【請求項4】
前記第2フラグの設定では、複数生成された前記ダミーレコード群ごとに異なり、前記第1フラグとも異なる値の前記第2フラグを、前記ダミーレコード群それぞれに含まれる前記ダミーレコードに設定する、
請求項3記載の秘密情報管理プログラム。
【請求項5】
コンピュータに、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群に基づいて、前記秘匿レコードに含まれる1以上の項目の内の一の項目に設定可能な複数の項目値それぞれの、前記秘匿レコード群内での出現頻度を算出し、
第1項目値の出現頻度よりも出現頻度が少ない第2項目値が存在する場合、前記一の項目にダミーの項目値を設定した1以上のダミーレコードを含み、前記一の項目に前記第1項目値を設定した前記ダミーレコードよりも、前記一の項目に前記第2項目値を設定した前記ダミーレコードを、前記第1項目値の出現頻度と前記第2項目値の出現頻度との差分に基づく数だけ多く含み、ダミーの項目値を設定した1以上の前記ダミーレコードの第1項目と第2項目との間の項目値の独立性の度合いが、前記秘匿レコード群内の前記第1項目と前記第2項目との間の項目値の独立性の度合いに基づいて決定される値となるように、ダミーの項目値を設定した1以上の前記ダミーレコードの前記第1項目と前記第2項目との項目値が設定された、ダミーレコード群を生成し、
前記秘匿レコードに真を示す第1フラグを設定し、
前記ダミーレコードに偽を示す第2フラグを設定し、
前記秘匿レコードと前記ダミーレコードそれぞれの前記一の項目に設定された項目値、前記秘匿レコードに付与された前記第1フラグ、および前記ダミーレコードに付与された前記第2フラグを暗号化し、
前記秘匿レコード群と前記ダミーレコード群とを出力する、
処理を実行させる秘密情報管理プログラム。
【請求項6】
前記ダミーレコード群の生成では、前記一の項目に設定可能な項目値を、所定数の項目値を含む1以上の項目値群に所定の規則に従って分類し、前記項目値群のそれぞれについて、前記項目値群内の項目値を同一内の異なる項目値に全単射する全単射関係を定め、前記秘匿レコードの前記一の項目に設定されている既存項目値を前記全単射関係に従い変換することで、前記ダミーレコードの前記一の項目に設定する項目値を決定する、
請求項記載の秘密情報管理プログラム。
【請求項7】
コンピュータが、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群に基づいて、前記秘匿レコードの一の項目に設定可能な複数の項目値それぞれの、前記秘匿レコード群内での出現頻度を算出し、
第1項目値の出現頻度よりも出現頻度が少ない第2項目値が存在する場合、前記一の項目にダミーの項目値を設定した1以上のダミーレコードを含み、前記一の項目に前記第1項目値を設定した前記ダミーレコードよりも、前記一の項目に前記第2項目値を設定した前記ダミーレコードを、前記第1項目値の出現頻度と前記第2項目値の出現頻度との差分に基づく数だけ多く含む、ダミーレコード群を生成し、
前記秘匿レコードの識別子を変数とする第1関数の値を、真を示す第1フラグとして、前記秘匿レコードに設定し、
前記ダミーレコードの識別子を変数とし、同一の変数の値に対して前記第1関数とは異なる値を出力する第2関数の値を、偽を示す第2フラグとして、前記ダミーレコードに設定し、
前記秘匿レコードと前記ダミーレコードそれぞれの前記一の項目に設定された項目値、前記秘匿レコードに付与された前記第1フラグ、および前記ダミーレコードに付与された前記第2フラグを暗号化し、
前記秘匿レコード群と前記ダミーレコード群とを出力する、
秘密情報管理方法。
【請求項8】
データベースを有するサーバと、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群に基づいて、前記秘匿レコードの一の項目に設定可能な複数の項目値それぞれの、前記秘匿レコード群内での出現頻度を算出し、
第1項目値の出現頻度よりも出現頻度が少ない第2項目値が存在する場合、前記一の項目にダミーの項目値を設定した1以上のダミーレコードを含み、前記一の項目に前記第1項目値を設定した前記ダミーレコードよりも、前記一の項目に前記第2項目値を設定した前記ダミーレコードを、前記第1項目値の出現頻度と前記第2項目値の出現頻度との差分に基づく数だけ多く含む、ダミーレコード群を生成し、
前記秘匿レコードに真を示す第1フラグを設定し、
前記ダミーレコードに偽を示す第2フラグを設定し、
前記秘匿レコードと前記ダミーレコードそれぞれの前記一の項目に設定された項目値、前記秘匿レコードに付与された前記第1フラグ、および前記ダミーレコードに付与された前記第2フラグを暗号化し、
前記秘匿レコード群と前記ダミーレコード群とを前記サーバの前記データベースに格納するデータ登録装置と、
前記一の項目の項目値に関する検索条件と前記第1フラグの値を指定したフラグ条件とを含む真の検索クエリと、前記検索条件と前記第2フラグの値を指定した前記フラグ条件とを含む偽の検索クエリとの少なくとも一方を、前記検索条件に示される項目値と前記フラグ条件に示される前記第1フラグまたは前記第2フラグを暗号化して、前記サーバに送信し、前記サーバから、前記データベース内の前記検索クエリによる検索結果を取得するデータ利用装置と、
を有し、
前記データ登録装置は、前記ダミーレコード群の生成では、前記一の項目に設定可能な項目値を、所定数の項目値を含む1以上の項目値群に所定の規則に従って分類し、前記項目値群のそれぞれについて、前記項目値群内の項目値を同一群内の異なる項目値に全単射する全単射関係を定め、前記秘匿レコードの前記一の項目に設定されている既存項目値を前記全単射関係に従い変換することで、前記ダミーレコードの前記一の項目に設定する項目値を決定し、
前記データ利用装置は、前記第2フラグを指定した偽の前記検索クエリを前記サーバに送信する場合、前記検索条件に示される項目値を、前記全単射関係に従い置換し、置換により得られた項目値を含む前記検索クエリを送信する、
秘密情報管理システム。
【請求項9】
前記データ利用装置は、偽の前記検索クエリを前記サーバに送信した場合、偽の前記検索クエリに適合する適合レコードに含まれる前記一の項目の項目値を復号し、復号された既復号項目値を、前記全単射関係の逆写像関係に従い置換する、
請求項記載の秘密情報管理システム。
【請求項10】
前記データ利用装置は、前記秘匿レコード群および1または複数生成された前記ダミーレコード群のうちの1つを確率的に選択し、前記秘匿レコード群を選択した場合、前記第1フラグを指定した真の前記検索クエリを前記サーバに送信し、1または複数生成された前記ダミーレコード群のうちの1つを選択した場合、前記第2フラグを指定した偽の前記検索クエリを前記サーバに送信する、
請求項8または9に記載の秘密情報管理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密情報管理プログラム、秘密情報管理方法、および秘密情報管理システムに関する。
【背景技術】
【0002】
コンピュータシステムでは、ビッグデータと呼ばれる大量のデータを扱うことができる。例えばコンピュータでビッグデータを解析すれば、様々な知見を得ることが可能である。解析に用いるビッグデータの量が多いほど、そのビッグデータから多様な知識を得ることができ、得られた知識の信頼性も向上する。そこで企業などの組織ごとにビッグデータ用の独自のデータベース(DB)を構築するのではなく、複数の組織のデータを統合したDBを、複数の組織で利用することが考えられる。このような統合したDBサービスは、例えばクラウドコンピューティングシステム(以下、「クラウド」と呼ぶ)を用いて実現できる。
【0003】
複数の組織のデータを統合したDBをクラウドで管理する場合において、データ提供元の組織は、提供したデータの利用を、データ提供元の組織が許可した他の組織のみに制限したい場合がある。またデータ提供元の組織およびデータを利用する組織は、提供されるデータの内容やDB内のデータへの検索内容を、クラウドの管理者にも知られたくない場合もある。これらの場合、ビッグデータを管理するクラウドは、例えば各組織から暗号化されたデータの提供を受け、暗号データをDBに格納する。そしてクラウドは、暗号データのままデータの同一性を判定できる照合技術を用いて、データ提供元の組織から渡された鍵で暗号化された検索要求に応じて、DB内のデータ検索を行う。これにより、データ提供元の組織は、鍵を渡した組織に対してのみ、提供したデータの利用を許可することができる。またクラウドでは、提供されたデータと検索要求とが暗号化されたままであるため、クラウドの管理者にデータの内容を知られることも抑止できる。
【0004】
DB内のデータの暗号化方式には、主に確率的暗号化と確定的暗号化の2種類がある。確率的暗号化は、ある平文に対応する暗号文が複数存在し、暗号化時には、複数の暗号文のうちの一つを確率的に選択する暗号化技術である。確定的暗号化は、ある平文に対応する暗号文が1つに決まる暗号化技術である。
【0005】
DB内のデータの秘匿化に関連する技術としては、例えば強秘匿性を有する暗号化されたデータに対し、データの復号化を必要とせずに、有意義なデータベース操作を実行する方法が提案されている。また、ネットワークを介した情報取得から生じる可能性のある緩やかな情報漏洩を防止する、情報処理装置も提案されている。
【先行技術文献】
【特許文献】
【0006】
【文献】特表2001-507837号公報
【文献】国際公開第2011/013490号
【発明の概要】
【発明が解決しようとする課題】
【0007】
確定的暗号化は、インデックスなどを用いるDB検索技術が使用可能であり、検索性能が高い。その反面、確定的暗号化で暗号化されたデータの安全性は十分とはいえない。すなわち、確率的暗号化では、同じ平文でも異なる暗号文が生成されるため、頻度分析攻撃に対する安全性が高いのに対して、確定的暗号化では、同じ平文が同じ暗号文となるため、頻度分析攻撃が可能であり、確率的暗号化に比べて安全性が落ちる。
【0008】
1つの側面では、本件は、暗号化されたデータの頻度分析攻撃に対する安全性を向上させることを目的とする。
【課題を解決するための手段】
【0009】
1つの案では、コンピュータに以下の処理を実行させる秘密情報管理プログラムが提供される。
コンピュータは、秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群に基づいて、秘匿レコードに含まれる1以上の項目の内の一の項目に設定可能な複数の項目値それぞれの、秘匿レコード群内での出現頻度を算出する。次にコンピュータは、第1項目値の出現頻度よりも出現頻度が少ない第2項目値が存在する場合、一の項目にダミーの項目値を設定した1以上のダミーレコードを含み、一の項目に第1項目値を設定したダミーレコードよりも、一の項目に第2項目値を設定したダミーレコードを、第1項目値の出現頻度と第2項目値の出現頻度との差分に基づく数だけ多く含む、ダミーレコード群を生成する。次にコンピュータは、秘匿レコードに真を示す第1フラグを設定する。次にコンピュータは、ダミーレコードに偽を示す第2フラグを設定する。次にコンピュータは、秘匿レコードとダミーレコードそれぞれの一の項目に設定された項目値、秘匿レコードに付与された第1フラグ、およびダミーレコードに付与された第2フラグを暗号化する。そしてコンピュータは、秘匿レコード群とダミーレコード群とを出力する。
【発明の効果】
【0010】
1態様によれば、暗号化されたデータの頻度分析攻撃に対する安全性を向上させることができる。
【図面の簡単な説明】
【0011】
図1】第1の実施の形態に係る秘密情報管理システムの一例を示す図である。
図2】秘密情報管理システムの一例を示す図である。
図3】データ管理サーバのハードウェアの一構成例を示す図である。
図4】秘密情報管理システムの機能を示すブロック図である。
図5】平文の患者データのDBの一例を示す図である。
図6】ダミーデータを用いた出現頻度の攪乱処理の一例を示す図である。
図7】ダミーレコードに設定する項目値の第1の決定例を示す図である。
図8】ダミーレコードに設定する項目値の第2の決定例を示す図である。
図9】一般化した頻度分布と集合ごとの出現頻度平準化に用いるダミー値の頻度イメージを示す図である。
図10】k=3の場合の最小のダミーレコード数の判断基準の一例を示す図である。
図11】レコード追加の第1の例を示す図である。
図12】レコード追加の第2の例を示す図である。
図13】フラグを付与した登録データの一例を示す図である。
図14】データ登録処理の手順の一例を示すフローチャートである。
図15】ダミーデータ生成処理の手順の一例を示すフローチャートである。
図16】検索処理の手順の第1の例を示すフローチャートである。
図17】項目間の独立性の解析例を示す図である。
図18】関数を用いてフラグ値を算出する例を示す図である。
図19】第3の実施の形態におけるデータ登録処理の一例を示すフローチャートである。
図20】検索処理の手順の第2の例を示すフローチャートである。
図21】複数の項目を結合した登録データの一例を示す図である。
図22】第4の実施の形態におけるダミー値の追加例を示す図である。
図23】第4の実施の形態におけるデータ登録処理の一例を示すフローチャートである。
図24】真のデータのレコードの削除が困難な例を示す図である。
図25】変換集合の生成例を示す図である。
図26】項目値の変換例を示す図である。
図27】ダミー値の生成例を示す図である。
図28】第5の実施の形態における登録データの一例を示す図である。
図29】第5の実施の形態における頻度攪乱後の頻度分布の一例を示す図である。
図30】ダミー要素を追加した変換集合の一例を示す図である。
図31】変換集合を用いて頻度攪乱を行った際の各群の頻度の関係を示す図である。
図32】変換集合を用いた頻度攪乱前後の頻度の第1の例を示す図である。
図33】変換集合を用いた頻度攪乱前後の頻度の第2の例を示す図である。
図34】一般化した変換集合一覧を示す図である。
図35】第5の実施の形態におけるデータ登録処理の手順の一例を示すフローチャートである。
図36】第5の実施の形態におけるダミーデータ生成処理の手順の一例を示すフローチャートである。
図37】第5の実施の形態における検索処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず、第1の実施の形態について説明する。
【0013】
図1は、第1の実施の形態に係る秘密情報管理システムの一例を示す図である。図1には、秘密情報管理システムを用いた秘密情報管理方法の実現例を示している。秘密情報管理システムは、データ登録装置1、サーバ2、およびデータ利用装置3を有している。データ登録装置1、サーバ2、およびデータ利用装置3それぞれは、例えば秘密情報管理方法を実現するための各装置における処理手順が記述されたプログラムを実行することにより、秘密情報管理方法における各装置の処理を実施することができる。
【0014】
データ登録装置1は、秘密情報管理方法を実現するために、記憶部1aと処理部1bとを有する。記憶部1aは、例えばデータ登録装置1が有するメモリ、またはストレージ装置である。処理部1bは、例えばデータ登録装置1が有するプロセッサ、または演算回路である。図示していないが、サーバ2とデータ利用装置3も、記憶部と処理部とを有する。例えばサーバ2の記憶部は、データベース(DB)2aを記憶する。
【0015】
データ登録装置1の記憶部1aは、秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群4を記憶する。
データ登録装置1の処理部1bは、秘匿レコード群4に基づいて、秘匿レコードに含まれる1以上の項目の内の一の項目に設定可能な複数の項目値それぞれの、秘匿レコード群4内での出現頻度を算出する(ステップS1)。このとき第1項目値よりも出現頻度が少ない第2項目値が存在する場合がある。この場合、処理部1bは、一の項目にダミーの項目値を設定した1以上のダミーレコードを含むダミーレコード群5を生成する(ステップS2)。生成されるダミーレコード群5は、一の項目に第1項目値を設定したダミーレコードよりも、一の項目に第2項目値を設定したダミーレコードを、第1項目値の出現頻度と第2項目値の出現頻度との差分に基づく数だけ多く含む。例えば処理部1bは、秘匿レコード群4の一の項目に設定可能な複数の項目値のうち、出現頻度が同じ項目値が他に存在しない項目値を第1項目値とし、第1項目値より出現頻度が少ない項目値を第2項目値とする。
【0016】
例えば処理部1bは、秘匿レコード群4に含まれる秘匿レコードと同数のダミーレコードを含むダミーレコード群5を生成する。なお処理部1bは、秘匿レコード群4に含まれる秘匿レコードと同数のダミーレコードを含むダミーレコード群5を、複数生成してもよい。
【0017】
また処理部1bは、一の項目に項目値が未設定のダミーレコードを所定数生成し、生成したダミーレコードを順番に選択し、選択したダミーレコードに、秘匿レコードとダミーレコードを合わせたレコード群において出現頻度が最も少ない項目値を設定してもよい。
【0018】
ダミーレコード群5の生成後、処理部1bは、秘匿レコードに真を示す第1フラグを設定すると共に、ダミーレコードに偽を示す第2フラグを設定する(ステップS3)。ダミーレコード群5が複数生成された場合、処理部1bは、例えば、複数生成されたダミーレコード群5ごとに異なり、第1フラグとも異なる値の第2フラグを、ダミーレコード群5それぞれに含まれるダミーレコードに設定する。
【0019】
次に処理部1bは、秘匿レコードとダミーレコードそれぞれの一の項目に設定された項目値、秘匿レコードに付与された第1フラグ、およびダミーレコードに付与された第2フラグを暗号化する(ステップS4)。適用する暗号化方式は、例えば確定的暗号化方式である。そして処理部1bは、秘匿レコード群4とダミーレコード群5とを含む登録データ6を出力する。例えば処理部1bは、登録データ6をサーバに送信する(ステップS5)。送信された登録データ6は、サーバ2によってDB2aに登録される。なお、処理部1bは、秘匿レコード群4とダミーレコード群5との送信前に、秘匿レコード群4とダミーレコード群5とを連結して一のレコード群を生成し、一のレコード群内の秘匿レコードとダミーレコードとの順番をランダムに並べ替えてもよい。
【0020】
データ利用装置3は、一の項目の項目値に関する検索条件と第1フラグの値を指定したフラグ条件とを含む真の検索クエリ7と、検索条件と第2フラグの値を指定したフラグ条件とを含む偽の検索クエリ10との少なくとも一方を、サーバ2に送信する。その際、データ利用装置3は、検索条件に示される項目値とフラグ条件に示される第1フラグまたは第2フラグを暗号化する。このときの暗号化方式は、データ登録装置1が登録データ6の暗号化に用いた暗号化方式である。またデータ登録装置1が暗号鍵を用いて登録データ6を暗号化した場合、データ利用装置3も同じ暗号鍵を用いて暗号化を行う。そしてデータ利用装置3は、サーバ2から、DB2a内の検索クエリ7,10による検索結果8,11として取得する。
【0021】
なお、データ利用装置3は、一の項目の項目値に関する検索条件に指定された項目値と異なる項目値を指定した偽の検索条件を、偽の検索クエリ10に指定してもよい。
データ利用装置3は、一の項目の項目値に関する検索条件と、第1フラグの値を指定したフラグ条件とを含む真の検索クエリ7と、一の項目の項目値に関する検索条件と、第2フラグの値を指定したフラグ条件とを含む偽の検索クエリ10との両方を送信してもよい。データ利用装置3は、検索クエリ7と検索クエリ10との両方を送信する場合、どちらを先に送信するのかを、例えば乱数を用いて無作為(ランダム)に決定する。
【0022】
例えばデータ利用装置3は、第1フラグの値を指定した真の検索クエリ7をサーバ2に送信する(ステップS7)。サーバ2は、検索クエリ7に適合するレコードを、DB2aから検索する(ステップS8)。検索クエリ7には、真を示す第1フラグの値が指定されているため、適合するレコードは、すべて秘匿レコードである。この場合、データ利用装置3は、検索結果8をサーバ2から取得すると、表示画面9に検索結果を表示する(ステップS9)。
【0023】
またデータ利用装置3は、第2フラグの値を指定した偽の検索クエリ10をサーバ2に送信する(ステップS10)。サーバ2は、検索クエリ10に適合するレコードを、DB2aから検索する(ステップS11)。検索クエリ10には、偽を示す第2フラグの値が指定されているため、適合するレコードは、すべてダミーレコードである。この場合、データ利用装置3は、検索結果11をサーバ2から取得すると、その検索結果11を破棄する(ステップS12)。
【0024】
例えばデータ利用装置3の利用者が、血液型が「B型」の人の性別の人数を知りたい場合、利用者は、データ利用装置3に血液型「B型」という検索条件を入力する。データ利用装置3は、真の検索クエリ7を送信する場合、血液型「B」でありかつフラグ「0」であるレコードを検索する検索クエリ7を生成する。図1の例では、検索クエリ7に対して1つの性別が「男」の1件のレコードのみが適合し、検索結果8においてそのレコードが示される。データ利用装置3は、B型の人は、男が1名、女が0名であることを表示する。
【0025】
またデータ利用装置3は、偽の検索クエリ10を送信する場合、血液型「B」でありかつフラグ「1」であるレコードを検索する検索クエリ10を生成する。偽の検索クエリの条件は、真の検索クエリで指定された血液型「B」以外の値を無作為に選択して設定してもよい。図1の例では、検索クエリ10に対して1つの性別「女」の1件のレコードのみが適合し、検索結果11においてそのレコードが示される。偽の検索クエリ10に対する検索結果11に示されるレコードはダミーレコードであるため、データ利用装置3は、検索結果11を破棄する。
【0026】
このようにサーバ2のDB2aへのデータの登録、およびそのデータの検索を行うことで、登録するデータを確定的暗号化方式で暗号化した場合の頻度分析攻撃に対する安全性が向上する。すなわち、ダミーレコード群5は、第2項目値よりも出現頻度が高い第1項目値を設定したダミーレコードよりも、第2項目値を設定したダミーレコードを、第1項目値の出現頻度と第2項目値の出現頻度との差分に基づく数だけ多く含んでいる。これにより、登録データ6では、第1項目値と第2項目値との出現頻度が同程度となり、第1項目値または第2項目値の出現頻度が他のいずれの項目値の出現頻度とも大きく異なる(単独頻度となる)ことが抑止される。
【0027】
例えば秘匿レコード群4の項目「性別」には、項目値として「男」または「女」が設定可能であるものとする。図1に示す秘匿レコード群4では、項目「性別」に項目値「男」が設定されたレコードが4件存在し、項目「性別」に項目値「女」が設定されたレコードは存在しない。そこで処理部1bは、ダミーレコード群5には、項目「性別」の項目値が「女」のレコードを4件含め、項目「性別」の項目値が「男」のレコードを0件としている。これにより、登録データ6では、項目「性別」の項目値が「男」のレコードが4件、項目「性別」の項目値が「女」のレコードが4件となっている。すなわち、項目値「男」と項目値「女」の出現頻度は同等であり、DB2aにおいては単独頻度の項目値はない。同様に、項目「血液型」についても、登録データ6では、すべての項目値について出現するレコード数が「2」となり、DB2aにおいては単独頻度の項目値はない。
【0028】
これは、秘匿レコード群4における項目値の出現頻度の頻度攪乱が適切に行われたことを意味する。頻度攪乱が適切に行われたことで、DB2aに格納された登録データ6は、頻度分析攻撃に対する安全性が向上している。
【0029】
またデータ利用装置3が、真の検索クエリ7と偽の検索クエリ10との両方をサーバ2に送信することで、第1フラグと第2フラグのどちらが設定されたデータが秘匿化データであるかを、第三者から秘匿することができる。また、真の検索クエリと偽の検索クエリの検索条件を変えることで、どちらのクエリの検索条件が真であるかを第三者から秘匿することができる。例えばデータ利用装置3が真の検索クエリ7を用いた検索要求のみを行うと、サーバ2から応答される検索結果8に含まれるレコードが、秘匿レコードであることが第三者に知られてしまう。それに対して、データ利用装置3が真の検索クエリ7を用いた検索要求に加えて、データ利用装置3が偽の検索クエリ10を用いた検索要求を順不同で行えば、検索結果8,11のうちのどちらが秘匿レコードであるのかが、第三者には不明となる。
【0030】
なおデータ利用装置3は、真の検索クエリ7と偽の検索クエリ10とを纏めた1つの検索クエリを生成し、その検索クエリをサーバ2に送信することもできる。この場合、フラグ条件において、第1フラグと第2フラグとの何れでも適合するように指定される。データ利用装置3がこのような検索クエリをサーバ2に送信した場合、例えばサーバ2からは、真の検索クエリ7と偽の検索クエリ10とのいずれかに適合するレコードが検索結果として応答される。データ利用装置3は、検索結果内のレコードに付与されたフラグが第1フラグか第2フラグかを判断する。そしてデータ利用装置3は、第1フラグが付与されたレコードを真の検索結果として取得し、第2フラグが付与されたレコードを破棄する。
【0031】
データ登録装置1の処理部1bは、ダミーレコード群を生成する場合、一の項目に設定可能な項目値を複数の集合に分類し、集合ごとに項目値の出現頻度が同程度になるように、ダミーレコードに設定する項目値を決定してもよい。例えば処理部1bは、集合内で出現頻度が最大の項目値を第1項目値とし、集合内の第1項目値以外の項目値それぞれを第2項目値として、一の項目に第1項目値または第2項目値を設定したダミーレコードを生成する。これにより、すべての項目値の出現頻度を同程度にする場合に比べて、ダミーレコード数を削減することができる。ダミーレコード数が削減できれば、DB2aの資源の消費量を減らすことができると共に、データ登録や検索の処理効率も向上する。
【0032】
処理部1bは、一の項目に設定可能な項目値を複数の集合に分類する場合、例えば秘匿レコード群における出現頻度が多い方からk個(kは2以上の整数)ずつの集合を生成する。そして処理部1bは、複数の項目値の数をkで除算したときに剰余がある場合、出現頻度が低い方からkと剰余の合計値分の個数の項目値を同一の集合に含める。1つの集合に含める項目値の数kを適切に定めることで、データの安全性を損なわずにダミーレコード数を削減することができる。
【0033】
秘匿レコード群4に複数の項目が含まれる場合、異なる項目の項目値間の独立性に基づいて、第三者が、DB2aに格納されたレコードを秘匿レコード群4とダミーレコード群5とに分け、どちらが秘匿レコード群4であるか特定できる可能性がある。独立性を用いた攻撃手法の詳細は、第3の実施の形態において説明する(図17参照)。このような場合、処理部1bは、例えば秘匿レコードの識別子を変数とする第1関数の値を、第1フラグとして秘匿レコードに設定し、ダミーレコードの識別子を変数とし、同一の変数の値に対して第1関数とは異なる値を出力する第2関数の値を、第2フラグとしてダミーレコードに設定する。これにより、フラグ値に基づいて、複数のレコードを秘匿レコード群4とダミーレコード群5とに分類することができず、独立性を用いた攻撃が困難となる。その結果、データの機密性が向上する。
【0034】
また独立性を用いた攻撃を抑止するため、処理部1bは、秘匿レコード群4内の複数の項目を、複数の項目それぞれの項目値を含む1つの項目に統合し、統合した項目を一の項目として、暗号化などの処理を行ってもよい。項目が1つとなることで、複数の項目の項目値の独立性を比較することができなくなり、独立性を用いた攻撃が困難となる。
【0035】
さらに処理部1bは、ダミーレコード群5の生成時に、秘匿レコード群4内の第1項目と第2項目との間の項目値の独立性に、ダミーレコード群5内の第1項目と第2項目の間の項目値の独立性を合わせてもよい。例えば処理部1bは、ダミーレコード群5内の各項目間の項目値の独立性の度合いが、秘匿レコード群4内の各項目間の項目値の独立性の度合いに基づいて決定される値となるように、ダミーレコード群5内の各項目の項目値を決定する。独立性を一致させることで、独立性を用いた攻撃を抑止できる。
【0036】
独立性を一致させる場合、例えば処理部1bは、一の項目に設定可能な項目値を、所定数の項目値を含む1以上の項目値群に所定の規則に従って分類する。そして処理部1bは、項目値群内のそれぞれについて、項目値群内の項目値を同一郡内の異なる項目値に全単射する全単射関係を定める。そして処理部1bは、秘匿レコードの一の項目に設定されている既存項目値を全単射関係に従い変換することで、ダミーレコードの一の項目に設定する項目値を生成する。このような手順でダミーレコード群5を生成することで、秘匿レコード群4内の第1項目と第2項目との間の項目値の独立性に、ダミーレコード群5内の第1項目と第2項目の間の項目値の独立性が一致する。
【0037】
項目値の変換によりダミーレコード群5が生成された場合、データ利用装置3は、偽の検索クエリ10に対する検索結果11から、真の検索クエリ7に応じた検索結果8を生成することが可能である。例えばデータ利用装置3は、第2フラグを指定した偽の検索クエリ10をサーバ2に送信する場合、検索条件に示される項目値を、全単射関係に従い変換し、変換により得られた項目値を含む検索クエリ10を送信する。そしてデータ利用装置3は、偽の検索クエリ10をサーバ2に送信した場合、検索結果11を破棄せずに、偽の検索クエリ10に適合する適合レコードに含まれる一の項目の項目値を復号し、復号された既復号項目値を、全単射関係の逆写像関係に従い変換する。
【0038】
このようにして、偽の検索クエリ10に応じた検索結果11から、真の検索クエリ7に応じた検索結果8を生成できる。そのためデータ利用装置3は、真の検索クエリ7と偽の検索クエリ10とのいずれか一方を送信すれば、検索条件に適合する秘匿レコードを取得できる。その結果、データ検索のための通信負荷が軽減される。
【0039】
なおデータ利用装置3は、例えば秘匿レコード群4および1または複数生成されたダミーレコード群5のうちの1つを確率的に選択し、秘匿レコード群4を選択した場合、第1フラグを指定した真の検索クエリ7をサーバ2に送信する。他方、データ利用装置3は、1または複数生成されたダミーレコード群5のうちの1つを選択した場合、第2フラグを指定した偽の検索クエリ10をサーバ2に送信する。これにより、真の検索クエリ7を送信するのか偽の検索クエリ10を送信するのかが、無作為に決定される。その結果、第三者が検索クエリや検索結果を盗み見た場合であっても、検索結果8または検索結果11が秘匿レコードであるのかダミーレコードであるのかの判別が困難となる。
【0040】
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、多数の医療機関が有する患者データを、患者データ収集活用基盤を用いて有効活用するものである。例えば患者データ収集活用基盤により、複数の病院のデータを統合してビッグデータ化し、ビッグデータを複数の製薬企業で活用できるようにする。これにより、製薬企業や病院は、新薬開発のための調査(対象疾患の患者数や所在地域など)等を容易に把握できるようになる。
【0041】
患者データ収集活用基盤は、ICT(Information and Communications Technology)企業が管理するクラウドを用いて実現するのが効率的である。クラウドを用いることで、病院や製薬企業からのビッグデータへのアクセスが容易となる。しかしながら、患者データは要配慮個人情報であり、法的に参照が許される手続きを経たとしても、漏洩や目的外利用のリスクを考慮し、クラウドの管理者に対しても秘匿しておくのが適切である。また製薬企業による検索の内容は製薬企業の戦略に関する重要な企業秘密に結びつくため、検索内容についても秘匿しておくことが望ましい。そこで、患者データ収集活用基盤を実現するクラウドは、例えば暗号化したまま検索可能な暗号化方式を用いて、暗号化された患者データをDBで管理すると共に、暗号化された検索キーを用いて、暗号文のままでデータ検索を行う。これにより、クラウドの管理者に対しても、患者データと検索クエリの内容を秘匿しておくことができる。
【0042】
ここで、複数の組織(例えば病院)のデータを同じ仕組みで使用する場合、DBのフォーマットや格納する属性名と値は、共通の仕様として公開される。しかもシステム開発も担うクラウドの管理者は、秘匿化のアルゴリズムを熟知している。すると、クラウドの管理者の中に悪意を有する者が存在した場合、患者データを暗号文のまま管理するだけでは不十分な場合があり得る。
【0043】
ここで、絞り込み検索などを用いて効率よく検索を行うために、データは行列形式で格納することを想定する。この場合、例えば項目「性別」のラベルが振られた列では平文候補が「男」または「女」の2種類しかなく、秘匿化DB内には同じ平文に基づく暗号文が多数存在することとなる。そして、攻撃者となりうるクラウドの管理者はこれらの暗号文を比較参照できる。
【0044】
さらに、大きな病院では広報の一環として疾患別患者数などの情報を公開している。同様にあらゆる情報について、このような頻度情報が公開される可能性はあるため、すべてのデータの頻度分布は公知となる場合がある。また、医療情報は日々新たな情報が追加され、利活用者は最新の情報を求める。よって、秘匿化DBは逐次最新の平文DBとの差分が反映できることが重要である。
【0045】
以上により、第2の実施の形態では、以下の条件(i)~(v)下でも秘匿化DBの内容や検索内容が、秘匿化DBを管理するクラウド管理者を含む攻撃者に対し秘匿できることを、セキュリティ要件とする。
(i)平文の種類や値は公知であり、極めて種類が少ない場合もあり得る。
(ii)攻撃者は、秘匿化DB内に存在するすべての暗号文と暗号化された検索クエリおよびこれに合致した秘匿化DB内の暗号文をすべて参照可能である。
(iii)意図的に秘密情報として管理する情報(秘密鍵)以外の、暗号化や照合のアルゴリズムは公知である。
(iv)すべてのデータの頻度分布は公知である。
(v)秘匿化DBは逐次更新され、攻撃者は差分情報を参照可能である。
【0046】
条件(i)~(v)を満たす秘匿化DBがあるとき、容易に想定される攻撃手法としては総当たり攻撃が考えられる。平文の種類が少なく公知なため、暗号化鍵が公知である場合、攻撃者は全種類の平文を暗号化して平文と暗号文の辞書を作成することで、秘匿化DB内のデータや検索クエリを容易に解読できてしまう。よって、セキュリティ要件を満たすには、暗号化鍵は秘密鍵とすることとなる。
【0047】
また、秘匿化DBの管理者でもある攻撃者は照合判定の結果を参照できる。そのため、ある検索クエリに対し一致判定された暗号文はすべて同じ平文に対応することが解ってしまう。よって、同じ平文でも暗号化するたびに異なる暗号文となる確率的暗号を用いても、攻撃者は同じ平文が同じ暗号文となる確定的暗号のような暗号文に変換できてしまう。そして、攻撃者はデータの頻度分布を知っているため、暗号文の頻度と比較することで容易に秘匿データの内容を推定できてしまう。頻度分布を正確に知らない場合でも、例えば産婦人科の性別データを参照すると、多い方の暗号文の平文は「女」であると容易に特定できる。よって、暗号化だけでなく頻度攪乱などの対策を採ることが重要となる。
【0048】
そこで第2の実施の形態では、条件(i)~(v)下でも秘匿化DBの内容や検索内容を、攻撃者に対し秘匿できる秘密情報管理システムを提供する。第2の実施の形態に係る秘密情報管理システムでは、ダミーデータを追加することで頻度攪乱を実現する。この際、秘密情報管理システムは、データの増加率は一定に保ち、不要なストレージや検索処理の増加を防止する。そして秘密情報管理システムは、真の値1つに対し、少なくともk-1個(kは、2以上の整数)のダミー値を追加することで、ある暗号文がk個の平文のうちのどれかであるということまでしか絞り込めないようにする。すなわち秘密情報管理システムは、頻度が同程度の暗号文が少なくともk個となるようにする。さらに秘密情報管理システムは、可能な範囲で頻度分布を一様に近付ける。
【0049】
図2は、秘密情報管理システムの一例を示す図である。第2の実施の形態では、患者データ収集活用基盤12がクラウドによって構築されている。患者データ収集活用基盤12はデータ管理サーバ100を有している。データ管理サーバ100は、患者データを暗号文のままで管理するコンピュータである。データ管理サーバ100は、ネットワーク20を介して、病院13,14のデータ登録サーバ200,300と製薬企業15,16の端末装置400,500に接続されている。
【0050】
病院13のデータ登録サーバ200は、病院13で受診した患者の電子カルテなどの患者データを蓄積し、その患者データを暗号化してデータ管理サーバ100に提供するコンピュータである。同様に、病院14のデータ登録サーバ300は、病院14で受診した患者の電子カルテなどの患者データを蓄積し、その患者データを暗号化してデータ管理サーバ100に提供する。
【0051】
製薬企業15の端末装置400は、データ管理サーバ100で管理されている患者データを検索するために、製薬企業15の社員が使用するコンピュータである。製薬企業16の端末装置500は、データ管理サーバ100で管理されている患者データを検索するために、製薬企業16の社員が使用するコンピュータである。
【0052】
このような秘密情報管理システムは、例えば医療情報を活用した新薬開発の効率化に有用である。例えば、製薬企業15,16が、治験を行う場合、対象疾患の患者がどの程度存在するか等を考慮して計画を立案することで、治験の成功率を向上させることが出来る。そこで、患者データ収集活用基盤12で多数の病院13,14に分散する患者の電子カルテから抽出した患者データを集中管理することで、目的の疾患を有する患者の情報を容易に得ることが可能となる。
【0053】
図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)などの電子回路で実現してもよい。
【0054】
メモリ102は、データ管理サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0055】
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
【0056】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0057】
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
【0058】
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0059】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
【0060】
機器接続インタフェース107は、データ管理サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
【0061】
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【0062】
データ管理サーバ100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なおデータ登録サーバ200,300および端末装置400,500も、データ管理サーバ100と同様のハードウェアにより実現することができる。さらに図1に示したデータ登録装置1、サーバ2、およびデータ利用装置3も、データ管理サーバ100と同様のハードウェアにより実現することができる。
【0063】
データ管理サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。データ管理サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、データ管理サーバ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またデータ管理サーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0064】
次に、秘密情報管理システムの各装置の機能について説明する。
図4は、秘密情報管理システムの機能を示すブロック図である。データ管理サーバ100は、秘匿化DB110、データ登録部120、鍵提供依頼部130、および検索部140を有する。
【0065】
秘匿化DB110は、データ登録サーバ200,300から収集した、暗号文の患者データを、暗号文のまま管理するDBである。
データ登録部120は、データ登録サーバ200,300からのデータ登録要求に応じて、暗号文の患者データを秘匿化DB110に登録する。
【0066】
鍵提供依頼部130は、端末装置400,500からの鍵取得要求を受信すると、端末装置400,500への鍵提供依頼を、データ登録サーバ200,300に送信する。
検索部140は、端末装置400,500からの暗号化された検索キーを含むデータ検索要求に応じて、秘匿化DB110に登録された患者データを検索する。この際、検索部140は、患者データと検索キーとを暗号文のまま照合し、検索キーに合致する患者データに示される患者ID(Identification)を、秘匿化DB110から抽出する。そして検索部140は、抽出した患者IDを、検索要求の送信元の端末装置400,500に送信する。
【0067】
データ登録サーバ200は、DB210、鍵記憶部220、鍵生成部230、データ登録要求部240、および鍵提供部250を有する。
DB210は、患者データを平文で格納するDBである。
【0068】
鍵記憶部220は、データ管理サーバ100に登録する患者データの暗号化に使用する暗号鍵を記憶する。暗号鍵は、データ管理サーバ100からアクセスできないように管理される。
【0069】
鍵生成部230は、暗号鍵を生成する。鍵生成部230は、生成した暗号鍵を鍵記憶部220に格納する。
データ登録要求部240は、データ管理サーバ100への登録対象の患者データの暗号文を含むデータ登録要求を、データ管理サーバ100に送信する。例えばデータ登録要求部240は、まず登録対象の患者データをDB210から取得し、秘匿化DB110のフォーマットに合わせて、患者データを加工する。この際、データ登録要求部240は、送信するデータ登録要求にダミーデータを含める。さらにデータ登録要求部240は、暗号鍵を用いて、秘匿化DB110に登録する項目値ごとに、患者データに含まれる値を暗号化する。そしてデータ登録要求部240は、項目値ごとに暗号化された、暗号文の患者データを含むデータ登録要求を、データ管理サーバ100に送信する。
【0070】
鍵提供部250は、データ管理サーバ100からの鍵提供依頼に応じて、登録した患者データの利用を許可する製薬企業の端末装置へ、暗号鍵を送信する。なお鍵提供部250は、暗号鍵を、データ管理サーバ100を経由せずに端末装置に送信する。データ管理サーバ100を経由せずに暗号鍵を送信することで、暗号鍵がデータ管理サーバ100から隔離される。その結果、データ管理サーバ100の管理者による、秘匿化DB110内のデータの復号が抑止される。
【0071】
以上、データ登録サーバ200が有する機能を説明したが、データ登録サーバ300もデータ登録サーバ200と同様の機能を有する。
端末装置400は、鍵記憶部410、鍵取得部420、および検索要求部430を有する。
【0072】
鍵記憶部410は、検索要求に含める検索キーの暗号化に使用する暗号鍵を記憶する。暗号鍵は、データ管理サーバ100からアクセスできないように管理される。
鍵取得部420は、データ登録サーバ200,300で提供される暗号鍵を取得する。例えば鍵取得部420は、データ管理サーバ100に、鍵取得要求を送信する。するとデータ管理サーバ100の鍵提供依頼部130により、データ登録サーバ200,300に鍵提供依頼が送信される。鍵提供依頼に応じて、例えばデータ登録サーバ200の鍵提供部250が、暗号鍵を端末装置400に送信する。そして鍵取得部420は、端末装置400から送信された暗号鍵を取得する。鍵取得部420は、取得した暗号鍵を、鍵記憶部410に格納する。
【0073】
検索要求部430は、患者データの利用者が入力した検索キーを取得する。次に検索要求部430は、取得した検索キーを、暗号鍵を用いて暗号化し、暗号文の検索キーを含む検索要求をデータ管理サーバ100に送信する。検索要求部430は、データ管理サーバ100から検索結果を受信すると、検索結果の内容(例えば検索キーに合致した患者データの患者ID)を表示する。なお検索要求部430は、ダミーデータを検索対象とする検索要求を送信することもできる。
【0074】
以上、端末装置400が有する機能を説明したが、端末装置500も端末装置400と同様の機能を有する。
図4に示した機能により、データ管理サーバ100の管理者に対しても患者データと検索クエリの内容を秘匿したまま、データ管理サーバ100において患者データを管理すると共に、製薬企業15,16による患者データの利用を可能とすることができる。なお、図4に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【0075】
次に、データ登録サーバ200,300が有する平文の患者データのDB210について説明する。
図5は、平文の患者データのDBの一例を示す図である。DB210には、例えば患者ごとのレコードが、レコードの識別子(ID)に対応付けて登録されている。各レコードには、項目名で示されたフィールドに、その項目名に対応する項目値が設定されている。図5の例では、項目名として「血液型」がある。項目名「血液型」のフィールドには、患者の血液型が設定される。データ登録サーバ200のDB210に登録されている各レコード内の値は、例えば平文の文字コードである。
【0076】
データ登録要求部240は、患者のレコードをデータ管理サーバ100に登録する場合、そのレコードに設定された値(平文)を、確定的暗号化技術により暗号化する。そして暗号化されたレコードが、データ管理サーバ100の秘匿化DB110に登録される。なお、第2の実施の形態の技術を適用せずに、確定的暗号化により暗号化したデータを秘匿化DB110に登録すると、頻度分析攻撃に対して脆弱となる。
【0077】
頻度分析攻撃は、平文と暗号文に使用される文字や文字列の出現頻度を手掛りとして秘匿データを推定し、盗み見る攻撃手法である。元の平文の項目値に偏りがある場合に、その平文を暗号化した暗号文は、頻度分析攻撃に対して脆弱となる。例えば日本人の血液型の統計情報に基づいて、日本人の患者に関する血液型の項目値は、「O」よりも「A」の方が多いことが予想できる。この場合、項目値を確定的暗号化により暗号化すると、「O」の文字の暗号文よりも、「A」の文字の暗号文の方が、出現頻度が高くなる。このように確定的暗号化では、平文での項目値の出現頻度の偏りが、暗号文にも引き継がれる。そのため攻撃者は、暗号文の出現頻度を解析することで、その暗号文に対応する平文を予測することが可能となる。
【0078】
そこで頻度分析攻撃に対する安全性を高めるために、ダミーデータを用いて、元の平文の出現頻度を攪乱させることが考えられる。このとき、元の平文での項目値の種類や、各項目値の出現頻度を考慮せずにダミーデータ内の各項目の項目値(ダミー値)を追加しても、出現頻度を適切に攪乱させることはできない。
【0079】
第2の実施の形態に係る秘密情報管理システムでは、元の平文のデータにおける項目値の出現頻度を考慮して、適切な内容のダミー値を有するダミーデータを登録することで、確実な頻度攪乱を実現する。
【0080】
図6は、ダミーデータを用いた出現頻度の攪乱処理の一例を示す図である。データ登録サーバ200は、データ33の使用を許可する製薬企業(例えば製薬企業15)の端末装置400へ、鍵生成部230が生成した暗号鍵31を送信する(ステップS11)。例えば端末装置400の鍵取得部420がデータ管理サーバ100に鍵取得要求を送信する。データ管理サーバ100では、鍵提供依頼部130が、データ登録サーバ200に暗号鍵31の提供を依頼する。データ登録サーバ200の鍵提供部250は、暗号鍵31の提供依頼を受信すると、管理者による暗号鍵31の提供の許可を示す入力を受け付ける。鍵提供部250は、暗号鍵31の提供を許可する旨の入力が行われると、暗号鍵31を鍵記憶部220から取得し、取得した暗号鍵31と同じ暗号鍵32を、データ管理サーバ100を経由させずに端末装置400に送信する。端末装置400では、鍵取得部420が受信した暗号鍵32を鍵記憶部410に格納する。これにより、データ登録サーバ200と端末装置400とで、暗号鍵の共有化が図られる。
【0081】
その後、データ登録サーバ200は、DB210内のデータ33に対して、ダミーデータ34を追加する(ステップS12)。例えばデータ登録要求部240は、DB210内のデータ33に含まれるレコードの数と同数のレコード(ダミーレコード)を、ダミーデータ34として追加する。この際、データ登録要求部240は、追加したダミーレコードの項目値として、真のデータ33に設定されている項目値を用い、各項目値の出現頻度の偏りを減少させる。さらにデータ登録要求部240は、各レコードに、真のデータ33のレコードなのかダミーレコードなのかを区別するためのフラグ35を付与する。例えば、真のデータ33のレコードには値が「0」のフラグが付与され、ダミーレコードには値が「1」のフラグが付与される。
【0082】
データ登録要求部240は、データ33とダミーデータ34との各レコード内の項目値(フラグを含む)を、暗号鍵31を用いて項目値ごとに暗号化して、登録データ36を生成する(ステップS13)。そしてデータ登録要求部240は、登録データ36を含むデータ登録要求を、データ管理サーバ100に送信する(ステップS14)。データ管理サーバ100では、データ登録部120が、登録データ36を受信し、受信した登録データ36を秘匿化DB110に格納する。
【0083】
製薬企業15の担当者がデータ33を利用する場合、担当者は、端末装置400に検索キーワードを入力する。すると端末装置400の検索要求部430は、ダミーの検索クエリ38を生成する(ステップS15)。この際、検索要求部430は、入力された検索キーワードに基づく真の検索クエリ37と、ダミーの検索クエリ38とのそれぞれに、真の検索クエリ37なのかダミーの検索クエリ38なのかを示すフラグを付与する。例えば、真の検索クエリ37には値が「0」のフラグが付与され、ダミーの検索クエリ38には値が「1」のフラグが付与される。検索要求部430は、2つの検索クエリ37,38を、それぞれ暗号鍵32を用いて暗号化する(ステップS16)。そして検索要求部430は、暗号化した2つの検索クエリ37,38を含む検索要求をデータ管理サーバ100に送信する(ステップS17)。
【0084】
データ管理サーバ100では、検索部140が、データを秘匿化したままで、登録データ36と検索クエリ37,38とを照合する(ステップS18)。そして検索部140は、照合によって合致したデータを、検索結果39として端末装置400に送信する(ステップS19)。検索結果には、真のデータ33のレコードとダミーデータ34のダミーレコードとが含まれる。
【0085】
端末装置400では検索要求部430が検索結果39を受信し、例えばフラグに基づいて、ダミーレコードを破棄する(ステップS20)。そして検索要求部430は、検索結果39内の真のデータ33のレコードのみを含む真の結果40を、モニタなどに表示する。
【0086】
このようにダミーデータ34を追加することで、各項目の項目値の頻度攪乱が可能となる。例えばデータ登録要求部240は、真のデータの項目値の頻度分布と、逆の頻度分布となるダミーデータを生成する。逆の頻度分布とは、真のデータの出現頻度とダミーデータの出現頻度との合計が、各項目値で同程度となるような頻度分布である。
【0087】
またデータ登録要求部240は、真のデータとダミーデータとを区別できるように、各レコードにフラグを付与する。例えば真のデータのレコードには「0」のフラグ、ダミーレコードなら「1」のフラグが設定される。設定されたフラグも暗号化されるため、暗号鍵なしでは復号できない。ただし真のデータのレコード数とダミーレコード数とが異なると、ダミーレコード数を決定するアルゴリズムを知っている攻撃者はフラグの暗号化後の値の頻度の偏りから、どのレコードが真のデータなのか判別できる場合がある。そこでデータ登録要求部240は、例えば真のデータのレコード数と同数または整数倍のダミーレコードを生成する。
【0088】
<第2の実施の形態におけるダミー値決定方法>
真のデータのレコード数と同数または整数倍のダミーレコードを含むダミーデータを生成する場合、すべての項目値の出現頻度を同数にすることができない場合もあり得る。その場合、データ登録要求部240は、出現頻度が、他の項目値のいずれからも大きく異なるような項目値(単独頻度の項目値)がなくなるように、ダミーレコードに設定する項目値(ダミー値)を決定する。
【0089】
例えばデータ登録要求部240は、真のデータに設定可能な項目値を出現頻度の多い順にソートする。次にデータ登録要求部240は、出現頻度の多い項目値から順にk個ずつの集合を生成する。ただしデータ登録要求部240は、最後に残された項目値の数がk個に満たない場合は、残された項目値を1つ前の集合に含める。そして、データ登録要求部240は、各集合に含まれる項目値の出現頻度が等しくなるように、項目値ごとに、ダミー値を設定するダミーレコード数を決定する。
【0090】
さらにデータ登録要求部240は、全体の頻度分布を平準化するように、真のデータに含まれる数と、ダミーレコードにダミー値として設定する数との合計が少ない項目値から順に、残りのダミー値を割り当てる。ただしデータ登録要求部240は、合計が等しい項目値にダミー値を割り当てる場合は、割り当てる項目値を確率的に選択する。
【0091】
図7は、ダミーレコードに設定する項目値の第1の決定例を示す図である。図7には、項目「血液型」の項目値に関する頻度分布表51~54を示している。
頻度分布表51には、DB210に存在するレコード(真のデータ)に設定されている項目値の頻度分布が示されている。頻度分布表51内の黒丸が、対応する項目値を有する1つのレコードを表している。図7の例では、項目値「A」のレコードが15個、項目値「B」のレコードが4個、項目値「O」のレコードが1個、項目値「AB」のレコードが0個である。真のデータのレコードの総数は20個である。
【0092】
頻度分布表51では、項目値が出現頻度によってソートされている。図7の例では、左側から、出現頻度が多い順に項目値が並べられている。ここで出現頻度を同程度にする項目値の種類数が「2」(k=2)であるものとする。この場合、データ登録要求部240は、まず、頻度分布表51の左側から2つの項目値「A」、「B」を1つの集合51aに纏める。次にデータ登録要求部240は、残りの2つの項目値「O」、「AB」を1つの集合51bに纏める。
【0093】
ここでデータ登録要求部240は、ダミーデータとして、真のデータのレコード数と同数のダミーレコードを生成するものとする。データ登録要求部240は、まず単独頻度の項目値について、単独頻度が解消されるようにダミーレコードそれぞれに設定する項目値(ダミー値)を決定する。
【0094】
例えばデータ登録要求部240は、出現頻度が多い項目値から順に、単独頻度の解消を図る。図7の例では、データ登録要求部240は、項目値「A」の単独頻度を解消するため、11個のダミーレコードにダミー値「B」を設定することを決定する。ダミー値「B」を設定後の頻度分布が、頻度分布表52に示されている。頻度分布表52内の網掛けの丸が、単独頻度解消用の項目値が設定されたダミー値を有するダミーレコードを示している。これにより項目値「A」と「B」とは、共に出現頻度が「15」となり、単独頻度が解消されている。
【0095】
次にデータ登録要求部240は、項目値「O」の単独頻度を解消するため、1個のダミーレコードにダミー値「AB」を設定することを決定する。ダミー値「AB」を設定後の頻度分布が、頻度分布表53に示されている。これにより項目値「O」と「AB」は、共に出現頻度が「1」となり、単独頻度が解消されている。
【0096】
この時点で、12個のダミーレコードに設定するダミー値が決定しているため、ダミー値が未確定のダミーレコードは8個である。ここでデータ登録要求部240は、すべての項目値の一様分布がかなわないとしても、できるだけ頻度分布を平準化させるため、残りの8個のダミーレコードに、出現頻度が少ない項目値をダミー値として設定することを決定する。図7の例では、データ登録要求部240は、4つのダミーレコードにダミー値「O」を設定し、残りの4つのダミーレコードにダミー値「AB」を設定することを決定している。
【0097】
平準化用のダミー値設定後の頻度分布が、頻度分布表54に示されている。頻度分布表54内の白丸が、平準化用の項目値が設定されたダミー値を有するダミーレコードを示している。これにより項目値「O」と「AB」は、共に出現頻度が「5」となり、項目値「A」および「B」との出現頻度の差が減少している。すなわち、出現頻度の平準化が図られ、項目値間の頻度分布が攪乱される。さらに、ある項目値の現実での頻度が特徴的であっても、暗号化された少なくとも2つの暗号文のどちらがその特徴的な項目値のものであるかを特定することが困難となる。
【0098】
図7に示した例では、項目に設定可能な項目値の種類数がkの倍数となっており、すべての項目値を、2つずつの集合51a,51bに纏めることが可能となっている。しかし、項目に設定可能な項目値の種類数がkの倍数になっていない場合もある。
【0099】
図8は、ダミーレコードに設定する項目値の第2の決定例を示す図である。図8は、7種類のアルファベットを項目値として設定可能な場合において、データ登録要求部240が、k=3としてダミーレコードに設定する項目値を決定した例である。この場合、データ登録要求部240は、まず、頻度分布表55の左側から3つの項目値「A」、「B」、「C」を1つの集合55aに纏める。次にデータ登録要求部240は、残りの項目値のうち左から3つの項目値「D」、「E」、「F」を1つの集合55bに纏める。すると残りの項目値は「G」のみとなり、残りの項目値の数がk未満である。そこでデータ登録要求部240は、項目値「G」を直前に生成した集合55bに含める。その結果、4つの項目値「D」、「E」、「F」、「G」を含む集合55cが生成される。
【0100】
その後、データ登録要求部240は、図8と同様の手順で、ダミーレコードに設定する項目値を決定する。その結果、集合55aに含まれる項目値「A」、「B」、「C」それぞれの出現頻度は「15」となる。集合55cに含まれる項目値「D」、「E」、「F」、「G」のうち、項目値「D」、「E」、「G」の出現頻度は「4」となり、項目値「F」の出現頻度は「3」となる。
【0101】
このように、平準化用のダミーレコード数がkで割り切れず端数が発生する場合、1つの集合内の項目値の出現頻度が等しくならず、±1個の差を生じる場合がある。しかしながら、データ登録要求部240は、平準化用のダミー値を、その時点で出現頻度が同じ複数の項目値のいずれかに割り当てる際、確率的に割り当て先の項目値を選択する。これにより、最終的に、同じ集合内の項目値間で±1の出現頻度の差が生じても、出現頻度の差異に基づいて個々の項目値を特定することはできなくなる。
【0102】
なお、図7の例ではレコードの増加率を真のデータの2倍とし、図8の例では3倍としており、同じ集合内の項目値間の出現頻度の差が±1以内に抑えられている。ただし、真のデータの偏りの程度、指定されたkの値、および設定可能な項目値の種類数の関係によっては、ダミーレコード数が不足し、同じ集合内の項目値間の出現頻度の差が±1を超える場合がある。そこで次に、最適なダミーレコード数の決定方法について説明する。
【0103】
<第2の実施の形態における最適なダミーレコード数の決定方法>
以下、最適なダミーデータ数の決定方法について説明する。
図9は、一般化した頻度分布と集合ごとの出現頻度平準化に用いるダミー値の頻度イメージを示す図である。図9において、xは項目値の識別番号(ID)を示す自然数である。真のデータにおける識別番号xの項目値の出現頻度をf(x)とする。なお、xは離散値であるが、図9ではxを一般化して実数とみなしており、項目値ごとの真のデータにおける出現頻度が曲線で表されている。
【0104】
このとき、同一集合に含まれる項目値の出現頻度を等しくするために用いるダミー値の数は、図9の網掛けの部分の面積となる。ここで、Xは項目値の識別番号の最大値を示す自然数である。mは自然数である。pmは(m-1)k<x≦mkにおけるf(x) の最大値であり、m以下の自然数に対するpも同様である。pmaxはp1,p2,p3,・・・,pmの中の最大値である。また、pMは最後の区間であるmk<x≦Xに含まれる項目値の頻度攪乱後の出現頻度である。最後の区間幅(含まれる項目値の数)はkに満たないため、pMはp1,p2,p3,・・・,pmのどれかの区間と同じ出現頻度となるように頻度攪乱が行われる。
【0105】
集合ごとの出現頻度の平準化に用いるダミー値数の合計S(図9の網掛けの部分の面積)は、真のデータの項目値の総数(f(x)の0~Xの積分値)をNとすると下式となる。
【0106】
【数1】
【0107】
ここで、式(1)の右辺第1項が最大となるのは以下のときである。
【0108】
【数2】
【0109】
すなわち、以下のようにある1つの値のみにデータが集中している場合に、式(1)の右辺第1項が最大となる。
【0110】
【数3】
【0111】
次に式(1)の右辺第2項について考える。X,m,kは定数であるが、pMはk個の値を同頻度にするだけならp1~pmの中から任意に選ぶことができる。しかしながら、ダミーレコード数を必要最小限にするためには、このうちの最小値pminをpMとして選ぶこととなる。よって、式(3)よりpMは以下となる。
【0112】
【数4】
【0113】
なお、X<kのときは明らかに要件を満たせないことも考慮し、式(3)、(4)を式(1)に代入すると、最も極端な頻度分布でも、少なくともk個の項目値を同頻度にできる最小のダミーレコード数Sminは以下となる。
【0114】
【数5】
【0115】
式(5)を言い換えると以下の通りである。
1.項目値の種類数がk未満の場合
:対応不可
2.項目値の種類数がk以上2k未満の場合
:真のデータのレコード数×(項目値の種類数-1)個
3.項目値の種類数が2k以上の場合
:真のデータのレコード数×(k-1)個
図10は、k=3の場合の最小のダミーレコード数の判断基準の一例を示す図である。項目値の種類数が「2」の場合、項目値の種類数がk未満である。この場合、頻度分布表56に示す通り、項目値が「x1」「x2」しかなく、種類数が足りない。そのため、出現頻度が同程度の項目値を3以上生成することはできない。したがって3つ以上の項目値の出現頻度を平準化する頻度攪乱を実施することはできず、対応不可である。
【0116】
項目値の種類数が「5」の場合、項目値の種類数がk以上2k未満である。この場合、頻度分布表57に示す通り、真のデータにおける出現頻度が最大の項目値の出現頻度と同じになるように、各項目値のダミー値を追加することで、頻度攪乱が実現できる。
【0117】
追加するダミー値が多くなるのは、真のデータにおける項目値の出現頻度の偏りが大きい場合である。頻度分布表57に示す例では、項目値「x1」の出現頻度は「15」であり、その他の項目値「x2」~「x5」の出現頻度はいずれも「0」である。この場合、真のデータのレコード数「15」×4個(「4」は項目値の種類数-1)、のダミーレコードを追加し、項目値「x2」~「x5」それぞれについて15個ずつのダミー値を割り当てることで、すべての項目値の出現頻度が同じ数「15」となる。すなわち「真のデータのレコード数×(項目値の種類数-1)個」のダミーレコードを追加すれば、真のデータにおける項目値の出現頻度分布にかかわらず、すべての項目値の出現頻度を同じにできる。ここで例えば、項目値「x2」、「x3」のみに15個ずつのダミー値を割り当て、「x1」~「x3」の3つの項目値の出現頻度を同じにした場合、出現頻度「0」の項目値「x4」、「x5」は2種類のみになってしまう。よって、項目値「x4」、「x5」にも15個ずつのダミー値を割り当てるのが適切である。
【0118】
項目値の種類数が「7」の場合、項目値の種類数が2k以上である。この場合、頻度分布表58に示す通り、少なくとも3つの項目値を含む複数の集合58a,58bが生成される。生成された集合58a,58bそれぞれについて、真のデータにおける出現頻度が最大の項目値の出現頻度と同じになるように、各項目値のダミー値を追加することで、頻度攪乱が実現できる。
【0119】
追加するダミー値が多くなるのは、真のデータにおける項目値の出現頻度の偏りが大きい場合である。頻度分布表58に示す例では、項目値「x1」の出現頻度は「15」であり、その他の項目値「x2」~「x7」の出現頻度はいずれも「0」である。この場合、真のデータのレコード数「15」×2個(「2」はk-1)のダミーレコードを追加し、項目値「x2」~「x3」それぞれについて15個ずつのダミー値を割り当てることで、集合58a内のすべての項目値の出現頻度が同じ数「15」となる。集合58b内の項目値は、すべて出現頻度が「0」であり、出現頻度が同じである。すなわち「真のデータのレコード数×(k-1)個」のダミーレコードを追加すれば、真のデータにおける項目値の出現頻度分布にかかわらず、同一集合内のすべての項目値の出現頻度を同じにできる。
【0120】
ここまでは、秘匿化DB110への真のデータのレコードの追加を考慮しない場合の最適なダミーレコード数を示した。次に真のデータのレコードを追加する場合について説明する。
【0121】
図11は、レコード追加の第1の例を示す図である。図11に示す頻度分布表59において、追加されたレコードに設定された項目値およびダミー値については、太線の丸で示している。真のデータに追加されたレコードに含まれる項目値に対応する丸は、ドットパターンで塗りつぶされている。追加されたダミーレコードに含まれる項目値(ダミー値)に対応する丸は、白抜きである。
【0122】
図11の例ではk=3であり、項目値「A」、「B」、「C」が集合59aに含まれており、項目値「D」、「E」、「F」、「G」が集合59bに含まれている。このとき項目値「E」を含むレコードが真のデータとして追加されている。すると、項目値「E」の頻度が単独で多くなる。そこでデータ登録要求部240は、k種類以上の値との頻度差を±1とするために項目値「D」、「F」、「G」それぞれをダミー値として割り当てた3つのダミーレコードを追加する。
【0123】
図12は、レコード追加の第2の例を示す図である。この例では、第1の例と同じ条件として、k=3であり、1つの真のデータに対し3つのダミーレコードを追加する。図12に示す頻度分布表60では、項目値「F」を含むレコードが真のデータとして追加されている。そして、データ登録要求部240は、k種類以上の値との頻度差を±1とするために項目値「D」、「F」、「G」それぞれをダミー値として割り当てた3つのダミーレコードを追加する。
【0124】
データ登録要求部240が図11図12に示すようなダミーレコードの追加を行うことで、追加されたレコードのうちのどれが真のデータのレコードでどれがダミーレコードなのかの特定が抑制される。
【0125】
このときに追加するダミーデータ数が最大となる場合とは、最後の集合内のある1つの項目値のみが単独頻度(他の項目値の出現頻度の+1)の状態で、かつその単独頻度の項目値を含む真のデータのレコードが追加される場合である。このとき追加するダミーレコード数は以下である。
【0126】
【数6】
【0127】
式(6)のmod(X,k)は、Xをkで除算した場合の剰余である。そして、データ登録要求部240が式(5)によって決定されたダミーレコード数と、式(6)で決定されたダミーレコード数との大きい方のダミーレコード数を採用することで、真のデータのレコードの追加にも対応可能な頻度攪乱が可能となる。
【0128】
図11図12に示した例では、X=7、k=3である。すると、X≧2kであり、
式(5)によれば、ダミーレコード数は2×N個となる。また「mod(X,k)=1」であるため、式(6)によれば、ダミーレコード数は3×N個となる。データの追加を考慮した最適なダミーレコード数は、式(5)と式(6)との計算結果の多い方の値(3×N個)である。
【0129】
なお、ダミーレコード数は真のデータのレコード数の倍数になることを利用し、以下においてはデータを真のデータのレコード数単位に分割し、これを「群」として扱う。
<ダミー判別用のフラグの付与と検索手法>
次に、各レコードへのダミー判別用のフラグの付与と、秘匿化DB110内のデータの検索手法について説明する。以下の説明では、製薬企業15,16の端末装置400,500がダミーデータの影響を除去し、真の検索結果を得るための手法を示す。まず、真のデータによる検索結果とダミーデータによる検索結果を検索クライアントで見分けることを可能とするために、データ登録要求部240は、データを秘匿化DB110に登録する際にフラグの項目を追加する。この列に格納するフラグ値は、単純に真のデータのレコード群およびダミーデータのダミーレコード群ごとに、あらかじめ決められた異なる値を暗号化してフラグ列に格納する。
【0130】
図13は、フラグを付与した登録データの一例を示す図である。登録データ62には、真のデータ61を暗号化したレコード群62aとダミーデータを構成するダミーレコード群62b,62cとが含まれている。図13の例では、区別しやすいように、IDによるソート前の登録データ62を示している。
【0131】
ここで、H(x)は共通鍵方式の確定的暗号化またはハッシュ関数である。また、図13では見やすいように各群をまとめて表示しているが、データ登録要求部240は、実際には、秘匿化DB110に格納する際は、行番号である暗号化されていないID列の値順にソートを行い、行番号から真のデータを特定できないようにする。
【0132】
図13に示すような登録データ62が秘匿化DB110に格納されると、端末装置400,500は、以下のような検索クエリを含む検索要求をデータ管理サーバ100に送信することで、真のデータのレコードとダミーレコードとを区別できる。
【0133】
例えば端末装置400の検索要求部430は、以下のような (G+1)個の検索クエリを生成し、順不同でデータ管理サーバ100に送信する。ここで、Gはダミーレコード群の数(自然数)、gは群番号(0以上の整数)である。真のデータのレコード群の群番号は「0」である。
・検索クエリ:指定された検索条件 ∧ フラグ値=g
「∧」は論理積の演算記号である。そして検索要求部430は、真のデータのレコード群の群番号「0」をフラグ値として設定した検索クエリに対する応答のみを採用することで、真の結果を知ることができる。
【0134】
この手法では、攻撃者は各群のどれかが真のデータであることはわかるものの、真のデータのレコード群とダミーレコード群とのレコード数が同じであるため秘匿化DB110内のレコードだけを参照しても真のデータのレコードがどれであるかは特定できない。また、検索履歴の頻度分析においてもすべての群へ均等に検索がかけられるため、攻撃者は真のデータのレコード群を特定することができない。
【0135】
<第2の実施の形態におけるデータ登録処理と検索処理との処理手順>
以下、データ登録処理およびデータ検索処理の手順について、詳細に説明する。
図14は、データ登録処理の手順の一例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
【0136】
[ステップS101]データ登録要求部240は、同程度の出現頻度とする項目値の種類数kの設定入力を受け付ける。
[ステップS102]データ登録要求部240は、ダミーレコード数を決定する。例えばデータ登録要求部240は、式(5)と式(6)とのそれぞれを用いて、最小のダミーレコード数を計算する。そしてデータ登録要求部240は、式(5)と式(6)とのそれぞれの計算結果を比較し、値が大きい方を、最終的なダミーレコード数に決定する。
【0137】
[ステップS103]データ登録要求部240は、DB210から平文の真のデータを読み込む。
[ステップS104]データ登録要求部240は、ステップS102で決定した数のダミーレコードを有するダミーデータを生成する。なお、ダミーデータ生成処理の詳細は後述する(図15参照)。
【0138】
[ステップS105]データ登録要求部240は、真のデータとダミーデータとのレコードそれぞれに、ランダムにIDを付与する。
[ステップS106]データ登録要求部240は、真のデータのレコードとダミーレコードとのそれぞれにフラグを付与する。例えばデータ登録要求部240は、真のデータのレコードには「0」のフラグを付与する。またデータ登録要求部240は、ダミーレコードには、そのダミーレコードが属するダミーレコード群の群番号を、フラグとして付与する。
【0139】
[ステップS107]データ登録要求部240は、各レコードをIDでソートする。
[ステップS108]データ登録要求部240は、ソートされたレコード群を暗号化して、秘匿化DB110に登録する。例えばデータ登録要求部240は、レコード内の項目値ごとに暗号化し、暗号化された項目値を有するレコード群を、登録データとしてデータ管理サーバ100に送信する。データ管理サーバ100では、データ登録部120が登録データを受信し、受信した登録データを秘匿化DB110に格納する。
【0140】
次に、ダミーデータ生成処理について詳細に説明する。
図15は、ダミーデータ生成処理の手順の一例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
【0141】
[ステップS111]データ登録要求部240は、真のデータに設定可能な項目値を、真のデータにおける出現頻度が高い順にソートする。
[ステップS112]データ登録要求部240は、真のデータに設定可能な項目値について、項目値出現頻度が高い方からk個ずつの項目値の集合を生成する。この際、データ登録要求部240は、最後の集合に含まれる項目値の数がk未満の場合、該当する集合とその前に生成した集合とをまとめて1つの集合に結合する。
【0142】
[ステップS113]データ登録要求部240は、集合ごとに、該当集合に含まれる項目値の出現頻度が、該当集合内で最も出現頻度の高い項目値の頻度と等しくなるように、各項目値に割り当てるダミーレコード数を決定する。そしてデータ登録要求部240は、各項目値について決定した数のダミーレコードを、その項目値に割り当てる。
【0143】
[ステップS114]データ登録要求部240は、すべての項目値についての出現頻度分布が平準化するように、真のデータとダミーデータとの出現頻度の合計が少ない項目値から順に、残りのダミーレコードの割り当てを行う。なおデータ登録要求部240は、出現頻度が最小の項目値が複数ある場合には、確率的に選択した項目値にダミーレコードを割り当てる。
【0144】
[ステップS115]データ登録要求部240は、項目値ごとに、該当項目値を設定した、割り当てた数のダミーレコードを生成する。
このようにして、集合ごとに項目値の出現頻度が均等化されると共に、可能な限り、項目値ごとの出現頻度が平準化される。その結果、項目値ごと出現頻度の偏りが抑止され、頻度分析攻撃に対する安全性が向上する。
【0145】
次に、端末装置400における検索処理について詳細に説明する。
図16は、検索処理の手順の第1の例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
【0146】
[ステップS121]端末装置400の検索要求部430は、ユーザからの検索条件の入力を受け付ける。検索条件では、項目の項目値についての条件が指定される。
[ステップS122]検索要求部430は、暗号化した真の検索クエリを生成する。例えば検索要求部430は、入力された検索条件に「フラグ=真(値が「0」)」の条件を論理積で追加し、データ登録サーバ200から取得した暗号鍵で暗号化する。これにより真の検索クエリが生成される。
【0147】
[ステップS123]検索要求部430は、暗号化した偽の検索クエリを、ダミーレコード群の数「G」だけ生成する。例えば検索要求部430は、入力された検索条件に「フラグ=偽(値が「1~G」)」の条件を論理積で追加し、データ登録サーバ200から取得した暗号鍵で暗号化する。これによりG個の偽の検索クエリが生成される。検索要求部430は、偽の検索クエリを生成する際、入力された検索条件を異なる条件に変えて生成してもよい。
【0148】
[ステップS124]検索要求部430は、生成した真および偽の検索クエリをランダムに並べ替える。
[ステップS125]検索要求部430は、検索クエリの送信回数を示す変数iに初期値「0」を設定する(i=0)。
【0149】
[ステップS126]検索要求部430は、i≦Gを満たす間、ステップS127~S132の処理を繰り返す。
[ステップS127]検索要求部430は、i番目の検索クエリをデータ管理サーバ100に送信する。
【0150】
[ステップS128]検索要求部430は、データ管理サーバ100から、検索結果を取得する。
[ステップS129]検索要求部430は、ステップS127で送信した検索クエリのフラグが「0」か否かを判断する。検索要求部430は、フラグが「0」であれば、処理をステップS130に進める。また検索要求部430は、フラグが「0」以外であれば、処理をステップS131に進める。
【0151】
[ステップS130]検索要求部430は、ステップS128で取得した検索結果をモニタに表示する。例えば検索要求部430は、検索結果に含まれるレコードの項目値を復号し、復号された項目値をモニタに表示する。また検索要求部430は、検索結果に含まれるレコード数をモニタに表示してもよい。その後、検索要求部430は処理をステップS132に進める。
【0152】
[ステップS131]検索要求部430は、偽の検索結果を破棄する。
[ステップS132]検索要求部430は、変数iに1を加算する(i=i+1)。
[ステップS133]検索要求部430は、i>Gを満たす場合、検索処理を終了する。
【0153】
このようにして、秘匿化DB110に暗号化して保存されているデータの検索が行われる。
以上に説明したように、第2の実施の形態では、項目値の出現頻度の差を抑止するような項目値が設定されたダミーデータを生成するため、頻度分析攻撃に対する安全性が向上する。すなわち、出現頻度が他の項目値と大きく異なる単独頻度の項目値がなくなり、かつ項目値ごとの出現頻度の平準化により情報のエントロピーが上げられているため、頻度分析攻撃に対する安全性が向上する。
【0154】
また、DB210へのデータの追加も考慮してダミーレコード数を決定したため、データの追加があってもデータの安全性を維持することができる。
なお、DB210内のデータを秘匿化DB110に登録後、DB210にレコードが追加された場合、データ登録サーバ200は、追加分のレコードを真のデータとして、ダミーデータを生成し、秘匿化DB110に追加登録すればよい。すなわち、真のデータの追加レコードが唯一であっても複数であっても、既に秘匿化DB110に登録されているデータを変更せずに、データを追加登録できる。
【0155】
また端末装置400は、真の検索クエリと偽の検索クエリとを無作為な順番で送信するため、繰り返し行われた検索のうち、どの検索結果が真の検索結果なのかを秘匿することができる。
【0156】
なお、第2の実施の形態では、DB210内の真のデータに、ID以外に血液型の項目しかないが、ID以外に複数の項目を有する場合でも同様に暗号化して秘匿化DB110に格納することができる。この際、データ登録要求部240は、生成するダミーレコード数を、項目ごとに算出したダミーレコード数の最大値とする。
【0157】
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、フラグの値の種類を拡張し、真のデータとダミーデータとの分離の困難性を高めたものである。
【0158】
第2の実施の形態の手法を複数の項目を含むDB210に適用した場合、各項目の頻度攪乱処理は独立に行われる。また、攻撃者はどの群が真のデータのレコード群であるか特定は出来ないものの、各群の分離は容易にできる。このとき、各項目の独立性を比較するとダミーデータ群の独立性が低くなり、真のデータ群を特定できてしまう場合が生じる。
【0159】
図17は、項目間の独立性の解析例を示す図である。図17の例では、2つの項目を有するデータ63をk=2の条件で、第2の実施の形態に示した手法によって頻度攪乱が行われている。図17に示す真のデータ63に対応する登録データ64では、ダミーデータ生成時に、性別と血液型とのダミー値が、項目ごとに独立に生成されている。
【0160】
項目「性別」は、真のデータ63において、「男」の出現頻度が「2」、「女」の出現頻度が「2」である。そのため、ダミーデータでは、「男」の出現頻度が「2」、「女」の出現頻度が「2」となっている。また項目「血液型」は、真のデータ63において「A」の出現頻度が「2」、「B」の出現頻度が「1」、「O」の出現頻度が「0」、「AB」の出現頻度が「1」である。そのため、ダミーデータでは、Aの出現頻度が「0」、Bの出現頻度が「1」、「O」の出現頻度が「2」、「AB」の出現頻度が「1」となるように項目値が設定されている。
【0161】
登録データ64に基づいて、フラグの値ごとに2元クロス表65,66を作成することができる。2元クロス表65,66に基づいてχ二乗値(χ2)を算出すると、フラグH(0)に対応する2元クロス表65のχ二乗値が「4」となる。またフラグH(1)に対応する2元クロス表66のχ二乗値が「2」となる。
【0162】
このように、真のデータは現実世界の特性が反映されることによりχ2=4と独立性が高くなる場合がある。その一方、ダミーデータは項目ごとに独立に値が決定されるためχ2=2と、独立性が低くなる。そのため攻撃者は、χ2の低い方がダミーデータであると推定できてしまう。
【0163】
そこで第3の実施の形態では、第2の実施の形態に示した手法の一部に変更を加え、複数の項目を有するDB210における項目間の独立性を用いた攻撃も抑制する手法の一例を示す。第3の実施の形態に示す手法は、フラグ値の与え方と検索方法を変更したものである。
【0164】
データ登録要求部240は、まず、フラグ値を決定するために、真のデータのレコード群およびダミーレコード群それぞれについて、同一の変数の値に対して異なる値を出力する異なる関数を用意する。そしてデータ登録要求部240は、用意した関数にID列の値を変数xとして入力した値をフラグ値とする。
【0165】
図18は、関数を用いてフラグ値を算出する例を示す図である。群番号gの群(真のデータのレコード群またはダミーレコード群)のフラグ値生成関数をfg(x)としたとき、図18の例で用いているフラグ値生成関数は以下の通りである。
g(x)=(G+1)x+g (7)
図18の例では、G=2である。従って、真のデータのレコード群71a(群番号「0」)のフラグ値生成関数は「f0(x)=(2+1)x+0」となる。ダミーレコード群71b(群番号「1」)のフラグ値生成関数は「f1(x)=(2+1)x+1」となる。ダミーレコード群71c(群番号「2」)のフラグ値生成関数は「f2(x)=(2+1)x+2」となる。
【0166】
第3の実施の形態では、端末装置400の検索要求部430は、検索の際には、指定された検索条件のみを含む検索クエリを発行する。データ管理サーバ100の検索部140は、検索クエリに対する応答として、検索条件に合致したレコードのID列とフラグ列の項目値を合わせて返す。検索要求部430は、受け取ったID列の項目値(ID)を真のデータ群用のフラグ値生成関数「f0(x)=(2+1)x+0」に入力し、さらに暗号化を行う。そして検索要求部430は、受け取ったフラグ値と比較し、一致したもののみを正しい検索結果として採用する。これにより検索要求部430は、真の結果を知ることができる。
【0167】
図19は、第3の実施の形態におけるデータ登録処理の一例を示すフローチャートである。図19に示す処理のうち、ステップS201~S205、S210~S211は、それぞれ図14に示す第2の実施の形態の処理のステップS101~S105,S107~S108と同様である。以下、第2の実施の形態と異なるステップS206~S209の処理についてステップ番号に沿って説明する。
【0168】
[ステップS206]データ登録要求部240は、全レコードについて、ステップS207~S208の処理を実行する。
[ステップS207]データ登録要求部240は、フラグ値生成関数に基づいて、処理対象のレコードに対するフラグ値を算出する。例えばデータ登録要求部240は、処理対象のレコードのIDとそのレコードが属する群の群番号とを、式(7)に示すフラグ値生成関数の変数に設定し、フラグ値生成関数を計算する。計算結果が、そのレコードのフラグ値となる。
【0169】
[ステップS208]データ登録要求部240は、処理対象のレコードに、ステップS207で算出したフラグ値を付与する。
[ステップS209]データ登録要求部240は、すべてのレコードに対してフラグ値の付与が完了した場合、処理をステップS210に進める。
【0170】
このようにして、フラグ値生成関数により、すべてのレコードに対して異なるフラグ値が設定される。
図20は、検索処理の手順の第2の例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。
【0171】
[ステップS221]端末装置400の検索要求部430は、ユーザからの検索条件の入力を受け付ける。
[ステップS222]検索要求部430は、検索条件を暗号化した検索クエリを生成する。
【0172】
[ステップS223]検索要求部430は、検索クエリをデータ管理サーバ100に送信する。
[ステップS224]検索要求部430は、データ管理サーバ100から、検索結果を取得する。
【0173】
[ステップS225]検索要求部430は、検索結果に含まれるすべてのレコードについて、ステップS226~S229およびS230の処理を行う。
[ステップS226]検索要求部430は、処理対象のレコードのIDを真のデータ群用のフラグ値生成関数の変数に代入し、フラグ値を算出する。
【0174】
[ステップS227]検索要求部430は、フラグ値を暗号化する。
[ステップS228]検索要求部430は、ステップS227で暗号化して得られた暗号文と、処理対象のレコードに付与されたフラグ値とが一致するか否かを判断する。検索要求部430は、一致する場合、処理をステップS229に進める。また検索要求部430は、一致しない場合、処理をステップS230に進める。
【0175】
[ステップS229]検索要求部430は、処理対象のレコードを、真の検索結果として抽出する。その後、検索要求部430は処理をステップS231に進める。
[ステップS230]検索要求部430は、処理対象のレコードを破棄する。
【0176】
[ステップS231]検索要求部430は、検索結果に含まれるすべてのレコードについて処理が完了した場合、処理をステップS232に進める。
[ステップS232]検索要求部430は、検索結果として抽出されたレコードを、真の結果としてモニタに表示する。
【0177】
第3の実施の形態の手法では、フラグ値が各行ですべて異なり、攻撃者による各群の分離が困難となる。このため項目間の独立性を群ごとに比較する攻撃ができなくなり、複数の項目を有する秘匿化DB110におけるデータの安全性が向上する。
【0178】
〔第4の実施の形態〕
次に第4の実施の形態について説明する。第4の実施の形態は、データの格納およびダミーデータのダミー値の決定方法を変更することで、項目間のデータ分離の困難性を高め、図17に示したような項目間の独立性の解析による攻撃を抑止するものである。
【0179】
第4の実施の形態におけるデータ登録要求部240は、すべての項目のデータを結合し1項目のデータとして扱う。
図21は、複数の項目を結合した登録データの一例を示す図である。図21では、「性別」と「血液型」の2つの項目をもつ真のデータについて、その2つの項目を「性別,血液型」という1つの項目に結合したものである。データ登録要求部240は、例えば(女,B)や(女,AB)という値は、性別は同じであるものの値の組み合わせが異なるため異なる種類の項目値として扱う。すなわちデータ登録要求部240は、全項目の項目値が同じもののみ同じ種類の項目値とする。そしてデータ登録要求部240は、この結合された項目値を1つの項目に対する項目値として扱う。またデータ登録要求部240は、集合内の項目値の出現頻度がすべて「0」の集合に含まれる項目値にはダミー値を追加しない。それ以外の処理は第2の実施の形態の手法と同様である。
【0180】
図22は、第4の実施の形態におけるダミー値の追加例を示す図である。図22には、k=2の場合に2種類の項目値をもつ項目「性別」と4種類の項目値をもつ項目「血液型」を結合した場合の頻度分布表73の一例を示している。このとき、結合データの項目値の種類数は元の各項目の項目値の種類数の総乗であり、図22の例では8種類となる。
【0181】
図23は、第4の実施の形態におけるデータ登録処理の一例を示すフローチャートである。図23に示す処理のうち、ステップS301,S304~S310は、それぞれ図14に示す第2の実施の形態の処理のステップS101~S108と同様である。第2の実施の形態と異なるステップS302,S303の処理は以下の通りである。
【0182】
[ステップS302]データ登録要求部240は、真のデータにID以外の複数の項目が存在する場合、それらの複数の項目を1つの項目に結合する。
[ステップS303]データ登録要求部240は、結合後の項目値の種類数を算出する。例えばデータ登録要求部240は、真のデータの出現頻度が「0」でない項目値を含む、すべての集合の全要素を頻度攪乱対象の項目値とし、その項目値の数を、結合後の項目値の種類数Xとする。その後、ステップS303で算出した項目値の種類数Xに基づいて、ダミーレコード数の決定などの処理が行われる。
【0183】
第4の実施の形態の手法では、各項目の値の組み合わせごとに同頻度となるものがk個以上となるため、項目間の独立性を用いた攻撃が抑制できる。なお、第4の実施の形態におけるフラグ値について、第3の実施の形態の手法を適用することも可能である。
【0184】
〔第5の実施の形態〕
次に第5の実施の形態について説明する。第5の実施の形態は、複数の項目を有するDB210における項目間の独立性を用いた攻撃も抑制し、かつデータの削除も可能とする手法である。
【0185】
第2~第4の実施の形態に示した手法により頻度攪乱を行った秘匿化DB110から真のデータの一部のレコードを削除する際、削除の処理手順から真のデータのレコードとダミーレコードとを判別できてしまう場合がある。
【0186】
図24は、真のデータのレコードの削除が困難な例を示す図である。図24には、k=2の場合の血液型の出現頻度を示す頻度分布表74を示している。ここで、例えばO型の真のデータのレコードを削除する場合、データ登録要求部240が同じ集合に属するAB型のダミーレコードも同数削除すれば特に問題はない。しかしながら、破線の枠で示したB型の真のデータのレコードを削除しようとすると、同じ集合に属するA型にはダミーレコードが存在しないためA型のデータを削除することができない。よってデータ登録要求部240は、B型の真のデータのレコードを削除した後、A型と同頻度にするためにB型のダミーレコードを追加することになる。この手順を攻撃者が観察すると、削除後に追加されたレコードはダミーレコードであること、およびダミーレコードが追加された項目値と同頻度で出現する他の項目値はすべて真のデータであることが解ってしまう。
【0187】
そこで第5の実施の形態では、データ登録要求部240は、真のデータの頻度分布と同じ分布であるが、それぞれの値が別の値に変換されたダミーレコード群を生成する。このダミーレコード群の各ダミーレコードは真のデータのレコードに紐付き、1対1で対応する。そしてデータ登録要求部240は、真のレコードの項目値を別の項目値に変換して対応するダミーレコードのダミー値として設定する。この変換規則を定めたものを変換集合と呼ぶ。なお、変換集合は、第1の実施の形態で説明した項目値群の一例である。データ登録要求部240は、各項目の取りうる項目値から任意にG+1個選んだものを要素として変換集合を生成し、すべての項目値がいずれか1つの変換集合の要素として含まれるまで変換集合を生成する。ここで、Gは追加するダミーレコード群の数であり、Gの値の決定法は後述する。また、各項目の項目値の種類数がkの倍数でない場合の処理についても後述する。
【0188】
図25は、変換集合の生成例を示す図である。図25の例では、真のデータのレコードには、「血圧」と「血液型」の項目が含まれているものとする。「血圧」に設定可能な項目値が4種類(至適、正常、正常高値、高血圧)であり、「血液型」に設定可能な項目値が8種類(A+、B+、O+、AB+、A-、B-、O-、AB-)である。
【0189】
図25の変換集合一覧75には、k=4,G=3の場合に、4種類の項目値をもつ項目「血圧」と8種類の項目値をもつ項目「血液型」の2項目それぞれに対して、データ登録要求部240が生成した変換集合75a,75b,75cが示されている。項目「血圧」に対しては、{至適,正常,正常高値,高血圧}を要素として含む変換集合75aが1つだけ生成されている。項目「血液型」に対しては、{A+,B+,O+,AB+}を要素として含む変換集合75bと、{A-,B-,O-,AB-}を要素として含む変換集合75cとの2つが生成されている。
【0190】
変換集合75a,75b,75cは、循環リスト構造となっており、要素が順番に配置されている。変換集合75a,75b,75c内の各要素には、先頭から順に、0から昇順の要素番号が付与される。例えば変換集合75aでは、図中の左端を先頭とすると、「至適」が先頭の要素(要素番号「0」)であり、「正常」が次の要素(要素番号「1」)である。循環リスト構造となっているため、例えば最後の要素「高血圧」の次の要素は「至適」となる。
【0191】
データ登録要求部240は、真のデータのレコードの項目値を、変換集合75a,75b,75cに基づいて変換することで、ダミーレコードに設定する項目値(ダミー値)を生成する。例えばデータ登録要求部240は、真のデータのレコードの1つの項目値に基づいて、ダミーレコード群ごとに、そのダミーレコード群内のダミーレコードに設定するダミー値を1つ生成する。
【0192】
図26は、項目値の変換例を示す図である。例えばデータ登録要求部240は、真のデータのレコードについて、項目ごとに項目値を参照し、その項目値が含まれる変換集合と、その項目値に該当する要素baを特定する。そしてデータ登録要求部240は、真のデータに含まれる項目値の要素baに基づいて、以下の式(8)により、群番号gのダミーレコード群のダミー値ca,gを、変換集合を参照して決定する。ただし、aは0以上の整数の要素番号である。
a,g=bmod(a+g,G+1) (8)
図26の例では、真のデータのレコードに出現する項目値は「正常」である。ダミーレコード群が3つである(G=3)ため、データ登録要求部240は、項目値「正常」を含む変換集合75aに基づいて、3つのダミーレコード群(g=1,2,3)それぞれのダミーレコードに設定するダミー値を生成する。まずデータ登録要求部240は、項目値「正常」に対応する要素の変換集合75a内での要素番号「1」(a=1)を取得する。
【0193】
データ登録要求部240は、群番号「1」(g=1)のダミーレコード群のダミー値c1,1を生成する場合、まず、mod(1+1,4)=2を計算する。そしてデータ登録要求部240は、計算して得られた値「2」を要素番号とする変換集合75a内の要素b2に対応する項目値「正常高値」を、群番号「1」のダミーレコード群に設定するダミー値に決定する。
【0194】
データ登録要求部240は、群番号「2」(g=2)のダミーレコード群のダミー値c1,2を生成する場合、まず、mod(1+2,4)=3を計算する。そしてデータ登録要求部240は、計算して得られた値「3」を要素番号とする変換集合75a内の要素b3に対応する項目値「高血圧」を、群番号「2」のダミーレコード群に設定するダミー値に決定する。
【0195】
データ登録要求部240は、群番号「3」(g=3)のダミーレコード群のダミー値c1,3を生成する場合、まず、mod(1+3,4)=0を計算する。そしてデータ登録要求部240は、計算して得られた値「0」を要素番号とする変換集合75a内の要素b0に対応する項目値「至適」を、群番号「3」のダミーレコード群に設定するダミー値に決定する。
【0196】
なお、図26に示したような項目値の変換元と変換先との関係は、全単射の関係の一例である。全単射とは、写像の終域となる集合の任意の元に対し、その元を写像の像とする元が、写像の定義域となる集合に常にただ一つだけ存在するような写像である。全単射関係を満たしていれば、図26に示す例とは別の規則で変換元の項目値と変換先の項目値との関係を定義してもよい。
【0197】
データ登録要求部240は、図26に示したようなダミー値の生成を、真のデータに出現する項目値それぞれについて行う。
図27は、ダミー値の生成例を示す図である。図27の例では、真のデータ76では、項目「血圧」の項目値として、「至適」、「正常」、「正常高値」、「高血圧」がそれぞれ1回ずつ出現している。また項目「血液型」の項目値として、「A+」が2回出現し、「O-」と「AB-」とがそれぞれ1回ずつ出現している。
【0198】
真のデータ76に出現する項目値それぞれに基づいて、ダミーレコード群それぞれに設定するダミー値が生成されている。例えば血圧「至適」に基づいて、群番号1(g=1)のダミーレコード群用のダミー値「正常」、群番号2(g=2)のダミーレコード群用のダミー値「正常高値」、群番号3(g=3)のダミーレコード群用のダミー値「高血圧」が生成されている。また例えば血液型「A+」に基づいて、群番号1(g=1)のダミーレコード群用のダミー値「B+」、群番号2(g=2)のダミーレコード群用のダミー値「O+」、群番号3(g=3)のダミーレコード群用のダミー値「AB+」が生成されている。
【0199】
データ登録要求部240は、生成したダミー値をダミーレコードに割り当て、項目値を暗号化することで登録データを生成する。
図28は、第5の実施の形態における登録データの一例を示す図である。登録データ77には、真のデータ76のレコード群とダミーレコード群77a,77b,77cが含まれている。登録データ77内の各レコードには、第2の実施の形態と同様にフラグが付与されている。そして登録データ77に含まれる項目値(フラグ値も含む)が暗号化されている。
【0200】
図29は、第5の実施の形態における頻度攪乱後の頻度分布の一例を示す図である。図29に示す頻度分布表78は、6種類のアルファベットが項目値として設定可能な項目における頻度攪乱後の各項目値の出現頻度を表している。図29の例では、k=3,G=2である。変換集合は、「A,B,C」と「D,E,F」の2つである。
【0201】
群番号「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」と変換することで生成される。
【0202】
その結果、頻度攪乱後の変換集合「A,B,C」に含まれる各項目値の出現頻度は、すべて「19」となっている。また頻度攪乱後の変換集合「D,E,F」に含まれる各項目値の出現頻度は、すべて「9」となっている。すなわち項目値3つずつの集合ごとに、集合内での項目値の出現頻度の均一化が図られている。
【0203】
また各ダミーレコード群にダミー値は、真のデータの項目値を1対1で変換することで生成されている。そのため項目値の出現頻度のばらつき度合いは変わらない。例えば出現頻度が多い順にその出現頻度の値を並べた場合、真のデータのレコード群および2つのダミーレコード群のいずれにおいても「10,7,5,3,2,1」である。このように、第5の実施の形態によれば、ダミーレコード群ごとの項目値の出現頻度のばらつき度合いは、すべてのダミーレコード群について真のデータと等しくなる。その結果、ダミーレコード群の項目間の独立性も真のデータの独立性と同等となり、項目間の独立性を用いた攻撃を抑制できる。また、すべてのダミーレコード群に真のデータの各レコードに1対1で対応するダミーレコードが存在する。そのため真のデータのあるレコードを削除する際には対応するダミーレコードを合わせて削除することで、データの秘匿性を維持したまま真のデータの任意のレコードを削除することができる。
【0204】
<第5の実施の形態における変換集合の生成方法>
第5の実施の形態では、ダミーデータのダミー値を決定するための変換集合の生成において、ある項目に設定可能な項目値の種類数が変換集合の要素数の倍数でない場合にもダミー要素を追加して対応する手法を用いる。本手法ではデータ登録要求部240は、まず単純に、ダミー要素を追加して、ある項目に設定可能な項目の種類数とダミー要素数の合計が、変換集合の要素数の倍数となるようにする。ただし、追加するダミー要素数や変換集合の構成によっては、データの機密性を劣化させる可能性がある。これを回避する条件を以下に示す。
【0205】
図30は、ダミー要素を追加した変換集合の一例を示す図である。図30に示す変換集合80は、真のデータに出現するX個(Xは2以上の整数)の項目値(真の項目値)と等しい数の真の要素xと、D個(Dは0以上の整数)のダミー要素dを、要素として有する。要素の値を、要素番号の小さい順に「x1,x2,・・・,xX,d1,d2,・・・,dD」とする。
【0206】
図31は、変換集合を用いて頻度攪乱を行った際の各群の頻度の関係を示す図である。図31に示す出現頻度表81には、要素の値に対応する項目値の群ごとの出現頻度が示されている。出現頻度表81の群の行に設定された添え付きのnは、同じ添字の真の値xの該当群内における出現頻度である。このとき、真のデータ(群0)にはダミー要素は存在しないため、ダミー要素dの出現頻度はすべて「0」である。
【0207】
ここで、出現頻度表81の要素の値の並び順は、図30に示す変換集合の要素の値の並び順と等しい。そのため「群1」のレコードに設定されるダミー値は、真のデータに出現した項目値に対応する要素の要素番号を巡回的に1つ大きく(図において1つ右にシフト)した要素番号の要素の値である。すると出現頻度表81における「群1」の各要素の値の出現頻度も、「群0」の各要素の値の出現頻度を巡回的に1つ右にシフトしたものとなる。任意の群の各要素の値の出現頻度は、「群0」の各要素の値の出現頻度を群番号分シフトしたものとなり、これは1つ前の群の各要素の値の出現頻度を1つ右にシフトしたものと等価である。
【0208】
また、ダミー要素を合わせた項目値の種類数は、真のデータを合わせた群数(G+1)と等しい(出現頻度表81の列数と行数が等しい)。よって、各項目値の合計頻度(出現頻度表81の列ごとの合計頻度)は、すべて真のデータの合計頻度(出現頻度表81の真のデータ行の合計頻度)と等しく、以下の式(9)で表される。なお、mは変換集合番号である。
【0209】
【数7】
【0210】
ここで、変換集合の要素数は追加するダミーレコード群の数に比例する。そのため、真のデータの項目値の取りうる種類数が多い場合は、図25の血液型の例で示したように、複数の変換集合を生成することでダミーレコード数を削減できる。このとき、式(9)のように、それぞれの変換集合ごとにSmが定まる。ここで、あるSmの値がただ1つの真の項目値の組み合わせによってしか取り得ない場合がある。この場合、すべての真の項目値の出現頻度を知っている攻撃者は、頻度がSmとなる暗号化された値が、そのただ1つの組み合わせのXm個の真の項目値のどれかであると特定できる。
【0211】
したがって、攻撃者に、暗号化されたある値がどの項目値の値であるかの候補として、k未満の数の項目値に絞り込まれないようにするために、データ登録要求部240は、1つの変換集合に真の項目値に対応する要素を少なくともk個含める。これにより、Smの値を用いても、攻撃者は、頻度がSmとなる暗号化された値の候補を、k個未満の数の項目値に絞り込むことは困難となる。
【0212】
図32は、変換集合を用いた頻度攪乱前後の頻度の第1の例を示す図である。図32に示す変換集合一覧82には、血液型に関して2つの変換集合82a,82bが含まれている。図32の例では、各変換集合82a,82bのSmが唯一となり、各暗号文が変換集合にXm個の真の値のどれかまで特定できる。具体的には、データ登録要求部240は、変換集合一覧82では、4種類の項目値をもつ血液型データに対し、それぞれダミー要素を1つずつ加えた2つの変換集合82a,82bを生成し、2群のダミーレコードを追加している。ここで、真のデータの頻度はそれぞれ、A型が「1」、B型が「10」、O型が「100」、そしてAB型が「1000」である。頻度攪乱後の出現頻度は、1つ目の変換集合82aの要素に対応するH(A)、H(B)、H(D1)が、A型とB型の出現頻度の合計である「11」となる。このとき、任意の真の値を任意の個数選ぶ組み合わせの内、合計頻度が「11」となるのはA型とB型の組み合わせしかない。よって、H(A)、H(B)、H(D1)の値はA型かB型のどちらか(2種類)であると絞り込める。2つ目の変換集合82bに対応する項目値についても同様である。
【0213】
このように図32の例では変換集合82a,82bそれぞれには真の項目値が2個ずつしか含まれないため、k=2にしか対応できない。ここでk=2に対応するための最小限のダミーレコード数を検討する。
【0214】
図33は、変換集合を用いた頻度攪乱前後の頻度の第2の例を示す図である。図33に示す変換集合一覧83には、血液型に関して2つの変換集合83a,83bが含まれている。変換集合83a,83bそれぞれに含まれる要素の数は「2」であるため、1群のダミーデータが追加される。なお、真のデータにおける各項目値の出現頻度は、図32の例と同じである。変換集合83a,83bそれぞれには、真の項目値が2個ずつ含まれているため、図33の例では、1群のダミーレコードの追加によりk=2を満たすことができる。
【0215】
このように、第5の実施の形態においても値の取り得る種類数やkの値によって最適なダミーデータ数が異なる。
<第5の実施の形態における最適なダミーレコード数>
次に、第5の実施の形態における最適なダミーレコード数について説明する。第5の実施の形態では、変換集合の要素数が真のデータのレコード群とダミーレコード群とを合わせた群数となる。
【0216】
図34は、一般化した変換集合一覧を示す図である。変換集合一覧84にはGa個の要素をもつ変換集合がm個ある。そして各変換集合には真の項目値が少なくともk個含まれる。そのため、全変換集合の前からk個の要素は真の項目値であり、後ろからi個の要素は真の値とダミー要素が混在し、ダミー要素の個数は各変換集合で異なる。なお、Ga=k+iであり、この値は真のデータとダミーデータを合わせた全群数とも等しい。
【0217】
変換集合一覧84において真の項目値の総数をXとすると以下の関係式が成り立つ。
mk≦X≦m(k+i) (10)
この式(10)を分解して変形すると以下となる。
m≦X/k (11)
i≧X/m-k (12)
ここで、ダミーレコード数が最小となるのは、変換集合の要素数が最小になればよいため、式(12)の右辺が最小のとき、すなわちmが最大のときである。
【0218】
よって、最適なダミーレコード群の数Gは、床関数と天井関数とを用いて以下の式(13)で表される。
【0219】
【数8】
【0220】
なお、第2の実施の形態と同様に、項目値の種類数がk未満の場合は対応不可である。
<第5の実施の形態における最適な変換集合数>
次に、項目ごとの最適な変換集合数の決定方法について説明する。DB210が複数の項目を有する場合、項目ごとに項目値の種類数Xが異なる。よって、式(13)によって求まる最適なダミーレコード群の数Gも項目ごとに異なる値となる。しかしながら、追加するダミーレコード群の数が項目ごとに異なると、行列形式で作成されたDBの項目(列)ごとの行数が不揃いとなり、DBのスキーマが崩れてしまう。よってデータ登録要求部240は、追加するダミーレコード群の数は、項目ごとに求めたGの最大値Gmax を全項目に適用する。
【0221】
ここで、ある項目の変換集合を生成する際、データ登録要求部240は変換集合数mを決定する。変換集合数mは式(13)の導出過程で、以下の式(14)で求まる。
【0222】
【数9】
【0223】
ただし、この値は項目ごとに求めたGに対応するもので、このGがGmaxと異なる場合は、データ登録要求部240は、Gmaxに応じた変換集合数を決定する。
各項目の変換集合数は、より少ないほど各変換集合に含まれる真の項目値の数が多くなる。このとき、ある項目においてGに対してGmaxが大きければ、実効的なkを大きくすることができる場合があり好ましい。そして、最適な項目ごとの変換集合数は、項目番号をcとすると、以下の式(15)を満たす最小値である。
cmax≦Xc (15)
よって、最適な項目ごとの変換集合数mcは以下の式で表される。
【0224】
【数10】
【0225】
<第5の実施の形態におけるダミー判別用のフラグと検索手法>
第5の実施の形態では、ダミー判別用のフラグについては、第3の実施の形態で用いたフラグを適用可能である。第5の実施の形態では、どの群の頻度分布も真のデータの頻度分布と等しい。この場合、第2の実施の形態の手法で用いたフラグを適用した場合、頻度分析攻撃により秘匿すべき情報が推定される可能性がある。そのため、第2の実施の形態に示したフラグを第5の実施の形態に適用するのは適切ではない。
【0226】
また第5の実施の形態では、検索手法については、第2の実施の形態と第3の実施の形態とのいずれで用いた検索手法も適用可能である。なお第2の実施の形態では、検索要求部430は、1回の検索条件の入力に応じて群数個(G+1個)の検索クエリを発行するが、第5の実施の形態では、例えば検索要求部430は、以下のようにして1つの検索クエリによる検索が可能である。
・検索要求部430は、データ登録サーバ200,300と変換集合一覧を共有する。例えば、暗号化用の共通鍵を基に各変換集合に含める要素や順番を選択する。
・検索要求部430は、真のデータを含めた全群の中から1つの群を確率的に選択する。
・検索要求部430は、指定された検索条件を変換集合に基づいて、選択した群の値に変換する。
・検索要求部430は、変換した値を検索条件として検索クエリを発行する。
・検索要求部430は、選択した群用のフラグ値生成関数を用いて、検索結果の取捨選択を行う。
【0227】
この手法では、各ダミーレコード群に真のデータと1対1で対応するデータが必ず存在する。そのため検索要求部430は、ダミーレコードの生成と同様の手法でダミーの検索クエリを生成し発行することで、真の検索クエリに適合するレコード数と同じ結果が得られる。
【0228】
また、暗号化に検索クライアント側で復号可能な方式を用いる場合は、以下のようにしてダミー検索の結果から真の検索条件に適合したデータの内容も知ることがきる。
・検索要求部430は、ダミーの検索クエリによる検索に適合したレコードの項目値(ダミー値)を復号する。
・検索要求部430は、復号した値を要素として含む変換集合を用い、復号したデータを式(8)の逆変換である以下の式(17)により変換する。
a=cmod(a-g,G+1),g (17)
<第5の実施の形態におけるデータ登録処理と検索処理との処理手順>
以下に第5の実施の形態におけるデータ登録処理と検索処理とについて、図35図37を参照して説明する。
【0229】
図35は、第5の実施の形態におけるデータ登録処理の手順の一例を示すフローチャートである。図35に示す処理のうち、ステップS401,S404,S406~S409は、それぞれ図14に示した第2の実施の形態の処理におけるステップS101,S103,S105~S108と同様の処理である。以下、第2の実施の形態と異なるステップS402,S403,S405の処理について説明する。
【0230】
[ステップS402]データ登録要求部240は、ダミーレコード群の数と項目ごとの変換集合数とを決定する。例えばデータ登録要求部240は、式(13)に基づいて最適なダミーレコード群の数Gを算出する。さらにデータ登録要求部240は、式(16)に基づいて、項目ごとの最適な変換集合数を算出する。
【0231】
[ステップS403]データ登録要求部240は、すべての項目それぞれについて、ステップS402で決定した変換集合数分の変換集合を生成する。
[ステップS405]データ登録要求部240は、ステップS402で決定した数のダミーレコード群を含むダミーデータを生成する。
【0232】
以下、ダミーデータ生成処理について詳細に説明する。
図36は、第5の実施の形態におけるダミーデータ生成処理の手順の一例を示すフローチャートである。以下、図36に示す処理をステップ番号に沿って説明する。
【0233】
[ステップS411]データ登録要求部240は、ステップS402で算出したダミーレコード群数Gを取得する。
[ステップS412]データ登録要求部240は、真のデータをG個コピーし、G個のダミーレコード群を生成する。
【0234】
[ステップS413]データ登録要求部240は、真のデータの全項目それぞれについて、ステップS414~S417の処理を実行する。
[ステップS414]データ登録要求部240は、全ダミーレコードそれぞれについて、ステップS415の処理を実行する。
【0235】
[ステップS415]データ登録要求部240は、ダミーレコードの項目値を変換する。例えばデータ登録要求部240は、処理対象の項目の変換集合の中から、ダミーレコードにおける処理対象の項目の項目値(変換対象項目値)を真の要素として含む変換集合を選択する。次にデータ登録要求部240は、処理対象のダミーレコードの属するダミーレコード群の群番号を取得する。データ登録要求部240は、変換対象項目値に対応する、選択した変換集合内の真の要素から、群番号の分だけ巡回的に右の要素を、その変換集合から取得する。そしてデータ登録要求部240は、変換処理対象のダミーレコード内の変換対象項目値を、取得した要素の値(ダミー値)に変換する。
【0236】
[ステップS416]データ登録要求部240は、全ダミーレコードそれぞれについて、ステップS415の処理が完了した場合、処理をステップS417に進める。
[ステップS417]データ登録要求部240は、全項目それぞれについて、ステップS414~S416の処理が完了した場合、ダミーデータ生成処理を終了する。
【0237】
このようにして、真のデータの項目値を、変換集合内の他の要素に置き換えることで、ダミーデータが生成される。そしてデータ登録要求部240が、生成したダミーデータとフラグ値を含む登録データを暗号化して秘匿化DB110に登録する。
【0238】
次に、第5の実施の形態における検索処理について、詳細に説明する。
図37は、第5の実施の形態における検索処理の手順の一例を示すフローチャートである。以下、図37に示す処理をステップ番号に沿って説明する。
【0239】
[ステップS431]検索要求部430は、ユーザからの検索条件の入力を受け付ける。
[ステップS432]検索要求部430は、変換集合一覧を生成する。例えば検索要求部430は、データ登録要求部240における項目ごとの変換集合生成処理と同様の処理を行い、変換集合一覧を生成する。この際、検索要求部430は、ダミーレコード群の数Gも算出する。
【0240】
[ステップS433]検索要求部430は、真のデータのレコード群とダミーレコード群とを含むすべての群の中から、1つの群を確率的に選択する。
[ステップS434]検索要求部430は、ダミーレコード群を選択したか否かを判断する。検索要求部430は、選択したのがダミーレコード群であれば、処理をステップS435に進める。また検索要求部430は、選択したのが真のデータのレコード群であれば、処理をステップS440に進める。
【0241】
[ステップS435]検索要求部430は、入力された検索条件を、変換集合に基づいて変換する。例えば検索要求部430は、検索条件において、検索対象の項目と項目値が指定されている場合、まず検索対象の項目に対応する1以上の変換集合の中から、指定された項目値に対応する要素を含む変換集合を特定する。次に検索要求部430は、選択したダミーレコード群の群番号を取得する。検索要求部430は、検索対象の項目値に対応する、選択した変換集合内の真の要素から、群番号の分だけ巡回的に右の要素を、その変換集合から取得する。そして検索要求部430は、変処理対象のダミーレコード内の変換対象項目値を、取得した要素の値(ダミー値)に変換する。
【0242】
[ステップS436]検索要求部430は、ステップS435で変換された後の検索条件に、選択されたダミーレコード群に対応するフラグ値を追加した検索クエリを暗号化して、データ管理サーバ100に送信する。なお検索要求部430は、検索結果からフラグ値によるレコードの取捨選択が可能であるため、検索クエリにフラグ値を追加しなくてもよい。
【0243】
[ステップS437]検索要求部430は、データ管理サーバ100から検索結果を取得する。
[ステップS438]検索要求部430は、検索結果に含まれる、選択されたダミーレコード群のレコード内の項目値のうち、検索条件で指定された項目の項目値(ダミー値)を復号する。なお検索クエリにフラグ値を追加せず、データ管理サーバ100が、フラグ値以外の条件に基づいて検索した検索結果を送信する場合がある。この場合、検索要求部430は、選択した群に対応するフラグ値生成関数を用いて、検索結果に含まれるレコードのIDに対応するフラグ値を生成する。検索要求部430は、生成したフラグ値を暗号化する。そして検索要求部430は、該当レコードが、暗号化したフラグ値と同じ値のフラグ値を有する場合、そのレコードを選択した群のレコードであると判定する。検索要求部430は、選択した群のレコードから、検索要求で指定した項目の項目値を抽出し、その項目値を復号する。
【0244】
[ステップS439]検索要求部430は、復号されたダミー値を、変換集合に基づいて逆変換する。これにより、ダミー値に対応する真のデータの項目値が得られる。その後、検索要求部430は、処理をステップS443に進める。
【0245】
[ステップS440]検索要求部430は、検索条件に真のデータのレコード群に対応するフラグ値を追加した検索クエリを暗号化して、データ管理サーバ100に送信する。なお検索要求部430は、検索結果からフラグ値によるレコードの取捨選択が可能であるため、検索クエリにフラグ値を追加しなくてもよい。
【0246】
[ステップS441]検索要求部430は、データ管理サーバ100から検索結果を取得する。
[ステップS442]検索要求部430は、検索結果に含まれる、真のデータのレコード群のレコード内の項目値のうち、検索条件で指定された項目の項目値を復号する。なお、データ管理サーバ100がフラグ値以外の条件に基づいて検索した検索結果を送信した場合、ステップS438と同様に、選択した群のレコードを判定する。そして、検索要求部430は、選択した群のレコードから、検索要求で指定した項目の項目値を抽出し、その項目値を復号する。
【0247】
[ステップS443]検索要求部430は、検索結果を出力する。
このようにして、端末装置400では、検索結果としてダミー値を取得した場合でも、そのダミー値に基づいて、入力された検索条件に適合する真のデータの項目値を取得することができる。そのため、攻撃者がデータ管理サーバ100から送信された検索結果を取得したとしても、検索結果に含まれる項目値が真のデータの項目値なのかダミー値なのかを、攻撃者は判別することができない。その結果、真のデータの機密性が向上する。
【0248】
〔まとめ〕
上記の第2~第5の実施の形態では、複数の病院の医療情報を統合し製薬企業が新薬開発等で利活用するサービスで有用な秘匿検索におけるセキュリティ要件に関する課題を解決する4つの具体的な手法を示した。第2の実施の形態は、DB210に含まれる項目が1つの場合に有効で、頻度が同程度の暗号文が少なくともk個となるようにした上で、さらに可能な範囲で頻度分布を一様に近付けるものである。第3および第4の実施の形態は、DB210が複数の項目を有する場合に有効な手法であり、列間の頻度の独立性を用いた攻撃も考慮したものである。第5の実施の形態は、複数列の秘匿化DB110からのデータの削除も可能とする手法である。また第2~第5の実施の形態に示した手法は、いずれも、kとDB210に格納される項目値の種類数によって変化する最小限のダミーレコード数の決定法も示した。これらの手法によれば、既に頻度攪乱済みのデータを変更せずに逐次追加されるデータに対しても頻度攪乱が可能となる。
【0249】
なお、1つの群に含まれるダミーレコードの数は、真のデータのレコード数と同数または整数倍ちょうどでなくてもよい。例えばデータ登録要求部240は、真のデータのレコードの数またはその整数倍に対して、確率的に決定した整数値分増減させた数のダミーレコードを生成してもよい。
【0250】
また、前述した実施の形態では、各レコードの項目値の頻度分析攻撃に対する頻度攪乱の例を示したが、検索された項目の履歴から項目名を推定する頻度分析攻撃に対し、真の項目数の倍数のダミー項目と、1つのフラグレコードを同様の手法で追加してもよい。即ち、行列形式のデータにおいて、前述の実施の形態で行方向について行った処理を、列方向について同様に行ってもよい。
【0251】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【0252】
以上の実施の形態に関し、さらに以下の付記を開示する。
(付記1)
コンピュータに、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群に基づいて、前記秘匿レコードに含まれる1以上の項目の内の一の項目に設定可能な複数の項目値それぞれの、前記秘匿レコード群内での出現頻度を算出し、
第1項目値の出現頻度よりも出現頻度が少ない第2項目値が存在する場合、前記一の項目にダミーの項目値を設定した1以上のダミーレコードを含み、前記一の項目に前記第1項目値を設定した前記ダミーレコードよりも、前記一の項目に前記第2項目値を設定した前記ダミーレコードを、前記第1項目値の出現頻度と前記第2項目値の出現頻度との差分に基づく数だけ多く含む、ダミーレコード群を生成し、
前記秘匿レコードに真を示す第1フラグを設定し、
前記ダミーレコードに偽を示す第2フラグを設定し、
前記秘匿レコードと前記ダミーレコードそれぞれの前記一の項目に設定された項目値、前記秘匿レコードに付与された前記第1フラグ、および前記ダミーレコードに付与された前記第2フラグを暗号化し、
前記秘匿レコード群と前記ダミーレコード群とを出力する、
処理を実行させる秘密情報管理プログラム。
【0253】
(付記2)
前記ダミーレコード群の生成では、前記一の項目に設定可能な項目値を複数の集合に分類し、集合ごとに、前記集合内で出現頻度が最大の項目値を前記第1項目値とし、前記集合内の前記第1項目値以外の項目値を前記第2項目値として、前記一の項目に前記第1項目値または前記第2項目値を設定した前記ダミーレコードを生成する、
付記1記載の秘密情報管理プログラム。
【0254】
(付記3)
前記ダミーレコード群の生成では、前記秘匿レコード群における出現頻度が多い方からk個(kは2以上の整数)ずつの前記集合を生成し、前記複数の項目値の数をkで除算したときに剰余がある場合、出現頻度が低い方からkと剰余の合計値分の個数の項目値を同一の前記集合に含める、
付記2に記載の秘密情報管理プログラム。
【0255】
(付記4)
前記コンピュータに、さらに、
前記秘匿レコード群と前記ダミーレコード群との出力前に、前記秘匿レコード群と前記ダミーレコード群とを連結して一のレコード群を生成し、前記一のレコード群内の前記秘匿レコードと前記ダミーレコードとの順番をランダムに並べ替える、
処理を実行させる付記1ないし3のいずれかに記載の秘密情報管理プログラム。
【0256】
(付記5)
前記ダミーレコード群の生成では、前記秘匿レコード群に含まれる前記秘匿レコードと同数の前記ダミーレコードを含む前記ダミーレコード群を、1または複数生成する、
付記1ないし4のいずれかに記載の秘密情報管理プログラム。
【0257】
(付記6)
前記第2フラグの設定では、1または複数生成された前記ダミーレコード群ごとに異なり、前記第1フラグとも異なる値の前記第2フラグを、前記ダミーレコード群それぞれに含まれる前記ダミーレコードに設定する、
付記5記載の秘密情報管理プログラム。
【0258】
(付記7)
前記第1フラグの設定では、前記秘匿レコードの識別子を変数とする第1関数の値を、前記第1フラグとして前記秘匿レコードに設定し、
前記第2フラグの設定では、前記ダミーレコードの識別子を変数とし、同一の変数の値に対して前記第1関数とは異なる値を出力する第2関数の値を、前記第2フラグとして前記ダミーレコードに設定する、
付記1ないし6のいずれかに記載の秘密情報管理プログラム。
【0259】
(付記8)
前記秘匿レコード群内の前記秘匿レコードそれぞれには、複数の項目が含まれており、
前記コンピュータは、さらに、
前記秘匿レコード群内の前記複数の項目を、前記複数の項目それぞれの項目値を含む1つの項目に統合し、統合した項目を前記一の項目とする、
処理を実行する付記1ないし7のいずれかに記載の秘密情報管理プログラム。
【0260】
(付記9)
前記ダミーレコード群の生成では、前記ダミーレコード群内の第1項目と第2項目との間の項目値の独立性の度合いが、前記秘匿レコード群内の前記第1項目と前記第2項目との間の項目値の独立性の度合いに基づいて決定される値となるように、前記ダミーレコード群内の前記第1項目と前記第2項目との項目値を決定する、
付記1ないし8のいずれかに記載の秘密情報管理プログラム。
【0261】
(付記10)
前記ダミーレコード群の生成では、前記一の項目に設定可能な項目値を、所定数の項目値を含む1以上の項目値群に所定の規則に従って分類し、前記項目値群のそれぞれについて、前記項目値群内の項目値を同一郡内の異なる項目値に全単射する全単射関係を定め、前記秘匿レコードの前記一の項目に設定されている既存項目値を前記全単射関係に従い変換することで、前記ダミーレコードの前記一の項目に設定する項目値を決定する、
付記9記載の秘密情報管理プログラム。
【0262】
(付記11)
コンピュータが、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群に基づいて、前記秘匿レコードの一の項目に設定可能な複数の項目値それぞれの、前記秘匿レコード群内での出現頻度を算出し、
第1項目値の出現頻度よりも出現頻度が少ない第2項目値が存在する場合、前記一の項目にダミーの項目値を設定した1以上のダミーレコードを含み、前記一の項目に前記第1項目値を設定した前記ダミーレコードよりも、前記一の項目に前記第2項目値を設定した前記ダミーレコードを、前記第1項目値の出現頻度と前記第2項目値の出現頻度との差分に基づく数だけ多く含む、ダミーレコード群を生成し、
前記秘匿レコードに真を示す第1フラグを設定し、
前記ダミーレコードに偽を示す第2フラグを設定し、
前記秘匿レコードと前記ダミーレコードそれぞれの前記一の項目に設定された項目値、前記秘匿レコードに付与された前記第1フラグ、および前記ダミーレコードに付与された前記第2フラグを暗号化し、
前記秘匿レコード群と前記ダミーレコード群とを出力する、
秘密情報管理方法。
【0263】
(付記12)
データベースを有するサーバと、
秘匿対象の秘匿レコードを1つ以上含む秘匿レコード群に基づいて、前記秘匿レコードの一の項目に設定可能な複数の項目値それぞれの、前記秘匿レコード群内での出現頻度を算出し、
第1項目値の出現頻度よりも出現頻度が少ない第2項目値が存在する場合、前記一の項目にダミーの項目値を設定した1以上のダミーレコードを含み、前記一の項目に前記第1項目値を設定した前記ダミーレコードよりも、前記一の項目に前記第2項目値を設定した前記ダミーレコードを、前記第1項目値の出現頻度と前記第2項目値の出現頻度との差分に基づく数だけ多く含む、ダミーレコード群を生成し、
前記秘匿レコードに真を示す第1フラグを設定し、
前記ダミーレコードに偽を示す第2フラグを設定し、
前記秘匿レコードと前記ダミーレコードそれぞれの前記一の項目に設定された項目値、前記秘匿レコードに付与された前記第1フラグ、および前記ダミーレコードに付与された前記第2フラグを暗号化し、
前記秘匿レコード群と前記ダミーレコード群とを前記サーバの前記データベースに格納するデータ登録装置と、
前記一の項目の項目値に関する検索条件と前記第1フラグの値を指定したフラグ条件とを含む真の検索クエリと、前記検索条件と前記第2フラグの値を指定した前記フラグ条件とを含む偽の検索クエリとの少なくとも一方を、前記検索条件に示される項目値と前記フラグ条件に示される前記第1フラグまたは前記第2フラグを暗号化して、前記サーバに送信し、前記サーバから、前記データベース内の前記検索クエリによる検索結果を取得するデータ利用装置と、
を有する秘密情報管理システム。
【0264】
(付記13)
前記データ登録装置は、前記ダミーレコード群の生成では、前記一の項目に設定可能な項目値を、所定数の項目値を含む1以上の項目値群に所定の規則に従って分類し、前記項目値群のそれぞれについて、前記項目値群内の項目値を同一郡内の異なる項目値に全単射する全単射関係を定め、前記秘匿レコードの前記一の項目に設定されている既存項目値を前記全単射関係に従い変換することで、前記ダミーレコードの前記一の項目に設定する項目値を決定し、
前記データ利用装置は、前記第2フラグを指定した偽の前記検索クエリを前記サーバに送信する場合、前記検索条件に示される項目値を、前記全単射関係に従い置換し、置換により得られた項目値を含む前記検索クエリを送信する、
付記12記載の秘密情報管理システム。
【0265】
(付記14)
前記データ利用装置は、偽の前記検索クエリを前記サーバに送信した場合、偽の前記検索クエリに適合する適合レコードに含まれる前記一の項目の項目値を復号し、復号された既復号項目値を、前記全単射関係の逆写像関係に従い置換する、
付記13記載の秘密情報管理システム。
【0266】
(付記15)
前記データ利用装置は、前記秘匿レコード群および1または複数生成された前記ダミーレコード群のうちの1つを確率的に選択し、前記秘匿レコード群を選択した場合、前記第1フラグを指定した真の前記検索クエリを前記サーバに送信し、1または複数生成された前記ダミーレコード群のうちの1つを選択した場合、前記第2フラグを指定した偽の前記検索クエリを前記サーバに送信する、
付記13または14に記載の秘密情報管理システム。
【0267】
(付記16)
前記データ利用装置は、前記第1フラグを指定した前記フラグ条件を含む真の検索クエリと、前記第2フラグを指定した前記フラグ条件を含む偽の検索クエリとを生成し、ランダムな順番で前記真の検索クエリと前記偽の検索クエリとを前記サーバに送信する、
付記12記載の秘密情報管理システム。
【符号の説明】
【0268】
1 データ登録装置
1a 記憶部
1b 処理部
2 サーバ
2a DB
3 データ利用装置
4 秘匿レコード群
5 ダミーレコード群
6 登録データ
7,10 検索クエリ
8,11 検索結果
9 表示画面
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37