説明

暗号化方法、復号方法、暗号化装置、復号装置及び暗号化/復号システム

【課題】暗号ブロック連鎖モードにて平文を暗号化する際、最初の暗号文ブロックが暗号解読の足掛かりになることを防止できると共に、暗号文の長さが平文の長さと同じになるようにする。
【解決手段】暗号化装置10は、暗号文ブロック連鎖モードで平文(M1・・・Mn)を暗号化する際、プロブロック生成装置12が生成したプリブロック(P)を先頭に付加した平文(P,M1・・・Mn)を暗号化し、該平文(P,M1・・・Mn)を暗号化して得られた暗号文(Cp、C1・・・Cn)からプリブロック(P)に対応する暗号文ブロック(Cp)を除去した結果を平文(M1・・・Mn)の暗号文(C1・・・Cn)とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、DES(Data Encryption Standard)やAES(Advanced Encryption Standard)など、暗号化を行う側と復号を行う側で同一の共通鍵を用い、定められたブロック長のブロック単位で暗号化/復号を行うブロック暗号に係わる発明である。
【背景技術】
【0002】
DES(Data Encryption Standard)やAES(Advanced Encryption Standard)など、暗号化を行う側と復号を行う側で同一の共通鍵を用い、定められたブロック長のブロック単位で暗号化/復号を行うブロック暗号の動作モードには、暗号ブロック連鎖しないECBモード(Electric Code Book)もあるが、ECBモードは暗号解読に脆弱であるため、暗号ブロック連鎖する暗号文ブロック連鎖モード(Cipher Block Chaining)が利用されることが多い。
【0003】
数式1は暗号文ブロック連鎖モードの関数を説明する式である。数式1に示したように、暗号文ブロック連鎖モードの暗号化関数は、i番目の平文ブロック(Mi)を暗号化した暗号文ブロック(Ci)を算出する際に、一つ前の平文ブロック(Mi−1)を暗号化して得られた暗号文ブロック(Ci−1)と平文ブロック(Mi)の排他的論理和を算出し、その結果を暗号化した結果を暗号文ブロック(Ci)とする関数となり、暗号文ブロック連鎖モードにおける復号関数は、暗号文ブロック連鎖モードにおける暗号化関数の逆関数になる。
【数1】

【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許2541113号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
このように、暗号文ブロック連鎖モードにおいては暗号ブロックが連鎖するため、ECBモードと比較して暗号解読に強いが、最初の平文ブロック(M1)には一つ前の平文ブロックが存在しないため、最初の平文ブロック(M1)には、暗号文ブロックの代わりにIV(Initial Vector)が排他的論理和され、最初の平文ブロック(M1)の暗号文ブロック(C1)が、暗号解読の足掛かりになってしまう恐れがある。
【0006】
このような問題を解決する一つ手法として、特許文献1において、乱数により生成された所定の長さの冗長ビットを平文の先頭に付加する発明が開示されているが、特許文献1で開示されている手法を用いると、冗長ビットを平文の先頭に付加することにより、暗号文のデータ長が平文のデータ長よりも長くなってしまい、このことが暗号解読の足掛かりになってしまう可能性がある。
【0007】
そこで、本発明は、所定のブロック暗号に従い暗号ブロック連鎖モードにて平文を暗号化する際、最初の暗号文ブロックが暗号解読の足掛かりになることを防止できると共に、暗号文の長さが平文の長さと同じになる技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
上述した課題を解決する第1の発明は、平文を暗号化する暗号化装置が、平文の暗号化に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを付加した平文を共通鍵で暗号化した後、暗号化した結果から前記プリブロックに対応する暗号ブロックを除去することで平文の暗号文を生成するステップ、を含むことを特徴とする暗号化方法である。
【0009】
更に、第2の発明は、暗号文を復号する復号装置が、暗号文の復号に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを共通鍵で暗号化するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックの暗号ブロックを先頭に付加した暗号文を共通鍵で復号した後、復号した結果から前記プリブロックを除去することで暗号文の平文を生成するステップ、を含むことを特徴とする復号方法である。
【0010】
更に、第3の発明は、平文の暗号化に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するプリブロック生成部と、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを先頭に付加した平文を共通鍵で暗号化した後、暗号化した結果から前記プリブロックに対応する暗号ブロックを除去することで平文の暗号文を生成する暗号化部と、を備えたことを特徴とする暗号化装置である。
【0011】
前記プリブロック生成部が前記プリブロックを生成する手法としては、所定の手順に従い共通鍵のビットを操作する手法や、共通鍵又は所定の手順に従いビットを操作した共通鍵により共通鍵を暗号化する手法が考えられる。加えて、共通鍵から派生鍵を派生させ、前記プリブロックを生成する手法も考えられる。例えば、この派生鍵により共通鍵を暗号化、又は、共通鍵によりこの派生鍵を暗号化することで前記プリブロックを生成するようにすることもできるし、この派生鍵によりこの派生鍵自身を暗号化することで前記プリブロックを生成することもできる。更に、データ長がブロック暗号のブロック長の整数倍の派生ブロックを共通鍵から派生させ、共通鍵又は共通鍵から派生させた派生鍵により、該派生ブロックを暗号化することでプリブロックを生成する手法も考えられる。
【0012】
更に、第4の発明は、暗号文の復号に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するプリブロック生成部と、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを共通鍵で暗号化するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックの暗号ブロックを先頭に付加した暗号文を前記共通鍵で復号した後、復号した結果から前記プリブロックを除去することで暗号文の平文を生成する復号を備えたことを特徴とする復号装置である。
【0013】
第3の発明と同様に、前記プリブロック生成部が前記プリブロックを生成する手法としては、所定の手順に従い共通鍵のビットを操作する手法や、共通鍵又は所定の手順に従いビットを操作した共通鍵により共通鍵を暗号化する手法が考えられる。加えて、共通鍵から派生鍵を派生させ、前記プリブロックを生成する手法も考えられる。例えば、この派生鍵により共通鍵を暗号化、又は、共通鍵によりこの派生鍵を暗号化することで前記プリブロックを生成するようにすることもできるし、この派生鍵によりこの派生鍵自身を暗号化することで前記プリブロックを生成することもできる。更に、データ長がブロック暗号のブロック長の整数倍の派生ブロックを共通鍵から派生させ、共通鍵又は共通鍵から派生させた派生鍵により、該派生ブロックを暗号化することでプリブロックを生成する手法も考えられる。
【0014】
更に、第5の発明は、他の装置とVPN(Virtual Private Network)を構築し、他の装置から受信したブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成し、生成した前記プリブロックを前記他の装置へ送信するプリブロック生成装置と、平文を暗号化する際、前記プリブロック生成装置とVPNを構築し、平文の暗号化に利用する共通鍵を前記プリブロック生成装置へ送信し、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロック生成装置から受信した前記プリブロックを先頭に付加した平文を共通鍵で暗号化した後、暗号化した結果から前記プリブロックに対応する暗号ブロックを除去することで平文の暗号文を生成する暗号化装置と、前記プリブロック生成装置とVPNを構築し、前記暗号化装置が生成した暗号文の復号に利用する共通鍵を前記プリブロック生成装置へ送信し、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを共通鍵で暗号化するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロック生成装置から受信した前記プリブロックの暗号ブロックを先頭に付加した暗号文を共通鍵で復号した後、復号した結果から前記プリブロックを除去することで暗号文の平文を生成する復号装置とから少なくとも構成されることを特徴とする暗号化/復号システムである。なお、第3の発明及び第4の発明と同様に、前記プリブロック生成装置が前記プリブロックを生成する手法としては、所定の手順に従い共通鍵をビットローテーションする手法や、共通鍵を共通鍵自身で暗号化する手法が考えられる。
【発明の効果】
【0015】
上述した発明によれば、プリブロックの暗号文ブロックが最初の平文ブロックに暗号ブロック連鎖するため、最初の平文ブロックの暗号文ブロックが暗号解読の足掛かりになることを防止できる。また、暗号化した結果から、プリブロックに係わるブロックを除去することで、暗号文の長さを平文の長さと同じにでき、暗号化する際に特別な処理が実施されていることがわからなくなる。
【図面の簡単な説明】
【0016】
【図1】実施形態1に係る暗号化/復号システムを説明する図。
【図2】実施形態1に係る暗号化装置が平文を暗号化する手順を示したフロー図。
【図3】実施形態1に係る復号装置が暗号文を復号する手順を示したフロー図。
【図4】実施例1に係る暗号化/復号システムを説明する図。
【図5】実施形態2に係る暗号化装置及び復号装置を説明する図。
【図6】実施形態2に係る暗号化装置が平文を暗号化する手順を示したフロー図。
【図7】実施形態2に係る復号装置が暗号文を復号する手順を示したフロー図。
【図8】実施例2に係るICカードを説明する図。
【発明を実施するための形態】
【0017】
ここから,本発明の実施形態について,本発明の技術分野に係わる当業者が,発明の内容を理解し,発明を実施できる程度に説明する。なお、これから説明する実施形態は本発明の一実施形態にしか過ぎず、本発明は,これから説明する実施形態に限定されることなく、種々の変形や変更が可能である。
【0018】
(実施形態1)
まず、本発明のシステムに係る実施形態1について説明する。図1は、本実施形態1に係る暗号化/復号システム1を説明する図である。
【0019】
本実施形態1に係る暗号化/復号システム1には、DES(Data Encryption Standard)やAES(Advanced Encryption Standard)など、暗号化を行う側と復号を行う側で同一の共通鍵(K)を利用し、定められたブロック長のブロック単位で処理を行うブロック暗号により暗号化/復号を実行するシステムで、共通鍵(K)を用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードで平文(M1・・・Mn)を暗号化する暗号化装置10と、共通鍵(K)を用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードで暗号文(C1・・・Cn)を復号する復号装置11と、平文(M1・・・Mn)の先頭に付加するプリブロックを生成するプリブロック生成装置12が含まれ、暗号化装置10、復号装置11及びプリブロック生成装置12はインターネット13を介して接続している。
【0020】
数式1で図示したように、CBCモードで平文を暗号化する場合、暗号化の対象となる平文(M1・・・Mn)を定められたブロック長(例えば、DESなら64ビット、AESなら128ビット)の複数の平文ブロック(Mi、i=1からn)に分割した後、一つ前の平文ブロック(Mi−1)の暗号文ブロック(Ci−1)と平文ブロック(Mi)を排他的論理和して暗号化した結果を平文ブロック(Mi)の暗号文ブロック(Ci)とすることで、暗号文ブロックを連鎖させて平文(M1・・・Mn)の暗号文を生成するが、最初の平文ブロック(M1)の暗号文ブロック(C1)は、暗号文ブロック連鎖しないため、暗号文ブロック(C1)が暗号解読の足掛かりになってしまう恐れがある。
【0021】
これに対し、実施形態1の暗号化装置10は、暗号文ブロック連鎖モードで平文(M1・・・Mn)を暗号化する際、プロブロック生成装置12が生成したプリブロック(P)を先頭に付加した平文(P,M1・・・Mn)を暗号化し、該平文(P,M1・・・Mn)の暗号化結果(Cp、C1・・・Cn)からプリブロック(P)に対応する暗号文ブロック(Cp)を除去した結果を平文(M1・・・Mn)の暗号文(C1・・・Cn)とすることで、プリブロック(P)の暗号文ブロック(Cp)が最初の平文ブロック(M1)に連鎖するようにし、最初の平文ブロック(M1)の暗号文ブロック(C1)が暗号解読の足掛かりになることを防止すると共に、暗号文(C1・・・Cn)の長さを平文(M1・・・Mn)の長さと同じにすることで、暗号化する際に特別な処理が実施されていることをわからなくしている。
【0022】
なお、DESやASEなどのブロック暗号において、暗号文の生成側と復号側とで共通鍵(K)は共有されるので、暗号化/復号でプリブロック(P)の生成に利用する手法を共通にしておけば、暗号文(C1・・・Cn)を生成するときに生成したプリブロック(P)及びプリブロック(P)の暗号文ブロック(Cp)を復号側でも生成することが可能になり、復号装置11が、暗号化の逆の手順を実行することで、暗号文(C1・・・Cn)を平文(M1・・・Mn)に復号することができる。
【0023】
ここから、暗号化システムに含まれるプリブロック生成装置12、暗号化装置10及び復号装置11についてより詳細に説明する。
【0024】
まず、プリブロック生成装置12について説明する。プリブロック生成装置12は、受け渡された共通鍵(K)から、平文(M1・・・Mn)の先頭に付加するプリブロック(P)を生成する装置で、プリブロック生成装置12には、プリブロックを生成するためのコンピュータプログラムで実現される。
【0025】
プリブロック生成装置12がプリブロック(P)を生成する手法は、データ長がブロック暗号のブロック長の整数倍となれば任意でよく、このような手法としては、共通鍵(K)を該共通鍵(K)で暗号化する手法や、共通鍵(K)を所定の手順従いビットローテーションする手法などが考えられ、極端な例を挙げれば恒等関数であってもよい。
【0026】
加えて、共通鍵(K)から派生鍵を派生させ、プリブロック(P)を生成する手法も考えられる。例えば、この派生鍵により共通鍵(K)を暗号化、又は、共通鍵(K)によりこの派生鍵を暗号化することでプリブロック(P)を生成するようにすることもできるし、この派生鍵によりこの派生鍵自身を暗号化することでプリブロック(P)を生成することもできる。なお、派生鍵は、共通鍵(K)の所定のバイトをシフト又はローテートすることで派生させればよい。
【0027】
更に、暗号鍵の拡張アルゴリズムなどを利用して、データ長がブロック暗号のブロック長の整数倍の派生ブロックを共通鍵(K)から派生させ、プリブロック(P)を生成する手法も考えられる。例えば、共通鍵(K)により、この派生ブロックを暗号化することでプリブロック(P)を生成するようにすることができる。なお、派生ブロックの暗号に用いる暗号鍵は、上述した派生鍵でも構わない。
【0028】
プリブロック(P)のデータ長は、プリブロック(P)を生成する手法によって決定し、例えば、プリブロック(P)を生成する関数として、共通鍵(K)を該共通鍵(K)で暗号化する手法を用いる場合、シングルDESをブロック暗号とすれば、シングルDESの鍵長はパリティを含めて64ビットであるため、プリブロック(P)のデータ長はDESのブロック長(64ビット)の1倍になる。また、AESをブロック暗号とする際、AESの鍵長が256ビットであれば、プリブロック(P)のデータ長はAESのブロック長の2倍(256ビット)になる。
【0029】
次に、暗号化装置10について説明する。暗号化装置10は、プリブロック生成装置12に共通鍵(K)を受け渡し、プリブロック生成装置12が生成したプリブロック(P)を用い、暗号化の対象となる平文(M1・・・Mn)を暗号化した暗号文(C1・・・Cn)を生成する装置で、暗号化部は、暗号化装置10として利用するコンピュータを暗号化部として動作させるためのコンピュータプログラムで実現される。
【0030】
図2は、暗号化装置10が平文(M1・・・Mn)を暗号化する手順を示したフロー図である。
【0031】
暗号化装置10が平文(M1・・・Mn)を暗号化する際、まず、暗号化の対象となる平文(M1・・・Mn)と暗号化に利用する共通鍵(K)が暗号化装置10に指定される(S1)。平文(M1・・・Mn)及び共通鍵(K)が暗号化装置10に記憶されていない場合、平文(M1・・・Mn)及び共通鍵(K)は、操作者や外部装置によって暗号化装置10に入力されることになり、また、平文(M1・・・Mn)及び共通鍵(K)が暗号化装置10に記憶されている場合、暗号化装置10に記憶されている平文(M1・・・Mn)及び共通鍵(K)が、操作者や外部装置によって指定されることになる。
【0032】
なお、ブロック暗号ではブロック長のブロック単位で処理するため、指定された平文のデータ長がブロック暗号のブロック長の整数倍でない場合、データ長がブロック暗号のブロック長の整数倍になるように、PKCS#5などの規格に従い所定のデータがパディングされ、該平文は、n個の平文ブロック(Mi、i=1からn)に分割される。
【0033】
次に、暗号化装置10は、SSL(Secure Socket Layer)などの技術を利用して、プリブロック生成装置12とVPN(Virtual Private Network)を構築した後(S2)、指定された共通鍵(K)をプリブロック生成装置12に受け渡し、プリブロック生成装置12が生成したプリブロック(P)をプリブロック生成装置12から受け取る(S3)。
【0034】
プリブロック生成装置12からプリブロック(P)が受け渡されると、暗号化装置10は、プリブロック(P)を先頭に付加した平文(P,M1・・・Mn)を生成した後(S4)、該平文(P,M1・・・Mn)を、共通鍵(K)を用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードにて暗号化する(S5)。
【0035】
なお、暗号文ブロック連鎖モードでは、最初の平文ブロックから順に暗号化されるため、平文(P,M1・・・Mn)の暗号結果は、プリブロック(P)に対応する暗号ブロック(Cp)と平文ブロック(Mi、i=1からn)に対応する暗号ブロック(Ci、i=1からn)を結合した暗号文(Cp,C1・・・Cn)になる。
【0036】
そして、暗号化装置10の暗号化部は、平文(P,M1・・・Mn)を暗号化するこで得られた暗号文(Cp,C1・・・Cn)の先頭から、プリブロック(P)のデータ長のデータを除去することで、プリブロック(P)に対応する暗号ブロック(Cp)を除去する処理を行い、平文(M1・・・Mn)に対応する暗号文(C1・・・Cn)を生成して(S6)、図2で図示した手順は終了する。
【0037】
例えば、プリブロック(P)が1ブロックならば、暗号化装置10の暗号化部は、暗号文(Cp,C1・・・Cn)の先頭からブロック長のデータを除去することになり、また、プリブロック(P)が2ブロックならば、暗号化装置10の暗号化部は、暗号文(Cp,C1・・・Cn)の先頭からブロック長の2倍のデータを除去することになる。
【0038】
次に、復号装置11について説明する。復号装置11は、プリブロック生成装置12に共通鍵(K)を受け渡し、プリブロック生成装置12が生成したプリブロック(P)を用い、復号の対象となる暗号文(C1・・・Cn)を復号した平文(M1・・・Mn)を生成する装置で、復号装置11には、暗号文(C1・・・Cn)を復号するためのコンピュータプログラムが実装される。
【0039】
図3は、復号装置11が暗号文(C1・・・Cn)を復号する手順を示したフロー図である。
【0040】
復号装置11の復号部が暗号文(C1・・・Cn)を復号する際、復号の対象となる暗号文(C1・・・Cn)と共通鍵(K)が指定される(S10)。平文(M1・・・Mn)のデータ長はブロック暗号のブロック長の整数倍にパディングされた後に暗号化されるため、暗号文(C1・・・Cn)のデータ長は必ずブロック暗号のブロック長の整数倍になっており、図3において、暗号文(C1・・・Cn)は、n個の暗号文ブロック(Ci、i=1からn)に分割されている。
【0041】
復号の対象となる暗号文(C1・・・Cn)が指定されると、SSL(Secure Socket Layer)などの技術を利用して、プリブロック生成装置12とVPN(Virtual Private Network)を構築した後(S11)、指定された共通鍵(K)をプリブロック生成装置12に受け渡し、プリブロック生成装置12が生成したプリブロック(P)をプリブロック生成装置12から受け取る(S12)。
【0042】
上述しているように、ブロック暗号において、暗号文(C1・・・Cn)の生成側と復号側とで共通鍵は共有されるので、暗号化装置10と同じ手法で同じ共通鍵(K)を用いることで、暗号文(C1・・・Cn)を生成するときに用いたプリブロック(P)を生成することが復号装置11側でも可能である。
【0043】
次に、復号装置11は、指定された共通鍵(K)を用い、所定のブロック暗号のアルゴリズムに従い、暗号文ブロック連鎖モードでプリブロック(P)を暗号化することで、プリブロック(P)の暗号ブロック(Cp)を生成する(S13)。
【0044】
プリブロック(P)の暗号ブロック(Cp)を生成すると、復号装置11は、プリブロック(P)の暗号ブロック(Cp)を除去する処理と逆の手順、すなわち、プリブロック(P)の暗号ブロック(Cp)を先頭に付加した暗号文(Cp、C1・・・Cn)を生成した後(S14)、暗号化と逆の手順、すなわち、共通鍵(K)を用い、所定のブロック暗号のアルゴリズムに従い、暗号文ブロック連鎖モードで、該暗号文(Cp,C1・・・Cn)を復号する(S15)。
【0045】
暗号文ブロック連鎖モードでは、最初のブロックから順に復号されるため、暗号文(Cp,C1・・・Cn)の復号結果は、暗号ブロック(Cp)を復号したブロック、すなわち、プリブロック(P)と、暗号文(Ci、i=1からn)に対応する平文ブロック(Mi、i=1からn)を結合した平文(P、M1・・・Mn)になる。
【0046】
次に、復号装置11は、暗号文(Cp,C1・・・Cn)の復号結果(P、M1・・・Mn)の先頭から、プリブロック(P)のデータ長のデータを除去することで、プリブロック(P)を除去する処理を行い、暗号文(C1・・・Cn)に対応する平文(M1・・・Mn)を生成して(S16)、図3で図示した手順は終了する。
【0047】
なお、PKCS#5などの規格に従い所定のデータがパディングされて暗号化されている場合、PKCS#5などの規格に従いパディングされた所定のデータが、平文(M1・・・Mn)から除去される。
【実施例1】
【0048】
ここから、本発明に係る暗号化システムの実施例について説明する。図4は、実施例1に係る暗号化/復号システム2を説明する図である。図4で図示した暗号化/復号システム2には、暗号化装置10として機能するパーソナルコンピュータ20と、復号装置11として機能するパーソナルコンピュータ21と、プリブロック生成装置12として機能するサーバ22が含まれ、パーソナルコンピュータ20,21とサーバ22はインターネット23を介して接続している。
【0049】
プリブロック生成装置12として機能するサーバ22では、必要な機能に対応するアプリケーションソフトウェアを複数のユーザにシェアするSaas(Software as a Service)や、業務用のアプリケーションソフトウェアを特定のユーザにレンタルするASP(Application Service Provider)などが運営され、実施例1において、サーバ22が提供するアプリケーションソフトウェアは、これまで説明したプリブロック生成装置12として機能するソフトウェアになる。
【0050】
暗号化装置10として機能するパーソナルコンピュータ20には、これまで説明した暗号化装置10として機能するコンピュータプログラムが実装され、また、復号装置11として機能するパーソナルコンピュータ21には、これまで説明した復号装置11として機能するコンピュータプログラムが実装されている。
【0051】
暗号化装置10及び復号装置11として機能するコンピュータプログラムは、パーソナルコンピュータ間で送信されるデータを暗号化することが必要なアプリケーションのアドインなどで具体的には実現され、該アプリケーションの一例としてはメールクライアントソフトが挙げられる。
【0052】
パーソナルコンピュータ20は、パーソナルコンピュータ21へ送信するデータを暗号化する際、図2で図示した手順を実行して、該データの暗号文を生成し、生成した暗号文をパーソナルコンピュータ21へ送信する。なお、実施例1では、プリブロック(P)を生成する装置はサーバ22になるため、パーソナルコンピュータ20は、サーバ22で運営されているアプリケーションソフトウェアを利用して、プリブロック(P)を生成することになる。
【0053】
また、パーソナルコンピュータ21は、パーソナルコンピュータ20から受信した暗号文を復号する際、図3で図示した手順を実行して、該暗号文を復号する。なお、実施例1では、プリブロック(P)を生成する装置はサーバ22になるため、パーソナルコンピュータ21は、サーバ22で運営されているアプリケーションソフトウェアを利用して、プリブロック(P)を生成することになる。
【0054】
(実施形態2)
次に、本発明の暗号化装置及び復号装置に係る実施形態2を説明する。図5は、実施形態2に係る暗号化装置3及び復号装置4を説明する図である。
【0055】
実施形態2に係る暗号化装置3は、DESやAESなど、暗号化を行う側と復号を行う側で同一の共通鍵(K)を利用し、定められたブロック長のブロック単位で暗号化する装置で、図5(a)に図示したように、暗号化装置3は、受け渡された共通鍵(K)からプリブロック(P)を生成するプリブロック生成部31と、プリブロック生成部31に共通鍵(K)を受け渡し、プリブロック生成部31が生成したプリブロック(P)を用い、暗号化の対象となる平文(M1・・・Mn)を暗号化した暗号文(C1・・・Cn)を生成する暗号化部30を備え、プリブロック生成部31及び暗号化部30は、暗号化装置3として利用するコンピュータをプリブロック生成部31及び暗号化部30として動作させるためのコンピュータプログラムで実現される。
【0056】
また、実施形態2に係る復号装置4は、DESやAESなど、暗号化を行う側と復号を行う側で同一の共通鍵(K)を利用し、定められたブロック長のブロック単位で復号する装置で、図5(b)に図示したように、復号装置4は、受け渡された共通鍵(K)からプリブロック(P)を生成するプリブロック生成部41と、プリブロック生成部41に共通鍵(K)を受け渡し、プリブロック生成部41が生成したプリブロック(P)を用い、復号の対象となる暗号文(C1・・・Cn)を復号した平文(M1・・・Mn)を生成する復号部40を備え、プリブロック生成部及び復号部40は、復号装置4として利用するコンピュータを復号部として動作させるためのコンピュータプログラムで実現される。
【0057】
ここから、暗号化装置3が実行する手順について説明する。図6は、暗号化装置3が平文(M1・・・Mn)を暗号化する手順を示したフロー図である。
【0058】
暗号化装置3の暗号化部が平文(M1・・・Mn)を暗号化する際、まず、暗号化の対象となる平文(M1・・・Mn)と暗号化に利用する共通鍵(K)が暗号化装置3に指定される(S20)。平文(M1・・・Mn)及び共通鍵(K)が暗号化装置3に記憶されていない場合、平文(M1・・・Mn)及び共通鍵(K)は、操作者や外部装置によって暗号化装置3に入力されることになり、また、平文(M1・・・Mn)及び共通鍵(K)が暗号化装置3に記憶されている場合、暗号化装置3に記憶されている平文(M1・・・Mn)及び共通鍵(K)が、操作者や外部装置によって指定されることになる。
【0059】
なお、ブロック暗号ではブロック長のブロック単位で処理するため、指定された平文のデータ長がブロック長の整数倍でない場合、データ長がブロック暗号のブロック長の整数倍になるように、PKCS#5などの規格に従い所定のデータがパディングされ、該平文は、n個の平文ブロック(Mi、i=1からn)に分割される。
【0060】
次に、暗号化装置3は、指定された共通鍵(K)をプリブロック生成部31に受け渡し、プリブロック生成部31は、共通鍵(K)からプリブロック(P)を生成し、生成したプリブロック(P)を暗号化部30へ受け渡す(S21)。
【0061】
プリブロック生成部31がプリブロック(P)生成するときに利用する手法は、データ長がブロック暗号のブロック長の整数倍となれば任意でよく、このような手法としては、共通鍵(K)を該共通鍵(K)で暗号化する手法や、共通鍵(K)を所定の手順従いビットローテーションする手法、極端な例を挙げれば恒等関数を利用する手法が考えられる。
【0062】
加えて、共通鍵(K)から派生鍵を派生させ、プリブロック(P)を生成する手法も考えられる。例えば、この派生鍵により共通鍵(K)を暗号化、又は、共通鍵(K)によりこの派生鍵を暗号化することでプリブロック(P)を生成するようにすることもできるし、この派生鍵によりこの派生鍵自身を暗号化することでプリブロック(P)を生成することもできる。なお、派生鍵は、共通鍵(K)の所定のバイトをシフト又はローテートすることで派生させればよい。
【0063】
更に、暗号鍵の拡張アルゴリズムなどを利用して、データ長がブロック暗号のブロック長の整数倍の派生ブロックを共通鍵(K)から派生させ、プリブロック(P)を生成する手法も考えられる。例えば、共通鍵(K)により、この派生ブロックを暗号化することでプリブロック(P)を生成するようにすることができる。なお、派生ブロックの暗号に用いる暗号鍵は、上述した派生鍵でも構わない。
【0064】
プリブロック生成部31からプリブロック(P)が受け渡されると、暗号化装置3の暗号化部30は、プリブロック(P)を先頭に付加した平文(P,M1・・・Mn)を生成した後(S22)、該平文(P,M1・・・Mn)を、共通鍵(K)を用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードにて暗号化する(S23)。
【0065】
なお、暗号文ブロック連鎖モードでは、最初の平文ブロックから順に暗号化されるため、該平文(P,M1・・・Mn)の暗号結果は、プリブロック(P)に対応する暗号ブロック(Cp)と平文ブロック(Mi、i=1からn)に対応する暗号ブロック(Ci、i=1からn)を結合した暗号文(Cp,C1・・・Cn)になる。
【0066】
そして、暗号化装置3の暗号化部は、平文(P,M1・・・Mn)を暗号化して得られた暗号文(Cp,C1・・・Cn)の先頭から、プリブロック(P)のデータ長のデータを除去することで、プリブロック(P)に対応する暗号ブロック(Cp)を除去する処理を行い、平文(M1・・・Mn)に対応する暗号文(C1・・・Cn)を生成して(S24)、図6で図示した手順は終了する。
【0067】
次に、復号装置4が実行する手順について説明する。図7は、復号装置4が暗号文(C1・・・Cn)を復号する手順を示したフロー図である。
【0068】
復号装置4が暗号文(C1・・・Cn)を復号する際、復号の対象となる暗号文(C1・・・Cn)と共通鍵(K)が指定される(S30)。平文(M1・・・Mn)のデータ長はブロック暗号のブロック長の整数倍にパディングされた後に暗号化されるため、暗号文(C1・・・Cn)のデータ長は必ずブロック暗号のブロック長の整数倍になっており、図3において、暗号文(C1・・・Cn)は、n個の暗号文ブロック(Ci、i=1からn)に分割されている。
【0069】
次に、復号装置4は、指定された共通鍵(K)をプリブロック生成部41に受け渡し、プリブロック生成部41は、所定の関数に共通鍵(K)を代入してプリブロック(P)を生成し、生成したプリブロック(P)を復号部40へ受け渡す(S31)。
【0070】
プリブロック生成部41がプリブロック(P)生成するときに利用する手法は、データ長がブロック暗号のブロック長の整数倍となれば任意でよく、このような手法としては、共通鍵(K)を該共通鍵(K)で暗号化する手法や、共通鍵(K)を所定の手順従いビットローテーションする手法、極端な例を挙げれば恒等関数を利用する手法が考えられる。
【0071】
プリブロック生成部41がプリブロック(P)を生成すると、復号装置4の復号部40は、指定された共通鍵(K)を用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードでプリブロック(P)を暗号化することで、プリブロック(P)に対応する暗号ブロック(Cp)を生成する(S32)。
【0072】
プリブロックに対応する暗号ブロックを生成すると、復号装置4の復号部40は、プリブロック(P)に対応する暗号ブロック(Cp)を除去する処理と逆の手順、すなわち、プリブロック(P)に対応する暗号ブロック(Cp)を先頭に付加した暗号文(Cp,C1・・・Cn)を生成した後(S33)、暗号化と逆の手順、すなわち、共通鍵(K)を用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードで、該暗号文(Cp,C1・・・Cn)を復号する(S34)。
【0073】
暗号文ブロック連鎖モードでは、最初のブロックから順に復号されるため、該暗号文(Cp,C1・・・Cn)の復号結果は、暗号ブロック(Cp)を復号したブロック、すなわち、プリブロック(P)と、暗号文(Ci、i=1からn)に対応する平文ブロック(Mi、i=1からn)を結合した平文(P、M1・・・Mn)になる。
【0074】
次に、復号装置4の復号部40は、平文(Cp,C1・・・Cn)の復号結果(P、M1・・・Mn)の先頭から、プリブロック(P)のデータ長のデータを除去することで、平文(P、M1・・・Mn)からプリブロック(P)を除去する処理を行い、暗号文(C1・・・Cn)に対応する平文(M1・・・Mn)を生成して(S35)、図7で図示した手順は終了する。
【実施例2】
【0075】
次に、暗号化装置3と復号装置4の実施例として、本発明に係る暗号化装置3及び復号装置4の機能を兼ね備えたICカード5について説明する。
【0076】
図8は、実施例2に係るICカード5を説明する図である。図8(a)では、ICカード5に実装されたICチップ6が有する回路・メモリを図示し、図8(a)に図示したように、ICカード5に実装されるICチップ6には、演算機能およびメモリを制御する機能を備えた中央演算装置60(CPU:Central Processing Unit)、外部装置とのデータの入出力に利用されるI/O回路61、揮発性メモリであるランダムアクセスメモリ62(RAM:Random Access Memory)、読み出し専用の不揮発性メモリ63(ROM:Read Only Memory、)、電気的に書換え可能な不揮発性メモリであるEEPROM64(EEPROM:Electrically Erasable Programmable Read-Only Memory)、DESの暗号演算に特化した回路であるコプロセッサ回路65、乱数を生成する回路であるRNG回路66(Random Number Generator)などが備えられ、CPU60とCPU60以外のメモリ及び回路はデータバス67及びアドレスバス68を介して接続されている。
【0077】
なお、図8(a)では、DESの暗号演算に特化した回路であるコプロセッサ回路65を図示しているが、DESの暗号演算をコンピュータプログラムのみで実現することも可能であるため、DESの暗号演算に特化した回路であるコプロセッサ回路65が実装されないケースも考えられる。
【0078】
図8(b)では、ICカードに実装されるコンピュータプログラムを図示し、図8(b)に図示したように、ICチップ6のROM63やEEPROM64には、所定のブロック暗号で利用する共通鍵(K)が記憶され、更に、ICカード1上で動作するコンピュータプログラムとして、共通鍵(K)を用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードで平文(M1・・・Mn)を暗号化する暗号化装置3の暗号化手段30として機能する暗号化モジュール50と、共通鍵(K)を用い、所定のブロック暗号のアルゴリズムに従い暗号文ブロック連鎖モードで暗号文(C1・・・Cn)を復号する復号装置4の復号手段40として機能する復号モジュール51と、暗号化装置3のプリブロック生成手段31又は復号装置4のプリブロック生成手段41として機能するプリブロック生成モジュール52が備えられ、図8(b)では、暗号化モジュール50を利用するコマンドの一例として内部認証コマンド53(Internal Authentication Command)を図示し、復号モジュール51を利用するコマンドの一例として外部認証コマンド54(External Authentication Command)を図示している。
【0079】
暗号化モジュール50を利用する内部認証コマンド53は、JICSAP等のICカード規格に記載されているように、内部認証鍵(ここでは、共通鍵)を用いて、外部装置から送信されたチャレンジ(乱数)を暗号化することで内部認証コードを生成するコマンドで、内部認証鍵(ここでは、共通鍵)を用いて、外部装置から送信されたチャレンジ(乱数)を暗号化する際、図6で図示したように、暗号化モジュール50はプリブロック生成モジュール52を利用してプリブロック(P)を生成して、外部装置から送信されたチャレンジ(乱数)を暗号化する。
【0080】
復号モジュール51を利用する外部認証コマンド54は、JICSAP等のICカード規格に記載されているように、外部認証鍵(ここでは、共通鍵)を用いて、外部装置から送信された外部認証コードを復号し、ICカードが出力したチャレンジ(乱数)と復号結果を比較することで外部認証コードを認証するコマンドで、外部認証鍵(ここでは、共通鍵)を用いて、外部装置から送信された外部認証コードを復号する際、図7で図示したように、復号モジュール51はプリブロック生成モジュール52を利用してプリブロック(P)を生成して、外部装置から送信された外部認証コードを復号する。
【符号の説明】
【0081】
1 実施形態1に係る暗号化/復号システム
10 実施形態1に係る暗号化装置
11 実施形態1に係る復号装置
12 実施形態1に係るプリブロック生成装置
2 実施例1に係る暗号化/復号システム
20 暗号化装置として機能するパーソナルコンピュータ
21 復号装置として機能するパーソナルコンピュータ
22 プリブロック生成装置として機能するサーバ
3 実施形態2に係る暗号化装置
30 暗号化手段
31 プリブロック生成手段
4 実施形態2に係る復号装置
40 復号手段
41 プリブロック生成手段
5 実施例2に係るICカード
50 暗号化モジュール
51 復号モジュール
52 プリブロック生成モジュール
53 内部認証コマンド
54 外部認証コマンド


【特許請求の範囲】
【請求項1】
平文を暗号化する暗号化装置が、平文の暗号化に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを先頭に付加した平文を共通鍵で暗号化した後、暗号化した結果から前記プリブロックに対応する暗号ブロックを除去することで平文の暗号文を生成するステップ、を含むことを特徴とする暗号化方法。
【請求項2】
暗号文を復号する復号装置が、暗号文の復号に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを共通鍵で暗号化するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックの暗号ブロックを先頭に付加した暗号文を共通鍵で復号した後、復号した結果から前記プリブロックを除去することで暗号文の平文を生成するステップ、を含むことを特徴とする復号方法。
【請求項3】
平文の暗号化に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するプリブロック生成部と、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを先頭に付加した平文を共通鍵で暗号化した後、暗号化した結果から前記プリブロックに対応する暗号ブロックを除去することで平文の暗号文を生成する暗号化部と、を備えたことを特徴とする暗号化装置。
【請求項4】
前記プリブロック生成部は、所定の手順に従い共通鍵のビットを操作することで、前記プリブロックを生成することを特徴とする、請求項3に記載の暗号化装置。
【請求項5】
前記プリブロック生成部は、共通鍵又は所定の手順に従いビットを操作した共通鍵により共通鍵を暗号化することで、前記プリブロックを生成することを特徴とする、請求項3に記載の暗号化装置。
【請求項6】
前記プリブロック生成部は、派生鍵を共通鍵から派生させ、該派生鍵により共通鍵を暗号化、又は、共通鍵により該派生鍵を暗号化することで前記プリブロックを生成することを特徴とする、請求項3に記載の暗号化装置。
【請求項7】
前記プリブロック生成部は、派生鍵を共通鍵から派生させ、該派生鍵により該派生鍵を暗号化することで前記プリブロックを生成することを特徴とする、請求項3に記載の暗号化装置。
【請求項8】
前記プリブロック生成部は、データ長がブロック暗号のブロック長の整数倍の派生ブロックを共通鍵から派生させ、共通鍵により、該派生ブロックを暗号化することでプリブロックを生成することを特徴とする、請求項3に記載の暗号化装置。
【請求項9】
前記プリブロック生成部は、データ長がブロック暗号のブロック長の整数倍の派生ブロックと派生鍵を共通鍵から派生させ、該派生鍵により、該派生ブロックを暗号化することでプリブロックを生成することを特徴とする、請求項3に記載の暗号化装置。
【請求項10】
暗号文の復号に利用するブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成するプリブロック生成部と、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを共通鍵で暗号化するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックの暗号ブロックを暗号文の先頭に付加した暗号文を前記共通鍵で復号した後、復号した結果から前記プリブロックを除去することで暗号文の平文を生成する復号を備えたことを特徴とする復号装置。
【請求項11】
前記プリブロック生成部は、所定の手順に従い共通鍵のビットを操作することで、前記プリブロックを生成することを特徴とする、請求項10に記載の復号装置。
【請求項12】
前記プリブロック生成部は、共通鍵又は所定の手順に従いビットを操作した共通鍵により共通鍵を暗号化することで、前記プリブロックを生成することを特徴とする、請求項10に記載の復号装置。
【請求項13】
前記プリブロック生成部は、派生鍵を共通鍵から派生させ、該派生鍵により共通鍵を暗号化、又は、共通鍵により該派生鍵を暗号化することで前記プリブロックを生成することを特徴とする、請求項10に記載の復号装置。
【請求項14】
前記プリブロック生成部は、派生鍵を共通鍵から派生させ、該派生鍵により該派生鍵を暗号化することで前記プリブロックを生成することを特徴とする、請求項10に記載の復号装置。
【請求項15】
前記プリブロック生成部は、データ長がブロック暗号のブロック長の整数倍の派生ブロックを共通鍵から派生させ、共通鍵により、該派生ブロックを暗号化することでプリブロックを生成することを特徴とする、請求項10に記載の復号装置。
【請求項16】
前記プリブロック生成部は、データ長がブロック暗号のブロック長の整数倍の派生ブロックと派生鍵を共通鍵から派生させ、該派生鍵により、該派生ブロックを暗号化することでプリブロックを生成することを特徴とする、請求項10に記載の復号装置。
【請求項17】
他の装置とVPN(Virtual Private Network)を構築し、他の装置から受信したブロック暗号の共通鍵から、ブロック暗号のブロック長の整数倍となるプリブロックを生成し、生成した前記プリブロックを前記他の装置へ送信するプリブロック生成装置と、
平文を暗号化する際、前記プリブロック生成装置とVPNを構築し、平文の暗号化に利用する共通鍵を前記プリブロック生成装置へ送信し、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロック生成装置から受信した前記プリブロックを先頭に付加した平文を共通鍵で暗号化した後、暗号化した結果から前記プリブロックに対応する暗号ブロックを除去することで平文の暗号文を生成する暗号化装置と、
前記プリブロック生成装置とVPNを構築し、前記暗号化装置が生成した暗号文の復号に利用する共通鍵を前記プリブロック生成装置へ送信し、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロックを共通鍵で暗号化するステップ、所定のブロック暗号に基づき、暗号ブロック連鎖モードにて、前記プリブロック生成装置から受信した前記プリブロックの暗号ブロックを先頭に付加した暗号文を共通鍵で復号した後、復号した結果から前記プリブロックを除去することで暗号文の平文を生成する復号装置と、
から少なくとも構成されることを特徴とする暗号化/復号システム。
【請求項18】
前記プリブロック生成装置は、所定の手順に従い共通鍵をビットローテーションすることで、前記プリブロックを生成することを特徴とする、請求項17に記載の暗号化/復号システム。
【請求項19】
前記プリブロック生成装置は、共通鍵を共通鍵自身で暗号化することで、前記プリブロックを生成することを特徴とする、請求項17に記載の暗号化/復号システム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate