(57)【要約】【課題】暗号化対象の入力データ列がブロックサイズの整数倍でない場合でも、暗号化前後でデータサイズを変化させないようにする。【解決手段】ｍビット単位で暗号化を行なうブロック暗号化部と、入力データ列を順次暗号化する共に、最終ブロックがｍビットにａビット分足らない場合に、最終ブロック直前の暗号化ブロックの末尾ａビットを最終ブロックの末尾に付加し、暗号化して暗号化最終ブロックを得て、最終ブロック直前の暗号化ブロックにおける末尾ａビットが、暗号化最終ブロックの末尾ａビットに置換された暗号化ブロックを、最終ブロック直前のブロックの新たな暗号化ブロックとし、暗号化最終ブロックの先頭（ｍ−ａ）ビット部分を新たな暗号化最終ブロックとする暗号化制御部と、得られた各暗号化ブロックを、入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力部とを備えた暗号化装置。【選択図】図１
2010204475.tif 000002
【特許請求の範囲】
【請求項１】
入力データ列をｍビットのブロック単位でブロック暗号化するブロック暗号化手段と、
前記入力データ列を、ｍビットのブロック単位で前記ブロック暗号化手段によって順次暗号化させると共に、
前記入力データ列の最終ブロックがｍビットにａビット分足らない場合に、前記最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾ａビットを前記最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを前記ブロック暗号化手段によって暗号化させて暗号化最終ブロックを得て、前記最終ブロック直前のブロックの暗号化ブロックにおける末尾ａビットが、前記暗号化最終ブロックの末尾ａビットに置換された暗号化ブロックを、前記最終ブロック直前のブロックの新たな暗号化ブロックとし、前記暗号化最終ブロックの先頭（ｍ−ａ）ビット部分を新たな暗号化最終ブロックとする制御手段と、
前記制御手段による制御処理により得られた各暗号化ブロックを、前記入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力手段と、を備えたことを特徴とする暗号化装置。
【請求項２】
ｍビットのブロック単位でブロック暗号化されている入力暗号化データ列の復号を行なう復号手段と、
前記入力暗号化データ列を、ｍビットのブロック単位で前記復号手段によって順次復号させると共に、
前記入力暗号化データ列の最終ブロックがｍビットにａビット分足らない場合に、前記最終ブロック直前のブロックの末尾ａビットを前記最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを前記復号手段によって復号させて復号済最終ブロックを得て、前記最終ブロック直前のブロックの末尾ａビットが、前記復号済最終ブロックの末尾ａビットに置換されたブロックを前記復号手段によって復号させて、前記最終ブロック直前のブロックの復号済ブロックとし、前記復号済最終ブロックの先頭（ｍ−ａ）ビット部分を新たな復号済最終ブロックとする制御手段と、
前記制御手段による制御処理により得られた各復号済みブロックを、前記入力暗号化データ列におけるブロック順に対応する順に並べた復号データ列を出力する出力手段と、を備えたことを特徴とする復号装置。
【請求項３】
入力データ列を、ｍビットのブロック単位で順次暗号化すると共に、
前記入力データ列の最終ブロックがｍビットにａビット分足らない場合に、前記最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾ａビットを前記最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを暗号化して暗号化最終ブロックを得て、前記最終ブロック直前のブロックの暗号化ブロックにおける末尾ａビットが、前記暗号化最終ブロックの末尾ａビットに置換された暗号化ブロックを、前記最終ブロック直前のブロックの新たな暗号化ブロックとし、前記暗号化最終ブロックの先頭（ｍ−ａ）ビット部分を新たな暗号化最終ブロックとする制御処理と、
前記制御処理により得られた各暗号化ブロックを、前記入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力処理と、を行なうことを特徴とする暗号化方法。
【請求項４】
ｍビットのブロック単位でブロック暗号化されている入力暗号化データ列を、ｍビットのブロック単位で順次復号すると共に、
前記入力暗号化データ列の最終ブロックがｍビットにａビット分足らない場合に、前記最終ブロック直前のブロックの末尾ａビットを前記最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを復号して復号済最終ブロックを得て、前記最終ブロック直前のブロックの末尾ａビットが、前記復号済最終ブロックの末尾ａビットに置換されたブロックを復号して、前記最終ブロック直前のブロックの復号済ブロックとし、前記復号済最終ブロックの先頭（ｍ−ａ）ビット部分を新たな復号済最終ブロックとする制御処理と、
前記制御処理により得られた各復号済みブロックを、前記入力暗号化データ列におけるブロック順に対応する順に並べた復号データ列を出力する出力処理と、を行なうことを特徴とする復号方法。
【請求項５】
入力データ列をｍビットのブロック単位でブロック暗号化するブロック暗号化手段と、
前記入力データ列を、ｍビットのブロック単位で前記ブロック暗号化手段によって順次暗号化させると共に、
前記入力データ列の最終ブロックがｍビットにａビット分足らない場合に、前記最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾ａビットを前記最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを前記ブロック暗号化手段によって暗号化させて暗号化最終ブロックを得て、前記最終ブロック直前のブロックの暗号化ブロックにおける末尾ａビットが、前記暗号化最終ブロックの末尾ａビットに置換された暗号化ブロックを、前記最終ブロック直前のブロックの新たな暗号化ブロックとし、前記暗号化最終ブロックの先頭（ｍ−ａ）ビット部分を新たな暗号化最終ブロックとする制御手段と、
前記制御手段による制御処理により得られた各暗号化ブロックを、前記入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力手段として情報処理装置を機能させるプログラム。
【請求項６】
ｍビットのブロック単位でブロック暗号化されている入力暗号化データ列の復号を行なう復号手段と、
前記入力暗号化データ列を、ｍビットのブロック単位で前記復号手段によって順次復号させると共に、
前記入力暗号化データ列の最終ブロックがｍビットにａビット分足らない場合に、前記最終ブロック直前のブロックの末尾ａビットを前記最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを前記復号手段によって復号させて復号済最終ブロックを得て、前記最終ブロック直前のブロックの末尾ａビットが、前記復号済最終ブロックの末尾ａビットに置換されたブロックを前記復号手段によって復号させて、前記最終ブロック直前のブロックの復号済ブロックとし、前記復号済最終ブロックの先頭（ｍ−ａ）ビット部分を新たな復号済最終ブロックとする制御手段と、
前記制御手段による制御処理により得られた各復号済みブロックを、前記入力暗号化データ列におけるブロック順に対応する順に並べた復号データ列を出力する出力手段と、して情報処理装置を機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック暗号に係り、特に、ビットデータ列のデータサイズを変えることなく暗号化を行なう技術に関する。
【背景技術】
【０００２】
ブロック暗号は、ブロックと呼ばれる固定長のデータを単位として暗号化復号を行う暗号方式であり、ＤＥＳ、ＡＥＳ、Ｔｒｉｐｌｅ−ＤＥＳ等のアルゴリズムが知られている。ブロック暗号は、ビット単位やバイト単位で暗号化を行うストリーム暗号と比較して、処理負荷が軽く、ハードウェア化も容易であるという特徴を有し、ブロック暗号に対応したアクセラレータを内蔵したＣＰＵチップ等が数多く商品化されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１５３２２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ブロック暗号は、ブロック単位で暗号化処理および復号処理を行なうため、暗号対象のビットデータ列のサイズがブロックサイズの整数倍でない場合には、パディング処理によりデータサイズをブロックサイズの整数倍にしてから暗号化を行なう必要がある。パディング処理を行なうことにより、ビットデータ列のサイズが不定のストリームデータ等にもブロック暗号を適用することができるようになるが、暗号化されたビットデータ列は、暗号化前のビットデータ列よりもデータサイズが大きくなってしまうことになる。
【０００５】
しかしながら、暗号の用途等によっては、暗号化によりデータサイズが大きくなることを避けたい場合もある。そこで、本発明は、ブロック暗号化対象のビットデータ列がブロックサイズの整数倍でない場合でも、暗号化前と暗号化後とでデータサイズを変化させないことを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明の第１の態様である暗号化装置は、入力データ列をｍビットのブロック単位でブロック暗号化するブロック暗号化手段と、前記入力データ列を、ｍビットのブロック単位で前記ブロック暗号化手段によって順次暗号化させると共に、前記入力データ列の最終ブロックがｍビットにａビット分足らない場合に、前記最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾ａビットを前記最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを前記ブロック暗号化手段によって暗号化させて暗号化最終ブロックを得て、前記最終ブロック直前のブロックの暗号化ブロックにおける末尾ａビットが、前記暗号化最終ブロックの末尾ａビットに置換された暗号化ブロックを、前記最終ブロック直前のブロックの新たな暗号化ブロックとし、前記暗号化最終ブロックの先頭（ｍ−ａ）ビット部分を新たな暗号化最終ブロックとする制御手段と、前記制御手段による制御処理により得られた各暗号化ブロックを、前記入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力手段と、を備える。
【０００７】
上記課題を解決するため、本発明の第２の態様である復号装置は、ｍビットのブロック単位でブロック暗号化されている入力暗号化データ列の復号を行なう復号手段と、前記入力暗号化データ列を、ｍビットのブロック単位で前記復号手段によって順次復号させると共に、前記入力暗号化データ列の最終ブロックがｍビットにａビット分足らない場合に、前記最終ブロック直前のブロックの末尾ａビットを前記最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを前記復号手段によって復号させて復号済最終ブロックを得て、前記最終ブロック直前のブロックの末尾ａビットが、前記復号済最終ブロックの末尾ａビットに置換されたブロックを前記復号手段によって復号させて、前記最終ブロック直前のブロックの復号済ブロックとし、前記復号済最終ブロックの先頭（ｍ−ａ）ビット部分を新たな復号済最終ブロックとする制御手段と、前記制御手段による制御処理により得られた各復号済みブロックを、前記入力暗号化データ列におけるブロック順に対応する順に並べた復号データ列を出力する出力手段と、を備える。
【０００８】
上記課題を解決するため、本発明の第３の態様である暗号化方法は、入力データ列を、ｍビットのブロック単位で順次暗号化すると共に、前記入力データ列の最終ブロックがｍビットにａビット分足らない場合に、前記最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾ａビットを前記最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを暗号化して暗号化最終ブロックを得て、前記最終ブロック直前のブロックの暗号化ブロックにおける末尾ａビットが、前記暗号化最終ブロックの末尾ａビットに置換された暗号化ブロックを、前記最終ブロック直前のブロックの新たな暗号化ブロックとし、前記暗号化最終ブロックの先頭（ｍ−ａ）ビット部分を新たな暗号化最終ブロックとする制御処理と、前記制御処理により得られた各暗号化ブロックを、前記入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力処理と、を行なう。
【０００９】
上記課題を解決するため、本発明の第４の態様である復号方法は、ｍビットのブロック単位でブロック暗号化されている入力暗号化データ列を、ｍビットのブロック単位で順次復号すると共に、前記入力暗号化データ列の最終ブロックがｍビットにａビット分足らない場合に、前記最終ブロック直前のブロックの末尾ａビットを前記最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを復号して復号済最終ブロックを得て、前記最終ブロック直前のブロックの末尾ａビットが、前記復号済最終ブロックの末尾ａビットに置換されたブロックを復号して、前記最終ブロック直前のブロックの復号済ブロックとし、前記復号済最終ブロックの先頭（ｍ−ａ）ビット部分を新たな復号済最終ブロックとする制御処理と、前記制御処理により得られた各復号済みブロックを、前記入力暗号化データ列におけるブロック順に対応する順に並べた復号データ列を出力する出力処理と、を行なう。
【００１０】
上記課題を解決するため、本発明の第５の態様であるプログラムは、入力データ列をｍビットのブロック単位でブロック暗号化するブロック暗号化手段と、前記入力データ列を、ｍビットのブロック単位で前記ブロック暗号化手段によって順次暗号化させると共に、前記入力データ列の最終ブロックがｍビットにａビット分足らない場合に、前記最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾ａビットを前記最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを前記ブロック暗号化手段によって暗号化させて暗号化最終ブロックを得て、前記最終ブロック直前のブロックの暗号化ブロックにおける末尾ａビットが、前記暗号化最終ブロックの末尾ａビットに置換された暗号化ブロックを、前記最終ブロック直前のブロックの新たな暗号化ブロックとし、前記暗号化最終ブロックの先頭（ｍ−ａ）ビット部分を新たな暗号化最終ブロックとする制御手段と、前記制御手段による制御処理により得られた各暗号化ブロックを、前記入力データ列におけるブロック順に対応する順に並べた暗号化データ列を出力する出力手段として情報処理装置を機能させる。
【００１１】
上記課題を解決するため、本発明の第６の態様であるプログラムは、ｍビットのブロック単位でブロック暗号化されている入力暗号化データ列の復号を行なう復号手段と、前記入力暗号化データ列を、ｍビットのブロック単位で前記復号手段によって順次復号させると共に、前記入力暗号化データ列の最終ブロックがｍビットにａビット分足らない場合に、前記最終ブロック直前のブロックの末尾ａビットを前記最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを前記復号手段によって復号させて復号済最終ブロックを得て、前記最終ブロック直前のブロックの末尾ａビットが、前記復号済最終ブロックの末尾ａビットに置換されたブロックを前記復号手段によって復号させて、前記最終ブロック直前のブロックの復号済ブロックとし、前記復号済最終ブロックの先頭（ｍ−ａ）ビット部分を新たな復号済最終ブロックとする制御手段と、前記制御手段による制御処理により得られた各復号済みブロックを、前記入力暗号化データ列におけるブロック順に対応する順に並べた復号データ列を出力する出力手段と、して情報処理装置を機能させる。
【発明の効果】
【００１２】
本発明によれば、ブロック暗号化対象のビットデータ列がブロックサイズの整数倍でない場合でも、暗号化前と暗号化後とでデータサイズを変化させないようにすることができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態の暗号化装置の構成を示すブロック図である。
【図２】本実施形態の復号装置の構成を示すブロック図である。
【図３】暗号化装置におけるブロック暗号処理を説明するフローチャートである。
【図４】暗号化装置におけるブロック暗号処理を説明するフローチャートである。
【図５】ビットデータ列の例を示す図である。
【図６】処理用バッファに格納された最終ブロックと、一時格納バッファに格納された最終ブロックの直前のブロックに対する処理を説明する図である。
【図７】復号装置におけるブロック暗号の復号処理を説明するフローチャートである。
【図８】復号装置におけるブロック暗号の復号処理を説明するフローチャートである。
【図９】処理用バッファに格納された暗号化最終ブロックと、一時格納バッファに格納された最終ブロックの直前の暗号化ブロックに対する処理を説明する図である。
【図１０】本発明の第１の適用例としてＪｐｅｇ圧縮フォーマットであるＪＦＩＦデータを暗号化する場合について説明する図である。
【図１１】本発明の第２の適用例として映像データをネットワークを経由して記録表示装置に転送する際に、映像データを暗号化する場合について説明する図である。
【図１２】本発明の第３の適用例として画像記録装置に入力された映像信号をメディアに記録する場合について説明する図である。
【発明を実施するための形態】
【００１４】
本発明の実施の形態について図面を参照して詳細に説明する。図１は、本実施形態の暗号化装置の構成を示すブロック図である。暗号化装置１０は、Ｋビットのビットデータ列を入力し、ブロック暗号による暗号化処理を施してＫビットの暗号化ビットデータ列を出力する。ただし、ビットデータ列入力時に、そのデータサイズがＫビットであることが判明していなくてもよい。暗号化装置１０は、ＣＰＵ、メモリ、通信制御装置、入出力インタフェース等を備えた汎用的な情報処理装置あるいは専用装置等を用いて構成することができる。
【００１５】
図１に示すように、暗号化装置１０は、データ入力部１１０、暗号化制御部１２０、処理用バッファ１３０、ブロック暗号化部１４０、一時格納バッファ１５０、データ出力部１６０を備えている。暗号化制御部１２０、ブロック暗号化部１４０は、例えば、暗号処理用に開発されたソフトウェアにより構成することができる。あるいはハードウェアで構成するようにしてもよい。
【００１６】
ブロック暗号化部１４０は、ｍビットをブロックサイズとしてブロック暗号化処理を行なう。ブロック暗号化部１４０が行なうブロック暗号化処理では、ＤＥＳ、ＡＥＳ、Ｔｒｉｐｌｅ−ＤＥＳ等の既知のブロック暗号方式を用いることができる。
【００１７】
データ入力部１１０は、暗号化対象となるビットデータ列を入力し、暗号化制御部１２０の指示に基づいてｍビットずつ処理用バッファ１３０に送る。ただし、ビットデータ列の最終ブロックにおいてｍビットにａビット分足らない場合には、パディングを行なうことなく（ｍ−ａ）ビットを処理用バッファ１３０に送る。データ入力部１１０は、例えば、通信回線、記録媒体、他装置等からビットデータ列を入力することができる。
【００１８】
処理用バッファ２３０は、ｍビットの記憶領域であり、処理用バッファ２３０に格納されたビットデータ列がブロック暗号化部１４０により暗号化される。一時格納バッファ１５０は、処理用バッファ２３０で暗号化処理が施された暗号化データを一時的に格納するｍビットの記憶領域である。
【００１９】
データ出力部１６０は、暗号化されたビットデータ列を出力する。データ出力部１６０は、例えば、通信回線、記録媒体、他装置等に対して暗号化されたビットデータ列を出力することができる。
【００２０】
暗号化制御部１２０は、暗号化装置１０におけるブロック暗号化処理の制御を行なう。特に、ビットデータ列の最終ブロックにおいてｍビットにａビット分足らない場合に、一時格納バッファ１５０に格納されている直前のブロックの暗号化済データの一部を用いて最終ブロックのブロック暗号化処理を行なうようにする。具体的には、最終ブロック直前のブロックが暗号化された暗号化ブロックの末尾ａビットを最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを暗号化して暗号化最終ブロックを得て、最終ブロック直前のブロックの暗号化ブロックにおける末尾ａビットが、暗号化最終ブロックの末尾ａビットに置換された暗号化ブロックを、最終ブロック直前のブロックの新たな暗号化ブロックとし、暗号化最終ブロックの先頭（ｍ−ａ）ビット部分を新たな暗号化最終ブロックとする。
【００２１】
図２は、本実施形態の復号装置の構成を示すブロック図である。復号装置２０は、Ｋビットの暗号化ビットデータ列を入力し、ブロック暗号による復号処理を施してＫビットの平文ビットデータ列を出力する。ただし、暗号化ビットデータ列入力時に、そのデータがＫビットであることが判明していなくてもよい。復号装置２０は、ＣＰＵ、メモリ、通信制御装置、入出力インタフェース等を備えた汎用的な情報処理装置あるいは専用装置等を用いて構成することができる。
【００２２】
図２に示すように、復号装置２０は、データ入力部２１０、復号制御部２２０、処理用バッファ２３０、ブロック暗号復号部２４０、一時格納バッファ２５０、データ出力部２６０を備えている。復号制御部２２０、ブロック暗号復号部２４０は、例えば、復号処理用に開発されたソフトウェアにより構成することができる。あるいはハードウェアで構成するようにしてもよい。
【００２３】
ブロック暗号復号部２４０は、ｍビットをブロックサイズとしたブロック暗号の復号処理を行なう。ブロック暗号復号部２４０が行なう復号処理は、暗号化装置１０のブロック暗号化部１４０で用いている暗号化方式に対応させる。
【００２４】
データ入力部２１０は、暗号化ビットデータ列を入力し、復号制御部２２０の指示に基づいてｍビットずつ処理用バッファ２３０に送る。ただし、暗号化ビットデータ列の最終ブロックにおいてｍビットにａビット分足らない場合には、そのまま（ｍ−ａ）ビットを処理用バッファ２３０に送る。データ入力部２１０は、例えば、通信回線、記録媒体、他装置等から暗号化ビットデータ列を入力することができる。
【００２５】
処理用バッファ２３０は、ｍビットの記憶領域であり、処理用バッファ２３０に格納された暗号化ビットデータ列がブロック暗号復号部２４０により復号される。一時格納バッファ２５０は、処理用バッファ２３０に送られた暗号化データを一時的に格納するｍビットの記憶領域である。
【００２６】
データ出力部２６０は、復号により平文化されたビットデータ列を出力する。データ出力部２６０は、例えば、通信回線、記録媒体、他装置等に対して平文化されたビットデータ列を出力することができる。
【００２７】
復号制御部２２０は、復号装置２０におけるブロック暗号の復号処理の制御を行なう。特に、暗号化ビットデータ列の最終ブロックにおいてｍビットにａビット分足らない場合に、一時格納バッファ１５０に格納されている直前のブロックの暗号化データの一部を用いて最終ブロックの復号処理を行ない、さらに、最終ブロックの復号済データの一部を用いて最終ブロックの直前の暗号化ブロックの復号処理を行なうようにする。具体的には、最終ブロック直前のブロックの末尾ａビットを最終ブロックの末尾に付加して、その末尾ａビットを付加した最終ブロックを復号して復号済最終ブロックを得て、最終ブロック直前のブロックの末尾ａビットが、復号済最終ブロックの末尾ａビットに置換されたブロックを復号して、最終ブロック直前のブロックの復号済ブロックとし、復号済最終ブロックの先頭（ｍ−ａ）ビット部分を新たな復号済最終ブロックとする。
【００２８】
次に、暗号化装置１０におけるブロック暗号処理について図３、図４のフローチャートを参照して説明する。
【００２９】
ブロック暗号化処理では、まず、データ入力部１１０が暗号化対象のビットデータ列の入力を開始する（Ｓ１０１）。ここで、ビットデータ列は、例えば、図５に示すように、Ｋビットであるとする。ただし、ビットデータ列の入力の際にビットデータ列のサイズは不明であってもよい。暗号化装置１０は、このビットデータ列をｍビットのブロックごとにブロック暗号化処理を行なう。最終ブロックをブロックｎとすると、ビットデータ列のサイズＫビットがｍビットの整数倍とは限らないため、ブロックｎにおいては、ｍビットにａビット分足らない可能性がある。
【００３０】
暗号化制御部１２０は、ビットデータ列の入力順に従って、ｍビットのブロックサイズ単位でビットデータ列を処理用バッファ１３０に格納する（Ｓ１０２）。なお、以降の処理は、データ入力部１１０において全データの入力完了を待つことなく行なうことができる。
【００３１】
処理用バッファ１３０に格納したビットデータ列のブロックが開始ブロックであれば（Ｓ１０３：Ｎｏ、Ｓ１０４：Ｙｅｓ）、ブロック暗号化部１４０を用いて、処理用バッファ１３０に格納したビットデータ列にブロック暗号化を施す（Ｓ１０６）。この結果、処理用バッファ１３０は暗号化されたビットデータ列に置き換わる。ただし、暗号化されたビットデータ列を格納するための別のバッファを設けるようにしてもよい。
【００３２】
暗号化されたビットデータ列は即座には出力せずに、一時格納バッファ１５０に退避させる（Ｓ１０７）。これは、最終ブロックにおいてｍビットにａビット分足らない場合には、最終ブロックの直前のブロックの暗号化ビットデータ列の一部を利用するからである。このため、最終ブロックの直前のブロックの暗号化ビットデータ列であることがあらかじめ判別できる場合には、最終ブロックの直前のブロックの暗号化ビットデータ列のみを一時格納バッファ１５０に退避させ、それ以前のブロックの暗号化ビットデータ列は即座に出力するようにしてもよい。
【００３３】
処理（Ｓ１０２）に戻って、次のブロックのビットデータ列を処理用バッファ１３０に格納する。処理用バッファ１３０に格納したビットデータ列のブロックが最終ブロックでなく（Ｓ１０３：Ｎｏ）、開始ブロックでもない（Ｓ１０４：Ｎｏ）場合には、一時格納バッファ１５０に格納されている直前のブロックの暗号化ビットデータ列を、データ出力部１６０を介して出力する（Ｓ１０５）。そして、処理用バッファ１３０に格納したビットデータ列にブロック暗号化を施し（Ｓ１０６）、一時格納バッファ１５０に退避させる（Ｓ１０７）。
【００３４】
処理用バッファ１３０に格納したビットデータ列のブロックが最終ブロックの場合（Ｓ１０３：Ｙｅｓ）には、最終ブロックのビットデータ列がｍビットに不足するかどうかを判断する（Ｓ１０８）。不足しない場合（Ｓ１０８：Ｎｏ）は、前のブロックと同様に、一時格納バッファ１５０に格納されている直前のブロックの暗号化ビットデータ列を、データ出力部１６０を介して出力し（Ｓ１０９）、処理用バッファ１３０に格納した最終ブロックのビットデータ列にブロック暗号化を施す（Ｓ１１０）。暗号化された最終ブロックのビットデータ列は、一時格納バッファ１５０に格納することなくデータ出力部１６０を介して出力することができる（Ｓ１１１）。ただし、一時格納バッファ１５０を経由して出力するようにしてもよい。
【００３５】
最終ブロックであるブロックｎのビットデータ列がｍビットにａビット不足する場合（Ｓ１０８：Ｙｅｓ）の処理について図４のフローチャートに加え、図６を参照して説明する。図６は、処理用バッファ１３０に格納された最終ブロック（ブロックｎ）と、一時格納バッファ１５０に格納された最終ブロックの直前のブロック（ブロックｎ−１）に対する処理を説明する図である。ブロックｎのビットデータ列がｍビットにａビット不足するため、図６（ａ）に示すように一時格納バッファ１５０には、ｍビットの暗号化ブロックｎ−１が格納され、処理用バッファ１３０には（ｍ−ａ）ビットのブロックｎが格納されている。
【００３６】
この状態から、図６（ｂ）に示すように、一時格納バッファ１５０に格納されているブロック（ｎ−１）の暗号化ビットデータ列から末尾ａビットを抽出する（Ｓ１１２）。そして、図６（ｃ）に示すように、抽出した末尾ａビットを最終ブロックｎの末尾に付加する（Ｓ１１３）。
【００３７】
これにより、処理用バッファ１３０がｍビットのデータ列で埋まるため、処理用バッファ１３０に格納したビットデータ列に対して、ブロック暗号化部１４０を用いてブロック暗号化を施す（Ｓ１１４）。この結果、図６（ｄ）に示すように処理用バッファ１３０にはｍビットの暗号化ビットデータ列からなる暗号化ブロックｎが格納される。このとき、最終ブロックｎの末尾ａビットは、二重にブロック暗号化されていることになる。
【００３８】
次に、図６（ｅ）に示すように、処理用バッファ１３０に格納されている暗号化ブロックｎの暗号化ビットデータ列から末尾ａビットを抽出する（Ｓ１１５）。そして、図６（ｆ）に示すように、抽出した末尾ａビットで一時格納バッファ１５０に格納されている暗号化ブロック（ｎ−１）の末尾ａビットを置換し（Ｓ１１６）、末尾ａビットが置換された暗号化ブロック（ｎ−１）の暗号化ビットデータ列を、データ出力部１６０を介して出力する（Ｓ１１７）。
【００３９】
最後に、図６（ｆ）に示すように処理用バッファ１３０に格納されている暗号化ブロックｎの暗号化ビットデータ列の先頭（ｍ−ａ）ビットを、データ出力部１６０を介して出力する（Ｓ１１８）。これにより、暗号化前のビットデータ列と同じサイズであるＫビットの暗号化ビットデータ列が出力されることになる。
【００４０】
次に、復号装置２０におけるブロック暗号の復号処理について図７、図８のフローチャートを参照して説明する。復号処理は、基本的に暗号化装置１０におけるブロック暗号化処理の逆の処理を行なえばよい。
【００４１】
ブロック暗号の復号処理では、まず、データ入力部２１０が復号対象の暗号化ビットデータ列の入力を開始する（Ｓ２０１）。暗号化ビットデータ列の入力の際に暗号化ビットデータ列のサイズは不明であってもよい。復号装置２０は、この暗号化ビットデータ列をｍビットのブロックごとにブロック暗号の復号処理を行なう。最終ブロックをブロックｎとすると、暗号化ビットデータ列のサイズＫビットがｍビットの整数倍とは限らないため、ブロックｎにおいては、ｍビットにａビット分足らない可能性がある。
【００４２】
復号制御部２２０は、暗号化ビットデータ列の入力順に従って、ｍビットのブロックサイズ単位でビットデータ列を処理用バッファ２３０に格納する（Ｓ２０２）。なお、以降の処理は、全データの入力完了を待つことなく行なうことができる。
【００４３】
処理用バッファ２３０に格納した暗号化ビットデータ列のブロックが最終ブロックでなければ（Ｓ２０３：Ｎｏ）、処理用バッファ２３０に格納した暗号化ビットデータ列を一時格納バッファ２５０にコピーする（Ｓ２０４）。これは、最終ブロックにおいてｍビットにａビット分足らない場合には、最終ブロックの直前の暗号化ブロックの暗号化ビットデータ列の一部を利用するからである。このため、最終ブロックの直前のブロックの暗号化ビットデータ列であることがあらかじめ判別できる場合には、最終ブロックの直前のブロックの暗号化ビットデータ列のみを一時格納バッファ２５０にコピーするようにしてもよい。
【００４４】
そして、ブロック暗号復号部２４０を用いて、処理用バッファ２３０に格納した暗号化ビットデータ列を復号する（Ｓ２０５）。この結果、処理用バッファ２３０は復号された平文のビットデータ列に置き換わる。ただし、復号された平文のビットデータ列を格納する別のバッファを設けるようにしてもよい。次いで、処理用バッファ２３０に格納されている復号された平文のビットデータ列を、データ出力部２６０を介して出力する（Ｓ２０６）。
【００４５】
処理用バッファ２３０に格納した暗号化ビットデータ列のブロックが最終ブロックの場合（Ｓ２０３：Ｙｅｓ）には、暗号化最終ブロックの暗号化ビットデータ列がｍビットに不足するかどうかを判断する（Ｓ２０７）。不足しない場合（Ｓ２０７：Ｎｏ）は、前のブロックと同様に、ブロック暗号復号部２４０を用いて、処理用バッファ２３０に格納した暗号化ビットデータ列を復号し（Ｓ２０８）、復号された平文のビットデータ列を、データ出力部２６０を介して出力する（Ｓ２０９）。
【００４６】
最終ブロックであるブロックｎのビットデータ列がｍビットにａビット不足する場合（Ｓ２０７：Ｙｅｓ）の処理について図８のフローチャートに加え、図９を参照して説明する。図９は、処理用バッファ２３０に格納された暗号化最終ブロック（暗号化ブロックｎ）と、一時格納バッファ２５０に格納された最終ブロックの直前の暗号化ブロック（暗号化ブロックｎ−１）に対する処理を説明する図である。暗号化ブロックｎのビットデータ列がｍビットにａビット不足するため、図９（ａ）に示すように一時格納バッファ２５０には、ｍビットの暗号化ブロックｎ−１が格納され、処理用バッファ２３０には（ｍ−ａ）ビットの暗号化ブロックｎが格納されている。
【００４７】
この状態から、図９（ｂ）に示すように、一時格納バッファ２５０に格納されている暗号化ブロック（ｎ−１）の暗号化ビットデータ列から末尾ａビットを抽出する（Ｓ２１０）。末尾ａビットは暗号化装置１０によって二重にブロック暗号化されている部分である。そして、図９（ｃ）に示すように、抽出した末尾ａビットを最終暗号化ブロックｎの末尾に付加する（Ｓ２１１）。
【００４８】
これにより、処理用バッファ２３０がｍビットの暗号化データ列で埋まるため、処理用バッファ２３０に格納した暗号化ビットデータ列に対して、ブロック暗号復号部２４０を用いてブロック暗号の復号処理を施す（Ｓ２１２）。この結果、図９（ｄ）に示すように処理用バッファ２３０にはｍビットのビットデータ列からなるブロックｎが格納される。
【００４９】
次に、図９（ｅ）に示すように、処理用バッファ２３０に格納されているブロックｎのビットデータ列から末尾ａビットを抽出する（Ｓ２１３）。そして、図９（ｆ）に示すように、抽出した末尾ａビットで一時格納バッファ２５０に格納されている最終ブロックの直前の暗号化ブロック（ｎ−１）の末尾ａビットを置換する（Ｓ２１４）。次いで、末尾ａビットが置換された暗号化ブロック（ｎ−１）の暗号化ビットデータ列に対して、ブロック暗号復号部２４０を用いてブロック暗号の復号処理を施す（Ｓ２１５）。この結果、図９（ｇ）に示すように一時格納バッファ２５０にはｍビットの平文ビットデータ列からなるブロックｎ−１が格納される。この平文ビットデータ列を、データ出力部２６０を介して出力する（Ｓ２１６）。
【００５０】
最後に、図９（ｇ）に示すように処理用バッファ２３０に格納されているブロックｎのビットデータ列の先頭（ｍ−ａ）ビットを、データ出力部２６０を介して出力する（Ｓ２１７）。これにより、暗号化ビットデータ列と同じサイズであるＫビットの平文ビットデータ列が出力されることになる。
【００５１】
なお、上記の実施形態では、最終ブロックがｍビットにａビット不足する場合に、最終ブロックの直前のブロックを利用して暗号化、復号を行なうようにしていたが、最終ブロックあるいは最終ブロックの直前のブロックに代えて他のブロックを用いるようにしてもよい。
【００５２】
以下に、本発明の適用例について説明する。まず、第１の適用例としてＪｐｅｇ圧縮フォーマットであるＪＦＩＦで記録された画像データを暗号化する場合について図１０を参照して説明する。画像データを暗号化する場合に、そのフォーマットを維持したいときには、画像データ中のフレーム部分のみ暗号化することが行なわれる。例えば、図１０に示すようなＪＦＩＦで記録された画像データ４００においては、フレーム部４０１のみの暗号化を行ない、ヘッダ部分は暗号化を行なわないようにする。
【００５３】
一般にフレーム部のサイズは、画像データにより異なる。このため、従来は、ｍビット単位のブロック暗号化を行なう場合に、最終ブロックがｍビットに満たないときはパディング処理を施した上でブロック暗号化を行なわなければならなかった。このとき、暗号化前のフレーム部と暗号化後のフレーム部とでデータサイズが異なることになるため、ヘッダ部に新たな情報を付加する等の処理が必要になり、ＪＦＩＦフォーマットを変更せざるを得なかった。これを避けるために、ｍビットに満たない最終ブロックについては暗号化を行なわないことも考えられるが、その分解読に対する頑健性が損なわれることになる。
【００５４】
これに対し、本発明を適用すると暗号化された画像データ４１０の暗号化フレーム部４１１のデータサイズは、暗号化前のフレーム部４０１のデータサイズと等しくなるため、ＪＦＩＦフォーマットを変更する必要がなくなる。
【００５５】
ここではＪｐｅｇ圧縮フォーマットであるＪＦＥＦでの例を示したが、一般的にフォーマットが決まっているデータ内の一部分のみを暗号化し、フォーマットそのものは暗号化前の状態を維持したい場合には、同様の効果がある。
【００５６】
次に、本発明の第２の適用例として映像データをパケット化し、ネットワークを経由して記録表示装置に転送する際に、映像データのパケットを暗号化する場合について図１１を参照して説明する。本図において、撮像装置７０は、映像を撮影し、転送するために映像データをパケット化する。そして、本発明を適用した暗号処理部７１でパケットをブロック暗号化する。そして暗号化されたパケットを、ネットワーク７４を介して画像記録表示装置７６に送信する。画像記録表示装置７６は、暗号化されたパケットを受信すると本発明を適用した復号処理部７７で復号処理を行ない、得られたパケットで構成される映像データの記録表示を行なう。
【００５７】
パケットのサイズはアプリケーションや、ネットワーク装置等に応じて変化するため、暗号化に際して従来のブロック暗号化を行なうと、ブロックサイズに満たないブロックが発生し、パディング処理によってパケットデータサイズが変化したり、転送データ量が増加したりしてしまう。これに対し、本発明を適用した暗号化処理部７１および復号処理部７７を用いると、暗号化後のパケットデータサイズは暗号化前のパケットサイズを維持し、また、転送データ量も暗号化前と変化することがない。
【００５８】
最後に、本発明の第３の適用例として画像記録装置に入力された映像信号を記録メディアに記録する場合について図１２を参照して説明する。本図において、記録メディア８３は、サイズの変更が不可能な特定長の物理セクタ８２から構成されているものとする。物理セクタ８２をセクタ長単位でブロック暗号を用いて暗号化しようとした場合、従来のブロック暗号では、セクタ長がブロックサイズの整数倍でないと最終ブロックは暗号化することができなくなり、解読に対する頑健性が損なわれていた。これに対し、本発明を適用した暗号処理部８１を備えた画像記録装置８０であれば、セクタ長に関わらず、全ブロックを暗号化することが可能となり、解読に対する頑健性が損なわれることがない。
【００５９】
ここでは画像記録装置での例を示したが、一般的なデータ記録においても、サイズの変更が困難な物理セクタを持つメディアを、物理セクタ単位で暗号化したい場合には、同様の効果がある。
【００６０】
以上説明したように、本実施形態によれば、実装化が容易であるブロック暗号方式において、ブロック暗号化対象のビットデータ列がブロックサイズの整数倍でない場合でも、暗号化前と暗号化後とでデータサイズを変化させないようにすることができるようになる。
【符号の説明】
【００６１】
１０…暗号化装置
２０…復号装置
７０…撮像装置
７１…暗号化処理部
７１…暗号処理部
７４…ネットワーク
７６…画像記録表示装置
７７…復号処理部
８０…画像記録装置
８１…暗号処理部
８２…物理セクタ
８３…記録メディア
１１０…データ入力部
１２０…暗号化制御部
１３０…処理用バッファ
１４０…ブロック暗号化部
１５０…一時格納バッファ
１６０…データ出力部
２１０…データ入力部
２２０…復号制御部
２３０…処理用バッファ
２４０…ブロック暗号復号部
２５０…一時格納バッファ
２６０…データ出力部
４００…画像データ
４０１…フレーム部
４１０…暗号化画像データ
４１１…暗号化フレーム部
【図１】
2010204475.tif 000003
【図２】
2010204475.tif 000004
【図３】
2010204475.tif 000005
【図４】
2010204475.tif 000006
【図５】
2010204475.tif 000007
【図６】
2010204475.tif 000008
【図７】
2010204475.tif 000009
【図８】
2010204475.tif 000010
【図９】
2010204475.tif 000011
【図１０】
2010204475.tif 000012
【図１１】
2010204475.tif 000013
【図１２】
2010204475.tif 000014