画像データ暗号化装置及びその制御方法
【課題】 少なくとも2つのパラメータでもって各階層のデータを特定できる階層構造を有する画像データを暗号化する際に、アクセス鍵の管理を容易にしつつ、複数のユーザによるアクセス鍵の交換に対しても耐性の高い画像データの暗号化技術を提供する。
【解決手段】
【請求項1】 レイヤ及び解像度それぞれのレベルで階層を特定する階層構造を有する画像データを暗号化する際、最高解像度及び最高レイヤに対するアクセス鍵Kを設定し、そこからレベルが下がる方向に従い、一方向性の関数を利用してアクセス鍵を生成していく。このとき、或る階層のアクセス鍵は、その上位に位置するレイヤ及び解像度のアクセス鍵のいずれからも生成可能にする。そして、各階層のデータについては、該当するアクセス鍵に従って暗号化する。
【解決手段】
【請求項1】 レイヤ及び解像度それぞれのレベルで階層を特定する階層構造を有する画像データを暗号化する際、最高解像度及び最高レイヤに対するアクセス鍵Kを設定し、そこからレベルが下がる方向に従い、一方向性の関数を利用してアクセス鍵を生成していく。このとき、或る階層のアクセス鍵は、その上位に位置するレイヤ及び解像度のアクセス鍵のいずれからも生成可能にする。そして、各階層のデータについては、該当するアクセス鍵に従って暗号化する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像データの暗号化技術に関するものである。
【背景技術】
【0002】
画像データなどを秘匿して伝送するために、画像データ全体の暗号化やスクランブルなどが行なうことが行われている。これは、予め画像データ全体に対して暗号鍵を用いて暗号化し、この暗号鍵に対応する復号鍵の情報を有するコンピュータだけが正しく復号可能とする技術でもある。
【0003】
一方、画像データが複数のタイルから構成される場合、タイル毎に再生の可否を制御する目的で、タイル毎に異なる暗号鍵を用いて暗号化処理が行われる。
【0004】
また、階層構造を有する画像データの場合、その階層構造に応じて画像データの再生を制御する目的で、階層構造毎に異なる暗号鍵を用いて暗号化処理が行われる。
【0005】
ただし、その階層は複数のパラメータによって定まる場合がある。例えば、ISO/IEC JTC 1/SC29/WG1にて標準化されているJPEG2000規格と呼ばれる技術においては、1つのタイルに対して、その解像度、及びビットプレーン毎の符号の集合であるレイヤ、色成分などを表すコンポーネント、タイルにおける位置を表すプレシンクトの4つのパラメータが決まることによって1つの階層構造データが定義される(非特許文献1))。更に、これらを合わせた場合として、複数のタイルから構成され、更に夫々のタイルが階層構造を有する画像データの場合、タイルと階層構造に応じた画像データの再生を制御する目的で、タイル中の階層構造に対して異なる暗号鍵を用いて暗号化処理が行われる。
【0006】
このように、タイル、及び階層構造に対して異なる暗号鍵を用いて暗号化することによりタイル、及び階層構造毎に画像データの再生を制御することが可能である。しかしながら、暗号化された画像データの所定のタイル、及び階層構造を復号処理するためには、暗号化処理に用いた暗号鍵をすべて管理すると共に、復号処理の際に適当な復号鍵を供給する必要があり、暗号化する側及び復号する側のそれぞれの鍵情報の管理が繁雑となり易い。
【0007】
それに対して、鍵情報の管理を容易にするためにタイル、コンポーネント、プレシンクトに関する鍵を独立に生成し、解像度とレイヤに関する鍵は前後の解像度及びレイヤの鍵に依存して生成する手法がある。これは、タイルやコンポーネント、プレシンクトはランダムにアクセスされる可能性が高いので、各パラメータを識別する識別子に応じて鍵を生成し、解像度やレイヤに関しては高解像度または高レイヤの画像を再現するためには必ず低解像度または低レイヤの画像データへのアクセスが必要なため、高解像度または高レイヤのデータを暗号化する鍵から1つ下の低解像度または低レイヤのデータを暗号化する鍵を生成することにより管理すべき鍵を削減するという手法である。
【0008】
この手法では、1つの画像に関するマスター鍵をKとしたとき各タイル、コンポーネント、プレシンクト毎の鍵Kiが一方向性関数を用いて、下記のように生成される。ここで、一方向性関数とはy=H(x)においてxからyを求めることは容易であるが、yからxを求めることは困難な関数である。一方向性関数としてはMD5 (Message Digest 5), SHA−1 (Secure Hash Algorithm 1) 等のハッシュ関数やDES(Data Encryption Standard)やAES(Advanced Encryption Standard)等の暗号化関数が知られている。
Ki=H(K||i) (1)
ここで、H()は一方向性関数を、x||yはxとyの連接を表し、iは各タイル、コンポーネント、プレシンクトを識別するための値(識別情報)である。
【0009】
また、各解像度及びレイヤに対する鍵Kiは下記のように生成される。
Ki=H(Ki-1) (2)
ここで、iは対象となる解像度またはレイヤを表す値であり、Ki-1は1段階前の解像度(注目している解像度よりも高い解像度)または1段階前のレイヤ(注目しているレイヤよりも高いレイヤ)に対して用いた鍵である。
【0010】
よって、指定されたタイル及び階層化データに対する暗号鍵Ktcprlとし、指定されたタイル、コンポーネント、プレシンクト、解像度、レイヤに対する鍵をKT、KC、KP、KR、KLと表現すると、
Ktcprl=H(KT||KC||KP||KR||KL) (3)
として生成される。
【0011】
以上から、対象となるタイル、及び階層構造に異なる暗号鍵を用いて暗号化することによりタイル、及び階層構造に対して画像データの再生を制御することが可能となる。
【非特許文献1】標準勧告書(ISO/IEC 15444−1)
【発明の開示】
【発明が解決しようとする課題】
【0012】
しかし、このようにタイル、及び階層構造に対して異なる暗号鍵を用いて暗号化した場合、解像度及びレイヤに関しては以下のユーザの結託による鍵の漏洩という問題が発生する。
【0013】
例えば、図1に示すようにユーザAに最高解像度に対する鍵KRnと最低レイヤに対する鍵KL0を渡し、ユーザBに最低解像度に対する鍵KR0と最高レイヤに対する鍵KLmを渡す。通常、ユーザAは式(2)の関係からKL0以上の高レイヤデータにはアクセスできず、ユーザBはKR0以上の高解像度データにはアクセスできない。
【0014】
すなわち、図1ではユーザAはR0L0,R1L0,・・・,RnL0しかアクセス(暗号復号)できず、ユーザBはR0L0,R0L1,・・・,R0Lmしかアクセスできない。
【0015】
ところが、もしユーザA,Bが互いに鍵KLnとKRnを教えあうと、各々の鍵はそれ以下の解像度またはレイヤの鍵全てを生成できるので、結局のところ、ユーザA,Bは互いに全ての解像度とレイヤの画像を再現できることになる。すなわち、図1ではR0L0からRnLmまでの全ての範囲をアクセスできることになる。
【0016】
上記例は極端な例かもしれないが、インターネットという不特定多数のユーザが互いに通信できる環境にある場合、上記のような不測の事態がおこり得ると言わねばならない。
【0017】
本発明はかかる問題点に鑑みなされたものであり、少なくとも2つのパラメータでもって各階層のデータを特定できる階層構造を有する画像データを暗号化する際に、アクセス鍵の管理を容易にしつつ、複数のユーザによるアクセス鍵の交換に対しても耐性の高い画像データの暗号化技術を提供しようとするものである。
【課題を解決するための手段】
【0018】
この課題を解決するため、例えば本発明の画像データ暗号化の制御方法は以下の工程を備える。すなわち、
画像データを鍵情報を用いて暗号化する画像データ暗号化装置の制御方法であって、
階層的な構造を持ち、各階層のデータが少なくとも2つのパラメータで特定でき、且つ、それぞれのパラメータが多段階のレベルで表現される画像データを入力する入力工程と、
入力した画像データに対し、前記2つのパラメータが共に最大レベルで特定される階層のデータに対する鍵情報を起源とし、前記2つのパラメータで特定される階層のデータ用の鍵情報を、当該階層のデータより1つ高位に位置する階層内の2つのデータ用の鍵情報のいずれからも生成可能な、一方向性の所定の関数を用いて鍵情報を生成する生成工程と、
前記設定工程で設定された鍵情報、及び、前記生成工程で生成された鍵情報に従い、前記入力工程で入力した該当する階層のデータを暗号化する暗号化工程とを備える。
【発明の効果】
【0019】
本発明によれば、少なくとも2つのパラメータでもって各階層のデータを特定できる階層構造を有する画像データを暗号化する際に、アクセス鍵の管理を容易にしつつ、複数のユーザによるアクセス鍵の交換に対しても耐性の高い画像データの暗号化技術が提供できるようになる。
【発明を実施するための最良の形態】
【0020】
以下、添付図面に従って本発明に係る実施形態を説明する。
【0021】
<全体構成の説明>
実施形態におけるシステム概要例を図6に示す。図中、60はインターネットであって、61は例えばデジタルカメラやイメージスキャナ、フィルムスキャナ等で撮像した画像データを圧縮符号化&暗号化処理を行う装置である。62は画像データを受信し、復号する装置、63は復号する際に必要となる暗号化解除鍵を記憶している認証サーバある。装置61乃至63はパーソナルコンピュータ等の汎用装置で構わない。処理の流れを簡単に説明すると、次の通りである。
【0022】
装置61では、所望とする画像データを圧縮符号化及び暗号化処理を行い、インターネット60を介して配布する。配布するのは装置61が直接行ってもよいし、適当なサーバを介して配布しても構わない。ただし、暗号化されている関係で、その解除するために必要な鍵情報を、その画像データを特定する情報(例えばID)と共に認証サーバ63が有するDBに登録しておく。画像復号装置62は所望とする画像を受信し、復号を行ない閲覧するものであるが、暗号化されている画像データを閲覧するには、認証サーバ63にその画像を特定する情報を通知して、暗号化解除鍵情報を要求する。この結果、暗号化解除鍵情報が認証サーバ63より受信するので、それを用いて暗号化を解除し、復号再生する。
【0023】
実施形態では説明を簡単なものとするため、暗号化対象の画像(ファイル)はISO/IEC JTC1/SC29/WG110918−1において標準化されている、通称JPEG2000と呼ばれる圧縮符号化方式によって符号化されたデータであるものとして説明するが、JPEG2000に本発明が限定されることなく、JPEGなど種々の圧縮符号化の方式を適応可能であることは以下の説明から明らかになるであろう。
【0024】
ここで、装置61の構成について説明する。
【0025】
装置61は上記の通り、パーソナルコンピュータ等の汎用情報処理装置で良いが、その具体的な構成例は例えば図3に示す通りである。
【0026】
図中、302は装置全体の制御を司るMPUであり、303は主記憶装置(MPU302のワークエリア及びOS、実施形態における暗号化処理プログラムをロードするRAM、及び、ブートプログラムやBIOS等を記憶しているROMで構成される)である。304はOS、暗号化処理プログラムをはじめ、各種ファイルを記憶するハードディスク装置(HDD)である。305はビデオメモリ、MPU302の制御に従ってそのメモリに描画するコントローラ、並びに表示装置であるモニタ306にメモリに描画されたデータをビデオ信号として出力するビデオコントローラである。モニタ306は装置に一体となっていても構わないが、外付けでも構わない。307はシステムバスである。
【0027】
308はプリンタ316を接続するためのインタフェースであり、309はCDROMドライブ、310はDVDドライブ、311はフロッピー(登録商標)ドライブである。312はマウス等のポインティングデバイス313、キーボード314を接続するためのインタフェースであり、315はイメージスキャナ317を接続するためのインタフェースである。更に、318はインターネット60に接続するためのネットワークインタフェースである。
【0028】
上記構成において、実施形態では、例えばスキャナ317で原稿を読取り暗号化を行ない、先に説明したように、その結果を配布するものである。但し、暗号化対象はイメージスキャナ317に限らず、CDROM等の記憶媒体から読出した画像データや、或いは、デジタルカメラを接続し、それで撮像した画像でも構わない。要するに暗号化対象の画像データは如何なる手段で入力したものでも良い。
【0029】
<暗号鍵の説明>
上記構成において、実施形態では、暗号化対象となる画像データは、ISO/IEC JTC 1/SC29/WG1にて標準化されているJPEG2000規格と呼ばれる技術でもって圧縮符号化された画像データファイルに対して行うものとする。この圧縮技術そのものは、公知であるので、その詳述は省略するものとする。
【0030】
JPEG2000においては、1つのタイルに対して、その解像度、及びビットプレーン毎の符号の集合であるレイヤ、色成分などを表すコンポーネント、タイルにおける位置を表すプレシンクトの4つのパラメータが決まることによって1つの階層構造データが定義される。本実施形態では、このような階層構造を持った圧縮画像データに対して暗号化するものである。
【0031】
図7は或るタイルに対して2回ウェーブレット変換を行ったときの周波数成分を示している。1回目のウェーブレット変換を行った際、HL1、HH1、LH1そしてLL1の4つのサブバンドのデータが得られるが、2回めではLL1に対して同様の処理を行う。LL成分は常に1つしか発生しないため、添え字は付けないで表現することが多い。ここで、LL成分のデータは低周波成分のデータであり、もともとのタイルサイズに対して縦横それぞれ1/4の画像でもある。つまり、図示のLL成分はタイルで示された画像の1/4の解像度(最低解像度)のデータであると言える。このLL成分のデータに対し、{HL2+HH2+LH2}のデータを用いて復号することで、1段階高い解像度の画像が再現でき、更に{HL1+HH1+LH1}で示されるデータを用いて再現することで元々のタイルサイズと同じ最も高い解像度の画像を再現できる。すなわち、LL、{HL2+HH2+LH2}、{HL1+HH1+LH1}の順に解像度が徐々に高いデータとなっていると言える。実際には、このウェーブレット変換後、量子化処理を行ない、個々の成分内の値を少ないビット数に変換し、そしてエントロピー符号化を行うことになる。
【0032】
図8はその量子化後のデータを示している。図示では簡単にするため、量子化後のデータとして4×4のデータを示している。この例では、量子化インデックスが3個存在しており、それぞれ+13、−6、+3の値を持っている。エントロピ符号化では、この中の最大値MAXを求め、次式により最大の量子化インデックスを表現するために必要なビット数Sを計算する。
S = ceil(log2( abs(MAX) ))
ここでceil(x)はx以上の整数の中で最も小さい整数値を表す関数である。
【0033】
図8では、最大の係数値は13であるのでSは4であり、シーケンス中の16個の量子化インデックスは同図(b)に示すように4つのビットプレーンを単位として処理が行われる。最初にエントロピ符号化部114は最上位ビットプレーン(同図MSBで表す)の各ビットをエントロピ符号化(本実施の形態では2値算術符号化)し、ビットストリームとして出力する。次にビットプレーンを1レベル下げ、以下同様に対象ビットプレーンが最下位ビットプレーン(同図LSBで表す)に至るまで、ビットプレーン内の各ビットを符号化し符号出力部に出力する。なお上記エントロピ符号化時において、各量子化インデックスの符号は、上位から下位へのビットプレーン走査において最初(最上位)に符号化されるべき非0ビットが検出されるとそのすぐ後に当該量子化インデックスの正負符号を示す1ビットを続けて2値算術符号化することとする。これにより、0以外の量子化インデックスの正負符号は効率良く符号化される。
【0034】
図示の場合、ビット0乃至3の4つのプレーンが生成されるが、高位のビットプレーンほど支配的であることがわかる。これは、ちょうど最高位(図示ではビット3のプレーン)が先に示した低解像度のデータに対応し、ビット0のプレーンが最高解像度のデータを再現するために利用されるものに対応している。このように、エントロピ符号化されたエントロピ符号を所定の符号量となるように集めた処理単位(ビットプレーン)をレイヤと呼ぶ。複数のレイヤを構成することにより、復号時に種々の符号量に対応した画像を再生することが可能となる。
【0035】
さて、JPEG2000による圧縮符号化データのコードストリームは、先ず、メインヘッダがあって、上記の解像度やレイヤ、更には色成分などを表すコンポーネント、プレシンクトの4つのパラメータで示される1以上のタイルパートと呼ばれるデータが後続することになる。タイルパートは、更にタイルパートヘッダと少なくとも1以上のコードブロックを内包する。
【0036】
本実施形態でのコードブロックは、それがどの解像度レベルであって、どのレイヤであるかを示す情報がタイルパートヘッダに示されており、これを参照して利用する暗号化鍵情報を特定し、暗号化を行う。
【0037】
図2においては、KRLijは、所定の解像度とレイヤに対応する階層化データを表すRiLjへのアクセス鍵情報を表わすものとする。ある解像度とレイヤに対応するアクセス鍵KRLijに対して、以下のように鍵は更新される。
KRLi-1,j=F(a,KRLij) (4)
KRLi,j-1=F(b,KRLij) (5)
ただし、F()は鍵aまたはbを用いる一方向性関数であり、
F(a,F(b,K))=F(b,F(a,K)) (6)
という関係が成り立つものである。
【0038】
以上の関係式(6)は、前述したMD5 (Message Digest 5), SHA−1 (Secure Hash Algorithm 1) 等のハッシュ関数やDES(Data Encryption Standard)やAES(Advanced Encryption Standard)等の暗号化関数では実現されない。
【0039】
そこで、この関係を満足させるため、下記演算によって実現した。ここで、N=(p−1)(q−1)(p,qは素数)であり、a,bは公開されているとする。
(K^b)^a mod N=(K^a)^b mod N (7)
ここで「x^y」はxのy乗を示し、「x mod y」 はxをyで除算した際の余りを返す関数である(「^」は「mod」よりも演算結合強度が強い)。
【0040】
式(7)はRSA暗号と同じ原理であり、a,bが公開されていても、その秘密鍵に相当するa’,b’がわからなければ逆演算はできず一方向性が保証されるものである。
【0041】
これにより、従来方式の課題である下記の問題が解決される。
【0042】
i.最高解像度かつ最低レイヤのデータにアクセスできるユーザAにアクセス鍵KRLn0を渡す。ユーザAは公開鍵aを用いて式(4)からアクセス鍵 KRLn-1,0〜KRL00を生成できる。しかし、もう1つの公開鍵bを用いて式(5)を実行してもレイヤ方向の逆演算はF()の一方向性から実現できず、より高レイヤのアクセス鍵を得ることはできない。
【0043】
ii.また、最低解像度かつ最高レイヤのデータにアクセスできるユーザBにアクセス鍵KRL0mを渡す。ユーザBは公開されている鍵bを用いて式(5)からアクセス鍵KRL0,m-1〜KRL00を生成できる。また同様に、F()の一方向性からユーザBは高解像度に対するアクセス鍵は生成できない。
【0044】
iii.ここで、ユーザAとユーザBが結託し、互いのアクセス鍵KRLn0とKRL0mを教えたとする。しかし、KRLn0とKRL0mは前述した範囲の鍵を生成できるのみであり、他の鍵を生成することはできない。以上の原理を式(7)を用いて図示すると図4のようになる。
【0045】
図4は、次のような意味である。或るタイルの最大解像度、最高レイヤ(ビット0のプレーン)に対しアクセス鍵Kを設定する。このアクセス鍵Kを起源として、図示矢印方向(一方向性)のアクセス鍵情報を生成していく。
【0046】
この結果、例えばユーザAが鍵「K^mb」(最大解像度、最低レイヤ(MSBのビットプレーン)を取得し、ユーザBが鍵「K^nb」を取得し、互いにその鍵情報を交換したとしても、鍵Kを生成すること実質的に不可能とすることができる。図1で説明した従来技術に対して遥かに、複数ユーザの結託に対して高い強度が保持されるのがわかる。
【0047】
上記処理を解像度をレイヤに関するアクセス鍵の生成及び暗号化部は図5に示す構成で実現できる。なお、同図の各処理部はソフトウェアの機能として読み替えることができることに注意されたい。
【0048】
ここでは簡単のためタイルやコンポーネントなどの部分は階層化されていないとする。
【0049】
まず、画像データ500が入力されると階層化部501において、画像500は、解像度とレイヤに関して図2に示すような高解像度から低解像度、高レイヤから低レイヤの種々のデータに階層化される。ここでは上から順にRnLm,Rn-1Lm,RnLm-1,Rn-2Lm,・・・が出力されるとする。
【0050】
一方、最高解像度かつ最高レイヤの階層化データRnLmに対するアクセス鍵情報をKとする。この鍵はK=KRLnmであり、それを用いてRnLmを暗号化部502において暗号化する。暗号化部502で用いる暗号化手法はここでは限定しないが、DESやAESなど種種の暗号化手法を利用することができる。その結果RnLmを暗号化したCRnLmが出力される(CRiLjはRiLjを暗号化したデータであることを示す)。
【0051】
鍵KはR鍵変換部503において式(4)による解像度方向の鍵の更新が行われ、L鍵変換部504において式(5)によるレイヤ方向の鍵の更新が行われる。よって、鍵K=KRLnmからR鍵変換部においてKRLn-1,m=K^aが計算され出力される。同様に、鍵K=KRLnmからL鍵変換部においてKRLn,m-1=K^bが計算され出力される。ただし、a,bはあらかじめ変換部503、504に設定されているとする。これを用いて、階層化部501から出力されたRn-1Lm,RnLm-1の符号化データに対して暗号化部502において暗号化が行われる。
【0052】
以降、解像度方向には前の解像度に対する鍵を入力としてR鍵変換部において式(4)の演算が、レイヤ方向には前のレイヤに対する鍵を入力としてL鍵変換部において式(5)の演算が実行され、鍵が更新される。その更新された鍵を用いて以降の階層化構造データに対して暗号化が行われる。ただし、斜め方向のデータに対する鍵の計算、例えばKRLn-1,m-1に相当する図4におけるK^(a+b)の計算は、前の解像度方向の鍵K^bを入力としてR鍵変換部で計算しても、前のレイヤ方向の鍵K^aを入力としてL鍵変換部で計算しても同じ結果が得られるのでどちらでも良い。
【0053】
これに対する復号処理は、図5の暗号化部502を用いた暗号手法に対する復号手段である復号化部に置き換えた構成によって実現できることは明らかである。
【0054】
上記実施形態では簡単のためタイルやプレシンクト、コンポーネントは階層化されていないとしたが、タイルやプレシンクト、コンポーネントに対して階層化されていても式(1)によって各アクセス鍵KT,KC,KPが生成され、式(3)に代わって下記の式によって全体のアクセス鍵が生成できる。
Ktcprl=H(KT||KC||KP||KRL) (8)
ここで、KRLは本実施形態で示した解像度とレイヤに対する鍵である。
【0055】
また、タイルやプレシンクト、コンポーネントなどの他の成分に対しても相関を持たせる場合、タイルやプレシンクト、コンポーネントに対して各々鍵c,d,eを定め、多次元の階層化データとして同様の手法によりユーザの結託を防止することもできる。
【0056】
また、実施形態では式(4)〜(6)の関係を成り立たせる手法として式(7)を示したが、それに限らないことは明らかである。例えば、楕円曲線状のべき乗剰余演算などでも良い。
【0057】
また、第1の実施形態では解像度とレイヤに対するアクセス鍵の更新を公開鍵a,bによって示したが、
KRLi-1,j=E(KRLij) (9)
KRLi,j-1=G(KRLij) (10)
E(G(K))=G(E(K)) (11)
の関係を満たすものでも良い。
【0058】
以上説明したように本実施形態によれば、複数のタイル及び階層構造を有する画像データに対して、タイル及び階層構造毎に異なる暗号鍵を用いて暗号化した場合にも、複数ユーザによる鍵情報の交換による漏洩、或いは、不正アクセスが解決され、かつ複数の鍵を管理する必要がないようにできることになる。
【0059】
なお、実施形態では、図4に示す2軸に対し、解像度、レイヤを適用した例を説明したが、一方の軸、或いは、両方に対し、タイル、プレシンクト、コンポーネントを割り当てても構わない。但し、タイルやプレシンクトの場合には、多段階レベルは、その位置情報として扱うことになろう。
【0060】
<第2の実施形態>
通信回線やDVDなどの大容量記録メディアを通じて、文書や画像データなどのデジタルコンテンツが流通する機会が増加している。このようなコンテンツ配信サービスにおいては、コンテンツを配信するコンテンツプロバイダが存在する。コンテンツプロバイダでは、複数のコンテンツのそれぞれに対して異なるアクセス制御情報の設定を行う必要があり、コンテンツごと、ユーザごと、さらにはユーザのアクション(例えば、閲覧、コピーなど)ごとに異なる鍵による暗号化処理を行うことが想定されている。この処理において、鍵生成、鍵保持、鍵配信などの鍵情報に関わるマネージメントはコンテンツプロバイダにおいて非常に負荷がかかることが多い。そこで鍵管理に関して、セキュリティレベルを低下させることなく、より効率的な管理方法に関する研究が行われている。そのいくつかに関して説明を行う。特に、第1の実施形態はハッシュ関数を用いない場合を説明したが、本実施形態では一方向性関数としてハッシュ関数を用いる手法に関し説明を行う。
【0061】
[木構造管理方法]
木構造管理方式はDVDプレイヤーなどのオフラインでのコンテンツ再生機器において利用されており、ユーザの無効化を行うのに適している。この方式では、暗号化データを正当なユーザのみが復号できるように、暗号化に用いた鍵情報と暗号化コンテンツと同時に配信、もしくはメディアに格納しておく。各ユーザに対して適切な組み合わせで鍵情報を事前に配布しておく必要があるが、木構造を用いることで膨大なユーザ鍵情報を効率的に管理することができる。
【0062】
この管理方法においては、方式の良し悪しを決定するにあたり次のような指標が存在する、1)コンテンツと同時に配信される鍵情報のデータサイズ、2)ユーザを保持する事前配布された鍵情報のデータサイズ、3)コンテンツプロバイダが管理する必要のある鍵情報のデータサイズ、以上の3つの指標がそれにあたる。オンライン型配信サービスの場合にはネットワークトラフィックを左右する1)の指標が重視されるであろうが、コンテンツプロバイダの立場から考えると3)の指標の管理コストが最も重視されることになる。このようにシチュエーションにより指標の重みが変化することに留意しなければならない。
【0063】
木構造管理方法の代表的なものとしては、コンテンツ配信モデルがある(例えば、「デジタルコンテンツ保護用管理方式」SCIS2001, pp.213-218)。このモデルにおいては、図22のような鍵配布用の木構造を用いており各ノードには異なる鍵が配置される。ユーザ鍵(論文中ではDVDなどのプレイヤーが保持する鍵を想定)は末端のノード(葉ノード)と同一視され、ルートから末端ノードまでのすべての鍵データを保持するものと仮定している。本モデルでは更新が頻繁に起きることを想定しており、このように配置することで鍵無効化の効率を改良している。
【0064】
[階層的鍵管理方式]
一方、階層的鍵管理方法で想定している鍵管理は各ノードに鍵が配置されている点では同様であるが、ユーザは末端ノードだけでなく、ルートを含めたすべてのノードに位置する鍵が配布される点が大きく異なる(例えば、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等)。
【0065】
また、図22のようなn分木の構造ではなく、図23や図24のようなアクセス構造を想定しており、局所的に見ると図25のような関係になっている箇所が見受けられる。この場合、ノードn1に配置されている鍵とノードn2に配置されているの両者からノードn3の持つべき鍵を生成できるような仕組みが提供されていなければならない。この仕組みを提供する方式として次の2つの方法が提案されている。
【0066】
[(1) User multiple keying]
各ノードが複数の鍵を保持する方式であり、親ノードは子ノードのすべての鍵を保持するように構成されている。図26はその一例であり、各ノードに配布される鍵データの集合が記載されている。例えば{k5}が配布されているノードの親ノードには 鍵データk5が含まれていることがわかる。同様に他のノードにおいても親ノードには子ノードの鍵データがすべて含まれていることがわかる。
【0067】
[(2) One-way function based keying schemes]
Lin らの提案を拡張させた方式であり、一方向性ハッシュ関数を用いることで、各ノードが保持する鍵情報を削減することができる。但し、図25のように複数の親ノードの鍵データから子ノードの鍵データを生成する際には、次のような操作が必要である。この操作を図27を用いて説明する。
【0068】
図27において、鍵データ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により関連付けられたランダムデータであり、共に公開されているデータである。
【0069】
関数 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 を満たすように生成される。
【0070】
前述したように、階層的鍵管理方式において局所的に親ノードが2つ以上存在する場合(図25は2つの親ノードが存在している例である)においては、異なる親ノードから同じ鍵データを生成するのが、先に説明した第1の実施形態である。
【0071】
しかし、(1)User multiple keyingにおいては、各ノードが多くの鍵を持ち合わせていなければならず、階層が深くなるにつれて、つまり全体ノード数に比例して保持すべき鍵データが増加する問題が存在し、(2)One-way function based keying schemes においては、一方向性ハッシュ関数を用いることで各ノードが保持する鍵データ量を減らしているが、r12,r13 などの公開ランダムデータを別途保持する必要があり、(1)と同様に階層が深くなるにつれて保持すべきデータが増加するという問題が存在する。
【0072】
さらに、(2)においては、一方向性ハッシュ関数にべき乗演算が用いられている。落とし戸付きハッシュ関数による構成も考えられるが、いずれにせよ、べき乗演算が必要な演算が含まれており、計算コストが膨大である。特にPDAなどの演算リソースの少ないデバイスにおいては鍵計算に多くの時間を費やすこととなり、結果としてデータ復号時にインタラクティブな処理ができなくなる可能性がある。
【0073】
そこで、本第2の実施形態では、この問題点に鑑み、階層的鍵管理方法と同様のアクセス構造を持つ鍵管理方式を少ない計算量で安全に構成することを可能にする例を説明する。
【0074】
図9は、本発明の第2の実施形態に係る鍵情報処理装置の構成を概略的に示すブロック図である。
【0075】
なお、本発明の実現にあたって、図9に示される全ての機能を使用することは必須ではない。
【0076】
図9において、鍵情報処理装置100は、公衆回線等のモデム118、表示部としてのモニタ102、CPU103、ROM104、RAM105、HD(ハードディスク)106、ネットワークのネットワーク接続部107、CD108、FD(フレキシブルディスク)109、DVD(デジタル・ビデオ・ディスク、または Digital Versatile Disk)110、プリンタ115のインターフェース(I/F)117、及び操作部としてのマウス112やキーボード113等のインターフェース(I/F)111を備え、これらは、バス116を介して互いに通信可能に接続されている。
【0077】
マウス112及びキーボード113は、鍵情報処理装置100に対する各種指示等をユーザが入力するための操作部である。この操作部を介して入力された情報(操作情報)は、インターフェース111を介して、鍵情報処理装置100内に取り込まれる。
【0078】
鍵情報処理装置100での各種情報(文字情報や画像情報等)は、プリンタ115により印刷出力できるようになされている。
【0079】
モニタ102は、ユーザへの各種指示情報や、文字情報或いは画像情報等の各種情報の表示を行う。
【0080】
CPU103は、鍵情報処理装置100全体の動作制御を司るものであり、HD(ハードディスク)106等から処理プログラム(ソフトウェアプログラム)を読み出して実行することで、情報処理装置100全体を制御する。特に、本第2の実施形態では、CPU103は、HD106等から、鍵生成を実現する処理プログラムを読み出して実行することで、後述する情報処理を実施する。
【0081】
ROM104は、鍵生成のための処理プログラムや、プログラム内で用いられる各種データ(鍵生成用グラフなど)等を記憶する。
【0082】
RAM105は、CPU103での各種処理のために、一時的に処理プログラムや処理対象の情報を格納するための作業用エリア等として使用される。
【0083】
HD106は、大容量記憶装置の一例としての構成要素であり、各種データ、あるいは各種処理の実行時にRAM105等へ転送される情報変換処理等のための処理プログラム等を保存する。
【0084】
CD(CDドライブ)108は、外部記憶媒体の一例としてのCD(CD−R)に記憶されたデータを読み込み、また、当該CDへデータを書き出す機能を有する。
【0085】
FD(フロッピー(R)ディスクドライブ)109は、CD108と同様に、外部記憶媒体の一例としてのFD109に記憶されたデータを読み出す。また、種々のデータを上記FD109へ書き込む機能を有している。
【0086】
DVD(デジタル・ビデオ・ディスク)110は、CD108やFD109と同様に、外部記憶媒体の一例としてのDVD110に記憶されたデータを読み出し、また、上記DVD110へデータを書き込む機能を有している。
【0087】
なお、CD108、FD109、DVD110等の外部記憶媒体に対して、例えば、編集用のプログラム或いはプリンタドライバが記憶されている場合には、これらのプログラムをHD106へインストールしておき、必要に応じて、RAM105へ転送するように構成してもよい。
【0088】
インターフェース(I/F)111は、マウス112或いはキーボード113によるユーザからの入力を受け付けるためのものである。
【0089】
モデム118は、通信モデムであり、インターフェース(I/F)119を介して、例えば、公衆回線等を通じて外部のネットワークに接続される。
【0090】
ネットワーク接続部107は、インターフェース(I/F)114を介して、外部のネットワークに接続される。
【0091】
以下、上述した装置による鍵の生成・管理について説明する。
【0092】
[鍵生成概要]
まず、本第2の実施形態における階層的鍵管理方法における各ノードのノード鍵の生成に関する説明から行う。
【0093】
本第2の実施形態では図10や図28のように階層関係がループおよびサイクルを持たない有向グラフで表現されていることを前提とする。図36のノードn1とn2のように、複数の異なるノードがお互いに有向グラフで接続されている箇所が存在するとき、これらのノードをまとめて一つのノードとして扱うことで、このような双方向の接続関係を持つノードがない場合に帰着することができる。図37はn1とn2をn1’というひとつのノードと同一視した有向グラフである。以降、このような双方向の接続関係を持つノードがないと仮定する。
【0094】
説明の便宜上、本実施の形態では図10に示すような2つの階層を持った格子グラフを取り扱う。図11及び図12においてそれぞれのセルに記載されている3つの数字は3つの初期鍵x,y,zに対して施すハッシュ関数の回数が表現されている。例えば[2,2,N]と記されているセルでは、ノード鍵としてH(H(x))とH(H(y))を保持するとする。Nは“なし”を意味し、初期鍵zに関する情報は全く持たないことを意味する。今後、ハッシュ演算をn度施す場合にはH^n()と略記して表現するものとする。この表記法に基づけば、[2,2,N]と記されているセルはH^2(x)とH^2(y)の2つのノード鍵を持つこととなる。階層的鍵管理方式における木構造を図12に示すような行列と置き換えて説明することもできる。図11は9個のノードを有する木構造の例であり、図11の各ノードに記された数字と、図12の各セルに記された数字は、同じ対応関係であることを示す。
【0095】
まず、図11に示したような木構造において、ルートノード(図中[0,0,0]で示されるノード)を行列における一番右上のセルに対応付ける。そして、木構造における各ノードの子ノードのうち左に位置するノード、及び右に位置するノードを、夫々、行列の左のセル、及び下のセルに対応付ける。この対応付けを全てのノード、及びセルに対して順に行うことにより、図11に示した木構造は図12に示した行列に置き換えることができる。
【0096】
次に、図11または図12に示される鍵生成用データの生成方法について説明する。
【0097】
[ノードの分割]
鍵生成用データを生成するために、与えられた鍵配布グラフGにおいて、次の条件を満たすようにノードの分割を行う。ここで、ノード全体の集合をNode (G)、部分集合の組の大きさをN、分割された部分集合をSubG_1, SubG_2, …, SubG_Nという表記方法を使うこととする。
【0098】
・SubG_1∪ SubG_2∪…∪ SubG_N = Node(G),
つまり部分集合全体は全ノードを網羅する。
【0099】
・SubG_iに含まれる任意の2つの異なるノードn_a,n_bは、
n_a < n_b 又は n_a > n_b
が成立する。つまりn_a,n_bには子孫関係が存在し、一方が必ずもう一方の子孫ノードである。
【0100】
この分割された部分集合の数Nを鍵配布グラフGの鍵配布オーダーと呼びOrd(G)と表記する。
【0101】
[ノード鍵の割り当て]
部分集合SubG_iに対して1つずつ初期鍵K_iを計算し、ルートノードのノード鍵として割り当てる。ルートノードの配下にある子孫ノードは次のような法則でノード鍵が割り当てられる。
【0102】
i)各ノードはN個の初期鍵K_i(1≦i≦N)に関連付けられた番号が振られる。この番号は初期鍵K_iに対し一方向性関数を実行する回数であり、“なし”を意味する“N”が振られることもある。初期鍵K_iの当該番号が“N”のときは、初期鍵K_iに関連した鍵を保有しないことを意味する。
【0103】
ii)SubG_iに含まれるノードをそれぞれの集合内で有向グラフ上での子孫関係に従って降順にソートし、0から1つずつ増加させた番号を割り付けする。この番号は初期鍵K_iに関連付けられた番号である。
【0104】
iii)SubG_iに含まれるノードの初期鍵K_j(i≠j)に関連付けられた番号は、(初期鍵K_jに対する部分集合である)SubG_jに含まれるノードの祖先ノードではない場合には当該番号をN(なし)とし、祖先ノードであるノードの当該番号は子孫ノードとしてSubG_jに含まれるノードのうち割り当てされた番号の最小値とする。
【0105】
図19は上記のノード鍵割り当て処理をフローチャートにしたものである。以降、図119の説明を行う。ここでは、すでに全ノード集合は互いに素であり、空ではない部分集合{SubG_i}(1≦i≦N)に分割されており、それぞれの部分集合に対する初期鍵K_iが計算されているものとする。また、部分集合 SubG_iに含まれるノード数を#N(i)と記述し、部分集合SubG_iに含まれるノードは、有向グラフ上での子孫関係に従って降順にソートされ SubG_i={n(i,1),n(i,2),...,n(i,#N(i))}と記述することとする。さらにノードn(i,j)に対するノード鍵は初期鍵K_k(1≦k≦N)に一方向性ハッシュ関数を規定回数施したものであるが、この規定回数をh(i,j,k)と表記する。
【0106】
ステップS1101は1からNまで変動する変数iのループ、ステップS1102は1からNまで変動する変数jのループ、ステップS1103は1から#N(i)まで変動する変数kのループである。ステップS1104は変数iと変数kが一致するかどうか評価し、一致する場合には処理をステップS1105に進め、一致しない場合には処理をステップS1106に進める。ステップS1105はh(i,j,k)にj−1を代入し、ループ処理に戻る。ステップS1106はn(k,m)<n(i,j),つまりn(i,j)はn(k,m)の祖先ノードであることを満たすmが存在するか評価し、存在しない場合には処理をステップS1107に進め、存在する場合には処理をステップS1108に進める。ステップS1107はh(i,j,k)に“N”を代入し、ループ処理に戻る。
【0107】
ステップS1108はh(i,j,k)にmin{h(k,m,k)|n(k,m)<n(i,j)}、つまりn(i,j)がn(k,m)の祖先ノードであるノードのうちh(k,m,k)の最小値を代入し、ループ処理に戻る。
【0108】
以下、具体例を図13から図16、図17から図18、および、図28から図34を用いて説明する。
【0109】
図13は、図10に示す鍵生成グラフにおけるノード分割の例であり、3つの部分集合SubG_ 1からSubG_ 3に分割している。つまり、SubG_ 1={n0, n2, n5},SubG_ 2={n1, n4, n7},SubG_ 3={n3, n6, n8}である。このとき、h(i,j,i)のみを表示したものが図14である。たとえば{h(1,1,1),h(1,2,1),h(1,3,1)}={0,1,2}であり、これはステップS1104およびS1105に対応する。さらにノードの子孫関係から“N”となる箇所を記載したものが図15である。たとえばh(1,1,3)=“N”であるが、これはn(3,m)<n(1,1)=n3となるmは存在しないことに起因する。実際n(3,1)= n0,n(3,2)=n2,n(3,3)=n5でありこのことが確認できるが、これはステップS1106およびS1107に対応する。さらにn(3,m)<n(i,j)を満たすすべてのi,jでチェックして反映した結果が図16である。たとえばh(2,1,1)=0であるが、これはn(1,m)<n(2,1)=n1となるmには1,2,3の可能性があるが、h(1,1,1)=0,h(1,2,1)=1,h(1,3,1)=2のうち最小値である0が選択される。さらにn(2,m)<n(i,j)を満たすすべてのi,jでチェックし,最終的には図12を得る。
【0110】
また、図13とは異なる図17に記載のノード分割による構成方法は、図19のフローチャートにより図12と同様に構成でき、図18を得る。図12と図18では、総ハッシュ演算量が図18の場合が多くなる。
【0111】
次に図28に示す鍵生成グラフにおけるノード鍵の構成方法について説明する。図29は、図28に示す鍵生成グラフにおけるノード分割の例であり、3つの部分集合SubG_ 1からSubG_ 3に分割している。つまりSubG_ 1={n0, n1, n4, n7},SubG_ 2={n3, n6},SubG_ 3={n2, n5}である。このとき図19に記載のフローチャートに基づき構成したノード鍵は図30のとおりである。以下、図30に至るまでの構成を説明する。まず、h(i,j,i)のみを表示したものが図31である。たとえば{h(1,1,1),h(1,2,1),h(1,3,1),h(1,4,1)}={0,1,2,3}であり、これはステップS1104およびS1105に対応する。さらにノードの子孫関係から“N”となる箇所を記載したものが図32である。たとえばh(1,2,3)=“N”であるが、これはn(3,m)<n(1,2)=n1となるmは存在しないことに起因する。実際n(3,1)= n3,n(3,2)= n6でありこのことが確認できるが、これはステップS1106およびS1107に対応する。さらにn(1,m)<n(i,j)をすべてのi,jでチェックして反映した結果が図33である。たとえばh(2,1,1)=2であるが、これはn(1,m)<n(2,1)=n3となるmには3,4の可能性があるが、h(1,3,1)=2,h(1,4,1)=3のうち最小値である2が選択される。同様にしてn(2,m)<n(i,j)をすべてのi,jでチェックして反映した結果が図34であり、最終的には図30を得る。
【0112】
さらに、終端ノードに鍵を配布しない場合を考える。これは画像データにおけるサムネイル画像など、制限なしにデータアクセス可能な状態を作ることができる。図35はその例であり、終端ノードは[N, N, N]と記載されているようにノード鍵が存在しないことを意味する。これは、終端ノードのみをノード分割時nどの部分集合にも含めない状態から図19のフローチャートに適用することで得ることができる。ここでは終端ノードのひとつのみに対しノード鍵を配布しない例を示したが、複数ノードにした場合でも同様に構成できることは明らかである。
【0113】
[生成された鍵の満たすべき条件]
上記の鍵生成方式は次の条件を満たすように構成されている。
【0114】
a. 生成可能性:対象ノードはその孫ノードの鍵を生成できること
b. 結託攻撃回避性:(一方向性関数が脆弱にならない限り)任意の二つ以上のノードに位置するエンティティが結託しても、夫々のノードより上位に位置する祖先ノードの鍵は生成できないこと
これらの条件により、安全に鍵生成と鍵配布を行うことができる階層的鍵管理方式が実現できる。
【0115】
[鍵配布]
ルート鍵配布者(ルートノードのエンティティ)による各ノードへの鍵配布方法と、ルート鍵配布者以外の個別鍵を保持するエンティティによる下位ノードへの鍵配布方法とについて、それぞれ説明する。まずルート鍵配布者は、鍵配布グラフGに応じて決まる鍵配布オーダーOrd(G)個のパラメータ{x_i}(1≦i≦Ord(G))をランダムに且つ安全に生成し、それらを自身の個別鍵とする。さらに前述した鍵生成手順により各ノードに複数の鍵を配置する。ルート鍵配布者は各ノードに位置するエンティティに対して、各ノードの鍵を安全に配布する。また、鍵配布グラフを公開し、各エンティティに対して、配布された鍵がグラフのどの位置の鍵であるかを識別できるデータを配布する。このデータは例えば、格子グラフを鍵配布グラフとする場合には、行列表記したときの座標により構成するようにすれば良い。
【0116】
[情報処理装置における鍵生成・配布処理]
前記情報処理装置100において以上の鍵生成・配布処理を行う手順について説明する。画像などの管理対象データをCD108もしくはネットワークのネットワーク接続部107を通して取得しHD106に格納するか、もしくはHD106に既に格納されているデータの中から選択する。ここで、ユーザはモニタ102に表示した一覧からマウス112もしくはキーボード113などを使って選択する。
【0117】
管理対象データに対して何階層の階層軸を持たせるかなどのアクセス制御構造を同様の方法を用いてユーザが選択すると、その構造に応じた鍵生成用グラフをCPU103を用いて計算を行い、RAM105やHD106などに格納する。
【0118】
ROM104やRAM105やHD106もしくはマウス112の動作などのデータからランダムデータを生成し、そのランダムデータを用いて、複数のオリジナル鍵を生成し、RAM105やHD106などに格納する。さらに鍵生成用グラフにおける各ノードの個別鍵をオリジナル鍵から演算し、RAM105やHD106などに格納する。
【0119】
他の情報処理装置に対して、RAM105やHD106などに格納された個別鍵を読み出して、ネットワーク接続部107を通じてネットワークを介して配布を行う。
【0120】
<第3の実施形態>
第2の実施形態における鍵配布方式により生成された階層的な構造を持つ鍵データを用いたアクセス制御の好適例を説明する。図10で表現されている格子鍵生成グラフは2つの階層軸を持っている。このうち1つ(左下方向)を解像度、もう片方(右下方向)を画像領域とした場合の例を図20に示す。
【0121】
解像度には高、中、低の3つのレベルがあり、取得できる画像の解像度を示す。画像領域にも3つのレベルがあり、すべての領域、サブ領域A、(サブ領域Aよりも狭い)サブ領域B、の閲覧の権限が与えられるとする。このときルートに位置する権限の最も大きいノードには(解像度=高、画像領域=すべて)が割り当てられ、最下位のノードには(解像度=低、画像領域=領域B)が割り当てられている。
【0122】
図11または図12に則った鍵配布を行う場合を例として、鍵配布方法および画像暗号化方法を説明する。対象画像データIMGは領域Bの画像データIMG1、領域A差分データをIMG_2、すべての画像データを得るための差分データをIMG_3とする。つまりIMG=IMG_1+IMG_2+IMG_3である。また、それぞれのIMG_iは低解像度データをIMG_i(L)、中解像度差分データをIMG_i(M)、高解像度差分データをIMG_i(H)とする。つまりIMG_i=IMG_i(L)+IMG_i(M)+IMG_i(H)である。
【0123】
まずルート鍵配布者はランダムにオリジナル鍵x,y,uを生成する。暗号化に使う鍵Key(<High,All>):=H(x||y||u)とし、この鍵でIMG_3(H)を暗号化する。ただし||はデータの連結とする。それぞれの子ノードでは取得した3つのデータをルートノードと同様に連結して暗号鍵を生成し、図21に記載のデータを暗号化する。
【0124】
例えば、<Mid,All>ノードでは、鍵データとしてH(x),H^3(y),uが与えられているが、暗号鍵Key(<Mid,All>):=H(H(x)||H^3(y)||u)とし、この鍵でIMG_3(M)を暗号化する。暗号化されたデータを復号する際には、同様の処理を行って暗号鍵を計算し復号処理をして適切な画像データを取得する。
【0125】
本実施形態では、暗号鍵の生成方式として鍵を連結してハッシュする方式を採用したが、その他の鍵連結方式(複数の鍵データから1つの鍵を計算する方式)に従ってもかまわない。
【0126】
また、本実施形態では解像度と画像領域を階層軸として取り上げたが、本発明はこれに限定されることなく、画質や時間軸や利用制御情報などアクセス制御の対象とすべき階層の中から、任意の二つ以上の階層を選択して利用することも可能である。
【0127】
<ソフトウエアなどによる他の実施の形態>
本発明は、複数の機器(例えばホストコンピュータ、インターフェース機器、リーダ、プリンタ等)から構成されるシステムの一部として適用しても、ひとつの機器(たとえば複写機、ファクシミリ装置)からなるものの一部に適用してもよい。
【0128】
また、本発明は上記実施の形態を実現するための装置及び方法及び実施の形態で説明した方法を組み合わせて行う方法のみに限定されるものではなく、上記システムまたは装置内のコンピュータ(CPUあるいはMPU)に、上記実施の形態を実現するためのソフトウエアのプログラムコードを供給し、このプログラムコードに従って上記システムあるいは装置のコンピュータが上記各種デバイスを動作させることにより上記実施の形態を実現する場合も本発明の範疇に含まれる。
【0129】
またこの場合、前記ソフトウエアのプログラムコード自体が上記実施の形態の機能を実現することになり、そのプログラムコード自体、及びそのプログラムコードをコンピュータに供給するための手段、具体的には上記プログラムコードを格納した記憶媒体は本発明の範疇に含まれる。
【0130】
この様なプログラムコードを格納する記憶媒体としては、例えばフロッピー(R)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
【0131】
また、上記コンピュータが、供給されたプログラムコードのみに従って各種デバイスを制御することにより、上記実施の形態の機能が実現される場合だけではなく、上記プログラムコードがコンピュータ上で稼働しているOS(オペレーティングシステム)、あるいは他のアプリケーションソフト等と共同して上記実施の形態が実現される場合にもかかるプログラムコードは本発明の範疇に含まれる。
【0132】
更に、この供給されたプログラムコードが、コンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードや機能格納ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって上記実施の形態が実現される場合も本発明の範疇に含まれる。
【図面の簡単な説明】
【0133】
【図1】従来技術における解像度とレイヤにおける鍵情報の問題点を説明するための図である。
【図2】第1の実施形態における解像度とレイヤにおける鍵情報の相関を示す図である。
【図3】第1の実施形態における装置の構成例を示す図である。
【図4】第1の実施形態におけるRSA暗号を用いた場合の鍵の相関を示す図である。
【図5】第1の実施形態における暗号化及び鍵生成に係る構成例を示す図である。
【図6】実施形態が適用するシステム構成例を示す図である。
【図7】ウェーブレット変換の例を示す図である。
【図8】エントロピー符号化する際のレイヤを説明するための図である。
【図9】本第2、第3の実施形態に係る鍵情報処理装置の構成を概略的に示すブロック図である。
【図10】第2の実施形態に係る有向グラフの例を説明する図である。
【図11】第2の実施形態に係る鍵配布グラフの例を示す図である。
【図12】第2の実施形態に係る鍵配布行列の例を示す図である。
【図13】第2の実施形態に係る図10に記載の鍵配布グラフにおけるノード分割の例を説明する図である。
【図14】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図15】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図16】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図17】第2の実施形態に係る図10に記載の鍵配布グラフにおけるノード分割の別例を示す図である。
【図18】第2の実施形態に係る鍵配布行列の例を示す図である。
【図19】第2の実施形態に係るノード鍵生成手順を表すフローチャートである。
【図20】第3の実施形態に係る階層型アクセス構造を説明する概念図である。
【図21】第3の実施形態に係る各ノードが暗号化すべき画像リストを表わすテーブルを示す図である。
【図22】木構造管理方式における2分木アクセス構造を説明する概念図である。
【図23】階層的なアクセス制御方式におけるアクセス構造を説明する概念図である。
【図24】階層的なアクセス制御方式におけるアクセス構造を説明する概念図である。
【図25】階層的なアクセス制御方式における局所的構造を説明する概念図である。
【図26】User multiple keyingの例を説明する図である。
【図27】One-way function based keying schemesを説明する図である。
【図28】第2の実施形態に係る有向グラフの例を示す図である。
【図29】第2の実施形態に係る図10に記載の鍵配布グラフにおけるノード分割の例を説明する図である。
【図30】第2の実施形態に係る鍵配布グラフの例を示す図である。
【図31】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図32】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図33】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図34】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図35】第2の実施形態に係る鍵配布グラフの例を示す図である。
【図36】第2の実施形態に係る双方向に接続関係を持つノードが存在する有向グラフの例を示す図である。
【図37】第2の実施形態に係る図36に記載の有向グラフにおいて、双方向に接続関係を持つノードが存在しないように変更した有向グラフの例を示す図である。
【技術分野】
【0001】
本発明は画像データの暗号化技術に関するものである。
【背景技術】
【0002】
画像データなどを秘匿して伝送するために、画像データ全体の暗号化やスクランブルなどが行なうことが行われている。これは、予め画像データ全体に対して暗号鍵を用いて暗号化し、この暗号鍵に対応する復号鍵の情報を有するコンピュータだけが正しく復号可能とする技術でもある。
【0003】
一方、画像データが複数のタイルから構成される場合、タイル毎に再生の可否を制御する目的で、タイル毎に異なる暗号鍵を用いて暗号化処理が行われる。
【0004】
また、階層構造を有する画像データの場合、その階層構造に応じて画像データの再生を制御する目的で、階層構造毎に異なる暗号鍵を用いて暗号化処理が行われる。
【0005】
ただし、その階層は複数のパラメータによって定まる場合がある。例えば、ISO/IEC JTC 1/SC29/WG1にて標準化されているJPEG2000規格と呼ばれる技術においては、1つのタイルに対して、その解像度、及びビットプレーン毎の符号の集合であるレイヤ、色成分などを表すコンポーネント、タイルにおける位置を表すプレシンクトの4つのパラメータが決まることによって1つの階層構造データが定義される(非特許文献1))。更に、これらを合わせた場合として、複数のタイルから構成され、更に夫々のタイルが階層構造を有する画像データの場合、タイルと階層構造に応じた画像データの再生を制御する目的で、タイル中の階層構造に対して異なる暗号鍵を用いて暗号化処理が行われる。
【0006】
このように、タイル、及び階層構造に対して異なる暗号鍵を用いて暗号化することによりタイル、及び階層構造毎に画像データの再生を制御することが可能である。しかしながら、暗号化された画像データの所定のタイル、及び階層構造を復号処理するためには、暗号化処理に用いた暗号鍵をすべて管理すると共に、復号処理の際に適当な復号鍵を供給する必要があり、暗号化する側及び復号する側のそれぞれの鍵情報の管理が繁雑となり易い。
【0007】
それに対して、鍵情報の管理を容易にするためにタイル、コンポーネント、プレシンクトに関する鍵を独立に生成し、解像度とレイヤに関する鍵は前後の解像度及びレイヤの鍵に依存して生成する手法がある。これは、タイルやコンポーネント、プレシンクトはランダムにアクセスされる可能性が高いので、各パラメータを識別する識別子に応じて鍵を生成し、解像度やレイヤに関しては高解像度または高レイヤの画像を再現するためには必ず低解像度または低レイヤの画像データへのアクセスが必要なため、高解像度または高レイヤのデータを暗号化する鍵から1つ下の低解像度または低レイヤのデータを暗号化する鍵を生成することにより管理すべき鍵を削減するという手法である。
【0008】
この手法では、1つの画像に関するマスター鍵をKとしたとき各タイル、コンポーネント、プレシンクト毎の鍵Kiが一方向性関数を用いて、下記のように生成される。ここで、一方向性関数とはy=H(x)においてxからyを求めることは容易であるが、yからxを求めることは困難な関数である。一方向性関数としてはMD5 (Message Digest 5), SHA−1 (Secure Hash Algorithm 1) 等のハッシュ関数やDES(Data Encryption Standard)やAES(Advanced Encryption Standard)等の暗号化関数が知られている。
Ki=H(K||i) (1)
ここで、H()は一方向性関数を、x||yはxとyの連接を表し、iは各タイル、コンポーネント、プレシンクトを識別するための値(識別情報)である。
【0009】
また、各解像度及びレイヤに対する鍵Kiは下記のように生成される。
Ki=H(Ki-1) (2)
ここで、iは対象となる解像度またはレイヤを表す値であり、Ki-1は1段階前の解像度(注目している解像度よりも高い解像度)または1段階前のレイヤ(注目しているレイヤよりも高いレイヤ)に対して用いた鍵である。
【0010】
よって、指定されたタイル及び階層化データに対する暗号鍵Ktcprlとし、指定されたタイル、コンポーネント、プレシンクト、解像度、レイヤに対する鍵をKT、KC、KP、KR、KLと表現すると、
Ktcprl=H(KT||KC||KP||KR||KL) (3)
として生成される。
【0011】
以上から、対象となるタイル、及び階層構造に異なる暗号鍵を用いて暗号化することによりタイル、及び階層構造に対して画像データの再生を制御することが可能となる。
【非特許文献1】標準勧告書(ISO/IEC 15444−1)
【発明の開示】
【発明が解決しようとする課題】
【0012】
しかし、このようにタイル、及び階層構造に対して異なる暗号鍵を用いて暗号化した場合、解像度及びレイヤに関しては以下のユーザの結託による鍵の漏洩という問題が発生する。
【0013】
例えば、図1に示すようにユーザAに最高解像度に対する鍵KRnと最低レイヤに対する鍵KL0を渡し、ユーザBに最低解像度に対する鍵KR0と最高レイヤに対する鍵KLmを渡す。通常、ユーザAは式(2)の関係からKL0以上の高レイヤデータにはアクセスできず、ユーザBはKR0以上の高解像度データにはアクセスできない。
【0014】
すなわち、図1ではユーザAはR0L0,R1L0,・・・,RnL0しかアクセス(暗号復号)できず、ユーザBはR0L0,R0L1,・・・,R0Lmしかアクセスできない。
【0015】
ところが、もしユーザA,Bが互いに鍵KLnとKRnを教えあうと、各々の鍵はそれ以下の解像度またはレイヤの鍵全てを生成できるので、結局のところ、ユーザA,Bは互いに全ての解像度とレイヤの画像を再現できることになる。すなわち、図1ではR0L0からRnLmまでの全ての範囲をアクセスできることになる。
【0016】
上記例は極端な例かもしれないが、インターネットという不特定多数のユーザが互いに通信できる環境にある場合、上記のような不測の事態がおこり得ると言わねばならない。
【0017】
本発明はかかる問題点に鑑みなされたものであり、少なくとも2つのパラメータでもって各階層のデータを特定できる階層構造を有する画像データを暗号化する際に、アクセス鍵の管理を容易にしつつ、複数のユーザによるアクセス鍵の交換に対しても耐性の高い画像データの暗号化技術を提供しようとするものである。
【課題を解決するための手段】
【0018】
この課題を解決するため、例えば本発明の画像データ暗号化の制御方法は以下の工程を備える。すなわち、
画像データを鍵情報を用いて暗号化する画像データ暗号化装置の制御方法であって、
階層的な構造を持ち、各階層のデータが少なくとも2つのパラメータで特定でき、且つ、それぞれのパラメータが多段階のレベルで表現される画像データを入力する入力工程と、
入力した画像データに対し、前記2つのパラメータが共に最大レベルで特定される階層のデータに対する鍵情報を起源とし、前記2つのパラメータで特定される階層のデータ用の鍵情報を、当該階層のデータより1つ高位に位置する階層内の2つのデータ用の鍵情報のいずれからも生成可能な、一方向性の所定の関数を用いて鍵情報を生成する生成工程と、
前記設定工程で設定された鍵情報、及び、前記生成工程で生成された鍵情報に従い、前記入力工程で入力した該当する階層のデータを暗号化する暗号化工程とを備える。
【発明の効果】
【0019】
本発明によれば、少なくとも2つのパラメータでもって各階層のデータを特定できる階層構造を有する画像データを暗号化する際に、アクセス鍵の管理を容易にしつつ、複数のユーザによるアクセス鍵の交換に対しても耐性の高い画像データの暗号化技術が提供できるようになる。
【発明を実施するための最良の形態】
【0020】
以下、添付図面に従って本発明に係る実施形態を説明する。
【0021】
<全体構成の説明>
実施形態におけるシステム概要例を図6に示す。図中、60はインターネットであって、61は例えばデジタルカメラやイメージスキャナ、フィルムスキャナ等で撮像した画像データを圧縮符号化&暗号化処理を行う装置である。62は画像データを受信し、復号する装置、63は復号する際に必要となる暗号化解除鍵を記憶している認証サーバある。装置61乃至63はパーソナルコンピュータ等の汎用装置で構わない。処理の流れを簡単に説明すると、次の通りである。
【0022】
装置61では、所望とする画像データを圧縮符号化及び暗号化処理を行い、インターネット60を介して配布する。配布するのは装置61が直接行ってもよいし、適当なサーバを介して配布しても構わない。ただし、暗号化されている関係で、その解除するために必要な鍵情報を、その画像データを特定する情報(例えばID)と共に認証サーバ63が有するDBに登録しておく。画像復号装置62は所望とする画像を受信し、復号を行ない閲覧するものであるが、暗号化されている画像データを閲覧するには、認証サーバ63にその画像を特定する情報を通知して、暗号化解除鍵情報を要求する。この結果、暗号化解除鍵情報が認証サーバ63より受信するので、それを用いて暗号化を解除し、復号再生する。
【0023】
実施形態では説明を簡単なものとするため、暗号化対象の画像(ファイル)はISO/IEC JTC1/SC29/WG110918−1において標準化されている、通称JPEG2000と呼ばれる圧縮符号化方式によって符号化されたデータであるものとして説明するが、JPEG2000に本発明が限定されることなく、JPEGなど種々の圧縮符号化の方式を適応可能であることは以下の説明から明らかになるであろう。
【0024】
ここで、装置61の構成について説明する。
【0025】
装置61は上記の通り、パーソナルコンピュータ等の汎用情報処理装置で良いが、その具体的な構成例は例えば図3に示す通りである。
【0026】
図中、302は装置全体の制御を司るMPUであり、303は主記憶装置(MPU302のワークエリア及びOS、実施形態における暗号化処理プログラムをロードするRAM、及び、ブートプログラムやBIOS等を記憶しているROMで構成される)である。304はOS、暗号化処理プログラムをはじめ、各種ファイルを記憶するハードディスク装置(HDD)である。305はビデオメモリ、MPU302の制御に従ってそのメモリに描画するコントローラ、並びに表示装置であるモニタ306にメモリに描画されたデータをビデオ信号として出力するビデオコントローラである。モニタ306は装置に一体となっていても構わないが、外付けでも構わない。307はシステムバスである。
【0027】
308はプリンタ316を接続するためのインタフェースであり、309はCDROMドライブ、310はDVDドライブ、311はフロッピー(登録商標)ドライブである。312はマウス等のポインティングデバイス313、キーボード314を接続するためのインタフェースであり、315はイメージスキャナ317を接続するためのインタフェースである。更に、318はインターネット60に接続するためのネットワークインタフェースである。
【0028】
上記構成において、実施形態では、例えばスキャナ317で原稿を読取り暗号化を行ない、先に説明したように、その結果を配布するものである。但し、暗号化対象はイメージスキャナ317に限らず、CDROM等の記憶媒体から読出した画像データや、或いは、デジタルカメラを接続し、それで撮像した画像でも構わない。要するに暗号化対象の画像データは如何なる手段で入力したものでも良い。
【0029】
<暗号鍵の説明>
上記構成において、実施形態では、暗号化対象となる画像データは、ISO/IEC JTC 1/SC29/WG1にて標準化されているJPEG2000規格と呼ばれる技術でもって圧縮符号化された画像データファイルに対して行うものとする。この圧縮技術そのものは、公知であるので、その詳述は省略するものとする。
【0030】
JPEG2000においては、1つのタイルに対して、その解像度、及びビットプレーン毎の符号の集合であるレイヤ、色成分などを表すコンポーネント、タイルにおける位置を表すプレシンクトの4つのパラメータが決まることによって1つの階層構造データが定義される。本実施形態では、このような階層構造を持った圧縮画像データに対して暗号化するものである。
【0031】
図7は或るタイルに対して2回ウェーブレット変換を行ったときの周波数成分を示している。1回目のウェーブレット変換を行った際、HL1、HH1、LH1そしてLL1の4つのサブバンドのデータが得られるが、2回めではLL1に対して同様の処理を行う。LL成分は常に1つしか発生しないため、添え字は付けないで表現することが多い。ここで、LL成分のデータは低周波成分のデータであり、もともとのタイルサイズに対して縦横それぞれ1/4の画像でもある。つまり、図示のLL成分はタイルで示された画像の1/4の解像度(最低解像度)のデータであると言える。このLL成分のデータに対し、{HL2+HH2+LH2}のデータを用いて復号することで、1段階高い解像度の画像が再現でき、更に{HL1+HH1+LH1}で示されるデータを用いて再現することで元々のタイルサイズと同じ最も高い解像度の画像を再現できる。すなわち、LL、{HL2+HH2+LH2}、{HL1+HH1+LH1}の順に解像度が徐々に高いデータとなっていると言える。実際には、このウェーブレット変換後、量子化処理を行ない、個々の成分内の値を少ないビット数に変換し、そしてエントロピー符号化を行うことになる。
【0032】
図8はその量子化後のデータを示している。図示では簡単にするため、量子化後のデータとして4×4のデータを示している。この例では、量子化インデックスが3個存在しており、それぞれ+13、−6、+3の値を持っている。エントロピ符号化では、この中の最大値MAXを求め、次式により最大の量子化インデックスを表現するために必要なビット数Sを計算する。
S = ceil(log2( abs(MAX) ))
ここでceil(x)はx以上の整数の中で最も小さい整数値を表す関数である。
【0033】
図8では、最大の係数値は13であるのでSは4であり、シーケンス中の16個の量子化インデックスは同図(b)に示すように4つのビットプレーンを単位として処理が行われる。最初にエントロピ符号化部114は最上位ビットプレーン(同図MSBで表す)の各ビットをエントロピ符号化(本実施の形態では2値算術符号化)し、ビットストリームとして出力する。次にビットプレーンを1レベル下げ、以下同様に対象ビットプレーンが最下位ビットプレーン(同図LSBで表す)に至るまで、ビットプレーン内の各ビットを符号化し符号出力部に出力する。なお上記エントロピ符号化時において、各量子化インデックスの符号は、上位から下位へのビットプレーン走査において最初(最上位)に符号化されるべき非0ビットが検出されるとそのすぐ後に当該量子化インデックスの正負符号を示す1ビットを続けて2値算術符号化することとする。これにより、0以外の量子化インデックスの正負符号は効率良く符号化される。
【0034】
図示の場合、ビット0乃至3の4つのプレーンが生成されるが、高位のビットプレーンほど支配的であることがわかる。これは、ちょうど最高位(図示ではビット3のプレーン)が先に示した低解像度のデータに対応し、ビット0のプレーンが最高解像度のデータを再現するために利用されるものに対応している。このように、エントロピ符号化されたエントロピ符号を所定の符号量となるように集めた処理単位(ビットプレーン)をレイヤと呼ぶ。複数のレイヤを構成することにより、復号時に種々の符号量に対応した画像を再生することが可能となる。
【0035】
さて、JPEG2000による圧縮符号化データのコードストリームは、先ず、メインヘッダがあって、上記の解像度やレイヤ、更には色成分などを表すコンポーネント、プレシンクトの4つのパラメータで示される1以上のタイルパートと呼ばれるデータが後続することになる。タイルパートは、更にタイルパートヘッダと少なくとも1以上のコードブロックを内包する。
【0036】
本実施形態でのコードブロックは、それがどの解像度レベルであって、どのレイヤであるかを示す情報がタイルパートヘッダに示されており、これを参照して利用する暗号化鍵情報を特定し、暗号化を行う。
【0037】
図2においては、KRLijは、所定の解像度とレイヤに対応する階層化データを表すRiLjへのアクセス鍵情報を表わすものとする。ある解像度とレイヤに対応するアクセス鍵KRLijに対して、以下のように鍵は更新される。
KRLi-1,j=F(a,KRLij) (4)
KRLi,j-1=F(b,KRLij) (5)
ただし、F()は鍵aまたはbを用いる一方向性関数であり、
F(a,F(b,K))=F(b,F(a,K)) (6)
という関係が成り立つものである。
【0038】
以上の関係式(6)は、前述したMD5 (Message Digest 5), SHA−1 (Secure Hash Algorithm 1) 等のハッシュ関数やDES(Data Encryption Standard)やAES(Advanced Encryption Standard)等の暗号化関数では実現されない。
【0039】
そこで、この関係を満足させるため、下記演算によって実現した。ここで、N=(p−1)(q−1)(p,qは素数)であり、a,bは公開されているとする。
(K^b)^a mod N=(K^a)^b mod N (7)
ここで「x^y」はxのy乗を示し、「x mod y」 はxをyで除算した際の余りを返す関数である(「^」は「mod」よりも演算結合強度が強い)。
【0040】
式(7)はRSA暗号と同じ原理であり、a,bが公開されていても、その秘密鍵に相当するa’,b’がわからなければ逆演算はできず一方向性が保証されるものである。
【0041】
これにより、従来方式の課題である下記の問題が解決される。
【0042】
i.最高解像度かつ最低レイヤのデータにアクセスできるユーザAにアクセス鍵KRLn0を渡す。ユーザAは公開鍵aを用いて式(4)からアクセス鍵 KRLn-1,0〜KRL00を生成できる。しかし、もう1つの公開鍵bを用いて式(5)を実行してもレイヤ方向の逆演算はF()の一方向性から実現できず、より高レイヤのアクセス鍵を得ることはできない。
【0043】
ii.また、最低解像度かつ最高レイヤのデータにアクセスできるユーザBにアクセス鍵KRL0mを渡す。ユーザBは公開されている鍵bを用いて式(5)からアクセス鍵KRL0,m-1〜KRL00を生成できる。また同様に、F()の一方向性からユーザBは高解像度に対するアクセス鍵は生成できない。
【0044】
iii.ここで、ユーザAとユーザBが結託し、互いのアクセス鍵KRLn0とKRL0mを教えたとする。しかし、KRLn0とKRL0mは前述した範囲の鍵を生成できるのみであり、他の鍵を生成することはできない。以上の原理を式(7)を用いて図示すると図4のようになる。
【0045】
図4は、次のような意味である。或るタイルの最大解像度、最高レイヤ(ビット0のプレーン)に対しアクセス鍵Kを設定する。このアクセス鍵Kを起源として、図示矢印方向(一方向性)のアクセス鍵情報を生成していく。
【0046】
この結果、例えばユーザAが鍵「K^mb」(最大解像度、最低レイヤ(MSBのビットプレーン)を取得し、ユーザBが鍵「K^nb」を取得し、互いにその鍵情報を交換したとしても、鍵Kを生成すること実質的に不可能とすることができる。図1で説明した従来技術に対して遥かに、複数ユーザの結託に対して高い強度が保持されるのがわかる。
【0047】
上記処理を解像度をレイヤに関するアクセス鍵の生成及び暗号化部は図5に示す構成で実現できる。なお、同図の各処理部はソフトウェアの機能として読み替えることができることに注意されたい。
【0048】
ここでは簡単のためタイルやコンポーネントなどの部分は階層化されていないとする。
【0049】
まず、画像データ500が入力されると階層化部501において、画像500は、解像度とレイヤに関して図2に示すような高解像度から低解像度、高レイヤから低レイヤの種々のデータに階層化される。ここでは上から順にRnLm,Rn-1Lm,RnLm-1,Rn-2Lm,・・・が出力されるとする。
【0050】
一方、最高解像度かつ最高レイヤの階層化データRnLmに対するアクセス鍵情報をKとする。この鍵はK=KRLnmであり、それを用いてRnLmを暗号化部502において暗号化する。暗号化部502で用いる暗号化手法はここでは限定しないが、DESやAESなど種種の暗号化手法を利用することができる。その結果RnLmを暗号化したCRnLmが出力される(CRiLjはRiLjを暗号化したデータであることを示す)。
【0051】
鍵KはR鍵変換部503において式(4)による解像度方向の鍵の更新が行われ、L鍵変換部504において式(5)によるレイヤ方向の鍵の更新が行われる。よって、鍵K=KRLnmからR鍵変換部においてKRLn-1,m=K^aが計算され出力される。同様に、鍵K=KRLnmからL鍵変換部においてKRLn,m-1=K^bが計算され出力される。ただし、a,bはあらかじめ変換部503、504に設定されているとする。これを用いて、階層化部501から出力されたRn-1Lm,RnLm-1の符号化データに対して暗号化部502において暗号化が行われる。
【0052】
以降、解像度方向には前の解像度に対する鍵を入力としてR鍵変換部において式(4)の演算が、レイヤ方向には前のレイヤに対する鍵を入力としてL鍵変換部において式(5)の演算が実行され、鍵が更新される。その更新された鍵を用いて以降の階層化構造データに対して暗号化が行われる。ただし、斜め方向のデータに対する鍵の計算、例えばKRLn-1,m-1に相当する図4におけるK^(a+b)の計算は、前の解像度方向の鍵K^bを入力としてR鍵変換部で計算しても、前のレイヤ方向の鍵K^aを入力としてL鍵変換部で計算しても同じ結果が得られるのでどちらでも良い。
【0053】
これに対する復号処理は、図5の暗号化部502を用いた暗号手法に対する復号手段である復号化部に置き換えた構成によって実現できることは明らかである。
【0054】
上記実施形態では簡単のためタイルやプレシンクト、コンポーネントは階層化されていないとしたが、タイルやプレシンクト、コンポーネントに対して階層化されていても式(1)によって各アクセス鍵KT,KC,KPが生成され、式(3)に代わって下記の式によって全体のアクセス鍵が生成できる。
Ktcprl=H(KT||KC||KP||KRL) (8)
ここで、KRLは本実施形態で示した解像度とレイヤに対する鍵である。
【0055】
また、タイルやプレシンクト、コンポーネントなどの他の成分に対しても相関を持たせる場合、タイルやプレシンクト、コンポーネントに対して各々鍵c,d,eを定め、多次元の階層化データとして同様の手法によりユーザの結託を防止することもできる。
【0056】
また、実施形態では式(4)〜(6)の関係を成り立たせる手法として式(7)を示したが、それに限らないことは明らかである。例えば、楕円曲線状のべき乗剰余演算などでも良い。
【0057】
また、第1の実施形態では解像度とレイヤに対するアクセス鍵の更新を公開鍵a,bによって示したが、
KRLi-1,j=E(KRLij) (9)
KRLi,j-1=G(KRLij) (10)
E(G(K))=G(E(K)) (11)
の関係を満たすものでも良い。
【0058】
以上説明したように本実施形態によれば、複数のタイル及び階層構造を有する画像データに対して、タイル及び階層構造毎に異なる暗号鍵を用いて暗号化した場合にも、複数ユーザによる鍵情報の交換による漏洩、或いは、不正アクセスが解決され、かつ複数の鍵を管理する必要がないようにできることになる。
【0059】
なお、実施形態では、図4に示す2軸に対し、解像度、レイヤを適用した例を説明したが、一方の軸、或いは、両方に対し、タイル、プレシンクト、コンポーネントを割り当てても構わない。但し、タイルやプレシンクトの場合には、多段階レベルは、その位置情報として扱うことになろう。
【0060】
<第2の実施形態>
通信回線やDVDなどの大容量記録メディアを通じて、文書や画像データなどのデジタルコンテンツが流通する機会が増加している。このようなコンテンツ配信サービスにおいては、コンテンツを配信するコンテンツプロバイダが存在する。コンテンツプロバイダでは、複数のコンテンツのそれぞれに対して異なるアクセス制御情報の設定を行う必要があり、コンテンツごと、ユーザごと、さらにはユーザのアクション(例えば、閲覧、コピーなど)ごとに異なる鍵による暗号化処理を行うことが想定されている。この処理において、鍵生成、鍵保持、鍵配信などの鍵情報に関わるマネージメントはコンテンツプロバイダにおいて非常に負荷がかかることが多い。そこで鍵管理に関して、セキュリティレベルを低下させることなく、より効率的な管理方法に関する研究が行われている。そのいくつかに関して説明を行う。特に、第1の実施形態はハッシュ関数を用いない場合を説明したが、本実施形態では一方向性関数としてハッシュ関数を用いる手法に関し説明を行う。
【0061】
[木構造管理方法]
木構造管理方式はDVDプレイヤーなどのオフラインでのコンテンツ再生機器において利用されており、ユーザの無効化を行うのに適している。この方式では、暗号化データを正当なユーザのみが復号できるように、暗号化に用いた鍵情報と暗号化コンテンツと同時に配信、もしくはメディアに格納しておく。各ユーザに対して適切な組み合わせで鍵情報を事前に配布しておく必要があるが、木構造を用いることで膨大なユーザ鍵情報を効率的に管理することができる。
【0062】
この管理方法においては、方式の良し悪しを決定するにあたり次のような指標が存在する、1)コンテンツと同時に配信される鍵情報のデータサイズ、2)ユーザを保持する事前配布された鍵情報のデータサイズ、3)コンテンツプロバイダが管理する必要のある鍵情報のデータサイズ、以上の3つの指標がそれにあたる。オンライン型配信サービスの場合にはネットワークトラフィックを左右する1)の指標が重視されるであろうが、コンテンツプロバイダの立場から考えると3)の指標の管理コストが最も重視されることになる。このようにシチュエーションにより指標の重みが変化することに留意しなければならない。
【0063】
木構造管理方法の代表的なものとしては、コンテンツ配信モデルがある(例えば、「デジタルコンテンツ保護用管理方式」SCIS2001, pp.213-218)。このモデルにおいては、図22のような鍵配布用の木構造を用いており各ノードには異なる鍵が配置される。ユーザ鍵(論文中ではDVDなどのプレイヤーが保持する鍵を想定)は末端のノード(葉ノード)と同一視され、ルートから末端ノードまでのすべての鍵データを保持するものと仮定している。本モデルでは更新が頻繁に起きることを想定しており、このように配置することで鍵無効化の効率を改良している。
【0064】
[階層的鍵管理方式]
一方、階層的鍵管理方法で想定している鍵管理は各ノードに鍵が配置されている点では同様であるが、ユーザは末端ノードだけでなく、ルートを含めたすべてのノードに位置する鍵が配布される点が大きく異なる(例えば、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等)。
【0065】
また、図22のようなn分木の構造ではなく、図23や図24のようなアクセス構造を想定しており、局所的に見ると図25のような関係になっている箇所が見受けられる。この場合、ノードn1に配置されている鍵とノードn2に配置されているの両者からノードn3の持つべき鍵を生成できるような仕組みが提供されていなければならない。この仕組みを提供する方式として次の2つの方法が提案されている。
【0066】
[(1) User multiple keying]
各ノードが複数の鍵を保持する方式であり、親ノードは子ノードのすべての鍵を保持するように構成されている。図26はその一例であり、各ノードに配布される鍵データの集合が記載されている。例えば{k5}が配布されているノードの親ノードには 鍵データk5が含まれていることがわかる。同様に他のノードにおいても親ノードには子ノードの鍵データがすべて含まれていることがわかる。
【0067】
[(2) One-way function based keying schemes]
Lin らの提案を拡張させた方式であり、一方向性ハッシュ関数を用いることで、各ノードが保持する鍵情報を削減することができる。但し、図25のように複数の親ノードの鍵データから子ノードの鍵データを生成する際には、次のような操作が必要である。この操作を図27を用いて説明する。
【0068】
図27において、鍵データ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により関連付けられたランダムデータであり、共に公開されているデータである。
【0069】
関数 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 を満たすように生成される。
【0070】
前述したように、階層的鍵管理方式において局所的に親ノードが2つ以上存在する場合(図25は2つの親ノードが存在している例である)においては、異なる親ノードから同じ鍵データを生成するのが、先に説明した第1の実施形態である。
【0071】
しかし、(1)User multiple keyingにおいては、各ノードが多くの鍵を持ち合わせていなければならず、階層が深くなるにつれて、つまり全体ノード数に比例して保持すべき鍵データが増加する問題が存在し、(2)One-way function based keying schemes においては、一方向性ハッシュ関数を用いることで各ノードが保持する鍵データ量を減らしているが、r12,r13 などの公開ランダムデータを別途保持する必要があり、(1)と同様に階層が深くなるにつれて保持すべきデータが増加するという問題が存在する。
【0072】
さらに、(2)においては、一方向性ハッシュ関数にべき乗演算が用いられている。落とし戸付きハッシュ関数による構成も考えられるが、いずれにせよ、べき乗演算が必要な演算が含まれており、計算コストが膨大である。特にPDAなどの演算リソースの少ないデバイスにおいては鍵計算に多くの時間を費やすこととなり、結果としてデータ復号時にインタラクティブな処理ができなくなる可能性がある。
【0073】
そこで、本第2の実施形態では、この問題点に鑑み、階層的鍵管理方法と同様のアクセス構造を持つ鍵管理方式を少ない計算量で安全に構成することを可能にする例を説明する。
【0074】
図9は、本発明の第2の実施形態に係る鍵情報処理装置の構成を概略的に示すブロック図である。
【0075】
なお、本発明の実現にあたって、図9に示される全ての機能を使用することは必須ではない。
【0076】
図9において、鍵情報処理装置100は、公衆回線等のモデム118、表示部としてのモニタ102、CPU103、ROM104、RAM105、HD(ハードディスク)106、ネットワークのネットワーク接続部107、CD108、FD(フレキシブルディスク)109、DVD(デジタル・ビデオ・ディスク、または Digital Versatile Disk)110、プリンタ115のインターフェース(I/F)117、及び操作部としてのマウス112やキーボード113等のインターフェース(I/F)111を備え、これらは、バス116を介して互いに通信可能に接続されている。
【0077】
マウス112及びキーボード113は、鍵情報処理装置100に対する各種指示等をユーザが入力するための操作部である。この操作部を介して入力された情報(操作情報)は、インターフェース111を介して、鍵情報処理装置100内に取り込まれる。
【0078】
鍵情報処理装置100での各種情報(文字情報や画像情報等)は、プリンタ115により印刷出力できるようになされている。
【0079】
モニタ102は、ユーザへの各種指示情報や、文字情報或いは画像情報等の各種情報の表示を行う。
【0080】
CPU103は、鍵情報処理装置100全体の動作制御を司るものであり、HD(ハードディスク)106等から処理プログラム(ソフトウェアプログラム)を読み出して実行することで、情報処理装置100全体を制御する。特に、本第2の実施形態では、CPU103は、HD106等から、鍵生成を実現する処理プログラムを読み出して実行することで、後述する情報処理を実施する。
【0081】
ROM104は、鍵生成のための処理プログラムや、プログラム内で用いられる各種データ(鍵生成用グラフなど)等を記憶する。
【0082】
RAM105は、CPU103での各種処理のために、一時的に処理プログラムや処理対象の情報を格納するための作業用エリア等として使用される。
【0083】
HD106は、大容量記憶装置の一例としての構成要素であり、各種データ、あるいは各種処理の実行時にRAM105等へ転送される情報変換処理等のための処理プログラム等を保存する。
【0084】
CD(CDドライブ)108は、外部記憶媒体の一例としてのCD(CD−R)に記憶されたデータを読み込み、また、当該CDへデータを書き出す機能を有する。
【0085】
FD(フロッピー(R)ディスクドライブ)109は、CD108と同様に、外部記憶媒体の一例としてのFD109に記憶されたデータを読み出す。また、種々のデータを上記FD109へ書き込む機能を有している。
【0086】
DVD(デジタル・ビデオ・ディスク)110は、CD108やFD109と同様に、外部記憶媒体の一例としてのDVD110に記憶されたデータを読み出し、また、上記DVD110へデータを書き込む機能を有している。
【0087】
なお、CD108、FD109、DVD110等の外部記憶媒体に対して、例えば、編集用のプログラム或いはプリンタドライバが記憶されている場合には、これらのプログラムをHD106へインストールしておき、必要に応じて、RAM105へ転送するように構成してもよい。
【0088】
インターフェース(I/F)111は、マウス112或いはキーボード113によるユーザからの入力を受け付けるためのものである。
【0089】
モデム118は、通信モデムであり、インターフェース(I/F)119を介して、例えば、公衆回線等を通じて外部のネットワークに接続される。
【0090】
ネットワーク接続部107は、インターフェース(I/F)114を介して、外部のネットワークに接続される。
【0091】
以下、上述した装置による鍵の生成・管理について説明する。
【0092】
[鍵生成概要]
まず、本第2の実施形態における階層的鍵管理方法における各ノードのノード鍵の生成に関する説明から行う。
【0093】
本第2の実施形態では図10や図28のように階層関係がループおよびサイクルを持たない有向グラフで表現されていることを前提とする。図36のノードn1とn2のように、複数の異なるノードがお互いに有向グラフで接続されている箇所が存在するとき、これらのノードをまとめて一つのノードとして扱うことで、このような双方向の接続関係を持つノードがない場合に帰着することができる。図37はn1とn2をn1’というひとつのノードと同一視した有向グラフである。以降、このような双方向の接続関係を持つノードがないと仮定する。
【0094】
説明の便宜上、本実施の形態では図10に示すような2つの階層を持った格子グラフを取り扱う。図11及び図12においてそれぞれのセルに記載されている3つの数字は3つの初期鍵x,y,zに対して施すハッシュ関数の回数が表現されている。例えば[2,2,N]と記されているセルでは、ノード鍵としてH(H(x))とH(H(y))を保持するとする。Nは“なし”を意味し、初期鍵zに関する情報は全く持たないことを意味する。今後、ハッシュ演算をn度施す場合にはH^n()と略記して表現するものとする。この表記法に基づけば、[2,2,N]と記されているセルはH^2(x)とH^2(y)の2つのノード鍵を持つこととなる。階層的鍵管理方式における木構造を図12に示すような行列と置き換えて説明することもできる。図11は9個のノードを有する木構造の例であり、図11の各ノードに記された数字と、図12の各セルに記された数字は、同じ対応関係であることを示す。
【0095】
まず、図11に示したような木構造において、ルートノード(図中[0,0,0]で示されるノード)を行列における一番右上のセルに対応付ける。そして、木構造における各ノードの子ノードのうち左に位置するノード、及び右に位置するノードを、夫々、行列の左のセル、及び下のセルに対応付ける。この対応付けを全てのノード、及びセルに対して順に行うことにより、図11に示した木構造は図12に示した行列に置き換えることができる。
【0096】
次に、図11または図12に示される鍵生成用データの生成方法について説明する。
【0097】
[ノードの分割]
鍵生成用データを生成するために、与えられた鍵配布グラフGにおいて、次の条件を満たすようにノードの分割を行う。ここで、ノード全体の集合をNode (G)、部分集合の組の大きさをN、分割された部分集合をSubG_1, SubG_2, …, SubG_Nという表記方法を使うこととする。
【0098】
・SubG_1∪ SubG_2∪…∪ SubG_N = Node(G),
つまり部分集合全体は全ノードを網羅する。
【0099】
・SubG_iに含まれる任意の2つの異なるノードn_a,n_bは、
n_a < n_b 又は n_a > n_b
が成立する。つまりn_a,n_bには子孫関係が存在し、一方が必ずもう一方の子孫ノードである。
【0100】
この分割された部分集合の数Nを鍵配布グラフGの鍵配布オーダーと呼びOrd(G)と表記する。
【0101】
[ノード鍵の割り当て]
部分集合SubG_iに対して1つずつ初期鍵K_iを計算し、ルートノードのノード鍵として割り当てる。ルートノードの配下にある子孫ノードは次のような法則でノード鍵が割り当てられる。
【0102】
i)各ノードはN個の初期鍵K_i(1≦i≦N)に関連付けられた番号が振られる。この番号は初期鍵K_iに対し一方向性関数を実行する回数であり、“なし”を意味する“N”が振られることもある。初期鍵K_iの当該番号が“N”のときは、初期鍵K_iに関連した鍵を保有しないことを意味する。
【0103】
ii)SubG_iに含まれるノードをそれぞれの集合内で有向グラフ上での子孫関係に従って降順にソートし、0から1つずつ増加させた番号を割り付けする。この番号は初期鍵K_iに関連付けられた番号である。
【0104】
iii)SubG_iに含まれるノードの初期鍵K_j(i≠j)に関連付けられた番号は、(初期鍵K_jに対する部分集合である)SubG_jに含まれるノードの祖先ノードではない場合には当該番号をN(なし)とし、祖先ノードであるノードの当該番号は子孫ノードとしてSubG_jに含まれるノードのうち割り当てされた番号の最小値とする。
【0105】
図19は上記のノード鍵割り当て処理をフローチャートにしたものである。以降、図119の説明を行う。ここでは、すでに全ノード集合は互いに素であり、空ではない部分集合{SubG_i}(1≦i≦N)に分割されており、それぞれの部分集合に対する初期鍵K_iが計算されているものとする。また、部分集合 SubG_iに含まれるノード数を#N(i)と記述し、部分集合SubG_iに含まれるノードは、有向グラフ上での子孫関係に従って降順にソートされ SubG_i={n(i,1),n(i,2),...,n(i,#N(i))}と記述することとする。さらにノードn(i,j)に対するノード鍵は初期鍵K_k(1≦k≦N)に一方向性ハッシュ関数を規定回数施したものであるが、この規定回数をh(i,j,k)と表記する。
【0106】
ステップS1101は1からNまで変動する変数iのループ、ステップS1102は1からNまで変動する変数jのループ、ステップS1103は1から#N(i)まで変動する変数kのループである。ステップS1104は変数iと変数kが一致するかどうか評価し、一致する場合には処理をステップS1105に進め、一致しない場合には処理をステップS1106に進める。ステップS1105はh(i,j,k)にj−1を代入し、ループ処理に戻る。ステップS1106はn(k,m)<n(i,j),つまりn(i,j)はn(k,m)の祖先ノードであることを満たすmが存在するか評価し、存在しない場合には処理をステップS1107に進め、存在する場合には処理をステップS1108に進める。ステップS1107はh(i,j,k)に“N”を代入し、ループ処理に戻る。
【0107】
ステップS1108はh(i,j,k)にmin{h(k,m,k)|n(k,m)<n(i,j)}、つまりn(i,j)がn(k,m)の祖先ノードであるノードのうちh(k,m,k)の最小値を代入し、ループ処理に戻る。
【0108】
以下、具体例を図13から図16、図17から図18、および、図28から図34を用いて説明する。
【0109】
図13は、図10に示す鍵生成グラフにおけるノード分割の例であり、3つの部分集合SubG_ 1からSubG_ 3に分割している。つまり、SubG_ 1={n0, n2, n5},SubG_ 2={n1, n4, n7},SubG_ 3={n3, n6, n8}である。このとき、h(i,j,i)のみを表示したものが図14である。たとえば{h(1,1,1),h(1,2,1),h(1,3,1)}={0,1,2}であり、これはステップS1104およびS1105に対応する。さらにノードの子孫関係から“N”となる箇所を記載したものが図15である。たとえばh(1,1,3)=“N”であるが、これはn(3,m)<n(1,1)=n3となるmは存在しないことに起因する。実際n(3,1)= n0,n(3,2)=n2,n(3,3)=n5でありこのことが確認できるが、これはステップS1106およびS1107に対応する。さらにn(3,m)<n(i,j)を満たすすべてのi,jでチェックして反映した結果が図16である。たとえばh(2,1,1)=0であるが、これはn(1,m)<n(2,1)=n1となるmには1,2,3の可能性があるが、h(1,1,1)=0,h(1,2,1)=1,h(1,3,1)=2のうち最小値である0が選択される。さらにn(2,m)<n(i,j)を満たすすべてのi,jでチェックし,最終的には図12を得る。
【0110】
また、図13とは異なる図17に記載のノード分割による構成方法は、図19のフローチャートにより図12と同様に構成でき、図18を得る。図12と図18では、総ハッシュ演算量が図18の場合が多くなる。
【0111】
次に図28に示す鍵生成グラフにおけるノード鍵の構成方法について説明する。図29は、図28に示す鍵生成グラフにおけるノード分割の例であり、3つの部分集合SubG_ 1からSubG_ 3に分割している。つまりSubG_ 1={n0, n1, n4, n7},SubG_ 2={n3, n6},SubG_ 3={n2, n5}である。このとき図19に記載のフローチャートに基づき構成したノード鍵は図30のとおりである。以下、図30に至るまでの構成を説明する。まず、h(i,j,i)のみを表示したものが図31である。たとえば{h(1,1,1),h(1,2,1),h(1,3,1),h(1,4,1)}={0,1,2,3}であり、これはステップS1104およびS1105に対応する。さらにノードの子孫関係から“N”となる箇所を記載したものが図32である。たとえばh(1,2,3)=“N”であるが、これはn(3,m)<n(1,2)=n1となるmは存在しないことに起因する。実際n(3,1)= n3,n(3,2)= n6でありこのことが確認できるが、これはステップS1106およびS1107に対応する。さらにn(1,m)<n(i,j)をすべてのi,jでチェックして反映した結果が図33である。たとえばh(2,1,1)=2であるが、これはn(1,m)<n(2,1)=n3となるmには3,4の可能性があるが、h(1,3,1)=2,h(1,4,1)=3のうち最小値である2が選択される。同様にしてn(2,m)<n(i,j)をすべてのi,jでチェックして反映した結果が図34であり、最終的には図30を得る。
【0112】
さらに、終端ノードに鍵を配布しない場合を考える。これは画像データにおけるサムネイル画像など、制限なしにデータアクセス可能な状態を作ることができる。図35はその例であり、終端ノードは[N, N, N]と記載されているようにノード鍵が存在しないことを意味する。これは、終端ノードのみをノード分割時nどの部分集合にも含めない状態から図19のフローチャートに適用することで得ることができる。ここでは終端ノードのひとつのみに対しノード鍵を配布しない例を示したが、複数ノードにした場合でも同様に構成できることは明らかである。
【0113】
[生成された鍵の満たすべき条件]
上記の鍵生成方式は次の条件を満たすように構成されている。
【0114】
a. 生成可能性:対象ノードはその孫ノードの鍵を生成できること
b. 結託攻撃回避性:(一方向性関数が脆弱にならない限り)任意の二つ以上のノードに位置するエンティティが結託しても、夫々のノードより上位に位置する祖先ノードの鍵は生成できないこと
これらの条件により、安全に鍵生成と鍵配布を行うことができる階層的鍵管理方式が実現できる。
【0115】
[鍵配布]
ルート鍵配布者(ルートノードのエンティティ)による各ノードへの鍵配布方法と、ルート鍵配布者以外の個別鍵を保持するエンティティによる下位ノードへの鍵配布方法とについて、それぞれ説明する。まずルート鍵配布者は、鍵配布グラフGに応じて決まる鍵配布オーダーOrd(G)個のパラメータ{x_i}(1≦i≦Ord(G))をランダムに且つ安全に生成し、それらを自身の個別鍵とする。さらに前述した鍵生成手順により各ノードに複数の鍵を配置する。ルート鍵配布者は各ノードに位置するエンティティに対して、各ノードの鍵を安全に配布する。また、鍵配布グラフを公開し、各エンティティに対して、配布された鍵がグラフのどの位置の鍵であるかを識別できるデータを配布する。このデータは例えば、格子グラフを鍵配布グラフとする場合には、行列表記したときの座標により構成するようにすれば良い。
【0116】
[情報処理装置における鍵生成・配布処理]
前記情報処理装置100において以上の鍵生成・配布処理を行う手順について説明する。画像などの管理対象データをCD108もしくはネットワークのネットワーク接続部107を通して取得しHD106に格納するか、もしくはHD106に既に格納されているデータの中から選択する。ここで、ユーザはモニタ102に表示した一覧からマウス112もしくはキーボード113などを使って選択する。
【0117】
管理対象データに対して何階層の階層軸を持たせるかなどのアクセス制御構造を同様の方法を用いてユーザが選択すると、その構造に応じた鍵生成用グラフをCPU103を用いて計算を行い、RAM105やHD106などに格納する。
【0118】
ROM104やRAM105やHD106もしくはマウス112の動作などのデータからランダムデータを生成し、そのランダムデータを用いて、複数のオリジナル鍵を生成し、RAM105やHD106などに格納する。さらに鍵生成用グラフにおける各ノードの個別鍵をオリジナル鍵から演算し、RAM105やHD106などに格納する。
【0119】
他の情報処理装置に対して、RAM105やHD106などに格納された個別鍵を読み出して、ネットワーク接続部107を通じてネットワークを介して配布を行う。
【0120】
<第3の実施形態>
第2の実施形態における鍵配布方式により生成された階層的な構造を持つ鍵データを用いたアクセス制御の好適例を説明する。図10で表現されている格子鍵生成グラフは2つの階層軸を持っている。このうち1つ(左下方向)を解像度、もう片方(右下方向)を画像領域とした場合の例を図20に示す。
【0121】
解像度には高、中、低の3つのレベルがあり、取得できる画像の解像度を示す。画像領域にも3つのレベルがあり、すべての領域、サブ領域A、(サブ領域Aよりも狭い)サブ領域B、の閲覧の権限が与えられるとする。このときルートに位置する権限の最も大きいノードには(解像度=高、画像領域=すべて)が割り当てられ、最下位のノードには(解像度=低、画像領域=領域B)が割り当てられている。
【0122】
図11または図12に則った鍵配布を行う場合を例として、鍵配布方法および画像暗号化方法を説明する。対象画像データIMGは領域Bの画像データIMG1、領域A差分データをIMG_2、すべての画像データを得るための差分データをIMG_3とする。つまりIMG=IMG_1+IMG_2+IMG_3である。また、それぞれのIMG_iは低解像度データをIMG_i(L)、中解像度差分データをIMG_i(M)、高解像度差分データをIMG_i(H)とする。つまりIMG_i=IMG_i(L)+IMG_i(M)+IMG_i(H)である。
【0123】
まずルート鍵配布者はランダムにオリジナル鍵x,y,uを生成する。暗号化に使う鍵Key(<High,All>):=H(x||y||u)とし、この鍵でIMG_3(H)を暗号化する。ただし||はデータの連結とする。それぞれの子ノードでは取得した3つのデータをルートノードと同様に連結して暗号鍵を生成し、図21に記載のデータを暗号化する。
【0124】
例えば、<Mid,All>ノードでは、鍵データとしてH(x),H^3(y),uが与えられているが、暗号鍵Key(<Mid,All>):=H(H(x)||H^3(y)||u)とし、この鍵でIMG_3(M)を暗号化する。暗号化されたデータを復号する際には、同様の処理を行って暗号鍵を計算し復号処理をして適切な画像データを取得する。
【0125】
本実施形態では、暗号鍵の生成方式として鍵を連結してハッシュする方式を採用したが、その他の鍵連結方式(複数の鍵データから1つの鍵を計算する方式)に従ってもかまわない。
【0126】
また、本実施形態では解像度と画像領域を階層軸として取り上げたが、本発明はこれに限定されることなく、画質や時間軸や利用制御情報などアクセス制御の対象とすべき階層の中から、任意の二つ以上の階層を選択して利用することも可能である。
【0127】
<ソフトウエアなどによる他の実施の形態>
本発明は、複数の機器(例えばホストコンピュータ、インターフェース機器、リーダ、プリンタ等)から構成されるシステムの一部として適用しても、ひとつの機器(たとえば複写機、ファクシミリ装置)からなるものの一部に適用してもよい。
【0128】
また、本発明は上記実施の形態を実現するための装置及び方法及び実施の形態で説明した方法を組み合わせて行う方法のみに限定されるものではなく、上記システムまたは装置内のコンピュータ(CPUあるいはMPU)に、上記実施の形態を実現するためのソフトウエアのプログラムコードを供給し、このプログラムコードに従って上記システムあるいは装置のコンピュータが上記各種デバイスを動作させることにより上記実施の形態を実現する場合も本発明の範疇に含まれる。
【0129】
またこの場合、前記ソフトウエアのプログラムコード自体が上記実施の形態の機能を実現することになり、そのプログラムコード自体、及びそのプログラムコードをコンピュータに供給するための手段、具体的には上記プログラムコードを格納した記憶媒体は本発明の範疇に含まれる。
【0130】
この様なプログラムコードを格納する記憶媒体としては、例えばフロッピー(R)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
【0131】
また、上記コンピュータが、供給されたプログラムコードのみに従って各種デバイスを制御することにより、上記実施の形態の機能が実現される場合だけではなく、上記プログラムコードがコンピュータ上で稼働しているOS(オペレーティングシステム)、あるいは他のアプリケーションソフト等と共同して上記実施の形態が実現される場合にもかかるプログラムコードは本発明の範疇に含まれる。
【0132】
更に、この供給されたプログラムコードが、コンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードや機能格納ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって上記実施の形態が実現される場合も本発明の範疇に含まれる。
【図面の簡単な説明】
【0133】
【図1】従来技術における解像度とレイヤにおける鍵情報の問題点を説明するための図である。
【図2】第1の実施形態における解像度とレイヤにおける鍵情報の相関を示す図である。
【図3】第1の実施形態における装置の構成例を示す図である。
【図4】第1の実施形態におけるRSA暗号を用いた場合の鍵の相関を示す図である。
【図5】第1の実施形態における暗号化及び鍵生成に係る構成例を示す図である。
【図6】実施形態が適用するシステム構成例を示す図である。
【図7】ウェーブレット変換の例を示す図である。
【図8】エントロピー符号化する際のレイヤを説明するための図である。
【図9】本第2、第3の実施形態に係る鍵情報処理装置の構成を概略的に示すブロック図である。
【図10】第2の実施形態に係る有向グラフの例を説明する図である。
【図11】第2の実施形態に係る鍵配布グラフの例を示す図である。
【図12】第2の実施形態に係る鍵配布行列の例を示す図である。
【図13】第2の実施形態に係る図10に記載の鍵配布グラフにおけるノード分割の例を説明する図である。
【図14】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図15】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図16】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図17】第2の実施形態に係る図10に記載の鍵配布グラフにおけるノード分割の別例を示す図である。
【図18】第2の実施形態に係る鍵配布行列の例を示す図である。
【図19】第2の実施形態に係るノード鍵生成手順を表すフローチャートである。
【図20】第3の実施形態に係る階層型アクセス構造を説明する概念図である。
【図21】第3の実施形態に係る各ノードが暗号化すべき画像リストを表わすテーブルを示す図である。
【図22】木構造管理方式における2分木アクセス構造を説明する概念図である。
【図23】階層的なアクセス制御方式におけるアクセス構造を説明する概念図である。
【図24】階層的なアクセス制御方式におけるアクセス構造を説明する概念図である。
【図25】階層的なアクセス制御方式における局所的構造を説明する概念図である。
【図26】User multiple keyingの例を説明する図である。
【図27】One-way function based keying schemesを説明する図である。
【図28】第2の実施形態に係る有向グラフの例を示す図である。
【図29】第2の実施形態に係る図10に記載の鍵配布グラフにおけるノード分割の例を説明する図である。
【図30】第2の実施形態に係る鍵配布グラフの例を示す図である。
【図31】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図32】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図33】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図34】第2の実施形態に係る鍵配布行列を構成する途中段階の状態を表す鍵配布行列を示す図である。
【図35】第2の実施形態に係る鍵配布グラフの例を示す図である。
【図36】第2の実施形態に係る双方向に接続関係を持つノードが存在する有向グラフの例を示す図である。
【図37】第2の実施形態に係る図36に記載の有向グラフにおいて、双方向に接続関係を持つノードが存在しないように変更した有向グラフの例を示す図である。
【特許請求の範囲】
【請求項1】
画像データを鍵情報を用いて暗号化する画像データ暗号化装置の制御方法であって、
階層的な構造を持ち、各階層のデータが少なくとも2つのパラメータで特定でき、且つ、それぞれのパラメータが多段階のレベルで表現される画像データを入力する入力工程と、
入力した画像データに対し、前記2つのパラメータが共に最大レベルで特定される階層のデータに対する鍵情報を起源とし、前記2つのパラメータで特定される階層のデータ用の鍵情報を、当該階層のデータより1つ高位に位置する階層内の2つのデータ用の鍵情報のいずれからも生成可能な、一方向性の所定の関数を用いて鍵情報を生成する生成工程と、
前記設定工程で設定された鍵情報、及び、前記生成工程で生成された鍵情報に従い、前記入力工程で入力した該当する階層のデータを暗号化する暗号化工程と
を備えることを特徴とする画像データ暗号化装置の制御方法。
【請求項2】
前記入力工程で入力する画像データはJPEG2000による圧縮符号化データであって、前記パラメータには、タイル、プレシンクト、コンポーネント、解像度、レイヤが含まれることを特徴とする請求項1に記載の画像データ暗号化装置の制御方法。
【請求項3】
前記生成工程は、公開鍵暗号化方法に従って前記鍵情報を生成されることを特徴とする請求項1又は2に記載の画像データ暗号化装置の制御方法。
【請求項4】
前記生成工程は、楕円曲線状の剰余乗算によって前記鍵情報を生成することを特徴とする請求項1又は2に記載の画像データ暗号化装置の制御方法。
【請求項5】
前記生成工程で用いられる一方向性の関数は、ハッシュ関数であることを特徴とする請求項1又は2に記載の画像データ暗号化装置の制御方法。
【請求項6】
画像データを鍵情報を用いて暗号化する画像データ暗号化装置であって、
階層的な構造を持ち、各階層のデータが少なくとも2つのパラメータで特定でき、且つ、それぞれのパラメータが多段階のレベルで表現される画像データを入力する入力手段と、
入力した画像データに対し、前記2つのパラメータが共に最大レベルで特定される階層のデータに対する鍵情報を起源とし、前記2つのパラメータで特定される階層のデータ用の鍵情報を、当該階層のデータより1つ高位に位置する階層内の2つのデータ用の鍵情報のいずれからも生成可能な、一方向性の所定の関数を用いて鍵情報を生成する生成手段と、
前記設定手段で設定された鍵情報、及び、前記生成手段で生成された鍵情報に従い、前記入力手段で入力した該当する階層のデータを暗号化する暗号化手段と
を備えることを特徴とする画像データ暗号化装置。
【請求項7】
前記入力手段で入力される画像データはJPEG2000による圧縮符号化データであって、前記パラメータには、タイル、プレシンクト、コンポーネント、解像度、レイヤが含まれることを特徴とする請求項6に記載の画像データ暗号化装置。
【請求項8】
前記生成手段で用いられる一方向性の関数は、ハッシュ関数であることを特徴とする請求項6又は7に記載の画像データ暗号化装置。
【請求項9】
請求項6乃至8の何れか1項に記載の画像データ暗号化装置の各手段をコンピュータに機能させるためのコンピュータプログラム。
【請求項10】
請求項9に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【請求項1】
画像データを鍵情報を用いて暗号化する画像データ暗号化装置の制御方法であって、
階層的な構造を持ち、各階層のデータが少なくとも2つのパラメータで特定でき、且つ、それぞれのパラメータが多段階のレベルで表現される画像データを入力する入力工程と、
入力した画像データに対し、前記2つのパラメータが共に最大レベルで特定される階層のデータに対する鍵情報を起源とし、前記2つのパラメータで特定される階層のデータ用の鍵情報を、当該階層のデータより1つ高位に位置する階層内の2つのデータ用の鍵情報のいずれからも生成可能な、一方向性の所定の関数を用いて鍵情報を生成する生成工程と、
前記設定工程で設定された鍵情報、及び、前記生成工程で生成された鍵情報に従い、前記入力工程で入力した該当する階層のデータを暗号化する暗号化工程と
を備えることを特徴とする画像データ暗号化装置の制御方法。
【請求項2】
前記入力工程で入力する画像データはJPEG2000による圧縮符号化データであって、前記パラメータには、タイル、プレシンクト、コンポーネント、解像度、レイヤが含まれることを特徴とする請求項1に記載の画像データ暗号化装置の制御方法。
【請求項3】
前記生成工程は、公開鍵暗号化方法に従って前記鍵情報を生成されることを特徴とする請求項1又は2に記載の画像データ暗号化装置の制御方法。
【請求項4】
前記生成工程は、楕円曲線状の剰余乗算によって前記鍵情報を生成することを特徴とする請求項1又は2に記載の画像データ暗号化装置の制御方法。
【請求項5】
前記生成工程で用いられる一方向性の関数は、ハッシュ関数であることを特徴とする請求項1又は2に記載の画像データ暗号化装置の制御方法。
【請求項6】
画像データを鍵情報を用いて暗号化する画像データ暗号化装置であって、
階層的な構造を持ち、各階層のデータが少なくとも2つのパラメータで特定でき、且つ、それぞれのパラメータが多段階のレベルで表現される画像データを入力する入力手段と、
入力した画像データに対し、前記2つのパラメータが共に最大レベルで特定される階層のデータに対する鍵情報を起源とし、前記2つのパラメータで特定される階層のデータ用の鍵情報を、当該階層のデータより1つ高位に位置する階層内の2つのデータ用の鍵情報のいずれからも生成可能な、一方向性の所定の関数を用いて鍵情報を生成する生成手段と、
前記設定手段で設定された鍵情報、及び、前記生成手段で生成された鍵情報に従い、前記入力手段で入力した該当する階層のデータを暗号化する暗号化手段と
を備えることを特徴とする画像データ暗号化装置。
【請求項7】
前記入力手段で入力される画像データはJPEG2000による圧縮符号化データであって、前記パラメータには、タイル、プレシンクト、コンポーネント、解像度、レイヤが含まれることを特徴とする請求項6に記載の画像データ暗号化装置。
【請求項8】
前記生成手段で用いられる一方向性の関数は、ハッシュ関数であることを特徴とする請求項6又は7に記載の画像データ暗号化装置。
【請求項9】
請求項6乃至8の何れか1項に記載の画像データ暗号化装置の各手段をコンピュータに機能させるためのコンピュータプログラム。
【請求項10】
請求項9に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【公開番号】特開2007−20225(P2007−20225A)
【公開日】平成19年1月25日(2007.1.25)
【国際特許分類】
【出願番号】特願2006−275732(P2006−275732)
【出願日】平成18年10月6日(2006.10.6)
【分割の表示】特願2004−35546(P2004−35546)の分割
【原出願日】平成16年2月12日(2004.2.12)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成19年1月25日(2007.1.25)
【国際特許分類】
【出願日】平成18年10月6日(2006.10.6)
【分割の表示】特願2004−35546(P2004−35546)の分割
【原出願日】平成16年2月12日(2004.2.12)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]