(57)【要約】【課題】暗号文ブロック連鎖モードによる暗号化において、初期化ベクタの漏洩を防止して暗号強度の向上を図る。【解決手段】暗号化装置は、ＣＢＣモードによる暗号化を行うにあたり、初期化ベクタ生成指示情報が示す内容に従って、２番目以降の平文ブロックから選択した所定の平文ブロックを利用して初期化ベクタを生成し、生成した初期化ベクタを利用して平文データを暗号化する。復号装置は、２番目以降の暗号文ブロックを復号して２番目以降の平文ブロックを得ると、暗号化装置側と同じ初期化ベクタ生成指示情報が示す内容に従って、復号によって得た２番目以降の平文データから選択した所定の平文データを利用して初期化ベクタを生成し、生成した初期化ベクタを利用して１番目の暗号文ブロックを復号して１番目の平文ブロックを得る。【選択図】図１
2015022269.tif 000002
【特許請求の範囲】
【請求項１】
平文データを分割した複数の平文ブロックのうち２番目以降における所定の平文ブロックを利用した初期化ベクタの生成の仕方を示す内容の情報であって、復号装置においても同じ内容が記憶される初期化ベクタ生成指示情報を記憶する初期化ベクタ生成指示情報記憶部と、
前記初期化ベクタ生成指示情報が示す初期化ベクタの生成の仕方に従って、前記所定の平文ブロックを利用して初期化ベクタを生成する初期化ベクタ生成部と、
前記平文ブロックのうちの１番目の平文ブロックについて前記初期化ベクタを利用して暗号化し、２番目以降の平文ブロックについて、１つ前の暗号化によって得た暗号文ブロックを利用して暗号化する暗号化部と、
前記暗号文ブロックを含む暗号文データを出力する暗号文データ出力部と
を備える暗号化装置。
【請求項２】
前記初期化ベクタ生成指示情報は、
前記所定の平文ブロックの排他的論理和を初期化ベクタとすべきことを示し、
前記初期化ベクタ生成部は、
前記所定の平文ブロックの排他的論理和を求めることによって初期化ベクタを生成する
請求項１に記載の暗号化装置。
【請求項３】
前記初期化ベクタ生成指示情報は、
初期化ベクタの生成に利用する所定の平文ブロックとして、ｎ（ｎは２以上の所定の自然数）番目以降の平文ブロックから順次選択すべきことを示し、
前記初期化ベクタ生成部は、
ｎ番目以降の平文ブロックから順次選択した平文ブロックを初期化ベクタの生成に利用する
請求項１または２に記載の暗号化装置。
【請求項４】
平文データを分割した複数の平文ブロックのうち２番目以降における所定の平文ブロックを利用した初期化ベクタの生成の仕方を示す内容の情報であって、暗号化装置においても同じ内容が記憶される初期化ベクタ生成指示情報を記憶する初期化ベクタ生成指示情報記憶部と、
暗号文データに含まれる暗号文ブロックのうち、２番目以降の暗号文ブロックについて１つ前の暗号文ブロックを利用して復号することで２番目以降の平文ブロックを取得し、１番目の暗号文ブロックについては初期化ベクタを利用して復号することで１番目の平文ブロックを取得する復号部と、
前記初期化ベクタ生成指示情報が示す初期化ベクタの生成の仕方に従って、前記復号部により取得された２番目以降の平文ブロックのうちから所定の平文ブロックを利用して初期化ベクタを生成する初期化ベクタ生成部と、
を備える復号装置。
【請求項５】
前記初期化ベクタ生成指示情報は、
前記所定の平文ブロックの排他的論理和を初期化ベクタとすべきことを示し、
前記初期化ベクタ生成部は、
前記所定の平文ブロックの排他的論理和を求めることによって初期化ベクタを生成する
請求項４に記載の復号装置。
【請求項６】
前記初期化ベクタ生成指示情報は、
初期化ベクタの生成に利用する所定の平文ブロックとして、ｎ（ｎは２以上の所定の自然数）番目以降の平文ブロックから順次選択すべきことを示し、
前記初期化ベクタ生成部は、
ｎ番目以降の平文ブロックから順次選択した平文ブロックを初期化ベクタの生成に利用する
請求項４または５に記載の復号装置。
【請求項７】
復号装置においても同じ内容が記憶される初期化ベクタ生成指示情報が示す、平文データを分割した複数の平文ブロックのうち２番目以降における所定の平文ブロックを利用した初期化ベクタの生成の仕方に従って、前記所定の平文ブロックを利用して初期化ベクタを生成する初期化ベクタ生成ステップと、
前記平文ブロックのうちの１番目の平文ブロックについて前記初期化ベクタを利用して暗号化し、２番目以降の平文ブロックについて、１つ前の暗号化によって得た暗号文ブロックを利用して暗号化する暗号化ステップと、
前記暗号文ブロックを含む暗号文データを出力する暗号文データ出力ステップと
を備える暗号化方法。
【請求項８】
暗号文データに含まれる暗号文ブロックのうち、２番目以降の暗号文ブロックについて１つ前の暗号文ブロックを利用して復号することで２番目以降の平文ブロックを取得し、１番目の暗号文ブロックについては初期化ベクタを利用して復号することで１番目の平文ブロックを取得する復号ステップと、
暗号化装置においても同じ内容が記憶される初期化ベクタ生成指示情報が示す、平文データを分割した複数の平文ブロックのうち２番目以降における所定の平文ブロックを利用した初期化ベクタの生成の仕方に従って、前記復号ステップにより取得された２番目以降の平文ブロックのうちから前記所定の平文ブロックを利用して初期化ベクタを生成する初期化ベクタ生成ステップと、
を備える復号方法。
【請求項９】
コンピュータに、
復号装置においても同じ内容が記憶される初期化ベクタ生成指示情報が示す、平文データを分割した複数の平文ブロックのうち２番目以降における所定の平文ブロックを利用した初期化ベクタの生成の仕方に従って、前記所定の平文ブロックを利用して初期化ベクタを生成する初期化ベクタ生成ステップと、
前記平文ブロックのうちの１番目の平文ブロックについて前記初期化ベクタを利用して暗号化し、２番目以降の平文ブロックについて、１つ前の暗号化によって得た暗号文ブロックを利用して暗号化する暗号化ステップと、
前記暗号文ブロックを含む暗号文データを出力する暗号文データ出力ステップと
を実行させるためのプログラム。
【請求項１０】
コンピュータに、
暗号文データに含まれる暗号文ブロックのうち、２番目以降の暗号文ブロックについて１つ前の暗号文ブロックを利用して復号することで２番目以降の平文ブロックを取得し、１番目の暗号文ブロックについては初期化ベクタを利用して復号することで１番目の平文ブロックを取得する復号ステップと、
暗号化装置においても同じ内容が記憶される初期化ベクタ生成指示情報が示す、平文データを分割した複数の平文ブロックのうち２番目以降における所定の平文ブロックを利用した初期化ベクタの生成の仕方に従って、前記復号ステップにより取得された２番目以降の平文ブロックのうちから前記所定の平文ブロックを利用して初期化ベクタを生成する初期化ベクタ生成ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化装置、復号装置、暗号化方法、復号方法及びプログラムに関する。
【背景技術】
【０００２】
ＤＥＳ（Data Encryption Standard）やＡＥＳ（Advanced Encryption Standard）などのブロック暗号方式が知られている。ブロック暗号方式は、共通鍵暗号方式の１つであり、例えば固定長のブロック単位で暗号化、復号を行う暗号方式である。
【０００３】
また、ブロック暗号方式としては、ＥＣＢ（Electronic CodeBook）モード（暗号ブックモード）とＣＢＣ（Cipher Block Chaining）モード（暗号文ブロック連鎖モード）が知られている。
ＥＣＢモードは、単純にブロック単位ごとで完結した暗号化、復号を行う。
ＣＢＣモードは、前の平文ブロックを暗号化して得られた暗号文ブロックと現平文ブロックとで排他的論理和演算（ＸＯＲ）を行い、排他的論理和演算の結果に対して暗号化を行う。この場合、先頭の平文ブロックについては、排他的論理和演算を行うべき前の暗号文ブロックが存在しない。そこで、先頭の平文ブロックについては、暗号文ブロックに代えて予め定めた初期化ベクタと排他的論理和演算を行って暗号化する。
【０００４】
例えばＣＢＣモードによる暗号化にあたり、プリブロックを先頭に付加した平文を暗号化し、暗号化によって得られた暗号文からプリブロックに対応する暗号文ブロックを除去した結果を平文に対する暗号文とする技術が知られている（特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１６８２７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＣＢＣモードにおける初期化ベクタは、通常、暗号化を行う側と復号を行う側とで予め共有されたうえで固定的に使用される。このため、ＣＢＣモードにおいて初期化ベクタが漏洩したような場合には、初期化ベクタが暗号解読の足掛かりとなる可能性がある。つまり、ＣＢＣモードにおいては、初期化ベクタの漏洩の防止を図ることが暗号化強度を高めるうえで有効な方策の１つとなる。
【０００７】
しかし、特許文献１に記載の技術は、あくまでも、最初の暗号文ブロックが暗号解読の足掛かりとなることの防止を目的とした構成であるために、初期化ベクタの漏洩の防止を図ることはできない。
【０００８】
本発明は、このような事情に鑑みてなされたもので、暗号文ブロック連鎖モードによる暗号化において、初期化ベクタの漏洩を防止して暗号強度の向上を図ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決するために、本発明の一態様としての暗号化装置は、平文データを分割した複数の平文ブロックのうち２番目以降における所定の平文ブロックを利用した初期化ベクタの生成の仕方を示す内容の情報であって、復号装置においても同じ内容が記憶される初期化ベクタ生成指示情報を記憶する初期化ベクタ生成指示情報記憶部と、前記初期化ベクタ生成指示情報が示す初期化ベクタの生成の仕方に従って、前記所定の平文ブロックを利用して初期化ベクタを生成する初期化ベクタ生成部と、前記平文ブロックのうちの１番目の平文ブロックについて前記初期化ベクタを利用して暗号化し、２番目以降の平文ブロックについて、１つ前の暗号化によって得た暗号文ブロックを利用して暗号化する暗号化部と、前記暗号文ブロックを含む暗号文データを出力する暗号文データ出力部とを備える。
【００１０】
また、上記の暗号化装置において、前記初期化ベクタ生成指示情報は、前記所定の平文ブロックの排他的論理和を初期化ベクタとすべきことを示し、前記初期化ベクタ生成部は、前記所定の平文ブロックの排他的論理和を求めることによって初期化ベクタを生成してもよい。
【００１１】
また、上記の暗号化装置において、前記初期化ベクタ生成指示情報は、初期化ベクタの生成に利用する所定の平文ブロックとして、ｎ（ｎは２以上の所定の自然数）番目以降の平文ブロックから順次選択すべきことを示し、前記初期化ベクタ生成部は、ｎ番目以降の平文ブロックから順次選択した平文ブロックを初期化ベクタの生成に利用してもよい。
【００１２】
本発明の一態様としての復号装置は、平文データを分割した複数の平文ブロックのうち２番目以降における所定の平文ブロックを利用した初期化ベクタの生成の仕方を示す内容の情報であって、暗号化装置においても同じ内容が記憶される初期化ベクタ生成指示情報を記憶する初期化ベクタ生成指示情報記憶部と、暗号文データに含まれる暗号文ブロックのうち、２番目以降の暗号文ブロックについて１つ前の暗号文ブロックを利用して復号することで２番目以降の平文ブロックを取得し、１番目の暗号文ブロックについては初期化ベクタを利用して復号することで１番目の平文ブロックを取得する復号部と、前記初期化ベクタ生成指示情報が示す初期化ベクタの生成の仕方に従って、前記復号部により取得された２番目以降の平文ブロックのうちから所定の平文ブロックを利用して初期化ベクタを生成する初期化ベクタ生成部とを備える。
【００１３】
また、上記の復号装置において、前記初期化ベクタ生成指示情報は、前記所定の平文ブロックの排他的論理和を初期化ベクタとすべきことを示し、前記初期化ベクタ生成部は、前記所定の平文ブロックの排他的論理和を求めることによって初期化ベクタを生成してもよい。
【００１４】
また、上記の復号装置において、前記初期化ベクタ生成指示情報は、初期化ベクタの生成に利用する所定の平文ブロックとして、ｎ（ｎは２以上の所定の自然数）番目以降の平文ブロックから順次選択すべきことを示し、前記初期化ベクタ生成部は、ｎ番目以降の平文ブロックから順次選択した平文ブロックを初期化ベクタの生成に利用してもよい。
【００１５】
本発明の一態様としての暗号化方法は、復号装置においても同じ内容が記憶される初期化ベクタ生成指示情報が示す、平文データを分割した複数の平文ブロックのうち２番目以降における所定の平文ブロックを利用した初期化ベクタの生成の仕方に従って、前記所定の平文ブロックを利用して初期化ベクタを生成する初期化ベクタ生成ステップと、前記平文ブロックのうちの１番目の平文ブロックについて前記初期化ベクタを利用して暗号化し、２番目以降の平文ブロックについて、１つ前の暗号化によって得た暗号文ブロックを利用して暗号化する暗号化ステップと、前記暗号文ブロックを含む暗号文データを出力する暗号文データ出力ステップとを備える。
【００１６】
本発明の一態様としての復号方法は、暗号文データに含まれる暗号文ブロックのうち、２番目以降の暗号文ブロックについて１つ前の暗号文ブロックを利用して復号することで２番目以降の平文ブロックを取得し、１番目の暗号文ブロックについては初期化ベクタを利用して復号することで１番目の平文ブロックを取得する復号ステップと、暗号化装置においても同じ内容が記憶される初期化ベクタ生成指示情報が示す、平文データを分割した複数の平文ブロックのうち２番目以降における所定の平文ブロックを利用した初期化ベクタの生成の仕方に従って、前記復号ステップにより取得された２番目以降の平文ブロックのうちから前記所定の平文ブロックを利用して初期化ベクタを生成する初期化ベクタ生成ステップとを備える。
【００１７】
本発明の一態様としてのプログラムは、コンピュータに、復号装置においても同じ内容が記憶される初期化ベクタ生成指示情報が示す、平文データを分割した複数の平文ブロックのうち２番目以降における所定の平文ブロックを利用した初期化ベクタの生成の仕方に従って、前記所定の平文ブロックを利用して初期化ベクタを生成する初期化ベクタ生成ステップと、前記平文ブロックのうちの１番目の平文ブロックについて前記初期化ベクタを利用して暗号化し、２番目以降の平文ブロックについて、１つ前の暗号化によって得た暗号文ブロックを利用して暗号化する暗号化ステップと、前記暗号文ブロックを含む暗号文データを出力する暗号文データ出力ステップとを実行させるためのものである。
【００１８】
本発明の一態様としてのプログラムは、コンピュータに、暗号文データに含まれる暗号文ブロックのうち、２番目以降の暗号文ブロックについて１つ前の暗号文ブロックを利用して復号することで２番目以降の平文ブロックを取得し、１番目の暗号文ブロックについては初期化ベクタを利用して復号することで１番目の平文ブロックを取得する復号ステップと、暗号化装置においても同じ内容が記憶される初期化ベクタ生成指示情報が示す、平文データを分割した複数の平文ブロックのうち２番目以降における所定の平文ブロックを利用した初期化ベクタの生成の仕方に従って、前記復号ステップにより取得された２番目以降の平文ブロックのうちから前記所定の平文ブロックを利用して初期化ベクタを生成する初期化ベクタ生成ステップとを実行させるためのものである。
【発明の効果】
【００１９】
本発明によれば、暗号文ブロック連鎖モードによる暗号化において、初期化ベクタの漏洩が防止され、暗号強度が向上するという効果が得られる。
【図面の簡単な説明】
【００２０】
【図１】本実施形態における暗号化装置と復号装置の構成例を示す図である。
【図２】本実施形態の暗号化装置と復号装置を具現化した例としてのＩＣカードとリーダライタを示す図である。
【図３】ＣＢＣモードに対応する暗号化装置が実行する一般的な暗号化の手順例を示す図である。
【図４】ＣＢＣモードに対応する復号装置が実行する一般的な復号の手順例を示す図である。
【図５】本実施形態の暗号化装置が実行する暗号化の手順例を示す図である。
【図６】本実施形態における初期化ベクタ生成部の構成例を示す図である。
【図７】本実施形態の復号装置が実行する復号の手順例を示す図である。
【図８】本実施形態の暗号化装置が初期化ベクタ生成のための生成アルゴリズムを設定するための処理手順例を示すフローチャートである。
【図９】本実施形態の暗号化装置が実行する暗号化と復号装置が実行する復号のための処理手順例を示すフローチャートである。
【図１０】本実施形態の変形例としての平文ブロックの選択例を示す図である。
【図１１】本実施形態の他の変形例としての平文ブロックの選択例を示す図である。
【発明を実施するための形態】
【００２１】
［暗号化装置と復号装置の構成例］
図１は、本実施形態の暗号化装置１００と復号装置２００の構成例を示している。
まず、暗号化装置１００について説明する。本実施形態の暗号化装置１００は、ＣＢＣ（Cipher Block Chaining）モードとしてのブロック暗号方式に対応する。
同図に示す暗号化装置１００は、平文データ出力部１０１、平文データ分割部１０２、初期化ベクタ生成指示情報記憶部１０３、初期化ベクタ生成部１０４、暗号化部１０５、暗号文データ出力部１０６及び送信部１０７を備える。
【００２２】
平文データ出力部１０１は、暗号化対象の平文データを出力する。具体例として、平文データ出力部１０１は、平文データ記憶部（図示せず）を備え、平文データ記憶部が予め記憶している平文データを読み出し、平文データ分割部１０２に出力するように構成することができる。あるいは、平文データ出力部１０１は、例えばデータインターフェースなどを経由して外部から入力された平文データを平文データ分割部１０２に出力するようにしてもよい。
【００２３】
平文データ分割部１０２は、平文データ出力部１０１が出力した平文データを平文ブロックの単位に分割する。平文ブロックは、例えば８ビットまたは１６ビットの固定長である。
【００２４】
初期化ベクタ生成指示情報記憶部１０３は、初期化ベクタ生成指示情報を記憶する。初期化ベクタ生成指示情報は、所定の平文ブロックを利用した初期化ベクタの生成の仕方を示す情報である。
初期化ベクタ生成指示情報は、初期化ベクタの生成の仕方として、例えば初期化ベクタを生成するにあたりどの平文ブロックを選択し、選択した平文ブロックをどのように利用して初期化ベクタを生成するのかを示す情報である。
初期化ベクタは、１番目（先頭）の平文ブロックを暗号化するのに利用されることから、初期化ベクタの生成に利用することのできる平文ブロックは、平文データ分割部１０２によって得られた平文ブロックのうち、１番目を除いた２番目以降の平文ブロックになる。
【００２５】
初期化ベクタ生成指示情報は、復号装置２００においても同じ内容が記憶される。このために、初期化ベクタ生成指示情報は、例えば暗号化装置１００のユーザに引き渡される前の段階において、暗号化装置１００の初期化ベクタ生成指示情報記憶部１０３に記憶される。同様に、復号装置２００側においても、初期化ベクタ生成指示情報は、復号装置２００のユーザに引き渡される前に復号装置２００に対して記憶される。
つまり、本実施形態において、初期化ベクタ生成指示情報は、暗号化装置１００と復号装置２００との間で予め共有される。
【００２６】
初期化ベクタ生成部１０４は、初期化ベクタ（Initial Vector:IV）を生成する。初期化ベクタは、本実施形態が対応するＣＢＣモードによるブロック暗号において、先頭の平文ブロックの暗号化に利用されるデータである。
本実施形態における初期化ベクタ生成部１０４は、初期化ベクタ生成指示情報が指示する初期化ベクタの生成の仕方に従って、所定の平文ブロックを利用して初期化ベクタを生成する。
【００２７】
具体的に、初期化ベクタ生成部１０４は、暗号化装置１００の起動時などにおいて、初期化ベクタ生成指示情報記憶部１０３から初期化ベクタ生成指示情報を読み出す。初期化ベクタ生成部１０４は、読み出した初期化ベクタ生成指示情報が示す初期化ベクタの生成の仕方に従った初期化ベクタの生成アルゴリズムを設定する。
以降において、初期化ベクタ生成部１０４は、平文データを暗号化すべきタイミングごとに応じて、生成アルゴリズムに従って、平文データ分割部１０２によって得られた平文ブロックのうちから、初期化ベクタの生成に利用すべき平文ブロックを入力する。初期化ベクタ生成部１０４は、入力した平文ブロックを利用して設定した生成アルゴリズムに従った演算を行うことで初期化ベクタを生成する。
【００２８】
暗号化部１０５は、平文データ分割部１０２によって得られた平文ブロックのうちの１番目の平文ブロックについて初期化ベクタを利用して暗号化し、２番目以降の平文ブロックについて、１つ前の暗号化によって得た暗号文ブロックを利用して暗号化する。つまり、暗号化部１０５は、ブロック暗号方式におけるＣＢＣモードに対応したブロック単位の暗号化を行い、暗号文ブロックを得る。
【００２９】
暗号文データ出力部１０６は、暗号化部１０５によって得られた平文ブロックごとに対応する暗号文ブロックにより暗号文データを生成する。具体的に、暗号文データ出力部１０６は、暗号文ブロックを連結することにより暗号文データを生成することができる。暗号文データ出力部１０６は、生成した暗号文データを出力する。
送信部１０７は、暗号文データ出力部１０６が出力した暗号文データを復号装置２００に送信する。なお、送信部１０７が復号装置２００に暗号文データを送信するための伝送路は、ネットワークあるいは所定のデータインターフェースなどであればよく、また、無線であってもよいし有線であってもよい。
【００３０】
次に、復号装置２００について説明する。
復号装置２００は、受信部２０１、暗号文データ分割部２０２、復号部２０３、初期化ベクタ生成指示情報記憶部２０４、初期化ベクタ生成部２０５及び平文データ生成部２０６を備える。
【００３１】
受信部２０１は、暗号化装置１００から送信された暗号文データを受信する。
暗号文データ分割部２０２は、受信部２０１により受信された暗号文データを暗号文ブロックの単位に分割する。１つの暗号文ブロックは１つの平文ブロックに対応し、所定の固定長によるサイズを有する。
【００３２】
復号部２０３は、暗号文データに含まれる暗号文ブロックのうち、２番目以降の暗号文ブロックについて１つ前の暗号文ブロックを利用して復号を行うことで２番目以降の平文ブロックを取得する。また、復号部２０３は、１番目の暗号文ブロックについては初期化ベクタを利用して復号を行うことで１番目の平文ブロックを取得する。
【００３３】
初期化ベクタ生成指示情報記憶部２０４は、暗号化装置１００の初期化ベクタ生成指示情報記憶部１０３にて記憶されているのと同じ内容の初期化ベクタ生成指示情報を記憶する。つまり、暗号化装置１００と復号装置２００は、前述のように、同じ内容の初期化ベクタ生成指示情報を予め共有する。これにより、暗号化装置１００と復号装置２００は同じ処理によって初期化ベクタを生成することができる。
【００３４】
初期化ベクタ生成部２０５は、復号部２０３により取得された２番目以降の平文ブロックのうちから初期化ベクタ生成指示情報が示す所定の平文ブロックを利用して初期化ベクタを生成する。
具体的に、初期化ベクタ生成部２０５は、例えば復号装置の起動時などにおいて、初期化ベクタ生成指示情報記憶部２０４から初期化ベクタ生成指示情報を読み出す。初期化ベクタ生成部２０５は、読み出した初期化ベクタ生成指示情報が示す初期化ベクタの生成の仕方に従った初期化ベクタの生成アルゴリズムを設定する。
また、復号装置２００における復号部２０３は、暗号文データの受信に応じて２番目以降の暗号文ブロックの復号を行って２番目以降の平文ブロックを取得する。そこで、初期化ベクタ生成部２０５は、生成アルゴリズムに従って、復号部２０３によって得られた２番目以降の平文ブロックのうちから、初期化ベクタの生成に利用すべき平文ブロックを入力する。初期化ベクタ生成部２０５は、入力した平文ブロックを利用して生成アルゴリズムに従った所定の演算を行うことで初期化ベクタを生成する。
復号部２０３は、上記のように生成された初期化ベクタを利用して１番目の暗号文ブロックを復号する。
【００３５】
平文データ生成部２０６は、復号部２０３が復号して得た、１番目と２番目以降の各平文ブロックにより平文データを生成する。具体的に、平文データ生成部２０６は、１番目と２番目以降の各平文ブロックを連結することにより平文データを生成することができる。
【００３６】
［暗号化装置と復号装置の具現化例］
図２は、本実施形態の暗号化装置１００と復号装置２００とを具現化した一例として、ＩＣカード３００及びリーダライタ４００を示している。
ＩＣカード３００は、集積回路が実装されたカードである。リーダライタ４００は、ＩＣカード３００と所定の通信方式による通信を行うことで、ＩＣカード３００からのデータの読み出し、あるいはＩＣカード３００に対するデータの書き込みを行う。
【００３７】
図２のＩＣカード３００とリーダライタ４００の組合せにおいては、ＩＣカード３００がリーダライタ４００にデータを送信するときと、リーダライタ４００がＩＣカード３００にデータを送信するときとがある。
ＩＣカード３００がリーダライタ４００にデータを送信するにあたりデータが暗号化されるときには、ＩＣカード３００が暗号化装置１００として機能し、リーダライタ４００が復号装置２００として機能する。
また、リーダライタ４００がＩＣカード３００にデータを送信するにあたりデータが暗号化されるときには、リーダライタ４００が暗号化装置１００として機能し、ＩＣカード３００が復号装置２００として機能する。
【００３８】
［ＣＢＣモードとしての一般的な暗号化と復号処理］
本実施形態の暗号化装置１００と復号装置２００が対応するＣＢＣモードは、ブロック暗号方式における利用モードの１つである。ブロック暗号方式は、共通鍵暗号方式の１つであり、固定長のブロック単位で暗号化、復号を行う。そのうえで、ＣＢＣモードでは、１つ前の平文ブロックを暗号化して得られた暗号文ブロックと現平文ブロックとの排他的論理和（exclusive or）を求め、求められた排他的論理和の結果に対して暗号化を行う。
【００３９】
図３は、ＣＢＣモードに対応する暗号化装置が実行する一般的な暗号化の手順例を示している。
ＣＢＣモードでの暗号化では、暗号化対象の平文データを複数の固定長のブロックに分割する。図３の例では、平文データＤｐｌｎを４つの平文ブロックＭ１，Ｍ２，Ｍ３，Ｍ４に分割した例を示している。
【００４０】
上記のように、ＣＢＣモードでは、平文ブロックを暗号化するにあたり、１つ前の平文ブロックを暗号化した暗号文ブロックを利用する。しかし、先頭の平文ブロックＭ１については、１つ前の平文ブロックを暗号化した暗号文ブロックは存在しない。
そこで、ＣＢＣモードにおいて先頭の平文ブロックＭ１を暗号化するにあたっては初期化ベクタＤｉｖを利用する。図３の場合における初期化ベクタＤｉｖは、予め定められた固定値であり、復号装置は暗号化装置と同じ初期化ベクタＤｉｖを共有している。そして、暗号化装置は、図３に示すように、先頭の平文ブロックＭ１と初期化ベクタＤｉｖとの排他的論理和を求める（ステップＳ１１)。
次に、暗号化装置は、ステップＳ１１により求められた排他的論理和の結果について、予め定められた共通鍵を利用してブロック単位の暗号化（ブロック暗号化）を行う(ステップＳ２１)。これにより、平文ブロックＭ１に対応する暗号文ブロックＣ１が得られる。
【００４１】
次に、暗号化装置は、平文ブロックＭ１の次の平文ブロックＭ２と暗号文ブロックＣ１との排他的論理和を求める（ステップＳ１２)。そのうえで、暗号化装置は、排他的論理和の結果についてブロック暗号化を実行する(ステップＳ２２)。これにより、平文ブロックＭ２に対応する暗号文ブロックＣ２が得られる。
次に、暗号化装置は、平文ブロックＭ３と暗号文ブロックＣ２との排他的論理和を求め(ステップＳ１３)、ブロック暗号化(ステップＳ２３)を実行することにより、平文ブロックＭ３に対応する暗号文ブロックＣ３を得る。
次に、暗号化装置は、平文ブロックＭ４と暗号文ブロックＣ３との排他的論理和演算を求め(ステップＳ１４)、ブロック暗号化(ステップＳ２４)を実行することにより、平文ブロックＭ４に対応する暗号文ブロックＣ４を得る。
このようにして、ＣＢＣモードでは、平文ブロックＭ１〜Ｍ４ごとに対応する暗号文ブロックＣ１〜Ｃ４が得られる。そして、暗号文ブロックＣ１〜Ｃ４により平文データＤｐｌｎに対応する暗号文データＤｅｎｃが得られる。
【００４２】
図４は、ＣＢＣモードに対応する復号装置が図３の暗号文データＤｅｎｃを復号する一般的な手順例を示している。
この場合の暗号文データＤｅｎｃは、４つの暗号文ブロックＣ１〜Ｃ４に分割される。復号装置は、暗号化装置が暗号化の際に利用したのと同じ初期化ベクタＤｉｖを共有している。
そこで、復号装置は、先頭の暗号文ブロックＣ１については、まず、共通鍵を利用したブロック単位での復号（ブロック復号）を行い(ステップＳ３１)、ステップＳ３１による復号結果と初期化ベクタＤｉｖとの排他的論理和を求める（ステップＳ４１)。これにより、暗号文ブロックＣ１に対応する平文ブロックＭ１が取得される。
また、復号装置は、２番目の暗号文ブロックＣ２についてブロック復号を行い（ステップＳ３２)、復号結果と１つ前の暗号文ブロックＣ１との排他的論理和を求めることで（ステップＳ４２）、暗号文ブロックＣ２に対応する平文ブロックＭ２を取得する。
また、復号装置は、３番目の暗号文ブロックＣ３についてブロック復号を行い（ステップＳ３３)、復号結果と暗号文ブロックＣ２との排他的論理和を求めることで（ステップＳ４３）、暗号文ブロックＣ３に対応する平文ブロックＭ３を取得する。
また、復号装置は、４番目の暗号文ブロックＣ４についてブロック復号を行い（ステップＳ３４)、復号結果と暗号文ブロックＣ３との排他的論理和を求めることで（ステップＳ４４）、暗号文ブロックＣ４に対応する平文ブロックＭ４を取得する。
このように取得された平文ブロックＭ１〜Ｍ４を順に配列することにより、復元された平文データＤｐｌｎが取得される。
【００４３】
図３及び図４に示したＣＢＣモードによる暗号化と復号にあっては、同じ固定値の初期化ベクタＤｉｖを暗号化装置と復号装置とのそれぞれが予め記憶している。そして、暗号化装置と復号装置は、それぞれが記憶している初期化ベクタＤｉｖを暗号化、復号化に利用する。このように、初期化ベクタＤｉｖが予め固定的に記憶されている場合、暗号化装置または復号装置のいずれかが記憶している初期化ベクタＤｉｖが漏洩した場合には暗号解読の足掛かりとなる可能性がある。
そこで、本実施形態では、以下に説明するようにしてＣＢＣモードにおける暗号化と復号とを行うことで、初期化ベクタＤｉｖの漏洩に関するセキュリティを向上させる。
【００４４】
［本実施形態における暗号化、復号の手順例］
図５は、本実施形態の暗号化装置１００が実行する暗号化の手順例を示している。なお、同図において、図３と同様の部分については同じ符号を付している。また、図５の説明にあたって、初期化ベクタ生成部１０４は、初期化ベクタ生成指示情報の内容に従って生成アルゴリズムを既に設定している状態にあることを前提とする。
【００４５】
暗号化にあたり、暗号化装置１００の平文データ出力部１０１は、平文データＤｐｌｎを出力する。平文データ分割部１０２は、平文データ出力部１０１から出力された平文データＤｐｌｎを平文ブロックの単位に分割する。図５においては、図３と同様に、平文データＤｐｌｎが４つの平文ブロックＭ１〜Ｍ４に分割された例を示している。
【００４６】
上記のように平文ブロックＭ１〜Ｍ４が得られるのに応じて、初期化ベクタ生成部１０４は、以下のように初期化ベクタＤｉｖを生成する(ステップＳ５１)。
ここでは、初期化ベクタ生成指示情報が、「２番目以降の平文ブロックから1つずつ順次選択し、選択した平文ブロックの排他的論理和を求める」という内容の初期化ベクタの生成の仕方を示している場合を例に挙げる。
【００４７】
この場合、初期化ベクタ生成部１０４は、ステップＳ５１の初期化ベクタ生成の処理として、初期化ベクタ生成指示情報に従って、２番目から最後までの平文ブロックＭ２、Ｍ３、Ｍ４を選択する。初期化ベクタ生成部１０４は、選択した平文ブロックＭ２、Ｍ３、Ｍ４についての排他的論理和を求めることで初期化ベクタＤｉｖを生成する。つまり、この場合には、平文ブロックＭ２、Ｍ３、Ｍ４についての排他的論理和を求めた結果が初期化ベクタＤｉｖとなる。
【００４８】
ここで、図６を参照して、図５の例に対応して生成アルゴリズムを設定した場合の初期化ベクタ生成部１０４の機能構成例について説明する。
同図に示す初期化ベクタ生成部１０４は、演算部１４１−１、１４１−２を備える。演算部１４１−１は、平文ブロックＭ２とＭ３との排他的論理和を演算し、演算結果を演算部１４１−２に出力する。演算部１４１−２は、演算部１４１−１が出力した排他的論理和の演算結果と、平文ブロックＭ４との排他的論理和を演算し、演算結果を初期化ベクタＤｉｖとして出力する。
【００４９】
このように、本実施形態の初期化ベクタ生成部１０４は、初期化ベクタＤｉｖの生成に利用すべき平文データについての排他的論理和を求めることにより、初期化ベクタＤｉｖを生成する。
排他的論理和演算の場合、演算部１４１−１、１４１−２による演算は、それぞれ、各ビット位置での桁上がりの無い加算演算に相当する。つまり、演算部１４１−１、１４１−２による演算は、平文ブロックＭ２、Ｍ３、Ｍ４の間での各ビット位置について、１の数が奇数であれば１の結果を出力し、偶数であれば０の結果を出力するという演算によって実現できる。このように、排他的論理和の演算であれば、例えば、初期化ベクタの生成に利用すべき平文ブロックの数が増加したとしても、特に演算が複雑になることはない。このような点で、排他的論理和の演算によっては、平文ブロックの数に依存すること無く効率的に初期化ベクタＤｉｖを生成することができる。
【００５０】
説明を図５に戻す。
暗号化部１０５は、ステップＳ５１により初期化ベクタＤｉｖが生成されるのに応じて、以下のように１番目の平文ブロックＭ１を暗号化する。
つまり、暗号化部１０５は、１番目の平文ブロックＭ１と初期化ベクタＤｉｖとの排他的論理和を求める(ステップＳ１１)。暗号化部１０５は、ステップＳ１１により求められた排他的論理和の結果を共通鍵によりブロック暗号化する(ステップＳ２１)。これにより、平文ブロックＭ１に対応する暗号文ブロックＣ１が得られる。
【００５１】
次に、暗号化部１０５は、２番目の平文ブロックＭ２と、１つ前の平文ブロックＭ１の暗号化により得られた暗号文ブロックＣ１との排他的論理和を求め（ステップＳ１２）、求められた排他的論理和の結果をブロック暗号化して暗号文ブロックＣ２を得る(ステップＳ２２)。
次に、暗号化部１０５は、３番目の平文ブロックＭ３と、１つ前の平文ブロックＭ２に対応する暗号文ブロックＣ２との排他的論理和を求め（ステップＳ１３）、求められた排他的論理和の結果をブロック暗号化して暗号文ブロックＣ３を得る（ステップＳ２３）。
次に、暗号化部１０５は、４番目の平文ブロックＭ４と、１つ前の平文ブロックＭ３に対応する暗号文ブロックＣ３との排他的論理和を求め（ステップＳ１４）、求められた排他的論理和の結果をブロック暗号化して暗号文ブロックＣ４を得る（ステップＳ２４）。
【００５２】
暗号文データ出力部１０６は、暗号文ブロックＣ１〜Ｃ４を含む暗号文データＤｅｎｃを生成し、生成した暗号文データＤｅｎｃを送信部１０７に出力する。
送信部１０７は、暗号文データ出力部１０６が出力した暗号文データＤｅｎｃを復号装置２００に対して送信する。
【００５３】
このように、本実施形態の暗号化装置１００は、初期化ベクタ生成指示情報が示す初期化ベクタの生成手順に従って、平文データＤｐｌｎから分割した平文ブロックのうちの２番目以降の平文ブロックを利用して初期化ベクタＤｉｖを生成する。そのうえで、暗号化装置１００は、生成した初期化ベクタＤｉｖを利用して暗号化を行って暗号文データＤｅｎｃを得る。
【００５４】
次に、図７を参照して、本実施形態の復号装置２００が、図６の暗号化によって出力された暗号文データＤｅｎｃに対応して実行する復号の手順例について説明する。なお、図７において、図４と同様の部分については図４と同一符号を付している。また、同図の説明にあたって、初期化ベクタ生成部２０５は、初期化ベクタ生成指示情報の内容に従って生成アルゴリズムを既に設定している状態にあることを前提とする。
【００５５】
復号装置２００において、受信部２０１にて受信された暗号文データＤｅｎｃは、暗号文データ分割部２０２が４つの暗号文ブロックＣ１〜Ｃ４に分割する。
ここで、暗号文ブロックＣ１〜Ｃ４のうち、１番目の暗号文ブロックＣ１の復号には、平文ブロックＭ１の暗号化のときと同じ初期化ベクタＤｉｖを利用する。この場合の初期化ベクタ生成指示情報は、「２番目以降の平文ブロックから1つずつ順次選択し、選択した平文ブロックの排他的論理和を求める」という内容である。従って、この場合には、２番目以降の全ての平文ブロックである平文ブロックＭ２、Ｍ３、Ｍ４を利用して初期化ベクタＤｉｖを生成する必要がある。
【００５６】
そこで、まず、復号部２０３が、２番目〜４番目の暗号文ブロックＣ２〜Ｃ４の各々について１つ前の暗号文ブロックＣ１〜Ｃ３を利用した復号処理を行って平文ブロックＭ２、Ｍ３、Ｍ４を得る。
【００５７】
つまり、復号部２０３は、暗号文ブロックＣ２については、ブロック復号を行ったうえで（ステップＳ３２）、その復号結果と暗号文ブロックＣ１との排他的論理和を求めることにより平文ブロックＭ２を得る(ステップＳ４２)。
また、復号部２０３は、暗号文ブロックＣ３についてブロック復号を行ったうえで（ステップＳ３３）、その復号結果と暗号文ブロックＣ２との排他的論理和を求めることにより平文ブロックＭ３を得る（ステップＳ４３）。
また、復号部２０３は、暗号文ブロックＣ４についてブロック復号を行ったうえで（ステップＳ３４）、その復号結果と暗号文ブロックＣ３との排他的論理和演算を求めることにより平文ブロックＭ４を得る（ステップＳ４４）。
【００５８】
上記のように、２番目以降の全ての平文ブロックである平文ブロックＭ２、Ｍ３、Ｍ４が復号によって得られたのに応じて、初期化ベクタ生成部２０５は、平文ブロックＭ２、Ｍ３、Ｍ４を入力して初期化ベクタＤｉｖを生成する(ステップＳ６１)。
ここで、復号装置２００において初期化ベクタ生成指示情報記憶部２０４が記憶する初期化ベクタ生成指示情報は、これまでの説明から理解されるように、暗号化装置１００において記憶される初期化ベクタ生成指示情報と同じ内容の初期化ベクタＤｉｖの生成の仕方を示す。これにより、初期化ベクタ生成部２０５は、暗号化装置１００における初期化ベクタ生成部１０４と同じ生成アルゴリズムによって初期化ベクを生成する。
従って、この場合の初期化ベクタ生成部２０５の構成は図６と同様である。これにより、初期化ベクタ生成部２０５は、暗号化装置１００の初期化ベクタ生成部１０４と同様に平文ブロックの数に依存することなく効率的に初期化ベクタＤｉｖを生成することができる。
【００５９】
復号部２０３は、ステップＳ６１により初期化ベクタ生成部２０５が生成した初期化ベクタＤｉｖを利用して、暗号文ブロックＣ１を復号する。
つまり、復号部２０３は、暗号文ブロックＣ１についてブロック復号を行ったうえで（ステップＳ３１）、その復号結果と初期化ベクタ生成部２０５が生成した初期化ベクタＤｉｖとの排他的論理和を求めることにより平文ブロックＭ１を得る（ステップＳ４１）。
【００６０】
上記のように復号処理が行われることで、復号された全ての平文ブロックＭ１〜Ｍ４が得られる。平文データ生成部２０６は、復号処理によって得られた平文ブロックＭ１〜Ｍ４により平文データＤｐｌｎを生成する。
【００６１】
このように、本実施形態においては、暗号化装置１００と復号装置２００とで予め同じ初期化ベクタ生成指示情報を共有しておくことで、暗号化装置１００と復号装置２００との間で同じ手順によって初期化ベクタＤｉｖの生成が行われるようにしている。
【００６２】
このような構成により、本実施形態における暗号化装置１００と復号装置２００は、予め初期化ベクタＤｉｖ自体を共有しておく必要がない。
本実施形態の場合、初期化ベクタＤｉｖの生成の仕方を示す初期化ベクタ生成指示情報については暗号化装置１００と復号装置２００との間で予め共有している。しかし、初期化ベクタ生成指示情報が漏洩して初期化ベクタＤｉｖの生成の仕方が分かったとしても、初期化ベクタＤｉｖを生成するには２番目以降の所定の平文ブロックが必要である。２番目以降の所定の平文ブロックを得るためには、対応の暗号文ブロックの復号が必要であり、共通鍵が分かっている必要がある。従って、例えば攻撃者に初期化ベクタＤｉｖの生成の仕方が分かったとしても、共通鍵が分からず平文ブロックに復号できない以上、セキュリティが保たれることになる。
一方、固定の初期化ベクタＤｉｖ自体が漏洩した場合、１番目の暗号文ブロックＣ１と平文ブロックＭ１との対応関係などを検証することにより初期化ベクタＤｉｖが共通鍵の推定の足掛かりとなる可能性が上がる。このように、本実施形態では、暗号化装置と復号装置との間で初期化ベクタＤｉｖ自体を共有している場合と比較してセキュリティが向上する。
【００６３】
また、本実施形態では、平文データの一部である平文ブロックを利用して初期化ベクタＤｉｖを生成するのであるが、例えば１つのセッションやトランザクションにおける複数回のシーケンスにおいて、同じ内容の平文データが暗号化されることはほぼないとみてよい。
このため、本実施形態のように平文ブロックを初期化ベクタＤｉｖの生成に利用することによっては、平文データを暗号化するごとに異なる初期化ベクタＤｉｖが生成される。これにより、本実施形態においては初期化ベクタＤｉｖの漏洩に対するセキュリティをさらに向上させることができる。
【００６４】
また、図５及び図７にて説明した例において、初期化ベクタ生成指示情報によって示されている初期化ベクタの生成に利用すべき平文ブロックの選択指示は「２番目以降の平文ブロックから1つずつ順次選択」するというものである。このような選択指示であれば、分割によって得られる平文ブロックの数が平文データごとに異なっているとしても、暗号化装置１００と復号装置２００は、常に２番目から最後の平文データを選択することになり、互いが初期化ベクタＤｉｖの生成に利用する平文データも同じにすることができる。つまり、「２番目以降の平文ブロックから1つずつ順次選択」するという平文ブロックの選択指示は、平文データから分割される平文ブロックの数にかかわらず適用できるという汎用性を有している。
【００６５】
また、これまでの説明から理解されるように、本実施形態における初期化ベクタの生成には平文ブロックを利用するのであるが、１番目の平文ブロックは、初期化ベクタを利用して暗号化、復号されるデータになるので初期化ベクタの生成には利用しない。従って、本実施形態における初期化ベクタの生成は、平文データから分割される平文ブロックが２以上の場合に対応する。
しかし、ＣＢＣモードにより暗号化される平文データはある程度長く、具体的には平文ブロックのサイズである８ビットまたは１６ビットよりも大きいサイズであることが一般的である。一例として、ＣＢＣモードを用いた通信は、認証に際して共通鍵により符号化すべきデータなどであるが、このようなデータは、セキュリティなどの観点から意図的に長文が用いられる。
従って、ＣＢＣモードの通信においては、常に平文ブロックの数は２以上であり、この点で、本実施形態の初期化ベクタの生成が制限されるような状況が生じることはない。
【００６６】
また、本実施形態としては、最小で２番目の平文ブロックを１つのみ利用して初期化ベクタの生成を行うことも可能であるが、初期化ベクタの生成に利用する平文データの数は、２以上のほうが好ましく、また、平文データの数が多いほどセキュリティが高くなる。
【００６７】
［処理手順例］
図８のフローチャートは、暗号化装置１００における初期化ベクタ生成部１０４が初期化ベクタ生成のための生成アルゴリズムを設定するための処理手順例を示している。
例えば暗号化装置１００が起動されるのに応じて、初期化ベクタ生成部１０４は、初期化ベクタ生成指示情報記憶部１０３から初期化ベクタ生成指示情報を読み込む(ステップＳ１０１)。
初期化ベクタ生成部１０４は、ステップＳ１０１により読み込んだ初期化ベクタ生成指示情報が示す初期化ベクタの生成の仕方に従って、初期化ベクタ生成のための生成アルゴリズムを自己に設定する(ステップＳ１０２)。
【００６８】
なお、復号装置２００における初期化ベクタ生成部２０５も図８にて説明したのと同様の処理によって初期化ベクタ生成指示情報記憶部２０４から読み出した初期化ベクタ生成指示情報に従って、初期化ベクタ生成のための生成アルゴリズムを設定することができる。
【００６９】
図９のフローチャートは、暗号化装置１００が実行する暗号化と復号装置２００が実行する復号のための処理手順例を示している。
暗号化装置１００における初期化ベクタ生成部１０４は、暗号化対象の平文データが平文データ出力部１０１から出力されるのを待機している(ステップＳ２０１−ＮＯ)。
平文データ出力部１０１が平文データを出力するのに応じて（ステップＳ２０１−ＹＥＳ）、平文データ分割部１０２は、平文データ出力部１０１が出力した平文データを平文ブロックの単位で分割する(ステップＳ２０２)。
【００７０】
初期化ベクタ生成部１０４は、生成アルゴリズムに従って、ステップＳ２０２による平文データの分割によって得られた平文ブロックのうちから、初期化ベクタの生成に利用する平文ブロックを入力する(ステップＳ２０３)。
初期化ベクタ生成部１０４は、ステップＳ２０３により入力した平文ブロックについて、生成アルゴリズムに従った演算（例えば、排他的論理和を求める演算）を行うことにより初期化ベクタを生成する（ステップＳ２０４）。
【００７１】
暗号化部１０５は、ステップＳ２０４により初期化ベクタが生成されるのに応じて、ステップＳ２０２により分割された平文ブロックごとの暗号化を行う（ステップＳ２０５）。
つまり、暗号化部１０５は、図５にて説明したように、１番目の平文ブロックについて初期化ベクタを利用して暗号化を行うことにより、１番目の暗号文ブロックを得る。次に、暗号化部１０５は、２番目以降から最後の平文ブロックごとに、１つ前の暗号文ブロックを利用して暗号化を行って、２番目以降から最後の暗号文ブロックを得る。
【００７２】
暗号文データ出力部１０６は、ステップＳ２０５により得られた１番目から最後までの暗号文ブロックを連結して暗号文データを生成し、生成した暗号文データを送信部１０７から復号装置２００に送信させる（ステップＳ２０６）。
【００７３】
復号装置２００においては、ステップＳ２０６により送信された暗号文データが受信部２０１にて受信される（ステップＳ３０１）。
暗号文データ分割部２０２は、ステップＳ３０１にて受信された暗号文データを暗号文ブロック単位で分割する（ステップＳ３０２）。
【００７４】
復号部２０３は、ステップＳ３０２の分割によって得られた暗号文ブロックのうち、２番目以降の各暗号文ブロックを復号して２番目以降の各平文ブロックを得る（ステップＳ３０３）。ＣＢＣモードにおける復号は、図４の例からも理解されるように、２番目以降の暗号文ブロックについては、初期化ベクタが得られていなくとも、１つ前の暗号文ブロックを利用して復号が可能である。
【００７５】
次に、初期化ベクタ生成部２０５は、生成アルゴリズムに従って、ステップＳ３０３によって得られた２番目以降の平文ブロックのうちから、初期化ベクタの生成に利用する平文ブロックを入力する(ステップＳ３０４)。
初期化ベクタ生成部２０５は、ステップＳ３０４により入力した平文ブロックについて、生成アルゴリズムに従った演算（例えば、排他的論理和を求める演算）を行うことにより初期化ベクタを生成する（ステップＳ３０５）。
【００７６】
復号部２０３は、ステップＳ３０５によって生成された初期化ベクタを利用して１番目の暗号文ブロックを復号して１番目の暗号文ブロックを得る（ステップＳ３０６）。これにより、先のステップＳ３０３の処理と合わせて１番目から最後までの暗号文ブロックの復号が完了し、１番目から最後までの平文ブロックが得られる。
そこで、平文データ生成部２０６は、１番目から最後までの平文ブロックにより平文データを生成する（ステップＳ３０７）。
【００７７】
なお、復号部２０３は、ステップＳ３０３において、以下のように復号してもよい。つまり、復号部２０３は、２番目以降の暗号文ブロックのうち、初期化ベクタの生成に利用する平文データに対応する暗号文ブロックのみを先ず復号しておくようにする。そのうえで、復号部２０３は、ステップＳ３０６において、１番目の暗号文ブロックの復号と、ステップＳ３０３にて復号されなかった２番目以降の暗号文ブロックを復号してもよい。
【００７８】
［変形例］
図５及び図７の説明においては、初期化ベクタの生成に利用する平文ブロックとして、「２番目以降の平文ブロックから1つずつ順次選択」すべきことが初期化ベクタ生成指示情報により示されていた。
ここで、初期化ベクタの生成に利用する平文ブロックを、２番目以降の平文ブロックから「順次選択」するにあたっては、上記のように１つずつによる選択パターンにより選択するのではなく、他の選択パターンに従って順次選択していくようにしてもよい。
そこで、本実施形態の変形例として、初期化ベクタの生成に利用する平文ブロックについて、２番目以降の平文ブロックから順次選択する他の例について、図１０を参照して説明する。
【００７９】
図１０は、初期化ベクタの生成に利用する平文ブロックについて、「２番目以降の平文ブロックから１つおきに順次選択する」ことが初期化ベクタ生成指示情報により示されている場合を示している。
つまり、この場合において初期化ベクタの生成に利用する平文ブロックは、２番目を起点として以降において１つおきに選択した、平文ブロックＭ２、Ｍ４、Ｍ６、Ｍ８・・・・Ｍｍａｘである。なお、同図では、最後の平文ブロックＭｍａｘが（Ｅｖｅｎ：偶数番）である場合の例を示している。図示は省略するが、最後の平文ブロックＭｍａｘが奇数番である場合には、最後の平文ブロックＭｍａｘの１つ前の平文ブロックが、初期化ベクタの生成に利用する最後の平文ブロックとして選択される。
このような平文ブロックの選択が初期化ベクタ生成指示情報により示されていても、暗号化装置１００と復号装置２００のいずれもが、選択パターンに従って２番目以降から順次平文ブロックを選択していくことに変わりはない。従って、平文データを分割して得られる平文ブロックの数が例えばシーケンスごとに異なっていても、暗号化装置１００と復号装置２００は、初期化ベクタの生成に利用する平文ブロックとして常に互いに同じものを取得できる。
【００８０】
なお、一例として、平文データを分割して得られる平文ブロックの下限数が３であることが保証されている場合には、これに対応して、初期化ベクタ生成指示情報について「３番目以降の平文ブロックから順次選択する」という内容としてもよい。
つまり、初期化ベクタ生成指示情報が示す平文データの選択の仕方について、「ｎ番目以降の平文ブロックから順次選択」するというように表現する。この場合、変数ｎについては、平文データを分割して得られる平文ブロックの下限数をＮとして、２≦ｎ≦Ｎの範囲であればいずれの数であってもよい。
【００８１】
また、平文データを分割して得られる平文ブロックの下限数が保証されているのであれば、初期化ベクタ生成指示情報により、平文ブロックの下限数以下の範囲内で選択対象の平文ブロックを個別に指定することもできる。
具体例を図１１に示す。同図においては、２番目の平文ブロックＭ２から最後の平文ブロックＭｍａｘの間において、平文ブロックＭｉ、Ｍｊ、Ｍｋの３つの平文ブロックが選択対象として個別に指定されている。この場合の初期化ベクタ生成指示情報は、「ｉ番目、ｊ番目、ｋ番目の平文ブロックを選択」すべきことを示す。
【００８２】
なお、上述の暗号化装置１００と復号装置２００の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述の暗号化装置１００と復号装置２００の処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、インターネットやＷＡＮ、ＬＡＮ、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、ＣＤ−ＲＯＭ等の非一過性の記録媒体であってもよい。また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部または外部に設けられた記録媒体も含まれる。配信サーバの記録媒体に記憶されるプログラムのコードは、端末装置で実行可能な形式のプログラムのコードと異なるものでもよい。すなわち、配信サーバからダウンロードされて端末装置で実行可能な形でインストールができるものであれば、配信サーバで記憶される形式は問わない。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後に端末装置で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【００８３】
１００  暗号化装置
１０１  平文データ出力部
１０２  平文データ分割部
１０３  初期化ベクタ生成指示情報記憶部
１０４  初期化ベクタ生成部
１０５  暗号化部
１０６  暗号文データ出力部
１０７  送信部
２００  復号装置
２０１  受信部
２０２  暗号文データ分割部
２０３  復号部
２０４  初期化ベクタ生成指示情報記憶部
２０５  初期化ベクタ生成部
２０６  平文データ生成部
３００  カード
４００  リーダライタ
【図１】
2015022269.tif 000003
【図２】
2015022269.tif 000004
【図３】
2015022269.tif 000005
【図４】
2015022269.tif 000006
【図５】
2015022269.tif 000007
【図６】
2015022269.tif 000008
【図７】
2015022269.tif 000009
【図８】
2015022269.tif 000010
【図９】
2015022269.tif 000011
【図１０】
2015022269.tif 000012
【図１１】
2015022269.tif 000013