(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022029386
(43)【公開日】2022-02-17
(54)【発明の名称】データ共有システム、データ共有方法、およびデータ共有プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20220209BHJP
H04L 9/08 20060101ALI20220209BHJP
【FI】
G09C1/00 660D
H04L9/00 601A
【審査請求】有
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2020132721
(22)【出願日】2020-08-04
(11)【特許番号】
(45)【特許公報発行日】2020-12-23
(71)【出願人】
【識別番号】518334141
【氏名又は名称】EAGLYS株式会社
(74)【代理人】
【識別番号】100210815
【弁理士】
【氏名又は名称】西田 聡子
(72)【発明者】
【氏名】今林 広樹
(72)【発明者】
【氏名】丸山 祐丞
(57)【要約】
【課題】データ共有システムにおいて、各社が保有するデータの内容を他社に開示することなく、安全に活用すること。
【解決手段】データ提供サーバは、機微データを取得する機微データ取得部と、鍵を管理する鍵管理部と、暗号鍵に基づいて、機微データの少なくとも一部の属性値を所定の暗号方式で暗号化する暗号化部と、を有し、共通データベースは、複数のデータ提供サーバにおいて暗号化された機微データを識別子に基づいて統合した統合データを格納し、管理サーバは、共通データベースに格納される統合データに対するデータ処理の処理要求を受け付ける受付部と、データ処理を実行する実行部と、データ提供サーバに対し、データ処理の実行結果の復号処理の処理要求を行う復号要求部と、を有し、データ提供サーバは、管理サーバの復号要求部からの復号処理の処理要求に応じて、復号鍵に基づいて、実行結果を復号する復号部をさらに有する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数のデータ提供サーバと、共通データベースと、管理サーバと、を備えるデータ共有システムであって、
前記データ提供サーバは、
属性項目ごとの属性値を含む機微データを取得する機微データ取得部と、
暗号鍵および復号鍵を管理する鍵管理部と、
前記暗号鍵に基づいて、前記機微データの少なくとも一部の属性値を所定の暗号方式で暗号化する暗号化部と、
を有し、
前記共通データベースは、
前記複数のデータ提供サーバにおいて前記暗号化された機微データを、当該機微データに前記属性項目として含まれる識別子に基づいて統合した統合データを格納し、
前記管理サーバは、
前記共通データベースに格納される前記統合データに対するデータ処理の処理要求を受け付ける受付部と、
前記データ処理を実行する実行部と、
前記データ提供サーバに対し、前記データ処理の実行結果の復号処理の処理要求を行う復号要求部と、
を有し、
前記データ提供サーバは、前記管理サーバの前記復号要求部からの前記復号処理の処理要求に応じて、前記復号鍵に基づいて、前記実行結果を復号する復号部をさらに有する、
データ共有システム。
【請求項2】
前記共通データベースは、前記属性項目をカラムとして有するテーブルを格納し、
前記データ処理は、前記統合データの属性項目の少なくとも一部を対象とする検索処理および/または統計処理を含む、請求項1に記載のデータ共有システム。
【請求項3】
前記復号要求部は、前記実行結果に含まれるレコードの数に基づいて、前記復号処理の処理要求を行う、請求項2に記載のデータ共有システム。
【請求項4】
前記復号要求部は、前記データ処理の対象である前記属性項目を含む機微データを提供したデータ提供サーバに対し、当該データ提供サーバが管理する復号鍵によって前記実行結果を復号するよう要求する、請求項1から請求項3のいずれか一項に記載のデータ共有システム。
【請求項5】
前記復号要求部は、前記データ処理の対象である前記属性項目を含む機微データを提供したデータ提供サーバに対し、前記実行結果の復号の可否を問い合わせ、当該問い合わせの許可応答に応じて、当該データ提供サーバが管理する復号鍵によって前記実行結果を復号するよう要求する、請求項1から請求項3のいずれか一項に記載のデータ共有システム。
【請求項6】
前記復号要求部は、前記データ提供サーバが復号した前記実行結果を取得し、当該取得した実行結果を、前記データ処理の処理要求の送信元に提供する、請求項4または請求項5に記載のデータ共有システム。
【請求項7】
前記復号要求部は、前記データ処理の対象である属性項目を含む機微データを提供した前記データ提供サーバに対し、当該データ提供サーバが管理する復号鍵によって前記実行結果を復号し、当該復号した実行結果を、前記データ処理の処理要求の送信元に提供するよう要求する、請求項1から請求項3のいずれか一項に記載のデータ共有システム。
【請求項8】
前記実行部は、前記データ処理の実行の可否を規定した設定ファイルに基づいて、前記データ処理を実行する、請求項1から請求項7のいずれか一項に記載のデータ共有システム。
【請求項9】
前記暗号方式は、準同型暗号方式、順序保存暗号方式、AES、DES、検索可能暗号、SHA、MD5のうちの少なくとも一つを含む、請求項1から請求項8のいずれか一項に記載のデータ共有システム。
【請求項10】
前記データ処理は、前記機微データを統合する処理を含み、
前記実行部は、前記統合データを生成し、前記共通データベースに格納する、請求項1から請求項9のいずれか一項に記載のデータ共有システム。
【請求項11】
複数のデータ提供サーバと、共通データベースと、管理サーバと、を備えるシステムにおけるデータ共有方法であって、
前記データ提供サーバが、
属性項目ごとの属性値を含む機微データを取得するステップと、
暗号鍵および復号鍵を管理するステップと、
前記暗号鍵に基づいて、前記機微データの少なくとも一部の属性値を所定の暗号方式で暗号化するステップと、
を実行し、
前記共通データベースが、
前記複数のデータ提供サーバにおいて前記暗号化された機微データを、当該機微データに前記属性項目として含まれる識別子に基づいて統合した統合データを格納するステップを実行し、
前記管理サーバが、
前記共通データベースに格納される前記統合データに対するデータ処理の処理要求を受け付けるステップと、
前記データ処理を実行するステップと、
前記データ提供サーバに対し、前記データ処理の実行結果の復号処理の処理要求を行うステップと、
を実行し、
前記データ提供サーバは、前記管理サーバからの前記復号処理の処理要求に応じて、前記復号鍵に基づいて、前記実行結果を復号するステップをさらに実行する、
データ共有方法。
【請求項12】
複数のデータ提供サーバと、共通データベースと、管理サーバと、を備えるシステムに実行させるデータ共有プログラムであって、
前記データ提供サーバが、
属性項目ごとの属性値を含む機微データを取得するステップと、
暗号鍵および復号鍵を管理するステップと、
前記暗号鍵に基づいて、前記機微データの少なくとも一部の属性値を所定の暗号方式で暗号化するステップと、
を実行し、
前記共通データベースが、
前記複数のデータ提供サーバにおいて前記暗号化された機微データを、当該機微データに前記属性項目として含まれる識別子に基づいて統合した統合データを格納するステップを実行し、
前記管理サーバが、
前記共通データベースに格納される前記統合データに対するデータ処理の処理要求を受け付けるステップと、
前記データ処理を実行するステップと、
前記データ提供サーバに対し、前記データ処理の実行結果の復号処理の処理要求を行うステップと、
を実行し、
前記データ提供サーバは、前記管理サーバからの前記復号処理の処理要求に応じて、前記復号鍵に基づいて、前記実行結果を復号するステップをさらに実行する、
データ共有プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ共有システム、データ共有方法、およびデータ共有プログラムに関する。
【背景技術】
【0002】
インターネット上で提供される電子商取引サービスにおいて、自社保有のデータはもとより、社外のデータも活用し、利用者の性別、住所、取引情報などの個人情報を、サービス提供者側がマーケティング等を目的として統計分析を行う技術がある。例えば、特許文献1には、サービス提供者が利用者の個人情報を得ることなく、取引履歴の分析を得ることができる電子商取引システムが開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1に記載のシステムでは、統計分析を行いたいサービス提供サーバ側が、他のすべてのサービス提供サーバに対して暗号化鍵を送信し、他のサービス提供サーバは、当該送信された暗号化鍵を用いてデータを暗号化して、統計分析を行う第三者機関サーバに送信する。このため、他のサービス提供サーバにとっては、自身が保有するデータが他者の暗号化鍵によって暗号化されるため、情報漏洩や不正利用等の情報セキュリティ上の問題が発生する可能性が危惧される。
【0005】
そこで、本開示は、上記課題を解決すべくなされたものであって、その目的は、各社が保有するデータを、データの詳細を他社に開示することなく、安全に活用することができるデータ共有システムを提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本開示に係るデータ共有システムは、複数のデータ提供サーバと、共通データベースと、管理サーバと、を備えるデータ共有システムであって、データ提供サーバは、属性項目ごとの属性値を含む機微データを取得する機微データ取得部と、暗号鍵および復号鍵を管理する鍵管理部と、暗号鍵に基づいて、機微データの少なくとも一部の属性値を所定の暗号方式で暗号化する暗号化部と、を有し、共通データベースは、複数のデータ提供サーバにおいて暗号化された機微データを、当該機微データに属性項目として含まれる識別子に基づいて統合した統合データを格納し、管理サーバは、共通データベースに格納される統合データに対するデータ処理の処理要求を受け付ける受付部と、データ処理を実行する実行部と、データ提供サーバに対し、データ処理の実行結果の復号処理の処理要求を行う復号要求部と、を有し、データ提供サーバは、管理サーバの復号要求部からの復号処理の処理要求に応じて、復号鍵に基づいて、実行結果を復号する復号部をさらに有する。
【0007】
上記目的を達成するため、本開示に係るデータ共有方法は、複数のデータ提供サーバと、共通データベースと、管理サーバと、を備えるシステムにおける方法であって、データ提供サーバが、属性項目ごとの属性値を含む機微データを取得するステップと、暗号鍵および復号鍵を管理するステップと、暗号鍵に基づいて、機微データの少なくとも一部の属性値を所定の暗号方式で暗号化するステップと、を実行し、共通データベースが、複数のデータ提供サーバにおいて暗号化された機微データを、当該機微データに属性項目として含まれる識別子に基づいて統合した統合データを格納するステップを実行し、管理サーバが、共通データベースに格納される統合データに対するデータ処理の処理要求を受け付けるステップと、データ処理を実行するステップと、データ提供サーバに対し、データ処理の実行結果の復号処理の処理要求を行うステップと、を実行し、データ提供サーバは、管理サーバからの復号処理の処理要求に応じて、復号鍵に基づいて、実行結果を復号するステップをさらに実行する。
【0008】
また、上記目的を達成するため、本開示に係るデータ共有プログラムは、複数のデータ提供サーバと、共通データベースと、管理サーバと、を備えるシステムに実行させるプログラムであって、データ提供サーバが、属性項目ごとの属性値を含む機微データを取得するステップと、暗号鍵および復号鍵を管理するステップと、暗号鍵に基づいて、機微データの少なくとも一部の属性値を所定の暗号方式で暗号化するステップと、を実行し、共通データベースが、複数のデータ提供サーバにおいて暗号化された機微データを、当該機微データに属性項目として含まれる識別子に基づいて統合した統合データを格納するステップを実行し、管理サーバが、共通データベースに格納される統合データに対するデータ処理の処理要求を受け付けるステップと、データ処理を実行するステップと、データ提供サーバに対し、データ処理の実行結果の復号処理の処理要求を行うステップと、を実行し、データ提供サーバは、管理サーバからの復号処理の処理要求に応じて、復号鍵に基づいて、実行結果を復号するステップをさらに実行する。
【発明の効果】
【0009】
本開示によれば、データ共有システムにおいて、各社が保有するデータの内容を他社に開示することなく、安全に活用することができる。
【図面の簡単な説明】
【0010】
【
図1】データ共有システム1の構成を示す図である。
【
図2】データ提供サーバ100の機能構成の一例を示す機能ブロック図である。
【
図3】機微データのデータ構造の一例を示した図である。
【
図4】暗号化された機微データのデータ構造の一例を示す図である。
【
図5】統合データのデータ構造の一例を示す図である。
【
図6】管理サーバ200の機能構成の一例を示す機能ブロック図である。
【
図7】設定ファイルのデータ構造の一例を示す図である。
【
図8】端末装置400の機能構成の一例を示す機能ブロック図である。
【
図9】統合データを共通データベースに格納する処理の一例を示すフローチャートである。
【
図10】データ処理の一例を示すフローチャートである。
【
図11】管理サーバ200のハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【0011】
以下、本開示の実施形態について図面を参照して説明する。実施形態を説明する全図において、共通の構成要素には同一の符号を付し、繰り返しの説明を省略する。なお、以下の実施形態は、特許請求の範囲に記載された本開示の内容を不当に限定するものではない。また、実施形態に示される構成要素のすべてが、本開示の必須の構成要素であるとは限らない。
【0012】
<本発明の概要>
近年、顧客情報などの大量の機微データを保有する組織が増加している。これにより、自組織だけでなく、他組織が保有する機微データも活用して統計的な分析処理等を行い、ビジネス上の新たな知見や、サービスにつなげるようなクラウドサービスが普及しつつある。しかしながら、機微データは、セキュリティへの配慮や、プライバシーの保護などデータの取り扱いに細心の注意が求められるため、自組織の保有する機微データの情報漏洩を防ぎつつ、検索や集計分析、統計などのデータ処理を行うことが求められる。
【0013】
そこで、本発明に係るデータ共有システムでは、当該システムに参加する組織等から提供される機微データを、所定の暗号方式(暗号化状態のまま、検索や分析等を含む演算を行うことができる暗号方式)で暗号化してデータ処理する一方、暗号化及び復号に用いる鍵は、当該機微データを提供した各組織において管理する。これにより、自組織の保有する機微データや、それに関連するデータ処理の実行結果に対する復号処理を自組織で管理することができる。また、機微データについて、その詳細な内容を他組織に意図せず開示することなく、安全に活用することができる。
【0014】
<実施形態1>
(データ共有システム1の構成)
図1は、本実施形態に係るデータ共有システム1の構成を示す図である。
図1を参照して、実施形態1に係るデータ共有システム1の構成について説明する。
【0015】
データ共有システム1は、データ提供サーバ100-1,100-2,…,100-N(Nは自然数)と、管理サーバ200と、共通データベース300と、端末装置400と、を備え、ネットワークNWを介して通信可能に接続される。ネットワークNWは、例えば、WAN(Wide Area Network)、LAN(Local Area Network)、光回線網、イントラネット等であるが、任意のネットワークから構成されてもよい。データ共有システム1は、当該システムに参加する各組織が、それぞれの組織が保有するデータを、他組織にデータの詳細な内容を開示することなく利用できるプラットフォームである。なお、組織とは、企業や団体に限られず、役割ごとに区切られた部門、課、グループ、チーム等の集団であってもよい。
【0016】
以下の説明では、データ提供サーバ100-1,100-2,…,100-Nは、特に区別する必要のない限り、データ提供サーバ100と記載する。また、本実施形態においては、共通データベース300は、ネットワークNWを介して管理サーバ200と接続されているが、これに限られず、管理サーバ200とローカルに接続されていてもよい。
【0017】
データ提供サーバ100は、プラットフォームに参加する組織と関連付けられており、組織が保有する機微データを暗号化し、管理サーバ200に送信する。
図1において、例えば、データ提供サーバ100―1は「会社A」、データ提供サーバ100-2は「会社B」、データ提供サーバ100-Nは「会社X」に関連付けられている。
【0018】
機微データは、属性項目(カラム)ごとの属性値を含み、データ提供サーバ100は、機微データの少なくとも一部の属性値が暗号化された機微データを管理サーバ200に送信する。機微データのデータ構造については後述する。また、データ提供サーバ100は、暗号鍵および復号鍵を自サーバ内で記憶して管理してもよいし、他の情報処理装置に記憶させて管理(例えば、KMS(Key Management Service:鍵管理システム)に管理を委託)してもよい。
【0019】
管理サーバ200は、各データ提供サーバ100から取得した、暗号化された機微データを、当該機微データに属性項目として含まれる識別子に基づいて統合して統合データを生成し、共通データベース300に格納する。また、管理サーバ200は、共通データベースに格納される統合データに対するデータ処理の処理要求に応じて、統合データを暗号化状態のままでデータ処理を実行する。そして、暗号化されている実行結果の復号処理の処理要求を、当該データ処理の対象である属性項目を含む機微データを提供したデータ提供サーバ100に対して行う。
【0020】
共通データベース300は、上述のように管理サーバ200において生成された統合データを格納する。なお、本実施形態では、管理サーバ200が統合データを生成しているが、統合データは、管理サーバ200が生成する代わりに、他の情報処理装置等で行うように構成してもよい。
【0021】
端末装置400は、データ共有システム1のユーザが用いる情報処理装置であって、例えば、PC(Personal Computer)、スマートフォン、タブレット端末である。また、ヘッドマウントディスプレイ等のウェアラブル端末、AR(Augmented Reality)/VR(Virtual Reality)/MR(Mixed Reality)装置等であってもよい。なお、ユーザは、例えば、会社Aの社員など、プラットフォームに参加し、機微データを提供する組織の従業員であってもよく、この場合、端末装置400は、ユーザが所属する組織のデータ提供サーバ100と紐づけられた構成としてもよい。
【0022】
端末装置400は、管理サーバ200に対し、共通データベース300に格納される統合データを対象としたデータ処理の処理要求を行う。データ処理は、例えば、検索・集計処理および/または統計処理を含む。また、データ処理は、機微データを統合する処理を含んでもよい。データ処理の処理要求は、例えば、SQL文などのCLI(Command Line Interface)もしくはGUI(Graphical User Interface)によって記載される。
【0023】
以下、上述したデータ共有システム1を構成する各サーバ等の機能構成、処理について説明する。なお、各機能構成を示す機能ブロックや処理ブロックは、1つ、または複数の装置、コンピュータプロセッサ、コンピュータプロセッサの分散グループによって実現されてもよい。
【0024】
(データ提供サーバ100の機能構成)
図2は、データ提供サーバ100の機能構成の一例を示す機能ブロック図である。
図2を参照して、データ提供サーバ100の機能構成の一例について説明する。
【0025】
データ提供サーバ100は、通信部101と、制御部102と、記憶部103と、鍵管理部104と、暗号化部105と、復号部106と、を備える。
【0026】
通信部101は、データ提供サーバ100がネットワークNWを介してサーバや装置等と所定の通信プロトコルに従って通信を行うための通信インタフェース回路を有する。所定の通信プロトコルは、TCP/IP(Transmission Control Protocol/Internet Protocol)等である。通信部101は、受信したデータを制御部102に送り、また、制御部102から受け取ったデータを、ネットワークNWを介してサーバや装置等に送信するが、通信部101は、データ提供サーバ100内の制御部102以外の機能ブロックとデータのやり取りを行ってもよい。なお、通信部101は、ネットワークNWを介した装置やローカルに接続された装置等と、セキュリティが確保されたセキュアな通信チャンネルでデータを送受信する。セキュアな通信チャンネルの構築、通信方法は、共通鍵(セッション鍵など)や公開鍵等を用いた周知の技術であるため、説明を省略する。
【0027】
通信部101は、機微データ取得部に相当し、例えば、プラットフォームに参加する組織から、当該組織が保有する機微データを取得する。
図1において、会社Aと関連付けられるデータ提供サーバ100-1は、会社Aの社員が操作する端末装置400から機微データを取得してもよい。本実施形態において、機微データは、例えば、個人に関する情報であって、年齢、性別、収入、居住地域、購買情報などの個人の属性を示す項目である属性項目(カラム)の属性値(文字列又は数値)である。また、機微データは、属性項目として、統合データ生成のための統合キーとなる識別子(文字列、数値、またはそれらの組み合わせ)を含み、個人を一意に特定する共通ID等を識別子としてもよい。機微データは、識別子に基づいて統合され、統合データが生成される。機微データは、個人に関する情報に限られず、機器に関するログデータ等であってもよい。機微データ及び機微データのデータ構造の詳細については後述する。
【0028】
制御部102は、データ提供サーバ100の各機能を制御し、予め記憶部103に記憶されているプログラムに基づいて動作するCPU(Control Processing Unit)等のプロセッサである。なお、制御部102として、DSP(Digital Signal Processor)等が用いられてもよい。また、制御部102として、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programming Gate Array)等の制御回路が用いられてもよい。
【0029】
制御部102は、暗号化部105に対し、通信部101を介して取得した機微データについて暗号化するよう制御する。また、制御部102は、復号部106に対し、通信部101を介して取得したデータ処理の実行結果について復号するよう制御する。
【0030】
また、制御部102は、管理サーバ200から、実行結果の復号の可否の問い合せに応じて、復号の可否について判断するようにしてもよい。例えば、データ処理の処理要求元が、実行結果を利用する権限を有するかなどに基づいて復号の可否を判断する。権限を有すると判断した場合は、制御部102は、通信部101を介して、管理サーバ200に許可応答を送信し、管理サーバ200から送信される実行結果を復号するよう復号部106を制御する。
【0031】
記憶部103は、RAM(Random Access Memory)、ROM(Read Only Memory)等のメモリ装置、ハードディスク等の固定ディスク装置、又はフレキシブルディスク、光ディスク等の可搬用の記憶装置等を有する。また、記憶部103は、データ提供サーバ100の各種処理に用いられるコンピュータプログラム、データベース、テーブル、鍵等が格納される。コンピュータプログラムは、コンピュータ読み取り可能な可搬型記録媒体から公知のセットアッププログラム等を用いて記憶部103にインストールされてもよい。可搬型記録媒体は、例えばCD-ROM(Compact Disc Read Only Memory)、DVD-ROM(Digital Versatile Disc Read Only Memory)等である。コンピュータプログラムは、所定のサーバ等からインストールされてもよい。
【0032】
記憶部103は、例えば、暗号化された機微データや、復号されたデータ処理の実行結果、並びに、後述する鍵管理部104が管理する暗号鍵や復号鍵を記憶する。
【0033】
鍵管理部104は、暗号鍵および復号鍵を管理する。鍵管理部104は、例えば、暗号化部105の要求する暗号方式に応じた鍵を生成してもよい。暗号方式が、例えば、暗号化状態のまま加減算が可能な(加法的な)準同型暗号方式(Paillier方式)の場合は、公開鍵(暗号鍵)と秘密鍵(復号鍵)の組を生成する。
【0034】
また、暗号方式が、暗号文の大小関係と対応する平文の大小関係が一致する順序保存暗号方式(OPE方式:Order Preserving Encryption)や、暗号化状態のまま平文の一致判定が可能な検索可能暗号方式の場合は、秘密鍵(共通鍵)を生成する。このように、暗号鍵と復号鍵は、公開鍵と秘密鍵の組のように異なる鍵である場合と、共通鍵のように同じ鍵である場合とがある。なお、鍵生成アルゴリズムは、周知の技術であるので説明を省略する。
【0035】
鍵管理部104は、生成した鍵や鍵生成のためのパラメータ等を、例えば、記憶部103に記憶させる。鍵管理部104は、生成した鍵と、暗号方式やどのデータ(属性項目(カラム)等)の暗号化に用いたか等とを対応付けて管理する。
【0036】
暗号化部105は、通信部101が取得した機微データの少なくとも一部の属性値を所定の暗号方式で暗号化する。所定の暗号方式には、通信部101が取得した機微データの少なくとも一部の属性値を暗号化状態のまま演算可能な暗号方式を含み、例えば、準同型暗号方式、順序保存暗号方式、AES(Advanced Encryption Standard)、DES(Data Encryption Standard)、検索可能暗号、SHA(Secure Hash Algorithm)、MD5(Message Digest algorithm 5)などである。なお、「演算」とは、加減乗除に関する計算、検索、分析に関する計算を含む。本実施形態では、暗号化部105は、機微データに含まれる属性項目の属性値のうち、データ形式が数値の場合は、準同型暗号方式(Paillier方式、Lifted-Ellgamal方式、Somewhat Homomorphic Encryption方式、Fully Homomorphic Encryption方式等)および/または順序保存暗号方式(OPE方式)を用いて暗号化する。なお、データ処理の内容に応じて、暗号方式により処理効率が異なるので、各属性項目は、準同型暗号方式で暗号化された属性値と、順序保存暗号方式で暗号化された属性値、後述する検索可能暗号方式で暗号化された属性値等、複数の暗号方式で保持しておいてもよい。また、データ形式が文字列の場合は、検索可能暗号方式、もしくは暗号文上で完全一致が可能なAES暗号等を用いて暗号化する。なお、データ形式ごとに適用する上記暗号方式は一例であって、どの属性項目の属性値について暗号化するか、また、どの暗号方式で暗号化するか等は、機微データを保有する組織が適宜決定してもよい。また、個人の意思に従って、機微データを暗号化するか否かを決定してもよい。
【0037】
本実施形態において、暗号化部105は、属性項目として含まれる識別子は、暗号化の対象としない。これにより、管理サーバ200は、各データ提供サーバ100から受信した機微データを、識別子に基づいて統合し、統合データを生成する。統合データの生成処理については後述する。暗号化アルゴリズムは、周知の技術であるので説明を省略する。なお、他の実施形態として、暗号化部105は、属性項目として含まれる識別子を暗号化の対象としてもよい。
【0038】
また、暗号化部105は、管理サーバ200の要求に応じて、管理サーバ200から送信された所定のデータ(処理要求としてのSQL文など)を暗号化する。
【0039】
復号部106は、通信部101が取得したデータ処理の実行結果を復号する。より詳しくは、復号部106は、管理サーバ200から復号処理の処理要求がされた実行結果のうち、鍵管理部104が管理する暗号鍵で暗号化した属性項目についてのデータ処理の実行結果を、記憶部103から対応する復号鍵を取得して、暗号化した暗号方式に従って復号する。なお、復号アルゴリズムは、周知の技術であるので説明を省略する。
【0040】
また、復号部106は、復号した実行結果を制御部102に送り、制御部102は、復号した実行結果を、管理サーバ200に送信する。または、制御部102は、管理サーバ200からの要求に応じて、復号した実行結果を、データ処理の処理要求元(端末装置400)に送信してもよい。
【0041】
図3は、機微データのデータ構造の一例を示した図である。本実施形態において、機微データは、個人に関する情報であって、年齢、性別、収入、居住地域、購買情報などの属性項目(カラム:列)の属性値(文字列又は数値)である。また、機微データは、統合キーとして、個人を一意に特定できる識別子(共通ID)を属性項目として含む。識別子は、数値、文字列またはそれらの組み合わせであってよい。なお、
図3において、説明を簡略化するため、所定の属性項目を示しているが、これに加え、図示しない属性項目を機微データに含ませてもよい。また、機微データは、個人に関する情報に限られず、IoT・NW機器、産業用機器などのシステムに関する機密情報(センシングデータやログデータ等)であってもよい。また、統合キーは個人を一意に特定できる識別子に限られず、複数のテーブルにおけるデータを一意に特定できる値であれば、任意の値を用いてもよい。
【0042】
図3において、属性項目の属性値が格納されたテーブルT1,T2,T3が示されている。テーブルT1は、データ提供サーバ100-1が提供する機微データ(すなわち、会社Aが保有するデータ)を示している。テーブルT1において、機微データは、属性項目として、個人を一意に特定する識別子である「共通ID」、個人の年齢を示す「年齢」、個人の性別を示す「性別」、個人の収入を示す「収入」、個人の商品1に対する購買の有無を示す「購買フラグ1」を含む。テーブルT1において、属性項目「共通ID」,「年齢」,「収入」,「購買フラグ1」の属性値は数値である。なお、
図3において「性別」の属性値はカテゴリ(文字列)であるが、性別と数値を対応させる等して、カテゴリを数値で表すようにしてもよい。
【0043】
テーブルT1において、属性項目「共通ID」に対し属性値「12345」、属性項目「年齢」に対し属性値「45」、属性項目「性別」に対し属性値「女」、属性項目「収入」に対し属性値「450」、属性項目「購買フラグ1」に対し属性値「1」が格納されている。これは、共通IDが12345である個人は、年齢が45歳、性別が女、収入が450(万円)、商品1を購入済み、ということを意味している。同様に、属性項目「共通ID」の属性値「67890」,「23456」,「90123」,「89012」,「34567」についても、各属性項目に対し属性値が格納される。
【0044】
テーブルT2は、データ提供サーバ100-2が提供する機微データ(すなわち、会社Bが保有するデータ)を示している。データ提供サーバ100-2は、テーブルT1で示される機微データを保有する会社Aとは異なる属性項目を含む機微データを提供する。
【0045】
テーブルT2において、機微データは、属性項目として、個人を一意に特定する識別子である「共通ID」、個人の居住する地域を示す「居住地域」、個人の商品2に対する購買の有無を示す「購買フラグ2」,個人の商品3に対する購買の有無を示す「購買フラグ3」を含む。テーブルT2において、属性項目「共通ID」,「購買フラグ2」,「購買フラグ3」の属性値は数値であり、属性項目「居住地域」の属性値は文字列である。なお、
図3において「居住地域」の属性値はカテゴリ(文字列)であるが、地域と数値を対応させる等して、カテゴリを数値で表すようにしてもよい。例えば、テーブルT2において、属性項目「共通ID」に対し属性値「67890」、属性項目「居住地域」に対し属性値「東京」、属性項目「購買フラグ2」に対し属性値「1」、属性項目「購買フラグ3」に対し属性値「0」が格納されている。これは、共通IDが67890である個人は、居住する地域が東京、商品2を購入済み、商品3は未購入、ということを意味している。同様に、属性項目「共通ID」の属性値「23456」,「89012」,「12345」,「90123」,「34567」についても、各属性項目に対し属性値が格納される。
【0046】
テーブルT1とテーブルT2とでは、「共通ID」以外の属性項目は異なっているが、同一の「共通ID」で示されるレコードは同一の個人に対応する。例えば、テーブルT1の「共通ID」の属性値「67890」によって特定されるレコード(個人)は、テーブルT2の「共通ID」の属性値「67890」によって特定されるレコード(個人)と同一である。
【0047】
テーブルT3は、データ提供サーバ100-3が提供する機微データ(会社Cが保有するデータ)を示している。データ提供サーバ100-3は、テーブルT1およびT2で示される機微データを保有する会社Aおよび会社Bとは異なる機微データを提供する。
【0048】
テーブルT3において、機微データは、属性項目として、個人を一意に特定する識別子である「共通ID」、配偶者の有無を示す「配偶者フラグ」、扶養家族の人数を示す「扶養人数」、個人の商品4に対する購買の有無を示す「購買フラグ4」を含む。テーブルT3において、属性項目「共通ID」,「配偶者フラグ」,「扶養人数」,「購買フラグ4」の属性値は数値である。例えば、テーブルT3において、属性項目「共通ID」に対し属性値「23456」、属性項目「配偶者フラグ」に対し属性値「1」、属性項目「扶養人数」に対し属性値「3」、属性項目「購買フラグ4」に対し属性値「1」が格納されている。これは、共通IDが23456である個人は、配偶者を有し、扶養人数は3人であり、商品4を購入済み、ということを意味している。同様に、属性項目「共通ID」の属性値「90123」,「56789」,「34567」,「78901」,「12345」についても、各属性項目に対し属性値が格納される。
【0049】
テーブルT3と、テーブルT1及びT2とでは、「共通ID」以外の属性項目は異なっている。また、属性項目「共通ID」の属性値は、テーブルT3にのみ「56789」および「78901」が含まれている。すなわち、各テーブルには、同一のレコードの群ではなく、テーブルごとに異なるレコードを含む群であってもよい。なお、本実施形態においては、
図3で示したように、各データ提供サーバが提供する機微データに含まれる属性項目は、「共通ID」(識別子)以外は異なるものとしているが、他の実施形態として、同じ属性項目を含んでいてもよい。その場合、統合データとしてどのデータ提供サーバが提供する属性値を優先するかは、システム管理者等が適宜設定して決定することができる。
【0050】
図4は、暗号化された機微データのデータ構造の一例を示す図である。
図4において、「共通ID」以外の属性項目の属性値が暗号化されたテーブルT1e,T2e,T3eが示されている。
【0051】
テーブルT1eは、データ提供サーバ100-1(会社A)が管理する暗号鍵に基づいて、テーブルT1の「共通ID」以外の属性値が暗号化されている。例えば、属性値が数値である属性項目「年齢」,「収入」,「購買フラグ1」については、準同型暗号方式および/または順序保存暗号方式で暗号化し、属性値が文字列である属性項目「性別」については、検索可能暗号方式で暗号化する。なお、テーブルT1eにおいて、説明を簡単にするため、属性値が数値のデータは、例えば、準同型暗号方式で暗号化された値を示している(以下、テーブルT2e,T3eにおいても同様)。
【0052】
テーブルT2eは、データ提供サーバ100-2(会社B)が管理する暗号鍵に基づいて、テーブルT2の「共通ID」以外の属性値が暗号化されている。例えば、属性値が数値である属性項目「購買フラグ2」,「購買フラグ3」については、準同型暗号方式および/または順序保存暗号方式で暗号化し、属性値が文字列である属性項目「居住地域」については、検索可能暗号方式で暗号化する。
【0053】
また、テーブルT3eは、データ提供サーバ100-3(会社C)が管理する暗号鍵に基づいて、テーブルT3の「共通ID」以外の属性値が暗号化されている。例えば、属性値が数値である属性項目「配偶者フラグ」,「扶養人数」,「購買フラグ4」については、準同型暗号方式および/または順序保存暗号方式で暗号化する。
【0054】
なお、各テーブルにおいて、「共通ID」以外の全ての属性項目の属性値を同じ暗号鍵で暗号化せず、例えば、データの重要度等に応じて、異なる鍵で暗号化するようにしてもよい。また、属性項目の公開条件等に従って、暗号化対象の属性値を設定してもよい。例えば、データ提供サーバ100-3は、機微データを保有する組織(会社C)の指示に従って、テーブルT3の属性項目「購買フラグ4」の属性値は暗号化しない等の設定をしてもよい。
【0055】
また、
図4において、
図3で属性値が同じデータについては、暗号化データも同じ数値として記載しているが、セキュリティを高めるため、次のような方法を用いてもよい。例えば、検索処理用に、そのまま暗号化した属性値(検索用データ)と、属性値の前後にランダムな値を付加して暗号化した属性値(通信用データ)の両者の暗号化データを保持する。そして、検索処理の際は、検索用データにより完全一致の検索処理を行い、通信する際は、通信用データを用いるようにしてもよい。この場合、復号した後は、付加したランダムな値は削除して出力する。また、
図4においては、「共通ID」以外の属性値が暗号化されていたが、属性項目自体や、共通IDの属性値を暗号化対象にしてもよい。
【0056】
図5は、統合データのデータ構造の一例を示す図である。
図5において、統合テーブルTmは、
図4で示したテーブルT1e,T2e,T3eに含まれる属性項目「共通ID」の属性値(識別子)を統合キーとして、統合されたテーブルである。すなわち、統合データは、属性項目として「共通ID」,「年齢」,「性別」,「収入」,「購買フラグ1」,「居住地域」,「購買フラグ2」,「購買フラグ3」,「配偶者フラグ」,「扶養人数」,「購買フラグ4」を含むテーブルTmであって、「共通ID」以外の各属性項目の属性値は、
図4において示したように、暗号化されている。
図5で示すようなデータ構造を有する統合データは、共通データベース300に格納される。共通データベース300は、例えば、属性項目をカラム(列)として有するテーブルを格納するリレーショナルデータベースである。なお、本明細書では、統合テーブルのロウ(行)を「レコード」と記載する。
【0057】
統合テーブルTmにおいて、属性項目「年齢」,「性別」,「収入」,「購買フラグ1」(カラム)は、データ提供サーバ100-1(会社A)が提供する機微データである。属性項目「居住地域」,「購買フラグ2」,「購買フラグ3」(カラム)は、データ提供サーバ100-2(会社B)が提供する機微データである。属性項目「配偶者フラグ」,「扶養人数」,「購買フラグ4」(カラム)は、データ提供サーバ100-3(会社C)が提供する機微データである。
【0058】
テーブルT3に含まれ、テーブルT1およびT2には含まれていない「共通ID」の属性値「56789」および「78901」については、テーブルT1およびT2に含まれる属性項目の属性値は、ブランク(NULL)またはダミーの数値を格納するなど、データベースの設計者や管理サーバ200の管理者等が適宜決定してもよい。または、統合データの属性項目「共通ID」以外の属性値が格納されていないレコードについては削除するようにしてもよい。
【0059】
すなわち、
図5の例では、
図4のテーブルT1e,T2e,T3eの属性項目「共通ID」を統合キーとして、横方向へテーブルを統合(「属性項目」(カラム)の追加)及び、縦方向へのテーブルの統合(「レコード」の追加)を含む統合処理が行われている。なお、共通データベース300は、上記で例示したリレーショナルデータベースに限らず、NoSQL、NewSQLや、Graph Database等のデータベース種であってもよい。
【0060】
(管理サーバ200の機能構成)
図6は、管理サーバ200の機能構成の一例を示す機能ブロック図である。
図6を参照して、管理サーバ200の機能構成の一例について説明する。
【0061】
管理サーバ200は、通信部201と、記憶部210と、制御部220と、を備える。
【0062】
通信部201は、管理サーバ200がネットワークNWを介して各サーバや装置等と所定の通信プロトコルに従って通信を行うための通信インタフェース回路を有する。通信部201は、受信したデータを制御部220に送り、また、制御部220から受け取ったデータを、ネットワークNWを介してサーバや装置等に送信する。
【0063】
また、通信部201は、共通データベース300に格納される統合データに対するデータ処理(後述)の処理要求を受け付ける受付部として機能する。なお、通信部201は、ネットワークNWを介した装置等と、セキュリティが確保されたセキュアな通信チャンネルでデータを送受信する。セキュアな通信チャンネルの構築、通信方法は、周知の技術であるため、説明を省略する。
【0064】
記憶部210は、RAM(Random Access Memory)、ROM(Read Only Memory)等のメモリ装置、ハードディスク等の固定ディスク装置、又はフレキシブルディスク、光ディスク等の可搬用の記憶装置等を有する。また、記憶部210は、管理サーバ200の各種処理に用いられるコンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、コンピュータ読み取り可能な可搬型記録媒体から公知のセットアッププログラム等を用いて記憶部210にインストールされてもよい。可搬型記録媒体は、例えばCD-ROM(Compact Disc Read Only Memory)、DVD-ROM(Digital Versatile Disc Read Only Memory)等である。コンピュータプログラムは、所定のサーバ等からインストールされてもよい。
【0065】
記憶部210は、データ処理に関する設定ファイル211を有する。設定ファイル211は、データ処理の実行の可否を規定しており、例えば、統合データの属性項目ごとに、データ処理の実行権限を有するユーザ等が対応付けて記憶している。また、設定ファイル211は、統合データの属性項目ごとのデータ提供元などを対応付けて記憶している。なお、設定ファイル211は、管理サーバ200の管理者や、データ提供サーバ100の管理者や関連付けられる組織が適宜設定することができる。
【0066】
また、記憶部210は、通信部201がデータ提供サーバ100から受信した、暗号化された機微データを記憶する。
【0067】
図7は、設定ファイルのデータ構造の一例を示す図である。
図7において、設定ファイル211は、
図5で示した統合データが含む「属性項目」について、データ処理を行う「権限を有するユーザ」と、その属性項目(カラム)の「データを提供したサーバ」(データ提供サーバ)とを対応付けて記憶している。
【0068】
属性項目についてデータ処理を行う権限とは、データ処理の対象として指定した属性項目の属性値についての統計処理や検索処理を実行する権限である。例えば、属性項目「年齢」を対象として、属性値の平均値や最大値、最小値を求めるような統計処理や、所定の年齢以上のレコード数を求めるといった検索処理などのデータ処理を実行する権限のことである。また、例えば、属性項目「性別」を対象として、女性のレコードを抽出し、抽出したレコード数や、所定の属性項目の属性値の平均値等を求めるという統計処理を行う権限であってもよい。
【0069】
ここで、属性項目「年齢」は、「権限を有するユーザ」が「U1,U2,U3」であり、属性項目「性別」は、「権限を有するユーザ」が「ALL」(すべてのユーザ)である。したがって、統合データに対するデータ処理として、属性項目「性別」が属性値「女性」であるレコードについて、属性項目「年齢」の平均を求める場合は、処理要求をしたユーザが「U1,U2,U3」の場合は処理要求を実行する権限を有する。「U1,U2,U3」以外のユーザは、「年齢」に関するデータ処理を実行する権限を有しないので、属性項目「女性」の属性項目「年齢」の平均を求めるというデータ処理は実行できない。
【0070】
図6に戻って、制御部220は、全体制御部221と、統合データ生成部222と、実行部223と、復号要求部224と、を有する。全体制御部221は、管理サーバ200の各機能を制御し、予め記憶部210に記憶されているプログラムに基づいて動作するCPU(Control Processing Unit)等のプロセッサである。なお、全体制御部221として、DSP(Digital Signal Processor)等が用いられてもよい。また、全体制御部204として、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programming Gate Array)等の制御回路が用いられてもよい。
【0071】
統合データ生成部222は、全体制御部221の制御により、通信部201を介して各データ提供サーバ100から受信し、記憶部210に記憶される暗号化された機微データを、機微データに属性項目として含まれる識別子(
図3~
図5の例では共通ID)に基づいて統合して統合データを生成する。そして、統合データ生成部222は、生成した統合データを全体制御部221に送り、全体制御部221は、通信部201を介して、統合データを共通データベース300に格納する。また、統合データ生成部222は、統合データを生成した後、統合した機微データを記憶部210から削除するようにしてもよい。
【0072】
また、統合データ生成部222は、統合データに含まれる属性項目を、設定ファイル211に記憶させる。統合データに含まれる属性項目は、設定ファイル211に基づいて、開示されてもよい。これにより、データ共有システム1に参加するユーザは、どの属性項目に対して、データ処理の処理要求ができるのか把握することができる。また、属性項目を開示しても、属性項目の属性値自体は暗号化されて共通データベース300に格納されるので、共通データシステム1に参加するユーザは、セキュアに統合データを活用することができる。なお、統合データ生成部222における機微データを統合する処理は、統合データに対するデータ処理として実行部223(後述)が行うようにしてもよいし、暗号化された機微データを取得した他の情報処理装置が行ってもよい。
【0073】
実行部223は、統合データに対するデータ処理の処理要求に基づき、データ処理を実行する。そして、実行部223は、実行結果を復号要求部224へ送る。ここで、データ処理とは、統合データの属性項目の少なくとも一部を対象とする検索処理および/または統計処理を含む。本実施形態では、検索処理は、所定の条件を満たすレコードを抽出する処理のことをいう。また、統計処理は、例えば、集計用の関数により行う処理であって、代表的には、テーブルの行数(レコード)を数える処理(COUNT関数)、テーブルの数値列のデータを合計する処理(SUM関数)、テーブルの数値列のデータを平均する処理(AVG関数)、テーブルの任意列のデータの最大値を求める処理(MAX関数)、テーブルの任意列のデータの最小値を求める処理(MIN関数)などであるが、これらに限られない。対象セグメントごとにまとめる「GROUP BY」、順序を昇順・降順に並び替える「ORDER BY」のようなSQL構文であってもよい。
【0074】
データ処理の処理要求は、例えば、SQL文によって記述されたクエリであってもよい。より具体的には、
図5で示した統合データであるテーブルTmを対象としたSQL文として、例えば、「select avg(年齢) from ‘テーブルTm’ where ‘居住地域’=東京;」で示されるSQL文をデータ処理の処理要求として通信部201が受け付ける。実行部223は、SQL文に基づき、通信部201を介して、共通データベース300にアクセスし、テーブルTmについて、属性項目「居住地域」の属性値が「東京」であるレコードを抽出し、抽出したレコードについて、属性項目「年齢」の属性値の平均値を計算する処理を実行するが、テーブルTmのデータは、上述のように暗号化されているため、以下のような処理を行う。
【0075】
例えば、実行部223は、where句の条件一致判定のため、設定ファイル211を参照して、属性項目「居住地域」を暗号化したデータ提供サーバ100の情報を取得する。そして、where句の条件文を属性項目「居住地域」を暗号化したデータ提供サーバ100(
図7の例では、データ提供サーバ100-2)に通信部201を介して送信する。その際、暗号状態で検索が可能な方式(AESや検索可能暗号など)で暗号化するよう要求し、暗号化されたwhere句の条件文を取得する。例えば、データ提供サーバ100-2は、実行部223の要求に応じて、上述のクエリ「select avg(年齢) from ‘テーブルTm’ where ‘居住地域’=東京;」に対し、属性項目「居住地域」を暗号化する際に用いた暗号鍵で「東京」を暗号化する。そして、暗号化されたwhere句を含む「select avg(年齢) from ‘テーブルTm’ where ‘居住地域’=avf3h54…;」を管理サーバ200の実行部223に返す。
【0076】
属性項目「年齢」の属性値は、暗号化状態のまま加減算が可能な(加法的な)準同型暗号方式で暗号化されているため、実行部223は、抽出されたレコードについて、周知の方法により平均値を算出する。以上のように、実行部223は、SQL文を実行することができる。そして、実行結果(上記の例では、「居住地域」の属性値が「東京」である個人の「年齢」の属性値の平均を示す暗号文)を出力する。
【0077】
また、実行部223は、データ処理の処理要求を受け付けると、設定ファイル211に基づいて、データ処理の実行の可否を判断するようにしてもよい。上述したように、設定ファイル211は、統合データの属性項目ごとに、データ処理の実行権限を有するユーザと対応付けて記憶しているため、実行部223は、データ処理の処理要求を行ったユーザが、データ処理の対象としている属性項目に関してデータ処理を行う権限を有しているか判断する。権限を有していないと判断した場合は、実行部223は、処理要求したユーザに対し、通信部201を介して、権限を有していない等のエラー通知を行うようにしてもよい。権限を有していると判断した場合は、実行部223は、データ処理を実行して、実行結果を復号要求部224へ送る。
【0078】
また、実行部223は、例えば、SQL文から、データ処理の対象である属性項目が統合データに含まれているか否かの判断に基づいて、データ処理を実行してもよい。実行部223は、設定ファイル211を参照して、統合データに含まれている属性項目の情報を取得する。そして、データ処理の対象とされる属性項目が統合データに含まれていないと判断した場合は、実行部223は、処理要求したユーザに対し、通信部201を介して、データ処理の対象とされる属性項目が統合データに含まれていない等のエラー通知を行うようにしてもよい。また、ユーザが間違えて属性項目をデータ処理の対象とした可能性があるため、エラー通知に代えて、別の属性項目を対象としてデータ処理を行う旨の提案を行ってもよい。これによりユーザフレンドリーな通知を行うことができる。
【0079】
復号要求部224は、データ提供サーバ100に対し、実行部223が実行したデータ処理の実行結果の復号処理の処理要求を行う。この際、復号要求部224は、実行結果に含まれるレコード数に基づいて、復号処理の処理要求を行ってもよい。例えば、処理要求としてSQL文に記載された条件から抽出されたレコード数が「1」の場合は、統計処理の結果(統計値)が、その抽出されたレコードの属性値と一致してしまい、生データを開示することとなる。したがって、管理サーバ200や、データ提供サーバ100の管理者は、復号条件として、復号要求部224は、抽出されたレコード数が「1」の場合は、復号処理の処理要求を行わないことを予め設定しておいてもよい。また、統計処理の内容に応じて、抽出されたレコード数が「1」以外の数であっても、復号処理の処理要求を行わないようにしてもよい。なお、復号要求部224は、上述のレコードの数のほかに、レコードインデックス、属性項目(カラム)の属性、キーワード、ユーザ属性等のレコードに関する条件に基づいて復号処理の処理要求を行ってもよい。例えば、一部のデータには特定のユーザのみ復号可能(具体的には、レコード項番101-200はユーザAのみが復号可能など)、特定のキーワードを含むデータは復号禁止(具体的には、住所カラムに「東京」というキーワードが入っていると復号禁止)、などを復号処理の処理要求を行う条件としてもよい。
【0080】
復号要求部224は、データ処理の対象である属性項目を含む機微データを提供したデータ提供サーバ100に対し、当該データ提供サーバ100が管理する復号鍵によって実行結果を復号するよう要求する。すなわち、データ処理の対象である属性項目の属性値について、統計処理のため暗号化状態のまま演算を行った実行結果は、当該属性項目を含む機微データを提供したデータ提供サーバ100が管理する暗号鍵で暗号化されている。このため、復号処理は、暗号鍵に対応する復号鍵を管理するデータ提供サーバ100によって行われる必要がある。そこで、復号要求部224は、設定ファイル211を参照して、データ処理の対象である属性項目を提供したデータ提供サーバ100の情報を取得し、当該データ提供サーバ100に対し、復号処理を行うよう処理要求する。
【0081】
また、復号要求部224は、データ処理の対象である属性項目を含む機微データを提供したデータ提供サーバ100に対し、実行結果の復号の可否を問い合わせ、当該問い合わせの許可応答に応じて、当該データ提供サーバ100が管理する復号鍵によって実行結果を復号するよう要求してもよい。例えば、データ提供サーバ100において、予め定められた復号条件を満たすか否か、または、機微データを保有する組織の責任者等が、実行結果を復号してよいか否かを判断し、復号の許可応答があった場合には実行結果を送信して、復号処理を行うよう要求してもよい。これにより、データ提供サーバ100側で処理要求者の実行権限の有無など独自の復号条件を設定することができる。なお、復号要求部224は、設定ファイル211および、実行結果の復号の可否の問い合わせに基づいて復号処理を行うように処理要求してもよい。
【0082】
また、復号要求部224は、データ提供サーバ100が復号した実行結果を、通信部201を介して取得し、当該取得した実行結果を、データ処理の処理要求の送信元(端末装置400)に提供する。なお、データ処理の処理要求の送信元である端末装置400は、復号した実行結果を暗号化するための公開鍵を、データ処理の処理要求とともに、管理サーバ200に送信しておいてもよい。この場合、復号要求部224は、復号処理の処理要求とともに、端末装置400の公開鍵もデータ提供サーバ100に送信する。データ提供サーバ100は、受信した公開鍵によって、復号した実行結果を暗号化し、管理サーバ200に送信する。端末装置400は、管理サーバ200から、端末装置400の公開鍵で暗号化された実行結果を受信し、端末装置400の秘密鍵で復号して実行結果を取得できる。これにより、管理サーバ200に実行結果を開示することなく、データ処理を行うことができる。
【0083】
また、復号要求部224は、データ処理の対象である属性項目を含む機微データを提供したデータ提供サーバ100に対し、当該データ提供サーバ100が管理する暗号鍵によって実行結果を復号し、当該復号した実行結果を、データ処理の処理要求の送信元(端末装置400)に提供するよう要求してもよい。管理サーバ200を介することなく直接データ処理の処理要求の送信元に実行結果を送信することにより、通信工程を減らすことができる。この際も、上述と同様に、あらかじめ端末装置400の公開鍵を、復号された実行結果を暗号化するために、データ処理の処理要求とともに管理サーバ200に送信しておいてもよい。なお、上記では、実行結果を端末装置400の公開鍵で暗号化する例を述べたが、データ共有システム1などにおいて、予め共有している共通鍵で暗号化してもよい。
【0084】
(端末装置400の機能構成)
図8は、端末装置400の機能構成の一例を示す機能ブロック図である。
図8を参照して、端末装置400の機能構成の一例について説明する。
【0085】
端末装置400は、通信部401と、記憶部402と、入力部403と、出力部404と、制御部405と、を備える。端末装置400は、上述したように、例えば、プラットフォーム(データ共有システム1)に参加する組織に所属するユーザが操作する情報処理装置であってもよい。
【0086】
通信部401は、データ提供サーバ100の通信部101と同様の機能を有し、端末装置400がネットワークNWを介してサーバや装置等と所定の通信プロトコルに従って通信を行うための通信インタフェース回路を有する。通信部401は、受信したデータを制御部405に送り、また、制御部405から受け取ったデータを、ネットワークNWを介してサーバや装置等に送信する。
【0087】
記憶部402は、データ提供サーバ100の記憶部103と同様の機能を有する記憶装置であって、端末装置400の各種処理に用いられるコンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、コンピュータ読み取り可能な可搬型記録媒体から公知のセットアッププログラム等を用いて記憶部402にインストールされてもよい。また、記憶部402は、端末装置400からデータ処理の実行結果を暗号化するための暗号鍵(公開鍵)と、当該暗号鍵で暗号化された実行結果を復号するための復号鍵(秘密鍵)とを記憶してもよい。
【0088】
入力部403は、端末装置400のユーザ入力を受け付けるインタフェースである。入力部403は、例えば、キーボードや、タッチパネル、音声入力を検出するマイクであるが、これらに限られない。ユーザは、入力部403を介して、データ処理の処理要求を入力する。処理要求は、例えば、SQLによって記載される。
【0089】
出力部404は、情報を出力してユーザに通知するインタフェースである。出力部404は、例えば、ディスプレイや、音声出力するスピーカであるが、これらに限られない。出力部404は、データ処理の実行結果をディスプレイに表示する等してユーザに提供する。
【0090】
制御部405は、端末装置400の各機能を制御し、予め記憶部402に記憶されているプログラムに基づいて動作するCPU(Control Processing Unit)等のプロセッサである。制御部405は、入力部403により入力されたデータ処理の処理要求を、通信部401を介して管理サーバ200に送信する。この際、制御部405は、処理要求を、記憶部402に記憶された公開鍵とともに、管理サーバ200に送信してもよい。また、制御部405は、通信部401を介して、データ処理の実行結果を取得する。データ処理の実行結果が端末装置400の公開鍵により暗号化されている場合は、公開鍵と対になる秘密鍵により復号し、実行結果を取得する。なお、実行結果は、データ共有システム1において予め、または適宜構築されたセキュアな通信のための共通鍵により暗号化されるようにしてもよい。
【0091】
図9は、統合データを共通データベースに格納する処理の一例を示すフローチャートである。
図9を参照して、プラットフォーム(データ共有システム1)に参加する組織が提供する機微データが統合され、共通データベース300に格納される処理の流れについて説明する。なお、処理の流れは一例であり、
図9で示す順序に限られない。また、
図9で示す、複数のテーブルを一つのテーブルに統合する処理は一例であることはいうまでもない。
【0092】
ステップS101において、データ提供サーバ100の通信部101は、プラットフォームに参加する組織等から機微データを取得する。通信部101は、取得した機微データを制御部102に送る。制御部102は、記憶部103に機微データを記憶させる。
【0093】
ステップS102において、データ提供サーバ100の制御部102は、暗号化部105に対し、ステップS101で取得した機微データに暗号化処理を行うよう制御する。
【0094】
暗号化部105は、制御部102の制御に応じて、記憶部103から機微データを読み込み、例えば、属性項目(カラム)のデータ形式等を確認する。そして、暗号化部105は、属性項目のデータ形式や属性項目の内容に応じた暗号化処理を実行する。例えば、属性項目の属性値のデータ形式が数値の場合は、準同型暗号方式および/または順序保存暗号方式を用いて暗号化する。データ形式が文字列の場合は、検索可能暗号方式を用いて暗号化する。なお、暗号化部105は、属性項目が識別子(共通ID)の属性値については、暗号化してもよいし、しなくてもよい。暗号化されていたとしても、データ統合処理のための統合キーとして用いることができるからである。また、暗号化処理のために、暗号化部105は、鍵管理部104に対し、暗号鍵を要求し、暗号化する暗号方式に応じた鍵を取得する。暗号化部105は、暗号化した機微データを記憶部103に記憶させる。
【0095】
ステップS103において、データ提供サーバ100の通信部101は、制御部102からの制御により、記憶部103に記憶された、暗号化された機微データを管理サーバ200に送信する。なお、ステップS101からステップS103の処理は、プラットフォーム(データ共有システム1)に参加する各組織に関連付けられたデータ提供サーバ100において、並列的に処理が実行されていてもよい。
【0096】
ステップS104において、管理サーバ200の通信部201は、暗号化された機微データを各データ提供サーバ100から取得する。通信部201は、暗号化された機微データを全体制御部221に送る。全体制御部221は、暗号化された機微データを記憶部210に記憶させる。
【0097】
ステップS105において、管理サーバ200の統合データ生成部222は、全体制御部221の制御により、記憶部210に記憶された暗号化された機微データを読み出し、機微データの属性項目として含まれる識別子(共通ID)に基づいて機微データを統合して統合データを生成する。統合データ生成部222は、生成した統合データを記憶部210に記憶させる。
【0098】
ステップS106において、管理サーバ200の通信部210は、全体制御部221からの制御により、記憶部210に記憶された統合データを共通データベース300に送信する。共通データベース300は、受信した統合データを格納する。
【0099】
図10は、データ処理の一例を示すフローチャートである。
図10を参照して、管理サーバ200におけるデータ処理の流れの一例を説明する。なお、データ処理の流れは一例であり、
図10に示す順序に限られない。
【0100】
ステップS201において、通信部201は、端末装置400からデータ処理の処理要求を受け付ける。なお、データ処理の処理要求は、例えば、SQLによって記載されていてもよい。また、処理要求は、復号された実行結果を暗号化するために、端末装置400において管理される暗号鍵を含んでもよい。また、処理要求は、処理要求した端末装置400のユーザ情報など、送信元を識別するための情報を含んでもよい。通信部201は、受け付けたデータ処理の処理要求を全体制御部221に送る。
【0101】
ステップS202において、実行部223は、全体制御部221からの制御により、設定ファイル211に基づき、データ処理の実行可否について判断する。実行部223は、例えば、
図7に示した設定ファイル211を参照して、データ処理の処理要求を送信したユーザが実行権限を有するか否か、また、処理要求に含まれる、データ処理の対象とする属性項目が、統合データに含まれるかを判断する。実行部223が、設定ファイル211に基づいて、データ処理が実行可能と判断した場合(ステップS202において、Y)は、処理はステップS203に進む。実行部223が、データ処理が実行できないと判断した場合(ステップS202において、N)は、処理はステップS208に進む。
【0102】
ステップS203において、実行部203は、共通データベース300から統合データを取得し、データ処理の実行を行う。データ処理については前述したとおりであるので、詳細な説明は省略するが、機微データは暗号化状態のまま演算可能な暗号方式で暗号化されているため、実行部203は、データ処理の処理要求に応じて、機微データを暗号化状態のまま演算することができ、実行結果も暗号化状態のままである。実行部203は、実行結果を復号要求部224に送る。
【0103】
ステップS204において、復号要求部224は、実行結果の復号の可否を判断する。より具体的には、復号要求部224は、実行結果に含まれるレコード数(例えば、データ処理として処理要求された統計処理等のために抽出されたレコード数)に基づいて、復号の可否を判断する。復号要求部224が、実行結果に含まれるレコード数が「1」であると判断した場合(ステップS204において、N)は、処理はステップS208に進む。一方、そうでない場合(ステップS204において、Y)は、処理はステップS205に進む。なお、復号要求部224は、復号処理の可否をレコード数に基づいて判断する他に、データ処理の対象となる属性項目を含む機微データを提供したデータ提供サーバ100に、復号処理を許可するか否か問い合わせてもよい。そして、問い合わせから所定の期間に回答を受信しなければ、処理をステップS208に進めるようにしてもよい。
【0104】
ステップS205において、復号要求部224は、実行結果の復号処理の処理要求を行う。復号要求部224は、例えば、設定ファイル211を参照して、統計処理の対象として指定された属性項目を提供したデータ提供サーバ100に対し、通信部201を介して、復号処理の処理要求を行う。データ提供サーバ100は、復号処理の処理要求に応じて、復号鍵に基づいて、実行結果の復号処理を行う。なお、復号処理の処理要求には、データ処理の処理要求を行った端末装置400の暗号鍵を含ませ、データ提供サーバ100は、当該暗号鍵によって復号された実行結果を暗号化してもよい。これにより、データを提供したデータ提供サーバ100およびデータ処理の処理要求をした端末装置400以外には、実行結果を開示しないようにすることができ、情報漏洩を防ぐことができる。
【0105】
ステップS206において、復号要求部224は、通信部201を介して、復号された実行結果を取得する。
【0106】
ステップS207において、復号要求部224は、取得した実行結果を、データの処理要求を送信した端末装置400に提供する。端末装置400は、取得した実行結果が端末装置400の公開鍵で暗号化されていれば、秘密鍵を用いて復号する。
【0107】
また、ステップS208において、全体制御部221は、ステップS202における実行部223の実行不可の判断、ステップS204における復号要求部224の復号不可の判断に応じて、通信部201を介して、データ処理の実行結果を提供できない旨のエラーの通知を行う。この際、実行権限がない等の理由を通知してもよい。
以上のようにして、データ共有システム1ではデータ処理を行う。
【0108】
(ハードウェア構成図)
図11は、管理サーバ200のハードウェア構成を示すブロック図である。管理サーバ200は、コンピュータ501に実装される。コンピュータ501は、CPU502と、主記憶装置503と、補助記憶装置504と、インタフェース505と、を備える。
【0109】
管理サーバ200の各構成要素の動作は、プログラムの形式で補助記憶装置504に記憶されている。CPU502は、プログラムを補助記憶装置504から読み出して主記憶装置503に展開し、当該プログラムに従って上記処理を実行する。また、CPU502は、プログラムに従って、記憶領域を主記憶装置503に確保する。当該プログラムは、具体的には、コンピュータ501に、データ処理を行わせるプログラムである。
【0110】
なお、補助記憶装置504は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、インタフェース505を介して接続される磁気ディスク、光磁気ディスク、CD-ROM、DVD-ROM、半導体メモリ等が挙げられる。また、このプログラムがネットワークを介してコンピュータ501に配信される場合、配信を受けたコンピュータ501が当該プログラムを主記憶装置503に展開し、処理を実行してもよい。
【0111】
また、当該プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、当該プログラムは、前述した機能を補助記憶装置504に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル(差分プログラム)であってもよい。なお、
図11に示したハードウェア構成は、データ提供サーバ100および端末装置400も同様の構成としてもよい。これらの装置における各構成要素の動作も、上述の管理サーバ200と同様に、補助記憶装置に記憶されたプログラムに従ったCPUにより実現する。
【0112】
(効果の説明)
上述したように、本実施形態に係るデータ共有システムは、複数のデータ提供サーバと、共通データベースと、管理サーバとを備え、管理サーバは、各データ提供サーバから提供された、所定の暗号方式で暗号化された機微データを統合した統合データに対して、データ処理の処理要求を受け付ける。そして、管理サーバは、暗号化状態のままデータ処理を行い、データ処理の実行結果を、当該データ処理の対象である属性項目を含む機微データを提供したデータ提供サーバに対し、当該データ提供サーバが管理する復号鍵に基づいて、復号するよう要求する。機微データを統合した統合データは暗号化状態のまま共通データベースに格納され、管理サーバにおいてデータ処理される。このように、管理サーバは、機微データに対する復号鍵を取得せず、暗号化された機微データや、実行結果を復号することはできないので、機微データやそれを活用したデータ処理(統計処理など)の実行結果が、漏洩することを防止することができる。
【0113】
また、本実施形態においては、共通データベースは、属性項目をカラムとして有するテーブルを格納し、データ処理は、統合データの属性項目の少なくとも一部を対象とする検索処理および/または統計処理であるから、データ共有システムに参加する組織は、他組織が保有する属性項目の属性値を利用して検索処理や統計処理を行うことができる。これにより、自組織が疎なデータしか有さない場合であっても、データ共有システムに参加する他組織のデータを活用することができる。
【0114】
また、本実施形態においては、実行結果の復号処理の処理要求は、実行結果に含まれるレコード数に基づいて、復号処理の処理要求を行う。これにより、レコード数が1の場合に実行結果を復号することを防ぎ、生データが開示されることを防止することができる。
【0115】
また、本実施形態においては、管理サーバが、データ処理の対象である属性項目を含む機微データを提供したデータ提供サーバに対し、当該データ提供サーバが管理する復号鍵によって実行結果を復号するよう要求する。実行結果を復号できるのは、当該機微データを提供し、暗号化したデータ提供サーバのみであるので、機微データを保有する組織は、機微データをセキュリティ上安全に管理することができる。
【0116】
また、本実施形態においては、管理サーバが、データ処理の対象である属性項目を含む機微データを提供したデータ提供サーバに対し、実行結果の復号の可否を問い合わせ、問い合わせの許可応答に応じて、データ提供サーバが管理する復号鍵によって実行結果を復号するよう要求する。これにより、実行結果の復号の可否をデータ提供サーバ側でも管理することができ、情報漏洩を防止することができる。
【0117】
また、本実施形態においては、管理サーバ、または、データ提供サーバが、当該データ提供サーバが復号した実行結果をデータ処理の処理要求の送信元に提供する。これにより、データ処理の処理要求の送信元は、実行結果を取得することができる。
【0118】
また、本実施形態においては、データ処理の実行の可否を規定した設定ファイルに基づいて、データ処理を実行する。これにより、データ処理の実行前に、データ処理を実行するか否かを判断できるため、例えば、データ処理の実行権限を有しない者がした処理を実行せずにすみ、データ処理量を削減することができる。
【0119】
また、本実施形態においては、準同型暗号方式、順序保存暗号方式、AES、DES、検索可能暗号、SHA、MD5のうちの少なくとも一つで機微データを暗号化する。これにより、暗号化状態のままでデータ処理を行うことができ、機微データの情報漏洩を防止しつつ、利活用することができる。
【0120】
また、本実施形態においては、管理サーバが機微データを統合して統合データを生成し、共通データベースに格納する。これにより、データ共有システムに参加する組織は、自組織が保有する機微データを、他組織に開示することなく統合データとして容易に利活用することができる。
【0121】
<実施形態1の変形例1>
端末装置400は、会社Aなど、プラットフォームに参加し、機微データを提供するデータ提供サーバ100-1と関連付けられた組織の従業員が用いる情報処理装置である。この場合、端末装置400は、予め、データ提供サーバ100-1が管理する暗号鍵を取得しておいてもよい。
【0122】
データ処理の処理要求として送信するSQL文の条件文が、データ提供サーバ100-1が提供する属性項目を含む条件一致判定である場合、端末装置400は、データ提供サーバ100-1から取得した暗号鍵に基づいて、条件文を検索可能暗号方式で暗号化して管理サーバ200に送信する。これにより、管理サーバ200において、データ処理の実行を行う際に、データ提供サーバ100-1にSQL文の条件文を暗号化するよう要求する処理を省くことができ、処理効率を向上させるという効果がある。
【0123】
上記実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【符号の説明】
【0124】
1 データ共有システム、100 データ提供サーバ、200 管理サーバ、300 共通データベース、400 端末装置、101,201,401 通信部、102,220,405 制御部、103,210,402 記憶部、104 鍵管理部、 105 暗号化部、106 復号部、211 設定ファイル、221 全体制御部、222 統合データ生成部、223 実行部、224 復号要求部、403 入力部、404 出力部。