暗号化方法および復号化方法
【課題】処理負荷を低減できる暗号方法を提供することを目的とする。
【解決手段】ステップS1にて、例えばMPEGフォーマットを構成するIピクチャのバイトストリームを2つのバイトストリームに分割し、ステップS2にて、当該2つのバイトストリーム同士を排他的論理和演算処理し、ステップS3にて、分割回数が規定の回数を満たしているかを判断し、規定の回数を満たしていないときは、当該2つのバイトストリームのうちいずれか一方をさらにステップS1にて2つのバイトストリームに分割して、ステップS2にてさらに分割した当該2つのバイトストリーム同士を排他的論理和演算処理し、ステップS3にて、分割回数が規定の回数を満たしているときは、ステップS4にて、最もデータ量の少ないバイトストリームに暗号化処理を施す。
【解決手段】ステップS1にて、例えばMPEGフォーマットを構成するIピクチャのバイトストリームを2つのバイトストリームに分割し、ステップS2にて、当該2つのバイトストリーム同士を排他的論理和演算処理し、ステップS3にて、分割回数が規定の回数を満たしているかを判断し、規定の回数を満たしていないときは、当該2つのバイトストリームのうちいずれか一方をさらにステップS1にて2つのバイトストリームに分割して、ステップS2にてさらに分割した当該2つのバイトストリーム同士を排他的論理和演算処理し、ステップS3にて、分割回数が規定の回数を満たしているときは、ステップS4にて、最もデータ量の少ないバイトストリームに暗号化処理を施す。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化方法および復号化方法に関し、特にビットストリームを分割して暗号化する技術に関する。
【背景技術】
【0002】
圧縮処理された画像のビットストリームへの暗号適用方式として、VEA(Video Encryption Algorithm)が非特許文献1に開示されている。非特許文献1に記載の技術では、MPEG圧縮された動画像情報のIピクチャを扱う。Iピクチャを構成するビットストリームをバイト(byte)単位でa1a2a3・・・a2n-1a2n(但し、aiはバイトを表す)と表した場合に、以下の処理によりIピクチャを暗号化している。なお、バイト単位で表現されるビットストリームをバイトストリームと呼ぶ。
【0003】
(P1)バイトストリームを偶数リストa2a4・・・a2nと奇数リストa1a3・・・a2n-1に分割する。
(P2)偶数リストと奇数リストに対してビット単位で排他的論理和演算処理を行い、バイトストリームc1c2c3・・・cnを生成する。
(P3)暗号化関数Eを用いて偶数リストa2a4・・・a2nを暗号化する。
(P4)バイトストリームc1c2c3・・・cnE(a2a4・・・a2n)を暗号結果として出力する。
【0004】
従って、処理負荷の重い暗号化処理(P3)を施す情報量が全体の情報量の半分になり、装置への処理負荷を軽減することができる。
【0005】
【非特許文献1】Lintian Qiao and Klara Nahrstedt、「A New Algorithm for MPEG Video Encryption」、In Proceedings of The First International Conference on Imaging Science, Systems, and Technology (CISST'97)、1997、p.21-29
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、装置の演算処理能力によっては、ステップP3における暗号化処理を施す情報量が全体の情報量の半分では不十分な場合がある。
【0007】
そこで、本発明は、暗号化処理を施す情報量をさらに低減できる暗号化方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
第1の発明に係る暗号化方法は、(a)所定のビット数を1単位として、ビットストリームを第1及び第2の前記ビットストリームに分割するステップと、(b)前記ステップ(a)の実行後、前記第2の前記ビットストリームを暗号化鍵とし、前記第1の前記ビットストリームに第1の暗号化処理を施して、第3の前記ビットストリームを生成するステップと、(c)前記暗号化鍵を前記ビットストリームとして、前記ステップ(a)および(b)の一組をm(m≧2)回繰り返して、前記第1及び前記第2の前記ビットストリームを更新し、前記第3の前記ビットストリームをm個求めるステップと、(d)前記ステップ(c)の実行後、最新の前記第2の前記ビットストリームに対して、第2の暗号化処理を施すステップとを実行する。
【0009】
第2の発明に係る暗号化方法は、第1の発明に係る暗号化方法であって、(e)前記m個の前記第3の前記ビットストリームのうち、少なくともいずれか一つの前記ビットストリームに第3の前記暗号化処理を施すステップを更に実行する。
【0010】
第3の発明に係る暗号化方法は、第1又は第2の発明に係る暗号化方法であって、前記ステップ(a)は、0と1が同数である2q(q≧1)個のビット列の各ビット値に応じて、前記ビットストリームを前記1単位毎に前記第1又は前記第2の前記ビットストリームに振り分けて、前記ビットストリームをいずれもkq(k:整数)単位の前記第1及び前記第2の前記ビットストリームに分割する。
【0011】
第4の発明に係る復号化方法は、第1の暗号化処理が施されている第3のビットストリームのm(m≧2)個と、第2の暗号化処理が施されている第2のビットストリームとから成るビットストリームに対する復号化方法であって、(イ)前記第2の前記ビットストリームに対して、前記第2の前記暗号化処理に対応する第2の復号化処理を施すステップと、(ロ)前記ステップ(イ)の実行後、前記復号化された前記第2の前記ビットストリームを復号化鍵として、前記第3の前記ビットストリームに対して、前記第1の前記暗号化処理に対応する第1の復号化処理を施して、第1の前記ビットストリームを生成するステップと、(ハ)前記ステップ(ロ)の実行後、所定のビット数を1単位として、前記第1の前記ビットストリームと、前記復号化された前記第2の前記ビットストリームとを連結するステップと、(ニ)前記ステップ(ハ)で連結して生成したビットストリームを、前記復号化された前記第2の前記ビットストリームとして、前記ステップ(ロ)および(ハ)の一組をm回繰り返すステップとを実行する。
【0012】
第5の発明に係る復号化方法は、第4の発明に係る復号化方法であって、前記第3の前記ビットストリームのうち、少なくともいずれかのビットストリームは第3の暗号化処理が施されており、(ホ)前記ステップ(ロ)に先立ち、前記第3の前記暗号化処理が施されている前記第3の前記ビットストリームに対して、前記第3の前記暗号化処理に対応する第3の復号化処理を施すステップを更に実行する。
【0013】
第6の発明に係る復号化方法は、第4又は第5の発明に係る復号化方法であって、前記ステップ(ハ)は、0と1が同数である2q(q≧1)個のビット列の各ビット値に応じて、前記第1又は前記第2の前記ビットストリームから前記1単位毎にデータを取り出して、前記第1及び前記第2の前記ビットストリームを連結する。
【発明の効果】
【0014】
第1の発明に係る暗号化方法によると、ビットストリームを分割して生成した第1及び第2のビットストリームのうち、さらに第2のビットストリームを分割する分割方法をm回繰り返して行い、m個の第1のビットストリームには処理負荷の軽い第1の暗号化処理を施し、最後に分割生成された第2のビットストリームには第1の暗号化処理よりも処理負荷の重い第2の暗号化処理を施すことができるので、第2の暗号化処理を施す情報量を分割前の情報量に比べて低減することができ、全体として処理負荷を軽減することができる。また、本暗号化方法を実行する装置の演算処理能力に応じて、分割回数を任意に設定できるので、装置の演算処理能力を問うことなく、ビットストリームを暗号化することができる。
【0015】
第2の発明に係る暗号化方法によると、少なくともいずれか一つの第3のビットストリームに第3の暗号化処理を施すので、暗号強度をさらに向上することができる。
【0016】
第3の発明に係る暗号化方法によると、0と1が同数の中で、0と1をランダムに並べてビット列を構成できるので、第3者にとって予測しにくい規則を用いて、ビットストリームを第1及び第2ビットストリームに分割できる。従って、暗号強度をさらに向上することができる。
【0017】
第4の発明に係る復号化方法によると、第1の発明に係る暗号化方法を用いて暗号化したビットストリームを適切に復号化できるとともに、第2の復号化処理を施す情報量を低減することができ、全体として処理負荷を軽減することができる。
【0018】
第5の発明に係る復号化方法によると、第2の発明に係る暗号化方法を用いて暗号化したビットストリームを適切に復号化できる。
【0019】
第6の発明に係る復号化方法によると、第3の発明に係る暗号化方法を用いて暗号化したビットストリームを適切に復号化できる。
【発明を実施するための最良の形態】
【0020】
以下、MPEG圧縮された動画像情報のIピクチャを対象として、本発明に係る実施の形態の暗号化方法について説明する。なお、本暗号化方法は、MPEG圧縮された動画像情報のIピクチャに限らず、音声データ、文字データ等あらゆる情報データに適用可能である。なお、本実施の形態ではビットストリームをバイト単位で処理しているため、以下の説明では、バイトストリームとして説明する。
【0021】
図1は、本実施の形態に係る暗号化方法を実現する暗号化装置の概略構成図を示している。本暗号化装置は、分割器101と、排他的論理和演算処理部102と、分割回数判断部103と、暗号化器104と、連結部105とを備えている。
【0022】
分割器101は、入力されるバイトストリームを2つのバイトストリームに分割し、当該2つのバイトストリームを排他的論理和演算処理部102に出力する。
【0023】
排他的論理和演算処理部102は、入力された2つのバイトストリーム同士を1ビット毎で排他的論理和演算処理し、入力されたいずれか一方のバイトストリームと、排他的論理和演算処理した結果とを分割回数判断部103に出力する。
【0024】
分割回数判断部103は、分割器101から入力される分割回数が規定の回数を満たしているかどうかを判断する。なお、分割回数とは分割器101が実行したバッファストリームの分割回数のことである。分割回数が規定の回数を満たしていなければ、入力されるバイトストリームを分割器101に出力し、排他的論理和演算処理した結果を連結部105に出力する。分割回数が規定の回数を満たしていれば、分割回数判断部103は、入力されるバイトストリームを暗号化器104に出力し、排他的論理和演算処理した結果を連結部105に出力する。
【0025】
暗号化器104は、入力されるバイトストリームに、例えばAES(Advanced Encryption Standard)を用いて暗号化処理を施し、結果を連結部105に出力する。
【0026】
連結部105は、分割回数判断部103から入力される排他的論理和演算処理した結果と、暗号化器104から入力される暗号化処理の結果とを、それぞれ入力された順番で連結する。
【0027】
なお、分割器101、排他的論理和演算処理部102、分割回数判断部103、暗号化器104、連結部105の一部または全部は、ハードウェアで構成されていてもよく、これらの機能がCPUなどを用いて実行するソフトウェアで実現されていてもよい。
【0028】
続いて、本暗号化装置の動作について具体的に説明する。図2は、本実施の形態に係る暗号化方法の処理の流れを示すフローチャートである。以下、図2乃至図12を参照して、本暗号化装置の動作について説明する。
【0029】
図2において、まず、ステップS1にて、分割器101は、入力されたIピクチャを構成するバイトストリームを、互いに等しいバイト数から成る2つのバイトストリームに分割する。なお、後述するように、ステップS1による分割は複数回実行されるので、入力されるバイトストリームのバイト数は2の累乗の整数倍となるように区分することが望ましい。
【0030】
図3は、1回目のステップS1〜S3で実行される処理によるバイトストリームの流れを示す図であり、図4,5は、当該処理によるバイトストリームの模式図である。図4に示すように、分割器101は、Iピクチャを構成するバイトストリーム(a1a2・・・a2n-1a2n)10(但し、ai(i=1〜2n)はバイトを表す)を、奇数番目のバイトを抽出したバイトストリーム(a1a3・・・a2n-3a2n-1)11と偶数番目のバイトを抽出したバイトストリーム(a2a4・・・a2n-2a2n)21とに分割する。すなわち、ステップS1では、偶数、奇数というように、バイトストリーム10を構成するバイト単位のデータを交互に振り分けて、2つのバイトストリーム11,21に分割する。そして、図3に示すように、分割器101は、得られたバイトストリーム11,21を排他的論理和演算処理部102に出力し、分割回数を1回として、分割回数判断部103に出力する。
【0031】
次に、ステップS2にて、図5に示すように、排他的論理和演算処理部102は、バイトストリーム11とバイトストリーム21を1ビット毎で排他的論理和演算処理し、バイトストリーム(c1c2・・・cn)31(但し、cj(j=1〜n)はバイトa2j,a2j-1の排他的論理和となるバイトを表す)を生成する。この処理は、バイトストリーム21を暗号化鍵として、バイトストリーム11に暗号化処理を施していると見なすことができる。この暗号化処理(排他的論理和演算処理)は、例えばAESなどによる暗号化処理に比べて、非常に処理負荷が軽い。そして、図3に示すように、排他的論理和演算処理部102は、暗号化鍵としたバイトストリーム21と、得られたバイトストリーム31を分割回数判断部103に出力する。
【0032】
次に、図2において、ステップS3にて、分割回数判断部103は、入力された分割回数が規定の回数(例えば、3回)を満たしているかを判断する。入力された分割回数は1回であり、規定の回数を満たしていないので、図3に示すように、分割回数判断部103は、暗号化鍵としたバイトストリーム21を分割器101に出力し、バイトストリーム31を連結部105に出力する。
【0033】
図6は、2回目のステップS1〜S3で実行される処理によるバイトストリームの流れを示す図であり、図7,8は、当該処理によるバイトストリームの模式図である。図7において、2回目のステップS1により、分割器101は、1回前のステップS2で暗号化鍵としたバイトストリーム(a2a4・・・a2n-2a2n)21をバイトストリーム(a2a6・・・a2n-6a2n-2)12とバイトストリーム(a4a8・・・a2n-4a2n)22とに分割する。そして、図6に示すように、分割器101は、得られたバイトストリーム12,22を排他的論理和演算処理部102に出力し、分割回数を2回として、分割回数判断部103に出力する。
【0034】
次に、2回目のステップS2により、排他的論理和演算処理部102は、図8に示すように、バイトストリーム12とバイトストリーム22を1ビット毎で排他的論理和演算処理し、バイトストリーム(d1d2・・・dn/2)32(但し、ds(s=1〜n/2)はバイトa4sー2,a4sの排他的論理和となるバイトを表す)を生成する。この処理は、バイトストリーム22を暗号化鍵として、バイトストリーム12に暗号化処理を施していると見なすことができる。そして、図6に示すように、排他的論理和演算処理部102は、暗号化鍵としたバイトストリーム22と、得られたバイトストリーム32を分割回数判断部103に出力する。
【0035】
次に、図2において、ステップS3にて、分割回数判断部103は、入力された分割回数が規定の回数(3回)を満たしているかを判断する。入力された分割回数は2回であり、規定の回数(3回)に未だ至っていないので、もう一度ステップS1およびS2を実行する。即ち、図6に示すように、分割回数判断部103は、暗号化鍵としたバイトストリーム22を分割器101に出力し、バイトストリーム32を連結部105に出力する。
【0036】
図9は、3回目のステップS1〜S3およびS4,S5で実行される処理によるバイトストリームの流れを示す図であり、図10〜12は、当該処理によるバイトストリームの模式図である。図10において、3回目のステップS1により、分割器101は、1回前のステップS2で暗号化鍵としたバイトストリーム(a4a8・・・a2n-4a2n)22をバイトストリーム(a4a12・・・a2n-12a2nー4)13とバイトストリーム(a8a16・・・a2n-8a2n)23とに分割する。そして、図9に示すように、分割器101は、得られたバイトストリーム13,23を排他的論理和演算処理部102に出力し、分割回数を3回として、分割回数判断部103に出力する。
【0037】
次に、3回目のステップS2により、排他的論理和演算処理部102は、図11に示すように、バイトストリーム13とバイトストリーム23を1ビット毎で排他的論理和演算処理し、バイトストリーム(e1e2・・・en/4)33(但し、et(t=1〜n/4)はバイトa8tー4,a8tの排他的論理和となるバイトを表す)を生成する。この処理は、バイトストリーム23を暗号化鍵として、バイトストリーム13に暗号化処理を施していると見なすことができる。そして、排他的論理和演算処理部102は、暗号化鍵としたバイトストリーム23と、得られたバイトストリーム33を分割回数判断部103に出力する。
【0038】
次に、図2において、ステップS3にて、分割回数判断部103は、入力された分割回数が規定の回数(3回)を満たしているかを判断する。入力された分割回数は3回であり、規定の回数(3回)に至ったので、図9に示すように、分割回数判断部103は、暗号化鍵としたバイトストリーム23を暗号化器104に出力し、バイトストリーム33を連結部105に出力する。
【0039】
次に、図2において、ステップS4にて、暗号化器104は、3回目(最後)のステップS2で、暗号化鍵としたバイトストリーム23に例えばAESによって暗号化関数Eを用いて暗号化処理を施し、バイトストリーム30を得る。そして、図9に示すように、暗号化器104は、得られたバイトストリーム30を連結部105に出力する。
【0040】
次に、図2において、ステップS5にて、連結部105は、バイトストリーム30と、n/4バイトのバイトストリーム33と、n/2バイトのバイトストリーム32と、nバイトのバイトストリーム31を連結して、暗号文としてのバイトストリーム(暗号化データ)4を生成する(図12も参照)。
【0041】
従って、MPEG圧縮された動画像情報のIピクチャ全体のバイト数2nのうち、2n・7/8バイトが処理負荷の軽い暗号化処理(排他的論理和演算処理)対象であり、2n/8バイトが処理負荷の重い暗号化処理対象(AESなど)であるので、AESなどの処理負荷の重い暗号化処理を施す情報量を低減することができ、本暗号化方法を適用した暗号化装置への処理負荷を軽減することができる。しかも、排他的論理和に用いる暗号化鍵(暗号化鍵と見なしたバイトストリーム)は実質的に使い捨て(one time pad)なので、暗号強度を向上することができる。
【0042】
また、分割回数をm(m<2n:mは2以上の整数)とすると、AESなどの処理負荷の重い暗号化処理を施すバイト数は2n/2mとなり、暗号化装置の演算処理能力に合わせて分割回数mを設定することで、暗号化装置の演算処理能力を問うことなくIピクチャを暗号化することができる。なお、分割回数mを増やすほど、処理負荷の重い暗号化処理を施すバイト数は低減されるが、暗号強度の観点から、当該暗号化処理を施すビット数は128ビット(16バイト)以上であることが望ましい。この場合、実用的なレベルの暗号強度を維持したまま、処理負荷を軽減することができる。
【0043】
また、ステップS1による1回の分割でバイト数を半分ずつに分割し、その都度、排他的論理和演算処理をしているので、例えば、バイトストリームから一度に複数のバイトストリームに分割し、その各々同士を排他的論理和演算処理する場合に比べて、排他的論理和演算処理の実行回数を少なくすることができる。例えば、128ビットのバイトストリームを16ビットのバイトストリームまで分割する場合、128ビットのバイトストリームを16ビット毎に等分割すると、8つのバイトストリームに分割され、8つのバイトストリームを排他的論理和演算処理する必要があるため、結局、7回の排他的論理和演算処理が実行される。一方、本発明においては、1回目の分割による64ビットのバイトストリーム同士と、2回目の分割による32ビットのバイトストリーム同士と、3回目の分割による16ビットのバイトストリーム同士の排他的論理和演算処理の3回ですむ。
【0044】
次に、本暗号化方法により暗号化したバイトストリームを復号化する方法を説明する。図13は、本復号化方法を実現する復号化装置の概略構成図である。本復号化装置は、分離部201と、復号化器202と、排他的論理和演算処理部203と、連結部204とを備えている。
【0045】
分離部201は、暗号化されたバイトストリームを分割回数に基づいて複数のバイトストリームに分離して、復号化器202に出力する。復号化器202は、例えばAESなどの暗号化処理が施されたバイトストリームに対してAESなどの復号化処理を施す。排他的論理和演算処理部203は、2つのバイトストリームを1ビット毎に排他的論理和演算処理する。連結部204は、2つのバイトストリームを連結して1つのバイトストリームを生成する。なお、各部の具体的な説明は、以下の動作説明において述べる。
【0046】
なお、分離部201と、復号化器202と、排他的論理和演算処理部203と、連結部204の一部または全部は、ハードウェアで構成されていてもよく、これらの機能がCPUなどを用いて実行するソフトウェアで実現されていてもよい。
【0047】
続いて、本復号化装置の具体的な動作を説明する。図14〜図16は、復号化処理におけるバイトストリームの流れを示す図である。図14に示すように、まず、分離部201には暗号化処理で実行された分割回数と、暗号化されたバイトストリームが入力される。分離部201は、例えば入力されたバッファストリーム4を分割回数(3回)に基づいて、バイトストリーム30,31,32,33に分離して、復号化器202に出力し、分割回数を連結部105に出力する。復号化器202は、例えばAESによって暗号化関数Eに対応する復号化関数E-1を用いてバイトストリーム30を復号化し、バイトストリーム23を得る。そして、バイトストリーム23,31,32,33を排他的論理和演算処理部203に出力する。
【0048】
排他的論理和演算処理部203は、バイトストリーム23とバイトストリーム33とを1ビット毎に排他的論理和演算処理してバイトストリーム13を得て、バイトストリーム13,23を連結部204に出力する。連結部204は、バイトストリーム23とバイトストリーム13から交互にバイトを取り出し、取り出した順に連結してバイトストリーム22を生成する。そして、連結回数は1回であり、分割回数(3回)に満たないので、連結部204は、バイトストリーム22を排他的論理和演算処理部203に出力する。なお、連結回数とは、連結部204にて実行されるバイトストリームの連結の回数のことである。
【0049】
図15に示すように、排他的論理和演算処理部203は、当該バイトストリーム22とバイトストリーム32とを1ビット毎に排他的論理和演算処理してバイトストリーム12を得て、バイトストリーム12,22を連結部204に出力する。連結部204はバイトストリーム12とバイトストリーム22から交互にバイトを取り出し、取り出した順に連結してバイトストリーム21を生成する。そして、連結回数は2回であり、未だ分割回数(3回)に至っていないので、連結部204は、バイトストリーム21を排他的論理和演算処理部203に出力する。
【0050】
図16に示すように、排他的論理和演算処理部203は、当該バイトストリーム21とバイトストリーム31とを1ビット毎に排他的論理和演算処理してバイトストリーム11を得て、バイトストリーム11,21を連結部204に出力する。連結部204はバイトストリーム11とバイトストリーム21から交互にバイトを取り出し、取り出した順に連結してバイトストリーム10を生成する。そして、連結回数は3回であり、分割回数(3回)に至ったので、バイトストリーム10を復号データとして出力する。
【0051】
なお、排他的論理和演算処理部203が実行する排他的論理和演算処理は復号化処理と見なすことができる。例えば、バイトストリーム23,33同士の排他的論理和演算処理は、バイトストリーム23を復号化鍵として、バイトストリーム33に復号化処理を施していると見なすことができる。そして、当該復号化処理(排他的論理和演算処理)は、AESなどの復号化処理に比べて、非常に処理負荷が軽い。
【0052】
このような復号化方法によると、本実施の形態に係る暗号化方法で暗号化されたバイトストリームを適切に復号化できるとともに、暗号化処理と同様、AESなどの処理負荷が重い復号化処理を施すバイト数を低減できるので、本復号化方法を適用した装置への処理負荷を軽減することができる。
【0053】
なお、分割回数は必ずしも連結部204に入力される必要がない。排他的論理和演算処理部203が、バイトストリーム11,21を連結部204に出力する際に、排他的論理和演算処理すべきバイトストリームはなく、バイトストリーム11,21が最後のバイトストリームであることを連結部204に通知しても良い。
【0054】
続いて、本実施の形態に係る暗号化方法の第1の応用例について説明する。本実施の形態では、ステップS4にて、AESなどの暗号化処理をバイトストリーム23に施しているが、これに限らず、バイトストリーム23以外にも施して構わない。例えば、3回目のステップS3にて、分割回数判断部103がバイトストリーム33も暗号化器104に出力し、ステップS4において、暗号化器104がバイトストリーム23にAESなどの暗号化処理を施した後、バイトストリーム23への暗号化処理に用いた暗号化キーとは別の暗号化キーを用いて、バイトストリーム33にもAESなどの暗号化処理を施しても構わない。また、バイトストリーム31,32,33のうち、少なくともいずれかのバイトストリームにもAESなどの暗号化処理を施しても構わない。この場合、分割回数を適宜に設定することで、AESなどの暗号化処理を施すバイト数を全体の数分の1に低減しながら(処理負荷を軽減しながら)、さらに暗号強度を向上することができる。
【0055】
次に、第1の応用例に係る暗号化方法により暗号化したビットストリームを復号化する方法を説明する。例えば、第1の応用例に係る暗号化方法によってバイトストリーム33にもAESなどの暗号化処理が施されているとすると、復号化器202が、バイトストリーム30を例えばAESによって復号化関数E-1を用いて復号化してバイトストリーム23を得る時に、AESによる暗号化処理が施されたバイトストリーム33も同様に復号化しておけばよい。その後の処理は、実施の形態に係る復号化処理と同一である。
【0056】
このような復号化方法によると、第1の応用例に係る暗号化方法で暗号化されたバイトストリームを適切に復号化できるとともに、AESなどの処理負荷の重い復号化処理を施すバイト数は全体の数分の1に低減されているので、処理負荷が軽減される。
【0057】
続いて、本実施の形態に係る暗号化方法の第2の応用例について説明する。本実施の形態では、ステップS1にて、分割器101は、バイトストリームを構成するバイト単位のデータを交互に振り分けて、2つのバイトストリームに分割するとして説明したが、これに限らず、他の分割規則に基づいて分割しても構わない。例えば、バイトストリームのうち、8r+1,8r+3,8r+5,8r+6番目(r:0以上の整数)のバイトを抽出したバイトストリームと、8r+2,8r+4,8r+7,8r+8番目のバイトを抽出したバイトストリームとに分割しても良い。
【0058】
この場合、例えば、分割キーとして、”10101100”を設け、当該分割キーをバイトストリーム(a1a2・・・a2n-1a2n)10に適用する。なお、分割キーを0と1が同数である2q(q≧1)個のビット列と見なすことができる。具体的には、分割キーにおける”1”がバイトストリームのi(=1〜2n)番目のaiに適用されると、aiは第1バイトストリームに分類され、分割キーにおける”0”がバイトストリームのi番目のaiに適用されると、aiは第2バイトストリームに分類される。バイトストリーム10に当該分割キーをa1から8バイト毎に繰り返し適用することで、当該バイトストリーム10を、互いにnバイト数の第1バイトストリームa1a3a5a6・・・と第2バイトストリームa2a4a7a8・・・とに分割することができる(図17参照)。従って、バイトストリームに含まれるバイト単位の並びのうち、少なくとも一部を不規則に振り分けて分割することができる。
【0059】
すなわち、バイト単位のデータを交互に振り分けるという分割規則では、第3者に予測される可能性が高いが、本分割キーのように不規則性を含む分割規則であれば、第3者に予測される可能性を低減することができる。分割キーを知らなければ、復号化時に適切にバイトストリーム同士を連結することができないため、さらに暗号強度を向上することができる。
【0060】
なお、例えば、0と1が同数である2qビット数の分割キーがバイトストリーム10にk(k:自然数)回繰り返して適用されるとすると、いずれもkqバイト数の第1及び第2バイトストリームに分割される。
【0061】
また、分割キーは乱数により発生させても良い。例えば、乱数により初めの4ビットを生成し、次に当該4ビットの”1””0”を反転させた4ビットを生成し、元の4ビットと反転した4ビットを連結して8ビットの分割キーを生成することができる。このとき、分割キーを構成する”1”と”0”が同数となるため、バイトストリームを互いに等しいバイト数のバイトストリームに2分割することができる。また、乱数により分割キーを発生させる場合は、さらに暗号強度を向上することができる。
【0062】
なお、分割キーを例えば128ビット以上のビット数で構成し、当該分割キーをAESなどの暗号化処理用の暗号化キーとして用いても良い。この場合、暗号化キーと分割キーを併用することができるので、管理を容易にすることができる。
【0063】
なお、第2の応用例に係る暗号化方法により暗号化したバイトストリームを復号化する方法は、連結部204が分割キーに基づいてバイトストリーム同士を連結するという点を除いて、本実施の形態に係る復号化方法と同一である。例えば、分割キー”10101100”に基づいて第1及び第2バイトストリームを連結してバイトストリーム10を生成する場合を説明する(図17参照)。分割キーのうち”1”は、第1のバイトストリームの先頭のバイトが取り出され、”0”は第2のバイトストリームの先頭のバイトが取り出され、それぞれが順に連結される。
【0064】
具体的に、分割キーの最初のビットは”1”なので、第1バイトストリームの先頭のバイトa1が取り出され、2番目のビットは”0”なので、第2バイトストリームの先頭のバイトa2が取り出され、3番目のビットは”1”なので、第1バイトストリームの先頭のバイトa3が取り出され(a1は既に取り出されているので先頭はa3である)、この順でバイトが連結される。分割キーの全てのビットについて終了すると、再び分割キーの最初のビットに戻って繰り返し実行されて連結後のバイトストリーム10が生成される。
【0065】
このような復号化方法によると、第2の応用例に係る暗号化方法で暗号化されたバイトストリームを適切に復号化できるとともに、AESなどの処理負荷の重い復号化処理を施すバイト数は全体の数分の1に低減されているので、処理負荷が軽減される。
【0066】
なお、本発明においては、ビットストリームをバイト単位で分割しているが、これに限らずビット単位で分割しても構わないし、任意のビット数を有するブロック単位で分割しても構わない。
【図面の簡単な説明】
【0067】
【図1】本実施の形態に係る暗号化方法を適用した暗号化装置の概略構成図である。
【図2】本実施の形態に係る暗号化方法を示すフローチャートである。
【図3】バイトストリームの流れを示す図である。
【図4】バイトストリームの分割を示す図である。
【図5】2つのバイトストリームの排他的論理和を示す図である。
【図6】バイトストリームの流れを示す図である。
【図7】バイトストリームの分割を示す図である。
【図8】2つのバイトストリームの排他的論理和を示す図である。
【図9】バイトストリームの流れを示す図である。
【図10】バイトストリームの分割を示す図である。
【図11】2つのバイトストリームの排他的論理和を示す図である。
【図12】本実施の形態に係る暗号化方法を用いて暗号化したバイトストリームを示す図である。
【図13】本実施の形態に係る復号化方法を適用した復号化装置の概略構成図である。
【図14】バイトストリームの流れを示す図である。
【図15】バイトストリームの流れを示す図である。
【図16】バイトストリームの流れを示す図である。
【図17】分割キーをバイトストリームに適用して2つのバイトストリームに分割する様子を示す模式図である。
【符号の説明】
【0068】
10,11,21,31,12,22,32,13,23,33,30 バイトストリーム
101 分割器
102,203 排他的論理和演算処理部
103 暗号化器
104 分割回数判断部
202 復号化器
204 連結部
S1〜S5 ステップ
【技術分野】
【0001】
本発明は、暗号化方法および復号化方法に関し、特にビットストリームを分割して暗号化する技術に関する。
【背景技術】
【0002】
圧縮処理された画像のビットストリームへの暗号適用方式として、VEA(Video Encryption Algorithm)が非特許文献1に開示されている。非特許文献1に記載の技術では、MPEG圧縮された動画像情報のIピクチャを扱う。Iピクチャを構成するビットストリームをバイト(byte)単位でa1a2a3・・・a2n-1a2n(但し、aiはバイトを表す)と表した場合に、以下の処理によりIピクチャを暗号化している。なお、バイト単位で表現されるビットストリームをバイトストリームと呼ぶ。
【0003】
(P1)バイトストリームを偶数リストa2a4・・・a2nと奇数リストa1a3・・・a2n-1に分割する。
(P2)偶数リストと奇数リストに対してビット単位で排他的論理和演算処理を行い、バイトストリームc1c2c3・・・cnを生成する。
(P3)暗号化関数Eを用いて偶数リストa2a4・・・a2nを暗号化する。
(P4)バイトストリームc1c2c3・・・cnE(a2a4・・・a2n)を暗号結果として出力する。
【0004】
従って、処理負荷の重い暗号化処理(P3)を施す情報量が全体の情報量の半分になり、装置への処理負荷を軽減することができる。
【0005】
【非特許文献1】Lintian Qiao and Klara Nahrstedt、「A New Algorithm for MPEG Video Encryption」、In Proceedings of The First International Conference on Imaging Science, Systems, and Technology (CISST'97)、1997、p.21-29
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、装置の演算処理能力によっては、ステップP3における暗号化処理を施す情報量が全体の情報量の半分では不十分な場合がある。
【0007】
そこで、本発明は、暗号化処理を施す情報量をさらに低減できる暗号化方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
第1の発明に係る暗号化方法は、(a)所定のビット数を1単位として、ビットストリームを第1及び第2の前記ビットストリームに分割するステップと、(b)前記ステップ(a)の実行後、前記第2の前記ビットストリームを暗号化鍵とし、前記第1の前記ビットストリームに第1の暗号化処理を施して、第3の前記ビットストリームを生成するステップと、(c)前記暗号化鍵を前記ビットストリームとして、前記ステップ(a)および(b)の一組をm(m≧2)回繰り返して、前記第1及び前記第2の前記ビットストリームを更新し、前記第3の前記ビットストリームをm個求めるステップと、(d)前記ステップ(c)の実行後、最新の前記第2の前記ビットストリームに対して、第2の暗号化処理を施すステップとを実行する。
【0009】
第2の発明に係る暗号化方法は、第1の発明に係る暗号化方法であって、(e)前記m個の前記第3の前記ビットストリームのうち、少なくともいずれか一つの前記ビットストリームに第3の前記暗号化処理を施すステップを更に実行する。
【0010】
第3の発明に係る暗号化方法は、第1又は第2の発明に係る暗号化方法であって、前記ステップ(a)は、0と1が同数である2q(q≧1)個のビット列の各ビット値に応じて、前記ビットストリームを前記1単位毎に前記第1又は前記第2の前記ビットストリームに振り分けて、前記ビットストリームをいずれもkq(k:整数)単位の前記第1及び前記第2の前記ビットストリームに分割する。
【0011】
第4の発明に係る復号化方法は、第1の暗号化処理が施されている第3のビットストリームのm(m≧2)個と、第2の暗号化処理が施されている第2のビットストリームとから成るビットストリームに対する復号化方法であって、(イ)前記第2の前記ビットストリームに対して、前記第2の前記暗号化処理に対応する第2の復号化処理を施すステップと、(ロ)前記ステップ(イ)の実行後、前記復号化された前記第2の前記ビットストリームを復号化鍵として、前記第3の前記ビットストリームに対して、前記第1の前記暗号化処理に対応する第1の復号化処理を施して、第1の前記ビットストリームを生成するステップと、(ハ)前記ステップ(ロ)の実行後、所定のビット数を1単位として、前記第1の前記ビットストリームと、前記復号化された前記第2の前記ビットストリームとを連結するステップと、(ニ)前記ステップ(ハ)で連結して生成したビットストリームを、前記復号化された前記第2の前記ビットストリームとして、前記ステップ(ロ)および(ハ)の一組をm回繰り返すステップとを実行する。
【0012】
第5の発明に係る復号化方法は、第4の発明に係る復号化方法であって、前記第3の前記ビットストリームのうち、少なくともいずれかのビットストリームは第3の暗号化処理が施されており、(ホ)前記ステップ(ロ)に先立ち、前記第3の前記暗号化処理が施されている前記第3の前記ビットストリームに対して、前記第3の前記暗号化処理に対応する第3の復号化処理を施すステップを更に実行する。
【0013】
第6の発明に係る復号化方法は、第4又は第5の発明に係る復号化方法であって、前記ステップ(ハ)は、0と1が同数である2q(q≧1)個のビット列の各ビット値に応じて、前記第1又は前記第2の前記ビットストリームから前記1単位毎にデータを取り出して、前記第1及び前記第2の前記ビットストリームを連結する。
【発明の効果】
【0014】
第1の発明に係る暗号化方法によると、ビットストリームを分割して生成した第1及び第2のビットストリームのうち、さらに第2のビットストリームを分割する分割方法をm回繰り返して行い、m個の第1のビットストリームには処理負荷の軽い第1の暗号化処理を施し、最後に分割生成された第2のビットストリームには第1の暗号化処理よりも処理負荷の重い第2の暗号化処理を施すことができるので、第2の暗号化処理を施す情報量を分割前の情報量に比べて低減することができ、全体として処理負荷を軽減することができる。また、本暗号化方法を実行する装置の演算処理能力に応じて、分割回数を任意に設定できるので、装置の演算処理能力を問うことなく、ビットストリームを暗号化することができる。
【0015】
第2の発明に係る暗号化方法によると、少なくともいずれか一つの第3のビットストリームに第3の暗号化処理を施すので、暗号強度をさらに向上することができる。
【0016】
第3の発明に係る暗号化方法によると、0と1が同数の中で、0と1をランダムに並べてビット列を構成できるので、第3者にとって予測しにくい規則を用いて、ビットストリームを第1及び第2ビットストリームに分割できる。従って、暗号強度をさらに向上することができる。
【0017】
第4の発明に係る復号化方法によると、第1の発明に係る暗号化方法を用いて暗号化したビットストリームを適切に復号化できるとともに、第2の復号化処理を施す情報量を低減することができ、全体として処理負荷を軽減することができる。
【0018】
第5の発明に係る復号化方法によると、第2の発明に係る暗号化方法を用いて暗号化したビットストリームを適切に復号化できる。
【0019】
第6の発明に係る復号化方法によると、第3の発明に係る暗号化方法を用いて暗号化したビットストリームを適切に復号化できる。
【発明を実施するための最良の形態】
【0020】
以下、MPEG圧縮された動画像情報のIピクチャを対象として、本発明に係る実施の形態の暗号化方法について説明する。なお、本暗号化方法は、MPEG圧縮された動画像情報のIピクチャに限らず、音声データ、文字データ等あらゆる情報データに適用可能である。なお、本実施の形態ではビットストリームをバイト単位で処理しているため、以下の説明では、バイトストリームとして説明する。
【0021】
図1は、本実施の形態に係る暗号化方法を実現する暗号化装置の概略構成図を示している。本暗号化装置は、分割器101と、排他的論理和演算処理部102と、分割回数判断部103と、暗号化器104と、連結部105とを備えている。
【0022】
分割器101は、入力されるバイトストリームを2つのバイトストリームに分割し、当該2つのバイトストリームを排他的論理和演算処理部102に出力する。
【0023】
排他的論理和演算処理部102は、入力された2つのバイトストリーム同士を1ビット毎で排他的論理和演算処理し、入力されたいずれか一方のバイトストリームと、排他的論理和演算処理した結果とを分割回数判断部103に出力する。
【0024】
分割回数判断部103は、分割器101から入力される分割回数が規定の回数を満たしているかどうかを判断する。なお、分割回数とは分割器101が実行したバッファストリームの分割回数のことである。分割回数が規定の回数を満たしていなければ、入力されるバイトストリームを分割器101に出力し、排他的論理和演算処理した結果を連結部105に出力する。分割回数が規定の回数を満たしていれば、分割回数判断部103は、入力されるバイトストリームを暗号化器104に出力し、排他的論理和演算処理した結果を連結部105に出力する。
【0025】
暗号化器104は、入力されるバイトストリームに、例えばAES(Advanced Encryption Standard)を用いて暗号化処理を施し、結果を連結部105に出力する。
【0026】
連結部105は、分割回数判断部103から入力される排他的論理和演算処理した結果と、暗号化器104から入力される暗号化処理の結果とを、それぞれ入力された順番で連結する。
【0027】
なお、分割器101、排他的論理和演算処理部102、分割回数判断部103、暗号化器104、連結部105の一部または全部は、ハードウェアで構成されていてもよく、これらの機能がCPUなどを用いて実行するソフトウェアで実現されていてもよい。
【0028】
続いて、本暗号化装置の動作について具体的に説明する。図2は、本実施の形態に係る暗号化方法の処理の流れを示すフローチャートである。以下、図2乃至図12を参照して、本暗号化装置の動作について説明する。
【0029】
図2において、まず、ステップS1にて、分割器101は、入力されたIピクチャを構成するバイトストリームを、互いに等しいバイト数から成る2つのバイトストリームに分割する。なお、後述するように、ステップS1による分割は複数回実行されるので、入力されるバイトストリームのバイト数は2の累乗の整数倍となるように区分することが望ましい。
【0030】
図3は、1回目のステップS1〜S3で実行される処理によるバイトストリームの流れを示す図であり、図4,5は、当該処理によるバイトストリームの模式図である。図4に示すように、分割器101は、Iピクチャを構成するバイトストリーム(a1a2・・・a2n-1a2n)10(但し、ai(i=1〜2n)はバイトを表す)を、奇数番目のバイトを抽出したバイトストリーム(a1a3・・・a2n-3a2n-1)11と偶数番目のバイトを抽出したバイトストリーム(a2a4・・・a2n-2a2n)21とに分割する。すなわち、ステップS1では、偶数、奇数というように、バイトストリーム10を構成するバイト単位のデータを交互に振り分けて、2つのバイトストリーム11,21に分割する。そして、図3に示すように、分割器101は、得られたバイトストリーム11,21を排他的論理和演算処理部102に出力し、分割回数を1回として、分割回数判断部103に出力する。
【0031】
次に、ステップS2にて、図5に示すように、排他的論理和演算処理部102は、バイトストリーム11とバイトストリーム21を1ビット毎で排他的論理和演算処理し、バイトストリーム(c1c2・・・cn)31(但し、cj(j=1〜n)はバイトa2j,a2j-1の排他的論理和となるバイトを表す)を生成する。この処理は、バイトストリーム21を暗号化鍵として、バイトストリーム11に暗号化処理を施していると見なすことができる。この暗号化処理(排他的論理和演算処理)は、例えばAESなどによる暗号化処理に比べて、非常に処理負荷が軽い。そして、図3に示すように、排他的論理和演算処理部102は、暗号化鍵としたバイトストリーム21と、得られたバイトストリーム31を分割回数判断部103に出力する。
【0032】
次に、図2において、ステップS3にて、分割回数判断部103は、入力された分割回数が規定の回数(例えば、3回)を満たしているかを判断する。入力された分割回数は1回であり、規定の回数を満たしていないので、図3に示すように、分割回数判断部103は、暗号化鍵としたバイトストリーム21を分割器101に出力し、バイトストリーム31を連結部105に出力する。
【0033】
図6は、2回目のステップS1〜S3で実行される処理によるバイトストリームの流れを示す図であり、図7,8は、当該処理によるバイトストリームの模式図である。図7において、2回目のステップS1により、分割器101は、1回前のステップS2で暗号化鍵としたバイトストリーム(a2a4・・・a2n-2a2n)21をバイトストリーム(a2a6・・・a2n-6a2n-2)12とバイトストリーム(a4a8・・・a2n-4a2n)22とに分割する。そして、図6に示すように、分割器101は、得られたバイトストリーム12,22を排他的論理和演算処理部102に出力し、分割回数を2回として、分割回数判断部103に出力する。
【0034】
次に、2回目のステップS2により、排他的論理和演算処理部102は、図8に示すように、バイトストリーム12とバイトストリーム22を1ビット毎で排他的論理和演算処理し、バイトストリーム(d1d2・・・dn/2)32(但し、ds(s=1〜n/2)はバイトa4sー2,a4sの排他的論理和となるバイトを表す)を生成する。この処理は、バイトストリーム22を暗号化鍵として、バイトストリーム12に暗号化処理を施していると見なすことができる。そして、図6に示すように、排他的論理和演算処理部102は、暗号化鍵としたバイトストリーム22と、得られたバイトストリーム32を分割回数判断部103に出力する。
【0035】
次に、図2において、ステップS3にて、分割回数判断部103は、入力された分割回数が規定の回数(3回)を満たしているかを判断する。入力された分割回数は2回であり、規定の回数(3回)に未だ至っていないので、もう一度ステップS1およびS2を実行する。即ち、図6に示すように、分割回数判断部103は、暗号化鍵としたバイトストリーム22を分割器101に出力し、バイトストリーム32を連結部105に出力する。
【0036】
図9は、3回目のステップS1〜S3およびS4,S5で実行される処理によるバイトストリームの流れを示す図であり、図10〜12は、当該処理によるバイトストリームの模式図である。図10において、3回目のステップS1により、分割器101は、1回前のステップS2で暗号化鍵としたバイトストリーム(a4a8・・・a2n-4a2n)22をバイトストリーム(a4a12・・・a2n-12a2nー4)13とバイトストリーム(a8a16・・・a2n-8a2n)23とに分割する。そして、図9に示すように、分割器101は、得られたバイトストリーム13,23を排他的論理和演算処理部102に出力し、分割回数を3回として、分割回数判断部103に出力する。
【0037】
次に、3回目のステップS2により、排他的論理和演算処理部102は、図11に示すように、バイトストリーム13とバイトストリーム23を1ビット毎で排他的論理和演算処理し、バイトストリーム(e1e2・・・en/4)33(但し、et(t=1〜n/4)はバイトa8tー4,a8tの排他的論理和となるバイトを表す)を生成する。この処理は、バイトストリーム23を暗号化鍵として、バイトストリーム13に暗号化処理を施していると見なすことができる。そして、排他的論理和演算処理部102は、暗号化鍵としたバイトストリーム23と、得られたバイトストリーム33を分割回数判断部103に出力する。
【0038】
次に、図2において、ステップS3にて、分割回数判断部103は、入力された分割回数が規定の回数(3回)を満たしているかを判断する。入力された分割回数は3回であり、規定の回数(3回)に至ったので、図9に示すように、分割回数判断部103は、暗号化鍵としたバイトストリーム23を暗号化器104に出力し、バイトストリーム33を連結部105に出力する。
【0039】
次に、図2において、ステップS4にて、暗号化器104は、3回目(最後)のステップS2で、暗号化鍵としたバイトストリーム23に例えばAESによって暗号化関数Eを用いて暗号化処理を施し、バイトストリーム30を得る。そして、図9に示すように、暗号化器104は、得られたバイトストリーム30を連結部105に出力する。
【0040】
次に、図2において、ステップS5にて、連結部105は、バイトストリーム30と、n/4バイトのバイトストリーム33と、n/2バイトのバイトストリーム32と、nバイトのバイトストリーム31を連結して、暗号文としてのバイトストリーム(暗号化データ)4を生成する(図12も参照)。
【0041】
従って、MPEG圧縮された動画像情報のIピクチャ全体のバイト数2nのうち、2n・7/8バイトが処理負荷の軽い暗号化処理(排他的論理和演算処理)対象であり、2n/8バイトが処理負荷の重い暗号化処理対象(AESなど)であるので、AESなどの処理負荷の重い暗号化処理を施す情報量を低減することができ、本暗号化方法を適用した暗号化装置への処理負荷を軽減することができる。しかも、排他的論理和に用いる暗号化鍵(暗号化鍵と見なしたバイトストリーム)は実質的に使い捨て(one time pad)なので、暗号強度を向上することができる。
【0042】
また、分割回数をm(m<2n:mは2以上の整数)とすると、AESなどの処理負荷の重い暗号化処理を施すバイト数は2n/2mとなり、暗号化装置の演算処理能力に合わせて分割回数mを設定することで、暗号化装置の演算処理能力を問うことなくIピクチャを暗号化することができる。なお、分割回数mを増やすほど、処理負荷の重い暗号化処理を施すバイト数は低減されるが、暗号強度の観点から、当該暗号化処理を施すビット数は128ビット(16バイト)以上であることが望ましい。この場合、実用的なレベルの暗号強度を維持したまま、処理負荷を軽減することができる。
【0043】
また、ステップS1による1回の分割でバイト数を半分ずつに分割し、その都度、排他的論理和演算処理をしているので、例えば、バイトストリームから一度に複数のバイトストリームに分割し、その各々同士を排他的論理和演算処理する場合に比べて、排他的論理和演算処理の実行回数を少なくすることができる。例えば、128ビットのバイトストリームを16ビットのバイトストリームまで分割する場合、128ビットのバイトストリームを16ビット毎に等分割すると、8つのバイトストリームに分割され、8つのバイトストリームを排他的論理和演算処理する必要があるため、結局、7回の排他的論理和演算処理が実行される。一方、本発明においては、1回目の分割による64ビットのバイトストリーム同士と、2回目の分割による32ビットのバイトストリーム同士と、3回目の分割による16ビットのバイトストリーム同士の排他的論理和演算処理の3回ですむ。
【0044】
次に、本暗号化方法により暗号化したバイトストリームを復号化する方法を説明する。図13は、本復号化方法を実現する復号化装置の概略構成図である。本復号化装置は、分離部201と、復号化器202と、排他的論理和演算処理部203と、連結部204とを備えている。
【0045】
分離部201は、暗号化されたバイトストリームを分割回数に基づいて複数のバイトストリームに分離して、復号化器202に出力する。復号化器202は、例えばAESなどの暗号化処理が施されたバイトストリームに対してAESなどの復号化処理を施す。排他的論理和演算処理部203は、2つのバイトストリームを1ビット毎に排他的論理和演算処理する。連結部204は、2つのバイトストリームを連結して1つのバイトストリームを生成する。なお、各部の具体的な説明は、以下の動作説明において述べる。
【0046】
なお、分離部201と、復号化器202と、排他的論理和演算処理部203と、連結部204の一部または全部は、ハードウェアで構成されていてもよく、これらの機能がCPUなどを用いて実行するソフトウェアで実現されていてもよい。
【0047】
続いて、本復号化装置の具体的な動作を説明する。図14〜図16は、復号化処理におけるバイトストリームの流れを示す図である。図14に示すように、まず、分離部201には暗号化処理で実行された分割回数と、暗号化されたバイトストリームが入力される。分離部201は、例えば入力されたバッファストリーム4を分割回数(3回)に基づいて、バイトストリーム30,31,32,33に分離して、復号化器202に出力し、分割回数を連結部105に出力する。復号化器202は、例えばAESによって暗号化関数Eに対応する復号化関数E-1を用いてバイトストリーム30を復号化し、バイトストリーム23を得る。そして、バイトストリーム23,31,32,33を排他的論理和演算処理部203に出力する。
【0048】
排他的論理和演算処理部203は、バイトストリーム23とバイトストリーム33とを1ビット毎に排他的論理和演算処理してバイトストリーム13を得て、バイトストリーム13,23を連結部204に出力する。連結部204は、バイトストリーム23とバイトストリーム13から交互にバイトを取り出し、取り出した順に連結してバイトストリーム22を生成する。そして、連結回数は1回であり、分割回数(3回)に満たないので、連結部204は、バイトストリーム22を排他的論理和演算処理部203に出力する。なお、連結回数とは、連結部204にて実行されるバイトストリームの連結の回数のことである。
【0049】
図15に示すように、排他的論理和演算処理部203は、当該バイトストリーム22とバイトストリーム32とを1ビット毎に排他的論理和演算処理してバイトストリーム12を得て、バイトストリーム12,22を連結部204に出力する。連結部204はバイトストリーム12とバイトストリーム22から交互にバイトを取り出し、取り出した順に連結してバイトストリーム21を生成する。そして、連結回数は2回であり、未だ分割回数(3回)に至っていないので、連結部204は、バイトストリーム21を排他的論理和演算処理部203に出力する。
【0050】
図16に示すように、排他的論理和演算処理部203は、当該バイトストリーム21とバイトストリーム31とを1ビット毎に排他的論理和演算処理してバイトストリーム11を得て、バイトストリーム11,21を連結部204に出力する。連結部204はバイトストリーム11とバイトストリーム21から交互にバイトを取り出し、取り出した順に連結してバイトストリーム10を生成する。そして、連結回数は3回であり、分割回数(3回)に至ったので、バイトストリーム10を復号データとして出力する。
【0051】
なお、排他的論理和演算処理部203が実行する排他的論理和演算処理は復号化処理と見なすことができる。例えば、バイトストリーム23,33同士の排他的論理和演算処理は、バイトストリーム23を復号化鍵として、バイトストリーム33に復号化処理を施していると見なすことができる。そして、当該復号化処理(排他的論理和演算処理)は、AESなどの復号化処理に比べて、非常に処理負荷が軽い。
【0052】
このような復号化方法によると、本実施の形態に係る暗号化方法で暗号化されたバイトストリームを適切に復号化できるとともに、暗号化処理と同様、AESなどの処理負荷が重い復号化処理を施すバイト数を低減できるので、本復号化方法を適用した装置への処理負荷を軽減することができる。
【0053】
なお、分割回数は必ずしも連結部204に入力される必要がない。排他的論理和演算処理部203が、バイトストリーム11,21を連結部204に出力する際に、排他的論理和演算処理すべきバイトストリームはなく、バイトストリーム11,21が最後のバイトストリームであることを連結部204に通知しても良い。
【0054】
続いて、本実施の形態に係る暗号化方法の第1の応用例について説明する。本実施の形態では、ステップS4にて、AESなどの暗号化処理をバイトストリーム23に施しているが、これに限らず、バイトストリーム23以外にも施して構わない。例えば、3回目のステップS3にて、分割回数判断部103がバイトストリーム33も暗号化器104に出力し、ステップS4において、暗号化器104がバイトストリーム23にAESなどの暗号化処理を施した後、バイトストリーム23への暗号化処理に用いた暗号化キーとは別の暗号化キーを用いて、バイトストリーム33にもAESなどの暗号化処理を施しても構わない。また、バイトストリーム31,32,33のうち、少なくともいずれかのバイトストリームにもAESなどの暗号化処理を施しても構わない。この場合、分割回数を適宜に設定することで、AESなどの暗号化処理を施すバイト数を全体の数分の1に低減しながら(処理負荷を軽減しながら)、さらに暗号強度を向上することができる。
【0055】
次に、第1の応用例に係る暗号化方法により暗号化したビットストリームを復号化する方法を説明する。例えば、第1の応用例に係る暗号化方法によってバイトストリーム33にもAESなどの暗号化処理が施されているとすると、復号化器202が、バイトストリーム30を例えばAESによって復号化関数E-1を用いて復号化してバイトストリーム23を得る時に、AESによる暗号化処理が施されたバイトストリーム33も同様に復号化しておけばよい。その後の処理は、実施の形態に係る復号化処理と同一である。
【0056】
このような復号化方法によると、第1の応用例に係る暗号化方法で暗号化されたバイトストリームを適切に復号化できるとともに、AESなどの処理負荷の重い復号化処理を施すバイト数は全体の数分の1に低減されているので、処理負荷が軽減される。
【0057】
続いて、本実施の形態に係る暗号化方法の第2の応用例について説明する。本実施の形態では、ステップS1にて、分割器101は、バイトストリームを構成するバイト単位のデータを交互に振り分けて、2つのバイトストリームに分割するとして説明したが、これに限らず、他の分割規則に基づいて分割しても構わない。例えば、バイトストリームのうち、8r+1,8r+3,8r+5,8r+6番目(r:0以上の整数)のバイトを抽出したバイトストリームと、8r+2,8r+4,8r+7,8r+8番目のバイトを抽出したバイトストリームとに分割しても良い。
【0058】
この場合、例えば、分割キーとして、”10101100”を設け、当該分割キーをバイトストリーム(a1a2・・・a2n-1a2n)10に適用する。なお、分割キーを0と1が同数である2q(q≧1)個のビット列と見なすことができる。具体的には、分割キーにおける”1”がバイトストリームのi(=1〜2n)番目のaiに適用されると、aiは第1バイトストリームに分類され、分割キーにおける”0”がバイトストリームのi番目のaiに適用されると、aiは第2バイトストリームに分類される。バイトストリーム10に当該分割キーをa1から8バイト毎に繰り返し適用することで、当該バイトストリーム10を、互いにnバイト数の第1バイトストリームa1a3a5a6・・・と第2バイトストリームa2a4a7a8・・・とに分割することができる(図17参照)。従って、バイトストリームに含まれるバイト単位の並びのうち、少なくとも一部を不規則に振り分けて分割することができる。
【0059】
すなわち、バイト単位のデータを交互に振り分けるという分割規則では、第3者に予測される可能性が高いが、本分割キーのように不規則性を含む分割規則であれば、第3者に予測される可能性を低減することができる。分割キーを知らなければ、復号化時に適切にバイトストリーム同士を連結することができないため、さらに暗号強度を向上することができる。
【0060】
なお、例えば、0と1が同数である2qビット数の分割キーがバイトストリーム10にk(k:自然数)回繰り返して適用されるとすると、いずれもkqバイト数の第1及び第2バイトストリームに分割される。
【0061】
また、分割キーは乱数により発生させても良い。例えば、乱数により初めの4ビットを生成し、次に当該4ビットの”1””0”を反転させた4ビットを生成し、元の4ビットと反転した4ビットを連結して8ビットの分割キーを生成することができる。このとき、分割キーを構成する”1”と”0”が同数となるため、バイトストリームを互いに等しいバイト数のバイトストリームに2分割することができる。また、乱数により分割キーを発生させる場合は、さらに暗号強度を向上することができる。
【0062】
なお、分割キーを例えば128ビット以上のビット数で構成し、当該分割キーをAESなどの暗号化処理用の暗号化キーとして用いても良い。この場合、暗号化キーと分割キーを併用することができるので、管理を容易にすることができる。
【0063】
なお、第2の応用例に係る暗号化方法により暗号化したバイトストリームを復号化する方法は、連結部204が分割キーに基づいてバイトストリーム同士を連結するという点を除いて、本実施の形態に係る復号化方法と同一である。例えば、分割キー”10101100”に基づいて第1及び第2バイトストリームを連結してバイトストリーム10を生成する場合を説明する(図17参照)。分割キーのうち”1”は、第1のバイトストリームの先頭のバイトが取り出され、”0”は第2のバイトストリームの先頭のバイトが取り出され、それぞれが順に連結される。
【0064】
具体的に、分割キーの最初のビットは”1”なので、第1バイトストリームの先頭のバイトa1が取り出され、2番目のビットは”0”なので、第2バイトストリームの先頭のバイトa2が取り出され、3番目のビットは”1”なので、第1バイトストリームの先頭のバイトa3が取り出され(a1は既に取り出されているので先頭はa3である)、この順でバイトが連結される。分割キーの全てのビットについて終了すると、再び分割キーの最初のビットに戻って繰り返し実行されて連結後のバイトストリーム10が生成される。
【0065】
このような復号化方法によると、第2の応用例に係る暗号化方法で暗号化されたバイトストリームを適切に復号化できるとともに、AESなどの処理負荷の重い復号化処理を施すバイト数は全体の数分の1に低減されているので、処理負荷が軽減される。
【0066】
なお、本発明においては、ビットストリームをバイト単位で分割しているが、これに限らずビット単位で分割しても構わないし、任意のビット数を有するブロック単位で分割しても構わない。
【図面の簡単な説明】
【0067】
【図1】本実施の形態に係る暗号化方法を適用した暗号化装置の概略構成図である。
【図2】本実施の形態に係る暗号化方法を示すフローチャートである。
【図3】バイトストリームの流れを示す図である。
【図4】バイトストリームの分割を示す図である。
【図5】2つのバイトストリームの排他的論理和を示す図である。
【図6】バイトストリームの流れを示す図である。
【図7】バイトストリームの分割を示す図である。
【図8】2つのバイトストリームの排他的論理和を示す図である。
【図9】バイトストリームの流れを示す図である。
【図10】バイトストリームの分割を示す図である。
【図11】2つのバイトストリームの排他的論理和を示す図である。
【図12】本実施の形態に係る暗号化方法を用いて暗号化したバイトストリームを示す図である。
【図13】本実施の形態に係る復号化方法を適用した復号化装置の概略構成図である。
【図14】バイトストリームの流れを示す図である。
【図15】バイトストリームの流れを示す図である。
【図16】バイトストリームの流れを示す図である。
【図17】分割キーをバイトストリームに適用して2つのバイトストリームに分割する様子を示す模式図である。
【符号の説明】
【0068】
10,11,21,31,12,22,32,13,23,33,30 バイトストリーム
101 分割器
102,203 排他的論理和演算処理部
103 暗号化器
104 分割回数判断部
202 復号化器
204 連結部
S1〜S5 ステップ
【特許請求の範囲】
【請求項1】
(a)所定のビット数を1単位として、ビットストリームを第1及び第2の前記ビットストリームに分割するステップと、
(b)前記ステップ(a)の実行後、前記第2の前記ビットストリームを暗号化鍵とし、前記第1の前記ビットストリームに第1の暗号化処理を施して、第3の前記ビットストリームを生成するステップと、
(c)前記暗号化鍵を前記ビットストリームとして、前記ステップ(a)および(b)の一組をm(m≧2)回繰り返して、前記第1及び前記第2の前記ビットストリームを更新し、前記第3の前記ビットストリームをm個求めるステップと、
(d)前記ステップ(c)の実行後、最新の前記第2の前記ビットストリームに対して、第2の暗号化処理を施すステップと
を実行する、暗号化方法。
【請求項2】
(e)前記m個の前記第3の前記ビットストリームのうち、少なくともいずれか一つの前記ビットストリームに第3の前記暗号化処理を施すステップを更に実行する、請求項1に記載の暗号化方法。
【請求項3】
前記ステップ(a)は、0と1が同数である2q(q≧1)個のビット列の各ビット値に応じて、前記ビットストリームを前記1単位毎に前記第1又は前記第2の前記ビットストリームに振り分けて、前記ビットストリームをいずれもkq(k:自然数)単位の前記第1及び前記第2の前記ビットストリームに分割する、請求項1又は2に記載の暗号化方法。
【請求項4】
第1の暗号化処理が施されている第3のビットストリームのm(m≧2)個と、第2の暗号化処理が施されている第2のビットストリームとから成るビットストリームに対する復号化方法であって、
(イ)前記第2の前記ビットストリームに対して、前記第2の前記暗号化処理に対応する第2の復号化処理を施すステップと、
(ロ)前記ステップ(イ)の実行後、前記復号化された前記第2の前記ビットストリームを復号化鍵として、前記第3の前記ビットストリームに対して、前記第1の前記暗号化処理に対応する第1の復号化処理を施して、第1の前記ビットストリームを生成するステップと、
(ハ)前記ステップ(ロ)の実行後、所定のビット数を1単位として、前記第1の前記ビットストリームと、前記復号化された前記第2の前記ビットストリームとを連結するステップと、
(ニ)前記ステップ(ハ)で連結して生成したビットストリームを、前記復号化された前記第2の前記ビットストリームとして、前記ステップ(ロ)および(ハ)の一組をm回繰り返すステップと
を実行する、復号化方法。
【請求項5】
前記第3の前記ビットストリームのうち、少なくともいずれかのビットストリームは第3の暗号化処理が施されており、
(ホ)前記ステップ(ロ)に先立ち、前記第3の前記暗号化処理が施されている前記第3の前記ビットストリームに対して、前記第3の前記暗号化処理に対応する第3の復号化処理を施すステップを更に実行する、請求項4に記載の復号化方法。
【請求項6】
前記ステップ(ハ)は、0と1が同数である2q(q≧1)個のビット列の各ビット値に応じて、前記第1又は前記第2の前記ビットストリームから前記1単位毎にデータを取り出して、前記第1及び前記第2の前記ビットストリームを連結する、請求項4又は5に記載の復号化方法。
【請求項1】
(a)所定のビット数を1単位として、ビットストリームを第1及び第2の前記ビットストリームに分割するステップと、
(b)前記ステップ(a)の実行後、前記第2の前記ビットストリームを暗号化鍵とし、前記第1の前記ビットストリームに第1の暗号化処理を施して、第3の前記ビットストリームを生成するステップと、
(c)前記暗号化鍵を前記ビットストリームとして、前記ステップ(a)および(b)の一組をm(m≧2)回繰り返して、前記第1及び前記第2の前記ビットストリームを更新し、前記第3の前記ビットストリームをm個求めるステップと、
(d)前記ステップ(c)の実行後、最新の前記第2の前記ビットストリームに対して、第2の暗号化処理を施すステップと
を実行する、暗号化方法。
【請求項2】
(e)前記m個の前記第3の前記ビットストリームのうち、少なくともいずれか一つの前記ビットストリームに第3の前記暗号化処理を施すステップを更に実行する、請求項1に記載の暗号化方法。
【請求項3】
前記ステップ(a)は、0と1が同数である2q(q≧1)個のビット列の各ビット値に応じて、前記ビットストリームを前記1単位毎に前記第1又は前記第2の前記ビットストリームに振り分けて、前記ビットストリームをいずれもkq(k:自然数)単位の前記第1及び前記第2の前記ビットストリームに分割する、請求項1又は2に記載の暗号化方法。
【請求項4】
第1の暗号化処理が施されている第3のビットストリームのm(m≧2)個と、第2の暗号化処理が施されている第2のビットストリームとから成るビットストリームに対する復号化方法であって、
(イ)前記第2の前記ビットストリームに対して、前記第2の前記暗号化処理に対応する第2の復号化処理を施すステップと、
(ロ)前記ステップ(イ)の実行後、前記復号化された前記第2の前記ビットストリームを復号化鍵として、前記第3の前記ビットストリームに対して、前記第1の前記暗号化処理に対応する第1の復号化処理を施して、第1の前記ビットストリームを生成するステップと、
(ハ)前記ステップ(ロ)の実行後、所定のビット数を1単位として、前記第1の前記ビットストリームと、前記復号化された前記第2の前記ビットストリームとを連結するステップと、
(ニ)前記ステップ(ハ)で連結して生成したビットストリームを、前記復号化された前記第2の前記ビットストリームとして、前記ステップ(ロ)および(ハ)の一組をm回繰り返すステップと
を実行する、復号化方法。
【請求項5】
前記第3の前記ビットストリームのうち、少なくともいずれかのビットストリームは第3の暗号化処理が施されており、
(ホ)前記ステップ(ロ)に先立ち、前記第3の前記暗号化処理が施されている前記第3の前記ビットストリームに対して、前記第3の前記暗号化処理に対応する第3の復号化処理を施すステップを更に実行する、請求項4に記載の復号化方法。
【請求項6】
前記ステップ(ハ)は、0と1が同数である2q(q≧1)個のビット列の各ビット値に応じて、前記第1又は前記第2の前記ビットストリームから前記1単位毎にデータを取り出して、前記第1及び前記第2の前記ビットストリームを連結する、請求項4又は5に記載の復号化方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2007−336244(P2007−336244A)
【公開日】平成19年12月27日(2007.12.27)
【国際特許分類】
【出願番号】特願2006−165738(P2006−165738)
【出願日】平成18年6月15日(2006.6.15)
【出願人】(500040908)株式会社メガチップスシステムソリューションズ (80)
【Fターム(参考)】
【公開日】平成19年12月27日(2007.12.27)
【国際特許分類】
【出願日】平成18年6月15日(2006.6.15)
【出願人】(500040908)株式会社メガチップスシステムソリューションズ (80)
【Fターム(参考)】
[ Back to top ]