(57)【特許請求の範囲】
【請求項１】
データを複数の平文ブロックに分割する分割部と、
暗号鍵に基づくブロック暗号化方式を用いて、前記複数の平文ブロックの一部のブロックおよび前記データの暗号化のための初期値の少なくとも１つを暗号化する暗号化部と、
前記複数の平文ブロックのうち、前記ブロック暗号化方式により暗号化されていない残りのブロックのそれぞれと、前記暗号化部によって以前に生成された暗号文ブロックおよび前記以前に生成された暗号文ブロックの生成に用いられた平文ブロックとに対して、非暗号鍵に基づくエンコード方式を用いて順次エンコードして前記残りのブロックのそれぞれに対する暗号文ブロックを生成するエンコード部とを含むデータ暗号化装置。
【請求項２】
前記ブロック暗号化方式は、対称鍵または非対称鍵を用いる暗号化方式を含む請求項１に記載のデータ暗号化装置。
【請求項３】
前記ブロック暗号化方式は、ホワイトボックスに基づく暗号化方式を含む請求項１に記載のデータ暗号化装置。
【請求項４】
前記エンコード方式は、論理演算、一方向性関数（ｏｎｅ−ｗａｙ ｆｕｎｃｔｉｏｎ）、一方向性置換（ｏｎｅ−ｗａｙ ｐｅｒｍｕｔａｉｏｎ）、および論理関数の少なくとも１つを用いるエンコード方式を含む請求項１に記載のデータ暗号化装置。
【請求項５】
前記初期値は、初期化ベクトルまたはカウンタ値を含む請求項１に記載のデータ暗号化装置。
【請求項６】
前記暗号化部は、前記初期化ベクトルまたは前記カウンタ値を用いて前記一部のブロックを暗号化する請求項５に記載のデータ暗号化装置。
【請求項７】
前記エンコード部は、前記初期化ベクトルまたは前記カウンタ値を用いて前記残りのブロックをエンコードする請求項５に記載のデータ暗号化装置。
【請求項８】
前記エンコード部は、前記複数の平文ブロックのうち、前記ブロック暗号化方式により暗号化されていない残りのブロックと、前記暗号化部によって以前に生成された暗号文ブロックとに対して、非暗号鍵に基づくエンコード方式を用いて順次エンコードする請求項１に記載のデータ暗号化装置。
【請求項９】
暗号鍵に基づくブロック復号化方式を用いて、暗号化されたデータの一部のブロックを復号化する復号化部と、
前記暗号化されたデータの前記一部のブロックを除いた残りのブロックのそれぞれと、前記復号化部によって以前に生成された平文ブロックおよび前記以前に生成された平文ブロックの生成に用いられた暗号文ブロックとに対して、非暗号鍵に基づくデコード方式を用いて順次デコードして前記残りのブロックのそれぞれに対する平文ブロックを生成するデコード部とを含むデータ復号化装置。
【請求項１０】
前記ブロック復号化方式は、対称鍵または非対称鍵を用いる復号化方式を含む請求項９に記載のデータ復号化装置。
【請求項１１】
前記ブロック復号化方式は、ホワイトボックスに基づく復号化方式を含む請求項９に記載のデータ復号化装置。
【請求項１２】
前記デコード方式は、論理演算、一方向性関数（ｏｎｅ−ｗａｙ ｆｕｎｃｔｉｏｎ）、一方向性置換（ｏｎｅ−ｗａｙ ｐｅｒｍｕｔａｉｏｎ）、および論理関数の少なくとも１つを用いるデコード方式を含む請求項９に記載のデータ復号化装置。
【請求項１３】
前記デコード部は、前記暗号化されたデータの生成に用いられた初期化ベクトルまたはカウンタ値を用いて、前記残りのブロックをデコードする請求項９に記載のデータ復号化装置。
【請求項１４】
前記デコード部は、前記暗号化されたデータの前記一部のブロックを除いた残りのブロックと、前記復号化部によって以前に生成された平文ブロックの生成に用いられた暗号文ブロックとに対して、非暗号鍵に基づくデコード方式を用いて順次デコードする請求項９に記載のデータ復号化装置。
【請求項１５】
１以上のプロセッサ、および前記１以上のプロセッサによって実行される１以上のプログラムを格納するメモリを備えたコンピューティング装置を用いてデータを暗号化する方法であって、
データを複数の平文ブロックに分割するステップと、
暗号鍵に基づくブロック暗号化方式を用いて、前記複数の平文ブロックの一部のブロックおよび前記データの暗号化のための初期値の少なくとも１つを暗号化するステップと、
前記複数の平文ブロックのうち、前記ブロック暗号化方式により暗号化されていない残りのブロックのそれぞれと、前記暗号化するステップによって以前に生成された暗号文ブロックおよび前記以前に生成された暗号文ブロックの生成に用いられた平文ブロックとに対して、非暗号鍵に基づくエンコード方式を用いて順次エンコードして前記残りのブロックのそれぞれに対する暗号文ブロックを生成するステップとを含むデータ暗号化方法。
【請求項１６】
前記ブロック暗号化方式は、対称鍵または非対称鍵を用いる暗号化方式を含む請求項１５に記載のデータ暗号化方法。
【請求項１７】
前記ブロック暗号化方式は、ホワイトボックスに基づく暗号化方式を含む請求項１５に記載のデータ暗号化方法。
【請求項１８】
前記エンコード方式は、論理演算、一方向性関数（ｏｎｅ−ｗａｙ ｆｕｎｃｔｉｏｎ）、一方向性置換（ｏｎｅ−ｗａｙ ｐｅｒｍｕｔａｉｏｎ）、および論理関数の少なくとも１つを用いるエンコード方式を含む請求項１５に記載のデータ暗号化方法。
【請求項１９】
前記初期値は、初期化ベクトルまたはカウンタ値を含む請求項１５に記載のデータ暗号化方法。
【請求項２０】
前記暗号化するステップは、前記初期化ベクトルまたは前記カウンタ値を用いて前記一部のブロックを暗号化する請求項１９に記載のデータ暗号化方法。
【請求項２１】
前記エンコードするステップは、前記初期化ベクトルまたは前記カウンタ値を用いて前記残りのブロックをエンコードする請求項１９に記載のデータ暗号化方法。
【請求項２２】
前記エンコードするステップは、前記複数の平文ブロックのうち、前記ブロック暗号化方式により暗号化されていない残りのブロックと、前記暗号化するステップによって以前に生成された暗号文ブロックとに対して、非暗号鍵に基づくエンコード方式を用いて順次エンコードする請求項１５に記載のデータ暗号化方法。
【請求項２３】
１以上のプロセッサ、および前記１以上のプロセッサによって実行される１以上のプログラムを格納するメモリを備えたコンピューティング装置を用いてデータを復号化する方法であって、
暗号鍵に基づくブロック復号化方式を用いて、暗号化されたデータの一部のブロックを復号化するステップと、
前記暗号化されたデータの前記一部のブロックを除いた残りのブロックのそれぞれと、前記復号化するステップによって以前に生成された平文ブロックおよび前記以前に生成された平文ブロックの生成に用いられた暗号文ブロックとに対して、非暗号鍵に基づくデコード方式を用いて順次デコードして前記残りのブロックのそれぞれに対する平文ブロックを生成するステップとを含むデータ復号化方法。
【請求項２４】
前記ブロック復号化方式は、対称鍵または非対称鍵を用いる復号化方式を含む請求項２３に記載のデータ復号化方法。
【請求項２５】
前記ブロック復号化方式は、ホワイトボックスに基づく復号化方式を含む請求項２３に記載のデータ復号化方法。
【請求項２６】
前記デコード方式は、論理演算、一方向性関数（ｏｎｅ−ｗａｙ ｆｕｎｃｔｉｏｎ）、一方向性置換（ｏｎｅ−ｗａｙ ｐｅｒｍｕｔａｉｏｎ）、および論理関数の少なくとも１つを用いるデコード方式を含む請求項２３に記載のデータ復号化方法。
【請求項２７】
前記デコードするステップは、前記暗号化されたデータの生成に用いられた初期化ベクトルまたはカウンタ値を用いて、前記残りのブロックをデコードする請求項２３に記載のデータ復号化方法。
【請求項２８】
前記デコードするステップは、前記暗号化されたデータの前記一部のブロックを除いた残りのブロックと、前記復号化するステップによって以前に生成された平文ブロックの生成に用いられた暗号文ブロックとに対して、非暗号鍵に基づくデコード方式を用いて順次デコードする請求項２３に記載のデータ復号化方法。
【請求項２９】
以下のステップをコンピュータ上で実行させるための記録媒体に格納されたコンピュータプログラムであって、
データを複数の平文ブロックに分割するステップと、
暗号鍵に基づくブロック暗号化方式を用いて、前記複数の平文ブロックの一部のブロックおよび前記データの暗号化のための初期値の少なくとも１つを暗号化するステップと、
前記複数の平文ブロックのうち、前記ブロック暗号化方式により暗号化されていない残りのブロックのそれぞれと、前記暗号化するステップによって以前に生成された暗号文ブロックおよび前記以前に生成された暗号文ブロックの生成に用いられた平文ブロックとに対して、非暗号鍵に基づくエンコード方式を用いて順次エンコードして前記残りのブロックのそれぞれに対する暗号文ブロックを生成するステップとを備える記録媒体に格納されたコンピュータプログラム。
【請求項３０】
以下のステップをコンピュータ上で実行させるための記録媒体に格納されたコンピュータプログラムであって、
暗号鍵に基づくブロック復号化方式を用いて、暗号化されたデータの一部のブロックを復号化するステップと、
前記暗号化されたデータの前記一部のブロックを除いた残りのブロックのそれぞれと、前記復号化するステップによって以前に生成された平文ブロックおよび前記以前に生成された平文ブロックの生成に用いられた暗号文ブロックとに対して、非暗号鍵に基づくデコード方式を用いて順次デコードして前記残りのブロックのそれぞれに対する平文ブロックを生成するステップとを備える記録媒体に格納されたコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの暗号化及び復号化の技術に関する。
【背景技術】
【０００２】
従来のブロック暗号アルゴリズムを用いるデータ暗号化では、暗号鍵が攻撃者に漏洩すると、暗号化されたデータの復号化が可能であり、データが露出するため、暗号鍵の保護・管理が非常に重要な問題であった。
【０００３】
一般に、ブロック暗号を用いるデータ暗号化では、暗号鍵の長さ、暗号ブロックのサイズ、ラウンド数がセキュリティ性に影響を与える。この中で、メッセージをブロック単位に分けて暗号化処理を行う際の運用モード（ｍｏｄｅ ｏｆ ｏｐｅｒａｔｉｏｎ）もまた、重要な役割を果たす。運用モードを使用するブロック暗号アルゴリズムは、ブロック単位で暗号化を行い、すべてのブロックに同一の暗号鍵で暗号化を行う。
【０００４】
しかしながら、従来のブロック暗号アルゴリズムを用いるデータ暗号化は、データ暗号化の長さが長ければ長いほど、データ暗号化ブロックが増え、その数だけ暗号アルゴリズムを使用して暗号化を行った。そのため、データが増えるほどデータ暗号化の速度も遅くなってしまい、大容量の暗号化などの暗号化速度が重要となる場合には使用が困難な問題点がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、ブロック暗号化方式およびエンコード方式を用いてデータ暗号化を行い、これにより、暗号文を復号化する新しい手法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一実施形態に係るデータ暗号化装置は、データを複数の平文ブロックに分割する分割部と、暗号鍵に基づくブロック暗号化方式を用いて、前記複数の平文ブロックの一部のブロックおよび前記データの暗号化のための初期値の少なくとも１つを暗号化する暗号化部と、非暗号鍵に基づくエンコード方式を用いて、前記複数の平文ブロックのうち、前記ブロック暗号化方式により暗号化されていない残りのブロックをエンコードするエンコード部とを含む。
【０００７】
前記ブロック暗号化方式は、対称鍵または非対称鍵を用いる暗号化方式を含むことができる。
【０００８】
前記ブロック暗号化方式は、ホワイトボックスに基づく暗号化方式を含むことができる。
【０００９】
前記エンコード方式は、論理演算、一方向性関数（ｏｎｅ−ｗａｙ ｆｕｎｃｔｉｏｎ）、一方向性置換（ｏｎｅ−ｗａｙ ｐｅｒｍｕｔａｉｏｎ）、および論理関数の少なくとも１つを用いるエンコード方式を含むことができる。
【００１０】
前記初期値は、初期化ベクトルまたはカウンタ値を含むことができる。
【００１１】
前記暗号化部は、前記初期化ベクトルまたは前記カウンタ値を用いて前記一部のブロックを暗号化することができる。
【００１２】
前記エンコード部は、前記初期化ベクトルまたは前記カウンタ値を用いて前記残りのブロックをエンコードすることができる。
【００１３】
前記エンコード部は、以前に生成された暗号文ブロックを用いて、前記残りのブロックのそれぞれを順次エンコードすることができる。
【００１４】
前記エンコード部は、以前に生成された暗号文ブロックおよび前記以前に生成された暗号文ブロックの生成に用いられた平文ブロックを用いて、前記残りのブロックのそれぞれを順次エンコードすることができる。
【００１５】
本発明の一実施形態に係るデータ復号化装置は、暗号鍵に基づくブロック復号化方式を用いて、暗号化されたデータの一部のブロックを復号化する復号化部と、非暗号鍵に基づくデコード方式を用いて、前記暗号化されたデータの前記一部のブロックを除いた残りのブロックをデコードするデコード部とを含む。
【００１６】
前記ブロック復号化方式は、対称鍵または非対称鍵を用いる復号化方式を含むことができる。
【００１７】
前記ブロック復号化方式は、ホワイトボックスに基づく復号化方式を含むことができる。
【００１８】
前記デコード方式は、論理演算、一方向性関数（ｏｎｅ−ｗａｙ ｆｕｎｃｔｉｏｎ）、一方向性置換（ｏｎｅ−ｗａｙ ｐｅｒｍｕｔａｉｏｎ）、および論理関数の少なくとも１つを用いるデコード方式を含むことができる。
【００１９】
前記デコード部は、前記暗号化されたデータの生成に用いられた初期化ベクトルまたはカウンタ値を用いて、前記残りのブロックをデコードすることができる。
【００２０】
前記デコード部は、以前に生成された平文ブロックの生成に用いられた暗号文ブロックを用いて、前記残りのブロックのそれぞれを順次デコードすることができる。
【００２１】
前記デコード部は、以前に生成された平文ブロックおよび前記以前に生成された平文ブロックの生成に用いられた暗号文ブロックを用いて、前記残りのブロックのそれぞれを順次デコードすることができる。
【００２２】
本発明の一実施形態に係るデータ暗号化方法は、データを複数の平文ブロックに分割するステップと、暗号鍵に基づくブロック暗号化方式を用いて、前記複数の平文ブロックの一部のブロックおよび前記データの暗号化のための初期値の少なくとも１つを暗号化するステップと、非暗号鍵に基づくエンコード方式を用いて、前記複数の平文ブロックのうち、前記ブロック暗号化方式により暗号化されていない残りのブロックをエンコードするステップとを含む。
【００２３】
前記ブロック暗号化方式は、対称鍵または非対称鍵を用いる暗号化方式を含むことができる。
【００２４】
前記ブロック暗号化方式は、ホワイトボックスに基づく暗号化方式を含むことができる。
【００２５】
前記エンコード方式は、論理演算、一方向性関数（ｏｎｅ−ｗａｙ ｆｕｎｃｔｉｏｎ）、一方向性置換（ｏｎｅ−ｗａｙ ｐｅｒｍｕｔａｉｏｎ）、および論理関数の少なくとも１つを用いるエンコード方式を含むことができる。
【００２６】
前記初期値は、初期化ベクトルまたはカウンタ値を含むことができる。
【００２７】
前記暗号化するステップは、前記初期化ベクトルまたは前記カウンタ値を用いて前記一部のブロックに対する暗号文ブロックを生成することができる。
【００２８】
前記エンコードするステップは、前記初期化ベクトルまたは前記カウンタ値を用いて前記残りのブロックをエンコードすることができる。
【００２９】
前記エンコードするステップは、以前に生成された暗号文ブロックを用いて、前記残りのブロックのそれぞれを順次エンコードすることができる。
【００３０】
前記エンコードするステップは、以前に生成された暗号文ブロックおよび前記以前に生成された暗号文ブロックの生成に用いられた平文ブロックを用いて、前記残りのブロックのそれぞれを順次エンコードすることができる。
【００３１】
本発明の一実施形態に係るデータ復号化方法は、暗号鍵に基づくブロック復号化方式を用いて、暗号化されたデータの一部のブロックを復号化するステップと、非暗号鍵に基づくデコード方式を用いて、前記暗号化されたデータの前記一部のブロックを除いた残りのブロックをデコードするステップとを含む。
【００３２】
前記ブロック復号化方式は、対称鍵または非対称鍵を用いる復号化方式を含むことができる。
【００３３】
前記ブロック復号化方式は、ホワイトボックスに基づく復号化方式を含むことができる。
【００３４】
前記デコード方式は、論理演算、一方向性関数（ｏｎｅ−ｗａｙ ｆｕｎｃｔｉｏｎ）、一方向性置換（ｏｎｅ−ｗａｙ ｐｅｒｍｕｔａｉｏｎ）、および論理関数の少なくとも１つを用いるデコード方式を含むことができる。
【００３５】
前記デコードするステップは、前記暗号化されたデータの生成に用いられた初期化ベクトルまたはカウンタ値を用いて、前記残りのブロックに対する平文ブロックを生成することができる。
【００３６】
前記デコードするステップは、以前に生成された平文ブロックの生成に用いられた暗号文ブロックを用いて、前記残りのブロックのそれぞれを順次デコードすることができる。
【００３７】
前記デコードするステップは、以前に生成された平文ブロックおよび前記以前に生成された平文ブロックの生成に用いられた暗号文ブロックを用いて、前記残りのブロックのそれぞれを順次デコードすることができる。
【００３８】
本発明の一実施形態に係る記録媒体に格納されたコンピュータプログラムは、ハードウェアと結合され、データを複数の平文ブロックに分割するステップと、暗号鍵に基づくブロック暗号化方式を用いて、前記複数の平文ブロックの一部のブロックおよび前記データの暗号化のための初期値の少なくとも１つを暗号化するステップと、非暗号鍵に基づくエンコード方式を用いて、前記複数の平文ブロックのうち、前記ブロック暗号化方式により暗号化されていない残りのブロックをエンコードするステップとを実行させる。
【００３９】
本発明の一実施形態に係る記録媒体に格納されたコンピュータプログラムは、ハードウェアと結合され、暗号鍵に基づくブロック復号化方式を用いて、暗号化されたデータの一部のブロックを復号化するステップと、非暗号鍵に基づくデコード方式を用いて、前記暗号化されたデータの前記一部のブロックを除いた残りのブロックをデコードするステップとを実行させる。
【発明の効果】
【００４０】
本発明によると、暗号化されたデータの生成のために、ブロック暗号化方式を用いて一部の暗号文ブロックを生成するとともに、残りの暗号文ブロックをエンコード方式により処理することで、データ暗号化のための演算量を低減することにより、大容量の暗号化の場合であっても迅速な暗号化が可能となる。
【図面の簡単な説明】
【００４１】
【図１】図１は、本発明の一実施形態に係るデータ暗号化装置のブロック図である。
【図２】図２は、本発明の一実施形態に係るデータ復号化装置のブロック図である。
【図３ａ】図３ａは、本発明の一実施形態に係るＥＣＢ（Ｅｌｅｃｔｒｏｎｉｃ Ｃｏｄｅ Ｂｏｏｋ）モードを説明するための図である。
【図３ｂ】図３ｂは、本発明の一実施形態に係るＥＣＢ（Ｅｌｅｃｔｒｏｎｉｃ Ｃｏｄｅ Ｂｏｏｋ）モードを説明するための図である。
【図４ａ】図４ａは、本発明の一実施形態に係るＣＢＣ（Ｃｉｐｈｅｒ Ｂｌｏｃｋ Ｃｈａｉｎｉｎｇ）モードを説明するための図である。
【図４ｂ】図４ｂは、本発明の一実施形態に係るＣＢＣ（Ｃｉｐｈｅｒ Ｂｌｏｃｋ Ｃｈａｉｎｉｎｇ）モードを説明するための図である。
【図５ａ】図５ａは、本発明の他の実施形態に係るＣＢＣモードを説明するための図である。
【図５ｂ】図５ｂは、本発明の他の実施形態に係るＣＢＣモードを説明するための図である。
【図６ａ】図６ａは、本発明のまた他の実施形態に係るＣＢＣモードを説明するための図である。
【図６ｂ】図６ｂは、本発明のまた他の実施形態に係るＣＢＣモードを説明するための図である。
【図７ａ】図７ａは、本発明の一実施形態に係るＰＣＢＣ（Ｐｒｏｐａｇａｔｉｎｇ Ｃｉｐｈｅｒ Ｂｌｏｃｋ Ｃｈａｉｎｉｎｇ）モードを説明するための図である。
【図７ｂ】図７ｂは、本発明の一実施形態に係るＰＣＢＣ（Ｐｒｏｐａｇａｔｉｎｇ Ｃｉｐｈｅｒ Ｂｌｏｃｋ Ｃｈａｉｎｉｎｇ）モードを説明するための図である。
【図８ａ】図８ａは、本発明の他の実施形態に係るＰＣＢＣ（Ｐｒｏｐａｇａｔｉｎｇ Ｃｉｐｈｅｒ Ｂｌｏｃｋ Ｃｈａｉｎｉｎｇ）モードを説明するための図である。
【図８ｂ】図８ｂは、本発明の他の実施形態に係るＰＣＢＣ（Ｐｒｏｐａｇａｔｉｎｇ Ｃｉｐｈｅｒ Ｂｌｏｃｋ Ｃｈａｉｎｉｎｇ）モードを説明するための図である。
【図９ａ】図９ａは、本発明のまた他の実施形態に係るＰＣＢＣ（Ｐｒｏｐａｇａｔｉｎｇ Ｃｉｐｈｅｒ Ｂｌｏｃｋ Ｃｈａｉｎｉｎｇ）モードを説明するための図である。
【図９ｂ】図９ｂは、本発明のまた他の実施形態に係るＰＣＢＣ（Ｐｒｏｐａｇａｔｉｎｇ Ｃｉｐｈｅｒ Ｂｌｏｃｋ Ｃｈａｉｎｉｎｇ）モードを説明するための図である。
【図１０ａ】図１０ａは、本発明の一実施形態に係るＣＦＢ（Ｃｉｐｈｅｒ ＦｅｅｄＢａｃｋ）モードを説明するための図である。
【図１０ｂ】図１０ｂは、本発明の一実施形態に係るＣＦＢ（Ｃｉｐｈｅｒ ＦｅｅｄＢａｃｋ）モードを説明するための図である。
【図１１ａ】図１１ａは、本発明の他の実施形態に係るＣＦＢ（Ｃｉｐｈｅｒ ＦｅｅｄＢａｃｋ）モードを説明するための図である。
【図１１ｂ】図１１ｂは、本発明の他の実施形態に係るＣＦＢ（Ｃｉｐｈｅｒ ＦｅｅｄＢａｃｋ）モードを説明するための図である。
【図１２ａ】図１２ａは、本発明のまた他の実施形態に係るＣＦＢ（Ｃｉｐｈｅｒ ＦｅｅｄＢａｃｋ）モードを説明するための図である。
【図１２ｂ】図１２ｂは、本発明のまた他の実施形態に係るＣＦＢ（Ｃｉｐｈｅｒ ＦｅｅｄＢａｃｋ）モードを説明するための図である。
【図１３ａ】図１３ａは、本発明の一実施形態に係るＯＦＢ（Ｏｕｔｐｕｔ ＦｅｅｄＢａｃｋ）モードを説明するための図である。
【図１３ｂ】図１３ｂは、本発明の一実施形態に係るＯＦＢ（Ｏｕｔｐｕｔ ＦｅｅｄＢａｃｋ）モードを説明するための図である。
【図１４ａ】図１４ａは、本発明の他の実施形態に係るＯＦＢ（Ｏｕｔｐｕｔ ＦｅｅｄＢａｃｋ）モードを説明するための図である。
【図１４ｂ】図１４ｂは、本発明の他の実施形態に係るＯＦＢ（Ｏｕｔｐｕｔ ＦｅｅｄＢａｃｋ）モードを説明するための図である。
【図１５ａ】図１５ａは、本発明の一実施形態に係るＣＴＲ（Ｃｏｕｎｔｅｒ）モードを説明するための図である。
【図１５ｂ】図１５ｂは、本発明の一実施形態に係るＣＴＲ（Ｃｏｕｎｔｅｒ）モードを説明するための図である。
【図１６ａ】図１６ａは、本発明の他の実施形態に係るＣＴＲ（Ｃｏｕｎｔｅｒ）モードを説明するための図である。
【図１６ｂ】図１６ｂは、本発明の他の実施形態に係るＣＴＲ（Ｃｏｕｎｔｅｒ）モードを説明するための図である。
【図１７ａ】図１７ａは、本発明のまた他の実施形態に係るＣＴＲ（Ｃｏｕｎｔｅｒ）モードを説明するための図である。
【図１７ｂ】図１７ｂは、本発明のまた他の実施形態に係るＣＴＲ（Ｃｏｕｎｔｅｒ）モードを説明するための図である。
【図１８】図１８は、本発明の一実施形態に係るデータ暗号化方法のフローチャートである。
【図１９】図１９は、本発明の一実施形態に係るデータ復号化方法のフローチャートである。
【発明を実施するための形態】
【００４２】
以下、図面を参照して、本発明の実施形態をより具体的に説明する。以下の詳細な説明は、本明細書に記載されている方法、装置及び／又はシステムに関する総合的な理解を助けるために提供される。但し、これらは例示に過ぎず、本発明はこれらに制限されるものではない。
【００４３】
本発明の実施形態を説明するにあたり、関連する公知技術に対する具体的な説明が本発明の要旨を不明確にする虞があると判断される場合には、その詳細な説明を省略する。また、後述する用語は、本発明における機能を考慮して定義された用語であり、使用者、運用者の意図または慣例などによって異なり得る。従って、その定義は、本明細書全般に亘る内容に基づいて行われるべきである。詳細な説明で使用される用語は、単に本発明の実施形態を記述するためのものであり、決して制限的であってはならない。明確に異なる意味で使用されない限り、単数形の表現は複数形の意味を含む。本説明において、「含む」または「備える」のような表現は、如何なる特性、数字、段階、動作、要素、これらの一部または組合せを指すためのものであり、記述するもの以外に、一つ又はそれ以上の他の特性、数字、段階、動作、要素、これらの一部または組合せの存在又は可能性を排除して解釈してはならない。
【００４４】
図１は、例示的な実施形態に係るデータ暗号化装置を示す図であり、図２は、例示的な実施形態に係るデータ復号化装置を示す図である。いくつかの実施形態では、例示的なデータ暗号化装置１００および例示的なデータ復号化装置２００は、それぞれ別個のコンピューティング装置内に実現または包含され得る。それぞれのコンピューティング装置は、１以上のプロセッサと、該プロセッサによってアクセス可能なメモリなどのコンピュータ読み取り可能な記録媒体とを含むことができる。コンピュータ読み取り可能な記録媒体は、プロセッサの内部または外部に配置してもよく、よく知られている様々な手段によりプロセッサと接続してもよい。コンピュータ読み取り可能な記録媒体には、コンピュータ実行可能なコマンドが格納されていてもよい。プロセッサは、コンピュータ読み取り可能な記録媒体に格納されたコマンドを実行できる。そのコマンドは、プロセッサによって実行される場合、コンピューティング装置により例示的な実施形態に係る動作を実行するようにすることができる。
【００４５】
図１は、本発明の一実施形態に係るデータ暗号化装置１００のブロック図である。
【００４６】
図１を参照すると、本発明の一実施形態に係るデータ暗号化装置１００は、分割部１１０と、暗号化部１３０と、エンコード部１５０とを含む。
【００４７】
データ暗号化装置１００は、平文データ（例えば、デジタル化された平文）を暗号化し、暗号化されたデータ（例えば、デジタル化された暗号文）を生成するように構成される。
【００４８】
分割部１１０は、暗号化の対象となる平文データを複数の平文ブロックに分割するものである。例えば、分割部１１０は、平文データを一定のサイズのブロック単位に分割し、複数の平文ブロックを生成することができる。その際に、例えば、分割されたブロックのサイズを揃えるために、最後のブロックに既に定義された値を詰め込むパディング（Ｐａｄｄｉｎｇ）を行うことができる。
【００４９】
暗号化部１３０は、暗号鍵に基づくブロック暗号化方式を用いて、複数の平文ブロックの一部のブロックおよび暗号化のための初期値の少なくとも１つを暗号化する。
【００５０】
ここで、暗号鍵に基づくブロック暗号化方式は、対称鍵または非対称鍵を用いてデータをブロック単位で暗号化する様々な形態の暗号化方式を含むことができる。例えば、暗号化部１３０は、ＡＥＳ（Ａｄｖａｎｃｅｄ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）、ＤＥＳ（Ｄａｔａ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）、３ＤＥＳ、Ｂｌｏｗｆｉｓｈ、ＩＤＥＡ（Ｉｎｔｅｒｎａｔｉｏｎａｌ Ｄａｔａ Ｅｎｃｒｙｐｔｉｏｎ Ａｌｇｏｒｉｔｈｍ）、ＲＣ２、ＲＣ５、ＲＣ６、ＳＥＥＤ、ＡＲＩＡ、ＲＳＡ（Ｒｉｖｅｓｔ ＳｈａｍｉｒＡｄｌｅｍａｎ）、ＤＳＡ（Ｄｉｇｉｔａｌ Ｓｉｇｎａｔｕｒｅ Ｓｔａｎｄａｒｄ）、ＥＣＣ（Ｅｌｌｉｐｔｉｃ Ｃｕｒｖｅ Ｃｒｙｐｔｏｓｙｓｔｅｍ）、Ｅｌｇａｍａｌ、ホワイトボックスに基づく暗号化アルゴリズムなどの対称鍵または非対称鍵を用いる公知のブロック暗号化アルゴリズムを用いて暗号分ブロックを生成することができる。
【００５１】
一方、初期値は、例えば、任意のビット列である初期化ベクトル（Ｉｎｉｔｉａｌｉｚａｔｉｏｎ Ｖｅｃｔｏｒ：ＩＶ）、又は平文ブロックを暗号化するたびに１ずつ増加するカウンタ値を含むことができる。このとき、暗号化部１３０は、後述する運用モードによって、初期値（初期化ベクトルまたは初期カウンタ値）を暗号鍵に基づくブロック暗号化方式により暗号化して暗号文ブロックを生成するか、または初期値（例えば、初期化ベクトルまたは初期カウンタ値）を用いて、平文ブロックの一部のブロックを暗号鍵に基づくブロック暗号化方式により暗号化し、暗号文ブロックを生成することができる。
【００５２】
一方、エンコード部１５０は、非暗号鍵に基づくエンコード方式を用いて、複数の平文ブロックのうち、暗号化部１３０により暗号化されていない残りのブロックをエンコードする。
【００５３】
その際に、一実施形態によると、非暗号鍵に基づくエンコード方式は、暗号鍵を用いずにデータを隠すことができる様々な形態のエンコード方式を含むことができる。例えば、非暗号鍵に基づくエンコード方式は、論理演算、一方向性関数（ｏｎｅ−ｗａｙ ｆｕｎｃｔｉｏｎ）、一方向性置換（ｏｎｅ−ｗａｙ ｐｅｒｍｕｔａｉｏｎ）、および複数の論理演算で構成される論理関数の少なくとも１つを用いるエンコード方式を含むことができる。
【００５４】
本発明の一実施形態によると、エンコード部１５０は、後述する運用モードによって、初期値（例えば、初期化ベクトルまたはカウンタ値）を用いて、暗号化部１３０により暗号化されていない平文ブロックをエンコードし、暗号文ブロックを生成することができる。
【００５５】
また、本発明の一実施形態によると、エンコード部１５０は、後述する運用モードによって、暗号化部１３０により暗号化されていない平文ブロックを順次エンコードして暗号文ブロックを生成するが、以前のステップで生成された暗号文ブロックを用いるか、又は以前のステップで生成された暗号文ブロック及び当該暗号文ブロックの生成のために用いられた平文ブロックを用いて、暗号文ブロックを生成することができる。
【００５６】
一方、本発明の一実施形態によると、暗号化部１３０およびエンコード部１５０は、ブロック暗号化に利用される従来の暗号化運用モードと類似した方式により、平文データを暗号化することができる。例えば、暗号化部１３０およびエンコード部１５０は、ＥＣＢ（Ｅｌｅｃｔｒｏｎｉｃ Ｃｏｄｅ Ｂｌｏｏｋ）モード、ＣＢＣ（Ｃｉｐｈｅｒ Ｂｌｏｃｋ Ｃｈａｎｉｎｉｎｇ）モード、ＰＣＢＣ（Ｐｒｏｐａｇａｔｉｎｇ Ｃｉｐｈｅｒ Ｂｌｏｃｋ Ｃｈａｉｎｉｎｇ）モード、ＣＦＢ（ｃｉｐｈｅｒ ＦｅｅｄＢａｃｋ）モード、ＯＦＢ（Ｏｕｔｐｕｔ ＦｅｅｄＢａｃｋ）モード、及びＣＴＲ（Ｃｏｕｎｔｅｒ）モードのいずれかの運用モードで平文データを暗号化できる。但し、従来のブロック暗号化に利用される暗号化運用モードでは、平文データの暗号化のために一つの暗号化アルゴリズムが適用されるのに対して、本発明の実施形態で利用される運用モードでは、平文データの暗号化のために、ブロック暗号化方式とエンコード方式が適用される点で差異がある。つまり、本発明の実施形態により暗号化されたデータは、暗号鍵に基づくブロック暗号化方式により生成された暗号文ブロックと、非暗号鍵に基づくエンコード方式により生成された暗号文ブロックとを含むことになる。運用モードを用いる具体的な動作の詳細については、後述することとする。
【００５７】
一方、本発明の一実施形態によると、データ暗号化装置１００は、初期値（例えば、初期化ベクトルまたはカウンタ値）を用いる運用モードによって暗号化されたデータを生成する場合は、初期値を生成するのための初期値生成部１７０をさらに含むことができる。
【００５８】
一方、分割部１１０、暗号化部１３０、エンコード部１５０および初期値生成部１７０は、データ暗号化装置１００内で行う機能によって分類したものである。図１では、分割部１１０、暗号化部１３０、エンコード部１５０および初期値生成部１７０を分離された構成として示しているが、これに限定されず、具体的な動作において明確に区分されないことがある。
【００５９】
また、前述の例では、暗号化部１３０が、公知の特定の暗号化アルゴリズムを用いて暗号化を行うとして説明したが、これに限定されるものではない。例えば、暗号化部１３０およびエンコード部１５０は、所定の運用モードに基づいて、平文データの一部を対称鍵または非対称鍵を用いてブロック暗号化方式により暗号化し、平文データの残りの一部を暗号鍵を使用しない所定のエンコード方式によりエンコードするように設計された暗号化アルゴリズムを用いて、平文データを暗号化することができる。
【００６０】
一方、一実施形態では、分割部１１０、暗号化部１３０、エンコード部１５０、及び初期値生成部１７０は、１以上のプロセッサと、該プロセッサと接続されたコンピュータ読み取り可能な記録媒体とを備えるコンピューティング装置上で実現できる。コンピュータ読み取り可能な記録媒体は、プロセッサの内部または外部にあってもよく、よく知られている様々な手段によりプロセッサと接続していてもよい。コンピューティング装置内のプロセッサは、各コンピューティング装置により、本明細書に記載の例示的な実施形態により動作するようにすることができる。例えば、プロセッサは、コンピュータ読み取り可能な記録媒体に格納されたコマンドを実行することができ、コンピュータ読み取り可能な記録媒体に格納されたコマンドは、プロセッサによって実行される場合、コンピューティング装置により、本明細書に記載の例示的な実施形態による動作を実行するように構成できる。
【００６１】
図２は、本発明の一実施形態に係るデータ復号化装置２００のブロック図である。
【００６２】
図２に示すデータ復号化装置２００は、図１のデータ暗号化装置１００により暗号化されたデータを復号化して、平文データを生成するためのものである。
【００６３】
図２を参照すると、本発明の一実施形態に係るデータ復号化装置２００は、復号化部２１０とデコード部２３０とを含む。
【００６４】
復号化部２１０は、暗号鍵に基づくブロック復号化方式を用いて、暗号化されたデータの一部のブロックを復号化することができる。例えば、図１で説明したように、データ暗号化装置１００により暗号化されたデータは、暗号鍵に基づくブロック暗号化方式を用いて暗号化された暗号文ブロックと、非暗号鍵に基づくエンコード方式によりエンコードされた暗号文ブロックとを含むことができる。これにより、本発明の一実施形態によると、復号化部２１０は、暗号化されたデータのうち、暗号鍵に基づくブロック暗号化方式を用いて暗号化された暗号文ブロックを、暗号鍵に基づくブロック復号化方式を用いて復号化を行うことができる。
【００６５】
ここで、暗号鍵に基づくブロック復号化方式は、対称鍵または非対称鍵を用いて、データをブロック単位で復号化する様々な形態の復号化方式を含むことができる。例えば、復号化部２１０は、ＡＥＳ（Ａｄｖａｎｃｅｄ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）、ＤＥＳ（Ｄａｔａ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）、３ＤＥＳ、Ｂｌｏｗｆｉｓｈ、ＩＤＥＡ（Ｉｎｔｅｒｎａｔｉｏｎａｌ Ｄａｔａ Ｅｎｃｒｙｐｔｉｏｎ Ａｌｇｏｒｉｔｈｍ）、ＲＣ２、ＲＣ５、ＲＣ６、ＳＥＥＤ、ＡＲＩＡ、ＲＳＡ（Ｒｉｖｅｓｔ Ｓｈａｍｉｒ Ａｄｌｅｍａｎ）、ＤＳＡ（Ｄｉｇｉｔａｌ Ｓｉｇｎａｔｕｒｅ Ｓｔａｎｄａｒｄ）、ＥＣＣ（Ｅｌｌｉｐｔｉｃ Ｃｕｒｖｅ Ｃｒｙｐｔｏｓｙｓｔｅｍ）、ＥＬＧｍａｌ、ホワイトボックス（Ｗｈｉｔｅｂｏｘ）に基づく暗号化アルゴリズムなどの対称鍵または非対称鍵を用いる公知のブロック暗号化アルゴリズムを用いて、暗号文ブロックの一部のブロックを復号化することができる。
【００６６】
一方、デコード部２３０は、非暗号鍵に基づくデコード方式を用いて、暗号化されたデータのうち、復号化部２１０により復号化されていない暗号文ブロックをデコードすることができる。そのとき、非暗号鍵に基づくデコード方式は、論理演算、一方向性関数、一方向性置換、および論理関数の少なくとも１つを用いるデコード方式を含むことができる。
【００６７】
本発明の一実施形態によると、デコード部２３０は、暗号化されたデータを復号化するための運用モードによって、初期値またはカウンタ値を用いて、復号化部２１０により復号化されていない暗号文ブロックをデコードし、平文ブロックを生成することができる。
【００６８】
また、本発明の一実施形態によると、デコード部２３０は、暗号化されたデータを復号化するための運用モードによって、復号化部２３０により復号化されていない暗号文ブロックを順次デコードして平文ブロックを生成するが、以前のステップで生成された平文ブロックの生成に用いられた暗号文ブロックを用いるか、又は以前のステップで生成された平文ブロッ及び当該平文ブロックの生成のために用いられた暗号文ブロックを用いて、平文ブロックを生成することができる。
【００６９】
一方、本発明の一実施形態によると、復号化部２１０およびデコード部２３０は、暗号化されたデータを生成するためにデータ暗号化装置１００によって使用された運用モードと同一の運用モードを用いて、暗号化されたデータを復号化することができる。例えば、復号化部２１０およびデコード部２３０は、ＥＣＢ（Ｅｌｅｃｔｒｏｎｉｃ Ｃｏｄｅ Ｂｌｏｏｋ）モード、ＣＢＣ（Ｃｉｐｈｅｒ Ｂｌｏｃｋ Ｃｈａｎｉｎｉｎｇ）モード、ＰＣＢＣ（Ｐｒｏｐａｇａｔｉｎｇ Ｃｉｐｈｅｒ Ｂｌｏｃｋ Ｃｈａｉｎｉｎｇ）モード、ＣＦＢ（ｃｉｐｈｅｒ ＦｅｅｄＢａｃｋ）モード、ＯＦＢ（Ｏｕｔｐｕｔ ＦｅｅｄＢａｃｋ）モード、およびＣＴＲ（Ｃｏｕｎｔｅｒ）モードのいずれかの運用モードで暗号化されたデータを復号化することができる。この詳細については、後述することとする。
【００７０】
一方、本発明の一実施形態によると、データ復号化装置２００は、初期値（例えば、初期化ベクトルまたはカウンタ値）を用いる運用モードによって平文データを生成する場合は、初期値を生成するための初期値生成部２５０をさらに備えることができる。
【００７１】
一方、復号化部２１０、デコード部２３０及び初期値生成部２５０は、データ復号化装置２００内で行う機能によって分類したものである。図２では、復号化部２１０、デコード部２３０及び初期値生成部２５０を分離された構成として示しているが、これに限定されるものではなく、具体的な動作において明確に区分されないことがある。
【００７２】
また、前述の例では、復号化部２１０が、公知の特定の暗号化アルゴリズムを用いて暗号化を行うとして説明したが、これに限定されるものではない。例えば、復号化部２１０およびデコード部２３０は、所定の運用モードに基づいて、暗号化されたデータの一部を対称鍵または非対称鍵を用いてブロック復号化方式で復号化し、暗号化されたデータの残りの一部を、暗号鍵を使用しない所定のデコード方式によりデコードするように設計された復号化アルゴリズムを用いて、暗号化されたデータから平文データを生成することができる。
【００７３】
一方、一実施形態では、復号化部２１０、エンコード部２３０及び初期値生成部２５０は、１以上のプロセッサと、該プロセッサと接続されたコンピュータ読み取り可能な記録媒体とを備えるコンピューティング装置上で実現できる。コンピュータ読み取り可能な記録媒体は、プロセッサの内部または外部にあってもよく、よく知られている様々な手段によりプロセッサと接続していてもよい。コンピューティング装置内のプロセッサは、各コンピューティング装置により、本明細書に記載の例示的な実施形態により動作するようにすることができる。例えば、プロセッサは、コンピュータ読み取り可能な記録媒体に格納されたコマンドを実行することができ、コンピュータ読み取り可能な記録媒体に格納されたコマンドは、プロセッサによって実行される場合、コンピューティング装置により、本明細書に記載の例示的な実施形態による動作を実行するように構成できる。
【００７４】
以下では、各運用モードによるデータ暗号化装置１００及びデータ復号化装置２００の例示的な動作について、より詳細に説明する。以下の実施例では、説明を容易にするために、ブロック暗号化方式としてＡＥＳアルゴリズムを用いると共に、エンコード方式として、ＸＯＲ演算またはＸＯＲ演算および論理関数を用いるとして例示するが、これに限定されるものではない。
【００７５】
なお、以下の実施例では、最初の暗号文の生成のために、ブロック暗号化方式を用いるとして説明するが、これに限定されるものではなく、暗号化速度などを考慮し、２以上の平文ブロックをブロック暗号化方式により暗号化することも可能である。
【００７６】
１．ＥＣＢモードを利用した実施例
本発明の一実施例によると、データ暗号化装置１００は、図３ａに示す例のようにＥＣＢモードを利用してデータを暗号化することができる。
【００７７】
図３ａに示すように、暗号化部１３０は、複数の平文ブロックのうち、最初の平文ブロックである平文ブロック１にブロック暗号アルゴリズムを適用し、暗号文ブロック１を生成する。その後、エンコード部１５０は、平文ブロック２、平文ブロック３及び平文ブロック４のそれぞれに論理関数を適用し、暗号文ブロック２、暗号文ブロック３及び暗号文ブロック４を生成することができる。
【００７８】
データ復号化装置２００は、図３ａの例により暗号化されたデータに対して、図３ｂの例のように復号化動作を行うことができる。
【００７９】
図３ｂを参照すると、復号化部２１０は、複数の暗号文ブロックのうち、最初の暗号文ブロックである暗号文ブロック１にブロック暗号アルゴリズムを適用し、平文ブロック１を生成する。その後、デコード部２３０は、暗号文ブロック２、暗号文ブロック３及び暗号文ブロック４のそれぞれに論理関数を適用し、平文ブロック２、平文ブロック３及び平文ブロック４を生成することができる。
【００８０】
２．ＣＢＣモードを利用した実施例
本発明の一実施例によると、データ暗号化装置１００は、図４ａに示す例のようにＣＢＣモードを利用してデータを暗号化することができる。
【００８１】
図４ａを参照すると、暗号化部１３０は、最初の平文ブロック（平文ブロック１）を初期化ベクトルと排他的論理和（ＸＯＲ）を行い、それに対してＡＥＳアルゴリズムを適用し、最初の暗号文ブロック（暗号文ブロック１）を生成することができる。
【００８２】
その後、エンコード部１５０は、平文ブロック２〜平文ブロック４のそれぞれを、直前に生成された暗号文ブロックとＸＯＲして、暗号文ブロック２〜暗号文ブロック４を生成することができる。
【００８３】
具体的には、図４ａに示す暗号化動作は、次の数学式１のように表すことができる。
【００８４】
【数１】
0006665204.tif 000002
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【００８５】
データ復号化装置２００は、図４ａの例により暗号化されたデータに対して、図４ｂの例のように復号化動作を行うことができる。
【００８６】
図４ｂを参照すると、復号化部２１０は、暗号化されたデータの最初のブロック（暗号文ブロック１）にＡＥＳアルゴリズムを用いて復号化を行った後、初期化ベクトルとＸＯＲして、最初の平文ブロック（平文ブロック１）を生成することができる。
【００８７】
その後、デコード部２３０は、暗号文ブロック２〜暗号文ブロック４のそれぞれに対して、直前の暗号文ブロックとＸＯＲして、平文ブロック２〜平文ブロック４を生成することができる。
【００８８】
具体的には、図４ｂに示す復号化動作は、次の数学式２のように表すことができる。
【００８９】
【数２】
0006665204.tif 000003
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＤＢＬＯＣＫはブロック復号化アルゴリズム、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【００９０】
一方、本発明の他の実施例によると、データ暗号化装置１００は、図５ａに示す例のようにＣＢＣモードを利用してデータを暗号化することができる。
【００９１】
図５ａを参照すると、暗号化部１３０は、最初の平文ブロック（平文ブロック１）を初期化ベクトルと排他的論理和（ＸＯＲ）を行い、それに対してＡＥＳアルゴリズムを適用し、最初の暗号文ブロック（暗号文ブロック１）を生成することができる。
【００９２】
その後、エンコード部１５０は、平文ブロック２〜平文ブロック４のそれぞれを、直前に生成された暗号文ブロックとＸＯＲした後、それに対して論理関数を適用し、暗号文ブロック２〜暗号文ブロック４を生成することができる。
【００９３】
具体的には、図５ａに示す暗号化動作は、次の数学式３のように表すことができる。
【００９４】
【数３】
0006665204.tif 000004
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【００９５】
一方、データ復号化装置２００は、図５ａの例により暗号化されたデータに対して、図５ｂに示すように復号化動作を行うことができる。
【００９６】
図５ｂを参照すると、復号化部２１０は、暗号化されたデータの最初のブロック（暗号文ブロック１）にＡＥＳアルゴリズムを用いて復号化を行った後、初期化ベクトルとＸＯＲして、最初の平文ブロック（平文ブロック１）を生成することができる。
【００９７】
その後、デコード部２３０は、暗号文ブロック２〜暗号文ブロック４のそれぞれに論理関数を適用した後、直前の暗号文ブロックとＸＯＲして、平文ブロック２〜平文ブロック４を生成することができる。
【００９８】
具体的には、図５ｂに示す復号化動作は、次の数学式４のように表すことができる。
【００９９】
【数４】
0006665204.tif 000005
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＤＢＬＯＣＫはブロック復号化アルゴリズム、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１００】
一方、本発明のまた他の実施例によると、データ暗号化装置１００は、図６ａに示す例のようにＣＢＣモードを利用してデータを暗号化することができる。
【０１０１】
図６ａを参照すると、暗号化部１３０は、初期化ベクトルＩＶにＡＥＳアルゴリズムを適用し、最初の暗号文ブロック（暗号文ブロック０）を生成することができる。
【０１０２】
その後、エンコード部１５０は、平文ブロック１と初期化ベクトルＩＶをＸＯＲした後、論理関数を適用して暗号文ブロック１を生成することができる。
【０１０３】
その後、エンコード部１５０は、平文ブロック２〜平文ブロック４のそれぞれを、以前に生成された暗号文ブロックとＸＯＲした後、それに対して論理関数を適用し、暗号文ブロック２〜暗号文ブロック４を生成することができる。
【０１０４】
具体的には、図６ａに示す暗号化動作は、次の数学式５のように表すことができる。
【０１０５】
【数５】
0006665204.tif 000006
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１０６】
一方、データ復号化装置２００は、図６ａの例により暗号化されたデータに対して、図６ｂに示すように復号化動作を行うことができる。
【０１０７】
図６ｂを参照すると、復号化部２１０は、暗号化されたデータの最初のブロック（暗号文ブロック０）にＡＥＳアルゴリズムを用いて復号化を行い、初期化ベクトルＩＶを生成することができる。
【０１０８】
その後、デコード部２３０は、暗号文ブロック１に論理関数を適用した後、初期化ベクトルとＸＯＲして平文ブロック１を生成することができる。
【０１０９】
その後、デコード部２３０は、暗号文ブロック２〜暗号文ブロック４のそれぞれに論理関数を適用した後、直前の暗号文ブロックとＸＯＲして、平文ブロック２〜平文ブロック４を生成することができる。
【０１１０】
具体的には、図６ｂに示す復号化動作は、次の数学式６のように表すことができる。
【０１１１】
【数６】
0006665204.tif 000007
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＤＢＬＯＣＫはブロック復号化アルゴリズム、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１１２】
３．ＰＣＢＣモードを利用した実施例
一方、本発明の一実施例によると、データ暗号化装置１００は、図７ａに示す例のようにＰＣＢＣモードを利用してデータを暗号化することができる。
【０１１３】
図７ａを参照すると、暗号化部１３０は、データの最初の平文ブロック（平文ブロック１）を初期化ベクトルＩＶと排他的論理和（ＸＯＲ）をし、それに対してＡＥＳアルゴリズムを適用し、最初の暗号文ブロック（暗号文ブロック１）を生成することができる。
【０１１４】
その後、エンコード部１５０は、平文ブロック２〜平文ブロック４のそれぞれを、直前に生成された暗号文ブロック及び直前の平文ブロックとＸＯＲして、暗号文ブロック２〜暗号文ブロック４を生成することができる。
【０１１５】
具体的には、図７ａに示す暗号化動作は、次の数学式７のように表すことができる。
【０１１６】
【数７】
0006665204.tif 000008
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１１７】
一方、データ復号化装置２００は、図７ａの例により暗号化されたデータに対して、図７ｂの例のように復号化動作を行うことができる。
【０１１８】
図７ｂを参照すると、復号化部２１０は、暗号化されたデータの最初のブロック（暗号文ブロック１）にＡＥＳアルゴリズムを用いて復号化を行った後、初期化ベクトルＩＶとＸＯＲして、最初の平文ブロック（平文ブロック１）を生成することができる。
【０１１９】
その後、デコード部２３０は、暗号文ブロック２〜暗号文ブロック４のそれぞれを、直前に生成された平文ブロック及び直前の暗号文ブロックとＸＯＲして、平文ブロック２〜平文ブロック４を生成することができる。
【０１２０】
具体的には、図７ｂに示す復号化動作は、次の数学式８のように表すことができる。
【０１２１】
【数８】
0006665204.tif 000009
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＤＢＬＯＣＫはブロック復号化アルゴリズム、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１２２】
一方、本発明の他の実施例によると、データ暗号化装置１００は、図８ａに示す例のようにＰＣＢＣモードを利用してデータを暗号化することができる。
【０１２３】
図８ａを参照すると、暗号化部１３０は、データの最初の平文ブロック（平文ブロック１）を初期化ベクトルＩＶと排他的論理和（ＸＯＲ）を行い、それに対してＡＥＳアルゴリズムを適用して、最初の暗号文ブロック（暗号文ブロック１）を生成することができる。
【０１２４】
その後、エンコード部１５０は、平文ブロック２〜平文ブロック４のそれぞれを、直前に生成された暗号文ブロック及び直前の平文ブロックとＸＯＲした後、それに対して論理関数を適用し、暗号文ブロック２〜暗号文ブロック４を生成することができる。
【０１２５】
具体的には、図８ａに示す暗号化動作は、次の数学式９のように表すことができる。
【０１２６】
【数９】
0006665204.tif 000010
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１２７】
一方、データ復号化装置２００は、図９ａの例により暗号化されたデータに対して、図８ｂの例のように復号化動作を行うことができる。
【０１２８】
図８ｂを参照すると、復号化部２１０は、暗号化されたデータの最初のブロック（暗号文ブロック１）にＡＥＳアルゴリズムを用いて復号化を行った後、初期化ベクトルＩＶとＸＯＲして、最初の平文ブロック（平文ブロック１）を生成することができる。
【０１２９】
その後、デコード部２３０は、暗号文ブロック２〜暗号文ブロック４のそれぞれに論理関数を適用した後、直前に生成された平文ブロック及び直前の暗号文ブロックとＸＯＲして、平文ブロック２〜平文ブロック４を生成することができる。
【０１３０】
具体的には、図８ｂに示す復号化動作は、次の数学式１０のように表すことができる。
【０１３１】
【数１０】
0006665204.tif 000011
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＤＢＬＯＣＫはブロック復号化アルゴリズム、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１３２】
一方、本発明のまた他の実施例によると、データ暗号化装置１００は、図９ａに示す例のようにＰＣＢＣモードを利用してデータを暗号化することができる。
【０１３３】
図９ａを参照すると、暗号化部１３０は、データの最初の平文ブロック（平文ブロック１）を初期化ベクトルＩＶと排他的論理和（ＸＯＲ）を行い、それに対してＡＥＳアルゴリズムを適用して、最初の暗号文ブロック（暗号文ブロック０）を生成することができる。
【０１３４】
その後、エンコード部１５０は、平文ブロック１と初期化ベクトルＩＶをＸＯＲした後、論理関数を適用して、暗号文ブロック１を生成することができる。
【０１３５】
その後、エンコード部１５０は、平文ブロック２〜平文ブロック４のそれぞれを、直前に生成された暗号文ブロック及び直前の平文ブロックとＸＯＲした後、それに対して論理関数を適用し、暗号文ブロック２〜暗号文ブロック４を生成することができる。
【０１３６】
具体的には、図９ａに示す暗号化動作は、次の数学式１１のように表すことができる。
【０１３７】
【数１１】
0006665204.tif 000012
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１３８】
一方、データ復号化装置２００は、図９ａの例により暗号化されたデータに対して、図９ｂの例のように復号化動作を行うことができる。
【０１３９】
図９ｂを参照すると、復号化部２１０は、暗号化されたデータの最初のブロック（暗号文ブロック０）にＡＥＳアルゴリズムを用いて復号化を行い、初期化ベクトルＩＶを生成することができる。
【０１４０】
デコード部２３０は、暗号文ブロック１に論理関数を適用した後、初期化ベクトルＩＶとＸＯＲして、最初の平文ブロック（平文ブロック１）を生成することができる。
【０１４１】
その後、デコード部２３０は、暗号文ブロック２〜暗号文ブロック４のそれぞれに論理関数を適用した後、直前に生成された平文ブロック及び直前の暗号文ブロックとＸＯＲして、平文ブロック２〜平文ブロック４を生成することができる。
【０１４２】
具体的には、図９ｂに示す復号化動作は、次の数学式１２のように表すことができる。
【０１４３】
【数１２】
0006665204.tif 000013
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＤＢＬＯＣＫはブロック復号化アルゴリズム、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１４４】
４. ＣＦＢモードを利用した実施例
本発明の一実施例によると、データ暗号化装置１００は、図１０ａに示す例のようにＣＦＢモードを利用してデータを暗号化することができる。
【０１４５】
図１０ａを参照すると、暗号化部１３０は、初期化ベクトルにＡＥＳアルゴリズムを適用した後、最初の平文ブロック（平文ブロック１）とＸＯＲして、最初の暗号文ブロック（暗号文ブロック１）を生成することができる。
【０１４６】
その後、エンコード部１５０は、平文ブロック２〜平文ブロック４のそれぞれを、直前に生成された暗号文ブロックとＸＯＲして、暗号文ブロック２〜暗号文ブロック４を生成することができる。
【０１４７】
具体的には、図１０ａに示す暗号化動作は、次の数学式１３のように表すことができる。
【０１４８】
【数１３】
0006665204.tif 000014
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１４９】
一方、データ復号化装置２００は、図１０ａの例により暗号化されたデータに対して、図１０ｂの例のように復号化動作を行うことができる。
【０１５０】
図１０ｂを参照すると、復号化部２１０は、初期化ベクトルＩＶにＡＥＳアルゴリズムを適用した後、最初の暗号文ブロック（暗号文ブロック１）とＸＯＲして、最初の平文ブロック（平文ブロック１）を生成することができる。
【０１５１】
その後、デコード部２３０は、暗号文ブロック２〜暗号文ブロック４のそれぞれを、直前の暗号文ブロックとＸＯＲして、平文ブロック２〜平文ブロック４を生成することができる。
【０１５２】
具体的には、図１０ｂに示す復号化動作は、次の数学式１４のように表すことができる。
【０１５３】
【数１４】
0006665204.tif 000015
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＤＢＬＯＣＫはブロック復号化アルゴリズム、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１５４】
本発明の他の実施例によると、データ暗号化装置１００は、図１１ａに示す例のようにＣＦＢモードを利用してデータを暗号化することができる。
【０１５５】
図１１ａを参照すると、暗号化部１３０は、初期化ベクトルにＡＥＳアルゴリズムを適用した後、最初の平文ブロック（平文ブロック１）とＸＯＲして、最初の暗号文ブロック（暗号文ブロック１）を生成することができる。
【０１５６】
その後、エンコード部１５０は、直前に生成された暗号文ブロックに論理関数を適用した後、平文ブロック２〜平文ブロック４のそれぞれとＸＯＲして、暗号文ブロック２〜暗号文ブロック４を生成することができる。
【０１５７】
具体的には、図１１ａに示す暗号化動作は、次の数学式１５のように表すことができる。
【０１５８】
【数１５】
0006665204.tif 000016
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１５９】
一方、データ復号化装置２００は、図１１ａの例により暗号化されたデータに対して、図１１ｂの例のように復号化動作を行うことができる。
【０１６０】
図１０ｂを参照すると、復号化部２１０は、初期化ベクトルＩＶにＡＥＳアルゴリズムを適用した後、最初の暗号文ブロック（暗号文ブロック１）とＸＯＲして、最初の平文ブロック（平文ブロック１）を生成することができる。
【０１６１】
その後、デコード部２３０は、以前の暗号文ブロックに論理関数を適用した後、ブロック２〜暗号文ブロック４のそれぞれとＸＯＲして、平文ブロック２〜平文ブロック４を生成することができる。
【０１６２】
具体的には、図１１ｂに示す復号化動作は、次の数学式１６のように表すことができる。
【０１６３】
【数１６】
0006665204.tif 000017
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＤＢＬＯＣＫはブロック復号化アルゴリズム、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１６４】
本発明のまた他の実施例によると、データ暗号化装置１００は、図１２ａに示す例のようにＣＦＢモードを利用してデータを暗号化することができる。
【０１６５】
図１２ａを参照すると、暗号化部１３０は、初期化ベクトルＩＶにＡＥＳアルゴリズムを適用し、最初の暗号文ブロック（暗号文ブロック０）を生成することができる。
【０１６６】
その後、エンコード部１５０は、初期化ベクトルＩＶを最初の平文ブロック（平文ブロック１）とＸＯＲして、最初の暗号文ブロック（暗号文ブロック１）を生成することができる。
【０１６７】
その後、エンコード部１５０は、直前に生成された暗号文ブロックに論理関数を適用した後、平文ブロック２〜平文ブロック４のそれぞれとＸＯＲして、暗号文ブロック２〜暗号文ブロック４を生成することができる。
【０１６８】
具体的には、図１２ａに示す暗号化動作は、次の数学式１７のように表すことができる。
【０１６９】
【数１７】
0006665204.tif 000018
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１７０】
一方、データ復号化装置２００は、図１２ａの例により暗号化されたデータに対して、図１２ｂの例のように復号化動作を行うことができる。
【０１７１】
図１２ｂを参照すると、復号化部２１０は、最初の暗号文ブロック（暗号文ブロック０）にＡＥＳアルゴリズムを適用し、初期化ベクトルＩＶを生成することができる。
【０１７２】
その後、デコード部２３０は、初期化ベクトルＩＶと暗号文ブロック１をＸＯＲして、最初の平文ブロック（平文ブロック１）を生成することができる。
【０１７３】
その後、デコード部２３０は、以前の暗号文ブロックに論理関数を適用した後、ブロック２〜暗号文ブロック４のそれぞれとＸＯＲして、平文ブロック２〜平文ブロック４を生成することができる。
【０１７４】
具体的には、図１２ｂに示す復号化動作は、次の数学式１８のように表すことができる。
【０１７５】
【数１８】
0006665204.tif 000019
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＤＢＬＯＣＫはブロック復号化アルゴリズム、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１７６】
５．ＯＦＢモードを利用した実施例
本発明の一実施例によると、データ暗号化装置１００は、図１３ａに示す例のようにＯＦＢモードを利用してデータを暗号化することができる。
【０１７７】
図１３ａを参照すると、暗号化部１３０は、初期化ベクトルＩＶにＡＥＳアルゴリズムを適用した後、最初の平文ブロック（平文ブロック１）とＸＯＲして、最初の暗号文ブロック（暗号文ブロック１）を生成することができる。
【０１７８】
その後、エンコード部１５０は、初期化ベクトルＩＶにＡＥＳアルゴリズムを適用して生成されたブロックに論理関数を繰り返し適用した後、平文ブロック２〜平文ブロック４のそれぞれとＸＯＲして、暗号文ブロック２〜暗号文ブロック４を生成することができる。
【０１７９】
具体的には、図１３ａに示す暗号化動作は、次の数学式１９のように表すことができる。
【０１８０】
【数１９】
0006665204.tif 000020
ここで、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、ＩＶは初期化ベクトル、Ｏ１は初期化ベクトルにブロック暗号化アルゴリズムを適用して生成されたブロック、Ｃｉはｉ番目の暗号文ブロック、ＯｉはＯ１に初期化ベクトルに論理関数をｉ回適用して生成されたブロック、Ｐｉはｉ番目の平文ブロック、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１８１】
一方、データ復号化装置２００は、図１３ａの例により暗号化されたデータに対して、図１３ｂの例のように復号化動作を行うことができる。
【０１８２】
図１３ｂを参照すると、復号化部２１０は、初期化ベクトルＩＶにＡＥＳアルゴリズムを適用した後、最初の暗号文ブロック（暗号文ブロック１）とＸＯＲして、最初の平文ブロック（平文ブロック１）を生成することができる。
【０１８３】
その後、デコード部２３０は、初期化ベクトルＩＶにＡＥＳアルゴリズムを適用して生成されたブロックに論理関数を繰り返し適用した後、暗号文ブロック２〜暗号文ブロック４のそれぞれとＸＯＲして、平文ブロック２〜平文ブロック４を生成することができる。
【０１８４】
具体的には、図１３ｂに示す復号化動作は、次の数学式２０のように表すことができる。
【０１８５】
【数２０】
0006665204.tif 000021
ここで、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、ＩＶは初期化ベクトル、Ｏ１は初期化ベクトルにブロック暗号化アルゴリズムを適用して生成されたブロック、Ｃｉはｉ番目の暗号文ブロック、ＯｉはＯ１に初期化ベクトルに論理関数をｉ回適用して生成されたブロック、Ｐｉはｉ番目の平文ブロック、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１８６】
本発明の他の実施例によると、データ暗号化装置１００は、図１４ａに示す例のようにＯＦＢモードを利用してデータを暗号化することができる。
【０１８７】
図１４ａを参照すると、暗号化部１３０は、初期化ベクトルＩＶにＡＥＳアルゴリズムを適用し、最初の暗号文ブロック（暗号文ブロック０）を生成することができる。
【０１８８】
その後、エンコード部１５０は、初期化ベクトルＩＶに論理関数を繰り返し適用した後、平文ブロック１〜平文ブロック４のそれぞれとＸＯＲして、暗号文ブロック１〜暗号文ブロック４を生成することができる。
【０１８９】
具体的には、図１４ａに示す暗号化動作は、次の数学式２１のように表すことができる。
【０１９０】
【数２１】
0006665204.tif 000022
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｏｉは初期化ベクトルに論理関数をｉ回適用して生成されたブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１９１】
一方、データ復号化装置２００は、図１４ａの例により暗号化されたデータに対して、図１４ｂの例のように復号化動作を行うことができる。
【０１９２】
図１４ｂを参照すると、復号化部２１０は、最初の暗号文ブロック（暗号文ブロック０）にＡＥＳアルゴリズムを適用し、初期化ベクトルＩＶを生成することができる。
【０１９３】
その後、デコード部２３０は、生成された初期化ベクトルに論理関数を繰り返し適用した後、暗号文ブロック１〜暗号文ブロック４のそれぞれとＸＯＲして、平文ブロック１〜平文ブロック４を生成することができる。
【０１９４】
具体的には、図１４ｂに示す復号化動作は、次の数学式２２のように表すことができる。
【０１９５】
【数２２】
0006665204.tif 000023
ここで、Ｃｉはｉ番目の暗号文ブロック、Ｏｉは初期化ベクトルに論理関数をｉ回適用して生成されたブロック、Ｐｉはｉ番目の平文ブロック、ＩＶは初期化ベクトル、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０１９６】
６．カウンタ（ＣＴＲ）モードを利用した実施例
本発明の一実施例によると、データ暗号化装置１００は、図１５ａに示す例のようにカウンタモードを利用してデータを暗号化することができる。
【０１９７】
図１５ａを参照すると、暗号化部１３０は、初期カウンタ値（ＣＴＲ）にＡＥＳアルゴリズムを適用し、暗号文ブロック０を生成することができる。
【０１９８】
その後、エンコード部１５０は、初期カウンタ値（ＣＴＲ）を平文ブロック１とＸＯＲして、暗号文ブロック１を生成することができる。
【０１９９】
同様に、エンコード部１５０は、ｉ番目の平文ブロックをｉ番目のカウンタ値（例えば、図１５ａに示すようなＣＴＲ＋ｉ−１）とＸＯＲして、ｉ番目の暗号文ブロックを生成することができる。このとき、エンコード部１５０は、各暗号文ブロックを並列的に生成できる。
【０２００】
具体的には、図１５ａに示す暗号化動作は、次の数学式２３のように表すことができる。
【０２０１】
【数２３】
0006665204.tif 000024
ここで、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、ＣＴＲは初期カウンタ値、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０２０２】
一方、データ復号化装置２００は、図１５ａの例により暗号化されたデータに対して、図１５ｂの例のように復号化動作を行うことができる。
【０２０３】
図１５ｂを参照すると、復号化部２１０は、暗号文ブロック０にＡＥＳアルゴリズムを適用して初期カウンタ値を生成することができる。
【０２０４】
その後、エンコード部１５０は、初期カウンタ値ＣＴＲを暗号文ブロック１とＸＯＲして平文ブロック１を生成することができる。
【０２０５】
同様に、エンコード部１５０は、ｉ番目の暗号文ブロックをｉ番目のカウンタ値（例えば、図１５ｂに示すようなＣＴＲ＋ｉ−１）とＸＯＲして、ｉ番目の平文ブロックを生成することができる。このとき、エンコード部１５０は、各平文ブロックを並列的に生成することができる。
【０２０６】
具体的には、図１５ｂに示す復号化動作は、次の数学式２４のように表すことができる。
【０２０７】
【数２４】
0006665204.tif 000025
ここで、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、ＣＴＲは初期カウンタ値、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０２０８】
一方、本発明の他の実施例によると、データ暗号化装置１００は、図１６ａに示す例のようにカウンタモードを利用してデータを暗号化することができる。
【０２０９】
図１６ａを参照すると、暗号化部１３０は、初期カウンタ値ＣＴＲにＡＥＳアルゴリズムを適用し、暗号文ブロック０を生成することができる。
【０２１０】
その後、エンコード部１５０は、初期カウンタ値ＣＴＲに論理関数を適用した後、平文ブロック１とＸＯＲして、暗号文ブロック１を生成することができる。
【０２１１】
同様に、エンコード部１５０は、ｉ番目のカウンタ値（例えば、図１６ａに示すようなＣＴＲ＋ｉ−１）に論理関数を適用した後、ｉ番目の平文ブロックとＸＯＲして、ｉ番目の暗号文ブロックを生成することができる。このとき、エンコード部１５０は、各暗号文ブロックを並列的に生成できる。
【０２１２】
具体的には、図１６ａに示す暗号化動作は、次の数学式２５のように表すことができる。
【０２１３】
【数２５】
0006665204.tif 000026
ここで、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、ＣＴＲは初期カウンタ値、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０２１４】
一方、データ復号化装置２００は、図１６ａの例により暗号化されたデータに対して、図１６ｂの例のように復号化動作を行うことができる。
【０２１５】
図１６ｂを参照すると、復号化部２１０は、最初の暗号文ブロック（暗号文ブロック０）にＡＥＳアルゴリズムを適用して、初期カウンタ値ＣＴＲを生成することができる。
【０２１６】
その後、エンコード部１５０は、初期カウンタ値ＣＴＲに論理関数を適用した後、暗号文ブロック１とＸＯＲして平文ブロック１を生成することができる。
【０２１７】
同様に、エンコード部１５０は、ｉ番目のカウンタ値（例えば、図１６ｂに示すようなＣＴＲ＋ｉ−１）に論理関数を適用した後、ｉ番目の暗号文ブロックとＸＯＲしてｉ番目の平文ブロックを生成することができる。このとき、エンコード部１５０は、各平文ブロックを並列的に生成できる。
【０２１８】
具体的には、図１６ｂに示す復号化動作は、次の数学式２６のように表すことができる。
【０２１９】
【数２６】
0006665204.tif 000027
ここで、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、ＣＴＲは初期カウンタ値、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０２２０】
一方、本発明の他の実施例によると、データ暗号化装置１００は、図１７ａに示す例のようにカウンタモードを利用してデータを暗号化することができる。
【０２２１】
図１７ａを参照すると、暗号化部１３０は、初期カウンタ値ＣＴＲにＡＥＳアルゴリズムを適用した後、平文ブロック１とＸＯＲして、暗号文ブロック１を生成することができる。
【０２２２】
その後、エンコード部１５０は、ｉ番目のカウンタ値（例えば、図１７ａに示すようなＣＴＲ＋ｉ−１）に論理関数を適用した後、ｉ番目の平文ブロックとＸＯＲして、ｉ番目の暗号文ブロックを生成することができる。このとき、エンコード部１５０は、各暗号文ブロックを並列的に生成できる。
【０２２３】
具体的には、図１７ａに示す暗号化動作は、次の数学式２７のように表すことができる。
【０２２４】
【数２７】
0006665204.tif 000028
ここで、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、ＣＴＲは初期カウンタ値、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０２２５】
一方、データ復号化装置２００は、図１７ａの例により暗号化されたデータに対して、図１７ｂの例のように復号化動作を行うことができる。
【０２２６】
図１７ｂを参照すると、復号化部２１０は、暗号文ブロック１にＡＥＳアルゴリズムを適用した後、暗号文ブロック１とＸＯＲして、平文ブロック１を生成することができる。
【０２２７】
その後、エンコード部１５０は、ｉ番目のカウンタ値（例えば、図１７ｂに示すようなＣＴＲ＋ｉ−１）に論理関数を適用した後、ｉ番目の暗号文ブロックとＸＯＲして、ｉ番目の平文ブロックを生成することができる。このとき、エンコード部１５０は、各平文ブロックを並列的に生成できる。
【０２２８】
具体的には、図１７ｂに示す復号化動作は、次の数学式２８のように表すことができる。
【０２２９】
【数２８】
0006665204.tif 000029
ここで、ＥＢＬＯＣＫはブロック暗号化アルゴリズム、ＣＴＲは初期カウンタ値、Ｃｉはｉ番目の暗号文ブロック、Ｐｉはｉ番目の平文ブロック、Ｆは論理関数、ＸＯＲはブロック間のＸＯＲ演算（例えば、各ブロックがビットシーケンスである場合は、ビットごとのＸＯＲ演算を示す。）を示す。
【０２３０】
図１８は、本発明の一実施形態に係るデータ暗号化方法のフローチャートである。
【０２３１】
図１８に示す方法は、例えば、図１に示すデータ暗号化装置１００により実行できる。
【０２３２】
図１８を参照すると、データ暗号化装置１００は、暗号化の対象となる平文データを複数の平文ブロックに分割する（１８１０）。
【０２３３】
その後、データ暗号化装置１００は、暗号鍵に基づくブロック暗号化方式を用いて、分割された複数の平文ブロックの一部のブロックおよび初期値の少なくとも１つを暗号化する（１８２０）。
【０２３４】
その後、データ暗号化装置１００は、非暗号鍵に基づくエンコード方式を用いて、分割された複数の平文ブロックのうち、ブロック暗号化方式により暗号化されていない残りのブロックをエンコードする（１８３０）。
【０２３５】
図１９は、本発明の一実施形態に係るデータ復号化方法のフローチャートである。
【０２３６】
図１９に示す方法は、例えば、図２に示すデータ復号化装置２００により実行できる。
【０２３７】
図１９を参照すると、データ復号化装置２００は、暗号鍵に基づくブロック復号化方式を用いて、暗号化されたデータの一部のブロックおよび初期値の少なくとも１つを復号化する（１９１０）。
【０２３８】
その後、データ復号化装置２００は、非暗号鍵に基づくデコード方式を用いて、暗号化されたデータのうち、ブロック復号化方式により復号化されていない残りのブロックをデコードする（１９２０）。
【０２３９】
一方、所定の実施例は、本明細書に記載されているプロセスをコンピュータ上で実行するためのプログラムを含むコンピュータ読み取り可能な記録媒体を含むことができる。このコンピュータ読み取り可能な記録媒体は、プログラム命令、ローカルデータファイル、ローカルデータ構造などを単独に又は組み合わせて備えることができる。そのコンピュータ読み取り可能な記録媒体は、本発明のために特別に設計されて構成されたものであり得る。コンピュータ読み取り可能な記録媒体の例には、ハードディスク、フロッピーディスク及び磁気テープなどの磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤなどの光記録媒体、フロプティカルディスクのような磁気−光媒体、および、ロム、ラム、フラッシュメモリなどのプログラム命令を格納して実行するように特別に構成されたハードウェアデバイスが含まれる。プログラム命令の例には、コンパイラーによって作成されるような機械語コードのみならず、インタープリターなどを使用してコンピュータにより実行できる高級言語コードを含むことができる。
【０２４０】
以上、代表的な実施形態により本発明を詳細に説明したが、当業者であれば、本発明の範疇を逸脱しない範囲内で、前述した実施形態に対する様々な変形が可能であることを理解するはずである。従って、本発明の権利範囲は、説明した実施形態に限定されてはならず、後述する特許請求の範囲だけでなく、その特許請求の範囲と均等なものによって定められるべきである。
【符号の説明】
【０２４１】
１００：データ暗号化装置
１１０：分割部
１３０：暗号化部
１５０：エンコード部
１７０：初期値生成部
２００：データ復号化装置
２１０：復号化部
２３０：デコード部
２５０：初期値生成部
【図１】
0006665204.tif 000030
【図２】
0006665204.tif 000031
【図３ａ】
0006665204.tif 000032
【図３ｂ】
0006665204.tif 000033
【図４ａ】
0006665204.tif 000034
【図４ｂ】
0006665204.tif 000035
【図５ａ】
0006665204.tif 000036
【図５ｂ】
0006665204.tif 000037
【図６ａ】
0006665204.tif 000038
【図６ｂ】
0006665204.tif 000039
【図７ａ】
0006665204.tif 000040
【図７ｂ】
0006665204.tif 000041
【図８ａ】
0006665204.tif 000042
【図８ｂ】
0006665204.tif 000043
【図９ａ】
0006665204.tif 000044
【図９ｂ】
0006665204.tif 000045
【図１０ａ】
0006665204.tif 000046
【図１０ｂ】
0006665204.tif 000047
【図１１ａ】
0006665204.tif 000048
【図１１ｂ】
0006665204.tif 000049
【図１２ａ】
0006665204.tif 000050
【図１２ｂ】
0006665204.tif 000051
【図１３ａ】
0006665204.tif 000052
【図１３ｂ】
0006665204.tif 000053
【図１４ａ】
0006665204.tif 000054
【図１４ｂ】
0006665204.tif 000055
【図１５ａ】
0006665204.tif 000056
【図１５ｂ】
0006665204.tif 000057
【図１６ａ】
0006665204.tif 000058
【図１６ｂ】
0006665204.tif 000059
【図１７ａ】
0006665204.tif 000060
【図１７ｂ】
0006665204.tif 000061
【図１８】
0006665204.tif 000062
【図１９】
0006665204.tif 000063