説明

暗号化装置、復号装置、暗号化方法、復号方法およびプログラム

【課題】暗号化対象の入力データ列がブロックサイズの整数倍でない場合でも、暗号化前後でデータサイズを変化させないようにする。
【解決手段】mビット単位で暗号化を行なうブロック暗号化部と、入力データ列を順次暗号化する共に、最終ブロックがmビットにaビット分足らない場合に、最終ブロック直前の暗号化ブロックの末尾aビットを最終ブロックの末尾に付加し、暗号化して暗号化最終ブロックを得て、最終ブロック直前の暗号化ブロックにおける末尾aビットが、暗号化最終ブロックの末尾aビットに置換された暗号化ブロックを、最終ブロック直前のブロックの新たな暗号化ブロックとし、暗号化最終ブロックの先頭(m−a)ビット部分を新たな暗号化最終ブロックとする暗号化制御部と、得られた各暗号化ブロックを、入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力部とを備えた暗号化装置。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブロック暗号に係り、特に、ビットデータ列のデータサイズを変えることなく暗号化を行なう技術に関する。
【背景技術】
【0002】
ブロック暗号は、ブロックと呼ばれる固定長のデータを単位として暗号化復号を行う暗号方式であり、DES、AES、Triple−DES等のアルゴリズムが知られている。ブロック暗号は、ビット単位やバイト単位で暗号化を行うストリーム暗号と比較して、処理負荷が軽く、ハードウェア化も容易であるという特徴を有し、ブロック暗号に対応したアクセラレータを内蔵したCPUチップ等が数多く商品化されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−153228号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ブロック暗号は、ブロック単位で暗号化処理および復号処理を行なうため、暗号対象のビットデータ列のサイズがブロックサイズの整数倍でない場合には、パディング処理によりデータサイズをブロックサイズの整数倍にしてから暗号化を行なう必要がある。パディング処理を行なうことにより、ビットデータ列のサイズが不定のストリームデータ等にもブロック暗号を適用することができるようになるが、暗号化されたビットデータ列は、暗号化前のビットデータ列よりもデータサイズが大きくなってしまうことになる。
【0005】
しかしながら、暗号の用途等によっては、暗号化によりデータサイズが大きくなることを避けたい場合もある。そこで、本発明は、ブロック暗号化対象のビットデータ列がブロックサイズの整数倍でない場合でも、暗号化前と暗号化後とでデータサイズを変化させないことを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するため、本発明の第1の態様である暗号化装置は、入力データ列をmビットのブロック単位でブロック暗号化するブロック暗号化手段と、前記入力データ列を、mビットのブロック単位で前記ブロック暗号化手段によって順次暗号化させると共に、前記入力データ列の最終ブロックがmビットにaビット分足らない場合に、前記最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾aビットを前記最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを前記ブロック暗号化手段によって暗号化させて暗号化最終ブロックを得て、前記最終ブロック直前のブロックの暗号化ブロックにおける末尾aビットが、前記暗号化最終ブロックの末尾aビットに置換された暗号化ブロックを、前記最終ブロック直前のブロックの新たな暗号化ブロックとし、前記暗号化最終ブロックの先頭(m−a)ビット部分を新たな暗号化最終ブロックとする制御手段と、前記制御手段による制御処理により得られた各暗号化ブロックを、前記入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力手段と、を備える。
【0007】
上記課題を解決するため、本発明の第2の態様である復号装置は、mビットのブロック単位でブロック暗号化されている入力暗号化データ列の復号を行なう復号手段と、前記入力暗号化データ列を、mビットのブロック単位で前記復号手段によって順次復号させると共に、前記入力暗号化データ列の最終ブロックがmビットにaビット分足らない場合に、前記最終ブロック直前のブロックの末尾aビットを前記最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを前記復号手段によって復号させて復号済最終ブロックを得て、前記最終ブロック直前のブロックの末尾aビットが、前記復号済最終ブロックの末尾aビットに置換されたブロックを前記復号手段によって復号させて、前記最終ブロック直前のブロックの復号済ブロックとし、前記復号済最終ブロックの先頭(m−a)ビット部分を新たな復号済最終ブロックとする制御手段と、前記制御手段による制御処理により得られた各復号済みブロックを、前記入力暗号化データ列におけるブロック順に対応する順に並べた復号データ列を出力する出力手段と、を備える。
【0008】
上記課題を解決するため、本発明の第3の態様である暗号化方法は、入力データ列を、mビットのブロック単位で順次暗号化すると共に、前記入力データ列の最終ブロックがmビットにaビット分足らない場合に、前記最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾aビットを前記最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを暗号化して暗号化最終ブロックを得て、前記最終ブロック直前のブロックの暗号化ブロックにおける末尾aビットが、前記暗号化最終ブロックの末尾aビットに置換された暗号化ブロックを、前記最終ブロック直前のブロックの新たな暗号化ブロックとし、前記暗号化最終ブロックの先頭(m−a)ビット部分を新たな暗号化最終ブロックとする制御処理と、前記制御処理により得られた各暗号化ブロックを、前記入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力処理と、を行なう。
【0009】
上記課題を解決するため、本発明の第4の態様である復号方法は、mビットのブロック単位でブロック暗号化されている入力暗号化データ列を、mビットのブロック単位で順次復号すると共に、前記入力暗号化データ列の最終ブロックがmビットにaビット分足らない場合に、前記最終ブロック直前のブロックの末尾aビットを前記最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを復号して復号済最終ブロックを得て、前記最終ブロック直前のブロックの末尾aビットが、前記復号済最終ブロックの末尾aビットに置換されたブロックを復号して、前記最終ブロック直前のブロックの復号済ブロックとし、前記復号済最終ブロックの先頭(m−a)ビット部分を新たな復号済最終ブロックとする制御処理と、前記制御処理により得られた各復号済みブロックを、前記入力暗号化データ列におけるブロック順に対応する順に並べた復号データ列を出力する出力処理と、を行なう。
【0010】
上記課題を解決するため、本発明の第5の態様であるプログラムは、入力データ列をmビットのブロック単位でブロック暗号化するブロック暗号化手段と、前記入力データ列を、mビットのブロック単位で前記ブロック暗号化手段によって順次暗号化させると共に、前記入力データ列の最終ブロックがmビットにaビット分足らない場合に、前記最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾aビットを前記最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを前記ブロック暗号化手段によって暗号化させて暗号化最終ブロックを得て、前記最終ブロック直前のブロックの暗号化ブロックにおける末尾aビットが、前記暗号化最終ブロックの末尾aビットに置換された暗号化ブロックを、前記最終ブロック直前のブロックの新たな暗号化ブロックとし、前記暗号化最終ブロックの先頭(m−a)ビット部分を新たな暗号化最終ブロックとする制御手段と、前記制御手段による制御処理により得られた各暗号化ブロックを、前記入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力手段として情報処理装置を機能させる。
【0011】
上記課題を解決するため、本発明の第6の態様であるプログラムは、mビットのブロック単位でブロック暗号化されている入力暗号化データ列の復号を行なう復号手段と、前記入力暗号化データ列を、mビットのブロック単位で前記復号手段によって順次復号させると共に、前記入力暗号化データ列の最終ブロックがmビットにaビット分足らない場合に、前記最終ブロック直前のブロックの末尾aビットを前記最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを前記復号手段によって復号させて復号済最終ブロックを得て、前記最終ブロック直前のブロックの末尾aビットが、前記復号済最終ブロックの末尾aビットに置換されたブロックを前記復号手段によって復号させて、前記最終ブロック直前のブロックの復号済ブロックとし、前記復号済最終ブロックの先頭(m−a)ビット部分を新たな復号済最終ブロックとする制御手段と、前記制御手段による制御処理により得られた各復号済みブロックを、前記入力暗号化データ列におけるブロック順に対応する順に並べた復号データ列を出力する出力手段と、して情報処理装置を機能させる。
【発明の効果】
【0012】
本発明によれば、ブロック暗号化対象のビットデータ列がブロックサイズの整数倍でない場合でも、暗号化前と暗号化後とでデータサイズを変化させないようにすることができる。
【図面の簡単な説明】
【0013】
【図1】本実施形態の暗号化装置の構成を示すブロック図である。
【図2】本実施形態の復号装置の構成を示すブロック図である。
【図3】暗号化装置におけるブロック暗号処理を説明するフローチャートである。
【図4】暗号化装置におけるブロック暗号処理を説明するフローチャートである。
【図5】ビットデータ列の例を示す図である。
【図6】処理用バッファに格納された最終ブロックと、一時格納バッファに格納された最終ブロックの直前のブロックに対する処理を説明する図である。
【図7】復号装置におけるブロック暗号の復号処理を説明するフローチャートである。
【図8】復号装置におけるブロック暗号の復号処理を説明するフローチャートである。
【図9】処理用バッファに格納された暗号化最終ブロックと、一時格納バッファに格納された最終ブロックの直前の暗号化ブロックに対する処理を説明する図である。
【図10】本発明の第1の適用例としてJpeg圧縮フォーマットであるJFIFデータを暗号化する場合について説明する図である。
【図11】本発明の第2の適用例として映像データをネットワークを経由して記録表示装置に転送する際に、映像データを暗号化する場合について説明する図である。
【図12】本発明の第3の適用例として画像記録装置に入力された映像信号をメディアに記録する場合について説明する図である。
【発明を実施するための形態】
【0014】
本発明の実施の形態について図面を参照して詳細に説明する。図1は、本実施形態の暗号化装置の構成を示すブロック図である。暗号化装置10は、Kビットのビットデータ列を入力し、ブロック暗号による暗号化処理を施してKビットの暗号化ビットデータ列を出力する。ただし、ビットデータ列入力時に、そのデータサイズがKビットであることが判明していなくてもよい。暗号化装置10は、CPU、メモリ、通信制御装置、入出力インタフェース等を備えた汎用的な情報処理装置あるいは専用装置等を用いて構成することができる。
【0015】
図1に示すように、暗号化装置10は、データ入力部110、暗号化制御部120、処理用バッファ130、ブロック暗号化部140、一時格納バッファ150、データ出力部160を備えている。暗号化制御部120、ブロック暗号化部140は、例えば、暗号処理用に開発されたソフトウェアにより構成することができる。あるいはハードウェアで構成するようにしてもよい。
【0016】
ブロック暗号化部140は、mビットをブロックサイズとしてブロック暗号化処理を行なう。ブロック暗号化部140が行なうブロック暗号化処理では、DES、AES、Triple−DES等の既知のブロック暗号方式を用いることができる。
【0017】
データ入力部110は、暗号化対象となるビットデータ列を入力し、暗号化制御部120の指示に基づいてmビットずつ処理用バッファ130に送る。ただし、ビットデータ列の最終ブロックにおいてmビットにaビット分足らない場合には、パディングを行なうことなく(m−a)ビットを処理用バッファ130に送る。データ入力部110は、例えば、通信回線、記録媒体、他装置等からビットデータ列を入力することができる。
【0018】
処理用バッファ230は、mビットの記憶領域であり、処理用バッファ230に格納されたビットデータ列がブロック暗号化部140により暗号化される。一時格納バッファ150は、処理用バッファ230で暗号化処理が施された暗号化データを一時的に格納するmビットの記憶領域である。
【0019】
データ出力部160は、暗号化されたビットデータ列を出力する。データ出力部160は、例えば、通信回線、記録媒体、他装置等に対して暗号化されたビットデータ列を出力することができる。
【0020】
暗号化制御部120は、暗号化装置10におけるブロック暗号化処理の制御を行なう。特に、ビットデータ列の最終ブロックにおいてmビットにaビット分足らない場合に、一時格納バッファ150に格納されている直前のブロックの暗号化済データの一部を用いて最終ブロックのブロック暗号化処理を行なうようにする。具体的には、最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾aビットを最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを暗号化して暗号化最終ブロックを得て、最終ブロック直前のブロックの暗号化ブロックにおける末尾aビットが、暗号化最終ブロックの末尾aビットに置換された暗号化ブロックを、最終ブロック直前のブロックの新たな暗号化ブロックとし、暗号化最終ブロックの先頭(m−a)ビット部分を新たな暗号化最終ブロックとする。
【0021】
図2は、本実施形態の復号装置の構成を示すブロック図である。復号装置20は、Kビットの暗号化ビットデータ列を入力し、ブロック暗号による復号処理を施してKビットの平文ビットデータ列を出力する。ただし、暗号化ビットデータ列入力時に、そのデータがKビットであることが判明していなくてもよい。復号装置20は、CPU、メモリ、通信制御装置、入出力インタフェース等を備えた汎用的な情報処理装置あるいは専用装置等を用いて構成することができる。
【0022】
図2に示すように、復号装置20は、データ入力部210、復号制御部220、処理用バッファ230、ブロック暗号復号部240、一時格納バッファ250、データ出力部260を備えている。復号制御部220、ブロック暗号復号部240は、例えば、復号処理用に開発されたソフトウェアにより構成することができる。あるいはハードウェアで構成するようにしてもよい。
【0023】
ブロック暗号復号部240は、mビットをブロックサイズとしたブロック暗号の復号処理を行なう。ブロック暗号復号部240が行なう復号処理は、暗号化装置10のブロック暗号化部140で用いている暗号化方式に対応させる。
【0024】
データ入力部210は、暗号化ビットデータ列を入力し、復号制御部220の指示に基づいてmビットずつ処理用バッファ230に送る。ただし、暗号化ビットデータ列の最終ブロックにおいてmビットにaビット分足らない場合には、そのまま(m−a)ビットを処理用バッファ230に送る。データ入力部210は、例えば、通信回線、記録媒体、他装置等から暗号化ビットデータ列を入力することができる。
【0025】
処理用バッファ230は、mビットの記憶領域であり、処理用バッファ230に格納された暗号化ビットデータ列がブロック暗号復号部240により復号される。一時格納バッファ250は、処理用バッファ230に送られた暗号化データを一時的に格納するmビットの記憶領域である。
【0026】
データ出力部260は、復号により平文化されたビットデータ列を出力する。データ出力部260は、例えば、通信回線、記録媒体、他装置等に対して平文化されたビットデータ列を出力することができる。
【0027】
復号制御部220は、復号装置20におけるブロック暗号の復号処理の制御を行なう。特に、暗号化ビットデータ列の最終ブロックにおいてmビットにaビット分足らない場合に、一時格納バッファ150に格納されている直前のブロックの暗号化データの一部を用いて最終ブロックの復号処理を行ない、さらに、最終ブロックの復号済データの一部を用いて最終ブロックの直前の暗号化ブロックの復号処理を行なうようにする。具体的には、最終ブロック直前のブロックの末尾aビットを最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを復号して復号済最終ブロックを得て、最終ブロック直前のブロックの末尾aビットが、復号済最終ブロックの末尾aビットに置換されたブロックを復号して、最終ブロック直前のブロックの復号済ブロックとし、復号済最終ブロックの先頭(m−a)ビット部分を新たな復号済最終ブロックとする。
【0028】
次に、暗号化装置10におけるブロック暗号処理について図3、図4のフローチャートを参照して説明する。
【0029】
ブロック暗号化処理では、まず、データ入力部110が暗号化対象のビットデータ列の入力を開始する(S101)。ここで、ビットデータ列は、例えば、図5に示すように、Kビットであるとする。ただし、ビットデータ列の入力の際にビットデータ列のサイズは不明であってもよい。暗号化装置10は、このビットデータ列をmビットのブロックごとにブロック暗号化処理を行なう。最終ブロックをブロックnとすると、ビットデータ列のサイズKビットがmビットの整数倍とは限らないため、ブロックnにおいては、mビットにaビット分足らない可能性がある。
【0030】
暗号化制御部120は、ビットデータ列の入力順に従って、mビットのブロックサイズ単位でビットデータ列を処理用バッファ130に格納する(S102)。なお、以降の処理は、データ入力部110において全データの入力完了を待つことなく行なうことができる。
【0031】
処理用バッファ130に格納したビットデータ列のブロックが開始ブロックであれば(S103:No、S104:Yes)、ブロック暗号化部140を用いて、処理用バッファ130に格納したビットデータ列にブロック暗号化を施す(S106)。この結果、処理用バッファ130は暗号化されたビットデータ列に置き換わる。ただし、暗号化されたビットデータ列を格納するための別のバッファを設けるようにしてもよい。
【0032】
暗号化されたビットデータ列は即座には出力せずに、一時格納バッファ150に退避させる(S107)。これは、最終ブロックにおいてmビットにaビット分足らない場合には、最終ブロックの直前のブロックの暗号化ビットデータ列の一部を利用するからである。このため、最終ブロックの直前のブロックの暗号化ビットデータ列であることがあらかじめ判別できる場合には、最終ブロックの直前のブロックの暗号化ビットデータ列のみを一時格納バッファ150に退避させ、それ以前のブロックの暗号化ビットデータ列は即座に出力するようにしてもよい。
【0033】
処理(S102)に戻って、次のブロックのビットデータ列を処理用バッファ130に格納する。処理用バッファ130に格納したビットデータ列のブロックが最終ブロックでなく(S103:No)、開始ブロックでもない(S104:No)場合には、一時格納バッファ150に格納されている直前のブロックの暗号化ビットデータ列を、データ出力部160を介して出力する(S105)。そして、処理用バッファ130に格納したビットデータ列にブロック暗号化を施し(S106)、一時格納バッファ150に退避させる(S107)。
【0034】
処理用バッファ130に格納したビットデータ列のブロックが最終ブロックの場合(S103:Yes)には、最終ブロックのビットデータ列がmビットに不足するかどうかを判断する(S108)。不足しない場合(S108:No)は、前のブロックと同様に、一時格納バッファ150に格納されている直前のブロックの暗号化ビットデータ列を、データ出力部160を介して出力し(S109)、処理用バッファ130に格納した最終ブロックのビットデータ列にブロック暗号化を施す(S110)。暗号化された最終ブロックのビットデータ列は、一時格納バッファ150に格納することなくデータ出力部160を介して出力することができる(S111)。ただし、一時格納バッファ150を経由して出力するようにしてもよい。
【0035】
最終ブロックであるブロックnのビットデータ列がmビットにaビット不足する場合(S108:Yes)の処理について図4のフローチャートに加え、図6を参照して説明する。図6は、処理用バッファ130に格納された最終ブロック(ブロックn)と、一時格納バッファ150に格納された最終ブロックの直前のブロック(ブロックn−1)に対する処理を説明する図である。ブロックnのビットデータ列がmビットにaビット不足するため、図6(a)に示すように一時格納バッファ150には、mビットの暗号化ブロックn−1が格納され、処理用バッファ130には(m−a)ビットのブロックnが格納されている。
【0036】
この状態から、図6(b)に示すように、一時格納バッファ150に格納されているブロック(n−1)の暗号化ビットデータ列から末尾aビットを抽出する(S112)。そして、図6(c)に示すように、抽出した末尾aビットを最終ブロックnの末尾に付加する(S113)。
【0037】
これにより、処理用バッファ130がmビットのデータ列で埋まるため、処理用バッファ130に格納したビットデータ列に対して、ブロック暗号化部140を用いてブロック暗号化を施す(S114)。この結果、図6(d)に示すように処理用バッファ130にはmビットの暗号化ビットデータ列からなる暗号化ブロックnが格納される。このとき、最終ブロックnの末尾aビットは、二重にブロック暗号化されていることになる。
【0038】
次に、図6(e)に示すように、処理用バッファ130に格納されている暗号化ブロックnの暗号化ビットデータ列から末尾aビットを抽出する(S115)。そして、図6(f)に示すように、抽出した末尾aビットで一時格納バッファ150に格納されている暗号化ブロック(n−1)の末尾aビットを置換し(S116)、末尾aビットが置換された暗号化ブロック(n−1)の暗号化ビットデータ列を、データ出力部160を介して出力する(S117)。
【0039】
最後に、図6(f)に示すように処理用バッファ130に格納されている暗号化ブロックnの暗号化ビットデータ列の先頭(m−a)ビットを、データ出力部160を介して出力する(S118)。これにより、暗号化前のビットデータ列と同じサイズであるKビットの暗号化ビットデータ列が出力されることになる。
【0040】
次に、復号装置20におけるブロック暗号の復号処理について図7、図8のフローチャートを参照して説明する。復号処理は、基本的に暗号化装置10におけるブロック暗号化処理の逆の処理を行なえばよい。
【0041】
ブロック暗号の復号処理では、まず、データ入力部210が復号対象の暗号化ビットデータ列の入力を開始する(S201)。暗号化ビットデータ列の入力の際に暗号化ビットデータ列のサイズは不明であってもよい。復号装置20は、この暗号化ビットデータ列をmビットのブロックごとにブロック暗号の復号処理を行なう。最終ブロックをブロックnとすると、暗号化ビットデータ列のサイズKビットがmビットの整数倍とは限らないため、ブロックnにおいては、mビットにaビット分足らない可能性がある。
【0042】
復号制御部220は、暗号化ビットデータ列の入力順に従って、mビットのブロックサイズ単位でビットデータ列を処理用バッファ230に格納する(S202)。なお、以降の処理は、全データの入力完了を待つことなく行なうことができる。
【0043】
処理用バッファ230に格納した暗号化ビットデータ列のブロックが最終ブロックでなければ(S203:No)、処理用バッファ230に格納した暗号化ビットデータ列を一時格納バッファ250にコピーする(S204)。これは、最終ブロックにおいてmビットにaビット分足らない場合には、最終ブロックの直前の暗号化ブロックの暗号化ビットデータ列の一部を利用するからである。このため、最終ブロックの直前のブロックの暗号化ビットデータ列であることがあらかじめ判別できる場合には、最終ブロックの直前のブロックの暗号化ビットデータ列のみを一時格納バッファ250にコピーするようにしてもよい。
【0044】
そして、ブロック暗号復号部240を用いて、処理用バッファ230に格納した暗号化ビットデータ列を復号する(S205)。この結果、処理用バッファ230は復号された平文のビットデータ列に置き換わる。ただし、復号された平文のビットデータ列を格納する別のバッファを設けるようにしてもよい。次いで、処理用バッファ230に格納されている復号された平文のビットデータ列を、データ出力部260を介して出力する(S206)。
【0045】
処理用バッファ230に格納した暗号化ビットデータ列のブロックが最終ブロックの場合(S203:Yes)には、暗号化最終ブロックの暗号化ビットデータ列がmビットに不足するかどうかを判断する(S207)。不足しない場合(S207:No)は、前のブロックと同様に、ブロック暗号復号部240を用いて、処理用バッファ230に格納した暗号化ビットデータ列を復号し(S208)、復号された平文のビットデータ列を、データ出力部260を介して出力する(S209)。
【0046】
最終ブロックであるブロックnのビットデータ列がmビットにaビット不足する場合(S207:Yes)の処理について図8のフローチャートに加え、図9を参照して説明する。図9は、処理用バッファ230に格納された暗号化最終ブロック(暗号化ブロックn)と、一時格納バッファ250に格納された最終ブロックの直前の暗号化ブロック(暗号化ブロックn−1)に対する処理を説明する図である。暗号化ブロックnのビットデータ列がmビットにaビット不足するため、図9(a)に示すように一時格納バッファ250には、mビットの暗号化ブロックn−1が格納され、処理用バッファ230には(m−a)ビットの暗号化ブロックnが格納されている。
【0047】
この状態から、図9(b)に示すように、一時格納バッファ250に格納されている暗号化ブロック(n−1)の暗号化ビットデータ列から末尾aビットを抽出する(S210)。末尾aビットは暗号化装置10によって二重にブロック暗号化されている部分である。そして、図9(c)に示すように、抽出した末尾aビットを最終暗号化ブロックnの末尾に付加する(S211)。
【0048】
これにより、処理用バッファ230がmビットの暗号化データ列で埋まるため、処理用バッファ230に格納した暗号化ビットデータ列に対して、ブロック暗号復号部240を用いてブロック暗号の復号処理を施す(S212)。この結果、図9(d)に示すように処理用バッファ230にはmビットのビットデータ列からなるブロックnが格納される。
【0049】
次に、図9(e)に示すように、処理用バッファ230に格納されているブロックnのビットデータ列から末尾aビットを抽出する(S213)。そして、図9(f)に示すように、抽出した末尾aビットで一時格納バッファ250に格納されている最終ブロックの直前の暗号化ブロック(n−1)の末尾aビットを置換する(S214)。次いで、末尾aビットが置換された暗号化ブロック(n−1)の暗号化ビットデータ列に対して、ブロック暗号復号部240を用いてブロック暗号の復号処理を施す(S215)。この結果、図9(g)に示すように一時格納バッファ250にはmビットの平文ビットデータ列からなるブロックn−1が格納される。この平文ビットデータ列を、データ出力部260を介して出力する(S216)。
【0050】
最後に、図9(g)に示すように処理用バッファ230に格納されているブロックnのビットデータ列の先頭(m−a)ビットを、データ出力部260を介して出力する(S217)。これにより、暗号化ビットデータ列と同じサイズであるKビットの平文ビットデータ列が出力されることになる。
【0051】
なお、上記の実施形態では、最終ブロックがmビットにaビット不足する場合に、最終ブロックの直前のブロックを利用して暗号化、復号を行なうようにしていたが、最終ブロックあるいは最終ブロックの直前のブロックに代えて他のブロックを用いるようにしてもよい。
【0052】
以下に、本発明の適用例について説明する。まず、第1の適用例としてJpeg圧縮フォーマットであるJFIFで記録された画像データを暗号化する場合について図10を参照して説明する。画像データを暗号化する場合に、そのフォーマットを維持したいときには、画像データ中のフレーム部分のみ暗号化することが行なわれる。例えば、図10に示すようなJFIFで記録された画像データ400においては、フレーム部401のみの暗号化を行ない、ヘッダ部分は暗号化を行なわないようにする。
【0053】
一般にフレーム部のサイズは、画像データにより異なる。このため、従来は、mビット単位のブロック暗号化を行なう場合に、最終ブロックがmビットに満たないときはパディング処理を施した上でブロック暗号化を行なわなければならなかった。このとき、暗号化前のフレーム部と暗号化後のフレーム部とでデータサイズが異なることになるため、ヘッダ部に新たな情報を付加する等の処理が必要になり、JFIFフォーマットを変更せざるを得なかった。これを避けるために、mビットに満たない最終ブロックについては暗号化を行なわないことも考えられるが、その分解読に対する頑健性が損なわれることになる。
【0054】
これに対し、本発明を適用すると暗号化された画像データ410の暗号化フレーム部411のデータサイズは、暗号化前のフレーム部401のデータサイズと等しくなるため、JFIFフォーマットを変更する必要がなくなる。
【0055】
ここではJpeg圧縮フォーマットであるJFEFでの例を示したが、一般的にフォーマットが決まっているデータ内の一部分のみを暗号化し、フォーマットそのものは暗号化前の状態を維持したい場合には、同様の効果がある。
【0056】
次に、本発明の第2の適用例として映像データをパケット化し、ネットワークを経由して記録表示装置に転送する際に、映像データのパケットを暗号化する場合について図11を参照して説明する。本図において、撮像装置70は、映像を撮影し、転送するために映像データをパケット化する。そして、本発明を適用した暗号処理部71でパケットをブロック暗号化する。そして暗号化されたパケットを、ネットワーク74を介して画像記録表示装置76に送信する。画像記録表示装置76は、暗号化されたパケットを受信すると本発明を適用した復号処理部77で復号処理を行ない、得られたパケットで構成される映像データの記録表示を行なう。
【0057】
パケットのサイズはアプリケーションや、ネットワーク装置等に応じて変化するため、暗号化に際して従来のブロック暗号化を行なうと、ブロックサイズに満たないブロックが発生し、パディング処理によってパケットデータサイズが変化したり、転送データ量が増加したりしてしまう。これに対し、本発明を適用した暗号化処理部71および復号処理部77を用いると、暗号化後のパケットデータサイズは暗号化前のパケットサイズを維持し、また、転送データ量も暗号化前と変化することがない。
【0058】
最後に、本発明の第3の適用例として画像記録装置に入力された映像信号を記録メディアに記録する場合について図12を参照して説明する。本図において、記録メディア83は、サイズの変更が不可能な特定長の物理セクタ82から構成されているものとする。物理セクタ82をセクタ長単位でブロック暗号を用いて暗号化しようとした場合、従来のブロック暗号では、セクタ長がブロックサイズの整数倍でないと最終ブロックは暗号化することができなくなり、解読に対する頑健性が損なわれていた。これに対し、本発明を適用した暗号処理部81を備えた画像記録装置80であれば、セクタ長に関わらず、全ブロックを暗号化することが可能となり、解読に対する頑健性が損なわれることがない。
【0059】
ここでは画像記録装置での例を示したが、一般的なデータ記録においても、サイズの変更が困難な物理セクタを持つメディアを、物理セクタ単位で暗号化したい場合には、同様の効果がある。
【0060】
以上説明したように、本実施形態によれば、実装化が容易であるブロック暗号方式において、ブロック暗号化対象のビットデータ列がブロックサイズの整数倍でない場合でも、暗号化前と暗号化後とでデータサイズを変化させないようにすることができるようになる。
【符号の説明】
【0061】
10…暗号化装置
20…復号装置
70…撮像装置
71…暗号化処理部
71…暗号処理部
74…ネットワーク
76…画像記録表示装置
77…復号処理部
80…画像記録装置
81…暗号処理部
82…物理セクタ
83…記録メディア
110…データ入力部
120…暗号化制御部
130…処理用バッファ
140…ブロック暗号化部
150…一時格納バッファ
160…データ出力部
210…データ入力部
220…復号制御部
230…処理用バッファ
240…ブロック暗号復号部
250…一時格納バッファ
260…データ出力部
400…画像データ
401…フレーム部
410…暗号化画像データ
411…暗号化フレーム部

【特許請求の範囲】
【請求項1】
入力データ列をmビットのブロック単位でブロック暗号化するブロック暗号化手段と、
前記入力データ列を、mビットのブロック単位で前記ブロック暗号化手段によって順次暗号化させると共に、
前記入力データ列の最終ブロックがmビットにaビット分足らない場合に、前記最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾aビットを前記最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを前記ブロック暗号化手段によって暗号化させて暗号化最終ブロックを得て、前記最終ブロック直前のブロックの暗号化ブロックにおける末尾aビットが、前記暗号化最終ブロックの末尾aビットに置換された暗号化ブロックを、前記最終ブロック直前のブロックの新たな暗号化ブロックとし、前記暗号化最終ブロックの先頭(m−a)ビット部分を新たな暗号化最終ブロックとする制御手段と、
前記制御手段による制御処理により得られた各暗号化ブロックを、前記入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力手段と、を備えたことを特徴とする暗号化装置。
【請求項2】
mビットのブロック単位でブロック暗号化されている入力暗号化データ列の復号を行なう復号手段と、
前記入力暗号化データ列を、mビットのブロック単位で前記復号手段によって順次復号させると共に、
前記入力暗号化データ列の最終ブロックがmビットにaビット分足らない場合に、前記最終ブロック直前のブロックの末尾aビットを前記最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを前記復号手段によって復号させて復号済最終ブロックを得て、前記最終ブロック直前のブロックの末尾aビットが、前記復号済最終ブロックの末尾aビットに置換されたブロックを前記復号手段によって復号させて、前記最終ブロック直前のブロックの復号済ブロックとし、前記復号済最終ブロックの先頭(m−a)ビット部分を新たな復号済最終ブロックとする制御手段と、
前記制御手段による制御処理により得られた各復号済みブロックを、前記入力暗号化データ列におけるブロック順に対応する順に並べた復号データ列を出力する出力手段と、を備えたことを特徴とする復号装置。
【請求項3】
入力データ列を、mビットのブロック単位で順次暗号化すると共に、
前記入力データ列の最終ブロックがmビットにaビット分足らない場合に、前記最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾aビットを前記最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを暗号化して暗号化最終ブロックを得て、前記最終ブロック直前のブロックの暗号化ブロックにおける末尾aビットが、前記暗号化最終ブロックの末尾aビットに置換された暗号化ブロックを、前記最終ブロック直前のブロックの新たな暗号化ブロックとし、前記暗号化最終ブロックの先頭(m−a)ビット部分を新たな暗号化最終ブロックとする制御処理と、
前記制御処理により得られた各暗号化ブロックを、前記入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力処理と、を行なうことを特徴とする暗号化方法。
【請求項4】
mビットのブロック単位でブロック暗号化されている入力暗号化データ列を、mビットのブロック単位で順次復号すると共に、
前記入力暗号化データ列の最終ブロックがmビットにaビット分足らない場合に、前記最終ブロック直前のブロックの末尾aビットを前記最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを復号して復号済最終ブロックを得て、前記最終ブロック直前のブロックの末尾aビットが、前記復号済最終ブロックの末尾aビットに置換されたブロックを復号して、前記最終ブロック直前のブロックの復号済ブロックとし、前記復号済最終ブロックの先頭(m−a)ビット部分を新たな復号済最終ブロックとする制御処理と、
前記制御処理により得られた各復号済みブロックを、前記入力暗号化データ列におけるブロック順に対応する順に並べた復号データ列を出力する出力処理と、を行なうことを特徴とする復号方法。
【請求項5】
入力データ列をmビットのブロック単位でブロック暗号化するブロック暗号化手段と、
前記入力データ列を、mビットのブロック単位で前記ブロック暗号化手段によって順次暗号化させると共に、
前記入力データ列の最終ブロックがmビットにaビット分足らない場合に、前記最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾aビットを前記最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを前記ブロック暗号化手段によって暗号化させて暗号化最終ブロックを得て、前記最終ブロック直前のブロックの暗号化ブロックにおける末尾aビットが、前記暗号化最終ブロックの末尾aビットに置換された暗号化ブロックを、前記最終ブロック直前のブロックの新たな暗号化ブロックとし、前記暗号化最終ブロックの先頭(m−a)ビット部分を新たな暗号化最終ブロックとする制御手段と、
前記制御手段による制御処理により得られた各暗号化ブロックを、前記入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力手段として情報処理装置を機能させるプログラム。
【請求項6】
mビットのブロック単位でブロック暗号化されている入力暗号化データ列の復号を行なう復号手段と、
前記入力暗号化データ列を、mビットのブロック単位で前記復号手段によって順次復号させると共に、
前記入力暗号化データ列の最終ブロックがmビットにaビット分足らない場合に、前記最終ブロック直前のブロックの末尾aビットを前記最終ブロックの末尾に付加して、その末尾aビットを付加した最終ブロックを前記復号手段によって復号させて復号済最終ブロックを得て、前記最終ブロック直前のブロックの末尾aビットが、前記復号済最終ブロックの末尾aビットに置換されたブロックを前記復号手段によって復号させて、前記最終ブロック直前のブロックの復号済ブロックとし、前記復号済最終ブロックの先頭(m−a)ビット部分を新たな復号済最終ブロックとする制御手段と、
前記制御手段による制御処理により得られた各復号済みブロックを、前記入力暗号化データ列におけるブロック順に対応する順に並べた復号データ列を出力する出力手段と、して情報処理装置を機能させるプログラム。

【図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


【公開番号】特開2010−204475(P2010−204475A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2009−51061(P2009−51061)
【出願日】平成21年3月4日(2009.3.4)
【出願人】(000004329)日本ビクター株式会社 (3,896)
【Fターム(参考)】