情報処理装置、情報処理方法、情報記録媒体、及び、コンピュータプログラム
【課題】周波数分解して得られた変換係数に対して、入力されるデータのビット長と出力されるデータのビット長とが異なる暗号化処理を行う場合に、暗号化の前と後との変換係数を格納するメモリのアドレス管理が容易な情報処理装置等を提供すること
【解決手段】 原データを周波数分解して得られた複数の原変換係数を暗号化して暗号化変換係数を生成する暗号化手段と、前記原変換係数のビット数の最大値と前記暗号化変換係数のビット数の最大値とのうち何れか大なる値に基づいて、前記メモリにおける一の前記原変換係数が格納される領域のビット数と、前記メモリにおける一の前記暗号化変換係数が格納される領域のビット数とを、同数の領域ビット数として決定する領域ビット数決定手段と、前記領域ビット数に基づいて、前記原変換係数と前記暗号変換係数とが前記メモリに格納される際のアドレスを生成するアドレス生成手段と、を有する情報処理装置。
【解決手段】 原データを周波数分解して得られた複数の原変換係数を暗号化して暗号化変換係数を生成する暗号化手段と、前記原変換係数のビット数の最大値と前記暗号化変換係数のビット数の最大値とのうち何れか大なる値に基づいて、前記メモリにおける一の前記原変換係数が格納される領域のビット数と、前記メモリにおける一の前記暗号化変換係数が格納される領域のビット数とを、同数の領域ビット数として決定する領域ビット数決定手段と、前記領域ビット数に基づいて、前記原変換係数と前記暗号変換係数とが前記メモリに格納される際のアドレスを生成するアドレス生成手段と、を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、情報記録媒体、及び、コンピュータプログラムに関する。
【背景技術】
【0002】
従来から、画像や音声のデータ又はそれらのデータが圧縮された符号データを暗号化する技術がある。例えば、JPEG2000規格ファミリーの中のJPSECと呼ばれる規格(非特許文献1参照。)には、周波数分解されて得られた変換係数や、エントロピー符号に対して、DES(Data Encryption Standard)又はAES(Advanced Encryption Standard)等の方式による暗号化を行った場合に、その暗号化の方式に係る情報を符号データ中にマーカとして含ませることが記載されている。
【0003】
ところで、画像又は音声等が圧縮された符号データは、複数の構成要素を含んで構成され、全体のデータから最小の構成要素までの間に、複数の構成要素のクラスタを含む中間の構成要素が含まれる、所謂「入れ子」の構造を有している。そこで、構成要素毎に暗号鍵を異ならせると、多くの暗号鍵を管理する必要が生じ、鍵の管理が煩雑になる。
【0004】
そこで、一の構成要素の鍵をもとに、他の構成要素の鍵を生成させることが考えられる。例えば、特開2004−40248号公報(特許文献1)には、解像度レベルの下位のパケットに対応した鍵をもとに、一方向性関数を用いて、解像度レベルの上位のパケットに対応する鍵を生成することが記載されている。
【0005】
なお、パケットとは、JPEG2000規格による符号データにおける最小の構成要素である。このJPEG2000規格では、パケットの並び順を定めるプログレッションオーダが複数あるため、パケットが再配置された場合にも、符号データの中の先頭に近い側に配されているパケットに係る鍵から、後方に配されているパケットに係る鍵が生成されるように鍵の生成順を定める必要がある。
【0006】
特許文献1に記載の情報処理方法等によれば、一の解像度レベルのパケットを処理した後、次の解像度レベルのパケットの処理を行うまでの間、一の解像度レベルに対応する鍵を保持し管理する。これは、パケット毎に鍵を異ならせる場合には、解像度レベルがプログレッションオーダの外側に近いほど、鍵の管理が煩雑になることを意味する。
【0007】
そこで、例えばパケットに含まれている変換係数毎に暗号化を行えば、パケットがいかなる順に並べ替えられたとしても、パケット内における変換係数の並び順は一意に定まるため、鍵の管理を容易にすることができる。
【特許文献1】特開2004−40248号公報
【非特許文献1】ISO/IEC 15444−8 Information technology − JPEG 2000 image coding system: Secure JPEG 2000
【非特許文献2】ISO/IEC 15444−1 JPEG 2000 image coding system: Core coding system
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、パケットに含まれている変換係数は、必ずしも一定のビット長を有しているとは限らない。例えば、JPEG2000規格においては、色変換処理やウェーブレット変換処理により、色コンポーネント間、又は、サブバンド間でビット長が異なり、さらに、ウェーブレット変換によるサブバンドのレベルによってもビット長が異なる。また、暗号化の処理によっては、暗号化後の出力データが入力データのビット長と異なることがある。
【0009】
そこでこれらの変換係数をそのビット長に応じてメモリに格納すると、メモリからのデータの読み出しと書き込みとを行う際に、処理するデータが暗号化前の「原変換係数」なのか、暗号化後の「暗号化変換係数」なのかによってメモリ上のアドレス生成処理を異ならせることとなり、処理が煩雑になるという不具合があることを意味する。
【0010】
本発明は、上記の点に鑑みて、これらの問題を解消するために発明されたものであり、周波数分解して得られた変換係数に対して、入力されるデータのビット長と出力されるデータのビット長とが異なる暗号化処理を行う場合に、暗号化の前と後との変換係数を格納するメモリのアドレス管理が容易な情報処理装置、情報処理方法、コンピュータプログラム、及び、情報記録媒体を提供することを目的としている。
【課題を解決するための手段】
【0011】
上記目的を達成するために、本発明の情報処理装置は次の如き構成を採用した。
【0012】
本発明の情報処理装置は、メモリに格納された原変換係数を読み出して暗号化を行う情報処理装置であって、原データを周波数分解して得られた複数の前記原変換係数を暗号化して暗号化変換係数を生成する暗号化手段と、前記原変換係数のビット数の最大値と前記暗号化変換係数のビット数の最大値とのうち何れか大なる値に基づいて、前記メモリにおける一の前記原変換係数が格納される領域のビット数と、前記メモリにおける一の前記暗号化変換係数が格納される領域のビット数とを、同数の領域ビット数として決定する領域ビット数決定手段と、前記領域ビット数に基づいて、前記原変換係数と前記暗号変換係数とが前記メモリに格納される際のアドレスを生成するアドレス生成手段と、を有する構成とすることができる。
【0013】
これにより、周波数分解して得られた変換係数に対して、入力されるデータのビット長と出力されるデータのビット長とが異なる暗号化処理を行う場合に、暗号化の前と後との変換係数を格納するメモリのアドレス管理が容易な情報処理装置を提供することができる。
【0014】
なお、上記課題を解決するため、本発明は、さらに、上記情報処理装置が備える各手段の機能を実行させる情報処理方法、その情報処理方法をコンピュータに実行させるためのコンピュータプログラム、又は、それらのコンピュータプログラムを格納した情報記録媒体としてもよい。
【発明の効果】
【0015】
本発明の情報処理装置、情報処理方法、コンピュータプログラム、及び、情報記録媒体によれば、周波数分解して得られた変換係数に対して、入力されるデータのビット長と出力されるデータのビット長とが異なる暗号化処理を行う場合に、暗号化の前と後との変換係数を格納するメモリのアドレス管理が容易な情報処理装置、その情報処理装置が備える各手段の機能を実行させる情報処理方法、その情報処理方法をコンピュータに実行させるためのコンピュータプログラムを提供することが可能になる。
【発明を実施するための最良の形態】
【0016】
本発明の実施の形態の説明に先んじて、本発明の実施の形態によって解決しようとする課題とその背景技術について、より詳細に説明する。
【0017】
セキュリティーニーズの高まりに伴い、画像データを圧縮して生成する符号データ又は画像データを圧縮する際に生成する様々な係数データ等を暗号化することがある。例えば、JPEG2000規格に定められる符号データのフォーマットにおいては、周波数分解後の変換係数や、その変換係数に対して可変長符号化処理等を行って生成するエントロピー符号に対して、DES(Data Encryption Standard)、AES(Advanced Encryption Standard)等の暗号化を施し、それらの暗号化がなされていることを示すシグナルを符号データ中にマーカとして入れてよいことが定められている。
【0018】
JPEG2000規格による符号データは、パケットと呼ばれる符号の単位をプログレッションオーダ順に並べたものである。そこで例えば、パケット毎のエントロピー符号を、パケット毎に対応する個別の暗号キーを用いて暗号化することができる。この場合、パケットとキーは1対1に対応づけられ、暗号化を行う側及び暗号を復号する側では、多くの暗号解除鍵(以下、「暗号鍵」又は「鍵」という。)を管理又は配信する処理が必要になる。
【0019】
そこで、パケットが所定の順に配列されていることを利用して、ある位置のパケットの鍵に対して、一方向性関数を適用することにより、そのパケットに隣接するパケットの鍵を順次生成する方法がある。この方法では、暗号化側からは一のパケットに対応する鍵が配信され、復号側では、その鍵に基づいて隣接するパケットの鍵を順次生成する。これにより、鍵が配信されたパケットの他のパケットに対する鍵を生成できるため、鍵の管理が容易になる。
【0020】
ところで、JPEG2000符号データの特徴の一に、パケットの抽出や再配列ができるということがある。そこで、符号データに対して再配列が行われると、上記の隣接関係が崩れる場合がある。このような場合には、再配列された後の一のパケットに対応した鍵に基づいて、隣接するパケットの鍵を生成できるとは限らず、鍵の管理が複雑になる。
【0021】
そこで、パケットの再配列と鍵の管理又は配信処理を容易にすることとを両立させるために、パケットの配列における制限に基づいて、鍵の生成の依存関係を決定することができる。より詳細には、例えば、一つのプログレッション属性内では、パケットの並びは昇順と定められていることを利用する。すなわち例えば、解像度0のパケットよりも先に解像度1のパケットが来ることはないので、解像度レベルの下位のパケットに対応する鍵に対して一方向性関数を用い、解像度レベルが上位のパケットに対応する鍵を生成する(特許文献1参照)。
【0022】
パケットの再配列と鍵の管理又は配信処理を容易にすることとを両立させるために、また例えば、再配列とは関係のない状態で暗号化を行うことが考えられる。例えば、JPEG2000規格による符号データでは、周波数分解後の変換係数に対して暗号化を施し、その後エントロピー符号化処理を行うことが許容されている。JPEG2000規格では、さらに、変換係数に対して暗号化を行う場合は、暗号化する変換係数の位置を自由に選択してよいことが定められている。
【0023】
そこで、変換係数に対する暗号化の形態として、次の2つの適用形態が考えられる。
(1)一の変換係数単位、又は複数の変換係数をまとめた単位に対して、暗号化を行う。
(2)一のビットプレーン単位、または複数のビットプレーンをまとめた単位に対して、暗号化を適用する。
【0024】
以下の実施の形態では、(1)の形態について述べる。
【0025】
ところで、(1)の形態の暗号化処理を行う場合には、変換係数毎のビット長が重要となる。すなわち、ブロック暗号化においては、所定のビット長のブロック毎に暗号化が行われるために、変換係数のビット長が異なる場合には、それらを効率よくメモリ等から読み出し、又は、出力される暗号化された変換係数を効率よくメモリに格納する技術が必要となる。
【0026】
例えば、1画素が8bitのビット長を有する原画像データに対して5x3ウェーブレット変換を用いるJPEG2000符号化を行う場合には、ウェーブレット変換後の変換係数のビット深さは、次式(a)で与えられる。
【0027】
変換係数のビット深さ=bit1+bit2+bit3+bit4・・・・・・(a)
但し、bit1は、原画像のビット深さであって、値8、
bit2は、色変換によるビット数増加であって、輝度コンポーネントは値0、色差コンポーネントは値1、
bit3は、ウェーブレット変換によるビット数増加のうち、「ガードビット」と呼ばれる、サブバンド間で共通に増加する分であって、5x3変換の場合、通常は値2、
bit4は、ウェーブレット変換によるビット数増加のうち、サブバンド間の増加量の差であってLL成分を基準として表される値。LL成分は値0、HL成分とLH成分は値1、HHは値2、
である。
【0028】
例えば、デコンポジションレベル1のウェーブレット変換が行われた色差コンポーネントの変換係数のビット深さは、式(a)より、以下のようになる。
【0029】
LLサブバンドの変換係数のビット深さ 8+1+2+0=11ビット
HLサブバンドの変換係数のビット深さ 8+1+2+1=12ビット
HHサブバンドの変換係数のビット深さ 8+1+2+2=13ビット
そこで、上記の場合には、変換係数を格納するメモリにおける一の変換係数の領域のビット数は、13ビットあればよい。
【0030】
ここで、変換係数に対して、暗号化処理を行うことを考える。例えば、AESでは、128ビット未満のデータを暗号化しても128ビットの暗号を生成する。そこで、暗号化後の変換係数は全て128ビットとなる。一般にブロック暗号方式は、ブロック長と等しいビット長の暗号データを生成する。すなわち、一の変換係数毎にAESにより暗号化すると、暗号化後の変換係数を保持するメモリにおける一の変換係数の領域のビット数は128ビットとなる。
【0031】
また例えば、8個の変換係数を連結して104ビットの入力データを生成し、これに対してAESを適用する場合には、104ビットの入力データに対して、128ビットの暗号データが生成される。そこで、暗号化後の変換係数を保持するメモリにおける一の変換係数に相当する領域のビット数は、16ビットとなる。
【0032】
すなわち、暗号化の前と後とで、変換係数を同一のメモリに格納する場合、暗号化前には例えば13と想定していたビット深さを、16として扱わなければならない。これは、メモリからのデータの読み出しと書き込みとを行うメモリアクセス制御手段が、処理するデータが暗号化前の「原変換係数」なのか、暗号化後の「暗号化変換係数」なのかによって処理を異ならせると、メモリ上のアドレス生成処理が煩雑になるという不具合があることを意味する。
【0033】
そこで、一の原変換係数あたりのビット数と、一の暗号化係数あたりのビット数とを同一にすることにより、メモリ上のアドレス生成処理を簡略にすることができる。さらに、原変換係数と暗号化変換係数とを一のメモリに格納することにより、そのメモリを有する情報処理装置、又は、そのメモリを用いて暗号化処理を行う情報処理装置の構成を簡易にすることができる。
【0034】
さらに、一の変換係数あたりのビット数に対し、暗号化によって増加する増分ビット数の情報を、画像データが圧縮された符号データに含ませることにより、復号側でその増分ビット数に応じた画像復号処理を行うことができる。
【0035】
以下の実施の形態は、これらの構成を実現するものである。以下、本発明の実施の形態を図面に基づき説明する。
〔第一の実施の形態〕
(本発明の一実施の形態に係る画像符号化装置の機能構成の例)
図1は、本発明の一実施の形態に係る画像符号化装置の機能構成の例を説明する図である。図1の画像符号化装置1は、外部に設けられたメモリ30と接続され、入力された画像データを圧縮した符号データを出力する。画像符号化装置1は、例えば、暗号化手段11、周波数分解手段21、保護ビット数決定手段22、及び、符号データ生成手段23を有する。画像符号化装置1は、さらに、領域ビット数決定手段12、アドレス生成手段13、色変換手段24、及び、量子化/可変長符号化手段25を有してもよい。
【0036】
暗号化手段11は、周波数分解して得られた変換係数を暗号化する手段である。なお、暗号化される前の変換係数を「原変換係数」、暗号化された後の変換係数を「暗号化変換係数」という。
【0037】
周波数分解手段21は、入力されたデータに対して周波数分解処理を行い、変換係数を出力する。周波数分解手段21は、例えば、ウェーブレット変換処理を行ってもよく、また例えば、DCT変換処理を行ってもよい。
【0038】
保護ビット数決定手段22は、周波数分解手段21による周波数分解の際に生成する変換係数に対し、オーバーフローを防ぐために追加する保護ビットのビット数である保護ビット数を決定する手段である。符号データから画像を復号する際に、保護ビットを考慮することにより、逆周波数分解処理におけるオーバーフローを防ぐことができる。なお、保護ビットは、符号データから画像を復号する際の逆量子化におけるオーバーフローを防ぐために追加されるビットでもよい。
【0039】
保護ビット数決定手段22は、さらに、後述する暗号化処理によって増加するビット数を、保護ビット数に含ませる。これにより、例えば、JPEG2000規格における保護ビットである「ガードビット」の情報に、暗号化処理によって増加するビット数を含ませることができる。したがって、新たなシンタックスを設けなくとも、既存の画像符号化の規格による符号データに、暗号化によって増加するビット数の情報を含ませることができる。
【0040】
符号データ生成手段23は、量子化/可変長符号化手段25によって処理された変換係数と保護ビットとを含む符号データを生成する手段である。符号データ生成手段23は、例えば、変換係数等が含まれているパケットを生成し、そのパケットを所定の順に並べることにより、符号データを生成する。なお、符号データ生成手段23によって符号データに含ませられる変換係数は、暗号化手段11によって暗号化処理が行われた変換係数でもよい。
【0041】
なお、「符号データ」とは、画像又は音声等の「原データ」に対して、圧縮等の符号化処理を行って生成されたひとかたまりのデータのことであり、例えば、JPEG2000規格におけるコードストリーム若しくはビットストリーム、JP2ファイルフォーマットの形式を有するデータ、又は、MJ2ファイルフォーマットの形式を有するデータ等である。「符号データ」とは、また例えば、MPEG規格におけるビットストリーム等でもよい。
【0042】
また、「原データ」とは、周波数分解が行われる前のデータであって、画像データの他に、音声データ又はその他のいかなるデータでもよい。
【0043】
色変換手段24は、画像符号化装置1が処理するデータが画像データの場合に、その画像データに対して色空間の変換処理、又は、所定の色コンポーネントに対するレベルシフト等の処理を行う。
【0044】
量子化/可変長符号化手段25は、暗号化変換係数に対して量子化処理及び/又は可変長符号化処理を行う。量子化/可変長符号化手段25は、また例えば、原変換係数に対して量子化処理及び/又は可変長符号化処理を行ってもよい。これにより、原変換係数の意一部のみが暗号化される場合に、原変換係数と暗号化変換係数との両方に対して量子化及び/又は可変長符号化処理を行うことができる。
【0045】
暗号化手段11は、例えば、原変換係数に対してDES又はAES等のブロック暗号化の処理を行う。暗号化手段11は、また例えば、複数の原変換係数が連結された値に対して暗号化処理を行う。暗号化手段11が、暗号化処理を行う、複数の原変換係数が連結された値とは、例えば、複数の原変換係数のビット数の最大値以上の2のべき乗の所定のビット数毎に、原変換係数が配された構成を有してもよく、さらに複数の原変換係数のビット数の最大値以上の16の倍数の所定のビット数毎に、原変換係数が配された構成を有してもよい。複数の原変換係数が連結された値とは、また例えば、その値のビット数がブロック長のビット数以下であればよく、その値のビット数がブロック長のビット数以下の最大ビット数となる値でもよく、その値のビット数がブロック長のビット数以下で2のべき乗の最大数となる値でもよい。
【0046】
これにより、メモリ30に原変換係数及び暗号化変換係数を格納する場合に、2のべき乗のビット数毎、又は、16の倍数毎に、それらの変換係数を格納することができるので、メモリ30にアクセスする際のバス幅が、2のべき乗又は16の倍数の場合には、高速にアクセスを行うことができる。
【0047】
なお、暗号化手段11が暗号化する原変換係数は、後述する周波数分解手段21によって周波数分解されて生成された変換係数の他に、一の符号データに含まれている変換係数が、その符号データを解析することにより取り出されたものでもよい。
【0048】
領域ビット数決定手段12は、原変換係数及び暗号化変換係数をメモリ30に格納する際の、一の変換係数に対応する領域のビット数である「領域ビット数」を決定する。領域ビット数決定手段12は、複数の原変換係数のビット数の最大値と、複数の暗号化変換係数のビット数の最大値のとのうち、何れか大きい方の値に基づき、領域ビット数を決定する。領域ビット数決定手段12によって決定される領域ビット数は、原変換係数がメモリ30に格納される際の一の原変換係数あたりの領域のビット数であり、さらに、暗号化変換係数がメモリ30に格納される際の一の暗号化変換係数あたりの領域のビット数である。
【0049】
原変換係数と暗号化変換係数とで、メモリ30における一の変換係数が格納される領域のビット数が同数であることにより、アドレス生成手段13による、アドレス生成の処理を簡易にすることができ、さらに、メモリへのアクセスを高速にすることができる。
【0050】
領域ビット数決定手段12は、また例えば、暗号化手段11がブロック暗号化処理を行う場合に、ブロック長を領域ビット数としてもよい。領域ビット数決定手段は、また例えば、暗号化手段11が、複数の原変換係数が連結された値に対してブロック暗号化処理を行う場合に、一の暗号化変換係数あたりのビット数を、領域ビット数としてもよい。一の暗号化変換係数あたりのビット数とは、例えば、ブロック暗号化処理におけるブロック長を、一のブロック暗号化によって処理される原変換係数の個数で除算した商である。
【0051】
アドレス生成手段13は、領域ビット数決定手段12によって決定された領域ビット数に基づき、原変換係数及び暗号化変換係数をメモリ30に書き込む際のアドレスを生成し、また、メモリ30に格納された原変換係数及び暗号化変換係数を読み出す際の、メモリ上のアドレスを生成する。アドレス生成手段13は、例えば、領域ビット数に基づいて、アクセスする変換係数が格納されているメモリ上の領域のアドレスを生成し、さらに、そのアドレスに格納されている値に対してアクセスを行ってもよい。
【0052】
なお、メモリ30又はメモリ30に格納されている値に対してアクセスするとは、その値等をメモリ30の該当する領域から読み出し、又は、その値等をメモリ30の該当する領域に書き込む処理を行うことである。
【0053】
なお、暗号化手段11、領域ビット数決定手段12、及び、アドレス生成手段13は、一の情報処理装置として構成されてもよい。
【0054】
なお、周波数分解手段21、符号データ生成手段23、色変換手段24、及び、量子化/可変長符号化手段25は、一の画像符号化装置として構成されてもよい。
【0055】
(本発明の一実施の形態に係る画像符号化装置の装置構成の例)
図2は、本発明の一実施の形態に係る画像符号化装置の装置構成の例を説明する図である。図2の画像符号化装置40は、データバスを介して、HDD43、RAM42、及び、CPU41が接続されている。なお、CPU41とRAM42とは、例えば、PCの内部に設けられ、HDD43は、例えば、PCの外部に接続される構成でもよい。
【0056】
図2の画像符号化装置40では、次の(E1)から(E4)の手順により、原符号が暗号化される。なお、図中の○で囲まれた1から4の数字は、以下の説明の(E1)から(E4)に対応する。
(E1) HDD43に記録された原データが、CPU41からの命令により、RAM42に格納される。
(E2) CPU41が、RAM42に格納された原データを読み出し、暗号化の処理を行う。
(E3) CPU41が、暗号化された符号をRAM42の原データが格納されている領域とは別の領域に書き込む。
(E4) CPU41の命令に基づき、暗号化された符号がHDD43に記録される。
【0057】
図2の画像符号化装置40は、また、次の(D1)から(D4)の手順により暗号化された符号を復号する。
(D1) HDD43に記録された暗号化された符号が、CPU41からの命令により、RAM42に格納される。
(D2) CPU41が、RAM42に格納された符号を読み出し、暗号の復号処理を行う。
(D3) CPU41が、復号化後の符号をRAM42上の暗号化された符号が格納されている領域とは別の領域に書き込む。
(D4) CPU41の命令に基づき、復号された画像のデータがHDD43に記録される。
【0058】
(暗号化方式の例)
図3は、本発明の一実施の形態に係る画像符号化装置によって行われる暗号化方式を説明する図である。図3の暗号化方式は、暗号化側と解読側とで同一の暗号鍵を秘密に共有する共通鍵暗号方式であり、より詳細には、適当な長さの文字列(ブロック)ごとに同じ鍵で暗号化を行う、AES(Advanced Encryption Standard)方式の例である。
図3では、(1)から(6)までの手順により、AESの処理が実現されている。
(1)データを128ビット長のブロックに分割する。
(2)ブロック中の1バイト毎に別の1バイトの値に置換する、SubBytes処理を行う。
(3)SubBytes処理の出力をバイト単位で混合する、ShiftRows処理を行う。
(4)4バイトの値を、ビット演算を用いて別の4バイトの値に変換する、MixColumn処理を行う。
(5)MixColumn処理の出力と、128ビットの鍵との排他的論理和をとる、AddRoundKey処理を行う。
(6)上記(2)〜(5)を10〜14回繰り返す。例えば、14回繰り返す。
となる.
なお、(5)において用いられる鍵は、予め用意された鍵の他に、用意された鍵と所定一方向性関数とにより生成される鍵でもよく、さらに、生成された鍵と所定の一方向性関数とにより生成される鍵でもよい。一方向性関数は、例えば、ハッシュ関数MD5(Message Digest 5)を用いる。MD5は、任意長の入力Aに対して128ビットのハッシュ値Bを出力する。ハッシュ値Bから入力Aを推定することが困難であるため、入力Aから出力Bを一方向に生成することができる。
【0059】
また、図5は、共通鍵暗号方式の例であるが、本発明の実施の形態は、共通鍵暗号方式に限らず、ブロック長毎に暗号処理を行う暗号化方式であればよい。
【0060】
(JPEG2000規格の説明)
図4から図28は、本実施の形態における画像符号化装置によって暗号化が行われる変換係数を生成する画像符号化処理を説明する図である。図4から図9は、JPEG2000規格の概要であり、図10から図18は、JPEG2000規格によるコードストリームの構成の概要である。また、図19から図25は、ZOI(Zone Of Influence)の設定に係る説明であり、図26から図28は暗号化処理の「粒度」に係る設定の説明である。なお、図4から図28に基づいて行われる画像符号化処理によって生成される画像を復号する処理は、これらの図から容易に理解できるので、ここでは説明を省略する。
【0061】
(JPEG2000規格の概要)
図4から図9は、JPEG2000規格の概要を説明する図であって、特にパケットのプログレッションオーダの理解を容易にするための図である。
【0062】
(JPEG2000規格による符号化処理又は復号処理における暗号化処理)
図4は、JPEG2000規格による画像データの符号化処理及び符号データの復号処理における暗号化処理の概略を説明する図である。図5のS1では、タイルと呼ばれる矩形の領域に分割された画像データに対し、タイル毎に色コンポーネントに分割される。さらに、各色コンポーネントに対して、DCレベルシフト処理が行われる。
【0063】
S2では、タイル毎にウェーブレット変換が施される。これにより、LL成分、HL成分、LH成分、HH成分の4つの成分、すなわち、サブバンドが生成される。LL成分に対して再帰的にサブバンド変換処理を繰り返すことにより、1つのLL成分と、複数のレベルの異なるHL成分、LH成分、HH成分が生成される。
【0064】
さらに、各サブバンドをプリシンクトと呼ばれる矩形に分割する。プリシンクトとは、サブバンドを矩形に分割したものであり、大まかには画像中の場所を表すものである。より詳細には、プリシンクトは、画像中の場所が対応するHL成分、LH成分、及び、HH成分の3つの成分の「組」である。プリシンクトは、サブバンドの大きさと同一でもよい。
【0065】
プリシンクトをさらに矩形に分割したものを、コードブロックという。そこで、物理的な大きさは、画像≧タイル>サブバンド≧プリシンクト≧コードブロックの順となる。
【0066】
図5は、画像、タイル、サブバンド、プリシンクト、及び、コードブロックの関係を説明する図である。また、図6は、サブバンドと解像度レベルとの関係を説明する図である。図6は、デコンポジションレベルが最大で3の場合の例である。なお、デコンポジションレベルとは、サブバンド変換を行う回数のことである。図6では、解像度レベル0が、デコンポジションレベルが最大の3LLに対応している。
【0067】
図4に戻り、S3では、S2のウェーブレット変換により生成したサブバンド毎に、量子化処理が行われる。本実施の形態では、図4のS3において、例えばLLサブバンドに対して暗号化の処理を行う。なお、暗号化処理を行う単位は、LLサブバンドに限らず、いかなるサブバンドでもよく、また一のサブバンドの中の所定のプリシンクト又はコードブロックでもよい。
【0068】
S4では、サブバンドをさらに分割したコードブロックと呼ばれる単位毎に、ウェーブレット変換係数に対して、ビットプレーン符号化が行われる。S4で行われるビットプレーン符号化は、エントロピー符号化である。
【0069】
S5では、ビットプレーン符号化によって生成した符号のうち、不要な符号が破棄され、残る必要な符号がパケットと呼ばれる単位にまとめられる。なお、必要な符号とは、例えば、全てのコードブロックのMSB側から順に3番目のビットプレーンまでの符号を集めたものであり、コードブロック毎にビットプレーン単位又はレイヤ単位で選択してもよい。また、必要な符号とは、さらに、「空」の符号でもよく、すなわち、パケットの中身にS4で生成されたエントロピー符号がふくまれなくてもよい。
【0070】
なお、パケットの先頭部に配されるパケットヘッダには、そのパケットに含まれる符号に係る情報が含まれる。これにより、生成される符号データから、パケット単位に符号を取得して処理することができる。
【0071】
また、一のデコンポジションレベルに含まれている全てのプリシンクトのパケットにより、画像全体の符号の一部が形成される。すなわち、例えばMSB側から順に3番目のビットプレーンまでの符号が集められている場合には、そのビットプレーンまでの符号ができる。これをレイヤと呼ぶ。レイヤは、例えば、画像全体のビットプレーンの符号の一部である。そこで、レイヤの数が増えると、復号される画像の画質が向上する。換言すれば、レイヤの数は画質の単位である。
【0072】
図7は、デコンポジションレベルが2、プリシンクトのサイズがサブバンドのサイズに等しい場合のレイヤと、そのレイヤに含まれるパケットを説明する図である。また、図8は、図7の例におけるパケットを説明する図である。パケットは、プリシンクトを単位としている。そこで、一のパケットは、プリシンクトを構成するHL成分、LH成分、及び、HH成分を含むように構成される。図8では、いくつかのパケットについて、太線で囲んで例示する。
【0073】
図4に戻り、S6では、S5で生成されたパケットを所定の順に並べて符号データが形成される。
【0074】
(パケットを並べる順の説明)
図9は、パケットを並べる所定の順を説明する図である。パケットは、
どのコンポ−ネント(以下、記号「C」を用いて説明する。)に属するか、
どの解像度レベル(以下、記号「R」を用いて説明する。)に属するか、
どのプリシンクト、すなわち場所(以下、記号「P」を用いて説明する)に属するか、
どのレイヤ(以下、記号「L」を用いて説明する。)に属するか、
という4つの属性をヘッダ部に有する。パケットのヘッダ部をパケットヘッダという。パケットヘッダの後には、パケットデータが続く。パケットデータは、エントロピー符号であって、JPEG2000規格による算術符号が行われた場合には、MQ符号である。
【0075】
すなわち、パケットの配列とは、パケットヘッダおよびパケットデータをどの属性の順に階層的に並べるかを意味する。この配列順をプログレッションオーダとよぶ。図9では、5通りが示されている。
【0076】
パケットヘッダには、
・そのパケットが空かどうか
・そのパケットにどのコードブロックが含まれるか
・そのパケットに含まれる各コードブロックのゼロビットプレーン数
・そのパケットに含まれる各コードブロック符号のコーディングパス数、又は、さらにビットプレーン数
・そのパケットに含まれる各コードブロックの符号長
が記載されている。
【0077】
図9より以下の点が明白である。すなわち、プログレッションオーダが複数あるために、パケットを単位とする暗号化処理を行って一方向性関数により鍵を生成する方法では、パケットが並べ替えられた場合に、鍵の管理が煩雑になる。本実施の形態では、変換係数又は変換係数を連結した値に対してブロック暗号化の処理を行う。これにより、パケットが並べ変えられた場合でも、一のパケット内における暗号化処理及び復号処理の順は一定であることは明かである。
【0078】
(JPEG2000コードストリームの概要)
図10から図18は、JPEG2000コードストリームの概要を説明する図であって、特にJPEG2000のコードストリームにセキュリティを鑑みて暗号化処理等を行う規格である、JPSEC(SECure JPeg2000)を説明する図である。なお、JPSECとは、ISO/IEC15444−8に定められている規格である。なお、以下の実施の形態では、JPSECで定められている「ノーマティブツール」ではなく、類似のマーカを使用して、同様の機能を実現している。
【0079】
JPSECでは、JPEG2000規格により符号化された画像の所定の領域を暗号化し、適切な権限を有さない場合には、その領域の画像を参照することを許可しないようにすることができる。このような暗号化等のセキュリティを施す処理を行うソフトウェア又はハードウェアをJPSECツールと言い、その暗号化した「ある領域」をZOI(Zone Of Influence)と称する。以下の実施の形態では、ZOIは3LLサブバンドとする。
【0080】
ところで、JPEG2000規格では、コードストリームに暗号化を施す場合、新たにJPSEC用のマーカセグメントを追加することが定められている。なお、マーカセグメントとは、マーカと呼ばれる所定のコードとそのマーカに続く一連のデータ群をいう。マーカは、マーカセグメント又はマーカに続くその他のデータの内容等を表すコードである。
【0081】
図10は、JPSEC用のマーカセグメントを含むコードストリームを説明する図である。図10(A)は、暗号化が行われていないコードストリームの例であり、図10(B)は、少なくとも一部に暗号化が行われているコードストリームの例である。図10(B)において、網掛けされた「SEC」マーカセグメントが、暗号化されたことを示すマーカセグメントである。より詳細には、SECマーカセグメントは、メインヘッダのSIZマーカ以降の位置に配されている。
【0082】
図11は、SECマーカセグメントの構成を説明する図である。図11では、SECマーカに続いて、SECマーカセグメントの長さを表す情報等が配されている。図11中のPSECは暗号化に係るパラメータ等であり、その詳細は図12に記す。また、図11中のTool(i)は、このコードストリームに対して複数のJPSECツールが用いられている場合に、i番目のJPSECツールに関するパラメータである。
【0083】
図12は、図11中のPSECの詳細を説明する図である。図12中、FPSECは、コードストリーム中のINSECの有無、SECマーカセグメントが複数あるか否か等の情報を含む。また、Ntoolsは、JPSECツールの数を表す情報を含み、Imaxは、ツールindexの最大値の情報を含む。
【0084】
図13は、図11中のTool(i)の詳細を説明する図である。図13におけるtは、ツールタイプが、JPEG2000規格によるノーマティブツールか否か、を表す。また、IDは、ノーマティブツールの場合に、そのテンプレートを表す値であって、詳細は図14に記されている。本実施の形態では、解除テンプレートに対応する値1を有する。
【0085】
また、図13中のZOIについては、図19以降で詳述する。図13中のPIDは、ツールのパラメータであって、その詳細は図15に示されている。図15において、TIDは、指定したテンプレートIDに対応するテンプレートパラメータであり、その詳細は図16に示されている。また、Gは、暗号化の処理の「粒度」を表す。すなわち、どの程度の精度で暗号化処理を行うかを表す情報である。粒度については、図26以降で詳述する。
【0086】
図16は、図15中の、TIDの詳細を説明する図である。図16中のCTdecryが、暗号化タイプを表すIDであり、その詳細を、図17に示す。さらに図17において、暗号化タイプがブロック暗号化に対応する場合のCTdecryの値を図18に示す。
【0087】
本実施の形態では、SECマーカセグメントは1つとし、INSECマーカセグメントは用いない。JPSECツールの数は1、ツールindexは1であり、JPSECツールは、ノーマティブツールであるAESを用いる。したがって、図16におけるCTdecryの値は、0x0001である。なお、本発明の実施の形態はこの例に限らない。
【0088】
(ZOIの設定の説明)
図19から図25は、ZOIの設定を説明する図である。図19は、図13のTool(i)に含まれている、ZOIの詳細を説明する図である。図19のZOIには、ゾーンの個数であるNZZOI、及び、各ゾーンに関するパラメータであるZoneiが含まれている。図19に示すように、ZOIはZoneの集合として定義される。Zonekの詳細を、図20に示す。
【0089】
図20では、Zoneが、記述クラスとパラメータとで表現されている。図20において、DCzoikが、k番目のゾーンの記述クラスである。ゾーン記述クラスの構造を、図21に、ゾーン記述クラスの記述内容を図22に示す。
【0090】
図21及び図22より、一のZoneは、実空間での画像領域、周波数係数空間での解像度成分等の画像に関係したパラメータを用いて指定してもよく、また、符号化後の所定のパケットのように、画像とは直接関係しないパラメータによって指定してもよい。これら二種類の指定のどちらを選択するかを、ゾーン記述クラスのxのビットとして指定する。また、ゾーン記述クラスの記述内容のうち、画像に関係する記述クラスの内容を図23に示す。
【0091】
図20に戻り、Pzoi0、kは、そのゾーンの記述クラスに対応するゾーン記述パラメータであって、詳細は図24に示されている。図24中のMzoiは、ZOIのモードであって、その値に対応する内容(セマンティクス)は、図25に示されている。
【0092】
また、Nzoiは、ZOIの個数であり、その個数に対応する数のIzoiが、Nzoiの後ろに続く。
【0093】
本実施の形態では、例えば、画像に関係する記述クラスを用いる。すなわち、3LLのサブバンド全体を暗号化する場合には、図23において9のビット番号を1に、プリシンクトを暗号化する場合には6のビット番号を1に、コードブロックの場合は10のビット番号を1に設定する。
【0094】
(粒度に係る説明)
図26から図28は、暗号化の処理の「粒度」に係る設定を説明する図である。粒度とは、どの単位でセキュリティをかけるかの情報であって、暗号化の処理を行う単位を表す情報である。図26は、図15中のGの詳細である。図26中、POは、処理順序を表し、GLは、粒度を表す。図27は、POの取り得る値とその意味の例であり、図28は、GLの取り得る値とその意味の例である。ZOIで指定された領域全体に対して暗号化の処理を行う場合、PO値は0である。
【0095】
(本実施の形態におけるパラメータの例)
図29から図31は、図10から図28で説明したJPEG2000規格によるコードストリームの一部に暗号化を行う際に設定するパラメータの例を説明する図であって、主として図19から図25で説明したZOIの設定内容を説明する図である。なお、数字の末尾の'b'の文字は、その数字が2進数表現であることを表す。
【0096】
図29は、3LLサブバンド、すなわち、解像度レベル0のLLサブバンドを暗号化する場合の設定の例である。図29のa1は、DCzoi1の3番目のビットが1に設定されており、図23より、解像度レベルが設定されていることが判る。また、b1は、DCzoi2の3番目のビット、すなわち、DCzoiの9番目のビットが1に設定されているので、図23より、サブバンドが設定されていることが判る。
【0097】
そこで、a1に対応するlzoi3であるa2を参照すると、解像度レベルの値として0が設定されている。すなわち、解像度レベル0を暗号化することを表している。同様に、b1に対応するlzoi8であるb2を参照すると、サブバンドの値として0が設定されている。すなわち、LLサブバンドを暗号化することを表している。
【0098】
図30は、3LLサブバンド、すなわち、解像度レベル0のLLサブバンドの左上のプリシンクト1つだけを暗号化する場合の設定の例である。図30のc1は、DCzoi1の3番目のビットと6番目のビットとが1に設定されており、図23より、解像度レベルとプリシンクトとが設定されていることが判る。そこで、c1の3番目のビットに対応するlzoi8であるc2を参照すると、サブバンドの値として0が設定されており、LLサブバンドを暗号化することが表されている。
【0099】
また、c1の6番目のビットに対応するlzoi8であるc3及びc4を参照すると、暗号化を行う矩形領域の値としてそれぞれ0が設定されている。c3は、矩形領域の左上のプリシンクト番号を表し、c4は、矩形領域の右下のプリシンクト番号を表す。左上と右下のプリシンクト番号が何れも0であることから、図30の設定によれば、左上の一のプリシンクトに対して暗号化処理を行うことが判る。
【0100】
なお、図30においてd1及びd2の設定は、図29のb1及びb2の設定と同一であるので、ここでは説明を省略する。
【0101】
図31は、3LLサブバンド、すなわち、解像度レベル0のLLサブバンドの左上のコードブロック1つだけを暗号化する場合の設定の例である。図31のe1及びe2の設定は、図29のa1及びa2の設定と同一であるので、ここでは説明を省略する。
【0102】
図31のf1は、DCzoi2の3番目のビットと4番目のビットとが1に設定されており、図23より、サブバンドとコードブロックとが設定されていることが判る。そこで、f1の3番目のビットに対応するlzoi8であるc2を参照すると、サブバンドの値として0が設定されており、LLサブバンドを暗号化することが表されている。
【0103】
また、f1の4番目のビットに対応するlzoi9であるf3及びf4を参照すると、暗号化を行う矩形領域の値としてそれぞれ0が設定されている。f3は、矩形領域の左上のコードブロック番号を表し、f4は、矩形領域の右下のコードブロック番号を表す。左上と右下のコードブロック番号が何れも0であることから、図31の設定によれば、左上の一のコードブロックに対して暗号化処理を行うことが判る。
【0104】
図29から図31によりZOIを設定し、さらに、暗号化する粒度として「ZOIで指定された全領域、すなわち、値として"00001001b"」を指定して、そのZOIで指定された全領域に対して、設定にしたがって暗号化の処理を行う。これにより、暗号化の処理に用いられたノーマティブツールに対する鍵が無い場合には、そのZOIの暗号を解除することができない。
【0105】
(JPEG2000規格による画像符号化処理における暗号化処理の例)
図32は、本実施の形態による画像符号化方法の例のフローであって、JPEG2000規格による画像符号化処理における変換係数のうち、所定の領域の変換係数を暗号化する処理の例のフロー図である。
【0106】
図32では、入力された原画像のビット深さと、暗号化ウェーブレット係数の1係数あたりのビット深さとに基づいて、メモリ上の領域が確保され、入力された画像に対して符号化処理、及び、その符号化において生成するウェーブレット係数に対する暗号化処理が行われる。図32における「ウェーブレット係数」が「原変換係数」であり、「暗号化ウェーブレット係数」が「暗号化変換係数」である。また、図32中「ビット深さ」とは、変換係数等のビット長を表す。以下の説明では、「ビット深さ」及び「ビット長」を「ビット数」として説明する。
【0107】
なお、図32では、JPEG2000規格に基づく色空間変換及びDCレベルシフト等の処理は省略しているが、本発明の実施の形態はこの例に限らず、周波数分解して得られる変換係数を暗号化する画像符号化装置又は画像符号化方法であればよい。
【0108】
図32のステップS101では、領域ビット数決定手段12が、入力された原画像のビット深さを取得する。ステップS101に続いてステップS102に進み、周波数分解手段21が、ウェーブレット変換の種類とデコンポジションレベルとを決定する。ウェーブレット変換の種類とは、例えば、5x3変換又は9x7変換である。以下の説明では、5x3変換の場合について説明する。デコンポジションレベルは、ウェーブレット変換によるLL係数に対するサブバンド分解を繰り返す回数を表す。以下の説明では、デコンポジションレベルが3の場合について説明する。
【0109】
ステップS102に続いてステップS103に進み、保護ビット数決定手段22が、ステップS102で決定されたウェーブレット変換の種類とデコンポジションレベルとに基づいて、ガードビットを計算し、さらに、領域ビット数決定手段12が、一ウェーブレット係数あたりのビット数の最大値Mを計算する。この計算は、式(a)に基づいて行われる。すなわち、原画像のビット深さが8の場合に、5×3ウェーブレット変換を行うと、ウェーブレット係数のビット数は、式(a)より、最大で13ビットとなり、Mは13となる。
【0110】
なお、ガードビットとは、JPEG2000規格による量子化又はウェーブレット変換処理の際に、画像符号化を行う符号化器の計算精度によるオーバーフローを防ぐために設定されるビットである。ガードビットの値は、QCDマーカセグメントに含まれる。
【0111】
後述するステップで生成されるコードストリームには、ガードビットの値の他に、原データにおける画素のビット数、すなわち、ビット深さの情報と、色空間変換処理の有無を示す情報が含まれる。これらの情報により、コードストリームから画像を復号する復号器が、画素の値をオーバーフローさせることなく復号することができる。
【0112】
ステップS103に続いてステップS104に進み、暗号化手段11が暗号化方式を決定し、暗号化のブロック長を取得する。ステップS104に続いてステップS105に進み、領域ビット数決定手段12が、一の暗号化ウェーブレット係数あたりのビット数Eを計算する。
【0113】
より詳細には、例えば、一のブロック暗号化処理において処理対象となるウェーブレット係数の個数を以下の式(b)によって定められるn又はnの整数倍とする。
【0114】
暗号化方式のブロック長/n
=(ceil(ウェーブレット係数の最大ビット深さ/16))×16 ・・・・(b)
但し、ceilは、シーリング関数である。
【0115】
ここで、一のブロック暗号化処理において処理対象となるウェーブレット変換係数の個数をnの取り得る最大値とすることにより、一の変換係数の領域に対する暗号化処理の回数を好適に少なくすることができる。また、式(b)において、値16を用いていることにより、メモリへの一の読み出し又は一の書き込みの際のビット数が16ビット又は32ビット毎の場合に、好適に読み出し又は書き込みを行うことができる。そこで、nが取り得る最大値における暗号化方式のブロック長/nの値を、一の暗号化ウェーブレット係数あたりのビット数Eとする。
【0116】
そこで、一ウェーブレット係数あたりのビット数の最大値Mが13ビットの場合に、ブロック長128ビットの暗号化処理を行う際には、nの取り得る値は、1から8となり、nが8の場合に、16ビット毎にアクセスされるメモリへの読み出し又は書き込みを好適に行うことができる。そこで、128/8=16、すなわち、一の暗号化ウェーブレット係数あたりのビット数Eは16となる。
【0117】
ステップS105に続いてステップS106に進み、保護ビット数決定手段22が、ステップS105で計算された一の暗号化ウェーブレット係数あたりのビット数Eと、ステップS103で計算されたウェーブレット係数のビット数の最大値Mとに基づいて、符号データに含ませるガードビット数Gを計算する。ガードビット数Gは、次式(c)によって計算される。
【0118】
ガードビット数G=暗号化を行わない場合のガードビット数+E−M・・・(c)
式(c)より、Eが16、Mが13の場合には、ガードビット数Gは、(暗号化を行わない場合のガードビット数+3)となり、暗号化を行わない場合のガードビット数が2の場合には、Gは5となる。
【0119】
ところで、サブバンドbにおけるウェーブレット係数のビット深さを求める式(a)は、次の式(d)及び式(e)から導かれる。
【0120】
【数1】
但し、RIは、原データのビット数であって式(a)におけるbit1、
ζは、色変換によるビット数の増加値であって、式(a)におけるbit2であり、下付添字のcは、色コンポーネントを表す添字、
Gは、ガードビットであって、ウェーブレット変換によるビット数の増加分のうち、サブバンド間で共通に増加する値であり、式(a)におけるbit3、
log2(gainb)は、ウェーブレット変換によるビット数の増加分のうち、サブバンド間で異なる増加量の差であってLLサブバンドを基準とする値であり、式(a)におけるbit4、
である。
【0121】
式(d)の右辺は、式(a)の右辺から1を引いた値に等しい。ここで1を減じているのは、次の理由による。すなわち、JPEG2000規格では、原画像のデータに対してDCレベルシフトを行い、例えば0〜255の画素値を―128〜+127の値にし、絶対値と極性とを別個に符号化する。ここで、式(d)によるMbは、絶対値分に対応するビット数であり、式(a)は、絶対値分に極性分を加えたビット数である。そこで、ウェーブレット係数をオーバーフローさせないために必要となるメモリ上の一ウェーブレット係数あたりのビット数は、式(a)で得られる値となる。
【0122】
なお、JPEG2000規格によるコードストリームでは、原データのビット深さの情報は、SIZマーカセグメントに含まれ、色空間変換処理の有無を示す情報は、CODマーカセグメントに含まれる。
【0123】
ステップS106に続いてステップS107に進み、符号データ生成手段23が、SECマーカ及び付随するデータからなるSECマーカセグメントを生成する。ステップS107に続いてステップS108に進み、符号データ生成手段23が、ZOIマーカ及び付随するデータからなるZOIマーカセグメントを生成する。ここで生成されるZOIマーカセグメントは、例えば、図29から図31の何れか一の設定にしたがう。
【0124】
ステップS108に続いてステップS109に進み、アドレス生成手段13が、1変換係数あたりのビット数をEとして、メモリ上のアドレスを生成することにより、原画像の2倍の画素数分の領域をメモリ30上に確保する。ここで、原画像の2倍の画素数とは、原変換係数の数と暗号化変換係数の数とを加算した数と等しい。
【0125】
ステップS109に続いてステップS110に進み、周波数分解手段21が、原画像のデータである原データに対してウェーブレット変換を行い、ウェーブレット係数を生成する。
【0126】
ステップS110に続いてステップS111に進み、暗号化手段11が、ステップS110で生成されたウェーブレット係数に対して、暗号化処理を行う。なお、ここでの暗号化処理は、全てのウェーブレット係数に対して行われてもよく、また、一部のウェーブレット係数に対して行われてもよい。
【0127】
より詳細には、例えば、ステップS108で生成されたZOIマーカセグメントが、図29の設定による場合には、3LLサブバンドのウェーブレット係数全てに対して暗号化処理を行う。また例えば、ステップS108で生成されたZOIマーカセグメントが、図30の設定による場合には、3LLサブバンドの左上の一のプリシンクトのウェーブレット係数に対して暗号化処理を行う。また例えば、ステップS108で生成されたZOIマーカセグメントが、図31の設定による場合には、3LLサブバンドの左上の一のコードブロックのウェーブレット係数に対して暗号化処理を行う。
【0128】
例えば、3LLサブバンドのウェーブレット係数のビット数は最大で13ビットであるが、本発明の一実施の形態では、13ビットにさらに3ビットの所定の値を付加した16ビットの値を生成する。その16ビットの値を、ウェーブレット係数の並び順に8つずつビット結合することにより、128ビットの値を得、その128ビットの値に対して、ブロック暗号化処理を行う。
【0129】
また例えば、3LLサブバンドのウェーブレット係数を、並び順に8つずつビット結合した104ビットに、さらに、24ビットの所定の値を付加した128ビットの値を生成し、その128ビットの値に対してブロック暗号化処理を行ってもよい。
【0130】
すなわち、本発明の実施の形態では、タイルのサイズ、デコンポジションレベル、又は、コードブロックサイズを好適に設定することにより、一のブロック暗号処理において同時に暗号化される原変換係数の個数nと、暗号化する領域のサイズとを好適に対応させることができる。
【0131】
より詳細には、例えば、タイルサイズが横x、縦yの場合、デコンポジションレベルdのサブバンドのサイズは(x/2^d)×(y/2^d)となる。したがって、サブバンド全体を暗号化するならば、(x/2^d)×(y/2^d)がnの倍数になるようにタイルサイズを決定するとよい。また例えば、一のプリシンクトを暗号化する場合には、プリシンクトの縦横各々のサイズはである2^p(ただし0≦p≦14)が、nの倍数になるpを選択するとよい。また例えば、一のコードブロックを暗号化する場合には、コードブロックの縦横各々のサイズである2^c(ただし2≦c≦10)が、nの倍数になるcを選べばよい。
【0132】
ステップS111に続いてステップS112に進み、量子化/可変長符号化手段25が、暗号化の対象とならなかったウェーブレット係数及び暗号化ウェーブレット係数に対して、MQ符号化処理を行い、MQ符号を生成する。ステップS112に続いてステップS113に進み、符号データ生成手段23が、ステップS107で生成されたSECマーカセグメント、ステップS108で生成されたZOIマーカセグメント、及び、ステップS112で生成されたMQ符号を含むコードストリームを生成する。
【0133】
なお、図32の例では、SECマーカセグメント及びZOIマーカセグメントを生成した後に、ステップS109からステップS112の処理を行っているが、マーカセグメントの生成は、ステップS113におけるコードストリームの生成より前であればよく、生成されるマーカセグメントによって設定される内容が、ステップS110からステップS112の処理と対応していればよい。
【0134】
上記実施の形態では、JPEG2000規格による符号データにおける保護ビット、すなわち、ガードビットの数に、変換係数を暗号化処理することにより増加する増分ビット数を含ませることにより、既存の符号フォーマットにおいて、増分ビットに係る情報を含ませることを実現したが、本発明の実施の形態は、JPEG2000規格による符号データに限らない。周波数変換、逆周波数変換、量子化、又は、逆量子化等の処理においてオーバーフローを防止するために追加されるビット数に係る情報を含む符号フォーマットにおいて、その追加されるビット数に増分ビット数を加えた符号データを生成し又は処理する構成であればよい。
【0135】
以上の説明に関してさらに以下のような態様が考えられる。
(付記1)
原データを周波数分解して得られた複数の原変換係数を暗号化して暗号化変換係数を生成する暗号化手段と、
前記原変換係数に対する周波数分解の逆処理の演算処理におけるオーバーフローを防止するために前記原変換係数に追加する保護ビットの保護ビット数を決定する保護ビット数決定手段と、
前記保護ビット数と前記暗号変換係数とを含む符号データを生成する符号データ生成手段と、
を有し、
前記保護ビット数決定手段は、前記暗号化手段による暗号化により前記暗号化変換係数が前記原変換係数に対して増加する増分ビット数を、前記保護ビット数に加算した値を、前記符号データに含ませる保護ビット数とする画像符号化装置。
(付記2)
前記増分ビット数は、一の前記暗号化変換係数あたりのビット数と前記原変換係数のビット数の最大値との差である付記1記載の画像符号化装置。
(付記3)
前記暗号化手段は、ブロック暗号による暗号化を行う場合に、前記ブロック暗号のブロック長以下、かつ、前記原変換係数のビット数の最大値以上の2のべき乗の所定のビット数毎に、前記原変換係数が配されたブロックを生成して暗号化を行い、
前記符号データ生成手段は、前記所定のビット数を一の前記暗号化係数あたりのビット数とする付記2記載の画像符号化装置。
(付記4)
前記暗号化手段は、ブロック暗号による暗号化を行う場合に、複数の前記原変換係数を連結したブロックを生成してブロック暗号化を行い、
前記符号データ生成手段は、前記ブロック暗号のブロック長の該ブロックに含まれる複数の前記原変換係数の数による商を、一の前記暗号化変換係数あたりのビット数とする付記2記載の画像符号化装置。
(付記5)
前記符号データが、JPEG2000規格による符号データの場合に、前記保護ビットは、ガードビットである付記1ないし4何れか一項に記載の画像符号化装置。
(付記6)
原データを周波数分解して得られた複数の原変換係数を暗号化して暗号化変換係数を生成する暗号化ステップと、
前記原変換係数に対する周波数分解の逆処理の演算処理におけるオーバーフローを防止するために前記原変換係数に追加する保護ビットの保護ビット数を決定する保護ビット数決定ステップと、
前記保護ビット数と前記暗号変換係数とを含む符号データを生成する符号データ生成ステップと、
を有し、
前記保護ビット数決定ステップは、前記暗号化ステップにおける暗号化により前記暗号化変換係数が前記原変換係数に対して増加する増分ビット数を、前記保護ビット数に加算した値を、前記符号データに含ませる保護ビット数とする画像符号化方法。
(付記7)
付記6記載の画像符号化方法をコンピュータに実行させるためのコンピュータプログラム。
(付記8)
付記7記載のコンピュータプログラムを格納したコンピュータ読取可能な情報記録媒体。
【0136】
以上、発明を実施するための最良の形態について説明を行ったが、本発明は、この最良の形態で述べた実施の形態に限定されるものではない。本発明の主旨をそこなわない範囲で変更することが可能である。
【図面の簡単な説明】
【0137】
【図1】本発明の一実施の形態に係る画像符号化装置の機能構成の例の図。
【図2】本発明の一実施の形態に係る画像符号化装置の装置構成の例の図。
【図3】発明の一実施の形態に係る画像符号化装置によって行われる暗号化方式を説明する図。
【図4】JPEG2000規格による画像データの符号化処理及び符号データの復号処理における暗号化処理の概略を説明する図
【図5】画像、タイル、サブバンド、プリシンクト、及び、コードブロックの関係を説明する図。
【図6】サブバンドと解像度レベルとの関係を説明する図。
【図7】レイヤとレイヤに含まれるパケットとを説明する図。
【図8】図7の例におけるパケットを説明する図。
【図9】プログレッションオーダを説明する図。
【図10】JPSEC用のマーカセグメントを含むコードストリームを説明する図。
【図11】SECマーカセグメントの構成を説明する図。
【図12】PSECの詳細を説明する図。
【図13】Tool(i)の詳細を説明する図。
【図14】テンプレート値とその値に対応する意味とを説明する図。
【図15】PIDの詳細を説明する図。
【図16】TIDの詳細を説明する図。
【図17】CTdecryの詳細を説明する図。
【図18】ブロック暗号化に対応する場合のCTdecryの値を説明する図。
【図19】ZOIの詳細を説明する図。
【図20】Zonekの詳細を説明する図。
【図21】ゾーン記述クラスの構造を説明する図。
【図22】ゾーン記述クラスの記述内容を説明する図。
【図23】ゾーン記述クラスの画像に関係する記述クラスの内容を説明する図。
【図24】ゾーン記述パラメータPzoi0、kの詳細を説明する図。
【図25】ZOIのモードMzoiの値に対応する内容を説明する図。
【図26】Gの詳細を説明する図。
【図27】POの取り得る値とその意味の例を説明する図。
【図28】GLの取り得る値とその意味の例を説明する図。
【図29】JPEG2000規格によるコードストリームの一部に暗号化を行う際に設定するパラメータの例の図(その1)。
【図30】JPEG2000規格によるコードストリームの一部に暗号化を行う際に設定するパラメータの例の図(その2)。
【図31】JPEG2000規格によるコードストリームの一部に暗号化を行う際に設定するパラメータの例の図(その3)。
【図32】JPEG2000規格による画像符号化処理における変換係数のうち、所定の領域の変換係数を暗号化する処理の例のフロー図。
【符号の説明】
【0138】
1 画像符号化装置
11 暗号化手段
12 領域ビット数決定手段
13 アドレス生成手段
21 周波数分解手段
22 保護ビット数決定手段
23 符号データ生成手段
24 色変換手段
25 量子化/可変長符号化手段
30 メモリ
40 画像符号化装置
41 CPU
42 RAM
43 HDD
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、情報記録媒体、及び、コンピュータプログラムに関する。
【背景技術】
【0002】
従来から、画像や音声のデータ又はそれらのデータが圧縮された符号データを暗号化する技術がある。例えば、JPEG2000規格ファミリーの中のJPSECと呼ばれる規格(非特許文献1参照。)には、周波数分解されて得られた変換係数や、エントロピー符号に対して、DES(Data Encryption Standard)又はAES(Advanced Encryption Standard)等の方式による暗号化を行った場合に、その暗号化の方式に係る情報を符号データ中にマーカとして含ませることが記載されている。
【0003】
ところで、画像又は音声等が圧縮された符号データは、複数の構成要素を含んで構成され、全体のデータから最小の構成要素までの間に、複数の構成要素のクラスタを含む中間の構成要素が含まれる、所謂「入れ子」の構造を有している。そこで、構成要素毎に暗号鍵を異ならせると、多くの暗号鍵を管理する必要が生じ、鍵の管理が煩雑になる。
【0004】
そこで、一の構成要素の鍵をもとに、他の構成要素の鍵を生成させることが考えられる。例えば、特開2004−40248号公報(特許文献1)には、解像度レベルの下位のパケットに対応した鍵をもとに、一方向性関数を用いて、解像度レベルの上位のパケットに対応する鍵を生成することが記載されている。
【0005】
なお、パケットとは、JPEG2000規格による符号データにおける最小の構成要素である。このJPEG2000規格では、パケットの並び順を定めるプログレッションオーダが複数あるため、パケットが再配置された場合にも、符号データの中の先頭に近い側に配されているパケットに係る鍵から、後方に配されているパケットに係る鍵が生成されるように鍵の生成順を定める必要がある。
【0006】
特許文献1に記載の情報処理方法等によれば、一の解像度レベルのパケットを処理した後、次の解像度レベルのパケットの処理を行うまでの間、一の解像度レベルに対応する鍵を保持し管理する。これは、パケット毎に鍵を異ならせる場合には、解像度レベルがプログレッションオーダの外側に近いほど、鍵の管理が煩雑になることを意味する。
【0007】
そこで、例えばパケットに含まれている変換係数毎に暗号化を行えば、パケットがいかなる順に並べ替えられたとしても、パケット内における変換係数の並び順は一意に定まるため、鍵の管理を容易にすることができる。
【特許文献1】特開2004−40248号公報
【非特許文献1】ISO/IEC 15444−8 Information technology − JPEG 2000 image coding system: Secure JPEG 2000
【非特許文献2】ISO/IEC 15444−1 JPEG 2000 image coding system: Core coding system
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、パケットに含まれている変換係数は、必ずしも一定のビット長を有しているとは限らない。例えば、JPEG2000規格においては、色変換処理やウェーブレット変換処理により、色コンポーネント間、又は、サブバンド間でビット長が異なり、さらに、ウェーブレット変換によるサブバンドのレベルによってもビット長が異なる。また、暗号化の処理によっては、暗号化後の出力データが入力データのビット長と異なることがある。
【0009】
そこでこれらの変換係数をそのビット長に応じてメモリに格納すると、メモリからのデータの読み出しと書き込みとを行う際に、処理するデータが暗号化前の「原変換係数」なのか、暗号化後の「暗号化変換係数」なのかによってメモリ上のアドレス生成処理を異ならせることとなり、処理が煩雑になるという不具合があることを意味する。
【0010】
本発明は、上記の点に鑑みて、これらの問題を解消するために発明されたものであり、周波数分解して得られた変換係数に対して、入力されるデータのビット長と出力されるデータのビット長とが異なる暗号化処理を行う場合に、暗号化の前と後との変換係数を格納するメモリのアドレス管理が容易な情報処理装置、情報処理方法、コンピュータプログラム、及び、情報記録媒体を提供することを目的としている。
【課題を解決するための手段】
【0011】
上記目的を達成するために、本発明の情報処理装置は次の如き構成を採用した。
【0012】
本発明の情報処理装置は、メモリに格納された原変換係数を読み出して暗号化を行う情報処理装置であって、原データを周波数分解して得られた複数の前記原変換係数を暗号化して暗号化変換係数を生成する暗号化手段と、前記原変換係数のビット数の最大値と前記暗号化変換係数のビット数の最大値とのうち何れか大なる値に基づいて、前記メモリにおける一の前記原変換係数が格納される領域のビット数と、前記メモリにおける一の前記暗号化変換係数が格納される領域のビット数とを、同数の領域ビット数として決定する領域ビット数決定手段と、前記領域ビット数に基づいて、前記原変換係数と前記暗号変換係数とが前記メモリに格納される際のアドレスを生成するアドレス生成手段と、を有する構成とすることができる。
【0013】
これにより、周波数分解して得られた変換係数に対して、入力されるデータのビット長と出力されるデータのビット長とが異なる暗号化処理を行う場合に、暗号化の前と後との変換係数を格納するメモリのアドレス管理が容易な情報処理装置を提供することができる。
【0014】
なお、上記課題を解決するため、本発明は、さらに、上記情報処理装置が備える各手段の機能を実行させる情報処理方法、その情報処理方法をコンピュータに実行させるためのコンピュータプログラム、又は、それらのコンピュータプログラムを格納した情報記録媒体としてもよい。
【発明の効果】
【0015】
本発明の情報処理装置、情報処理方法、コンピュータプログラム、及び、情報記録媒体によれば、周波数分解して得られた変換係数に対して、入力されるデータのビット長と出力されるデータのビット長とが異なる暗号化処理を行う場合に、暗号化の前と後との変換係数を格納するメモリのアドレス管理が容易な情報処理装置、その情報処理装置が備える各手段の機能を実行させる情報処理方法、その情報処理方法をコンピュータに実行させるためのコンピュータプログラムを提供することが可能になる。
【発明を実施するための最良の形態】
【0016】
本発明の実施の形態の説明に先んじて、本発明の実施の形態によって解決しようとする課題とその背景技術について、より詳細に説明する。
【0017】
セキュリティーニーズの高まりに伴い、画像データを圧縮して生成する符号データ又は画像データを圧縮する際に生成する様々な係数データ等を暗号化することがある。例えば、JPEG2000規格に定められる符号データのフォーマットにおいては、周波数分解後の変換係数や、その変換係数に対して可変長符号化処理等を行って生成するエントロピー符号に対して、DES(Data Encryption Standard)、AES(Advanced Encryption Standard)等の暗号化を施し、それらの暗号化がなされていることを示すシグナルを符号データ中にマーカとして入れてよいことが定められている。
【0018】
JPEG2000規格による符号データは、パケットと呼ばれる符号の単位をプログレッションオーダ順に並べたものである。そこで例えば、パケット毎のエントロピー符号を、パケット毎に対応する個別の暗号キーを用いて暗号化することができる。この場合、パケットとキーは1対1に対応づけられ、暗号化を行う側及び暗号を復号する側では、多くの暗号解除鍵(以下、「暗号鍵」又は「鍵」という。)を管理又は配信する処理が必要になる。
【0019】
そこで、パケットが所定の順に配列されていることを利用して、ある位置のパケットの鍵に対して、一方向性関数を適用することにより、そのパケットに隣接するパケットの鍵を順次生成する方法がある。この方法では、暗号化側からは一のパケットに対応する鍵が配信され、復号側では、その鍵に基づいて隣接するパケットの鍵を順次生成する。これにより、鍵が配信されたパケットの他のパケットに対する鍵を生成できるため、鍵の管理が容易になる。
【0020】
ところで、JPEG2000符号データの特徴の一に、パケットの抽出や再配列ができるということがある。そこで、符号データに対して再配列が行われると、上記の隣接関係が崩れる場合がある。このような場合には、再配列された後の一のパケットに対応した鍵に基づいて、隣接するパケットの鍵を生成できるとは限らず、鍵の管理が複雑になる。
【0021】
そこで、パケットの再配列と鍵の管理又は配信処理を容易にすることとを両立させるために、パケットの配列における制限に基づいて、鍵の生成の依存関係を決定することができる。より詳細には、例えば、一つのプログレッション属性内では、パケットの並びは昇順と定められていることを利用する。すなわち例えば、解像度0のパケットよりも先に解像度1のパケットが来ることはないので、解像度レベルの下位のパケットに対応する鍵に対して一方向性関数を用い、解像度レベルが上位のパケットに対応する鍵を生成する(特許文献1参照)。
【0022】
パケットの再配列と鍵の管理又は配信処理を容易にすることとを両立させるために、また例えば、再配列とは関係のない状態で暗号化を行うことが考えられる。例えば、JPEG2000規格による符号データでは、周波数分解後の変換係数に対して暗号化を施し、その後エントロピー符号化処理を行うことが許容されている。JPEG2000規格では、さらに、変換係数に対して暗号化を行う場合は、暗号化する変換係数の位置を自由に選択してよいことが定められている。
【0023】
そこで、変換係数に対する暗号化の形態として、次の2つの適用形態が考えられる。
(1)一の変換係数単位、又は複数の変換係数をまとめた単位に対して、暗号化を行う。
(2)一のビットプレーン単位、または複数のビットプレーンをまとめた単位に対して、暗号化を適用する。
【0024】
以下の実施の形態では、(1)の形態について述べる。
【0025】
ところで、(1)の形態の暗号化処理を行う場合には、変換係数毎のビット長が重要となる。すなわち、ブロック暗号化においては、所定のビット長のブロック毎に暗号化が行われるために、変換係数のビット長が異なる場合には、それらを効率よくメモリ等から読み出し、又は、出力される暗号化された変換係数を効率よくメモリに格納する技術が必要となる。
【0026】
例えば、1画素が8bitのビット長を有する原画像データに対して5x3ウェーブレット変換を用いるJPEG2000符号化を行う場合には、ウェーブレット変換後の変換係数のビット深さは、次式(a)で与えられる。
【0027】
変換係数のビット深さ=bit1+bit2+bit3+bit4・・・・・・(a)
但し、bit1は、原画像のビット深さであって、値8、
bit2は、色変換によるビット数増加であって、輝度コンポーネントは値0、色差コンポーネントは値1、
bit3は、ウェーブレット変換によるビット数増加のうち、「ガードビット」と呼ばれる、サブバンド間で共通に増加する分であって、5x3変換の場合、通常は値2、
bit4は、ウェーブレット変換によるビット数増加のうち、サブバンド間の増加量の差であってLL成分を基準として表される値。LL成分は値0、HL成分とLH成分は値1、HHは値2、
である。
【0028】
例えば、デコンポジションレベル1のウェーブレット変換が行われた色差コンポーネントの変換係数のビット深さは、式(a)より、以下のようになる。
【0029】
LLサブバンドの変換係数のビット深さ 8+1+2+0=11ビット
HLサブバンドの変換係数のビット深さ 8+1+2+1=12ビット
HHサブバンドの変換係数のビット深さ 8+1+2+2=13ビット
そこで、上記の場合には、変換係数を格納するメモリにおける一の変換係数の領域のビット数は、13ビットあればよい。
【0030】
ここで、変換係数に対して、暗号化処理を行うことを考える。例えば、AESでは、128ビット未満のデータを暗号化しても128ビットの暗号を生成する。そこで、暗号化後の変換係数は全て128ビットとなる。一般にブロック暗号方式は、ブロック長と等しいビット長の暗号データを生成する。すなわち、一の変換係数毎にAESにより暗号化すると、暗号化後の変換係数を保持するメモリにおける一の変換係数の領域のビット数は128ビットとなる。
【0031】
また例えば、8個の変換係数を連結して104ビットの入力データを生成し、これに対してAESを適用する場合には、104ビットの入力データに対して、128ビットの暗号データが生成される。そこで、暗号化後の変換係数を保持するメモリにおける一の変換係数に相当する領域のビット数は、16ビットとなる。
【0032】
すなわち、暗号化の前と後とで、変換係数を同一のメモリに格納する場合、暗号化前には例えば13と想定していたビット深さを、16として扱わなければならない。これは、メモリからのデータの読み出しと書き込みとを行うメモリアクセス制御手段が、処理するデータが暗号化前の「原変換係数」なのか、暗号化後の「暗号化変換係数」なのかによって処理を異ならせると、メモリ上のアドレス生成処理が煩雑になるという不具合があることを意味する。
【0033】
そこで、一の原変換係数あたりのビット数と、一の暗号化係数あたりのビット数とを同一にすることにより、メモリ上のアドレス生成処理を簡略にすることができる。さらに、原変換係数と暗号化変換係数とを一のメモリに格納することにより、そのメモリを有する情報処理装置、又は、そのメモリを用いて暗号化処理を行う情報処理装置の構成を簡易にすることができる。
【0034】
さらに、一の変換係数あたりのビット数に対し、暗号化によって増加する増分ビット数の情報を、画像データが圧縮された符号データに含ませることにより、復号側でその増分ビット数に応じた画像復号処理を行うことができる。
【0035】
以下の実施の形態は、これらの構成を実現するものである。以下、本発明の実施の形態を図面に基づき説明する。
〔第一の実施の形態〕
(本発明の一実施の形態に係る画像符号化装置の機能構成の例)
図1は、本発明の一実施の形態に係る画像符号化装置の機能構成の例を説明する図である。図1の画像符号化装置1は、外部に設けられたメモリ30と接続され、入力された画像データを圧縮した符号データを出力する。画像符号化装置1は、例えば、暗号化手段11、周波数分解手段21、保護ビット数決定手段22、及び、符号データ生成手段23を有する。画像符号化装置1は、さらに、領域ビット数決定手段12、アドレス生成手段13、色変換手段24、及び、量子化/可変長符号化手段25を有してもよい。
【0036】
暗号化手段11は、周波数分解して得られた変換係数を暗号化する手段である。なお、暗号化される前の変換係数を「原変換係数」、暗号化された後の変換係数を「暗号化変換係数」という。
【0037】
周波数分解手段21は、入力されたデータに対して周波数分解処理を行い、変換係数を出力する。周波数分解手段21は、例えば、ウェーブレット変換処理を行ってもよく、また例えば、DCT変換処理を行ってもよい。
【0038】
保護ビット数決定手段22は、周波数分解手段21による周波数分解の際に生成する変換係数に対し、オーバーフローを防ぐために追加する保護ビットのビット数である保護ビット数を決定する手段である。符号データから画像を復号する際に、保護ビットを考慮することにより、逆周波数分解処理におけるオーバーフローを防ぐことができる。なお、保護ビットは、符号データから画像を復号する際の逆量子化におけるオーバーフローを防ぐために追加されるビットでもよい。
【0039】
保護ビット数決定手段22は、さらに、後述する暗号化処理によって増加するビット数を、保護ビット数に含ませる。これにより、例えば、JPEG2000規格における保護ビットである「ガードビット」の情報に、暗号化処理によって増加するビット数を含ませることができる。したがって、新たなシンタックスを設けなくとも、既存の画像符号化の規格による符号データに、暗号化によって増加するビット数の情報を含ませることができる。
【0040】
符号データ生成手段23は、量子化/可変長符号化手段25によって処理された変換係数と保護ビットとを含む符号データを生成する手段である。符号データ生成手段23は、例えば、変換係数等が含まれているパケットを生成し、そのパケットを所定の順に並べることにより、符号データを生成する。なお、符号データ生成手段23によって符号データに含ませられる変換係数は、暗号化手段11によって暗号化処理が行われた変換係数でもよい。
【0041】
なお、「符号データ」とは、画像又は音声等の「原データ」に対して、圧縮等の符号化処理を行って生成されたひとかたまりのデータのことであり、例えば、JPEG2000規格におけるコードストリーム若しくはビットストリーム、JP2ファイルフォーマットの形式を有するデータ、又は、MJ2ファイルフォーマットの形式を有するデータ等である。「符号データ」とは、また例えば、MPEG規格におけるビットストリーム等でもよい。
【0042】
また、「原データ」とは、周波数分解が行われる前のデータであって、画像データの他に、音声データ又はその他のいかなるデータでもよい。
【0043】
色変換手段24は、画像符号化装置1が処理するデータが画像データの場合に、その画像データに対して色空間の変換処理、又は、所定の色コンポーネントに対するレベルシフト等の処理を行う。
【0044】
量子化/可変長符号化手段25は、暗号化変換係数に対して量子化処理及び/又は可変長符号化処理を行う。量子化/可変長符号化手段25は、また例えば、原変換係数に対して量子化処理及び/又は可変長符号化処理を行ってもよい。これにより、原変換係数の意一部のみが暗号化される場合に、原変換係数と暗号化変換係数との両方に対して量子化及び/又は可変長符号化処理を行うことができる。
【0045】
暗号化手段11は、例えば、原変換係数に対してDES又はAES等のブロック暗号化の処理を行う。暗号化手段11は、また例えば、複数の原変換係数が連結された値に対して暗号化処理を行う。暗号化手段11が、暗号化処理を行う、複数の原変換係数が連結された値とは、例えば、複数の原変換係数のビット数の最大値以上の2のべき乗の所定のビット数毎に、原変換係数が配された構成を有してもよく、さらに複数の原変換係数のビット数の最大値以上の16の倍数の所定のビット数毎に、原変換係数が配された構成を有してもよい。複数の原変換係数が連結された値とは、また例えば、その値のビット数がブロック長のビット数以下であればよく、その値のビット数がブロック長のビット数以下の最大ビット数となる値でもよく、その値のビット数がブロック長のビット数以下で2のべき乗の最大数となる値でもよい。
【0046】
これにより、メモリ30に原変換係数及び暗号化変換係数を格納する場合に、2のべき乗のビット数毎、又は、16の倍数毎に、それらの変換係数を格納することができるので、メモリ30にアクセスする際のバス幅が、2のべき乗又は16の倍数の場合には、高速にアクセスを行うことができる。
【0047】
なお、暗号化手段11が暗号化する原変換係数は、後述する周波数分解手段21によって周波数分解されて生成された変換係数の他に、一の符号データに含まれている変換係数が、その符号データを解析することにより取り出されたものでもよい。
【0048】
領域ビット数決定手段12は、原変換係数及び暗号化変換係数をメモリ30に格納する際の、一の変換係数に対応する領域のビット数である「領域ビット数」を決定する。領域ビット数決定手段12は、複数の原変換係数のビット数の最大値と、複数の暗号化変換係数のビット数の最大値のとのうち、何れか大きい方の値に基づき、領域ビット数を決定する。領域ビット数決定手段12によって決定される領域ビット数は、原変換係数がメモリ30に格納される際の一の原変換係数あたりの領域のビット数であり、さらに、暗号化変換係数がメモリ30に格納される際の一の暗号化変換係数あたりの領域のビット数である。
【0049】
原変換係数と暗号化変換係数とで、メモリ30における一の変換係数が格納される領域のビット数が同数であることにより、アドレス生成手段13による、アドレス生成の処理を簡易にすることができ、さらに、メモリへのアクセスを高速にすることができる。
【0050】
領域ビット数決定手段12は、また例えば、暗号化手段11がブロック暗号化処理を行う場合に、ブロック長を領域ビット数としてもよい。領域ビット数決定手段は、また例えば、暗号化手段11が、複数の原変換係数が連結された値に対してブロック暗号化処理を行う場合に、一の暗号化変換係数あたりのビット数を、領域ビット数としてもよい。一の暗号化変換係数あたりのビット数とは、例えば、ブロック暗号化処理におけるブロック長を、一のブロック暗号化によって処理される原変換係数の個数で除算した商である。
【0051】
アドレス生成手段13は、領域ビット数決定手段12によって決定された領域ビット数に基づき、原変換係数及び暗号化変換係数をメモリ30に書き込む際のアドレスを生成し、また、メモリ30に格納された原変換係数及び暗号化変換係数を読み出す際の、メモリ上のアドレスを生成する。アドレス生成手段13は、例えば、領域ビット数に基づいて、アクセスする変換係数が格納されているメモリ上の領域のアドレスを生成し、さらに、そのアドレスに格納されている値に対してアクセスを行ってもよい。
【0052】
なお、メモリ30又はメモリ30に格納されている値に対してアクセスするとは、その値等をメモリ30の該当する領域から読み出し、又は、その値等をメモリ30の該当する領域に書き込む処理を行うことである。
【0053】
なお、暗号化手段11、領域ビット数決定手段12、及び、アドレス生成手段13は、一の情報処理装置として構成されてもよい。
【0054】
なお、周波数分解手段21、符号データ生成手段23、色変換手段24、及び、量子化/可変長符号化手段25は、一の画像符号化装置として構成されてもよい。
【0055】
(本発明の一実施の形態に係る画像符号化装置の装置構成の例)
図2は、本発明の一実施の形態に係る画像符号化装置の装置構成の例を説明する図である。図2の画像符号化装置40は、データバスを介して、HDD43、RAM42、及び、CPU41が接続されている。なお、CPU41とRAM42とは、例えば、PCの内部に設けられ、HDD43は、例えば、PCの外部に接続される構成でもよい。
【0056】
図2の画像符号化装置40では、次の(E1)から(E4)の手順により、原符号が暗号化される。なお、図中の○で囲まれた1から4の数字は、以下の説明の(E1)から(E4)に対応する。
(E1) HDD43に記録された原データが、CPU41からの命令により、RAM42に格納される。
(E2) CPU41が、RAM42に格納された原データを読み出し、暗号化の処理を行う。
(E3) CPU41が、暗号化された符号をRAM42の原データが格納されている領域とは別の領域に書き込む。
(E4) CPU41の命令に基づき、暗号化された符号がHDD43に記録される。
【0057】
図2の画像符号化装置40は、また、次の(D1)から(D4)の手順により暗号化された符号を復号する。
(D1) HDD43に記録された暗号化された符号が、CPU41からの命令により、RAM42に格納される。
(D2) CPU41が、RAM42に格納された符号を読み出し、暗号の復号処理を行う。
(D3) CPU41が、復号化後の符号をRAM42上の暗号化された符号が格納されている領域とは別の領域に書き込む。
(D4) CPU41の命令に基づき、復号された画像のデータがHDD43に記録される。
【0058】
(暗号化方式の例)
図3は、本発明の一実施の形態に係る画像符号化装置によって行われる暗号化方式を説明する図である。図3の暗号化方式は、暗号化側と解読側とで同一の暗号鍵を秘密に共有する共通鍵暗号方式であり、より詳細には、適当な長さの文字列(ブロック)ごとに同じ鍵で暗号化を行う、AES(Advanced Encryption Standard)方式の例である。
図3では、(1)から(6)までの手順により、AESの処理が実現されている。
(1)データを128ビット長のブロックに分割する。
(2)ブロック中の1バイト毎に別の1バイトの値に置換する、SubBytes処理を行う。
(3)SubBytes処理の出力をバイト単位で混合する、ShiftRows処理を行う。
(4)4バイトの値を、ビット演算を用いて別の4バイトの値に変換する、MixColumn処理を行う。
(5)MixColumn処理の出力と、128ビットの鍵との排他的論理和をとる、AddRoundKey処理を行う。
(6)上記(2)〜(5)を10〜14回繰り返す。例えば、14回繰り返す。
となる.
なお、(5)において用いられる鍵は、予め用意された鍵の他に、用意された鍵と所定一方向性関数とにより生成される鍵でもよく、さらに、生成された鍵と所定の一方向性関数とにより生成される鍵でもよい。一方向性関数は、例えば、ハッシュ関数MD5(Message Digest 5)を用いる。MD5は、任意長の入力Aに対して128ビットのハッシュ値Bを出力する。ハッシュ値Bから入力Aを推定することが困難であるため、入力Aから出力Bを一方向に生成することができる。
【0059】
また、図5は、共通鍵暗号方式の例であるが、本発明の実施の形態は、共通鍵暗号方式に限らず、ブロック長毎に暗号処理を行う暗号化方式であればよい。
【0060】
(JPEG2000規格の説明)
図4から図28は、本実施の形態における画像符号化装置によって暗号化が行われる変換係数を生成する画像符号化処理を説明する図である。図4から図9は、JPEG2000規格の概要であり、図10から図18は、JPEG2000規格によるコードストリームの構成の概要である。また、図19から図25は、ZOI(Zone Of Influence)の設定に係る説明であり、図26から図28は暗号化処理の「粒度」に係る設定の説明である。なお、図4から図28に基づいて行われる画像符号化処理によって生成される画像を復号する処理は、これらの図から容易に理解できるので、ここでは説明を省略する。
【0061】
(JPEG2000規格の概要)
図4から図9は、JPEG2000規格の概要を説明する図であって、特にパケットのプログレッションオーダの理解を容易にするための図である。
【0062】
(JPEG2000規格による符号化処理又は復号処理における暗号化処理)
図4は、JPEG2000規格による画像データの符号化処理及び符号データの復号処理における暗号化処理の概略を説明する図である。図5のS1では、タイルと呼ばれる矩形の領域に分割された画像データに対し、タイル毎に色コンポーネントに分割される。さらに、各色コンポーネントに対して、DCレベルシフト処理が行われる。
【0063】
S2では、タイル毎にウェーブレット変換が施される。これにより、LL成分、HL成分、LH成分、HH成分の4つの成分、すなわち、サブバンドが生成される。LL成分に対して再帰的にサブバンド変換処理を繰り返すことにより、1つのLL成分と、複数のレベルの異なるHL成分、LH成分、HH成分が生成される。
【0064】
さらに、各サブバンドをプリシンクトと呼ばれる矩形に分割する。プリシンクトとは、サブバンドを矩形に分割したものであり、大まかには画像中の場所を表すものである。より詳細には、プリシンクトは、画像中の場所が対応するHL成分、LH成分、及び、HH成分の3つの成分の「組」である。プリシンクトは、サブバンドの大きさと同一でもよい。
【0065】
プリシンクトをさらに矩形に分割したものを、コードブロックという。そこで、物理的な大きさは、画像≧タイル>サブバンド≧プリシンクト≧コードブロックの順となる。
【0066】
図5は、画像、タイル、サブバンド、プリシンクト、及び、コードブロックの関係を説明する図である。また、図6は、サブバンドと解像度レベルとの関係を説明する図である。図6は、デコンポジションレベルが最大で3の場合の例である。なお、デコンポジションレベルとは、サブバンド変換を行う回数のことである。図6では、解像度レベル0が、デコンポジションレベルが最大の3LLに対応している。
【0067】
図4に戻り、S3では、S2のウェーブレット変換により生成したサブバンド毎に、量子化処理が行われる。本実施の形態では、図4のS3において、例えばLLサブバンドに対して暗号化の処理を行う。なお、暗号化処理を行う単位は、LLサブバンドに限らず、いかなるサブバンドでもよく、また一のサブバンドの中の所定のプリシンクト又はコードブロックでもよい。
【0068】
S4では、サブバンドをさらに分割したコードブロックと呼ばれる単位毎に、ウェーブレット変換係数に対して、ビットプレーン符号化が行われる。S4で行われるビットプレーン符号化は、エントロピー符号化である。
【0069】
S5では、ビットプレーン符号化によって生成した符号のうち、不要な符号が破棄され、残る必要な符号がパケットと呼ばれる単位にまとめられる。なお、必要な符号とは、例えば、全てのコードブロックのMSB側から順に3番目のビットプレーンまでの符号を集めたものであり、コードブロック毎にビットプレーン単位又はレイヤ単位で選択してもよい。また、必要な符号とは、さらに、「空」の符号でもよく、すなわち、パケットの中身にS4で生成されたエントロピー符号がふくまれなくてもよい。
【0070】
なお、パケットの先頭部に配されるパケットヘッダには、そのパケットに含まれる符号に係る情報が含まれる。これにより、生成される符号データから、パケット単位に符号を取得して処理することができる。
【0071】
また、一のデコンポジションレベルに含まれている全てのプリシンクトのパケットにより、画像全体の符号の一部が形成される。すなわち、例えばMSB側から順に3番目のビットプレーンまでの符号が集められている場合には、そのビットプレーンまでの符号ができる。これをレイヤと呼ぶ。レイヤは、例えば、画像全体のビットプレーンの符号の一部である。そこで、レイヤの数が増えると、復号される画像の画質が向上する。換言すれば、レイヤの数は画質の単位である。
【0072】
図7は、デコンポジションレベルが2、プリシンクトのサイズがサブバンドのサイズに等しい場合のレイヤと、そのレイヤに含まれるパケットを説明する図である。また、図8は、図7の例におけるパケットを説明する図である。パケットは、プリシンクトを単位としている。そこで、一のパケットは、プリシンクトを構成するHL成分、LH成分、及び、HH成分を含むように構成される。図8では、いくつかのパケットについて、太線で囲んで例示する。
【0073】
図4に戻り、S6では、S5で生成されたパケットを所定の順に並べて符号データが形成される。
【0074】
(パケットを並べる順の説明)
図9は、パケットを並べる所定の順を説明する図である。パケットは、
どのコンポ−ネント(以下、記号「C」を用いて説明する。)に属するか、
どの解像度レベル(以下、記号「R」を用いて説明する。)に属するか、
どのプリシンクト、すなわち場所(以下、記号「P」を用いて説明する)に属するか、
どのレイヤ(以下、記号「L」を用いて説明する。)に属するか、
という4つの属性をヘッダ部に有する。パケットのヘッダ部をパケットヘッダという。パケットヘッダの後には、パケットデータが続く。パケットデータは、エントロピー符号であって、JPEG2000規格による算術符号が行われた場合には、MQ符号である。
【0075】
すなわち、パケットの配列とは、パケットヘッダおよびパケットデータをどの属性の順に階層的に並べるかを意味する。この配列順をプログレッションオーダとよぶ。図9では、5通りが示されている。
【0076】
パケットヘッダには、
・そのパケットが空かどうか
・そのパケットにどのコードブロックが含まれるか
・そのパケットに含まれる各コードブロックのゼロビットプレーン数
・そのパケットに含まれる各コードブロック符号のコーディングパス数、又は、さらにビットプレーン数
・そのパケットに含まれる各コードブロックの符号長
が記載されている。
【0077】
図9より以下の点が明白である。すなわち、プログレッションオーダが複数あるために、パケットを単位とする暗号化処理を行って一方向性関数により鍵を生成する方法では、パケットが並べ替えられた場合に、鍵の管理が煩雑になる。本実施の形態では、変換係数又は変換係数を連結した値に対してブロック暗号化の処理を行う。これにより、パケットが並べ変えられた場合でも、一のパケット内における暗号化処理及び復号処理の順は一定であることは明かである。
【0078】
(JPEG2000コードストリームの概要)
図10から図18は、JPEG2000コードストリームの概要を説明する図であって、特にJPEG2000のコードストリームにセキュリティを鑑みて暗号化処理等を行う規格である、JPSEC(SECure JPeg2000)を説明する図である。なお、JPSECとは、ISO/IEC15444−8に定められている規格である。なお、以下の実施の形態では、JPSECで定められている「ノーマティブツール」ではなく、類似のマーカを使用して、同様の機能を実現している。
【0079】
JPSECでは、JPEG2000規格により符号化された画像の所定の領域を暗号化し、適切な権限を有さない場合には、その領域の画像を参照することを許可しないようにすることができる。このような暗号化等のセキュリティを施す処理を行うソフトウェア又はハードウェアをJPSECツールと言い、その暗号化した「ある領域」をZOI(Zone Of Influence)と称する。以下の実施の形態では、ZOIは3LLサブバンドとする。
【0080】
ところで、JPEG2000規格では、コードストリームに暗号化を施す場合、新たにJPSEC用のマーカセグメントを追加することが定められている。なお、マーカセグメントとは、マーカと呼ばれる所定のコードとそのマーカに続く一連のデータ群をいう。マーカは、マーカセグメント又はマーカに続くその他のデータの内容等を表すコードである。
【0081】
図10は、JPSEC用のマーカセグメントを含むコードストリームを説明する図である。図10(A)は、暗号化が行われていないコードストリームの例であり、図10(B)は、少なくとも一部に暗号化が行われているコードストリームの例である。図10(B)において、網掛けされた「SEC」マーカセグメントが、暗号化されたことを示すマーカセグメントである。より詳細には、SECマーカセグメントは、メインヘッダのSIZマーカ以降の位置に配されている。
【0082】
図11は、SECマーカセグメントの構成を説明する図である。図11では、SECマーカに続いて、SECマーカセグメントの長さを表す情報等が配されている。図11中のPSECは暗号化に係るパラメータ等であり、その詳細は図12に記す。また、図11中のTool(i)は、このコードストリームに対して複数のJPSECツールが用いられている場合に、i番目のJPSECツールに関するパラメータである。
【0083】
図12は、図11中のPSECの詳細を説明する図である。図12中、FPSECは、コードストリーム中のINSECの有無、SECマーカセグメントが複数あるか否か等の情報を含む。また、Ntoolsは、JPSECツールの数を表す情報を含み、Imaxは、ツールindexの最大値の情報を含む。
【0084】
図13は、図11中のTool(i)の詳細を説明する図である。図13におけるtは、ツールタイプが、JPEG2000規格によるノーマティブツールか否か、を表す。また、IDは、ノーマティブツールの場合に、そのテンプレートを表す値であって、詳細は図14に記されている。本実施の形態では、解除テンプレートに対応する値1を有する。
【0085】
また、図13中のZOIについては、図19以降で詳述する。図13中のPIDは、ツールのパラメータであって、その詳細は図15に示されている。図15において、TIDは、指定したテンプレートIDに対応するテンプレートパラメータであり、その詳細は図16に示されている。また、Gは、暗号化の処理の「粒度」を表す。すなわち、どの程度の精度で暗号化処理を行うかを表す情報である。粒度については、図26以降で詳述する。
【0086】
図16は、図15中の、TIDの詳細を説明する図である。図16中のCTdecryが、暗号化タイプを表すIDであり、その詳細を、図17に示す。さらに図17において、暗号化タイプがブロック暗号化に対応する場合のCTdecryの値を図18に示す。
【0087】
本実施の形態では、SECマーカセグメントは1つとし、INSECマーカセグメントは用いない。JPSECツールの数は1、ツールindexは1であり、JPSECツールは、ノーマティブツールであるAESを用いる。したがって、図16におけるCTdecryの値は、0x0001である。なお、本発明の実施の形態はこの例に限らない。
【0088】
(ZOIの設定の説明)
図19から図25は、ZOIの設定を説明する図である。図19は、図13のTool(i)に含まれている、ZOIの詳細を説明する図である。図19のZOIには、ゾーンの個数であるNZZOI、及び、各ゾーンに関するパラメータであるZoneiが含まれている。図19に示すように、ZOIはZoneの集合として定義される。Zonekの詳細を、図20に示す。
【0089】
図20では、Zoneが、記述クラスとパラメータとで表現されている。図20において、DCzoikが、k番目のゾーンの記述クラスである。ゾーン記述クラスの構造を、図21に、ゾーン記述クラスの記述内容を図22に示す。
【0090】
図21及び図22より、一のZoneは、実空間での画像領域、周波数係数空間での解像度成分等の画像に関係したパラメータを用いて指定してもよく、また、符号化後の所定のパケットのように、画像とは直接関係しないパラメータによって指定してもよい。これら二種類の指定のどちらを選択するかを、ゾーン記述クラスのxのビットとして指定する。また、ゾーン記述クラスの記述内容のうち、画像に関係する記述クラスの内容を図23に示す。
【0091】
図20に戻り、Pzoi0、kは、そのゾーンの記述クラスに対応するゾーン記述パラメータであって、詳細は図24に示されている。図24中のMzoiは、ZOIのモードであって、その値に対応する内容(セマンティクス)は、図25に示されている。
【0092】
また、Nzoiは、ZOIの個数であり、その個数に対応する数のIzoiが、Nzoiの後ろに続く。
【0093】
本実施の形態では、例えば、画像に関係する記述クラスを用いる。すなわち、3LLのサブバンド全体を暗号化する場合には、図23において9のビット番号を1に、プリシンクトを暗号化する場合には6のビット番号を1に、コードブロックの場合は10のビット番号を1に設定する。
【0094】
(粒度に係る説明)
図26から図28は、暗号化の処理の「粒度」に係る設定を説明する図である。粒度とは、どの単位でセキュリティをかけるかの情報であって、暗号化の処理を行う単位を表す情報である。図26は、図15中のGの詳細である。図26中、POは、処理順序を表し、GLは、粒度を表す。図27は、POの取り得る値とその意味の例であり、図28は、GLの取り得る値とその意味の例である。ZOIで指定された領域全体に対して暗号化の処理を行う場合、PO値は0である。
【0095】
(本実施の形態におけるパラメータの例)
図29から図31は、図10から図28で説明したJPEG2000規格によるコードストリームの一部に暗号化を行う際に設定するパラメータの例を説明する図であって、主として図19から図25で説明したZOIの設定内容を説明する図である。なお、数字の末尾の'b'の文字は、その数字が2進数表現であることを表す。
【0096】
図29は、3LLサブバンド、すなわち、解像度レベル0のLLサブバンドを暗号化する場合の設定の例である。図29のa1は、DCzoi1の3番目のビットが1に設定されており、図23より、解像度レベルが設定されていることが判る。また、b1は、DCzoi2の3番目のビット、すなわち、DCzoiの9番目のビットが1に設定されているので、図23より、サブバンドが設定されていることが判る。
【0097】
そこで、a1に対応するlzoi3であるa2を参照すると、解像度レベルの値として0が設定されている。すなわち、解像度レベル0を暗号化することを表している。同様に、b1に対応するlzoi8であるb2を参照すると、サブバンドの値として0が設定されている。すなわち、LLサブバンドを暗号化することを表している。
【0098】
図30は、3LLサブバンド、すなわち、解像度レベル0のLLサブバンドの左上のプリシンクト1つだけを暗号化する場合の設定の例である。図30のc1は、DCzoi1の3番目のビットと6番目のビットとが1に設定されており、図23より、解像度レベルとプリシンクトとが設定されていることが判る。そこで、c1の3番目のビットに対応するlzoi8であるc2を参照すると、サブバンドの値として0が設定されており、LLサブバンドを暗号化することが表されている。
【0099】
また、c1の6番目のビットに対応するlzoi8であるc3及びc4を参照すると、暗号化を行う矩形領域の値としてそれぞれ0が設定されている。c3は、矩形領域の左上のプリシンクト番号を表し、c4は、矩形領域の右下のプリシンクト番号を表す。左上と右下のプリシンクト番号が何れも0であることから、図30の設定によれば、左上の一のプリシンクトに対して暗号化処理を行うことが判る。
【0100】
なお、図30においてd1及びd2の設定は、図29のb1及びb2の設定と同一であるので、ここでは説明を省略する。
【0101】
図31は、3LLサブバンド、すなわち、解像度レベル0のLLサブバンドの左上のコードブロック1つだけを暗号化する場合の設定の例である。図31のe1及びe2の設定は、図29のa1及びa2の設定と同一であるので、ここでは説明を省略する。
【0102】
図31のf1は、DCzoi2の3番目のビットと4番目のビットとが1に設定されており、図23より、サブバンドとコードブロックとが設定されていることが判る。そこで、f1の3番目のビットに対応するlzoi8であるc2を参照すると、サブバンドの値として0が設定されており、LLサブバンドを暗号化することが表されている。
【0103】
また、f1の4番目のビットに対応するlzoi9であるf3及びf4を参照すると、暗号化を行う矩形領域の値としてそれぞれ0が設定されている。f3は、矩形領域の左上のコードブロック番号を表し、f4は、矩形領域の右下のコードブロック番号を表す。左上と右下のコードブロック番号が何れも0であることから、図31の設定によれば、左上の一のコードブロックに対して暗号化処理を行うことが判る。
【0104】
図29から図31によりZOIを設定し、さらに、暗号化する粒度として「ZOIで指定された全領域、すなわち、値として"00001001b"」を指定して、そのZOIで指定された全領域に対して、設定にしたがって暗号化の処理を行う。これにより、暗号化の処理に用いられたノーマティブツールに対する鍵が無い場合には、そのZOIの暗号を解除することができない。
【0105】
(JPEG2000規格による画像符号化処理における暗号化処理の例)
図32は、本実施の形態による画像符号化方法の例のフローであって、JPEG2000規格による画像符号化処理における変換係数のうち、所定の領域の変換係数を暗号化する処理の例のフロー図である。
【0106】
図32では、入力された原画像のビット深さと、暗号化ウェーブレット係数の1係数あたりのビット深さとに基づいて、メモリ上の領域が確保され、入力された画像に対して符号化処理、及び、その符号化において生成するウェーブレット係数に対する暗号化処理が行われる。図32における「ウェーブレット係数」が「原変換係数」であり、「暗号化ウェーブレット係数」が「暗号化変換係数」である。また、図32中「ビット深さ」とは、変換係数等のビット長を表す。以下の説明では、「ビット深さ」及び「ビット長」を「ビット数」として説明する。
【0107】
なお、図32では、JPEG2000規格に基づく色空間変換及びDCレベルシフト等の処理は省略しているが、本発明の実施の形態はこの例に限らず、周波数分解して得られる変換係数を暗号化する画像符号化装置又は画像符号化方法であればよい。
【0108】
図32のステップS101では、領域ビット数決定手段12が、入力された原画像のビット深さを取得する。ステップS101に続いてステップS102に進み、周波数分解手段21が、ウェーブレット変換の種類とデコンポジションレベルとを決定する。ウェーブレット変換の種類とは、例えば、5x3変換又は9x7変換である。以下の説明では、5x3変換の場合について説明する。デコンポジションレベルは、ウェーブレット変換によるLL係数に対するサブバンド分解を繰り返す回数を表す。以下の説明では、デコンポジションレベルが3の場合について説明する。
【0109】
ステップS102に続いてステップS103に進み、保護ビット数決定手段22が、ステップS102で決定されたウェーブレット変換の種類とデコンポジションレベルとに基づいて、ガードビットを計算し、さらに、領域ビット数決定手段12が、一ウェーブレット係数あたりのビット数の最大値Mを計算する。この計算は、式(a)に基づいて行われる。すなわち、原画像のビット深さが8の場合に、5×3ウェーブレット変換を行うと、ウェーブレット係数のビット数は、式(a)より、最大で13ビットとなり、Mは13となる。
【0110】
なお、ガードビットとは、JPEG2000規格による量子化又はウェーブレット変換処理の際に、画像符号化を行う符号化器の計算精度によるオーバーフローを防ぐために設定されるビットである。ガードビットの値は、QCDマーカセグメントに含まれる。
【0111】
後述するステップで生成されるコードストリームには、ガードビットの値の他に、原データにおける画素のビット数、すなわち、ビット深さの情報と、色空間変換処理の有無を示す情報が含まれる。これらの情報により、コードストリームから画像を復号する復号器が、画素の値をオーバーフローさせることなく復号することができる。
【0112】
ステップS103に続いてステップS104に進み、暗号化手段11が暗号化方式を決定し、暗号化のブロック長を取得する。ステップS104に続いてステップS105に進み、領域ビット数決定手段12が、一の暗号化ウェーブレット係数あたりのビット数Eを計算する。
【0113】
より詳細には、例えば、一のブロック暗号化処理において処理対象となるウェーブレット係数の個数を以下の式(b)によって定められるn又はnの整数倍とする。
【0114】
暗号化方式のブロック長/n
=(ceil(ウェーブレット係数の最大ビット深さ/16))×16 ・・・・(b)
但し、ceilは、シーリング関数である。
【0115】
ここで、一のブロック暗号化処理において処理対象となるウェーブレット変換係数の個数をnの取り得る最大値とすることにより、一の変換係数の領域に対する暗号化処理の回数を好適に少なくすることができる。また、式(b)において、値16を用いていることにより、メモリへの一の読み出し又は一の書き込みの際のビット数が16ビット又は32ビット毎の場合に、好適に読み出し又は書き込みを行うことができる。そこで、nが取り得る最大値における暗号化方式のブロック長/nの値を、一の暗号化ウェーブレット係数あたりのビット数Eとする。
【0116】
そこで、一ウェーブレット係数あたりのビット数の最大値Mが13ビットの場合に、ブロック長128ビットの暗号化処理を行う際には、nの取り得る値は、1から8となり、nが8の場合に、16ビット毎にアクセスされるメモリへの読み出し又は書き込みを好適に行うことができる。そこで、128/8=16、すなわち、一の暗号化ウェーブレット係数あたりのビット数Eは16となる。
【0117】
ステップS105に続いてステップS106に進み、保護ビット数決定手段22が、ステップS105で計算された一の暗号化ウェーブレット係数あたりのビット数Eと、ステップS103で計算されたウェーブレット係数のビット数の最大値Mとに基づいて、符号データに含ませるガードビット数Gを計算する。ガードビット数Gは、次式(c)によって計算される。
【0118】
ガードビット数G=暗号化を行わない場合のガードビット数+E−M・・・(c)
式(c)より、Eが16、Mが13の場合には、ガードビット数Gは、(暗号化を行わない場合のガードビット数+3)となり、暗号化を行わない場合のガードビット数が2の場合には、Gは5となる。
【0119】
ところで、サブバンドbにおけるウェーブレット係数のビット深さを求める式(a)は、次の式(d)及び式(e)から導かれる。
【0120】
【数1】
但し、RIは、原データのビット数であって式(a)におけるbit1、
ζは、色変換によるビット数の増加値であって、式(a)におけるbit2であり、下付添字のcは、色コンポーネントを表す添字、
Gは、ガードビットであって、ウェーブレット変換によるビット数の増加分のうち、サブバンド間で共通に増加する値であり、式(a)におけるbit3、
log2(gainb)は、ウェーブレット変換によるビット数の増加分のうち、サブバンド間で異なる増加量の差であってLLサブバンドを基準とする値であり、式(a)におけるbit4、
である。
【0121】
式(d)の右辺は、式(a)の右辺から1を引いた値に等しい。ここで1を減じているのは、次の理由による。すなわち、JPEG2000規格では、原画像のデータに対してDCレベルシフトを行い、例えば0〜255の画素値を―128〜+127の値にし、絶対値と極性とを別個に符号化する。ここで、式(d)によるMbは、絶対値分に対応するビット数であり、式(a)は、絶対値分に極性分を加えたビット数である。そこで、ウェーブレット係数をオーバーフローさせないために必要となるメモリ上の一ウェーブレット係数あたりのビット数は、式(a)で得られる値となる。
【0122】
なお、JPEG2000規格によるコードストリームでは、原データのビット深さの情報は、SIZマーカセグメントに含まれ、色空間変換処理の有無を示す情報は、CODマーカセグメントに含まれる。
【0123】
ステップS106に続いてステップS107に進み、符号データ生成手段23が、SECマーカ及び付随するデータからなるSECマーカセグメントを生成する。ステップS107に続いてステップS108に進み、符号データ生成手段23が、ZOIマーカ及び付随するデータからなるZOIマーカセグメントを生成する。ここで生成されるZOIマーカセグメントは、例えば、図29から図31の何れか一の設定にしたがう。
【0124】
ステップS108に続いてステップS109に進み、アドレス生成手段13が、1変換係数あたりのビット数をEとして、メモリ上のアドレスを生成することにより、原画像の2倍の画素数分の領域をメモリ30上に確保する。ここで、原画像の2倍の画素数とは、原変換係数の数と暗号化変換係数の数とを加算した数と等しい。
【0125】
ステップS109に続いてステップS110に進み、周波数分解手段21が、原画像のデータである原データに対してウェーブレット変換を行い、ウェーブレット係数を生成する。
【0126】
ステップS110に続いてステップS111に進み、暗号化手段11が、ステップS110で生成されたウェーブレット係数に対して、暗号化処理を行う。なお、ここでの暗号化処理は、全てのウェーブレット係数に対して行われてもよく、また、一部のウェーブレット係数に対して行われてもよい。
【0127】
より詳細には、例えば、ステップS108で生成されたZOIマーカセグメントが、図29の設定による場合には、3LLサブバンドのウェーブレット係数全てに対して暗号化処理を行う。また例えば、ステップS108で生成されたZOIマーカセグメントが、図30の設定による場合には、3LLサブバンドの左上の一のプリシンクトのウェーブレット係数に対して暗号化処理を行う。また例えば、ステップS108で生成されたZOIマーカセグメントが、図31の設定による場合には、3LLサブバンドの左上の一のコードブロックのウェーブレット係数に対して暗号化処理を行う。
【0128】
例えば、3LLサブバンドのウェーブレット係数のビット数は最大で13ビットであるが、本発明の一実施の形態では、13ビットにさらに3ビットの所定の値を付加した16ビットの値を生成する。その16ビットの値を、ウェーブレット係数の並び順に8つずつビット結合することにより、128ビットの値を得、その128ビットの値に対して、ブロック暗号化処理を行う。
【0129】
また例えば、3LLサブバンドのウェーブレット係数を、並び順に8つずつビット結合した104ビットに、さらに、24ビットの所定の値を付加した128ビットの値を生成し、その128ビットの値に対してブロック暗号化処理を行ってもよい。
【0130】
すなわち、本発明の実施の形態では、タイルのサイズ、デコンポジションレベル、又は、コードブロックサイズを好適に設定することにより、一のブロック暗号処理において同時に暗号化される原変換係数の個数nと、暗号化する領域のサイズとを好適に対応させることができる。
【0131】
より詳細には、例えば、タイルサイズが横x、縦yの場合、デコンポジションレベルdのサブバンドのサイズは(x/2^d)×(y/2^d)となる。したがって、サブバンド全体を暗号化するならば、(x/2^d)×(y/2^d)がnの倍数になるようにタイルサイズを決定するとよい。また例えば、一のプリシンクトを暗号化する場合には、プリシンクトの縦横各々のサイズはである2^p(ただし0≦p≦14)が、nの倍数になるpを選択するとよい。また例えば、一のコードブロックを暗号化する場合には、コードブロックの縦横各々のサイズである2^c(ただし2≦c≦10)が、nの倍数になるcを選べばよい。
【0132】
ステップS111に続いてステップS112に進み、量子化/可変長符号化手段25が、暗号化の対象とならなかったウェーブレット係数及び暗号化ウェーブレット係数に対して、MQ符号化処理を行い、MQ符号を生成する。ステップS112に続いてステップS113に進み、符号データ生成手段23が、ステップS107で生成されたSECマーカセグメント、ステップS108で生成されたZOIマーカセグメント、及び、ステップS112で生成されたMQ符号を含むコードストリームを生成する。
【0133】
なお、図32の例では、SECマーカセグメント及びZOIマーカセグメントを生成した後に、ステップS109からステップS112の処理を行っているが、マーカセグメントの生成は、ステップS113におけるコードストリームの生成より前であればよく、生成されるマーカセグメントによって設定される内容が、ステップS110からステップS112の処理と対応していればよい。
【0134】
上記実施の形態では、JPEG2000規格による符号データにおける保護ビット、すなわち、ガードビットの数に、変換係数を暗号化処理することにより増加する増分ビット数を含ませることにより、既存の符号フォーマットにおいて、増分ビットに係る情報を含ませることを実現したが、本発明の実施の形態は、JPEG2000規格による符号データに限らない。周波数変換、逆周波数変換、量子化、又は、逆量子化等の処理においてオーバーフローを防止するために追加されるビット数に係る情報を含む符号フォーマットにおいて、その追加されるビット数に増分ビット数を加えた符号データを生成し又は処理する構成であればよい。
【0135】
以上の説明に関してさらに以下のような態様が考えられる。
(付記1)
原データを周波数分解して得られた複数の原変換係数を暗号化して暗号化変換係数を生成する暗号化手段と、
前記原変換係数に対する周波数分解の逆処理の演算処理におけるオーバーフローを防止するために前記原変換係数に追加する保護ビットの保護ビット数を決定する保護ビット数決定手段と、
前記保護ビット数と前記暗号変換係数とを含む符号データを生成する符号データ生成手段と、
を有し、
前記保護ビット数決定手段は、前記暗号化手段による暗号化により前記暗号化変換係数が前記原変換係数に対して増加する増分ビット数を、前記保護ビット数に加算した値を、前記符号データに含ませる保護ビット数とする画像符号化装置。
(付記2)
前記増分ビット数は、一の前記暗号化変換係数あたりのビット数と前記原変換係数のビット数の最大値との差である付記1記載の画像符号化装置。
(付記3)
前記暗号化手段は、ブロック暗号による暗号化を行う場合に、前記ブロック暗号のブロック長以下、かつ、前記原変換係数のビット数の最大値以上の2のべき乗の所定のビット数毎に、前記原変換係数が配されたブロックを生成して暗号化を行い、
前記符号データ生成手段は、前記所定のビット数を一の前記暗号化係数あたりのビット数とする付記2記載の画像符号化装置。
(付記4)
前記暗号化手段は、ブロック暗号による暗号化を行う場合に、複数の前記原変換係数を連結したブロックを生成してブロック暗号化を行い、
前記符号データ生成手段は、前記ブロック暗号のブロック長の該ブロックに含まれる複数の前記原変換係数の数による商を、一の前記暗号化変換係数あたりのビット数とする付記2記載の画像符号化装置。
(付記5)
前記符号データが、JPEG2000規格による符号データの場合に、前記保護ビットは、ガードビットである付記1ないし4何れか一項に記載の画像符号化装置。
(付記6)
原データを周波数分解して得られた複数の原変換係数を暗号化して暗号化変換係数を生成する暗号化ステップと、
前記原変換係数に対する周波数分解の逆処理の演算処理におけるオーバーフローを防止するために前記原変換係数に追加する保護ビットの保護ビット数を決定する保護ビット数決定ステップと、
前記保護ビット数と前記暗号変換係数とを含む符号データを生成する符号データ生成ステップと、
を有し、
前記保護ビット数決定ステップは、前記暗号化ステップにおける暗号化により前記暗号化変換係数が前記原変換係数に対して増加する増分ビット数を、前記保護ビット数に加算した値を、前記符号データに含ませる保護ビット数とする画像符号化方法。
(付記7)
付記6記載の画像符号化方法をコンピュータに実行させるためのコンピュータプログラム。
(付記8)
付記7記載のコンピュータプログラムを格納したコンピュータ読取可能な情報記録媒体。
【0136】
以上、発明を実施するための最良の形態について説明を行ったが、本発明は、この最良の形態で述べた実施の形態に限定されるものではない。本発明の主旨をそこなわない範囲で変更することが可能である。
【図面の簡単な説明】
【0137】
【図1】本発明の一実施の形態に係る画像符号化装置の機能構成の例の図。
【図2】本発明の一実施の形態に係る画像符号化装置の装置構成の例の図。
【図3】発明の一実施の形態に係る画像符号化装置によって行われる暗号化方式を説明する図。
【図4】JPEG2000規格による画像データの符号化処理及び符号データの復号処理における暗号化処理の概略を説明する図
【図5】画像、タイル、サブバンド、プリシンクト、及び、コードブロックの関係を説明する図。
【図6】サブバンドと解像度レベルとの関係を説明する図。
【図7】レイヤとレイヤに含まれるパケットとを説明する図。
【図8】図7の例におけるパケットを説明する図。
【図9】プログレッションオーダを説明する図。
【図10】JPSEC用のマーカセグメントを含むコードストリームを説明する図。
【図11】SECマーカセグメントの構成を説明する図。
【図12】PSECの詳細を説明する図。
【図13】Tool(i)の詳細を説明する図。
【図14】テンプレート値とその値に対応する意味とを説明する図。
【図15】PIDの詳細を説明する図。
【図16】TIDの詳細を説明する図。
【図17】CTdecryの詳細を説明する図。
【図18】ブロック暗号化に対応する場合のCTdecryの値を説明する図。
【図19】ZOIの詳細を説明する図。
【図20】Zonekの詳細を説明する図。
【図21】ゾーン記述クラスの構造を説明する図。
【図22】ゾーン記述クラスの記述内容を説明する図。
【図23】ゾーン記述クラスの画像に関係する記述クラスの内容を説明する図。
【図24】ゾーン記述パラメータPzoi0、kの詳細を説明する図。
【図25】ZOIのモードMzoiの値に対応する内容を説明する図。
【図26】Gの詳細を説明する図。
【図27】POの取り得る値とその意味の例を説明する図。
【図28】GLの取り得る値とその意味の例を説明する図。
【図29】JPEG2000規格によるコードストリームの一部に暗号化を行う際に設定するパラメータの例の図(その1)。
【図30】JPEG2000規格によるコードストリームの一部に暗号化を行う際に設定するパラメータの例の図(その2)。
【図31】JPEG2000規格によるコードストリームの一部に暗号化を行う際に設定するパラメータの例の図(その3)。
【図32】JPEG2000規格による画像符号化処理における変換係数のうち、所定の領域の変換係数を暗号化する処理の例のフロー図。
【符号の説明】
【0138】
1 画像符号化装置
11 暗号化手段
12 領域ビット数決定手段
13 アドレス生成手段
21 周波数分解手段
22 保護ビット数決定手段
23 符号データ生成手段
24 色変換手段
25 量子化/可変長符号化手段
30 メモリ
40 画像符号化装置
41 CPU
42 RAM
43 HDD
【特許請求の範囲】
【請求項1】
メモリに格納された原変換係数を読み出して暗号化を行う情報処理装置であって、
原データを周波数分解して得られた複数の前記原変換係数を暗号化して暗号化変換係数を生成する暗号化手段と、
前記原変換係数のビット数の最大値と前記暗号化変換係数のビット数の最大値とのうち何れか大なる値に基づいて、前記メモリにおける一の前記原変換係数が格納される領域のビット数と、前記メモリにおける一の前記暗号化変換係数が格納される領域のビット数とを、同数の領域ビット数として決定する領域ビット数決定手段と、
前記領域ビット数に基づいて、前記原変換係数と前記暗号変換係数とが前記メモリに格納される際のアドレスを生成するアドレス生成手段と、
を有する情報処理装置。
【請求項2】
前記アドレス生成手段は、前記一の原変換係数が暗号化された前記一の暗号化変換係数を前記メモリに格納する際のアドレスを、前記一の原変換係数が前記メモリに格納されていたアドレスとする請求項1記載の情報処理装置。
【請求項3】
メモリに格納された原変換係数を読み出して暗号化を行う情報処理方法であって、
原データを周波数分解して得られた複数の前記原変換係数を暗号化して暗号化変換係数を生成する暗号化ステップと、
前記原変換係数のビット数の最大値と前記暗号化変換係数のビット数の最大値とのうち何れか大なる値に基づいて、前記メモリにおける一の前記原変換係数が格納される領域のビット数と、前記メモリにおける一の前記暗号化変換係数が格納される領域のビット数とを、同数の領域ビット数として決定する領域ビット数決定ステップと、
前記領域ビット数に基づいて、前記原変換係数と前記暗号変換係数とを前記メモリに格納し、及び、前記原変換係数を前記メモリから読み出すメモリアクセスステップと、
を有する情報処理方法。
【請求項4】
請求項3記載の情報処理方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項5】
請求項4記載のコンピュータプログラムを格納したコンピュータ読取可能な情報記録媒体。
【請求項1】
メモリに格納された原変換係数を読み出して暗号化を行う情報処理装置であって、
原データを周波数分解して得られた複数の前記原変換係数を暗号化して暗号化変換係数を生成する暗号化手段と、
前記原変換係数のビット数の最大値と前記暗号化変換係数のビット数の最大値とのうち何れか大なる値に基づいて、前記メモリにおける一の前記原変換係数が格納される領域のビット数と、前記メモリにおける一の前記暗号化変換係数が格納される領域のビット数とを、同数の領域ビット数として決定する領域ビット数決定手段と、
前記領域ビット数に基づいて、前記原変換係数と前記暗号変換係数とが前記メモリに格納される際のアドレスを生成するアドレス生成手段と、
を有する情報処理装置。
【請求項2】
前記アドレス生成手段は、前記一の原変換係数が暗号化された前記一の暗号化変換係数を前記メモリに格納する際のアドレスを、前記一の原変換係数が前記メモリに格納されていたアドレスとする請求項1記載の情報処理装置。
【請求項3】
メモリに格納された原変換係数を読み出して暗号化を行う情報処理方法であって、
原データを周波数分解して得られた複数の前記原変換係数を暗号化して暗号化変換係数を生成する暗号化ステップと、
前記原変換係数のビット数の最大値と前記暗号化変換係数のビット数の最大値とのうち何れか大なる値に基づいて、前記メモリにおける一の前記原変換係数が格納される領域のビット数と、前記メモリにおける一の前記暗号化変換係数が格納される領域のビット数とを、同数の領域ビット数として決定する領域ビット数決定ステップと、
前記領域ビット数に基づいて、前記原変換係数と前記暗号変換係数とを前記メモリに格納し、及び、前記原変換係数を前記メモリから読み出すメモリアクセスステップと、
を有する情報処理方法。
【請求項4】
請求項3記載の情報処理方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項5】
請求項4記載のコンピュータプログラムを格納したコンピュータ読取可能な情報記録媒体。
【図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】
【図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】
【公開番号】特開2009−49790(P2009−49790A)
【公開日】平成21年3月5日(2009.3.5)
【国際特許分類】
【出願番号】特願2007−215102(P2007−215102)
【出願日】平成19年8月21日(2007.8.21)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
【公開日】平成21年3月5日(2009.3.5)
【国際特許分類】
【出願日】平成19年8月21日(2007.8.21)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
[ Back to top ]