(57)【要約】【課題】安全性や機密性を保ちつつ、処理に要する時間を短縮させることのできる技術を提供する。【解決手段】データを暗号化するための暗号化プログラムにおいて、データは圧縮符号である。暗号化プログラムは、圧縮符号の長さよりも短い長さを有する乱数列を生成する。データの圧縮率に応じた長さで、乱数列を順次切り出す。切り出された各乱数列を用いて、圧縮符号における、切り出された各乱数列に対応する所定の箇所について暗号化する。【選択図】図１
2007134860.tif 000002
【特許請求の範囲】
【請求項１】
データを暗号化するための暗号化プログラムであって、
前記データは圧縮符号であり、
前記暗号化プログラムは、
前記圧縮符号の長さよりも短い長さを有する乱数列を生成し、
前記データの圧縮率に応じた長さで、前記乱数列を順次切り出し、
切り出された各乱数列を用いて、前記圧縮符号における、該切り出された各乱数列に対応する所定の箇所について暗号化する
処理をコンピュータに実行させる
ことを特徴とする暗号化プログラム。
【請求項２】
前記所定の箇所は、切り出された乱数に基づいて決定される
ことを特徴とする請求項１に記載の暗号化プログラム。
【請求項３】
前記データは画像データであり、前記圧縮符号は、ＪＰＥＧ方式により圧縮符号化されて生成された画像符号である
ことを特徴とする請求項２に記載の暗号化プログラム。
【請求項４】
暗号化されたデータを復号化するための復号化プログラムであって、
前記データは圧縮符号であり、
前記復号化プログラムは、
暗号化処理において使用された所定の初期値を用いて、前記圧縮符号の長さよりも短い長さを有する乱数列を生成し、
前記データの圧縮率に応じた長さで、前記乱数列を順次切り出し、
切り出された各乱数列を用いて、前記圧縮符号における、該切り出された各乱数列に対応する所定の箇所について復号化する
処理をコンピュータに実行させる
ことを特徴とする復号化プログラム。
【請求項５】
前記圧縮符号は、
前記圧縮符号の長さよりも短い長さを有する乱数列を生成し、
前記データの圧縮率に応じた長さで、前記乱数列を順次切り出し、
切り出された各乱数列を用いて、前記圧縮符号における、該切り出されたかく乱数列に対応する所定の箇所について排他的論理和を取る
処理により暗号化されている
ことを特徴とする請求項４に記載の復号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化および復号化技術に関する。
【背景技術】
【０００２】
近年、インターネット等のネットワークを介して各種データを送受信する際における安全性や機密性の確保が、ますます重要になってきている。そこで、データの内容を第三者に隠してそのデータを送信する方法として、暗号化アルゴリズムが多岐にわたって提案され、標準化されている。
【０００３】
一般的に、暗号化アルゴリズムは、ブロック暗号およびストリーム暗号の２つに分けられる。このうち、ブロック暗号は、所定のビット数のまとまり、すなわちブロックを一度に処理する暗号アルゴリズムの総称で、ブロックのビット数をブロック長という。図１６（ａ）は、従来技術に係るブロック暗号方法を説明する図である。ブロック暗号アルゴリズムにおいて暗号化の対象とされる、長さがブロック長の平文を、「平文ブロック」という。このブロック暗号アルゴリズムを用いて平文ブロックを暗号化した暗号文を、「暗号文ブロック」という。
【０００４】
他方のストリーム暗号は、データの流れ、すなわちストリームを順次処理していく暗号アルゴリズムの総称である。ストリーム暗号においては、例えば、１ビット、８ビットあるいは３２ビット等の単位で暗号化処理を実行する。図１６（ｂ）は、従来技術に係るストリーム暗号方法を説明する図である。従来技術に係るストリーム暗号においては、初期値に基づいて、平文と同じ長さの乱数列、すなわちストリーム暗号を算出しておき、算出した乱数列と平文（画像符号）とで排他的論理和を取る。
【０００５】
ところで、特にデジタルカメラやハードディスク等の記憶装置において画像を圧縮するのに用いられるＪＰＥＧ（Joint Photographic Experts Group）画像符号の暗号化に関しては、第三者にはスクランブルをかけて一部のみ見えるようにする方法や、あるいは、画像全体を暗号化する方法が存在している。画像全体を暗号化するには、圧縮されていない元画像からＪＰＥＧ圧縮をかける過程において暗号化アルゴリズムを適用する、という手法が従来から用いられてきている。
【０００６】
画像全体を暗号化する場合、画像データは文書データと比較してデータ量が大きいため、ＪＰＥＧ画像符号等の画像データの暗号化においては、平文と同じ長さの暗号文を算出する処理に時間を要することとなる。そこで、平文よりも短いストリーム暗号を用いて、平文中の所定の箇所を暗号化することにより、暗号化に要する処理を低減させる技術について開示されている（例えば、特許文献１、２）。
【特許文献１】特開２００２−１７５００８号公報
【特許文献２】特開平６−１２５５５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
例えばＪＰＥＧ画像符号等のように容量が大きいデータであっても、暗号化すべき箇所、すなわちデータ内容を第三者に知得されないようにしておくことが必要な箇所について重点的に暗号化することで、符号全体を暗号化する場合と同等の安全性や機密性は維持しつつ、暗号化の処理の高速化が見込まれる。
【０００８】
本発明は、圧縮符号化されているデータの暗号化処理において、安全性や機密性を保ちつつ、処理に要する時間を短縮することと、このようにして暗号化されたデータを復号化することのできる技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明は、データを暗号化するための暗号化プログラムであって、前記データは圧縮符号であり、前記暗号化プログラムは、前記圧縮符号の長さよりも短い長さを有する乱数列を生成し、前記データの圧縮率に応じた長さで、前記乱数列を順次切り出し、切り出された各乱数列を用いて、前記圧縮符号における、該切り出された各乱数列に対応する所定の箇所について暗号化する処理をコンピュータに実行させる構成とする。圧縮符号よりも短い長さの乱数列を用いて、圧縮符号において暗号化すべき所定の箇所について暗号化の処理が実行される。
【００１０】
前記所定の箇所は、切り出された乱数に基づいて決定されることとしてもよい。更には、前記データは画像データであり、前記圧縮符号は、ＪＰＥＧ方式により圧縮符号化されて生成された画像符号であってもよい。
【００１１】
また、本発明は、暗号化されたデータを復号化するための復号化プログラムであって、前記データは圧縮符号であり、前記復号化プログラムは、暗号化処理において使用された所定の初期値を用いて、前記圧縮符号の長さよりも短い長さを有する乱数列を生成し、前記データの圧縮率に応じた長さで、前記乱数列を順次切り出し、切り出された各乱数列を用いて、前記圧縮符号における、該切り出された各乱数列に対応する所定の箇所について復号化する処理をコンピュータに実行させる構成とする。
【発明の効果】
【００１２】
本発明によれば、安全性や機密性を維持しつつ、より高速な暗号化／復号化処理が可能とされる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の好適な実施の形態について、図面を参照しながら詳細に説明する。
図１は、本発明に係る暗号化および復号化方法の原理図である。本発明に係る暗号化方法および復号化方法は、例えば、デジタルカメラやハードディスク等の記憶装置において、画像を圧縮して得られたＪＰＥＧ（Joint Photographic Experts Group）画像符号を暗号化／復号化するときに実行され、コンピュータのメモリに格納された、暗号化／復号化プログラムが実行されることにより実現される。
【００１４】
図１（ａ）に示されるように、本発明に係る暗号化方法においては、まず、算出された初期値（初期化ベクトル）に基づいて乱数列を生成する。ここで用いられる初期値は、暗号化の都度異なる値が算出される、無作為のビット列から構成される。生成される乱数列は、暗号化すべきＪＰＥＧ画像符号等の平文と比べて、短い長さを有する。次に、生成した乱数列を用いて、平文と同じ長さの数列を生成する。生成される数列には、平文中の暗号化すべき箇所との間で排他的論理和（ＸＯＲ）を取ることができるように、先に生成した乱数列が分散して配置される。排他的論理和を取って得られた暗号文の先頭に初期値を付与すると、その暗号文が出力される。
【００１５】
図１（ａ）に示される方法で暗号化された暗号文は、図１（ｂ）に示されるような方法によって復号化される。図１（ｂ）に示されるように、まず、暗号文の先頭に付与された初期値を切り出して、切り出した初期値に基づいて乱数列を生成する。ここで生成される乱数列は、暗号文に付与された初期値に基づいて生成されていることにより、図１（ａ）の方法により暗号化に用いるために生成された乱数列に対応している。次に、生成した乱数列を使用して、暗号文と同じ長さの数列を生成する。生成される数列には、暗号文において復号化すべき箇所との間で排他的論理和を取ることができるように、先に生成した乱数列が分散して配置されている。数列と暗号文とで排他的論理和を取った結果として、平文が得られる。
【００１６】
図２は、本実施形態に係る暗号化装置１の構成図である。暗号化装置１は、初期値算出部１１、乱数列生成部１２、乱数列記憶部１３、乱数列分散部１４、分散乱数列記憶部１５、画像符号記憶部１６、暗号化部１７および暗号文出力部１８を含んで構成される。
【００１７】
初期値算出部１１は、ある平文を暗号化する処理を実行するたびに、異なる無作為なビット列を生成し、生成したビット列を初期値として乱数列生成部１２に与える。乱数列生成部１２は、初期値を元に乱数列を生成する。生成される乱数列は、例えば、暗号化すべき平文の半分程度の長さを有する。乱数列記憶部１３には、生成された乱数列が格納される。
【００１８】
乱数列分散部１４は、乱数列記憶部１３に格納されている乱数列を読み出し、先頭から順次読み出して、暗号化すべき平文と同じ長さの空ビット列に配置していく。乱数列からどれだけのビットを読み出すかは、ＪＰＥＧ画像符号の圧縮率に応じて決定される。分散乱数列記憶部１５は、乱数列分散部１４によって作成された、乱数列を分散させた数列（以下、数列と略記）を格納する。
【００１９】
一方、暗号化装置１に入力されたＪＰＥＧ画像符号は、上記の乱数列分散部１４に与えられると共に、画像符号記憶部１６に格納される。具体的な処理については後述する。暗号化部１７は、分散乱数列記憶部１５および画像符号記憶部１６にそれぞれ格納された数列および平文である画像符号を読み出して、排他的論理和を取って暗号化する。暗号文出力部１８は、暗号文を出力する。
【００２０】
図３は、本実施形態に係る復号化装置２の構成図である。復号化装置２は、暗号文入力部２１、初期値切り出し部２２、乱数列生成部２３、乱数列記憶部２４、 乱数列分散部２５、分散乱数列記憶部２６、暗号文記憶部２７、復号化部２８および平文出力部２９を含んで構成される。
【００２１】
暗号文入力部２１は、暗号化された画像符号を受け付けるインタフェースである。初期値切り出し部２２は、入力された暗号文の先頭に付与された初期値を切り出す。乱数列生成部２３は、初期値切り出し部２２により切り出された初期値に基づいて乱数列を生成する。乱数列記憶部２４は、生成された乱数列を格納する。なお、図２の暗号化装置１で暗号化された画像符号を復号化するとき、入力された暗号文に付与された初期値は、暗号化装置１の初期値算出部１１において算出された初期値と一致する。同一の初期値を元に生成されることにより、図３の復号化装置２の乱数列生成部２３は、図２の暗号化装置１において生成されるのと同じ乱数列を生成する。
【００２２】
乱数列分散部２５および分散乱数列記憶部２６の動作については、それぞれ図２の乱数列分散部１４および分散乱数列記憶部１５と同様であるのでここでは省略する。復号化装置２に入力された、暗号化されたＪＰＥＧ画像符号は、暗号文入力部２１を介して上記の初期値切り出し部２２に与えられると共に、暗号文記憶部２７に格納される。復号化部２８は、分散乱数列記憶部２６および暗号文記憶部２７にそれぞれ格納されている数列および暗号文を読み出して、排他的論理和を取って復号化する。平文出力部２９は、復号化して得られた平文である画像符号を出力する。
【００２３】
図２に示される暗号化装置１によって、例えばＪＰＥＧ画像符号等の圧縮符号が暗号化され、暗号文は、図３に示される復号化装置２によって復号される。復号化処理については、暗号化の際に用いた初期値を使用して生成した乱数に基づいて、暗号文について排他的論理和を取ることのほかは、暗号化と同様の処理を行うことから、以下、本実施形態に係る暗号化方法を中心に説明する。
【００２４】
図４は、本実施形態に係る暗号化装置１における、乱数列分散部１４の構成図である。乱数列分散部１４は、圧縮率算出部４１、乱数列切り出し部４２、部分乱数列記憶部４３、開始位置算出部４４、数列算出部４５および参照表（ルックアップテーブル、以下ＬＵＴと表記）４６を含む。
【００２５】
圧縮率算出部４１は、図５の圧縮率算出方法を説明する図に示されるように、暗号化装置１に入力された画像符号と、その画像符号のヘッダ情報から得られるもとの画像とについての大きさの比から、圧縮率を算出する。乱数列切り出し部４２は、算出された圧縮率に応じたビット数だけ乱数列から値を切り出す。切り出した乱数は、以下、部分乱数列とする。部分乱数列記憶部４３は、部分乱数列を格納する。
【００２６】
開始位置算出部４４および数列算出部４５は、部分乱数列および画像符号の圧縮率に基づいて、それぞれ平文と同じ長さの空ビット列に部分乱数列を配置する開始位置および配置後の数列を算出する。これらの部による数列を算出する処理は、ＬＵＴ４６を参照することにより行われる。
【００２７】
図４に示される乱数列分散部１４によって、乱数列は先頭から切り出されて順に空ビット列に配置され、暗号化の処理を行う際に平文との間で排他的論理和を取るための数列が作成される。平文は、例えばＪＰＥＧ画像符号であり、本実施形態においては、ＪＰＥＧ画像符号のうち、安全性や機密性が維持されるように、暗号化すべき位置について重点的に暗号化される。
【００２８】
図６は、本実施形態に係る暗号化方法において、暗号化される符号を説明するための図である。ＪＰＥＧ画像は、まず、８×８の６４画素（６４バイト）を１ブロックとした、ブロック単位で離散コサイン変換（Discrete Cosine Transform、以下ＤＣＴと略記）される。次に、ＤＣＴにより得られたＤＣＴ係数は、水平方向および垂直方向の周波数成分において、それぞれ図中左方、および上方に行くほど周波数が低くなるように配置され、図６中において示されるように、８×８画素ブロックのＤＣＴ係数の各値を符号化するときにはジグザグスキャンが行われる。量子化テーブルの量子化ステップ値を大きくとり、圧縮率が高いほど、全体のデータ量は小さくなる。なお、図６に示す圧縮率が比較的高い場合と低い場合における各ＤＣＴ成分については、簡単のため、実際とは異なりいずれのＤＣＴ成分もほぼ等しい長さであるように表されているが、実際は、周波数が低いＤＣＴ係数ほどビット長も長い。
【００２９】
エントロピー符号化された圧縮符号のうち、直流成分ＤＣ、および交流成分ＡＣ０、ＡＣ１およびＡＣ２の符号で、符号全体のおよそ８０％を占めることが知られている。そして、それぞれの圧縮符号は、ハフマン符号と付加ビットとから構成される。
ハフマン符号も負荷ビット数も共に、DC係数の差分値（隣接ブロックのDC係数との差分値）や、AC係数の値をグループ分けした結果に対して、設定される。ハフマン符号は、各グループの出現確率に対応した符号が、符号表に明記されている。但し、AC係数のハフマン符号の場合は、出現確率と、ブロック内の無効係数の連長（ランレングス）との組み合わせで設定される。
【００３０】
付加ビットは、ビット数が上記のようにグループ毎に設定され、先のハフマン符号が同じグループに属するどの係数を指すかを示す。これは、ビット数が固定して等確率で現れるので、比較的、第三者により推定されにくい。
【００３１】
これより、本実施形態においては、これらＪＰＥＧ圧縮画像符号すなわちＤＣ、ＡＣ１、ＡＣ２およびＡＣ３の付加ビットについて暗号化することで、安全性を維持しつつ、暗号化に要する処理を短縮化する。このとき、ＪＰＥＧの圧縮率により、それぞれ異なるＤＣＴ係数の長さに応じて、対応する付加ビットの位置が決定される。以下、図７から図１１を参照して、本実施形態に係る暗号化方法においては、ＪＰＥＧ画像符号中の付加ビットの暗号化を実現する方法について、具体的に説明する。
【００３２】
図７は、乱数列分散部１４の動作を説明するための図である。乱数列記憶部１３から読み出した乱数列Ｒは、暗号化すべき平文（ＪＰＥＧ画像符号）の半分以下の長さである。具体的には、例えば平文の３０〜５０％の長さを有する。平文であるＪＰＥＧ画像符号の圧縮率に応じて、乱数列Ｒの長さを適切に設定する。この乱数列Ｒの長さを決定する処理については後述する。
【００３３】
乱数列Ｒは、その先頭から順に切り出され、部分乱数列Ｒ1、Ｒ2、…（以下、部分乱数列Ｒ1等とする）が生成される。部分乱数列Ｒ1等は、自身が保有する情報に基づいて、暗号化用の数列Ｃ（以下、数列Ｃと略記）の所定の箇所に配置される。こうして、乱数列Ｒは、図７に示すように、数列Ｃに分割して配置される。
【００３４】
なお、数列Ｃは、部分乱数列Ｒ1等が配置される前は、全て「０」が格納されている。すなわち、分割した乱数列Ｒ（部分乱数列Ｒ1等）を配置した数列Ｃは、平文との間で排他的論理和を取ると、乱数列Ｒが配置された箇所については暗号文になるが、その他の箇所はすべて排他的論理和を取った結果として平文と同じビット列が得られる。
【００３５】
図８は、乱数列分散部１４の動作を更に説明するための図である。算出された圧縮率を元に、乱数列Ｒの先頭から所定のビット数だけ切り出す。図８の例においては、所定のビット数を指定ビット数とし、ｎビット（ｎは８以下の正の整数）であると仮定する。図８に示されるように、ｎビット分乱数列から切り出した、ｋ番目の部分乱数列Ｒk（ｋは正の整数）を、本実施形態においては、８ビットの空ビット列に格納する。部分乱数列Ｒkに基づいて、数列Ｃの乱数を格納（配置）する箇所、および格納する乱数の値が決定される。
【００３６】
図９は、本実施形態における分散乱数列の生成を説明するための図である。数列Ｃとの間で排他的論理和を取るＪＰＥＧ画像符号の圧縮率に応じて、例えば図９の（ａ）から（ｄ）に示されるような場合分けを行って、それぞれに応じた方法により数列Ｃを生成する。図９に示される４つの例は、ＪＰＥＧ画像符号の圧縮率の小さい場合から大きい場合について、順に示されている。本実施形態においては、（ａ）圧縮率１２％以上のとき、（ｂ）圧縮率６％以上１２％未満のとき、（ｃ）圧縮率３％以上６％未満のときおよび（ｄ）圧縮率３％未満のときに分けている。
【００３７】
まず、図９（ａ）を用いて、圧縮率がおよそ１６％の場合における、部分乱数列Ｒkを用いて数列Ｃを生成する処理を説明する。乱数列から指定ビット数である８ビット分だけ切り出して得られた部分乱数列Ｒkを、図９（ａ）の左方に示す。８ビットのうち前半の４ビットは、後半の４ビットを格納する箇所を決定するために使用される。前半の４ビットの乱数列を、位置決め用乱数とする。後半の４ビットの乱数列を、ＸＯＲ用乱数とする。図１０のＬＵＴ４６を参照して、位置決め用乱数を用いてＸＯＲ用乱数を配置する箇所を決定する方法について説明する。
【００３８】
図１０は、ＬＵＴ４６の例である。図１０（ａ）から（ｄ）は、それぞれ圧縮率が（ａ）１２％以上のとき、（ｂ）圧縮率６％以上１２％未満のとき、（ｃ）圧縮率３％以上６％未満のときおよび（ｄ）圧縮率３％未満のときのＬＵＴ４６を示している。
【００３９】
指定ビット列ｎ＝８、すなわち部分乱数列Ｒkが８ビットから構成されるとき、部分乱数列Ｒkのうち先頭からの４ビットに基づいて、残りの４ビットを数列Ｃ上のどこに配置させるかを決定する。例えば、位置決め用乱数が「００００」であれば、空ビット列の１ビット目から４ビット目にＸＯＲ用乱数を格納し、位置決め用乱数が「０００１」であれば、空ビット列の２ビット目から５ビット目にＸＯＲ用乱数を格納する。図９（ａ）の例においては位置決め用乱数が４ビットで構成されていることから、２4＝１６通りの配置の仕方が存在することになる。
【００４０】
位置決め用乱数により空ビット上の配置位置が決定されるＸＯＲ用乱数は、切り出された乱数列のうち残りの４ビットであり、その内容は２4＝１６通りである。したがって、暗号化用の１６ビットの空ビット列に８ビットの部分乱数列Ｒkのうち、４ビットのＸＯＲ乱数を配置することで生成される数列Ｃの組み合わせは、２4×２4＝２５６通りになる。
【００４１】
図９（ｂ）は、例えば圧縮率がおよそ８％の場合における部分乱数列Ｒkおよび部分乱数列Ｒkから生成された数列Ｃである。この場合、乱数を切り出すための指定ビット列ｎ＝４ビットであるので、図９（ｂ）左方に示されているように、８ビットから構成される乱数列Ｒkのうち、網掛けで示される先頭から４ビットにのみ、乱数列Ｒから切り出した値が格納されており、残りは「０」が格納されている。
【００４２】
上記図９（ａ）のときと同様に、指定ビット数の乱数のうち前半を位置決め用乱数、後半をＸＯＲ用乱数とする。図９（ｂ）においては、乱数列Ｒkのうち先頭から２ビットが位置決め用乱数、これに続く２ビットがＸＯＲ用乱数である。
【００４３】
位置決め用乱数は２×２＝４通りの組み合わせが存在することから、これにより、８ビットの数列上に配置される位置の組み合わせについても４通りとなる。さらに、ＸＯＲ用乱数自体の組み合わせも２×２＝４通りであるから、図１０（ｂ）に示されるように、４×４＝１６通りの組み合わせがＬＵＴ４６に用意される。
【００４４】
図９（ｃ）は、圧縮率がおよそ４％の場合における部分乱数列Ｒkおよびこれにより生成された数列Ｃである。このとき、指定ビット列ｎ＝４である。上記の２つの例とは異なり、図９（ｃ）の例においては、部分乱数列Ｒkの全てをＸＯＲ用乱数として使用する。ＸＯＲ用乱数は、例えば空ビット列に所定の間隔毎に配置され、位置決め用乱数は使用しない。
【００４５】
図９（ｃ）の右方に示されるように、圧縮率がおよそ４％と比較的小さいときは、８ビットの数列Ｃ上に、２ビットごとに部分乱数列を格納する。上記の（ａ）や（ｂ）の場合とは異なり、位置決め用の乱数によらない。乱数の格納位置は予め定められており、その内容については、ＸＯＲ用乱数が４ビットから構成されることから、ＬＵＴ４６には、２4＝１６通りの組み合わせが用意される。
【００４６】
図９（ｄ）は、圧縮率がおよそ２％のときの部分乱数列Ｒkおよび生成される数列Ｃである。このとき、指定ビット列ｎ＝４である。図９（ｃ）の圧縮率およそ４％の場合と比べて、数列Ｃ上に分散させて配置するときにＸＯＲ用乱数を４分割して１ビットおきに数列Ｃに格納する点で異なっている。
【００４７】
図１１は、暗号化部１７の動作を説明するための図である。暗号化すべきＪＰＥＧ画像符号は、図２の画像符号記憶部１６から、１語ずつ読み出されて暗号化部１７に与えられる。また、画像符号を暗号化するための上記数列Ｃは、分数乱数列記憶部１５から１語ずつ読み出されて暗号化部１７に与えられる。暗号化部１７において、画像符号と数列Ｃとで排他的論理和を取り、暗号文を得る。ここで、１語とは、一般的に３２ビット以上から構成されている。図１１の（ａ）から（ｄ）は、それぞれ１語長＝３２ビットのうち１６ビットあるいは８ビットについて、部分的に表している。また、図１１（ａ）から（ｄ）において示されている数列Ｃは、それぞれ図９（ａ）から（ｄ）で生成した数列Ｃに対応している。
【００４８】
まず、図１１（ａ）に示される、圧縮率がおよそ１６％のときの暗号化処理について説明する。平文のうち、まずＤＣ成分は、ハフマン符号および付加ビットそれぞれがおよそ８ビットで構成されている。続くＡＣ成分は、ＤＣ成分と比較すると、順次その長さは短くなっていく。既に説明した通り、本実施形態においては、圧縮率がおよそ１６%のときに生成される数列Ｃは１６ビットであり、このうち部分乱数列Ｒkは４ビットである。すなわち、各成分のビット長は一定でないのに対し、数列Ｃは１６ビットで一定であるので、数列Ｃおよび平文をそれぞれ１語ずつ暗号化部１７に与えるとしても、必ずしも数列Ｃの先頭と各成分の先頭とのタイミングが合致するわけではない。しかし、ＤＣ成分およびＡＣ成分におけるハフマン符号や付加ビットの長さはいずれも圧縮率に基づいて決定されており、数列Ｃの長さも圧縮率に基づいて算出されているので、概ね付加ビットにＸＯＲ用乱数を重ねることができる。
【００４９】
図１１（ｂ）の圧縮率がおよそ８％の場合も同様に、数列Ｃの長さおよびＤＣ成分やＡＣ成分の長さはいずれも画像符号の圧縮率に基づいて決定されているので、数列ＣにおけるＸＯＲ用乱数を、画像符号の各成分における付加ビットに重ねることができる。
【００５０】
次に、図１１（ｃ）を参照して、圧縮率がおよそ４％のときの暗号化処理を説明する。このとき、画像符号のＤＣ成分やＡＣ成分は、いずれもおよそ４ビットであり、これに対し、数列Ｃは８ビットである。図９（ｃ）を参照して既に述べたように、乱数列から切り出されたＸＯＲ用乱数は、２ビットごとに数列Ｃに格納されている。これにより、概ね各成分の付加ビットに対して、２ビットごとに格納されているＸＯＲ用乱数を重ねることができる。
【００５１】
図１１（ｄ）の、圧縮率がおよそ２％のときについても同様に、数列Ｃには１ビットごとにＸＯＲ用乱数が格納されており、画像符号の各成分において、ハフマン符号と付加ビットとはおよそ１ビットごとに現れるので、概ねＸＯＲ用乱数を付加ビットに重ねることができる。
【００５２】
図１１（ａ）から（ｄ）を参照して説明したように、ＪＰＥＧ画像符号においては付加ビットの出現する位置が画像符号の圧縮率に応じて変化することを利用して、本実施形態においては、圧縮率に応じて場合分けし、付加ビットの現れる位置に部分乱数列Ｒkを格納して重点的に暗号化を行っている。
【００５３】
図１２は、本実施形態に係る暗号化の処理を示したフローチャートである。図１２に示される処理は、暗号化装置１に対して、暗号化すべきＪＰＥＧ画像符号が入力されたことを契機として開始される。
【００５４】
まず、ステップＳ１で、部分乱数列を生成し、ステップＳ２で、暗号化すべきＪＰＥＧ画像符号の圧縮率を算出する。ステップＳ３で、圧縮率が第1のしきい値ＴＨ０以上であるか否かを判定する。上記実施例においては、ＴＨ０＝０．１２である。すなわち、圧縮率が１２％以上の場合、ステップＳ４に進み、ステップＳ１で生成した部分乱数列から４ビット切り出し、ステップＳ５で、切り出した乱数列に基づいて、暗号化開始位置、すなわち、上記実施形態においては、ＸＯＲ乱数を格納する位置を算出し、ステップＳ１０に進む。
【００５５】
ステップＳ３で、圧縮率が１２％未満である場合、ステップＳ６に進み、更に、画像符号の圧縮率が第２のしきい値ＴＨ１以上であるか否かを判定する。上記実施例においては、ＴＨ１＝０．０６、すなわち圧縮率６％である。ステップＳ６で、画像符号の圧縮率が６％以上であるとき、ステップＳ７に進み、上記部分乱数列から２ビット切り出し、ステップＳ８で、切り出した乱数列に基づいて上記暗号化位置を算出し、ステップＳ１０に進む。
【００５６】
ステップＳ６で、圧縮率が６％未満である場合、更にステップＳ９に進み、画像符号の圧縮率が第３のしきい値ＴＨ２以上であるか否かを判定する。上記実施例においては、ＴＨ２＝０．０３、すなわち圧縮率３％である。ステップＳ９で、画像符号の圧縮率が３％以上であるか否かを判定した後、ステップＳ１０に進む。
【００５７】
ステップＳ１０では、先にステップＳ３、ステップＳ６、およびステップＳ９で判定した結果に基づいて、ＸＯＲ用乱数を、画像符号の圧縮率に応じた方法で、例えば求めた暗号化開始位置に基づいて、あるいは、所定のビット間隔で切り出すことによって算出し、処理を終了する。
【００５８】
図１３は、本実施形態に係る復号化の処理を示したフローチャートである。図１３に示される処理は、復号化装置２に対して、暗号化されたＪＰＥＧ画像符号が入力されたことを契機として開始される。
【００５９】
まず、ステップＳ２１で、初期値を切り出し、ステップＳ２２で、切り出した初期値に基づいて部分乱数列を生成し、ステップＳ２３で、入力されたＪＰＥＧ画像符号の圧縮率を算出する。ステップＳ２４で、圧縮率が上記第1のしきい値ＴＨ０（例えば０．１２）以上であるか否かを判定する。算出された圧縮率が１２％以上の場合、ステップＳ２５に進み、ステップＳ１で生成した部分乱数列から４ビット切り出し、ステップＳ２６で、切り出した乱数列に基づいて、復号化開始位置、すなわち、乱数列を格納する位置を算出し、ステップＳ３１に進む。
【００６０】
ステップＳ２４で、圧縮率が１２％未満である場合、ステップＳ２７に進み、更に、圧縮率が上記第２のしきい値ＴＨ１（例えば０．０６）以上であるか否かを判定する。ステップＳ２７で、圧縮率が６％以上のとき、ステップＳ２８に進み、上記部分乱数列から２ビット切り出し、ステップＳ２９で、切り出した乱数列に基づいて上記復号化位置を算出し、ステップＳ３１に進む。
【００６１】
ステップＳ２７で、圧縮率が６％未満である場合、更にステップＳ３０に進み、圧縮率が上記第３のしきい値ＴＨ２（例えば０．０３）以上であるか否かを判定した後、ステップＳ３１に進む。
【００６２】
ステップＳ３１では、先にステップＳ２４、ステップＳ２７およびステップＳ３０で判定した結果に基づいて、乱数を、暗号化された画像符号の圧縮率に応じた方法で、例えば求めた復号化開始位置に基づいて、あるいは、所定のビット間隔で切り出すことによって算出し、処理を終了する。
【００６３】
ところで、図２の暗号化装置１と、図３の復号化装置２は、例えば、図１４に示すような情報処理装置（コンピュータ）を用いて構成することができる。図１４の情報処理装置は、ＣＰＵ（中央処理装置）１０１、メモリ１０２、入力装置１０３、出力装置１０４、外部記憶装置１０５、媒体駆動装置１０６、ネットワーク接続装置１０７を備え、それらはバス１０８により互いに接続されている。
【００６４】
メモリ１０２は、例えば、ＲＯＭ（read only memory）、ＲＡＭ（random access memory）等を含み、処理に用いられるプログラムおよびデータを格納する。ＣＰＵ１０１は、メモリ１０２を利用してプログラムを実行することにより、必要な処理を行う。
【００６５】
図２の暗号化装置１や図３の復号化装置２は、メモリ１０２に格納されたプログラムを実行することにより実現される機能に対応する。
入力装置１０３は、例えば、キーボード、ポインティングデバイス、タッチパネル等であり、オペレータ等からの指示や情報の入力に用いられる。出力装置１０４は、例えば、ディスプレイ、プリンタ、スピーカ等であり、オペレータへの問い合わせ、アラーム、処理結果等の出力に用いられる。
【００６６】
外部記憶装置１０５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。情報処理装置は、この外部記憶装置１０５に、上記プログラムおよびデータを格納しておき、必要に応じて、それらをメモリ１０２にロードして使用する。
【００６７】
媒体駆動装置１０６は、可搬記録媒体１０９を駆動し、その記録内容にアクセスする。可搬記録媒体１０９は、メモリカード、フレキシブルディスク、ＣＤ−ＲＯＭ（compact disk read only memory ）、光ディスク、光磁気ディスク等の任意のコンピュータ読み取り可能な記録媒体である。オペレータは、この可搬記録媒体１０９に上記プログラムおよびデータを格納しておき、必要に応じて、それらをメモリ１０２にロードして使用する。
【００６８】
ネットワーク接続装置１０７は、ＬＡＮ（local area network）、インターネット等の任意の通信ネットワークに接続され、通信に伴うデータ変換を行う。情報処理装置は、必要に応じて、上記プログラムおよびデータを外部の装置からネットワーク接続装置１０７を介して受け取り、それらをメモリ１０２にロードして使用する。
【００６９】
図１５は、図１４の情報処理装置にプログラムおよびデータを供給することのできるコンピュータ読み取り可能な記録媒体を示している。可搬記録媒体１０９やサーバ１１１のデータベース１１３に格納されたプログラムおよびデータは、情報処理装置１１２のメモリ１０２にロードされる。サーバ１１１は、そのプログラムおよびデータを搬送する搬送信号を生成し、ネットワーク上の任意の伝送媒体を介して情報処理装置１１２に送信する。ＣＰＵ１０１は、そのデータを用いてそのプログラムを実行し、必要な処理を行う。
【００７０】
以上説明したように、本実施形態に係る暗号化方法および復号化方法によれば、画像を圧縮して得られたＪＰＥＧ画像符号について暗号化／復号化する際に、その圧縮率に応じて、暗号化／復号化すべき箇所、具体的には付加ビットについて第三者に隠す必要性の低い情報（例えばハフマン符号）については処理を行わないようにして、暗号化／復号化するよう処理を実行する。情報の安全性や機密性を維持するために必要な箇所について重点的に暗号化／復号化の処理を実行することで、全体については第三者による復号を防止しつつ、処理に要する時間を短縮化させることが可能とされる。
【００７１】
（付記１）
データを暗号化するための暗号化プログラムであって、
前記データは圧縮符号であり、
前記暗号化プログラムは、
前記圧縮符号の長さよりも短い長さを有する乱数列を生成し、
前記データの圧縮率に応じた長さで、前記乱数列を順次切り出し、
切り出された各乱数列を用いて、前記圧縮符号における、該切り出された各乱数列に対応する所定の箇所について暗号化する
処理をコンピュータに実行させる
ことを特徴とする暗号化プログラム。
（付記２）
前記所定の箇所は、切り出された乱数に基づいて決定される
ことを特徴とする付記１に記載の暗号化プログラム。
（付記３）
前記所定の箇所は、更に前記データの圧縮率に基づいて決定される
ことを特徴とする付記２に記載の暗号化プログラム。
（付記４）
前記データは画像データであり、前記圧縮符号は、ＪＰＥＧ方式により圧縮符号化されて生成された画像符号である
ことを特徴とする付記２に記載の暗号化プログラム。
（付記５）
前記所定の箇所は、ＪＰＥＧ方式である前記画像符号における付加ビットに含まれ、
前記暗号化の処理は、前記切り出された各乱数列と前記付加ビットとで排他的論理和を取ることにより行われる
ことを特徴とする付記４に記載の暗号化プログラム。
（付記６）
前記乱数列は、所定の初期値に基づいて算出され、
前記暗号化の処理の結果得られる暗号は、排他的論理和を取った結果に前記初期値を付与することにより得られる
ことを特徴とする付記５に記載の暗号化プログラム。
（付記７）
空ビットから構成され、前記画像符号と同じ長さを有する数列上に、前記切り出した乱数列をそれぞれ配置し、
前記数列との排他的論理和を取ることにより、前記画像符号を暗号化する
ことを特徴とする付記４に記載の暗号化プログラム。
（付記８）
暗号化されたデータを復号化するための復号化プログラムであって、
前記データは圧縮符号であり、
前記復号化プログラムは、
暗号化処理において使用された所定の初期値を用いて、前記圧縮符号の長さよりも短い長さを有する乱数列を生成し、
前記データの圧縮率に応じた長さで、前記乱数列を順次切り出し、
切り出された各乱数列を用いて、前記圧縮符号における、該切り出された各乱数列に対応する所定の箇所について復号化する
処理をコンピュータに実行させる
ことを特徴とする復号化プログラム。
（付記９）
前記圧縮符号は、
前記圧縮符号の長さよりも短い長さを有する乱数列を生成し、
前記データの圧縮率に応じた長さで、前記乱数列を順次切り出し、
切り出された各乱数列を用いて、前記圧縮符号における、該切り出されたかく乱数列に対応する所定の箇所について排他的論理和を取る
処理により暗号化されている
ことを特徴とする付記８に記載の復号化プログラム。
（付記１０）
前記データは画像データであり、前記圧縮符号は、ＪＰＥＧ方式により圧縮符号化されて生成された画像符号である
ことを特徴とする付記９に記載の復号化プログラム。
（付記１１）
前記復号化の処理において用いられる乱数列は、所定の初期値に基づいて算出される
ことを特徴とする付記１０に記載の復号化プログラム。
（付記１２）
データを暗号化するための暗号化方法であって、
前記データは圧縮符号であり、
前記暗号化方法は、
前記圧縮符号の長さよりも短い長さを有する乱数列を生成し、
前記データの圧縮率に応じた長さで、前記乱数列を順次切り出し、
切り出された各乱数列を用いて、前記圧縮符号における、該切り出された各乱数列に対応する所定の箇所について暗号化する
ことを特徴とする暗号化方法。
（付記１３）
暗号化されたデータを復号化するための復号化方法であって、
前記データは圧縮符号であり、
前記復号化方法は、
暗号化処理において使用された所定の初期値を用いて、前記圧縮符号の長さよりも短い長さを有する乱数列を生成し、
前記データの圧縮率に応じた長さで、前記乱数列を順次切り出し、
切り出された各乱数列を用いて、前記圧縮符号における、該切り出された各乱数列に対応する所定の箇所について復号化する
ことを特徴とする復号化方法。
（付記１４）
データを暗号化するための暗号化装置であって、
前記データは圧縮符号であり、
前記暗号化装置は、
前記圧縮符号の長さよりも短い長さを有する乱数列を生成する生成手段と、
前記データの圧縮率に応じた長さで、前記乱数列を順次切り出す切り出し手段と、
切り出された各乱数列を用いて、前記圧縮符号における、該切り出された各乱数列に対応する所定の箇所について暗号化する暗号化手段と
を備えたことを特徴とする暗号化装置。
（付記１５）
データを復号化するための復号化装置であって、
前記データは圧縮符号であり、
前記復号化装置は、
暗号化処理において使用された所定の初期値を用いて、前記圧縮符号の長さよりも短い長さを有する乱数列を生成する生成手段と、
前記データの圧縮率に応じた長さで、前記乱数列を順次切り出す切り出し手段と、
切り出された各乱数列を用いて、前記圧縮符号における、該切り出された各乱数列に対応する所定の箇所について復号化する復号化手段と
を備えたことを特徴とする復号化装置。
【図面の簡単な説明】
【００７２】
【図１】本発明に係る暗号化および復号化方法の原理図である。
【図２】本実施形態に係る暗号化装置の構成図である。
【図３】本実施形態に係る復号化装置の構成図である。
【図４】本実施形態に係る暗号化装置における、乱数列分散部の構成図である。
【図５】圧縮率算出方法を説明する図である。
【図６】本実施形態に係る暗号化方法において、暗号化される符号を説明するための図である。
【図７】乱数列分散部の動作を説明するための図である。
【図８】乱数列分散部の動作を更に説明するための図である
【図９】本実施形態における分散乱数列の生成を説明するための図である。
【図１０】ルックアップテーブルの例である。
【図１１】暗号化部の動作を説明するための図である。
【図１２】本実施形態に係る暗号化の処理を示したフローチャートである。
【図１３】本実施形態に係る復号化の処理を示したフローチャートである。
【図１４】情報処理装置（コンピュータ）の構成図である。
【図１５】図１４の情報処理装置にプログラムおよびデータを供給することのできるコンピュータ読み取り可能な記録媒体を示した図である。
【図１６】従来技術に係るブロック暗号方法およびストリーム暗号方法を説明する図である。
【符号の説明】
【００７３】
１    暗号化装置
２    復号化装置
１１    初期値算出部
１２    乱数列生成部
１３    乱数列記憶部
１４    乱数列分散部
１５    分散乱数列記憶部
１６    画像符号記憶部
１７    暗号化部
１８    暗号文出力部
２１    暗号文入力部
２２    初期値切り出し部
２３    乱数列生成部
２４    乱数列記憶部
２５    乱数列分散部
２６    分散乱数列記憶部
２７    暗号文記憶部
２８    復号化部
２９    平文出力部
【図１】
2007134860.tif 000003
【図２】
2007134860.tif 000004
【図３】
2007134860.tif 000005
【図４】
2007134860.tif 000006
【図５】
2007134860.tif 000007
【図１２】
2007134860.tif 000008
【図１３】
2007134860.tif 000009
【図１４】
2007134860.tif 000010
【図１５】
2007134860.tif 000011
【図１６】
2007134860.tif 000012
【図６】
2007134860.tif 000013
【図７】
2007134860.tif 000014
【図８】
2007134860.tif 000015
【図９】
2007134860.tif 000016
【図１０】
2007134860.tif 000017
【図１１】
2007134860.tif 000018