説明

画像暗号化装置及び画像復号装置及び画像暗号化方法及び画像復号方法及び画像暗号化プログラム及び画像復号プログラム

【課題】演算負荷低減と秘匿性を両立し、かつ、負荷と安全性のトレードオフについて、設計者がチューニングをするための指標を与え、かつ、画像データの特性の変化にも対応可能な画像暗号化装置を提供する。
【解決手段】サイズ計算部201は、スライスデータのサイズを示すサイズ情報とスライスデータを構成するマクロブロックの数を示すブロック数情報とに基づいて、スライスデータのうち暗号化される部分のデータサイズ単位である暗号化データサイズ204と、スライスデータのうち暗号化されない部分のデータサイズ単位である非暗号化データサイズ205とを算出する。暗号処理部202は、スライスデータを、先頭から交互に暗号化データサイズ204の第1データと非暗号化データサイズ205の第2データとに分け、各第1データを暗号化して出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像暗号化装置及び画像復号装置及び画像暗号化方法及び画像復号方法及び画像暗号化プログラム及び画像復号プログラムに関するものである。
【背景技術】
【0002】
近年、ビデオや監視映像等、動画像の電子化に伴い、これらのコンテンツを不正な閲覧から守るため、データの暗号化が求められている。
【0003】
動画像はMPEG2やH.264等、フレーム内予測とフレーム間予測を使って圧縮・符号化されることが多い。フレーム内予測とは、同一フレーム内の情報のみで圧縮を行う方式であり、この方式で符号化されるフレームはIフレームと呼ばれる。フレーム間予測とは、前後するフレーム内の情報を用いて圧縮を行う方式であり、この方式で符号化されるフレームはPフレームやBフレームと呼ばれる。MPEG2やH.264等の動画像の圧縮では、PフレームやBフレームは必須ではなく、Iフレームのみで符号化することも可能である。これは、圧縮率と品質とのトレードオフで決まる。また、組み込みシステムでは、リアルタイム性を優先するために、演算時間のかかるフレーム間予測を行わずに、フレーム内予測のみのフレームで動画像データを構成する場合もある。
【0004】
動画像の秘匿を行う場合、負荷の低減の観点から、動画像データ全体を暗号化するのではなく、動画像データの一部を暗号化することで、負荷低減と秘匿性を両立させる方法が提案されている(例えば、特許文献1〜3参照)。特許文献1では、GOP(Group・Of・Pictures)層、スライス層等の開始コードに続くパラメータや符号化データを暗号化する方法が示されている。特許文献2では、フレーム内データのみを暗号化する方法が示されている。特許文献3では、圧縮画像データについて所定の周期で暗号データと暗号化しないデータを配置する方法が示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平5−95352号公報
【特許文献2】特開平8−163533号公報
【特許文献3】特開2009−213083号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1では、層の開始コードに続くパラメータと符号化データを部分的に暗号化する。しかし、一般に、層の開始コードに続くパラメータは固定値であることが多く、一度推定されると、暗号化の如何に関わらず画像の復号が可能となってしまう。また、層の開始コードに続く符号化データの一部のみを暗号化する場合、特定の条件が重なると、暗号を解かなくても、当該層に含まれる暗号化されていない符号化データをデコード可能となり、原画像に関する部分情報を推定される可能性がある。
【0007】
特許文献2では、Iフレームを暗号化することで、P/Bフレームのデコードが不可能となり、その結果、動画像を完全に秘匿できるとしている。しかし、P/Bフレームのみでも、対象の一部(エッジ/動き等)が推定可能な程度に復元できることがわかってきた。また、Iフレームのみで符号化された動画像を暗号化する場合に、全フレームデータを暗号化しなくてはならず、暗号化に多大な演算コストがかかる。
【0008】
特許文献3では、圧縮画像データについて所定の周期で暗号データと暗号化しないデータを配置する。しかし、この場合、非暗号化データを配置する周期を設計者が決めなければならない。非暗号化データサイズを大きくすれば、演算負荷は下げられるが、暗号化されていない信号から原画像に関する部分情報がデコードできてしまうリスクが高まる。逆に、非暗号化データサイズを小さくすれば部分情報がデコードできてしまうリスクは低くなるが、演算負荷が高まる。この負荷と安全性のトレードオフについて、特許文献3では指針が示されていないため、設計者が試行錯誤的に決めなければならない。また、監視映像のように、時間によって、エンコードされる画像データが変化する場合、仮に特定のサンプル画像でチューニングを行っても、実運用時の画像データの変化に対応できない。
【0009】
本発明は、例えば、演算負荷低減と秘匿性を両立し、かつ、負荷と安全性のトレードオフについて、設計者がチューニングをするための指標を与え、かつ、画像データの特性の変化にも対応可能な画像暗号化装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の一の態様に係る画像暗号化装置は、
ブロック単位で可変長符号化された画像データのサイズを示すサイズ情報と、前記画像データを構成する可変長符号化されたブロックの数を示すブロック数情報とを入力する入力部と、
前記入力部により入力されたサイズ情報とブロック数情報とに基づいて、前記画像データのうち暗号化される部分のデータサイズ単位である暗号化データサイズと前記画像データのうち暗号化されない部分のデータサイズ単位である非暗号化データサイズとを処理装置により算出するサイズ計算部と、
前記画像データを、先頭から交互に、前記サイズ計算部により算出された暗号化データサイズの第1データと前記サイズ計算部により算出された非暗号化データサイズの第2データとに分け、各第1データを処理装置により暗号化して出力する暗号処理部と
を備えることを特徴とする。
【発明の効果】
【0011】
本発明の一の態様によれば、演算負荷低減と秘匿性を両立し、かつ、負荷と安全性のトレードオフについて、設計者がチューニングをするための指標を与え、かつ、画像データの特性の変化にも対応可能な画像暗号化装置を提供することが可能となる。
【図面の簡単な説明】
【0012】
【図1】実施の形態1に係る画像暗号化装置の構成を示すブロック図。
【図2】実施の形態1に係る画像暗号化装置の暗号化部の構成を示すブロック図。
【図3】実施の形態1に係る画像暗号化装置のハードウェア構成の一例を示す図。
【図4】実施の形態1に係る画像暗号化装置のサイズ計算部の動作を示すフローチャート。
【図5】実施の形態1に係る画像暗号化装置の暗号処理部の動作を示すフローチャート。
【図6】実施の形態1に係る画像暗号化装置が出力するデータのフォーマットを示す図。
【図7】実施の形態1に係る画像復号装置の構成を示すブロック図。
【図8】実施の形態1に係る画像復号装置の復号部の構成を示すブロック図。
【図9】実施の形態1に係る画像復号装置のサイズ計算部の動作を示すフローチャート。
【図10】実施の形態1に係る画像復号装置の復号処理部の動作を示すフローチャート。
【図11】実施の形態2に係る画像暗号化装置の暗号処理部の動作を示すフローチャート。
【図12】実施の形態1に係る画像復号装置の復号処理部の動作を示すフローチャート。
【発明を実施するための形態】
【0013】
以下、本発明の実施の形態について、図を用いて説明する。
【0014】
実施の形態1.
以下、本実施の形態について、H.264を例に説明する。ここで、H.264は、VCL(ビデオ符号化層)とNAL(ネットワーク抽象化層)の2つの層からなる。H.264では、1つのピクチャ(画像)が複数の種類のNALユニットに分割して符号化される。なお、本実施の形態は、MPEG2等、他の動画像フォーマットにも適用できる。また、JPEG等の静止画像にも適用可能である。
【0015】
図1は、本実施の形態に係る画像暗号化装置100の構成を示すブロック図である。
【0016】
図1において、画像暗号化装置100は、NALユニット抽出部101、NALユニット判定部102、パラメータ解析部103、暗号鍵生成部104、暗号化部105、ストリーム合成部106を備える。
【0017】
また、図示していないが、画像暗号化装置100は、処理装置、記憶装置、入力装置、出力装置等のハードウェアを備える。ハードウェアは画像暗号化装置100の各部によって利用される。例えば、処理装置は、画像暗号化装置100の各部でデータや情報の演算、加工、読み取り、書き込み等を行うために利用される。記憶装置は、そのデータや情報を記憶するために利用される。また、入力装置は、そのデータや情報の入力を受け付けるために、出力装置は、そのデータや情報を出力するために利用される。
【0018】
NALユニット抽出部101は、動画像データストリーム107の入力を受け付ける。NALユニット抽出部101は、入力された動画像データストリーム107を複数のNALユニット108に分解して出力する。NALユニット108は、SPS(シーケンスパラメータセット)、PPS(ピクチャパラメータセット)のパラメータセットNALユニット109と、Iスライスデータ、Bスライスデータ、Pスライスデータ等のスライスデータNALユニット110と、AUD(アクセスユニットデリミッタ)、SEI(付加拡張情報)等のその他NALユニット111とを含む。H.264のバイトストリームフォーマットの場合、NALユニット108のデータ中に“00h00h03h0xh”(x=0,1,2,3)というパターンが存在した場合、“00h00h0xh”(x=0,1,2,3)に変換する処理が必要となる。NALユニット抽出部101は必要に応じてこの処理を行う。
【0019】
NALユニット判定部102は、NALユニット108の種類を判定する。NALユニット判定部102は、判定したNALユニット108の種類がパラメータセットNALユニット109であれば、そのNALユニット108をパラメータ解析部103とストリーム合成部106に送る。NALユニット判定部102は、判定したNALユニット108の種類がスライスデータNALユニット110であれば、そのNALユニット108を暗号化部105に送る。NALユニット判定部102は、判定したNALユニット108の種類がその他NALユニット111であれば、そのNALユニット108をストリーム合成部106に送る。また、NALユニット判定部102は、スライスデータNALユニットサイズ119を求め、暗号化部105に送る。
【0020】
パラメータ解析部103は、パラメータセットNALユニット109を解析し、画像サイズ等を含む画像パラメータ112を生成し、暗号化部105に送る。
【0021】
暗号鍵生成部104は、暗号鍵導出用データ113の入力を受け付ける。暗号鍵生成部104は、入力された暗号鍵導出用データ113を用いて暗号鍵データ115及び暗号鍵情報NALユニット114を生成する。暗号鍵生成部104は、暗号鍵データ115を暗号化部105に、暗号鍵情報NALユニット114をストリーム合成部106に送る。暗号鍵情報NALユニット114には、復号時に参照する鍵のインデックス情報や、暗号鍵データ115の生成に使用した乱数データ等を格納する。
【0022】
暗号化部105は、画像パラメータ112やスライスデータNALユニットサイズ119を参照して、後述する暗号化データサイズを算出する。暗号化部105は、暗号鍵データ115を使って、スライスデータNALユニット110を暗号化し、暗号化スライスデータNALユニット117を生成してストリーム合成部106に送信する。また、暗号化部105は、暗号化データサイズを算出するためのパラメータを復号情報NALユニット116に格納してストリーム合成部106に送信する。
【0023】
ストリーム合成部106は、各部から送られたNALユニット108(パラメータセットNALユニット109、その他NALユニット111、復号情報NALユニット116、暗号化スライスデータNALユニット117)を合成して暗号化動画像データストリーム118を生成する。H.264のバイトストリームフォーマットの場合、NALユニット108のデータ中に“00h00h0xh”(x=0,1,2,3)というパターンが存在した場合、“00h00h03h0xh”(x=0,1,2,3)に変換する処理が必要となる。ストリーム合成部106は必要に応じてこの処理を行う。
【0024】
本実施の形態において、動画像エンコーダと組み合わせて暗号処理を行う場合は、画像暗号化装置100からNALユニット抽出部101及びNALユニット判定部102を省略してもよい。この場合、動画像エンコーダから、別途パラメータセットNALユニット109、スライスデータNALユニット110、その他NALユニット111、スライスデータNALユニットサイズ119を供給する。
【0025】
図2は、暗号化部105の構成を示すブロック図である。
【0026】
図2において、暗号化部105は、入力部200、サイズ計算部201、暗号処理部202、復号情報NALユニット生成部203を備える。
【0027】
入力部200は、NALユニット判定部102からのスライスデータNALユニット110及びスライスデータNALユニットサイズ119、パラメータ解析部103からの画像パラメータ112をサイズ計算部201に入力する。また、入力部200は、NALユニット判定部102からのスライスデータNALユニット110及びスライスデータNALユニットサイズ119、暗号鍵生成部104からの暗号鍵データ115を暗号処理部202に入力する。
【0028】
ここで、スライスデータNALユニット110は、ブロック単位で可変長符号化された画像データ(スライス層のデータ)と、画像データの先頭のマクロブロックアドレス等、画像データに関する情報を含むスライスヘッダとで構成される。画像データを構成する可変長符号化されたブロックは、それぞれマクロブロック(マクロブロック層のデータ)であり、それぞれのマクロブロックには、ピクチャ内での位置を示すマクロブロックアドレスが割り当てられる。本実施の形態では、ピクチャの先頭のマクロブロックから末尾のマクロブロックまで昇順にマクロブロックアドレスが割り当てられているものとする。スライスデータNALユニットサイズ119は、スライスデータNALユニット110のサイズを示す情報である。画像パラメータ112は、ピクチャを構成するマクロブロックの数等、ピクチャに関する情報を含む。
【0029】
スライスデータNALユニット110、スライスデータNALユニットサイズ119、画像パラメータ112には、スライスデータNALユニット110ごとに、画像データのサイズを示すサイズ情報と、画像データを構成するマクロブロックの数を示すブロック数情報とが含まれる。例えば、後述するように、スライスヘッダ(具体的には、スライスヘッダを解析して求められるスライスヘッダのサイズ)とスライスデータNALユニットサイズ119はサイズ情報として利用することができる。また、スライスヘッダ(具体的には、スライスヘッダで示される画像データの先頭のマクロブロックアドレス)と画像パラメータ112(具体的には、ピクチャを構成するマクロブロックの数)はブロック数情報として利用することができる。なお、スライスヘッダに、画像データに関する情報として、サイズ情報やブロック数情報を直接含めるようにしても構わない。
【0030】
サイズ計算部201は、画像パラメータ112、スライスデータNALユニットサイズ119、スライスデータNALユニット110を入力として(即ち、入力部200により入力されたサイズ情報とブロック数情報とに基づいて)、暗号化データサイズ204及び非暗号化データサイズ205を処理装置により算出する。また、サイズ計算部201は、暗号化データサイズ204及び非暗号化データサイズ205の導出に必要なパラメータを復号情報206として、復号情報NALユニット生成部203に渡す。
【0031】
ここで、暗号化データサイズ204は、スライスデータNALユニット110の画像データのうち、暗号処理部202により暗号化される部分のデータサイズ単位である。非暗号化データサイズ205は、スライスデータNALユニット110の画像データのうち、暗号処理部202により暗号化されない部分のデータサイズ単位である。
【0032】
暗号処理部202は、暗号鍵データ115、スライスデータNALユニットサイズ119、スライスデータNALユニット110、暗号化データサイズ204、非暗号化データサイズ205を入力として、暗号化スライスデータNALユニット117を生成する。具体的には、暗号処理部202は、スライスデータNALユニット110の画像データを、先頭から交互に、サイズ計算部201により算出された暗号化データサイズ204の第1データとサイズ計算部201により算出された非暗号化データサイズ205の第2データとに分け、暗号鍵データ115を用いて各第1データを処理装置により暗号化し、暗号化スライスデータNALユニット117として出力する。暗号処理部202は、必要に応じて復号補助情報207も生成する。
【0033】
復号情報NALユニット生成部203は、復号情報206を入力として、復号情報NALユニット116を生成する。復号情報NALユニット生成部203は、必要に応じて復号補助情報207も入力とする。
【0034】
図3は、画像暗号化装置100のハードウェア構成の一例を示す図である。
【0035】
図3において、画像暗号化装置100は、コンピュータであり、LCD901(Liquid・Crystal・Display)、キーボード902(K/B)、マウス903、FDD904(Flexible・Disk・Drive)、CDD905(Compact・Disc・Drive)、プリンタ906といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。LCD901の代わりに、CRT(Cathode・Ray・Tube)、あるいは、その他の表示装置が用いられてもよい。マウス903の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
【0036】
画像暗号化装置100は、プログラムを実行するCPU911(Central・Processing・Unit)を備えている。CPU911は、処理装置の一例である。CPU911は、バス912を介してROM913(Read・Only・Memory)、RAM914(Random・Access・Memory)、通信ボード915、LCD901、キーボード902、マウス903、FDD904、CDD905、プリンタ906、HDD920(Hard・Disk・Drive)と接続され、これらのハードウェアデバイスを制御する。HDD920の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ又はその他の記憶媒体が用いられてもよい。
【0037】
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、HDD920は、不揮発性メモリの一例である。これらは、記憶装置の一例である。通信ボード915、キーボード902、マウス903、FDD904、CDD905は、入力装置の一例である。また、通信ボード915、LCD901、プリンタ906は、出力装置の一例である。
【0038】
通信ボード915は、LAN(Local・Area・Network)等に接続されている。通信ボード915は、LANに限らず、IP−VPN(Internet・Protocol・Virtual・Private・Network)、広域LAN、ATM(Asynchronous・Transfer・Mode)ネットワークといったWAN(Wide・Area・Network)、あるいは、インターネットに接続されていても構わない。LAN、WAN、インターネットは、ネットワークの一例である。
【0039】
HDD920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。プログラム群923には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、CPU911により読み出され実行される。ファイル群924には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ID(識別子)」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、RAM914やHDD920等の記憶媒体に記憶される。RAM914やHDD920等の記憶媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理(動作)に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【0040】
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、RAM914等のメモリ、FDD904のフレキシブルディスク(FD)、CDD905のコンパクトディスク(CD)、HDD920の磁気ディスク、光ディスク、DVD(Digital・Versatile・Disc)、あるいは、その他の記録媒体に記録される。また、データや信号は、バス912、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
【0041】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【0042】
図4は、サイズ計算部201の動作を示すフローチャートである。なお、図4では、サイズ計算部201が、1ピクチャ分のスライスデータNALユニット110を受けて、1ピクチャを構成する全スライスデータNALユニット110の暗号化データサイズ204及び非暗号化データサイズ205を計算しているが、暗号化するスライスデータNALユニット110に応じて逐次的に計算してもよい。
【0043】
ステップS301において、サイズ計算部201は、入力部200により入力されたスライスデータNALユニット110を1ピクチャ単位で、マクロブロックアドレスの小さい順に処理装置によりソートする。なお、入力されるスライスデータNALユニット110がマクロブロックアドレスの小さい順にソートされていることが保証できる場合はこの処理を省いてもよい。以降、1ピクチャを構成するスライスデータNALユニット110の総数をN(NはN≧1となる整数)とし、各々のスライスデータNALユニット110をSlice[i](iは1≦i≦Nとなる整数)と記す。画像データの先頭のマクロブロックアドレスをfirst_mb_in_sliceと記す。Slice[i]のスライスデータNALユニットサイズ119をSliceLength[i]、Slice[i]に含まれるマクロブロックの数をSliceBlock[i]、Slice[i]の暗号化データサイズ204をEncLen[i]、非暗号化データサイズ205をNoEncLen[i]と記す。ステップS301の処理が完了した時点で、Slice[i]はfirst_mb_in_sliceの小さい順にソートされている。
【0044】
ステップS302において、サイズ計算部201は、Slice[i]のスライスヘッダを処理装置により解析し、スライスヘッダのデータ長を求める。以降、Slice[i]のスライスヘッダのデータ長をSliceHeaderLength[i]と記す。サイズ計算部201は、SliceLength[i]とSliceHeaderLength[i]との差分をとることで、Slice[i]に含まれる符号化された信号(画像データ)のデータ長を算出する。
【0045】
ステップS303において、サイズ計算部201は、Slice[i]のスライスヘッダからSlice[i]のfirst_mb_in_sliceを、Slice[i+1]のスライスヘッダからSlice[i+1]のfirst_mb_in_sliceを取得し、下記の式1により、SliceBlock[i]を処理装置により計算する。
SliceBlock[i]=(Slice[i+1]のfirst_mb_in_slice)−(Slice[i]のfirst_mb_in_slice)・・・式1
【0046】
ステップS304において、サイズ計算部201は、下記の式2により、EncLen[i]を処理装置により計算する。また、サイズ計算部201は、下記の式3により、NoEncLen[i]を処理装置により計算する。
EncLen[i]=Le×{(SliceLength[i]−SliceHeaderLength[i])/SliceBlock[i]}・・・式2
NoEncLen[i]=Ln×{(SliceLength[i]−SliceHeaderLength[i])/SliceBlock[i]}・・・式3
【0047】
ここで、暗号化係数Le、非暗号化係数Lnは設計者が与えるものであり、例えば、記憶装置に予め格納されており、サイズ計算部201によって読み込まれる。暗号化係数Le、非暗号化係数Lnは小数値でもよいが、ここでは整数値として与えられるものとする(例えば、暗号化係数Leを5、非暗号化係数Lnを20といったように設定する)。
【0048】
上記のように、サイズ計算部201は、Slice[i]ごとに、入力部200により入力されたサイズ情報が示す画像データのサイズ(SliceLength[i]−SliceHeaderLength[i])を、入力部200により入力されたブロック数情報が示すブロックの数(SliceBlock[i])で割って、画像データを構成するマクロブロックの平均サイズを求める。そして、サイズ計算部201は、求めたブロックの平均サイズに所定の第1係数(暗号化係数Le)を掛けて暗号化データサイズ204(EncLen[i])を算出する。また、サイズ計算部201は、求めたブロックの平均サイズに所定の第2係数(非暗号化係数Ln)を掛けて非暗号化データサイズ205(NoEncLen[i])を算出する。
【0049】
式2及び式3の計算において、後述する暗号処理部202で使用する暗号法に応じて、EncLen[i]やNoEncLen[i]が特定の数値の倍数になるように調整してもよい。即ち、サイズ計算部201は、算出した暗号化データサイズ204(EncLen[i])を所定ビットの整数倍に調整してもよい。例えば、暗号処理部202がAES(Advanced・Encryption・Standard)暗号を使用する場合等、EncLen[i]やNoEncLen[i]を128ビットの倍数にする必要があれば、サイズ計算部201は、EncLen[i]やNoEncLen[i]に定数を加算する等により大きさを調整してもよい。また、EncLen[i]については、設計者が定数Nmで与えてもよい。この場合、EncLen[i]は、例えば、記憶装置に予め格納されており、サイズ計算部201によって読み込まれる。
【0050】
画像データがコンテキスト適応型二値算術符号(CABAC)で符号化されている場合、ステップS304において、サイズ計算部201は、前述した式3に代えて、下記の式4により、NoEncLen[i]を処理装置により計算してもよい。
NoEncLen[i]=SliceLength[i]−SliceHeaderLength[i]−EncLen[i]・・・式4
【0051】
さらに、ステップS304において、画像データの符号化方式を判定するステップを設けてもよい。この場合、サイズ計算部201は、コンテスト適応型可変長符号(CAVLC)が用いられていれば、式3によりNoEncLen[i]を計算し、コンテキスト適応型二値算術符号(CABAC)が用いられていれば、式4によりNoEncLen[i]を計算する。
【0052】
ステップS305において、サイズ計算部201は、N番目(ピクチャ内で最後尾)のスライスデータNALユニット110であるSlice[N]のスライスヘッダからSlice[N]のfirst_mb_in_sliceを取得し、下記の式5により、Slice[N]に含まれるマクロブロックの数であるSliceBlock[N]を処理装置により計算する。
SliceBlock[N]=(ピクチャに含まれる総マクロブロック数)−(Slice[N]のfirst_mb_in_slice)・・・式5
【0053】
このとき、ピクチャに含まれる総マクロブロック数は、入力部200により入力された画像パラメータ112から与える。
【0054】
ステップS306において、サイズ計算部201は、ステップS304と同様に、前述した式2により、Slice[N]の暗号化データサイズ204であるEncLen[N]を処理装置により計算する。また、サイズ計算部201は、ステップS304と同様に、前述した式3により、Slice[N]の非暗号化データサイズ205であるNoEncLen[N]を処理装置により計算する。
【0055】
ステップS307において、サイズ計算部201は、復号情報206を処理装置により計算する。復号情報206としては、Slice[i]ごとのfirst_mb_in_slice、暗号化係数Le,非暗号化係数Ln等、復号に必要となる情報を付与する。
【0056】
図5は、暗号処理部202の動作を示すフローチャートである。図5では、暗号処理部202が、スライスヘッダの暗号化を行わずに、スライスデータ(画像データ)のみを暗号化する。
【0057】
ステップS401において、暗号処理部202は、ポインタpをスライスデータi(Slice[i]の画像データ)の先頭アドレスに、相対アドレスインデックスLを0にセットする。
【0058】
ステップS402において、暗号処理部202は、スライスデータiのスライスヘッダを処理装置により解析し、SliceHeaderLength[i]を計算する。暗号処理部202は、SliceHeaderLength[i]として、サイズ計算部201で計算された値を使ってもよい。
【0059】
ステップS403において、暗号処理部202は、ポインタpをSliceHeaderLength[i]分進める。暗号処理部202は、相対アドレスインデックスLもSliceHeaderLength[i]分加算する。以降、暗号処理部202は、相対アドレスインデックスLがSliceLength[i]未満である間、ステップS404及びS405を実行する。
【0060】
ステップS404において、暗号処理部202は、入力部200により入力された暗号鍵データ115を使用して、ポインタpからEncLen[i]だけ(即ち、サイズ計算部201により算出された暗号化データサイズ204の第1データを暗号化の対象に仕分け)、データ(第1データ)を処理装置により暗号化する。暗号化にはブロック暗号やストリーム暗号を使用することができる。
【0061】
ステップS405において、暗号処理部202は、ポインタp、相対アドレスインデックスLをそれぞれEncLen[i]+NoEncLen[i]だけ処理装置により加算する(即ち、サイズ計算部201により算出された非暗号化データサイズ205の第2データを暗号化しない対象に仕分ける)。
【0062】
図6は、画像暗号化装置100が出力するデータのフォーマットを示す図である。
【0063】
図6の(a)は、復号情報NALユニット生成部203が出力する復号情報NALユニット116の構成を示している。復号情報NALユニット116は、復号用データ501とヘッダ情報502とで構成される。復号用データ501には、復号情報206が含まれる。復号用データ501には必要に応じて復号補助情報207も含まれる。また、必要に応じてこれらの情報は暗号化されてもよい。ヘッダ情報502には、NALヘッダと当該NALユニットが復号情報NALユニット116であることを示すインデックス情報とが含まれる。NALヘッダはSEIとする。
【0064】
図6の(b)は、暗号鍵生成部104が出力する暗号鍵情報NALユニット114の構成を示している。暗号鍵情報NALユニット114は、暗号鍵情報601とヘッダ情報602とで構成される。暗号鍵情報601には、画像暗号化装置100と、後述する画像復号装置との間で鍵情報を共有するために必要な情報が含まれる。例えば暗号鍵本体に紐付けられたインデックス情報や、公開鍵暗号等の別の手段で暗号化された暗号鍵本体、暗号鍵データ115の生成に使用された乱数データ等が含まれる。ヘッダ情報602には、NALヘッダと当該NALユニットが暗号鍵情報NALユニット114であることを示すインデックス情報とが含まれる。NALヘッダはSEIとする。
【0065】
図7は、画像暗号化装置100で暗号化された動画像データストリーム107、即ち、暗号化動画像データストリーム118を復号する画像復号装置700の構成を示すブロック図である。
【0066】
図7において、画像復号装置700は、NALユニット抽出部701、NALユニット判定部702、パラメータ解析部703、暗号鍵生成部704、復号部705、ストリーム合成部706を備える。
【0067】
また、図示していないが、画像復号装置700は、処理装置、記憶装置、入力装置、出力装置等のハードウェアを備える。ハードウェアは画像復号装置700の各部によって利用される。例えば、処理装置は、画像復号装置700の各部でデータや情報の演算、加工、読み取り、書き込み等を行うために利用される。記憶装置は、そのデータや情報を記憶するために利用される。また、入力装置は、そのデータや情報の入力を受け付けるために、出力装置は、そのデータや情報を出力するために利用される。
【0068】
NALユニット抽出部701は、暗号化動画像データストリーム118の入力を受け付ける。NALユニット抽出部701は、入力された暗号化動画像データストリーム118を複数のNALユニット708に分解して出力する。NALユニット708は、SPS、PPSのパラメータセットNALユニット709と、Iスライスデータ、Bスライスデータ、Pスライスデータ等が暗号化された暗号化スライスデータNALユニット710と、AUD、SEI等のその他NALユニット711と、暗号化時に付与された暗号鍵情報NALユニット714及び復号情報NALユニット716とを含む。H.264のバイトストリームフォーマットの場合、NALユニット708のデータ中に“00h00h03h0xh”(x=0,1,2,3)というパターンが存在した場合、“00h00h0xh”(x=0,1,2,3)に変換する処理が必要となる。NALユニット抽出部701は必要に応じてこの処理を行う。
【0069】
NALユニット判定部702は、NALユニット708の種類を判定する。NALユニット判定部702は、判定したNALユニット708の種類がパラメータセットNALユニット709であれば、そのNALユニット708をパラメータ解析部703とストリーム合成部706に送る。NALユニット判定部702は、判定したNALユニット708の種類が暗号化スライスデータNALユニット710又は復号情報NALユニット716であれば、そのNALユニット708を復号部705に送る。NALユニット判定部702は、判定したNALユニット708の種類が暗号鍵情報NALユニット714であれば、そのNALユニット708を暗号鍵生成部704に送る。NALユニット判定部702は、判定したNALユニット708の種類がその他NALユニット711であれば、そのNALユニット708をストリーム合成部706に送る。また、NALユニット判定部702は、スライスデータNALユニットサイズ719を求め、復号部705に送る。
【0070】
パラメータ解析部703は、パラメータセットNALユニット709を解析し、画像サイズ等を含む画像パラメータ712を生成し、復号部705に送る。
【0071】
暗号鍵生成部704は、暗号鍵導出用データ713と暗号鍵情報NALユニット714の入力を受け付ける。暗号鍵生成部704は、入力された暗号鍵導出用データ713と暗号鍵情報NALユニット714を用いて暗号鍵データ715を生成する。暗号鍵生成部704は、暗号鍵データ715を復号部705に送る。なお、暗号鍵データ715は図1の暗号鍵データ115と同値である。
【0072】
復号部705は、画像パラメータ712と復号情報NALユニット716から、後述する暗号化データサイズを算出する。復号部705は、暗号鍵データ715を使って、暗号化スライスデータNALユニット710を復号し、スライスデータNALユニット717を生成してストリーム合成部706に送信する。
【0073】
ストリーム合成部706は、各部から送られたNALユニット708(パラメータセットNALユニット709、その他NALユニット711、スライスデータNALユニット717)を合成して動画像データストリーム718を生成する。H.264のバイトストリームフォーマットの場合、NALユニット708のデータ中に“00h00h0xh”(x=0,1,2,3)というパターンが存在した場合、“00h00h03h0xh”(x=0,1,2,3)に変換する処理が必要となる。ストリーム合成部706は必要に応じてこの処理を行う。
【0074】
図8は、復号部705の構成を示すブロック図である。
【0075】
図8において、復号部705は、入力部800、サイズ計算部801、復号処理部802、復号情報NALユニット解析部803を備える。
【0076】
入力部800は、NALユニット判定部702からの暗号化スライスデータNALユニット710及びスライスデータNALユニットサイズ719、パラメータ解析部703からの画像パラメータ712をサイズ計算部801に入力する。また、入力部800は、NALユニット判定部702からの暗号化スライスデータNALユニット710及びスライスデータNALユニットサイズ719、暗号鍵生成部704からの暗号鍵データ715を復号処理部802に入力する。また、入力部800は、NALユニット判定部702からの復号情報NALユニット716を復号情報NALユニット解析部803に入力する。
【0077】
復号情報NALユニット解析部803は、復号情報NALユニット716を入力として、復号情報806を取得する。これは、図2の復号情報206に対応する。復号情報NALユニット716が暗号化されている場合は復号してから取得する。復号情報NALユニット716が復号補助情報807を含んでいる場合はこれも取得する。これは、図2の復号補助情報207に対応する。
【0078】
サイズ計算部801は、画像パラメータ712、スライスデータNALユニットサイズ719、暗号化スライスデータNALユニット710、復号情報806を入力として(即ち、入力部800により入力されたサイズ情報とブロック数情報と復号情報806とに基づいて)、暗号化データサイズ804及び非暗号化データサイズ805を処理装置により算出する。
【0079】
復号処理部802は、暗号鍵データ715、スライスデータNALユニットサイズ719、暗号化スライスデータNALユニット710、暗号化データサイズ804、非暗号化データサイズ805を入力として、スライスデータNALユニット717を生成する。具体的には、復号処理部802は、暗号化スライスデータNALユニット710の暗号化された画像データを、先頭から交互に、サイズ計算部801により算出された暗号化データサイズ804の第1データとサイズ計算部801により算出された非暗号化データサイズ805の第2データとに分け、暗号鍵データ715を用いて各第1データを処理装置により復号し、スライスデータNALユニット717として出力する。復号処理部802は、復号補助情報807があれば、これも入力とする。
【0080】
なお、画像復号装置700のハードウェア構成としては、図3に例示した画像暗号化装置100と同様のハードウェア構成を採用することができる。
【0081】
図9は、サイズ計算部801の動作を示すフローチャートである。なお、図9では、サイズ計算部801が、1ピクチャ分の暗号化スライスデータNALユニット710を受けて、1ピクチャを構成する全暗号化スライスデータNALユニット710の暗号化データサイズ804及び非暗号化データサイズ805を計算しているが、復号する暗号化スライスデータNALユニット710に応じて逐次的に計算してもよい。
【0082】
ステップS901において、サイズ計算部801は、入力部800により入力された暗号化スライスデータNALユニット710を1ピクチャ単位で、マクロブロックアドレスの小さい順に処理装置によりソートする。なお、入力される暗号化スライスデータNALユニット710がマクロブロックアドレスの小さい順にソートされていることが保証できる場合や、1つの暗号化スライスデータNALユニット710に後続する暗号化スライスデータNALユニット710に含まれる画像データの先頭のマクロブロックアドレスが復号情報806から判明する場合はこの処理を省いてもよい。以降、N(NはN≧1となる整数)、Slice[i](iは1≦i≦Nとなる整数)、first_mb_in_slice、SliceLength[i]、SliceBlock[i]、EncLen[i]、NoEncLen[i]と記すものは、暗号処理の説明時と同様である。ステップS901の処理が完了した時点で、Slice[i]はfirst_mb_in_sliceの小さい順にソートされている。
【0083】
ステップS902において、サイズ計算部801は、Slice[i]のスライスヘッダを処理装置により解析し、スライスヘッダのデータ長を求める。以降、Slice[i]のスライスヘッダのデータ長をSliceHeaderLength[i]と記す。サイズ計算部801は、SliceLength[i]とSliceHeaderLength[i]との差分をとることで、Slice[i]に含まれる符号化された信号(画像データ)のデータ長を算出する。
【0084】
ステップS903において、サイズ計算部801は、Slice[i]のスライスヘッダからSlice[i]のfirst_mb_in_sliceを、Slice[i+1]のスライスヘッダからSlice[i+1]のfirst_mb_in_sliceを取得し、図4のステップS303と同様に、前述した式1により、SliceBlock[i]を処理装置により計算する。
【0085】
ステップS904において、サイズ計算部801は、図4のステップS304と同様に、前述した式2により、EncLen[i]を処理装置により計算する。また、サイズ計算部801は、図4のステップS304と同様に、前述した式3(又は式4)により、NoEncLen[i]を処理装置により計算する。
【0086】
このとき、暗号化係数Le、非暗号化係数Lnは復号情報806から取得する。EncLen[i]が定数Nmで与えられる場合も復号情報806から取得する。
【0087】
ステップS905において、サイズ計算部801は、Slice[N]のスライスヘッダからSlice[N]のfirst_mb_in_sliceを取得し、図4のステップS305と同様に、前述した式5により、SliceBlock[N]を処理装置により計算する。
【0088】
このとき、ピクチャに含まれる総マクロブロック数は、入力部800により入力された画像パラメータ712から与える。
【0089】
ステップS906において、サイズ計算部801は、図4のステップS306と同様に、前述した式2により、EncLen[N]を処理装置により計算する。また、サイズ計算部801は、図4のステップS306と同様に、前述した式3により、NoEncLen[N]を処理装置により計算する。
【0090】
図10は、復号処理部802の動作を示すフローチャートである。スライスヘッダの暗号化は行われていないため、図10では、復号処理部802が、スライスデータ(画像データ)のみを復号する。
【0091】
ステップS1001において、復号処理部802は、ポインタpをスライスデータi(Slice[i]の画像データ)の先頭アドレスに、相対アドレスインデックスLを0にセットする。
【0092】
ステップS1002において、復号処理部802は、スライスデータiのスライスヘッダを処理装置により解析し、SliceHeaderLength[i]を計算する。復号処理部802は、SliceHeaderLength[i]として、サイズ計算部801で計算された値を使ってもよい。
【0093】
ステップS1003において、復号処理部802は、ポインタpをSliceHeaderLength[i]分進める。復号処理部802は、相対アドレスインデックスLもSliceHeaderLength[i]分加算する。以降、復号処理部802は、相対アドレスインデックスLがSliceLength[i]未満である間、ステップS1004及びS1005を実行する。
【0094】
ステップS1004において、復号処理部802は、入力部800により入力された暗号鍵データ715を使用して、ポインタpからEncLen[i]だけ(即ち、サイズ計算部801により算出された暗号化データサイズ804の第1データを復号の対象に仕分け)、データ(第1データ)を処理装置により復号する。復号には暗号化で用いた暗号方式に対応する復号方式(例えば、ブロック暗号やストリーム暗号)を使用する。
【0095】
ステップS1005において、復号処理部802は、ポインタp、相対アドレスインデックスLをそれぞれEncLen[i]+NoEncLen[i]だけ処理装置により加算する(即ち、サイズ計算部801により算出された非暗号化データサイズ805の第2データを復号しない対象に仕分ける)。
【0096】
以下、本実施の形態の奏する効果について説明する。
【0097】
H.264において、コンテスト適応型可変長符号(CAVLC)で符号化されたデータの場合、以下の条件を満たす場合に、スライスデータ(以降、単にスライスという)先頭のマクロブロックがデコードされていなくても、スライス途中のマクロブロックのデコードが可能となる。
(A1)マクロブロックの先頭ビットが判明する。
(A2)マクロブロックのデータをエンコードする際に使用した符号化テーブルが判明する。
【0098】
条件(A1)は、ビットを後方探索することで探索可能である。マクロブロックは大きくても数百ビットであるため、全数探索も可能である。一方、条件(A2)は4つの符号化テーブルの探索であり、テーブルごとのエントリー数も高々62個である。よって、先頭部分のみを暗号化した場合、後方探索も含めても、4テーブル×62エントリー×1000ビット≒218ビットのオーダーの全数探索によって、非暗号化マクロブロックのデコードが可能となる。正しくデコードされたかどうかは目視によってのみ判定可能であるが、実際にはフォーマットエラーを起こす組み合わせも存在するため、目視による判定が必要な候補はさらに少なくなる。また、市販のデコーダにおいても、フォーマットエラーを無視して強制的にデコードするタイプのデコーダを使用した場合、暗号化領域を強制的にデコードした結果、上記条件を満たすマクロブロックが存在した場合に、それ以降のマクロブロックがデコードできてしまう可能性がある(以降、この現象を再同期と称する)。再同期の確率そのものは低いが、大量のスライスを処理する場合、再同期によって表示できてしまうマクロブロックが発生する可能性は高い。
【0099】
本実施の形態によれば、画像暗号化装置100において、暗号処理部202が、スライス先頭から交互に、サイズ計算部201により算出された暗号化データサイズ204の第1データとサイズ計算部201により算出された非暗号化データサイズ205の第2データとに分け、各第1データを暗号化して出力するため、上記のような再同期によるピクチャの解読(不正なデコード)を防止することができる。
【0100】
一方、コンテキスト適応型二値算術符号(CABAC)で符号化されたデータの場合、以下の条件を満たす場合にスライス先頭のマクロブロックがデコードされていなくても、スライス途中のマクロブロックのデコードが可能となる。
(B1)マクロブロックの先頭ビットが判明する。
(B2)マクロブロックを既定するパラメータを求めるための確率変数が全て判明する。
【0101】
条件(B1)は、前述した条件(A1)と同じであり、ビットを後方探索することで探索可能である。マクロブロックは大きくても数百ビットであるため、全数探索も可能である。一方、条件(B2)は7ビットの確率変数を、23個のパラメータについて探索する必要がある。確率変数はパラメータごとに独立であるため、確率変数が未知の状態では、後方探索も含めると、27×23×1000ビット≒2171ビットの全数探索が必要となり、計算量的に困難となる。確率変数はスライスごとにリセットされ、かつ、デコード対象のマクロブロックの確率変数は、それ以前のマクロブロックのデコード結果に依存するため、スライスの先頭データのみを暗号化することで十分な秘匿効果を得ることができる。
【0102】
本実施の形態によれば、画像暗号化装置100において、暗号処理部202が、スライス先頭から、サイズ計算部201により算出された暗号化データサイズ204のデータのみを暗号化して出力してもよく、この場合にも、上記のように十分な秘匿効果を得ることができる。そして、この場合、処理負荷を低減できる。
【0103】
特許文献1の方法で暗号化した場合、再同期によって層の終端データまでデコードできてしまう可能性がある。一方、本実施の形態によれば、符号化データの中間値も暗号化するため、仮に再同期が発生しても、その影響を次の暗号化データまでに留めることができる。
【0104】
また、本実施の形態によれば、Iスライス/Pスライス/Bスライス全てのデータを暗号化の対象とする。よって、特許文献2のようにP/Bスライスからデータを復号される心配はない。また、設計者が決定する暗号化係数Le、非暗号化係数Lnについて、IスライスとP/Bスライスとで変更することも可能であるため、P/Bスライスの暗号化係数Leを小さくし、非暗号化係数Lnを大きくすることで、さらなる負荷低減を図ることができる。即ち、図4のステップS304において、Slice[i]がフレーム内予測を行ったデータである場合、サイズ計算部201が、NoEncLen[i]として、Slice[i]がフレーム間予測を行ったデータである場合より小さい値を算出するようにしてもよい。
【0105】
さらに、本実施の形態によれば、設計者が決定する暗号化係数Le、非暗号化係数Lnを暗号化・非暗号化するマクロブロック数とみなすことができ、EncLen[i],NoEnclen[i]は暗号化・非暗号化されるマクロブロックのおおよそのサイズとみなすことができる。よって、統計的ではあるが、再同期のリスクも非暗号化係数Lnに示すマクロブロック数程度に抑えることができる。また、入力される画像データに応じて、暗号化・非暗号化データ長が調整されるため、設計者は入力画像に応じたチューニングが不要となる。
【0106】
さらに、本実施の形態によれば、スライスデータがコンテキスト適応型二値算術符号(CABAC)で符号化されている場合、スライス先頭のマクロブロックに相当するデータ領域のみを暗号化することで、当該スライス全体の再同期を防止することができる。
【0107】
以上説明したように、本実施の形態に係る画像暗号化装置100は、画像圧縮符号化方式で圧縮された画像データを暗号化する装置であって、符号化された信号のサイズと、前記信号に含まれる符号化ブロックの総数から、1ブロックあたりのデータサイズを算出し、前記1ブロックあたりのデータサイズから、暗号化データサイズ204及び非暗号化データサイズ205を算出し、前記符号化された信号の先頭から、暗号化データサイズ204の分だけデータを暗号化する処理と、非暗号化データサイズ205の分だけ暗号化を行わない処理を繰り返して信号を暗号化する。
【0108】
例えば、画像暗号化装置100は、前記1ブロックあたりのデータサイズに定数を乗算して暗号化データサイズ204及び非暗号化データサイズ205を算出する。
【0109】
例えば、画像暗号化装置100は、前記1ブロックあたりのデータサイズに定数を乗算し、かつ、前記乗算で算出した数値が、使用する暗号方式の処理単位となるように係数を加算して暗号化データサイズ204及び非暗号化データサイズ205を算出する。
【0110】
例えば、画像暗号化装置100は、フレーム内予測とフレーム間予測を行う動画像符号化方式で圧縮された画像データを暗号化する場合、フレーム間予測を行った信号に対しては非暗号化データサイズ205を大きく設定し、フレーム内予測を行った信号に対しては非暗号化データサイズ205を小さく設定する。
【0111】
また、本実施の形態に係る画像暗号化装置100は、圧縮符号化にコンテキスト適応型二値算術符号を用いる画像圧縮符号化方式で圧縮された画像データを暗号化する場合、符号化された信号のサイズと、前記信号に含まれる符号化ブロックの総数から、1ブロックあたりのデータサイズを算出し、前記1ブロックあたりのデータサイズから、暗号化データサイズ204を算出し、前記符号化された信号の先頭から、暗号化データサイズ204の分だけデータを暗号化してもよい。
【0112】
例えば、画像暗号化装置100は、復号に必要な情報を前記画像データのフォーマットに従って、前記暗号化された画像データに印加する。
【0113】
本実施の形態に係る画像復号装置700は、前記暗号化された画像データを復号する。
【0114】
実施の形態2.
本実施の形態について、主に実施の形態1との差異を説明する。
【0115】
実施の形態1では、スライスヘッダを暗号化しないが、本実施の形態では、スライスヘッダも暗号化する。本実施の形態に係る画像暗号化装置100の構成は、図1及び図2に示した実施の形態1のものと同様である。また、画像復号装置700の構成は、図7及び図8に示した実施の形態1のものと同様である。本実施の形態では、実施の形態1と暗号処理部202及び復号処理部802の動作が異なる。
【0116】
図11は、暗号処理部202の動作を示すフローチャートである。図11では、暗号処理部202が、スライスヘッダも暗号化する。
【0117】
ステップS1101において、暗号処理部202は、ポインタpをスライスデータi(Slice[i]の画像データ)の先頭アドレスに、相対アドレスインデックスLを0にセットする。
【0118】
ステップS1102において、暗号処理部202は、スライスデータiのスライスヘッダを処理装置により解析し、SliceHeaderLength[i]を計算する。暗号処理部202は、SliceHeaderLength[i]として、サイズ計算部201で計算された値を使ってもよい。また、後述する初期暗号化データサイズNpを定数で与える場合は本ステップを省略してもよい。
【0119】
ステップS1103において、暗号処理部202は、入力部200により入力された暗号鍵データ115を使用して、ポインタpから初期暗号化データサイズNpだけ、データを処理装置により暗号化する。暗号化にはブロック暗号やストリーム暗号を使用することができる。初期暗号化データサイズNpは下記の式6で与えてもよいし、設計者が定数で定めてもよい。
Np=SliceHeaderLength[i]+Enclen[i]・・・式6
【0120】
ステップS1104において、暗号処理部202は、ポインタp、相対アドレスインデックスLをそれぞれNp+NoEncLen[i]だけ処理装置により加算する。以降、暗号処理部202は、相対アドレスインデックスLがSliceLength[i]未満である間、ステップS1105及びS1106を実行する。
【0121】
ステップS1105において、暗号処理部202は、入力部200により入力された暗号鍵データ115を使用して、ポインタpからEncLen[i]だけ(即ち、サイズ計算部201により算出された暗号化データサイズ204の第1データを暗号化の対象に仕分け)、データ(第1データ)を処理装置により暗号化する。暗号化にはブロック暗号やストリーム暗号を使用することができる。
【0122】
ステップS1106において、暗号処理部202は、ポインタp、相対アドレスインデックスLをそれぞれEncLen[i]+NoEncLen[i]だけ処理装置により加算する(即ち、サイズ計算部201により算出された非暗号化データサイズ205の第2データを暗号化しない対象に仕分ける)。
【0123】
ステップS1107において、暗号処理部202は、初期暗号化データサイズNpを復号補助情報207として出力する。ステップS1103で、初期暗号化データサイズNpを式6で与えた場合は、SliceHeaderLength[i]を出力するようにしてもよい。
【0124】
図12は、復号処理部802の動作を示すフローチャートである。スライスヘッダの暗号化が行われているため、図12では、復号処理部802が、スライスヘッダとスライスデータ(画像データ)を復号する。
【0125】
ステップS1201において、復号処理部802は、ポインタpをスライスデータi(Slice[i]の画像データ)の先頭アドレスに、相対アドレスインデックスLを0にセットする。
【0126】
ステップS1202において、復号処理部802は、復号補助情報807から初期暗号化データサイズNpを取得する。復号補助情報807がSliceHeaderLength[i]を保持している場合、復号処理部802は、初期暗号化データサイズNpを前述した式6により算出する。
【0127】
ステップS1203において、復号処理部802は、入力部800により入力された暗号鍵データ715を使用して、ポインタpから初期暗号化データサイズNpだけ、データ(第1データ)を処理装置により復号する。復号には暗号化で用いた暗号方式に対応する復号方式(例えば、ブロック暗号やストリーム暗号)を使用する。
【0128】
ステップS1204において、復号処理部802は、ポインタp、相対アドレスインデックスLをそれぞれNp+NoEncLen[i]だけ処理装置により加算する。以降、復号処理部802は、相対アドレスインデックスLがSliceLength[i]未満である間、ステップS1205及びS1206を実行する。
【0129】
ステップS1205において、復号処理部802は、入力部800により入力された暗号鍵データ715を使用して、ポインタpからEncLen[i]だけ(即ち、サイズ計算部801により算出された暗号化データサイズ804の第1データを復号の対象に仕分け)、データ(第1データ)を処理装置により復号する。復号には暗号化で用いた暗号方式に対応する復号方式(例えば、ブロック暗号やストリーム暗号)を使用する。
【0130】
ステップS1206において、復号処理部802は、ポインタp、相対アドレスインデックスLをそれぞれEncLen[i]+NoEncLen[i]だけ処理装置により加算する(即ち、サイズ計算部801により算出された非暗号化データサイズ805の第2データを復号しない対象に仕分ける)。
【0131】
以下、本実施の形態の奏する効果について説明する。
【0132】
本実施の形態では、実施の形態1の効果に加え、さらにスライスヘッダを暗号化することで、スライスのマクロブロックアドレスや符号化方式等の情報を攻撃者から隠蔽することができ、安全性が増す。
【0133】
以上説明した実施の形態1及び2は、H.264を例に説明したが、前述したように、各実施の形態はMPEG2、MPEG4等の他の符号化方式で符号化された動画像にも適用可能である。また、各実施の形態は、JPEG等の静止画像にも適用可能である。JPEGに適用する場合、スライスデータNALユニット110,717に相当するデータとしてSOS(Start・Of・Scan)及びそれに続く符号化データを与える。ただし、EOI(End・Of・Image)マーカはこれに含まない。また、パラメータセットNALユニット109,709に相当するデータとしてSOF(Start・Of・Frame)0を与える。さらに、ピクチャに含まれる総マクロブロック数として(水平サイズ×垂直サイズ/64)を与える。
【符号の説明】
【0134】
100 画像暗号化装置、101 NALユニット抽出部、102 NALユニット判定部、103 パラメータ解析部、104 暗号鍵生成部、105 暗号化部、106 ストリーム合成部、107 動画像データストリーム、108 NALユニット、109 パラメータセットNALユニット、110 スライスデータNALユニット、111 その他NALユニット、112 画像パラメータ、113 暗号鍵導出用データ、114 暗号鍵情報NALユニット、115 暗号鍵データ、116 復号情報NALユニット、117 暗号化スライスデータNALユニット、118 暗号化動画像データストリーム、119 スライスデータNALユニットサイズ、200 入力部、201 サイズ計算部、202 暗号処理部、203 復号情報NALユニット生成部、204 暗号化データサイズ、205 非暗号化データサイズ、206 復号情報、207 復号補助情報、501 復号用データ、502 ヘッダ情報、601 暗号鍵情報、602 ヘッダ情報、700 画像復号装置、701 NALユニット抽出部、702 NALユニット判定部、703 パラメータ解析部、704 暗号鍵生成部、705 復号部、706 ストリーム合成部、708 NALユニット、709 パラメータセットNALユニット、710 暗号化スライスデータNALユニット、711 その他NALユニット、712 画像パラメータ、713 暗号鍵導出用データ、714 暗号鍵情報NALユニット、715 暗号鍵データ、716 復号情報NALユニット、717 スライスデータNALユニット、718 動画像データストリーム、719 スライスデータNALユニットサイズ、800 入力部、801 サイズ計算部、802 復号処理部、803 復号情報NALユニット解析部、804 暗号化データサイズ、805 非暗号化データサイズ、806 復号情報、807 復号補助情報、901 LCD、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 HDD、921 オペレーティングシステム、922 ウィンドウシステム、923 プログラム群、924 ファイル群。

【特許請求の範囲】
【請求項1】
ブロック単位で可変長符号化された画像データのサイズを示すサイズ情報と、前記画像データを構成する可変長符号化されたブロックの数を示すブロック数情報とを入力する入力部と、
前記入力部により入力されたサイズ情報とブロック数情報とに基づいて、前記画像データのうち暗号化される部分のデータサイズ単位である暗号化データサイズと前記画像データのうち暗号化されない部分のデータサイズ単位である非暗号化データサイズとを処理装置により算出するサイズ計算部と、
前記画像データを、先頭から交互に、前記サイズ計算部により算出された暗号化データサイズの第1データと前記サイズ計算部により算出された非暗号化データサイズの第2データとに分け、各第1データを処理装置により暗号化して出力する暗号処理部と
を備えることを特徴とする画像暗号化装置。
【請求項2】
前記サイズ計算部は、前記入力部により入力されたサイズ情報が示す画像データのサイズを前記入力部により入力されたブロック数情報が示すブロックの数で割って、前記画像データを構成する可変長符号化されたブロックの平均サイズを求め、求めたブロックの平均サイズに所定の第1係数を掛けて前記暗号化データサイズを算出することを特徴とする請求項1の画像暗号化装置。
【請求項3】
前記サイズ計算部は、求めたブロックの平均サイズに所定の第2係数を掛けて前記非暗号化データサイズを算出することを特徴とする請求項2の画像暗号化装置。
【請求項4】
前記画像データは、フレーム内予測とフレーム間予測とを行う動画像符号化方式によって符号化されたデータであり、
前記サイズ計算部は、前記画像データがフレーム内予測を行ったデータである場合、前記非暗号化データサイズとして、前記画像データがフレーム間予測を行ったデータである場合より小さい値を算出することを特徴とする請求項1から3のいずれかの画像暗号化装置。
【請求項5】
コンテキスト適応型二値算術符号を用いてブロック単位で符号化された画像データのサイズを示すサイズ情報と、前記画像データを構成する可変長符号化されたブロックの数を示すブロック数情報とを入力する入力部と、
前記入力部により入力されたサイズ情報とブロック数情報とに基づいて、前記画像データのうち暗号化される部分のデータサイズである暗号化データサイズを処理装置により算出するサイズ計算部と、
前記画像データのうち、先頭から、前記サイズ計算部により算出された暗号化データサイズのデータを処理装置により暗号化して出力する暗号処理部と
を備えることを特徴とする画像暗号化装置。
【請求項6】
前記サイズ計算部は、算出した暗号化データサイズを所定ビットの整数倍に調整することを特徴とする請求項1から5のいずれかの画像暗号化装置。
【請求項7】
前記暗号処理部は、前記画像データの先頭に付加されたヘッダデータを暗号化して前記暗号化データの一部として出力することを特徴とする請求項1から6のいずれかの画像暗号化装置。
【請求項8】
前記画像データは、スライス層のデータであり、
前記画像データを構成する可変長符号化されたブロックは、マクロブロック層のデータであることを特徴とする請求項1から7のいずれかの画像暗号化装置。
【請求項9】
請求項1から8のいずれかの画像暗号化装置により出力された暗号化データを復号して前記画像データを得ることを特徴とする画像復号装置。
【請求項10】
入力部が、ブロック単位で可変長符号化された画像データのサイズを示すサイズ情報と、前記画像データを構成する可変長符号化されたブロックの数を示すブロック数情報とを入力し、
サイズ計算部が、前記入力部により入力されたサイズ情報とブロック数情報とに基づいて、前記画像データのうち暗号化される部分のデータサイズ単位である暗号化データサイズと前記画像データのうち暗号化されない部分のデータサイズ単位である非暗号化データサイズとを処理装置により算出し、
暗号処理部が、前記画像データを、先頭から交互に、前記サイズ計算部により算出された暗号化データサイズの第1データと前記サイズ計算部により算出された非暗号化データサイズの第2データとに分け、各第1データを処理装置により暗号化して出力することを特徴とする画像暗号化方法。
【請求項11】
入力部が、コンテキスト適応型二値算術符号を用いてブロック単位で符号化された画像データのサイズを示すサイズ情報と、前記画像データを構成する可変長符号化されたブロックの数を示すブロック数情報とを入力し、
サイズ計算部が、前記入力部により入力されたサイズ情報とブロック数情報とに基づいて、前記画像データのうち暗号化される部分のデータサイズである暗号化データサイズを処理装置により算出し、
暗号処理部が、前記画像データのうち、先頭から、前記サイズ計算部により算出された暗号化データサイズのデータを処理装置により暗号化して出力することを特徴とする画像暗号化方法。
【請求項12】
請求項10又は11の画像暗号化方法により出力された暗号化データを復号して前記画像データを得ることを特徴とする画像復号方法。
【請求項13】
ブロック単位で可変長符号化された画像データのサイズを示すサイズ情報と、前記画像データを構成する可変長符号化されたブロックの数を示すブロック数情報とを入力する入力処理と、
前記入力処理により入力されたサイズ情報とブロック数情報とに基づいて、前記画像データのうち暗号化される部分のデータサイズ単位である暗号化データサイズと前記画像データのうち暗号化されない部分のデータサイズ単位である非暗号化データサイズとを処理装置により算出するサイズ計算処理と、
前記画像データを、先頭から交互に、前記サイズ計算処理により算出された暗号化データサイズの第1データと前記サイズ計算処理により算出された非暗号化データサイズの第2データとに分け、各第1データを処理装置により暗号化して出力する暗号処理と
をコンピュータに実行させることを特徴とする画像暗号化プログラム。
【請求項14】
コンテキスト適応型二値算術符号を用いてブロック単位で符号化された画像データのサイズを示すサイズ情報と、前記画像データを構成する可変長符号化されたブロックの数を示すブロック数情報とを入力する入力処理と、
前記入力処理により入力されたサイズ情報とブロック数情報とに基づいて、前記画像データのうち暗号化される部分のデータサイズである暗号化データサイズを処理装置により算出するサイズ計算処理と、
前記画像データのうち、先頭から、前記サイズ計算処理により算出された暗号化データサイズのデータを処理装置により暗号化して出力する暗号処理と
をコンピュータに実行させることを特徴とする画像暗号化プログラム。
【請求項15】
請求項13又は14の画像暗号化プログラムにより出力された暗号化データを復号して前記画像データを得る復号処理をコンピュータに実行させることを特徴とする画像復号プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2012−98416(P2012−98416A)
【公開日】平成24年5月24日(2012.5.24)
【国際特許分類】
【出願番号】特願2010−244557(P2010−244557)
【出願日】平成22年10月29日(2010.10.29)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】