"平文を暗号化する暗号化装置が、平文の暗号化に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを先頭に付加した平文を共通鍵で暗号化した後、暗号化した結果から前記プリブロックに対応する暗号ブロックを除去することで平文の暗号文を生成するステップ、を含むことを特徴とする暗号化方法。暗号文を復号する復号装置が、暗号文の復号に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを共通鍵で暗号化するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックの暗号ブロックを先頭に付加した暗号文を共通鍵で復号した後、復号した結果から前記プリブロックを除去することで暗号文の平文を生成するステップ、を含むことを特徴とする復号方法。平文の暗号化に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するプリブロック生成部と、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを先頭に付加した平文を共通鍵で暗号化した後、暗号化した結果から前記プリブロックに対応する暗号ブロックを除去することで平文の暗号文を生成する暗号化部と、を備えたことを特徴とする暗号化装置。前記プリブロック生成部は、所定の手順に従い共通鍵のビットを操作することで、前記プリブロックを生成することを特徴とする、請求項3に記載の暗号化装置。前記プリブロック生成部は、共通鍵又は所定の手順に従いビットを操作した共通鍵により共通鍵を暗号化することで、前記プリブロックを生成することを特徴とする、請求項3に記載の暗号化装置。前記プリブロック生成部は、派生鍵を共通鍵から派生させ、該派生鍵により共通鍵を暗号化、又は、共通鍵により該派生鍵を暗号化することで前記プリブロックを生成することを特徴とする、請求項3に記載の暗号化装置。前記プリブロック生成部は、派生鍵を共通鍵から派生させ、該派生鍵により該派生鍵を暗号化することで前記プリブロックを生成することを特徴とする、請求項3に記載の暗号化装置。前記プリブロック生成部は、データ長がブロック暗号のブロック長の整数倍の派生ブロックを共通鍵から派生させ、共通鍵により、該派生ブロックを暗号化することでプリブロックを生成することを特徴とする、請求項3に記載の暗号化装置。前記プリブロック生成部は、データ長がブロック暗号のブロック長の整数倍の派生ブロックと派生鍵を共通鍵から派生させ、該派生鍵により、該派生ブロックを暗号化することでプリブロックを生成することを特徴とする、請求項3に記載の暗号化装置。暗号文の復号に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するプリブロック生成部と、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを共通鍵で暗号化するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックの暗号ブロックを暗号文の先頭に付加した暗号文を前記共通鍵で復号した後、復号した結果から前記プリブロックを除去することで暗号文の平文を生成する復号を備えたことを特徴とする復号装置。前記プリブロック生成部は、所定の手順に従い共通鍵のビットを操作することで、前記プリブロックを生成することを特徴とする、請求項10に記載の復号装置。前記プリブロック生成部は、共通鍵又は所定の手順に従いビットを操作した共通鍵により共通鍵を暗号化することで、前記プリブロックを生成することを特徴とする、請求項10に記載の復号装置。前記プリブロック生成部は、派生鍵を共通鍵から派生させ、該派生鍵により共通鍵を暗号化、又は、共通鍵により該派生鍵を暗号化することで前記プリブロックを生成することを特徴とする、請求項10に記載の復号装置。前記プリブロック生成部は、派生鍵を共通鍵から派生させ、該派生鍵により該派生鍵を暗号化することで前記プリブロックを生成することを特徴とする、請求項10に記載の復号装置。前記プリブロック生成部は、データ長がブロック暗号のブロック長の整数倍の派生ブロックを共通鍵から派生させ、共通鍵により、該派生ブロックを暗号化することでプリブロックを生成することを特徴とする、請求項10に記載の復号装置。前記プリブロック生成部は、データ長がブロック暗号のブロック長の整数倍の派生ブロックと派生鍵を共通鍵から派生させ、該派生鍵により、該派生ブロックを暗号化することでプリブロックを生成することを特徴とする、請求項10に記載の復号装置。他の装置とVPNVirtualPrivateNetworkを構築し、他の装置から受信したブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成し、生成した前記プリブロックを前記他の装置へ送信するプリブロック生成装置と、平文を暗号化する際、前記プリブロック生成装置とVPNを構築し、平文の暗号化に利用する共通鍵を前記プリブロック生成装置へ送信し、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロック生成装置から受信した前記プリブロックを先頭に付加した平文を共通鍵で暗号化した後、暗号化した結果から前記プリブロックに対応する暗号ブロックを除去することで平文の暗号文を生成する暗号化装置と、前記プリブロック生成装置とVPNを構築し、前記暗号化装置が生成した暗号文の復号に利用する共通鍵を前記プリブロック生成装置へ送信し、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを共通鍵で暗号化するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロック生成装置から受信した前記プリブロックの暗号ブロックを先頭に付加した暗号文を共通鍵で復号した後、復号した結果から前記プリブロックを除去することで暗号文の平文を生成する復号装置と、から少なくとも構成されることを特徴とする暗号化/復号システム。前記プリブロック生成装置は、所定の手順に従い共通鍵をビットローテーションすることで、前記プリブロックを生成することを特徴とする、請求項17に記載の暗号化/復号システム。前記プリブロック生成装置は、共通鍵を共通鍵自身で暗号化することで、前記プリブロックを生成することを特徴とする、請求項17に記載の暗号化/復号システム。このように、暗号文ブロック連鎖モードにおいては暗号ブロックが連鎖するため、ECBモードと比較して暗号解読に強いが、最初の平文ブロックM1には一つ前の平文ブロックが存在しないため、最初の平文ブロックM1には、暗号文ブロックの代わりにIVInitialVectorが排他的論理和され、最初の平文ブロックM1の暗号文ブロックC1が、暗号解読の足掛かりになってしまう恐れがある。このような問題を解決する一つ手法として、特許文献1において、乱数により生成された所定の長さの冗長ビットを平文の先頭に付加する発明が開示されているが、特許文献1で開示されている手法を用いると、冗長ビットを平文の先頭に付加することにより、暗号文のデータ長が平文のデータ長よりも長くなってしまい、このことが暗号解読の足掛かりになってしまう可能性がある。そこで、本発明は、所定のブロック暗号に従い暗号ブロック連鎖モードにて平文を暗号化する際、最初の暗号文ブロックが暗号解読の足掛かりになることを防止できると共に、暗号文の長さが平文の長さと同じになる技術を提供することを目的とする。上述した課題を解決する第1の発明は、平文を暗号化する暗号化装置が、平文の暗号化に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを付加した平文を共通鍵で暗号化した後、暗号化した結果から前記プリブロックに対応する暗号ブロックを除去することで平文の暗号文を生成するステップ、を含むことを特徴とする暗号化方法である。更に、第2の発明は、暗号文を復号する復号装置が、暗号文の復号に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを共通鍵で暗号化するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックの暗号ブロックを先頭に付加した暗号文を共通鍵で復号した後、復号した結果から前記プリブロックを除去することで暗号文の平文を生成するステップ、を含むことを特徴とする復号方法である。更に、第3の発明は、平文の暗号化に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するプリブロック生成部と、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを先頭に付加した平文を共通鍵で暗号化した後、暗号化した結果から前記プリブロックに対応する暗号ブロックを除去することで平文の暗号文を生成する暗号化部と、を備えたことを特徴とする暗号化装置である。前記プリブロック生成部が前記プリブロックを生成する手法としては、所定の手順に従い共通鍵のビットを操作する手法や、共通鍵又は所定の手順に従いビットを操作した共通鍵により共通鍵を暗号化する手法が考えられる。加えて、共通鍵から派生鍵を派生させ、前記プリブロックを生成する手法も考えられる。例えば、この派生鍵により共通鍵を暗号化、又は、共通鍵によりこの派生鍵を暗号化することで前記プリブロックを生成するようにすることもできるし、この派生鍵によりこの派生鍵自身を暗号化することで前記プリブロックを生成することもできる。更に、データ長がブロック暗号のブロック長の整数倍の派生ブロックを共通鍵から派生させ、共通鍵又は共通鍵から派生させた派生鍵により、該派生ブロックを暗号化することでプリブロックを生成する手法も考えられる。更に、第4の発明は、暗号文の復号に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するプリブロック生成部と、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを共通鍵で暗号化するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックの暗号ブロックを先頭に付加した暗号文を前記共通鍵で復号した後、復号した結果から前記プリブロックを除去することで暗号文の平文を生成する復号を備えたことを特徴とする復号装置である。第3の発明と同様に、前記プリブロック生成部が前記プリブロックを生成する手法としては、所定の手順に従い共通鍵のビットを操作する手法や、共通鍵又は所定の手順に従いビットを操作した共通鍵により共通鍵を暗号化する手法が考えられる。加えて、共通鍵から派生鍵を派生させ、前記プリブロックを生成する手法も考えられる。例えば、この派生鍵により共通鍵を暗号化、又は、共通鍵によりこの派生鍵を暗号化することで前記プリブロックを生成するようにすることもできるし、この派生鍵によりこの派生鍵自身を暗号化することで前記プリブロックを生成することもできる。更に、データ長がブロック暗号のブロック長の整数倍の派生ブロックを共通鍵から派生させ、共通鍵又は共通鍵から派生させた派生鍵により、該派生ブロックを暗号化することでプリブロックを生成する手法も考えられる。更に、第5の発明は、他の装置とVPNVirtualPrivateNetworkを構築し、他の装置から受信したブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成し、生成した前記プリブロックを前記他の装置へ送信するプリブロック生成装置と、平文を暗号化する際、前記プリブロック生成装置とVPNを構築し、平文の暗号化に利用する共通鍵を前記プリブロック生成装置へ送信し、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロック生成装置から受信した前記プリブロックを先頭に付加した平文を共通鍵で暗号化した後、暗号化した結果から前記プリブロックに対応する暗号ブロックを除去することで平文の暗号文を生成する暗号化装置と、前記プリブロック生成装置とVPNを構築し、前記暗号化装置が生成した暗号文の復号に利用する共通鍵を前記プリブロック生成装置へ送信し、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを共通鍵で暗号化するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロック生成装置から受信した前記プリブロックの暗号ブロックを先頭に付加した暗号文を共通鍵で復号した後、復号した結果から前記プリブロックを除去することで暗号文の平文を生成する復号装置とから少なくとも構成されることを特徴とする暗号化/復号システムである。なお、第3の発明及び第4の発明と同様に、前記プリブロック生成装置が前記プリブロックを生成する手法としては、所定の手順に従い共通鍵をビットローテーションする手法や、共通鍵を共通鍵自身で暗号化する手法が考えられる。上述した発明によれば、プリブロックの暗号文ブロックが最初の平文ブロックに暗号ブロック連鎖するため、最初の平文ブロックの暗号文ブロックが暗号解読の足掛かりになることを防止できる。また、暗号化した結果から、プリブロックに係わるブロックを除去することで、暗号文の長さを平文の長さと同じにでき、暗号化する際に特別な処理が実施されていることがわからなくなる。ここから,本発明の実施形態について,本発明の技術分野に係わる当業者が,発明の内容を理解し,発明を実施できる程度に説明する。なお、これから説明する実施形態は本発明の一実施形態にしか過ぎず、本発明は,これから説明する実施形態に限定されることなく、種々の変形や変更が可能である。実施形態1まず、本発明のシステムに係る実施形態1について説明する。図1は、本実施形態1に係る暗号化/復号システム1を説明する図である。本実施形態1に係る暗号化/復号システム1には、DESDataEncryptionStandardやAESAdvancedEncryptionStandardなど、暗号化を行う側と復号を行う側で同一の共通鍵Kを利用し、定められたブロック長のブロック単位で処理を行うブロック暗号により暗号化/復号を実行するシステムで、共通鍵Kを用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードで平文M1Mnを暗号化する暗号化装置10と、共通鍵Kを用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードで暗号文C1Cnを復号する復号装置11と、平文M1Mnの先頭に付加するプリブロックを生成するプリブロック生成装置12が含まれ、暗号化装置10、復号装置11及びプリブロック生成装置12はインターネット13を介して接続している。数式1で図示したように、CBCモードで平文を暗号化する場合、暗号化の対象となる平文M1Mnを定められたブロック長例えば、DESなら64ビット、AESなら128ビットの複数の平文ブロックMi、i=1からnに分割した後、一つ前の平文ブロックMi-1の暗号文ブロックCi-1と平文ブロックMiを排他的論理和して暗号化した結果を平文ブロックMiの暗号文ブロックCiとすることで、暗号文ブロックを連鎖させて平文M1Mnの暗号文を生成するが、最初の平文ブロックM1の暗号文ブロックC1は、暗号文ブロック連鎖しないため、暗号文ブロックC1が暗号解読の足掛かりになってしまう恐れがある。これに対し、実施形態1の暗号化装置10は、暗号文ブロック連鎖モードで平文M1Mnを暗号化する際、プロブロック生成装置12が生成したプリブロックPを先頭に付加した平文P,M1Mnを暗号化し、該平文P,M1Mnの暗号化結果Cp、C1CnからプリブロックPに対応する暗号文ブロックCpを除去した結果を平文M1Mnの暗号文C1Cnとすることで、プリブロックPの暗号文ブロックCpが最初の平文ブロックM1に連鎖するようにし、最初の平文ブロックM1の暗号文ブロックC1が暗号解読の足掛かりになることを防止すると共に、暗号文C1Cnの長さを平文M1Mnの長さと同じにすることで、暗号化する際に特別な処理が実施されていることをわからなくしている。なお、DESやASEなどのブロック暗号において、暗号文の生成側と復号側とで共通鍵Kは共有されるので、暗号化/復号でプリブロックPの生成に利用する手法を共通にしておけば、暗号文C1Cnを生成するときに生成したプリブロックP及びプリブロックPの暗号文ブロックCpを復号側でも生成することが可能になり、復号装置11が、暗号化の逆の手順を実行することで、暗号文C1Cnを平文M1Mnに復号することができる。ここから、暗号化システムに含まれるプリブロック生成装置12、暗号化装置10及び復号装置11についてより詳細に説明する。まず、プリブロック生成装置12について説明する。プリブロック生成装置12は、受け渡された共通鍵Kから、平文M1Mnの先頭に付加するプリブロックPを生成する装置で、プリブロック生成装置12には、プリブロックを生成するためのコンピュータプログラムで実現される。プリブロック生成装置12がプリブロックPを生成する手法は、データ長がブロック暗号のブロック長の整数倍となれば任意でよく、このような手法としては、共通鍵Kを該共通鍵Kで暗号化する手法や、共通鍵Kを所定の手順従いビットローテーションする手法などが考えられ、極端な例を挙げれば恒等関数であってもよい。加えて、共通鍵Kから派生鍵を派生させ、プリブロックPを生成する手法も考えられる。例えば、この派生鍵により共通鍵Kを暗号化、又は、共通鍵Kによりこの派生鍵を暗号化することでプリブロックPを生成するようにすることもできるし、この派生鍵によりこの派生鍵自身を暗号化することでプリブロックPを生成することもできる。なお、派生鍵は、共通鍵Kの所定のバイトをシフト又はローテートすることで派生させればよい。更に、暗号鍵の拡張アルゴリズムなどを利用して、データ長がブロック暗号のブロック長の整数倍の派生ブロックを共通鍵Kから派生させ、プリブロックPを生成する手法も考えられる。例えば、共通鍵Kにより、この派生ブロックを暗号化することでプリブロックPを生成するようにすることができる。なお、派生ブロックの暗号に用いる暗号鍵は、上述した派生鍵でも構わない。プリブロックPのデータ長は、プリブロックPを生成する手法によって決定し、例えば、プリブロックPを生成する関数として、共通鍵Kを該共通鍵Kで暗号化する手法を用いる場合、シングルDESをブロック暗号とすれば、シングルDESの鍵長はパリティを含めて64ビットであるため、プリブロックPのデータ長はDESのブロック長64ビットの1倍になる。また、AESをブロック暗号とする際、AESの鍵長が256ビットであれば、プリブロックPのデータ長はAESのブロック長の2倍256ビットになる。次に、暗号化装置10について説明する。暗号化装置10は、プリブロック生成装置12に共通鍵Kを受け渡し、プリブロック生成装置12が生成したプリブロックPを用い、暗号化の対象となる平文M1Mnを暗号化した暗号文C1Cnを生成する装置で、暗号化部は、暗号化装置10として利用するコンピュータを暗号化部として動作させるためのコンピュータプログラムで実現される。図2は、暗号化装置10が平文M1Mnを暗号化する手順を示したフロー図である。暗号化装置10が平文M1Mnを暗号化する際、まず、暗号化の対象となる平文M1Mnと暗号化に利用する共通鍵Kが暗号化装置10に指定されるS1。平文M1Mn及び共通鍵Kが暗号化装置10に記憶されていない場合、平文M1Mn及び共通鍵Kは、操作者や外部装置によって暗号化装置10に入力されることになり、また、平文M1Mn及び共通鍵Kが暗号化装置10に記憶されている場合、暗号化装置10に記憶されている平文M1Mn及び共通鍵Kが、操作者や外部装置によって指定されることになる。なお、ブロック暗号ではブロック長のブロック単位で処理するため、指定された平文のデータ長がブロック暗号のブロック長の整数倍でない場合、データ長がブロック暗号のブロック長の整数倍になるように、PKCS5などの規格に従い所定のデータがパディングされ、該平文は、n個の平文ブロックMi、i=1からnに分割される。次に、暗号化装置10は、SSLSecureSocketLayerなどの技術を利用して、プリブロック生成装置12とVPNVirtualPrivateNetworkを構築した後S2、指定された共通鍵Kをプリブロック生成装置12に受け渡し、プリブロック生成装置12が生成したプリブロックPをプリブロック生成装置12から受け取るS3。プリブロック生成装置12からプリブロックPが受け渡されると、暗号化装置10は、プリブロックPを先頭に付加した平文P,M1Mnを生成した後S4、該平文P,M1Mnを、共通鍵Kを用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードにて暗号化するS5。なお、暗号文ブロック連鎖モードでは、最初の平文ブロックから順に暗号化されるため、平文P,M1Mnの暗号結果は、プリブロックPに対応する暗号ブロックCpと平文ブロックMi、i=1からnに対応する暗号ブロックCi、i=1からnを結合した暗号文Cp,C1Cnになる。そして、暗号化装置10の暗号化部は、平文P,M1Mnを暗号化するこで得られた暗号文Cp,C1Cnの先頭から、プリブロックPのデータ長のデータを除去することで、プリブロックPに対応する暗号ブロックCpを除去する処理を行い、平文M1Mnに対応する暗号文C1Cnを生成してS6、図2で図示した手順は終了する。例えば、プリブロックPが1ブロックならば、暗号化装置10の暗号化部は、暗号文Cp,C1Cnの先頭からブロック長のデータを除去することになり、また、プリブロックPが2ブロックならば、暗号化装置10の暗号化部は、暗号文Cp,C1Cnの先頭からブロック長の2倍のデータを除去することになる。次に、復号装置11について説明する。復号装置11は、プリブロック生成装置12に共通鍵Kを受け渡し、プリブロック生成装置12が生成したプリブロックPを用い、復号の対象となる暗号文C1Cnを復号した平文M1Mnを生成する装置で、復号装置11には、暗号文C1Cnを復号するためのコンピュータプログラムが実装される。図3は、復号装置11が暗号文C1Cnを復号する手順を示したフロー図である。復号装置11の復号部が暗号文C1Cnを復号する際、復号の対象となる暗号文C1Cnと共通鍵Kが指定されるS10。平文M1Mnのデータ長はブロック暗号のブロック長の整数倍にパディングされた後に暗号化されるため、暗号文C1Cnのデータ長は必ずブロック暗号のブロック長の整数倍になっており、図3において、暗号文C1Cnは、n個の暗号文ブロックCi、i=1からnに分割されている。復号の対象となる暗号文C1Cnが指定されると、SSLSecureSocketLayerなどの技術を利用して、プリブロック生成装置12とVPNVirtualPrivateNetworkを構築した後S11、指定された共通鍵Kをプリブロック生成装置12に受け渡し、プリブロック生成装置12が生成したプリブロックPをプリブロック生成装置12から受け取るS12。上述しているように、ブロック暗号において、暗号文C1Cnの生成側と復号側とで共通鍵は共有されるので、暗号化装置10と同じ手法で同じ共通鍵Kを用いることで、暗号文C1Cnを生成するときに用いたプリブロックPを生成することが復号装置11側でも可能である。次に、復号装置11は、指定された共通鍵Kを用い、所定のブロック暗号のアルゴリズムに従い、暗号文ブロック連鎖モードでプリブロックPを暗号化することで、プリブロックPの暗号ブロックCpを生成するS13。プリブロックPの暗号ブロックCpを生成すると、復号装置11は、プリブロックPの暗号ブロックCpを除去する処理と逆の手順、すなわち、プリブロックPの暗号ブロックCpを先頭に付加した暗号文Cp、C1Cnを生成した後S14、暗号化と逆の手順、すなわち、共通鍵Kを用い、所定のブロック暗号のアルゴリズムに従い、暗号文ブロック連鎖モードで、該暗号文Cp,C1Cnを復号するS15。暗号文ブロック連鎖モードでは、最初のブロックから順に復号されるため、暗号文Cp,C1Cnの復号結果は、暗号ブロックCpを復号したブロック、すなわち、プリブロックPと、暗号文Ci、i=1からnに対応する平文ブロックMi、i=1からnを結合した平文P、M1Mnになる。次に、復号装置11は、暗号文Cp,C1Cnの復号結果P、M1Mnの先頭から、プリブロックPのデータ長のデータを除去することで、プリブロックPを除去する処理を行い、暗号文C1Cnに対応する平文M1Mnを生成してS16、図3で図示した手順は終了する。なお、PKCS5などの規格に従い所定のデータがパディングされて暗号化されている場合、PKCS5などの規格に従いパディングされた所定のデータが、平文M1Mnから除去される。ここから、本発明に係る暗号化システムの実施例について説明する。図4は、実施例1に係る暗号化/復号システム2を説明する図である。図4で図示した暗号化/復号システム2には、暗号化装置10として機能するパーソナルコンピュータ20と、復号装置11として機能するパーソナルコンピュータ21と、プリブロック生成装置12として機能するサーバ22が含まれ、パーソナルコンピュータ20,21とサーバ22はインターネット23を介して接続している。プリブロック生成装置12として機能するサーバ22では、必要な機能に対応するアプリケーションソフトウェアを複数のユーザにシェアするSaasSoftwareasaServiceや、業務用のアプリケーションソフトウェアを特定のユーザにレンタルするASPApplicationServiceProviderなどが運営され、実施例1において、サーバ22が提供するアプリケーションソフトウェアは、これまで説明したプリブロック生成装置12として機能するソフトウェアになる。暗号化装置10として機能するパーソナルコンピュータ20には、これまで説明した暗号化装置10として機能するコンピュータプログラムが実装され、また、復号装置11として機能するパーソナルコンピュータ21には、これまで説明した復号装置11として機能するコンピュータプログラムが実装されている。暗号化装置10及び復号装置11として機能するコンピュータプログラムは、パーソナルコンピュータ間で送信されるデータを暗号化することが必要なアプリケーションのアドインなどで具体的には実現され、該アプリケーションの一例としてはメールクライアントソフトが挙げられる。パーソナルコンピュータ20は、パーソナルコンピュータ21へ送信するデータを暗号化する際、図2で図示した手順を実行して、該データの暗号文を生成し、生成した暗号文をパーソナルコンピュータ21へ送信する。なお、実施例1では、プリブロックPを生成する装置はサーバ22になるため、パーソナルコンピュータ20は、サーバ22で運営されているアプリケーションソフトウェアを利用して、プリブロックPを生成することになる。また、パーソナルコンピュータ21は、パーソナルコンピュータ20から受信した暗号文を復号する際、図3で図示した手順を実行して、該暗号文を復号する。なお、実施例1では、プリブロックPを生成する装置はサーバ22になるため、パーソナルコンピュータ21は、サーバ22で運営されているアプリケーションソフトウェアを利用して、プリブロックPを生成することになる。実施形態2次に、本発明の暗号化装置及び復号装置に係る実施形態2を説明する。図5は、実施形態2に係る暗号化装置3及び復号装置4を説明する図である。実施形態2に係る暗号化装置3は、DESやAESなど、暗号化を行う側と復号を行う側で同一の共通鍵Kを利用し、定められたブロック長のブロック単位で暗号化する装置で、図5aに図示したように、暗号化装置3は、受け渡された共通鍵KからプリブロックPを生成するプリブロック生成部31と、プリブロック生成部31に共通鍵Kを受け渡し、プリブロック生成部31が生成したプリブロックPを用い、暗号化の対象となる平文M1Mnを暗号化した暗号文C1Cnを生成する暗号化部30を備え、プリブロック生成部31及び暗号化部30は、暗号化装置3として利用するコンピュータをプリブロック生成部31及び暗号化部30として動作させるためのコンピュータプログラムで実現される。また、実施形態2に係る復号装置4は、DESやAESなど、暗号化を行う側と復号を行う側で同一の共通鍵Kを利用し、定められたブロック長のブロック単位で復号する装置で、図5bに図示したように、復号装置4は、受け渡された共通鍵KからプリブロックPを生成するプリブロック生成部41と、プリブロック生成部41に共通鍵Kを受け渡し、プリブロック生成部41が生成したプリブロックPを用い、復号の対象となる暗号文C1Cnを復号した平文M1Mnを生成する復号部40を備え、プリブロック生成部及び復号部40は、復号装置4として利用するコンピュータを復号部として動作させるためのコンピュータプログラムで実現される。ここから、暗号化装置3が実行する手順について説明する。図6は、暗号化装置3が平文M1Mnを暗号化する手順を示したフロー図である。暗号化装置3の暗号化部が平文M1Mnを暗号化する際、まず、暗号化の対象となる平文M1Mnと暗号化に利用する共通鍵Kが暗号化装置3に指定されるS20。平文M1Mn及び共通鍵Kが暗号化装置3に記憶されていない場合、平文M1Mn及び共通鍵Kは、操作者や外部装置によって暗号化装置3に入力されることになり、また、平文M1Mn及び共通鍵Kが暗号化装置3に記憶されている場合、暗号化装置3に記憶されている平文M1Mn及び共通鍵Kが、操作者や外部装置によって指定されることになる。なお、ブロック暗号ではブロック長のブロック単位で処理するため、指定された平文のデータ長がブロック長の整数倍でない場合、データ長がブロック暗号のブロック長の整数倍になるように、PKCS5などの規格に従い所定のデータがパディングされ、該平文は、n個の平文ブロックMi、i=1からnに分割される。次に、暗号化装置3は、指定された共通鍵Kをプリブロック生成部31に受け渡し、プリブロック生成部31は、共通鍵KからプリブロックPを生成し、生成したプリブロックPを暗号化部30へ受け渡すS21。プリブロック生成部31がプリブロックP生成するときに利用する手法は、データ長がブロック暗号のブロック長の整数倍となれば任意でよく、このような手法としては、共通鍵Kを該共通鍵Kで暗号化する手法や、共通鍵Kを所定の手順従いビットローテーションする手法、極端な例を挙げれば恒等関数を利用する手法が考えられる。加えて、共通鍵Kから派生鍵を派生させ、プリブロックPを生成する手法も考えられる。例えば、この派生鍵により共通鍵Kを暗号化、又は、共通鍵Kによりこの派生鍵を暗号化することでプリブロックPを生成するようにすることもできるし、この派生鍵によりこの派生鍵自身を暗号化することでプリブロックPを生成することもできる。なお、派生鍵は、共通鍵Kの所定のバイトをシフト又はローテートすることで派生させればよい。更に、暗号鍵の拡張アルゴリズムなどを利用して、データ長がブロック暗号のブロック長の整数倍の派生ブロックを共通鍵Kから派生させ、プリブロックPを生成する手法も考えられる。例えば、共通鍵Kにより、この派生ブロックを暗号化することでプリブロックPを生成するようにすることができる。なお、派生ブロックの暗号に用いる暗号鍵は、上述した派生鍵でも構わない。プリブロック生成部31からプリブロックPが受け渡されると、暗号化装置3の暗号化部30は、プリブロックPを先頭に付加した平文P,M1Mnを生成した後S22、該平文P,M1Mnを、共通鍵Kを用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードにて暗号化するS23。なお、暗号文ブロック連鎖モードでは、最初の平文ブロックから順に暗号化されるため、該平文P,M1Mnの暗号結果は、プリブロックPに対応する暗号ブロックCpと平文ブロックMi、i=1からnに対応する暗号ブロックCi、i=1からnを結合した暗号文Cp,C1Cnになる。そして、暗号化装置3の暗号化部は、平文P,M1Mnを暗号化して得られた暗号文Cp,C1Cnの先頭から、プリブロックPのデータ長のデータを除去することで、プリブロックPに対応する暗号ブロックCpを除去する処理を行い、平文M1Mnに対応する暗号文C1Cnを生成してS24、図6で図示した手順は終了する。次に、復号装置4が実行する手順について説明する。図7は、復号装置4が暗号文C1Cnを復号する手順を示したフロー図である。復号装置4が暗号文C1Cnを復号する際、復号の対象となる暗号文C1Cnと共通鍵Kが指定されるS30。平文M1Mnのデータ長はブロック暗号のブロック長の整数倍にパディングされた後に暗号化されるため、暗号文C1Cnのデータ長は必ずブロック暗号のブロック長の整数倍になっており、図3において、暗号文C1Cnは、n個の暗号文ブロックCi、i=1からnに分割されている。次に、復号装置4は、指定された共通鍵Kをプリブロック生成部41に受け渡し、プリブロック生成部41は、所定の関数に共通鍵Kを代入してプリブロックPを生成し、生成したプリブロックPを復号部40へ受け渡すS31。プリブロック生成部41がプリブロックP生成するときに利用する手法は、データ長がブロック暗号のブロック長の整数倍となれば任意でよく、このような手法としては、共通鍵Kを該共通鍵Kで暗号化する手法や、共通鍵Kを所定の手順従いビットローテーションする手法、極端な例を挙げれば恒等関数を利用する手法が考えられる。プリブロック生成部41がプリブロックPを生成すると、復号装置4の復号部40は、指定された共通鍵Kを用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードでプリブロックPを暗号化することで、プリブロックPに対応する暗号ブロックCpを生成するS32。プリブロックに対応する暗号ブロックを生成すると、復号装置4の復号部40は、プリブロックPに対応する暗号ブロックCpを除去する処理と逆の手順、すなわち、プリブロックPに対応する暗号ブロックCpを先頭に付加した暗号文Cp,C1Cnを生成した後S33、暗号化と逆の手順、すなわち、共通鍵Kを用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードで、該暗号文Cp,C1Cnを復号するS34。暗号文ブロック連鎖モードでは、最初のブロックから順に復号されるため、該暗号文Cp,C1Cnの復号結果は、暗号ブロックCpを復号したブロック、すなわち、プリブロックPと、暗号文Ci、i=1からnに対応する平文ブロックMi、i=1からnを結合した平文P、M1Mnになる。次に、復号装置4の復号部40は、平文Cp,C1Cnの復号結果P、M1Mnの先頭から、プリブロックPのデータ長のデータを除去することで、平文P、M1MnからプリブロックPを除去する処理を行い、暗号文C1Cnに対応する平文M1Mnを生成してS35、図7で図示した手順は終了する。次に、暗号化装置3と復号装置4の実施例として、本発明に係る暗号化装置3及び復号装置4の機能を兼ね備えたICカード5について説明する。図8は、実施例2に係るICカード5を説明する図である。図8aでは、ICカード5に実装されたICチップ6が有する回路メモリを図示し、図8aに図示したように、ICカード5に実装されるICチップ6には、演算機能およびメモリを制御する機能を備えた中央演算装置60CPU:CentralProcessingUnit、外部装置とのデータの入出力に利用されるI/O回路61、揮発性メモリであるランダムアクセスメモリ62RAM:RandomAccessMemory、読み出し専用の不揮発性メモリ63ROM:ReadOnlyMemory、、電気的に書換え可能な不揮発性メモリであるEEPROM64EEPROM:ElectricallyErasableProgrammableReadOnlyMemory、DESの暗号演算に特化した回路であるコプロセッサ回路65、乱数を生成する回路であるRNG回路66RandomNumberGeneratorなどが備えられ、CPU60とCPU60以外のメモリ及び回路はデータバス67及びアドレスバス68を介して接続されている。なお、図8aでは、DESの暗号演算に特化した回路であるコプロセッサ回路65を図示しているが、DESの暗号演算をコンピュータプログラムのみで実現することも可能であるため、DESの暗号演算に特化した回路であるコプロセッサ回路65が実装されないケースも考えられる。図8bでは、ICカードに実装されるコンピュータプログラムを図示し、図8bに図示したように、ICチップ6のROM63やEEPROM64には、所定のブロック暗号で利用する共通鍵Kが記憶され、更に、ICカード1上で動作するコンピュータプログラムとして、共通鍵Kを用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードで平文M1Mnを暗号化する暗号化装置3の暗号化手段30として機能する暗号化モジュール50と、共通鍵Kを用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードで暗号文C1Cnを復号する復号装置4の復号手段40として機能する復号モジュール51と、暗号化装置3のプリブロック生成手段31又は復号装置4のプリブロック生成手段41として機能するプリブロック生成モジュール52が備えられ、図8bでは、暗号化モジュール50を利用するコマンドの一例として内部認証コマンド53InternalAuthenticationCommandを図示し、復号モジュール51を利用するコマンドの一例として外部認証コマンド54ExternalAuthenticationCommandを図示している。暗号化モジュール50を利用する内部認証コマンド53は、JICSAP等のICカード規格に記載されているように、内部認証鍵ここでは、共通鍵を用いて、外部装置から送信されたチャレンジ乱数を暗号化することで内部認証コードを生成するコマンドで、内部認証鍵ここでは、共通鍵を用いて、外部装置から送信されたチャレンジ乱数を暗号化する際、図6で図示したように、暗号化モジュール50はプリブロック生成モジュール52を利用してプリブロックPを生成して、外部装置から送信されたチャレンジ乱数を暗号化する。復号モジュール51を利用する外部認証コマンド54は、JICSAP等のICカード規格に記載されているように、外部認証鍵ここでは、共通鍵を用いて、外部装置から送信された外部認証コードを復号し、ICカードが出力したチャレンジ乱数と復号結果を比較することで外部認証コードを認証するコマンドで、外部認証鍵ここでは、共通鍵を用いて、外部装置から送信された外部認証コードを復号する際、図7で図示したように、復号モジュール51はプリブロック生成モジュール52を利用してプリブロックPを生成して、外部装置から送信された外部認証コードを復号する。"