データ処理装置、データ処理方法及びプログラム
【課題】データの保護とデータの加工やアクセス制限の緩和を柔軟且安全に可能とするデータ処理装置を提供すること。
【解決手段】パブリッシュ・サブスクライブ・モデルを利用したPub−Subブローカ13は、入出力データに係る所有者タグの検証を行うPub−Sub検証部16に保護される。自由FF実行環境14は、入出力データの所有者タグの設定を行う自由FF所有者タグ設定部17に保護される。特権FF実行環境15は、特権フロー関数に付与された署名の検証を行う特権FF署名検証部18に保護される。ユーザは、自由フロー関数を用いることによって、チャネルを流れるデータに対して、所望の処理を施すことができる。ただし、データと所有者タグが適合する場合にのみ、そのデータを利用可能にする。また、権限を持つ者の署名を必要とする特権フロー関数によって、所有者タグを、そのユーザに適合するように書き換えることができるようにする。
【解決手段】パブリッシュ・サブスクライブ・モデルを利用したPub−Subブローカ13は、入出力データに係る所有者タグの検証を行うPub−Sub検証部16に保護される。自由FF実行環境14は、入出力データの所有者タグの設定を行う自由FF所有者タグ設定部17に保護される。特権FF実行環境15は、特権フロー関数に付与された署名の検証を行う特権FF署名検証部18に保護される。ユーザは、自由フロー関数を用いることによって、チャネルを流れるデータに対して、所望の処理を施すことができる。ただし、データと所有者タグが適合する場合にのみ、そのデータを利用可能にする。また、権限を持つ者の署名を必要とする特権フロー関数によって、所有者タグを、そのユーザに適合するように書き換えることができるようにする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置、データ処理方法及びプログラムに関する。
【背景技術】
【0002】
従来のパブリッシュ・サブスクライブ・システムの動的アクセス制御については、例えば特許文献1に、コンテンツの発行者(パブリッシャ)から購読者(サブスクライバ)に至るまでのパブリッシュ・サブスクライブ・ネットワーク(Pub−Subネットワーク)における動的アクセス制御機構が開示されている。このアクセス制御では、アクセス制御ルールが、Pub−Subシステムにおける購読者プリンシパルとアクセス形態、フィルタの3つ組によって記述される。例えば、プリンシパル「John Doe」に株価情報を購読依頼することを認めるルールは、[John Doe、購読依頼、タイプ=‘'株価’]のように記述される。
【0003】
この技術においては、以下の2つの問題がある。
(1)コンテンツフィルタを自由に記述することができない(アクセス制限がコンテンツフィルタに強く依存しているため、規定されたコンテンツフィルタ以外のコンテンツフィルタを利用することができない)。
【0004】
(2)データの匿名化等、加工によるアクセス権限の緩和を実現することができない。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−287148公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
従来、データの保護と、データの加工やアクセス制限の緩和を、柔軟かつ安全に可能とする方法が知られていなかった。
【0007】
本発明は、上記事情を考慮してなされたもので、データの保護と、データの加工やアクセス制限の緩和を、柔軟かつ安全に可能とするデータ処理装置、データ処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、送信装置からデータを受信し、該データを処理して受信装置へ送信することの可能なデータ処理装置であって、前記送信装置から前記データを受信するのに先立って、前記送信装置に係る所有者を示す所有者情報が、前記データ処理装置に係る所有者を示す所有者情報に適合することを検証し、前記受信装置へ前記データを送信するのに先立って、前記受信装置に係る所有者を示す所有者情報が、前記データに係る所有者を示す所有者情報に適合することを検証する第1の検証部と、前記送信装置に係る前記検証に成功した場合にのみ、前記送信装置から前記データを受信することが可能であり、前記受信装置に係る前記検証に成功した場合にのみ、前記受信装置へ前記データを送信することが可能である中継部と、データ処理の内容を任意に設定可能な自由フロー関数を実行する第1の実行部と、前記自由フロー関数が実行された場合に該自由フロー関数が出力するデータに係る所有者を示す所有者情報を、該自由フロー関数が入力するデータに係る所有者を示す所有者情報に基づいて設定する設定部と、データ処理の内容を任意に設定可能な特権フロー関数の正当性を、該特権フロー関数内に記載されている第1の情報に基づいて検証する第2の検証部と、前記特権フロー関数に係る前記検証に成功した場合にのみ、前記特権フロー関数を実行することが可能であるとともに、該特権フロー関数が実行された場合に該特権フロー関数が出力するデータに係る所有者を示す所有者情報を、該特権フロー関数内に記載されている第2の情報に基づいて設定する第2の実行部とを備えたことを特徴とする。
【発明の効果】
【0009】
本発明によれば、データの保護と、データの加工やアクセス制限の緩和を、柔軟かつ安全に実現することが可能になる。
【図面の簡単な説明】
【0010】
【図1】本発明の一実施形態に係る情報処理システムの構成例を示す図である。
【図2】Pub−Subブローカ及びPub−Sub検証部の内部構成例を示す図である。
【図3】パブリッシュ及びサブスクライブについて説明するための図である。
【図4】所有者タグセットについて説明するための図である。
【図5】所有者タグセットを所有者タグが充足するかどうかを検証するアルゴリズムの一例を示す図である。
【図6】特権フロー関数の定義テーブルの一例を示す図である。
【図7】外部からのサブスクライブ要求に対する検証のアルゴリズムの一例を示す図である。
【図8】自由FF実行環境における出力チャネルの所有者タグのセットの設定のアルゴリズムの一例を示す図である。
【図9】パブリッシュ受付時の検証のアルゴリズムの一例を示す図である。
【図10】同実施形態の情報処理システムの要求配置の動作手順の一例を示すフローチャートである。
【図11】同実施形態の情報処理システムのパブリッシュ受け付け、要求配置及びサブスクライブの際に検証を行う場合の動作手順の一例を示すフローチャートである。
【図12】同実施形態の要求処理装置のパブリッシュ時の動作手順の一例を示すフローチャートである。
【図13】用紙残量閾値判定関数の擬似コードの一例を示す図である。
【図14】本実施形態の動作の一例について説明するための図である。
【図15】本実施形態の動作の一例について説明するための図である。
【図16】本実施形態の動作の一例について説明するための図である。
【図17】本実施形態の動作の一例について説明するための図である。
【図18】本実施形態の動作の一例について説明するための図である。
【図19】本実施形態の動作の一例について説明するための図である。
【図20】本実施形態の動作の一例について説明するための図である。
【発明を実施するための最良の形態】
【0011】
以下、図面を参照しながら本発明の実施形態について説明する。
【0012】
図1に、本発明の一実施形態に係る情報処理システムの構成例を示す。
【0013】
本実施形態の情報処理システムは、パブリッシュ・サブスクライブ・モデル(Publish−Subscribeモデル)を前提とする場合を例にとって説明する。
【0014】
また、以下において具体例を用いて説明する場合には、本実施形態の情報処理システムが、テナントが入居するビル内に設けられ、ビル内の設備等の監視・制御等に利用される場合を例にとって説明する。
【0015】
図1において、1は要求処理装置(データ処理装置)、2はユーザ装置、3は要求配置装置、4はフロー関数コードレポジトリ(FFコードレポジトリ)、5はパブリッシャとなる作用装置(送信装置)、6はサブスクライバとなる作用装置(受信装置)である。
【0016】
各装置は、例えば、図示しないネットワークを介して通信可能である。
【0017】
図1において、各装置は1台ずつ示されているが、システム中に各装置がそれぞれ任意台数ずつ存在して構わない。
【0018】
個々の作用装置は、バブリッシャとしてのみ動作可能であっても良いし、サブスクライバとしてのみ動作可能であっても良いし、バブリッシャとサブスクライバの両方として動作可能であっても良い。
【0019】
各装置の概要を下記に示す。
【0020】
作用装置5は、要求処理装置1へデータを送信する装置である。
【0021】
作用装置6は、要求処理装置1からデータを受信する装置である。
【0022】
個々の作用装置5,6は、一意な識別情報(ID)を持ち識別可能であるとする。
【0023】
ユーザ装置2は、利用者により記述されたユーザ要求を、要求配置装置3に送出する装置である。
【0024】
要求配置装置3は、ユーザ装置2から受けた要求を、要求処理装置1に配置する装置である。
【0025】
要求処理装置1は、1又は複数の作用装置5からデータを受信し、受信したデータ又はこれを加工したものを、作用装置6へ送信する装置である。また、ユーザ装置2と作用装置5,6との間の仲立ちを行う装置である。
【0026】
FFコードレポジトリ4は、フロー関数コード(FFコード)を蓄積するデータベースである。
【0027】
図1に示されるように、要求処理装置1は、要求受付部11、フロー関数コードロード部(FFコードロード部)12、パブリッシュ・サブスクライブ・ブローカ(以下、Pub−Subブローカ)(中継部)13、自由フロー関数実行環境(以下、自由FF実行環境)(第1の実行部)14、特権フロー関数実行環境(以下、特権FF実行環境)(第2の実行部)15、Pub−Subブローカ13に付随するパブリッシュ・サブスクライブ検証部(以下、Pub−Sub検証部)(第1の検証部)16、自由FF実行環境14に付随する自由フロー関数所有者タグ設定部(以下、自由FF所有者タグ設定部)(設定部)17、特権FF実行環境15に付随する特権フロー関数署名検証部(以下、特権FF署名検証部)(第2の検証部)18を備えている。
【0028】
図2に、Pub−Subブローカ13とPub−Sub検証部16の内部構成例を示す。図2に示されるように、Pub−Subブローカ13は、パブリッシュ・サブスクライブ処理部131、送受信インタフェース部132、チャネル情報記憶部133を含む。
【0029】
本実施形態では、パブリッシャである作用装置5と、サブスクライバである作用装置6と、(本実施形態においてサブスクライバ・パブリッシャとなる)自由フロー関数を実行する自由フロー関数実行環境14と、(本実施形態においてサブスクライバ・パブリッシャとなる)特権フロー関数を実行する特権フロー関数実行環境15との間のデータの受け渡しは、仮想的な通信路であるチャネルを介して行われる。パブリッシュ・サブスクライブ処理部131は、それらの間でデータを中継するための処理を行う。チャネル情報記憶部133は、各チャネルに関する情報(例えば、どの送信者がそのチャネルにデータを流し、どの受信者がそのチャネルからデータを受けるか、などの情報)を記憶する。送受信インタフェース部132は、外部の装置と通信を行うためのものであり、外部の装置である作用装置5,6との間のデータの受け渡しには、送受信インタフェース部132を介した通信が必要となる。これに対して、自由フロー関数実行環境14又は特権フロー関数実行環境15との間のデータの受け渡しは、チャネルを介するだけで可能である。なお、送受信インタフェース部132は、Pub−Sub検証部16の外部にあっても構わない。
【0030】
また、図2に示されるように、Pub−Sub検証部16は、パブリッシャである作用装置5の検証を行うパブリッシャ検証部161と、パブリッシャである作用装置6の検証を行う、サブスクライバ検証部162とを含む。
【0031】
以下、本実施形態について詳しく説明する。
【0032】
まず、チャネル、パブリッシュ、サブスクライブ、Pub−Subブローカ13について説明する。
【0033】
「チャネル」は、パブリッシュ・サブスクライブ・モデルに基づく仮想的な通信路に相当するものである。
【0034】
パブリッシュ・サブスクライブ・モデルでは、通常の要求−応答モデルと異なり、所望するデータが流れる特定のチャネルに対して、データ送付先(データの受信側)となるサブスクライバの情報を事前に登録しておき、データの送信側となるパブリッシャが、それぞれのタイミングで、データを当該特定のチャネルに送出すると、当該特定のチャネルにデータが流れたタイミングで、そのデータが、当該特定のチャネルに対して事前に登録された(1又は複数の)サブスクライバに送信される。パブリッシュ・サブスクライブ・モデルにおいて、パブリッシャとサブスクライバとの通信の仲立・中継をするのがいわゆるブローカと呼ばれるサーバである。
【0035】
本実施形態では、要求処理装置1のPub−Subブローカ13が、パブリッシュ・サブスクライブ・モデルにおけるブローカの役割に相当する役割を担う。すなわち、Pub−Subブローカ13は、パブリッシャとなる作用装置5とサブスクライバとなる作用装置6との通信の仲立・中継をする。
【0036】
以下、チャネルに対してデータを送出することを「パブリッシュ」、特定のチャネルからデータを受信するために、受信側の情報を当該特定のチャネルに対して登録することを「サブスクライブ」と呼ぶものとする。
【0037】
ところで、本実施形態では、要求処理装置1において、作用装置5から受信したデータを、後述するフロー関数により処理した後に、作用装置6へ送信することができる。このために、本実施形態では、フロー関数についても、データの受け渡しを、チャネルを介して行うものとしている。すなわち、本実施形態では、データの生成者である作用装置5と、データの需要者である作用装置6と、フロー関数(自由フロー関数、特権フロー関数)とが、チャネルを経由して、データを交換する。
【0038】
ここで、フロー関数について説明する。
【0039】
「フロー関数」は、特定の1又は複数のチャネルをサブスクライブし、該チャネルに係るデータを入力として、所定のタイミングで(例えば、サブスクライブ先のチャネルへ、データが出力されたイベントを契機に)、所定の処理(所定の演算及び又は判断など)を行い、その結果得られるデータを、必要に応じて、特定の1又は複数のチャネルに対してパブリッシュする関数である。なお、所定の処理の結果によっては、パブリッシュを行わない場合もある。フロー関数は、基本的にはどのような処理も可能であり、例えば、チャネルの情報を加工し、センサネットワークから有益な情報を抽出し、あるいは、その情報から環境に作用するアクチュエータを制御したりすることも可能である。フロー関数の実体は、要求処理装置1上に配置される。
【0040】
本実施形態では、フロー関数には、「自由フロー関数」と「特権フロー関数」とがある。自由フロー関数については、任意の利用者(例えば、施設管理者、施設利用者や、第三者)が、その処理内容を自由に記述することができる。これに対して特権フロー関数については、特権を有する者(例えば、施設管理者)のみが処理内容を規定することができる。言い換えると、特権を有する者により規定された処理内容だけが実行可能である(特権を有する者以外の者が所望の特権フロー関数を実行させたい場合には、例えば、特権を有する者に、その所望の特権フロー関数を用意してもらう必要がある)。なお、フロー関数の記述には、例えばJava(登録商標)等のプログラミング言語などが利用可能である。
【0041】
自由フロー関数は、任意のデータ入力チャネルに対して実行することができる。すなわち、作用装置5から受信されたデータと、他の自由フロー関数が出力したデータと、特権フロー関数が出力したデータとのいずれを入力とすることも可能である。また、入力するチャネルの個数、組み合わせは任意である。
【0042】
同様に、特権フロー関数は、任意のデータ入力チャネルに対して実行することができる。すなわち、作用装置5から受信されたデータと、自由フロー関数が出力したデータと、他の特権フロー関数が出力したデータとのいずれを入力とすることも可能である。また、入力するチャネルの個数、組み合わせは任意である。
【0043】
さて、本実施形態では、図3(a)に例示するように、要求処理装置1において、パブリッシャPから受信したデータを、チャネルXを介して、そのままサブスクライバSに送信することも可能であるが、そのフローの途中に、1又は複数(任意数)のフロー関数(自由フロー関数及び又は特権フロー関数)を挿入して、所望の機能を実現することが可能である。なお、図3において、実線は、データの流れを、一点鎖線は、パブリッシュを、破線は、サブスクライブをそれぞれ示す。
【0044】
例えば、(1)自由フロー関数F11(又は、特権フロー関数F21)がチャネルXにサブスクライブし、作用装置SがチャネルYにサブスクライブしておき、作用装置PからのデータをチャネルXに流し、自由フロー関数F11(又は、特権フロー関数F21)が、チャネルXからのデータを処理してその結果となるデータをチャネルYに流し、チャネルYのデータを作用装置Sに送信する処理フロー(図3(b)、図15,16参照)、
(2)自由フロー関数F11がチャネルXにサブスクライブし、特権フロー関数F21がチャネルYにサブスクライブし、作用装置SがチャネルZにサブスクライブしておき、作用装置PからのデータをチャネルXに流し、自由フロー関数F11が、チャネルXからのデータを処理してその結果となるデータをチャネルYに流し、特権フロー関数F21が、チャネルYからのデータを処理してその結果となるデータをチャネルZに流し、チャネルZのデータを作用装置Sに送信する処理フロー(図3(c)、図1参照)、
(3)特権フロー関数F21がチャネルXにサブスクライブし、自由フロー関数F11がチャネルYにサブスクライブし、作用装置SがチャネルZにサブスクライブしておき、作用装置PからのデータをチャネルXに流し、特権フロー関数F21が、チャネルXからのデータを処理してその結果となるデータをチャネルYに流し、自由フロー関数F11が、チャネルYからのデータを処理してその結果となるデータをチャネルZに流し、チャネルYのデータを作用装置Sに送信する処理フロー(図19参照)、
(4)自由フロー関数F11(又は、特権フロー関数F21)がチャネルX1とチャネルX2にサブスクライブし、作用装置SがチャネルYにサブスクライブしておき、作用装置P1からのデータをチャネルX1に流し、作用装置P2からのデータをチャネルX2に流し、自由フロー関数F11(又は、特権フロー関数F21)が、チャネルX1とチャネルX2からのデータを入力として処理を行ってその結果となるデータをチャネルYに流し、チャネルYのデータを作用装置Sに送信する処理フロー(図3(d)参照)、
(5)自由フロー関数F11がチャネルX1とチャネルX2にサブスクライブし、特権フロー関数F21がチャネルYにサブスクライブし、作用装置SがチャネルZにサブスクライブしておき、作用装置P1からのデータをチャネルX1に流し、作用装置P2からのデータをチャネルX2に流し、自由フロー関数F11が、チャネルX1とチャネルX2からのデータを入力として処理を行ってその結果となるデータをチャネルYに流し、特権フロー関数F21が、チャネルYからのデータを処理してその結果となるデータをチャネルZに流し、チャネルZのデータを作用装置Sに送信する処理フロー(図3(e)参照)、
などの様々な処理フローを実現することができる。
【0045】
チャネルは、例えば、「チャネル識別子」と「データ送付先(データ受信者)のリスト(受信者リスト)」と「許可されたデータ送信者のリスト(送信者リスト)」とを組にしたチャネル情報により管理される。このような情報は、要求処理装置1のPub−Subブローカ13のチャネル情報記憶部133が保持する。
【0046】
なお、チャネル情報に「所有者タグ(所有者タグセット)」の情報を含めても良い。また、これとは別に、「チャネル識別子」と「所有者タグ(所有者タグセット)」との対応を管理しても良い。
【0047】
Pub−Subブローカ13(パブリッシュ・サブスクライブ処理部131)は、例えば、あるチャネルにデータが到着すると、到着したデータを、そのチャネルのチャネル識別子に対応する受信者リストに登録された全ての受信者へ送付する。なお、例えば、あるチャネルにデータが到着した際に、そのチャネルのチャネル識別子に対応する送信者リストに基づき、到着したデータが、そのチャネルについて許可されたデータ送信者からのものかを検査する手順も可能である。この手順では、検査の結果が正しかった場合にのみ、到着したデータを、そのチャネルのチャネル識別子に対応する受信者リストに登録された全ての受信者へ送付する。
【0048】
ただし、後述するように、本実施形態では、作用装置5,6について、所有者タグに基づく検証を行い、この検証に成功した場合にのみ、パブリッシュやサブスクライブ(あるいは、作用装置5はらのデータの受信や、作用装置6へのデータの送信)が可能になるようにしている。
【0049】
次に、所有者タグについて説明する。
【0050】
本実施形態のアクセス制御技術では、作用装置5,6及び要求処理装置1並びに要求処理装置1内で扱われるデータに係るチャネルについて、所有者という概念を利用する。
【0051】
本実施形態では、所有者を示す情報として、所有者タグを用いる。
【0052】
「所有者タグ」は、任意数の所有者を示す識別子(所有者ID)のリストにより構成される。
【0053】
所有者タグは、機器(本実施形態では、要求処理装置1又は作用装置5,6)の所有者、作用装置5からの入力データに係るチャネルの所有者、又は特定の種類のプログラム(本実施形態では、特権フロー関数若しくは自由フロー関数)の出力データに係るチャネルの所有者を示す情報である。
【0054】
所有者タグは、基本的には、要求処理装置1が、パブリッシャとなる作用装置5からデータの入力や、サブスクライバとなる作用装置6へのデータの送信に先立って、所有者タグの適合性の検証を行うために利用される。
【0055】
例えば、「ビル管理者の所有者ID」と「ビル利用者1の所有者ID」と「ビル利用者2の所有者ID」との和集合からなる所有者タグに対しては、「ビル管理者の所有者ID」と「ビル利用者1の所有者ID」と「ビル利用者2の所有者ID」の全部又は一部のみからなる所有者タグが適合し、「ビル管理者の所有者ID」「ビル利用者1の所有者ID」「ビル利用者2の所有者ID」以外の所有者IDを一つでも含むものは適合しないこととなる。適合性の検証に成功した場合にのみ、そのデータが利用可能(サブスクライブ可能)になり、あるいは、要求処理装置1にデータを送信可能(パブリッシュ可能)になる。
【0056】
装置については、例えば、権限を有する管理者等が予め当該装置に対して、(1又は複数の)所有者を含む所有者タグを設定する。なお、作用装置5,6の所有者タグは、作用装置5,6に設定して、作用装置5,6から要求処理装置1のPub−Subブローカ1へ伝えるようにしても良いし、例えば、要求処理装置1内(例えば、Pub−Subブローカ13内)に、作用装置5,6の識別情報と所有者タグとを対応付けて記憶しておき、作用装置5,6から要求処理装置1へ識別情報を伝え、要求処理装置1は、伝えられた識別情報からその作用装置5,6の所有者タグを得るようにしても良い。
【0057】
一つの作用装置5から入力したデータ(外部からのデータ)を流すチャネルには、その入力となる作用装置5の所有者タグがそのまま与えられるものとする。
【0058】
一つのデータを入力とする(一つのチャネルにサブスクライブする)自由フロー関数が出力するデータに係るチャネルには、それが入力とするデータに係るチャネル(それがサブスクライブするチャネル)の所有者タグがそのまま与えられるものとする。
【0059】
特権フロー関数が出力するデータに係るチャネルには、詳しくは後述するが、当該特権フロー関数内に記載された情報に基づいて、所有者タグが設定される。
【0060】
ただし、自由フロー関数の出力データのチャネルや、外部から入力したデータのチャネルについては、実際には、入力とするデータに係る所有者タグが複数になり得る(複数のチャネルにサブスクライブする場合に、所有者タグが複数になる)。そこで、それを示すために、自由フロー関数の出力データのチャネルや、外部からデータしたデータのチャネルについて、それらに与えられる所有者を示す情報を、「所有者タグセット」と呼ぶ。
【0061】
所有者タグセットは、所有者タグ及び又は所有者タグセットを並列で結合した形であり、本実施形態では、それぞれの所有者タグ及び又は所有者タグセットに含まれる所有者の識別子の積集合として定義するものとする。
【0062】
例えば、管理者と利用者とが別々の環境の場合(例えば、貸しオフィスにおける、ビル管理者とテナントとの関係のような場合)において、個々の利用者が占有している設備については、当該利用者のみを含む所有者タグを設定し、管理者と個々の利用者とが共有している設備については、管理者と当該利用者とを含む所有者タグを設定する。例えば、図4に示すように、「ビル利用者1」と「ビル管理者」とからなる「所有者タグ1」のデータと、「ビル利用者2」と「ビル管理者」とからなる「所有者タグ2」のデータとの両方を用いた自由フロー関数による演算の結果であるデータを考えると、そのデータに係るチャネルに付与される所有者タグは、それらのタグを形成する集合の積集合となり、この場合、「所有者タグ1」と「所有者タグ2」に共通する「ビル管理者」となる。よって、この演算結果のデータは、「ビル管理者」を含む「所有者タグ」を持つ場合にのみ利用可能、すなわち、そのデータに係るチャネルにサブスクライブ可能となる(ビル管理者の所有者ID以外の所有者IDを一つでも含む所有者タグを持つ場合は、適合しないことになる)。
【0063】
図5に、所有者タグセットを所有者タグが充足するかどうかを検証するアルゴリズム(共通サブルーチン)の例を示す。
【0064】
作用装置5は、通信機能を持ち、要求処理装置1へデータを送信する装置である。作用装置6は、通信機能を持つ、求処理装置1からデータを受信する装置である。本実施形態では、作用装置5は、例えばセンサなどの環境との相互作用を行う機能を持ち、作用装置6は、例えばアクチュエータなどの環境との相互作用を行う機能を持つ。
【0065】
バブリッシャとなる作用装置5は、データ(例えばセンサの観測値)をチャネルに出力し、サブスクライバとなる作用装置6は、チャネルからテータ(例えばアクチュエータの命令)を与えられる。
【0066】
作用装置5,6には、それぞれ、任意数の所有者の組からなる所有者タグが設定される。所有者タグは、作用装置5がパブリッシュしたデータが流れるチャネルにおいては、所有者タグセットを構成し、該所有者全てが関係者である作用装置6だけしかデータを受信(サブスクライブ)できないことを規定する(所有者タグセットは、各入力の積集合により規定されるため)。逆に、あるチャネルのデータ受信のためのサブスクライブ要求においては、該チャネルに設定された所有者タグセットが作用装置6の所有者タグを包含していればサブスクライブ可能である。
【0067】
要求処理装置1は、ユーザ装置2と作用装置5,6との間の仲立ちを行う。要求処理装置1は、各作用装置5,6が利用するチャネルを管理し、データの送受信の宛先管理を行う。同時に、ユーザ装置2により与えられたフロー関数を実体化し、データ処理を行う。
【0068】
要求処理装置1のPub−Subブローカ13は、前述したように、パブリッシュ・サブスクライブ・モデルにおけるブローカの役割に相当する役割を担う。すなわち、作用装置5からデータを受信し、また、作用装置6へデータを送信するユニットである。Pub−Subブローカ13は、例えば、パブリッシュとサブスクライブの各動作に関して、Pub−Sub検証部16により保護される。また、前述したように、各チャネルには、入力データの源(パブリッシャ)に基づく所有者タグが規定される。
【0069】
Pub−Sub検証部16は、作用装置5からデータを受信するのに先立って(例えば、パブリッシュ受け付け時に)、その作用装置5の所有者タグが、当該要求処理装置1の所有者タグに適合することを検証するとともに、作用装置6へデータを送信するのに先立って(例えば、サブスクライブ時に)、その作用装置6の所有者タグが、当該要求処理装置1の所有者タグに適合することを検証するユニットである。Pub−Subブローカ13は、前者の検証に成功した場合にのみ、作用装置5からデータを受信することが可能になる(あるいは、作用装置5のパブリッシュが可能になる)。また、後者の検証に成功した場合にのみ、作用装置6へデータを送信することが可能になる(あるいは、作用装置6のサブスクライブが可能になる)。
【0070】
自由FF実行環境14及び特権FF実行環境15は、それぞれ、自由フロー関数及び特権フロー関数を実行するための実行環境である。いずれも、例えばJavaのサンドボックス付き仮想マシン(すなわち、実行できる操作に制約を付けたプログラム実行環境)などを用いて構築することができる。
【0071】
自由FF実行環境14は、自由フロー関数を実行するユニットである。自由フロー関数は、データ処理の内容を任意に設定可能である。また、特権フロー関数と異なり、自由フロー関数の正当性の検証は不要である。自由FF実行環境14は、自由FF所有者タグ設定部17に保護される。
【0072】
自由フロー関数自身は、特権フロー関数と異なり、所有者タグに対する操作が許されず、全ての入力チャネルから合成された所有者タグセットを、出力のチャネルに設定しなければならない。このタグセットの設定を強制する保護機構が、自由FF所有者タグ設定部17である。
【0073】
自由FF所有者タグ設定部17は、実行された自由フロー関数が出力したデータに係るチャネルの所有者タグセットを、自由フロー関数が入力するデータに係るチャネルの所有者タグに基づいて設定するユニットである。例えば、自由フロー関数が入力するチャネルが一つの場合には、該チャネルに係る所有者タグと同一のもの(1又は複数の所有者)に設定し、自由フロー関数が入力するチャネルが複数の場合には、該複数のチャネルのすべてに共通して所有者となっているもの(1又は複数の所有者)のみを設定する(すなわち、全チャネルの所有者タグについて論理積を取る)。
【0074】
特権FF実行環境15は、特権フロー関数を実行するユニットである。特権フロー関数は、データ処理の内容を任意に設定可能である。また、特権フロー関数は、その出力データを流すチャネルの所有者タグを操作することができる。特権FF実行環境15は、特権FF署名検証部18に保護される。
【0075】
特権フロー関数は、上記のように出力チャネルの所有者タグを操作できるので、特権フロー関数に任意のものがロードされてしまうと、データ漏洩に繋がるなどの危険性があるため、コードの正当性の検証を行う必要がある。この検証を行い、検証に成功したコードのみを特権フロー関数として実行することを強制する保護機構が、特権FF署名検証部18である。
【0076】
特権FF署名検証部18は、特権フロー関数の正当性を検証するユニットである。特権FF実行環境15は、この検証に成功した場合にのみ、特権フロー関数を実行することが可能である。
【0077】
例えば、特権フロー関数を、事前に要求処理装置1に設定された管理者等の電子鍵(電子鍵は、例えば、公開鍵でも良いし、共有鍵でも良い。)による電子署名が為されたものに限ることとする(この署名の検証に成功したコードのみが特権フロー関数として実行可能になる)。
【0078】
例えば、(その出力チャネルの所有者タグセットを操作するための情報を含む)特権フロー関数に、施設管理者Xの電子鍵による電子署名を付与するものとした場合において、ある特権フロー関数が施設管理者Xにより定義されたものであることは、例えば、特権FF実行環境15に設定された管理者Xの電子鍵と、その特権フロー関数に付随して得られた電子署名とにより検証することができる。この検証は、例えば、一般的な公開鍵暗号での検証と同様で構わない。
【0079】
一方、特権FF実行環境15で特権フロー関数が実行された場合に、その実行された特権フロー関数が出力するデータを流すチャネルに係る所有者タグは、(自由フロー関数の場合と異なって、)当該特権フロー関数内に記載されている情報(所有者を指定する情報)に基づいて特権FF実行環境15により設定される。
【0080】
出力チャネルの所有者タグを操作する方法としては、幾つかの方法が可能である。例えば、特権フロー関数が入力したデータのチャネルに係る所有者タグにかかわらずに、出力チャネルの所有者タグを、当該特権フロー関数内に記載されている情報が示す所有者のみを含む内容に強制的に設定する方法がある。また、例えば、特権フロー関数が入力したデータのチャネルに係る所有者をもとに上記の自由フロー関数と同様にして求めた所有者タグに、当該特権フロー関数内に記載されている情報が示す所有者タグを追加したものを、出力チャネルの所有者タグに設定する方法も可能である(また、追加の他に、削除、変更などの操作を加えることも可能である)。
【0081】
図6に、特権フロー関数の内容(定義テーブル)の一例を示す。この例では、特権フロー関数の定義は、(a)該特権フロー関数のコード、(b)入力チャネルが満たすべき所有者タグセット、(c)出力チャネルに設定される所有者タグ、(d)署名者XのID、(e)署名時刻、(f)有効期限の組により行う。
【0082】
検証は、特権フロー関数の定義情報を含む情報の組を、所定の方法(例えば、各々のビット列表現を結合することによる、などの方法)によりビット列に変換し、このビット列に対して署名者Xの秘密鍵で署名を行い、特権FF実行環境15には、検証のため署名者Xの公開鍵を設定する、などといったプロセスで行うことができる。
【0083】
以上6項目のうち、(b)の所有者タグセットについては、例えば、対象となるチャネルの所有者タグが、(b)の所有者タグセットに包含される場合に、そのチャネルを受け付けることができるとする方法の他に、例えば、対象となるチャネルの所有者タグが、(b)の所有者タグセットに一致する場合にのみ、そのチャネルを受け付けることができるとする方法なども可能である。なお、(b)の入力チャネルが満たすべき所有者タグセットは、空でも良い。(b)が空の場合は、この特権フロー関数は、どのようなチャネルをも入力とすることができる(どのようなデータも入力として受け付けることができる)ものとする。なお、(b)のフィールドを空にする変わりに、予め定められた値を記載しても良い。
【0084】
また、(c)の出力チャネルに設定される所有者タグは、空でも良い。(c)が空の場合は、この特権フロー関数の出力データを流すチャネルは、どのサブスクライバでもサブスクライブできる。この場合に、そのチャネルの所有者タグは、例えば、空にする方法、予め定められた値を記載する方法などが考えられる(すなわち、全ての所有者の論理和を示す状態あるいは全ての所有者の論理和を示す情報が記載された状態にすれば良い)。なお、(c)のフィールドを空にする変わりに、予め定められた値を記載しても良い。
【0085】
なお、特権フロー関数として、何も処理をせずに、出力チャネルの所有者タグを操作するだけのものも、実行可能である。この場合には、(a)の該特権フロー関数のコードに、何もしないコード(あるいは、入力をそのまま出力するコード)を記載すればよい。
【0086】
なお、電子署名の生成やその認証のための構成・手順としては、どのようなものを採用しても構わない。その際、(d)署名者XのID、(e)署名時刻、(f)有効期限の部分は、採用する構成・手順に応じて、適宜修正して構わない。
【0087】
特権フロー関数の実行には、その正当性の検証に成功する必要があり、そのために例えば電子署名等の情報を特権フロー関数に付与することについては、例えばシステムの管理者による権限を有する者等のみが可能であるので、管理者等のみが、上記の(a)該特権フロー関数のコード、(b)入力チャネルが満たすべき所有者タグセット、(c)出力チャネルに設定される所有者タグを規定することが可能である。
【0088】
さて、利用者は、1以上のフロー関数(自由フロー関数及び又は特権フロー関数)を利用することによって、所望のデータ処理機能を実現することができる。ただし、利用者が所望する作用装置6の所有者タグが、送信対象となるデータのチャネルに係る所有者タグに適合しない限り、その作用装置6は、そのデータを受信することができない。利用者は、例えば管理者等の許諾等をもって、特権フロー関数によって、そのデータのチャネルに係る所有者タグを、利用者が所望する作用装置6の所有者タグが適合するようなものに設定することができ、この結果、その作用装置6は、そのデータを受信することができるようになる。
【0089】
FFコードロード部12は、例えばJavaで言うところのクラスローダに相当するものであり、自由FF実行環境14及び特権FF実行環境15でそれぞれ実行する個々の自由フロー関数及び特権フロー関数の実行イメージを、適切に設定されたファイル又はネットワークに接続されたサーバ等であるFFコードレポジトリ4からロードする。ここでいう「適切な設定」とは、フロー関数の名前からロードすべき実行イメージの場所が分かることであり、静的に設定されていても良いし、フロー関数の識別を実行イメージの識別子で行う(すなわち、フロー関数を指定することは、実行イメージを指定することに等しい状態にする。)ことによっても良い。
【0090】
要求受付部11は、要求配置装置3から、フロー関数の実体化を要求するフロー関数実体化要求を受け付ける。要求配置装置3からのフロー関数実体化要求は、少なくとも{実体化すべきフロー関数の識別子,フロー関数のサブスクライブ先}の組を含む。なお、要求配置装置3と要求処理装置1との間には、適切なセキュリティの設定が行われていることが望ましい。これは、例えば、pre-shared keyや公開鍵認証などの良く知られた方法により相互に認証を行うことによって実装することができる。
【0091】
ユーザ装置2は、センサネットワーク等のシステムの利用者が、これに対するユーザ要求を記述し、要求配置装置3に送出する装置である。利用者により記述されたユーザ要求は、フロー関数の選択と、その入出力に関連付けられたチャネルのリンク(グラフ)で定義する。
【0092】
要求配置装置3は、ユーザ装置2が記述したユーザ要求を、要求処理装置1に配置する。要求配置装置3は、情報処理システムに含まれる要求処理装置1とその所有者タグとを管理し、ユーザ装置2の要求に含まれるフロー関数を、所有者タグの条件を満たす要求処理装置1に生成する。
【0093】
なお、個々のフロー関数は、サブスクライバであるので、サブスクライブ先の所有者タグによって入力の所有者タグセットが決定される。
【0094】
入力の所有者タグセットは、Pub−Subブローカ13における外部からのサブスクライブ要求に対する検証のアルゴリズムによって検証可能である。図7に、そのアルゴリズム例を示す。図7の例では、サブスクライバ先のチャネルの所有者タグセットが、サブスクライバの所有者タグを包含する場合に、充足(適合)となる。
【0095】
また、出力の所有者タグセットは、特権フロー関数の場合は、特権フロー関数の定義により決定される。自由フロー関数の場合は、自由FF実行環境14における出力チャネルの所有者タグのセットの設定のアルゴリズムにより決定される。図8に、そのアルゴリズム例を示す。
【0096】
出力の所有者タグセットは、Pub−Subブローカ13のPub−Sub検証部16におけるパブリッシュ受付時の検証のアルゴリズムにより検証可能である。図9に、そのアルゴリズム例を示す。
【0097】
要求配置装置3が受け付けた個々のフロー関数は、入出力2つの検証を満たす要求処理装置1に順次配置される。なお、入力が決定されないと出力の所有者タグセットは、決定できないため、配置は、入力寄り(センサ等の作用装置5寄り)から開始し、順次、出力寄り(アクチュエータ等の作用装置6寄り)に向かって配置を行う。
【0098】
図10に、本実施形態の情報処理システムの要求配置の動作手順の一例を示す。
【0099】
ユーザ装置2から要求配置装置3へ、利用者により記述されたユーザ要求が送信される(ステップS1)。
【0100】
要求配置装置3は、受信したユーザ要求を、適切な要求処理装置1へ転送する(ステップS2)。該要求を受信した要求処理装置1では、要求受付部11で、該ユーザ要求を受け付ける。
【0101】
要求受付部11は、受け付けたユーザ要求を、FFコードロード部12へ送る(ステップS3)。
【0102】
FFコードロード部12は、与えられたユーザ要求に基づいて、適切な実行イメージをFFコードレポジトリ4からロードして、自由FF実行環境14及び又は特権FF実行環境15へ与える(ステップS4)。
【0103】
図11に、作用装置4のパブリッシュ受け付け時、要求処理装置1の要求配置時及び作用装置5のサブスクライブ時に検証を行う場合の動作手順の一例を示す。ここでは、自由フロー関数と特権フロー関数が実行される場合を例にとって説明する。
【0104】
まず、Pub−Sub検証部16が、パブリッシャである作用装置5について、所有者タグに基づく検証を行う(ステップS11)。検証に失敗した場合には(ステップS12)、この時点でエラーとなる(ステップS14)。
【0105】
検証に成功した場合に(ステップS12)、Pub−Subブローカ13は、このデータを流すチャネルに、作用装置5と同じ所有者タグを付与する(ステップS13)。
【0106】
次に、自由FF所有者タグ設定部17は、上記チャネルにサブスクライブする自由フロー関数の出力データを流すチャネルに、所有者タグの設定を行う(ステップS15)。
【0107】
次に、特権FF署名検証部18は、上記チャネルにサブスクライブする特権フロー関数について、署名の検証を行う(ステップS16)。検証に失敗した場合には(ステップS17)、この時点でエラーとなる(ステップS19)。
【0108】
検証に成功した場合に(ステップS17)、特権FF実行環境15は、この特権フロー関数の出力データを流すチャネルに、所有者タグを設定する(ステップS18)。
【0109】
次に、Pub−Sub検証部16が、サブスクライバである作用装置6について、所有者タグに基づく検証を行う(ステップS20)。検証に失敗した場合には(ステップS21)、この時点でエラーとなる(ステップS22)。
【0110】
検証に成功した場合に(ステップS21)、このフローが可能となる。
【0111】
なお、上記手順は、自由フロー関数や特権フロー関数の有無やその数に応じて、適宜変更される。まず、個々の自由フロー関数に応じて、ステップS15の部分が実行される。自由フロー関数が実行されない場合には、ステップS15の部分は省かれる。また、個々の特権フロー関数に応じて、ステップS16〜S19の部分が実行される。特権フロー関数が実行されない場合には、ステップS16〜S19の部分は省かれる。また、自由フロー関数に対応するステップS15の部分や、特権フロー関数に対応するステップS16〜S19の部分は、フロー関数が実行される順番に従って実行される。
【0112】
ところで、上記の所有者タグの設定及び検証は、上記タイミングに加えて(或いは、これに代えて)、実際に作用装置5からデータを受信し、これをフロー関数で処理して、作用装置6に送信するときに行うことも可能である。
【0113】
図12に、この場合の動作手順の一例を示す。ここでは、自由フロー関数と特権フロー関数が実行される場合を例にとって説明する。
【0114】
まず、パブリッシャである作用装置5が、所定のタイミングでデータを要求処理装置1へ送信する。要求処理装置1において、該データを受信すると(ステップS31)、Pub−Sub検証部16がパブリッシャである作用装置5について所有者タグに基づく検証を行う(ステップS32)。検証に失敗した場合には(ステップS33)、この時点でエラーとなる(ステップS35)。
【0115】
検証に成功した場合に(ステップS33)、Pub−Subブローカ13は、このデータを流すチャネルに、所有者タグを設定する(ステップS34)。
【0116】
次に、自由FF実行環境14は、上記チャネルから受け取ったデータを入力として、自由フロー関数を実行する(ステップS36)。自由FF所有者タグ設定部17は、自由フロー関数の出力データを流すチャネルに、所有者タグを設定する(ステップS37)。
【0117】
次に、特権FF署名検証部18は、上記チャネルにサブスクライブする特権フロー関数について、署名の検証を行う(ステップS38)。検証に失敗した場合には(ステップS39)、この時点でエラーとなる(ステップS41)。
【0118】
検証に成功した場合に(ステップS39)、特権FF実行環境15は、上記チャネルから受け取ったデータを入力として、特権フロー関数を実行するとともに、出力データを流すチャネルに、所有者タグを設定する(ステップS40)。
【0119】
次に、Pub−Sub検証部16がサブスクライバである作用装置6について所有者タグに基づく検証を行う(ステップS42)。検証に失敗した場合には(ステップS43)、この時点でエラーとなる(ステップS45)。
【0120】
検証に成功した場合に(ステップS43)、Pub−Subブローカ13が、このチャネルのデータを、作用装置6に送信する(ステップS44)。
【0121】
なお、上記手順が、自由フロー関数や特権フロー関数の有無やその数に応じて、適宜変更される点は、図11の場合と同様である。
【0122】
本実施形態により、例えば、管理者と複数の所有者/利用者が存在する環境で、一利用者が、複数の所有者によるデータ(コンテンツ)を混合した状態で操作するフロー関数を定義し、その結果を特権フロー関数経由で匿名化して閲覧する、といったことが可能となる。例えば、複数のテナントが入っているビルがあったときに、個々のテナントの在室人数を合成し、ある閾値を下まわったらビルを節電モードで動作させる、などといったプログラムを、外部のESCO事業者がビル上で実行できる。このとき、本来テナント毎の秘密情報である在室者リストを、外部事業者が操作するプログラムを書き、この秘密性を削除する特権FF(人数のみの情報に落とすなど)によりそのプログラムの結果のみを受け取ることが可能になる。
【0123】
以下、本実施形態の情報処理システムをビル管理システムに適用した幾つかの具体例を用いて説明する。
【0124】
<第1の具体例>
まず、図13〜図16を参照しながら、第1の具体例として、サービス会社との連携の例について説明する。なお、図14は、所有者タグが適合しないチャネルへのサブスクライブが成功しない例(フロー関数を用いない場合)であり、図15は、自由フロー関数が出力チャネルの所有者タグを変更しないため、所有者タグが適合しない例であり、図16は、正しく署名された特権フロー関数が出力チャネルの所有者タグを変更することによって、所有者タグが適合する例である。
【0125】
本具体例は、本実施形態の動作を説明するために単純化した例である。
【0126】
あるビルBに、企業Xが入居しているとする。なお、簡単のため、ここでは、ビルBは企業Xの持ちビルであり、企業Xがビル管理者であるとする。企業Xには、プリンタが一つ存在し(プリンタをP1とする。)、プリンタP1のプリンタ用紙の補充のために、サービス会社Sが存在する。企業Xは、プリンタ用紙が切れないように、また、過大なストックを置かないように、サービス会社Sにプリンタ用紙の管理を委託する。ただし、いつ何枚のプリントアウトを行ったかという情報、あるいは、任意の時点での用紙の残量の情報などをサービス会社Sに通知することは、企業Xにとっては例えば事業活動の活発度などを知らせることと等しいため、望ましくない。
【0127】
そこで、本実施形態により、以下のような構成が可能になる。
【0128】
プリンタP1を、作用装置5として動作するものとし、所有者タグとして企業Xの所有者IDをセットする。企業Xは、一つの要求処理装置1を持つ。要求処理装置1には、企業Xの所有者IDとサービス会社Sの所有者IDからなる所有者タグをセットする。これらは、企業Xにより管理される一つの要求配置装置3に接続され、サービス会社Sは、ユーザ装置2を経由して任意のプログラムを投入することができる。
【0129】
サービス会社Sは、作用装置6として、サービス会社Sの所有者タグがセットされた用紙切れ警報機Aを持つ。用紙切れ警報機Aは、例えば、回転灯のようなものでも良いし、担当者に電子メールなどで用紙切れを通知する装置でも良い。また、ロボットや宅配便・地域内物流サービスなどを用いて半自動的に企業Xに用紙を配送する装置でも良い。
【0130】
プリンタP1は、用紙が使用される度に用紙の残量を数値で出力する。ここでは、例えば、企業Xは、「用紙の残量が100枚を下回ったときにTrueを返す」という用紙残量閾値判定関数fthを、特権フロー関数として登録する。この特権フロー関数の出力所有者タグは、サービス会社Sの所有者IDとする。ただし、特権フロー関数は、登録時に、企業Xによる署名が必要である。なお、この特権フロー関数は、例えば擬似コードで作成される。図13に、用紙残量閾値判定関数fthの擬似コード(threashold関数)の例を示す。
【0131】
ここで、サービス会社Sが、プリンタP1の用紙残量の出力を取得するケースと、自由関数によりプリンタP1の用紙残量の出力を加工した結果を取得するケースについて考える。
【0132】
用紙残量をそのまま用紙切れ警報機Aに与えるものとした場合、図14に示すように、プリンタP1の用紙残量の出力には、企業Xの所有者タグが与えられており、よって、出力チャネルには、企業Xの所有者タグが与えられるが、一方、用紙切れ警報機Aには、サービス会社Sの所有者タグが与えられているので、用紙切れ警報機AがプリンタP1の出力チャネルをサブスクライブしようとしても、Pub−Sub検証部16によりブロックされる。
【0133】
また、図15に示すように、サービス会社Sが導入した自由フロー関数を経由して用紙切れ警報機Aにデータを与えようとしても、同様に、自由FF所有者タグ設定部17により自由フロー関数の出力に企業Xの所有者タグセットが与えられ、この出力チャネルを用紙切れ警報機Aがサブスクライブしようとするときに、Pub−Sub検証部16によりブロックされる。
【0134】
そこで、サービス会社Sが、用紙切れ警報機Aに、サービスのための情報を与えるためには、図16に示すように、用紙残量閾値判定関数fth(特権フロー関数)を経由させれば良い。この特権フロー関数は、企業Xにより署名されており、サービス会社Sは、その内容を操作することはできない。しかし、サービス会社Sがユーザ装置2から要求配置装置3に与えるプログラムの途中に、特権フロー関数を導入することが可能である。特権FF実行環境15により、その出力の所有者タグセットにはサービス会社Sのみが与えられるため、その結果を用紙切れ警報機Aで受信することができる。
【0135】
以上から得られる、サービス会社Sがサービスを実行するためのプログラムの単純な例は、プリンタP1の出力チャネルを用紙残量閾値判定関数fth(特権フロー関数)の入力とし、その出力を用紙切れ警報機Aがサブスクライブすることにより、用紙100枚未満となったことを検出するものである。
【0136】
ここで、さらにサービス会社Sがサービス向上のために、動的にプリンタP1の用紙残量の減り方を予測したいとする。例えば、大きな需要があったときには、残量100枚になってから補充を手配したのでは間に合わない場合もある。そこで、サービス会社Sは、数時間分の用紙残量の履歴を取り、3時間後の用紙残量を線形補完により求める関数fliを新しい自由フロー関数として定義し、FFコードレポジトリ4に登録する。そして、プリンタP1の出力チャネルを関数fliの入力とし、この出力を関数fthの入力とする。このとき、関数fliの出力は、関数fliが自由フロー関数であるため、所有者タグセットとして企業Xが設定されており、直接的には用紙切れ警報機Aで受信することはできない。そこで、先の例と同様、関数fthを経由することにより、企業Xがサービス会社Sに対して認めた情報出力となり、サービス会社Sは、新しい関数による計算結果を、閾値関数の出力として得ることができる。
【0137】
<第2の具体例>
次に、図17,18を参照しながら、第2の具体例として、ビル内機器のアクセス制御の例について説明する。なお、図17は、2つのテナントにより共用される設備の例であり、図18は、特権フロー関数をアカウンティングの窓口として利用する例である。
【0138】
第1の具体例に類似する例として、ビル内機器へのアクセス制御とアカウンティングとを同時に行う例について説明する。本具体例では、ビルには、「個別フロア空調設備」、「共通空調設備」、「給湯設備」、「エレベータ設備」、「照明設備」、「フロア共有のコピー機」、「フロア共有のプリンタ」などが存在するものとする。それぞれの設備・機器は、既知のプロトコルなどを用いた通信手段により設備機器ネットワーク上からアクセス可能であるものとする。また、ビルには、複数のテナントが入っており、本具体例では、1Fに「テナントT1」が、2Fに「テナントT2a」と「テナントT2b」が入居しているものとする。また、ビルには管理者が存在し、これを「ビル管理者BA」とする。
【0139】
ここで、本具体例では、ビル管理者あるいはテナントのユーザ装置2が存在するとする。また、テナントが貸与され管理する要求処理装置1として、テナントT1の要求処理装置1と、テナントT2aとテナントT2bに共用の要求処理装置1が存在するとする。また、テナントT1の要求処理装置1には、「テナントT1とビル管理者BAの所有者タグ」が設定され、テナントT2aとテナントT2bに共用の要求処理装置1には、「テナントT2aとテナントT2bとビル管理者BAの所有者タグ」が設定されているものとする。なお、これら要求処理装置1は、物理的に独立した個々の装置であっても良いし、共有されたハードウェアにソフトウェア的に保護された各々の領域に仮想的に構築されたものであっても良い。
【0140】
また、ビル内には、被制御機器が存在する。これらには、フロア共有機器(フロア空調設備・照明設備等)、設備全体での共有機器(エレベータ等)が存在する。これらの被制御機器は、ビル管理者が直接管理するものであり、テナントが自由に制御できるものではない。そのため、これらの機器には、「ビル管理者BAの所有者タグ」をセットする。なお、テナント向け制御盤に相当する機器には、「テナントの所有者タグ」がセットされるものとする。
【0141】
本具体例では、2Fに設置された空調を代表例として説明する。2Fの空調設備を「AC」とする。2Fのテナントに設置された制御盤について、テナントT2aにおけるものを「制御盤CT2a」と、テナントT2bにおけるものを「制御盤CT2b」とする。空調設備ACには、「ビル管理者BAの所有者タグ」が設定され、制御盤CT2aには、「テナントT2aの所有者タグ」が設定され、制御盤CT2bには、「テナントT2bの所有者タグ」が設定されているものとする。
【0142】
ここで、各々のテナントは、自由に空調が設定できるものとする。ただし、テナントの従業員は、制御盤CT2a又は制御盤CT2bに規定室温と動作要求(ON/OFF)を入力し、制御盤CT2a及び制御盤CT2bは、それぞれ、具備する室温計から空調設備ACへの動作/非動作を入力するものとする。
【0143】
以上のプログラムを略式に記述すると図17のように記述できる。
【0144】
なお、制御盤CT2a及び制御盤CT2bは、以下の原理で動作する。入力は、規定室温(度)・動作要求(on/off)・室温計(度)である。出力は、空調制御要求(on/off)である。動作要求がoffのときには、出力はoffである。動作要求がonであれば、規定室温と室温計を比較し、室温計入力が規定室温よりも高ければonを、そうでなければoffを出力する。
【0145】
さて、ここで、制御盤CT2a及び制御盤CT2bは、それぞれ、所有者タグとしてテナントT2a及びテナントT2bを持つ。これを直接的には空調設備ACの入力とはできない。なぜならば、空調設備ACは、ビル管理者BAの所有者タグを持ち、テナントT2aとテナントT2bを出力として持つチャネルを、サブスクライブすることができないからである。
【0146】
一方、ビル管理者は、どのテナントがどの程度空調設備を利用しているかを知りたいものとする。これは、例えば、別途従量制の課金を行っている場合もあり、また、そうでなくても、例えば、計画節電のために過度の利用に対し制約をかける必要がある場合などがあるからである。
【0147】
そこで、ビル管理者は、各々の制御盤からの入力を受け、出力の所有者タグをビル管理者BAとするアカウンティング特権フロー関数facを用意する。これは、対となるアカウンティングデータベースを持ち、関数facに対してonの制御命令、つまり空調を動作させる命令が通ったときに、その累計時間を計量しアカウンティングデータベースに記録するものである。また、利用量が計画量に比べて著しく高い場合は、onの制御命令を差し止める機能を持たせても良い。
【0148】
ここで、関数facは、テナント毎に用意される。例えば、テナントT2aに向けたfacは、入力チャネルが持つべき所有者タグセットとしてテナントT2aが設定され、誤って又は故意にテナントT2bが空調をテナントT2aへの課金により動作させることができない。もちろん、アカウンティングデータベースもテナント毎に用意される。一方、出力となる所有者タグセットは、ビル管理者BAのものとなる。この特権フロー関数を経由させることにより、前述の擬似プログラムは、図18のようになる。ここで、テナントT2a向けfacをFAC_T2a、テナントT2b向けfacをFAC_T2bと記述する。
【0149】
以上の構成により、テナントからの要求を受け付けつつ、アクセス管理によりアカウンティングを実現する実例を示した。なお、各テナントは、独自に、制御盤の出力部分に、残業申請システムや空調の時間外動作の許認可を行うワークフローシステムを組み込んでも良い。
【0150】
<第3の具体例>
次に、図19を参照しながら、第3の具体例として、ビル内機器制御と在室管理の連動の例について説明する。なお、図19は、空調制御の例である。
【0151】
第2の具体例を拡張して、ビル内機器制御と在室管理とを連動させる例について説明する。ビルの機器及びテナントは、特に述べない限り第2の具体例と同様であるとする。
【0152】
テナントの入居者は、ビルのセキュリティシステムに接続された入退室管理システムを持ち、テナントの従業員又は出入りのある契約業者(清掃業者等)の従業員等が、それぞれ、カードキーにより施錠されたゲート(1FのゲートをG1、2FのゲートをG2とする。)を通過するものとする。ただし、各テナントの従業員に関しては、誰がいつゲートを通過したか、については、各企業の秘密事項であることから、ビルの管理者は、直接的には得ることができないという契約であるとする。
【0153】
なお、ゲートから出てくる情報は秘密であるので、ビル管理者は、直接的にはデータを取得できないようになっている。従って、ゲートG1には「テナントT1の所有者タグ」のみが設定され、ゲートG2には「テナントT2aとテナントT2bの所有者タグ」のみが設定されており、ビル管理者BAが持つ出力機器(「ビル管理者BAの所有者タグ」が設定されている。)においては、ゲートG1/G2の情報は受信できない。
【0154】
ここで、テナントとビル管理者との合意により、ビル管理者は、入室している人数を知ることができるものとする。この合意は、例えば、IDの一覧からその長さを得て、その出力の所有者タグをビル管理者BAとする特権フロー関数を、当該テナントが導入することによって、達成することができる。ビル管理者は、例えばこの在室人数をもとに、電源計画を調整することができる。この様子を図19に示す。
【0155】
図20では、特権フロー関数C1FがゲートG1の出力(入室,カードキーID)又は(退室,カードキーID)の列を読み、現在の1Fの在室人数に変換する。同時に、特権フロー関数C2Fは、ゲートG2の出力を読み、2Fの在室人数に変換する。
【0156】
これらは、以下のアルゴリズムで動作可能である。
1.在室者セットを空で初期化する。
2.ゲートからの入力を待ち、入力に応じて以下のどちらかを実行する。
入室イベント在室者セットにカードキーIDを登録する。
退室イベント在室者セットからカードキーIDを削除する。
3.在室者セットの数を数え、これを出力する。
4.手順2に戻る。
【0157】
なお、ここで言うセットとは、重複を許さない集合を実現するデータ構造である。
【0158】
ビル管理者BAは、この出力を自分が管理する要求処理装置1で受信することができる。
【0159】
在室人数と、個々のテナントとの間で取り交したサービスレベル合意から、1Fの空調機AC1の出力と2Fの空調機AC2の出力を制御することができる。ここでは、1Fの空調機AC1の制御を行う自由フロー関数及び2Fの空調機AC2の制御を行う自由フロー関数を、それぞれ、ACM1及びACM2で表した。
【0160】
この例では、サービスレベル合意は、以下の2項目の組み合わせのリストで取り交されるとする。現時点での在室人数によって、空調出力が制限される仕組みである。これにより、在室人数が少なくなるにつれ省エネ運転となり、在室人数が多いときは、快適運転とすることができる。
・t:最低在室人数閾値(整数)
・m:最大空調出力(0−100)
ACM1とACM2は、いずれも、以下のような動作を行う。
1.仮の最大出力値oを0で初期化する
2.入力を待ち、その人数をpに記録する
3.サービスレベル合意のリストから順番に要素を取り出し、それぞれのtとpについて、
・pがtと等しいかより大きい場合
o=max(o,m)
4.結果のoを出力する
5.手順2に戻る
<第4の具体例>
次に、図20を参照しながら、第4の具体例として、ESCO事業と在室管理の連動の例について説明する。なお、図20は、ビル全体の電源制御と、在室管理との連動の例を示す。
【0161】
ESCO(Energy Service COmpany)と呼ばれる事業形態は、特定の事業所のエネルギー消費を最適化(節電)することを事業として請け負うものである。
【0162】
ここで、あるビルに対する最適なESCO事業に対して、本発明を実施する例を説明する。なお、特に説明のない限り、この具体例は、ここまでの具体例の環境と同様の環境にあるとする。
【0163】
ここで、ESCO事業者がビルの管理者と契約し、契約に基づきビル内の設備・機器の電源制御を行うものとする。一方、各テナントに誰がいつ入室して、いつ退室したか、という情報は、利用の仕方によっては、各テナントのビジネスの動きを推測することができる情報であり、ESCO事業者には、この情報を与えてはならない。一方、ESCO事業者は、ビル内の最適な電源制御を行い、ビルの電力効率をより高めることから利益を得る業態であるため、ビル内の人のアクティビティや機器の利用状況を知り、また、詳細に制御することは、有益なことである。
【0164】
そこで、本実施形態により、ESCO事業者とビル管理者との間の契約に基づくデータ(制御結果の指標)のみをESCO事業者に渡すことを保証しつつ、実際の制御及び制御結果の指標の算出のためのプログラムは、ESCO事業者に自由に開発させることができる。本実施形態は、外部の事業者による自由なプログラミングと、データ流通の境界制御による情報漏曳の防止とを両立させる。
【0165】
その結果、本具体例では、ESCO事業者がより高い能力を発揮し、エネルギー消費/コストの削減に貢献することが期待できる。
【0166】
以下、図20を参照しながら、具体的な具体例を説明する。
【0167】
ビル内には、入退室リーダ、エレベータや空調・照明・給湯などの各種被制御機器が存在する。また、数台の要求処理装置1(図示せず)が存在し、それらのうち1台がESCO事業者を含む外部サービス向けの出入口となっている。
【0168】
ESCOセンターは、別途契約によりビル管理者から入手したビル内の機器構成から、ビル制御に必要なフロープログラムを記述する。記述したプログラムは、ESCOセンターに割り当てられたユーザ装置2より要求配置装置3に与えられる。ここで、ESCOセンターは、必要であればビル内でデータ処理を行うための自由フロー関数を記述し、要求配置装置3へのプログラム投入に先立ってFFコードレポジトリ4に登録する。
【0169】
要求配置装置3は、必要に応じてプログラムを分解し、例えば、入退室リーダの入力を受ける部分は、入退室リーダの近傍の要求処理装置1へ、ESCOセンターへの出力を制御する部分は、外部向けの要求処理装置1へ、といった要領で、各フロー関数を要求処理装置1に配置する。このとき、それぞれの要求処理装置1に設定された所有者タグの制約条件を満たすようにフロー関数を配置し、要求処理装置1間を接続する。
【0170】
具体的に、入退室ゲートGにテナント所有者タグTが、空調機器の入力(制御)側と空調機器の出力(監視)側にそれぞれビル管理者の所有者タグBAが設置されていたとする。このとき、第3の具体例で説明したのと同様の仕組みで、空調の監視や制御を行うことが出来る。前出の具体例との相違は、ESCOセンターはビルの外にあり、また、ビル管理者は複数のESCO事業者を契約によって切り替えて用いることができる点である。
【0171】
<第5の具体例>
次に、第5の具体例として、電力インフラ事業の例について説明する。
【0172】
電力供給が需要に追い付かなくなると、需要家に対して需給調整(例えば、需給調整契約、という契約を結んだ需要家に対して、普段の電力の割引と需給逼迫時の電力カット依頼を行うこと。)を行う場合がある現在は、この需給調整を手動で行っているが、緊急時の対応を除いて自動化することを考える。
【0173】
このとき、単一の供給家Sと複数の需要家D1,D2,...を考える。個々の需要家は、需要家の事業所内での電力消費を把握しており、個々の負荷の設定をフロープログラムで記述可能であるとする。具体的な記述は、前出の機器制御の事例(第3の具体例など)と同等である。ここで、需給調整用フロープログラムを事業所内部で記述する。
【0174】
需給調整契約は、個々の契約内容に基づき、そのプログラムの入力部に特権フロー関数を用意する。この入力チャネルが満たすべき所有者タグセットにSを、出力に該需要家Dnを設定する。入力としては、需給調整依頼の程度(需要を何ワット抑えるか)と、その依頼の期限と期間(何時間後までに調整を完了させ、その状態を何時間継続するか)の組み合わせ(タプル)であり、特権フロー関数は、契約内容と需給調整依頼が合致しているかを検証し、検証結果が正しければ、需要家が設定した需給調整用フロープログラムへ需給調整依頼を転送する機能を持つ。
【0175】
電力需給逼迫時には、供給家Sは、個々の需要家Dnの特権フロー関数に対して需給調整依頼を発行する。個々の需要家は、契約規模やその時点での需要が異なるため、個々の需要家にあわせた需給調整依頼を発行する。なお、需給調整依頼を個々の需要家の契約規模やその時点での需要にあわせて自動生成する機構を導入することもできる。
【0176】
また、自動化により、需給調整をする/しないの二段階から、消費可能電力上限を徐々に絞っていくという方式に切り替えることも考えられる。この場合は、需給調整がはじまると
1)空調が弱くなり、サーバ機器なども省エネモードで動作する
2)止めても良い負荷(複数系統のエレベータやオフィスのプリンタなど)が止められる
3)止めても良い(機器保全でない)空調が止められる
4)生産設備の停止計画が優先度順に実行される
といった順序で消費電力削減を実行することで、求められた需給調整に連続的・自動的に対応することができる。
【0177】
ただし、生産設備の停止計画については、当然のことながら納入の遅れなどにつながるため、工程管理システムにおける生産能力の優先順位付けや調整と、本具体例で述べた需給調整のシステムが相互に接続している必要がある。例えば、電力削減を実現するために停止させるラインを、停止による損失額から推定し、損失額の少ないものから順に停止するといったシステムを導入する。
【0178】
<第6の具体例>
次に、第6の具体例として、交通制御の例について説明する。
【0179】
都心部の交通状況は、時々刻々と変わり、また、様々な経済活動に影響を与える情報源となりうる。例えば、混雑状況がリアルタイムに把握できれば、流通の配車計画をそれにあわせて調整することができる。また、センシング技術の発達やネットワーク/ITS連動GPSナビシステムなどの登場にともない、特に車両において、誰がどこをどちらに向けて走っているかを把握することすら可能になってきている。
【0180】
ただし、個々の車両の移動情報を把握することは、プライバシ上の懸念も生み出す。この情報は誰でも自由に利用できる、という性質のものではないことは明らかだろう。しかし、どのような形式の情報がより多くの利益を生みだすかを事前に検討することもまた困難である。
【0181】
そこで、例えば個々の交通システムの要素技術(例えばナンバープレート認識装置や交通状況画像処理の結果など)においては、本実施形態における要求処理装置1に相当する機能を実装し、それらの情報を加工又は集約した結果を交通システムの外側に提供する段階で、特権フロー関数によるデータの匿名化と検証を行う、ということもできる。この方式であれば、交通システムの内部で用いるためには、プライバシ情報も含む生のデータをそのまま取り扱うことができる一方、外部の利用者へもプライバシ情報の漏出の懸念が少ない状態で情報提供および有効活用が可能になる。
【0182】
具体的な特権フロー関数としては、安全でかつ有意義な情報をまず(時刻/時間,カウント)のタプル列に限定し、これ以外は出力しない特権フロー関数が考えられる。これで、個々の時刻又は時間に何台車が通ったのかのみを出力し、いつ/どのような、の判断に関しては、データ利用者側の自由な発想と、自由フロー関数による処理結果に任せる、ということができる。また、将来ニーズの高まりにより新しいデータ形式の出力が求められたときは、新しい特権フロー関数を導入すれば良い。もちろん、より高精細な情報を得られる特権フロー関数を利用するには、何らかの契約により対価を支払う仕組みにしても良く、その場合は、需要者個々の所有者タグを出力にセットした特権フロー関数をFFコードレポジトリ4に登録する。
【0183】
なお、特権フロー関数と自由フロー関数の実行環境を分割する理由をここで説明する。例えば、センサから得られた生の画像や、ナンバープレート情報などを、出力が許された別の形式にエンコードしなおす(例えば、前のイベントとの時刻差分が1ならビット0、2ならビット1、とすることで任意のデータを時系列データにエンコードできる、など)ことが考えられる。これを許さないために、データの内容を操作する段階(例えばナンバープレートの数値を取得し比較する、あるいは、画像を変換して顏DBと照合する、など)のみにおいて専用の特権フロー関数を用意し、出力は、交通システム所有者の所有者タグとする。一方、自由フロー関数が実行される実行環境では、データへの直接アクセスを行うメソッドの呼び出しは、禁止する(例えばJavaの場合は、サンドボックスの適切な設定により禁止する)。
【0184】
なお、以上の各機能は、ソフトウェアとして記述し適当な機構をもったコンピュータに処理させても実現可能である。
また、本実施形態は、コンピュータに所定の手順を実行させるための、あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるためのプログラムとして実施することもできる。加えて該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【0185】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0186】
1…要求処理装置、2…ユーザ装置、3…要求配置装置、4…フロー関数コードレポジトリ、5…作用装置、11…要求受付部、12…フロー関数コードロード部、13…パブリッシュ・サブスクライブ・ブローカ、14…自由フロー関数実行環境、15…特権フロー関数実行環境、16…パブリッシュ・サブスクライブ検証部、17…自由フロー関数所有者タグ設定部、18…特権フロー関数署名検証部、131…パブリッシュ・サブスクライブ処理部、132…送受信インタフェース部、133…チャネル情報記憶部、161…パブリッシャ検証部、162…サブスクライバ検証部
【技術分野】
【0001】
本発明は、データ処理装置、データ処理方法及びプログラムに関する。
【背景技術】
【0002】
従来のパブリッシュ・サブスクライブ・システムの動的アクセス制御については、例えば特許文献1に、コンテンツの発行者(パブリッシャ)から購読者(サブスクライバ)に至るまでのパブリッシュ・サブスクライブ・ネットワーク(Pub−Subネットワーク)における動的アクセス制御機構が開示されている。このアクセス制御では、アクセス制御ルールが、Pub−Subシステムにおける購読者プリンシパルとアクセス形態、フィルタの3つ組によって記述される。例えば、プリンシパル「John Doe」に株価情報を購読依頼することを認めるルールは、[John Doe、購読依頼、タイプ=‘'株価’]のように記述される。
【0003】
この技術においては、以下の2つの問題がある。
(1)コンテンツフィルタを自由に記述することができない(アクセス制限がコンテンツフィルタに強く依存しているため、規定されたコンテンツフィルタ以外のコンテンツフィルタを利用することができない)。
【0004】
(2)データの匿名化等、加工によるアクセス権限の緩和を実現することができない。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−287148公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
従来、データの保護と、データの加工やアクセス制限の緩和を、柔軟かつ安全に可能とする方法が知られていなかった。
【0007】
本発明は、上記事情を考慮してなされたもので、データの保護と、データの加工やアクセス制限の緩和を、柔軟かつ安全に可能とするデータ処理装置、データ処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、送信装置からデータを受信し、該データを処理して受信装置へ送信することの可能なデータ処理装置であって、前記送信装置から前記データを受信するのに先立って、前記送信装置に係る所有者を示す所有者情報が、前記データ処理装置に係る所有者を示す所有者情報に適合することを検証し、前記受信装置へ前記データを送信するのに先立って、前記受信装置に係る所有者を示す所有者情報が、前記データに係る所有者を示す所有者情報に適合することを検証する第1の検証部と、前記送信装置に係る前記検証に成功した場合にのみ、前記送信装置から前記データを受信することが可能であり、前記受信装置に係る前記検証に成功した場合にのみ、前記受信装置へ前記データを送信することが可能である中継部と、データ処理の内容を任意に設定可能な自由フロー関数を実行する第1の実行部と、前記自由フロー関数が実行された場合に該自由フロー関数が出力するデータに係る所有者を示す所有者情報を、該自由フロー関数が入力するデータに係る所有者を示す所有者情報に基づいて設定する設定部と、データ処理の内容を任意に設定可能な特権フロー関数の正当性を、該特権フロー関数内に記載されている第1の情報に基づいて検証する第2の検証部と、前記特権フロー関数に係る前記検証に成功した場合にのみ、前記特権フロー関数を実行することが可能であるとともに、該特権フロー関数が実行された場合に該特権フロー関数が出力するデータに係る所有者を示す所有者情報を、該特権フロー関数内に記載されている第2の情報に基づいて設定する第2の実行部とを備えたことを特徴とする。
【発明の効果】
【0009】
本発明によれば、データの保護と、データの加工やアクセス制限の緩和を、柔軟かつ安全に実現することが可能になる。
【図面の簡単な説明】
【0010】
【図1】本発明の一実施形態に係る情報処理システムの構成例を示す図である。
【図2】Pub−Subブローカ及びPub−Sub検証部の内部構成例を示す図である。
【図3】パブリッシュ及びサブスクライブについて説明するための図である。
【図4】所有者タグセットについて説明するための図である。
【図5】所有者タグセットを所有者タグが充足するかどうかを検証するアルゴリズムの一例を示す図である。
【図6】特権フロー関数の定義テーブルの一例を示す図である。
【図7】外部からのサブスクライブ要求に対する検証のアルゴリズムの一例を示す図である。
【図8】自由FF実行環境における出力チャネルの所有者タグのセットの設定のアルゴリズムの一例を示す図である。
【図9】パブリッシュ受付時の検証のアルゴリズムの一例を示す図である。
【図10】同実施形態の情報処理システムの要求配置の動作手順の一例を示すフローチャートである。
【図11】同実施形態の情報処理システムのパブリッシュ受け付け、要求配置及びサブスクライブの際に検証を行う場合の動作手順の一例を示すフローチャートである。
【図12】同実施形態の要求処理装置のパブリッシュ時の動作手順の一例を示すフローチャートである。
【図13】用紙残量閾値判定関数の擬似コードの一例を示す図である。
【図14】本実施形態の動作の一例について説明するための図である。
【図15】本実施形態の動作の一例について説明するための図である。
【図16】本実施形態の動作の一例について説明するための図である。
【図17】本実施形態の動作の一例について説明するための図である。
【図18】本実施形態の動作の一例について説明するための図である。
【図19】本実施形態の動作の一例について説明するための図である。
【図20】本実施形態の動作の一例について説明するための図である。
【発明を実施するための最良の形態】
【0011】
以下、図面を参照しながら本発明の実施形態について説明する。
【0012】
図1に、本発明の一実施形態に係る情報処理システムの構成例を示す。
【0013】
本実施形態の情報処理システムは、パブリッシュ・サブスクライブ・モデル(Publish−Subscribeモデル)を前提とする場合を例にとって説明する。
【0014】
また、以下において具体例を用いて説明する場合には、本実施形態の情報処理システムが、テナントが入居するビル内に設けられ、ビル内の設備等の監視・制御等に利用される場合を例にとって説明する。
【0015】
図1において、1は要求処理装置(データ処理装置)、2はユーザ装置、3は要求配置装置、4はフロー関数コードレポジトリ(FFコードレポジトリ)、5はパブリッシャとなる作用装置(送信装置)、6はサブスクライバとなる作用装置(受信装置)である。
【0016】
各装置は、例えば、図示しないネットワークを介して通信可能である。
【0017】
図1において、各装置は1台ずつ示されているが、システム中に各装置がそれぞれ任意台数ずつ存在して構わない。
【0018】
個々の作用装置は、バブリッシャとしてのみ動作可能であっても良いし、サブスクライバとしてのみ動作可能であっても良いし、バブリッシャとサブスクライバの両方として動作可能であっても良い。
【0019】
各装置の概要を下記に示す。
【0020】
作用装置5は、要求処理装置1へデータを送信する装置である。
【0021】
作用装置6は、要求処理装置1からデータを受信する装置である。
【0022】
個々の作用装置5,6は、一意な識別情報(ID)を持ち識別可能であるとする。
【0023】
ユーザ装置2は、利用者により記述されたユーザ要求を、要求配置装置3に送出する装置である。
【0024】
要求配置装置3は、ユーザ装置2から受けた要求を、要求処理装置1に配置する装置である。
【0025】
要求処理装置1は、1又は複数の作用装置5からデータを受信し、受信したデータ又はこれを加工したものを、作用装置6へ送信する装置である。また、ユーザ装置2と作用装置5,6との間の仲立ちを行う装置である。
【0026】
FFコードレポジトリ4は、フロー関数コード(FFコード)を蓄積するデータベースである。
【0027】
図1に示されるように、要求処理装置1は、要求受付部11、フロー関数コードロード部(FFコードロード部)12、パブリッシュ・サブスクライブ・ブローカ(以下、Pub−Subブローカ)(中継部)13、自由フロー関数実行環境(以下、自由FF実行環境)(第1の実行部)14、特権フロー関数実行環境(以下、特権FF実行環境)(第2の実行部)15、Pub−Subブローカ13に付随するパブリッシュ・サブスクライブ検証部(以下、Pub−Sub検証部)(第1の検証部)16、自由FF実行環境14に付随する自由フロー関数所有者タグ設定部(以下、自由FF所有者タグ設定部)(設定部)17、特権FF実行環境15に付随する特権フロー関数署名検証部(以下、特権FF署名検証部)(第2の検証部)18を備えている。
【0028】
図2に、Pub−Subブローカ13とPub−Sub検証部16の内部構成例を示す。図2に示されるように、Pub−Subブローカ13は、パブリッシュ・サブスクライブ処理部131、送受信インタフェース部132、チャネル情報記憶部133を含む。
【0029】
本実施形態では、パブリッシャである作用装置5と、サブスクライバである作用装置6と、(本実施形態においてサブスクライバ・パブリッシャとなる)自由フロー関数を実行する自由フロー関数実行環境14と、(本実施形態においてサブスクライバ・パブリッシャとなる)特権フロー関数を実行する特権フロー関数実行環境15との間のデータの受け渡しは、仮想的な通信路であるチャネルを介して行われる。パブリッシュ・サブスクライブ処理部131は、それらの間でデータを中継するための処理を行う。チャネル情報記憶部133は、各チャネルに関する情報(例えば、どの送信者がそのチャネルにデータを流し、どの受信者がそのチャネルからデータを受けるか、などの情報)を記憶する。送受信インタフェース部132は、外部の装置と通信を行うためのものであり、外部の装置である作用装置5,6との間のデータの受け渡しには、送受信インタフェース部132を介した通信が必要となる。これに対して、自由フロー関数実行環境14又は特権フロー関数実行環境15との間のデータの受け渡しは、チャネルを介するだけで可能である。なお、送受信インタフェース部132は、Pub−Sub検証部16の外部にあっても構わない。
【0030】
また、図2に示されるように、Pub−Sub検証部16は、パブリッシャである作用装置5の検証を行うパブリッシャ検証部161と、パブリッシャである作用装置6の検証を行う、サブスクライバ検証部162とを含む。
【0031】
以下、本実施形態について詳しく説明する。
【0032】
まず、チャネル、パブリッシュ、サブスクライブ、Pub−Subブローカ13について説明する。
【0033】
「チャネル」は、パブリッシュ・サブスクライブ・モデルに基づく仮想的な通信路に相当するものである。
【0034】
パブリッシュ・サブスクライブ・モデルでは、通常の要求−応答モデルと異なり、所望するデータが流れる特定のチャネルに対して、データ送付先(データの受信側)となるサブスクライバの情報を事前に登録しておき、データの送信側となるパブリッシャが、それぞれのタイミングで、データを当該特定のチャネルに送出すると、当該特定のチャネルにデータが流れたタイミングで、そのデータが、当該特定のチャネルに対して事前に登録された(1又は複数の)サブスクライバに送信される。パブリッシュ・サブスクライブ・モデルにおいて、パブリッシャとサブスクライバとの通信の仲立・中継をするのがいわゆるブローカと呼ばれるサーバである。
【0035】
本実施形態では、要求処理装置1のPub−Subブローカ13が、パブリッシュ・サブスクライブ・モデルにおけるブローカの役割に相当する役割を担う。すなわち、Pub−Subブローカ13は、パブリッシャとなる作用装置5とサブスクライバとなる作用装置6との通信の仲立・中継をする。
【0036】
以下、チャネルに対してデータを送出することを「パブリッシュ」、特定のチャネルからデータを受信するために、受信側の情報を当該特定のチャネルに対して登録することを「サブスクライブ」と呼ぶものとする。
【0037】
ところで、本実施形態では、要求処理装置1において、作用装置5から受信したデータを、後述するフロー関数により処理した後に、作用装置6へ送信することができる。このために、本実施形態では、フロー関数についても、データの受け渡しを、チャネルを介して行うものとしている。すなわち、本実施形態では、データの生成者である作用装置5と、データの需要者である作用装置6と、フロー関数(自由フロー関数、特権フロー関数)とが、チャネルを経由して、データを交換する。
【0038】
ここで、フロー関数について説明する。
【0039】
「フロー関数」は、特定の1又は複数のチャネルをサブスクライブし、該チャネルに係るデータを入力として、所定のタイミングで(例えば、サブスクライブ先のチャネルへ、データが出力されたイベントを契機に)、所定の処理(所定の演算及び又は判断など)を行い、その結果得られるデータを、必要に応じて、特定の1又は複数のチャネルに対してパブリッシュする関数である。なお、所定の処理の結果によっては、パブリッシュを行わない場合もある。フロー関数は、基本的にはどのような処理も可能であり、例えば、チャネルの情報を加工し、センサネットワークから有益な情報を抽出し、あるいは、その情報から環境に作用するアクチュエータを制御したりすることも可能である。フロー関数の実体は、要求処理装置1上に配置される。
【0040】
本実施形態では、フロー関数には、「自由フロー関数」と「特権フロー関数」とがある。自由フロー関数については、任意の利用者(例えば、施設管理者、施設利用者や、第三者)が、その処理内容を自由に記述することができる。これに対して特権フロー関数については、特権を有する者(例えば、施設管理者)のみが処理内容を規定することができる。言い換えると、特権を有する者により規定された処理内容だけが実行可能である(特権を有する者以外の者が所望の特権フロー関数を実行させたい場合には、例えば、特権を有する者に、その所望の特権フロー関数を用意してもらう必要がある)。なお、フロー関数の記述には、例えばJava(登録商標)等のプログラミング言語などが利用可能である。
【0041】
自由フロー関数は、任意のデータ入力チャネルに対して実行することができる。すなわち、作用装置5から受信されたデータと、他の自由フロー関数が出力したデータと、特権フロー関数が出力したデータとのいずれを入力とすることも可能である。また、入力するチャネルの個数、組み合わせは任意である。
【0042】
同様に、特権フロー関数は、任意のデータ入力チャネルに対して実行することができる。すなわち、作用装置5から受信されたデータと、自由フロー関数が出力したデータと、他の特権フロー関数が出力したデータとのいずれを入力とすることも可能である。また、入力するチャネルの個数、組み合わせは任意である。
【0043】
さて、本実施形態では、図3(a)に例示するように、要求処理装置1において、パブリッシャPから受信したデータを、チャネルXを介して、そのままサブスクライバSに送信することも可能であるが、そのフローの途中に、1又は複数(任意数)のフロー関数(自由フロー関数及び又は特権フロー関数)を挿入して、所望の機能を実現することが可能である。なお、図3において、実線は、データの流れを、一点鎖線は、パブリッシュを、破線は、サブスクライブをそれぞれ示す。
【0044】
例えば、(1)自由フロー関数F11(又は、特権フロー関数F21)がチャネルXにサブスクライブし、作用装置SがチャネルYにサブスクライブしておき、作用装置PからのデータをチャネルXに流し、自由フロー関数F11(又は、特権フロー関数F21)が、チャネルXからのデータを処理してその結果となるデータをチャネルYに流し、チャネルYのデータを作用装置Sに送信する処理フロー(図3(b)、図15,16参照)、
(2)自由フロー関数F11がチャネルXにサブスクライブし、特権フロー関数F21がチャネルYにサブスクライブし、作用装置SがチャネルZにサブスクライブしておき、作用装置PからのデータをチャネルXに流し、自由フロー関数F11が、チャネルXからのデータを処理してその結果となるデータをチャネルYに流し、特権フロー関数F21が、チャネルYからのデータを処理してその結果となるデータをチャネルZに流し、チャネルZのデータを作用装置Sに送信する処理フロー(図3(c)、図1参照)、
(3)特権フロー関数F21がチャネルXにサブスクライブし、自由フロー関数F11がチャネルYにサブスクライブし、作用装置SがチャネルZにサブスクライブしておき、作用装置PからのデータをチャネルXに流し、特権フロー関数F21が、チャネルXからのデータを処理してその結果となるデータをチャネルYに流し、自由フロー関数F11が、チャネルYからのデータを処理してその結果となるデータをチャネルZに流し、チャネルYのデータを作用装置Sに送信する処理フロー(図19参照)、
(4)自由フロー関数F11(又は、特権フロー関数F21)がチャネルX1とチャネルX2にサブスクライブし、作用装置SがチャネルYにサブスクライブしておき、作用装置P1からのデータをチャネルX1に流し、作用装置P2からのデータをチャネルX2に流し、自由フロー関数F11(又は、特権フロー関数F21)が、チャネルX1とチャネルX2からのデータを入力として処理を行ってその結果となるデータをチャネルYに流し、チャネルYのデータを作用装置Sに送信する処理フロー(図3(d)参照)、
(5)自由フロー関数F11がチャネルX1とチャネルX2にサブスクライブし、特権フロー関数F21がチャネルYにサブスクライブし、作用装置SがチャネルZにサブスクライブしておき、作用装置P1からのデータをチャネルX1に流し、作用装置P2からのデータをチャネルX2に流し、自由フロー関数F11が、チャネルX1とチャネルX2からのデータを入力として処理を行ってその結果となるデータをチャネルYに流し、特権フロー関数F21が、チャネルYからのデータを処理してその結果となるデータをチャネルZに流し、チャネルZのデータを作用装置Sに送信する処理フロー(図3(e)参照)、
などの様々な処理フローを実現することができる。
【0045】
チャネルは、例えば、「チャネル識別子」と「データ送付先(データ受信者)のリスト(受信者リスト)」と「許可されたデータ送信者のリスト(送信者リスト)」とを組にしたチャネル情報により管理される。このような情報は、要求処理装置1のPub−Subブローカ13のチャネル情報記憶部133が保持する。
【0046】
なお、チャネル情報に「所有者タグ(所有者タグセット)」の情報を含めても良い。また、これとは別に、「チャネル識別子」と「所有者タグ(所有者タグセット)」との対応を管理しても良い。
【0047】
Pub−Subブローカ13(パブリッシュ・サブスクライブ処理部131)は、例えば、あるチャネルにデータが到着すると、到着したデータを、そのチャネルのチャネル識別子に対応する受信者リストに登録された全ての受信者へ送付する。なお、例えば、あるチャネルにデータが到着した際に、そのチャネルのチャネル識別子に対応する送信者リストに基づき、到着したデータが、そのチャネルについて許可されたデータ送信者からのものかを検査する手順も可能である。この手順では、検査の結果が正しかった場合にのみ、到着したデータを、そのチャネルのチャネル識別子に対応する受信者リストに登録された全ての受信者へ送付する。
【0048】
ただし、後述するように、本実施形態では、作用装置5,6について、所有者タグに基づく検証を行い、この検証に成功した場合にのみ、パブリッシュやサブスクライブ(あるいは、作用装置5はらのデータの受信や、作用装置6へのデータの送信)が可能になるようにしている。
【0049】
次に、所有者タグについて説明する。
【0050】
本実施形態のアクセス制御技術では、作用装置5,6及び要求処理装置1並びに要求処理装置1内で扱われるデータに係るチャネルについて、所有者という概念を利用する。
【0051】
本実施形態では、所有者を示す情報として、所有者タグを用いる。
【0052】
「所有者タグ」は、任意数の所有者を示す識別子(所有者ID)のリストにより構成される。
【0053】
所有者タグは、機器(本実施形態では、要求処理装置1又は作用装置5,6)の所有者、作用装置5からの入力データに係るチャネルの所有者、又は特定の種類のプログラム(本実施形態では、特権フロー関数若しくは自由フロー関数)の出力データに係るチャネルの所有者を示す情報である。
【0054】
所有者タグは、基本的には、要求処理装置1が、パブリッシャとなる作用装置5からデータの入力や、サブスクライバとなる作用装置6へのデータの送信に先立って、所有者タグの適合性の検証を行うために利用される。
【0055】
例えば、「ビル管理者の所有者ID」と「ビル利用者1の所有者ID」と「ビル利用者2の所有者ID」との和集合からなる所有者タグに対しては、「ビル管理者の所有者ID」と「ビル利用者1の所有者ID」と「ビル利用者2の所有者ID」の全部又は一部のみからなる所有者タグが適合し、「ビル管理者の所有者ID」「ビル利用者1の所有者ID」「ビル利用者2の所有者ID」以外の所有者IDを一つでも含むものは適合しないこととなる。適合性の検証に成功した場合にのみ、そのデータが利用可能(サブスクライブ可能)になり、あるいは、要求処理装置1にデータを送信可能(パブリッシュ可能)になる。
【0056】
装置については、例えば、権限を有する管理者等が予め当該装置に対して、(1又は複数の)所有者を含む所有者タグを設定する。なお、作用装置5,6の所有者タグは、作用装置5,6に設定して、作用装置5,6から要求処理装置1のPub−Subブローカ1へ伝えるようにしても良いし、例えば、要求処理装置1内(例えば、Pub−Subブローカ13内)に、作用装置5,6の識別情報と所有者タグとを対応付けて記憶しておき、作用装置5,6から要求処理装置1へ識別情報を伝え、要求処理装置1は、伝えられた識別情報からその作用装置5,6の所有者タグを得るようにしても良い。
【0057】
一つの作用装置5から入力したデータ(外部からのデータ)を流すチャネルには、その入力となる作用装置5の所有者タグがそのまま与えられるものとする。
【0058】
一つのデータを入力とする(一つのチャネルにサブスクライブする)自由フロー関数が出力するデータに係るチャネルには、それが入力とするデータに係るチャネル(それがサブスクライブするチャネル)の所有者タグがそのまま与えられるものとする。
【0059】
特権フロー関数が出力するデータに係るチャネルには、詳しくは後述するが、当該特権フロー関数内に記載された情報に基づいて、所有者タグが設定される。
【0060】
ただし、自由フロー関数の出力データのチャネルや、外部から入力したデータのチャネルについては、実際には、入力とするデータに係る所有者タグが複数になり得る(複数のチャネルにサブスクライブする場合に、所有者タグが複数になる)。そこで、それを示すために、自由フロー関数の出力データのチャネルや、外部からデータしたデータのチャネルについて、それらに与えられる所有者を示す情報を、「所有者タグセット」と呼ぶ。
【0061】
所有者タグセットは、所有者タグ及び又は所有者タグセットを並列で結合した形であり、本実施形態では、それぞれの所有者タグ及び又は所有者タグセットに含まれる所有者の識別子の積集合として定義するものとする。
【0062】
例えば、管理者と利用者とが別々の環境の場合(例えば、貸しオフィスにおける、ビル管理者とテナントとの関係のような場合)において、個々の利用者が占有している設備については、当該利用者のみを含む所有者タグを設定し、管理者と個々の利用者とが共有している設備については、管理者と当該利用者とを含む所有者タグを設定する。例えば、図4に示すように、「ビル利用者1」と「ビル管理者」とからなる「所有者タグ1」のデータと、「ビル利用者2」と「ビル管理者」とからなる「所有者タグ2」のデータとの両方を用いた自由フロー関数による演算の結果であるデータを考えると、そのデータに係るチャネルに付与される所有者タグは、それらのタグを形成する集合の積集合となり、この場合、「所有者タグ1」と「所有者タグ2」に共通する「ビル管理者」となる。よって、この演算結果のデータは、「ビル管理者」を含む「所有者タグ」を持つ場合にのみ利用可能、すなわち、そのデータに係るチャネルにサブスクライブ可能となる(ビル管理者の所有者ID以外の所有者IDを一つでも含む所有者タグを持つ場合は、適合しないことになる)。
【0063】
図5に、所有者タグセットを所有者タグが充足するかどうかを検証するアルゴリズム(共通サブルーチン)の例を示す。
【0064】
作用装置5は、通信機能を持ち、要求処理装置1へデータを送信する装置である。作用装置6は、通信機能を持つ、求処理装置1からデータを受信する装置である。本実施形態では、作用装置5は、例えばセンサなどの環境との相互作用を行う機能を持ち、作用装置6は、例えばアクチュエータなどの環境との相互作用を行う機能を持つ。
【0065】
バブリッシャとなる作用装置5は、データ(例えばセンサの観測値)をチャネルに出力し、サブスクライバとなる作用装置6は、チャネルからテータ(例えばアクチュエータの命令)を与えられる。
【0066】
作用装置5,6には、それぞれ、任意数の所有者の組からなる所有者タグが設定される。所有者タグは、作用装置5がパブリッシュしたデータが流れるチャネルにおいては、所有者タグセットを構成し、該所有者全てが関係者である作用装置6だけしかデータを受信(サブスクライブ)できないことを規定する(所有者タグセットは、各入力の積集合により規定されるため)。逆に、あるチャネルのデータ受信のためのサブスクライブ要求においては、該チャネルに設定された所有者タグセットが作用装置6の所有者タグを包含していればサブスクライブ可能である。
【0067】
要求処理装置1は、ユーザ装置2と作用装置5,6との間の仲立ちを行う。要求処理装置1は、各作用装置5,6が利用するチャネルを管理し、データの送受信の宛先管理を行う。同時に、ユーザ装置2により与えられたフロー関数を実体化し、データ処理を行う。
【0068】
要求処理装置1のPub−Subブローカ13は、前述したように、パブリッシュ・サブスクライブ・モデルにおけるブローカの役割に相当する役割を担う。すなわち、作用装置5からデータを受信し、また、作用装置6へデータを送信するユニットである。Pub−Subブローカ13は、例えば、パブリッシュとサブスクライブの各動作に関して、Pub−Sub検証部16により保護される。また、前述したように、各チャネルには、入力データの源(パブリッシャ)に基づく所有者タグが規定される。
【0069】
Pub−Sub検証部16は、作用装置5からデータを受信するのに先立って(例えば、パブリッシュ受け付け時に)、その作用装置5の所有者タグが、当該要求処理装置1の所有者タグに適合することを検証するとともに、作用装置6へデータを送信するのに先立って(例えば、サブスクライブ時に)、その作用装置6の所有者タグが、当該要求処理装置1の所有者タグに適合することを検証するユニットである。Pub−Subブローカ13は、前者の検証に成功した場合にのみ、作用装置5からデータを受信することが可能になる(あるいは、作用装置5のパブリッシュが可能になる)。また、後者の検証に成功した場合にのみ、作用装置6へデータを送信することが可能になる(あるいは、作用装置6のサブスクライブが可能になる)。
【0070】
自由FF実行環境14及び特権FF実行環境15は、それぞれ、自由フロー関数及び特権フロー関数を実行するための実行環境である。いずれも、例えばJavaのサンドボックス付き仮想マシン(すなわち、実行できる操作に制約を付けたプログラム実行環境)などを用いて構築することができる。
【0071】
自由FF実行環境14は、自由フロー関数を実行するユニットである。自由フロー関数は、データ処理の内容を任意に設定可能である。また、特権フロー関数と異なり、自由フロー関数の正当性の検証は不要である。自由FF実行環境14は、自由FF所有者タグ設定部17に保護される。
【0072】
自由フロー関数自身は、特権フロー関数と異なり、所有者タグに対する操作が許されず、全ての入力チャネルから合成された所有者タグセットを、出力のチャネルに設定しなければならない。このタグセットの設定を強制する保護機構が、自由FF所有者タグ設定部17である。
【0073】
自由FF所有者タグ設定部17は、実行された自由フロー関数が出力したデータに係るチャネルの所有者タグセットを、自由フロー関数が入力するデータに係るチャネルの所有者タグに基づいて設定するユニットである。例えば、自由フロー関数が入力するチャネルが一つの場合には、該チャネルに係る所有者タグと同一のもの(1又は複数の所有者)に設定し、自由フロー関数が入力するチャネルが複数の場合には、該複数のチャネルのすべてに共通して所有者となっているもの(1又は複数の所有者)のみを設定する(すなわち、全チャネルの所有者タグについて論理積を取る)。
【0074】
特権FF実行環境15は、特権フロー関数を実行するユニットである。特権フロー関数は、データ処理の内容を任意に設定可能である。また、特権フロー関数は、その出力データを流すチャネルの所有者タグを操作することができる。特権FF実行環境15は、特権FF署名検証部18に保護される。
【0075】
特権フロー関数は、上記のように出力チャネルの所有者タグを操作できるので、特権フロー関数に任意のものがロードされてしまうと、データ漏洩に繋がるなどの危険性があるため、コードの正当性の検証を行う必要がある。この検証を行い、検証に成功したコードのみを特権フロー関数として実行することを強制する保護機構が、特権FF署名検証部18である。
【0076】
特権FF署名検証部18は、特権フロー関数の正当性を検証するユニットである。特権FF実行環境15は、この検証に成功した場合にのみ、特権フロー関数を実行することが可能である。
【0077】
例えば、特権フロー関数を、事前に要求処理装置1に設定された管理者等の電子鍵(電子鍵は、例えば、公開鍵でも良いし、共有鍵でも良い。)による電子署名が為されたものに限ることとする(この署名の検証に成功したコードのみが特権フロー関数として実行可能になる)。
【0078】
例えば、(その出力チャネルの所有者タグセットを操作するための情報を含む)特権フロー関数に、施設管理者Xの電子鍵による電子署名を付与するものとした場合において、ある特権フロー関数が施設管理者Xにより定義されたものであることは、例えば、特権FF実行環境15に設定された管理者Xの電子鍵と、その特権フロー関数に付随して得られた電子署名とにより検証することができる。この検証は、例えば、一般的な公開鍵暗号での検証と同様で構わない。
【0079】
一方、特権FF実行環境15で特権フロー関数が実行された場合に、その実行された特権フロー関数が出力するデータを流すチャネルに係る所有者タグは、(自由フロー関数の場合と異なって、)当該特権フロー関数内に記載されている情報(所有者を指定する情報)に基づいて特権FF実行環境15により設定される。
【0080】
出力チャネルの所有者タグを操作する方法としては、幾つかの方法が可能である。例えば、特権フロー関数が入力したデータのチャネルに係る所有者タグにかかわらずに、出力チャネルの所有者タグを、当該特権フロー関数内に記載されている情報が示す所有者のみを含む内容に強制的に設定する方法がある。また、例えば、特権フロー関数が入力したデータのチャネルに係る所有者をもとに上記の自由フロー関数と同様にして求めた所有者タグに、当該特権フロー関数内に記載されている情報が示す所有者タグを追加したものを、出力チャネルの所有者タグに設定する方法も可能である(また、追加の他に、削除、変更などの操作を加えることも可能である)。
【0081】
図6に、特権フロー関数の内容(定義テーブル)の一例を示す。この例では、特権フロー関数の定義は、(a)該特権フロー関数のコード、(b)入力チャネルが満たすべき所有者タグセット、(c)出力チャネルに設定される所有者タグ、(d)署名者XのID、(e)署名時刻、(f)有効期限の組により行う。
【0082】
検証は、特権フロー関数の定義情報を含む情報の組を、所定の方法(例えば、各々のビット列表現を結合することによる、などの方法)によりビット列に変換し、このビット列に対して署名者Xの秘密鍵で署名を行い、特権FF実行環境15には、検証のため署名者Xの公開鍵を設定する、などといったプロセスで行うことができる。
【0083】
以上6項目のうち、(b)の所有者タグセットについては、例えば、対象となるチャネルの所有者タグが、(b)の所有者タグセットに包含される場合に、そのチャネルを受け付けることができるとする方法の他に、例えば、対象となるチャネルの所有者タグが、(b)の所有者タグセットに一致する場合にのみ、そのチャネルを受け付けることができるとする方法なども可能である。なお、(b)の入力チャネルが満たすべき所有者タグセットは、空でも良い。(b)が空の場合は、この特権フロー関数は、どのようなチャネルをも入力とすることができる(どのようなデータも入力として受け付けることができる)ものとする。なお、(b)のフィールドを空にする変わりに、予め定められた値を記載しても良い。
【0084】
また、(c)の出力チャネルに設定される所有者タグは、空でも良い。(c)が空の場合は、この特権フロー関数の出力データを流すチャネルは、どのサブスクライバでもサブスクライブできる。この場合に、そのチャネルの所有者タグは、例えば、空にする方法、予め定められた値を記載する方法などが考えられる(すなわち、全ての所有者の論理和を示す状態あるいは全ての所有者の論理和を示す情報が記載された状態にすれば良い)。なお、(c)のフィールドを空にする変わりに、予め定められた値を記載しても良い。
【0085】
なお、特権フロー関数として、何も処理をせずに、出力チャネルの所有者タグを操作するだけのものも、実行可能である。この場合には、(a)の該特権フロー関数のコードに、何もしないコード(あるいは、入力をそのまま出力するコード)を記載すればよい。
【0086】
なお、電子署名の生成やその認証のための構成・手順としては、どのようなものを採用しても構わない。その際、(d)署名者XのID、(e)署名時刻、(f)有効期限の部分は、採用する構成・手順に応じて、適宜修正して構わない。
【0087】
特権フロー関数の実行には、その正当性の検証に成功する必要があり、そのために例えば電子署名等の情報を特権フロー関数に付与することについては、例えばシステムの管理者による権限を有する者等のみが可能であるので、管理者等のみが、上記の(a)該特権フロー関数のコード、(b)入力チャネルが満たすべき所有者タグセット、(c)出力チャネルに設定される所有者タグを規定することが可能である。
【0088】
さて、利用者は、1以上のフロー関数(自由フロー関数及び又は特権フロー関数)を利用することによって、所望のデータ処理機能を実現することができる。ただし、利用者が所望する作用装置6の所有者タグが、送信対象となるデータのチャネルに係る所有者タグに適合しない限り、その作用装置6は、そのデータを受信することができない。利用者は、例えば管理者等の許諾等をもって、特権フロー関数によって、そのデータのチャネルに係る所有者タグを、利用者が所望する作用装置6の所有者タグが適合するようなものに設定することができ、この結果、その作用装置6は、そのデータを受信することができるようになる。
【0089】
FFコードロード部12は、例えばJavaで言うところのクラスローダに相当するものであり、自由FF実行環境14及び特権FF実行環境15でそれぞれ実行する個々の自由フロー関数及び特権フロー関数の実行イメージを、適切に設定されたファイル又はネットワークに接続されたサーバ等であるFFコードレポジトリ4からロードする。ここでいう「適切な設定」とは、フロー関数の名前からロードすべき実行イメージの場所が分かることであり、静的に設定されていても良いし、フロー関数の識別を実行イメージの識別子で行う(すなわち、フロー関数を指定することは、実行イメージを指定することに等しい状態にする。)ことによっても良い。
【0090】
要求受付部11は、要求配置装置3から、フロー関数の実体化を要求するフロー関数実体化要求を受け付ける。要求配置装置3からのフロー関数実体化要求は、少なくとも{実体化すべきフロー関数の識別子,フロー関数のサブスクライブ先}の組を含む。なお、要求配置装置3と要求処理装置1との間には、適切なセキュリティの設定が行われていることが望ましい。これは、例えば、pre-shared keyや公開鍵認証などの良く知られた方法により相互に認証を行うことによって実装することができる。
【0091】
ユーザ装置2は、センサネットワーク等のシステムの利用者が、これに対するユーザ要求を記述し、要求配置装置3に送出する装置である。利用者により記述されたユーザ要求は、フロー関数の選択と、その入出力に関連付けられたチャネルのリンク(グラフ)で定義する。
【0092】
要求配置装置3は、ユーザ装置2が記述したユーザ要求を、要求処理装置1に配置する。要求配置装置3は、情報処理システムに含まれる要求処理装置1とその所有者タグとを管理し、ユーザ装置2の要求に含まれるフロー関数を、所有者タグの条件を満たす要求処理装置1に生成する。
【0093】
なお、個々のフロー関数は、サブスクライバであるので、サブスクライブ先の所有者タグによって入力の所有者タグセットが決定される。
【0094】
入力の所有者タグセットは、Pub−Subブローカ13における外部からのサブスクライブ要求に対する検証のアルゴリズムによって検証可能である。図7に、そのアルゴリズム例を示す。図7の例では、サブスクライバ先のチャネルの所有者タグセットが、サブスクライバの所有者タグを包含する場合に、充足(適合)となる。
【0095】
また、出力の所有者タグセットは、特権フロー関数の場合は、特権フロー関数の定義により決定される。自由フロー関数の場合は、自由FF実行環境14における出力チャネルの所有者タグのセットの設定のアルゴリズムにより決定される。図8に、そのアルゴリズム例を示す。
【0096】
出力の所有者タグセットは、Pub−Subブローカ13のPub−Sub検証部16におけるパブリッシュ受付時の検証のアルゴリズムにより検証可能である。図9に、そのアルゴリズム例を示す。
【0097】
要求配置装置3が受け付けた個々のフロー関数は、入出力2つの検証を満たす要求処理装置1に順次配置される。なお、入力が決定されないと出力の所有者タグセットは、決定できないため、配置は、入力寄り(センサ等の作用装置5寄り)から開始し、順次、出力寄り(アクチュエータ等の作用装置6寄り)に向かって配置を行う。
【0098】
図10に、本実施形態の情報処理システムの要求配置の動作手順の一例を示す。
【0099】
ユーザ装置2から要求配置装置3へ、利用者により記述されたユーザ要求が送信される(ステップS1)。
【0100】
要求配置装置3は、受信したユーザ要求を、適切な要求処理装置1へ転送する(ステップS2)。該要求を受信した要求処理装置1では、要求受付部11で、該ユーザ要求を受け付ける。
【0101】
要求受付部11は、受け付けたユーザ要求を、FFコードロード部12へ送る(ステップS3)。
【0102】
FFコードロード部12は、与えられたユーザ要求に基づいて、適切な実行イメージをFFコードレポジトリ4からロードして、自由FF実行環境14及び又は特権FF実行環境15へ与える(ステップS4)。
【0103】
図11に、作用装置4のパブリッシュ受け付け時、要求処理装置1の要求配置時及び作用装置5のサブスクライブ時に検証を行う場合の動作手順の一例を示す。ここでは、自由フロー関数と特権フロー関数が実行される場合を例にとって説明する。
【0104】
まず、Pub−Sub検証部16が、パブリッシャである作用装置5について、所有者タグに基づく検証を行う(ステップS11)。検証に失敗した場合には(ステップS12)、この時点でエラーとなる(ステップS14)。
【0105】
検証に成功した場合に(ステップS12)、Pub−Subブローカ13は、このデータを流すチャネルに、作用装置5と同じ所有者タグを付与する(ステップS13)。
【0106】
次に、自由FF所有者タグ設定部17は、上記チャネルにサブスクライブする自由フロー関数の出力データを流すチャネルに、所有者タグの設定を行う(ステップS15)。
【0107】
次に、特権FF署名検証部18は、上記チャネルにサブスクライブする特権フロー関数について、署名の検証を行う(ステップS16)。検証に失敗した場合には(ステップS17)、この時点でエラーとなる(ステップS19)。
【0108】
検証に成功した場合に(ステップS17)、特権FF実行環境15は、この特権フロー関数の出力データを流すチャネルに、所有者タグを設定する(ステップS18)。
【0109】
次に、Pub−Sub検証部16が、サブスクライバである作用装置6について、所有者タグに基づく検証を行う(ステップS20)。検証に失敗した場合には(ステップS21)、この時点でエラーとなる(ステップS22)。
【0110】
検証に成功した場合に(ステップS21)、このフローが可能となる。
【0111】
なお、上記手順は、自由フロー関数や特権フロー関数の有無やその数に応じて、適宜変更される。まず、個々の自由フロー関数に応じて、ステップS15の部分が実行される。自由フロー関数が実行されない場合には、ステップS15の部分は省かれる。また、個々の特権フロー関数に応じて、ステップS16〜S19の部分が実行される。特権フロー関数が実行されない場合には、ステップS16〜S19の部分は省かれる。また、自由フロー関数に対応するステップS15の部分や、特権フロー関数に対応するステップS16〜S19の部分は、フロー関数が実行される順番に従って実行される。
【0112】
ところで、上記の所有者タグの設定及び検証は、上記タイミングに加えて(或いは、これに代えて)、実際に作用装置5からデータを受信し、これをフロー関数で処理して、作用装置6に送信するときに行うことも可能である。
【0113】
図12に、この場合の動作手順の一例を示す。ここでは、自由フロー関数と特権フロー関数が実行される場合を例にとって説明する。
【0114】
まず、パブリッシャである作用装置5が、所定のタイミングでデータを要求処理装置1へ送信する。要求処理装置1において、該データを受信すると(ステップS31)、Pub−Sub検証部16がパブリッシャである作用装置5について所有者タグに基づく検証を行う(ステップS32)。検証に失敗した場合には(ステップS33)、この時点でエラーとなる(ステップS35)。
【0115】
検証に成功した場合に(ステップS33)、Pub−Subブローカ13は、このデータを流すチャネルに、所有者タグを設定する(ステップS34)。
【0116】
次に、自由FF実行環境14は、上記チャネルから受け取ったデータを入力として、自由フロー関数を実行する(ステップS36)。自由FF所有者タグ設定部17は、自由フロー関数の出力データを流すチャネルに、所有者タグを設定する(ステップS37)。
【0117】
次に、特権FF署名検証部18は、上記チャネルにサブスクライブする特権フロー関数について、署名の検証を行う(ステップS38)。検証に失敗した場合には(ステップS39)、この時点でエラーとなる(ステップS41)。
【0118】
検証に成功した場合に(ステップS39)、特権FF実行環境15は、上記チャネルから受け取ったデータを入力として、特権フロー関数を実行するとともに、出力データを流すチャネルに、所有者タグを設定する(ステップS40)。
【0119】
次に、Pub−Sub検証部16がサブスクライバである作用装置6について所有者タグに基づく検証を行う(ステップS42)。検証に失敗した場合には(ステップS43)、この時点でエラーとなる(ステップS45)。
【0120】
検証に成功した場合に(ステップS43)、Pub−Subブローカ13が、このチャネルのデータを、作用装置6に送信する(ステップS44)。
【0121】
なお、上記手順が、自由フロー関数や特権フロー関数の有無やその数に応じて、適宜変更される点は、図11の場合と同様である。
【0122】
本実施形態により、例えば、管理者と複数の所有者/利用者が存在する環境で、一利用者が、複数の所有者によるデータ(コンテンツ)を混合した状態で操作するフロー関数を定義し、その結果を特権フロー関数経由で匿名化して閲覧する、といったことが可能となる。例えば、複数のテナントが入っているビルがあったときに、個々のテナントの在室人数を合成し、ある閾値を下まわったらビルを節電モードで動作させる、などといったプログラムを、外部のESCO事業者がビル上で実行できる。このとき、本来テナント毎の秘密情報である在室者リストを、外部事業者が操作するプログラムを書き、この秘密性を削除する特権FF(人数のみの情報に落とすなど)によりそのプログラムの結果のみを受け取ることが可能になる。
【0123】
以下、本実施形態の情報処理システムをビル管理システムに適用した幾つかの具体例を用いて説明する。
【0124】
<第1の具体例>
まず、図13〜図16を参照しながら、第1の具体例として、サービス会社との連携の例について説明する。なお、図14は、所有者タグが適合しないチャネルへのサブスクライブが成功しない例(フロー関数を用いない場合)であり、図15は、自由フロー関数が出力チャネルの所有者タグを変更しないため、所有者タグが適合しない例であり、図16は、正しく署名された特権フロー関数が出力チャネルの所有者タグを変更することによって、所有者タグが適合する例である。
【0125】
本具体例は、本実施形態の動作を説明するために単純化した例である。
【0126】
あるビルBに、企業Xが入居しているとする。なお、簡単のため、ここでは、ビルBは企業Xの持ちビルであり、企業Xがビル管理者であるとする。企業Xには、プリンタが一つ存在し(プリンタをP1とする。)、プリンタP1のプリンタ用紙の補充のために、サービス会社Sが存在する。企業Xは、プリンタ用紙が切れないように、また、過大なストックを置かないように、サービス会社Sにプリンタ用紙の管理を委託する。ただし、いつ何枚のプリントアウトを行ったかという情報、あるいは、任意の時点での用紙の残量の情報などをサービス会社Sに通知することは、企業Xにとっては例えば事業活動の活発度などを知らせることと等しいため、望ましくない。
【0127】
そこで、本実施形態により、以下のような構成が可能になる。
【0128】
プリンタP1を、作用装置5として動作するものとし、所有者タグとして企業Xの所有者IDをセットする。企業Xは、一つの要求処理装置1を持つ。要求処理装置1には、企業Xの所有者IDとサービス会社Sの所有者IDからなる所有者タグをセットする。これらは、企業Xにより管理される一つの要求配置装置3に接続され、サービス会社Sは、ユーザ装置2を経由して任意のプログラムを投入することができる。
【0129】
サービス会社Sは、作用装置6として、サービス会社Sの所有者タグがセットされた用紙切れ警報機Aを持つ。用紙切れ警報機Aは、例えば、回転灯のようなものでも良いし、担当者に電子メールなどで用紙切れを通知する装置でも良い。また、ロボットや宅配便・地域内物流サービスなどを用いて半自動的に企業Xに用紙を配送する装置でも良い。
【0130】
プリンタP1は、用紙が使用される度に用紙の残量を数値で出力する。ここでは、例えば、企業Xは、「用紙の残量が100枚を下回ったときにTrueを返す」という用紙残量閾値判定関数fthを、特権フロー関数として登録する。この特権フロー関数の出力所有者タグは、サービス会社Sの所有者IDとする。ただし、特権フロー関数は、登録時に、企業Xによる署名が必要である。なお、この特権フロー関数は、例えば擬似コードで作成される。図13に、用紙残量閾値判定関数fthの擬似コード(threashold関数)の例を示す。
【0131】
ここで、サービス会社Sが、プリンタP1の用紙残量の出力を取得するケースと、自由関数によりプリンタP1の用紙残量の出力を加工した結果を取得するケースについて考える。
【0132】
用紙残量をそのまま用紙切れ警報機Aに与えるものとした場合、図14に示すように、プリンタP1の用紙残量の出力には、企業Xの所有者タグが与えられており、よって、出力チャネルには、企業Xの所有者タグが与えられるが、一方、用紙切れ警報機Aには、サービス会社Sの所有者タグが与えられているので、用紙切れ警報機AがプリンタP1の出力チャネルをサブスクライブしようとしても、Pub−Sub検証部16によりブロックされる。
【0133】
また、図15に示すように、サービス会社Sが導入した自由フロー関数を経由して用紙切れ警報機Aにデータを与えようとしても、同様に、自由FF所有者タグ設定部17により自由フロー関数の出力に企業Xの所有者タグセットが与えられ、この出力チャネルを用紙切れ警報機Aがサブスクライブしようとするときに、Pub−Sub検証部16によりブロックされる。
【0134】
そこで、サービス会社Sが、用紙切れ警報機Aに、サービスのための情報を与えるためには、図16に示すように、用紙残量閾値判定関数fth(特権フロー関数)を経由させれば良い。この特権フロー関数は、企業Xにより署名されており、サービス会社Sは、その内容を操作することはできない。しかし、サービス会社Sがユーザ装置2から要求配置装置3に与えるプログラムの途中に、特権フロー関数を導入することが可能である。特権FF実行環境15により、その出力の所有者タグセットにはサービス会社Sのみが与えられるため、その結果を用紙切れ警報機Aで受信することができる。
【0135】
以上から得られる、サービス会社Sがサービスを実行するためのプログラムの単純な例は、プリンタP1の出力チャネルを用紙残量閾値判定関数fth(特権フロー関数)の入力とし、その出力を用紙切れ警報機Aがサブスクライブすることにより、用紙100枚未満となったことを検出するものである。
【0136】
ここで、さらにサービス会社Sがサービス向上のために、動的にプリンタP1の用紙残量の減り方を予測したいとする。例えば、大きな需要があったときには、残量100枚になってから補充を手配したのでは間に合わない場合もある。そこで、サービス会社Sは、数時間分の用紙残量の履歴を取り、3時間後の用紙残量を線形補完により求める関数fliを新しい自由フロー関数として定義し、FFコードレポジトリ4に登録する。そして、プリンタP1の出力チャネルを関数fliの入力とし、この出力を関数fthの入力とする。このとき、関数fliの出力は、関数fliが自由フロー関数であるため、所有者タグセットとして企業Xが設定されており、直接的には用紙切れ警報機Aで受信することはできない。そこで、先の例と同様、関数fthを経由することにより、企業Xがサービス会社Sに対して認めた情報出力となり、サービス会社Sは、新しい関数による計算結果を、閾値関数の出力として得ることができる。
【0137】
<第2の具体例>
次に、図17,18を参照しながら、第2の具体例として、ビル内機器のアクセス制御の例について説明する。なお、図17は、2つのテナントにより共用される設備の例であり、図18は、特権フロー関数をアカウンティングの窓口として利用する例である。
【0138】
第1の具体例に類似する例として、ビル内機器へのアクセス制御とアカウンティングとを同時に行う例について説明する。本具体例では、ビルには、「個別フロア空調設備」、「共通空調設備」、「給湯設備」、「エレベータ設備」、「照明設備」、「フロア共有のコピー機」、「フロア共有のプリンタ」などが存在するものとする。それぞれの設備・機器は、既知のプロトコルなどを用いた通信手段により設備機器ネットワーク上からアクセス可能であるものとする。また、ビルには、複数のテナントが入っており、本具体例では、1Fに「テナントT1」が、2Fに「テナントT2a」と「テナントT2b」が入居しているものとする。また、ビルには管理者が存在し、これを「ビル管理者BA」とする。
【0139】
ここで、本具体例では、ビル管理者あるいはテナントのユーザ装置2が存在するとする。また、テナントが貸与され管理する要求処理装置1として、テナントT1の要求処理装置1と、テナントT2aとテナントT2bに共用の要求処理装置1が存在するとする。また、テナントT1の要求処理装置1には、「テナントT1とビル管理者BAの所有者タグ」が設定され、テナントT2aとテナントT2bに共用の要求処理装置1には、「テナントT2aとテナントT2bとビル管理者BAの所有者タグ」が設定されているものとする。なお、これら要求処理装置1は、物理的に独立した個々の装置であっても良いし、共有されたハードウェアにソフトウェア的に保護された各々の領域に仮想的に構築されたものであっても良い。
【0140】
また、ビル内には、被制御機器が存在する。これらには、フロア共有機器(フロア空調設備・照明設備等)、設備全体での共有機器(エレベータ等)が存在する。これらの被制御機器は、ビル管理者が直接管理するものであり、テナントが自由に制御できるものではない。そのため、これらの機器には、「ビル管理者BAの所有者タグ」をセットする。なお、テナント向け制御盤に相当する機器には、「テナントの所有者タグ」がセットされるものとする。
【0141】
本具体例では、2Fに設置された空調を代表例として説明する。2Fの空調設備を「AC」とする。2Fのテナントに設置された制御盤について、テナントT2aにおけるものを「制御盤CT2a」と、テナントT2bにおけるものを「制御盤CT2b」とする。空調設備ACには、「ビル管理者BAの所有者タグ」が設定され、制御盤CT2aには、「テナントT2aの所有者タグ」が設定され、制御盤CT2bには、「テナントT2bの所有者タグ」が設定されているものとする。
【0142】
ここで、各々のテナントは、自由に空調が設定できるものとする。ただし、テナントの従業員は、制御盤CT2a又は制御盤CT2bに規定室温と動作要求(ON/OFF)を入力し、制御盤CT2a及び制御盤CT2bは、それぞれ、具備する室温計から空調設備ACへの動作/非動作を入力するものとする。
【0143】
以上のプログラムを略式に記述すると図17のように記述できる。
【0144】
なお、制御盤CT2a及び制御盤CT2bは、以下の原理で動作する。入力は、規定室温(度)・動作要求(on/off)・室温計(度)である。出力は、空調制御要求(on/off)である。動作要求がoffのときには、出力はoffである。動作要求がonであれば、規定室温と室温計を比較し、室温計入力が規定室温よりも高ければonを、そうでなければoffを出力する。
【0145】
さて、ここで、制御盤CT2a及び制御盤CT2bは、それぞれ、所有者タグとしてテナントT2a及びテナントT2bを持つ。これを直接的には空調設備ACの入力とはできない。なぜならば、空調設備ACは、ビル管理者BAの所有者タグを持ち、テナントT2aとテナントT2bを出力として持つチャネルを、サブスクライブすることができないからである。
【0146】
一方、ビル管理者は、どのテナントがどの程度空調設備を利用しているかを知りたいものとする。これは、例えば、別途従量制の課金を行っている場合もあり、また、そうでなくても、例えば、計画節電のために過度の利用に対し制約をかける必要がある場合などがあるからである。
【0147】
そこで、ビル管理者は、各々の制御盤からの入力を受け、出力の所有者タグをビル管理者BAとするアカウンティング特権フロー関数facを用意する。これは、対となるアカウンティングデータベースを持ち、関数facに対してonの制御命令、つまり空調を動作させる命令が通ったときに、その累計時間を計量しアカウンティングデータベースに記録するものである。また、利用量が計画量に比べて著しく高い場合は、onの制御命令を差し止める機能を持たせても良い。
【0148】
ここで、関数facは、テナント毎に用意される。例えば、テナントT2aに向けたfacは、入力チャネルが持つべき所有者タグセットとしてテナントT2aが設定され、誤って又は故意にテナントT2bが空調をテナントT2aへの課金により動作させることができない。もちろん、アカウンティングデータベースもテナント毎に用意される。一方、出力となる所有者タグセットは、ビル管理者BAのものとなる。この特権フロー関数を経由させることにより、前述の擬似プログラムは、図18のようになる。ここで、テナントT2a向けfacをFAC_T2a、テナントT2b向けfacをFAC_T2bと記述する。
【0149】
以上の構成により、テナントからの要求を受け付けつつ、アクセス管理によりアカウンティングを実現する実例を示した。なお、各テナントは、独自に、制御盤の出力部分に、残業申請システムや空調の時間外動作の許認可を行うワークフローシステムを組み込んでも良い。
【0150】
<第3の具体例>
次に、図19を参照しながら、第3の具体例として、ビル内機器制御と在室管理の連動の例について説明する。なお、図19は、空調制御の例である。
【0151】
第2の具体例を拡張して、ビル内機器制御と在室管理とを連動させる例について説明する。ビルの機器及びテナントは、特に述べない限り第2の具体例と同様であるとする。
【0152】
テナントの入居者は、ビルのセキュリティシステムに接続された入退室管理システムを持ち、テナントの従業員又は出入りのある契約業者(清掃業者等)の従業員等が、それぞれ、カードキーにより施錠されたゲート(1FのゲートをG1、2FのゲートをG2とする。)を通過するものとする。ただし、各テナントの従業員に関しては、誰がいつゲートを通過したか、については、各企業の秘密事項であることから、ビルの管理者は、直接的には得ることができないという契約であるとする。
【0153】
なお、ゲートから出てくる情報は秘密であるので、ビル管理者は、直接的にはデータを取得できないようになっている。従って、ゲートG1には「テナントT1の所有者タグ」のみが設定され、ゲートG2には「テナントT2aとテナントT2bの所有者タグ」のみが設定されており、ビル管理者BAが持つ出力機器(「ビル管理者BAの所有者タグ」が設定されている。)においては、ゲートG1/G2の情報は受信できない。
【0154】
ここで、テナントとビル管理者との合意により、ビル管理者は、入室している人数を知ることができるものとする。この合意は、例えば、IDの一覧からその長さを得て、その出力の所有者タグをビル管理者BAとする特権フロー関数を、当該テナントが導入することによって、達成することができる。ビル管理者は、例えばこの在室人数をもとに、電源計画を調整することができる。この様子を図19に示す。
【0155】
図20では、特権フロー関数C1FがゲートG1の出力(入室,カードキーID)又は(退室,カードキーID)の列を読み、現在の1Fの在室人数に変換する。同時に、特権フロー関数C2Fは、ゲートG2の出力を読み、2Fの在室人数に変換する。
【0156】
これらは、以下のアルゴリズムで動作可能である。
1.在室者セットを空で初期化する。
2.ゲートからの入力を待ち、入力に応じて以下のどちらかを実行する。
入室イベント在室者セットにカードキーIDを登録する。
退室イベント在室者セットからカードキーIDを削除する。
3.在室者セットの数を数え、これを出力する。
4.手順2に戻る。
【0157】
なお、ここで言うセットとは、重複を許さない集合を実現するデータ構造である。
【0158】
ビル管理者BAは、この出力を自分が管理する要求処理装置1で受信することができる。
【0159】
在室人数と、個々のテナントとの間で取り交したサービスレベル合意から、1Fの空調機AC1の出力と2Fの空調機AC2の出力を制御することができる。ここでは、1Fの空調機AC1の制御を行う自由フロー関数及び2Fの空調機AC2の制御を行う自由フロー関数を、それぞれ、ACM1及びACM2で表した。
【0160】
この例では、サービスレベル合意は、以下の2項目の組み合わせのリストで取り交されるとする。現時点での在室人数によって、空調出力が制限される仕組みである。これにより、在室人数が少なくなるにつれ省エネ運転となり、在室人数が多いときは、快適運転とすることができる。
・t:最低在室人数閾値(整数)
・m:最大空調出力(0−100)
ACM1とACM2は、いずれも、以下のような動作を行う。
1.仮の最大出力値oを0で初期化する
2.入力を待ち、その人数をpに記録する
3.サービスレベル合意のリストから順番に要素を取り出し、それぞれのtとpについて、
・pがtと等しいかより大きい場合
o=max(o,m)
4.結果のoを出力する
5.手順2に戻る
<第4の具体例>
次に、図20を参照しながら、第4の具体例として、ESCO事業と在室管理の連動の例について説明する。なお、図20は、ビル全体の電源制御と、在室管理との連動の例を示す。
【0161】
ESCO(Energy Service COmpany)と呼ばれる事業形態は、特定の事業所のエネルギー消費を最適化(節電)することを事業として請け負うものである。
【0162】
ここで、あるビルに対する最適なESCO事業に対して、本発明を実施する例を説明する。なお、特に説明のない限り、この具体例は、ここまでの具体例の環境と同様の環境にあるとする。
【0163】
ここで、ESCO事業者がビルの管理者と契約し、契約に基づきビル内の設備・機器の電源制御を行うものとする。一方、各テナントに誰がいつ入室して、いつ退室したか、という情報は、利用の仕方によっては、各テナントのビジネスの動きを推測することができる情報であり、ESCO事業者には、この情報を与えてはならない。一方、ESCO事業者は、ビル内の最適な電源制御を行い、ビルの電力効率をより高めることから利益を得る業態であるため、ビル内の人のアクティビティや機器の利用状況を知り、また、詳細に制御することは、有益なことである。
【0164】
そこで、本実施形態により、ESCO事業者とビル管理者との間の契約に基づくデータ(制御結果の指標)のみをESCO事業者に渡すことを保証しつつ、実際の制御及び制御結果の指標の算出のためのプログラムは、ESCO事業者に自由に開発させることができる。本実施形態は、外部の事業者による自由なプログラミングと、データ流通の境界制御による情報漏曳の防止とを両立させる。
【0165】
その結果、本具体例では、ESCO事業者がより高い能力を発揮し、エネルギー消費/コストの削減に貢献することが期待できる。
【0166】
以下、図20を参照しながら、具体的な具体例を説明する。
【0167】
ビル内には、入退室リーダ、エレベータや空調・照明・給湯などの各種被制御機器が存在する。また、数台の要求処理装置1(図示せず)が存在し、それらのうち1台がESCO事業者を含む外部サービス向けの出入口となっている。
【0168】
ESCOセンターは、別途契約によりビル管理者から入手したビル内の機器構成から、ビル制御に必要なフロープログラムを記述する。記述したプログラムは、ESCOセンターに割り当てられたユーザ装置2より要求配置装置3に与えられる。ここで、ESCOセンターは、必要であればビル内でデータ処理を行うための自由フロー関数を記述し、要求配置装置3へのプログラム投入に先立ってFFコードレポジトリ4に登録する。
【0169】
要求配置装置3は、必要に応じてプログラムを分解し、例えば、入退室リーダの入力を受ける部分は、入退室リーダの近傍の要求処理装置1へ、ESCOセンターへの出力を制御する部分は、外部向けの要求処理装置1へ、といった要領で、各フロー関数を要求処理装置1に配置する。このとき、それぞれの要求処理装置1に設定された所有者タグの制約条件を満たすようにフロー関数を配置し、要求処理装置1間を接続する。
【0170】
具体的に、入退室ゲートGにテナント所有者タグTが、空調機器の入力(制御)側と空調機器の出力(監視)側にそれぞれビル管理者の所有者タグBAが設置されていたとする。このとき、第3の具体例で説明したのと同様の仕組みで、空調の監視や制御を行うことが出来る。前出の具体例との相違は、ESCOセンターはビルの外にあり、また、ビル管理者は複数のESCO事業者を契約によって切り替えて用いることができる点である。
【0171】
<第5の具体例>
次に、第5の具体例として、電力インフラ事業の例について説明する。
【0172】
電力供給が需要に追い付かなくなると、需要家に対して需給調整(例えば、需給調整契約、という契約を結んだ需要家に対して、普段の電力の割引と需給逼迫時の電力カット依頼を行うこと。)を行う場合がある現在は、この需給調整を手動で行っているが、緊急時の対応を除いて自動化することを考える。
【0173】
このとき、単一の供給家Sと複数の需要家D1,D2,...を考える。個々の需要家は、需要家の事業所内での電力消費を把握しており、個々の負荷の設定をフロープログラムで記述可能であるとする。具体的な記述は、前出の機器制御の事例(第3の具体例など)と同等である。ここで、需給調整用フロープログラムを事業所内部で記述する。
【0174】
需給調整契約は、個々の契約内容に基づき、そのプログラムの入力部に特権フロー関数を用意する。この入力チャネルが満たすべき所有者タグセットにSを、出力に該需要家Dnを設定する。入力としては、需給調整依頼の程度(需要を何ワット抑えるか)と、その依頼の期限と期間(何時間後までに調整を完了させ、その状態を何時間継続するか)の組み合わせ(タプル)であり、特権フロー関数は、契約内容と需給調整依頼が合致しているかを検証し、検証結果が正しければ、需要家が設定した需給調整用フロープログラムへ需給調整依頼を転送する機能を持つ。
【0175】
電力需給逼迫時には、供給家Sは、個々の需要家Dnの特権フロー関数に対して需給調整依頼を発行する。個々の需要家は、契約規模やその時点での需要が異なるため、個々の需要家にあわせた需給調整依頼を発行する。なお、需給調整依頼を個々の需要家の契約規模やその時点での需要にあわせて自動生成する機構を導入することもできる。
【0176】
また、自動化により、需給調整をする/しないの二段階から、消費可能電力上限を徐々に絞っていくという方式に切り替えることも考えられる。この場合は、需給調整がはじまると
1)空調が弱くなり、サーバ機器なども省エネモードで動作する
2)止めても良い負荷(複数系統のエレベータやオフィスのプリンタなど)が止められる
3)止めても良い(機器保全でない)空調が止められる
4)生産設備の停止計画が優先度順に実行される
といった順序で消費電力削減を実行することで、求められた需給調整に連続的・自動的に対応することができる。
【0177】
ただし、生産設備の停止計画については、当然のことながら納入の遅れなどにつながるため、工程管理システムにおける生産能力の優先順位付けや調整と、本具体例で述べた需給調整のシステムが相互に接続している必要がある。例えば、電力削減を実現するために停止させるラインを、停止による損失額から推定し、損失額の少ないものから順に停止するといったシステムを導入する。
【0178】
<第6の具体例>
次に、第6の具体例として、交通制御の例について説明する。
【0179】
都心部の交通状況は、時々刻々と変わり、また、様々な経済活動に影響を与える情報源となりうる。例えば、混雑状況がリアルタイムに把握できれば、流通の配車計画をそれにあわせて調整することができる。また、センシング技術の発達やネットワーク/ITS連動GPSナビシステムなどの登場にともない、特に車両において、誰がどこをどちらに向けて走っているかを把握することすら可能になってきている。
【0180】
ただし、個々の車両の移動情報を把握することは、プライバシ上の懸念も生み出す。この情報は誰でも自由に利用できる、という性質のものではないことは明らかだろう。しかし、どのような形式の情報がより多くの利益を生みだすかを事前に検討することもまた困難である。
【0181】
そこで、例えば個々の交通システムの要素技術(例えばナンバープレート認識装置や交通状況画像処理の結果など)においては、本実施形態における要求処理装置1に相当する機能を実装し、それらの情報を加工又は集約した結果を交通システムの外側に提供する段階で、特権フロー関数によるデータの匿名化と検証を行う、ということもできる。この方式であれば、交通システムの内部で用いるためには、プライバシ情報も含む生のデータをそのまま取り扱うことができる一方、外部の利用者へもプライバシ情報の漏出の懸念が少ない状態で情報提供および有効活用が可能になる。
【0182】
具体的な特権フロー関数としては、安全でかつ有意義な情報をまず(時刻/時間,カウント)のタプル列に限定し、これ以外は出力しない特権フロー関数が考えられる。これで、個々の時刻又は時間に何台車が通ったのかのみを出力し、いつ/どのような、の判断に関しては、データ利用者側の自由な発想と、自由フロー関数による処理結果に任せる、ということができる。また、将来ニーズの高まりにより新しいデータ形式の出力が求められたときは、新しい特権フロー関数を導入すれば良い。もちろん、より高精細な情報を得られる特権フロー関数を利用するには、何らかの契約により対価を支払う仕組みにしても良く、その場合は、需要者個々の所有者タグを出力にセットした特権フロー関数をFFコードレポジトリ4に登録する。
【0183】
なお、特権フロー関数と自由フロー関数の実行環境を分割する理由をここで説明する。例えば、センサから得られた生の画像や、ナンバープレート情報などを、出力が許された別の形式にエンコードしなおす(例えば、前のイベントとの時刻差分が1ならビット0、2ならビット1、とすることで任意のデータを時系列データにエンコードできる、など)ことが考えられる。これを許さないために、データの内容を操作する段階(例えばナンバープレートの数値を取得し比較する、あるいは、画像を変換して顏DBと照合する、など)のみにおいて専用の特権フロー関数を用意し、出力は、交通システム所有者の所有者タグとする。一方、自由フロー関数が実行される実行環境では、データへの直接アクセスを行うメソッドの呼び出しは、禁止する(例えばJavaの場合は、サンドボックスの適切な設定により禁止する)。
【0184】
なお、以上の各機能は、ソフトウェアとして記述し適当な機構をもったコンピュータに処理させても実現可能である。
また、本実施形態は、コンピュータに所定の手順を実行させるための、あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるためのプログラムとして実施することもできる。加えて該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【0185】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0186】
1…要求処理装置、2…ユーザ装置、3…要求配置装置、4…フロー関数コードレポジトリ、5…作用装置、11…要求受付部、12…フロー関数コードロード部、13…パブリッシュ・サブスクライブ・ブローカ、14…自由フロー関数実行環境、15…特権フロー関数実行環境、16…パブリッシュ・サブスクライブ検証部、17…自由フロー関数所有者タグ設定部、18…特権フロー関数署名検証部、131…パブリッシュ・サブスクライブ処理部、132…送受信インタフェース部、133…チャネル情報記憶部、161…パブリッシャ検証部、162…サブスクライバ検証部
【特許請求の範囲】
【請求項1】
送信装置からデータを受信し、該データを処理して受信装置へ送信することの可能なデータ処理装置であって、
前記送信装置から前記データを受信するのに先立って、前記送信装置に係る所有者を示す所有者情報が、前記データ処理装置に係る所有者を示す所有者情報に適合することを検証し、前記受信装置へ前記データを送信するのに先立って、前記受信装置に係る所有者を示す所有者情報が、前記データに係る所有者を示す所有者情報に適合することを検証する第1の検証部と、
前記送信装置に係る前記検証に成功した場合にのみ、前記送信装置から前記データを受信することが可能であり、前記受信装置に係る前記検証に成功した場合にのみ、前記受信装置へ前記データを送信することが可能である中継部と、
データ処理の内容を任意に設定可能な自由フロー関数を実行する第1の実行部と、
前記自由フロー関数が実行された場合に該自由フロー関数が出力するデータに係る所有者を示す所有者情報を、該自由フロー関数が入力するデータに係る所有者を示す所有者情報に基づいて設定する設定部と、
データ処理の内容を任意に設定可能な特権フロー関数の正当性を、該特権フロー関数内に記載されている第1の情報に基づいて検証する第2の検証部と、
前記特権フロー関数に係る前記検証に成功した場合にのみ、前記特権フロー関数を実行することが可能であるとともに、該特権フロー関数が実行された場合に該特権フロー関数が出力するデータに係る所有者を示す所有者情報を、該特権フロー関数内に記載されている第2の情報に基づいて設定する第2の実行部とを備えたことを特徴とするデータ処理装置。
【請求項2】
前記第1の検証部は、前記送信装置に係る所有者情報の示す所有者の集合が、前記データ処理装置に係る所有者情報の示す所有者の集合に包含される場合に、前記検証に成功したものとすることを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記第1の検証部は、前記受信装置に係る所有者情報の示す所有者の集合が、前記受信装置に送信すべきデータに係る所有者情報が示す所有者の集合に包含される場合に、前記検証に成功したものとすることを特徴とする請求項1に記載のデータ処理装置。
【請求項4】
前記中継部は、前記送信装置から受信される前記データに係る所有者を示す所有者情報を、前記送信装置に係る所有者を示す所有者情報と同一に設定することを特徴とする請求項1ないし3のいずいれか1項に記載のデータ処理装置。
【請求項5】
前記設定部は、前記自由フロー関数が一つのデータを入力とする場合には、該自由フロー関数が出力するデータに係る所有者を示す所有者情報を、該一つのデータに係る所有者を示す所有者情報と同一に設定し、該自由フロー関数が複数のデータを入力とする場合には、該自由フロー関数が出力するデータに係る所有者を示す所有者情報を、該複数のデータの各々に係る所有者情報がそれぞれ示す所有者の集合の論理積に設定することを特徴とする請求項1ないし4のいずれか1項に記載のデータ処理装置。
【請求項6】
前記特権フロー関数内に記載されている前記第1の情報は、権限を有する者に係る電子鍵を用いて生成された電子署名に係る情報であり、
前記第2の検証部は、前記第1の情報に基づいて、前記特権フロー関数の正当性を検証することを特徴とする請求項1ないし5のいずれか1項に記載のデータ処理装置。
【請求項7】
前記特権フロー関数内に記載されている前記第2の情報は、所有者を指定する情報であり、
前記第2の実行部は、前記特権フロー関数が出力するデータに係る所有者を示す所有者情報を、前記特権フロー関数が入力するデータに係る所有者を示す所有者情報にかかわらずに、前記第2の情報が指定する所有者を示す所有者情報に設定することを特徴とする請求項1ないし6のいずれか1項に記載のデータ処理装置。
【請求項8】
前記自由フロー関数は、前記通信装置から受信される前記データと他の自由フロー関数が出力するデータと前記特権フロー関数が出力するデータとの少なくとも一つを入力とするものであることを特徴とする請求項1ないし7のいずれか1項に記載のデータ処理装置。
【請求項9】
前記特権フロー関数は、前記通信装置から受信される前記データと前記自由フロー関数が出力するデータと他の特権フロー関数が出力するデータとの少なくとも一つを入力とするものであることを特徴とする請求項1ないし8のいずれか1項に記載のデータ処理装置。
【請求項10】
前記受信装置へ送信する前記データは、前記通信装置から受信された前記データ又は前記自由フロー関数が出力するデータ若しくは前記特権フロー関数が出力するデータであることを特徴とする請求項1ないし9のいずれか1項に記載のデータ処理装置。
【請求項11】
外部からの要求に基づいて、前記自由フロー関数及び又は前記特権フロー関数の実行イメージを取得して、前記自由フロー関数実行部及び又は前記特権フロー関数実行部に与える手段を更に備えたことを特徴とする請求項1ないし14のいずれか1項に記載のデータ処理装置。
【請求項12】
前記中継部は、前記送信装置からデータを受信した場合に、該データを予め定められた第1のチャネルに与えるものであり、
前記第1の実行部は、予め定められた第2のチャネルからデータを与えられた場合に、該データを入力として前記自由フロー関数を実行し、該自由フロー関数が出力したデータを、予め定められた第3のチャネルに与えるものであり、
前記第2の実行部は、予め定められた第4のチャネルからデータを与えられ場合に、該データを入力として前記特権フロー関数を実行し、該特権フロー関数が出力したデータを、予め定められた第5のチャネルに与えるものであり、
前記中継部は、予め定められた第6のチャネルからデータを与えられた場合に、該データを予め定められた受信装置へ送信するものであることを特徴とする請求項1ないし11のいずれか1項に記載のデータ処理装置。
【請求項13】
送信装置からデータを受信し、該データを処理して受信装置へ送信するために、第1の検証部と、設定部と、第2の検証部と、前記送信装置から前記データを受信し、前記受信装置へ前記データを送信する中継部と、データ処理の内容を任意に設定可能な自由フロー関数を実行する第1の実行部と、データ処理の内容を任意に設定可能な特権フロー関数を実行する第2の実行部とを備えたデータ処理装置のデータ処理方法であって、
前記第1の検証部が、前記送信装置から前記データを受信するのに先立って、前記送信装置に係る所有者を示す所有者情報が、前記データ処理装置に係る所有者を示す所有者情報に適合することを検証するステップと、
前記設定部が、データ処理の内容を任意に設定可能な自由フロー関数が実行された場合に該自由フロー関数が出力するデータに係る所有者を示す所有者情報を、該自由フロー関数が入力するデータに係る所有者を示す所有者情報に基づいて設定するステップと、
前記第2の検証部が、データ処理の内容を任意に設定可能な特権フロー関数の正当性を、該特権フロー関数内に記載されている第1の情報に基づいて検証するステップと、
前記第2の実行部が、前記検証に成功した前記特権フロー関数が実行された場合に該特権フロー関数が出力するデータに係る所有者を示す所有者情報を、該特権フロー関数内に記載されている第2の情報に基づいて設定するステップと、
前記第1の検証部が、前記受信装置へ前記データを送信するのに先立って、前記受信装置に係る所有者を示す所有者情報が、前記データに係る所有者を示す所有者情報に適合することを検証するステップとを有することを特徴とするデータ処理方法。
【請求項14】
送信装置からデータを受信し、該データを処理して受信装置へ送信するために、第1の検証部と、設定部と、第2の検証部と、前記送信装置から前記データを受信し、前記受信装置へ前記データを送信する中継部と、データ処理の内容を任意に設定可能な自由フロー関数を実行する第1の実行部と、データ処理の内容を任意に設定可能な特権フロー関数を実行する第2の実行部とを備えたデータ処理装置としてコンピュータを機能させるためのプログラムであって、
前記第1の検証部が、前記送信装置から前記データを受信するのに先立って、前記送信装置に係る所有者を示す所有者情報が、前記データ処理装置に係る所有者を示す所有者情報に適合することを検証するステップと、
前記設定部が、データ処理の内容を任意に設定可能な自由フロー関数が実行された場合に該自由フロー関数が出力するデータに係る所有者を示す所有者情報を、該自由フロー関数が入力するデータに係る所有者を示す所有者情報に基づいて設定するステップと、
前記第2の検証部が、データ処理の内容を任意に設定可能な特権フロー関数の正当性を、該特権フロー関数内に記載されている第1の情報に基づいて検証するステップと、
前記第2の実行部が、前記検証に成功した前記特権フロー関数が実行された場合に該特権フロー関数が出力するデータに係る所有者を示す所有者情報を、該特権フロー関数内に記載されている第2の情報に基づいて設定するステップと、
前記第1の検証部が、前記受信装置へ前記データを送信するのに先立って、前記受信装置に係る所有者を示す所有者情報が、前記データに係る所有者を示す所有者情報に適合することを検証するステップとをコンピュータに実行させるためのプログラム。
【請求項1】
送信装置からデータを受信し、該データを処理して受信装置へ送信することの可能なデータ処理装置であって、
前記送信装置から前記データを受信するのに先立って、前記送信装置に係る所有者を示す所有者情報が、前記データ処理装置に係る所有者を示す所有者情報に適合することを検証し、前記受信装置へ前記データを送信するのに先立って、前記受信装置に係る所有者を示す所有者情報が、前記データに係る所有者を示す所有者情報に適合することを検証する第1の検証部と、
前記送信装置に係る前記検証に成功した場合にのみ、前記送信装置から前記データを受信することが可能であり、前記受信装置に係る前記検証に成功した場合にのみ、前記受信装置へ前記データを送信することが可能である中継部と、
データ処理の内容を任意に設定可能な自由フロー関数を実行する第1の実行部と、
前記自由フロー関数が実行された場合に該自由フロー関数が出力するデータに係る所有者を示す所有者情報を、該自由フロー関数が入力するデータに係る所有者を示す所有者情報に基づいて設定する設定部と、
データ処理の内容を任意に設定可能な特権フロー関数の正当性を、該特権フロー関数内に記載されている第1の情報に基づいて検証する第2の検証部と、
前記特権フロー関数に係る前記検証に成功した場合にのみ、前記特権フロー関数を実行することが可能であるとともに、該特権フロー関数が実行された場合に該特権フロー関数が出力するデータに係る所有者を示す所有者情報を、該特権フロー関数内に記載されている第2の情報に基づいて設定する第2の実行部とを備えたことを特徴とするデータ処理装置。
【請求項2】
前記第1の検証部は、前記送信装置に係る所有者情報の示す所有者の集合が、前記データ処理装置に係る所有者情報の示す所有者の集合に包含される場合に、前記検証に成功したものとすることを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記第1の検証部は、前記受信装置に係る所有者情報の示す所有者の集合が、前記受信装置に送信すべきデータに係る所有者情報が示す所有者の集合に包含される場合に、前記検証に成功したものとすることを特徴とする請求項1に記載のデータ処理装置。
【請求項4】
前記中継部は、前記送信装置から受信される前記データに係る所有者を示す所有者情報を、前記送信装置に係る所有者を示す所有者情報と同一に設定することを特徴とする請求項1ないし3のいずいれか1項に記載のデータ処理装置。
【請求項5】
前記設定部は、前記自由フロー関数が一つのデータを入力とする場合には、該自由フロー関数が出力するデータに係る所有者を示す所有者情報を、該一つのデータに係る所有者を示す所有者情報と同一に設定し、該自由フロー関数が複数のデータを入力とする場合には、該自由フロー関数が出力するデータに係る所有者を示す所有者情報を、該複数のデータの各々に係る所有者情報がそれぞれ示す所有者の集合の論理積に設定することを特徴とする請求項1ないし4のいずれか1項に記載のデータ処理装置。
【請求項6】
前記特権フロー関数内に記載されている前記第1の情報は、権限を有する者に係る電子鍵を用いて生成された電子署名に係る情報であり、
前記第2の検証部は、前記第1の情報に基づいて、前記特権フロー関数の正当性を検証することを特徴とする請求項1ないし5のいずれか1項に記載のデータ処理装置。
【請求項7】
前記特権フロー関数内に記載されている前記第2の情報は、所有者を指定する情報であり、
前記第2の実行部は、前記特権フロー関数が出力するデータに係る所有者を示す所有者情報を、前記特権フロー関数が入力するデータに係る所有者を示す所有者情報にかかわらずに、前記第2の情報が指定する所有者を示す所有者情報に設定することを特徴とする請求項1ないし6のいずれか1項に記載のデータ処理装置。
【請求項8】
前記自由フロー関数は、前記通信装置から受信される前記データと他の自由フロー関数が出力するデータと前記特権フロー関数が出力するデータとの少なくとも一つを入力とするものであることを特徴とする請求項1ないし7のいずれか1項に記載のデータ処理装置。
【請求項9】
前記特権フロー関数は、前記通信装置から受信される前記データと前記自由フロー関数が出力するデータと他の特権フロー関数が出力するデータとの少なくとも一つを入力とするものであることを特徴とする請求項1ないし8のいずれか1項に記載のデータ処理装置。
【請求項10】
前記受信装置へ送信する前記データは、前記通信装置から受信された前記データ又は前記自由フロー関数が出力するデータ若しくは前記特権フロー関数が出力するデータであることを特徴とする請求項1ないし9のいずれか1項に記載のデータ処理装置。
【請求項11】
外部からの要求に基づいて、前記自由フロー関数及び又は前記特権フロー関数の実行イメージを取得して、前記自由フロー関数実行部及び又は前記特権フロー関数実行部に与える手段を更に備えたことを特徴とする請求項1ないし14のいずれか1項に記載のデータ処理装置。
【請求項12】
前記中継部は、前記送信装置からデータを受信した場合に、該データを予め定められた第1のチャネルに与えるものであり、
前記第1の実行部は、予め定められた第2のチャネルからデータを与えられた場合に、該データを入力として前記自由フロー関数を実行し、該自由フロー関数が出力したデータを、予め定められた第3のチャネルに与えるものであり、
前記第2の実行部は、予め定められた第4のチャネルからデータを与えられ場合に、該データを入力として前記特権フロー関数を実行し、該特権フロー関数が出力したデータを、予め定められた第5のチャネルに与えるものであり、
前記中継部は、予め定められた第6のチャネルからデータを与えられた場合に、該データを予め定められた受信装置へ送信するものであることを特徴とする請求項1ないし11のいずれか1項に記載のデータ処理装置。
【請求項13】
送信装置からデータを受信し、該データを処理して受信装置へ送信するために、第1の検証部と、設定部と、第2の検証部と、前記送信装置から前記データを受信し、前記受信装置へ前記データを送信する中継部と、データ処理の内容を任意に設定可能な自由フロー関数を実行する第1の実行部と、データ処理の内容を任意に設定可能な特権フロー関数を実行する第2の実行部とを備えたデータ処理装置のデータ処理方法であって、
前記第1の検証部が、前記送信装置から前記データを受信するのに先立って、前記送信装置に係る所有者を示す所有者情報が、前記データ処理装置に係る所有者を示す所有者情報に適合することを検証するステップと、
前記設定部が、データ処理の内容を任意に設定可能な自由フロー関数が実行された場合に該自由フロー関数が出力するデータに係る所有者を示す所有者情報を、該自由フロー関数が入力するデータに係る所有者を示す所有者情報に基づいて設定するステップと、
前記第2の検証部が、データ処理の内容を任意に設定可能な特権フロー関数の正当性を、該特権フロー関数内に記載されている第1の情報に基づいて検証するステップと、
前記第2の実行部が、前記検証に成功した前記特権フロー関数が実行された場合に該特権フロー関数が出力するデータに係る所有者を示す所有者情報を、該特権フロー関数内に記載されている第2の情報に基づいて設定するステップと、
前記第1の検証部が、前記受信装置へ前記データを送信するのに先立って、前記受信装置に係る所有者を示す所有者情報が、前記データに係る所有者を示す所有者情報に適合することを検証するステップとを有することを特徴とするデータ処理方法。
【請求項14】
送信装置からデータを受信し、該データを処理して受信装置へ送信するために、第1の検証部と、設定部と、第2の検証部と、前記送信装置から前記データを受信し、前記受信装置へ前記データを送信する中継部と、データ処理の内容を任意に設定可能な自由フロー関数を実行する第1の実行部と、データ処理の内容を任意に設定可能な特権フロー関数を実行する第2の実行部とを備えたデータ処理装置としてコンピュータを機能させるためのプログラムであって、
前記第1の検証部が、前記送信装置から前記データを受信するのに先立って、前記送信装置に係る所有者を示す所有者情報が、前記データ処理装置に係る所有者を示す所有者情報に適合することを検証するステップと、
前記設定部が、データ処理の内容を任意に設定可能な自由フロー関数が実行された場合に該自由フロー関数が出力するデータに係る所有者を示す所有者情報を、該自由フロー関数が入力するデータに係る所有者を示す所有者情報に基づいて設定するステップと、
前記第2の検証部が、データ処理の内容を任意に設定可能な特権フロー関数の正当性を、該特権フロー関数内に記載されている第1の情報に基づいて検証するステップと、
前記第2の実行部が、前記検証に成功した前記特権フロー関数が実行された場合に該特権フロー関数が出力するデータに係る所有者を示す所有者情報を、該特権フロー関数内に記載されている第2の情報に基づいて設定するステップと、
前記第1の検証部が、前記受信装置へ前記データを送信するのに先立って、前記受信装置に係る所有者を示す所有者情報が、前記データに係る所有者を示す所有者情報に適合することを検証するステップとをコンピュータに実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2010−165172(P2010−165172A)
【公開日】平成22年7月29日(2010.7.29)
【国際特許分類】
【出願番号】特願2009−6795(P2009−6795)
【出願日】平成21年1月15日(2009.1.15)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成22年7月29日(2010.7.29)
【国際特許分類】
【出願日】平成21年1月15日(2009.1.15)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]