(57)【特許請求の範囲】
【請求項１】
暗号化処理もしくは復号化処理を行う第１の暗号処理部と、暗号化処理もしくは復号化処理を行う第２の暗号処理部と、前記第１の暗号処理部および前記第２の暗号処理部を制御する制御部とを有する暗号処理装置であって、
前記制御部は、
前記第１の暗号処理部に鍵の生成を指示する鍵生成指示手段と、
前記鍵生成指示手段の指示に応じて前記第１の暗号処理部から応答された情報に含まれる暗号化鍵を前記第２の暗号処理部へ転送し、該暗号化鍵を復号化して記憶するように指示する鍵記憶指示手段とを備え、
前記第１の暗号処理部は、
前記鍵生成指示手段から鍵の生成を指示された場合に鍵を生成する鍵生成手段と、
前記鍵生成手段によって生成された鍵を予め記憶された第１の鍵を用いて暗号化し、前記暗号化鍵を作成する鍵暗号化手段と、
前記暗号化鍵を含む情報を前記制御部へ応答する暗号化鍵応答手段と、
前記鍵生成手段によって生成された鍵を記憶する第１の記憶手段とを備え、
前記第２の暗号処理部は、
前記鍵記憶指示手段から送信された前記暗号化鍵を予め記憶された第２の鍵を用いて復号化する鍵復号化手段と、
前記鍵復号化手段によって復号化された鍵を記憶する第２の記憶手段とを備え、
前記制御部は、
前記第１の暗号処理部の処理状態を判断する処理状態判断手段と、
前記処理状態判断手段によって前記第１の暗号処理部が暗号化処理もしくは復号化処理を実行中であると判断された場合に、新たな暗号化処理もしくは復号化処理を前記第２の暗号処理部に実行させる暗号処理部選択手段とを含むことを特徴とする暗号処理装置。
【請求項２】
前記第１の暗号処理部は、前記鍵生成手段によって鍵が生成されるたびに、予め記憶されている第１のカウンタ値をインクリメントすることにより、該鍵に対応する第１のＩＤを生成する第１のＩＤ生成手段をさらに備え、
前記暗号化鍵応答手段は、前記第１のＩＤ生成手段によって生成された第１のＩＤと、該第１のＩＤに対応する鍵を前記鍵暗号化手段が暗号化することにより作成された暗号化鍵とを含む情報を前記制御部へ応答し、
前記第２の暗号処理部は、
前記鍵復号化手段によって鍵が復号化されるたびに、予め記憶されている第２のカウンタ値をインクリメントすることにより、該鍵に対応する第２のＩＤを生成する第２のＩＤ生成手段と、
前記第２のＩＤ生成手段によって生成された前記第２のＩＤを前記制御部へ応答する第２のＩＤ応答手段とをさらに備え、
前記制御部は、前記暗号化鍵応答手段によって応答された情報に含まれる前記第１のＩＤと、前記第２のＩＤ応答手段によって応答された前記第２のＩＤとを比較することにより、前記第１の暗号処理部と前記第２の暗号処理部の整合性を確認することを特徴とする請求項１に記載の暗号処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、平文の暗号化、暗号文の復号化に用いられる暗号処理装置に関するものであり、特に、暗号処理の負荷分散を図ることができる暗号処理装置に関するものである。
【０００２】
【従来の技術】
近年、電話回線、ＩＳＤＮ（Integrated Services Digital Network）、ＬＡＮ（Local Area Network）、無線通信網、光通信網等のオープンなネットワークにおいては、第三者による情報の盗聴、改ざん、成りすまし等の脅威に対処するための種々の技術が検討されている。
【０００３】
その最も代表的な例としては、ＲＳＡ（Rivest Shamir Adleman）やＤＥＳ（Data Encryption Standard）等の暗号アルゴリズムにより、平文を暗号化し、この暗号化された暗号文を実際のネットワーク上の伝送や、情報端末への保存に用いるようにした暗号化技術が知られている。
【０００４】
この種の暗号化技術を適用した暗号処理システムでは、平文を暗号文に暗号化する暗号処理部と、暗号文を平文に復号化する復号処理部とを備えており、暗号化および復号化に鍵が用いられる。従って、暗号処理システムでは、鍵の外部漏洩による解読を防止すべく、厳重な鍵の管理がセキュリティ上、必須とされている。
【０００５】
図２２は、従来の暗号処理システムの構成を示すブロック図である。この図において、暗号処理装置１０は、セキュリティ保護されたｎ枚の暗号処理ユニット２０0 〜２０n を実装しており、外部から入力される平文の暗号化、暗号文の復号化、暗号化／復号化に用いられる鍵の生成等を行う装置である。
【０００６】
ドライバ４０は、上位装置５０からの命令に従って、ＰＣＩ（Peripheral Component Interconnect）バス３０を介して、暗号処理ユニット２０0 〜２０n を駆動制御する。上位装置５０は、暗号化／復号化用のアプリケーションプログラムを実行するコンピュータ装置であり、鍵の生成、暗号化、復号化に関する各種命令をドライバ４０に対して発行する。
【０００７】
暗号処理ユニット２０0 〜２０n のそれぞれは、ドライバ４０の制御の下で、暗号化／復号化に用いられる鍵を生成する機能と、鍵を識別するための鍵ＩＤを発行する機能と、暗号アルゴリズム（ＲＳＡ、ＤＥＳ等）により上記鍵で平文を暗号化する機能と、上記鍵で暗号文を復号化する機能とを備えている。
【０００８】
図２３は、図２２に示した暗号処理ユニット２０0 および２０1 の構成を示すブロック図である。この図において、図２２の各部に対応する部分には同一の符号を付ける。同図に示した暗号処理ユニット２０0 において、セキュリティガード２１0 は、暗号処理ユニット２０0 に対する外部からのアタック（鍵の不正取得を目的とした物理的な破壊等）を検出する機能と、検出時に、内部に保持されている鍵を強制消去する機能とを備えている。
【０００９】
ＰＣＩ制御部２２0 は、ドライバ４０（図２２参照）と暗号処理ユニット２０0 との通信インタフェースであるＰＣＩバス３０を制御する。制御部２３0 は、プログラムを実行し各部を制御するＭＰＵ（Micro Processing Unit）や、記憶領域としてのＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等から構成されている。
【００１０】
計時部２４0 は、リアルタイムクロックであり、鍵生成部２５0 へ時々刻々、時刻情報を出力する。鍵生成部２５0 は、鍵生成命令に従って、乱数、時刻情報、積算タイマ等を用いて、ユニークな鍵６０0 を生成する。また、鍵生成部２５0 は、鍵６０0 を識別するための鍵ＩＤ６１0 （図２４参照）をドライバ４０へ送信する。ＲＡＭ２６0 は、鍵を鍵ＩＤと対応づけて格納する。
【００１１】
ここで、注意すべきは、暗号処理ユニット２０0 から外部へは、鍵ＩＤ６１0 が送信されるのであって、鍵６０0 自体は送信されない点である。このように、従来の暗号処理システムにおいては、鍵の生成および保持を暗号処理ユニット２０0 でクローズさせて、外部に鍵を流出させないことにより、高いセキュリティが維持される。
【００１２】
バッテリ２７0 は、計時部２４0 およびＲＡＭ２６0 のバックアップ電源である。暗号／復号処理部２８0 は、外部からの命令および鍵ＩＤに従って、鍵ＩＤに対応する鍵を用いて、平文を暗号化する機能と、該鍵を用いて、暗号文を復号化する機能とを備えている。
【００１３】
暗号処理ユニット２０1 は、上述した暗号処理ユニット２０0 と同一構成とされており、セキュリティガード２１1 、ＰＣＩ制御部２２1 、制御部２３1 、計時部２４1 、鍵６０1 を生成する鍵生成部２５1 、ＲＡＭ２６1 、バッテリ２７1 および暗号／復号処理部２８1 から構成されている。
【００１４】
ここで、暗号処理ユニット２０0 の鍵生成部２５0 で生成される鍵６０0 と、暗号処理ユニット２０1 の鍵生成部２５1 で生成される鍵６０1 とは、別異である。従って、暗号処理ユニット２０0 で暗号化された暗号文は、暗号処理ユニット２０0 のみで復号化が可能であり、暗号処理ユニット２０1 での復号化は不可能である。
【００１５】
なお、その他の暗号処理ユニット（暗号処理ユニット２０2（図示略）〜２０n）は、上述した暗号処理ユニット２０0 と同一構成とされている。但し、その他の暗号処理ユニットでそれぞれ生成される鍵は、ユニークなものである。
【００１６】
つぎに、従来の暗号処理システムの鍵生成処理について、図２４を参照して説明する。まず、上位装置５０により、暗号処理ユニット２０0 に対応する鍵生成命令７０0 が発行されると、ドライバ４０は、暗号処理ユニット２０0 に鍵生成を依頼する。
【００１７】
これにより、鍵生成部２５0 は、鍵６０0 および鍵ＩＤ６１0 を生成し、ＲＡＭ２６0 （図２３参照）に格納する。つぎに、鍵生成部２５0 は、ドライバ４０へ鍵ＩＤ６１0 を送信する。この鍵ＩＤ６１0 は、ドライバ４０により上位装置５０へ渡される。
【００１８】
続いて、上位装置５０により、暗号処理ユニット２０1 に対応する鍵生成命令７０1 が発行されると、ドライバ４０は、暗号処理ユニット２０1 に鍵生成を依頼する。
【００１９】
これにより、鍵生成部２５1 は、鍵６０1 および鍵ＩＤ６１1 を生成し、ＲＡＭ２６1 （図２３参照）に格納する。つぎに、鍵生成部２５1 は、ドライバ４０へ鍵ＩＤ６１1 を送信する。この鍵ＩＤ６１1 は、ドライバ４０により上位装置５０へ渡される。
【００２０】
つぎに、従来の暗号処理システムの暗号化処理について、図２５を参照して説明する。まず、上位装置５０により、暗号処理ユニット２０0 に対応する暗号化命令７１0 が発行されると、ドライバ４０は、暗号処理ユニット２０0 に暗号化を依頼する。また、暗号処理ユニット２０0 には、上位装置５０からの平文７２0 および鍵ＩＤ６１0 も渡される。
【００２１】
これにより、暗号／復号処理部２８0 は、鍵ＩＤ６１0 に対応する鍵６０0 を用いて、平文７２0 を暗号文７３0 に暗号化し、ドライバ４０へ暗号文７３0 を送信する。この暗号文７３0 は、ドライバ４０により上位装置５０へ渡される。
【００２２】
続いて、暗号処理ユニット２０1 に対応する暗号化命令７１1 が発行されると、ドライバ４０は、暗号処理ユニット２０1 に暗号化を依頼する。また、暗号処理ユニット２０1 には、上位装置５０からの平文７２1 および鍵ＩＤ６１1 も渡される。
【００２３】
これにより、暗号／復号処理部２８1 は、鍵ＩＤ６１1 に対応する鍵６０1 を用いて、平文７２1 を暗号文７３1 に暗号化し、ドライバ４０へ暗号文７３1 を送信する。この暗号文７３1 は、ドライバ４０により上位装置５０へ渡される。
【００２４】
つぎに、従来の暗号処理システムの復号化処理について、図２６を参照して説明する。まず、上位装置５０により、暗号処理ユニット２０0 に対応する復号化命令７４0 が発行されると、ドライバ４０は、暗号処理ユニット２０0 に復号化を依頼する。また、暗号処理ユニット２０0 には、上位装置５０からの暗号文７３0 および鍵ＩＤ６１0 も渡される。
【００２５】
これにより、復号化／復号処理部２８0 は、鍵ＩＤ６１0 に対応する鍵６０0 を用いて、暗号文７３0 を平文７２0 に復号化し、ドライバ４０へ平文７２0 を送信する。この平文７２0 は、ドライバ４０により上位装置５０へ渡される。
【００２６】
続いて、上位装置５０により、暗号処理ユニット２０1 に対応する復号化命令７４1 が発行されると、ドライバ４０は、暗号処理ユニット２０1 に復号化を依頼する。また、暗号処理ユニット２０1 には、上位装置５０からの暗号文７３1 および鍵ＩＤ６１1 も渡される。
【００２７】
これにより、復号化／復号処理部２８1 は、鍵ＩＤ６１1 に対応する鍵６０1 を用いて、暗号文７３1 を平文７２1 に復号化し、ドライバ４０へ平文７２1 を送信する。この平文７２1 は、ドライバ４０により上位装置５０へ渡される。
【００２８】
【発明が解決しようとする課題】
ところで、前述したように、従来の暗号処理システムにおいては、鍵ＩＤと暗号処理ユニットとが１対１で対応しているため、暗号化処理または復号化処理（総称して暗号処理とする）の依頼時に当該暗号処理ユニットが別の処理を実行中である場合、該処理が完了するまでの間、ビジー（処理待ち）状態となる。
【００２９】
具体的には、図２５に示した暗号処理ユニット２０0 に対して暗号化命令７１0 が発行されたとき、既に、暗号処理ユニット２０0 で別の処理が実行中である場合、この別の処理が完了するまで、暗号化命令７１0 に基づく暗号化処理が開始されず、ビジー状態となる。
【００３０】
なお、従来の暗号処理システムでは、鍵ＩＤと暗号処理ユニットとが１対１で対応しているため、上記ビジー状態で他の暗号処理ユニット（例えば、暗号処理ユニット２０1 ）に暗号化処理を依頼することができない。復号化処理の場合にも同様の問題が発生する。
【００３１】
このように、従来の暗号処理システムでは、暗号処理装置１０にｎ枚の暗号処理ユニット２０0 〜２０n が実装されているにもかかわらず、暗号化処理または復号化処理に関する負荷分散を行うことができず、特定の１枚の暗号処理ユニットに暗号化処理または復号化処理が集中する可能性が高いという問題があった。
【００３２】
本発明は、上記に鑑みてなされたもので、暗号処理の負荷分散を図ることができる暗号処理装置を提供することを目的とする。
【００３３】
【課題を解決するための手段】
上記目的を達成するために、本発明は、暗号化処理もしくは復号化処理を行う第１の暗号処理部と、暗号化処理もしくは復号化処理を行う第２の暗号処理部と、前記第１の暗号処理部および前記第２の暗号処理部を制御する制御部とを有する暗号処理装置であって、前記制御部は、前記第１の暗号処理部に鍵の生成を指示する鍵生成指示手段と、前記鍵生成指示手段の指示に応じて前記第１の暗号処理部から応答された情報に含まれる暗号化鍵を前記第２の暗号処理部へ転送し、該暗号化鍵を復号化して記憶するように指示する鍵記憶指示手段とを備え、前記第１の暗号処理部は、前記鍵生成指示手段から鍵の生成を指示された場合に鍵を生成する鍵生成手段と、前記鍵生成手段によって生成された鍵を予め記憶された第１の鍵を用いて暗号化し、前記暗号化鍵を作成する鍵暗号化手段と、前記暗号化鍵を含む情報を前記制御部へ応答する暗号化鍵応答手段と、前記鍵生成手段によって生成された鍵を記憶する第１の記憶手段とを備え、前記第２の暗号処理部は、前記鍵記憶指示手段から送信された前記暗号化鍵を予め記憶された第２の鍵を用いて復号化する鍵復号化手段と、前記鍵復号化手段によって復号化された鍵を記憶する第２の記憶手段とを備えたことを特徴とする。
【００３４】
この発明によれば、複数の暗号処理ユニットのうち鍵を生成した暗号処理ユニットは、生成した鍵を暗号化し、暗号化鍵を他の暗号処理ユニットへ配り、他の暗号処理ユニットのそれぞれは、暗号化鍵を復号し、上記暗号処理ユニットで生成された鍵と同一の鍵を保持するようにしたので、複数の暗号処理ユニット間で同一の鍵が共有化され、複数の暗号処理ユニットのうちいずれの暗号処理ユニットでも同一の暗号処理が実行でき、暗号処理の負荷分散を図ることができる。
【００３５】
また、本発明は、前記第１の暗号処理部は、前記鍵生成手段によって鍵が生成されるたびに、予め記憶されている第１のカウンタ値をインクリメントすることにより、該鍵に対応する第１のＩＤを生成する第１のＩＤ生成手段をさらに備え、前記暗号化鍵応答手段は、前記第１のＩＤ生成手段によって生成された第１のＩＤと、該第１のＩＤに対応する鍵を前記鍵暗号化手段が暗号化することにより作成された暗号化鍵とを含む情報を前記制御部へ応答し、前記第２の暗号処理部は、前記鍵復号化手段によって鍵が復号化されるたびに、予め記憶されている第２のカウンタ値をインクリメントすることにより、該鍵に対応する第２のＩＤを生成する第２のＩＤ生成手段と、前記第２のＩＤ生成手段によって生成された前記第２のＩＤを前記制御部へ応答する第２のＩＤ応答手段とをさらに備え、前記制御部は、前記暗号化鍵応答手段によって応答された情報に含まれる前記第１のＩＤと、前記第２のＩＤ応答手段によって応答された前記第２のＩＤとを比較することにより、前記第１の暗号処理部と前記第２の暗号処理部の整合性を確認することを特徴とする。
【００３６】
この発明によれば、各暗号処理部が鍵と対応付けて生成したＩＤが一致することを制御部が確認することとしたので、制御部は、ＩＤを指定することにより、全ての暗号処理部に対しても、同じ鍵による暗号化処理もしくは復号化処理を実行させることができる。
【００３７】
また、本発明は、前記制御部は、前記第１の暗号処理部の処理状態を判断する処理状態判断手段と、前記処理状態判断手段によって前記第１の暗号処理部が暗号化処理もしくは復号化処理を実行中であると判断された場合に、新たな暗号化処理もしくは復号化処理を前記第２の暗号処理部に実行させる暗号処理部選択手段とをさらに備えたことを特徴とする。
【００３８】
この発明によれば、前記第１の暗号処理部が暗号化処理もしくは復号化処理を実行中の場合は、新たな暗号化処理もしくは復号化処理を前記第２の暗号処理部に実行させることとしたので、新たな暗号化処理もしくは復号化処理の実行完了を早めることができる。
【００３９】
【発明の実施の形態】
以下、図面を参照して本発明にかかる暗号処理装置の一実施の形態について詳細に説明する。
【００４０】
図１は、本発明にかかる一実施の形態の構成を示すブロック図である。同図には、暗号処理装置１００、ＰＣＩバス３００、ドライバ４００および上位装置５００から構成された暗号処理システムが図示されている。暗号処理装置１００は、セキュリティ保護されたｎ枚の暗号処理ユニット２００0 〜２００n を実装しており、外部から入力される平文の暗号化、暗号文の復号化、暗号化／復号化に用いられる鍵の生成等を行う装置である。
【００４１】
ドライバ４００は、上位装置５００からの命令に従って、ＰＣＩバス３００を介して、暗号処理ユニット２００0 〜２００n を駆動制御する。上位装置５００は、暗号化／復号化用のアプリケーションプログラムを実行するコンピュータ装置であり、鍵の登録、削除、暗号化、復号化等に関する各種命令をドライバ４００に対して発行する。
【００４２】
暗号処理ユニット２００0 〜２００n のそれぞれは、ドライバ４００の制御の下で、暗号化／復号化に用いられる鍵を生成する機能、鍵を識別するための鍵ＩＤを発行する機能、暗号アルゴリズムにより上記鍵で平文を暗号化する機能、上記鍵で暗号文を復号化する機能に加えて、鍵を共有化する機能や、鍵の整合を採る機能等を備えている。ここで、暗号処理ユニット２００0 で生成された鍵は、暗号処理ユニット２００1 〜２００n に配られる。
【００４３】
図２は、図１に示した暗号処理ユニット２００0 および２００1 の構成を示すブロック図である。この図において、図１の各部に対応する部分には同一の符号を付ける。同図に示した暗号処理ユニット２００0 において、セキュリティガード２０１0 は、暗号処理ユニット２００0 に対する外部からのアタックを検出し、鍵を強制消去する機能を備えている。
【００４４】
ＰＣＩ制御部２０２0 は、ドライバ４００（図１参照）と暗号処理ユニット２００0 との通信インタフェースであるＰＣＩバス３００を制御する。制御部２０３0 は、プログラムを実行し各部を制御するＭＰＵや、記憶領域としてのＲＯＭ、ＲＡＭ等から構成されている。この制御部２０３0 の詳細については、後述する。
【００４５】
計時部２０４0 は、リアルタイムクロックであり、必要に応じて鍵生成部２０５0 へ時刻情報を出力する。鍵生成部２０５0 は、乱数、時刻情報、積算タイマ等を用いて、ユニークな鍵６００0 を生成する。また、鍵生成部２０５0 は、鍵６００0 を識別するための鍵ＩＤを発行しドライバ４００へ送信する。
【００４６】
ＲＡＭ２０６0 は、図３および図４に示した鍵管理テーブル７００を格納する。この鍵管理テーブル７００には、生成された鍵が鍵ＩＤと対応づけて登録されている。具体的には、鍵管理テーブル７００には、例えば、図４に示した鍵情報７００1〜７００3 が登録されている。これらの鍵情報７００1〜７００3 は、アドレスのリンクにより、図３に示した鍵情報キュー群を構成しており、鍵ＩＤ、鍵（２４バイト）、ＮＵＬＬ、次アドレス、前アドレスの情報からなる。
【００４７】
また、鍵管理テーブル７００において、鍵情報が無い状態では、空キュー群が存在する。鍵および鍵ＩＤの登録時には、空キュー群のうちいずれかの空キューに鍵および鍵ＩＤが登録され、鍵情報とされる。
【００４８】
ここで、注意すべきは、暗号処理ユニット２００0 から上位装置５００へは、鍵ＩＤが送信されるのであって、鍵６００0 自体は送信されない点である。なお、後述するように、暗号処理ユニット２００0 からドライバ４００へは、鍵６００0 が暗号化された暗号化鍵が送信される。このように、一実施の形態では、前述した従来の暗号処理システムと同様にして、鍵の生成および保持を暗号処理ユニット２００0 でクローズさせて、外部に鍵を流出させないことにより、高いセキュリティが維持される。
【００４９】
さらに、ＲＡＭ２０６0 は、図５に示した鍵シーケンス情報８００と同一のフォーマットである鍵シーケンス情報８００0（図１８参照）を格納している。この鍵シーケンス情報８００は、鍵の登録または削除の命令実行に関するシーケンスの履歴に関する情報であり、シーケンス履歴情報８０１、装置番号８０２、ユニット番号８０３および時刻情報８０４から構成されている。
【００５０】
シーケンス履歴情報８０１は、命令実行時に１インクリメントされるシーケンス番号および履歴（鍵登録または削除、鍵ＩＤ）から構成されており、最大四世代分の情報からなる。装置番号８０２は、当該暗号処理ユニットが実装されている暗号処理装置１００（図１参照）を識別するための番号である。ユニット番号８０３は、当該暗号処理ユニットを識別するための番号である。時刻情報８０４は、命令が実行された時刻である。
【００５１】
図２に戻り、バッテリ２０７0 は、計時部２０４0 およびＲＡＭ２０６0 のバックアップ電源である。暗号／復号処理部２０８0 は、外部からの命令および鍵ＩＤに従って、鍵ＩＤに対応する鍵を用いて、平文を暗号化する機能と、該鍵を用いて、暗号文を復号化する機能とを備えている。また、暗号／復号処理部２０８0 は、鍵生成部２０５0 により生成された鍵を暗号化する機能も備えている。
【００５２】
暗号処理ユニット２００1 は、上述した暗号処理ユニット２００0 と同一構成、同一機能を有しており、セキュリティガード２０１1 、ＰＣＩ制御部２０２1 、制御部２０３1 、計時部２０４1 、鍵６００1 を生成する鍵生成部２０５1 、ＲＡＭ２０６1 、バッテリ２０７1 および暗号／復号処理部２０８1 から構成されている。但し、暗号／復号処理部２０８1 は、鍵６００0 が暗号化された暗号化鍵を復号する機能も備えている。
【００５３】
なお、その他の暗号処理ユニット（暗号処理ユニット２００2（図示略）〜２００n ）は、上述した暗号処理ユニット２００0 および２００1 と同一構成、同一機能を有している。
【００５４】
つぎに、一実施の形態の動作について、図６〜図１７に示したフローチャート、図１８〜図２０を参照しつつ説明する。図６は、図１に示したドライバ４００の動作を説明するフローチャートである。図１１は、図１に示した暗号処理ユニット２００0 の動作を説明するフローチャートである。図１６は、図１に示した暗号処理ユニット２００1 〜２００n の動作を説明するフローチャートである。
【００５５】
図６に示したステップＳＡ１では、ドライバ４００は、上位装置５００からの暗号化鍵生成命令を受信したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。この暗号化鍵生成命令は、暗号処理ユニット２００0 で鍵生成および生成された鍵の暗号化を実行させるための命令である。
【００５６】
ステップＳＡ２では、ドライバ４００は、上位装置５００からの暗号化命令（または復号化命令）とともに鍵ＩＤおよび平文（または暗号文）を受信したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。暗号化命令は、暗号処理ユニット２００0 〜２００n のうち処理に空きがある暗号処理ユニットで平文の暗号化を実行させるための命令である。一方、復号化命令は、暗号処理ユニット２００0 〜２００n のうち処理に空きがある暗号処理ユニットで暗号文の復号化を実行させるための命令である。
【００５７】
ステップＳＡ３では、ドライバ４００は、暗号処理システムが電源投入またはリブートにより起動されたか否かを判断し、この場合、判断結果を「Ｎｏ」とする。以後、ドライバ４００は、ステップＳＡ１〜ステップＳＡ３の判断を繰り返す。
【００５８】
一方、図１１に示したステップＳＥ１では、暗号処理ユニット２００0 の制御部２０３0 （図２参照）は、ドライバ４００からの暗号化鍵生成命令を受信したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。ステップＳＥ２では、制御部２０３0 は、ドライバ４００からの暗号化命令または復号化命令を受信したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【００５９】
ステップＳＥ３では、制御部２０３0 は、ドライバ４００から、後述するシーケンス命令を受信したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。ステップＳＥ４では、制御部２０３0 は、ドライバ４００からの後述する鍵整合命令を受信したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。以後、制御部２０３0 は、ステップＳＥ１〜ステップＳＥ４の判断を繰り返す。
【００６０】
また、図１６に示したステップＳＪ１では、暗号処理ユニット２００1 の制御部２０３1 （図２参照）は、ドライバ４００からの暗号化鍵復号化命令、暗号化鍵を受信したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。暗号化鍵復号化命令は、暗号処理ユニット２００0 で生成され、ドライバ４００経由で配られた暗号化鍵を暗号処理ユニット２００1 で復号化させるための命令である。
【００６１】
ステップＳＪ２では、制御部２０３1 は、ドライバ４００からの暗号化命令（または復号化命令）を受信したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。ステップＳＪ３では、制御部２０３1 は、ドライバ４００からのシーケンス命令を受信したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【００６２】
ステップＳＪ４では、制御部２０３1 は、ドライバ４００からの鍵整合命令を受信したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。以後、制御部２０３1 は、ステップＳＪ１〜ステップＳＪ４の判断を繰り返す。なお、他の暗号処理ユニット２００2 （図示略）〜２００n においても、暗号処理ユニット２００1 と同様にして、図１６に示したフローチャートに従って処理が実行される。
【００６３】
ここで、上位装置５００により発行された暗号化鍵生成命令がドライバ４００に受信されると、ドライバ４００は、図６に示したステップＳＡ１の判断結果を「Ｙｅｓ」とする。ステップＳＡ４では、ドライバ４００は、暗号化鍵生成処理を実行する。
【００６４】
具体的には、図７に示したステップＳＢ１では、ドライバ４００は、ユニット番号０の暗号処理ユニット２００0 に対して、暗号化鍵生成命令を発行する。これにより、暗号処理ユニット２００0 の制御部２０３0（図２参照）は、図１１に示したステップＳＥ１の判断結果を「Ｙｅｓ」とする。ステップＳＥ５では、暗号化鍵生成処理が実行される。
【００６５】
なお、本一実施の形態では、ユニット番号０に対応する暗号処理ユニット２００0 における暗号化鍵生成処理について説明したが、他の暗号処理ユニットも同一の構成、機能を有しており、暗号化鍵生成処理を実行することが可能である。
【００６６】
具体的には、図１２に示したステップＳＦ１では、制御部２０３0 は、受信された命令を解読し、該命令が暗号化鍵生成命令であることを認識する。ステップＳＦ２では、制御部２０３0 は、暗号化鍵生成命令のパラメータに異常があるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【００６７】
ステップＳＦ３では、鍵生成部２０５0 は、計時部２０４0 の時刻情報、乱数、積算タイマ等に基づいて、鍵を生成する。ステップＳＦ４では、鍵生成部２０５0 は、生成された鍵を識別するためのユニークな鍵ＩＤを発行する。なお、この鍵ＩＤは、暗号処理ユニット２００0 内で鍵が生成されたり、他の暗号処理ユニットより受信した暗号化鍵を復号する都度、鍵ＩＤカウンタ（図示略）をインクリメントして発行されるものである。
【００６８】
ステップＳＦ５では、制御部２０３0 は、図４に示した鍵管理テーブル７００にステップＳＦ３で生成された鍵と、ステップＳＦ４で発行された鍵ＩＤ、アドレスを、例えば、鍵情報７００3 として登録する。
【００６９】
つぎに、制御部２０３0 は、図５に示した鍵シーケンス情報８００と同一のフォーマットの鍵シーケンス情報８００0（図１８参照）を更新する。具体的には、制御部２０３0 は、シーケンス履歴情報（シーケンス履歴情報８０１：図５参照）に１インクリメントしたシーケンス番号、履歴（鍵登録（鍵ＩＤ））を追加するとともに、時刻情報（時刻情報８０４：図５参照）を更新する。
【００７０】
図１２に戻り、ステップＳＦ６では、暗号／復号処理部２０８0 は、共通鍵を用いて、ステップＳＦ３で生成された鍵を暗号化する。ステップＳＦ７では、制御部２０３0 は、ステップＳＦ６で暗号化された暗号化鍵、およびステップＳＦ４で生成された鍵ＩＤをドライバ４００へ送信する。
【００７１】
ステップＳＦ８では、制御部２０３0 は、ドライバ４００に対して正常終了を通知する。なお、ステップＳＦ２の判断結果が「Ｙｅｓ」である場合、ステップＳＦ９では、制御部２０３0 は、ドライバ４００に対して異常終了を通知する。
【００７２】
図７に戻り、ステップＳＢ２では、ドライバ４００は、暗号処理ユニット２００0 から正常終了の応答があるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＢ３では、ドライバ４００は、暗号処理ユニット２００0 からの暗号化鍵および鍵ＩＤを受信する。
【００７３】
ステップＳＢ４では、ドライバ４００は、ユニットカウンタＣｃに１を代入する。このユニットカウンタＣｃは、暗号化鍵復号化命令の発行先である暗号処理ユニットに対応している。例えば、ユニットカウンタＣｃ＝０は、暗号処理ユニット２００0 に対応しており、ユニットカウンタＣｃ＝ｎは、暗号処理ユニット２００n に対応している。
【００７４】
ステップＳＢ５では、ドライバ４００は、ユニットカウンタＣｃ（＝１）に対応する暗号処理ユニット２００1 に対して暗号化鍵復号化命令を発行するとともに、暗号化鍵を送信する。
【００７５】
そして、上記暗号化鍵復号化命令および暗号化鍵が暗号処理ユニット２００1 に受信されると、制御部２０３1 （図２参照）は、図１６に示したステップＳＪ１の判断結果を「Ｙｅｓ」とする。ステップＳＪ５では、暗号化鍵復号化処理が実行される。
【００７６】
具体的には、図１７に示したステップＳＫ１では、制御部２０３1 は、受信された命令を解読し、該命令が暗号化鍵復号化命令であることを認識する。ステップＳＫ２では、制御部２０３1 は、暗号化鍵復号化命令のパラメータに異常があるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【００７７】
ステップＳＫ３では、暗号／復号処理部２０８1 は、共通鍵を用いて暗号化鍵を復号する。ステップＳＫ４では、制御部２０３1 は、鍵管理テーブル（図示略）に鍵情報（復号化された鍵、受信された鍵ＩＤ、アドレス）を登録する。なお、鍵ＩＤは、暗号処理ユニット２００0 内の鍵生成時の処理（ステップＳＦ４：図１２参照）と同様にして、鍵ＩＤカウンタ（図示略）をインクリメントして発行される。
【００７８】
つぎに、制御部２０３1 は、図５に示した鍵シーケンス情報８００と同一のフォーマットである鍵シーケンス情報８００1（図１８参照）を更新する。具体的には、制御部２０３1 は、シーケンス履歴情報（シーケンス履歴情報８０１：図５参照）に１インクリメントしたシーケンス番号、履歴（鍵登録（鍵ＩＤ））を追加するとともに、時刻情報（時刻情報８０４：図５参照）を更新する。ステップＳＫ５では、制御部２０３1 は、復号化された鍵に対応する鍵ＩＤをドライバ４００へ送信する。
【００７９】
ステップＳＫ６では、制御部２０３1 は、ドライバ４００に対して正常終了を通知する。なお、ステップＳＫ２の判断結果が「Ｙｅｓ」である場合、ステップＳＫ７では、制御部２０３1 は、ドライバ４００に対して異常終了を通知する。
【００８０】
図７に戻り、ステップＳＢ６では、ドライバ４００は、暗号化鍵復号化命令の発行先の暗号処理ユニット（この場合、暗号処理ユニット２００1 ）から正常終了の応答があるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＢ７では、ドライバ４００は、上記暗号処理ユニット（この場合、暗号処理ユニット２００1 ）より鍵ＩＤを受信する。
【００８１】
ステップＳＢ８では、ドライバ４００は、ステップＳＢ５で送信された鍵ＩＤと、ステップＳＢ７で受信された鍵ＩＤとが一致するか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。両鍵ＩＤが一致した場合には、暗号処理ユニット２００0 で生成された鍵と同一の鍵が暗号処理ユニット２００1 に正常に配られたことを意味する。
【００８２】
ステップＳＢ９では、ドライバ４００は、ユニットカウンタＣｃを１インクリメント（１＋１＝２）とする。ステップＳＢ１０では、ドライバ４００は、ユニットカウンタＣｃ（＝２）が、ｎ（暗号処理ユニットの全数）＋１であるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【００８３】
以後、ステップＳＢ４〜ステップＳＢ１０が繰り返され、暗号処理ユニット２００2 （図示略）→暗号処理ユニット２００3 （図示略）→・・・→暗号処理ユニット２００n の順に暗号化鍵復号化命令の発行、暗号化鍵の復号、鍵の登録という一連の処理が実行される。これにより、以後、暗号処理ユニット２００0 で生成された鍵が暗号処理ユニット２００2 （図示略）〜２００n に順次配られる。
【００８４】
このように、１つの暗号処理ユニット内で生成された鍵は、必ず他の全ての暗号処理ユニット内にも存在することになる。つまり、いずれの暗号処理ユニットにおいても、保有する鍵が同一である。また、鍵ＩＤは、各暗号処理ユニット内で鍵が登録される都度、鍵ＩＤカウンタをインクリメントして発行されるものである。従って、理論上、同一の鍵についての鍵ＩＤは、いずれの暗号処理ユニットにおいても同一となる。
【００８５】
そして、ステップＳＢ１０の判断結果が「Ｙｅｓ」になると、ステップＳＢ１１では、ドライバ４００は、暗号化鍵生成命令の正常終了を上位装置５００へ通知する。なお、ステップＳＢ２、ステップＳＢ６またはステップＳＢ８の判断結果が「Ｎｏ」である場合、ステップＳＢ１２では、ドライバ４００は、上位装置５００に対して暗号化鍵生成命令の異常終了を通知する。また、暗号処理ユニット２００0 〜２００n で同一鍵を順次削除する場合は、鍵削除命令が発行される。
【００８６】
ここで、上位装置５００により発行された暗号化命令（平文）または復号化命令（暗号文）とともに、鍵ＩＤがドライバ４００に受信されると、ドライバ４００は、図６に示したステップＳＡ２の判断結果を「Ｙｅｓ」とする。ステップＳＡ５では、ドライバ４００は、暗号化／復号化処理を実行する。
【００８７】
具体的には、図８に示したステップＳＣ１では、ドライバ４００は、ユニットカウンタＣｃに０を代入する。ステップＳＣ２では、ドライバ４００は、ユニットカウンタＣｃ（＝０）に対応する暗号処理ユニット（この場合、暗号処理ユニット２００0 ）の処理に空きがあるか否かを判断する。
【００８８】
ここで、暗号処理ユニット２００0 で、例えば、別の暗号化処理が実行されていた場合、ドライバ４００は、ステップＳＣ２の判断結果を「Ｎｏ」とする。ステップＳＣ３では、ドライバ４００は、ユニットカウンタＣｃを１インクリメント（０＋１＝１）する。ステップＳＣ４では、ドライバ４００は、ユニットカウンタＣｃが、ｎ＋１であるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【００８９】
ステップＳＣ２では、ドライバ４００は、ユニットカウンタＣｃ（＝１）に対応する暗号処理ユニット（この場合、暗号処理ユニット２００1 ）の処理に空きがあるか否かを判断する。ここで、暗号処理ユニット２００1 でいずれの処理も実行されていない場合、ドライバ４００は、ステップＳＣ２の判断結果を「Ｙｅｓ」とする。
【００９０】
ステップＳＣ５では、ドライバ４００は、ユニットカウンタＣｃに対応する暗号処理ユニット（この場合、暗号処理ユニット２００1 ）に対して、暗号化命令（または復号化命令）を発行するとともに、鍵ＩＤおよび平文（または暗号文）を送信する。
【００９１】
そして、暗号化命令（または復号化命令）、鍵ＩＤおよび平文（または暗号文）が暗号処理ユニット２００1 に受信されると、暗号処理ユニット２００1 の制御部２０３1（図２参照）は、図１６に示したステップＳＪ２の判断結果を「Ｙｅｓ」とする。ステップＳＪ６では、暗号化／復号化処理が実行される。
【００９２】
具体的には、図１３に示したステップＳＧ１では、制御部２０３1 は、受信された命令を解読し、該命令が暗号化命令（または復号化命令）であることを認識する。
【００９３】
ステップＳＧ２では、制御部２０３1 は、暗号化命令（または復号化命令）のパラメータに異常があるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
【００９４】
ステップＳＧ３では、制御部２０３1 は、ＲＡＭ２０６1 の鍵管理テーブル７００（図４参照）から、鍵ＩＤに対応する鍵を取得する。ステップＳＧ４では、制御部２０３1 は、命令が暗号化命令または復号化命令のうちいずれであるかを判断する。
【００９５】
命令が暗号化命令である場合、ステップＳＧ５では、制御部２０３1 は、ステップＳＧ３で取得した当該鍵を用いて平文を暗号化する。ステップＳＧ６では、制御部２０３1 は、暗号文をドライバ４００へ送信する。ステップＳＧ７では、制御部２０３1 は、ドライバ４００に対して、正常終了を通知する。
【００９６】
一方、命令が復号化命令である場合、ステップＳＧ８では、制御部２０３1 は、ステップＳＧ３で取得した当該鍵を用いて暗号文を復号化する。ステップＳＧ９では、制御部２０３1 は、平文をドライバ４００へ送信する。ステップＳＧ７では、制御部２０３1 は、ドライバ４００に対して、正常終了を通知する。
【００９７】
図８に戻り、ステップＳＣ６では、ドライバ４００は、暗号処理ユニット２００1 から正常終了の応答があるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＣ７では、ドライバ４００は、暗号化命令（または復号化命令）の正常終了を上位装置５００へ通知する。
【００９８】
一方、図１３に示したステップＳＧ２の判断結果が「Ｙｅｓ」である場合、ステップＳＧ１０では、制御部２０３1 は、ドライバ４００に対して異常終了を通知する。これにより、ドライバ４００は、図８に示したステップＳＣ６の判断結果を「Ｎｏ」とする。ステップＳＣ８では、ドライバ４００は、暗号化命令（または復号化命令）の異常終了を上位装置５００へ通知する。
【００９９】
また、図１に示した暗号処理システムが電源投入またはリブートにより起動されると、ドライバ４００は、図６に示したステップＳＡ３の判断結果を「Ｙｅｓ」とする。ステップＳＡ６では、ドライバ４００は、暗号処理ユニット２００0 〜２００n 間で鍵の整合を採るための鍵整合処理を実行する。
【０１００】
ここで、暗号処理ユニット２００0 〜２００n 間で同一の鍵の登録または削除の処理が実行されている最中に、いずれかの暗号処理ユニットで電源異常等が発生した場合には、当該暗号処理ユニットでの鍵登録または削除ができなくなる。
【０１０１】
この場合には、電源異常が発生した暗号処理ユニットと、その他の暗号処理ユニットとの間では、保持されている鍵に差異が生じる。以下に説明する鍵整合処理は、鍵の差異を是正し、暗号処理ユニット間で保持されている鍵の整合を採るための処理である。
【０１０２】
具体的には、図９に示したステップＳＤ１では、ドライバ４００は、ユニットカウンタＣｃに０を代入する。ステップＳＤ２では、ドライバ４００は、ユニットカウンタＣｃ（＝０）に対応する暗号処理ユニット（この場合、暗号処理ユニット２００0 ）に対してシーケンス命令を発行する。
【０１０３】
そして、上記シーケンス命令が暗号処理ユニット２００0 に受信されると、暗号処理ユニット２００0 の制御部２０３0 は、図１１に示したステップＳＥ３の判断結果を「Ｙｅｓ」とする。ステップＳＥ７では、鍵シーケンス情報をドライバ４００へ送信するためのシーケンス処理が実行される。
【０１０４】
具体的には、図１４に示したステップＳＨ１では、制御部２０３0 は、受信された命令を解読し、該命令がシーケンス命令であることを認識する。ステップＳＨ２では、制御部２０３0 は、シーケンス命令のパラメータに異常があるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【０１０５】
ステップＳＨ３では、制御部２０３0 は、鍵シーケンス情報８００0（図１８参照）の時刻情報（時刻情報８０４：図５参照）を更新する。ステップＳＨ４では、制御部２０３0 は、鍵シーケンス情報８００0 をドライバ４００へ送信する。ステップＳＨ５では、制御部２０３0 は、ドライバ４００に対して、正常終了を通知する。なお、ステップＳＨ２の判断結果が「Ｙｅｓ」である場合、ステップＳＨ６では、制御部２０３0 は、ドライバ４００に対して異常終了を通知する。
【０１０６】
図９に戻り、ステップＳＤ３では、ドライバ４００は、暗号処理ユニット２００0 からの応答が正常終了であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＤ４では、ドライバ４００は、暗号処理ユニット２００0 からの鍵シーケンス情報８００0（図１８参照）を受信する。
【０１０７】
ステップＳＤ５では、ドライバ４００は、ユニットカウンタＣｃを１インクリメント（０＋１＝１）する。ステップＳＤ６では、ドライバ４００は、ユニットカウンタＣｃが、ｎ＋１であるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【０１０８】
再び戻って、ステップＳＤ２では、ドライバ４００は、ユニットカウンタＣｃ（＝１）に対応するつぎの暗号処理ユニット（この場合、暗号処理ユニット２００1 ）に対してシーケンス命令を発行する。
【０１０９】
そして、上記シーケンス命令が暗号処理ユニット２００1 に受信されると、暗号処理ユニット２００1 の制御部２０３1 は、図１６に示したステップＳＪ３の判断結果を「Ｙｅｓ」とする。ステップＳＪ７では、鍵シーケンス情報をドライバ４００へ送信するためのシーケンス処理が実行される。
【０１１０】
具体的には、図１４に示したステップＳＨ１では、制御部２０３1 は、受信された命令を解読し、該命令がシーケンス命令であることを認識する。ステップＳＨ２では、制御部２０３1 は、シーケンス命令のパラメータに異常があるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【０１１１】
ステップＳＨ３では、制御部２０３1 は、鍵シーケンス情報８００1（図１８参照）の時刻情報（時刻情報８０４：図５参照）を更新する。ステップＳＨ４では、制御部２０３1 は、鍵シーケンス情報８００1 をドライバ４００へ送信する。ステップＳＨ５では、制御部２０３1 は、ドライバ４００に対して、正常終了を通知する。
【０１１２】
図９に戻り、ステップＳＤ３では、ドライバ４００は、暗号処理ユニット２００1 からの応答が正常終了であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＤ４では、ドライバ４００は、暗号処理ユニット２００1 からの鍵シーケンス情報８００1（図１８参照）を受信する。
【０１１３】
ステップＳＤ５では、ドライバ４００は、ユニットカウンタＣｃを１インクリメント（１＋１＝２）する。ステップＳＤ６では、ドライバ４００は、ユニットカウンタＣｃが、ｎ＋１であるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。以後、ステップＳＤ２〜ステップＳＤ６が繰り返されることにより、ドライバ４００は、暗号処理ユニット２００2（図示略）〜２００n からの鍵シーケンス情報８００2（図示略）〜８００n（図１８参照）を順次受信する。
【０１１４】
そして、ステップＳＤ６の判断結果が「Ｙｅｓ」になると、ステップＳＤ７では、ドライバ４００は、図１８に示したように、受信された全ての鍵シーケンス情報８００0 〜８００n を結合し、結合鍵シーケンス情報９００を生成する。
【０１１５】
図１０に示したステップＳＤ８では、ドライバ４００は、ユニットカウンタＣｃに０を代入する。ステップＳＤ９では、ドライバ４００は、ユニットカウンタＣｃ（＝０）に対応する暗号処理ユニット（この場合、暗号処理ユニット２００0 ）に対して鍵整合命令を発行するとともに、結合鍵シーケンス情報９００（図１８参照）を送信する。
【０１１６】
そして、上記鍵整合命令および結合鍵シーケンス情報９００が暗号処理ユニット２００0 に受信されると、暗号処理ユニット２００0 の制御部２０３0 は、図１１に示したステップＳＥ４の判断結果を「Ｙｅｓ」とする。ステップＳＥ８では、鍵整合処理が実行される。
【０１１７】
具体的には、図１５に示したステップＳＩ１では、制御部２０３0 は、受信された命令を解読し、該命令が鍵整合命令であることを認識する。ステップＳＩ２では、制御部２０３0 は、鍵整合命令のパラメータに異常があるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【０１１８】
ステップＳＩ３では、制御部２０３0 は、結合鍵シーケンス情報９００に基づいて、鍵の整合を採る。具体的には、制御部２０３0 は、図１８に示した結合鍵シーケンス情報９００における鍵シーケンス情報８００0 〜８００n 間の「装置番号」（装置番号８０２：図５参照）、「ユニット番号」（ユニット番号８０３）、「時刻情報」（時刻情報８０４）、「シーケンス履歴情報」（シーケンス履歴情報８０１）について整合性を検証する。
【０１１９】
「装置番号」については、鍵シーケンス情報８００0 〜８００n のそれぞれの装置番号が一致するか否かが判断される。一致の場合には、「装置番号」の整合が採られていると判断される。一方、不一致の場合には、エラーと判断される。
【０１２０】
「ユニット番号」については、鍵シーケンス情報８００0 〜８００n のそれぞれのユニット番号に重複があるか否かが判断される。重複しない場合には、「ユニット番号」の整合が採られていると判断される。一方、重複する場合には、エラーと判断される。
【０１２１】
「時刻情報」については、鍵シーケンス情報８００0 〜８００n のそれぞれの時刻情報のバラツキが一定時間以内（例えば、２分以内）であるか否かが判断される。バラツキが一定時間以内である場合には、「時刻情報の整合が採られていると判断される。一方、バラツキが一定時間を超えた場合には、エラーと判断される。
【０１２２】
「シーケンス履歴情報」については、自鍵シーケンス情報（この場合、鍵シーケンス情報８００0 ）を基準として、他鍵シーケンス情報（この場合、鍵シーケンス情報８００1 〜８００n ）との比較で、それぞれの最終のシーケンス番号の差が許容値（例えば、１）であるか否か、および履歴が一致するか否かが判断される。
【０１２３】
最終のシーケンス番号に差が無く、履歴が一致する場合には、シーケンス履歴情報の整合が採られていると判断される。一方、最終のシーケンス番号の差が許容値を超え、かつ履歴情報が不一致である場合には、エラーと判断される。
【０１２４】
また、最終のシーケンス番号の差が許容値以内である場合には、鍵シーケンス情報８００0 〜８００n のうち、鍵の保持数が最も少ないシーケンス情報に合わせるように、情報が調整される。
【０１２５】
図１９には、鍵整合処理の例１が図示されている。同図において、シーケンス履歴情報８０１0a 、８０１1a および８０１2a は、図１８に示した鍵シーケンス情報８００0 、８００1 および８００n（ｎ＝２）の鍵シーケンス履歴情報に対応している。
【０１２６】
シーケンス履歴情報８０１0a を基準とした場合に、シーケンス履歴情報８０１0a の最終のシーケンス番号（＝０８）と、シーケンス履歴情報８０１2a の最終のシーケンス番号（＝０７）との差が１である。なお、シーケンス履歴情報８０１0a の最終のシーケンス番号（＝０８）と、シーケンス履歴情報８０１1a の最終のシーケンス番号（＝０８）との差は、０である。
【０１２７】
この場合には、制御部２０３0 は、シーケンス番号を００として、鍵ＩＤ＝４の鍵を鍵管理テーブルから削除する。これにより、鍵の保持数が最も少ない鍵シーケンス情報８０１2a に合わせるように、鍵シーケンス情報８０１0a が調整される。なお、シーケンス履歴情報８０１1a に対応する制御部２０３1 においても同様の鍵調整が実行される。また、シーケンス履歴情報８０１2a に対応する制御部においては、シーケンス番号が００に更新されるが、鍵調整が実行されない。
【０１２８】
図２０には、鍵整合処理の例２が図示されている。同図において、シーケンス履歴情報８０１0b 、８０１1b および８０１2b は、図１８に示した鍵シーケンス情報８００0 、８００1 および８００n（ｎ＝２）のシーケンス履歴情報に対応している。
【０１２９】
シーケンス履歴情報８０１0b を基準とした場合に、シーケンス履歴情報８０１0b の最終のシーケンス番号（＝１２）と、シーケンス履歴情報８０１1b およびシーケンス履歴情報８０１2b の最終のシーケンス番号（＝１１）との差は、１である。
【０１３０】
この場合には、制御部２０３0 は、シーケンス番号１２に対する命令が「鍵削除」であることから、シーケンス番号を００に更新するが、鍵調整を実行しない。なお、シーケンス履歴情報８０１1b に対応する制御部２０３1 においては、シーケンス番号を００として、鍵ＩＤ＝３の鍵を鍵管理テーブルから削除する。
【０１３１】
これにより、鍵の保持数が最も少ない鍵シーケンス情報８０１0b に合わせるように、鍵シーケンス情報８０１1b が調整される。また、シーケンス履歴情報８０１2b に対応する制御部２０３2 においても、制御部２０３1 と同様の鍵調整が実行される。
【０１３２】
図１５に戻り、ステップＳＩ４では、制御部２０３0 は、ステップＳＩ３でエラー（鍵調整不可）となったか否かを判断し、この場合、判断結果を「Ｎｏ」とする。ステップＳＩ５では、制御部２０３0 は、鍵削除の有無、削除された鍵に対応する鍵ＩＤを含む鍵調整結果情報をドライバ４００へ送信する。
【０１３３】
ステップＳＩ６では、制御部２０３0 は、ドライバ４００に対して、正常終了を通知する。なお、ステップＳＩ２またはステップＳＩ４の判断結果が「Ｙｅｓ」である場合、ステップＳＩ７では、制御部２０３0 は、ドライバ４００に対して、異常終了を通知する。
【０１３４】
図１０に戻り、ステップＳＤ１０では、ドライバ４００は、暗号処理ユニット２００0 から正常終了の応答があるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＤ１１では、ドライバ４００は、暗号処理ユニット２００0 からの鍵調整結果情報を受信する。
【０１３５】
ステップＳＤ１２では、ドライバ４００は、ユニットカウンタＣｃを１インクリメント（０＋１＝１）する。ステップＳＤ１３では、ドライバ４００は、ユニットカウンタＣｃが、ｎ＋１であるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【０１３６】
再び戻って、ステップＳＤ９では、ドライバ４００は、ユニットカウンタＣｃ（＝１）に対応する暗号処理ユニット（この場合、暗号処理ユニット２００1 ）に対して鍵整合命令を発行するとともに、結合鍵シーケンス情報９００（図１８参照）を送信する。
【０１３７】
そして、上記鍵整合命令および結合鍵シーケンス情報９００が暗号処理ユニット２００1 に受信されると、暗号処理ユニット２００1 の制御部２０３1 は、図１６に示したステップＳＪ４の判断結果を「Ｙｅｓ」とする。ステップＳＪ８では、鍵整合処理（図１５参照）が実行される。以後、図１０に示したステップＳＤ９〜ステップＳＤ１３が繰り返されることにより、暗号処理ユニット２００2 （図示略）〜２００n で鍵整合処理が実行される。
【０１３８】
そして、ステップＳＤ１３の判断結果が「Ｙｅｓ」になると、ステップＳＤ１４では、ドライバ４００は、鍵調整結果情報を上位装置５００へ送信し、鍵調整処理を正常終了とする。一方、ステップＳＤ１０の判断結果が「Ｎｏ」である場合、ステップＳＤ１５では、ドライバ４００は、鍵調整処理を異常終了とする。なお、図１１に示したステップＳＥ２の判断結果が「Ｙｅｓ」である場合、ステップＳＥ６では、前述した復号化／暗号化処理（図１３参照）が実行される。
【０１３９】
以上説明したように、一実施の形態によれば、複数の暗号処理ユニット２００0 〜２００n のうち特定の暗号処理ユニット２００0 は、生成した鍵を暗号化し、暗号化鍵を他の暗号処理ユニットへ配り、他の暗号処理ユニット２００1 〜２００n のそれぞれは、暗号化鍵を復号し、特定の暗号処理ユニット２００0 で生成された鍵と同一の鍵を保持するようにしたので、複数の暗号処理ユニット２００0 〜２００n 間で同一の鍵が共有化され、複数の暗号処理ユニット２００0 〜２００n のうちいずれの暗号処理ユニットでも同一の暗号処理が実行でき、暗号処理の負荷分散を図ることができる。
【０１４０】
また、一実施の形態によれば、複数の暗号処理ユニット２００0 〜２００n のそれぞれで、保持されている鍵の整合を採るようにしたので、同一の鍵の共有処理時における電源異常等に起因する鍵の不整合を是正することができる。
【０１４１】
以上本発明にかかる一実施の形態について図面を参照して詳述してきたが、具体的な構成例はこの一実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
【０１４２】
例えば、前述した一実施の形態においては、図１に示したドライバ４００、暗号処理装置１００、暗号処理ユニット２００0 〜２００n のそれぞれの機能を実現するためのプログラムを図２１に示したコンピュータ読み取り可能な記録媒体１０００に記録して、この記録媒体１０００に記録されたプログラムを同図に示したコンピュータ９０１に読み込ませ、実行することにより前述した各機能を実現してもよい。
【０１４３】
同図に示したコンピュータ９０１は、上記プログラムを実行するＣＰＵ（Central Processing Unit）９１０と、キーボード、マウス等の入力装置９２０と、各種データを記憶するＲＯＭ９３０と、演算パラメータ等を記憶するＲＡＭ９４０と、記録媒体１０００からプログラムを読み取る読取装置９５０と、ディスプレイ、プリンタ等の出力装置９６０と、装置各部を接続するバス９７０とから構成されている。
【０１４４】
ＣＰＵ９１０は、読取装置９５０を経由して記録媒体１０００に記録されているプログラムを読み込んだ後、プログラムを実行することにより、前述した各機能を実現する。なお、記録媒体１０００には、光ディスク、フレキシブルディスク、ハードディスク等の可搬型の記録媒体が含まれる。
【０１４５】
（付記１）暗号処理を実行する複数の暗号処理ユニットを備え、
前記複数の暗号処理ユニットのうち鍵を生成した暗号処理ユニットは、生成した鍵を暗号化し、暗号化鍵を他の暗号処理ユニットへ配り、
他の暗号処理ユニットのそれぞれは、前記暗号化鍵を復号し、前記暗号処理ユニットで生成された鍵と同一の鍵を保持することを特徴とする暗号処理装置。
（付記２）前記複数の暗号処理ユニットのそれぞれは、保持されている鍵の整合を採る整合手段を備えたことを特徴とする付記１に記載の暗号処理装置。
（付記３）暗号処理を実行する複数の暗号処理ユニットのうち特定の暗号処理ユニットに対して、鍵を生成、生成された鍵を暗号化、暗号化鍵を送信させるための指示を出す暗号化鍵生成指示手段と、
他の暗号処理ユニットに対して、前記暗号化鍵を配り、該暗号化鍵を復号し前記特定の暗号処理ユニットで生成された鍵と同一の鍵を保持させる指示を出す暗号化鍵復号指示手段と、
を備えたことを特徴とする暗号処理ユニット制御装置。
（付記４）前記複数の暗号処理ユニットのそれぞれに対して、保持されている鍵の整合処理を指示する整合処理指示手段を備えたことを特徴とする付記３に記載の暗号処理ユニット制御装置。
（付記５）外部からの鍵生成指示に従って、鍵を生成する鍵生成手段と、
外部からの暗号化鍵生成指示に基づき、他の暗号処理ユニットへ配られる、前記鍵が暗号化された暗号化鍵を生成した後、該暗号化鍵を外部へ送信する暗号化鍵生成手段と、
外部からの暗号化鍵復号指示に基づき、配られた前記暗号化鍵を復号し、生成元の暗号処理ユニットで保持されている鍵と同一の鍵を保持する暗号化鍵復号手段と、
を備えたことを特徴とする暗号処理ユニット。
（付記６）コンピュータを、
暗号処理を実行する複数の暗号処理ユニットのうち特定の暗号処理ユニットに対して、鍵を生成、生成された鍵を暗号化、暗号化鍵を送信させるための指示を出す暗号化鍵生成指示手段、
他の暗号処理ユニットに対して、前記暗号化鍵を配り、該暗号化鍵を復号し前記特定の暗号処理ユニットで生成された鍵と同一の鍵を保持させる指示を出す暗号化鍵復号指示手段、
として機能させるための暗号処理ユニット制御プログラム。
（付記７）コンピュータを、
外部からの鍵生成指示に従って、鍵を生成する鍵生成手段、
外部からの暗号化鍵生成指示に基づき、他の暗号処理ユニットへ配られる、前記鍵が暗号化された暗号化鍵を生成した後、該暗号化鍵を外部へ送信する暗号化鍵生成手段、
外部からの暗号化鍵復号指示に基づき、配られた前記暗号化鍵を復号し、生成元の暗号処理ユニットで保持されている鍵と同一の鍵を保持する暗号化鍵復号手段、
として機能させることを特徴とする暗号処理ユニット用プログラム。
【０１４６】
【発明の効果】
以上説明したように、本発明によれば、複数の暗号処理ユニットのうち鍵を生成した暗号処理ユニットは、生成した鍵を暗号化し、暗号化鍵を他の暗号処理ユニットへ配り、他の暗号処理ユニットのそれぞれは、暗号化鍵を復号し、上記暗号処理ユニットで生成された鍵と同一の鍵を保持するようにしたので、複数の暗号処理ユニット間で同一の鍵が共有化され、複数の暗号処理ユニットのうちいずれの暗号処理ユニットでも同一の暗号処理が実行でき、暗号処理の負荷分散を図ることができるという効果を奏する。
【０１４７】
また、本発明によれば、複数の暗号処理ユニットのそれぞれで、保持されている鍵の整合を採るようにしたので、同一の鍵の共有処理時における電源異常等に起因する鍵の不整合を是正することができるという効果を奏する。
【０１４８】
また、本発明によれば、暗号処理を実行する複数の暗号処理ユニットのうち特定の暗号処理ユニットに対して、鍵を生成、生成された鍵を暗号化、暗号化鍵を送信させるための指示を出し、また、他の暗号処理ユニットに対して、暗号化鍵を配り、該暗号化鍵を復号し特定の暗号処理ユニットで生成された鍵と同一の鍵を保持させる指示を出すようにしたので、複数の暗号処理ユニット間で同一の鍵が共有化され、複数の暗号処理ユニットのうちいずれの暗号処理ユニットでも同一の暗号処理が実行でき、暗号処理の負荷分散を図ることができるという効果を奏する。
【０１４９】
また、本発明によれば、複数の暗号処理ユニットのそれぞれに対して、保持されている鍵の整合処理を指示するようにしたので、同一の鍵の共有処理時における電源異常等に起因する鍵の不整合を是正することができるという効果を奏する。
【０１５０】
また、本発明によれば、外部からの暗号化鍵生成指示に基づき、他の暗号処理ユニットへ配られる、鍵が暗号化された暗号化鍵を生成した後、該暗号化鍵を外部へ送信し、外部からの暗号化鍵復号指示に基づき、配られた暗号化鍵を復号し、生成元の暗号処理ユニットで保持されている鍵と同一の鍵を保持するようにしたので、複数の暗号処理ユニットで構成される場合に、複数の暗号処理ユニット間で同一の鍵が共有化され、複数の暗号処理ユニットのうちいずれの暗号処理ユニットでも同一の暗号処理が実行でき、暗号処理の負荷分散を図ることができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明にかかる一実施の形態の構成を示すブロック図である。
【図２】図１に示した暗号処理ユニット２００0 および２００1 の構成を示すブロック図である。
【図３】同一実施の形態で用いられる鍵管理テーブル７００の概要を説明する図である。
【図４】同一実施の形態で用いられる鍵管理テーブル７００を示す図である。
【図５】同一実施の形態で用いられる鍵シーケンス情報８００を示す図である。
【図６】図１に示したドライバ４００の動作を説明するフローチャートである。
【図７】図６に示した暗号化鍵生成処理を説明するフローチャートである。
【図８】図６に示した暗号化／復号化処理を説明するフローチャートである。
【図９】図６に示した鍵整合処理を説明するフローチャートである。
【図１０】図６に示した鍵整合処理を説明するフローチャートである。
【図１１】図１に示した暗号処理ユニット２００0 の動作を説明するフローチャートである。
【図１２】図１１に示した暗号化鍵生成処理を説明するフローチャートである。
【図１３】図１１および図１６に示した暗号化／復号化処理を説明するフローチャートである。
【図１４】図１１および図１６に示したシーケンス処理を説明するフローチャートである。
【図１５】図１１および図１６に示した鍵整合処理を説明するフローチャートである。
【図１６】図１に示した暗号処理ユニット２００1 〜２００n の動作を説明するフローチャートである。
【図１７】図１６に示した暗号化鍵復号化処理を説明するフローチャートである。
【図１８】同一実施の形態で用いられる結合鍵シーケンス情報９００を示す図である。
【図１９】図１５に示した鍵整合処理の例１を示す図である。
【図２０】図１５に示した鍵整合処理の例２を示す図である。
【図２１】同一実施の形態の変形例の構成を示すブロック図である。
【図２２】従来の暗号処理システムの構成を示すブロック図である。
【図２３】図２２に示した暗号処理ユニット２０0 および２０1 の構成を示すブロック図である。
【図２４】従来の暗号処理システムの鍵生成処理を説明する図である。
【図２５】従来の暗号処理システムの暗号化処理を説明する図である。
【図２６】従来の暗号処理システムの復号化処理を説明する図である。
【符号の説明】
１００  暗号処理装置
２００0 〜２００n  暗号処理ユニット
２０３0 、２０３1  制御部
２０５0 、２０５1  鍵生成部
２０８0 、２０８1  暗号／復号処理部
４００  ドライバ
５００  上位装置
【図１】
0004291970.tif 000002
【図２】
0004291970.tif 000003
【図３】
0004291970.tif 000004
【図４】
0004291970.tif 000005
【図５】
0004291970.tif 000006
【図６】
0004291970.tif 000007
【図７】
0004291970.tif 000008
【図８】
0004291970.tif 000009
【図９】
0004291970.tif 000010
【図１０】
0004291970.tif 000011
【図１１】
0004291970.tif 000012
【図１２】
0004291970.tif 000013
【図１３】
0004291970.tif 000014
【図１４】
0004291970.tif 000015
【図１５】
0004291970.tif 000016
【図１６】
0004291970.tif 000017
【図１７】
0004291970.tif 000018
【図１８】
0004291970.tif 000019
【図１９】
0004291970.tif 000020
【図２０】
0004291970.tif 000021
【図２１】
0004291970.tif 000022
【図２２】
0004291970.tif 000023
【図２３】
0004291970.tif 000024
【図２４】
0004291970.tif 000025
【図２５】
0004291970.tif 000026
【図２６】
0004291970.tif 000027