(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2022-01-19
(45)【発行日】2022-01-27
(54)【発明の名称】データ共有システム、データ共有方法およびデータ共有プログラム
(51)【国際特許分類】
G06F 21/62 20130101AFI20220120BHJP
H04L 9/14 20060101ALI20220120BHJP
【FI】
G06F21/62 345
H04L9/14
(21)【出願番号】P 2021154945
(22)【出願日】2021-09-23
【審査請求日】2021-09-28
【早期審査対象出願】
(73)【特許権者】
【識別番号】518334141
【氏名又は名称】EAGLYS株式会社
(74)【代理人】
【識別番号】100210815
【氏名又は名称】西田 聡子
(72)【発明者】
【氏名】今林 広樹
【審査官】行田 悦資
(56)【参考文献】
【文献】特許第6868818(JP,B1)
【文献】国際公開第2013/069770(WO,A1)
【文献】特開2002-261748(JP,A)
【文献】特許第6803598(JP,B1)
【文献】四方 順司,量子コンピュータの脅威を考慮した高機能暗号:格子問題に基づく準同型暗号とその応用,金融研究所ディスカッション・ペーパー・シリーズ,日本銀行,2018年05月10日,No. 2018-J-7,pp.1-23
【文献】坂崎 尚生,多対多の暗復号可能な共通鍵型検索可能暗号の提案,2019年 暗号と情報セキュリティシンポジウム予稿集,日本,一般社団法人電子情報通信学会,2019年01月15日,pp.1-7
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
H04L 9/14
(57)【特許請求の範囲】
【請求項1】
機微データを取得する機微データ取得部と、
前記機微データを暗号化する暗号化部と、
前記暗号化された機微データを記憶する記憶部と、
前記機微データに対するデータ処理の処理要求を受け付ける受付部と、
前記暗号化された機微データを、所定の暗号方式に再暗号化して前記データ処理を実行する第1の処理実行部と、
前記再暗号化を行うことなく、前記データ処理を実行する第2の処理実行部と、
前記受け付けたデータ処理の内容に基づいて、前記第1の処理実行部および/または前記第2の処理実行部に前記データ処理の実行を指示する制御部と、
を備える、データ共有システム。
【請求項2】
前記機微データは、属性項目ごとの属性値を含み、
前記暗号化部は、前記機微データの少なくとも一部の属性値を前記暗号化し、
前記第1の処理実行部は、前記データ処理として、機械学習に関する演算を実行し、
前記第2の処理実行部は、前記データ処理として、前記機微データの属性項目の少なくとも一部を対象とする検索処理および/または統計処理を実行する、請求項1に記載のデータ共有システム。
【請求項3】
前記機微データを保有するユーザごとに対応付けられた、ユーザ鍵を管理するユーザ鍵管理部と、
前記第2の処理実行部における実行結果を復号するユーザ復号部と、をさらに備え、
前記暗号化部は、前記機微データを保有するユーザに対応付けられた前記ユーザ鍵に基づいて、当該機微データを暗号化し、
前記ユーザ復号部は、前記データ処理の対象である前記属性項目を含む機微データを保有するユーザに対応付けられたユーザ鍵に基づいて、前記実行結果を復号する、請求項2に記載のデータ共有システム。
【請求項4】
システム鍵を管理するシステム鍵管理部をさらに備え、
前記第1の処理実行部は、前記システム鍵に基づいて、前記再暗号化を行う再暗号化部を有する、請求項3に記載のデータ共有システム。
【請求項5】
前記システム鍵は、システム公開鍵およびシステム秘密鍵の鍵対を含み、
前記ユーザ鍵は、ユーザ公開鍵およびユーザ秘密鍵の鍵対を含み、
前記再暗号化部は、
前記ユーザ鍵管理部から、前記データ処理の対象である前記機微データを保有するユーザに対応付けられた前記ユーザ秘密鍵を取得し、
前記ユーザ秘密鍵および前記システム公開鍵に基づいて、前記再暗号化を行う、請求項4に記載のデータ共有システム。
【請求項6】
前記第1の処理実行部における実行結果を、前記システム秘密鍵に基づいて復号するシステム復号部をさらに備える、請求項5に記載のデータ共有システム。
【請求項7】
前記第1の処理実行部および前記第2の処理実行部は、
前記データ処理の内容に応じて、前記記憶部が記憶する複数の前記暗号化された機微データを、当該機微データに前記属性項目として含まれる識別子に基づいて統合した統合データを生成し、
前記統合データに対して、前記データ処理を実行する、請求項2から請求項6のいずれか一項に記載のデータ共有システム。
【請求項8】
制御部および記憶部を備えるコンピュータにおいて実行させるデータ共有方法であって、
前記制御部が、機微データを取得するステップと、
前記制御部が、前記機微データを暗号化するステップと、
前記記憶部が、前記暗号化された機微データを記憶するステップと、
前記制御部が、前記機微データに対するデータ処理の処理要求を受け付けるステップと、
前記制御部が、前記暗号化された機微データを、所定の暗号方式に再暗号化して前記データ処理を実行する第1のステップと、
前記制御部が、前記再暗号化を行うことなく、前記データ処理を実行する第2のステップと、
前記制御部が、前記受け付けたデータ処理の内容に基づいて、前記第1のステップおよび/または前記第2のステップを実行するステップと、
を備える、データ共有方法。
【請求項9】
請求項8に記載のデータ共有方法をコンピュータに実行させるためのデータ共有プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ共有システム、データ共有方法およびデータ共有プログラムに関する。
【背景技術】
【0002】
インターネット上で提供される電子商取引サービスや、IoT(Internet of Things)の進展により、自社保有のデータはもとより、他組織(他者)のデータをも活用した大量のデータに対する統計分析や機械学習を行う技術が求められている。例えば、特許文献1には、サービス提供者が利用者の個人情報を得ることなく、取引履歴の分析を得ることができる電子商取引システムが開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1に記載のシステムでは、統計分析を行いたいサービス提供サーバ側が、他のすべてのサービス提供サーバに対して暗号化鍵を送信し、他のサービス提供サーバは、当該送信された暗号化鍵を用いてデータを暗号化し、統計分析を行う第三者機関サーバに送信する。このため、他のサービス提供サーバにとっては、自身が保有するデータが他者の暗号化鍵によって暗号化されるため、情報漏洩や不正利用等の情報セキュリティ上の問題が発生する可能性が危惧される。
【0005】
また、昨今は、機械学習や人工知能技術の広まりから、情報漏洩や不正利用等の情報セキュリティ上の問題を考慮しながら、膨大なデータを学習できる技術が望まれている。しかしながら、特許文献1に記載のシステムは、一部のサービス提供装置から提供されるデータに基づいた統計分析であり、複数のサービス提供者の各データを統合して行うことでより高い予測精度が期待される全体統計や機械学習などの処理を行うものではない。
【0006】
そこで、本開示は、上記課題を解決すべくなされたものであって、その目的は、各組織が保有するデータを、データの詳細を他組織に開示することなく、活用することができるデータ共有システムを提供することである。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本開示に係るデータ共有システムは、機微データを取得する機微データ取得部と、機微データを暗号化する暗号化部と、暗号化された機微データを記憶する記憶部と、機微データに対するデータ処理の処理要求を受け付ける受付部と、暗号化された機微データを、所定の暗号方式に再暗号化してデータ処理を実行する第1の処理実行部と、再暗号化を行うことなく、データ処理を実行する第2の処理実行部と、受け付けたデータ処理の内容に基づいて、第1の処理実行部および/または第2の処理実行部にデータ処理の実行を指示する制御部と、を備える。
【0008】
また、上記目的を達成するため、本開示に係るデータ共有方法は、制御部および記憶部を備えるコンピュータにおいて実行させるデータ共有方法であって、制御部が、機微データを取得するステップと、制御部が、機微データを暗号化するステップと、記憶部が、暗号化された機微データを記憶するステップと、制御部が、機微データに対するデータ処理の処理要求を受け付けるステップと、制御部が、暗号化された機微データを、所定の暗号方式に再暗号化してデータ処理を実行する第1のステップと、制御部が、再暗号化を行うことなく、データ処理を実行する第2のステップと、制御部が、受け付けたデータ処理の内容に基づいて、第1のステップおよび/または第2のステップを実行するステップと、を備える。
【0009】
また、上記目的を達成するため、本開示に係るデータ共有プログラムは、上記データ共有方法をコンピュータに実行させる。
【発明の効果】
【0010】
本開示によれば、各組織が保有するデータを、データの詳細を他組織に開示することなく、活用することができるデータ共有システムを提供することができる。
【図面の簡単な説明】
【0011】
【
図1】本実施形態に係るデータ共有システム1の構成を示す図。
【
図2】データ提供サーバ100の機能構成の一例を示す機能ブロック図。
【
図4】暗号化された機微データのデータ構造の一例を示す図。
【
図6】管理サーバ200の機能構成の一例を示す機能ブロック図。
【
図8】演算サーバ300の機能構成の一例を示す機能ブロック図。
【
図10】共通データベース400の機能構成の一例を示す機能ブロック図。
【
図11】端末装置500の機能構成の一例を示す機能ブロック図。
【
図12】データ処理の一例を示すフローチャートである。
【
図13】データ提供サーバ100のハードウェア構成を示すブロック図。
【
図14】演算サーバ1300の機能構成の一例を示す機能ブロック図。
【発明を実施するための形態】
【0012】
以下、本開示の実施形態について図面を参照して説明する。実施形態を説明する全図において、共通の構成要素には同一の符号を付し、繰り返しの説明を省略する。なお、以下の実施形態は、特許請求の範囲に記載された本開示の内容を不当に限定するものではない。また、実施形態に示される構成要素のすべてが、本開示の必須の構成要素であるとは限らない。
【0013】
<本発明の概要>
近年、顧客情報などの大量の機微データを保有する組織が増加している。これにより、自組織だけでなく、他組織が保有する機微データも活用して、機械学習や統計的な分析処理等を行い、新たなビジネスにつなげることが期待されている。しかしながら、機微データは、取り扱いに細心の注意が必要であり、情報漏洩を防ぎつつ、効率的にデータ処理を行うことが求められる。
【0014】
こうした求めに対応する技術として、データを暗号化したまま演算を行う「秘密計算」が注目されている。「秘密計算」の実現方式の一つとして、例えば、検索可能暗号がある。検索可能暗号は、暗号化したままデータ検索が可能となる暗号方式であり、自組織の保有する機微データの内容を開示することなく、他組織が当該データについて検索を行うことが可能であるが、暗号化したまま、機械学習のような高度な数値計算を必要とするデータ処理は実行できない。
【0015】
一方、「秘密計算」の実現方式の一つである準同型暗号は、準同型性を有する暗号方式であり、ある公開鍵を用いて暗号化された暗号データに対して、暗号化したまま数値計算を行うことができる。準同型暗号を用いることにより、暗号化したままの機微データに対し、高度な数値計算を必要とする機械学習を行うことが可能であるが、複数の暗号データに基づいて、現実的な処理性能で機械学習を可能とするためには、これらの暗号データが同一の暗号化空間にある、すなわち、同一の公開鍵により暗号化されている必要があることが知られている。
【0016】
そこで、本発明に係るデータ共有システムでは、機微データに対する機械学習や検索処理等のデータ処理要求の内容に応じて、セキュアで効率的な処理方法を選択し、データ処理を行う。これにより、各組織が保有するデータを、データの詳細を他組織に開示することなく、効率的に活用することができる。なお、以下、本明細書において、「秘密計算」とは、データを暗号化状態のまま演算を行う処理のことをいい、「演算」とは、加減乗除に関する計算、分析、機械学習に関する計算(例えば、決定木等における条件比較なども含む。)をいう。
【0017】
<実施形態1>
本実施形態では、管理サーバ200が、端末装置500から受け付けたデータ処理の処理要求の内容に応じて、演算サーバ300および/または共通データベース400に対してデータ処理の実行を指示する。データ処理として、演算サーバ300は、機械学習に関する演算を実行し、共通データベース400は、検索処理等を実行する。本実施形態において、演算サーバ300は、各データ提供サーバ100において暗号化された機微データを復号することなく、再暗号化鍵により同一の暗号方式に再暗号化する。すなわち、複数の暗号データを再暗号化鍵により同一の暗号化空間に変換しておくことで、複数の暗号データを対象としたデータ処理を現実的な処理性能で実行することができる。
【0018】
(データ共有システム1の構成)
図1は、本実施形態に係るデータ共有システム1の構成を示す図である。
図1を参照して、実施形態1に係るデータ共有システム1の構成について説明する。
【0019】
データ共有システム1は、データ提供サーバ100-1,100-2,…,100-N(Nは自然数)と、管理サーバ200と、演算サーバ300と、共通データベース400と、端末装置500と、を備える。
図1において、データ提供サーバ100-1,100-2,…,100-Nと、管理サーバ200と、演算サーバ300と、共通データベース400と、端末装置500とは、ネットワークNWを介して通信可能に接続される。ネットワークNWは、例えば、WAN(Wide Area Network)、LAN(Local Area Network)、光回線網、イントラネット等であるが、任意のネットワークから構成されてもよい。データ共有システム1は、当該システムに参加する各組織が、それぞれの組織が保有するデータを、他組織にデータの詳細な内容を開示することなく利用できるプラットフォームである。なお、組織とは、企業や団体に限られず、役割ごとに区切られた部門、課、グループ、チーム等の集団であってもよい。
【0020】
以下の説明では、データ提供サーバ100-1,100-2,…,100-Nは、特に区別する必要のない限り、データ提供サーバ100と記載する。また、本実施形態においては、演算サーバ300および共通データベース400は、ネットワークNWを介して管理サーバ200と接続されているが、これに限られず、管理サーバ200とローカルに接続されていてもよい。
【0021】
データ提供サーバ100は、プラットフォームに参加する組織と関連付けられており、組織が保有する機微データを暗号化し、管理サーバ200に送信する。
図1において、例えば、データ提供サーバ100―1は「会社A」、データ提供サーバ100-2は「会社B」、データ提供サーバ100-Nは「会社X」に関連付けられている。
【0022】
機微データは、属性項目(カラム)ごとの属性値を含み、データ提供サーバ100は、機微データの少なくとも一部の属性値が暗号化された機微データを管理サーバ200に送信する。機微データのデータ構造については
図3において詳述する。また、本実施形態に係るデータ提供サーバ100は、機微データを保有するユーザ(組織等)ごとに対応付けられた、ユーザ鍵を自サーバ内で記憶して管理するが、ユーザ鍵の管理の形態は、これに限られない。他の情報処理装置が管理(例えば、KMS(Key Management System:鍵管理システム)に管理を委託)してもよい。
【0023】
管理サーバ200は、各データ提供サーバ100から、暗号化された機微データを取得し、共通データベース400に格納する。また、管理サーバ200は、端末装置500から機微データに対するデータ処理の処理要求を受け付け、そのデータ処理の内容に基づいて、演算サーバ300がデータ処理を実行するか、共通データベース400がデータ処理を実行するかを判断する。その判断に応じて、演算サーバ300および/または共通データベース400に対し、データ処理の実行を指示する。
【0024】
演算サーバ300は、管理サーバ200の指示に応じて、共通データベースに格納された機微データを所定の暗号方式に再暗号化してデータ処理(機械学習に関する演算)を実行する。本実施形態では、演算サーバ300は、システム鍵(再暗号化に用いるシステム鍵)を自サーバで記憶して管理するが、他の情報処理装置が管理してもよい。また、本実施形態では、演算サーバ300は、データ提供サーバ100から取得したユーザ鍵、および演算サーバ300が管理するシステム鍵から再暗号化鍵を生成し再暗号化鍵を用いて暗号化を行う。なお、データ提供サーバ100は、ユーザ鍵を外部に提供せず、再暗号化鍵を自サーバ内において生成すると、よりセキュリティが高まる。
【0025】
共通データベース400は、上述のように管理サーバ200から送られた機微データを記憶する。また、共通データベース400は、管理サーバ200の指示に応じて、機微データを、再暗号化を行うことなく、データ処理(検索処理や統計処理等の単純統計)を実行する。
【0026】
端末装置500は、データ共有システム1のユーザが用いる情報処理装置である。端末装置500は、例えば、PC(Personal Computer)、スマートフォン、タブレット端末である。また、ヘッドマウントディスプレイ等のウェアラブル端末、AR(Augmented Reality)/VR(Virtual Reality)/MR(Mixed Reality)装置等であってもよい。ユーザは、例えば、会社Aの社員など、プラットフォームに参加し、機微データを提供する組織の従業員であってもよく、この場合、情報処理装置は、ユーザが所属する組織のデータ提供サーバ100と紐づけられた構成としてもよい。
【0027】
端末装置500は、管理サーバ200に対し、各データ提供サーバ100から提供される機微データを対象としたデータ処理の処理要求を行う。データ処理は、例えば、機械学習に関する演算や、検索処理および/または統計処理を含む。また、データ処理は、機微データを統合する処理を含む。データ処理の処理要求(処理クエリ)は、例えば、SQL文などのCLI(Command Line Interface)もしくはGUI(Graphical User Interface)によって記載されてもよい。
【0028】
以下、上述したデータ共有システム1を構成する各サーバ等の機能構成、処理について説明する。なお、各機能構成を示す機能ブロックや処理ブロックは、1つ、または複数の装置、コンピュータプロセッサ、コンピュータプロセッサの分散グループによって実現されてもよい。例えば、管理サーバ200、演算サーバ300、共通データベース400が行う機能は、1つの装置で実現されてもよい。
【0029】
(データ提供サーバ100の機能構成)
図2は、データ提供サーバ100の機能構成の一例を示す機能ブロック図である。
図2を参照して、データ提供サーバ100の機能構成の一例について説明する。
【0030】
データ提供サーバ100は、通信部101と、制御部102と、記憶部103と、ユーザ鍵管理部104と、暗号化部105と、ユーザ復号部106と、を備える。
【0031】
通信部101は、データ提供サーバ100がネットワークNWを介してサーバや装置等と所定の通信プロトコルに従って通信を行うための通信インタフェース回路を有する。所定の通信プロトコルは、TCP/IP(Transmission Control Protocol/Internet Protocol)等である。通信部101は、受信したデータを制御部102に送り、また、制御部102から受け取ったデータを、ネットワークNWを介してサーバや装置等に送信するが、通信部101は、データ提供サーバ100内の制御部102以外の機能ブロックとデータのやり取りを行ってもよい。なお、通信部101は、ネットワークNWを介した装置やローカルに接続された装置等と、セキュリティが確保されたセキュアな通信チャンネルでデータを送受信する。セキュアな通信チャンネルの構築、通信方法は、共通鍵(セッション鍵など)や公開鍵等を用いた周知の技術であるため、説明を省略する。
【0032】
通信部101は、機微データ取得部に相当し、例えば、プラットフォームに参加する組織から、当該組織が保有する機微データを取得する。
図1において、会社Aと関連付けられるデータ提供サーバ100-1は、会社Aの社員が操作する端末装置500から機微データを取得してもよい。本実施形態において、機微データは、例えば、個人に関する情報であって、氏名、年齢、性別、収入、家族構成、居住地域、勤務情報、銀行口座情報、購買情報、医療関連データなどの個人の属性を示す項目である属性項目(カラム)の属性値(文字列又は数値)である。機微データは、個人に関する情報に限られず、機器に関するログデータや、それらを取り扱う企業のデータ等であってもよい。また、機微データは、属性項目として、複数の機微データを統合した統合データ生成のための統合キーとなる識別子(文字列、数値、またはそれらの組み合わせ)を含み、個人を一意に特定する共通ID等を識別子としてもよい。機微データ及び統合データのデータ構造の詳細については
図3から
図5において後述する。
【0033】
制御部102は、データ提供サーバ100の各機能を制御し、予め記憶部103に記憶されているプログラムに基づいて動作するCPU(Central Processing Unit)等のプロセッサである。なお、制御部102として、DSP(Digital Signal Processor)等が用いられてもよい。また、制御部102として、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programming Gate Array)等の制御回路が用いられてもよい。
【0034】
制御部102は、暗号化部105に対し、通信部101を介して取得した機微データについて暗号化するよう制御する。また、制御部102は、ユーザ復号部106に対し、通信部101を介して取得したデータ処理の実行結果について復号するよう制御する。
【0035】
記憶部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)等である。コンピュータプログラムは、所定のサーバ等からインストールされてもよい。
【0036】
記憶部103は、例えば、暗号化された機微データや、復号されたデータ処理の実行結果、並びに、後述するユーザ鍵管理部104が管理するユーザ鍵(暗号鍵や復号鍵)を記憶する。
【0037】
ユーザ鍵管理部104は、機微データを保有するユーザごとに対応付けられたユーザ鍵を管理する。ユーザ鍵管理部104は、例えば、暗号化部105の要求する暗号方式に応じた鍵を生成してもよい。暗号方式が、例えば、暗号化状態のまま加減算が可能な(加法的な)準同型暗号方式(Paillier方式)の場合は、ユーザ公開鍵(暗号鍵)とユーザ秘密鍵(復号鍵)の組を生成する。
【0038】
また、暗号方式が、暗号文の大小関係と対応する平文の大小関係が一致する順序保存暗号方式(OPE方式:Order Preserving Encryption)や、暗号化状態のまま平文の一致判定が可能な検索可能暗号方式の場合は、共通鍵(秘密鍵)を生成する。このように、ユーザ鍵は、公開鍵と秘密鍵の組のように異なる鍵である場合と、共通鍵のように同じ鍵である場合とがある。なお、鍵生成アルゴリズムは、周知の技術であるので説明を省略する。
【0039】
ユーザ鍵管理部104は、生成した鍵や鍵生成のためのパラメータ等を、例えば、記憶部103に記憶させる。ユーザ鍵管理部104は、生成した鍵と、暗号方式やどのデータ(属性項目(カラム)等)の暗号化に用いたか等とを対応付けて管理する。なお、ユーザ鍵管理部104は、セキュリティを高めるため、ユーザ鍵(秘密鍵)は原則的には外部に提供しないが、信頼できる環境においては、ユーザ鍵(秘密鍵)を提供するように構成してもよい。
【0040】
暗号化部105は、通信部101が取得した機微データの少なくとも一部の属性値を所定の暗号方式で暗号化する。所定の暗号方式には、通信部101が取得した機微データの少なくとも一部の属性値を暗号化状態のまま演算可能な暗号方式を含み、例えば、準同型暗号方式、順序保存暗号方式、AES(Advanced Encryption Standard)、DES(Data Encryption Standard)、検索可能暗号、SHA(Secure Hash Algorithm)、MD5(Message Digest algorithm 5)などである。暗号化アルゴリズムは、周知の技術であるので説明を省略する。なお、「演算」とは、上述したように、加減乗除に関する計算、分析、機械学習に関する計算(例えば、決定木等における条件比較なども含む。)をいう。
【0041】
本実施形態では、暗号化部105は、機微データに含まれる属性項目の属性値のうち、データ形式が数値の場合は、準同型暗号方式(Paillier方式、Lifted-Ellgamal方式、Somewhat Homomorphic Encryption方式、Fully Homomorphic Encryption方式等)および/または順序保存暗号方式(OPE方式)を用いて暗号化する。なお、データ処理の内容に応じて、暗号方式により処理効率が異なるので、暗号化部105は、各属性項目について、準同型暗号方式で暗号化された属性値と、順序保存暗号方式で暗号化された属性値、後述する検索可能暗号方式で暗号化された属性値等、複数の暗号方式で暗号化し、記憶部103に記憶させてもよい。
【0042】
また、暗号化部105は、機微データに含まれる属性項目の属性値のうち、データ形式が文字列の場合は、検索可能暗号方式、もしくは暗号文上で完全一致が可能なAES暗号等を用いて暗号化する。なお、データ形式ごとに適用する上記暗号方式は一例であって、どの属性項目の属性値について暗号化するか、また、どの暗号方式で暗号化するか等は、機微データを保有する組織が適宜決定してもよい。また、個人の意思に従って、機微データを暗号化するか否かを決定してもよい。本実施形態において、暗号化部105は、属性項目として含まれる識別子は、暗号化の対象としないが、他の実施形態として、暗号化部105は、属性項目として含まれる識別子を暗号化の対象としてもよい。識別子に基づく統合データの生成処理については
図5において詳述する。
【0043】
また、暗号化部105は、管理サーバ200の要求に応じて、管理サーバ200から送信された所定のデータ(処理要求としてのSQL文など)を暗号化する。暗号化部105が検索可能暗号やAES暗号等で暗号化したSQL文を用いることで、機微データを暗号化したまま条件一致検索等を行うことができる。
【0044】
ユーザ復号部106は、通信部101が取得した、共通データベース400でのデータ処理の実行結果を復号する。より詳しくは、ユーザ復号部106は、管理サーバ200から復号処理の処理要求がされた実行結果のうち、ユーザ鍵管理部104が管理するユーザ鍵で暗号化した属性項目についてのデータ処理の実行結果を、記憶部103から対応するユーザ鍵を取得して、当該属性項目を暗号化した暗号方式に従って復号する。なお、復号アルゴリズムは、周知の技術であるので説明を省略する。
【0045】
また、ユーザ復号部106は、復号した実行結果を制御部102に送り、制御部102は、復号した実行結果を、通信部101を介して管理サーバ200に送信する。または、制御部102は、管理サーバ200からの要求に応じて、復号した実行結果を、データ処理の処理要求元(端末装置500)に送信してもよい。
【0046】
図3は、機微データのデータ構造の一例を示した図である。本実施形態において、機微データは、個人に関する情報であって、年齢、性別、収入、居住地域、購買情報などの属性項目(カラム:列)の属性値(文字列又は数値)である。また、機微データは、統合キーとして、個人を一意に特定できる識別子(共通ID)を属性項目として含む。識別子は、数値、文字列またはそれらの組み合わせであってよい。なお、
図3において、説明を簡略化するため、所定の属性項目を示しているが、これに加え、図示しない属性項目を機微データに含ませてもよい。また、機微データは、個人に関する情報に限られず、IoT・NW機器、産業用機器などのシステムに関する機密情報(センシングデータやログデータ等)であってもよい。また、統合キーは個人を一意に特定できる識別子に限られず、複数のテーブルにおけるデータを一意に特定できる値であれば、任意の値を用いてもよい。
【0047】
図3において、属性項目の属性値が格納されたテーブルT1,T2,T3が示されている。テーブルT1は、データ提供サーバ100-1が提供する機微データ(すなわち、会社Aが保有するデータ)を示している。テーブルT1において、機微データは、属性項目として、個人を一意に特定する識別子である「共通ID」、個人の年齢を示す「年齢」、個人の性別を示す「性別」、個人の収入を示す「収入」、個人の商品1に対する購買の有無を示す「購買フラグ1」を含む。テーブルT1において、属性項目「共通ID」,「年齢」,「収入」,「購買フラグ1」の属性値は数値である。なお、
図3において「性別」の属性値はカテゴリ(文字列)であるが、性別と数値を対応させる等して、カテゴリを数値で表すようにしてもよい。
【0048】
テーブルT1において、属性項目「共通ID」に対し属性値「12345」、属性項目「年齢」に対し属性値「45」、属性項目「性別」に対し属性値「女」、属性項目「収入」に対し属性値「450」、属性項目「購買フラグ1」に対し属性値「1」が格納されている。これは、共通IDが12345である個人は、年齢が45歳、性別が女、収入が450(万円)、商品1を購入済み、ということを意味している。同様に、属性項目「共通ID」の属性値「67890」,「23456」,「90123」,「89012」,「34567」についても、各属性項目に対し属性値が格納される。
【0049】
テーブルT2は、データ提供サーバ100-2が提供する機微データ(すなわち、会社Bが保有するデータ)を示している。データ提供サーバ100-2は、テーブルT1で示される機微データを保有する会社Aとは異なる属性項目を含む機微データを提供する。
【0050】
テーブル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」についても、各属性項目に対し属性値が格納される。
【0051】
テーブルT1とテーブルT2とでは、「共通ID」以外の属性項目は異なっているが、同一の「共通ID」で示されるレコードは同一の個人に対応する。例えば、テーブルT1の「共通ID」の属性値「67890」によって特定されるレコード(個人)は、テーブルT2の「共通ID」の属性値「67890」によって特定されるレコード(個人)と同一である。
【0052】
テーブルT3は、データ提供サーバ100-3が提供する機微データ(会社Cが保有するデータ)を示している。データ提供サーバ100-3は、テーブルT1およびT2で示される機微データを保有する会社Aおよび会社Bとは異なる機微データを提供する。
【0053】
テーブルT3において、機微データは、属性項目として、個人を一意に特定する識別子である「共通ID」、配偶者の有無を示す「配偶者フラグ」、扶養家族の人数を示す「扶養人数」、個人の商品4に対する購買の有無を示す「購買フラグ4」を含む。テーブルT3において、属性項目「共通ID」,「配偶者フラグ」,「扶養人数」,「購買フラグ4」の属性値は数値である。例えば、テーブルT3において、属性項目「共通ID」に対し属性値「23456」、属性項目「配偶者フラグ」に対し属性値「1」、属性項目「扶養人数」に対し属性値「3」、属性項目「購買フラグ4」に対し属性値「1」が格納されている。これは、共通IDが23456である個人は、配偶者を有し、扶養人数は3人であり、商品4を購入済み、ということを意味している。同様に、属性項目「共通ID」の属性値「90123」,「56789」,「34567」,「78901」,「12345」についても、各属性項目に対し属性値が格納される。
【0054】
テーブルT3と、テーブルT1及びT2とでは、「共通ID」以外の属性項目は異なっている。また、属性項目「共通ID」の属性値は、テーブルT3にのみ「56789」および「78901」が含まれている。すなわち、各テーブルには、同一のレコードの群ではなく、テーブルごとに異なるレコードを含む群であってもよい。なお、本実施形態においては、
図3で示したように、各データ提供サーバが提供する機微データに含まれる属性項目は、「共通ID」(識別子)以外は異なるものとしているが、他の実施形態として、同じ属性項目を含んでいてもよい。その場合、統合データとしてどのデータ提供サーバが提供する属性値を優先するかは、システム管理者等が適宜設定して決定することができる。
【0055】
図4は、暗号化された機微データのデータ構造の一例を示す図である。
図4において、「共通ID」以外の属性項目の属性値が暗号化されたテーブルT1e,T2e,T3eが示されている。これら暗号化されたテーブル(機微データ)は、管理サーバ200が各データ提供サーバ100から取得し、共通データベース400に格納する。共通データベース400は、例えば、属性項目をカラム(列)として有するテーブルを格納するリレーショナルデータベースである。
【0056】
テーブルT1eは、データ提供サーバ100-1(会社A)が管理するユーザ鍵を暗号鍵として、テーブルT1の「共通ID」以外の属性値が暗号化されている。例えば、属性値が数値である属性項目「年齢」,「収入」,「購買フラグ1」については、準同型暗号方式および/または順序保存暗号方式で暗号化し、属性値が文字列である属性項目「性別」については、検索可能暗号方式で暗号化する。なお、テーブルT1eにおいて、説明を簡単にするため、属性値が数値のデータは、例えば、準同型暗号方式で暗号化された値を示している(以下、テーブルT2e,T3eにおいても同様)。
【0057】
テーブルT2eは、データ提供サーバ100-2(会社B)が管理するユーザ鍵を暗号鍵として、テーブルT2の「共通ID」以外の属性値が暗号化されている。例えば、属性値が数値である属性項目「購買フラグ2」,「購買フラグ3」については、準同型暗号方式および/または順序保存暗号方式で暗号化し、属性値が文字列である属性項目「居住地域」については、検索可能暗号方式で暗号化する。
【0058】
また、テーブルT3eは、データ提供サーバ100-3(会社C)が管理するユーザ鍵を暗号鍵として、テーブルT3の「共通ID」以外の属性値が暗号化されている。例えば、属性値が数値である属性項目「配偶者フラグ」,「扶養人数」,「購買フラグ4」については、準同型暗号方式および/または順序保存暗号方式で暗号化する。
【0059】
なお、各テーブルにおいて、「共通ID」以外の全ての属性項目の属性値を同じ暗号鍵で暗号化せず、例えば、データの重要度等に応じて、異なる鍵で暗号化するようにしてもよい。また、属性項目の公開条件等に従って、暗号化対象の属性値を設定してもよい。例えば、データ提供サーバ100-3は、機微データを保有する組織(会社C)の指示に従って、テーブルT3の属性項目「購買フラグ4」の属性値は暗号化しない等の設定をしてもよい。
【0060】
また、
図4において、
図3で属性値が同じデータについては、暗号化データも同じ数値として記載しているが、セキュリティを高めるため、次のような方法を用いてもよい。例えば、検索処理用に、そのまま暗号化した属性値(検索用データ)と、属性値の前後にランダムな値を付加して暗号化した属性値(通信用データ)の両者の暗号化データを保持する。そして、検索処理の際は、検索用データにより完全一致の検索処理を行い、通信する際は、通信用データを用いるようにしてもよい。この場合、復号した後は、付加したランダムな値は削除して出力する。また、
図4においては、「共通ID」以外の属性値が暗号化されていたが、属性項目自体や、共通IDの属性値を暗号化対象にしてもよい。
【0061】
図5は、統合データのデータ構造の一例を示す図である。
図5において、統合テーブルTmは、
図4で示したテーブルT1e,T2e,T3eに含まれる属性項目「共通ID」の属性値(識別子)を統合キーとして、統合されたテーブルである。すなわち、統合データは、属性項目として「共通ID」,「年齢」,「収入」,「購買フラグ1」,「居住地域」,「購買フラグ2」,「購買フラグ3」,「配偶者フラグ」,「扶養人数」,「購買フラグ4」を含むテーブルTmであって、「共通ID」以外の各属性項目の属性値は、
図4において示したように、暗号化されている。演算サーバ300や共通データベース400は、データ処理の内容に応じて、統合データを生成する。また、演算サーバ300からの統合処理の求めに応じて、共通データベース400が統合データを生成し、演算サーバ300に送信するようにしてもよい。また、演算サーバ300や共通データベース400で生成した統合データは、共通データベース400が記憶するようにし、共通データベース400にデータ処理対象となる統合データが記憶されていない場合に、共通データベース400が統合データを生成するようにしてもよい。なお、本明細書では、統合テーブルのロウ(行)を「レコード」と記載する。
【0062】
統合テーブルTmにおいて、属性項目「年齢」,「収入」,「購買フラグ1」(カラム)は、データ提供サーバ100-1(会社A)が提供する機微データである。属性項目「居住地域」,「購買フラグ2」,「購買フラグ3」(カラム)は、データ提供サーバ100-2(会社B)が提供する機微データである。属性項目「配偶者フラグ」,「扶養人数」,「購買フラグ4」(カラム)は、データ提供サーバ100-3(会社C)が提供する機微データである。
【0063】
テーブルT3に含まれ、テーブルT1およびT2には含まれていない「共通ID」の属性値「56789」および「78901」については、テーブルT1およびT2に含まれる属性項目の属性値は、ブランク(NULL)またはダミーの数値を格納するなど、データベースの設計者や管理サーバ200の管理者等が適宜決定してもよい。または、統合データの属性項目「共通ID」以外の属性値が格納されていないレコードについては削除するようにしてもよい。
【0064】
すなわち、
図5の例では、
図4のテーブルT1e,T2e,T3eの属性項目「共通ID」を統合キーとして、横方向へテーブルを統合(「属性項目」(カラム)の追加)及び、縦方向へのテーブルの統合(「レコード」の追加)を含む統合処理が行われている。なお、共通データベース400は、上記で例示したリレーショナルデータベースに限らず、NoSQL、NewSQLや、Graph Database等のデータベース種であってもよい。
【0065】
(管理サーバ200の機能構成)
図6は、管理サーバ200の機能構成の一例を示す機能ブロック図である。
図6を参照して、管理サーバ200の機能構成の一例について説明する。
【0066】
管理サーバ200は、通信部201と、記憶部210と、制御部220と、復号要求部230と、を備える。
【0067】
通信部201は、管理サーバ200がネットワークNWを介して各サーバや装置等と所定の通信プロトコルに従って通信を行うための通信インタフェース回路を有する。通信部201は、受信したデータを制御部220に送り、また、制御部220から受け取ったデータを、ネットワークNWを介してサーバや装置等に送信する。
【0068】
また、通信部201は、共通データベース400に格納される機微データに対するデータ処理(後述)の処理要求を受け付ける受付部として機能する。データ処理の処理要求は、例えば、端末装置500から送信される。また、通信部201は、データ処理の実行結果を送受信する。なお、通信部201は、ネットワークNWを介した装置等と、セキュリティが確保されたセキュアな通信チャンネルでデータを送受信する。セキュアな通信チャンネルの構築、通信方法は、周知の技術であるため、説明を省略する。
【0069】
記憶部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)等である。コンピュータプログラムは、所定のサーバ等からインストールされてもよい。
【0070】
記憶部210は、データ処理に関する設定ファイル211を有する。設定ファイル211は、データ処理の実行の可否を規定しており、例えば、機微データの属性項目ごとに、データ処理の実行権限を有するユーザ等が対応付けて記憶している。また、設定ファイル211は、機微データの属性項目ごとのデータ提供元などを対応付けて記憶している。なお、設定ファイル211は、管理サーバ200の管理者や、データ提供サーバ100の管理者や関連付けられる組織が適宜設定することができる。
【0071】
図7は、設定ファイルのデータ構造の一例を示す図である。
図7において、設定ファイル211は、機微データ(
図2等参照)が含む「属性項目」について、データ処理を行う「権限を有するユーザ」と、その属性項目(カラム)の「データを提供したサーバ」(データ提供サーバ)とを対応付けて記憶している。
【0072】
属性項目についてデータ処理を行う権限とは、データ処理の対象として指定した属性項目の属性値についての統計処理や検索処理、機械学習を実行する権限である。例えば、属性項目「年齢」を対象として、属性値の平均値や最大値、最小値を求めるような統計処理や、所定の年齢以上のレコード数を求めるといった検索処理などのデータ処理を実行する権限のことである。また、例えば、属性項目「性別」を対象として、女性のレコードを抽出し、抽出したレコード数や、所定の属性項目の属性値の平均値等を求めるという統計処理を行う権限であってもよい。また、例えば、属性項目を活用し、「購買フラグ1」が立っているユーザにどの商品をリコメンドすると購買率が向上するかなどを予測する機械学習を行う権限であってもよい。
【0073】
ここで、属性項目「年齢」は、「権限を有するユーザ」が「U1,U2,U3」であり、属性項目「性別」は、「権限を有するユーザ」が「ALL」(すべてのユーザ)である。したがって、機微データに対するデータ処理として、属性項目「性別」が属性値「女性」であるレコードについて、属性項目「年齢」の平均を求める場合は、処理要求をしたユーザが「U1,U2,U3」の場合は処理要求を実行する権限を有する。「U1,U2,U3」以外のユーザは、「年齢」に関するデータ処理を実行する権限を有しないので、属性項目「女性」の属性項目「年齢」の平均を求めるというデータ処理は実行できない。
【0074】
図6に戻って、制御部220は、管理サーバ200の各機能を制御し、予め記憶部210に記憶されているプログラムに基づいて動作するCPU(Central Processing Unit)等のプロセッサである。なお、制御部220として、DSP(digital signal processor)等が用いられてもよい。また、制御部220として、LSI(large scale integration)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programming Gate Array)等の制御回路が用いられてもよい。
【0075】
制御部220は、通信部201が受け付けた機微データを、共通データベース400に格納させる。また、制御部220は、通信部201が受け付けた、機微データに対するデータ処理の処理要求に基づき、演算サーバ300(第1の処理実行部)および/または共通データベース400(第2の処理実行部)にデータ処理の実行を指示する。例えば、データ処理の内容が、機械学習に関する演算の場合は、演算サーバ300にデータ処理の実行を指示する。また、データ処理の内容が機微データの属性項目の少なくとも一部を対象とする検索処理および/または統計処理の場合は、共通データベース400にデータ処理を指示する。
【0076】
また、制御部220は、データ処理の処理要求の内容、および設定ファイル211に基づいて、データ処理の実行の可否を判断するようにしてもよい。上述したように、設定ファイル211は、機微データの属性項目ごとに、データ処理の実行権限を有するユーザと対応付けて記憶しており、制御部220は、データ処理の処理要求を行ったユーザが、データ処理の対象としている属性項目に関してデータ処理を行う権限を有しているか判断する。権限を有していないと判断した場合は、制御部220は、処理要求したユーザに対し、通信部201を介して、権限を有していない等のエラー通知を行うようにしてもよい。権限を有していると判断した場合は、制御部220は、データ処理の内容に応じて、演算サーバ300および/または共通データベース400にデータ処理の実行を指示する。
【0077】
復号要求部230は、データ提供サーバ100に対し、共通データベース400が実行したデータ処理の実行結果の復号処理の処理要求を行う。そして、復号要求部230は、データ提供サーバ100が復号した実行結果を、通信部201を介して取得し、当該取得した実行結果を、データ処理の処理要求の送信元(端末装置500)に提供する。なお、データ処理の処理要求の送信元である端末装置500は、復号した実行結果を暗号化するための公開鍵を、データ処理の処理要求とともに、管理サーバ200に送信しておいてもよい。この場合、復号要求部230は、復号処理の処理要求とともに、端末装置500の公開鍵もデータ提供サーバ100に送信する。データ提供サーバ100は、受信した公開鍵によって、自サーバで復号した実行結果を暗号化し、管理サーバ200に送信する。端末装置500は、管理サーバ200から、端末装置500の公開鍵で暗号化された実行結果を受信し、端末装置500の秘密鍵で復号して実行結果を取得できる。これにより、管理サーバ200に実行結果を開示することなく、データ処理を行うことができる。なお、上記では、実行結果を端末装置500の公開鍵で暗号化する例を述べたが、データ共有システム1などにおいて、予め共有している共通鍵で暗号化してもよい。
【0078】
(演算サーバ300の機能構成)
図8は、演算サーバ300の機能構成の一例を示す機能ブロック図である。
図8を参照して、演算サーバ300の機能構成の一例について説明する。
【0079】
演算サーバ300は、通信部301と、制御部302と、記憶部303と、システム鍵管理部304と、システム復号部305と、処理実行部310と、を備える。
【0080】
通信部301は、演算サーバ300がネットワークNWを介して各サーバや装置等と所定の通信プロトコルに従って通信を行うための通信インタフェース回路を有する。通信部301は、受信したデータを制御部302に送り、また、制御部302から受け取ったデータを、ネットワークNWを介してサーバや装置等に送信する。なお、通信部301は、ネットワークNWを介した装置等と、セキュリティが確保されたセキュアな通信チャンネルでデータを送受信する。セキュアな通信チャンネルの構築、通信方法は、周知の技術であるため、説明を省略する。
【0081】
制御部302は、演算サーバ300の各機能を制御し、予め記憶部303に記憶されているプログラムに基づいて動作するCPU(Central Processing Unit)等のプロセッサである。なお、制御部302として、DSP(Digital Signal Processor)等が用いられてもよい。また、制御部302として、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)等の制御回路が用いられてもよい。制御部302は、データ処理の対象となる機微データを通信部301を介して共通データベース400から取得し、記憶部303に格納する。
【0082】
記憶部303は、RAM(Random Access Memory)、ROM(Read Only Memory)等のメモリ装置、ハードディスク等の固定ディスク装置、又はフレキシブルディスク、光ディスク等の可搬用の記憶装置等を有する。また、記憶部303は、演算サーバ300の各種処理に用いられるコンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、コンピュータ読み取り可能な可搬型記録媒体から公知のセットアッププログラム等を用いて記憶部303にインストールされてもよい。可搬型記録媒体は、例えばCD-ROM(Compact Disc Read Only Memory)、DVD-ROM(Digital Versatile Disc Read Only Memory)等である。コンピュータプログラムは、所定のサーバ等からインストールされてもよい。また、記憶部303は、システム鍵管理部304が生成した鍵や鍵生成のためのパラメータ等を記憶する。
【0083】
システム鍵管理部304は、システム鍵を管理する。システム鍵は、データ共有システム1の管理者のみがアクセス権限を有しており、データ共有システム1の利用者は、アクセス権限を有さない。
【0084】
システム鍵管理部304は、例えば、機微データに適用される暗号方式に応じた鍵を生成し、管理してもよい。暗号方式が公開鍵暗号方式、例えば、準同型暗号方式(Paillier方式)の場合は、システム公開鍵とシステム秘密鍵の鍵対を生成する。また、暗号方式が共通鍵暗号方式、例えば、順序保存暗号方式や、検索可能暗号方式の場合は、システム共通鍵を生成する。このように、システム鍵は、システム公開鍵とシステム秘密鍵の鍵対である場合と、システム共通鍵である場合とがある。なお、鍵生成アルゴリズムは、周知の技術であるので説明を省略する。
【0085】
システム復号部305は、処理実行部310(後述)の秘密計算演算部313の演算結果を、システム鍵に基づいて復号する。システム復号部305は、復号した実行結果を制御部302に送り、制御部302は、復号した実行結果を、通信部301を介して管理サーバ200に送信する。この際、制御部302は、データ処理の処理要求元である端末装置500の公開鍵を取得し、実行結果を公開鍵で暗号化して、管理サーバ200に送信してもよい。または、制御部302は、管理サーバ200からの要求に応じて、復号した実行結果を、データ処理の処理要求元である端末装置500に送信してもよい。
【0086】
処理実行部310は、暗号化された機微データを、所定の暗号方式に再暗号化してデータ処理を実行する第1の処理実行部に相当し、統合データ生成部311と、再暗号化部312と、秘密計算演算部313と、を有する。
【0087】
統合データ生成部311は、共通データベース400から取得した機微データを、機微データに属性項目として含まれる識別子(
図4の例では共通ID)に基づいて統合して統合データを生成する。そして、統合データ生成部311は、生成した統合データを記憶部303に記憶させる。なお、統合データ生成部311は、データ処理の内容に応じて、どのテーブル(機微データ)を統合するかを判断する。すなわち、データ処理の内容によっては、機微データを統合しない場合もある。例えば、データ処理の対象とする属性項目が、1つのデータ提供サーバ100から提供された機微データに含まれており、複数の機微データに含まれていない場合は、統合する必要はない。
【0088】
例えば、
図4の例を再暗号化された機微データとして、具体的に説明する。データ処理の内容が、属性項目「年齢」,「性別」および「購買フラグ1」の相関関係を学習することであった場合、属性項目「年齢」,「性別」および「購買フラグ1」は、データ提供サーバ100-1が提供したテーブルT1eにすべて含まれているため、テーブルは統合されず、データ処理の対象は、テーブルT1eのみとなる。一方、データ処理の内容が、属性項目「収入」,「購買フラグ2」,「購買フラグ4」の相関関係を学習することであった場合は、各属性項目が、テーブルT1e,T2e,T3eに含まれるため、統合データ生成部311は、それらのテーブルを統合する。
【0089】
なお、データの統合は、上述のように、再暗号化後に行ってもよいし、再暗号化前に行ってもよい。また、統合データ生成部311は、共通データベース400に対し、データ処理の内容に基づき、処理対象となるテーブルを統合するよう要求してもよい。この場合、共通データベース400が統合データを生成し、演算サーバ300に送信する。
【0090】
再暗号化部312は、上記のように統合された機微データを、再暗号化鍵(
図9において詳述)を用いて所定の暗号方式における機微データに再暗号化する。再暗号化には、演算サーバ300が管理するシステム鍵に基づいて生成される再暗号化鍵を用いるため、異なる暗号鍵で暗号化された各属性項目の属性値は、所定の暗号方式ごとに、同一の暗号化空間で再暗号化されることとなる。より詳細には、再暗号化部312は、機微データの暗号方式に応じた暗号方式により再暗号化鍵で暗号化する。例えば、データ提供サーバ100において準同型暗号方式で暗号化された機微データについては、同じ準同型暗号方式により当該データ提供サーバ100に対応する再暗号化鍵を用いて再暗号化を行う。また、AESで暗号化された機微データについては、同じAESにより再暗号化鍵を用いて再暗号化を行う。なお、機微データの暗号方式に応じて、再暗号化の前後で同じ暗号方式に変換するのではなく、異なる暗号方式に変換するようにしてもよい。再暗号化部312は、再暗号化された統合データを記憶部303に記憶(登録)させる。
【0091】
なお、再暗号化する対象は、統合された機微データ(統合データ)に限られず、統合されていない機微データであっても、異なる暗号鍵を用いて同一の暗号方式で暗号化されている属性値を含む機微データなども含む。例えば、
図4の例において、テーブルT1は会社Bが保有する機微データであるが、属性項目「年齢」と「収入」の属性値(数値)が同一の暗号方式(準同型暗号)で暗号化されていても、データの重要度等に応じて異なるユーザ鍵で暗号化される場合がある。このような場合は、同一の暗号化空間で再暗号化される必要がある。
【0092】
秘密計算演算部313は、記憶部303に記憶された機微データに基づいて秘密計算を実行する。そして、秘密計算演算部313は、実行結果を記憶部303に記憶させる。ここで、秘密計算演算部313が実行する秘密計算とは、データマイニングや機械学習によるモデル学習および推論であって、統計的手法もしくは深層学習等の解析アルゴリズムが用いられてもよい。秘密計算演算部313は、1つのデータ提供サーバ100により提供された機微データについて秘密計算を実行してもよいし、統合データ生成部311が生成した統合データについて秘密計算を実行してもよい。統合された機微データは、上述のように、属性項目ごとに、準同型暗号方式、順序保存暗号方式や、検索可能暗号方式、暗号文上で完全一致が可能なAES暗号等により、所定の暗号方式の機微データに再暗号化されているので、例えば、属性項目に対して、加減乗除に関する計算、検索、分析に関する演算を暗号化状態のまま実行することができる。
【0093】
図9は、再暗号化鍵を説明する図である。
図9では、公開鍵暗号方式をベースとした方式を説明する。
【0094】
上述したように、データ提供サーバ100の暗号化部105は、ユーザ公開鍵を用いて機微データを暗号化する。これに対し、演算サーバ300の再暗号化部312は、機微データを再暗号化するに際し、ユーザ秘密鍵およびシステム公開鍵に基づいて生成された再暗号化鍵を用いる。再暗号化鍵は、演算サーバ300が、当該機微データを提供したデータ提供サーバ100のユーザ鍵管理部104から取得したユーザ秘密鍵と、演算サーバ300のシステム鍵管理部304が管理するシステム公開鍵と、に基づいて、再暗号化鍵を生成してもよいが、データ提供サーバ100にシステム公開鍵を取得させ、取得したシステム公開鍵と、当該データ提供サーバ100のユーザ秘密鍵とに基づいて、データ提供サーバ100が再暗号化鍵を生成することが好ましい。この場合、データ提供サーバ100の外部にユーザ秘密鍵を提供しないので、より安全性を担保することができる。
【0095】
再暗号化鍵は、例えば、ユーザ秘密鍵とシステム公開鍵に基づいて、鍵生成アルゴリズムにより生成されてもよいし、ユーザ秘密鍵をシステム公開鍵で暗号化して生成するようにしてもよい。
【0096】
なお、
図9では公開鍵暗号方式の場合について説明したが、共通鍵暗号方式の場合は、ユーザ共通鍵、システム共通鍵を用い、再暗号化鍵を生成することができる。
【0097】
(共通データベース400の機能構成)
図10は、共通データベース400の機能構成の一例を示す機能ブロック図である。
図10を参照して、共通データベース400の機能構成の一例について説明する。
【0098】
共通データベース400は、通信部401と、記憶部402と、処理実行部410と、を備える。
【0099】
通信部401は、共通データベース400がネットワークNWを介して各サーバや装置等と所定の通信プロトコルに従って通信を行うための通信インタフェース回路を有する。通信部401は、ネットワークNWを介した装置等と、セキュリティが確保されたセキュアな通信チャンネルでデータを送受信する。セキュアな通信チャンネルの構築、通信方法は、周知の技術であるため、説明を省略する。
【0100】
記憶部402は、通信部401が管理サーバ200から受信した、暗号化された機微データを記憶する。また、記憶部402は、RAM(Random Access Memory)、ROM(Read Only Memory)等のメモリ装置、ハードディスク等の固定ディスク装置、又はフレキシブルディスク、光ディスク等の可搬用の記憶装置等を有し、共通データベース400の各種処理に用いられるコンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、コンピュータ読み取り可能な可搬型記録媒体から公知のセットアッププログラム等を用いて記憶部402にインストールされてもよい。可搬型記録媒体は、例えばCD-ROM(compact disc read only memory)、DVD-ROM(digital versatile disc read only memory)等である。コンピュータプログラムは、所定のサーバ等からインストールされてもよい。
【0101】
処理実行部410は、暗号化された機微データを、再暗号化を行うことなく、データ処理を実行する第2の処理実行部に相当し、統合データ生成部411と、データ処理部412と、復号要求部413と、を有する。処理実行部410は、管理サーバ200からのデータ処理の実行指示に応じて、データ処理を実行する。なお、処理実行部410の機能は、管理サーバ200が備えるように構成してもよい。
【0102】
統合データ生成部411は、記憶部402に格納された、暗号化された機微データを、機微データに属性項目として含まれる識別子(
図4の例では共通ID)に基づいて統合して統合データを生成する。演算サーバ300の統合データ生成部311における説明で述べたように、機微データを統合するか否かは、データ処理の内容に応じて判断される。統合方法の詳細は、上述した通りであるので、説明は省略する。また、統合データ生成部411は、演算サーバ300からの要求に応じて、統合データを生成し、演算サーバ300に送信してもよい。
【0103】
データ処理部412は、機微データに対するデータ処理の内容に基づき、データ処理を実行する。そして、データ処理部412は、実行結果を復号要求部413へ送る。ここで、データ処理の内容とは、機微データの属性項目の少なくとも一部を対象とする検索処理および/または統計処理である。本実施形態では、検索処理は、所定の条件を満たすテーブルの行(レコード)を抽出する処理のことをいう。また、統計処理は、例えば、集計用の関数により行う処理であって、代表的には、テーブルの行(レコード)数を数える処理(COUNT関数)、テーブルの数値列のデータを合計する処理(SUM関数)、テーブルの数値列のデータを平均する処理(AVG関数)、テーブルの任意列のデータの最大値を求める処理(MAX関数)、テーブルの任意列のデータの最小値を求める処理(MIN関数)などであるが、これらに限られない。対象セグメントごとにまとめる「GROUP BY」、順序を昇順・降順に並び替える「ORDER BY」のようなSQL構文であってもよい。
【0104】
データ処理の処理要求は、例えば、SQL文によって記述されたクエリであってもよい。より具体的には、
図3で示した機微データであるテーブルT1を対象としたSQL文として、例えば、「select avg(年齢) from ‘テーブルT1’ where ‘性別’=女;」で示されるSQL文をデータ処理の処理要求として、管理サーバ200から通信部401が受け付ける。データ処理部412は、SQL文に基づき、記憶部402にアクセスし、テーブルT1について、属性項目「性別」の属性値が「女」であるレコードを抽出し、抽出したレコードについて、属性項目「年齢」の属性値の平均値を計算する処理を実行するが、テーブルT1のデータは、上述のように暗号化されているため、以下のような処理を行う。
【0105】
例えば、実行部223は、where句の条件一致判定のため、管理サーバ200を介して、where句の条件文である属性項目「性別」を暗号化したデータ提供サーバ100に、クエリを暗号化するように要求する。管理サーバ200は、設定ファイル211を参照し、属性項目「性別」を暗号化したデータ提供サーバ100(
図3の例では、データ提供サーバ100-1)にクエリの暗号化を要求する。その際、属性項目「性別」の暗号方式と同じ暗号方式で暗号化するよう要求し、暗号化されたwhere句の条件文を取得する。例えば、データ提供サーバ100-1は、実行部223の要求に応じて、上述のクエリ「select avg(年齢) from ‘テーブルT1e’ where ‘性別’=女;」に対し、属性項目「女」を暗号化する際に用いた暗号鍵で「女」を暗号化する。そして、暗号化されたwhere句を含む「select avg(年齢) from ‘テーブルT1e’ where ‘性別’=adt3h54…;」を、管理サーバ200を介して、共通データベース400のデータ処理部412に返す。
【0106】
属性項目「年齢」の属性値は、暗号化状態のまま加減算が可能な(加法的な)準同型暗号方式で暗号化されているため、データ処理部412は、抽出されたレコードについて、周知の方法により平均値を算出する。以上のように、データ処理部412は、SQL文を実行することができる。そして、実行結果(上記の例では、「性別」の属性値が「女」である個人の「年齢」の属性値の平均を示す暗号文)を出力する。なお、上記では、統合していない機微データについて例示したが、統合データについても同様にデータ処理の対象とすることは、言うまでもない。また、上記では、説明のため、クエリではカラム名を暗号化していない例を用いたが、カラム名を暗号化したクエリでも同様に処理することができる。
【0107】
復号要求部413は、管理サーバ200に対し、データ処理部412が実行したデータ処理の実行結果の復号処理を、データ提供サーバ100に行うよう要求する。管理サーバ200の復号要求部230は、当該要求に応じて、データ処理の対象である属性項目を含む機微データを提供したデータ提供サーバ100に対し、当該データ提供サーバ100が管理する復号鍵によって実行結果を復号するよう要求する。すなわち、データ処理の対象である属性項目の属性値について、統計処理のため暗号化状態のまま演算を行った実行結果は、当該属性項目を含む機微データを提供したデータ提供サーバ100が管理する暗号鍵(ユーザ鍵)で暗号化されている。このため、復号処理は、暗号鍵に対応する復号鍵を管理するデータ提供サーバ100によって行われる必要がある。そこで、管理サーバ200の復号要求部230は、設定ファイル211を参照して、データ処理の対象である属性項目を提供したデータ提供サーバ100の情報を取得し、当該データ提供サーバ100に対し、復号処理を行うよう処理要求する。
【0108】
(端末装置500の機能構成)
図11は、端末装置500の機能構成の一例を示す機能ブロック図である。
図11を参照して、端末装置500の機能構成の一例について説明する。
【0109】
端末装置500は、通信部501と、記憶部502と、入力部503と、出力部504と、制御部505と、を備える。端末装置500は、上述したように、例えば、データ共有システム1に参加する組織に所属するユーザが操作する情報処理装置であってもよい。
【0110】
通信部501は、データ提供サーバ100の通信部101と同様の機能を有し、端末装置500がネットワークNWを介してサーバや装置等と所定の通信プロトコルに従って通信を行うための通信インタフェース回路を有する。通信部501は、受信したデータを制御部505に送り、また、制御部505から受け取ったデータを、ネットワークNWを介してサーバや装置等に送信する。
【0111】
記憶部502は、データ提供サーバ100の記憶部103と同様の機能を有する記憶装置であって、端末装置500の各種処理に用いられるコンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、コンピュータ読み取り可能な可搬型記録媒体から公知のセットアッププログラム等を用いて記憶部502にインストールされてもよい。また、記憶部502は、端末装置500からデータ処理の実行結果を暗号化するための暗号鍵(公開鍵)と、当該暗号鍵で暗号化された実行結果を復号するための復号鍵(秘密鍵)とを記憶してもよい。
【0112】
入力部503は、端末装置500のユーザ入力を受け付けるインタフェースである。入力部503は、例えば、キーボードや、タッチパネル、音声入力を検出するマイクであるが、これらに限られない。ユーザは、入力部503を介して、データ処理の処理要求を入力する。処理要求は、例えば、SQLによって記載される。
【0113】
出力部504は、情報を出力してユーザに通知するインタフェースである。出力部504は、例えば、ディスプレイや、音声出力するスピーカであるが、これらに限られない。出力部504は、データ処理の実行結果をディスプレイに表示する等してユーザに提供する。
【0114】
制御部505は、端末装置500の各機能を制御し、予め記憶部502に記憶されているプログラムに基づいて動作するCPU(Central Processing Unit)等のプロセッサである。制御部505は、入力部503により入力されたデータ処理の処理要求を、通信部501を介して管理サーバ200に送信する。この際、制御部505は、処理要求を、記憶部502に記憶された公開鍵とともに、管理サーバ200に送信してもよい。また、制御部505は、通信部501を介して、データ処理の実行結果を取得する。データ処理の実行結果が端末装置500の公開鍵により暗号化されている場合は、公開鍵と対になる秘密鍵により復号し、実行結果を取得する。なお、実行結果は、データ共有システム1において予め、または適宜構築されたセキュアな通信のための共通鍵により暗号化されるようにしてもよい。
【0115】
図12は、データ処理の一例を示すフローチャートである。
図12を参照して、データ共有システム1におけるデータ処理の流れの一例を説明する。なお、データ処理の流れは一例であり、
図12に示す順序に限られない。
【0116】
ステップS101において、管理サーバ200の通信部201は、端末装置500からデータ処理の処理要求を受け付ける。なお、データ処理の処理要求は、例えば、SQLによって記載されていてもよい。また、処理要求は、復号された実行結果を暗号化するために、端末装置500において管理される暗号鍵(公開鍵)を含んでもよい。また、処理要求は、処理要求した端末装置500のユーザ情報など、送信元を識別するための情報を含んでもよい。通信部201は、受け付けたデータ処理の処理要求を制御部220に送る。
【0117】
ステップS102において、管理サーバ200の制御部220は、通信部201が受け付けた、機微データに対するデータ処理の内容を判断する。データ処理の内容が機械学習に関する演算であると、制御部220が判断した場合(ステップS102において、「機械」)、処理はステップS103に進む。なお、制御部220は、例えば、
図7に示した設定ファイル211を参照して、データ処理の処理要求を送信したユーザが実行権限を有するか否かを判断して、実行権限を有しないユーザからの処理要求は、エラー等を通知するようにしてもよい。
【0118】
ステップS103において、制御部220は、演算サーバ300にデータ処理の実行を指示する。
【0119】
ステップS104において、演算サーバ300は、管理サーバ200からの指示に応じて、データ処理を実行する。データ処理の詳細は、上述した通りであるから、説明は省略するが、演算サーバ300の秘密計算演算部313が実行した実行結果は、システム復号部305においてシステム秘密鍵で復号される。そして、演算サーバ300は、通信部301を介して、実行結果を管理サーバ200に送信し、処理はステップS108に進む。
【0120】
一方、ステップS102において、データ処理の内容が検索処理や統計処理であると、制御部220が判断した場合(ステップS102において、「検索」)、処理はステップS105に進む。
【0121】
ステップS105において、制御部220は、共通データベース400にデータ処理の実行を指示する。
【0122】
ステップS106において、共通データベース400は、管理サーバ200からの指示に応じて、データ処理を実行する。データ処理の詳細は、上述したとおりであるので、説明は省略するが、機微データは暗号化状態のまま演算可能な暗号方式で暗号化されているため、共通データベース400のデータ処理部412は、データ処理の処理要求に応じて、機微データを暗号化状態のまま演算することができ、実行結果も暗号化状態のままである。共通データベース400の復号要求部413は、実行結果を管理サーバ200に送る。
【0123】
ステップS107において、管理サーバ200の復号要求部230は、実行結果の復号処理の処理要求を行う。復号要求部230は、例えば、設定ファイル211を参照して、データ処理(検索処理等)の対象として指定された属性項目を提供したデータ提供サーバ100に対し、通信部201を介して、復号処理の処理要求を行う。データ提供サーバ100は、復号処理の処理要求に応じて、復号鍵に基づいて、実行結果の復号処理を行う。
【0124】
ステップS108において、管理サーバ200の復号要求部230は、通信部201を介して、復号された実行結果を取得する。また、管理サーバ200の通信部201は、演算サーバ300から、復号された実行結果を取得する。
【0125】
ステップS109において、管理サーバ200の通信部201は、ステップS108で取得した、復号された実行結果を、データの処理要求を送信した端末装置500に提供する。復号された実行結果は、データの処理要求時に端末装置500から送信された公開鍵で暗号化されてもよいし、セッション鍵で暗号化されてもよい。端末装置500は、取得した実行結果が端末装置500の公開鍵で暗号化されていれば、秘密鍵を用いて復号する。これにより、データを提供したデータ提供サーバ100およびデータ処理の処理要求をした端末装置500以外には、実行結果を開示しないようにすることができ、情報漏洩を防ぐことができる。以上のようにして、データ共有システム1ではデータ処理を行う。
【0126】
(ハードウェア構成図)
図13は、データ提供サーバ100のハードウェア構成を示すブロック図である。データ提供サーバ200は、コンピュータ1001に実装される。コンピュータ1001は、CPU1002と、主記憶装置1003と、補助記憶装置1004と、インタフェース1005と、を備える。
【0127】
データ提供サーバ100の各構成要素の動作は、プログラムの形式で補助記憶装置1004に記憶されている。CPU1002は、プログラムを補助記憶装置1004から読み出して主記憶装置1003に展開し、当該プログラムに従って上記処理を実行する。また、CPU1002は、プログラムに従って、記憶領域を主記憶装置1003に確保する。当該プログラムは、具体的には、コンピュータ1001に、データ処理を行わせるプログラムである。
【0128】
なお、補助記憶装置1004は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、インタフェース1005を介して接続される磁気ディスク、光磁気ディスク、CD-ROM、DVD-ROM、半導体メモリ等が挙げられる。また、このプログラムがネットワークを介してコンピュータ1001に配信される場合、配信を受けたコンピュータ1001が当該プログラムを主記憶装置1003に展開し、処理を実行してもよい。
【0129】
また、当該プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、当該プログラムは、前述した機能を補助記憶装置1004に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル(差分プログラム)であってもよい。なお、
図13に示したハードウェア構成は、管理サーバ200、演算サーバ300、共通データベース400および端末装置500も同様の構成としてもよい。これらの装置における各構成要素の動作も、上述のデータ提供サーバ100と同様に、補助記憶装置に記憶されたプログラムに従ったCPUにより実現する。
【0130】
(効果の説明)
上述したように、本実施形態に係るデータ共有システムは、複数のデータ提供サーバと、共通データベースと、管理サーバと、演算サーバと、を備える。共通データベースは、各データ提供サーバで暗号化された機微データを記憶する。管理サーバは、共通データベースに格納された機微データに対するデータ処理の処理要求を受け付ける。そして、データ処理の内容に基づいて、暗号化された機微データを、所定の暗号方式に再暗号化してデータ処理を実行する演算サーバ(第1の処理実行部)および/または、再暗号化を行うことなく、データ処理を実行する共通データベース(第2の処理実行部)にデータ処理の実行を指示する。このように、データ処理の内容に基づいて、セキュアで効率的な演算処理を行う装置にデータ処理の実行を指示するので、各組織が保有するデータを、データの詳細を他組織に開示することなく、効率的に活用することができる。
【0131】
また、本実施形態に係るデータ共有システムおいては、機微データは属性項目ごとに属性値を含み、少なくとも一部の属性値が暗号化された機微データに対し、データ処理として、機械学習に関する演算、および/または検索処理等が実行する。条件一致等の単純な演算処理(検索処理等)だけでなく、高度な数値計算も必要とする演算処理(機械学習)もセキュアに実行することができるため、機微データの活用範囲を広げ、精度の高い予測に資するデータ処理を行うことができる。
【0132】
また、本実施形態においては、管理サーバが、データ処理の対象である属性項目を含む機微データを提供したデータ提供サーバに対し、データ提供サーバが管理する復号鍵によって、共通データベースがデータ処理(検索処理および/または統計処理)した実行結果を復号するよう要求する。これにより、共通データベースでの実行結果の復号を、データ提供サーバ側(データを提供したユーザ)が管理することができ、情報漏洩を防止することができる。
【0133】
また、本実施形態においては、再暗号化鍵に基づいて所定の暗号化空間に変換された機微データに対するデータ処理(機械学習)の実行結果を、演算サーバが、データ共有システムの管理者のみがアクセス権限を有するシステム鍵により復号する。したがって、各データ提供サーバが保有する機微データの内容を他組織(データ共有システムの参加者)に開示することなく、データ処理を行うことができる。
【0134】
また、本実施形態においては、データ処理の内容に応じて、複数の暗号化された機微データを統合して統合データを生成し、データ処理を実行する。これにより、データ共有システムに参加する組織は、他組織が保有する属性項目の属性値を利用して機械学習や検索処理等を行うことができる。これにより、自組織が疎なデータしか有さない場合であっても、データ共有システムに参加する他組織のデータを活用することができる。
【0135】
<実施形態2>
実施形態2では、実施形態1と再暗号化の方法が異なる。すなわち、実施形態1では、演算サーバ300は、各データ提供サーバ100において暗号化された機微データを復号することなく、再暗号化鍵により同一の暗号方式(暗号空間)に再暗号化した。それに対し、実施形態2では、演算サーバ1300が、標準実行環境から保護される仮想実行環境を構築し、当該仮想実行環境において、各データ提供サーバ100において暗号化された機微データを復号後、同一の暗号方式に再暗号化する点が異なる。標準実行環境から保護される仮想実行環境は、認証されないユーザからのアクセスを防ぐことができるため、暗号化された機微データを復号後、所定の暗号方式への再暗号化を、セキュアに実行することができる。また、一時的に構築した仮想実行環境において再暗号化することで、セキュリティレベルを高めることができる。
【0136】
実施形態2に係るデータ共有システム2は、実施形態1に係るデータ共有システム1の演算サーバ300に代えて、演算サーバ1300を備える点で異なり、それ以外は同様の構成である。したがって、実施形態1と重複する構成は、説明を省略する。
【0137】
(演算サーバ1300の機能構成)
図14は、演算サーバ1300の機能構成の一例を示す機能ブロック図である。
図14を参照して、演算サーバ1300の機能構成の一例について説明する。
【0138】
演算サーバ1300は、通信部301と、制御部1302と、記憶部303と、システム鍵管理部304と、システム復号部305と、処理実行部1310と、を備える。
【0139】
通信部301と、記憶部303と、システム鍵管理部304と、システム復号部305とは、実施形態1に係る演算サーバ300と機能が同じであるから、説明を省略する。
【0140】
制御部1302は、仮想実行環境構築部1311と、仮想実行環境廃棄部1312と、を有し、共通データベース400から取得した機微データを所定の暗号方式に再暗号化(変換)するための仮想実行環境を構築するよう制御する。
【0141】
仮想実行環境構築部1311は、仮想実行環境を構築する。例えば、管理サーバ200からのデータ処理の指示に応じて、仮想実行環境を構築するようにしてもよい。仮想実行環境には、例えば、OS(不図示)が搭載され、当該OSは、再暗号化部1321を備える。
【0142】
仮想実行環境廃棄部1312は、上述の仮想実行環境を廃棄する(消滅させる)。仮想実行環境廃棄部1312は、例えば、仮想実行環境を表す所定のデータを削除することで、仮想実行環境を廃棄する。仮想実行環境の廃棄は、例えば、機微データを所定の暗号方式に再暗号化した後に実行されてもよいし、認証したユーザからの指示に基づいて実行されてもよい。また、一定時間経過後に仮想実行環境を消滅させるようにしてもよい。
【0143】
処理実行部1310は、再暗号化部1321と、統合データ生成部311と、秘密計算演算部313とを有する。統合データ生成部311と、秘密計算演算部313とは、実施形態1に係る演算サーバ300と機能が同じであるから、説明を省略する。
【0144】
再暗号化部1321は、取得部1331と、復号部1332と、暗号化部1333と、提供部1334と、を含む。
【0145】
取得部1331は、記憶部303から暗号化された機微データを取得する。また、取得部1331は、当該機微データを提供したデータ提供サーバ100のユーザ鍵管理部104からユーザ鍵(秘密鍵)、システム鍵管理部304からシステム鍵(公開鍵)を取得する。なお、データ提供サーバ100からユーザ鍵を取得するためには、信頼できる環境であることが必要である。
【0146】
復号部1332は、暗号化された機微データを、当該機微データを暗号化したデータ提供サーバ100に対応するユーザ鍵によって復号する。
【0147】
暗号化部1333は、復号された機微データをシステム鍵で暗号化する。暗号化部1333は、暗号化された機微データの暗号方式に応じた暗号化を行う。例えば、データ提供サーバ100において準同型暗号方式で暗号化された機微データについては、同じ準同型暗号方式によりシステム鍵管理部304から取得したシステム鍵を用いて再暗号化を行う。また、AESで暗号化された機微データについては、同じAESによりシステム鍵を用いて再暗号化を行う。
【0148】
また、暗号化部1333は、暗号化された機微データの処理目的に応じた暗号方式により暗号化してもよい。例えば、機微データについて高度なアルゴリズム計算処理を行う場合は、暗号化部1333は、保管や簡易計算・検索等を目的とするのに適した暗号方式で暗号化された機微データについて、高度なアルゴリズム計算処理を目的とするのに適した暗号方式により再暗号化鍵を用いて再暗号化を行うようにしてもよい。より具体的には、順序保存暗号方式により暗号化された機微データについては、準同型暗号方式により再暗号化するようにしてもよい。また、準同型暗号方式により暗号化された機微データについては、完全準同型暗号方式により再暗号化するようにしてもよい。なお、暗号化部1333は、機微データのデータ形式(文字列や数字)等に応じた暗号方式で再暗号化してもよい。
【0149】
提供部1334は、暗号化部1333により所定の暗号方式に再暗号化された機微データを、標準実行環境等に提供する。例えば、再暗号化された機微データは、記憶部303に格納される。
【0150】
また、復号部1332が暗号化された機微データを復号する際に用いたユーザ鍵は、仮想実行環境廃棄部1312が仮想実行環境を廃棄する際に廃棄するようにしてもよい。
【0151】
秘密計算演算部313は、上述のように再暗号化され、記憶部303に格納された機微データについてデータ処理を実行することとなる。
【0152】
(効果の説明)
上述したように、本実施形態に係るデータ共有システムは、標準実行環境から保護された仮想実行環境を構築し、機微データの再暗号化を当該仮想実行環境において実行する。標準実行環境から保護された仮想実行環境において、機微データを復号するため、認証されないユーザからのアクセスを防ぐことができ、セキュリティが確保される。また、機微データを一旦復号するため、データ処理(機械学習やデータ前処理、データ分析等)の内容に応じた最適な暗号方式を適用して再暗号化することが容易であり、データ処理を効率よく実行することができる。
【0153】
上記実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【符号の説明】
【0154】
1 データ共有システム、100 データ提供サーバ、101 通信部、102 制御部、103 記憶部、104 ユーザ鍵管理部、105 暗号化部、106 ユーザ復号部、200 管理サーバ、201 通信部、210 記憶部、211 設定ファイル、220 制御部、221 全体制御部、223 実行部、230 復号要求部、300 演算サーバ、301 通信部、302 制御部、303 記憶部、304 システム鍵管理部、305 システム復号部、310 処理実行部、311 統合データ生成部、312 再暗号化部、313 秘密計算演算部、400 共通データベース、401 通信部、402 記憶部、410 処理実行部、411 統合データ生成部、412 データ処理部、413 復号要求部、500 端末装置、501 通信部、502 記憶部、503 入力部、504 出力部、505 制御部、1001 コンピュータ、1003 主記憶装置、1004 補助記憶装置、1005 インタフェース、1300 演算サーバ、1302 制御部、1310 処理実行部、1311 仮想実行環境構築部、1312 仮想実行環境廃棄部、1321 再暗号化部、1331 取得部、1332 復号部、1333 暗号化部、1334 提供部。
【要約】
【課題】各組織が保有するデータを、データの詳細を他組織に開示することなく、活用することができるデータ共有システムを提供すること。
【解決手段】本開示に係るデータ共有システムは、機微データを取得する機微データ取得部と、機微データを暗号化する暗号化部と、暗号化された機微データを記憶する記憶部と、機微データに対するデータ処理の処理要求を受け付ける受付部と、暗号化された機微データを、所定の暗号方式に再暗号化してデータ処理を実行する第1の処理実行部と、再暗号化を行うことなく、データ処理を実行する第2の処理実行部と、受け付けたデータ処理の内容に基づいて、第1の処理実行部および/または第2の処理実行部にデータ処理の実行を指示する制御部と、を備える。
【選択図】
図1