(57)【要約】【課題】  少なくとも２つのパラメータでもって各階層のデータを特定できる階層構造を有する画像データを暗号化する際に、アクセス鍵の管理を容易にしつつ、複数のユーザによるアクセス鍵の交換に対しても耐性の高い画像データの暗号化技術を提供する。【解決手段】  レイヤ及び解像度それぞれのレベルで階層を特定する階層構造を有する画像データを暗号化する際、最高解像度及び最高レイヤに対するアクセス鍵Ｋを設定し、そこからレベルが下がる方向に従い、一方向性の関数を利用してアクセス鍵を生成していく。このとき、或る階層のアクセス鍵は、その上位に位置するレイヤ及び解像度のアクセス鍵のいずれからも生成可能にする。そして、各階層のデータについては、該当するアクセス鍵に従って暗号化する。【選択図】  図４
2004297778.tif 000002
【特許請求の範囲】
【請求項１】
画像データを鍵情報を用いて暗号化する画像データ暗号化方法であって、
階層的な構造を持ち、各階層のデータが少なくとも２つのパラメータで特定でき、且つ、それぞれのパラメータが多段階のレベルで表現される画像データを入力する入力工程と、
入力した画像データに対し、前記２つのパラメータが共に最大レベルで特定される階層のデータに対する鍵情報を設定する設定工程と、
該設定工程で設定された鍵情報を起源とし、前記２つのパラメータで特定される階層のデータ用の鍵情報を、当該階層のデータより１つ高位に位置する階層用の鍵情報に従い、一方向性の所定の関数を用いて鍵情報を生成する生成工程と、
前記設定工程で設定された鍵情報、及び、前記生成工程で生成された鍵情報に従い、前記入力工程で入力した該当する階層のデータを暗号化する暗号化工程と
を備えることを特徴とする画像データ暗号化方法。
【請求項２】
前記生成工程で生成される鍵情報は、前記２つのパラメータの高レベルに対して生成された鍵情報のいずれからも生成可能とすることを特徴とする請求項１に記載の画像データ暗号化方法。
【請求項３】
前記入力工程で入力する画像データはＪＰＥＧ２０００による圧縮符号化データであって、前記パラメータには、タイル、プレシンクト、コンポーネント、解像度、レイヤが含まれることを特徴とする請求項１又は２に記載の画像データ暗号化方法。
【請求項４】
前記生成工程は、公開鍵暗号化方法に従って前記鍵情報を生成されることを特徴とする請求項１乃至３のいずれか１項に記載の画像データ暗号化方法。
【請求項５】
前記生成工程は、楕円曲線状の剰余乗算によって前記鍵情報を生成することを特徴とする請求項１乃至３のいずれか１項に記載の画像データ暗号化方法。
【請求項６】
前記生成工程で用いられる一方向性の関数は、ハッシュ関数であることを特徴とする請求項１乃至３のいずれか１項に記載の画像データ暗号化方法。
【請求項７】
画像データを鍵情報を用いて暗号化する画像データ暗号化装置であって、
階層的な構造を持ち、各階層のデータが少なくとも２つのパラメータで特定でき、且つ、それぞれのパラメータが多段階のレベルで表現される画像データを入力する入力手段と、
入力した画像データに対し、前記２つのパラメータが共に最大レベルで特定される階層のデータに対する鍵情報を設定する設定手段と、
該設定手段で設定された鍵情報を起源とし、前記２つのパラメータで特定される階層のデータ用の鍵情報を、当該階層のデータより１つ高位に位置する階層用の鍵情報に従い、一方向性の所定の関数を用いて鍵情報を生成する生成手段と、
前記設定手段で設定された鍵情報、及び、前記生成手段で生成された鍵情報に従い、前記入力手段で入力した該当する階層のデータを暗号化する暗号化手段とと
を備えることを特徴とする画像データ暗号化装置。
【請求項８】
請求項１乃至６のいずれか１項に記載の画像データ暗号化方法を実行するコンピュータプログラム。
【請求項９】
請求項８に記載のコンピュータプログラムを格納することを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像データの暗号化技術に関するものである。
【背景技術】
【０００２】
画像データなどを秘匿して伝送するために、画像データ全体の暗号化やスクランブルなどが行なうことが行われている。これは、予め画像データ全体に対して暗号鍵を用いて暗号化し、この暗号鍵に対応する復号鍵の情報を有するコンピュータだけが正しく復号可能とする技術でもある。
【０００３】
一方、画像データが複数のタイルから構成される場合、タイル毎に再生の可否を制御する目的で、タイル毎に異なる暗号鍵を用いて暗号化処理が行われる。
【０００４】
また、階層構造を有する画像データの場合、その階層構造に応じて画像データの再生を制御する目的で、階層構造毎に異なる暗号鍵を用いて暗号化処理が行われる。
【０００５】
ただし、その階層は複数のパラメータによって定まる場合がある。例えば、ＩＳＯ／ＩＥＣ  ＪＴＣ  １／ＳＣ  ２９／ＷＧ１にて標準化されているＪＰＥＧ２０００規格と呼ばれる技術においては、１つのタイルに対して、その解像度、及びビットプレーン毎の符号の集合であるレイヤ、色成分などを表すコンポーネント、タイルにおける位置を表すプレシンクトの４つのパラメータが決まることによって１つの階層構造データが定義される（非特許文献１））。更に、これらを合わせた場合として、複数のタイルから構成され、更に夫々のタイルが階層構造を有する画像データの場合、タイルと階層構造に応じた画像データの再生を制御する目的で、タイル中の階層構造に対して異なる暗号鍵を用いて暗号化処理が行われる。
【０００６】
このように、タイル、及び階層構造に対して異なる暗号鍵を用いて暗号化することによりタイル、及び階層構造毎に画像データの再生を制御することが可能である。しかしながら、暗号化された画像データの所定のタイル、及び階層構造を復号処理するためには、暗号化処理に用いた暗号鍵をすべて管理すると共に、復号処理の際に適当な復号鍵を供給する必要があり、暗号化する側及び復号する側のそれぞれの鍵情報の管理が繁雑となり易い。
【０００７】
それに対して、鍵情報の管理を容易にするためにタイル、コンポーネント、プレシンクトに関する鍵を独立に生成し、解像度とレイヤに関する鍵は前後の解像度及びレイヤの鍵に依存して生成する手法がある。これは、タイルやコンポーネント、プレシンクトはランダムにアクセスされる可能性が高いので、各パラメータを識別する識別子に応じて鍵を生成し、解像度やレイヤに関しては高解像度または高レイヤの画像を再現するためには必ず低解像度または低レイヤの画像データへのアクセスが必要なため、高解像度または高レイヤのデータを暗号化する鍵から１つ下の低解像度または低レイヤのデータを暗号化する鍵を生成することにより管理すべき鍵を削減するという手法である。
【０００８】
この手法では、１つの画像に関するマスター鍵をＫとしたとき各タイル、コンポーネント、プレシンクト毎の鍵Ｋiが一方向性関数を用いて、下記のように生成される。ここで、一方向性関数とはｙ＝Ｈ(ｘ)においてｘからｙを求めることは容易であるが、ｙからｘを求めることは困難な関数である。一方向性関数としてはＭＤ５ (Message Digest 5), ＳＨＡ−１ (Secure Hash Algorithm 1) 等のハッシュ関数やＤＥＳ(Data Encryption Standard)やＡＥＳ(Advanced Encryption Standard)等の暗号化関数が知られている。
Ｋi＝Ｈ(Ｋ||i)              （１）
ここで、H()は一方向性関数を、ｘ||ｙはｘとｙの連接を表し、ｉは各タイル、コンポーネント、プレシンクトを識別するための値（識別情報）である。
【０００９】
また、各解像度及びレイヤに対する鍵Ｋiは下記のように生成される。
Ｋi＝Ｈ(Ｋi-1)              （２）
ここで、ｉは対象となる解像度またはレイヤを表す値であり、Ｋi-1は１段階前の解像度（注目している解像度よりも高い解像度）または１段階前のレイヤ（注目しているレイヤよりも高いレイヤ）に対して用いた鍵である。
【００１０】
よって、指定されたタイル及び階層化データに対する暗号鍵Ｋtcprlとし、指定されたタイル、コンポーネント、プレシンクト、解像度、レイヤに対する鍵をKT、KC、KP、KR、KLと表現すると、
Ｋtcprl＝Ｈ(KT||KC||KP||KR||KL)          （３）
として生成される。
【００１１】
以上から、対象となるタイル、及び階層構造に異なる暗号鍵を用いて暗号化することによりタイル、及び階層構造に対して画像データの再生を制御することが可能となる。
【非特許文献１】標準勧告書（ＩＳＯ／ＩＥＣ  １５４４４−１）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかし、このようにタイル、及び階層構造に対して異なる暗号鍵を用いて暗号化した場合、解像度及びレイヤに関しては以下のユーザの結託による鍵の漏洩という問題が発生する。
【００１３】
例えば、図１に示すようにユーザＡに最高解像度に対する鍵ＫＲnと最低レイヤに対する鍵ＫＬ0を渡し、ユーザＢに最低解像度に対する鍵ＫＲ0と最高レイヤに対する鍵ＫＬmを渡す。通常、ユーザＡは式（２）の関係からＫＬ0以上の高レイヤデータにはアクセスできず、ユーザＢはＫＲ0以上の高解像度データにはアクセスできない。
【００１４】
すなわち、図１ではユーザＡはR0L0,R1L0,・・・,RnL0しかアクセス（暗号復号）できず、ユーザBはR0L0,R0L1,・・・,R0Lmしかアクセスできない。
【００１５】
ところが、もしユーザＡ，Ｂが互いに鍵ＫＬnとＫＲnを教えあうと、各々の鍵はそれ以下の解像度またはレイヤの鍵全てを生成できるので、結局のところ、ユーザＡ，Ｂは互いに全ての解像度とレイヤの画像を再現できることになる。すなわち、図１ではR0L0からRnLmまでの全ての範囲をアクセスできることになる。
【００１６】
上記例は極端な例かもしれないが、インターネットという不特定多数のユーザが互いに通信できる環境にある場合、上記のような不測の事態がおこり得ると言わねばならない。
【００１７】
本発明はかかる問題点に鑑みなされたものであり、少なくとも２つのパラメータでもって各階層のデータを特定できる階層構造を有する画像データを暗号化する際に、アクセス鍵の管理を容易にしつつ、複数のユーザによるアクセス鍵の交換に対しても耐性の高い画像データの暗号化技術を提供しようとするものである。
【課題を解決するための手段】
【００１８】
この課題を解決するため、例えば本発明の画像データ暗号化方法は以下の工程を備える。すなわち、
画像データを鍵情報を用いて暗号化する画像データ暗号化方法であって、
階層的な構造を持ち、各階層のデータが少なくとも２つのパラメータで特定でき、且つ、それぞれのパラメータが多段階のレベルで表現される画像データを入力する入力工程と、
入力した画像データに対し、前記２つのパラメータが共に最大レベルで特定される階層のデータに対する鍵情報を設定する設定工程と、
該設定工程で設定された鍵情報を起源とし、前記２つのパラメータで特定される階層のデータ用の鍵情報を、当該階層のデータより１つ高位に位置する階層用の鍵情報に従い、一方向性の所定の関数を用いて鍵情報を生成する生成工程と、
前記設定工程で設定された鍵情報、及び、前記生成工程で生成された鍵情報に従い、前記入力工程で入力した該当する階層のデータを暗号化する暗号化工程とを備える。
【発明の効果】
【００１９】
本発明によれば、少なくとも２つのパラメータでもって各階層のデータを特定できる階層構造を有する画像データを暗号化する際に、アクセス鍵の管理を容易にしつつ、複数のユーザによるアクセス鍵の交換に対しても耐性の高い画像データの暗号化技術が提供できるようになる。
【発明を実施するための最良の形態】
【００２０】
以下、添付図面に従って本発明に係る実施形態を説明する。
【００２１】
＜全体構成の説明＞
実施形態におけるシステム概要例を図６に示す。図中、６０はインターネットであって、６１は例えばデジタルカメラやイメージスキャナ、フィルムスキャナ等で撮像した画像データを圧縮符号化＆暗号化処理を行う装置である。６２は画像データを受信し、復号する装置、６３は復号する際に必要となる暗号化解除鍵を記憶している認証サーバある。装置６１乃至６３はパーソナルコンピュータ等の汎用装置で構わない。処理の流れを簡単に説明すると、次の通りである。
【００２２】
装置６１では、所望とする画像データを圧縮符号化及び暗号化処理を行い、インターネット６０を介して配布する。配布するのは装置６１が直接行ってもよいし、適当なサーバを介して配布しても構わない。ただし、暗号化されている関係で、その解除するために必要な鍵情報を、その画像データを特定する情報（例えばＩＤ）と共に認証サーバ６３が有するＤＢに登録しておく。画像復号装置６２は所望とする画像を受信し、復号を行ない閲覧するものであるが、暗号化されている画像データを閲覧するには、認証サーバ６３にその画像を特定する情報を通知して、暗号化解除鍵情報を要求する。この結果、暗号化解除鍵情報が認証サーバ６３より受信するので、それを用いて暗号化を解除し、復号再生する。
【００２３】
実施形態では説明を簡単なものとするため、暗号化対象の画像（ファイル）はＩＳＯ／ＩＥＣ ＪＴＣ１／ＳＣ２９／ＷＧ１ １０９１８−１において標準化されている、通称ＪＰＥＧ２０００と呼ばれる圧縮符号化方式によって符号化されたデータであるものとして説明するが、ＪＰＥＧ２０００に本発明が限定されることなく、ＪＰＥＧなど種々の圧縮符号化の方式を適応可能であることは以下の説明から明らかになるであろう。
【００２４】
ここで、装置６１の構成について説明する。
【００２５】
装置６１は上記の通り、パーソナルコンピュータ等の汎用情報処理装置で良いが、その具体的な構成例は例えば図３に示す通りである。
【００２６】
図中、３０２は装置全体の制御を司るＭＰＵであり、３０３は主記憶装置（ＭＰＵ３０２のワークエリア及びＯＳ、実施形態における暗号化処理プログラムをロードするＲＡＭ、及び、ブートプログラムやＢＩＯＳ等を記憶しているＲＯＭで構成される）である。３０４はＯＳ、暗号化処理プログラムをはじめ、各種ファイルを記憶するハードディスク装置（ＨＤＤ）である。３０５はビデオメモリ、ＭＰＵ３０２の制御に従ってそのメモリに描画するコントローラ、並びに表示装置であるモニタ３０６にメモリに描画されたデータをビデオ信号として出力するビデオコントローラである。モニタ３０６は装置に一体となっていても構わないが、外付けでも構わない。３０７はシステムバスである。
【００２７】
３０８はプリンタ３１６を接続するためのインタフェースであり、３０９はＣＤＲＯＭドライブ、３１０はＤＶＤドライブ、３１１はフロッピー（登録商標）ドライブである。３１２はマウス（登録商標）等のポインティングデバイス３１３、キーボード３１４を接続するためのインタフェースであり、３１５はイメージスキャナ３１７を接続するためのインタフェースである。更に、３１８はインターネット６０に接続するためのネットワークインタフェースである。
【００２８】
上記構成において、実施形態では、例えばスキャナ３１７で原稿を読取り暗号化を行ない、先に説明したように、その結果を配布するものである。但し、暗号化対象はイメージスキャナ３１７に限らず、ＣＤＲＯＭ等の記憶媒体から読出した画像データや、或いは、デジタルカメラを接続し、それで撮像した画像でも構わない。要するに暗号化対象の画像データは如何なる手段で入力したものでも良い。
【００２９】
＜暗号鍵の説明＞
上記構成において、実施形態では、暗号化対象となる画像データは、ＩＳＯ／ＩＥＣ  ＪＴＣ  １／ＳＣ  ２９／ＷＧ１にて標準化されているＪＰＥＧ２０００規格と呼ばれる技術でもって圧縮符号化された画像データファイルに対して行うものとする。この圧縮技術そのものは、公知であるので、その詳述は省略するものとする。
【００３０】
ＪＰＥＧ２０００においては、１つのタイルに対して、その解像度、及びビットプレーン毎の符号の集合であるレイヤ、色成分などを表すコンポーネント、タイルにおける位置を表すプレシンクトの４つのパラメータが決まることによって１つの階層構造データが定義される。本実施形態では、このような階層構造を持った圧縮画像データに対して暗号化するものである。
【００３１】
図７は或るタイルに対して２回ウェーブレット変換を行ったときの周波数成分を示している。１回目のウェーブレット変換を行った際、ＨＬ１、ＨＨ１、ＬＨ１そしてＬＬ１の４つのサブバンドのデータが得られるが、２回めではＬＬ１に対して同様の処理を行う。ＬＬ成分は常に１つしか発生しないため、添え字は付けないで表現することが多い。ここで、ＬＬ成分のデータは低周波成分のデータであり、もともとのタイルサイズに対して縦横それぞれ１／４の画像でもある。つまり、図示のＬＬ成分はタイルで示された画像の１／４の解像度（最低解像度）のデータであると言える。このＬＬ成分のデータに対し、｛ＨＬ２＋ＨＨ２＋ＬＨ２｝のデータを用いて復号することで、１段階高い解像度の画像が再現でき、更に｛ＨＬ１＋ＨＨ１＋ＬＨ１｝で示されるデータを用いて再現することで元々のタイルサイズと同じ最も高い解像度の画像を再現できる。すなわち、ＬＬ、｛ＨＬ２＋ＨＨ２＋ＬＨ２｝、｛ＨＬ１＋ＨＨ１＋ＬＨ１｝の順に解像度が徐々に高いデータとなっていると言える。実際には、このウェーブレット変換後、量子化処理を行ない、個々の成分内の値を少ないビット数に変換し、そしてエントロピー符号化を行うことになる。
【００３２】
図８はその量子化後のデータを示している。図示では簡単にするため、量子化後のデータとして４×４のデータを示している。この例では、量子化インデックスが３個存在しており、それぞれ＋１３、−６、＋３の値を持っている。エントロピ符号化では、この中の最大値ＭＡＸを求め、次式により最大の量子化インデックスを表現するために必要なビット数Ｓを計算する。
S ＝ ceil(log2( abs(MAX) ))
ここでｃｅｉｌ（ｘ）はｘ以上の整数の中で最も小さい整数値を表す関数である。
【００３３】
図８では、最大の係数値は１３であるのでＳは４であり、シーケンス中の１６個の量子化インデックスは同図（ｂ）に示すように４つのビットプレーンを単位として処理が行われる。最初にエントロピ符号化部１１４は最上位ビットプレーン(同図ＭＳＢで表す)の各ビットをエントロピ符号化（本実施の形態では２値算術符号化）し、ビットストリームとして出力する。次にビットプレーンを１レベル下げ、以下同様に対象ビットプレーンが最下位ビットプレーン（同図ＬＳＢで表す）に至るまで、ビットプレーン内の各ビットを符号化し符号出力部に出力する。なお上記エントロピ符号化時において、各量子化インデックスの符号は、上位から下位へのビットプレーン走査において最初（最上位）に符号化されるべき非０ビットが検出されるとそのすぐ後に当該量子化インデックスの正負符号を示す１ビットを続けて２値算術符号化することとする。これにより、０以外の量子化インデックスの正負符号は効率良く符号化される。
【００３４】
図示の場合、ビット０乃至３の４つのプレーンが生成されるが、高位のビットプレーンほど支配的であることがわかる。これは、ちょうど最高位（図示ではビット３のプレーン）が先に示した低解像度のデータに対応し、ビット０のプレーンが最高解像度のデータを再現するために利用されるものに対応している。このように、エントロピ符号化されたエントロピ符号を所定の符号量となるように集めた処理単位（ビットプレーン）をレイヤと呼ぶ。複数のレイヤを構成することにより、復号時に種々の符号量に対応した画像を再生することが可能となる。
【００３５】
さて、ＪＰＥＧ２０００による圧縮符号化データのコードストリームは、先ず、メインヘッダがあって、上記の解像度やレイヤ、更には色成分などを表すコンポーネント、プレシンクトの４つのパラメータで示される１以上のタイルパートと呼ばれるデータが後続することになる。タイルパートは、更にタイルパートヘッダと少なくとも１以上のコードブロックを内包する。
【００３６】
本実施形態でのコードブロックは、それがどの解像度レベルであって、どのレイヤであるかを示す情報がタイルパートヘッダに示されており、これを参照して利用する暗号化鍵情報を特定し、暗号化を行う。
【００３７】
図２においては、ＫＲＬijは、所定の解像度とレイヤに対応する階層化データを表すRiLjへのアクセス鍵情報を表わすものとする。ある解像度とレイヤに対応するアクセス鍵KRLijに対して、以下のように鍵は更新される。
KRLi-1,j＝F(a,KRLij)                （４）
KRLi,j-1＝F(b,KRLij)                （５）
ただし、F()は鍵aまたはbを用いる一方向性関数であり、
F(a,F(b,K))＝F(b,F(a,K))            （６）
という関係が成り立つものである。
【００３８】
以上の関係式（６）は、前述したＭＤ５ (Message Digest 5), ＳＨＡ−１ (Secure Hash Algorithm 1) 等のハッシュ関数やＤＥＳ(Data Encryption Standard)やAES(Advanced Encryption Standard)等の暗号化関数では実現されない。
【００３９】
そこで、この関係を満足させるため、下記演算によって実現した。ここで、Ｎ＝(ｐ−１)(ｑ−１)（p,qは素数）であり、a,bは公開されているとする。
(K^b)^a mod N＝(K^a)^b mod N      （７）
ここで「ｘ^y」はｘのｙ乗を示し、「x mod y」 はｘをｙで除算した際の余りを返す関数である（「＾」は「mod」よりも演算結合強度が強い）。
【００４０】
式（７）はＲＳＡ暗号と同じ原理であり、ａ，ｂが公開されていても、その秘密鍵に相当するａ’,ｂ’がわからなければ逆演算はできず一方向性が保証されるものである。
【００４１】
これにより、従来方式の課題である下記の問題が解決される。
【００４２】
ｉ．最高解像度かつ最低レイヤのデータにアクセスできるユーザＡにアクセス鍵KRLn0を渡す。ユーザＡは公開鍵aを用いて式（４）からアクセス鍵KRLn-1,0〜KRL00を生成できる。しかし、もう１つの公開鍵bを用いて式(５)を実行してもレイヤ方向の逆演算はＦ()の一方向性から実現できず、より高レイヤのアクセス鍵を得ることはできない。
【００４３】
ii．また、最低解像度かつ最高レイヤのデータにアクセスできるユーザＢにアクセス鍵KRL0ｍを渡す。ユーザＢは公開されている鍵bを用いて式（５）からアクセス鍵KRL0,m-1〜KRL00を生成できる。また同様に、F()の一方向性からユーザＢは高解像度に対するアクセス鍵は生成できない。
【００４４】
iii．ここで、ユーザＡとユーザＢが結託し、互いのアクセス鍵KRLn0とKRL0mを教えたとする。しかし、KRLn0とKRL0mは前述した範囲の鍵を生成できるのみであり、他の鍵を生成することはできない。以上の原理を式（７）を用いて図示すると図４のようになる。
【００４５】
図４は、次のような意味である。或るタイルの最大解像度、最高レイヤ（ビット０のプレーン）に対しアクセス鍵Ｋを設定する。このアクセス鍵Ｋを起源として、図示矢印方向（一方向性）のアクセス鍵情報を生成していく。
【００４６】
この結果、例えばユーザＡが鍵「Ｋ＾ｍｂ」（最大解像度、最低レイヤ（ＭＳＢのビットプレーン）を取得し、ユーザＢが鍵「Ｋ＾ｎｂ」を取得し、互いにその鍵情報を交換したとしても、鍵Ｋを生成すること実質的に不可能とすることができる。図１で説明した従来技術に対して遥かに、複数ユーザの結託に対して高い強度が保持されるのがわかる。
【００４７】
上記処理を解像度をレイヤに関するアクセス鍵の生成及び暗号化部は図５に示す構成で実現できる。なお、同図の各処理部はソフトウェアの機能として読み替えることができることに注意されたい。
【００４８】
ここでは簡単のためタイルやコンポーネントなどの部分は階層化されていないとする。
【００４９】
まず、画像データ５００が入力されると階層化部５０１において、画像５００は、解像度とレイヤに関して図２に示すような高解像度から低解像度、高レイヤから低レイヤの種々のデータに階層化される。ここでは上から順にRnLm,Rn-1Lm,RnLm-1,Rn-2Lm,・・・が出力されるとする。
【００５０】
一方、最高解像度かつ最高レイヤの階層化データRnLmに対するアクセス鍵情報をＫとする。この鍵はＫ＝ＫＲＬnmであり、それを用いてRnLmを暗号化部５０２において暗号化する。暗号化部５０２で用いる暗号化手法はここでは限定しないが、ＤＥＳやＡＥＳなど種種の暗号化手法を利用することができる。その結果RnLmを暗号化したCRnLmが出力される（CRiLjはRiLjを暗号化したデータであることを示す）。
【００５１】
鍵ＫはＲ鍵変換部５０３において式（４）による解像度方向の鍵の更新が行われ、Ｌ鍵変換部５０４において式（５）によるレイヤ方向の鍵の更新が行われる。よって、鍵Ｋ＝ＫＲＬnmからＲ鍵変換部においてＫＲＬn-1,m＝Ｋ＾ａが計算され出力される。同様に、鍵Ｋ＝ＫＲＬnmからＬ鍵変換部においてＫＲＬn,m-1＝Ｋ＾ｂが計算され出力される。ただし、ａ，ｂはあらかじめ変換部５０３、５０４に設定されているとする。これを用いて、階層化部５０１から出力されたRn-1Lm,RnLm-1の符号化データに対して暗号化部５０２において暗号化が行われる。
【００５２】
以降、解像度方向には前の解像度に対する鍵を入力としてＲ鍵変換部において式（４）の演算が、レイヤ方向には前のレイヤに対する鍵を入力としてＬ鍵変換部において式（５）の演算が実行され、鍵が更新される。その更新された鍵を用いて以降の階層化構造データに対して暗号化が行われる。ただし、斜め方向のデータに対する鍵の計算、例えばＫＲＬn-1,m-1に相当する図４におけるＫ^(ａ＋ｂ)の計算は、前の解像度方向の鍵Ｋ＾ｂを入力としてＲ鍵変換部で計算しても、前のレイヤ方向の鍵Ｋ＾ａを入力としてＬ鍵変換部で計算しても同じ結果が得られるのでどちらでも良い。
【００５３】
これに対する復号処理は、図５の暗号化部５０２を用いた暗号手法に対する復号手段である復号化部に置き換えた構成によって実現できることは明らかである。
【００５４】
上記実施形態では簡単のためタイルやプレシンクト、コンポーネントは階層化されていないとしたが、タイルやプレシンクト、コンポーネントに対して階層化されていても式（１）によって各アクセス鍵KT,KC,KPが生成され、式（３）に代わって下記の式によって全体のアクセス鍵が生成できる。
Ｋtcprl＝H(KT||KC||KP||KRL)          （８）
ここで、KRLは本実施形態で示した解像度とレイヤに対する鍵である。
【００５５】
また、タイルやプレシンクト、コンポーネントなどの他の成分に対しても相関を持たせる場合、タイルやプレシンクト、コンポーネントに対して各々鍵c,d,eを定め、多次元の階層化データとして同様の手法によりユーザの結託を防止することもできる。
【００５６】
また、実施形態では式（４）〜（６）の関係を成り立たせる手法として式（７）を示したが、それに限らないことは明らかである。例えば、楕円曲線状のべき乗剰余演算などでも良い。
【００５７】
また、第１の実施形態では解像度とレイヤに対するアクセス鍵の更新を公開鍵ａ，ｂによって示したが、
KRLi-1,j＝E(KRLij)                （９）
KRLi,j-1＝G(KRLij)                （１０）
E(G(K))＝G(E(K))                  （１１）
の関係を満たすものでも良い。
【００５８】
以上説明したように本実施形態によれば、複数のタイル及び階層構造を有する画像データに対して、タイル及び階層構造毎に異なる暗号鍵を用いて暗号化した場合にも、複数ユーザによる鍵情報の交換による漏洩、或いは、不正アクセスが解決され、かつ複数の鍵を管理する必要がないようにできることになる。
【００５９】
なお、実施形態では、図４に示す２軸に対し、解像度、レイヤを適用した例を説明したが、一方の軸、或いは、両方に対し、タイル、プレシンクト、コンポーネントを割り当てても構わない。但し、タイルやプレシンクトの場合には、多段階レベルは、その位置情報として扱うことになろう。
【００６０】
＜第２の実施形態＞
通信回線やDVDなどの大容量記録メディアを通じて、文書や画像データなどのデジタルコンテンツが流通する機会が増加している。このようなコンテンツ配信サービスにおいては、コンテンツを配信するコンテンツプロバイダが存在する。コンテンツプロバイダでは、複数のコンテンツのそれぞれに対して異なるアクセス制御情報の設定を行う必要があり、コンテンツごと、ユーザごと、さらにはユーザのアクション（例えば、閲覧、コピーなど）ごとに異なる鍵による暗号化処理を行うことが想定されている。この処理において、鍵生成、鍵保持、鍵配信などの鍵情報に関わるマネージメントはコンテンツプロバイダにおいて非常に負荷がかかることが多い。そこで鍵管理に関して、セキュリティレベルを低下させることなく、より効率的な管理方法に関する研究が行われている。そのいくつかに関して説明を行う。特に、第1の実施例はハッシュ関数を用いない場合を説明したが、本実施例では一方向性関数としてハッシュ関数を用いる手法に関し説明を行う。
【００６１】
[木構造管理方法]
木構造管理方式はDVDプレイヤーなどのオフラインでのコンテンツ再生機器において利用されており、ユーザの無効化を行うのに適している。この方式では、暗号化データを正当なユーザのみが復号できるように、暗号化に用いた鍵情報と暗号化コンテンツと同時に配信、もしくはメディアに格納しておく。各ユーザに対して適切な組み合わせで鍵情報を事前に配布しておく必要があるが、木構造を用いることで膨大なユーザ鍵情報を効率的に管理することができる。
【００６２】
この管理方法においては、方式の良し悪しを決定するにあたり次のような指標が存在する、１）コンテンツと同時に配信される鍵情報のデータサイズ、２）ユーザを保持する事前配布された鍵情報のデータサイズ、３）コンテンツプロバイダが管理する必要のある鍵情報のデータサイズ、以上の３つの指標がそれにあたる。オンライン型配信サービスの場合にはネットワークトラフィックを左右する１）の指標が重視されるであろうが、コンテンツプロバイダの立場から考えると３）の指標の管理コストが最も重視されることになる。このようにシチュエーションにより指標の重みが変化することに留意しなければならない。
【００６３】
木構造管理方法の代表的なものとしては、コンテンツ配信モデルがある（例えば、「デジタルコンテンツ保護用管理方式」SCIS2001, pp.213-218）。このモデルにおいては、図２２のような鍵配布用の木構造を用いており各ノードには異なる鍵が配置される。ユーザ鍵（論文中ではＤＶＤなどのプレイヤーが保持する鍵を想定）は末端のノード（葉ノード）と同一視され、ルートから末端ノードまでのすべての鍵データを保持するものと仮定している。本モデルでは更新が頻繁に起きることを想定しており、このように配置することで鍵無効化の効率を改良している。
【００６４】
[階層的鍵管理方式]
一方、階層的鍵管理方法で想定している鍵管理は各ノードに鍵が配置されている点では同様であるが、ユーザは末端ノードだけでなく、ルートを含めたすべてのノードに位置する鍵が配布される点が大きく異なる（例えば、C. H. Lin. “Dynamic key management schemes for access control in a hierarchy” Computer Communications, 20:1381-1385, 1997、または、J.-C. Birget, X. Zou, G. Noubir, B. Ramamurthy, “Hierarchy-Based Access Control in Distributed Environments ” in the Proceedings of IEEE ICC, June 2001等）。
【００６５】
また、図２２のようなｎ分木の構造ではなく、図２３や図２４のようなアクセス構造を想定しており、局所的に見ると図２５のような関係になっている箇所が見受けられる。この場合、ノードｎ１に配置されている鍵とノードｎ２に配置されているの両者からノードｎ３の持つべき鍵を生成できるような仕組みが提供されていなければならない。この仕組みを提供する方式として次の２つの方法が提案されている。
【００６６】
[(1) User multiple keying]
各ノードが複数の鍵を保持する方式であり、親ノードは子ノードのすべての鍵を保持するように構成されている。図２６はその一例であり、各ノードに配布される鍵データの集合が記載されている。例えば{k5}が配布されているノードの親ノードには 鍵データk5が含まれていることがわかる。同様に他のノードにおいても親ノードには子ノードの鍵データがすべて含まれていることがわかる。
【００６７】
[(2) One-way function based keying schemes]
Lin らの提案（非特許文献２）を拡張させた方式であり、一方向性ハッシュ関数を用いることで、各ノードが保持する鍵情報を削減することができる。但し、図２５のように複数の親ノードの鍵データから子ノードの鍵データを生成する際には、次のような操作が必要である。この操作を図２７を用いて説明する。
【００６８】
図２７において、鍵データk1またはk2からk3を生成するには
k3:= F(k1,n3) XOR r13
k3:= F(k2,n3) XOR r23
という演算を行う。ここでXORはビットごとの排他的論理和である。また F(  ) は一方向性ハッシュ関数であり、詳細は後述する。n3 は鍵データk3が関連付けられたノードの識別子、r13,r23 はそれぞれ，ノードn1(鍵データk1)とノードn3により関連付けられたランダムデータ、 ノードn2(鍵データk2)とノードn3により関連付けられたランダムデータであり、共に公開されているデータである。
【００６９】
関数 F(  ) は F(k_i, n_j) = g^{k_i+n_j} mod p (ただし、p は素数， gは原始元) で構成されており、上記r12,r13はF(k1,n3) XOR r13 = F(k2,n3) XOR r23 を満たすように生成される。
【００７０】
前述したように、階層的鍵管理方式において局所的に親ノードが２つ以上存在する場合（図２５は２つの親ノードが存在している例である）においては、異なる親ノードから同じ鍵データを生成するのが、先に説明した第１の実施形態である。
【００７１】
しかし、（１）User multiple keyingにおいては、各ノードが多くの鍵を持ち合わせていなければならず、階層が深くなるにつれて、つまり全体ノード数に比例して保持すべき鍵データが増加する問題が存在し、（２）One-way function based keying schemes においては、一方向性ハッシュ関数を用いることで各ノードが保持する鍵データ量を減らしているが、r12,r13 などの公開ランダムデータを別途保持する必要があり、（１）と同様に階層が深くなるにつれて保持すべきデータが増加するという問題が存在する。
【００７２】
さらに、（２）においては、一方向性ハッシュ関数にべき乗演算が用いられている。落とし戸付きハッシュ関数による構成も考えられるが、いずれにせよ、べき乗演算が必要な演算が含まれており、計算コストが膨大である。特にＰＤＡなどの演算リソースの少ないデバイスにおいては鍵計算に多くの時間を費やすこととなり、結果としてデータ復号時にインタラクティブな処理ができなくなる可能性がある。
【００７３】
そこで、本第２の実施形態では、この問題点に鑑み、階層的鍵管理方法と同様のアクセス構造を持つ鍵管理方式を少ない計算量で安全に構成することを可能にする例を説明する。
【００７４】
図９は、本発明の第２の実施形態に係る鍵情報処理装置の構成を概略的に示すブロック図である。
【００７５】
なお、本発明の実現にあたって、図９に示される全ての機能を使用することは必須ではない。
【００７６】
図９において、鍵情報処理装置１００は、公衆回線等のモデム１１８、表示部としてのモニタ１０２、ＣＰＵ１０３、ＲＯＭ１０４、ＲＡＭ１０５、ＨＤ（ハードディスク）１０６、ネットワークのネットワーク接続部１０７、ＣＤ１０８、ＦＤ（フレキシブルディスク）１０９、ＤＶＤ（デジタル・ビデオ・ディスク、またはDigital Versatile Disk）１１０、プリンタ１１５のインターフェース（Ｉ／Ｆ）１１７、及び操作部としてのマウス１１２やキーボード１１３等のインターフェース（Ｉ／Ｆ）１１１を備え、これらは、バス１１６を介して互いに通信可能に接続されている。
【００７７】
マウス（登録商標）１１２及びキーボード１１３は、鍵情報処理装置１００に対する各種指示等をユーザが入力するための操作部である。この操作部を介して入力された情報（操作情報）は、インターフェース１１１を介して、鍵情報処理装置１００内に取り込まれる。
【００７８】
鍵情報処理装置１００での各種情報（文字情報や画像情報等）は、プリンタ１１５により印刷出力できるようになされている。
【００７９】
モニタ１０２は、ユーザへの各種指示情報や、文字情報或いは画像情報等の各種情報の表示を行う。
【００８０】
ＣＰＵ１０３は、鍵情報処理装置１００全体の動作制御を司るものであり、ＨＤ（ハードディスク）１０６等から処理プログラム（ソフトウェアプログラム）を読み出して実行することで、情報処理装置１００全体を制御する。特に、本第２の実施形態では、ＣＰＵ１０３は、ＨＤ１０６等から、鍵生成を実現する処理プログラムを読み出して実行することで、後述する情報処理を実施する。
【００８１】
ＲＯＭ１０４は、鍵生成のための処理プログラムや、プログラム内で用いられる各種データ（鍵生成用グラフなど）等を記憶する。
【００８２】
ＲＡＭ１０５は、ＣＰＵ１０３での各種処理のために、一時的に処理プログラムや処理対象の情報を格納するための作業用エリア等として使用される。
【００８３】
ＨＤ１０６は、大容量記憶装置の一例としての構成要素であり、各種データ、あるいは各種処理の実行時にＲＡＭ１０５等へ転送される情報変換処理等のための処理プログラム等を保存する。
【００８４】
ＣＤ（ＣＤドライブ）１０８は、外部記憶媒体の一例としてのＣＤ（ＣＤ−Ｒ）に記憶されたデータを読み込み、また、当該ＣＤへデータを書き出す機能を有する。
【００８５】
ＦＤ（フロッピー（Ｒ）ディスクドライブ）１０９は、ＣＤ１０８と同様に、外部記憶媒体の一例としてのＦＤ１０９に記憶されたデータを読み出す。また、種々のデータを上記ＦＤ１０９へ書き込む機能を有している。
【００８６】
ＤＶＤ（デジタル・ビデオ・ディスク）１１０は、ＣＤ１０８やＦＤ１０９と同様に、外部記憶媒体の一例としてのＤＶＤ１１０に記憶されたデータを読み出し、また、上記ＤＶＤ１１０へデータを書き込む機能を有している。
【００８７】
なお、ＣＤ１０８、ＦＤ１０９、ＤＶＤ１１０等の外部記憶媒体に対して、例えば、編集用のプログラム或いはプリンタドライバが記憶されている場合には、これらのプログラムをＨＤ１０６へインストールしておき、必要に応じて、ＲＡＭ１０５へ転送するように構成してもよい。
【００８８】
インターフェース（Ｉ／Ｆ）１１１は、マウス１１２或いはキーボード１１３によるユーザからの入力を受け付けるためのものである。
【００８９】
モデム１１８は、通信モデムであり、インターフェース（Ｉ／Ｆ）１１９を介して、例えば、公衆回線等を通じて外部のネットワークに接続される。
【００９０】
ネットワーク接続部１０７は、インターフェース（Ｉ／Ｆ）１１４を介して、外部のネットワークに接続される。
【００９１】
以下、上述した装置による鍵の生成・管理について説明する。
【００９２】
[鍵生成概要]
まず、本第２の実施形態における階層的鍵管理方法における各ノードのノード鍵の生成に関する説明から行う。
【００９３】
本第２の実施形態では図１０や図２８のように階層関係がループおよびサイクルを持たない有向グラフで表現されていることを前提とする。図３６のノードn1とn2のように、複数の異なるノードがお互いに有向グラフで接続されている箇所が存在するとき、これらのノードをまとめて一つのノードとして扱うことで、このような双方向の接続関係を持つノードがない場合に帰着することができる。図３７はn1とn2をn1’というひとつのノードと同一視した有向グラフである。以降、このような双方向の接続関係を持つノードがないと仮定する。
【００９４】
説明の便宜上、本実施の形態では図１０に示すような２つの階層を持った格子グラフを取り扱う。図１１及び図１２においてそれぞれのセルに記載されている３つの数字は３つの初期鍵ｘ，ｙ，ｚに対して施すハッシュ関数の回数が表現されている。例えば［２，２，N］と記されているセルでは、ノード鍵としてH(Ｈ（ｘ）)とＨ（H（ｙ））を保持するとする。Ｎは“なし”を意味し、初期鍵ｚに関する情報は全く持たないことを意味する。今後、ハッシュ演算をｎ度施す場合にはＨ＾ｎ（  ）と略記して表現するものとする。この表記法に基づけば、［２，２，N］と記されているセルはＨ＾２（ｘ）とＨ＾２（ｙ）の２つのノード鍵を持つこととなる。階層的鍵管理方式における木構造を図１２に示すような行列と置き換えて説明することもできる。図１１は９個のノードを有する木構造の例であり、図１１の各ノードに記された数字と、図１２の各セルに記された数字は、同じ対応関係であることを示す。
【００９５】
まず、図１１に示したような木構造において、ルートノード（図中[0,0,0]で示されるノード）を行列における一番右上のセルに対応付ける。そして、木構造における各ノードの子ノードのうち左に位置するノード、及び右に位置するノードを、夫々、行列の左のセル、及び下のセルに対応付ける。この対応付けを全てのノード、及びセルに対して順に行うことにより、図１１に示した木構造は図１２に示した行列に置き換えることができる。
【００９６】
次に、図１１または図１２に示される鍵生成用データの生成方法について説明する。 
[ノードの分割]
鍵生成用データを生成するために、与えられた鍵配布グラフGにおいて、次の条件を満たすようにノードの分割を行う。ここで、ノード全体の集合をNode(G)、部分集合の組の大きさをN、分割された部分集合をSubG_1, SubG_2, …, SubG_Nという表記方法を使うこととする。
【００９７】
・SubG_1∪ SubG_2∪…∪ SubG_N = Node(G)，
つまり部分集合全体は全ノードを網羅する。
【００９８】
・SubG_ｉに含まれる任意の２つの異なるノードn_a,n_bは、
n_a ＜ n_b  又は   n_a ＞ n_b
が成立する。つまりn_a,n_bには子孫関係が存在し、一方が必ずもう一方の子孫ノードである。
【００９９】
この分割された部分集合の数Nを鍵配布グラフＧの鍵配布オーダーと呼びＯｒｄ（Ｇ）と表記する。
【０１００】
[ノード鍵の割り当て]
部分集合SubG_ｉに対して１つずつ初期鍵Ｋ_ｉを計算し、ルートノードのノード鍵として割り当てる。ルートノードの配下にある子孫ノードは次のような法則でノード鍵が割り当てられる。
【０１０１】
ｉ）各ノードはＮ個の初期鍵Ｋ_ｉ（１≦ｉ≦N）に関連付けられた番号が振られる。この番号は初期鍵Ｋ_ｉに対し一方向性関数を実行する回数であり、“なし”を意味する“N”が振られることもある。初期鍵Ｋ_ｉの当該番号が“Ｎ”のときは、初期鍵Ｋ_ｉに関連した鍵を保有しないことを意味する。
【０１０２】
ｉｉ）SubG_ｉに含まれるノードをそれぞれの集合内で有向グラフ上での子孫関係に従って降順にソートし、０から１つずつ増加させた番号を割り付けする。この番号は初期鍵Ｋ_ｉに関連付けられた番号である。
【０１０３】
iii）SubG_ｉに含まれるノードの初期鍵Ｋ_ｊ（ｉ≠ｊ）に関連付けられた番号は、（初期鍵Ｋ_ｊに対する部分集合である）SubG_ｊに含まれるノードの祖先ノードではない場合には当該番号をN（なし）とし、祖先ノードであるノードの当該番号は子孫ノードとしてSubG_ｊに含まれるノードのうち割り当てされた番号の最小値とする。
【０１０４】
図１９は上記のノード鍵割り当て処理をフローチャートにしたものである。以降、図１１９の説明を行う。ここでは、すでに全ノード集合は互いに素であり、空ではない部分集合｛SubG_ｉ｝（１≦ｉ≦N）に分割されており、それぞれの部分集合に対する初期鍵Ｋ_ｉが計算されているものとする。また、部分集合SubG_ｉに含まれるノード数を＃Ｎ（ｉ）と記述し、部分集合SubG_ｉに含まれるノードは、有向グラフ上での子孫関係に従って降順にソートされSubG_ｉ＝｛ｎ（ｉ，１），ｎ（ｉ，２），．．．，ｎ（ｉ，＃Ｎ（ｉ））｝と記述することとする。さらにノードｎ（ｉ，ｊ）に対するノード鍵は初期鍵Ｋ_ｋ（１≦ｋ≦N）に一方向性ハッシュ関数を規定回数施したものであるが、この規定回数をｈ（ｉ，ｊ，ｋ）と表記する。
【０１０５】
ステップＳ１１０１は１からＮまで変動する変数ｉのループ、ステップＳ１１０２は１からＮまで変動する変数ｊのループ、ステップＳ１１０３は１から＃Ｎ（ｉ）まで変動する変数ｋのループである。ステップＳ１１０４は変数ｉと変数ｋが一致するかどうか評価し、一致する場合には処理をステップＳ１１０５に進め、一致しない場合には処理をステップＳ１１０６に進める。ステップＳ１１０５はｈ（ｉ，ｊ，ｋ）にｊ−１を代入し、ループ処理に戻る。ステップＳ１１０６はｎ（ｋ，ｍ）＜ｎ（ｉ，ｊ），つまりｎ（ｉ，ｊ）はｎ（ｋ，ｍ）の祖先ノードであることを満たすｍが存在するか評価し、存在しない場合には処理をステップＳ１１０７に進め、存在する場合には処理をステップＳ１１０８に進める。ステップＳ１１０７はｈ（ｉ，ｊ，ｋ）に“Ｎ”を代入し、ループ処理に戻る。
【０１０６】
ステップＳ１１０８はｈ（ｉ，ｊ，ｋ）にｍｉｎ｛ｈ（ｋ，ｍ，ｋ）|ｎ（ｋ，ｍ）＜ｎ（ｉ，ｊ）｝、つまりｎ（ｉ，ｊ）がｎ（ｋ，ｍ）の祖先ノードであるノードのうちｈ（ｋ，ｍ，ｋ）の最小値を代入し、ループ処理に戻る。
【０１０７】
以下、具体例を図１３から図１６、図１７から図１８、および、図２８から図３４を用いて説明する。
【０１０８】
図１３は、図１０に示す鍵生成グラフにおけるノード分割の例であり、３つの部分集合SubG_ 1からSubG_ 3に分割している。つまり、SubG_ 1={n0, n2, n5}，SubG_ 2={n1, n4, n7}，SubG_ 3={n3, n6, n8}である。このとき、ｈ（ｉ，ｊ，ｉ）のみを表示したものが図１４である。たとえば｛ｈ（１，１，１），ｈ（１，２，１），ｈ（１，３，１）｝＝｛０，１，２｝であり、これはステップＳ１１０４およびＳ１１０５に対応する。さらにノードの子孫関係から“Ｎ”となる箇所を記載したものが図１５である。たとえばｈ（１，１，３）＝“Ｎ”であるが、これはｎ（３，ｍ）＜ｎ（１，１）＝n3となるmは存在しないことに起因する。実際ｎ（３，１）=n0，ｎ（３，２）=n2，ｎ（３，３）=n5でありこのことが確認できるが、これはステップＳ１１０６およびＳ１１０７に対応する。さらにｎ（３，ｍ）＜ｎ（ｉ，ｊ）を満たすすべてのｉ，ｊでチェックして反映した結果が図１６である。たとえばｈ（２，１，１）＝０であるが、これはｎ（１，ｍ）＜ｎ（２，１）＝n1となるmには１，２，３の可能性があるが、ｈ（１，１，１）＝０，ｈ（１，２，１）＝１，ｈ（１，３，１）＝２のうち最小値である０が選択される。さらにｎ（２，ｍ）＜ｎ（ｉ，ｊ）を満たすすべてのｉ，ｊでチェックし，最終的には図１２を得る。
【０１０９】
また、図１３とは異なる図１７に記載のノード分割による構成方法は、図１９のフローチャートにより図１２と同様に構成でき、図１８を得る。図１２と図１８では、総ハッシュ演算量が図１８の場合が多くなる。
【０１１０】
次に図２８に示す鍵生成グラフにおけるノード鍵の構成方法について説明する。図２９は、図２８に示す鍵生成グラフにおけるノード分割の例であり、３つの部分集合SubG_ 1からSubG_ 3に分割している。つまりSubG_ 1={n0, n1, n4, n7}，SubG_ 2={n3, n6}，SubG_ 3={n2, n5}である。このとき図１９に記載のフローチャートに基づき構成したノード鍵は図３０のとおりである。以下、図３０に至るまでの構成を説明する。まず、ｈ（ｉ，ｊ，ｉ）のみを表示したものが図３１である。たとえば｛ｈ（１，１，１），ｈ（１，２，１），ｈ（１，３，１），ｈ（１，４，１）｝＝｛０，１，２，３｝であり、これはステップＳ１１０４およびＳ１１０５に対応する。さらにノードの子孫関係から“Ｎ”となる箇所を記載したものが図３２である。たとえばｈ（１，２，３）＝“Ｎ”であるが、これはｎ（３，ｍ）＜ｎ（１，２）＝n1となるmは存在しないことに起因する。実際ｎ（３，１）=n3，ｎ（３，２）= n6でありこのことが確認できるが、これはステップＳ１１０６およびＳ１１０７に対応する。さらにｎ（１，ｍ）＜ｎ（ｉ，ｊ）をすべてのｉ，ｊでチェックして反映した結果が図３３である。たとえばｈ（２，１，１）＝２であるが、これはｎ（１，ｍ）＜ｎ（２，１）＝n3となるmには３，４の可能性があるが、ｈ（１，３，１）＝２，ｈ（１，４，１）＝３のうち最小値である２が選択される。同様にしてｎ（２，ｍ）＜ｎ（ｉ，ｊ）をすべてのｉ，ｊでチェックして反映した結果が図３４であり、最終的には図３０を得る。
【０１１１】
さらに、終端ノードに鍵を配布しない場合を考える。これは画像データにおけるサムネイル画像など、制限なしにデータアクセス可能な状態を作ることができる。図３５はその例であり、終端ノードは[N, N, N]と記載されているようにノード鍵が存在しないことを意味する。これは、終端ノードのみをノード分割時ｎどの部分集合にも含めない状態から図１９のフローチャートに適用することで得ることができる。ここでは終端ノードのひとつのみに対しノード鍵を配布しない例を示したが、複数ノードにした場合でも同様に構成できることは明らかである。
【０１１２】
[生成された鍵の満たすべき条件]
上記の鍵生成方式は次の条件を満たすように構成されている。
【０１１３】
a.  生成可能性：対象ノードはその孫ノードの鍵を生成できること
b.  結託攻撃回避性：（一方向性関数が脆弱にならない限り）任意の二つ以上のノードに位置するエンティティが結託しても、夫々のノードより上位に位置する祖先ノードの鍵は生成できないこと
これらの条件により、安全に鍵生成と鍵配布を行うことができる階層的鍵管理方式が実現できる。
【０１１４】
[鍵配布]
ルート鍵配布者（ルートノードのエンティティ）による各ノードへの鍵配布方法と、ルート鍵配布者以外の個別鍵を保持するエンティティによる下位ノードへの鍵配布方法とについて、それぞれ説明する。まずルート鍵配布者は、鍵配布グラフＧに応じて決まる鍵配布オーダーＯｒｄ（Ｇ）個のパラメータ｛ｘ＿ｉ｝（１≦ｉ≦Ｏｒｄ（Ｇ））をランダムに且つ安全に生成し、それらを自身の個別鍵とする。さらに前述した鍵生成手順により各ノードに複数の鍵を配置する。ルート鍵配布者は各ノードに位置するエンティティに対して、各ノードの鍵を安全に配布する。また、鍵配布グラフを公開し、各エンティティに対して、配布された鍵がグラフのどの位置の鍵であるかを識別できるデータを配布する。このデータは例えば、格子グラフを鍵配布グラフとする場合には、行列表記したときの座標により構成するようにすれば良い。
【０１１５】
[情報処理装置における鍵生成・配布処理]
前記情報処理装置１００において以上の鍵生成・配布処理を行う手順について説明する。画像などの管理対象データをＣＤ１０８もしくはネットワークのネットワーク接続部１０７を通して取得しＨＤ１０６に格納するか、もしくはＨＤ１０６に既に格納されているデータの中から選択する。ここで、ユーザはモニタ１０２に表示した一覧からマウス１１２もしくはキーボード１１３などを使って選択する。
【０１１６】
管理対象データに対して何階層の階層軸を持たせるかなどのアクセス制御構造を同様の方法を用いてユーザが選択すると、その構造に応じた鍵生成用グラフをＣＰＵ１０３を用いて計算を行い、ＲＡＭ１０５やＨＤ１０６などに格納する。
【０１１７】
ＲＯＭ１０４やＲＡＭ１０５やＨＤ１０６もしくはマウス１１２の動作などのデータからランダムデータを生成し、そのランダムデータを用いて、複数のオリジナル鍵を生成し、ＲＡＭ１０５やＨＤ１０６などに格納する。さらに鍵生成用グラフにおける各ノードの個別鍵をオリジナル鍵から演算し、ＲＡＭ１０５やＨＤ１０６などに格納する。
【０１１８】
他の情報処理装置に対して、ＲＡＭ１０５やＨＤ１０６などに格納された個別鍵を読み出して、ネットワーク接続部１０７を通じてネットワークを介して配布を行う。
【０１１９】
＜第３の実施形態＞
第２の実施形態における鍵配布方式により生成された階層的な構造を持つ鍵データを用いたアクセス制御の好適例を説明する。図１０で表現されている格子鍵生成グラフは２つの階層軸を持っている。このうち１つ（左下方向）を解像度、もう片方（右下方向）を画像領域とした場合の例を図２０に示す。
【０１２０】
解像度には高、中、低の３つのレベルがあり、取得できる画像の解像度を示す。画像領域にも３つのレベルがあり、すべての領域、サブ領域Ａ、（サブ領域Ａよりも狭い）サブ領域Ｂ、の閲覧の権限が与えられるとする。このときルートに位置する権限の最も大きいノードには（解像度＝高、画像領域＝すべて）が割り当てられ、最下位のノードには（解像度＝低、画像領域＝領域Ｂ）が割り当てられている。
【０１２１】
図１１または図１２に則った鍵配布を行う場合を例として、鍵配布方法および画像暗号化方法を説明する。対象画像データＩＭＧは領域Ｂの画像データＩＭＧ１、領域Ａ差分データをＩＭＧ＿２、すべての画像データを得るための差分データをＩＭＧ＿３とする。つまりＩＭＧ＝ＩＭＧ＿１＋ＩＭＧ＿２＋ＩＭＧ＿３である。また、それぞれのＩＭＧ＿ｉは低解像度データをＩＭＧ＿ｉ（Ｌ）、中解像度差分データをＩＭＧ＿ｉ（Ｍ）、高解像度差分データをＩＭＧ＿ｉ（Ｈ）とする。つまりＩＭＧ＿ｉ＝ＩＭＧ＿ｉ（Ｌ）＋ＩＭＧ＿ｉ（Ｍ）＋ＩＭＧ＿ｉ（Ｈ）である。
【０１２２】
まずルート鍵配布者はランダムにオリジナル鍵ｘ，ｙ，ｕを生成する。暗号化に使う鍵Ｋｅｙ（＜Ｈｉｇｈ，Ａｌｌ＞）：＝Ｈ（ｘ｜｜ｙ｜｜ｕ）とし、この鍵でＩＭＧ＿３（Ｈ）を暗号化する。ただし｜｜はデータの連結とする。それぞれの子ノードでは取得した３つのデータをルートノードと同様に連結して暗号鍵を生成し、図２１に記載のデータを暗号化する。
【０１２３】
例えば、＜Ｍｉｄ，Ａｌｌ＞ノードでは、鍵データとしてＨ（ｘ），Ｈ＾３（ｙ），ｕが与えられているが、暗号鍵Ｋｅｙ（＜Ｍｉｄ，Ａｌｌ＞）：＝Ｈ（Ｈ（ｘ）｜｜Ｈ＾３（ｙ）｜｜ｕ）とし、この鍵でＩＭＧ＿３（Ｍ）を暗号化する。暗号化されたデータを復号する際には、同様の処理を行って暗号鍵を計算し復号処理をして適切な画像データを取得する。
【０１２４】
本実施形態では、暗号鍵の生成方式として鍵を連結してハッシュする方式を採用したが、その他の鍵連結方式（複数の鍵データから１つの鍵を計算する方式）に従ってもかまわない。
【０１２５】
また、本実施形態では解像度と画像領域を階層軸として取り上げたが、本発明はこれに限定されることなく、画質や時間軸や利用制御情報などアクセス制御の対象とすべき階層の中から、任意の二つ以上の階層を選択して利用することも可能である。
【０１２６】
＜ソフトウエアなどによる他の実施の形態＞
本発明は、複数の機器（例えばホストコンピュータ、インターフェース機器、リーダ、プリンタ等）から構成されるシステムの一部として適用しても、ひとつの機器（たとえば複写機、ファクシミリ装置）からなるものの一部に適用してもよい。
【０１２７】
また、本発明は上記実施の形態を実現するための装置及び方法及び実施の形態で説明した方法を組み合わせて行う方法のみに限定されるものではなく、上記システムまたは装置内のコンピュータ（ＣＰＵあるいはＭＰＵ）に、上記実施の形態を実現するためのソフトウエアのプログラムコードを供給し、このプログラムコードに従って上記システムあるいは装置のコンピュータが上記各種デバイスを動作させることにより上記実施の形態を実現する場合も本発明の範疇に含まれる。
【０１２８】
またこの場合、前記ソフトウエアのプログラムコード自体が上記実施の形態の機能を実現することになり、そのプログラムコード自体、及びそのプログラムコードをコンピュータに供給するための手段、具体的には上記プログラムコードを格納した記憶媒体は本発明の範疇に含まれる。
【０１２９】
この様なプログラムコードを格納する記憶媒体としては、例えばフロッピー（Ｒ）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【０１３０】
また、上記コンピュータが、供給されたプログラムコードのみに従って各種デバイスを制御することにより、上記実施の形態の機能が実現される場合だけではなく、上記プログラムコードがコンピュータ上で稼働しているＯＳ(オペレーティングシステム)、あるいは他のアプリケーションソフト等と共同して上記実施の形態が実現される場合にもかかるプログラムコードは本発明の範疇に含まれる。
【０１３１】
更に、この供給されたプログラムコードが、コンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードや機能格納ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上記実施の形態が実現される場合も本発明の範疇に含まれる。
【図面の簡単な説明】
【０１３２】
【図１】従来技術における解像度とレイヤにおける鍵情報の問題点を説明するための図である。
【図２】第１の実施形態における解像度とレイヤにおける鍵情報の相関を示す図である。
【図３】第１の実施形態における装置の構成例を示す図である。
【図４】第１の実施形態におけるＲＳＡ暗号を用いた場合の鍵の相関を示す図である。
【図５】第１の実施形態における暗号化及び鍵生成に係る構成例を示す図である。
【図６】実施形態が適用するシステム構成例を示す図である。
【図７】ウェーブレット変換の例を示す図である。
【図８】エントロピー符号化する際のレイヤを説明するための図である。
【図９】本第２、第３の実施形態に係る鍵情報処理装置の構成を概略的に示すブロック図である。
【図１０】第２の実施形態に係る有向グラフの例を説明する図である。
【図１１】第２の実施形態に係る鍵配布グラフの例を示す図である。
【図１２】第２の実施形態に係る鍵配布行列の例を示す図である。
【図１３】第２の実施形態に係る図１０に記載の鍵配布グラフにおけるノード分割の例を説明する図である。
【図１４】第２の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図１５】第２の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図１６】第２の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図１７】第２の実施形態に係る図１０に記載の鍵配布グラフにおけるノード分割の別例を示す図である。
【図１８】第２の実施形態に係る鍵配布行列の例を示す図である。
【図１９】第２の実施形態に係るノード鍵生成手順を表すフローチャートである。
【図２０】第３の実施形態に係る階層型アクセス構造を説明する概念図である。
【図２１】第３の実施形態に係る各ノードが暗号化すべき画像リストを表わすテーブルを示す図である。
【図２２】木構造管理方式における２分木アクセス構造を説明する概念図である。
【図２３】階層的なアクセス制御方式におけるアクセス構造を説明する概念図である。
【図２４】階層的なアクセス制御方式におけるアクセス構造を説明する概念図である。
【図２５】階層的なアクセス制御方式における局所的構造を説明する概念図である。
【図２６】User multiple keyingの例を説明する図である。
【図２７】One-way function based keying schemesを説明する図である。
【図２８】第２の実施形態に係る有向グラフの例を示す図である。
【図２９】第２の実施形態に係る図１０に記載の鍵配布グラフにおけるノード分割の例を説明する図である。
【図３０】第２の実施形態に係る鍵配布グラフの例を示す図である。
【図３１】第２の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図３２】第２の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図３３】第２の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図３４】第２の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図３５】第２の実施形態に係る鍵配布グラフの例を示す図である。
【図３６】第２の実施形態に係る双方向に接続関係を持つノードが存在する有向グラフの例を示す図である。
【図３７】第２の実施形態に係る図３６に記載の有向グラフにおいて、双方向に接続関係を持つノードが存在しないように変更した有向グラフの例を示す図である。
【図１】
2004297778.tif 000003
【図２】
2004297778.tif 000004
【図３】
2004297778.tif 000005
【図４】
2004297778.tif 000006
【図５】
2004297778.tif 000007
【図６】
2004297778.tif 000008
【図７】
2004297778.tif 000009
【図８】
2004297778.tif 000010
【図９】
2004297778.tif 000011
【図１０】
2004297778.tif 000012
【図１１】
2004297778.tif 000013
【図１２】
2004297778.tif 000014
【図１３】
2004297778.tif 000015
【図１４】
2004297778.tif 000016
【図１５】
2004297778.tif 000017
【図１６】
2004297778.tif 000018
【図１７】
2004297778.tif 000019
【図１８】
2004297778.tif 000020
【図１９】
2004297778.tif 000021
【図２０】
2004297778.tif 000022
【図２１】
2004297778.tif 000023
【図２２】
2004297778.tif 000024
【図２３】
2004297778.tif 000025
【図２４】
2004297778.tif 000026
【図２５】
2004297778.tif 000027
【図２６】
2004297778.tif 000028
【図２７】
2004297778.tif 000029
【図２８】
2004297778.tif 000030
【図２９】
2004297778.tif 000031
【図３０】
2004297778.tif 000032
【図３１】
2004297778.tif 000033
【図３２】
2004297778.tif 000034
【図３３】
2004297778.tif 000035
【図３４】
2004297778.tif 000036
【図３５】
2004297778.tif 000037
【図３６】
2004297778.tif 000038
【図３７】
2004297778.tif 000039