(57)【特許請求の範囲】
【請求項１】
ロードしたプログラムを実行する処理部と、検査ベクトルおよび鍵を記憶する記憶部と、を備えたブロック暗号化装置によって実行される、ブロック暗号化方法であって、
（ａ）前記処理部により、第１のベクトルおよび第２のベクトルを得ることと；
（ｂ）前記処理部により、電子ファイルを複数のメッセージブロックに分割することであって、前記メッセージブロックがシーケンスを有することと；
（ｃ）前記処理部により、前記検査ベクトルを前記メッセージブロックの最後のブロックとして前記メッセージブロックに加算することと；
（ｄ）前記処理部により、各々のメッセージブロックに対して前記シーケンスに合わせて：
（ｄ１）前記処理部により、入力ブロックを生成する演算であって、前記入力ブロックの値が、前記メッセージブロックと、前記メッセージブロックの１つ前のメッセージブロックに対応する出力ブロックと、前記メッセージブロックの前記１つ前のメッセージブロックの前のメッセージブロックとに対してＸＯＲ演算を実施して得られた値に等しい演算；
（ｄ２）前記処理部により、前記鍵を用いて前記入力ブロックを暗号化して出力ブロックを得る演算；および
（ｄ３）前記処理部により、前記出力ブロックと、前記メッセージブロックの前記１つ前のメッセージブロックとに対してＸＯＲ演算を実施して暗号化ブロックを得る演算；
を実施することと、
（ｅ）前記暗号化ブロックを前記シーケンスに合わせて連結して電子暗号化ファイルを生成することと、
を含むブロック暗号化方法において、
前記ステップ（ｄ）が前記メッセージブロックの第１のブロックを処理するとき、前記メッセージブロックの前記１つ前のメッセージブロックに対応する前記出力ブロックは、前記第１のベクトルであり、前記メッセージブロックの前記１つ前のメッセージブロックの前の前記メッセージブロックは、オールゼロベクトルであり、
前記ステップ（ｄ）が前記メッセージブロックの第２のブロックを処理するとき、前記メッセージブロックの前記１つ前のメッセージブロックの前の前記メッセージブロックは、前記第２のベクトルである、
ブロック暗号化方法。
【請求項２】
前記ステップ（ｄ１）は、前記メッセージブロックと、前記メッセージブロックの前記１つ前のメッセージブロックに対応する前記暗号化ブロックとに対してＸＯＲ演算を実施して前記入力ブロックを生成する、請求項１に記載のブロック暗号化方法。
【請求項３】
前記ステップ（ｄ１）は、
前記処理部により、前記メッセージブロックと、前記メッセージブロックの前記１つ前のメッセージブロックの前の前記メッセージブロックとに対してＸＯＲ演算を実施して仮ブロックを得ることと、
前記処理部により、前記仮ブロックと、前記メッセージブロックの前記１つ前のメッセージブロックに対応する前記出力ブロックとに対してＸＯＲ演算を実施して前記入力ブロックを得ることと
を含む、
請求項１に記載のブロック暗号化方法。
【請求項４】
前記ステップ（ｄ１）、前記ステップ（ｄ２）、および前記ステップ（ｄ３）は、
前記処理部により、各々の前記メッセージブロックに対して：
前記処理部により、前記メッセージブロックと、前記メッセージブロックの前記１つ前のメッセージブロックの前の前記メッセージブロックとに対してＸＯＲ演算を実施する演算と；
前記処理部により、前記鍵、前記第１のベクトルおよび暗号ブロック連鎖装置を用いて前記仮ブロックを暗号化して前記出力ブロックにする演算と；
前記処理部により、各々の出力ブロックと、前記対応する１つ前のメッセージブロックとに対してＸＯＲ演算を実施して暗号化ブロックを得る演算と
を実施して複数の仮ブロックを得るステップを含む、
請求項１に記載のブロック暗号化方法。
【請求項５】
前記処理部により、前記メッセージブロックの前記最後のブロックを処理する前に、前記暗号化ブロックに対してＸＯＲ演算を実施して仮ブロックを得ることと；
前記処理部により、前記仮ブロックに対して関数演算を実施して前記検査ベクトルを得ることと
をさらに含む、請求項１に記載のブロック暗号化方法。
【請求項６】
前記関数演算は、鍵暗号化演算、回転演算およびハッシュ演算のうちの１つである、請求項５に記載のブロック暗号化方法。
【請求項７】
ロードしたプログラムを実行する処理部と、検査ベクトルおよび鍵を記憶する記憶部と、を備えたブロック復号化装置によって実行される、ブロック復号化方法であって、
（ａ）前記処理部により、第１のベクトルおよび第２のベクトルを得ることと、
（ｂ）前記処理部により、電子暗号化ファイルを複数の暗号化ブロックに分割することであって、前記暗号化ブロックがシーケンスを有することと、
（ｃ）前記処理部により、各々の暗号化ブロックに対して前記シーケンスに合わせて：
（ｃ１）前記処理部により、入力ブロックを生成する演算であって、前記入力ブロックの値が、前記暗号化ブロックと、前記暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックと、前記暗号化ブロックの前記１つ前の暗号化ブロックの前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しい演算、
（ｃ２）前記処理部により、前記鍵を用いて前記入力ブロックを復号化して出力ブロックを得る演算、および
（ｃ３）前記処理部により、メッセージブロックを生成する演算であって、前記メッセージブロックの値が、前記出力ブロックと、前記暗号化ブロックの前記１つ前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しい演算、
を実施することと、
（ｄ）前記処理部により、前記メッセージブロックの最後のブロックを前記検査ベクトルと比較することと、
（ｅ）前記処理部により、前記メッセージブロックの最後のブロックが前記検査ベクトルと同じとき、前記メッセージブロックの最後のブロックを排除した前記メッセージブロックを前記シーケンスに合わせて連結して復号化ファイルを生成することと、
を含むブロック復号化方法において、
前記ステップ（ｃ）が前記暗号化ブロックの第１のブロックを処理するとき、前記暗号化ブロックの前記１つ前の暗号化ブロックに対応する前記出力ブロックは、第２のベクトルであり、前記暗号化ブロックの前記１つ前の暗号化ブロックの前の前記暗号化ブロックは、オールゼロベクトルであり、前記ステップ（ｃ）が前記暗号化ブロックの第２のブロックを処理するとき、前記暗号化ブロックの前記１つ前の暗号化ブロックの前の前記暗号化ブロックは、第１のベクトルである、
ブロック復号化方法。
【請求項８】
前記ステップ（ｃ１）は、前記暗号化ブロックと、前記暗号化ブロックの前記１つ前の暗号化ブロックに対応する前記メッセージブロックとに対してＸＯＲ演算を実施することによって前記入力ブロックを生成し、前記ステップ（ｃ３）は、前記出力ブロックと、前記暗号化ブロックの前記１つ前の暗号化ブロックとに対してＸＯＲ演算を実施することによって前記メッセージブロックを生成する、請求項７に記載のブロック復号化方法。
【請求項９】
前記ステップ（ｃ１）は、前記暗号化ブロックと、前記暗号化ブロックの前記１つ前の暗号化ブロックに対応する前記メッセージブロックとに対してＸＯＲ演算を実施することによって前記入力ブロックを生成し、
前記ステップ（ｃ３）は、前記暗号化ブロックの前記１つ前の暗号化ブロックの前の暗号化ブロックに対応する前記メッセージブロックと、前記出力ブロックと、前記暗号化ブロックの前記１つ前の暗号化ブロックに対応する前記入力ブロックとに対してＸＯＲ演算を実施することによって前記メッセージブロックを得て、
前記ステップ（ｃ３）が前記暗号化ブロックの第１のブロックを処理するとき、前記暗号化ブロックの前記１つ前の暗号化ブロックの前の暗号化ブロックに対応する前記メッセージブロックは、オールゼロベクトルであり、前記暗号化ブロックの前記１つ前の暗号化ブロックに対応する前記入力ブロックは、前記第１のベクトルであり、
前記ステップ（ｃ３）が前記暗号化ブロックの第２のブロックを処理するとき、前記暗号化ブロックの前記１つ前の暗号化ブロックの前の暗号化ブロックに対応する前記メッセージブロックは、前記第２のベクトルである、請求項７に記載のブロック復号化方法。
【請求項１０】
前記処理部により、前記暗号化ブロックの最後のブロックを排除した前記暗号化ブロックに対してＸＯＲ演算を実施して仮ブロックを得ることと、
前記処理部により、前記仮ブロックに対して関数演算を実施して前記検査ベクトルを得ることと
をさらに含む、請求項７に記載のブロック復号化方法。
【請求項１１】
前記関数演算は、鍵暗号化演算、回転演算およびハッシュ演算のうちの１つである、請求項１０に記載のブロック復号化方法。
【請求項１２】
ロードしたプログラムを実行する処理部と、鍵を記憶する記憶部と、を備えたブロック復号化装置によって実行される、ブロック復号化方法であって、
（ｆ）前記処理部により、第１のベクトルおよび第２のベクトルを得ることと、
（ｇ）前記処理部により、電子暗号化ファイルを複数の暗号化ブロックに分割することであって、前記暗号化ブロックが第１のシーケンスを有し、前記暗号化ブロックの最後のブロックが基準ベクトルであることと、
（ｈ）前記処理部により、前記暗号化ブロックの最後のブロックを排除することと、
（ｉ）前記処理部により、前記ステップ（ｈ）の後に、前記暗号化ブロックを第２のシーケンスに合わせて再構成することであって、前記第２のシーケンスが前記第１のシーケンスの逆であることと、
（ｊ）前記処理部により、前記第１のベクトルを前記暗号化ブロックの最後のブロックとして前記暗号化ブロックに加算することと、
（ｋ）前記処理部により、各々の前記暗号化ブロックに対して前記第２のシーケンスに合わせて：
（ｋ１）前記処理部により、入力ブロックを生成する演算であって、前記入力ブロックの値が、前記暗号化ブロックと、前記暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックと、前記暗号化ブロックの前記１つ前の暗号化ブロックの前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しい演算、
（ｋ２）前記処理部により、前記鍵を用いて前記入力ブロックを暗号化して出力ブロックを得る演算、および
（ｋ３）前記処理部により、前記出力ブロックと、前記暗号化ブロックの前記１つ前の暗号化ブロックとに対してＸＯＲ演算を実施することによってメッセージブロックを生成する演算、
を実施することと、
（ｌ）前記処理部により、前記メッセージブロックの前記最後のブロックを前記第２のベクトルと比較することと、
（ｍ）前記処理部により、前記メッセージブロックの最後のブロックが、前記メッセージブロックの最後のブロックを排除した前記第２のベクトルと同じ場合、他のメッセージブロックを前記第２のシーケンスに合わせて連結して復号化ファイルを生成することと、
を含むブロック復号化方法において、
前記ステップ（ｋ１）が前記暗号化ブロックの第１のブロックを処理するとき、前記暗号化ブロックの前記１つ前の暗号化ブロックに対応する前記出力ブロックは、検査ベクトルであり、前記暗号化ブロックの前記１つ前のブロックの前の前記暗号化ブロックは、オールゼロベクトルであり、前記ステップ（ｋ１）が前記暗号化ブロックの第２のブロックを処理するとき、前記暗号化ブロックの前記１つ前の暗号化ブロックの前の前記暗号化ブロックは、前記基準ベクトルである、
ブロック復号化方法。
【請求項１３】
前記ステップ（ｋ１）は、前記暗号化ブロックと、前記暗号化ブロックの前記１つ前の暗号化ブロックに対応する前記メッセージブロックとに対してＸＯＲ演算を実施することによって前記入力ブロックを生成する、請求項１２に記載のブロック復号化方法。
【請求項１４】
前記処理部により、前記ステップ（ｇ）の後に、前記暗号化ブロックの最後のブロックを排除した前記暗号化ブロックに対してＸＯＲ演算を実施して仮ブロックを得ることと、
前記処理部により、前記仮ブロックに対して関数演算を実施して前記検査ベクトルを得ることと
をさらに含む、請求項１２に記載のブロック復号化方法。
【請求項１５】
前記関数演算は、鍵暗号化演算、回転演算およびハッシュ演算のうちの１つである、請求項１４に記載のブロック復号化方法。
【請求項１６】
前記ステップ（ｋ）の前記ステップ（ｋ１）、前記ステップ（ｋ２）および前記ステップ（ｋ３）は、
（ｎ１）前記処理部により、請求項１に記載の前記ブロック暗号化装置によって実施された前記演算（ｄ）で用いた、前記メッセージブロック、前記第１のベクトル、前記第２のベクトルおよび前記鍵として、前記暗号化ブロック、前記検査ベクトル、前記基準ベクトルおよび前記鍵をそれぞれ用いるステップと、
（ｎ２）前記処理部により、請求項１に記載の前記ブロック暗号化装置を用いて請求項１に記載の前記演算（ｄ）を実施して前記メッセージブロックを得るステップと
を含む、請求項１２に記載のブロック復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック暗号化方法およびブロック復号化方法に関する。さらに詳細には、本発明は、完全性検証を含むブロック暗号化方法およびブロック復号化方法に関する。
【背景技術】
【０００２】
１対１のセキュア通信では、通信中に機密性、完全性、およびソース認証がすべて満たされている場合に限ってメッセージを安全に送信できる。機密性とは、メッセージの内容が送信中に第三者に取得されないという意味である。完全性とは、受信したメッセージ内容が送信者から送信されたメッセージ内容と一致している、すなわちメッセージ内容が改竄されていないことをメッセージ受信者が確認できなければならないことを意味する。ソース認証とは、メッセージが実際に予定通りの送信者によって送信されたことをメッセージ受信者が認証できなければならないという意味である。
【０００３】
ネットワーク通信において、セキュア通信の機構としては通常、対称暗号化／復号化方法が用いられる。送信者および受信者は、鍵に関して事前に合意に達しており、その後で送信者は、鍵および対称暗号化アルゴリズムを用いて送信予定のメッセージを暗号化して暗号化ファイルにする。暗号化ファイルを受信した後、受信者は、同じ鍵と対称暗号化アルゴリズムに対応している対称復号化アルゴリズムとを用いて暗号化ファイルを復号化して、以前に送信者から送信されたメッセージを得る。
【０００４】
送信者が暗号化するメッセージのデータサイズは、対称暗号化アルゴリズムが処理できる１ブロックよりも大きく、ブロック演算モードを一緒に採用しなければならない。ブロック演算モードは、個々のメッセージブロックを安全に接続していくつかのメッセージブロックが暴露されるまたは新たに攻撃されるのを防護するために採用される。暗号ブロック連鎖（ＣＢＣ）モードとはブロック演算モードの１つであり、同モードの暗号化機構および復号化機構をそれぞれ図１Ａおよび図１Ｂに示している。
【０００５】
図１Ａに示したように、ＣＢＣモードの暗号化機構は、送信予定の電子ファイルＭを同一サイズの複数のメッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔに分割し、メッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔの各々に個々に暗号化を実施するようになっている。
具体的には、メッセージブロックの第１のブロック（すなわちメッセージブロックｍ１）に対して、暗号化機構はまず、メッセージブロックｍ１および初期ベクトルＩＶに対して排他的論理和（ＸＯＲ）演算を実施し、次に対称暗号化アルゴリズムおよび鍵Ｋを用いてＸＯＲ演算の結果に対して暗号化演算Ｅを実施して、メッセージブロックｍ１に対応する暗号化ブロックｃ１を生成する。その他の各々のメッセージブロック（すなわちメッセージブロックｍ２，ｍ３，ｍ４，……，ｍｔ）に対して、暗号化機構はまず、そのメッセージブロックと、そのメッセージブロックの１つ前のメッセージブロックに対応する暗号化ブロック（すなわち暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１）とに対してＸＯＲ演算を実施し、次に対称暗号化アルゴリズムおよび同じ鍵Ｋを用いてＸＯＲ演算の結果に対して暗号化演算Ｅを実施して、暗号化ブロック（すなわち暗号化ブロックｃ２，ｃ３，ｃ４，……，ｃｔ）を生成する。
最後に、暗号化機構は、暗号化ブロックｃ１，ｃ２，ｃ３，……，ｃｔを連結して電子暗号化ファイルＣを生成する。
【０００６】
図１Ｂに示したように、ＣＢＣモードの復号化機構は、受信した電子暗号化ファイルＣを同一サイズの複数の暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔに分割し、各々の暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔに対して個々に復号化を実施する。
具体的には、暗号化ブロックの第１のブロック（すなわち暗号化ブロックｃ１）に対して、復号化機構はまず、対称暗号化アルゴリズムに対応する対称復号化アルゴリズムおよび同じ鍵Ｋを用いて復号化演算Ｄを実施し、次に、復号化結果および初期ベクトルＩＶに対してＸＯＲ演算を実施して、暗号化ブロックｃ１に対応するメッセージブロックｍ１を生成する。その他の各々の暗号化ブロック（すなわち暗号化ブロックｃ２，ｃ３，ｃ４，……，ｃｔ）に対して、復号化機構は同じく、まず対称復号化アルゴリズムおよび同じ鍵Ｋを用いて復号化演算Ｄを実施し、次に復号化結果と、その暗号化ブロックの１つ前の暗号化ブロック（すなわち暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１）に対してＸＯＲ演算を実施して、メッセージブロック（すなわちメッセージブロックｍ２，ｍ３，ｍ４，……，ｍｔ）を生成する。
最後に、復号化機構は、メッセージブロックｍ１，ｍ２，ｍ３，……，ｍｔを連結して電子ファイルＭを生成する。
【０００７】
対称暗号化／復号化アルゴリズムは、前述の機密性の要件を満たすことができるが、完全性の要件を満たすことはできない。具体的には、電子暗号化ファイルが攻撃者によって改竄されたとしても、受信者は、そのファイルを受信した後に、改竄された電子暗号化ファイルに対して依然として復号化演算を実施することができる。
例えば、前述の（暗号化ブロックｃ１，ｃ２，ｃ３，……，ｃｔを含む）電子暗号化ファイルＣが攻撃者によって改竄されて（暗号化ブロックｃ１’，ｃ２，ｃ３，……，ｃｔを含む）電子暗号化ファイルＣ’になった場合、受信者は、図１Ｃに示したように、依然として電子暗号化ファイルＣ’を復号化して（メッセージブロックｍ１’，ｍ２’，ｍ３，ｍ４，……，ｍｔを含む）電子ファイルＭ’にすることができる。しかし、ほとんどの場合、受信者は、復号化によって得られたメッセージ（例えば電子ファイルＭ’）が本物であるかどうかを判断できない。特に、送信者から送信されるであろうメッセージがプログラムであるか、あるいはサーバまたは人間が認識できないメッセージである場合、受信者は、改竄された電子暗号化ファイルを復号化して得られたメッセージの異常に気づくことができない。
【０００８】
完全性に対する安全要件を達成できなければ、その結果としてソース認証を満たすことはできない。具体的には、攻撃者は、任意の乱数を電子暗号化ファイルとして選択し、送信者の役割を演じることによってその乱数を受信者に送信する可能性がある。受信者は、鍵および対称復号化アルゴリズムを用いて、受信した電子暗号化ファイル（すなわち攻撃者が選択した乱数）を復号化して平文にするであろう。
受信者は、受信した電子暗号化ファイルおよび復号化して得られた平文の何らかの異常に気づくことができない。なぜなら、受信者は完全性検証を実施できないからである。その主な理由は、鍵を送信者と受信者との両方が所有しており、そのために受信者は、実際には電子暗号化ファイルが攻撃者から送信されていても、復号化して得られた平文を送信者から送信されたものと考えるからである。このことからわかるように、完全性の要件を対称暗号化／復号化アルゴリズムで満たすことができない場合は、ソースを認証することができない。
【０００９】
前述の問題に対する解決策として、複数の方法を採用できる。例えば、セキュアソケットレイヤー（ＳＳＬ）／トランスポート層セキュリティ（ＴＬＳ）機構を採用して送信を実施する解決策を図１Ｄに示している。
送信者および受信者は、２つの鍵ＫおよびＫｍについて事前に合意に達している。送信者が電子ファイルＭＳを受信者に送信したいとき、送信者はまず、鍵Ｋｍを用いて電子ファイルＭＳに対してメッセージ認証コード（ＭＡＣ）演算ＭＡＣを実施してメッセージ認証コードｚ１を生成する。次に、送信者は、電子ファイルＭＳとメッセージ認証コードｚ１とを連結し、対称暗号化アルゴリズムおよび鍵Ｋを用いて連結結果に対して暗号化演算Ｅを実施して電子暗号化ファイルＣＮを生成する。電子暗号化ファイルＣＮを受信した後、受信者はまず、対称復号化アルゴリズムおよび鍵Ｋを用いて復号化演算Ｄを実施し、電子ファイルＭＤおよびメッセージ認証コードｚ２を得る。次に、受信者は、鍵Ｋｍを用いて電子ファイルＭＤに対してメッセージ認証コード演算ＭＡＣを実施してメッセージ認証コードｚ３を生成する。その後、受信者は、復号化して得られたメッセージ認証コードｚ３およびメッセージ認証コードｚ２に対して比較演算ＣＭＰを実施する。
比較演算ＣＭＰの結果が、メッセージ認証コードｚ３がメッセージ認証コードｚ２と同じであるという結果であれば、電子ファイルＭＤは通信中に改竄されず、送信者から送信された電子ファイルＭＳの内容と一致していることを示している。しかし、比較演算ＣＭＰの結果が、メッセージ認証コードｚ３がメッセージ認証コードｚ２と異なるという結果であれば、復号化して得られた電子ファイルＭＤは通信中に改竄されたことを示している。
【００１０】
前述のＳＳＬ／ＴＬＳ機構に採用されている「ＭＡＣ−ｔｈｅｎ−ｅｎｃｒｙｐｔ」方法は、機密性、完全性およびソース認証という３つの基本的な安全要件を同時に満たすことができるものである。なぜなら、２つの鍵ＫおよびＫｍについて事前に合意に達しているからである。
先行技術では、メッセージ認証コードを計算する複数の方法を利用できる。一般的な方法は、ハッシュ関数によって作成した鍵付きハッシュメッセージ認証コード（ＨＭＡＣ）を使用することである。もう１つの方法は、ＣＢＣモードと合わせて暗号ブロック連鎖メッセージ認証コードを使用することである（ＣＢＣ−ＭＡＣ）。ＨＭＡＣの計算効率は、採用したハッシュ関数によって算出される。安全要件を満たすために通常採用されるハッシュアルゴリズムは、ＳＨＡ−１、ＳＨＡ−２などである。しかし、これらの比較的複雑なハッシュアルゴリズムの計算効率は、高度共通暗号化方式（ＡＥＳ）の計算効率に極めて近い。
一方、ＣＢＣ−ＭＡＣに関しては、暗号化ファイルの最終ブロックのみが出力として使用されるが、全体の入力データは、計算プロセスの過程で１回暗号化される。換言すれば、ＣＢＣ−ＭＡＣの計算効率は、採用されるブロック暗号化アルゴリズムの計算効率に等しい。
【００１１】
したがって、ＭＡＣ−ｔｈｅｎ−ｅｎｃｒｙｐｔ方法を採用する場合、かかる計算時間は、メッセージ認証コードを採用していない場合にかかる時間の２倍である。
メッセージ認証コードを計算するには余分な時間がかかる。暗号化するメッセージのデータサイズが非常に大きい場合、かかる２倍の時間は、一般的な用途に対しては依然として無視できない重荷である。したがって、時間的なコストを削減できるとともに、機密性、完全性およびソース認証という基本的な安全要件を満たすことのできる解決策を提供するという喫緊の必要性が存在する。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
前述の問題を解決するために、本発明は、いくつかの実施形態において、完全性検証を含むブロック暗号化方法およびブロック復号化方法を提供する。
【課題を解決するための手段】
【００１３】
本発明の特定の実施形態のブロック暗号化方法は、コンピュータによって実装される。本ブロック暗号化方法は、以下のステップを含む。（ａ）第１のベクトルおよび第２のベクトルを得るステップ、（ｂ）電子ファイルを複数の暗号化ブロックに分割するステップであって、暗号化ブロックがシーケンスを有するステップ、および（ｃ）検査ベクトルをメッセージブロックの最後のブロックとしてメッセージブロックに加算するステップ。
本ブロック暗号化方法はさらに、各々のメッセージブロックに対してシーケンスに合わせて以下の演算を実施するステップ（ｄ）を含む。（ｄ１）入力ブロックを生成するステップであって、入力ブロックの値が、そのメッセージブロックと、そのメッセージブロックの１つ前のメッセージブロックに対応する出力ブロックと、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックとに対して排他的論理和（ＸＯＲ）演算を実施して得られた値に等しいステップ、（ｄ２）鍵を用いて入力ブロックを暗号化して出力ブロックを得るステップ、および（ｄ３）出力ブロックと、そのメッセージブロックの１つ前のメッセージブロックとに対してＸＯＲ演算を実施して暗号化ブロックを得るステップ。
ステップ（ｄ）がメッセージブロックの第１のブロックを処理するとき、メッセージブロックの１つ前のメッセージブロックに対応する出力ブロックは第１のベクトルで、メッセージブロックの１つ前のメッセージブロックの前のメッセージブロックはオールゼロベクトルであり、ステップ（ｄ）がメッセージブロックの第２のブロックを処理するとき、メッセージブロックの１つ前のメッセージブロックの前のメッセージブロックは第２のベクトルである。
本ブロック暗号化方法はさらに、暗号化ブロックをシーケンスに合わせて連結して電子暗号化ファイルを生成するステップ（ｅ）を含む。
【００１４】
本発明の特定の実施形態のブロック復号化方法は、コンピュータによって実装される。本ブロック復号化方法は、以下のステップを含む。（ａ）第１のベクトルおよび第２のベクトルを得るステップ、および（ｂ）電子暗号化ファイルを複数の暗号化ブロックに分割するステップであって、暗号化ブロックがシーケンスを有するステップ。
本ブロック復号化方法はさらに、各々の暗号化ブロックに対してシーケンスに合わせて以下の演算を実施するステップ（ｃ）を含む。（ｃ１）入力ブロックを生成するステップであって、入力ブロックの値が、暗号化ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しいステップ、（ｃ２）鍵を用いて入力ブロックを復号化して出力ブロックを得るステップ、および（ｃ３）メッセージブロックを生成するステップであって、メッセージブロックの値が、出力ブロックと、暗号化ブロックの１つ前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しいステップ。
ステップ（ｃ）が暗号化ブロックの第１のブロックを処理するとき、暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックは第２のベクトルであり、暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックはオールゼロベクトルであり、ステップ（ｃ）が暗号化ブロックの第２のブロックを処理するとき、暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックは第１のベクトルである。
本ブロック復号化方法はさらに、以下のステップを含む。（ｄ）メッセージブロックの最後のブロックを検査ベクトルと比較するステップ、および（ｅ）メッセージブロックの最後のブロックが検査ベクトルと同じとき、メッセージブロックの最後のブロックを排除したメッセージブロックをシーケンスに合わせて連結して復号化ファイルを生成するステップ。
【００１５】
本発明の特定の実施形態のもう１つのブロック復号化方法は、コンピュータによって実装される。本ブロック復号化方法は、以下のステップを含む。（ａ）第１のベクトルおよび第２のベクトルを得るステップ、（ｂ）電子暗号化ファイルを複数の暗号化ブロックに分割するステップであって、暗号化ブロックがシーケンスを有し、暗号化ブロックの最後のブロックが基準ベクトルであるステップ、（ｃ）暗号化ブロックの最後のブロックを排除するステップ、（ｄ）ステップ（ｃ）の後に暗号化ブロックを第２のシーケンスに合わせて再構成するステップであって、第２のシーケンスが第１のシーケンスの逆であるステップ、および（ｅ）第１のベクトルを暗号化ブロックの最後のブロックとして暗号化ブロックに加算するステップ。
本ブロック復号化方法はさらに、各々の暗号化ブロックに対して第２のシーケンスに合わせて以下の演算を実施するステップ（ｆ）を含む。（ｆ１）入力ブロックを生成するステップであって、入力ブロックの値が、暗号化ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しいステップ、（ｆ２）鍵を用いて入力ブロックを暗号化して出力ブロックを得るステップ、および（ｆ３）出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックとに対してＸＯＲ演算を実施することによってメッセージブロックを生成するステップ。
ステップ（ｆ１）が暗号化ブロックの第１のブロックを処理するとき、暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックは検査ベクトルで、暗号化ブロックの１つ前のブロックの前の暗号化ブロックはオールゼロベクトルであり、ステップ（ｆ１）が暗号化ブロックの第２のブロックを処理するとき、暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックは基準ベクトルである。
本ブロック復号化方法はさらに、以下のステップを含む。（ｇ）メッセージブロックの最後のブロックを第２のベクトルと比較するステップ、および（ｈ）メッセージブロックの最後のブロックが、メッセージブロックの最後のブロックを排除した第２のベクトルと同じ場合に、他のメッセージブロックを第２のシーケンスに合わせて連結して復号化ファイルを生成するステップ。
【００１６】
本発明の特定の実施形態のブロック暗号化方法は、電子ファイルに含まれる複数のメッセージブロックを、電子暗号化ファイルに含まれる複数の暗号化ブロックに複数レベルで結びつける。このように、電子暗号化ファイルの暗号化ブロックのうちのいずれか１つが改竄された（または誤って送信された）場合、復号化装置および復号化方法によって電子暗号化ファイルを復号化して得られたメッセージブロックの最後のブロックの内容は、偽である。
メッセージブロックの最後のブロックが何であるはずかがわかるため、本復号化方法は、電子暗号化ファイルの完全性が損なわれたことに気づくことができ、それによって電子暗号化ファイルを破棄できる。したがって、本発明によって開示した技術は、メッセージ認証コード演算を実施することなく暗号化および復号化を効果的に達成できる一方で、引き続き機密性、完全性およびソース認証という３つの基本的な安全要件を満たすものである。
【００１７】
主たる発明に実装されている詳細な技術および好適な実施形態については、当業者が特許請求対象である発明の特徴をよく理解するように、図面を添付して以下の段落に記載している。
【図面の簡単な説明】
【００１８】
【図１Ａ】ＣＢＣモードでの暗号化機構を示す概略図である。
【図１Ｂ】ＣＢＣモードでの復号化機構を示す概略図である。
【図１Ｃ】ＣＢＣモードで改竄された電子暗号化ファイルの復号化結果を示す図である。
【図１Ｄ】「ＭＡＣ−ｔｈｅｎ−ｅｎｃｒｙｐｔ」機構を示す概略図である。
【図２Ａ】本発明の第１および第２の実施形態によるアーキテクチャを示す概略図である。
【図２Ｂ】本発明の第１の実施形態による暗号化演算を示す概略図である。
【図２Ｃ】メッセージブロックｍｃｖがどのように生成されるのかを示す概略図である。
【図３Ａ】本発明の第２の実施形態による暗号化演算を示す概略図である。
【図３Ｂ】メッセージブロックｍｃｖがどのように生成されるのかを示す概略図である。
【図３Ｃ】本発明の第３の実施形態による暗号化演算を示す概略図である。
【図４Ａ】本発明の第４から第６の実施形態によるアーキテクチャを示す概略図である。
【図４Ｂ】本発明の第４の実施形態による復号化演算を示す概略図である。
【図４Ｃ】メッセージブロックｍｃｖがどのように生成されるのかを示す概略図である。
【図５Ａ】本発明の第５の実施形態による復号化演算を示す概略図である。
【図５Ｂ】メッセージブロックｍｃｖがどのように生成されるのかを示す概略図である。
【図６Ａ】本発明の第６の実施形態による復号化演算を示す概略図である。
【図６Ｂ】メッセージブロックｍｃｖがどのように生成されるのかを示す概略図である。
【図６Ｃ】本発明の第７の実施形態による復号化演算を示す概略図である。
【図７】本発明の第８の実施形態のフローチャートである。
【図８Ａ】本発明の第９の実施形態のフローチャートである。
【図８Ｂ】本発明の第１０の実施形態のフローチャートである。
【図９】本発明の第１１の実施形態のフローチャートである。
【図１０】本発明の第１２の実施形態のフローチャートである。
【図１１】本発明の第１３の実施形態のフローチャートである。
【図１２】本発明の第１４の実施形態のフローチャートである。
【発明を実施するための形態】
【００１９】
以下の記載では、本発明によって提供される完全性検証を含むブロック暗号化装置、ブロック暗号化方法、ブロック復号化装置、およびブロック復号化方法について、本発明の例示的な実施形態を参照して説明していく。
しかし、これらの例示的な実施形態は、これらの実施形態に記載した任意の特別な例、実施形態、環境、用途または特定の実装に本発明を限定しようとするものではない。したがって、これらの例示的な実施形態についての記載は、本発明を限定するのではなく説明することのみを目的としている。
以下の実施形態および添付の図面においては、本発明と無関係の要素を描写から省略している。
【００２０】
まず図１Ｃを参照されたい。先行技術では、電子暗号化ファイルＣの暗号化ブロックｃ１が改竄されて（あるいは誤って送信されて）暗号化ブロックｃ１’になった場合、受信者が電子暗号化ファイルＣ’を復号化して得られる電子ファイルＭ’に含まれているメッセージブロックｍ１’およびｍ２’は、偽である。一般的なブロック暗号化の用途では、復号化して得られたメッセージブロックが偽であるということは、完全性は損なわれ、理論的には復号化して得られたメッセージは許容できないものであることを示している。通常の技術では、エラーの拡散が小さいほど、ブロック暗号化に基づく暗号化方法でストリーム暗号化を行うのがさらに有利になる。
【００２１】
本発明では、新規なブロック演算モードを採用して、エラー拡散による影響を最大にするとともに、元のブロック演算モードの特徴を依然として維持する。この新規なブロック演算モード下では、電子暗号化ファイルが改竄されて（あるいは誤って送信されて）いれば、復号化して得られたメッセージブロックのうち最後のブロックは偽になる。
このように、受信者が、メッセージブロックの最後のブロックが何になるはずかを事前に知っていれば、受信者は、電子暗号化ファイルの完全性が損なわれたことに気づくことができ、それによって電子暗号化ファイルを破棄できる。
【００２２】
本発明の第１の実施形態は、ブロック暗号化装置２であり、この装置のアーキテクチャを示した概略図を図２Ａに示し、この装置の暗号化演算を示した概略図を図２Ｂに示している。ブロック暗号化装置２は、記憶部２１および処理部２３を備え、両者は互いに電気的に接続している。
記憶部２１は、メモリ、フロッピー（登録商標）ディスク、ハードディスク、コンパクトディスク（ＣＤ）、モバイルディスク、磁気テープ、データベース、または同一機能を有し当業者に公知のその他の任意の記録媒体もしくは回路であってよい。処理部２３は、様々なプロセッサ、中央処理装置（ＣＰＵ）、マイクロプロセッサまたは当業者に公知のその他の計算装置のいずれであってもよい。
【００２３】
記憶部２１は、鍵Ｋおよびメッセージブロックｍｃｖとともに記憶される。メッセージブロックｍｃｖは、検査ベクトルとして使用される。処理部２３は、第１のベクトルＩＶ１および第２のベクトルＩＶ２を得る。処理部２３は、暗号化する電子ファイルＭをまず複数のメッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１に分割する。メッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１は、シーケンスを有する（すなわちメッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１の順序になっている）。電子ファイルＭは、記憶部２１に記憶されてもよい。
このほか、ブロック暗号化装置２にさらに入力インターフェースが備わっている場合は、電子ファイルＭは、入力インターフェースによって外部から受信されてよい。
このほか、処理部２３は、これらのメッセージブロックの中にメッセージブロックｍｃｖをメッセージブロックの最後のブロックとして加算する。換言すれば、処理部２３は、メッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１，ｍｃｖを順に処理していく。
【００２４】
次に、処理部２３は、各々のメッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１，ｍｃｖに対してシーケンスに合わせて以下の演算を実施する。入力ブロックを生成する演算、鍵を用いて入力ブロックを暗号化して出力ブロックを得る演算、および出力ブロックと、メッセージブロックの１つ前のメッセージブロックとに対して排他的論理和（ＸＯＲ）演算を実施して暗号化ブロックを得る演算。
各々のメッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１，ｍｃｖを処理する場合、入力ブロックの値は、メッセージブロックと、そのメッセージブロックの前段メッセージブロックに対応する出力ブロックと、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックとに対してＸＯＲ演算を実施して得られる値に等しく、以下の式（１）で表されるとおりである。
【００２５】
0005855696.tif 000002
【００２６】
上式（１）において、変数ｉは処理されているメッセージブロックのシリアル番号を表し、Ｉ［ｉ］はｉ番目の入力ブロックを表し、Ｏ［ｉ−１］はｉ−１番目の出力ブロックを表し、ｍ［ｉ］はｉ番目のメッセージブロックを表し、ｍ［ｉ−２］はｉ−２番目のメッセージブロックを表し、記号
0005855696.tif 000003
はＸＯＲ演算を表している。
メッセージブロックの第１のブロック（すなわちメッセージブロックｍ１）が処理部２３で処理されるとき、メッセージブロックｍ１の１つ前のメッセージブロックに対応する出力ブロックは、第１のベクトルＩＶ１（すなわちＯ［０］の値は第１のベクトルＩＶ１の値に等しい）であり、メッセージブロックｍ１の１つ前のメッセージブロックの前のメッセージブロックは、オールゼロベクトル（すなわちｍ［−１］＝０）である。
メッセージブロックの第２のブロック（すなわちメッセージブロックｍ２）が処理部２３で処理されるとき、メッセージブロックｍ２の１つ前のメッセージブロックの前のメッセージブロックは、第２のベクトルＩＶ２である（すなわちｍ［０］の値は第２のベクトルＩＶ２の値に等しい）。
【００２７】
この実施形態では、処理部２３は、メッセージブロックと、そのメッセージブロックの１つ前のメッセージブロックに対応する暗号化ブロックとに対してＸＯＲ演算を実施して入力ブロックを生成する。これは、以下の式（２）で表され、式中ｃ［ｉ−１］はｉ−１番目の暗号化ブロックを表す。
【００２８】
0005855696.tif 000004
【００２９】
次に、各々の入力ブロック、出力ブロックおよび暗号化ブロックがどのように生成されるのかについてさらに詳述していく。具体的には、メッセージブロックの第１のブロック（すなわちメッセージブロックｍ１）の場合、処理部２３はまず、メッセージブロックｍ１と１つ前のメッセージブロックに対応する暗号化ブロックとに対してＸＯＲ演算を実施して入力ブロックＩ１を得る。
処理部２３は、第１のベクトルＩＶ１の値をメッセージブロックｍ１の１つ前のメッセージブロックに対応する暗号化ブロックの値とみなす。次に、処理部２３は、鍵Ｋおよび対称暗号化アルゴリズムを用いて入力ブロックＩ１に対して暗号化演算Ｅを実施して出力ブロックＯ１を得る。その後、処理部２３は、出力ブロックＯ１とメッセージブロックｍ１の１つ前のメッセージブロックとに対してＸＯＲ演算を実施して暗号化ブロックｃ１を得る。
処理部２３は、第２のベクトルＩＶ２の値をメッセージブロックｍ１の１つ前のメッセージブロックの値とみなす。換言すれば、処理部２３は、出力ブロックＯ１および第２のベクトルＩＶ２に対してＸＯＲ演算を実施して暗号化ブロックｃ１を得る。
【００３０】
その後、残りのメッセージブロック（すなわちメッセージブロックｍ２，ｍ３，ｍ４，……，ｍｃｖ）に関して、処理部２３はまず、各々のメッセージブロックｍ２，ｍ３，ｍ４，……，ｍｃｖと、そのメッセージブロックの１つ前のメッセージブロックに対応する暗号化ブロック（すなわち暗号化ブロックｃ１，ｃ２，ｃ３，……，ｃｔ−１）とに対してそれぞれＸＯＲ演算を実施して入力ブロックＩ２，Ｉ３，Ｉ４，……，Ｉｔを得、鍵Ｋおよび同じ対称暗号化アルゴリズムを用いて各々の入力ブロックＩ２，Ｉ３，Ｉ４，……，Ｉｔに対して暗号化演算Ｅを実施して出力ブロックＯ２、Ｏ３、Ｏ４，……Ｏｔをそれぞれ得、次に、各々の出力ブロックＯ２，Ｏ３，Ｏ４，……Ｏｔおよびそのメッセージブロックの１つ前のメッセージブロック（すなわちメッセージブロックｍ１，ｍ２，ｍ３，……，ｍｔ−１）に対してＸＯＲ演算を実施して暗号化ブロックｃ２，ｃ３，ｃ４，……，ｃｔをそれぞれ得る。
【００３１】
その後、処理部２３は、シーケンスに合わせて暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔを連結して電子暗号化ファイルＣを生成する。ブロック暗号化装置２は、何らかの他の送信インターフェースを介して受信者に電子暗号化ファイルＣを送信することができる。このほか、ブロック暗号化装置２にさらに送信インターフェースが備わっていれば、電子暗号化ファイルＣはこの送信インターフェースを介して受信者に送信されてもよい。
【００３２】
他の実装では、ブロック暗号化装置２の記憶部２１をメッセージブロックｍｃｖと一緒に記憶できない。このような実装では、処理部２３は、暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１を得た後、かつメッセージブロックの最後のブロック（すなわちメッセージブロックｍｃｖ）を処理する前に、暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対して演算Ｆを実施し、図２Ｃに示したように、その演算結果をメッセージブロックｍｃｖとみなす。
例えば、処理部２３は、暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対してＸＯＲ演算を実施して仮ブロックを得た後、その仮ブロックに対して関数演算を実施してメッセージブロックｍｃｖを得ることができる。前述の関数演算は、鍵暗号化演算、回転演算、ハッシュ演算または復号化の点で事前に合意に達しているその他の任意の関数演算であってよい。
処理部２３は、このような実装では暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１を用いてメッセージブロックｍｃｖを生成するため、最後の暗号化ブロックｃｔを改竄している攻撃者が引き起こす攻撃を回避できる。
【００３３】
上記の説明からわかるように、暗号化ブロックｃ１，ｃ２，ｃ３，……，ｃｔ−１をメッセージブロックｍ２，ｍ３，ｍ４，……，ｍｃｖとそれぞれ結びつけた上で、ブロック暗号化装置２はさらに、メッセージブロックｍ１，ｍ２，ｍ３，……，ｍｔ−１を暗号化ブロックｃ２，ｃ３，ｃ４，……，ｃｔとそれぞれ結びつける。
したがって、電子暗号化ファイルＣの暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔのうちの任意の１つが改竄されれば（または誤って送信されれば）、ブロック暗号化装置２と一緒に用いた復号化装置（これについてはこれ以降に詳述する）によって電子暗号化ファイルＣを復号化して得られたメッセージブロックの最後のブロックは、偽である。
メッセージブロックの最後のブロックが何であるはずかもわかっているため、復号化装置は、電子暗号化ファイルＣの完全性がそれに伴って損なわれたことに気づくことができ、それに伴い電子暗号化ファイルを破棄できる。また、ブロック暗号化装置２がさらに、暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１を用いてメッセージブロックｍｃｖを検査ベクトルとして生成すれば、暗号化ブロックの最後のブロックを改竄している攻撃者が引き起こす攻撃を回避できる。
【００３４】
このことからわかるように、この実施形態の技術を用いると、ブロック暗号化装置２は、メッセージ認証コード演算が実施されない場合に、機密性、完全性およびソース認証という３つの基本的な安全要件を満たすことができる。したがって、ブロック暗号化装置２は、この実施形態の技術を採用することによって、機密性、完全性およびソース認証という３つの基本的な安全要件を効果的に満たすことができる。
【００３５】
本発明の第２の実施形態を図２Ａおよび図３Ａに示している。図３Ａは、暗号化演算を示した概略図である。第２の実施形態のほとんどの演算は、第１の実施形態の演算と同様であり、第２の実施形態と第１の実施形態との唯一の相違点について以下に詳述していく。
【００３６】
同じように、処理部２３は、暗号化する電子ファイルＭを複数のメッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１に分割する。メッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１は、シーケンスを有する（すなわちメッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１の順序になっている）。このほか、処理部２３は、メッセージブロックｍｃｖもメッセージブロックに加算する。換言すれば、処理部２３は、メッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１，ｍｃｖを順に処理していく。
【００３７】
次に、処理部２３は、各々のメッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１，ｍｃｖに対してシーケンスに合わせて以下の演算を実施する。
入力ブロックを生成する演算、鍵を用いて入力ブロックを暗号化して出力ブロックを得る演算、および出力ブロックとメッセージブロックの１つ前のメッセージブロックとに対してＸＯＲ演算を実施して暗号化ブロックを得る演算。各々のメッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１，ｍｃｖを処理するとき、入力ブロックの値は、メッセージブロックと、そのメッセージブロックの前段メッセージブロックに対応する出力ブロックと、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックとに対してＸＯＲ演算を実施して得られる値に等しく、この演算は前述の式（１）で表される。
【００３８】
この実施形態では、処理部２３は、各々のメッセージブロックに対して以下の演算を実施して入力ブロックを生成する。
メッセージブロックと、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックとに対してＸＯＲ演算を実施して仮ブロックを得る演算、および仮ブロックと、そのメッセージブロックの１つ前のメッセージブロックに対応する出力ブロックとに対してＸＯＲ演算を実施して入力ブロックを得る演算。メッセージブロックの第１のブロック（すなわちメッセージブロックｍ１）が処理部２３で処理されるとき、メッセージブロックｍ１の１つ前のメッセージブロックの前のメッセージブロックは、オールゼロベクトル（すなわちｍ［−１］＝０）であり、メッセージブロックｍ１の１つ前のメッセージブロックに対応する出力ブロックは、第１のベクトルＩＶ１である（すなわちＯ［０］の値は第１のベクトルＩＶ１の値に等しい）。
メッセージブロックの第２のブロック（すなわちメッセージブロックｍ２）が処理部２３で処理されるとき、メッセージブロックの１つ前のメッセージブロックの前のメッセージブロックｍ２は、第２のベクトルＩＶ２である（すなわちｍ［０］の値は第２のベクトルＩＶ２の値に等しい）。
【００３９】
次に、各々の入力ブロック、出力ブロックおよび暗号化ブロックがどのように生成されるのかについてさらに詳述していく。まず、処理部２３がメッセージブロックの第１のブロック（すなわちメッセージブロックｍ１）をどのように処理するのかについて説明していく。処理部２３はまず、メッセージブロックｍ１と、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックとに対してＸＯＲ演算を実施して仮ブロックｔ１を得る。
処理部２３は、オールゼロベクトルをそのメッセージブロックｍ１の１つ前のメッセージブロックの前のメッセージブロックの値とみなす。次に、処理部２３は、仮ブロックｔ１と、およびそのメッセージブロックｍ１の１つ前のメッセージブロックに対応する出力ブロックとに対してＸＯＲ演算を実施して入力ブロックＩ１を得る。処理部２３は、第１のベクトルＩＶ１の値をそのメッセージブロックｍ１の１つ前のメッセージブロックに対応する出力ブロックの値とみなす。その後、処理部２３は、鍵Ｋおよび対称暗号化アルゴリズムを用いて入力ブロックＩ１を暗号化して出力ブロックＯ１を得る。次に、処理部２３は、出力ブロックＯ１と、メッセージブロックｍ１の１つ前のメッセージブロックとに対してＸＯＲ演算を実施して暗号化ブロックｃ１を得る。
処理部２３は、第２のベクトルＩＶ２をメッセージブロックｍ１の１つ前のメッセージブロックとみなす。換言すれば、処理部２３は、出力ブロックＯ１と第２のベクトルＩＶ２とに対してＸＯＲ演算を実施して暗号化ブロックｃ１を得る。
【００４０】
残りのメッセージブロック（すなわちメッセージブロックｍ２，ｍ３，ｍ４，……，ｍｃｖ）に関して、処理部２３は、同じくまず、各々のメッセージブロックｍ２，ｍ３，ｍ４，……，ｍｃｖと、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックとにそれぞれＸＯＲ演算を実施して仮ブロックｔ２，ｔ３，ｔ４，……，ｔｔを得る。
全メッセージブロックの第２のブロック（すなわちメッセージブロックｍ２）が処理部２３で処理されるとき、第２のベクトルＩＶ２の値は、そのメッセージブロックｍ２の１つ前のメッセージブロックの前のメッセージブロックの値とみなされる。次に、処理部２３は、各々の仮ブロックｔ２，ｔ３，ｔ４，……，ｔｔと、そのメッセージブロックの１つ前のメッセージブロックに対応する出力ブロックとにＸＯＲ演算をそれぞれ実施して入力ブロックＩ２，Ｉ３，Ｉ４，……，Ｉｔを得る。
【００４１】
次に、処理部２３は、鍵Ｋおよび対称暗号化アルゴリズムをそれぞれ用いて各々の入力ブロックＩ２，Ｉ３，Ｉ４，……，Ｉｔを暗号化して出力ブロックＯ２，Ｏ３，Ｏ４，……，Ｏｔを得る。その後、処理部２３は、各々の出力ブロックＯ２，Ｏ３，Ｏ４，……，Ｏｔと、そのメッセージブロックの１つ前のメッセージブロックｍ１，ｍ２，ｍ３，……，ｍｔ−１とにそれぞれＸＯＲ演算を実施して暗号化ブロックｃ２，ｃ３，ｃ４，……，ｃｔを得る。
【００４２】
その後、処理部２３は、シーケンスに合わせて暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔを連結して電子暗号化ファイルＣを生成する。ブロック暗号化装置２は、何らかの他の送信インターフェースを介して受信者に電子暗号化ファイルＣを送信することができる。このほか、ブロック暗号化装置２にさらに送信インターフェースが備わっていれば、電子暗号化ファイルＣはこの送信インターフェースを介して受信者に送信されてもよい。
【００４３】
また、他の実装では、ブロック暗号化装置２の記憶部２１をメッセージブロックｍｃｖと一緒に記憶できない。このような実装では、処理部２３は、暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１を得た後、かつメッセージブロックの最後のブロック（すなわちメッセージブロックｍｃｖ）を処理する前に、暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対して演算Ｆを実施し、図３Ｂに示したように、その演算結果をメッセージブロックｍｃｖとみなす。
例えば、処理部２３は、暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対してＸＯＲ演算を実施して仮ブロックを得た後、その仮ブロックに対して関数演算を実施してメッセージブロックｍｃｖを得ることができる。前述の関数演算は、鍵暗号化演算、回転演算、ハッシュ演算または復号化の点で事前に合意に達しているその他の任意の関数演算であってよい。
【００４４】
この実施形態は、入力ブロックＩ１，Ｉ２，Ｉ３，Ｉ４，……，Ｉｔがどのように生成されるかという点のみ第１の実施形態と異なっている。したがって、この実施形態は依然として、メッセージブロックｍ１，ｍ２，ｍ３，……，ｍｔ−１を暗号化ブロックｃ２，ｃ３，ｃ４，……，ｃｔにそれぞれ結びつけるとともに、暗号化ブロックｃ１，ｃ２，ｃ３，……，ｃｔ−１をメッセージブロックｍ２，ｍ３，ｍ４，……，ｍｃｖにそれぞれ結びつける。そのため、この実施形態で開示した暗号化技術は、電子暗号化ファイルＣを効果的に生成できる一方で、引き続き機密性、完全性およびソース認証という３つの基本的な安全要件を同時に満たすものである。
【００４５】
本発明の第３の実施形態は、図２Ａおよび図３Ｃに示したようなブロック暗号化装置２である。図３Ｃは、暗号化演算を示した概略図である。第３の実施形態の演算原理は第２の実施形態の演算原理と同様だが、第２の実施形態のいくつかの演算は、この実施形態の普通の暗号ブロック連鎖（ＣＢＣ）装置３０によって実行される。第３の実施形態と第２の実施形態との唯一の相違点について以下に詳述していく。
【００４６】
この実施形態では、処理部２３は、各々のメッセージブロックｍ１，ｍ２，ｍ３，……，ｍｔ−１，ｍｃｖと、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックとにそれぞれＸＯＲ演算を実施して複数の仮ブロックｔ１，ｔ２，ｔ３，ｔ４，……，ｔｔを得る。
メッセージブロックの第１のブロック（すなわちメッセージブロックｍ１）が処理部２３で処理されるとき、メッセージブロックｍ１の１つ前のメッセージブロックの前のメッセージブロックは、オールゼロベクトル（すなわちｍ［−１］＝０）である。メッセージブロックの第２のブロック（すなわちメッセージブロックｍ２）が処理部２３で処理されるとき、メッセージブロックｍ２の１つ前のメッセージブロックの前のメッセージブロックは、第２のベクトルＩＶ２である。
【００４７】
次に、処理部２３は、鍵Ｋ、第１のベクトルＩＶ１およびＣＢＣ装置３０を用いて仮ブロックｔ１，ｔ２，ｔ３，ｔ４，……，ｔｔを暗号化して複数の出力ブロックＯ１，Ｏ２，Ｏ３，Ｏ４，……，Ｏｔにする。ＣＢＣ装置３０は、図１Ａに示したように動作する。最後に、処理部２３は、各々の出力ブロックＯ１，Ｏ２，Ｏ３，Ｏ４，……，Ｏｔと、そのメッセージブロックの１つ前のメッセージブロックとにそれぞれＸＯＲ演算を実施して暗号化ブロックｃ１，ｃ２，ｃ３，……，ｃｔ−１，ｃｔを得る。
出力ブロックＯ１が処理されるとき、処理部２３は、第２のベクトルＩＶ２を出力ブロックＯ１の１つ前のメッセージブロックとみなす。換言すれば、処理部２３は、出力ブロックＯ１と、第２のベクトルＩＶ２とに対してＸＯＲ演算を実施して暗号化ブロックｃ１を得て、各々の出力ブロックＯ２，Ｏ３，Ｏ４，……，Ｏｔと、メッセージブロックｍ１，ｍ２，ｍ３，……，ｍｔ−１とに対してそれぞれＸＯＲ演算を実施して暗号化ブロックｃ２，ｃ３，……，ｃｔ−１，ｃｔを得る。
【００４８】
上記の説明からわかるように、この実施形態のメッセージブロックｍ１，ｍ２，ｍ３，……，ｍｔ−１，ｍｃｖに対して単純なＸＯＲ演算を実施した後に、普通のＣＢＣ装置３０を用いて暗号化を実施でき、ＣＢＣ装置３０が生成した出力ブロックＯ１，Ｏ２，Ｏ３，Ｏ４，……，Ｏｔに対して単純なＸＯＲ演算を実施した後に、暗号化ブロックｃ１，ｃ２，ｃ３，……，ｃｔ−１，ｃｔを生成できる。換言すれば、ブロック暗号化装置２をＣＢＣ装置３０と一緒に用いる場合は、本発明の技術を実装できる。
【００４９】
本発明の第４の実施形態はブロック復号化装置４であり、この装置のアーキテクチャを示した概略図を図４Ａに示し、この装置の復号化演算を示した概略図を図４Ｂに示している。ブロック復号化装置４は、第１の実施形態から第３の実施形態のブロック暗号化装置２と一緒に用いられてよい。換言すれば、ブロック復号化装置４は、ブロック暗号化装置２が暗号化した電子暗号化ファイルＣを復号化できる。
【００５０】
ブロック復号化装置４は、記憶部４１および処理部４３を備え、両者は互いに電気的に接続している。記憶部４１は、鍵Ｋおよびメッセージブロックｍｃｖとともに記憶され、メッセージブロックのコンテンツは、ブロック暗号化装置２内のコンテンツと同じである。メッセージブロックｍｃｖは、検査ベクトルとして用いられる。
記憶部４１は、メモリ、フロッピーディスク、ハードディスク、コンパクトディスク（ＣＤ）、モバイルディスク、磁気テープ、データベース、同一機能を有し当業者に公知のその他の任意の記録媒体もしくは回路であってよい。処理部４３は、様々なプロセッサ、中央処理装置（ＣＰＵ）、マイクロプロセッサまたは当業者に公知のその他の計算装置のいずれであってもよい。
【００５１】
処理部４３は、第１のベクトルＩＶ１および第２のベクトルＩＶ２を得る。処理部４３で得られた第１のベクトルＩＶ１および第２のベクトルＩＶ２は、電子暗号化ファイルＣを暗号化するために暗号化装置２によって用いられた第１のベクトルＩＶ１および第２のベクトルＩＶ２と同じである。
処理部４３はまず、復号化する電子暗号化ファイルＣを複数の暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔに分割する。暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔはシーケンスを有する（すなわち暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔの順序になっている）。電子暗号化ファイルＣは、記憶部４１に記憶されてよい。このほか、ブロック復号化装置４にさらに入力インターフェースが備わっている場合には、電子暗号化ファイルＣは、入力インターフェースを介して送信者から受信されてよい。
【００５２】
次に、処理部４３は、各々の暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔに対してシーケンスに合わせて以下の演算を実施する。
入力ブロックを生成する演算、鍵Ｋを用いて入力ブロックを復号化して出力ブロックを得る演算、およびメッセージブロックを生成する演算。各々の暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔが処理部４３で処理されるとき、各入力ブロックの値は、処理されている暗号化ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値と等しく、メッセージブロックの値は、処理されている暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しい。具体的には、各々の前述の入力ブロックを、以下の式（３）に従って表すことができる。
【００５３】
0005855696.tif 000005
【００５４】
上式（３）において、変数ｉは処理されている暗号化ブロックのシリアル番号を表し、ｉ［ｉ］はｉ番目の入力ブロックを表し、ｏ［ｉ−１］はｉ−１番目の出力ブロックを表し、ｃ［ｉ］はｉ番目の暗号化ブロックを表し、ｃ［ｉ−２］ｉ−２番目の暗号化ブロックを表し、記号
0005855696.tif 000006
はＸＯＲ演算を表している。
暗号化ブロックの第１のブロック（すなわち暗号化ブロックｃ１）が処理部４３で処理されるとき、その暗号化ブロックｃ１の１つ前の暗号化ブロックに対応する出力ブロックは、第２のベクトルＩＶ２であり（すなわちｏ［０］の値は第２のベクトルＩＶ２の値に等しい）、その暗号化ブロックｃ１の１つ前の暗号化ブロックの前の暗号化ブロックはオールゼロベクトル（すなわちｃ［−１］＝０）である。
暗号化ブロックの第２のブロック（すなわち暗号化ブロックｃ２）が処理部４３で処理されるとき、その暗号化ブロックｃ２の１つ前の暗号化ブロックの前の暗号化ブロックは、第１のベクトルＩＶ１である（すなわちｃ［０］の値は第１のベクトルＩＶ１の値に等しい）。
【００５５】
この実施形態では、処理部４３は、暗号化ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応するメッセージブロックとに対してＸＯＲ演算を実施して入力ブロックを生成する。これは、以下の式（４）で表され、式中ｍ［ｉ−１］はｉ−１番目のメッセージブロックを表す。
【００５６】
0005855696.tif 000007
【００５７】
また、この実施形態では、処理部４３は、出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックとに対してＸＯＲ演算を実施してメッセージブロックを生成し、以下の式（５）で表されるとおりである。
【００５８】
0005855696.tif 000008
【００５９】
次に、各々の入力ブロック、出力ブロックおよびメッセージブロックがどのように生成されるのかについてさらに詳述していく。まず、処理部４３が暗号化ブロックの第１のブロック（すなわち暗号化ブロックｃ１）をどのように処理するのかについて説明していく。
処理部４３はまず、暗号化ブロックｃ１と、その暗号化ブロックｃ１の１つ前の暗号化ブロックに対応するメッセージブロックとに対してＸＯＲ演算を実施して入力ブロックｉ１を得る。処理部４３は、第２のベクトルＩＶ２を暗号化ブロックｃ１の１つ前の暗号化ブロックに対応するメッセージブロックの値とみなす。換言すれば、処理部４３は、暗号化ブロックｃ１と第２のベクトルＩＶ２とに対してＸＯＲ演算を実施して入力ブロックｉ１を得る。次に、処理部４３は、鍵Ｋとブロック暗号化装置２によって用いられた対称暗号化アルゴリズムに対応する対称復号化アルゴリズムとを用いて入力ブロックｉ１に対して復号化演算Ｄを実施して、出力ブロックｏ１を得る。その後、処理部４３は、出力ブロックｏ１と、暗号化ブロックｃ１の１つ前の暗号化ブロックとに対してＸＯＲ演算を実施してメッセージブロックｍ１を得る。
処理部４３は、第１のベクトルＩＶ１の値を暗号化ブロックｃ１の１つ前の暗号化ブロックの値とみなす。換言すれば、処理部４３は、出力ブロックｏ１と第１のベクトルＩＶ１とに対してＸＯＲ演算を実施してメッセージブロックｍ１を得る。
【００６０】
その後、残りの暗号化ブロック（すなわち暗号化ブロックｃ２，ｃ３，ｃ４，……，ｃｔ）に関して、処理部４３は、同じくまず、各々の暗号化ブロックｃ２，ｃ３，ｃ４，……，ｃｔと、その暗号化ブロックの１つ前の暗号化ブロックに対応するメッセージブロック（すなわちメッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１）とにそれぞれＸＯＲ演算を実施して入力ブロックｉ２，ｉ３，ｉ４，……，ｉｔを得、鍵Ｋおよび対称復号化アルゴリズムをそれぞれ用いて各々の入力ブロックｉ２，ｉ３，ｉ４，……，ｉｔに対して復号化演算Ｄを実施して出力ブロックｏ２，ｏ３，ｏ４，……，ｏｔを得、次に、各々の出力ブロックｏ２，ｏ３，ｏ４，……，ｏｔと、その暗号化ブロックの１つ前の暗号化ブロック（すなわちｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１）とにそれぞれＸＯＲ演算を実施してメッセージブロックｍ２，ｍ３，ｍ４，……，ｍｔを得る。
【００６１】
その後、処理部４３は、メッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔの最後のブロック（すなわちメッセージブロックｍｔ）をメッセージブロックｍｃｖ（すなわち検査ベクトル）と比較する。メッセージブロックｍｔがメッセージブロックｍｃｖと同じであれば、電子暗号化ファイルＣが検証に合格したことを示している。
処理部４３は、メッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔの最後のブロック（すなわちメッセージブロックｍｔ）を排除し、メッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１をシーケンスに合わせて連結して復号化ファイル（すなわち電子ファイルＭ）を生成する。メッセージブロックｍｔがメッセージブロックｍｃｖと異なっていれば、電子暗号化ファイルＣが検証に不合格であることを示し、処理部４３は電子暗号化ファイルＣを破棄する。
【００６２】
他の実装では、ブロック暗号化装置２が暗号化処理中に暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対して演算Ｆを実施し、その演算結果をメッセージブロックｍｃｖとみなした場合、ブロック復号化装置４の処理部４３は、それに応じて、図４Ｃに示したように、暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対して同じ演算Ｆを実施して、メッセージブロックｍｃｖを生成しなければならない。
例えば、ブロック暗号化装置２が暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対してＸＯＲ演算を実施して仮ブロックを得て、その仮ブロックに対して関数演算を実施してメッセージブロックｍｃｖをあらかじめ得る場合、ブロック復号化装置４の処理部４３は、電子暗号化ファイルＣを暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔに分割した後に、同じように暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対して同じ演算を実施してメッセージブロックｍｃｖを得なければならない。
前述の関数演算は、鍵暗号化演算、回転演算、ハッシュ演算またはその他の任意の関数演算であってよい。暗号化する当事者および復号化する当事者は、同じ関数演算に関して事前に合意に達している必要がある。
【００６３】
上記の説明および図４Ｂおよび図４Ｃからわかるように、電子暗号化ファイルＣの暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔのうちのいずれか１つが改竄されれば（または誤って送信されれば）、電子暗号化ファイルＣを復号化して得られたメッセージブロックの最後のブロックは偽になる。
例えば、電子暗号化ファイルＣの暗号化ブロックｃ２が改竄されて（または誤って送信されて）暗号化ブロックｃ２’になれば、復号化して得られたメッセージブロックｍ２，ｍ３，ｍ４，……，ｍｔはすべて偽になる。したがって、ブロック復号化装置４は、メッセージブロックｍｔをメッセージブロックｍｃｖと比較することによって、電子暗号化ファイルＣが改竄された（または誤って送信された）かどうかを判断できる。
【００６４】
本発明の第５の実施形態を図４Ａおよび図５Ａに示している。図５Ａは、復号化演算を示した概略図である。この実施形態では、ブロック復号化装置４は、第１の実施形態から第３の実施形態のブロック暗号化装置２と一緒に用いられてもよい。換言すれば、この実施形態のブロック復号化装置４は、ブロック暗号化装置２が暗号化した電子暗号化ファイルＣを復号化できる。
第５の実施形態のほとんどの演算は、第４の実施形態の演算と同様であり、第５の実施形態と第４の実施形態との唯一の相違点について以下に詳述する。
【００６５】
同じように、処理部４３は、第１のベクトルＩＶ１および第２のベクトルＩＶ２を得る。処理部４３で得られた第１のベクトルＩＶ１および第２のベクトルＩＶ２は、電子暗号化ファイルＣを暗号化するために暗号化装置２によって用いられた第１のベクトルＩＶ１および第２のベクトルＩＶ２と同じである。このほか、処理部４３は、復号化する電子暗号化ファイルＣを複数の暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔに分割する。暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔはシーケンスを有する（すなわち暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔの順序になっている）。
次に、処理部４３は、各々の暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔに対してシーケンスに合わせて以下の演算を実施する。入力ブロックを生成する演算、入力ブロック鍵を用いてを暗号化して出力ブロックを得る演算、およびメッセージブロックを生成する演算。入力ブロックの値は、暗号化ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しい。
メッセージブロックの値は、出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しい。
【００６６】
この実施形態では、各々の暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔが処理されるとき、処理部４３は、暗号化ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応するメッセージブロックとに対してＸＯＲ演算を実施することによって入力ブロックを生成する。換言すれば、処理部４３は、前述の式（４）に従って入力ブロックｉ１，ｉ２，ｉ３，ｉ４，……，ｉｔを生成する。これは、第４の実施形態と同じであるため、ここではこれ以上説明しない。
【００６７】
出力ブロックは、この実施形態では異なる方法で生成される。具体的には、各々の暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔに関して、処理部４３は、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックに対応しているメッセージブロックと、出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応している入力ブロックとに対して以下の式（６）で表されるとおりＸＯＲ演算を実施してメッセージブロックを生成する。
【００６８】
0005855696.tif 000009
【００６９】
暗号化ブロックの第１のブロック（すなわち暗号化ブロックｃ１）が処理部４３で処理されるとき、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックに対応しているメッセージブロックは、オールゼロベクトルであり、その暗号化ブロックの１つ前の暗号化ブロックに対応している入力ブロックは、第１のベクトルである。
また、暗号化ブロックの第２のブロック（すなわち暗号化ブロックｃ２）が処理部４３で処理されるとき、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックに対応しているメッセージブロックは、第２のベクトルである。
【００７０】
次に、各々の入力ブロック、出力ブロックおよびメッセージブロックがどのように生成されるのかについてさらに詳述していく。まず、処理部４３が暗号化ブロックの第１のブロック（すなわち暗号化ブロックｃ１）をどのように処理するのかについて説明する。
処理部４３はまず、暗号化ブロックｃ１と、その暗号化ブロックｃ１の１つ前の暗号化ブロックに対応しているメッセージブロックとに対してＸＯＲ演算を実施して入力ブロックｉ１を生成する。処理部４３は、第２のベクトルＩＶ２をその暗号化ブロックｃ１の１つ前の暗号化ブロックに対応しているメッセージブロックとみなす。換言すれば、処理部４３は、暗号化ブロックｃ１と第２のベクトルＩＶ２とに対してＸＯＲ演算を実施して入力ブロックｉ１を生成する。次に、処理部４３は、鍵Ｋとブロック暗号化装置２によって用いられた対称暗号化アルゴリズムに対応する対称復号化アルゴリズムとを用いて、入力ブロックｉ１に対して復号化演算Ｄを実施して、出力ブロックｏ１を得る。その後、処理部４３は、出力ブロックｏ１と、その暗号化ブロックｃ１の１つ前の暗号化ブロックに対応する入力ブロックとに対してＸＯＲ演算を実施して仮ブロックｔ１を得て、その後、仮ブロックｔ１と、その暗号化ブロックｃ１の１つ前の暗号化ブロックの前の暗号化ブロックに対応しているメッセージブロックとに対してＸＯＲ演算を実施してメッセージブロックｍ１を得る。
処理部４３は、第１のベクトルＩＶ１を暗号化ブロックｃ１の１つ前の暗号化ブロックに対応する入力ブロックとみなし（すなわちｉ［０］の値は第１のベクトルＩＶ１の値に等しい）、フルゼロベクトルを暗号化ブロックｃ１の１つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロックとみなす（すなわちｍ［−１］の値はフルゼロベクトルの値に等しい）。換言すれば、処理部４３は、出力ブロックｏ１と第１のベクトルＩＶ１とに対してＸＯＲ演算を実施して仮ブロックｔ１を得た後、仮ブロックｔ１とフルゼロベクトルとに対してＸＯＲ演算を実施してメッセージブロックｍ１を得る。
【００７１】
処理部４３が暗号化ブロックの第２のブロック（すなわち暗号化ブロックｃ２）をどのように処理するのかについて次に説明してく。処理部４３はまず、暗号化ブロックｃ２と、暗号化ブロックｃ２の１つ前の暗号化ブロックに対応するメッセージブロック（すなわちメッセージブロックｍ１）とに対してＸＯＲ演算を実施して入力ブロックｉ２を得る。次に、処理部４３は、鍵Ｋおよび同じ対称復号化アルゴリズムを用いて入力ブロックｉ２に対して復号化演算Ｄを実施して出力ブロックｏ２を得る。その後、処理部４３は、出力ブロックｏ２と、暗号化ブロックｃ２の１つ前の暗号化ブロックに対応する入力ブロック（すなわち入力ブロックｉ１）に対してＸＯＲ演算を実施して仮ブロックｔ２を得た後、仮ブロックｔ２と、暗号化ブロックｃ２の１つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロックとに対してＸＯＲ演算を実施してメッセージブロックｍ２を得る。処理部４３は、第２のベクトルＩＶ２を暗号化ブロックｃ２の１つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロックとみなす（すなわちｍ［０］の値は、第２のベクトルＩＶ２の値に等しい）。換言すれば、処理部４３は、出力ブロックｏ２と入力ブロックｉ１とに対してＸＯＲ演算を実施して仮ブロックｔ２を得た後、仮ブロックｔ２と第２のベクトルＩＶ２とに対してＸＯＲ演算を実施してメッセージブロックｍ２を得る。
【００７２】
その後、残りの暗号化ブロック（すなわち暗号化ブロックｃ３，ｃ４，……，ｃｔ）に関して、処理部４３は、同じくまず、各々の暗号化ブロックｃ３，ｃ４，……，ｃｔと、その暗号化ブロックの１つ前の暗号化ブロックに対応するメッセージブロック（すなわちメッセージブロックｍ２，ｍ３，ｍ４，……，ｍｔ−１）とにそれぞれＸＯＲ演算を実施して入力ブロックｉ３，ｉ４，……，ｉｔを得、鍵Ｋおよび対称復号化アルゴリズムを用いて各々の入力ブロックｉ３，ｉ４，……，ｉｔに対して復号化演算Ｄを実施して出力ブロックｏ３，ｏ４，……，ｏｔを得、各々の出力ブロックｏ３，ｏ４，……，ｏｔと、その暗号化ブロックの１つ前の暗号化ブロックに対応する入力ブロック（すなわち入力ブロックｉ２，ｉ２，……，ｉｔ−１）とに対してそれぞれＸＯＲ演算を実施して仮ブロックｔ３，ｔ４，……，ｔｔを得、次に、各々の仮ブロックｔ３，ｔ４，……，ｔｔと、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロック（すなわちメッセージブロックｍ１，ｍ２，……，ｍｔ−２）とにそれぞれＸＯＲ演算を実施してメッセージブロックｍ３，ｍ４，……，ｍｔを得る。
【００７３】
その後、処理部４３は、メッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔの最後のブロック（すなわちメッセージブロックｍｔ）をメッセージブロックｍｃｖ（すなわち検査ベクトル）と比較する。メッセージブロックｍｔがメッセージブロックｍｃｖと同じであれば、電子暗号化ファイルＣが検証に合格したことを示している。
処理部４３は、メッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔの最後のブロック（すなわちメッセージブロックｍｔ）を排除した後、メッセージブロックｍ１，ｍ２，ｍ３，ｍ４，……，ｍｔ−１をシーケンスに合わせて連結して復号化ファイル（すなわち電子ファイルＭ）を生成する。メッセージブロックｍｔがメッセージブロックｍｃｖと異なっていれば、電子暗号化ファイルＣが検証に不合格であることを示し、処理部４３は電子暗号化ファイルＣを破棄する。
【００７４】
他の実装では、ブロック暗号化装置２が暗号化処理中に暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対して演算Ｆを実施し、その演算結果をメッセージブロックｍｃｖとみなした場合、ブロック復号化装置４の処理部４３は、それに応じて、図５Ｃに示したように同じ演算Ｆを用いて、メッセージブロックｍｃｖを生成しなければならない。
例えば、ブロック暗号化装置２が暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対してＸＯＲ演算を実施して仮ブロックを得て、その仮ブロックに対して関数演算を実施してメッセージブロックｍｃｖをあらかじめ得る場合、ブロック復号化装置４の処理部４３は、電子暗号化ファイルＣを暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔに分割した後に、暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対して同じ演算を実施してメッセージブロックｍｃｖを得なければならない。
前述の関数演算は、鍵暗号化演算、回転演算、ハッシュ演算またはその他の任意の関数演算であってよい。暗号化する当事者および復号化する当事者は、同じ関数演算に関して事前に合意に達している必要がある。
【００７５】
上記の説明および図５Ａおよび図５Ｂからわかるように、電子暗号化ファイルＣの暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔのうちのいずれか１つが改竄されれば（または誤って送信されれば）、電子暗号化ファイルＣを復号化して得られたメッセージブロックの最後のブロックは偽になる。したがって、この実施形態で開示した技術を用いると、ブロック復号化装置４は、メッセージブロックｍｔをメッセージブロックｍｃｖと比較することによって、電子暗号化ファイルＣが改竄された（または誤って送信された）かどうかを判断できる。
【００７６】
本発明の第６の実施形態を図４Ａおよび図６Ａに示している。図６Ａは、この実施形態による復号化演算を示した概略図である。この実施形態では、ブロック復号化装置４は、第１の実施形態から第３の実施形態のブロック暗号化装置２と一緒に用いられてもよい。換言すれば、ブロック復号化装置４は、ブロック暗号化装置２が暗号化した電子暗号化ファイルＣを復号化できる。
第６の実施形態のいくつかの演算は、第４の実施形態および第５の実施形態の演算と同様であり、第６の実施形態と第４および第５の実施形態との唯一の相違点について以下に詳述する。
【００７７】
同じように、処理部４３は、第１のベクトルＩＶ１および第２のベクトルＩＶ２を得る。処理部４３で得られた第１のベクトルＩＶ１および第２のベクトルＩＶ２は、電子暗号化ファイルＣを暗号化するために暗号化装置２によって用いられた第１のベクトルＩＶ１および第２のベクトルＩＶ２と同じである。このほか、処理部４３はまず、復号化する電子暗号化ファイルＣを複数の暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔに分割する。暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔは第１のシーケンスを有する（すなわち暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔの順序になっている）。このほか、処理部４３は、暗号化ブロックの最後のブロック（すなわち暗号化ブロックｃｔ）を基準ベクトルとみなす。
【００７８】
次に、処理部４３は、暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔの最後のブロック（すなわち暗号化ブロックｃｔ）を排除する。その後、処理部４３は、暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１を、第１のシーケンスの逆である第２のシーケンスに合わせて暗号化ブロックｃｔ−１，ｃｔ−２，……，ｃ１に再構成する。その後、処理部４３は、第１のベクトルＩＶ１を暗号化ブロックの最後のブロック（すなわち暗号化ブロックｃ０）として暗号化ブロックｃｔ−１，ｃｔ−２，……，ｃ１に加算する。換言すれば、暗号化ブロックｃ０は、まさに第１のベクトルＩＶ１である。
【００７９】
次に、処理部４３は、各々の暗号化ブロックｃｔ−１，ｃｔ−２，……，ｃ１，ｃ０に対して第２のシーケンスに合わせて以下の演算を実施する。
入力ブロックを生成する演算、鍵を用いて入力ブロックを暗号化して出力ブロックを得る演算、および出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックとに対してＸＯＲ演算を実施してメッセージブロックを生成する演算。入力ブロックの値は、暗号化ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しく、以下の式（７）で表されるとおりである。
【００８０】
0005855696.tif 000010
【００８１】
暗号化ブロックの第１のブロック（すなわち暗号化ブロックｃｔ−１）が処理部４３で処理されるとき、暗号化ブロックｃｔ−１の１つ前の暗号化ブロックに対応する出力ブロックは、メッセージブロックｍｃｖであり（すなわちｏ［０］の値は検査ベクトルであるメッセージブロックｍｃｖの値に等しい）、暗号化ブロックｃｔ−１の１つ前の暗号化ブロックの前の暗号化ブロックは、オールゼロベクトルである（すなわちｃ［−１］の値はオールゼロベクトルの値に等しい）。
また、暗号化ブロックの第２のブロック（すなわち暗号化ブロックｃｔ−２）が処理部４３で処理されるとき、暗号化ブロックｃｔ−２の１つ前の暗号化ブロックの前の暗号化ブロックは、暗号化ブロックｃｔである（すなわちｃ［０］の値は基準ベクトルである暗号化ブロックｃｔの値に等しい）。
【００８２】
この実施形態では、処理部４３は、暗号化ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応するメッセージブロックとに対してＸＯＲ演算を実施して入力ブロックを生成し、以下の式（８）で表されるとおりである。
【００８３】
0005855696.tif 000011
【００８４】
次に、各々の入力ブロック、出力ブロックおよびメッセージブロックがどのように生成されるのかについてさらに詳述する。まず、処理部４３が暗号化ブロックの第１のブロック（すなわち暗号化ブロックｃｔ−１）をどのように処理するのかについて説明する。
処理部４３はまず、暗号化ブロックｃｔ−１と、暗号化ブロックｃｔ−１の１つ前の暗号化ブロックに対応しているメッセージブロックとに対してＸＯＲ演算を実施して入力ブロックｉｔ−１を生成する。処理部４３は、検査ベクトルであるメッセージブロックｍｃｖを１つ前の暗号化ブロックに対応するメッセージブロックとみなす。換言すれば、処理部４３は、暗号化ブロックｃｔ−１とメッセージブロックｍｃｖとに対してＸＯＲ演算を実施して入力ブロックｉｔ−１を得る。次に、処理部４３は、鍵Ｋとブロック暗号化装置２によって用いられた対称暗号化アルゴリズムとを用いて、入力ブロックｉｔ−１に対して暗号化演算Ｅを実施して、出力ブロックｏｔ−１を得る。その後、処理部４３は、出力ブロックｏｔ−１と、その暗号化ブロックｃｔ−１の１つ前の暗号化ブロックとに対してＸＯＲ演算を実施してメッセージブロックｍｔ−１を得る。
処理部４３は、基準ベクトルである暗号化ブロックｃｔをその暗号化ブロックｃｔ−１の１つ前の暗号化ブロックとみなす。換言すれば、処理部４３は、出力ブロックｏｔ−１と暗号化ブロックｃｔとに対してＸＯＲ演算を実施してメッセージブロックｍｔ−１を得る。
【００８５】
次に、処理部４３が残りの暗号化ブロック（すなわち暗号化ブロックｃｔ−２，……，ｃ１，ｃ０）をどのように処理するのかを説明する。
具体的には、処理部４３はまず、各々の暗号化ブロックｃｔ−２，……，ｃ１，ｃ０と、その暗号化ブロックの１つ前の暗号化ブロックに対応するメッセージブロック（すなわちメッセージブロックｍｔ−１，……，ｍ２，ｍ１）とに対してそれぞれＸＯＲ演算を実施して入力ブロックｉｔ−２，……，ｉ１，ｉ０を得、鍵Ｋおよび同じ対称暗号化アルゴリズムを用いて各々の入力ブロックｉｔ−２，……，ｉ１，ｉ０に対して暗号化演算Ｅを実施して出力ブロックｏｔ−２，……，ｏ１，ｏ０をそれぞれ得、次に、各々の出力ブロックｏｔ−２，……，ｏ１，ｏ０と、その暗号化ブロックの１つ前の暗号化ブロック（すなわち暗号化ブロックｃｔ−１，…，ｃ２，ｃ１）とにそれぞれＸＯＲ演算を実施してメッセージブロックｍｔ−２，……，ｍ１，ｍ０を得る。
【００８６】
その後、処理部４３は、メッセージブロックｍｔ−１，ｍｔ−２，……，ｍ１，ｍ０の最後のブロック（すなわちメッセージブロックｍ０）を第２のベクトルＩＶ２と比較する。メッセージブロックｍ０が第２のベクトルＩＶ２と同じであれば、電子暗号化ファイルＣ検証に合格したことを示している。
処理部４３は、メッセージブロックｍｔ−１，ｍｔ−２，……，ｍ１，ｍ０の最後のブロック（すなわちメッセージブロックｍ０）を排除し、メッセージブロックｍｔ−１，ｍｔ−２，……，ｍ１を第２のシーケンスに合わせて逆に連結して復号化ファイル（すなわち電子ファイルＭ）を生成する。換言すれば、処理部４３は、メッセージブロックｍ１，……，ｍｔ−２，ｍｔ−１を連結して復号化ファイルを生成する。メッセージブロックｍ０が第２のベクトルＩＶ２と異なっていれば、電子暗号化ファイルＣが検証に不合格であることを示し、処理部４３は電子暗号化ファイルＣを破棄する。
【００８７】
他の実装では、ブロック暗号化装置２が暗号化処理中に暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対して演算Ｆを実施し、その演算結果をメッセージブロックｍｃｖとみなした場合、ブロック復号化装置４の処理部４３は、それに応じて、図６Ｂに示したように、同じ演算Ｆを用いてメッセージブロックｍｃｖを生成しなければならない。
例えば、ブロック暗号化装置２が暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対してＸＯＲ演算を実施して仮ブロックを得て、その仮ブロックに対して関数演算を実施してメッセージブロックｍｃｖをあらかじめ得る場合、ブロック復号化装置４の処理部４３は、電子暗号化ファイルＣを暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔに分割した後に、暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１に対して同じ演算を実施してメッセージブロックｍｃｖを得なければならない。
前述の関数演算は、鍵暗号化演算、回転演算、ハッシュ演算またはその他の任意の関数演算であってよい。暗号化する当事者および復号化する当事者は、同じ関数演算に関して事前に合意に達している必要がある。
【００８８】
上記の説明および図６Ａおよび図６Ｂからわかるように、ブロック復号化装置４は、暗号化ブロックｃ０，ｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１，ｃｔを再構成することによって、第１の実施形態および第２の実施形態に開示した暗号化機構を用いて復号化機能を達成できる。このほか、前述の実施形態のように、電子暗号化ファイルＣの暗号化ブロックｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔのうちのいずれか１つが改竄されれば（または誤って送信されれば）、電子暗号化ファイルＣを復号化して得られたメッセージブロックの最後のブロックは偽になる。したがって、この実施形態で開示した技術を用いると、ブロック復号化装置４は、メッセージブロックｍ０をベクトルＩＶ２と比較することによって、電子暗号化ファイルＣが改竄された（または誤って送信された）かどうかを判断できる。
【００８９】
第７の本発明の実施形態は、ブロック復号化装置６であり、この装置の演算原理を図６Ｃに示している。第７の実施形態の演算原理は、第６の実施形態の演算原理と同じだが、第６の実施形態との唯一の相違点は、この実施形態のブロック復号化装置６がブロック暗号化装置２を用いて復号化演算を達成するという点である。ブロック復号化装置６およびこのブロック復号化装置に含まれているブロック暗号化装置２の演算は、図６Ｂに示した演算と同じである。ブロック暗号化装置２の内部演算は、図２Ｂに示した内部演算と同じである。
【００９０】
図２Ｂを図６Ｃと比較するとわかるように、電子暗号化ファイルＣをブロック復号化装置６で復号化する場合、ブロック暗号化装置２を用いて復号化効果を得るためには、データ位置のみを調整する必要がある。
具体的には、暗号化ブロックｃ０，ｃ１，ｃ２，ｃ３，ｃ４，……，ｃｔ−１をブロック暗号化装置２の入力として暗号化ブロックｃｔ−１，ｃｔ−２，……，ｃ１，ｃ０に再構成する必要がある。このほか、ブロック暗号化装置２に入力される第１のベクトルＩＶ１および第２のベクトルＩＶ２は、メッセージブロックｍｃｖおよび暗号化ブロックｃｔに置換される。ブロック暗号化装置２は、メッセージブロックｍｃｖおよび暗号化ブロックｃｔを用いて暗号化ブロックｃｔ−１，ｃｔ−２，……，ｃ１，ｃ０を復号化してメッセージブロックｍｔ−１，ｍｔ−２，……，ｍ１，ｍ０を生成する。次にメッセージブロックｍｔ−１，ｍｔ−２，……，ｍ１は、逆に再構成されて復号化ファイルを得る。
【００９１】
上記の説明および図６Ｃからわかるように、本発明は、データ位置を調整することによってブロック暗号化装置を用いて復号化効果を達成できる。
【００９２】
本発明の第８の実施形態は、コンピュータに実装したブロック暗号化方法であり、この方法のフローチャートを図７に示している。ブロック暗号化方法を実装するためのコンピュータは、前述のブロック暗号化装置２であってよく、検査ベクトルおよび鍵とともに記憶される。第８の実施形態の演算原理は、第１の実施形態の演算原理と同じであるため、一緒に図２Ｂを参照されたい。
【００９３】
まず、ステップＳ７００では、第１のベクトルおよび第２のベクトルを得る。ステップＳ７０１では、暗号化する電子ファイルを複数のメッセージブロックに分割し、メッセージブロックはシーケンスを有する。次に、ステップＳ７０３では、検査ベクトルをメッセージブロックの最後のブロックとしてメッセージブロックに加算する。次に、各々のメッセージブロックに対してシーケンスに合わせてステップＳ７０５、Ｓ７０７、Ｓ７０９およびＳ７１１を実行し、メッセージブロックがすべて処理されるまで行う。
【００９４】
具体的には、ステップＳ７０５では、入力ブロックを生成する。入力ブロックの値は、メッセージブロックと、そのメッセージブロックの１つ前のメッセージブロックに対応する出力ブロックと、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックとに対してＸＯＲ演算を実施して得られた値に等しい。
この実施形態では、ステップＳ７０５は、メッセージブロックと、そのメッセージブロックの１つ前のメッセージブロックに対応する暗号化ブロックとに対してＸＯＲ演算を実施して入力ブロックを生成する。ステップＳ７０７では、鍵および対称暗号化アルゴリズムを用いて入力ブロックを暗号化して出力ブロックを得る。ステップＳ７０９では、出力ブロックと、そのメッセージブロック１つ前のメッセージブロックとに対してＸＯＲ演算を実施して暗号化ブロックを得る。
さらに説明すると、メッセージブロックの第１のブロックがステップＳ７０５およびＳ７０９で処理されるとき、そのメッセージブロックの１つ前のメッセージブロックに対応する出力ブロックは、第１のベクトルであり、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックは、オールゼロベクトルである。メッセージブロックの第２のブロックがステップＳ７０５およびＳ７０９で処理されるとき、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックは、第２のベクトルである。
【００９５】
その後、ステップＳ７１１では、未処理のメッセージブロックがあるかどうかを判断する。ステップＳ７１１の判断結果が「はい」であれば、その処理はステップＳ７０５に戻って次のメッセージブロックの処理を続行する。ステップＳ７１１の判断結果が「いいえ」であれば、メッセージブロックがすべて処理されたことを示している。次に、ステップＳ７１３を実行し、暗号化ブロックをシーケンスに合わせて連結して電子暗号化ファイルを生成する。
【００９６】
他の実装では、ブロック暗号化方法を実装するためのコンピュータは、検査ベクトルとともに記憶されなくてよい。このような実装では、ステップＳ７０５、Ｓ７０７およびＳ７０９で残された未処理のメッセージブロックが１つしかない場合、ブロック暗号化方法は、まずもう１つのステップ（図示せず）を実行して、演算によって得られた暗号化ブロックに対してＸＯＲ演算を実施して仮ブロックを得た後、もう１つのステップ（図示せず）を実行して、仮ブロックに対して関数演算を実施して検査ベクトルを得ることができる。
前述の関数演算は、鍵暗号化演算、回転演算、ハッシュ演算または復号化の点で事前に合意に達しているその他の任意の関数演算であってよい。
【００９７】
前述のステップに加えて、第８の実施形態も同じく、第１の実施形態に記載した演算および関数をすべて実行できる。第８の実施形態がこのような演算および関数をどのように実行するのかについては、第１の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
【００９８】
第９の本発明の実施形態は、コンピュータに実装したブロック暗号化方法であり、この方法のフローチャートを図８Ａに示している。ブロック暗号化方法を実装するためのコンピュータは、前述のブロック暗号化装置２であってよく、検査ベクトルおよび鍵とともに記憶される。第９の実施形態の演算原理は、第２の実施形態の演算原理と同じであるため、一緒に図３Ａを参照されたい。
【００９９】
第９の実施形態のブロック暗号化方法は、ステップＳ７００、Ｓ７０１、Ｓ７０３、Ｓ８０５、Ｓ７０７、Ｓ７０９、Ｓ７１１およびＳ７１３を実行する。換言すれば、第９の実施形態が第８の実施形態と異なる点は、第９の実施形態ではステップＳ７０５がステップＳ８０５に代わる点である。２つの実施形態の相違点のみを以下に詳述する。
【０１００】
まず、第９の実施形態のブロック暗号化方法は、ステップＳ７００、Ｓ７０１およびＳ７０３を実行する。その後、各々のメッセージブロックに対してそのメッセージブロックのシーケンスに合わせてステップＳ８０５、Ｓ７０７、Ｓ７０９およびＳ７１１を実行し、メッセージブロックがすべて処理されるまで行う。
【０１０１】
具体的には、ステップＳ８０５では、入力ブロックを生成する。入力ブロックの値は、メッセージブロックと、そのメッセージブロックの１つ前のメッセージブロックに対応する出力ブロックと、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックとに対してＸＯＲ演算を実施して得られた値に等しい。
この実施形態では、ステップＳ８０５は、メッセージブロックと、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックとに対してＸＯＲ演算を実施して仮ブロックを得た後、仮ブロックと、そのメッセージブロックの１つ前のメッセージブロックに対応する出力ブロックとに対してＸＯＲ演算を実施して入力ブロックを得る。
【０１０２】
次に、ステップＳ７０７では、鍵および対称暗号化アルゴリズムを用いて入力ブロックを暗号化して出力ブロックを得る。ステップＳ７０９では、出力ブロックと、そのメッセージブロックの１つ前のメッセージブロックとに対してＸＯＲ演算を実施して暗号化ブロックを得る。
さらに説明すると、メッセージブロックの第１のブロックがステップＳ８０５およびＳ７０９で処理されるとき、そのメッセージブロックの１つ前のメッセージブロックに対応する出力ブロックは、第１のベクトルであり、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックは、オールゼロベクトルである。メッセージブロックの第２のブロックがステップＳ８０５およびＳ７０９で処理されるとき、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックは、第２のベクトルである。
【０１０３】
その後、ステップＳ７１１では、未処理のメッセージブロックがあるかどうかを判断する。ステップＳ７１１の判断結果が「はい」であれば、その処理はステップＳ７０５に戻って次のメッセージブロックの処理を続行する。ステップＳ７１１の判断結果が「いいえ」であれば、メッセージブロックがすべて処理されたことを示している。次に、ステップＳ７１３を実行し、暗号化ブロックをシーケンスに合わせて連結して電子暗号化ファイルを生成する。
【０１０４】
同じように、他の実装では、ブロック暗号化方法を実装するためのコンピュータは、検査ベクトルとともに記憶されなくてよい。検査ベクトルは、１つ前の実施形態で説明したように生成されるが、これについてはここでこれ以上説明しない。
また、前述のステップに加えて、第９の実施形態も同じく、第２の実施形態に記載した演算および関数をすべて実行できる。第９の実施形態がこのような演算および関数をどのように実行するのかについては、第２の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
【０１０５】
本発明の第１０の実施形態は、コンピュータに実装したブロック暗号化方法であり、この方法のフローチャートを図８Ｂに示している。第１０の実施形態の実施形態の演算原理は、第９の実施形態の演算原理と同様だが、この実施形態ではいくつかのステップが従来のＣＢＣによって達成される点が異なる。
第１０の実施形態と第９の実施形態との相違点のみを以下に詳述する。理解しやすいように、図３Ｃを併せて参照されたい。
【０１０６】
同じように、この実施形態のブロック暗号化方法はまず、ステップＳ７００、Ｓ７０１およびＳ７０３を実行する。次に、ステップＳ８１１を実行して、各々のメッセージブロックと、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックとに対してそれぞれＸＯＲ演算を実施して複数の仮ブロックを得る。
メッセージブロックの第１のブロックがステップＳ８１１で処理されるとき、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックは、フルゼロベクトルである。メッセージブロックの第２のブロックがステップＳ８１１で処理されるとき、そのメッセージブロックの１つ前のメッセージブロックの前のメッセージブロックは、第２のベクトルである。
【０１０７】
次に、ステップＳ８１３を実行して、鍵、第１のベクトルおよびＣＢＣを用いて仮ブロックを暗号化して出力ブロックにする。その後、ステップＳ８１５を実行して、各々の出力ブロックと、その出力ブロックの１つ前のメッセージブロックとに対してそれぞれＸＯＲ演算を実施して暗号化ブロックを得る。
出力ブロックの最初のブロックがステップＳ８１５で処理されるとき、出力ブロックの１つ前のメッセージブロックは第２のベクトルである。その後、ステップＳ７１３を実行して、暗号化ブロックをシーケンスに合わせて連結して電子暗号化ファイルを生成する。
【０１０８】
同じように、他の実装では、ブロック暗号化方法を実装するためのコンピュータは、検査ベクトルとともに記憶されなくてよい。検査ベクトルは、第８の実施形態で説明したように生成されるが、これについてはここでこれ以上説明しない。また、前述のステップに加えて、第１０の実施形態も同じく、第３の実施形態に記載した演算および関数をすべて実行できる。
第１０の実施形態がこのような演算および関数をどのように実行するのかについては、第３の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
【０１０９】
本発明の第１１の実施形態は、コンピュータに実装したブロック復号化方法であり、この方法のフローチャートを図９に示している。ブロック復号化方法を実装するためのコンピュータは、前述のブロック復号化装置４であってよく、検査ベクトルおよび鍵とともに記憶される。また、この実施形態のブロック復号化方法は、第８から第１０の実施形態のブロック暗号化方法と一緒に用いられてよい。換言すれば、この実施形態のブロック復号化方法は、第８から第１０の実施形態で暗号化した電子暗号化ファイルを復号化できる。第１１の実施形態の演算原理は、第４の実施形態の演算原理と同じであるため、図４Ｂを併せて参照されたい。
【０１１０】
まず、ステップＳ９００を実行して第１のベクトルおよび第２のベクトルを得る。ステップＳ９００で得られた第１のベクトルおよび第２のベクトルは、電子暗号化ファイルを暗号化するためのブロック暗号化方法で使用した第１のベクトルおよび第２のベクトルと同じである。
その後、ステップＳ９０１を実行して電子暗号化ファイルを複数の暗号化ブロックに分割し、暗号化ブロックはシーケンスを有する。次に、各々の暗号化ブロックに対してシーケンスに合わせてステップＳ９０３、Ｓ９０５、Ｓ９０７およびＳ９０９を実行し、暗号化ブロックがすべて処理されるまで行う。
【０１１１】
具体的には、ステップＳ９０３では、入力ブロックを生成する。入力ブロックの値は、暗号化ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しい。この実施形態では、ステップＳ９０３は、暗号化ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応するメッセージブロックとに対してＸＯＲ演算を実施して入力ブロックを生成する。
次に、ステップＳ９０５では、鍵および対称復号化アルゴリズムを用いて入力ブロックを復号化して出力ブロックを得る。対称復号化アルゴリズムは、第８から第１０の実施形態で用いた対称暗号化アルゴリズムに相当する。ステップＳ９０７では、メッセージブロックを生成する。メッセージブロックの値は、出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しい。この実施形態では、ステップＳ９０７は、出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックとに対してＸＯＲ演算を実施してメッセージブロックを生成する。
暗号化ブロックの第１のブロックがステップＳ９０３およびＳ９０７で処理されるとき、その暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックは、第２のベクトルであり、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックは、オールゼロベクトルである。
暗号化ブロックの第２のブロックがステップＳ９０３およびＳ９０７で処理されるとき、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックは、第１のベクトルである。
【０１１２】
その後、ステップＳ９０９では、未処理の暗号化ブロックがあるかどうかを判断する。ステップＳ９０９の判断結果が「はい」であれば、その処理はステップＳ９０３に戻って次の暗号化ブロックの処理を続行する。ステップＳ９０９の判断結果が「いいえ」であれば、暗号化ブロックがすべて処理されたことを示している。
次に、ステップＳ９１１を実行し、メッセージブロックの最後のブロックを検査ベクトルと比較して、メッセージブロックの最後のブロックが検査ベクトルと同じであるかどうかを判断する。ステップＳ９１１の判断結果が「はい」であれば、ステップＳ９１３を実行し、メッセージブロックの最後のブロックを排除したメッセージブロックをシーケンスに合わせて連結して、復号化ファイルを生成する。ステップＳ９１１の判断結果が「いいえ」であれば、ステップＳ９１５を実行して電子暗号化ファイルを破棄する。
【０１１３】
この実施形態と一緒に用いたブロック暗号化方法が、暗号化ブロックに記憶した検査ベクトルを有するのではなく、生成した暗号化ブロックを用いて検査ベクトルを動的に生成する場合、この実施形態でも同じように検査ベクトルを生成する必要がある。
具体的には、ブロック復号化方法によってステップＳ９０１を実行した後、もう１つのステップ（図示せず）を実行して、暗号化ブロックの最後のブロックを排除した暗号化ブロックを用いて検査ベクトルを生成することができる。検査ベクトルは、１つ前の実施形態で説明したように生成されるが、これについてはここでこれ以上説明しない。
【０１１４】
前述のステップに加えて、第１１の実施形態も同じく、第４の実施形態に記載した演算および関数をすべて実行できる。第１１の実施形態がこのような演算および関数をどのように実行するのかについては、第４の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
【０１１５】
第１２の本発明の実施形態は、コンピュータに実装したブロック復号化方法であり、この方法のフローチャートを図１０に示している。ブロック復号化方法を実装するためのコンピュータは、前述のブロック復号化装置４であってよく、検査ベクトルおよび鍵とともに記憶される。また、この実施形態のブロック復号化方法は、第８から第１０の実施形態のブロック暗号化方法と一緒に用いられてよい。換言すれば、この実施形態のブロック復号化方法は、第８から第１０の実施形態で暗号化した電子暗号化ファイルを復号化できる。第１２の実施形態の演算原理は、第５の実施形態の演算原理と同じであるため、図５Ａを併せて参照されたい。
【０１１６】
第１２の実施形態のブロック復号化方法は、ステップＳ９００、Ｓ９０１、Ｓ９０３、Ｓ９０５、Ｓ１０１、Ｓ９０９、Ｓ９１１、Ｓ９１３およびＳ９１５を実行する。換言すれば、この実施形態が第１１の実施形態と異なる点は、この実施形態ではステップＳ９０７がステップＳ１０１に代わる点である。第１２の実施形態と第１１の実施形態との相違点のみを以下に詳述する。
【０１１７】
まず、ステップＳ９００を実行して第１のベクトルおよび第２のベクトルを得る。ステップＳ９００で得られた第１のベクトルおよび第２のベクトルは、電子暗号化ファイルを暗号化するためのブロック暗号化方法で使用した第１のベクトルおよび第２のベクトルと同じである。
その後、ステップＳ９０１を実行して電子暗号化ファイルを複数の暗号化ブロックに分割し、暗号化ブロックはシーケンスを有する。次に、各々の暗号化ブロックに対してシーケンスに合わせてステップＳ９０３、Ｓ９０５およびＳ１０１を実行し、暗号化ブロックがすべて処理されるまで行う。
【０１１８】
この実施形態では、各々の暗号化ブロックに対してステップＳ９０３およびＳ９０５を実行した後にステップＳ１０１を実行する。ステップＳ１０１では、メッセージブロックを生成する。メッセージブロックの値は、出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しい。
この実施形態では、ステップＳ１０１は、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロックと、出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応する入力ブロックとに対してＸＯＲ演算を実施することによってメッセージブロックを得る。
【０１１９】
暗号化ブロックの第１のブロックがステップＳ１０１で処理されるとき、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロックは、オールゼロベクトルであり、その暗号化ブロックの１つ前の暗号化ブロックに対応する入力ブロックは、第１のベクトルである。このほか、暗号化ブロックの第２のブロックがステップＳ１０１で処理されるとき、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロックは、第２のベクトルである。
【０１２０】
次に、ステップＳ９０９を実行する。同じように、暗号化ブロックがすべてステップＳ９０９で処理された後、この処理はステップＳ９１１およびＳ９１３またはステップＳ９１１およびＳ９１５に進む。
【０１２１】
同じように、この実施形態と一緒に用いたブロック暗号化方法が、暗号化ブロックに記憶した検査ベクトルを有するのではなく、生成した暗号化ブロックを用いて検査ベクトルを動的に生成する場合、この実施形態でも同じように検査ベクトルを生成する必要がある。
具体的には、ブロック復号化方法によってステップＳ９０１を実行した後、もう１つのステップ（図示せず）を実行して、暗号化ブロックの最後のブロックを排除した暗号化ブロックを用いて検査ベクトルを生成することができる。検査ベクトルは、前述の実施形態で説明したように生成され、これについてはここでこれ以上説明しない。
【０１２２】
前述のステップに加えて、第１２の実施形態も同じく、第５の実施形態に記載した演算および関数をすべて実行できる。第１２の実施形態がこのような演算および関数をどのように実行するのかについては、第５の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
【０１２３】
第１３の本発明の実施形態は、コンピュータに実装したブロック復号化方法であり、この方法のフローチャートを図１１に示している。このブロック復号化方法を実装するためのコンピュータは、前述のブロック復号化装置４であってよく、検査ベクトルおよび鍵とともに記憶される。また、この実施形態のブロック復号化方法は、第８から第１０の実施形態のブロック暗号化方法と一緒に用いられてよい。換言すれば、この実施形態のブロック復号化方法は、第８から第１０の実施形態で暗号化した電子暗号化ファイルを復号化できる。第１３の実施形態の演算原理は、第６の実施形態の演算原理と同じであるため、図６Ａを併せて参照されたい。
【０１２４】
まず、ステップＳ２００を実行して第１のベクトルおよび第２のベクトルを得る。ステップＳ２００で得られた第１のベクトルおよび第２のベクトルは、電子暗号化ファイルを暗号化するためのブロック暗号化方法で使用した第１のベクトルおよび第２のベクトルと同じである。その後、ステップＳ２０１を実行して電子暗号化ファイルを複数の暗号化ブロックに分割し、この暗号化ブロックは第１のシーケンスを有する。
暗号化ブロックの最後のブロックは、基準ベクトルとみなされる。次に、ステップＳ２０３を実行して暗号化ブロックの最後のブロックを排除する。次に、ステップＳ２０５では、暗号化ブロックを第１のシーケンスと逆である第２のシーケンスに合わせて再構成する。ステップＳ２０７では、第１のベクトルを暗号化ブロックの最後のブロックとして暗号化ブロックに加算する。
【０１２５】
次に、各々の暗号化ブロックに対して第２のシーケンスに合わせてステップＳ２０９、Ｓ２１１、Ｓ２１３およびＳ２１５を実行し、暗号化ブロックがすべて処理されるまで行う。ステップＳ２０９では、入力ブロックを生成する。入力ブロックの値は、暗号化ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックとに対してＸＯＲ演算を実施して得られた値に等しい。
この実施形態では、ステップＳ２０９は、暗号化ブロックと、その暗号化ブロックの１つ前の暗号化ブロックに対応するメッセージブロックとに対してＸＯＲ演算を実施して入力ブロックを生成する。暗号化ブロックの第１のブロックがステップＳ２０９で処理されるとき、その暗号化ブロックの１つ前の暗号化ブロックに対応する出力ブロックは、検査ベクトルであり、その暗号化ブロックの１つ前のブロックの前の暗号化ブロックは、オールゼロベクトルである。
暗号化ブロックの第２のブロックがステップＳ２０９で処理されるとき、その暗号化ブロックの１つ前の暗号化ブロックの前の暗号化ブロックは、基準ベクトルである。その後、ステップＳ２１１では、鍵および対称暗号化アルゴリズムを用いて入力ブロックを暗号化して出力ブロックを得る。この対称暗号化アルゴリズムは、第８から第１０の実施形態で用いた対称暗号化アルゴリズムと同じである。次に、ステップＳ２１３では、出力ブロックと、その暗号化ブロックの１つ前の暗号化ブロックとに対してＸＯＲ演算を実施してメッセージブロックを得る。
【０１２６】
その後、ステップＳ２１５では、未処理のメッセージブロックがあるかどうかを判断する。ステップＳ２１５の判断結果が「はい」であれば、その処理はステップＳ２０９に戻って次のメッセージブロックの処理を続行する。ステップＳ２１５の判断結果が「いいえ」であれば、メッセージブロックがすべて処理されたことを示し、その処理は、ステップＳ２１７に進んでメッセージブロックの最後のブロックを第２のベクトルと比較し、メッセージブロックの最後のブロックが第２のベクトルと同じかどうかを判断する。
ステップＳ２１７の判断結果が「はい」であれば、ステップＳ２１９を実行してメッセージブロックの最後のブロックを排除したのち、他のメッセージブロックを第２のシーケンスに合わせて逆に連結して復号化ファイルを生成する。ステップＳ２１７の判断結果が「いいえ」であれば、ステップＳ２２１を実行して電子暗号化ファイルを破棄する。
【０１２７】
同じように、この実施形態と一緒に用いたブロック暗号化方法が、暗号化ブロックに記憶した検査ベクトルを有するのではなく、生成した暗号化ブロックを用いて検査ベクトルを動的に生成する場合、この実施形態でも同じように検査ベクトルを生成する必要がある。具体的には、ブロック復号化方法によってステップＳ２０３を実行した後、もう１つのステップ（図示せず）を実行して、暗号化ブロックを用いて検査ベクトルを生成することができる。検査ベクトルは、前述の実施形態で説明したように生成されるが、これについてはここでこれ以上説明しない。
【０１２８】
前述のステップに加えて、第１３の実施形態も同じく、第６の実施形態に記載した演算および関数をすべて実行できる。第１３の実施形態がこのような演算および関数をどのように実行するのかについては、第６の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
【０１２９】
本発明の第１４の実施形態は、コンピュータに実装したブロック復号化方法であり、この方法のフローチャートを図１２に示している。第１４の実施形態の実施形態の演算原理は、第１３の実施形態の演算原理と同様だが、この実施形態ではいくつかのステップが本発明のブロック暗号化装置によって達成される点が異なる。第１４の実施形態と第１３の実施形態との相違点のみを以下に詳述する。理解しやすいように、図６Ｃを併せて参照されたい。
【０１３０】
同じように、この実施形態のブロック復号化方法はまず、ステップＳ２００、Ｓ２０１、Ｓ２０３、Ｓ２０５およびＳ２０７を実行する。次に、ステップＳ２３０を実行し、ブロック暗号化装置、検査ベクトル、基準ベクトルおよび鍵を用いて暗号化ブロックを暗号化して複数のメッセージブロックを得る。ステップＳ２３０が実行されるとき、ブロック暗号化装置に入力される第１のベクトルおよび第２のベクトルは、検査ベクトルおよび基準ベクトルに置換される。その後、ステップＳ２１７およびＳ２１９またはステップＳ２１７およびＳ２２１を実行する。
【０１３１】
図１２を図１１と比較するとわかるように、ステップＳ２０９、Ｓ２１１、Ｓ２１３およびＳ２１５は、ステップＳ２３０に代わっている。換言すれば、この実施形態ではブロック暗号化装置を用いて復号化効果を得るためには、データ位置を調整する必要があるだけである。
【０１３２】
同じように、この実施形態と一緒に用いたブロック暗号化方法が、暗号化ブロックに記憶した検査ベクトルを有するのではなく、生成した暗号化ブロックを用いて検査ベクトルを動的に生成する場合、この実施形態でも同じように検査ベクトルを生成する必要がある。具体的には、ブロック復号化方法によってステップＳ２０３を実行した後、もう１つのステップ（図示せず）を実行して、暗号化ブロックを用いて検査ベクトルを生成することができる。検査ベクトルは、前述の実施形態で説明したように生成されるが、これについてはここでこれ以上説明しない。
【０１３３】
前述のステップに加えて、第１４の実施形態も同じく、第７の実施形態に記載した演算および関数をすべて実行できる。第１４の実施形態がこのような演算および関数をどのように実行するのかについては、第７の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
【０１３４】
また、第８から第１４の実施形態に記載したブロック暗号化方法およびブロック復号化方法は、コンピュータプログラム製品によって実装されてよい。コンピュータプログラム製品が処理部にロードされ、コンピュータプログラム製品に含まれる複数のコードが実行されるとき、第８から第１４の実施形態のうちのいずれかに記載のブロック暗号化方法およびブロック復号化方法を実現できる。
前述のコンピュータプログラム製品は、ネットワークを通じて送信できるファイルであってもよいし、あるいは、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、フロッピーディスク、ハードディスク、コンパクトディスク、モバイルディスク、磁気テープ、ネットワークにアクセス可能なデータベース、または同一機能を有し当業者に公知のその他の任意の記録媒体のような有形のコンピュータ可読媒体に記憶されてもよい。
【０１３５】
実施形態の説明文からわかるように、本発明のブロック暗号化装置およびブロック暗号化方法は、電子ファイルに含まれる複数のメッセージブロックを、電子暗号化ファイルに含まれる複数の暗号化ブロックに複数レベルで結びつける。このように、電子暗号化ファイルの暗号化ブロックのうちのいずれか１つが改竄された（または誤って送信された）場合、復号化装置および復号化方法によって電子暗号化ファイルを復号化して得られたメッセージブロックの最後のブロックの内容は、偽である。
メッセージブロックの最後のブロックが何であるはずかがわかるため、復号化装置および復号化方法は、電子暗号化ファイルの完全性が損なわれたことに気づくことができ、それによって電子暗号化ファイルを破棄できる。したがって、本発明によって開示した技術は、メッセージ認証コード演算を実施することなく暗号化および復号化を効果的に達成できる一方で、引き続き機密性、完全性およびソース認証という３つの基本的な安全要件を満たすものである。
【０１３６】
以上の開示は、本開示の詳細な技術的内容および発明性のある特徴に関するものである。当業者は、本発明の特徴を逸脱しない限り、記載したような本発明の開示および提示に基づいて様々な修正および置換を加えてよい。ただし、そのような修正および置換が上記の説明文に完全に開示されていないとしても、そのような修正および置換は実質的に以下の添付した特許請求の範囲に含まれている。
【図１Ａ】
0005855696.tif 000012
【図１Ｂ】
0005855696.tif 000013
【図１Ｃ】
0005855696.tif 000014
【図１Ｄ】
0005855696.tif 000015
【図２Ａ】
0005855696.tif 000016
【図２Ｂ】
0005855696.tif 000017
【図２Ｃ】
0005855696.tif 000018
【図３Ａ】
0005855696.tif 000019
【図３Ｂ】
0005855696.tif 000020
【図３Ｃ】
0005855696.tif 000021
【図４Ａ】
0005855696.tif 000022
【図４Ｂ】
0005855696.tif 000023
【図４Ｃ】
0005855696.tif 000024
【図５Ａ】
0005855696.tif 000025
【図５Ｂ】
0005855696.tif 000026
【図６Ａ】
0005855696.tif 000027
【図６Ｂ】
0005855696.tif 000028
【図６Ｃ】
0005855696.tif 000029
【図７】
0005855696.tif 000030
【図８Ａ】
0005855696.tif 000031
【図８Ｂ】
0005855696.tif 000032
【図９】
0005855696.tif 000033
【図１０】
0005855696.tif 000034
【図１１】
0005855696.tif 000035
【図１２】
0005855696.tif 000036