(57)【要約】【課題】暗号化の最中に他のデータの暗号化を行うために、暗号鍵Ｋを用いた暗号化モジュール５１からセレクタ５４にフィードバックするフィードバックライン６５に対して並列に設けられたメモリ５５を配置する。【解決手段】平文ブロックデータＭi を処理中に他のデータの平文ブロックデータＮi を処理する割り込みＩＴが発生した場合には、割り込みＩＴが発生したときの暗号文ブロックデータＣiをレジスタ５６に記憶させ、平文ブロックデータＮi の処理が終了した時点でメモリ５５に記憶した暗号文ブロックデータＣiをセレクタ５４に選択させることにより平文ブロックデータＭi+1 の処理を開始する。【選択図】図１
2007184000.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の平文ブロックデータからなる平文を暗号化ユニット暗号文にし、暗号文に対して暗号文の完全性を保証するための認証子を生成する暗号化装置において、
平文ブロックデータを暗号化ユニットにより暗号化したときに暗号化ユニットが出力した暗号文ブロックデータＣi を暗号化ユニットへフィードバックする第１のフィードバックループを有し、平文ブロックデータを入力し、第１のフィードバックループにより暗号文ブロックデータＣiをフィードバックさせ暗号化処理を行い、暗号文ブロックデータを出力する暗号化部と、
認証子演算途中結果をフィードバックする第２のフィードバックループを有し、暗号化部から暗号文ブロックデータが出力されるたびに暗号文ブロックデータを入力し、データ処理を行い、第２のフィードバックループにより認証子演算途中結果をフィードバックさせ、暗号文の完全性を保証するための認証子を生成する認証子生成部と
を備えたことを特徴とする暗号化装置。
【請求項２】
上記暗号化部と認証子生成部とは、１つの暗号化モジュールと、１つのフィードバックループとを兼用して暗号化処理と認証子生成処理とを交互に行うとともに、
上記１つのフィードバックループは、
暗号化処理と認証子生成処理との結果をそれぞれ記録し出力するメモリと、
暗号化処理と認証生成処理とを交互に実行するために、メモリから暗号化処理と認証子生成処理との結果を交互に選択して暗号化モジュールに出力するセレクタと
を備えたことを特徴とする請求項１記載の暗号化装置。
【請求項３】
１つ以上の平文ブロックデータからなる平文を暗号化ユニットにより暗号文にし、暗号文に対して暗号文の完全性を保証するための認証子を生成する暗号化方法において、
平文ブロックデータを暗号化ユニットにより暗号化したときに暗号化ユニットが出力した暗号文ブロックデータＣi を暗号化ユニットへフィードバックする第１のフィードバック工程を有し、平文ブロックデータを入力し、第１のフィードバックループにより暗号文ブロックデータＣiをフィードバックさせ暗号化処理を行い、暗号文ブロックデータを出力する暗号化工程と、
認証子演算途中結果をフィードバックする第２のフィードバック工程を有し、暗号化工程から暗号文ブロックデータが出力されるたびに暗号文ブロックデータを入力し、データ処理を行い、第２のフィードバック工程により認証子演算途中結果をフィードバックさせ、暗号文の完全性を保証するための認証子を生成する認証子生成工程と
を備えたことを特徴とする暗号化方法。
【請求項４】
１つ以上の暗号文ブロックデータからなる暗号文を平文に復号し、かつ、暗号文に対して暗号文の完全性を確認するための認証子を生成する復号装置において、
復号モジュールによりデータを復号したときに生成したモジュール出力ブロックデータＴi を復号モジュールへフィードバックする第１のフィードバックループを有し、暗号文ブロックデータを入力し、第１のフィードバックループによりモジュール出力ブロックデータＴiをフィードバックさせ復号処理を行い、平文ブロックデータを出力する復号部と、
認証子演算途中結果をフィードバックする第２のフィードバックループを有し、復号部に入力される暗号文ブロックデータと同一の暗号文ブロックデータを入力し、データ処理を行い認証子演算途中結果を出力し、第２のフィードバックループにより認証子演算途中結果をフィードバックさせ、暗号文の完全性を確認するための認証子を生成する認証子生成部と
を備えたことを特徴とする復号装置。
【請求項５】
上記復号部と認証子生成部とは、１つの復号モジュールと、１つのフィードバックループとを兼用して復号処理と認証子生成処理とを交互に行うとともに、
上記１つのフィードバックループは、
復号処理と認証子生成処理との結果をそれぞれ記録し出力するメモリと、
復号処理と認証生成処理とを交互に実行するために、メモリから復号処理と認証子生成処理との結果を交互に選択して復号モジュールに出力するセレクタと
を備えたことを特徴とする請求項４記載の復号装置。
【請求項６】
１つ以上の暗号文ブロックデータからなる暗号文を平文に復号し、かつ、暗号文に対して暗号文の完全性を確認するための認証子を生成する復号方法において、
復号モジュールによりデータを復号したときに生成したモジュール出力ブロックデータＴi を復号モジュールへフィードバックする第１のフィードバック工程を有し、暗号文ブロックデータを入力し、第１のフィードバックループによりモジュール出力ブロックデータＴiをフィードバックさせ復号処理を行い、平文ブロックデータを出力する復号工程と、
認証子演算途中結果をフィードバックする第２のフィードバック工程を有し、復号工程に入力される暗号文ブロックデータと同一の暗号文ブロックデータを入力し、データ処理を行い認証子演算途中結果を出力し、第２のフィードバック工程により認証子演算途中結果をフィードバックさせ、暗号文の完全性を確認するための認証子を生成する認証子生成工程と
を備えたことを特徴とする復号方法。
【請求項７】
１つ以上の平文ブロックデータからなる平文を暗号化モジュールにより暗号文にし、暗号文に対して暗号文の完全性を保証するための認証子を生成する暗号化装置において、
平文ブロックデータを暗号化モジュールにより暗号化したときに暗号化モジュールが出力したモジュール出力ブロックデータＴi を暗号化モジュールへフィードバックする第１のフィードバックループを有し、平文ブロックデータを入力し、第１のフィードバックループによりモジュール出力ブロックデータＴiをフィードバックさせ暗号化処理を行い、暗号文ブロックデータを出力する暗号化部と、
認証子演算途中結果をフィードバックする第２のフィードバックループを有し、暗号化部から暗号文ブロックデータが出力されるたびに暗号文ブロックデータを入力し、データ処理を行い、第２のフィードバックループにより認証子演算途中結果をフィードバックさせ、暗号文の完全性を保証するための認証子を生成する認証子生成部と
を備えたことを特徴とする暗号化装置。
【請求項８】
上記暗号化部と認証子生成部とは、１つの暗号化モジュールと、１つのフィードバックループとを兼用して暗号化処理と認証子生成処理とを交互に行うとともに、
上記１つのフィードバックループは、
暗号化処理と認証子生成処理との結果をそれぞれ記録し出力するメモリと、
暗号化処理と認証生成処理とを交互に実行するために、メモリから暗号化処理と認証子生成処理との結果を交互に選択して暗号化モジュールに出力するセレクタと
を備えたことを特徴とする請求項７記載の暗号化装置。
【請求項９】
１つ以上の平文ブロックデータからなる平文を暗号化モジュールにより暗号文にし、暗号文に対して暗号文の完全性を保証するための認証子を生成する暗号化方法において、
平文ブロックデータを暗号化モジュールにより暗号化したときに暗号化モジュールが出力したモジュール出力ブロックデータＴi を暗号化モジュールへフィードバックする第１のフィードバック工程を有し、平文ブロックデータを入力し、第１のフィードバックループによりモジュール出力ブロックデータＴiをフィードバックさせ暗号化処理を行い、暗号文ブロックデータを出力する暗号化工程と、
認証子演算途中結果をフィードバックする第２のフィードバック工程を有し、暗号化工程から暗号文ブロックデータが出力されるたびに暗号文ブロックデータを入力し、データ処理を行い、第２のフィードバック工程により認証子演算途中結果をフィードバックさせ、暗号文の完全性を保証するための認証子を生成する認証子生成工程と
を備えたことを特徴とする暗号化方法。
【請求項１０】
１つ以上の暗号文ブロックデータからなる暗号文を復号ユニットにより平文に復号し、かつ、暗号文に対して暗号文の完全性を確認するための認証子を生成する復号装置において、
暗号文ブロックデータＣi を復号ユニットへフィードバックする第１のフィードバックループを有し、暗号文ブロックデータを入力し、第１のフィードバックループにより暗号文ブロックデータＣiをフィードバックさせ復号処理を行い、平文ブロックデータを出力する復号部と、
認証子演算途中結果をフィードバックする第２のフィードバックループを有し、復号部に入力される暗号文ブロックデータと同一の暗号文ブロックデータを入力し、データ処理を行い認証子演算途中結果を出力し、第２のフィードバックループにより認証子演算途中結果をフィードバックさせ、暗号文の完全性を確認するための認証子を生成する認証子生成部と
を備えたことを特徴とする復号装置。
【請求項１１】
上記復号部と認証子生成部とは、１つの復号モジュールと、１つのフィードバックループとを兼用して復号処理と認証子生成処理とを交互に行うとともに、
上記１つのフィードバックループは、
復号処理と認証子生成処理との結果をそれぞれ記録し出力するメモリと、
復号処理と認証生成処理とを交互に実行するために、メモリから復号処理と認証子生成処理との結果を交互に選択して復号モジュールに出力するセレクタと
を備えたことを特徴とする請求項１０記載の復号装置。
【請求項１２】
１つ以上の暗号文ブロックデータからなる暗号文を復号ユニットにより平文に復号し、かつ、暗号文に対して暗号文の完全性を確認するための認証子を生成する復号方法において、
暗号文ブロックデータＣi を復号ユニットへフィードバックする第１のフィードバック工程を有し、暗号文ブロックデータを入力し、第１のフィードバックループにより暗号文ブロックデータＣiをフィードバックさせ復号処理を行い、平文ブロックデータを出力する復号工程と、
認証子演算途中結果をフィードバックする第２のフィードバック工程を有し、復号工程に入力される暗号文ブロックデータと同一の暗号文ブロックデータを入力し、データ処理を行い認証子演算途中結果を出力し、第２のフィードバック工程により認証子演算途中結果をフィードバックさせ、暗号文の完全性を確認するための認証子を生成する認証子生成工程と
を備えたことを特徴とする復号方法。
【請求項１３】
上記請求項３記載の暗号化方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１４】
上記請求項６記載の復号方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１５】
上記請求項９記載の暗号化方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１６】
上記請求項１２記載の復号方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１７】
データを入力して暗号化し、暗号データを出力する暗号化部と、
暗号化部が出力した暗号データを入力して暗号文の完全性を保証するための認証子を生成する認証子生成部と
を備え、
認証子生成部は、暗号化部によるデータの暗号化が完了する前に認証子の生成を開始することを特徴とする暗号化装置。
【請求項１８】
データを入力して復号し、復号データを出力する復号部と、
復号部が入力したデータを入力して暗号文の完全性を保証するための認証子を生成する認証子生成部と
を備え、
認証子生成部は、復号部によるデータの復号が完了する前に認証子の生成を開始することを特徴とする復号装置。
【請求項１９】
データを入力して暗号化し、暗号データを出力する暗号化工程と、
暗号化工程が出力した暗号データを入力して暗号文の完全性を保証するための認証子を生成する認証子生成工程と
を備え、
認証子生成工程は、暗号化工程によるデータの暗号化が完了する前に認証子の生成を開始することを特徴とする暗号化方法。
【請求項２０】
データを入力して復号し、復号データを出力する復号工程と、
復号工程が入力したデータを入力して暗号文の完全性を保証するための認証子を生成する認証子生成工程と
を備え、
認証子生成工程は、復号工程によるデータの復号が完了する前に認証子の生成を開始することを特徴とする復号方法。
【請求項２１】
上記請求項１９記載の暗号化方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項２２】
上記請求項２０記載の復号方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、暗号化復号装置及び暗号化復号方法に関するものである。特に、データの暗号化復号の最中に他のデータの暗号化復号ができる発明に関するものである。
【背景技術】
【０００２】
図４３は、Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ  Ｍｏｄｅ（以下、ＣＢＣモードという）による暗号化装置を示す図である。
【０００３】
図４３に示すＣＢＣモードでの暗号方法は、６４ビットの平文ブロックデータＭi をブロック単位で入力して、暗号鍵Ｋを用いた暗号化モジュール５１により暗号化し、更に、この暗号化された暗号文ブロックデータＣiと次の平文ブロックデータＭi+1 との排他的論理和を演算し、排他的論理和の演算結果を次の暗号化の入力として、暗号鍵Ｋを用いた暗号化モジュール５１に供給することにより暗号化する方法である。そして、この処理を繰り返して次々と連鎖させることにより、平文Ｍ全体を暗号文Ｃに暗号化するものである。
【０００４】
図４４は、ＣＢＣモードを用いた復号装置を示す図である。
【０００５】
図４４に示す復号装置は、図４３に示す暗号化装置により暗号化された暗号文を復号する装置である。暗号文ブロックデータＣ1 が暗号鍵Ｋを用いた復号モジュール７１に入力され、イニシャルバリューＩＶとの排他的論理和が計算され、平文ブロックデータＭ1が復号される。暗号文ブロックデータＣ2 が入力された場合には、暗号鍵Ｋを用いた復号モジュール７１で復号され、先に入力され、レジスタ１１１に保存された暗号文ブロックデータＣ1との排他的論理和がとられ、平文ブロックデータＭ2 を復号する。
【０００６】
なお、レジスタ１１１は、セレクタ７３の内部に設けられていてもよい。
【０００７】
平文ブロックデータをＭi（ｉ＝１，２，・・・，ｎ）、暗号文ブロックデータＣi （ｉ＝１，２，・・・，ｎ）とし、暗号鍵Ｋを用いた暗号化処理をＥK、暗号鍵Ｋを用いた復号処理をＤK とすると、ＣＢＣモードは次式で表される。
【０００８】
Ｃ1 ＝ＥK （Ｍ1 ＥＸＲ  ＩＶ）
Ｃi ＝ＥK （Ｍi ＥＸＲ  Ｃi-1 ）（ｉ＝２，３，・・・，ｎ）
Ｍ1 ＝ＤK （Ｃ1 ）ＥＸＲ  ＩＶ
Ｍi ＝ＤK （Ｃi ）ＥＸＲ  Ｃi-1 （ｉ＝２，３，・・・，ｎ）
ここで、ＥＸＲは排他的論理和演算である。また、ＩＶ（Ｉｎｔｉａｌ  Ｖａｌｕｅ）は初期値であり、最初の暗号化と復号の際に用いられる。イニシャルバリューＩＶは、暗号化側と復号側で同一の値を用いる。
【０００９】
図４５は、Ｏｕｔｐｕｔ  Ｆｅｅｄｂａｃｋ  Ｍｏｄｅ（以下、ＯＦＢモードという）の暗号化装置を示す図である。
【００１０】
図４６は、ＯＦＢモードの復号装置を示す図である。
【００１１】
図４７は、Ｃｉｐｈｅｒ  Ｆｅｅｄｂａｃｋ  Ｍｏｄｅ（以下、ＣＦＢモードという）の暗号化装置を示す図である。
【００１２】
図４８は、ＣＦＢモードの復号装置を示す図である。
【００１３】
なお、レジスタ１１１は、セレクタ７３の内部に設けられていてもよい。
【００１４】
図４９は、ＣＢＣモードの暗号化装置を用いて平文Ｍと平文Ｎを暗号化する手順を示す図である。
【００１５】
ここでは、平文Ｍが平文ブロックデータＭ1 ，平文ブロックデータＭ2 ，平文ブロックデータＭ3から構成されており、平文Ｎが平文ブロックデータＮ1 のみで構成されている場合を説明する。
【００１６】
平文ブロックデータＭ1 の暗号化がスタートすると、暗号文ブロックデータＣ1 が出力されるとともに、暗号文ブロックデータＣ1は、平文ブロックデータＭ2 の暗号化に用いられる。このように、暗号文ブロックデータＣi は、平文ブロックデータＭi+1の暗号化にフィードバックされて連鎖処理が行われる。従って、平文ブロックデータＭ1 から平文ブロックデータＭ3 までの暗号化が終わらなければ、平文ブロックデータＮ1の暗号化を行うことができない。
【００１７】
図５０は、図４９と同様に、ＣＢＣモードで暗号化を行う場合を示している。
【００１８】
図５０の場合は、平文ブロックデータＭ1 、平文ブロックデータＭ2 、平文ブロックデータＭ3の各データが準備されるのに時間がかかってしまう場合を示している。一方、暗号化処理は、次の平文ブロックデータＭi+1 が準備できる前に終了しており、アイドル時間（例えば、Ｔ１〜Ｔ２、Ｔ３〜Ｔ４の時間）が発生してしまう場合を示している。このように、アイドル時間が発生する場合でも、暗号文ブロックデータＣiが次の平文ブロックデータＭi+1 にフィードバックされる連鎖処理を行わなければならないため、平文ブロックデータＮ1の処理は平文ブロックデータＭ3 の処理が終了してからでなければ行えない。
【００１９】
図５１は、データの秘匿処理とデータの完全性を保証する処理を示す図である。平文Ｍは、例えば、ＯＦＢモードの暗号装置により暗号文Ｃに暗号化される。ＣＢＣモードの暗号装置により認証子Ｐが演算され、暗号文Ｃの最後に認証子Ｐが付加される。暗号化され、かつ、認証子Ｐが付加されたデータを受信した場合には、暗号文Ｃから平文ＭをＯＦＢモードの復号装置により復号するとともに、暗号文ＣからＣＢＣモードの復号装置により認証子Ｐを演算し、伝送されてきた認証子Ｐと同一か否かを比較することにより、伝送されてきたＣが改竄されていないことを確認することができる。
【００２０】
図５２は、図５１に示した秘匿処理と認証子演算処理の手順を示す図である。
【００２１】
平文ブロックデータＭ1 〜平文ブロックデータＭ3 は、順に暗号文ブロックデータＣ1 〜暗号文ブロックデータＣ3に暗号化される。その後、暗号文ブロックデータＣ1 〜暗号文ブロックデータＣ3 を順に入力して認証子Ｐが演算される。
【特許文献１】特開平９−２９８７３６号公報
【発明の開示】
【発明が解決しようとする課題】
【００２２】
図４２〜図４８に示した各モードの暗号化装置及び復号装置は、前のブロックデータの暗号化復号されたデータをフィードバックさせて次のブロックデータの暗号化復号処理に利用しなければならないため、一旦暗号化処理又は復号処理がスタートしてしまうと、その全体の処理が終了しない限り、他の暗号化処理又は復号処理をスタートさせることができないという課題があった。従って、先にスタートした暗号化復号処理が長時間要するものである場合には、後からスタートする暗号化復号処理が長時間待たされてしまうという課題があった。
【００２３】
また、暗号化復号されるデータが準備される時間に比べて、暗号化復号処理に要する時間が短い場合には、暗号化復号化装置にアイドル時間が発生してしまうという課題があった。
【００２４】
また、秘匿処理と完全性保証処理を行う場合には、秘匿処理を行ってから完全性保証処理を行わなければならず、処理時間がかかってしまうという課題があった。
【００２５】
この発明の好適な実施の形態においては、あるデータの暗号化復号処理の最中に他のデータの暗号化復号処理を行える暗号化装置、復号装置及び暗号化方法及び復号方法を得ることを目的とする。
【００２６】
また、この発明の好適な実施の形態においては、優先度の高いデータの暗号化復号を優先的に行えるようにすることを目的とする。
【００２７】
また、この発明の好適な実施の形態においては、秘匿処理と完全性保証処理を並列的に高速に行えるようにすることを目的とする。
【課題を解決するための手段】
【００２８】
この発明に係る暗号化装置は、第１の処理データと、第２の処理データとの暗号化処理をする暗号化装置において、
暗号化処理の状態を記憶するメモリを備え、
第１の処理データの暗号化処理が完了する前に第２の処理データの暗号化処理を開始するとともに、第２の処理データの暗号化処理を開始する場合に第１の処理データの暗号化処理の状態を上記メモリに記憶させ、第１の処理データの暗号化処理を再開する場合に、暗号化装置の暗号化処理の状態を、メモリに記憶した第１の処理データの暗号化処理の状態に復帰させてから第１の処理データの暗号化処理を再開することを特徴とする。
【００２９】
上記暗号化装置は、第２の処理データの暗号処理の完了する前に第１の処理データの暗号化処理を再開するとともに、上記メモリは、第１の処理データの暗号化処理を再開する場合に第２の処理データの暗号化処理状態を記憶し、第２の処理データの暗号化処理を再開する場合は、暗号化装置の暗号化処理の状態を、メモリに記憶した第２の処理データの暗号化処理の状態に復帰させてから第２の処理データの暗号化処理を再開することを特徴とする。
【００３０】
上記第１の処理データは、第１の平文であり、上記第２の処理データは、第２の平文であることを特徴とする。
【００３１】
上記暗号化装置は、割り込みにより第２の処理データの暗号化処理を開始することを特徴とする。
【００３２】
この発明に係る暗号化装置は、平文Ｍを構成する平文ブロックデータＭi （ｉ＝１，２，３，・・・）と平文Ｎを構成する平文ブロックデータＮj（ｊ＝１，２，３，・・・）とを暗号化する暗号化装置において、
平文Ｍの暗号化処理中に平文Ｎの暗号化要求を平文Ｍの暗号化処理完了前に受け付けるメカニズムと、
平文ブロックデータＭi の暗号化処理を行い暗号文ブロックデータＣi を出力する暗号化ユニットと、
暗号化ユニットから出力された暗号文ブロックデータＣi をフィードバックラインを介し暗号化ユニットにフィードバックするフィードバックループと、
フィードバックループのフィードバックラインと並列に設けられ、上記平文Ｎの暗号化要求を受け付け、平文Ｎのいずれかの平文ブロックデータの暗号化処理を開始することにより、上記平文ブロックデータＭi+1が平文ブロックデータＭi の次に続けて暗号化されない場合、フィードバックされる暗号文ブロックデータＣi を記憶するメモリと、
平文ブロックデータＭi+1 が平文ブロックデータＭi の次に続けて暗号化される場合は、上記フィードバックループのフィードバックラインによりフィードバックされる暗号文ブロックデータＣiを選択してフィードバックループに供給し、上記平文ブロックデータＭi+1 が平文ブロックデータＭi の次に続けて暗号化されず、平文Ｎのいずれかの平文ブロックデータの次に暗号化される場合は、上記メモリに記憶された暗号文ブロックデータＣiを選択してフィードバックループに供給するセレクタと
を備えたことを特徴とする。
【００３３】
上記メモリは、
複数の平文に対応した複数のレジスタと、
暗号化処理をする平文に対応してレジスタを切り替えるスイッチと
を備えたことを特徴とする。
【００３４】
この発明に係る暗号化方法は、暗号化モジュールから出力される暗号文ブロックデータＣi （ｉ＝１，２，３，・・・）を用いて第１の平文Ｍの平文ブロックデータＭi（ｉ＝１，２，３，・・・）を暗号化する工程と、
上記平文ブロックデータＭi を暗号化している途中で又は平文ブロックデータＭi を暗号化した後に、第１の平文Ｍの平文ブロックデータＭi+1の暗号化に用いられる暗号文ブロックデータＣi をメモリに記憶する工程と、
上記平文ブロックデータＭi+1 の暗号化に用いられる暗号文ブロックデータＣi をメモリに記憶した後に、第２の平文Ｎの少なくとも１つの平文ブロックデータを暗号化する工程と、
上記第２の平文Ｎの少なくとも１つの平文ブロックデータを暗号化した後に、メモリに記憶された、平文ブロックデータＭi+1 の暗号化に用いられる暗号文ブロックデータＣiを入力し、暗号化モジュールを用いて第１の平文Ｍの平文ブロックデータＭi+1 を暗号化する工程と
を備えたことを特徴とする。
【００３５】
この発明に係る暗号化装置は、１つ以上の平文ブロックデータからなる平文を暗号化ユニット暗号文にし、暗号文に対して暗号文の完全性を保証するための認証子を生成する暗号化装置において、
平文ブロックデータを暗号化ユニットにより暗号化したときに暗号化ユニットが出力した暗号文ブロックデータＣi を暗号化ユニットへフィードバックする第１のフィードバックループを有し、平文ブロックデータを入力し、第１のフィードバックループにより暗号文ブロックデータＣiをフィードバックさせ暗号化処理を行い、暗号文ブロックデータを出力する暗号化部と、
認証子演算途中結果をフィードバックする第２のフィードバックループを有し、暗号化部から暗号文ブロックデータが出力されるたびに暗号文ブロックデータを入力し、データ処理を行い、第２のフィードバックループにより認証子演算途中結果をフィードバックさせ、暗号文の完全性を保証するための認証子を生成する認証子生成部と
を備えたことを特徴とする。
【００３６】
上記暗号化部と認証子生成部とは、１つの暗号化モジュールと、１つのフィードバックループとを兼用して暗号化処理と認証子生成処理とを交互に行うとともに、
上記１つのフィードバックループは、
暗号化処理と認証子生成処理との結果をそれぞれ記録し出力するメモリと、
暗号化処理と認証生成処理とを交互に実行するために、メモリから暗号化処理と認証子生成処理との結果を交互に選択して暗号化モジュールに出力するセレクタと
を備えたことを特徴とする。
【００３７】
この発明に係る暗号化方法は、１つ以上の平文ブロックデータからなる平文を暗号化ユニットにより暗号文にし、暗号文に対して暗号文の完全性を保証するための認証子を生成する暗号化方法において、
平文ブロックデータを暗号化ユニットにより暗号化したときに暗号化ユニットが出力した暗号文ブロックデータＣi を暗号化ユニットへフィードバックする第１のフィードバック工程を有し、平文ブロックデータを入力し、第１のフィードバックループにより暗号文ブロックデータＣiをフィードバックさせ暗号化処理を行い、暗号文ブロックデータを出力する暗号化工程と、
認証子演算途中結果をフィードバックする第２のフィードバック工程を有し、暗号化工程から暗号文ブロックデータが出力されるたびに暗号文ブロックデータを入力し、データ処理を行い、第２のフィードバック工程により認証子演算途中結果をフィードバックさせ、暗号文の完全性を保証するための認証子を生成する認証子生成工程と
を備えたことを特徴とする。
【００３８】
この発明に係る復号装置は、第１の処理データと、第２の処理データとの復号処理をする復号装置において、
復号処理の状態を記憶するメモリを備え、
第１の処理データの復号処理が完了する前に第２の処理データの復号処理を開始するとともに、第２の処理データの復号処理を開始する場合に第１の処理データの復号処理の状態を上記メモリに記憶させ、第１の処理データの復号処理を再開する場合に、復号装置の復号処理の状態を、メモリに記憶した第１の処理データの復号処理の状態に復帰させてから第１の処理データの復号処理を再開することを特徴とする。
【００３９】
上記復号装置は、第２の処理データの復号処理の完了する前に第１の処理データの復号処理を再開するとともに、上記メモリは、第１の処理データの復号処理を再開する場合に第２の処理データの復号処理状態を記憶し、第２の処理データの復号処理を再開する場合は、復号装置の復号処理の状態を、メモリに記憶した第２の処理データの復号処理の状態に復帰させてから第２の処理データの復号処理を再開することを特徴とする。
【００４０】
上記第１の処理データは、第１の暗号文であり、上記第２の処理データは、第２の暗号文であることを特徴とする。
【００４１】
上記復号装置は、割り込みにより第２の処理データの最初のブロックデータの復号処理を開始することを特徴とする。
【００４２】
この発明に係る復号装置は、暗号文Ｃを構成する暗号文ブロックデータＣi （ｉ＝１，２，３，・・・）と暗号文Ｄを構成する暗号文ブロックデータＤj（ｊ＝１，２，３，・・・）とを復号する復号装置において、
暗号文Ｃの復号処理中に暗号文Ｄの復号要求を任意の時点で受け付けるメカニズムと、
暗号文ブロックデータＣi の復号処理を行い平文ブロックデータＭi を出力する復号ユニットと、
暗号文ブロックデータＣi+1 を復号するための暗号文ブロックデータＣi をフィードバックラインを介し復号ユニットにフィードバックするフィードバックループと、
フィードバックループのフィードバックラインと並列に設けられ、上記暗号文Ｄの復号要求を受け付け、暗号文Ｄのいずれかの暗号文ブロックデータの復号処理を開始することにより、上記暗号文ブロックデータＣi+1が暗号文ブロックデータＣi の次に続けて復号されない場合、フィードバックされる暗号文ブロックデータＣi を記憶するメモリと、
暗号文ブロックデータＣi+1 が暗号文ブロックデータＣi の次に続けて復号される場合は、上記フィードバックループのフィードバックラインによりフィードバックされる暗号文ブロックデータＣiを選択してフィードバックループに供給し、上記暗号文ブロックデータＣi+1 が暗号文ブロックデータＣi の次に続けて復号されず、暗号文Ｄのいずれかの暗号文ブロックデータの次に復号される場合は、上記メモリに記憶された暗号文ブロックデータＣiを選択してフィードバックループに供給するセレクタと
を備えたことを特徴とする。
【００４３】
上記メモリは、
複数の暗号文に対応した複数のレジスタと、
復号処理をする暗号文に対応してレジスタを切り替えるスイッチと
を備えたことを特徴とする。
【００４４】
この発明に係る復号方法は、復号モジュールを用いて第１の暗号文Ｃの暗号文ブロックデータＣi （ｉ＝１，２，３，・・・）を復号する工程と、
上記暗号文ブロックデータＣi を復号している途中で又は暗号文ブロックデータＣi を復号した後に、第１の暗号文Ｃの暗号文ブロックデータＣi+1の復号に用いられる暗号文ブロックデータＣi をメモリに記憶する工程と、
上記暗号文ブロックデータＣi+1 の復号に用いられる暗号文ブロックデータＣi をメモリに記憶した後に、第２の暗号文Ｄの少なくとも１つの暗号文ブロックデータを復号する工程と、
上記第２の暗号文Ｄの少なくとも１つの暗号文ブロックデータを復号した後に、メモリに記憶された、暗号文ブロックデータＣi+1 の復号に用いられる暗号文ブロックデータＣiを入力し、復号モジュールを用いて第１の暗号文Ｃの暗号文ブロックデータＣi+1 を復号する工程と
を備えたことを特徴とする。
【００４５】
この発明に係る復号装置は、１つ以上の暗号文ブロックデータからなる暗号文を平文に復号し、かつ、暗号文に対して暗号文の完全性を確認するための認証子を生成する復号装置において、
復号モジュールによりデータを復号したときに生成したモジュール出力ブロックデータＴi を復号モジュールへフィードバックする第１のフィードバックループを有し、暗号文ブロックデータを入力し、第１のフィードバックループによりモジュール出力ブロックデータＴiをフィードバックさせ復号処理を行い、平文ブロックデータを出力する復号部と、
認証子演算途中結果をフィードバックする第２のフィードバックループを有し、復号部に入力される暗号文ブロックデータと同一の暗号文ブロックデータを入力し、データ処理を行い認証子演算途中結果を出力し、第２のフィードバックループにより認証子演算途中結果をフィードバックさせ、暗号文の完全性を確認するための認証子を生成する認証子生成部と
を備えたことを特徴とする。
【００４６】
上記復号部と認証子生成部とは、１つの復号モジュールと、１つのフィードバックループとを兼用して復号処理と認証子生成処理とを交互に行うとともに、
上記１つのフィードバックループは、
復号処理と認証子生成処理との結果をそれぞれ記録し出力するメモリと、
復号処理と認証生成処理とを交互に実行するために、メモリから復号処理と認証子生成処理との結果を交互に選択して復号モジュールに出力するセレクタと
を備えたことを特徴とする。
【００４７】
この発明に係る復号方法は、１つ以上の暗号文ブロックデータからなる暗号文を平文に復号し、かつ、暗号文に対して暗号文の完全性を確認するための認証子を生成する復号方法において、
復号モジュールによりデータを復号したときに生成したモジュール出力ブロックデータＴi を復号モジュールへフィードバックする第１のフィードバック工程を有し、暗号文ブロックデータを入力し、第１のフィードバックループによりモジュール出力ブロックデータＴiをフィードバックさせ復号処理を行い、平文ブロックデータを出力する復号工程と、
認証子演算途中結果をフィードバックする第２のフィードバック工程を有し、復号工程に入力される暗号文ブロックデータと同一の暗号文ブロックデータを入力し、データ処理を行い認証子演算途中結果を出力し、第２のフィードバック工程により認証子演算途中結果をフィードバックさせ、暗号文の完全性を確認するための認証子を生成する認証子生成工程と
を備えたことを特徴とする。
【００４８】
この発明に係る暗号化装置は、平文Ｍを構成する平文ブロックデータＭi （ｉ＝１，２，３，・・・）と平文Ｎを構成する平文ブロックデータＮj（ｊ＝１，２，３，・・・）とを暗号化する暗号化装置において、
平文Ｍの暗号化処理中に平文Ｎの暗号化要求を平文Ｍの暗号化処理完了前に受け付けるメカニズムと、
暗号化処理を行ったデータをモジュール出力ブロックデータＴi として出力する暗号化モジュールと、
暗号化モジュールから出力されたモジュール出力ブロックデータＴi をフィードバックラインを介し暗号化モジュールにフィードバックするフィードバックループと、
フィードバックループのフィードバックラインと並列に設けられ、上記平文Ｎの暗号化要求を受け付け、平文Ｎのいずれかの平文ブロックデータの暗号化処理を開始することにより、上記平文ブロックデータＭi+1が平文ブロックデータＭi の次に続けて暗号化されない場合、フィードバックされるモジュール出力ブロックデータＴi を記憶するメモリと、
平文ブロックデータＭi+1 が平文ブロックデータＭi の次に続けて暗号化される場合は、上記フィードバックループのフィードバックラインによりフィードバックされるモジュール出力ブロックデータＴiを選択してフィードバックループに供給し、上記平文ブロックデータＭi+1 が平文ブロックデータＭi の次に続けて暗号化されず、平文Ｎのいずれかの平文ブロックデータの次に暗号化される場合は、上記メモリに記憶されたモジュール出力ブロックデータＴiを選択してフィードバックループに供給するセレクタと
を備えたことを特徴とする。
【００４９】
上記メモリは、
複数の平文に対応した複数のレジスタと、
暗号化処理をする平文に対応してレジスタを切り替えるスイッチと
を備えたことを特徴とする。
【００５０】
この発明に係る暗号化方法は、暗号化モジュールから出力されるモジュール出力ブロックデータＴi （ｉ＝１，２，３，・・・）を用いて第１の平文Ｍの平文ブロックデータＭi（ｉ＝１，２，３，・・・）を暗号化する工程と、
上記平文ブロックデータＭi を暗号化している途中で又は平文ブロックデータＭi を暗号化した後に、第１の平文Ｍの平文ブロックデータＭi+1の暗号化に用いられるモジュール出力ブロックデータＴi をメモリに記憶する工程と、
上記平文ブロックデータＭi+1 の暗号化に用いられるモジュール出力ブロックデータＴi をメモリに記憶した後に、第２の平文Ｎの少なくとも１つの平文ブロックデータを暗号化する工程と、
上記第２の平文Ｎの少なくとも１つの平文ブロックデータを暗号化した後に、メモリに記憶された、平文ブロックデータＭi+1 の暗号化に用いられるモジュール出力ブロックデータＴiを入力し、暗号化モジュールを用いて第１の平文Ｍの平文ブロックデータＭi+1 を暗号化する工程と
を備えたことを特徴とする。
【００５１】
この発明に係る暗号化装置は、１つ以上の平文ブロックデータからなる平文を暗号化モジュールにより暗号文にし、暗号文に対して暗号文の完全性を保証するための認証子を生成する暗号化装置において、
平文ブロックデータを暗号化モジュールにより暗号化したときに暗号化モジュールが出力したモジュール出力ブロックデータＴi を暗号化モジュールへフィードバックする第１のフィードバックループを有し、平文ブロックデータを入力し、第１のフィードバックループによりモジュール出力ブロックデータＴiをフィードバックさせ暗号化処理を行い、暗号文ブロックデータを出力する暗号化部と、
認証子演算途中結果をフィードバックする第２のフィードバックループを有し、暗号化部から暗号文ブロックデータが出力されるたびに暗号文ブロックデータを入力し、データ処理を行い、第２のフィードバックループにより認証子演算途中結果をフィードバックさせ、暗号文の完全性を保証するための認証子を生成する認証子生成部と
を備えたことを特徴とする。
【００５２】
上記暗号化部と認証子生成部とは、１つの暗号化モジュールと、１つのフィードバックループとを兼用して暗号化処理と認証子生成処理とを交互に行うとともに、
上記１つのフィードバックループは、
暗号化処理と認証子生成処理との結果をそれぞれ記録し出力するメモリと、
暗号化処理と認証生成処理とを交互に実行するために、メモリから暗号化処理と認証子生成処理との結果を交互に選択して暗号化モジュールに出力するセレクタと
を備えたことを特徴とする。
【００５３】
この発明に係る暗号化方法は、１つ以上の平文ブロックデータからなる平文を暗号化モジュールにより暗号文にし、暗号文に対して暗号文の完全性を保証するための認証子を生成する暗号化方法において、
平文ブロックデータを暗号化モジュールにより暗号化したときに暗号化モジュールが出力したモジュール出力ブロックデータＴi を暗号化モジュールへフィードバックする第１のフィードバック工程を有し、平文ブロックデータを入力し、第１のフィードバックループによりモジュール出力ブロックデータＴiをフィードバックさせ暗号化処理を行い、暗号文ブロックデータを出力する暗号化工程と、
認証子演算途中結果をフィードバックする第２のフィードバック工程を有し、暗号化工程から暗号文ブロックデータが出力されるたびに暗号文ブロックデータを入力し、データ処理を行い、第２のフィードバック工程により認証子演算途中結果をフィードバックさせ、暗号文の完全性を保証するための認証子を生成する認証子生成工程と
を備えたことを特徴とする。
【００５４】
この発明に係る復号装置は、暗号文Ｃを構成する暗号文ブロックデータＣi （ｉ＝１，２，３，・・・）と暗号文Ｄを構成する暗号文ブロックデータＤj（ｊ＝１，２，３，・・・）とを復号する復号装置において、
暗号文Ｃの復号処理中に暗号文Ｄの復号要求を任意の時点で受け付けるメカニズムと、
復号処理を行ったデータをモジュール出力ブロックデータＴi として出力する復号モジュールと、
復号モジュールから出力されたモジュール出力ブロックデータＴi をフィードバックラインを介し復号モジュールにフィードバックするフィードバックループと、
フィードバックループのフィードバックラインと並列に設けられ、上記暗号文Ｄの復号要求を受け付け、暗号文Ｄのいずれかの暗号文ブロックデータの復号処理を開始することにより、上記暗号文ブロックデータＣi+1が暗号文ブロックデータＣi の次に続けて復号されない場合、フィードバックされるモジュール出力ブロックデータＴi を記憶するメモリと、
暗号文ブロックデータＣi+1 が暗号文ブロックデータＣi の次に続けて復号される場合は、上記フィードバックループのフィードバックラインによりフィードバックされるモジュール出力ブロックデータＴiを選択してフィードバックループに供給し、上記暗号文ブロックデータＣi+1 が暗号文ブロックデータＣi の次に続けて復号されず、暗号文Ｄのいずれかの暗号文ブロックデータの次に復号される場合は、上記メモリに記憶されたモジュール出力ブロックデータＴiを選択してフィードバックループに供給するセレクタと
を備えたことを特徴とする。
【００５５】
上記メモリは、
複数の暗号文に対応した複数のレジスタと、
復号処理をする暗号文に対応してレジスタを切り替えるスイッチと
を備えたことを特徴とする。
【００５６】
この発明に係る復号方法は、復号モジュールから出力されるモジュール出力ブロックデータＴi （ｉ＝１，２，３，・・・）を用いて第１の暗号文Ｃの暗号文ブロックデータＣi（ｉ＝１，２，３，・・・）を復号する工程と、
上記暗号文ブロックデータＣi を復号している途中で又は暗号文ブロックデータＣi を復号した後に、第１の暗号文Ｃの暗号文ブロックデータＣi+1の復号に用いられるモジュール出力ブロックデータＴi をメモリに記憶する工程と、
上記暗号文ブロックデータＣi+1 の復号に用いられるモジュール出力ブロックデータＴi をメモリに記憶した後に、第２の暗号文Ｄの少なくとも１つの暗号文ブロックデータを復号する工程と、
上記第２の暗号文Ｄの少なくとも１つの暗号文ブロックデータを復号した後に、メモリに記憶された、暗号文ブロックデータＣi+1 の復号に用いられるモジュール出力ブロックデータＴiを入力し、復号モジュールを用いて第１の暗号文Ｃの暗号文ブロックデータＣi+1 を復号する工程と
を備えたことを特徴とする。
【００５７】
この発明に係る復号装置は、１つ以上の暗号文ブロックデータからなる暗号文を復号ユニットにより平文に復号し、かつ、暗号文に対して暗号文の完全性を確認するための認証子を生成する復号装置において、
暗号文ブロックデータＣi を復号ユニットへフィードバックする第１のフィードバックループを有し、暗号文ブロックデータを入力し、第１のフィードバックループにより暗号文ブロックデータＣiをフィードバックさせ復号処理を行い、平文ブロックデータを出力する復号部と、
認証子演算途中結果をフィードバックする第２のフィードバックループを有し、復号部に入力される暗号文ブロックデータと同一の暗号文ブロックデータを入力し、データ処理を行い認証子演算途中結果を出力し、第２のフィードバックループにより認証子演算途中結果をフィードバックさせ、暗号文の完全性を確認するための認証子を生成する認証子生成部と
を備えたことを特徴とする。
【００５８】
上記復号部と認証子生成部とは、１つの復号モジュールと、１つのフィードバックループとを兼用して復号処理と認証子生成処理とを交互に行うとともに、
上記１つのフィードバックループは、
復号処理と認証子生成処理との結果をそれぞれ記録し出力するメモリと、
復号処理と認証生成処理とを交互に実行するために、メモリから復号処理と認証子生成処理との結果を交互に選択して復号モジュールに出力するセレクタと
を備えたことを特徴とする。
【００５９】
この発明に係る復号方法は、１つ以上の暗号文ブロックデータからなる暗号文を復号ユニットにより平文に復号し、かつ、暗号文に対して暗号文の完全性を確認するための認証子を生成する復号方法において、
暗号文ブロックデータＣi を復号ユニットへフィードバックする第１のフィードバック工程を有し、暗号文ブロックデータを入力し、第１のフィードバックループにより暗号文ブロックデータＣiをフィードバックさせ復号処理を行い、平文ブロックデータを出力する復号工程と、
認証子演算途中結果をフィードバックする第２のフィードバック工程を有し、復号工程に入力される暗号文ブロックデータと同一の暗号文ブロックデータを入力し、データ処理を行い認証子演算途中結果を出力し、第２のフィードバック工程により認証子演算途中結果をフィードバックさせ、暗号文の完全性を確認するための認証子を生成する認証子生成工程と
を備えたことを特徴とする。
【００６０】
上記暗号化処理は、ブロック暗号アルゴリズムを用いることを特徴とする。
【００６１】
上記復号処理は、ブロック暗号アルゴリズムを用いることを特徴とする。
【００６２】
上記メモリは、暗号化処理の状態として、
第１の処理データの暗号化途中結果と、
第１の処理データを暗号化するために用いる暗号鍵と
を記憶することを特徴とする。
【００６３】
上記メモリは、復号処理の状態として、
第２の処理データの復号途中結果と、
第２の処理データを復号するために用いる復号鍵と
を記憶することを特徴とする。
【００６４】
この発明に係る暗号化装置は、データを入力して暗号化し、暗号データを出力する暗号化部と、
暗号化部が出力した暗号データを入力して暗号文の完全性を保証するための認証子を生成する認証子生成部と
を備え、
認証子生成部は、暗号化部によるデータの暗号化が完了する前に認証子の生成を開始することを特徴とする。
【００６５】
この発明に係る復号装置は、データを入力して復号し、復号データを出力する復号部と、
復号部が入力したデータを入力して暗号文の完全性を保証するための認証子を生成する認証子生成部と
を備え、
認証子生成部は、復号部によるデータの復号が完了する前に認証子の生成を開始することを特徴とする。
【００６６】
この発明に係る暗号化方法は、データを入力して暗号化し、暗号データを出力する暗号化工程と、
暗号化工程が出力した暗号データを入力して暗号文の完全性を保証するための認証子を生成する認証子生成工程と
を備え、
認証子生成工程は、暗号化工程によるデータの暗号化が完了する前に認証子の生成を開始することを特徴とする。
【００６７】
この発明に係る復号方法は、データを入力して復号し、復号データを出力する復号工程と、
復号工程が入力したデータを入力して暗号文の完全性を保証するための認証子を生成する認証子生成工程と
を備え、
認証子生成工程は、復号工程によるデータの復号が完了する前に認証子の生成を開始することを特徴とする。
【００６８】
また、この発明は、上記暗号化装置の各部の処理及び上記暗号化方法の各工程の処理をコンピュータに実行させるためのプログラムであることを特徴とする。また、そのプログラムを記録したコンピュータ読み取り可能な記録媒体であることを特徴とする。
【００６９】
また、この発明は、上記復号装置の各部の処理及び上記復号方法の各工程をコンピュータに実行させるためのプログラムであることを特徴とする。また、そのプログラムを記録したコンピュータ読み取り可能な記録媒体であることを特徴とする。
【発明の効果】
【００７０】
以上のように、この発明の好適な実施の形態によれば、平文Ｍの暗号化の途中で平文Ｎの暗号化を開始することができる。また、暗号文Ｃの復号中に他の暗号文Ｄの復号を開始することができる。
【００７１】
また、この発明の好適な実施の形態によれば、優先度を付けることにより暗号化復号されるデータを優先度に基づいて高速に処理することができる。
【００７２】
また、この発明の好適な実施の形態によれば、秘匿処理と完全性保証処理とを並列処理することにより高速処理が行える。また、秘匿処理と完全性保証処理を統合化された１つのハードウェアで行うことができる。
【発明を実施するための最良の形態】
【００７３】
実施の形態１．
図１は、この実施の形態におけるＣＢＣモードの暗号化装置を示す図である。
【００７４】
この実施の形態の暗号化装置は、セレクタ５４と排他的論理和回路５８と暗号鍵Ｋを用いた暗号化モジュール５１とメモリ５５とにより構成されている。排他的論理和回路５８と暗号鍵Ｋを用いた暗号化モジュール５１とは、暗号化ユニット５２を構成している。セレクタ５４と排他的論理和回路５８と暗号鍵Ｋを用いた暗号化モジュール５１は、フィードバックライン６５とフィードバックライン６６とフィードバックライン６７によりフィードバックループを構成している。暗号鍵Ｋを用いた暗号化モジュール５１により暗号化された暗号文ブロックデータＣiは、フィードバックループにより再び排他的論理和回路５８に入力され、排他的論理和回路５８でモジュール入力データＳi が生成される。そして、生成されたモジュール入力データＳiが暗号鍵Ｋを用いた暗号化モジュール５１に供給される。
【００７５】
メモリ５５は、フィードバックライン６５と並列に設けられている。メモリ５５は、レジスタ５６とスイッチ５７により構成されている。スイッチ５７は、暗号鍵Ｋを用いた暗号化モジュール５１の出力をレジスタ５６に入力させるか無視するかを切り替えるものである。この切り替えは、例えば、割り込みＩＴにより行われる。割り込みＩＴが発生した場合には、スイッチ５７はＥに接続され、割り込みＩＴが解除された場合には、スイッチ５７はＦに接続される。レジスタ５６は、Ｅを経由してきた暗号文ブロックデータＣiを入力して記憶するものである。レジスタ５６に記憶された暗号文ブロックデータＣi は、セレクタ５４に出力される。セレクタ５４は、Ａ，Ｂ，Ｃの３つの入力を有しており、いずれか１つの入力を選択するものである。これらの選択は、後述するように割り込みＩＴに依存する。
【００７６】
図２は、図１に示した暗号化装置の動作手順を示す図である。
【００７７】
図３は、図１に示した暗号化装置の動作フローチャートである。
【００７８】
この暗号化装置が電源を投入された場合のセレクタ５４の入力はＡに設定されており、スイッチ５７はＥに接続されているものとする。また、平文Ｎの暗号化要求があるときは、割り込みＩＴが発生し、平文Ｎの暗号化要求が解除されるまで、割り込みＩＴがオンになり続けるものとする。また、平文Ｍは、鍵Ｋ1を用いて暗号化され、平文Ｎは、鍵Ｋ2 を用いて暗号化されるものとする。また、割り込みＩＴが発生したとき又は割り込みＩＴが解除されたときには、鍵Ｋ2又は鍵Ｋ1 が暗号化モジュール５１に支給され直すものとする。
【００７９】
時刻Ｔ０において、鍵Ｋ1 が支給され、平文ブロックデータＭ1 の暗号化処理がスタートする。時刻Ｔ０において、平文ブロックデータＭ1の暗号化がスタートした場合には、セレクタ５４の入力Ａから一旦イニシャルバリューＩＶが入力された後、セレクタ５４はＢに切り替わる。そして、平文ブロックデータＭ1が鍵Ｋ1 を用いて暗号化されている途中の時刻Ｘにおいて、平文ブロックデータＮ1 の暗号化を要求する割り込みＩＴが発生したとする。時刻Ｔ１までに、暗号文ブロックデータＣ1はメモリ５５に記憶された状態になる。そして、割り込みＩＴの発生により時刻Ｔ１において、鍵Ｋ2 が暗号化モジュール５１に支給される。また、時刻Ｔ１において、セレクタ５４は入力をＡに設定する。また、時刻Ｔ１において、スイッチ５７はＦに接続される。時刻Ｔ１以降は、鍵Ｋ2を用いて平文ブロックデータＮ1 の暗号化が行われ、暗号文ブロックデータＤ1 が出力される。時刻Ｙにおいて、平文ブロックデータＮ1の暗号化が終了し、割り込みＩＴが解除されたものとする。この割り込みＩＴの解除により時刻Ｔ２において、鍵Ｋ1 が暗号化モジュール５１に支給され、セレクタ５４の入力はＣに切り替えられ、スイッチ５７はＥに接続される。セレクタ５４がＣに切り替わったことにより、メモリ５５に記憶されていた暗号文ブロックデータＣ1が平文ブロックデータＭ2 の暗号化のために入力され、鍵Ｋ1 を用いた暗号化モジュール５１により平文ブロックデータＭ2が暗号化されて、暗号文ブロックデータＣ2 が出力される。時刻Ｔ３以前においては、セレクタ５４の入力はＢに切り替えられ、平文ブロックデータＭ3を暗号化する場合には、フィードバックループのフィードバックライン６５からフィードバックされた暗号文ブロックデータＣ2 が入力され、鍵Ｋ1を用いた暗号化モジュール５１により平文ブロックデータＭ3 暗号化されて、暗号文ブロックデータＣ3 が出力される。
【００８０】
なお、平文Ｍと平文Ｎの鍵が同一（Ｋ1 ＝Ｋ2 ）の場合は、鍵は暗号処理のスタート時に一度だけ供給されればよい。
【００８１】
図３のフローチャートを用いて全体の動作を説明する。
【００８２】
Ｓ１において、平文Ｍの暗号化処理がスタートし続行される。最後のブロックデータまで処理を終えた場合には、処理を終了する。Ｓ２において、任意の時点で生じる割り込みＩＴの発生が監視される。割り込みＩＴの発生がない場合には、Ｓ１の処理が続行される。平文ブロックデータＭiの処理中に割り込みＩＴが発生した場合には、Ｓ３において、現在処理中の平文ブロックデータＭi の暗号文ブロックデータＣiをメモリ５５のレジスタ５６に記憶する。Ｓ４において、割り込みＩＴにより暗号化処理の要求があった平文Ｎの暗号化処理を行う。このＳ４の暗号化処理は、Ｓ５に示すように、割り込みＩＴの解除があるまで連続して行われる。割り込みＩＴの解除があった場合には、Ｓ６において、メモリ５５のレジスタ５６に記憶した暗号文ブロックデータＣiを用いてＭi+1 の暗号化処理を行う。それ以降の処理は、Ｓ１に戻り、暗号化処理が続行される。
【００８３】
図４は、セレクタ５４のオペレーション処理を示す図である。
【００８４】
電源がオンになった場合には、Ｓ１１に示すように、入力をＡに設定する。Ｓ１２において、暗号化がスタートした場合には、Ｓ１３において、入力をＢに設定する。即ち、フィードバックループのフィードバックライン６５によりフィードバックされる暗号文ブロックデータＣiが用いられる。Ｓ１４において、現在処理しているブロックデータが最後であるということが判定された場合には、Ｓ１１に戻り電源オンと同じ状態に戻る。Ｓ１５において、割り込みＩＴの発生が確認された場合には、Ｓ１６において、入力をＡに設定し、暗号化がスタートした場合には、Ｓ１８において、入力をＢに設定する。割り込みＩＴの解除があるまでは、入力がＢに設定されたままで動作する。即ち、フィードバックループのフィードバックライン６５によりフィードバックされる暗号文ブロックデータＣiが用いられる。Ｓ１９において、割り込みＩＴの解除があったことが検知された場合には、Ｓ２０において、入力をＣに設定する。この入力をＣに設定することにより、メモリ５５に記憶された暗号文ブロックデータＣiが入力されることになる。このＣからの入力による暗号化がスタートした場合には、Ｓ１３に戻り入力をＢに設定する。
【００８５】
このようにして、割り込みＩＴの発生に基づき、セレクタ５４を切り替えることができる。
【００８６】
なお、平文Ｍの暗号化処理も、割り込みＩＴにより任意の時刻にスタートさせてもよい。
【００８７】
図５は、スイッチ５７の割り込み処理のフローチャートである。
【００８８】
電源がオンになった場合、そして、その後の最初の平文の暗号化処理の場合は、スイッチ５７はＥに接続される。そして、Ｓ３１において、割り込みＩＴが発生した場合には、スイッチ５７をＥからＦに接続する。そして、Ｓ３３において、割り込みＩＴの解除が検出された場合には、スイッチ５７をＦからＥに接続する。このようにして、スイッチ５７は、割り込みＩＴの発生から解除までは暗号文ブロックデータＣiを無視する。従って、メモリ５５のレジスタ５６には、割り込みＩＴが発生したときに生成された暗号文ブロックデータＣi が記憶され続けることになる。
【００８９】
以上のように、図１〜図５に示した暗号化装置は、平文Ｍを構成する平文ブロックデータＭi （ｉ＝１，２，３，・・・）と平文Ｎを構成する平文ブロックデータＮj（ｊ＝１，２，３，・・・）とを暗号化する暗号化装置において、平文Ｍの暗号化処理中に平文Ｎの暗号化要求を平文Ｍの暗号化処理完了前に受け付ける割り込み処理メカニズムを示している。
【００９０】
また、図１〜図５に示した暗号化装置は、平文ブロックデータＭi の暗号化処理を行い、暗号文ブロックデータＣi を出力する暗号化モジュール５１と、暗号化モジュール５１から出力された暗号文ブロックデータＣiをフィードバックライン６５を介し暗号化ユニット５２にフィードバックするフィードバックループ６５，６６と、フィードバックループのフィードバックライン６５と並列に設けられ、上記割り込み処理により上記平文Ｎの暗号化要求を受け付け、平文Ｎのいずれかの平文ブロックデータの暗号化処理を開始することにより、上記平文ブロックデータＭi+1が平文ブロックデータＭi の次に続けて暗号化されない場合、フィードバックされる暗号文ブロックデータＣi を記憶するメモリ５５とを有している。
【００９１】
また、図１〜図５に示した暗号化装置は、平文ブロックデータＭi+1 が平文ブロックデータＭi の次に続けて暗号化される場合は、上記フィードバックループのフィードバックライン６５によりフィードバックされる暗号文ブロックデータＣiを選択してフィードバックループを介して暗号化ユニット５２に供給し、上記平文ブロックデータＭi+1 が平文ブロックデータＭiの次に続けて暗号化されず、平文Ｎのいずれかの平文ブロックデータの次に暗号化される場合は、上記メモリ５５に記憶された暗号文ブロックデータＣiを選択してフィードバックループを介して暗号化ユニット５２に供給するセレクタ５４を有している。
【００９２】
メモリ５５は、割り込みＩＴが発生したときの暗号化装置の状態を記憶するメモリである。メモリ５５が暗号化処理の状態を記憶しておくことにより、あるデータの暗号化の最中に他のデータの暗号化を行った場合でも、再びあるデータの暗号化の処理に復帰することができる。即ち、メモリ５５に記憶されたデータを用いることにより、暗号化が中断されたときと全く同じ状態に暗号化装置を復帰させることができ、中断した暗号化処理を続行させることが可能になる。
【００９３】
図６は、メモリ５５の他の例を示す図である。
【００９４】
メモリ５５は、割り込み制御部５２と入力スイッチ９６と出力スイッチ９７と複数のレジスタ（ＲＥＧ１，２，３）を有している。このように、複数のレジスタを有することにより、複数の割り込みを受け付けることが可能になる。
【００９５】
図７は、メモリ５５の割り込み処理の動作を示す図である。
【００９６】
割り込みＩＴが発生すると、Ｓ４１において、現在使用中のレジスタｋの番号ｋを記憶する。Ｓ４２において、入力スイッチ９６と出力スイッチ９７をレジスタｋ以外のレジスタｌに接続する。この状態で、平文Ｎの暗号化が継続される。更に、平文Ｎの暗号化の最中に他の割り込みが発生したかを監視する。Ｓ４３において、他の割り込みＩＴが発生したことが検出された場合には、再び自分自身であるＳ４０の処理を呼び出す。このように、割り込みＩＴが発生するたびに、自分自身をＳ４０の処理をリカーシブに呼び出すことにより、複数階層の割り込み処理を行うことができる。Ｓ４４においては、割り込みが解除されたかを検出し、割り込みが解除された場合には、入力スイッチ９６と出力スイッチ９７を記憶しておいた番号ｋを用いてレジスタｋに切り替える。図６に示す場合は、３つのレジスタがあるので、３階層の割り込み処理を行うことができる。
【００９７】
図８は、メモリ５５の他の例を示す図である。
【００９８】
メモリ５５は、スタック６４を有している。スタック６４は、先入れ後出し（ＦＩＬＯ）のレジスタである。スタック１を使用中に割り込みＩＴが発生した場合には、スタック１のデータをスタック２に移し、それ以後のデータをスタック１に積み上げ、割り込みＩＴが解除された場合には、積み上げたスタック１のデータを出力し、スタック２のデータをスタック１に戻す。図８に示す場合は、４階層の割り込み処理を行える場合を示している。
【００９９】
図６に示すように、複数階層の割り込み処理を行うことができる場合は、各割り込みに対して優先度を付けることができる。例えば、割り込みＩＴ１を優先度１とし、割り込みＩＴ２を優先度１より優先度の低い優先度２とすることにより、優先度１の割り込みＩＴ１が発生した場合には、優先度２の処理を遅らせることができる。
【０１００】
図９は、優先度１の暗号化処理を優先度２の暗号化処理に優先させた場合を示している。優先度１の暗号化処理を先に終了させている。
【０１０１】
図１０は、優先度がともに等しい場合の暗号化処理の場合を示している。
【０１０２】
優先度が等しい場合には、２つの平文の各ブロックデータを交互に暗号化する。
【０１０３】
図１１は、優先度１のデータと２つの優先度２のデータを暗号化する場合を示している。
【０１０４】
図９〜図１１に示すように、割り込みに優先度を付けることによりユーザが望ましいと思われる暗号化処理手順を実現することができる。緊急用のデータや短いデータの場合には、優先度を高くすることにより効率のよい処理を行うことができる。
【０１０５】
図１２は、メモリ５５をフィードバックライン６６と並列においた場合を示している。
【０１０６】
排他的論理和回路５８と暗号鍵Ｋを用いた暗号化モジュール５１とは、暗号化ユニット５２を構成している。
【０１０７】
図１３は、図１２の暗号化装置の動作手順を示す図である。
【０１０８】
第１セレクタ６１と第２セレクタ６２とは、以下のような選択接続により、図１のセレクタ５４と同じ選択動作をさせるものである。
【０１０９】
第１のセレクタ６１＋第２のセレクタ６２＝セレクタ５４
Ａ        ＋        Ｄ        ＝    Ａ
Ｂ        ＋        Ｄ        ＝    Ｂ
Ａ        ＋        Ｃ        ＝    Ｃ
Ｂ        ＋        Ｃ        ＝    Ｃ
図１３では、第２のセレクタ６２がＤを選択しているときは、第１のセレクタ６１の選択（Ａ又はＢ）が有効となり、第２のセレクタ６２がＣを選択しているときは、メモリ５５の内容が出力されることになる。即ち、第２のセレクタ６２は、メモリ５５の内容を用いたいとき（割り込みＩＴが解除されて平文Ｎから元の平文Ｍへの暗号化に戻るとき）に、Ｃを選択すればよい。
【０１１０】
図１４は、メモリ５５をフィードバックライン６７と並列においた場合を示している。
【０１１１】
図１５は、図１４の暗号化装置の動作手順を示す図である。
【０１１２】
割り込みＩＴが発生した時刻Ｘが排他的論理和回路５８で排他的論理和演算される前である場合には、メモリ５５は、排他的論理和回路５８により排他的論理和演算されたモジュール入力データＳiを記憶する。そして、平文ブロックデータＮ1 を暗号化する。次に、メモリ５５に記憶されたモジュール入力データＳi を第２セレクタ６２により選択させ、暗号鍵Ｋを用いた暗号化モジュール５１に入力し、暗号化して暗号文ブロックデータＣ1を出力する。
【０１１３】
図１及び図１２及び図１４に示すように、メモリ５５は、フィードバックライン６５とフィードバックライン６６とフィードバックライン６７のいずれのラインと並列の設けられていても構わない。メモリ５５は、暗号化装置が、あるデータの暗号化処理中に他のデータの暗号化を開始するとき、他のデータの暗号化を開始する直前の状態を覚えておくものであり、他のデータの暗号化処理が終了した時点で、メモリ５５に記憶されたデータを用いて暗号化装置が元の状態に復帰できるのであれば、メモリ５５は、どの場所に設けられていても構わない。また、メモリ５５は、複数箇所に設けられていてもよい。
【０１１４】
以上のように、この実施の形態に係る暗号化装置は、１つ以上のブロックデータＭi （ｉ＝１，２，３，・・・，ｍ）からなる第１の処理データ（平文Ｍ）と、１つ以上のブロックデータＮj（ｊ＝１，２，３，・・・，ｎ）からなる第２の処理データ（平文Ｎ）との暗号化処理をする暗号化装置において、暗号化処理の状態を記憶するメモリ５５を備え、第１の処理データの全ブロックデータ（Ｍ1〜Ｍm ）の暗号化処理が完了する前に第２の処理データの最初のブロックデータＮ1 の暗号化処理を開始するとともに、第２の処理データの最初のブロックデータＮ1の暗号化処理を開始する場合に第１の処理データの暗号化処理の状態（例えば、暗号化ブロックデータＣi ）を上記メモリ５５に記憶させ、第１の処理データの暗号化処理を再開する場合に、暗号化装置の暗号化処理の状態を、メモリに記憶した第１の処理データの暗号化処理の状態に復帰させてから第１の処理データの暗号化処理を再開することを特徴とする。
【０１１５】
また、上記暗号化装置は、第２の処理データの全ブロックデータ（Ｎ1 〜Ｎn ）の暗号処理の完了する前に第１の処理データの暗号化処理を再開するとともに、上記メモリ５５は、第１の処理データの暗号化処理を再開する場合に第２の処理データの暗号化処理状態（例えば、暗号化ブロックデータＤj）を記憶し、第２の処理データの暗号化処理を再開する場合は、暗号化装置の暗号化処理の状態を、メモリに記憶した第２の処理データの暗号化処理の状態に復帰させてから第２の処理データの暗号化処理を再開することを特徴とする。
【０１１６】
図１６は、ＯＦＢモードの暗号化装置の構成図である。
【０１１７】
図４５に比べて、メモリ５５が追加されている点が特徴である。メモリ５５は、暗号化モジュール５１から出力されたモジュール出力データＴ1 を記憶するものである。
【０１１８】
図１６は、平文Ｍを構成する平文ブロックデータＭi （ｉ＝１，２，３，・・・）と平文Ｎを構成する平文ブロックデータＮj（ｊ＝１，２，３，・・・）とを暗号化する暗号化装置において、平文Ｍの暗号化処理中に平文Ｎの暗号化要求を平文Ｍの暗号化処理完了前に受け付ける割り込み処理メカニズムと、暗号化処理を行ったデータをモジュール出力ブロックデータＴiとして出力する暗号化モジュール５１と、暗号化モジュール５１から出力されたモジュール出力ブロックデータＴi をフィードバックライン６５を介し暗号化モジュールにフィードバックするフィードバックループ６５，６６と、フィードバックループのフィードバックライン６５と並列に設けられ、上記平文Ｎの暗号化要求を受け付け、平文Ｎのいずれかの平文ブロックデータの暗号化処理を開始することにより、上記平文ブロックデータＭi+1が平文ブロックデータＭi の次に続けて暗号化されない場合、フィードバックされるモジュール出力ブロックデータＴi を記憶するメモリ５５と、平文ブロックデータＭi+1が平文ブロックデータＭi の次に続けて暗号化される場合は、上記フィードバックループのフィードバックライン６５によりフィードバックされるモジュール出力ブロックデータＴiを選択してフィードバックループを介して暗号化モジュール５１に供給し、上記平文ブロックデータＭi+1 が平文ブロックデータＭiの次に続けて暗号化されず、平文Ｎのいずれかの平文ブロックデータの次に暗号化される場合は、上記メモリ５５に記憶されたモジュール出力ブロックデータＴiを選択してフィードバックループを介して暗号化モジュール５１に供給するセレクタ５４とを備えたことを特徴とする。
【０１１９】
図１７は、図１６のＯＦＢモードの暗号化装置の動作説明図である。
【０１２０】
図１７は、図２のＣＢＣモードの動作がＯＦＢモードの動作になったものであり、その他の動作は図２の動作と同じである。
【０１２１】
図１８は、ＣＦＢモードの暗号化装置を示す図である。
【０１２２】
図４７に比べて、メモリ５５が設けられている点が特徴である。メモリ５５は、排他的論理和回路５８から出力された暗号文ブロックデータＣi を記憶するものである。
【０１２３】
また、排他的論理和回路５８と暗号鍵Ｋを用いた暗号化モジュール５１とは、暗号化ユニット５２を構成している。
【０１２４】
図１８は、平文Ｍを構成する平文ブロックデータＭi （ｉ＝１，２，３，・・・）と平文Ｎを構成する平文ブロックデータＮj（ｊ＝１，２，３，・・・）とを暗号化する暗号化装置において、平文Ｍの暗号化処理中に平文Ｎの暗号化要求を平文Ｍの暗号化処理完了前に受け付ける割り込み処理メカニズムと、平文ブロックデータＭiの暗号化処理を行い暗号文ブロックデータＣi を出力する暗号化ユニット５２と、暗号化モジュールから出力された暗号文ブロックデータＣiをフィードバックライン６５を介し暗号化処理にフィードバックするフィードバックループ６５，６６と、フィードバックループのフィードバックライン６５と並列に設けられ、上記平文Ｎの暗号化要求を受け付け、平文Ｎのいずれかの平文ブロックデータの暗号化処理を開始することにより、上記平文ブロックデータＭi+1が平文ブロックデータＭi の次に続けて暗号化されない場合、フィードバックされる暗号文ブロックデータＣi を記憶するメモリ５５と、平文ブロックデータＭi+1が平文ブロックデータＭi の次に続けて暗号化される場合は、上記フィードバックループのフィードバックライン６５によりフィードバックされる暗号文ブロックデータＣiを選択してフィードバックループを介して暗号化ユニット５２に供給し、上記平文ブロックデータＭi+1 が平文ブロックデータＭiの次に続けて暗号化されず、平文Ｎのいずれかの平文ブロックデータの次に暗号化される場合は、上記メモリ５５に記憶された暗号文ブロックデータＣiを選択してフィードバックループを介して暗号化ユニット５２に供給するセレクタ５４とを備えたことを特徴とする。
【０１２５】
図１９は、図１８のＣＦＢモードの暗号化装置の動作説明図である。
【０１２６】
図１９は、図２のＣＢＣモードの動作がＣＦＢモードの動作になったものであり、その他の動作は図２の動作と同じである。
【０１２７】
図２０は、ＣＢＣモードの復号装置を示す図である。
【０１２８】
図４４に比べて、メモリ７５が設けられている点が特徴である。
【０１２９】
メモリ７５は、レジスタ７６とスイッチ７７により構成されている。
【０１３０】
また、排他的論理和回路７８と鍵Ｋを用いた復号モジュール７１により復号ユニット７２を構成している。
【０１３１】
なお、レジスタ１１１は、セレクタ７４の内部に設けられていてもよい。
【０１３２】
図２０に示す復号装置は、暗号文Ｃを構成する暗号文ブロックデータＣi （ｉ＝１，２，３，・・・）と暗号文Ｄを構成する暗号文ブロックデータＮj（ｊ＝１，２，３，・・・）とを復号する復号装置において、暗号文Ｃの復号処理中に暗号文Ｄの復号要求を任意の時点で受け付ける割り込み処理メカニズムを有している。
【０１３３】
また、図２０に示す復号装置は、暗号文ブロックデータＣi の復号処理を行ったデータをモジュール出力ブロックデータＴiとして出力する復号モジュール７１と、暗号文ブロックデータＣi+1 を復号するための暗号文ブロックデータＣi をフィードバックライン８５，１１１，８２を介し復号ユニット７２にフィードバックするフィードバックループ８５，１１１，８２，８６と、フィードバックループのフィードバックライン８５，１１１，８２と並列に設けられ、上記暗号文Ｄの復号要求を受け付け、暗号文Ｄのいずれかの暗号文ブロックデータの復号処理を開始することにより、上記暗号文ブロックデータＣi+1が暗号文ブロックデータＣi の次に続けて復号されない場合、フィードバックされるブロックデータを記憶するメモリ７１とを有している。
【０１３４】
また、図２０に示す復号装置は、暗号文ブロックデータＣi+1 が暗号文ブロックデータＣi の次に続けて復号される場合は、上記フィードバックループのフィードバックライン８５，１１１，８２によりフィードバックされる暗号文ブロックデータＣiを選択してフィードバックループを介して暗号ユニット７２に供給し、上記暗号文ブロックデータＣi+1 が暗号文ブロックデータＣiの次に続けて復号されず、暗号文Ｄのいずれかの暗号文ブロックデータの次に復号される場合は、上記メモリに記憶された暗号文ブロックデータＣi を選択してフィードバックループを介して暗号ユニット７２に供給するセレクタ７４を備えている。
【０１３５】
なお、上述した図２０の説明において、「フィードバックライン」、「フィードバックループ」という用語を用いているが、「自己の出力を自己の入力にする」という意味での「フィードバック」ではない。ここでは、「フィードバック」という用語は、暗号文ブロックデータＣiを復号した後に、暗号文ブロックデータＣi+1 を復号するために、暗号文ブロックデータＣi を再び供給するという意味で用いるものとする。
【０１３６】
図２１は、図２０の復号装置の動作手順を示す図である。
【０１３７】
暗号鍵（復号鍵ともいう）Ｋ1 を用いて、暗号文ブロックデータＣ1 を復号している最中に割り込みＩＴの発生があった場合には、暗号文ブロックデータＣ1がメモリ７５のレジスタ７６に記憶される。その後、暗号鍵（復号鍵ともいう）Ｋ2 を用いて、暗号文ブロックデータＤ1 の復号が行われ、平文ブロックデータＮ1が復号される。そして、メモリ７５のレジスタ７６に記憶された暗号文ブロックデータＣ1 が読み出され、暗号文ブロックデータＣ2の復号が行われ、平文ブロックデータＭ2 が復号される。セレクタ７４の動作は、図４に示したものと同じである。また、スイッチ７７の動作は、図５に示したものと同じである。
【０１３８】
図２２は、ＯＦＢモードの復号装置を示す図である。
【０１３９】
図２２は、暗号文Ｃを構成する暗号文ブロックデータＣi （ｉ＝１，２，３，・・・）と暗号文Ｄを構成する暗号文ブロックデータＤj（ｊ＝１，２，３，・・・）とを復号する復号装置において、暗号文Ｃの復号処理中に暗号文Ｄの復号要求を任意の時点で受け付ける割り込み処理メカニズムと、復号処理を行ったデータをモジュール出力ブロックデータＴiとして出力する復号モジュール７１と、復号モジュール７１から出力されたモジュール出力ブロックデータＴi をフィードバックライン８５を介し復号モジュール７１にフィードバックするフィードバックループ８５，８６と、フィードバックループのフィードバックライン８５と並列に設けられ、上記暗号文Ｄの復号要求を受け付け、暗号文Ｄのいずれかの暗号文ブロックデータの復号処理を開始することにより、上記暗号文ブロックデータＣi+1が暗号文ブロックデータＣi の次に続けて復号されない場合、フィードバックされるモジュール出力ブロックデータＴi を記憶するメモリ７５と、暗号文ブロックデータＣi+1が暗号文ブロックデータＣi の次に続けて復号される場合は、上記フィードバックループのフィードバックライン８５によりフィードバックされるモジュール出力ブロックデータＴiを選択してフィードバックループを介して復号モジュール７１に供給し、上記暗号文ブロックデータＣi+1 が暗号文ブロックデータＣiの次に続けて復号されず、暗号文Ｄのいずれかの暗号文ブロックデータの次に復号される場合は、上記メモリ７５に記憶されたモジュール出力ブロックデータＴiを選択してフィードバックループを介して復号モジュール７１に供給するセレクタ７４とを備えたことを特徴とする。
【０１４０】
図２３は、図２２のＯＦＢモードの暗号化装置の動作説明図である。
【０１４１】
図２３は、図２１のＣＢＣモードの動作がＯＦＢモードの動作になったものであり、その他の動作は図２１の動作と同じである。
【０１４２】
図２４は、ＣＦＢモードの復号装置を示す図である。
【０１４３】
また、排他的論理和回路７８と鍵Ｋを用いた復号モジュール７１により復号ユニット７２を構成している。
【０１４４】
なお、レジスタ１１１は、セレクタ７４の内部に設けられていてもよい。
【０１４５】
図２４は、暗号文Ｃを構成する暗号文ブロックデータＣi （ｉ＝１，２，３，・・・）と暗号文Ｄを構成する暗号文ブロックデータＤj（ｊ＝１，２，３，・・・）とを復号する復号装置において、暗号文Ｃの復号処理中に暗号文Ｄの復号要求を任意の時点で受け付ける割り込み処理メカニズムと、暗号文ブロックデータＣiの復号処理を行ったデータをモジュール出力ブロックデータＴi として出力する復号モジュール７１と、暗号文ブロックデータＣi+1を復号するための暗号文ブロックデータＣi をフィードバックライン８５，１１１，８２を介し復号ユニット７２にフィードバックするフィードバックループ８５，１１１，８２，８６と、フィードバックループのフィードバックライン８５，１１１，８２と並列に設けられ、上記暗号文Ｄの復号要求を受け付け、暗号文Ｄのいずれかの暗号文ブロックデータの復号処理を開始することにより、上記暗号文ブロックデータＣi+1が暗号文ブロックデータＣi の次に続けて復号されない場合、フィードバックされる暗号文ブロックデータＣi を記憶するメモリ７５と、暗号文ブロックデータＣi+1が暗号文ブロックデータＣi の次に続けて復号される場合は、上記フィードバックループのフィードバックライン８５，１１１，８２によりフィードバックされる暗号文ブロックデータＣiを選択してフィードバックループを介して復号モジュール７１に供給し、上記暗号文ブロックデータＣi+1 が暗号文ブロックデータＣiの次に続けて復号されず、暗号文Ｄのいずれかの暗号文ブロックデータの次に復号される場合は、上記メモリ７５に記憶された暗号文ブロックデータＣiを選択してフィードバックループを介して復号モジュール７１に供給するセレクタ７４とを備えたことを特徴とする。
【０１４６】
なお、上述した図２４の説明において、「フィードバックライン」、「フィードバックループ」という用語を用いているが、「自己の出力を自己の入力にする」という意味での「フィードバック」ではない。ここでは、「フィードバック」という用語は、暗号文ブロックデータＣiを復号した後に、暗号文ブロックデータＣi+1 を復号するために、暗号文ブロックデータＣi を再び供給するという意味で用いるものとする。
【０１４７】
図２５は、図２４のＣＦＢモードの暗号化装置の動作説明図である。
【０１４８】
図２５は、図２１のＣＢＣモードの動作がＣＦＢモードの動作になったものであり、その他の動作は図２１の動作と同じである。
【０１４９】
図２６は、図１に示したＣＢＣモードの暗号化装置の改良例を示す図である。
【０１５０】
図２６の暗号化装置は、セレクタ１５４とメモリ１５５とが追加されている。図１の場合は、鍵Ｋ1 が割り込みＩＴの解除のとき外部から支給される場合を示したが、ここでは、一度外部から支給された鍵Ｋ1を保存して再利用する場合について説明する。
【０１５１】
メモリ１５５は、レジスタ１５６とスイッチ１５７により構成されている。スイッチ１５７は、暗号鍵Ｋをレジスタ１５６に入力させるか無視するかを切り替えるものである。この切り替えは、例えば、割り込みＩＴにより行われる。割り込みＩＴが発生した場合には、スイッチ１５７はＥに接続され、割り込みＩＴが解除された場合には、スイッチ１５７はＦに接続される。レジスタ１５６は、Ｅを経由してきた鍵Ｋを入力して記憶するものである。レジスタ１５６に記憶された鍵Ｋは、セレクタ１５４に出力される。セレクタ１５４は、Ａ，Ｃの２つの入力を有しており、いずれか１つの入力を選択するものである。これらの選択は、後述するように割り込みＩＴに依存する。
【０１５２】
図２７は、図２６に示した暗号化装置の動作手順を示す図である。
【０１５３】
この暗号化装置が電源を投入された場合のセレクタ５４とセレクタ１５４の入力はＡに設定されており、スイッチ５７とスイッチ１５７はＥに接続されているものとする。また、平文Ｎの暗号化要求があるときは、割り込みＩＴが発生し、平文Ｎの暗号化要求が解除されるまで、割り込みＩＴがオンになり続けるものとする。また、平文Ｍは、鍵Ｋ1を用いて暗号化され、平文Ｎは、鍵Ｋ2 を用いて暗号化されるものとする。鍵Ｋ1 又は鍵Ｋ2 が暗号化モジュール５１に支給されるものとする。
【０１５４】
時刻Ｔ０において、鍵Ｋ1 が鍵ＫＩとして外部から支給される。セレクタ１５４は、Ａに接続されているので、鍵ＫＩを鍵Ｋとして暗号化モジュール５１に出力する。また、スイッチ１５７がＥに接続されているので、鍵Ｋ1がレジスタ１５６に記憶される。そして、平文ブロックデータＭ1 の暗号化処理がスタートする。時刻Ｔ０において、平文ブロックデータＭ1の暗号化がスタートした場合には、セレクタ５４の入力Ａから一旦イニシャルバリューＩＶが入力された後、セレクタ５４はＢに切り替わる。そして、平文ブロックデータＭ1が鍵Ｋ1 を用いて暗号化されている途中の時刻Ｘにおいて、平文ブロックデータＮ1 の暗号化を要求する割り込みＩＴが発生したとする。時刻Ｔ１までに、暗号文ブロックデータＣ1はメモリ５５に記憶された状態になる。そして、割り込みＩＴの発生により時刻Ｔ１において、鍵Ｋ2 が鍵ＫＩとして外部から暗号化モジュール５１に支給される。セレクタ１５４は、Ａに接続されているので、鍵ＫＩを鍵Ｋとして暗号化モジュール５１に出力する。また、時刻Ｔ１において、セレクタ５４は入力をＡに設定する。また、時刻Ｔ１において、スイッチ５７とスイッチ１５７はＦに接続される。従って、鍵Ｋ2は、レジスタ１５６に記憶されない。時刻Ｔ１以降は、鍵Ｋ2 を用いて平文ブロックデータＮ1 の暗号化が行われ、暗号文ブロックデータＤ1が出力される。時刻Ｙにおいて、平文ブロックデータＮ1 の暗号化が終了し、割り込みＩＴが解除されたものとする。この割り込みＩＴの解除により時刻Ｔ２において、セレクタ５４の入力はＣに切り替えられ、スイッチ５７はＥに接続される。従って、鍵Ｋ1がレジスタ１５６から鍵ＫＩとしてセレクタ１５４に出力され、セレクタ１５４から鍵Ｋ1 が鍵Ｋとして暗号化モジュール５１に支給される。また、セレクタ５４がＣに切り替わったことにより、メモリ５５に記憶されていた暗号文ブロックデータＣ1が平文ブロックデータＭ2 の暗号化のために入力され、鍵Ｋ1 を用いた暗号化モジュール５１により平文ブロックデータＭ2が暗号化されて、暗号文ブロックデータＣ2 が出力される。時刻Ｔ３以前においては、セレクタ５４の入力はＢに切り替えられ、平文ブロックデータＭ3を暗号化する場合には、フィードバックループのフィードバックライン６５からフィードバックされた暗号文ブロックデータＣ2 が入力され、鍵Ｋ1を用いた暗号化モジュール５１により平文ブロックデータＭ3 が暗号化されて、暗号文ブロックデータＣ3 が出力される。
【０１５５】
また、時刻Ｔ３以前においては、セレクタ１５４の入力は、Ａに切り替えられる。
【０１５６】
セレクタ１５４のオペレーション処理を説明する。
【０１５７】
電源がオンになった場合には、入力をＡに設定する。また、割り込みＩＴの発生が確認された場合でも、入力をＡに設定し続ける。割り込みＩＴの解除があるまでは、セレクタ１５４は、入力がＡに設定されたままで動作する。セレクタ１５４は、割り込みＩＴの解除があったことが検知された場合に、入力をＣに設定する。この入力をＣに設定することにより、メモリ５５に記憶された鍵Ｋ1が鍵Ｋとして暗号化モジュール５１に入力されることになる。このＣからの鍵入力による暗号化がスタートした場合には、セレクタ１５４は、入力をＡに設定する。
【０１５８】
このようにして、割り込みＩＴの発生に基づき、セレクタ１５４を切り替えることができる。
【０１５９】
次に、スイッチ１５７の割り込み処理のオペレーションを説明する。
【０１６０】
電源がオンになった場合、そして、その後の最初の平文Ｍの暗号化処理の場合は、スイッチ１５７はＥに接続され、平文Ｍの鍵Ｋ1 がレジスタ１５６に記憶される。そして、時刻Ｘにて、割り込みＩＴが発生した場合には、時刻Ｔ1でスイッチ１５７をＥからＦに接続し、平文Ｎの鍵Ｋ2 を無視する。そして、時刻Ｙにて、割り込みＩＴの解除が検出された場合には、時刻Ｔ２にて、スイッチ１５７をＦからＥに接続する。このようにして、スイッチ１５７は、割り込みＩＴの発生から解除までは平文Ｎの鍵Ｋ2を無視する。従って、メモリ１５５のレジスタ１５６には、平文Ｍの鍵Ｋ1 が記憶され続けることになる。
【０１６１】
図２８は、図２０に示した復号装置に対して鍵Ｋ1 を保存して再利用する場合の構成を示している。
【０１６２】
図２８は、図２０に対してセレクタ１７４とメモリ１７５を追加したものである。セレクタ１７４とメモリ１７５の動作は、図２６に示したセレクタ１５４とメモリ１５５と同じである。
【０１６３】
メモリ５５とメモリ１５５は、割り込みＩＴが発生したときの暗号化装置の状態を記憶するメモリの一例である。このように、メモリ５５とメモリ１５５とが暗号化処理の状態を記憶しておくことにより、あるデータの暗号化の最中に他のデータの暗号化を行った場合でも、再びあるデータの暗号化の処理に復帰することができる。即ち、メモリ５５に記憶されたデータとメモリ１５５に記憶された鍵Ｋとを用いることにより、暗号化が中断されたときと全く同じ状態に暗号化装置を復帰させることができ、中断した暗号化処理を続行させることが可能になる。
【０１６４】
なお、メモリ１５５とメモリ１７５は、図６，図８に示すメモリ５５と同じ構成のものでもよい。また、図示していないが、図１６，図１８，図２２，図２４に対して、図２６，図２８に示すような構成を追加して鍵Ｋ1 を保存するようにしてもよい。
【０１６５】
また、図２６のメモリ５５とメモリ１５５とは、同一の動作をするので、１つのメモリに統合してもよい。また、図２８のメモリ７５とメモリ１７５とは、同一の動作をするので、１つのメモリに統合してもよい。
【０１６６】
以上のように、この実施の形態に係る復号装置は、１つ以上のブロックデータＣi （ｉ＝１，２，３，・・・，ｍ）からなる第１の処理データ（暗号文Ｃ）と、１つ以上のブロックデータＤj（ｊ＝１，２，３，・・・，ｎ）からなる第２の処理データ（暗号文Ｄ）との復号処理をする復号装置において、復号処理の状態を記憶するメモリ７５を備え、第１の処理データの全ブロックデータ（Ｃ1〜Ｃm ）の復号処理が完了する前に第２の処理データの最初のブロックデータＤ1 の復号処理を開始するとともに、第２の処理データの最初のブロックデータＤ1の復号処理を開始する場合に第１の処理データの復号処理の状態を上記メモリに記憶させ、第１の処理データの復号処理を再開する場合に復号装置の復号処理の状態をメモリ７５に記憶した第１の処理データの復号処理の状態に復帰させてから第１の処理データの復号処理を再開することを特徴とする。
【０１６７】
また、上記復号装置は、第２の処理データの全ブロックデータ（Ｄ1 〜Ｄn ）の復号処理の完了する前に第１の処理データの復号処理を再開するとともに、上記メモリ７４は、第１の処理データの復号処理を再開する場合に第２の処理データの復号処理の状態を記憶し、第２の処理データの復号処理を再開する場合は、復号装置の復号処理の状態をメモリに記憶した第２の処理データの復号処理の状態に復帰させてから第２の処理データの復号処理を再開することを特徴とする。
【０１６８】
ここで、暗号化処理の状態とは、例えば、
図１のＣＢＣモードでは、暗号化ブロックデータＣi （及び鍵Ｋ1 ）
図１６のＯＦＢモードでは、モジュール出力データＴi （及び鍵Ｋ1 ）
図１８のＣＦＢモードでは、暗号化ブロックデータＣi （及び鍵Ｋ1 ）
のことであり、また、復号処理の状態とは、例えば、
図２０のＣＢＣモードでは、暗号化ブロックデータＣi （及び鍵Ｋ1 ）
図２２のＯＦＢモードでは、モジュール出力データＴi （及び鍵Ｋ1 ）
図２４のＣＦＢモードでは、暗号化ブロックデータＣi （及び鍵Ｋ1 ）
のことである。
【０１６９】
前述した説明においては、３つのモードの場合の暗号化装置と復号装置を説明したが、前述した３つのモードは一例であり、これらのモードの改良されたもの、或いは、これらのモードが変形されたものであっても構わない。特に、特徴となる点は、先のブロックデータが暗号化復号されたときに生成されたブロックデータＣi 又はＭi 又はＴi が次のブロックデータＭi+1又はＣi+1 の暗号化復号処理にフィードバックデータとして用いられる暗号化復号方法において、暗号化復号の状態を記憶するメモリ５５を設け、他のデータの暗号化復号化の処理後にブロックデータＣi又はＭi 又はＴi を用いて再び元の状態に復帰可能にできる点である。従って、特に暗号化モード、復号モードは問わない。
【０１７０】
なお、割り込みＩＴを用いず、ポーリング方式やトークン取得方式等の他のメカニズムを用いて暗号化要求を受け付け、２以上の暗号化復号処理のインタラクティブな並列処理を行うようにしてもよい。
【０１７１】
また、暗号鍵Ｋを用いる暗号化復号処理の場合を示したが、暗号鍵Ｋを用いない暗号化復号処理の場合でもよい。
【０１７２】
実施の形態２．
この実施の形態においては、暗号化装置が秘匿処理とデータの完全性保証処理を行う場合について説明する。
【０１７３】
データの秘匿処理とは、データを暗号化し、データが盗聴されても、或いは、盗まれても意味が分からなくすることである。また、データの完全性保証とは、データが何者かにより置き換えられていることがないことを保証することをいう。データを伝送する場合には、データの秘匿処理を行った上にデータの完全性を保証して伝送したい場合がある。データの秘匿処理は、データを暗号化することにより行われる。データの完全性保証処理は、データの最後に認証子（ＭＡＣ：Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）を付加し、その認証子を検証することにより改竄を発見することにより行われる。
【０１７４】
図２９は、ＯＦＢモードの暗号化部１００により秘匿処理を行い、ＣＢＣモードの認証子生成部２００により認証子（ＭＡＣ）を生成する場合を示している。
【０１７５】
図２９は、１つ以上の平文ブロックデータからなる平文を暗号化モジュール５１により暗号文にし、暗号文に対して暗号文の完全性を保証するための認証子を生成する暗号化装置において、平文ブロックデータを暗号化モジュール５１により暗号化したときに暗号化モジュール５１が出力したモジュール出力ブロックデータＴiを暗号化モジュール５１へ暗号化モジュールへフィードバックする第１のフィードバックループ６５を有し、平文ブロックデータを入力し、第１のフィードバックループ６５によりモジュール出力ブロックデータＴiをフィードバックさせ暗号化処理を行い、暗号文ブロックデータＣi を出力する暗号化部１００と、認証子演算途中結果Ｔiをフィードバックする第２のフィードバックループ６６を有し、暗号化部１００から暗号文ブロックデータＣi が出力されるたびに暗号文ブロックデータＣiを入力し、認証子演算処理を行い、第２のフィードバックループ６６により認証子演算途中結果Ｔi をフィードバックさせ、暗号文の完全性を保証するための認証子Ｐを生成する認証子生成部２００とを備えたことを特徴とする。
【０１７６】
図３０は、図２９に示す暗号化装置の動作手順を示す図である。
【０１７７】
平文ブロックデータＭ1 が、まず暗号文ブロックデータＣ1 に暗号化される。次に、平文ブロックデータＭ2が入力され、暗号文ブロックデータＣ2 に暗号化される。この平文ブロックデータＭ2 の暗号化と同じ時刻に暗号文ブロックデータＣ1が入力され、認証子の演算が始まる。時刻Ｔ１とＴ２の間に平文ブロックデータＭ2 の暗号化と暗号文ブロックデータＣ1 に基づく認証子演算が行われる。また、時刻Ｔ２とＴ３の間では、平文ブロックデータＭ3の暗号化と暗号文ブロックデータＣ2 に基づく認証子の演算が行われる。時刻Ｔ３においては、暗号文ブロックデータＣ3 に基づく認証子の演算が行われ、認証子Ｐが出力される。
【０１７８】
図２９で特徴となる点は、排他的論理和回路５８から出力される暗号文ブロックデータＣi がフィードライン６９により排他的論理和回路５９に入力されている点である。フィードライン６９によりＯＦＢモードとＣＢＣモードの暗号化処理を結合することにより、図３０に示すように、秘匿処理と完全性認証処理がパイプライン処理で実行される。図５２に示した場合は、時刻Ｔ６で処理時間がかかったが、図３０の場合は、時刻Ｔ４で処理が終了して高速処理が行われたことになる。
【０１７９】
図３１は、図２９に示した暗号化装置の動作フローチャート図である。
【０１８０】
Ｓ５１において、ブロックデータカウンタｉを１とする。Ｓ５２は、暗号化部１００の動作であり、暗号化部１００は、平文ブロックデータＭi を入力して平文ブロックデータＭiを暗号化し、暗号文ブロックデータＣi を生成して暗号文ブロックデータＣi を出力する。Ｓ５３は、認証子生成部２００の動作であり、暗号文ブロックデータＣiを入力し暗号文ブロックデータＣi を暗号化し、認証子を演算する。Ｓ５４は、ブロックデータカウンタｉが最後のブロックデータｎを示しているかどうかを判断し、最後のブロックデータでない場合には、Ｓ５５において、ブロックデータカウンタｉを増加させ、再びＳ５２の処理に戻る。即ち、暗号化部１００と認証子生成部２００の処理を繰り返す。Ｓ５４において、最後のブロックデータの処理が終了した場合には、Ｓ５３で演算された直前の認証子が最終的な認証子であるから、Ｓ５６において、その認証子を暗号文ブロックデータＣiの最後に付加する。図３１に示すように、暗号化部１００が暗号文ブロックデータＣi を生成するたびに、認証子生成部２００が暗号文ブロックデータＣiを入力して認証子を演算することによりパイプライン処理が可能になり、高速処理が行われる。
【０１８１】
図３２は、図２９に示した暗号化部１００と認証子生成部２００をあわせたものである。即ち、暗号化部１００と認証子生成部２００の暗号化モジュール５１を兼用し、また、暗号化部１００と認証子生成部２００の排他的論理和回路５８と５９を兼用したものである。更には、暗号化部１００のフィードバックライン６５と認証子生成部２００のフィードバックライン６６を兼用したものである。
【０１８２】
第１セレクタ６１は、秘匿処理の開始時にイニシャルバリューＩＶを選択するものである。第２セレクタ６２は、完全性保証処理の開始時にイニシャルバリューＩＶを選択するものである。第３セレクタ６３は、秘匿処理と完全性保証処理を交互に選択するものである。第３セレクタ６３は入力をＥにすることにより、秘匿処理を行わせることができる。また、第３セレクタ６３は入力をＦにすることにより、完全性保証処理を行わせることができる。
【０１８３】
メモリ９３は、暗号鍵Ｋを用いた暗号化モジュール５１から出力されたモジュール出力データＴi を記録するものである。メモリ９３は、入力スイッチ９６と出力スイッチ９７と第１レジスタ９８と第２レジスタ９９により構成されている。入力スイッチ９６と出力スイッチ９７は、第３セレクタ６３の切り替えと同期しており、第３セレクタ６３が切り替わるたびに入力スイッチ９６及び出力スイッチ９７も切り替わる。
【０１８４】
図３３は、図３２に示す暗号化装置の動作手順を示す図である。
【０１８５】
時刻Ｔ０とＴ１の間で平文ブロックデータＭ1 の秘匿処理が行われる。秘匿処理の途中で生成されたモジュール出力データは、第１レジスタ９８に記憶される。時刻Ｔ１とＴ２の間では、暗号文ブロックデータＣ1に基づく認証子の演算が行われる。完全性保証処理により生成された認証子演算途中結果は、第２レジスタ９９に記憶される。次に、時刻Ｔ２とＴ３の間では、第１レジスタ９８に記憶されたモジュール出力データと平文ブロックデータＭ2に基づいて平文ブロックデータＭ2 の秘匿処理が行われる。次に、時刻Ｔ３とＴ４の間では、第２レジスタ９９に記憶された認証子中間演算結果と暗号文ブロックデータＣ2が入力され、認証子の演算が行われる。この動作を繰り返すことにより、秘匿処理と完全性認証処理が完了し、暗号文と認証子Ｐが出力される。図３３に示す場合は、時刻Ｔ６までで処理が終了し、時間の短縮は図られていないが、図３２に示すように、暗号鍵Ｋを用いた暗号化モジュール５１と排他的論理和回路５８とフィードバックライン６７，６８（フィードバックループ）が兼用されているので、回路規模を小さくすることができる。
【０１８６】
図３４は、ＯＦＢモードの復号化部３００とＣＢＣモードの認証子生成部４００を有する復号装置を示す図である。
【０１８７】
この認証子生成部４００は、認証子生成部２００と同一構成のものである。
【０１８８】
図３４は、１つ以上の暗号文ブロックデータからなる暗号文を平文に復号し、かつ、暗号文に対して暗号文の完全性を確認するための認証子を生成する復号装置において、暗号文ブロックデータＣiを復号モジュール７１により復号したときに生成したモジュール出力ブロックデータＴi をフィードバックする第１のフィードバックループ６５を有し、暗号文ブロックデータＣiを入力し、第１のフィードバックループ６５によりモジュール出力ブロックデータＴi をフィードバックさせ復号処理を行い、平文ブロックデータＭiを出力する復号部３００と、認証子演算途中結果Ｔi をフィードバックする第２のフィードバックループ６６を有し、復号部３００に入力される暗号文ブロックデータＣiと同一の暗号文ブロックデータを入力し、認証子演算処理を行い認証子演算途中結果Ｔi を出力し、第２のフィードバックループ６６により認証子演算途中結果Ｔiをフィードバックさせ、暗号文の完全性を確認するための認証子Ｑを生成する認証子生成部４００とを備えたことを特徴とする。
【０１８９】
暗号文ブロックデータＣi は、復号化部３００の排他的論理和回路７８に入力されると同時に、フィードライン６９により認証子生成部４００に入力される。このような構成により、復号化部３００と認証子生成部４００の処理が同時並列実行され、処理速度が向上する。
【０１９０】
図３５は、図３４に示した復号装置の復号化部３００と認証子生成部４００を一体化したものである。
【０１９１】
図３５は、暗号鍵Ｋを用いた復号モジュール７１とフィードバックライン８７，８８（フィードバックループ）が兼用されている場合を示している。
【０１９２】
第１セレクタ８１は、復号処理の開始時にイニシャルバリューＩＶを選択するものである。第２セレクタ８２は、完全性保証処理の開始時にイニシャルバリューＩＶを選択するものである。第３セレクタ８３は、復号処理と完全性保証処理を交互に選択するものである。第３セレクタ８３は入力をＥにすることにより、復号処理を行わせることができる。また、第３セレクタ８３は入力をＦにすることにより、完全性保証処理を行わせることができる。
【０１９３】
メモリ９３は、暗号鍵Ｋを用いた暗号化モジュール５１から出力されたモジュール出力データＴi を記録するものである。メモリ９３は、入力スイッチ９６と出力スイッチ９７と第１レジスタ９８と第２レジスタ９９により構成されている。入力スイッチ９６と出力スイッチ９７は、第３セレクタ８３の切り替えと同期しており、第３セレクタ８３が切り替わるたびに入力スイッチ９６及び出力スイッチ９７も切り替わる。
【０１９４】
図３６は、図３５に示した復号装置の動作手順を示す図である。
【０１９５】
復号装置は、暗号文と認証子Ｐを入力する。
【０１９６】
時刻Ｔ０とＴ１の間で暗号文ブロックデータＣ1 の復号処理と暗号文ブロックデータＣ1 のレジスタ１１１への保存が行われる。復号処理の途中で生成されたモジュール出力データは、第１レジスタ９８に記憶される。時刻Ｔ１とＴ２の間では、レジスタ１１１に保存された暗号文ブロックデータＣ1に基づく認証子の演算が行われる。完全性保証処理により生成された認証子演算途中結果は、第２レジスタ９９に記憶される。次に、時刻Ｔ２とＴ３の間では、暗号文ブロックデータＣ2がレジスタ１１１に保存され、第１レジスタ９８に記憶されたモジュール出力データと暗号文ブロックデータＣ2 に基づいて平文ブロックデータＭ2の復号処理が行われる。次に、時刻Ｔ３とＴ４の間では、第２レジスタ９９に記憶された認証子中間演算結果とレジスタ１１１に保存された暗号文ブロックデータＣ2が入力され、認証子の演算が行われる。この動作を繰り返すことにより、平文と認証子Ｑが出力される。この認証子Ｑは、認証子Ｐと比較され、認証子Ｐと認証子Ｑが一致していれば、データの完全性が認証できたことになる。これで、復号処理と完全性認証処理が完了する。
【０１９７】
図３７は、図２９のＯＦＢモードの暗号化部１００をＣＢＣモードの暗号化部１００にしたものである。
【０１９８】
図３７は、１つ以上の平文ブロックデータからなる平文を暗号文にし、暗号文に対して暗号文の完全性を保証するための認証子を生成する暗号化装置において、平文ブロックデータを暗号化ユニット５２により暗号化したときに暗号化モジュール５１が出力した暗号文ブロックデータＣi をフィードバックする第１のフィードバックループ６５を有し、平文ブロックデータＭiを入力し、第１のフィードバックループ６５により暗号文ブロックデータＣi をフィードバックさせ暗号化処理を行い、暗号文ブロックデータＣiを出力する暗号化部１００と、認証子演算途中結果Ｔi をフィードバックする第２のフィードバックループ６６を有し、暗号化部１００から暗号文ブロックデータＣiが出力されるたびに暗号文ブロックデータＣi を入力し、認証子演算処理を行い、第２のフィードバックループ６６により認証子演算途中結果Ｔiをフィードバックさせ、暗号文の完全性を保証するための認証子Ｐを生成する認証子生成部４００とを備えたことを特徴とする。
【０１９９】
図３８は、図３４のＯＦＢモードの復号部３００をＣＢＣモードの復号部３００にしたものである。
【０２００】
図３８は、１つ以上の暗号文ブロックデータからなる暗号文を平文に復号し、かつ、暗号文に対して暗号文の完全性を確認するための認証子を生成する復号装置において、暗号文ブロックデータＣi をフィードバックする第１のフィードバックループ８５，８２を有し、暗号文ブロックデータＣiを入力し、第１のフィードバックループ８５，８２により暗号文ブロックデータＣi をフィードバックさせ復号処理を行い、平文ブロックデータＭiを出力する復号部３００と、認証子演算途中結果Ｔi をフィードバックする第２のフィードバックループ６６を有し、復号部３００に入力される暗号文ブロックデータＣiと同一の暗号文ブロックデータＣi を入力し、認証子演算処理を行い認証子演算途中結果Ｔi を出力し、第２のフィードバックループにより認証子演算途中結果Ｔiをフィードバックさせ、暗号文の完全性を確認するための認証子Ｑを生成する認証子生成部４００とを備えたことを特徴とする。
【０２０１】
以上のように、図２９，図３７は、データを入力して暗号化し、暗号データを出力する暗号化部と、暗号化部が出力した暗号データを入力して暗号文の完全性を保証するための認証子を生成する認証子生成部とを備え、認証子生成部は、暗号化部によるデータの暗号化が完了する前に認証子の生成を開始することを特徴とする暗号化装置を示している。
【０２０２】
また、図３４，図３８は、データを入力して復号し、復号データを出力する復号部と、復号部が入力したデータを入力して暗号文の完全性を保証するための認証子を生成する認証子生成部とを備え、認証子生成部は、復号部によるデータの復号が完了する前に認証子の生成を開始することを特徴とする復号装置を示している。
【０２０３】
なお、図示していないが、ＯＦＢモードの暗号化部１００又は復号部３００を用いてもよい。
【０２０４】
また、図示していないが、ＯＦＢモード又はＣＦＢモードの認証子生成部２００を用いてもよい。
【０２０５】
図３９は、暗号化モジュール５１又は復号モジュール７１の構成図である。
【０２０６】
暗号化モジュール５１は、鍵スケジュール部５１１とデータランダマイズ部５１２を有している。鍵スケジュール部５１１は、１つの鍵Ｋを入力してｎ個の拡大鍵ＥｘｔＫ1 〜ＥｘｔＫn を生成する。データランダマイズ部５１２は、関数ＦとＸＯＲ回路とにより乱数を発生させる。関数Ｆは、拡大鍵を入力して非線形データ変換を行う。
【０２０７】
上記暗号化装置の暗号モジュール５１においては、例えば、
（１）ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）、又は、
（２）国際公開番号ＷＯ９７／９７０５（米国特許出願番号０８／８３６４０）に開示されたブロック暗号アルゴリズムであるＭＩＳＴＹ、又は、
（３）上記ブロック暗号アルゴリズムＭＩＳＴＹをベースとした６４ビットブロック暗号であり、次世代携帯電話用国際標準暗号（ＩＭＴ２０００）として採用されることが決定されたブロック暗号アルゴリズムであるＫＡＳＵＭＩ（詳細は、ｈｔｔｐ：／／ｗｗｗ．３ｇｐｐ．ｏｒｇ／Ａｂｏｕｔ＿３ＧＰＰ／３ｇｐｐ．ｈｔｍを参照のこと）、又は、
（４）日本特許出願番号２０００−６４６１４（出願日２０００年３月９日）に記載されたブロック暗号アルゴリズムであるＣａｍｅｌｌｉａ
などのブロック暗号アルゴリズムを用いることができる。また、上記復号装置の復号モジュール７１においても、ＤＥＳ、ＭＩＳＴＹ、ＫＡＳＵＭＩ又はＣａｍｅｌｌｉａなどのブロック暗号アルゴリズムを用いることができる。
【０２０８】
図４０は、前述した暗号化装置又は復号装置の実装形式を示す図である。
【０２０９】
図４０は、ＦＰＧＡ又はＩＣ又はＬＳＩの中に前述した暗号化装置及び復号装置が実現されている場合を示している。即ち、前述した暗号化装置及び復号装置は、ハードウェアで実現することができる。また、図示していないが、プリントサーキットボードにより実現することも可能である。
【０２１０】
図４１は、前述した暗号化装置及び復号装置をソフトウェアで実現する場合を示している。
【０２１１】
前述した暗号化装置は、暗号化プログラム４７で実現することができる。暗号化プログラム４７は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４２（記録媒体の一例）に記憶されている。暗号化プログラム４７は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）又はフレキシブルディスク又は固定ディスク等の他の記録媒体に記録されていてもよい。また、暗号化プログラム４７は、サーバコンピュータからダウンロードされてもよい。暗号化プログラム４７は、サブルーチンとして機能する。暗号化プログラム４７は、ＲＡＭ４５に記憶されたアプリケーションプログラム４６からサブルーチンコールにより呼び出されて実行される。或いは、暗号化プログラム４７は、割り込み制御部４３で受け付ける割り込みの発生により起動されるようにしても構わない。メモリ５５は、ＲＡＭ４５の一部であっても構わない。アプリケーションプログラム４６、暗号化プログラム４７は、ＣＰＵ４１により実行されるプログラムである。
【０２１２】
図４２は、アプリケーションプログラム４６が暗号化プログラム４７を呼び出すメカニズムを示している。
【０２１３】
アプリケーションプログラム４６は、鍵ＫとイニシャルバリューＩＶと平文Ｍと暗号文Ｃをパラメータにして暗号化プログラム４７を呼び出す。暗号化プログラム４７は、鍵ＫとイニシャルバリューＩＶと平文Ｍを入力し、暗号文Ｃを返すものである。暗号化プログラム４７と復号プログラムが同一のときは、鍵ＫとイニシャルバリューＩＶと暗号文Ｃと平文Ｍをパラメータにして暗号化プログラム４７を呼び出す。
【０２１４】
また、図示しないが、暗号化プログラム４７は、デジタルシグナルプロセッサと、そのデジタルシグナルプロセッサにより読み込まれて実行されるプログラムによって実現しても構わない。即ち、ハードウェアとソフトウェアの組み合わせによって暗号化プログラム４７を実現しても構わない。
【０２１５】
図４０，図４１，図４２は、主として、暗号化装置の場合を説明したが、復号装置でも同様の方式で実現できる。
【０２１６】
図４０及び図４１に示したような暗号化装置及び復号装置は、電子機器に対してインストールすることができる。例えば、パーソナルコンピュータやファクシミリ装置や携帯電話やビデオカメラやデジタルカメラやテレビカメラ等のあらゆる電子機器にインストールすることができる。特に、この実施の形態における特徴が発揮できるのは、複数のチャネルからのデータを暗号化復号する場合に有効である。或いは、複数のユーザからのデータがアットランダムに到着して復号する場合に、或いは、複数のユーザに対するデータがアットランダムに発生して、それぞれのデータをリアルタイムに暗号化するような場合に有効である。即ち、暗号化復号するデータの数に比べて暗号化復号する装置の数が少ない場合に、前述した実施の形態の暗号化装置、復号装置が非常に有効である。例えば、多くのクライアントコンピュータをサポートしなければならないサーバコンピュータや多くの携帯電話機からのデータを集配しなければならない基地局や回線コントローラなどに、前述した暗号化装置や復号装置が非常に有効である。
【０２１７】
なお、暗号化処理同士及び復号処理同士の並列処理でなく、暗号化処理と復号処理との並列処理を行うようにしてもよい。
【０２１８】
また、ＯＦＢモードの暗号化部（又は復号化部）とＣＢＣモードの認証子生成部との組み合わせの場合を示したが、ＯＦＢモードとＣＢＣモードとＣＦＢモードとこれらのモードの改良モードとその他のモードとのいずれのモードの組み合わせでも構わない。
【０２１９】
また、認証子生成部が、暗号鍵Ｋを用いた暗号化を行う場合を示したが、認証子生成部は、データの攪拌や演算やその他のデータ処理を行う場合であっても構わない。
【図面の簡単な説明】
【０２２０】
【図１】実施の形態１のＣＢＣモードの暗号化装置を示す図。
【図２】ＣＢＣモードの暗号化装置の動作手順を示す図。
【図３】ＣＢＣモードの暗号化装置の動作フローチャート図。
【図４】セレクタ５４の動作フローチャート図。
【図５】スイッチ５７の割り込み処理フローチャート図。
【図６】メモリ５５の他の例を示す図。
【図７】メモリ５５の割り込み処理フローチャート図。
【図８】メモリ５５の他の例を示す図。
【図９】優先度処理を示す図。
【図１０】優先度処理を示す図。
【図１１】優先度処理を示す図。
【図１２】メモリ５５がフィードバックライン６６と並列に設けられている図。
【図１３】図１２の暗号化装置の動作手順を示す図。
【図１４】メモリ５５がフィードバックライン６７に並列に設けられている図。
【図１５】図１４の暗号化装置の動作手順を示す図。
【図１６】ＯＦＢモードの暗号化装置を示す図。
【図１７】図１６の暗号化装置の動作手順を示す図。
【図１８】ＣＦＢモードの暗号化装置を示す図。
【図１９】図１８の暗号化装置の動作手順を示す図。
【図２０】ＣＢＣモードの復号装置を示す図。
【図２１】図２０の復号装置の動作手順を示す図。
【図２２】ＯＦＢモードの復号装置を示す図。
【図２３】図２２の復号装置の動作手順を示す図。
【図２４】ＣＦＢモードの復号装置を示す図。
【図２５】図２４の復号装置の動作手順を示す図。
【図２６】鍵を保存するＣＢＣモードの暗号化装置を示す図。
【図２７】ＣＢＣモードの暗号化装置の動作手順を示す図。
【図２８】鍵を保存するＣＢＣモードの復号装置を示す図。
【図２９】実施の形態２の暗号化部１００と認証子生成部２００を有する暗号化装置を示す図。
【図３０】暗号化部１００と認証子生成部２００を有する暗号化装置の動作手順を示す図。
【図３１】暗号化部１００と認証子生成部２００を有する暗号化装置のフローチャート図。
【図３２】暗号化部１００と認証子生成部２００を１つにした暗号化装置を示す図。
【図３３】暗号化部１００と認証子生成部２００を１つにした暗号化装置の動作手順を示す図。
【図３４】復号化部３００と認証子生成部４００を有する復号装置を示す図。
【図３５】復号化部３００と認証子生成部４００を１つにした復号装置を示す図。
【図３６】復号化部３００と認証子生成部４００を１つにした復号装置の動作手順を示す図。
【図３７】実施の形態２の暗号化部１００と認証子生成部２００を有する暗号化装置を示す図。
【図３８】復号化部３００と認証子生成部４００を有する復号装置を示す図。
【図３９】暗号鍵Ｋを用いた暗号化モジュール５１の代表的構成図。
【図４０】暗号化装置及び復号装置のハードウェア実現例を示す図。
【図４１】暗号化装置及び復号装置のハードウェア実現例を示す図。
【図４２】アプリケーションプログラム４６により暗号化プログラム４７が呼び出される場合を示す図。
【図４３】従来のＣＢＣモードの暗号化装置を示す図。
【図４４】従来のＣＢＣモードによる復号装置を示す図。
【図４５】従来のＯＦＢモードの暗号化装置を示す図。
【図４６】従来のＯＦＢモードによる復号装置を示す図。
【図４７】従来のＣＦＢモードの暗号化装置を示す図。
【図４８】従来のＣＦＢモードによる復号装置を示す図。
【図４９】従来の暗号化手順を示す図。
【図５０】従来の暗号化手順を示す図。
【図５１】秘匿処理と完全性保証処理を説明する図。
【図５２】従来の秘匿処理と完全性保証処理の動作手順を示す図。
【図１】
2007184000.tif 000003
【図２】
2007184000.tif 000004
【図３】
2007184000.tif 000005
【図４】
2007184000.tif 000006
【図５】
2007184000.tif 000007
【図６】
2007184000.tif 000008
【図７】
2007184000.tif 000009
【図８】
2007184000.tif 000010
【図９】
2007184000.tif 000011
【図１０】
2007184000.tif 000012
【図１１】
2007184000.tif 000013
【図１２】
2007184000.tif 000014
【図１３】
2007184000.tif 000015
【図１４】
2007184000.tif 000016
【図１５】
2007184000.tif 000017
【図１６】
2007184000.tif 000018
【図１７】
2007184000.tif 000019
【図１８】
2007184000.tif 000020
【図１９】
2007184000.tif 000021
【図２０】
2007184000.tif 000022
【図２１】
2007184000.tif 000023
【図２２】
2007184000.tif 000024
【図２３】
2007184000.tif 000025
【図２４】
2007184000.tif 000026
【図２５】
2007184000.tif 000027
【図２６】
2007184000.tif 000028
【図２７】
2007184000.tif 000029
【図２８】
2007184000.tif 000030
【図２９】
2007184000.tif 000031
【図３０】
2007184000.tif 000032
【図３１】
2007184000.tif 000033
【図３２】
2007184000.tif 000034
【図３３】
2007184000.tif 000035
【図３４】
2007184000.tif 000036
【図３５】
2007184000.tif 000037
【図３６】
2007184000.tif 000038
【図３７】
2007184000.tif 000039
【図３８】
2007184000.tif 000040
【図３９】
2007184000.tif 000041
【図４０】
2007184000.tif 000042
【図４１】
2007184000.tif 000043
【図４２】
2007184000.tif 000044
【図４３】
2007184000.tif 000045
【図４４】
2007184000.tif 000046
【図４５】
2007184000.tif 000047
【図４６】
2007184000.tif 000048
【図４７】
2007184000.tif 000049
【図４８】
2007184000.tif 000050
【図４９】
2007184000.tif 000051
【図５０】
2007184000.tif 000052
【図５１】
2007184000.tif 000053
【図５２】
2007184000.tif 000054