(57)【要約】      （修正有）【課題】ディジタルコンテンツのユーザの役割に応じた閲覧箇所と編集箇所の制御を実現するためのコンテンツ保護技術を提供する。【解決手段】コンテンツを複数の部分コンテンツに分割し、それぞれの部分コンテンツに対して、閲覧制御用秘密鍵を用いて部分コンテンツを暗号化する。また、編集用制御秘密情報と部分コンテンツ検証鍵を生成し、部分コンテンツに対する特徴値を生成する。閲覧、編集可能な部分コンテンツに対応する閲覧制御用秘密鍵と編集制御用秘密鍵とを、ユーザの公開鍵を用いて暗号化処理を行い鍵暗号化データを生成、鍵暗号化データ、暗号化部分データ、部分コンテンツ検証鍵から暗号化コンテンツを生成する。【選択図】図５
2010050760.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツ保護装置であって、
コンテンツを複数の部分コンテンツに分割し、
それぞれの部分コンテンツに対して、編集制御用秘密鍵と、部分コンテンツ検証鍵と、を生成する処理と、
各々の前記部分コンテンツの特徴値を生成する処理と、
アクセス制御情報を用いて、権限ごとに編集可能な前記部分コンテンツをひとつ以上割り当て、前記権限ごとに割り当てられた、公開鍵暗号技術の公開鍵を用いて、前記権限ごとに割り当てられた編集可能な部分コンテンツに対して生成された前記編集制御用秘密鍵を連結したデータを暗号化し、第一の鍵暗号化データを生成する処理と、
前記コンテンツの完全性保証用電子署名の生成を行う処理と、
前記コンテンツと、前記アクセス制御情報と、前記部分コンテンツ検証鍵と、前記特徴値と、前記第一の鍵暗号化データと、を含む第一の暗号化コンテンツを生成する処理と、を行う
ことを特徴とするコンテンツ保護装置。
【請求項２】
請求項１に記載のコンテンツ保護装置であって、
前記部分コンテンツそれぞれに対する閲覧制御用秘密鍵として、共通鍵暗号技術における秘密鍵を生成する処理と、
前記生成された閲覧制御用秘密鍵を用いて、対応する前記部分コンテンツを暗号化し、暗号化部分コンテンツを生成する処理と、
前記アクセス制御情報を用いて、権限ごとに閲覧可能な前記部分コンテンツをひとつ以上割り当て、前記権限ごとに割り当てられた閲覧可能な部分コンテンツに対して生成された前記閲覧制御用秘密鍵を、前記編集制御用秘密鍵を連結した前記データにさらに連結し、前記連結したデータを、前記公開鍵を用いて暗号化し、第二の鍵暗号化データを生成する処理と、
前記暗号化部分コンテンツと、前記部分コンテンツ検証鍵と、前記特徴値と、前記第二の鍵暗号化データと、を含む第二の暗号化コンテンツを生成する処理と、を行う
ことを特徴とするコンテンツ保護装置。
【請求項３】
請求項１に記載のコンテンツ保護装置であって、
前記編集制御用秘密鍵と前記部分コンテンツ検証鍵とは、電子署名技術における一対の署名鍵と検証鍵であり、
前記部分コンテンツの特徴値とは、前記署名鍵を用いて、前記部分コンテンツから生成された電子署名値であり、
前記完全性保証用電子署名とは、電子署名技術における署名鍵を用いて、前記アクセス制御情報と部分コンテンツ検証鍵と前記第一の鍵暗号化データとを連結したデータから生成した電子署名値である
ことを特徴とするコンテンツ保護装置。
【請求項４】
請求項３に記載のコンテンツ保護装置であって、
前記部分コンテンツごとに生成された特徴値は有限群の元であって、
前記部分コンテンツの特徴値を生成する処理は、
部分コンテンツごとに生成された特徴値を掛け合わせることによって、特徴値をひとつにまとめる処理を含む
ことを特徴とするコンテンツ保護装置。
【請求項５】
請求項１に記載のコンテンツ保護装置であって、
前記編集制御用秘密鍵と前記部分コンテンツ検証鍵とは、カメレオンハッシュにおける一対の公開鍵と秘密鍵であり、
前記部分コンテンツの特徴値とはカメレオンハッシュのハッシュ値であり、
前記完全性保証用電子署名とは、電子署名技術における一対の署名鍵、検証鍵のうち、署名鍵を用いて、前記アクセス制御情報と部分コンテンツ検証鍵と鍵暗号化データと前記特徴値とを連結したデータに対して生成した電子署名値であり、
前記第一の暗号化コンテンツは、コンテンツと、前記アクセス制御情報と、前記部分コンテンツ検証鍵と、前記特徴値と、前記第一の鍵暗号化データと、前記部分コンテンツに割り当てられた乱数と、を含む
ことを特徴とするコンテンツ保護装置。
【請求項６】
請求項１に記載の暗号化コンテンツの閲覧に利用するコンテンツ利用装置であって、
前記完全性保証用電子署名を用いて暗号化コンテンツの検証を行う処理と、
前記部分コンテンツ検証鍵を用いて、部分コンテンツの検証を行う処理と、を行う
ことを特徴とするコンテンツ利用装置。
【請求項７】
請求項２に記載の暗号化コンテンツの閲覧に利用するコンテンツ利用装置であって、
前記完全性保証用電子署名を用いて暗号化コンテンツの検証を行う処理と、
前記部分コンテンツ検証鍵を用いて、部分コンテンツの検証を行う処理と、
前記権限に対して割り当てられたひとつ以上の秘密鍵を用いて、前記暗号化された鍵暗号化データを復号する処理と、
前記復号結果から得られる閲覧制御用秘密鍵を用いて、前記暗号化部分コンテンツの復号を行い、復号された部分コンテンツから復号コンテンツを生成する処理と、を行う
ことを特徴とするコンテンツ利用装置。
【請求項８】
請求項６に記載の暗号化コンテンツの閲覧に利用するコンテンツ利用装置であって、
前記完全性保証用電子署名を用いて暗号化コンテンツを検証する処理として、
前記暗号化コンテンツに含まれる電子署名技術における検証鍵と完全性保証用電子署名を用いて、前記前記アクセス制御情報と部分コンテンツ検証鍵と鍵暗号化データとを連結したデータを検証する処理を含み、
前記部分コンテンツ検証鍵を用いて、部分コンテンツの検証を行う処理として、前記部分コンテンツ検証鍵と特徴値とを用いて電子署名技術における検証処理を用いて前記部分コンテンツの検証を行う処理を含む
ことを特徴とするコンテンツ利用装置。
【請求項９】
請求項６に記載の暗号化コンテンツの閲覧に利用するコンテンツ利用装置であって、
前記完全性保証用電子署名を用いて暗号化コンテンツを検証する処理として、
前記暗号化コンテンツに含まれる電子署名技術における検証鍵と完全性保証用電子署名を用いて、前記アクセス制御情報と部分コンテンツ検証鍵と鍵暗号化データと特徴値とを連結したデータを検証する処理を含み、
前記部分コンテンツ検証鍵を用いて、部分コンテンツの検証を行う処理として、前記部分コンテンツ検証鍵を用いて部分コンテンツのカメレオンハッシュによるハッシュ値の生成を行い、前記特徴値と一致するかを検証する処理を含む
ことを特徴とするコンテンツ利用装置。
【請求項１０】
請求項６に記載の暗号化コンテンツを編集するコンテンツ利用装置であって、
編集後部分コンテンツと編集制御用秘密鍵を用いて編集後特徴値の生成を行う処理と、
暗号化コンテンツから、編集位置指定情報で指定された部分コンテンツと特徴値とを編集後部分コンテンツと編集後特徴値と入れ替える処理と、を行う
ことを特徴とするコンテンツ利用装置。
【請求項１１】
請求項６に記載の暗号化コンテンツを編集するコンテンツ利用装置であって、
編集後部分コンテンツから、編集制御用秘密鍵を用いて編集後特徴値の生成を行う処理と、
編集位置指定情報で指定された部分コンテンツを入れ替え、さらにひとつのまとめられた特徴値を前記編集された部分コンテンツの編集前の特徴値の逆元を掛け、さらに編集後特徴値を掛けた結果に入れ替える処理と、を行う
ことを特徴とするコンテンツ利用装置。
【請求項１２】
請求項６に記載の暗号化コンテンツを編集するコンテンツ利用装置であって、
編集位置指定情報で指定された部分コンテンツと、当該部分コンテンツに割り当てられた乱数と、編集後部分コンテンツと、編集制御用秘密鍵とから、カメレオンハッシュの更新処理を用いて、編集後乱数の生成を行う処理と、
暗号化コンテンツから、編集位置指定情報で指定された部分コンテンツと乱数とを編集後部分コンテンツと編集後乱数とを入れ替える処理と、を行う
ことを特徴とするコンテンツ利用装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディジタルコンテンツの暗号化、復号方法にかかわり、ディジタルコンテンツの部分的な開示、編集の制御を可能とするための技術である。
【背景技術】
【０００２】
近年、情報通信機器の発展によって、従来紙で行われていた業務処理が電子化されるようになってきている。これに伴い、従来紙で行われていた書類の申請・承認などの手続き（業務フロー）も、ネットワークを利用して電子的に行われるようになってきている。このようなネットワークを通してやり取りされるディジタルコンテンツには、例えば個人情報や営業機密など、そのディジタルコンテンツを閲覧するユーザによっては開示が制限されるべき情報も含まれている。
【０００３】
また、例えば、上述の業務フローを電子化する場合、業務フロー内でやり取りされる電子化された書類には、担当者によるコメントの追記や申請情報の修正など、ディジタルコンテンツを利用するユーザに応じて、編集箇所を制限することが望まれる。或いは、企画書や仕様書、提案書、或いは、契約書などの作成においては、各担当者が必要部分のみ記入することが望まれる。
【０００４】
ここでコンテンツとは、申請書や申込書、会議の議事録、仕様書、契約書などに記載された文章、プログラムのソースコードや実行コード、音声、映像などの記録、或いはこれらの2つ以上を任意に組み合わせた情報のことであり、特にこれらがディジタルデータとして表現されている場合、ディジタルコンテンツと呼ぶ。なお、以下の説明においては、ディジタルコンテンツを単にコンテンツという。
【０００５】
このようなコンテンツを利用するユーザに応じた閲覧箇所や編集箇所の制限は、上記の業務フローの例にとどまらず、例えば、プロジェクト内での共同の仕様書の作成、動画配信コンテンツにおける広告情報の挿入や制限情報の非開示、電子カルテにおける診察結果の入力や閲覧など、様々な場面で必要となる。
【０００６】
従来、ユーザの役割に応じてコンテンツの閲覧や編集を制御する場合には、コンテンツをデータベースで一元的に管理し、データベースへのアクセスを制御することによって、権限のないユーザに情報を閲覧や編集をさせないようにする方法がとられている。
【０００７】
また、データベースのアクセス制御ではなく、暗号技術を利用することにより、秘密情報を持ったユーザにのみ、コンテンツ内の特定個所を編集可能とする方法が知られている（非特許文献1）。非特許文献1が開示する方法では、コンテンツを複数の部分コンテンツに分割し、ブロックごとにカメレオンハッシュと呼ばれる特殊なハッシュ関数を利用することによってハッシュ値を算出し、このハッシュ値を連結したデータに対して電子署名を生成する。
【０００８】
一般的なハッシュ関数（本明細書でいうハッシュ関数は、暗号学的に安全なハッシュ関数、すなわち、一方向性と衝突困難性を持つハッシュ関数を指す）は、衝突困難性と呼ばれる性質を持つため、同一のハッシュ値を出力する異なる複数の入力を見つけることは困難であるが、カメレオンハッシュでは、秘密情報が与えられた場合に限り、ある入力に対するハッシュ値と同一のハッシュ値を持つ異なる入力（第二原像と呼ぶ）を容易に生成することが可能なハッシュ関数である。
【０００９】
秘密情報を持たない一般のユーザがコンテンツを改ざんした場合には、ハッシュ値が変化することによって電子署名の検証に失敗するため、コンテンツの改ざんを検出することができるが、秘密情報を持ったユーザであれば、カメレオンハッシュの性質から、部分コンテンツのハッシュ値を変化させることなく、部分コンテンツの改変が可能であるため、電子署名の検証に成功するようにコンテンツの部分的な改変が可能である。そのため、この秘密情報を予めユーザに配付しておくことで、ユーザに応じた編集箇所の制御を実現する。
【００１０】
また、暗号技術を利用して、ユーザに応じた開示制御を行う方法としては、特許文献１が知られている。特許文献１では、コンテンツを複数の部分コンテンツに分割した後、部分コンテンツをランダムに生成した共通鍵暗号技術における秘密鍵を用いて暗号化し、前記部分コンテンツを暗号化する際に生成した秘密鍵を、閲覧を許可されたユーザ固有の、あるいは、権限を有するユーザが共有して所持する、公開鍵暗号技術における公開鍵を用いて暗号化する。その結果、対応する秘密鍵で復号した場合に、部分コンテンツを復号するための秘密鍵を得ることができるようになり、これによってユーザに応じたコンテンツの閲覧箇所の制御を実現する。
【００１１】
【非特許文献１】Giuseppe Ateniese，Daniel H． Chou， Breno de Medeiros and Gene Tsudik、”Sanitizable Signature”、Computer Security−ESORICS 2005，Lecture in Computer Sience、Vol．3679（LNCS．3679）、pp．159−177、2005．
【特許文献１】特開2007-251921
【発明の開示】
【発明が解決しようとする課題】
【００１２】
前述のとおり、従来、コンテンツを利用するユーザに応じて、閲覧箇所や編集箇所を制御する方法として、コンテンツをデータベースで一元的に管理し、データベースへのアクセスを制御することによって、権限のないユーザに情報を閲覧・編集させないようにする方法が知られている。しかしながら、このような方法では、ひとたびコンテンツがシステムの管理下を離れると、ユーザに応じたアクセス制御を行うことができなくなり、ユーザに応じて閲覧箇所や編集箇所を制御することができなくなる。
【００１３】
また、非特許文献１には、部分コンテンツの編集箇所を制御する方法は述べられているが、コンテンツ内の同一領域を複数のユーザが編集する場合については述べられていない。さらに、非特許文献１では、ユーザに応じたコンテンツの部分開示については述べられていない。
【００１４】
閲覧制御を可能とする方法としては特許文献１が知られているが、特許文献１は、ユーザの権限に応じた編集箇所の制御については述べられていない。また、本発明が対象とする課題は、特許文献１と異なり、一つの部分コンテンツは、アクセス制御情報として、それぞれのユーザ（あるいは、ある権限を有するユーザ）に対し、（閲覧禁止、編集禁止）、（閲覧可、編集禁止）、（閲覧可、編集可）のいずれかの状態を保有しなければならないため、暗号化された後の暗号化コンテンツで管理すべき情報が異なる。
【課題を解決するための手段】
【００１５】
本発明では、暗号技術を用いて、コンテンツを利用するユーザに応じ、コンテンツ内の編集箇所の制御を可能にし、かつ、コンテンツ内の同一領域に対し、複数のユーザが編集することを可能とするための技術を提供する。
【００１６】
さらに、本発明では、編集箇所の制御だけでなく、ユーザの権限に応じた閲覧箇所の制御を可能とする技術を提供する。すなわち、本発明では、ユーザの権限に応じて、コンテンツの閲覧可能箇所と編集可能箇所の制御の両方を可能とする技術を提供する。
【００１７】
本発明のより具体的な態様は、コンテンツ保護装置であって、コンテンツを複数の部分コンテンツに分割し、部分コンテンツごとに共通鍵暗号技術における秘密鍵である閲覧制御用秘密鍵、および、電子署名技術における署名鍵、検証鍵である編集制御用秘密鍵、部分コンテンツ検証鍵の生成を行い、さらに前記生成された閲覧制御用秘密鍵を用いて前記部分コンテンツを暗号化し暗号化部分コンテンツを生成し、前記部分コンテンツに対し、編集制御用秘密鍵を用いて電子署名値の計算を行うことによって、特徴値の生成を行い、さらに権限に対して割り当てられた公開鍵暗号技術の公開鍵を用いて、前記閲覧制御用秘密鍵と編集制御用秘密鍵を当該公開鍵に対応する権限に対応するアクセス制御情報に基づき暗号化し鍵暗号化データを生成し、さらにコンテンツ全体に対して、電子署名技術における署名鍵、検証鍵の生成を行い、前記署名鍵から完全性保証用電子署名の生成を行い、前記鍵暗号化データ、アクセス制御情報、暗号化部分コンテンツ、特徴値、完全性保証用電子署名とから暗号化コンテンツの生成を行うことを特徴とする。
【００１８】
さらに、上記様態に基づき生成されたコンテンツの利用装置において、コンテンツを閲覧する場合には、前記公開鍵暗号技術の公開鍵に対応する秘密鍵を用い、前記鍵暗号化データの復号を行い、復号の結果得られた閲覧制御用秘密鍵を用いて部分コンテンツを復号することを特徴とする。
【００１９】
さらに、上記様態において、部分コンテンツを編集する場合には、前記鍵暗号化データの復号の結果得られる編集制御用秘密鍵を用いて、編集後部分コンテンツの電子署名値を計算することによって編集後部分コンテンツの特徴値の生成を行い、編集後部分コンテンツから閲覧制御用秘密鍵を用いて編集後部分暗号化コンテンツの生成を行い、さらに前記編集後部分コンテンツの特徴値と編集後部分暗号化コンテンツを、元の暗号化部分コンテンツと特徴値と入れ替えることを特徴とする。
【００２０】
さらに、他の態様によれば、前記部分コンテンツの特徴値は有限群の元であって、前記部分コンテンツの特徴値を掛け合わせることによってひとまとめにした特徴値を計算する手段を含み、部分コンテンツを編集する場合には、閲覧制御用秘密鍵を用いて、編集後部分コンテンツから編集後部分暗号化コンテンツの生成を行い、前記鍵暗号化データの復号の結果得られる編集制御用秘密鍵を用いて、編集後部分コンテンツの特徴値の生成を行い、前記ひとまとめにされた特徴値から前記部分コンテンツの特徴値の逆元を乗じ、さらに前記編集後部分コンテンツの特徴値を乗じることによって、ひとまとめにされた編集後特徴値を生成し、前記暗号化部分コンテンツと編集後暗号化部分コンテンツとを入れ替え、さらに前記ひとまとめにされた特徴値とひとまとめにされた編集後特徴値とを入れ替えることを特徴とする。
【００２１】
本発明の他の一態様においては、コンテンツを複数の部分コンテンツに分割し、部分コンテンツごとに共通鍵暗号技術における秘密鍵である閲覧制御用秘密鍵、および、カメレオンハッシュの秘密鍵、公開鍵である編集制御用秘密鍵、部分コンテンツ検証鍵の生成を行い、さらに前記生成された閲覧制御用秘密鍵を用いて前記部分コンテンツを暗号化し暗号化部分コンテンツを生成し、前記部分コンテンツに対し、乱数の生成、及び、生成された乱数と編集制御用秘密鍵を用いてカメレオンハッシュによるハッシュ値の計算を行うことによって、特徴値の生成を行い、さらに権限に対して割り当てられた公開鍵暗号技術の公開鍵を用いて、前記閲覧制御用秘密鍵と編集制御用秘密鍵を当該公開鍵に対応する権限に対応するアクセス制御情報に基づき暗号化した鍵暗号化データを生成し、さらにコンテンツ全体に対して、電子署名技術における署名鍵、検証鍵の生成を行い、前記署名鍵から完全性保証用電子署名の生成を行い、前記鍵暗号化データ、アクセス制御情報、暗号化部分コンテンツ、乱数、特徴値、完全性保証用電子署名とから暗号化コンテンツの生成を行うことを特徴とする。
【００２２】
さらに、上記様態において、部分コンテンツを編集する場合には、鍵暗号化データを前記公開鍵暗号技術の公開鍵に対応した秘密鍵を用いて復号した結果得られる編集制御用秘密鍵と部分コンテンツと乱数と編集後部分コンテンツとから、カメレオンハッシュの更新処理を用いて編集後乱数を生成し、さらに閲覧制御用秘密鍵を用いて編集後部分コンテンツから編集後暗号化部分コンテンツの生成を行い、さらに前記暗号化部分コンテンツと編集後暗号化部分コンテンツとを入れ替え、乱数と編集後乱数とを入れ替えることを特徴とする。
【００２３】
上記ディジタルコンテンツの保護装置において、編集制御用秘密鍵により、ディジタルコンテンツの各部分コンテンツの特徴値の生成が行われる。
【００２４】
さらに編集制御用秘密鍵はアクセス制御情報に基づき、権限ごとに割り当てられた公開鍵暗号技術の公開鍵によって暗号化される。
【００２５】
部分コンテンツは、特徴値と編集用秘密鍵と対になる部分コンテンツ検証鍵を用いて改ざんの有無を検出可能であり、編集用秘密鍵を知らない限り、検証に成功する特徴値を生成することは困難であるが、編集用秘密鍵を知っていれば検証に成功する特徴値を容易に計算できる。
【００２６】
編集制御用秘密鍵は、アクセス制御情報に従い、部分コンテンツに対して編集権限を与えられた公開鍵によって暗号化されるので、編集権限を与えられた、対応する秘密鍵で暗号化コンテンツ内の鍵暗号化データを復号した場合に、その復号結果に部分コンテンツの編集制御用秘密鍵は含まれ、編集権限を与えられていない秘密鍵で復号した場合には、編集制御用秘密鍵を得ることが困難になる。これによって、部分コンテンツに不正な改ざんが行われた場合（不正に部分コンテンツを入れ替えた場合など）には、改ざんを検出することができ、部分コンテンツの編集可否の制御も可能となる。
【００２７】
また、本発明の一態様において、部分コンテンツは閲覧制御用秘密鍵によって暗号化される。閲覧制御用秘密鍵も編集制御用秘密鍵と同様に、アクセス制御情報に基づき部分コンテンツに対して閲覧権限を与えられた公開鍵によって暗号化されるので、閲覧制御用秘密鍵を知らない限り、暗号化された部分コンテンツ（暗号化部分コンテンツ）を復号することは困難である。閲覧権限を与えられた秘密鍵によって暗号化コンテンツ内の鍵暗号化データを復号した場合に、その復号結果に当該部分コンテンツの閲覧制御用秘密鍵が含まれ、それ以外の場合には含まれない。以上より、部分コンテンツの閲覧可否の制御が可能となる。
【００２８】
コンテンツを利用するユーザに対して、その権限に応じた秘密鍵を予め配布しておくことによって、コンテンツを利用するユーザに応じ、コンテンツ内の任意の箇所に対する閲覧可否と編集可否の制御を実現することができる。
【発明の効果】
【００２９】
本発明により、コンテンツを利用するユーザに応じて、コンテンツ内の任意の箇所に対する閲覧可否や編集可否の制御を行うこと、が可能になる。
【発明を実施するための最良の形態】
【００３０】
本発明の実施形態を説明する。
【実施例１】
【００３１】
図1は、第一の実施例におけるコンテンツの流通を例示した図である。図示したように、本システムでは、コンテンツ120を暗号化するコンテンツ保護装置102と暗号化コンテンツ121を受信するコンテンツ利用装置A103、コンテンツ利用装置B104、コンテンツ利用装置C105がネットワーク100を介して、送受信を行う。なお、図では暗号化コンテンツ121は、ネットワーク100を介して送受信が行われているが、これと異なっていてもよい。例えば、暗号化コンテンツ121を、USBメモリなどの外部記憶媒体に記録して、オフラインでコンテンツ利用装置に与えてもよい。また、図では、コンテンツ利用装置A103、コンテンツ利用装置B104、コンテンツ利用装置C105のコンテンツ利用装置で構成された図を示したが、コンテンツ利用装置は必ずしも三台である必要はない。さらに、図ではコンテンツ保護装置102には公開鍵A111、公開鍵B112、公開鍵C113が、また、コンテンツ利用装置A103、コンテンツ利用装置B104、コンテンツ利用装置C105には、それぞれ秘密鍵A114、秘密鍵B115、秘密鍵C116が格納されているが、必ずしもこのとおりでなくともよく、コンテンツ保護装置102に3つ以上の公開鍵を格納してもよい。なお、公開鍵、秘密鍵は、公開鍵暗号技術における公開鍵、秘密鍵である。また、秘密鍵は、セキュリティの観点から、ICカードなどの耐タンパ性を有する媒体を用いて格納し、復号時に復号装置に具備された読取装置にICカードを供給することによって、復号処理が行えるようにすることが望ましい。
【００３２】
以下では、コンテンツ利用装置A103、コンテンツ利用装置B104、コンテンツ利用装置C105、秘密鍵A114、秘密鍵B115、秘密鍵C116、及び、公開鍵A111、公開鍵B112、公開鍵C113、を区別する必要性がない場合、これらを単にコンテンツ利用装置、秘密鍵、公開鍵と呼ぶ。なお、コンテンツ利用装置とコンテンツ保護装置は、必ずしも別々の装置である必要はなく、同一の装置であってもよい。
【００３３】
鍵管理装置101は、権限と秘密鍵、公開鍵の対応付けを行い、さらにユーザに権限に応じた公開鍵の配付を行うとともに、秘密鍵のコンテンツ保護装置102への公開、配付を行う。なお、公開鍵のコンテンツ保護装置102への公開は、例えば、Webサーバなどを用いて、各ユーザやグループなどの情報、及び、対応する公開鍵の情報がコンテンツ保護装置102からアクセスできるようにし、コンテンツ保護装置102は暗号時、或いは、それ以前に暗号化に必要な公開鍵を上記Webサーバから取得できるようにすればよい。また、このとき、Webサーバから取得した公開鍵が、鍵管理装置101で管理されているものであることを確認するために、公開鍵に対して公開鍵証明書を発行することが望ましい。
【００３４】
なお、前述のとおり、秘密鍵については、セキュリティ上の観点からは、ICカードなどの耐タンパ性を有する記憶媒体に格納しておくことが望ましい。また、上記のようにWebサーバを用いて公開鍵を公開する場合でも、Webサーバと鍵管理装置101を別々に実装するなど、秘密鍵が直接ネットワーク100から閲覧できないようにすることが望ましい。
【００３５】
図2は、コンテンツ保護装置102の構成の概略を示した図である。暗号化装置102は、CPU207と、CPU207の作業領域として機能するRAM208と、HDなどの外部記憶装置209と、当該電子計算機200が利用可能な、FD、CD−ROMなどの着脱可能な外部記憶媒体201からデータを取り込む読取装置205と、ディスプレイなどの出力装置205と、マウスやキーボードなどの入力装置203と、ネットワークを介して他の装置と通信を行う通信装置207と、上記の各構成要素間のデータ通信をつかさどるインターフェイス206と、を含んで構成される、一般的な構成を有する電子計算機200である。
【００３６】
また、コンテンツ保護装置102の外部記憶装置209には、コンテンツ作成・読込プログラム223（以下プログラムを単にPGと記す）、暗号化PG222、コンテンツ送信PG221が格納される。これらのプログラムは、CPU207において実行され、それぞれコンテンツ作成・読込処理部225、暗号化処理部226、及び、コンテンツ送信処理部227という処理部が、当該装置上に具現化される。また、コンテンツ保護装置102の外部記憶装置209には、暗号化対象となるコンテンツ120、及び、暗号化の結果えられる暗号化コンテンツ121、暗号化時に利用する公開鍵210が格納される。なお、公開鍵210は、必要に応じてひとつ以上、外部記憶装置209に格納される。
【００３７】
コンテンツ利用装置もコンテンツ保護装置102と同様の構成を持つ。ただし、コンテンツ利用装置の外部記憶装置209には、暗号化コンテンツ106、秘密鍵、及び、コンテンツ受信PG、コンテンツ送信PG221、復号PG、復号コンテンツ表示PGが格納される。なお、コンテンツ保護装置102と同様に、コンテンツ受信PG、コンテンツ送信PG、復号PGは、CPU207により実行され、それぞれコンテンツ受信処理部、コンテンツ送信処理部、復号処理部、復号コンテンツ表示処理部が、当該装置上に具現化される。
【００３８】
コンテンツ利用装置もコンテンツ保護装置102と同様の構成をもつ。ただし、コンテンツ利用装置の外部記憶装置209には、コンテンツ受信PG、暗号化コンテンツ121、コンテンツ送信PG、復号PG、編集PG、秘密鍵が格納され、コンテンツ送信PG、コンテンツ受信PG、復号PG、編集PGは、CPUによって実行され、それぞれ、コンテンツ送信処理部、コンテンツ受信処理部、復号処理部、編集処理部として、当該装置上に具現化される。
【００３９】
なお、前述のとおり、秘密鍵は、セキュリティ上の理由から、ICカードなどの耐タンパ性を有するデバイス内に格納しておくことが望ましい。秘密鍵をICカードなどの耐タンパ性を有するデバイス内に格納しておく場合、コンテンツ利用装置内の記憶装置209内の秘密鍵は不要である。代わりに、ICカード処理PGが当該装置の外部記憶装置209内に格納され、秘密鍵はICカードなどのデバイスを用いて、読取装置203などを通して、供給される。
【００４０】
鍵管理装置101もコンテンツ保護装置102と同様の構成を持つ。ただし、鍵管理装置101の外部記憶装置209には、鍵管理PG、公開鍵・秘密鍵生成PG、公開鍵配付PG、秘密鍵配付PG、公開鍵、秘密鍵が格納される。なお、鍵管理PG、公開鍵・秘密鍵生成PG、公開鍵配付PG、秘密鍵配付PGは、コンテンツ保護装置102と同様に、CPU207によって実行され、鍵管理処理部、公開鍵・秘密鍵生成処理部、公開鍵配付処理、秘密鍵配付処理部が、当該装置上に具現化される。
【００４１】
これらのプログラムは、あらかじめ、上記電子計算機200内のRAM208または外部記憶装置209に格納されていても良いし、必要なときに、上記外部記憶媒体201から、または通信媒体（ネットワーク100、またはネットワーク100を伝搬する搬送波やデジタル信号など）を介して他の装置から、導入されてもよい。また、プログラムをコード、または、モジュール、ということがある。
【００４２】
なお、各PGの実行により具現化される処理部の動作説明として、説明の便宜上、各PGを処理主体として説明することがある。
【００４３】
なお、鍵管理装置101において、秘密鍵は必ずしも鍵管理装置101の外部記憶装置209に格納しておく必要はない。例えば、秘密鍵を、耐タンパ性を有するデバイス内で生成し、鍵管理装置101は、その参照を管理するようにしてもよい。このようにすることによって、鍵管理装置101の管理者であっても、直接秘密鍵を操作することが困難になり、セキュリティ上の観点からは望ましい。
【００４４】
図3に本実施例におけるコンテンツ120のデータフローの概略を示す。なお、図ではコンテンツ利用装置A103、コンテンツ利用装置B104を用いて説明を行っているが、コンテンツ保護装置102、又は、コンテンツ利用装置と暗号化コンテンツ121の送受信を行うコンテンツ利用装置は、上記に限らなくてもよい。
301：開始
302：コンテンツ保護装置102内のコンテンツ作成・読込処理部225が、コンテンツ120の作成、または、読込みを行う。
303：暗号化装置102内の暗号化処理部226が、コンテンツ120の暗号化を行い、暗号化コンテンツ121を作成する。
304：コンテンツ保護装置102内のコンテンツ送信処理部227が、暗号化コンテンツ121をコンテンツ利用装置A103に送信する。
305：コンテンツ利用装置A103内のコンテンツ受信処理部が、暗号化コンテンツ121を受信する。
306：コンテンツ利用装置A103内の復号処理部が、暗号化コンテンツ121を復号し、復号コンテンツ表示イメージ122を生成し、出力装置204を用いて出力する。さらに、コンテンツ利用装置A103の編集処理部が、暗号化コンテンツ121の更新を行う。
307：コンテンツ利用装置A103内のコンテンツ送信処理部が、暗号化コンテンツ121をコンテンツ利用装置B104に送信する。
308：コンテンツ利用装置B104内のコンテンツ受信処理部が、暗号化コンテンツ121を受信する。
【００４５】
ステップ306の復号処理部による暗号化コンテンツ121の復号において、復号されたコンテンツ（以下、復号コンテンツと呼ぶ）と復号コンテンツ表示イメージ122から、復号コンテンツの開示された部分の情報が漏洩することを厳密に防ぐためには、コンテンツ利用装置内の外部記憶装置209内に格納しないこと、格納した場合でも閲覧、編集が終了した後には直ちに復号コンテンツを削除すること、或いは、表示イメージ上からの復号領域のコピー（内容抽出）や印刷処理を禁止することが望ましい。ただし、コピーや印刷、保存（復号コンテンツの外部記憶装置209への格納）処理は、アプリケーションによっては必要となる場合もあるので、本実施例としてこれらを禁止するものではない。
【００４６】
なお、図3のステップ307では、コンテンツ利用装置A103内のコンテンツ送信処理部が、暗号化コンテンツ121を他のコンテンツ利用装置B104に送信しているが、これと異なっていてもよい。例えば、複数のコンテンツ利用装置に同時に暗号化コンテンツ121を送付したり、或いは、暗号化コンテンツ121を、コンテンツ送信処理部を用いて送信したりするのではなく、外部記憶媒体201に格納し、コンテンツ利用装置B104に送付してもよい。また、ステップ307において、他のコンテンツ利用装置に送信する必要がなければ、コンテンツ利用装置A103内の外部記憶装置209内で、暗号化コンテンツ121、或いは、復号コンテンツを保管して処理を終了する、コンテンツ保管用のデータベースサーバに送信し、暗号化コンテンツ121は削除するなどしてもよい。
【００４７】
図3におけるステップ306において、コンテンツ利用装置103は、復号コンテンツの編集（暗号化コンテンツ121の更新）を行わなくてもよい。すなわち、ステップ306におけるコンテンツ利用装置103の処理は、コンテンツの閲覧のみでもよい。
【００４８】
図4は、ステップ303において、コンテンツ保護装置102の暗号化処理部226が行う暗号化コンテンツ生成の処理手順の概略を示している。なお、暗号化処理部226へは、コンテンツ120、暗号化に用いるひとつ以上の公開鍵、コンテンツ分割情報、および、アクセス制御情報を入力とする。
【００４９】
ここで、コンテンツ分割情報とは、コンテンツ121をひとつ以上の部分コンテンツm[1]．．．m[n]に分割するための情報であり、例えば、コンテンツ121を先頭からAバイト目からBバイト目まで、Bバイト目からCバイト目までというバイト単位で、あるいは、表データであればA行B列、画像データであれば座標情報、XMLデータであれば、Xpath式などの表現を用いて表現される。なお、コンテンツは、必ずしも一つのファイルである必要はなく、複数のファイルを含んで構成されていてもよい。この場合、コンテンツ区切り情報は、ファイル1、ファイル2、といったファイル単位、あるいは、いくつかのファイルをフォルダ単位でまとめておき、フォルダA内のファイルすべて、など、ファイル・フォルダ単位で分割する処理も含む。
【００５０】
以下では説明を簡単にするため、アクセス制御情報をAC＝（ac[1]，．．．，ac[u]）、暗号化に用いる公開鍵をpk[1]，．．．，pk[u]によってあらわす。なお、アクセス制御情報とは、コンテンツ121の部分コンテンツm[i]が秘密鍵sk[i]で復号した場合に、（閲覧禁止・編集禁止）、（閲覧可・編集禁止）、（閲覧可、編集可）のいずれの状態にあるかを示すための情報である。以上の情報は、プログラム上では、例えば、配列などを用いて実現すればよい。
400：開始
401：コンテンツを複数の部分コンテンツに分割する。
402：閲覧制御用秘密鍵、編集制御用秘密鍵を生成する。
403：閲覧制御用秘密鍵を用いて部分コンテンツを暗号化する。
404：編集制御用秘密鍵を用いて部分コンテンツの特徴値を生成する。
405：アクセス制御情報に従い、閲覧制御用秘密鍵、編集制御用秘密鍵を公開鍵を用いて暗号化する。
406：署名鍵、検証鍵を生成し、完全性保証用電子署名を生成する。
407：暗号化コンテンツを生成する。
408：終了
図5、6は以上の処理を模式的に表した図である。以下に、図4、5、6を用いて、上記の各ステップの詳細について説明する。
【００５１】
まず、ステップ401では、前述のコンテンツ分割情報をもとに、コンテンツ121をひとつ以上の部分コンテンツm[1]，．．．，m[n]に分割する。分割された部分コンテンツm[i]は、それぞれ個別に部分コンテンツ処理551に入力される（図5）。部分コンテンツ処理551では、まず、ステップ402の処理として、閲覧制御用秘密鍵k[i]508、編集制御用秘密鍵x[i]506、部分コンテンツ検証鍵ｖ[i]507（それぞれ、図6の鍵生成処理1 402a、鍵生成処理2 402bに対応）を生成する。次に、閲覧制御用秘密鍵k[i]を用いて部分コンテンツm[i]500を暗号化する（ステップ403）。さらに、編集制御用秘密鍵x[i]506を用いて特徴値s[i]505の生成を行う（ステップ404）。
【００５２】
ここで、閲覧制御用秘密鍵k[i]508とは、共通鍵暗号技術における秘密鍵であり、編集制御用秘密鍵x[i]506、部分コンテンツ検証鍵ｖ[i]507は、それぞれ、電子署名技術における電子署名生成用秘密鍵、電子署名検証用公開鍵である。また、前記ステップ403における暗号化とは、共通鍵暗号技術における暗号化処理であり、ステップ404における特徴値s[i]505の生成とは、電子署名技術における電子署名の生成処理である。
【００５３】
以上のステップ402、403、404をすべての部分コンテンツm[i]に対して、行い、次のステップ405の処理を行う。ステップ405では、暗号化処理部に入力されたアクセス制御情報ACを元に前記閲覧制御用秘密鍵k[i]508、編集制御用秘密鍵x[i]506を公開鍵pk[i]511を用いて以下のように暗号化する。
【００５４】
まず、アクセス制御情報ac[i]＝（w[1]，．．．，w[n]）を参照し、w[i]が（閲覧可、編集可）である場合には、閲覧制御用秘密鍵k[i]508、編集制御用秘密鍵x[i]506を、（閲覧可、編集禁止）である場合には閲覧制御用秘密鍵k[i]508を取得し、編集制御用秘密鍵x[i]を取得しない（w[i]が（閲覧禁止、編集禁止）である場合には、なにも取得しない）。上記の処理を、すべてのw[i]に対して行い、取得された閲覧制御用秘密鍵k[i]508、編集制御用秘密鍵x[i]506を連結し、公開鍵pk[i] 511で暗号化する。
【００５５】
以上の処理をすべての公開鍵pk[i] 511に対して行い、鍵暗号化データe[1]，．．．，e[u]を生成する。
【００５６】
次に、ステップ406において、電子署名技術における一対の署名鍵、検証鍵512を生成し、ステップ402bで生成した部分コンテンツ検証鍵ｖ[i]507、アクセス制御情報ac[i]、鍵暗号化データe[1]，．．．，e[u]、本ステップで生成した検証鍵を連結し、連結されたデータに対して、本ステップで生成した署名鍵を用いて完全性保証用電子署名σ510を生成する。
【００５７】
最後に、ステップ407において、アクセス制御情報AC502、鍵暗号化データe[1]，．．．，e[u]、部分暗号化データc[1]，．．．，c[n]、部分コンテンツ検証鍵v[1]，．．．，v[n]、特徴値s[1]，．．．，s[n]、電子署名σ510、検証鍵512を連結し、暗号化コンテンツを生成する。
【００５８】
以上の処理において、署名鍵、検証鍵512の生成をステップ406で行っているが、本署名鍵、検証鍵512はステップ406で生成しなくてもよい。たとえば、鍵管理装置101で、コンテンツ120に署名を付与するための署名鍵、検証鍵512を生成し、これをコンテンツ保護装置に格納して、完全性保証用電子署名σ510の生成に利用してもよい。この場合、鍵管理装置101内の外部記憶領域209には、公開鍵、秘密鍵のほか、署名鍵、検証鍵512を生成するための、署名鍵・検証鍵組生成PG、および、生成された署名鍵、検証鍵を外部記憶装置209を格納する。なお、署名鍵は、秘密鍵と同様に鍵管理装置101内で生成、記憶しなくてもよい。
【００５９】
さらに、上記の署名鍵、検証鍵512は鍵管理装置101以外で生成された電子署名の署名鍵、検証鍵512であってもよい。以上のような場合、検証鍵512については、署名鍵の所有者が明らかになるように、あるいは、検証時に検証鍵512を利用して、コンテンツを暗号化したユーザが特定できるように、公開鍵証明書が発行されていることが望ましい。また、このような場合には、検証鍵512の改ざんが困難となるため、暗号化コンテンツ１２１に検証鍵512自体を含まなくてもよい。
【００６０】
また、ステップ402において、部分コンテンツ検証鍵v[i] 507、編集制御用秘密鍵x[i] 506は、部分コンテンツm[i] 500ごとに別々に生成されるものであるが、生成に当たって共通化可能なパラメータを持つ電子署名アルゴリズム（例えばDSAなど）を用いる場合には、ステップ402の処理に当たって、はじめに共通化可能なパラメータを一つ生成し、これを個々の部分コンテンツm[i] 500に対する部分コンテンツ検証鍵v[i] 507、編集制御用秘密鍵x[i] 506の一部としてに用いてもよい。
【００６１】
なお、本実施例ではコンテンツ120の編集箇所と閲覧箇所の制御を両方を行う場合について説明したが、閲覧箇所の制御をおこなわなくてもよい。その場合には、ステップ402における閲覧制御用秘密鍵の生成、および、ステップ403における部分コンテンツの暗号化は不要である。また、アクセス制御情報ac[i]には、編集可、編集禁止の二つの状態のいずれかを格納し、w[j]が編集可の場合には、編集制御用秘密鍵を取得し、編集禁止の場合には取得せず、アクセス制御情報ac[i]に対して取得された編集制御用秘密鍵x[i]506を連結したデータに対して、公開鍵pk[i] 511を用いて暗号化すればよい。
【００６２】
さらに、上述の暗号化処理では、部分コンテンツm[i] 500に対して、特徴値s[i] 505の生成を行っているが、暗号化部分コンテンツc[i] 504に対して、特徴値s[i] 505の生成を行ってもよい。
【００６３】
暗号化処理部の出力として得られる暗号化コンテンツ121の構造については、図9、10にて後述する。
【００６４】
なお、以上の暗号化処理において、以降に述べる暗号化コンテンツ121の更新処理が行われた場合に、どの暗号化コンテンツ121から派生したものであるかがわかるようにするため、暗号化処理に先立ち、コンテンツごとに固有の識別子を振るようにしてもよい。
【００６５】
次に図7に、コンテンツ利用装置における暗号化コンテンツ121の復号処理部（ステップ306内）の処理の概要を示す。復号処理部は、秘密鍵と暗号化コンテンツ121を入力として受け取り、復号結果として、復号コンテンツ、あるいは、復号失敗のいずれかを出力する。
700：開始
701：暗号化コンテンツ121を分割する。
702：検証鍵、完全性保証用電子署名を用いて、暗号化コンテンツ121を検証する。
703：検証に成功した場合には、ステップ704へ。失敗した場合には、復号失敗を出力し、ステップ709へ。
704：秘密鍵を用いて、鍵暗号化データを復号する。
705：閲覧制御用秘密鍵を用いて暗号化部分コンテンツを復号する。
706：部分コンテンツ検証鍵、特徴値を用いて、部分コンテンツを検証する。
707：検証に成功した場合には、ステップ708へ。失敗した場合には、復号失敗を出力し、ステップ709へ。
708：復号結果から、復号コンテンツを生成する。
709：終了
以下に各ステップの詳細について示す。なお、以下では、復号に用いる秘密鍵をsk[i]と記す。
【００６６】
図4、5に示した通り、暗号化コンテンツ121は、アクセス制御情報AC502、鍵暗号化データe[1]，．．．，e[u]、部分暗号化データc[1]，．．．，c[n]、部分コンテンツ検証鍵v[1]，．．．，v[n]、特徴値s[1]，．．．，s[n]、電子署名σ510、検証鍵512を含んで構成されている。そこで、ステップ701において、与えられた暗号化コンテンツ121を上記アクセス制御情報AC502、鍵暗号化データe[1]，．．．，e[u]、部分暗号化データc[1]，．．．，c[n]、部分コンテンツ検証鍵v[1]，．．．，v[n]、特徴値s[1]，．．．，s[n]、電子署名σ510、検証鍵512に分割する。
【００６７】
次にステップ702において、ステップ701の結果得られた電子署名σ510、検証鍵512を用いて、部分コンテンツ検証鍵ｖ[1]，．．．，ｖ[n]、アクセス制御情報AC、鍵暗号化データe[1]，．．．，e[u]、検証鍵を連結し、連結されたデータの電子署名による検証を行う。
【００６８】
ステップ702において、検証に失敗した場合には、復号失敗としてステップ709へ、そうでなければ、次のステップ704に進み（ステップ703）、秘密鍵sk[i]を用いて、鍵暗号化データe[i] 503を復号する（ステップ704）。
【００６９】
次にステップ704から得られた結果から、閲覧制御用秘密鍵k[i]508を取得し、閲覧制御用秘密鍵k[i] 508を用いて、部分暗号化コンテンツc[i] 504を復号する（ステップ705）。
【００７０】
次に、ステップ704の結果得られた復号部分コンテンツを部分コンテンツ検証鍵v[i]507、特徴値s[i]505を用いて検証する（ステップ707）。
【００７１】
ステップ707において、検証に失敗した場合には、部分コンテンツm[i] 500が不正に改ざんされているため、復号失敗を出力し、処理を終了する（ステップ709）。そうでなければ、復号結果から復号コンテンツ708を生成し（ステップ708）、処理を終了する（ステップ709）。
【００７２】
なお、上記の処理において、例えばステップ704の秘密鍵sk[j]による鍵暗号化データe[i]503の復号時、あるいは、ステップ705における暗号化部分コンテンツの復号時に、復号失敗が出力される、あるいは、ステップ705の暗号化部分コンテンツc[i] 504の復号において、アクセス制御情報ac[i]で閲覧禁止の暗号化部分コンテンツc[i] 504が復号可能であった場合など、復号時に不具合が生じた場合には、復号失敗を出力して処理を終了することが望ましい。
【００７３】
以上の説明では、秘密鍵を一つ入力として与えた場合について述べたが、複数の秘密鍵を入力してもよい。この場合には、入力として与えられた秘密鍵に対して、上記の処理を繰り返し行えばよい。また、複数の秘密鍵で復号処理を行う場合に、復号失敗となる秘密鍵が一つ以上あった場合には、復号失敗を出力して処理を中止する、あるいは、予め復号失敗を許可する秘密鍵の数を定めておき、定められた数以上の復号失敗があった場合には、復号失敗を出力して処理を停止すればよい。
【００７４】
また、暗号化処理部において説明したとおり、部分コンテンツm[i] 500の特徴値s[i] 505は、暗号化部分コンテンツc[i] 504に対して生成してもよい。その場合、前記ステップ706における部分コンテンツの検証は、暗号化部分コンテンツc[i] 504に対して行う。また、この場合には、閲覧制御用秘密鍵k[i] 508が得られなかった暗号化部分コンテンツに対しても、同様に部分コンテンツ検証鍵、特徴値を用いて検証を行ってもよいし、ステップ706ではなく、ステップ704の処理に先立ち、前記検証を行ってもよい。
【００７５】
図8は、コンテンツ利用装置における、暗号化コンテンツ121の更新処理部の処理の概略を示している。更新処理部は、復号処理に対する入力のほか、暗号化コンテンツ121、編集箇所位置情報i、編集後部分コンテンツm’[i]を入力として受け取り、編集後暗号化コンテンツを出力する。
【００７６】
また、以下では更新処理に先立ち、前述した復号処理（図7）が復号失敗することなく終了しているものとして説明を行う。
801：編集後部分コンテンツ、編集制御用秘密鍵から編集後特徴値を生成
802：編集後部分コンテンツを閲覧制御用秘密鍵で暗号化
803：暗号化コンテンツを更新
804：終了
以下に、各ステップの詳細を説明する。
【００７７】
まず、ステップ704で得られた編集用秘密鍵x[i] 506を用いて、編集後部分コンテンツm’[i]に対する編集後特徴値s’[i]を生成する（ステップ801）。次に、編集後部分コンテンツm’[i]を閲覧制御用秘密鍵k[i] 508を用いて暗号化し、編集後部分暗号化コンテンツc’[i]を生成する（ステップ802）。最後に、得られた編集後部分暗号化コンテンツc’[i]、編集後特徴値s’[i]を、それぞれ、もとの部分暗号化コンテンツc[i] 504、特徴値s[i] 505と入れ替え、暗号化コンテンツの更新を行う（ステップ803）。
【００７８】
以上の処理においては、特徴値s[i] 505は、部分コンテンツm[i] 500に対して、編集制御用秘密鍵を用いて生成したものとして説明したが、暗号化処理部の説明で述べたとおり、暗号化部分コンテンツc[i] 505に対して生成した場合でも、上記と同様に処理できる。
【００７９】
なお、以上の処理では、編集を行う部分コンテンツm[i] 500を一つの場合について説明を行ったが、一つ以上の部分コンテンツm[i] 500を同時に、あるいは、連続して、更新処理を行ってもよい。
【００８０】
また、編集後暗号化コンテンツを再度更新する場合には、前記編集後暗号化コンテンツを暗号化コンテンツ121として、前記更新処理を行えばよい。
【００８１】
以上の処理において、入力された編集箇所位置情報によって指定された部分コンテンツm[i] 500が、アクセス制御情報ac[i]で編集を禁止された部分コンテンツである場合、あるいは、編集箇所位置情報に対応する編集制御用秘密鍵がステップ704で得られていない場合には、更新失敗を出力して処理を停止することが望ましい。
【００８２】
上記では、更新処理に先立ち、前述した復号処理（図7）が復号失敗することなく終了しているものとして説明を行ったが、復号処理は必ずしもすべてのステップを実行する必要はない。たとえば、鍵暗号化データe[i]503の復号（ステップ704）を行い、得られた編集制御用秘密鍵を用いて、ステップ705以降の処理をすることなく、更新処理を行うようにしてもよい。
【００８３】
また、例えば、一つ以上のコンテンツ利用装置から、同一の暗号化コンテンツ121を別々に更新した複数の暗号化コンテンツ121を受信した場合には、上記の更新処理のステップ803を行うことによって、複数の編集された暗号化コンテンツを一つにまとめるような処理を行ってもよい。
【００８４】
なお、この場合には、更新された暗号化コンテンツの各編集後部分コンテンツは、別々の領域を更新したものであることを確認する、同一の領域を更新した編集後部分コンテンツがある場合には編集日時が新しいものを選択する、或いは、予めユーザ間に優先順位を定めておき優先順位が高いユーザの編集後暗号化コンテンツを更新処理に利用するなど、予め更新のルールを定めておき、ルールにしたがって処理するようにすればよい。
【００８５】
更新前と編集後の二つの暗号化コンテンツ121が入手された場合、どちらが最新のものかを判断するためには、例えば、暗号化コンテンツ121、或いは、部分コンテンツに編集日時（或いは、作成日時）のタイムスタンプを生成するようにすればよい。なお、タイムスタンプは、電子署名技術に基づくタイムスタンプを利用することが、セキュリティ上の観点からは望ましい。
【００８６】
以上の復号処理において、暗号化コンテンツ121内の暗号化部分コンテンツc[i] 504は、閲覧制御用秘密鍵k[i] 508で暗号化されている。閲覧制御用秘密鍵k[i] 508は、公開鍵pk[j] 511で暗号化されているが、閲覧制御用秘密鍵k[i] 508を含んで暗号化処理を行っている公開鍵は、アクセス制御情報ac[j]で当該部分コンテンツのアクセス条件を格納しているw[i]が閲覧可の状態である公開鍵pk[j] 511だけである。そのため、公開鍵pk[j] 511と対応する秘密鍵sk[j]で復号した場合には暗号化部分コンテンツc[i] 504は復号可能であるが、それ以外の公開鍵で復号した場合には、閲覧制御用秘密鍵k[i] 508を得ることができないため、元の部分コンテンツm[i] 500の情報を得ることは困難である。それゆえ、秘密鍵sk[i]を所持したユーザに対し、閲覧許可を与えることができる。
【００８７】
また、同様に更新処理部において、暗号化コンテンツ121内の暗号化部分コンテンツc[i]504の編集制御用秘密鍵x[i]506は、アクセス制御情報ac[j]で当該部分コンテンツのアクセス条件を格納しているw[i]が編集可の状態である公開鍵pk[j]511で暗号化した鍵暗号化データe[j]503にのみ含まれる。電子署名の性質から、部分コンテンツm[i]500の特徴値s[i]505は、編集制御用秘密鍵x[i] 506がなければ、正当な（部分コンテンツ検証鍵ｖ[i]507を用いた検証に成功するような）特徴値s[i] 506を生成することは計算量的に困難である。それゆえ、公開鍵pk[j] 511に対応する秘密鍵sk[j]を所持したユーザに対し、編集許可の権限を与えることができる。
【００８８】
図9は、暗号化処理部226によって出力される暗号化コンテンツ121のデータ構造の概略である。図5に示したように、アクセス制御情報AC502、鍵暗号化データe[1]，．．．，e[u]、部分暗号化データc[1]，．．．，c[n]、部分コンテンツ検証鍵v[1]，．．．，v[n]、特徴値s[1]，．．．，s[n]、電子署名σ510、検証鍵512を含んで構成されている。
【００８９】
図9に示した通り、暗号化コンテンツ121は、暗号化部分コンテンツを含んで構成される部分暗号化データ部904、特徴値、部分コンテンツ検証鍵を含んで構成される編集制御用データ部903、鍵暗号化データ、アクセス制御情報、コンテンツ区切り情報、電子署名、検証鍵を含んで構成される暗号化データ用ヘッダ部701を含んで構成される。なお、図9に示した通り、編集制御上データ部、部分暗号化データ部をまとめてコンテンツ暗号化データ部と呼ぶ。
【００９０】
図9に示したデータ表現は、例えば、XMLやASN．1などのデータフォーマットを用いて表現すればよい。例として、XMLを用いた具体的なデータフォーマットについて以下に示す。
【００９１】
図10は、図9に示した暗号化コンテンツ121をXMLを用いて表現した場合のデータ表現方法の一例である。
【００９２】
図9に示したように、暗号化コンテンツ121は、暗号化データ用ヘッダ部901とコンテンツ暗号化データ部902を含んで構成される。図10の例では、図9に示したデータ構造を、暗号化データ用701をCES＿PARAM要素、SignatureValue要素、VerifiyingKey要素、AccessControlList要素で、コンテンツ暗号化データ部902をEncryptedDataReferenceList要素で構成する。
【００９３】
暗号化データ用ヘッダ部901を構成するCED＿Param要素は、鍵暗号化データを生成するために用いる公開鍵暗号技術のアルゴリズム、部分コンテンツを暗号化するために用いる共通鍵暗号技術のアルゴリズム、完全性保証用電子署名、および、特徴値生成のために用いる電子署名のアルゴリズムを指定するためのKeyEncryptionAlgorithm要素、DataEncryptionAlgorithm要素、SignatureAlgorithm要素を含んで構成される。また、暗号化データ用ヘッダ部901内のSignatureValue要素、VerifyingKey要素は、完全性保証用電子署名、および、完全性保証用電子署名を用いて検証を行う検証鍵を格納するための要素である。また、AccessControlList要素は、鍵暗号化データ、および、アクセス制御情報を格納するための要素であり、鍵暗号化データを格納するEncryptedKeyData要素、閲覧可能な部分コンテンツを指定するDecryptableDataReference要素、編集可能な要素を指定するEditableDataReference要素、および、これらをまとめるReferenceList要素から構成される。そしてEncryptedKey要素によって、AccessControlList要素、EncryptedKey要素をまとめることによって、一つの公開鍵が暗号化コンテンツを復号するために必要となる情報を格納する。
【００９４】
ここで、各要素内のAlgorithm属性は、使用するアルゴリズムの識別子を記述するためのものであり、例えば、部分コンテンツの暗号化に、AES−128をCBCモードで利用する場合には、DataEncryptionAlgorithm要素のAlgorithm属性に、
http：／／www．w3．org／2001／04／xmlenc＃aes128−cbcなどと記述すればよい。
【００９５】
EncryptedKey要素のKey＿id属性には、復号に利用する秘密鍵を特定するための情報を記述する。これには、例えば、鍵管理装置101において秘密鍵に対して、一意な識別番号を発行し、これを記述すればよい。また、DecryptableDataReference要素、および、EditableDataReference要素内のURI属性には、それぞれ、EncryptedKeyData要素を復号した結果得られる閲覧制御用秘密鍵によって閲覧可能となるEncryptedDataReference要素（暗号化部分コンテンツに相当)を特定するための参照情報、EncryptedKeyData要素を復号した結果得られる編集制御用秘密鍵によって編集可能となるEncryptedDataReference要素を特定するための参照情報、を記述する。
【００９６】
なお、CED＿Param要素には、上記のほか、暗号時、復号時に必要となる様々な情報を記述してよい。たとえば、対象となるファイルのファイル情報（ファイルのフォーマットやエンコード方法などのメタ情報）を記述してもよい。
【００９７】
次に、コンテンツ暗号化データ部902を構成するEncryptedDataReference要素は、EncryptedDataReference要素を含んで構成され、EncryptedDataReference要素は、部分コンテンツの参照情報を格納するReferenceList要素、暗号化部分コンテンツを格納するEncryptedData要素、特徴値を格納するSignatureValue要素、および、部分コンテンツ検証鍵を格納するVerifyingKey要素を含んで構成される。
【００９８】
EncryptedDataReference要素は、コンテンツ区切り情報を記述するための要素である。また、RefereneList要素の子要素であるXPath要素には、暗号化対象となるデータ（XMLである場合にはXMLの要素）を指定するためのXpath式を記述する。なお、対象データがXMLデータ以外である場合には、Xpath要素713を適宜変更（たとえば、画像であれば座標情報など）し、対象となるデータを指定できるようにすればよい。
【００９９】
EncryptedData要素は、XPath要素から得られたデータを暗号化した結果を格納するための要素である。なお、暗号化したデータを、EncryptedData要素を用いずに、元の部分コンテンツがあった領域に置き換えることによって、格納してもよい。
【０１００】
EncryptedDataReference要素のdata＿id属性には、EncryptedDataReference要素をEncryptedKey要素内のAccessibleDataReference要素から指定するために、EncryptedDataReference要素を一意に識別するための識別子を、is＿encrypted属性には、その部分コンテンツが復号されているか否かの情報を格納する。このほか、EncryptedDataReference要素に、is＿edited属性を追加することによって、部分コンテンツが編集されたか否かをわかるようにしてもよい。
【０１０１】
なお、上記において、鍵暗号化データe[1]，．．．，e[u]、部分暗号化データc[1]，．．．，c[n]、部分コンテンツ検証鍵v[1]，．．．，v[n]、特徴値s[1]，．．．，s[n]、電子署名σ510、検証鍵512など、バイナリーデータを記録する必要がある要素（たとえば、SignatureValue要素やEncryptedKeyData要素など）には、与えられたバイナリーデータをBase64符号を用いて文字列化することによって、該当する要素に値を格納すればよい。
【０１０２】
暗号化PG222、復号PGの処理（図4、図7）において、コンテンツ区切り情報、暗号化コンテンツ、などは配列を用いて表現していたが、これらの配列表現と図10に示したようなXML表現における対応関係は、例えば、図10のフォーマットにおいて上から記述された要素から昇順に0、1，．．．とインデックス番号を振っていくことによって、容易に配列表現への変更が可能である。
【０１０３】
なお、図10は暗号化コンテンツ121を表現するためのデータ表現方法の一例であり、要素名などは任意の名称を用いてもよい。また、に変更してよい。また、データ表現方法をXMLではなく、例えば、ASN．1などの他のデータフォーマットを用いて表現してもよい。
【０１０４】
図11は、暗号化コンテンツ121が図10に示したようなXMLを用いて構成されている場合に、暗号化コンテンツ121から復号コンテンツ表示イメージ122を生成する、復号コンテンツ表示PGの処理の概略を示している。
【０１０５】
復号PG1101は、図7に示した処理を行い、暗号化コンテンツ121から復号コンテンツ1113を生成する。生成された復号コンテンツ1113は、さらに、復号コンテンツ変換PG1102によって、表示イメージソース1112に変換され、表示イメージソース1112を表示PG1103に通すことによって、ディスプレイなどの出力装置204に出力される。なお、XMLを用いて、これをWebブラウザに表示する場合には、図11に示したように、これらの復号コンテンツ1113、表示イメージソース1112は、XML、HTML（HyperText Markup Language）であり、復号コンテンツ変換PG1102、表示PG1103は、それぞれ、XSLT（XSL Transform、XSLはExtensible Styelsheet Languageの略）用プログラム、Webブラウザに対応する。なお、復号コンテンツ変換PG1102がXSLTである場合には、変換規則を記述した表示スタイル定義情報1111としてXSLを利用することが一般的である。
【０１０６】
なお、図11では暗号化コンテンツ121が、図9に示したようなXMLを用いて表現された場合について示したが、これと異なっていてもよい。例えば、復号コンテンツ1113が、例えば、OpenXMLやODF、或いは、その他アプリケーション固有のファイルフォーマットである場合には、図11に示した暗号化コンテンツ121、及び、復号コンテンツ1113として、これらのファイルフォーマットを利用してもよい。また、復号PG1101内の復号コンテンツ813の生成において、生成された復号コンテンツ813を上記のファイルフォーマットとして出力することによって、復号コンテンツ変換PG1102、及び、表示スタイル定義情報1111は不要としてもよい。この場合、ファイルフォーマットを表示するためのアプリケーションプログラムを表示PG1103として用いることによって、生成された復号コンテンツ1113の表示イメージ122を得るようにしてもよい。
【０１０７】
なお、コンテンツの編集などを行う場合には、アクセス制御情報ACを元に、復号に利用した秘密鍵で編集可能な部分コンテンツに対応する箇所を特定し、表示PG1103で表示イメージ122を表示する際に、予め編集可能な状態で表示しても良い。或いは、表示イメージ122とは別に編集用のエリアを設けて表示してもよい。編集時には、キーボードなどの入力装置203を用いユーザ入力から編集後部分コンテンツの入力を受付、前記編集処理部を用いて、暗号化コンテンツ121の更新を行えばよい。
【０１０８】
本実施形態では、コンテンツを、予め権限に対応付けて生成された公開鍵を用いて、暗号化し、ユーザは各自の権限に応じて配布された秘密鍵を用いて暗号化コンテンツの復号、編集を行う。
【０１０９】
この構成において、ユーザに対して鍵の割り当てを行う最も簡単な方法は、鍵管理装置101において、権限ごとに公開鍵210、秘密鍵を発行し、秘密鍵をICカードに格納し、それぞれの権限を持ったユーザに配布するとともに、公開鍵210をWebサーバなどを用いて公開することである。この場合、ユーザの権限の変更などが生じた場合には、新たにICカードを発行してユーザに配布する、或いは、ユーザからICカードを回収することによって、各ユーザに対して適切な権限の元で復号PG1101が実行されることが望まれる。しかしながら、以下のようにして鍵管理を行ってもよい。
【０１１０】
図12は、鍵管理装置101における鍵管理方法の概略の一例を示している。上述した権限ごとに秘密鍵を生成し、それぞれをICカードなどの耐タンパ性を有するデバイスに格納し、ユーザに配布する単純な鍵管理では、権限ごとにICカードの発行、回収を行う必要がある。そこで、図12に示したような鍵管理を行うことによって、ICカードの発行、回収の手間を軽減することが可能となる。以下に、図12に示した鍵管理の概略を述べる。
【０１１１】
図12に示したごとく、本鍵管理方法では、鍵管理装置101と鍵更新装置1205を含んで構成され、これらをネットワーク100を介して接続する。また、鍵管理装置101には、図12に示したごとく、ユーザと権限の管理を行うために、本鍵管理方法では、権限鍵管理テーブル1201、ユーザ鍵管理テーブル1202と、ユーザ鍵と権限鍵を対応付ける対応テーブル1203を保管する。これらのテーブルは、例えばデータベースなどを用いて、鍵管理装置101の外部記憶装置209に保管する。
【０１１２】
なお、鍵更新装置1205は、コンテンツ保護装置、コンテンツ利用装置、鍵管理装置101と同様に、図2に示した一般的な構成を有する電子計算機を用いて実装できる。また、鍵更新装置1205内の外部記憶装置201には、鍵更新PG、受信PG、暗号化された秘密鍵が格納される。なお、鍵更新PG、受信PG、は、暗号化装置102と同様に、CPU207によって実行され、鍵更新処理部、受信処理部という形で具現化される。
【０１１３】
前述したとおり、セキュリティ上の観点からは鍵管理装置101内の秘密鍵に関する情報は、直接ネットワーク100から閲覧できないようにすることが望まれる。そのため、本鍵管理方法において、鍵更新装置1205は、コンテンツ保護装置、コンテンツ利用装置とは、ファイアオールなどを用いて、異なるネットワーク上に設置することが望ましい。
【０１１４】
図12に示したごとく、鍵管理装置101では権限A、権限B、権限Cに対し、それぞれ、秘密鍵A114、公開鍵A111、秘密鍵B115、公開鍵B112、及び、秘密鍵C116、公開鍵C113を生成する。また、ユーザα、ユーザβ、ユーザγに対して、秘密鍵α1214、公開鍵α1211、秘密鍵α1215、公開鍵β1212、秘密鍵γ1216、公開鍵γ1213を生成する。
【０１１５】
鍵の配布を行う場合には、予めユーザの秘密鍵をICカードなどの耐タンパ性のあるデバイスに格納して、各ユーザに配布する（以下では、ICカードに秘密鍵を格納したものとして、説明する）。
【０１１６】
次に、ユーザに権限に対応した鍵を配布する場合には、以下のようにする。例えば、図12に示したようにユーザαに対して、権限A、権限Cを割り当てる場合には、対応する秘密鍵A114、秘密鍵C116をユーザαの公開鍵α1211で暗号化して、ネットワーク100を介して、鍵更新装置101に送付する。
【０１１７】
鍵更新装置101では、暗号化された秘密鍵A114、秘密鍵C116をICカード内の秘密鍵α1214を用いて復号し、ICカードに秘密鍵A114、秘密鍵C116を復号する。このとき、秘密鍵α1214による復号は、ICカード内で行うことが、セキュリティ上の観点からは望ましい。
【０１１８】
また、ユーザに権限に割当てられた秘密鍵を送付する際には、ICカード内の個人鍵を利用した認証など、配布するユーザの認証を行なうことが望ましい。
【０１１９】
なお、以上の説明ではユーザ鍵は、公開鍵暗号技術を用いていたが、ユーザ鍵は鍵管理装置101とユーザの所持するICカード間の通信に限って利用することにすれば、ユーザ鍵に共通鍵暗号技術の秘密鍵を用いてもよい。この場合、上記の鍵管理装置101での暗号化、及び、ICカード内での権限鍵の復号は、共通鍵暗号技術における秘密鍵を用いて行う。
【０１２０】
以上のようなネットワークを介してユーザに秘密鍵の配布をすることによって、ICカードの送付や回収といった物理的な媒体を直接渡す手間が少なくなる。また、ユーザには、各ユーザ固有のICカードを一枚発行すればよいだけであるため、権限の変化が生じた場合でも、ICカード内の権限鍵の書き換えを行うだけでよいため、ICカードの再発行や回収といった管理者の手間を軽減できる。
【０１２１】
なお、図12では、鍵管理方法の一例として、権限、ユーザが、それぞれ3の場合について取り上げていたが、権限、ユーザの数は、鍵管理装置101で管理するユーザ数、権限数に応じて変化する。図12の鍵管理に示した鍵管理方法は、本実施形態における暗号化方法を実現するための一例であり、これと異なった鍵管理方法を用いてもよい。
【０１２２】
また、以上に記載した実施形態においては、公開鍵暗号技術を採用し、暗号化と復号には、それぞれ、公開鍵と秘密鍵を利用しているが、このような態様に限定されず、例えば、共通鍵暗号技術における秘密鍵を暗号化、復号に用いてもよい。共通鍵暗号技術の秘密鍵を利用して復号を行う場合にも、公開鍵暗号技術を利用した場合と同様、コンテンツ利用装置を利用するユーザに、例えばICカード等の耐タンパ性を有するデバイスに格納して配布するなど、秘密鍵をユーザに直接確実に配布すると共に、容易に複製できないようにしておくことが、セキュリティ上の観点からは望ましい。また、共通鍵暗号技術を採用する場合には、例えばパスワードから前記共通鍵暗号技術における秘密鍵を生成するなどすることによって、復号時に秘密鍵をコンテンツ利用装置の外部記憶装置209に格納しなくてもよい。
【０１２３】
さらに、共通鍵暗号技術を利用して第一の実施例を実現する場合、暗号化を行うコンテンツ保護装置102においても、復号をおこなうコンテンツ利用装置と同じ秘密鍵を利用する。そのため、不必要に秘密鍵が漏洩することを防ぐために、コンテンツ保護装置102が鍵管理装置101から秘密鍵を取得する際に、暗号化通信を用いること、アクセス制限を行い、暗号化するユーザに不必要に秘密鍵が開示されることがないようにすることが望ましい。
【０１２４】
また、上記の変形例では、ICカードへ秘密鍵を格納する場合について述べたが、ICカードに限らずコンテンツ利用装置内の外部記憶装置209に格納してもよい。また、たとえば、秘密鍵をコンテンツ利用装置に格納しておくのではなく、秘密鍵の配布を復号処理実行時（図7）に行うようにしてもよい。この場合、コンテンツ利用装置と鍵管理装置101は、セキュリティ上の観点からは、暗号化通信を用いるなどしてコンテンツ保護装置102、コンテンツ利用装置との通信を保護する、コンテンツ保護装置102での暗号化処理後、コンテンツ利用装置での復号処理後に、取得した公開鍵、秘密鍵を削除する、暗号化、或いは、復号を行うユーザに応じてアクセス制御を行う、ことなどを実施することが望ましい。
【０１２５】
なお、本実施形態において述べたように公開鍵暗号技術を採用することによって、コンテンツを暗号化するユーザは公開情報である公開鍵を利用してコンテンツの暗号化を行うことができ、あらかじめ暗号化するユーザと復号するユーザとで秘密裏に情報を共有する必要が無いという利点がある。
【実施例２】
【０１２６】
第一の実施例では、編集箇所を制御するための方法として、特徴値の生成に一般的な電子署名技術を用いて処理を行った処理を行う場合について述べた。第二の実施例では、部分コンテンツの特徴値の生成に、Aggregate Signatureと呼ばれる電子署名技術を用いて構成した場合について述べる。
【０１２７】
第二の実施例の基本的なシステム構成は、第一の実施例と同じなので、第一の実施例との相異点を中心に説明する。
【０１２８】
Aggregate Signatureは、複数の署名者が各々のコンテンツに対して生成した署名を、一つにまとめることができるという電子署名技術である。Aggregate Siganatureを用いることによって、部分コンテンツの特徴値s[1]，．．．，s[n]を、一つの特徴値sに集約することができる。Aggregate Signatureについては、以下の文献に詳しい。
【０１２９】
【非特許文献２】Don Boneh、Craig Centry、Ben Lynn、Hovev Shacham、”Aggregate Signature and Verifiably Encrypted Signatures from Bilinear Maps”、Advances in Cryptology−EUROCRYPTO 2003，LNCS．2655，Springer Verlag。
【０１３０】
なお、Aggregate Signatureでは、複数の電子署名をひとつにまとめることができる電子署名技術であり、特定のユーザにコンテンツ内の一部の編集を許可する（すなわち、編集箇所を制御する）方法は、述べられていない。
【０１３１】
第二の実施例の詳細を述べる前に、まずAggregate Signatureについて説明する。
【０１３２】
Aggregate Signatureは、鍵生成、署名生成、Aggregation、署名検証の4つの処理を含んで構成される。以下に、これらの各処理について示す。なお、以下において、G1、G2、GTを素数位数pの巡回群（cyclic group）とする。また、G1、G2の生成元（generator）をg1、g2とする。phiをG1からG2への計算可能な同型写像（isomorphism）で、phi（g1）＝g2とする。また、EをG1×G2からGTへの計算可能で非退化な（non−degenerate）双線形写像（bilinear map）とする。このような性質を満たすと考えられる群、双線形写像の例としては、楕円曲線上の有理点が生成する群、および、そこで定義されるWeilペアリングやTateペアリングなどと呼ばれる写像が知られている。
【０１３３】
まず、鍵生成から説明する。各署名者u[i]は、0からp−1までの乱数ｘ[i]を生成し、ｖ[i]＝g1＾ｘ[i]を計算する。ここで”a＾b”は、aのb乗を表す。ここで、ｘ[i]が署名鍵であり、ｖ[i]が検証鍵である。
【０１３４】
次に、署名生成について説明する。コンテンツM[i]に対して電子署名を生成する場合、h[i]＝H（M[i]）を計算する。ここで、Hは任意長さの入力を受け取り、G2の元を出力するハッシュ関数とする。次に、σ[i]＝h[i]＾ｘ[i]を計算し、σ[i]をコンテンツM[i]の署名とする。
【０１３５】
署名σ[1]，．．．，σ[n]をAggregationする場合には、Σ＝σ[1]×．．．×σ[n]を計算する。
【０１３６】
コンテンツM[1]，．．．，M[n]の署名検証を行う場合には、（Aggregateされた）署名Σに対し、E（g1、Σ）＝E（ｖ[1]，h[1]）×．．．×E（ｖ[n]，h[n]）であることを確認する。ここで、h[i]＝H（M[i]）である。
【０１３７】
Aggregate Signatureを用いた場合、第一の実施例で述べた暗号化（図4、5、6）、復号（図7）、更新（図8）の各処理を以下のように修正する。
【０１３８】
まず、暗号化処理において、ステップ402における編集制御用秘密鍵、部分コンテンツ検証鍵の生成は、上記のAggregate Signatureにおける鍵生成によって生成された署名鍵、検証鍵となる。すなわち、編集制御用秘密鍵x[i] 506は、0からp−1までのいずれかの値を持つ乱数であり、部分コンテンツ検証鍵ｖ[i] 507は、ｖ[i]＝g1＾x[i]となる。
【０１３９】
また、ステップ404における部分コンテンツの特徴値生成は、前記編集制御用秘密鍵x[i]506（すなわち、Aggregate Signatureにおける秘密鍵）を用いた電子署名の生成となる。すなわち、特徴値s[i]は、h[i]＝H（c[i]）を計算し、さらにs[i]＝h[i]＾x[i]から生成される。ここで、h[i]の生成は、部分コンテンツm[i]500ではなく、暗号化コンテンツc[i]504に対して行われることに注意する。これは、部分コンテンツm[i]500に対して特徴値s[i]505の生成を行うと、以下に述べるAggregateされた特徴値sの検証に際して、部分コンテンツm[i]500、または、部分コンテンツm[i]500のハッシュ値h[i]が必要となるためである（詳細は後述する。なお、閲覧制御を行わない場合には、暗号化コンテンツではなく、部分コンテンツに対して特徴値の生成を行う）。
【０１４０】
Aggregate SignatureのAggregation処理を用いることによって、前述のとおり、特徴値s[1]，．．．，s[n]を一つの特徴値s（＝s[1]×．．．×s[n]）に置き換えることが可能である。なお、Aggregation処理は、例えば、ステップ404の直後、あるいは、ステップ407の暗号化コンテンツの生成の際など、ステップ404より後の任意の位置で行えばよい。
【０１４１】
なお、部分コンテンツm[i]500に対して特徴値s[i]505を生成し、これを一つの特徴値sにまとめた場合、復号時のステップ706における部分コンテンツの検証時に、Aggregate Signatureの検証処理から、すべての部分コンテンツm[i] 500、または、h[i]が必要になる。m[i] 500は、復号処理の際、復号に利用する秘密鍵sk[j]に対して、閲覧許可された部分コンテンツ以外は得ることができないため、復号処理を実行するためには、暗号化コンテンツ121にすべての部分コンテンツに対して、h[i]を格納しておく必要がある。すなわち、特徴値s[i] 505の代わりにh[i]を各部分コンテンツごとに暗号化コンテンツ121内に格納しておく必要があり、Aggregate Signatureを利用して特徴値s[i] 505を一つにまとめる利点がなくなる。
【０１４２】
上述のとおり、部分コンテンツm[i] 500に対して特徴値s[i]を生成した場合でも、ハッシュ値h[i]を暗号化コンテンツ121内の格納しておけば、Aggregate Signatureを利用しもよい。また、Aggregation処理を用いずに、Aggregate Signatureを利用して、第一の実施例と同じ構成方法で、暗号化、復号、更新処理を実現してもよい。
【０１４３】
また、ステップ406における署名鍵、検証鍵もAggregate Signatureにおける署名鍵、検証鍵を利用することによって、完全性保証用電子署名σ510と前記Aggregateされた特徴値sに対してもAggregationを行うようにしてもよい。
【０１４４】
次に、復号処理について説明する。復号処理は、第一の実施例に述べた手順と同じである。ただし、ステップ706における部分コンテンツ検証鍵、特徴値sによる部分コンテンツの検証は、Aggregate Signatureによる検証処理となる。すなわち、Aggregationにより生成された特徴値s（＝s[1]×．．．×s[n]）に対し、e（g1、s）＝E（ｖ[1]，h[1]）×．．．×E（ｖ［n]，h[n]）であることを確認する。ここで、h[i]＝H（c[i]）である。
【０１４５】
なお、暗号化処理において述べたとおり、ステップ406における署名鍵、検証鍵512をもAggregate Signatureの署名鍵、検証鍵に置き換えた場合には、ステップ707の処理をステップ703でまとめて行うことができる。
【０１４６】
次に、Aggregate Signatureを用いた場合の更新処理の手順について、説明する。
【０１４７】
Aggregate Signatureを用いた場合、特徴値s[i] 505は、暗号化コンテンツ121全体で一つの特徴値sに集約されている。そのため、更新処理を以下のように修正する（更新された処理を801’、802’、803’とする）。なお、以下では、第一の実施例と同様に復号処理に対する入力のほか、暗号化コンテンツ121、編集箇所位置情報i、編集後部分コンテンツm’[i]を入力として受け取り、編集後暗号化コンテンツを出力する。
【０１４８】
まず、ステップ801’では、閲覧制御用秘密鍵k[i]508を用いて、編集後部分コンテンツm’[i]を暗号化し、編集後暗号化部分コンテンツc’[i]を生成する。次に、ステップ802’において、編集用秘密鍵x[i]506（すなわち、Aggregate Signatureの署名鍵）を用いて、編集後暗号化部分コンテンツc’[i]に対する編集後特徴値s’[i]を生成する。
【０１４９】
ステップ803’では、以下のようにして、暗号化部分コンテンツの更新を行う。
【０１５０】
まず、得られた編集後部分暗号化コンテンツc’[i]を、もとの部分暗号化コンテンツc[i]504と入れ替える。次に、元の部分暗号化コンテンツc[i]504に対し、編集用秘密鍵x[i]506を用いて特徴値s[i]505（＝h[i]＾x[i]）を計算する。なお、h[i]＝H（c[i]）である。さらに、集約された特徴値sに対し、編集後特徴値s’＝s×s’[i]／s[i]を計算し、編集後特徴値s’を特徴値sと入れ替えることによって、暗号化コンテンツの更新を行い（ここまでが、ステップ803’）、処理を終了する（ステップ804）。
【０１５１】
前述のとおり、特徴値s＝s[1]×．．．×s[n]であるから、s／s[i]の計算によって、集約された特徴値sからs[i] 505を除いた特徴値s”を得ることができる。さらに、s”×s’[i]とすることで、特徴値s’がs[i] 505の代わりに、更新された部分コンテンツm’[i]に対する特徴値s’となる。
【０１５２】
以上のように、Aggregate Signatureを用いることによって、部分コンテンツごとに暗号化コンテンツ121に格納されていた特徴値s[i] 505を一つの特徴値sとして集約することができる。この場合、例えば図9に示したXMLを用いた、フォーマットの場合、EncryptedDataReferenceList要素内のEncryptedDataReference要素の子要素であった、特徴値s[i] 505を格納するための要素である、SignatureValue要素は不要となる。代わりに、暗号化コンテンツ121に対して特徴値は一つとなるので、EncryptedDataReference要素の子要素ではなく、EncryptedDataReferenceList要素の子要素としてSiganatureValue要素を設け、ここに集約された特徴値sを格納するようにすればよい。また、ステップ406における署名鍵、検証鍵をもAggregate Sigantureの署名鍵、検証鍵を用いることによって、特徴値sと完全性保証用電子署名σ510とを一つに集約する場合には、前記EncryptedDataReferenceList要素の子要素であるSiganatureValue要素も不要であり、CED要素の子要素であるSignatureValue要素に特徴値sと完全性保証用電子署名σ510とをまとめた値を格納すればよい。
【０１５３】
なお、第二の実施例では、部分コンテンツに閲覧制御用秘密鍵と編集制御用秘密鍵の割り当てを行うことによって、編集箇所、閲覧箇所の制御を行う方法を説明したが、第一の実施例で述べたとおり、部分コンテンツの閲覧制御を行わなくてもよい。この場合、第一の実施例で述べたとおり、閲覧制御用秘密鍵の生成は不要であり、部分コンテンツの特徴値の算出は、部分コンテンツそのものに対して行えばよい。
【実施例３】
【０１５４】
第三の実施例では、非特許文献1と同様に、カメレオンハッシュを用いた方法について説明する。
【０１５５】
第三の実施例の基本的なシステム構成は、第一の実施例と同じなので、第一の実施例との相異点を中心に説明する。
【０１５６】
一般に暗号学的に安全なハッシュ関数は、一方向性（出力が与えら得たとき、対応する入力を計算することが困難であること）、衝突困難性（同一のハッシュ値を出力する、入力の組を見つけることが困難であること）を性質として持つ。カメレオンハッシュでは、前述のとおり、秘密情報が与えられた場合に限り、ある入力に対して得られるハッシュ値に対して同一のハッシュ値を出力する入力（第二原像）を容易に生成可能なハッシュ関数である。
【０１５７】
本実施例の説明に入る前に、非特許文献3において開示されたカメレオンハッシュについて説明する。なお、以下では、非特許文献3で開示された離散対数問題に基づくカメレオンハッシュを用いるが、第三の実施例で述べる方法は、非特許文献3で開示された以外のカメレオンハッシュであっても同様に実現できる。なお、以下では非特許文献3で述べられた離散対数問題に基づくカメレオンハッシュを単にカメレオンハッシュと呼ぶ。
【０１５８】
【非特許文献３】Hugo Krawczyk and Tal Rabin、”Chameleon Signatures”、Network and Distributed System Security Symposium （NDSS2000）、http：／／www．isoc．org／isoc／conference／ndss／2000／proceedings／042.pdf。
【０１５９】
カメレオンハッシュは、セットアップとハッシュ、および、更新の三つ処理を含んで構成される。以下、各処理の詳細について説明する。
【０１６０】
まず、セットアップでは、p＝a×q＋1となる素数p、qを生成する。ここで、aは任意の整数であり、セキュリティ上の観点からqは十分大きな素数を選択する。1からqのなかからｘをランダムに選び、ｖ＝g＾x mod pを計算する。ここで、gは素数pによる乗算群Zpの位数qの生成元gであり、a＝b mod cは、bをcで割った余りをaとすることをあらわす。ｘを秘密情報、ｖを公開情報とし、p、q、gを共通情報とする。
【０１６１】
つぎに、ハッシュでは、コンテンツM、乱数Rと公開情報を用いて、h＝（g＾M×ｖ＾R） mod pを計算し、hをハッシュ値とする。なお、乱数Rは初回ハッシュ計算時にランダムに生成すればよい。また、コンテンツMのデータサイズが大きい場合にはハッシュ関数Hを用いた結果を利用して、上記hを計算してもよい。ここでいうハッシュ関数は、たとえはSHA−1などの一般的によく知られた任意のハッシュ関数を用いてよいが、暗号学的に安全な（すなわち、一方向性と衝突困難性をもつ）ハッシュ関数を用いることが望ましい。
【０１６２】
更新を行う場合には、秘密情報ｘ、コンテンツM、乱数R、編集後コンテンツM’とし、M＋ｘ×R＝M’＋ｘ×R’mod qを満たすような編集後乱数R’を出力する。ここで、コンテンツM、乱数Rに対しハッシュを適用した結果と、コンテンツM’、乱数R’に対しハッシュを適用した結果は同じになる。
【０１６３】
カメレオンハッシュを用いた場合、第一の実施例で述べた暗号化処理（図4、5、6）、復号（図7）、更新（図8）を以下のように修正する。
【０１６４】
まず、暗号化処理において、ステップ402において、カメレオンハッシュのセットアップを実行し、共通情報p、q、gを生成する。次に、各部分コンテンツごとに、編集制御用秘密鍵、部分コンテンツ検証鍵を上記のカメレオンハッシュにおけるセットアップを用いて秘密情報、公開情報を生成し、割り当てる。すなわち、編集制御用秘密鍵x[i]506は、1からqまで整数ｘ[i]であり、部分コンテンツ検証鍵ｖ[i]507は、y[i]＝（g＾ｘ[i]） mod pとなる。なお、カメレオンハッシュにおける共通情報p、q、gは、ステップ402において部分コンテンツごとに別々に生成してもよいし、或いは、共通情報をシステム共通の情報として予め定めておき、これを利用するようにしてもよい。
【０１６５】
また、ステップ404における部分コンテンツの特徴値生成は、前記編集制御用秘密鍵x[i]506（カメレオンハッシュにおける秘密情報）を用いたハッシュ処理によるハッシュ値の生成となる。すなわち、乱数R[i]を生成し、特徴値s[i]＝（g＾m[i]×ｖ[i]＾R[i]） mod pを計算する。ここで、s[i] 505の生成にあたっては、部分コンテンツm[i]500のデータサイズが大きい場合には、部分コンテンツm[i]500に対し、ハッシュ関数Hを適用した結果を用いてもよい。また、部分コンテンツm[i]500の代わりに、暗号化コンテンツc[i]504に対して行ってもよい。
【０１６６】
ステップ406における完全性保証用電子署名の生成では、部分コンテンツ検証鍵v[i]507、アクセス制御情報ac[i]、鍵暗号化データe[1]，．．．，e[u]、本ステップで生成した検証鍵512、および、部分コンテンツの特徴値s[1]，．．．，s[n]も前記署名対象データを連結し、連結されたデータに対して、本ステップで生成した署名鍵を用いて完全性保証用電子署名σ510を生成する。ここで、カメレオンハッシュを用いた場合には、第一の実施例で署名対象としたデータに加え、特徴値s[1]，．．．，s[n]も連結していることに注意する。これは、第一、第二の実施例では、電子署名技術を利用しているため、正当な（復号処理における部分コンテンツの検証処理（ステップ706）に成功する）特徴値s[i]505は、対応する編集制御用秘密鍵x[i]506（すなわち電子署名技術における署名鍵）を知らない限り困難であるが、カメレオンハッシュの場合、特徴値s[i]505（カメレオンハッシュにおけるハッシュ値h）は部分コンテンツ検証鍵ｖ[i]507（カメレオンハッシュの公開情報）から計算可能であるためである。なお、カメレオンハッシュを用いた本実施例においては、カメレオンハッシュの「秘密情報（編集制御用秘密鍵x[i]506）が与えられた場合に限り、同一のハッシュ値を生成する異なる入力を計算することが容易」、という性質を利用して編集箇所の制御を行う。詳細は後述する。
【０１６７】
最後に、ステップ407において、アクセス制御情報AC502、鍵暗号化データe[1]，．．．，e[u]、部分暗号化データc[1]，．．．，c[n]、部分コンテンツ検証鍵v[1]，．．．，v[n]、特徴値s[1]，．．．，s[n]、乱数R[1]，，．．．、乱数R[n]、電子署名σ510、検証鍵512を連結し、暗号化コンテンツC121を生成する。なお、カメレオンハッシュを用いた第三の実施例では、第一の実施例と異なり、暗号化コンテンツ121に乱数R[1]，，．．．、乱数R[n]を含む。
【０１６８】
次に、復号処理について説明する。復号処理は、第一の実施例に述べた手順と同じである。ただし、ステップ702における暗号化コンテンツの検証は、部分コンテンツ検証鍵ｖ[1]，．．．，ｖ[n]、アクセス制御情報AC502、鍵暗号化データe[1]，．．．，e[u]、特徴値s[1]，．．．，s[n]、検証鍵512に対して行う。また、ステップ706における部分コンテンツの検証は、カメレオンハッシュのハッシュ処理を用いて、特徴値s[i]と部分コンテンツのハッシュ値が一致するかどうかを検証する。
【０１６９】
次に、カメレオンハッシュを用いた場合の更新処理の手順について、説明する。
【０１７０】
カメレオンハッシュを用いた場合、更新処理を以下のように修正する（更新された処理を801”、802”、803”とする）。なお、以下では、第一の実施例と同様に復号処理に対する入力のほか、暗号化コンテンツ121、編集箇所位置情報i、編集後部分コンテンツm’[i]を入力として受け取り、編集後暗号化コンテンツを出力する。
【０１７１】
まず、ステップ801”では、編集制御用秘密鍵x[i]506を用いて、編集後部分コンテンツm’[i]に対し、カメレオンハッシュの更新処理を用いて編集後乱数R’[i]を生成する。次に、ステップ802”において、閲覧制御用秘密鍵k[i]508を用いて、編集後部分コンテンツm’[i]を暗号化し、編集後暗号化部分コンテンツc’[i]を生成する。
【０１７２】
最後に、ステップ803’で、得られた編集後部分暗号化コンテンツc’[i]、および、編集後乱数R’[i]を、もとの部分暗号化コンテンツc[i]504、乱数R[i]と入れ替え、暗号化コンテンツの更新を行い（ここまでが、ステップ803’）、処理を終了する（ステップ804）。
【０１７３】
以上の更新処理において、カメレオンハッシュの更新処理を用いることによって、部分コンテンツm[i]500の特徴値s[i]505は変化しない。これは、「秘密情報（編集制御用秘密鍵x[i]506）が与えられた場合に限り、同一のハッシュ値を生成する異なる入力を計算することが容易」という性質を利用している。また、部分コンテンツの特徴値s[i]505は完全性保証用電子署名によって改ざん困難であり、編集制御用秘密鍵x[i]506は、アクセス制御情報ACによって、該当する部分コンテンツm[i]500が編集可に設定された公開鍵pk[j]511で暗号化された鍵暗号化データe[j]503に含まれ、それ以外の鍵暗号化データe[j]503には含まれないため、これらによって編集箇所の制御が可能になる。
【０１７４】
以上のように、カメレオンハッシュを用いた第三の実施例においても、第一の実施例と同様、図９に示したデータ構造を用いてよい。また、第一の実施例と同様に、例えば図10に示したXMLを用いた、フォーマットを用いてもよい。なお、カメレオンハッシュを利用した場合には、暗号化コンテンツ121に乱数R[1]，．．．，R[n]が含まれるが、これらはEncryptedDataReference要素内にRandomValue要素を追加するなどして乱数R[i]を格納すればよい。
【図面の簡単な説明】
【０１７５】
【図１】第一の実施例におけるネットワーク構成の概略を例示する図である。
【図２】第一の実施例におけるコンテンツ保護装置の構成の概略を例示する図である。
【図３】第一の実施例におけるデータフローの概略を例示する図である。
【図４】第一の実施例における暗号化処理の概要を例示する図である。
【図５】第一の実施例における暗号化処理を模式的に表した図である。
【図６】第一の実施例の暗号化処理における部分コンテンツの処理の概略を模式的に表した図である。
【図７】第一の実施例における復号処理の概略を例示する図である。
【図８】第一の実施例における暗号化コンテンツの更新処理の概略を例示する図である。
【図９】第一の実施例における暗号化コンテンツの構成の概略を例示する図である。
【図１０】第一の実施例における暗号化コンテンツの構成例を例示する図である。
【図１１】第一の実施例における暗号化コンテンツを復号処理と復号コンテンツを表示するまでの処理の概略を例示する図である。
【図１２】第一の実施例における鍵管理方法の一例を例示する図である。
【符号の説明】
【０１７６】
120：コンテンツM、121：暗号化コンテンツC、500：部分コンテンツm[i]、502：アクセス制御情報AC、503：鍵暗号化データe「i」、504：部分暗号化コンテンツc[i]、505：特徴値s[i]、506：編集制御用秘密鍵x[i]、507：部分コンテンツ検証鍵v[i]、508：閲覧制御用秘密鍵k[i]、510：完全性保証用電子署名σ、511：公開鍵pk[i]。
【図１】
2010050760.tif 000003
【図２】
2010050760.tif 000004
【図３】
2010050760.tif 000005
【図４】
2010050760.tif 000006
【図５】
2010050760.tif 000007
【図６】
2010050760.tif 000008
【図７】
2010050760.tif 000009
【図８】
2010050760.tif 000010
【図９】
2010050760.tif 000011
【図１０】
2010050760.tif 000012
【図１１】
2010050760.tif 000013
【図１２】
2010050760.tif 000014