(57)【要約】【課題】データに対するアクセス制御の機能をデータ自体に持たせ、データの開示範囲を各書込み者が合意した範囲とする。【解決手段】書込み装置１２−jは、差分データD(j)と、処理済データPD(j-1)から一意に定まるH(j-1)とを含むOB(j)を、読取者R(ac(j))の復号鍵DKO(ac(j))で復号可能なように暗号化してCO(j)を生成し、それを含むPD(j)をストレージ装置１１に格納する。読取装置１３−ｍは、復号鍵DKO(m)を用いてPD(n)が含むCO(n)を復号し、H(j-1)及びD(j)を含むOB(j)が得られた場合、H(j-1)がPD(j-1)から一意に定まるものであるかを判定し、そうであると判定されたH(j-1)を含むOB(j)が含むD(j)と、D(1)と、を用いてDATAを生成する。【選択図】図６
2011087150.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ装置と、各書込み者W(n)(n∈{1,...,N}, N≧2)がそれぞれ利用する書込み装置WA(n)と、各読取者R(m)(m∈{1,...,M}, M≧2)がそれぞれ利用する読取装置RA(m)と、を有し、
データを新規作成する書込み者W(1)が利用する書込み装置WA(1)は、
前記書込み者W(1)が生成した新規作成データである差分データD(1)を格納する第１差分データ記憶部と、
前記差分データD(1)を含むオブジェクトデータOB(1)を、設定された１以上の読取者R(ac(1))(ac(1)∈{1,...,M})の各第１復号鍵DKO(ac(1))で復号可能なように暗号化し、暗号化オブジェクトデータCO(1)を生成する第１オブジェクトデータ暗号化部と、
前記暗号化オブジェクトデータCO(1)を含む処理済みデータPD(1)を出力する第１出力部と、を含み、
データ編集を行う各書込み者W(j)(j∈{2,...,N})がそれぞれ利用する書込み装置WA(j)は、
書込み者W(j-1)が利用する書込み装置WA(j-1)から出力された処理済みデータPD(j-1)から一意に定まる履歴データH(j-1)を格納する履歴データ記憶部と、
前記書込み者W(j)が生成した新たな差分データD(j)を格納する第２差分データ記憶部と、
前記履歴データH(j-1)及び前記差分データD(j)を含むオブジェクトデータOB(j)を、設定された１以上の読取者R(ac(j))(ac(j)∈{1,...,M})の各第１復号鍵DKO(ac(j))で復号可能なように暗号化し、暗号化オブジェクトデータCO(j)を生成する第２オブジェクトデータ暗号化部と、
前記暗号化オブジェクトデータCO(j)を含む処理済みデータPD(j)を出力する第２出力部と、を含み、
前記ストレージ装置は、前記書込み装置WA(n)から出力された各処理済みデータPD(n)を格納し、
前記読取装置RA(m)は、
前記読取装置RA(m)をそれぞれ利用する読取者R(m)の第１復号鍵DKO(m)を格納する鍵記憶部と、
前記処理済みデータPD(n)が入力される入力部と、
前記鍵記憶部に格納された前記第１復号鍵DKO(m)を用い、入力された前記処理済みデータPD(n)が含む暗号化オブジェクトデータCO(n)を復号するオブジェクトデータ復号部と、
前記オブジェクトデータ復号部で、前記履歴データH(j-1)及び前記差分データD(j)を含むオブジェクトデータOB(j)が得られた場合に、得られた前記履歴データH(j-1)が、前記入力部に入力された処理済みデータPD(j-1)から一意に定まるものであるか否かを判定する履歴データ検証部と、
前記オブジェクトデータ復号部で得られたオブジェクトデータOB(1)が含む差分データD(1)と、前記履歴データ検証部で前記処理済みデータPD(j-1)から一意に定まるものであると判定された前記履歴データH(j-1)を含む前記オブジェクトデータOB(j)が含む前記差分データD(j)と、からなる集合に属する要素の少なくとも一部を用いて読取データを生成して出力する読取データ生成部と、を含む、
ことを特徴とするデータ編集システム。
【請求項２】
請求項１のデータ編集システムであって、
前記書込み装置WA(1)は、さらに、前記書込み者W(1)を特定するための書込み者データを、設定された１以上の読取者R(pr(1))(pr(1)∈{1,...,M})の各第２復号鍵DKW(pr(1))で復号可能なように暗号化し、暗号化書込み者データCW(1)を生成する第１書込み者データ暗号化部を含み、
前記処理済みデータPD(1)は、さらに、前記暗号化書込み者データCW(1)を含み、
前記書込み装置WA(j)は、さらに、前記書込み者W(j)を特定するための書込み者データを、設定された１以上の読取者R(pr(j))(pr(j)∈{1,...,M})の各第２復号鍵DKW(pr(j))で復号可能なように暗号化し、暗号化書込み者データCW(j)を生成する第２書込み者データ暗号化部を含み、
前記処理済みデータPD(j)は、さらに、前記暗号化書込み者データCW(j)を含み、
前記読取装置RA(m)の前記鍵記憶部は、さらに、前記読取装置RA(m)をそれぞれ利用する読取者R(m)の第２復号鍵DKW(m)を格納し、
前記読取装置RA(m)は、さらに、前記第２復号鍵DKW(m)を用い、入力された前記処理済みデータPD(n)が含む暗号化書込み者データCW(n)を復号する書込み者データ復号部を含む、
ことを特徴とするデータ編集システム。
【請求項３】
請求項２のデータ編集システムであって、
前記読取装置RA(m)は、さらに、前記書込み者データ復号部で何れかの書込み者W(n)を特定するための書込み者データが得られた場合に、前記書込み者データ復号部で得られた書込み者データによって特定される前記書込み者W(n)が、設定された１以上の書込み者W(pe(m))(pe(m)∈{1,...,N})に含まれるか否かを判定する受け入れ判定部を有し、
前記読取データ生成部は、設定された１以上の書込み者W(pe(m))に含まれない書込み者W(n)が生成したと判定された前記差分データD(n)を用いることなく前記読取データを生成する、
ことを特徴とするデータ編集システム。
【請求項４】
請求項２又は３のデータ編集システムであって、
前記書込み装置WA(1)は、さらに、前記暗号化オブジェクトデータCO(1)に対する、書込み者W(1)の電子署名SIG(1)を生成する第１電子署名部を有し、
前記処理済みデータPD(1)は、さらに、前記電子署名SIG(1)を含み、
前記書込み装置WA(j)は、さらに、前記暗号化オブジェクトデータCO(j)に対する、書込み者W(j)の電子署名SIG(j)を生成する第２電子署名部を有し、
前記処理済みデータPD(j)は、さらに、前記電子署名SIG(j)を含み、
前記読取装置RA(m)は、前記書込み者データ復号部で何れかの書込み者W(n)を特定するための書込み者データが得られた場合に、前記入力部に入力された前記処理済みデータPD(n)が含む電子署名SIG(n)が、前記入力部に入力された前記処理済みデータPD(n)が含む暗号化オブジェクトデータCO(n)に対する、前記書込み者データ復号部で得られた書込み者データによって特定される前記書込み者W(n)の正しい電子署名であるか否かを判定する署名検証部をさらに有し、
前記読取データ生成部は、前記署名検証部で正しい電子署名でないと判定された前記電子署名SIG(n)に対応する前記暗号化オブジェクトデータCO(n)を復号して得られた前記差分データD(n)を用いることなく前記読取データを生成する、
ことを特徴とするデータ編集システム。
【請求項５】
書込み者W(n)(n∈{1,...,N}, N≧2)の何れかが利用する書込み装置であって、
書込み者W(j-1)が利用する書込み装置WA(j-1)から出力された処理済みデータPD(j-1)(j∈{2,...,N})から一意に定まる履歴データH(j-1)を格納する履歴データ記憶部と、
書込み者W(j)が生成した新たな差分データD(j)を格納する差分データ記憶部と、
前記履歴データH(j-1)及び前記差分データD(j)を含むオブジェクトデータOB(j)を、設定された１以上の読取者R(ac(j))(ac(j)∈{1,...,M}, M≧2)の各第１復号鍵DKO(ac(j))で復号可能なように暗号化し、暗号化オブジェクトデータCO(j)を生成するオブジェクトデータ暗号化部と、
前記暗号化オブジェクトデータCO(j)を含む処理済みデータPD(j)を出力する出力部と、を有する書込み装置。
【請求項６】
請求項５の書込み装置であって、
前記書込み者W(j)を特定するための書込み者データを、設定された１以上の読取者R(pr(j))(pr(j)∈{1,...,M})の各第２復号鍵DKW(pr(j))で復号可能なように暗号化し、暗号化書込み者データCW(j)を生成する第２書込み者データ暗号化部をさらに有し、
前記処理済みデータPD(j)は、さらに、前記暗号化書込み者データCW(j)を含む、
ことを特徴とする書込み装置。
【請求項７】
請求項６の書込み装置であって、
前記書込み装置WA(j)は、さらに、前記暗号化オブジェクトデータCO(j)に対する、書込み者W(j)の電子署名SIG(j)を生成する第２電子署名部を有し、
前記処理済みデータPD(j)は、さらに、前記電子署名SIG(j)を含む、
ことを特徴とする書込み装置。
【請求項８】
読取者R(m)(m∈{1,...,M}, M≧2)の何れかが利用する読取装置であって、
前記読取者R(m)の第１復号鍵DKO(m)を格納する鍵記憶部と、
処理済みデータPD(n)(n∈{1,...,N}, N≧2)が入力される入力部と、
前記鍵記憶部に格納された前記第１復号鍵DKO(m)を用い、入力された前記処理済みデータPD(n)が含む暗号化オブジェクトデータCO(n)を復号するオブジェクトデータ復号部と、
前記オブジェクトデータ復号部で履歴データH(j-1)及び差分データD(j)を含むオブジェクトデータOB(j)が得られた場合に、得られた前記履歴データH(j-1)が、前記入力部に入力された処理済みデータPD(j-1)から一意に定まるものであるか否かを判定する履歴データ検証部と、
前記オブジェクトデータ復号部で得られたオブジェクトデータOB(1)が含む差分データD(1)と、前記履歴データ検証部で前記処理済みデータPD(j-1)から一意に定まるものであると判定された前記履歴データH(j-1)を含む前記オブジェクトデータOB(j)が含む前記差分データD(j)と、からなる集合に属する要素の少なくとも一部を用いて読取データを生成して出力する読取データ生成部と、
を有する読取装置。
【請求項９】
請求項８の読取装置であって、
前記鍵記憶部は、さらに、前記読取者R(m)の第２復号鍵DKW(m)を格納し、
当該読取装置は、さらに、前記第２復号鍵DKW(m)を用い、入力された前記処理済みデータPD(n)が含む暗号化書込み者データCW(n)を復号する書込み者データ復号部を有する、
ことを特徴とする読取装置。
【請求項１０】
請求項９の読取装置であって、
前記読取装置RA(m)は、さらに、前記書込み者データ復号部で何れかの書込み者W(n)を特定するための書込み者データが得られた場合に、前記書込み者データ復号部で得られた書込み者データによって特定される前記書込み者W(n)が、設定された１以上の書込み者W(pe(m))(pe(m)∈{1,...,N})に含まれるか否かを判定する受け入れ判定部を有し、
前記読取データ生成部は、設定された１以上の書込み者W(pe(m))に含まれる書込み者W(n)が生成したと判定された前記差分データD(n)を用いることなく前記読取データを生成する、
ことを特徴とする読取装置。
【請求項１１】
請求項９又は１０の読取装置であって、
前記書込み者データ復号部で何れかの書込み者W(n)を特定するための書込み者データが得られた場合に、前記入力部に入力された前記処理済みデータPD(n)が含む電子署名SIG(n)が、前記入力部に入力された前記処理済みデータPD(n)が含む暗号化オブジェクトデータCO(n)に対する、前記書込み者データ復号部で得られた書込み者データによって特定される前記書込み者W(n)の正しい電子署名であるか否かを判定する署名検証部をさらに有し、
前記読取データ生成部は、前記署名検証部で正しい電子署名でないと判定された前記電子署名SIG(n)に対応する前記暗号化オブジェクトデータCO(n)を復号して得られた前記差分データD(n)を用いることなく前記読取データを生成する、
ことを特徴とする読取装置。
【請求項１２】
ストレージ装置と、各書込み者W(n)(n∈{1,...,N}, N≧2)がそれぞれ利用する書込み装置WA(n)と、各読取者R(m)(m∈{1,...,M}, M≧2)がそれぞれ利用する読取装置RA(m)と、を有するデータ編集システムのデータ編集方法であって、
(a-1) データを新規作成する書込み者W(1)が利用する書込み装置WA(1)の第１差分データ記憶部に、前記書込み者W(1)が生成した新規作成データである差分データD(1)を格納するステップと、
(a-2) 前記書込み装置WA(1)の第１オブジェクトデータ暗号化部が、前記差分データD(1)を含むオブジェクトデータOB(1)を、設定された１以上の読取者R(ac(1))(ac(1)∈{1,...,M})の各第１復号鍵DKO(ac(1))で復号可能なように暗号化し、暗号化オブジェクトデータCO(1)を生成するステップと、
(a-3) 前記書込み装置WA(1)の第１出力部が、前記暗号化オブジェクトデータCO(1)を含む処理済みデータPD(1)を前記ストレージ装置に出力するステップと、
(b-1) データ編集を行う各書込み者W(j)(j∈{2,...,N})がそれぞれ利用する書込み装置WA(j)の履歴データ記憶部に、書込み者W(j-1)が利用する書込み装置WA(j-1)から出力された処理済みデータPD(j-1)から一意に定まる履歴データH(j-1)を格納するステップと、
(b-2) 前記書込み装置WA(j)の第２差分データ記憶部に、前記書込み者W(j)が生成した新たな差分データD(j)を格納するステップと、
(b-3) 前記書込み装置WA(j)の第２オブジェクトデータ暗号化部が、前記履歴データH(j-1)及び前記差分データD(j)を含むオブジェクトデータOB(j)を、設定された１以上の読取者R(ac(j))(ac(j)∈{1,...,M})の各第１復号鍵DKO(ac(j))で復号可能なように暗号化し、暗号化オブジェクトデータCO(j)を生成するステップと、
(b-4) 前記書込み装置WA(j)の第２出力部が、前記暗号化オブジェクトデータCO(j)を含む処理済みデータPD(j)を前記ストレージ装置に出力するステップと、
(c-1) 前記読取装置RA(m)の入力部に、前記処理済みデータPD(n)が入力されるステップと、
(c-2) 前記読取装置RA(m)のオブジェクトデータ復号部が、読取者R(m)の第１復号鍵DKO(m)を用い、入力された前記処理済みデータPD(n)が含む暗号化オブジェクトデータCO(n)を復号するステップと、
(c-3) 前記読取装置RA(m)の履歴データ検証部が、前記ステップ(c-2)で前記履歴データH(j-1)及び前記差分データD(j)を含むオブジェクトデータOB(j)が得られた場合に、得られた前記履歴データH(j-1)が、前記入力部に入力された処理済みデータPD(j-1)から一意に定まるものであるか否かを判定するステップと、
(c-4) 前記ステップ(c-2)で得られたオブジェクトデータOB(1)が含む差分データD(1)と、前記ステップ(c-3)で前記処理済みデータPD(j-1)から一意に定まるものであると判定された前記履歴データH(j-1)を含む前記オブジェクトデータOB(j)が含む前記差分データD(n)と、からなる集合に属する要素の少なくとも一部を用いて読取データを生成して出力するステップと、
を有するデータ編集方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数者によるデータ編集が可能なデータ編集技術に関し、特に、編集されたデータに対してアクセス制限を課すことが可能な技術に関する。
【背景技術】
【０００２】
ネットワークにサーバ装置と複数の端末装置とが接続され、複数の書込み者がそれぞれの端末装置を用いて当該サーバ装置にアクセスし、当該サーバ装置に格納されたデータの編集を共同で行うデータ編集技術が存在する。このようなデータ編集技術は広範囲な分野に適用可能である。しかしながら、何のアクセス制限も課されず、誰に対してもオープンな状態でサーバ装置にデータが格納される方式では、特定のグループに対してのみ開示すべき秘匿データの編集に適用することはできない。
【０００３】
これに対し、例えば、"Active Directory"や"Samba"のように、サーバ装置がデータの読み書きが許可された利用者（書込み者や読取者）のリスト（ACL：アクセスコントロールリスト)を管理し、利用者がサーバ装置に対してデータの読み書きのアクションを起こす前に利用者認証を実施することで、データの読み書きを制限する方法が存在する（例えば、非特許文献１，２参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】“Active Directory 技術情報”、[online]、平成１４年９月２６日、Microsoft Corporation、[平成２１年１０月６日検索]、インターネット＜http://www.microsoft.com/japan/windowsserver2003/techinfo/overview/activedirectory.mspx＞
【非特許文献２】“Windows Server 2003を超える Samba新版で作る 最強ファイル・サーバー Part1(3)”、[online]、平成１５年１２月１１日、Nikkei Business Publications, Inc、[平成２１年１０月６日]、インターネット＜http://itpro.nikkeibp.co.jp/members/LIN/oss/20031208/1/＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、"Active Directory"や"Samba"のような従来の方式は、編集対象となるデータ自体がアクセス制御の機能を具備しているのではなく、編集対象となるデータが格納されるサーバ装置に利用者認証機能を持たせることでアクセス制御を実現する。そのため、このような従来方式では、利用者認証機能を持ったサーバ装置にデータが格納されている場合にしか当該データに対するアクセス制御を行うことができない。また、たとえ編集対象となるデータが格納されたサーバ装置に利用者認証の機能を持たせていたとしても、編集前後のデータを他の装置に移動させてしまうと、もはやデータの秘匿性は維持できない。さらに、サーバ装置に利用者認証の機能を持たせていたとしても、そのサーバの管理者に対してはデータを秘匿できない。また、複数の書込み者によって編集されたデータを各読取者にそれぞれ開示する範囲は、そのデータを生成・編集した書込み者が合意した範囲とすべきである。しかしながら、サーバ装置に利用者認証機能を持たせることでアクセス制御を実現する従来の方式では、このようなアクセス制御を行うことができない。
【０００６】
なお、このような問題は、サーバ装置に格納されたデータがネットワーク経由で複数の端末装置によって編集される場合に限定されたものではなく、例えば、ＵＳＢメモリなどの可搬型記録媒体に格納されたデータを複数の端末装置を用いて編集する場合などにも共通するものである。すなわち、上記の問題は、ストレージ装置に格納された編集対象のデータが複数の利用者によって編集される環境に共通するものである。
【０００７】
本発明はこのような点に鑑みてなされたものであり、ストレージ装置に格納されたデータが複数の利用者によって編集される場合において、データに対するアクセス制御の機能をデータ自体に持たせ、データの開示範囲を各書込み者が合意した範囲とすることが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では、データを新規作成する書込み者W(1)が利用する書込み装置WA(1)の第１差分データ記憶部に、書込み者W(1)が生成した新規作成データである差分データD(1)を格納し、書込み装置WA(1)の第１オブジェクトデータ暗号化部が、差分データD(1)を含むオブジェクトデータOB(1)を、設定された１以上の読取者R(ac(1))(ac(1)∈{1,...,M}, M≧2)の各第１復号鍵DKO(ac(1))で復号可能なように暗号化し、暗号化オブジェクトデータCO(1)を生成し、書込み装置WA(1)の第１出力部が、暗号化オブジェクトデータCO(1)を含む処理済みデータPD(1)をストレージ装置に出力する。また、データ編集を行う各書込み者W(j)(j∈{2,...,N}, N≧2)がそれぞれ利用する書込み装置WA(j)の履歴データ記憶部に、書込み者W(j-1)が利用する書込み装置WA(j-1)から出力された処理済みデータPD(j-1)から一意に定まる履歴データH(j-1)を格納し、書込み装置WA(j)の第２差分データ記憶部に、書込み者W(j)が生成した新たな差分データD(j)を格納し、書込み装置WA(j)の第２オブジェクトデータ暗号化部が、履歴データH(j-1)及び差分データD(j)を含むオブジェクトデータOB(j)を、設定された１以上の読取者R(ac(j))(ac(j)∈{1,...,M})の各第１復号鍵DKO(ac(j))で復号可能なように暗号化し、暗号化オブジェクトデータCO(j)を生成し、書込み装置WA(j)の第２出力部が、暗号化オブジェクトデータCO(j)を含む処理済みデータPD(j)をストレージ装置に出力する。ストレージ装置は、書込み装置WA(n)(n∈{1,...,N})から出力された各処理済みデータPD(n)を格納する。
【０００９】
読取者R(m)(m∈{1,...,M}が利用する読取装置RA(m)の入力部には各処理済みデータPD(n)が入力され、読取装置RA(m)のオブジェクトデータ復号部が、読取者R(m)の第１復号鍵DKO(m)を用い、入力された処理済みデータPD(n)が含む暗号化オブジェクトデータCO(n)を復号する。オブジェクトデータ復号部で、履歴データH(j-1)及び差分データD(j)を含むオブジェクトデータOB(j)が得られた場合、読取装置RA(m)の履歴データ検証部が、得られた履歴データH(j-1)が、入力部に入力された処理済みデータPD(j-1)から一意に定まるものであるか否かを判定する。読取データ生成部は、オブジェクトデータ復号部で得られたオブジェクトデータOB(1)が含む差分データD(1)と、履歴データ検証部で処理済みデータPD(j-1)から一意に定まるものであると判定された履歴データH(j-1)を含むオブジェクトデータOB(j)が含む差分データD(j)と、からなる集合に属する要素（差分データ）の少なくとも一部を用いて読取データを生成して出力する。
【００１０】
ここで、読取装置RA(m)の読取データ生成部で生成される読取データは、履歴データ検証部から出力された差分データD(n)を用いて生成されるが、各差分データD(n)を得ることができるのは、各書込み者W(n)が設定した読取者の第１復号鍵を持つ読取装置RA(m)だけである。これにより、編集対象となるデータ自体にアクセス制御の機能を持たせることができる。また、このアクセス制御は、各書込み者W(n)がそれぞれ生成した各差分データD(n)単位で行われるため、各読取者に開示されるデータの範囲は書込み者が合意した範囲となる。
【発明の効果】
【００１１】
以上のように、本発明では、ストレージ装置に格納されたデータが複数の利用者によって編集される場合において、データに対するアクセス制御の機能をデータ自体に持たせ、データの開示範囲を各書込み者が合意した範囲とすることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、第１実施形態のデータ編集システムの全体構成を説明するための図である。
【図２】図２は、データを新規作成する書込み者W(1)が利用する書込み装置の機能構成を説明するためのブロック図である。
【図３】図３は、データ編集を行う書込み者W(j)が利用する書込み装置の機能構成を説明するためのブロック図である。
【図４】図４は、データの読取者R(m)が利用する読取装置の機能構成を説明するためのブロック図である。
【図５】図５（ａ）は、編集対象のデータが格納されるストレージ装置の機能構成を説明するためのブロック図である。図５（ｂ）は、鍵を管理する鍵管理装置の機能構成を説明するためのブロック図である。
【図６】図６は、第１実施形態の処理を説明するための図である。
【図７】図７は、第１実施形態の処理を説明するための図である。
【図８】図８は、第１実施形態の書込み装置で実行される新規作成処理を説明するためのフローチャートである。
【図９】図９は、第１実施形態の書込み装置で実行されるデータ編集処理を説明するためのフローチャートである。
【図１０】図１０は、第１実施形態の読取装置で実行される読取処理を説明するためのフローチャートである。
【図１１】図１１は、第１実施形態の読取装置で実行される読取処理を説明するためのフローチャートである。
【図１２】図１２（ａ）−（ｃ）は、第１実施形態の適用事例を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明の実施形態を説明する。
【００１４】
〔第１実施形態〕
まず、第１実施形態のデータ編集システムの構成を説明する。
【００１５】
＜構成＞
図１は、第１実施形態のデータ編集システム１の全体構成を説明するための図である。
【００１６】
図１に例示するように、本形態のデータ編集システム１は、ストレージ装置１１と、各書込み者W(n)(n∈{1,...,N}, N≧2)がそれぞれ利用する書込み装置１２−ｎ（書込み装置WA(n)）と、各読取者R(m)(m∈{1,...,M}, M≧2)がそれぞれ利用する読取装置１３−ｍ（読取装置RA(m)）と、鍵を管理する鍵管理装置１４とを有し、これらはネットワーク１５を通じて通信可能に構成されている。なお、本形態では、データ編集システム１が１つずつのストレージ装置１１及び鍵管理装置１４を持つ構成を例示するが、データ編集システム１が２つ以上のストレージ装置１１や鍵管理装置１４を持っていてもよい。また、本形態では、各書込み者W(n)がそれぞれ別個の書込み装置１２−ｎを利用し、各読取者R(m)がそれぞれ別個の読取装置１３−ｍを利用する構成を例示するが、複数の書込み者W(n)が１つの書込み装置を共有してもよく、複数の読取者R(m)が１つの読取装置を共有してもよい。また、書込み装置１２−ｎの少なくとも一部と読取装置１３−ｍの少なくとも一部とが１つの筐体内に納められていてもよい。また、各書込み者W(n)は、それぞれ、別の者であってもよいし、少なくとも一部の書込み者W(n)が同一の者であってもよい。同様に、各読取者R(m)は、それぞれ、別の者であってもよいし、少なくとも一部の読取者R(m)が同一の者であってもよい。さらに、書込み者W(n)と読取者R(m)とは別の者であってもよいし、書込み者W(n)の少なくとも一部と読取者R(m)の少なくとも一部とが同一の者であってもよい。
【００１７】
［書込み装置１２−１（書込み装置WA(1)）］
図２は、データを新規作成する書込み者W(1)が利用する書込み装置１２−１の機能構成を説明するためのブロック図である。
【００１８】
図２に例示するように、本形態の書込み装置１２−１は、入力部１２１ａ−１と、鍵通信部１２１ｂ−１と、出力部１２１ｃ−１と、記憶部１２２−１と、制御部１２３−１と、鍵取得処理部１２４ａ−１と、オブジェクトデータ生成部１２４ｂ−１と、オブジェクトデータ暗号化部１２４ｃ−１と、電子署名部１２４ｄ−１と、書込み者データ暗号化部１２４ｅ−１と、合成部１２４ｆ−１とを有する。
【００１９】
書込み装置１２−１は、例えば、ＣＰＵ（central processing unit）、ＲＡＭ（random-access memory）、ＲＯＭ（read-only memory）、通信装置等を具備する公知のコンピュータに所定のプログラムが読み込まれて実行されることで構成される。具体的には、入力部１２１ａ−１は、例えば、キーボードやマウスなどの入力インタフェース、入力ポート又は通信装置などである。また、鍵通信部１２１ｂ−１及び出力部１２１ｃ−１は、例えば、所定のプログラムを実行するＣＰＵの制御のもとで駆動する通信装置である。記憶部１２２−１は、例えば、ハードディスク等の補助記憶装置、ＲＡＭ、キャッシュメモリ或いはレジスタ、又は、それらの結合からなる記憶領域である。また、制御部１２３−１、鍵取得処理部１２４ａ−１、オブジェクトデータ生成部１２４ｂ−１、オブジェクトデータ暗号化部１２４ｃ−１、電子署名部１２４ｄ−１、書込み者データ暗号化部１２４ｅ−１及び合成部１２４ｆ−１は、例えば、ＣＰＵに所定のプログラムが読み込まれて構築される処理部である。また、書込み装置１２−１は、制御部１２３−１の制御のもと各処理を実行する。また、各処理部から出力されたデータは逐一記憶部１２２−１に格納され、必要に応じて別の処理の際に読み出されて利用される。
【００２０】
［書込み装置１２−ｊ（書込み装置WA(j)(j∈{2,...,N})）］
図３は、データ編集を行う書込み者W(j)が利用する書込み装置１２−ｊの機能構成を説明するためのブロック図である。
【００２１】
図３に例示するように、本形態の書込み装置１２−ｊは、入力部１２１ａ−ｊ，１２１ｇ−ｊと、鍵通信部１２１ｂ−ｊと、出力部１２１ｃ−ｊと、記憶部１２２−ｊと、制御部１２３−ｊと、鍵取得処理部１２４ａ−ｊと、オブジェクトデータ生成部１２４ｂ−ｊと、オブジェクトデータ暗号化部１２４ｃ−ｊと、電子署名部１２４ｄ−ｊと、書込み者データ暗号化部１２４ｅ−ｊと、合成部１２４ｆ−ｊと、履歴データ生成部１２４ｇ−ｊを有する。
【００２２】
書込み装置１２−ｊは、例えば、公知のコンピュータに所定のプログラムが読み込まれて実行されることで構成される。具体的には、入力部１２１ａ−ｊは、例えば、キーボードやマウスなどの入力インタフェース、入力ポート又は通信装置などである。また、入力部１２１ｇ−ｊ、鍵通信部１２１ｂ−１及び出力部１２１ｃ−ｊは、例えば、所定のプログラムを実行するＣＰＵの制御のもとで駆動する通信装置である。記憶部１２２−ｊは、例えば、ハードディスク等の補助記憶装置、ＲＡＭ、キャッシュメモリ或いはレジスタ、又は、それらの結合からなる記憶領域である。また、制御部１２３−ｊ、鍵取得処理部１２４ａ−ｊ、オブジェクトデータ生成部１２４ｂ−ｊ、オブジェクトデータ暗号化部１２４ｃ−ｊ、電子署名部１２４ｄ−ｊ、書込み者データ暗号化部１２４ｅ−ｊ、合成部１２４ｆ−ｊ及び履歴データ生成部１２４ｇ−ｊは、例えば、ＣＰＵに所定のプログラムが読み込まれて構築される処理部である。また、書込み装置１２−ｊは、制御部１２３−ｊの制御のもと各処理を実行する。また、各処理部から出力されたデータは逐一記憶部１２２−ｊに格納され、必要に応じて別の処理の際に読み出されて利用される。
【００２３】
［読取装置１３−ｍ（読取装置RA(m)）］
図４は、データの読取者R(m)が利用する読取装置１３−ｍの機能構成を説明するためのブロック図である。
【００２４】
図４に例示するように、本形態の読取装置１３−ｍは、入力部１３１ａ−ｍ，１３１ｃ−ｍと、鍵通信部１３１ｂ−ｍと、記憶部１３２−ｍと、制御部１３３−ｍと、鍵取得処理部１３４ａ−ｍと、書込み者データ復号部１３４ｂ−ｍと、署名検証部１３４ｃ−ｍと、書込み者検証部１３４ｄ−ｍと、オブジェクトデータ復号部１３４ｅ−ｍと、履歴データ検証部１３４ｆ−ｍと、読取データ生成部１３４ｇ−ｍとを有する。
【００２５】
読取装置１３−ｍは、例えば、公知のコンピュータに所定のプログラムが読み込まれて実行されることで構成される。具体的には、入力部１３１ａ−ｍ及び鍵通信部１３１ｂ−ｍは、例えば、所定のプログラムを実行するＣＰＵの制御のもとで駆動する通信装置である。入力部１３１ｃ−ｍは、例えば、キーボードやマウスなどの入力インタフェース、入力ポート又は通信装置などである。記憶部１３２−ｍは、例えば、ハードディスク等の補助記憶装置、ＲＡＭ、キャッシュメモリ或いはレジスタ、又は、それらの結合からなる記憶領域である。また、制御部１３３−ｍ、鍵取得処理部１３４ａ−ｍ、書込み者データ復号部１３４ｂ−ｍ、署名検証部１３４ｃ−ｍ、書込み者検証部１３４ｄ−ｍ、オブジェクトデータ復号部１３４ｅ−ｍ、履歴データ検証部１３４ｆ−ｍ及び読取データ生成部１３４ｇ−ｍは、例えば、ＣＰＵに所定のプログラムが読み込まれて構築される処理部である。また、読取装置１３−ｍは、制御部１３３−ｍの制御のもと各処理を実行する。また、各処理部から出力されたデータは逐一記憶部１３２−ｍに格納され、必要に応じて別の処理の際に読み出されて利用される。
【００２６】
［ストレージ装置１１］
図５（ａ）は、編集対象のデータが格納されるストレージ装置１１の機能構成を説明するためのブロック図である。
【００２７】
図５（ａ）に例示するように、本形態のストレージ装置１１は、入力部１１１と、出力部１１２と、記憶部１１３とを有する。ストレージ装置１１は、例えば、公知のコンピュータに所定のプログラムが読み込まれて実行されることで構成される。具体的には、入力部１１１及び出力部１１２は、例えば、所定のプログラムを実行するＣＰＵの制御のもとで駆動する通信装置である。また、記憶部１１３は、例えば、ハードディスク等の補助記憶装置、ＲＡＭ、キャッシュメモリ或いはレジスタ、又は、それらの結合からなる記憶領域である。
【００２８】
［鍵管理装置１４］
図５（ｂ）は、鍵を管理する鍵管理装置１４の機能構成を説明するためのブロック図である。
【００２９】
図５（ｂ）に例示するように、本形態の鍵管理装置１４は、入力部１４１と、出力部１４２と、抽出部１４３と、記憶部１４４とを有する。鍵管理装置１４は、例えば、公知のコンピュータに所定のプログラムが読み込まれて実行されることで構成される。具体的には、入力部１４１及び出力部１４２は、例えば、所定のプログラムを実行するＣＰＵの制御のもとで駆動する通信装置である。また、記憶部１４３は、例えば、ハードディスク等の補助記憶装置、ＲＡＭ、キャッシュメモリ或いはレジスタ、又は、それらの結合からなる記憶領域である。また、抽出部１４３は、ＣＰＵに所定のプログラムが読み込まれて構築される処理部である。
【００３０】
＜処理＞
次に、本形態の処理を説明する。
【００３１】
図６及び図７は、本形態の処理を説明するための図である。ここで、図７はＮ＝３の場合の処理を例示している。また、図８は、書込み装置１２−１で実行される新規作成処理を説明するためのフローチャートであり、図９は、書込み装置１２−ｊ（j∈{2,...,N}）で実行されるデータ編集処理を説明するためのフローチャートである。また、図１０及び図１１は、読取装置１３−ｍで実行される読取処理を説明するためのフローチャートである。以下、これらの図を参照しつつ、本形態の処理を説明する。
【００３２】
［事前処理］
事前処理として、各書込み者W(n)には、それぞれを特定するための書込み者データWID(n)が設定され、各読取者R(m)には、それぞれを特定するための読取者データRID(m)が設定されている。設定された書込み者データWID(n)は、それぞれに対応する書込み者W(n)が使用する書込み装置１２−ｎの記憶部１２２−ｎに格納される。また、書込み装置１２−ｎの記憶部１２２−ｎには、それぞれ、書込み者W(n)の電子署名を作成するための鍵SK(n)が格納され（図２，図３）、鍵管理装置１４の記憶部１４４には、書込み者W(n)の書込み者データWID(n)と、当該書込み者W(n)が作成した電子署名を検証するための鍵PK(n)とが、書込み者W(n)毎に対応付けられて格納される（図５（ｂ））。なお、鍵SK(n)及びPK(n)の一例は、ＲＳＡ等の公開鍵暗号方式の秘密鍵及び公開鍵からなる鍵ペアである。
【００３３】
また、鍵管理装置１４の記憶部１４４には、さらに、読取者R(m)に対して設定された読取者データRID(m)と、暗号化鍵EKW(m)と、暗号化鍵EKO(m)とが、読取者データRID(m)毎に対応付けられて格納される（図５（ｂ））。また、暗号化鍵EKW(m)で暗号化された暗号文を復号するための復号鍵DKW(m)（第２復号鍵）と、暗号化鍵EKO(m)で暗号化された暗号文を復号するための復号鍵DKO(m)（第１復号鍵）とが、読取装置１３−ｍの記憶部１３２−ｍ（鍵記憶部）に格納される。なお、暗号化鍵EKW(m)及び復号鍵DKW(m)の一例は、ＲＳＡ等の公開鍵暗号方式の公開鍵及び秘密鍵からなる鍵ペアである。同様に、暗号化鍵EKO(m)及び復号鍵DKO(m)の一例は、ＲＳＡ等の公開鍵暗号方式の公開鍵及び秘密鍵からなる鍵ペアである。
【００３４】
また、各書込み者W(n)は、自らの「アクセスポリシーACP(n)」と「プライバシーポリシーPRP(n)」を定め、各読取者R(m)は、自らの「受け入れポリシーPEP(m)」を定める。
【００３５】
アクセスポリシーACP(n)とは、書込み者W(n)が作成した差分データD(n)を開示する読取者R(ac(n))(ac(n)∈{1,...,M})の範囲を特定するデータである。本形態では、差分データD(n)を開示する１以上の読取者R(ac(n))の各読取者データRID(ac(n))からなるリストをアクセスポリシーACP(n)とする。例えば、書込み者W(1)が読取者R(1), R(2), R(5), R(7), R(10)に差分データD(1)を開示する場合、書込み者W(1)のアクセスポリシーACP(1)は、読取者データRID(1), RID(2), RID(5), RID(10)からなるリストである。
【００３６】
プライバシーポリシーPRP(n)とは、差分データD(n)を作成した書込み者W(n)を開示する読取者R(pr(n))(pr(n)∈{1,...,M})の範囲を特定するデータである。本形態では、差分データD(n)を作成した書込み者W(n)を開示する１以上の読取者R(pr(n))の各読取者データRID(pr(n))からなるリストをプライバシーポリシーPRP(n)とする。例えば、書込み者W(2)が読取者R(2), R(5), R(7)に差分データD(2)の作成者が自らであることを開示する場合、書込み者W(2)のプライバシーポリシーPRP(2)は、読取者データRID(2), RID(5), RID(7)からなるリストである。
【００３７】
受け入れポリシーPEP(m)とは、読取者R(m)が受け入れを許可する書込み者W(pe(m))(pe(m)∈{1,...,N})の範囲を特定するデータであり、言い換えると、読取者R(m)がどの書込み者W(pe(m))が作成したデータを受け入れるかを示すデータである。本形態では、読取者R(m)が受け入れを許可する１以上の書込み者W(pe(m))の各書込み者データWID(pe(m))からなるリストを受け入れポリシーPEP(m)とする。例えば、読取者R(3)が書込み者W(1),W(3),W(7)の作成したデータを受け入れるのであれば、読取者R(3)の受け入れポリシーPEP(m)は、書込み者データWID(1),WID(3),WID(7)からなるリストである。
【００３８】
［新規作成処理］
次に、データを新規作成する新規作成処理を説明する。
【００３９】
図６−８に例示するように、まず、データを新規作成する書込み者W(1)が利用する書込み装置１２−１の入力部１２１ａ−１（図２）に、書込み者W(1)が生成した新規作成データである差分データD(1)が入力され、記憶部１２２−１（第１差分データ記憶部）に格納される（ステップＳ１１）。
【００４０】
また、書込み装置１２−１の入力部１２１ａ−１には、書込み者W(1)のアクセスポリシーACP(1)が入力され、記憶部１２２−１に格納される（ステップＳ１２）。さらに、書込み装置１２−１の入力部１２１ａ−１には、書込み者W(1)のプライバシーポリシーPRP(1)が入力され、記憶部１２２−１に格納される（ステップＳ１３）。
【００４１】
次に、書込み装置１２−１のオブジェクトデータ生成部１２４ｂ−１が記憶部１２２−１から差分データD(1)を読み込み、これを含むオブジェクトデータOB(1)を生成し、記憶部１２２−１に格納する（ステップＳ１５）。本形態の例では、オブジェクトデータ生成部１２４ｂ−１は、所定の固定データH(0)及び差分データD(1)を含むオブジェクトデータOB(1)を生成する。なお、所定の固定データH(0)は、例えば、差分データD(1)が新規作成されたデータであることを示すデータであり、本形態では固定データH(0)=NULLとする。
【００４２】
次に、書込み装置１２−１の鍵取得処理部１２４ａ−１は、記憶部１２２−１からアクセスポリシーACP(1)を読み込み、アクセスポリシーACP(1)が含む１以上の読取者データRID(ac(1))(ac(1)∈{1,...,M})からなるリストを含む鍵取得要求データを作成する。作成された鍵取得要求データは、鍵通信部１２１ｂ−１に送られ、そこからネットワーク１５経由で鍵管理装置１４に送信される。鍵取得要求データは、鍵管理装置１４（図５（ｂ））の入力部１４１に入力され、抽出部１４３に送られる。抽出部１４３は、鍵取得要求データが含む各読取者データRID(ac(1))に対応付けられた暗号化鍵EKO(ac(1))を記憶部１４４から抽出する。抽出された暗号化鍵EKO(ac(1))は、出力部１４２からネットワーク経由で書込み装置１２−１に送信される。送信された暗号化鍵EKO(ac(1))は、書込み装置１２−１（図２）の鍵通信部１２１ｂ−１で受信され、鍵取得処理部１２４ａ−１に送られる。鍵取得処理部１２４ａ−１は、アクセスポリシーACP(1)が含む各読取者データRID(ac(1))にそれぞれ対応する各暗号化鍵EKO(ac(1))をオブジェクトデータ暗号化部１２４ｃ−１に送る。オブジェクトデータ暗号化部１２４ｃ−１（第１オブジェクトデータ暗号化部）は、記憶部１２２−１からオブジェクトデータOB(1)を読み出し、各暗号化鍵EKO(ac(1))を用い、オブジェクトデータOB(1)を、設定された１以上の読取者R(ac(1))(ac(1)∈{1,...,M})の各復号鍵DKO(ac(1))で復号可能なように暗号化して暗号化オブジェクトデータCO(1)を生成し、記憶部１２２−１に格納する（ステップＳ１６）。例えば、ＫＥＭ方式で暗号化される場合、オブジェクトデータ暗号化部１２４ｃ−１は、例えば、AESやcamellia等の共通鍵暗号方式の共通鍵CMK(1)を用いてオブジェクトデータOB(1)を暗号化して第１暗号文を作成し、各暗号化鍵EKO(ac(1))をそれぞれ用いて共通鍵CMK(1)を暗号化した１以上の第２暗号文を作成し、第１暗号文と第２暗号文とのセットを暗号化オブジェクトデータCO(1)とする。なお、図７では、暗号化オブジェクトデータCO(1)のうち、差分データD(1)に対応する暗号文をCD(1)と表記し、固定データH(0)=NULLに対応する暗号文をCH(0)と表記している。
【００４３】
次に、電子署名部１２４ｄ−１（第１電子署名部）が、記憶部１２２−１から鍵SK(1)とオブジェクトデータOB(1)とを読み出し、鍵SK(1)を用い、暗号化オブジェクトデータCO(1)に対する、書込み者W(1)の電子署名SIG(1)を生成し、記憶部１２２−１に格納する（ステップＳ１７）。なお、電子署名SIG(1)の一例は、ＲＳＡ署名などである。例えば、暗号化オブジェクトデータCO(1)のハッシュ値を鍵SK(1)を用いてＲＳＡ方式で暗号化したものを電子署名SIG(1)とする。また、電子署名SIG(1)は、差分データD(1)に対応する暗号文CD(1)及び固定データH(0)=NULLに対応する暗号文CH(0)の両方に対する電子署名となっている（図７）。
【００４４】
次に、書込み装置１２−１の鍵取得処理部１２４ａ−１は、記憶部１２２−１からプライバシーポリシーPRP(1)を読み込み、プライバシーポリシーPRP(1)が含む１以上の読取者データRID(pr(1))(pr(1)∈{1,...,M})からなるリストを含む鍵取得要求データを作成する。作成された鍵取得要求データは、鍵通信部１２１ｂ−１に送られ、そこからネットワーク１５経由で鍵管理装置１４に送信される。鍵取得要求データは、鍵管理装置１４（図５（ｂ））の入力部１４１に入力され、抽出部１４３に送られる。抽出部１４３は、鍵取得要求データが含む各読取者データRID(pr(1))に対応付けられた暗号化鍵EKW(pr(1))を記憶部１４４から抽出する。抽出された暗号化鍵EKW(pr(1))は、出力部１４２からネットワーク経由で書込み装置１２−１に送信される。送信された暗号化鍵EKW(pr(1))は、書込み装置１２−１（図２）の鍵通信部１２１ｂ−１で受信され、鍵取得処理部１２４ａ−１に送られる。鍵取得処理部１２４ａ−１は、プライバシーポリシーPRP(1)が含む各読取者データRID(pr(1))にそれぞれ対応する各暗号化鍵EKW(pr(1))を書込み者データ暗号化部１２４ｅ−１に送る。書込み者データ暗号化部１２４ｅ−１（第１書込み者データ暗号化部）は、記憶部１２２−１から書込み者データWID(1)を読み出し、各暗号化鍵EKW(pr(1))を用い、書込み者データWID(1)を、設定された１以上の読取者R(pr(1))(pr(1)∈{1,...,M})の各復号鍵DKW(pr(1))で復号可能なように暗号化し、暗号化書込み者データCW(1)を生成し、記憶部１２２−１に格納する（ステップＳ１８）。例えば、ＫＥＭ方式で暗号化される場合、書込み者データ暗号化部１２４ｅ−１は、例えば、AESやcamellia等の共通鍵暗号方式の共通鍵CMK2(1)を用いて書込み者データWID(1)を暗号化して第３暗号文を作成し、各暗号化鍵EKO(pr(1))をそれぞれ用いて共通鍵CMK2(1)を暗号化した１以上の第４暗号文を作成し、第３暗号文と第４暗号文とのセットを暗号化書込み者データCW(1)とする。
【００４５】
ステップＳ１６−Ｓ１８で生成された、暗号化オブジェクトデータCO(1)、電子署名SIG(1)及び暗号化書込み者データCW(1)は合成部１２４ｆ−１に送られ、合成部１２４ｆ−１は、これらを含む処理済みデータPD(1)を合成する。処理済みデータPD(1)は出力部１２１ｃ−１（第１出力部）に送られ、そこからネットワーク１５経由でストレージ装置１１（図５（ａ））に送信され（ステップＳ１９）、ストレージ装置１１の入力部１１１に受信されて記憶部１１３に格納される。
【００４６】
［データ編集処理］
次に、データを編集するデータ編集処理を説明する。
【００４７】
図６に例示するように、書込み者W(1)が新規作成したデータである差分データD(1)は、各書込み者W(j)(j∈{2,...,N})によって順次編集される。具体的には、例えば、書込み者W(2)は、書込み者W(1)によって生成された差分データD(1)に対する変更部分を差分データD(2)として生成し、書込み者W(3)は、差分データD(1)に対して差分データD(2)を反映させた編集データに対する変更部分を差分データD(3)として生成し、書込み者W(4)は、差分データD(1)に対して差分データD(2),D(3)を反映させた編集データに対する変更部分を差分データD(4)として生成する。すなわち、各書込み者W(j)(j∈{2,...,N})は、差分データD(1)に対して編集がなされていない場合には差分データD(1)に対する変更部分を差分データD(j)として生成し、差分データD(1)に対して編集がなされている場合には、差分データD(1)に対して差分データD(2),...,D(j-1)を反映させた編集データに対する変更部分を差分データD(j)として生成する。そして、書込み者W(j)が利用する書込み装置１２−ｊは、書込み者W(j)が作成した差分データD(j)と、書込み装置１２−（ｊ−１）が生成した処理済みデータPD(j-1)とを用い、新たな処理済みデータPD(j)を生成する。以下に、各書込み装置１２−ｊが実行するデータ編集処理を説明する。
【００４８】
図６，７，９に例示するように、データの編集を行う書込み者W(j)(j∈{2,...,N})は、書込み装置１２−ｊの入力部１２１ａ−ｊ（図３）に、書込み者W(j)が生成した差分データD(ｊ)を入力し、当該差分データD(ｊ)は記憶部１２２−j（第２差分データ記憶部）に格納される（ステップＳ２１）。
【００４９】
また、書込み装置１２−jの入力部１２１ａ−jには、書込み者W(j)のアクセスポリシーACP(j)が入力され、記憶部１２２−jに格納される（ステップＳ２２）。さらに、書込み装置１２−jの入力部１２１ａ−jには、書込み者W(j)のプライバシーポリシーPRP(j)が入力され、記憶部１２２−jに格納される（ステップＳ２３）。
【００５０】
次に、書込み装置１２−jは、ストレージ装置１１（図５（Ａ））にアクセスし、処理済みデータPD(j-1)の取得を要求する。これに対し、ストレージ装置１１の出力部１１２は、記憶部１１３に格納されている処理済みデータPD(j-1)をネットワーク１５経由で書込み装置１２−jに送信する。処理済みデータPD(j-1)は、書込み装置１２−j（図３）の入力部１２１ｇ−ｊで受信され、記憶部１２２−ｊに格納される。次に、書込み装置１２−jの履歴データ生成部１２４ｇ−ｊが、記憶部１２２−ｊから処理済みデータPD(j-1)を読み出し、処理済みデータPD(j-1)から一意に定まる履歴データH(j-1)を生成して記憶部１２２−ｊ（履歴データ記憶部）に格納する（ステップＳ２４）。なお、履歴データH(j-1)の例は、処理済みデータPD(j-1)のハッシュ値などの関数値である。
【００５１】
次に、書込み装置１２−jのオブジェクトデータ生成部１２４ｂ−jが記憶部１２２−jから履歴データH(j-1)及び差分データD(j)を読み込み、これらを含むオブジェクトデータOB(j)を生成し、記憶部１２２−jに格納する（ステップＳ２５）。
【００５２】
次に、書込み装置１２−jの鍵取得処理部１２４ａ−jは、記憶部１２２−jからアクセスポリシーACP(j)を読み込み、アクセスポリシーACP(j)が含む１以上の読取者データRID(ac(j))(ac(j)∈{1,...,M})からなるリストを含む鍵取得要求データを作成する。作成された鍵取得要求データは、鍵通信部１２１ｂ−jに送られ、そこからネットワーク１５経由で鍵管理装置１４に送信される。鍵取得要求データは、鍵管理装置１４（図５（ｂ））の入力部１４１に入力され、抽出部１４３に送られる。抽出部１４３は、鍵取得要求データが含む各読取者データRID(ac(j))に対応付けられた暗号化鍵EKO(ac(j))を記憶部１４４から抽出する。抽出された暗号化鍵EKO(ac(j))は、出力部１４２からネットワーク経由で書込み装置１２−jに送信される。送信された暗号化鍵EKO(ac(j))は、書込み装置１２−j（図３）の鍵通信部１２１ｂ−jで受信され、鍵取得処理部１２４ａ−jに送られる。鍵取得処理部１２４ａ−jは、アクセスポリシーACP(j)が含む各読取者データRID(ac(j))にそれぞれ対応する各暗号化鍵EKO(ac(j))をオブジェクトデータ暗号化部１２４ｃ−jに送る。オブジェクトデータ暗号化部１２４ｃ−j（第２オブジェクトデータ暗号化部）は、記憶部１２２−jからオブジェクトデータOB(j)を読み出し、各暗号化鍵EKO(ac(j))を用い、オブジェクトデータOB(j)を、設定された１以上の読取者R(ac(j))(ac(j)∈{1,...,M})の各復号鍵DKO(ac(j))で復号可能なように暗号化して暗号化オブジェクトデータCO(j)を生成し、記憶部１２２−jに格納する（ステップＳ２６）。例えば、ＫＥＭ方式で暗号化される場合、オブジェクトデータ暗号化部１２４ｃ−jは、例えば、AESやcamellia等の共通鍵暗号方式の共通鍵CMK(j)を用いてオブジェクトデータOB(j)を暗号化して第１暗号文を作成し、各暗号化鍵EKO(ac(j))をそれぞれ用いて共通鍵CMK(j)を暗号化した１以上の第２暗号文を作成し、第１暗号文と第２暗号文とのセットを暗号化オブジェクトデータCO(j)とする。なお、図７では、暗号化オブジェクトデータCO(j)のうち、差分データD(j)に対応する暗号文をCD(j)と表記し、履歴データH(j-1)に対応する暗号文をCH(j-1)と表記している。
【００５３】
次に、電子署名部１２４ｄ−j（第２電子署名部）が、記憶部１２２−jから鍵SK(j)とオブジェクトデータOB(j)とを読み出し、鍵SK(j)を用い、暗号化オブジェクトデータCO(j)に対する、書込み者W(j)の電子署名SIG(j)を生成し、記憶部１２２−jに格納する（ステップＳ２７）。なお、電子署名SIG(j)の一例は、ＲＳＡ署名などである。また、電子署名SIG(j)は、差分データD(j)に対応する暗号文CD(j)及び履歴データH(j-1)に対応するCH(j-1)の両方に対する電子署名となっている（図７）。
【００５４】
次に、書込み装置１２−jの鍵取得処理部１２４ａ−jは、記憶部１２２−jからプライバシーポリシーPRP(j)を読み込み、プライバシーポリシーPRP(j)が含む１以上の読取者データRID(pr(j))(pr(j)∈{1,...,M})からなるリストを含む鍵取得要求データを作成する。作成された鍵取得要求データは、鍵通信部１２１ｂ−jに送られ、そこからネットワーク１５経由で鍵管理装置１４に送信される。鍵取得要求データは、鍵管理装置１４（図５（ｂ））の入力部１４１に入力され、抽出部１４３に送られる。抽出部１４３は、鍵取得要求データが含む各読取者データRID(pr(j))に対応付けられた暗号化鍵EKW(pr(j))を記憶部１４４から抽出する。抽出された暗号化鍵EKW(pr(j))は、出力部１４２からネットワーク経由で書込み装置１２−jに送信される。送信された暗号化鍵EKW(pr(j))は、書込み装置１２−j（図３）の鍵通信部１２１ｂ−jで受信され、鍵取得処理部１２４ａ−jに送られる。鍵取得処理部１２４ａ−jは、プライバシーポリシーPRP(j)が含む各読取者データRID(pr(j))にそれぞれ対応する各暗号化鍵EKW(pr(j))を書込み者データ暗号化部１２４ｅ−jに送る。書込み者データ暗号化部１２４ｅ−j（第２書込み者データ暗号化部）は、記憶部１２２−jから書込み者データWID(j)を読み出し、各暗号化鍵EKW(pr(j))を用い、書込み者データWID(j)を、設定された１以上の読取者R(pr(j))(pr(j)∈{1,...,M})の各復号鍵DKW(pr(j))で復号可能なように暗号化し、暗号化書込み者データCW(j)を生成し、記憶部１２２−jに格納する（ステップＳ２８）。例えば、ＫＥＭ方式で暗号化される場合、書込み者データ暗号化部１２４ｅ−ｊは、例えば、AESやcamellia等の共通鍵暗号方式の共通鍵CMK2(j)を用いて書込み者データWID(j)を暗号化して第３暗号文を作成し、各暗号化鍵EKO(pr(j))をそれぞれ用いて共通鍵CMK2(j)を暗号化した１以上の第４暗号文を作成し、第３暗号文と第４暗号文とのセットを暗号化書込み者データCW(j)とする。
【００５５】
ステップＳ２６−Ｓ２８で生成された、暗号化オブジェクトデータCO(j)、電子署名SIG(j)及び暗号化書込み者データCW(j)は合成部１２４ｆ−jに送られ、合成部１２４ｆ−jは、これらを含む処理済みデータPD(j)を合成する。処理済みデータPD(j)は出力部１２１ｃ−ｊ（第２出力部）に送られ、そこからネットワーク１５経由でストレージ装置１１（図５（ａ））に送信され（ステップＳ２９）、ストレージ装置１１の入力部１１１に受信されて記憶部１１３に格納される。
【００５６】
［データ読取処理］
次に、ストレージ装置１１からデータを読取るデータ読取処理を説明する。なお、以下では、Ｎ個の書込み装置１２−１，２，...，Ｎで処理済みデータPD(1),PD(2),...,PD(N)が生成され、それらがストレージ装置１１の記憶部１１３に格納されているものとする。
【００５７】
図６，７，１０に例示するように、ストレージ装置１１からデータの読取を行う読取者R(m)(m∈{1,...,M})は、まず、自らが利用する読取装置１３−ｍ（図４）の入力部１３１ｃ−ｍに受け入れポリシーPEP(m)を入力し、当該受け入れポリシーPEP(m)は、読取装置１３−ｍの記憶部１３２ｍに格納される（ステップＳ５１）。
【００５８】
次に、読取装置１３−ｍの制御部１３３−ｍが変数iの値をi=1に設定し、その内容を記憶部１３２−ｍに格納する（ステップＳ５２）。
【００５９】
次に、読取装置１３−ｍは、ストレージ装置１１（図５（Ａ））にアクセスし、処理済みデータPD(i)の取得を要求する。これに対し、ストレージ装置１１の出力部１１２は、記憶部１１３に格納されている処理済みデータPD(i)をネットワーク１５経由で読取装置１３−ｍに送信する。処理済みデータPD(i)は、読取装置１３−ｍ（図４）の入力部１３１ａ−ｍで受信され、記憶部１３２−ｍに格納される（ステップＳ５３）。
【００６０】
次に、読取装置１３−ｍの書込み者データ復号部１３４ｂ−ｍは、記憶部１３２−ｍから、復号鍵DKW(m)と処理済みデータPD(i)が含む暗号化書込み者データCW(i)とを読込み、復号鍵DKW(m)を用い、暗号化書込み者データCW(i)を復号する（ステップＳ５４）。例えば、暗号化書込み者データCW(i)がＫＥＭ方式で暗号化されたものであるならば、書込み者データ復号部１３４ｂ−ｍは、復号鍵DKW(m)を用いて暗号化書込み者データCW(i)が含む第４暗号文の復号処理を行い、何れかの第４暗号文から共通鍵CMK2(i)が復号されたのであれば、その共通鍵CMK2(i)を用いて暗号化書込み者データCW(i)が含む第３暗号文を復号して書込み者データWID(i)を得る。なお、復号鍵DKW(m)を用いて暗号化書込み者データCW(i)が復号できるのは、書込み者W(i)が読取者R(m)に暗号化書込み者データCW(i)の復号を許容していた場合、言い換えると、書込み者W(i)のプライバシーポリシーPRP(i)に読取者データRID(m)が含まれていた場合である。
【００６１】
ここで、書込み者データ復号部１３４ｂ−ｍが暗号化書込み者データCW(i)を復号できなかった場合（ステップＳ５５）、書込み者検証部１３４ｄ−ｍが、記憶部１３２−ｍから受け入れポリシーPEP(m)を読み出し、受け入れポリシーPEP(m)がすべての書込み者W(1),...,W(N)の受け入れを許可するものか、言い換えると、受け入れポリシーPEP(m)がすべての書込み者W(1),...,W(N)に対応する書込み者データWID(1),...,WID(N)を含んでいるかを判定する（ステップＳ５６）。ここで、受け入れポリシーPEP(m)がすべての書込み者データWID(1),...,WID(N)を含んでいると判定されたならば後述するステップＳ６０の処理に進み、そうでなければ後述するステップＳ６８の処理に進む。
【００６２】
一方、書込み者データ復号部１３４ｂ−ｍが暗号化書込み者データCW(i)を復号できた場合（ステップＳ５５）、それによって得られた書込み者データWID(i)が鍵取得処理部１３４ａ−ｍに入力される。鍵取得処理部１３４ａ−ｍは、この書込み者データWID(i)を含む鍵取得要求データを作成する。作成された鍵取得要求データは、鍵通信部１３１ｂ−ｍに送られ、そこからネットワーク１５経由で鍵管理装置１４に送信される。鍵取得要求データは、鍵管理装置１４（図５（ｂ））の入力部１４１に入力され、抽出部１４３に送られる。抽出部１４３は、鍵取得要求データが含む書込み者データWID(i)に対応付けられた鍵PK(i)を記憶部１４４から抽出する。抽出された鍵PK(i)は、出力部１４２からネットワーク経由で読取装置１３−ｍに送信される。送信された鍵PK(i)は、読取装置１３−ｍ（図４）の鍵通信部１３１ｂ−ｍで受信され、鍵取得処理部１３４ａ−ｍ経由で署名検証部１３４ｃ−ｍに送られる。署名検証部１３４ｃ−ｍは、記憶部１３２−ｍから、処理済みデータPD(i)が含む暗号化オブジェクトデータCO(i)及び電子署名SIG(i)を読み出し、鍵PK(i)を用い、電子署名SIG(i)が、オブジェクトデータCO(i)に対する、書込み者データWID(i)によって特定される書込み者W(i)の正しい電子署名であるか否かを判定する（ステップＳ５８）。すなわち、署名検証部１３４ｃ−ｍは、鍵PK(i)を用いてオブジェクトデータCO(i)に付された電子署名SIG(i)を検証する。ここで、電子署名SIG(i)が正しい電子署名ではないと判定された場合には、後述するステップＳ６８の処理に進む。一方、電子署名SIG(i)が正しい電子署名であると判定された場合には、書込み者検証部１３４ｄ−ｍが、記憶部１３２−ｍから受け入れポリシーPEP(m)を読み出し、受け入れポリシーPEP(m)が書込み者W(i)の受け入れを許可するものか、言い換えると、受け入れポリシーPEP(m)が書込み者W(i)に対応する書込み者データWID(i)を含んでいるかを判定する（ステップＳ５９）。ここで、受け入れポリシーPEP(m)が書込み者W(i)に対応する書込み者データWID(i)を含んでいないのであれば、後述するステップＳ６８の処理に進む。一方、受け入れポリシーPEP(m)が書込み者W(i)に対応する書込み者データWID(i)を含んでいるのであれば、次のステップＳ６０の処理に進む。
【００６３】
ステップＳ６０の処理では、オブジェクトデータ復号部１３４ｅ−ｍが、記憶部１３２−ｍから、復号鍵DKO(m)と処理済データPD(i)が含む暗号化オブジェクトデータCO(i)とを読み出し、復号鍵DKO(m)を用いて暗号化オブジェクトデータCO(i)を復号する（ステップＳ６０）。例えば、暗号化オブジェクトデータCO(i)がＫＥＭ方式で暗号化されたものであるならば、オブジェクトデータ復号部１３４ｅ−ｍは、復号鍵DKO(m)を用いて暗号化オブジェクトデータCO(i)が含む第２暗号文の復号処理を行い、何れかの第４暗号文から共通鍵CMK(i)が復号されたのであれば、その共通鍵CMK(i)を用いて暗号化オブジェクトデータCO(i)が含む第１暗号文を復号してオブジェクトデータOB(i)を得る。なお、復号鍵DKO(m)を用いて暗号化オブジェクトデータCO(i)が復号できるのは、書込み者W(i)が読取者R(m)に暗号化オブジェクトデータCO(i)の復号を許容していた場合、言い換えると、書込み者W(i)のアクセスポリシーACP(i)に読取者データRID(m)が含まれていた場合である。
【００６４】
ここで、オブジェクトデータ復号部１３４ｅ−ｍが暗号化オブジェクトデータCO(i)を復号できなかったのであれば（ステップＳ６１）、後述するステップＳ６８の処理に進む。一方、オブジェクトデータ復号部１３４ｅ−ｍが暗号化オブジェクトデータCO(i)を復号できたのであれば（ステップＳ６１）、次のステップＳ６２の処理に進む。
【００６５】
ステップＳ６２の処理では、制御部１３３−ｍが、記憶部１３２−ｍに格納した変数iの値がi=1であるか否かを判定する。ここで、i=1であると判定された場合、後述のステップＳ６５の処理に進む。
【００６６】
一方、i=1でないと判定された場合、読取装置１３−ｍは、ストレージ装置１１（図５（Ａ））にアクセスし、処理済みデータPD(i-1)の取得を要求する。これに対し、ストレージ装置１１の出力部１１２は、記憶部１１３に格納されている処理済みデータPD(i-1)をネットワーク１５経由で読取装置１３−ｍに送信する。処理済みデータPD(i-1)は、読取装置１３−ｍ（図４）の入力部１３１ａ−ｍで受信され、記憶部１３２−ｍに格納される（ステップＳ６３）。
【００６７】
次に、履歴データ検証部１３４ｆ−ｍに、復号処理によって得られたオブジェクトデータOB(i)が含む履歴データH(i-1)と、記憶部１３２−ｍから読み出された処理済みデータPD(i-1)とが入力される。履歴データ検証部１３４ｆ−ｍは、履歴データH(i-1)が処理済みデータPD(i-1)から一意に定まるものであるか否かを判定する（ステップＳ６４）。例えば、この判定方法は、ステップＳ２４の処理内容に依存するが、例えば、ステップＳ２４で処理済みデータのハッシュ値を履歴データとしていたのであれば、履歴データ検証部１３４ｆ−ｍは、処理済みデータPD(i-1)のハッシュ値と履歴データH(i-1)とが一致するか否かを判定する。ここで、履歴データH(i-1)が処理済みデータPD(i-1)から一意に定まるものでないと判定されたのであれば、後述のステップＳ６８の処理に進む。一方、履歴データH(i-1)が処理済みデータPD(i-1)から一意に定まるものであると判定されたのであれば、次のステップＳ６５の処理に進む。
【００６８】
ステップＳ６５の処理では、オブジェクトデータ復号部１３４ｅ−ｍは、ステップＳ６０の復号処理によって得られたオブジェクトデータOB(i)が含む差分データD(i)を出力して、記憶部１３２−ｍに格納する（ステップＳ６５）。次に、制御部１３３−ｍが、記憶部１３２−ｍに格納された変数iの値がi=Nであるか否かを判定する（ステップＳ６６）。ここで、i=Nでなければ、制御部１３３−ｍは、i+1を新たな変数iの値として処理をステップＳ５３に戻す。一方、i=Nであれば、次のステップＳ６８の処理に進む。
【００６９】
ステップＳ６８の処理では、読取データ生成部１３４ｇ−ｍが、ステップＳ６０の処理で得られたオブジェクトデータOB(1)が含む差分データD(1)と、ステップＳ６４の処理で処理済みデータPD(j-1)(j∈{2,...,N})から一意に定まるものであると判定された履歴データH(j-1)を含むオブジェクトデータOB(j)が含む差分データD(j)とを入力とし、それらを用いて読取データDATAを生成して出力する（ステップＳ６８）。すなわち、読取データ生成部１３４ｇ−ｍは、ステップＳ６０の処理で得られた差分データD(1)を、ステップＳ６４の処理で処理済みデータPD(j-1)(j∈{2,...,N})から一意に定まるものであると判定された履歴データH(j-1)を含むオブジェクトデータOB(j)が含む差分データD(j)を用いて更新したものを読取データDATAとして生成する。なお、初期データである差分データD(1)の各差分データD(j)を用いた更新は、値が小さなjに対応する差分データD(j)から順番に用いて行われる。例えば、差分データD(1)を差分データD(2),D(3),D(4)を用いて更新する場合、まず、初期データである差分データD(1)を差分データD(2)を用いて更新し、その更新結果を差分データD(3)を用いて更新し、その更新結果を差分データD(4)を用いて更新する。なお、本形態の読取データ生成部１３４ｇ−ｍは、署名検証部１３４ｃ−ｍで正しい電子署名でないと判定された電子署名SIG(n)に対応する暗号化オブジェクトデータCO(n)を復号して得られた差分データD(n)を用いることなく読取データDATAを生成することになる。また、本形態の読取データ生成部１３４ｇ−ｍは、受け入れポリシーPEP(m)によって設定された１以上の書込み者W(pe(m))に含まれない書込み者W(n)が生成したと判定された差分データD(n)を用いることなく読取データDATAを生成することになる。
【００７０】
＜適用事例＞
次に、本形態の適用事例を示す。
【００７１】
今、N=4とし、書込み者W(1)が新規の文書α(1)である差分データD(1)を作成し、書込み者W(2)が文書α(1)を差分データD(2)で修正した文書α(2)を作成し、書込み者W(3)が文書α(2)を差分データD(3)で修正した文書α(3)を作成し、書込み者W(4)が文書α(3)を差分データD(4)で修正した文書α(4)を作成する状況を考える。また、M=3とし、これらの文書α(1), α(2), α(3), α(4)を読取者R(1),R(2),R(3)が閲覧するものとする。
【００７２】
ここで、書込み者W(1)が作成した文書α(1)を閲覧する権限がある読取者の集合をRS(W(1))とし、書込み者W(2)が作成した新規文書α(2)を閲覧する権限がある読取者の集合をRS(W(2))とし、書込み者W(3)が作成した新規文書α(3)を閲覧する権限がある読取者の集合をRS(W(3))とし、書込み者W(4)が作成した新規文書α(4)を閲覧する権限がある読取者の集合をRS(W(4))とすると、
RS(W(1))={R(1),R(2),R(3)}
RS(W(2))={R(1),R(2)}
RS(W(3))={R(2),R(3)}
RS(W(4))={R(2),R(3)}
と表現されるような状況であるとする。なお、書込み者W(n)が作成した文書α(n)を閲覧する権限がある読取者の集合とは、書込み者W(n)のアクセスポリシーACP(n)が含む各読取者データRID(ac(n))がそれぞれ示す読取者R(ac(n))の集合を意味する。
【００７３】
今、読取者R(3)が文書α(2)を閲覧しようとしたとする。これまでの一般的な技術の場合、たとえ書込み者W(2)が読取者R(3)に文書α(2)の閲覧を許可していない場合であっても、書込み者W(3)やW(4)が読取者R(3)に文書α(3)やα(4)の閲覧を許可すれば、読取者R(3)は、書込み者W(3)やW(4)によって上書きされていない限り、書込み者W(2)が作成した差分データD(2)を閲覧することが可能であった。しかし、本形態の方式では、書込み者W(2)に閲覧を許可されていない読取者R(3)は、たとえ、書込み者W(3)やW(4)が読取者R(3)に文書α(3)やα(4)の閲覧を許可していても、書込み者W(2)が作成した差分データD(2)を閲覧することはできない（ステップＳ６１）。これにより、例えば、ネットワーク上のファイル中の情報が、その閲覧を許可されていないものに不正に二次利用されることを防止できる。
【００７４】
次に、上記の事例ですべての文書α(1), α(2), α(3), α(4)の閲覧がすべての読取者R(1),R(2),R(3)に許可されているとする。すなわち、
RS(W(1))={R(1),R(2),R(3)}
RS(W(2))={R(1),R(2),R(3)}
RS(W(3))={R(1),R(2),R(3)}
RS(W(4))={R(1),R(2),R(3)}
と表現されるような状況であるとする。加えて、読取者R(1)が受け入れを許可した書込み者の集合をLS(R(1))とし、読取者R(2)が受け入れを許可した書込み者の集合をLS(R(2))とし、読取者R(3)が受け入れを許可した書込み者の集合をLS(R(3))とし、読取者R(4)が受け入れを許可した書込み者の集合をLS(R(4))とすると、
LS(R(1))={W(1),W(2),W(3),W(4)}
LS(R(2))={W(1), W(3)}
LS(R(3))={W(1),W(2),W(4)}
と表現されるような状況であるとする。なお、読取者R(m)が受け入れを許可した書込み者の集合とは、読取者R(m)の受け入れポリシーPEP(m)が含む各書込み者データWID(pe(m))がそれぞれ示す書込み者W(pe(m))の集合を意味する。今、読取者R(3)が、書込み者W(3)が作成した文書α(3)を閲覧しようとしたとする。しかし、読取者R(3)は、書込み者W(3)の受け入れを許可していないため、読取者R(3)は、文書α(2)を閲覧することになる（ステップＳ５９）。これにより、例えば、SPAMメールであるとか、フィッシング詐欺サイトに誘導する文書などにアクセスしてしまうことを防止できる。
【００７５】
図１２（ａ）−（ｃ）は、第１実施形態の適用事例を説明するための図である。
【００７６】
次に、第１実施形態の適用事例を図に従って説明する。
【００７７】
この事例では、ユーザIが書込み者W(1)となって新規文書β(1)である差分データD(1)を生成する。その後、ユーザIIIが書込み者W(2)となって差分データD(2)によって文書β(1)を文書β(2)に修正し、ユーザIVが書込み者W(3)となって差分データD(3)によって文書β(2)を文書β(3)に修正し、ユーザIが書込み者W(4)となって差分データD(4)によって文書β(3)を文書β(4)に修正している。一方で、ユーザIIが書込み者W'(4)となって差分データD'(4)によって文書β(3)を文書β(5)に修正している。また、ユーザIIが書込み者W''(2)となって差分データD''(2)によって文書β(1)を文書β(6)に修正し、ユーザIIIが書込み者W''(3)となって差分データD''(3)によって文書β(6)を文書β(7)に修正し、ユーザIIが書込み者W''(4)となって差分データD''(4)によって文書β(7)を文書β(8)に修正し、ユーザIVが書込み者W''(5)となって差分データD''(5)によって文書β(8)を文書β(9)に修正している。これらの文書β(1)-β(9)を読取者R(1)が読取ることを考える。
【００７８】
図１２（ａ）は、すべてのユーザI-IVの各アクセスポリシーACP(n)がそれぞれ含む各読取者データRID(ac(n))がそれぞれ示す読取者R(ac(n))に、読取者R(1)が含まれている状態を示す。すなわち、すべてのユーザI-IVは、読取者R(1)が文書β(1)-β(9)を閲覧することを許可している。この場合、読取者R(1)の受け入れポリシーに制約がなければ、読取者R(1)はすべての文書β(1)-β(9)を閲覧できる。
【００７９】
図１２（ｂ）は、ユーザI,IIの各アクセスポリシーACP(n)がそれぞれ含む各読取者データRID(ac(n))がそれぞれ示す読取者R(ac(n))に読取者R(1)が含まれているが、ユーザIII,IVの各アクセスポリシーACP(n)がそれぞれ含む各読取者データRID(ac(n))がそれぞれ示す読取者R(ac(n))には、読取者R(1)が含まれていない状態を示す。すなわち、ユーザI,IIは、自ら作成した差分データの閲覧を許可しているが、ユーザIII,IVは、自ら作成した差分データの閲覧を許可していない。この場合、読取者R(1)は、文書β(1),β(6)については、そのすべての部分を閲覧することができるが、その他の文書β(2)-β(5), β(7)-β(9)については、その一部分しか閲覧できない（ステップＳ６１）。
【００８０】
図１２（ｃ）は、ユーザI,III,IVの各アクセスポリシーACP(n)がそれぞれ含む各読取者データRID(ac(n))がそれぞれ示す読取者R(ac(n))に読取者R(1)が含まれているが、ユーザIIのアクセスポリシーACP(n)がそれぞれ含む各読取者データRID(ac(n))がそれぞれ示す読取者R(ac(n))には、読取者R(1)が含まれていない状態を示す。すなわち、ユーザI,III,IVは、自ら作成した差分データの閲覧を許可しているが、ユーザIIは、自ら作成した差分データの閲覧を許可していない。この場合、読取者R(1)は、文書β(1)-β(4)については、そのすべての部分を閲覧することができるが、その他の文書β(5)-β(9)については、その一部分しか閲覧できない（ステップＳ６１）。
【００８１】
＜本形態の特徴＞
本形態のアクセスポリシーACP(n)に従った制御により（ステップＳ１６，Ｓ２６，Ｓ６１）、データに対するアクセス制御の機能をデータ自体に持たせ、データの開示範囲を各書込み者が合意した範囲とすることができる（秘匿性）。
【００８２】
また、本形態では、処理済データPD(n)が、それを作成した書込み装置１２−ｎを利用した書込み者W(n)に対応する暗号化書込み者データCW(n)を含むこととした。そのため、読取者R(m)は、各編集部分である差分データD(n)を生成した書込み者W(n)を知ることができる（完全性）。これにより、編集されたデータの信頼性を担保できる。
【００８３】
本形態のプライバシーポリシーPRP(n)に従った制御により（ステップＳ１８，Ｓ２８，Ｓ５５）、書込み者W(n)が望む場合にはそのプライバシーを保護することができる（プライバシー）。
【００８４】
さらに、本形態の受け入れポリシーPEP(m)に従った制御により（ステップＳ５６，Ｓ５９）、読取者R(m)が不正なデータにアクセスすることを防止できる。
【００８５】
また、本形態の方式では、ストレージ装置１１の認証機能を用いることなく、これらの機能を実現できる。その結果、処理済データPD(n)をストレージ装置１１以外の場所に移したとしても、上記の機能が担保されている。また、上記の制御はストレージ装置１１の管理者に対しても有効である。
【００８６】
〔第２実施形態〕
次に、本発明の第２実施形態を説明する。第２実施形態は第１実施形態の変形例であり、データ読取処理のみが相違する。すなわち、図１１に示した通り、第１実施形態では、ステップＳ６１の判定結果やステップＳ６４の判定結果がｎｏである場合、ステップＳ６８の処理に進み、それ以上大きなiに対する処理を実行しないこととした。しかし、第２実施形態では、ステップＳ６１の判定結果やステップＳ６４の判定結果がｎｏである場合、ステップＳ６６の処理に進み、i=Nでない限り、それ以上大きなiに対する処理を実行する。これにより、読取者R(m)は、復号できない差分データや不当な差分データの閲覧が不可能であることは変わりないが、すべての電子署名SIG(1),...,SIG(N)の検証や、受け入れポリシーPEP(m)の適合の可否判定を行い、編集データ全体の完全性を検証することができる。
【００８７】
〔第３実施形態〕
次に、本発明の第３実施形態を説明する。暗号化オブジェクトデータCO(n)が、オブジェクトデータOB(n)と付加情報とを含む情報の暗号文であってもよいし、暗号化書込み者データCW(n)が、書込み者データWID(n)と付加情報とを含む情報の暗号文であってもよい。また、受け入れポリシーPEP(m)が、各書込み者データWID(pe(m))だけではなく、さらに付加情報を含み、読取装置１３−ｍが、暗号化オブジェクトデータCO(n)や書込み者データWID(n)を復号して得られた付加情報が受け入れポリシーPEP(m)が含む付加情報に合致するかを判定し（例えば、ステップＳ５９の追加された判定処理）、合致しない場合には受け入れを拒否する構成でもよい（ステップＳ５９の判定結果でｎｏとする）。なお、付加情報の例としては、以下を例示できる。
【００８８】
・編集時間（処理済データPD(n)の生成時刻など）
・編集場所（処理済データPD(n)の生成が行われた場所、ネットワーク上の位置、国、地方等）
・編集された状況
【００８９】
〔第４実施形態〕
次に第４実施形態を説明する。上記実施形態では、暗号化方式や署名方式として公開鍵暗号方式等を用いた。しかし、暗号化方式として述語暗号を用いてもよい。
【００９０】
述語暗号とは、「属性情報」と呼ばれる情報と「述語情報」と呼ばれる情報との組み合わせが所定の論理式を「真」にする場合に暗号文が復号できる方式である。すなわち、述語暗号では、「属性情報」と「述語情報」の一方が暗号文に埋め込まれ、他方が鍵情報に埋め込まれ、暗号文又は鍵情報である第１情報に対応する属性情報と、鍵情報又は暗号文である第２情報に対応する述語情報とが予め定められた関数に入力された場合の当該関数値が予め定められた値となる場合に、正しい復号結果を生成する。これにより、上述した「アクセスポリシーACP(n)」「プライバシーポリシーPRP(n)」「受け入れポリシーPEP(m)」による制御を容易に実現できる。例えば、書込み装置１２−ｎが、「アクセスポリシーACP(n)」や「プライバシーポリシーPRP(n)」に対応するRID(ac(n))やRID(pr(n))や上記「付加情報」に対応する属性情報を含む暗号文を暗号化オブジェクトデータCO(n)や暗号化書込み者データCW(n)として生成し、読取装置１３−ｍが、自らに対応するWID(m)や「受け入れポリシーPEP(m)」に対応するWID(pe(m))や上記「付加情報」に対応する「述語情報」を含む鍵情報でこれらを復号する構成でもよい。
【００９１】
従来の述語暗号の構成は、例えば、参考文献１「"Predicate Encryption Supporting Disjunctions, Polynomial Equations, and Inner Products," with Amit Sahai and Brent Waters One of 4 papers from Eurocrypt 2008 invited to the Journal of Cryptology」等に開示されている。しかし、述語暗号方式として、以下の内積述語暗号を用いてもよい。
【００９２】
＜内積述語暗号＞
〔定義〕
まず、本形態で使用する用語や記号を定義する。なお、以下の定義は本形態のみに適用されるものである。
【００９３】
行列：演算が定義された集合の元を矩形に並べたもの。環の元を要素とするものだけではなく、群の元を要素とするものも「行列」と表現する。
(・)T：・の転置行列。
(・)-1：・の逆行列。
∧：論理積。
∨：論理和。
Ｚ：整数集合。
ｋ：セキュリティパラメータ（k∈Z, k>0）。
{0,1}*：任意ビット長のバイナリ系列。その一例は、整数0及び1からなる系列である。しかし、整数0及び1からなる系列に限定されない。位数2の有限体又はその拡大体と同義である。
q：１以上の整数。
Zq：位数qの有限環。有限環上の演算は、例えば、位数qを法とする剰余演算によって容易に構成できる。
Fq：位数qの有限体。Fqが有限体であるためには、位数qは素数又は素数のべき乗値でなければならない。有限体Fqの例は素体やそれを基礎体とした拡大体である。なお、有限体Fqが素体である場合の演算は、例えば、位数qを法とする剰余演算によって容易に構成できる。また、有限体Fqが拡大体である場合の演算は、例えば、既約多項式を法とする剰余演算によって容易に構成できる。有限体Fqの具体的な構成方法は、例えば、参考文献１「ISO/IEC 18033-2: Information technology - Security techniques - Encryption algorithms - Part 2: Asymmetric ciphers」に開示されている。
【００９４】
0F：有限体Fqの加法単位元。
1F：有限体Fqの乗法単位元。
δ(i,j)：クロネッカーのデルタ関数。i=jの場合にδ(i,j)=1Fを満たし、i≠jの場合にδ(i,j)=0 Fを満たす。
E：有限体Fq上で定義された楕円曲線。アフィン（affine）座標版のWeierstrass方程式
y2+a1・x・y+a3・y=x3+a2・x2+a4・x+a6          …(1)
警告 1（ただし、a1,a2,a3,a4,a6∈Fq）を満たすx,y∈Fqからなる点(x,y)の集合に無限遠点と呼ばれる特別な点Ｏを付加したもので定義される。楕円曲線Ｅ上の任意の２点に対して楕円加算と呼ばれる二項演算＋及び楕円曲線E上の任意の１点に対して楕円逆元と呼ばれる単項演算−がそれぞれ定義できる。また、楕円曲線E上の有理点からなる有限集合が楕円加算に関して群をなすこと、楕円加算を用いて楕円スカラー倍算と呼ばれる演算が定義できること、及びコンピュータ上での楕円加算などの楕円演算の具体的な演算方法はよく知られている（例えば、参考文献１、参考文献２「RFC 5091: Identity-Based Cryptography Standard (IBCS) #1: Supersingular Curve Implementations of the BF and BB1 Cryptosystems」、参考文献３「イアン・Ｆ・ブラケ、ガディエル・セロッシ、ナイジェル・Ｐ・スマート＝著、「楕円曲線暗号」、出版＝ピアソン・エデュケーション、ISBN4-89471-431-0」等参照）。
【００９５】
また、楕円曲線E上の有理点からなる有限集合は位数p(p≧1)の部分群を持つ。例えば、楕円曲線E上の有理点からなる有限集合の要素数を＃Eとし、pを＃Eを割り切る大きい素数とした場合、楕円曲線Eのp等分点からなる有限集合E[p]は、楕円曲線E上の有理点からなる有限集合の部分群を構成する。なお、楕円曲線Eのp等分点とは、楕円曲線E上の点Aのうち、楕円曲線E上での楕円スカラー倍算値p・Aがp・A＝Ｏを満たす点を意味する。
【００９６】
G1, G2, GT：位数qの巡回群。巡回群G1, G2の具体例は、楕円曲線Eのp等分点からなる有限集合E[p]やその部分群である。G1=G2であってもよいしG1≠G2であってもよい。また、巡回群GTの具体例は、有限体Fqを基礎体とする拡大体の加法についての部分群である。その一例は、有限体Fqの代数閉包における１のｐ乗根からなる有限集合である。
【００９７】
なお、本形態では、巡回群G1, G2上で定義された演算を加法的に表現し、巡回群GT上で定義された演算を乗法的に表現する。すなわち、χ∈Fq及びΩ∈G1に対するχ・Ω∈G1は、Ω∈G1に対して巡回群G1で定義された演算をχ回施すことを意味し、Ω1, Ω2∈G1に対するΩ1+Ω2∈G1は、Ω1∈G1とΩ2∈G1とを被演算子として巡回群G1で定義された演算を行うことを意味する。同様に、χ∈Fq及びΩ∈G2に対するχ・Ω∈G2は、Ω∈G2に対して巡回群G2で定義された演算をχ回施すことを意味し、Ω1, Ω2∈G2に対するΩ1+Ω2∈G2は、Ω1∈G2とΩ2∈G2とを被演算子として巡回群G2で定義された演算を行うことを意味する。一方、χ∈Fq及びΩ∈GTに対するΩχ∈GTは、Ω∈GTに対して巡回群GTで定義された演算をχ回施すことを意味し、Ω1,Ω2∈GTに対するΩ1・Ω2∈GTは、Ω1∈GTとΩ2∈GTとを被演算子として巡回群GTで定義された演算を行うことを意味する。
【００９８】
G1n+1：n+1(n≧1)個の巡回群G1の直積。
G2n+1：n+1個の巡回群G2の直積。
g1, g2,gT：巡回群G1, G2, GTの生成元。
V：n+1個の巡回群G1の直積からなるn+1次元のベクトル空間。
V*：n+1個の巡回群G2の直積からなるn+1次元のベクトル空間。
e：直積G1n+1と直積G2n+1との直積G1n+1×G2n+1を巡回群GTに写す非退化な双線形写像（bilinear map）を計算するための関数（「双線形関数」と呼ぶ）。双線形関数eは、巡回群G1のn+1個の元γL(L=1,...,n+1)(n≧1)と巡回群G2のn+1個の元γL*(L=1,...,n+1)とを入力とし、巡回群GTの１個の元を出力する。
【００９９】
e：G1n+1×G2n+1→GT            …(2)
双線形関数eは以下の性質を満たす。
【０１００】
［双線形性］すべてのΓ1∈G1n+1，Γ2∈G2n+1及びν，κ∈Fqについて以下の関係を満たす。
e(ν・Γ1,κ・Γ2)=e(Γ1,Γ2)ν・κ          …(3)
［非退化性］すべてのΓ1∈G1n+1，Γ2∈G2n+1を巡回群GTの単位元に写す関数ではない。
【０１０１】
［計算可能性］あらゆるΓ1∈G1n+1，Γ2∈G2n+1についてe(Γ1,Γ2)を効率的に計算するアルゴリズムが存在する。
【０１０２】
本形態では、巡回群G1と巡回群G2との直積G1×G2を巡回群GTに写す非退化な双線形写像を計算するための関数
Pair:G1×G2→GT            …(4)
を用いて双線形関数eを構成する。本形態の双線形関数eは、巡回群G1のn+1個の元γL(L=1,...,n+1)からなるn+1次元ベクトル(γ1,...,γn+1)と、巡回群G2のn+1個の元γL*(i=1,...,n+1)からなるn+1次元ベクトル(γ1*,...,γn+1*)との入力に対し、巡回群GTの１個の元
e=ΠL=1n+1 Pair(γL, γL*)          …(5)
を出力する関数である。
【０１０３】
なお、双線形関数Pairは、巡回群G1の１個の元と巡回群G2の１個の元との組を入力とし、巡回群GTの１個の元を出力する関数であり、以下の性質を満たす。
【０１０４】
［双線形性］すべてのΩ1∈G1，Ω2∈G2及びν，κ∈Fqについて以下の関係を満たす。
【０１０５】
Pair(ν・Ω1,κ・Ω2)=Pair(Ω1,Ω2)ν・κ          …(6)
［非退化性］すべてのΩ1∈G1，Ω2∈G2を巡回群GTの単位元に写す関数ではない。
【０１０６】
［計算可能性］あらゆるΩ1∈G1，Ω2∈G2についてPair(Ω1,Ω2)を効率的に計算するアルゴリズムが存在する。
【０１０７】
なお、双線形関数Pairの具体例は、WeilペアリングやTateペアリングなどのペアリング演算を行うための関数である（例えば、参考文献４「Alfred. J. Menezes，ELLIPTIC CURVE PUBLIC KEY CRYPTOSYSTEMS， KLUWER ACADEMIC PUBLISHERS， ISBN0-7923-9368-6，pp. 61-81」等参照）。また、楕円曲線Eの種類に応じ、Tateペアリングなどのペアリング演算を行うための関数と所定の関数phiを組み合わせた変更ペアリング関数e(Ω1,phi(Ω2))（Ω1∈G1，Ω2∈G2）を双線形関数Pairとして用いてもよい（例えば、参考文献２等参照）。また、ペアリング演算をコンピュータ上で行うためのアルゴリズムとしては、周知のMiller のアルゴリズム（参考文献５「V. S. Miller, “Short Programs for functions on Curves,”1986，インターネット＜http://crypto.stanford.edu/miller/miller.pdf＞」などが存在する。また、ペアリング演算を効率的に行うための楕円曲線や巡回群の構成方法はよく知られている（例えば、参考文献２、参考文献５「A. Miyaji, M. Nakabayashi, S.Takano, "New explicit conditions of elliptic curve Traces for FR-Reduction," IEICE Trans. Fundamentals, vol. E84-A, no05, pp. 1234-1243, May 2001」、参考文献６「P.S.L.M. Barreto, B. Lynn, M. Scott, "Constructing elliptic curves with prescribed embedding degrees," Proc. SCN '2002, LNCS 2576, pp.257-267, Springer-Verlag. 2003」、参考文献７「R. Dupont, A. Enge, F. Morain, "Building curves with arbitrary small MOV degree over finite prime fields," http://eprint.iacr.org/2002/094/」等参照）。
【０１０８】
ai(i=1,...,n+1)：巡回群G1のn+1個の元を要素とするn+1次元の基底ベクトル。基底ベクトルaiの一例は、κ1・g1∈G1をi次元目の要素とし、残りのn個の要素を巡回群G1の単位元（加法的に「0」と表現）とするn+1次元の基底ベクトルである。この場合、n+1次元の基底ベクトルai(i=1,...,n+1)の各要素をそれぞれ列挙して表現すると、以下のようになる。
【０１０９】
a1=(κ1・g1,0,0,...,0)
a2=(0,κ1・g1,0,...,0)           …(7)
...
an+1=(0,0,0,...,κ1・g1)
ここで、κ1は加法単位元0F以外の有限体Fqの元からなる定数であり、κ1∈Fqの具体例はκ1=1Fである。基底ベクトルaiは直交基底であり、巡回群G1のn+1個の元を要素とするすべてのn+1次元ベクトルは、n+1次元の基底ベクトルai(i=1,...,n+1)の線形和によって表される。すなわち、n+1次元の基底ベクトルaiは前述のベクトル空間Vを張る。
【０１１０】
ai*(i=1,...,n+1)：巡回群G2のn+1個の元を要素とするn+1次元の基底ベクトル。基底ベクトルai*の一例は、κ2・g2∈G2をi次元目の要素とし、残りのn個の要素を巡回群G2の単位元（加法的に「0」と表現）とするn+1次元の基底ベクトルである。この場合、基底ベクトルai*(i=1,...,n+1)の各要素をそれぞれ列挙して表現すると、以下のようになる。
【０１１１】
a1*=(κ2・g2,0,0,...,0)
a2*=(0,κ2・g2,0,...,0)            …(8)
...
an+1*=(0,0,0,...,κ2・g2)
ここで、κ2は加法単位元0F以外の有限体Fqの元からなる定数であり、κ2∈Fqの具体例はκ2=1Fである。基底ベクトルai*は直交基底であり、巡回群G2のn+1個の元を要素とするすべてのn+1次元ベクトルは、n+1次元の基底ベクトルai*(i=1,...,n+1)の線形和によって表される。すなわち、n+1次元の基底ベクトルai*は前述のベクトル空間V*を張る。
【０１１２】
なお、基底ベクトルaiと基底ベクトルai*とは、0Fを除く有限体Fqの元τ=κ1・κ2について
e(ai, aj*)=gTτ・δ(i,j)           …(9)
を満たす。すなわち、i=jの場合には、式(5)(6)の関係から、
e(ai, aj*)= Pair(κ1・g1,κ2・g2)・Pair(0, 0)・...・Pair(0, 0)
= Pair(g1, g2)κ1・κ2・Pair(g1, g2)0・0・...・Pair(g1, g2)0・0
= Pair(g1, g2)κ1・κ2=gTτ
を満たす。一方、i≠jの場合には、e(ai, aj*)は、Pair(κ1・g1,κ2・g2)を含まず、Pair(κ1・g1,0)と Pair(0,κ2・g2)とPair(0,0)との積になる。さらに、式(6)の関係からPair(g1, 0)=Pair(0, g2)=Pair(g1, g2)0を満たす。そのため、i≠jの場合には、
e(ai, aj*)=e(g1, g2)0=gT0
を満たす。
【０１１３】
特に、τ=κ1・κ2=1Fである場合（例えば、κ1=κ2=1Fの場合）、
e(ai, aj*)=gTδ(i,j)           …(10)
を満たす。ここで、gT0=1は巡回群GTの単位元であり、gT1= gTは巡回群GTの生成元である。この場合、基底ベクトルaiと基底ベクトルai*とは双対正規直交基底であり、ベクトル空間Vとベクトル空間V*とは、双線形写像を構成可能な双対ベクトル空間〔双対ペアリングベクトル空間（DPVS:Dual Paring Vector space)〕である。
【０１１４】
A：基底ベクトルai(i=1,...,n+1)を要素とするn+1行n+1列の行列。例えば、基底ベクトルai(i=1,...,n+1)が式(7)によって表現される場合、行列Aは、
【０１１５】
【数１】
2011087150.tif 000003
となる。
【０１１６】
A*：基底ベクトルai*(i=1,...,n+1)を要素とするn+1行n+1列の行列。例えば、基底ベクトルai*(i=1,...,n+1)が式(8)によって表現される場合、行列A*は、
【０１１７】
【数２】
2011087150.tif 000004
となる。
【０１１８】
X：有限体Fqの元を要素とするn+1行n+1列の行列。基底ベクトルaiの座標変換に用いられる。行列Ｘのi行j列(i=1,...,n+1,j=1,...,n+1)の要素をχi,j∈Fqとすると、行列Xは、
【０１１９】
【数３】
2011087150.tif 000005
となる。なお、行列Ｘの各要素χi,jを変換係数と呼ぶ。
【０１２０】
X *：行列Xの逆行列の転置行列Ｘ*=(Ｘ-1)T。基底ベクトルai*の座標変換に用いられる。行列X *のi行j列の要素をχi,j*∈Fqとすると、行列Ｘ*は、
【０１２１】
【数４】
2011087150.tif 000006
となる。なお、行列Ｘ*の各要素χi,j*を変換係数と呼ぶ。
【０１２２】
この場合、n+1行n+1列の単位行列をIとするとＸ・(Ｘ*)T=Ｉを満たす。すなわち、単位行列
【０１２３】
【数５】
2011087150.tif 000007
に対し、
【０１２４】
【数６】
2011087150.tif 000008
を満たす。ここで、n+1次元ベクトル
χi→=(χi,1,...,χi,n+1)            …(17)
χj→*=(χj,1*,...,χj,n+1*)           …(18)
を定義する。すると、式(16)の関係から、n+1次元ベクトルχi→とχj→*との内積は、
χi→・χj→*=δ(i,j)          …(19)
となる。
【０１２５】
bi：巡回群G1のn+1個の元を要素とするn+1次元の基底ベクトル。行列Xを用いて基底ベクトルai(i=1,...,n+1)を座標変換することで得られる。具体的には、基底ベクトルbiは、
bi=Σj=1n+1χi,j・aj          …(20)
の演算によって得られる。例えば、基底ベクトルaj(j=1,...,n+1)が式(7)によって表現される場合、基底ベクトルbiの各要素をそれぞれ列挙して表現すると、以下のようになる。
【０１２６】
bi=(χi,1・κ1・g1 ,χi,2・κ1・g1 ,...,χi,n+1・κ1・g1)       …(21)
巡回群G1のn+1個の元を要素とするすべてのn+1次元ベクトルは、n+1次元の基底ベクトルbi(i=1,...,n+1)の線形和によって表される。すなわち、n+1次元の基底ベクトルbiは前述のベクトル空間Vを張る。
【０１２７】
bi*：巡回群G2のn+1個の元を要素とするn+1次元の基底ベクトル。行列X*を用いて基底ベクトルai*(i=1,...,n+1)を座標変換することで得られる。具体的には、基底ベクトルbi*は、
bi*=Σj=1n+1χi,j*・aj*          …(22)
の演算によって得られる。例えば、基底ベクトルaj*(j=1,...,n+1)が式(8)によって表現される場合、基底ベクトルbi*の各要素をそれぞれ列挙して表現すると、以下のようになる。
【０１２８】
bi*=(χi,1*・κ2・g2 ,χi,2*・κ2・g2 ,...,χi,n+1*・κ2・g2)   …(23)
巡回群G2のn+1個の元を要素とするすべてのn+1次元ベクトルは、n+1次元の基底ベクトルbi*(i=1,...,n+1)の線形和によって表される。すなわち、n+1次元の基底ベクトルbi*は前述のベクトル空間V*を張る。
【０１２９】
なお、基底ベクトルbiと基底ベクトルbi*とは、0Fを除く有限体Fqの元τ=κ1・κ2について
e(bi, bj*)=gTτ・δ(i,j)           …(24)
を満たす。すなわち、式(5)(19)(21)(23)の関係から、
【０１３０】
【数７】
2011087150.tif 000009
を満たす。特に、τ=κ1・κ2=1Fである場合（例えば、κ1=κ2=1Fの場合）、
e(bi, bj*)=gTδ(i,j)           …(25)
を満たす。この場合、基底ベクトルbiと基底ベクトルbi*とは、双対ペアリングベクトル空間（ベクトル空間Vとベクトル空間V*）の双対正規直交基底である。
【０１３１】
なお、式(24)の関係を満たすのであれば、式(7)(8)で例示したもの以外の基底ベクトルai及びai*や、式(20)(22)で例示したもの以外の基底ベクトルbi及びbi*を用いてもよい。
【０１３２】
B：基底ベクトルbi(i=1,...,n+1)を要素とするn+1行n+1列の行列。B=X・Aを満たす。例えば、基底ベクトルbiが式(21)によって表現される場合、行列Bは、
【０１３３】
【数８】
2011087150.tif 000010
となる。
【０１３４】
B*：基底ベクトルbi*(i=1,...,n+1)を要素とするn+1行n+1列の行列。B*=X*・A*を満たす。例えば、基底ベクトルbi*(i=1,...,n+1)が式(23)によって表現される場合、行列B*は、
【０１３５】
【数９】
2011087150.tif 000011
となる。
【０１３６】
w→：有限体Fqの元を要素とするn次元ベクトル。
w→=(w1,...,wn)∈Fqn           …(28)
wμ：n次元ベクトルのμ(μ=1,...,n)番目の要素。
v→：有限体Fqの元を要素とするn次元ベクトル。
v→=(v1,...,vn)∈Fqn           …(29)
vμ：n次元ベクトルのμ(μ=1,...,n)番目の要素。
Enc：共通鍵暗号方式の暗号化処理を示す共通鍵暗号関数。共通鍵暗号方式の具体例は、カメリア（Camellia）やAESなどである。
Enck(M)：共通鍵Kを用い、共通鍵暗号関数Encに従って平文Mを暗号化して得られた暗号文。
Dec：共通鍵暗号方式の復号処理を示す共通鍵復号関数。
Deck(C)：共通鍵Kを用い、共通鍵復号関数Decに従って暗号文Cを復号して得られた復号結果。
【０１３７】
〔内積述語暗号〕
次に、内積述語暗号の基本的な構成を例示する。
【０１３８】
内積述語暗号は、属性情報や述語情報として互いに次元が等しいベクトルを用い、それらの内積が０となる場合に暗号文が復号される述語暗号である。内積述語暗号では、内積が０となることと論理式が「真」となることとが等価である。なお、参考文献１に記載された述語暗号も内積述語暗号の一種である。
【０１３９】
［論理式と多項式との関係］
内積述語暗号では、論理和や論理積からなる論理式を多項式で表現する。
【０１４０】
まず、「xがη0である」という命題１と「xがη1である」という命題２との論理和 (x=η0)∨(x=η1)を
(x-η0)・(x-η1)          …(30)
という多項式で表現する。すると、各真理値と式(30)の関数値との関係は以下のようになる。
【０１４１】
【表１】
2011087150.tif 000012
[表1]から分かるように、論理和(x=η0)∨(x=η1)が真である場合、式(30)の関数値は0になり、論理和(x=η0)∨(x=η1)が偽である場合、式(30)の関数値は0以外の値となる。すなわち、論理和(x=η0)∨(x=η1)が真であることと、式(30)の関数値が0となることとは等価である。よって、論理和は式(30)で表現できる。
【０１４２】
また、「xがη0である」という命題１と「xがη1である」という命題２との論理積 (x=η0)∧(x=η1)を
ι0・(x-η0)+ι1・(x-η1)          …(31)
という多項式で表現する。ただし、ι0及びι1は乱数である（その他の添え字が付いたιも同様）。すると、真理値と式(31)の関数値とは以下の関係となる。
【０１４３】
【表２】
2011087150.tif 000013
[表２]から分かるように、論理積 (x=η0)∧(x=η1)が真である場合、式(31)の関数値は0になり、論理積 (x=η0)∧(x=η1)が偽である場合、式(31)の関数値は0以外の値となる。すなわち、論理積 (x=η0)∧(x=η1)が真であることと、式(31)の関数値が0となることとは等価である。よって、論理積は式(31)で表現できる。
【０１４４】
以上のように、式(30)と式(31)とを用いることで論理和や論理積からなる論理式を多項式f(x)で表現できる。例えば、論理式{(x=η0)∨(x=η1)∨(x=η2)}∧(x=η3)∧(x=η4)は、多項式
f(x)=ι0・{(x-η0)・(x-η1)・(x-η2)}+ι1・(x=η3)+ι2・(x=η4)    …(32)
で表現できる。
【０１４５】
なお、式(30）では、１つの不定元xを用いて論理和を表現したが、複数の不定元を用いて論理和を表現することも可能である。例えば、２つの不定元x0及びx1を用い、「x0がη0である」という命題１と「x1がη1である」という命題２との論理和 (x0=η0)∨(x1=η1)を
(x0-η0)・(x1-η1)          …(33)
という多項式で表現することも可能であり、３つ以上の不定元を用い、論理和を多項式で表現することも可能である。
【０１４６】
また、式(31）では、１つの不定元xを用いて論理積を表現したが、複数の不定元を用いて論理積を表現することも可能である。例えば、また、「x0がη0である」という命題１と「x1がη1である」という命題２との論理積 (x0=η0)∧(x1=η1)を
ι0・(x0-η0)+ι1・(x1-η1)          …(34)
という多項式で表現することも可能であり、３つ以上の不定元を用い、論理積を多項式で表現することも可能である。
【０１４７】
以下では、論理和及び／又は論理積を含む論理式をH(H≧1)個の不定元x0,...,xH-1を用いて表現した多項式をf(x0,...,xH-1) と表現する。また、各不定元x0,...,xH-1に対応する命題を「xhがηhである」とする。ただし、ηh（h=0,...H-1）は命題ごとに定まる定数である。この場合、当該論理式を示す多項式f(x0,...,xH-1)は、不定元xhと定数ηhとの差をとる多項式によって当該不定元xhが当該定数ηhであるという命題を表現し、命題をそれぞれ表現する多項式の積によって当該命題の論理和を表現し、命題又は命題の論理和をそれぞれ表現する多項式の線形和によって当該命題又は命題の論理和の論理積を表現し、それによって論理式を表現した多項式となる。例えば、５つの不定元x0,...,x4を用い、論理式{(x0=η0)∨(x1=η1)∨(x2=η2)}∧(x3=η3)∧(x4=η4)を多項式で表現すると、
f(x0,...,x4)=ι0・{(x0-η0)・(x1-η1)・(x2-η2)}+ι1・(x3=η3)+ι2・(x4=η4)
となる。
【０１４８】
［多項式と内積の関係］
論理式を示す多項式f(x0,...,xH-1)は、２つのn次元ベクトルの内積で表現できる。すなわち、多項式f(x0,...,xH-1)は、当該多項式f(x0,...,xH-1)の各項の不定元成分を各要素とするベクトル
v→=(v1,...,vn)          …(35)
と、当該多項式f(x0,...,xH-1)の各項の係数成分を各要素とするベクトル
w→=(w1,...,wn)          …(36)
との内積
f(x0,...,xH-1)=w→・v→           …(37)
に等しい。例えば、１つの不定元xで表現された多項式f(x)=θ0・x0+θ1・x+...+θn-1・xn-1は、２つのn次元ベクトル
v→=(v1,...,vn)=(x0,...,xn-1)           …(38)
w→=(w1,...,wn)=(θ0,...,θn-1)         …(39)
の内積
f(x)= w→・v→          …(40)
に等しい。
【０１４９】
すなわち、論理式を示す多項式f(x0,...,xH-1)が0であるか否かと、多項式f(x0,...,xH-1)の各項の不定元成分を各要素とするベクトルv→と、多項式f(x0,...,xH-1)の各項の係数成分を各要素とするベクトルw→との内積が0であるか否かとは等価である。
【０１５０】
f(x0,...,xH-1)=0  ←→  w→・v→=0          …(41)
本形態で例示する内積述語暗号では、当該不定元成分にプロトコルごと又は当該プロトコルの組み合わせごとに定められた識別子が代入された値を各要素とするベクトルv→=(v0,...,vn-1)を属性情報ATTとし、係数成分を各要素とするベクトルw→=(w0,...,wn-1)を述語情報PREとする。すなわち、
属性情報ATT：v→=(v1,...,vn)           …(42)
述語情報PRE：w→=(w1,...,wn)           …(43)
である。そして、属性情報ATTと述語情報PREの一方が暗号文に埋め込まれ、他方が鍵情報に埋め込まれる。
【０１５１】
［内積述語暗号の基本構成例１］
次に、内積述語暗号の具体例を示す。基本構成例１は、内積述語暗号によって鍵カプセル化メカニズムKEM (Key Encapsulation Mechanisms)を構成する例である。基本構成例１では、述語情報PREに対応する暗号文が生成され、属性情報ATTに対応する鍵情報が生成される。基本構成例１は、Setup(1k)，GenKey(MSK,w→)，Enc(PA,v→)，Dec(SKw,C1,C2)を含む。
【０１５２】
《Setup(1k)：セットアップ》
−入力：セキュリティパラメータk
−出力：マスター鍵情報MSK，公開パラメータPK
Setup(1k)の一例では、まず、セキュリティパラメータkをnとして、n+1次元の基底ベクトルai(i=1,...,n+1)を要素とするn+1行n+1列の行列Aと、基底ベクトルai*(i=1,...,n+1)を要素とするn+1行n+1列の行列A*と、座標変換のためのn+1行n+1列の行列X，X*とが選択される。次に、式(20)に従って座標変換されたn+1次元の基底ベクトルbi(i=1,...,n+1)が算出され、式(22)に従って座標変換されたn+1次元の基底ベクトルbi*(i=1,...,n+1)が算出される。そして、基底ベクトルbi*(i=1,...,n+1)を要素とするn+1行n+1列の行列B*がマスター鍵情報MSKとして出力され、ベクトル空間V, V*、基底ベクトルbi(i=1,...,n+1)を要素とするn+1行n+1列の行列B、セキュリティパラメータk、有限体Fq、楕円曲線E、巡回群G1, G2,GT、生成元g1, g2, gT、双線形関数eなどが公開パラメータPKとして出力される。
【０１５３】
《GenKey(MSK,w→)：鍵情報生成》
−入力：マスター鍵情報MSK，ベクトルw→
−出力：ベクトルw→に対応する鍵情報D*
GenKey(MSK,w→)の一例では、まず、有限体Fqから元α∈Fqが選択される。そして、マスター鍵情報MSKである行列B*を用い、ベクトルw→に対応する鍵情報
D*=α・(Σμ=1nwμ・bμ*)+bn+1*∈G2n+1        …(44)
が生成され、出力される。なお、巡回群G2上での離散対数問題の求解が困難である場合、鍵情報D*からwμ・bμ*やbn+1*の成分を分離抽出することは困難である。
【０１５４】
《Enc(PA,v→)：暗号化》
−入力：公開パラメータPK，ベクトルv→，平文M
−出力：暗号文C1，C2，共通鍵K
Enc(PA,v→)の一例では、まず、共通鍵Kと有限体Fqの元である乱数υ1とが生成される。そして、行列Bなどの公開パラメータPKと、共通鍵Kを含む値に対応する有限体Fqの元υ2と、ベクトルv→と、乱数υ1とを用い、暗号文
C2=υ1・(Σμ=1nvμ・bμ)+υ2・bn+1∈G1n+1        …(45)
が生成される。
【０１５５】
そして、暗号文
C1=Enck(M)         …(46)
が生成され、暗号文C1と暗号文C2と共通鍵Kとが出力される。共通鍵Kの一例はK=gTτ・υ2∈GTである。ここで、添え字のυ2はυ2を意味する。また、前述のようにτの一例はτ=1Fである。なお、巡回群G1上での離散対数問題の求解が困難である場合、暗号文C2からvμ・bμやυ2・bn+1の成分を分離抽出することは困難である。
【０１５６】
《Dec(SKw,C1,C2)：鍵共有・復号》
−入力：ベクトルw→に対応する鍵情報D1*，暗号文C1，C2
−出力：共通鍵K，平文M
Dec(SKw,C1,C2)の一例では、まず、暗号文C2と鍵情報D1*とが式(2)の双線形関数eに入力される。すると、式(3)(24)の性質から、
【０１５７】
【数１０】
2011087150.tif 000014
を満たす。
【０１５８】
ここで、内積w→・v→=0であれば、式(47)は、
【０１５９】
【数１１】
2011087150.tif 000015
と変形できる。この結果から共通鍵Kが生成され出力される。共通鍵Kの一例はK=gTτ・υ2∈GTである。
【０１６０】
次に、当該共通鍵Kと暗号文C1とを用い、復号結果
M=Deck(C1)           …(49)
が算出され出力される。
【０１６１】
［内積述語暗号の基本構成例２］
基本構成例２も、内積述語暗号を用いて鍵カプセル化メカニズムKEMを構成する場合の基本構成例であるが、基本構成例２では、属性情報ATTに対応する暗号文が生成され、述語情報PREに対応する鍵情報が生成される。この構成は、Setup(1k)，GenKey(MSK,v→)，Enc(PA,w→)，Dec(SKv,C1,C2)を含む。基本構成例２は、基本構成例１のベクトルv→とベクトルw→とを逆にした構成となる。
【０１６２】
すなわち、GenKey(MSK,v→)では、式(44)の代わりに、鍵情報
D*=α・(Σμ=1nvμ・bμ*)+bn+1*∈G2n+1        …(50)
が生成され、出力される。また、Enc(PA,w→)では、式(45)の代わりに、暗号文
C2=υ1・(Σμ=1nwμ・bμ)+υ2・bn+1∈G1n+1        …(51)
が生成される。また、Dec(SKv,C1,C2)では、式(44)で生成された鍵情報の代わりに式(50)で生成された鍵情報が用いられる。その他は、基本構成例１と同様である。
【０１６３】
また、例えば、前述の基本構成例１，２で例示した暗号文C2はn+1次元の基底ベクトルを用いて構成されたが（式(45)(51)）、互いに直交するn+2次元以上の基底ベクトルb1,...bn+ξを用いて暗号文C2が構成されてもよい。例えば、以下の式(52)(53)の暗号文C2が生成されてもよい。なお、ξは２以上の整数であり、υξ+1は定数や変数などである。
【０１６４】
C2=υ1・(Σμ=1nvμ・bμ)+υ2・bn+1+…+υξ+1・bn+ξ∈G1n+ξ    …(52)
C2=υ1・(Σμ=1nwμ・bμ)+υ2・bn+1+…+υξ+1・bn+ξ∈G1n+ξ    …(53)
また、上述の有限体Fq上で定義された各演算を環Zq上で定義された演算に置き換えてもよい。有限体Fq上で定義された各演算を環Zq上で定義された演算に置き換える方法の一例は、素数やそのべき乗値以外のqを許容する方法である。この場合、パラメータや入力値によっては零因子が分母となって乗法についての逆元が計算できない場合も生じるが、その場合にはエラーとして処理をやり直すことにすればよい。
【０１６５】
〔その他の変形例〕
なお、本発明は上述の実施の形態に限定されるものではない。例えば、ストレージ装置は、ネットワーク上の装置に限定されず、例えば、ストレージ装置１１がＵＳＢメモリなどの可搬型記録媒体であってもよい。その場合、読込み装置１２−ｎや読取装置１３−ｍは、自らに接続されたストレージ装置１１に対して各処理を行う。
【０１６６】
また、ステップＳ６８の処理の代わりに、読取データ生成部１３４ｇ−ｍが、ステップＳ６０の処理で得られたオブジェクトデータOB(1)が含む差分データD(1)と、ステップＳ６４の処理で処理済みデータPD(j-1)(j∈{2,...,N})から一意に定まるものであると判定された履歴データH(j-1)を含むオブジェクトデータOB(j)が含む差分データD(j)と、からなる集合に属する要素（差分データ）の一部を入力とし、それらを用いて読取データDATAを生成してもよい。また、「プライバシーポリシーPRP(n)」や「受け入れポリシーPEP(m)」による制御を実施しない構成でもよい。
【０１６７】
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【０１６８】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【０１６９】
この処理内容を記述したプログラムは、コンピュータで読取可能な記録媒体に記録しておくことができる。コンピュータで読取可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【０１７０】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０１７１】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読取、読取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読取、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０１７２】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【０１７３】
１  データ編集システム
１１  ストレージ装置
１２−ｎ  書込み装置
１３−ｍ  読取装置
【図１】
2011087150.tif 000016
【図２】
2011087150.tif 000017
【図３】
2011087150.tif 000018
【図４】
2011087150.tif 000019
【図５】
2011087150.tif 000020
【図６】
2011087150.tif 000021
【図７】
2011087150.tif 000022
【図８】
2011087150.tif 000023
【図９】
2011087150.tif 000024
【図１０】
2011087150.tif 000025
【図１１】
2011087150.tif 000026
【図１２】
2011087150.tif 000027