(57)【要約】【課題】平文を暗号化する際、暗号文の先頭ブロックが暗号解読の足掛かりになることを防止できると共に、平文と暗号文の長さが同じになる方法を提供する。【解決手段】暗号化装置１０は、先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号ｍを予め定めたアルゴリズムで共通鍵Ｋから導出し、平文（Ｐ１・・・Ｐｎ）を暗号化する前に、平文平文（Ｐ１・・・Ｐｎ）の先頭ブロック（Ｐ１）と交換ブロック番号ｍに対応する平文ブロック（Ｐｍ）を交換する。【選択図】図２
2013011702.tif 000002
【特許請求の範囲】
【請求項１】
暗号化装置が、先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、平文を暗号化する前に、前記平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて平文を暗号化した後に、前記平文を暗号化した暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換することを特徴とする暗号化方法。
【請求項２】
前記交換ブロック番号を導出するアルゴリズムを、前記共通鍵を前記平文のブロック数で割ったときの余りから前記交換ブロック番号導出するアルゴリズムとしたことを特徴とする、請求項１に記載の暗号化方法。
【請求項３】
先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、平文を暗号化する前に、前記平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて平文を暗号化した後に、前記平文を暗号化した暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換する処理をコンピュータに実行させることを特徴とする暗号化プログラム。
【請求項４】
前記交換ブロック番号を導出するアルゴリズムを、前記共通鍵を前記平文のブロック数で割ったときの余りから前記交換ブロック番号を導出するアルゴリズムとしたことを特徴とする、請求項３に記載の暗号化プログラム。
【請求項５】
先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、平文を暗号化する前に、前記平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて平文を暗号化した後に、前記平文を暗号化した暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換する暗号化部を備えたことを特徴とする暗号化装置。
【請求項６】
前記交換ブロック番号を導出するアルゴリズムを、前記共通鍵を前記平文のブロック数で割ったときの余りから前記交換ブロック番号を導出するアルゴリズムとしたことを特徴とする、請求項５に記載の暗号化装置。
【請求項７】
復号装置が、先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、前記共通鍵を用いて暗号文を復号した後に、前記暗号文を復号した平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて前記暗号文を復号する前に、前記暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換することを特徴とする復号方法。
【請求項８】
前記交換ブロック番号を導出するアルゴリズムを、前記共通鍵を前記平文のブロック数で割ったときの余りから前記交換ブロック番号導出するアルゴリズムとしたことを特徴とする、請求項７に記載の復号方法。
【請求項９】
先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、前記共通鍵を用いて暗号文を復号した後に、前記暗号文を復号した平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて前記暗号文を復号する前に、前記暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換する処理をコンピュータに実行させるための復号プログラム。
【請求項１０】
前記交換ブロック番号を導出するアルゴリズムを、前記共通鍵を前記平文のブロック数で割ったときの余りから前記交換ブロック番号導出するアルゴリズムとしたことを特徴とする、請求項９に記載の復号プログラム。
【請求項１１】
先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、前記共通鍵を用いて暗号文を復号した後に、前記暗号文を復号した平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて前記暗号文を復号する前に、前記暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換する復号部を備えたことを特徴とする復号装置。
【請求項１２】
前記交換ブロック番号を導出するアルゴリズムを、前記共通鍵を前記平文のブロック数で割ったときの余りから前記交換ブロック番号を導出するアルゴリズムとしたことを特徴とする、請求項１１に記載の復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＥＳ（Data Eｎcryptioｎ Staｎdard）やＡＥＳ（Advaｎced Eｎcryptioｎ Staｎdard）など、暗号化を行う側と復号を行う側で同一の共通鍵を用い、定められたブロック長のブロック単位で暗号化／復号を行うブロック暗号に係わる発明である。
【背景技術】
【０００２】
ＤＥＳ（Data Eｎcryptioｎ Staｎdard）やＡＥＳ（Advaｎced Eｎcryptioｎ Staｎdard）など、暗号化を行う側と復号を行う側で同一の共通鍵を用い、定められたブロック長のブロック単位で暗号化／復号を行うブロック暗号の動作モードには、暗号文ブロック連鎖しないＥＣＢモード（Electronic Ｃode Book）もあるが、ＥＣＢモードは平文の中の反復が暗号文にそのまま反映されるため、暗号解読に脆弱であることから、暗号文ブロック連鎖する暗号文ブロック連鎖モード（Ｃipher Block Ｃhaiｎiｎg）が利用されることが多い。
【０００３】
数式１は暗号文ブロック連鎖モードの暗号化関数を説明する式である。数式１に示したように、暗号文ブロック連鎖モードの暗号化関数は、ｉ番目の平文ブロック（Ｐｉ）を暗号化した暗号文ブロック（Ｃｉ）を演算する際に、一つ前の平文ブロック（Ｐｉ−１）を暗号化して得られた暗号文ブロック（Ｃｉ−１）と平文ブロック（Ｐｉ）の排他的論理和を演算し、その結果を暗号化した結果を暗号文ブロック（Ｃｉ）とする関数となり、暗号文ブロック連鎖モードにおける復号関数は、暗号文ブロック連鎖モードにおける暗号化関数の逆関数になる。
【数１】
2013011702.tif 000003
【０００４】
このように、暗号文ブロック連鎖モードにおいては暗号ブロックが連鎖するため、ＥＣＢモードと比較して暗号解読に強いが、平文の先頭ブロック（Ｐ１）には一つ前の平文ブロックが存在しないため、先頭ブロック（Ｐ１）には、暗号文ブロックの代わりにＩＶ（Iｎitial Vector）が排他的論理和され、平文の先頭ブロック（Ｐ１）を暗号化した暗号文ブロック（Ｃ１）が、暗号解読の足掛かりになってしまう恐れがある。
【０００５】
特に、通信プロトコルのメッセージを暗号化するときなど、平文の先頭ブロック（Ｐ１）が、固定や連番など予測可能な場合、平文を暗号化した暗号文が得られれば、予測可能な先頭ブロック（Ｐ１）と暗号文の先頭ブロック（Ｃ１）を用い、共通鍵の総当り攻撃を行うことで、いつかは暗号鍵Kを知ることができる。
【０００６】
暗号文の先頭ブロック（Ｃ１）の脆弱性を解消する一つの手法として、特許文献１において、乱数により生成された所定の長さの冗長ビットを平文の先頭に付加する発明が開示されているが、特許文献１で開示されている手法を用いると、冗長ビットを平文の先頭に付加することにより、暗号文のデータ長が平文のデータ長よりも長くなってしまい、このことが暗号解読の足掛かりになってしまう可能性がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許２５４１１１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
そこで、本発明は、所定のブロック暗号の暗号ブロック連鎖モードに従い平文を暗号化する際、暗号文の先頭ブロックが暗号解読の足掛かりになることを防止できると共に、平文と暗号文の長さが同じになる方法等を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決する第１の発明は、方法に係る発明で、暗号文の先頭ブロックが暗号解読の足掛かりになることを防止できると共に、暗号文と平文の長さと同じになるようにするために、暗号化装置が、先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、平文を暗号化する前に、前記平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて平文を暗号化した後に、前記平文を暗号化した暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換することを特徴とする暗号化方法である。
【００１０】
更に、第２の発明は、第１の発明に記載の暗号化方法において、前記交換ブロック番号を導出するアルゴリズムを、前記共通鍵を前記平文のブロック数で割ったときの余りから前記交換ブロック番号導出するアルゴリズムとしたことを特徴とする。
【００１１】
更に、第３の発明は、コンピュータプログラムに係る発明で、暗号文の先頭ブロックが暗号解読の足掛かりになることを防止できると共に、暗号文と平文の長さと同じになるようにするために、先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、平文を暗号化する前に、前記平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて平文を暗号化した後に、前記平文を暗号化した暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換する処理をコンピュータに実行させることを特徴とする暗号化プログラムである。
【００１２】
更に、第４の発明は、第３の発明に記載の暗号化プログラムにおいて、前記交換ブロック番号を導出するアルゴリズムを、前記共通鍵を前記平文のブロック数で割ったときの余りから前記交換ブロック番号を導出するアルゴリズムとしたことを特徴とする。
【００１３】
更に、第５の発明は、装置に係る発明で、暗号文の先頭ブロックが暗号解読の足掛かりになることを防止できると共に、暗号文と平文の長さと同じになるようにするために、先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、平文を暗号化する前に、前記平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて平文を暗号化した後に、前記平文を暗号化した暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換する暗号化部を備えたことを特徴とする暗号化装置である。
【００１４】
更に、第６の発明は、第５の発明に記載の暗号化装置において、前記交換ブロック番号を導出するアルゴリズムを、前記共通鍵を前記平文のブロック数で割ったときの余りから前記交換ブロック番号を導出するアルゴリズムとしたことを特徴とする。
【００１５】
更に、第７の発明は、第１の発明に係る方法で得られた暗号文を復号する方法で、復号装置が、先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、前記共通鍵を用いて暗号文を復号した後に、前記暗号文を復号した平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて前記暗号文を復号する前に、前記暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換することを特徴とする復号方法である。
【００１６】
更に、第８の発明は、第７の発明に記載の復号方法において、前記交換ブロック番号を導出するアルゴリズムを、前記共通鍵を前記平文のブロック数で割ったときの余りから前記交換ブロック番号導出するアルゴリズムとしたことを特徴とする。
【００１７】
更に、上述した課題を解決する第９の発明は、第３の発明の暗号化プログラムにより得られた暗号文を復号するためのコンピュータプログラムで、先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、前記共通鍵を用いて暗号文を復号した後に、前記暗号文を復号した平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて前記暗号文を復号する前に、前記暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換する処理をコンピュータに実行させるための復号プログラムである。
【００１８】
更に、第１０の発明は、第９の発明に記載の復号方法において、前記交換ブロック番号を導出するアルゴリズムを、前記共通鍵を前記平文のブロック数で割ったときの余りから前記交換ブロック番号導出するアルゴリズムとしたことを特徴とする。
【００１９】
更に、第１１の発明は、第５の発明の暗号化装置が生成した暗号文を復号する装置で、先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、前記共通鍵を用いて暗号文を復号した後に、前記暗号文を復号した平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて前記暗号文を復号する前に、前記暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換する復号部を備えたことを特徴とする復号装置である。
【００２０】
更に、第１２の発明は、第１１の発明に記載の復号装置において、前記交換ブロック番号を導出するアルゴリズムを、前記共通鍵を前記平文のブロック数で割ったときの余りから前記交換ブロック番号を導出するアルゴリズムとしたことを特徴とする。
【発明の効果】
【００２１】
上述した発明によれば、先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号を予め定めたアルゴリズムで共通鍵から導出し、平文の暗号化する前に、前記平文の先頭ブロックと前記交換ブロック番号に対応する前記平文のブロックを交換する、又は、前記共通鍵を用いて平文を暗号化した後に、前記平文を暗号化した暗号文の先頭ブロックと前記交換ブロック番号に対応する前記暗号文のブロックを交換することで、いずれの場合であっても、前記平文の先頭ブロックに対応する暗号ブロックは、前記交換ブロック番号に配置されるため、先頭の暗号文ブロックが暗号解読の足掛かりになることを防止できる。また、ブロックを交換する処理においてはデータの長さは変更されないため、平文と暗号文の長さを同じにでき、暗号化する際に特別な処理が実施されていることがわからなくなる。
【図面の簡単な説明】
【００２２】
【図１】本実施形態に係る暗号化装置及び復号装置を配置したシステムを説明する図。
【図２】第１の実施形態において、暗号化装置の暗号化部が実行する手順を示したフロー図。
【図３】第１の実施形態において、復号装置の復号部が実行する手順を示したフロー図。
【図４】第２の実施形態において、暗号化装置の暗号化部が実行する手順を示したフロー図。
【図５】第２の実施形態において、復号装置の復号部が実行する手順を示したフロー図。
【発明を実施するための形態】
【００２３】
ここから，本発明の実施形態について，本発明の技術分野に係わる当業者が，発明の内容を理解し，発明を実施できる程度に説明する。なお、これから説明する実施形態は本発明の一実施形態にしか過ぎず、本発明は，これから説明する実施形態に限定されることなく、種々の変形や変更が可能である。
【００２４】
まず、本発明のシステムに係る実施形態について説明する。図１は、本実施形態に係る暗号化装置１０及び復号装置１１を配置したシステム１を説明する図である。
【００２５】
図１で図示したシステム１は、ＤＥＳ（Data Eｎcryptioｎ Staｎdard）やＡＥＳ（Advaｎced Eｎcryptioｎ Staｎdard）など、暗号化を行う側と復号を行う側で同一の共通鍵Ｋを利用し、定められたブロック長のブロック単位で処理を行うブロック暗号により暗号化／復号を実行するシステムで、所定のブロック暗号の暗号文ブロック連鎖モードに従い、共通鍵Ｋを用いて平文（Ｐ１・・・Ｐｎ）を暗号化する暗号化部１００が備えられた暗号化装置１０と、所定のブロック暗号の暗号文ブロック連鎖モードに従い、共通鍵Ｋを用いて暗号化装置１０が生成した暗号文を復号する復号部１１０が備えられた復号装置１１が含まれ、暗号化装置１０及び復号装置１１はインターネット１２を介して接続している。
【００２６】
暗号化装置１０は、ＣＰＵ、チップセット及びハードディスクが実装されたコンピュータで実現され、平文（Ｐ１・・・Ｐｎ）を暗号化した暗号文（Ｃｍ・・・Ｃｎ）を生成する暗号化部１００を備え、暗号文（Ｃｍ・・・Ｃｎ）を生成する暗号化部１００は、暗号化装置１０として機能させるコンピュータに実装されたコンピュータプログラムにて実現される。
【００２７】
本実施形態の暗号化装置１０の暗号化部１００は、先頭ブロックと交換するブロックのブロック番号を示す交換ブロック番号ｍを予め定めたアルゴリズムで共通鍵から導出し、平文（Ｐ１・・・Ｐｎ）を暗号化する前に、平文（Ｐ１・・・Ｐｎ）の先頭ブロック（Ｐ１）と交換ブロック番号ｍに対応する平文（Ｐ１・・・Ｐｎ）の平文ブロック（Ｐｍ）を交換する、又は、共通鍵Ｋを用いて平文（Ｐ１・・・Ｐｎ）を暗号化した後に、平文（Ｐ１・・・Ｐｎ）を暗号化した暗号文（Ｃ１・・・Ｃｎ）の先頭ブロック（Ｃ１）と交換ブロック番号ｍに対応する暗号文（Ｃ１・・・Ｃｎ）の暗号ブロック（Ｃｍ）を交換することで、平文ブロック（Ｐ１）に対応する暗号文ブロック（Ｃ１）が交換ブロック番号ｍに配置される暗号文（Ｃｍ・・・Ｃｎ）を生成し、平文ブロック（Ｐ１）に対応する暗号ブロック（Ｃ１）が暗号解読の足掛かりになることを防止する。
【００２８】
また、平文ブロック（Ｐ１）の暗号文ブロック（Ｃ１）が交換ブロック番号ｍに配置される暗号文（Ｃｍ・・・Ｃｎ）の長さは平文（Ｐ１・・・Ｐｎ）と同じであるため、暗号化する際に特別な処理が実施されていることがわからなくなる。
【００２９】
本実施形態の復号装置１１は、共通鍵Ｋを用いて、暗号化装置１０が生成した暗号文（Ｃｍ・・・Ｃｎ）を復号する際、復号に利用する共通鍵から、先頭ブロックと入れ替えるブロックのブロック番号を示す交換ブロック番号ｍを暗号化装置１０と同じ手順で求め、暗号化装置１０の逆の手順で該暗号文を復号する処理を行い、暗号文（Ｃｍ・・・Ｃｎ）の基になった平文（Ｐ1・・・Ｐｎ）を生成する復号部１１０を備え、暗号文（Ｃｍ・・・Ｃｎ）の基になった平文（Ｐ1・・・Ｐｎ）を生成する復号部１１０は、復号装置１１として機能させるコンピュータに実装されたコンピュータプログラムにて実現される。
［第１の実施形態］
【００３０】
ここから、平文（Ｐ１・・・Ｐｎ）の先頭ブロック（Ｐ１）と交換ブロック番号ｍに対応する平文（Ｐ１・・・Ｐｎ）の平文ブロック（Ｐｍ）を交換する形態について詳細に説明する。
【００３１】
まず、第１の実施形態において、暗号化装置１０の暗号化部１００が実行する手順について説明する。図２は、第１の実施形態において、暗号化装置１０の暗号化部１００が実行する手順を示したフロー図である。
【００３２】
暗号化装置１０が平文（Ｐ１・・・Ｐｎ）を暗号化する際、まず、暗号化の対象となる平文（Ｐ１・・・Ｐｎ）が暗号化装置１０に指定された後（Ｓ１）、暗号化に利用する共通鍵Ｋが暗号化装置１０に指定される（Ｓ２）。
【００３３】
Ｓ１及びＳ２において、平文（Ｐ１・・・Ｐｎ）及び共通鍵Ｋが暗号化装置１０に記憶されていない場合、平文（Ｐ１・・・Ｐｎ）及び共通鍵Ｋは、操作者や外部装置によって暗号化装置１０に入力されることになり、また、平文（Ｐ１・・・Ｐｎ）及び共通鍵Ｋが暗号化装置１０に記憶されている場合、暗号化装置１０に記憶されている平文（Ｐ１・・・Ｐｎ）及び共通鍵Ｋが、操作者や外部装置によって指定されることになる。
【００３４】
なお、ブロック暗号ではブロック長のブロック単位で処理するため、指定された平文のデータ長がブロック暗号のブロック長の整数倍でない場合、データ長がブロック暗号のブロック長の整数倍になるように、ＰＫＣＳ＃５などの規格に従い所定のデータが平文にパディングされる。
【００３５】
例えば、ブロック暗号がＤＥＳの場合、指定された平文のデータ長がＤＥＳのブロック長（６４ビット）の整数倍になるようにデータがパディングされ、また、ブロック暗号がＡＥＳの場合、指定された平文のデータ長がＡＥＳのブロック長（１２８ビット）の整数倍になるようにデータがパディングされる。
【００３６】
次に、暗号化装置１０の暗号化部１００は、指定された共通鍵Ｋを用いて、平文（Ｐ１・・・Ｐｎ）の先頭ブロック（Ｐ１）と交換する平文ブロックのブロック番号を示す交換ブロック番号ｍを予め定められたアルゴリズムで算出する（Ｓ３）。交換ブロック番号ｎを算出するアルゴリズムは任意であるが、例えば、数式２に示したように、共通鍵Kを平文（Ｐ１・・・Ｐｎ）のブロック数で剰余演算するアルゴリズムを利用できる。
【数２】
2013011702.tif 000004
【００３７】
なお、数式２で交換ブロック番号ｍを求めると、交換ブロック番号ｍが「１」、すなわち、先頭ブロック（Ｐ１）と入れ替える平文ブロック（Ｐｍ）が先頭ブロック（Ｐ１）自身になってしまうことがあるため、交換ブロック番号ｍが「１」になる場合は、共通鍵Ｋに所定の数を足すようにするとよい。
【００３８】
平文ブロック（Ｐ１）と交換するブロックのブロック番号を示す交換ブロック番号ｍを求めると、暗号化装置１０の暗号化部１００は、平文（Ｐ１・・・Ｐｎ）の先頭ブロック（Ｐ１）と交換ブロック番号ｍに対応する平文ブロック（Ｐｍ）を入れ替えた後（Ｓ４）、共通鍵Ｋを用い、先頭ブロック（Ｐ１）と平文ブロック（Ｐｍ）を交換した平文（Ｐｍ・・・Ｐｎ）を暗号化することで、平文ブロック（Ｐ１）の暗号文ブロック（Ｃ１）が交換ブロック番号ｍに配置される暗号文（Ｃｍ・・・Ｃｎ）を生成し（Ｓ５）、図２の手順は終了する。
【００３９】
次に、第１の実施形態において、復号装置１１の復号部１１０が実行する手順について説明する。図３は、第１の実施形態において、復号装置１１の復号部１１０が実行する手順を示したフロー図である。
【００４０】
復号装置１１の復号部１１０が暗号文（Ｃｍ・・・Ｃｎ）を復号する際、復号の対象となる暗号文（Ｃｍ・・・Ｃｎ）が復号装置１１に指定された後（Ｓ１０）、暗号文（Ｃｍ・・・Ｃｎ）の復号に利用する共通鍵Ｋが復号装置１１に指定される（Ｓ１１）。
【００４１】
なお、平文（Ｐ１・・・Ｐｎ）のデータ長はブロック暗号のブロック長の整数倍にされているため、暗号文（Ｃｍ・・・Ｃｎ）のデータ長は必ずブロック暗号のブロック長の整数倍になっている。
【００４２】
共通鍵Ｋが指定されると、復号装置１１の復号部１１０は、指定された共通鍵Ｋから、暗号文（Ｃｍ・・・Ｃｎ）を復号して得られた平文（Ｐｍ・・・Ｐｎ）の先頭ブロック（Ｐｍ）と交換する平文ブロックのブロック番号を示す交換ブロック番号ｍを暗号化装置１０と同じアルゴリズムで算出する（Ｓ１２）。
【００４３】
交換ブロック番号ｍを算出すると、復号装置１１の復号部１１０は、指定された共通鍵Ｋを用いて暗号文（Ｃｍ・・・Ｃｎ）を復号し、暗号文（Ｃｍ・・・Ｃｎ）を復号した平文（Ｐｍ・・・Ｐｎ）を生成した後（Ｓ１３）、平文（Ｐｍ・・・Ｐｎ）の先頭ブロック（Ｐｍ）と、交換ブロック番号ｍに対応する平文ブロックを交換する処理を実行して、暗号文（Ｃｍ・・・Ｃｎ）を生成するときの基になった平文を生成する（Ｓ１４）。
【００４４】
第１の実施形態において、暗号化装置１０の暗号化部１００は、平文（Ｐ１・・・Ｐｎ）の先頭ブロック（Ｐ１）と、共通鍵Ｋから算出した交換ブロック番号ｍに対応する平文ブロック（Ｐｍ）を交換した後に暗号化しているため、交換ブロック番号ｍに対応する平文ブロックは平文ブロック（Ｐ１）になり、Ｓ１４において、復号装置１１の復号部１１０が生成する暗号文（Ｃｍ・・・Ｃｎ）の平文は平文（Ｐ１・・・Ｐｎ）になる。
【００４５】
なお、ＰＫＣＳ＃５などの規格に従い所定のデータがパディングされて平文が暗号化されている場合、ＰＫＣＳ＃５などの規格に従いパディングされた所定のデータが、平文（Ｐ１・・・Ｐｎ）から除去される。
［第２の実施形態］
【００４６】
次に、平文（Ｐ１・・・Ｐｎ）を暗号化して得られた暗号文（Ｃ１・・・Ｃｎ）の先頭ブロック（Ｃ１）を入れ替える形態について詳細に説明する。
【００４７】
まず、第２の実施形態において、暗号化装置１０の暗号化部１００が実行する手順について説明する。図４は、第２の実施形態において、暗号化装置１０の暗号化部１００が実行する手順を示したフロー図である。
【００４８】
暗号化装置１０の暗号化部１００が平文（Ｐ１・・・Ｐｎ）を暗号化する際、まず、暗号化の対象となる平文（Ｐ１・・・Ｐｎ）が暗号化装置１０に指定された後（Ｓ２０）、暗号化に利用する共通鍵Ｋが暗号化装置１０に指定される（Ｓ２１）。
【００４９】
なお、ブロック暗号ではブロック長のブロック単位で処理するため、指定された平文のデータ長がブロック暗号のブロック長の整数倍でない場合、データ長がブロック暗号のブロック長の整数倍になるように、ＰＫＣＳ＃５などの規格に従い所定のデータが平文にパディングされる。
【００５０】
次に、暗号化装置１０の暗号化部１００は、指定された共通鍵Ｋを用いて、平文（Ｐ１・・・Ｐｎ）を暗号化した暗号文（Ｃ１・・・Ｃｎ）の先頭ブロック（Ｃ１）と交換する暗号文ブロックのブロック番号を示す交換ブロック番号ｍを予め定められたアルゴリズムで算出する（Ｓ２２）。第１の実施形態と同様に、交換ブロック番号ｍを算出するアルゴリズムは任意で、例えば、上述した数式２を利用できる。
【００５１】
交換ブロック番号ｍを算出すると、暗号化装置１０の暗号化部１００は、指定された共通鍵Ｋを用いて平文（Ｐ１・・・Ｐｎ）を暗号化し、平文（Ｐ1・・・Ｐｎ）を暗号化した暗号文（Ｃ１・・・Ｃｎ）を生成した後（Ｓ２３）、暗号文（Ｃ１・・・Ｃｎ）の先頭ブロック（Ｃ１）と交換ブロック番号ｍに対応する暗号文ブロック（Ｃｍ）を入れ替える処理を行い、平文ブロック（Ｐ１）の暗号文ブロック（Ｃ１）が交換ブロック番号ｍに配置される暗号文（Ｃｍ・・・Ｃｎ）を生成し（Ｓ２４）、図４の手順は終了する。
【００５２】
次に、第２の実施形態において、復号装置１１の復号部１１０が実行する手順について説明する。図５は、第２の実施形態において、復号装置１１の復号部１１０が実行する手順を示したフロー図である。
【００５３】
復号装置１１の復号部１１０が暗号文（Ｃｍ・・・Ｃｎ）を復号する際、復号の対象となる暗号文（Ｃｍ・・・Ｃｎ）が復号装置１１に指定された後（Ｓ３０）、暗号文（Ｃｍ・・・Ｃｎ）の復号に利用する共通鍵Ｋが復号装置１１に指定される（Ｓ３１）。
【００５４】
なお、平文（Ｐ１・・・Ｐｎ）のデータ長はブロック暗号のブロック長の整数倍にされているため、暗号文（Ｃｍ・・・Ｃｎ）のデータ長は必ずブロック暗号のブロック長の整数倍になっている。
【００５５】
共通鍵Ｋが指定されると、復号装置１１の復号部１１０は、指定された共通鍵Ｋから、暗号文（Ｃｍ・・・Ｃｎ）の先頭ブロック（Ｃｍ）と交換する暗号ブロックのブロック番号を示す交換ブロック番号ｍを暗号化装置１０と同じアルゴリズムで算出する（Ｓ３２）。
【００５６】
交換ブロック番号ｍを算出すると、復号装置１１の復号部１１０は、暗号文（Ｃｍ・・・Ｃｎ）の先頭ブロック（Ｃｍ）と、交換ブロック番号ｍに対応する暗号文ブロックを交換する処理を実行した後（Ｓ３３）、指定された共通鍵Ｋを用いて、暗号文（Ｃｍ・・・Ｃｎ）の先頭ブロック（Ｃ１）を交換した状態の暗号文（Ｃ１・・・Ｃｎ）を復号して、暗号文（Ｃｍ・・・Ｃｎ）の基になった平文を生成する（Ｓ３４）。
【００５７】
第２の実施形態において、暗号化装置１０の暗号化部１００は、平文（Ｐ１・・・Ｐｎ）を暗号化した暗号文（Ｃ１・・・Ｃｍ）の先頭ブロック（Ｃ１）と、共通鍵Ｋから算出した交換ブロック番号ｍに対応する暗号文ブロック（Ｃｍ）を入れ替えているため、交換ブロック番号ｍに対応する暗号文ブロックは暗号文ブロック（Ｃ１）になり、Ｓ３４において、復号装置１１の復号部１１０が生成する暗号文（Ｃｍ・・・Ｃｎ）の平文は平文（Ｐ１・・・Ｐｎ）になる。
【００５８】
なお、ＰＫＣＳ＃５などの規格に従い所定のデータがパディングされて平文が暗号化されている場合、ＰＫＣＳ＃５などの規格に従いパディングされた所定のデータが、平文（Ｐ１・・・Ｐｔ）から除去される。
【符号の説明】
【００５９】
１０  暗号化装置
１００  暗号化部
１１  復号装置
１１０  復号部
【図１】
2013011702.tif 000005
【図２】
2013011702.tif 000006
【図３】
2013011702.tif 000007
【図４】
2013011702.tif 000008
【図５】
2013011702.tif 000009