(57)【要約】      （修正有）【課題】データの効率的な利活用を可能としつつ、データがデータ提供者の意図しない用途に使われることを防止可能なデータ処理装置を提供する。【解決手段】データ処理装置５は、データ記憶部３０が記憶しているデータのうちの処理対象のデータを提供したデータ提供者側から、プログラム記憶部３１が記憶しているプログラムのうちの、処理対象のデータを処理用のプログラムを指定するＤＫＰ（Ｄａｔａ  Ｋｅｙ  Ｐａｃｋａｇｅ）を受信するファイル受信部３５と、処理対象のデータを、受信したＤＫＰで指定するプログラムで処理するデータ処理部３６と、を備える。【選択図】図２
2019047334.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを記憶しているデータ記憶部と、
複数のプログラムを記憶しているプログラム記憶部と、
前記データ記憶部が記憶しているデータのうちの処理対象のデータを提供したデータ提供者側から、前記プログラム記憶部が記憶しているプログラムのうちの、前記処理対象のデータの処理用のプログラムを指定する第１のファイルを受信するファイル受信部と、
前記処理対象のデータを、前記ファイル受信部で受信した前記第１のファイルが指定するプログラムで処理するデータ処理部と、を備えることを特徴とするデータ処理装置。
【請求項２】
前記第１のファイルは、前記処理対象のデータを指定するデータＩＤと、前記処理対象のデータを処理用のプログラムを指定するプログラムＩＤとを含み、
前記データ処理部は、前記データ記憶部が記憶しているデータのうちの、前記第１のファイルが含むデータＩＤが指定するデータを、前記プログラム記憶部が記憶しているプログラムのうちの、前記第１のファイルが含むプログラムＩＤが指定するプログラムで処理することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記複数のデータそれぞれは、データ暗号化鍵で暗号化されており、
前記第１のファイルは、暗号化されたデータを復号可能なデータ復号鍵を含み、
前記データ処理部は、前記ファイル受信部で受信した前記第１のファイルが含むデータＩＤが指定するデータを、前記第１のファイルが含む前記データ復号鍵で復号するデータ復号部を備えたことを特徴とする請求項１または２に記載のデータ処理装置。
【請求項４】
前記データ暗号化鍵及び前記データ復号鍵は、データ提供者の共通鍵であることを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
前記データ復号鍵は、前記データ処理装置の公開鍵で暗号化されており、
前記データ処理部は、前記データ復号鍵を前記公開鍵に対応する秘密鍵で復号するデータ復号鍵復号部を備えたことを特徴とする請求項３または４に記載のデータ処理装置。
【請求項６】
前記ファイル受信部は、処理用のプログラムを指定するプログラムＩＤと、前記プログラムで処理するデータを指定するデータＩＤとを含む第２のファイルをプログラム提供者側から受信し、
前記データ処理部は、
前記第１のファイルが含むデータＩＤと、前記第２のファイルが含むデータＩＤとが互いに同一であり、且つ前記第１のファイルが含むプログラムＩＤと前記第２のファイルが含むプログラムＩＤとが互いに同一であるかを判定する対応検証部と、
前記対応検証部でデータＩＤが互いに同一であり、且つプログラムＩＤが互いに同一であると判定した場合には、前記互いに同一であると判定したデータＩＤが指定するデータを前記互いに同一であると判定したプログラムＩＤが指定するプログラムで処理する処理実行部と、を備えたことを特徴とする請求項２から５のいずれか１項に記載のデータ処理装置。
【請求項７】
前記複数のプログラムそれぞれは、プログラム暗号化鍵で暗号化されており、
前記第２のファイルは、暗号化されたプログラムを復号可能なプログラム復号鍵を含み、
前記データ処理部は、前記第２のファイルが含むプログラムＩＤが指定するプログラムを、前記第２のファイルが含むプログラム復号鍵で復号するプログラム復号部を備えたことを特徴とする請求項６に記載のデータ処理装置。
【請求項８】
前記プログラム暗号化鍵及び前記プログラム復号鍵は、プログラム提供者の共通鍵であることを特徴とする請求項７に記載のデータ処理装置。
【請求項９】
前記プログラム復号鍵は、前記データ処理装置の公開鍵で暗号化されており、
前記データ処理部は、前記プログラム復号鍵を前記公開鍵に対応する秘密鍵で復号するプログラム復号鍵復号部を備えたことを特徴とする請求項７または８に記載のデータ処理装置。
【請求項１０】
前記データ記憶部は、前記複数のデータそれぞれを暗号化して記憶しており、
前記第１のファイルは、暗号化されたデータを復号可能なデータ復号鍵を含み、
前記データ処理部は、前記データ記憶部が記憶しているデータのうち、前記ファイル受信部で受信した前記第１のファイルが含むデータＩＤが指定するデータを、前記第１のファイルが含む前記データ復号鍵で復号するデータ復号部を備え、
前記データ復号部で復号した前記データ及び前記プログラム復号部で復号した前記プログラムを記憶する復号データ記憶部と、
前記データ処理部でデータの処理を終えた後に、前記復号データ記憶部から復号した前記データ及び前記プログラムを消去する復号データ消去部と、を更に備えたことを特徴とする請求項７から９のいずれか１項に記載のデータ処理装置。
【請求項１１】
複数のデータを記憶しているデータ記憶部と、
複数のプログラムを記憶しているプログラム記憶部と、
前記プログラム記憶部が記憶しているプログラムのうちの処理用のプログラムを提供したプログラム提供者側から、前記データ記憶部が記憶しているデータのうちの、前記処理用のプログラムで処理するデータを指定する第２のファイルを受信するファイル受信部と、
前記処理用のプログラムで、前記ファイル受信部で受信した前記第２のファイルが指定するデータを処理するデータ処理部と、を備えることを特徴とするデータ処理装置。
【請求項１２】
前記プログラムは、データの潜在的価値を顕在化するプログラム、又はデータの価値を限定するプログラムであることを特徴とする請求項１から１１のいずれか１項に記載のデータ処理装置。
【請求項１３】
前記データ処理部で行われた処理の処理結果である処理済みデータを、共通鍵で暗号化し、その共通鍵を、前記処理済みデータの提供を要求する利用者端末の公開鍵で暗号化する処理済みデータ暗号化部を更に備えたことを特徴とする請求項１から１２のいずれか１項に記載のデータ処理装置。
【請求項１４】
複数のデータを記憶しているデータ記憶部が記憶するデータのうちの処理対象のデータを提供したデータ提供者側から、複数のプログラムを記憶しているプログラム記憶部が記憶するプログラムのうちの、前記処理対象のデータの処理用のプログラムを指定する第１のファイルをプロセッサが受信するステップと、
前記プロセッサのデータ処理部が、前記処理対象のデータを、受信した前記第１のファイルが指定するプログラムで処理するステップとを含むことを特徴とするデータ処理方法。
【請求項１５】
複数のプログラムを記憶しているプログラム記憶部が記憶するプログラムのうちの処理用のプログラムを提供したプログラム提供者側から、複数のデータを記憶しているデータ記憶部が記憶するデータのうちの、前記処理用のプログラムで処理するデータを指定する第２のファイルをプロセッサが受信するステップと、
前記プロセッサのデータ処理部が、前記処理用のプログラムで、受信した前記第２のファイルが指定するデータを処理するステップとを含むことを特徴とするデータ処理方法。
【請求項１６】
複数のデータを記憶しているデータ記憶部が記憶するデータのうちの処理対象のデータを提供したデータ提供者側から、複数のプログラムを記憶しているプログラム記憶部が記憶するプログラムのうちの、前記処理対象のデータの処理用のプログラムを指定する第１のファイルをプロセッサに受信させる命令と、
前記プロセッサのデータ処理部に、前記処理対象のデータを、受信した前記第１のファイルで指定するプログラムで処理させる命令と、を含む一連の処理を、前記プロセッサを備えたデータ処理装置に実行させることを特徴とするデータ処理用プログラム。
【請求項１７】
複数のプログラムを記憶しているプログラム記憶部が記憶するプログラムのうちの処理用のプログラムを提供したプログラム提供者側から、複数のデータを記憶しているデータ記憶部が記憶するデータのうちの、前記処理用のプログラムで処理するデータを指定する第２のファイルをプロセッサに受信させる命令と、
前記プロセッサのデータ処理部に、前記処理用のプログラムで、受信した前記第２のファイルで指定するデータを処理させる命令と、を含む一連の処理を、前記プロセッサを備えたデータ処理装置に実行させることを特徴とするデータ処理用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理方法及びデータ処理用プログラムに関する。
【背景技術】
【０００２】
従来、ビッグデータは、会社内に保有され、保有する会社でのみ利活用される場合が多く（例えば、非特許文献１参照）、効率的に利活用されていなかった。
これに対し、本発明の発明者は、ビッグデータを効率的に利活用するために、鋭意検討を行った結果、ビッグデータを複数の会社で共有することを案出した。そして、この案出した方法を用い、ビッグデータを複数の会社で共有する場合、ビッグデータがデータ提供者の意図しない用途に使われることを防止して、データ権利者のビッグデータの所有権を保護することが、ビッグデータの提供を促進するために重要となることを見出した。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】本田技研工業株式会社、“到着予想時間が正確”、[online]、 [平成２９年８月７日検索]、インターネット（ＵＲＬ: http://www.honda.co.jp/internavi/time/）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、上記のような課題に着目したもので、データの効率的な利活用を可能としつつ、データがデータ提供者の意図しない用途に使われること、又はデータ処理用のプログラムがブログラム提供者の意図しない用途に使われることを防止可能なデータ処理装置、データ処理方法及びデータ処理用プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明の一態様は、（ａ）複数のデータを記憶しているデータ記憶部と、（ｂ）複数のプログラムを記憶しているプログラム記憶部と、（ｃ）データ記憶部が記憶しているデータのうちの処理対象のデータを提供したデータ提供者側から、プログラム記憶部が記憶しているプログラムのうちの、処理対象のデータの処理用のプログラムを指定する第１のファイルを受信するファイル受信部と、（ｄ）処理対象のデータを、ファイル受信部で受信した第１のファイルが指定するプログラムで処理するデータ処理部と、を備えるデータ処理装置であることを要旨とする。
【０００６】
また、本発明の他の態様は、（ａ）複数のデータを記憶しているデータ記憶部と、（ｂ）複数のプログラムを記憶しているプログラム記憶部と、（ｃ）プログラム記憶部が記憶しているプログラムのうちの処理用のプログラムを提供したプログラム提供者側から、データ記憶部が記憶しているデータのうちの、処理用のプログラムで処理するデータを指定する第２のファイルを受信するファイル受信部と、（ｄ）処理用のプログラムで、ファイル受信部で受信した第２のファイルが指定するデータを処理するデータ処理部と、を備えるデータ処理装置であることを要旨とする。
【０００７】
また、本発明の他の態様は、（ａ）複数のデータを記憶しているデータ記憶部が記憶するデータのうちの処理対象のデータを提供したデータ提供者側から、複数のプログラムを記憶しているプログラム記憶部が記憶するプログラムのうちの、処理対象のデータの処理用のプログラムを指定する第１のファイルをプロセッサが受信するステップと、（ｂ）プロセッサのデータ処理部が、処理対象のデータを、受信した第１のファイルが指定するプログラムで処理するステップとを含むデータ処理方法であることを要旨とする。
【０００８】
また、本発明の他の態様は、（ａ）複数のプログラムを記憶しているプログラム記憶部が記憶するプログラムのうちの処理用のプログラムを提供したプログラム提供者側から、複数のデータを記憶しているデータ記憶部が記憶するデータのうちの、処理用のプログラムで処理するデータを指定する第２のファイルをプロセッサが受信するステップと、（ｂ）プロセッサのデータ処理部が、処理用のプログラムで、受信した第２のファイルが指定するデータを処理するステップとを含むデータ処理方法であることを要旨とする。
【０００９】
また、本発明の他の態様は、（ａ）複数のデータを記憶しているデータ記憶部が記憶するデータのうちの処理対象のデータを提供したデータ提供者側から、複数のプログラムを記憶しているプログラム記憶部が記憶するプログラムのうちの、処理対象のデータの処理用のプログラムを指定する第１のファイルをプロセッサに受信させる命令と、（ｂ）プロセッサのデータ処理部に、処理対象のデータを、受信した第１のファイルで指定するプログラムで処理させる命令と、を含む一連の処理を、プロセッサを備えたデータ処理装置に実行させるデータ処理用プログラムであることを要旨とする。
【００１０】
また、本発明の他の態様は、（ａ）複数のプログラムを記憶しているプログラム記憶部が記憶するプログラムのうちの処理用のプログラムを提供したプログラム提供者側から、複数のデータを記憶しているデータ記憶部が記憶するデータのうちの、処理用のプログラムで処理するデータを指定する第２のファイルをプロセッサに受信させる命令と、（ｂ）プロセッサのデータ処理部に、処理用のプログラムで、受信した第２のファイルで指定するデータを処理させる命令と、を含む一連の処理を、プロセッサを備えたデータ処理装置に実行させるデータ処理用プログラムであることを要旨とする。
【発明の効果】
【００１１】
本発明によれば、処理対象のデータを処理用のプログラムを指定するファイルをデータ提供者側から受信するため、データ提供者がデータの用途を限定できる。また、処理用のプログラムで処理するデータを指定するファイルをプログラム提供者側から受信するため、プログラム提供者がプログラムの用途を限定できる。それゆえ、データの効率的な利活用を可能としつつ、データがデータ提供者の意図しない用途に使われること、又は処理用のプログラムがプログラム提供社の意図しない用途に使われることを防止可能なデータ処理装置、データ処理方法及びデータ処理用プログラムを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態のデータ提供システムの概略構成を表す構成図である。
【図２】アクティベーションサーバの内部構成を表す構成図である。
【図３】データ提供者端末の内部構成を表す構成図である。
【図４】データパッケージを説明するための説明図である。
【図５】ＤＫＰを説明するための説明図である。
【図６】プログラム提供者端末の内部構成を表す構成図である。
【図７】プログラムパッケージを説明するための説明図である。
【図８】ＰＫＰを説明するための説明図である。
【図９】利用者端末の内部構成を表す構成図である。
【図１０】プロセッサが実行する処理済みデータ提供処理のフローチャートである。
【図１１】受信ＤＫＰに対応する対応データパッケージが登録済みであるかを判定する判定方法を説明するための説明図である。
【図１２】受信ＤＫＰに対応する対応ＰＫＰをバファが記憶しているかを判定する判定方法を説明するための説明図である。
【図１３】受信ＤＫＰが含むデータＩＤ及びプログラムＩＤと、対応ＰＫＰが含むデータＩＤ及びプログラムＩＤとの対応の検証方法を説明するための説明図である。
【図１４】受信ＤＫＰの検証方法を説明するための説明図である。
【図１５】対応ＰＫＰの検証方法を説明するための説明図である。
【図１６】データ復号鍵とプログラム復号鍵との復号を説明するための説明図である。
【図１７】データとプログラムとの復号を説明するための説明図である。
【図１８】本発明の実施形態のデータ提供システムの動作を表すシーケンス図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態に係るデータ処理装置、データ処理方法及びデータ処理用プログラムについて、実施形態に係るデータ処理装置が構成するデータ提供システムの全体について統括的に、図面を参照しつつ説明する。すなわち、後述するように、本発明の実施形態に係るデータ処理装置は、データを共有するとともに、共有しているデータをプログラムで処理した処理結果（以下「処理済みデータ」とも呼ぶ）をデータ利用者に提供するデータ提供システムを構成する。ここで、データとしては、例えば、ビッグデータ等の潜在的価値を有するデータ、音声アシスタントの音声データやＳＮＳ（Social Network Service）のユーザデータ等の個人情報を有するデータを用いることができる。また、プログラムとしては、データを処理可能なプログラムであればよく、例えば、ビッグデータの潜在的価値を顕在化するプログラム、音声データやユーザデータに含まれている個人情報を匿名化するプログラム等のデータの価値を限定するプログラムを用いることができる。
【００１４】
なお、以下に示す実施形態は、本発明の技術的思想を具体化するための装置や方法を、データ提供システムの全体について概略的に例示するものであって、本発明の技術的思想は、データ提供システムを構成しているそれぞれのハードウェア並びにファームウェア及びミドルウェアを含むソフトウェアや、これらの具体的なコンポーネント等を下記のものに特定するものでない。本発明の技術的思想は、請求の範囲に記載された請求項が規定する技術的範囲内において、種々の変更を加えることができる。
【００１５】
（構成）
本発明の実施形態に係るデータ提供システム１は、図１に示すように、データを提供するデータ提供者の端末（以下「データ提供者端末２」とも呼ぶ）と、プログラムを提供するプログラム提供者の端末（以下「プログラム提供者端末３」とも呼ぶ）と、データを利用するデータ利用者の端末「以下「利用者端末４」とも呼ぶ」と、提供されたデータ及びプログラムを記憶し、記憶しているデータをプログラムで処理して提供するデータ処理装置としてのアクティベーションサーバ５とを備えている。なお、以下の説明では、図１及び図１８に示した「アクティベーションサーバ５」を「データ処理装置５」と呼ぶ。データ提供者端末２、プログラム提供者端末３、利用者端末４及びデータ処理装置５は、インターネット等の通信網６ を介して、ファイル等を互いに送受信可能に接続されている。
ここで、データ提供者としては、例えば、ビッグデータを持っている会社、音声アシスタント機器の所有者、ＳＮＳの運営会社等が挙げられる。また、プログラム提供者としては、例えば、データ提供者と異なる人であっていてもよいし、同一の人であってもよい。
【００１６】
（データ処理装置：アクティベーションサーバ）
本発明の実施形態に係るデータ提供システム１を構成しているデータ処理装置５は、図２に示すように、通信部２７、記憶装置２８及びプロセッサ２９等のハードウェア資源を備えている。例えば、インターネット上に設置され、第三者機関で、そのハードウェア、ソフトウェア、設置場所等の面で安全性が確認されたセキュアなサーバを採用することができる。通信部２７は、通信網６を介して、プロセッサ２９と、データ提供者端末２、プログラム提供者端末３及び利用者端末４との間でファイル等の送受信を可能とする。記憶装置２８は、データ記憶部３０、プログラム記憶部３１、復号データ記憶部（以下「ストレージ３２」とも呼ぶ）等のハードウェア資源を論理的に備えている。図２では、データ記憶部３０、プログラム記憶部３１、ストレージ３２は、論理的な機能に着目したハードウェア資源を形式的に表現している。図２の表現では、必ずしも基板上に物理的な領域として独立して存在する記憶装置を意味するものではない。
【００１７】
プロセッサ２９は、データパッケージ受信部３３、プログラムパッケージ受信部３４、ファイル受信部３５、データ処理部３６等のハードウェア資源を物理的に備えている。図２では、データパッケージ受信部３３、プログラムパッケージ受信部３４、ファイル受信部３５、データ処理部３６等は、論理的な機能に着目したハードウェア資源を形式的に表現している。また、データ処理部３６は、データパッケージ登録判定部３７、プログラムパッケージ登録判定部３８、ＰＫＰ（Program Key Package）記憶状態判定部３９、ＤＫＰ（Data Key Package）記憶状態判定部４０、対応検証部４１、ＤＫＰ検証部４２、ＰＫＰ検証部４３、データ・プログラム検証部４４、データ復号鍵復号部４５、プログラム復号鍵復号部４６、データ復号部４７、プログラム復号部４８、処理実行部４９、処理済みデータ暗号化部５０、復号データ消去部５１、処理済みデータ送信部５２を含んでいる。
【００１８】
データパッケージ受信部３３は、図１に示したデータ提供者端末２から図４に示したデータパッケージ６０が送信されると、通信部２７を介して、送信されたデータパッケージ６０を受信してデータ記憶部３０に記憶させる。そして、データパッケージ６０の受信・記憶を繰り返すことで、データ提供者から提供される複数のデータをデータ記憶部３０に記憶させる。その結果、データ処理装置５でデータが共有される。また、プログラムパッケージ受信部３４は、図１に示したプログラム提供者端末３から図７に示したプログラムパッケージ８１が送信されると、通信部２７を介して、プログラムパッケージ８１を受信してプログラム記憶部３１に記憶させる。そして、プログラムパッケージ８１の受信・記憶を繰り返すことで、プログラム提供者から提供される、データ記憶部３０が記憶している複数のデータを処理可能な複数のプログラムをプログラム記憶部３１に記憶させる。
【００１９】
（データ提供者端末）
本発明の実施形態に係るデータ提供システム１を構成しているデータ提供者端末２は、図３に示すように、通信部７及びプロセッサ８等のハードウェア資源を備えている。データ提供者端末２としては、例えば、パーソナルコンピュータを採用することができる。通信部７は、通信網６を介して、プロセッサ８と、プログラム提供者端末３、利用者端末４及びデータ処理装置５との間で、ファイル等の送受信を可能とする。また、プロセッサ８は、データパッケージ生成部９、データパッケージ送信部１０、リクエスト受信部１１、ＤＫＰ生成部１２、ＤＫＰ送信部１３及びリクエスト送信部１４等のハードウェア資源を物理的に備えている。図３では、データパッケージ生成部９、データパッケージ送信部１０、リクエスト受信部１１、ＤＫＰ生成部１２、ＤＫＰ送信部１３及びリクエスト送信部１４等は、論理的な機能に着目したハードウェア資源を形式的に表現している。
【００２０】
図３に示したデータパッケージ生成部９は、データ提供者からデータ処理装置５に提供されるデータ（例えば、ビッグデータ、音声アシスタントの音声データ、ＳＮＳのユーザデータ）を含むデータパッケージ６０を生成する。データパッケージ６０は、図４に示すように、暗号化されたデータ６１、複数のＸＭＬファイル「ASSETMAP.xml」６２、「*info.xml」６３、「*hash.xml」６４を含んでいる。暗号化されたデータ６１としては、例えば、データ提供者の共通鍵等のデータ暗号化鍵で暗号化されたデータ６１を用いることができる。データを暗号化することで、盗聴を防止でき、データの機密性を確保できる。また、ＸＭＬファイル「ASSETMAP.xml」６２は、データパッケージ６０内のファイル一覧を含むファイルであり、「*info.xml」６３はデータの各種情報を含むファイルである。
【００２１】
また、ＸＭＬファイル「*hash.xml」６４は、データパッケージ６０内の各ファイル内のハッシュ値６５とデータ提供者のデジタル署名６６と公開鍵証明書６７とを含むファイルである。また、「ASSETMAP.xml」６２、「*info.xml」６３、「*hash.xml」６４のそれぞれは、データを示すデータＩＤ６８、６９、７０を含んでいる。データＩＤ６８、６９、７０としては、例えば、ＵＵＩＤ（Universally Unique Identifier）を採用できる。ＵＵＩＤは、１２８ビットの数値であるため、乱数等を用いて設定するだけで互いに重複しないＩＤとなる。それゆえ、例えば、すべてのデータＩＤを管理して、他のデータＩＤと異なるデータＩＤを設定する方法と異なり、データＩＤの設定の手間を軽減できる。
【００２２】
図３に示したデータパッケージ送信部１０は、図３に示した通信部７を介して、図３に示したデータパッケージ生成部９で生成したデータパッケージ６０を図１に示したデータ処理装置５に送信する。
なお、本発明の実施形態に係るデータ提供システム１では、データ提供者端末２が、データパッケージ６０を図３に示した通信部７を介して、つまり、インターネット等の通信網６を介して図１に示したデータ処理装置５に送信する例を示したが、他の構成を採用することもできる。例えば、データ提供者が、データ提供者端末２を操作して、データパッケージ６０をハードディスク等のストレージに格納し、ストレージをデータ処理装置５の管理者に渡し、管理者が、データ処理装置５を操作して、ストレージが格納しているデータパッケージ６０をデータ記憶部３０に記憶させる構成としてもよい。
【００２３】
図３に示したリクエスト受信部１１は、図１に示した利用者端末４から実行結果リクエストが送信されると、図３に示した通信部７を介して、送信された実行結果リクエストを受信する。実行結果リクエストとは、データ処理装置５が共有しているデータのいずれかを特定のプログラムで処理した処理済みデータの提供を要求するリクエストである。なお、実行結果リクエストには利用者端末４のホスト名と公開鍵証明書とが付加されている。
【００２４】
図３に示したＤＫＰ生成部１２は、図３に示したリクエスト受信部１１で実行結果リクエストを受信すると、データ処理装置５（データ記憶部３０）が記憶している複数のデータのうちの、自装置（データ提供者端末２）がデータ処理装置５に提供したデータのうちから、処理対象のデータを指定する第１のファイル（以下「ＤＫＰ７１」とも呼ぶ）を生成する。ＤＫＰ（Data Key Package）７１は、例えば、図５に示すようにＤＫＰのＵＵＩＤ７２、ＤＫＰの発行日時７３、ＤＫＰの有効期限７４、対応するデータのデータＩＤ７５、対応するデータのファイル名７６、暗号化されたデータ復号鍵７７、相手プログラムのプログラムＩＤ７８、データ提供者のデジタル署名７９及びデータ提供者の公開鍵証明書８０を含んでいる。
【００２５】
また、対応するデータのデータＩＤ７５としては、例えば、処理対象のデータを指定するデータＩＤを用いることができる。さらに、暗号化されたデータ復号鍵７７としては、例えば、データ処理装置５の公開鍵で暗号化されたデータ復号鍵を用いることができる。データ復号鍵を暗号化することで、データ復号鍵の盗聴を防止できる。また、データ処理装置５の公開鍵を用いることで、公開鍵に対応する秘密鍵を有するデータ処理装置５でのみデータを復号でき、不正なサーバ等でデータが処理されることを防止できる。データ復号鍵としては、暗号化されたデータ６１を復号可能な鍵であればよく、例えば、データ提供者の共通鍵を採用できる。また、相手プログラムのプログラムＩＤ７８としては、例えば、処理対象のデータの処理用のプログラムを指定するプログラムＩＤを用いることができる。プログラムＩＤとしては、例えば、ＵＵＩＤを採用できる。ＵＵＩＤを用いることで、例えば、すべてのプログラムＩＤを管理し、他のプログラムＩＤと異なるプログラムＩＤを設定する方法と異なり、プログラムＩＤの設定の手間を軽減することができる。また、処理用のプログラム（相手プログラム）としては、例えば、データ処理装置５（プログラム記憶部３１）が記憶している複数のプログラムのいずれかを用いることができる。
【００２６】
図３に示したＤＫＰ送信部１３は、図３に示した通信部７を介して、ＤＫＰ生成部１２で生成したＤＫＰ７１、つまり処理対象のデータを指定するデータＩＤ７５、処理対象のデータの処理用のプログラムを指定するプログラムＩＤ７８、暗号化されたデータ復号鍵７７を含むファイルをデータ処理装置５に送信する。すなわち、図１に示したデータ記憶部３０が記憶しているデータのうちの処理対象のデータを提供したデータ提供者側から、プログラム記憶部３１が記憶しているプログラムのうちの、処理対象のデータの処理用のプログラムを指定するＤＫＰ７１をデータ処理装置５に送信する。ＤＫＰ７１には、実行結果リクエストに付加されていた利用者端末４のホスト名と公開鍵証明書とを付加する。
【００２７】
図３に示したリクエスト送信部１４は、図３に示したＤＫＰ送信部１３でＤＫＰ７１を送信すると、図３に示した通信部７を介して、第２のファイル（以下「ＰＫＰ９２」とも呼ぶ）の送信を要求するＰＫＰリクエストを図１に示したプログラム提供者端末３に送信する。ＰＫＰリクエストには、ＤＫＰ送信部１３で送信したＤＫＰ７１が含む対応するデータのデータＩＤ７５と相手プログラムのプログラムＩＤ７８と同じデータＩＤとプログラムＩＤとが付加されている。ＰＫＰリクエストの送信先としては、プログラムＩＤが指定するプログラムを提供したプログラム提供者のプログラム提供者端末３を選択する。
【００２８】
（プログラム提供者端末）
本発明の実施形態に係るデータ提供システム１を構成しているプログラム提供者端末３は、図６に示すように、通信部１５及びプロセッサ１６等のハードウェア資源を備えている。例えば、パーソナルコンピュータを採用できる。通信部１５は、通信網６を介して、プロセッサ１６と、データ提供者端末２及びデータ処理装置５との間でファイル等の送受信を可能とする。プロセッサ１６は、プログラムパッケージ生成部１７、プログラムパッケージ送信部１８、リクエスト受信部１９、ＰＫＰ生成部２０及びＰＫＰ送信部２１等のハードウェア資源を物理的に備えている。図６では、プログラムパッケージ生成部１７、プログラムパッケージ送信部１８、リクエスト受信部１９、ＰＫＰ生成部２０及びＰＫＰ送信部２１等は、論理的な機能に着目したハードウェア資源を形式的に表現している。
【００２９】
図６に示したプログラムパッケージ生成部１７は、プログラム提供者からデータ処理装置５に提供されるプログラム、つまりデータ処理装置５（データ記憶部３０）が記憶している複数のデータを処理可能な複数のプログラムを含むプログラムパッケージ８１を生成する。プログラムパッケージ８１は、図７に示すように暗号化されたプログラム８２、複数のＸＭＬファイル「ASSETMAP.xml」８３、「*info.xml」８４、「*hash.xml」８５を含んでいる。暗号化されたプログラム８２としては、例えば、プログラム提供者の共通鍵等のプログラム暗号化鍵で暗号化されたプログラム８２を用いることができる。プログラムを暗号化することで、プログラムの盗聴を防止でき、プログラムの機密性を確保できる。
【００３０】
また、ＸＭＬファイル「ASSETMAP.xml」８３は、プログラムパッケージ８１内のファイル一覧を含むファイルである。さらに、「*info.xml」８４は、プログラムの各種情報を含むファイルである。また、「*hash.xml」８５は、プログラムパッケージ８１内の各ファイル内のハッシュ値８６とプログラム提供者のデジタル署名８７と公開鍵証明書８８とを含むファイルである。「ASSETMAP.xml」８３、「*info.xml」８４、「*hash.xml」８５のそれぞれは、プログラムを示すプログラムＩＤ８９、９０、９１を含んでいる。
【００３１】
図６に示したプログラムパッケージ送信部１８は、図６に示した通信部１５を介して、図６に示したプログラムパッケージ生成部１７で生成したプログラムパッケージ８１を図１に示したデータ処理装置５に送信する。
なお、本発明の実施形態に係るデータ提供システム１では、プログラム提供者端末３が、プログラムパッケージ８１を図６に示した通信部１５を介して、つまり、インターネット等の通信網６を介して図１に示したデータ処理装置５に送信する例を示したが、他の構成を採用することもできる。例えば、プログラム提供者が、プログラム提供者端末３を操作して、プログラムパッケージ８１をストレージに格納し、ストレージをデータ処理装置５の管理者に渡し、管理者が、データ処理装置５を操作して、ストレージが格納しているプログラムパッケージ８１をプログラム記憶部３１に記憶させる構成としてもよい。
【００３２】
図６に示したリクエスト受信部１９は、  図１に示したデータ提供者端末２からＰＫＰ９２の送信を要求するＰＫＰリクエストが送信されると、図６に示した通信部１５を介して、送信されたＰＫＰリクエストを受信する。
図６に示したＰＫＰ生成部２０は、リクエスト受信部１９でＰＫＰリクエストを受信すると、データ処理装置５（プログラム記憶部３１）が記憶している複数のプログラムのうちの、自装置（プログラム提供者端末３）が提供したデータのうちから、処理対象のデータの処理用のプログラムを指定するＰＫＰ９２を生成する。ＰＫＰ（Program Key Package）９２は、例えば、図８に示すようにＰＫＰのＵＵＩＤ９３、ＰＫＰの発行日時９４、ＰＫＰの有効期限９５、対応するプログラムのプログラムＩＤ９６、対応するプログラムのファイル名９７、暗号化されたプログラム復号鍵９８、相手データのデータＩＤ９９、プログラム提供者のデジタル署名１００及びプログラム提供者の公開鍵証明書１０１を含んでいる。
【００３３】
また、対応するプログラムのプログラムＩＤ９６としては、例えば、処理対象のデータの処理用のプログラムを指定するプログラムＩＤを用いることができる。さらに、暗号化されたプログラム復号鍵９８としては、例えば、データ処理装置５の公開鍵で暗号化されたプログラム復号鍵を用いることができる。プログラム復号鍵を暗号化することで、プログラム復号鍵の盗聴を防止できる。また、データ処理装置５の公開鍵を用いることで、公開鍵に対応する秘密鍵を有するデータ処理装置５でのみプログラムを復号でき、不正なサーバ等でプログラムが使用されることを防止できる。プログラム復号鍵としては、暗号化されたプログラム８２を復号可能な鍵であればよく、例えば、プログラム提供者の共通鍵を採用することができる。また、相手データのデータＩＤ９９としては、例えば、処理用のプログラムで処理する処理対象のデータを指定するデータＩＤを用いることができる。また、処理対象データ（相手データ）としては、例えば、データ処理装置５（データ記憶部３０）が記憶している複数のデータのいずれかを用いることができる。対応するプログラムのプログラムＩＤ９６と相手データのデータＩＤ９９の設定方法としては、ＰＫＰリクエストに付加されているプログラムＩＤとデータＩＤとを用いる方法を採用できる。
【００３４】
図６に示したＰＫＰ送信部２１は、図６に示した通信部１５を介して、図６に示したＰＫＰ生成部２０で生成したＰＫＰ、つまり、処理用のプログラムを指定するプログラムＩＤ、プログラムで処理するデータを指定するデータＩＤ及び暗号化されたプログラム復号鍵等を含むファイルを図１に示したデータ処理装置５に送信する。すなわち、図１に示したプログラム記憶部３１が記憶しているプログラムのうちの処理用のプログラムを提供したプログラム提供者側から、データ記憶部３０が記憶しているデータのうちの、処理用のプログラムで処理するデータを指定するＰＫＰ９２をデータ処理装置５に送信する。
【００３５】
（利用者端末）
本発明の実施形態に係るデータ提供システム１を構成している利用者端末４は、図９に示すように、通信部２２及びプロセッサ２３等のハードウェア資源を備えている。例えば、パーソナルコンピュータを採用できる。通信部２２は、通信網６を介して、プロセッサ２３と、データ提供者端末２及びデータ処理装置５との間で、ファイル等の送受信を可能とする。プロセッサ２３は、リクエスト送信部２４、処理済みデータ受信部２５及び処理済みデータ復号部２６等のハードウェア資源を物理的に備えている。図９では、リクエスト送信部２４、処理済みデータ受信部２５及び処理済みデータ復号部２６等は、論理的な機能に着目したハードウェア資源を形式的に表現している。
【００３６】
図９に示したリクエスト送信部２４は、図９に示した通信部２２を介して、実行結果リクエストを図１に示したデータ提供者端末２に送信する。実行結果リクエストには、利用者端末４、つまり、自端末装置のホスト名と公開鍵証明書とを付加する。
図９に示した処理済みデータ受信部２５は、図１に示したデータ処理装置５から暗号化された処理済みデータが送信されると、図９に示した通信部２２を介して、送信された暗号化された処理済みデータを受信する。なお、処理済みデータの暗号化には、任意の共通鍵が用いられている。また、暗号化された処理済みデータには、暗号化に用いられた共通鍵を、利用者端末４、つまり、自端末装置の公開鍵で暗号化したものが付加されている。
図９に示した処理済みデータ復号部２６は、図９に示した処理済みデータ受信部２５で受信した暗号化された処理済みデータに付加されている暗号化された共通鍵を、利用者端末４の公開鍵に対応する秘密鍵、つまり、自端末装置の公開鍵に対応する秘密鍵で復号する。続いて、復号した共通鍵で、暗号化された処理済みデータを復号して、暗号化が解除された処理済みデータを取得する。
【００３７】
（データ処理方法）
次に、本発明の実施形態に係るデータ処理装置５のプロセッサ２９が実行する処理済みデータ提供処理について説明する。処理済みデータ提供処理は、プロセッサ２９への各種命令を含む一連の処理をデータ処理装置５に実行させるプログラムによって実現される。
処理済みデータ提供処理では、図１０に示すように、まずそのステップＳ１０１で、図２に示したファイル受信部３５が、図１に示したデータ提供者端末２からＤＫＰ７１が送信されるまで、または図１に示したプログラム提供者端末３からＰＫＰ９２が送信されるまで待機状態を維持する。そして、ＤＫＰ７１またはＰＫＰ９２が送信されたと判定すると、待機状態を終了して、ステップＳ１０２に移行する。
【００３８】
ステップＳ１０２では、図２に示したファイル受信部３５が、図２に示した通信部２７を介して、図１に示したデータ提供者端末２からＤＫＰを受信する、または図１に示したプログラム提供者端末３からＰＫＰ９２を受信する。すなわち、ステップＳ１０２では、ＤＫＰ７１をプロセッサ２９に受信させる命令をファイル受信部３５に実行させる。
続いてステップＳ１０３に移行して、図２に示したファイル受信部３５が、ステップＳ１０２で受信したファイルがＤＫＰ７１であるか否かを判定する。そして、ファイルがＤＫＰ７１であると判定した場合には（Ｙｅｓ）、ステップＳ１０４に移行する。一方、ファイルがＤＫＰ７１ではないと判定した場合には（Ｎｏ）、ＰＫＰ９２であると判定し、ステップＳ１１９に移行する。
【００３９】
ステップＳ１０４では、図２に示したデータパッケージ登録判定部３７が、ステップＳ１０２で受信したＤＫＰ７１（以下「受信ＤＫＰ７１」とも呼ぶ）に対応するデータパッケージ６０（以下「対応データパッケージ６０」とも呼ぶ）がデータ処理装置５に登録済みであるか否かを判定する。例えば、図１１に示すように、受信ＤＫＰ７１が含む対応するデータのデータＩＤ７５と同じデータＩＤを含むデータパッケージ６０がデータ記憶部３０に記憶されていると判定した場合に、対応データパッケージ６０が登録済みであると判定する。なお、データパッケージ６０のデータＩＤとしては、ＸＭＬファイル「*info.xml」６３が含むデータＩＤ６９を参照する。そして、対応データパッケージ６０が登録済みであると判定した場合には（Ｙｅｓ）、ステップＳ１０５に移行し、対応データパッケージ６０が登録済みではないと判定した場合には（Ｎｏ）、ステップＳ１０１に戻る。
【００４０】
ステップＳ１０５では、図２に示したＰＫＰ記憶状態判定部３９が、受信ＤＫＰ７１に対応するＰＫＰ９２（以下「対応ＰＫＰ９２」とも呼ぶ）をストレージ３２が記憶しているか否かを判定する。例えば、図１２に示すように、受信ＤＫＰ７１が含む相手プログラムのプログラムＩＤ７８と同じプログラムＩＤを含むＰＫＰ９２をストレージ３２が記憶していると判定した場合に、対応ＰＫＰ９２をストレージ３２が記憶していると判定する。そして、対応ＰＫＰ９２をストレージ３２が記憶していると判定した場合には（Ｙｅｓ）、ステップＳ１０６に移行し、対応ＰＫＰ９２をストレージ３２が記憶していないと判定した場合には（Ｎｏ）、ステップＳ１１０に移行する。
【００４１】
ステップＳ１０６では、図２に示した対応検証部４１が、受信ＤＫＰ７１が含む対応するデータのデータＩＤ７５及び相手プログラムのプログラムＩＤ７８と、対応ＰＫＰ９２が含む相手データのデータＩＤ９９及び対応するプログラムのプログラムＩＤ９６との対応を検証する。例えば、図１３に示すように、受信ＤＫＰ７１が含む対応するデータのデータＩＤと対応ＰＫＰ９２が含む相手データのデータＩＤ９９とが互いに同一であり、且つ受信ＤＫＰ７１が含む相手プログラムのプログラムＩＤ７８と対応ＰＫＰ９２が含む対応するプログラムのプログラムＩＤ９６とが互いに同一であると判定した場合に、検証に成功したと判定する。そして、検証に成功したと判定した場合には（Ｙｅｓ）、対応データパッケージ６０が含むデータと、対応プログラムパッケージ８１が含むプログラムとを紐付け（以下「バインド」とも呼ぶ）して、ステップＳ１０７に移行し、検証に失敗したと判定した場合には（Ｎｏ）、ステップＳ１１０に移行する。
【００４２】
ステップＳ１０７では、図２に示したＤＫＰ検証部４２が、受信ＤＫＰ７１の検証を行う。例えば、受信ＤＫＰ７１の有効期限が切れていないかの検証（以下「第１の検証」とも呼ぶ）、図１４に示すように、受信ＤＫＰ７１の公開鍵証明書８０と対応データパッケージ６０の公開鍵証明書６７とが同一であるかの検証（以下「第２の検証」とも呼ぶ）、公開鍵証明書８０を用いた受信ＤＫＰ７１のデジタル署名７９の検証（以下「第３の検証」とも呼ぶ）を行い、第１〜第３の検証に成功したと判定した場合に、受信ＤＫＰ７１の検証に成功したと判定する。第２の検証により、受信ＤＫＰ７１を作成したデータ提供者端末２（図１参照）と対応データパッケージ６０を作成したデータ提供者端末２とが同一であるかを確認する。また、第３の検証により、受信ＤＫＰ７１が改ざんされていないかを確認し、受信ＤＫＰ７１の完全性・正当性を確認する。そして、受信ＤＫＰ７１の検証に成功したと判定した場合には（Ｙｅｓ）、ステップＳ１０８に移行し、受信ＤＫＰ７１の検証に失敗したと判定した場合には（Ｎｏ）、ステップＳ１０１に戻る。
【００４３】
ステップＳ１０８では、図２に示したＰＫＰ検証部４３が、対応ＰＫＰ９２の検証を行う。例えば、対応ＰＫＰ９２の有効期限が切れていないかの検証（以下「第４の検証」とも呼ぶ）、図１５に示すように、対応ＰＫＰ９２の公開鍵証明書１０１と対応ＰＫＰ９２に対応するプログラムパッケージ８１（以下「対応プログラムパッケージ８１」とも呼ぶ）の公開鍵証明書８８とが同一であるかの検証（以下「第５の検証」とも呼ぶ）、公開鍵証明書１０１を用いた対応ＰＫＰ９２のデジタル署名１００の検証（以下「第６の検証」とも呼ぶ）を行い、第４〜第６の検証に成功したと判定した場合に、対応ＰＫＰ９２の検証に成功したと判定する。第５の検証により、対応ＰＫＰ９２を作成したプログラム提供者端末３（図１参照）と対応プログラムパッケージ８１を作成したプログラム提供者端末３とが同一であるかを確認する。また、第６の検証により、対応ＰＫＰ９２が改ざんされていないかを確認し、対応ＰＫＰ９２の完全性・正当性を確認する。そして、対応ＰＫＰ９２の検証に成功したと判定した場合には（Ｙｅｓ）、ステップＳ１１１に移行し、対応ＰＫＰ９２の検証に失敗したと判定した場合には（Ｎｏ）ステップＳ１０９に移行する。
【００４４】
ステップＳ１０９では、図２に示したＰＫＰ検証部４３が、対応ＰＫＰ９２をストレージ３２から消去した後、ステップＳ１１０に移行する。
ステップＳ１１０では、図２に示したＰＫＰ検証部４３が、受信ＤＫＰ７１をストレージ３２に記憶させた後、ステップＳ１０１に戻る。
【００４５】
一方、ステップＳ１１１では、図２に示したデータ・プログラム検証部４４が、対応データパッケージ６０及び対応プログラムパッケージ８１の検証を行う。例えば、対応データパッケージ６０のＸＭＬファイル「*hash.xml」６４のハッシュ値６５の検証（以下「第７の検証」とも呼ぶ）、公開鍵証明書６７を用いた「*hash.xml」６４のデジタル署名６６の検証（以下「第８の検証」とも呼ぶ）を行う。第７の検証により、対応データパッケージ６０が改ざんされていないかを確認する。また、第８の検証により、「*hash.xml」６４のハッシュ値６５が改ざんされていないかを確認する。すなわち、第７、第８の検証により、対応データパッケージ６０が含むデータの完全性を検証する。
【００４６】
また、例えば、対応プログラムパッケージ８１のＸＭＬファイル「*hash.xml」８５のハッシュ値８６の検証（以下「第９の検証」とも呼ぶ）、公開鍵証明書８８を用いた「*hash.xml」８５のデジタル署名８７の検証（以下「第１０の検証」とも呼ぶ）を行う。第９の検証により、対応プログラムパッケージ８１が改ざんされていないかを確認する。また、第１０の検証により、「*hash.xml」８５のハッシュ値８６が改ざんされていないかを確認する。すなわち、第９、第１０の検証により、対応プログラムパッケージ８１が含むプログラムの完全性を検証する。そして、第７、第８、第９及び第１０の検証に成功したと判定した場合に、対応データパッケージ６０及び対応プログラムパッケージ８１の検証に成功したと判定する。対応データパッケージ６０及び対応プログラムパッケージ８１の検証に成功したと判定した場合には（Ｙｅｓ）、ステップＳ１１２に移行し、検証に失敗したと判定した場合には（Ｎｏ）、ステップＳ１０１に戻る。
【００４７】
ステップＳ１１２では、図２に示したデータ復号鍵復号部４５が、図１６に示すように、受信ＤＫＰ７１が含む暗号化されたデータ復号鍵７７をデータ処理装置５の秘密鍵１０２で復号して、データ復号鍵１０３を得る。また、プログラム復号鍵復号部４６が、対応ＰＫＰ９２が含む暗号化されたプログラム復号鍵９８をデータ処理装置５の秘密鍵１０２で復号して、プログラム復号鍵１０４を得る。暗号化されたデータ復号鍵７７及びプログラム復号鍵９８のそれぞれをデータ処理装置５の秘密鍵１０２、つまり、暗号化に用いた公開鍵に対応する秘密鍵で復号することで、データ処理装置５の認証を実行できる。
【００４８】
続いてステップＳ１１３に移行して、図２に示したデータ復号部４７とプログラム復号部４８とが、ステップＳ１０６でバインドしたデータとプログラムとをストレージ３２に記憶させる。例えば、図２に示したデータ復号部４７が、図１７に示すように、データ記憶部３０が記憶している複数のデータパッケージのうちの、対応データパッケージ６０が含む暗号化されたデータ６１をステップＳ１１２で復号したデータ復号鍵１０３で復号し、復号したデータ１０５を、バインドしたデータとしてストレージ３２に記憶させる。復号したデータ１０５をストレージ３２に記憶させることで、ステップＳ１０６で互いに同一であると判定したデータＩＤ、つまり、受信ＤＫＰ７１が含む対応するデータのデータＩＤ７５または対応ＰＫＰが含む相手データのデータＩＤ９９が指定するデータ１０５を記憶できる。
【００４９】
また、例えば、図２に示したプログラム復号部４８が、プログラム記憶部３１が記憶している複数のプログラムパッケージのうちの、対応プログラムパッケージ８１が含む暗号化されたプログラム８２をステップＳ１１２で復号したプログラム復号鍵１０４で復号し、復号したプログラム１０６を、ステップＳ１０６でバインドしたプログラムとしてストレージ３２に記憶させる。復号したプログラム１０６をストレージ３２に記憶させることで、ステップＳ１０６で互いに同一であると判定したプログラムＩＤ、つまり、受信ＤＫＰ７１が含む相手プログラムのプログラムＩＤ７８または対応ＰＫＰ９２が含む対応するプログラムのプログラムＩＤ９６が指定するプログラムをストレージ３２に記憶させることができる。
【００５０】
続いてステップＳ１１４に移行して、図２に示した処理実行部４９が、ステップＳ１０６でバインドしたデータとプログラムとを用いて処理済みデータを生成する。例えば、ストレージ３２が記憶しているデータ１０５を、ストレージ３２が記憶しているプログラム１０６で処理し、処理結果を処理済みデータとする。ストレージ３２が記憶しているデータ１０５とプログラム１０６とを用いることで、ステップＳ１０６で互いに同一であると判定したデータＩＤが指定するデータを、同ステップで互いに同一であると判定したプログラムＩＤが指定するプログラムで処理する。すなわち、ステップＳ１１３、Ｓ１１４では、データ記憶部３０が記憶している複数のデータのうちの、受信ＤＫＰ７１が含む対応するデータのデータＩＤ７５が指定するデータ（処理対象のデータ）を、プログラム記憶部３１が記憶している複数のプログラムのうちの、受信ＤＫＰ７１が含む相手プログラムのプログラムＩＤ７８が指定するプログラムで処理させる命令を処理実行部４９に実行させる。
【００５１】
その際、処理済みデータとしては、例えば、ストレージ３２が記憶しているデータ１０５に統計処理等を施してデータ１０５の潜在的価値を顕在化したデータや、データ１０５に含まれている個人情報を匿名化してデータ１０５の価値を限定したデータが生成される。
【００５２】
続いてステップＳ１１５に移行して、図２に示した処理済みデータ暗号化部５０が、ステップＳ１１４で生成した処理済みデータを任意の共通鍵で暗号化する。続いて、暗号化に用いた共通鍵を、受信ＤＫＰ７１に付加されている利用者端末４の公開鍵証明書の公開鍵で暗号化する。
続いてステップＳ１１６に移行して、図２に示した復号データ消去部５１が、ストレージ３２からデータ１０５とプログラム１０６とを消去する。
続いてステップＳ１１７に移行して、図２に示した復号データ消去部５１が、ストレージ３２から対応ＰＫＰ９２を消去する。
続いてステップＳ１１８に移行して、図２に示した処理済みデータ送信部５２が、ステップＳ１１５で暗号化された処理済みデータを、受信ＤＫＰ７１に付加されているホスト名に対応する利用者端末４（図１参照）に送信した後、この演算処理を終了する。暗号化された処理済みデータには、ステップＳ１１５で暗号化された共通鍵を付加する。
【００５３】
また一方、ステップＳ１１９では、図２に示したプログラムパッケージ登録判定部３８が、ステップＳ１０２で受信したＰＫＰ９２（以下「受信ＰＫＰ９２」とも呼ぶ）に対応するプログラムパッケージ８１（以下「対応プログラムパッケージ８１」とも呼ぶ）がデータ処理装置５に登録済みであるか否かを判定する。例えば、受信ＰＫＰ９２が含む対応するプログラムのプログラムＩＤ９６と同じプログラムＩＤを含むプログラムパッケージ８１がプログラム記憶部３１に記憶されていると判定した場合に、対応プログラムパッケージ８１が登録済みであると判定する。そして、対応プログラムパッケージ８１が登録済みであると判定した場合には（Ｙｅｓ）、ステップＳ１２０に移行し、対応プログラムパッケージ８１が登録済みではないと判定した場合には（Ｎｏ）ステップＳ１０１に戻る。
【００５４】
ステップＳ１２０では、図２に示したＤＫＰ記憶状態判定部４０が、受信ＰＫＰ９２に対応するＤＫＰ７１（以下「対応ＤＫＰ７１」とも呼ぶ）をストレージ３２が記憶しているか否かを判定する。例えば、受信ＰＫＰ９２が含む相手データのデータＩＤと同じデータＩＤを含むＤＫＰ７１をストレージ３２が記憶していると判定した場合に、対応ＤＫＰ７１をストレージ３２が記憶していると判定する。そして、ストレージ３２が記憶していると判定した場合には（Ｙｅｓ）、ステップＳ１２１に移行し、記憶していないと判定した場合には（Ｎｏ）、ステップＳ１２５に移行する。
【００５５】
ステップＳ１２１では、図２に示した対応検証部４１が、受信ＰＫＰ９２が含む相手データのデータＩＤ９９及び対応するプログラムのプログラムＩＤ９６と、対応ＤＫＰ７１が含む対応するデータのデータＩＤ７５及び相手プログラムのプログラムＩＤ７８との対応を検証する。例えば、対応ＤＫＰ７１が含む対応するデータのデータＩＤ７５と受信ＰＫＰ９２が含む相手データのデータＩＤ９９とが互いに同一であり、且つ対応ＤＫＰ７１が含む相手プログラムのプログラムＩＤ７８と受信ＰＫＰ９２が含む対応するプログラムのプログラムＩＤ９６とが互いに同一であると判定した場合に、検証に成功したと判定する。そして、検証に成功したと判定した場合には（Ｙｅｓ）、対応データパッケージ６０が含むデータと、対応プログラムパッケージ８１が含むプログラムとの紐付け、つまり、バインドを行い、ステップＳ１２２に移行し、検証に失敗したと判定した場合には（Ｎｏ）、ステップＳ１２５に移行する。
【００５６】
ステップＳ１２２では、図２に示したＰＫＰ検証部４３が、受信ＰＫＰ９２の検証を行う。例えば、受信ＰＫＰ９２の有効期限が切れていないかの検証（以下「第１１の検証」とも呼ぶ）、受信ＰＫＰ９２の公開鍵証明書１０１と対応プログラムパッケージ８１の公開鍵証明書８８とが同一であるかの検証（以下「第１２の検証」とも呼ぶ）、公開鍵証明書１０１を用いた受信ＰＫＰ９２のデジタル署名１００の検証（以下「第１３の検証」とも呼ぶ）を行い、第１１〜第１３の検証に成功したと判定した場合に、受信ＰＫＰ９２の検証に成功したと判定する。第１２の検証により、受信ＰＫＰ９２を作成したプログラム提供者端末３（図１参照）と対応プログラムパッケージ８１を作成したプログラム提供者端末３とが同一であるかを確認する。また、第１３の検証により、受信ＰＫＰ９２が改ざんされていないかを確認し、受信ＰＫＰ９２の完全性・正当性を確認する。そして、受信ＰＫＰ９２の検証に成功したと判定した場合には（Ｙｅｓ）、ステップＳ１２３に移行し、検証に失敗したと判定した場合には（Ｎｏ）、ステップＳ１０１に戻る。
【００５７】
ステップＳ１２３では、図２に示したＤＫＰ検証部４２が、対応ＤＫＰ７１の検証を行う。例えば、対応ＤＫＰ７１の有効期限が切れていないかの検証（以下「第１４の検証」とも呼ぶ）、対応ＤＫＰ７１の公開鍵証明書８０と対応ＤＫＰ７１に対応するデータパッケージ６０（以下「対応データパッケージ６０」とも呼ぶ）の公開鍵証明書６７とが同一であるかの検証（以下「第１５の検証」とも呼ぶ）、公開鍵証明書８０を用いた対応ＤＫＰ７１のデジタル署名７９の検証（以下「第１６の検証」とも呼ぶ）を行い、第１４〜第１６の検証に成功したと判定した場合に、対応ＤＫＰ７１の検証に成功したと判定する。第１５の検証により、対応ＤＫＰ７１を作成したデータ提供者端末２（図１参照）と対応データパッケージ６０を作成したデータ提供者端末２とが同一であるかを確認する。また、第６の検証により、対応ＤＫＰ７１が改ざんされていないかを確認し、対応ＰＫＰ９２の完全性・正当性を確認する。そして、対応ＤＫＰ７１の検証に成功したと判定した場合には（Ｙｅｓ）、ステップＳ１２６に移行し、対応ＤＫＰ７１の検証に失敗したと判定した場合には（Ｎｏ）ステップＳ１２４に移行する。
【００５８】
ステップＳ１２４では、図２に示したＤＫＰ検証部４２が、対応ＤＫＰ７１をストレージ３２から消去した後、ステップＳ１２５に移行する。
ステップＳ１２５では、図２に示したＤＫＰ検証部４２が、受信ＰＫＰ９２をストレージ３２に記憶させた後、ステップＳ１０１に戻る。
【００５９】
一方、ステップＳ１２６では、図２に示したデータ・プログラム検証部４４が、対応データパッケージ６０及び対応プログラムパッケージ８１の検証を行う。例えば、対応データパッケージ６０のＸＭＬファイル「*hash.xml」６４のハッシュ値６５の検証（以下「第１７の検証」とも呼ぶ）、公開鍵証明書６７を用いた「*hash.xml」６４のデジタル署名の検証（以下「第１８の検証」とも呼ぶ）を行う。第１７の検証により、対応データパッケージ６０が改ざんされていないかを確認する。また、第１８の検証により、「*hash.xml」６４のハッシュ値６５が改ざんされていないかを確認する。すなわち、第１７、第１８の検証により、対応データパッケージ６０が含むデータの完全性を検証する。
【００６０】
また、例えば、対応プログラムパッケージ８１のＸＭＬファイル「*hash.xml」８５のハッシュ値８６の検証（以下「第１９の検証」とも呼ぶ）、公開鍵証明書８８を用いた「*hash.xml」８５のデジタル署名８７の検証（以下「第２０の検証」とも呼ぶ）を行う。第１９の検証により、対応プログラムパッケージ８１が改ざんされていないかを確認する。また、第２０の検証により、「*hash.xml」８５のハッシュ値８６が改ざんされていないかを確認する。すなわち、第１９、第２０の検証により、対応プログラムパッケージ８１が含んでいるプログラムの完全性を検証する。そして、第１７〜第２０の検証に成功したと判定した場合に、対応データパッケージ６０及び対応プログラムパッケージ８１の検証に成功したと判定する。対応データパッケージ６０及び対応プログラムパッケージ８１の検証に成功したと判定した場合には（Ｙｅｓ）、ステップＳ１２７に移行し、検証に失敗したと判定した場合には（Ｎｏ）、ステップＳ１０１に戻る。
【００６１】
ステップＳ１２７では、図２に示したデータ復号鍵復号部４５が、対応ＤＫＰ７１が含む暗号化されたデータ復号鍵７７をデータ処理装置５の秘密鍵１０２で復号して、データ復号鍵１０３を得る。また、プログラム復号鍵復号部４６が、受信ＰＫＰ９２が含む暗号化されたプログラム復号鍵９８をデータ処理装置５の秘密鍵１０２で復号して、プログラム復号鍵１０４を得る。暗号化されたデータ復号鍵７７及びプログラム復号鍵９８のそれぞれをデータ処理装置５の秘密鍵１０２、つまり、暗号化に用いた公開鍵に対応する秘密鍵で復号することで、データ処理装置５の認証を実行することができる。
【００６２】
続いてステップＳ１２８に移行して、図２に示したデータ復号部４７とプログラム復号部４８とが、ステップＳ１２１でバインドしたデータとプログラムとをストレージ３２に記憶させる。例えば、図２に示したデータ復号部４７が、データ記憶部３０が記憶している複数のデータパッケージのうちの、対応データパッケージ６０が含む暗号化されたデータ６１をステップＳ１２７で復号したデータ復号鍵１０３で復号し、復号したデータ１０５をバインドしたデータとしてストレージ３２に記憶させる。復号したデータ１０５をストレージ３２に記憶させることで、ステップＳ１２１で互いに同一であると判定したデータＩＤ、つまり受信ＰＫＰ９２が含む相手データのデータＩＤ９９または対応ＤＫＰ７１が含む対応するデータのデータＩＤ７５が指定するデータをストレージ３２に記憶させることができる。
【００６３】
また、例えば、図２に示したプログラム復号部４８が、プログラム記憶部３１が記憶している複数のプログラムパッケージのうちの、対応プログラムパッケージ８１が含む暗号化されたプログラム８２をステップＳ１２７で復号したプログラム復号鍵１０４で復号し、復号したプログラム１０６を、ステップＳ１２１でバインドしたプログラムとしてストレージ３２に記憶させる。復号したプログラム１０６をストレージ３２に記憶させることで、ステップＳ１２１で互いに同一であると判定したプログラムＩＤ、つまり、受信ＰＫＰ９２が含む相手プログラムのプログラムＩＤ７８または対応ＤＫＰ７１が含む対応するプログラムのプログラムＩＤ９６が指定するプログラムをストレージ３２に記憶させることができる。
【００６４】
続いてステップＳ１２９に移行して、図２に示した処理実行部４９が、ステップＳ１２１でバインドしたデータとプログラムとを用いて処理済みデータを生成する。例えば、ストレージ３２が記憶しているデータ１０５を、ストレージ３２が記憶しているプログラム１０６で処理し、処理結果を処理済みデータとする。ストレージ３２が記憶しているデータ１０５とプログラム１０６とを用いることで、ステップＳ１２１で互いに同一であると判定したデータＩＤが指定するデータを、同ステップで互いに同一であると判定したプログラムＩＤが指定するプログラムで処理する。すなわち、ステップＳ１２８、Ｓ１２９では、データ記憶部３０が記憶している複数のデータのうちの、受信ＰＫＰ９２が含む相手データのデータＩＤ９９が指定するデータ（処理対象のデータ）を、プログラム記憶部３１が記憶している複数のプログラムのうちの、受信ＰＫＰ９１が含む対応するプログラムのプログラムＩＤ９６が指定するプログラムで処理させる命令を処理実行部４９に実行させる。
【００６５】
その際、処理済みデータとしては、例えば、ストレージ３２が記憶しているデータ１０５に統計処理等を施してデータ１０５の潜在的価値を顕在化したデータや、データ１０５に含まれている個人情報を匿名化してデータ１０５の価値を限定したデータが生成される。
【００６６】
続いてステップＳ１３０に移行して、図２に示した処理済みデータ暗号化部５０が、ステップＳ１２９で生成した処理済みデータを任意の共通鍵で暗号化する。続いて、暗号化に用いた共通鍵を、対応ＤＫＰ７１に付加されている利用者端末４の公開鍵証明書の公開鍵で暗号化する。
続いてステップＳ１３１に移行して、図２に示した復号データ消去部５１が、ストレージ３２からデータ１０５とプログラム１０６とを消去する。
続いてステップＳ１３２に移行して、図２に示した復号データ消去部５１が、ストレージ３２から対応ＤＫＰ７１を消去する。
続いてステップＳ１３３に移行して、図２に示した処理済みデータ送信部５２が、ステップＳ１３０で暗号化された処理済みデータを、対応ＤＫＰ７１に付加されているホスト名に対応する利用者端末４（図１参照）に送信した後、この演算処理を終了する。暗号化された処理済みデータには、ステップＳ１３０で暗号化された共通鍵を付加する。
【００６７】
（動作その他）
次に、本発明の実施形態に係るデータ提供システム１の動作について説明する。
まず、各データ提供者は、自身のデータ提供者端末２を操作し、提供するデータ（例えば、ビッグデータ、音声アシスタントの音声データ、ＳＮＳのユーザデータ）をデータ暗号鍵で暗号化し、図１８に示すように暗号化されたデータ６１を含むデータパッケージ６０を作成してデータ処理装置５に送信する（ステップＳ２０１）。データパッケージ６０が送信されると、データ処理装置５は、送信されたデータパッケージ６０を受信してデータ記憶部３０に記憶させる（ステップＳ２０２）。また、各プログラム提供者は、自身のプログラム提供者端末３を操作し、提供するプログラム、つまりデータ処理装置５（データ記憶部３０）が記憶している複数のデータを処理可能な複数のプログラムをプログラム暗号鍵で暗号化し、暗号化されたプログラム８２を含むプログラムパッケージ８１を作成してデータ処理装置５に送信する（ステップＳ２０３）。プログラムパッケージ８１が送信されると、データ処理装置５は、送信されたプログラムパッケージ８１を受信してプログラム記憶部３１に記憶させる（ステップＳ２０４）。そして、上記フローを繰り返すことで、データ処理装置５は、データ記憶部３０に複数のデータを記憶させ、複数のデータを共有させるとともに、プログラム記憶部３１に複数のプログラムを記憶させる。
【００６８】
データ記憶部３０への複数のデータの記憶や、プログラム記憶部３１への複数のプログラムの記憶が行われた後に、動画配信事業者（データ利用者）が、視聴者に配信する作品を選定するために自身が所有する利用者端末４を操作し、作品の年齢層毎の評価等を表す処理済みデータの提供を要求する実行結果リクエストを、映画レビューサイトの運営者（データ提供者）のデータ提供者端末２に送信したとする（ステップＳ２０５）。実行結果リクエストには、利用者端末４のホスト名と公開鍵証明書とが付加される。すると、映画レビューサイトの運営者が、受信した実行結果リクエストを用いて、レビュアーの性別、年齢、作品評価等を含むビッグデータである映画レビューデータ（処理対象のデータ）と処理用のプログラムとを選定し、自身のデータ提供者端末２を操作し、選定した処理対象のデータを指定するデータＩＤ７５（対応するデータのデータＩＤ７５）と、選定した処理用のプログラムを指定するプログラムＩＤ７８（相手プログラムのプログラムＩＤ７８）とを含むＤＫＰ７１を生成してデータ処理装置５に送信する（ステップＳ２０６）。ＤＫＰ７１には、実行結果リクエストに付加されていた利用者端末４のホスト名と公開鍵証明書とが付加される。
【００６９】
ここで、処理対象のデータは、データ記憶部３０が記憶しているデータのうちの、映画レビューサイトの運営者が提供したデータのうちから選定される。また、処理用のプログラムは、プログラム記憶部３１が記憶しているプログラムのうちから選定される。すなわち、データ処理装置５には、データ記憶部３０が記憶しているデータのうちの処理対象のデータを提供したデータ提供者側（映画レビューサイトの運営者側）から、プログラム記憶部３１が記憶しているプログラムのうちの、処理対象のデータの処理用のプログラムを指定するＤＫＰ７１が送信される。また、ＰＫＰリクエストを、選定したプログラムを提供したプログラム提供者のプログラム提供者端末３に送信する（ステップＳ２０７）。
【００７０】
データ提供者端末２からＤＫＰ７１が送信されると、データ処理装置５は、送信されたＤＫＰ７１を受信し（ステップＳ２０８）、受信したＤＫＰ７１（受信ＤＫＰ７１）に対応する対応データパッケージ６０がデータ記憶部３０に記憶されていると、対応データパッケージ６０を登録済みであると判定する（ステップＳ２０９）。また、受信ＤＫＰ７１に対応するＰＫＰ９２（対応ＰＫＰ９２）をストレージ３２が記憶していないと判定し（ステップＳ２１０）、受信ＤＫＰ７１をストレージ３２に記憶させる（ステップＳ２１１）。
【００７１】
またデータ提供者端末２からＰＫＰリクエストが送信されると、プログラム提供者端末３は、ＤＫＰ７１が含む対応するデータのデータＩＤ７５及び相手プログラムのプログラムＩＤ７８と同じデータＩＤ及びプログラムＩＤを含むＰＫＰ９２をデータ処理装置５に送信する（ステップＳ２１２）。ＰＫＰ９２が送信されると、データ処理装置５は、送信されたＰＫＰ９２を受信し（ステップＳ２１３）、受信したＰＫＰ９２（受信ＰＫＰ９２）に対応するプログラムパッケージ８１（対応プログラムパッケージ８１）がプログラム記憶部３１に記憶されていると、対応プログラムパッケージ８１が登録済みと判定する（ステップＳ２１４）。また、ストレージ３２を参照し、受信ＰＫＰ９２に対応するＤＫＰ７１（対応ＤＫＰ７１）をストレージ３２が記憶していると判定する（ステップＳ２１５）。
【００７２】
また、データ処理装置５は、受信ＰＫＰ９２が含む相手データのデータＩＤ９９及び対応するプログラムのプログラムＩＤ９６と、対応ＤＫＰ７１が含む対応するデータのデータＩＤ７５及び相手プログラムのプログラムＩＤ７８との対応を検証し、検証に成功すると、対応データパッケージ６０が含むデータと、対応プログラムパッケージ８１が含むプログラムとをバインドする（ステップＳ２１６）。また、受信ＰＫＰ９２を検証し（ステップＳ２１７）、対応ＤＫＰ７１を検証する（ステップＳ２１８）。さらに、対応データパッケージ６０と対応プログラムパッケージ８１との検証に成功すると（ステップＳ２１９）、対応ＤＫＰ７１が含む暗号化されたデータ復号鍵７７と、受信ＰＫＰ９２が含む暗号化されたプログラム復号鍵９８とのそれぞれをデータ処理装置５の秘密鍵１０２で復号して、データ復号鍵１０３とプログラム復号鍵１０４とを得る（ステップＳ２２０）。
【００７３】
さらに、データ処理装置５は、復号したデータ復号鍵７７で対応データパッケージ６０が含む暗号化されたデータ６１を復号し、復号したデータ１０５をステップＳ２１６でバインドしたデータとしてストレージ３２に記憶させる。また、復号したプログラム復号鍵１０４で対応プログラムパッケージ８１が含む暗号化されたプログラム８２を復号し、復号したプログラム１０６をバインドしたプログラムとしてストレージ３２に記憶させる（ステップＳ２２１）。また、ストレージ３２が記憶しているデータ１０５をストレージ３２が記憶しているプログラム１０６で処理して処理済みデータを生成する（ステップＳ２２２）。処理済みデータとしては、例えば、データ１０５に統計処理等を施してデータ１０５の潜在的価値を顕在化して、作品の年齢層毎の評価等を表すデータが生成される。また、生成した処理済みデータを任意の共通鍵で暗号化し、暗号化に用いた共通鍵を対応ＤＫＰ７１に付加されている利用者端末４の公開鍵証明書の公開鍵で暗号化する（ステップＳ２２３）。さらに、ストレージ３２から、データ１０５、プログラム１０６及び対応ＤＫＰ７１を消去する（ステップＳ２２４）。また、データ処理装置５は、暗号化された処理済みデータを、対応ＤＫＰ７１に付加されているホスト名に対応する、動画配信事業者（データ利用者）の利用者端末４に送信する（ステップＳ２２５）。暗号化された処理済みデータには、ステップＳ２２３で暗号化された共通鍵が付加される。
【００７４】
データ処理装置５から暗号化された処理済みデータが送信されると、利用者端末４は、暗号化された処理済みデータを受信し（ステップＳ２２６）、受信した暗号化された処理済みデータに付加されている暗号化された共通鍵を、利用者端末４の公開鍵に対応する秘密鍵、つまり、自装置の公開鍵に対応する秘密鍵で復号する。また、復号した共通鍵で、暗号化された処理済みーデータを復号して、暗号化が解除された処理済みデータを取得する（ステップＳ２２７）。
【００７５】
以上説明したように、本発明の実施形態に係るデータ処理装置５は、データ記憶部３０が記憶しているデータのうちの処理対象のデータを提供したデータ提供者側から、プログラム記憶部３１が記憶しているプログラムのうちの、処理対象のデータを処理用のプログラムを指定するＤＫＰ７１を受信するファイル受信部３５と、処理対象のデータを、受信したＤＫＰ７１で指定するプログラムで処理するデータ処理部３６と、を備えるようにした。それゆえ、処理対象のデータを処理用のプログラムを指定するＤＫＰ７１をデータ提供者側から受信するため、データ提供者がデータの用途を限定できる。
【００７６】
そのため、データの効率的な利活用を可能としつつ、データがデータ提供者の意図しない用途に使われることを防止でき、データ提供者のデータの所有権を保護することが可能なデータ処理装置５を提供することができる。また、例えば、単にデータ提供者とデータ利用者との間の契約でのみデータの用途を限定する方法と異なり、データの用途を技術的に制限できるため、データの用途をより確実に限定することができる。また、データ提供者のデータの所有権が保護されるため、データ提供者にデータ処理装置５へのデータの提供を促すことができ、データ処理装置５によるデータの共有を促進させることができる。
【００７７】
また、データ処理装置５を用いてデータの共有を実現するようにしたため、例えば、データ提供者の会社内でデータを保有する方法に比べ、データの機密性や完全性を保証しつつ、比較的低いコストでデータの共有を実現することができる。さらに、データ提供者が管理等を行う必要がなく、データ提供者のヒューマンエラーを抑制することができる。
さらに、データをプログラムで処理することで、データが持つ潜在的価値を顕在化することができる。このように価値が顕在化されたデータ、つまり処理済みデータをデータ利用者に提供することで、新たな価値が創出され、豊かな未来社会の創造に繋がることが期待される。また、データ提供者は、データそのものをデータ利用者に渡さずに済み、データの所有権を維持しつつ、データが有する多様な価値の一部分のみを提供できる。さらに、データ利用者は、データがそのまま提供される方法に比べ、データを利活用しやすい。
【００７８】
ちなみに、例えば、データの拡張子でプログラムを指定する従来の方法によれば、１つのデータに対し１つのプログラムしか指定できない。それゆえ、データから得たい処理結果、つまり、顕在化したい潜在的価値にあわせてプログラムを指定することができない。
これに対し、本発明の実施形態に係るデータ処理装置５は、ＤＫＰ７１が含むプログラムＩＤ７８でプログラムを指定できるため、１つのデータに対し任意のプログラムを指定できる。それゆえ、顕在化したい潜在的価値にあわせてプログラムを指定できる。
【００７９】
また、本発明の実施形態に係るデータ処理装置５では、ＤＫＰ７１は、処理対象のデータを指定するデータＩＤ７５（対応するデータのデータＩＤ７５）と、処理対象のデータを処理するプログラムを指定するプログラムＩＤ７８（相手プログラムのプログラムＩＤ７８）とを含み、データ処理部３６は、データ記憶部３０が記憶している複数のデータのうちの、ファイル受信部３５で受信したＤＫＰ７１（受信ＤＫＰ７１）が含むデータＩＤ７５が指定するデータを、プログラム記憶部３１が記憶している複数のプログラムのうちの、受信ＤＫＰ７１が含むプログラムＩＤ７８が指定するプログラムで処理するようにした。それゆえ、処理対象のデータと、処理用のプログラムとを比較的容易に選択できる。
【００８０】
また、本発明の実施形態に係るデータ処理装置５では、複数のデータそれぞれは、データ暗号化鍵で暗号化されており、ＤＫＰ７１は、暗号化されたデータ６１を復号可能なデータ復号鍵７７を含むようにした。また、処理実行部４９は、データ記憶部３０が記憶している複数のデータのうち、受信ＤＫＰ７１が含むデータＩＤ７５が指定するデータを、受信ＤＫＰ７１が含むデータ復号鍵７７で復号するデータ復号部４７を備えるようにした。それゆえ、データをより確実に保護でき、データ処理装置５からのデータの流出をより確実に防止できる。
【００８１】
さらに、本発明の実施形態に係るデータ処理装置５では、データ暗号化鍵及びデータ復号鍵７７は、データ提供者の共通鍵とした。それゆえ、例えば、公開鍵を用いる方法に比べ、計算量を低減でき、暗号化及び復号に要する時間を短縮することができる。
また、本発明の実施形態に係るデータ処理装置５では、データ復号鍵７７は、データ処理装置５の公開鍵で暗号化されており、処理実行部４９は、データ復号鍵を公開鍵に対応する秘密鍵で復号するデータ復号鍵復号部４５を備えている。それゆえ、データの復号や処理等を行うデータ処理装置５の認証を行うことができる。
【００８２】
さらに、本発明の実施形態に係るデータ処理装置５は、プログラム記憶部３１が記憶しているプログラムのうちの処理用のプログラムを提供したプログラム提供者側から、データ記憶部が記憶しているデータのうちの、処理用のプログラムで処理するデータを指定するＰＫＰ９２をプログラム提供者側から受信するファイル受信部３５と、処理用のプログラムで、受信したＰＫＰ９２で指定するデータを処理するデータ処理部３６とを備えるようにした。それゆえ、処理用のプログラムで処理するデータを指定するＰＫＰ９２をプログラム提供者側から受信するため、プログラム提供者がプログラムの用途を限定できる。そのため、データの効率的な利活用を可能としつつ、プログラムがプログラム提供者の意図しない用途に使われることを防止でき、プログラム提供者のプログラムの所有権を保護することが可能なデータ処理装置５を提供できる。また、プログラム提供者のプログラムの所有権が保護されるため、プログラム提供者からデータ処理装置５へのプログラムの提供を促すことができる。その結果、データ処理装置５によるデータの共有を促進できる。
【００８３】
また、本発明の実施形態に係るデータ処理装置５では、ファイル受信部３５は、処理用のプログラムを指定するプログラムＩＤ９６とプログラムで処理するデータを指定するデータＩＤ９９とを含むＰＫＰ９２をプログラム提供者側から受信する。また、処理実行部４９は、ＤＫＰ７１が含むデータＩＤ７５とＰＫＰ９２が含むデータＩＤ９９とが互いに同一であり、且つＤＫＰ７１が含むプログラムＩＤ７８とＰＫＰ９２が含むプログラムＩＤ９６とが互いに同一であるかを判定する対応検証部４１と、対応検証部４１でデータＩＤが互いに同一であり、且つプログラムＩＤが互いに同一であると判定した場合には、互いに同一であると判定したデータＩＤが指定するデータを、互いに同一であると判定したプログラムＩＤが指定するプログラムで処理する処理実行部４９とを備えるようにした。
【００８４】
それゆえ、例えば、データ提供者が、自身が提供したデータを他者が提供したプログラムで処理する場合には、プログラム提供者にＰＫＰ９２を送信させる必要がある。そのため、プログラム提供者の許可なくプログラムが使用されることを防止でき、プログラム提供者のプログラムの所有権をより確実に保護できる。また、例えば、プログラム提供者が、他者が提供したデータを自身のプログラムで処理する場合には、データ提供者にＤＫＰ７１を送信させる必要がある。そのため、データ提供者の許可なくデータが使用されることを防止でき、データ提供者のデータの所有権をより確実に保護することができる。
【００８５】
また、本発明の実施形態に係るデータ処理装置５では、複数のプログラムそれぞれは、プログラム暗号化鍵で暗号化されており、ＰＫＰ９２は、暗号化されたプログラム８２を復号可能なプログラム復号鍵９８を含むようにした。また、処理実行部４９は、プログラム記憶部３１が記憶している複数のプログラムのうち、受信ＰＫＰ９２が含むプログラムＩＤ９６が指定するプログラムを、受信ＰＫＰ９２が含むプログラム復号鍵９８で復号するプログラム復号部４８を備えるようにした。それゆえ、プログラムをより確実に保護でき、データ処理装置５からのプログラム（アルゴリズム）の流出をより確実に防止できる。
【００８６】
さらに、本発明の実施形態に係るデータ処理装置５では、プログラム暗号化鍵及びプログラム復号鍵９８は、プログラム提供者の共通鍵とした。それゆえ、例えば、公開鍵を用いる方法に比べ、計算量を低減でき、暗号化及び復号に要する時間を短縮できる。
また、本発明の実施形態に係るデータ処理装置５では、プログラム復号鍵９８は、データ処理装置５の公開鍵で暗号化されており、処理実行部４９は、プログラム復号鍵９８を公開鍵に対応する秘密鍵で復号するプログラム復号鍵復号部４６を備えるようにした。それゆえ、処理を行うデータ処理装置５の認証を行うことができる。
【００８７】
また、本発明の実施形態に係るデータ処理装置５では、データ復号部４７で復号したデータ１０５及びプログラム復号部４８で復号したプログラム１０６を記憶するストレージ３２と、処理実行部４９で処理を終えた後に、ストレージ３２から復号したデータ１０５及びプログラム１０６を消去する復号データ消去部５１とを備えるようにした。それゆえ、データ及びプログラムの盗難を防止でき、データ及びプログラムをより確実に保護できる。
【００８８】
さらに、本発明の実施形態に係るデータ処理装置５では、データ処理部３６で行われた処理の処理結果である処理済みデータを、共通鍵で暗号化し、その共通鍵を、実行結果リクエストを送信した利用者端末４の公開鍵、つまり、処理済みデータの提供を要求する利用者端末４の公開鍵で暗号化するようにした。それゆえ、例えば、処理済みデータの暗号化に公開鍵を用いる方法に比べ、計算量を低減でき、暗号化及び復号に要する時間を短縮することができる。また、実行結果リクエストを送信したデータ利用者以外は処理済みデータを復号できないので、処理済みデータの盗難を防止することができる。
【００８９】
また、本発明の実施形態に係るデータ処理装置５では、プログラムは、データの潜在的価値を顕在化するプログラム、又はデータの価値を限定するプログラムとした。それゆえ、データが有する多様な価値の一部分を処理結果（処理済みデータ）として取得できる。
【００９０】
（変形例）
（１）なお、本発明の実施形態に係るデータ提供システム１では、処理対象のデータとして、ビッグデータ、音声アシスタントの音声データ、ＳＮＳのユーザデータを用いる例を示したが、他の構成を採用することもできる。例えば、監視カメラの映像データを用いる構成としてもよい。監視カメラの映像データを用いる場合、映像データから統計情報を生成する統計情報生成用プログラム（データの潜在的価値を顕在化するプログラム）を指定するプログラムＩＤ７８をＤＫＰ７１に含ませ、ＤＫＰ７１が含むプログラムＩＤ７８が指定する統計情報生成用プログラムで映像データを処理してもよい。また、映像データから人物を抽出する等の画像処理を行う画像処理用プログラム（データの潜在的価値を顕在化するプログラム）を指定するプログラムＩＤ７８をＤＫＰ７１に含ませ、ＤＫＰ７１が含むプログラムＩＤ７８が指定する画像処理用プログラムで映像データを処理してもよい。
【００９１】
（２）また、例えば、処理対象のデータとして、音声アシスタントの音声データを用いる構成とした場合、プライバシー保護のため、音声データに含まれる個人情報を匿名化する匿名化用プログラム（データの価値を限定するプログラム）を指定するプログラムＩＤ７８をＤＫＰ７１に含ませて、ＤＫＰ７１が含むプログラムＩＤ７８が指定する匿名化用プログラムで音声データを処理するようにしてもよい。また、例えば、処理対象のデータとして、ＳＮＳのユーザデータ（例えば、プロフィールのデータ、ユーザの趣味のデータ、嗜好のデータ）を用いる構成とした場合、プライバシー保護のため、ユーザデータに含まれる個人情報を匿名化する匿名化用プログラム（データの価値を限定するプログラム）を指定するプログラムＩＤ７８をＤＫＰ７１に含ませ、ＤＫＰ７１が含むプログラムＩＤ７８が指定する匿名化用プログラムでユーザデータを処理するようにしてもよい。
個人情報を匿名化した処理済みデータを提供する場合、提供された処理済みデータから個人情報が漏洩する可能性があるが、データやプログラムの提供者が明確であるため、個人情報の漏洩の責任の所在を明確化できる。また、第三者機関が匿名化プログラムを認可する構成とすることで、従来曖昧であった、匿名化の基準を明確化することができる。
【００９２】
（３）また、例えば、処理対象のデータとして、自動車で収集される位置情報やセンサ情報等の多数の情報を含む自動車データを用いる構成とした場合、自動車データに含まれる一部の情報のみを抽出する情報抽出プログラム（データの価値を限定するプログラム）を指定するプログラムＩＤ７８をＤＫＰ７１に含ませて、ＤＫＰ７１が含むプログラムＩＤ７８が指定する情報抽出プログラムで自動車データを処理するようにしてもよい。
（４）さらに、本発明の実施形態に係るデータ提供システム１では、プログラムを用いて、映画レビューデータから処理済み映画レビューデータを生成する例、つまり元のデータの加工データを生成する例を示したが、他の構成を採用することもできる。例えば、元のデータを加工せず、元のデータを閲覧可能なアプリケーションを生成する構成としてもよい。
【００９３】
（５）また、本発明の実施形態に係るデータ提供システム１では、データ記憶部３０に暗号化されたデータ６１を記憶させる例を示したが、他の構成を採用することもできる。例えば、暗号化されていないデータを記憶させる構成としてもよい。暗号化されていないデータを記憶させる場合、ＤＫＰ７１からデータ復号鍵７７を除いたファイルを用いてもよい。
さらに、プログラム記憶部３１に暗号化されたプログラム８２を記憶させる例を示したが、他の構成を採用することもできる。例えば、暗号化されていないプログラムを記憶させる構成としてもよい。暗号化されていないプログラムを記憶させる場合、ＰＫＰ９２に代えて、ＰＫＰ９２からプログラム復号鍵９８を除いたファイルを用いてもよい。
【００９４】
（６）また、本発明の実施形態に係るデータ提供システム１では、データ提供者のデータ提供者端末２が、利用者端末４のホスト名と公開鍵証明書とをＤＫＰ７１に付加することで、処理済みデータの提供先となるデータ利用者を指定する例を示したが、他の構成を採用することもできる。例えば、プログラム提供者のプログラム提供者端末３がデータ利用者を指定する構成としてもよいし、データ提供者のデータ提供者端末２とプログラム提供者のプログラム提供者端末３との両方がデータ利用者を指定する構成としてもよい。
【００９５】
例えば、プログラム提供者がデータ利用者を指定する場合には、データ利用者のデータ提供者端末２が、プログラム提供者のプログラム提供者端末３に実行リクエストを送信するとともに、この実行リクエストに自身（データ提供者端末２）の公開鍵証明書を付加する。そして、プログラム提供者のプログラム提供者端末３は、利用者端末４のホスト名と公開鍵証明書とをＰＫＰ９２に付加してデータ処理装置５に送信する。データ処理装置５は、処理対象のデータに処理を行い、処理済みデータを共通鍵で暗号化した後、暗号化に用いた共通鍵を、ＰＫＰ９２に付加されている利用者端末４の公開鍵証明書の公開鍵で暗号化する。そして、データ処理装置５は、暗号化した処理済みデータに暗号化した共通鍵を付加して、ＰＫＰ９２に付加されているホスト名の利用者端末４に送信する。
【００９６】
一方、データ提供者とプログラム提供者との両方がデータ利用者を指定する場合には、データ利用者のデータ利用者端末４が、データ提供者のデータ提供者端末２とプログラム提供者のプログラム提供者端末３との両方に実行リクエストを送信するとともに、この実行リクエストに自身（データ提供者端末２）の公開鍵証明書を送付する。そして、データ提供者のデータ提供者端末２とプログラム提供者のプログラム提供者端末３とは、利用者端末４のホスト名と公開鍵証明書とのそれぞれをＤＫＰ７１、ＰＫＰ９２に付加してデータ処理装置５に送信する。データ処理装置５は、処理対象のデータに処理を行い、処理済みデータを共通鍵で暗号化した後、ＤＫＰ７１に付加されている利用者端末４の公開鍵証明書と、ＰＫＰに付加されている利用者端末４の公開鍵証明書とが一致するか否かを判定する。一致すると判定した場合、ＤＫＰ７１、ＰＫＰ９２のどちらかに付加されている利用者端末４の公開鍵証明書の公開鍵で、処理済みデータの暗号化に用いた共通鍵を暗号化する。そして、データ処理装置５は、暗号化した処理済みデータに暗号化した共通鍵を付加して、ＤＫＰ７１、ＰＫＰ９２に付加されているホスト名の利用者端末４に送信する。
【００９７】
（７）また、本発明の実施形態に係るデータ提供システム１では、データのファイルサイズが大きくなると、ファイルサイズに応じてデータ処理装置５での処理時間が線形に増加してしまう。ファイルサイズに依存して処理時間が長くなる処理としては、例えば、データパッケージ６０のＸＭＬファイル「*hash.xml」６４が含むハッシュ値６５の検証、暗号化されたデータ６１の復号、データ１０５からの処理済みデータの生成が挙げられる。
この問題を解決するために、例えば、データパッケージ６０のＸＭＬファイル「*hash.xml」６４が含むハッシュ値６５の検証、暗号化されたデータ６１の復号、データ１０５からの処理済みデータの生成の３つの処理をデータ処理装置５内で分散処理する手法を用いるようにしてもよい。つまり、処理対象のデータを複数のブロックに分割し、分割したブロックそれぞれを互いに異なるスレッドで処理し、最後に処理結果を結合する手法である。例えば、１［GB］のデータを処理する際に、データを１００［MB］単位で１０個に分割し、分割したデータそれぞれを同時に互いに異なるスレッドで処理し、最後に各処理結果を順番に結合して、処理済みデータを生成する。このようにすれば、１［GB］のデータを直接処理するよりも短い時間で、処理済みデータを得ることができる。
【００９８】
この手法の応用例として、ビッグデータのようなファイルサイズの大きいデータから必要な部分だけを抽出して処理することで、処理時間の短縮という効果が期待される。一般に、データ（ファイル）を利用する際には、利用する場所に局所性が生じる。つまり、対象データを１つの巨大なバイト列と考えたときに、利用する場所はバイト列の中の近い部分に集中することが多い。それゆえ、巨大なデータを全て復号するのではなく、必要な部分だけを復号し、複合した部分のみに処理を行うことで、処理時間の短縮を実現できる。
【符号の説明】
【００９９】
１…データ提供システム、２…データ提供者端末、３…プログラム提供者端末、４…利用者端末、５…データ処理装置（アクティベーションサーバ）、６…通信網、７…通信部、８…プロセッサ、９…データパッケージ生成部、１０…データパッケージ送信部、１１…リクエスト受信部、１２…ＤＫＰ生成部、１３…ＤＫＰ送信部、１４…リクエスト送信部、１５…通信部、１６…プロセッサ、１７…プログラムパッケージ生成部、１８…プログラムパッケージ送信部、１９…リクエスト受信部、２０…ＰＫＰ生成部、２１…ＰＫＰ送信部、２２…通信部、２３…プロセッサ、２４…リクエスト送信部、２５…処理済みデータ受信部、２６…処理済みデータ復号部、２７…通信部、２８…記憶装置、２９…プロセッサ、３０…データ記憶部、３１…プログラム記憶部、３２…ストレージ、３３…データパッケージ受信部、３４…プログラムパッケージ受信部、３５…ファイル受信部、３６…データ処理部、３７…データパッケージ登録判定部、３８…プログラムパッケージ登録判定部、３９…ＰＫＰ記憶状態判定部、４０…ＤＫＰ記憶状態判定部、４１…対応検証部、４２…ＤＫＰ検証部、４３…ＰＫＰ検証部、４４…データ・プログラム検証部、４５…データ復号鍵復号部、４６…プログラム復号鍵復号部、４７…データ復号部、４８…プログラム復号部、４９…処理実行部、５０…処理済みデータ暗号化部、５１…復号データ消去部、５２…処理済みデータ送信部、６０…データパッケージ、６１…暗号化されたデータ、６２…ASSETMAP.xml、６３…*info.xml、６４…*hash.xml、６５…ハッシュ値、６６…デジタル署名、６７…公開鍵証明書、６８、６９、７０…データＩＤ、７１…ＤＫＰ、７２…ＤＫＰのＵＵＩＤ、７３…ＤＫＰの発行日時、７４…ＤＫＰの有効期限、７５…対応するデータのデータＩＤ、７６…対応するデータのファイル名、７７…暗号化されたデータ復号鍵、７８…相手プログラムのプログラムＩＤ、７９…デジタル署名、８０…公開鍵証明書、８１…プログラムパッケージ、８２…暗号化されたプログラム、８３…ASSETMAP.xml、８４…*info.xml、８５…*hash.xml、８６…ハッシュ値、８７…デジタル署名、８８…公開鍵証明書、８９、９０、９１…プログラムＩＤ、９２…ＰＫＰ、９３ＰＫＰのＵＵＩＤ、９４…ＰＫＰの発行日時、９５…ＰＫＰの有効期限、９６…対応するプログラムのプログラムＩＤ、９７…対応するプログラムのファイル名、９８…暗号化されたプログラム復号鍵、９９…相手データのデータＩＤ、１００…デジタル署名、１０１…公開鍵証明書、１０２…秘密鍵、１０３…データ復号鍵、１０４…プログラム復号鍵、１０５…データ、１０６…プログラム
【図１】
2019047334.tif 000003
【図２】
2019047334.tif 000004
【図３】
2019047334.tif 000005
【図４】
2019047334.tif 000006
【図５】
2019047334.tif 000007
【図６】
2019047334.tif 000008
【図７】
2019047334.tif 000009
【図８】
2019047334.tif 000010
【図９】
2019047334.tif 000011
【図１０】
2019047334.tif 000012
【図１１】
2019047334.tif 000013
【図１２】
2019047334.tif 000014
【図１３】
2019047334.tif 000015
【図１４】
2019047334.tif 000016
【図１５】
2019047334.tif 000017
【図１６】
2019047334.tif 000018
【図１７】
2019047334.tif 000019
【図１８】
2019047334.tif 000020