(57)【要約】【課題】ユーザ権限に応じて，コンテンツの部分的に開示可能にする暗号化方法において，復号時に復号結果の検証を可能にする。【解決手段】暗号化対象コンテンツをひとつ以上のブロックに分割し，個々のブロックに対して，共通鍵暗号技術におけるコンテンツ暗号化鍵をランダムに生成，生成されたコンテンツ暗号化鍵を用いて各ブロックを暗号化する。さらに，ユーザ権限に応じた選択的に開示できるよう，ユーザに閲覧権限のあるデータのコンテンツ暗号化鍵を連結し，さらに全てのブロックの暗号文を連結して得られたハッシュ値と連結して，予め権限のあるユーザに割り当てられた公開鍵暗号技術の公開鍵を用いて暗号化し鍵暗号化データを作成する。復号時には，鍵暗号データを復号し，復号したハッシュ値と受信したデータ暗号化部のハッシュ値を比較し，復号結果の完全性を検証する。【選択図】図１
2009049731.tif 000002
【特許請求の範囲】
【請求項１】
ディジタルコンテンツの暗号化方法であって，
暗号化装置が，
ディジタルコンテンツを複数の部分コンテンツに分割し，
共通鍵暗号技術による，前記部分コンテンツごとに異なるコンテンツ暗号化鍵を用いて，各々の前記部分コンテンツを暗号化した暗号化部分コンテンツを生成し，
ユーザ権限ごとに，復号可能な前記暗号化部分コンテンツを割り当て，
割り当てられた前記暗号化部分コンテンツを生成した一つ以上の前記コンテンツ暗号化鍵と，前記暗号化部分コンテンツを復号する際の完全性の検証に用いる，ユーザ権限ごとの前記暗号化部分コンテンツの特徴量の完全性検証用データと，を，公開鍵暗号技術による前記ユーザ権限ごとに異なる公開鍵を用いて暗号化した鍵暗号化データを生成し，
前記暗号化部分コンテンツと前記鍵暗号化データとを含む暗号化ディジタルコンテンツを生成する
ことを特徴とする暗号化方法。
【請求項２】
請求項１に記載のディジタルコンテンツの暗号化方法であって，
前記暗号化装置が，
前記特徴量として，ひとつ以上の，前記部分コンテンツ，または，前記暗号化部分コンテンツをまとめたデータのハッシュ値を求め，
前記ハッシュ値を前記完全性検証用データとする
ことを特徴とする暗号化方法。
【請求項３】
請求項１に記載のディジタルコンテンツの暗号化方法であって，
前記暗号化装置が，
前記ユーザ権限ごとに，メッセージ認証子生成用鍵を生成し，
ひとつ以上の，前記部分コンテンツ、または、前記暗号化部分コンテンツと、前記鍵暗号化データとをまとめたデータに，前記メッセージ認証子生成用鍵を作用させて，前記特徴量としてメッセージ認証子を作成し，
前記メッセージ認証子生成用鍵と前記メッセージ認証子とを前記完全性検証用データとする
ことを特徴とする暗号化方法。
【請求項４】
請求項１に記載のディジタルコンテンツの暗号化方法であって，
前記暗号化装置が，
電子署名生成のための署名生成用秘密鍵と署名検証用公開鍵の生成を行い，
ひとつ以上の，前記部分コンテンツ、または、前記暗号化部分コンテンツと、前記鍵暗号化データとをまとめたデータに，生成した前記署名生成用秘密鍵を作用させて，前記特徴量として，
署名値を求め，
生成した前記署名検証用公開鍵と前記署名値とを前記完全性検証用データとする
ことを特徴とする暗号化方法。
【請求項５】
請求項１に記載のディジタルコンテンツの暗号化方法であって，
前記暗号化装置が，
前記ディジタルコンテンツの分割位置を示すコンテンツ区切り情報と，前記暗号化ディジタルコンテンツ内に含まれる前記鍵暗号化データからなる鍵暗号化データ部と，前記ユーザ権限との対応情報を表すアクセス制御情報，および，完全性検証用データを，前記暗号化ディジタルコンテンツのヘッダ情報に含める，
ことを特徴とする暗号化方法。
【請求項６】
請求項１に記載された暗号化方法によって暗号化されたディジタルコンテンツの復号方法であって，
復号装置が，
前記ユーザ権限に対して割り当てられた秘密鍵のいずれかを用いて，
当該秘密鍵に対応する公開鍵によって暗号化された鍵暗号化データを復号し，
復号結果から当該公開鍵によって暗号化された，前記ひとつ以上のコンテンツ暗号化鍵を抽出し，
前記抽出されたコンテンツ暗号化鍵によって暗号化された結果である暗号化部分コンテンツの復号を行い，
復号された暗号化部分コンテンツを用いた復号ディジタルコンテンツを生成する
ことを特徴とする復号方法。
【請求項７】
請求項６に記載の復号方法であって，
前記復号装置が，
前記復号ディジタルコンテンツの生成において，さらに，前記完全性検証用データの抽出を行い，
抽出した前記完全性検証用データを用いて，生成した前記復号ディジタルコンテンツの完全性を検証し，
完全性の検証に失敗した場合には，前記復号ディジタルコンテンツの生成処理を停止する
ことを特徴とする復号方法。
【請求項８】
請求項１に記載のディジタルコンテンツの暗号化方法で用いる鍵管理方法であって，
鍵管理装置が，
ユーザと，ユーザ権限，それぞれに対し公開鍵暗号技術における秘密鍵と公開鍵の割り当てを行い，
前記ユーザと，前記ユーザ権限との対応関係に基づき，前記ユーザが有するユーザ権限の秘密鍵を当該ユーザの公開鍵を用いて暗号化し，
暗号化した前記ユーザ権限の秘密鍵を鍵更新装置に送付し，
前記鍵更新装置が，
前記ユーザに割り当てられた秘密鍵を用いて，前記暗号化されたユーザ権限の秘密鍵を復号する
ことを特徴とする鍵管理方法。
【請求項９】
請求項１に記載のディジタルコンテンツの暗号化方法であって，
前記暗号化装置が，
第一の順序制御用乱数を生成し，
一つ以上の前記コンテンツ暗号化鍵を含む第一のコンテンツ暗号化鍵集合と，前記順序制御用乱数とを連結し，
前記連結したデータを，前記ユーザ権限に対して割り当てられた公開鍵を用いて暗号化し，
前記暗号化結果を，一つ以上の前記コンテンツ暗号化鍵を含む，前記第一のコンテンツ暗号化鍵集合とは異なる，第二のコンテンツ暗号化鍵集合の暗号化に用いる第二の順序制御用乱数とする
ことを特徴とする暗号化方法。
【請求項１０】
請求項９に記載のディジタルコンテンツの暗号化方法によって暗号化されたディジタルコンテンツの復号方法であって，
復号装置が，
前記ユーザ権限に対して割り当てられた秘密鍵を取得し，
第二の前記順序制御用乱数を，前記取得した秘密鍵を用いて復号し，  前記第二の順序制御用乱数の復号結果から，前記第一の順序制御用乱数と第二のコンテンツ暗号化鍵集合とを抽出し，
前記第二のコンテンツ暗号化鍵集合に含まれるコンテンツ暗号化鍵を用いて，暗号化された部分コンテンツを復号して復号ディジタルコンテンツの生成を行い，
前記第一の順序制御用乱数と，前記暗号化された複数の部分コンテンツと，を用いた暗号化ディジタルコンテンツを生成する
ことを特徴とする復号方法。
【請求項１１】
請求項９に記載の暗号化方法であって，
前記暗号化装置が，
前記第二の順序制御用乱数に対し，秘密分散処理を適用することによって，複数の第二の分散順序制御用乱数を生成し，
前記第二の分散順序制御用乱数それぞれに対し，コンテンツ暗号化鍵集合との連結を行い，
前記コンテンツ暗号化鍵集合が連結された第二の分散順序制御用乱数それぞれに対して，前記権限に対して割り当てられた公開鍵による暗号化を行い，
前記暗号化された結果それぞれを第三の分散順序制御用乱数として連結し，
前記第三の分散順序制御用乱数を連結した結果を用いた第三の順序制御用乱数を生成する
ことを特徴する暗号化方法。
【請求項１２】
請求項１１に記載のディジタルコンテンツの暗号化方法によって暗号化されたディジタルコンテンツの復号方法であって，
復号装置が，
前記第三の順序制御用乱数から前記複数の第三の分散順序制御用乱数を抽出し，
前記第三の分散順序制御用乱数それぞれに対して，暗号化された複数の部分コンテンツを連結することによって，複数の暗号化ディジタルコンテンツを生成する
ことを特徴とする復号方法。
【請求項１３】
請求項１１に記載のディジタルコンテンツの暗号化方法によって暗号化されたディジタルコンテンツの復号方法であって，
復号装置が，
前記第二の分散順序制御用乱数に，秘密分散処理の復元処理を行うことによって，前記第二の順序制御用乱数を復元し，
当該復号装置に提供されるユーザ権限に対して割り当てられた秘密鍵を用いて，前記第二の順序制御用乱数の復号を行い，
前記第二の順序制御用乱数の復号化結果から前記第一利用者の順序制御用乱数である第一の順序制御用乱数と第二のコンテンツ暗号化鍵集合とを抽出し，
前記第二のコンテンツ暗号化鍵集合からコンテンツ暗号化鍵を取得し，取得した前記コンテンツ暗号化鍵を用いて，暗号化された部分コンテンツの復号を行い，復号ディジタルコンテンツを生成し，
前記第一の順序制御用乱数と，前記暗号化された複数の部分コンテンツと，から暗号化ディジタルコンテンツを生成する
ことを特徴とする復号方法。
【請求項１４】
請求項１に記載のディジタルコンテンツの暗号化方法であって，
前記分割により得られた部分コンテンツをさらに複数の小領域に分割し，
前記部分コンテンツごとに生成された前記コンテンツ暗号化鍵から前記小領域ごとの小領域暗号化鍵を生成し，
生成された小領域暗号化鍵を用いて，分割により得られた前記小領域を暗号化する
ことを特徴とする暗号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディジタルコンテンツの暗号化，復号方法に係わり，権限に応じた，ディジタルコンテンツの選択的な開示を可能とする技術である。
【背景技術】
【０００２】
近年，情報通信機器の発展によって，従来紙で行われていた業務処理が電子化されるようになってきている。これに伴い，従来紙で行われていた書類の申請・承認などの手続き（業務フロー）も，ネットワークを利用して電子的に行われるようになってきている（例えば，特許文献１）。このようなネットワークを通してやり取りされるディジタルコンテンツには，例えば個人情報など，そのディジタルコンテンツを閲覧するユーザによっては開示が制限されるべき情報も含まれている。このような情報は，一度漏洩してしまうと，損害補償，信頼の失墜など，計り知れない損害を与えることになる。
【０００３】
ここでコンテンツとは，申請書や申込書や会議の議事録などに記載された文章，音声，または映像などの記録，或いはこれらの２つ以上を任意に組み合わせた情報のことであり，特にこれらがディジタルデータとして表現されている場合，ディジタルコンテンツと呼ぶ。ただし，以下の説明においては，ディジタルコンテンツを単にコンテンツという。
【０００４】
従来，ユーザの役割に応じてコンテンツを選択的に開示する場合には，コンテンツをデータベースで一元的に管理し，データベースへのアクセスを制御することによって，権限のないユーザに情報を開示しないようにする方法がとられている。また，ネットワークを通してやり取りされるコンテンツに対しては，暗号化を行うことによって情報を保護する方法が知られている。
【０００５】
従来，ネットワークを介してコンテンツを安全にやり取りするために暗号化を行う場合の議論は，主に，送信者と受信者が1対1である場合について行われている。この場面で用いる暗号化においては，復号結果が正しく復号できたか否かを検証可能な方法が知られている。例えば，サイズの大きいコンテンツを，公開鍵暗号を用いて暗号化する手法としてハイブリット暗号が知られているが，ハイブリット暗号では，以下のような方法によって復号結果が正しく復号されたか否かを検証する方法が知られている。
【０００６】
ハイブリット暗号とは，共通鍵暗号技術における鍵（以下では，コンテンツ暗号化鍵と呼ぶ）を用いてコンテンツの暗号化を行い，コンテンツ暗号化鍵を公開鍵暗号技術における公開鍵を用いて暗号化する方法である。
【０００７】
以下では，暗号化されたコンテンツを暗号化コンテンツと呼び，暗号化コンテンツ内のコンテンツを共通鍵暗号技術によって暗号化された結果をコンテンツ暗号化データ，コンテンツ暗号化鍵を公開鍵暗号技術によって暗号化した結果を鍵暗号化データとそれぞれ呼ぶ。
【０００８】
このハイブリット暗号においては，コンテンツ暗号化鍵の公開鍵によって暗号化する際，暗号化対象のデータのハッシュ値を含めて暗号化処理を行う方法やコンテンツ暗号化鍵の生成時に，ＭＡＣ（Message Authentication Code）用の鍵を同時に生成し，コンテンツに対してＭＡＣの生成を付与し，これを暗号化コンテンツに付与する方法が知られている。これらの方法によって，暗号化コンテンツを復号する際，鍵暗号化データから得られるハッシュ値（或いは，暗号化コンテンツに付与されたＭＡＣ）と，コンテンツ暗号化データを復号した結果から計算することによって得られるハッシュ値（或いは，ＭＡＣ）を比較することによって，復号結果の完全性を検証する方法が知られている。
【０００９】
暗号技術を用いて，コンテンツを権限のないユーザに対して開示しないようにする方法としては，ユーザに配付する鍵を工夫することによって，ひとつのコンテンツを複数のユーザに配付する場合に，特定のユーザにのみコンテンツが開示されるように，暗号化する方法（例えば，非特許文献２）などが知られている。
【００１０】
また，部分暗号化を用いることによって，例えば個人情報などのコンテンツ内の特定部分を，特定のユーザにのみ開示する方法が知られている。例えば，非特許文献１は，汎用的なデータ記述言語であるＸＭＬ(ｅＸｔｅｎｄｅｄ  Ｍａｒｋｕｐ Ｌａｎｇｕａｇｅ)における暗号化の標準であるが，本標準の中では，ＸＭＬなどのコンテンツの一部分だけを暗号化する方法がサポートされており，これを用いることによって，上記の部分暗号化を実現できる。
【００１１】
【非特許文献１】"XML Encryption Syntax and Processing", [online], W3C Recommendation, 10 December, 2002, [平成19年5月24日検索], インターネット<URL:http://www.w3.org/xmlenc-core/>
【非特許文献２】Y. Dodis and N. Fazio, ”Public-key Broadcast Encryption for Stateless Receivers”, Digital Rights Management, DRM’02，LNCS 2696，pp.61−80，2002．
【非特許文献３】M. Abe, R. Gennaro, K. Kurosawa, ”Tag-KEM/DEM:A New Framework for Hybrid Encryption”, [online], Cryptology ePrint Archive: Report 2005/027, [平成19年5月24日検索], インターネット<http://eprint.iacr.org/2005/027>
【発明の開示】
【発明が解決しようとする課題】
【００１２】
前述のとおり，非特許文献２によって，ひとつのコンテンツを複数のユーザに送信した場合に，特定のユーザだけにコンテンツが閲覧できるようにコンテンツを暗号化して送付する方法が知られている。しかしながら，非特許文献２では，コンテンツの一部の開示・非開示を，受信したユーザに応じて，制御する方法については述べられていない。
【００１３】
また，非特許文献１による部分暗号化を用いた場合，コンテンツを複数のユーザに同時に配信した場合に，受信したユーザがその部分を復号するための秘密鍵を持つか否かによって，コンテンツの部分的な選択的な開示を行うことができる。しかしながら，このような部分暗号化を用いた場合には，復号結果が正しく復号されたか否かを検証する方法については知られていない。
【００１４】
復号結果が正しく復号されたか否かの検証を可能とする方法としては，前述のとおり非特許文献３に挙げたような方法が知られているが，このような場合には１対１通信におけるコンテンツの暗号化を対象としており，上記のようなコンテンツを受信したユーザに応じて，その一部を選択的に開示するような暗号化方法に対して，その復号結果が正しく復号できたか否かの完全性検証を行う方法は知られていない。
【００１５】
例えば，非特許文献３に挙げられたように，コンテンツ全体に対するハッシュ値やMACの計算を行い，これを用いて復号時に復号結果の完全性検証を行うような方法では，本発明で述べる受信するユーザの秘密鍵に応じて，復号結果が異なるような暗号化方法には適用することができない。なぜならば，上記のハイブリット暗号のような１対１通信における暗号化では，受信した暗号文全体の完全性を検証すればよいのに対して，ユーザに応じて復号結果が異なるような暗号化においては，完全性を保証すべき範囲が状況に応じて異なる場合があるためである。さらに，受信した暗号化コンテンツ全体の完全性を保証する場合には，非特許文献３に挙げられたようなコンテンツ全体に対するハッシュ値を計算するだけでは，不十分な場合もある。
【課題を解決するための手段】
【００１６】
本発明は，暗号技術による，受信したユーザに応じて，コンテンツを部分的に選択的に開示することと，復号結果が正しく復号されたかの完全性を検証すること，の両立を可能にする技術を提供する。
また，本発明は，コンテンツ内のある同一領域を，権限の異なる複数のユーザが閲覧することを可能とする技術を提供する。
【００１７】
具体的には，コンテンツを，複数の領域に分割し，各領域（以下，部分コンテンツという）ごとに共通鍵暗号技術における鍵（コンテンツ暗号化鍵）を別々に生成し，各部分コンテンツの暗号化を行う。さらに，生成したコンテンツ暗号化鍵一つについて，そのコンテンツを閲覧するユーザの権限毎に予め設定された公開鍵暗号技術の公開鍵を用いて，それぞれ暗号化を行う。コンテンツ暗号化鍵の暗号化の際には，同一権限のユーザが閲覧できる領域がひとつ以上ある場合には，これらのコンテンツ暗号化鍵を連結する。さらに，各々の部分コンテンツの暗号化結果（暗号化部分コンテンツ）を連結したデータ（コンテンツ暗号化データ）のハッシュ値）を求め，上記連結されたコンテンツ暗号化鍵と連結し，連結したデータに対して暗号化処理を行う。以下では，この暗号化結果を部分鍵暗号化データと呼び，これらをまとめたデータを鍵暗号化データとよぶ。
【００１８】
上記の処理によって生成される暗号化処理後のコンテンツ（暗号化コンテンツ）は，コンテンツ暗号化データと鍵暗号化データを含んで構成される。上記暗号化コンテンツは，さらに，コンテンツの区切り情報や，どの領域がどの権限を持つユーザによって閲覧できるか（アクセス制御情報）などの情報をさらに含んでも良い。
【００１９】
上記によって生成されたコンテンツを復号する際には，上記暗号化に用いた公開鍵に対応するひとつ以上の秘密鍵を用いて、前述の鍵暗号化データを復号し、その復号結果から得られるハッシュ値と，コンテンツ暗号化データから再計算によって得られるハッシュ値との比較を行う。比較結果が一致した場合には，前述の鍵暗号化データから得られたコンテンツ暗号化鍵を用いて，コンテンツ暗号化データの復号を行うが，比較結果が一致しなかった場合には，コンテンツ暗号化データの復号を行わない。このとき、復号時に利用する秘密鍵をユーザの権限に対応付けて、生成、配付を行うことによって、ユーザの権限に応じた選択的開示、と上記ハッシュ値を利用したコンテンツの完全性検証が可能となる。
【００２０】
また，例えば，上記ハッシュ値の計算において、公開鍵ごとに，復号可能な部分の暗号化部分コンテンツ（或いは，暗号化前の部分コンテンツ）を連結して，そのハッシュ値を計算するようにしてもよい。このようにすることによって、上記の完全性検証の範囲をユーザごとに必要部分（復号可能な部分）を検証するようにしてもよい。
【００２１】
なお、上記の例では暗号化コンテンツの特徴量としてハッシュ値を用いた場合について述べたが、これはメッセージ認証子（MAC：Message Authentication Code）や電子署名値であってもよい。特に、暗号化コンテンツ全体の完全性を保証したい場合には、上記のハッシュ値を用いた方法よりは電子署名値を用いた方法が有用である。
【００２２】
より具体的な本発明の態様の一つは，ディジタルコンテンツの暗号化方法であって，
暗号化装置が，
ディジタルコンテンツを複数の部分コンテンツに分割し，
共通鍵暗号技術による，上記部分コンテンツごとに異なるコンテンツ暗号化鍵を用いて，各々の上記部分コンテンツを暗号化した暗号化部分コンテンツを生成し，
ユーザ権限ごとに，復号可能な上記暗号化部分コンテンツを割り当て，
割り当てられた上記暗号化部分コンテンツを生成した一つ以上の上記コンテンツ暗号化鍵と，上記暗号化部分コンテンツを復号する際の完全性の検証に用いる，ユーザ権限ごとの上記暗号化部分コンテンツの特徴量の完全性検証用データと，を，公開鍵暗号技術による上記ユーザ権限ごとに異なる公開鍵を用いて暗号化した鍵暗号化データを生成し，
上記暗号化部分コンテンツと上記鍵暗号化データとを含む暗号化ディジタルコンテンツを生成する
ことを特徴とする。
【００２３】
上記暗号化方法において，さらに，
上記暗号化装置が，
上記特徴量として，ひとつ以上の，上記部分コンテンツ，または，上記暗号化部分コンテンツをまとめたデータのハッシュ値を求め，
上記ハッシュ値を上記完全性検証用データとしてもよい。
【００２４】
または，上記暗号化装置が，
上記ユーザ権限ごとに，メッセージ認証子生成用鍵を生成し，
ひとつ以上の，上記部分コンテンツ、または、上記暗号化部分コンテンツと、上記鍵暗号化データとをまとめたデータに，上記メッセージ認証子生成用鍵を作用させて，上記特徴量としてメッセージ認証子を作成し，
上記メッセージ認証子生成用鍵と上記メッセージ認証子とを上記完全性検証用データとしてもよい。
【００２５】
または，上記暗号化装置が，
電子署名生成のための署名生成用秘密鍵と署名検証用公開鍵の生成を行い，
ひとつ以上の，上記部分コンテンツ、または、上記暗号化部分コンテンツと、上記鍵暗号化データとをまとめたデータに，生成した上記署名生成用秘密鍵を作用させて，上記特徴量として，署名値を求め，
生成した上記署名検証用公開鍵と上記署名値とを上記完全性検証用データとしてもよい。
【００２６】
本発明の他の態様は，上記暗号化方法によって暗号化されたディジタルコンテンツの復号方法であって，
復号装置が，
上記ユーザ権限に対して割り当てられた秘密鍵のいずれかを用いて，
当該秘密鍵に対応する公開鍵によって暗号化された鍵暗号化データを復号し，
復号結果から当該公開鍵によって暗号化された，上記ひとつ以上のコンテンツ暗号化鍵を抽出し，
上記抽出されたコンテンツ暗号化鍵によって暗号化された結果である暗号化部分コンテンツの復号を行い，
復号された暗号化部分コンテンツを用いた復号ディジタルコンテンツを生成する
ことを特徴とするものである。
【００２７】
また，本発明のさらに他の態様は，上記暗号化方法で用いる鍵管理方法であって，
鍵管理装置が，
ユーザと，ユーザ権限，それぞれに対し公開鍵暗号技術における秘密鍵と公開鍵の割り当てを行い，
上記ユーザと，上記ユーザ権限との対応関係に基づき，上記ユーザが有するユーザ権限の秘密鍵を当該ユーザの公開鍵を用いて暗号化し，
暗号化した上記ユーザ権限の秘密鍵を鍵更新装置に送付し，
上記鍵更新装置が，
上記ユーザに割り当てられた秘密鍵を用いて，上記暗号化されたユーザ権限の秘密鍵を復号する
ことを特徴とするものである。
【００２８】
また，上記暗号化方法において，上記暗号化装置が，
第一の順序制御用乱数を生成し，
一つ以上の上記コンテンツ暗号化鍵を含む第一のコンテンツ暗号化鍵集合と，上記順序制御用乱数とを連結し，
上記連結したデータを，上記ユーザ権限に対して割り当てられた公開鍵を用いて暗号化し，
上記暗号化結果を，一つ以上の上記コンテンツ暗号化鍵を含む，上記第一のコンテンツ暗号化鍵集合とは異なる，第二のコンテンツ暗号化鍵集合の暗号化に用いる第二の順序制御用乱数としてもよい。
【００２９】
また，上記暗号化方法によって暗号化されたディジタルコンテンツの復号方法として，
復号装置が，
上記ユーザ権限に対して割り当てられた秘密鍵を取得し，
第二の上記順序制御用乱数を，上記取得した秘密鍵を用いて復号し，
上記第二の順序制御用乱数の復号結果から，上記第一の順序制御用乱数と第二のコンテンツ暗号化鍵集合とを抽出し，
上記第二のコンテンツ暗号化鍵集合に含まれるコンテンツ暗号化鍵を用いて，暗号化された部分コンテンツを復号して復号ディジタルコンテンツの生成を行い，
上記第一の順序制御用乱数と，上記暗号化された複数の部分コンテンツと，を用いた暗号化ディジタルコンテンツを生成してもよい。
【００３０】
また，上記暗号化方法において，上記暗号化装置が，
上記分割により得られた部分コンテンツをさらに複数の小領域に分割し，
上記部分コンテンツごとに生成された上記コンテンツ暗号化鍵から上記小領域ごとの小領域暗号化鍵を生成し，
生成された小領域暗号化鍵を用いて，分割により得られた上記小領域を暗号化してもよい。
【発明の効果】
【００３１】
本発明によれば，受信したユーザに応じた，部分コンテンツの選択的な開示と，復号結果の完全性の検証と，の両立が可能となる。
【００３２】
また，本発明によれば，権限の異なる複数のユーザによる，部分コンテンツの閲覧が可能になる。
【発明を実施するための最良の形態】
【００３３】
以下，本発明の実施例を詳細に説明する。
【実施例１】
【００３４】
図１は，第一の実施例におけるコンテンツの流通を例示した図である。図示したように，本システムでは，コンテンツ１２０を暗号化する暗号化装置１０２と暗号化コンテンツ１２１を受信する復号装置Ａ１０３，復号装置Ｂ１０４，復号装置Ｃ１０５がネットワーク１００を介して，送受信を行う。なお，図では暗号化コンテンツ１２１は，ネットワーク１００を介して送受信が行われているが，これと異なっていてもよい。例えば，暗号化コンテンツ１２１を，ＵＳＢメモリなどの外部記憶媒体に記録して，オフラインで復号装置に与えてもよい。また，図では，復号装置Ａ１０３，復号装置Ｂ１０４，復号装置Ｃ１０５の復号装置から構成された図を示したが，復号装置は必ずしも三台である必要はない。さらに，図では暗号化装置１０２には公開鍵Ａ１１１，公開鍵Ｂ１１２，公開鍵Ｃ１１３が，また，復号装置Ａ１０３，復号装置Ｂ１０４，復号装置Ｃ１０５には，それぞれ秘密鍵Ａ１１４，秘密鍵Ｂ１１５，秘密鍵Ｃ１１６が格納されているが，必ずしもこのとおりでなくともよく，暗号化装置１０２に３つ以上の公開鍵を格納してもよい。また，秘密鍵に対しては，セキュリティの観点から，ＩＣカードなどの耐タンパ性を有する媒体を用いて格納し，復号時に復号装置に具備された読取装置を介して、ＩＣカードを供給することによって，復号処理が行えるようにすることが望ましい。
【００３５】
以下では，復号装置Ａ１０３，復号装置Ｂ１０４，復号装置Ｃ１０５，秘密鍵Ａ１１４，秘密鍵Ｂ１１５，秘密鍵Ｃ１１６，及び，公開鍵Ａ１１１，公開鍵Ｂ１１２，公開鍵Ｃ１１３，を区別する必要性がない場合，これらを単に復号装置，秘密鍵，公開鍵と呼ぶ。なお，復号装置と暗号化装置は，必ずしも別々の装置である必要はなく，同一の装置であってもよい。
【００３６】
鍵管理装置１０１は，権限と秘密鍵，公開鍵の対応付けを行い，さらにユーザに権限に応じた秘密鍵の配付を行うとともに，公開鍵の暗号化装置１０２への公開，配付を行う。なお，公開鍵の暗号化装置１０２への公開は，例えば，Ｗｅｂサーバなどを用いて，各ユーザやグループなどの情報，及び，対応する公開鍵の情報が暗号化装置１０２からアクセスできるようにし，暗号化装置１０２は暗号時，或いは，それ以前に暗号化に必要な公開鍵を上記Ｗｅｂサーバから取得できるようにすればよい。また，このとき，Ｗｅｂサーバから取得した公開鍵が，鍵管理装置１０１で管理されているものであることを確認するために，公開鍵に対して公開鍵証明書を発行することが望ましい。
【００３７】
なお，前述のとおり，秘密鍵については，セキュリティ上の観点からは，ＩＣカードなどの耐タンパ性を有する記憶媒体に格納しておくことが望ましい。また，上記のようにＷｅｂサーバを用いて公開鍵を公開する場合でも，Ｗｅｂサーバと鍵管理装置１０１を別々に実装するなど，秘密鍵が直接ネットワーク１００から閲覧できないようにすることが望ましい。
【００３８】
図２は，暗号化装置１０２の構成の概略を示した図である。暗号化装置１０２は，ＣＰＵ２０７と，ＣＰＵ２０７の作業領域として機能するＲＡＭ２０８と，ＨＤなどの外部記憶装置２０９と，当該電子計算機２２０が利用可能な，ＦＤ，ＣＤ−ＲＯＭなどの着脱可能な外部記憶媒体２０１からデータを取り込む読取装置２０５と，ディスプレイなどの出力装置２０５と，マウスやキーボードなどの入力装置２０３と，ネットワークを介して他の装置と通信を行う通信装置２０７と，上記の各構成要素間のデータ通信をつかさどるインターフェイス２０６と，を含んで構成される，一般的な構成を有する電子計算機２２０である。
【００３９】
また，暗号化装置１０２の外部記憶装置２０９には，コンテンツ作成・読込プログラム２２３（以下プログラムを単にＰＧと記す），暗号化ＰＧ２２２，コンテンツ送信ＰＧ２２１が格納される。これらのプログラムは，ＣＰＵ２０７において実行され，それぞれコンテンツ作成・読込処理部２２５，暗号化処理部２２６，及び，コンテンツ送信処理部２２７という処理部が，当該装置上に具現化される。また，暗号化装置１０２の外部記憶装置２０９には，暗号化対象となるコンテンツ１２０，及び，暗号化の結果えられる暗号化コンテンツ１２１，暗号化時に利用する公開鍵２１０が格納される。なお，公開鍵２１０は，必要に応じてひとつ以上，外部記憶装置２０９に格納される。
【００４０】
復号装置も暗号化装置１０２と同様の構成を持つ。ただし，復号装置の外部記憶装置２０９には，暗号化コンテンツ１０６，秘密鍵，及び，コンテンツ受信ＰＧ，コンテンツ送信ＰＧ２２１，復号ＰＧ，復号コンテンツ表示ＰＧが格納される。なお，暗号化装置１０２と同様に，コンテンツ受信ＰＧ，コンテンツ送信ＰＧ，復号ＰＧは，ＣＰＵ２０７により実行され，それぞれコンテンツ受信処理部，コンテンツ送信処理部，復号処理部，復号コンテンツ表示処理部が，当該装置上に具現化される。
【００４１】
鍵管理装置１０１も暗号化装置１０２と同様の構成を持つ。ただし，鍵管理装置１０１の外部記憶装置２０９には，鍵管理ＰＧ，秘密鍵・公開鍵生成ＰＧ，公開鍵配付ＰＧ，秘密鍵配付ＰＧ，公開鍵，秘密鍵が格納される。なお，鍵管理ＰＧ，秘密鍵・公開鍵生成ＰＧ，公開鍵配付ＰＧ，秘密鍵配付ＰＧは，暗号化装置１０２と同様に，ＣＰＵ２０７によって実行され，鍵管理処理部，秘密鍵・公開鍵生成処理部，公開鍵配付処理，秘密鍵配付処理部が，当該装置上に具現化される。
【００４２】
これらのプログラムは，あらかじめ，上記電子計算機２２０内のＲＡＭ２０８または外部記憶装置２０９に格納されていても良いし，必要なときに，上記外部記憶媒体２０１から，または通信媒体（ネットワーク１００，またはネットワーク１００を伝搬する搬送波やデジタル信号など）を介して他の装置から，導入されてもよい。また，プログラムをコード，または，モジュール，ということがある。
【００４３】
なお，鍵管理装置１０１において，秘密鍵は必ずしも鍵管理装置１０１の外部記憶装置２０９に格納しておく必要はない。例えば，秘密鍵を，耐タンパ性を有するデバイス内で生成し，鍵管理装置１０１は，その参照を管理するようにしてもよい。このようにすることによって，鍵管理装置１０１の管理者であっても，直接秘密鍵を操作することが困難になり，セキュリティ上の観点からは望ましい。
【００４４】
図３に本実施例におけるコンテンツ１２０のデータフローの概略を示す。なお，図では復号装置Ａ１０３，復号装置Ｂ１０４を用いて説明を行っているが，暗号化装置１０２，又は，復号装置と暗号化コンテンツ１２１の送受信を行う復号装置は，上記に限らなくてもよい。
３０１：開始。
３０２：暗号化装置１０２内のコンテンツ作成・読込処理部２２５が，コンテンツ１２０の作成，または，読込みを行う。
３０３：暗号化装置１０２内の暗号化処理部２２６が，コンテンツ１２０の暗号化を行い，暗号化コンテンツ１２１を作成する。
３０４：暗号化装置１０２内のコンテンツ送信処理部２２７が，暗号化コンテンツ１２１を暗号化装置Ａ１０３に送信する。
３０５：復号装置Ａ１０３内のコンテンツ受信処理部が，暗号化コンテンツ１２１を受信する。
３０６：復号装置Ａ１０３内の復号処理部が，暗号化コンテンツ１２１を復号し，復号コンテンツ表示イメージ１２２を生成し，出力装置２０４を用いて出力する。
３０７：復号装置Ａ１０３内のコンテンツ送信処理部が，暗号化コンテンツ１２１を復号装置Ｂ１０４に送信する。
３０８：復号装置Ｂ１０４内のコンテンツ受信処理部が，暗号化コンテンツ１２１を受信する。
【００４５】
ステップ３０８において，復号装置Ａ１０３内のコンテンツ受信処理部は，暗号化装置１０２から受信した暗号化コンテンツ１２１を，復号装置Ｂ１０４に送信する。また，ステップ３０６の復号処理部による暗号化コンテンツ１２１の復号において，復号されたコンテンツ（以下，復号コンテンツと呼ぶ）と，復号コンテンツ表示イメージ１２２は，復号コンテンツから開示された部分の情報が漏洩することを厳密に防ぐためには，復号装置内の外部記憶装置２０９内に格納しないこと，格納した場合でも閲覧が終了した後には直ちに削除すること，或いは，表示イメージ上からの復号領域のコピー（内容抽出）や印刷処理を禁止することが望ましい。ただし，コピーや印刷、保存（復号コンテンツの外部記憶装置２０９への格納）処理は，アプリケーションによっては必要となる場合もあるので，本暗号化方法の利用形態としてこれらを禁止するものではない。
【００４６】
なお，図３のステップ３０７では、復号装置Ａ１０３内のコンテンツ送信処理部が，暗号化コンテンツ１２１を他の復号装置Ｂ１０４に送信しているが，これと異なっていてもよい。例えば，複数の復号装置に平行して暗号化コンテンツ１２１を送付したり，或いは，暗号化コンテンツ１２１を，コンテンツ送信処理部を用いて送信したりするのではなく，外部記憶媒体２０１に格納し，復号装置Ｂ１０４に送付してもよい。また，ステップ３０７において，他の復号装置に送信する必要がなければ，復号装置Ａ１０３内の外部記憶装置２０９内で，暗号化コンテンツ１２１，或いは，復号コンテンツを保管して処理を終了する，コンテンツ保管用のデータベースサーバに送信し，暗号化コンテンツ１２１は削除するなどしてもよい。
【００４７】
図４は，ステップ３０３において実行される暗号化処理部２２６が行う、暗号化処理の手順の概略を示している。なお，暗号化処理部２２６への入力は，暗号化対象となるコンテンツ１２０を部分コンテンツに分割するためのコンテンツ区切り情報Ｓ＝（Ｓ［１］，．．．，Ｓ［ｎ］），どの公開鍵がどの部分コンテンツを復号できるかを示すアクセス制御情報ＡＤ＝（ＡＤ［１］，．．．，ＡＤ［ｍ］），及び，暗号化に利用する公開鍵ｐｋ［１］，．．．，ｐｋ［ｍ］（図１では公開鍵Ａ１１１，公開鍵Ｂ１１２，公開鍵Ｃ１１３に対応する）である。
【００４８】
コンテンツ区切り情報とは，暗号化対象となるコンテンツ１２０を，先頭からＡバイト目からＣバイト目，表データであればＡ行Ｂ列，画像データであれば座標表現，ＸＭＬデータであればＸＰａｔｈ式といった表現を用いて，暗号化対象となるコンテンツを部分コンテンツに分割するための情報を記述する。例えば，バイト単位でコンテンツを区切り，その第一の部分コンテンツを１バイト目から２バイト目，１０バイト目から２０バイト目としたい場合には，Ｓ［１］＝｛１，２，１０，２０｝のように指定する。また，対象とするデータがＸＭＬである場合には，上記の｛１，２，１０，２０｝を該当する領域を指し示すＸＰａｔｈ式によって置き換えればよく，暗号化対象となるデータフォーマット，コンテンツ１２０の区切り方法に応じて適宜変更すればよい。アクセス制御情報はＡＤ［ｉ］には，公開鍵ｐｋ［ｉ］によって復号できる部分コンテンツのコンテンツ区切り情報Ｓ＝（Ｓ［１］，．．．，Ｓ［ｎ］）への参照(例えば，コンテンツ区切り情報Ｓ［ｊ］のインデックスｊ（ｊ＝１，．．．，ｎ）)を記述する。
【００４９】
ここでは，説明を簡単にするため，インデックス番号を用いて以下説明を行うが，具体的にはインデックス番号を直接用いる必要はなく，公開鍵，コンテンツ区切り情報，アクセス制御情報，部分コンテンツ等が対応付けられていればよい。例えば，公開鍵ｐｋ［ｉ］のインデックスｉは，鍵管理装置１０１で識別番号を付与し，これを利用するなどすればよい。なお，コンテンツ区切り情報，アクセス制御情報の具体的な記述方法については，ＸＭＬを用いた場合を例に挙げ，図７で説明する。
【００５０】
以下に，図４に示した暗号化処理部２２６が行う処理手順の概略を示す。
４０１：開始。
４０２：コンテンツ１２０をコンテンツ区切り情報Ｓを元に部分コンテンツ（Ｍ［１］，．．．，Ｍ［ｎ］）に分割する。
４０３：各部分コンテンツＭ［ｉ］（ｉ＝１，．．．，ｎ）に対して，共通鍵暗号技術の鍵（コンテンツ暗号化鍵）Ｋ［ｉ］をランダムに生成する。
４０４：各部分コンテンツＭ［ｉ］（ｉ＝１，．．．，ｎ）を，ステップ４０３において生成したコンテンツ暗号化鍵Ｋ［ｉ］を用いて暗号化する（暗号化結果を暗号化部分コンテンツと呼び，Ｄ［ｉ］であらわす）。
４０５：暗号化部分コンテンツＤ［１］，．．．，Ｄ［ｎ］を連結し，連結データに対してハッシュ関数を適用して，連結データの特徴量としてハッシュ値Ｈを計算する。
４０６：アクセス制御情報ＡＤ［ｉ］（ｉ＝１，．．．，ｍ）からインデックス集合（ｊ１，・・・，ｊｕ）を取得，取得したインデックスから対応するコンテンツ暗号化鍵Ｋ［ｊ１］，Ｋ［ｊ２］，．．．，Ｋ［ｊｕ］を取り出し，これらを連結する。さらに前ステップで計算したハッシュ値Ｈをこれに連結し，公開鍵ｐｋ［ｉ］を用いて暗号化する(暗号化結果を鍵暗号化データＥ［ｉ］とよぶ)。
４０７：コンテンツ暗号化データＤ＝（Ｄ［１］，．．．，Ｄ［ｎ］），鍵暗号化データＥ＝（Ｅ［１］，．．．，Ｅ［ｍ］）, アクセス制御情報ＡＤ＝（ＡＤ［１］，．．．，ＡＤ［ｍ］）から，暗号化コンテンツＣを生成する。
４０８：終了。
【００５１】
ステップ４０６における暗号化処理は，公開鍵暗号技術による暗号化であるが，対象となるデータが大きくなる場合には，共通鍵暗号技術を使って暗号化を行い，暗号化に使用した共通鍵を公開鍵暗号技術を使用して暗号化するハイブリット暗号技術を利用するなどすればよい。
【００５２】
また，ステップ４０６において，コンテンツ暗号化鍵だけでなく，アクセス制御情報ＡＤ［ｉ］も連結して公開鍵ｐｋ［ｉ］による暗号化を行い，アクセス制御情報自体を秘匿にしてもよい。アクセス制御情報を秘匿することにより，どのユーザがどの領域を閲覧できるか，を秘匿することが可能になり，より強固な秘密保持が可能になる。
【００５３】
前述の通り，暗号化処理部２２６では，入力として，コンテンツ１２０のほか，コンテンツ区切り情報，アクセス制御情報，暗号化に利用する公開鍵などの情報が必要となる。ここで，コンテンツ区切り情報は，例えば，前述のように先頭からＡバイト目からＢバイト目，或いは，表などのデータであれば，Ａ行Ｂ列，などといった情報を予め設定しておくことが必要となる。これを行うためには，暗号化処理部２２６の実行に先立ち，予め特定のソフトウェアでマウスなどの入力装置を用いてコンテンツ１２０を分割してもよいし，ＸＭＬなどのデータ構造であれば要素単位，或いは，表データであればセル単位，或いは，文書解析ソフトを利用して文書の構文解析を行い，その結果を用いてコンテンツ１２０を分割してもよい。なお，申請書のようにフォーマットが決められているコンテンツ１２０であれば，暗号化処理部２２６を実行する都度，コンテンツ区切り情報を作成する必要はなく，予めフォーマットに対応するコンテンツ区切り情報を作成しておき，暗号化装置１０２の外部記憶装置２０９に格納しておいてもよい。
【００５４】
なお，上記の例に示したように，一つの部分コンテンツが複数の小領域（例えば，１バイト目から２バイト目，１０バイト目から２０バイト目などの物理的に離れた複数の領域からなる場合）を含んで構成してもよい。この場合，暗号化の際に，これらを連結して暗号化処理を行い，復号の際には復号結果から得られたデータから，再度，個々の領域に分割することが必要となる場合がある。この場合には，例えば，暗号化処理を行う前に，ＡＳＮ．１やＸＭＬなどのフォーマットを用いて，予めひとつの部分コンテンツ内に含まれる個々の領域を明確にしておくなどしておけばよい。
【００５５】
また，データの連結を行う際に，単純に各小領域を連結するのではなく，暗号化に用いる共通鍵暗号アルゴリズムとして，ＡＥＳ（Advanced Encryption Standard）などのブロック暗号を用いる場合には，ブロック暗号のデータ処理サイズに着目して，パディングを行ってもよい。例えば，１バイト目から２バイト目，１０バイト目から２０バイト目の二つの小領域からなる領域を，ブロック暗号を用いて暗号化する場合には，パティング処理を行い，暗号処理単位（例えば，１２８ビット（１６バイト）)で，各小領域のデータサイズを調整し，暗号化処理を行う。上記の例では，第一の小領域（１バイト目から２バイト目）には１５バイト分たとえば，“１０．．．．０（各数値はビットを表す）”をパディングし，第二の小領域（１０バイト目から２０バイト目）には，６バイト分“１０．．．．０（各数値はビットを表す）”をパディングし，これらパディングされたデータを連結し，共通鍵暗号による暗号化処理を行う。このようなパディング処理を行うことによって，処理ブロックごとに暗号処理が行われるようになるため，暗号化された小領域の管理が容易になり，ＸＭＬや表データなどでは，暗号化された小領域を元の領域に格納し，復号時に特定の小領域を取り出すことが容易になる。上記では、ブロック暗号を用いた場合について説明したが、ストリーム暗号を用いる場合でも、ストリーム暗号の出力乱数の出力単位に着目して、上記と同様の処理を行ってもよい。
【００５６】
なお，上記のようにひとつの部分コンテンツが複数の小領域を含んで構成される場合には，その領域に割り当てられたコンテンツ暗号化鍵から，例えば，乱数生成器を利用して，小領域暗号化用の小領域暗号化鍵を生成し，これを用いて個々の小領域を暗号化してもよい。このようにすることによって，上記のようなデータの連結を行う必要がなくなる。
【００５７】
なお，ステップ４０１，ステップ４０２では，コンテンツ１２０を部分コンテンツに分割し，その全てを暗号化しているが，部分コンテンツの内，全てのユーザに共通して閲覧させるべき部分が含まれる場合など，場合に応じて，その一部を暗号化しなくてもよい。また，上記のステップ４０５では，暗号化された暗号化部分コンテンツを全て連結して，ハッシュ値Ｈを計算しているが，これと異なっていてもよい。例えば，上記のように部分コンテンツの一部を暗号化しないような場合においては，暗号化部分コンテンツと，暗号化しなかった部分コンテンツとを連結し、アクセス制御情報ＡＤ＝（ＡＤ［１］，．．．，ＡＤ［ｍ］）を含めて，ハッシュ値を計算してもよい。
【００５８】
また，例えば，公開鍵ごとに，復号可能な部分の暗号化部分コンテンツ（或いは，暗号化前の部分コンテンツ）を連結して，そのハッシュ値を計算するようにしてもよい。上記のステップ４０５のように，全ての暗号化部分コンテンツを連結する場合には，暗号化コンテンツ１２１の復号時において，暗号化コンテンツ１２１の全てが復号結果の完全性検証の範囲になるが，対応する秘密鍵によって復号された暗号化部分コンテンツ（及び，暗号化されなかった部分コンテンツ）が復号結果の完全性検証の範囲となる。
【００５９】
このようなハッシュ値の計算方法では，図３に示したように復号装置Ａ１０３から復号装置Ｂ１０４といった，復号装置から復号装置へと暗号化コンテンツ１２１を送信する場合に，不要になった部分コンテンツを削除した場合でも，受信側で復号結果の完全性の検証が可能になり，暗号化コンテンツ１２１のデータサイズを削減できる場合がある。
【００６０】
さらに，上記ではハッシュ値を用いているが，ＭＡＣ用の鍵を生成して，ハッシュ値の代わりにメッセージ認証子（ＭＡＣ：Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）を用いてもよい。なお，ＭＡＣ値を用いる場合においては，ステップ４０５，４０６の処理におけるハッシュ値Ｈの計算を，以下のようにステップ４０５‘，４０６’，４０７’に修正してもよい。
４０５‘：ＭＡＣ生成鍵ＭＫ［１］，．．．，ＭＫ［ｍ］を生成し，アクセス制御情報ＡＤ［ｉ］からインデックス集合（ｊ１，・・・，ｊｕ）を取得，取得したインデックスから対応するコンテンツ暗号化鍵Ｋ［ｊ１］，Ｋ［ｊ２］，．．．，Ｋ［ｊｕ］を取り出し，これらを連結する。さらに生成したＭＡＣ生成鍵ＭＫ［ｉ］をこれに連結し，公開鍵ｐｋ［ｉ］を用いて暗号化する（これをＥ’［ｉ］とする）。
４０６‘：暗号化部分コンテンツ（Ｄ［１］，．．．，Ｄ［ｎ］），及び、ステップ４０５’で計算したＥ［１］，．．．，Ｅ［ｎ］を連結し，連結したデータにＭＡＣ生成鍵ＭＫ［ｉ］を作用させてＭＡＣ  ＭＡ［ｉ］を計算する。
４０７‘：コンテンツ暗号化データＤ＝（Ｄ［１］，．．．，Ｄ［ｎ］），鍵暗号化データＥ＝（Ｅ［１］，．．．，Ｅ［ｍ］）, アクセス制御情報ＡＤ＝（ＡＤ［１］，．．．，ＡＤ［ｍ］），ＭＡＣ  ＭＡ＝（ＭＡ［１］，．．．，ＭＡ［ｍ］）から，暗号化コンテンツCを生成する。
【００６１】
さらに，上記のMACを利用する代わりに，公開鍵暗号技術による電子署名を利用してもよい。
その場合、上記のステップ４０５‘、４０６‘、４０７‘は、以下のようになる。
４０５”：電子署名生成用秘密鍵ｓｋ’、電子署名検証用公開鍵ｖｋ‘を生成し，アクセス制御情報ＡＤ［ｉ］からインデックス集合（ｊ１，・・・，ｊｕ）を取得，取得したインデックスから対応するコンテンツ暗号化鍵Ｋ［ｊ１］，Ｋ［ｊ２］，．．．，Ｋ［ｊｕ］を取り出し，これらを連結する。さらに生成した電子署名検証用公開鍵ｖｋ’をこれに連結し，公開鍵ｐｋ［ｉ］を用いて暗号化する（これをＥ’［ｉ］とする）。
４０６”：暗号化部分コンテンツ（Ｄ［１］，．．．，Ｄ［ｎ］），及び、ステップ４０５’で計算したＥ［１］，．．．，Ｅ［ｎ］を連結し，連結したデータに電子署名生成用秘密鍵ｓｋ‘を作用させて電子署名値  σを計算する。
４０７”：コンテンツ暗号化データＤ＝（Ｄ［１］，．．．，Ｄ［ｎ］），鍵暗号化データＥ＝（Ｅ［１］，．．．，Ｅ［ｍ］）, アクセス制御情報ＡＤ＝（ＡＤ［１］，．．．，ＡＤ［ｍ］），電子署名値σ、電子署名検証用公開鍵ｖｋ’から，暗号化コンテンツCを生成する。
【００６２】
このような，電子署名値を利用した方法を用いることの利点は，前述のハッシュ値を利用した場合と比較して，完全性保証を確認する範囲が広くなることである。ハッシュ値を用いた方法では，ハッシュ値の計算（ステップ４０５）には，鍵暗号化データＥ＝（Ｅ［１］，．．．，Ｅ［ｍ］）がハッシュ値の計算範囲には含まれないが，電子署名を用いた方法では，電子署名値σの計算（ステップ４０６”）に，鍵暗号化データＥ＝（Ｅ［１］，．．．，Ｅ［ｍ］）が含まれる。これは，ハッシュ値を利用した方法では，復号時における完全性検証の範囲に鍵暗号化データＥ＝（Ｅ［１］，．．．，Ｅ［ｍ］）が含まれないのに対して，電子署名値を利用した方法では含まれるという違いが生じる。
【００６３】
電子署名値やハッシュ値を用いて，例えばアクセス制御情報自体も秘匿にしたい場合に，以下のようにすればよい。
【００６４】
すなわち，ハッシュ値を用いる場合に，アクセス制御情報自体を秘匿するためには，暗号化処理部２２６がステップ４０７で生成する暗号化コンテンツ１２１からアクセス制御情報ＡＤを削除し，代わりにステップ４０５においてコンテンツ暗号化鍵Ｋ［ｊ１］，Ｋ［ｊ２］，．．．，Ｋ［ｊｕ］，ハッシュ値Ｈ，だけでなく，アクセス制御情報ＡＤ［ｉ］を含めて暗号化を行い，鍵暗号化データＥ［ｉ］を生成する。電子署名を用いる場合には，ステップ４０５”において、ハッシュ値Ｈの代わりに電子署名検証用公開鍵ｖｋ‘を用い，ステップ４０７’’で，上記ステップ４０７と同じ処理をすればよい。
【００６５】
ハッシュ値Ｈを利用した方法では，暗号化コンテンツを受信するユーザごとに鍵暗号化データＥ［ｉ］を分離することが可能であるが，電子署名を利用した方法では，ユーザごとに鍵暗号化データを分離した場合には，復号時に電子署名値σを用いた検証が失敗するため，復号結果を得ることができない。すなわち，電子署名を用いる場合には，暗号化コンテンツを受信するユーザごとに分割して送付することができないような暗号化方法となる。これは，ハッシュ値の計算では鍵暗号化データＥ＝（Ｅ［１］，．．．，Ｅ［ｍ］）が検証範囲に含まれないため，復号時のハッシュ値（後述するステップ６０６）による検証では、鍵暗号化データの一部が削除されていることを検出できないからである。
【００６６】
なお，ハッシュ値を用いる方法を採用するか、電子署名を用いた方法を採用するかは，本実施形態の用途に応じて決定するべきであり，必ずしも電子署名値を利用した方法が必須であるわけではない。
【００６７】
なお、上記のようにして、アクセス制御情報を秘匿にした場合には、後述する復号処理部の処理と異なり、まず、鍵暗号化データＥ［ｊ］の復号をはじめに行い、その復号結果からアクセス制御情報ＡＤ［ｊ］の抽出をおこなう（ステップ６０１〜ステップ６０８参照）。
【００６８】
なお，上記では，暗号化時に一時的に生成した電子署名生成用秘密鍵を用いているが，例えば，認証局（ＣＡ）から検証用公開鍵に対して証明書の発行を受けた電子署名生成用秘密鍵ｓｋ’、とそれに対応する電子署名検証用公開鍵ｖｋ‘を用いてもよい。
【００６９】
なお，ハッシュ値の計算と同様，上記のＭＡ［ｉ］、(或いは、電子署名値σ)の計算において，復号可能な部分の暗号化部分コンテンツ（或いは，暗号化前の部分コンテンツ）を連結して，ＭＡ［ｉ］、(或いは、σ)を計算してもよい。
【００７０】
図５に示したのは，暗号化処理部が出力する暗号化コンテンツ１２１のデータ構造の概略である。図５に示したように，暗号化コンテンツ１２１は，暗号化部分コンテンツを含んで構成されるコンテンツ暗号化データ部５０５のほか，鍵暗号化データを含んで構成される鍵暗号化データ部５０４，コンテンツ区切り情報５０２，アクセス制御情報５０３を含んで構成される。なお，図５では，鍵暗号化データ部５０４，コンテンツ区切り情報５０２，アクセス制御情報５０３を，模式的にそれぞれ別々の領域として保管するように記述したが，必ずしもこの通りではない。
【００７１】
図５に示したデータ表現は，例えば，ＸＭＬやＡＳＮ．１などのデータフォーマットを用いて表現される。例として，ＸＭＬを用いた具体的なデータフォーマットについて後述する（図７参照）。
【００７２】
図６は，図５に示した暗号化コンテンツ１２１を復号するための復号処理部による処理手順の概略を示している。復号処理部への入力は，暗号化コンテンツ１２１，及び，復号用の秘密鍵ｓｋ［ｊ］である。
６０１：開始。
６０２：暗号化コンテンツ１２１から，コンテンツ区切り情報５０２，アクセス制御情報５０３，鍵暗号化データ部５０４，コンテンツ暗号化データ部５０５，をとりだす。
６０３：アクセス制御情報ＡＤ［ｊ］から，インデックス集合（ｊ１，．．．，ｊｕ）を取得する。
６０４：秘密鍵ｓｋ［ｊ］を用いて，鍵暗号化データＥ［ｊ］を復号し，コンテンツ暗号化鍵Ｋ［ｊ１］，Ｋ［ｊ２］，．．．，Ｋ［ｊｕ］，及び，ハッシュ値Ｈを取得する。
６０５：コンテンツ暗号化データ部のハッシュ値Ｈ‘を計算し，前ステップで取得したハッシュ値Ｈと比較する。
６０６：Ｈ＝Ｈ‘であれば，ステップ６０７へ。そうでなければ，復号失敗としてステップ６０８へ。
６０７：ステップ６０４で取得したコンテンツ暗号化鍵Ｋ［ｊ１］，Ｋ［ｊ２］，．．．，Ｋ［ｊｕ］を用いて，暗号化部分コンテンツＤ［ｊ１］，Ｄ［ｊ２］，．．．，Ｄ［ｊｕ］を復号する。さらに，コンテンツ区切り情報Ｓを元に復号コンテンツＭ‘を生成する。
６０８：終了。
【００７３】
上記では簡単のため秘密鍵ｓｋ［ｊ］がひとつの場合について説明したが，秘密鍵が複数与えられた場合でも，上記の手順（ステップ６０３からステップ６０７）の処理を繰り返すことで，複数の秘密鍵に対する復号結果を得ることができる。このとき，二つの異なる秘密鍵ｓｋ［ｊ１］，ｓｋ［ｊ２］で処理を行った場合に，それぞれの処理結果に矛盾が生じた場合（例えば，同一の暗号化部分コンテンツＣ［１］を復号した結果が異なっている場合など）には，エラーを出力して処理を終了することが望ましい。
【００７４】
前述のとおり，秘密鍵はＩＣカードなどの耐タンパ性を持ったデバイスに保管することが望まれる。この様な場合には，単純に秘密鍵を復号装置の読取装置２０５を通して供給し，復号装置内で上記の復号処理部を処理するのではなく，例えば，ステップ６０４の処理をＩＣカード内で処理するなど，秘密鍵に関わる処理をＩＣカード内で閉じて実行することが望ましい。
【００７５】
また，上記の復号処理部では，秘密鍵ｓｋ［ｊ］によって復号可能な領域全てを復号し復号コンテンツＭ‘を生成しているが，閲覧に必要な領域が一部であれば，その部分のみを復号して復号コンテンツＭ’を生成してもよい。
【００７６】
なお，図４の暗号化処理部２２６の説明において，ハッシュ値Ｈの計算に対して，複数の計算方法がありえることを説明したが，復号処理部側で復号結果の完全性の検証を行うためには，ステップ６０５のハッシュ値Ｈ‘の計算は，ステップ４０５のハッシュ値Ｈの計算と等価である必要がある。
【００７７】
また，図４において，ステップ４０５，４０６をステップ４０５‘，４０６’に変更した場合には，上記のステップ６０４，６０５，６０６を以下のようにステップ６０４‘，６０５’，６０６‘に修正すればよい。
６０４‘：秘密鍵ｓｋ［ｊ］を用いて，鍵暗号化データＥ［ｊ］を復号し，コンテンツ暗号化鍵Ｋ［ｊ１］，Ｋ［ｊ２］，．．．，Ｋ［ｊｕ］，及び，ＭＫ［ｉ］を取得する。
６０５‘：ＭＫ［ｉ］をもちいて暗号化コンテンツ１２１からＭＡＣ  ＭＡ‘［ｉ］を計算し，前ステップで取得したＭＡ［ｉ］と比較する。
６０６‘：ＭＡ［ｉ］＝ＭＡ‘［ｉ］であれば，ステップ６０７へ。そうでなければ，復号失敗としてステップ６０８へ。
【００７８】
ステップ６０４，６０５，６０６の処理では，暗号化コンテンツ１２１のコンテンツ暗号化データを対象としてハッシュ値を計算したが，上記の修正を行った場合には，ＭＡＣの計算対象範囲が，ＭＡ［１］，．．．，ＭＡ［ｍ］を除く，暗号化コンテンツ１２１全体になる。
【００７９】
なお，暗号化処理部の説明で述べたように，ＭＡＣの代わりに電子署名を用いる場合には，以下のようになる。
６０４”：秘密鍵ｓｋ［ｊ］を用いて，鍵暗号化データＥ［ｊ］を復号し，コンテンツ暗号化鍵Ｋ［ｊ１］，Ｋ［ｊ２］，．．．，Ｋ［ｊｕ］，及び，電子署名検証用公開鍵ｖｋ”を取得する。６０５”：電子署名用公開鍵ｖｋ’を用いて暗号化コンテンツ１２１からの電子署名σによる検証を行う。
６０６”：ステップ６０５における電子署名σの検証が成功すればステップ６０７へ。そうでなければ，復号失敗としてステップ６０８へ。
【００８０】
上記のステップ６０４”において、暗号化コンテンツ１２１内に含まれる電子署名検証用公開鍵ｖｋ’と上記鍵暗号化データＥ［ｊ］から得られた電子署名検証用公開鍵ｖｋ”の比較を行い、異なっていれば、処理を終了（ステップ６０８へ）し、そうでなければ次のステップ(ステップ６０５”へ)するようにしてもよい。
【００８１】
図７は，図５に示した暗号化コンテンツ１２１をＸＭＬを用いて表現した場合のデータ表現方法の一例である。
【００８２】
図５に示したように，暗号化コンテンツ１２１は，コンテンツ区切り情報５０２，アクセス制御情報５０３，鍵暗号化データ部５０４からなるヘッダ５０１と，コンテンツ暗号化データ５０５を含んで構成される。
【００８３】
図７に示したように，本フォーマットでは，ＭＲＥＳ要素７０１を含んで構成され，ＭＲＥＳ要素７０１は，共通パラメータを格納するためのＭＲＥＳ＿Ｐａｒａｍ要素７０２，アクセス制御情報５０３，及び，鍵暗号化データ５０４を格納するためのＡｃｃｅｓｓＣｏｎｔｒｏｌＬｉｓｔ７０５，及び，コンテンツの区切り情報５０２を示すＥｎｃｒｙｐｔｅｄＤａｔａＲｅｆｅｒｅｎｃｅＬｉｓｔ要素７１０を含んで構成させる。
【００８４】
ＭＲＥＳ＿Ｐａｒａｍ要素７０２には，暗号ＰＧ２２２，復号ＰＧ内で共通的に使用されるパラメータを表すためのもので，例えば，部分コンテンツの暗号化に用いる共通鍵暗号のアルゴリズムや，コンテンツ暗号化鍵の暗号化に用いる公開鍵暗号のアルゴリズム名などを記述する。図７の例では，コンテンツ暗号化鍵の暗号化アルゴリズムを指定するためにＫｅｙＥｎｃｒｙｐｔｉｏｎＡｌｇｏｒｉｔｈｍ要素７０３，部分コンテンツを暗号化するための暗号化アルゴリズムを指定するためのＤａｔａＥｎｃｒｙｐｔｉｏｎＡｌｇｏｒｉｔｈｍ要素７０４によって記述する。各要素内のＡｌｇｏｒｉｔｈｍ属性は，使用するアルゴリズムの識別子を記述するためのものであり，例えばＡＥＳ−１２８をＣＢＣモードで利用する場合には，
http://www.w3.org/2001/04/xmlenc#aes128-cbc
と記述すればよい。
【００８５】
ＭＲＥＳ＿Ｐａｒａｍ要素７０２には，上記のほか，暗号時，復号時に必要となる様々な情報を記述してよい。たとえば，対象となるファイルのファイル情報（ファイルのフォーマットやエンコード方法などのメタ情報）を記述してもよい。
【００８６】
ＡｃｃｅｓｓｉｂｌｅＣｏｎｔｒｏｌＬｉｓｔ要素７０５は，ＥｎｃｒｙｐｔｅｄＫｅｙＤａｔａ要素７０７とＲｅｆｅｒｅｎｃｅＬｉｓｔ要素７０８からなるＥｎｃｒｙｐｔｅｄＫｅｙ要素７０６を含んで構成される。ＥｎｃｒｙｐｔｅｄＫｅｙＤａｔａ要素７０７は，鍵暗号化データを格納するための要素であり，ＲｅｆｅｒｅｎｃｅＬｉｓｔ要素７０８は，アクセス制御情報を格納するための要素である。ＥｎｃｒｙｐｔｅｄＫｅｙＤａｔａ要素７０７には，鍵暗号化データをＢＡＳＥ６４を用いて符号化した文字列を記述し，属性値であるＫｅｙ＿ｉｄには，秘密鍵を特定する情報を記述する。これには，例えば，鍵管理装置１０１において秘密鍵に対して，一意な識別番号を発行し，これを記述すればよい。
【００８７】
次に，ＲｅｆｅｒｅｎｃｅＬｉｓｔ要素７０８であるが，ここには，復号可能な部分コンテンツのリスト（アクセス制御情報ＡＤ［ｉ］）を記述する。本ＸＭＬを用いた例では，コンテンツ区切り情報に当たるＡｃｃｅｓｓｉｂｌｅＤａｔａＲｅｆｅｒｅｎｃｅ要素７１１の属性値であるＤａｔａ＿ｉｄを指定することにより，ＥｎｃｒｙｐｔｅｄＫｅｙＤａｔａ要素７０７の鍵暗号化データを復号することによって得られるコンテンツ暗号化鍵によって復号できる部分コンテンツのリストを記述する。
【００８８】
ＥｎｃｒｙｐｔｅｄＤａｔａＲｅｆｅｒｅｎｃｅＬｉｓｔ要素７１０は，コンテンツ区切り情報を記述するＥｎｃｒｙｐｔｅｄＤａｔａＲｅｆｅｒｅｎｃｅ要素７１１を含んで構成される。ＥｎｃｒｙｐｔｅｄＤａｔａＲｅｆｅｒｅｎｃｅ要素７１１には，ＲｅｆｅｒｅｎｃｅＬｉｓｔ要素７１２のＸＰａｔｈ要素７１３を用いて，暗号化対象となるデータ（ＸＭＬである場合にはＸＭＬの要素）を指定するためのＸｐａｔｈ式を指定する。また，対象データがＸＭＬデータ以外である場合には，Ｘｐａｔｈ要素７１３を適宜変更し，対象となるデータを指定する。
【００８９】
ＥｎｃｒｙｐｔｅｄＤａｔａＲｅｆｅｒｅｎｃｅ要素７１１のもうひとつの子要素である，ＥｎｃｒｙｐｔｅｄＤａｔａ要素７１４は，ＸＰａｔｈ要素７１３から得られたデータを暗号化した結果を格納するための要素である。なお，暗号化したデータを，ＥｎｃｒｙｐｔｅｄＤａｔａ要素を用いずに，元の部分コンテンツがあった領域に置き換えることによって，格納してもよい。
【００９０】
また，ＥｎｃｒｙｐｔｅｄＤａｔａＲｅｆｅｒｅｎｃｅ要素７１１の属性であるｄａｔａ＿ｉｄには，ＥｎｃｒｙｐｔｅｄＤａｔａＲｅｆｅｒｅｎｃｅ要素７１１をＥｎｃｒｙｏｔｅｄＫｅｙ要素７０６内のＡｃｃｅｓｓｉｂｌｅＤａｔａＲｅｆｅｒｅｎｃｅ要素７０９から指定するために，ＥｎｃｒｙｐｔｅｄＤａｔａＲｅｆｅｒｅｎｃｅ要素７１１を一意に識別するための識別子を，ｉｓ＿ｅｎｃｒｙｐｔｅｄには，その部分コンテンツが復号されているか否かの情報を格納する。
【００９１】
なお，暗号化処理部，復号処理部の処理（図４，図６）において，コンテンツ区切り情報，暗号化コンテンツ，などは配列を用いて表現していたが，これらの配列表現と図７に示したようなＸＭＬ表現における対応関係は，例えば，図７のフォーマットにおいて上から記述された要素から昇順に０，１，．．．とインデックス番号を振っていくことによって，容易に配列表現への変更が可能である。
【００９２】
また，図７は暗号化コンテンツ１２１を表現するためのデータ表現方法の一例であり，要素名などは任意に変更してよい。また，データ表現方法をＸＭＬではなく，例えば，ＡＳＮ．１などの他のデータフォーマットを用いて表現してもよい。
【００９３】
図８は，暗号化コンテンツ１２１が図７に示したようなＸＭＬを用いて構成されている場合に，暗号化コンテンツ１２１から復号コンテンツ表示イメージ１２２を生成する，復号コンテンツ表示処理部が行う処理の概略を示している。
【００９４】
復号処理部は，図６に示した処理を通して暗号化コンテンツ１２１から復号コンテンツ８１３を生成する。生成された復号コンテンツ８１３を，復号コンテンツ変換処理部が，表示イメージソース８１２に変換し，表示イメージソース８１２を表示処理部が，ディスプレイなどの出力装置２０４に出力し、復号コンテンツ表示イメージ１２２を表示する。なお，ＸＭＬを用いて，これをＷｅｂブラウザに表示する場合には，図８に示した，これらの復号コンテンツ８１３，表示イメージソース８１２は，ＸＭＬ，ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）であり，復号コンテンツ変換処理部，表示処理部は，それぞれ，ＸＳＬＴ（ＸＳＬ  Ｔｒａｎｓｆｏｒｍ，ＸＳＬはＥｘｔｅｎｓｉｂｌｅ  Ｓｔｙｅｌｓｈｅｅｔ  Ｌａｎｇｕａｇｅの略）用プログラム，Ｗｅｂブラウザに対応する。なお，復号コンテンツ変換処理部がＸＳＬＴである場合には，変換規則を記述した表示スタイル定義情報８１１としてＸＳＬを利用することが一般的である。
【００９５】
なお，図８では暗号化コンテンツ１２１が，図７に示したようなＸＭＬを用いて表現された場合について示したが，これと異なっていてもよい。例えば，復号コンテンツ７１３がＪＰＥＧなどの画像データ，或いは，ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）ファイルなどの場合には，図８に示した復号コンテンツである場合には，復号処理部内の復号コンテンツ８１３の生成において，生成された復号コンテンツ８１３をＪＰＥＧ，或いは，ＰＤＦファイルを直接出力することによって，復号コンテンツ変換処理部，及び，表示スタイル定義情報８１１は不要であり，生成された復号コンテンツ８１３を直接画像ビューアなどの表示処理部に入力することによって，復号コンテンツ表示イメージ１２２を得ることができる。
【００９６】
なお，表示処理部における復号コンテンツ表示イメージ１２２の閲覧において，セキュリティ上の観点からは，表示処理部が復号コンテンツの保存，或いは，復号コンテンツ表示イメージ１２２上からのコピーを防止することが望ましい。
【００９７】
本実施形態では，コンテンツを，予め権限に対応付けて生成された秘密鍵，公開鍵２１０を用いて，暗号化し，ユーザは，各自の権限に応じて配付された秘密鍵を用いて暗号化コンテンツの復号を行う。
【００９８】
この構成において，ユーザに対して鍵の割り当てを行う最も簡単な方法は，鍵管理装置１０１において，権限ごとに秘密鍵，公開鍵２１０を発行し，秘密鍵をＩＣカードに格納し，それぞれの権限を持ったユーザに配付するとともに，公開鍵２１０をＷｅｂサーバなどを用いて公開することである。この場合，ユーザの権限の変更などが生じた場合には，新たにＩＣカードを発行してユーザに配付する，或いは，ユーザからＩＣカードを回収することによって，各ユーザに対して適切な権限の元で復号ＰＧ８０１が実行されることが望まれる。
【００９９】
図９は，鍵管理装置１０１における鍵管理方法の概略の一例を示している。上述した権限ごとに秘密鍵を生成し，それぞれをＩＣカードなどの耐タンパ性を有するデバイスに格納し，ユーザに配付する単純な鍵管理では，権限ごとにＩＣカードの発行，回収を行う必要がある。そこで，図９に示したような鍵管理を行うことによって，ＩＣカードの発行，回収の手間を軽減することが可能となる。以下に，図９に示した鍵管理の概略を述べる。
【０１００】
図９に示したごとく，本鍵管理方法では，鍵管理装置１０１と鍵更新装置９０５を含んで構成され，これらをネットワーク１００を介して接続する。また，鍵管理装置１０１には，図９に示したごとく，ユーザと権限の管理を行うために，本鍵管理方法では，権限鍵管理テーブル９０１，ユーザ鍵管理テーブル９０２と，ユーザ鍵と権限鍵を対応付ける対応テーブル９０３を保管する。これらのテーブルは，例えばデータベースなどを用いて，鍵管理装置１０１の外部記憶装置２０９に保管する。
【０１０１】
なお，鍵更新装置９０５は，暗号化装置，復号装置，鍵管理装置１０１と同様に，図２に示した一般的な構成を有する電子計算機を用いて実装できる。また，鍵更新装置９０５内の外部記憶装置２０１には，鍵更新ＰＧ，受信ＰＧ，暗号化された秘密鍵が格納される。なお，鍵更新ＰＧ，受信ＰＧ，は，暗号化装置１０２と同様に，ＣＰＵ２０７によって実行され，鍵更新処理部，受信処理部という形で具現化される。
【０１０２】
前述したとおり，セキュリティ上の観点からは鍵管理装置１０１内の秘密鍵に関する情報は，直接ネットワーク１００から閲覧できないようにすることが望まれる。そのため，本鍵管理方法において，鍵更新装置９０５は，暗号化装置，復号装置とは，ファイアオールなどを用いて，異なるネットワーク上に設置することが望ましい。
【０１０３】
図９に示したごとく，鍵管理装置１０１は、秘密鍵・公開鍵生成ＰＧを実行して権限Ａ，権限Ｂ，権限Ｃに対し，それぞれ，秘密鍵Ａ１１４，公開鍵Ａ１１１，秘密鍵Ｂ１１５，公開鍵Ｂ１１２，及び，秘密鍵Ｃ１１６，公開鍵Ｃ１１３を生成する。
【０１０４】
また，ユーザα，ユーザβ，ユーザγに対して，秘密鍵α９１４，公開鍵α９１１，秘密鍵α９１５，公開鍵β９１２，秘密鍵γ９１６，公開鍵γ９１３を生成する。
【０１０５】
鍵の配付を行う場合には，予めユーザの秘密鍵をＩＣカードなどの耐タンパ性のあるデバイスに格納して，各ユーザに配付する（以下では，ＩＣカードに秘密鍵を格納したものとして，説明する）。
【０１０６】
次に，ユーザに権限に対応した鍵を配付する場合には，以下のようにする。
【０１０７】
例えば，図９に示したようにユーザαに対して，権限Ａ，権限Ｃを割り当てる場合には，鍵管理装置１０１内の秘密鍵配布ＰＧを実行して、対応する秘密鍵Ａ１１４，秘密鍵Ｃ１１６をユーザαの公開鍵α９１１で暗号化して，ネットワーク１００を介して，鍵更新装置９０５に送付する。
【０１０８】
鍵更新装置９０５では，受信処理部が鍵管理装置１０１から送付された暗号化された暗号化された秘密鍵Ａ１１４，秘密鍵Ｃ１１６を受信し，さらに鍵更新処理部が，これをＩＣカード内の秘密鍵α９１４を用いて復号，ＩＣカードに秘密鍵Ａ１１４，秘密鍵Ｃ１１６を格納する。このとき，秘密鍵α９１４による復号は，ＩＣカード内で行うことが，セキュリティ上の観点からは望ましい。なお，上記の処理において，ユーザαに失われた権限がある場合には，上記の暗号化された秘密鍵とともに，不要になった（失われた権限に対応する）秘密鍵の情報を鍵管理装置１０１が送付し，この情報を元に鍵更新処理部が上記秘密鍵のICカードへの格納処理に加えて，ICカード内の不要な鍵を削除する処理を行うことが望ましい。
【０１０９】
また，ユーザ権限に割り当てられた秘密鍵を送付する際には，ＩＣカード内の個人鍵を利用した認証など，配付対象となるユーザの認証を行なうことが望ましい。
【０１１０】
なお，以上の説明ではユーザ鍵は，公開鍵暗号技術を用いていたが，ユーザ鍵は鍵管理装置１０１とユーザの所持するＩＣカード間の通信に限って利用することにすれば，ユーザ鍵に共通鍵暗号技術の秘密鍵を用いてもよい。この場合，上記の鍵管理装置１０１の鍵配布処理部による暗号化，及び，鍵更新装置９０５における鍵更新処理部によるＩＣカード内での権限鍵の復号は，共通鍵暗号技術における秘密鍵を用いて行う。
【０１１１】
以上のようなネットワークを介してユーザに秘密鍵の配付をすることによって，ＩＣカードの送付や回収といった物理的な媒体を直接渡す手間が少なくなる。また，ユーザには，各ユーザ固有のＩＣカードを一枚発行すればよいだけであるため，権限の変化が生じた場合でも，ＩＣカード内の権限鍵の書き換えを行うだけでよいため，ＩＣカードの再発行や回収といった管理者の手間を軽減できる。
【０１１２】
なお，図９では，鍵管理方法の一例として，権限，ユーザが，それぞれ３の場合について取り上げていたが，権限，ユーザの数は，鍵管理装置１０１で管理するユーザ数，権限数に応じて変化する。図９の鍵管理に示した鍵管理方法は，本実施形態における暗号化方法を実現するための一例であり，これと異なった鍵管理方法を用いてもよい。
【実施例２】
【０１１３】
本実施形態の適用先の一つとして，ワークフローシステムやワンストップサービスなどがあげられる。
【０１１４】
この場合，閲覧するユーザは，承認，或いは，登録などの予め定められた順序に従って暗号化コンテンツ１２１を閲覧することになる。このような場合，ワークフローシステムの管理サーバなどを用いて，閲覧者の閲覧順序を管理することが一般的であるが，本実施形態における暗号化方法を用いることによって，暗号化による順序関係の保護を行うことができる。暗号化を用いて閲覧者の順序関係を制御することによって，例えばサーバの制御ミスによる，誤送信や不正行為によって，正規の順序とは異なる順序でフローが実行されることを防ぐことができる。さらに，このような暗号化による順序関係の保護によって，不正な順序での処理ができなくなり，サーバを必要としない，ワークフローシステムを実現するために役立つ。
【０１１５】
以下に，本実施形態を用いた閲覧順序の制御方法を述べる。なお，以下ではｉ番目に閲覧するユーザをＵｉとし，ユーザＵｉは公開鍵ｐｋ［ｉ］に対応する秘密鍵ｓｋ［ｉ］を所持しているものとする。なお，実施例１で用いた図１〜３，５，７〜９を本実施例でも参照する。
【０１１６】
図１０は，順序関係を制御するための暗号化処理部２２６が行う処理の概略を示している。図１０に示したように，本処理部は，ステップ４０５までは，図４に示したステップ４０１からステップ４０４と同じである。
４０５  ：暗号化部分コンテンツＤ［ｉ］を連結し，ハッシュ値Ｈを計算する。
１００２：ｉ←ｍ＋１とし，順序制御用乱数Ｒ［ｍ＋１］←ＮＵＬＬとする。
１００３：ｉ＞０であれば，ステップ１００４へ。そうでなければ，ステップ１００６へ。
１００４：アクセス制御情報Ａ［ｉ］からインデックス集合（Ｊ１，．．．，Ｊｕ）を取得し，取得したインデックスから対応するコンテンツ暗号化鍵Ｋ［Ｊ１］，．．．，Ｋ［Ｊｕ］を取り出し，これらを連結する。さらに，ハッシュ値Ｈ，及び，Ｒ［ｉ］をこれに連結し，公開鍵ｐｋ［ｉ］を用いて暗号化を行い，鍵暗号化データＥ［ｉ］を生成する。
１００５：ｉ←ｉ−１とし，さらにＲ［ｉ］←Ｅ［ｉ］とし，ステップ１００３へ。
１００６：コンテンツ暗号化データＤ＝（Ｄ［１］，．．．，Ｄ［ｎ］），鍵暗号化データＥ＝Ｅ［１］, アクセス制御情報ＡＤ＝（ＡＤ［１］，点，ＡＤ［ｍ］）から，暗号化コンテンツＣ１を生成する。
１００７：終了。
【０１１７】
ステップ１００２において，順序制御用乱数Ｒ［ｍ＋１］の初期値をＮＵＬＬとしているが，例えば，乱数生成器を用いて生成した乱数データを初期値としてもよい。
【０１１８】
ステップ１００４において，順序制御乱数Ｒ［ｉ］がコンテンツ暗号化鍵，ハッシュ値と連結されて，公開鍵暗号ｐｋ［ｉ］により暗号化される。順序制御用乱数Ｒ［ｉ］は，その前のループ（ステップ１００３からステップ１００５）の暗号化結果Ｅ［ｉ＋１］であるから，これによって，公開鍵ｐｋ［ｉ］に対応する秘密鍵ｓｋ［ｉ］による復号の終了後でなければ，Ｒ［ｉ］（＝Ｅ［ｉ＋１］）を得ることができなくなり，これによって，暗号化による閲覧順序の制御が可能となる。
【０１１９】
また，このとき，順序制御用乱数Ｒ［ｉ］に対して，コンテンツ暗号化鍵だけでなく，アクセス制御情報ＡＤ［ｉ］も連結して暗号化し，アクセス制御情報自体をｉ番目にコンテンツを閲覧するユーザ以外には秘匿にしてもよい。
【０１２０】
なお，上記の暗号化処理部の処理では，ステップ４０５においてハッシュ値Ｈの計算を行っている。ここで，ステップ４０５でのハッシュ値Ｈの処理を省略し，ステップ１００４において，順序制御用Ｒ［ｉ］と暗号化部分コンテンツＤ［ｉ］を連結したものに対してハッシュ値の計算を行ってもよい。
【０１２１】
また，実施例１で述べたようにハッシュ値の変わりにＭＡＣを用いる，或いは，ハッシュ値の計算の際に，暗号化部分コンテンツＤ［ｉ］全てを単純に連結させるのではなく，一部を暗号化前の部分コンテンツＭ［ｉ］で置き換えるなどしてもよい。
【０１２２】
以上に説明した順序関係を制御する暗号化方法の暗号化処理部に対して復号処理部が行う処理の概略を図１１に示す。なお，復号するユーザの秘密鍵をｓｋ［ｊ］とする。
１１０１：開始。
１１０２：暗号化コンテンツＣｊから，コンテンツ暗号化データＤ＝（Ｄ［１］，．．．，Ｄ［ｎ］），鍵暗号化データＥ＝Ｅ［ｊ］, アクセス制御情報ＡＤ＝（ＡＤ［１］，．．．，ＡＤ［ｍ］）を取得する。
１１０３：アクセス制御情報ＡＤ［ｊ］からインデックス集合（ｊ１，．．．，ｊｕ）を取得する。
１１０４：秘密鍵ｓｋ［ｊ］を用いて，鍵暗号化データＥ［ｊ］（すなわち，順序制御用乱数Ｒ［ｊ-1］）を復号し，コンテンツ暗号化鍵Ｋ［ｊ１］，Ｋ［ｊ２］，．．．，Ｋ［ｊｕ］，ハッシュ値Ｈ，及び，順序制御用乱数Ｒ［ｊ］を取得する。
１１０５：コンテンツ暗号化データＤのハッシュ値Ｈ‘を計算し，前ステップで取得したハッシュ値Ｈと比較する。
１１０６：Ｈ＝Ｈ‘ならば，ステップ１１０７へ。そうでなければ，復号失敗としてステップ１１０９へ。
１１０７：コンテンツ暗号化鍵Ｋ［ｊ１］，Ｋ［ｊ２］，．．．，Ｋ［ｊｕ］を用いて，暗号化部分コンテンツＤ［ｊ１］，Ｄ［ｊ２］，．．．，Ｄ［ｊｕ］を復号し，復号コンテンツＭ’を生成する。
１１０８：Ｅ［ｉ＋１］←Ｒ［ｊ］とし，コンテンツ暗号化データＤ＝（［１］，Ｄ［２］，．．．，Ｄ［ｎ］），アクセス制御情報ＡＤ＝（ＡＤ［１］，．．．，ＡＤ［ｍ］），鍵暗号化データＥ（＝Ｅ［ｉ＋１］）から，暗号化コンテンツＣｉ＋１を生成する。
１１０９：終了。
【０１２３】
以上のステップ１１０８において，本復号処理部では，図６とは異なり，復号コンテンツＭ‘を生成（ステップ１１０７）するだけでなく，次に閲覧するユーザのための暗号化コンテンツＣｉ＋１を生成する。
【０１２４】
なお，以上の図１０，図１１では，ｉ番目に閲覧するユーザが一人（権限がひとつ）の場合を示したが，権限の異なる複数人（これを，Ｕｉ（１），．．．，Ｕｉ（ｓ）とする）いてもよい。この場合，単純には，ステップ１００４における処理を異なる公開鍵ｐｋ（１）［ｉ］，．．．，ｐｋ（ｓ）［ｉ］を用いて暗号化し，複数の鍵暗号化データＥ（１）［ｉ］，．．．，Ｅ（ｓ）［ｉ］を生成し，これらを連結したものを順序制御用乱数Ｒ［ｉ−１］とすればよい。
【０１２５】
また，上記のようにｉ番目に権限の異なる複数のユーザがいる場合，順序制御用乱数Ｒ［ｉ］に対して，秘密分散法を用いることによって，ｓ人のユーザの内ｔ人が閲覧した（復号ＰＧを実行した）場合に，ｉ＋１番目のユーザが閲覧できるようにする，閾値処理を行うこともできる。さらに，閾値分散処理の代わりに，ＡＯＮＴ（Ａｌｌ  Ｏｒ  Ｎｏｔｈｉｎｇ  Ｔｒａｎｓｆｏｒｍ）を用いれば，ｓ人全てが閲覧した（復号ＰＧを実行した）後で，ｉ＋１番目のユーザが閲覧するようにすることもできる。
【０１２６】
秘密分散法，ＡＯＮＴには，いくつの方法が提案されているが，例えば以下のような文献が知られている。
A. Shamir, “How to share a secret”, Communications of the ACM, 22(11)， pp. 612-613， November, 1979.
R. Rivest, “All-Or-Nothing encryption and the package transform”, Fast Sortware Encryption `97，Lecture Notes in Computer Science, LNCS. 1267， pp. 210-218， Springer-Verlag, 1997.
閾値処理を用いてｓ人のユーザの内ｔ人が閲覧した場合に，ｋ＋１番目のユーザが閲覧できるようにするためには，以下のようにする。
【０１２７】
まず，前述のｓ暗号化処理部２２６のステップ１００４の実行前に，ｉ＝ｋの場合には，順序制御用乱数Ｒ［ｉ］に対し，閾値秘密分散法を適用し，分散順序制御乱数Ｒ（１）［ｉ］，．．．，Ｒ（ｓ）［ｉ］を生成する。ここで，Ｒ（１）［ｉ］，．．．，Ｒ（ｓ）［ｉ］は，閾値分散処理を用いて，ｓ個の順序制御用乱数の内ｔ個から，元の順序制御用乱数Ｒ［ｉ］が復元できるようにしておく。これらの分散順序制御用乱数Ｒ（１）［ｉ］，．．．，Ｒ（ｓ）［ｉ］に対して，それぞれステップ１００４を実行し，Ｅ（１）［ｉ］，．．．，Ｅ（ｓ）［ｉ］を生成する（このとき，分散順序制御用乱数Ｒ（１）［ｉ］，．．．，Ｒ（ｓ）［ｉ］に対して，連結されるコンテンツ暗号化鍵は，必ずしも全ての分散順序制御用乱数Ｒ（１）［ｉ］，．．．，Ｒ（ｓ）［ｉ］に対して同じである必要はない）。
【０１２８】
なお，上記の閾値分散法の処理を適用する場合に，適用元とのなる順序制御用乱数のサイズが大きい場合には，その一部に対して閾値分散処理を適用してもよい。
【０１２９】
次に，ステップ１００５において，Ｅ（１）［ｉ］，．．．，Ｅ（ｓ）［ｉ］を連結して，その結果を次の順序制御用乱数Ｒ［ｉ］として，処理を続ける。
【０１３０】
復号の際には，ｋ−１番目の暗号化コンテンツＣｋ−１の復号の結果得られる鍵暗号化データ  ＥをＥ（１）［ｉ］，．．．，Ｅ（ｓ）［ｉ］に分割し，ステップ１１０８の処理において，それぞれに対して暗号化コンテンツＣｋ（１），．．．，Ｃｋ（ｓ）を生成すればよい。
【０１３１】
また，ｋ＋１番目のユーザＵｋ＋１は，ｋ番目のユーザＵｋ（１），．．．，Ｕｋ（ｓ）のうちｔ人から受信したそれぞれの暗号化コンテンツから鍵暗号化データＥ（１）［ｉ］，．．．，Ｅ（ｓ）［ｉ］を抽出し，秘密分散法を用いて順序制御用乱数Ｒ［ｉ］を復元し，復号処理部のステップ１００４を実行すればよい。
【０１３２】
なお，暗号処理部において，ｉ＝ｋの場合のステップ１００５において，Ｅ（１）［ｉ］，．．．，Ｅ（ｓ）［ｉ］を連結して，その結果を次の順序制御用乱数Ｒ［ｉ］とする必要ななく，Ｅ（１）［ｉ］ ，．．．，Ｅ（ｓ）［ｉ］に対して，それぞれ，順序制御用乱数Ｒ（１）［ｉ］，．．．，Ｒ（ｓ）［ｉ］し，以下それぞれのＲ（１）［ｉ］，．．．，Ｒ（ｓ）［ｉ］に対して処理を続け，適当な段階でＥ（１）［ｉ］，．．．，Ｅ（ｓ）［ｉ］を連結して，その結果を次の順序制御用乱数Ｒ［ｉ］として，処理を続けてもよい。
【０１３３】
上記の処理によって，暗号化を利用した順序関係の制御が可能となり，意図しない（或いは，不正な）処理によって，正規の処理順序とは異なる処理順序によって処理が実行されることを防ぐことができる。このような，暗号化による順序関係の制御は，前述のようにワークフローシステムやワンストップサービスなどにおいて，有用である。
【０１３４】
例えば，クレジットカードの申込書を処理するためのワークフローシステムを考える。クレジットカードの申込書には，申込者の氏名，年齢，自宅住所，勤務先などのほか，年収や銀行の口座番号などが記載されている。クレジットカード発行のための手続きは，これらの情報を参照し，記載内容が間違っていないかといった申請内容の確認，年収情報などを参照した与信審査，そして，銀行の口座番号を参考にした引き落とし口座の登録などの処理を行う必要がある。また，例えば記載内容を確認処理においては，個人情報保護の観点から，確認処理を細分化し，あるユーザには，個人の氏名だけを，また別のユーザには勤務先だけを確認させるなどすることによって，申込者個人を特定させないことが望まれる。
【０１３５】
本実施形態を用いれば，上記の処理を，各処理において必要な情報のみを開示し，かつ，不正な(或いは誤った)処理により，正規以外の処理順序で申請書の処理業務が実行されることを防ぐことができる。
【０１３６】
なお，上記ではクレジットカードの申込書を例としてあげたが，本実施形態による適用例はこれにとどまることはなく，ワークフローシステムやワンストップサービスなどさまざまなシーンに適用できる。
【図面の簡単な説明】
【０１３７】
【図１】各実施例におけるネットワークの構成の概略を例示する図である。
【図２】各実施例における暗号化装置の概略を例示する図である。
【図３】各実施例におけるデータフローの概略を例示する図である。
【図４】第一の実施例における暗号化処理の概略を例示する図である。
【図５】各実施例における暗号化コンテンツの構造の概略を例示する図である。
【図６】第一の実施例における復号処理の概略を例示する図である。
【図７】各実施例における暗号化コンテンツの実現方法を例示する図である。
【図８】各実施例における暗号化コンテンツの表示方法を例示する図である。
【図９】各実施例における鍵管理方法の一例を例示する図である。
【図１０】第二の実施例における暗号化処理の概略を例示する図である。
【図１１】第二の実施例における復号処理の概略を例示する図である。
【符号の説明】
【０１３８】
Ｍ：コンテンツ，ｎ：部分コンテンツの個数，Ｃ：暗号化コンテンツ，Ｍ［ｉ］：ｉ番目の部分コンテンツ，Ｃ［ｉ］：ｉ番目の暗号化部分コンテンツ，Ｅ：暗号化コンテンツ内の鍵暗号化データ部（Ｅ＝Ｅ［１］，．．．，Ｅ［ｍ］）），Ｅ［ｉ］：ｉ番目の鍵暗号化データ，Ｄ：暗号化コンテンツ内のデータ暗号化部，Ｈ，Ｈ‘：暗号化コンテンツのハッシュ値，ｐｋ［ｉ］：公開鍵，ｓｋ［ｉ］：秘密鍵，ＡＤ：アクセス制御情報（ＡＤ＝（ＡＤ［１］，．．．，ＡＤ［ｍ］）），ＡＤ［ｉ］：ｉ番目のアクセス制御情報，Ｓ:コンテンツ区切り情報（Ｓ＝（Ｓ［１］，．．．，Ｓ［ｎ］）），Ｓ［ｉ］：ｉ番目のコンテンツ区切り情報。
【図１】
2009049731.tif 000003
【図２】
2009049731.tif 000004
【図３】
2009049731.tif 000005
【図４】
2009049731.tif 000006
【図５】
2009049731.tif 000007
【図６】
2009049731.tif 000008
【図７】
2009049731.tif 000009
【図８】
2009049731.tif 000010
【図９】
2009049731.tif 000011
【図１０】
2009049731.tif 000012
【図１１】
2009049731.tif 000013