JP2021110861A - 制御方法、制御プログラム、および情報処理装置 - Google Patents
制御方法、制御プログラム、および情報処理装置 Download PDFInfo
- Publication number
- JP2021110861A JP2021110861A JP2020003465A JP2020003465A JP2021110861A JP 2021110861 A JP2021110861 A JP 2021110861A JP 2020003465 A JP2020003465 A JP 2020003465A JP 2020003465 A JP2020003465 A JP 2020003465A JP 2021110861 A JP2021110861 A JP 2021110861A
- Authority
- JP
- Japan
- Prior art keywords
- search
- concealment
- record
- database
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 60
- 238000000034 method Methods 0.000 title claims description 61
- 238000012545 processing Methods 0.000 claims description 31
- 230000004044 response Effects 0.000 claims description 14
- 238000012795 verification Methods 0.000 description 82
- 238000004458 analytical method Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 33
- 239000003814 drug Substances 0.000 description 29
- 229940079593 drug Drugs 0.000 description 29
- 230000008569 process Effects 0.000 description 24
- 201000010099 disease Diseases 0.000 description 16
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 16
- 230000006870 function Effects 0.000 description 10
- 239000000284 extract Substances 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 206010000087 Abdominal pain upper Diseases 0.000 description 4
- 230000036772 blood pressure Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 208000019622 heart disease Diseases 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013480 data collection Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 206010035664 Pneumonia Diseases 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005401 electroluminescence Methods 0.000 description 2
- 206010028980 Neoplasm Diseases 0.000 description 1
- 235000016496 Panda oleosa Nutrition 0.000 description 1
- 240000000220 Panda oleosa Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 201000011510 cancer Diseases 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000009509 drug development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000002547 new drug Substances 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
【課題】データ利用者の関心内容の秘匿性を向上させる。【解決手段】情報処理装置2は、データ利用者が利用する第1のレコード群に含まれるレコードの条件として、所定の属性のフィールドに第1の値が設定されていることが指定された利用レコード情報1aを取得する。次に情報処理装置2は、複数のレコードが格納された第1のデータベース3aを管理するサーバ3に対して、複数のレコードのうちの、第1のレコード群と第2のレコード群とを格納した第2のデータベースの生成要求を送信する。第1のレコード群は、複数のレコードのうちの、所定の属性のフィールドに第1の値が設定されているレコード群である。第2のレコード群は、所定の属性のフィールドに、第1の値とは異なる第2の値が設定されているレコード群である。【選択図】図1
Description
本発明は、制御方法、制御プログラム、および情報処理装置に関する。
機微な内容のデータが格納されたデータベース(対象DB:Database)に対して、データの内容を秘匿したままそのデータへの外部からの検索(秘匿検索)を可能とするシステムがある。秘匿検索は、例えば対象DBを持つデータ提供者(DP:Data Provider)と、検索内容(クエリ)を秘匿したまま対象DBを検索したいデータ利用者(DU:Data User)と、処理を仲介する信頼できる第三者(TTP:Trusted Third Party)が関与する。
DPが有する対象DBを管理するサーバ(DPサーバ)は、対象DBを暗号化したDB(秘匿化DB)をTTPが有するサーバ(TTPサーバ)に登録する。またDUが有する端末装置(DU端末)は、DUから入力された検索条件を示すクエリを暗号化して、TTPサーバに送信する。さらに、DPサーバとDUサーバとは、それぞれ照合に用いる鍵をTTPサーバに送信する。TTPサーバは、照合用の鍵を用いて、秘匿化DB内のデータから、クエリに示される検索条件を満たすレコードを検索する。そしてTTPサーバは、例えばクエリに示される検索条件を満たすレコード数をDU端末に送信する。このようにして、対象DB内のデータとクエリの内容とを互いに開示せずに、クエリに一致するレコード数が得られる。
データを秘匿化したままデータの検索を可能とする技術としては、プライバシィを保護した生体認証システムが提案されている。また、リレーショナル暗号化を利用して同等性を確認する同等性確認方法も提案されている。さらにデータを暗号化して鍵を持たないシステム管理者に隠蔽した状態でデータを保存する秘匿化データベースシステムも提案されている。
暗号化したデータの検索では、高度な暗号技術が用いられており、クエリとデータとの照合にかかる処理負荷が、一般のデータ検索よりも格段に大きくなる。そのため、対象DBのデータ量が大きくなると、検索負荷が過大となる。
そこで、DPサーバにおいて、DUが利用を希望するデータを対象DBから抽出し、小規模のDBを生成しておくことが考えられる。しかしDPサーバでDBの小規模化を行うには、DUが利用を希望するデータをDPに伝えることになり、DUの関心のあるデータがDP側に推定されるおそれがある。例えば製薬会社が、データ項目や取得期間などを具体的に指定して、病院が有する対象DBの小規模化を、病院に要望する場合が考えられる。この場合、病院では、製薬会社からの指定内容に基づいて、どのような種別の薬品を開発しようとしているのかをある程度推定できる。
1つの側面では、本件は、データ利用者の関心内容の秘匿性を向上させることを目的とする。
1つの案では、情報処理装置による制御方法が提供される。当該制御方法では、情報処理装置は、データ利用者が利用する第1のレコード群に含まれるレコードの条件として、所定の属性のフィールドに第1の値が設定されていることが指定された利用レコード情報を取得する。そして情報処理装置は、複数のレコードが格納された第1のデータベースを管理するサーバに対して、複数のレコードのうちの、所定の属性のフィールドに第1の値が設定されている第1のレコード群と、所定の属性のフィールドに、第1の値とは異なる第2の値が設定されている第2のレコード群とを格納した第2のデータベースの生成要求を送信する。
1態様によれば、データ利用者の関心内容の秘匿性を向上させることができる。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず、第1の実施の形態について説明する。
〔第1の実施の形態〕
まず、第1の実施の形態について説明する。
図1は、第1の実施の形態に係る制御方法の一例を示す図である。図1には、当該制御方法を実現するためのシステムが示されている。このシステムには、端末装置1、情報処理装置2、およびサーバ3が含まれる。端末装置1は、サーバ3が保持するデータを利用するユーザ(DU)が使用する装置である。情報処理装置2は、データの利用を支援する信頼できる第三者(TTP)が使用する装置である。サーバ3は、データの提供者(DP)が使用する装置である。サーバ3は、提供するデータを格納する第1のデータベース(DB)3aを有している。例えばDPが病院の場合、第1のDB3aには、患者の氏名、治療などの行為の日付、投薬量、病名などのフィールドを含むレコードが登録される。
端末装置1、情報処理装置2、およびサーバ3それぞれは、例えばコンピュータである。すなわち情報処理装置2は、記憶部2−1と処理部2−2とを有する。記憶部2−1は、例えば情報処理装置2が有するメモリ、またはストレージ装置である。処理部2−2は、例えば情報処理装置2が有するプロセッサ、または演算回路である。図1では省略しているが、端末装置1とサーバ3も情報処理装置2と同様に記憶部と処理部とを有する。
端末装置1、情報処理装置2、およびサーバ3が連係動作することで、データ利用者の関心内容の秘匿性を向上可能な制御方法が実現される。端末装置1、情報処理装置2、およびサーバ3の各装置は、例えば制御方法を実現するためのその装置の機能に応じた処理手順が記述された制御プログラムを実行することにより、当該機能を実施する。
次に、端末装置1、情報処理装置2、およびサーバ3の協働による、データ利用者の関心内容の秘匿性を向上可能な制御方法について説明する。
端末装置1は、DUから利用レコード情報1aの入力を受け付ける。利用レコード情報1aには、データ利用者が利用する第1のレコード群に含まれるレコードの条件として、所定の属性のフィールドに第1の値が設定されていることが指定されている。図1の例では、利用レコード情報1aにおいて、属性として「日付」と「投薬量」とが示されている。第1のレコード群に含まれるレコードの条件は、属性「日付」の第1の値が「1月」または「2月」であり、かつ属性「投薬量」の第1の値が「50mg」のレコードである。
端末装置1は、DUから利用レコード情報1aの入力を受け付ける。利用レコード情報1aには、データ利用者が利用する第1のレコード群に含まれるレコードの条件として、所定の属性のフィールドに第1の値が設定されていることが指定されている。図1の例では、利用レコード情報1aにおいて、属性として「日付」と「投薬量」とが示されている。第1のレコード群に含まれるレコードの条件は、属性「日付」の第1の値が「1月」または「2月」であり、かつ属性「投薬量」の第1の値が「50mg」のレコードである。
第1の属性が複数ある場合、利用レコード情報1aを、表形式の分類マップで表すことができる。例えば端末装置1は、利用レコード情報1aとして、第1の属性(日付)の値(1月、2月)を列のラベルとし、第2の属性(投薬量)の値(50mg)を行のラベルとする表形式の第1の分類マップ1bを生成する。端末装置1は、第1の分類マップ1bに対し、第1のレコード群における第1の属性の第1の値に対応する行と第1のレコード群における第2の属性の第1の値に対応する列とが交わる位置に、第1のレコード群内のグループを示す第1の分類識別子「km1,km2」を設定する。
情報処理装置2は、利用レコード情報1aを、端末装置1から取得する。例えば端末装置1がDUから利用レコード情報1aの入力を受け付け、利用レコード情報1aを生成したときに、端末装置1が、情報処理装置2に利用レコード情報1aを送信する。
情報処理装置2は、利用レコード情報1aを取得すると、複数のレコードが格納された第1のDB3aを管理するサーバ3に対して、複数のレコードのうちの第1のレコード群と第2のレコード群とを格納した第2のDB3b〜3dの生成要求を送信する。第1のレコード群は、所定の属性のフィールドに第1の値が設定されているレコードの集合である。第2のレコード群は、所定の属性のフィールドに、第1の値とは異なる第2の値が設定されているレコードの集合である。第2のレコード群に含まれるレコードは、DUによるデータの利用目的を秘匿するために追加されるレコードであり、ダミーレコードと呼ぶこともできる。
利用レコード情報1aが第1の分類マップ1bで表されている場合、情報処理装置2は、第2の分類マップ2aを生成する。情報処理装置2は、第2の分類マップ2aを生成した場合、その第2の分類マップ2aを含む生成要求をサーバ3に送信する。
第2の分類マップ2aは、第1の分類マップ1bにおける第1の分類識別子「km1,km2」が設定されていない位置に第2のレコード群内のグループを示す第2の分類識別子「kd1〜kd4」を追加した表形式のデータである。
例えば情報処理装置2は、第1の分類マップ1bにおいて第1の分類識別子が設定された領域を包含する四角形を、端末装置1からの分類拡張要求に応じて拡大し、拡大された四角形内において第1の分類識別子「km1,km2」が設定されていない位置に第2の分類識別子「kd1〜kd4」を設定する。図1の例では、第1の属性の値「1月〜2月」、第2の属性の値「50mg」を囲う四角形が拡大される。図1に示す第2の分類マップ2aは、第1の分類マップ1bの第1の属性の値「3月」を含み、第2の属性の値「10mg」を含むように拡大されている。
また情報処理装置2は、複数の第2のDB3b〜3dの生成の指示、第1のレコード群と第2のレコード群それぞれの複数のグループへの分類の指示、およびグループごとの格納先となる第2のDBの指定を含む生成要求を送信することができる。図1の例では、生成要求において、名称が「DB1」、「DB2」、「DB3」の3つの第2のDB3b〜3dの生成が指示されている。また生成要求において、第1の分類識別子「km1,km2」および第2の分類識別子「kd1〜kd4」それぞれに対応するグループへの、第1のレコード群および第2のレコード群の分類が指示されている。さらに生成要求において、第1の分類識別子「km1」に対応するレコードと第2の分類識別子「kd1」に対応するレコードとの格納先は、「DB1」の第2のDB3bに指定されている。第1の分類識別子「km2」に対応するレコードと第2の分類識別子「kd2」に対応するレコードとの格納先が「DB2」の第2のDB3cに指定されている。第2の分類識別子「kd3」に対応するレコードと第2の分類識別子「kd4」に対応するレコードとの格納先が「DB3」の第2のDB3dに指定されている。
サーバ3は、情報処理装置2からの生成要求に応じて、第1のDB3aから第1のレコード群と第2のレコード群とを抽出し、第1のレコード群と第2のレコード群とを含む第2のDB3b〜3dを生成する。次にサーバ3は、第2のDB3b〜3dを暗号化して秘匿化DB2b〜2dを生成する。そしてサーバ3は、秘匿化DB2b〜2dの照合用の第1の鍵3eを生成する。サーバ3は、例えば複数の秘匿化DB2b〜2dごとに異なる第1の鍵3eを生成する。サーバ3は、生成した秘匿化DB2b〜2dと第1の鍵3eとを、情報処理装置2に送信する。
端末装置1は、DUから検索条件が入力されると、秘匿化DB2b〜2dを検索対象とする検索条件を示すクエリを暗号化し、暗号化されたクエリ1cを用いた照合用の第2の鍵1dを生成する。端末装置1は、暗号化されたクエリ1cの第2の鍵1dを、情報処理装置2に送信する。
情報処理装置2は、サーバ3から秘匿化DB2b〜2dと第1の鍵3eとを取得すると共に、端末装置1から暗号化されたクエリ1cと第2の鍵1dとを取得する。そして情報処理装置2は、第1の鍵3eと第2の鍵1dとを用いて、クエリ1cに示される検索条件を満たすレコードを、秘匿化DB2b〜2dから検索する。この検索では、例えばデータを暗号化したままで検索可能な秘匿検索を行うことができる。そして情報処理装置2は、検索結果1eを端末装置1に送信する。
このように情報処理装置2が、サーバ3に対して、第1のレコード群と第2のレコード群とを格納した第2のDB3b〜3dの生成要求を送信することで、第2のDB3b〜3dにダミーレコードを含めることができる。その結果、DUが第1のDB3a内のどのようなデータに関心があるのかについて、サーバ3を管理するDPによる推定が困難となる。すなわち、DUの関心内容の秘匿性が向上している。
また情報処理装置2は、複数の第2のDB3b〜3dの生成の指示、第1のレコード群と第2のレコード群それぞれの複数のグループへの分類の指示、およびグループごとの格納先となる第2のDBの指定を含む生成要求を送信することができる。これにより、サーバ3では、複数の第2のDB3b〜3dが生成され、さらに複数の秘匿化DB2b〜2dが生成される。その結果、秘匿化DB2b〜2dに対する秘匿検索を行う場合の処理負荷を低減できる。すなわち、秘匿検索は、平文に対する検索よりも処理負荷が高いため、秘匿化DB2b〜2dにダミーレコードを含めると、検索の処理負荷がさらに高くなってしまう。そこで複数の秘匿化DB2b〜2dを生成し、DUは、利用したいレコードを含む秘匿化DBを検索対象として検索要求を入力することで、処理負荷の増加を抑止できる。
また複数の秘匿化DB2b〜2dが生成された場合、端末装置1がダミーのクエリを送信することで、DUの関心内容の秘匿性を向上させることもできる。
例えば端末装置1は、第1の秘匿化DBを検索対象とするクエリを暗号化すると共に、第1の秘匿化DBとは別の第2の秘匿化DBを検索対象とする、ダミーの検索条件を示すダミークエリを暗号化する。そして端末装置1は、暗号化したクエリと、暗号化したダミークエリとを情報処理装置2に送信する。
例えば端末装置1は、第1の秘匿化DBを検索対象とするクエリを暗号化すると共に、第1の秘匿化DBとは別の第2の秘匿化DBを検索対象とする、ダミーの検索条件を示すダミークエリを暗号化する。そして端末装置1は、暗号化したクエリと、暗号化したダミークエリとを情報処理装置2に送信する。
情報処理装置2は、サーバ3から第1の秘匿化DBと第1の秘匿化DBの第1の鍵3e、および第2の秘匿化データベースと第2の秘匿化データベースの第1の鍵3eとを取得する。また情報処理装置2は、端末装置1から、暗号化されたクエリと暗号化されたダミークエリと第2の鍵1dとを取得する。
情報処理装置2は、第1の秘匿化DBと第1の秘匿化DBの第1の鍵3eとを用いて、クエリに示される検索条件を満たすレコードを、第1の秘匿化DBから検索する。また情報処理装置2は、第2の秘匿化DBと第2の秘匿化DBの第1の鍵3eとを用いて、ダミークエリに示されるダミーの検索条件を満たすレコードを、第2の秘匿化DBから検索する。
このように、DUが入力した検索条件に応じたクエリによる検索とは別にダミークエリによる検索を行う場合、情報処理装置2は、サーバ3から、第1の秘匿化DBと第2の秘匿化DBそれぞれの第1の鍵3eを取得することとなる。するとサーバ3を管理するDPでは、DUの検索の目的となるレコードが、第1の秘匿化DBに含まれるのか、あるいは第2の秘匿化DBに含まれるのかが不明となる。その結果、DUの関心内容の秘匿性が向上する。
なおサーバ3は、第2のDB3b〜3dを生成する際に、第1のDB3a内の互いに関連するレコードに設定された第1の識別子を、第2の識別子に変換することもできる。例えば第1のDB3a内のレコードに氏名のフィールドがあるとき、特定の人物の氏名が設定された複数のレコードは、互いに関連するレコードである。サーバ3は、レコードの内の氏名(第1の識別子)を例えば仮名(第2の識別子)に変換して、その仮名を含むレコードを第2のDB3b〜3dに格納する。これにより、DUによる、レコードに示される情報に対応する個人の特定が困難となる。
第1の識別子を第2の識別子に変換する際、サーバ3は、1つの第1の識別子を、複数の第2のDB3b〜3dそれぞれで異なる第2の識別子に変換することもできる。これにより、レコードに示される情報に対応する個人の特定の困難性をさらに高めることができる。ただし、DUは、2以上の秘匿化DBにおいて、第1の識別子(氏名)が同じレコードの有無を調査したい場合がある。図1の例であれば、1月に50mgの薬を投与した患者に対して、2月にも同じ50mgの薬を投与したか否かを調査したい場合である。この場合、氏名「A氏」が第2のDB3b〜3cごとに異なる仮名「EFG」、「EEE」に変換されていると、1月に50mgの薬を投与した患者と2月に50mgの薬を投与した患者とが同じ患者なのかが分からない。この場合、情報処理装置2は、サーバ3に名寄せを依頼することができる。
図2は、名寄せを伴う場合の制御方法の一例を示す図である。サーバ3は、第2のDB3b〜3dを生成する際に、第1のDB3a内の互いに関連する複数の関連レコードに共通に設定された第1の識別子を、複数の関連レコードそれぞれの格納先の第2のDB3b〜3dごとに異なる第2の識別子に変換する。次にサーバ3は、第2の識別子を有する複数の関連レコードを複数の第2のDB3b〜3dに格納する。さらにサーバ3は、第1の識別子と第2の識別子との対応関係を示す対照表3fを生成する。
端末装置1は、2以上の第2のDBを検索対象とするクエリを暗号化し、情報処理装置2に送信する。
情報処理装置2は、暗号化された第1のクエリに示される検索条件を満たすレコードの、検索対象の秘匿化DB2b〜2dからの検索を行う。次に情報処理装置2は、検索対象の秘匿化DB2b〜2d内の検索条件を満たすレコードに含まれる第2の識別子のリストである識別子リスト2e,2fを、検索対象の秘匿化DB2b〜2dごとに生成する。そして情報処理装置2は、識別子リスト2e,2fをサーバ3に送信する。
情報処理装置2は、暗号化された第1のクエリに示される検索条件を満たすレコードの、検索対象の秘匿化DB2b〜2dからの検索を行う。次に情報処理装置2は、検索対象の秘匿化DB2b〜2d内の検索条件を満たすレコードに含まれる第2の識別子のリストである識別子リスト2e,2fを、検索対象の秘匿化DB2b〜2dごとに生成する。そして情報処理装置2は、識別子リスト2e,2fをサーバ3に送信する。
サーバ3は、対照表3fに基づいて、識別子リスト2e,2fに示される第2の識別子を、対応する第1の識別子に変換することで、検索対象の秘匿化DB2b〜2dごとの第1の識別子のリストを生成する。次にサーバ3は、検索対象の秘匿化DB2b〜2dごとの第1の識別子のリスト間の和集合または積集合を求める。そしてサーバ3は、求めた和集合または積集合に含まれる第1の識別子の数を検索結果1fとして情報処理装置2に送信する。情報処理装置2は、検索結果1fを端末装置1に転送する。
このように名寄せを行うことで、DUによる個人の情報の特定の困難性を高めながら、2以上の秘匿化DBにおける第1の識別子が同じレコードの有無の検索が可能となる。すなわち、個人情報の秘匿性を高めることによるDUの利便性の低下を抑止することができる。
なお、名寄せを伴う場合においても、端末装置1がダミーのクエリを送信することで、DUの関心内容の秘匿性を向上させることができる。
例えば端末装置1は、第1の秘匿化DBと第2の秘匿化DBとを検索対象とする複数のクエリを暗号化すると共に、第1の秘匿化DBと第2の秘匿化DBとを検索対象とする、複数のダミークエリを暗号化する。そして端末装置1は、暗号化された複数のクエリと暗号化された複数のダミークエリとを情報処理装置2に送信する。
例えば端末装置1は、第1の秘匿化DBと第2の秘匿化DBとを検索対象とする複数のクエリを暗号化すると共に、第1の秘匿化DBと第2の秘匿化DBとを検索対象とする、複数のダミークエリを暗号化する。そして端末装置1は、暗号化された複数のクエリと暗号化された複数のダミークエリとを情報処理装置2に送信する。
情報処理装置2は、複数のクエリそれぞれに示される検索条件を満たすレコードを、第1の秘匿化DBまたは第2の秘匿化DBから検索する。また情報処理装置2は、複数のダミークエリそれぞれに示されるダミーの検索条件を満たすレコードを、第1の秘匿化DBまたは第2の秘匿化DBから検索する。
このようにダミークエリを送信することにより、名寄せの際の和集合または積集合の演算対象となる識別子リストの組み合わせ数が多くなる。その結果、DUの関心内容の秘匿性が向上する。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、DUにおけるデータ利用目的の推定を困難にしながらも、DU側に検索結果からの対象DBの再現の意図がある場合に、DP側においてその意図を検知できるようにした秘密情報管理システムである。
次に第2の実施の形態について説明する。第2の実施の形態は、DUにおけるデータ利用目的の推定を困難にしながらも、DU側に検索結果からの対象DBの再現の意図がある場合に、DP側においてその意図を検知できるようにした秘密情報管理システムである。
図3は、第2の実施の形態に係る秘密情報管理システムの一例を示す図である。第2の実施の形態では、患者データ収集活用基盤12がクラウドによって構築されている。患者データ収集活用基盤12はTTPサーバ100を有している。TTPサーバ100は、患者データを暗号文のままで管理するコンピュータである。TTPサーバ100は、ネットワーク20を介して、病院13のDPサーバ200と製薬企業15のDU端末300に接続されている。
病院13のDPサーバ200は、病院13で受診した患者の電子カルテなどの患者データを蓄積し、その患者データを暗号化してTTPサーバ100に提供するコンピュータである。製薬企業15のDU端末300は、TTPサーバ100で管理されている患者データを検索するために、製薬企業15の社員が使用するコンピュータである。
なおTTPサーバ100は、第1の実施の形態に示した情報処理装置2の一例である。DPサーバ200は、第1の実施の形態に示したサーバ3の一例である。DU端末300は、第1の実施の形態に示した端末装置1の一例である。
このような秘密情報管理システムは、例えば医療情報を活用した新薬開発の効率化に有用である。例えば、製薬企業15が、治験を行う場合、対象疾患の患者がどの程度存在するか等を考慮して計画を立案することで、治験の成功率を向上させることができる。そこで、患者データ収集活用基盤12において多数の病院13に分散する患者の電子カルテから抽出した患者データを集中管理することで、目的の疾患を有する患者の情報を容易に得ることが可能となる。
図4は、TTPサーバのハードウェアの一例を示す図である。TTPサーバ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、TTPサーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、BD(Blu-ray(登録商標) Disc)、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、TTPサーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
TTPサーバ100は、以上のようなハードウェアによって、第2の実施の形態の処理機能を実現することができる。DPサーバ200とDU端末300も、TTPサーバ100と同様のハードウェアにより実現することができる。また、第1の実施の形態に示した端末装置1、情報処理装置2、およびサーバ3も、図4に示したTTPサーバ100と同様のハードウェアにより実現することができる。
TTPサーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。TTPサーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、TTPサーバ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またTTPサーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
図5は、秘密情報管理システムの各装置の機能を示すブロック図である。TTPサーバ100は、分析目的かく乱部110、秘匿化DB取得部120、秘匿化DB記憶部130、および検索部140を有する。
分析目的かく乱部110は、DU端末300からの分類要求に応じて、分類マップの拡張およびデータ分割基準情報の生成を行う。データ分割基準情報は、生成する複数の部分DBそれぞれに格納するレコードの種別を示す情報である。例えば分析目的かく乱部110は、DU端末300から、分類マップを含む分類要求を取得する。分類要求に含まれる分類マップ(真の分類マップ)には、DUが検索対象とすることを希望するレコード内の属性の値(例えば属性「投薬量」の値「50mg」)が指定されている。分析目的かく乱部110は、真の分類マップにダミーのレコード内の属性の値を追加した拡張分類マップを生成する。そして分析目的かく乱部110は、拡張分類マップに示される各属性の値を有するレコードについて、複数の部分DBのどのDBに格納するのかを決定し、決定内容を示すデータ分割基準情報生成する。そして分析目的かく乱部110は、拡張分類マップとデータ分割基準情報とを含む分類要求をDPサーバ200に送信する。また分析目的かく乱部110は、拡張分類マップとデータ分割基準情報とを、DU端末300に送信する。
なお真の分類マップは、第1の実施の形態に示した第1の分類マップ1bの一例である。また拡張分類マップは、第1の実施の形態に示した第2の分類マップ2aの一例である。
秘匿化DB取得部120は、DPサーバ200で暗号化された複数の部分DBをDPサーバ200から取得し、秘匿化DB記憶部130に格納する。
秘匿化DB記憶部130は、暗号化されたデータを記憶するデータベースである。例えばTTPサーバ100のメモリ102またはストレージ装置103の記憶領域の一部が、秘匿化DB記憶部130として使用される。
秘匿化DB記憶部130は、暗号化されたデータを記憶するデータベースである。例えばTTPサーバ100のメモリ102またはストレージ装置103の記憶領域の一部が、秘匿化DB記憶部130として使用される。
検索部140は、DU端末30からの検索要求に応じて、秘匿化DB内のデータ検索を行う。検索要求には、例えば暗号化されたクエリが含まれる。検索部140は、暗号化されたクエリと秘匿化DB内のデータとを暗号化されたまま照合し、クエリに示される検索条件を満たすレコードを抽出する。暗号データ間の照合を行うため、検索部140は、例えばDU端末300とDPサーバ200とのそれぞれから照合鍵を取得する。検索部140は、2つの照合鍵を用いて、クエリおよびデータを復号せずに照合を行う。暗号データのままでの検索技術としては、例えば、前述の特許技術文献1,2に開示された、リレーショナル暗号化(Relational Encryption)を用いた秘匿検索技術がある。
また検索部140は、検索要求に、複数の秘匿化DBの検索結果の名寄せ指示が含まれる場合、秘匿化DBごとの検索結果をDPサーバ200に送信する。名寄せとは、異なる秘匿化DBの検索結果に含まれるレコードのうち、互いに関連するレコードを同じ要素とみなし、秘匿化DBごとの検索結果に示される集合の和集合または積集合内の要素の数を計数する処理である。互いに関連するレコードとは、例えば同じ患者に関するレコードである。検索部140は、DPサーバ200による名寄せ後の検索結果を、DU端末300に送信する。
DPサーバ200は、DB210、分類部220、対照表記憶部230、暗号化部240、および検索支援部250を有する。
DB210は、患者の診療履歴など、秘匿性の高いデータを格納するデータベースである。例えばDPサーバ200が有するストレージ装置の記憶領域の一部が、DB210として使用される。
DB210は、患者の診療履歴など、秘匿性の高いデータを格納するデータベースである。例えばDPサーバ200が有するストレージ装置の記憶領域の一部が、DB210として使用される。
分類部220は、TTPサーバ100からデータ分割基準情報を含む分類要求を取得すると、データ分割基準情報に従って、DB210から抽出したデータを複数の部分DBに分類する。例えば分類部220は、データ分割基準情報に示される数の部分DBを生成する。次に分類部220は、データ分割基準情報に基づいて、各部分DBに対応する属性のデータをDB210から抽出し、抽出したデータを対応する部分DBに格納する。分類部220は、生成した複数の部分DBを暗号化部240に送信する。
なおDB210は、第1の実施の形態に示した第1のDB3aの一例である。また部分DBは、第1の実施の形態に示した第2のDB3b〜3dの一例である。
また分類部220は、部分DBにデータを格納する際、人名を含むデータについては、人名を仮の名前(仮名)に変換する。分類部220は、人名の仮名への変換を行った場合、人名と仮名との対応関係を示す対照表を生成する。分類部220は、生成した対照表を対照表記憶部230に格納する。
また分類部220は、部分DBにデータを格納する際、人名を含むデータについては、人名を仮の名前(仮名)に変換する。分類部220は、人名の仮名への変換を行った場合、人名と仮名との対応関係を示す対照表を生成する。分類部220は、生成した対照表を対照表記憶部230に格納する。
暗号化部240は、分類部220が生成した部分DBを、それぞれ異なる鍵で暗号化する。暗号化部240は、暗号化した後の部分DB(秘匿化DB)を、TTPサーバ100に送信する。また暗号化部240は、各秘匿化DB内のデータの照合に用いる照合鍵を、検索支援部250に送信する。
検索支援部250は、TTPサーバ100による秘匿化DB内のデータ検索を支援する。例えば検索支援部250は、暗号化部240から取得した各秘匿化DBの照合鍵を、対応する秘匿化DBの識別子に対応付けて記憶する。そして検索支援部250は、TTPサーバ100からの要求に応じて、データ検索に使用する照合鍵をTTPサーバ100に送信する。
また検索支援部250は、TTPサーバ100から名寄せ対象の検索結果を取得した場合、対照表に基づいて名寄せを行う。そして検索支援部250は、名寄せ後の検索結果をTTPサーバ100に送信する。
DU端末300は、分類要求部310、分類マップ記憶部320、および検索要求部330を有する。
分類要求部310は、DUにより入力された分析対象を示す真の分類マップを含む分類要求を、TTPサーバ100に送信する。そして分類要求部310は、TTPサーバ100から拡張分類マップとデータ分割基準情報とを取得する。分類要求部310は、取得した拡張分類マップとデータ分割基準情報とを、分類マップ記憶部320に格納する。
分類要求部310は、DUにより入力された分析対象を示す真の分類マップを含む分類要求を、TTPサーバ100に送信する。そして分類要求部310は、TTPサーバ100から拡張分類マップとデータ分割基準情報とを取得する。分類要求部310は、取得した拡張分類マップとデータ分割基準情報とを、分類マップ記憶部320に格納する。
分類マップ記憶部320は、拡張分類マップとデータ分割基準情報とを記憶する。例えばDU端末300が有するメモリまたはストレージ装置の記憶領域の一部が、分類マップ記憶部320として使用される。
検索要求部330は、DUが入力した検索条件に応じたクエリを暗号化し、暗号化されたクエリ(秘匿化クエリ)を含む検索要求をTTPサーバ100に送信する。また検索要求部330は、検索要求に、秘匿化クエリを用いたデータの照合に使用する照合鍵を含める。なお検索要求部330は、検索条件が入力されると、データ分割基準情報を参照し、検索対象の属性のデータを含む秘匿化DBを、検索対象として特定する。そして検索要求部330は、検索要求において、複数の秘匿化DBのうちの検索対象とする秘匿化DBを指定する。
検索要求部330は、TTPサーバ100から検索結果を受け取ると、検索結果をモニタなどに出力する。
検索要求部330は、2以上の秘匿化DBへの検索要求の検索結果の名寄せ指示を検索要求に含めることもできる。さらに検索要求部330は、入力された検索条件に対応する検索要求を送信する際に、ダミーのクエリを暗号化した秘匿ダミークエリを含む検索要求をTTPサーバ100に送信してもよい。この場合、検索要求部330は、入力された検索条件に対応する検索要求と秘匿化クエリに対応する検索要求との送信の順番をランダムに決定する。
検索要求部330は、2以上の秘匿化DBへの検索要求の検索結果の名寄せ指示を検索要求に含めることもできる。さらに検索要求部330は、入力された検索条件に対応する検索要求を送信する際に、ダミーのクエリを暗号化した秘匿ダミークエリを含む検索要求をTTPサーバ100に送信してもよい。この場合、検索要求部330は、入力された検索条件に対応する検索要求と秘匿化クエリに対応する検索要求との送信の順番をランダムに決定する。
なお、図5に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図5に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次に、DPが病院の場合にDB210に格納されるデータの例を説明する。
図6は、DBの一例を示す図である。DB210には、例えば氏名、日時、投薬量、病名、血圧などの項目を有する複数のレコードが登録されている。氏名の項目には、患者の氏名が設定される。日時の項目には、該当患者に対して投薬などの治療を行った日時が設定される。図6の例では、日時のうちの日と時刻は省略されている。投薬量の項目には、患者に投薬された薬の量が設定される。病名の項目には、該当患者の病名が設定される。血圧の項目には、該当患者の投薬時の血圧が設定される。
図6は、DBの一例を示す図である。DB210には、例えば氏名、日時、投薬量、病名、血圧などの項目を有する複数のレコードが登録されている。氏名の項目には、患者の氏名が設定される。日時の項目には、該当患者に対して投薬などの治療を行った日時が設定される。図6の例では、日時のうちの日と時刻は省略されている。投薬量の項目には、患者に投薬された薬の量が設定される。病名の項目には、該当患者の病名が設定される。血圧の項目には、該当患者の投薬時の血圧が設定される。
次に、分類マップ記憶部320に格納される拡張分類マップとデータ分割基準情報との生成例について説明する。
図7は、拡張分類マップとデータ分割基準情報との生成処理の一例を示す図である。DU端末300の分類要求部310は、DUからの分析対象の入力に応じて真の分類マップ31を生成する。図7の例では、DUは、薬50mgを1ヶ月ごとに3ヶ月間投与した患者の数を知りたいものとする。この場合、DUは、分析対象として、例えば2019年1月に50mgの薬を投与された患者、2019年2月に50mgの薬を投与された患者、および2019年3月に50mgの薬を投与された患者を指定する入力を行う。すると分類要求部310は、分析対象を示す真の分類マップ31を生成する。
図7は、拡張分類マップとデータ分割基準情報との生成処理の一例を示す図である。DU端末300の分類要求部310は、DUからの分析対象の入力に応じて真の分類マップ31を生成する。図7の例では、DUは、薬50mgを1ヶ月ごとに3ヶ月間投与した患者の数を知りたいものとする。この場合、DUは、分析対象として、例えば2019年1月に50mgの薬を投与された患者、2019年2月に50mgの薬を投与された患者、および2019年3月に50mgの薬を投与された患者を指定する入力を行う。すると分類要求部310は、分析対象を示す真の分類マップ31を生成する。
真の分類マップ31は、表形式のデータである。真の分類マップ31の一方のラベル(列のラベル)には日付に関する属性の値が設定され、他方のラベル(行のラベル)には投薬量に関する属性の値が設定されている。列と行との交わる位置(セル)には、その位置に対応する属性の値の組み合わせを有するデータが分析対象である場合に、該当するレコードの分類識別子が設定されている。図7の例では、属性の値の組「2019年1月、50mg」のデータの分類識別子は「km1」である。属性の値の組「2019年2月、50mg」のデータの分類識別子は「km2」である。属性の値の組「2019年3月、50mg」のデータの分類識別子は「km3」である。真の分類マップ31において、分析対象の属性に対応する位置以外には、分類識別子は設定されていない。
このような真の分類マップ31を例えばDPに開示すると、DUの分析の意図がDPに推定されてしまう。例えば真の分類マップ31では、1月から3月までの3ヶ月の期間内に薬を50mgだけ投与した患者のデータのみが分析対象となっている。この場合において真の分類マップ31がDPに開示されてしまうと、DPでは、薬50mgを継続して3ヶ月投薬した場合の効果の調査が目的であることが推定できる。
分類要求部310は、真の分類マップ31を含む分類要求を、TTPサーバ100に送信する。するとTTPサーバ100の分析目的かく乱部110は、DUの分析目的を隠ぺいするために、真の分類マップ31にかく乱用の分類識別子を追加した拡張分類マップ32を生成する。以下、かく乱用の分類識別子を、特にダミー分類識別子と呼ぶことがある。
例えば分析目的かく乱部110は、各属性の値の数(列数と行数)が、d個(dは、1以上の整数)以上となるように、拡張分類マップ32を生成する。図7には、d=3の場合の拡張分類マップ32の例が示されている。拡張分類マップ32では、日付の属性の値として「2019年4月」が追加されている。また拡張分類マップ32では、投薬の属性の値として「10mg」が追加されている。
そして拡張分類マップ32で分析対象の範囲として設定された各属性の値の組み合わせのうち、分類識別子が未設定のセルに、ダミー分類識別子が設定されている。例えば属性の値の組「2019年1月、10mg」に対応するセルには、ダミー分類識別子「kd1」が設定されている。属性の値の組「2019年2月、10mg」に対応するセルには、ダミー分類識別子「kd2」が設定されている。属性の値の組「2019年3月、10mg」に対応するセルには、ダミー分類識別子「kd3」が設定されている。属性の値の組「2019年4月、10mg」に対応するセルには、ダミー分類識別子「kd4」が設定されている。属性の値の組「2019年4月、50mg」に対応するセルには、ダミー分類識別子「kd5」が設定されている。
拡張分類マップ32を生成後、分析目的かく乱部110は、データ分割基準情報33を生成する。データ分割基準情報33には、分類識別子に対応するレコードの格納先とする部分DBの識別子が設定されている。例えばデータ分割基準情報33は、拡張分類マップ32と同様のラベルを有する表で表される。その場合、データ分割基準情報33における属性の値の組に対応するセルには、拡張分類マップ32内の同じ位置のセルに設定された分類識別子に対応するレコードの格納先となる部分DBの識別子(部分DB識別子)が設定される。
なお分析目的かく乱部110は、データ分割基準情報33において、例えば1つの部分DB内にn個(nは2以上の整数)以上の分類識別子またはダミー分類識別子を対応付ける。図7の例では、n=2である。この場合、各部分DB内に、属性の値の2種類の組み合わせパターンそれぞれに対応するレコードが格納される。
図7の例では、部分DB識別子「DB1」の部分DBには、分類識別子「km1」に対応する属性の値の組を有するレコードと、ダミー分類識別子「kd1」に対応する属性の値の組を有するレコードとが格納される。部分DB識別子「DB2」の部分DBには、分類識別子「km2」に対応する属性の値の組を有するレコードと、ダミー分類識別子「kd2」に対応する属性の値の組を有するレコードとが格納される。部分DB識別子「DB3」の部分DBには、分類識別子「km3」に対応する属性の値の組を有するレコードと、ダミー分類識別子「kd3」に対応する属性の値の組を有するレコードとが格納される。部分DB識別子「DB4」の部分DBには、ダミー分類識別子「kd4」に対応する属性の値の組を有するレコードと、ダミー分類識別子「kd5」に対応する属性の値の組を有するレコードとが格納される。
分析目的かく乱部110は、拡張分類マップとデータ分割基準情報とを含む分類要求をDPサーバ200に送信する。また分析目的かく乱部110は、拡張分類マップ32とデータ分割基準情報33とを、DU端末300に送信する。拡張分類マップ32とデータ分割基準情報33とを受信したDU端末300では、分類要求部310が、拡張分類マップ32とデータ分割基準情報33とを分類マップ記憶部320に格納する。
データ分割基準情報33を受信したDPサーバ200では、分類部220が、データ分割基準情報33に従って部分DBを生成する。
図8は、部分DBの生成例を示す図である。DPサーバ200の分類部220は、まずデータ分割基準情報33に示される部分DB識別子それぞれに対応する部分DB41〜44を生成する。次に分類部220は、データ分割基準情報33において各部分DB41〜44に対応付けられた分類識別子に対応するレコードをDB210から抽出し、該当する部分DBに格納する。例えば分類部220は、分類識別子「km1」に対応するレコードとダミー分類識別子「kd1」に対応するレコードとを部分DB41に格納する。分類部220は、分類識別子「km2」に対応するレコードとダミー分類識別子「kd2」に対応するレコードとを部分DB42に格納する。分類部220は、分類識別子「km3」に対応するレコードとダミー分類識別子「kd3」に対応するレコードとを部分DB43に格納する。分類部220は、ダミー分類識別子「kd4」に対応するレコードとダミー分類識別子「kd5」に対応するレコードとを部分DB44に格納する。
図8は、部分DBの生成例を示す図である。DPサーバ200の分類部220は、まずデータ分割基準情報33に示される部分DB識別子それぞれに対応する部分DB41〜44を生成する。次に分類部220は、データ分割基準情報33において各部分DB41〜44に対応付けられた分類識別子に対応するレコードをDB210から抽出し、該当する部分DBに格納する。例えば分類部220は、分類識別子「km1」に対応するレコードとダミー分類識別子「kd1」に対応するレコードとを部分DB41に格納する。分類部220は、分類識別子「km2」に対応するレコードとダミー分類識別子「kd2」に対応するレコードとを部分DB42に格納する。分類部220は、分類識別子「km3」に対応するレコードとダミー分類識別子「kd3」に対応するレコードとを部分DB43に格納する。分類部220は、ダミー分類識別子「kd4」に対応するレコードとダミー分類識別子「kd5」に対応するレコードとを部分DB44に格納する。
図8の例では、部分DB41〜44それぞれには、属性の値の2種類の組み合わせパターンそれぞれに対応するレコードが格納される。そのため、DU端末300がいずれかの部分DB内を検索したことをDPが認識しても、DPでは、どのような属性の値を有するレコードが分析目的となっているのかを一意に特定することはできない。すなわち、真の分析目的の推定の尤度が1/n(図8の例では1/2)となるようにかく乱されている。
分類部220は、部分DB41〜44に登録された各レコードに患者の氏名が含まれる場合、部分DB41〜44内の各レコードの氏名を仮名に変換する。この際、分類部220は、1人の氏名について、部分DBごとに異なる仮名に変換する。そして分類部220は、氏名と仮名との対応関係を示す対照表231を生成する。
図9は、対照表の一例を示す図である。対照表231には、氏名の欄と仮名の欄とが設けられている。氏名の欄には、部分DB41〜44のいずれかに格納されたレコードに含まれる氏名が設定される。仮名の欄は、部分DB識別子ごとの欄に分けられている。そして対照表231では、部分DB識別子で示される部分DB内のレコードに示される仮名が、その部分DB識別子の列の、その仮名に対応する氏名の行に設定されている。
例えばDB210において、氏名「Y田T郎」のレコードは2つある。そのうちの1つめのレコード(日時「2019年1月」、投薬量「50mg」)の格納先は、部分DB識別子「DB1」の部分DB41である。もう一方のレコード(日時「2019年2月」、投薬量「50mg」)の格納先は、部分DB識別子「DB2」の部分DB42である。対照表231では、氏名「Y田T郎」のレコードの部分DB41内での仮名は「ABC」であり、部分DB42内での仮名は「AAA」であることが示されている。同様に、他の氏名に対応する部分DBごとの仮名も、対照表231に設定されている。
図10は、部分DBへのレコードの分類例を示す図である。部分DB41〜44には、DB210内のレコードに分類識別子のフィールドを追加したレコードが登録されている。追加された分類識別子のフィールドには、該当するレコードの拡張分類マップ32における分類識別子が設定される。また部分DB41〜44に設定された各レコードの氏名のフィールドは仮名に変換されている。
分類部220は、部分DB41〜44内のレコードをフィールドごとに暗号化して、秘匿化DBを生成する。
図11は、秘匿化DBの生成例を示す図である。例えば分類部220は、部分DB41〜44それぞれを、部分DB41〜44それぞれに対応する鍵で暗号化する。例えば分類部220はDB暗号鍵群45を生成する。DB暗号鍵群45は、部分DB41〜44それぞれに対応するプレ照合鍵(各プレ照合鍵のコードを「K1〜K4」とする)を含む。分類部220は、DB暗号鍵群45に含まれる複数の照合鍵で部分DB41〜44の暗号化を行う。分類部220は、暗号化によって生成された秘匿化DB131〜134をTTPサーバ100に送信する。TTPサーバ100では、秘匿化DB取得部120が秘匿化DB131〜134を受け取り、それらの秘匿化DB131〜134を秘匿化DB記憶部130に格納する。
図11は、秘匿化DBの生成例を示す図である。例えば分類部220は、部分DB41〜44それぞれを、部分DB41〜44それぞれに対応する鍵で暗号化する。例えば分類部220はDB暗号鍵群45を生成する。DB暗号鍵群45は、部分DB41〜44それぞれに対応するプレ照合鍵(各プレ照合鍵のコードを「K1〜K4」とする)を含む。分類部220は、DB暗号鍵群45に含まれる複数の照合鍵で部分DB41〜44の暗号化を行う。分類部220は、暗号化によって生成された秘匿化DB131〜134をTTPサーバ100に送信する。TTPサーバ100では、秘匿化DB取得部120が秘匿化DB131〜134を受け取り、それらの秘匿化DB131〜134を秘匿化DB記憶部130に格納する。
TTPサーバ100では、秘匿化DB131〜134それぞれに識別子(秘匿化DB識別子)が付与されている。図11の例では、秘匿化DB131の秘匿化DB識別子は「Eval1」である。秘匿化DB132の秘匿化DB識別子は「Eval2」である。秘匿化DB133の秘匿化DB識別子は「Eval3」である。秘匿化DB134の秘匿化DB識別子は「Eval4」である。
図12は、秘匿化DB内の暗号化されたレコードの一例を示す図である。秘匿化DB131〜134では、各レコードのフィールドのうち、分類識別子と氏名とのフィールド以外のフィールドに設定された値が、その値ごとに暗号化されている。図12の例では、暗号鍵(K1〜K4)の右の括弧内に示される値が、その暗号鍵で暗号化された値である。
なお分類識別子のフィールドの値は管理用に追加した情報であるため、暗号化は不要である。また氏名のフィールドの値は仮名への変換によって元の名前が既に秘匿化されているため、暗号化は不要である。
DU端末300は、DUから入力された検索条件に基づいて、秘匿化DB131〜134内のデータの秘匿検索を行う。
図13は、秘匿検索処理の概要を示す図である。DU端末300の検索要求部330は、検索条件を示すクエリ51を生成する。次に検索要求部330は、クエリ用の暗号鍵53を用いてクエリを暗号化する(暗号鍵53のコードを「Q」とする)。そして検索要求部330は、暗号化によって生成された秘匿化クエリ52を含む検索要求をTTPサーバ100に送信する。検索要求には、検索対象の秘匿化DBの識別子が含まれる。この際、検索要求部330は、暗号鍵53をプレ照合鍵54に変換する(プレ照合鍵54のコードを「pkq」とする)。プレ照合鍵54は、秘匿検索における照合に用いる鍵である。検索要求部330は、プレ照合鍵54をTTPサーバ100に送信する。
図13は、秘匿検索処理の概要を示す図である。DU端末300の検索要求部330は、検索条件を示すクエリ51を生成する。次に検索要求部330は、クエリ用の暗号鍵53を用いてクエリを暗号化する(暗号鍵53のコードを「Q」とする)。そして検索要求部330は、暗号化によって生成された秘匿化クエリ52を含む検索要求をTTPサーバ100に送信する。検索要求には、検索対象の秘匿化DBの識別子が含まれる。この際、検索要求部330は、暗号鍵53をプレ照合鍵54に変換する(プレ照合鍵54のコードを「pkq」とする)。プレ照合鍵54は、秘匿検索における照合に用いる鍵である。検索要求部330は、プレ照合鍵54をTTPサーバ100に送信する。
検索要求を受信したTTPサーバ100では、検索部140が検索要求に従った検索を行う。例えば検索部140は、DPサーバ200に対して、検索対象の秘匿化DBの照合鍵を要求する。DPサーバ200の検索支援部250は、TTPサーバ100からの要求に応じて、検索対象の秘匿化DBの暗号化に用いた暗号鍵をプレ照合鍵に変換する。そして検索支援部250は、変換によって生成されたプレ照合鍵をTTPサーバ100に送信する。なお検索支援部250は、予めDB暗号鍵群45内の複数の暗号鍵それぞれをプレ照合鍵に変換し、複数のプレ照合鍵を含むプレ照合鍵群46を生成しておいてもよい。
TTPサーバ100の検索部140は、DU端末300とDPサーバ200とのそれぞれから取得したプレ照合鍵を用いて、秘匿化クエリ52に示される検索条件にヒットするレコードを、検索対象の秘匿化DBから検索する。検索部140は検索結果55をDU端末300に送信する。検索結果55には、例えば検索でヒットしたレコードの件数が示されている。
図14は、秘匿検索の一例を示す図である。DPサーバ200の暗号化部240は、部分DB47内のデータを暗号鍵45aで暗号化し、秘匿化DB48を生成する。例えば部分DB47に登録されているレコードの各フィールドには、「A薬」、「B薬」などの薬剤名と、「胃痛」、「がん」などの病名が含まれる。暗号化部240は、レコード内のフィールドごと、そのフィールド内に設定されている文字列を暗号化する。その結果、秘匿化DB48には、フィールド内の文字列ごとの暗号文(「XYZ」、「YZA」など)が含まれる。
暗号化部240は秘匿化DB48をTTPサーバ100に送信する。TTPサーバ100の秘匿化DB取得部120は、秘匿化DB48を秘匿化DB記憶部130に格納する。
DU端末300の検索要求部330は、秘匿化DB48を検索対象とするクエリ56を暗号鍵57で暗号化し、秘匿化クエリ58を生成する。図14の例では、クエリ56内に「A薬」と「胃痛」という2つの単語が含まれている。この場合、検索要求部330は単語ごとに暗号化する。その結果、秘匿化クエリ58には、単語ごとの暗号文「AB1」と「CD2」が含まれる。
DU端末300の検索要求部330は、秘匿化DB48を検索対象とするクエリ56を暗号鍵57で暗号化し、秘匿化クエリ58を生成する。図14の例では、クエリ56内に「A薬」と「胃痛」という2つの単語が含まれている。この場合、検索要求部330は単語ごとに暗号化する。その結果、秘匿化クエリ58には、単語ごとの暗号文「AB1」と「CD2」が含まれる。
また検索要求部330は、暗号鍵57をプレ照合鍵59に変換する。そして検索要求部330は、秘匿化クエリ58とプレ照合鍵59とをTTPサーバ100に送信する。
TTPサーバ100の検索部140は、秘匿化DB48のプレ照合鍵をDPサーバ200に要求する。DPサーバ200の検索支援部250は、部分DB47の暗号化に用いた暗号鍵45aをプレ照合鍵46aに変換し、プレ照合鍵46aをTTPサーバ100に送信する。
TTPサーバ100の検索部140は、秘匿化DB48のプレ照合鍵をDPサーバ200に要求する。DPサーバ200の検索支援部250は、部分DB47の暗号化に用いた暗号鍵45aをプレ照合鍵46aに変換し、プレ照合鍵46aをTTPサーバ100に送信する。
TTPサーバ100の検索部140は、秘匿化DB48内の各暗号文と、秘匿化クエリ58の各暗号文との総当たりの組み合わせを生成し、検証DB141に登録する。検証DB141は、例えばメモリ102またはストレージ装置103に格納される。図14の例では、検証DB141には、「A薬」の暗号文「AB1」と秘匿化DB48内の暗号文それぞれとの組み合わせ、および「胃痛」の暗号文「CD2」と秘匿化DB48内の暗号文それぞれとの組み合わせとが含まれる。
検索部140は、検証DB141内のすべての組み合わせを検証対象として、暗号文の元の平文が一致するか否かを検証する。例えば検索部140は、リレーショナル暗号化技術を用いれば、DU端末300から取得したプレ照合鍵59とDPサーバ200から取得したプレ照合鍵46aを用いて、2つの暗号文が一致するか否かを、その暗号文を復号せずに照合できる。なお検索部140は、プレ照合鍵として復号鍵を取得した場合、各暗号文を復号して、復号後の平文で照合することも可能である。
図14の例では、クエリ56に示される「A薬」を含むレコードとして、1つ目と2つ目のレコードが検出される。またクエリ56に示される「胃痛」を含むレコードとして、1つ目のレコードが検出される。その結果、検索部140からDU端末300へ、該当する患者が「1名」であることを示す検索結果60が送信される。
図15は、秘匿検索の具体例を示す図である。図15は、2019年1月に薬50mgを投与した心臓病の患者の数を検索する例が示されている。DU端末300の検索要求部330は、検索の文字列として「心臓病」を含むクエリ61を生成する。検索要求部330は、生成したクエリ61を暗号鍵で暗号化し、秘匿化クエリ62を生成する。検索要求部330は、日時「2019年1月」と投薬量「50mg」との属性の値の組に対応するレコードを含む秘匿化DB131を検索対象として指定し、秘匿化クエリ62を含む検索要求をTTPサーバ100に送信する。
TTPサーバ100の検索部140は、DU端末300から秘匿化クエリ62に対応するプレ照合鍵59を取得すると共に、DPサーバ200から、秘匿化DB131に対応するプレ照合鍵46bを取得する。次に、検索部140は、秘匿化DB131内の日時、投薬量、病名、血圧それぞれの暗号文と、秘匿化クエリ62に示される暗号文との組み合わせを有する検証DB142を生成する。そして検索部140は、2つのプレ照合鍵59,46bを用いて、検証DB142における暗号文の組ごとに、暗号文の元の平文同士の同一性を検証する。図15の例では、検証DB142の2つ目のレコードの「病名」のフィールドの暗号文と、秘匿化クエリ62の暗号文と検証結果のみが一致となる。
検索部140は、例えば、レコード内の各フィールドの値の検証結果を示す検証結果表63を生成する。検証結果表63では、検証によって一致と判定されたレコードのフィールドに対応する位置に、一致を示すフラグ「1」が設定されている。また検証結果表63では、検証によって不一致と判定されたレコードのフィールドに対応する位置に、不一致を示すフラグ「0」が設定されている。
そして、検索部140は、検証結果表63において、少なくとも1つのフィールドに一致を示すフラグ「1」が設定されたレコードの数を計数する。そして検索部140は、計数した結果を、検索結果64(検索条件に合致する患者数)としてDU端末300に送信する。
このような秘匿検索では、秘匿化DB48のフィールドごとの暗号文それぞれと、クエリに示された単語ごとの暗号文それぞれとの総当たりの組み合わせすべてについて、検証処理を行うこととなる。そのため、検索対象のDB内のデータ量が膨大になると、TTPサーバ100における検索処理の負荷が過大となる。第2の実施の形態では、DUからの要求に応じて予め部分DB47を生成し、部分DB47を暗号化した秘匿化DB48のみを検索対象とすることができる。その結果、検証DB141内に登録される検証対照の暗号文の組み合わせ数が抑止され、検索処理負荷が軽減されている。
さらに、図13に示すように多数の秘匿化DB131〜134が生成され、秘匿化DB131〜134それぞれが異なる暗号鍵で暗号化されている。そのため、DUがすべての秘匿化DB131〜134についての網羅的な検索を試みる場合には、DU端末300は、秘匿化DB131〜134ごとに異なるプレ照合鍵をDPサーバ200から取得することとなる。網羅的な検索とは、DB内に含まれる可能性のあるすべてのキーワードを用いて、すべての秘匿化DB131〜134を検索するような検索である。網羅的な検索は、例えばDB210の内容全体を推定することを目的として行われる場合がある。
網羅的な検索が行われると、DPサーバ200に対するプレ照合鍵の取得要求が頻発し、DPサーバ200において、DU端末300が網羅的に検索を試みていることを検知できる。DPサーバ200では、網羅的な検索を検知した場合、その後の検索に対するプレ照合鍵の送信を抑止することができる。プレ照合鍵の送信を抑止することで、DB210の内容が推定されることを抑止できる。
また各秘匿化DB131〜134には、n個以上の種類のデータが含まれている。そのため、DUの検索目的がかく乱されている。
図16は、検索目的のかく乱の第1の例を示す図である。図16では、図15に示した検索におけるかく乱状況を示している。この例では、検索対象は秘匿化DB131である。TTPサーバ100がこの検索を実施するには、DPサーバ200から秘匿化DB131用のプレ照合鍵46bを取得することとなる。するとDP側では、DUの検索目的に応じた検索対象が、ダミー分類識別子「kd1」に対応するレコードまたは分類識別子「km1」に対応するレコードのいずれかであることしか分からない。すなわちDP側では、DUが2019年1月に薬を50mg投薬した患者数を知りたいのか、あるいは2019年1月に薬を10mg投薬した患者数を知りたいのかが分からない。
図16は、検索目的のかく乱の第1の例を示す図である。図16では、図15に示した検索におけるかく乱状況を示している。この例では、検索対象は秘匿化DB131である。TTPサーバ100がこの検索を実施するには、DPサーバ200から秘匿化DB131用のプレ照合鍵46bを取得することとなる。するとDP側では、DUの検索目的に応じた検索対象が、ダミー分類識別子「kd1」に対応するレコードまたは分類識別子「km1」に対応するレコードのいずれかであることしか分からない。すなわちDP側では、DUが2019年1月に薬を50mg投薬した患者数を知りたいのか、あるいは2019年1月に薬を10mg投薬した患者数を知りたいのかが分からない。
秘匿化DB131〜134は、n個の以上の種類のデータが含まれているため、少なくとも1/nかく乱が達成できている。
なおDUは、複数のキーワードの論理積または論理和を検索条件として入力することができる。このとき検索条件に含まれる複数のキーワードに応じた検索対象の秘匿化DBが異なる場合がある。秘匿化DB131〜134のレコードでは氏名の値として秘匿化DB131〜134ごとに異なる仮名が用いられているため、氏名の欄の値を参照しても、同一の人物に関するレコードが秘匿化DB131〜134それぞれのどのレコードなのかを判別できない。そこで検索部140は、2以上の秘匿化DBが検索対象となった場合、DPサーバ200に名寄せ要求を行う。
なおDUは、複数のキーワードの論理積または論理和を検索条件として入力することができる。このとき検索条件に含まれる複数のキーワードに応じた検索対象の秘匿化DBが異なる場合がある。秘匿化DB131〜134のレコードでは氏名の値として秘匿化DB131〜134ごとに異なる仮名が用いられているため、氏名の欄の値を参照しても、同一の人物に関するレコードが秘匿化DB131〜134それぞれのどのレコードなのかを判別できない。そこで検索部140は、2以上の秘匿化DBが検索対象となった場合、DPサーバ200に名寄せ要求を行う。
図17は、名寄せを伴う秘匿検索の一例を示す図である。DU端末300の検索要求部330が、3つの秘匿化DB131〜133を検索対象とするクエリ71を生成したものとする。検索要求部330は、クエリ71をプレ照合鍵59で暗号化し、秘匿化DB131〜133を検索対象として、秘匿化クエリ72を含む検索要求をTTPサーバ100に送信する。
TTPサーバ100の検索部140は、秘匿化DB131〜133それぞれを検索対象として、秘匿化クエリ72による秘匿検索を行う。そして検索部140は、秘匿化DB131〜133それぞれにおいて検索でヒットしたレコードの氏名のフィールドの値を取得し、対象者IDリスト73を生成する。対象者IDリスト73には、例えば秘匿化DB131〜133それぞれの秘匿化DB識別子(Eval1,Eval2,Eval3)に対応付けて、秘匿化DBでヒットしたレコードに示される仮名が設定されている。
検索部140は、生成した対象者IDリスト73を含む名寄せ要求をDPサーバ200に送信する。DPサーバ200の検索支援部250は、対照表231を参照し、名寄せを行う。すなわち検索支援部250は、検索対象の秘匿化DB131〜133ごとに、対象者IDリスト73において、その秘匿化DBに対応付けて仮名が登録されている氏名の集合を生成する。そして検索支援部250は、秘匿化DB131〜133ごとの集合の積集合または和集合を生成する。積集合とするのか和集合とするのかは、DU端末300が送信する名寄せの指示に示され、TTPサーバ100からDPサーバ200に伝えられる。
例えば積集合を求める場合、検索支援部250は、対照表231に登録されている氏名ごとに、その氏名の仮名が、対象者IDリスト73の秘匿化DB131〜133それぞれに対応付けて登録されているか否かを判断する。検索支援部250は、検索対象となっている秘匿化DB131〜133のすべてに対応付けて仮名が登録されている氏名を抽出し、積集合に含める。図17例では「Y岡T司」のみが積集合に含められる。
なお和集合を求める場合、検索支援部250は、検索対象となっている秘匿化DB131〜133うちの少なくとも1つに対応付けて仮名が登録されている氏名を抽出し、和集合に含める。
検索支援部250は、名寄せによって得られた集合(積集合または和集合)に含まれる氏名の件数を検索結果74としてDU端末300に送信する。
このように、検索対象が複数の部分DBに小分けにされているため、DU端末300は、複数の部分DBそれぞれでヒットしたレコードの連結状態を確認しないと知見が得られない。すなわち検索状況をDPサーバ200で監視可能となる。DPサーバ200では、例えば、多量のクエリ送付によるデータ復元攻撃を検知した場合には、名寄せを抑止することで、その攻撃に対する防御が可能となる。
このように、検索対象が複数の部分DBに小分けにされているため、DU端末300は、複数の部分DBそれぞれでヒットしたレコードの連結状態を確認しないと知見が得られない。すなわち検索状況をDPサーバ200で監視可能となる。DPサーバ200では、例えば、多量のクエリ送付によるデータ復元攻撃を検知した場合には、名寄せを抑止することで、その攻撃に対する防御が可能となる。
さらにDUは、秘匿化DBの検証方法が知られたくない場合は、DU端末300により、ダミークエリをTTPサーバ100に送信することで、さらにかく乱することもできる。
図18は、検索目的のかく乱の第2の例を示す図である。例えばDU端末300の検索要求部330は、検索条件が入力されると、その検索条件に応じたクエリ75と検索条件とは無関係のダミークエリ77とを生成する。ダミークエリ77は、例えばクエリ75とは別の秘匿化DBを検索対象とするクエリである。図18の例では、クエリ75の検索対象は、秘匿化DB131であり、ダミークエリ77の検索対象は秘匿化DB134である。
次に検索要求部330は、クエリ75とダミークエリ77とを暗号化し、秘匿化クエリ76,78を生成する。そして検索要求部330は、秘匿化クエリ76,78それぞれを含む検索要求をTTPサーバ100に送信する。
TTPサーバ100の検索部140は、秘匿化クエリ76,78に応じて秘匿検索を行う。その際、検索部140は、検索対象となっている秘匿化DB131,134それぞれのプレ照合鍵46b,46cをDPサーバ200から取得する。検索部140は、秘匿化クエリ76,78それぞれの検索結果79a,79bをDU端末300に送信する。DU端末300の検索要求部330は、秘匿化クエリ76の検索結果79aのみを採用し、秘匿化クエリ78の検索結果79bは破棄する。
この場合、DPサーバ200では、分析目的が、ダミー分類識別子「kd1」、分類識別子「km1」、ダミー分類識別子「kd4」、ダミー分類識別子「kd5」のいずれかに対応するレコードの検索であることしか把握できない。従ってDPサーバ200でDU側の分析目的を推定しようとしても、1/4(=1/2n)の尤度までしか絞り込みができない。すなわち分析目的を推定の尤度が1/2nとなるようにかく乱が達成されている。
名寄せを行う際には、さらに大きくかく乱することも可能である。
図19は、検索目的のかく乱の第3の例を示す図である。例えばDU端末300の検索要求部330は、複数の秘匿化DBを検索対象とする検索条件が入力されると、検索対象の秘匿化DBごとのクエリ81,85とダミークエリ82,86とを生成する。図19の例では、クエリ81とダミークエリ82との検索対象は、秘匿化DB131である。クエリ85とダミークエリ86との検索対象は、秘匿化DB132である。
図19は、検索目的のかく乱の第3の例を示す図である。例えばDU端末300の検索要求部330は、複数の秘匿化DBを検索対象とする検索条件が入力されると、検索対象の秘匿化DBごとのクエリ81,85とダミークエリ82,86とを生成する。図19の例では、クエリ81とダミークエリ82との検索対象は、秘匿化DB131である。クエリ85とダミークエリ86との検索対象は、秘匿化DB132である。
クエリ81は、例えば分類識別子「km1」に対応するレコードのうち、20才の女性のデータを検索するクエリである。ダミークエリ82は、例えばダミー分類識別子「kd1」に対応するレコードのうち、20才の女性のデータを検索するクエリである。クエリ85は、例えば分類識別子「km2」に対応するレコードのうち、20才の女性のデータを検索するクエリである。ダミークエリ86は、例えばダミー分類識別子「kd2」に対応するレコードのうち、20才の女性のデータを検索するクエリである。
この検索の目的は、例えば2019年1月から2019年2月にかけて連続で入院している20才の女性の患者の数の調査であるものとする。また秘匿化DB131には、2019年1月の入院患者のデータが含まれており、秘匿化DB132には、2019年2月の入院患者のデータが含まれているものとする。この場合、該当者の人数を調査するには、秘匿化DB131,132の両方で条件に合致する人物の人数を調査することとなる。
検索要求部330は、クエリ81,85とダミークエリ82,86それぞれを暗号化して、秘匿化クエリ83,84,87,88を生成する。そして検索要求部330は、秘匿化クエリ83,84,87,88をTTPサーバ100に送信する。
TTPサーバ100の検索部140は、プレ照合鍵を用いて、秘匿化クエリ83,84,87,88それぞれに応じた秘匿検索を行う。なお図19では、プレ照合鍵の図示は省略されている。そして検索部140は、検索にヒットしたレコードの氏名として登録されている仮名を含む対象者IDリスト91a,91b,92a,92bを生成する。例えば秘匿化クエリ83,84による秘匿検索の結果が対象者IDリスト91a,91bに示されており、秘匿化クエリ87,88による秘匿検索の結果が対象者IDリスト92a,92bに示されている。検索部140は、対象者IDリスト91a,91b,92a,92bをDPサーバ200に送信し、名寄せ(積集合の生成)を要求する。
DPサーバ200の検索支援部250は、秘匿化クエリ83,84に応じた対象者IDリスト91a,91bのうちの1つと、秘匿化クエリ87,88に応じた対象者IDリスト92a,92bのうちの1つとの組み合わせごとに名寄せを行う。例えば検索支援部250は、対象者IDリストの組み合わせごとに、積集合に含まれる氏名の数を集計する。そして検索支援部250は、集計結果を含む検索結果93をDU端末300に送信する。検索結果93のうち、DU端末300において使用するのは、秘匿化クエリ83による分類識別子「km1」のレコードの検索結果と、秘匿化クエリ87による分類識別子「km2」のレコードの検索結果との積集合の数「2」だけである。
図19の例では、DPサーバ200において検索目的を推定しても、検索結果93に示される検索対象となったデータの組み合わせのうち、本当の検索目的がどの組み合わせなのかは不明となる。名寄せが行われる組み合わせはn2個となるため、尤度が1/n2になるようなかく乱が達成されている。
以下、図20と図21とを参照し、ダミークエリを用いた検索目的のかく乱例について具体的に説明する。
図20は、ダミークエリを用いた検索目的かく乱の一例を示す第1の図である。図20には、2019年の1月と2月とに薬50mgを投与した患者の患者数を調査する場合の例が示されている。この場合、DU端末300の検索要求部330は、検索のキーワード「心臓病」を含むクエリ401を生成する。また検索要求部330は、例えば検索のキーワード「肺炎」を含むダミークエリ402を生成する。
図20は、ダミークエリを用いた検索目的かく乱の一例を示す第1の図である。図20には、2019年の1月と2月とに薬50mgを投与した患者の患者数を調査する場合の例が示されている。この場合、DU端末300の検索要求部330は、検索のキーワード「心臓病」を含むクエリ401を生成する。また検索要求部330は、例えば検索のキーワード「肺炎」を含むダミークエリ402を生成する。
検索要求部330は、生成したクエリ401を暗号化し、秘匿化クエリ403を生成する。また検索要求部330は、ダミークエリ402を暗号化し、秘匿化ダミークエリ404を生成する。
検索要求部330は、データ分割基準情報33(図7参照)に基づいて、2019年1月に薬50mgを投与したことを示すレコードは、部分DB識別子「DB1」の部分DB41に格納されていることを認識する。また検索要求部330は、データ分割基準情報33に基づいて、2019年2月に薬50mgを投与したことを示すレコードは、部分DB識別子「DB2」の部分DB42に格納されていることを認識する。
そこで検索要求部330は、部分DB41に対応する秘匿化DB131と部分DB42に対応する秘匿化DB132とを検索対象として、秘匿化クエリ403を含む検索要求をTTPサーバ100に送信する。検索要求では、例えば、秘匿化DB131,132それぞれの秘匿化DB識別子「Eval1」、「Eval2」によって、検索対象が指定される。
検索要求を受信したTTPサーバ100では、検索部140が、秘匿化DB131,132それぞれに対応する検証DB143,144を生成する。検証DB143,144では、各レコードの分類識別子と氏名以外のフィールドの値それぞれと、検索要求に示される秘匿化クエリ403との組が設定されている。
図21は、ダミークエリを用いた検索目的かく乱の一例を示す第2の図である。検索要求部330は、部分DB41に対応する秘匿化DB131と部分DB42に対応する秘匿化DB132とを検索対象として、秘匿化ダミークエリ404を含む検索要求をTTPサーバ100に送信する。検索要求では、例えば、秘匿化DB131,132それぞれの秘匿化DB識別子「Eval1」、「Eval2」によって、検索対象が指定される。
検索要求を受信したTTPサーバ100では、検索部140が、秘匿化DB131,132それぞれに対応する検証DB145,146を生成する。検証DB145,146では、各レコードの分類識別子と氏名以外のフィールドの値それぞれと、検索要求に示される秘匿化ダミークエリ404との組が設定されている。
検索部140は、生成した検証DB143〜146に設定された暗号化された値の組について、プレ照合鍵を用いて元の平文の同一性を検証する。
図22は、検証DBの検証結果の一例を示す図である。検証DB143の検証結果が検証結果表411に示されている。図20に示したような検証DB143では、2つ目のレコードの病名のフィールドのみが平文一致と判定される。そこで検証結果表411では、2つ目のレコードの病名のフィールドに一致を示す値「1」が設定され、他のフィールドにはすべて「0」が設定されている。
図22は、検証DBの検証結果の一例を示す図である。検証DB143の検証結果が検証結果表411に示されている。図20に示したような検証DB143では、2つ目のレコードの病名のフィールドのみが平文一致と判定される。そこで検証結果表411では、2つ目のレコードの病名のフィールドに一致を示す値「1」が設定され、他のフィールドにはすべて「0」が設定されている。
検証DB144の検証結果が検証結果表412に示されている。図20に示したような検証DB144では、3つ目のレコードの病名のフィールドのみが、平文一致と判定される。そこで検証結果表412では、3つ目のレコードの病名のフィールドに一致を示す値「1」が設定され、他のフィールドにはすべて「0」が設定されている。
検証DB145の検証結果が検証結果表413に示されている。図21に示したような検証DB145では、すべてのフィールドについて平文不一致と判定される。そこで検証結果表413では、すべてのレコードのすべてのフィールドに「0」が設定されている。
検証DB146の検証結果が検証結果表414に示されている。図21に示したような検証DB146では、2つ目のレコードの病名のフィールドのみが、平文一致と判定される。そこで検証結果表414では、2つ目のレコードの病名のフィールドに一致を示す値「1」が設定され、他のフィールドにはすべて「0」が設定されている。
検索部140は、検証結果表411〜414それぞれから、少なくとも1つのフィールドに「1」が設定されたレコードの分類識別子と氏名との値の組を抽出する。そして検索部140は、検証結果表411〜414それぞれに対応する対象者IDリスト421〜424を生成する。対象者IDリスト421〜424には、部分DB識別子と分類識別子との組に対応付けて、その分類識別子を有するレコードから抽出された氏名の値(仮名)が設定されている。
検索部140は、対象者IDリスト421〜424に基づいて、クロス集計表を生成する。
図23は、クロス集計表の生成例を示す図である。検索部140は、検証結果表411〜414ごとに生成された対象者IDリスト421〜424をマージする。例えば検索部140は、異なる対象者IDリストにおける同じ分類識別子の仮名のリストを、1つのリストに纏める。図23の例ではマージ処理により、部分DB41に設定されたレコードから抽出された仮名一覧を示す対象者IDリスト431と、部分DB42に設定されたレコードから抽出された仮名一覧を示す対象者IDリスト432とが生成されている。
図23は、クロス集計表の生成例を示す図である。検索部140は、検証結果表411〜414ごとに生成された対象者IDリスト421〜424をマージする。例えば検索部140は、異なる対象者IDリストにおける同じ分類識別子の仮名のリストを、1つのリストに纏める。図23の例ではマージ処理により、部分DB41に設定されたレコードから抽出された仮名一覧を示す対象者IDリスト431と、部分DB42に設定されたレコードから抽出された仮名一覧を示す対象者IDリスト432とが生成されている。
検索部140は、マージ後の対象者IDリスト431,432をDPサーバ200に送信する。DPサーバ200では、検索支援部250が、対照表231に基づいてクロス集計表433を生成する。
例えば検索支援部250は、対象者IDリスト431に示される部分DB識別子と分類識別子との組を行のラベルに設定し、対象者IDリスト432に示される部分DB識別子と分類識別子との組を列のラベルに設定したクロス集計表433を生成する。クロス集計表433の各セルの値の初期値は「0」である。
次に検索支援部250は、対象者IDリスト431に示される分類識別子と、対象者IDリスト432に示される分類識別子との組を生成する。さらに検索支援部250は、対象者IDリスト431,432に登録されている仮名に対応する氏名を、対照表231から取得する。そして分類識別子の組ごとに、対象者IDリスト431,432内に両方の分類識別子に対応付けて仮名が設定されている氏名の数を求め、集計結果をクロス集計表433の対応する位置に設定する。
図23の例では、対象者IDリスト431の分類識別子「km1」に設定されている仮名「EFG」に対応する氏名は「Y岡T司」である。また対象者IDリスト432の分類識別子「km2」に設定されている仮名「EEE」に対応する氏名も「Y岡T司」である。従って氏名「Y岡T司」に対応する仮名が、分類識別子「km1」と分類識別子「km2」との両方に登録されていることとなる。そこで検索支援部250は、クロス集計表433の分類識別子「km1」の行と分類識別子「km2」の列とが交わる位置のセルに「1」を設定する。
検索支援部250は、生成したクロス集計表433をTTPサーバ100に送信する。TTPサーバ100の検索部140は、そのクロス集計表433をDU端末300に検索結果として送信する。
このようなクロス集計表433の生成処理がDPサーバ200で行われることで、DB210の秘匿性を高めることができる。なお検索処理の一部がDPサーバ200で行われているものの、DPサーバ200において知り得る情報は少なく、DP側ではDU側の検索目的を知ることはできない。
図24は、クロス集計表の生成を担うことでDPサーバが知り得る情報の一例を示す図である。対象者IDリスト431,432と対照表231は、クロス集計表433の生成に使用するため、DP側でその内容を参照することも可能である。また、秘匿化DB131,132はDPサーバ200で生成されており、生成後もDPサーバ200がストレージ装置などに保存しておくことで、DP側でその内容を参照することが可能である。
DPサーバ200において、これらの情報を組み合わせて知り得る情報は、対象者IDリスト431,432に示される仮名に対応するレコードが検索でヒットしたことである。図24の例は、秘匿化DB131の2つ目のレコード、および秘匿化DB132の2つ目と3つ目のレコードがヒットしたことが分かる。またDPサーバ200では、対照表231を参照し、秘匿化DB131,132内の該当レコードの氏名に設定されている仮名を、元の氏名に戻すことができる。
しかしDPにおいて知り得る情報には、投薬量「10mg」、病名「肺炎」の患者のレコードが含まれている。そのためDPが知り得る情報だけでは、2019年1月と2月に薬50mgを投与した心臓病の患者数を検索していることまでは理解できない。従って、DUの分析目的が適切にかく乱されている。
次に、秘匿検索処理の手順について、シーケンス図を参照して説明する。
図25は、秘匿検索処理の手順を示すシーケンス図である。DU端末300は、DUからの入力に基づいて真の分類マップを生成する(ステップS11)。DU端末300は、生成した分類マップをTTPサーバ100に送信する。
図25は、秘匿検索処理の手順を示すシーケンス図である。DU端末300は、DUからの入力に基づいて真の分類マップを生成する(ステップS11)。DU端末300は、生成した分類マップをTTPサーバ100に送信する。
TTPサーバ100は、DU端末300から取得した分類マップにダミー分類識別子を追加することで、拡張分類マップを生成する(ステップS12)。このとき、TTPサーバ100は、拡張分類マップに示される分類識別子それぞれに対応するレコードの格納先を示すデータ分割基準情報を生成する。TTPサーバ100は、拡張分類マップとデータ分割基準情報とをDPサーバ200に送信する。
DPサーバ200は、拡張分類マップとデータ分割基準情報とに基づいて1以上の部分DB(DBm)を生成する(ステップS13)。部分DB(DBm)は、元のDBの部分集合である(DBm∈DB)。生成された部分DB(DBm)の氏名は、部分DB(DBm)ごとに異なる仮名(Pm)に置き換えられている。そのため、複数の部分DB(DBm)から特定の人物のレコードを抽出することはできない。
DPサーバ200は、氏名と仮名との対応関係を示す対照表R(DBm)を生成する(ステップS14)。次にDPサーバ200は、DBの暗号化に使用する暗号鍵Kmを生成する(ステップS15)。さらにDPサーバ200は、生成した暗号鍵Kmで部分DB(DBm)を暗号化する(ステップS16)。DPサーバ200は、暗号化によって生成された秘匿化DB(EncKm(DBm))をTTPサーバ100に送信する。
他方、DU端末300は、検索条件の入力に応じて、その検索条件を示すクエリを生成する(ステップS17)。次にDU端末300は、クエリ暗号鍵Qを生成する(ステップS18)。そしてDU端末300は、クエリ暗号鍵Qを用いてクエリを暗号化し、秘匿化クエリ(EncQ(Query))を生成する(ステップS19)。DU端末300は、生成した秘匿化クエリ(EncQ(Query))をTTPサーバ100に送信する。
TTPサーバ100は、秘匿化DB(EncKm(DBm))内の暗号データと秘匿化クエリ(EncQ(Query))との組を登録した検証DBを生成する(ステップS20)。そしてTTPサーバ100は、DPサーバ200とDU端末300とにプレ照合鍵を要求する(ステップS21)。
DU端末300は、クエリ暗号鍵Qに基づいてプレ照合鍵pkqを生成する(ステップS22)。そしてDU端末300は、生成したプレ照合鍵pkqをTTPサーバ100に送信する。同様にDPサーバ200は、DBの暗号鍵Kmに基づいてプレ照合鍵pkmを生成する(ステップS23)。そしてDPサーバ200は、生成したプレ照合鍵pkmをTTPサーバ100に送信する。
TTPサーバ100は、2つのプレ照合鍵を用いて、検証DB内の暗号データそれぞれと秘匿化クエリとを照合し、暗号データの元の平文が秘匿化クエリの生成元となったクエリの検索条件に合致するか否かを判断する(ステップS24)。TTPサーバ100は、合致したレコードの件数を、検索結果としてDU端末300に送信する。DU端末300は、検索結果を表示する(ステップS25)。
図25に示したのは、DPサーバ200における名寄せが不要な場合の例である。名寄せを行う場合、図25のステップS17以降の処理が異なる。
図26は、名寄せを伴う秘匿検索処理の手順を示すシーケンス図である。なお秘匿化DBを生成しTTPサーバ100に送信するまでの処理は、図25のステップS11〜S16と同様である。
図26は、名寄せを伴う秘匿検索処理の手順を示すシーケンス図である。なお秘匿化DBを生成しTTPサーバ100に送信するまでの処理は、図25のステップS11〜S16と同様である。
DU端末300は、検索条件の入力に応じて、その検索条件を示すクエリを生成する(ステップS31)。例えば2以上の秘匿化DBに格納されているレコードを対象とする検索条件が入力された場合、DU端末300は、検索対象の秘匿化DBごとのクエリを生成する。次にDU端末300は、クエリ暗号鍵Qを生成する(ステップS32)。そしてDU端末300は、検索対象の秘匿化DBごとのクエリそれぞれを、クエリ暗号鍵Qを用いて暗号化し、秘匿化クエリ(EncQ(Query))を生成する(ステップS33)。DU端末300は、検索対象の秘匿化DBごとに生成した秘匿化クエリ(EncQ(Query))を含む検索要求を、TTPサーバ100に送信する。この際、DU端末300は、検索要求に、名寄せ依頼と検索対象の秘匿化DBの秘匿化DB識別子とを含める。
TTPサーバ100は、秘匿化DB(EncKm(DBm))内の暗号データと秘匿化クエリ(EncQ(Query))との組を登録した検証DBを、検索対象の秘匿化DBごとに生成する(ステップS34)。そしてTTPサーバ100は、DPサーバ200とDU端末300とにプレ照合鍵を要求する(ステップS35)。
DU端末300は、クエリ暗号鍵Qに基づいてプレ照合鍵pkqを生成する(ステップS36)。そしてDU端末300は、生成したプレ照合鍵pkqをTTPサーバ100に送信する。同様にDPサーバ200は、DB暗号鍵Kmに基づいてプレ照合鍵pkmを生成する(ステップS37)。そしてDPサーバ200は、生成したプレ照合鍵pkmをTTPサーバ100に送信する。
TTPサーバ100は、2つのプレ照合鍵を用いて、検証DB内の暗号データそれぞれと秘匿化クエリとを照合し、暗号データの元の平文が秘匿化クエリの生成元となったクエリの検索条件に合致するか否かを判断する(ステップS38)。TTPサーバ100は、検索対象の秘匿化DBごとの対象者IDリストを生成する(ステップS39)。そしてTTPサーバ100は、生成した対象者IDリストを含む名寄せ要求を、DPサーバ200に送信する。名寄せ要求には、名寄せの内容(例えば仮名の積集合の生成)が示されている。
DPサーバ200は、名寄せ要求に応じて名寄せを行い、クロス集計表を生成する(ステップS40)。そしてDPサーバ200は、生成したクロス集計表をTTPサーバ100に送信する。TTPサーバ100は、クロス集計表を、検索結果としてDU端末300に送信する(ステップS41)。DU端末300は、検索結果を表示する(ステップS42)。
このようにして、名寄せを伴う秘匿検索が行われる。名寄せを行うこととなっても、仮名に対応する氏名の情報は、DPサーバ200内で秘匿しておくことができ、開示された情報に基づいて個人が特定されることが抑止されている。
次に、拡張分類マップ生成処理の手順について詳細に説明する。
図27は、拡張分類マップ生成処理の手順の一例を示すフローチャートである。以下、図27に示す処理をステップ番号に沿って説明する。
図27は、拡張分類マップ生成処理の手順の一例を示すフローチャートである。以下、図27に示す処理をステップ番号に沿って説明する。
[ステップS101]分析目的かく乱部110は、真の分類マップMの大きさM(x,y)を取得する。分類マップの大きさは、分類識別子が設定されたセルのx軸方向の幅x(列数)とy軸方向の幅y(行数)である。例えば分析目的かく乱部110は、分類マップM内の分類識別子が設定されたセル間の距離が最も遠い分類識別子対を求め、その分類識別子対が設定された二点を対角とする四角形を作る。分析目的かく乱部110は、生成した四角形の大きさをM(x,y)とする。なお分類マップMは,M(x,y)より大きく作られており,M(x,y)は常に分類マップMの中に存在する。
図28は、真の分類マップの大きさの判断例を示す図である。分類マップ501には、3行目の1列目から3列目までのセルに、分類識別子が設定されている。また1行目と2行目それぞれの3列目のセルにも分類識別子が設定されている。この例では、3行目の1列目のセルの分類識別子「km1」と、1行目の3列目のセルの分類識別子「km5」との対が、最も遠い分類識別子対となる。この分類識別子対を対角として含む四角形は、1〜3行目と1〜3列目との交わる範囲である。この範囲の大きさは、3行3列である。従って、真の分類マップ501n大きさは、km(3,3)となる。
以下、図27の説明に戻る。
[ステップS102]分析目的かく乱部110は、(x+i>d,y+j>d)となる(i,j)を求める(i,jは1以上の整数)。dは、予め設定された拡張分類マップの縦または横の最小サイズである。分析目的かく乱部110は、例えばi,jの最大値を予め設定しておき、(x+i>d,y+j>d)を満たす最大値以下のランダムな値を、i,jに決定する。なおi,jそれぞれが1以上であることにより、拡張分類マップに、ダミー分類識別子を常に追加することができる。
[ステップS102]分析目的かく乱部110は、(x+i>d,y+j>d)となる(i,j)を求める(i,jは1以上の整数)。dは、予め設定された拡張分類マップの縦または横の最小サイズである。分析目的かく乱部110は、例えばi,jの最大値を予め設定しておき、(x+i>d,y+j>d)を満たす最大値以下のランダムな値を、i,jに決定する。なおi,jそれぞれが1以上であることにより、拡張分類マップに、ダミー分類識別子を常に追加することができる。
[ステップS103]分析目的かく乱部110は、kd(x+i,y+j)の領域内の分類識別子が未設定のセルにダミー分類識別子を設定する。
[ステップS104]分析目的かく乱部110は、データ分割基準情報を取得する。
[ステップS104]分析目的かく乱部110は、データ分割基準情報を取得する。
[ステップS105]分析目的かく乱部110は、データ分割基準情報にkd(x+i,y+j)を当てはめる。これによりkd(x+i,y+j)に設定されている分類識別子に対応するレコードの格納先となる部分DBが特定される。
[ステップS106]分析目的かく乱部110は、各部分DBにn個以上の分類識別子が分類されているか否かを判断する。例えば分析目的かく乱部110は、n個未満の分類識別子しか分類されていない部分DBが少なくとも1つある場合、処理をステップS102に進める。また分析目的かく乱部110は、すべての部分DBに対して、n個以上の分類識別子が分類されている場合、分類マップ生成処理を終了する。
このようにして、真の分類マップにダミー分類識別子を追加した拡張分類マップが生成される。この際、生成した拡張分類マップをデータ分割基準情報に当てはめることで、すべての部分DBについて、その部分DBに分類されるレコードの分類識別子数がn個以上となるかを調査することができる。n個以上の分類識別子が分類されていない部分DBがある場合、拡張分類マップを生成しなおすことで、1つの部分DB当りでn種類以上のレコードを格納することによるかく乱条件を満たすことができる。
図29は、拡張分類マップの生成例を示す図である。例えば真の分類マップ511には、1行3列の表に3つの分類識別子「km1」〜「km3」が設定されている。真の分類マップ511の大きさはkm(3,1)である。
ここで、i=1、j=1であるものとする。その場合、kd(4,2)となる。具体的には、真の分類マップ511では、投薬量の行のラベルが「50mg」だけであったのが、拡張分類マップ512では、投薬量の行のラベルが「10mg」と「50mg」とになっている。また真の分類マップ511では、日付の列のラベルが「2019年1月」、「2019年2月」、「2019年3月」であったのが、拡張分類マップ512では、投薬量の列のラベルに「2019年4月」が追加されている。
拡張分類マップ512にデータ分割基準情報513を適用すると、拡張分類マップ512に設定されている分類識別子のレコードは、データ分割基準情報513において同じ位置のセルに設定された部分DB識別子を有する部分DBに分類される。例えば分類識別子「kd1」と「km1」に対応するレコードは、部分DB識別子「DB1」の部分DBに分類される。
以上が真の分類マップに基づく拡張分類マップの生成処理である。次に、DPサーバ200における名寄せ処理について詳細に説明する。
図30は、図5の検索支援部250にて実施される名寄せ処理の手順の一例を示すフローチャートである。以下、図30に示す処理をステップ番号に沿って説明する。
図30は、図5の検索支援部250にて実施される名寄せ処理の手順の一例を示すフローチャートである。以下、図30に示す処理をステップ番号に沿って説明する。
[ステップS111]検索支援部250は、名寄せ対象の対象者IDリストを取得する。例えば検索支援部250は、TTPサーバ100から、検索対象の部分DBごとにマージされた複数の対象者IDリストを取得する。
[ステップS112]検索支援部250は、対象者IDリストから未取得の仮名を1つ取得する。
[ステップS113]検索支援部250は、取得した仮名に対応する氏名を対照表231から取得する。
[ステップS113]検索支援部250は、取得した仮名に対応する氏名を対照表231から取得する。
[ステップS114]検索支援部250は、仮DBに、取得した仮名と氏名との対応関係を格納する。
[ステップS115]検索支援部250は、対象者IDリストに、未取得の仮名が存在するか否かを判断する。検索支援部250は、未取得の仮名が存在すれば、処理をステップS111に進める。また検索支援部250は、未取得の仮名が存在しなければ、処理をステップS116に進める。
[ステップS115]検索支援部250は、対象者IDリストに、未取得の仮名が存在するか否かを判断する。検索支援部250は、未取得の仮名が存在すれば、処理をステップS111に進める。また検索支援部250は、未取得の仮名が存在しなければ、処理をステップS116に進める。
[ステップS116]検索支援部250は、仮DBを参照し、各氏名の出現回数を計数する。
[ステップS117]検索支援部250は、出現回数が所定のしきい値以下の氏名があるか否かを判断する。検索支援部250は、該当する氏名がある場合、処理をステップS118に進める。また検索支援部250は、該当する氏名がない場合、処理をステップS119に進める。
[ステップS117]検索支援部250は、出現回数が所定のしきい値以下の氏名があるか否かを判断する。検索支援部250は、該当する氏名がある場合、処理をステップS118に進める。また検索支援部250は、該当する氏名がない場合、処理をステップS119に進める。
[ステップS118]検索支援部250は、出現回数がしきい値以下の氏名を仮DBから削除する。
[ステップS119]検索支援部250は、仮DBに基づいてクロス集計表を生成する。
[ステップS119]検索支援部250は、仮DBに基づいてクロス集計表を生成する。
このようにして名寄せを行い、名寄せの結果を示すクロス集計表を生成することができる。名寄せでは、出現回数が予め定めたしきい値以下である氏名が存在する場合、該当する氏名が仮DBから削除される。これにより、特定の個人の情報を推定できるような検索が行われた場合に、検索結果から該当する個人に関するレコードの存在を隠ぺいすることができる。
例えば、検索結果に該当数が1名しか存在しない場合、この病院にその病状の人間は1名しかいないことが判明してしまう。この場合、個人が特定されるおそれがあり、その個人の情報を盗取される可能性もある。そこで名寄せの段階でDPサーバ200において、しきい値以下の出現回数の氏名に対応するデータに関しては削除する。なおDPサーバ200は、出現回数が少ない氏名に対応するデータの削除に替えて、ノイズを加える(出現回数の値にランダムな数値を加算)などの処理を行うこともできる。このようにして、プライバシー侵害が起きない患者群に関するクロス集計表を生成することができる。
図31は、名寄せ処理の一例を示す図である。図31に示す対象者IDリスト431,432を取得した検索支援部250は、対照表231に基づいて、仮DB601を生成する。仮DB601には、部分DB識別子と分類識別子との組に対応付けて、対象者IDリスト431,432において該当する分類識別子に設定された仮名と、その仮名に対応する氏名とが登録されている。
検索支援部250は、仮DB601に登録されている氏名について出現回数を計数し、出現回数を出現回数表602に設定する。検索支援部250は、出現回数がしきい値以下の氏名の情報を仮DB601から削除する。例えばしきい値が「1」であれば、出現回数が「1」の氏名「S中 智」に関する情報が、仮DB601から削除される。
その後、検索支援部250は、仮DBに基づいてクロス集計表603を生成する。例えば検索支援部250は、仮DB601において、異なる部分DB識別子に対応付けて同じ氏名の2つのレコードが登録されている場合、それらのレコードを抽出する。検索支援部250は、抽出したレコードそれぞれにおける部分DB識別子と分類識別子との組に対応するクロス集計表603内のセルの値に1を加算する。
図31の例では、氏名「Y岡 T司」が「DB1−km1」の検索結果と「DB2−km2」の検索結果とに出現している。そこで検索支援部250は、クロス集計表603における「DB1−km1」の行と「DB2−km2」の列が交差する位置のセルに1を加算する。
なお図31の例では、処理手順を分かりやすくするため、対象者IDリストに431,432に設定されている仮名の数が少ない。そのためクロス集計表603においても、最大の値が「1」となっている。しかし一般には、対象者IDリストに431,432にはもっと多くの仮名が設定される。その場合、クロス集計表603に設定される値も、もっと大きな値となる。そのような状況下で、クロス集計表603の一部のセルの値が「1」のように極めて小さい値の場合、特定の患者に関する情報が特定できてしまう可能性がある。そこで検索支援部250は、クロス集計表603において所定値以下の値は「0」に修正してもよい。また検索支援部250は、クロス集計表603において所定値以下の値は、その所定値よりも大きな値に修正してもよい。
〔その他の実施の形態〕
第2の実施の形態では、TTPサーバ100は、照合鍵を用いた秘匿検索を行っているが、TTPの信頼性が高く、TTPサーバ100による復号を許容できる場合、照合鍵に替えて復号鍵を用いることも可能である。その場合、TTPサーバ100は、DU端末300とDPサーバ200から取得した復号鍵で、クエリとレコードのフィールド内の値とをそれぞれ復号し、照合する。
第2の実施の形態では、TTPサーバ100は、照合鍵を用いた秘匿検索を行っているが、TTPの信頼性が高く、TTPサーバ100による復号を許容できる場合、照合鍵に替えて復号鍵を用いることも可能である。その場合、TTPサーバ100は、DU端末300とDPサーバ200から取得した復号鍵で、クエリとレコードのフィールド内の値とをそれぞれ復号し、照合する。
また第2の実施の形態では、拡張分類マップ32をTTPサーバ100が生成しているが、DU端末300において拡張分類マップ32を生成することも可能である。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 端末装置
1a 利用レコード情報
1b 第1の分類マップ
1c クエリ
1d 第2の鍵
1e 検索結果
2 情報処理装置
2−1 記憶部
2−2 処理部
2a 第2の分類マップ
2b〜2d 秘匿化DB
3 サーバ
3a 第1のDB
3b〜3d 第2のDB
3e 第1の鍵
1a 利用レコード情報
1b 第1の分類マップ
1c クエリ
1d 第2の鍵
1e 検索結果
2 情報処理装置
2−1 記憶部
2−2 処理部
2a 第2の分類マップ
2b〜2d 秘匿化DB
3 サーバ
3a 第1のDB
3b〜3d 第2のDB
3e 第1の鍵
Claims (11)
- 情報処理装置が、
データ利用者が利用する第1のレコード群に含まれるレコードの条件として、所定の属性のフィールドに第1の値が設定されていることが指定された利用レコード情報を取得し、
複数のレコードが格納された第1のデータベースを管理するサーバに対して、前記複数のレコードのうちの、前記所定の属性のフィールドに前記第1の値が設定されている前記第1のレコード群と、前記所定の属性のフィールドに、前記第1の値とは異なる第2の値が設定されている第2のレコード群とを格納した第2のデータベースの生成要求を送信する、
制御方法。 - 複数の前記第2のデータベースの生成の指示、前記第1のレコード群と前記第2のレコード群それぞれの複数のグループへの分類の指示、およびグループごとの格納先となる前記第2のデータベースの指定を含む前記生成要求を送信する、
請求項1記載の制御方法。 - 前記利用レコード情報は、第1の属性の値を列のラベルとし、第2の属性の値を行のラベルとする表形式の第1の分類マップであり、前記第1の分類マップには、前記第1のレコード群における前記第1の属性の前記第1の値に対応する行と前記第1のレコード群における前記第2の属性の前記第1の値に対応する列とが交わる位置に、前記第1のレコード群内のグループを示す第1の分類識別子が設定されており、
前記第1の分類マップにおける前記第1の分類識別子が設定されていない位置に前記第2のレコード群内のグループを示す第2の分類識別子を追加した第2の分類マップを生成し、前記第2の分類マップを含む前記生成要求を送信する、
請求項2記載の制御方法。 - 前記第1の分類マップにおいて前記第1の分類識別子が設定された領域を包含する四角形を生成し、前記四角形を拡大し、拡大された前記四角形内において前記第1の分類識別子が設定されていない位置に前記第2の分類識別子を追加した前記第2の分類マップを生成する、
請求項3記載の制御方法。 - 前記サーバが、
前記生成要求に応じて、前記第1のデータベースから前記第1のレコード群と前記第2のレコード群とを抽出し、前記第1のレコード群と前記第2のレコード群とを含む前記第2のデータベースを生成し、
前記第2のデータベースを暗号化して秘匿化データベースを生成し、
前記秘匿化データベースの照合用の第1の鍵を生成し、
前記データ利用者が使用する端末装置が、
前記秘匿化データベースを検索対象とする検索条件を示すクエリを暗号化し、
前記クエリを用いた照合用の第2の鍵を生成し、
前記情報処理装置が、
前記サーバから前記秘匿化データベースと前記第1の鍵とを取得し、
前記端末装置からの暗号化された前記クエリと前記第2の鍵とを取得し、
前記第1の鍵と前記第2の鍵とを用いて、前記クエリに示される前記検索条件を満たすレコードを、前記秘匿化データベースから検索する、
請求項1ないし4のいずれかに記載の制御方法。 - 前記情報処理装置が、
複数の前記第2のデータベースの生成、前記第1のレコード群と前記第2のレコード群それぞれの複数のグループへの分類、およびグループごとの格納先となる前記第2のデータベースの指定を含む前記生成要求を送信し、
前記サーバが、
前記生成要求に応じて、前記第2のデータベースを複数生成し、前記第1のレコード群と前記第2のレコード群それぞれを前記複数のグループに分類し、前記第1のレコード群と前記第2のレコード群とをグループごとに複数の前記第2のデータベースのいずれかに格納し、
複数生成された前記第2のデータベースそれぞれを暗号化して、複数の前記秘匿化データベースを生成し、
複数の前記秘匿化データベースごとに異なる前記第1の鍵を生成する、
請求項5に記載の制御方法。 - 前記サーバが、
前記第1のデータベース内の互いに関連する複数の関連レコードに共通に設定された第1の識別子を、前記複数の関連レコードそれぞれの格納先の前記第2のデータベースごとに異なる第2の識別子に変換し、前記第2の識別子を有する前記複数の関連レコードを複数生成された前記第2のデータベースに格納し、前記第1の識別子と前記第2の識別子との対応関係を示す対照表を生成し、
前記端末装置が、
2以上の前記第2のデータベースを検索対象とする前記クエリを暗号化し、
前記情報処理装置が、
暗号化された前記クエリに示される前記検索条件を満たすレコードの、検索対象の前記秘匿化データベースからの検索を行い、検索対象の前記秘匿化データベース内の前記検索条件を満たすレコードに含まれる前記第2の識別子のリストである識別子リストを、検索対象の前記秘匿化データベースごとに生成し、
前記サーバが、
前記対照表に基づいて、前記識別子リストに示される前記第2の識別子を、対応する前記第1の識別子に変換することで、検索対象の前記秘匿化データベースごとの前記第1の識別子のリストを生成し、
検索対象の前記秘匿化データベースごとの前記第1の識別子のリスト間の和集合または積集合を求める、
請求項6に記載の制御方法。 - 前記端末装置は、
第1の秘匿化データベースを検索対象とする前記クエリを暗号化すると共に、前記第1の秘匿化データベースとは別の第2の秘匿化データベースを検索対象とする、ダミーの検索条件を示すダミークエリを暗号化し、
前記情報処理装置は、
前記サーバから前記第1の秘匿化データベースと前記第1の秘匿化データベースの前記第1の鍵、および前記第2の秘匿化データベースと前記第2の秘匿化データベースの前記第1の鍵とを取得し、
前記端末装置から、暗号化された前記のクエリと暗号化された前記ダミークエリと前記第2の鍵とを取得し、
前記第1の秘匿化データベースと前記第1の秘匿化データベースの前記第1の鍵とを用いて、前記クエリに示される前記検索条件を満たすレコードを、前記第1の秘匿化データベースから検索すると共に、前記第2の秘匿化データベースと前記第2の秘匿化データベースの前記第1の鍵とを用いて、前記ダミークエリに示される前記ダミーの検索条件を満たすレコードを、前記第2の秘匿化データベースから検索する、
請求項6または7のいずれかに記載の制御方法。 - 前記端末装置は、
前記第1の秘匿化データベースと前記第2の秘匿化データベースとを検索対象とする複数の前記クエリを暗号化すると共に、前記第1の秘匿化データベースと前記第2の秘匿化データベースとを検索対象とする、複数の前記ダミークエリを暗号化し、
前記情報処理装置は、
複数の前記クエリそれぞれに示される前記検索条件を満たすレコードを、前記第1の秘匿化データベースまたは前記第2の秘匿化データベースから検索すると共に、複数の前記ダミークエリそれぞれに示される前記ダミーの検索条件を満たすレコードを、前記第1の秘匿化データベースまたは前記第2の秘匿化データベースから検索する、
請求項8記載の制御方法。 - コンピュータが、
データ利用者が利用する第1のレコード群に含まれるレコードの条件として、所定の属性のフィールドに第1の値が設定されていることが指定された利用レコード情報を取得し、
複数のレコードが格納された第1のデータベースを管理するサーバに対して、前記複数のレコードのうちの、前記所定の属性のフィールドに前記第1の値が設定されている前記第1のレコード群と、前記所定の属性のフィールドに、前記第1の値とは異なる第2の値が設定されている第2のレコード群とを格納した第2のデータベースの生成要求を送信する、
制御プログラム。 - データ利用者が利用する第1のレコード群に含まれるレコードの条件として、所定の属性のフィールドに第1の値が設定されていることが指定された利用レコード情報を取得し、複数のレコードが格納された第1のデータベースを管理するサーバに対して、前記複数のレコードのうちの、前記所定の属性のフィールドに前記第1の値が設定されている前記第1のレコード群と、前記所定の属性のフィールドに、前記第1の値とは異なる第2の値が設定されている第2のレコード群とを格納した第2のデータベースの生成要求を送信する処理部、
を有する情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020003465A JP2021110861A (ja) | 2020-01-14 | 2020-01-14 | 制御方法、制御プログラム、および情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020003465A JP2021110861A (ja) | 2020-01-14 | 2020-01-14 | 制御方法、制御プログラム、および情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021110861A true JP2021110861A (ja) | 2021-08-02 |
Family
ID=77059748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020003465A Pending JP2021110861A (ja) | 2020-01-14 | 2020-01-14 | 制御方法、制御プログラム、および情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2021110861A (ja) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03156677A (ja) * | 1989-11-15 | 1991-07-04 | Nippon Telegr & Teleph Corp <Ntt> | 複合データベースシステム |
JP2006185096A (ja) * | 2004-12-27 | 2006-07-13 | Fujitsu Ltd | データ保護プログラムおよびデータ保護方法 |
JP2010061103A (ja) * | 2008-05-30 | 2010-03-18 | Nec (China) Co Ltd | 高速検索可能な暗号化のための方法、装置およびシステム |
JP5166439B2 (ja) * | 2007-11-19 | 2013-03-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベースに対するアクセスを制御する技術 |
JP2013513834A (ja) * | 2009-12-15 | 2013-04-22 | マイクロソフト コーポレーション | 信頼できるコンピューティングおよびデータサービスのための信頼できる拡張マークアップ言語 |
JP2016042663A (ja) * | 2014-08-18 | 2016-03-31 | 富士通株式会社 | プログラム、情報処理方法、コンピュータ及び情報処理システム |
-
2020
- 2020-01-14 JP JP2020003465A patent/JP2021110861A/ja active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03156677A (ja) * | 1989-11-15 | 1991-07-04 | Nippon Telegr & Teleph Corp <Ntt> | 複合データベースシステム |
JP2006185096A (ja) * | 2004-12-27 | 2006-07-13 | Fujitsu Ltd | データ保護プログラムおよびデータ保護方法 |
JP5166439B2 (ja) * | 2007-11-19 | 2013-03-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベースに対するアクセスを制御する技術 |
JP2010061103A (ja) * | 2008-05-30 | 2010-03-18 | Nec (China) Co Ltd | 高速検索可能な暗号化のための方法、装置およびシステム |
JP2013513834A (ja) * | 2009-12-15 | 2013-04-22 | マイクロソフト コーポレーション | 信頼できるコンピューティングおよびデータサービスのための信頼できる拡張マークアップ言語 |
JP2016042663A (ja) * | 2014-08-18 | 2016-03-31 | 富士通株式会社 | プログラム、情報処理方法、コンピュータ及び情報処理システム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10013574B2 (en) | Method and apparatus for secure storage and retrieval of encrypted files in public cloud-computing platforms | |
JP6419633B2 (ja) | 検索システム | |
Grolinger et al. | Data management in cloud environments: NoSQL and NewSQL data stores | |
US8918895B2 (en) | Prevention of information leakage from a document based on dynamic database label based access control (LBAC) policies | |
US8201216B2 (en) | Techniques for database structure and management | |
US7539682B2 (en) | Multilevel secure database | |
US9881164B1 (en) | Securing data | |
US11562812B2 (en) | Computer implemented method for secure management of data generated in an EHR during an episode of care and a system therefor | |
Zhao et al. | Research on electronic medical record access control based on blockchain | |
US8504590B2 (en) | Methods of encapsulating information in records from two or more disparate databases | |
Al Sibahee et al. | Efficient encrypted image retrieval in IoT-cloud with multi-user authentication | |
JP6250497B2 (ja) | 情報管理システム | |
US20110219235A1 (en) | Digital signature device, digital signature method, and non-transitory storage medium storing digital signature program | |
Trivedi et al. | Enhancing relational database security by metadata segregation | |
Rahunathan et al. | Efficient and Secure Interoperable Healthcare Information System Using Keyword Searchable and Role-Based Access Control in Cloud Environment | |
JP2006189925A (ja) | 個人情報管理システム、個人情報管理プログラムおよび個人情報保護方法 | |
JP2021110861A (ja) | 制御方法、制御プログラム、および情報処理装置 | |
Elmeleegy et al. | Preserving privacy and fairness in peer-to-peer data integration | |
Huang et al. | Intellectual property protection for FPGA designs using the public key cryptography | |
JP7132506B2 (ja) | 秘密情報検索システム、秘密情報検索プログラム、および秘密情報検索方法 | |
Bkakria et al. | Preserving Multi-relational Outsourced Databases Confidentiality using Fragmentation and Encryption. | |
Hansen et al. | HDI: integrating health data and tools | |
Clark et al. | Computer vision for locating buried objects | |
JP2008140202A (ja) | 情報提供制御装置、情報提供制御方法、及び、プログラム | |
JP2007249622A (ja) | 公開/非公開項目を含む情報の提供方法、情報提供システム、プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220908 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230428 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230606 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20231205 |