以下に、本発明の実施例について説明する。
<実施例1>
図1は本発明の実施例1における、通信暗号化処理SSL/TLSを行う通信暗号処理装置1のブロック図を示したものである。この図1を用いて実施例1における通信暗号処理装置1の構成について説明する。ただし、従来技術と同じ番号のものは同じ動作を行う。
図1において930はセキュリティ・チップ、1は通信暗号化処理SSL/TLSを行う通信暗号化処理装置、5は通信暗号化処理装置1において暗号化・復号処理に使われる鍵のライフサイクルを管理する鍵管理モジュールである。また、6は鍵管理モジュール5より供給される鍵を使用してワークメモリ3から読み出したデータに対する暗号化処理または復号処理を行ったり、メッセージ認証コードを生成したりするための暗号化・復号処理モジュールである。また、7は通信暗号化処理SSL/TLSの相互認証で使用するX.509証明書等を保持する第1のメモリを有する。また、8は暗号化・復号処理モジュール6がSSL/TLSのレコード・プロトコルで使用し、鍵管理モジュール5がそのライフサイクルを管理する鍵を格納しておく第2のメモリである。9は暗号化・復号処理モジュール6で使用する鍵を保持する第3のメモリ、301は鍵管理モジュール5や暗号化・復号処理モジュール6を制御し、かつ第2のメモリ8及び第3のメモリ9に保持される鍵の指定を行うCPU2に搭載された制御プログラムである。
図2は制御プログラム301が管理しているセッション情報の例を表す図である。図2を用いて、実施例1における制御プログラム301が管理しているセッション情報について説明する。
識別子は暗号処理に使用するセッションを識別するための数値である。SSL/TLSの場合は暗号通信路を識別するセッションIDである。セッションIDは上述したSSL/TLSのハンドシェイク・プロトコルで決定される。
エントリ番号は制御プログラム301が識別子と1対1に対応させて割り当てた番号であり、制御プログラム301と鍵管理モジュール5、暗号化・復号モジュール6間の通信で鍵を識別するのに用いられる。この例では8つまで鍵を扱えるのでエントリ番号に0〜7の値を割り当てている。
活性化フラグはエントリ番号で識別された鍵の状態を示すフラグである。エントリ番号で識別された鍵が第2のメモリに保持されていない初期化済みステータス、制御プログラム301が鍵管理モジュール5にエントリ番号で識別された鍵生成・登録要求を送信する。そして、鍵管理モジュール5から鍵生成・登録要求終了を受信するまでの間の登録中ステータス、エントリ番号で識別された鍵が第2のメモリに登録されている登録済みステータス、制御プログラム301が鍵管理モジュール5に鍵廃棄要求を送信する。また、鍵管理モジュール5から鍵廃棄終了を受信するまでの間の廃棄中ステータスの4つの状態を表す。
制御プログラム301は活性化フラグを見ることによって、各鍵の状態を知ることができる。まず、初期化された状態では活性化フラグは初期化済みステータスとなっており、制御プログラム301が鍵生成・登録要求を送信するとそのエントリ番号の活性化フラグは登録中ステータスとなる。次に、制御プログラム301が鍵生成・登録終了信号を受信すると、活性化フラグは登録済みステータスとなる。鍵の使用が終わって制御プログラム301が鍵廃棄要求を送信すると活性化フラグは廃棄中ステータスとなり、鍵廃棄終了信号を受信すると活性化フラグは初期化済みステータスとなる。
サイファー・スイートは暗号化・復号処理モジュール6で使用する暗号処理アルゴリズムであり、この場合SSL/TLSのレコード・プロトコルで使用する暗号処理アルゴリズムである。
使用フラグは鍵の使用状況を示すフラグである。この使用フラグは、エントリ番号で識別された鍵が第3のメモリ9に保持されていない初期化済みステータス、エントリ番号で識別された鍵が第3のメモリ9に保持されている送信済みステータスを示す。そして、エントリ番号で識別された鍵が第3のメモリ9に保持されており、かつ暗号化・復号処理モジュール6で使用されている使用中ステータスの3つの状態を表す。
図3は使用フラグが変化する様子を示した例を表した図である。図3を用いて使用フラグの変化する様子を説明する。
図3の(α)のエントリ番号2の使用フラグのように初期化された状態では、使用フラグは初期化済みステータスとなっている。
次に、制御プログラム301が鍵管理モジュール5からエントリ番号2の鍵配送終了を受信すると、図3の(β)に示されるように使用フラグを送信済みステータスに書き換える。また、このとき、他のエントリ番号で送信済みステータスとなっている使用フラグがある場合は、その使用フラグを初期化済みステータスに戻す。図3の場合では、エントリ番号1の使用フラグを初期化済みステータスに戻す。
次に、制御プログラム301が暗号化・復号処理モジュール6にエントリ番号2を用いた暗号処理要求を送信すると、図3の(γ)で示されるように、使用フラグを使用中ステータスに書き換える。また、このとき他のエントリ番号で使用中ステータスとなっている使用フラグがある場合は、その使用フラグを送信済みステータスに戻す。図3の場合では、エントリ番号0の使用フラグを配送済みステータスに戻す。
この使用フラグから、制御プログラム301は各エントリ番号の鍵の使用状態を知ることができる。
図4は鍵管理モジュール5が管理している情報の例を表す図である。図4を用いて、実施例1における鍵管理モジュール5が管理している情報について説明する。
メモリ・アドレスは各エントリ番号に対応する鍵が第2のメモリ8上で保持されているアドレスを示すものである。
エントリ番号は鍵を識別するための番号で制御プログラム301が管理しているエントリ番号と同一のものである。
サイファー・スイートは制御プログラム301が管理しているサイファー・スイートと同一のものであり、暗号化・復号処理モジュール6で使用する暗号処理アルゴリズムである。
図5は暗号化・復号処理モジュール6が管理している情報の例を表す図である。図5を用いて、実施例1における暗号化・復号処理モジュール6が管理している情報について説明する。
図5において、メモリ・アドレスは暗号化・復号処理モジュール6で使用する鍵が第3のメモリ9上で保持されているアドレスを示すものである。
エントリ番号は鍵を識別するための番号で制御プログラム301が保持しているエントリ番号と同一のものである。
サイファー・スイートは制御プログラム301が管理しているサイファー・スイートと同一のものであり、暗号化・復号処理モジュール6で使用する暗号処理アルゴリズムである。
状態フラグとは、第3のメモリに保持されている鍵が現在暗号化・復号処理モジュール6において使用されているか否かを示すフラグである。例えば、図5のエントリ番号0の鍵は状態フラグが使用中ステータスになっているので暗号化・復号処理モジュール6で使用されており、エントリ番号6の鍵は非ステータスになっているので暗号化・復号処理モジュール6で使用されていない。
図6は鍵管理モジュール5の内部構成を示す図である。図6を用いて、鍵管理モジュール5の内部構成を説明する。
図6において21はバス100を介してデータの送受信を行うためのDMAコントローラ、22はコマンド制御部、23は乱数・鍵生成部、24は鍵管理制御部である。
図7は暗号化・復号処理モジュール6の内部構成を示す図である。図7を用いて、暗号化・復号処理モジュール6の内部構成を説明する。
図7において31はバス100を介してデータの送受信を行うためのDMAコントローラ、32はコマンド制御部、33はブロック暗号化部、34は鍵付きハッシュ演算部、35は鍵管理制御部である。
図8は通信暗号化処理装置1で新たに通信暗号路を作成する際における、SSL/TLSの通信開始から通信終了までの制御プログラム301、鍵管理モジュール5、暗号化・復号処理モジュール6の間のデータ送受信を示したシーケンス図である。
図9は制御プログラム301、鍵管理モジュール5、暗号化・復号処理モジュール6の間で送受信するデータグラムのフォーマットを示したものである。データグラムは1バイトのコマンドと各コマンドによって定められたビット長をもつデータから構成されている。
以下、図8及び図9を用いてデータ送受信シーケンスについて説明する。
ステップS101において制御プログラム301は鍵管理モジュール5に乱数生成要求を送信する。送信される乱数生成要求を示すデータグラムのフォーマットは図9(b)で示されるようになっており、乱数生成要求を示す1バイトのコマンド部と乱数長を示すデータ部が連結した構成となっている。
ステップS102において鍵管理モジュール5は乱数を生成する。鍵管理モジュール5は上述したように図6に示される構成になっており、DMAコントローラ21を介してステップS101において受信した乱数生成要求データグラムをコマンド制御部22へ送る。コマンド制御部22は受信したデータを解析し、信号線207により乱数・鍵生成部23へ乱数生成要求データグラムを送る。乱数・鍵生成部23は受信したデータグラムから乱数のビット長を取り出し、所望のビット長の乱数を生成する。そして生成した乱数を信号線208によりコマンド制御部22へ送る。
ステップS103において図9(c)に示すように鍵管理モジュール5内のコマンド制御部22は乱数生成終了を示すコマンドと生成された乱数を連結したデータグラムをDMAコントローラ21を介してバス100へ出力する。そして、制御プログラム301はこれを受信する。なお生成した乱数の使用方法はSSL/TLSの規格書に記述されている通りである。
ステップS104において制御プログラム301は鍵管理モジュール5に証明書要求を送信する。証明書要求データグラムのフォーマットは図9(d)に示すように証明書要求を示すコマンドと識別子を示すデータが連結された構成となっている。
ステップS105において鍵管理モジュール5内部では証明書要求データグラムが図6に示すDMAコントローラ21を介してコマンド制御部22へ送られる。コマンド制御部22は信号線210により鍵管理制御部24へ証明書要求データグラムを送る。鍵管理制御部24はメモリバス201を介して第1のメモリ7から証明書を読み出し、信号線211によりコマンド制御部22へ送る。
ステップS106でコマンド制御部22は証明書送信を示すコマンドと第1のメモリ7から読み出した証明書を連結した図9(e)に示すデータグラムを作成し、DMAコントローラ21、バス100を介して制御プログラム301へ送信する。
ステップS107において制御プログラム301は鍵管理モジュール5に鍵生成・登録要求を送信する。制御プログラム301は図2で示したセッション情報を保持している。そして、SSL/TLSのハンドシェイク・プロトコルで得られたセッションIDを識別子とし、セッション情報の活性化フラグが初期化済みステータスであるエントリ番号を抽出し、この識別子と結びつける。また、同様にハンドシェイク・プロトコルで決定した通信に使用する特定のサイファー・スイートを示すコードをセッション情報に保持する。
なお、このとき制御プログラム301は制御プログラムの仕様で定められた数以下の鍵生成要求しか発生させないので活性化フラグが初期化済みステータスであるエントリ番号が必ず存在するようになっている。そして、鍵生成要求をしたエントリ番号の活性化フラグを登録中ステータスに書き換える。制御プログラム301はこのようにして決定した上記セッション情報から図9(f)に示したように鍵生成・登録要求データグラムを生成する。鍵生成・登録要求データグラムは、鍵生成・登録要求を示すコマンド、エントリ番号、サイファー・スイート、プレマスター・シークレット、クライアント・ランダム、サーバー・ランダムから構成される。そして、鍵管理モジュール5に送信する。鍵管理モジュール5では鍵生成・登録要求を受信し、コマンド制御部22に送る。
ステップS108では鍵管理モジュール5内でコマンド制御部22が信号線207を介して乱数・鍵生成部23へ鍵生成・登録要求データグラムを送る。乱数・鍵生成部23はSSL/TLSの規格に記載されている方法で鍵生成を行い、図9(g)に示したように鍵生成・登録終了信号とエントリ番号を連結したデータグラムを生成し、信号線209を介して鍵管理制御部24へ送る。鍵管理制御部24は図2に示したセッション情報を保持しており、乱数・鍵生成部23から送られてきたエントリ番号、サイファー・スイートを第2のメモリ8上の所定のアドレスに対応させて管理する。そして、送られてきた鍵をメモリバス202を介してエントリ番号と対応する第2のメモリ8上のアドレスから書き込む。
ステップS109において鍵管理モジュール5内で鍵管理制御部24は図9(g)に示すように鍵生成・登録終了を示すコマンドとエントリ番号を連結したデータグラムを生成し、コマンド制御部22へ送る。コマンド制御部22はこのデータグラムを信号線206、DMAコントローラ21、バス100を介して制御プログラム301へ送信する。
制御プログラム301は鍵管理モジュール5から暗号処理モジュール6へ鍵を配送するタイミングを管理している。そして、ステップS110において所望のタイミングで図9(h)に示すような鍵配送要求を示すコマンドと配送する鍵のエントリ番号を連結したデータグラムを生成し、鍵管理モジュール5に送信する。そして、鍵管理モジュール5内ではバス100、DMAコントローラ21、信号線206を介してコマンド制御部22がこのデータグラムを受信する。
ステップS111においてコマンド制御部22は信号線210を介してこのデータグラムを鍵管理制御部24へ送る。鍵管理制御部24は図4で示した情報から受信したエントリ番号の示す第2のメモリ8上のアドレスを特定し、メモリバス202を介して所望の鍵データを読み出す。
ステップS112において鍵管理モジュール5内の鍵管理制御部24は図9(i)に示されるデータグラムを生成し、コマンド制御部22に送る。このとき、データグラムは、受信したデータグラムと受信したデータグラム内のエントリ番号、鍵管理制御部24が管理している図4で示した情報から割り出したサイファー・スイートとステップS111で読み出した鍵データから生成する。コマンド制御部22では、信号線206、DMAコントローラ21、バス100を介して暗号化・復号処理モジュール6へ送信する。そして、暗号化・復号処理モジュール6内ではバス100、DMAコントローラ31、信号線306を介してコマンド制御部32がこのデータグラムを受信する。
ステップS113において、コマンド制御部32は信号線313を介して鍵管理制御部34へエントリ番号、暗号処理アルゴリズム及び鍵を送る。鍵管理制御部34は図5に示した情報を管理しており、コマンド制御部32から送られてきたエントリ番号、サイファー・スイートを第3のメモリ9上の所定のアドレスに結び付ける。このとき、鍵管理制御部34は状態フラグが非使用中ステータスのメモリ・アドレスを抽出し、送られてきた鍵をメモリバス203を介して第3のメモリ9上の所定のアドレスから書き込む。
ステップS114では暗号処理モジュール6は鍵管理制御部35において図9(j)に示すように鍵配送終了を示すコマンドとエントリ番号から構成されるデータグラムを生成し、コマンド制御部32に送る。コマンド制御部32では、信号線306、DMAコントローラ31、バス100を介して鍵管理モジュール5へこのデータグラムを送信する。そして、鍵管理モジュール5内ではバス100、DMAコントローラ21、信号線206を介してコマンド制御部22がこのデータグラムを受信する。
ステップS115においてコマンド制御部24は図9(k)に示す鍵配送終了を示すコマンドとエントリ番号から構成されるデータグラムを生成し、信号線206、DMAコントローラ21、バス100を介して制御プログラム301に送信する。そして、図9(k)に示すデータを受信した制御プログラム301は、受信したエントリ番号に結び付けられている使用フラグを送信済みステータスに書き換える。また、同時に、他のエントリ番号で送信済みステータスとなっている使用フラグがある場合は、その使用フラグを初期化済みステータスに戻す。
制御プログラム301は暗号処理を行うタイミングを管理しており、ステップS116において、データグラムを生成し、所望のタイミングで暗号処理モジュール6へ送信する。このとき、データグラムは、図9(l)に示すように、暗号処理要求コマンド、エントリ番号、読み出しアドレス、読み出しデータ長、書き込みアドレス及び書き込みデータ長から構成される。ここで、暗号処理要求コマンドは、暗号処理要求を示すコマンドである。読み出しアドレスは、ワークメモリ3上に格納されている被処理データの先頭アドレスである。読み出しデータ長は、被処理データのデータ長である。書き込みアドレスは、暗号処理後のデータを書き込むワークメモリ3上の先頭アドレスである。書き込みデータ長は、暗号処理後のデータのデータ長である。そして、図9(l)に示すデータを送信した制御プログラム301は、送信したエントリ番号に結び付けられている使用フラグを使用中ステータスに書き換える。同時に、他のエントリ番号で使用中ステータスとなっている使用フラグがある場合は、その使用フラグを送信済みステータスに戻す。
ステップS117において暗号処理モジュール6ではバス100を介してDMAコントローラ31がこのデータグラムを受信し、このデータグラムを保持するとともにコマンド制御部32へ送る。また、このデータグラムからワークメモリ3上で被処理データの格納されているアドレスとデータ長を取り出し、ワークメモリ3から所定の被処理データを読み出し、コマンド制御部32へ送る。
次に、コマンド制御部32は暗号化処理要求コマンドとエントリ番号を信号線313により鍵管理制御部35へ送り、鍵管理制御部35は管理テーブル3から受信したエントリ番号の示す第3のメモリ9上のアドレスを特定する。そして、メモリバス203を介して所望の鍵データを読み出す。また、管理テーブル3の受信したエントリ番号に対応する状態フラグを使用中ステータスに、管理テーブル3の他のエントリ番号に対応する状態フラグで使用中ステータスとなっているものがあれば非使用中ステータスに書き換える。そして、信号線309を介して暗号化処理部33へ送り、エントリ番号に対応する鍵付きハッシュ処理に対応する鍵を信号線312によりハッシュ処理部34へ送る。また、コマンド制御部32は被処理データをまず信号線311によりハッシュ処理部34へ送り、演算結果を信号線313により受け取る。またコマンド制御部32は被処理データにハッシュ処理部34での演算結果を付加したデータを信号線307によりブロック暗号処理部33へ送る。そして得られた演算結果を信号線310により受け取る。
こうして得られた暗号化されたデータをコマンド制御部32は信号線306を介してDMAコントローラ31に送られる。そして、DMAコントローラ31は制御プログラム301から受信したデータグラムに示されているワークメモリ3上の所定のアドレスから所定長の暗号化されたデータを書き込む。
ステップS118において暗号処理モジュール6はコマンド制御部32が図9(m)に示されるように暗号処理終了を示すコマンドとエントリ番号から構成されるデータグラムを生成し、制御プログラム301へ送信する。制御プログラム301は鍵を廃棄するタイミングを管理している。
ステップS119において暗号通信終了後、鍵が不要になると制御プログラム301は鍵管理モジュール5に図9(n)に示すように鍵廃棄要求を示すコマンドとエントリ番号から構成されるデータグラムを生成し、鍵管理モジュール5へ送信する。鍵管理モジュール5はこのデータグラムを受信し、DMAコントローラ31、信号線306を介してコマンド制御部32に送る。
ステップS120において鍵管理モジュール5内でコマンド制御部32は信号線313により鍵管理制御部35へ鍵廃棄要求データグラムを送る。鍵管理制御部35は受け取ったデータグラムからエントリ番号を取り出し、図3に示した鍵管理テーブル2を参照して第2のメモリ8上の対応するアドレスに保持されている鍵データを初期化する。
ステップS121において鍵管理モジュール5内の鍵制御管理部35は図9(o)に示すような鍵の廃棄終了を示すコマンドとエントリ番号から構成されるデータグラムを生成し、信号線314によりコマンド制御部32へ送る。コマンド制御部32は信号線306、DMAコントローラ31、バス100を介して鍵廃棄終了データグラムを制御プログラム301に送信する。
図10は実施例1における暗号通信路が既に存在している際における、SSL/TLSのレコード・プロトコルを行う制御プログラム301のフローチャートである。図10を用いて実施例1における暗号通信路が既に存在している際のSSL/TLSのレコード・プロトコルを行う制御プログラムの動作について説明する。
ステップS201において、制御プログラム301は図2に示される制御プログラム301が管理しているセッション情報の使用フラグを用いて、第3のメモリ9に所望のエントリ番号の鍵が保持されているか否か検査する。検査の結果、第3のメモリ9に所望の鍵が保持されている場合には、後述するステップS204以降の処理行う。保持されていない場合には後述するステップS202以降の処理を行う。
ステップS202において、制御プログラム301は所望のエントリ番号の鍵を暗号化・復号処理モジュール6に配送するように、鍵管理モジュール5に図9(h)に示される鍵配送要求を送信する。
ステップS203において、制御プログラム301は鍵管理モジュール5から図9(k)に示される鍵配送終了を受信したか否か検査する。検査した結果、受信していない場合には受信するまで待機する。受信した場合には、所望のエントリ番号の使用フラグを送信済みに書き換えると同時に、他のエントリ番号の使用フラグで送信済みステータスとなっている使用フラグがある場合には、その使用フラグを初期化済みステータスに戻す。そして、後述するステップS204以降の処理を行う。
ステップS204において、制御プログラム301は暗号化・復号処理モジュール6に図9(l)に示される暗号処理要求を送信する。また、所望のエントリ番号の使用フラグを使用中ステータスに書き換えると同時に、他のエントリ番号の使用フラグで使用中ステータスとなっている使用フラグがある場合には、その使用フラグを送信済みステータスに書き換える。
ステップS205において、制御プログラム301は暗号化・復号処理モジュール6から図9(m)に示される暗号処理終了を受信したか否か検査する。検査した結果、受信していない場合には受信するまで待機する。受信した場合には動作を終了する。
図11は本発明の実施例1において通信暗号処理装置1が複数の相手と暗号通信する時の鍵管理モジュール5と暗号化・復号処理モジュール6の動作、及び第3のメモリ9に保持される鍵を表したタイミングの例を示した図である。この図11を用いて通信暗号処理装置1が複数の相手と暗号通信する時の鍵管理モジュール5と暗号化・復号処理モジュール6の動作、及び第3のメモリ9に保持される鍵を表したタイミングを説明する。ただし、図11では複数の通信相手をA、B、Cとし、また、それぞれの通信相手に対応した鍵を鍵(A)、鍵(B)、鍵(C)としている。また、簡単のため図11では複数の通信相手の鍵は既に生成されて第2のメモリ8に保持されており、また、第3のメモリ9に鍵は保持されていないものとする。また、通信を行う順番はA→B→A→C→A→C→Bの順である。
T201において、第3のメモリには鍵(A)が保持されていないので、鍵管理モジュール5は第2のメモリ8から鍵(A)を読出し、バス100を介して暗号化・復号処理モジュール6に送信する。鍵(A)を受信した暗号化・復号処理モジュール6は第3のメモリ9に鍵(A)を保持する。また鍵(A)の状態フラグを非使用中ステータスにする。
T202において、暗号化・復号処理モジュール6は通信相手Aに送信するデータの暗号化を行う。また鍵(A)の状態フラグを使用中ステータスにする。
T203において、第3のメモリ9には鍵(B)が保持されていないので、鍵管理モジュール5は第2のメモリから鍵(B)を読出し、バス100を介して暗号化・復号処理モジュール6に送信する。
鍵(B)を受信した暗号化・復号処理モジュール6は第3のメモリ9に鍵(B)を保持する。また、鍵(B)の状態フラグを非使用中ステータスにする。
T204において、暗号化・復号処理モジュール6は通信相手Bに送信するデータの暗号化を行う。また鍵(A)の状態フラグを非使用中ステータスに、鍵(B)の状態フラグを使用中ステータスする。
T205において、第3のメモリ9には鍵(A)が保持されているので改めて鍵の配送を行う必要がない。そこで鍵の配送を行うことなく、暗号化・復号処理モジュール6は通信相手Aに送信するデータの暗号化を行う。また、鍵(A)の状態フラグを使用中ステータスに鍵(B)の状態フラグを非使用中ステータスにする。
T206において、第3のメモリ9には鍵(C)が保持されていないので、鍵管理モジュール5は第2のメモリ8から鍵(C)を読出し、バス100を介して暗号化・復号処理モジュール6に送信する。鍵(C)を受信した暗号化・復号処理モジュール6は鍵の状態フラグを検査し、状態フラグが非使用中ステータスの鍵(B)を鍵(C)に書き換える。また、鍵(C)の状態フラグを非使用中ステータスにする。
T207において、暗号化・復号処理モジュール6は通信相手Cに送信するデータの暗号化を行う。また、鍵(A)の状態フラグを非使用中ステータスに、鍵(C)の状態フラグを使用中ステータスする。
T208では、T205と同様に鍵の配送を行うことなく、暗号化・復号処理モジュール6は通信相手Aに送信するデータの暗号化を行う。また、鍵(A)の状態フラグを使用中ステータスに鍵(C)の状態フラグを非使用中ステータスにする。
T209において、第3のメモリ9には鍵(C)が保持されているので改めて鍵の配送を行う必要がない。そこで、鍵の配送を行うことなく、暗号化・復号処理モジュール6は通信相手Cに送信するデータの暗号化を行う。また、鍵(A)の状態フラグを非使用中ステータスに鍵(C)の状態フラグを使用中ステータスにする。
T210において、第3のメモリには鍵(B)が保持されていないので、鍵管理モジュール5は第2のメモリ8から鍵(B)を読出し、バス100を介して暗号化・復号処理モジュール6に送信する。鍵(C)を受信した暗号化・復号処理モジュール6は鍵の状態フラグを検査し、状態フラグが非使用中ステータスの鍵(A)を鍵(B)に書き換える。また、鍵(B)の状態フラグを非使用中ステータスにする。
T211において、暗号化・復号処理モジュール6は通信相手Bに送信するデータの暗号化を行う。また鍵(B)の状態フラグを使用中ステータスに、鍵(C)の状態フラグを非使用中ステータスにする。
図10及び図11のように、第3のメモリ9に所望の鍵が保持されている場合には、制御プログラム301は鍵管理モジュール5へ鍵の配送要求データを送信することなく、暗号化・復号処理モジュール6に暗号処理要求データを送信することができる。このため、より高速に処理を行うことができる。
以上、通信暗号SSL/TLSを行う通信暗号化処理装置について説明したがこれに限定されることではなく、例えば他の通信暗号技術であるIPsecや単体の共通鍵暗号、公開鍵暗号、鍵付きハッシュ関数等にも本手法を適用することができる。
<実施例2>
図12は本発明の実施例2における、通信暗号化処理SSL/TLSを行う通信暗号処理装置41のブロック図を示したものである。次に、図12を用いて実施例2における通信暗号処理装置41の構成について説明する。ただし、従来技術及び実施例1と同じ番号のものは同じ動作を行う。
図12において、960はセキュリティ・チップ、41は通信暗号化処理SSL/TLSを行う通信暗号化処理装置である。46は鍵管理モジュール5より供給される鍵を使用してワークメモリ3から読み出したデータに対する暗号化処理または復号処理を行ったり、メッセージ認証コードを生成したりするための暗号化・復号処理モジュールである。49は暗号化・復号処理モジュール46で使用する鍵を保持するレジスタ、401は鍵管理モジュール5や暗号化・復号処理モジュール6を制御するCPU2に搭載された制御プログラムである。
図13は制御プログラム401が管理しているセッション情報の例を表す図である。図13を用いて、制御プログラム401が管理しているセッション情報の例について説明する。
図13において、エントリ番号、活性化フラグ、識別子、サイファー・スイートは実施例1と同様である。実施例2の場合では実施例1の場合と異なり、制御プログラム401は活性化フラグを管理していない。
図14は暗号化・復号処理モジュール46が管理している情報の例を表す図である。図5を用いて、暗号化・復号処理モジュール46が管理している情報の例について説明する。
図14において、エントリ番号、サイファー・スイート、状態フラグは実施例1と同様である。レジスタ・アドレスは暗号化・復号処理モジュール46で使用する鍵がレジスタ49上で保持されているアドレスを示すものである。
図15は暗号化・復号処理モジュール46の内部構成を示す図である。図15を用いて、暗号化・復号処理モジュール46の内部構成を説明する。ただし、実施例1と同じ番号のものは同じ動作を行う。
図15において45は鍵管理制御部である。
図16は通信暗号化処理装置41で新たに通信暗号路を作成する際における、SSL/TLSの通信開始から通信終了までの制御プログラム401、鍵管理モジュール5、暗号化・復号処理モジュール46の間のデータ送受信を示したシーケンス図である。図16を用いてデータ送受信シーケンスについて説明する。
ステップS101〜ステップS114においては、実施例1の図8と同様の処理を行う。
ステップS315においてコマンド制御部24は図9(k)に示す鍵配送終了を示すコマンドとエントリ番号から構成されるデータグラムを生成し、信号線206、DMAコントローラ21、バス100を介して制御プログラム401に送信する。
制御プログラム301は暗号処理を行うタイミングを管理しており、図9(l)に示すデータグラムを生成し、所望のタイミングで暗号処理モジュール6へ送信する。
ステップS117〜ステップS121においては、実施例1の図8と同様の処理を行う。
図17は実施例2における暗号通信路が既に存在している際のSSL/TLSのレコード・プロトコルを行う制御プログラムのフローチャートである。図18は実施例2における、制御プログラム401が暗号化・復号処理モジュール46にレジスタ49に保持されている鍵の確認を行う際に送受信されるデータフォーマットを示した図である。図17及び図18を用いて実施例3における暗号通信路が既に存在している際のSSL/TLSのレコード・プロトコルを行う制御プログラム401の動作について説明する。
ステップS401において、制御プログラム401は、図18(p)に示すように保持鍵確認要求を示すコマンドと所望の鍵のエントリ番号を連結したデータグラムを生成し、暗号化・復号処理モジュール46に送信する。この処理は、レジスタ49に被処理データを暗号処理する際に用いる鍵が保持されているか否か検査するための処理である。
ステップS402において、制御プログラム401は暗号化・復号処理モジュール46から図18(q)に示す保持鍵確認終了を受信したか否か検査する。検査した結果、受信していない場合には受信するまで待機する。受信した場合には、後述するステップS403以降の処理を行う。
ステップS403において、S402の結果から、レジスタ49に所望の鍵が保持されている場合には後述するステップS406以降の処理を、保持されていない場合には後述するステップS404以降の処理を行う。
ステップS404において、制御プログラム401は所望のエントリ番号の鍵を暗号処理モジュール46に配送するように、鍵管理モジュール5に図8(h)で示される鍵配送要求を送信する。
ステップS405において、制御プログラム401は鍵管理モジュール5から図9(k)に示される鍵配送終了を受信したか否か検査する。検査した結果、受信していない場合には受信するまで待機する。受信した場合には、後述するステップS406以降の処理を行う。
ステップS406において、制御プログラム401は暗号化・復号処理モジュール46に図9(l)に示される暗号処理要求を送信する。
ステップS407において、制御プログラム401は暗号化・復号処理モジュール46から図9(m)に示される暗号処理終了を受信したか否か検査する。検査した結果、受信していない場合には受信するまで待機する。受信した場合には動作を終了する。
図19は本発明の実施例2において通信暗号処理装置41が複数の相手と暗号通信する時の鍵管理モジュール5と暗号化・復号処理モジュール46の動作、及びレジスタ49に保持される鍵を表したタイミングの例を示した図である。この図19を用いて通信暗号処理装置41が複数の相手と暗号通信する時の鍵管理モジュール5と暗号化・復号処理モジュール46の動作、及びレジスタ49に保持される鍵を表したタイミングを説明する。ただし、図19では複数の通信相手をA、B、Cとし、またそれぞれの通信相手に対応した鍵を鍵(A)、鍵(B)、鍵(C)としている。また、簡単のため図19では複数の通信相手の鍵は既に生成されて第2のメモリに保持されており、また、レジスタ49に鍵は保持されていないものとする。また、通信を行う順番はA→B→A→C→A→C→Bの順である。
T301において、レジスタ49には鍵(A)が保持されていないので、鍵管理モジュール5は第2のメモリから鍵(A)を読出し、バス100を介して暗号化・復号処理モジュール46に送信する。鍵(A)を受信した暗号化・復号処理モジュール46はレジスタ49に鍵(A)を保持する。また鍵(A)の状態フラグを非使用中ステータスにする。
T302において、暗号化・復号処理モジュール46は通信相手Aに送信するデータの暗号化を行う。また鍵(A)の状態フラグを使用中ステータスにする。
T303において、レジスタ49には鍵(B)が保持されていないので、鍵管理モジュール5は第2のメモリから鍵(B)を読出し、バス100を介して暗号化・復号処理モジュール46に送信する。鍵(B)を受信した暗号化・復号処理モジュール46はレジスタ49に鍵(B)を保持する。また、鍵(B)の状態フラグを非使用中ステータスにする。
T304において、暗号化・復号処理モジュール46は通信相手Bに送信するデータの暗号化を行う。また、鍵(A)の状態フラグを非使用中ステータスに、鍵(B)の状態フラグを使用中ステータスする。
T305において、第3のメモリ49には鍵(A)が保持されているので改めて鍵の配送を行う必要がない。そこで鍵の配送を行うことなく、暗号化・復号処理モジュール46は通信相手Aに送信するデータの暗号化を行う。また、鍵(A)の状態フラグを使用中ステータスに鍵(B)の状態フラグを非使用中ステータスにする。
T306において、第3のメモリ49には鍵(C)が保持されていないので、鍵管理モジュール5は第2のメモリ8から鍵(C)を読出し、バス100を介して暗号化・復号処理モジュール46に送信する。鍵(C)を受信した暗号化・復号処理モジュール46は鍵の状態フラグを検査し、状態フラグが非使用中ステータスの鍵(B)を鍵(C)に書き換える。また、鍵(C)の状態フラグを非使用中ステータスにする。
T307において、暗号化・復号処理モジュール46は通信相手Cに送信するデータの暗号化を行う。また鍵(A)の状態フラグを非使用中ステータスに、鍵(C)の状態フラグを使用中ステータスする。
T308では、T305と同様に鍵の配送を行うことなく、暗号化・復号処理モジュール46は通信相手Aに送信するデータの暗号化を行う。また、鍵(A)の状態フラグを使用中ステータスに鍵(C)の状態フラグを非使用中ステータスにする。
T309において、レジスタ49には鍵(C)が保持されているので改めて鍵の配送を行う必要がない。そこで、鍵の配送を行うことなく、暗号化・復号処理モジュール46は通信相手Cに送信するデータの暗号化を行う。また、鍵(A)の状態フラグを非使用中ステータスに鍵(C)の状態フラグを使用中ステータスにする。
T310において、レジスタ49には鍵(B)が保持されていないので、鍵管理モジュール5は第2のメモリ8から鍵(B)を読出し、バス100を介して暗号化・復号処理モジュール46に送信する。鍵(C)を受信した暗号化・復号処理モジュール46は鍵の状態フラグを検査し、状態フラグが非使用中ステータスの鍵(A)を鍵(B)に書き換える。また、鍵(B)の状態フラグを非使用中ステータスにする。
T311において、暗号化・復号処理モジュール46は通信相手Bに送信するデータの暗号化を行う。また、鍵(B)の状態フラグを使用中ステータスに、鍵(C)の状態フラグを非使用中ステータスにする。
図17及び図19のように、レジスタ49に所望の鍵が保持されている場合には、制御プログラム401は鍵管理モジュール5へ鍵の配送要求を送信することなく暗号化・復号処理モジュール46に暗号処理要求を送信することができる。このため、より高速に処理を行うことができる。
以上、通信暗号SSL/TLSを行う通信暗号化処理装置について説明したがこれに限定されることではなく、例えば他の通信暗号技術であるIPsecや単体の共通鍵暗号、公開鍵暗号、鍵付きハッシュ関数等にも本手法を適用することができる。
なお、本発明の実施形態は、例えばコンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したCD−ROM等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びプログラムプロダクトは、本発明の範疇に含まれる。
1:通信暗号化処理装置、2:CPU、3:ワークメモリ、4:外部I/F、5:鍵管理モジュール、6:暗号化・復号処理モジュール、7:第1のメモリ、8:第2のメモリ、9:第3のメモリ、10:メインCPU、11:通信I/F、12:外部装置A、13:外部装置B、14:外部装置C、21:DMAC、22:コマンド制御部、23:乱数・鍵生成部、24:鍵管理制御部、31:DMAC、32:コマンド制御部、33:ブロック暗号化部、34:鍵付きハッシュ演算部、35:鍵管理制御部、41:通信暗号化処理装置、45:鍵管理制御部、46:暗号化・復号処理モジュール、49:レジスタ、100:バス、101:バス、102:ネットワーク、201:メモリバス、202、メモリバス、203:メモリバス、206:信号線、207:信号線、208:信号線、209:信号線、210:信号線、211:信号線、301:制御プログラム、306:信号線、307:信号線、308:信号線、309:信号線、310:信号線、311:信号線、312:信号線、313:信号線、314:信号線、401:制御プログラム、403:メモリバス、409:信号線、412:信号線、413:信号線、414:信号線、900:セキュリティ・チップ、901:通信暗号化処理装置、905:鍵管理モジュール、906:暗号化・復号処理モジュール、908:メモリ、912:メモリバス、930:セキュリティ・チップ、960:セキュリティ・チップ